|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
LVM2 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
* |
|
LinWin |
|
|
|
|
3/30/26 |
|
LVM2 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Home |
|
|
|
|
|
|
|
|
|
|
|
|
https://serverfault.com/questions/461385/how-to-find-the-physical-volumes-that-hold-a-logical-volume-in-lvm |
|
|
|
|
Install / Fedora |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
cronjobs |
|
lsblk |
[root@T30-67 log]# lsblk |
|
|
|
|
|
|
|
$ lsblk |
|
|
|
|
|
|
|
|
|
|
|
|
|
Info (inxi) |
|
|
NAME
MAJ:MIN RM SIZE RO TYPE
MOUNTPOINT |
|
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT |
|
|
|
|
|
|
|
Desktops |
|
|
sda 8:0 0 931.5G
0 disk |
|
|
|
|
sda 8:0 0 223,6G
0 disk |
|
|
|
|
|
|
|
|
firewalld |
|
|
├─sda1 8:1 0
1G 0 part /boot |
|
|
|
├─sda1 8:1 0
350M 0 part |
|
|
|
|
|
|
|
|
LVM |
|
|
└─sda2 8:2 0 930.5G
0 part |
|
|
|
|
├─sda2 8:2 0
29G 0 part |
|
|
|
|
|
|
|
|
LVM2 |
|
|
├─fedora-root 253:0 0 15G
0 lvm / |
|
|
|
|
├─sda3 8:3 0
488M 0 part /boot |
|
|
|
|
|
|
|
N.Neighbor'd |
|
|
└─fedora-swap 253:1 0 7.8G
0 lvm [SWAP] |
|
|
├─sda4 8:4 0
1K 0 part |
|
|
|
|
|
|
|
|
NM |
|
|
sr0
11:0 1 1024M
0 rom |
|
|
|
|
└─sda5 8:5 0 193,8G
0 part |
|
|
|
|
|
|
|
|
Wireless |
|
|
|
|
|
|
|
|
|
|
|
|
├─vg_ssd-lv_root_solid 254:0
0 13,3G 0 lvm
/ |
|
|
|
|
|
|
|
|
Services |
|
|
|
|
|
|
|
|
|
|
|
|
├─vg_ssd-lv_srv_solid
254:2 0 46,6G
0 lvm /srv |
|
|
|
|
|
|
|
Sys Jour |
|
|
|
|
|
|
|
|
|
|
|
|
└─vg_ssd-lv_home_solid 254:3
0 107G 0 lvm
/home |
|
|
|
|
|
|
|
Debian |
|
|
|
|
|
|
|
|
|
|
|
|
sdb 8:16 0
74,5G 0 disk |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
└─sdb1 8:17 0
74,5G 0 part |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
├─vg_ssd-lv_swap_solid 254:1
0 3,7G 0 lvm
[SWAP] |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
└─vg_ssd-lv_videos
254:4 0 28G
0 lvm /mnt/videos |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
pvs, vgs, lvs |
|
Summary |
|
|
|
LVM tools exmples |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
pvs |
[root@T30-67 log]# pvs |
|
|
|
|
|
|
|
List the physical segments used by a logical
volume : |
|
|
|
|
|
|
|
|
|
|
|
PV VG Fmt
Attr PSize PFree |
|
|
|
$ lvs --segments /dev/vg_ssd/lv_videos |
|
|
|
|
|
|
|
|
|
|
|
|
/dev/sda2 fedora lvm2 a-- <930.51g 907.72g |
|
|
|
LV
VG Attr #Str Type SSize |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
lv_videos vg_ssd -wi-ao---- 1 linear 20,95g |
|
|
|
|
|
|
|
|
|
|
vgs |
[root@T30-67 log]# vgs |
|
|
|
|
|
|
|
lv_videos vg_ssd -wi-ao---- 1 linear
7,05g |
|
|
|
|
|
|
|
|
|
|
|
VG #PV #LV #SN Attr VSize
VFree |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
fedora 1 2
0 wz--n- <930.51g 907.72g |
|
|
|
same with more details: |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
$ lvs --segments /dev/vg_ssd/lv_videos -o
+lv_size,devices |
|
|
|
|
|
|
|
|
|
lvs |
[root@T30-67 log]# lvs |
|
|
|
|
|
|
|
LV VG
Attr #Str Type SSize
LSize Devices |
|
|
|
|
|
|
|
|
|
LV VG
Attr LSize Pool Origin Data% |
|
|
lv_videos vg_ssd -wi-ao---- 1
linear 20,95g 28,00g /dev/sdb1(12729) |
|
|
|
|
|
|
|
|
|
root
fedora -wi-ao---- 15.00g |
|
|
|
|
|
|
lv_videos vg_ssd -wi-ao---- 1
linear 7,05g 28,00g
/dev/sdb1(3534) |
|
|
|
|
|
|
|
|
|
swap
fedora -wi-ao---- <7.79g |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
List the physical extents of a given LV.
Useful to move those segments (using pvmove): |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
$ lvs
/dev/vg_ssd/lv_videos -o seg_pe_ranges |
|
|
|
|
|
|
|
|
|
|
|
pvdisplay, vgdisplay, lvdisplay |
Details |
|
|
PE
Ranges |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/dev/sdb1:12729-18090 |
|
|
|
|
|
|
|
|
|
|
|
|
|
pvdisplay |
[root@T30-67 /]# pvdisplay |
|
|
|
|
|
|
|
/dev/sdb1:3534-5339 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
---
Physical volume --- |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
PV
Name /dev/sda2 |
|
|
|
|
|
|
The opposite way, list the logical volume
(segments) inside a given Physical Volume: |
|
|
|
|
|
|
|
VG
Name fedora |
|
|
|
|
|
|
$ pvs
/dev/sdb1 --segments -o +lv_name,lv_size |
|
|
|
|
|
|
|
|
|
|
|
PV
Size 930.51 GiB / not
usable 4.00 MiB |
PV VG Fmt
Attr PSize PFree Start SSize LV LSize |
|
|
|
|
|
|
|
|
Allocatable yes |
|
|
|
|
|
|
/dev/sdb1 vg_ssd lvm2 a-- 74,53g 22,80g 0
3534 0 |
|
|
|
|
|
|
|
|
PE
Size 4.00 MiB |
|
|
|
|
|
|
/dev/sdb1 vg_ssd lvm2 a-- 74,53g 22,80g 3534
1806 lv_videos 28,00g |
|
|
|
|
|
|
|
|
Total
PE 238210 |
|
|
|
|
|
|
/dev/sdb1 vg_ssd lvm2 a-- 74,53g 22,80g 5340
1316 0 |
|
|
|
|
|
|
|
|
Free
PE 232377 |
|
|
|
|
|
|
/dev/sdb1 vg_ssd lvm2 a-- 74,53g 22,80g 11776 953 lv_swap_solid 3,72g |
|
|
|
|
|
|
|
|
Allocated PE 5833 |
|
|
|
|
|
|
/dev/sdb1 vg_ssd lvm2 a-- 74,53g 22,80g 12729 5362 lv_videos 28,00g |
|
|
|
|
|
|
|
|
PV
UUID
DPteBz-Qm4c-rXqW-GJoM-hNA1- |
|
|
/dev/sdb1 vg_ssd lvm2 a-- 74,53g 22,80g 18091 988 0 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
vgdisplay |
[root@T30-67 /]# vgdisplay |
|
|
|
|
|
|
|
List the physical segments of a given logical
volume, among other information: |
|
|
|
|
|
|
|
|
---
Volume group --- |
|
|
|
|
|
|
|
$ lvdisplay -m /dev/vg_ssd/lv_videos |
|
|
|
|
|
|
|
|
|
|
|
|
VG
Name fedora |
|
|
|
|
|
|
[..] |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
System
ID |
|
|
|
|
|
|
|
|
---
Segments --- |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Format lvm2 |
|
|
|
|
|
|
Logical
extents 0 to 5361: |
|
|
|
|
|
|
|
|
|
|
|
|
|
Metadata Areas 1 |
|
|
|
|
|
|
|
Type linear |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Metadata Sequence No 3 |
|
|
|
|
|
|
|
Physical volume /dev/sdb1 |
|
|
|
|
|
|
|
|
|
|
|
|
|
VG
Access read/write |
|
|
|
|
|
|
Physical extents 12729 to
18090 |
|
|
|
|
|
|
|
|
|
|
|
|
VG
Status resizable |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
MAX
LV 0 |
|
|
|
|
|
|
|
Logical
extents 5362 to 7167: |
|
|
|
|
|
|
|
|
|
|
|
|
|
Cur
LV 2 |
|
|
|
|
|
|
|
Type linear |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Open
LV 2 |
|
|
|
|
|
|
|
Physical volume /dev/sdb1 |
|
|
|
|
|
|
|
|
|
|
|
|
|
Max
PV 0 |
|
|
|
|
|
|
|
Physical extents 3534 to 5339 |
|
|
|
|
|
|
|
|
|
|
|
|
Cur
PV 1 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Act
PV 1 |
|
|
|
|
|
|
|
Display the Logical volume associated with a
given physical volume , among other information: |
|
|
|
|
|
|
VG
Size <930.51 GiB |
|
|
|
|
|
|
$ pvdisplay -m /dev/sdb1 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
PE
Size 4.00 MiB |
|
|
|
|
|
|
[..] |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Total
PE 238210 |
|
|
|
|
|
|
---
Physical Segments --- |
|
|
|
|
|
|
|
|
|
|
|
|
|
Alloc
PE / Size 5833 / <22.79 GiB |
|
|
|
|
Physical extent 0 to 3533: |
|
|
|
|
|
|
|
|
|
|
|
|
|
Free PE / Size 232377 / 907.72 GiB |
|
|
|
|
FREE |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
VG
UUID
ZkkHVa-wPfR-vrcO-ELzH-jSKz- |
|
|
Physical extent 0 to 5339: |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Logical volume
/dev/vg_ssd/lv_videos |
|
|
|
|
|
|
|
|
|
|
|
lvdisplay |
[root@T30-67 /]# lvdisplay |
|
|
|
|
|
|
|
Logical extents 5362 to 7167 |
|
|
|
|
|
|
|
|
|
|
|
|
|
---
Logical volume --- |
|
|
|
|
|
|
|
Physical extent 5340 to 11775: |
|
|
|
|
|
|
|
|
|
|
|
|
|
LV
Path /dev/fedora/swap |
|
|
|
|
FREE |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
LV
Name swap |
|
|
|
|
|
|
Physical extent 11776 to 12728: |
|
|
|
|
|
|
|
|
|
|
|
|
|
VG
Name fedora |
|
|
|
|
|
|
Logical volume
/dev/vg_ssd/lv_swap_solid |
|
|
|
|
|
|
|
|
|
|
|
|
LV
UUID
Gu7Hgt-xNPs-bykh-50lq-hues- |
|
Logical extents 0 to 952 |
|
|
|
|
|
|
|
|
|
|
|
|
|
LV
Write Access read/write |
|
|
|
|
|
|
Physical extent 12729 to 18090: |
|
|
|
|
|
|
|
|
|
|
|
|
|
LV
Creation host, time T30-67, 2019-02-12 11:39:54 |
|
Logical volume
/dev/vg_ssd/lv_videos |
|
|
|
|
|
|
|
|
|
|
|
|
LV
Status available |
|
|
|
|
|
|
Logical extents 0 to 5361 |
|
|
|
|
|
|
|
|
|
|
|
|
|
#
open 2 |
|
|
|
|
|
|
|
Physical extent 18091 to 19078: |
|
|
|
|
|
|
|
|
|
|
|
|
|
LV
Size <7.79 GiB |
|
|
|
|
|
|
FREE |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Current
LE 1993 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Segments 1 |
|
|
|
|
|
|
|
Complex command, but full list : |
|
|
|
|
|
|
|
|
|
|
|
|
|
Allocation inherit |
|
|
|
|
|
|
$ pvs
--segments -o
pv_name,pv_size,seg_size,vg_name,lv_name,lv_size,seg_pe_ranges |
|
|
|
|
|
|
|
Read
ahead sectors auto |
|
|
|
|
|
|
PV PSize SSize
VG LV LSize PE Ranges |
|
|
|
|
|
|
|
|
-
currently set to 256 |
|
|
|
|
|
|
/dev/sda5 193,79g 9,31g vg_ssd lv_root_solid 13,31g /dev/sda5:0-2383 |
|
|
|
|
|
|
|
|
Block
device 253:1 |
|
|
|
|
|
|
/dev/sda5 193,79g 3,72g vg_ssd lv_home_solid 107,00g
/dev/sda5:2384-3336 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/dev/sda5 193,79g 46,56g vg_ssd lv_srv_solid 46,56g /dev/sda5:3337-15256 |
|
|
|
|
|
|
|
|
---
Logical volume --- |
|
|
|
|
|
|
|
/dev/sda5 193,79g 60,00g vg_ssd lv_home_solid 107,00g
/dev/sda5:15257-30616 |
|
|
|
|
|
|
|
|
LV
Path /dev/fedora/root |
|
|
|
|
/dev/sda5 193,79g 200,00m
vg_ssd lv_home_solid 107,00g /dev/sda5:30617-30666 |
|
|
|
|
|
|
|
|
LV
Name root |
|
|
|
|
|
|
/dev/sda5 193,79g 1,05g vg_ssd 0 |
|
|
|
|
|
|
|
|
VG
Name fedora |
|
|
|
|
|
|
/dev/sda5 193,79g 8,00g vg_ssd lv_home_solid 107,00g
/dev/sda5:30937-32984 |
|
|
|
|
|
|
|
|
LV
UUID
SqV0k1-9CuD-Tl62-rl1A-49qF- |
|
/dev/sda5 193,79g 4,00g vg_ssd lv_root_solid 13,31g /dev/sda5:32985-34008 |
|
|
|
|
|
|
|
|
LV
Write Access read/write |
|
|
|
|
|
|
/dev/sda5 193,79g 20,00g vg_ssd lv_home_solid 107,00g
/dev/sda5:34009-39128 |
|
|
|
|
|
|
|
|
LV
Creation host, time T30-67, 2019-02-12 11:39:54 |
|
/dev/sda5 193,79g 9,80g vg_ssd lv_home_solid 107,00g
/dev/sda5:41689-44198 |
|
|
|
|
|
|
|
|
LV
Status available |
|
|
|
|
|
|
/dev/sda5 193,79g 1,28g vg_ssd lv_home_solid 107,00g
/dev/sda5:44199-44525 |
|
|
|
|
|
|
|
|
#
open 1 |
|
|
|
|
|
|
|
/dev/sda5 193,79g 15,86g vg_ssd 0 |
|
|
|
|
|
|
|
|
LV
Size 15.00 GiB |
|
|
|
|
|
|
/dev/sda5 193,79g 4,00g vg_ssd lv_home_solid 107,00g
/dev/sda5:48587-49610 |
|
|
|
|
|
|
|
|
Current
LE 3840 |
|
|
|
|
|
|
/dev/sdb1 74,53g 13,80g vg_ssd 0 |
|
|
|
|
|
|
|
|
Segments 1 |
|
|
|
|
|
|
|
/dev/sdb1 74,53g 7,05g vg_ssd lv_videos 28,00g /dev/sdb1:3534-5339 |
|
|
|
|
|
|
|
|
Allocation inherit |
|
|
|
|
|
|
/dev/sdb1 74,53g 5,14g vg_ssd 0 |
|
|
|
|
|
|
|
|
Read
ahead sectors auto |
|
|
|
|
|
|
/dev/sdb1 74,53g 3,72g vg_ssd lv_swap_solid 3,72g /dev/sdb1:11776-12728 |
|
|
|
|
|
|
|
|
-
currently set to 256 |
|
|
|
|
|
|
/dev/sdb1 74,53g 20,95g vg_ssd lv_videos 28,00g /dev/sdb1:12729-18090 |
|
|
|
|
|
|
|
|
Block
device 253:0 |
|
|
|
|
|
|
/dev/sdb1 74,53g 3,86g vg_ssd 0 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Examples |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
lvresize -L 15G --resizefs MyVolGroup/mediavol |
|
|
|
|
|
|
|
|
|
Set the size of logical volume mediavol in MyVolGroup to 15 GiB
and resize its file system all at once: |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
lvresize -L 800G --resizefs fedora/root |
|
|
|
|
|
|
|
|
|
Set the size of logical volume root in fedora to 800 GiB
and resize its file system all at once: |
|
|
|
|
|
|
|
lvresize -L +10G --resizefs fedora/root |
|
|
|
|
|
Extend the logical volume root in fedora by 10 GiB and
resize its file system all at once: |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
lvresize -l +100%FREE
--resizefs emach69-vg/root |
|
|
|
|
|
|
|
|
|
If you want to fill all the free space on a
volume group, use the following command: |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
[root@T30-67 pictures]# df -h |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Filesystem Size Used Avail Use% Mounted on |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
devtmpfs 3.9G 0
3.9G 0% /dev |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
tmpfs 3.9G 0
3.9G 0% /dev/shm |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
tmpfs 3.9G 1.2M
3.9G 1% /run |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
tmpfs 3.9G 0
3.9G 0% /sys/fs/cgroup |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/dev/mapper/fedora-root 200G
98G 103G 49% / |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
tmpfs 3.9G 0
3.9G 0% /tmp |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/dev/sda1 976M 164M
746M 18% /boot |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
tmpfs 785M 0
785M 0% /run/user/0 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
tmpfs 785M 0
785M 0% /run/user/1000 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|