Print this page
12310 Add demangle(1) command
Split |
Close |
Expand all |
Collapse all |
--- old/usr/src/man/man1/Makefile
+++ new/usr/src/man/man1/Makefile
1 1 #
2 2 # This file and its contents are supplied under the terms of the
3 3 # Common Development and Distribution License ("CDDL"), version 1.0.
4 4 # You may only use this file in accordance with the terms of version
5 5 # 1.0 of the CDDL.
6 6 #
↓ open down ↓ |
6 lines elided |
↑ open up ↑ |
7 7 # A full copy of the text of the CDDL should have accompanied this
8 8 # source. A copy of the CDDL is also available via the Internet
9 9 # at http://www.illumos.org/license/CDDL.
10 10 #
11 11
12 12 #
13 13 # Copyright 2011, Richard Lowe
14 14 # Copyright 2018 Nexenta Systems, Inc.
15 15 # Copyright 2014 Garrett D'Amore <garrett@damore.org>
16 16 # Copyright 2019 OmniOS Community Edition (OmniOSce) Association.
17 +# Copyright 2020 Joyent, Inc.
17 18 #
18 19
19 20 include $(SRC)/Makefile.master
20 21
21 22 MANSECT= 1
22 23
23 24 MANFILES= acctcom.1 \
24 25 adb.1 \
25 26 addbib.1 \
26 27 alias.1 \
27 28 allocate.1 \
28 29 amt.1 \
29 30 appcert.1 \
30 31 apptrace.1 \
31 32 apropos.1 \
32 33 ar.1 \
33 34 arch.1 \
34 35 asa.1 \
35 36 at.1 \
36 37 atq.1 \
37 38 atrm.1 \
38 39 audioconvert.1 \
39 40 audioctl.1 \
40 41 audioplay.1 \
41 42 audiorecord.1 \
42 43 audiotest.1 \
43 44 auths.1 \
44 45 awk.1 \
45 46 banner.1 \
46 47 basename.1 \
47 48 bc.1 \
48 49 bdiff.1 \
49 50 break.1 \
50 51 builtin.1 \
51 52 cal.1 \
52 53 cancel.1 \
53 54 cat.1 \
54 55 cd.1 \
55 56 cdrw.1 \
56 57 checknr.1 \
57 58 chgrp.1 \
58 59 chkey.1 \
59 60 chmod.1 \
60 61 chown.1 \
61 62 ckdate.1 \
62 63 ckgid.1 \
63 64 ckint.1 \
64 65 ckitem.1 \
65 66 ckkeywd.1 \
66 67 ckpath.1 \
67 68 ckrange.1 \
68 69 ckstr.1 \
69 70 cksum.1 \
70 71 cktime.1 \
71 72 ckuid.1 \
72 73 ckyorn.1 \
73 74 clear.1 \
74 75 cmp.1 \
75 76 col.1 \
76 77 comm.1 \
77 78 command.1 \
78 79 compress.1 \
79 80 cp.1 \
80 81 cpio.1 \
81 82 cputrack.1 \
82 83 crle.1 \
83 84 crontab.1 \
84 85 crypt.1 \
85 86 csh.1 \
86 87 csplit.1 \
↓ open down ↓ |
60 lines elided |
↑ open up ↑ |
87 88 ctags.1 \
88 89 ctfdiff.1 \
89 90 ctfdump.1 \
90 91 ctrun.1 \
91 92 ctstat.1 \
92 93 ctwatch.1 \
93 94 cut.1 \
94 95 date.1 \
95 96 dc.1 \
96 97 deallocate.1 \
98 + demangle.1 \
97 99 deroff.1 \
98 100 dhcpinfo.1 \
99 101 diff.1 \
100 102 diff3.1 \
101 103 diffmk.1 \
102 104 digest.1 \
103 105 dircmp.1 \
104 106 dis.1 \
105 107 disown.1 \
106 108 dispgid.1 \
107 109 dispuid.1 \
108 110 dos2unix.1 \
109 111 download.1 \
110 112 dpost.1 \
111 113 du.1 \
112 114 dump.1 \
113 115 dumpcs.1 \
114 116 echo.1 \
115 117 ed.1 \
116 118 eject.1 \
117 119 elfdump.1 \
118 120 elfedit.1 \
119 121 elfsign.1 \
120 122 elfwrap.1 \
121 123 enable.1 \
122 124 encrypt.1 \
123 125 enhance.1 \
124 126 env.1 \
125 127 eqn.1 \
126 128 etdump.1 \
127 129 exec.1 \
128 130 exit.1 \
129 131 expand.1 \
130 132 expr.1 \
131 133 exstr.1 \
132 134 factor.1 \
133 135 fdformat.1 \
134 136 file.1 \
135 137 filesync.1 \
136 138 find.1 \
137 139 finger.1 \
138 140 fmt.1 \
139 141 fmtmsg.1 \
140 142 fold.1 \
141 143 ftp.1 \
142 144 gcore.1 \
143 145 gencat.1 \
144 146 genmsg.1 \
145 147 getconf.1 \
146 148 getfacl.1 \
147 149 getlabel.1 \
148 150 getopt.1 \
149 151 getoptcvt.1 \
150 152 getopts.1 \
151 153 gettext.1 \
152 154 gettxt.1 \
153 155 getzonepath.1 \
154 156 glob.1 \
155 157 gprof.1 \
156 158 grep.1 \
157 159 groups.1 \
158 160 hash.1 \
159 161 head.1 \
160 162 history.1 \
161 163 hostid.1 \
162 164 hostname.1 \
163 165 iconv.1 \
164 166 indxbib.1 \
165 167 Intro.1 \
166 168 ipcrm.1 \
167 169 ipcs.1 \
168 170 isainfo.1 \
169 171 isalist.1 \
170 172 jobs.1 \
171 173 join.1 \
172 174 kbd.1 \
173 175 kdestroy.1 \
174 176 keylogin.1 \
175 177 keylogout.1 \
176 178 kill.1 \
177 179 kinit.1 \
178 180 klist.1 \
179 181 kmdb.1 \
180 182 kmfcfg.1 \
181 183 kpasswd.1 \
182 184 krb5-config.1 \
183 185 ksh93.1 \
184 186 ktutil.1 \
185 187 kvmstat.1 \
186 188 lari.1 \
187 189 last.1 \
188 190 lastcomm.1 \
189 191 ld.1 \
190 192 ld.so.1.1 \
191 193 ldap.1 \
192 194 ldapdelete.1 \
193 195 ldaplist.1 \
194 196 ldapmodify.1 \
195 197 ldapmodrdn.1 \
196 198 ldapsearch.1 \
197 199 ldd.1 \
198 200 let.1 \
199 201 lex.1 \
200 202 lgrpinfo.1 \
201 203 limit.1 \
202 204 line.1 \
203 205 list_devices.1 \
204 206 listusers.1 \
205 207 ln.1 \
206 208 loadkeys.1 \
207 209 locale.1 \
208 210 localedef.1 \
209 211 logger.1 \
210 212 login.1 \
211 213 logname.1 \
212 214 logout.1 \
213 215 look.1 \
214 216 lookbib.1 \
215 217 lorder.1 \
216 218 lp.1 \
217 219 lpstat.1 \
218 220 ls.1 \
219 221 m4.1 \
220 222 mac.1 \
221 223 mach.1 \
222 224 madv.so.1.1 \
223 225 mail.1 \
224 226 mailcompat.1 \
225 227 mailstats.1 \
226 228 mailx.1 \
227 229 make.1 \
228 230 makekey.1 \
229 231 man.1 \
230 232 mandoc.1 \
231 233 mconnect.1 \
232 234 mcs.1 \
233 235 mdb.1 \
234 236 mesg.1 \
235 237 mkdir.1 \
236 238 mkmsgs.1 \
237 239 mktemp.1 \
238 240 moe.1 \
239 241 more.1 \
240 242 mpss.so.1.1 \
241 243 msgcc.1 \
242 244 msgcpp.1 \
243 245 msgcvt.1 \
244 246 msgfmt.1 \
245 247 msggen.1 \
246 248 msgget.1 \
247 249 mt.1 \
248 250 mv.1 \
249 251 nawk.1 \
250 252 nc.1 \
251 253 nca.1 \
252 254 ncab2clf.1 \
253 255 ncakmod.1 \
254 256 newform.1 \
255 257 newgrp.1 \
256 258 news.1 \
257 259 newtask.1 \
258 260 nice.1 \
259 261 nl.1 \
260 262 nm.1 \
261 263 nohup.1 \
262 264 nroff.1 \
263 265 od.1 \
264 266 optisa.1 \
265 267 pack.1 \
266 268 pagesize.1 \
267 269 pargs.1 \
268 270 passwd.1 \
269 271 paste.1 \
270 272 pathchk.1 \
271 273 pax.1 \
272 274 pfexec.1 \
273 275 pg.1 \
274 276 pgrep.1 \
275 277 pkginfo.1 \
276 278 pkgmk.1 \
277 279 pkgparam.1 \
278 280 pkgproto.1 \
279 281 pkgtrans.1 \
280 282 pktool.1 \
281 283 plabel.1 \
282 284 plgrp.1 \
283 285 plimit.1 \
284 286 pmadvise.1 \
285 287 pmap.1 \
286 288 postio.1 \
287 289 postprint.1 \
288 290 postreverse.1 \
289 291 ppgsz.1 \
290 292 ppriv.1 \
291 293 pr.1 \
292 294 praliases.1 \
293 295 prctl.1 \
294 296 preap.1 \
295 297 prex.1 \
296 298 print.1 \
297 299 printf.1 \
298 300 priocntl.1 \
299 301 proc.1 \
300 302 prof.1 \
301 303 profiles.1 \
302 304 projects.1 \
303 305 ps.1 \
304 306 psecflags.1 \
305 307 ptree.1 \
306 308 pvs.1 \
307 309 pwd.1 \
308 310 ranlib.1 \
309 311 rcapstat.1 \
310 312 rcp.1 \
311 313 rdist.1 \
312 314 read.1 \
313 315 readonly.1 \
314 316 refer.1 \
315 317 regcmp.1 \
316 318 renice.1 \
317 319 rev.1 \
318 320 rlogin.1 \
319 321 rm.1 \
320 322 rmformat.1 \
321 323 rmmount.1 \
322 324 roffbib.1 \
323 325 roles.1 \
324 326 rpcgen.1 \
325 327 rsh.1 \
326 328 runat.1 \
327 329 rup.1 \
328 330 ruptime.1 \
329 331 rusers.1 \
330 332 rwho.1 \
331 333 sar.1 \
332 334 script.1 \
333 335 sdiff.1 \
334 336 sed.1 \
335 337 sendmail-mailq.1 \
336 338 set.1 \
337 339 setfacl.1 \
338 340 setlabel.1 \
339 341 setpgrp.1 \
340 342 shcomp.1 \
341 343 shell_builtins.1 \
342 344 shift.1 \
343 345 size.1 \
344 346 sleep.1 \
345 347 smbutil.1 \
346 348 soelim.1 \
347 349 sort.1 \
348 350 sortbib.1 \
349 351 sotruss.1 \
350 352 spell.1 \
351 353 split.1 \
352 354 srchtxt.1 \
353 355 strchg.1 \
354 356 strings.1 \
355 357 strip.1 \
356 358 stty.1 \
357 359 sum.1 \
358 360 suspend.1 \
359 361 svcprop.1 \
360 362 svcs.1 \
361 363 symorder.1 \
362 364 sys-suspend.1 \
363 365 sysV-make.1 \
364 366 tabs.1 \
365 367 tail.1 \
366 368 talk.1 \
367 369 tar.1 \
368 370 tbl.1 \
369 371 tcopy.1 \
370 372 tee.1 \
371 373 telnet.1 \
372 374 test.1 \
373 375 tftp.1 \
374 376 time.1 \
375 377 times.1 \
376 378 timex.1 \
377 379 tip.1 \
378 380 tnfdump.1 \
379 381 tnfxtract.1 \
380 382 touch.1 \
381 383 tput.1 \
382 384 tr.1 \
383 385 trap.1 \
384 386 troff.1 \
385 387 true.1 \
386 388 truss.1 \
387 389 tsort.1 \
388 390 tty.1 \
389 391 type.1 \
390 392 typeset.1 \
391 393 ul.1 \
392 394 umask.1 \
393 395 uname.1 \
394 396 unifdef.1 \
395 397 uniq.1 \
396 398 units.1 \
397 399 unix2dos.1 \
398 400 uptime.1 \
399 401 uuidgen.1 \
400 402 vacation.1 \
401 403 vgrind.1 \
402 404 volcheck.1 \
403 405 volrmmount.1 \
404 406 vtfontcvt.1 \
405 407 w.1 \
406 408 wait.1 \
407 409 wc.1 \
408 410 which.1 \
409 411 who.1 \
410 412 whocalls.1 \
411 413 whois.1 \
412 414 write.1 \
413 415 xargs.1 \
414 416 xgettext.1 \
415 417 xstr.1 \
416 418 yacc.1 \
417 419 yes.1 \
418 420 ypcat.1 \
419 421 ypmatch.1 \
420 422 yppasswd.1 \
421 423 ypwhich.1 \
422 424 zlogin.1 \
423 425 zonename.1 \
424 426 zonestat.1
425 427
426 428 MANLINKS= batch.1 \
427 429 bg.1 \
428 430 case.1 \
429 431 chdir.1 \
430 432 checkeq.1 \
431 433 continue.1 \
432 434 decrypt.1 \
433 435 dirname.1 \
434 436 dirs.1 \
435 437 disable.1 \
436 438 dmake.1 \
437 439 dumpkeys.1 \
438 440 edit.1 \
439 441 egrep.1 \
440 442 errange.1 \
441 443 errdate.1 \
442 444 errgid.1 \
443 445 errint.1 \
444 446 erritem.1 \
445 447 errpath.1 \
446 448 errstr.1 \
447 449 errtime.1 \
448 450 erruid.1 \
449 451 erryorn.1 \
450 452 eval.1 \
451 453 export.1 \
452 454 false.1 \
453 455 fc.1 \
454 456 fg.1 \
455 457 fgrep.1 \
456 458 for.1 \
457 459 foreach.1 \
458 460 function.1 \
459 461 goto.1 \
460 462 hashcheck.1 \
461 463 hashmake.1 \
462 464 hashstat.1 \
463 465 helpdate.1 \
464 466 helpgid.1 \
465 467 helpint.1 \
466 468 helpitem.1 \
467 469 helppath.1 \
468 470 helprange.1 \
469 471 helpstr.1 \
470 472 helptime.1 \
471 473 helpuid.1 \
472 474 helpyorn.1 \
473 475 hist.1 \
474 476 if.1 \
475 477 intro.1 \
476 478 jsh.1 \
477 479 ksh.1 \
478 480 ldapadd.1 \
479 481 mailq.1 \
480 482 neqn.1 \
481 483 notify.1 \
482 484 onintr.1 \
483 485 page.1 \
484 486 pauxv.1 \
485 487 pcat.1 \
486 488 pcred.1 \
487 489 penv.1 \
488 490 pfcsh.1 \
489 491 pfiles.1 \
490 492 pfksh.1 \
491 493 pflags.1 \
492 494 pfsh.1 \
493 495 pkill.1 \
494 496 pldd.1 \
495 497 popd.1 \
496 498 prun.1 \
497 499 psig.1 \
498 500 pstack.1 \
499 501 pstop.1 \
500 502 ptime.1 \
501 503 pushd.1 \
502 504 pwait.1 \
503 505 pwdx.1 \
504 506 red.1 \
505 507 rehash.1 \
506 508 remote_shell.1 \
507 509 remsh.1 \
508 510 repeat.1 \
509 511 return.1 \
510 512 rksh.1 \
511 513 rksh93.1 \
512 514 rmail.1 \
513 515 rmdir.1 \
514 516 rmumount.1 \
515 517 select.1 \
516 518 setenv.1 \
517 519 settime.1 \
518 520 sh.1 \
519 521 snca.1 \
520 522 source.1 \
521 523 spellin.1 \
522 524 stop.1 \
523 525 strconf.1 \
524 526 switch.1 \
525 527 ulimit.1 \
526 528 unalias.1 \
527 529 uncompress.1 \
528 530 unexpand.1 \
529 531 unhash.1 \
530 532 unlimit.1 \
531 533 unpack.1 \
532 534 unset.1 \
533 535 unsetenv.1 \
534 536 until.1 \
535 537 valdate.1 \
536 538 valgid.1 \
537 539 valint.1 \
538 540 valpath.1 \
539 541 valrange.1 \
540 542 valstr.1 \
541 543 valtime.1 \
542 544 valuid.1 \
543 545 valyorn.1 \
544 546 vedit.1 \
545 547 whatis.1 \
546 548 whence.1 \
547 549 while.1 \
548 550 zcat.1
549 551
550 552 intro.1 := LINKSRC = Intro.1
551 553
552 554 whatis.1 := LINKSRC = apropos.1
553 555
554 556 unalias.1 := LINKSRC = alias.1
555 557
556 558 batch.1 := LINKSRC = at.1
557 559
558 560 dirname.1 := LINKSRC = basename.1
559 561
560 562 continue.1 := LINKSRC = break.1
561 563
562 564 chdir.1 := LINKSRC = cd.1
563 565 dirs.1 := LINKSRC = cd.1
564 566 popd.1 := LINKSRC = cd.1
565 567 pushd.1 := LINKSRC = cd.1
566 568
567 569 errdate.1 := LINKSRC = ckdate.1
568 570 helpdate.1 := LINKSRC = ckdate.1
569 571 valdate.1 := LINKSRC = ckdate.1
570 572
571 573 errgid.1 := LINKSRC = ckgid.1
572 574 helpgid.1 := LINKSRC = ckgid.1
573 575 valgid.1 := LINKSRC = ckgid.1
574 576
575 577 errint.1 := LINKSRC = ckint.1
576 578 helpint.1 := LINKSRC = ckint.1
577 579 valint.1 := LINKSRC = ckint.1
578 580
579 581 erritem.1 := LINKSRC = ckitem.1
580 582 helpitem.1 := LINKSRC = ckitem.1
581 583
582 584 errpath.1 := LINKSRC = ckpath.1
583 585 helppath.1 := LINKSRC = ckpath.1
584 586 valpath.1 := LINKSRC = ckpath.1
585 587
586 588 errange.1 := LINKSRC = ckrange.1
587 589 helprange.1 := LINKSRC = ckrange.1
588 590 valrange.1 := LINKSRC = ckrange.1
589 591
590 592 errstr.1 := LINKSRC = ckstr.1
591 593 helpstr.1 := LINKSRC = ckstr.1
592 594 valstr.1 := LINKSRC = ckstr.1
593 595
594 596 errtime.1 := LINKSRC = cktime.1
595 597 helptime.1 := LINKSRC = cktime.1
596 598 valtime.1 := LINKSRC = cktime.1
597 599
598 600 erruid.1 := LINKSRC = ckuid.1
599 601 helpuid.1 := LINKSRC = ckuid.1
600 602 valuid.1 := LINKSRC = ckuid.1
601 603
602 604 erryorn.1 := LINKSRC = ckyorn.1
603 605 helpyorn.1 := LINKSRC = ckyorn.1
604 606 valyorn.1 := LINKSRC = ckyorn.1
605 607
606 608 uncompress.1 := LINKSRC = compress.1
607 609 zcat.1 := LINKSRC = compress.1
608 610
609 611 red.1 := LINKSRC = ed.1
610 612
611 613 disable.1 := LINKSRC = enable.1
612 614
613 615 decrypt.1 := LINKSRC = encrypt.1
614 616
615 617 dmake.1 := LINKSRC = make.1
616 618
617 619 checkeq.1 := LINKSRC = eqn.1
618 620 neqn.1 := LINKSRC = eqn.1
619 621
620 622 eval.1 := LINKSRC = exec.1
621 623 source.1 := LINKSRC = exec.1
622 624
623 625 goto.1 := LINKSRC = exit.1
624 626 return.1 := LINKSRC = exit.1
625 627
626 628 unexpand.1 := LINKSRC = expand.1
627 629
628 630 egrep.1 := LINKSRC = grep.1
629 631 fgrep.1 := LINKSRC = grep.1
630 632
631 633 hashstat.1 := LINKSRC = hash.1
632 634 rehash.1 := LINKSRC = hash.1
633 635 unhash.1 := LINKSRC = hash.1
634 636
635 637 fc.1 := LINKSRC = history.1
636 638 hist.1 := LINKSRC = history.1
637 639
638 640 bg.1 := LINKSRC = jobs.1
639 641 fg.1 := LINKSRC = jobs.1
640 642 notify.1 := LINKSRC = jobs.1
641 643 stop.1 := LINKSRC = jobs.1
642 644
643 645 jsh.1 := LINKSRC = ksh93.1
644 646 ksh.1 := LINKSRC = ksh93.1
645 647 rksh.1 := LINKSRC = ksh93.1
646 648 rksh93.1 := LINKSRC = ksh93.1
647 649 sh.1 := LINKSRC = ksh93.1
648 650
649 651 ldapadd.1 := LINKSRC = ldapmodify.1
650 652
651 653 mailq.1 := LINKSRC = sendmail-mailq.1
652 654
653 655 ulimit.1 := LINKSRC = limit.1
654 656 unlimit.1 := LINKSRC = limit.1
655 657
656 658 dumpkeys.1 := LINKSRC = loadkeys.1
657 659
658 660 rmail.1 := LINKSRC = mail.1
659 661
660 662 page.1 := LINKSRC = more.1
661 663
662 664 snca.1 := LINKSRC = nca.1
663 665
664 666 pcat.1 := LINKSRC = pack.1
665 667 unpack.1 := LINKSRC = pack.1
666 668
667 669 pauxv.1 := LINKSRC = pargs.1
668 670 penv.1 := LINKSRC = pargs.1
669 671
670 672 pfcsh.1 := LINKSRC = pfexec.1
671 673 pfksh.1 := LINKSRC = pfexec.1
672 674 pfsh.1 := LINKSRC = pfexec.1
673 675
674 676 pkill.1 := LINKSRC = pgrep.1
675 677
676 678 pcred.1 := LINKSRC = proc.1
677 679 pfiles.1 := LINKSRC = proc.1
678 680 pflags.1 := LINKSRC = proc.1
679 681 pldd.1 := LINKSRC = proc.1
680 682 prun.1 := LINKSRC = proc.1
681 683 psig.1 := LINKSRC = proc.1
682 684 pstack.1 := LINKSRC = proc.1
683 685 pstop.1 := LINKSRC = proc.1
684 686 ptime.1 := LINKSRC = proc.1
685 687 pwait.1 := LINKSRC = proc.1
686 688 pwdx.1 := LINKSRC = proc.1
687 689
688 690 rmdir.1 := LINKSRC = rm.1
689 691
690 692 rmumount.1 := LINKSRC = rmmount.1
691 693
692 694 remote_shell.1 := LINKSRC = rsh.1
693 695 remsh.1 := LINKSRC = rsh.1
694 696
695 697 export.1 := LINKSRC = set.1
696 698 setenv.1 := LINKSRC = set.1
697 699 unset.1 := LINKSRC = set.1
698 700 unsetenv.1 := LINKSRC = set.1
699 701
700 702 case.1 := LINKSRC = shell_builtins.1
701 703 for.1 := LINKSRC = shell_builtins.1
702 704 foreach.1 := LINKSRC = shell_builtins.1
703 705 function.1 := LINKSRC = shell_builtins.1
704 706 if.1 := LINKSRC = shell_builtins.1
705 707 repeat.1 := LINKSRC = shell_builtins.1
706 708 select.1 := LINKSRC = shell_builtins.1
707 709 switch.1 := LINKSRC = shell_builtins.1
708 710 until.1 := LINKSRC = shell_builtins.1
709 711 while.1 := LINKSRC = shell_builtins.1
710 712
711 713 hashcheck.1 := LINKSRC = spell.1
712 714 hashmake.1 := LINKSRC = spell.1
713 715 spellin.1 := LINKSRC = spell.1
714 716
715 717
716 718 strconf.1 := LINKSRC = strchg.1
717 719
718 720 settime.1 := LINKSRC = touch.1
719 721
720 722 onintr.1 := LINKSRC = trap.1
721 723
722 724 false.1 := LINKSRC = true.1
723 725
724 726 whence.1 := LINKSRC = typeset.1
725 727
726 728 # Links to usr/has/man
727 729
728 730 edit.1 := LINKSRC = ../../../has/man/man1has/edit.1has
729 731
730 732 vedit.1 := LINKSRC = ../../../has/man/man1has/vi.1has
731 733
732 734 .KEEP_STATE:
733 735
734 736 include $(SRC)/man/Makefile.man
735 737
736 738 install: $(ROOTMANFILES) $(ROOTMANLINKS)
↓ open down ↓ |
630 lines elided |
↑ open up ↑ |
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX