summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog331
-rw-r--r--INSTALL8
-rw-r--r--LICENCE1
-rw-r--r--Makefile.in5
-rw-r--r--PROTOCOL.mux3
-rw-r--r--README4
-rw-r--r--audit-bsm.c79
-rw-r--r--auth-options.c18
-rw-r--r--auth2-pubkey.c7
-rw-r--r--auth2.c4
-rw-r--r--authfile.c4
-rw-r--r--channels.c252
-rw-r--r--channels.h10
-rw-r--r--clientloop.c54
-rw-r--r--clientloop.h3
-rw-r--r--compat.c3
-rw-r--r--compat.h3
-rw-r--r--config.h.in32
-rwxr-xr-xconfigure525
-rw-r--r--configure.ac124
-rw-r--r--contrib/caldera/openssh.spec4
-rw-r--r--contrib/cygwin/Makefile29
-rw-r--r--contrib/redhat/openssh.spec4
-rw-r--r--[-rwxr-xr-x]contrib/solaris/README0
-rw-r--r--contrib/suse/openssh.spec2
-rw-r--r--debian/changelog8
-rw-r--r--debian/patches/auth-log-verbosity.patch6
-rw-r--r--debian/patches/authorized-keys-man-symlink.patch2
-rw-r--r--debian/patches/cross-pkg-config.patch8
-rw-r--r--debian/patches/debian-banner.patch2
-rw-r--r--debian/patches/debian-config.patch2
-rw-r--r--debian/patches/gssapi.patch40
-rw-r--r--debian/patches/keepalive-extensions.patch4
-rw-r--r--debian/patches/lintian-symlink-pickiness.patch2
-rw-r--r--debian/patches/no-openssl-version-check.patch27
-rw-r--r--debian/patches/openbsd-docs.patch14
-rw-r--r--debian/patches/package-versioning.patch4
-rw-r--r--debian/patches/quieter-signals.patch2
-rw-r--r--debian/patches/selinux-role.patch23
-rw-r--r--debian/patches/series1
-rw-r--r--debian/patches/ssh-argv0.patch2
-rw-r--r--debian/patches/ssh-vulnkey.patch48
-rw-r--r--debian/patches/ssh1-keepalive.patch4
-rw-r--r--debian/patches/syslog-level-silent.patch2
-rw-r--r--debian/patches/user-group-modes.patch4
-rw-r--r--defines.h20
-rw-r--r--dh.c4
-rw-r--r--entropy.c12
-rw-r--r--entropy.h3
-rw-r--r--key.c7
-rw-r--r--mac.c5
-rw-r--r--misc.c4
-rw-r--r--moduli367
-rw-r--r--moduli.c71
-rw-r--r--monitor.c3
-rw-r--r--mux.c121
-rw-r--r--openbsd-compat/Makefile.in6
-rw-r--r--openbsd-compat/bsd-cygwin_util.c1
-rw-r--r--openbsd-compat/bsd-cygwin_util.h8
-rw-r--r--openbsd-compat/bsd-misc.h4
-rw-r--r--openbsd-compat/getcwd.c2
-rw-r--r--openbsd-compat/getgrouplist.c2
-rw-r--r--openbsd-compat/getrrsetbyname-ldns.c284
-rw-r--r--openbsd-compat/getrrsetbyname.c4
-rw-r--r--openbsd-compat/glob.c69
-rw-r--r--openbsd-compat/inet_ntop.c8
-rw-r--r--openbsd-compat/mktemp.c239
-rw-r--r--openbsd-compat/openbsd-compat.h4
-rw-r--r--openbsd-compat/openssl-compat.h7
-rw-r--r--openbsd-compat/port-linux.c5
-rw-r--r--openbsd-compat/setenv.c123
-rw-r--r--[-rwxr-xr-x]openbsd-compat/sha2.c2
-rw-r--r--[-rwxr-xr-x]openbsd-compat/sha2.h2
-rw-r--r--openbsd-compat/strlcpy.c10
-rw-r--r--openbsd-compat/strnlen.c37
-rw-r--r--packet.c18
-rw-r--r--packet.h3
-rw-r--r--readconf.c3
-rw-r--r--readconf.h3
-rw-r--r--regress/keytype.sh2
-rw-r--r--roaming.h7
-rw-r--r--roaming_client.c4
-rw-r--r--roaming_common.c4
-rw-r--r--sandbox-seccomp-filter.c222
-rw-r--r--scp.04
-rw-r--r--scp.18
-rw-r--r--scp.c14
-rw-r--r--servconf.c4
-rw-r--r--session.c4
-rw-r--r--sftp-client.c18
-rw-r--r--sftp-glob.c6
-rw-r--r--sftp.04
-rw-r--r--sftp.16
-rw-r--r--sftp.c9
-rw-r--r--ssh-add.07
-rw-r--r--ssh-add.19
-rw-r--r--ssh-add.c32
-rw-r--r--ssh-ecdsa.c3
-rw-r--r--ssh-keygen.024
-rw-r--r--ssh-keygen.115
-rw-r--r--ssh-keygen.c18
-rw-r--r--ssh-pkcs11-client.c4
-rw-r--r--[-rwxr-xr-x]ssh-sandbox.h0
-rw-r--r--ssh.022
-rw-r--r--ssh.124
-rw-r--r--ssh.c98
-rw-r--r--ssh_config.04
-rw-r--r--ssh_config.56
-rw-r--r--sshd.05
-rw-r--r--sshd.87
-rw-r--r--sshd.c24
-rw-r--r--sshd_config.04
-rw-r--r--sshd_config.56
-rw-r--r--umac.c4
-rw-r--r--version.h4
115 files changed, 2912 insertions, 899 deletions
diff --git a/ChangeLog b/ChangeLog
index ee6460d4d..5df76186d 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,334 @@
120120420
2 - (djm) [contrib/caldera/openssh.spec contrib/redhat/openssh.spec]
3 [contrib/suse/openssh.spec] Update for release 6.0
4 - (djm) [README] Update URL to release notes.
5 - (djm) Release openssh-6.0
6
720120419
8 - (djm) [configure.ac] Fix compilation error on FreeBSD, whose libutil
9 contains openpty() but not login()
10
1120120404
12 - (djm) [Makefile.in configure.ac sandbox-seccomp-filter.c] Add sandbox
13 mode for Linux's new seccomp filter; patch from Will Drewry; feedback
14 and ok dtucker@
15
1620120330
17 - (dtucker) [contrib/redhat/openssh.spec] Bug #1992: remove now-gone WARNING
18 file from spec file. From crighter at nuclioss com.
19 - (djm) [entropy.c] bz#1991: relax OpenSSL version test to allow running
20 openssh binaries on a newer fix release than they were compiled on.
21 with and ok dtucker@
22 - (djm) [openbsd-compat/bsd-cygwin_util.h] #undef _WIN32 to avoid incorrect
23 assumptions when building on Cygwin; patch from Corinna Vinschen
24
2520120309
26 - (djm) [openbsd-compat/port-linux.c] bz#1960: fix crash on SELinux
27 systems where sshd is run in te wrong context. Patch from Sven
28 Vermeulen; ok dtucker@
29 - (djm) [packet.c] bz#1963: Fix IPQoS not being set on non-mapped v4-in-v6
30 addressed connections. ok dtucker@
31
3220120224
33 - (dtucker) [audit-bsm.c configure.ac] bug #1968: enable workarounds for BSM
34 audit breakage in Solaris 11. Patch from Magnus Johansson.
35
3620120215
37 - (tim) [openbsd-compat/bsd-misc.h sshd.c] Fix conflicting return type for
38 unsetenv due to rev 1.14 change to setenv.c. Cast unsetenv to void in sshd.c
39 ok dtucker@
40 - (tim) [defines.h] move chunk introduced in 1.125 before MAXPATHLEN so
41 it actually works.
42 - (tim) [regress/keytype.sh] stderr redirection needs to be inside back quote
43 to work. Spotted by Angel Gonzalez
44
4520120214
46 - (djm) [openbsd-compat/bsd-cygwin_util.c] Add PROGRAMFILES to list of
47 preserved Cygwin environment variables; from Corinna Vinschen
48
4920120211
50 - (djm) OpenBSD CVS Sync
51 - djm@cvs.openbsd.org 2012/01/05 00:16:56
52 [monitor.c]
53 memleak on error path
54 - djm@cvs.openbsd.org 2012/01/07 21:11:36
55 [mux.c]
56 fix double-free in new session handler
57 - miod@cvs.openbsd.org 2012/01/08 13:17:11
58 [ssh-ecdsa.c]
59 Fix memory leak in ssh_ecdsa_verify(); from Loganaden Velvindron,
60 ok markus@
61 - miod@cvs.openbsd.org 2012/01/16 20:34:09
62 [ssh-pkcs11-client.c]
63 Fix a memory leak in pkcs11_rsa_private_encrypt(), reported by Jan Klemkow.
64 While there, be sure to buffer_clear() between send_msg() and recv_msg().
65 ok markus@
66 - dtucker@cvs.openbsd.org 2012/01/18 21:46:43
67 [clientloop.c]
68 Ensure that $DISPLAY contains only valid characters before using it to
69 extract xauth data so that it can't be used to play local shell
70 metacharacter games. Report from r00t_ati at ihteam.net, ok markus.
71 - markus@cvs.openbsd.org 2012/01/25 19:26:43
72 [packet.c]
73 do not permit SSH2_MSG_SERVICE_REQUEST/ACCEPT during rekeying;
74 ok dtucker@, djm@
75 - markus@cvs.openbsd.org 2012/01/25 19:36:31
76 [authfile.c]
77 memleak in key_load_file(); from Jan Klemkow
78 - markus@cvs.openbsd.org 2012/01/25 19:40:09
79 [packet.c packet.h]
80 packet_read_poll() is not used anymore.
81 - markus@cvs.openbsd.org 2012/02/09 20:00:18
82 [version.h]
83 move from 6.0-beta to 6.0
84
8520120206
86 - (djm) [ssh-keygen.c] Don't fail in do_gen_all_hostkeys on platforms
87 that don't support ECC. Patch from Phil Oleson
88
8920111219
90 - OpenBSD CVS Sync
91 - djm@cvs.openbsd.org 2011/12/02 00:41:56
92 [mux.c]
93 fix bz#1948: ssh -f doesn't fork for multiplexed connection.
94 ok dtucker@
95 - djm@cvs.openbsd.org 2011/12/02 00:43:57
96 [mac.c]
97 fix bz#1934: newer OpenSSL versions will require HMAC_CTX_Init before
98 HMAC_init (this change in policy seems insane to me)
99 ok dtucker@
100 - djm@cvs.openbsd.org 2011/12/04 23:16:12
101 [mux.c]
102 revert:
103 > revision 1.32
104 > date: 2011/12/02 00:41:56; author: djm; state: Exp; lines: +4 -1
105 > fix bz#1948: ssh -f doesn't fork for multiplexed connection.
106 > ok dtucker@
107 it interacts badly with ControlPersist
108 - djm@cvs.openbsd.org 2011/12/07 05:44:38
109 [auth2.c dh.c packet.c roaming.h roaming_client.c roaming_common.c]
110 fix some harmless and/or unreachable int overflows;
111 reported Xi Wang, ok markus@
112
11320111125
114 - OpenBSD CVS Sync
115 - oga@cvs.openbsd.org 2011/11/16 12:24:28
116 [sftp.c]
117 Don't leak list in complete_cmd_parse if there are no commands found.
118 Discovered when I was ``borrowing'' this code for something else.
119 ok djm@
120
12120111121
122 - (dtucker) [configure.ac] Set _FORTIFY_SOURCE. ok djm@
123
12420111104
125 - (dtucker) OpenBSD CVS Sync
126 - djm@cvs.openbsd.org 2011/10/18 05:15:28
127 [ssh.c]
128 ssh(1): skip attempting to create ~/.ssh when -F is passed; ok markus@
129 - djm@cvs.openbsd.org 2011/10/18 23:37:42
130 [ssh-add.c]
131 add -k to usage(); reminded by jmc@
132 - djm@cvs.openbsd.org 2011/10/19 00:06:10
133 [moduli.c]
134 s/tmpfile/tmp/ to make this -Wshadow clean
135 - djm@cvs.openbsd.org 2011/10/19 10:39:48
136 [umac.c]
137 typo in comment; patch from Michael W. Bombardieri
138 - djm@cvs.openbsd.org 2011/10/24 02:10:46
139 [ssh.c]
140 bz#1943: unbreak stdio forwarding when ControlPersist is in user - ssh
141 was incorrectly requesting the forward in both the control master and
142 slave. skip requesting it in the master to fix. ok markus@
143 - djm@cvs.openbsd.org 2011/10/24 02:13:13
144 [session.c]
145 bz#1859: send tty break to pty master instead of (probably already
146 closed) slave side; "looks good" markus@
147 - dtucker@cvs.openbsd.org 011/11/04 00:09:39
148 [moduli]
149 regenerated moduli file; ok deraadt
150 - (dtucker) [INSTALL LICENCE configure.ac openbsd-compat/Makefile.in
151 openbsd-compat/getrrsetbyname-ldns.c openbsd-compat/getrrsetbyname.c]
152 bz 1320: Add optional support for LDNS, a BSD licensed DNS resolver library
153 which supports DNSSEC. Patch from Simon Vallet (svallet at genoscope cns fr)
154 with some rework from myself and djm. ok djm.
155
15620111025
157 - (dtucker) [contrib/cygwin/Makefile] Continue if installing a doc file
158 fails. Patch from Corinna Vinschen.
159
16020111018
161 - (djm) OpenBSD CVS Sync
162 - djm@cvs.openbsd.org 2011/10/04 14:17:32
163 [sftp-glob.c]
164 silence error spam for "ls */foo" in directory with files; bz#1683
165 - dtucker@cvs.openbsd.org 2011/10/16 11:02:46
166 [moduli.c ssh-keygen.1 ssh-keygen.c]
167 Add optional checkpoints for moduli screening. feedback & ok deraadt
168 - jmc@cvs.openbsd.org 2011/10/16 15:02:41
169 [ssh-keygen.c]
170 put -K in the right place (usage());
171 - stsp@cvs.openbsd.org 2011/10/16 15:51:39
172 [moduli.c]
173 add missing includes to unbreak tree; fix from rpointel
174 - djm@cvs.openbsd.org 2011/10/18 04:58:26
175 [auth-options.c key.c]
176 remove explict search for \0 in packet strings, this job is now done
177 implicitly by buffer_get_cstring; ok markus
178 - djm@cvs.openbsd.org 2011/10/18 05:00:48
179 [ssh-add.1 ssh-add.c]
180 new "ssh-add -k" option to load plain keys (skipping certificates);
181 "looks ok" markus@
182
18320111001
184 - (dtucker) [openbsd-compat/mktemp.c] Fix compiler warning. ok djm
185 - (dtucker) OpenBSD CVS Sync
186 - dtucker@cvs.openbsd.org 2011/09/23 00:22:04
187 [channels.c auth-options.c servconf.c channels.h sshd.8]
188 Add wildcard support to PermitOpen, allowing things like "PermitOpen
189 localhost:*". bz #1857, ok djm markus.
190 - markus@cvs.openbsd.org 2011/09/23 07:45:05
191 [mux.c readconf.h channels.h compat.h compat.c ssh.c readconf.c channels.c
192 version.h]
193 unbreak remote portforwarding with dynamic allocated listen ports:
194 1) send the actual listen port in the open message (instead of 0).
195 this allows multiple forwardings with a dynamic listen port
196 2) update the matching permit-open entry, so we can identify where
197 to connect to
198 report: den at skbkontur.ru and P. Szczygielski
199 feedback and ok djm@
200 - djm@cvs.openbsd.org 2011/09/25 05:44:47
201 [auth2-pubkey.c]
202 improve the AuthorizedPrincipalsFile debug log message to include
203 file and line number
204 - dtucker@cvs.openbsd.org 2011/09/30 00:47:37
205 [sshd.c]
206 don't attempt privsep cleanup when not using privsep; ok markus@
207 - djm@cvs.openbsd.org 2011/09/30 21:22:49
208 [sshd.c]
209 fix inverted test that caused logspam; spotted by henning@
210
21120110929
212 - (djm) [configure.ac defines.h] No need to detect sizeof(char); patch
213 from des AT des.no
214 - (dtucker) [configure.ac openbsd-compat/Makefile.in
215 openbsd-compat/strnlen.c] Add strnlen to the compat library.
216
21720110923
218 - (djm) [openbsd-compat/getcwd.c] Remove OpenBSD rcsid marker since we no
219 longer want to sync this file (OpenBSD uses a __getcwd syscall now, we
220 want this longhand version)
221 - (djm) [openbsd-compat/getgrouplist.c] Remove OpenBSD rcsid marker: the
222 upstream version is YPified and we don't want this
223 - (djm) [openbsd-compat/mktemp.c] forklift upgrade to -current version.
224 The file was totally rewritten between what we had in tree and -current.
225 - (djm) [openbsd-compat/sha2.c openbsd-compat/sha2.h] Remove OpenBSD rcsid
226 marker. The upstream API has changed (function and structure names)
227 enough to put it out of sync with other providers of this interface.
228 - (djm) [openbsd-compat/setenv.c] Forklift upgrade, including inclusion
229 of static __findenv() function from upstream setenv.c
230 - OpenBSD CVS Sync
231 - millert@cvs.openbsd.org 2006/05/05 15:27:38
232 [openbsd-compat/strlcpy.c]
233 Convert do {} while loop -> while {} for clarity. No binary change
234 on most architectures. From Oliver Smith. OK deraadt@ and henning@
235 - tobias@cvs.openbsd.org 2007/10/21 11:09:30
236 [openbsd-compat/mktemp.c]
237 Comment fix about time consumption of _gettemp.
238 FreeBSD did this in revision 1.20.
239 OK deraadt@, krw@
240 - deraadt@cvs.openbsd.org 2008/07/22 21:47:45
241 [openbsd-compat/mktemp.c]
242 use arc4random_uniform(); ok djm millert
243 - millert@cvs.openbsd.org 2008/08/21 16:54:44
244 [openbsd-compat/mktemp.c]
245 Remove useless code, the kernel will set errno appropriately if an
246 element in the path does not exist. OK deraadt@ pvalchev@
247 - otto@cvs.openbsd.org 2008/12/09 19:38:38
248 [openbsd-compat/inet_ntop.c]
249 fix inet_ntop(3) prototype; ok millert@ libc to be bumbed very soon
250
25120110922
252 - OpenBSD CVS Sync
253 - pyr@cvs.openbsd.org 2011/05/12 07:15:10
254 [openbsd-compat/glob.c]
255 When the max number of items for a directory has reached GLOB_LIMIT_READDIR
256 an error is returned but closedir() is not called.
257 spotted and fix provided by Frank Denis obsd-tech@pureftpd.org
258 ok otto@, millert@
259 - stsp@cvs.openbsd.org 2011/09/20 10:18:46
260 [glob.c]
261 In glob(3), limit recursion during matching attempts. Similar to
262 fnmatch fix. Also collapse consecutive '*' (from NetBSD).
263 ok miod deraadt
264 - djm@cvs.openbsd.org 2011/09/22 06:27:29
265 [glob.c]
266 fix GLOB_KEEPSTAT without GLOB_NOSORT; the implicit sort was being
267 applied only to the gl_pathv vector and not the corresponding gl_statv
268 array. reported in OpenSSH bz#1935; feedback and okay matthew@
269 - djm@cvs.openbsd.org 2011/08/26 01:45:15
270 [ssh.1]
271 Add some missing ssh_config(5) options that can be used in ssh(1)'s
272 -o argument. Patch from duclare AT guu.fi
273 - djm@cvs.openbsd.org 2011/09/05 05:56:13
274 [scp.1 sftp.1]
275 mention ControlPersist and KbdInteractiveAuthentication in the -o
276 verbiage in these pages too (prompted by jmc@)
277 - djm@cvs.openbsd.org 2011/09/05 05:59:08
278 [misc.c]
279 fix typo in IPQoS parsing: there is no "AF14" class, but there is
280 an "AF21" class. Spotted by giesen AT snickers.org; ok markus stevesk
281 - jmc@cvs.openbsd.org 2011/09/05 07:01:44
282 [scp.1]
283 knock out a useless Ns;
284 - deraadt@cvs.openbsd.org 2011/09/07 02:18:31
285 [ssh-keygen.1]
286 typo (they vs the) found by Lawrence Teo
287 - djm@cvs.openbsd.org 2011/09/09 00:43:00
288 [ssh_config.5 sshd_config.5]
289 fix typo in IPQoS parsing: there is no "AF14" class, but there is
290 an "AF21" class. Spotted by giesen AT snickers.org; ok markus stevesk
291 - djm@cvs.openbsd.org 2011/09/09 00:44:07
292 [PROTOCOL.mux]
293 MUX_C_CLOSE_FWD includes forward type in message (though it isn't
294 implemented anyway)
295 - djm@cvs.openbsd.org 2011/09/09 22:37:01
296 [scp.c]
297 suppress adding '--' to remote commandlines when the first argument
298 does not start with '-'. saves breakage on some difficult-to-upgrade
299 embedded/router platforms; feedback & ok dtucker ok markus
300 - djm@cvs.openbsd.org 2011/09/09 22:38:21
301 [sshd.c]
302 kill the preauth privsep child on fatal errors in the monitor;
303 ok markus@
304 - djm@cvs.openbsd.org 2011/09/09 22:46:44
305 [channels.c channels.h clientloop.h mux.c ssh.c]
306 support for cancelling local and remote port forwards via the multiplex
307 socket. Use ssh -O cancel -L xx:xx:xx -R yy:yy:yy user@host" to request
308 the cancellation of the specified forwardings; ok markus@
309 - markus@cvs.openbsd.org 2011/09/10 22:26:34
310 [channels.c channels.h clientloop.c ssh.1]
311 support cancellation of local/dynamic forwardings from ~C commandline;
312 ok & feedback djm@
313 - okan@cvs.openbsd.org 2011/09/11 06:59:05
314 [ssh.1]
315 document new -O cancel command; ok djm@
316 - markus@cvs.openbsd.org 2011/09/11 16:07:26
317 [sftp-client.c]
318 fix leaks in do_hardlink() and do_readlink(); bz#1921
319 from Loganaden Velvindron
320 - markus@cvs.openbsd.org 2011/09/12 08:46:15
321 [sftp-client.c]
322 fix leak in do_lsreaddir(); ok djm
323 - djm@cvs.openbsd.org 2011/09/22 06:29:03
324 [sftp.c]
325 don't let remote_glob() implicitly sort its results in do_globbed_ls() -
326 in all likelihood, they will be resorted anyway
327
32820110909
329 - (dtucker) [entropy.h] Bug #1932: remove old definition of init_rng. From
330 Colin Watson.
331
120110906 33220110906
2 - (djm) [README version.h] Correct version 333 - (djm) [README version.h] Correct version
3 - (djm) [contrib/redhat/openssh.spec] Correct restorcon => restorecon 334 - (djm) [contrib/redhat/openssh.spec] Correct restorcon => restorecon
diff --git a/INSTALL b/INSTALL
index 0031dea85..7c6046932 100644
--- a/INSTALL
+++ b/INSTALL
@@ -80,6 +80,12 @@ these multi-platform ports:
80http://www.thrysoee.dk/editline/ 80http://www.thrysoee.dk/editline/
81http://sourceforge.net/projects/libedit/ 81http://sourceforge.net/projects/libedit/
82 82
83LDNS:
84
85LDNS is a DNS BSD-licensed resolver library which supports DNSSEC.
86
87http://nlnetlabs.nl/projects/ldns/
88
83Autoconf: 89Autoconf:
84 90
85If you modify configure.ac or configure doesn't exist (eg if you checked 91If you modify configure.ac or configure doesn't exist (eg if you checked
@@ -260,4 +266,4 @@ Please refer to the "reporting bugs" section of the webpage at
260http://www.openssh.com/ 266http://www.openssh.com/
261 267
262 268
263$Id: INSTALL,v 1.86 2011/05/05 03:48:37 djm Exp $ 269$Id: INSTALL,v 1.87 2011/11/04 00:25:25 dtucker Exp $
diff --git a/LICENCE b/LICENCE
index 120d6fd54..f52387139 100644
--- a/LICENCE
+++ b/LICENCE
@@ -207,6 +207,7 @@ OpenSSH contains no GPL code.
207 The SCO Group 207 The SCO Group
208 Daniel Walsh 208 Daniel Walsh
209 Red Hat, Inc 209 Red Hat, Inc
210 Simon Vallet / Genoscope
210 211
211 * Redistribution and use in source and binary forms, with or without 212 * Redistribution and use in source and binary forms, with or without
212 * modification, are permitted provided that the following conditions 213 * modification, are permitted provided that the following conditions
diff --git a/Makefile.in b/Makefile.in
index 7406aef6f..80155cc77 100644
--- a/Makefile.in
+++ b/Makefile.in
@@ -1,4 +1,4 @@
1# $Id: Makefile.in,v 1.325 2011/08/05 20:15:18 djm Exp $ 1# $Id: Makefile.in,v 1.326 2012/04/04 01:27:57 djm Exp $
2 2
3# uncomment if you run a non bourne compatable shell. Ie. csh 3# uncomment if you run a non bourne compatable shell. Ie. csh
4#SHELL = @SH@ 4#SHELL = @SH@
@@ -93,7 +93,8 @@ SSHDOBJS=sshd.o auth-rhosts.o auth-passwd.o auth-rsa.o auth-rh-rsa.o \
93 loginrec.o auth-pam.o auth-shadow.o auth-sia.o md5crypt.o \ 93 loginrec.o auth-pam.o auth-shadow.o auth-sia.o md5crypt.o \
94 sftp-server.o sftp-common.o \ 94 sftp-server.o sftp-common.o \
95 roaming_common.o roaming_serv.o \ 95 roaming_common.o roaming_serv.o \
96 sandbox-null.o sandbox-rlimit.o sandbox-systrace.o sandbox-darwin.o 96 sandbox-null.o sandbox-rlimit.o sandbox-systrace.o sandbox-darwin.o \
97 sandbox-seccomp-filter.o
97 98
98MANPAGES = moduli.5.out scp.1.out ssh-add.1.out ssh-agent.1.out ssh-keygen.1.out ssh-keyscan.1.out ssh.1.out sshd.8.out sftp-server.8.out sftp.1.out ssh-keysign.8.out ssh-pkcs11-helper.8.out ssh-vulnkey.1.out sshd_config.5.out ssh_config.5.out 99MANPAGES = moduli.5.out scp.1.out ssh-add.1.out ssh-agent.1.out ssh-keygen.1.out ssh-keyscan.1.out ssh.1.out sshd.8.out sftp-server.8.out sftp.1.out ssh-keysign.8.out ssh-pkcs11-helper.8.out ssh-vulnkey.1.out sshd_config.5.out ssh_config.5.out
99MANPAGES_IN = moduli.5 scp.1 ssh-add.1 ssh-agent.1 ssh-keygen.1 ssh-keyscan.1 ssh.1 sshd.8 sftp-server.8 sftp.1 ssh-keysign.8 ssh-pkcs11-helper.8 ssh-vulnkey.1 sshd_config.5 ssh_config.5 100MANPAGES_IN = moduli.5 scp.1 ssh-add.1 ssh-agent.1 ssh-keygen.1 ssh-keyscan.1 ssh.1 sshd.8 sftp-server.8 sftp.1 ssh-keysign.8 ssh-pkcs11-helper.8 ssh-vulnkey.1 sshd_config.5 ssh_config.5
diff --git a/PROTOCOL.mux b/PROTOCOL.mux
index 9ad256602..49cbe5b45 100644
--- a/PROTOCOL.mux
+++ b/PROTOCOL.mux
@@ -133,6 +133,7 @@ A client may request the master to close a port forward:
133 133
134 uint32 MUX_C_CLOSE_FWD 134 uint32 MUX_C_CLOSE_FWD
135 uint32 request id 135 uint32 request id
136 uint32 forwarding type
136 string listen host 137 string listen host
137 string listen port 138 string listen port
138 string connect host 139 string connect host
@@ -218,4 +219,4 @@ XXX inject packet (what about replies)
218XXX server->client error/warning notifications 219XXX server->client error/warning notifications
219XXX send signals via mux 220XXX send signals via mux
220 221
221$OpenBSD: PROTOCOL.mux,v 1.7 2011/05/08 12:52:01 djm Exp $ 222$OpenBSD: PROTOCOL.mux,v 1.8 2011/09/09 00:44:07 djm Exp $
diff --git a/README b/README
index e26654b2f..ad2adc494 100644
--- a/README
+++ b/README
@@ -1,4 +1,4 @@
1See http://www.openssh.com/txt/release-5.9 for the release notes. 1See http://www.openssh.com/txt/release-6.0 for the release notes.
2 2
3- A Japanese translation of this document and of the OpenSSH FAQ is 3- A Japanese translation of this document and of the OpenSSH FAQ is
4- available at http://www.unixuser.org/~haruyama/security/openssh/index.html 4- available at http://www.unixuser.org/~haruyama/security/openssh/index.html
@@ -62,4 +62,4 @@ References -
62[6] http://www.openbsd.org/cgi-bin/man.cgi?query=style&sektion=9 62[6] http://www.openbsd.org/cgi-bin/man.cgi?query=style&sektion=9
63[7] http://www.openssh.com/faq.html 63[7] http://www.openssh.com/faq.html
64 64
65$Id: README,v 1.77.2.2 2011/09/06 23:11:20 djm Exp $ 65$Id: README,v 1.80 2012/04/20 04:11:04 djm Exp $
diff --git a/audit-bsm.c b/audit-bsm.c
index f196d4f1e..613559140 100644
--- a/audit-bsm.c
+++ b/audit-bsm.c
@@ -1,4 +1,4 @@
1/* $Id: audit-bsm.c,v 1.7 2011/01/17 10:15:29 dtucker Exp $ */ 1/* $Id: audit-bsm.c,v 1.8 2012/02/23 23:40:43 dtucker Exp $ */
2 2
3/* 3/*
4 * TODO 4 * TODO
@@ -45,6 +45,10 @@
45#include <string.h> 45#include <string.h>
46#include <unistd.h> 46#include <unistd.h>
47 47
48#ifdef BROKEN_BSM_API
49#include <libscf.h>
50#endif
51
48#include "ssh.h" 52#include "ssh.h"
49#include "log.h" 53#include "log.h"
50#include "key.h" 54#include "key.h"
@@ -114,6 +118,12 @@ extern int aug_daemon_session(void);
114extern Authctxt *the_authctxt; 118extern Authctxt *the_authctxt;
115static AuditInfoTermID ssh_bsm_tid; 119static AuditInfoTermID ssh_bsm_tid;
116 120
121#ifdef BROKEN_BSM_API
122/* For some reason this constant is no longer defined
123 in Solaris 11. */
124#define BSM_TEXTBUFSZ 256
125#endif
126
117/* Below is the low-level BSM interface code */ 127/* Below is the low-level BSM interface code */
118 128
119/* 129/*
@@ -161,6 +171,65 @@ aug_get_machine(char *host, u_int32_t *addr, u_int32_t *type)
161} 171}
162#endif 172#endif
163 173
174#ifdef BROKEN_BSM_API
175/*
176 In Solaris 11 the audit daemon has been moved to SMF. In the process
177 they simply dropped getacna() from the API, since it read from a now
178 non-existent config file. This function re-implements getacna() to
179 read from the SMF repository instead.
180 */
181int
182getacna(char *auditstring, int len)
183{
184 scf_handle_t *handle = NULL;
185 scf_property_t *property = NULL;
186 scf_value_t *value = NULL;
187 int ret = 0;
188
189 handle = scf_handle_create(SCF_VERSION);
190 if (handle == NULL)
191 return -2; /* The man page for getacna on Solaris 10 states
192 we should return -2 in case of error and set
193 errno to indicate the error. We don't bother
194 with errno here, though, since the only use
195 of this function below doesn't check for errors
196 anyway.
197 */
198
199 ret = scf_handle_bind(handle);
200 if (ret == -1)
201 return -2;
202
203 property = scf_property_create(handle);
204 if (property == NULL)
205 return -2;
206
207 ret = scf_handle_decode_fmri(handle,
208 "svc:/system/auditd:default/:properties/preselection/naflags",
209 NULL, NULL, NULL, NULL, property, 0);
210 if (ret == -1)
211 return -2;
212
213 value = scf_value_create(handle);
214 if (value == NULL)
215 return -2;
216
217 ret = scf_property_get_value(property, value);
218 if (ret == -1)
219 return -2;
220
221 ret = scf_value_get_astring(value, auditstring, len);
222 if (ret == -1)
223 return -2;
224
225 scf_value_destroy(value);
226 scf_property_destroy(property);
227 scf_handle_destroy(handle);
228
229 return 0;
230}
231#endif
232
164/* 233/*
165 * Check if the specified event is selected (enabled) for auditing. 234 * Check if the specified event is selected (enabled) for auditing.
166 * Returns 1 if the event is selected, 0 if not and -1 on failure. 235 * Returns 1 if the event is selected, 0 if not and -1 on failure.
@@ -213,7 +282,15 @@ bsm_audit_record(int typ, char *string, au_event_t event_no)
213 (void) au_write(ad, au_to_text(string)); 282 (void) au_write(ad, au_to_text(string));
214 (void) au_write(ad, AUToReturnFunc(typ, rc)); 283 (void) au_write(ad, AUToReturnFunc(typ, rc));
215 284
285#ifdef BROKEN_BSM_API
286 /* The last argument is the event modifier flags. For
287 some seemingly undocumented reason it was added in
288 Solaris 11. */
289 rc = au_close(ad, AU_TO_WRITE, event_no, 0);
290#else
216 rc = au_close(ad, AU_TO_WRITE, event_no); 291 rc = au_close(ad, AU_TO_WRITE, event_no);
292#endif
293
217 if (rc < 0) 294 if (rc < 0)
218 error("BSM audit: %s failed to write \"%s\" record: %s", 295 error("BSM audit: %s failed to write \"%s\" record: %s",
219 __func__, string, strerror(errno)); 296 __func__, string, strerror(errno));
diff --git a/auth-options.c b/auth-options.c
index 8d1ef0a18..146b3d174 100644
--- a/auth-options.c
+++ b/auth-options.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: auth-options.c,v 1.54 2010/12/24 21:41:48 djm Exp $ */ 1/* $OpenBSD: auth-options.c,v 1.56 2011/10/18 04:58:26 djm Exp $ */
2/* 2/*
3 * Author: Tatu Ylonen <ylo@cs.hut.fi> 3 * Author: Tatu Ylonen <ylo@cs.hut.fi>
4 * Copyright (c) 1995 Tatu Ylonen <ylo@cs.hut.fi>, Espoo, Finland 4 * Copyright (c) 1995 Tatu Ylonen <ylo@cs.hut.fi>, Espoo, Finland
@@ -355,7 +355,7 @@ auth_parse_options(struct passwd *pw, char *opts, char *file, u_long linenum)
355 goto bad_option; 355 goto bad_option;
356 } 356 }
357 host = cleanhostname(host); 357 host = cleanhostname(host);
358 if (p == NULL || (port = a2port(p)) <= 0) { 358 if (p == NULL || (port = permitopen_port(p)) < 0) {
359 debug("%.100s, line %lu: Bad permitopen port " 359 debug("%.100s, line %lu: Bad permitopen port "
360 "<%.100s>", file, linenum, p ? p : ""); 360 "<%.100s>", file, linenum, p ? p : "");
361 auth_debug_add("%.100s, line %lu: " 361 auth_debug_add("%.100s, line %lu: "
@@ -466,10 +466,6 @@ parse_option_list(u_char *optblob, size_t optblob_len, struct passwd *pw,
466 buffer_append(&data, data_blob, dlen); 466 buffer_append(&data, data_blob, dlen);
467 debug3("found certificate option \"%.100s\" len %u", 467 debug3("found certificate option \"%.100s\" len %u",
468 name, dlen); 468 name, dlen);
469 if (strlen(name) != nlen) {
470 error("Certificate constraint name contains \\0");
471 goto out;
472 }
473 found = 0; 469 found = 0;
474 if ((which & OPTIONS_EXTENSIONS) != 0) { 470 if ((which & OPTIONS_EXTENSIONS) != 0) {
475 if (strcmp(name, "permit-X11-forwarding") == 0) { 471 if (strcmp(name, "permit-X11-forwarding") == 0) {
@@ -499,11 +495,6 @@ parse_option_list(u_char *optblob, size_t optblob_len, struct passwd *pw,
499 "corrupt", name); 495 "corrupt", name);
500 goto out; 496 goto out;
501 } 497 }
502 if (strlen(command) != clen) {
503 error("force-command constraint "
504 "contains \\0");
505 goto out;
506 }
507 if (*cert_forced_command != NULL) { 498 if (*cert_forced_command != NULL) {
508 error("Certificate has multiple " 499 error("Certificate has multiple "
509 "force-command options"); 500 "force-command options");
@@ -520,11 +511,6 @@ parse_option_list(u_char *optblob, size_t optblob_len, struct passwd *pw,
520 "\"%s\" corrupt", name); 511 "\"%s\" corrupt", name);
521 goto out; 512 goto out;
522 } 513 }
523 if (strlen(allowed) != clen) {
524 error("source-address constraint "
525 "contains \\0");
526 goto out;
527 }
528 if ((*cert_source_address_done)++) { 514 if ((*cert_source_address_done)++) {
529 error("Certificate has multiple " 515 error("Certificate has multiple "
530 "source-address options"); 516 "source-address options");
diff --git a/auth2-pubkey.c b/auth2-pubkey.c
index a1d31e930..d42ba14b8 100644
--- a/auth2-pubkey.c
+++ b/auth2-pubkey.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: auth2-pubkey.c,v 1.29 2011/05/23 03:30:07 djm Exp $ */ 1/* $OpenBSD: auth2-pubkey.c,v 1.30 2011/09/25 05:44:47 djm Exp $ */
2/* 2/*
3 * Copyright (c) 2000 Markus Friedl. All rights reserved. 3 * Copyright (c) 2000 Markus Friedl. All rights reserved.
4 * 4 *
@@ -239,8 +239,9 @@ match_principals_file(char *file, struct passwd *pw, struct KeyCert *cert)
239 } 239 }
240 for (i = 0; i < cert->nprincipals; i++) { 240 for (i = 0; i < cert->nprincipals; i++) {
241 if (strcmp(cp, cert->principals[i]) == 0) { 241 if (strcmp(cp, cert->principals[i]) == 0) {
242 debug3("matched principal from file \"%.100s\"", 242 debug3("matched principal \"%.100s\" "
243 cert->principals[i]); 243 "from file \"%s\" on line %lu",
244 cert->principals[i], file, linenum);
244 if (auth_parse_options(pw, line_opts, 245 if (auth_parse_options(pw, line_opts,
245 file, linenum) != 1) 246 file, linenum) != 1)
246 continue; 247 continue;
diff --git a/auth2.c b/auth2.c
index 52acf4606..1b7403904 100644
--- a/auth2.c
+++ b/auth2.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: auth2.c,v 1.123 2011/03/10 02:52:57 djm Exp $ */ 1/* $OpenBSD: auth2.c,v 1.124 2011/12/07 05:44:38 djm Exp $ */
2/* 2/*
3 * Copyright (c) 2000 Markus Friedl. All rights reserved. 3 * Copyright (c) 2000 Markus Friedl. All rights reserved.
4 * 4 *
@@ -115,7 +115,7 @@ auth2_read_banner(void)
115 close(fd); 115 close(fd);
116 return (NULL); 116 return (NULL);
117 } 117 }
118 if (st.st_size > 1*1024*1024) { 118 if (st.st_size <= 0 || st.st_size > 1*1024*1024) {
119 close(fd); 119 close(fd);
120 return (NULL); 120 return (NULL);
121 } 121 }
diff --git a/authfile.c b/authfile.c
index e5fe0b801..b0b4e1272 100644
--- a/authfile.c
+++ b/authfile.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: authfile.c,v 1.92 2011/06/14 22:49:18 markus Exp $ */ 1/* $OpenBSD: authfile.c,v 1.93 2012/01/25 19:36:31 markus Exp $ */
2/* 2/*
3 * Author: Tatu Ylonen <ylo@cs.hut.fi> 3 * Author: Tatu Ylonen <ylo@cs.hut.fi>
4 * Copyright (c) 1995 Tatu Ylonen <ylo@cs.hut.fi>, Espoo, Finland 4 * Copyright (c) 1995 Tatu Ylonen <ylo@cs.hut.fi>, Espoo, Finland
@@ -341,7 +341,7 @@ key_load_file(int fd, const char *filename, Buffer *blob)
341 filename == NULL ? "" : " "); 341 filename == NULL ? "" : " ");
342 return 0; 342 return 0;
343 } 343 }
344 buffer_init(blob); 344 buffer_clear(blob);
345 for (;;) { 345 for (;;) {
346 if ((len = atomicio(read, fd, buf, sizeof(buf))) == 0) { 346 if ((len = atomicio(read, fd, buf, sizeof(buf))) == 0) {
347 if (errno == EPIPE) 347 if (errno == EPIPE)
diff --git a/channels.c b/channels.c
index 24d4a9f42..f6e9b4d8c 100644
--- a/channels.c
+++ b/channels.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: channels.c,v 1.311 2011/06/22 22:08:42 djm Exp $ */ 1/* $OpenBSD: channels.c,v 1.315 2011/09/23 07:45:05 markus Exp $ */
2/* 2/*
3 * Author: Tatu Ylonen <ylo@cs.hut.fi> 3 * Author: Tatu Ylonen <ylo@cs.hut.fi>
4 * Copyright (c) 1995 Tatu Ylonen <ylo@cs.hut.fi>, Espoo, Finland 4 * Copyright (c) 1995 Tatu Ylonen <ylo@cs.hut.fi>, Espoo, Finland
@@ -125,6 +125,9 @@ static int num_permitted_opens = 0;
125/* Number of permitted host/port pair in the array permitted by the admin. */ 125/* Number of permitted host/port pair in the array permitted by the admin. */
126static int num_adm_permitted_opens = 0; 126static int num_adm_permitted_opens = 0;
127 127
128/* special-case port number meaning allow any port */
129#define FWD_PERMIT_ANY_PORT 0
130
128/* 131/*
129 * If this is true, all opens are permitted. This is the case on the server 132 * If this is true, all opens are permitted. This is the case on the server
130 * on which we have to trust the client anyway, and the user could do 133 * on which we have to trust the client anyway, and the user could do
@@ -302,6 +305,8 @@ channel_new(char *ctype, int type, int rfd, int wfd, int efd,
302 buffer_init(&c->output); 305 buffer_init(&c->output);
303 buffer_init(&c->extended); 306 buffer_init(&c->extended);
304 c->path = NULL; 307 c->path = NULL;
308 c->listening_addr = NULL;
309 c->listening_port = 0;
305 c->ostate = CHAN_OUTPUT_OPEN; 310 c->ostate = CHAN_OUTPUT_OPEN;
306 c->istate = CHAN_INPUT_OPEN; 311 c->istate = CHAN_INPUT_OPEN;
307 c->flags = 0; 312 c->flags = 0;
@@ -411,6 +416,10 @@ channel_free(Channel *c)
411 xfree(c->path); 416 xfree(c->path);
412 c->path = NULL; 417 c->path = NULL;
413 } 418 }
419 if (c->listening_addr) {
420 xfree(c->listening_addr);
421 c->listening_addr = NULL;
422 }
414 while ((cc = TAILQ_FIRST(&c->status_confirms)) != NULL) { 423 while ((cc = TAILQ_FIRST(&c->status_confirms)) != NULL) {
415 if (cc->abandon_cb != NULL) 424 if (cc->abandon_cb != NULL)
416 cc->abandon_cb(c, cc->ctx); 425 cc->abandon_cb(c, cc->ctx);
@@ -2634,6 +2643,46 @@ channel_set_af(int af)
2634 IPv4or6 = af; 2643 IPv4or6 = af;
2635} 2644}
2636 2645
2646
2647/*
2648 * Determine whether or not a port forward listens to loopback, the
2649 * specified address or wildcard. On the client, a specified bind
2650 * address will always override gateway_ports. On the server, a
2651 * gateway_ports of 1 (``yes'') will override the client's specification
2652 * and force a wildcard bind, whereas a value of 2 (``clientspecified'')
2653 * will bind to whatever address the client asked for.
2654 *
2655 * Special-case listen_addrs are:
2656 *
2657 * "0.0.0.0" -> wildcard v4/v6 if SSH_OLD_FORWARD_ADDR
2658 * "" (empty string), "*" -> wildcard v4/v6
2659 * "localhost" -> loopback v4/v6
2660 */
2661static const char *
2662channel_fwd_bind_addr(const char *listen_addr, int *wildcardp,
2663 int is_client, int gateway_ports)
2664{
2665 const char *addr = NULL;
2666 int wildcard = 0;
2667
2668 if (listen_addr == NULL) {
2669 /* No address specified: default to gateway_ports setting */
2670 if (gateway_ports)
2671 wildcard = 1;
2672 } else if (gateway_ports || is_client) {
2673 if (((datafellows & SSH_OLD_FORWARD_ADDR) &&
2674 strcmp(listen_addr, "0.0.0.0") == 0 && is_client == 0) ||
2675 *listen_addr == '\0' || strcmp(listen_addr, "*") == 0 ||
2676 (!is_client && gateway_ports == 1))
2677 wildcard = 1;
2678 else if (strcmp(listen_addr, "localhost") != 0)
2679 addr = listen_addr;
2680 }
2681 if (wildcardp != NULL)
2682 *wildcardp = wildcard;
2683 return addr;
2684}
2685
2637static int 2686static int
2638channel_setup_fwd_listener(int type, const char *listen_addr, 2687channel_setup_fwd_listener(int type, const char *listen_addr,
2639 u_short listen_port, int *allocated_listen_port, 2688 u_short listen_port, int *allocated_listen_port,
@@ -2659,36 +2708,9 @@ channel_setup_fwd_listener(int type, const char *listen_addr,
2659 return 0; 2708 return 0;
2660 } 2709 }
2661 2710
2662 /* 2711 /* Determine the bind address, cf. channel_fwd_bind_addr() comment */
2663 * Determine whether or not a port forward listens to loopback, 2712 addr = channel_fwd_bind_addr(listen_addr, &wildcard,
2664 * specified address or wildcard. On the client, a specified bind 2713 is_client, gateway_ports);
2665 * address will always override gateway_ports. On the server, a
2666 * gateway_ports of 1 (``yes'') will override the client's
2667 * specification and force a wildcard bind, whereas a value of 2
2668 * (``clientspecified'') will bind to whatever address the client
2669 * asked for.
2670 *
2671 * Special-case listen_addrs are:
2672 *
2673 * "0.0.0.0" -> wildcard v4/v6 if SSH_OLD_FORWARD_ADDR
2674 * "" (empty string), "*" -> wildcard v4/v6
2675 * "localhost" -> loopback v4/v6
2676 */
2677 addr = NULL;
2678 if (listen_addr == NULL) {
2679 /* No address specified: default to gateway_ports setting */
2680 if (gateway_ports)
2681 wildcard = 1;
2682 } else if (gateway_ports || is_client) {
2683 if (((datafellows & SSH_OLD_FORWARD_ADDR) &&
2684 strcmp(listen_addr, "0.0.0.0") == 0 && is_client == 0) ||
2685 *listen_addr == '\0' || strcmp(listen_addr, "*") == 0 ||
2686 (!is_client && gateway_ports == 1))
2687 wildcard = 1;
2688 else if (strcmp(listen_addr, "localhost") != 0)
2689 addr = listen_addr;
2690 }
2691
2692 debug3("channel_setup_fwd_listener: type %d wildcard %d addr %s", 2714 debug3("channel_setup_fwd_listener: type %d wildcard %d addr %s",
2693 type, wildcard, (addr == NULL) ? "NULL" : addr); 2715 type, wildcard, (addr == NULL) ? "NULL" : addr);
2694 2716
@@ -2792,7 +2814,12 @@ channel_setup_fwd_listener(int type, const char *listen_addr,
2792 0, "port listener", 1); 2814 0, "port listener", 1);
2793 c->path = xstrdup(host); 2815 c->path = xstrdup(host);
2794 c->host_port = port_to_connect; 2816 c->host_port = port_to_connect;
2795 c->listening_port = listen_port; 2817 c->listening_addr = addr == NULL ? NULL : xstrdup(addr);
2818 if (listen_port == 0 && allocated_listen_port != NULL &&
2819 !(datafellows & SSH_BUG_DYNAMIC_RPORT))
2820 c->listening_port = *allocated_listen_port;
2821 else
2822 c->listening_port = listen_port;
2796 success = 1; 2823 success = 1;
2797 } 2824 }
2798 if (success == 0) 2825 if (success == 0)
@@ -2810,9 +2837,44 @@ channel_cancel_rport_listener(const char *host, u_short port)
2810 2837
2811 for (i = 0; i < channels_alloc; i++) { 2838 for (i = 0; i < channels_alloc; i++) {
2812 Channel *c = channels[i]; 2839 Channel *c = channels[i];
2840 if (c == NULL || c->type != SSH_CHANNEL_RPORT_LISTENER)
2841 continue;
2842 if (strcmp(c->path, host) == 0 && c->listening_port == port) {
2843 debug2("%s: close channel %d", __func__, i);
2844 channel_free(c);
2845 found = 1;
2846 }
2847 }
2848
2849 return (found);
2850}
2851
2852int
2853channel_cancel_lport_listener(const char *lhost, u_short lport,
2854 int cport, int gateway_ports)
2855{
2856 u_int i;
2857 int found = 0;
2858 const char *addr = channel_fwd_bind_addr(lhost, NULL, 1, gateway_ports);
2813 2859
2814 if (c != NULL && c->type == SSH_CHANNEL_RPORT_LISTENER && 2860 for (i = 0; i < channels_alloc; i++) {
2815 strcmp(c->path, host) == 0 && c->listening_port == port) { 2861 Channel *c = channels[i];
2862 if (c == NULL || c->type != SSH_CHANNEL_PORT_LISTENER)
2863 continue;
2864 if (c->listening_port != lport)
2865 continue;
2866 if (cport == CHANNEL_CANCEL_PORT_STATIC) {
2867 /* skip dynamic forwardings */
2868 if (c->host_port == 0)
2869 continue;
2870 } else {
2871 if (c->host_port != cport)
2872 continue;
2873 }
2874 if ((c->listening_addr == NULL && addr != NULL) ||
2875 (c->listening_addr != NULL && addr == NULL))
2876 continue;
2877 if (addr == NULL || strcmp(c->listening_addr, addr) == 0) {
2816 debug2("%s: close channel %d", __func__, i); 2878 debug2("%s: close channel %d", __func__, i);
2817 channel_free(c); 2879 channel_free(c);
2818 found = 1; 2880 found = 1;
@@ -2843,37 +2905,44 @@ channel_setup_remote_fwd_listener(const char *listen_address,
2843} 2905}
2844 2906
2845/* 2907/*
2908 * Translate the requested rfwd listen host to something usable for
2909 * this server.
2910 */
2911static const char *
2912channel_rfwd_bind_host(const char *listen_host)
2913{
2914 if (listen_host == NULL) {
2915 if (datafellows & SSH_BUG_RFWD_ADDR)
2916 return "127.0.0.1";
2917 else
2918 return "localhost";
2919 } else if (*listen_host == '\0' || strcmp(listen_host, "*") == 0) {
2920 if (datafellows & SSH_BUG_RFWD_ADDR)
2921 return "0.0.0.0";
2922 else
2923 return "";
2924 } else
2925 return listen_host;
2926}
2927
2928/*
2846 * Initiate forwarding of connections to port "port" on remote host through 2929 * Initiate forwarding of connections to port "port" on remote host through
2847 * the secure channel to host:port from local side. 2930 * the secure channel to host:port from local side.
2931 * Returns handle (index) for updating the dynamic listen port with
2932 * channel_update_permitted_opens().
2848 */ 2933 */
2849
2850int 2934int
2851channel_request_remote_forwarding(const char *listen_host, u_short listen_port, 2935channel_request_remote_forwarding(const char *listen_host, u_short listen_port,
2852 const char *host_to_connect, u_short port_to_connect) 2936 const char *host_to_connect, u_short port_to_connect)
2853{ 2937{
2854 int type, success = 0; 2938 int type, success = 0, idx = -1;
2855 2939
2856 /* Send the forward request to the remote side. */ 2940 /* Send the forward request to the remote side. */
2857 if (compat20) { 2941 if (compat20) {
2858 const char *address_to_bind;
2859 if (listen_host == NULL) {
2860 if (datafellows & SSH_BUG_RFWD_ADDR)
2861 address_to_bind = "127.0.0.1";
2862 else
2863 address_to_bind = "localhost";
2864 } else if (*listen_host == '\0' ||
2865 strcmp(listen_host, "*") == 0) {
2866 if (datafellows & SSH_BUG_RFWD_ADDR)
2867 address_to_bind = "0.0.0.0";
2868 else
2869 address_to_bind = "";
2870 } else
2871 address_to_bind = listen_host;
2872
2873 packet_start(SSH2_MSG_GLOBAL_REQUEST); 2942 packet_start(SSH2_MSG_GLOBAL_REQUEST);
2874 packet_put_cstring("tcpip-forward"); 2943 packet_put_cstring("tcpip-forward");
2875 packet_put_char(1); /* boolean: want reply */ 2944 packet_put_char(1); /* boolean: want reply */
2876 packet_put_cstring(address_to_bind); 2945 packet_put_cstring(channel_rfwd_bind_host(listen_host));
2877 packet_put_int(listen_port); 2946 packet_put_int(listen_port);
2878 packet_send(); 2947 packet_send();
2879 packet_write_wait(); 2948 packet_write_wait();
@@ -2905,25 +2974,25 @@ channel_request_remote_forwarding(const char *listen_host, u_short listen_port,
2905 /* Record that connection to this host/port is permitted. */ 2974 /* Record that connection to this host/port is permitted. */
2906 permitted_opens = xrealloc(permitted_opens, 2975 permitted_opens = xrealloc(permitted_opens,
2907 num_permitted_opens + 1, sizeof(*permitted_opens)); 2976 num_permitted_opens + 1, sizeof(*permitted_opens));
2908 permitted_opens[num_permitted_opens].host_to_connect = xstrdup(host_to_connect); 2977 idx = num_permitted_opens++;
2909 permitted_opens[num_permitted_opens].port_to_connect = port_to_connect; 2978 permitted_opens[idx].host_to_connect = xstrdup(host_to_connect);
2910 permitted_opens[num_permitted_opens].listen_port = listen_port; 2979 permitted_opens[idx].port_to_connect = port_to_connect;
2911 num_permitted_opens++; 2980 permitted_opens[idx].listen_port = listen_port;
2912 } 2981 }
2913 return (success ? 0 : -1); 2982 return (idx);
2914} 2983}
2915 2984
2916/* 2985/*
2917 * Request cancellation of remote forwarding of connection host:port from 2986 * Request cancellation of remote forwarding of connection host:port from
2918 * local side. 2987 * local side.
2919 */ 2988 */
2920void 2989int
2921channel_request_rforward_cancel(const char *host, u_short port) 2990channel_request_rforward_cancel(const char *host, u_short port)
2922{ 2991{
2923 int i; 2992 int i;
2924 2993
2925 if (!compat20) 2994 if (!compat20)
2926 return; 2995 return -1;
2927 2996
2928 for (i = 0; i < num_permitted_opens; i++) { 2997 for (i = 0; i < num_permitted_opens; i++) {
2929 if (permitted_opens[i].host_to_connect != NULL && 2998 if (permitted_opens[i].host_to_connect != NULL &&
@@ -2932,12 +3001,12 @@ channel_request_rforward_cancel(const char *host, u_short port)
2932 } 3001 }
2933 if (i >= num_permitted_opens) { 3002 if (i >= num_permitted_opens) {
2934 debug("%s: requested forward not found", __func__); 3003 debug("%s: requested forward not found", __func__);
2935 return; 3004 return -1;
2936 } 3005 }
2937 packet_start(SSH2_MSG_GLOBAL_REQUEST); 3006 packet_start(SSH2_MSG_GLOBAL_REQUEST);
2938 packet_put_cstring("cancel-tcpip-forward"); 3007 packet_put_cstring("cancel-tcpip-forward");
2939 packet_put_char(0); 3008 packet_put_char(0);
2940 packet_put_cstring(host == NULL ? "" : host); 3009 packet_put_cstring(channel_rfwd_bind_host(host));
2941 packet_put_int(port); 3010 packet_put_int(port);
2942 packet_send(); 3011 packet_send();
2943 3012
@@ -2945,6 +3014,8 @@ channel_request_rforward_cancel(const char *host, u_short port)
2945 permitted_opens[i].port_to_connect = 0; 3014 permitted_opens[i].port_to_connect = 0;
2946 xfree(permitted_opens[i].host_to_connect); 3015 xfree(permitted_opens[i].host_to_connect);
2947 permitted_opens[i].host_to_connect = NULL; 3016 permitted_opens[i].host_to_connect = NULL;
3017
3018 return 0;
2948} 3019}
2949 3020
2950/* 3021/*
@@ -3013,6 +3084,35 @@ channel_add_permitted_opens(char *host, int port)
3013 all_opens_permitted = 0; 3084 all_opens_permitted = 0;
3014} 3085}
3015 3086
3087/*
3088 * Update the listen port for a dynamic remote forward, after
3089 * the actual 'newport' has been allocated. If 'newport' < 0 is
3090 * passed then they entry will be invalidated.
3091 */
3092void
3093channel_update_permitted_opens(int idx, int newport)
3094{
3095 if (idx < 0 || idx >= num_permitted_opens) {
3096 debug("channel_update_permitted_opens: index out of range:"
3097 " %d num_permitted_opens %d", idx, num_permitted_opens);
3098 return;
3099 }
3100 debug("%s allowed port %d for forwarding to host %s port %d",
3101 newport > 0 ? "Updating" : "Removing",
3102 newport,
3103 permitted_opens[idx].host_to_connect,
3104 permitted_opens[idx].port_to_connect);
3105 if (newport >= 0) {
3106 permitted_opens[idx].listen_port =
3107 (datafellows & SSH_BUG_DYNAMIC_RPORT) ? 0 : newport;
3108 } else {
3109 permitted_opens[idx].listen_port = 0;
3110 permitted_opens[idx].port_to_connect = 0;
3111 xfree(permitted_opens[idx].host_to_connect);
3112 permitted_opens[idx].host_to_connect = NULL;
3113 }
3114}
3115
3016int 3116int
3017channel_add_adm_permitted_opens(char *host, int port) 3117channel_add_adm_permitted_opens(char *host, int port)
3018{ 3118{
@@ -3073,6 +3173,28 @@ channel_print_adm_permitted_opens(void)
3073 printf("\n"); 3173 printf("\n");
3074} 3174}
3075 3175
3176/* returns port number, FWD_PERMIT_ANY_PORT or -1 on error */
3177int
3178permitopen_port(const char *p)
3179{
3180 int port;
3181
3182 if (strcmp(p, "*") == 0)
3183 return FWD_PERMIT_ANY_PORT;
3184 if ((port = a2port(p)) > 0)
3185 return port;
3186 return -1;
3187}
3188
3189static int
3190port_match(u_short allowedport, u_short requestedport)
3191{
3192 if (allowedport == FWD_PERMIT_ANY_PORT ||
3193 allowedport == requestedport)
3194 return 1;
3195 return 0;
3196}
3197
3076/* Try to start non-blocking connect to next host in cctx list */ 3198/* Try to start non-blocking connect to next host in cctx list */
3077static int 3199static int
3078connect_next(struct channel_connect *cctx) 3200connect_next(struct channel_connect *cctx)
@@ -3175,7 +3297,7 @@ channel_connect_by_listen_address(u_short listen_port, char *ctype, char *rname)
3175 3297
3176 for (i = 0; i < num_permitted_opens; i++) { 3298 for (i = 0; i < num_permitted_opens; i++) {
3177 if (permitted_opens[i].host_to_connect != NULL && 3299 if (permitted_opens[i].host_to_connect != NULL &&
3178 permitted_opens[i].listen_port == listen_port) { 3300 port_match(permitted_opens[i].listen_port, listen_port)) {
3179 return connect_to( 3301 return connect_to(
3180 permitted_opens[i].host_to_connect, 3302 permitted_opens[i].host_to_connect,
3181 permitted_opens[i].port_to_connect, ctype, rname); 3303 permitted_opens[i].port_to_connect, ctype, rname);
@@ -3196,7 +3318,7 @@ channel_connect_to(const char *host, u_short port, char *ctype, char *rname)
3196 if (!permit) { 3318 if (!permit) {
3197 for (i = 0; i < num_permitted_opens; i++) 3319 for (i = 0; i < num_permitted_opens; i++)
3198 if (permitted_opens[i].host_to_connect != NULL && 3320 if (permitted_opens[i].host_to_connect != NULL &&
3199 permitted_opens[i].port_to_connect == port && 3321 port_match(permitted_opens[i].port_to_connect, port) &&
3200 strcmp(permitted_opens[i].host_to_connect, host) == 0) 3322 strcmp(permitted_opens[i].host_to_connect, host) == 0)
3201 permit = 1; 3323 permit = 1;
3202 } 3324 }
@@ -3205,7 +3327,7 @@ channel_connect_to(const char *host, u_short port, char *ctype, char *rname)
3205 permit_adm = 0; 3327 permit_adm = 0;
3206 for (i = 0; i < num_adm_permitted_opens; i++) 3328 for (i = 0; i < num_adm_permitted_opens; i++)
3207 if (permitted_adm_opens[i].host_to_connect != NULL && 3329 if (permitted_adm_opens[i].host_to_connect != NULL &&
3208 permitted_adm_opens[i].port_to_connect == port && 3330 port_match(permitted_adm_opens[i].port_to_connect, port) &&
3209 strcmp(permitted_adm_opens[i].host_to_connect, host) 3331 strcmp(permitted_adm_opens[i].host_to_connect, host)
3210 == 0) 3332 == 0)
3211 permit_adm = 1; 3333 permit_adm = 1;
diff --git a/channels.h b/channels.h
index e2941c85a..c1f01c48b 100644
--- a/channels.h
+++ b/channels.h
@@ -1,4 +1,4 @@
1/* $OpenBSD: channels.h,v 1.105 2011/06/22 22:08:42 djm Exp $ */ 1/* $OpenBSD: channels.h,v 1.109 2011/09/23 07:45:05 markus Exp $ */
2 2
3/* 3/*
4 * Author: Tatu Ylonen <ylo@cs.hut.fi> 4 * Author: Tatu Ylonen <ylo@cs.hut.fi>
@@ -57,6 +57,8 @@
57#define SSH_CHANNEL_MUX_CLIENT 16 /* Conn. to mux slave */ 57#define SSH_CHANNEL_MUX_CLIENT 16 /* Conn. to mux slave */
58#define SSH_CHANNEL_MAX_TYPE 17 58#define SSH_CHANNEL_MAX_TYPE 17
59 59
60#define CHANNEL_CANCEL_PORT_STATIC -1
61
60struct Channel; 62struct Channel;
61typedef struct Channel Channel; 63typedef struct Channel Channel;
62 64
@@ -116,6 +118,7 @@ struct Channel {
116 char *path; 118 char *path;
117 /* path for unix domain sockets, or host name for forwards */ 119 /* path for unix domain sockets, or host name for forwards */
118 int listening_port; /* port being listened for forwards */ 120 int listening_port; /* port being listened for forwards */
121 char *listening_addr; /* addr being listened for forwards */
119 int host_port; /* remote port to connect for forwards */ 122 int host_port; /* remote port to connect for forwards */
120 char *remote_name; /* remote hostname */ 123 char *remote_name; /* remote hostname */
121 124
@@ -250,6 +253,7 @@ void channel_set_af(int af);
250void channel_permit_all_opens(void); 253void channel_permit_all_opens(void);
251void channel_add_permitted_opens(char *, int); 254void channel_add_permitted_opens(char *, int);
252int channel_add_adm_permitted_opens(char *, int); 255int channel_add_adm_permitted_opens(char *, int);
256void channel_update_permitted_opens(int, int);
253void channel_clear_permitted_opens(void); 257void channel_clear_permitted_opens(void);
254void channel_clear_adm_permitted_opens(void); 258void channel_clear_adm_permitted_opens(void);
255void channel_print_adm_permitted_opens(void); 259void channel_print_adm_permitted_opens(void);
@@ -261,9 +265,11 @@ int channel_request_remote_forwarding(const char *, u_short,
261 const char *, u_short); 265 const char *, u_short);
262int channel_setup_local_fwd_listener(const char *, u_short, 266int channel_setup_local_fwd_listener(const char *, u_short,
263 const char *, u_short, int); 267 const char *, u_short, int);
264void channel_request_rforward_cancel(const char *host, u_short port); 268int channel_request_rforward_cancel(const char *host, u_short port);
265int channel_setup_remote_fwd_listener(const char *, u_short, int *, int); 269int channel_setup_remote_fwd_listener(const char *, u_short, int *, int);
266int channel_cancel_rport_listener(const char *, u_short); 270int channel_cancel_rport_listener(const char *, u_short);
271int channel_cancel_lport_listener(const char *, u_short, int, int);
272int permitopen_port(const char *);
267 273
268/* x11 forwarding */ 274/* x11 forwarding */
269 275
diff --git a/clientloop.c b/clientloop.c
index 18a85c56c..8f4b6e1b0 100644
--- a/clientloop.c
+++ b/clientloop.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: clientloop.c,v 1.236 2011/06/22 22:08:42 djm Exp $ */ 1/* $OpenBSD: clientloop.c,v 1.238 2012/01/18 21:46:43 dtucker Exp $ */
2/* 2/*
3 * Author: Tatu Ylonen <ylo@cs.hut.fi> 3 * Author: Tatu Ylonen <ylo@cs.hut.fi>
4 * Copyright (c) 1995 Tatu Ylonen <ylo@cs.hut.fi>, Espoo, Finland 4 * Copyright (c) 1995 Tatu Ylonen <ylo@cs.hut.fi>, Espoo, Finland
@@ -285,6 +285,23 @@ set_control_persist_exit_time(void)
285 /* else we are already counting down to the timeout */ 285 /* else we are already counting down to the timeout */
286} 286}
287 287
288#define SSH_X11_VALID_DISPLAY_CHARS ":/.-_"
289static int
290client_x11_display_valid(const char *display)
291{
292 size_t i, dlen;
293
294 dlen = strlen(display);
295 for (i = 0; i < dlen; i++) {
296 if (!isalnum(display[i]) &&
297 strchr(SSH_X11_VALID_DISPLAY_CHARS, display[i]) == NULL) {
298 debug("Invalid character '%c' in DISPLAY", display[i]);
299 return 0;
300 }
301 }
302 return 1;
303}
304
288#define SSH_X11_PROTO "MIT-MAGIC-COOKIE-1" 305#define SSH_X11_PROTO "MIT-MAGIC-COOKIE-1"
289void 306void
290client_x11_get_proto(const char *display, const char *xauth_path, 307client_x11_get_proto(const char *display, const char *xauth_path,
@@ -307,6 +324,9 @@ client_x11_get_proto(const char *display, const char *xauth_path,
307 324
308 if (xauth_path == NULL ||(stat(xauth_path, &st) == -1)) { 325 if (xauth_path == NULL ||(stat(xauth_path, &st) == -1)) {
309 debug("No xauth program."); 326 debug("No xauth program.");
327 } else if (!client_x11_display_valid(display)) {
328 logit("DISPLAY '%s' invalid, falling back to fake xauth data",
329 display);
310 } else { 330 } else {
311 if (display == NULL) { 331 if (display == NULL) {
312 debug("x11_get_proto: DISPLAY not set"); 332 debug("x11_get_proto: DISPLAY not set");
@@ -848,9 +868,8 @@ process_cmdline(void)
848{ 868{
849 void (*handler)(int); 869 void (*handler)(int);
850 char *s, *cmd, *cancel_host; 870 char *s, *cmd, *cancel_host;
851 int delete = 0; 871 int delete = 0, local = 0, remote = 0, dynamic = 0;
852 int local = 0, remote = 0, dynamic = 0; 872 int cancel_port, ok;
853 int cancel_port;
854 Forward fwd; 873 Forward fwd;
855 874
856 bzero(&fwd, sizeof(fwd)); 875 bzero(&fwd, sizeof(fwd));
@@ -876,8 +895,12 @@ process_cmdline(void)
876 "Request remote forward"); 895 "Request remote forward");
877 logit(" -D[bind_address:]port " 896 logit(" -D[bind_address:]port "
878 "Request dynamic forward"); 897 "Request dynamic forward");
898 logit(" -KL[bind_address:]port "
899 "Cancel local forward");
879 logit(" -KR[bind_address:]port " 900 logit(" -KR[bind_address:]port "
880 "Cancel remote forward"); 901 "Cancel remote forward");
902 logit(" -KD[bind_address:]port "
903 "Cancel dynamic forward");
881 if (!options.permit_local_command) 904 if (!options.permit_local_command)
882 goto out; 905 goto out;
883 logit(" !args " 906 logit(" !args "
@@ -906,11 +929,7 @@ process_cmdline(void)
906 goto out; 929 goto out;
907 } 930 }
908 931
909 if ((local || dynamic) && delete) { 932 if (delete && !compat20) {
910 logit("Not supported.");
911 goto out;
912 }
913 if (remote && delete && !compat20) {
914 logit("Not supported for SSH protocol version 1."); 933 logit("Not supported for SSH protocol version 1.");
915 goto out; 934 goto out;
916 } 935 }
@@ -933,7 +952,21 @@ process_cmdline(void)
933 logit("Bad forwarding close port"); 952 logit("Bad forwarding close port");
934 goto out; 953 goto out;
935 } 954 }
936 channel_request_rforward_cancel(cancel_host, cancel_port); 955 if (remote)
956 ok = channel_request_rforward_cancel(cancel_host,
957 cancel_port) == 0;
958 else if (dynamic)
959 ok = channel_cancel_lport_listener(cancel_host,
960 cancel_port, 0, options.gateway_ports) > 0;
961 else
962 ok = channel_cancel_lport_listener(cancel_host,
963 cancel_port, CHANNEL_CANCEL_PORT_STATIC,
964 options.gateway_ports) > 0;
965 if (!ok) {
966 logit("Unkown port forwarding.");
967 goto out;
968 }
969 logit("Canceled forwarding.");
937 } else { 970 } else {
938 if (!parse_forward(&fwd, s, dynamic, remote)) { 971 if (!parse_forward(&fwd, s, dynamic, remote)) {
939 logit("Bad forwarding specification."); 972 logit("Bad forwarding specification.");
@@ -954,7 +987,6 @@ process_cmdline(void)
954 goto out; 987 goto out;
955 } 988 }
956 } 989 }
957
958 logit("Forwarding port."); 990 logit("Forwarding port.");
959 } 991 }
960 992
diff --git a/clientloop.h b/clientloop.h
index a259b5e14..3bb794879 100644
--- a/clientloop.h
+++ b/clientloop.h
@@ -1,4 +1,4 @@
1/* $OpenBSD: clientloop.h,v 1.28 2011/06/22 22:08:42 djm Exp $ */ 1/* $OpenBSD: clientloop.h,v 1.29 2011/09/09 22:46:44 djm Exp $ */
2 2
3/* 3/*
4 * Author: Tatu Ylonen <ylo@cs.hut.fi> 4 * Author: Tatu Ylonen <ylo@cs.hut.fi>
@@ -70,6 +70,7 @@ void client_expect_confirm(int, const char *, enum confirm_action);
70#define SSHMUX_COMMAND_STDIO_FWD 4 /* Open stdio fwd (ssh -W) */ 70#define SSHMUX_COMMAND_STDIO_FWD 4 /* Open stdio fwd (ssh -W) */
71#define SSHMUX_COMMAND_FORWARD 5 /* Forward only, no command */ 71#define SSHMUX_COMMAND_FORWARD 5 /* Forward only, no command */
72#define SSHMUX_COMMAND_STOP 6 /* Disable mux but not conn */ 72#define SSHMUX_COMMAND_STOP 6 /* Disable mux but not conn */
73#define SSHMUX_COMMAND_CANCEL_FWD 7 /* Cancel forwarding(s) */
73 74
74void muxserver_listen(void); 75void muxserver_listen(void);
75void muxclient(const char *); 76void muxclient(const char *);
diff --git a/compat.c b/compat.c
index df3541df7..0dc089fd6 100644
--- a/compat.c
+++ b/compat.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: compat.c,v 1.78 2008/09/11 14:22:37 markus Exp $ */ 1/* $OpenBSD: compat.c,v 1.79 2011/09/23 07:45:05 markus Exp $ */
2/* 2/*
3 * Copyright (c) 1999, 2000, 2001, 2002 Markus Friedl. All rights reserved. 3 * Copyright (c) 1999, 2000, 2001, 2002 Markus Friedl. All rights reserved.
4 * 4 *
@@ -92,6 +92,7 @@ compat_datafellows(const char *version)
92 { "OpenSSH_3.*", SSH_OLD_FORWARD_ADDR }, 92 { "OpenSSH_3.*", SSH_OLD_FORWARD_ADDR },
93 { "Sun_SSH_1.0*", SSH_BUG_NOREKEY|SSH_BUG_EXTEOF}, 93 { "Sun_SSH_1.0*", SSH_BUG_NOREKEY|SSH_BUG_EXTEOF},
94 { "OpenSSH_4*", 0 }, 94 { "OpenSSH_4*", 0 },
95 { "OpenSSH_5*", SSH_NEW_OPENSSH|SSH_BUG_DYNAMIC_RPORT},
95 { "OpenSSH*", SSH_NEW_OPENSSH }, 96 { "OpenSSH*", SSH_NEW_OPENSSH },
96 { "*MindTerm*", 0 }, 97 { "*MindTerm*", 0 },
97 { "2.1.0*", SSH_BUG_SIGBLOB|SSH_BUG_HMAC| 98 { "2.1.0*", SSH_BUG_SIGBLOB|SSH_BUG_HMAC|
diff --git a/compat.h b/compat.h
index 16cf282a7..3ae5d9c78 100644
--- a/compat.h
+++ b/compat.h
@@ -1,4 +1,4 @@
1/* $OpenBSD: compat.h,v 1.42 2008/09/11 14:22:37 markus Exp $ */ 1/* $OpenBSD: compat.h,v 1.43 2011/09/23 07:45:05 markus Exp $ */
2 2
3/* 3/*
4 * Copyright (c) 1999, 2000, 2001 Markus Friedl. All rights reserved. 4 * Copyright (c) 1999, 2000, 2001 Markus Friedl. All rights reserved.
@@ -58,6 +58,7 @@
58#define SSH_OLD_FORWARD_ADDR 0x01000000 58#define SSH_OLD_FORWARD_ADDR 0x01000000
59#define SSH_BUG_RFWD_ADDR 0x02000000 59#define SSH_BUG_RFWD_ADDR 0x02000000
60#define SSH_NEW_OPENSSH 0x04000000 60#define SSH_NEW_OPENSSH 0x04000000
61#define SSH_BUG_DYNAMIC_RPORT 0x08000000
61 62
62void enable_compat13(void); 63void enable_compat13(void);
63void enable_compat20(void); 64void enable_compat20(void);
diff --git a/config.h.in b/config.h.in
index ff651cc4a..e51117b81 100644
--- a/config.h.in
+++ b/config.h.in
@@ -16,6 +16,9 @@
16/* Define if your resolver libs need this for getrrsetbyname */ 16/* Define if your resolver libs need this for getrrsetbyname */
17#undef BIND_8_COMPAT 17#undef BIND_8_COMPAT
18 18
19/* The system has incomplete BSM API */
20#undef BROKEN_BSM_API
21
19/* Define if cmsg_type is not passed correctly */ 22/* Define if cmsg_type is not passed correctly */
20#undef BROKEN_CMSG_TYPE 23#undef BROKEN_CMSG_TYPE
21 24
@@ -500,6 +503,9 @@
500/* Define if HEADER.ad exists in arpa/nameser.h */ 503/* Define if HEADER.ad exists in arpa/nameser.h */
501#undef HAVE_HEADER_AD 504#undef HAVE_HEADER_AD
502 505
506/* Define to 1 if you have the `HMAC_CTX_init' function. */
507#undef HAVE_HMAC_CTX_INIT
508
503/* Define if you have ut_host in utmp.h */ 509/* Define if you have ut_host in utmp.h */
504#undef HAVE_HOST_IN_UTMP 510#undef HAVE_HOST_IN_UTMP
505 511
@@ -551,6 +557,9 @@
551/* Define to 1 if you have the <lastlog.h> header file. */ 557/* Define to 1 if you have the <lastlog.h> header file. */
552#undef HAVE_LASTLOG_H 558#undef HAVE_LASTLOG_H
553 559
560/* Define if you want ldns support */
561#undef HAVE_LDNS
562
554/* Define to 1 if you have the <libaudit.h> header file. */ 563/* Define to 1 if you have the <libaudit.h> header file. */
555#undef HAVE_LIBAUDIT_H 564#undef HAVE_LIBAUDIT_H
556 565
@@ -593,10 +602,19 @@
593/* Define to 1 if you have the <limits.h> header file. */ 602/* Define to 1 if you have the <limits.h> header file. */
594#undef HAVE_LIMITS_H 603#undef HAVE_LIMITS_H
595 604
605/* Define to 1 if you have the <linux/audit.h> header file. */
606#undef HAVE_LINUX_AUDIT_H
607
608/* Define to 1 if you have the <linux/filter.h> header file. */
609#undef HAVE_LINUX_FILTER_H
610
596/* Define to 1 if you have the <linux/if_tun.h> header file. */ 611/* Define to 1 if you have the <linux/if_tun.h> header file. */
597#undef HAVE_LINUX_IF_TUN_H 612#undef HAVE_LINUX_IF_TUN_H
598 613
599/* Define if your libraries define login() */ 614/* Define to 1 if you have the <linux/seccomp.h> header file. */
615#undef HAVE_LINUX_SECCOMP_H
616
617/* Define to 1 if you have the `login' function. */
600#undef HAVE_LOGIN 618#undef HAVE_LOGIN
601 619
602/* Define to 1 if you have the <login_cap.h> header file. */ 620/* Define to 1 if you have the <login_cap.h> header file. */
@@ -930,6 +948,9 @@
930/* Define to 1 if you have the `strmode' function. */ 948/* Define to 1 if you have the `strmode' function. */
931#undef HAVE_STRMODE 949#undef HAVE_STRMODE
932 950
951/* Define to 1 if you have the `strnlen' function. */
952#undef HAVE_STRNLEN
953
933/* Define to 1 if you have the `strnvis' function. */ 954/* Define to 1 if you have the `strnvis' function. */
934#undef HAVE_STRNVIS 955#undef HAVE_STRNVIS
935 956
@@ -1350,15 +1371,18 @@
1350/* Sandbox using setrlimit(2) */ 1371/* Sandbox using setrlimit(2) */
1351#undef SANDBOX_RLIMIT 1372#undef SANDBOX_RLIMIT
1352 1373
1374/* Sandbox using seccomp filter */
1375#undef SANDBOX_SECCOMP_FILTER
1376
1353/* Sandbox using systrace(4) */ 1377/* Sandbox using systrace(4) */
1354#undef SANDBOX_SYSTRACE 1378#undef SANDBOX_SYSTRACE
1355 1379
1380/* Specify the system call convention in use */
1381#undef SECCOMP_AUDIT_ARCH
1382
1356/* Define if your platform breaks doing a seteuid before a setuid */ 1383/* Define if your platform breaks doing a seteuid before a setuid */
1357#undef SETEUID_BREAKS_SETUID 1384#undef SETEUID_BREAKS_SETUID
1358 1385
1359/* The size of `char', as computed by sizeof. */
1360#undef SIZEOF_CHAR
1361
1362/* The size of `int', as computed by sizeof. */ 1386/* The size of `int', as computed by sizeof. */
1363#undef SIZEOF_INT 1387#undef SIZEOF_INT
1364 1388
diff --git a/configure b/configure
index 12babe9be..cb9739412 100755
--- a/configure
+++ b/configure
@@ -1,5 +1,5 @@
1#! /bin/sh 1#! /bin/sh
2# From configure.ac Revision: 1.480 . 2# From configure.ac Revision: 1.489 .
3# Guess values for system-dependent variables and create Makefiles. 3# Guess values for system-dependent variables and create Makefiles.
4# Generated by GNU Autoconf 2.68 for OpenSSH Portable. 4# Generated by GNU Autoconf 2.68 for OpenSSH Portable.
5# 5#
@@ -722,6 +722,7 @@ with_zlib
722with_zlib_version_check 722with_zlib_version_check
723with_skey 723with_skey
724with_tcp_wrappers 724with_tcp_wrappers
725with_ldns
725with_libedit 726with_libedit
726with_audit 727with_audit
727with_ssl_dir 728with_ssl_dir
@@ -1411,6 +1412,7 @@ Optional Packages:
1411 --without-zlib-version-check Disable zlib version check 1412 --without-zlib-version-check Disable zlib version check
1412 --with-skey[=PATH] Enable S/Key support (optionally in PATH) 1413 --with-skey[=PATH] Enable S/Key support (optionally in PATH)
1413 --with-tcp-wrappers[=PATH] Enable tcpwrappers support (optionally in PATH) 1414 --with-tcp-wrappers[=PATH] Enable tcpwrappers support (optionally in PATH)
1415 --with-ldns[=PATH] Use ldns for DNSSEC support (optionally in PATH)
1414 --with-libedit[=PATH] Enable libedit support for sftp 1416 --with-libedit[=PATH] Enable libedit support for sftp
1415 --with-audit=module Enable audit support (modules=debug,bsm,linux) 1417 --with-audit=module Enable audit support (modules=debug,bsm,linux)
1416 --with-ssl-dir=PATH Specify path to OpenSSL installation 1418 --with-ssl-dir=PATH Specify path to OpenSSL installation
@@ -1420,7 +1422,7 @@ Optional Packages:
1420 --with-prngd-socket=FILE read entropy from PRNGD/EGD socket FILE (default=/var/run/egd-pool) 1422 --with-prngd-socket=FILE read entropy from PRNGD/EGD socket FILE (default=/var/run/egd-pool)
1421 --with-pam Enable PAM support 1423 --with-pam Enable PAM support
1422 --with-privsep-user=user Specify non-privileged user for privilege separation 1424 --with-privsep-user=user Specify non-privileged user for privilege separation
1423 --with-sandbox=style Specify privilege separation sandbox (no, darwin, rlimit, systrace) 1425 --with-sandbox=style Specify privilege separation sandbox (no, darwin, rlimit, systrace, seccomp_filter)
1424 --with-selinux Enable SELinux support 1426 --with-selinux Enable SELinux support
1425 --with-kerberos5=PATH Enable Kerberos 5 support 1427 --with-kerberos5=PATH Enable Kerberos 5 support
1426 --with-privsep-path=xxx Path for privilege separation chroot (default=/var/empty) 1428 --with-privsep-path=xxx Path for privilege separation chroot (default=/var/empty)
@@ -5576,6 +5578,68 @@ $as_echo "#define HAVE_RLIMIT_NPROC /**/" >>confdefs.h
5576 5578
5577fi 5579fi
5578 5580
5581ac_fn_c_check_decl "$LINENO" "PR_SET_NO_NEW_PRIVS" "ac_cv_have_decl_PR_SET_NO_NEW_PRIVS" "
5582 #include <sys/types.h>
5583 #include <linux/prctl.h>
5584
5585"
5586if test "x$ac_cv_have_decl_PR_SET_NO_NEW_PRIVS" = xyes; then :
5587 have_linux_no_new_privs=1
5588fi
5589
5590if test "x$have_linux_no_new_privs" = "x1" ; then
5591ac_fn_c_check_decl "$LINENO" "SECCOMP_MODE_FILTER" "ac_cv_have_decl_SECCOMP_MODE_FILTER" "
5592 #include <sys/types.h>
5593 #include <linux/seccomp.h>
5594
5595"
5596if test "x$ac_cv_have_decl_SECCOMP_MODE_FILTER" = xyes; then :
5597 have_seccomp_filter=1
5598fi
5599
5600fi
5601if test "x$have_seccomp_filter" = "x1" ; then
5602{ $as_echo "$as_me:${as_lineno-$LINENO}: checking kernel for seccomp_filter support" >&5
5603$as_echo_n "checking kernel for seccomp_filter support... " >&6; }
5604if test "$cross_compiling" = yes; then :
5605 { $as_echo "$as_me:${as_lineno-$LINENO}: result: cross-compiling, assuming yes" >&5
5606$as_echo "cross-compiling, assuming yes" >&6; }
5607
5608else
5609 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
5610/* end confdefs.h. */
5611
5612 #include <errno.h>
5613 #include <linux/seccomp.h>
5614 #include <stdlib.h>
5615 #include <sys/prctl.h>
5616
5617int
5618main ()
5619{
5620 errno = 0;
5621 prctl(PR_SET_SECCOMP, SECCOMP_MODE_FILTER, NULL, 0, 0);
5622 exit(errno == EFAULT ? 0 : 1);
5623 ;
5624 return 0;
5625}
5626_ACEOF
5627if ac_fn_c_try_run "$LINENO"; then :
5628 { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
5629$as_echo "yes" >&6; }
5630else
5631
5632 { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
5633$as_echo "no" >&6; }
5634 # Disable seccomp filter as a target
5635 have_seccomp_filter=0
5636
5637fi
5638rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
5639 conftest.$ac_objext conftest.beam conftest.$ac_ext
5640fi
5641
5642fi
5579 5643
5580use_stack_protector=1 5644use_stack_protector=1
5581 5645
@@ -5774,6 +5838,29 @@ $as_echo "no" >&6; }
5774fi 5838fi
5775rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext 5839rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
5776} 5840}
5841 {
5842 { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports -D_FORTIFY_SOURCE=2" >&5
5843$as_echo_n "checking if $CC supports -D_FORTIFY_SOURCE=2... " >&6; }
5844 saved_CFLAGS="$CFLAGS"
5845 CFLAGS="$CFLAGS -D_FORTIFY_SOURCE=2"
5846 _define_flag=""
5847 test "x$_define_flag" = "x" && _define_flag="-D_FORTIFY_SOURCE=2"
5848 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
5849/* end confdefs.h. */
5850int main(void) { return 0; }
5851_ACEOF
5852if ac_fn_c_try_compile "$LINENO"; then :
5853 { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
5854$as_echo "yes" >&6; }
5855 CFLAGS="$saved_CFLAGS $_define_flag"
5856else
5857 { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
5858$as_echo "no" >&6; }
5859 CFLAGS="$saved_CFLAGS"
5860
5861fi
5862rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
5863}
5777 { $as_echo "$as_me:${as_lineno-$LINENO}: checking gcc version" >&5 5864 { $as_echo "$as_me:${as_lineno-$LINENO}: checking gcc version" >&5
5778$as_echo_n "checking gcc version... " >&6; } 5865$as_echo_n "checking gcc version... " >&6; }
5779 GCC_VER=`$CC -v 2>&1 | $AWK '/gcc version /{print $3}'` 5866 GCC_VER=`$CC -v 2>&1 | $AWK '/gcc version /{print $3}'`
@@ -6894,6 +6981,46 @@ $as_echo "#define SSH_TUN_COMPAT_AF 1" >>confdefs.h
6894$as_echo "#define SSH_TUN_PREPEND_AF 1" >>confdefs.h 6981$as_echo "#define SSH_TUN_PREPEND_AF 1" >>confdefs.h
6895 6982
6896 fi 6983 fi
6984 for ac_header in linux/seccomp.h linux/filter.h linux/audit.h
6985do :
6986 as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
6987ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default"
6988if eval test \"x\$"$as_ac_Header"\" = x"yes"; then :
6989 cat >>confdefs.h <<_ACEOF
6990#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
6991_ACEOF
6992
6993fi
6994
6995done
6996
6997 for ac_func in prctl
6998do :
6999 ac_fn_c_check_func "$LINENO" "prctl" "ac_cv_func_prctl"
7000if test "x$ac_cv_func_prctl" = xyes; then :
7001 cat >>confdefs.h <<_ACEOF
7002#define HAVE_PRCTL 1
7003_ACEOF
7004
7005fi
7006done
7007
7008 have_seccomp_audit_arch=1
7009 case "$host" in
7010 x86_64-*)
7011
7012$as_echo "#define SECCOMP_AUDIT_ARCH AUDIT_ARCH_X86_64" >>confdefs.h
7013
7014 ;;
7015 i*86-*)
7016
7017$as_echo "#define SECCOMP_AUDIT_ARCH AUDIT_ARCH_I386" >>confdefs.h
7018
7019 ;;
7020 *)
7021 have_seccomp_audit_arch=0
7022 ;;
7023 esac
6897 ;; 7024 ;;
6898mips-sony-bsd|mips-sony-newsos4) 7025mips-sony-bsd|mips-sony-newsos4)
6899 7026
@@ -8271,6 +8398,62 @@ fi
8271 8398
8272done 8399done
8273 8400
8401{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing fmt_scaled" >&5
8402$as_echo_n "checking for library containing fmt_scaled... " >&6; }
8403if ${ac_cv_search_fmt_scaled+:} false; then :
8404 $as_echo_n "(cached) " >&6
8405else
8406 ac_func_search_save_LIBS=$LIBS
8407cat confdefs.h - <<_ACEOF >conftest.$ac_ext
8408/* end confdefs.h. */
8409
8410/* Override any GCC internal prototype to avoid an error.
8411 Use char because int might match the return type of a GCC
8412 builtin and then its argument prototype would still apply. */
8413#ifdef __cplusplus
8414extern "C"
8415#endif
8416char fmt_scaled ();
8417int
8418main ()
8419{
8420return fmt_scaled ();
8421 ;
8422 return 0;
8423}
8424_ACEOF
8425for ac_lib in '' util bsd; do
8426 if test -z "$ac_lib"; then
8427 ac_res="none required"
8428 else
8429 ac_res=-l$ac_lib
8430 LIBS="-l$ac_lib $ac_func_search_save_LIBS"
8431 fi
8432 if ac_fn_c_try_link "$LINENO"; then :
8433 ac_cv_search_fmt_scaled=$ac_res
8434fi
8435rm -f core conftest.err conftest.$ac_objext \
8436 conftest$ac_exeext
8437 if ${ac_cv_search_fmt_scaled+:} false; then :
8438 break
8439fi
8440done
8441if ${ac_cv_search_fmt_scaled+:} false; then :
8442
8443else
8444 ac_cv_search_fmt_scaled=no
8445fi
8446rm conftest.$ac_ext
8447LIBS=$ac_func_search_save_LIBS
8448fi
8449{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_fmt_scaled" >&5
8450$as_echo "$ac_cv_search_fmt_scaled" >&6; }
8451ac_res=$ac_cv_search_fmt_scaled
8452if test "$ac_res" != no; then :
8453 test "$ac_res" = "none required" || LIBS="$ac_res $LIBS"
8454
8455fi
8456
8274{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing login" >&5 8457{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing login" >&5
8275$as_echo_n "checking for library containing login... " >&6; } 8458$as_echo_n "checking for library containing login... " >&6; }
8276if ${ac_cv_search_login+:} false; then : 8459if ${ac_cv_search_login+:} false; then :
@@ -8325,11 +8508,233 @@ ac_res=$ac_cv_search_login
8325if test "$ac_res" != no; then : 8508if test "$ac_res" != no; then :
8326 test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" 8509 test "$ac_res" = "none required" || LIBS="$ac_res $LIBS"
8327 8510
8328$as_echo "#define HAVE_LOGIN 1" >>confdefs.h 8511fi
8512
8513{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing logout" >&5
8514$as_echo_n "checking for library containing logout... " >&6; }
8515if ${ac_cv_search_logout+:} false; then :
8516 $as_echo_n "(cached) " >&6
8517else
8518 ac_func_search_save_LIBS=$LIBS
8519cat confdefs.h - <<_ACEOF >conftest.$ac_ext
8520/* end confdefs.h. */
8521
8522/* Override any GCC internal prototype to avoid an error.
8523 Use char because int might match the return type of a GCC
8524 builtin and then its argument prototype would still apply. */
8525#ifdef __cplusplus
8526extern "C"
8527#endif
8528char logout ();
8529int
8530main ()
8531{
8532return logout ();
8533 ;
8534 return 0;
8535}
8536_ACEOF
8537for ac_lib in '' util bsd; do
8538 if test -z "$ac_lib"; then
8539 ac_res="none required"
8540 else
8541 ac_res=-l$ac_lib
8542 LIBS="-l$ac_lib $ac_func_search_save_LIBS"
8543 fi
8544 if ac_fn_c_try_link "$LINENO"; then :
8545 ac_cv_search_logout=$ac_res
8546fi
8547rm -f core conftest.err conftest.$ac_objext \
8548 conftest$ac_exeext
8549 if ${ac_cv_search_logout+:} false; then :
8550 break
8551fi
8552done
8553if ${ac_cv_search_logout+:} false; then :
8554
8555else
8556 ac_cv_search_logout=no
8557fi
8558rm conftest.$ac_ext
8559LIBS=$ac_func_search_save_LIBS
8560fi
8561{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_logout" >&5
8562$as_echo "$ac_cv_search_logout" >&6; }
8563ac_res=$ac_cv_search_logout
8564if test "$ac_res" != no; then :
8565 test "$ac_res" = "none required" || LIBS="$ac_res $LIBS"
8566
8567fi
8568
8569{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing logwtmp" >&5
8570$as_echo_n "checking for library containing logwtmp... " >&6; }
8571if ${ac_cv_search_logwtmp+:} false; then :
8572 $as_echo_n "(cached) " >&6
8573else
8574 ac_func_search_save_LIBS=$LIBS
8575cat confdefs.h - <<_ACEOF >conftest.$ac_ext
8576/* end confdefs.h. */
8577
8578/* Override any GCC internal prototype to avoid an error.
8579 Use char because int might match the return type of a GCC
8580 builtin and then its argument prototype would still apply. */
8581#ifdef __cplusplus
8582extern "C"
8583#endif
8584char logwtmp ();
8585int
8586main ()
8587{
8588return logwtmp ();
8589 ;
8590 return 0;
8591}
8592_ACEOF
8593for ac_lib in '' util bsd; do
8594 if test -z "$ac_lib"; then
8595 ac_res="none required"
8596 else
8597 ac_res=-l$ac_lib
8598 LIBS="-l$ac_lib $ac_func_search_save_LIBS"
8599 fi
8600 if ac_fn_c_try_link "$LINENO"; then :
8601 ac_cv_search_logwtmp=$ac_res
8602fi
8603rm -f core conftest.err conftest.$ac_objext \
8604 conftest$ac_exeext
8605 if ${ac_cv_search_logwtmp+:} false; then :
8606 break
8607fi
8608done
8609if ${ac_cv_search_logwtmp+:} false; then :
8610
8611else
8612 ac_cv_search_logwtmp=no
8613fi
8614rm conftest.$ac_ext
8615LIBS=$ac_func_search_save_LIBS
8616fi
8617{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_logwtmp" >&5
8618$as_echo "$ac_cv_search_logwtmp" >&6; }
8619ac_res=$ac_cv_search_logwtmp
8620if test "$ac_res" != no; then :
8621 test "$ac_res" = "none required" || LIBS="$ac_res $LIBS"
8622
8623fi
8624
8625{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing openpty" >&5
8626$as_echo_n "checking for library containing openpty... " >&6; }
8627if ${ac_cv_search_openpty+:} false; then :
8628 $as_echo_n "(cached) " >&6
8629else
8630 ac_func_search_save_LIBS=$LIBS
8631cat confdefs.h - <<_ACEOF >conftest.$ac_ext
8632/* end confdefs.h. */
8633
8634/* Override any GCC internal prototype to avoid an error.
8635 Use char because int might match the return type of a GCC
8636 builtin and then its argument prototype would still apply. */
8637#ifdef __cplusplus
8638extern "C"
8639#endif
8640char openpty ();
8641int
8642main ()
8643{
8644return openpty ();
8645 ;
8646 return 0;
8647}
8648_ACEOF
8649for ac_lib in '' util bsd; do
8650 if test -z "$ac_lib"; then
8651 ac_res="none required"
8652 else
8653 ac_res=-l$ac_lib
8654 LIBS="-l$ac_lib $ac_func_search_save_LIBS"
8655 fi
8656 if ac_fn_c_try_link "$LINENO"; then :
8657 ac_cv_search_openpty=$ac_res
8658fi
8659rm -f core conftest.err conftest.$ac_objext \
8660 conftest$ac_exeext
8661 if ${ac_cv_search_openpty+:} false; then :
8662 break
8663fi
8664done
8665if ${ac_cv_search_openpty+:} false; then :
8666
8667else
8668 ac_cv_search_openpty=no
8669fi
8670rm conftest.$ac_ext
8671LIBS=$ac_func_search_save_LIBS
8672fi
8673{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_openpty" >&5
8674$as_echo "$ac_cv_search_openpty" >&6; }
8675ac_res=$ac_cv_search_openpty
8676if test "$ac_res" != no; then :
8677 test "$ac_res" = "none required" || LIBS="$ac_res $LIBS"
8329 8678
8330fi 8679fi
8331 8680
8332for ac_func in fmt_scaled logout updwtmp logwtmp 8681{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing updwtmp" >&5
8682$as_echo_n "checking for library containing updwtmp... " >&6; }
8683if ${ac_cv_search_updwtmp+:} false; then :
8684 $as_echo_n "(cached) " >&6
8685else
8686 ac_func_search_save_LIBS=$LIBS
8687cat confdefs.h - <<_ACEOF >conftest.$ac_ext
8688/* end confdefs.h. */
8689
8690/* Override any GCC internal prototype to avoid an error.
8691 Use char because int might match the return type of a GCC
8692 builtin and then its argument prototype would still apply. */
8693#ifdef __cplusplus
8694extern "C"
8695#endif
8696char updwtmp ();
8697int
8698main ()
8699{
8700return updwtmp ();
8701 ;
8702 return 0;
8703}
8704_ACEOF
8705for ac_lib in '' util bsd; do
8706 if test -z "$ac_lib"; then
8707 ac_res="none required"
8708 else
8709 ac_res=-l$ac_lib
8710 LIBS="-l$ac_lib $ac_func_search_save_LIBS"
8711 fi
8712 if ac_fn_c_try_link "$LINENO"; then :
8713 ac_cv_search_updwtmp=$ac_res
8714fi
8715rm -f core conftest.err conftest.$ac_objext \
8716 conftest$ac_exeext
8717 if ${ac_cv_search_updwtmp+:} false; then :
8718 break
8719fi
8720done
8721if ${ac_cv_search_updwtmp+:} false; then :
8722
8723else
8724 ac_cv_search_updwtmp=no
8725fi
8726rm conftest.$ac_ext
8727LIBS=$ac_func_search_save_LIBS
8728fi
8729{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_updwtmp" >&5
8730$as_echo "$ac_cv_search_updwtmp" >&6; }
8731ac_res=$ac_cv_search_updwtmp
8732if test "$ac_res" != no; then :
8733 test "$ac_res" = "none required" || LIBS="$ac_res $LIBS"
8734
8735fi
8736
8737for ac_func in fmt_scaled login logout openpty updwtmp logwtmp
8333do : 8738do :
8334 as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` 8739 as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
8335ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var" 8740ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var"
@@ -8732,6 +9137,56 @@ rm -f core conftest.err conftest.$ac_objext \
8732fi 9137fi
8733 9138
8734 9139
9140# Check whether user wants to use ldns
9141LDNS_MSG="no"
9142
9143# Check whether --with-ldns was given.
9144if test "${with_ldns+set}" = set; then :
9145 withval=$with_ldns;
9146 if test "x$withval" != "xno" ; then
9147
9148 if test "x$withval" != "xyes" ; then
9149 CPPFLAGS="$CPPFLAGS -I${withval}/include"
9150 LDFLAGS="$LDFLAGS -L${withval}/lib"
9151 fi
9152
9153
9154$as_echo "#define HAVE_LDNS 1" >>confdefs.h
9155
9156 LIBS="-lldns $LIBS"
9157 LDNS_MSG="yes"
9158
9159 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ldns support" >&5
9160$as_echo_n "checking for ldns support... " >&6; }
9161 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
9162/* end confdefs.h. */
9163
9164#include <stdio.h>
9165#include <stdlib.h>
9166#include <stdint.h>
9167#include <ldns/ldns.h>
9168int main() { ldns_status status = ldns_verify_trusted(NULL, NULL, NULL, NULL); status=LDNS_STATUS_OK; exit(0); }
9169
9170
9171_ACEOF
9172if ac_fn_c_try_link "$LINENO"; then :
9173 { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
9174$as_echo "yes" >&6; }
9175else
9176
9177 { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
9178$as_echo "no" >&6; }
9179 as_fn_error $? "** Incomplete or missing ldns libraries." "$LINENO" 5
9180
9181fi
9182rm -f core conftest.err conftest.$ac_objext \
9183 conftest$ac_exeext conftest.$ac_ext
9184 fi
9185
9186
9187fi
9188
9189
8735# Check whether user wants libedit support 9190# Check whether user wants libedit support
8736LIBEDIT_MSG="no" 9191LIBEDIT_MSG="no"
8737 9192
@@ -9052,6 +9507,12 @@ done
9052 9507
9053$as_echo "#define USE_BSM_AUDIT 1" >>confdefs.h 9508$as_echo "#define USE_BSM_AUDIT 1" >>confdefs.h
9054 9509
9510 if test "$sol2ver" -eq 11; then
9511 SSHDLIBS="$SSHDLIBS -lscf"
9512
9513$as_echo "#define BROKEN_BSM_API 1" >>confdefs.h
9514
9515 fi
9055 ;; 9516 ;;
9056 linux) 9517 linux)
9057 { $as_echo "$as_me:${as_lineno-$LINENO}: result: linux" >&5 9518 { $as_echo "$as_me:${as_lineno-$LINENO}: result: linux" >&5
@@ -9138,7 +9599,6 @@ for ac_func in \
9138 nsleep \ 9599 nsleep \
9139 ogetaddrinfo \ 9600 ogetaddrinfo \
9140 openlog_r \ 9601 openlog_r \
9141 openpty \
9142 poll \ 9602 poll \
9143 prctl \ 9603 prctl \
9144 pstat \ 9604 pstat \
@@ -9173,6 +9633,7 @@ for ac_func in \
9173 strlcat \ 9633 strlcat \
9174 strlcpy \ 9634 strlcpy \
9175 strmode \ 9635 strmode \
9636 strnlen \
9176 strnvis \ 9637 strnvis \
9177 strptime \ 9638 strptime \
9178 strtonum \ 9639 strtonum \
@@ -10704,7 +11165,7 @@ fi
10704rm -f core conftest.err conftest.$ac_objext \ 11165rm -f core conftest.err conftest.$ac_objext \
10705 conftest$ac_exeext conftest.$ac_ext 11166 conftest$ac_exeext conftest.$ac_ext
10706 11167
10707for ac_func in RSA_generate_key_ex DSA_generate_parameters_ex BN_is_prime_ex RSA_get_default_method 11168for ac_func in RSA_generate_key_ex DSA_generate_parameters_ex BN_is_prime_ex RSA_get_default_method HMAC_CTX_init
10708do : 11169do :
10709 as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` 11170 as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
10710ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var" 11171ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var"
@@ -11455,6 +11916,25 @@ elif test "x$sandbox_arg" = "xdarwin" || \
11455 11916
11456$as_echo "#define SANDBOX_DARWIN 1" >>confdefs.h 11917$as_echo "#define SANDBOX_DARWIN 1" >>confdefs.h
11457 11918
11919elif test "x$sandbox_arg" = "xseccomp_filter" || \
11920 ( test -z "$sandbox_arg" && \
11921 test "x$have_seccomp_filter" == "x1" && \
11922 test "x$ac_cv_header_linux_audit_h" = "xyes" && \
11923 test "x$have_seccomp_audit_arch" = "x1" && \
11924 test "x$have_linux_no_new_privs" = "x1" && \
11925 test "x$ac_cv_func_prctl" = "xyes" ) ; then
11926 test "x$have_seccomp_audit_arch" != "x1" && \
11927 as_fn_error $? "seccomp_filter sandbox not supported on $host" "$LINENO" 5
11928 test "x$have_linux_no_new_privs" != "x1" && \
11929 as_fn_error $? "seccomp_filter sandbox requires PR_SET_NO_NEW_PRIVS" "$LINENO" 5
11930 test "x$have_seccomp_filter" != "x1" && \
11931 as_fn_error $? "seccomp_filter sandbox requires seccomp headers" "$LINENO" 5
11932 test "x$ac_cv_func_prctl" != "xyes" && \
11933 as_fn_error $? "seccomp_filter sandbox requires prctl function" "$LINENO" 5
11934 SANDBOX_STYLE="seccomp_filter"
11935
11936$as_echo "#define SANDBOX_SECCOMP_FILTER 1" >>confdefs.h
11937
11458elif test "x$sandbox_arg" = "xrlimit" || \ 11938elif test "x$sandbox_arg" = "xrlimit" || \
11459 ( test -z "$sandbox_arg" && test "x$ac_cv_func_setrlimit" = "xyes" ) ; then 11939 ( test -z "$sandbox_arg" && test "x$ac_cv_func_setrlimit" = "xyes" ) ; then
11460 test "x$ac_cv_func_setrlimit" != "xyes" && \ 11940 test "x$ac_cv_func_setrlimit" != "xyes" && \
@@ -11513,39 +11993,6 @@ fi
11513# version HP92453-01 B.11.11.23709.GP, which incorrectly rejects 11993# version HP92453-01 B.11.11.23709.GP, which incorrectly rejects
11514# declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'. 11994# declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'.
11515# This bug is HP SR number 8606223364. 11995# This bug is HP SR number 8606223364.
11516{ $as_echo "$as_me:${as_lineno-$LINENO}: checking size of char" >&5
11517$as_echo_n "checking size of char... " >&6; }
11518if ${ac_cv_sizeof_char+:} false; then :
11519 $as_echo_n "(cached) " >&6
11520else
11521 if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (char))" "ac_cv_sizeof_char" "$ac_includes_default"; then :
11522
11523else
11524 if test "$ac_cv_type_char" = yes; then
11525 { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
11526$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
11527as_fn_error 77 "cannot compute sizeof (char)
11528See \`config.log' for more details" "$LINENO" 5; }
11529 else
11530 ac_cv_sizeof_char=0
11531 fi
11532fi
11533
11534fi
11535{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_char" >&5
11536$as_echo "$ac_cv_sizeof_char" >&6; }
11537
11538
11539
11540cat >>confdefs.h <<_ACEOF
11541#define SIZEOF_CHAR $ac_cv_sizeof_char
11542_ACEOF
11543
11544
11545# The cast to long int works around a bug in the HP C Compiler
11546# version HP92453-01 B.11.11.23709.GP, which incorrectly rejects
11547# declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'.
11548# This bug is HP SR number 8606223364.
11549{ $as_echo "$as_me:${as_lineno-$LINENO}: checking size of short int" >&5 11996{ $as_echo "$as_me:${as_lineno-$LINENO}: checking size of short int" >&5
11550$as_echo_n "checking size of short int... " >&6; } 11997$as_echo_n "checking size of short int... " >&6; }
11551if ${ac_cv_sizeof_short_int+:} false; then : 11998if ${ac_cv_sizeof_short_int+:} false; then :
diff --git a/configure.ac b/configure.ac
index e040a3d54..0b2dfde96 100644
--- a/configure.ac
+++ b/configure.ac
@@ -1,4 +1,4 @@
1# $Id: configure.ac,v 1.480 2011/08/18 04:48:24 tim Exp $ 1# $Id: configure.ac,v 1.489 2012/04/19 11:46:38 djm Exp $
2# 2#
3# Copyright (c) 1999-2004 Damien Miller 3# Copyright (c) 1999-2004 Damien Miller
4# 4#
@@ -15,7 +15,7 @@
15# OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. 15# OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
16 16
17AC_INIT([OpenSSH], [Portable], [openssh-unix-dev@mindrot.org]) 17AC_INIT([OpenSSH], [Portable], [openssh-unix-dev@mindrot.org])
18AC_REVISION($Revision: 1.480 $) 18AC_REVISION($Revision: 1.489 $)
19AC_CONFIG_SRCDIR([ssh.c]) 19AC_CONFIG_SRCDIR([ssh.c])
20AC_LANG([C]) 20AC_LANG([C])
21 21
@@ -116,6 +116,35 @@ AC_CHECK_DECL([RLIMIT_NPROC],
116 #include <sys/types.h> 116 #include <sys/types.h>
117 #include <sys/resource.h> 117 #include <sys/resource.h>
118]) 118])
119AC_CHECK_DECL([PR_SET_NO_NEW_PRIVS], [have_linux_no_new_privs=1], , [
120 #include <sys/types.h>
121 #include <linux/prctl.h>
122])
123if test "x$have_linux_no_new_privs" = "x1" ; then
124AC_CHECK_DECL([SECCOMP_MODE_FILTER], [have_seccomp_filter=1], , [
125 #include <sys/types.h>
126 #include <linux/seccomp.h>
127])
128fi
129if test "x$have_seccomp_filter" = "x1" ; then
130AC_MSG_CHECKING([kernel for seccomp_filter support])
131AC_RUN_IFELSE([AC_LANG_PROGRAM([[
132 #include <errno.h>
133 #include <linux/seccomp.h>
134 #include <stdlib.h>
135 #include <sys/prctl.h>
136 ]],
137 [[ errno = 0;
138 prctl(PR_SET_SECCOMP, SECCOMP_MODE_FILTER, NULL, 0, 0);
139 exit(errno == EFAULT ? 0 : 1); ]])],
140 [ AC_MSG_RESULT([yes]) ], [
141 AC_MSG_RESULT([no])
142 # Disable seccomp filter as a target
143 have_seccomp_filter=0
144 ],
145 [ AC_MSG_RESULT([cross-compiling, assuming yes]) ]
146)
147fi
119 148
120use_stack_protector=1 149use_stack_protector=1
121AC_ARG_WITH([stackprotect], 150AC_ARG_WITH([stackprotect],
@@ -134,6 +163,7 @@ if test "$GCC" = "yes" || test "$GCC" = "egcs"; then
134 OSSH_CHECK_CFLAG_COMPILE([-Wpointer-sign], [-Wno-pointer-sign]) 163 OSSH_CHECK_CFLAG_COMPILE([-Wpointer-sign], [-Wno-pointer-sign])
135 OSSH_CHECK_CFLAG_COMPILE([-Wunused-result], [-Wno-unused-result]) 164 OSSH_CHECK_CFLAG_COMPILE([-Wunused-result], [-Wno-unused-result])
136 OSSH_CHECK_CFLAG_COMPILE([-fno-strict-aliasing]) 165 OSSH_CHECK_CFLAG_COMPILE([-fno-strict-aliasing])
166 OSSH_CHECK_CFLAG_COMPILE([-D_FORTIFY_SOURCE=2])
137 AC_MSG_CHECKING([gcc version]) 167 AC_MSG_CHECKING([gcc version])
138 GCC_VER=`$CC -v 2>&1 | $AWK '/gcc version /{print $3}'` 168 GCC_VER=`$CC -v 2>&1 | $AWK '/gcc version /{print $3}'`
139 case $GCC_VER in 169 case $GCC_VER in
@@ -680,6 +710,22 @@ main() { if (NSVersionOfRunTimeLibrary("System") >= (60 << 16))
680 AC_DEFINE([SSH_TUN_PREPEND_AF], [1], 710 AC_DEFINE([SSH_TUN_PREPEND_AF], [1],
681 [Prepend the address family to IP tunnel traffic]) 711 [Prepend the address family to IP tunnel traffic])
682 fi 712 fi
713 AC_CHECK_HEADERS([linux/seccomp.h linux/filter.h linux/audit.h])
714 AC_CHECK_FUNCS([prctl])
715 have_seccomp_audit_arch=1
716 case "$host" in
717 x86_64-*)
718 AC_DEFINE([SECCOMP_AUDIT_ARCH], [AUDIT_ARCH_X86_64],
719 [Specify the system call convention in use])
720 ;;
721 i*86-*)
722 AC_DEFINE([SECCOMP_AUDIT_ARCH], [AUDIT_ARCH_I386],
723 [Specify the system call convention in use])
724 ;;
725 *)
726 have_seccomp_audit_arch=0
727 ;;
728 esac
683 ;; 729 ;;
684mips-sony-bsd|mips-sony-newsos4) 730mips-sony-bsd|mips-sony-newsos4)
685 AC_DEFINE([NEED_SETPGRP], [1], [Need setpgrp to acquire controlling tty]) 731 AC_DEFINE([NEED_SETPGRP], [1], [Need setpgrp to acquire controlling tty])
@@ -1148,9 +1194,13 @@ AC_CHECK_FUNCS([utimes],
1148 1194
1149dnl Checks for libutil functions 1195dnl Checks for libutil functions
1150AC_CHECK_HEADERS([libutil.h]) 1196AC_CHECK_HEADERS([libutil.h])
1151AC_SEARCH_LIBS([login], [util bsd], [AC_DEFINE([HAVE_LOGIN], [1], 1197AC_SEARCH_LIBS([fmt_scaled], [util bsd])
1152 [Define if your libraries define login()])]) 1198AC_SEARCH_LIBS([login], [util bsd])
1153AC_CHECK_FUNCS([fmt_scaled logout updwtmp logwtmp]) 1199AC_SEARCH_LIBS([logout], [util bsd])
1200AC_SEARCH_LIBS([logwtmp], [util bsd])
1201AC_SEARCH_LIBS([openpty], [util bsd])
1202AC_SEARCH_LIBS([updwtmp], [util bsd])
1203AC_CHECK_FUNCS([fmt_scaled login logout openpty updwtmp logwtmp])
1154 1204
1155AC_FUNC_STRFTIME 1205AC_FUNC_STRFTIME
1156 1206
@@ -1343,6 +1393,41 @@ int deny_severity = 0, allow_severity = 0;
1343 ] 1393 ]
1344) 1394)
1345 1395
1396# Check whether user wants to use ldns
1397LDNS_MSG="no"
1398AC_ARG_WITH(ldns,
1399 [ --with-ldns[[=PATH]] Use ldns for DNSSEC support (optionally in PATH)],
1400 [
1401 if test "x$withval" != "xno" ; then
1402
1403 if test "x$withval" != "xyes" ; then
1404 CPPFLAGS="$CPPFLAGS -I${withval}/include"
1405 LDFLAGS="$LDFLAGS -L${withval}/lib"
1406 fi
1407
1408 AC_DEFINE(HAVE_LDNS, 1, [Define if you want ldns support])
1409 LIBS="-lldns $LIBS"
1410 LDNS_MSG="yes"
1411
1412 AC_MSG_CHECKING([for ldns support])
1413 AC_LINK_IFELSE(
1414 [AC_LANG_SOURCE([[
1415#include <stdio.h>
1416#include <stdlib.h>
1417#include <stdint.h>
1418#include <ldns/ldns.h>
1419int main() { ldns_status status = ldns_verify_trusted(NULL, NULL, NULL, NULL); status=LDNS_STATUS_OK; exit(0); }
1420 ]])
1421 ],
1422 [AC_MSG_RESULT(yes)],
1423 [
1424 AC_MSG_RESULT(no)
1425 AC_MSG_ERROR([** Incomplete or missing ldns libraries.])
1426 ])
1427 fi
1428 ]
1429)
1430
1346# Check whether user wants libedit support 1431# Check whether user wants libedit support
1347LIBEDIT_MSG="no" 1432LIBEDIT_MSG="no"
1348AC_ARG_WITH([libedit], 1433AC_ARG_WITH([libedit],
@@ -1422,6 +1507,11 @@ AC_ARG_WITH([audit],
1422 # These are optional 1507 # These are optional
1423 AC_CHECK_FUNCS([getaudit_addr aug_get_machine]) 1508 AC_CHECK_FUNCS([getaudit_addr aug_get_machine])
1424 AC_DEFINE([USE_BSM_AUDIT], [1], [Use BSM audit module]) 1509 AC_DEFINE([USE_BSM_AUDIT], [1], [Use BSM audit module])
1510 if test "$sol2ver" -eq 11; then
1511 SSHDLIBS="$SSHDLIBS -lscf"
1512 AC_DEFINE([BROKEN_BSM_API], [1],
1513 [The system has incomplete BSM API])
1514 fi
1425 ;; 1515 ;;
1426 linux) 1516 linux)
1427 AC_MSG_RESULT([linux]) 1517 AC_MSG_RESULT([linux])
@@ -1490,7 +1580,6 @@ AC_CHECK_FUNCS([ \
1490 nsleep \ 1580 nsleep \
1491 ogetaddrinfo \ 1581 ogetaddrinfo \
1492 openlog_r \ 1582 openlog_r \
1493 openpty \
1494 poll \ 1583 poll \
1495 prctl \ 1584 prctl \
1496 pstat \ 1585 pstat \
@@ -1525,6 +1614,7 @@ AC_CHECK_FUNCS([ \
1525 strlcat \ 1614 strlcat \
1526 strlcpy \ 1615 strlcpy \
1527 strmode \ 1616 strmode \
1617 strnlen \
1528 strnvis \ 1618 strnvis \
1529 strptime \ 1619 strptime \
1530 strtonum \ 1620 strtonum \
@@ -2192,7 +2282,7 @@ AC_LINK_IFELSE(
2192 ] 2282 ]
2193) 2283)
2194 2284
2195AC_CHECK_FUNCS([RSA_generate_key_ex DSA_generate_parameters_ex BN_is_prime_ex RSA_get_default_method]) 2285AC_CHECK_FUNCS([RSA_generate_key_ex DSA_generate_parameters_ex BN_is_prime_ex RSA_get_default_method HMAC_CTX_init])
2196 2286
2197AC_ARG_WITH([ssl-engine], 2287AC_ARG_WITH([ssl-engine],
2198 [ --with-ssl-engine Enable OpenSSL (hardware) ENGINE support ], 2288 [ --with-ssl-engine Enable OpenSSL (hardware) ENGINE support ],
@@ -2500,7 +2590,7 @@ AC_SUBST([SSH_PRIVSEP_USER])
2500# Decide which sandbox style to use 2590# Decide which sandbox style to use
2501sandbox_arg="" 2591sandbox_arg=""
2502AC_ARG_WITH([sandbox], 2592AC_ARG_WITH([sandbox],
2503 [ --with-sandbox=style Specify privilege separation sandbox (no, darwin, rlimit, systrace)], 2593 [ --with-sandbox=style Specify privilege separation sandbox (no, darwin, rlimit, systrace, seccomp_filter)],
2504 [ 2594 [
2505 if test "x$withval" = "xyes" ; then 2595 if test "x$withval" = "xyes" ; then
2506 sandbox_arg="" 2596 sandbox_arg=""
@@ -2523,6 +2613,23 @@ elif test "x$sandbox_arg" = "xdarwin" || \
2523 AC_MSG_ERROR([Darwin seatbelt sandbox requires sandbox.h and sandbox_init function]) 2613 AC_MSG_ERROR([Darwin seatbelt sandbox requires sandbox.h and sandbox_init function])
2524 SANDBOX_STYLE="darwin" 2614 SANDBOX_STYLE="darwin"
2525 AC_DEFINE([SANDBOX_DARWIN], [1], [Sandbox using Darwin sandbox_init(3)]) 2615 AC_DEFINE([SANDBOX_DARWIN], [1], [Sandbox using Darwin sandbox_init(3)])
2616elif test "x$sandbox_arg" = "xseccomp_filter" || \
2617 ( test -z "$sandbox_arg" && \
2618 test "x$have_seccomp_filter" == "x1" && \
2619 test "x$ac_cv_header_linux_audit_h" = "xyes" && \
2620 test "x$have_seccomp_audit_arch" = "x1" && \
2621 test "x$have_linux_no_new_privs" = "x1" && \
2622 test "x$ac_cv_func_prctl" = "xyes" ) ; then
2623 test "x$have_seccomp_audit_arch" != "x1" && \
2624 AC_MSG_ERROR([seccomp_filter sandbox not supported on $host])
2625 test "x$have_linux_no_new_privs" != "x1" && \
2626 AC_MSG_ERROR([seccomp_filter sandbox requires PR_SET_NO_NEW_PRIVS])
2627 test "x$have_seccomp_filter" != "x1" && \
2628 AC_MSG_ERROR([seccomp_filter sandbox requires seccomp headers])
2629 test "x$ac_cv_func_prctl" != "xyes" && \
2630 AC_MSG_ERROR([seccomp_filter sandbox requires prctl function])
2631 SANDBOX_STYLE="seccomp_filter"
2632 AC_DEFINE([SANDBOX_SECCOMP_FILTER], [1], [Sandbox using seccomp filter])
2526elif test "x$sandbox_arg" = "xrlimit" || \ 2633elif test "x$sandbox_arg" = "xrlimit" || \
2527 ( test -z "$sandbox_arg" && test "x$ac_cv_func_setrlimit" = "xyes" ) ; then 2634 ( test -z "$sandbox_arg" && test "x$ac_cv_func_setrlimit" = "xyes" ) ; then
2528 test "x$ac_cv_func_setrlimit" != "xyes" && \ 2635 test "x$ac_cv_func_setrlimit" != "xyes" && \
@@ -2546,7 +2653,6 @@ fi
2546AC_CHECK_TYPES([long long, unsigned long long, long double]) 2653AC_CHECK_TYPES([long long, unsigned long long, long double])
2547 2654
2548# Check datatype sizes 2655# Check datatype sizes
2549AC_CHECK_SIZEOF([char], [1])
2550AC_CHECK_SIZEOF([short int], [2]) 2656AC_CHECK_SIZEOF([short int], [2])
2551AC_CHECK_SIZEOF([int], [4]) 2657AC_CHECK_SIZEOF([int], [4])
2552AC_CHECK_SIZEOF([long int], [4]) 2658AC_CHECK_SIZEOF([long int], [4])
diff --git a/contrib/caldera/openssh.spec b/contrib/caldera/openssh.spec
index 73d441d0c..90be57dac 100644
--- a/contrib/caldera/openssh.spec
+++ b/contrib/caldera/openssh.spec
@@ -16,7 +16,7 @@
16 16
17#old cvs stuff. please update before use. may be deprecated. 17#old cvs stuff. please update before use. may be deprecated.
18%define use_stable 1 18%define use_stable 1
19%define version 5.9p1 19%define version 6.0p1
20%if %{use_stable} 20%if %{use_stable}
21 %define cvs %{nil} 21 %define cvs %{nil}
22 %define release 1 22 %define release 1
@@ -363,4 +363,4 @@ fi
363* Mon Jan 01 1998 ... 363* Mon Jan 01 1998 ...
364Template Version: 1.31 364Template Version: 1.31
365 365
366$Id: openssh.spec,v 1.75.2.1 2011/09/05 00:28:11 djm Exp $ 366$Id: openssh.spec,v 1.77 2012/04/20 00:58:43 djm Exp $
diff --git a/contrib/cygwin/Makefile b/contrib/cygwin/Makefile
index dc857f2ed..a0261f48d 100644
--- a/contrib/cygwin/Makefile
+++ b/contrib/cygwin/Makefile
@@ -36,21 +36,20 @@ install-inetd-config:
36 36
37install-sshdoc: 37install-sshdoc:
38 $(srcdir)/mkinstalldirs $(DESTDIR)$(sshdocdir) 38 $(srcdir)/mkinstalldirs $(DESTDIR)$(sshdocdir)
39 $(INSTALL) -m 644 $(srcdir)/CREDITS $(DESTDIR)$(sshdocdir)/CREDITS 39 -$(INSTALL) -m 644 $(srcdir)/CREDITS $(DESTDIR)$(sshdocdir)/CREDITS
40 $(INSTALL) -m 644 $(srcdir)/ChangeLog $(DESTDIR)$(sshdocdir)/ChangeLog 40 -$(INSTALL) -m 644 $(srcdir)/ChangeLog $(DESTDIR)$(sshdocdir)/ChangeLog
41 $(INSTALL) -m 644 $(srcdir)/LICENCE $(DESTDIR)$(sshdocdir)/LICENCE 41 -$(INSTALL) -m 644 $(srcdir)/LICENCE $(DESTDIR)$(sshdocdir)/LICENCE
42 $(INSTALL) -m 644 $(srcdir)/OVERVIEW $(DESTDIR)$(sshdocdir)/OVERVIEW 42 -$(INSTALL) -m 644 $(srcdir)/OVERVIEW $(DESTDIR)$(sshdocdir)/OVERVIEW
43 $(INSTALL) -m 644 $(srcdir)/PROTOCOL $(DESTDIR)$(sshdocdir)/PROTOCOL 43 -$(INSTALL) -m 644 $(srcdir)/PROTOCOL $(DESTDIR)$(sshdocdir)/PROTOCOL
44 $(INSTALL) -m 644 $(srcdir)/PROTOCOL.agent $(DESTDIR)$(sshdocdir)/PROTOCOL.agent 44 -$(INSTALL) -m 644 $(srcdir)/PROTOCOL.agent $(DESTDIR)$(sshdocdir)/PROTOCOL.agent
45 $(INSTALL) -m 644 $(srcdir)/PROTOCOL.certkeys $(DESTDIR)$(sshdocdir)/PROTOCOL.certkeys 45 -$(INSTALL) -m 644 $(srcdir)/PROTOCOL.certkeys $(DESTDIR)$(sshdocdir)/PROTOCOL.certkeys
46 $(INSTALL) -m 644 $(srcdir)/PROTOCOL.mux $(DESTDIR)$(sshdocdir)/PROTOCOL.mux 46 -$(INSTALL) -m 644 $(srcdir)/PROTOCOL.mux $(DESTDIR)$(sshdocdir)/PROTOCOL.mux
47 $(INSTALL) -m 644 $(srcdir)/README $(DESTDIR)$(sshdocdir)/README 47 -$(INSTALL) -m 644 $(srcdir)/README $(DESTDIR)$(sshdocdir)/README
48 $(INSTALL) -m 644 $(srcdir)/README.dns $(DESTDIR)$(sshdocdir)/README.dns 48 -$(INSTALL) -m 644 $(srcdir)/README.dns $(DESTDIR)$(sshdocdir)/README.dns
49 $(INSTALL) -m 644 $(srcdir)/README.platform $(DESTDIR)$(sshdocdir)/README.platform 49 -$(INSTALL) -m 644 $(srcdir)/README.platform $(DESTDIR)$(sshdocdir)/README.platform
50 $(INSTALL) -m 644 $(srcdir)/README.privsep $(DESTDIR)$(sshdocdir)/README.privsep 50 -$(INSTALL) -m 644 $(srcdir)/README.privsep $(DESTDIR)$(sshdocdir)/README.privsep
51 $(INSTALL) -m 644 $(srcdir)/README.tun $(DESTDIR)$(sshdocdir)/README.tun 51 -$(INSTALL) -m 644 $(srcdir)/README.tun $(DESTDIR)$(sshdocdir)/README.tun
52 $(INSTALL) -m 644 $(srcdir)/TODO $(DESTDIR)$(sshdocdir)/TODO 52 -$(INSTALL) -m 644 $(srcdir)/TODO $(DESTDIR)$(sshdocdir)/TODO
53 $(INSTALL) -m 644 $(srcdir)/WARNING.RNG $(DESTDIR)$(sshdocdir)/WARNING.RNG
54 53
55install-cygwindoc: README 54install-cygwindoc: README
56 $(srcdir)/mkinstalldirs $(DESTDIR)$(cygdocdir) 55 $(srcdir)/mkinstalldirs $(DESTDIR)$(cygdocdir)
diff --git a/contrib/redhat/openssh.spec b/contrib/redhat/openssh.spec
index be6de088c..d4e44d26d 100644
--- a/contrib/redhat/openssh.spec
+++ b/contrib/redhat/openssh.spec
@@ -1,4 +1,4 @@
1%define ver 5.9p1 1%define ver 6.0p1
2%define rel 1 2%define rel 1
3 3
4# OpenSSH privilege separation requires a user & group ID 4# OpenSSH privilege separation requires a user & group ID
@@ -335,7 +335,7 @@ fi
335 335
336%files 336%files
337%defattr(-,root,root) 337%defattr(-,root,root)
338%doc CREDITS ChangeLog INSTALL LICENCE OVERVIEW README* PROTOCOL* TODO WARNING* 338%doc CREDITS ChangeLog INSTALL LICENCE OVERVIEW README* PROTOCOL* TODO
339%attr(0755,root,root) %{_bindir}/scp 339%attr(0755,root,root) %{_bindir}/scp
340%attr(0644,root,root) %{_mandir}/man1/scp.1* 340%attr(0644,root,root) %{_mandir}/man1/scp.1*
341%attr(0755,root,root) %dir %{_sysconfdir}/ssh 341%attr(0755,root,root) %dir %{_sysconfdir}/ssh
diff --git a/contrib/solaris/README b/contrib/solaris/README
index fefdd4b53..fefdd4b53 100755..100644
--- a/contrib/solaris/README
+++ b/contrib/solaris/README
diff --git a/contrib/suse/openssh.spec b/contrib/suse/openssh.spec
index 3a4dfea37..8d99fb5aa 100644
--- a/contrib/suse/openssh.spec
+++ b/contrib/suse/openssh.spec
@@ -13,7 +13,7 @@
13 13
14Summary: OpenSSH, a free Secure Shell (SSH) protocol implementation 14Summary: OpenSSH, a free Secure Shell (SSH) protocol implementation
15Name: openssh 15Name: openssh
16Version: 5.9p1 16Version: 6.0p1
17URL: http://www.openssh.com/ 17URL: http://www.openssh.com/
18Release: 1 18Release: 1
19Source0: openssh-%{version}.tar.gz 19Source0: openssh-%{version}.tar.gz
diff --git a/debian/changelog b/debian/changelog
index b0c92aeb4..5d72cfc34 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,4 +1,4 @@
1openssh (1:5.9p1-6) UNRELEASED; urgency=low 1openssh (1:6.0p1-1) UNRELEASED; urgency=low
2 2
3 [ Roger Leigh ] 3 [ Roger Leigh ]
4 * Display dynamic part of MOTD from /run/motd.dynamic, if it exists 4 * Display dynamic part of MOTD from /run/motd.dynamic, if it exists
@@ -7,6 +7,12 @@ openssh (1:5.9p1-6) UNRELEASED; urgency=low
7 [ Colin Watson ] 7 [ Colin Watson ]
8 * Update OpenSSH FAQ to revision 1.113, fixing missing line break (closes: 8 * Update OpenSSH FAQ to revision 1.113, fixing missing line break (closes:
9 #669667). 9 #669667).
10 * New upstream release (http://www.openssh.org/txt/release-6.0).
11 - Fix IPQoS not being set on non-mapped v4-in-v6 addressed connections
12 (closes: #643312, #650512).
13 - Add a new privilege separation sandbox implementation for Linux's new
14 seccomp sandbox, automatically enabled on platforms that support it.
15 (Note: privilege separation sandboxing is still experimental.)
10 16
11 -- Colin Watson <cjwatson@debian.org> Sat, 21 Apr 2012 10:57:23 +0100 17 -- Colin Watson <cjwatson@debian.org> Sat, 21 Apr 2012 10:57:23 +0100
12 18
diff --git a/debian/patches/auth-log-verbosity.patch b/debian/patches/auth-log-verbosity.patch
index da940d9fa..bc2602306 100644
--- a/debian/patches/auth-log-verbosity.patch
+++ b/debian/patches/auth-log-verbosity.patch
@@ -47,7 +47,7 @@ Index: b/auth-options.c
47 auth_debug_add("Your host '%.200s' is not " 47 auth_debug_add("Your host '%.200s' is not "
48 "permitted to use this key for login.", 48 "permitted to use this key for login.",
49 remote_host); 49 remote_host);
50@@ -526,11 +540,14 @@ 50@@ -512,11 +526,14 @@
51 break; 51 break;
52 case 0: 52 case 0:
53 /* no match */ 53 /* no match */
@@ -104,7 +104,7 @@ Index: b/auth2-pubkey.c
104 while (read_keyfile_line(f, file, line, sizeof(line), &linenum) != -1) { 104 while (read_keyfile_line(f, file, line, sizeof(line), &linenum) != -1) {
105 /* Skip leading whitespace. */ 105 /* Skip leading whitespace. */
106 for (cp = line; *cp == ' ' || *cp == '\t'; cp++) 106 for (cp = line; *cp == ' ' || *cp == '\t'; cp++)
107@@ -280,6 +281,8 @@ 107@@ -281,6 +282,8 @@
108 found_key = 0; 108 found_key = 0;
109 found = key_new(key_is_cert(key) ? KEY_UNSPEC : key->type); 109 found = key_new(key_is_cert(key) ? KEY_UNSPEC : key->type);
110 110
@@ -113,7 +113,7 @@ Index: b/auth2-pubkey.c
113 while (read_keyfile_line(f, file, line, sizeof(line), &linenum) != -1) { 113 while (read_keyfile_line(f, file, line, sizeof(line), &linenum) != -1) {
114 char *cp, *key_options = NULL; 114 char *cp, *key_options = NULL;
115 115
116@@ -416,6 +419,7 @@ 116@@ -417,6 +420,7 @@
117 if (key_cert_check_authority(key, 0, 1, 117 if (key_cert_check_authority(key, 0, 1,
118 principals_file == NULL ? pw->pw_name : NULL, &reason) != 0) 118 principals_file == NULL ? pw->pw_name : NULL, &reason) != 0)
119 goto fail_reason; 119 goto fail_reason;
diff --git a/debian/patches/authorized-keys-man-symlink.patch b/debian/patches/authorized-keys-man-symlink.patch
index a9ca85407..08ba01e37 100644
--- a/debian/patches/authorized-keys-man-symlink.patch
+++ b/debian/patches/authorized-keys-man-symlink.patch
@@ -8,7 +8,7 @@ Index: b/Makefile.in
8=================================================================== 8===================================================================
9--- a/Makefile.in 9--- a/Makefile.in
10+++ b/Makefile.in 10+++ b/Makefile.in
11@@ -275,6 +275,7 @@ 11@@ -276,6 +276,7 @@
12 $(INSTALL) -m 644 sshd_config.5.out $(DESTDIR)$(mandir)/$(mansubdir)5/sshd_config.5 12 $(INSTALL) -m 644 sshd_config.5.out $(DESTDIR)$(mandir)/$(mansubdir)5/sshd_config.5
13 $(INSTALL) -m 644 ssh_config.5.out $(DESTDIR)$(mandir)/$(mansubdir)5/ssh_config.5 13 $(INSTALL) -m 644 ssh_config.5.out $(DESTDIR)$(mandir)/$(mansubdir)5/ssh_config.5
14 $(INSTALL) -m 644 sshd.8.out $(DESTDIR)$(mandir)/$(mansubdir)8/sshd.8 14 $(INSTALL) -m 644 sshd.8.out $(DESTDIR)$(mandir)/$(mansubdir)8/sshd.8
diff --git a/debian/patches/cross-pkg-config.patch b/debian/patches/cross-pkg-config.patch
index 87818cd95..c25d2a6e5 100644
--- a/debian/patches/cross-pkg-config.patch
+++ b/debian/patches/cross-pkg-config.patch
@@ -8,7 +8,7 @@ Index: b/configure
8=================================================================== 8===================================================================
9--- a/configure 9--- a/configure
10+++ b/configure 10+++ b/configure
11@@ -8739,8 +8739,9 @@ 11@@ -9194,8 +9194,9 @@
12 if test "${with_libedit+set}" = set; then : 12 if test "${with_libedit+set}" = set; then :
13 withval=$with_libedit; if test "x$withval" != "xno" ; then 13 withval=$with_libedit; if test "x$withval" != "xno" ; then
14 if test "x$withval" = "xyes" ; then 14 if test "x$withval" = "xyes" ; then
@@ -20,7 +20,7 @@ Index: b/configure
20 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 20 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
21 $as_echo_n "checking for $ac_word... " >&6; } 21 $as_echo_n "checking for $ac_word... " >&6; }
22 if ${ac_cv_path_PKGCONFIG+:} false; then : 22 if ${ac_cv_path_PKGCONFIG+:} false; then :
23@@ -8766,7 +8767,6 @@ 23@@ -9221,7 +9222,6 @@
24 done 24 done
25 IFS=$as_save_IFS 25 IFS=$as_save_IFS
26 26
@@ -28,7 +28,7 @@ Index: b/configure
28 ;; 28 ;;
29 esac 29 esac
30 fi 30 fi
31@@ -8780,6 +8780,63 @@ 31@@ -9235,6 +9235,63 @@
32 fi 32 fi
33 33
34 34
@@ -96,7 +96,7 @@ Index: b/configure.ac
96=================================================================== 96===================================================================
97--- a/configure.ac 97--- a/configure.ac
98+++ b/configure.ac 98+++ b/configure.ac
99@@ -1349,7 +1349,7 @@ 99@@ -1434,7 +1434,7 @@
100 [ --with-libedit[[=PATH]] Enable libedit support for sftp], 100 [ --with-libedit[[=PATH]] Enable libedit support for sftp],
101 [ if test "x$withval" != "xno" ; then 101 [ if test "x$withval" != "xno" ; then
102 if test "x$withval" = "xyes" ; then 102 if test "x$withval" = "xyes" ; then
diff --git a/debian/patches/debian-banner.patch b/debian/patches/debian-banner.patch
index 57ca35e87..a03ce23bb 100644
--- a/debian/patches/debian-banner.patch
+++ b/debian/patches/debian-banner.patch
@@ -71,7 +71,7 @@ Index: b/sshd.c
71=================================================================== 71===================================================================
72--- a/sshd.c 72--- a/sshd.c
73+++ b/sshd.c 73+++ b/sshd.c
74@@ -423,7 +423,8 @@ 74@@ -424,7 +424,8 @@
75 minor = PROTOCOL_MINOR_1; 75 minor = PROTOCOL_MINOR_1;
76 } 76 }
77 snprintf(buf, sizeof buf, "SSH-%d.%d-%.100s%s", major, minor, 77 snprintf(buf, sizeof buf, "SSH-%d.%d-%.100s%s", major, minor,
diff --git a/debian/patches/debian-config.patch b/debian/patches/debian-config.patch
index 74aa53ecc..57ebbf540 100644
--- a/debian/patches/debian-config.patch
+++ b/debian/patches/debian-config.patch
@@ -24,7 +24,7 @@ Index: b/readconf.c
24=================================================================== 24===================================================================
25--- a/readconf.c 25--- a/readconf.c
26+++ b/readconf.c 26+++ b/readconf.c
27@@ -1268,7 +1268,7 @@ 27@@ -1269,7 +1269,7 @@
28 if (options->forward_x11 == -1) 28 if (options->forward_x11 == -1)
29 options->forward_x11 = 0; 29 options->forward_x11 = 0;
30 if (options->forward_x11_trusted == -1) 30 if (options->forward_x11_trusted == -1)
diff --git a/debian/patches/gssapi.patch b/debian/patches/gssapi.patch
index dc293683e..d78835bd6 100644
--- a/debian/patches/gssapi.patch
+++ b/debian/patches/gssapi.patch
@@ -327,7 +327,7 @@ Index: b/clientloop.c
327 /* import options */ 327 /* import options */
328 extern Options options; 328 extern Options options;
329 329
330@@ -1508,6 +1512,15 @@ 330@@ -1540,6 +1544,15 @@
331 /* Do channel operations unless rekeying in progress. */ 331 /* Do channel operations unless rekeying in progress. */
332 if (!rekeying) { 332 if (!rekeying) {
333 channel_after_select(readset, writeset); 333 channel_after_select(readset, writeset);
@@ -347,7 +347,7 @@ Index: b/config.h.in
347=================================================================== 347===================================================================
348--- a/config.h.in 348--- a/config.h.in
349+++ b/config.h.in 349+++ b/config.h.in
350@@ -1441,6 +1441,9 @@ 350@@ -1465,6 +1465,9 @@
351 /* Use btmp to log bad logins */ 351 /* Use btmp to log bad logins */
352 #undef USE_BTMP 352 #undef USE_BTMP
353 353
@@ -357,7 +357,7 @@ Index: b/config.h.in
357 /* Use libedit for sftp */ 357 /* Use libedit for sftp */
358 #undef USE_LIBEDIT 358 #undef USE_LIBEDIT
359 359
360@@ -1456,6 +1459,9 @@ 360@@ -1480,6 +1483,9 @@
361 /* Use PIPES instead of a socketpair() */ 361 /* Use PIPES instead of a socketpair() */
362 #undef USE_PIPES 362 #undef USE_PIPES
363 363
@@ -371,7 +371,7 @@ Index: b/configure
371=================================================================== 371===================================================================
372--- a/configure 372--- a/configure
373+++ b/configure 373+++ b/configure
374@@ -6521,6 +6521,63 @@ 374@@ -6608,6 +6608,63 @@
375 375
376 $as_echo "#define SSH_TUN_PREPEND_AF 1" >>confdefs.h 376 $as_echo "#define SSH_TUN_PREPEND_AF 1" >>confdefs.h
377 377
@@ -439,7 +439,7 @@ Index: b/configure.ac
439=================================================================== 439===================================================================
440--- a/configure.ac 440--- a/configure.ac
441+++ b/configure.ac 441+++ b/configure.ac
442@@ -515,6 +515,30 @@ 442@@ -545,6 +545,30 @@
443 [Use tunnel device compatibility to OpenBSD]) 443 [Use tunnel device compatibility to OpenBSD])
444 AC_DEFINE([SSH_TUN_PREPEND_AF], [1], 444 AC_DEFINE([SSH_TUN_PREPEND_AF], [1],
445 [Prepend the address family to IP tunnel traffic]) 445 [Prepend the address family to IP tunnel traffic])
@@ -2059,7 +2059,7 @@ Index: b/monitor.c
2059 } else { 2059 } else {
2060 mon_dispatch = mon_dispatch_postauth15; 2060 mon_dispatch = mon_dispatch_postauth15;
2061 monitor_permit(mon_dispatch, MONITOR_REQ_TERM, 1); 2061 monitor_permit(mon_dispatch, MONITOR_REQ_TERM, 1);
2062@@ -1802,6 +1819,13 @@ 2062@@ -1803,6 +1820,13 @@
2063 kex->kex[KEX_DH_GEX_SHA1] = kexgex_server; 2063 kex->kex[KEX_DH_GEX_SHA1] = kexgex_server;
2064 kex->kex[KEX_DH_GEX_SHA256] = kexgex_server; 2064 kex->kex[KEX_DH_GEX_SHA256] = kexgex_server;
2065 kex->kex[KEX_ECDH_SHA2] = kexecdh_server; 2065 kex->kex[KEX_ECDH_SHA2] = kexecdh_server;
@@ -2073,7 +2073,7 @@ Index: b/monitor.c
2073 kex->server = 1; 2073 kex->server = 1;
2074 kex->hostkey_type = buffer_get_int(m); 2074 kex->hostkey_type = buffer_get_int(m);
2075 kex->kex_type = buffer_get_int(m); 2075 kex->kex_type = buffer_get_int(m);
2076@@ -2008,6 +2032,9 @@ 2076@@ -2009,6 +2033,9 @@
2077 OM_uint32 major; 2077 OM_uint32 major;
2078 u_int len; 2078 u_int len;
2079 2079
@@ -2083,7 +2083,7 @@ Index: b/monitor.c
2083 goid.elements = buffer_get_string(m, &len); 2083 goid.elements = buffer_get_string(m, &len);
2084 goid.length = len; 2084 goid.length = len;
2085 2085
2086@@ -2035,6 +2062,9 @@ 2086@@ -2036,6 +2063,9 @@
2087 OM_uint32 flags = 0; /* GSI needs this */ 2087 OM_uint32 flags = 0; /* GSI needs this */
2088 u_int len; 2088 u_int len;
2089 2089
@@ -2093,7 +2093,7 @@ Index: b/monitor.c
2093 in.value = buffer_get_string(m, &len); 2093 in.value = buffer_get_string(m, &len);
2094 in.length = len; 2094 in.length = len;
2095 major = ssh_gssapi_accept_ctx(gsscontext, &in, &out, &flags); 2095 major = ssh_gssapi_accept_ctx(gsscontext, &in, &out, &flags);
2096@@ -2052,6 +2082,7 @@ 2096@@ -2053,6 +2083,7 @@
2097 monitor_permit(mon_dispatch, MONITOR_REQ_GSSSTEP, 0); 2097 monitor_permit(mon_dispatch, MONITOR_REQ_GSSSTEP, 0);
2098 monitor_permit(mon_dispatch, MONITOR_REQ_GSSUSEROK, 1); 2098 monitor_permit(mon_dispatch, MONITOR_REQ_GSSUSEROK, 1);
2099 monitor_permit(mon_dispatch, MONITOR_REQ_GSSCHECKMIC, 1); 2099 monitor_permit(mon_dispatch, MONITOR_REQ_GSSCHECKMIC, 1);
@@ -2101,7 +2101,7 @@ Index: b/monitor.c
2101 } 2101 }
2102 return (0); 2102 return (0);
2103 } 2103 }
2104@@ -2063,6 +2094,9 @@ 2104@@ -2064,6 +2095,9 @@
2105 OM_uint32 ret; 2105 OM_uint32 ret;
2106 u_int len; 2106 u_int len;
2107 2107
@@ -2111,7 +2111,7 @@ Index: b/monitor.c
2111 gssbuf.value = buffer_get_string(m, &len); 2111 gssbuf.value = buffer_get_string(m, &len);
2112 gssbuf.length = len; 2112 gssbuf.length = len;
2113 mic.value = buffer_get_string(m, &len); 2113 mic.value = buffer_get_string(m, &len);
2114@@ -2089,7 +2123,11 @@ 2114@@ -2090,7 +2124,11 @@
2115 { 2115 {
2116 int authenticated; 2116 int authenticated;
2117 2117
@@ -2124,7 +2124,7 @@ Index: b/monitor.c
2124 2124
2125 buffer_clear(m); 2125 buffer_clear(m);
2126 buffer_put_int(m, authenticated); 2126 buffer_put_int(m, authenticated);
2127@@ -2102,6 +2140,74 @@ 2127@@ -2103,6 +2141,74 @@
2128 /* Monitor loop will terminate if authenticated */ 2128 /* Monitor loop will terminate if authenticated */
2129 return (authenticated); 2129 return (authenticated);
2130 } 2130 }
@@ -2326,7 +2326,7 @@ Index: b/readconf.c
2326 #endif 2326 #endif
2327 { "fallbacktorsh", oDeprecated }, 2327 { "fallbacktorsh", oDeprecated },
2328 { "usersh", oDeprecated }, 2328 { "usersh", oDeprecated },
2329@@ -482,10 +493,30 @@ 2329@@ -483,10 +494,30 @@
2330 intptr = &options->gss_authentication; 2330 intptr = &options->gss_authentication;
2331 goto parse_flag; 2331 goto parse_flag;
2332 2332
@@ -2357,7 +2357,7 @@ Index: b/readconf.c
2357 case oBatchMode: 2357 case oBatchMode:
2358 intptr = &options->batch_mode; 2358 intptr = &options->batch_mode;
2359 goto parse_flag; 2359 goto parse_flag;
2360@@ -1138,7 +1169,12 @@ 2360@@ -1139,7 +1170,12 @@
2361 options->pubkey_authentication = -1; 2361 options->pubkey_authentication = -1;
2362 options->challenge_response_authentication = -1; 2362 options->challenge_response_authentication = -1;
2363 options->gss_authentication = -1; 2363 options->gss_authentication = -1;
@@ -2370,7 +2370,7 @@ Index: b/readconf.c
2370 options->password_authentication = -1; 2370 options->password_authentication = -1;
2371 options->kbd_interactive_authentication = -1; 2371 options->kbd_interactive_authentication = -1;
2372 options->kbd_interactive_devices = NULL; 2372 options->kbd_interactive_devices = NULL;
2373@@ -1238,8 +1274,14 @@ 2373@@ -1239,8 +1275,14 @@
2374 options->challenge_response_authentication = 1; 2374 options->challenge_response_authentication = 1;
2375 if (options->gss_authentication == -1) 2375 if (options->gss_authentication == -1)
2376 options->gss_authentication = 0; 2376 options->gss_authentication = 0;
@@ -2389,7 +2389,7 @@ Index: b/readconf.h
2389=================================================================== 2389===================================================================
2390--- a/readconf.h 2390--- a/readconf.h
2391+++ b/readconf.h 2391+++ b/readconf.h
2392@@ -47,7 +47,12 @@ 2392@@ -48,7 +48,12 @@
2393 int challenge_response_authentication; 2393 int challenge_response_authentication;
2394 /* Try S/Key or TIS, authentication. */ 2394 /* Try S/Key or TIS, authentication. */
2395 int gss_authentication; /* Try GSS authentication */ 2395 int gss_authentication; /* Try GSS authentication */
@@ -2893,7 +2893,7 @@ Index: b/sshd.c
2893 #ifdef LIBWRAP 2893 #ifdef LIBWRAP
2894 #include <tcpd.h> 2894 #include <tcpd.h>
2895 #include <syslog.h> 2895 #include <syslog.h>
2896@@ -1612,10 +1616,13 @@ 2896@@ -1616,10 +1620,13 @@
2897 logit("Disabling protocol version 1. Could not load host key"); 2897 logit("Disabling protocol version 1. Could not load host key");
2898 options.protocol &= ~SSH_PROTO_1; 2898 options.protocol &= ~SSH_PROTO_1;
2899 } 2899 }
@@ -2907,7 +2907,7 @@ Index: b/sshd.c
2907 if (!(options.protocol & (SSH_PROTO_1|SSH_PROTO_2))) { 2907 if (!(options.protocol & (SSH_PROTO_1|SSH_PROTO_2))) {
2908 logit("sshd: no hostkeys available -- exiting."); 2908 logit("sshd: no hostkeys available -- exiting.");
2909 exit(1); 2909 exit(1);
2910@@ -1944,6 +1951,60 @@ 2910@@ -1948,6 +1955,60 @@
2911 /* Log the connection. */ 2911 /* Log the connection. */
2912 verbose("Connection from %.500s port %d", remote_ip, remote_port); 2912 verbose("Connection from %.500s port %d", remote_ip, remote_port);
2913 2913
@@ -2968,7 +2968,7 @@ Index: b/sshd.c
2968 /* 2968 /*
2969 * We don't want to listen forever unless the other side 2969 * We don't want to listen forever unless the other side
2970 * successfully authenticates itself. So we set up an alarm which is 2970 * successfully authenticates itself. So we set up an alarm which is
2971@@ -2325,6 +2386,48 @@ 2971@@ -2329,6 +2390,48 @@
2972 2972
2973 myproposal[PROPOSAL_SERVER_HOST_KEY_ALGS] = list_hostkey_types(); 2973 myproposal[PROPOSAL_SERVER_HOST_KEY_ALGS] = list_hostkey_types();
2974 2974
@@ -3017,7 +3017,7 @@ Index: b/sshd.c
3017 /* start key exchange */ 3017 /* start key exchange */
3018 kex = kex_setup(myproposal); 3018 kex = kex_setup(myproposal);
3019 kex->kex[KEX_DH_GRP1_SHA1] = kexdh_server; 3019 kex->kex[KEX_DH_GRP1_SHA1] = kexdh_server;
3020@@ -2332,6 +2435,13 @@ 3020@@ -2336,6 +2439,13 @@
3021 kex->kex[KEX_DH_GEX_SHA1] = kexgex_server; 3021 kex->kex[KEX_DH_GEX_SHA1] = kexgex_server;
3022 kex->kex[KEX_DH_GEX_SHA256] = kexgex_server; 3022 kex->kex[KEX_DH_GEX_SHA256] = kexgex_server;
3023 kex->kex[KEX_ECDH_SHA2] = kexecdh_server; 3023 kex->kex[KEX_ECDH_SHA2] = kexecdh_server;
diff --git a/debian/patches/keepalive-extensions.patch b/debian/patches/keepalive-extensions.patch
index d8362de70..eab9914f2 100644
--- a/debian/patches/keepalive-extensions.patch
+++ b/debian/patches/keepalive-extensions.patch
@@ -35,7 +35,7 @@ Index: b/readconf.c
35 35
36 { NULL, oBadOption } 36 { NULL, oBadOption }
37 }; 37 };
38@@ -914,6 +917,8 @@ 38@@ -915,6 +918,8 @@
39 goto parse_flag; 39 goto parse_flag;
40 40
41 case oServerAliveInterval: 41 case oServerAliveInterval:
@@ -44,7 +44,7 @@ Index: b/readconf.c
44 intptr = &options->server_alive_interval; 44 intptr = &options->server_alive_interval;
45 goto parse_time; 45 goto parse_time;
46 46
47@@ -1385,8 +1390,13 @@ 47@@ -1386,8 +1391,13 @@
48 options->rekey_limit = 0; 48 options->rekey_limit = 0;
49 if (options->verify_host_key_dns == -1) 49 if (options->verify_host_key_dns == -1)
50 options->verify_host_key_dns = 0; 50 options->verify_host_key_dns = 0;
diff --git a/debian/patches/lintian-symlink-pickiness.patch b/debian/patches/lintian-symlink-pickiness.patch
index 7ee91cce8..12877d32f 100644
--- a/debian/patches/lintian-symlink-pickiness.patch
+++ b/debian/patches/lintian-symlink-pickiness.patch
@@ -9,7 +9,7 @@ Index: b/Makefile.in
9=================================================================== 9===================================================================
10--- a/Makefile.in 10--- a/Makefile.in
11+++ b/Makefile.in 11+++ b/Makefile.in
12@@ -282,9 +282,9 @@ 12@@ -283,9 +283,9 @@
13 $(INSTALL) -m 644 ssh-pkcs11-helper.8.out $(DESTDIR)$(mandir)/$(mansubdir)8/ssh-pkcs11-helper.8 13 $(INSTALL) -m 644 ssh-pkcs11-helper.8.out $(DESTDIR)$(mandir)/$(mansubdir)8/ssh-pkcs11-helper.8
14 $(INSTALL) -m 644 ssh-vulnkey.1.out $(DESTDIR)$(mandir)/$(mansubdir)1/ssh-vulnkey.1 14 $(INSTALL) -m 644 ssh-vulnkey.1.out $(DESTDIR)$(mandir)/$(mansubdir)1/ssh-vulnkey.1
15 -rm -f $(DESTDIR)$(bindir)/slogin 15 -rm -f $(DESTDIR)$(bindir)/slogin
diff --git a/debian/patches/no-openssl-version-check.patch b/debian/patches/no-openssl-version-check.patch
deleted file mode 100644
index d88d0fff0..000000000
--- a/debian/patches/no-openssl-version-check.patch
+++ /dev/null
@@ -1,27 +0,0 @@
1Description: Disable OpenSSL version check
2 OpenSSL's SONAME is sufficient nowadays.
3Author: Philip Hands <phil@hands.com>
4Author: Colin Watson <cjwatson@debian.org>
5Bug-Debian: http://bugs.debian.org/93581
6Bug-Debian: http://bugs.debian.org/664383
7Forwarded: not-needed
8Last-Update: 2012-03-19
9
10Index: b/entropy.c
11===================================================================
12--- a/entropy.c
13+++ b/entropy.c
14@@ -209,13 +209,6 @@
15 #ifndef OPENSSL_PRNG_ONLY
16 unsigned char buf[RANDOM_SEED_SIZE];
17 #endif
18- /*
19- * OpenSSL version numbers: MNNFFPPS: major minor fix patch status
20- * We match major, minor, fix and status (not patch)
21- */
22- if ((SSLeay() ^ OPENSSL_VERSION_NUMBER) & ~0xff0L)
23- fatal("OpenSSL version mismatch. Built against %lx, you "
24- "have %lx", (u_long)OPENSSL_VERSION_NUMBER, SSLeay());
25
26 #ifndef OPENSSL_PRNG_ONLY
27 if (RAND_status() == 1) {
diff --git a/debian/patches/openbsd-docs.patch b/debian/patches/openbsd-docs.patch
index bda5f0c24..59fc441a7 100644
--- a/debian/patches/openbsd-docs.patch
+++ b/debian/patches/openbsd-docs.patch
@@ -34,7 +34,7 @@ Index: b/ssh-keygen.1
34=================================================================== 34===================================================================
35--- a/ssh-keygen.1 35--- a/ssh-keygen.1
36+++ b/ssh-keygen.1 36+++ b/ssh-keygen.1
37@@ -149,9 +149,7 @@ 37@@ -150,9 +150,7 @@
38 .Pa ~/.ssh/id_dsa 38 .Pa ~/.ssh/id_dsa
39 or 39 or
40 .Pa ~/.ssh/id_rsa . 40 .Pa ~/.ssh/id_rsa .
@@ -45,7 +45,7 @@ Index: b/ssh-keygen.1
45 .Pp 45 .Pp
46 Normally this program generates the key and asks for a file in which 46 Normally this program generates the key and asks for a file in which
47 to store the private key. 47 to store the private key.
48@@ -197,9 +195,7 @@ 48@@ -198,9 +196,7 @@
49 For each of the key types (rsa1, rsa, dsa and ecdsa) for which host keys 49 For each of the key types (rsa1, rsa, dsa and ecdsa) for which host keys
50 do not exist, generate the host keys with the default key file path, 50 do not exist, generate the host keys with the default key file path,
51 an empty passphrase, default bits for the key type, and default comment. 51 an empty passphrase, default bits for the key type, and default comment.
@@ -56,7 +56,7 @@ Index: b/ssh-keygen.1
56 .It Fl a Ar trials 56 .It Fl a Ar trials
57 Specifies the number of primality tests to perform when screening DH-GEX 57 Specifies the number of primality tests to perform when screening DH-GEX
58 candidates using the 58 candidates using the
59@@ -535,7 +531,7 @@ 59@@ -544,7 +540,7 @@
60 Valid generator values are 2, 3, and 5. 60 Valid generator values are 2, 3, and 5.
61 .Pp 61 .Pp
62 Screened DH groups may be installed in 62 Screened DH groups may be installed in
@@ -65,7 +65,7 @@ Index: b/ssh-keygen.1
65 It is important that this file contains moduli of a range of bit lengths and 65 It is important that this file contains moduli of a range of bit lengths and
66 that both ends of a connection share common moduli. 66 that both ends of a connection share common moduli.
67 .Sh CERTIFICATES 67 .Sh CERTIFICATES
68@@ -661,7 +657,7 @@ 68@@ -670,7 +666,7 @@
69 where the user wishes to log in using public key authentication. 69 where the user wishes to log in using public key authentication.
70 There is no need to keep the contents of this file secret. 70 There is no need to keep the contents of this file secret.
71 .Pp 71 .Pp
@@ -78,7 +78,7 @@ Index: b/ssh.1
78=================================================================== 78===================================================================
79--- a/ssh.1 79--- a/ssh.1
80+++ b/ssh.1 80+++ b/ssh.1
81@@ -731,6 +731,10 @@ 81@@ -736,6 +736,10 @@
82 .Sx HISTORY 82 .Sx HISTORY
83 section of 83 section of
84 .Xr ssl 8 84 .Xr ssl 8
@@ -102,7 +102,7 @@ Index: b/sshd.8
102 It forks a new 102 It forks a new
103 daemon for each incoming connection. 103 daemon for each incoming connection.
104 The forked daemons handle 104 The forked daemons handle
105@@ -853,7 +853,7 @@ 105@@ -856,7 +856,7 @@
106 .Xr ssh 1 ) . 106 .Xr ssh 1 ) .
107 It should only be writable by root. 107 It should only be writable by root.
108 .Pp 108 .Pp
@@ -111,7 +111,7 @@ Index: b/sshd.8
111 Contains Diffie-Hellman groups used for the "Diffie-Hellman Group Exchange". 111 Contains Diffie-Hellman groups used for the "Diffie-Hellman Group Exchange".
112 The file format is described in 112 The file format is described in
113 .Xr moduli 5 . 113 .Xr moduli 5 .
114@@ -951,7 +951,6 @@ 114@@ -954,7 +954,6 @@
115 .Xr ssh-vulnkey 1 , 115 .Xr ssh-vulnkey 1 ,
116 .Xr chroot 2 , 116 .Xr chroot 2 ,
117 .Xr hosts_access 5 , 117 .Xr hosts_access 5 ,
diff --git a/debian/patches/package-versioning.patch b/debian/patches/package-versioning.patch
index 95444cbd4..64606e2e9 100644
--- a/debian/patches/package-versioning.patch
+++ b/debian/patches/package-versioning.patch
@@ -24,7 +24,7 @@ Index: b/sshd.c
24=================================================================== 24===================================================================
25--- a/sshd.c 25--- a/sshd.c
26+++ b/sshd.c 26+++ b/sshd.c
27@@ -423,7 +423,7 @@ 27@@ -424,7 +424,7 @@
28 minor = PROTOCOL_MINOR_1; 28 minor = PROTOCOL_MINOR_1;
29 } 29 }
30 snprintf(buf, sizeof buf, "SSH-%d.%d-%.100s%s", major, minor, 30 snprintf(buf, sizeof buf, "SSH-%d.%d-%.100s%s", major, minor,
@@ -38,7 +38,7 @@ Index: b/version.h
38--- a/version.h 38--- a/version.h
39+++ b/version.h 39+++ b/version.h
40@@ -3,4 +3,9 @@ 40@@ -3,4 +3,9 @@
41 #define SSH_VERSION "OpenSSH_5.9" 41 #define SSH_VERSION "OpenSSH_6.0"
42 42
43 #define SSH_PORTABLE "p1" 43 #define SSH_PORTABLE "p1"
44-#define SSH_RELEASE SSH_VERSION SSH_PORTABLE 44-#define SSH_RELEASE SSH_VERSION SSH_PORTABLE
diff --git a/debian/patches/quieter-signals.patch b/debian/patches/quieter-signals.patch
index ff41f094d..db2cba1e1 100644
--- a/debian/patches/quieter-signals.patch
+++ b/debian/patches/quieter-signals.patch
@@ -16,7 +16,7 @@ Index: b/clientloop.c
16=================================================================== 16===================================================================
17--- a/clientloop.c 17--- a/clientloop.c
18+++ b/clientloop.c 18+++ b/clientloop.c
19@@ -1619,8 +1619,10 @@ 19@@ -1651,8 +1651,10 @@
20 exit_status = 0; 20 exit_status = 0;
21 } 21 }
22 22
diff --git a/debian/patches/selinux-role.patch b/debian/patches/selinux-role.patch
index b14402199..0d696989a 100644
--- a/debian/patches/selinux-role.patch
+++ b/debian/patches/selinux-role.patch
@@ -108,7 +108,7 @@ Index: b/monitor.c
108 {MONITOR_REQ_AUTH2_READ_BANNER, MON_ONCE, mm_answer_auth2_read_banner}, 108 {MONITOR_REQ_AUTH2_READ_BANNER, MON_ONCE, mm_answer_auth2_read_banner},
109 {MONITOR_REQ_AUTHPASSWORD, MON_AUTH, mm_answer_authpassword}, 109 {MONITOR_REQ_AUTHPASSWORD, MON_AUTH, mm_answer_authpassword},
110 #ifdef USE_PAM 110 #ifdef USE_PAM
111@@ -810,6 +812,7 @@ 111@@ -811,6 +813,7 @@
112 else { 112 else {
113 /* Allow service/style information on the auth context */ 113 /* Allow service/style information on the auth context */
114 monitor_permit(mon_dispatch, MONITOR_REQ_AUTHSERV, 1); 114 monitor_permit(mon_dispatch, MONITOR_REQ_AUTHSERV, 1);
@@ -116,7 +116,7 @@ Index: b/monitor.c
116 monitor_permit(mon_dispatch, MONITOR_REQ_AUTH2_READ_BANNER, 1); 116 monitor_permit(mon_dispatch, MONITOR_REQ_AUTH2_READ_BANNER, 1);
117 } 117 }
118 #ifdef USE_PAM 118 #ifdef USE_PAM
119@@ -842,14 +845,37 @@ 119@@ -843,14 +846,37 @@
120 120
121 authctxt->service = buffer_get_string(m, NULL); 121 authctxt->service = buffer_get_string(m, NULL);
122 authctxt->style = buffer_get_string(m, NULL); 122 authctxt->style = buffer_get_string(m, NULL);
@@ -156,7 +156,7 @@ Index: b/monitor.c
156 return (0); 156 return (0);
157 } 157 }
158 158
159@@ -1437,7 +1463,7 @@ 159@@ -1438,7 +1464,7 @@
160 res = pty_allocate(&s->ptyfd, &s->ttyfd, s->tty, sizeof(s->tty)); 160 res = pty_allocate(&s->ptyfd, &s->ttyfd, s->tty, sizeof(s->tty));
161 if (res == 0) 161 if (res == 0)
162 goto error; 162 goto error;
@@ -256,18 +256,15 @@ Index: b/openbsd-compat/port-linux.c
256 #include "log.h" 256 #include "log.h"
257 #include "xmalloc.h" 257 #include "xmalloc.h"
258 #include "port-linux.h" 258 #include "port-linux.h"
259@@ -58,9 +64,9 @@ 259@@ -58,7 +64,7 @@
260 260
261 /* Return the default security context for the given username */ 261 /* Return the default security context for the given username */
262 static security_context_t 262 static security_context_t
263-ssh_selinux_getctxbyname(char *pwname) 263-ssh_selinux_getctxbyname(char *pwname)
264+ssh_selinux_getctxbyname(char *pwname, const char *role) 264+ssh_selinux_getctxbyname(char *pwname, const char *role)
265 { 265 {
266- security_context_t sc; 266 security_context_t sc = NULL;
267+ security_context_t sc = NULL;
268 char *sename = NULL, *lvl = NULL; 267 char *sename = NULL, *lvl = NULL;
269 int r;
270
271@@ -73,9 +79,16 @@ 268@@ -73,9 +79,16 @@
272 #endif 269 #endif
273 270
@@ -287,7 +284,7 @@ Index: b/openbsd-compat/port-linux.c
287 #endif 284 #endif
288 285
289 if (r != 0) { 286 if (r != 0) {
290@@ -106,7 +119,7 @@ 287@@ -107,7 +120,7 @@
291 288
292 /* Set the execution context to the default for the specified user */ 289 /* Set the execution context to the default for the specified user */
293 void 290 void
@@ -296,7 +293,7 @@ Index: b/openbsd-compat/port-linux.c
296 { 293 {
297 security_context_t user_ctx = NULL; 294 security_context_t user_ctx = NULL;
298 295
299@@ -115,7 +128,7 @@ 296@@ -116,7 +129,7 @@
300 297
301 debug3("%s: setting execution context", __func__); 298 debug3("%s: setting execution context", __func__);
302 299
@@ -305,7 +302,7 @@ Index: b/openbsd-compat/port-linux.c
305 if (setexeccon(user_ctx) != 0) { 302 if (setexeccon(user_ctx) != 0) {
306 switch (security_getenforce()) { 303 switch (security_getenforce()) {
307 case -1: 304 case -1:
308@@ -137,7 +150,7 @@ 305@@ -138,7 +151,7 @@
309 306
310 /* Set the TTY context for the specified user */ 307 /* Set the TTY context for the specified user */
311 void 308 void
@@ -314,7 +311,7 @@ Index: b/openbsd-compat/port-linux.c
314 { 311 {
315 security_context_t new_tty_ctx = NULL; 312 security_context_t new_tty_ctx = NULL;
316 security_context_t user_ctx = NULL; 313 security_context_t user_ctx = NULL;
317@@ -148,7 +161,7 @@ 314@@ -149,7 +162,7 @@
318 315
319 debug3("%s: setting TTY context on %s", __func__, tty); 316 debug3("%s: setting TTY context on %s", __func__, tty);
320 317
@@ -439,7 +436,7 @@ Index: b/sshd.c
439=================================================================== 436===================================================================
440--- a/sshd.c 437--- a/sshd.c
441+++ b/sshd.c 438+++ b/sshd.c
442@@ -730,7 +730,7 @@ 439@@ -734,7 +734,7 @@
443 RAND_seed(rnd, sizeof(rnd)); 440 RAND_seed(rnd, sizeof(rnd));
444 441
445 /* Drop privileges */ 442 /* Drop privileges */
diff --git a/debian/patches/series b/debian/patches/series
index ceeb32499..2c3fdb668 100644
--- a/debian/patches/series
+++ b/debian/patches/series
@@ -40,6 +40,5 @@ auth-log-verbosity.patch
40cross-pkg-config.patch 40cross-pkg-config.patch
41 41
42# Debian-specific configuration 42# Debian-specific configuration
43no-openssl-version-check.patch
44gnome-ssh-askpass2-icon.patch 43gnome-ssh-askpass2-icon.patch
45debian-config.patch 44debian-config.patch
diff --git a/debian/patches/ssh-argv0.patch b/debian/patches/ssh-argv0.patch
index a7750ed23..3cc1272ec 100644
--- a/debian/patches/ssh-argv0.patch
+++ b/debian/patches/ssh-argv0.patch
@@ -11,7 +11,7 @@ Index: b/ssh.1
11=================================================================== 11===================================================================
12--- a/ssh.1 12--- a/ssh.1
13+++ b/ssh.1 13+++ b/ssh.1
14@@ -1411,6 +1411,7 @@ 14@@ -1425,6 +1425,7 @@
15 .Xr sftp 1 , 15 .Xr sftp 1 ,
16 .Xr ssh-add 1 , 16 .Xr ssh-add 1 ,
17 .Xr ssh-agent 1 , 17 .Xr ssh-agent 1 ,
diff --git a/debian/patches/ssh-vulnkey.patch b/debian/patches/ssh-vulnkey.patch
index 4245319c3..d60816d46 100644
--- a/debian/patches/ssh-vulnkey.patch
+++ b/debian/patches/ssh-vulnkey.patch
@@ -39,9 +39,9 @@ Index: b/Makefile.in
39 39
40 LIBSSH_OBJS=acss.o authfd.o authfile.o bufaux.o bufbn.o buffer.o \ 40 LIBSSH_OBJS=acss.o authfd.o authfile.o bufaux.o bufbn.o buffer.o \
41 canohost.o channels.o cipher.o cipher-acss.o cipher-aes.o \ 41 canohost.o channels.o cipher.o cipher-acss.o cipher-aes.o \
42@@ -93,8 +95,8 @@ 42@@ -94,8 +96,8 @@
43 roaming_common.o roaming_serv.o \ 43 sandbox-null.o sandbox-rlimit.o sandbox-systrace.o sandbox-darwin.o \
44 sandbox-null.o sandbox-rlimit.o sandbox-systrace.o sandbox-darwin.o 44 sandbox-seccomp-filter.o
45 45
46-MANPAGES = moduli.5.out scp.1.out ssh-add.1.out ssh-agent.1.out ssh-keygen.1.out ssh-keyscan.1.out ssh.1.out sshd.8.out sftp-server.8.out sftp.1.out ssh-keysign.8.out ssh-pkcs11-helper.8.out sshd_config.5.out ssh_config.5.out 46-MANPAGES = moduli.5.out scp.1.out ssh-add.1.out ssh-agent.1.out ssh-keygen.1.out ssh-keyscan.1.out ssh.1.out sshd.8.out sftp-server.8.out sftp.1.out ssh-keysign.8.out ssh-pkcs11-helper.8.out sshd_config.5.out ssh_config.5.out
47-MANPAGES_IN = moduli.5 scp.1 ssh-add.1 ssh-agent.1 ssh-keygen.1 ssh-keyscan.1 ssh.1 sshd.8 sftp-server.8 sftp.1 ssh-keysign.8 ssh-pkcs11-helper.8 sshd_config.5 ssh_config.5 47-MANPAGES_IN = moduli.5 scp.1 ssh-add.1 ssh-agent.1 ssh-keygen.1 ssh-keyscan.1 ssh.1 sshd.8 sftp-server.8 sftp.1 ssh-keysign.8 ssh-pkcs11-helper.8 sshd_config.5 ssh_config.5
@@ -50,7 +50,7 @@ Index: b/Makefile.in
50 MANTYPE = @MANTYPE@ 50 MANTYPE = @MANTYPE@
51 51
52 CONFIGFILES=sshd_config.out ssh_config.out moduli.out 52 CONFIGFILES=sshd_config.out ssh_config.out moduli.out
53@@ -171,6 +173,9 @@ 53@@ -172,6 +174,9 @@
54 sftp$(EXEEXT): $(LIBCOMPAT) libssh.a sftp.o sftp-client.o sftp-common.o sftp-glob.o progressmeter.o 54 sftp$(EXEEXT): $(LIBCOMPAT) libssh.a sftp.o sftp-client.o sftp-common.o sftp-glob.o progressmeter.o
55 $(LD) -o $@ progressmeter.o sftp.o sftp-client.o sftp-common.o sftp-glob.o $(LDFLAGS) -lssh -lopenbsd-compat $(LIBS) $(LIBEDIT) 55 $(LD) -o $@ progressmeter.o sftp.o sftp-client.o sftp-common.o sftp-glob.o $(LDFLAGS) -lssh -lopenbsd-compat $(LIBS) $(LIBEDIT)
56 56
@@ -60,7 +60,7 @@ Index: b/Makefile.in
60 # test driver for the loginrec code - not built by default 60 # test driver for the loginrec code - not built by default
61 logintest: logintest.o $(LIBCOMPAT) libssh.a loginrec.o 61 logintest: logintest.o $(LIBCOMPAT) libssh.a loginrec.o
62 $(LD) -o $@ logintest.o $(LDFLAGS) loginrec.o -lopenbsd-compat -lssh $(LIBS) 62 $(LD) -o $@ logintest.o $(LDFLAGS) loginrec.o -lopenbsd-compat -lssh $(LIBS)
63@@ -259,6 +264,7 @@ 63@@ -260,6 +265,7 @@
64 $(INSTALL) -m 0755 $(STRIP_OPT) ssh-pkcs11-helper$(EXEEXT) $(DESTDIR)$(SSH_PKCS11_HELPER)$(EXEEXT) 64 $(INSTALL) -m 0755 $(STRIP_OPT) ssh-pkcs11-helper$(EXEEXT) $(DESTDIR)$(SSH_PKCS11_HELPER)$(EXEEXT)
65 $(INSTALL) -m 0755 $(STRIP_OPT) sftp$(EXEEXT) $(DESTDIR)$(bindir)/sftp$(EXEEXT) 65 $(INSTALL) -m 0755 $(STRIP_OPT) sftp$(EXEEXT) $(DESTDIR)$(bindir)/sftp$(EXEEXT)
66 $(INSTALL) -m 0755 $(STRIP_OPT) sftp-server$(EXEEXT) $(DESTDIR)$(SFTP_SERVER)$(EXEEXT) 66 $(INSTALL) -m 0755 $(STRIP_OPT) sftp-server$(EXEEXT) $(DESTDIR)$(SFTP_SERVER)$(EXEEXT)
@@ -68,7 +68,7 @@ Index: b/Makefile.in
68 $(INSTALL) -m 644 ssh.1.out $(DESTDIR)$(mandir)/$(mansubdir)1/ssh.1 68 $(INSTALL) -m 644 ssh.1.out $(DESTDIR)$(mandir)/$(mansubdir)1/ssh.1
69 $(INSTALL) -m 644 scp.1.out $(DESTDIR)$(mandir)/$(mansubdir)1/scp.1 69 $(INSTALL) -m 644 scp.1.out $(DESTDIR)$(mandir)/$(mansubdir)1/scp.1
70 $(INSTALL) -m 644 ssh-add.1.out $(DESTDIR)$(mandir)/$(mansubdir)1/ssh-add.1 70 $(INSTALL) -m 644 ssh-add.1.out $(DESTDIR)$(mandir)/$(mansubdir)1/ssh-add.1
71@@ -273,6 +279,7 @@ 71@@ -274,6 +280,7 @@
72 $(INSTALL) -m 644 sftp-server.8.out $(DESTDIR)$(mandir)/$(mansubdir)8/sftp-server.8 72 $(INSTALL) -m 644 sftp-server.8.out $(DESTDIR)$(mandir)/$(mansubdir)8/sftp-server.8
73 $(INSTALL) -m 644 ssh-keysign.8.out $(DESTDIR)$(mandir)/$(mansubdir)8/ssh-keysign.8 73 $(INSTALL) -m 644 ssh-keysign.8.out $(DESTDIR)$(mandir)/$(mansubdir)8/ssh-keysign.8
74 $(INSTALL) -m 644 ssh-pkcs11-helper.8.out $(DESTDIR)$(mandir)/$(mansubdir)8/ssh-pkcs11-helper.8 74 $(INSTALL) -m 644 ssh-pkcs11-helper.8.out $(DESTDIR)$(mandir)/$(mansubdir)8/ssh-pkcs11-helper.8
@@ -76,7 +76,7 @@ Index: b/Makefile.in
76 -rm -f $(DESTDIR)$(bindir)/slogin 76 -rm -f $(DESTDIR)$(bindir)/slogin
77 ln -s ./ssh$(EXEEXT) $(DESTDIR)$(bindir)/slogin 77 ln -s ./ssh$(EXEEXT) $(DESTDIR)$(bindir)/slogin
78 -rm -f $(DESTDIR)$(mandir)/$(mansubdir)1/slogin.1 78 -rm -f $(DESTDIR)$(mandir)/$(mansubdir)1/slogin.1
79@@ -354,6 +361,7 @@ 79@@ -355,6 +362,7 @@
80 -rm -f $(DESTDIR)$(bindir)/ssh-agent$(EXEEXT) 80 -rm -f $(DESTDIR)$(bindir)/ssh-agent$(EXEEXT)
81 -rm -f $(DESTDIR)$(bindir)/ssh-keygen$(EXEEXT) 81 -rm -f $(DESTDIR)$(bindir)/ssh-keygen$(EXEEXT)
82 -rm -f $(DESTDIR)$(bindir)/ssh-keyscan$(EXEEXT) 82 -rm -f $(DESTDIR)$(bindir)/ssh-keyscan$(EXEEXT)
@@ -84,7 +84,7 @@ Index: b/Makefile.in
84 -rm -f $(DESTDIR)$(bindir)/sftp$(EXEEXT) 84 -rm -f $(DESTDIR)$(bindir)/sftp$(EXEEXT)
85 -rm -f $(DESTDIR)$(sbindir)/sshd$(EXEEXT) 85 -rm -f $(DESTDIR)$(sbindir)/sshd$(EXEEXT)
86 -rm -r $(DESTDIR)$(SFTP_SERVER)$(EXEEXT) 86 -rm -r $(DESTDIR)$(SFTP_SERVER)$(EXEEXT)
87@@ -366,6 +374,7 @@ 87@@ -367,6 +375,7 @@
88 -rm -f $(DESTDIR)$(mandir)/$(mansubdir)1/ssh-keygen.1 88 -rm -f $(DESTDIR)$(mandir)/$(mansubdir)1/ssh-keygen.1
89 -rm -f $(DESTDIR)$(mandir)/$(mansubdir)1/sftp.1 89 -rm -f $(DESTDIR)$(mandir)/$(mansubdir)1/sftp.1
90 -rm -f $(DESTDIR)$(mandir)/$(mansubdir)1/ssh-keyscan.1 90 -rm -f $(DESTDIR)$(mandir)/$(mansubdir)1/ssh-keyscan.1
@@ -196,7 +196,7 @@ Index: b/auth2-pubkey.c
196=================================================================== 196===================================================================
197--- a/auth2-pubkey.c 197--- a/auth2-pubkey.c
198+++ b/auth2-pubkey.c 198+++ b/auth2-pubkey.c
199@@ -439,9 +439,10 @@ 199@@ -440,9 +440,10 @@
200 u_int success, i; 200 u_int success, i;
201 char *file; 201 char *file;
202 202
@@ -418,7 +418,7 @@ Index: b/readconf.c
418 { "rsaauthentication", oRSAAuthentication }, 418 { "rsaauthentication", oRSAAuthentication },
419 { "pubkeyauthentication", oPubkeyAuthentication }, 419 { "pubkeyauthentication", oPubkeyAuthentication },
420 { "dsaauthentication", oPubkeyAuthentication }, /* alias */ 420 { "dsaauthentication", oPubkeyAuthentication }, /* alias */
421@@ -489,6 +491,10 @@ 421@@ -490,6 +492,10 @@
422 intptr = &options->challenge_response_authentication; 422 intptr = &options->challenge_response_authentication;
423 goto parse_flag; 423 goto parse_flag;
424 424
@@ -429,7 +429,7 @@ Index: b/readconf.c
429 case oGssAuthentication: 429 case oGssAuthentication:
430 intptr = &options->gss_authentication; 430 intptr = &options->gss_authentication;
431 goto parse_flag; 431 goto parse_flag;
432@@ -1180,6 +1186,7 @@ 432@@ -1181,6 +1187,7 @@
433 options->kbd_interactive_devices = NULL; 433 options->kbd_interactive_devices = NULL;
434 options->rhosts_rsa_authentication = -1; 434 options->rhosts_rsa_authentication = -1;
435 options->hostbased_authentication = -1; 435 options->hostbased_authentication = -1;
@@ -437,7 +437,7 @@ Index: b/readconf.c
437 options->batch_mode = -1; 437 options->batch_mode = -1;
438 options->check_host_ip = -1; 438 options->check_host_ip = -1;
439 options->strict_host_key_checking = -1; 439 options->strict_host_key_checking = -1;
440@@ -1290,6 +1297,8 @@ 440@@ -1291,6 +1298,8 @@
441 options->rhosts_rsa_authentication = 0; 441 options->rhosts_rsa_authentication = 0;
442 if (options->hostbased_authentication == -1) 442 if (options->hostbased_authentication == -1)
443 options->hostbased_authentication = 0; 443 options->hostbased_authentication = 0;
@@ -450,7 +450,7 @@ Index: b/readconf.h
450=================================================================== 450===================================================================
451--- a/readconf.h 451--- a/readconf.h
452+++ b/readconf.h 452+++ b/readconf.h
453@@ -58,6 +58,7 @@ 453@@ -59,6 +59,7 @@
454 int kbd_interactive_authentication; /* Try keyboard-interactive auth. */ 454 int kbd_interactive_authentication; /* Try keyboard-interactive auth. */
455 char *kbd_interactive_devices; /* Keyboard-interactive auth devices. */ 455 char *kbd_interactive_devices; /* Keyboard-interactive auth devices. */
456 int zero_knowledge_password_authentication; /* Try jpake */ 456 int zero_knowledge_password_authentication; /* Try jpake */
@@ -542,7 +542,7 @@ Index: b/ssh-add.1
542 The options are as follows: 542 The options are as follows:
543 .Bl -tag -width Ds 543 .Bl -tag -width Ds
544 .It Fl c 544 .It Fl c
545@@ -183,6 +187,7 @@ 545@@ -186,6 +190,7 @@
546 .Xr ssh 1 , 546 .Xr ssh 1 ,
547 .Xr ssh-agent 1 , 547 .Xr ssh-agent 1 ,
548 .Xr ssh-keygen 1 , 548 .Xr ssh-keygen 1 ,
@@ -555,12 +555,12 @@ Index: b/ssh-add.c
555--- a/ssh-add.c 555--- a/ssh-add.c
556+++ b/ssh-add.c 556+++ b/ssh-add.c
557@@ -142,7 +142,7 @@ 557@@ -142,7 +142,7 @@
558 add_file(AuthenticationConnection *ac, const char *filename) 558 add_file(AuthenticationConnection *ac, const char *filename, int key_only)
559 { 559 {
560 Key *private, *cert; 560 Key *private, *cert;
561- char *comment = NULL; 561- char *comment = NULL;
562+ char *comment = NULL, *fp; 562+ char *comment = NULL, *fp;
563 char msg[1024], *certpath; 563 char msg[1024], *certpath = NULL;
564 int fd, perms_ok, ret = -1; 564 int fd, perms_ok, ret = -1;
565 Buffer keyblob; 565 Buffer keyblob;
566@@ -218,6 +218,14 @@ 566@@ -218,6 +218,14 @@
@@ -576,13 +576,13 @@ Index: b/ssh-add.c
576+ return -1; 576+ return -1;
577+ } 577+ }
578 578
579 579 /* Skip trying to load the cert if requested */
580 /* Now try to add the certificate flavour too */ 580 if (key_only)
581Index: b/ssh-keygen.1 581Index: b/ssh-keygen.1
582=================================================================== 582===================================================================
583--- a/ssh-keygen.1 583--- a/ssh-keygen.1
584+++ b/ssh-keygen.1 584+++ b/ssh-keygen.1
585@@ -670,6 +670,7 @@ 585@@ -679,6 +679,7 @@
586 .Xr ssh 1 , 586 .Xr ssh 1 ,
587 .Xr ssh-add 1 , 587 .Xr ssh-add 1 ,
588 .Xr ssh-agent 1 , 588 .Xr ssh-agent 1 ,
@@ -1233,7 +1233,7 @@ Index: b/ssh.1
1233=================================================================== 1233===================================================================
1234--- a/ssh.1 1234--- a/ssh.1
1235+++ b/ssh.1 1235+++ b/ssh.1
1236@@ -1407,6 +1407,7 @@ 1236@@ -1421,6 +1421,7 @@
1237 .Xr ssh-agent 1 , 1237 .Xr ssh-agent 1 ,
1238 .Xr ssh-keygen 1 , 1238 .Xr ssh-keygen 1 ,
1239 .Xr ssh-keyscan 1 , 1239 .Xr ssh-keyscan 1 ,
@@ -1245,7 +1245,7 @@ Index: b/ssh.c
1245=================================================================== 1245===================================================================
1246--- a/ssh.c 1246--- a/ssh.c
1247+++ b/ssh.c 1247+++ b/ssh.c
1248@@ -1476,7 +1476,7 @@ 1248@@ -1492,7 +1492,7 @@
1249 static void 1249 static void
1250 load_public_identity_files(void) 1250 load_public_identity_files(void)
1251 { 1251 {
@@ -1254,7 +1254,7 @@ Index: b/ssh.c
1254 char *pwdir = NULL, *pwname = NULL; 1254 char *pwdir = NULL, *pwname = NULL;
1255 int i = 0; 1255 int i = 0;
1256 Key *public; 1256 Key *public;
1257@@ -1533,6 +1533,22 @@ 1257@@ -1549,6 +1549,22 @@
1258 public = key_load_public(filename, NULL); 1258 public = key_load_public(filename, NULL);
1259 debug("identity file %s type %d", filename, 1259 debug("identity file %s type %d", filename,
1260 public ? public->type : -1); 1260 public ? public->type : -1);
@@ -1331,7 +1331,7 @@ Index: b/sshd.8
1331=================================================================== 1331===================================================================
1332--- a/sshd.8 1332--- a/sshd.8
1333+++ b/sshd.8 1333+++ b/sshd.8
1334@@ -948,6 +948,7 @@ 1334@@ -951,6 +951,7 @@
1335 .Xr ssh-agent 1 , 1335 .Xr ssh-agent 1 ,
1336 .Xr ssh-keygen 1 , 1336 .Xr ssh-keygen 1 ,
1337 .Xr ssh-keyscan 1 , 1337 .Xr ssh-keyscan 1 ,
@@ -1343,7 +1343,7 @@ Index: b/sshd.c
1343=================================================================== 1343===================================================================
1344--- a/sshd.c 1344--- a/sshd.c
1345+++ b/sshd.c 1345+++ b/sshd.c
1346@@ -1598,6 +1598,11 @@ 1346@@ -1602,6 +1602,11 @@
1347 sensitive_data.host_keys[i] = NULL; 1347 sensitive_data.host_keys[i] = NULL;
1348 continue; 1348 continue;
1349 } 1349 }
diff --git a/debian/patches/ssh1-keepalive.patch b/debian/patches/ssh1-keepalive.patch
index d5a7fe07a..2acf9704f 100644
--- a/debian/patches/ssh1-keepalive.patch
+++ b/debian/patches/ssh1-keepalive.patch
@@ -7,7 +7,7 @@ Index: b/clientloop.c
7=================================================================== 7===================================================================
8--- a/clientloop.c 8--- a/clientloop.c
9+++ b/clientloop.c 9+++ b/clientloop.c
10@@ -545,16 +545,21 @@ 10@@ -565,16 +565,21 @@
11 static void 11 static void
12 server_alive_check(void) 12 server_alive_check(void)
13 { 13 {
@@ -38,7 +38,7 @@ Index: b/clientloop.c
38 } 38 }
39 39
40 /* 40 /*
41@@ -614,7 +619,7 @@ 41@@ -634,7 +639,7 @@
42 */ 42 */
43 43
44 timeout_secs = INT_MAX; /* we use INT_MAX to mean no timeout */ 44 timeout_secs = INT_MAX; /* we use INT_MAX to mean no timeout */
diff --git a/debian/patches/syslog-level-silent.patch b/debian/patches/syslog-level-silent.patch
index 90ddca4ad..07e2974aa 100644
--- a/debian/patches/syslog-level-silent.patch
+++ b/debian/patches/syslog-level-silent.patch
@@ -26,7 +26,7 @@ Index: b/ssh.c
26=================================================================== 26===================================================================
27--- a/ssh.c 27--- a/ssh.c
28+++ b/ssh.c 28+++ b/ssh.c
29@@ -678,7 +678,7 @@ 29@@ -680,7 +680,7 @@
30 /* Do not allocate a tty if stdin is not a tty. */ 30 /* Do not allocate a tty if stdin is not a tty. */
31 if ((!isatty(fileno(stdin)) || stdin_null_flag) && 31 if ((!isatty(fileno(stdin)) || stdin_null_flag) &&
32 options.request_tty != REQUEST_TTY_FORCE) { 32 options.request_tty != REQUEST_TTY_FORCE) {
diff --git a/debian/patches/user-group-modes.patch b/debian/patches/user-group-modes.patch
index 01ba05526..8e4ee3eb1 100644
--- a/debian/patches/user-group-modes.patch
+++ b/debian/patches/user-group-modes.patch
@@ -24,7 +24,7 @@ Index: b/readconf.c
24 24
25 #include "xmalloc.h" 25 #include "xmalloc.h"
26 #include "ssh.h" 26 #include "ssh.h"
27@@ -1131,8 +1133,7 @@ 27@@ -1132,8 +1134,7 @@
28 28
29 if (fstat(fileno(f), &sb) == -1) 29 if (fstat(fileno(f), &sb) == -1)
30 fatal("fstat %s: %s", filename, strerror(errno)); 30 fatal("fstat %s: %s", filename, strerror(errno));
@@ -38,7 +38,7 @@ Index: b/ssh.1
38=================================================================== 38===================================================================
39--- a/ssh.1 39--- a/ssh.1
40+++ b/ssh.1 40+++ b/ssh.1
41@@ -1298,6 +1298,8 @@ 41@@ -1312,6 +1312,8 @@
42 .Xr ssh_config 5 . 42 .Xr ssh_config 5 .
43 Because of the potential for abuse, this file must have strict permissions: 43 Because of the potential for abuse, this file must have strict permissions:
44 read/write for the user, and not accessible by others. 44 read/write for the user, and not accessible by others.
diff --git a/defines.h b/defines.h
index e4ccc5407..53f83a142 100644
--- a/defines.h
+++ b/defines.h
@@ -25,7 +25,7 @@
25#ifndef _DEFINES_H 25#ifndef _DEFINES_H
26#define _DEFINES_H 26#define _DEFINES_H
27 27
28/* $Id: defines.h,v 1.167 2011/06/03 01:17:49 tim Exp $ */ 28/* $Id: defines.h,v 1.169 2012/02/15 04:13:06 tim Exp $ */
29 29
30 30
31/* Constants */ 31/* Constants */
@@ -87,6 +87,12 @@ enum
87# define IPTOS_DSCP_EF 0xb8 87# define IPTOS_DSCP_EF 0xb8
88#endif /* IPTOS_DSCP_EF */ 88#endif /* IPTOS_DSCP_EF */
89 89
90#ifndef PATH_MAX
91# ifdef _POSIX_PATH_MAX
92# define PATH_MAX _POSIX_PATH_MAX
93# endif
94#endif
95
90#ifndef MAXPATHLEN 96#ifndef MAXPATHLEN
91# ifdef PATH_MAX 97# ifdef PATH_MAX
92# define MAXPATHLEN PATH_MAX 98# define MAXPATHLEN PATH_MAX
@@ -99,12 +105,6 @@ enum
99# endif /* PATH_MAX */ 105# endif /* PATH_MAX */
100#endif /* MAXPATHLEN */ 106#endif /* MAXPATHLEN */
101 107
102#ifndef PATH_MAX
103# ifdef _POSIX_PATH_MAX
104# define PATH_MAX _POSIX_PATH_MAX
105# endif
106#endif
107
108#if defined(HAVE_DECL_MAXSYMLINKS) && HAVE_DECL_MAXSYMLINKS == 0 108#if defined(HAVE_DECL_MAXSYMLINKS) && HAVE_DECL_MAXSYMLINKS == 0
109# define MAXSYMLINKS 5 109# define MAXSYMLINKS 5
110#endif 110#endif
@@ -194,11 +194,7 @@ typedef unsigned int u_int;
194#endif 194#endif
195 195
196#ifndef HAVE_INTXX_T 196#ifndef HAVE_INTXX_T
197# if (SIZEOF_CHAR == 1) 197typedef signed char int8_t;
198typedef char int8_t;
199# else
200# error "8 bit int type not found."
201# endif
202# if (SIZEOF_SHORT_INT == 2) 198# if (SIZEOF_SHORT_INT == 2)
203typedef short int int16_t; 199typedef short int int16_t;
204# else 200# else
diff --git a/dh.c b/dh.c
index b9029d867..d943ca1e1 100644
--- a/dh.c
+++ b/dh.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: dh.c,v 1.48 2009/10/01 11:37:33 grunk Exp $ */ 1/* $OpenBSD: dh.c,v 1.49 2011/12/07 05:44:38 djm Exp $ */
2/* 2/*
3 * Copyright (c) 2000 Niels Provos. All rights reserved. 3 * Copyright (c) 2000 Niels Provos. All rights reserved.
4 * 4 *
@@ -236,6 +236,8 @@ dh_gen_key(DH *dh, int need)
236{ 236{
237 int i, bits_set, tries = 0; 237 int i, bits_set, tries = 0;
238 238
239 if (need < 0)
240 fatal("dh_gen_key: need < 0");
239 if (dh->p == NULL) 241 if (dh->p == NULL)
240 fatal("dh_gen_key: dh->p == NULL"); 242 fatal("dh_gen_key: dh->p == NULL");
241 if (need > INT_MAX / 2 || 2 * need >= BN_num_bits(dh->p)) 243 if (need > INT_MAX / 2 || 2 * need >= BN_num_bits(dh->p))
diff --git a/entropy.c b/entropy.c
index 2aee2d917..2d483b391 100644
--- a/entropy.c
+++ b/entropy.c
@@ -209,6 +209,18 @@ seed_rng(void)
209#ifndef OPENSSL_PRNG_ONLY 209#ifndef OPENSSL_PRNG_ONLY
210 unsigned char buf[RANDOM_SEED_SIZE]; 210 unsigned char buf[RANDOM_SEED_SIZE];
211#endif 211#endif
212 /*
213 * OpenSSL version numbers: MNNFFPPS: major minor fix patch status
214 * We match major, minor, fix and status (not patch) for <1.0.0.
215 * After that, we acceptable compatible fix versions (so we
216 * allow 1.0.1 to work with 1.0.0). Going backwards is only allowed
217 * within a patch series.
218 */
219 u_long version_mask = SSLeay() >= 0x1000000f ? ~0xffff0L : ~0xff0L;
220 if (((SSLeay() ^ OPENSSL_VERSION_NUMBER) & version_mask) ||
221 (SSLeay() >> 12) < (OPENSSL_VERSION_NUMBER >> 12))
222 fatal("OpenSSL version mismatch. Built against %lx, you "
223 "have %lx", (u_long)OPENSSL_VERSION_NUMBER, SSLeay());
212 224
213#ifndef OPENSSL_PRNG_ONLY 225#ifndef OPENSSL_PRNG_ONLY
214 if (RAND_status() == 1) { 226 if (RAND_status() == 1) {
diff --git a/entropy.h b/entropy.h
index ec1ebcc57..c3d78dbad 100644
--- a/entropy.h
+++ b/entropy.h
@@ -22,7 +22,7 @@
22 * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 22 * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
23 */ 23 */
24 24
25/* $Id: entropy.h,v 1.5 2005/09/27 12:46:32 dtucker Exp $ */ 25/* $Id: entropy.h,v 1.6 2011/09/09 01:29:41 dtucker Exp $ */
26 26
27#ifndef _RANDOMS_H 27#ifndef _RANDOMS_H
28#define _RANDOMS_H 28#define _RANDOMS_H
@@ -30,7 +30,6 @@
30#include "buffer.h" 30#include "buffer.h"
31 31
32void seed_rng(void); 32void seed_rng(void);
33void init_rng(void);
34 33
35void rexec_send_rng_seed(Buffer *); 34void rexec_send_rng_seed(Buffer *);
36void rexec_recv_rng_seed(Buffer *); 35void rexec_recv_rng_seed(Buffer *);
diff --git a/key.c b/key.c
index fc65c2948..3a652b9af 100644
--- a/key.c
+++ b/key.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: key.c,v 1.97 2011/05/17 07:13:31 djm Exp $ */ 1/* $OpenBSD: key.c,v 1.98 2011/10/18 04:58:26 djm Exp $ */
2/* 2/*
3 * read_bignum(): 3 * read_bignum():
4 * Copyright (c) 1995 Tatu Ylonen <ylo@cs.hut.fi>, Espoo, Finland 4 * Copyright (c) 1995 Tatu Ylonen <ylo@cs.hut.fi>, Espoo, Finland
@@ -1360,11 +1360,6 @@ cert_parse(Buffer *b, Key *key, const u_char *blob, u_int blen)
1360 goto out; 1360 goto out;
1361 } 1361 }
1362 1362
1363 if (kidlen != strlen(key->cert->key_id)) {
1364 error("%s: key ID contains \\0 character", __func__);
1365 goto out;
1366 }
1367
1368 /* Signature is left in the buffer so we can calculate this length */ 1363 /* Signature is left in the buffer so we can calculate this length */
1369 signed_len = buffer_len(&key->cert->certblob) - buffer_len(b); 1364 signed_len = buffer_len(&key->cert->certblob) - buffer_len(b);
1370 1365
diff --git a/mac.c b/mac.c
index eef50f48d..332d3c621 100644
--- a/mac.c
+++ b/mac.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: mac.c,v 1.16 2011/08/02 01:22:11 djm Exp $ */ 1/* $OpenBSD: mac.c,v 1.17 2011/12/02 00:43:57 djm Exp $ */
2/* 2/*
3 * Copyright (c) 2001 Markus Friedl. All rights reserved. 3 * Copyright (c) 2001 Markus Friedl. All rights reserved.
4 * 4 *
@@ -44,6 +44,8 @@
44 44
45#include "umac.h" 45#include "umac.h"
46 46
47#include "openbsd-compat/openssl-compat.h"
48
47#define SSH_EVP 1 /* OpenSSL EVP-based MAC */ 49#define SSH_EVP 1 /* OpenSSL EVP-based MAC */
48#define SSH_UMAC 2 /* UMAC (not integrated with OpenSSL) */ 50#define SSH_UMAC 2 /* UMAC (not integrated with OpenSSL) */
49 51
@@ -116,6 +118,7 @@ mac_init(Mac *mac)
116 case SSH_EVP: 118 case SSH_EVP:
117 if (mac->evp_md == NULL) 119 if (mac->evp_md == NULL)
118 return -1; 120 return -1;
121 HMAC_CTX_init(&mac->evp_ctx);
119 HMAC_Init(&mac->evp_ctx, mac->key, mac->key_len, mac->evp_md); 122 HMAC_Init(&mac->evp_ctx, mac->key, mac->key_len, mac->evp_md);
120 return 0; 123 return 0;
121 case SSH_UMAC: 124 case SSH_UMAC:
diff --git a/misc.c b/misc.c
index 1814ae3af..ddff00e52 100644
--- a/misc.c
+++ b/misc.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: misc.c,v 1.85 2011/03/29 18:54:17 stevesk Exp $ */ 1/* $OpenBSD: misc.c,v 1.86 2011/09/05 05:59:08 djm Exp $ */
2/* 2/*
3 * Copyright (c) 2000 Markus Friedl. All rights reserved. 3 * Copyright (c) 2000 Markus Friedl. All rights reserved.
4 * Copyright (c) 2005,2006 Damien Miller. All rights reserved. 4 * Copyright (c) 2005,2006 Damien Miller. All rights reserved.
@@ -991,7 +991,7 @@ static const struct {
991 { "af11", IPTOS_DSCP_AF11 }, 991 { "af11", IPTOS_DSCP_AF11 },
992 { "af12", IPTOS_DSCP_AF12 }, 992 { "af12", IPTOS_DSCP_AF12 },
993 { "af13", IPTOS_DSCP_AF13 }, 993 { "af13", IPTOS_DSCP_AF13 },
994 { "af14", IPTOS_DSCP_AF21 }, 994 { "af21", IPTOS_DSCP_AF21 },
995 { "af22", IPTOS_DSCP_AF22 }, 995 { "af22", IPTOS_DSCP_AF22 },
996 { "af23", IPTOS_DSCP_AF23 }, 996 { "af23", IPTOS_DSCP_AF23 },
997 { "af31", IPTOS_DSCP_AF31 }, 997 { "af31", IPTOS_DSCP_AF31 },
diff --git a/moduli b/moduli
index 65d2814a6..f406ad31a 100644
--- a/moduli
+++ b/moduli
@@ -1,188 +1,181 @@
1# $OpenBSD: moduli,v 1.4 2008/01/01 08:51:20 dtucker Exp $ 1# $OpenBSD: moduli,v 1.6 2011/11/04 00:09:39 dtucker Exp $
2# Time Type Tests Tries Size Generator Modulus 2# Time Type Tests Tries Size Generator Modulus
320060827013849 2 6 100 1023 2 DE49FC9069994C379D2B6563EFD37EFAE6785EEB1DD0A12B090AAC272B22DF8C64A4A2AB7B99CE0B77A9A52E0833D52D53B258CEDFFD175DC8A3766A9B9807362646DC9215628C3F4AF0E08D00AB60A3B9E55BAE47E82651DA0C15A27355DDB06365CAE1DDDE4C0C97DC9942FD65E9867FA50E72E1C785411EDD28DE261778F3 320111016112852 2 6 100 1023 2 FB9AFEB297524D1A7A34A4B67CEF09332DE1CB05711182210425A05D3576E75BEB3A3D3CC99389609E5434DBC6CFF6ECAD6B54F4351C4D0BAB3BEDD2AE936AFD22226C62254B8C8C0ED8189C0CC54634956F93600351610A3EAF60C0FDBCD61384FB161BE50E0F0BB0F1AC522044E44361870D6A2BC871BC94B529EAC20B3343
420060827013906 2 6 100 1023 2 DE49FC9069994C379D2B6563EFD37EFAE6785EEB1DD0A12B090AAC272B22DF8C64A4A2AB7B99CE0B77A9A52E0833D52D53B258CEDFFD175DC8A3766A9B9807362646DC9215628C3F4AF0E08D00AB60A3B9E55BAE47E82651DA0C15A27355DDB06365CAE1DDDE4C0C97DC9942FD65E9867FA50E72E1C785411EDD28DE261CC47B 420111016112853 2 6 100 1023 2 FB9AFEB297524D1A7A34A4B67CEF09332DE1CB05711182210425A05D3576E75BEB3A3D3CC99389609E5434DBC6CFF6ECAD6B54F4351C4D0BAB3BEDD2AE936AFD22226C62254B8C8C0ED8189C0CC54634956F93600351610A3EAF60C0FDBCD61384FB161BE50E0F0BB0F1AC522044E44361870D6A2BC871BC94B529EAC20E815B
520060827013924 2 6 100 1023 2 DE49FC9069994C379D2B6563EFD37EFAE6785EEB1DD0A12B090AAC272B22DF8C64A4A2AB7B99CE0B77A9A52E0833D52D53B258CEDFFD175DC8A3766A9B9807362646DC9215628C3F4AF0E08D00AB60A3B9E55BAE47E82651DA0C15A27355DDB06365CAE1DDDE4C0C97DC9942FD65E9867FA50E72E1C785411EDD28DE2621AFA3 520111016112857 2 6 100 1023 5 FB9AFEB297524D1A7A34A4B67CEF09332DE1CB05711182210425A05D3576E75BEB3A3D3CC99389609E5434DBC6CFF6ECAD6B54F4351C4D0BAB3BEDD2AE936AFD22226C62254B8C8C0ED8189C0CC54634956F93600351610A3EAF60C0FDBCD61384FB161BE50E0F0BB0F1AC522044E44361870D6A2BC871BC94B529EAC227B937
620060827014045 2 6 100 1023 2 DE49FC9069994C379D2B6563EFD37EFAE6785EEB1DD0A12B090AAC272B22DF8C64A4A2AB7B99CE0B77A9A52E0833D52D53B258CEDFFD175DC8A3766A9B9807362646DC9215628C3F4AF0E08D00AB60A3B9E55BAE47E82651DA0C15A27355DDB06365CAE1DDDE4C0C97DC9942FD65E9867FA50E72E1C785411EDD28DE26551B8B 620111016112858 2 6 100 1023 5 FB9AFEB297524D1A7A34A4B67CEF09332DE1CB05711182210425A05D3576E75BEB3A3D3CC99389609E5434DBC6CFF6ECAD6B54F4351C4D0BAB3BEDD2AE936AFD22226C62254B8C8C0ED8189C0CC54634956F93600351610A3EAF60C0FDBCD61384FB161BE50E0F0BB0F1AC522044E44361870D6A2BC871BC94B529EAC22951DF
720060827014056 2 6 100 1023 5 DE49FC9069994C379D2B6563EFD37EFAE6785EEB1DD0A12B090AAC272B22DF8C64A4A2AB7B99CE0B77A9A52E0833D52D53B258CEDFFD175DC8A3766A9B9807362646DC9215628C3F4AF0E08D00AB60A3B9E55BAE47E82651DA0C15A27355DDB06365CAE1DDDE4C0C97DC9942FD65E9867FA50E72E1C785411EDD28DE26556A27 720111016112901 2 6 100 1023 5 FB9AFEB297524D1A7A34A4B67CEF09332DE1CB05711182210425A05D3576E75BEB3A3D3CC99389609E5434DBC6CFF6ECAD6B54F4351C4D0BAB3BEDD2AE936AFD22226C62254B8C8C0ED8189C0CC54634956F93600351610A3EAF60C0FDBCD61384FB161BE50E0F0BB0F1AC522044E44361870D6A2BC871BC94B529EAC232013F
820060827014115 2 6 100 1023 2 DE49FC9069994C379D2B6563EFD37EFAE6785EEB1DD0A12B090AAC272B22DF8C64A4A2AB7B99CE0B77A9A52E0833D52D53B258CEDFFD175DC8A3766A9B9807362646DC9215628C3F4AF0E08D00AB60A3B9E55BAE47E82651DA0C15A27355DDB06365CAE1DDDE4C0C97DC9942FD65E9867FA50E72E1C785411EDD28DE265B7273 820111016112907 2 6 100 1023 2 FB9AFEB297524D1A7A34A4B67CEF09332DE1CB05711182210425A05D3576E75BEB3A3D3CC99389609E5434DBC6CFF6ECAD6B54F4351C4D0BAB3BEDD2AE936AFD22226C62254B8C8C0ED8189C0CC54634956F93600351610A3EAF60C0FDBCD61384FB161BE50E0F0BB0F1AC522044E44361870D6A2BC871BC94B529EAC25EA68B
920060827014137 2 6 100 1023 5 DE49FC9069994C379D2B6563EFD37EFAE6785EEB1DD0A12B090AAC272B22DF8C64A4A2AB7B99CE0B77A9A52E0833D52D53B258CEDFFD175DC8A3766A9B9807362646DC9215628C3F4AF0E08D00AB60A3B9E55BAE47E82651DA0C15A27355DDB06365CAE1DDDE4C0C97DC9942FD65E9867FA50E72E1C785411EDD28DE26644D77 920111016112910 2 6 100 1023 2 FB9AFEB297524D1A7A34A4B67CEF09332DE1CB05711182210425A05D3576E75BEB3A3D3CC99389609E5434DBC6CFF6ECAD6B54F4351C4D0BAB3BEDD2AE936AFD22226C62254B8C8C0ED8189C0CC54634956F93600351610A3EAF60C0FDBCD61384FB161BE50E0F0BB0F1AC522044E44361870D6A2BC871BC94B529EAC26E9CA3
1020060827014203 2 6 100 1023 2 DE49FC9069994C379D2B6563EFD37EFAE6785EEB1DD0A12B090AAC272B22DF8C64A4A2AB7B99CE0B77A9A52E0833D52D53B258CEDFFD175DC8A3766A9B9807362646DC9215628C3F4AF0E08D00AB60A3B9E55BAE47E82651DA0C15A27355DDB06365CAE1DDDE4C0C97DC9942FD65E9867FA50E72E1C785411EDD28DE26717773 1020111016112912 2 6 100 1023 5 FB9AFEB297524D1A7A34A4B67CEF09332DE1CB05711182210425A05D3576E75BEB3A3D3CC99389609E5434DBC6CFF6ECAD6B54F4351C4D0BAB3BEDD2AE936AFD22226C62254B8C8C0ED8189C0CC54634956F93600351610A3EAF60C0FDBCD61384FB161BE50E0F0BB0F1AC522044E44361870D6A2BC871BC94B529EAC26F5C7F
1120060827014214 2 6 100 1023 2 DE49FC9069994C379D2B6563EFD37EFAE6785EEB1DD0A12B090AAC272B22DF8C64A4A2AB7B99CE0B77A9A52E0833D52D53B258CEDFFD175DC8A3766A9B9807362646DC9215628C3F4AF0E08D00AB60A3B9E55BAE47E82651DA0C15A27355DDB06365CAE1DDDE4C0C97DC9942FD65E9867FA50E72E1C785411EDD28DE26722EBB 1120111016112915 2 6 100 1023 2 FB9AFEB297524D1A7A34A4B67CEF09332DE1CB05711182210425A05D3576E75BEB3A3D3CC99389609E5434DBC6CFF6ECAD6B54F4351C4D0BAB3BEDD2AE936AFD22226C62254B8C8C0ED8189C0CC54634956F93600351610A3EAF60C0FDBCD61384FB161BE50E0F0BB0F1AC522044E44361870D6A2BC871BC94B529EAC27EC0F3
1220060827014312 2 6 100 1023 2 DE49FC9069994C379D2B6563EFD37EFAE6785EEB1DD0A12B090AAC272B22DF8C64A4A2AB7B99CE0B77A9A52E0833D52D53B258CEDFFD175DC8A3766A9B9807362646DC9215628C3F4AF0E08D00AB60A3B9E55BAE47E82651DA0C15A27355DDB06365CAE1DDDE4C0C97DC9942FD65E9867FA50E72E1C785411EDD28DE26961C8B 1220111016112918 2 6 100 1023 2 FB9AFEB297524D1A7A34A4B67CEF09332DE1CB05711182210425A05D3576E75BEB3A3D3CC99389609E5434DBC6CFF6ECAD6B54F4351C4D0BAB3BEDD2AE936AFD22226C62254B8C8C0ED8189C0CC54634956F93600351610A3EAF60C0FDBCD61384FB161BE50E0F0BB0F1AC522044E44361870D6A2BC871BC94B529EAC28E4883
1320060827014407 2 6 100 1023 5 DE49FC9069994C379D2B6563EFD37EFAE6785EEB1DD0A12B090AAC272B22DF8C64A4A2AB7B99CE0B77A9A52E0833D52D53B258CEDFFD175DC8A3766A9B9807362646DC9215628C3F4AF0E08D00AB60A3B9E55BAE47E82651DA0C15A27355DDB06365CAE1DDDE4C0C97DC9942FD65E9867FA50E72E1C785411EDD28DE26BA7BBF 1320111016112919 2 6 100 1023 2 FB9AFEB297524D1A7A34A4B67CEF09332DE1CB05711182210425A05D3576E75BEB3A3D3CC99389609E5434DBC6CFF6ECAD6B54F4351C4D0BAB3BEDD2AE936AFD22226C62254B8C8C0ED8189C0CC54634956F93600351610A3EAF60C0FDBCD61384FB161BE50E0F0BB0F1AC522044E44361870D6A2BC871BC94B529EAC293907B
1420060827014418 2 6 100 1023 5 DE49FC9069994C379D2B6563EFD37EFAE6785EEB1DD0A12B090AAC272B22DF8C64A4A2AB7B99CE0B77A9A52E0833D52D53B258CEDFFD175DC8A3766A9B9807362646DC9215628C3F4AF0E08D00AB60A3B9E55BAE47E82651DA0C15A27355DDB06365CAE1DDDE4C0C97DC9942FD65E9867FA50E72E1C785411EDD28DE26BAC107 1420111016112920 2 6 100 1023 2 FB9AFEB297524D1A7A34A4B67CEF09332DE1CB05711182210425A05D3576E75BEB3A3D3CC99389609E5434DBC6CFF6ECAD6B54F4351C4D0BAB3BEDD2AE936AFD22226C62254B8C8C0ED8189C0CC54634956F93600351610A3EAF60C0FDBCD61384FB161BE50E0F0BB0F1AC522044E44361870D6A2BC871BC94B529EAC293F2D3
1520060827014436 2 6 100 1023 5 DE49FC9069994C379D2B6563EFD37EFAE6785EEB1DD0A12B090AAC272B22DF8C64A4A2AB7B99CE0B77A9A52E0833D52D53B258CEDFFD175DC8A3766A9B9807362646DC9215628C3F4AF0E08D00AB60A3B9E55BAE47E82651DA0C15A27355DDB06365CAE1DDDE4C0C97DC9942FD65E9867FA50E72E1C785411EDD28DE26C05207 1520111016112922 2 6 100 1023 5 FB9AFEB297524D1A7A34A4B67CEF09332DE1CB05711182210425A05D3576E75BEB3A3D3CC99389609E5434DBC6CFF6ECAD6B54F4351C4D0BAB3BEDD2AE936AFD22226C62254B8C8C0ED8189C0CC54634956F93600351610A3EAF60C0FDBCD61384FB161BE50E0F0BB0F1AC522044E44361870D6A2BC871BC94B529EAC29C3C9F
1620060827014515 2 6 100 1023 2 DE49FC9069994C379D2B6563EFD37EFAE6785EEB1DD0A12B090AAC272B22DF8C64A4A2AB7B99CE0B77A9A52E0833D52D53B258CEDFFD175DC8A3766A9B9807362646DC9215628C3F4AF0E08D00AB60A3B9E55BAE47E82651DA0C15A27355DDB06365CAE1DDDE4C0C97DC9942FD65E9867FA50E72E1C785411EDD28DE26D48C73 1620111016112924 2 6 100 1023 2 FB9AFEB297524D1A7A34A4B67CEF09332DE1CB05711182210425A05D3576E75BEB3A3D3CC99389609E5434DBC6CFF6ECAD6B54F4351C4D0BAB3BEDD2AE936AFD22226C62254B8C8C0ED8189C0CC54634956F93600351610A3EAF60C0FDBCD61384FB161BE50E0F0BB0F1AC522044E44361870D6A2BC871BC94B529EAC2A020F3
1720060827014527 2 6 100 1023 5 DE49FC9069994C379D2B6563EFD37EFAE6785EEB1DD0A12B090AAC272B22DF8C64A4A2AB7B99CE0B77A9A52E0833D52D53B258CEDFFD175DC8A3766A9B9807362646DC9215628C3F4AF0E08D00AB60A3B9E55BAE47E82651DA0C15A27355DDB06365CAE1DDDE4C0C97DC9942FD65E9867FA50E72E1C785411EDD28DE26D65CD7 1720111016112927 2 6 100 1023 2 FB9AFEB297524D1A7A34A4B67CEF09332DE1CB05711182210425A05D3576E75BEB3A3D3CC99389609E5434DBC6CFF6ECAD6B54F4351C4D0BAB3BEDD2AE936AFD22226C62254B8C8C0ED8189C0CC54634956F93600351610A3EAF60C0FDBCD61384FB161BE50E0F0BB0F1AC522044E44361870D6A2BC871BC94B529EAC2B2E52B
1820060827014538 2 6 100 1023 5 DE49FC9069994C379D2B6563EFD37EFAE6785EEB1DD0A12B090AAC272B22DF8C64A4A2AB7B99CE0B77A9A52E0833D52D53B258CEDFFD175DC8A3766A9B9807362646DC9215628C3F4AF0E08D00AB60A3B9E55BAE47E82651DA0C15A27355DDB06365CAE1DDDE4C0C97DC9942FD65E9867FA50E72E1C785411EDD28DE26D7096F 1820111016112932 2 6 100 1023 5 FB9AFEB297524D1A7A34A4B67CEF09332DE1CB05711182210425A05D3576E75BEB3A3D3CC99389609E5434DBC6CFF6ECAD6B54F4351C4D0BAB3BEDD2AE936AFD22226C62254B8C8C0ED8189C0CC54634956F93600351610A3EAF60C0FDBCD61384FB161BE50E0F0BB0F1AC522044E44361870D6A2BC871BC94B529EAC2D1F8A7
1920060827014607 2 6 100 1023 2 DE49FC9069994C379D2B6563EFD37EFAE6785EEB1DD0A12B090AAC272B22DF8C64A4A2AB7B99CE0B77A9A52E0833D52D53B258CEDFFD175DC8A3766A9B9807362646DC9215628C3F4AF0E08D00AB60A3B9E55BAE47E82651DA0C15A27355DDB06365CAE1DDDE4C0C97DC9942FD65E9867FA50E72E1C785411EDD28DE26E3760B 1920111016112936 2 6 100 1023 5 FB9AFEB297524D1A7A34A4B67CEF09332DE1CB05711182210425A05D3576E75BEB3A3D3CC99389609E5434DBC6CFF6ECAD6B54F4351C4D0BAB3BEDD2AE936AFD22226C62254B8C8C0ED8189C0CC54634956F93600351610A3EAF60C0FDBCD61384FB161BE50E0F0BB0F1AC522044E44361870D6A2BC871BC94B529EAC2E52A8F
2020060827014626 2 6 100 1023 5 DE49FC9069994C379D2B6563EFD37EFAE6785EEB1DD0A12B090AAC272B22DF8C64A4A2AB7B99CE0B77A9A52E0833D52D53B258CEDFFD175DC8A3766A9B9807362646DC9215628C3F4AF0E08D00AB60A3B9E55BAE47E82651DA0C15A27355DDB06365CAE1DDDE4C0C97DC9942FD65E9867FA50E72E1C785411EDD28DE26EAF29F 2020111016112939 2 6 100 1023 5 FB9AFEB297524D1A7A34A4B67CEF09332DE1CB05711182210425A05D3576E75BEB3A3D3CC99389609E5434DBC6CFF6ECAD6B54F4351C4D0BAB3BEDD2AE936AFD22226C62254B8C8C0ED8189C0CC54634956F93600351610A3EAF60C0FDBCD61384FB161BE50E0F0BB0F1AC522044E44361870D6A2BC871BC94B529EAC2F531FF
2120060827014637 2 6 100 1023 5 DE49FC9069994C379D2B6563EFD37EFAE6785EEB1DD0A12B090AAC272B22DF8C64A4A2AB7B99CE0B77A9A52E0833D52D53B258CEDFFD175DC8A3766A9B9807362646DC9215628C3F4AF0E08D00AB60A3B9E55BAE47E82651DA0C15A27355DDB06365CAE1DDDE4C0C97DC9942FD65E9867FA50E72E1C785411EDD28DE26EBCF4F 2120111016112940 2 6 100 1023 2 FB9AFEB297524D1A7A34A4B67CEF09332DE1CB05711182210425A05D3576E75BEB3A3D3CC99389609E5434DBC6CFF6ECAD6B54F4351C4D0BAB3BEDD2AE936AFD22226C62254B8C8C0ED8189C0CC54634956F93600351610A3EAF60C0FDBCD61384FB161BE50E0F0BB0F1AC522044E44361870D6A2BC871BC94B529EAC2F8A183
2220060827014653 2 6 100 1023 2 DE49FC9069994C379D2B6563EFD37EFAE6785EEB1DD0A12B090AAC272B22DF8C64A4A2AB7B99CE0B77A9A52E0833D52D53B258CEDFFD175DC8A3766A9B9807362646DC9215628C3F4AF0E08D00AB60A3B9E55BAE47E82651DA0C15A27355DDB06365CAE1DDDE4C0C97DC9942FD65E9867FA50E72E1C785411EDD28DE26F0D6BB 2220111016112942 2 6 100 1023 2 FB9AFEB297524D1A7A34A4B67CEF09332DE1CB05711182210425A05D3576E75BEB3A3D3CC99389609E5434DBC6CFF6ECAD6B54F4351C4D0BAB3BEDD2AE936AFD22226C62254B8C8C0ED8189C0CC54634956F93600351610A3EAF60C0FDBCD61384FB161BE50E0F0BB0F1AC522044E44361870D6A2BC871BC94B529EAC2FAFF83
2320060827014732 2 6 100 1023 2 DE49FC9069994C379D2B6563EFD37EFAE6785EEB1DD0A12B090AAC272B22DF8C64A4A2AB7B99CE0B77A9A52E0833D52D53B258CEDFFD175DC8A3766A9B9807362646DC9215628C3F4AF0E08D00AB60A3B9E55BAE47E82651DA0C15A27355DDB06365CAE1DDDE4C0C97DC9942FD65E9867FA50E72E1C785411EDD28DE27088963 2320111016112943 2 6 100 1023 5 FB9AFEB297524D1A7A34A4B67CEF09332DE1CB05711182210425A05D3576E75BEB3A3D3CC99389609E5434DBC6CFF6ECAD6B54F4351C4D0BAB3BEDD2AE936AFD22226C62254B8C8C0ED8189C0CC54634956F93600351610A3EAF60C0FDBCD61384FB161BE50E0F0BB0F1AC522044E44361870D6A2BC871BC94B529EAC2FBA567
2420060827014835 2 6 100 1023 2 DE49FC9069994C379D2B6563EFD37EFAE6785EEB1DD0A12B090AAC272B22DF8C64A4A2AB7B99CE0B77A9A52E0833D52D53B258CEDFFD175DC8A3766A9B9807362646DC9215628C3F4AF0E08D00AB60A3B9E55BAE47E82651DA0C15A27355DDB06365CAE1DDDE4C0C97DC9942FD65E9867FA50E72E1C785411EDD28DE27320A73 2420111016112944 2 6 100 1023 5 FB9AFEB297524D1A7A34A4B67CEF09332DE1CB05711182210425A05D3576E75BEB3A3D3CC99389609E5434DBC6CFF6ECAD6B54F4351C4D0BAB3BEDD2AE936AFD22226C62254B8C8C0ED8189C0CC54634956F93600351610A3EAF60C0FDBCD61384FB161BE50E0F0BB0F1AC522044E44361870D6A2BC871BC94B529EAC2FF5EBF
2520060827014915 2 6 100 1023 2 DE49FC9069994C379D2B6563EFD37EFAE6785EEB1DD0A12B090AAC272B22DF8C64A4A2AB7B99CE0B77A9A52E0833D52D53B258CEDFFD175DC8A3766A9B9807362646DC9215628C3F4AF0E08D00AB60A3B9E55BAE47E82651DA0C15A27355DDB06365CAE1DDDE4C0C97DC9942FD65E9867FA50E72E1C785411EDD28DE27486FA3 2520111016112946 2 6 100 1023 5 FB9AFEB297524D1A7A34A4B67CEF09332DE1CB05711182210425A05D3576E75BEB3A3D3CC99389609E5434DBC6CFF6ECAD6B54F4351C4D0BAB3BEDD2AE936AFD22226C62254B8C8C0ED8189C0CC54634956F93600351610A3EAF60C0FDBCD61384FB161BE50E0F0BB0F1AC522044E44361870D6A2BC871BC94B529EAC30837D7
2620060827014926 2 6 100 1023 5 DE49FC9069994C379D2B6563EFD37EFAE6785EEB1DD0A12B090AAC272B22DF8C64A4A2AB7B99CE0B77A9A52E0833D52D53B258CEDFFD175DC8A3766A9B9807362646DC9215628C3F4AF0E08D00AB60A3B9E55BAE47E82651DA0C15A27355DDB06365CAE1DDDE4C0C97DC9942FD65E9867FA50E72E1C785411EDD28DE2748FD9F 2620111016112948 2 6 100 1023 2 FB9AFEB297524D1A7A34A4B67CEF09332DE1CB05711182210425A05D3576E75BEB3A3D3CC99389609E5434DBC6CFF6ECAD6B54F4351C4D0BAB3BEDD2AE936AFD22226C62254B8C8C0ED8189C0CC54634956F93600351610A3EAF60C0FDBCD61384FB161BE50E0F0BB0F1AC522044E44361870D6A2BC871BC94B529EAC30F7B9B
2720060827014940 2 6 100 1023 2 DE49FC9069994C379D2B6563EFD37EFAE6785EEB1DD0A12B090AAC272B22DF8C64A4A2AB7B99CE0B77A9A52E0833D52D53B258CEDFFD175DC8A3766A9B9807362646DC9215628C3F4AF0E08D00AB60A3B9E55BAE47E82651DA0C15A27355DDB06365CAE1DDDE4C0C97DC9942FD65E9867FA50E72E1C785411EDD28DE274BB323 2720111016112949 2 6 100 1023 2 FB9AFEB297524D1A7A34A4B67CEF09332DE1CB05711182210425A05D3576E75BEB3A3D3CC99389609E5434DBC6CFF6ECAD6B54F4351C4D0BAB3BEDD2AE936AFD22226C62254B8C8C0ED8189C0CC54634956F93600351610A3EAF60C0FDBCD61384FB161BE50E0F0BB0F1AC522044E44361870D6A2BC871BC94B529EAC3107A6B
2820060827014956 2 6 100 1023 5 DE49FC9069994C379D2B6563EFD37EFAE6785EEB1DD0A12B090AAC272B22DF8C64A4A2AB7B99CE0B77A9A52E0833D52D53B258CEDFFD175DC8A3766A9B9807362646DC9215628C3F4AF0E08D00AB60A3B9E55BAE47E82651DA0C15A27355DDB06365CAE1DDDE4C0C97DC9942FD65E9867FA50E72E1C785411EDD28DE274F8F7F 2820111016112956 2 6 100 1023 2 FB9AFEB297524D1A7A34A4B67CEF09332DE1CB05711182210425A05D3576E75BEB3A3D3CC99389609E5434DBC6CFF6ECAD6B54F4351C4D0BAB3BEDD2AE936AFD22226C62254B8C8C0ED8189C0CC54634956F93600351610A3EAF60C0FDBCD61384FB161BE50E0F0BB0F1AC522044E44361870D6A2BC871BC94B529EAC33BD083
2920060827015028 2 6 100 1023 5 DE49FC9069994C379D2B6563EFD37EFAE6785EEB1DD0A12B090AAC272B22DF8C64A4A2AB7B99CE0B77A9A52E0833D52D53B258CEDFFD175DC8A3766A9B9807362646DC9215628C3F4AF0E08D00AB60A3B9E55BAE47E82651DA0C15A27355DDB06365CAE1DDDE4C0C97DC9942FD65E9867FA50E72E1C785411EDD28DE275C008F 2920111016112958 2 6 100 1023 2 FB9AFEB297524D1A7A34A4B67CEF09332DE1CB05711182210425A05D3576E75BEB3A3D3CC99389609E5434DBC6CFF6ECAD6B54F4351C4D0BAB3BEDD2AE936AFD22226C62254B8C8C0ED8189C0CC54634956F93600351610A3EAF60C0FDBCD61384FB161BE50E0F0BB0F1AC522044E44361870D6A2BC871BC94B529EAC33E8433
3020060827015112 2 6 100 1023 5 DE49FC9069994C379D2B6563EFD37EFAE6785EEB1DD0A12B090AAC272B22DF8C64A4A2AB7B99CE0B77A9A52E0833D52D53B258CEDFFD175DC8A3766A9B9807362646DC9215628C3F4AF0E08D00AB60A3B9E55BAE47E82651DA0C15A27355DDB06365CAE1DDDE4C0C97DC9942FD65E9867FA50E72E1C785411EDD28DE2776D9EF 3020111016113002 2 6 100 1023 2 FB9AFEB297524D1A7A34A4B67CEF09332DE1CB05711182210425A05D3576E75BEB3A3D3CC99389609E5434DBC6CFF6ECAD6B54F4351C4D0BAB3BEDD2AE936AFD22226C62254B8C8C0ED8189C0CC54634956F93600351610A3EAF60C0FDBCD61384FB161BE50E0F0BB0F1AC522044E44361870D6A2BC871BC94B529EAC3531E4B
3120060827015134 2 6 100 1023 2 DE49FC9069994C379D2B6563EFD37EFAE6785EEB1DD0A12B090AAC272B22DF8C64A4A2AB7B99CE0B77A9A52E0833D52D53B258CEDFFD175DC8A3766A9B9807362646DC9215628C3F4AF0E08D00AB60A3B9E55BAE47E82651DA0C15A27355DDB06365CAE1DDDE4C0C97DC9942FD65E9867FA50E72E1C785411EDD28DE27809AA3 3120111016113005 2 6 100 1023 2 FB9AFEB297524D1A7A34A4B67CEF09332DE1CB05711182210425A05D3576E75BEB3A3D3CC99389609E5434DBC6CFF6ECAD6B54F4351C4D0BAB3BEDD2AE936AFD22226C62254B8C8C0ED8189C0CC54634956F93600351610A3EAF60C0FDBCD61384FB161BE50E0F0BB0F1AC522044E44361870D6A2BC871BC94B529EAC368DF0B
3220060827015146 2 6 100 1023 2 DE49FC9069994C379D2B6563EFD37EFAE6785EEB1DD0A12B090AAC272B22DF8C64A4A2AB7B99CE0B77A9A52E0833D52D53B258CEDFFD175DC8A3766A9B9807362646DC9215628C3F4AF0E08D00AB60A3B9E55BAE47E82651DA0C15A27355DDB06365CAE1DDDE4C0C97DC9942FD65E9867FA50E72E1C785411EDD28DE27826DFB 3220111016113006 2 6 100 1023 5 FB9AFEB297524D1A7A34A4B67CEF09332DE1CB05711182210425A05D3576E75BEB3A3D3CC99389609E5434DBC6CFF6ECAD6B54F4351C4D0BAB3BEDD2AE936AFD22226C62254B8C8C0ED8189C0CC54634956F93600351610A3EAF60C0FDBCD61384FB161BE50E0F0BB0F1AC522044E44361870D6A2BC871BC94B529EAC369E717
3320060827015200 2 6 100 1023 5 DE49FC9069994C379D2B6563EFD37EFAE6785EEB1DD0A12B090AAC272B22DF8C64A4A2AB7B99CE0B77A9A52E0833D52D53B258CEDFFD175DC8A3766A9B9807362646DC9215628C3F4AF0E08D00AB60A3B9E55BAE47E82651DA0C15A27355DDB06365CAE1DDDE4C0C97DC9942FD65E9867FA50E72E1C785411EDD28DE2785363F 3320111016113009 2 6 100 1023 5 FB9AFEB297524D1A7A34A4B67CEF09332DE1CB05711182210425A05D3576E75BEB3A3D3CC99389609E5434DBC6CFF6ECAD6B54F4351C4D0BAB3BEDD2AE936AFD22226C62254B8C8C0ED8189C0CC54634956F93600351610A3EAF60C0FDBCD61384FB161BE50E0F0BB0F1AC522044E44361870D6A2BC871BC94B529EAC3726167
3420060827015231 2 6 100 1023 5 DE49FC9069994C379D2B6563EFD37EFAE6785EEB1DD0A12B090AAC272B22DF8C64A4A2AB7B99CE0B77A9A52E0833D52D53B258CEDFFD175DC8A3766A9B9807362646DC9215628C3F4AF0E08D00AB60A3B9E55BAE47E82651DA0C15A27355DDB06365CAE1DDDE4C0C97DC9942FD65E9867FA50E72E1C785411EDD28DE27951F4F 3420111016113015 2 6 100 1023 2 FB9AFEB297524D1A7A34A4B67CEF09332DE1CB05711182210425A05D3576E75BEB3A3D3CC99389609E5434DBC6CFF6ECAD6B54F4351C4D0BAB3BEDD2AE936AFD22226C62254B8C8C0ED8189C0CC54634956F93600351610A3EAF60C0FDBCD61384FB161BE50E0F0BB0F1AC522044E44361870D6A2BC871BC94B529EAC39FAE6B
3520060827015246 2 6 100 1023 2 DE49FC9069994C379D2B6563EFD37EFAE6785EEB1DD0A12B090AAC272B22DF8C64A4A2AB7B99CE0B77A9A52E0833D52D53B258CEDFFD175DC8A3766A9B9807362646DC9215628C3F4AF0E08D00AB60A3B9E55BAE47E82651DA0C15A27355DDB06365CAE1DDDE4C0C97DC9942FD65E9867FA50E72E1C785411EDD28DE27991903 3520111016113019 2 6 100 1023 2 FB9AFEB297524D1A7A34A4B67CEF09332DE1CB05711182210425A05D3576E75BEB3A3D3CC99389609E5434DBC6CFF6ECAD6B54F4351C4D0BAB3BEDD2AE936AFD22226C62254B8C8C0ED8189C0CC54634956F93600351610A3EAF60C0FDBCD61384FB161BE50E0F0BB0F1AC522044E44361870D6A2BC871BC94B529EAC3B05733
3620060827015300 2 6 100 1023 5 DE49FC9069994C379D2B6563EFD37EFAE6785EEB1DD0A12B090AAC272B22DF8C64A4A2AB7B99CE0B77A9A52E0833D52D53B258CEDFFD175DC8A3766A9B9807362646DC9215628C3F4AF0E08D00AB60A3B9E55BAE47E82651DA0C15A27355DDB06365CAE1DDDE4C0C97DC9942FD65E9867FA50E72E1C785411EDD28DE279C7B37 3620111016113023 2 6 100 1023 5 FB9AFEB297524D1A7A34A4B67CEF09332DE1CB05711182210425A05D3576E75BEB3A3D3CC99389609E5434DBC6CFF6ECAD6B54F4351C4D0BAB3BEDD2AE936AFD22226C62254B8C8C0ED8189C0CC54634956F93600351610A3EAF60C0FDBCD61384FB161BE50E0F0BB0F1AC522044E44361870D6A2BC871BC94B529EAC3C8342F
3720060827015329 2 6 100 1023 2 DE49FC9069994C379D2B6563EFD37EFAE6785EEB1DD0A12B090AAC272B22DF8C64A4A2AB7B99CE0B77A9A52E0833D52D53B258CEDFFD175DC8A3766A9B9807362646DC9215628C3F4AF0E08D00AB60A3B9E55BAE47E82651DA0C15A27355DDB06365CAE1DDDE4C0C97DC9942FD65E9867FA50E72E1C785411EDD28DE27AB4843 3720111016113025 2 6 100 1023 5 FB9AFEB297524D1A7A34A4B67CEF09332DE1CB05711182210425A05D3576E75BEB3A3D3CC99389609E5434DBC6CFF6ECAD6B54F4351C4D0BAB3BEDD2AE936AFD22226C62254B8C8C0ED8189C0CC54634956F93600351610A3EAF60C0FDBCD61384FB161BE50E0F0BB0F1AC522044E44361870D6A2BC871BC94B529EAC3D0A24F
3820060827015347 2 6 100 1023 5 DE49FC9069994C379D2B6563EFD37EFAE6785EEB1DD0A12B090AAC272B22DF8C64A4A2AB7B99CE0B77A9A52E0833D52D53B258CEDFFD175DC8A3766A9B9807362646DC9215628C3F4AF0E08D00AB60A3B9E55BAE47E82651DA0C15A27355DDB06365CAE1DDDE4C0C97DC9942FD65E9867FA50E72E1C785411EDD28DE27B0F9D7 3820111016113029 2 6 100 1023 2 FB9AFEB297524D1A7A34A4B67CEF09332DE1CB05711182210425A05D3576E75BEB3A3D3CC99389609E5434DBC6CFF6ECAD6B54F4351C4D0BAB3BEDD2AE936AFD22226C62254B8C8C0ED8189C0CC54634956F93600351610A3EAF60C0FDBCD61384FB161BE50E0F0BB0F1AC522044E44361870D6A2BC871BC94B529EAC3ED114B
3920060827015359 2 6 100 1023 2 DE49FC9069994C379D2B6563EFD37EFAE6785EEB1DD0A12B090AAC272B22DF8C64A4A2AB7B99CE0B77A9A52E0833D52D53B258CEDFFD175DC8A3766A9B9807362646DC9215628C3F4AF0E08D00AB60A3B9E55BAE47E82651DA0C15A27355DDB06365CAE1DDDE4C0C97DC9942FD65E9867FA50E72E1C785411EDD28DE27B24D5B 3920111016113557 2 6 100 1535 2 F62191A170EC6171C620D3B334952F220077AA5C0FA7F1A7FE08C6B7B0C5F865CDB24346E3BE05B99E2D7FCC3582D0D2D637672EB0EB1DBB95BCE1A0CA54DFC83EBF598A24928CA42A5ABC2AE75E9802451B0C9E180D5D52698DAAF79DA3B968F72B48DA1D04246EA07C2FAD367392C458D34FA17DAA04C22975E417ABD18FC6407D0A04300D521A8A867FE850EB9BA6F1AD32084856AAFDE112247F20579F74950EFA36A803A47134BBF024F561DDE90042A5AF2547ED9520BE77AFB1048043
4020060827015430 2 6 100 1023 5 DE49FC9069994C379D2B6563EFD37EFAE6785EEB1DD0A12B090AAC272B22DF8C64A4A2AB7B99CE0B77A9A52E0833D52D53B258CEDFFD175DC8A3766A9B9807362646DC9215628C3F4AF0E08D00AB60A3B9E55BAE47E82651DA0C15A27355DDB06365CAE1DDDE4C0C97DC9942FD65E9867FA50E72E1C785411EDD28DE27C2CE27 4020111016113618 2 6 100 1535 5 F62191A170EC6171C620D3B334952F220077AA5C0FA7F1A7FE08C6B7B0C5F865CDB24346E3BE05B99E2D7FCC3582D0D2D637672EB0EB1DBB95BCE1A0CA54DFC83EBF598A24928CA42A5ABC2AE75E9802451B0C9E180D5D52698DAAF79DA3B968F72B48DA1D04246EA07C2FAD367392C458D34FA17DAA04C22975E417ABD18FC6407D0A04300D521A8A867FE850EB9BA6F1AD32084856AAFDE112247F20579F74950EFA36A803A47134BBF024F561DDE90042A5AF2547ED9520BE77AFB1338BFF
4120060827015449 2 6 100 1023 2 DE49FC9069994C379D2B6563EFD37EFAE6785EEB1DD0A12B090AAC272B22DF8C64A4A2AB7B99CE0B77A9A52E0833D52D53B258CEDFFD175DC8A3766A9B9807362646DC9215628C3F4AF0E08D00AB60A3B9E55BAE47E82651DA0C15A27355DDB06365CAE1DDDE4C0C97DC9942FD65E9867FA50E72E1C785411EDD28DE27CA3BA3 4120111016113627 2 6 100 1535 2 F62191A170EC6171C620D3B334952F220077AA5C0FA7F1A7FE08C6B7B0C5F865CDB24346E3BE05B99E2D7FCC3582D0D2D637672EB0EB1DBB95BCE1A0CA54DFC83EBF598A24928CA42A5ABC2AE75E9802451B0C9E180D5D52698DAAF79DA3B968F72B48DA1D04246EA07C2FAD367392C458D34FA17DAA04C22975E417ABD18FC6407D0A04300D521A8A867FE850EB9BA6F1AD32084856AAFDE112247F20579F74950EFA36A803A47134BBF024F561DDE90042A5AF2547ED9520BE77AFB140EEE3
4220060827015546 2 6 100 1023 5 DE49FC9069994C379D2B6563EFD37EFAE6785EEB1DD0A12B090AAC272B22DF8C64A4A2AB7B99CE0B77A9A52E0833D52D53B258CEDFFD175DC8A3766A9B9807362646DC9215628C3F4AF0E08D00AB60A3B9E55BAE47E82651DA0C15A27355DDB06365CAE1DDDE4C0C97DC9942FD65E9867FA50E72E1C785411EDD28DE27E90A07 4220111016113640 2 6 100 1535 5 F62191A170EC6171C620D3B334952F220077AA5C0FA7F1A7FE08C6B7B0C5F865CDB24346E3BE05B99E2D7FCC3582D0D2D637672EB0EB1DBB95BCE1A0CA54DFC83EBF598A24928CA42A5ABC2AE75E9802451B0C9E180D5D52698DAAF79DA3B968F72B48DA1D04246EA07C2FAD367392C458D34FA17DAA04C22975E417ABD18FC6407D0A04300D521A8A867FE850EB9BA6F1AD32084856AAFDE112247F20579F74950EFA36A803A47134BBF024F561DDE90042A5AF2547ED9520BE77AFB15B201F
4320060827015607 2 6 100 1023 5 DE49FC9069994C379D2B6563EFD37EFAE6785EEB1DD0A12B090AAC272B22DF8C64A4A2AB7B99CE0B77A9A52E0833D52D53B258CEDFFD175DC8A3766A9B9807362646DC9215628C3F4AF0E08D00AB60A3B9E55BAE47E82651DA0C15A27355DDB06365CAE1DDDE4C0C97DC9942FD65E9867FA50E72E1C785411EDD28DE27F116BF 4320111016113645 2 6 100 1535 2 F62191A170EC6171C620D3B334952F220077AA5C0FA7F1A7FE08C6B7B0C5F865CDB24346E3BE05B99E2D7FCC3582D0D2D637672EB0EB1DBB95BCE1A0CA54DFC83EBF598A24928CA42A5ABC2AE75E9802451B0C9E180D5D52698DAAF79DA3B968F72B48DA1D04246EA07C2FAD367392C458D34FA17DAA04C22975E417ABD18FC6407D0A04300D521A8A867FE850EB9BA6F1AD32084856AAFDE112247F20579F74950EFA36A803A47134BBF024F561DDE90042A5AF2547ED9520BE77AFB1605C6B
4420060827015630 2 6 100 1023 5 DE49FC9069994C379D2B6563EFD37EFAE6785EEB1DD0A12B090AAC272B22DF8C64A4A2AB7B99CE0B77A9A52E0833D52D53B258CEDFFD175DC8A3766A9B9807362646DC9215628C3F4AF0E08D00AB60A3B9E55BAE47E82651DA0C15A27355DDB06365CAE1DDDE4C0C97DC9942FD65E9867FA50E72E1C785411EDD28DE27FBB66F 4420111016113651 2 6 100 1535 2 F62191A170EC6171C620D3B334952F220077AA5C0FA7F1A7FE08C6B7B0C5F865CDB24346E3BE05B99E2D7FCC3582D0D2D637672EB0EB1DBB95BCE1A0CA54DFC83EBF598A24928CA42A5ABC2AE75E9802451B0C9E180D5D52698DAAF79DA3B968F72B48DA1D04246EA07C2FAD367392C458D34FA17DAA04C22975E417ABD18FC6407D0A04300D521A8A867FE850EB9BA6F1AD32084856AAFDE112247F20579F74950EFA36A803A47134BBF024F561DDE90042A5AF2547ED9520BE77AFB1670D23
4520060827015649 2 6 100 1023 2 DE49FC9069994C379D2B6563EFD37EFAE6785EEB1DD0A12B090AAC272B22DF8C64A4A2AB7B99CE0B77A9A52E0833D52D53B258CEDFFD175DC8A3766A9B9807362646DC9215628C3F4AF0E08D00AB60A3B9E55BAE47E82651DA0C15A27355DDB06365CAE1DDDE4C0C97DC9942FD65E9867FA50E72E1C785411EDD28DE2803E313 4520111016113700 2 6 100 1535 5 F62191A170EC6171C620D3B334952F220077AA5C0FA7F1A7FE08C6B7B0C5F865CDB24346E3BE05B99E2D7FCC3582D0D2D637672EB0EB1DBB95BCE1A0CA54DFC83EBF598A24928CA42A5ABC2AE75E9802451B0C9E180D5D52698DAAF79DA3B968F72B48DA1D04246EA07C2FAD367392C458D34FA17DAA04C22975E417ABD18FC6407D0A04300D521A8A867FE850EB9BA6F1AD32084856AAFDE112247F20579F74950EFA36A803A47134BBF024F561DDE90042A5AF2547ED9520BE77AFB17783FF
4620060827024302 2 6 100 1535 2 DF09936D6567325CD4EDE975CB3B9BFFB26C5EC31A71ABA0931BE89AEEB81A531708540B7EA03875E5DF4935ED021F3955D5C941BB682DBDA5425F4EF84DD1F42C6DCC5E313D64DE5B658682A51785102358771DDB6C2B86079C3D0A4EB0DA149E7B2CAC0AC254FFBCD82DF11D74A4E0BBE3FA0AD0675B8A3C6E794E943B7F3799BA8C0F80D602F85D3032D206A96EB16DAFD2C036F8D4F3DA1CCDB2178F08BD851D7BB1C2E964F48F91B2546916E76A80D8E16F700E1FC194308DD6AD6C361B 4620111016113705 2 6 100 1535 2 F62191A170EC6171C620D3B334952F220077AA5C0FA7F1A7FE08C6B7B0C5F865CDB24346E3BE05B99E2D7FCC3582D0D2D637672EB0EB1DBB95BCE1A0CA54DFC83EBF598A24928CA42A5ABC2AE75E9802451B0C9E180D5D52698DAAF79DA3B968F72B48DA1D04246EA07C2FAD367392C458D34FA17DAA04C22975E417ABD18FC6407D0A04300D521A8A867FE850EB9BA6F1AD32084856AAFDE112247F20579F74950EFA36A803A47134BBF024F561DDE90042A5AF2547ED9520BE77AFB17C11A3
4720060827024350 2 6 100 1535 2 DF09936D6567325CD4EDE975CB3B9BFFB26C5EC31A71ABA0931BE89AEEB81A531708540B7EA03875E5DF4935ED021F3955D5C941BB682DBDA5425F4EF84DD1F42C6DCC5E313D64DE5B658682A51785102358771DDB6C2B86079C3D0A4EB0DA149E7B2CAC0AC254FFBCD82DF11D74A4E0BBE3FA0AD0675B8A3C6E794E943B7F3799BA8C0F80D602F85D3032D206A96EB16DAFD2C036F8D4F3DA1CCDB2178F08BD851D7BB1C2E964F48F91B2546916E76A80D8E16F700E1FC194308DD6AD6F7E93 4720111016113709 2 6 100 1535 2 F62191A170EC6171C620D3B334952F220077AA5C0FA7F1A7FE08C6B7B0C5F865CDB24346E3BE05B99E2D7FCC3582D0D2D637672EB0EB1DBB95BCE1A0CA54DFC83EBF598A24928CA42A5ABC2AE75E9802451B0C9E180D5D52698DAAF79DA3B968F72B48DA1D04246EA07C2FAD367392C458D34FA17DAA04C22975E417ABD18FC6407D0A04300D521A8A867FE850EB9BA6F1AD32084856AAFDE112247F20579F74950EFA36A803A47134BBF024F561DDE90042A5AF2547ED9520BE77AFB17DB8BB
4820060827024537 2 6 100 1535 2 DF09936D6567325CD4EDE975CB3B9BFFB26C5EC31A71ABA0931BE89AEEB81A531708540B7EA03875E5DF4935ED021F3955D5C941BB682DBDA5425F4EF84DD1F42C6DCC5E313D64DE5B658682A51785102358771DDB6C2B86079C3D0A4EB0DA149E7B2CAC0AC254FFBCD82DF11D74A4E0BBE3FA0AD0675B8A3C6E794E943B7F3799BA8C0F80D602F85D3032D206A96EB16DAFD2C036F8D4F3DA1CCDB2178F08BD851D7BB1C2E964F48F91B2546916E76A80D8E16F700E1FC194308DD6AD7DE4BB 4820111016113715 2 6 100 1535 2 F62191A170EC6171C620D3B334952F220077AA5C0FA7F1A7FE08C6B7B0C5F865CDB24346E3BE05B99E2D7FCC3582D0D2D637672EB0EB1DBB95BCE1A0CA54DFC83EBF598A24928CA42A5ABC2AE75E9802451B0C9E180D5D52698DAAF79DA3B968F72B48DA1D04246EA07C2FAD367392C458D34FA17DAA04C22975E417ABD18FC6407D0A04300D521A8A867FE850EB9BA6F1AD32084856AAFDE112247F20579F74950EFA36A803A47134BBF024F561DDE90042A5AF2547ED9520BE77AFB18640BB
4920060827025000 2 6 100 1535 5 DF09936D6567325CD4EDE975CB3B9BFFB26C5EC31A71ABA0931BE89AEEB81A531708540B7EA03875E5DF4935ED021F3955D5C941BB682DBDA5425F4EF84DD1F42C6DCC5E313D64DE5B658682A51785102358771DDB6C2B86079C3D0A4EB0DA149E7B2CAC0AC254FFBCD82DF11D74A4E0BBE3FA0AD0675B8A3C6E794E943B7F3799BA8C0F80D602F85D3032D206A96EB16DAFD2C036F8D4F3DA1CCDB2178F08BD851D7BB1C2E964F48F91B2546916E76A80D8E16F700E1FC194308DD6ADB6D4D7 4920111016113801 2 6 100 1535 5 F62191A170EC6171C620D3B334952F220077AA5C0FA7F1A7FE08C6B7B0C5F865CDB24346E3BE05B99E2D7FCC3582D0D2D637672EB0EB1DBB95BCE1A0CA54DFC83EBF598A24928CA42A5ABC2AE75E9802451B0C9E180D5D52698DAAF79DA3B968F72B48DA1D04246EA07C2FAD367392C458D34FA17DAA04C22975E417ABD18FC6407D0A04300D521A8A867FE850EB9BA6F1AD32084856AAFDE112247F20579F74950EFA36A803A47134BBF024F561DDE90042A5AF2547ED9520BE77AFB1F27217
5020060827025429 2 6 100 1535 2 DF09936D6567325CD4EDE975CB3B9BFFB26C5EC31A71ABA0931BE89AEEB81A531708540B7EA03875E5DF4935ED021F3955D5C941BB682DBDA5425F4EF84DD1F42C6DCC5E313D64DE5B658682A51785102358771DDB6C2B86079C3D0A4EB0DA149E7B2CAC0AC254FFBCD82DF11D74A4E0BBE3FA0AD0675B8A3C6E794E943B7F3799BA8C0F80D602F85D3032D206A96EB16DAFD2C036F8D4F3DA1CCDB2178F08BD851D7BB1C2E964F48F91B2546916E76A80D8E16F700E1FC194308DD6ADEF2D8B 5020111016113812 2 6 100 1535 2 F62191A170EC6171C620D3B334952F220077AA5C0FA7F1A7FE08C6B7B0C5F865CDB24346E3BE05B99E2D7FCC3582D0D2D637672EB0EB1DBB95BCE1A0CA54DFC83EBF598A24928CA42A5ABC2AE75E9802451B0C9E180D5D52698DAAF79DA3B968F72B48DA1D04246EA07C2FAD367392C458D34FA17DAA04C22975E417ABD18FC6407D0A04300D521A8A867FE850EB9BA6F1AD32084856AAFDE112247F20579F74950EFA36A803A47134BBF024F561DDE90042A5AF2547ED9520BE77AFB2057C63
5120060827025612 2 6 100 1535 2 DF09936D6567325CD4EDE975CB3B9BFFB26C5EC31A71ABA0931BE89AEEB81A531708540B7EA03875E5DF4935ED021F3955D5C941BB682DBDA5425F4EF84DD1F42C6DCC5E313D64DE5B658682A51785102358771DDB6C2B86079C3D0A4EB0DA149E7B2CAC0AC254FFBCD82DF11D74A4E0BBE3FA0AD0675B8A3C6E794E943B7F3799BA8C0F80D602F85D3032D206A96EB16DAFD2C036F8D4F3DA1CCDB2178F08BD851D7BB1C2E964F48F91B2546916E76A80D8E16F700E1FC194308DD6ADFCCB13 5120111016113819 2 6 100 1535 5 F62191A170EC6171C620D3B334952F220077AA5C0FA7F1A7FE08C6B7B0C5F865CDB24346E3BE05B99E2D7FCC3582D0D2D637672EB0EB1DBB95BCE1A0CA54DFC83EBF598A24928CA42A5ABC2AE75E9802451B0C9E180D5D52698DAAF79DA3B968F72B48DA1D04246EA07C2FAD367392C458D34FA17DAA04C22975E417ABD18FC6407D0A04300D521A8A867FE850EB9BA6F1AD32084856AAFDE112247F20579F74950EFA36A803A47134BBF024F561DDE90042A5AF2547ED9520BE77AFB2122BA7
5220060827030138 2 6 100 1535 2 DF09936D6567325CD4EDE975CB3B9BFFB26C5EC31A71ABA0931BE89AEEB81A531708540B7EA03875E5DF4935ED021F3955D5C941BB682DBDA5425F4EF84DD1F42C6DCC5E313D64DE5B658682A51785102358771DDB6C2B86079C3D0A4EB0DA149E7B2CAC0AC254FFBCD82DF11D74A4E0BBE3FA0AD0675B8A3C6E794E943B7F3799BA8C0F80D602F85D3032D206A96EB16DAFD2C036F8D4F3DA1CCDB2178F08BD851D7BB1C2E964F48F91B2546916E76A80D8E16F700E1FC194308DD6AE41E89B 5220111016113829 2 6 100 1535 2 F62191A170EC6171C620D3B334952F220077AA5C0FA7F1A7FE08C6B7B0C5F865CDB24346E3BE05B99E2D7FCC3582D0D2D637672EB0EB1DBB95BCE1A0CA54DFC83EBF598A24928CA42A5ABC2AE75E9802451B0C9E180D5D52698DAAF79DA3B968F72B48DA1D04246EA07C2FAD367392C458D34FA17DAA04C22975E417ABD18FC6407D0A04300D521A8A867FE850EB9BA6F1AD32084856AAFDE112247F20579F74950EFA36A803A47134BBF024F561DDE90042A5AF2547ED9520BE77AFB2214263
5320060827030223 2 6 100 1535 2 DF09936D6567325CD4EDE975CB3B9BFFB26C5EC31A71ABA0931BE89AEEB81A531708540B7EA03875E5DF4935ED021F3955D5C941BB682DBDA5425F4EF84DD1F42C6DCC5E313D64DE5B658682A51785102358771DDB6C2B86079C3D0A4EB0DA149E7B2CAC0AC254FFBCD82DF11D74A4E0BBE3FA0AD0675B8A3C6E794E943B7F3799BA8C0F80D602F85D3032D206A96EB16DAFD2C036F8D4F3DA1CCDB2178F08BD851D7BB1C2E964F48F91B2546916E76A80D8E16F700E1FC194308DD6AE44A263 5320111016113904 2 6 100 1535 2 F62191A170EC6171C620D3B334952F220077AA5C0FA7F1A7FE08C6B7B0C5F865CDB24346E3BE05B99E2D7FCC3582D0D2D637672EB0EB1DBB95BCE1A0CA54DFC83EBF598A24928CA42A5ABC2AE75E9802451B0C9E180D5D52698DAAF79DA3B968F72B48DA1D04246EA07C2FAD367392C458D34FA17DAA04C22975E417ABD18FC6407D0A04300D521A8A867FE850EB9BA6F1AD32084856AAFDE112247F20579F74950EFA36A803A47134BBF024F561DDE90042A5AF2547ED9520BE77AFB27621B3
5420060827030555 2 6 100 1535 5 DF09936D6567325CD4EDE975CB3B9BFFB26C5EC31A71ABA0931BE89AEEB81A531708540B7EA03875E5DF4935ED021F3955D5C941BB682DBDA5425F4EF84DD1F42C6DCC5E313D64DE5B658682A51785102358771DDB6C2B86079C3D0A4EB0DA149E7B2CAC0AC254FFBCD82DF11D74A4E0BBE3FA0AD0675B8A3C6E794E943B7F3799BA8C0F80D602F85D3032D206A96EB16DAFD2C036F8D4F3DA1CCDB2178F08BD851D7BB1C2E964F48F91B2546916E76A80D8E16F700E1FC194308DD6AE6FD2A7 5420111016113912 2 6 100 1535 5 F62191A170EC6171C620D3B334952F220077AA5C0FA7F1A7FE08C6B7B0C5F865CDB24346E3BE05B99E2D7FCC3582D0D2D637672EB0EB1DBB95BCE1A0CA54DFC83EBF598A24928CA42A5ABC2AE75E9802451B0C9E180D5D52698DAAF79DA3B968F72B48DA1D04246EA07C2FAD367392C458D34FA17DAA04C22975E417ABD18FC6407D0A04300D521A8A867FE850EB9BA6F1AD32084856AAFDE112247F20579F74950EFA36A803A47134BBF024F561DDE90042A5AF2547ED9520BE77AFB27F8CE7
5520060827031244 2 6 100 1535 2 DF09936D6567325CD4EDE975CB3B9BFFB26C5EC31A71ABA0931BE89AEEB81A531708540B7EA03875E5DF4935ED021F3955D5C941BB682DBDA5425F4EF84DD1F42C6DCC5E313D64DE5B658682A51785102358771DDB6C2B86079C3D0A4EB0DA149E7B2CAC0AC254FFBCD82DF11D74A4E0BBE3FA0AD0675B8A3C6E794E943B7F3799BA8C0F80D602F85D3032D206A96EB16DAFD2C036F8D4F3DA1CCDB2178F08BD851D7BB1C2E964F48F91B2546916E76A80D8E16F700E1FC194308DD6AECC68C3 5520111016113940 2 6 100 1535 2 F62191A170EC6171C620D3B334952F220077AA5C0FA7F1A7FE08C6B7B0C5F865CDB24346E3BE05B99E2D7FCC3582D0D2D637672EB0EB1DBB95BCE1A0CA54DFC83EBF598A24928CA42A5ABC2AE75E9802451B0C9E180D5D52698DAAF79DA3B968F72B48DA1D04246EA07C2FAD367392C458D34FA17DAA04C22975E417ABD18FC6407D0A04300D521A8A867FE850EB9BA6F1AD32084856AAFDE112247F20579F74950EFA36A803A47134BBF024F561DDE90042A5AF2547ED9520BE77AFB2BFB33B
5620060827031437 2 6 100 1535 2 DF09936D6567325CD4EDE975CB3B9BFFB26C5EC31A71ABA0931BE89AEEB81A531708540B7EA03875E5DF4935ED021F3955D5C941BB682DBDA5425F4EF84DD1F42C6DCC5E313D64DE5B658682A51785102358771DDB6C2B86079C3D0A4EB0DA149E7B2CAC0AC254FFBCD82DF11D74A4E0BBE3FA0AD0675B8A3C6E794E943B7F3799BA8C0F80D602F85D3032D206A96EB16DAFD2C036F8D4F3DA1CCDB2178F08BD851D7BB1C2E964F48F91B2546916E76A80D8E16F700E1FC194308DD6AEDFB4EB 5620111016113948 2 6 100 1535 2 F62191A170EC6171C620D3B334952F220077AA5C0FA7F1A7FE08C6B7B0C5F865CDB24346E3BE05B99E2D7FCC3582D0D2D637672EB0EB1DBB95BCE1A0CA54DFC83EBF598A24928CA42A5ABC2AE75E9802451B0C9E180D5D52698DAAF79DA3B968F72B48DA1D04246EA07C2FAD367392C458D34FA17DAA04C22975E417ABD18FC6407D0A04300D521A8A867FE850EB9BA6F1AD32084856AAFDE112247F20579F74950EFA36A803A47134BBF024F561DDE90042A5AF2547ED9520BE77AFB2CCE95B
5720060827031602 2 6 100 1535 5 DF09936D6567325CD4EDE975CB3B9BFFB26C5EC31A71ABA0931BE89AEEB81A531708540B7EA03875E5DF4935ED021F3955D5C941BB682DBDA5425F4EF84DD1F42C6DCC5E313D64DE5B658682A51785102358771DDB6C2B86079C3D0A4EB0DA149E7B2CAC0AC254FFBCD82DF11D74A4E0BBE3FA0AD0675B8A3C6E794E943B7F3799BA8C0F80D602F85D3032D206A96EB16DAFD2C036F8D4F3DA1CCDB2178F08BD851D7BB1C2E964F48F91B2546916E76A80D8E16F700E1FC194308DD6AEEB07E7 5720111016114034 2 6 100 1535 5 F62191A170EC6171C620D3B334952F220077AA5C0FA7F1A7FE08C6B7B0C5F865CDB24346E3BE05B99E2D7FCC3582D0D2D637672EB0EB1DBB95BCE1A0CA54DFC83EBF598A24928CA42A5ABC2AE75E9802451B0C9E180D5D52698DAAF79DA3B968F72B48DA1D04246EA07C2FAD367392C458D34FA17DAA04C22975E417ABD18FC6407D0A04300D521A8A867FE850EB9BA6F1AD32084856AAFDE112247F20579F74950EFA36A803A47134BBF024F561DDE90042A5AF2547ED9520BE77AFB33B315F
5820060827032434 2 6 100 1535 2 DF09936D6567325CD4EDE975CB3B9BFFB26C5EC31A71ABA0931BE89AEEB81A531708540B7EA03875E5DF4935ED021F3955D5C941BB682DBDA5425F4EF84DD1F42C6DCC5E313D64DE5B658682A51785102358771DDB6C2B86079C3D0A4EB0DA149E7B2CAC0AC254FFBCD82DF11D74A4E0BBE3FA0AD0675B8A3C6E794E943B7F3799BA8C0F80D602F85D3032D206A96EB16DAFD2C036F8D4F3DA1CCDB2178F08BD851D7BB1C2E964F48F91B2546916E76A80D8E16F700E1FC194308DD6AF5B1533 5820111016114053 2 6 100 1535 5 F62191A170EC6171C620D3B334952F220077AA5C0FA7F1A7FE08C6B7B0C5F865CDB24346E3BE05B99E2D7FCC3582D0D2D637672EB0EB1DBB95BCE1A0CA54DFC83EBF598A24928CA42A5ABC2AE75E9802451B0C9E180D5D52698DAAF79DA3B968F72B48DA1D04246EA07C2FAD367392C458D34FA17DAA04C22975E417ABD18FC6407D0A04300D521A8A867FE850EB9BA6F1AD32084856AAFDE112247F20579F74950EFA36A803A47134BBF024F561DDE90042A5AF2547ED9520BE77AFB36263E7
5920060827032933 2 6 100 1535 2 DF09936D6567325CD4EDE975CB3B9BFFB26C5EC31A71ABA0931BE89AEEB81A531708540B7EA03875E5DF4935ED021F3955D5C941BB682DBDA5425F4EF84DD1F42C6DCC5E313D64DE5B658682A51785102358771DDB6C2B86079C3D0A4EB0DA149E7B2CAC0AC254FFBCD82DF11D74A4E0BBE3FA0AD0675B8A3C6E794E943B7F3799BA8C0F80D602F85D3032D206A96EB16DAFD2C036F8D4F3DA1CCDB2178F08BD851D7BB1C2E964F48F91B2546916E76A80D8E16F700E1FC194308DD6AF99D5D3 5920111016114057 2 6 100 1535 5 F62191A170EC6171C620D3B334952F220077AA5C0FA7F1A7FE08C6B7B0C5F865CDB24346E3BE05B99E2D7FCC3582D0D2D637672EB0EB1DBB95BCE1A0CA54DFC83EBF598A24928CA42A5ABC2AE75E9802451B0C9E180D5D52698DAAF79DA3B968F72B48DA1D04246EA07C2FAD367392C458D34FA17DAA04C22975E417ABD18FC6407D0A04300D521A8A867FE850EB9BA6F1AD32084856AAFDE112247F20579F74950EFA36A803A47134BBF024F561DDE90042A5AF2547ED9520BE77AFB362E277
6020060827033028 2 6 100 1535 5 DF09936D6567325CD4EDE975CB3B9BFFB26C5EC31A71ABA0931BE89AEEB81A531708540B7EA03875E5DF4935ED021F3955D5C941BB682DBDA5425F4EF84DD1F42C6DCC5E313D64DE5B658682A51785102358771DDB6C2B86079C3D0A4EB0DA149E7B2CAC0AC254FFBCD82DF11D74A4E0BBE3FA0AD0675B8A3C6E794E943B7F3799BA8C0F80D602F85D3032D206A96EB16DAFD2C036F8D4F3DA1CCDB2178F08BD851D7BB1C2E964F48F91B2546916E76A80D8E16F700E1FC194308DD6AF9CF037 6020111016114122 2 6 100 1535 2 F62191A170EC6171C620D3B334952F220077AA5C0FA7F1A7FE08C6B7B0C5F865CDB24346E3BE05B99E2D7FCC3582D0D2D637672EB0EB1DBB95BCE1A0CA54DFC83EBF598A24928CA42A5ABC2AE75E9802451B0C9E180D5D52698DAAF79DA3B968F72B48DA1D04246EA07C2FAD367392C458D34FA17DAA04C22975E417ABD18FC6407D0A04300D521A8A867FE850EB9BA6F1AD32084856AAFDE112247F20579F74950EFA36A803A47134BBF024F561DDE90042A5AF2547ED9520BE77AFB399342B
6120060827033120 2 6 100 1535 5 DF09936D6567325CD4EDE975CB3B9BFFB26C5EC31A71ABA0931BE89AEEB81A531708540B7EA03875E5DF4935ED021F3955D5C941BB682DBDA5425F4EF84DD1F42C6DCC5E313D64DE5B658682A51785102358771DDB6C2B86079C3D0A4EB0DA149E7B2CAC0AC254FFBCD82DF11D74A4E0BBE3FA0AD0675B8A3C6E794E943B7F3799BA8C0F80D602F85D3032D206A96EB16DAFD2C036F8D4F3DA1CCDB2178F08BD851D7BB1C2E964F48F91B2546916E76A80D8E16F700E1FC194308DD6AFA14BBF 6120111016114127 2 6 100 1535 5 F62191A170EC6171C620D3B334952F220077AA5C0FA7F1A7FE08C6B7B0C5F865CDB24346E3BE05B99E2D7FCC3582D0D2D637672EB0EB1DBB95BCE1A0CA54DFC83EBF598A24928CA42A5ABC2AE75E9802451B0C9E180D5D52698DAAF79DA3B968F72B48DA1D04246EA07C2FAD367392C458D34FA17DAA04C22975E417ABD18FC6407D0A04300D521A8A867FE850EB9BA6F1AD32084856AAFDE112247F20579F74950EFA36A803A47134BBF024F561DDE90042A5AF2547ED9520BE77AFB39F81EF
6220060827033331 2 6 100 1535 2 DF09936D6567325CD4EDE975CB3B9BFFB26C5EC31A71ABA0931BE89AEEB81A531708540B7EA03875E5DF4935ED021F3955D5C941BB682DBDA5425F4EF84DD1F42C6DCC5E313D64DE5B658682A51785102358771DDB6C2B86079C3D0A4EB0DA149E7B2CAC0AC254FFBCD82DF11D74A4E0BBE3FA0AD0675B8A3C6E794E943B7F3799BA8C0F80D602F85D3032D206A96EB16DAFD2C036F8D4F3DA1CCDB2178F08BD851D7BB1C2E964F48F91B2546916E76A80D8E16F700E1FC194308DD6AFB9FD2B 6220111016114131 2 6 100 1535 5 F62191A170EC6171C620D3B334952F220077AA5C0FA7F1A7FE08C6B7B0C5F865CDB24346E3BE05B99E2D7FCC3582D0D2D637672EB0EB1DBB95BCE1A0CA54DFC83EBF598A24928CA42A5ABC2AE75E9802451B0C9E180D5D52698DAAF79DA3B968F72B48DA1D04246EA07C2FAD367392C458D34FA17DAA04C22975E417ABD18FC6407D0A04300D521A8A867FE850EB9BA6F1AD32084856AAFDE112247F20579F74950EFA36A803A47134BBF024F561DDE90042A5AF2547ED9520BE77AFB3A178E7
6320060827033555 2 6 100 1535 2 DF09936D6567325CD4EDE975CB3B9BFFB26C5EC31A71ABA0931BE89AEEB81A531708540B7EA03875E5DF4935ED021F3955D5C941BB682DBDA5425F4EF84DD1F42C6DCC5E313D64DE5B658682A51785102358771DDB6C2B86079C3D0A4EB0DA149E7B2CAC0AC254FFBCD82DF11D74A4E0BBE3FA0AD0675B8A3C6E794E943B7F3799BA8C0F80D602F85D3032D206A96EB16DAFD2C036F8D4F3DA1CCDB2178F08BD851D7BB1C2E964F48F91B2546916E76A80D8E16F700E1FC194308DD6AFD32F8B 6320111016114143 2 6 100 1535 5 F62191A170EC6171C620D3B334952F220077AA5C0FA7F1A7FE08C6B7B0C5F865CDB24346E3BE05B99E2D7FCC3582D0D2D637672EB0EB1DBB95BCE1A0CA54DFC83EBF598A24928CA42A5ABC2AE75E9802451B0C9E180D5D52698DAAF79DA3B968F72B48DA1D04246EA07C2FAD367392C458D34FA17DAA04C22975E417ABD18FC6407D0A04300D521A8A867FE850EB9BA6F1AD32084856AAFDE112247F20579F74950EFA36A803A47134BBF024F561DDE90042A5AF2547ED9520BE77AFB3B94617
6420060827033806 2 6 100 1535 2 DF09936D6567325CD4EDE975CB3B9BFFB26C5EC31A71ABA0931BE89AEEB81A531708540B7EA03875E5DF4935ED021F3955D5C941BB682DBDA5425F4EF84DD1F42C6DCC5E313D64DE5B658682A51785102358771DDB6C2B86079C3D0A4EB0DA149E7B2CAC0AC254FFBCD82DF11D74A4E0BBE3FA0AD0675B8A3C6E794E943B7F3799BA8C0F80D602F85D3032D206A96EB16DAFD2C036F8D4F3DA1CCDB2178F08BD851D7BB1C2E964F48F91B2546916E76A80D8E16F700E1FC194308DD6AFEBB7DB 6420111016114227 2 6 100 1535 5 F62191A170EC6171C620D3B334952F220077AA5C0FA7F1A7FE08C6B7B0C5F865CDB24346E3BE05B99E2D7FCC3582D0D2D637672EB0EB1DBB95BCE1A0CA54DFC83EBF598A24928CA42A5ABC2AE75E9802451B0C9E180D5D52698DAAF79DA3B968F72B48DA1D04246EA07C2FAD367392C458D34FA17DAA04C22975E417ABD18FC6407D0A04300D521A8A867FE850EB9BA6F1AD32084856AAFDE112247F20579F74950EFA36A803A47134BBF024F561DDE90042A5AF2547ED9520BE77AFB42121AF
6520060827034045 2 6 100 1535 2 DF09936D6567325CD4EDE975CB3B9BFFB26C5EC31A71ABA0931BE89AEEB81A531708540B7EA03875E5DF4935ED021F3955D5C941BB682DBDA5425F4EF84DD1F42C6DCC5E313D64DE5B658682A51785102358771DDB6C2B86079C3D0A4EB0DA149E7B2CAC0AC254FFBCD82DF11D74A4E0BBE3FA0AD0675B8A3C6E794E943B7F3799BA8C0F80D602F85D3032D206A96EB16DAFD2C036F8D4F3DA1CCDB2178F08BD851D7BB1C2E964F48F91B2546916E76A80D8E16F700E1FC194308DD6B009C8D3 6520111016114234 2 6 100 1535 2 F62191A170EC6171C620D3B334952F220077AA5C0FA7F1A7FE08C6B7B0C5F865CDB24346E3BE05B99E2D7FCC3582D0D2D637672EB0EB1DBB95BCE1A0CA54DFC83EBF598A24928CA42A5ABC2AE75E9802451B0C9E180D5D52698DAAF79DA3B968F72B48DA1D04246EA07C2FAD367392C458D34FA17DAA04C22975E417ABD18FC6407D0A04300D521A8A867FE850EB9BA6F1AD32084856AAFDE112247F20579F74950EFA36A803A47134BBF024F561DDE90042A5AF2547ED9520BE77AFB429B19B
6620060827034214 2 6 100 1535 5 DF09936D6567325CD4EDE975CB3B9BFFB26C5EC31A71ABA0931BE89AEEB81A531708540B7EA03875E5DF4935ED021F3955D5C941BB682DBDA5425F4EF84DD1F42C6DCC5E313D64DE5B658682A51785102358771DDB6C2B86079C3D0A4EB0DA149E7B2CAC0AC254FFBCD82DF11D74A4E0BBE3FA0AD0675B8A3C6E794E943B7F3799BA8C0F80D602F85D3032D206A96EB16DAFD2C036F8D4F3DA1CCDB2178F08BD851D7BB1C2E964F48F91B2546916E76A80D8E16F700E1FC194308DD6B0177447 6620111016114346 2 6 100 1535 5 F62191A170EC6171C620D3B334952F220077AA5C0FA7F1A7FE08C6B7B0C5F865CDB24346E3BE05B99E2D7FCC3582D0D2D637672EB0EB1DBB95BCE1A0CA54DFC83EBF598A24928CA42A5ABC2AE75E9802451B0C9E180D5D52698DAAF79DA3B968F72B48DA1D04246EA07C2FAD367392C458D34FA17DAA04C22975E417ABD18FC6407D0A04300D521A8A867FE850EB9BA6F1AD32084856AAFDE112247F20579F74950EFA36A803A47134BBF024F561DDE90042A5AF2547ED9520BE77AFB4DDFA1F
6720060827034316 2 6 100 1535 5 DF09936D6567325CD4EDE975CB3B9BFFB26C5EC31A71ABA0931BE89AEEB81A531708540B7EA03875E5DF4935ED021F3955D5C941BB682DBDA5425F4EF84DD1F42C6DCC5E313D64DE5B658682A51785102358771DDB6C2B86079C3D0A4EB0DA149E7B2CAC0AC254FFBCD82DF11D74A4E0BBE3FA0AD0675B8A3C6E794E943B7F3799BA8C0F80D602F85D3032D206A96EB16DAFD2C036F8D4F3DA1CCDB2178F08BD851D7BB1C2E964F48F91B2546916E76A80D8E16F700E1FC194308DD6B01EFC27 6720111016114401 2 6 100 1535 5 F62191A170EC6171C620D3B334952F220077AA5C0FA7F1A7FE08C6B7B0C5F865CDB24346E3BE05B99E2D7FCC3582D0D2D637672EB0EB1DBB95BCE1A0CA54DFC83EBF598A24928CA42A5ABC2AE75E9802451B0C9E180D5D52698DAAF79DA3B968F72B48DA1D04246EA07C2FAD367392C458D34FA17DAA04C22975E417ABD18FC6407D0A04300D521A8A867FE850EB9BA6F1AD32084856AAFDE112247F20579F74950EFA36A803A47134BBF024F561DDE90042A5AF2547ED9520BE77AFB4F9E0EF
6820060827034514 2 6 100 1535 2 DF09936D6567325CD4EDE975CB3B9BFFB26C5EC31A71ABA0931BE89AEEB81A531708540B7EA03875E5DF4935ED021F3955D5C941BB682DBDA5425F4EF84DD1F42C6DCC5E313D64DE5B658682A51785102358771DDB6C2B86079C3D0A4EB0DA149E7B2CAC0AC254FFBCD82DF11D74A4E0BBE3FA0AD0675B8A3C6E794E943B7F3799BA8C0F80D602F85D3032D206A96EB16DAFD2C036F8D4F3DA1CCDB2178F08BD851D7BB1C2E964F48F91B2546916E76A80D8E16F700E1FC194308DD6B0313F9B 6820111016114414 2 6 100 1535 2 F62191A170EC6171C620D3B334952F220077AA5C0FA7F1A7FE08C6B7B0C5F865CDB24346E3BE05B99E2D7FCC3582D0D2D637672EB0EB1DBB95BCE1A0CA54DFC83EBF598A24928CA42A5ABC2AE75E9802451B0C9E180D5D52698DAAF79DA3B968F72B48DA1D04246EA07C2FAD367392C458D34FA17DAA04C22975E417ABD18FC6407D0A04300D521A8A867FE850EB9BA6F1AD32084856AAFDE112247F20579F74950EFA36A803A47134BBF024F561DDE90042A5AF2547ED9520BE77AFB5154FFB
6920060827035109 2 6 100 1535 2 DF09936D6567325CD4EDE975CB3B9BFFB26C5EC31A71ABA0931BE89AEEB81A531708540B7EA03875E5DF4935ED021F3955D5C941BB682DBDA5425F4EF84DD1F42C6DCC5E313D64DE5B658682A51785102358771DDB6C2B86079C3D0A4EB0DA149E7B2CAC0AC254FFBCD82DF11D74A4E0BBE3FA0AD0675B8A3C6E794E943B7F3799BA8C0F80D602F85D3032D206A96EB16DAFD2C036F8D4F3DA1CCDB2178F08BD851D7BB1C2E964F48F91B2546916E76A80D8E16F700E1FC194308DD6B07D542B 6920111016114440 2 6 100 1535 2 F62191A170EC6171C620D3B334952F220077AA5C0FA7F1A7FE08C6B7B0C5F865CDB24346E3BE05B99E2D7FCC3582D0D2D637672EB0EB1DBB95BCE1A0CA54DFC83EBF598A24928CA42A5ABC2AE75E9802451B0C9E180D5D52698DAAF79DA3B968F72B48DA1D04246EA07C2FAD367392C458D34FA17DAA04C22975E417ABD18FC6407D0A04300D521A8A867FE850EB9BA6F1AD32084856AAFDE112247F20579F74950EFA36A803A47134BBF024F561DDE90042A5AF2547ED9520BE77AFB54FFD8B
7020060827035412 2 6 100 1535 5 DF09936D6567325CD4EDE975CB3B9BFFB26C5EC31A71ABA0931BE89AEEB81A531708540B7EA03875E5DF4935ED021F3955D5C941BB682DBDA5425F4EF84DD1F42C6DCC5E313D64DE5B658682A51785102358771DDB6C2B86079C3D0A4EB0DA149E7B2CAC0AC254FFBCD82DF11D74A4E0BBE3FA0AD0675B8A3C6E794E943B7F3799BA8C0F80D602F85D3032D206A96EB16DAFD2C036F8D4F3DA1CCDB2178F08BD851D7BB1C2E964F48F91B2546916E76A80D8E16F700E1FC194308DD6B0A3485F 7020111016114443 2 6 100 1535 2 F62191A170EC6171C620D3B334952F220077AA5C0FA7F1A7FE08C6B7B0C5F865CDB24346E3BE05B99E2D7FCC3582D0D2D637672EB0EB1DBB95BCE1A0CA54DFC83EBF598A24928CA42A5ABC2AE75E9802451B0C9E180D5D52698DAAF79DA3B968F72B48DA1D04246EA07C2FAD367392C458D34FA17DAA04C22975E417ABD18FC6407D0A04300D521A8A867FE850EB9BA6F1AD32084856AAFDE112247F20579F74950EFA36A803A47134BBF024F561DDE90042A5AF2547ED9520BE77AFB550068B
7120060827035525 2 6 100 1535 2 DF09936D6567325CD4EDE975CB3B9BFFB26C5EC31A71ABA0931BE89AEEB81A531708540B7EA03875E5DF4935ED021F3955D5C941BB682DBDA5425F4EF84DD1F42C6DCC5E313D64DE5B658682A51785102358771DDB6C2B86079C3D0A4EB0DA149E7B2CAC0AC254FFBCD82DF11D74A4E0BBE3FA0AD0675B8A3C6E794E943B7F3799BA8C0F80D602F85D3032D206A96EB16DAFD2C036F8D4F3DA1CCDB2178F08BD851D7BB1C2E964F48F91B2546916E76A80D8E16F700E1FC194308DD6B0AAF3BB 7120111016115243 2 6 100 2047 2 F98E7DDB0BB851699D3EA9E04987BACF7A646E98507456A1D7048046D818C6C164F762BDB39510B199F2E85E029F7F0CD378CE912E393CD1602EFCBE68131FBD0F866ED4F1C488D0569D7DCE44D49F4574BB9186C3458DF2D42BEFCACDA8E100337928A9B8D1E6C22BCC33437EBF4571711A4272EDE3F5B6A629D9BD44E9D4C41A2DAAFF5E417A2E0E90FA8438FB7868142F779EA9B1CC53AABDB13AAF2FE2580A55138826CBED8F8A0674A08513110E7C1F1ADF17371789DD766B53E454ADCBCEBDABBD050F469FF2F355841E8B823C0854825424DC87B273446CC70C2FDB828B43E017BEFC9AC6578DA0298C64CC2B6A33A6651CB55E720F193D7B62AF07E3
7220060827035829 2 6 100 1535 5 DF09936D6567325CD4EDE975CB3B9BFFB26C5EC31A71ABA0931BE89AEEB81A531708540B7EA03875E5DF4935ED021F3955D5C941BB682DBDA5425F4EF84DD1F42C6DCC5E313D64DE5B658682A51785102358771DDB6C2B86079C3D0A4EB0DA149E7B2CAC0AC254FFBCD82DF11D74A4E0BBE3FA0AD0675B8A3C6E794E943B7F3799BA8C0F80D602F85D3032D206A96EB16DAFD2C036F8D4F3DA1CCDB2178F08BD851D7BB1C2E964F48F91B2546916E76A80D8E16F700E1FC194308DD6B0CFE04F 7220111016115319 2 6 100 2047 2 F98E7DDB0BB851699D3EA9E04987BACF7A646E98507456A1D7048046D818C6C164F762BDB39510B199F2E85E029F7F0CD378CE912E393CD1602EFCBE68131FBD0F866ED4F1C488D0569D7DCE44D49F4574BB9186C3458DF2D42BEFCACDA8E100337928A9B8D1E6C22BCC33437EBF4571711A4272EDE3F5B6A629D9BD44E9D4C41A2DAAFF5E417A2E0E90FA8438FB7868142F779EA9B1CC53AABDB13AAF2FE2580A55138826CBED8F8A0674A08513110E7C1F1ADF17371789DD766B53E454ADCBCEBDABBD050F469FF2F355841E8B823C0854825424DC87B273446CC70C2FDB828B43E017BEFC9AC6578DA0298C64CC2B6A33A6651CB55E720F193D7B62D02043
7320060827040101 2 6 100 1535 5 DF09936D6567325CD4EDE975CB3B9BFFB26C5EC31A71ABA0931BE89AEEB81A531708540B7EA03875E5DF4935ED021F3955D5C941BB682DBDA5425F4EF84DD1F42C6DCC5E313D64DE5B658682A51785102358771DDB6C2B86079C3D0A4EB0DA149E7B2CAC0AC254FFBCD82DF11D74A4E0BBE3FA0AD0675B8A3C6E794E943B7F3799BA8C0F80D602F85D3032D206A96EB16DAFD2C036F8D4F3DA1CCDB2178F08BD851D7BB1C2E964F48F91B2546916E76A80D8E16F700E1FC194308DD6B0E988E7 7320111016115330 2 6 100 2047 2 F98E7DDB0BB851699D3EA9E04987BACF7A646E98507456A1D7048046D818C6C164F762BDB39510B199F2E85E029F7F0CD378CE912E393CD1602EFCBE68131FBD0F866ED4F1C488D0569D7DCE44D49F4574BB9186C3458DF2D42BEFCACDA8E100337928A9B8D1E6C22BCC33437EBF4571711A4272EDE3F5B6A629D9BD44E9D4C41A2DAAFF5E417A2E0E90FA8438FB7868142F779EA9B1CC53AABDB13AAF2FE2580A55138826CBED8F8A0674A08513110E7C1F1ADF17371789DD766B53E454ADCBCEBDABBD050F469FF2F355841E8B823C0854825424DC87B273446CC70C2FDB828B43E017BEFC9AC6578DA0298C64CC2B6A33A6651CB55E720F193D7B62D3C483
7420060827040504 2 6 100 1535 2 DF09936D6567325CD4EDE975CB3B9BFFB26C5EC31A71ABA0931BE89AEEB81A531708540B7EA03875E5DF4935ED021F3955D5C941BB682DBDA5425F4EF84DD1F42C6DCC5E313D64DE5B658682A51785102358771DDB6C2B86079C3D0A4EB0DA149E7B2CAC0AC254FFBCD82DF11D74A4E0BBE3FA0AD0675B8A3C6E794E943B7F3799BA8C0F80D602F85D3032D206A96EB16DAFD2C036F8D4F3DA1CCDB2178F08BD851D7BB1C2E964F48F91B2546916E76A80D8E16F700E1FC194308DD6B11D001B 7420111016115410 2 6 100 2047 5 F98E7DDB0BB851699D3EA9E04987BACF7A646E98507456A1D7048046D818C6C164F762BDB39510B199F2E85E029F7F0CD378CE912E393CD1602EFCBE68131FBD0F866ED4F1C488D0569D7DCE44D49F4574BB9186C3458DF2D42BEFCACDA8E100337928A9B8D1E6C22BCC33437EBF4571711A4272EDE3F5B6A629D9BD44E9D4C41A2DAAFF5E417A2E0E90FA8438FB7868142F779EA9B1CC53AABDB13AAF2FE2580A55138826CBED8F8A0674A08513110E7C1F1ADF17371789DD766B53E454ADCBCEBDABBD050F469FF2F355841E8B823C0854825424DC87B273446CC70C2FDB828B43E017BEFC9AC6578DA0298C64CC2B6A33A6651CB55E720F193D7B62F6F79F
7520060827040746 2 6 100 1535 5 DF09936D6567325CD4EDE975CB3B9BFFB26C5EC31A71ABA0931BE89AEEB81A531708540B7EA03875E5DF4935ED021F3955D5C941BB682DBDA5425F4EF84DD1F42C6DCC5E313D64DE5B658682A51785102358771DDB6C2B86079C3D0A4EB0DA149E7B2CAC0AC254FFBCD82DF11D74A4E0BBE3FA0AD0675B8A3C6E794E943B7F3799BA8C0F80D602F85D3032D206A96EB16DAFD2C036F8D4F3DA1CCDB2178F08BD851D7BB1C2E964F48F91B2546916E76A80D8E16F700E1FC194308DD6B13A45DF 7520111016115857 2 6 100 2047 2 F98E7DDB0BB851699D3EA9E04987BACF7A646E98507456A1D7048046D818C6C164F762BDB39510B199F2E85E029F7F0CD378CE912E393CD1602EFCBE68131FBD0F866ED4F1C488D0569D7DCE44D49F4574BB9186C3458DF2D42BEFCACDA8E100337928A9B8D1E6C22BCC33437EBF4571711A4272EDE3F5B6A629D9BD44E9D4C41A2DAAFF5E417A2E0E90FA8438FB7868142F779EA9B1CC53AABDB13AAF2FE2580A55138826CBED8F8A0674A08513110E7C1F1ADF17371789DD766B53E454ADCBCEBDABBD050F469FF2F355841E8B823C0854825424DC87B273446CC70C2FDB828B43E017BEFC9AC6578DA0298C64CC2B6A33A6651CB55E720F193D7B64365B73
7620060827041350 2 6 100 1535 5 DF09936D6567325CD4EDE975CB3B9BFFB26C5EC31A71ABA0931BE89AEEB81A531708540B7EA03875E5DF4935ED021F3955D5C941BB682DBDA5425F4EF84DD1F42C6DCC5E313D64DE5B658682A51785102358771DDB6C2B86079C3D0A4EB0DA149E7B2CAC0AC254FFBCD82DF11D74A4E0BBE3FA0AD0675B8A3C6E794E943B7F3799BA8C0F80D602F85D3032D206A96EB16DAFD2C036F8D4F3DA1CCDB2178F08BD851D7BB1C2E964F48F91B2546916E76A80D8E16F700E1FC194308DD6B188B89F 7620111016120019 2 6 100 2047 2 F98E7DDB0BB851699D3EA9E04987BACF7A646E98507456A1D7048046D818C6C164F762BDB39510B199F2E85E029F7F0CD378CE912E393CD1602EFCBE68131FBD0F866ED4F1C488D0569D7DCE44D49F4574BB9186C3458DF2D42BEFCACDA8E100337928A9B8D1E6C22BCC33437EBF4571711A4272EDE3F5B6A629D9BD44E9D4C41A2DAAFF5E417A2E0E90FA8438FB7868142F779EA9B1CC53AABDB13AAF2FE2580A55138826CBED8F8A0674A08513110E7C1F1ADF17371789DD766B53E454ADCBCEBDABBD050F469FF2F355841E8B823C0854825424DC87B273446CC70C2FDB828B43E017BEFC9AC6578DA0298C64CC2B6A33A6651CB55E720F193D7B6487F1EB
7720060827041513 2 6 100 1535 2 DF09936D6567325CD4EDE975CB3B9BFFB26C5EC31A71ABA0931BE89AEEB81A531708540B7EA03875E5DF4935ED021F3955D5C941BB682DBDA5425F4EF84DD1F42C6DCC5E313D64DE5B658682A51785102358771DDB6C2B86079C3D0A4EB0DA149E7B2CAC0AC254FFBCD82DF11D74A4E0BBE3FA0AD0675B8A3C6E794E943B7F3799BA8C0F80D602F85D3032D206A96EB16DAFD2C036F8D4F3DA1CCDB2178F08BD851D7BB1C2E964F48F91B2546916E76A80D8E16F700E1FC194308DD6B193B2EB 7720111016120100 2 6 100 2047 2 F98E7DDB0BB851699D3EA9E04987BACF7A646E98507456A1D7048046D818C6C164F762BDB39510B199F2E85E029F7F0CD378CE912E393CD1602EFCBE68131FBD0F866ED4F1C488D0569D7DCE44D49F4574BB9186C3458DF2D42BEFCACDA8E100337928A9B8D1E6C22BCC33437EBF4571711A4272EDE3F5B6A629D9BD44E9D4C41A2DAAFF5E417A2E0E90FA8438FB7868142F779EA9B1CC53AABDB13AAF2FE2580A55138826CBED8F8A0674A08513110E7C1F1ADF17371789DD766B53E454ADCBCEBDABBD050F469FF2F355841E8B823C0854825424DC87B273446CC70C2FDB828B43E017BEFC9AC6578DA0298C64CC2B6A33A6651CB55E720F193D7B64AF2F53
7820060827041621 2 6 100 1535 5 DF09936D6567325CD4EDE975CB3B9BFFB26C5EC31A71ABA0931BE89AEEB81A531708540B7EA03875E5DF4935ED021F3955D5C941BB682DBDA5425F4EF84DD1F42C6DCC5E313D64DE5B658682A51785102358771DDB6C2B86079C3D0A4EB0DA149E7B2CAC0AC254FFBCD82DF11D74A4E0BBE3FA0AD0675B8A3C6E794E943B7F3799BA8C0F80D602F85D3032D206A96EB16DAFD2C036F8D4F3DA1CCDB2178F08BD851D7BB1C2E964F48F91B2546916E76A80D8E16F700E1FC194308DD6B19B9807 7820111016120108 2 6 100 2047 5 F98E7DDB0BB851699D3EA9E04987BACF7A646E98507456A1D7048046D818C6C164F762BDB39510B199F2E85E029F7F0CD378CE912E393CD1602EFCBE68131FBD0F866ED4F1C488D0569D7DCE44D49F4574BB9186C3458DF2D42BEFCACDA8E100337928A9B8D1E6C22BCC33437EBF4571711A4272EDE3F5B6A629D9BD44E9D4C41A2DAAFF5E417A2E0E90FA8438FB7868142F779EA9B1CC53AABDB13AAF2FE2580A55138826CBED8F8A0674A08513110E7C1F1ADF17371789DD766B53E454ADCBCEBDABBD050F469FF2F355841E8B823C0854825424DC87B273446CC70C2FDB828B43E017BEFC9AC6578DA0298C64CC2B6A33A6651CB55E720F193D7B64B0009F
7920060827041657 2 6 100 1535 5 DF09936D6567325CD4EDE975CB3B9BFFB26C5EC31A71ABA0931BE89AEEB81A531708540B7EA03875E5DF4935ED021F3955D5C941BB682DBDA5425F4EF84DD1F42C6DCC5E313D64DE5B658682A51785102358771DDB6C2B86079C3D0A4EB0DA149E7B2CAC0AC254FFBCD82DF11D74A4E0BBE3FA0AD0675B8A3C6E794E943B7F3799BA8C0F80D602F85D3032D206A96EB16DAFD2C036F8D4F3DA1CCDB2178F08BD851D7BB1C2E964F48F91B2546916E76A80D8E16F700E1FC194308DD6B19C0107 7920111016120211 2 6 100 2047 5 F98E7DDB0BB851699D3EA9E04987BACF7A646E98507456A1D7048046D818C6C164F762BDB39510B199F2E85E029F7F0CD378CE912E393CD1602EFCBE68131FBD0F866ED4F1C488D0569D7DCE44D49F4574BB9186C3458DF2D42BEFCACDA8E100337928A9B8D1E6C22BCC33437EBF4571711A4272EDE3F5B6A629D9BD44E9D4C41A2DAAFF5E417A2E0E90FA8438FB7868142F779EA9B1CC53AABDB13AAF2FE2580A55138826CBED8F8A0674A08513110E7C1F1ADF17371789DD766B53E454ADCBCEBDABBD050F469FF2F355841E8B823C0854825424DC87B273446CC70C2FDB828B43E017BEFC9AC6578DA0298C64CC2B6A33A6651CB55E720F193D7B64EA9647
8020060827041817 2 6 100 1535 2 DF09936D6567325CD4EDE975CB3B9BFFB26C5EC31A71ABA0931BE89AEEB81A531708540B7EA03875E5DF4935ED021F3955D5C941BB682DBDA5425F4EF84DD1F42C6DCC5E313D64DE5B658682A51785102358771DDB6C2B86079C3D0A4EB0DA149E7B2CAC0AC254FFBCD82DF11D74A4E0BBE3FA0AD0675B8A3C6E794E943B7F3799BA8C0F80D602F85D3032D206A96EB16DAFD2C036F8D4F3DA1CCDB2178F08BD851D7BB1C2E964F48F91B2546916E76A80D8E16F700E1FC194308DD6B1A6BE4B 8020111016120312 2 6 100 2047 5 F98E7DDB0BB851699D3EA9E04987BACF7A646E98507456A1D7048046D818C6C164F762BDB39510B199F2E85E029F7F0CD378CE912E393CD1602EFCBE68131FBD0F866ED4F1C488D0569D7DCE44D49F4574BB9186C3458DF2D42BEFCACDA8E100337928A9B8D1E6C22BCC33437EBF4571711A4272EDE3F5B6A629D9BD44E9D4C41A2DAAFF5E417A2E0E90FA8438FB7868142F779EA9B1CC53AABDB13AAF2FE2580A55138826CBED8F8A0674A08513110E7C1F1ADF17371789DD766B53E454ADCBCEBDABBD050F469FF2F355841E8B823C0854825424DC87B273446CC70C2FDB828B43E017BEFC9AC6578DA0298C64CC2B6A33A6651CB55E720F193D7B65276D57
8120060827052122 2 6 100 2047 2 C038282DE061BE1AD34F31325EFE9B1D8520DB14276CEB61FE3A2CB8D77FFE3B9A067505205BBA8353847FD2EA1E2471E4294862A5D4C4F9A2B80F9DA0619327CDBF2EB608B0B5549294A955972AA3512821B24782DD8AB97B53AAB04B48180394ABFBC4DCF9B819FC0CB5AC1275AC5F16EC378163501E4B27D49C67F660333888F1D503B96FA9C6C880543D8B5F04D70FE508FFCA161798AD32015145B8E9AD43AAB48ADA81FD1E5A8EA7711A8FF57EC7C4C081B47FAB0C2E9FA468E70DD6700F3412224890D5E99527A596CE635195F3A6D35E563BF4892DF2C79C809704411018D919102D12CB112CE1E66EBF5DB9F409F6C82A6A6E1E21E23532C77E8ED3 8120111016120424 2 6 100 2047 5 F98E7DDB0BB851699D3EA9E04987BACF7A646E98507456A1D7048046D818C6C164F762BDB39510B199F2E85E029F7F0CD378CE912E393CD1602EFCBE68131FBD0F866ED4F1C488D0569D7DCE44D49F4574BB9186C3458DF2D42BEFCACDA8E100337928A9B8D1E6C22BCC33437EBF4571711A4272EDE3F5B6A629D9BD44E9D4C41A2DAAFF5E417A2E0E90FA8438FB7868142F779EA9B1CC53AABDB13AAF2FE2580A55138826CBED8F8A0674A08513110E7C1F1ADF17371789DD766B53E454ADCBCEBDABBD050F469FF2F355841E8B823C0854825424DC87B273446CC70C2FDB828B43E017BEFC9AC6578DA0298C64CC2B6A33A6651CB55E720F193D7B656D2937
8220060827055248 2 6 100 2047 5 C038282DE061BE1AD34F31325EFE9B1D8520DB14276CEB61FE3A2CB8D77FFE3B9A067505205BBA8353847FD2EA1E2471E4294862A5D4C4F9A2B80F9DA0619327CDBF2EB608B0B5549294A955972AA3512821B24782DD8AB97B53AAB04B48180394ABFBC4DCF9B819FC0CB5AC1275AC5F16EC378163501E4B27D49C67F660333888F1D503B96FA9C6C880543D8B5F04D70FE508FFCA161798AD32015145B8E9AD43AAB48ADA81FD1E5A8EA7711A8FF57EC7C4C081B47FAB0C2E9FA468E70DD6700F3412224890D5E99527A596CE635195F3A6D35E563BF4892DF2C79C809704411018D919102D12CB112CE1E66EBF5DB9F409F6C82A6A6E1E21E23532C8549C07 8220111016120513 2 6 100 2047 5 F98E7DDB0BB851699D3EA9E04987BACF7A646E98507456A1D7048046D818C6C164F762BDB39510B199F2E85E029F7F0CD378CE912E393CD1602EFCBE68131FBD0F866ED4F1C488D0569D7DCE44D49F4574BB9186C3458DF2D42BEFCACDA8E100337928A9B8D1E6C22BCC33437EBF4571711A4272EDE3F5B6A629D9BD44E9D4C41A2DAAFF5E417A2E0E90FA8438FB7868142F779EA9B1CC53AABDB13AAF2FE2580A55138826CBED8F8A0674A08513110E7C1F1ADF17371789DD766B53E454ADCBCEBDABBD050F469FF2F355841E8B823C0854825424DC87B273446CC70C2FDB828B43E017BEFC9AC6578DA0298C64CC2B6A33A6651CB55E720F193D7B659D1C5F
8320060827055453 2 6 100 2047 5 C038282DE061BE1AD34F31325EFE9B1D8520DB14276CEB61FE3A2CB8D77FFE3B9A067505205BBA8353847FD2EA1E2471E4294862A5D4C4F9A2B80F9DA0619327CDBF2EB608B0B5549294A955972AA3512821B24782DD8AB97B53AAB04B48180394ABFBC4DCF9B819FC0CB5AC1275AC5F16EC378163501E4B27D49C67F660333888F1D503B96FA9C6C880543D8B5F04D70FE508FFCA161798AD32015145B8E9AD43AAB48ADA81FD1E5A8EA7711A8FF57EC7C4C081B47FAB0C2E9FA468E70DD6700F3412224890D5E99527A596CE635195F3A6D35E563BF4892DF2C79C809704411018D919102D12CB112CE1E66EBF5DB9F409F6C82A6A6E1E21E23532C85B17DF 8320111016120533 2 6 100 2047 5 F98E7DDB0BB851699D3EA9E04987BACF7A646E98507456A1D7048046D818C6C164F762BDB39510B199F2E85E029F7F0CD378CE912E393CD1602EFCBE68131FBD0F866ED4F1C488D0569D7DCE44D49F4574BB9186C3458DF2D42BEFCACDA8E100337928A9B8D1E6C22BCC33437EBF4571711A4272EDE3F5B6A629D9BD44E9D4C41A2DAAFF5E417A2E0E90FA8438FB7868142F779EA9B1CC53AABDB13AAF2FE2580A55138826CBED8F8A0674A08513110E7C1F1ADF17371789DD766B53E454ADCBCEBDABBD050F469FF2F355841E8B823C0854825424DC87B273446CC70C2FDB828B43E017BEFC9AC6578DA0298C64CC2B6A33A6651CB55E720F193D7B65AC51CF
8420060827060456 2 6 100 2047 5 C038282DE061BE1AD34F31325EFE9B1D8520DB14276CEB61FE3A2CB8D77FFE3B9A067505205BBA8353847FD2EA1E2471E4294862A5D4C4F9A2B80F9DA0619327CDBF2EB608B0B5549294A955972AA3512821B24782DD8AB97B53AAB04B48180394ABFBC4DCF9B819FC0CB5AC1275AC5F16EC378163501E4B27D49C67F660333888F1D503B96FA9C6C880543D8B5F04D70FE508FFCA161798AD32015145B8E9AD43AAB48ADA81FD1E5A8EA7711A8FF57EC7C4C081B47FAB0C2E9FA468E70DD6700F3412224890D5E99527A596CE635195F3A6D35E563BF4892DF2C79C809704411018D919102D12CB112CE1E66EBF5DB9F409F6C82A6A6E1E21E23532C899BBE7 8420111016120631 2 6 100 2047 5 F98E7DDB0BB851699D3EA9E04987BACF7A646E98507456A1D7048046D818C6C164F762BDB39510B199F2E85E029F7F0CD378CE912E393CD1602EFCBE68131FBD0F866ED4F1C488D0569D7DCE44D49F4574BB9186C3458DF2D42BEFCACDA8E100337928A9B8D1E6C22BCC33437EBF4571711A4272EDE3F5B6A629D9BD44E9D4C41A2DAAFF5E417A2E0E90FA8438FB7868142F779EA9B1CC53AABDB13AAF2FE2580A55138826CBED8F8A0674A08513110E7C1F1ADF17371789DD766B53E454ADCBCEBDABBD050F469FF2F355841E8B823C0854825424DC87B273446CC70C2FDB828B43E017BEFC9AC6578DA0298C64CC2B6A33A6651CB55E720F193D7B65E62417
8520060827061203 2 6 100 2047 2 C038282DE061BE1AD34F31325EFE9B1D8520DB14276CEB61FE3A2CB8D77FFE3B9A067505205BBA8353847FD2EA1E2471E4294862A5D4C4F9A2B80F9DA0619327CDBF2EB608B0B5549294A955972AA3512821B24782DD8AB97B53AAB04B48180394ABFBC4DCF9B819FC0CB5AC1275AC5F16EC378163501E4B27D49C67F660333888F1D503B96FA9C6C880543D8B5F04D70FE508FFCA161798AD32015145B8E9AD43AAB48ADA81FD1E5A8EA7711A8FF57EC7C4C081B47FAB0C2E9FA468E70DD6700F3412224890D5E99527A596CE635195F3A6D35E563BF4892DF2C79C809704411018D919102D12CB112CE1E66EBF5DB9F409F6C82A6A6E1E21E23532C8C362B3 8520111016121024 2 6 100 2047 2 F98E7DDB0BB851699D3EA9E04987BACF7A646E98507456A1D7048046D818C6C164F762BDB39510B199F2E85E029F7F0CD378CE912E393CD1602EFCBE68131FBD0F866ED4F1C488D0569D7DCE44D49F4574BB9186C3458DF2D42BEFCACDA8E100337928A9B8D1E6C22BCC33437EBF4571711A4272EDE3F5B6A629D9BD44E9D4C41A2DAAFF5E417A2E0E90FA8438FB7868142F779EA9B1CC53AABDB13AAF2FE2580A55138826CBED8F8A0674A08513110E7C1F1ADF17371789DD766B53E454ADCBCEBDABBD050F469FF2F355841E8B823C0854825424DC87B273446CC70C2FDB828B43E017BEFC9AC6578DA0298C64CC2B6A33A6651CB55E720F193D7B66E230FB
8620060827061433 2 6 100 2047 5 C038282DE061BE1AD34F31325EFE9B1D8520DB14276CEB61FE3A2CB8D77FFE3B9A067505205BBA8353847FD2EA1E2471E4294862A5D4C4F9A2B80F9DA0619327CDBF2EB608B0B5549294A955972AA3512821B24782DD8AB97B53AAB04B48180394ABFBC4DCF9B819FC0CB5AC1275AC5F16EC378163501E4B27D49C67F660333888F1D503B96FA9C6C880543D8B5F04D70FE508FFCA161798AD32015145B8E9AD43AAB48ADA81FD1E5A8EA7711A8FF57EC7C4C081B47FAB0C2E9FA468E70DD6700F3412224890D5E99527A596CE635195F3A6D35E563BF4892DF2C79C809704411018D919102D12CB112CE1E66EBF5DB9F409F6C82A6A6E1E21E23532C8CC69F7 8620111016121123 2 6 100 2047 5 F98E7DDB0BB851699D3EA9E04987BACF7A646E98507456A1D7048046D818C6C164F762BDB39510B199F2E85E029F7F0CD378CE912E393CD1602EFCBE68131FBD0F866ED4F1C488D0569D7DCE44D49F4574BB9186C3458DF2D42BEFCACDA8E100337928A9B8D1E6C22BCC33437EBF4571711A4272EDE3F5B6A629D9BD44E9D4C41A2DAAFF5E417A2E0E90FA8438FB7868142F779EA9B1CC53AABDB13AAF2FE2580A55138826CBED8F8A0674A08513110E7C1F1ADF17371789DD766B53E454ADCBCEBDABBD050F469FF2F355841E8B823C0854825424DC87B273446CC70C2FDB828B43E017BEFC9AC6578DA0298C64CC2B6A33A6651CB55E720F193D7B671AE1CF
8720060827061904 2 6 100 2047 5 C038282DE061BE1AD34F31325EFE9B1D8520DB14276CEB61FE3A2CB8D77FFE3B9A067505205BBA8353847FD2EA1E2471E4294862A5D4C4F9A2B80F9DA0619327CDBF2EB608B0B5549294A955972AA3512821B24782DD8AB97B53AAB04B48180394ABFBC4DCF9B819FC0CB5AC1275AC5F16EC378163501E4B27D49C67F660333888F1D503B96FA9C6C880543D8B5F04D70FE508FFCA161798AD32015145B8E9AD43AAB48ADA81FD1E5A8EA7711A8FF57EC7C4C081B47FAB0C2E9FA468E70DD6700F3412224890D5E99527A596CE635195F3A6D35E563BF4892DF2C79C809704411018D919102D12CB112CE1E66EBF5DB9F409F6C82A6A6E1E21E23532C8E44BC7 8720111016121152 2 6 100 2047 2 F98E7DDB0BB851699D3EA9E04987BACF7A646E98507456A1D7048046D818C6C164F762BDB39510B199F2E85E029F7F0CD378CE912E393CD1602EFCBE68131FBD0F866ED4F1C488D0569D7DCE44D49F4574BB9186C3458DF2D42BEFCACDA8E100337928A9B8D1E6C22BCC33437EBF4571711A4272EDE3F5B6A629D9BD44E9D4C41A2DAAFF5E417A2E0E90FA8438FB7868142F779EA9B1CC53AABDB13AAF2FE2580A55138826CBED8F8A0674A08513110E7C1F1ADF17371789DD766B53E454ADCBCEBDABBD050F469FF2F355841E8B823C0854825424DC87B273446CC70C2FDB828B43E017BEFC9AC6578DA0298C64CC2B6A33A6651CB55E720F193D7B6732A9B3
8820060827062255 2 6 100 2047 5 C038282DE061BE1AD34F31325EFE9B1D8520DB14276CEB61FE3A2CB8D77FFE3B9A067505205BBA8353847FD2EA1E2471E4294862A5D4C4F9A2B80F9DA0619327CDBF2EB608B0B5549294A955972AA3512821B24782DD8AB97B53AAB04B48180394ABFBC4DCF9B819FC0CB5AC1275AC5F16EC378163501E4B27D49C67F660333888F1D503B96FA9C6C880543D8B5F04D70FE508FFCA161798AD32015145B8E9AD43AAB48ADA81FD1E5A8EA7711A8FF57EC7C4C081B47FAB0C2E9FA468E70DD6700F3412224890D5E99527A596CE635195F3A6D35E563BF4892DF2C79C809704411018D919102D12CB112CE1E66EBF5DB9F409F6C82A6A6E1E21E23532C8F6B23F 8820111016121256 2 6 100 2047 5 F98E7DDB0BB851699D3EA9E04987BACF7A646E98507456A1D7048046D818C6C164F762BDB39510B199F2E85E029F7F0CD378CE912E393CD1602EFCBE68131FBD0F866ED4F1C488D0569D7DCE44D49F4574BB9186C3458DF2D42BEFCACDA8E100337928A9B8D1E6C22BCC33437EBF4571711A4272EDE3F5B6A629D9BD44E9D4C41A2DAAFF5E417A2E0E90FA8438FB7868142F779EA9B1CC53AABDB13AAF2FE2580A55138826CBED8F8A0674A08513110E7C1F1ADF17371789DD766B53E454ADCBCEBDABBD050F469FF2F355841E8B823C0854825424DC87B273446CC70C2FDB828B43E017BEFC9AC6578DA0298C64CC2B6A33A6651CB55E720F193D7B677372C7
8920060827063052 2 6 100 2047 5 C038282DE061BE1AD34F31325EFE9B1D8520DB14276CEB61FE3A2CB8D77FFE3B9A067505205BBA8353847FD2EA1E2471E4294862A5D4C4F9A2B80F9DA0619327CDBF2EB608B0B5549294A955972AA3512821B24782DD8AB97B53AAB04B48180394ABFBC4DCF9B819FC0CB5AC1275AC5F16EC378163501E4B27D49C67F660333888F1D503B96FA9C6C880543D8B5F04D70FE508FFCA161798AD32015145B8E9AD43AAB48ADA81FD1E5A8EA7711A8FF57EC7C4C081B47FAB0C2E9FA468E70DD6700F3412224890D5E99527A596CE635195F3A6D35E563BF4892DF2C79C809704411018D919102D12CB112CE1E66EBF5DB9F409F6C82A6A6E1E21E23532C926C817 8920111016121308 2 6 100 2047 2 F98E7DDB0BB851699D3EA9E04987BACF7A646E98507456A1D7048046D818C6C164F762BDB39510B199F2E85E029F7F0CD378CE912E393CD1602EFCBE68131FBD0F866ED4F1C488D0569D7DCE44D49F4574BB9186C3458DF2D42BEFCACDA8E100337928A9B8D1E6C22BCC33437EBF4571711A4272EDE3F5B6A629D9BD44E9D4C41A2DAAFF5E417A2E0E90FA8438FB7868142F779EA9B1CC53AABDB13AAF2FE2580A55138826CBED8F8A0674A08513110E7C1F1ADF17371789DD766B53E454ADCBCEBDABBD050F469FF2F355841E8B823C0854825424DC87B273446CC70C2FDB828B43E017BEFC9AC6578DA0298C64CC2B6A33A6651CB55E720F193D7B67792893
9020060827063354 2 6 100 2047 5 C038282DE061BE1AD34F31325EFE9B1D8520DB14276CEB61FE3A2CB8D77FFE3B9A067505205BBA8353847FD2EA1E2471E4294862A5D4C4F9A2B80F9DA0619327CDBF2EB608B0B5549294A955972AA3512821B24782DD8AB97B53AAB04B48180394ABFBC4DCF9B819FC0CB5AC1275AC5F16EC378163501E4B27D49C67F660333888F1D503B96FA9C6C880543D8B5F04D70FE508FFCA161798AD32015145B8E9AD43AAB48ADA81FD1E5A8EA7711A8FF57EC7C4C081B47FAB0C2E9FA468E70DD6700F3412224890D5E99527A596CE635195F3A6D35E563BF4892DF2C79C809704411018D919102D12CB112CE1E66EBF5DB9F409F6C82A6A6E1E21E23532C9351ABF 9020111016121745 2 6 100 2047 5 F98E7DDB0BB851699D3EA9E04987BACF7A646E98507456A1D7048046D818C6C164F762BDB39510B199F2E85E029F7F0CD378CE912E393CD1602EFCBE68131FBD0F866ED4F1C488D0569D7DCE44D49F4574BB9186C3458DF2D42BEFCACDA8E100337928A9B8D1E6C22BCC33437EBF4571711A4272EDE3F5B6A629D9BD44E9D4C41A2DAAFF5E417A2E0E90FA8438FB7868142F779EA9B1CC53AABDB13AAF2FE2580A55138826CBED8F8A0674A08513110E7C1F1ADF17371789DD766B53E454ADCBCEBDABBD050F469FF2F355841E8B823C0854825424DC87B273446CC70C2FDB828B43E017BEFC9AC6578DA0298C64CC2B6A33A6651CB55E720F193D7B68A8BB57
9120060827063925 2 6 100 2047 2 C038282DE061BE1AD34F31325EFE9B1D8520DB14276CEB61FE3A2CB8D77FFE3B9A067505205BBA8353847FD2EA1E2471E4294862A5D4C4F9A2B80F9DA0619327CDBF2EB608B0B5549294A955972AA3512821B24782DD8AB97B53AAB04B48180394ABFBC4DCF9B819FC0CB5AC1275AC5F16EC378163501E4B27D49C67F660333888F1D503B96FA9C6C880543D8B5F04D70FE508FFCA161798AD32015145B8E9AD43AAB48ADA81FD1E5A8EA7711A8FF57EC7C4C081B47FAB0C2E9FA468E70DD6700F3412224890D5E99527A596CE635195F3A6D35E563BF4892DF2C79C809704411018D919102D12CB112CE1E66EBF5DB9F409F6C82A6A6E1E21E23532C9541A43 9120111016121829 2 6 100 2047 2 F98E7DDB0BB851699D3EA9E04987BACF7A646E98507456A1D7048046D818C6C164F762BDB39510B199F2E85E029F7F0CD378CE912E393CD1602EFCBE68131FBD0F866ED4F1C488D0569D7DCE44D49F4574BB9186C3458DF2D42BEFCACDA8E100337928A9B8D1E6C22BCC33437EBF4571711A4272EDE3F5B6A629D9BD44E9D4C41A2DAAFF5E417A2E0E90FA8438FB7868142F779EA9B1CC53AABDB13AAF2FE2580A55138826CBED8F8A0674A08513110E7C1F1ADF17371789DD766B53E454ADCBCEBDABBD050F469FF2F355841E8B823C0854825424DC87B273446CC70C2FDB828B43E017BEFC9AC6578DA0298C64CC2B6A33A6651CB55E720F193D7B68D4DA1B
9220060827064904 2 6 100 2047 5 C038282DE061BE1AD34F31325EFE9B1D8520DB14276CEB61FE3A2CB8D77FFE3B9A067505205BBA8353847FD2EA1E2471E4294862A5D4C4F9A2B80F9DA0619327CDBF2EB608B0B5549294A955972AA3512821B24782DD8AB97B53AAB04B48180394ABFBC4DCF9B819FC0CB5AC1275AC5F16EC378163501E4B27D49C67F660333888F1D503B96FA9C6C880543D8B5F04D70FE508FFCA161798AD32015145B8E9AD43AAB48ADA81FD1E5A8EA7711A8FF57EC7C4C081B47FAB0C2E9FA468E70DD6700F3412224890D5E99527A596CE635195F3A6D35E563BF4892DF2C79C809704411018D919102D12CB112CE1E66EBF5DB9F409F6C82A6A6E1E21E23532C98CFAE7 9220111016121844 2 6 100 2047 2 F98E7DDB0BB851699D3EA9E04987BACF7A646E98507456A1D7048046D818C6C164F762BDB39510B199F2E85E029F7F0CD378CE912E393CD1602EFCBE68131FBD0F866ED4F1C488D0569D7DCE44D49F4574BB9186C3458DF2D42BEFCACDA8E100337928A9B8D1E6C22BCC33437EBF4571711A4272EDE3F5B6A629D9BD44E9D4C41A2DAAFF5E417A2E0E90FA8438FB7868142F779EA9B1CC53AABDB13AAF2FE2580A55138826CBED8F8A0674A08513110E7C1F1ADF17371789DD766B53E454ADCBCEBDABBD050F469FF2F355841E8B823C0854825424DC87B273446CC70C2FDB828B43E017BEFC9AC6578DA0298C64CC2B6A33A6651CB55E720F193D7B68DE0CBB
9320060827070314 2 6 100 2047 2 C038282DE061BE1AD34F31325EFE9B1D8520DB14276CEB61FE3A2CB8D77FFE3B9A067505205BBA8353847FD2EA1E2471E4294862A5D4C4F9A2B80F9DA0619327CDBF2EB608B0B5549294A955972AA3512821B24782DD8AB97B53AAB04B48180394ABFBC4DCF9B819FC0CB5AC1275AC5F16EC378163501E4B27D49C67F660333888F1D503B96FA9C6C880543D8B5F04D70FE508FFCA161798AD32015145B8E9AD43AAB48ADA81FD1E5A8EA7711A8FF57EC7C4C081B47FAB0C2E9FA468E70DD6700F3412224890D5E99527A596CE635195F3A6D35E563BF4892DF2C79C809704411018D919102D12CB112CE1E66EBF5DB9F409F6C82A6A6E1E21E23532C9E30823 9320111016121951 2 6 100 2047 5 F98E7DDB0BB851699D3EA9E04987BACF7A646E98507456A1D7048046D818C6C164F762BDB39510B199F2E85E029F7F0CD378CE912E393CD1602EFCBE68131FBD0F866ED4F1C488D0569D7DCE44D49F4574BB9186C3458DF2D42BEFCACDA8E100337928A9B8D1E6C22BCC33437EBF4571711A4272EDE3F5B6A629D9BD44E9D4C41A2DAAFF5E417A2E0E90FA8438FB7868142F779EA9B1CC53AABDB13AAF2FE2580A55138826CBED8F8A0674A08513110E7C1F1ADF17371789DD766B53E454ADCBCEBDABBD050F469FF2F355841E8B823C0854825424DC87B273446CC70C2FDB828B43E017BEFC9AC6578DA0298C64CC2B6A33A6651CB55E720F193D7B69233E77
9420060827070806 2 6 100 2047 2 C038282DE061BE1AD34F31325EFE9B1D8520DB14276CEB61FE3A2CB8D77FFE3B9A067505205BBA8353847FD2EA1E2471E4294862A5D4C4F9A2B80F9DA0619327CDBF2EB608B0B5549294A955972AA3512821B24782DD8AB97B53AAB04B48180394ABFBC4DCF9B819FC0CB5AC1275AC5F16EC378163501E4B27D49C67F660333888F1D503B96FA9C6C880543D8B5F04D70FE508FFCA161798AD32015145B8E9AD43AAB48ADA81FD1E5A8EA7711A8FF57EC7C4C081B47FAB0C2E9FA468E70DD6700F3412224890D5E99527A596CE635195F3A6D35E563BF4892DF2C79C809704411018D919102D12CB112CE1E66EBF5DB9F409F6C82A6A6E1E21E23532C9F90C33 9420111016122306 2 6 100 2047 5 F98E7DDB0BB851699D3EA9E04987BACF7A646E98507456A1D7048046D818C6C164F762BDB39510B199F2E85E029F7F0CD378CE912E393CD1602EFCBE68131FBD0F866ED4F1C488D0569D7DCE44D49F4574BB9186C3458DF2D42BEFCACDA8E100337928A9B8D1E6C22BCC33437EBF4571711A4272EDE3F5B6A629D9BD44E9D4C41A2DAAFF5E417A2E0E90FA8438FB7868142F779EA9B1CC53AABDB13AAF2FE2580A55138826CBED8F8A0674A08513110E7C1F1ADF17371789DD766B53E454ADCBCEBDABBD050F469FF2F355841E8B823C0854825424DC87B273446CC70C2FDB828B43E017BEFC9AC6578DA0298C64CC2B6A33A6651CB55E720F193D7B69F6C057
9520060827071119 2 6 100 2047 5 C038282DE061BE1AD34F31325EFE9B1D8520DB14276CEB61FE3A2CB8D77FFE3B9A067505205BBA8353847FD2EA1E2471E4294862A5D4C4F9A2B80F9DA0619327CDBF2EB608B0B5549294A955972AA3512821B24782DD8AB97B53AAB04B48180394ABFBC4DCF9B819FC0CB5AC1275AC5F16EC378163501E4B27D49C67F660333888F1D503B96FA9C6C880543D8B5F04D70FE508FFCA161798AD32015145B8E9AD43AAB48ADA81FD1E5A8EA7711A8FF57EC7C4C081B47FAB0C2E9FA468E70DD6700F3412224890D5E99527A596CE635195F3A6D35E563BF4892DF2C79C809704411018D919102D12CB112CE1E66EBF5DB9F409F6C82A6A6E1E21E23532CA04D477 9520111016122320 2 6 100 2047 5 F98E7DDB0BB851699D3EA9E04987BACF7A646E98507456A1D7048046D818C6C164F762BDB39510B199F2E85E029F7F0CD378CE912E393CD1602EFCBE68131FBD0F866ED4F1C488D0569D7DCE44D49F4574BB9186C3458DF2D42BEFCACDA8E100337928A9B8D1E6C22BCC33437EBF4571711A4272EDE3F5B6A629D9BD44E9D4C41A2DAAFF5E417A2E0E90FA8438FB7868142F779EA9B1CC53AABDB13AAF2FE2580A55138826CBED8F8A0674A08513110E7C1F1ADF17371789DD766B53E454ADCBCEBDABBD050F469FF2F355841E8B823C0854825424DC87B273446CC70C2FDB828B43E017BEFC9AC6578DA0298C64CC2B6A33A6651CB55E720F193D7B69FDDA0F
9620060827072534 2 6 100 2047 2 C038282DE061BE1AD34F31325EFE9B1D8520DB14276CEB61FE3A2CB8D77FFE3B9A067505205BBA8353847FD2EA1E2471E4294862A5D4C4F9A2B80F9DA0619327CDBF2EB608B0B5549294A955972AA3512821B24782DD8AB97B53AAB04B48180394ABFBC4DCF9B819FC0CB5AC1275AC5F16EC378163501E4B27D49C67F660333888F1D503B96FA9C6C880543D8B5F04D70FE508FFCA161798AD32015145B8E9AD43AAB48ADA81FD1E5A8EA7711A8FF57EC7C4C081B47FAB0C2E9FA468E70DD6700F3412224890D5E99527A596CE635195F3A6D35E563BF4892DF2C79C809704411018D919102D12CB112CE1E66EBF5DB9F409F6C82A6A6E1E21E23532CA5A1ADB 9620111016122337 2 6 100 2047 2 F98E7DDB0BB851699D3EA9E04987BACF7A646E98507456A1D7048046D818C6C164F762BDB39510B199F2E85E029F7F0CD378CE912E393CD1602EFCBE68131FBD0F866ED4F1C488D0569D7DCE44D49F4574BB9186C3458DF2D42BEFCACDA8E100337928A9B8D1E6C22BCC33437EBF4571711A4272EDE3F5B6A629D9BD44E9D4C41A2DAAFF5E417A2E0E90FA8438FB7868142F779EA9B1CC53AABDB13AAF2FE2580A55138826CBED8F8A0674A08513110E7C1F1ADF17371789DD766B53E454ADCBCEBDABBD050F469FF2F355841E8B823C0854825424DC87B273446CC70C2FDB828B43E017BEFC9AC6578DA0298C64CC2B6A33A6651CB55E720F193D7B6A08ADEB
9720060827073212 2 6 100 2047 2 C038282DE061BE1AD34F31325EFE9B1D8520DB14276CEB61FE3A2CB8D77FFE3B9A067505205BBA8353847FD2EA1E2471E4294862A5D4C4F9A2B80F9DA0619327CDBF2EB608B0B5549294A955972AA3512821B24782DD8AB97B53AAB04B48180394ABFBC4DCF9B819FC0CB5AC1275AC5F16EC378163501E4B27D49C67F660333888F1D503B96FA9C6C880543D8B5F04D70FE508FFCA161798AD32015145B8E9AD43AAB48ADA81FD1E5A8EA7711A8FF57EC7C4C081B47FAB0C2E9FA468E70DD6700F3412224890D5E99527A596CE635195F3A6D35E563BF4892DF2C79C809704411018D919102D12CB112CE1E66EBF5DB9F409F6C82A6A6E1E21E23532CA7E88A3 9720111016122357 2 6 100 2047 5 F98E7DDB0BB851699D3EA9E04987BACF7A646E98507456A1D7048046D818C6C164F762BDB39510B199F2E85E029F7F0CD378CE912E393CD1602EFCBE68131FBD0F866ED4F1C488D0569D7DCE44D49F4574BB9186C3458DF2D42BEFCACDA8E100337928A9B8D1E6C22BCC33437EBF4571711A4272EDE3F5B6A629D9BD44E9D4C41A2DAAFF5E417A2E0E90FA8438FB7868142F779EA9B1CC53AABDB13AAF2FE2580A55138826CBED8F8A0674A08513110E7C1F1ADF17371789DD766B53E454ADCBCEBDABBD050F469FF2F355841E8B823C0854825424DC87B273446CC70C2FDB828B43E017BEFC9AC6578DA0298C64CC2B6A33A6651CB55E720F193D7B6A17777F
9820060827073641 2 6 100 2047 2 C038282DE061BE1AD34F31325EFE9B1D8520DB14276CEB61FE3A2CB8D77FFE3B9A067505205BBA8353847FD2EA1E2471E4294862A5D4C4F9A2B80F9DA0619327CDBF2EB608B0B5549294A955972AA3512821B24782DD8AB97B53AAB04B48180394ABFBC4DCF9B819FC0CB5AC1275AC5F16EC378163501E4B27D49C67F660333888F1D503B96FA9C6C880543D8B5F04D70FE508FFCA161798AD32015145B8E9AD43AAB48ADA81FD1E5A8EA7711A8FF57EC7C4C081B47FAB0C2E9FA468E70DD6700F3412224890D5E99527A596CE635195F3A6D35E563BF4892DF2C79C809704411018D919102D12CB112CE1E66EBF5DB9F409F6C82A6A6E1E21E23532CA93A193 9820111016122422 2 6 100 2047 2 F98E7DDB0BB851699D3EA9E04987BACF7A646E98507456A1D7048046D818C6C164F762BDB39510B199F2E85E029F7F0CD378CE912E393CD1602EFCBE68131FBD0F866ED4F1C488D0569D7DCE44D49F4574BB9186C3458DF2D42BEFCACDA8E100337928A9B8D1E6C22BCC33437EBF4571711A4272EDE3F5B6A629D9BD44E9D4C41A2DAAFF5E417A2E0E90FA8438FB7868142F779EA9B1CC53AABDB13AAF2FE2580A55138826CBED8F8A0674A08513110E7C1F1ADF17371789DD766B53E454ADCBCEBDABBD050F469FF2F355841E8B823C0854825424DC87B273446CC70C2FDB828B43E017BEFC9AC6578DA0298C64CC2B6A33A6651CB55E720F193D7B6A2C5253
9920060827073850 2 6 100 2047 5 C038282DE061BE1AD34F31325EFE9B1D8520DB14276CEB61FE3A2CB8D77FFE3B9A067505205BBA8353847FD2EA1E2471E4294862A5D4C4F9A2B80F9DA0619327CDBF2EB608B0B5549294A955972AA3512821B24782DD8AB97B53AAB04B48180394ABFBC4DCF9B819FC0CB5AC1275AC5F16EC378163501E4B27D49C67F660333888F1D503B96FA9C6C880543D8B5F04D70FE508FFCA161798AD32015145B8E9AD43AAB48ADA81FD1E5A8EA7711A8FF57EC7C4C081B47FAB0C2E9FA468E70DD6700F3412224890D5E99527A596CE635195F3A6D35E563BF4892DF2C79C809704411018D919102D12CB112CE1E66EBF5DB9F409F6C82A6A6E1E21E23532CA999B57 9920111016123841 2 6 100 3071 2 E6846A58148AC762DD0CA90662E5626D0C5647E5C8CE7D6190997846FB17A509767A28E1E7B5F1AD994407661C1225E05F37EE490AA3C4C5AE757129BE9EEC5DEDD6501D26F43C2CC0A1E1FF7D11A55616D02061E20573AC75DAB592D55C781608B8A20CB3DA2EB9C2C4C2FDA0CF1E083B6CFB43772FEFE969FDF56FA96EBCBFB4110384CBF0307F2DB59954BADE376AEB544ABAA269D39DE57EC52E7CEB5E7A5855BA1523CB774D387F4C018E66BFCDC81CCE6E59A2E9BD9D0E788E6DA081B1588173E0C3C7D7BEC6625D62AFB21B9E1228FD2620E3C257DECFB079DEEBD43EEC3FD8B67AF6D41FB7355BD184796D66FFEB384DB41C7D14ECFDDAF59F845B351D55E24AE97CBD3C21B093E58BF51AEE312A561B9B7C532C859547E1E19D539378B8B806B3ECC2AD7C0ADBC628AAB91DEBC5FA329C2E71F678F962BC12305316936D5A5063411610632451C837D83806B98DD038548592A2910C4BF4713FDF8BFD70897697FFF17B7F59FD8AD505103EEAB7A39BE1BDECD2833DB02524EFAF83
10020060827080040 2 6 100 2047 5 C038282DE061BE1AD34F31325EFE9B1D8520DB14276CEB61FE3A2CB8D77FFE3B9A067505205BBA8353847FD2EA1E2471E4294862A5D4C4F9A2B80F9DA0619327CDBF2EB608B0B5549294A955972AA3512821B24782DD8AB97B53AAB04B48180394ABFBC4DCF9B819FC0CB5AC1275AC5F16EC378163501E4B27D49C67F660333888F1D503B96FA9C6C880543D8B5F04D70FE508FFCA161798AD32015145B8E9AD43AAB48ADA81FD1E5A8EA7711A8FF57EC7C4C081B47FAB0C2E9FA468E70DD6700F3412224890D5E99527A596CE635195F3A6D35E563BF4892DF2C79C809704411018D919102D12CB112CE1E66EBF5DB9F409F6C82A6A6E1E21E23532CB21505F 10020111016124416 2 6 100 3071 2 E6846A58148AC762DD0CA90662E5626D0C5647E5C8CE7D6190997846FB17A509767A28E1E7B5F1AD994407661C1225E05F37EE490AA3C4C5AE757129BE9EEC5DEDD6501D26F43C2CC0A1E1FF7D11A55616D02061E20573AC75DAB592D55C781608B8A20CB3DA2EB9C2C4C2FDA0CF1E083B6CFB43772FEFE969FDF56FA96EBCBFB4110384CBF0307F2DB59954BADE376AEB544ABAA269D39DE57EC52E7CEB5E7A5855BA1523CB774D387F4C018E66BFCDC81CCE6E59A2E9BD9D0E788E6DA081B1588173E0C3C7D7BEC6625D62AFB21B9E1228FD2620E3C257DECFB079DEEBD43EEC3FD8B67AF6D41FB7355BD184796D66FFEB384DB41C7D14ECFDDAF59F845B351D55E24AE97CBD3C21B093E58BF51AEE312A561B9B7C532C859547E1E19D539378B8B806B3ECC2AD7C0ADBC628AAB91DEBC5FA329C2E71F678F962BC12305316936D5A5063411610632451C837D83806B98DD038548592A2910C4BF4713FDF8BFD70897697FFF17B7F59FD8AD505103EEAB7A39BE1BDECD2833DB025255DD88B
10120060827080817 2 6 100 2047 5 C038282DE061BE1AD34F31325EFE9B1D8520DB14276CEB61FE3A2CB8D77FFE3B9A067505205BBA8353847FD2EA1E2471E4294862A5D4C4F9A2B80F9DA0619327CDBF2EB608B0B5549294A955972AA3512821B24782DD8AB97B53AAB04B48180394ABFBC4DCF9B819FC0CB5AC1275AC5F16EC378163501E4B27D49C67F660333888F1D503B96FA9C6C880543D8B5F04D70FE508FFCA161798AD32015145B8E9AD43AAB48ADA81FD1E5A8EA7711A8FF57EC7C4C081B47FAB0C2E9FA468E70DD6700F3412224890D5E99527A596CE635195F3A6D35E563BF4892DF2C79C809704411018D919102D12CB112CE1E66EBF5DB9F409F6C82A6A6E1E21E23532CB4C2F97 10120111016125629 2 6 100 3071 5 E6846A58148AC762DD0CA90662E5626D0C5647E5C8CE7D6190997846FB17A509767A28E1E7B5F1AD994407661C1225E05F37EE490AA3C4C5AE757129BE9EEC5DEDD6501D26F43C2CC0A1E1FF7D11A55616D02061E20573AC75DAB592D55C781608B8A20CB3DA2EB9C2C4C2FDA0CF1E083B6CFB43772FEFE969FDF56FA96EBCBFB4110384CBF0307F2DB59954BADE376AEB544ABAA269D39DE57EC52E7CEB5E7A5855BA1523CB774D387F4C018E66BFCDC81CCE6E59A2E9BD9D0E788E6DA081B1588173E0C3C7D7BEC6625D62AFB21B9E1228FD2620E3C257DECFB079DEEBD43EEC3FD8B67AF6D41FB7355BD184796D66FFEB384DB41C7D14ECFDDAF59F845B351D55E24AE97CBD3C21B093E58BF51AEE312A561B9B7C532C859547E1E19D539378B8B806B3ECC2AD7C0ADBC628AAB91DEBC5FA329C2E71F678F962BC12305316936D5A5063411610632451C837D83806B98DD038548592A2910C4BF4713FDF8BFD70897697FFF17B7F59FD8AD505103EEAB7A39BE1BDECD2833DB0252654738F
10220060827083711 2 6 100 2047 5 C038282DE061BE1AD34F31325EFE9B1D8520DB14276CEB61FE3A2CB8D77FFE3B9A067505205BBA8353847FD2EA1E2471E4294862A5D4C4F9A2B80F9DA0619327CDBF2EB608B0B5549294A955972AA3512821B24782DD8AB97B53AAB04B48180394ABFBC4DCF9B819FC0CB5AC1275AC5F16EC378163501E4B27D49C67F660333888F1D503B96FA9C6C880543D8B5F04D70FE508FFCA161798AD32015145B8E9AD43AAB48ADA81FD1E5A8EA7711A8FF57EC7C4C081B47FAB0C2E9FA468E70DD6700F3412224890D5E99527A596CE635195F3A6D35E563BF4892DF2C79C809704411018D919102D12CB112CE1E66EBF5DB9F409F6C82A6A6E1E21E23532CC0FAA7F 10220111016130638 2 6 100 3071 2 E6846A58148AC762DD0CA90662E5626D0C5647E5C8CE7D6190997846FB17A509767A28E1E7B5F1AD994407661C1225E05F37EE490AA3C4C5AE757129BE9EEC5DEDD6501D26F43C2CC0A1E1FF7D11A55616D02061E20573AC75DAB592D55C781608B8A20CB3DA2EB9C2C4C2FDA0CF1E083B6CFB43772FEFE969FDF56FA96EBCBFB4110384CBF0307F2DB59954BADE376AEB544ABAA269D39DE57EC52E7CEB5E7A5855BA1523CB774D387F4C018E66BFCDC81CCE6E59A2E9BD9D0E788E6DA081B1588173E0C3C7D7BEC6625D62AFB21B9E1228FD2620E3C257DECFB079DEEBD43EEC3FD8B67AF6D41FB7355BD184796D66FFEB384DB41C7D14ECFDDAF59F845B351D55E24AE97CBD3C21B093E58BF51AEE312A561B9B7C532C859547E1E19D539378B8B806B3ECC2AD7C0ADBC628AAB91DEBC5FA329C2E71F678F962BC12305316936D5A5063411610632451C837D83806B98DD038548592A2910C4BF4713FDF8BFD70897697FFF17B7F59FD8AD505103EEAB7A39BE1BDECD2833DB025271B3D8B
10320060827084308 2 6 100 2047 2 C038282DE061BE1AD34F31325EFE9B1D8520DB14276CEB61FE3A2CB8D77FFE3B9A067505205BBA8353847FD2EA1E2471E4294862A5D4C4F9A2B80F9DA0619327CDBF2EB608B0B5549294A955972AA3512821B24782DD8AB97B53AAB04B48180394ABFBC4DCF9B819FC0CB5AC1275AC5F16EC378163501E4B27D49C67F660333888F1D503B96FA9C6C880543D8B5F04D70FE508FFCA161798AD32015145B8E9AD43AAB48ADA81FD1E5A8EA7711A8FF57EC7C4C081B47FAB0C2E9FA468E70DD6700F3412224890D5E99527A596CE635195F3A6D35E563BF4892DF2C79C809704411018D919102D12CB112CE1E66EBF5DB9F409F6C82A6A6E1E21E23532CC30FD83 10320111016131447 2 6 100 3071 2 E6846A58148AC762DD0CA90662E5626D0C5647E5C8CE7D6190997846FB17A509767A28E1E7B5F1AD994407661C1225E05F37EE490AA3C4C5AE757129BE9EEC5DEDD6501D26F43C2CC0A1E1FF7D11A55616D02061E20573AC75DAB592D55C781608B8A20CB3DA2EB9C2C4C2FDA0CF1E083B6CFB43772FEFE969FDF56FA96EBCBFB4110384CBF0307F2DB59954BADE376AEB544ABAA269D39DE57EC52E7CEB5E7A5855BA1523CB774D387F4C018E66BFCDC81CCE6E59A2E9BD9D0E788E6DA081B1588173E0C3C7D7BEC6625D62AFB21B9E1228FD2620E3C257DECFB079DEEBD43EEC3FD8B67AF6D41FB7355BD184796D66FFEB384DB41C7D14ECFDDAF59F845B351D55E24AE97CBD3C21B093E58BF51AEE312A561B9B7C532C859547E1E19D539378B8B806B3ECC2AD7C0ADBC628AAB91DEBC5FA329C2E71F678F962BC12305316936D5A5063411610632451C837D83806B98DD038548592A2910C4BF4713FDF8BFD70897697FFF17B7F59FD8AD505103EEAB7A39BE1BDECD2833DB02527B1E0AB
10420060827084830 2 6 100 2047 5 C038282DE061BE1AD34F31325EFE9B1D8520DB14276CEB61FE3A2CB8D77FFE3B9A067505205BBA8353847FD2EA1E2471E4294862A5D4C4F9A2B80F9DA0619327CDBF2EB608B0B5549294A955972AA3512821B24782DD8AB97B53AAB04B48180394ABFBC4DCF9B819FC0CB5AC1275AC5F16EC378163501E4B27D49C67F660333888F1D503B96FA9C6C880543D8B5F04D70FE508FFCA161798AD32015145B8E9AD43AAB48ADA81FD1E5A8EA7711A8FF57EC7C4C081B47FAB0C2E9FA468E70DD6700F3412224890D5E99527A596CE635195F3A6D35E563BF4892DF2C79C809704411018D919102D12CB112CE1E66EBF5DB9F409F6C82A6A6E1E21E23532CC4EFB67 10420111016131720 2 6 100 3071 2 E6846A58148AC762DD0CA90662E5626D0C5647E5C8CE7D6190997846FB17A509767A28E1E7B5F1AD994407661C1225E05F37EE490AA3C4C5AE757129BE9EEC5DEDD6501D26F43C2CC0A1E1FF7D11A55616D02061E20573AC75DAB592D55C781608B8A20CB3DA2EB9C2C4C2FDA0CF1E083B6CFB43772FEFE969FDF56FA96EBCBFB4110384CBF0307F2DB59954BADE376AEB544ABAA269D39DE57EC52E7CEB5E7A5855BA1523CB774D387F4C018E66BFCDC81CCE6E59A2E9BD9D0E788E6DA081B1588173E0C3C7D7BEC6625D62AFB21B9E1228FD2620E3C257DECFB079DEEBD43EEC3FD8B67AF6D41FB7355BD184796D66FFEB384DB41C7D14ECFDDAF59F845B351D55E24AE97CBD3C21B093E58BF51AEE312A561B9B7C532C859547E1E19D539378B8B806B3ECC2AD7C0ADBC628AAB91DEBC5FA329C2E71F678F962BC12305316936D5A5063411610632451C837D83806B98DD038548592A2910C4BF4713FDF8BFD70897697FFF17B7F59FD8AD505103EEAB7A39BE1BDECD2833DB02527DE4403
10520060827085653 2 6 100 2047 2 C038282DE061BE1AD34F31325EFE9B1D8520DB14276CEB61FE3A2CB8D77FFE3B9A067505205BBA8353847FD2EA1E2471E4294862A5D4C4F9A2B80F9DA0619327CDBF2EB608B0B5549294A955972AA3512821B24782DD8AB97B53AAB04B48180394ABFBC4DCF9B819FC0CB5AC1275AC5F16EC378163501E4B27D49C67F660333888F1D503B96FA9C6C880543D8B5F04D70FE508FFCA161798AD32015145B8E9AD43AAB48ADA81FD1E5A8EA7711A8FF57EC7C4C081B47FAB0C2E9FA468E70DD6700F3412224890D5E99527A596CE635195F3A6D35E563BF4892DF2C79C809704411018D919102D12CB112CE1E66EBF5DB9F409F6C82A6A6E1E21E23532CC8152FB 10520111016132301 2 6 100 3071 5 E6846A58148AC762DD0CA90662E5626D0C5647E5C8CE7D6190997846FB17A509767A28E1E7B5F1AD994407661C1225E05F37EE490AA3C4C5AE757129BE9EEC5DEDD6501D26F43C2CC0A1E1FF7D11A55616D02061E20573AC75DAB592D55C781608B8A20CB3DA2EB9C2C4C2FDA0CF1E083B6CFB43772FEFE969FDF56FA96EBCBFB4110384CBF0307F2DB59954BADE376AEB544ABAA269D39DE57EC52E7CEB5E7A5855BA1523CB774D387F4C018E66BFCDC81CCE6E59A2E9BD9D0E788E6DA081B1588173E0C3C7D7BEC6625D62AFB21B9E1228FD2620E3C257DECFB079DEEBD43EEC3FD8B67AF6D41FB7355BD184796D66FFEB384DB41C7D14ECFDDAF59F845B351D55E24AE97CBD3C21B093E58BF51AEE312A561B9B7C532C859547E1E19D539378B8B806B3ECC2AD7C0ADBC628AAB91DEBC5FA329C2E71F678F962BC12305316936D5A5063411610632451C837D83806B98DD038548592A2910C4BF4713FDF8BFD70897697FFF17B7F59FD8AD505103EEAB7A39BE1BDECD2833DB0252844EF27
10620060827090522 2 6 100 2047 2 C038282DE061BE1AD34F31325EFE9B1D8520DB14276CEB61FE3A2CB8D77FFE3B9A067505205BBA8353847FD2EA1E2471E4294862A5D4C4F9A2B80F9DA0619327CDBF2EB608B0B5549294A955972AA3512821B24782DD8AB97B53AAB04B48180394ABFBC4DCF9B819FC0CB5AC1275AC5F16EC378163501E4B27D49C67F660333888F1D503B96FA9C6C880543D8B5F04D70FE508FFCA161798AD32015145B8E9AD43AAB48ADA81FD1E5A8EA7711A8FF57EC7C4C081B47FAB0C2E9FA468E70DD6700F3412224890D5E99527A596CE635195F3A6D35E563BF4892DF2C79C809704411018D919102D12CB112CE1E66EBF5DB9F409F6C82A6A6E1E21E23532CCB5AE6B 10620111016132443 2 6 100 3071 5 E6846A58148AC762DD0CA90662E5626D0C5647E5C8CE7D6190997846FB17A509767A28E1E7B5F1AD994407661C1225E05F37EE490AA3C4C5AE757129BE9EEC5DEDD6501D26F43C2CC0A1E1FF7D11A55616D02061E20573AC75DAB592D55C781608B8A20CB3DA2EB9C2C4C2FDA0CF1E083B6CFB43772FEFE969FDF56FA96EBCBFB4110384CBF0307F2DB59954BADE376AEB544ABAA269D39DE57EC52E7CEB5E7A5855BA1523CB774D387F4C018E66BFCDC81CCE6E59A2E9BD9D0E788E6DA081B1588173E0C3C7D7BEC6625D62AFB21B9E1228FD2620E3C257DECFB079DEEBD43EEC3FD8B67AF6D41FB7355BD184796D66FFEB384DB41C7D14ECFDDAF59F845B351D55E24AE97CBD3C21B093E58BF51AEE312A561B9B7C532C859547E1E19D539378B8B806B3ECC2AD7C0ADBC628AAB91DEBC5FA329C2E71F678F962BC12305316936D5A5063411610632451C837D83806B98DD038548592A2910C4BF4713FDF8BFD70897697FFF17B7F59FD8AD505103EEAB7A39BE1BDECD2833DB02528601117
10720060827092253 2 6 100 2047 2 C038282DE061BE1AD34F31325EFE9B1D8520DB14276CEB61FE3A2CB8D77FFE3B9A067505205BBA8353847FD2EA1E2471E4294862A5D4C4F9A2B80F9DA0619327CDBF2EB608B0B5549294A955972AA3512821B24782DD8AB97B53AAB04B48180394ABFBC4DCF9B819FC0CB5AC1275AC5F16EC378163501E4B27D49C67F660333888F1D503B96FA9C6C880543D8B5F04D70FE508FFCA161798AD32015145B8E9AD43AAB48ADA81FD1E5A8EA7711A8FF57EC7C4C081B47FAB0C2E9FA468E70DD6700F3412224890D5E99527A596CE635195F3A6D35E563BF4892DF2C79C809704411018D919102D12CB112CE1E66EBF5DB9F409F6C82A6A6E1E21E23532CD252FCB 10720111016134949 2 6 100 3071 5 E6846A58148AC762DD0CA90662E5626D0C5647E5C8CE7D6190997846FB17A509767A28E1E7B5F1AD994407661C1225E05F37EE490AA3C4C5AE757129BE9EEC5DEDD6501D26F43C2CC0A1E1FF7D11A55616D02061E20573AC75DAB592D55C781608B8A20CB3DA2EB9C2C4C2FDA0CF1E083B6CFB43772FEFE969FDF56FA96EBCBFB4110384CBF0307F2DB59954BADE376AEB544ABAA269D39DE57EC52E7CEB5E7A5855BA1523CB774D387F4C018E66BFCDC81CCE6E59A2E9BD9D0E788E6DA081B1588173E0C3C7D7BEC6625D62AFB21B9E1228FD2620E3C257DECFB079DEEBD43EEC3FD8B67AF6D41FB7355BD184796D66FFEB384DB41C7D14ECFDDAF59F845B351D55E24AE97CBD3C21B093E58BF51AEE312A561B9B7C532C859547E1E19D539378B8B806B3ECC2AD7C0ADBC628AAB91DEBC5FA329C2E71F678F962BC12305316936D5A5063411610632451C837D83806B98DD038548592A2910C4BF4713FDF8BFD70897697FFF17B7F59FD8AD505103EEAB7A39BE1BDECD2833DB0252A6D1DD7
10820060827095916 2 6 100 2047 5 C038282DE061BE1AD34F31325EFE9B1D8520DB14276CEB61FE3A2CB8D77FFE3B9A067505205BBA8353847FD2EA1E2471E4294862A5D4C4F9A2B80F9DA0619327CDBF2EB608B0B5549294A955972AA3512821B24782DD8AB97B53AAB04B48180394ABFBC4DCF9B819FC0CB5AC1275AC5F16EC378163501E4B27D49C67F660333888F1D503B96FA9C6C880543D8B5F04D70FE508FFCA161798AD32015145B8E9AD43AAB48ADA81FD1E5A8EA7711A8FF57EC7C4C081B47FAB0C2E9FA468E70DD6700F3412224890D5E99527A596CE635195F3A6D35E563BF4892DF2C79C809704411018D919102D12CB112CE1E66EBF5DB9F409F6C82A6A6E1E21E23532CE117E2F 10820111016135208 2 6 100 3071 2 E6846A58148AC762DD0CA90662E5626D0C5647E5C8CE7D6190997846FB17A509767A28E1E7B5F1AD994407661C1225E05F37EE490AA3C4C5AE757129BE9EEC5DEDD6501D26F43C2CC0A1E1FF7D11A55616D02061E20573AC75DAB592D55C781608B8A20CB3DA2EB9C2C4C2FDA0CF1E083B6CFB43772FEFE969FDF56FA96EBCBFB4110384CBF0307F2DB59954BADE376AEB544ABAA269D39DE57EC52E7CEB5E7A5855BA1523CB774D387F4C018E66BFCDC81CCE6E59A2E9BD9D0E788E6DA081B1588173E0C3C7D7BEC6625D62AFB21B9E1228FD2620E3C257DECFB079DEEBD43EEC3FD8B67AF6D41FB7355BD184796D66FFEB384DB41C7D14ECFDDAF59F845B351D55E24AE97CBD3C21B093E58BF51AEE312A561B9B7C532C859547E1E19D539378B8B806B3ECC2AD7C0ADBC628AAB91DEBC5FA329C2E71F678F962BC12305316936D5A5063411610632451C837D83806B98DD038548592A2910C4BF4713FDF8BFD70897697FFF17B7F59FD8AD505103EEAB7A39BE1BDECD2833DB0252A95BBB3
10920060827100246 2 6 100 2047 2 C038282DE061BE1AD34F31325EFE9B1D8520DB14276CEB61FE3A2CB8D77FFE3B9A067505205BBA8353847FD2EA1E2471E4294862A5D4C4F9A2B80F9DA0619327CDBF2EB608B0B5549294A955972AA3512821B24782DD8AB97B53AAB04B48180394ABFBC4DCF9B819FC0CB5AC1275AC5F16EC378163501E4B27D49C67F660333888F1D503B96FA9C6C880543D8B5F04D70FE508FFCA161798AD32015145B8E9AD43AAB48ADA81FD1E5A8EA7711A8FF57EC7C4C081B47FAB0C2E9FA468E70DD6700F3412224890D5E99527A596CE635195F3A6D35E563BF4892DF2C79C809704411018D919102D12CB112CE1E66EBF5DB9F409F6C82A6A6E1E21E23532CE2087CB 10920111016140013 2 6 100 3071 5 E6846A58148AC762DD0CA90662E5626D0C5647E5C8CE7D6190997846FB17A509767A28E1E7B5F1AD994407661C1225E05F37EE490AA3C4C5AE757129BE9EEC5DEDD6501D26F43C2CC0A1E1FF7D11A55616D02061E20573AC75DAB592D55C781608B8A20CB3DA2EB9C2C4C2FDA0CF1E083B6CFB43772FEFE969FDF56FA96EBCBFB4110384CBF0307F2DB59954BADE376AEB544ABAA269D39DE57EC52E7CEB5E7A5855BA1523CB774D387F4C018E66BFCDC81CCE6E59A2E9BD9D0E788E6DA081B1588173E0C3C7D7BEC6625D62AFB21B9E1228FD2620E3C257DECFB079DEEBD43EEC3FD8B67AF6D41FB7355BD184796D66FFEB384DB41C7D14ECFDDAF59F845B351D55E24AE97CBD3C21B093E58BF51AEE312A561B9B7C532C859547E1E19D539378B8B806B3ECC2AD7C0ADBC628AAB91DEBC5FA329C2E71F678F962BC12305316936D5A5063411610632451C837D83806B98DD038548592A2910C4BF4713FDF8BFD70897697FFF17B7F59FD8AD505103EEAB7A39BE1BDECD2833DB0252B37A53F
11020060827102041 2 6 100 2047 5 C038282DE061BE1AD34F31325EFE9B1D8520DB14276CEB61FE3A2CB8D77FFE3B9A067505205BBA8353847FD2EA1E2471E4294862A5D4C4F9A2B80F9DA0619327CDBF2EB608B0B5549294A955972AA3512821B24782DD8AB97B53AAB04B48180394ABFBC4DCF9B819FC0CB5AC1275AC5F16EC378163501E4B27D49C67F660333888F1D503B96FA9C6C880543D8B5F04D70FE508FFCA161798AD32015145B8E9AD43AAB48ADA81FD1E5A8EA7711A8FF57EC7C4C081B47FAB0C2E9FA468E70DD6700F3412224890D5E99527A596CE635195F3A6D35E563BF4892DF2C79C809704411018D919102D12CB112CE1E66EBF5DB9F409F6C82A6A6E1E21E23532CE925537 11020111016140630 2 6 100 3071 2 E6846A58148AC762DD0CA90662E5626D0C5647E5C8CE7D6190997846FB17A509767A28E1E7B5F1AD994407661C1225E05F37EE490AA3C4C5AE757129BE9EEC5DEDD6501D26F43C2CC0A1E1FF7D11A55616D02061E20573AC75DAB592D55C781608B8A20CB3DA2EB9C2C4C2FDA0CF1E083B6CFB43772FEFE969FDF56FA96EBCBFB4110384CBF0307F2DB59954BADE376AEB544ABAA269D39DE57EC52E7CEB5E7A5855BA1523CB774D387F4C018E66BFCDC81CCE6E59A2E9BD9D0E788E6DA081B1588173E0C3C7D7BEC6625D62AFB21B9E1228FD2620E3C257DECFB079DEEBD43EEC3FD8B67AF6D41FB7355BD184796D66FFEB384DB41C7D14ECFDDAF59F845B351D55E24AE97CBD3C21B093E58BF51AEE312A561B9B7C532C859547E1E19D539378B8B806B3ECC2AD7C0ADBC628AAB91DEBC5FA329C2E71F678F962BC12305316936D5A5063411610632451C837D83806B98DD038548592A2910C4BF4713FDF8BFD70897697FFF17B7F59FD8AD505103EEAB7A39BE1BDECD2833DB0252BB1C4DB
11120060827102556 2 6 100 2047 5 C038282DE061BE1AD34F31325EFE9B1D8520DB14276CEB61FE3A2CB8D77FFE3B9A067505205BBA8353847FD2EA1E2471E4294862A5D4C4F9A2B80F9DA0619327CDBF2EB608B0B5549294A955972AA3512821B24782DD8AB97B53AAB04B48180394ABFBC4DCF9B819FC0CB5AC1275AC5F16EC378163501E4B27D49C67F660333888F1D503B96FA9C6C880543D8B5F04D70FE508FFCA161798AD32015145B8E9AD43AAB48ADA81FD1E5A8EA7711A8FF57EC7C4C081B47FAB0C2E9FA468E70DD6700F3412224890D5E99527A596CE635195F3A6D35E563BF4892DF2C79C809704411018D919102D12CB112CE1E66EBF5DB9F409F6C82A6A6E1E21E23532CEAF2A27 11120111016140858 2 6 100 3071 5 E6846A58148AC762DD0CA90662E5626D0C5647E5C8CE7D6190997846FB17A509767A28E1E7B5F1AD994407661C1225E05F37EE490AA3C4C5AE757129BE9EEC5DEDD6501D26F43C2CC0A1E1FF7D11A55616D02061E20573AC75DAB592D55C781608B8A20CB3DA2EB9C2C4C2FDA0CF1E083B6CFB43772FEFE969FDF56FA96EBCBFB4110384CBF0307F2DB59954BADE376AEB544ABAA269D39DE57EC52E7CEB5E7A5855BA1523CB774D387F4C018E66BFCDC81CCE6E59A2E9BD9D0E788E6DA081B1588173E0C3C7D7BEC6625D62AFB21B9E1228FD2620E3C257DECFB079DEEBD43EEC3FD8B67AF6D41FB7355BD184796D66FFEB384DB41C7D14ECFDDAF59F845B351D55E24AE97CBD3C21B093E58BF51AEE312A561B9B7C532C859547E1E19D539378B8B806B3ECC2AD7C0ADBC628AAB91DEBC5FA329C2E71F678F962BC12305316936D5A5063411610632451C837D83806B98DD038548592A2910C4BF4713FDF8BFD70897697FFF17B7F59FD8AD505103EEAB7A39BE1BDECD2833DB0252BDB1B07
11220060827103749 2 6 100 2047 5 C038282DE061BE1AD34F31325EFE9B1D8520DB14276CEB61FE3A2CB8D77FFE3B9A067505205BBA8353847FD2EA1E2471E4294862A5D4C4F9A2B80F9DA0619327CDBF2EB608B0B5549294A955972AA3512821B24782DD8AB97B53AAB04B48180394ABFBC4DCF9B819FC0CB5AC1275AC5F16EC378163501E4B27D49C67F660333888F1D503B96FA9C6C880543D8B5F04D70FE508FFCA161798AD32015145B8E9AD43AAB48ADA81FD1E5A8EA7711A8FF57EC7C4C081B47FAB0C2E9FA468E70DD6700F3412224890D5E99527A596CE635195F3A6D35E563BF4892DF2C79C809704411018D919102D12CB112CE1E66EBF5DB9F409F6C82A6A6E1E21E23532CEF9826F 11220111016141216 2 6 100 3071 5 E6846A58148AC762DD0CA90662E5626D0C5647E5C8CE7D6190997846FB17A509767A28E1E7B5F1AD994407661C1225E05F37EE490AA3C4C5AE757129BE9EEC5DEDD6501D26F43C2CC0A1E1FF7D11A55616D02061E20573AC75DAB592D55C781608B8A20CB3DA2EB9C2C4C2FDA0CF1E083B6CFB43772FEFE969FDF56FA96EBCBFB4110384CBF0307F2DB59954BADE376AEB544ABAA269D39DE57EC52E7CEB5E7A5855BA1523CB774D387F4C018E66BFCDC81CCE6E59A2E9BD9D0E788E6DA081B1588173E0C3C7D7BEC6625D62AFB21B9E1228FD2620E3C257DECFB079DEEBD43EEC3FD8B67AF6D41FB7355BD184796D66FFEB384DB41C7D14ECFDDAF59F845B351D55E24AE97CBD3C21B093E58BF51AEE312A561B9B7C532C859547E1E19D539378B8B806B3ECC2AD7C0ADBC628AAB91DEBC5FA329C2E71F678F962BC12305316936D5A5063411610632451C837D83806B98DD038548592A2910C4BF4713FDF8BFD70897697FFF17B7F59FD8AD505103EEAB7A39BE1BDECD2833DB0252C19DC1F
11320060827103917 2 6 100 2047 5 C038282DE061BE1AD34F31325EFE9B1D8520DB14276CEB61FE3A2CB8D77FFE3B9A067505205BBA8353847FD2EA1E2471E4294862A5D4C4F9A2B80F9DA0619327CDBF2EB608B0B5549294A955972AA3512821B24782DD8AB97B53AAB04B48180394ABFBC4DCF9B819FC0CB5AC1275AC5F16EC378163501E4B27D49C67F660333888F1D503B96FA9C6C880543D8B5F04D70FE508FFCA161798AD32015145B8E9AD43AAB48ADA81FD1E5A8EA7711A8FF57EC7C4C081B47FAB0C2E9FA468E70DD6700F3412224890D5E99527A596CE635195F3A6D35E563BF4892DF2C79C809704411018D919102D12CB112CE1E66EBF5DB9F409F6C82A6A6E1E21E23532CEFBC467 11320111016145709 2 6 100 3071 5 E6846A58148AC762DD0CA90662E5626D0C5647E5C8CE7D6190997846FB17A509767A28E1E7B5F1AD994407661C1225E05F37EE490AA3C4C5AE757129BE9EEC5DEDD6501D26F43C2CC0A1E1FF7D11A55616D02061E20573AC75DAB592D55C781608B8A20CB3DA2EB9C2C4C2FDA0CF1E083B6CFB43772FEFE969FDF56FA96EBCBFB4110384CBF0307F2DB59954BADE376AEB544ABAA269D39DE57EC52E7CEB5E7A5855BA1523CB774D387F4C018E66BFCDC81CCE6E59A2E9BD9D0E788E6DA081B1588173E0C3C7D7BEC6625D62AFB21B9E1228FD2620E3C257DECFB079DEEBD43EEC3FD8B67AF6D41FB7355BD184796D66FFEB384DB41C7D14ECFDDAF59F845B351D55E24AE97CBD3C21B093E58BF51AEE312A561B9B7C532C859547E1E19D539378B8B806B3ECC2AD7C0ADBC628AAB91DEBC5FA329C2E71F678F962BC12305316936D5A5063411610632451C837D83806B98DD038548592A2910C4BF4713FDF8BFD70897697FFF17B7F59FD8AD505103EEAB7A39BE1BDECD2833DB0252EFF7C87
11420060827104611 2 6 100 2047 2 C038282DE061BE1AD34F31325EFE9B1D8520DB14276CEB61FE3A2CB8D77FFE3B9A067505205BBA8353847FD2EA1E2471E4294862A5D4C4F9A2B80F9DA0619327CDBF2EB608B0B5549294A955972AA3512821B24782DD8AB97B53AAB04B48180394ABFBC4DCF9B819FC0CB5AC1275AC5F16EC378163501E4B27D49C67F660333888F1D503B96FA9C6C880543D8B5F04D70FE508FFCA161798AD32015145B8E9AD43AAB48ADA81FD1E5A8EA7711A8FF57EC7C4C081B47FAB0C2E9FA468E70DD6700F3412224890D5E99527A596CE635195F3A6D35E563BF4892DF2C79C809704411018D919102D12CB112CE1E66EBF5DB9F409F6C82A6A6E1E21E23532CF24A6E3 11420111016152316 2 6 100 3071 5 E6846A58148AC762DD0CA90662E5626D0C5647E5C8CE7D6190997846FB17A509767A28E1E7B5F1AD994407661C1225E05F37EE490AA3C4C5AE757129BE9EEC5DEDD6501D26F43C2CC0A1E1FF7D11A55616D02061E20573AC75DAB592D55C781608B8A20CB3DA2EB9C2C4C2FDA0CF1E083B6CFB43772FEFE969FDF56FA96EBCBFB4110384CBF0307F2DB59954BADE376AEB544ABAA269D39DE57EC52E7CEB5E7A5855BA1523CB774D387F4C018E66BFCDC81CCE6E59A2E9BD9D0E788E6DA081B1588173E0C3C7D7BEC6625D62AFB21B9E1228FD2620E3C257DECFB079DEEBD43EEC3FD8B67AF6D41FB7355BD184796D66FFEB384DB41C7D14ECFDDAF59F845B351D55E24AE97CBD3C21B093E58BF51AEE312A561B9B7C532C859547E1E19D539378B8B806B3ECC2AD7C0ADBC628AAB91DEBC5FA329C2E71F678F962BC12305316936D5A5063411610632451C837D83806B98DD038548592A2910C4BF4713FDF8BFD70897697FFF17B7F59FD8AD505103EEAB7A39BE1BDECD2833DB02531269677
11520060827130320 2 6 100 3071 5 D3230D237572ECE9F92358715EBAC3A4D89F2D6B4DC39F056450263BEF1665FBD7B93916ABC867B7064802159D273C7EB01C5F9281A3D6DCCB7CF997D385998EC0E1FA3319AFE771A90ADBACEB414A020630D7C7F161FAFEC6C9FC06D3205C712AAE8848A1B2C21DFF301C7FFC0B75D13F060A313C32AFEEAF1493F641760EBEF38829B3371699D2A3264D0ECEB4E5C19581ED8C57699F559B9828BBFE147952E289F0E171C9C60335DD2F492CB409A4DB97BDF86E2DBA605064DB040A3DF5678E24F66718CA115C95C892FF7AEDFAABC2E6414716298CEC1A604270FEADF191B7C8A59C238C395A65442C0B963BF83025BED3951A271B7440EC7687C31DE63355DA7FEAC15DC962C7BF7614EB59B077B9889AD8703DFE98AC99615B722A0ABE89956D1058E025C7733420CB51D7E1608EFF2C0A30C9A5EB77CCA02C6B00CE781B172001C6C458630890062E27CE307D513A7686A69D1D548DE8334B13136D9E842A5E17FD67522C93823E03F08AEE8024AF5D88B2EE01D4D9980084EFA80B3F 11520111016153558 2 6 100 3071 2 E6846A58148AC762DD0CA90662E5626D0C5647E5C8CE7D6190997846FB17A509767A28E1E7B5F1AD994407661C1225E05F37EE490AA3C4C5AE757129BE9EEC5DEDD6501D26F43C2CC0A1E1FF7D11A55616D02061E20573AC75DAB592D55C781608B8A20CB3DA2EB9C2C4C2FDA0CF1E083B6CFB43772FEFE969FDF56FA96EBCBFB4110384CBF0307F2DB59954BADE376AEB544ABAA269D39DE57EC52E7CEB5E7A5855BA1523CB774D387F4C018E66BFCDC81CCE6E59A2E9BD9D0E788E6DA081B1588173E0C3C7D7BEC6625D62AFB21B9E1228FD2620E3C257DECFB079DEEBD43EEC3FD8B67AF6D41FB7355BD184796D66FFEB384DB41C7D14ECFDDAF59F845B351D55E24AE97CBD3C21B093E58BF51AEE312A561B9B7C532C859547E1E19D539378B8B806B3ECC2AD7C0ADBC628AAB91DEBC5FA329C2E71F678F962BC12305316936D5A5063411610632451C837D83806B98DD038548592A2910C4BF4713FDF8BFD70897697FFF17B7F59FD8AD505103EEAB7A39BE1BDECD2833DB025322E1E9B
11620060827132001 2 6 100 3071 2 D3230D237572ECE9F92358715EBAC3A4D89F2D6B4DC39F056450263BEF1665FBD7B93916ABC867B7064802159D273C7EB01C5F9281A3D6DCCB7CF997D385998EC0E1FA3319AFE771A90ADBACEB414A020630D7C7F161FAFEC6C9FC06D3205C712AAE8848A1B2C21DFF301C7FFC0B75D13F060A313C32AFEEAF1493F641760EBEF38829B3371699D2A3264D0ECEB4E5C19581ED8C57699F559B9828BBFE147952E289F0E171C9C60335DD2F492CB409A4DB97BDF86E2DBA605064DB040A3DF5678E24F66718CA115C95C892FF7AEDFAABC2E6414716298CEC1A604270FEADF191B7C8A59C238C395A65442C0B963BF83025BED3951A271B7440EC7687C31DE63355DA7FEAC15DC962C7BF7614EB59B077B9889AD8703DFE98AC99615B722A0ABE89956D1058E025C7733420CB51D7E1608EFF2C0A30C9A5EB77CCA02C6B00CE781B172001C6C458630890062E27CE307D513A7686A69D1D548DE8334B13136D9E842A5E17FD67522C93823E03F08AEE8024AF5D88B2EE01D4D9980084EFC2F2A3 11620111016154232 2 6 100 3071 2 E6846A58148AC762DD0CA90662E5626D0C5647E5C8CE7D6190997846FB17A509767A28E1E7B5F1AD994407661C1225E05F37EE490AA3C4C5AE757129BE9EEC5DEDD6501D26F43C2CC0A1E1FF7D11A55616D02061E20573AC75DAB592D55C781608B8A20CB3DA2EB9C2C4C2FDA0CF1E083B6CFB43772FEFE969FDF56FA96EBCBFB4110384CBF0307F2DB59954BADE376AEB544ABAA269D39DE57EC52E7CEB5E7A5855BA1523CB774D387F4C018E66BFCDC81CCE6E59A2E9BD9D0E788E6DA081B1588173E0C3C7D7BEC6625D62AFB21B9E1228FD2620E3C257DECFB079DEEBD43EEC3FD8B67AF6D41FB7355BD184796D66FFEB384DB41C7D14ECFDDAF59F845B351D55E24AE97CBD3C21B093E58BF51AEE312A561B9B7C532C859547E1E19D539378B8B806B3ECC2AD7C0ADBC628AAB91DEBC5FA329C2E71F678F962BC12305316936D5A5063411610632451C837D83806B98DD038548592A2910C4BF4713FDF8BFD70897697FFF17B7F59FD8AD505103EEAB7A39BE1BDECD2833DB02532B0D1E3
11720060827132659 2 6 100 3071 2 D3230D237572ECE9F92358715EBAC3A4D89F2D6B4DC39F056450263BEF1665FBD7B93916ABC867B7064802159D273C7EB01C5F9281A3D6DCCB7CF997D385998EC0E1FA3319AFE771A90ADBACEB414A020630D7C7F161FAFEC6C9FC06D3205C712AAE8848A1B2C21DFF301C7FFC0B75D13F060A313C32AFEEAF1493F641760EBEF38829B3371699D2A3264D0ECEB4E5C19581ED8C57699F559B9828BBFE147952E289F0E171C9C60335DD2F492CB409A4DB97BDF86E2DBA605064DB040A3DF5678E24F66718CA115C95C892FF7AEDFAABC2E6414716298CEC1A604270FEADF191B7C8A59C238C395A65442C0B963BF83025BED3951A271B7440EC7687C31DE63355DA7FEAC15DC962C7BF7614EB59B077B9889AD8703DFE98AC99615B722A0ABE89956D1058E025C7733420CB51D7E1608EFF2C0A30C9A5EB77CCA02C6B00CE781B172001C6C458630890062E27CE307D513A7686A69D1D548DE8334B13136D9E842A5E17FD67522C93823E03F08AEE8024AF5D88B2EE01D4D9980084EFC83DE3 11720111016154831 2 6 100 3071 2 E6846A58148AC762DD0CA90662E5626D0C5647E5C8CE7D6190997846FB17A509767A28E1E7B5F1AD994407661C1225E05F37EE490AA3C4C5AE757129BE9EEC5DEDD6501D26F43C2CC0A1E1FF7D11A55616D02061E20573AC75DAB592D55C781608B8A20CB3DA2EB9C2C4C2FDA0CF1E083B6CFB43772FEFE969FDF56FA96EBCBFB4110384CBF0307F2DB59954BADE376AEB544ABAA269D39DE57EC52E7CEB5E7A5855BA1523CB774D387F4C018E66BFCDC81CCE6E59A2E9BD9D0E788E6DA081B1588173E0C3C7D7BEC6625D62AFB21B9E1228FD2620E3C257DECFB079DEEBD43EEC3FD8B67AF6D41FB7355BD184796D66FFEB384DB41C7D14ECFDDAF59F845B351D55E24AE97CBD3C21B093E58BF51AEE312A561B9B7C532C859547E1E19D539378B8B806B3ECC2AD7C0ADBC628AAB91DEBC5FA329C2E71F678F962BC12305316936D5A5063411610632451C837D83806B98DD038548592A2910C4BF4713FDF8BFD70897697FFF17B7F59FD8AD505103EEAB7A39BE1BDECD2833DB025332903AB
11820060827133231 2 6 100 3071 2 D3230D237572ECE9F92358715EBAC3A4D89F2D6B4DC39F056450263BEF1665FBD7B93916ABC867B7064802159D273C7EB01C5F9281A3D6DCCB7CF997D385998EC0E1FA3319AFE771A90ADBACEB414A020630D7C7F161FAFEC6C9FC06D3205C712AAE8848A1B2C21DFF301C7FFC0B75D13F060A313C32AFEEAF1493F641760EBEF38829B3371699D2A3264D0ECEB4E5C19581ED8C57699F559B9828BBFE147952E289F0E171C9C60335DD2F492CB409A4DB97BDF86E2DBA605064DB040A3DF5678E24F66718CA115C95C892FF7AEDFAABC2E6414716298CEC1A604270FEADF191B7C8A59C238C395A65442C0B963BF83025BED3951A271B7440EC7687C31DE63355DA7FEAC15DC962C7BF7614EB59B077B9889AD8703DFE98AC99615B722A0ABE89956D1058E025C7733420CB51D7E1608EFF2C0A30C9A5EB77CCA02C6B00CE781B172001C6C458630890062E27CE307D513A7686A69D1D548DE8334B13136D9E842A5E17FD67522C93823E03F08AEE8024AF5D88B2EE01D4D9980084EFCAE263 11820111016154921 2 6 100 3071 2 E6846A58148AC762DD0CA90662E5626D0C5647E5C8CE7D6190997846FB17A509767A28E1E7B5F1AD994407661C1225E05F37EE490AA3C4C5AE757129BE9EEC5DEDD6501D26F43C2CC0A1E1FF7D11A55616D02061E20573AC75DAB592D55C781608B8A20CB3DA2EB9C2C4C2FDA0CF1E083B6CFB43772FEFE969FDF56FA96EBCBFB4110384CBF0307F2DB59954BADE376AEB544ABAA269D39DE57EC52E7CEB5E7A5855BA1523CB774D387F4C018E66BFCDC81CCE6E59A2E9BD9D0E788E6DA081B1588173E0C3C7D7BEC6625D62AFB21B9E1228FD2620E3C257DECFB079DEEBD43EEC3FD8B67AF6D41FB7355BD184796D66FFEB384DB41C7D14ECFDDAF59F845B351D55E24AE97CBD3C21B093E58BF51AEE312A561B9B7C532C859547E1E19D539378B8B806B3ECC2AD7C0ADBC628AAB91DEBC5FA329C2E71F678F962BC12305316936D5A5063411610632451C837D83806B98DD038548592A2910C4BF4713FDF8BFD70897697FFF17B7F59FD8AD505103EEAB7A39BE1BDECD2833DB02533323CAB
11920060827134212 2 6 100 3071 2 D3230D237572ECE9F92358715EBAC3A4D89F2D6B4DC39F056450263BEF1665FBD7B93916ABC867B7064802159D273C7EB01C5F9281A3D6DCCB7CF997D385998EC0E1FA3319AFE771A90ADBACEB414A020630D7C7F161FAFEC6C9FC06D3205C712AAE8848A1B2C21DFF301C7FFC0B75D13F060A313C32AFEEAF1493F641760EBEF38829B3371699D2A3264D0ECEB4E5C19581ED8C57699F559B9828BBFE147952E289F0E171C9C60335DD2F492CB409A4DB97BDF86E2DBA605064DB040A3DF5678E24F66718CA115C95C892FF7AEDFAABC2E6414716298CEC1A604270FEADF191B7C8A59C238C395A65442C0B963BF83025BED3951A271B7440EC7687C31DE63355DA7FEAC15DC962C7BF7614EB59B077B9889AD8703DFE98AC99615B722A0ABE89956D1058E025C7733420CB51D7E1608EFF2C0A30C9A5EB77CCA02C6B00CE781B172001C6C458630890062E27CE307D513A7686A69D1D548DE8334B13136D9E842A5E17FD67522C93823E03F08AEE8024AF5D88B2EE01D4D9980084EFD5D943 11920111016155024 2 6 100 3071 5 E6846A58148AC762DD0CA90662E5626D0C5647E5C8CE7D6190997846FB17A509767A28E1E7B5F1AD994407661C1225E05F37EE490AA3C4C5AE757129BE9EEC5DEDD6501D26F43C2CC0A1E1FF7D11A55616D02061E20573AC75DAB592D55C781608B8A20CB3DA2EB9C2C4C2FDA0CF1E083B6CFB43772FEFE969FDF56FA96EBCBFB4110384CBF0307F2DB59954BADE376AEB544ABAA269D39DE57EC52E7CEB5E7A5855BA1523CB774D387F4C018E66BFCDC81CCE6E59A2E9BD9D0E788E6DA081B1588173E0C3C7D7BEC6625D62AFB21B9E1228FD2620E3C257DECFB079DEEBD43EEC3FD8B67AF6D41FB7355BD184796D66FFEB384DB41C7D14ECFDDAF59F845B351D55E24AE97CBD3C21B093E58BF51AEE312A561B9B7C532C859547E1E19D539378B8B806B3ECC2AD7C0ADBC628AAB91DEBC5FA329C2E71F678F962BC12305316936D5A5063411610632451C837D83806B98DD038548592A2910C4BF4713FDF8BFD70897697FFF17B7F59FD8AD505103EEAB7A39BE1BDECD2833DB025334024C7
12020060827135606 2 6 100 3071 2 D3230D237572ECE9F92358715EBAC3A4D89F2D6B4DC39F056450263BEF1665FBD7B93916ABC867B7064802159D273C7EB01C5F9281A3D6DCCB7CF997D385998EC0E1FA3319AFE771A90ADBACEB414A020630D7C7F161FAFEC6C9FC06D3205C712AAE8848A1B2C21DFF301C7FFC0B75D13F060A313C32AFEEAF1493F641760EBEF38829B3371699D2A3264D0ECEB4E5C19581ED8C57699F559B9828BBFE147952E289F0E171C9C60335DD2F492CB409A4DB97BDF86E2DBA605064DB040A3DF5678E24F66718CA115C95C892FF7AEDFAABC2E6414716298CEC1A604270FEADF191B7C8A59C238C395A65442C0B963BF83025BED3951A271B7440EC7687C31DE63355DA7FEAC15DC962C7BF7614EB59B077B9889AD8703DFE98AC99615B722A0ABE89956D1058E025C7733420CB51D7E1608EFF2C0A30C9A5EB77CCA02C6B00CE781B172001C6C458630890062E27CE307D513A7686A69D1D548DE8334B13136D9E842A5E17FD67522C93823E03F08AEE8024AF5D88B2EE01D4D9980084EFEAD4AB 12020111016155250 2 6 100 3071 5 E6846A58148AC762DD0CA90662E5626D0C5647E5C8CE7D6190997846FB17A509767A28E1E7B5F1AD994407661C1225E05F37EE490AA3C4C5AE757129BE9EEC5DEDD6501D26F43C2CC0A1E1FF7D11A55616D02061E20573AC75DAB592D55C781608B8A20CB3DA2EB9C2C4C2FDA0CF1E083B6CFB43772FEFE969FDF56FA96EBCBFB4110384CBF0307F2DB59954BADE376AEB544ABAA269D39DE57EC52E7CEB5E7A5855BA1523CB774D387F4C018E66BFCDC81CCE6E59A2E9BD9D0E788E6DA081B1588173E0C3C7D7BEC6625D62AFB21B9E1228FD2620E3C257DECFB079DEEBD43EEC3FD8B67AF6D41FB7355BD184796D66FFEB384DB41C7D14ECFDDAF59F845B351D55E24AE97CBD3C21B093E58BF51AEE312A561B9B7C532C859547E1E19D539378B8B806B3ECC2AD7C0ADBC628AAB91DEBC5FA329C2E71F678F962BC12305316936D5A5063411610632451C837D83806B98DD038548592A2910C4BF4713FDF8BFD70897697FFF17B7F59FD8AD505103EEAB7A39BE1BDECD2833DB025336A6067
12120060827142452 2 6 100 3071 2 D3230D237572ECE9F92358715EBAC3A4D89F2D6B4DC39F056450263BEF1665FBD7B93916ABC867B7064802159D273C7EB01C5F9281A3D6DCCB7CF997D385998EC0E1FA3319AFE771A90ADBACEB414A020630D7C7F161FAFEC6C9FC06D3205C712AAE8848A1B2C21DFF301C7FFC0B75D13F060A313C32AFEEAF1493F641760EBEF38829B3371699D2A3264D0ECEB4E5C19581ED8C57699F559B9828BBFE147952E289F0E171C9C60335DD2F492CB409A4DB97BDF86E2DBA605064DB040A3DF5678E24F66718CA115C95C892FF7AEDFAABC2E6414716298CEC1A604270FEADF191B7C8A59C238C395A65442C0B963BF83025BED3951A271B7440EC7687C31DE63355DA7FEAC15DC962C7BF7614EB59B077B9889AD8703DFE98AC99615B722A0ABE89956D1058E025C7733420CB51D7E1608EFF2C0A30C9A5EB77CCA02C6B00CE781B172001C6C458630890062E27CE307D513A7686A69D1D548DE8334B13136D9E842A5E17FD67522C93823E03F08AEE8024AF5D88B2EE01D4D9980084F01CBFBB 12120111016155621 2 6 100 3071 5 E6846A58148AC762DD0CA90662E5626D0C5647E5C8CE7D6190997846FB17A509767A28E1E7B5F1AD994407661C1225E05F37EE490AA3C4C5AE757129BE9EEC5DEDD6501D26F43C2CC0A1E1FF7D11A55616D02061E20573AC75DAB592D55C781608B8A20CB3DA2EB9C2C4C2FDA0CF1E083B6CFB43772FEFE969FDF56FA96EBCBFB4110384CBF0307F2DB59954BADE376AEB544ABAA269D39DE57EC52E7CEB5E7A5855BA1523CB774D387F4C018E66BFCDC81CCE6E59A2E9BD9D0E788E6DA081B1588173E0C3C7D7BEC6625D62AFB21B9E1228FD2620E3C257DECFB079DEEBD43EEC3FD8B67AF6D41FB7355BD184796D66FFEB384DB41C7D14ECFDDAF59F845B351D55E24AE97CBD3C21B093E58BF51AEE312A561B9B7C532C859547E1E19D539378B8B806B3ECC2AD7C0ADBC628AAB91DEBC5FA329C2E71F678F962BC12305316936D5A5063411610632451C837D83806B98DD038548592A2910C4BF4713FDF8BFD70897697FFF17B7F59FD8AD505103EEAB7A39BE1BDECD2833DB02533AF3637
12220060827185212 2 6 100 3071 5 D3230D237572ECE9F92358715EBAC3A4D89F2D6B4DC39F056450263BEF1665FBD7B93916ABC867B7064802159D273C7EB01C5F9281A3D6DCCB7CF997D385998EC0E1FA3319AFE771A90ADBACEB414A020630D7C7F161FAFEC6C9FC06D3205C712AAE8848A1B2C21DFF301C7FFC0B75D13F060A313C32AFEEAF1493F641760EBEF38829B3371699D2A3264D0ECEB4E5C19581ED8C57699F559B9828BBFE147952E289F0E171C9C60335DD2F492CB409A4DB97BDF86E2DBA605064DB040A3DF5678E24F66718CA115C95C892FF7AEDFAABC2E6414716298CEC1A604270FEADF191B7C8A59C238C395A65442C0B963BF83025BED3951A271B7440EC7687C31DE63355DA7FEAC15DC962C7BF7614EB59B077B9889AD8703DFE98AC99615B722A0ABE89956D1058E025C7733420CB51D7E1608EFF2C0A30C9A5EB77CCA02C6B00CE781B172001C6C458630890062E27CE307D513A7686A69D1D548DE8334B13136D9E842A5E17FD67522C93823E03F08AEE8024AF5D88B2EE01D4D9980084F24CFF67 12220111016161525 2 6 100 3071 2 E6846A58148AC762DD0CA90662E5626D0C5647E5C8CE7D6190997846FB17A509767A28E1E7B5F1AD994407661C1225E05F37EE490AA3C4C5AE757129BE9EEC5DEDD6501D26F43C2CC0A1E1FF7D11A55616D02061E20573AC75DAB592D55C781608B8A20CB3DA2EB9C2C4C2FDA0CF1E083B6CFB43772FEFE969FDF56FA96EBCBFB4110384CBF0307F2DB59954BADE376AEB544ABAA269D39DE57EC52E7CEB5E7A5855BA1523CB774D387F4C018E66BFCDC81CCE6E59A2E9BD9D0E788E6DA081B1588173E0C3C7D7BEC6625D62AFB21B9E1228FD2620E3C257DECFB079DEEBD43EEC3FD8B67AF6D41FB7355BD184796D66FFEB384DB41C7D14ECFDDAF59F845B351D55E24AE97CBD3C21B093E58BF51AEE312A561B9B7C532C859547E1E19D539378B8B806B3ECC2AD7C0ADBC628AAB91DEBC5FA329C2E71F678F962BC12305316936D5A5063411610632451C837D83806B98DD038548592A2910C4BF4713FDF8BFD70897697FFF17B7F59FD8AD505103EEAB7A39BE1BDECD2833DB0253536D8F3
12320060827190158 2 6 100 3071 5 D3230D237572ECE9F92358715EBAC3A4D89F2D6B4DC39F056450263BEF1665FBD7B93916ABC867B7064802159D273C7EB01C5F9281A3D6DCCB7CF997D385998EC0E1FA3319AFE771A90ADBACEB414A020630D7C7F161FAFEC6C9FC06D3205C712AAE8848A1B2C21DFF301C7FFC0B75D13F060A313C32AFEEAF1493F641760EBEF38829B3371699D2A3264D0ECEB4E5C19581ED8C57699F559B9828BBFE147952E289F0E171C9C60335DD2F492CB409A4DB97BDF86E2DBA605064DB040A3DF5678E24F66718CA115C95C892FF7AEDFAABC2E6414716298CEC1A604270FEADF191B7C8A59C238C395A65442C0B963BF83025BED3951A271B7440EC7687C31DE63355DA7FEAC15DC962C7BF7614EB59B077B9889AD8703DFE98AC99615B722A0ABE89956D1058E025C7733420CB51D7E1608EFF2C0A30C9A5EB77CCA02C6B00CE781B172001C6C458630890062E27CE307D513A7686A69D1D548DE8334B13136D9E842A5E17FD67522C93823E03F08AEE8024AF5D88B2EE01D4D9980084F2599507 12320111016162555 2 6 100 3071 5 E6846A58148AC762DD0CA90662E5626D0C5647E5C8CE7D6190997846FB17A509767A28E1E7B5F1AD994407661C1225E05F37EE490AA3C4C5AE757129BE9EEC5DEDD6501D26F43C2CC0A1E1FF7D11A55616D02061E20573AC75DAB592D55C781608B8A20CB3DA2EB9C2C4C2FDA0CF1E083B6CFB43772FEFE969FDF56FA96EBCBFB4110384CBF0307F2DB59954BADE376AEB544ABAA269D39DE57EC52E7CEB5E7A5855BA1523CB774D387F4C018E66BFCDC81CCE6E59A2E9BD9D0E788E6DA081B1588173E0C3C7D7BEC6625D62AFB21B9E1228FD2620E3C257DECFB079DEEBD43EEC3FD8B67AF6D41FB7355BD184796D66FFEB384DB41C7D14ECFDDAF59F845B351D55E24AE97CBD3C21B093E58BF51AEE312A561B9B7C532C859547E1E19D539378B8B806B3ECC2AD7C0ADBC628AAB91DEBC5FA329C2E71F678F962BC12305316936D5A5063411610632451C837D83806B98DD038548592A2910C4BF4713FDF8BFD70897697FFF17B7F59FD8AD505103EEAB7A39BE1BDECD2833DB025360C11B7
12420060827202730 2 6 100 3071 2 D3230D237572ECE9F92358715EBAC3A4D89F2D6B4DC39F056450263BEF1665FBD7B93916ABC867B7064802159D273C7EB01C5F9281A3D6DCCB7CF997D385998EC0E1FA3319AFE771A90ADBACEB414A020630D7C7F161FAFEC6C9FC06D3205C712AAE8848A1B2C21DFF301C7FFC0B75D13F060A313C32AFEEAF1493F641760EBEF38829B3371699D2A3264D0ECEB4E5C19581ED8C57699F559B9828BBFE147952E289F0E171C9C60335DD2F492CB409A4DB97BDF86E2DBA605064DB040A3DF5678E24F66718CA115C95C892FF7AEDFAABC2E6414716298CEC1A604270FEADF191B7C8A59C238C395A65442C0B963BF83025BED3951A271B7440EC7687C31DE63355DA7FEAC15DC962C7BF7614EB59B077B9889AD8703DFE98AC99615B722A0ABE89956D1058E025C7733420CB51D7E1608EFF2C0A30C9A5EB77CCA02C6B00CE781B172001C6C458630890062E27CE307D513A7686A69D1D548DE8334B13136D9E842A5E17FD67522C93823E03F08AEE8024AF5D88B2EE01D4D9980084F305315B 12420111016163016 2 6 100 3071 5 E6846A58148AC762DD0CA90662E5626D0C5647E5C8CE7D6190997846FB17A509767A28E1E7B5F1AD994407661C1225E05F37EE490AA3C4C5AE757129BE9EEC5DEDD6501D26F43C2CC0A1E1FF7D11A55616D02061E20573AC75DAB592D55C781608B8A20CB3DA2EB9C2C4C2FDA0CF1E083B6CFB43772FEFE969FDF56FA96EBCBFB4110384CBF0307F2DB59954BADE376AEB544ABAA269D39DE57EC52E7CEB5E7A5855BA1523CB774D387F4C018E66BFCDC81CCE6E59A2E9BD9D0E788E6DA081B1588173E0C3C7D7BEC6625D62AFB21B9E1228FD2620E3C257DECFB079DEEBD43EEC3FD8B67AF6D41FB7355BD184796D66FFEB384DB41C7D14ECFDDAF59F845B351D55E24AE97CBD3C21B093E58BF51AEE312A561B9B7C532C859547E1E19D539378B8B806B3ECC2AD7C0ADBC628AAB91DEBC5FA329C2E71F678F962BC12305316936D5A5063411610632451C837D83806B98DD038548592A2910C4BF4713FDF8BFD70897697FFF17B7F59FD8AD505103EEAB7A39BE1BDECD2833DB025365EBB6F
12520060827213252 2 6 100 3071 2 D3230D237572ECE9F92358715EBAC3A4D89F2D6B4DC39F056450263BEF1665FBD7B93916ABC867B7064802159D273C7EB01C5F9281A3D6DCCB7CF997D385998EC0E1FA3319AFE771A90ADBACEB414A020630D7C7F161FAFEC6C9FC06D3205C712AAE8848A1B2C21DFF301C7FFC0B75D13F060A313C32AFEEAF1493F641760EBEF38829B3371699D2A3264D0ECEB4E5C19581ED8C57699F559B9828BBFE147952E289F0E171C9C60335DD2F492CB409A4DB97BDF86E2DBA605064DB040A3DF5678E24F66718CA115C95C892FF7AEDFAABC2E6414716298CEC1A604270FEADF191B7C8A59C238C395A65442C0B963BF83025BED3951A271B7440EC7687C31DE63355DA7FEAC15DC962C7BF7614EB59B077B9889AD8703DFE98AC99615B722A0ABE89956D1058E025C7733420CB51D7E1608EFF2C0A30C9A5EB77CCA02C6B00CE781B172001C6C458630890062E27CE307D513A7686A69D1D548DE8334B13136D9E842A5E17FD67522C93823E03F08AEE8024AF5D88B2EE01D4D9980084F38A5B63 12520111016174236 2 6 100 4095 5 F5D3849D2092FD427B4EBD838EA4830397A55F80B644626320DBBE51E8F63ED88148D787C94E7E67E4F393F26C565E1992B0CFF8A47A953439462A4D0FFA5763EF60FF908F8EE6C4F6EF9F32B9BA50F01AD56FE7EBE90876A5CF61813A4AD4BA7EC0704303C9BF887D36ABBD6C2AA9545FC2263232927E731060F5C701C96DC34016636DF438CE30973715F121D767CFB98B5D09AE7B86FA36A051AD3C2941A295A68E2F583A56BC69913EC9D25ABEF4FDF1E31EDE827A02620DB058B9F041DA051C8C0F13B132C17CEB893FA7C4CD8D8FEEBD82C5F9120CB221B8E88C5FE4DC17CA020A535484C92C7D4BEE69C7703E1FA9A652D444C80065342C6EC0FAC23C24DE246E3DEE72CA8BC8BECCDADE2B36771EFCC350558268F5352AE53F2F71DB62249AD9AC4FABDD6DFB099C6CFF8C05BDEA894390F9860F011CCA046DFEB2F6EF81094E7980BE526742706D1F3DB920DB107409291BB4C11F9A7DCBFAF26D808E6F9FE636B26B939DE419129E86B1E632C60EC23B65C815723C5D861AF068FD0AC8B37F4C06ECBD5CB2EF069CA8DAAC5CBD67C6182A65FED656D0DFBBB8A430B1DBAC7BD6303BEC8DE078FE69F443A7BC8131A284D25DC2844F096240BFC61B62E91A87802987659B884C094C68741D29AA5CA19B9457E1F9DF61C7DBBB13A61A79E4670B086027F20DA2AF4F5B020725F8828726379F429178926A1A016AFF
12620060827214322 2 6 100 3071 5 D3230D237572ECE9F92358715EBAC3A4D89F2D6B4DC39F056450263BEF1665FBD7B93916ABC867B7064802159D273C7EB01C5F9281A3D6DCCB7CF997D385998EC0E1FA3319AFE771A90ADBACEB414A020630D7C7F161FAFEC6C9FC06D3205C712AAE8848A1B2C21DFF301C7FFC0B75D13F060A313C32AFEEAF1493F641760EBEF38829B3371699D2A3264D0ECEB4E5C19581ED8C57699F559B9828BBFE147952E289F0E171C9C60335DD2F492CB409A4DB97BDF86E2DBA605064DB040A3DF5678E24F66718CA115C95C892FF7AEDFAABC2E6414716298CEC1A604270FEADF191B7C8A59C238C395A65442C0B963BF83025BED3951A271B7440EC7687C31DE63355DA7FEAC15DC962C7BF7614EB59B077B9889AD8703DFE98AC99615B722A0ABE89956D1058E025C7733420CB51D7E1608EFF2C0A30C9A5EB77CCA02C6B00CE781B172001C6C458630890062E27CE307D513A7686A69D1D548DE8334B13136D9E842A5E17FD67522C93823E03F08AEE8024AF5D88B2EE01D4D9980084F3987FC7 12620111016180550 2 6 100 4095 2 F5D3849D2092FD427B4EBD838EA4830397A55F80B644626320DBBE51E8F63ED88148D787C94E7E67E4F393F26C565E1992B0CFF8A47A953439462A4D0FFA5763EF60FF908F8EE6C4F6EF9F32B9BA50F01AD56FE7EBE90876A5CF61813A4AD4BA7EC0704303C9BF887D36ABBD6C2AA9545FC2263232927E731060F5C701C96DC34016636DF438CE30973715F121D767CFB98B5D09AE7B86FA36A051AD3C2941A295A68E2F583A56BC69913EC9D25ABEF4FDF1E31EDE827A02620DB058B9F041DA051C8C0F13B132C17CEB893FA7C4CD8D8FEEBD82C5F9120CB221B8E88C5FE4DC17CA020A535484C92C7D4BEE69C7703E1FA9A652D444C80065342C6EC0FAC23C24DE246E3DEE72CA8BC8BECCDADE2B36771EFCC350558268F5352AE53F2F71DB62249AD9AC4FABDD6DFB099C6CFF8C05BDEA894390F9860F011CCA046DFEB2F6EF81094E7980BE526742706D1F3DB920DB107409291BB4C11F9A7DCBFAF26D808E6F9FE636B26B939DE419129E86B1E632C60EC23B65C815723C5D861AF068FD0AC8B37F4C06ECBD5CB2EF069CA8DAAC5CBD67C6182A65FED656D0DFBBB8A430B1DBAC7BD6303BEC8DE078FE69F443A7BC8131A284D25DC2844F096240BFC61B62E91A87802987659B884C094C68741D29AA5CA19B9457E1F9DF61C7DBBB13A61A79E4670B086027F20DA2AF4F5B020725F8828726379F429178926A1AD638E3
12720060827214825 2 6 100 3071 2 D3230D237572ECE9F92358715EBAC3A4D89F2D6B4DC39F056450263BEF1665FBD7B93916ABC867B7064802159D273C7EB01C5F9281A3D6DCCB7CF997D385998EC0E1FA3319AFE771A90ADBACEB414A020630D7C7F161FAFEC6C9FC06D3205C712AAE8848A1B2C21DFF301C7FFC0B75D13F060A313C32AFEEAF1493F641760EBEF38829B3371699D2A3264D0ECEB4E5C19581ED8C57699F559B9828BBFE147952E289F0E171C9C60335DD2F492CB409A4DB97BDF86E2DBA605064DB040A3DF5678E24F66718CA115C95C892FF7AEDFAABC2E6414716298CEC1A604270FEADF191B7C8A59C238C395A65442C0B963BF83025BED3951A271B7440EC7687C31DE63355DA7FEAC15DC962C7BF7614EB59B077B9889AD8703DFE98AC99615B722A0ABE89956D1058E025C7733420CB51D7E1608EFF2C0A30C9A5EB77CCA02C6B00CE781B172001C6C458630890062E27CE307D513A7686A69D1D548DE8334B13136D9E842A5E17FD67522C93823E03F08AEE8024AF5D88B2EE01D4D9980084F39A3CDB 12720111016184221 2 6 100 4095 2 F5D3849D2092FD427B4EBD838EA4830397A55F80B644626320DBBE51E8F63ED88148D787C94E7E67E4F393F26C565E1992B0CFF8A47A953439462A4D0FFA5763EF60FF908F8EE6C4F6EF9F32B9BA50F01AD56FE7EBE90876A5CF61813A4AD4BA7EC0704303C9BF887D36ABBD6C2AA9545FC2263232927E731060F5C701C96DC34016636DF438CE30973715F121D767CFB98B5D09AE7B86FA36A051AD3C2941A295A68E2F583A56BC69913EC9D25ABEF4FDF1E31EDE827A02620DB058B9F041DA051C8C0F13B132C17CEB893FA7C4CD8D8FEEBD82C5F9120CB221B8E88C5FE4DC17CA020A535484C92C7D4BEE69C7703E1FA9A652D444C80065342C6EC0FAC23C24DE246E3DEE72CA8BC8BECCDADE2B36771EFCC350558268F5352AE53F2F71DB62249AD9AC4FABDD6DFB099C6CFF8C05BDEA894390F9860F011CCA046DFEB2F6EF81094E7980BE526742706D1F3DB920DB107409291BB4C11F9A7DCBFAF26D808E6F9FE636B26B939DE419129E86B1E632C60EC23B65C815723C5D861AF068FD0AC8B37F4C06ECBD5CB2EF069CA8DAAC5CBD67C6182A65FED656D0DFBBB8A430B1DBAC7BD6303BEC8DE078FE69F443A7BC8131A284D25DC2844F096240BFC61B62E91A87802987659B884C094C68741D29AA5CA19B9457E1F9DF61C7DBBB13A61A79E4670B086027F20DA2AF4F5B020725F8828726379F429178926A1C280E1B
12820060827232520 2 6 100 3071 2 D3230D237572ECE9F92358715EBAC3A4D89F2D6B4DC39F056450263BEF1665FBD7B93916ABC867B7064802159D273C7EB01C5F9281A3D6DCCB7CF997D385998EC0E1FA3319AFE771A90ADBACEB414A020630D7C7F161FAFEC6C9FC06D3205C712AAE8848A1B2C21DFF301C7FFC0B75D13F060A313C32AFEEAF1493F641760EBEF38829B3371699D2A3264D0ECEB4E5C19581ED8C57699F559B9828BBFE147952E289F0E171C9C60335DD2F492CB409A4DB97BDF86E2DBA605064DB040A3DF5678E24F66718CA115C95C892FF7AEDFAABC2E6414716298CEC1A604270FEADF191B7C8A59C238C395A65442C0B963BF83025BED3951A271B7440EC7687C31DE63355DA7FEAC15DC962C7BF7614EB59B077B9889AD8703DFE98AC99615B722A0ABE89956D1058E025C7733420CB51D7E1608EFF2C0A30C9A5EB77CCA02C6B00CE781B172001C6C458630890062E27CE307D513A7686A69D1D548DE8334B13136D9E842A5E17FD67522C93823E03F08AEE8024AF5D88B2EE01D4D9980084F46375AB 12820111016184933 2 6 100 4095 2 F5D3849D2092FD427B4EBD838EA4830397A55F80B644626320DBBE51E8F63ED88148D787C94E7E67E4F393F26C565E1992B0CFF8A47A953439462A4D0FFA5763EF60FF908F8EE6C4F6EF9F32B9BA50F01AD56FE7EBE90876A5CF61813A4AD4BA7EC0704303C9BF887D36ABBD6C2AA9545FC2263232927E731060F5C701C96DC34016636DF438CE30973715F121D767CFB98B5D09AE7B86FA36A051AD3C2941A295A68E2F583A56BC69913EC9D25ABEF4FDF1E31EDE827A02620DB058B9F041DA051C8C0F13B132C17CEB893FA7C4CD8D8FEEBD82C5F9120CB221B8E88C5FE4DC17CA020A535484C92C7D4BEE69C7703E1FA9A652D444C80065342C6EC0FAC23C24DE246E3DEE72CA8BC8BECCDADE2B36771EFCC350558268F5352AE53F2F71DB62249AD9AC4FABDD6DFB099C6CFF8C05BDEA894390F9860F011CCA046DFEB2F6EF81094E7980BE526742706D1F3DB920DB107409291BB4C11F9A7DCBFAF26D808E6F9FE636B26B939DE419129E86B1E632C60EC23B65C815723C5D861AF068FD0AC8B37F4C06ECBD5CB2EF069CA8DAAC5CBD67C6182A65FED656D0DFBBB8A430B1DBAC7BD6303BEC8DE078FE69F443A7BC8131A284D25DC2844F096240BFC61B62E91A87802987659B884C094C68741D29AA5CA19B9457E1F9DF61C7DBBB13A61A79E4670B086027F20DA2AF4F5B020725F8828726379F429178926A1C6693C3
12920060828030405 2 6 100 3071 2 D3230D237572ECE9F92358715EBAC3A4D89F2D6B4DC39F056450263BEF1665FBD7B93916ABC867B7064802159D273C7EB01C5F9281A3D6DCCB7CF997D385998EC0E1FA3319AFE771A90ADBACEB414A020630D7C7F161FAFEC6C9FC06D3205C712AAE8848A1B2C21DFF301C7FFC0B75D13F060A313C32AFEEAF1493F641760EBEF38829B3371699D2A3264D0ECEB4E5C19581ED8C57699F559B9828BBFE147952E289F0E171C9C60335DD2F492CB409A4DB97BDF86E2DBA605064DB040A3DF5678E24F66718CA115C95C892FF7AEDFAABC2E6414716298CEC1A604270FEADF191B7C8A59C238C395A65442C0B963BF83025BED3951A271B7440EC7687C31DE63355DA7FEAC15DC962C7BF7614EB59B077B9889AD8703DFE98AC99615B722A0ABE89956D1058E025C7733420CB51D7E1608EFF2C0A30C9A5EB77CCA02C6B00CE781B172001C6C458630890062E27CE307D513A7686A69D1D548DE8334B13136D9E842A5E17FD67522C93823E03F08AEE8024AF5D88B2EE01D4D9980084F62B17EB 12920111016190136 2 6 100 4095 5 F5D3849D2092FD427B4EBD838EA4830397A55F80B644626320DBBE51E8F63ED88148D787C94E7E67E4F393F26C565E1992B0CFF8A47A953439462A4D0FFA5763EF60FF908F8EE6C4F6EF9F32B9BA50F01AD56FE7EBE90876A5CF61813A4AD4BA7EC0704303C9BF887D36ABBD6C2AA9545FC2263232927E731060F5C701C96DC34016636DF438CE30973715F121D767CFB98B5D09AE7B86FA36A051AD3C2941A295A68E2F583A56BC69913EC9D25ABEF4FDF1E31EDE827A02620DB058B9F041DA051C8C0F13B132C17CEB893FA7C4CD8D8FEEBD82C5F9120CB221B8E88C5FE4DC17CA020A535484C92C7D4BEE69C7703E1FA9A652D444C80065342C6EC0FAC23C24DE246E3DEE72CA8BC8BECCDADE2B36771EFCC350558268F5352AE53F2F71DB62249AD9AC4FABDD6DFB099C6CFF8C05BDEA894390F9860F011CCA046DFEB2F6EF81094E7980BE526742706D1F3DB920DB107409291BB4C11F9A7DCBFAF26D808E6F9FE636B26B939DE419129E86B1E632C60EC23B65C815723C5D861AF068FD0AC8B37F4C06ECBD5CB2EF069CA8DAAC5CBD67C6182A65FED656D0DFBBB8A430B1DBAC7BD6303BEC8DE078FE69F443A7BC8131A284D25DC2844F096240BFC61B62E91A87802987659B884C094C68741D29AA5CA19B9457E1F9DF61C7DBBB13A61A79E4670B086027F20DA2AF4F5B020725F8828726379F429178926A1CD26BDF
13020060828043230 2 6 100 3071 5 D3230D237572ECE9F92358715EBAC3A4D89F2D6B4DC39F056450263BEF1665FBD7B93916ABC867B7064802159D273C7EB01C5F9281A3D6DCCB7CF997D385998EC0E1FA3319AFE771A90ADBACEB414A020630D7C7F161FAFEC6C9FC06D3205C712AAE8848A1B2C21DFF301C7FFC0B75D13F060A313C32AFEEAF1493F641760EBEF38829B3371699D2A3264D0ECEB4E5C19581ED8C57699F559B9828BBFE147952E289F0E171C9C60335DD2F492CB409A4DB97BDF86E2DBA605064DB040A3DF5678E24F66718CA115C95C892FF7AEDFAABC2E6414716298CEC1A604270FEADF191B7C8A59C238C395A65442C0B963BF83025BED3951A271B7440EC7687C31DE63355DA7FEAC15DC962C7BF7614EB59B077B9889AD8703DFE98AC99615B722A0ABE89956D1058E025C7733420CB51D7E1608EFF2C0A30C9A5EB77CCA02C6B00CE781B172001C6C458630890062E27CE307D513A7686A69D1D548DE8334B13136D9E842A5E17FD67522C93823E03F08AEE8024AF5D88B2EE01D4D9980084F6E0BB4F 13020111016192019 2 6 100 4095 2 F5D3849D2092FD427B4EBD838EA4830397A55F80B644626320DBBE51E8F63ED88148D787C94E7E67E4F393F26C565E1992B0CFF8A47A953439462A4D0FFA5763EF60FF908F8EE6C4F6EF9F32B9BA50F01AD56FE7EBE90876A5CF61813A4AD4BA7EC0704303C9BF887D36ABBD6C2AA9545FC2263232927E731060F5C701C96DC34016636DF438CE30973715F121D767CFB98B5D09AE7B86FA36A051AD3C2941A295A68E2F583A56BC69913EC9D25ABEF4FDF1E31EDE827A02620DB058B9F041DA051C8C0F13B132C17CEB893FA7C4CD8D8FEEBD82C5F9120CB221B8E88C5FE4DC17CA020A535484C92C7D4BEE69C7703E1FA9A652D444C80065342C6EC0FAC23C24DE246E3DEE72CA8BC8BECCDADE2B36771EFCC350558268F5352AE53F2F71DB62249AD9AC4FABDD6DFB099C6CFF8C05BDEA894390F9860F011CCA046DFEB2F6EF81094E7980BE526742706D1F3DB920DB107409291BB4C11F9A7DCBFAF26D808E6F9FE636B26B939DE419129E86B1E632C60EC23B65C815723C5D861AF068FD0AC8B37F4C06ECBD5CB2EF069CA8DAAC5CBD67C6182A65FED656D0DFBBB8A430B1DBAC7BD6303BEC8DE078FE69F443A7BC8131A284D25DC2844F096240BFC61B62E91A87802987659B884C094C68741D29AA5CA19B9457E1F9DF61C7DBBB13A61A79E4670B086027F20DA2AF4F5B020725F8828726379F429178926A1D7AF093
13120060828081338 2 6 100 3071 5 D3230D237572ECE9F92358715EBAC3A4D89F2D6B4DC39F056450263BEF1665FBD7B93916ABC867B7064802159D273C7EB01C5F9281A3D6DCCB7CF997D385998EC0E1FA3319AFE771A90ADBACEB414A020630D7C7F161FAFEC6C9FC06D3205C712AAE8848A1B2C21DFF301C7FFC0B75D13F060A313C32AFEEAF1493F641760EBEF38829B3371699D2A3264D0ECEB4E5C19581ED8C57699F559B9828BBFE147952E289F0E171C9C60335DD2F492CB409A4DB97BDF86E2DBA605064DB040A3DF5678E24F66718CA115C95C892FF7AEDFAABC2E6414716298CEC1A604270FEADF191B7C8A59C238C395A65442C0B963BF83025BED3951A271B7440EC7687C31DE63355DA7FEAC15DC962C7BF7614EB59B077B9889AD8703DFE98AC99615B722A0ABE89956D1058E025C7733420CB51D7E1608EFF2C0A30C9A5EB77CCA02C6B00CE781B172001C6C458630890062E27CE307D513A7686A69D1D548DE8334B13136D9E842A5E17FD67522C93823E03F08AEE8024AF5D88B2EE01D4D9980084F8A9B0EF 13120111016200408 2 6 100 4095 5 F5D3849D2092FD427B4EBD838EA4830397A55F80B644626320DBBE51E8F63ED88148D787C94E7E67E4F393F26C565E1992B0CFF8A47A953439462A4D0FFA5763EF60FF908F8EE6C4F6EF9F32B9BA50F01AD56FE7EBE90876A5CF61813A4AD4BA7EC0704303C9BF887D36ABBD6C2AA9545FC2263232927E731060F5C701C96DC34016636DF438CE30973715F121D767CFB98B5D09AE7B86FA36A051AD3C2941A295A68E2F583A56BC69913EC9D25ABEF4FDF1E31EDE827A02620DB058B9F041DA051C8C0F13B132C17CEB893FA7C4CD8D8FEEBD82C5F9120CB221B8E88C5FE4DC17CA020A535484C92C7D4BEE69C7703E1FA9A652D444C80065342C6EC0FAC23C24DE246E3DEE72CA8BC8BECCDADE2B36771EFCC350558268F5352AE53F2F71DB62249AD9AC4FABDD6DFB099C6CFF8C05BDEA894390F9860F011CCA046DFEB2F6EF81094E7980BE526742706D1F3DB920DB107409291BB4C11F9A7DCBFAF26D808E6F9FE636B26B939DE419129E86B1E632C60EC23B65C815723C5D861AF068FD0AC8B37F4C06ECBD5CB2EF069CA8DAAC5CBD67C6182A65FED656D0DFBBB8A430B1DBAC7BD6303BEC8DE078FE69F443A7BC8131A284D25DC2844F096240BFC61B62E91A87802987659B884C094C68741D29AA5CA19B9457E1F9DF61C7DBBB13A61A79E4670B086027F20DA2AF4F5B020725F8828726379F429178926A1F0EA03F
13220060828083613 2 6 100 3071 5 D3230D237572ECE9F92358715EBAC3A4D89F2D6B4DC39F056450263BEF1665FBD7B93916ABC867B7064802159D273C7EB01C5F9281A3D6DCCB7CF997D385998EC0E1FA3319AFE771A90ADBACEB414A020630D7C7F161FAFEC6C9FC06D3205C712AAE8848A1B2C21DFF301C7FFC0B75D13F060A313C32AFEEAF1493F641760EBEF38829B3371699D2A3264D0ECEB4E5C19581ED8C57699F559B9828BBFE147952E289F0E171C9C60335DD2F492CB409A4DB97BDF86E2DBA605064DB040A3DF5678E24F66718CA115C95C892FF7AEDFAABC2E6414716298CEC1A604270FEADF191B7C8A59C238C395A65442C0B963BF83025BED3951A271B7440EC7687C31DE63355DA7FEAC15DC962C7BF7614EB59B077B9889AD8703DFE98AC99615B722A0ABE89956D1058E025C7733420CB51D7E1608EFF2C0A30C9A5EB77CCA02C6B00CE781B172001C6C458630890062E27CE307D513A7686A69D1D548DE8334B13136D9E842A5E17FD67522C93823E03F08AEE8024AF5D88B2EE01D4D9980084F8D164EF 13220111016203816 2 6 100 4095 5 F5D3849D2092FD427B4EBD838EA4830397A55F80B644626320DBBE51E8F63ED88148D787C94E7E67E4F393F26C565E1992B0CFF8A47A953439462A4D0FFA5763EF60FF908F8EE6C4F6EF9F32B9BA50F01AD56FE7EBE90876A5CF61813A4AD4BA7EC0704303C9BF887D36ABBD6C2AA9545FC2263232927E731060F5C701C96DC34016636DF438CE30973715F121D767CFB98B5D09AE7B86FA36A051AD3C2941A295A68E2F583A56BC69913EC9D25ABEF4FDF1E31EDE827A02620DB058B9F041DA051C8C0F13B132C17CEB893FA7C4CD8D8FEEBD82C5F9120CB221B8E88C5FE4DC17CA020A535484C92C7D4BEE69C7703E1FA9A652D444C80065342C6EC0FAC23C24DE246E3DEE72CA8BC8BECCDADE2B36771EFCC350558268F5352AE53F2F71DB62249AD9AC4FABDD6DFB099C6CFF8C05BDEA894390F9860F011CCA046DFEB2F6EF81094E7980BE526742706D1F3DB920DB107409291BB4C11F9A7DCBFAF26D808E6F9FE636B26B939DE419129E86B1E632C60EC23B65C815723C5D861AF068FD0AC8B37F4C06ECBD5CB2EF069CA8DAAC5CBD67C6182A65FED656D0DFBBB8A430B1DBAC7BD6303BEC8DE078FE69F443A7BC8131A284D25DC2844F096240BFC61B62E91A87802987659B884C094C68741D29AA5CA19B9457E1F9DF61C7DBBB13A61A79E4670B086027F20DA2AF4F5B020725F8828726379F429178926A203A2C8F
13320060828090529 2 6 100 3071 2 D3230D237572ECE9F92358715EBAC3A4D89F2D6B4DC39F056450263BEF1665FBD7B93916ABC867B7064802159D273C7EB01C5F9281A3D6DCCB7CF997D385998EC0E1FA3319AFE771A90ADBACEB414A020630D7C7F161FAFEC6C9FC06D3205C712AAE8848A1B2C21DFF301C7FFC0B75D13F060A313C32AFEEAF1493F641760EBEF38829B3371699D2A3264D0ECEB4E5C19581ED8C57699F559B9828BBFE147952E289F0E171C9C60335DD2F492CB409A4DB97BDF86E2DBA605064DB040A3DF5678E24F66718CA115C95C892FF7AEDFAABC2E6414716298CEC1A604270FEADF191B7C8A59C238C395A65442C0B963BF83025BED3951A271B7440EC7687C31DE63355DA7FEAC15DC962C7BF7614EB59B077B9889AD8703DFE98AC99615B722A0ABE89956D1058E025C7733420CB51D7E1608EFF2C0A30C9A5EB77CCA02C6B00CE781B172001C6C458630890062E27CE307D513A7686A69D1D548DE8334B13136D9E842A5E17FD67522C93823E03F08AEE8024AF5D88B2EE01D4D9980084F906488B 13320111016211011 2 6 100 4095 5 F5D3849D2092FD427B4EBD838EA4830397A55F80B644626320DBBE51E8F63ED88148D787C94E7E67E4F393F26C565E1992B0CFF8A47A953439462A4D0FFA5763EF60FF908F8EE6C4F6EF9F32B9BA50F01AD56FE7EBE90876A5CF61813A4AD4BA7EC0704303C9BF887D36ABBD6C2AA9545FC2263232927E731060F5C701C96DC34016636DF438CE30973715F121D767CFB98B5D09AE7B86FA36A051AD3C2941A295A68E2F583A56BC69913EC9D25ABEF4FDF1E31EDE827A02620DB058B9F041DA051C8C0F13B132C17CEB893FA7C4CD8D8FEEBD82C5F9120CB221B8E88C5FE4DC17CA020A535484C92C7D4BEE69C7703E1FA9A652D444C80065342C6EC0FAC23C24DE246E3DEE72CA8BC8BECCDADE2B36771EFCC350558268F5352AE53F2F71DB62249AD9AC4FABDD6DFB099C6CFF8C05BDEA894390F9860F011CCA046DFEB2F6EF81094E7980BE526742706D1F3DB920DB107409291BB4C11F9A7DCBFAF26D808E6F9FE636B26B939DE419129E86B1E632C60EC23B65C815723C5D861AF068FD0AC8B37F4C06ECBD5CB2EF069CA8DAAC5CBD67C6182A65FED656D0DFBBB8A430B1DBAC7BD6303BEC8DE078FE69F443A7BC8131A284D25DC2844F096240BFC61B62E91A87802987659B884C094C68741D29AA5CA19B9457E1F9DF61C7DBBB13A61A79E4670B086027F20DA2AF4F5B020725F8828726379F429178926A2160E077
13420060828100621 2 6 100 3071 2 D3230D237572ECE9F92358715EBAC3A4D89F2D6B4DC39F056450263BEF1665FBD7B93916ABC867B7064802159D273C7EB01C5F9281A3D6DCCB7CF997D385998EC0E1FA3319AFE771A90ADBACEB414A020630D7C7F161FAFEC6C9FC06D3205C712AAE8848A1B2C21DFF301C7FFC0B75D13F060A313C32AFEEAF1493F641760EBEF38829B3371699D2A3264D0ECEB4E5C19581ED8C57699F559B9828BBFE147952E289F0E171C9C60335DD2F492CB409A4DB97BDF86E2DBA605064DB040A3DF5678E24F66718CA115C95C892FF7AEDFAABC2E6414716298CEC1A604270FEADF191B7C8A59C238C395A65442C0B963BF83025BED3951A271B7440EC7687C31DE63355DA7FEAC15DC962C7BF7614EB59B077B9889AD8703DFE98AC99615B722A0ABE89956D1058E025C7733420CB51D7E1608EFF2C0A30C9A5EB77CCA02C6B00CE781B172001C6C458630890062E27CE307D513A7686A69D1D548DE8334B13136D9E842A5E17FD67522C93823E03F08AEE8024AF5D88B2EE01D4D9980084F97FF4CB 13420111016222042 2 6 100 4095 2 F5D3849D2092FD427B4EBD838EA4830397A55F80B644626320DBBE51E8F63ED88148D787C94E7E67E4F393F26C565E1992B0CFF8A47A953439462A4D0FFA5763EF60FF908F8EE6C4F6EF9F32B9BA50F01AD56FE7EBE90876A5CF61813A4AD4BA7EC0704303C9BF887D36ABBD6C2AA9545FC2263232927E731060F5C701C96DC34016636DF438CE30973715F121D767CFB98B5D09AE7B86FA36A051AD3C2941A295A68E2F583A56BC69913EC9D25ABEF4FDF1E31EDE827A02620DB058B9F041DA051C8C0F13B132C17CEB893FA7C4CD8D8FEEBD82C5F9120CB221B8E88C5FE4DC17CA020A535484C92C7D4BEE69C7703E1FA9A652D444C80065342C6EC0FAC23C24DE246E3DEE72CA8BC8BECCDADE2B36771EFCC350558268F5352AE53F2F71DB62249AD9AC4FABDD6DFB099C6CFF8C05BDEA894390F9860F011CCA046DFEB2F6EF81094E7980BE526742706D1F3DB920DB107409291BB4C11F9A7DCBFAF26D808E6F9FE636B26B939DE419129E86B1E632C60EC23B65C815723C5D861AF068FD0AC8B37F4C06ECBD5CB2EF069CA8DAAC5CBD67C6182A65FED656D0DFBBB8A430B1DBAC7BD6303BEC8DE078FE69F443A7BC8131A284D25DC2844F096240BFC61B62E91A87802987659B884C094C68741D29AA5CA19B9457E1F9DF61C7DBBB13A61A79E4670B086027F20DA2AF4F5B020725F8828726379F429178926A23F56DCB
13520060828121421 2 6 100 3071 2 D3230D237572ECE9F92358715EBAC3A4D89F2D6B4DC39F056450263BEF1665FBD7B93916ABC867B7064802159D273C7EB01C5F9281A3D6DCCB7CF997D385998EC0E1FA3319AFE771A90ADBACEB414A020630D7C7F161FAFEC6C9FC06D3205C712AAE8848A1B2C21DFF301C7FFC0B75D13F060A313C32AFEEAF1493F641760EBEF38829B3371699D2A3264D0ECEB4E5C19581ED8C57699F559B9828BBFE147952E289F0E171C9C60335DD2F492CB409A4DB97BDF86E2DBA605064DB040A3DF5678E24F66718CA115C95C892FF7AEDFAABC2E6414716298CEC1A604270FEADF191B7C8A59C238C395A65442C0B963BF83025BED3951A271B7440EC7687C31DE63355DA7FEAC15DC962C7BF7614EB59B077B9889AD8703DFE98AC99615B722A0ABE89956D1058E025C7733420CB51D7E1608EFF2C0A30C9A5EB77CCA02C6B00CE781B172001C6C458630890062E27CE307D513A7686A69D1D548DE8334B13136D9E842A5E17FD67522C93823E03F08AEE8024AF5D88B2EE01D4D9980084FA80824B 13520111016222359 2 6 100 4095 5 F5D3849D2092FD427B4EBD838EA4830397A55F80B644626320DBBE51E8F63ED88148D787C94E7E67E4F393F26C565E1992B0CFF8A47A953439462A4D0FFA5763EF60FF908F8EE6C4F6EF9F32B9BA50F01AD56FE7EBE90876A5CF61813A4AD4BA7EC0704303C9BF887D36ABBD6C2AA9545FC2263232927E731060F5C701C96DC34016636DF438CE30973715F121D767CFB98B5D09AE7B86FA36A051AD3C2941A295A68E2F583A56BC69913EC9D25ABEF4FDF1E31EDE827A02620DB058B9F041DA051C8C0F13B132C17CEB893FA7C4CD8D8FEEBD82C5F9120CB221B8E88C5FE4DC17CA020A535484C92C7D4BEE69C7703E1FA9A652D444C80065342C6EC0FAC23C24DE246E3DEE72CA8BC8BECCDADE2B36771EFCC350558268F5352AE53F2F71DB62249AD9AC4FABDD6DFB099C6CFF8C05BDEA894390F9860F011CCA046DFEB2F6EF81094E7980BE526742706D1F3DB920DB107409291BB4C11F9A7DCBFAF26D808E6F9FE636B26B939DE419129E86B1E632C60EC23B65C815723C5D861AF068FD0AC8B37F4C06ECBD5CB2EF069CA8DAAC5CBD67C6182A65FED656D0DFBBB8A430B1DBAC7BD6303BEC8DE078FE69F443A7BC8131A284D25DC2844F096240BFC61B62E91A87802987659B884C094C68741D29AA5CA19B9457E1F9DF61C7DBBB13A61A79E4670B086027F20DA2AF4F5B020725F8828726379F429178926A240A25EF
13620060828141024 2 6 100 3071 5 D3230D237572ECE9F92358715EBAC3A4D89F2D6B4DC39F056450263BEF1665FBD7B93916ABC867B7064802159D273C7EB01C5F9281A3D6DCCB7CF997D385998EC0E1FA3319AFE771A90ADBACEB414A020630D7C7F161FAFEC6C9FC06D3205C712AAE8848A1B2C21DFF301C7FFC0B75D13F060A313C32AFEEAF1493F641760EBEF38829B3371699D2A3264D0ECEB4E5C19581ED8C57699F559B9828BBFE147952E289F0E171C9C60335DD2F492CB409A4DB97BDF86E2DBA605064DB040A3DF5678E24F66718CA115C95C892FF7AEDFAABC2E6414716298CEC1A604270FEADF191B7C8A59C238C395A65442C0B963BF83025BED3951A271B7440EC7687C31DE63355DA7FEAC15DC962C7BF7614EB59B077B9889AD8703DFE98AC99615B722A0ABE89956D1058E025C7733420CB51D7E1608EFF2C0A30C9A5EB77CCA02C6B00CE781B172001C6C458630890062E27CE307D513A7686A69D1D548DE8334B13136D9E842A5E17FD67522C93823E03F08AEE8024AF5D88B2EE01D4D9980084FB659087 13620111016222847 2 6 100 4095 2 F5D3849D2092FD427B4EBD838EA4830397A55F80B644626320DBBE51E8F63ED88148D787C94E7E67E4F393F26C565E1992B0CFF8A47A953439462A4D0FFA5763EF60FF908F8EE6C4F6EF9F32B9BA50F01AD56FE7EBE90876A5CF61813A4AD4BA7EC0704303C9BF887D36ABBD6C2AA9545FC2263232927E731060F5C701C96DC34016636DF438CE30973715F121D767CFB98B5D09AE7B86FA36A051AD3C2941A295A68E2F583A56BC69913EC9D25ABEF4FDF1E31EDE827A02620DB058B9F041DA051C8C0F13B132C17CEB893FA7C4CD8D8FEEBD82C5F9120CB221B8E88C5FE4DC17CA020A535484C92C7D4BEE69C7703E1FA9A652D444C80065342C6EC0FAC23C24DE246E3DEE72CA8BC8BECCDADE2B36771EFCC350558268F5352AE53F2F71DB62249AD9AC4FABDD6DFB099C6CFF8C05BDEA894390F9860F011CCA046DFEB2F6EF81094E7980BE526742706D1F3DB920DB107409291BB4C11F9A7DCBFAF26D808E6F9FE636B26B939DE419129E86B1E632C60EC23B65C815723C5D861AF068FD0AC8B37F4C06ECBD5CB2EF069CA8DAAC5CBD67C6182A65FED656D0DFBBB8A430B1DBAC7BD6303BEC8DE078FE69F443A7BC8131A284D25DC2844F096240BFC61B62E91A87802987659B884C094C68741D29AA5CA19B9457E1F9DF61C7DBBB13A61A79E4670B086027F20DA2AF4F5B020725F8828726379F429178926A242BA9FB
13720060828142059 2 6 100 3071 5 D3230D237572ECE9F92358715EBAC3A4D89F2D6B4DC39F056450263BEF1665FBD7B93916ABC867B7064802159D273C7EB01C5F9281A3D6DCCB7CF997D385998EC0E1FA3319AFE771A90ADBACEB414A020630D7C7F161FAFEC6C9FC06D3205C712AAE8848A1B2C21DFF301C7FFC0B75D13F060A313C32AFEEAF1493F641760EBEF38829B3371699D2A3264D0ECEB4E5C19581ED8C57699F559B9828BBFE147952E289F0E171C9C60335DD2F492CB409A4DB97BDF86E2DBA605064DB040A3DF5678E24F66718CA115C95C892FF7AEDFAABC2E6414716298CEC1A604270FEADF191B7C8A59C238C395A65442C0B963BF83025BED3951A271B7440EC7687C31DE63355DA7FEAC15DC962C7BF7614EB59B077B9889AD8703DFE98AC99615B722A0ABE89956D1058E025C7733420CB51D7E1608EFF2C0A30C9A5EB77CCA02C6B00CE781B172001C6C458630890062E27CE307D513A7686A69D1D548DE8334B13136D9E842A5E17FD67522C93823E03F08AEE8024AF5D88B2EE01D4D9980084FB739E8F 13720111016223306 2 6 100 4095 5 F5D3849D2092FD427B4EBD838EA4830397A55F80B644626320DBBE51E8F63ED88148D787C94E7E67E4F393F26C565E1992B0CFF8A47A953439462A4D0FFA5763EF60FF908F8EE6C4F6EF9F32B9BA50F01AD56FE7EBE90876A5CF61813A4AD4BA7EC0704303C9BF887D36ABBD6C2AA9545FC2263232927E731060F5C701C96DC34016636DF438CE30973715F121D767CFB98B5D09AE7B86FA36A051AD3C2941A295A68E2F583A56BC69913EC9D25ABEF4FDF1E31EDE827A02620DB058B9F041DA051C8C0F13B132C17CEB893FA7C4CD8D8FEEBD82C5F9120CB221B8E88C5FE4DC17CA020A535484C92C7D4BEE69C7703E1FA9A652D444C80065342C6EC0FAC23C24DE246E3DEE72CA8BC8BECCDADE2B36771EFCC350558268F5352AE53F2F71DB62249AD9AC4FABDD6DFB099C6CFF8C05BDEA894390F9860F011CCA046DFEB2F6EF81094E7980BE526742706D1F3DB920DB107409291BB4C11F9A7DCBFAF26D808E6F9FE636B26B939DE419129E86B1E632C60EC23B65C815723C5D861AF068FD0AC8B37F4C06ECBD5CB2EF069CA8DAAC5CBD67C6182A65FED656D0DFBBB8A430B1DBAC7BD6303BEC8DE078FE69F443A7BC8131A284D25DC2844F096240BFC61B62E91A87802987659B884C094C68741D29AA5CA19B9457E1F9DF61C7DBBB13A61A79E4670B086027F20DA2AF4F5B020725F8828726379F429178926A244B6A0F
13820060828170552 2 6 100 3071 5 D3230D237572ECE9F92358715EBAC3A4D89F2D6B4DC39F056450263BEF1665FBD7B93916ABC867B7064802159D273C7EB01C5F9281A3D6DCCB7CF997D385998EC0E1FA3319AFE771A90ADBACEB414A020630D7C7F161FAFEC6C9FC06D3205C712AAE8848A1B2C21DFF301C7FFC0B75D13F060A313C32AFEEAF1493F641760EBEF38829B3371699D2A3264D0ECEB4E5C19581ED8C57699F559B9828BBFE147952E289F0E171C9C60335DD2F492CB409A4DB97BDF86E2DBA605064DB040A3DF5678E24F66718CA115C95C892FF7AEDFAABC2E6414716298CEC1A604270FEADF191B7C8A59C238C395A65442C0B963BF83025BED3951A271B7440EC7687C31DE63355DA7FEAC15DC962C7BF7614EB59B077B9889AD8703DFE98AC99615B722A0ABE89956D1058E025C7733420CB51D7E1608EFF2C0A30C9A5EB77CCA02C6B00CE781B172001C6C458630890062E27CE307D513A7686A69D1D548DE8334B13136D9E842A5E17FD67522C93823E03F08AEE8024AF5D88B2EE01D4D9980084FCC5CE57 13820111016225817 2 6 100 4095 5 F5D3849D2092FD427B4EBD838EA4830397A55F80B644626320DBBE51E8F63ED88148D787C94E7E67E4F393F26C565E1992B0CFF8A47A953439462A4D0FFA5763EF60FF908F8EE6C4F6EF9F32B9BA50F01AD56FE7EBE90876A5CF61813A4AD4BA7EC0704303C9BF887D36ABBD6C2AA9545FC2263232927E731060F5C701C96DC34016636DF438CE30973715F121D767CFB98B5D09AE7B86FA36A051AD3C2941A295A68E2F583A56BC69913EC9D25ABEF4FDF1E31EDE827A02620DB058B9F041DA051C8C0F13B132C17CEB893FA7C4CD8D8FEEBD82C5F9120CB221B8E88C5FE4DC17CA020A535484C92C7D4BEE69C7703E1FA9A652D444C80065342C6EC0FAC23C24DE246E3DEE72CA8BC8BECCDADE2B36771EFCC350558268F5352AE53F2F71DB62249AD9AC4FABDD6DFB099C6CFF8C05BDEA894390F9860F011CCA046DFEB2F6EF81094E7980BE526742706D1F3DB920DB107409291BB4C11F9A7DCBFAF26D808E6F9FE636B26B939DE419129E86B1E632C60EC23B65C815723C5D861AF068FD0AC8B37F4C06ECBD5CB2EF069CA8DAAC5CBD67C6182A65FED656D0DFBBB8A430B1DBAC7BD6303BEC8DE078FE69F443A7BC8131A284D25DC2844F096240BFC61B62E91A87802987659B884C094C68741D29AA5CA19B9457E1F9DF61C7DBBB13A61A79E4670B086027F20DA2AF4F5B020725F8828726379F429178926A25319D4F
13920060828171327 2 6 100 3071 2 D3230D237572ECE9F92358715EBAC3A4D89F2D6B4DC39F056450263BEF1665FBD7B93916ABC867B7064802159D273C7EB01C5F9281A3D6DCCB7CF997D385998EC0E1FA3319AFE771A90ADBACEB414A020630D7C7F161FAFEC6C9FC06D3205C712AAE8848A1B2C21DFF301C7FFC0B75D13F060A313C32AFEEAF1493F641760EBEF38829B3371699D2A3264D0ECEB4E5C19581ED8C57699F559B9828BBFE147952E289F0E171C9C60335DD2F492CB409A4DB97BDF86E2DBA605064DB040A3DF5678E24F66718CA115C95C892FF7AEDFAABC2E6414716298CEC1A604270FEADF191B7C8A59C238C395A65442C0B963BF83025BED3951A271B7440EC7687C31DE63355DA7FEAC15DC962C7BF7614EB59B077B9889AD8703DFE98AC99615B722A0ABE89956D1058E025C7733420CB51D7E1608EFF2C0A30C9A5EB77CCA02C6B00CE781B172001C6C458630890062E27CE307D513A7686A69D1D548DE8334B13136D9E842A5E17FD67522C93823E03F08AEE8024AF5D88B2EE01D4D9980084FCCCF9D3 13920111017013900 2 6 100 4095 2 F5D3849D2092FD427B4EBD838EA4830397A55F80B644626320DBBE51E8F63ED88148D787C94E7E67E4F393F26C565E1992B0CFF8A47A953439462A4D0FFA5763EF60FF908F8EE6C4F6EF9F32B9BA50F01AD56FE7EBE90876A5CF61813A4AD4BA7EC0704303C9BF887D36ABBD6C2AA9545FC2263232927E731060F5C701C96DC34016636DF438CE30973715F121D767CFB98B5D09AE7B86FA36A051AD3C2941A295A68E2F583A56BC69913EC9D25ABEF4FDF1E31EDE827A02620DB058B9F041DA051C8C0F13B132C17CEB893FA7C4CD8D8FEEBD82C5F9120CB221B8E88C5FE4DC17CA020A535484C92C7D4BEE69C7703E1FA9A652D444C80065342C6EC0FAC23C24DE246E3DEE72CA8BC8BECCDADE2B36771EFCC350558268F5352AE53F2F71DB62249AD9AC4FABDD6DFB099C6CFF8C05BDEA894390F9860F011CCA046DFEB2F6EF81094E7980BE526742706D1F3DB920DB107409291BB4C11F9A7DCBFAF26D808E6F9FE636B26B939DE419129E86B1E632C60EC23B65C815723C5D861AF068FD0AC8B37F4C06ECBD5CB2EF069CA8DAAC5CBD67C6182A65FED656D0DFBBB8A430B1DBAC7BD6303BEC8DE078FE69F443A7BC8131A284D25DC2844F096240BFC61B62E91A87802987659B884C094C68741D29AA5CA19B9457E1F9DF61C7DBBB13A61A79E4670B086027F20DA2AF4F5B020725F8828726379F429178926A2B06A893
14020060828185943 2 6 100 3071 5 D3230D237572ECE9F92358715EBAC3A4D89F2D6B4DC39F056450263BEF1665FBD7B93916ABC867B7064802159D273C7EB01C5F9281A3D6DCCB7CF997D385998EC0E1FA3319AFE771A90ADBACEB414A020630D7C7F161FAFEC6C9FC06D3205C712AAE8848A1B2C21DFF301C7FFC0B75D13F060A313C32AFEEAF1493F641760EBEF38829B3371699D2A3264D0ECEB4E5C19581ED8C57699F559B9828BBFE147952E289F0E171C9C60335DD2F492CB409A4DB97BDF86E2DBA605064DB040A3DF5678E24F66718CA115C95C892FF7AEDFAABC2E6414716298CEC1A604270FEADF191B7C8A59C238C395A65442C0B963BF83025BED3951A271B7440EC7687C31DE63355DA7FEAC15DC962C7BF7614EB59B077B9889AD8703DFE98AC99615B722A0ABE89956D1058E025C7733420CB51D7E1608EFF2C0A30C9A5EB77CCA02C6B00CE781B172001C6C458630890062E27CE307D513A7686A69D1D548DE8334B13136D9E842A5E17FD67522C93823E03F08AEE8024AF5D88B2EE01D4D9980084FDA67727 14020111017020339 2 6 100 4095 5 F5D3849D2092FD427B4EBD838EA4830397A55F80B644626320DBBE51E8F63ED88148D787C94E7E67E4F393F26C565E1992B0CFF8A47A953439462A4D0FFA5763EF60FF908F8EE6C4F6EF9F32B9BA50F01AD56FE7EBE90876A5CF61813A4AD4BA7EC0704303C9BF887D36ABBD6C2AA9545FC2263232927E731060F5C701C96DC34016636DF438CE30973715F121D767CFB98B5D09AE7B86FA36A051AD3C2941A295A68E2F583A56BC69913EC9D25ABEF4FDF1E31EDE827A02620DB058B9F041DA051C8C0F13B132C17CEB893FA7C4CD8D8FEEBD82C5F9120CB221B8E88C5FE4DC17CA020A535484C92C7D4BEE69C7703E1FA9A652D444C80065342C6EC0FAC23C24DE246E3DEE72CA8BC8BECCDADE2B36771EFCC350558268F5352AE53F2F71DB62249AD9AC4FABDD6DFB099C6CFF8C05BDEA894390F9860F011CCA046DFEB2F6EF81094E7980BE526742706D1F3DB920DB107409291BB4C11F9A7DCBFAF26D808E6F9FE636B26B939DE419129E86B1E632C60EC23B65C815723C5D861AF068FD0AC8B37F4C06ECBD5CB2EF069CA8DAAC5CBD67C6182A65FED656D0DFBBB8A430B1DBAC7BD6303BEC8DE078FE69F443A7BC8131A284D25DC2844F096240BFC61B62E91A87802987659B884C094C68741D29AA5CA19B9457E1F9DF61C7DBBB13A61A79E4670B086027F20DA2AF4F5B020725F8828726379F429178926A2BE061B7
14120060828190537 2 6 100 3071 2 D3230D237572ECE9F92358715EBAC3A4D89F2D6B4DC39F056450263BEF1665FBD7B93916ABC867B7064802159D273C7EB01C5F9281A3D6DCCB7CF997D385998EC0E1FA3319AFE771A90ADBACEB414A020630D7C7F161FAFEC6C9FC06D3205C712AAE8848A1B2C21DFF301C7FFC0B75D13F060A313C32AFEEAF1493F641760EBEF38829B3371699D2A3264D0ECEB4E5C19581ED8C57699F559B9828BBFE147952E289F0E171C9C60335DD2F492CB409A4DB97BDF86E2DBA605064DB040A3DF5678E24F66718CA115C95C892FF7AEDFAABC2E6414716298CEC1A604270FEADF191B7C8A59C238C395A65442C0B963BF83025BED3951A271B7440EC7687C31DE63355DA7FEAC15DC962C7BF7614EB59B077B9889AD8703DFE98AC99615B722A0ABE89956D1058E025C7733420CB51D7E1608EFF2C0A30C9A5EB77CCA02C6B00CE781B172001C6C458630890062E27CE307D513A7686A69D1D548DE8334B13136D9E842A5E17FD67522C93823E03F08AEE8024AF5D88B2EE01D4D9980084FDAAC673 14120111017021940 2 6 100 4095 5 F5D3849D2092FD427B4EBD838EA4830397A55F80B644626320DBBE51E8F63ED88148D787C94E7E67E4F393F26C565E1992B0CFF8A47A953439462A4D0FFA5763EF60FF908F8EE6C4F6EF9F32B9BA50F01AD56FE7EBE90876A5CF61813A4AD4BA7EC0704303C9BF887D36ABBD6C2AA9545FC2263232927E731060F5C701C96DC34016636DF438CE30973715F121D767CFB98B5D09AE7B86FA36A051AD3C2941A295A68E2F583A56BC69913EC9D25ABEF4FDF1E31EDE827A02620DB058B9F041DA051C8C0F13B132C17CEB893FA7C4CD8D8FEEBD82C5F9120CB221B8E88C5FE4DC17CA020A535484C92C7D4BEE69C7703E1FA9A652D444C80065342C6EC0FAC23C24DE246E3DEE72CA8BC8BECCDADE2B36771EFCC350558268F5352AE53F2F71DB62249AD9AC4FABDD6DFB099C6CFF8C05BDEA894390F9860F011CCA046DFEB2F6EF81094E7980BE526742706D1F3DB920DB107409291BB4C11F9A7DCBFAF26D808E6F9FE636B26B939DE419129E86B1E632C60EC23B65C815723C5D861AF068FD0AC8B37F4C06ECBD5CB2EF069CA8DAAC5CBD67C6182A65FED656D0DFBBB8A430B1DBAC7BD6303BEC8DE078FE69F443A7BC8131A284D25DC2844F096240BFC61B62E91A87802987659B884C094C68741D29AA5CA19B9457E1F9DF61C7DBBB13A61A79E4670B086027F20DA2AF4F5B020725F8828726379F429178926A2C6885BF
14220060828191202 2 6 100 3071 5 D3230D237572ECE9F92358715EBAC3A4D89F2D6B4DC39F056450263BEF1665FBD7B93916ABC867B7064802159D273C7EB01C5F9281A3D6DCCB7CF997D385998EC0E1FA3319AFE771A90ADBACEB414A020630D7C7F161FAFEC6C9FC06D3205C712AAE8848A1B2C21DFF301C7FFC0B75D13F060A313C32AFEEAF1493F641760EBEF38829B3371699D2A3264D0ECEB4E5C19581ED8C57699F559B9828BBFE147952E289F0E171C9C60335DD2F492CB409A4DB97BDF86E2DBA605064DB040A3DF5678E24F66718CA115C95C892FF7AEDFAABC2E6414716298CEC1A604270FEADF191B7C8A59C238C395A65442C0B963BF83025BED3951A271B7440EC7687C31DE63355DA7FEAC15DC962C7BF7614EB59B077B9889AD8703DFE98AC99615B722A0ABE89956D1058E025C7733420CB51D7E1608EFF2C0A30C9A5EB77CCA02C6B00CE781B172001C6C458630890062E27CE307D513A7686A69D1D548DE8334B13136D9E842A5E17FD67522C93823E03F08AEE8024AF5D88B2EE01D4D9980084FDAFC737 14220111017022558 2 6 100 4095 2 F5D3849D2092FD427B4EBD838EA4830397A55F80B644626320DBBE51E8F63ED88148D787C94E7E67E4F393F26C565E1992B0CFF8A47A953439462A4D0FFA5763EF60FF908F8EE6C4F6EF9F32B9BA50F01AD56FE7EBE90876A5CF61813A4AD4BA7EC0704303C9BF887D36ABBD6C2AA9545FC2263232927E731060F5C701C96DC34016636DF438CE30973715F121D767CFB98B5D09AE7B86FA36A051AD3C2941A295A68E2F583A56BC69913EC9D25ABEF4FDF1E31EDE827A02620DB058B9F041DA051C8C0F13B132C17CEB893FA7C4CD8D8FEEBD82C5F9120CB221B8E88C5FE4DC17CA020A535484C92C7D4BEE69C7703E1FA9A652D444C80065342C6EC0FAC23C24DE246E3DEE72CA8BC8BECCDADE2B36771EFCC350558268F5352AE53F2F71DB62249AD9AC4FABDD6DFB099C6CFF8C05BDEA894390F9860F011CCA046DFEB2F6EF81094E7980BE526742706D1F3DB920DB107409291BB4C11F9A7DCBFAF26D808E6F9FE636B26B939DE419129E86B1E632C60EC23B65C815723C5D861AF068FD0AC8B37F4C06ECBD5CB2EF069CA8DAAC5CBD67C6182A65FED656D0DFBBB8A430B1DBAC7BD6303BEC8DE078FE69F443A7BC8131A284D25DC2844F096240BFC61B62E91A87802987659B884C094C68741D29AA5CA19B9457E1F9DF61C7DBBB13A61A79E4670B086027F20DA2AF4F5B020725F8828726379F429178926A2C9B19CB
14320060828192613 2 6 100 3071 2 D3230D237572ECE9F92358715EBAC3A4D89F2D6B4DC39F056450263BEF1665FBD7B93916ABC867B7064802159D273C7EB01C5F9281A3D6DCCB7CF997D385998EC0E1FA3319AFE771A90ADBACEB414A020630D7C7F161FAFEC6C9FC06D3205C712AAE8848A1B2C21DFF301C7FFC0B75D13F060A313C32AFEEAF1493F641760EBEF38829B3371699D2A3264D0ECEB4E5C19581ED8C57699F559B9828BBFE147952E289F0E171C9C60335DD2F492CB409A4DB97BDF86E2DBA605064DB040A3DF5678E24F66718CA115C95C892FF7AEDFAABC2E6414716298CEC1A604270FEADF191B7C8A59C238C395A65442C0B963BF83025BED3951A271B7440EC7687C31DE63355DA7FEAC15DC962C7BF7614EB59B077B9889AD8703DFE98AC99615B722A0ABE89956D1058E025C7733420CB51D7E1608EFF2C0A30C9A5EB77CCA02C6B00CE781B172001C6C458630890062E27CE307D513A7686A69D1D548DE8334B13136D9E842A5E17FD67522C93823E03F08AEE8024AF5D88B2EE01D4D9980084FDC50FBB 14320111017022903 2 6 100 4095 5 F5D3849D2092FD427B4EBD838EA4830397A55F80B644626320DBBE51E8F63ED88148D787C94E7E67E4F393F26C565E1992B0CFF8A47A953439462A4D0FFA5763EF60FF908F8EE6C4F6EF9F32B9BA50F01AD56FE7EBE90876A5CF61813A4AD4BA7EC0704303C9BF887D36ABBD6C2AA9545FC2263232927E731060F5C701C96DC34016636DF438CE30973715F121D767CFB98B5D09AE7B86FA36A051AD3C2941A295A68E2F583A56BC69913EC9D25ABEF4FDF1E31EDE827A02620DB058B9F041DA051C8C0F13B132C17CEB893FA7C4CD8D8FEEBD82C5F9120CB221B8E88C5FE4DC17CA020A535484C92C7D4BEE69C7703E1FA9A652D444C80065342C6EC0FAC23C24DE246E3DEE72CA8BC8BECCDADE2B36771EFCC350558268F5352AE53F2F71DB62249AD9AC4FABDD6DFB099C6CFF8C05BDEA894390F9860F011CCA046DFEB2F6EF81094E7980BE526742706D1F3DB920DB107409291BB4C11F9A7DCBFAF26D808E6F9FE636B26B939DE419129E86B1E632C60EC23B65C815723C5D861AF068FD0AC8B37F4C06ECBD5CB2EF069CA8DAAC5CBD67C6182A65FED656D0DFBBB8A430B1DBAC7BD6303BEC8DE078FE69F443A7BC8131A284D25DC2844F096240BFC61B62E91A87802987659B884C094C68741D29AA5CA19B9457E1F9DF61C7DBBB13A61A79E4670B086027F20DA2AF4F5B020725F8828726379F429178926A2CB034D7
14420060828193738 2 6 100 3071 5 D3230D237572ECE9F92358715EBAC3A4D89F2D6B4DC39F056450263BEF1665FBD7B93916ABC867B7064802159D273C7EB01C5F9281A3D6DCCB7CF997D385998EC0E1FA3319AFE771A90ADBACEB414A020630D7C7F161FAFEC6C9FC06D3205C712AAE8848A1B2C21DFF301C7FFC0B75D13F060A313C32AFEEAF1493F641760EBEF38829B3371699D2A3264D0ECEB4E5C19581ED8C57699F559B9828BBFE147952E289F0E171C9C60335DD2F492CB409A4DB97BDF86E2DBA605064DB040A3DF5678E24F66718CA115C95C892FF7AEDFAABC2E6414716298CEC1A604270FEADF191B7C8A59C238C395A65442C0B963BF83025BED3951A271B7440EC7687C31DE63355DA7FEAC15DC962C7BF7614EB59B077B9889AD8703DFE98AC99615B722A0ABE89956D1058E025C7733420CB51D7E1608EFF2C0A30C9A5EB77CCA02C6B00CE781B172001C6C458630890062E27CE307D513A7686A69D1D548DE8334B13136D9E842A5E17FD67522C93823E03F08AEE8024AF5D88B2EE01D4D9980084FDD6023F 14420111017025209 2 6 100 4095 2 F5D3849D2092FD427B4EBD838EA4830397A55F80B644626320DBBE51E8F63ED88148D787C94E7E67E4F393F26C565E1992B0CFF8A47A953439462A4D0FFA5763EF60FF908F8EE6C4F6EF9F32B9BA50F01AD56FE7EBE90876A5CF61813A4AD4BA7EC0704303C9BF887D36ABBD6C2AA9545FC2263232927E731060F5C701C96DC34016636DF438CE30973715F121D767CFB98B5D09AE7B86FA36A051AD3C2941A295A68E2F583A56BC69913EC9D25ABEF4FDF1E31EDE827A02620DB058B9F041DA051C8C0F13B132C17CEB893FA7C4CD8D8FEEBD82C5F9120CB221B8E88C5FE4DC17CA020A535484C92C7D4BEE69C7703E1FA9A652D444C80065342C6EC0FAC23C24DE246E3DEE72CA8BC8BECCDADE2B36771EFCC350558268F5352AE53F2F71DB62249AD9AC4FABDD6DFB099C6CFF8C05BDEA894390F9860F011CCA046DFEB2F6EF81094E7980BE526742706D1F3DB920DB107409291BB4C11F9A7DCBFAF26D808E6F9FE636B26B939DE419129E86B1E632C60EC23B65C815723C5D861AF068FD0AC8B37F4C06ECBD5CB2EF069CA8DAAC5CBD67C6182A65FED656D0DFBBB8A430B1DBAC7BD6303BEC8DE078FE69F443A7BC8131A284D25DC2844F096240BFC61B62E91A87802987659B884C094C68741D29AA5CA19B9457E1F9DF61C7DBBB13A61A79E4670B086027F20DA2AF4F5B020725F8828726379F429178926A2D7B4DE3
14520060828204936 2 6 100 3071 5 D3230D237572ECE9F92358715EBAC3A4D89F2D6B4DC39F056450263BEF1665FBD7B93916ABC867B7064802159D273C7EB01C5F9281A3D6DCCB7CF997D385998EC0E1FA3319AFE771A90ADBACEB414A020630D7C7F161FAFEC6C9FC06D3205C712AAE8848A1B2C21DFF301C7FFC0B75D13F060A313C32AFEEAF1493F641760EBEF38829B3371699D2A3264D0ECEB4E5C19581ED8C57699F559B9828BBFE147952E289F0E171C9C60335DD2F492CB409A4DB97BDF86E2DBA605064DB040A3DF5678E24F66718CA115C95C892FF7AEDFAABC2E6414716298CEC1A604270FEADF191B7C8A59C238C395A65442C0B963BF83025BED3951A271B7440EC7687C31DE63355DA7FEAC15DC962C7BF7614EB59B077B9889AD8703DFE98AC99615B722A0ABE89956D1058E025C7733420CB51D7E1608EFF2C0A30C9A5EB77CCA02C6B00CE781B172001C6C458630890062E27CE307D513A7686A69D1D548DE8334B13136D9E842A5E17FD67522C93823E03F08AEE8024AF5D88B2EE01D4D9980084FE68405F 14520111017043945 2 6 100 4095 5 F5D3849D2092FD427B4EBD838EA4830397A55F80B644626320DBBE51E8F63ED88148D787C94E7E67E4F393F26C565E1992B0CFF8A47A953439462A4D0FFA5763EF60FF908F8EE6C4F6EF9F32B9BA50F01AD56FE7EBE90876A5CF61813A4AD4BA7EC0704303C9BF887D36ABBD6C2AA9545FC2263232927E731060F5C701C96DC34016636DF438CE30973715F121D767CFB98B5D09AE7B86FA36A051AD3C2941A295A68E2F583A56BC69913EC9D25ABEF4FDF1E31EDE827A02620DB058B9F041DA051C8C0F13B132C17CEB893FA7C4CD8D8FEEBD82C5F9120CB221B8E88C5FE4DC17CA020A535484C92C7D4BEE69C7703E1FA9A652D444C80065342C6EC0FAC23C24DE246E3DEE72CA8BC8BECCDADE2B36771EFCC350558268F5352AE53F2F71DB62249AD9AC4FABDD6DFB099C6CFF8C05BDEA894390F9860F011CCA046DFEB2F6EF81094E7980BE526742706D1F3DB920DB107409291BB4C11F9A7DCBFAF26D808E6F9FE636B26B939DE419129E86B1E632C60EC23B65C815723C5D861AF068FD0AC8B37F4C06ECBD5CB2EF069CA8DAAC5CBD67C6182A65FED656D0DFBBB8A430B1DBAC7BD6303BEC8DE078FE69F443A7BC8131A284D25DC2844F096240BFC61B62E91A87802987659B884C094C68741D29AA5CA19B9457E1F9DF61C7DBBB13A61A79E4670B086027F20DA2AF4F5B020725F8828726379F429178926A3151F387
14620060829063416 2 6 100 4095 2 DA110847314B537539F2A20681212A0B2ED264BF1F2595B817CC516D5AA4211585948B248F77277B11AB206738C71B5FB2FCC4041927B40B985282795A89EF66BDB111E1D07D790AC487DA5841B66FC407ED5DD8612703136422C442139C12040CE776FEB6C8B59B95408F31FB50073AD54B03F97113E61BE577E76D13AA971BA82CEE621C31C4770A7E076245A16689A9FE3E9190FB617FB330AA70AAC623B447D1858C24993D486C2B9A3C63FFCB3F230E7185F163C1EED434C24EE11EAC5B2369FEAF790523BD8BF7E8F9C87467ED6C89E5596974DCA6960E537259EA3AA587BF5198B26CE37638BC57012851903BB4CC0E2A28EC741EECB6220556EC5C118AE0142E5374AE2A3D1CEF165C09C0988A37877BCA6BBCAE28D52DA6701BF077307195C3618D4CAC58DDF64B6A8C2BF8E2FDCC0840973A8ED1F8413689BE05EA54AB6CD30464F94DD926D8CEC6B56704F534C6D8329A27ECAD9836721BC0C283E63CDA54FCEA851C0203E747BB02B75C92036928EFC201FFCBB747A2E093CCED157C3C3F74258D5607B6B8AA330DECCF42A73A6F81D300BAFCA921BAFF635DFC90824938F7454B258C1967FF90C1D828E028F9FA86AA7B287A87EC750EDCECEEEC223EAEA78511CB3C0130043950478737FDF6D56EA2B705D5E4C57701E955A9C862DBCAF36D0624D2F2C20616AA3E0478A4A722BBA577BC02578EE57DE9222B 14620111017044448 2 6 100 4095 5 F5D3849D2092FD427B4EBD838EA4830397A55F80B644626320DBBE51E8F63ED88148D787C94E7E67E4F393F26C565E1992B0CFF8A47A953439462A4D0FFA5763EF60FF908F8EE6C4F6EF9F32B9BA50F01AD56FE7EBE90876A5CF61813A4AD4BA7EC0704303C9BF887D36ABBD6C2AA9545FC2263232927E731060F5C701C96DC34016636DF438CE30973715F121D767CFB98B5D09AE7B86FA36A051AD3C2941A295A68E2F583A56BC69913EC9D25ABEF4FDF1E31EDE827A02620DB058B9F041DA051C8C0F13B132C17CEB893FA7C4CD8D8FEEBD82C5F9120CB221B8E88C5FE4DC17CA020A535484C92C7D4BEE69C7703E1FA9A652D444C80065342C6EC0FAC23C24DE246E3DEE72CA8BC8BECCDADE2B36771EFCC350558268F5352AE53F2F71DB62249AD9AC4FABDD6DFB099C6CFF8C05BDEA894390F9860F011CCA046DFEB2F6EF81094E7980BE526742706D1F3DB920DB107409291BB4C11F9A7DCBFAF26D808E6F9FE636B26B939DE419129E86B1E632C60EC23B65C815723C5D861AF068FD0AC8B37F4C06ECBD5CB2EF069CA8DAAC5CBD67C6182A65FED656D0DFBBB8A430B1DBAC7BD6303BEC8DE078FE69F443A7BC8131A284D25DC2844F096240BFC61B62E91A87802987659B884C094C68741D29AA5CA19B9457E1F9DF61C7DBBB13A61A79E4670B086027F20DA2AF4F5B020725F8828726379F429178926A317A826F
14720060829082327 2 6 100 4095 5 DA110847314B537539F2A20681212A0B2ED264BF1F2595B817CC516D5AA4211585948B248F77277B11AB206738C71B5FB2FCC4041927B40B985282795A89EF66BDB111E1D07D790AC487DA5841B66FC407ED5DD8612703136422C442139C12040CE776FEB6C8B59B95408F31FB50073AD54B03F97113E61BE577E76D13AA971BA82CEE621C31C4770A7E076245A16689A9FE3E9190FB617FB330AA70AAC623B447D1858C24993D486C2B9A3C63FFCB3F230E7185F163C1EED434C24EE11EAC5B2369FEAF790523BD8BF7E8F9C87467ED6C89E5596974DCA6960E537259EA3AA587BF5198B26CE37638BC57012851903BB4CC0E2A28EC741EECB6220556EC5C118AE0142E5374AE2A3D1CEF165C09C0988A37877BCA6BBCAE28D52DA6701BF077307195C3618D4CAC58DDF64B6A8C2BF8E2FDCC0840973A8ED1F8413689BE05EA54AB6CD30464F94DD926D8CEC6B56704F534C6D8329A27ECAD9836721BC0C283E63CDA54FCEA851C0203E747BB02B75C92036928EFC201FFCBB747A2E093CCED157C3C3F74258D5607B6B8AA330DECCF42A73A6F81D300BAFCA921BAFF635DFC90824938F7454B258C1967FF90C1D828E028F9FA86AA7B287A87EC750EDCECEEEC223EAEA78511CB3C0130043950478737FDF6D56EA2B705D5E4C57701E955A9C862DBCAF36D0624D2F2C20616AA3E0478A4A722BBA577BC02578EE57E5385E7 14720111017044959 2 6 100 4095 5 F5D3849D2092FD427B4EBD838EA4830397A55F80B644626320DBBE51E8F63ED88148D787C94E7E67E4F393F26C565E1992B0CFF8A47A953439462A4D0FFA5763EF60FF908F8EE6C4F6EF9F32B9BA50F01AD56FE7EBE90876A5CF61813A4AD4BA7EC0704303C9BF887D36ABBD6C2AA9545FC2263232927E731060F5C701C96DC34016636DF438CE30973715F121D767CFB98B5D09AE7B86FA36A051AD3C2941A295A68E2F583A56BC69913EC9D25ABEF4FDF1E31EDE827A02620DB058B9F041DA051C8C0F13B132C17CEB893FA7C4CD8D8FEEBD82C5F9120CB221B8E88C5FE4DC17CA020A535484C92C7D4BEE69C7703E1FA9A652D444C80065342C6EC0FAC23C24DE246E3DEE72CA8BC8BECCDADE2B36771EFCC350558268F5352AE53F2F71DB62249AD9AC4FABDD6DFB099C6CFF8C05BDEA894390F9860F011CCA046DFEB2F6EF81094E7980BE526742706D1F3DB920DB107409291BB4C11F9A7DCBFAF26D808E6F9FE636B26B939DE419129E86B1E632C60EC23B65C815723C5D861AF068FD0AC8B37F4C06ECBD5CB2EF069CA8DAAC5CBD67C6182A65FED656D0DFBBB8A430B1DBAC7BD6303BEC8DE078FE69F443A7BC8131A284D25DC2844F096240BFC61B62E91A87802987659B884C094C68741D29AA5CA19B9457E1F9DF61C7DBBB13A61A79E4670B086027F20DA2AF4F5B020725F8828726379F429178926A31A26F87
14820060829092010 2 6 100 4095 2 DA110847314B537539F2A20681212A0B2ED264BF1F2595B817CC516D5AA4211585948B248F77277B11AB206738C71B5FB2FCC4041927B40B985282795A89EF66BDB111E1D07D790AC487DA5841B66FC407ED5DD8612703136422C442139C12040CE776FEB6C8B59B95408F31FB50073AD54B03F97113E61BE577E76D13AA971BA82CEE621C31C4770A7E076245A16689A9FE3E9190FB617FB330AA70AAC623B447D1858C24993D486C2B9A3C63FFCB3F230E7185F163C1EED434C24EE11EAC5B2369FEAF790523BD8BF7E8F9C87467ED6C89E5596974DCA6960E537259EA3AA587BF5198B26CE37638BC57012851903BB4CC0E2A28EC741EECB6220556EC5C118AE0142E5374AE2A3D1CEF165C09C0988A37877BCA6BBCAE28D52DA6701BF077307195C3618D4CAC58DDF64B6A8C2BF8E2FDCC0840973A8ED1F8413689BE05EA54AB6CD30464F94DD926D8CEC6B56704F534C6D8329A27ECAD9836721BC0C283E63CDA54FCEA851C0203E747BB02B75C92036928EFC201FFCBB747A2E093CCED157C3C3F74258D5607B6B8AA330DECCF42A73A6F81D300BAFCA921BAFF635DFC90824938F7454B258C1967FF90C1D828E028F9FA86AA7B287A87EC750EDCECEEEC223EAEA78511CB3C0130043950478737FDF6D56EA2B705D5E4C57701E955A9C862DBCAF36D0624D2F2C20616AA3E0478A4A722BBA577BC02578EE57E8501A3 14820111017051520 2 6 100 4095 2 F5D3849D2092FD427B4EBD838EA4830397A55F80B644626320DBBE51E8F63ED88148D787C94E7E67E4F393F26C565E1992B0CFF8A47A953439462A4D0FFA5763EF60FF908F8EE6C4F6EF9F32B9BA50F01AD56FE7EBE90876A5CF61813A4AD4BA7EC0704303C9BF887D36ABBD6C2AA9545FC2263232927E731060F5C701C96DC34016636DF438CE30973715F121D767CFB98B5D09AE7B86FA36A051AD3C2941A295A68E2F583A56BC69913EC9D25ABEF4FDF1E31EDE827A02620DB058B9F041DA051C8C0F13B132C17CEB893FA7C4CD8D8FEEBD82C5F9120CB221B8E88C5FE4DC17CA020A535484C92C7D4BEE69C7703E1FA9A652D444C80065342C6EC0FAC23C24DE246E3DEE72CA8BC8BECCDADE2B36771EFCC350558268F5352AE53F2F71DB62249AD9AC4FABDD6DFB099C6CFF8C05BDEA894390F9860F011CCA046DFEB2F6EF81094E7980BE526742706D1F3DB920DB107409291BB4C11F9A7DCBFAF26D808E6F9FE636B26B939DE419129E86B1E632C60EC23B65C815723C5D861AF068FD0AC8B37F4C06ECBD5CB2EF069CA8DAAC5CBD67C6182A65FED656D0DFBBB8A430B1DBAC7BD6303BEC8DE078FE69F443A7BC8131A284D25DC2844F096240BFC61B62E91A87802987659B884C094C68741D29AA5CA19B9457E1F9DF61C7DBBB13A61A79E4670B086027F20DA2AF4F5B020725F8828726379F429178926A32855A13
14920060830004204 2 6 100 4095 5 DA110847314B537539F2A20681212A0B2ED264BF1F2595B817CC516D5AA4211585948B248F77277B11AB206738C71B5FB2FCC4041927B40B985282795A89EF66BDB111E1D07D790AC487DA5841B66FC407ED5DD8612703136422C442139C12040CE776FEB6C8B59B95408F31FB50073AD54B03F97113E61BE577E76D13AA971BA82CEE621C31C4770A7E076245A16689A9FE3E9190FB617FB330AA70AAC623B447D1858C24993D486C2B9A3C63FFCB3F230E7185F163C1EED434C24EE11EAC5B2369FEAF790523BD8BF7E8F9C87467ED6C89E5596974DCA6960E537259EA3AA587BF5198B26CE37638BC57012851903BB4CC0E2A28EC741EECB6220556EC5C118AE0142E5374AE2A3D1CEF165C09C0988A37877BCA6BBCAE28D52DA6701BF077307195C3618D4CAC58DDF64B6A8C2BF8E2FDCC0840973A8ED1F8413689BE05EA54AB6CD30464F94DD926D8CEC6B56704F534C6D8329A27ECAD9836721BC0C283E63CDA54FCEA851C0203E747BB02B75C92036928EFC201FFCBB747A2E093CCED157C3C3F74258D5607B6B8AA330DECCF42A73A6F81D300BAFCA921BAFF635DFC90824938F7454B258C1967FF90C1D828E028F9FA86AA7B287A87EC750EDCECEEEC223EAEA78511CB3C0130043950478737FDF6D56EA2B705D5E4C57701E955A9C862DBCAF36D0624D2F2C20616AA3E0478A4A722BBA577BC02578EE5825F180F 14920111017054808 2 6 100 4095 5 F5D3849D2092FD427B4EBD838EA4830397A55F80B644626320DBBE51E8F63ED88148D787C94E7E67E4F393F26C565E1992B0CFF8A47A953439462A4D0FFA5763EF60FF908F8EE6C4F6EF9F32B9BA50F01AD56FE7EBE90876A5CF61813A4AD4BA7EC0704303C9BF887D36ABBD6C2AA9545FC2263232927E731060F5C701C96DC34016636DF438CE30973715F121D767CFB98B5D09AE7B86FA36A051AD3C2941A295A68E2F583A56BC69913EC9D25ABEF4FDF1E31EDE827A02620DB058B9F041DA051C8C0F13B132C17CEB893FA7C4CD8D8FEEBD82C5F9120CB221B8E88C5FE4DC17CA020A535484C92C7D4BEE69C7703E1FA9A652D444C80065342C6EC0FAC23C24DE246E3DEE72CA8BC8BECCDADE2B36771EFCC350558268F5352AE53F2F71DB62249AD9AC4FABDD6DFB099C6CFF8C05BDEA894390F9860F011CCA046DFEB2F6EF81094E7980BE526742706D1F3DB920DB107409291BB4C11F9A7DCBFAF26D808E6F9FE636B26B939DE419129E86B1E632C60EC23B65C815723C5D861AF068FD0AC8B37F4C06ECBD5CB2EF069CA8DAAC5CBD67C6182A65FED656D0DFBBB8A430B1DBAC7BD6303BEC8DE078FE69F443A7BC8131A284D25DC2844F096240BFC61B62E91A87802987659B884C094C68741D29AA5CA19B9457E1F9DF61C7DBBB13A61A79E4670B086027F20DA2AF4F5B020725F8828726379F429178926A33B0E8DF
15020060830013522 2 6 100 4095 2 DA110847314B537539F2A20681212A0B2ED264BF1F2595B817CC516D5AA4211585948B248F77277B11AB206738C71B5FB2FCC4041927B40B985282795A89EF66BDB111E1D07D790AC487DA5841B66FC407ED5DD8612703136422C442139C12040CE776FEB6C8B59B95408F31FB50073AD54B03F97113E61BE577E76D13AA971BA82CEE621C31C4770A7E076245A16689A9FE3E9190FB617FB330AA70AAC623B447D1858C24993D486C2B9A3C63FFCB3F230E7185F163C1EED434C24EE11EAC5B2369FEAF790523BD8BF7E8F9C87467ED6C89E5596974DCA6960E537259EA3AA587BF5198B26CE37638BC57012851903BB4CC0E2A28EC741EECB6220556EC5C118AE0142E5374AE2A3D1CEF165C09C0988A37877BCA6BBCAE28D52DA6701BF077307195C3618D4CAC58DDF64B6A8C2BF8E2FDCC0840973A8ED1F8413689BE05EA54AB6CD30464F94DD926D8CEC6B56704F534C6D8329A27ECAD9836721BC0C283E63CDA54FCEA851C0203E747BB02B75C92036928EFC201FFCBB747A2E093CCED157C3C3F74258D5607B6B8AA330DECCF42A73A6F81D300BAFCA921BAFF635DFC90824938F7454B258C1967FF90C1D828E028F9FA86AA7B287A87EC750EDCECEEEC223EAEA78511CB3C0130043950478737FDF6D56EA2B705D5E4C57701E955A9C862DBCAF36D0624D2F2C20616AA3E0478A4A722BBA577BC02578EE5828DFA2B 15020111017060238 2 6 100 4095 2 F5D3849D2092FD427B4EBD838EA4830397A55F80B644626320DBBE51E8F63ED88148D787C94E7E67E4F393F26C565E1992B0CFF8A47A953439462A4D0FFA5763EF60FF908F8EE6C4F6EF9F32B9BA50F01AD56FE7EBE90876A5CF61813A4AD4BA7EC0704303C9BF887D36ABBD6C2AA9545FC2263232927E731060F5C701C96DC34016636DF438CE30973715F121D767CFB98B5D09AE7B86FA36A051AD3C2941A295A68E2F583A56BC69913EC9D25ABEF4FDF1E31EDE827A02620DB058B9F041DA051C8C0F13B132C17CEB893FA7C4CD8D8FEEBD82C5F9120CB221B8E88C5FE4DC17CA020A535484C92C7D4BEE69C7703E1FA9A652D444C80065342C6EC0FAC23C24DE246E3DEE72CA8BC8BECCDADE2B36771EFCC350558268F5352AE53F2F71DB62249AD9AC4FABDD6DFB099C6CFF8C05BDEA894390F9860F011CCA046DFEB2F6EF81094E7980BE526742706D1F3DB920DB107409291BB4C11F9A7DCBFAF26D808E6F9FE636B26B939DE419129E86B1E632C60EC23B65C815723C5D861AF068FD0AC8B37F4C06ECBD5CB2EF069CA8DAAC5CBD67C6182A65FED656D0DFBBB8A430B1DBAC7BD6303BEC8DE078FE69F443A7BC8131A284D25DC2844F096240BFC61B62E91A87802987659B884C094C68741D29AA5CA19B9457E1F9DF61C7DBBB13A61A79E4670B086027F20DA2AF4F5B020725F8828726379F429178926A342F248B
15120060830124707 2 6 100 4095 2 DA110847314B537539F2A20681212A0B2ED264BF1F2595B817CC516D5AA4211585948B248F77277B11AB206738C71B5FB2FCC4041927B40B985282795A89EF66BDB111E1D07D790AC487DA5841B66FC407ED5DD8612703136422C442139C12040CE776FEB6C8B59B95408F31FB50073AD54B03F97113E61BE577E76D13AA971BA82CEE621C31C4770A7E076245A16689A9FE3E9190FB617FB330AA70AAC623B447D1858C24993D486C2B9A3C63FFCB3F230E7185F163C1EED434C24EE11EAC5B2369FEAF790523BD8BF7E8F9C87467ED6C89E5596974DCA6960E537259EA3AA587BF5198B26CE37638BC57012851903BB4CC0E2A28EC741EECB6220556EC5C118AE0142E5374AE2A3D1CEF165C09C0988A37877BCA6BBCAE28D52DA6701BF077307195C3618D4CAC58DDF64B6A8C2BF8E2FDCC0840973A8ED1F8413689BE05EA54AB6CD30464F94DD926D8CEC6B56704F534C6D8329A27ECAD9836721BC0C283E63CDA54FCEA851C0203E747BB02B75C92036928EFC201FFCBB747A2E093CCED157C3C3F74258D5607B6B8AA330DECCF42A73A6F81D300BAFCA921BAFF635DFC90824938F7454B258C1967FF90C1D828E028F9FA86AA7B287A87EC750EDCECEEEC223EAEA78511CB3C0130043950478737FDF6D56EA2B705D5E4C57701E955A9C862DBCAF36D0624D2F2C20616AA3E0478A4A722BBA577BC02578EE58555C9EB 15120111017065731 2 6 100 4095 2 F5D3849D2092FD427B4EBD838EA4830397A55F80B644626320DBBE51E8F63ED88148D787C94E7E67E4F393F26C565E1992B0CFF8A47A953439462A4D0FFA5763EF60FF908F8EE6C4F6EF9F32B9BA50F01AD56FE7EBE90876A5CF61813A4AD4BA7EC0704303C9BF887D36ABBD6C2AA9545FC2263232927E731060F5C701C96DC34016636DF438CE30973715F121D767CFB98B5D09AE7B86FA36A051AD3C2941A295A68E2F583A56BC69913EC9D25ABEF4FDF1E31EDE827A02620DB058B9F041DA051C8C0F13B132C17CEB893FA7C4CD8D8FEEBD82C5F9120CB221B8E88C5FE4DC17CA020A535484C92C7D4BEE69C7703E1FA9A652D444C80065342C6EC0FAC23C24DE246E3DEE72CA8BC8BECCDADE2B36771EFCC350558268F5352AE53F2F71DB62249AD9AC4FABDD6DFB099C6CFF8C05BDEA894390F9860F011CCA046DFEB2F6EF81094E7980BE526742706D1F3DB920DB107409291BB4C11F9A7DCBFAF26D808E6F9FE636B26B939DE419129E86B1E632C60EC23B65C815723C5D861AF068FD0AC8B37F4C06ECBD5CB2EF069CA8DAAC5CBD67C6182A65FED656D0DFBBB8A430B1DBAC7BD6303BEC8DE078FE69F443A7BC8131A284D25DC2844F096240BFC61B62E91A87802987659B884C094C68741D29AA5CA19B9457E1F9DF61C7DBBB13A61A79E4670B086027F20DA2AF4F5B020725F8828726379F429178926A3625C04B
15220060830180312 2 6 100 4095 5 DA110847314B537539F2A20681212A0B2ED264BF1F2595B817CC516D5AA4211585948B248F77277B11AB206738C71B5FB2FCC4041927B40B985282795A89EF66BDB111E1D07D790AC487DA5841B66FC407ED5DD8612703136422C442139C12040CE776FEB6C8B59B95408F31FB50073AD54B03F97113E61BE577E76D13AA971BA82CEE621C31C4770A7E076245A16689A9FE3E9190FB617FB330AA70AAC623B447D1858C24993D486C2B9A3C63FFCB3F230E7185F163C1EED434C24EE11EAC5B2369FEAF790523BD8BF7E8F9C87467ED6C89E5596974DCA6960E537259EA3AA587BF5198B26CE37638BC57012851903BB4CC0E2A28EC741EECB6220556EC5C118AE0142E5374AE2A3D1CEF165C09C0988A37877BCA6BBCAE28D52DA6701BF077307195C3618D4CAC58DDF64B6A8C2BF8E2FDCC0840973A8ED1F8413689BE05EA54AB6CD30464F94DD926D8CEC6B56704F534C6D8329A27ECAD9836721BC0C283E63CDA54FCEA851C0203E747BB02B75C92036928EFC201FFCBB747A2E093CCED157C3C3F74258D5607B6B8AA330DECCF42A73A6F81D300BAFCA921BAFF635DFC90824938F7454B258C1967FF90C1D828E028F9FA86AA7B287A87EC750EDCECEEEC223EAEA78511CB3C0130043950478737FDF6D56EA2B705D5E4C57701E955A9C862DBCAF36D0624D2F2C20616AA3E0478A4A722BBA577BC02578EE586989437 15220111017072929 2 6 100 4095 5 F5D3849D2092FD427B4EBD838EA4830397A55F80B644626320DBBE51E8F63ED88148D787C94E7E67E4F393F26C565E1992B0CFF8A47A953439462A4D0FFA5763EF60FF908F8EE6C4F6EF9F32B9BA50F01AD56FE7EBE90876A5CF61813A4AD4BA7EC0704303C9BF887D36ABBD6C2AA9545FC2263232927E731060F5C701C96DC34016636DF438CE30973715F121D767CFB98B5D09AE7B86FA36A051AD3C2941A295A68E2F583A56BC69913EC9D25ABEF4FDF1E31EDE827A02620DB058B9F041DA051C8C0F13B132C17CEB893FA7C4CD8D8FEEBD82C5F9120CB221B8E88C5FE4DC17CA020A535484C92C7D4BEE69C7703E1FA9A652D444C80065342C6EC0FAC23C24DE246E3DEE72CA8BC8BECCDADE2B36771EFCC350558268F5352AE53F2F71DB62249AD9AC4FABDD6DFB099C6CFF8C05BDEA894390F9860F011CCA046DFEB2F6EF81094E7980BE526742706D1F3DB920DB107409291BB4C11F9A7DCBFAF26D808E6F9FE636B26B939DE419129E86B1E632C60EC23B65C815723C5D861AF068FD0AC8B37F4C06ECBD5CB2EF069CA8DAAC5CBD67C6182A65FED656D0DFBBB8A430B1DBAC7BD6303BEC8DE078FE69F443A7BC8131A284D25DC2844F096240BFC61B62E91A87802987659B884C094C68741D29AA5CA19B9457E1F9DF61C7DBBB13A61A79E4670B086027F20DA2AF4F5B020725F8828726379F429178926A3741BA1F
15320060831041205 2 6 100 4095 5 DA110847314B537539F2A20681212A0B2ED264BF1F2595B817CC516D5AA4211585948B248F77277B11AB206738C71B5FB2FCC4041927B40B985282795A89EF66BDB111E1D07D790AC487DA5841B66FC407ED5DD8612703136422C442139C12040CE776FEB6C8B59B95408F31FB50073AD54B03F97113E61BE577E76D13AA971BA82CEE621C31C4770A7E076245A16689A9FE3E9190FB617FB330AA70AAC623B447D1858C24993D486C2B9A3C63FFCB3F230E7185F163C1EED434C24EE11EAC5B2369FEAF790523BD8BF7E8F9C87467ED6C89E5596974DCA6960E537259EA3AA587BF5198B26CE37638BC57012851903BB4CC0E2A28EC741EECB6220556EC5C118AE0142E5374AE2A3D1CEF165C09C0988A37877BCA6BBCAE28D52DA6701BF077307195C3618D4CAC58DDF64B6A8C2BF8E2FDCC0840973A8ED1F8413689BE05EA54AB6CD30464F94DD926D8CEC6B56704F534C6D8329A27ECAD9836721BC0C283E63CDA54FCEA851C0203E747BB02B75C92036928EFC201FFCBB747A2E093CCED157C3C3F74258D5607B6B8AA330DECCF42A73A6F81D300BAFCA921BAFF635DFC90824938F7454B258C1967FF90C1D828E028F9FA86AA7B287A87EC750EDCECEEEC223EAEA78511CB3C0130043950478737FDF6D56EA2B705D5E4C57701E955A9C862DBCAF36D0624D2F2C20616AA3E0478A4A722BBA577BC02578EE5891334BF 15320111017073730 2 6 100 4095 2 F5D3849D2092FD427B4EBD838EA4830397A55F80B644626320DBBE51E8F63ED88148D787C94E7E67E4F393F26C565E1992B0CFF8A47A953439462A4D0FFA5763EF60FF908F8EE6C4F6EF9F32B9BA50F01AD56FE7EBE90876A5CF61813A4AD4BA7EC0704303C9BF887D36ABBD6C2AA9545FC2263232927E731060F5C701C96DC34016636DF438CE30973715F121D767CFB98B5D09AE7B86FA36A051AD3C2941A295A68E2F583A56BC69913EC9D25ABEF4FDF1E31EDE827A02620DB058B9F041DA051C8C0F13B132C17CEB893FA7C4CD8D8FEEBD82C5F9120CB221B8E88C5FE4DC17CA020A535484C92C7D4BEE69C7703E1FA9A652D444C80065342C6EC0FAC23C24DE246E3DEE72CA8BC8BECCDADE2B36771EFCC350558268F5352AE53F2F71DB62249AD9AC4FABDD6DFB099C6CFF8C05BDEA894390F9860F011CCA046DFEB2F6EF81094E7980BE526742706D1F3DB920DB107409291BB4C11F9A7DCBFAF26D808E6F9FE636B26B939DE419129E86B1E632C60EC23B65C815723C5D861AF068FD0AC8B37F4C06ECBD5CB2EF069CA8DAAC5CBD67C6182A65FED656D0DFBBB8A430B1DBAC7BD6303BEC8DE078FE69F443A7BC8131A284D25DC2844F096240BFC61B62E91A87802987659B884C094C68741D29AA5CA19B9457E1F9DF61C7DBBB13A61A79E4670B086027F20DA2AF4F5B020725F8828726379F429178926A37848973
15420060831102341 2 6 100 4095 5 DA110847314B537539F2A20681212A0B2ED264BF1F2595B817CC516D5AA4211585948B248F77277B11AB206738C71B5FB2FCC4041927B40B985282795A89EF66BDB111E1D07D790AC487DA5841B66FC407ED5DD8612703136422C442139C12040CE776FEB6C8B59B95408F31FB50073AD54B03F97113E61BE577E76D13AA971BA82CEE621C31C4770A7E076245A16689A9FE3E9190FB617FB330AA70AAC623B447D1858C24993D486C2B9A3C63FFCB3F230E7185F163C1EED434C24EE11EAC5B2369FEAF790523BD8BF7E8F9C87467ED6C89E5596974DCA6960E537259EA3AA587BF5198B26CE37638BC57012851903BB4CC0E2A28EC741EECB6220556EC5C118AE0142E5374AE2A3D1CEF165C09C0988A37877BCA6BBCAE28D52DA6701BF077307195C3618D4CAC58DDF64B6A8C2BF8E2FDCC0840973A8ED1F8413689BE05EA54AB6CD30464F94DD926D8CEC6B56704F534C6D8329A27ECAD9836721BC0C283E63CDA54FCEA851C0203E747BB02B75C92036928EFC201FFCBB747A2E093CCED157C3C3F74258D5607B6B8AA330DECCF42A73A6F81D300BAFCA921BAFF635DFC90824938F7454B258C1967FF90C1D828E028F9FA86AA7B287A87EC750EDCECEEEC223EAEA78511CB3C0130043950478737FDF6D56EA2B705D5E4C57701E955A9C862DBCAF36D0624D2F2C20616AA3E0478A4A722BBA577BC02578EE58A8F8B27 15420111017073836 2 6 100 4095 5 F5D3849D2092FD427B4EBD838EA4830397A55F80B644626320DBBE51E8F63ED88148D787C94E7E67E4F393F26C565E1992B0CFF8A47A953439462A4D0FFA5763EF60FF908F8EE6C4F6EF9F32B9BA50F01AD56FE7EBE90876A5CF61813A4AD4BA7EC0704303C9BF887D36ABBD6C2AA9545FC2263232927E731060F5C701C96DC34016636DF438CE30973715F121D767CFB98B5D09AE7B86FA36A051AD3C2941A295A68E2F583A56BC69913EC9D25ABEF4FDF1E31EDE827A02620DB058B9F041DA051C8C0F13B132C17CEB893FA7C4CD8D8FEEBD82C5F9120CB221B8E88C5FE4DC17CA020A535484C92C7D4BEE69C7703E1FA9A652D444C80065342C6EC0FAC23C24DE246E3DEE72CA8BC8BECCDADE2B36771EFCC350558268F5352AE53F2F71DB62249AD9AC4FABDD6DFB099C6CFF8C05BDEA894390F9860F011CCA046DFEB2F6EF81094E7980BE526742706D1F3DB920DB107409291BB4C11F9A7DCBFAF26D808E6F9FE636B26B939DE419129E86B1E632C60EC23B65C815723C5D861AF068FD0AC8B37F4C06ECBD5CB2EF069CA8DAAC5CBD67C6182A65FED656D0DFBBB8A430B1DBAC7BD6303BEC8DE078FE69F443A7BC8131A284D25DC2844F096240BFC61B62E91A87802987659B884C094C68741D29AA5CA19B9457E1F9DF61C7DBBB13A61A79E4670B086027F20DA2AF4F5B020725F8828726379F429178926A37862917
15520060831234001 2 6 100 4095 2 DA110847314B537539F2A20681212A0B2ED264BF1F2595B817CC516D5AA4211585948B248F77277B11AB206738C71B5FB2FCC4041927B40B985282795A89EF66BDB111E1D07D790AC487DA5841B66FC407ED5DD8612703136422C442139C12040CE776FEB6C8B59B95408F31FB50073AD54B03F97113E61BE577E76D13AA971BA82CEE621C31C4770A7E076245A16689A9FE3E9190FB617FB330AA70AAC623B447D1858C24993D486C2B9A3C63FFCB3F230E7185F163C1EED434C24EE11EAC5B2369FEAF790523BD8BF7E8F9C87467ED6C89E5596974DCA6960E537259EA3AA587BF5198B26CE37638BC57012851903BB4CC0E2A28EC741EECB6220556EC5C118AE0142E5374AE2A3D1CEF165C09C0988A37877BCA6BBCAE28D52DA6701BF077307195C3618D4CAC58DDF64B6A8C2BF8E2FDCC0840973A8ED1F8413689BE05EA54AB6CD30464F94DD926D8CEC6B56704F534C6D8329A27ECAD9836721BC0C283E63CDA54FCEA851C0203E747BB02B75C92036928EFC201FFCBB747A2E093CCED157C3C3F74258D5607B6B8AA330DECCF42A73A6F81D300BAFCA921BAFF635DFC90824938F7454B258C1967FF90C1D828E028F9FA86AA7B287A87EC750EDCECEEEC223EAEA78511CB3C0130043950478737FDF6D56EA2B705D5E4C57701E955A9C862DBCAF36D0624D2F2C20616AA3E0478A4A722BBA577BC02578EE58DD7278B 15520111017074116 2 6 100 4095 2 F5D3849D2092FD427B4EBD838EA4830397A55F80B644626320DBBE51E8F63ED88148D787C94E7E67E4F393F26C565E1992B0CFF8A47A953439462A4D0FFA5763EF60FF908F8EE6C4F6EF9F32B9BA50F01AD56FE7EBE90876A5CF61813A4AD4BA7EC0704303C9BF887D36ABBD6C2AA9545FC2263232927E731060F5C701C96DC34016636DF438CE30973715F121D767CFB98B5D09AE7B86FA36A051AD3C2941A295A68E2F583A56BC69913EC9D25ABEF4FDF1E31EDE827A02620DB058B9F041DA051C8C0F13B132C17CEB893FA7C4CD8D8FEEBD82C5F9120CB221B8E88C5FE4DC17CA020A535484C92C7D4BEE69C7703E1FA9A652D444C80065342C6EC0FAC23C24DE246E3DEE72CA8BC8BECCDADE2B36771EFCC350558268F5352AE53F2F71DB62249AD9AC4FABDD6DFB099C6CFF8C05BDEA894390F9860F011CCA046DFEB2F6EF81094E7980BE526742706D1F3DB920DB107409291BB4C11F9A7DCBFAF26D808E6F9FE636B26B939DE419129E86B1E632C60EC23B65C815723C5D861AF068FD0AC8B37F4C06ECBD5CB2EF069CA8DAAC5CBD67C6182A65FED656D0DFBBB8A430B1DBAC7BD6303BEC8DE078FE69F443A7BC8131A284D25DC2844F096240BFC61B62E91A87802987659B884C094C68741D29AA5CA19B9457E1F9DF61C7DBBB13A61A79E4670B086027F20DA2AF4F5B020725F8828726379F429178926A3797039B
15620060901032352 2 6 100 4095 2 DA110847314B537539F2A20681212A0B2ED264BF1F2595B817CC516D5AA4211585948B248F77277B11AB206738C71B5FB2FCC4041927B40B985282795A89EF66BDB111E1D07D790AC487DA5841B66FC407ED5DD8612703136422C442139C12040CE776FEB6C8B59B95408F31FB50073AD54B03F97113E61BE577E76D13AA971BA82CEE621C31C4770A7E076245A16689A9FE3E9190FB617FB330AA70AAC623B447D1858C24993D486C2B9A3C63FFCB3F230E7185F163C1EED434C24EE11EAC5B2369FEAF790523BD8BF7E8F9C87467ED6C89E5596974DCA6960E537259EA3AA587BF5198B26CE37638BC57012851903BB4CC0E2A28EC741EECB6220556EC5C118AE0142E5374AE2A3D1CEF165C09C0988A37877BCA6BBCAE28D52DA6701BF077307195C3618D4CAC58DDF64B6A8C2BF8E2FDCC0840973A8ED1F8413689BE05EA54AB6CD30464F94DD926D8CEC6B56704F534C6D8329A27ECAD9836721BC0C283E63CDA54FCEA851C0203E747BB02B75C92036928EFC201FFCBB747A2E093CCED157C3C3F74258D5607B6B8AA330DECCF42A73A6F81D300BAFCA921BAFF635DFC90824938F7454B258C1967FF90C1D828E028F9FA86AA7B287A87EC750EDCECEEEC223EAEA78511CB3C0130043950478737FDF6D56EA2B705D5E4C57701E955A9C862DBCAF36D0624D2F2C20616AA3E0478A4A722BBA577BC02578EE58EBE93EB 15620111007105655 2 6 100 6143 2 EEECABB15BA767CF1068832B8CA6FB7D86A7B3CD2A23BDBB1D0718A821586412C0A65556B7BE9512DE675D290A8008634E7AFFE1962ED92137ADDF2A5A26D1C980029F732AC12AF544CE2B8E95760E5BE78DDEC7AF5D9120D466A20E48ECAE1A0F852221E35FB3DE98108BF906BB410388964A889D85EC2B0C68A5B8FAB9ECD364594E9B8DF61159A07BFA2589D2AC0879BCAB1EACE52C5CBD0E9F1F399487877AB032C8B4C20AE92D6410D39946828B19B10EEA02F462534E72140AD79E8DBAD531967EACF160CF74ED011988AE5FC17519989CCDF1AD354A3CC2B55B80B84D2FCF6AC81B1DB5435813638ECFC58FDCA058F46B67644C968810557B9873AEAFBBB8FC43D0C91A78ECF8828BC8FA3240D8F9CE5F5759FA36D4A5E80E4EAD83497A5772C0A6225FACB02F932C497426503F4306DC2312A167837FD50EB9D63CC3FDDF10D195CE61842596A85B54BC1A3B0D0459D1A32D2CE1B30161A04B0E9B98F79045E77303A95EC6BC2AAAFEC305826C1DEBEB1015C16F30E07A19C7CAB3D0ADCF2DD4158ADCFE75E1A26033C83C1AEDBEC09D509C301A558179EE7D32ACFFB9826075CBC649F10FB32134375223DB0F5232F1FD7DFB0151E4FF24135A97F331F3B8BD6B0BDF8E1CC56E144B3FE8C9A77F2E5077F15C461F0F3900F91615F84EE3D42078AAEAF60DFF47D79139B6FBB920CF901D66C86D81A360F267BFBACAC6528D0558B1A4388B18C94479AC6F5EB70B148617A90056533149C38311FD4149AD54C5D47607A5D67D30DB70B9F4C4DB59FFC4D765B1866EBCEAD21F0F4C19633F76A33D341E62BD5861C94C24490AAB34FECA441CAF9F2E2979423E061B5FFE5A3E12335204354AE4CE57D882DB502E0EC7AF792F2BBED91CE6D980B810BE44E72BC326A853FD0BB9752278899FF24DFC97ACBA85FDFCDA0CBD8D1D51ABCD71F75BC85A4EDE9989AEAE0EE94D22AB01346FB5B5349CDD0163BD98CE835E44AF09E1EC550950BC0D146D391E353DC70FC995A1435B2B9A0BCF88F1D48822CFFB27AEFA112B8487AD96E84F0FC5F9B032659FBE156E50BCC9553F0B29C5D603
15720060901061345 2 6 100 4095 5 DA110847314B537539F2A20681212A0B2ED264BF1F2595B817CC516D5AA4211585948B248F77277B11AB206738C71B5FB2FCC4041927B40B985282795A89EF66BDB111E1D07D790AC487DA5841B66FC407ED5DD8612703136422C442139C12040CE776FEB6C8B59B95408F31FB50073AD54B03F97113E61BE577E76D13AA971BA82CEE621C31C4770A7E076245A16689A9FE3E9190FB617FB330AA70AAC623B447D1858C24993D486C2B9A3C63FFCB3F230E7185F163C1EED434C24EE11EAC5B2369FEAF790523BD8BF7E8F9C87467ED6C89E5596974DCA6960E537259EA3AA587BF5198B26CE37638BC57012851903BB4CC0E2A28EC741EECB6220556EC5C118AE0142E5374AE2A3D1CEF165C09C0988A37877BCA6BBCAE28D52DA6701BF077307195C3618D4CAC58DDF64B6A8C2BF8E2FDCC0840973A8ED1F8413689BE05EA54AB6CD30464F94DD926D8CEC6B56704F534C6D8329A27ECAD9836721BC0C283E63CDA54FCEA851C0203E747BB02B75C92036928EFC201FFCBB747A2E093CCED157C3C3F74258D5607B6B8AA330DECCF42A73A6F81D300BAFCA921BAFF635DFC90824938F7454B258C1967FF90C1D828E028F9FA86AA7B287A87EC750EDCECEEEC223EAEA78511CB3C0130043950478737FDF6D56EA2B705D5E4C57701E955A9C862DBCAF36D0624D2F2C20616AA3E0478A4A722BBA577BC02578EE58F693A3F 15720111007105938 2 6 100 6143 2 EEECABB15BA767CF1068832B8CA6FB7D86A7B3CD2A23BDBB1D0718A821586412C0A65556B7BE9512DE675D290A8008634E7AFFE1962ED92137ADDF2A5A26D1C980029F732AC12AF544CE2B8E95760E5BE78DDEC7AF5D9120D466A20E48ECAE1A0F852221E35FB3DE98108BF906BB410388964A889D85EC2B0C68A5B8FAB9ECD364594E9B8DF61159A07BFA2589D2AC0879BCAB1EACE52C5CBD0E9F1F399487877AB032C8B4C20AE92D6410D39946828B19B10EEA02F462534E72140AD79E8DBAD531967EACF160CF74ED011988AE5FC17519989CCDF1AD354A3CC2B55B80B84D2FCF6AC81B1DB5435813638ECFC58FDCA058F46B67644C968810557B9873AEAFBBB8FC43D0C91A78ECF8828BC8FA3240D8F9CE5F5759FA36D4A5E80E4EAD83497A5772C0A6225FACB02F932C497426503F4306DC2312A167837FD50EB9D63CC3FDDF10D195CE61842596A85B54BC1A3B0D0459D1A32D2CE1B30161A04B0E9B98F79045E77303A95EC6BC2AAAFEC305826C1DEBEB1015C16F30E07A19C7CAB3D0ADCF2DD4158ADCFE75E1A26033C83C1AEDBEC09D509C301A558179EE7D32ACFFB9826075CBC649F10FB32134375223DB0F5232F1FD7DFB0151E4FF24135A97F331F3B8BD6B0BDF8E1CC56E144B3FE8C9A77F2E5077F15C461F0F3900F91615F84EE3D42078AAEAF60DFF47D79139B6FBB920CF901D66C86D81A360F267BFBACAC6528D0558B1A4388B18C94479AC6F5EB70B148617A90056533149C38311FD4149AD54C5D47607A5D67D30DB70B9F4C4DB59FFC4D765B1866EBCEAD21F0F4C19633F76A33D341E62BD5861C94C24490AAB34FECA441CAF9F2E2979423E061B5FFE5A3E12335204354AE4CE57D882DB502E0EC7AF792F2BBED91CE6D980B810BE44E72BC326A853FD0BB9752278899FF24DFC97ACBA85FDFCDA0CBD8D1D51ABCD71F75BC85A4EDE9989AEAE0EE94D22AB01346FB5B5349CDD0163BD98CE835E44AF09E1EC550950BC0D146D391E353DC70FC995A1435B2B9A0BCF88F1D48822CFFB27AEFA112B8487AD96E84F0FC5F9B032659FBE156E50BCC9553F0B29D7233B
15820060901123055 2 6 100 4095 5 DA110847314B537539F2A20681212A0B2ED264BF1F2595B817CC516D5AA4211585948B248F77277B11AB206738C71B5FB2FCC4041927B40B985282795A89EF66BDB111E1D07D790AC487DA5841B66FC407ED5DD8612703136422C442139C12040CE776FEB6C8B59B95408F31FB50073AD54B03F97113E61BE577E76D13AA971BA82CEE621C31C4770A7E076245A16689A9FE3E9190FB617FB330AA70AAC623B447D1858C24993D486C2B9A3C63FFCB3F230E7185F163C1EED434C24EE11EAC5B2369FEAF790523BD8BF7E8F9C87467ED6C89E5596974DCA6960E537259EA3AA587BF5198B26CE37638BC57012851903BB4CC0E2A28EC741EECB6220556EC5C118AE0142E5374AE2A3D1CEF165C09C0988A37877BCA6BBCAE28D52DA6701BF077307195C3618D4CAC58DDF64B6A8C2BF8E2FDCC0840973A8ED1F8413689BE05EA54AB6CD30464F94DD926D8CEC6B56704F534C6D8329A27ECAD9836721BC0C283E63CDA54FCEA851C0203E747BB02B75C92036928EFC201FFCBB747A2E093CCED157C3C3F74258D5607B6B8AA330DECCF42A73A6F81D300BAFCA921BAFF635DFC90824938F7454B258C1967FF90C1D828E028F9FA86AA7B287A87EC750EDCECEEEC223EAEA78511CB3C0130043950478737FDF6D56EA2B705D5E4C57701E955A9C862DBCAF36D0624D2F2C20616AA3E0478A4A722BBA577BC02578EE590F80AE7 15820111007115211 2 6 100 6143 2 EEECABB15BA767CF1068832B8CA6FB7D86A7B3CD2A23BDBB1D0718A821586412C0A65556B7BE9512DE675D290A8008634E7AFFE1962ED92137ADDF2A5A26D1C980029F732AC12AF544CE2B8E95760E5BE78DDEC7AF5D9120D466A20E48ECAE1A0F852221E35FB3DE98108BF906BB410388964A889D85EC2B0C68A5B8FAB9ECD364594E9B8DF61159A07BFA2589D2AC0879BCAB1EACE52C5CBD0E9F1F399487877AB032C8B4C20AE92D6410D39946828B19B10EEA02F462534E72140AD79E8DBAD531967EACF160CF74ED011988AE5FC17519989CCDF1AD354A3CC2B55B80B84D2FCF6AC81B1DB5435813638ECFC58FDCA058F46B67644C968810557B9873AEAFBBB8FC43D0C91A78ECF8828BC8FA3240D8F9CE5F5759FA36D4A5E80E4EAD83497A5772C0A6225FACB02F932C497426503F4306DC2312A167837FD50EB9D63CC3FDDF10D195CE61842596A85B54BC1A3B0D0459D1A32D2CE1B30161A04B0E9B98F79045E77303A95EC6BC2AAAFEC305826C1DEBEB1015C16F30E07A19C7CAB3D0ADCF2DD4158ADCFE75E1A26033C83C1AEDBEC09D509C301A558179EE7D32ACFFB9826075CBC649F10FB32134375223DB0F5232F1FD7DFB0151E4FF24135A97F331F3B8BD6B0BDF8E1CC56E144B3FE8C9A77F2E5077F15C461F0F3900F91615F84EE3D42078AAEAF60DFF47D79139B6FBB920CF901D66C86D81A360F267BFBACAC6528D0558B1A4388B18C94479AC6F5EB70B148617A90056533149C38311FD4149AD54C5D47607A5D67D30DB70B9F4C4DB59FFC4D765B1866EBCEAD21F0F4C19633F76A33D341E62BD5861C94C24490AAB34FECA441CAF9F2E2979423E061B5FFE5A3E12335204354AE4CE57D882DB502E0EC7AF792F2BBED91CE6D980B810BE44E72BC326A853FD0BB9752278899FF24DFC97ACBA85FDFCDA0CBD8D1D51ABCD71F75BC85A4EDE9989AEAE0EE94D22AB01346FB5B5349CDD0163BD98CE835E44AF09E1EC550950BC0D146D391E353DC70FC995A1435B2B9A0BCF88F1D48822CFFB27AEFA112B8487AD96E84F0FC5F9B032659FBE156E50BCC9553F0B2BA2FE0B
15920060901191922 2 6 100 4095 2 DA110847314B537539F2A20681212A0B2ED264BF1F2595B817CC516D5AA4211585948B248F77277B11AB206738C71B5FB2FCC4041927B40B985282795A89EF66BDB111E1D07D790AC487DA5841B66FC407ED5DD8612703136422C442139C12040CE776FEB6C8B59B95408F31FB50073AD54B03F97113E61BE577E76D13AA971BA82CEE621C31C4770A7E076245A16689A9FE3E9190FB617FB330AA70AAC623B447D1858C24993D486C2B9A3C63FFCB3F230E7185F163C1EED434C24EE11EAC5B2369FEAF790523BD8BF7E8F9C87467ED6C89E5596974DCA6960E537259EA3AA587BF5198B26CE37638BC57012851903BB4CC0E2A28EC741EECB6220556EC5C118AE0142E5374AE2A3D1CEF165C09C0988A37877BCA6BBCAE28D52DA6701BF077307195C3618D4CAC58DDF64B6A8C2BF8E2FDCC0840973A8ED1F8413689BE05EA54AB6CD30464F94DD926D8CEC6B56704F534C6D8329A27ECAD9836721BC0C283E63CDA54FCEA851C0203E747BB02B75C92036928EFC201FFCBB747A2E093CCED157C3C3F74258D5607B6B8AA330DECCF42A73A6F81D300BAFCA921BAFF635DFC90824938F7454B258C1967FF90C1D828E028F9FA86AA7B287A87EC750EDCECEEEC223EAEA78511CB3C0130043950478737FDF6D56EA2B705D5E4C57701E955A9C862DBCAF36D0624D2F2C20616AA3E0478A4A722BBA577BC02578EE592994C63 15920111007125656 2 6 100 6143 2 EEECABB15BA767CF1068832B8CA6FB7D86A7B3CD2A23BDBB1D0718A821586412C0A65556B7BE9512DE675D290A8008634E7AFFE1962ED92137ADDF2A5A26D1C980029F732AC12AF544CE2B8E95760E5BE78DDEC7AF5D9120D466A20E48ECAE1A0F852221E35FB3DE98108BF906BB410388964A889D85EC2B0C68A5B8FAB9ECD364594E9B8DF61159A07BFA2589D2AC0879BCAB1EACE52C5CBD0E9F1F399487877AB032C8B4C20AE92D6410D39946828B19B10EEA02F462534E72140AD79E8DBAD531967EACF160CF74ED011988AE5FC17519989CCDF1AD354A3CC2B55B80B84D2FCF6AC81B1DB5435813638ECFC58FDCA058F46B67644C968810557B9873AEAFBBB8FC43D0C91A78ECF8828BC8FA3240D8F9CE5F5759FA36D4A5E80E4EAD83497A5772C0A6225FACB02F932C497426503F4306DC2312A167837FD50EB9D63CC3FDDF10D195CE61842596A85B54BC1A3B0D0459D1A32D2CE1B30161A04B0E9B98F79045E77303A95EC6BC2AAAFEC305826C1DEBEB1015C16F30E07A19C7CAB3D0ADCF2DD4158ADCFE75E1A26033C83C1AEDBEC09D509C301A558179EE7D32ACFFB9826075CBC649F10FB32134375223DB0F5232F1FD7DFB0151E4FF24135A97F331F3B8BD6B0BDF8E1CC56E144B3FE8C9A77F2E5077F15C461F0F3900F91615F84EE3D42078AAEAF60DFF47D79139B6FBB920CF901D66C86D81A360F267BFBACAC6528D0558B1A4388B18C94479AC6F5EB70B148617A90056533149C38311FD4149AD54C5D47607A5D67D30DB70B9F4C4DB59FFC4D765B1866EBCEAD21F0F4C19633F76A33D341E62BD5861C94C24490AAB34FECA441CAF9F2E2979423E061B5FFE5A3E12335204354AE4CE57D882DB502E0EC7AF792F2BBED91CE6D980B810BE44E72BC326A853FD0BB9752278899FF24DFC97ACBA85FDFCDA0CBD8D1D51ABCD71F75BC85A4EDE9989AEAE0EE94D22AB01346FB5B5349CDD0163BD98CE835E44AF09E1EC550950BC0D146D391E353DC70FC995A1435B2B9A0BCF88F1D48822CFFB27AEFA112B8487AD96E84F0FC5F9B032659FBE156E50BCC9553F0B2DDDBECB
16020060901203957 2 6 100 4095 5 DA110847314B537539F2A20681212A0B2ED264BF1F2595B817CC516D5AA4211585948B248F77277B11AB206738C71B5FB2FCC4041927B40B985282795A89EF66BDB111E1D07D790AC487DA5841B66FC407ED5DD8612703136422C442139C12040CE776FEB6C8B59B95408F31FB50073AD54B03F97113E61BE577E76D13AA971BA82CEE621C31C4770A7E076245A16689A9FE3E9190FB617FB330AA70AAC623B447D1858C24993D486C2B9A3C63FFCB3F230E7185F163C1EED434C24EE11EAC5B2369FEAF790523BD8BF7E8F9C87467ED6C89E5596974DCA6960E537259EA3AA587BF5198B26CE37638BC57012851903BB4CC0E2A28EC741EECB6220556EC5C118AE0142E5374AE2A3D1CEF165C09C0988A37877BCA6BBCAE28D52DA6701BF077307195C3618D4CAC58DDF64B6A8C2BF8E2FDCC0840973A8ED1F8413689BE05EA54AB6CD30464F94DD926D8CEC6B56704F534C6D8329A27ECAD9836721BC0C283E63CDA54FCEA851C0203E747BB02B75C92036928EFC201FFCBB747A2E093CCED157C3C3F74258D5607B6B8AA330DECCF42A73A6F81D300BAFCA921BAFF635DFC90824938F7454B258C1967FF90C1D828E028F9FA86AA7B287A87EC750EDCECEEEC223EAEA78511CB3C0130043950478737FDF6D56EA2B705D5E4C57701E955A9C862DBCAF36D0624D2F2C20616AA3E0478A4A722BBA577BC02578EE592E5D92F 16020111007141522 2 6 100 6143 5 EEECABB15BA767CF1068832B8CA6FB7D86A7B3CD2A23BDBB1D0718A821586412C0A65556B7BE9512DE675D290A8008634E7AFFE1962ED92137ADDF2A5A26D1C980029F732AC12AF544CE2B8E95760E5BE78DDEC7AF5D9120D466A20E48ECAE1A0F852221E35FB3DE98108BF906BB410388964A889D85EC2B0C68A5B8FAB9ECD364594E9B8DF61159A07BFA2589D2AC0879BCAB1EACE52C5CBD0E9F1F399487877AB032C8B4C20AE92D6410D39946828B19B10EEA02F462534E72140AD79E8DBAD531967EACF160CF74ED011988AE5FC17519989CCDF1AD354A3CC2B55B80B84D2FCF6AC81B1DB5435813638ECFC58FDCA058F46B67644C968810557B9873AEAFBBB8FC43D0C91A78ECF8828BC8FA3240D8F9CE5F5759FA36D4A5E80E4EAD83497A5772C0A6225FACB02F932C497426503F4306DC2312A167837FD50EB9D63CC3FDDF10D195CE61842596A85B54BC1A3B0D0459D1A32D2CE1B30161A04B0E9B98F79045E77303A95EC6BC2AAAFEC305826C1DEBEB1015C16F30E07A19C7CAB3D0ADCF2DD4158ADCFE75E1A26033C83C1AEDBEC09D509C301A558179EE7D32ACFFB9826075CBC649F10FB32134375223DB0F5232F1FD7DFB0151E4FF24135A97F331F3B8BD6B0BDF8E1CC56E144B3FE8C9A77F2E5077F15C461F0F3900F91615F84EE3D42078AAEAF60DFF47D79139B6FBB920CF901D66C86D81A360F267BFBACAC6528D0558B1A4388B18C94479AC6F5EB70B148617A90056533149C38311FD4149AD54C5D47607A5D67D30DB70B9F4C4DB59FFC4D765B1866EBCEAD21F0F4C19633F76A33D341E62BD5861C94C24490AAB34FECA441CAF9F2E2979423E061B5FFE5A3E12335204354AE4CE57D882DB502E0EC7AF792F2BBED91CE6D980B810BE44E72BC326A853FD0BB9752278899FF24DFC97ACBA85FDFCDA0CBD8D1D51ABCD71F75BC85A4EDE9989AEAE0EE94D22AB01346FB5B5349CDD0163BD98CE835E44AF09E1EC550950BC0D146D391E353DC70FC995A1435B2B9A0BCF88F1D48822CFFB27AEFA112B8487AD96E84F0FC5F9B032659FBE156E50BCC9553F0B308E49CF
16120060901210250 2 6 100 4095 2 DA110847314B537539F2A20681212A0B2ED264BF1F2595B817CC516D5AA4211585948B248F77277B11AB206738C71B5FB2FCC4041927B40B985282795A89EF66BDB111E1D07D790AC487DA5841B66FC407ED5DD8612703136422C442139C12040CE776FEB6C8B59B95408F31FB50073AD54B03F97113E61BE577E76D13AA971BA82CEE621C31C4770A7E076245A16689A9FE3E9190FB617FB330AA70AAC623B447D1858C24993D486C2B9A3C63FFCB3F230E7185F163C1EED434C24EE11EAC5B2369FEAF790523BD8BF7E8F9C87467ED6C89E5596974DCA6960E537259EA3AA587BF5198B26CE37638BC57012851903BB4CC0E2A28EC741EECB6220556EC5C118AE0142E5374AE2A3D1CEF165C09C0988A37877BCA6BBCAE28D52DA6701BF077307195C3618D4CAC58DDF64B6A8C2BF8E2FDCC0840973A8ED1F8413689BE05EA54AB6CD30464F94DD926D8CEC6B56704F534C6D8329A27ECAD9836721BC0C283E63CDA54FCEA851C0203E747BB02B75C92036928EFC201FFCBB747A2E093CCED157C3C3F74258D5607B6B8AA330DECCF42A73A6F81D300BAFCA921BAFF635DFC90824938F7454B258C1967FF90C1D828E028F9FA86AA7B287A87EC750EDCECEEEC223EAEA78511CB3C0130043950478737FDF6D56EA2B705D5E4C57701E955A9C862DBCAF36D0624D2F2C20616AA3E0478A4A722BBA577BC02578EE592F4A5F3 16120111007160248 2 6 100 6143 5 EEECABB15BA767CF1068832B8CA6FB7D86A7B3CD2A23BDBB1D0718A821586412C0A65556B7BE9512DE675D290A8008634E7AFFE1962ED92137ADDF2A5A26D1C980029F732AC12AF544CE2B8E95760E5BE78DDEC7AF5D9120D466A20E48ECAE1A0F852221E35FB3DE98108BF906BB410388964A889D85EC2B0C68A5B8FAB9ECD364594E9B8DF61159A07BFA2589D2AC0879BCAB1EACE52C5CBD0E9F1F399487877AB032C8B4C20AE92D6410D39946828B19B10EEA02F462534E72140AD79E8DBAD531967EACF160CF74ED011988AE5FC17519989CCDF1AD354A3CC2B55B80B84D2FCF6AC81B1DB5435813638ECFC58FDCA058F46B67644C968810557B9873AEAFBBB8FC43D0C91A78ECF8828BC8FA3240D8F9CE5F5759FA36D4A5E80E4EAD83497A5772C0A6225FACB02F932C497426503F4306DC2312A167837FD50EB9D63CC3FDDF10D195CE61842596A85B54BC1A3B0D0459D1A32D2CE1B30161A04B0E9B98F79045E77303A95EC6BC2AAAFEC305826C1DEBEB1015C16F30E07A19C7CAB3D0ADCF2DD4158ADCFE75E1A26033C83C1AEDBEC09D509C301A558179EE7D32ACFFB9826075CBC649F10FB32134375223DB0F5232F1FD7DFB0151E4FF24135A97F331F3B8BD6B0BDF8E1CC56E144B3FE8C9A77F2E5077F15C461F0F3900F91615F84EE3D42078AAEAF60DFF47D79139B6FBB920CF901D66C86D81A360F267BFBACAC6528D0558B1A4388B18C94479AC6F5EB70B148617A90056533149C38311FD4149AD54C5D47607A5D67D30DB70B9F4C4DB59FFC4D765B1866EBCEAD21F0F4C19633F76A33D341E62BD5861C94C24490AAB34FECA441CAF9F2E2979423E061B5FFE5A3E12335204354AE4CE57D882DB502E0EC7AF792F2BBED91CE6D980B810BE44E72BC326A853FD0BB9752278899FF24DFC97ACBA85FDFCDA0CBD8D1D51ABCD71F75BC85A4EDE9989AEAE0EE94D22AB01346FB5B5349CDD0163BD98CE835E44AF09E1EC550950BC0D146D391E353DC70FC995A1435B2B9A0BCF88F1D48822CFFB27AEFA112B8487AD96E84F0FC5F9B032659FBE156E50BCC9553F0B3440E19F
16220060901225047 2 6 100 4095 2 DA110847314B537539F2A20681212A0B2ED264BF1F2595B817CC516D5AA4211585948B248F77277B11AB206738C71B5FB2FCC4041927B40B985282795A89EF66BDB111E1D07D790AC487DA5841B66FC407ED5DD8612703136422C442139C12040CE776FEB6C8B59B95408F31FB50073AD54B03F97113E61BE577E76D13AA971BA82CEE621C31C4770A7E076245A16689A9FE3E9190FB617FB330AA70AAC623B447D1858C24993D486C2B9A3C63FFCB3F230E7185F163C1EED434C24EE11EAC5B2369FEAF790523BD8BF7E8F9C87467ED6C89E5596974DCA6960E537259EA3AA587BF5198B26CE37638BC57012851903BB4CC0E2A28EC741EECB6220556EC5C118AE0142E5374AE2A3D1CEF165C09C0988A37877BCA6BBCAE28D52DA6701BF077307195C3618D4CAC58DDF64B6A8C2BF8E2FDCC0840973A8ED1F8413689BE05EA54AB6CD30464F94DD926D8CEC6B56704F534C6D8329A27ECAD9836721BC0C283E63CDA54FCEA851C0203E747BB02B75C92036928EFC201FFCBB747A2E093CCED157C3C3F74258D5607B6B8AA330DECCF42A73A6F81D300BAFCA921BAFF635DFC90824938F7454B258C1967FF90C1D828E028F9FA86AA7B287A87EC750EDCECEEEC223EAEA78511CB3C0130043950478737FDF6D56EA2B705D5E4C57701E955A9C862DBCAF36D0624D2F2C20616AA3E0478A4A722BBA577BC02578EE5935D124B 16220111007190634 2 6 100 6143 2 EEECABB15BA767CF1068832B8CA6FB7D86A7B3CD2A23BDBB1D0718A821586412C0A65556B7BE9512DE675D290A8008634E7AFFE1962ED92137ADDF2A5A26D1C980029F732AC12AF544CE2B8E95760E5BE78DDEC7AF5D9120D466A20E48ECAE1A0F852221E35FB3DE98108BF906BB410388964A889D85EC2B0C68A5B8FAB9ECD364594E9B8DF61159A07BFA2589D2AC0879BCAB1EACE52C5CBD0E9F1F399487877AB032C8B4C20AE92D6410D39946828B19B10EEA02F462534E72140AD79E8DBAD531967EACF160CF74ED011988AE5FC17519989CCDF1AD354A3CC2B55B80B84D2FCF6AC81B1DB5435813638ECFC58FDCA058F46B67644C968810557B9873AEAFBBB8FC43D0C91A78ECF8828BC8FA3240D8F9CE5F5759FA36D4A5E80E4EAD83497A5772C0A6225FACB02F932C497426503F4306DC2312A167837FD50EB9D63CC3FDDF10D195CE61842596A85B54BC1A3B0D0459D1A32D2CE1B30161A04B0E9B98F79045E77303A95EC6BC2AAAFEC305826C1DEBEB1015C16F30E07A19C7CAB3D0ADCF2DD4158ADCFE75E1A26033C83C1AEDBEC09D509C301A558179EE7D32ACFFB9826075CBC649F10FB32134375223DB0F5232F1FD7DFB0151E4FF24135A97F331F3B8BD6B0BDF8E1CC56E144B3FE8C9A77F2E5077F15C461F0F3900F91615F84EE3D42078AAEAF60DFF47D79139B6FBB920CF901D66C86D81A360F267BFBACAC6528D0558B1A4388B18C94479AC6F5EB70B148617A90056533149C38311FD4149AD54C5D47607A5D67D30DB70B9F4C4DB59FFC4D765B1866EBCEAD21F0F4C19633F76A33D341E62BD5861C94C24490AAB34FECA441CAF9F2E2979423E061B5FFE5A3E12335204354AE4CE57D882DB502E0EC7AF792F2BBED91CE6D980B810BE44E72BC326A853FD0BB9752278899FF24DFC97ACBA85FDFCDA0CBD8D1D51ABCD71F75BC85A4EDE9989AEAE0EE94D22AB01346FB5B5349CDD0163BD98CE835E44AF09E1EC550950BC0D146D391E353DC70FC995A1435B2B9A0BCF88F1D48822CFFB27AEFA112B8487AD96E84F0FC5F9B032659FBE156E50BCC9553F0B3A94CB43
16320060902020657 2 6 100 4095 2 DA110847314B537539F2A20681212A0B2ED264BF1F2595B817CC516D5AA4211585948B248F77277B11AB206738C71B5FB2FCC4041927B40B985282795A89EF66BDB111E1D07D790AC487DA5841B66FC407ED5DD8612703136422C442139C12040CE776FEB6C8B59B95408F31FB50073AD54B03F97113E61BE577E76D13AA971BA82CEE621C31C4770A7E076245A16689A9FE3E9190FB617FB330AA70AAC623B447D1858C24993D486C2B9A3C63FFCB3F230E7185F163C1EED434C24EE11EAC5B2369FEAF790523BD8BF7E8F9C87467ED6C89E5596974DCA6960E537259EA3AA587BF5198B26CE37638BC57012851903BB4CC0E2A28EC741EECB6220556EC5C118AE0142E5374AE2A3D1CEF165C09C0988A37877BCA6BBCAE28D52DA6701BF077307195C3618D4CAC58DDF64B6A8C2BF8E2FDCC0840973A8ED1F8413689BE05EA54AB6CD30464F94DD926D8CEC6B56704F534C6D8329A27ECAD9836721BC0C283E63CDA54FCEA851C0203E747BB02B75C92036928EFC201FFCBB747A2E093CCED157C3C3F74258D5607B6B8AA330DECCF42A73A6F81D300BAFCA921BAFF635DFC90824938F7454B258C1967FF90C1D828E028F9FA86AA7B287A87EC750EDCECEEEC223EAEA78511CB3C0130043950478737FDF6D56EA2B705D5E4C57701E955A9C862DBCAF36D0624D2F2C20616AA3E0478A4A722BBA577BC02578EE5942520CB 16320111007194444 2 6 100 6143 5 EEECABB15BA767CF1068832B8CA6FB7D86A7B3CD2A23BDBB1D0718A821586412C0A65556B7BE9512DE675D290A8008634E7AFFE1962ED92137ADDF2A5A26D1C980029F732AC12AF544CE2B8E95760E5BE78DDEC7AF5D9120D466A20E48ECAE1A0F852221E35FB3DE98108BF906BB410388964A889D85EC2B0C68A5B8FAB9ECD364594E9B8DF61159A07BFA2589D2AC0879BCAB1EACE52C5CBD0E9F1F399487877AB032C8B4C20AE92D6410D39946828B19B10EEA02F462534E72140AD79E8DBAD531967EACF160CF74ED011988AE5FC17519989CCDF1AD354A3CC2B55B80B84D2FCF6AC81B1DB5435813638ECFC58FDCA058F46B67644C968810557B9873AEAFBBB8FC43D0C91A78ECF8828BC8FA3240D8F9CE5F5759FA36D4A5E80E4EAD83497A5772C0A6225FACB02F932C497426503F4306DC2312A167837FD50EB9D63CC3FDDF10D195CE61842596A85B54BC1A3B0D0459D1A32D2CE1B30161A04B0E9B98F79045E77303A95EC6BC2AAAFEC305826C1DEBEB1015C16F30E07A19C7CAB3D0ADCF2DD4158ADCFE75E1A26033C83C1AEDBEC09D509C301A558179EE7D32ACFFB9826075CBC649F10FB32134375223DB0F5232F1FD7DFB0151E4FF24135A97F331F3B8BD6B0BDF8E1CC56E144B3FE8C9A77F2E5077F15C461F0F3900F91615F84EE3D42078AAEAF60DFF47D79139B6FBB920CF901D66C86D81A360F267BFBACAC6528D0558B1A4388B18C94479AC6F5EB70B148617A90056533149C38311FD4149AD54C5D47607A5D67D30DB70B9F4C4DB59FFC4D765B1866EBCEAD21F0F4C19633F76A33D341E62BD5861C94C24490AAB34FECA441CAF9F2E2979423E061B5FFE5A3E12335204354AE4CE57D882DB502E0EC7AF792F2BBED91CE6D980B810BE44E72BC326A853FD0BB9752278899FF24DFC97ACBA85FDFCDA0CBD8D1D51ABCD71F75BC85A4EDE9989AEAE0EE94D22AB01346FB5B5349CDD0163BD98CE835E44AF09E1EC550950BC0D146D391E353DC70FC995A1435B2B9A0BCF88F1D48822CFFB27AEFA112B8487AD96E84F0FC5F9B032659FBE156E50BCC9553F0B3BDA256F
16420060902070624 2 6 100 4095 5 DA110847314B537539F2A20681212A0B2ED264BF1F2595B817CC516D5AA4211585948B248F77277B11AB206738C71B5FB2FCC4041927B40B985282795A89EF66BDB111E1D07D790AC487DA5841B66FC407ED5DD8612703136422C442139C12040CE776FEB6C8B59B95408F31FB50073AD54B03F97113E61BE577E76D13AA971BA82CEE621C31C4770A7E076245A16689A9FE3E9190FB617FB330AA70AAC623B447D1858C24993D486C2B9A3C63FFCB3F230E7185F163C1EED434C24EE11EAC5B2369FEAF790523BD8BF7E8F9C87467ED6C89E5596974DCA6960E537259EA3AA587BF5198B26CE37638BC57012851903BB4CC0E2A28EC741EECB6220556EC5C118AE0142E5374AE2A3D1CEF165C09C0988A37877BCA6BBCAE28D52DA6701BF077307195C3618D4CAC58DDF64B6A8C2BF8E2FDCC0840973A8ED1F8413689BE05EA54AB6CD30464F94DD926D8CEC6B56704F534C6D8329A27ECAD9836721BC0C283E63CDA54FCEA851C0203E747BB02B75C92036928EFC201FFCBB747A2E093CCED157C3C3F74258D5607B6B8AA330DECCF42A73A6F81D300BAFCA921BAFF635DFC90824938F7454B258C1967FF90C1D828E028F9FA86AA7B287A87EC750EDCECEEEC223EAEA78511CB3C0130043950478737FDF6D56EA2B705D5E4C57701E955A9C862DBCAF36D0624D2F2C20616AA3E0478A4A722BBA577BC02578EE59553E03F 16420111007200841 2 6 100 6143 2 EEECABB15BA767CF1068832B8CA6FB7D86A7B3CD2A23BDBB1D0718A821586412C0A65556B7BE9512DE675D290A8008634E7AFFE1962ED92137ADDF2A5A26D1C980029F732AC12AF544CE2B8E95760E5BE78DDEC7AF5D9120D466A20E48ECAE1A0F852221E35FB3DE98108BF906BB410388964A889D85EC2B0C68A5B8FAB9ECD364594E9B8DF61159A07BFA2589D2AC0879BCAB1EACE52C5CBD0E9F1F399487877AB032C8B4C20AE92D6410D39946828B19B10EEA02F462534E72140AD79E8DBAD531967EACF160CF74ED011988AE5FC17519989CCDF1AD354A3CC2B55B80B84D2FCF6AC81B1DB5435813638ECFC58FDCA058F46B67644C968810557B9873AEAFBBB8FC43D0C91A78ECF8828BC8FA3240D8F9CE5F5759FA36D4A5E80E4EAD83497A5772C0A6225FACB02F932C497426503F4306DC2312A167837FD50EB9D63CC3FDDF10D195CE61842596A85B54BC1A3B0D0459D1A32D2CE1B30161A04B0E9B98F79045E77303A95EC6BC2AAAFEC305826C1DEBEB1015C16F30E07A19C7CAB3D0ADCF2DD4158ADCFE75E1A26033C83C1AEDBEC09D509C301A558179EE7D32ACFFB9826075CBC649F10FB32134375223DB0F5232F1FD7DFB0151E4FF24135A97F331F3B8BD6B0BDF8E1CC56E144B3FE8C9A77F2E5077F15C461F0F3900F91615F84EE3D42078AAEAF60DFF47D79139B6FBB920CF901D66C86D81A360F267BFBACAC6528D0558B1A4388B18C94479AC6F5EB70B148617A90056533149C38311FD4149AD54C5D47607A5D67D30DB70B9F4C4DB59FFC4D765B1866EBCEAD21F0F4C19633F76A33D341E62BD5861C94C24490AAB34FECA441CAF9F2E2979423E061B5FFE5A3E12335204354AE4CE57D882DB502E0EC7AF792F2BBED91CE6D980B810BE44E72BC326A853FD0BB9752278899FF24DFC97ACBA85FDFCDA0CBD8D1D51ABCD71F75BC85A4EDE9989AEAE0EE94D22AB01346FB5B5349CDD0163BD98CE835E44AF09E1EC550950BC0D146D391E353DC70FC995A1435B2B9A0BCF88F1D48822CFFB27AEFA112B8487AD96E84F0FC5F9B032659FBE156E50BCC9553F0B3CA3812B
16520060902095300 2 6 100 4095 2 DA110847314B537539F2A20681212A0B2ED264BF1F2595B817CC516D5AA4211585948B248F77277B11AB206738C71B5FB2FCC4041927B40B985282795A89EF66BDB111E1D07D790AC487DA5841B66FC407ED5DD8612703136422C442139C12040CE776FEB6C8B59B95408F31FB50073AD54B03F97113E61BE577E76D13AA971BA82CEE621C31C4770A7E076245A16689A9FE3E9190FB617FB330AA70AAC623B447D1858C24993D486C2B9A3C63FFCB3F230E7185F163C1EED434C24EE11EAC5B2369FEAF790523BD8BF7E8F9C87467ED6C89E5596974DCA6960E537259EA3AA587BF5198B26CE37638BC57012851903BB4CC0E2A28EC741EECB6220556EC5C118AE0142E5374AE2A3D1CEF165C09C0988A37877BCA6BBCAE28D52DA6701BF077307195C3618D4CAC58DDF64B6A8C2BF8E2FDCC0840973A8ED1F8413689BE05EA54AB6CD30464F94DD926D8CEC6B56704F534C6D8329A27ECAD9836721BC0C283E63CDA54FCEA851C0203E747BB02B75C92036928EFC201FFCBB747A2E093CCED157C3C3F74258D5607B6B8AA330DECCF42A73A6F81D300BAFCA921BAFF635DFC90824938F7454B258C1967FF90C1D828E028F9FA86AA7B287A87EC750EDCECEEEC223EAEA78511CB3C0130043950478737FDF6D56EA2B705D5E4C57701E955A9C862DBCAF36D0624D2F2C20616AA3E0478A4A722BBA577BC02578EE595F6EC6B 16520111007202834 2 6 100 6143 2 EEECABB15BA767CF1068832B8CA6FB7D86A7B3CD2A23BDBB1D0718A821586412C0A65556B7BE9512DE675D290A8008634E7AFFE1962ED92137ADDF2A5A26D1C980029F732AC12AF544CE2B8E95760E5BE78DDEC7AF5D9120D466A20E48ECAE1A0F852221E35FB3DE98108BF906BB410388964A889D85EC2B0C68A5B8FAB9ECD364594E9B8DF61159A07BFA2589D2AC0879BCAB1EACE52C5CBD0E9F1F399487877AB032C8B4C20AE92D6410D39946828B19B10EEA02F462534E72140AD79E8DBAD531967EACF160CF74ED011988AE5FC17519989CCDF1AD354A3CC2B55B80B84D2FCF6AC81B1DB5435813638ECFC58FDCA058F46B67644C968810557B9873AEAFBBB8FC43D0C91A78ECF8828BC8FA3240D8F9CE5F5759FA36D4A5E80E4EAD83497A5772C0A6225FACB02F932C497426503F4306DC2312A167837FD50EB9D63CC3FDDF10D195CE61842596A85B54BC1A3B0D0459D1A32D2CE1B30161A04B0E9B98F79045E77303A95EC6BC2AAAFEC305826C1DEBEB1015C16F30E07A19C7CAB3D0ADCF2DD4158ADCFE75E1A26033C83C1AEDBEC09D509C301A558179EE7D32ACFFB9826075CBC649F10FB32134375223DB0F5232F1FD7DFB0151E4FF24135A97F331F3B8BD6B0BDF8E1CC56E144B3FE8C9A77F2E5077F15C461F0F3900F91615F84EE3D42078AAEAF60DFF47D79139B6FBB920CF901D66C86D81A360F267BFBACAC6528D0558B1A4388B18C94479AC6F5EB70B148617A90056533149C38311FD4149AD54C5D47607A5D67D30DB70B9F4C4DB59FFC4D765B1866EBCEAD21F0F4C19633F76A33D341E62BD5861C94C24490AAB34FECA441CAF9F2E2979423E061B5FFE5A3E12335204354AE4CE57D882DB502E0EC7AF792F2BBED91CE6D980B810BE44E72BC326A853FD0BB9752278899FF24DFC97ACBA85FDFCDA0CBD8D1D51ABCD71F75BC85A4EDE9989AEAE0EE94D22AB01346FB5B5349CDD0163BD98CE835E44AF09E1EC550950BC0D146D391E353DC70FC995A1435B2B9A0BCF88F1D48822CFFB27AEFA112B8487AD96E84F0FC5F9B032659FBE156E50BCC9553F0B3D47F0CB
16620060902113306 2 6 100 4095 5 DA110847314B537539F2A20681212A0B2ED264BF1F2595B817CC516D5AA4211585948B248F77277B11AB206738C71B5FB2FCC4041927B40B985282795A89EF66BDB111E1D07D790AC487DA5841B66FC407ED5DD8612703136422C442139C12040CE776FEB6C8B59B95408F31FB50073AD54B03F97113E61BE577E76D13AA971BA82CEE621C31C4770A7E076245A16689A9FE3E9190FB617FB330AA70AAC623B447D1858C24993D486C2B9A3C63FFCB3F230E7185F163C1EED434C24EE11EAC5B2369FEAF790523BD8BF7E8F9C87467ED6C89E5596974DCA6960E537259EA3AA587BF5198B26CE37638BC57012851903BB4CC0E2A28EC741EECB6220556EC5C118AE0142E5374AE2A3D1CEF165C09C0988A37877BCA6BBCAE28D52DA6701BF077307195C3618D4CAC58DDF64B6A8C2BF8E2FDCC0840973A8ED1F8413689BE05EA54AB6CD30464F94DD926D8CEC6B56704F534C6D8329A27ECAD9836721BC0C283E63CDA54FCEA851C0203E747BB02B75C92036928EFC201FFCBB747A2E093CCED157C3C3F74258D5607B6B8AA330DECCF42A73A6F81D300BAFCA921BAFF635DFC90824938F7454B258C1967FF90C1D828E028F9FA86AA7B287A87EC750EDCECEEEC223EAEA78511CB3C0130043950478737FDF6D56EA2B705D5E4C57701E955A9C862DBCAF36D0624D2F2C20616AA3E0478A4A722BBA577BC02578EE596599BEF 16620111007210544 2 6 100 6143 2 EEECABB15BA767CF1068832B8CA6FB7D86A7B3CD2A23BDBB1D0718A821586412C0A65556B7BE9512DE675D290A8008634E7AFFE1962ED92137ADDF2A5A26D1C980029F732AC12AF544CE2B8E95760E5BE78DDEC7AF5D9120D466A20E48ECAE1A0F852221E35FB3DE98108BF906BB410388964A889D85EC2B0C68A5B8FAB9ECD364594E9B8DF61159A07BFA2589D2AC0879BCAB1EACE52C5CBD0E9F1F399487877AB032C8B4C20AE92D6410D39946828B19B10EEA02F462534E72140AD79E8DBAD531967EACF160CF74ED011988AE5FC17519989CCDF1AD354A3CC2B55B80B84D2FCF6AC81B1DB5435813638ECFC58FDCA058F46B67644C968810557B9873AEAFBBB8FC43D0C91A78ECF8828BC8FA3240D8F9CE5F5759FA36D4A5E80E4EAD83497A5772C0A6225FACB02F932C497426503F4306DC2312A167837FD50EB9D63CC3FDDF10D195CE61842596A85B54BC1A3B0D0459D1A32D2CE1B30161A04B0E9B98F79045E77303A95EC6BC2AAAFEC305826C1DEBEB1015C16F30E07A19C7CAB3D0ADCF2DD4158ADCFE75E1A26033C83C1AEDBEC09D509C301A558179EE7D32ACFFB9826075CBC649F10FB32134375223DB0F5232F1FD7DFB0151E4FF24135A97F331F3B8BD6B0BDF8E1CC56E144B3FE8C9A77F2E5077F15C461F0F3900F91615F84EE3D42078AAEAF60DFF47D79139B6FBB920CF901D66C86D81A360F267BFBACAC6528D0558B1A4388B18C94479AC6F5EB70B148617A90056533149C38311FD4149AD54C5D47607A5D67D30DB70B9F4C4DB59FFC4D765B1866EBCEAD21F0F4C19633F76A33D341E62BD5861C94C24490AAB34FECA441CAF9F2E2979423E061B5FFE5A3E12335204354AE4CE57D882DB502E0EC7AF792F2BBED91CE6D980B810BE44E72BC326A853FD0BB9752278899FF24DFC97ACBA85FDFCDA0CBD8D1D51ABCD71F75BC85A4EDE9989AEAE0EE94D22AB01346FB5B5349CDD0163BD98CE835E44AF09E1EC550950BC0D146D391E353DC70FC995A1435B2B9A0BCF88F1D48822CFFB27AEFA112B8487AD96E84F0FC5F9B032659FBE156E50BCC9553F0B3E7E62A3
16720060902142302 2 6 100 4095 2 DA110847314B537539F2A20681212A0B2ED264BF1F2595B817CC516D5AA4211585948B248F77277B11AB206738C71B5FB2FCC4041927B40B985282795A89EF66BDB111E1D07D790AC487DA5841B66FC407ED5DD8612703136422C442139C12040CE776FEB6C8B59B95408F31FB50073AD54B03F97113E61BE577E76D13AA971BA82CEE621C31C4770A7E076245A16689A9FE3E9190FB617FB330AA70AAC623B447D1858C24993D486C2B9A3C63FFCB3F230E7185F163C1EED434C24EE11EAC5B2369FEAF790523BD8BF7E8F9C87467ED6C89E5596974DCA6960E537259EA3AA587BF5198B26CE37638BC57012851903BB4CC0E2A28EC741EECB6220556EC5C118AE0142E5374AE2A3D1CEF165C09C0988A37877BCA6BBCAE28D52DA6701BF077307195C3618D4CAC58DDF64B6A8C2BF8E2FDCC0840973A8ED1F8413689BE05EA54AB6CD30464F94DD926D8CEC6B56704F534C6D8329A27ECAD9836721BC0C283E63CDA54FCEA851C0203E747BB02B75C92036928EFC201FFCBB747A2E093CCED157C3C3F74258D5607B6B8AA330DECCF42A73A6F81D300BAFCA921BAFF635DFC90824938F7454B258C1967FF90C1D828E028F9FA86AA7B287A87EC750EDCECEEEC223EAEA78511CB3C0130043950478737FDF6D56EA2B705D5E4C57701E955A9C862DBCAF36D0624D2F2C20616AA3E0478A4A722BBA577BC02578EE59703582B 16720111007211239 2 6 100 6143 5 EEECABB15BA767CF1068832B8CA6FB7D86A7B3CD2A23BDBB1D0718A821586412C0A65556B7BE9512DE675D290A8008634E7AFFE1962ED92137ADDF2A5A26D1C980029F732AC12AF544CE2B8E95760E5BE78DDEC7AF5D9120D466A20E48ECAE1A0F852221E35FB3DE98108BF906BB410388964A889D85EC2B0C68A5B8FAB9ECD364594E9B8DF61159A07BFA2589D2AC0879BCAB1EACE52C5CBD0E9F1F399487877AB032C8B4C20AE92D6410D39946828B19B10EEA02F462534E72140AD79E8DBAD531967EACF160CF74ED011988AE5FC17519989CCDF1AD354A3CC2B55B80B84D2FCF6AC81B1DB5435813638ECFC58FDCA058F46B67644C968810557B9873AEAFBBB8FC43D0C91A78ECF8828BC8FA3240D8F9CE5F5759FA36D4A5E80E4EAD83497A5772C0A6225FACB02F932C497426503F4306DC2312A167837FD50EB9D63CC3FDDF10D195CE61842596A85B54BC1A3B0D0459D1A32D2CE1B30161A04B0E9B98F79045E77303A95EC6BC2AAAFEC305826C1DEBEB1015C16F30E07A19C7CAB3D0ADCF2DD4158ADCFE75E1A26033C83C1AEDBEC09D509C301A558179EE7D32ACFFB9826075CBC649F10FB32134375223DB0F5232F1FD7DFB0151E4FF24135A97F331F3B8BD6B0BDF8E1CC56E144B3FE8C9A77F2E5077F15C461F0F3900F91615F84EE3D42078AAEAF60DFF47D79139B6FBB920CF901D66C86D81A360F267BFBACAC6528D0558B1A4388B18C94479AC6F5EB70B148617A90056533149C38311FD4149AD54C5D47607A5D67D30DB70B9F4C4DB59FFC4D765B1866EBCEAD21F0F4C19633F76A33D341E62BD5861C94C24490AAB34FECA441CAF9F2E2979423E061B5FFE5A3E12335204354AE4CE57D882DB502E0EC7AF792F2BBED91CE6D980B810BE44E72BC326A853FD0BB9752278899FF24DFC97ACBA85FDFCDA0CBD8D1D51ABCD71F75BC85A4EDE9989AEAE0EE94D22AB01346FB5B5349CDD0163BD98CE835E44AF09E1EC550950BC0D146D391E353DC70FC995A1435B2B9A0BCF88F1D48822CFFB27AEFA112B8487AD96E84F0FC5F9B032659FBE156E50BCC9553F0B3EAFE99F
16820060902210839 2 6 100 4095 5 DA110847314B537539F2A20681212A0B2ED264BF1F2595B817CC516D5AA4211585948B248F77277B11AB206738C71B5FB2FCC4041927B40B985282795A89EF66BDB111E1D07D790AC487DA5841B66FC407ED5DD8612703136422C442139C12040CE776FEB6C8B59B95408F31FB50073AD54B03F97113E61BE577E76D13AA971BA82CEE621C31C4770A7E076245A16689A9FE3E9190FB617FB330AA70AAC623B447D1858C24993D486C2B9A3C63FFCB3F230E7185F163C1EED434C24EE11EAC5B2369FEAF790523BD8BF7E8F9C87467ED6C89E5596974DCA6960E537259EA3AA587BF5198B26CE37638BC57012851903BB4CC0E2A28EC741EECB6220556EC5C118AE0142E5374AE2A3D1CEF165C09C0988A37877BCA6BBCAE28D52DA6701BF077307195C3618D4CAC58DDF64B6A8C2BF8E2FDCC0840973A8ED1F8413689BE05EA54AB6CD30464F94DD926D8CEC6B56704F534C6D8329A27ECAD9836721BC0C283E63CDA54FCEA851C0203E747BB02B75C92036928EFC201FFCBB747A2E093CCED157C3C3F74258D5607B6B8AA330DECCF42A73A6F81D300BAFCA921BAFF635DFC90824938F7454B258C1967FF90C1D828E028F9FA86AA7B287A87EC750EDCECEEEC223EAEA78511CB3C0130043950478737FDF6D56EA2B705D5E4C57701E955A9C862DBCAF36D0624D2F2C20616AA3E0478A4A722BBA577BC02578EE598A695F7 16820111007211555 2 6 100 6143 2 EEECABB15BA767CF1068832B8CA6FB7D86A7B3CD2A23BDBB1D0718A821586412C0A65556B7BE9512DE675D290A8008634E7AFFE1962ED92137ADDF2A5A26D1C980029F732AC12AF544CE2B8E95760E5BE78DDEC7AF5D9120D466A20E48ECAE1A0F852221E35FB3DE98108BF906BB410388964A889D85EC2B0C68A5B8FAB9ECD364594E9B8DF61159A07BFA2589D2AC0879BCAB1EACE52C5CBD0E9F1F399487877AB032C8B4C20AE92D6410D39946828B19B10EEA02F462534E72140AD79E8DBAD531967EACF160CF74ED011988AE5FC17519989CCDF1AD354A3CC2B55B80B84D2FCF6AC81B1DB5435813638ECFC58FDCA058F46B67644C968810557B9873AEAFBBB8FC43D0C91A78ECF8828BC8FA3240D8F9CE5F5759FA36D4A5E80E4EAD83497A5772C0A6225FACB02F932C497426503F4306DC2312A167837FD50EB9D63CC3FDDF10D195CE61842596A85B54BC1A3B0D0459D1A32D2CE1B30161A04B0E9B98F79045E77303A95EC6BC2AAAFEC305826C1DEBEB1015C16F30E07A19C7CAB3D0ADCF2DD4158ADCFE75E1A26033C83C1AEDBEC09D509C301A558179EE7D32ACFFB9826075CBC649F10FB32134375223DB0F5232F1FD7DFB0151E4FF24135A97F331F3B8BD6B0BDF8E1CC56E144B3FE8C9A77F2E5077F15C461F0F3900F91615F84EE3D42078AAEAF60DFF47D79139B6FBB920CF901D66C86D81A360F267BFBACAC6528D0558B1A4388B18C94479AC6F5EB70B148617A90056533149C38311FD4149AD54C5D47607A5D67D30DB70B9F4C4DB59FFC4D765B1866EBCEAD21F0F4C19633F76A33D341E62BD5861C94C24490AAB34FECA441CAF9F2E2979423E061B5FFE5A3E12335204354AE4CE57D882DB502E0EC7AF792F2BBED91CE6D980B810BE44E72BC326A853FD0BB9752278899FF24DFC97ACBA85FDFCDA0CBD8D1D51ABCD71F75BC85A4EDE9989AEAE0EE94D22AB01346FB5B5349CDD0163BD98CE835E44AF09E1EC550950BC0D146D391E353DC70FC995A1435B2B9A0BCF88F1D48822CFFB27AEFA112B8487AD96E84F0FC5F9B032659FBE156E50BCC9553F0B3EC3E0A3
16920060903073325 2 6 100 4095 2 DA110847314B537539F2A20681212A0B2ED264BF1F2595B817CC516D5AA4211585948B248F77277B11AB206738C71B5FB2FCC4041927B40B985282795A89EF66BDB111E1D07D790AC487DA5841B66FC407ED5DD8612703136422C442139C12040CE776FEB6C8B59B95408F31FB50073AD54B03F97113E61BE577E76D13AA971BA82CEE621C31C4770A7E076245A16689A9FE3E9190FB617FB330AA70AAC623B447D1858C24993D486C2B9A3C63FFCB3F230E7185F163C1EED434C24EE11EAC5B2369FEAF790523BD8BF7E8F9C87467ED6C89E5596974DCA6960E537259EA3AA587BF5198B26CE37638BC57012851903BB4CC0E2A28EC741EECB6220556EC5C118AE0142E5374AE2A3D1CEF165C09C0988A37877BCA6BBCAE28D52DA6701BF077307195C3618D4CAC58DDF64B6A8C2BF8E2FDCC0840973A8ED1F8413689BE05EA54AB6CD30464F94DD926D8CEC6B56704F534C6D8329A27ECAD9836721BC0C283E63CDA54FCEA851C0203E747BB02B75C92036928EFC201FFCBB747A2E093CCED157C3C3F74258D5607B6B8AA330DECCF42A73A6F81D300BAFCA921BAFF635DFC90824938F7454B258C1967FF90C1D828E028F9FA86AA7B287A87EC750EDCECEEEC223EAEA78511CB3C0130043950478737FDF6D56EA2B705D5E4C57701E955A9C862DBCAF36D0624D2F2C20616AA3E0478A4A722BBA577BC02578EE59B315E9B 16920111007215259 2 6 100 6143 2 EEECABB15BA767CF1068832B8CA6FB7D86A7B3CD2A23BDBB1D0718A821586412C0A65556B7BE9512DE675D290A8008634E7AFFE1962ED92137ADDF2A5A26D1C980029F732AC12AF544CE2B8E95760E5BE78DDEC7AF5D9120D466A20E48ECAE1A0F852221E35FB3DE98108BF906BB410388964A889D85EC2B0C68A5B8FAB9ECD364594E9B8DF61159A07BFA2589D2AC0879BCAB1EACE52C5CBD0E9F1F399487877AB032C8B4C20AE92D6410D39946828B19B10EEA02F462534E72140AD79E8DBAD531967EACF160CF74ED011988AE5FC17519989CCDF1AD354A3CC2B55B80B84D2FCF6AC81B1DB5435813638ECFC58FDCA058F46B67644C968810557B9873AEAFBBB8FC43D0C91A78ECF8828BC8FA3240D8F9CE5F5759FA36D4A5E80E4EAD83497A5772C0A6225FACB02F932C497426503F4306DC2312A167837FD50EB9D63CC3FDDF10D195CE61842596A85B54BC1A3B0D0459D1A32D2CE1B30161A04B0E9B98F79045E77303A95EC6BC2AAAFEC305826C1DEBEB1015C16F30E07A19C7CAB3D0ADCF2DD4158ADCFE75E1A26033C83C1AEDBEC09D509C301A558179EE7D32ACFFB9826075CBC649F10FB32134375223DB0F5232F1FD7DFB0151E4FF24135A97F331F3B8BD6B0BDF8E1CC56E144B3FE8C9A77F2E5077F15C461F0F3900F91615F84EE3D42078AAEAF60DFF47D79139B6FBB920CF901D66C86D81A360F267BFBACAC6528D0558B1A4388B18C94479AC6F5EB70B148617A90056533149C38311FD4149AD54C5D47607A5D67D30DB70B9F4C4DB59FFC4D765B1866EBCEAD21F0F4C19633F76A33D341E62BD5861C94C24490AAB34FECA441CAF9F2E2979423E061B5FFE5A3E12335204354AE4CE57D882DB502E0EC7AF792F2BBED91CE6D980B810BE44E72BC326A853FD0BB9752278899FF24DFC97ACBA85FDFCDA0CBD8D1D51ABCD71F75BC85A4EDE9989AEAE0EE94D22AB01346FB5B5349CDD0163BD98CE835E44AF09E1EC550950BC0D146D391E353DC70FC995A1435B2B9A0BCF88F1D48822CFFB27AEFA112B8487AD96E84F0FC5F9B032659FBE156E50BCC9553F0B3FFF795B
17020060903095626 2 6 100 4095 2 DA110847314B537539F2A20681212A0B2ED264BF1F2595B817CC516D5AA4211585948B248F77277B11AB206738C71B5FB2FCC4041927B40B985282795A89EF66BDB111E1D07D790AC487DA5841B66FC407ED5DD8612703136422C442139C12040CE776FEB6C8B59B95408F31FB50073AD54B03F97113E61BE577E76D13AA971BA82CEE621C31C4770A7E076245A16689A9FE3E9190FB617FB330AA70AAC623B447D1858C24993D486C2B9A3C63FFCB3F230E7185F163C1EED434C24EE11EAC5B2369FEAF790523BD8BF7E8F9C87467ED6C89E5596974DCA6960E537259EA3AA587BF5198B26CE37638BC57012851903BB4CC0E2A28EC741EECB6220556EC5C118AE0142E5374AE2A3D1CEF165C09C0988A37877BCA6BBCAE28D52DA6701BF077307195C3618D4CAC58DDF64B6A8C2BF8E2FDCC0840973A8ED1F8413689BE05EA54AB6CD30464F94DD926D8CEC6B56704F534C6D8329A27ECAD9836721BC0C283E63CDA54FCEA851C0203E747BB02B75C92036928EFC201FFCBB747A2E093CCED157C3C3F74258D5607B6B8AA330DECCF42A73A6F81D300BAFCA921BAFF635DFC90824938F7454B258C1967FF90C1D828E028F9FA86AA7B287A87EC750EDCECEEEC223EAEA78511CB3C0130043950478737FDF6D56EA2B705D5E4C57701E955A9C862DBCAF36D0624D2F2C20616AA3E0478A4A722BBA577BC02578EE59BBD7153 17020111007222210 2 6 100 6143 5 EEECABB15BA767CF1068832B8CA6FB7D86A7B3CD2A23BDBB1D0718A821586412C0A65556B7BE9512DE675D290A8008634E7AFFE1962ED92137ADDF2A5A26D1C980029F732AC12AF544CE2B8E95760E5BE78DDEC7AF5D9120D466A20E48ECAE1A0F852221E35FB3DE98108BF906BB410388964A889D85EC2B0C68A5B8FAB9ECD364594E9B8DF61159A07BFA2589D2AC0879BCAB1EACE52C5CBD0E9F1F399487877AB032C8B4C20AE92D6410D39946828B19B10EEA02F462534E72140AD79E8DBAD531967EACF160CF74ED011988AE5FC17519989CCDF1AD354A3CC2B55B80B84D2FCF6AC81B1DB5435813638ECFC58FDCA058F46B67644C968810557B9873AEAFBBB8FC43D0C91A78ECF8828BC8FA3240D8F9CE5F5759FA36D4A5E80E4EAD83497A5772C0A6225FACB02F932C497426503F4306DC2312A167837FD50EB9D63CC3FDDF10D195CE61842596A85B54BC1A3B0D0459D1A32D2CE1B30161A04B0E9B98F79045E77303A95EC6BC2AAAFEC305826C1DEBEB1015C16F30E07A19C7CAB3D0ADCF2DD4158ADCFE75E1A26033C83C1AEDBEC09D509C301A558179EE7D32ACFFB9826075CBC649F10FB32134375223DB0F5232F1FD7DFB0151E4FF24135A97F331F3B8BD6B0BDF8E1CC56E144B3FE8C9A77F2E5077F15C461F0F3900F91615F84EE3D42078AAEAF60DFF47D79139B6FBB920CF901D66C86D81A360F267BFBACAC6528D0558B1A4388B18C94479AC6F5EB70B148617A90056533149C38311FD4149AD54C5D47607A5D67D30DB70B9F4C4DB59FFC4D765B1866EBCEAD21F0F4C19633F76A33D341E62BD5861C94C24490AAB34FECA441CAF9F2E2979423E061B5FFE5A3E12335204354AE4CE57D882DB502E0EC7AF792F2BBED91CE6D980B810BE44E72BC326A853FD0BB9752278899FF24DFC97ACBA85FDFCDA0CBD8D1D51ABCD71F75BC85A4EDE9989AEAE0EE94D22AB01346FB5B5349CDD0163BD98CE835E44AF09E1EC550950BC0D146D391E353DC70FC995A1435B2B9A0BCF88F1D48822CFFB27AEFA112B8487AD96E84F0FC5F9B032659FBE156E50BCC9553F0B40FAAAAF
17120060903162601 2 6 100 4095 2 DA110847314B537539F2A20681212A0B2ED264BF1F2595B817CC516D5AA4211585948B248F77277B11AB206738C71B5FB2FCC4041927B40B985282795A89EF66BDB111E1D07D790AC487DA5841B66FC407ED5DD8612703136422C442139C12040CE776FEB6C8B59B95408F31FB50073AD54B03F97113E61BE577E76D13AA971BA82CEE621C31C4770A7E076245A16689A9FE3E9190FB617FB330AA70AAC623B447D1858C24993D486C2B9A3C63FFCB3F230E7185F163C1EED434C24EE11EAC5B2369FEAF790523BD8BF7E8F9C87467ED6C89E5596974DCA6960E537259EA3AA587BF5198B26CE37638BC57012851903BB4CC0E2A28EC741EECB6220556EC5C118AE0142E5374AE2A3D1CEF165C09C0988A37877BCA6BBCAE28D52DA6701BF077307195C3618D4CAC58DDF64B6A8C2BF8E2FDCC0840973A8ED1F8413689BE05EA54AB6CD30464F94DD926D8CEC6B56704F534C6D8329A27ECAD9836721BC0C283E63CDA54FCEA851C0203E747BB02B75C92036928EFC201FFCBB747A2E093CCED157C3C3F74258D5607B6B8AA330DECCF42A73A6F81D300BAFCA921BAFF635DFC90824938F7454B258C1967FF90C1D828E028F9FA86AA7B287A87EC750EDCECEEEC223EAEA78511CB3C0130043950478737FDF6D56EA2B705D5E4C57701E955A9C862DBCAF36D0624D2F2C20616AA3E0478A4A722BBA577BC02578EE59D48AEE3 17120111007230624 2 6 100 6143 5 EEECABB15BA767CF1068832B8CA6FB7D86A7B3CD2A23BDBB1D0718A821586412C0A65556B7BE9512DE675D290A8008634E7AFFE1962ED92137ADDF2A5A26D1C980029F732AC12AF544CE2B8E95760E5BE78DDEC7AF5D9120D466A20E48ECAE1A0F852221E35FB3DE98108BF906BB410388964A889D85EC2B0C68A5B8FAB9ECD364594E9B8DF61159A07BFA2589D2AC0879BCAB1EACE52C5CBD0E9F1F399487877AB032C8B4C20AE92D6410D39946828B19B10EEA02F462534E72140AD79E8DBAD531967EACF160CF74ED011988AE5FC17519989CCDF1AD354A3CC2B55B80B84D2FCF6AC81B1DB5435813638ECFC58FDCA058F46B67644C968810557B9873AEAFBBB8FC43D0C91A78ECF8828BC8FA3240D8F9CE5F5759FA36D4A5E80E4EAD83497A5772C0A6225FACB02F932C497426503F4306DC2312A167837FD50EB9D63CC3FDDF10D195CE61842596A85B54BC1A3B0D0459D1A32D2CE1B30161A04B0E9B98F79045E77303A95EC6BC2AAAFEC305826C1DEBEB1015C16F30E07A19C7CAB3D0ADCF2DD4158ADCFE75E1A26033C83C1AEDBEC09D509C301A558179EE7D32ACFFB9826075CBC649F10FB32134375223DB0F5232F1FD7DFB0151E4FF24135A97F331F3B8BD6B0BDF8E1CC56E144B3FE8C9A77F2E5077F15C461F0F3900F91615F84EE3D42078AAEAF60DFF47D79139B6FBB920CF901D66C86D81A360F267BFBACAC6528D0558B1A4388B18C94479AC6F5EB70B148617A90056533149C38311FD4149AD54C5D47607A5D67D30DB70B9F4C4DB59FFC4D765B1866EBCEAD21F0F4C19633F76A33D341E62BD5861C94C24490AAB34FECA441CAF9F2E2979423E061B5FFE5A3E12335204354AE4CE57D882DB502E0EC7AF792F2BBED91CE6D980B810BE44E72BC326A853FD0BB9752278899FF24DFC97ACBA85FDFCDA0CBD8D1D51ABCD71F75BC85A4EDE9989AEAE0EE94D22AB01346FB5B5349CDD0163BD98CE835E44AF09E1EC550950BC0D146D391E353DC70FC995A1435B2B9A0BCF88F1D48822CFFB27AEFA112B8487AD96E84F0FC5F9B032659FBE156E50BCC9553F0B42759A07
17220040305011518 2 6 100 6143 2 E95A4131F86234D27EE1E51791599559EEDB618912E4FE36B81B80CDA4D497959DBFAEE929317A66BE64A328BAB6183EA5A5CBB3581490B4B613B225ADD00EFD38540356E0F4716229CDDB260283AF044FDAF1EF9248BB0CE9031C117CF15D3259B3E7B0301CA1AAC91AFA7A57CCDEED2DA4EFC2DBC7A9FC53BB4D3CB2D57D209D5DDEF25DE14F8226404296BD504EC14F6340F0AA2A1A943B9552C4B91D3EB48C08A13671C36EE5042857625DD2CB58965C0975EB775057FF82BC2B8B69D0BF26E2F80115B3E1A984D1D73D9D02AD69C3A1AF90EC915DE6FC9F574BD755B2EF6BBE62F3717E128DC797A06FE35C1C28CED57A0F64F61A4439ACFE7A7B95A1A948417A5B8B69916A32989B00E2C3FB7C74139A4DA9E533C439E59FC7C4F90780D2BBCDF012C499C15A1E0B5C318F84FB17DF97AB3EC356FD0072CFA3884EFBED319009DE6DBF2A5C7C87A93DEB04CCD9147EF8C9BEC2FD713793E4F0BF8C4EFCEBFBF95D555E523AB5D742808C4E425979A1C216C8CB2B42C7715B8CA5907E84E6FBC35DA7BFBFC892870B659C882C6E3697E0DCC6C24771F26D51A890786DA516DBC2D161680B134F1715B32F734E667650398EC2241AF78877BB3D61D83D0158DDE894862EE6E1BEE278724EA7B34C74F0A5D6B7F79F1322E20AD5757E11D9AC31BFE27C56ABB23A275130533433DC41DDBA1081E3A018E0D0B55DF33ECAE104909DC74F1CA2256CFD423A859B0AC2112A0AE684396C0029AD07D0D30AC84FFD2C2E80B74DE29310FCAFE7D0CB8864729B6FD1F86052D7DD9A9CB085A186259A67C175B3F81C5DA19AFED1BF9C5C07F40A29ED47ED4F1C7DE878B8411E3239ED15AC0E4CCC1D7F8842E9FD9C989F301E2689F800C3D14A38810906A36EEA34207014E99C843C599D56FCFBC14278A2A009C13B6E4AC7460B54D2C7EF38D72AC450540097D2AF609D3FFF874D14582FA8FF21027DEC92844BD22A9A7EC14C66BCC8DB1E058B95AF87ACB60A5725767A76C9185744E483BCCD9278ED9FF15A04061D0F6E32D98B6853A39AA498673C7DD012982B1913B3C3CE2C7080E4CE974B 17220111007232634 2 6 100 6143 2 EEECABB15BA767CF1068832B8CA6FB7D86A7B3CD2A23BDBB1D0718A821586412C0A65556B7BE9512DE675D290A8008634E7AFFE1962ED92137ADDF2A5A26D1C980029F732AC12AF544CE2B8E95760E5BE78DDEC7AF5D9120D466A20E48ECAE1A0F852221E35FB3DE98108BF906BB410388964A889D85EC2B0C68A5B8FAB9ECD364594E9B8DF61159A07BFA2589D2AC0879BCAB1EACE52C5CBD0E9F1F399487877AB032C8B4C20AE92D6410D39946828B19B10EEA02F462534E72140AD79E8DBAD531967EACF160CF74ED011988AE5FC17519989CCDF1AD354A3CC2B55B80B84D2FCF6AC81B1DB5435813638ECFC58FDCA058F46B67644C968810557B9873AEAFBBB8FC43D0C91A78ECF8828BC8FA3240D8F9CE5F5759FA36D4A5E80E4EAD83497A5772C0A6225FACB02F932C497426503F4306DC2312A167837FD50EB9D63CC3FDDF10D195CE61842596A85B54BC1A3B0D0459D1A32D2CE1B30161A04B0E9B98F79045E77303A95EC6BC2AAAFEC305826C1DEBEB1015C16F30E07A19C7CAB3D0ADCF2DD4158ADCFE75E1A26033C83C1AEDBEC09D509C301A558179EE7D32ACFFB9826075CBC649F10FB32134375223DB0F5232F1FD7DFB0151E4FF24135A97F331F3B8BD6B0BDF8E1CC56E144B3FE8C9A77F2E5077F15C461F0F3900F91615F84EE3D42078AAEAF60DFF47D79139B6FBB920CF901D66C86D81A360F267BFBACAC6528D0558B1A4388B18C94479AC6F5EB70B148617A90056533149C38311FD4149AD54C5D47607A5D67D30DB70B9F4C4DB59FFC4D765B1866EBCEAD21F0F4C19633F76A33D341E62BD5861C94C24490AAB34FECA441CAF9F2E2979423E061B5FFE5A3E12335204354AE4CE57D882DB502E0EC7AF792F2BBED91CE6D980B810BE44E72BC326A853FD0BB9752278899FF24DFC97ACBA85FDFCDA0CBD8D1D51ABCD71F75BC85A4EDE9989AEAE0EE94D22AB01346FB5B5349CDD0163BD98CE835E44AF09E1EC550950BC0D146D391E353DC70FC995A1435B2B9A0BCF88F1D48822CFFB27AEFA112B8487AD96E84F0FC5F9B032659FBE156E50BCC9553F0B431EFA63
17320040305043124 2 6 100 6143 2 E95A4131F86234D27EE1E51791599559EEDB618912E4FE36B81B80CDA4D497959DBFAEE929317A66BE64A328BAB6183EA5A5CBB3581490B4B613B225ADD00EFD38540356E0F4716229CDDB260283AF044FDAF1EF9248BB0CE9031C117CF15D3259B3E7B0301CA1AAC91AFA7A57CCDEED2DA4EFC2DBC7A9FC53BB4D3CB2D57D209D5DDEF25DE14F8226404296BD504EC14F6340F0AA2A1A943B9552C4B91D3EB48C08A13671C36EE5042857625DD2CB58965C0975EB775057FF82BC2B8B69D0BF26E2F80115B3E1A984D1D73D9D02AD69C3A1AF90EC915DE6FC9F574BD755B2EF6BBE62F3717E128DC797A06FE35C1C28CED57A0F64F61A4439ACFE7A7B95A1A948417A5B8B69916A32989B00E2C3FB7C74139A4DA9E533C439E59FC7C4F90780D2BBCDF012C499C15A1E0B5C318F84FB17DF97AB3EC356FD0072CFA3884EFBED319009DE6DBF2A5C7C87A93DEB04CCD9147EF8C9BEC2FD713793E4F0BF8C4EFCEBFBF95D555E523AB5D742808C4E425979A1C216C8CB2B42C7715B8CA5907E84E6FBC35DA7BFBFC892870B659C882C6E3697E0DCC6C24771F26D51A890786DA516DBC2D161680B134F1715B32F734E667650398EC2241AF78877BB3D61D83D0158DDE894862EE6E1BEE278724EA7B34C74F0A5D6B7F79F1322E20AD5757E11D9AC31BFE27C56ABB23A275130533433DC41DDBA1081E3A018E0D0B55DF33ECAE104909DC74F1CA2256CFD423A859B0AC2112A0AE684396C0029AD07D0D30AC84FFD2C2E80B74DE29310FCAFE7D0CB8864729B6FD1F86052D7DD9A9CB085A186259A67C175B3F81C5DA19AFED1BF9C5C07F40A29ED47ED4F1C7DE878B8411E3239ED15AC0E4CCC1D7F8842E9FD9C989F301E2689F800C3D14A38810906A36EEA34207014E99C843C599D56FCFBC14278A2A009C13B6E4AC7460B54D2C7EF38D72AC450540097D2AF609D3FFF874D14582FA8FF21027DEC92844BD22A9A7EC14C66BCC8DB1E058B95AF87ACB60A5725767A76C9185744E483BCCD9278ED9FF15A04061D0F6E32D98B6853A39AA498673C7DD012982B1913B3C3CE2C7080E5050933 17320111007233708 2 6 100 6143 5 EEECABB15BA767CF1068832B8CA6FB7D86A7B3CD2A23BDBB1D0718A821586412C0A65556B7BE9512DE675D290A8008634E7AFFE1962ED92137ADDF2A5A26D1C980029F732AC12AF544CE2B8E95760E5BE78DDEC7AF5D9120D466A20E48ECAE1A0F852221E35FB3DE98108BF906BB410388964A889D85EC2B0C68A5B8FAB9ECD364594E9B8DF61159A07BFA2589D2AC0879BCAB1EACE52C5CBD0E9F1F399487877AB032C8B4C20AE92D6410D39946828B19B10EEA02F462534E72140AD79E8DBAD531967EACF160CF74ED011988AE5FC17519989CCDF1AD354A3CC2B55B80B84D2FCF6AC81B1DB5435813638ECFC58FDCA058F46B67644C968810557B9873AEAFBBB8FC43D0C91A78ECF8828BC8FA3240D8F9CE5F5759FA36D4A5E80E4EAD83497A5772C0A6225FACB02F932C497426503F4306DC2312A167837FD50EB9D63CC3FDDF10D195CE61842596A85B54BC1A3B0D0459D1A32D2CE1B30161A04B0E9B98F79045E77303A95EC6BC2AAAFEC305826C1DEBEB1015C16F30E07A19C7CAB3D0ADCF2DD4158ADCFE75E1A26033C83C1AEDBEC09D509C301A558179EE7D32ACFFB9826075CBC649F10FB32134375223DB0F5232F1FD7DFB0151E4FF24135A97F331F3B8BD6B0BDF8E1CC56E144B3FE8C9A77F2E5077F15C461F0F3900F91615F84EE3D42078AAEAF60DFF47D79139B6FBB920CF901D66C86D81A360F267BFBACAC6528D0558B1A4388B18C94479AC6F5EB70B148617A90056533149C38311FD4149AD54C5D47607A5D67D30DB70B9F4C4DB59FFC4D765B1866EBCEAD21F0F4C19633F76A33D341E62BD5861C94C24490AAB34FECA441CAF9F2E2979423E061B5FFE5A3E12335204354AE4CE57D882DB502E0EC7AF792F2BBED91CE6D980B810BE44E72BC326A853FD0BB9752278899FF24DFC97ACBA85FDFCDA0CBD8D1D51ABCD71F75BC85A4EDE9989AEAE0EE94D22AB01346FB5B5349CDD0163BD98CE835E44AF09E1EC550950BC0D146D391E353DC70FC995A1435B2B9A0BCF88F1D48822CFFB27AEFA112B8487AD96E84F0FC5F9B032659FBE156E50BCC9553F0B436E7997
17420040305084728 2 6 100 6143 2 E95A4131F86234D27EE1E51791599559EEDB618912E4FE36B81B80CDA4D497959DBFAEE929317A66BE64A328BAB6183EA5A5CBB3581490B4B613B225ADD00EFD38540356E0F4716229CDDB260283AF044FDAF1EF9248BB0CE9031C117CF15D3259B3E7B0301CA1AAC91AFA7A57CCDEED2DA4EFC2DBC7A9FC53BB4D3CB2D57D209D5DDEF25DE14F8226404296BD504EC14F6340F0AA2A1A943B9552C4B91D3EB48C08A13671C36EE5042857625DD2CB58965C0975EB775057FF82BC2B8B69D0BF26E2F80115B3E1A984D1D73D9D02AD69C3A1AF90EC915DE6FC9F574BD755B2EF6BBE62F3717E128DC797A06FE35C1C28CED57A0F64F61A4439ACFE7A7B95A1A948417A5B8B69916A32989B00E2C3FB7C74139A4DA9E533C439E59FC7C4F90780D2BBCDF012C499C15A1E0B5C318F84FB17DF97AB3EC356FD0072CFA3884EFBED319009DE6DBF2A5C7C87A93DEB04CCD9147EF8C9BEC2FD713793E4F0BF8C4EFCEBFBF95D555E523AB5D742808C4E425979A1C216C8CB2B42C7715B8CA5907E84E6FBC35DA7BFBFC892870B659C882C6E3697E0DCC6C24771F26D51A890786DA516DBC2D161680B134F1715B32F734E667650398EC2241AF78877BB3D61D83D0158DDE894862EE6E1BEE278724EA7B34C74F0A5D6B7F79F1322E20AD5757E11D9AC31BFE27C56ABB23A275130533433DC41DDBA1081E3A018E0D0B55DF33ECAE104909DC74F1CA2256CFD423A859B0AC2112A0AE684396C0029AD07D0D30AC84FFD2C2E80B74DE29310FCAFE7D0CB8864729B6FD1F86052D7DD9A9CB085A186259A67C175B3F81C5DA19AFED1BF9C5C07F40A29ED47ED4F1C7DE878B8411E3239ED15AC0E4CCC1D7F8842E9FD9C989F301E2689F800C3D14A38810906A36EEA34207014E99C843C599D56FCFBC14278A2A009C13B6E4AC7460B54D2C7EF38D72AC450540097D2AF609D3FFF874D14582FA8FF21027DEC92844BD22A9A7EC14C66BCC8DB1E058B95AF87ACB60A5725767A76C9185744E483BCCD9278ED9FF15A04061D0F6E32D98B6853A39AA498673C7DD012982B1913B3C3CE2C7080E54C7783 17420111008000107 2 6 100 6143 5 EEECABB15BA767CF1068832B8CA6FB7D86A7B3CD2A23BDBB1D0718A821586412C0A65556B7BE9512DE675D290A8008634E7AFFE1962ED92137ADDF2A5A26D1C980029F732AC12AF544CE2B8E95760E5BE78DDEC7AF5D9120D466A20E48ECAE1A0F852221E35FB3DE98108BF906BB410388964A889D85EC2B0C68A5B8FAB9ECD364594E9B8DF61159A07BFA2589D2AC0879BCAB1EACE52C5CBD0E9F1F399487877AB032C8B4C20AE92D6410D39946828B19B10EEA02F462534E72140AD79E8DBAD531967EACF160CF74ED011988AE5FC17519989CCDF1AD354A3CC2B55B80B84D2FCF6AC81B1DB5435813638ECFC58FDCA058F46B67644C968810557B9873AEAFBBB8FC43D0C91A78ECF8828BC8FA3240D8F9CE5F5759FA36D4A5E80E4EAD83497A5772C0A6225FACB02F932C497426503F4306DC2312A167837FD50EB9D63CC3FDDF10D195CE61842596A85B54BC1A3B0D0459D1A32D2CE1B30161A04B0E9B98F79045E77303A95EC6BC2AAAFEC305826C1DEBEB1015C16F30E07A19C7CAB3D0ADCF2DD4158ADCFE75E1A26033C83C1AEDBEC09D509C301A558179EE7D32ACFFB9826075CBC649F10FB32134375223DB0F5232F1FD7DFB0151E4FF24135A97F331F3B8BD6B0BDF8E1CC56E144B3FE8C9A77F2E5077F15C461F0F3900F91615F84EE3D42078AAEAF60DFF47D79139B6FBB920CF901D66C86D81A360F267BFBACAC6528D0558B1A4388B18C94479AC6F5EB70B148617A90056533149C38311FD4149AD54C5D47607A5D67D30DB70B9F4C4DB59FFC4D765B1866EBCEAD21F0F4C19633F76A33D341E62BD5861C94C24490AAB34FECA441CAF9F2E2979423E061B5FFE5A3E12335204354AE4CE57D882DB502E0EC7AF792F2BBED91CE6D980B810BE44E72BC326A853FD0BB9752278899FF24DFC97ACBA85FDFCDA0CBD8D1D51ABCD71F75BC85A4EDE9989AEAE0EE94D22AB01346FB5B5349CDD0163BD98CE835E44AF09E1EC550950BC0D146D391E353DC70FC995A1435B2B9A0BCF88F1D48822CFFB27AEFA112B8487AD96E84F0FC5F9B032659FBE156E50BCC9553F0B443671AF
17520040306205350 2 6 100 6143 2 E95A4131F86234D27EE1E51791599559EEDB618912E4FE36B81B80CDA4D497959DBFAEE929317A66BE64A328BAB6183EA5A5CBB3581490B4B613B225ADD00EFD38540356E0F4716229CDDB260283AF044FDAF1EF9248BB0CE9031C117CF15D3259B3E7B0301CA1AAC91AFA7A57CCDEED2DA4EFC2DBC7A9FC53BB4D3CB2D57D209D5DDEF25DE14F8226404296BD504EC14F6340F0AA2A1A943B9552C4B91D3EB48C08A13671C36EE5042857625DD2CB58965C0975EB775057FF82BC2B8B69D0BF26E2F80115B3E1A984D1D73D9D02AD69C3A1AF90EC915DE6FC9F574BD755B2EF6BBE62F3717E128DC797A06FE35C1C28CED57A0F64F61A4439ACFE7A7B95A1A948417A5B8B69916A32989B00E2C3FB7C74139A4DA9E533C439E59FC7C4F90780D2BBCDF012C499C15A1E0B5C318F84FB17DF97AB3EC356FD0072CFA3884EFBED319009DE6DBF2A5C7C87A93DEB04CCD9147EF8C9BEC2FD713793E4F0BF8C4EFCEBFBF95D555E523AB5D742808C4E425979A1C216C8CB2B42C7715B8CA5907E84E6FBC35DA7BFBFC892870B659C882C6E3697E0DCC6C24771F26D51A890786DA516DBC2D161680B134F1715B32F734E667650398EC2241AF78877BB3D61D83D0158DDE894862EE6E1BEE278724EA7B34C74F0A5D6B7F79F1322E20AD5757E11D9AC31BFE27C56ABB23A275130533433DC41DDBA1081E3A018E0D0B55DF33ECAE104909DC74F1CA2256CFD423A859B0AC2112A0AE684396C0029AD07D0D30AC84FFD2C2E80B74DE29310FCAFE7D0CB8864729B6FD1F86052D7DD9A9CB085A186259A67C175B3F81C5DA19AFED1BF9C5C07F40A29ED47ED4F1C7DE878B8411E3239ED15AC0E4CCC1D7F8842E9FD9C989F301E2689F800C3D14A38810906A36EEA34207014E99C843C599D56FCFBC14278A2A009C13B6E4AC7460B54D2C7EF38D72AC450540097D2AF609D3FFF874D14582FA8FF21027DEC92844BD22A9A7EC14C66BCC8DB1E058B95AF87ACB60A5725767A76C9185744E483BCCD9278ED9FF15A04061D0F6E32D98B6853A39AA498673C7DD012982B1913B3C3CE2C7080E809C413 17520111008001457 2 6 100 6143 2 EEECABB15BA767CF1068832B8CA6FB7D86A7B3CD2A23BDBB1D0718A821586412C0A65556B7BE9512DE675D290A8008634E7AFFE1962ED92137ADDF2A5A26D1C980029F732AC12AF544CE2B8E95760E5BE78DDEC7AF5D9120D466A20E48ECAE1A0F852221E35FB3DE98108BF906BB410388964A889D85EC2B0C68A5B8FAB9ECD364594E9B8DF61159A07BFA2589D2AC0879BCAB1EACE52C5CBD0E9F1F399487877AB032C8B4C20AE92D6410D39946828B19B10EEA02F462534E72140AD79E8DBAD531967EACF160CF74ED011988AE5FC17519989CCDF1AD354A3CC2B55B80B84D2FCF6AC81B1DB5435813638ECFC58FDCA058F46B67644C968810557B9873AEAFBBB8FC43D0C91A78ECF8828BC8FA3240D8F9CE5F5759FA36D4A5E80E4EAD83497A5772C0A6225FACB02F932C497426503F4306DC2312A167837FD50EB9D63CC3FDDF10D195CE61842596A85B54BC1A3B0D0459D1A32D2CE1B30161A04B0E9B98F79045E77303A95EC6BC2AAAFEC305826C1DEBEB1015C16F30E07A19C7CAB3D0ADCF2DD4158ADCFE75E1A26033C83C1AEDBEC09D509C301A558179EE7D32ACFFB9826075CBC649F10FB32134375223DB0F5232F1FD7DFB0151E4FF24135A97F331F3B8BD6B0BDF8E1CC56E144B3FE8C9A77F2E5077F15C461F0F3900F91615F84EE3D42078AAEAF60DFF47D79139B6FBB920CF901D66C86D81A360F267BFBACAC6528D0558B1A4388B18C94479AC6F5EB70B148617A90056533149C38311FD4149AD54C5D47607A5D67D30DB70B9F4C4DB59FFC4D765B1866EBCEAD21F0F4C19633F76A33D341E62BD5861C94C24490AAB34FECA441CAF9F2E2979423E061B5FFE5A3E12335204354AE4CE57D882DB502E0EC7AF792F2BBED91CE6D980B810BE44E72BC326A853FD0BB9752278899FF24DFC97ACBA85FDFCDA0CBD8D1D51ABCD71F75BC85A4EDE9989AEAE0EE94D22AB01346FB5B5349CDD0163BD98CE835E44AF09E1EC550950BC0D146D391E353DC70FC995A1435B2B9A0BCF88F1D48822CFFB27AEFA112B8487AD96E84F0FC5F9B032659FBE156E50BCC9553F0B44A69D2B
17620040309221333 2 6 100 6143 2 E95A4131F86234D27EE1E51791599559EEDB618912E4FE36B81B80CDA4D497959DBFAEE929317A66BE64A328BAB6183EA5A5CBB3581490B4B613B225ADD00EFD38540356E0F4716229CDDB260283AF044FDAF1EF9248BB0CE9031C117CF15D3259B3E7B0301CA1AAC91AFA7A57CCDEED2DA4EFC2DBC7A9FC53BB4D3CB2D57D209D5DDEF25DE14F8226404296BD504EC14F6340F0AA2A1A943B9552C4B91D3EB48C08A13671C36EE5042857625DD2CB58965C0975EB775057FF82BC2B8B69D0BF26E2F80115B3E1A984D1D73D9D02AD69C3A1AF90EC915DE6FC9F574BD755B2EF6BBE62F3717E128DC797A06FE35C1C28CED57A0F64F61A4439ACFE7A7B95A1A948417A5B8B69916A32989B00E2C3FB7C74139A4DA9E533C439E59FC7C4F90780D2BBCDF012C499C15A1E0B5C318F84FB17DF97AB3EC356FD0072CFA3884EFBED319009DE6DBF2A5C7C87A93DEB04CCD9147EF8C9BEC2FD713793E4F0BF8C4EFCEBFBF95D555E523AB5D742808C4E425979A1C216C8CB2B42C7715B8CA5907E84E6FBC35DA7BFBFC892870B659C882C6E3697E0DCC6C24771F26D51A890786DA516DBC2D161680B134F1715B32F734E667650398EC2241AF78877BB3D61D83D0158DDE894862EE6E1BEE278724EA7B34C74F0A5D6B7F79F1322E20AD5757E11D9AC31BFE27C56ABB23A275130533433DC41DDBA1081E3A018E0D0B55DF33ECAE104909DC74F1CA2256CFD423A859B0AC2112A0AE684396C0029AD07D0D30AC84FFD2C2E80B74DE29310FCAFE7D0CB8864729B6FD1F86052D7DD9A9CB085A186259A67C175B3F81C5DA19AFED1BF9C5C07F40A29ED47ED4F1C7DE878B8411E3239ED15AC0E4CCC1D7F8842E9FD9C989F301E2689F800C3D14A38810906A36EEA34207014E99C843C599D56FCFBC14278A2A009C13B6E4AC7460B54D2C7EF38D72AC450540097D2AF609D3FFF874D14582FA8FF21027DEC92844BD22A9A7EC14C66BCC8DB1E058B95AF87ACB60A5725767A76C9185744E483BCCD9278ED9FF15A04061D0F6E32D98B6853A39AA498673C7DD012982B1913B3C3CE2C7080ED7F9CFB 17620111006035941 2 6 100 8191 2 DC1D85A42DE4C80C1455C33938AC46F508FDBE197DF8FE8BDF59E1C8A231B1624DEDB6646D1DC4261826F11473EF3339E6B5B0303106815477E91C136E9B3EBC68397ED71BF54892DE86E5F72D23EACCB5C3D16565453F58D3DCFA28A812D11A540D1B38C29DA6531CC43F08F655E067A16248391F7AE8C506E02AF15754DAB728C250C13EAD01CFEBFAFF7480D7BF4ACC079244346B781DE51F864C830647165532155A85DA9A3AAE48EA9EF5287208F249E4C54EEF46522F2762EB44CAC8D58929DB658AB4BD9C69EEDAFF63CD7808D59DF9018779240959A43FC2FC40D55C2E12C60CFCA55DD4502BC7E3F799DBDB199CC5DC3B39825A443F33A0CFDBE157251978A986CE9208369360C26E99631E740805A73E24B0B95CFB3F7794E1D874C031FEAC1D5993FD260148BA9CFC24640A4AD34A5AB89838B24D7205E1C595618ED497BACBB4B3278454F04525AFF3FD9FC838851F50B819AF80CDF922255F86F480F9D3F37AD1196446F37801E9B98507228C649D5FF908292CFE5D0392A4E98BB77012C9D13D2CB6B94122526C4BA893A94F0D60ADBE4EDA7117AB65CDE8B3A0ED3E19301C1BA65CEF6B4080E86696F729C876CCDC403B7ED070B1BD11CD114B6FD05FA7FC7323DC5EB03AEF10CD74D9DF3548E8E7895DF418C10E97BA6D08A28EF05BFA9086F35B0A131F91B6B905C01E2CFBB6917694DF3996E4417391127BB032EB2490589B5ACFE46D689C84CAD47A0C4FD47CDAF7174B284AF05518A930E60E95DF7B07F40545EC5DF700587A42493A3BDCDB23AC834A762122C91B1E9EB303EA372D6FCA20A4BA33514B245D109805A00575E60AAA5269F6ED9B32D5794D45127D5273F4CCE7469724ED8DBAD208B501F39A2941C4F487356C6131D3C4EF02DA616F0BF39D114C92054C98FC5AE5AFEE146BBD1466E90BF81352D6B28F40E4411A7AA22D49D824A0972E3F202EDDE7AEAB34D7271CED7529E123A810CED480EAA077CD45AE6F4BBEE477CC78C5D8B54ED2531E60C9516DCB84ABD210277D2E6A1CB2F70914447ED7BE54B7081CB3A0B9FD50BDE2396DACEF196AB03D0FB6A73C0C106630E82E5F58BE2F1A94236A3B3BC1F2704CF4B59D08D1C4CDEA9A3F4C9A4856349A7AA8146F25A1AA335C60F798007FCCA3C53DCC88090B28BAEAAA9E232625A3DEE44E4DE7E0B262B02CAD4C7C03CD866F78A60798037EA9463CDEFB58F85547AF9D9D38D7B5E265F9B111BDC579E352699B766135CC148E054A8F1D22974414B86B31DF58D55AEF1780FF911154ED5B6CA0E16B2764D4E00C3A2489381953649EBCEC78541DC62663E1B38EB3B6CF791B6393137D91F4C5FE6625DFB9630C2198D78477C2A7C07C5DD8320BC8EB7C1FDD4C2D65BF3F3059FF9194EA87892C311EA1B1CF9345DF144D82EFF4A3C62EDA8E977535B83D6C86CB
17720040311222059 2 6 100 6143 5 E95A4131F86234D27EE1E51791599559EEDB618912E4FE36B81B80CDA4D497959DBFAEE929317A66BE64A328BAB6183EA5A5CBB3581490B4B613B225ADD00EFD38540356E0F4716229CDDB260283AF044FDAF1EF9248BB0CE9031C117CF15D3259B3E7B0301CA1AAC91AFA7A57CCDEED2DA4EFC2DBC7A9FC53BB4D3CB2D57D209D5DDEF25DE14F8226404296BD504EC14F6340F0AA2A1A943B9552C4B91D3EB48C08A13671C36EE5042857625DD2CB58965C0975EB775057FF82BC2B8B69D0BF26E2F80115B3E1A984D1D73D9D02AD69C3A1AF90EC915DE6FC9F574BD755B2EF6BBE62F3717E128DC797A06FE35C1C28CED57A0F64F61A4439ACFE7A7B95A1A948417A5B8B69916A32989B00E2C3FB7C74139A4DA9E533C439E59FC7C4F90780D2BBCDF012C499C15A1E0B5C318F84FB17DF97AB3EC356FD0072CFA3884EFBED319009DE6DBF2A5C7C87A93DEB04CCD9147EF8C9BEC2FD713793E4F0BF8C4EFCEBFBF95D555E523AB5D742808C4E425979A1C216C8CB2B42C7715B8CA5907E84E6FBC35DA7BFBFC892870B659C882C6E3697E0DCC6C24771F26D51A890786DA516DBC2D161680B134F1715B32F734E667650398EC2241AF78877BB3D61D83D0158DDE894862EE6E1BEE278724EA7B34C74F0A5D6B7F79F1322E20AD5757E11D9AC31BFE27C56ABB23A275130533433DC41DDBA1081E3A018E0D0B55DF33ECAE104909DC74F1CA2256CFD423A859B0AC2112A0AE684396C0029AD07D0D30AC84FFD2C2E80B74DE29310FCAFE7D0CB8864729B6FD1F86052D7DD9A9CB085A186259A67C175B3F81C5DA19AFED1BF9C5C07F40A29ED47ED4F1C7DE878B8411E3239ED15AC0E4CCC1D7F8842E9FD9C989F301E2689F800C3D14A38810906A36EEA34207014E99C843C599D56FCFBC14278A2A009C13B6E4AC7460B54D2C7EF38D72AC450540097D2AF609D3FFF874D14582FA8FF21027DEC92844BD22A9A7EC14C66BCC8DB1E058B95AF87ACB60A5725767A76C9185744E483BCCD9278ED9FF15A04061D0F6E32D98B6853A39AA498673C7DD012982B1913B3C3CE2C7080F103209F 17720111006044651 2 6 100 8191 5 DC1D85A42DE4C80C1455C33938AC46F508FDBE197DF8FE8BDF59E1C8A231B1624DEDB6646D1DC4261826F11473EF3339E6B5B0303106815477E91C136E9B3EBC68397ED71BF54892DE86E5F72D23EACCB5C3D16565453F58D3DCFA28A812D11A540D1B38C29DA6531CC43F08F655E067A16248391F7AE8C506E02AF15754DAB728C250C13EAD01CFEBFAFF7480D7BF4ACC079244346B781DE51F864C830647165532155A85DA9A3AAE48EA9EF5287208F249E4C54EEF46522F2762EB44CAC8D58929DB658AB4BD9C69EEDAFF63CD7808D59DF9018779240959A43FC2FC40D55C2E12C60CFCA55DD4502BC7E3F799DBDB199CC5DC3B39825A443F33A0CFDBE157251978A986CE9208369360C26E99631E740805A73E24B0B95CFB3F7794E1D874C031FEAC1D5993FD260148BA9CFC24640A4AD34A5AB89838B24D7205E1C595618ED497BACBB4B3278454F04525AFF3FD9FC838851F50B819AF80CDF922255F86F480F9D3F37AD1196446F37801E9B98507228C649D5FF908292CFE5D0392A4E98BB77012C9D13D2CB6B94122526C4BA893A94F0D60ADBE4EDA7117AB65CDE8B3A0ED3E19301C1BA65CEF6B4080E86696F729C876CCDC403B7ED070B1BD11CD114B6FD05FA7FC7323DC5EB03AEF10CD74D9DF3548E8E7895DF418C10E97BA6D08A28EF05BFA9086F35B0A131F91B6B905C01E2CFBB6917694DF3996E4417391127BB032EB2490589B5ACFE46D689C84CAD47A0C4FD47CDAF7174B284AF05518A930E60E95DF7B07F40545EC5DF700587A42493A3BDCDB23AC834A762122C91B1E9EB303EA372D6FCA20A4BA33514B245D109805A00575E60AAA5269F6ED9B32D5794D45127D5273F4CCE7469724ED8DBAD208B501F39A2941C4F487356C6131D3C4EF02DA616F0BF39D114C92054C98FC5AE5AFEE146BBD1466E90BF81352D6B28F40E4411A7AA22D49D824A0972E3F202EDDE7AEAB34D7271CED7529E123A810CED480EAA077CD45AE6F4BBEE477CC78C5D8B54ED2531E60C9516DCB84ABD210277D2E6A1CB2F70914447ED7BE54B7081CB3A0B9FD50BDE2396DACEF196AB03D0FB6A73C0C106630E82E5F58BE2F1A94236A3B3BC1F2704CF4B59D08D1C4CDEA9A3F4C9A4856349A7AA8146F25A1AA335C60F798007FCCA3C53DCC88090B28BAEAAA9E232625A3DEE44E4DE7E0B262B02CAD4C7C03CD866F78A60798037EA9463CDEFB58F85547AF9D9D38D7B5E265F9B111BDC579E352699B766135CC148E054A8F1D22974414B86B31DF58D55AEF1780FF911154ED5B6CA0E16B2764D4E00C3A2489381953649EBCEC78541DC62663E1B38EB3B6CF791B6393137D91F4C5FE6625DFB9630C2198D78477C2A7C07C5DD8320BC8EB7C1FDD4C2D65BF3F3059FF9194EA87892C311EA1B1CF9345DF144D82EFF4A3C62EDA8E977535B83E2EC20F
17820040312160304 2 6 100 6143 2 E95A4131F86234D27EE1E51791599559EEDB618912E4FE36B81B80CDA4D497959DBFAEE929317A66BE64A328BAB6183EA5A5CBB3581490B4B613B225ADD00EFD38540356E0F4716229CDDB260283AF044FDAF1EF9248BB0CE9031C117CF15D3259B3E7B0301CA1AAC91AFA7A57CCDEED2DA4EFC2DBC7A9FC53BB4D3CB2D57D209D5DDEF25DE14F8226404296BD504EC14F6340F0AA2A1A943B9552C4B91D3EB48C08A13671C36EE5042857625DD2CB58965C0975EB775057FF82BC2B8B69D0BF26E2F80115B3E1A984D1D73D9D02AD69C3A1AF90EC915DE6FC9F574BD755B2EF6BBE62F3717E128DC797A06FE35C1C28CED57A0F64F61A4439ACFE7A7B95A1A948417A5B8B69916A32989B00E2C3FB7C74139A4DA9E533C439E59FC7C4F90780D2BBCDF012C499C15A1E0B5C318F84FB17DF97AB3EC356FD0072CFA3884EFBED319009DE6DBF2A5C7C87A93DEB04CCD9147EF8C9BEC2FD713793E4F0BF8C4EFCEBFBF95D555E523AB5D742808C4E425979A1C216C8CB2B42C7715B8CA5907E84E6FBC35DA7BFBFC892870B659C882C6E3697E0DCC6C24771F26D51A890786DA516DBC2D161680B134F1715B32F734E667650398EC2241AF78877BB3D61D83D0158DDE894862EE6E1BEE278724EA7B34C74F0A5D6B7F79F1322E20AD5757E11D9AC31BFE27C56ABB23A275130533433DC41DDBA1081E3A018E0D0B55DF33ECAE104909DC74F1CA2256CFD423A859B0AC2112A0AE684396C0029AD07D0D30AC84FFD2C2E80B74DE29310FCAFE7D0CB8864729B6FD1F86052D7DD9A9CB085A186259A67C175B3F81C5DA19AFED1BF9C5C07F40A29ED47ED4F1C7DE878B8411E3239ED15AC0E4CCC1D7F8842E9FD9C989F301E2689F800C3D14A38810906A36EEA34207014E99C843C599D56FCFBC14278A2A009C13B6E4AC7460B54D2C7EF38D72AC450540097D2AF609D3FFF874D14582FA8FF21027DEC92844BD22A9A7EC14C66BCC8DB1E058B95AF87ACB60A5725767A76C9185744E483BCCD9278ED9FF15A04061D0F6E32D98B6853A39AA498673C7DD012982B1913B3C3CE2C7080F247861B 17820111006062727 2 6 100 8191 2 DC1D85A42DE4C80C1455C33938AC46F508FDBE197DF8FE8BDF59E1C8A231B1624DEDB6646D1DC4261826F11473EF3339E6B5B0303106815477E91C136E9B3EBC68397ED71BF54892DE86E5F72D23EACCB5C3D16565453F58D3DCFA28A812D11A540D1B38C29DA6531CC43F08F655E067A16248391F7AE8C506E02AF15754DAB728C250C13EAD01CFEBFAFF7480D7BF4ACC079244346B781DE51F864C830647165532155A85DA9A3AAE48EA9EF5287208F249E4C54EEF46522F2762EB44CAC8D58929DB658AB4BD9C69EEDAFF63CD7808D59DF9018779240959A43FC2FC40D55C2E12C60CFCA55DD4502BC7E3F799DBDB199CC5DC3B39825A443F33A0CFDBE157251978A986CE9208369360C26E99631E740805A73E24B0B95CFB3F7794E1D874C031FEAC1D5993FD260148BA9CFC24640A4AD34A5AB89838B24D7205E1C595618ED497BACBB4B3278454F04525AFF3FD9FC838851F50B819AF80CDF922255F86F480F9D3F37AD1196446F37801E9B98507228C649D5FF908292CFE5D0392A4E98BB77012C9D13D2CB6B94122526C4BA893A94F0D60ADBE4EDA7117AB65CDE8B3A0ED3E19301C1BA65CEF6B4080E86696F729C876CCDC403B7ED070B1BD11CD114B6FD05FA7FC7323DC5EB03AEF10CD74D9DF3548E8E7895DF418C10E97BA6D08A28EF05BFA9086F35B0A131F91B6B905C01E2CFBB6917694DF3996E4417391127BB032EB2490589B5ACFE46D689C84CAD47A0C4FD47CDAF7174B284AF05518A930E60E95DF7B07F40545EC5DF700587A42493A3BDCDB23AC834A762122C91B1E9EB303EA372D6FCA20A4BA33514B245D109805A00575E60AAA5269F6ED9B32D5794D45127D5273F4CCE7469724ED8DBAD208B501F39A2941C4F487356C6131D3C4EF02DA616F0BF39D114C92054C98FC5AE5AFEE146BBD1466E90BF81352D6B28F40E4411A7AA22D49D824A0972E3F202EDDE7AEAB34D7271CED7529E123A810CED480EAA077CD45AE6F4BBEE477CC78C5D8B54ED2531E60C9516DCB84ABD210277D2E6A1CB2F70914447ED7BE54B7081CB3A0B9FD50BDE2396DACEF196AB03D0FB6A73C0C106630E82E5F58BE2F1A94236A3B3BC1F2704CF4B59D08D1C4CDEA9A3F4C9A4856349A7AA8146F25A1AA335C60F798007FCCA3C53DCC88090B28BAEAAA9E232625A3DEE44E4DE7E0B262B02CAD4C7C03CD866F78A60798037EA9463CDEFB58F85547AF9D9D38D7B5E265F9B111BDC579E352699B766135CC148E054A8F1D22974414B86B31DF58D55AEF1780FF911154ED5B6CA0E16B2764D4E00C3A2489381953649EBCEC78541DC62663E1B38EB3B6CF791B6393137D91F4C5FE6625DFB9630C2198D78477C2A7C07C5DD8320BC8EB7C1FDD4C2D65BF3F3059FF9194EA87892C311EA1B1CF9345DF144D82EFF4A3C62EDA8E977535B83FD87D93
17920040312210904 2 6 100 6143 5 E95A4131F86234D27EE1E51791599559EEDB618912E4FE36B81B80CDA4D497959DBFAEE929317A66BE64A328BAB6183EA5A5CBB3581490B4B613B225ADD00EFD38540356E0F4716229CDDB260283AF044FDAF1EF9248BB0CE9031C117CF15D3259B3E7B0301CA1AAC91AFA7A57CCDEED2DA4EFC2DBC7A9FC53BB4D3CB2D57D209D5DDEF25DE14F8226404296BD504EC14F6340F0AA2A1A943B9552C4B91D3EB48C08A13671C36EE5042857625DD2CB58965C0975EB775057FF82BC2B8B69D0BF26E2F80115B3E1A984D1D73D9D02AD69C3A1AF90EC915DE6FC9F574BD755B2EF6BBE62F3717E128DC797A06FE35C1C28CED57A0F64F61A4439ACFE7A7B95A1A948417A5B8B69916A32989B00E2C3FB7C74139A4DA9E533C439E59FC7C4F90780D2BBCDF012C499C15A1E0B5C318F84FB17DF97AB3EC356FD0072CFA3884EFBED319009DE6DBF2A5C7C87A93DEB04CCD9147EF8C9BEC2FD713793E4F0BF8C4EFCEBFBF95D555E523AB5D742808C4E425979A1C216C8CB2B42C7715B8CA5907E84E6FBC35DA7BFBFC892870B659C882C6E3697E0DCC6C24771F26D51A890786DA516DBC2D161680B134F1715B32F734E667650398EC2241AF78877BB3D61D83D0158DDE894862EE6E1BEE278724EA7B34C74F0A5D6B7F79F1322E20AD5757E11D9AC31BFE27C56ABB23A275130533433DC41DDBA1081E3A018E0D0B55DF33ECAE104909DC74F1CA2256CFD423A859B0AC2112A0AE684396C0029AD07D0D30AC84FFD2C2E80B74DE29310FCAFE7D0CB8864729B6FD1F86052D7DD9A9CB085A186259A67C175B3F81C5DA19AFED1BF9C5C07F40A29ED47ED4F1C7DE878B8411E3239ED15AC0E4CCC1D7F8842E9FD9C989F301E2689F800C3D14A38810906A36EEA34207014E99C843C599D56FCFBC14278A2A009C13B6E4AC7460B54D2C7EF38D72AC450540097D2AF609D3FFF874D14582FA8FF21027DEC92844BD22A9A7EC14C66BCC8DB1E058B95AF87ACB60A5725767A76C9185744E483BCCD9278ED9FF15A04061D0F6E32D98B6853A39AA498673C7DD012982B1913B3C3CE2C7080F29D939F 17920111006134408 2 6 100 8191 2 DC1D85A42DE4C80C1455C33938AC46F508FDBE197DF8FE8BDF59E1C8A231B1624DEDB6646D1DC4261826F11473EF3339E6B5B0303106815477E91C136E9B3EBC68397ED71BF54892DE86E5F72D23EACCB5C3D16565453F58D3DCFA28A812D11A540D1B38C29DA6531CC43F08F655E067A16248391F7AE8C506E02AF15754DAB728C250C13EAD01CFEBFAFF7480D7BF4ACC079244346B781DE51F864C830647165532155A85DA9A3AAE48EA9EF5287208F249E4C54EEF46522F2762EB44CAC8D58929DB658AB4BD9C69EEDAFF63CD7808D59DF9018779240959A43FC2FC40D55C2E12C60CFCA55DD4502BC7E3F799DBDB199CC5DC3B39825A443F33A0CFDBE157251978A986CE9208369360C26E99631E740805A73E24B0B95CFB3F7794E1D874C031FEAC1D5993FD260148BA9CFC24640A4AD34A5AB89838B24D7205E1C595618ED497BACBB4B3278454F04525AFF3FD9FC838851F50B819AF80CDF922255F86F480F9D3F37AD1196446F37801E9B98507228C649D5FF908292CFE5D0392A4E98BB77012C9D13D2CB6B94122526C4BA893A94F0D60ADBE4EDA7117AB65CDE8B3A0ED3E19301C1BA65CEF6B4080E86696F729C876CCDC403B7ED070B1BD11CD114B6FD05FA7FC7323DC5EB03AEF10CD74D9DF3548E8E7895DF418C10E97BA6D08A28EF05BFA9086F35B0A131F91B6B905C01E2CFBB6917694DF3996E4417391127BB032EB2490589B5ACFE46D689C84CAD47A0C4FD47CDAF7174B284AF05518A930E60E95DF7B07F40545EC5DF700587A42493A3BDCDB23AC834A762122C91B1E9EB303EA372D6FCA20A4BA33514B245D109805A00575E60AAA5269F6ED9B32D5794D45127D5273F4CCE7469724ED8DBAD208B501F39A2941C4F487356C6131D3C4EF02DA616F0BF39D114C92054C98FC5AE5AFEE146BBD1466E90BF81352D6B28F40E4411A7AA22D49D824A0972E3F202EDDE7AEAB34D7271CED7529E123A810CED480EAA077CD45AE6F4BBEE477CC78C5D8B54ED2531E60C9516DCB84ABD210277D2E6A1CB2F70914447ED7BE54B7081CB3A0B9FD50BDE2396DACEF196AB03D0FB6A73C0C106630E82E5F58BE2F1A94236A3B3BC1F2704CF4B59D08D1C4CDEA9A3F4C9A4856349A7AA8146F25A1AA335C60F798007FCCA3C53DCC88090B28BAEAAA9E232625A3DEE44E4DE7E0B262B02CAD4C7C03CD866F78A60798037EA9463CDEFB58F85547AF9D9D38D7B5E265F9B111BDC579E352699B766135CC148E054A8F1D22974414B86B31DF58D55AEF1780FF911154ED5B6CA0E16B2764D4E00C3A2489381953649EBCEC78541DC62663E1B38EB3B6CF791B6393137D91F4C5FE6625DFB9630C2198D78477C2A7C07C5DD8320BC8EB7C1FDD4C2D65BF3F3059FF9194EA87892C311EA1B1CF9345DF144D82EFF4A3C62EDA8E977535B8472BC33B
18020040316074005 2 6 100 6143 2 E95A4131F86234D27EE1E51791599559EEDB618912E4FE36B81B80CDA4D497959DBFAEE929317A66BE64A328BAB6183EA5A5CBB3581490B4B613B225ADD00EFD38540356E0F4716229CDDB260283AF044FDAF1EF9248BB0CE9031C117CF15D3259B3E7B0301CA1AAC91AFA7A57CCDEED2DA4EFC2DBC7A9FC53BB4D3CB2D57D209D5DDEF25DE14F8226404296BD504EC14F6340F0AA2A1A943B9552C4B91D3EB48C08A13671C36EE5042857625DD2CB58965C0975EB775057FF82BC2B8B69D0BF26E2F80115B3E1A984D1D73D9D02AD69C3A1AF90EC915DE6FC9F574BD755B2EF6BBE62F3717E128DC797A06FE35C1C28CED57A0F64F61A4439ACFE7A7B95A1A948417A5B8B69916A32989B00E2C3FB7C74139A4DA9E533C439E59FC7C4F90780D2BBCDF012C499C15A1E0B5C318F84FB17DF97AB3EC356FD0072CFA3884EFBED319009DE6DBF2A5C7C87A93DEB04CCD9147EF8C9BEC2FD713793E4F0BF8C4EFCEBFBF95D555E523AB5D742808C4E425979A1C216C8CB2B42C7715B8CA5907E84E6FBC35DA7BFBFC892870B659C882C6E3697E0DCC6C24771F26D51A890786DA516DBC2D161680B134F1715B32F734E667650398EC2241AF78877BB3D61D83D0158DDE894862EE6E1BEE278724EA7B34C74F0A5D6B7F79F1322E20AD5757E11D9AC31BFE27C56ABB23A275130533433DC41DDBA1081E3A018E0D0B55DF33ECAE104909DC74F1CA2256CFD423A859B0AC2112A0AE684396C0029AD07D0D30AC84FFD2C2E80B74DE29310FCAFE7D0CB8864729B6FD1F86052D7DD9A9CB085A186259A67C175B3F81C5DA19AFED1BF9C5C07F40A29ED47ED4F1C7DE878B8411E3239ED15AC0E4CCC1D7F8842E9FD9C989F301E2689F800C3D14A38810906A36EEA34207014E99C843C599D56FCFBC14278A2A009C13B6E4AC7460B54D2C7EF38D72AC450540097D2AF609D3FFF874D14582FA8FF21027DEC92844BD22A9A7EC14C66BCC8DB1E058B95AF87ACB60A5725767A76C9185744E483BCCD9278ED9FF15A04061D0F6E32D98B6853A39AA498673C7DD012982B1913B3C3CE2C7080F8B1F7DB 18020111006170514 2 6 100 8191 2 DC1D85A42DE4C80C1455C33938AC46F508FDBE197DF8FE8BDF59E1C8A231B1624DEDB6646D1DC4261826F11473EF3339E6B5B0303106815477E91C136E9B3EBC68397ED71BF54892DE86E5F72D23EACCB5C3D16565453F58D3DCFA28A812D11A540D1B38C29DA6531CC43F08F655E067A16248391F7AE8C506E02AF15754DAB728C250C13EAD01CFEBFAFF7480D7BF4ACC079244346B781DE51F864C830647165532155A85DA9A3AAE48EA9EF5287208F249E4C54EEF46522F2762EB44CAC8D58929DB658AB4BD9C69EEDAFF63CD7808D59DF9018779240959A43FC2FC40D55C2E12C60CFCA55DD4502BC7E3F799DBDB199CC5DC3B39825A443F33A0CFDBE157251978A986CE9208369360C26E99631E740805A73E24B0B95CFB3F7794E1D874C031FEAC1D5993FD260148BA9CFC24640A4AD34A5AB89838B24D7205E1C595618ED497BACBB4B3278454F04525AFF3FD9FC838851F50B819AF80CDF922255F86F480F9D3F37AD1196446F37801E9B98507228C649D5FF908292CFE5D0392A4E98BB77012C9D13D2CB6B94122526C4BA893A94F0D60ADBE4EDA7117AB65CDE8B3A0ED3E19301C1BA65CEF6B4080E86696F729C876CCDC403B7ED070B1BD11CD114B6FD05FA7FC7323DC5EB03AEF10CD74D9DF3548E8E7895DF418C10E97BA6D08A28EF05BFA9086F35B0A131F91B6B905C01E2CFBB6917694DF3996E4417391127BB032EB2490589B5ACFE46D689C84CAD47A0C4FD47CDAF7174B284AF05518A930E60E95DF7B07F40545EC5DF700587A42493A3BDCDB23AC834A762122C91B1E9EB303EA372D6FCA20A4BA33514B245D109805A00575E60AAA5269F6ED9B32D5794D45127D5273F4CCE7469724ED8DBAD208B501F39A2941C4F487356C6131D3C4EF02DA616F0BF39D114C92054C98FC5AE5AFEE146BBD1466E90BF81352D6B28F40E4411A7AA22D49D824A0972E3F202EDDE7AEAB34D7271CED7529E123A810CED480EAA077CD45AE6F4BBEE477CC78C5D8B54ED2531E60C9516DCB84ABD210277D2E6A1CB2F70914447ED7BE54B7081CB3A0B9FD50BDE2396DACEF196AB03D0FB6A73C0C106630E82E5F58BE2F1A94236A3B3BC1F2704CF4B59D08D1C4CDEA9A3F4C9A4856349A7AA8146F25A1AA335C60F798007FCCA3C53DCC88090B28BAEAAA9E232625A3DEE44E4DE7E0B262B02CAD4C7C03CD866F78A60798037EA9463CDEFB58F85547AF9D9D38D7B5E265F9B111BDC579E352699B766135CC148E054A8F1D22974414B86B31DF58D55AEF1780FF911154ED5B6CA0E16B2764D4E00C3A2489381953649EBCEC78541DC62663E1B38EB3B6CF791B6393137D91F4C5FE6625DFB9630C2198D78477C2A7C07C5DD8320BC8EB7C1FDD4C2D65BF3F3059FF9194EA87892C311EA1B1CF9345DF144D82EFF4A3C62EDA8E977535B84A83002B
18120040317113309 2 6 100 6143 2 E95A4131F86234D27EE1E51791599559EEDB618912E4FE36B81B80CDA4D497959DBFAEE929317A66BE64A328BAB6183EA5A5CBB3581490B4B613B225ADD00EFD38540356E0F4716229CDDB260283AF044FDAF1EF9248BB0CE9031C117CF15D3259B3E7B0301CA1AAC91AFA7A57CCDEED2DA4EFC2DBC7A9FC53BB4D3CB2D57D209D5DDEF25DE14F8226404296BD504EC14F6340F0AA2A1A943B9552C4B91D3EB48C08A13671C36EE5042857625DD2CB58965C0975EB775057FF82BC2B8B69D0BF26E2F80115B3E1A984D1D73D9D02AD69C3A1AF90EC915DE6FC9F574BD755B2EF6BBE62F3717E128DC797A06FE35C1C28CED57A0F64F61A4439ACFE7A7B95A1A948417A5B8B69916A32989B00E2C3FB7C74139A4DA9E533C439E59FC7C4F90780D2BBCDF012C499C15A1E0B5C318F84FB17DF97AB3EC356FD0072CFA3884EFBED319009DE6DBF2A5C7C87A93DEB04CCD9147EF8C9BEC2FD713793E4F0BF8C4EFCEBFBF95D555E523AB5D742808C4E425979A1C216C8CB2B42C7715B8CA5907E84E6FBC35DA7BFBFC892870B659C882C6E3697E0DCC6C24771F26D51A890786DA516DBC2D161680B134F1715B32F734E667650398EC2241AF78877BB3D61D83D0158DDE894862EE6E1BEE278724EA7B34C74F0A5D6B7F79F1322E20AD5757E11D9AC31BFE27C56ABB23A275130533433DC41DDBA1081E3A018E0D0B55DF33ECAE104909DC74F1CA2256CFD423A859B0AC2112A0AE684396C0029AD07D0D30AC84FFD2C2E80B74DE29310FCAFE7D0CB8864729B6FD1F86052D7DD9A9CB085A186259A67C175B3F81C5DA19AFED1BF9C5C07F40A29ED47ED4F1C7DE878B8411E3239ED15AC0E4CCC1D7F8842E9FD9C989F301E2689F800C3D14A38810906A36EEA34207014E99C843C599D56FCFBC14278A2A009C13B6E4AC7460B54D2C7EF38D72AC450540097D2AF609D3FFF874D14582FA8FF21027DEC92844BD22A9A7EC14C66BCC8DB1E058B95AF87ACB60A5725767A76C9185744E483BCCD9278ED9FF15A04061D0F6E32D98B6853A39AA498673C7DD012982B1913B3C3CE2C7080FAAE1F73 18120111006194118 2 6 100 8191 2 DC1D85A42DE4C80C1455C33938AC46F508FDBE197DF8FE8BDF59E1C8A231B1624DEDB6646D1DC4261826F11473EF3339E6B5B0303106815477E91C136E9B3EBC68397ED71BF54892DE86E5F72D23EACCB5C3D16565453F58D3DCFA28A812D11A540D1B38C29DA6531CC43F08F655E067A16248391F7AE8C506E02AF15754DAB728C250C13EAD01CFEBFAFF7480D7BF4ACC079244346B781DE51F864C830647165532155A85DA9A3AAE48EA9EF5287208F249E4C54EEF46522F2762EB44CAC8D58929DB658AB4BD9C69EEDAFF63CD7808D59DF9018779240959A43FC2FC40D55C2E12C60CFCA55DD4502BC7E3F799DBDB199CC5DC3B39825A443F33A0CFDBE157251978A986CE9208369360C26E99631E740805A73E24B0B95CFB3F7794E1D874C031FEAC1D5993FD260148BA9CFC24640A4AD34A5AB89838B24D7205E1C595618ED497BACBB4B3278454F04525AFF3FD9FC838851F50B819AF80CDF922255F86F480F9D3F37AD1196446F37801E9B98507228C649D5FF908292CFE5D0392A4E98BB77012C9D13D2CB6B94122526C4BA893A94F0D60ADBE4EDA7117AB65CDE8B3A0ED3E19301C1BA65CEF6B4080E86696F729C876CCDC403B7ED070B1BD11CD114B6FD05FA7FC7323DC5EB03AEF10CD74D9DF3548E8E7895DF418C10E97BA6D08A28EF05BFA9086F35B0A131F91B6B905C01E2CFBB6917694DF3996E4417391127BB032EB2490589B5ACFE46D689C84CAD47A0C4FD47CDAF7174B284AF05518A930E60E95DF7B07F40545EC5DF700587A42493A3BDCDB23AC834A762122C91B1E9EB303EA372D6FCA20A4BA33514B245D109805A00575E60AAA5269F6ED9B32D5794D45127D5273F4CCE7469724ED8DBAD208B501F39A2941C4F487356C6131D3C4EF02DA616F0BF39D114C92054C98FC5AE5AFEE146BBD1466E90BF81352D6B28F40E4411A7AA22D49D824A0972E3F202EDDE7AEAB34D7271CED7529E123A810CED480EAA077CD45AE6F4BBEE477CC78C5D8B54ED2531E60C9516DCB84ABD210277D2E6A1CB2F70914447ED7BE54B7081CB3A0B9FD50BDE2396DACEF196AB03D0FB6A73C0C106630E82E5F58BE2F1A94236A3B3BC1F2704CF4B59D08D1C4CDEA9A3F4C9A4856349A7AA8146F25A1AA335C60F798007FCCA3C53DCC88090B28BAEAAA9E232625A3DEE44E4DE7E0B262B02CAD4C7C03CD866F78A60798037EA9463CDEFB58F85547AF9D9D38D7B5E265F9B111BDC579E352699B766135CC148E054A8F1D22974414B86B31DF58D55AEF1780FF911154ED5B6CA0E16B2764D4E00C3A2489381953649EBCEC78541DC62663E1B38EB3B6CF791B6393137D91F4C5FE6625DFB9630C2198D78477C2A7C07C5DD8320BC8EB7C1FDD4C2D65BF3F3059FF9194EA87892C311EA1B1CF9345DF144D82EFF4A3C62EDA8E977535B84D0AC8C3
18220040317195246 2 6 100 6143 2 E95A4131F86234D27EE1E51791599559EEDB618912E4FE36B81B80CDA4D497959DBFAEE929317A66BE64A328BAB6183EA5A5CBB3581490B4B613B225ADD00EFD38540356E0F4716229CDDB260283AF044FDAF1EF9248BB0CE9031C117CF15D3259B3E7B0301CA1AAC91AFA7A57CCDEED2DA4EFC2DBC7A9FC53BB4D3CB2D57D209D5DDEF25DE14F8226404296BD504EC14F6340F0AA2A1A943B9552C4B91D3EB48C08A13671C36EE5042857625DD2CB58965C0975EB775057FF82BC2B8B69D0BF26E2F80115B3E1A984D1D73D9D02AD69C3A1AF90EC915DE6FC9F574BD755B2EF6BBE62F3717E128DC797A06FE35C1C28CED57A0F64F61A4439ACFE7A7B95A1A948417A5B8B69916A32989B00E2C3FB7C74139A4DA9E533C439E59FC7C4F90780D2BBCDF012C499C15A1E0B5C318F84FB17DF97AB3EC356FD0072CFA3884EFBED319009DE6DBF2A5C7C87A93DEB04CCD9147EF8C9BEC2FD713793E4F0BF8C4EFCEBFBF95D555E523AB5D742808C4E425979A1C216C8CB2B42C7715B8CA5907E84E6FBC35DA7BFBFC892870B659C882C6E3697E0DCC6C24771F26D51A890786DA516DBC2D161680B134F1715B32F734E667650398EC2241AF78877BB3D61D83D0158DDE894862EE6E1BEE278724EA7B34C74F0A5D6B7F79F1322E20AD5757E11D9AC31BFE27C56ABB23A275130533433DC41DDBA1081E3A018E0D0B55DF33ECAE104909DC74F1CA2256CFD423A859B0AC2112A0AE684396C0029AD07D0D30AC84FFD2C2E80B74DE29310FCAFE7D0CB8864729B6FD1F86052D7DD9A9CB085A186259A67C175B3F81C5DA19AFED1BF9C5C07F40A29ED47ED4F1C7DE878B8411E3239ED15AC0E4CCC1D7F8842E9FD9C989F301E2689F800C3D14A38810906A36EEA34207014E99C843C599D56FCFBC14278A2A009C13B6E4AC7460B54D2C7EF38D72AC450540097D2AF609D3FFF874D14582FA8FF21027DEC92844BD22A9A7EC14C66BCC8DB1E058B95AF87ACB60A5725767A76C9185744E483BCCD9278ED9FF15A04061D0F6E32D98B6853A39AA498673C7DD012982B1913B3C3CE2C7080FB3F2B93
18320040319025848 2 6 100 6143 2 E95A4131F86234D27EE1E51791599559EEDB618912E4FE36B81B80CDA4D497959DBFAEE929317A66BE64A328BAB6183EA5A5CBB3581490B4B613B225ADD00EFD38540356E0F4716229CDDB260283AF044FDAF1EF9248BB0CE9031C117CF15D3259B3E7B0301CA1AAC91AFA7A57CCDEED2DA4EFC2DBC7A9FC53BB4D3CB2D57D209D5DDEF25DE14F8226404296BD504EC14F6340F0AA2A1A943B9552C4B91D3EB48C08A13671C36EE5042857625DD2CB58965C0975EB775057FF82BC2B8B69D0BF26E2F80115B3E1A984D1D73D9D02AD69C3A1AF90EC915DE6FC9F574BD755B2EF6BBE62F3717E128DC797A06FE35C1C28CED57A0F64F61A4439ACFE7A7B95A1A948417A5B8B69916A32989B00E2C3FB7C74139A4DA9E533C439E59FC7C4F90780D2BBCDF012C499C15A1E0B5C318F84FB17DF97AB3EC356FD0072CFA3884EFBED319009DE6DBF2A5C7C87A93DEB04CCD9147EF8C9BEC2FD713793E4F0BF8C4EFCEBFBF95D555E523AB5D742808C4E425979A1C216C8CB2B42C7715B8CA5907E84E6FBC35DA7BFBFC892870B659C882C6E3697E0DCC6C24771F26D51A890786DA516DBC2D161680B134F1715B32F734E667650398EC2241AF78877BB3D61D83D0158DDE894862EE6E1BEE278724EA7B34C74F0A5D6B7F79F1322E20AD5757E11D9AC31BFE27C56ABB23A275130533433DC41DDBA1081E3A018E0D0B55DF33ECAE104909DC74F1CA2256CFD423A859B0AC2112A0AE684396C0029AD07D0D30AC84FFD2C2E80B74DE29310FCAFE7D0CB8864729B6FD1F86052D7DD9A9CB085A186259A67C175B3F81C5DA19AFED1BF9C5C07F40A29ED47ED4F1C7DE878B8411E3239ED15AC0E4CCC1D7F8842E9FD9C989F301E2689F800C3D14A38810906A36EEA34207014E99C843C599D56FCFBC14278A2A009C13B6E4AC7460B54D2C7EF38D72AC450540097D2AF609D3FFF874D14582FA8FF21027DEC92844BD22A9A7EC14C66BCC8DB1E058B95AF87ACB60A5725767A76C9185744E483BCCD9278ED9FF15A04061D0F6E32D98B6853A39AA498673C7DD012982B1913B3C3CE2C7080FD81741B
18420040323194658 2 6 100 6143 5 E95A4131F86234D27EE1E51791599559EEDB618912E4FE36B81B80CDA4D497959DBFAEE929317A66BE64A328BAB6183EA5A5CBB3581490B4B613B225ADD00EFD38540356E0F4716229CDDB260283AF044FDAF1EF9248BB0CE9031C117CF15D3259B3E7B0301CA1AAC91AFA7A57CCDEED2DA4EFC2DBC7A9FC53BB4D3CB2D57D209D5DDEF25DE14F8226404296BD504EC14F6340F0AA2A1A943B9552C4B91D3EB48C08A13671C36EE5042857625DD2CB58965C0975EB775057FF82BC2B8B69D0BF26E2F80115B3E1A984D1D73D9D02AD69C3A1AF90EC915DE6FC9F574BD755B2EF6BBE62F3717E128DC797A06FE35C1C28CED57A0F64F61A4439ACFE7A7B95A1A948417A5B8B69916A32989B00E2C3FB7C74139A4DA9E533C439E59FC7C4F90780D2BBCDF012C499C15A1E0B5C318F84FB17DF97AB3EC356FD0072CFA3884EFBED319009DE6DBF2A5C7C87A93DEB04CCD9147EF8C9BEC2FD713793E4F0BF8C4EFCEBFBF95D555E523AB5D742808C4E425979A1C216C8CB2B42C7715B8CA5907E84E6FBC35DA7BFBFC892870B659C882C6E3697E0DCC6C24771F26D51A890786DA516DBC2D161680B134F1715B32F734E667650398EC2241AF78877BB3D61D83D0158DDE894862EE6E1BEE278724EA7B34C74F0A5D6B7F79F1322E20AD5757E11D9AC31BFE27C56ABB23A275130533433DC41DDBA1081E3A018E0D0B55DF33ECAE104909DC74F1CA2256CFD423A859B0AC2112A0AE684396C0029AD07D0D30AC84FFD2C2E80B74DE29310FCAFE7D0CB8864729B6FD1F86052D7DD9A9CB085A186259A67C175B3F81C5DA19AFED1BF9C5C07F40A29ED47ED4F1C7DE878B8411E3239ED15AC0E4CCC1D7F8842E9FD9C989F301E2689F800C3D14A38810906A36EEA34207014E99C843C599D56FCFBC14278A2A009C13B6E4AC7460B54D2C7EF38D72AC450540097D2AF609D3FFF874D14582FA8FF21027DEC92844BD22A9A7EC14C66BCC8DB1E058B95AF87ACB60A5725767A76C9185744E483BCCD9278ED9FF15A04061D0F6E32D98B6853A39AA498673C7DD012982B1913B3C3CE2C708105AF04AF
18520040324041535 2 6 100 6143 5 E95A4131F86234D27EE1E51791599559EEDB618912E4FE36B81B80CDA4D497959DBFAEE929317A66BE64A328BAB6183EA5A5CBB3581490B4B613B225ADD00EFD38540356E0F4716229CDDB260283AF044FDAF1EF9248BB0CE9031C117CF15D3259B3E7B0301CA1AAC91AFA7A57CCDEED2DA4EFC2DBC7A9FC53BB4D3CB2D57D209D5DDEF25DE14F8226404296BD504EC14F6340F0AA2A1A943B9552C4B91D3EB48C08A13671C36EE5042857625DD2CB58965C0975EB775057FF82BC2B8B69D0BF26E2F80115B3E1A984D1D73D9D02AD69C3A1AF90EC915DE6FC9F574BD755B2EF6BBE62F3717E128DC797A06FE35C1C28CED57A0F64F61A4439ACFE7A7B95A1A948417A5B8B69916A32989B00E2C3FB7C74139A4DA9E533C439E59FC7C4F90780D2BBCDF012C499C15A1E0B5C318F84FB17DF97AB3EC356FD0072CFA3884EFBED319009DE6DBF2A5C7C87A93DEB04CCD9147EF8C9BEC2FD713793E4F0BF8C4EFCEBFBF95D555E523AB5D742808C4E425979A1C216C8CB2B42C7715B8CA5907E84E6FBC35DA7BFBFC892870B659C882C6E3697E0DCC6C24771F26D51A890786DA516DBC2D161680B134F1715B32F734E667650398EC2241AF78877BB3D61D83D0158DDE894862EE6E1BEE278724EA7B34C74F0A5D6B7F79F1322E20AD5757E11D9AC31BFE27C56ABB23A275130533433DC41DDBA1081E3A018E0D0B55DF33ECAE104909DC74F1CA2256CFD423A859B0AC2112A0AE684396C0029AD07D0D30AC84FFD2C2E80B74DE29310FCAFE7D0CB8864729B6FD1F86052D7DD9A9CB085A186259A67C175B3F81C5DA19AFED1BF9C5C07F40A29ED47ED4F1C7DE878B8411E3239ED15AC0E4CCC1D7F8842E9FD9C989F301E2689F800C3D14A38810906A36EEA34207014E99C843C599D56FCFBC14278A2A009C13B6E4AC7460B54D2C7EF38D72AC450540097D2AF609D3FFF874D14582FA8FF21027DEC92844BD22A9A7EC14C66BCC8DB1E058B95AF87ACB60A5725767A76C9185744E483BCCD9278ED9FF15A04061D0F6E32D98B6853A39AA498673C7DD012982B1913B3C3CE2C70810643E737
18620061002171426 2 6 100 8191 2 D2D64D8CC6FDFA9897C8AE805EA7CB972D7A10F5A268EB5B33B0CCE2C75E480365A49070185D8B316872BAF0F3AAF94498A8E0007A13D574C905441F19D4B0D55A83E2A70C09F7B3E353DEA76F5FEB4191E31F4A52D0BC643B9FD1959BDF8B99C13F245B5D9E8589D6C18A844814486F25A8E189B964A9E72675DDE4D759C901C09F7C24CB3E939B54D2009AE9331446C1EDE5FA9D0A33B36F6A6C9B55E956A94169FBE9C1A24EC9A3E497371F4131F2B1E4FB25A1BB27B23A6661155F37C6EC913E5CB207AD894C2319852C556CA040C6B72DE6E913BCF419E5914507119F771206FAB25B1D6BAD57AFEAF74D807CC576549CD979B0AAC13F5D2B637CCF4A54D2D903A4B29C16B9E8BEE8AD6200D24E4E3E97EB25B2DD13C31AE2A4F27D6EFBFA113F9334F92204FCFFCAA5EBDCCBA986C5B6E665FE71D6654ACA3C8051424133597FD65A18BB2AA24FFDD8B09A8758D984E09BE1F55B16A37B36B058295B1E9942A89D386D4B4DB58C516429248052D97DE42BFC32AB14F13D7F963E86867B8B7245062061C9F315EA94C38FCC0E118373BEFC41D1004CF0FA6D951E20BAC5D2C15F5796163469B88A75FE5F5D2C69C949DA47DAC75D22869F37FAB2490791FA5A5854360EAA13701CEE40EC371797272A12746ABA9CB303224B82F8CCE3F62C0D3EA0D62BF3B2C387E015B1A96A4C4A2A73ADA521B0536B81A536A5119EC559D524BA7F2B25A094A164A4EEBB8ADA886DCBA9647FC4D2D4A91BA0DB32805EDA75B61E09F44BC49862D70B8F28C8E630CD6F0DF245535D79DCD75ECBDE51B29AA6DD3F59736E5028E3AB1E75CFCDA1FF9E6F8D52027A4BC218FC9A9E660BF7EB14D300F4199C04B24725405AFA6535DF0837FEF33C0F8B57B9BDFFB1D956E7B40E822FF40603FB5417523B115FE5864094001CEF2526395C19532F153C4630B95E9835FAC985E1C9DF62188DBA12D5B8BEEB414FFD90AFEDF8F986DF33EF5BC7F7C16ACDC4D40A00822CE17A9724066EED89127195BB9D037CB7FB74AA7178A1A4CBECC5D9F67747AA74156C70E54BABA8641A55B93637385A0D1D56E5220867B5A11ED44CFC405AC238DC39690A966A2DE238FFA1E3B3C859D988DE14916C32AB2A2CB35C57F3609C34F1E8E4B5FAC2F446E0EB78CFD64DD7A3570677D373E8FEC6FF47D5471577D92F22B115D03F302C8CD1A43FCDCEBBA823EE942D7733FF7F78672BEAACCEA279744CC14D60E3912E81A14421989CF5B2C10FD1CDB6CA95E2CA8C574AA6C4F3856602A0D32A9978697752878C0DCB50EF5463EE61C83F776AB9D8098755AF00D2972D3E5E502C39A9CE52C8588472C1D3242CA658290F472D48CB0876752643C2F63CFEB66DF6E93C8BE2404DFA10AB3D8EEF214C371DC0EC29755C086574B1AA92A892B517F6E01056DD5EFEB2437E23100E487E3D4B
18720061005090403 2 6 100 8191 5 D2D64D8CC6FDFA9897C8AE805EA7CB972D7A10F5A268EB5B33B0CCE2C75E480365A49070185D8B316872BAF0F3AAF94498A8E0007A13D574C905441F19D4B0D55A83E2A70C09F7B3E353DEA76F5FEB4191E31F4A52D0BC643B9FD1959BDF8B99C13F245B5D9E8589D6C18A844814486F25A8E189B964A9E72675DDE4D759C901C09F7C24CB3E939B54D2009AE9331446C1EDE5FA9D0A33B36F6A6C9B55E956A94169FBE9C1A24EC9A3E497371F4131F2B1E4FB25A1BB27B23A6661155F37C6EC913E5CB207AD894C2319852C556CA040C6B72DE6E913BCF419E5914507119F771206FAB25B1D6BAD57AFEAF74D807CC576549CD979B0AAC13F5D2B637CCF4A54D2D903A4B29C16B9E8BEE8AD6200D24E4E3E97EB25B2DD13C31AE2A4F27D6EFBFA113F9334F92204FCFFCAA5EBDCCBA986C5B6E665FE71D6654ACA3C8051424133597FD65A18BB2AA24FFDD8B09A8758D984E09BE1F55B16A37B36B058295B1E9942A89D386D4B4DB58C516429248052D97DE42BFC32AB14F13D7F963E86867B8B7245062061C9F315EA94C38FCC0E118373BEFC41D1004CF0FA6D951E20BAC5D2C15F5796163469B88A75FE5F5D2C69C949DA47DAC75D22869F37FAB2490791FA5A5854360EAA13701CEE40EC371797272A12746ABA9CB303224B82F8CCE3F62C0D3EA0D62BF3B2C387E015B1A96A4C4A2A73ADA521B0536B81A536A5119EC559D524BA7F2B25A094A164A4EEBB8ADA886DCBA9647FC4D2D4A91BA0DB32805EDA75B61E09F44BC49862D70B8F28C8E630CD6F0DF245535D79DCD75ECBDE51B29AA6DD3F59736E5028E3AB1E75CFCDA1FF9E6F8D52027A4BC218FC9A9E660BF7EB14D300F4199C04B24725405AFA6535DF0837FEF33C0F8B57B9BDFFB1D956E7B40E822FF40603FB5417523B115FE5864094001CEF2526395C19532F153C4630B95E9835FAC985E1C9DF62188DBA12D5B8BEEB414FFD90AFEDF8F986DF33EF5BC7F7C16ACDC4D40A00822CE17A9724066EED89127195BB9D037CB7FB74AA7178A1A4CBECC5D9F67747AA74156C70E54BABA8641A55B93637385A0D1D56E5220867B5A11ED44CFC405AC238DC39690A966A2DE238FFA1E3B3C859D988DE14916C32AB2A2CB35C57F3609C34F1E8E4B5FAC2F446E0EB78CFD64DD7A3570677D373E8FEC6FF47D5471577D92F22B115D03F302C8CD1A43FCDCEBBA823EE942D7733FF7F78672BEAACCEA279744CC14D60E3912E81A14421989CF5B2C10FD1CDB6CA95E2CA8C574AA6C4F3856602A0D32A9978697752878C0DCB50EF5463EE61C83F776AB9D8098755AF00D2972D3E5E502C39A9CE52C8588472C1D3242CA658290F472D48CB0876752643C2F63CFEB66DF6E93C8BE2404DFA10AB3D8EEF214C371DC0EC29755C086574B1AA92A892B517F6E01056DD5EFEB2437E23100E4A242A2F
18820061005152228 2 6 100 8191 2 D2D64D8CC6FDFA9897C8AE805EA7CB972D7A10F5A268EB5B33B0CCE2C75E480365A49070185D8B316872BAF0F3AAF94498A8E0007A13D574C905441F19D4B0D55A83E2A70C09F7B3E353DEA76F5FEB4191E31F4A52D0BC643B9FD1959BDF8B99C13F245B5D9E8589D6C18A844814486F25A8E189B964A9E72675DDE4D759C901C09F7C24CB3E939B54D2009AE9331446C1EDE5FA9D0A33B36F6A6C9B55E956A94169FBE9C1A24EC9A3E497371F4131F2B1E4FB25A1BB27B23A6661155F37C6EC913E5CB207AD894C2319852C556CA040C6B72DE6E913BCF419E5914507119F771206FAB25B1D6BAD57AFEAF74D807CC576549CD979B0AAC13F5D2B637CCF4A54D2D903A4B29C16B9E8BEE8AD6200D24E4E3E97EB25B2DD13C31AE2A4F27D6EFBFA113F9334F92204FCFFCAA5EBDCCBA986C5B6E665FE71D6654ACA3C8051424133597FD65A18BB2AA24FFDD8B09A8758D984E09BE1F55B16A37B36B058295B1E9942A89D386D4B4DB58C516429248052D97DE42BFC32AB14F13D7F963E86867B8B7245062061C9F315EA94C38FCC0E118373BEFC41D1004CF0FA6D951E20BAC5D2C15F5796163469B88A75FE5F5D2C69C949DA47DAC75D22869F37FAB2490791FA5A5854360EAA13701CEE40EC371797272A12746ABA9CB303224B82F8CCE3F62C0D3EA0D62BF3B2C387E015B1A96A4C4A2A73ADA521B0536B81A536A5119EC559D524BA7F2B25A094A164A4EEBB8ADA886DCBA9647FC4D2D4A91BA0DB32805EDA75B61E09F44BC49862D70B8F28C8E630CD6F0DF245535D79DCD75ECBDE51B29AA6DD3F59736E5028E3AB1E75CFCDA1FF9E6F8D52027A4BC218FC9A9E660BF7EB14D300F4199C04B24725405AFA6535DF0837FEF33C0F8B57B9BDFFB1D956E7B40E822FF40603FB5417523B115FE5864094001CEF2526395C19532F153C4630B95E9835FAC985E1C9DF62188DBA12D5B8BEEB414FFD90AFEDF8F986DF33EF5BC7F7C16ACDC4D40A00822CE17A9724066EED89127195BB9D037CB7FB74AA7178A1A4CBECC5D9F67747AA74156C70E54BABA8641A55B93637385A0D1D56E5220867B5A11ED44CFC405AC238DC39690A966A2DE238FFA1E3B3C859D988DE14916C32AB2A2CB35C57F3609C34F1E8E4B5FAC2F446E0EB78CFD64DD7A3570677D373E8FEC6FF47D5471577D92F22B115D03F302C8CD1A43FCDCEBBA823EE942D7733FF7F78672BEAACCEA279744CC14D60E3912E81A14421989CF5B2C10FD1CDB6CA95E2CA8C574AA6C4F3856602A0D32A9978697752878C0DCB50EF5463EE61C83F776AB9D8098755AF00D2972D3E5E502C39A9CE52C8588472C1D3242CA658290F472D48CB0876752643C2F63CFEB66DF6E93C8BE2404DFA10AB3D8EEF214C371DC0EC29755C086574B1AA92A892B517F6E01056DD5EFEB2437E23100E4A4C3B0B
diff --git a/moduli.c b/moduli.c
index 2964a8b3d..973ee6288 100644
--- a/moduli.c
+++ b/moduli.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: moduli.c,v 1.22 2010/11/10 01:33:07 djm Exp $ */ 1/* $OpenBSD: moduli.c,v 1.25 2011/10/19 00:06:10 djm Exp $ */
2/* 2/*
3 * Copyright 1994 Phil Karn <karn@qualcomm.com> 3 * Copyright 1994 Phil Karn <karn@qualcomm.com>
4 * Copyright 1996-1998, 2003 William Allen Simpson <wsimpson@greendragon.com> 4 * Copyright 1996-1998, 2003 William Allen Simpson <wsimpson@greendragon.com>
@@ -39,16 +39,19 @@
39 39
40#include "includes.h" 40#include "includes.h"
41 41
42#include <sys/param.h>
42#include <sys/types.h> 43#include <sys/types.h>
43 44
44#include <openssl/bn.h> 45#include <openssl/bn.h>
45#include <openssl/dh.h> 46#include <openssl/dh.h>
46 47
48#include <errno.h>
47#include <stdio.h> 49#include <stdio.h>
48#include <stdlib.h> 50#include <stdlib.h>
49#include <string.h> 51#include <string.h>
50#include <stdarg.h> 52#include <stdarg.h>
51#include <time.h> 53#include <time.h>
54#include <unistd.h>
52 55
53#include "xmalloc.h" 56#include "xmalloc.h"
54#include "dh.h" 57#include "dh.h"
@@ -137,7 +140,7 @@ static u_int32_t largebits, largememory; /* megabytes */
137static BIGNUM *largebase; 140static BIGNUM *largebase;
138 141
139int gen_candidates(FILE *, u_int32_t, u_int32_t, BIGNUM *); 142int gen_candidates(FILE *, u_int32_t, u_int32_t, BIGNUM *);
140int prime_test(FILE *, FILE *, u_int32_t, u_int32_t); 143int prime_test(FILE *, FILE *, u_int32_t, u_int32_t, char *);
141 144
142/* 145/*
143 * print moduli out in consistent form, 146 * print moduli out in consistent form,
@@ -438,6 +441,52 @@ gen_candidates(FILE *out, u_int32_t memory, u_int32_t power, BIGNUM *start)
438 return (ret); 441 return (ret);
439} 442}
440 443
444static void
445write_checkpoint(char *cpfile, u_int32_t lineno)
446{
447 FILE *fp;
448 char tmp[MAXPATHLEN];
449 int r;
450
451 r = snprintf(tmp, sizeof(tmp), "%s.XXXXXXXXXX", cpfile);
452 if (r == -1 || r >= MAXPATHLEN) {
453 logit("write_checkpoint: temp pathname too long");
454 return;
455 }
456 if ((r = mkstemp(tmp)) == -1) {
457 logit("mkstemp(%s): %s", tmp, strerror(errno));
458 return;
459 }
460 if ((fp = fdopen(r, "w")) == NULL) {
461 logit("write_checkpoint: fdopen: %s", strerror(errno));
462 close(r);
463 return;
464 }
465 if (fprintf(fp, "%lu\n", (unsigned long)lineno) > 0 && fclose(fp) == 0
466 && rename(tmp, cpfile) == 0)
467 debug3("wrote checkpoint line %lu to '%s'",
468 (unsigned long)lineno, cpfile);
469 else
470 logit("failed to write to checkpoint file '%s': %s", cpfile,
471 strerror(errno));
472}
473
474static unsigned long
475read_checkpoint(char *cpfile)
476{
477 FILE *fp;
478 unsigned long lineno = 0;
479
480 if ((fp = fopen(cpfile, "r")) == NULL)
481 return 0;
482 if (fscanf(fp, "%lu\n", &lineno) < 1)
483 logit("Failed to load checkpoint from '%s'", cpfile);
484 else
485 logit("Loaded checkpoint from '%s' line %lu", cpfile, lineno);
486 fclose(fp);
487 return lineno;
488}
489
441/* 490/*
442 * perform a Miller-Rabin primality test 491 * perform a Miller-Rabin primality test
443 * on the list of candidates 492 * on the list of candidates
@@ -445,13 +494,15 @@ gen_candidates(FILE *out, u_int32_t memory, u_int32_t power, BIGNUM *start)
445 * The result is a list of so-call "safe" primes 494 * The result is a list of so-call "safe" primes
446 */ 495 */
447int 496int
448prime_test(FILE *in, FILE *out, u_int32_t trials, u_int32_t generator_wanted) 497prime_test(FILE *in, FILE *out, u_int32_t trials, u_int32_t generator_wanted,
498 char *checkpoint_file)
449{ 499{
450 BIGNUM *q, *p, *a; 500 BIGNUM *q, *p, *a;
451 BN_CTX *ctx; 501 BN_CTX *ctx;
452 char *cp, *lp; 502 char *cp, *lp;
453 u_int32_t count_in = 0, count_out = 0, count_possible = 0; 503 u_int32_t count_in = 0, count_out = 0, count_possible = 0;
454 u_int32_t generator_known, in_tests, in_tries, in_type, in_size; 504 u_int32_t generator_known, in_tests, in_tries, in_type, in_size;
505 unsigned long last_processed = 0;
455 time_t time_start, time_stop; 506 time_t time_start, time_stop;
456 int res; 507 int res;
457 508
@@ -472,10 +523,21 @@ prime_test(FILE *in, FILE *out, u_int32_t trials, u_int32_t generator_wanted)
472 debug2("%.24s Final %u Miller-Rabin trials (%x generator)", 523 debug2("%.24s Final %u Miller-Rabin trials (%x generator)",
473 ctime(&time_start), trials, generator_wanted); 524 ctime(&time_start), trials, generator_wanted);
474 525
526 if (checkpoint_file != NULL)
527 last_processed = read_checkpoint(checkpoint_file);
528
475 res = 0; 529 res = 0;
476 lp = xmalloc(QLINESIZE + 1); 530 lp = xmalloc(QLINESIZE + 1);
477 while (fgets(lp, QLINESIZE + 1, in) != NULL) { 531 while (fgets(lp, QLINESIZE + 1, in) != NULL) {
478 count_in++; 532 count_in++;
533 if (checkpoint_file != NULL) {
534 if (count_in <= last_processed) {
535 debug3("skipping line %u, before checkpoint",
536 count_in);
537 continue;
538 }
539 write_checkpoint(checkpoint_file, count_in);
540 }
479 if (strlen(lp) < 14 || *lp == '!' || *lp == '#') { 541 if (strlen(lp) < 14 || *lp == '!' || *lp == '#') {
480 debug2("%10u: comment or short line", count_in); 542 debug2("%10u: comment or short line", count_in);
481 continue; 543 continue;
@@ -644,6 +706,9 @@ prime_test(FILE *in, FILE *out, u_int32_t trials, u_int32_t generator_wanted)
644 BN_free(q); 706 BN_free(q);
645 BN_CTX_free(ctx); 707 BN_CTX_free(ctx);
646 708
709 if (checkpoint_file != NULL)
710 unlink(checkpoint_file);
711
647 logit("%.24s Found %u safe primes of %u candidates in %ld seconds", 712 logit("%.24s Found %u safe primes of %u candidates in %ld seconds",
648 ctime(&time_stop), count_out, count_possible, 713 ctime(&time_stop), count_out, count_possible,
649 (long) (time_stop - time_start)); 714 (long) (time_stop - time_start));
diff --git a/monitor.c b/monitor.c
index 985916b1e..d522a0753 100644
--- a/monitor.c
+++ b/monitor.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: monitor.c,v 1.115 2011/06/23 23:35:42 djm Exp $ */ 1/* $OpenBSD: monitor.c,v 1.116 2012/01/05 00:16:56 djm Exp $ */
2/* 2/*
3 * Copyright 2002 Niels Provos <provos@citi.umich.edu> 3 * Copyright 2002 Niels Provos <provos@citi.umich.edu>
4 * Copyright 2002 Markus Friedl <markus@openbsd.org> 4 * Copyright 2002 Markus Friedl <markus@openbsd.org>
@@ -526,6 +526,7 @@ monitor_read_log(struct monitor *pmonitor)
526 if (atomicio(read, pmonitor->m_log_recvfd, 526 if (atomicio(read, pmonitor->m_log_recvfd,
527 buffer_ptr(&logmsg), buffer_len(&logmsg)) != buffer_len(&logmsg)) { 527 buffer_ptr(&logmsg), buffer_len(&logmsg)) != buffer_len(&logmsg)) {
528 if (errno == EPIPE) { 528 if (errno == EPIPE) {
529 buffer_free(&logmsg);
529 debug("%s: child log fd closed", __func__); 530 debug("%s: child log fd closed", __func__);
530 close(pmonitor->m_log_recvfd); 531 close(pmonitor->m_log_recvfd);
531 pmonitor->m_log_recvfd = -1; 532 pmonitor->m_log_recvfd = -1;
diff --git a/mux.c b/mux.c
index add0e26b1..d90605eb4 100644
--- a/mux.c
+++ b/mux.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: mux.c,v 1.29 2011/06/22 22:08:42 djm Exp $ */ 1/* $OpenBSD: mux.c,v 1.34 2012/01/07 21:11:36 djm Exp $ */
2/* 2/*
3 * Copyright (c) 2002-2008 Damien Miller <djm@openbsd.org> 3 * Copyright (c) 2002-2008 Damien Miller <djm@openbsd.org>
4 * 4 *
@@ -341,10 +341,8 @@ process_mux_new_session(u_int rid, Channel *c, Buffer *m, Buffer *r)
341 env_len = 0; 341 env_len = 0;
342 while (buffer_len(m) > 0) { 342 while (buffer_len(m) > 0) {
343#define MUX_MAX_ENV_VARS 4096 343#define MUX_MAX_ENV_VARS 4096
344 if ((cp = buffer_get_string_ret(m, &len)) == NULL) { 344 if ((cp = buffer_get_string_ret(m, &len)) == NULL)
345 xfree(cmd);
346 goto malf; 345 goto malf;
347 }
348 if (!env_permitted(cp)) { 346 if (!env_permitted(cp)) {
349 xfree(cp); 347 xfree(cp);
350 continue; 348 continue;
@@ -601,12 +599,16 @@ mux_confirm_remote_forward(int type, u_int32_t seq, void *ctxt)
601 buffer_put_int(&out, MUX_S_REMOTE_PORT); 599 buffer_put_int(&out, MUX_S_REMOTE_PORT);
602 buffer_put_int(&out, fctx->rid); 600 buffer_put_int(&out, fctx->rid);
603 buffer_put_int(&out, rfwd->allocated_port); 601 buffer_put_int(&out, rfwd->allocated_port);
602 channel_update_permitted_opens(rfwd->handle,
603 rfwd->allocated_port);
604 } else { 604 } else {
605 buffer_put_int(&out, MUX_S_OK); 605 buffer_put_int(&out, MUX_S_OK);
606 buffer_put_int(&out, fctx->rid); 606 buffer_put_int(&out, fctx->rid);
607 } 607 }
608 goto out; 608 goto out;
609 } else { 609 } else {
610 if (rfwd->listen_port == 0)
611 channel_update_permitted_opens(rfwd->handle, -1);
610 xasprintf(&failmsg, "remote port forwarding failed for " 612 xasprintf(&failmsg, "remote port forwarding failed for "
611 "listen port %d", rfwd->listen_port); 613 "listen port %d", rfwd->listen_port);
612 } 614 }
@@ -745,8 +747,9 @@ process_mux_open_fwd(u_int rid, Channel *c, Buffer *m, Buffer *r)
745 } else { 747 } else {
746 struct mux_channel_confirm_ctx *fctx; 748 struct mux_channel_confirm_ctx *fctx;
747 749
748 if (channel_request_remote_forwarding(fwd.listen_host, 750 fwd.handle = channel_request_remote_forwarding(fwd.listen_host,
749 fwd.listen_port, fwd.connect_host, fwd.connect_port) < 0) 751 fwd.listen_port, fwd.connect_host, fwd.connect_port);
752 if (fwd.handle < 0)
750 goto fail; 753 goto fail;
751 add_remote_forward(&options, &fwd); 754 add_remote_forward(&options, &fwd);
752 fctx = xcalloc(1, sizeof(*fctx)); 755 fctx = xcalloc(1, sizeof(*fctx));
@@ -777,10 +780,11 @@ process_mux_open_fwd(u_int rid, Channel *c, Buffer *m, Buffer *r)
777static int 780static int
778process_mux_close_fwd(u_int rid, Channel *c, Buffer *m, Buffer *r) 781process_mux_close_fwd(u_int rid, Channel *c, Buffer *m, Buffer *r)
779{ 782{
780 Forward fwd; 783 Forward fwd, *found_fwd;
781 char *fwd_desc = NULL; 784 char *fwd_desc = NULL;
785 const char *error_reason = NULL;
782 u_int ftype; 786 u_int ftype;
783 int ret = 0; 787 int i, listen_port, ret = 0;
784 788
785 fwd.listen_host = fwd.connect_host = NULL; 789 fwd.listen_host = fwd.connect_host = NULL;
786 if (buffer_get_int_ret(&ftype, m) != 0 || 790 if (buffer_get_int_ret(&ftype, m) != 0 ||
@@ -802,14 +806,70 @@ process_mux_close_fwd(u_int rid, Channel *c, Buffer *m, Buffer *r)
802 fwd.connect_host = NULL; 806 fwd.connect_host = NULL;
803 } 807 }
804 808
805 debug2("%s: channel %d: request %s", __func__, c->self, 809 debug2("%s: channel %d: request cancel %s", __func__, c->self,
806 (fwd_desc = format_forward(ftype, &fwd))); 810 (fwd_desc = format_forward(ftype, &fwd)));
807 811
808 /* XXX implement this */ 812 /* make sure this has been requested */
809 buffer_put_int(r, MUX_S_FAILURE); 813 found_fwd = NULL;
810 buffer_put_int(r, rid); 814 switch (ftype) {
811 buffer_put_cstring(r, "unimplemented"); 815 case MUX_FWD_LOCAL:
816 case MUX_FWD_DYNAMIC:
817 for (i = 0; i < options.num_local_forwards; i++) {
818 if (compare_forward(&fwd,
819 options.local_forwards + i)) {
820 found_fwd = options.local_forwards + i;
821 break;
822 }
823 }
824 break;
825 case MUX_FWD_REMOTE:
826 for (i = 0; i < options.num_remote_forwards; i++) {
827 if (compare_forward(&fwd,
828 options.remote_forwards + i)) {
829 found_fwd = options.remote_forwards + i;
830 break;
831 }
832 }
833 break;
834 }
812 835
836 if (found_fwd == NULL)
837 error_reason = "port not forwarded";
838 else if (ftype == MUX_FWD_REMOTE) {
839 /*
840 * This shouldn't fail unless we confused the host/port
841 * between options.remote_forwards and permitted_opens.
842 * However, for dynamic allocated listen ports we need
843 * to lookup the actual listen port.
844 */
845 listen_port = (fwd.listen_port == 0) ?
846 found_fwd->allocated_port : fwd.listen_port;
847 if (channel_request_rforward_cancel(fwd.listen_host,
848 listen_port) == -1)
849 error_reason = "port not in permitted opens";
850 } else { /* local and dynamic forwards */
851 /* Ditto */
852 if (channel_cancel_lport_listener(fwd.listen_host,
853 fwd.listen_port, fwd.connect_port,
854 options.gateway_ports) == -1)
855 error_reason = "port not found";
856 }
857
858 if (error_reason == NULL) {
859 buffer_put_int(r, MUX_S_OK);
860 buffer_put_int(r, rid);
861
862 if (found_fwd->listen_host != NULL)
863 xfree(found_fwd->listen_host);
864 if (found_fwd->connect_host != NULL)
865 xfree(found_fwd->connect_host);
866 found_fwd->listen_host = found_fwd->connect_host = NULL;
867 found_fwd->listen_port = found_fwd->connect_port = 0;
868 } else {
869 buffer_put_int(r, MUX_S_FAILURE);
870 buffer_put_int(r, rid);
871 buffer_put_cstring(r, error_reason);
872 }
813 out: 873 out:
814 if (fwd_desc != NULL) 874 if (fwd_desc != NULL)
815 xfree(fwd_desc); 875 xfree(fwd_desc);
@@ -1537,18 +1597,19 @@ mux_client_request_terminate(int fd)
1537} 1597}
1538 1598
1539static int 1599static int
1540mux_client_request_forward(int fd, u_int ftype, Forward *fwd) 1600mux_client_forward(int fd, int cancel_flag, u_int ftype, Forward *fwd)
1541{ 1601{
1542 Buffer m; 1602 Buffer m;
1543 char *e, *fwd_desc; 1603 char *e, *fwd_desc;
1544 u_int type, rid; 1604 u_int type, rid;
1545 1605
1546 fwd_desc = format_forward(ftype, fwd); 1606 fwd_desc = format_forward(ftype, fwd);
1547 debug("Requesting %s", fwd_desc); 1607 debug("Requesting %s %s",
1608 cancel_flag ? "cancellation of" : "forwarding of", fwd_desc);
1548 xfree(fwd_desc); 1609 xfree(fwd_desc);
1549 1610
1550 buffer_init(&m); 1611 buffer_init(&m);
1551 buffer_put_int(&m, MUX_C_OPEN_FWD); 1612 buffer_put_int(&m, cancel_flag ? MUX_C_CLOSE_FWD : MUX_C_OPEN_FWD);
1552 buffer_put_int(&m, muxclient_request_id); 1613 buffer_put_int(&m, muxclient_request_id);
1553 buffer_put_int(&m, ftype); 1614 buffer_put_int(&m, ftype);
1554 buffer_put_cstring(&m, 1615 buffer_put_cstring(&m,
@@ -1577,6 +1638,8 @@ mux_client_request_forward(int fd, u_int ftype, Forward *fwd)
1577 case MUX_S_OK: 1638 case MUX_S_OK:
1578 break; 1639 break;
1579 case MUX_S_REMOTE_PORT: 1640 case MUX_S_REMOTE_PORT:
1641 if (cancel_flag)
1642 fatal("%s: got MUX_S_REMOTE_PORT for cancel", __func__);
1580 fwd->allocated_port = buffer_get_int(&m); 1643 fwd->allocated_port = buffer_get_int(&m);
1581 logit("Allocated port %u for remote forward to %s:%d", 1644 logit("Allocated port %u for remote forward to %s:%d",
1582 fwd->allocated_port, 1645 fwd->allocated_port,
@@ -1606,27 +1669,28 @@ mux_client_request_forward(int fd, u_int ftype, Forward *fwd)
1606} 1669}
1607 1670
1608static int 1671static int
1609mux_client_request_forwards(int fd) 1672mux_client_forwards(int fd, int cancel_flag)
1610{ 1673{
1611 int i; 1674 int i, ret = 0;
1612 1675
1613 debug3("%s: requesting forwardings: %d local, %d remote", __func__, 1676 debug3("%s: %s forwardings: %d local, %d remote", __func__,
1677 cancel_flag ? "cancel" : "request",
1614 options.num_local_forwards, options.num_remote_forwards); 1678 options.num_local_forwards, options.num_remote_forwards);
1615 1679
1616 /* XXX ExitOnForwardingFailure */ 1680 /* XXX ExitOnForwardingFailure */
1617 for (i = 0; i < options.num_local_forwards; i++) { 1681 for (i = 0; i < options.num_local_forwards; i++) {
1618 if (mux_client_request_forward(fd, 1682 if (mux_client_forward(fd, cancel_flag,
1619 options.local_forwards[i].connect_port == 0 ? 1683 options.local_forwards[i].connect_port == 0 ?
1620 MUX_FWD_DYNAMIC : MUX_FWD_LOCAL, 1684 MUX_FWD_DYNAMIC : MUX_FWD_LOCAL,
1621 options.local_forwards + i) != 0) 1685 options.local_forwards + i) != 0)
1622 return -1; 1686 ret = -1;
1623 } 1687 }
1624 for (i = 0; i < options.num_remote_forwards; i++) { 1688 for (i = 0; i < options.num_remote_forwards; i++) {
1625 if (mux_client_request_forward(fd, MUX_FWD_REMOTE, 1689 if (mux_client_forward(fd, cancel_flag, MUX_FWD_REMOTE,
1626 options.remote_forwards + i) != 0) 1690 options.remote_forwards + i) != 0)
1627 return -1; 1691 ret = -1;
1628 } 1692 }
1629 return 0; 1693 return ret;
1630} 1694}
1631 1695
1632static int 1696static int
@@ -2014,11 +2078,11 @@ muxclient(const char *path)
2014 fprintf(stderr, "Exit request sent.\r\n"); 2078 fprintf(stderr, "Exit request sent.\r\n");
2015 exit(0); 2079 exit(0);
2016 case SSHMUX_COMMAND_FORWARD: 2080 case SSHMUX_COMMAND_FORWARD:
2017 if (mux_client_request_forwards(sock) != 0) 2081 if (mux_client_forwards(sock, 0) != 0)
2018 fatal("%s: master forward request failed", __func__); 2082 fatal("%s: master forward request failed", __func__);
2019 exit(0); 2083 exit(0);
2020 case SSHMUX_COMMAND_OPEN: 2084 case SSHMUX_COMMAND_OPEN:
2021 if (mux_client_request_forwards(sock) != 0) { 2085 if (mux_client_forwards(sock, 0) != 0) {
2022 error("%s: master forward request failed", __func__); 2086 error("%s: master forward request failed", __func__);
2023 return; 2087 return;
2024 } 2088 }
@@ -2031,6 +2095,11 @@ muxclient(const char *path)
2031 mux_client_request_stop_listening(sock); 2095 mux_client_request_stop_listening(sock);
2032 fprintf(stderr, "Stop listening request sent.\r\n"); 2096 fprintf(stderr, "Stop listening request sent.\r\n");
2033 exit(0); 2097 exit(0);
2098 case SSHMUX_COMMAND_CANCEL_FWD:
2099 if (mux_client_forwards(sock, 1) != 0)
2100 error("%s: master cancel forward request failed",
2101 __func__);
2102 exit(0);
2034 default: 2103 default:
2035 fatal("unrecognised muxclient_command %d", muxclient_command); 2104 fatal("unrecognised muxclient_command %d", muxclient_command);
2036 } 2105 }
diff --git a/openbsd-compat/Makefile.in b/openbsd-compat/Makefile.in
index 41b22d837..196a81d13 100644
--- a/openbsd-compat/Makefile.in
+++ b/openbsd-compat/Makefile.in
@@ -1,4 +1,4 @@
1# $Id: Makefile.in,v 1.46 2010/10/07 11:19:24 djm Exp $ 1# $Id: Makefile.in,v 1.48 2011/11/04 00:25:25 dtucker Exp $
2 2
3sysconfdir=@sysconfdir@ 3sysconfdir=@sysconfdir@
4piddir=@piddir@ 4piddir=@piddir@
@@ -16,9 +16,9 @@ RANLIB=@RANLIB@
16INSTALL=@INSTALL@ 16INSTALL=@INSTALL@
17LDFLAGS=-L. @LDFLAGS@ 17LDFLAGS=-L. @LDFLAGS@
18 18
19OPENBSD=base64.o basename.o bindresvport.o daemon.o dirname.o fmt_scaled.o getcwd.o getgrouplist.o getopt.o getrrsetbyname.o glob.o inet_aton.o inet_ntoa.o inet_ntop.o mktemp.o pwcache.o readpassphrase.o realpath.o rresvport.o setenv.o setproctitle.o sha2.o sigact.o strlcat.o strlcpy.o strmode.o strptime.o strsep.o strtonum.o strtoll.o strtoul.o timingsafe_bcmp.o vis.o 19OPENBSD=base64.o basename.o bindresvport.o daemon.o dirname.o fmt_scaled.o getcwd.o getgrouplist.o getopt.o getrrsetbyname.o glob.o inet_aton.o inet_ntoa.o inet_ntop.o mktemp.o pwcache.o readpassphrase.o realpath.o rresvport.o setenv.o setproctitle.o sha2.o sigact.o strlcat.o strlcpy.o strmode.o strnlen.o strptime.o strsep.o strtonum.o strtoll.o strtoul.o timingsafe_bcmp.o vis.o
20 20
21COMPAT=bsd-arc4random.o bsd-asprintf.o bsd-closefrom.o bsd-cray.o bsd-cygwin_util.o bsd-getpeereid.o bsd-misc.o bsd-nextstep.o bsd-openpty.o bsd-poll.o bsd-snprintf.o bsd-statvfs.o bsd-waitpid.o fake-rfc2553.o openssl-compat.o xmmap.o xcrypt.o 21COMPAT=bsd-arc4random.o bsd-asprintf.o bsd-closefrom.o bsd-cray.o bsd-cygwin_util.o bsd-getpeereid.o getrrsetbyname-ldns.o bsd-misc.o bsd-nextstep.o bsd-openpty.o bsd-poll.o bsd-snprintf.o bsd-statvfs.o bsd-waitpid.o fake-rfc2553.o openssl-compat.o xmmap.o xcrypt.o
22 22
23PORTS=port-aix.o port-irix.o port-linux.o port-solaris.o port-tun.o port-uw.o 23PORTS=port-aix.o port-irix.o port-linux.o port-solaris.o port-tun.o port-uw.o
24 24
diff --git a/openbsd-compat/bsd-cygwin_util.c b/openbsd-compat/bsd-cygwin_util.c
index 9eedc88d2..6befc016f 100644
--- a/openbsd-compat/bsd-cygwin_util.c
+++ b/openbsd-compat/bsd-cygwin_util.c
@@ -76,6 +76,7 @@ static struct wenv {
76 { NL("OS=") }, 76 { NL("OS=") },
77 { NL("PATH=") }, 77 { NL("PATH=") },
78 { NL("PATHEXT=") }, 78 { NL("PATHEXT=") },
79 { NL("PROGRAMFILES=") },
79 { NL("SYSTEMDRIVE=") }, 80 { NL("SYSTEMDRIVE=") },
80 { NL("SYSTEMROOT=") }, 81 { NL("SYSTEMROOT=") },
81 { NL("WINDIR=") } 82 { NL("WINDIR=") }
diff --git a/openbsd-compat/bsd-cygwin_util.h b/openbsd-compat/bsd-cygwin_util.h
index 48f64b740..d223792d7 100644
--- a/openbsd-compat/bsd-cygwin_util.h
+++ b/openbsd-compat/bsd-cygwin_util.h
@@ -1,4 +1,4 @@
1/* $Id: bsd-cygwin_util.h,v 1.13 2011/08/17 01:31:09 djm Exp $ */ 1/* $Id: bsd-cygwin_util.h,v 1.14 2012/03/30 03:07:07 djm Exp $ */
2 2
3/* 3/*
4 * Copyright (c) 2000, 2001, 2011 Corinna Vinschen <vinschen@redhat.com> 4 * Copyright (c) 2000, 2001, 2011 Corinna Vinschen <vinschen@redhat.com>
@@ -40,6 +40,12 @@
40#include <sys/cygwin.h> 40#include <sys/cygwin.h>
41#include <io.h> 41#include <io.h>
42 42
43/* Make sure _WIN32 isn't defined later in the code, otherwise headers from
44 other packages might get the wrong idea about the target system. */
45#ifdef _WIN32
46#undef _WIN32
47#endif
48
43int binary_open(const char *, int , ...); 49int binary_open(const char *, int , ...);
44int check_ntsec(const char *); 50int check_ntsec(const char *);
45char **fetch_windows_environment(void); 51char **fetch_windows_environment(void);
diff --git a/openbsd-compat/bsd-misc.h b/openbsd-compat/bsd-misc.h
index e70c3f9e9..e37175625 100644
--- a/openbsd-compat/bsd-misc.h
+++ b/openbsd-compat/bsd-misc.h
@@ -1,4 +1,4 @@
1/* $Id: bsd-misc.h,v 1.19 2010/11/08 22:26:23 tim Exp $ */ 1/* $Id: bsd-misc.h,v 1.20 2012/02/14 18:03:31 tim Exp $ */
2 2
3/* 3/*
4 * Copyright (c) 1999-2004 Damien Miller <djm@mindrot.org> 4 * Copyright (c) 1999-2004 Damien Miller <djm@mindrot.org>
@@ -86,7 +86,7 @@ int tcsendbreak(int, int);
86#endif 86#endif
87 87
88#ifndef HAVE_UNSETENV 88#ifndef HAVE_UNSETENV
89void unsetenv(const char *); 89int unsetenv(const char *);
90#endif 90#endif
91 91
92/* wrapper for signal interface */ 92/* wrapper for signal interface */
diff --git a/openbsd-compat/getcwd.c b/openbsd-compat/getcwd.c
index 711cb9cd5..3edbb9cba 100644
--- a/openbsd-compat/getcwd.c
+++ b/openbsd-compat/getcwd.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: getcwd.c,v 1.14 2005/08/08 08:05:34 espie Exp $ */ 1/* from OpenBSD: getcwd.c,v 1.14 2005/08/08 08:05:34 espie Exp */
2/* 2/*
3 * Copyright (c) 1989, 1991, 1993 3 * Copyright (c) 1989, 1991, 1993
4 * The Regents of the University of California. All rights reserved. 4 * The Regents of the University of California. All rights reserved.
diff --git a/openbsd-compat/getgrouplist.c b/openbsd-compat/getgrouplist.c
index a57d7d388..3afcb9281 100644
--- a/openbsd-compat/getgrouplist.c
+++ b/openbsd-compat/getgrouplist.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: getgrouplist.c,v 1.12 2005/08/08 08:05:34 espie Exp $ */ 1/* from OpenBSD: getgrouplist.c,v 1.12 2005/08/08 08:05:34 espie Exp */
2/* 2/*
3 * Copyright (c) 1991, 1993 3 * Copyright (c) 1991, 1993
4 * The Regents of the University of California. All rights reserved. 4 * The Regents of the University of California. All rights reserved.
diff --git a/openbsd-compat/getrrsetbyname-ldns.c b/openbsd-compat/getrrsetbyname-ldns.c
new file mode 100644
index 000000000..8ce5678c9
--- /dev/null
+++ b/openbsd-compat/getrrsetbyname-ldns.c
@@ -0,0 +1,284 @@
1/* $OpenBSD: getrrsetbyname.c,v 1.10 2005/03/30 02:58:28 tedu Exp $ */
2
3/*
4 * Copyright (c) 2007 Simon Vallet / Genoscope <svallet@genoscope.cns.fr>
5 *
6 * Redistribution and use in source and binary forms, with or without
7 * modification, are permitted provided that the following conditions
8 * are met:
9 *
10 * 1. Redistributions of source code must retain the above copyright
11 * notice, this list of conditions and the following disclaimer.
12 *
13 * 2. Redistributions in binary form must reproduce the above copyright
14 * notice, this list of conditions and the following disclaimer in the
15 * documentation and/or other materials provided with the distribution.
16 *
17 * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
18 * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
19 * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
20 * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
21 * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
22 * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
23 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
24 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
25 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
26 * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
27 */
28
29/*
30 * Portions Copyright (c) 1999-2001 Internet Software Consortium.
31 *
32 * Permission to use, copy, modify, and distribute this software for any
33 * purpose with or without fee is hereby granted, provided that the above
34 * copyright notice and this permission notice appear in all copies.
35 *
36 * THE SOFTWARE IS PROVIDED "AS IS" AND INTERNET SOFTWARE CONSORTIUM
37 * DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL
38 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL
39 * INTERNET SOFTWARE CONSORTIUM BE LIABLE FOR ANY SPECIAL, DIRECT,
40 * INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING
41 * FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
42 * NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION
43 * WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
44 */
45
46#include "includes.h"
47
48#if !defined (HAVE_GETRRSETBYNAME) && defined (HAVE_LDNS)
49
50#include <stdlib.h>
51#include <string.h>
52
53#include <ldns/ldns.h>
54
55#include "getrrsetbyname.h"
56#include "log.h"
57#include "xmalloc.h"
58
59#define malloc(x) (xmalloc(x))
60#define calloc(x, y) (xcalloc((x),(y)))
61#define free(x) (xfree(x))
62
63int
64getrrsetbyname(const char *hostname, unsigned int rdclass,
65 unsigned int rdtype, unsigned int flags,
66 struct rrsetinfo **res)
67{
68 int result;
69 unsigned int i, j, index_ans, index_sig;
70 struct rrsetinfo *rrset = NULL;
71 struct rdatainfo *rdata;
72 size_t len;
73 ldns_resolver *ldns_res;
74 ldns_rdf *domain = NULL;
75 ldns_pkt *pkt = NULL;
76 ldns_rr_list *rrsigs = NULL, *rrdata = NULL;
77 ldns_status err;
78 ldns_rr *rr;
79
80 /* check for invalid class and type */
81 if (rdclass > 0xffff || rdtype > 0xffff) {
82 result = ERRSET_INVAL;
83 goto fail;
84 }
85
86 /* don't allow queries of class or type ANY */
87 if (rdclass == 0xff || rdtype == 0xff) {
88 result = ERRSET_INVAL;
89 goto fail;
90 }
91
92 /* don't allow flags yet, unimplemented */
93 if (flags) {
94 result = ERRSET_INVAL;
95 goto fail;
96 }
97
98 /* Initialize resolver from resolv.conf */
99 domain = ldns_dname_new_frm_str(hostname);
100 if ((err = ldns_resolver_new_frm_file(&ldns_res, NULL)) != \
101 LDNS_STATUS_OK) {
102 result = ERRSET_FAIL;
103 goto fail;
104 }
105
106#ifdef LDNS_DEBUG
107 ldns_resolver_set_debug(ldns_res, true);
108#endif /* LDNS_DEBUG */
109
110 ldns_resolver_set_dnssec(ldns_res, true); /* Use DNSSEC */
111
112 /* make query */
113 pkt = ldns_resolver_query(ldns_res, domain, rdtype, rdclass, LDNS_RD);
114
115 /*** TODO: finer errcodes -- see original **/
116 if (!pkt || ldns_pkt_ancount(pkt) < 1) {
117 result = ERRSET_FAIL;
118 goto fail;
119 }
120
121 /* initialize rrset */
122 rrset = calloc(1, sizeof(struct rrsetinfo));
123 if (rrset == NULL) {
124 result = ERRSET_NOMEMORY;
125 goto fail;
126 }
127
128 rrdata = ldns_pkt_rr_list_by_type(pkt, rdtype, LDNS_SECTION_ANSWER);
129 rrset->rri_nrdatas = ldns_rr_list_rr_count(rrdata);
130 if (!rrset->rri_nrdatas) {
131 result = ERRSET_NODATA;
132 goto fail;
133 }
134
135 /* copy name from answer section */
136 len = ldns_rdf_size(ldns_rr_owner(ldns_rr_list_rr(rrdata, 0)));
137 if ((rrset->rri_name = malloc(len)) == NULL) {
138 result = ERRSET_NOMEMORY;
139 goto fail;
140 }
141 memcpy(rrset->rri_name,
142 ldns_rdf_data(ldns_rr_owner(ldns_rr_list_rr(rrdata, 0))), len);
143
144 rrset->rri_rdclass = ldns_rr_get_class(ldns_rr_list_rr(rrdata, 0));
145 rrset->rri_rdtype = ldns_rr_get_type(ldns_rr_list_rr(rrdata, 0));
146 rrset->rri_ttl = ldns_rr_ttl(ldns_rr_list_rr(rrdata, 0));
147
148 debug2("ldns: got %u answers from DNS", rrset->rri_nrdatas);
149
150 /* Check for authenticated data */
151 if (ldns_pkt_ad(pkt)) {
152 rrset->rri_flags |= RRSET_VALIDATED;
153 } else { /* AD is not set, try autonomous validation */
154 ldns_rr_list * trusted_keys = ldns_rr_list_new();
155
156 debug2("ldns: trying to validate RRset");
157 /* Get eventual sigs */
158 rrsigs = ldns_pkt_rr_list_by_type(pkt, LDNS_RR_TYPE_RRSIG,
159 LDNS_SECTION_ANSWER);
160
161 rrset->rri_nsigs = ldns_rr_list_rr_count(rrsigs);
162 debug2("ldns: got %u signature(s) (RRTYPE %u) from DNS",
163 rrset->rri_nsigs, LDNS_RR_TYPE_RRSIG);
164
165 if ((err = ldns_verify_trusted(ldns_res, rrdata, rrsigs,
166 trusted_keys)) == LDNS_STATUS_OK) {
167 rrset->rri_flags |= RRSET_VALIDATED;
168 debug2("ldns: RRset is signed with a valid key");
169 } else {
170 debug2("ldns: RRset validation failed: %s",
171 ldns_get_errorstr_by_id(err));
172 }
173
174 ldns_rr_list_deep_free(trusted_keys);
175 }
176
177 /* allocate memory for answers */
178 rrset->rri_rdatas = calloc(rrset->rri_nrdatas,
179 sizeof(struct rdatainfo));
180
181 if (rrset->rri_rdatas == NULL) {
182 result = ERRSET_NOMEMORY;
183 goto fail;
184 }
185
186 /* allocate memory for signatures */
187 if (rrset->rri_nsigs > 0) {
188 rrset->rri_sigs = calloc(rrset->rri_nsigs,
189 sizeof(struct rdatainfo));
190
191 if (rrset->rri_sigs == NULL) {
192 result = ERRSET_NOMEMORY;
193 goto fail;
194 }
195 }
196
197 /* copy answers & signatures */
198 for (i=0, index_ans=0, index_sig=0; i< pkt->_header->_ancount; i++) {
199 rdata = NULL;
200 rr = ldns_rr_list_rr(ldns_pkt_answer(pkt), i);
201
202 if (ldns_rr_get_class(rr) == rrset->rri_rdclass &&
203 ldns_rr_get_type(rr) == rrset->rri_rdtype) {
204 rdata = &rrset->rri_rdatas[index_ans++];
205 }
206
207 if (rr->_rr_class == rrset->rri_rdclass &&
208 rr->_rr_type == LDNS_RR_TYPE_RRSIG) {
209 rdata = &rrset->rri_sigs[index_sig++];
210 }
211
212 if (rdata) {
213 size_t rdata_offset = 0;
214
215 rdata->rdi_length = 0;
216 for (j=0; j< rr->_rd_count; j++) {
217 rdata->rdi_length +=
218 ldns_rdf_size(ldns_rr_rdf(rr, j));
219 }
220
221 rdata->rdi_data = malloc(rdata->rdi_length);
222 if (rdata->rdi_data == NULL) {
223 result = ERRSET_NOMEMORY;
224 goto fail;
225 }
226
227 /* Re-create the raw DNS RDATA */
228 for (j=0; j< rr->_rd_count; j++) {
229 len = ldns_rdf_size(ldns_rr_rdf(rr, j));
230 memcpy(rdata->rdi_data + rdata_offset,
231 ldns_rdf_data(ldns_rr_rdf(rr, j)), len);
232 rdata_offset += len;
233 }
234 }
235 }
236
237 *res = rrset;
238 result = ERRSET_SUCCESS;
239
240fail:
241 /* freerrset(rrset); */
242 ldns_rdf_deep_free(domain);
243 ldns_pkt_free(pkt);
244 ldns_rr_list_deep_free(rrsigs);
245 ldns_rr_list_deep_free(rrdata);
246 ldns_resolver_deep_free(ldns_res);
247
248 return result;
249}
250
251
252void
253freerrset(struct rrsetinfo *rrset)
254{
255 u_int16_t i;
256
257 if (rrset == NULL)
258 return;
259
260 if (rrset->rri_rdatas) {
261 for (i = 0; i < rrset->rri_nrdatas; i++) {
262 if (rrset->rri_rdatas[i].rdi_data == NULL)
263 break;
264 free(rrset->rri_rdatas[i].rdi_data);
265 }
266 free(rrset->rri_rdatas);
267 }
268
269 if (rrset->rri_sigs) {
270 for (i = 0; i < rrset->rri_nsigs; i++) {
271 if (rrset->rri_sigs[i].rdi_data == NULL)
272 break;
273 free(rrset->rri_sigs[i].rdi_data);
274 }
275 free(rrset->rri_sigs);
276 }
277
278 if (rrset->rri_name)
279 free(rrset->rri_name);
280 free(rrset);
281}
282
283
284#endif /* !defined (HAVE_GETRRSETBYNAME) && defined (HAVE_LDNS) */
diff --git a/openbsd-compat/getrrsetbyname.c b/openbsd-compat/getrrsetbyname.c
index 011821198..e061a290a 100644
--- a/openbsd-compat/getrrsetbyname.c
+++ b/openbsd-compat/getrrsetbyname.c
@@ -47,7 +47,7 @@
47 47
48#include "includes.h" 48#include "includes.h"
49 49
50#ifndef HAVE_GETRRSETBYNAME 50#if !defined (HAVE_GETRRSETBYNAME) && !defined (HAVE_LDNS)
51 51
52#include <stdlib.h> 52#include <stdlib.h>
53#include <string.h> 53#include <string.h>
@@ -607,4 +607,4 @@ count_dns_rr(struct dns_rr *p, u_int16_t class, u_int16_t type)
607 return (n); 607 return (n);
608} 608}
609 609
610#endif /* !defined(HAVE_GETRRSETBYNAME) */ 610#endif /* !defined (HAVE_GETRRSETBYNAME) && !defined (HAVE_LDNS) */
diff --git a/openbsd-compat/glob.c b/openbsd-compat/glob.c
index 0341225cd..742b4b954 100644
--- a/openbsd-compat/glob.c
+++ b/openbsd-compat/glob.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: glob.c,v 1.35 2011/01/12 01:53:14 djm Exp $ */ 1/* $OpenBSD: glob.c,v 1.38 2011/09/22 06:27:29 djm Exp $ */
2/* 2/*
3 * Copyright (c) 1989, 1993 3 * Copyright (c) 1989, 1993
4 * The Regents of the University of California. All rights reserved. 4 * The Regents of the University of California. All rights reserved.
@@ -66,6 +66,7 @@
66#include <dirent.h> 66#include <dirent.h>
67#include <ctype.h> 67#include <ctype.h>
68#include <errno.h> 68#include <errno.h>
69#include <limits.h>
69#include <pwd.h> 70#include <pwd.h>
70#include <stdlib.h> 71#include <stdlib.h>
71#include <string.h> 72#include <string.h>
@@ -132,13 +133,22 @@ typedef char Char;
132#define GLOB_LIMIT_STAT 128 133#define GLOB_LIMIT_STAT 128
133#define GLOB_LIMIT_READDIR 16384 134#define GLOB_LIMIT_READDIR 16384
134 135
136/* Limit of recursion during matching attempts. */
137#define GLOB_LIMIT_RECUR 64
138
135struct glob_lim { 139struct glob_lim {
136 size_t glim_malloc; 140 size_t glim_malloc;
137 size_t glim_stat; 141 size_t glim_stat;
138 size_t glim_readdir; 142 size_t glim_readdir;
139}; 143};
140 144
145struct glob_path_stat {
146 char *gps_path;
147 struct stat *gps_stat;
148};
149
141static int compare(const void *, const void *); 150static int compare(const void *, const void *);
151static int compare_gps(const void *, const void *);
142static int g_Ctoc(const Char *, char *, u_int); 152static int g_Ctoc(const Char *, char *, u_int);
143static int g_lstat(Char *, struct stat *, glob_t *); 153static int g_lstat(Char *, struct stat *, glob_t *);
144static DIR *g_opendir(Char *, glob_t *); 154static DIR *g_opendir(Char *, glob_t *);
@@ -158,7 +168,7 @@ static const Char *
158static int globexp1(const Char *, glob_t *, struct glob_lim *); 168static int globexp1(const Char *, glob_t *, struct glob_lim *);
159static int globexp2(const Char *, const Char *, glob_t *, 169static int globexp2(const Char *, const Char *, glob_t *,
160 struct glob_lim *); 170 struct glob_lim *);
161static int match(Char *, Char *, Char *); 171static int match(Char *, Char *, Char *, int);
162#ifdef DEBUG 172#ifdef DEBUG
163static void qprintf(const char *, Char *); 173static void qprintf(const char *, Char *);
164#endif 174#endif
@@ -172,6 +182,9 @@ glob(const char *pattern, int flags, int (*errfunc)(const char *, int),
172 Char *bufnext, *bufend, patbuf[MAXPATHLEN]; 182 Char *bufnext, *bufend, patbuf[MAXPATHLEN];
173 struct glob_lim limit = { 0, 0, 0 }; 183 struct glob_lim limit = { 0, 0, 0 };
174 184
185 if (strnlen(pattern, PATH_MAX) == PATH_MAX)
186 return(GLOB_NOMATCH);
187
175 patnext = (u_char *) pattern; 188 patnext = (u_char *) pattern;
176 if (!(flags & GLOB_APPEND)) { 189 if (!(flags & GLOB_APPEND)) {
177 pglob->gl_pathc = 0; 190 pglob->gl_pathc = 0;
@@ -548,9 +561,32 @@ glob0(const Char *pattern, glob_t *pglob, struct glob_lim *limitp)
548 else 561 else
549 return(GLOB_NOMATCH); 562 return(GLOB_NOMATCH);
550 } 563 }
551 if (!(pglob->gl_flags & GLOB_NOSORT)) 564 if (!(pglob->gl_flags & GLOB_NOSORT)) {
552 qsort(pglob->gl_pathv + pglob->gl_offs + oldpathc, 565 if ((pglob->gl_flags & GLOB_KEEPSTAT)) {
553 pglob->gl_pathc - oldpathc, sizeof(char *), compare); 566 /* Keep the paths and stat info synced during sort */
567 struct glob_path_stat *path_stat;
568 int i;
569 int n = pglob->gl_pathc - oldpathc;
570 int o = pglob->gl_offs + oldpathc;
571
572 if ((path_stat = calloc(n, sizeof(*path_stat))) == NULL)
573 return GLOB_NOSPACE;
574 for (i = 0; i < n; i++) {
575 path_stat[i].gps_path = pglob->gl_pathv[o + i];
576 path_stat[i].gps_stat = pglob->gl_statv[o + i];
577 }
578 qsort(path_stat, n, sizeof(*path_stat), compare_gps);
579 for (i = 0; i < n; i++) {
580 pglob->gl_pathv[o + i] = path_stat[i].gps_path;
581 pglob->gl_statv[o + i] = path_stat[i].gps_stat;
582 }
583 free(path_stat);
584 } else {
585 qsort(pglob->gl_pathv + pglob->gl_offs + oldpathc,
586 pglob->gl_pathc - oldpathc, sizeof(char *),
587 compare);
588 }
589 }
554 return(0); 590 return(0);
555} 591}
556 592
@@ -561,6 +597,15 @@ compare(const void *p, const void *q)
561} 597}
562 598
563static int 599static int
600compare_gps(const void *_p, const void *_q)
601{
602 const struct glob_path_stat *p = (const struct glob_path_stat *)_p;
603 const struct glob_path_stat *q = (const struct glob_path_stat *)_q;
604
605 return(strcmp(p->gps_path, q->gps_path));
606}
607
608static int
564glob1(Char *pattern, Char *pattern_last, glob_t *pglob, struct glob_lim *limitp) 609glob1(Char *pattern, Char *pattern_last, glob_t *pglob, struct glob_lim *limitp)
565{ 610{
566 Char pathbuf[MAXPATHLEN]; 611 Char pathbuf[MAXPATHLEN];
@@ -697,7 +742,8 @@ glob3(Char *pathbuf, Char *pathbuf_last, Char *pathend, Char *pathend_last,
697 errno = 0; 742 errno = 0;
698 *pathend++ = SEP; 743 *pathend++ = SEP;
699 *pathend = EOS; 744 *pathend = EOS;
700 return(GLOB_NOSPACE); 745 err = GLOB_NOSPACE;
746 break;
701 } 747 }
702 748
703 /* Initial DOT must be matched literally. */ 749 /* Initial DOT must be matched literally. */
@@ -713,7 +759,7 @@ glob3(Char *pathbuf, Char *pathbuf_last, Char *pathend, Char *pathend_last,
713 break; 759 break;
714 } 760 }
715 761
716 if (!match(pathend, pattern, restpattern)) { 762 if (!match(pathend, pattern, restpattern, GLOB_LIMIT_RECUR)) {
717 *pathend = EOS; 763 *pathend = EOS;
718 continue; 764 continue;
719 } 765 }
@@ -850,19 +896,24 @@ globextend(const Char *path, glob_t *pglob, struct glob_lim *limitp,
850 * pattern causes a recursion level. 896 * pattern causes a recursion level.
851 */ 897 */
852static int 898static int
853match(Char *name, Char *pat, Char *patend) 899match(Char *name, Char *pat, Char *patend, int recur)
854{ 900{
855 int ok, negate_range; 901 int ok, negate_range;
856 Char c, k; 902 Char c, k;
857 903
904 if (recur-- == 0)
905 return(GLOB_NOSPACE);
906
858 while (pat < patend) { 907 while (pat < patend) {
859 c = *pat++; 908 c = *pat++;
860 switch (c & M_MASK) { 909 switch (c & M_MASK) {
861 case M_ALL: 910 case M_ALL:
911 while (pat < patend && (*pat & M_MASK) == M_ALL)
912 pat++; /* eat consecutive '*' */
862 if (pat == patend) 913 if (pat == patend)
863 return(1); 914 return(1);
864 do { 915 do {
865 if (match(name, pat, patend)) 916 if (match(name, pat, patend, recur))
866 return(1); 917 return(1);
867 } while (*name++ != EOS); 918 } while (*name++ != EOS);
868 return(0); 919 return(0);
diff --git a/openbsd-compat/inet_ntop.c b/openbsd-compat/inet_ntop.c
index e7ca4b7f8..3259037ba 100644
--- a/openbsd-compat/inet_ntop.c
+++ b/openbsd-compat/inet_ntop.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: inet_ntop.c,v 1.7 2005/08/06 20:30:03 espie Exp $ */ 1/* $OpenBSD: inet_ntop.c,v 1.8 2008/12/09 19:38:38 otto Exp $ */
2 2
3/* Copyright (c) 1996 by Internet Software Consortium. 3/* Copyright (c) 1996 by Internet Software Consortium.
4 * 4 *
@@ -57,13 +57,13 @@ static const char *inet_ntop6(const u_char *src, char *dst, size_t size);
57 * Paul Vixie, 1996. 57 * Paul Vixie, 1996.
58 */ 58 */
59const char * 59const char *
60inet_ntop(int af, const void *src, char *dst, size_t size) 60inet_ntop(int af, const void *src, char *dst, socklen_t size)
61{ 61{
62 switch (af) { 62 switch (af) {
63 case AF_INET: 63 case AF_INET:
64 return (inet_ntop4(src, dst, size)); 64 return (inet_ntop4(src, dst, (size_t)size));
65 case AF_INET6: 65 case AF_INET6:
66 return (inet_ntop6(src, dst, size)); 66 return (inet_ntop6(src, dst, (size_t)size));
67 default: 67 default:
68 errno = EAFNOSUPPORT; 68 errno = EAFNOSUPPORT;
69 return (NULL); 69 return (NULL);
diff --git a/openbsd-compat/mktemp.c b/openbsd-compat/mktemp.c
index 2285c84df..4eb52f421 100644
--- a/openbsd-compat/mktemp.c
+++ b/openbsd-compat/mktemp.c
@@ -1,34 +1,22 @@
1/* THIS FILE HAS BEEN MODIFIED FROM THE ORIGINAL OPENBSD SOURCE */ 1/* THIS FILE HAS BEEN MODIFIED FROM THE ORIGINAL OPENBSD SOURCE */
2/* Changes: Removed mktemp */ 2/* Changes: Removed mktemp */
3 3
4/* $OpenBSD: mktemp.c,v 1.19 2005/08/08 08:05:36 espie Exp $ */ 4/* $OpenBSD: mktemp.c,v 1.30 2010/03/21 23:09:30 schwarze Exp $ */
5/* 5/*
6 * Copyright (c) 1987, 1993 6 * Copyright (c) 1996-1998, 2008 Theo de Raadt
7 * The Regents of the University of California. All rights reserved. 7 * Copyright (c) 1997, 2008-2009 Todd C. Miller
8 * 8 *
9 * Redistribution and use in source and binary forms, with or without 9 * Permission to use, copy, modify, and distribute this software for any
10 * modification, are permitted provided that the following conditions 10 * purpose with or without fee is hereby granted, provided that the above
11 * are met: 11 * copyright notice and this permission notice appear in all copies.
12 * 1. Redistributions of source code must retain the above copyright
13 * notice, this list of conditions and the following disclaimer.
14 * 2. Redistributions in binary form must reproduce the above copyright
15 * notice, this list of conditions and the following disclaimer in the
16 * documentation and/or other materials provided with the distribution.
17 * 3. Neither the name of the University nor the names of its contributors
18 * may be used to endorse or promote products derived from this software
19 * without specific prior written permission.
20 * 12 *
21 * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND 13 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
22 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 14 * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
23 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 15 * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
24 * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE 16 * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
25 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 17 * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
26 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 18 * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
27 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 19 * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
28 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
29 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
30 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
31 * SUCH DAMAGE.
32 */ 20 */
33 21
34/* OPENBSD ORIGINAL: lib/libc/stdio/mktemp.c */ 22/* OPENBSD ORIGINAL: lib/libc/stdio/mktemp.c */
@@ -37,142 +25,117 @@
37 25
38#include <sys/types.h> 26#include <sys/types.h>
39#include <sys/stat.h> 27#include <sys/stat.h>
40 28#include <errno.h>
41#include <fcntl.h> 29#include <fcntl.h>
30#include <limits.h>
31#include <stdio.h>
32#include <stdlib.h>
33#include <string.h>
42#include <ctype.h> 34#include <ctype.h>
43#include <errno.h>
44#include <unistd.h> 35#include <unistd.h>
45 36
46#if !defined(HAVE_MKDTEMP) || defined(HAVE_STRICT_MKSTEMP) 37#if !defined(HAVE_MKDTEMP) || defined(HAVE_STRICT_MKSTEMP)
47 38
48static int _gettemp(char *, int *, int, int); 39#define MKTEMP_NAME 0
40#define MKTEMP_FILE 1
41#define MKTEMP_DIR 2
49 42
50int 43#define TEMPCHARS "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789"
51mkstemps(char *path, int slen) 44#define NUM_CHARS (sizeof(TEMPCHARS) - 1)
45
46static int
47mktemp_internal(char *path, int slen, int mode)
52{ 48{
49 char *start, *cp, *ep;
50 const char *tempchars = TEMPCHARS;
51 unsigned int r, tries;
52 struct stat sb;
53 size_t len;
53 int fd; 54 int fd;
54 55
55 return (_gettemp(path, &fd, 0, slen) ? fd : -1); 56 len = strlen(path);
57 if (len == 0 || slen < 0 || (size_t)slen >= len) {
58 errno = EINVAL;
59 return(-1);
60 }
61 ep = path + len - slen;
62
63 tries = 1;
64 for (start = ep; start > path && start[-1] == 'X'; start--) {
65 if (tries < INT_MAX / NUM_CHARS)
66 tries *= NUM_CHARS;
67 }
68 tries *= 2;
69
70 do {
71 for (cp = start; cp != ep; cp++) {
72 r = arc4random_uniform(NUM_CHARS);
73 *cp = tempchars[r];
74 }
75
76 switch (mode) {
77 case MKTEMP_NAME:
78 if (lstat(path, &sb) != 0)
79 return(errno == ENOENT ? 0 : -1);
80 break;
81 case MKTEMP_FILE:
82 fd = open(path, O_CREAT|O_EXCL|O_RDWR, S_IRUSR|S_IWUSR);
83 if (fd != -1 || errno != EEXIST)
84 return(fd);
85 break;
86 case MKTEMP_DIR:
87 if (mkdir(path, S_IRUSR|S_IWUSR|S_IXUSR) == 0)
88 return(0);
89 if (errno != EEXIST)
90 return(-1);
91 break;
92 }
93 } while (--tries);
94
95 errno = EEXIST;
96 return(-1);
56} 97}
57 98
58int 99#if 0
59mkstemp(char *path) 100char *_mktemp(char *);
60{
61 int fd;
62 101
63 return (_gettemp(path, &fd, 0, 0) ? fd : -1); 102char *
103_mktemp(char *path)
104{
105 if (mktemp_internal(path, 0, MKTEMP_NAME) == -1)
106 return(NULL);
107 return(path);
64} 108}
65 109
110__warn_references(mktemp,
111 "warning: mktemp() possibly used unsafely; consider using mkstemp()");
112
66char * 113char *
67mkdtemp(char *path) 114mktemp(char *path)
68{ 115{
69 return(_gettemp(path, (int *)NULL, 1, 0) ? path : (char *)NULL); 116 return(_mktemp(path));
70} 117}
118#endif
71 119
72static int 120int
73_gettemp(path, doopen, domkdir, slen) 121mkstemp(char *path)
74 char *path;
75 register int *doopen;
76 int domkdir;
77 int slen;
78{ 122{
79 register char *start, *trv, *suffp; 123 return(mktemp_internal(path, 0, MKTEMP_FILE));
80 struct stat sbuf; 124}
81 int rval;
82 pid_t pid;
83 125
84 if (doopen && domkdir) { 126int
85 errno = EINVAL; 127mkstemps(char *path, int slen)
86 return(0); 128{
87 } 129 return(mktemp_internal(path, slen, MKTEMP_FILE));
130}
88 131
89 for (trv = path; *trv; ++trv) 132char *
90 ; 133mkdtemp(char *path)
91 trv -= slen; 134{
92 suffp = trv; 135 int error;
93 --trv;
94 if (trv < path) {
95 errno = EINVAL;
96 return (0);
97 }
98 pid = getpid();
99 while (trv >= path && *trv == 'X' && pid != 0) {
100 *trv-- = (pid % 10) + '0';
101 pid /= 10;
102 }
103 while (trv >= path && *trv == 'X') {
104 char c;
105
106 pid = (arc4random() & 0xffff) % (26+26);
107 if (pid < 26)
108 c = pid + 'A';
109 else
110 c = (pid - 26) + 'a';
111 *trv-- = c;
112 }
113 start = trv + 1;
114
115 /*
116 * check the target directory; if you have six X's and it
117 * doesn't exist this runs for a *very* long time.
118 */
119 if (doopen || domkdir) {
120 for (;; --trv) {
121 if (trv <= path)
122 break;
123 if (*trv == '/') {
124 *trv = '\0';
125 rval = stat(path, &sbuf);
126 *trv = '/';
127 if (rval != 0)
128 return(0);
129 if (!S_ISDIR(sbuf.st_mode)) {
130 errno = ENOTDIR;
131 return(0);
132 }
133 break;
134 }
135 }
136 }
137 136
138 for (;;) { 137 error = mktemp_internal(path, 0, MKTEMP_DIR);
139 if (doopen) { 138 return(error ? NULL : path);
140 if ((*doopen =
141 open(path, O_CREAT|O_EXCL|O_RDWR, 0600)) >= 0)
142 return(1);
143 if (errno != EEXIST)
144 return(0);
145 } else if (domkdir) {
146 if (mkdir(path, 0700) == 0)
147 return(1);
148 if (errno != EEXIST)
149 return(0);
150 } else if (lstat(path, &sbuf))
151 return(errno == ENOENT ? 1 : 0);
152
153 /* tricky little algorithm for backward compatibility */
154 for (trv = start;;) {
155 if (!*trv)
156 return (0);
157 if (*trv == 'Z') {
158 if (trv == suffp)
159 return (0);
160 *trv++ = 'a';
161 } else {
162 if (isdigit(*trv))
163 *trv = 'a';
164 else if (*trv == 'z') /* inc from z to A */
165 *trv = 'A';
166 else {
167 if (trv == suffp)
168 return (0);
169 ++*trv;
170 }
171 break;
172 }
173 }
174 }
175 /*NOTREACHED*/
176} 139}
177 140
178#endif /* !defined(HAVE_MKDTEMP) || defined(HAVE_STRICT_MKSTEMP) */ 141#endif /* !defined(HAVE_MKDTEMP) || defined(HAVE_STRICT_MKSTEMP) */
diff --git a/openbsd-compat/openbsd-compat.h b/openbsd-compat/openbsd-compat.h
index 77c5ed2b1..807acf626 100644
--- a/openbsd-compat/openbsd-compat.h
+++ b/openbsd-compat/openbsd-compat.h
@@ -1,4 +1,4 @@
1/* $Id: openbsd-compat.h,v 1.51 2010/10/07 10:25:29 djm Exp $ */ 1/* $Id: openbsd-compat.h,v 1.52 2011/09/23 01:16:11 djm Exp $ */
2 2
3/* 3/*
4 * Copyright (c) 1999-2003 Damien Miller. All rights reserved. 4 * Copyright (c) 1999-2003 Damien Miller. All rights reserved.
@@ -116,7 +116,7 @@ char *inet_ntoa(struct in_addr in);
116#endif 116#endif
117 117
118#ifndef HAVE_INET_NTOP 118#ifndef HAVE_INET_NTOP
119const char *inet_ntop(int af, const void *src, char *dst, size_t size); 119const char *inet_ntop(int af, const void *src, char *dst, socklen_t size);
120#endif 120#endif
121 121
122#ifndef HAVE_INET_ATON 122#ifndef HAVE_INET_ATON
diff --git a/openbsd-compat/openssl-compat.h b/openbsd-compat/openssl-compat.h
index c5fc24eb4..a151eff38 100644
--- a/openbsd-compat/openssl-compat.h
+++ b/openbsd-compat/openssl-compat.h
@@ -1,4 +1,4 @@
1/* $Id: openssl-compat.h,v 1.19 2011/05/10 01:13:38 dtucker Exp $ */ 1/* $Id: openssl-compat.h,v 1.20 2012/01/17 03:03:39 dtucker Exp $ */
2 2
3/* 3/*
4 * Copyright (c) 2005 Darren Tucker <dtucker@zip.com.au> 4 * Copyright (c) 2005 Darren Tucker <dtucker@zip.com.au>
@@ -130,5 +130,10 @@ int ssh_EVP_CipherInit(EVP_CIPHER_CTX *, const EVP_CIPHER *, unsigned char *,
130int ssh_EVP_Cipher(EVP_CIPHER_CTX *, char *, char *, int); 130int ssh_EVP_Cipher(EVP_CIPHER_CTX *, char *, char *, int);
131int ssh_EVP_CIPHER_CTX_cleanup(EVP_CIPHER_CTX *); 131int ssh_EVP_CIPHER_CTX_cleanup(EVP_CIPHER_CTX *);
132void ssh_OpenSSL_add_all_algorithms(void); 132void ssh_OpenSSL_add_all_algorithms(void);
133
134# ifndef HAVE_HMAC_CTX_INIT
135# define HMAC_CTX_init(a)
136# endif
137
133#endif /* SSH_DONT_OVERLOAD_OPENSSL_FUNCS */ 138#endif /* SSH_DONT_OVERLOAD_OPENSSL_FUNCS */
134 139
diff --git a/openbsd-compat/port-linux.c b/openbsd-compat/port-linux.c
index ef91e4446..2b8a14a59 100644
--- a/openbsd-compat/port-linux.c
+++ b/openbsd-compat/port-linux.c
@@ -1,4 +1,4 @@
1/* $Id: port-linux.c,v 1.16 2011/08/29 06:09:57 djm Exp $ */ 1/* $Id: port-linux.c,v 1.17 2012/03/08 23:25:18 djm Exp $ */
2 2
3/* 3/*
4 * Copyright (c) 2005 Daniel Walsh <dwalsh@redhat.com> 4 * Copyright (c) 2005 Daniel Walsh <dwalsh@redhat.com>
@@ -99,6 +99,7 @@ ssh_selinux_getctxbyname(char *pwname, const char *role)
99 case 0: 99 case 0:
100 error("%s: Failed to get default SELinux security " 100 error("%s: Failed to get default SELinux security "
101 "context for %s", __func__, pwname); 101 "context for %s", __func__, pwname);
102 sc = NULL;
102 break; 103 break;
103 default: 104 default:
104 fatal("%s: Failed to get default SELinux security " 105 fatal("%s: Failed to get default SELinux security "
@@ -114,7 +115,7 @@ ssh_selinux_getctxbyname(char *pwname, const char *role)
114 xfree(lvl); 115 xfree(lvl);
115#endif 116#endif
116 117
117 return (sc); 118 return sc;
118} 119}
119 120
120/* Set the execution context to the default for the specified user */ 121/* Set the execution context to the default for the specified user */
diff --git a/openbsd-compat/setenv.c b/openbsd-compat/setenv.c
index e2a8b6dd3..373b701d9 100644
--- a/openbsd-compat/setenv.c
+++ b/openbsd-compat/setenv.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: setenv.c,v 1.9 2005/08/08 08:05:37 espie Exp $ */ 1/* $OpenBSD: setenv.c,v 1.13 2010/08/23 22:31:50 millert Exp $ */
2/* 2/*
3 * Copyright (c) 1987 Regents of the University of California. 3 * Copyright (c) 1987 Regents of the University of California.
4 * All rights reserved. 4 * All rights reserved.
@@ -31,35 +31,38 @@
31/* OPENBSD ORIGINAL: lib/libc/stdlib/setenv.c */ 31/* OPENBSD ORIGINAL: lib/libc/stdlib/setenv.c */
32 32
33#include "includes.h" 33#include "includes.h"
34
34#if !defined(HAVE_SETENV) || !defined(HAVE_UNSETENV) 35#if !defined(HAVE_SETENV) || !defined(HAVE_UNSETENV)
35 36
37#include <errno.h>
36#include <stdlib.h> 38#include <stdlib.h>
37#include <string.h> 39#include <string.h>
38 40
39extern char **environ; 41extern char **environ;
42static char **lastenv; /* last value of environ */
40 43
41/* OpenSSH Portable: __findenv is from getenv.c rev 1.8, made static */ 44/* OpenSSH Portable: __findenv is from getenv.c rev 1.8, made static */
42/* 45/*
43 * __findenv -- 46 * __findenv --
44 * Returns pointer to value associated with name, if any, else NULL. 47 * Returns pointer to value associated with name, if any, else NULL.
48 * Starts searching within the environmental array at offset.
45 * Sets offset to be the offset of the name/value combination in the 49 * Sets offset to be the offset of the name/value combination in the
46 * environmental array, for use by setenv(3) and unsetenv(3). 50 * environmental array, for use by putenv(3), setenv(3) and unsetenv(3).
47 * Explicitly removes '=' in argument name. 51 * Explicitly removes '=' in argument name.
52 *
53 * This routine *should* be a static; don't use it.
48 */ 54 */
49static char * 55static char *
50__findenv(const char *name, size_t *offset) 56__findenv(const char *name, int len, int *offset)
51{ 57{
52 extern char **environ; 58 extern char **environ;
53 int len, i; 59 int i;
54 const char *np; 60 const char *np;
55 char **p, *cp; 61 char **p, *cp;
56 62
57 if (name == NULL || environ == NULL) 63 if (name == NULL || environ == NULL)
58 return (NULL); 64 return (NULL);
59 for (np = name; *np && *np != '='; ++np) 65 for (p = environ + *offset; (cp = *p) != NULL; ++p) {
60 ;
61 len = np - name;
62 for (p = environ; (cp = *p) != NULL; ++p) {
63 for (np = name, i = len; i && *cp; i--) 66 for (np = name, i = len; i && *cp; i--)
64 if (*cp++ != *np++) 67 if (*cp++ != *np++)
65 break; 68 break;
@@ -71,6 +74,54 @@ __findenv(const char *name, size_t *offset)
71 return (NULL); 74 return (NULL);
72} 75}
73 76
77#if 0 /* nothing uses putenv */
78/*
79 * putenv --
80 * Add a name=value string directly to the environmental, replacing
81 * any current value.
82 */
83int
84putenv(char *str)
85{
86 char **P, *cp;
87 size_t cnt;
88 int offset = 0;
89
90 for (cp = str; *cp && *cp != '='; ++cp)
91 ;
92 if (*cp != '=') {
93 errno = EINVAL;
94 return (-1); /* missing `=' in string */
95 }
96
97 if (__findenv(str, (int)(cp - str), &offset) != NULL) {
98 environ[offset++] = str;
99 /* could be set multiple times */
100 while (__findenv(str, (int)(cp - str), &offset)) {
101 for (P = &environ[offset];; ++P)
102 if (!(*P = *(P + 1)))
103 break;
104 }
105 return (0);
106 }
107
108 /* create new slot for string */
109 for (P = environ; *P != NULL; P++)
110 ;
111 cnt = P - environ;
112 P = (char **)realloc(lastenv, sizeof(char *) * (cnt + 2));
113 if (!P)
114 return (-1);
115 if (lastenv != environ)
116 memcpy(P, environ, cnt * sizeof(char *));
117 lastenv = environ = P;
118 environ[cnt] = str;
119 environ[cnt + 1] = NULL;
120 return (0);
121}
122
123#endif
124
74#ifndef HAVE_SETENV 125#ifndef HAVE_SETENV
75/* 126/*
76 * setenv -- 127 * setenv --
@@ -80,24 +131,39 @@ __findenv(const char *name, size_t *offset)
80int 131int
81setenv(const char *name, const char *value, int rewrite) 132setenv(const char *name, const char *value, int rewrite)
82{ 133{
83 static char **lastenv; /* last value of environ */ 134 char *C, **P;
84 char *C; 135 const char *np;
85 size_t l_value, offset; 136 int l_value, offset = 0;
137
138 for (np = name; *np && *np != '='; ++np)
139 ;
140#ifdef notyet
141 if (*np) {
142 errno = EINVAL;
143 return (-1); /* has `=' in name */
144 }
145#endif
86 146
87 if (*value == '=') /* no `=' in value */
88 ++value;
89 l_value = strlen(value); 147 l_value = strlen(value);
90 if ((C = __findenv(name, &offset))) { /* find if already exists */ 148 if ((C = __findenv(name, (int)(np - name), &offset)) != NULL) {
149 int tmpoff = offset + 1;
91 if (!rewrite) 150 if (!rewrite)
92 return (0); 151 return (0);
152#if 0 /* XXX - existing entry may not be writable */
93 if (strlen(C) >= l_value) { /* old larger; copy over */ 153 if (strlen(C) >= l_value) { /* old larger; copy over */
94 while ((*C++ = *value++)) 154 while ((*C++ = *value++))
95 ; 155 ;
96 return (0); 156 return (0);
97 } 157 }
158#endif
159 /* could be set multiple times */
160 while (__findenv(name, (int)(np - name), &tmpoff)) {
161 for (P = &environ[tmpoff];; ++P)
162 if (!(*P = *(P + 1)))
163 break;
164 }
98 } else { /* create new slot */ 165 } else { /* create new slot */
99 size_t cnt; 166 size_t cnt;
100 char **P;
101 167
102 for (P = environ; *P != NULL; P++) 168 for (P = environ; *P != NULL; P++)
103 ; 169 ;
@@ -111,10 +177,8 @@ setenv(const char *name, const char *value, int rewrite)
111 offset = cnt; 177 offset = cnt;
112 environ[cnt + 1] = NULL; 178 environ[cnt + 1] = NULL;
113 } 179 }
114 for (C = (char *)name; *C && *C != '='; ++C)
115 ; /* no `=' in name */
116 if (!(environ[offset] = /* name + `=' + value */ 180 if (!(environ[offset] = /* name + `=' + value */
117 malloc((size_t)((int)(C - name) + l_value + 2)))) 181 malloc((size_t)((int)(np - name) + l_value + 2))))
118 return (-1); 182 return (-1);
119 for (C = environ[offset]; (*C = *name++) && *C != '='; ++C) 183 for (C = environ[offset]; (*C = *name++) && *C != '='; ++C)
120 ; 184 ;
@@ -122,6 +186,7 @@ setenv(const char *name, const char *value, int rewrite)
122 ; 186 ;
123 return (0); 187 return (0);
124} 188}
189
125#endif /* HAVE_SETENV */ 190#endif /* HAVE_SETENV */
126 191
127#ifndef HAVE_UNSETENV 192#ifndef HAVE_UNSETENV
@@ -129,17 +194,33 @@ setenv(const char *name, const char *value, int rewrite)
129 * unsetenv(name) -- 194 * unsetenv(name) --
130 * Delete environmental variable "name". 195 * Delete environmental variable "name".
131 */ 196 */
132void 197int
133unsetenv(const char *name) 198unsetenv(const char *name)
134{ 199{
135 char **P; 200 char **P;
136 size_t offset; 201 const char *np;
202 int offset = 0;
137 203
138 while (__findenv(name, &offset)) /* if set multiple times */ 204 if (!name || !*name) {
205 errno = EINVAL;
206 return (-1);
207 }
208 for (np = name; *np && *np != '='; ++np)
209 ;
210 if (*np) {
211 errno = EINVAL;
212 return (-1); /* has `=' in name */
213 }
214
215 /* could be set multiple times */
216 while (__findenv(name, (int)(np - name), &offset)) {
139 for (P = &environ[offset];; ++P) 217 for (P = &environ[offset];; ++P)
140 if (!(*P = *(P + 1))) 218 if (!(*P = *(P + 1)))
141 break; 219 break;
220 }
221 return (0);
142} 222}
143#endif /* HAVE_UNSETENV */ 223#endif /* HAVE_UNSETENV */
144 224
145#endif /* !defined(HAVE_SETENV) || !defined(HAVE_UNSETENV) */ 225#endif /* !defined(HAVE_SETENV) || !defined(HAVE_UNSETENV) */
226
diff --git a/openbsd-compat/sha2.c b/openbsd-compat/sha2.c
index cf8e0ad66..f5bf74d1f 100755..100644
--- a/openbsd-compat/sha2.c
+++ b/openbsd-compat/sha2.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: sha2.c,v 1.11 2005/08/08 08:05:35 espie Exp $ */ 1/* from OpenBSD: sha2.c,v 1.11 2005/08/08 08:05:35 espie Exp */
2 2
3/* 3/*
4 * FILE: sha2.c 4 * FILE: sha2.c
diff --git a/openbsd-compat/sha2.h b/openbsd-compat/sha2.h
index 821f2dd6c..73e94f150 100755..100644
--- a/openbsd-compat/sha2.h
+++ b/openbsd-compat/sha2.h
@@ -1,4 +1,4 @@
1/* $OpenBSD: sha2.h,v 1.6 2004/06/22 01:57:30 jfb Exp $ */ 1/* OpenBSD: sha2.h,v 1.6 2004/06/22 01:57:30 jfb Exp */
2 2
3/* 3/*
4 * FILE: sha2.h 4 * FILE: sha2.h
diff --git a/openbsd-compat/strlcpy.c b/openbsd-compat/strlcpy.c
index 679a5b291..b4b1b6015 100644
--- a/openbsd-compat/strlcpy.c
+++ b/openbsd-compat/strlcpy.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: strlcpy.c,v 1.10 2005/08/08 08:05:37 espie Exp $ */ 1/* $OpenBSD: strlcpy.c,v 1.11 2006/05/05 15:27:38 millert Exp $ */
2 2
3/* 3/*
4 * Copyright (c) 1998 Todd C. Miller <Todd.Miller@courtesan.com> 4 * Copyright (c) 1998 Todd C. Miller <Todd.Miller@courtesan.com>
@@ -37,11 +37,11 @@ strlcpy(char *dst, const char *src, size_t siz)
37 size_t n = siz; 37 size_t n = siz;
38 38
39 /* Copy as many bytes as will fit */ 39 /* Copy as many bytes as will fit */
40 if (n != 0 && --n != 0) { 40 if (n != 0) {
41 do { 41 while (--n != 0) {
42 if ((*d++ = *s++) == 0) 42 if ((*d++ = *s++) == '\0')
43 break; 43 break;
44 } while (--n != 0); 44 }
45 } 45 }
46 46
47 /* Not enough room in dst, add NUL and traverse rest of src */ 47 /* Not enough room in dst, add NUL and traverse rest of src */
diff --git a/openbsd-compat/strnlen.c b/openbsd-compat/strnlen.c
new file mode 100644
index 000000000..93d515595
--- /dev/null
+++ b/openbsd-compat/strnlen.c
@@ -0,0 +1,37 @@
1/* $OpenBSD: strnlen.c,v 1.3 2010/06/02 12:58:12 millert Exp $ */
2
3/*
4 * Copyright (c) 2010 Todd C. Miller <Todd.Miller@courtesan.com>
5 *
6 * Permission to use, copy, modify, and distribute this software for any
7 * purpose with or without fee is hereby granted, provided that the above
8 * copyright notice and this permission notice appear in all copies.
9 *
10 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
11 * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
12 * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
13 * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
14 * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
15 * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
16 * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
17 */
18
19/* OPENBSD ORIGINAL: lib/libc/string/strnlen.c */
20
21#include "config.h"
22#ifndef HAVE_STRNLEN
23#include <sys/types.h>
24
25#include <string.h>
26
27size_t
28strnlen(const char *str, size_t maxlen)
29{
30 const char *cp;
31
32 for (cp = str; maxlen != 0 && *cp != '\0'; cp++, maxlen--)
33 ;
34
35 return (size_t)(cp - str);
36}
37#endif
diff --git a/packet.c b/packet.c
index ba9341731..d0c66fe57 100644
--- a/packet.c
+++ b/packet.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: packet.c,v 1.173 2011/05/06 21:14:05 djm Exp $ */ 1/* $OpenBSD: packet.c,v 1.176 2012/01/25 19:40:09 markus Exp $ */
2/* 2/*
3 * Author: Tatu Ylonen <ylo@cs.hut.fi> 3 * Author: Tatu Ylonen <ylo@cs.hut.fi>
4 * Copyright (c) 1995 Tatu Ylonen <ylo@cs.hut.fi>, Espoo, Finland 4 * Copyright (c) 1995 Tatu Ylonen <ylo@cs.hut.fi>, Espoo, Finland
@@ -242,7 +242,7 @@ packet_set_connection(int fd_in, int fd_out)
242void 242void
243packet_set_timeout(int timeout, int count) 243packet_set_timeout(int timeout, int count)
244{ 244{
245 if (timeout == 0 || count == 0) { 245 if (timeout <= 0 || count <= 0) {
246 active_state->packet_timeout_ms = -1; 246 active_state->packet_timeout_ms = -1;
247 return; 247 return;
248 } 248 }
@@ -432,8 +432,6 @@ packet_connection_af(void)
432 if (getsockname(active_state->connection_out, (struct sockaddr *)&to, 432 if (getsockname(active_state->connection_out, (struct sockaddr *)&to,
433 &tolen) < 0) 433 &tolen) < 0)
434 return 0; 434 return 0;
435 if (to.ss_family == AF_INET)
436 return 1;
437#ifdef IPV4_IN_IPV6 435#ifdef IPV4_IN_IPV6
438 if (to.ss_family == AF_INET6 && 436 if (to.ss_family == AF_INET6 &&
439 IN6_IS_ADDR_V4MAPPED(&((struct sockaddr_in6 *)&to)->sin6_addr)) 437 IN6_IS_ADDR_V4MAPPED(&((struct sockaddr_in6 *)&to)->sin6_addr))
@@ -972,8 +970,10 @@ packet_send2(void)
972 970
973 /* during rekeying we can only send key exchange messages */ 971 /* during rekeying we can only send key exchange messages */
974 if (active_state->rekeying) { 972 if (active_state->rekeying) {
975 if (!((type >= SSH2_MSG_TRANSPORT_MIN) && 973 if ((type < SSH2_MSG_TRANSPORT_MIN) ||
976 (type <= SSH2_MSG_TRANSPORT_MAX))) { 974 (type > SSH2_MSG_TRANSPORT_MAX) ||
975 (type == SSH2_MSG_SERVICE_REQUEST) ||
976 (type == SSH2_MSG_SERVICE_ACCEPT)) {
977 debug("enqueue packet: %u", type); 977 debug("enqueue packet: %u", type);
978 p = xmalloc(sizeof(*p)); 978 p = xmalloc(sizeof(*p));
979 p->type = type; 979 p->type = type;
@@ -1448,12 +1448,6 @@ packet_read_poll_seqnr(u_int32_t *seqnr_p)
1448 } 1448 }
1449} 1449}
1450 1450
1451int
1452packet_read_poll(void)
1453{
1454 return packet_read_poll_seqnr(NULL);
1455}
1456
1457/* 1451/*
1458 * Buffers the given amount of input characters. This is intended to be used 1452 * Buffers the given amount of input characters. This is intended to be used
1459 * together with packet_read_poll. 1453 * together with packet_read_poll.
diff --git a/packet.h b/packet.h
index 90eec17a9..09ba07951 100644
--- a/packet.h
+++ b/packet.h
@@ -1,4 +1,4 @@
1/* $OpenBSD: packet.h,v 1.56 2011/05/06 21:14:05 djm Exp $ */ 1/* $OpenBSD: packet.h,v 1.57 2012/01/25 19:40:09 markus Exp $ */
2 2
3/* 3/*
4 * Author: Tatu Ylonen <ylo@cs.hut.fi> 4 * Author: Tatu Ylonen <ylo@cs.hut.fi>
@@ -55,7 +55,6 @@ void packet_send(void);
55 55
56int packet_read(void); 56int packet_read(void);
57void packet_read_expect(int type); 57void packet_read_expect(int type);
58int packet_read_poll(void);
59void packet_process_incoming(const char *buf, u_int len); 58void packet_process_incoming(const char *buf, u_int len);
60int packet_read_seqnr(u_int32_t *seqnr_p); 59int packet_read_seqnr(u_int32_t *seqnr_p);
61int packet_read_poll_seqnr(u_int32_t *seqnr_p); 60int packet_read_poll_seqnr(u_int32_t *seqnr_p);
diff --git a/readconf.c b/readconf.c
index 7a26e923b..a34cbe707 100644
--- a/readconf.c
+++ b/readconf.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: readconf.c,v 1.193 2011/05/24 07:15:47 djm Exp $ */ 1/* $OpenBSD: readconf.c,v 1.194 2011/09/23 07:45:05 markus Exp $ */
2/* 2/*
3 * Author: Tatu Ylonen <ylo@cs.hut.fi> 3 * Author: Tatu Ylonen <ylo@cs.hut.fi>
4 * Copyright (c) 1995 Tatu Ylonen <ylo@cs.hut.fi>, Espoo, Finland 4 * Copyright (c) 1995 Tatu Ylonen <ylo@cs.hut.fi>, Espoo, Finland
@@ -312,6 +312,7 @@ add_remote_forward(Options *options, const Forward *newfwd)
312 fwd->listen_port = newfwd->listen_port; 312 fwd->listen_port = newfwd->listen_port;
313 fwd->connect_host = newfwd->connect_host; 313 fwd->connect_host = newfwd->connect_host;
314 fwd->connect_port = newfwd->connect_port; 314 fwd->connect_port = newfwd->connect_port;
315 fwd->handle = newfwd->handle;
315 fwd->allocated_port = 0; 316 fwd->allocated_port = 0;
316} 317}
317 318
diff --git a/readconf.h b/readconf.h
index 2d9005ffa..c5cad9ccf 100644
--- a/readconf.h
+++ b/readconf.h
@@ -1,4 +1,4 @@
1/* $OpenBSD: readconf.h,v 1.90 2011/05/24 07:15:47 djm Exp $ */ 1/* $OpenBSD: readconf.h,v 1.91 2011/09/23 07:45:05 markus Exp $ */
2 2
3/* 3/*
4 * Author: Tatu Ylonen <ylo@cs.hut.fi> 4 * Author: Tatu Ylonen <ylo@cs.hut.fi>
@@ -24,6 +24,7 @@ typedef struct {
24 char *connect_host; /* Host to connect. */ 24 char *connect_host; /* Host to connect. */
25 int connect_port; /* Port to connect on connect_host. */ 25 int connect_port; /* Port to connect on connect_host. */
26 int allocated_port; /* Dynamically allocated listen port */ 26 int allocated_port; /* Dynamically allocated listen port */
27 int handle; /* Handle for dynamic listen ports */
27} Forward; 28} Forward;
28/* Data structure for representing option data. */ 29/* Data structure for representing option data. */
29 30
diff --git a/regress/keytype.sh b/regress/keytype.sh
index 2cbf132bd..cb40c6864 100644
--- a/regress/keytype.sh
+++ b/regress/keytype.sh
@@ -3,7 +3,7 @@
3 3
4tid="login with different key types" 4tid="login with different key types"
5 5
6TIME=`which time` 2>/dev/null 6TIME=`which time 2>/dev/null`
7if test ! -x "$TIME"; then 7if test ! -x "$TIME"; then
8 TIME="" 8 TIME=""
9fi 9fi
diff --git a/roaming.h b/roaming.h
index 6bb94cc39..da069f878 100644
--- a/roaming.h
+++ b/roaming.h
@@ -1,4 +1,4 @@
1/* $OpenBSD: roaming.h,v 1.5 2009/10/24 11:11:58 andreas Exp $ */ 1/* $OpenBSD: roaming.h,v 1.6 2011/12/07 05:44:38 djm Exp $ */
2/* 2/*
3 * Copyright (c) 2004-2009 AppGate Network Security AB 3 * Copyright (c) 2004-2009 AppGate Network Security AB
4 * 4 *
@@ -18,8 +18,9 @@
18#ifndef ROAMING_H 18#ifndef ROAMING_H
19#define ROAMING_H 19#define ROAMING_H
20 20
21#define DEFAULT_ROAMBUF 65536 21#define DEFAULT_ROAMBUF 65536
22#define ROAMING_REQUEST "roaming@appgate.com" 22#define MAX_ROAMBUF (2*1024*1024) /* XXX arbitrary */
23#define ROAMING_REQUEST "roaming@appgate.com"
23 24
24extern int roaming_enabled; 25extern int roaming_enabled;
25extern int resume_in_progress; 26extern int resume_in_progress;
diff --git a/roaming_client.c b/roaming_client.c
index cea8e7360..48009d781 100644
--- a/roaming_client.c
+++ b/roaming_client.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: roaming_client.c,v 1.3 2010/01/18 01:50:27 dtucker Exp $ */ 1/* $OpenBSD: roaming_client.c,v 1.4 2011/12/07 05:44:38 djm Exp $ */
2/* 2/*
3 * Copyright (c) 2004-2009 AppGate Network Security AB 3 * Copyright (c) 2004-2009 AppGate Network Security AB
4 * 4 *
@@ -72,7 +72,7 @@ roaming_reply(int type, u_int32_t seq, void *ctxt)
72 cookie = packet_get_int64(); 72 cookie = packet_get_int64();
73 key1 = oldkey1 = packet_get_int64(); 73 key1 = oldkey1 = packet_get_int64();
74 key2 = oldkey2 = packet_get_int64(); 74 key2 = oldkey2 = packet_get_int64();
75 set_out_buffer_size(packet_get_int() + get_snd_buf_size()); 75 set_out_buffer_size(packet_get_int() + get_snd_buf_size());
76 roaming_enabled = 1; 76 roaming_enabled = 1;
77} 77}
78 78
diff --git a/roaming_common.c b/roaming_common.c
index 9adbe56fc..8d0b6054a 100644
--- a/roaming_common.c
+++ b/roaming_common.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: roaming_common.c,v 1.8 2010/01/12 00:59:29 djm Exp $ */ 1/* $OpenBSD: roaming_common.c,v 1.9 2011/12/07 05:44:38 djm Exp $ */
2/* 2/*
3 * Copyright (c) 2004-2009 AppGate Network Security AB 3 * Copyright (c) 2004-2009 AppGate Network Security AB
4 * 4 *
@@ -75,6 +75,8 @@ get_recv_buf_size()
75void 75void
76set_out_buffer_size(size_t size) 76set_out_buffer_size(size_t size)
77{ 77{
78 if (size == 0 || size > MAX_ROAMBUF)
79 fatal("%s: bad buffer size %lu", __func__, (u_long)size);
78 /* 80 /*
79 * The buffer size can only be set once and the buffer will live 81 * The buffer size can only be set once and the buffer will live
80 * as long as the session lives. 82 * as long as the session lives.
diff --git a/sandbox-seccomp-filter.c b/sandbox-seccomp-filter.c
new file mode 100644
index 000000000..686812957
--- /dev/null
+++ b/sandbox-seccomp-filter.c
@@ -0,0 +1,222 @@
1/*
2 * Copyright (c) 2012 Will Drewry <wad@dataspill.org>
3 *
4 * Permission to use, copy, modify, and distribute this software for any
5 * purpose with or without fee is hereby granted, provided that the above
6 * copyright notice and this permission notice appear in all copies.
7 *
8 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
9 * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
10 * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
11 * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
12 * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
13 * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
14 * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
15 */
16
17/*
18 * Uncomment the SANDBOX_SECCOMP_FILTER_DEBUG macro below to help diagnose
19 * filter breakage during development. *Do not* use this in production,
20 * as it relies on making library calls that are unsafe in signal context.
21 *
22 * Instead, live systems the auditctl(8) may be used to monitor failures.
23 * E.g.
24 * auditctl -a task,always -F uid=<privsep uid>
25 */
26/* #define SANDBOX_SECCOMP_FILTER_DEBUG 1 */
27
28#ifdef SANDBOX_SECCOMP_FILTER_DEBUG
29/* Use the kernel headers in case of an older toolchain. */
30# include <asm/siginfo.h>
31# define __have_siginfo_t 1
32# define __have_sigval_t 1
33# define __have_sigevent_t 1
34#endif /* SANDBOX_SECCOMP_FILTER_DEBUG */
35
36#include "includes.h"
37
38#ifdef SANDBOX_SECCOMP_FILTER
39
40#include <sys/types.h>
41#include <sys/resource.h>
42#include <sys/prctl.h>
43
44#include <linux/audit.h>
45#include <linux/filter.h>
46#include <linux/seccomp.h>
47
48#include <asm/unistd.h>
49
50#include <errno.h>
51#include <signal.h>
52#include <stdarg.h>
53#include <stddef.h> /* for offsetof */
54#include <stdio.h>
55#include <stdlib.h>
56#include <string.h>
57#include <unistd.h>
58
59#include "log.h"
60#include "ssh-sandbox.h"
61#include "xmalloc.h"
62
63/* Linux seccomp_filter sandbox */
64#define SECCOMP_FILTER_FAIL SECCOMP_RET_KILL
65
66/* Use a signal handler to emit violations when debugging */
67#ifdef SANDBOX_SECCOMP_FILTER_DEBUG
68# undef SECCOMP_FILTER_FAIL
69# define SECCOMP_FILTER_FAIL SECCOMP_RET_TRAP
70#endif /* SANDBOX_SECCOMP_FILTER_DEBUG */
71
72/* Simple helpers to avoid manual errors (but larger BPF programs). */
73#define SC_DENY(_nr, _errno) \
74 BPF_JUMP(BPF_JMP+BPF_JEQ+BPF_K, __NR_ ## _nr, 0, 1), \
75 BPF_STMT(BPF_RET+BPF_K, SECCOMP_RET_ERRNO|(_errno))
76#define SC_ALLOW(_nr) \
77 BPF_JUMP(BPF_JMP+BPF_JEQ+BPF_K, __NR_ ## _nr, 0, 1), \
78 BPF_STMT(BPF_RET+BPF_K, SECCOMP_RET_ALLOW)
79
80/* Syscall filtering set for preauth. */
81static const struct sock_filter preauth_insns[] = {
82 /* Ensure the syscall arch convention is as expected. */
83 BPF_STMT(BPF_LD+BPF_W+BPF_ABS,
84 offsetof(struct seccomp_data, arch)),
85 BPF_JUMP(BPF_JMP+BPF_JEQ+BPF_K, SECCOMP_AUDIT_ARCH, 1, 0),
86 BPF_STMT(BPF_RET+BPF_K, SECCOMP_FILTER_FAIL),
87 /* Load the syscall number for checking. */
88 BPF_STMT(BPF_LD+BPF_W+BPF_ABS,
89 offsetof(struct seccomp_data, nr)),
90 SC_DENY(open, EACCES),
91 SC_ALLOW(getpid),
92 SC_ALLOW(gettimeofday),
93 SC_ALLOW(time),
94 SC_ALLOW(read),
95 SC_ALLOW(write),
96 SC_ALLOW(close),
97 SC_ALLOW(brk),
98 SC_ALLOW(poll),
99#ifdef __NR__newselect
100 SC_ALLOW(_newselect),
101#else
102 SC_ALLOW(select),
103#endif
104 SC_ALLOW(madvise),
105 SC_ALLOW(mmap),
106 SC_ALLOW(munmap),
107 SC_ALLOW(exit_group),
108#ifdef __NR_rt_sigprocmask
109 SC_ALLOW(rt_sigprocmask),
110#else
111 SC_ALLOW(sigprocmask),
112#endif
113 BPF_STMT(BPF_RET+BPF_K, SECCOMP_FILTER_FAIL),
114};
115
116static const struct sock_fprog preauth_program = {
117 .len = (unsigned short)(sizeof(preauth_insns)/sizeof(preauth_insns[0])),
118 .filter = (struct sock_filter *)preauth_insns,
119};
120
121struct ssh_sandbox {
122 pid_t child_pid;
123};
124
125struct ssh_sandbox *
126ssh_sandbox_init(void)
127{
128 struct ssh_sandbox *box;
129
130 /*
131 * Strictly, we don't need to maintain any state here but we need
132 * to return non-NULL to satisfy the API.
133 */
134 debug3("%s: preparing seccomp filter sandbox", __func__);
135 box = xcalloc(1, sizeof(*box));
136 box->child_pid = 0;
137
138 return box;
139}
140
141#ifdef SANDBOX_SECCOMP_FILTER_DEBUG
142extern struct monitor *pmonitor;
143void mm_log_handler(LogLevel level, const char *msg, void *ctx);
144
145static void
146ssh_sandbox_violation(int signum, siginfo_t *info, void *void_context)
147{
148 char msg[256];
149
150 snprintf(msg, sizeof(msg),
151 "%s: unexpected system call (arch:0x%x,syscall:%d @ %p)",
152 __func__, info->si_arch, info->si_syscall, info->si_call_addr);
153 mm_log_handler(SYSLOG_LEVEL_FATAL, msg, pmonitor);
154 _exit(1);
155}
156
157static void
158ssh_sandbox_child_debugging(void)
159{
160 struct sigaction act;
161 sigset_t mask;
162
163 debug3("%s: installing SIGSYS handler", __func__);
164 memset(&act, 0, sizeof(act));
165 sigemptyset(&mask);
166 sigaddset(&mask, SIGSYS);
167
168 act.sa_sigaction = &ssh_sandbox_violation;
169 act.sa_flags = SA_SIGINFO;
170 if (sigaction(SIGSYS, &act, NULL) == -1)
171 fatal("%s: sigaction(SIGSYS): %s", __func__, strerror(errno));
172 if (sigprocmask(SIG_UNBLOCK, &mask, NULL) == -1)
173 fatal("%s: sigprocmask(SIGSYS): %s",
174 __func__, strerror(errno));
175}
176#endif /* SANDBOX_SECCOMP_FILTER_DEBUG */
177
178void
179ssh_sandbox_child(struct ssh_sandbox *box)
180{
181 struct rlimit rl_zero;
182
183 /* Set rlimits for completeness if possible. */
184 rl_zero.rlim_cur = rl_zero.rlim_max = 0;
185 if (setrlimit(RLIMIT_FSIZE, &rl_zero) == -1)
186 fatal("%s: setrlimit(RLIMIT_FSIZE, { 0, 0 }): %s",
187 __func__, strerror(errno));
188 if (setrlimit(RLIMIT_NOFILE, &rl_zero) == -1)
189 fatal("%s: setrlimit(RLIMIT_NOFILE, { 0, 0 }): %s",
190 __func__, strerror(errno));
191 if (setrlimit(RLIMIT_NPROC, &rl_zero) == -1)
192 fatal("%s: setrlimit(RLIMIT_NPROC, { 0, 0 }): %s",
193 __func__, strerror(errno));
194
195#ifdef SANDBOX_SECCOMP_FILTER_DEBUG
196 ssh_sandbox_child_debugging();
197#endif /* SANDBOX_SECCOMP_FILTER_DEBUG */
198
199 debug3("%s: setting PR_SET_NO_NEW_PRIVS", __func__);
200 if (prctl(PR_SET_NO_NEW_PRIVS, 1, 0, 0, 0) == -1)
201 fatal("%s: prctl(PR_SET_NO_NEW_PRIVS): %s",
202 __func__, strerror(errno));
203 debug3("%s: attaching seccomp filter program", __func__);
204 if (prctl(PR_SET_SECCOMP, SECCOMP_MODE_FILTER, &preauth_program) == -1)
205 fatal("%s: prctl(PR_SET_SECCOMP): %s",
206 __func__, strerror(errno));
207}
208
209void
210ssh_sandbox_parent_finish(struct ssh_sandbox *box)
211{
212 free(box);
213 debug3("%s: finished", __func__);
214}
215
216void
217ssh_sandbox_parent_preauth(struct ssh_sandbox *box, pid_t child_pid)
218{
219 box->child_pid = child_pid;
220}
221
222#endif /* SANDBOX_SECCOMP_FILTER */
diff --git a/scp.0 b/scp.0
index a4fad8ade..9945c8c35 100644
--- a/scp.0
+++ b/scp.0
@@ -77,6 +77,7 @@ DESCRIPTION
77 ConnectTimeout 77 ConnectTimeout
78 ControlMaster 78 ControlMaster
79 ControlPath 79 ControlPath
80 ControlPersist
80 GlobalKnownHostsFile 81 GlobalKnownHostsFile
81 GSSAPIAuthentication 82 GSSAPIAuthentication
82 GSSAPIDelegateCredentials 83 GSSAPIDelegateCredentials
@@ -89,6 +90,7 @@ DESCRIPTION
89 IdentityFile 90 IdentityFile
90 IdentitiesOnly 91 IdentitiesOnly
91 IPQoS 92 IPQoS
93 KbdInteractiveAuthentication
92 KbdInteractiveDevices 94 KbdInteractiveDevices
93 KexAlgorithms 95 KexAlgorithms
94 LogLevel 96 LogLevel
@@ -153,4 +155,4 @@ AUTHORS
153 Timo Rinne <tri@iki.fi> 155 Timo Rinne <tri@iki.fi>
154 Tatu Ylonen <ylo@cs.hut.fi> 156 Tatu Ylonen <ylo@cs.hut.fi>
155 157
156OpenBSD 5.0 December 9, 2010 OpenBSD 5.0 158OpenBSD 5.0 September 5, 2011 OpenBSD 5.0
diff --git a/scp.1 b/scp.1
index 577dd52c1..734b97bb1 100644
--- a/scp.1
+++ b/scp.1
@@ -8,9 +8,9 @@
8.\" 8.\"
9.\" Created: Sun May 7 00:14:37 1995 ylo 9.\" Created: Sun May 7 00:14:37 1995 ylo
10.\" 10.\"
11.\" $OpenBSD: scp.1,v 1.56 2010/12/09 14:13:32 jmc Exp $ 11.\" $OpenBSD: scp.1,v 1.58 2011/09/05 07:01:44 jmc Exp $
12.\" 12.\"
13.Dd $Mdocdate: December 9 2010 $ 13.Dd $Mdocdate: September 5 2011 $
14.Dt SCP 1 14.Dt SCP 1
15.Os 15.Os
16.Sh NAME 16.Sh NAME
@@ -31,7 +31,7 @@
31.Oo 31.Oo
32.Op Ar user No @ 32.Op Ar user No @
33.Ar host1 No : 33.Ar host1 No :
34.Oc Ns Ar file1 34.Oc Ar file1
35.Sm on 35.Sm on
36.Ar ... 36.Ar ...
37.Sm off 37.Sm off
@@ -140,6 +140,7 @@ For full details of the options listed below, and their possible values, see
140.It ConnectTimeout 140.It ConnectTimeout
141.It ControlMaster 141.It ControlMaster
142.It ControlPath 142.It ControlPath
143.It ControlPersist
143.It GlobalKnownHostsFile 144.It GlobalKnownHostsFile
144.It GSSAPIAuthentication 145.It GSSAPIAuthentication
145.It GSSAPIDelegateCredentials 146.It GSSAPIDelegateCredentials
@@ -152,6 +153,7 @@ For full details of the options listed below, and their possible values, see
152.It IdentityFile 153.It IdentityFile
153.It IdentitiesOnly 154.It IdentitiesOnly
154.It IPQoS 155.It IPQoS
156.It KbdInteractiveAuthentication
155.It KbdInteractiveDevices 157.It KbdInteractiveDevices
156.It KexAlgorithms 158.It KexAlgorithms
157.It LogLevel 159.It LogLevel
diff --git a/scp.c b/scp.c
index 69344b804..c08d122ea 100644
--- a/scp.c
+++ b/scp.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: scp.c,v 1.170 2010/12/09 14:13:33 jmc Exp $ */ 1/* $OpenBSD: scp.c,v 1.171 2011/09/09 22:37:01 djm Exp $ */
2/* 2/*
3 * scp - secure remote copy. This is basically patched BSD rcp which 3 * scp - secure remote copy. This is basically patched BSD rcp which
4 * uses ssh to do the data transfer (instead of using rcmd). 4 * uses ssh to do the data transfer (instead of using rcmd).
@@ -609,12 +609,14 @@ toremote(char *targ, int argc, char **argv)
609 host = cleanhostname(argv[i]); 609 host = cleanhostname(argv[i]);
610 suser = NULL; 610 suser = NULL;
611 } 611 }
612 xasprintf(&bp, "%s -f -- %s", cmd, src); 612 xasprintf(&bp, "%s -f %s%s", cmd,
613 *src == '-' ? "-- " : "", src);
613 if (do_cmd(host, suser, bp, &remin, &remout) < 0) 614 if (do_cmd(host, suser, bp, &remin, &remout) < 0)
614 exit(1); 615 exit(1);
615 (void) xfree(bp); 616 (void) xfree(bp);
616 host = cleanhostname(thost); 617 host = cleanhostname(thost);
617 xasprintf(&bp, "%s -t -- %s", cmd, targ); 618 xasprintf(&bp, "%s -t %s%s", cmd,
619 *targ == '-' ? "-- " : "", targ);
618 if (do_cmd2(host, tuser, bp, remin, remout) < 0) 620 if (do_cmd2(host, tuser, bp, remin, remout) < 0)
619 exit(1); 621 exit(1);
620 (void) xfree(bp); 622 (void) xfree(bp);
@@ -660,7 +662,8 @@ toremote(char *targ, int argc, char **argv)
660 errs = 1; 662 errs = 1;
661 } else { /* local to remote */ 663 } else { /* local to remote */
662 if (remin == -1) { 664 if (remin == -1) {
663 xasprintf(&bp, "%s -t -- %s", cmd, targ); 665 xasprintf(&bp, "%s -t %s%s", cmd,
666 *targ == '-' ? "-- " : "", targ);
664 host = cleanhostname(thost); 667 host = cleanhostname(thost);
665 if (do_cmd(host, tuser, bp, &remin, 668 if (do_cmd(host, tuser, bp, &remin,
666 &remout) < 0) 669 &remout) < 0)
@@ -713,7 +716,8 @@ tolocal(int argc, char **argv)
713 suser = pwd->pw_name; 716 suser = pwd->pw_name;
714 } 717 }
715 host = cleanhostname(host); 718 host = cleanhostname(host);
716 xasprintf(&bp, "%s -f -- %s", cmd, src); 719 xasprintf(&bp, "%s -f %s%s",
720 cmd, *src == '-' ? "-- " : "", src);
717 if (do_cmd(host, suser, bp, &remin, &remout) < 0) { 721 if (do_cmd(host, suser, bp, &remin, &remout) < 0) {
718 (void) xfree(bp); 722 (void) xfree(bp);
719 ++errs; 723 ++errs;
diff --git a/servconf.c b/servconf.c
index 1911ac540..5b3f6f50b 100644
--- a/servconf.c
+++ b/servconf.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: servconf.c,v 1.222 2011/06/22 21:57:01 djm Exp $ */ 1/* $OpenBSD: servconf.c,v 1.223 2011/09/23 00:22:04 dtucker Exp $ */
2/* 2/*
3 * Copyright (c) 1995 Tatu Ylonen <ylo@cs.hut.fi>, Espoo, Finland 3 * Copyright (c) 1995 Tatu Ylonen <ylo@cs.hut.fi>, Espoo, Finland
4 * All rights reserved 4 * All rights reserved
@@ -1387,7 +1387,7 @@ process_server_config_line(ServerOptions *options, char *line,
1387 fatal("%s line %d: missing host in PermitOpen", 1387 fatal("%s line %d: missing host in PermitOpen",
1388 filename, linenum); 1388 filename, linenum);
1389 p = cleanhostname(p); 1389 p = cleanhostname(p);
1390 if (arg == NULL || (port = a2port(arg)) <= 0) 1390 if (arg == NULL || ((port = permitopen_port(arg)) < 0))
1391 fatal("%s line %d: bad port number in " 1391 fatal("%s line %d: bad port number in "
1392 "PermitOpen", filename, linenum); 1392 "PermitOpen", filename, linenum);
1393 if (*activep && n == -1) 1393 if (*activep && n == -1)
diff --git a/session.c b/session.c
index 5b34aa2a2..596cc8859 100644
--- a/session.c
+++ b/session.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: session.c,v 1.258 2010/11/25 04:10:09 djm Exp $ */ 1/* $OpenBSD: session.c,v 1.259 2011/10/24 02:13:13 djm Exp $ */
2/* 2/*
3 * Copyright (c) 1995 Tatu Ylonen <ylo@cs.hut.fi>, Espoo, Finland 3 * Copyright (c) 1995 Tatu Ylonen <ylo@cs.hut.fi>, Espoo, Finland
4 * All rights reserved 4 * All rights reserved
@@ -2166,7 +2166,7 @@ session_break_req(Session *s)
2166 packet_get_int(); /* ignored */ 2166 packet_get_int(); /* ignored */
2167 packet_check_eom(); 2167 packet_check_eom();
2168 2168
2169 if (s->ttyfd == -1 || tcsendbreak(s->ttyfd, 0) < 0) 2169 if (s->ptymaster == -1 || tcsendbreak(s->ptymaster, 0) < 0)
2170 return 0; 2170 return 0;
2171 return 1; 2171 return 1;
2172} 2172}
diff --git a/sftp-client.c b/sftp-client.c
index caa384b4e..d7eff70b4 100644
--- a/sftp-client.c
+++ b/sftp-client.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: sftp-client.c,v 1.94 2010/12/04 00:18:01 djm Exp $ */ 1/* $OpenBSD: sftp-client.c,v 1.96 2011/09/12 08:46:15 markus Exp $ */
2/* 2/*
3 * Copyright (c) 2001-2004 Damien Miller <djm@openbsd.org> 3 * Copyright (c) 2001-2004 Damien Miller <djm@openbsd.org>
4 * 4 *
@@ -462,12 +462,12 @@ do_lsreaddir(struct sftp_conn *conn, char *path, int printflag,
462 buffer_put_cstring(&msg, path); 462 buffer_put_cstring(&msg, path);
463 send_msg(conn, &msg); 463 send_msg(conn, &msg);
464 464
465 buffer_clear(&msg);
466
467 handle = get_handle(conn, id, &handle_len, 465 handle = get_handle(conn, id, &handle_len,
468 "remote readdir(\"%s\")", path); 466 "remote readdir(\"%s\")", path);
469 if (handle == NULL) 467 if (handle == NULL) {
468 buffer_free(&msg);
470 return -1; 469 return -1;
470 }
471 471
472 if (dir) { 472 if (dir) {
473 ents = 0; 473 ents = 0;
@@ -510,6 +510,7 @@ do_lsreaddir(struct sftp_conn *conn, char *path, int printflag,
510 fx2txt(status)); 510 fx2txt(status));
511 do_close(conn, handle, handle_len); 511 do_close(conn, handle, handle_len);
512 xfree(handle); 512 xfree(handle);
513 buffer_free(&msg);
513 return(status); 514 return(status);
514 } 515 }
515 } else if (type != SSH2_FXP_NAME) 516 } else if (type != SSH2_FXP_NAME)
@@ -805,15 +806,15 @@ do_hardlink(struct sftp_conn *conn, char *oldpath, char *newpath)
805 Buffer msg; 806 Buffer msg;
806 u_int status, id; 807 u_int status, id;
807 808
808 buffer_init(&msg);
809
810 /* Send link request */
811 id = conn->msg_id++;
812 if ((conn->exts & SFTP_EXT_HARDLINK) == 0) { 809 if ((conn->exts & SFTP_EXT_HARDLINK) == 0) {
813 error("Server does not support hardlink@openssh.com extension"); 810 error("Server does not support hardlink@openssh.com extension");
814 return -1; 811 return -1;
815 } 812 }
816 813
814 buffer_init(&msg);
815
816 /* Send link request */
817 id = conn->msg_id++;
817 buffer_put_char(&msg, SSH2_FXP_EXTENDED); 818 buffer_put_char(&msg, SSH2_FXP_EXTENDED);
818 buffer_put_int(&msg, id); 819 buffer_put_int(&msg, id);
819 buffer_put_cstring(&msg, "hardlink@openssh.com"); 820 buffer_put_cstring(&msg, "hardlink@openssh.com");
@@ -889,6 +890,7 @@ do_readlink(struct sftp_conn *conn, char *path)
889 u_int status = buffer_get_int(&msg); 890 u_int status = buffer_get_int(&msg);
890 891
891 error("Couldn't readlink: %s", fx2txt(status)); 892 error("Couldn't readlink: %s", fx2txt(status));
893 buffer_free(&msg);
892 return(NULL); 894 return(NULL);
893 } else if (type != SSH2_FXP_NAME) 895 } else if (type != SSH2_FXP_NAME)
894 fatal("Expected SSH2_FXP_NAME(%u) packet, got %u", 896 fatal("Expected SSH2_FXP_NAME(%u) packet, got %u",
diff --git a/sftp-glob.c b/sftp-glob.c
index cdc270827..06bf157ca 100644
--- a/sftp-glob.c
+++ b/sftp-glob.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: sftp-glob.c,v 1.22 2006/08/03 03:34:42 deraadt Exp $ */ 1/* $OpenBSD: sftp-glob.c,v 1.23 2011/10/04 14:17:32 djm Exp $ */
2/* 2/*
3 * Copyright (c) 2001-2004 Damien Miller <djm@openbsd.org> 3 * Copyright (c) 2001-2004 Damien Miller <djm@openbsd.org>
4 * 4 *
@@ -111,7 +111,7 @@ fudge_lstat(const char *path, struct stat *st)
111{ 111{
112 Attrib *a; 112 Attrib *a;
113 113
114 if (!(a = do_lstat(cur.conn, (char *)path, 0))) 114 if (!(a = do_lstat(cur.conn, (char *)path, 1)))
115 return(-1); 115 return(-1);
116 116
117 attrib_to_stat(a, st); 117 attrib_to_stat(a, st);
@@ -124,7 +124,7 @@ fudge_stat(const char *path, struct stat *st)
124{ 124{
125 Attrib *a; 125 Attrib *a;
126 126
127 if (!(a = do_stat(cur.conn, (char *)path, 0))) 127 if (!(a = do_stat(cur.conn, (char *)path, 1)))
128 return(-1); 128 return(-1);
129 129
130 attrib_to_stat(a, st); 130 attrib_to_stat(a, st);
diff --git a/sftp.0 b/sftp.0
index f29776701..8350732d4 100644
--- a/sftp.0
+++ b/sftp.0
@@ -103,6 +103,7 @@ DESCRIPTION
103 ConnectTimeout 103 ConnectTimeout
104 ControlMaster 104 ControlMaster
105 ControlPath 105 ControlPath
106 ControlPersist
106 GlobalKnownHostsFile 107 GlobalKnownHostsFile
107 GSSAPIAuthentication 108 GSSAPIAuthentication
108 GSSAPIDelegateCredentials 109 GSSAPIDelegateCredentials
@@ -115,6 +116,7 @@ DESCRIPTION
115 IdentityFile 116 IdentityFile
116 IdentitiesOnly 117 IdentitiesOnly
117 IPQoS 118 IPQoS
119 KbdInteractiveAuthentication
118 KbdInteractiveDevices 120 KbdInteractiveDevices
119 KexAlgorithms 121 KexAlgorithms
120 LogLevel 122 LogLevel
@@ -334,4 +336,4 @@ SEE ALSO
334 draft-ietf-secsh-filexfer-00.txt, January 2001, work in progress 336 draft-ietf-secsh-filexfer-00.txt, January 2001, work in progress
335 material. 337 material.
336 338
337OpenBSD 5.0 August 7, 2011 OpenBSD 5.0 339OpenBSD 5.0 September 5, 2011 OpenBSD 5.0
diff --git a/sftp.1 b/sftp.1
index eb88014e2..bcb472144 100644
--- a/sftp.1
+++ b/sftp.1
@@ -1,4 +1,4 @@
1.\" $OpenBSD: sftp.1,v 1.90 2011/08/07 12:55:30 dtucker Exp $ 1.\" $OpenBSD: sftp.1,v 1.91 2011/09/05 05:56:13 djm Exp $
2.\" 2.\"
3.\" Copyright (c) 2001 Damien Miller. All rights reserved. 3.\" Copyright (c) 2001 Damien Miller. All rights reserved.
4.\" 4.\"
@@ -22,7 +22,7 @@
22.\" (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF 22.\" (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
23.\" THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 23.\" THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
24.\" 24.\"
25.Dd $Mdocdate: August 7 2011 $ 25.Dd $Mdocdate: September 5 2011 $
26.Dt SFTP 1 26.Dt SFTP 1
27.Os 27.Os
28.Sh NAME 28.Sh NAME
@@ -194,6 +194,7 @@ For full details of the options listed below, and their possible values, see
194.It ConnectTimeout 194.It ConnectTimeout
195.It ControlMaster 195.It ControlMaster
196.It ControlPath 196.It ControlPath
197.It ControlPersist
197.It GlobalKnownHostsFile 198.It GlobalKnownHostsFile
198.It GSSAPIAuthentication 199.It GSSAPIAuthentication
199.It GSSAPIDelegateCredentials 200.It GSSAPIDelegateCredentials
@@ -206,6 +207,7 @@ For full details of the options listed below, and their possible values, see
206.It IdentityFile 207.It IdentityFile
207.It IdentitiesOnly 208.It IdentitiesOnly
208.It IPQoS 209.It IPQoS
210.It KbdInteractiveAuthentication
209.It KbdInteractiveDevices 211.It KbdInteractiveDevices
210.It KexAlgorithms 212.It KexAlgorithms
211.It LogLevel 213.It LogLevel
diff --git a/sftp.c b/sftp.c
index ab667f5a5..da7fbab38 100644
--- a/sftp.c
+++ b/sftp.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: sftp.c,v 1.132 2010/12/04 00:18:01 djm Exp $ */ 1/* $OpenBSD: sftp.c,v 1.134 2011/11/16 12:24:28 oga Exp $ */
2/* 2/*
3 * Copyright (c) 2001-2004 Damien Miller <djm@openbsd.org> 3 * Copyright (c) 2001-2004 Damien Miller <djm@openbsd.org>
4 * 4 *
@@ -793,7 +793,8 @@ do_globbed_ls(struct sftp_conn *conn, char *path, char *strip_path,
793 memset(&g, 0, sizeof(g)); 793 memset(&g, 0, sizeof(g));
794 794
795 if (remote_glob(conn, path, 795 if (remote_glob(conn, path,
796 GLOB_MARK|GLOB_NOCHECK|GLOB_BRACE|GLOB_KEEPSTAT, NULL, &g) || 796 GLOB_MARK|GLOB_NOCHECK|GLOB_BRACE|GLOB_KEEPSTAT|GLOB_NOSORT,
797 NULL, &g) ||
797 (g.gl_pathc && !g.gl_matchc)) { 798 (g.gl_pathc && !g.gl_matchc)) {
798 if (g.gl_pathc) 799 if (g.gl_pathc)
799 globfree(&g); 800 globfree(&g);
@@ -1630,8 +1631,10 @@ complete_cmd_parse(EditLine *el, char *cmd, int lastarg, char quote,
1630 } 1631 }
1631 list[count] = NULL; 1632 list[count] = NULL;
1632 1633
1633 if (count == 0) 1634 if (count == 0) {
1635 xfree(list);
1634 return 0; 1636 return 0;
1637 }
1635 1638
1636 /* Complete ambigious command */ 1639 /* Complete ambigious command */
1637 tmp = complete_ambiguous(cmd, list, count); 1640 tmp = complete_ambiguous(cmd, list, count);
diff --git a/ssh-add.0 b/ssh-add.0
index e1e2a6417..694240d2c 100644
--- a/ssh-add.0
+++ b/ssh-add.0
@@ -4,7 +4,7 @@ NAME
4 ssh-add - adds private key identities to the authentication agent 4 ssh-add - adds private key identities to the authentication agent
5 5
6SYNOPSIS 6SYNOPSIS
7 ssh-add [-cDdLlXx] [-t life] [file ...] 7 ssh-add [-cDdkLlXx] [-t life] [file ...]
8 ssh-add -s pkcs11 8 ssh-add -s pkcs11
9 ssh-add -e pkcs11 9 ssh-add -e pkcs11
10 10
@@ -45,6 +45,9 @@ DESCRIPTION
45 -e pkcs11 45 -e pkcs11
46 Remove keys provided by the PKCS#11 shared library pkcs11. 46 Remove keys provided by the PKCS#11 shared library pkcs11.
47 47
48 -k When loading keys into the agent, load plain private keys only
49 and skip certificates.
50
48 -L Lists public key parameters of all identities currently 51 -L Lists public key parameters of all identities currently
49 represented by the agent. 52 represented by the agent.
50 53
@@ -112,4 +115,4 @@ AUTHORS
112 created OpenSSH. Markus Friedl contributed the support for SSH protocol 115 created OpenSSH. Markus Friedl contributed the support for SSH protocol
113 versions 1.5 and 2.0. 116 versions 1.5 and 2.0.
114 117
115OpenBSD 5.0 October 28, 2010 OpenBSD 5.0 118OpenBSD 5.0 October 18, 2011 OpenBSD 5.0
diff --git a/ssh-add.1 b/ssh-add.1
index 64c277fc4..64e21bb51 100644
--- a/ssh-add.1
+++ b/ssh-add.1
@@ -1,4 +1,4 @@
1.\" $OpenBSD: ssh-add.1,v 1.55 2010/10/28 18:33:28 jmc Exp $ 1.\" $OpenBSD: ssh-add.1,v 1.56 2011/10/18 05:00:48 djm Exp $
2.\" 2.\"
3.\" Author: Tatu Ylonen <ylo@cs.hut.fi> 3.\" Author: Tatu Ylonen <ylo@cs.hut.fi>
4.\" Copyright (c) 1995 Tatu Ylonen <ylo@cs.hut.fi>, Espoo, Finland 4.\" Copyright (c) 1995 Tatu Ylonen <ylo@cs.hut.fi>, Espoo, Finland
@@ -35,7 +35,7 @@
35.\" (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF 35.\" (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
36.\" THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 36.\" THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
37.\" 37.\"
38.Dd $Mdocdate: October 28 2010 $ 38.Dd $Mdocdate: October 18 2011 $
39.Dt SSH-ADD 1 39.Dt SSH-ADD 1
40.Os 40.Os
41.Sh NAME 41.Sh NAME
@@ -43,7 +43,7 @@
43.Nd adds private key identities to the authentication agent 43.Nd adds private key identities to the authentication agent
44.Sh SYNOPSIS 44.Sh SYNOPSIS
45.Nm ssh-add 45.Nm ssh-add
46.Op Fl cDdLlXx 46.Op Fl cDdkLlXx
47.Op Fl t Ar life 47.Op Fl t Ar life
48.Op Ar 48.Op Ar
49.Nm ssh-add 49.Nm ssh-add
@@ -114,6 +114,9 @@ and retry.
114.It Fl e Ar pkcs11 114.It Fl e Ar pkcs11
115Remove keys provided by the PKCS#11 shared library 115Remove keys provided by the PKCS#11 shared library
116.Ar pkcs11 . 116.Ar pkcs11 .
117.It Fl k
118When loading keys into the agent, load plain private keys only and skip
119certificates.
117.It Fl L 120.It Fl L
118Lists public key parameters of all identities currently represented 121Lists public key parameters of all identities currently represented
119by the agent. 122by the agent.
diff --git a/ssh-add.c b/ssh-add.c
index 3e2f9f6ce..0111b7793 100644
--- a/ssh-add.c
+++ b/ssh-add.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: ssh-add.c,v 1.101 2011/05/04 21:15:29 djm Exp $ */ 1/* $OpenBSD: ssh-add.c,v 1.103 2011/10/18 23:37:42 djm Exp $ */
2/* 2/*
3 * Author: Tatu Ylonen <ylo@cs.hut.fi> 3 * Author: Tatu Ylonen <ylo@cs.hut.fi>
4 * Copyright (c) 1995 Tatu Ylonen <ylo@cs.hut.fi>, Espoo, Finland 4 * Copyright (c) 1995 Tatu Ylonen <ylo@cs.hut.fi>, Espoo, Finland
@@ -139,11 +139,11 @@ delete_all(AuthenticationConnection *ac)
139} 139}
140 140
141static int 141static int
142add_file(AuthenticationConnection *ac, const char *filename) 142add_file(AuthenticationConnection *ac, const char *filename, int key_only)
143{ 143{
144 Key *private, *cert; 144 Key *private, *cert;
145 char *comment = NULL, *fp; 145 char *comment = NULL, *fp;
146 char msg[1024], *certpath; 146 char msg[1024], *certpath = NULL;
147 int fd, perms_ok, ret = -1; 147 int fd, perms_ok, ret = -1;
148 Buffer keyblob; 148 Buffer keyblob;
149 149
@@ -227,6 +227,9 @@ add_file(AuthenticationConnection *ac, const char *filename)
227 return -1; 227 return -1;
228 } 228 }
229 229
230 /* Skip trying to load the cert if requested */
231 if (key_only)
232 goto out;
230 233
231 /* Now try to add the certificate flavour too */ 234 /* Now try to add the certificate flavour too */
232 xasprintf(&certpath, "%s-cert.pub", filename); 235 xasprintf(&certpath, "%s-cert.pub", filename);
@@ -261,7 +264,8 @@ add_file(AuthenticationConnection *ac, const char *filename)
261 if (confirm != 0) 264 if (confirm != 0)
262 fprintf(stderr, "The user must confirm each use of the key\n"); 265 fprintf(stderr, "The user must confirm each use of the key\n");
263 out: 266 out:
264 xfree(certpath); 267 if (certpath != NULL)
268 xfree(certpath);
265 xfree(comment); 269 xfree(comment);
266 key_free(private); 270 key_free(private);
267 271
@@ -355,13 +359,13 @@ lock_agent(AuthenticationConnection *ac, int lock)
355} 359}
356 360
357static int 361static int
358do_file(AuthenticationConnection *ac, int deleting, char *file) 362do_file(AuthenticationConnection *ac, int deleting, int key_only, char *file)
359{ 363{
360 if (deleting) { 364 if (deleting) {
361 if (delete_file(ac, file) == -1) 365 if (delete_file(ac, file) == -1)
362 return -1; 366 return -1;
363 } else { 367 } else {
364 if (add_file(ac, file) == -1) 368 if (add_file(ac, file, key_only) == -1)
365 return -1; 369 return -1;
366 } 370 }
367 return 0; 371 return 0;
@@ -374,12 +378,13 @@ usage(void)
374 fprintf(stderr, "Options:\n"); 378 fprintf(stderr, "Options:\n");
375 fprintf(stderr, " -l List fingerprints of all identities.\n"); 379 fprintf(stderr, " -l List fingerprints of all identities.\n");
376 fprintf(stderr, " -L List public key parameters of all identities.\n"); 380 fprintf(stderr, " -L List public key parameters of all identities.\n");
381 fprintf(stderr, " -k Load only keys and not certificates.\n");
382 fprintf(stderr, " -c Require confirmation to sign using identities\n");
383 fprintf(stderr, " -t life Set lifetime (in seconds) when adding identities.\n");
377 fprintf(stderr, " -d Delete identity.\n"); 384 fprintf(stderr, " -d Delete identity.\n");
378 fprintf(stderr, " -D Delete all identities.\n"); 385 fprintf(stderr, " -D Delete all identities.\n");
379 fprintf(stderr, " -x Lock agent.\n"); 386 fprintf(stderr, " -x Lock agent.\n");
380 fprintf(stderr, " -X Unlock agent.\n"); 387 fprintf(stderr, " -X Unlock agent.\n");
381 fprintf(stderr, " -t life Set lifetime (in seconds) when adding identities.\n");
382 fprintf(stderr, " -c Require confirmation to sign using identities\n");
383 fprintf(stderr, " -s pkcs11 Add keys from PKCS#11 provider.\n"); 388 fprintf(stderr, " -s pkcs11 Add keys from PKCS#11 provider.\n");
384 fprintf(stderr, " -e pkcs11 Remove keys provided by PKCS#11 provider.\n"); 389 fprintf(stderr, " -e pkcs11 Remove keys provided by PKCS#11 provider.\n");
385} 390}
@@ -391,7 +396,7 @@ main(int argc, char **argv)
391 extern int optind; 396 extern int optind;
392 AuthenticationConnection *ac = NULL; 397 AuthenticationConnection *ac = NULL;
393 char *pkcs11provider = NULL; 398 char *pkcs11provider = NULL;
394 int i, ch, deleting = 0, ret = 0; 399 int i, ch, deleting = 0, ret = 0, key_only = 0;
395 400
396 /* Ensure that fds 0, 1 and 2 are open or directed to /dev/null */ 401 /* Ensure that fds 0, 1 and 2 are open or directed to /dev/null */
397 sanitise_stdfd(); 402 sanitise_stdfd();
@@ -408,8 +413,11 @@ main(int argc, char **argv)
408 "Could not open a connection to your authentication agent.\n"); 413 "Could not open a connection to your authentication agent.\n");
409 exit(2); 414 exit(2);
410 } 415 }
411 while ((ch = getopt(argc, argv, "lLcdDxXe:s:t:")) != -1) { 416 while ((ch = getopt(argc, argv, "klLcdDxXe:s:t:")) != -1) {
412 switch (ch) { 417 switch (ch) {
418 case 'k':
419 key_only = 1;
420 break;
413 case 'l': 421 case 'l':
414 case 'L': 422 case 'L':
415 if (list_identities(ac, ch == 'l' ? 1 : 0) == -1) 423 if (list_identities(ac, ch == 'l' ? 1 : 0) == -1)
@@ -475,7 +483,7 @@ main(int argc, char **argv)
475 default_files[i]); 483 default_files[i]);
476 if (stat(buf, &st) < 0) 484 if (stat(buf, &st) < 0)
477 continue; 485 continue;
478 if (do_file(ac, deleting, buf) == -1) 486 if (do_file(ac, deleting, key_only, buf) == -1)
479 ret = 1; 487 ret = 1;
480 else 488 else
481 count++; 489 count++;
@@ -484,7 +492,7 @@ main(int argc, char **argv)
484 ret = 1; 492 ret = 1;
485 } else { 493 } else {
486 for (i = 0; i < argc; i++) { 494 for (i = 0; i < argc; i++) {
487 if (do_file(ac, deleting, argv[i]) == -1) 495 if (do_file(ac, deleting, key_only, argv[i]) == -1)
488 ret = 1; 496 ret = 1;
489 } 497 }
490 } 498 }
diff --git a/ssh-ecdsa.c b/ssh-ecdsa.c
index c8276b460..085468ee7 100644
--- a/ssh-ecdsa.c
+++ b/ssh-ecdsa.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: ssh-ecdsa.c,v 1.4 2010/09/10 01:04:10 djm Exp $ */ 1/* $OpenBSD: ssh-ecdsa.c,v 1.5 2012/01/08 13:17:11 miod Exp $ */
2/* 2/*
3 * Copyright (c) 2000 Markus Friedl. All rights reserved. 3 * Copyright (c) 2000 Markus Friedl. All rights reserved.
4 * Copyright (c) 2010 Damien Miller. All rights reserved. 4 * Copyright (c) 2010 Damien Miller. All rights reserved.
@@ -145,6 +145,7 @@ ssh_ecdsa_verify(const Key *key, const u_char *signature, u_int signaturelen,
145 buffer_get_bignum2(&bb, sig->s); 145 buffer_get_bignum2(&bb, sig->s);
146 if (buffer_len(&bb) != 0) 146 if (buffer_len(&bb) != 0)
147 fatal("%s: remaining bytes in inner sigblob", __func__); 147 fatal("%s: remaining bytes in inner sigblob", __func__);
148 buffer_free(&bb);
148 149
149 /* clean up */ 150 /* clean up */
150 memset(sigblob, 0, len); 151 memset(sigblob, 0, len);
diff --git a/ssh-keygen.0 b/ssh-keygen.0
index 6c1763d4d..4eedd4162 100644
--- a/ssh-keygen.0
+++ b/ssh-keygen.0
@@ -19,7 +19,7 @@ SYNOPSIS
19 ssh-keygen -R hostname [-f known_hosts_file] 19 ssh-keygen -R hostname [-f known_hosts_file]
20 ssh-keygen -r hostname [-f input_keyfile] [-g] 20 ssh-keygen -r hostname [-f input_keyfile] [-g]
21 ssh-keygen -G output_file [-v] [-b bits] [-M memory] [-S start_point] 21 ssh-keygen -G output_file [-v] [-b bits] [-M memory] [-S start_point]
22 ssh-keygen -T output_file -f input_file [-v] [-a num_trials] 22 ssh-keygen -T output_file -f input_file [-v] [-a num_trials] [-K checkpt]
23 [-W generator] 23 [-W generator]
24 ssh-keygen -s ca_key -I certificate_identity [-h] [-n principals] 24 ssh-keygen -s ca_key -I certificate_identity [-h] [-n principals]
25 [-O option] [-V validity_interval] [-z serial_number] file ... 25 [-O option] [-V validity_interval] [-z serial_number] file ...
@@ -51,9 +51,9 @@ DESCRIPTION
51 passphrase is similar to a password, except it can be a phrase with a 51 passphrase is similar to a password, except it can be a phrase with a
52 series of words, punctuation, numbers, whitespace, or any string of 52 series of words, punctuation, numbers, whitespace, or any string of
53 characters you want. Good passphrases are 10-30 characters long, are not 53 characters you want. Good passphrases are 10-30 characters long, are not
54 simple sentences or otherwise easily guessable (English prose has only 1- 54 simple sentences or otherwise easily guessable (English prose has only
55 2 bits of entropy per character, and provides very bad passphrases), and 55 1-2 bits of entropy per character, and provides very bad passphrases),
56 contain a mix of upper and lowercase letters, numbers, and non- 56 and contain a mix of upper and lowercase letters, numbers, and non-
57 alphanumeric characters. The passphrase can be changed later by using 57 alphanumeric characters. The passphrase can be changed later by using
58 the -p option. 58 the -p option.
59 59
@@ -90,7 +90,7 @@ DESCRIPTION
90 the minimum size is 768 bits and the default is 2048 bits. 90 the minimum size is 768 bits and the default is 2048 bits.
91 Generally, 2048 bits is considered sufficient. DSA keys must be 91 Generally, 2048 bits is considered sufficient. DSA keys must be
92 exactly 1024 bits as specified by FIPS 186-2. For ECDSA keys, 92 exactly 1024 bits as specified by FIPS 186-2. For ECDSA keys,
93 the -b flag determines they key length by selecting from one of 93 the -b flag determines the key length by selecting from one of
94 three elliptic curve sizes: 256, 384 or 521 bits. Attempting to 94 three elliptic curve sizes: 256, 384 or 521 bits. Attempting to
95 use bit lengths other than these three values for ECDSA keys will 95 use bit lengths other than these three values for ECDSA keys will
96 fail. 96 fail.
@@ -149,9 +149,15 @@ DESCRIPTION
149 149
150 -i This option will read an unencrypted private (or public) key file 150 -i This option will read an unencrypted private (or public) key file
151 in the format specified by the -m option and print an OpenSSH 151 in the format specified by the -m option and print an OpenSSH
152 compatible private (or public) key to stdout. This option allows 152 compatible private (or public) key to stdout.
153 importing keys from other software, including several commercial 153
154 SSH implementations. The default import format is ``RFC4716''. 154 -K checkpt
155 Write the last line processed to the file checkpt while
156 performing DH candidate screening using the -T option. This will
157 be used to skip lines in the input file that have already been
158 processed if the job is restarted. This option allows importing
159 keys from other software, including several commercial SSH
160 implementations. The default import format is ``RFC4716''.
155 161
156 -L Prints the contents of a certificate. 162 -L Prints the contents of a certificate.
157 163
@@ -451,4 +457,4 @@ AUTHORS
451 created OpenSSH. Markus Friedl contributed the support for SSH protocol 457 created OpenSSH. Markus Friedl contributed the support for SSH protocol
452 versions 1.5 and 2.0. 458 versions 1.5 and 2.0.
453 459
454OpenBSD 5.0 April 13, 2011 OpenBSD 5.0 460OpenBSD 5.0 October 16, 2011 OpenBSD 5.0
diff --git a/ssh-keygen.1 b/ssh-keygen.1
index 7c8b1f202..f7e3ea4c6 100644
--- a/ssh-keygen.1
+++ b/ssh-keygen.1
@@ -1,4 +1,4 @@
1.\" $OpenBSD: ssh-keygen.1,v 1.106 2011/04/13 04:09:37 djm Exp $ 1.\" $OpenBSD: ssh-keygen.1,v 1.108 2011/10/16 11:02:46 dtucker Exp $
2.\" 2.\"
3.\" Author: Tatu Ylonen <ylo@cs.hut.fi> 3.\" Author: Tatu Ylonen <ylo@cs.hut.fi>
4.\" Copyright (c) 1995 Tatu Ylonen <ylo@cs.hut.fi>, Espoo, Finland 4.\" Copyright (c) 1995 Tatu Ylonen <ylo@cs.hut.fi>, Espoo, Finland
@@ -35,7 +35,7 @@
35.\" (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF 35.\" (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
36.\" THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 36.\" THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
37.\" 37.\"
38.Dd $Mdocdate: April 13 2011 $ 38.Dd $Mdocdate: October 16 2011 $
39.Dt SSH-KEYGEN 1 39.Dt SSH-KEYGEN 1
40.Os 40.Os
41.Sh NAME 41.Sh NAME
@@ -104,6 +104,7 @@
104.Fl f Ar input_file 104.Fl f Ar input_file
105.Op Fl v 105.Op Fl v
106.Op Fl a Ar num_trials 106.Op Fl a Ar num_trials
107.Op Fl K Ar checkpt
107.Op Fl W Ar generator 108.Op Fl W Ar generator
108.Nm ssh-keygen 109.Nm ssh-keygen
109.Fl s Ar ca_key 110.Fl s Ar ca_key
@@ -210,7 +211,7 @@ Generally, 2048 bits is considered sufficient.
210DSA keys must be exactly 1024 bits as specified by FIPS 186-2. 211DSA keys must be exactly 1024 bits as specified by FIPS 186-2.
211For ECDSA keys, the 212For ECDSA keys, the
212.Fl b 213.Fl b
213flag determines they key length by selecting from one of three elliptic 214flag determines the key length by selecting from one of three elliptic
214curve sizes: 256, 384 or 521 bits. 215curve sizes: 256, 384 or 521 bits.
215Attempting to use bit lengths other than these three values for ECDSA keys 216Attempting to use bit lengths other than these three values for ECDSA keys
216will fail. 217will fail.
@@ -292,6 +293,14 @@ in the format specified by the
292.Fl m 293.Fl m
293option and print an OpenSSH compatible private 294option and print an OpenSSH compatible private
294(or public) key to stdout. 295(or public) key to stdout.
296.It Fl K Ar checkpt
297Write the last line processed to the file
298.Ar checkpt
299while performing DH candidate screening using the
300.Fl T
301option.
302This will be used to skip lines in the input file that have already been
303processed if the job is restarted.
295This option allows importing keys from other software, including several 304This option allows importing keys from other software, including several
296commercial SSH implementations. 305commercial SSH implementations.
297The default import format is 306The default import format is
diff --git a/ssh-keygen.c b/ssh-keygen.c
index 4b6218b10..5fcd3a159 100644
--- a/ssh-keygen.c
+++ b/ssh-keygen.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: ssh-keygen.c,v 1.210 2011/04/18 00:46:05 djm Exp $ */ 1/* $OpenBSD: ssh-keygen.c,v 1.212 2011/10/16 15:02:41 jmc Exp $ */
2/* 2/*
3 * Author: Tatu Ylonen <ylo@cs.hut.fi> 3 * Author: Tatu Ylonen <ylo@cs.hut.fi>
4 * Copyright (c) 1994 Tatu Ylonen <ylo@cs.hut.fi>, Espoo, Finland 4 * Copyright (c) 1994 Tatu Ylonen <ylo@cs.hut.fi>, Espoo, Finland
@@ -154,7 +154,7 @@ char hostname[MAXHOSTNAMELEN];
154 154
155/* moduli.c */ 155/* moduli.c */
156int gen_candidates(FILE *, u_int32_t, u_int32_t, BIGNUM *); 156int gen_candidates(FILE *, u_int32_t, u_int32_t, BIGNUM *);
157int prime_test(FILE *, FILE *, u_int32_t, u_int32_t); 157int prime_test(FILE *, FILE *, u_int32_t, u_int32_t, char *);
158 158
159static void 159static void
160type_bits_valid(int type, u_int32_t *bitsp) 160type_bits_valid(int type, u_int32_t *bitsp)
@@ -857,7 +857,9 @@ do_gen_all_hostkeys(struct passwd *pw)
857 { "rsa1", "RSA1", _PATH_HOST_KEY_FILE }, 857 { "rsa1", "RSA1", _PATH_HOST_KEY_FILE },
858 { "rsa", "RSA" ,_PATH_HOST_RSA_KEY_FILE }, 858 { "rsa", "RSA" ,_PATH_HOST_RSA_KEY_FILE },
859 { "dsa", "DSA", _PATH_HOST_DSA_KEY_FILE }, 859 { "dsa", "DSA", _PATH_HOST_DSA_KEY_FILE },
860#ifdef OPENSSL_HAS_ECC
860 { "ecdsa", "ECDSA",_PATH_HOST_ECDSA_KEY_FILE }, 861 { "ecdsa", "ECDSA",_PATH_HOST_ECDSA_KEY_FILE },
862#endif
861 { NULL, NULL, NULL } 863 { NULL, NULL, NULL }
862 }; 864 };
863 865
@@ -1884,6 +1886,7 @@ usage(void)
1884 fprintf(stderr, " -h Generate host certificate instead of a user certificate.\n"); 1886 fprintf(stderr, " -h Generate host certificate instead of a user certificate.\n");
1885 fprintf(stderr, " -I key_id Key identifier to include in certificate.\n"); 1887 fprintf(stderr, " -I key_id Key identifier to include in certificate.\n");
1886 fprintf(stderr, " -i Import foreign format to OpenSSH key file.\n"); 1888 fprintf(stderr, " -i Import foreign format to OpenSSH key file.\n");
1889 fprintf(stderr, " -K checkpt Write checkpoints to this file.\n");
1887 fprintf(stderr, " -L Print the contents of a certificate.\n"); 1890 fprintf(stderr, " -L Print the contents of a certificate.\n");
1888 fprintf(stderr, " -l Show fingerprint of key file.\n"); 1891 fprintf(stderr, " -l Show fingerprint of key file.\n");
1889 fprintf(stderr, " -M memory Amount of memory (MB) to use for generating DH-GEX moduli.\n"); 1892 fprintf(stderr, " -M memory Amount of memory (MB) to use for generating DH-GEX moduli.\n");
@@ -1916,6 +1919,7 @@ int
1916main(int argc, char **argv) 1919main(int argc, char **argv)
1917{ 1920{
1918 char dotsshdir[MAXPATHLEN], comment[1024], *passphrase1, *passphrase2; 1921 char dotsshdir[MAXPATHLEN], comment[1024], *passphrase1, *passphrase2;
1922 char *checkpoint = NULL;
1919 char out_file[MAXPATHLEN], *rr_hostname = NULL; 1923 char out_file[MAXPATHLEN], *rr_hostname = NULL;
1920 Key *private, *public; 1924 Key *private, *public;
1921 struct passwd *pw; 1925 struct passwd *pw;
@@ -1952,7 +1956,7 @@ main(int argc, char **argv)
1952 exit(1); 1956 exit(1);
1953 } 1957 }
1954 1958
1955 while ((opt = getopt(argc, argv, "AegiqpclBHLhvxXyF:b:f:t:D:I:P:m:N:n:" 1959 while ((opt = getopt(argc, argv, "AegiqpclBHLhvxXyF:b:f:t:D:I:K:P:m:N:n:"
1956 "O:C:r:g:R:T:G:M:S:s:a:V:W:z:")) != -1) { 1960 "O:C:r:g:R:T:G:M:S:s:a:V:W:z:")) != -1) {
1957 switch (opt) { 1961 switch (opt) {
1958 case 'A': 1962 case 'A':
@@ -2103,6 +2107,11 @@ main(int argc, char **argv)
2103 sizeof(out_file)) 2107 sizeof(out_file))
2104 fatal("Output filename too long"); 2108 fatal("Output filename too long");
2105 break; 2109 break;
2110 case 'K':
2111 if (strlen(optarg) >= MAXPATHLEN)
2112 fatal("Checkpoint filename too long");
2113 checkpoint = xstrdup(optarg);
2114 break;
2106 case 'S': 2115 case 'S':
2107 /* XXX - also compare length against bits */ 2116 /* XXX - also compare length against bits */
2108 if (BN_hex2bn(&start, optarg) == 0) 2117 if (BN_hex2bn(&start, optarg) == 0)
@@ -2225,7 +2234,8 @@ main(int argc, char **argv)
2225 fatal("Couldn't open moduli file \"%s\": %s", 2234 fatal("Couldn't open moduli file \"%s\": %s",
2226 out_file, strerror(errno)); 2235 out_file, strerror(errno));
2227 } 2236 }
2228 if (prime_test(in, out, trials, generator_wanted) != 0) 2237 if (prime_test(in, out, trials, generator_wanted, checkpoint)
2238 != 0)
2229 fatal("modulus screening failed"); 2239 fatal("modulus screening failed");
2230 return (0); 2240 return (0);
2231 } 2241 }
diff --git a/ssh-pkcs11-client.c b/ssh-pkcs11-client.c
index 650c37342..82b11daf5 100644
--- a/ssh-pkcs11-client.c
+++ b/ssh-pkcs11-client.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: ssh-pkcs11-client.c,v 1.2 2010/02/24 06:12:53 djm Exp $ */ 1/* $OpenBSD: ssh-pkcs11-client.c,v 1.3 2012/01/16 20:34:09 miod Exp $ */
2/* 2/*
3 * Copyright (c) 2010 Markus Friedl. All rights reserved. 3 * Copyright (c) 2010 Markus Friedl. All rights reserved.
4 * 4 *
@@ -123,6 +123,7 @@ pkcs11_rsa_private_encrypt(int flen, const u_char *from, u_char *to, RSA *rsa,
123 buffer_put_int(&msg, 0); 123 buffer_put_int(&msg, 0);
124 xfree(blob); 124 xfree(blob);
125 send_msg(&msg); 125 send_msg(&msg);
126 buffer_clear(&msg);
126 127
127 if (recv_msg(&msg) == SSH2_AGENT_SIGN_RESPONSE) { 128 if (recv_msg(&msg) == SSH2_AGENT_SIGN_RESPONSE) {
128 signature = buffer_get_string(&msg, &slen); 129 signature = buffer_get_string(&msg, &slen);
@@ -132,6 +133,7 @@ pkcs11_rsa_private_encrypt(int flen, const u_char *from, u_char *to, RSA *rsa,
132 } 133 }
133 xfree(signature); 134 xfree(signature);
134 } 135 }
136 buffer_free(&msg);
135 return (ret); 137 return (ret);
136} 138}
137 139
diff --git a/ssh-sandbox.h b/ssh-sandbox.h
index dfecd5aa0..dfecd5aa0 100755..100644
--- a/ssh-sandbox.h
+++ b/ssh-sandbox.h
diff --git a/ssh.0 b/ssh.0
index 1c98f7780..9180bea12 100644
--- a/ssh.0
+++ b/ssh.0
@@ -202,9 +202,10 @@ DESCRIPTION
202 the -O option is specified, the ctl_cmd argument is interpreted 202 the -O option is specified, the ctl_cmd argument is interpreted
203 and passed to the master process. Valid commands are: ``check'' 203 and passed to the master process. Valid commands are: ``check''
204 (check that the master process is running), ``forward'' (request 204 (check that the master process is running), ``forward'' (request
205 forwardings without command execution), ``exit'' (request the 205 forwardings without command execution), ``cancel'' (cancel
206 master to exit), and ``stop'' (request the master to stop 206 forwardings), ``exit'' (request the master to exit), and ``stop''
207 accepting further multiplexing requests). 207 (request the master to stop accepting further multiplexing
208 requests).
208 209
209 -o option 210 -o option
210 Can be used to give options in the format used in the 211 Can be used to give options in the format used in the
@@ -227,11 +228,13 @@ DESCRIPTION
227 ConnectTimeout 228 ConnectTimeout
228 ControlMaster 229 ControlMaster
229 ControlPath 230 ControlPath
231 ControlPersist
230 DynamicForward 232 DynamicForward
231 EscapeChar 233 EscapeChar
232 ExitOnForwardFailure 234 ExitOnForwardFailure
233 ForwardAgent 235 ForwardAgent
234 ForwardX11 236 ForwardX11
237 ForwardX11Timeout
235 ForwardX11Trusted 238 ForwardX11Trusted
236 GatewayPorts 239 GatewayPorts
237 GlobalKnownHostsFile 240 GlobalKnownHostsFile
@@ -246,6 +249,7 @@ DESCRIPTION
246 IdentityFile 249 IdentityFile
247 IdentitiesOnly 250 IdentitiesOnly
248 IPQoS 251 IPQoS
252 KbdInteractiveAuthentication
249 KbdInteractiveDevices 253 KbdInteractiveDevices
250 KexAlgorithms 254 KexAlgorithms
251 LocalCommand 255 LocalCommand
@@ -523,10 +527,12 @@ ESCAPE CHARACTERS
523 527
524 ~C Open command line. Currently this allows the addition of port 528 ~C Open command line. Currently this allows the addition of port
525 forwardings using the -L, -R and -D options (see above). It also 529 forwardings using the -L, -R and -D options (see above). It also
526 allows the cancellation of existing remote port-forwardings using 530 allows the cancellation of existing port-forwardings with
527 -KR[bind_address:]port. !command allows the user to execute a 531 -KL[bind_address:]port for local, -KR[bind_address:]port for
528 local command if the PermitLocalCommand option is enabled in 532 remote and -KD[bind_address:]port for dynamic port-forwardings.
529 ssh_config(5). Basic help is available, using the -h option. 533 !command allows the user to execute a local command if the
534 PermitLocalCommand option is enabled in ssh_config(5). Basic
535 help is available, using the -h option.
530 536
531 ~R Request rekeying of the connection (only useful for SSH protocol 537 ~R Request rekeying of the connection (only useful for SSH protocol
532 version 2 and if the peer supports it). 538 version 2 and if the peer supports it).
@@ -898,4 +904,4 @@ AUTHORS
898 created OpenSSH. Markus Friedl contributed the support for SSH protocol 904 created OpenSSH. Markus Friedl contributed the support for SSH protocol
899 versions 1.5 and 2.0. 905 versions 1.5 and 2.0.
900 906
901OpenBSD 5.0 August 2, 2011 OpenBSD 5.0 907OpenBSD 5.0 September 11, 2011 OpenBSD 5.0
diff --git a/ssh.1 b/ssh.1
index d20a5671e..13cc23d99 100644
--- a/ssh.1
+++ b/ssh.1
@@ -33,8 +33,8 @@
33.\" (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF 33.\" (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
34.\" THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 34.\" THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
35.\" 35.\"
36.\" $OpenBSD: ssh.1,v 1.320 2011/08/02 01:22:11 djm Exp $ 36.\" $OpenBSD: ssh.1,v 1.323 2011/09/11 06:59:05 okan Exp $
37.Dd $Mdocdate: August 2 2011 $ 37.Dd $Mdocdate: September 11 2011 $
38.Dt SSH 1 38.Dt SSH 1
39.Os 39.Os
40.Sh NAME 40.Sh NAME
@@ -393,6 +393,8 @@ Valid commands are:
393(check that the master process is running), 393(check that the master process is running),
394.Dq forward 394.Dq forward
395(request forwardings without command execution), 395(request forwardings without command execution),
396.Dq cancel
397(cancel forwardings),
396.Dq exit 398.Dq exit
397(request the master to exit), and 399(request the master to exit), and
398.Dq stop 400.Dq stop
@@ -419,11 +421,13 @@ For full details of the options listed below, and their possible values, see
419.It ConnectTimeout 421.It ConnectTimeout
420.It ControlMaster 422.It ControlMaster
421.It ControlPath 423.It ControlPath
424.It ControlPersist
422.It DynamicForward 425.It DynamicForward
423.It EscapeChar 426.It EscapeChar
424.It ExitOnForwardFailure 427.It ExitOnForwardFailure
425.It ForwardAgent 428.It ForwardAgent
426.It ForwardX11 429.It ForwardX11
430.It ForwardX11Timeout
427.It ForwardX11Trusted 431.It ForwardX11Trusted
428.It GatewayPorts 432.It GatewayPorts
429.It GlobalKnownHostsFile 433.It GlobalKnownHostsFile
@@ -438,6 +442,7 @@ For full details of the options listed below, and their possible values, see
438.It IdentityFile 442.It IdentityFile
439.It IdentitiesOnly 443.It IdentitiesOnly
440.It IPQoS 444.It IPQoS
445.It KbdInteractiveAuthentication
441.It KbdInteractiveDevices 446.It KbdInteractiveDevices
442.It KexAlgorithms 447.It KexAlgorithms
443.It LocalCommand 448.It LocalCommand
@@ -900,11 +905,20 @@ Currently this allows the addition of port forwardings using the
900and 905and
901.Fl D 906.Fl D
902options (see above). 907options (see above).
903It also allows the cancellation of existing remote port-forwardings 908It also allows the cancellation of existing port-forwardings
904using 909with
910.Sm off
911.Fl KL Oo Ar bind_address : Oc Ar port
912.Sm on
913for local,
914.Sm off
915.Fl KR Oo Ar bind_address : Oc Ar port
916.Sm on
917for remote and
905.Sm off 918.Sm off
906.Fl KR Oo Ar bind_address : Oc Ar port . 919.Fl KD Oo Ar bind_address : Oc Ar port
907.Sm on 920.Sm on
921for dynamic port-forwardings.
908.Ic !\& Ns Ar command 922.Ic !\& Ns Ar command
909allows the user to execute a local command if the 923allows the user to execute a local command if the
910.Ic PermitLocalCommand 924.Ic PermitLocalCommand
diff --git a/ssh.c b/ssh.c
index 44b005687..7dd41f59a 100644
--- a/ssh.c
+++ b/ssh.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: ssh.c,v 1.364 2011/08/02 23:15:03 djm Exp $ */ 1/* $OpenBSD: ssh.c,v 1.368 2011/10/24 02:10:46 djm Exp $ */
2/* 2/*
3 * Author: Tatu Ylonen <ylo@cs.hut.fi> 3 * Author: Tatu Ylonen <ylo@cs.hut.fi>
4 * Copyright (c) 1995 Tatu Ylonen <ylo@cs.hut.fi>, Espoo, Finland 4 * Copyright (c) 1995 Tatu Ylonen <ylo@cs.hut.fi>, Espoo, Finland
@@ -377,6 +377,8 @@ main(int ac, char **av)
377 muxclient_command = SSHMUX_COMMAND_TERMINATE; 377 muxclient_command = SSHMUX_COMMAND_TERMINATE;
378 else if (strcmp(optarg, "stop") == 0) 378 else if (strcmp(optarg, "stop") == 0)
379 muxclient_command = SSHMUX_COMMAND_STOP; 379 muxclient_command = SSHMUX_COMMAND_STOP;
380 else if (strcmp(optarg, "cancel") == 0)
381 muxclient_command = SSHMUX_COMMAND_CANCEL_FWD;
380 else 382 else
381 fatal("Invalid multiplex command."); 383 fatal("Invalid multiplex command.");
382 break; 384 break;
@@ -884,17 +886,20 @@ main(int ac, char **av)
884 * Now that we are back to our own permissions, create ~/.ssh 886 * Now that we are back to our own permissions, create ~/.ssh
885 * directory if it doesn't already exist. 887 * directory if it doesn't already exist.
886 */ 888 */
887 r = snprintf(buf, sizeof buf, "%s%s%s", pw->pw_dir, 889 if (config == NULL) {
888 strcmp(pw->pw_dir, "/") ? "/" : "", _PATH_SSH_USER_DIR); 890 r = snprintf(buf, sizeof buf, "%s%s%s", pw->pw_dir,
889 if (r > 0 && (size_t)r < sizeof(buf) && stat(buf, &st) < 0) { 891 strcmp(pw->pw_dir, "/") ? "/" : "", _PATH_SSH_USER_DIR);
892 if (r > 0 && (size_t)r < sizeof(buf) && stat(buf, &st) < 0) {
890#ifdef WITH_SELINUX 893#ifdef WITH_SELINUX
891 ssh_selinux_setfscreatecon(buf); 894 ssh_selinux_setfscreatecon(buf);
892#endif 895#endif
893 if (mkdir(buf, 0700) < 0) 896 if (mkdir(buf, 0700) < 0)
894 error("Could not create directory '%.200s'.", buf); 897 error("Could not create directory '%.200s'.",
898 buf);
895#ifdef WITH_SELINUX 899#ifdef WITH_SELINUX
896 ssh_selinux_setfscreatecon(NULL); 900 ssh_selinux_setfscreatecon(NULL);
897#endif 901#endif
902 }
898 } 903 }
899 /* load options.identity_files */ 904 /* load options.identity_files */
900 load_public_identity_files(); 905 load_public_identity_files();
@@ -1019,11 +1024,17 @@ ssh_confirm_remote_forward(int type, u_int32_t seq, void *ctxt)
1019 debug("remote forward %s for: listen %d, connect %s:%d", 1024 debug("remote forward %s for: listen %d, connect %s:%d",
1020 type == SSH2_MSG_REQUEST_SUCCESS ? "success" : "failure", 1025 type == SSH2_MSG_REQUEST_SUCCESS ? "success" : "failure",
1021 rfwd->listen_port, rfwd->connect_host, rfwd->connect_port); 1026 rfwd->listen_port, rfwd->connect_host, rfwd->connect_port);
1022 if (type == SSH2_MSG_REQUEST_SUCCESS && rfwd->listen_port == 0) { 1027 if (rfwd->listen_port == 0) {
1023 rfwd->allocated_port = packet_get_int(); 1028 if (type == SSH2_MSG_REQUEST_SUCCESS) {
1024 logit("Allocated port %u for remote forward to %s:%d", 1029 rfwd->allocated_port = packet_get_int();
1025 rfwd->allocated_port, 1030 logit("Allocated port %u for remote forward to %s:%d",
1026 rfwd->connect_host, rfwd->connect_port); 1031 rfwd->allocated_port,
1032 rfwd->connect_host, rfwd->connect_port);
1033 channel_update_permitted_opens(rfwd->handle,
1034 rfwd->allocated_port);
1035 } else {
1036 channel_update_permitted_opens(rfwd->handle, -1);
1037 }
1027 } 1038 }
1028 1039
1029 if (type == SSH2_MSG_REQUEST_FAILURE) { 1040 if (type == SSH2_MSG_REQUEST_FAILURE) {
@@ -1048,25 +1059,26 @@ client_cleanup_stdio_fwd(int id, void *arg)
1048 cleanup_exit(0); 1059 cleanup_exit(0);
1049} 1060}
1050 1061
1051static int 1062static void
1052client_setup_stdio_fwd(const char *host_to_connect, u_short port_to_connect) 1063ssh_init_stdio_forwarding(void)
1053{ 1064{
1054 Channel *c; 1065 Channel *c;
1055 int in, out; 1066 int in, out;
1056 1067
1057 debug3("client_setup_stdio_fwd %s:%d", host_to_connect, 1068 if (stdio_forward_host == NULL)
1058 port_to_connect); 1069 return;
1070 if (!compat20)
1071 fatal("stdio forwarding require Protocol 2");
1059 1072
1060 in = dup(STDIN_FILENO); 1073 debug3("%s: %s:%d", __func__, stdio_forward_host, stdio_forward_port);
1061 out = dup(STDOUT_FILENO);
1062 if (in < 0 || out < 0)
1063 fatal("channel_connect_stdio_fwd: dup() in/out failed");
1064 1074
1065 if ((c = channel_connect_stdio_fwd(host_to_connect, port_to_connect, 1075 if ((in = dup(STDIN_FILENO)) < 0 ||
1066 in, out)) == NULL) 1076 (out = dup(STDOUT_FILENO)) < 0)
1067 return 0; 1077 fatal("channel_connect_stdio_fwd: dup() in/out failed");
1078 if ((c = channel_connect_stdio_fwd(stdio_forward_host,
1079 stdio_forward_port, in, out)) == NULL)
1080 fatal("%s: channel_connect_stdio_fwd failed", __func__);
1068 channel_register_cleanup(c->self, client_cleanup_stdio_fwd, 0); 1081 channel_register_cleanup(c->self, client_cleanup_stdio_fwd, 0);
1069 return 1;
1070} 1082}
1071 1083
1072static void 1084static void
@@ -1075,15 +1087,6 @@ ssh_init_forwarding(void)
1075 int success = 0; 1087 int success = 0;
1076 int i; 1088 int i;
1077 1089
1078 if (stdio_forward_host != NULL) {
1079 if (!compat20) {
1080 fatal("stdio forwarding require Protocol 2");
1081 }
1082 if (!client_setup_stdio_fwd(stdio_forward_host,
1083 stdio_forward_port))
1084 fatal("Failed to connect in stdio forward mode.");
1085 }
1086
1087 /* Initiate local TCP/IP port forwardings. */ 1090 /* Initiate local TCP/IP port forwardings. */
1088 for (i = 0; i < options.num_local_forwards; i++) { 1091 for (i = 0; i < options.num_local_forwards; i++) {
1089 debug("Local connections to %.200s:%d forwarded to remote " 1092 debug("Local connections to %.200s:%d forwarded to remote "
@@ -1115,19 +1118,22 @@ ssh_init_forwarding(void)
1115 options.remote_forwards[i].listen_port, 1118 options.remote_forwards[i].listen_port,
1116 options.remote_forwards[i].connect_host, 1119 options.remote_forwards[i].connect_host,
1117 options.remote_forwards[i].connect_port); 1120 options.remote_forwards[i].connect_port);
1118 if (channel_request_remote_forwarding( 1121 options.remote_forwards[i].handle =
1122 channel_request_remote_forwarding(
1119 options.remote_forwards[i].listen_host, 1123 options.remote_forwards[i].listen_host,
1120 options.remote_forwards[i].listen_port, 1124 options.remote_forwards[i].listen_port,
1121 options.remote_forwards[i].connect_host, 1125 options.remote_forwards[i].connect_host,
1122 options.remote_forwards[i].connect_port) < 0) { 1126 options.remote_forwards[i].connect_port);
1127 if (options.remote_forwards[i].handle < 0) {
1123 if (options.exit_on_forward_failure) 1128 if (options.exit_on_forward_failure)
1124 fatal("Could not request remote forwarding."); 1129 fatal("Could not request remote forwarding.");
1125 else 1130 else
1126 logit("Warning: Could not request remote " 1131 logit("Warning: Could not request remote "
1127 "forwarding."); 1132 "forwarding.");
1133 } else {
1134 client_register_global_confirm(ssh_confirm_remote_forward,
1135 &options.remote_forwards[i]);
1128 } 1136 }
1129 client_register_global_confirm(ssh_confirm_remote_forward,
1130 &options.remote_forwards[i]);
1131 } 1137 }
1132 1138
1133 /* Initiate tunnel forwarding. */ 1139 /* Initiate tunnel forwarding. */
@@ -1271,6 +1277,7 @@ ssh_session(void)
1271 } 1277 }
1272 1278
1273 /* Initiate port forwardings. */ 1279 /* Initiate port forwardings. */
1280 ssh_init_stdio_forwarding();
1274 ssh_init_forwarding(); 1281 ssh_init_forwarding();
1275 1282
1276 /* Execute a local command */ 1283 /* Execute a local command */
@@ -1409,15 +1416,18 @@ ssh_session2(void)
1409 int id = -1; 1416 int id = -1;
1410 1417
1411 /* XXX should be pre-session */ 1418 /* XXX should be pre-session */
1419 if (!options.control_persist)
1420 ssh_init_stdio_forwarding();
1412 ssh_init_forwarding(); 1421 ssh_init_forwarding();
1413 1422
1414 /* Start listening for multiplex clients */ 1423 /* Start listening for multiplex clients */
1415 muxserver_listen(); 1424 muxserver_listen();
1416 1425
1417 /* 1426 /*
1418 * If we are in control persist mode, then prepare to background 1427 * If we are in control persist mode and have a working mux listen
1419 * ourselves and have a foreground client attach as a control 1428 * socket, then prepare to background ourselves and have a foreground
1420 * slave. NB. we must save copies of the flags that we override for 1429 * client attach as a control slave.
1430 * NB. we must save copies of the flags that we override for
1421 * the backgrounding, since we defer attachment of the slave until 1431 * the backgrounding, since we defer attachment of the slave until
1422 * after the connection is fully established (in particular, 1432 * after the connection is fully established (in particular,
1423 * async rfwd replies have been received for ExitOnForwardFailure). 1433 * async rfwd replies have been received for ExitOnForwardFailure).
@@ -1434,6 +1444,12 @@ ssh_session2(void)
1434 need_controlpersist_detach = 1; 1444 need_controlpersist_detach = 1;
1435 fork_after_authentication_flag = 1; 1445 fork_after_authentication_flag = 1;
1436 } 1446 }
1447 /*
1448 * ControlPersist mux listen socket setup failed, attempt the
1449 * stdio forward setup that we skipped earlier.
1450 */
1451 if (options.control_persist && muxserver_sock == -1)
1452 ssh_init_stdio_forwarding();
1437 1453
1438 if (!no_shell_flag || (datafellows & SSH_BUG_DUMMYCHAN)) 1454 if (!no_shell_flag || (datafellows & SSH_BUG_DUMMYCHAN))
1439 id = ssh_session2_open(); 1455 id = ssh_session2_open();
diff --git a/ssh_config.0 b/ssh_config.0
index 7b9205681..baa453a26 100644
--- a/ssh_config.0
+++ b/ssh_config.0
@@ -382,7 +382,7 @@ DESCRIPTION
382 configuration directives). 382 configuration directives).
383 383
384 IPQoS Specifies the IPv4 type-of-service or DSCP class for connections. 384 IPQoS Specifies the IPv4 type-of-service or DSCP class for connections.
385 Accepted values are ``af11'', ``af12'', ``af13'', ``af14'', 385 Accepted values are ``af11'', ``af12'', ``af13'', ``af21'',
386 ``af22'', ``af23'', ``af31'', ``af32'', ``af33'', ``af41'', 386 ``af22'', ``af23'', ``af31'', ``af32'', ``af33'', ``af41'',
387 ``af42'', ``af43'', ``cs0'', ``cs1'', ``cs2'', ``cs3'', ``cs4'', 387 ``af42'', ``af43'', ``cs0'', ``cs1'', ``cs2'', ``cs3'', ``cs4'',
388 ``cs5'', ``cs6'', ``cs7'', ``ef'', ``lowdelay'', ``throughput'', 388 ``cs5'', ``cs6'', ``cs7'', ``ef'', ``lowdelay'', ``throughput'',
@@ -764,4 +764,4 @@ AUTHORS
764 created OpenSSH. Markus Friedl contributed the support for SSH protocol 764 created OpenSSH. Markus Friedl contributed the support for SSH protocol
765 versions 1.5 and 2.0. 765 versions 1.5 and 2.0.
766 766
767OpenBSD 5.0 August 2, 2011 OpenBSD 5.0 767OpenBSD 5.0 September 9, 2011 OpenBSD 5.0
diff --git a/ssh_config.5 b/ssh_config.5
index 19bff6d54..cfb11d64a 100644
--- a/ssh_config.5
+++ b/ssh_config.5
@@ -33,8 +33,8 @@
33.\" (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF 33.\" (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
34.\" THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 34.\" THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
35.\" 35.\"
36.\" $OpenBSD: ssh_config.5,v 1.153 2011/08/02 01:22:11 djm Exp $ 36.\" $OpenBSD: ssh_config.5,v 1.154 2011/09/09 00:43:00 djm Exp $
37.Dd $Mdocdate: August 2 2011 $ 37.Dd $Mdocdate: September 9 2011 $
38.Dt SSH_CONFIG 5 38.Dt SSH_CONFIG 5
39.Os 39.Os
40.Sh NAME 40.Sh NAME
@@ -714,7 +714,7 @@ Accepted values are
714.Dq af11 , 714.Dq af11 ,
715.Dq af12 , 715.Dq af12 ,
716.Dq af13 , 716.Dq af13 ,
717.Dq af14 , 717.Dq af21 ,
718.Dq af22 , 718.Dq af22 ,
719.Dq af23 , 719.Dq af23 ,
720.Dq af31 , 720.Dq af31 ,
diff --git a/sshd.0 b/sshd.0
index e8b49831d..ddca81918 100644
--- a/sshd.0
+++ b/sshd.0
@@ -369,7 +369,8 @@ AUTHORIZED_KEYS FILE FORMAT
369 specified by enclosing the address in square brackets. Multiple 369 specified by enclosing the address in square brackets. Multiple
370 permitopen options may be applied separated by commas. No 370 permitopen options may be applied separated by commas. No
371 pattern matching is performed on the specified hostnames, they 371 pattern matching is performed on the specified hostnames, they
372 must be literal domains or addresses. 372 must be literal domains or addresses. A port specification of *
373 matches any port.
373 374
374 principals="principals" 375 principals="principals"
375 On a cert-authority line, specifies allowed principals for 376 On a cert-authority line, specifies allowed principals for
@@ -632,4 +633,4 @@ CAVEATS
632 System security is not improved unless rshd, rlogind, and rexecd are 633 System security is not improved unless rshd, rlogind, and rexecd are
633 disabled (thus completely disabling rlogin and rsh into the machine). 634 disabled (thus completely disabling rlogin and rsh into the machine).
634 635
635OpenBSD 5.0 August 2, 2011 OpenBSD 5.0 636OpenBSD 5.0 September 23, 2011 OpenBSD 5.0
diff --git a/sshd.8 b/sshd.8
index 80b3a1e45..a850fd78c 100644
--- a/sshd.8
+++ b/sshd.8
@@ -33,8 +33,8 @@
33.\" (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF 33.\" (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
34.\" THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 34.\" THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
35.\" 35.\"
36.\" $OpenBSD: sshd.8,v 1.263 2011/08/02 01:22:11 djm Exp $ 36.\" $OpenBSD: sshd.8,v 1.264 2011/09/23 00:22:04 dtucker Exp $
37.Dd $Mdocdate: August 2 2011 $ 37.Dd $Mdocdate: September 23 2011 $
38.Dt SSHD 8 38.Dt SSHD 8
39.Os 39.Os
40.Sh NAME 40.Sh NAME
@@ -608,6 +608,9 @@ Multiple
608options may be applied separated by commas. 608options may be applied separated by commas.
609No pattern matching is performed on the specified hostnames, 609No pattern matching is performed on the specified hostnames,
610they must be literal domains or addresses. 610they must be literal domains or addresses.
611A port specification of
612.Cm *
613matches any port.
611.It Cm principals="principals" 614.It Cm principals="principals"
612On a 615On a
613.Cm cert-authority 616.Cm cert-authority
diff --git a/sshd.c b/sshd.c
index 9b32cb458..e032c1720 100644
--- a/sshd.c
+++ b/sshd.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: sshd.c,v 1.385 2011/06/23 09:34:13 djm Exp $ */ 1/* $OpenBSD: sshd.c,v 1.388 2011/09/30 21:22:49 djm Exp $ */
2/* 2/*
3 * Author: Tatu Ylonen <ylo@cs.hut.fi> 3 * Author: Tatu Ylonen <ylo@cs.hut.fi>
4 * Copyright (c) 1995 Tatu Ylonen <ylo@cs.hut.fi>, Espoo, Finland 4 * Copyright (c) 1995 Tatu Ylonen <ylo@cs.hut.fi>, Espoo, Finland
@@ -243,6 +243,7 @@ int startup_pipe; /* in child */
243/* variables used for privilege separation */ 243/* variables used for privilege separation */
244int use_privsep = -1; 244int use_privsep = -1;
245struct monitor *pmonitor = NULL; 245struct monitor *pmonitor = NULL;
246int privsep_is_preauth = 1;
246 247
247/* global authentication context */ 248/* global authentication context */
248Authctxt *the_authctxt = NULL; 249Authctxt *the_authctxt = NULL;
@@ -655,10 +656,13 @@ privsep_preauth(Authctxt *authctxt)
655 656
656 /* Wait for the child's exit status */ 657 /* Wait for the child's exit status */
657 while (waitpid(pid, &status, 0) < 0) { 658 while (waitpid(pid, &status, 0) < 0) {
658 if (errno != EINTR) 659 if (errno == EINTR)
659 fatal("%s: waitpid: %s", __func__, 660 continue;
660 strerror(errno)); 661 pmonitor->m_pid = -1;
662 fatal("%s: waitpid: %s", __func__, strerror(errno));
661 } 663 }
664 privsep_is_preauth = 0;
665 pmonitor->m_pid = -1;
662 if (WIFEXITED(status)) { 666 if (WIFEXITED(status)) {
663 if (WEXITSTATUS(status) != 0) 667 if (WEXITSTATUS(status) != 0)
664 fatal("%s: preauth child exited with status %d", 668 fatal("%s: preauth child exited with status %d",
@@ -1512,7 +1516,7 @@ main(int ac, char **av)
1512 * root's environment 1516 * root's environment
1513 */ 1517 */
1514 if (getenv("KRB5CCNAME") != NULL) 1518 if (getenv("KRB5CCNAME") != NULL)
1515 unsetenv("KRB5CCNAME"); 1519 (void) unsetenv("KRB5CCNAME");
1516 1520
1517#ifdef _UNICOS 1521#ifdef _UNICOS
1518 /* Cray can define user privs drop all privs now! 1522 /* Cray can define user privs drop all privs now!
@@ -2476,8 +2480,16 @@ do_ssh2_kex(void)
2476void 2480void
2477cleanup_exit(int i) 2481cleanup_exit(int i)
2478{ 2482{
2479 if (the_authctxt) 2483 if (the_authctxt) {
2480 do_cleanup(the_authctxt); 2484 do_cleanup(the_authctxt);
2485 if (use_privsep && privsep_is_preauth && pmonitor->m_pid > 1) {
2486 debug("Killing privsep child %d", pmonitor->m_pid);
2487 if (kill(pmonitor->m_pid, SIGKILL) != 0 &&
2488 errno != ESRCH)
2489 error("%s: kill(%d): %s", __func__,
2490 pmonitor->m_pid, strerror(errno));
2491 }
2492 }
2481#ifdef SSH_AUDIT_EVENTS 2493#ifdef SSH_AUDIT_EVENTS
2482 /* done after do_cleanup so it can cancel the PAM auth 'thread' */ 2494 /* done after do_cleanup so it can cancel the PAM auth 'thread' */
2483 if (!use_privsep || mm_is_monitor()) 2495 if (!use_privsep || mm_is_monitor())
diff --git a/sshd_config.0 b/sshd_config.0
index e19ca875b..9022f8760 100644
--- a/sshd_config.0
+++ b/sshd_config.0
@@ -294,7 +294,7 @@ DESCRIPTION
294 294
295 IPQoS Specifies the IPv4 type-of-service or DSCP class for the 295 IPQoS Specifies the IPv4 type-of-service or DSCP class for the
296 connection. Accepted values are ``af11'', ``af12'', ``af13'', 296 connection. Accepted values are ``af11'', ``af12'', ``af13'',
297 ``af14'', ``af22'', ``af23'', ``af31'', ``af32'', ``af33'', 297 ``af21'', ``af22'', ``af23'', ``af31'', ``af32'', ``af33'',
298 ``af41'', ``af42'', ``af43'', ``cs0'', ``cs1'', ``cs2'', ``cs3'', 298 ``af41'', ``af42'', ``af43'', ``cs0'', ``cs1'', ``cs2'', ``cs3'',
299 ``cs4'', ``cs5'', ``cs6'', ``cs7'', ``ef'', ``lowdelay'', 299 ``cs4'', ``cs5'', ``cs6'', ``cs7'', ``ef'', ``lowdelay'',
300 ``throughput'', ``reliability'', or a numeric value. This option 300 ``throughput'', ``reliability'', or a numeric value. This option
@@ -715,4 +715,4 @@ AUTHORS
715 versions 1.5 and 2.0. Niels Provos and Markus Friedl contributed support 715 versions 1.5 and 2.0. Niels Provos and Markus Friedl contributed support
716 for privilege separation. 716 for privilege separation.
717 717
718OpenBSD 5.0 August 2, 2011 OpenBSD 5.0 718OpenBSD 5.0 September 9, 2011 OpenBSD 5.0
diff --git a/sshd_config.5 b/sshd_config.5
index e73624154..3e364cf00 100644
--- a/sshd_config.5
+++ b/sshd_config.5
@@ -33,8 +33,8 @@
33.\" (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF 33.\" (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
34.\" THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 34.\" THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
35.\" 35.\"
36.\" $OpenBSD: sshd_config.5,v 1.135 2011/08/02 01:22:11 djm Exp $ 36.\" $OpenBSD: sshd_config.5,v 1.136 2011/09/09 00:43:00 djm Exp $
37.Dd $Mdocdate: August 2 2011 $ 37.Dd $Mdocdate: September 9 2011 $
38.Dt SSHD_CONFIG 5 38.Dt SSHD_CONFIG 5
39.Os 39.Os
40.Sh NAME 40.Sh NAME
@@ -578,7 +578,7 @@ Accepted values are
578.Dq af11 , 578.Dq af11 ,
579.Dq af12 , 579.Dq af12 ,
580.Dq af13 , 580.Dq af13 ,
581.Dq af14 , 581.Dq af21 ,
582.Dq af22 , 582.Dq af22 ,
583.Dq af23 , 583.Dq af23 ,
584.Dq af31 , 584.Dq af31 ,
diff --git a/umac.c b/umac.c
index 92902bc09..e78d2cc5f 100644
--- a/umac.c
+++ b/umac.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: umac.c,v 1.3 2008/05/12 20:52:20 pvalchev Exp $ */ 1/* $OpenBSD: umac.c,v 1.4 2011/10/19 10:39:48 djm Exp $ */
2/* ----------------------------------------------------------------------- 2/* -----------------------------------------------------------------------
3 * 3 *
4 * umac.c -- C Implementation UMAC Message Authentication 4 * umac.c -- C Implementation UMAC Message Authentication
@@ -316,7 +316,7 @@ static void pdf_gen_xor(pdf_ctx *pc, UINT8 nonce[8], UINT8 buf[8])
316 316
317typedef struct { 317typedef struct {
318 UINT8 nh_key [L1_KEY_LEN + L1_KEY_SHIFT * (STREAMS - 1)]; /* NH Key */ 318 UINT8 nh_key [L1_KEY_LEN + L1_KEY_SHIFT * (STREAMS - 1)]; /* NH Key */
319 UINT8 data [HASH_BUF_BYTES]; /* Incomming data buffer */ 319 UINT8 data [HASH_BUF_BYTES]; /* Incoming data buffer */
320 int next_data_empty; /* Bookeeping variable for data buffer. */ 320 int next_data_empty; /* Bookeeping variable for data buffer. */
321 int bytes_hashed; /* Bytes (out of L1_KEY_LEN) incorperated. */ 321 int bytes_hashed; /* Bytes (out of L1_KEY_LEN) incorperated. */
322 UINT64 state[STREAMS]; /* on-line state */ 322 UINT64 state[STREAMS]; /* on-line state */
diff --git a/version.h b/version.h
index b731237f9..2a20a4952 100644
--- a/version.h
+++ b/version.h
@@ -1,6 +1,6 @@
1/* $OpenBSD: version.h,v 1.62 2011/08/02 23:13:01 djm Exp $ */ 1/* $OpenBSD: version.h,v 1.64 2012/02/09 20:00:18 markus Exp $ */
2 2
3#define SSH_VERSION "OpenSSH_5.9" 3#define SSH_VERSION "OpenSSH_6.0"
4 4
5#define SSH_PORTABLE "p1" 5#define SSH_PORTABLE "p1"
6#define SSH_RELEASE_MINIMUM SSH_VERSION SSH_PORTABLE 6#define SSH_RELEASE_MINIMUM SSH_VERSION SSH_PORTABLE