ELF>@@ HEL9rnIM;wVID$II$LHIT$HHHt/HEID$HEAHIDžAe#HEL9rnIM;wVID$II$LHIT$HHHt/HEID$HEAHIDžAe#HEL9rnIM;wVID$II$LHIT$HHHt/HEID$HEAHIDžAe#HEL9rnIM;wVID$II$LHIT$HHHt/HEID$HEAHIDžAe#HEL9rnIM;wVID$II$LHIT$HHHt/HEID$HEAHIDžAe#HEL9rsIM;w[ID$II$LHIT$HHHt4HEID$HEAHIDžAe#fDHEL9rsIM;w[ID$II$LHIT$HHHt4HEID$HEAHIDžAe#fDHEL9rsIM;w[ID$II$LHIT$HHHt4HEID$HEAHIDžAe#fDHEL9rsIM;w[ID$II$LHIT$HHHt4HEID$HEAHIDžAe#fDHEL9rsIM;w[ID$II$LHIT$HHHt4HEID$HEAHIDžAe#fDHEL9rsIM;w[ID$II$LHIT$HHHt4HEID$HEAHIDžAe#fDHEL9rnIM;wVID$II$LHIT$HHHt/HEID$HEAHIDžAe#HEL9rnIM;wVID$II$LHIT$HHHt/HEID$HEAHIDžAe#HEL9rnIM;wVID$II$LHIT$HHHt/HEID$HEAHIDžAe#HEL9rnIM;wVID$II$LHIT$HHHt/HEID$HEAHIDžAe#HEL9rnIM;wVID$II$LHIT$HHHt/HEID$HEAHIDžAe#HEL9rnIM;wVID$II$LHIT$HHHt/HEID$HEAHIDžAe#HEL9rnIM;wVID$II$LHIT$HHHt/HEID$HEAHIDžAe#HEL9rnIM;wVID$II$LHIT$HHHt/HEID$HEAHIDžAe#HEL9rnIM;wVID$II$LHIT$HHHt/HEID$HEAHIDžAe#HEL9rnIM;wVID$II$LHIT$HHHt/HEID$HEAHIDžAe#HEL9rnIM;wVID$II$LHIT$HHHt/HEID$HEAHIDžAe#HEL9rnIM;wVID$II$LHIT$HHHt/HEID$HEAHIDžAe#HEL9rnIM;wVID$II$LHIT$HHHt/HEID$HEAHIDžAe#HEL9rnIM;wVID$II$LHIT$HHHt/HEID$HEAHIDžAe#HEL9rnIM;wVID$II$LHIT$HHHt/HEID$HEAHIDžAe#HEL9rnIM;wVID$II$LHIT$HHHt/HEID$HEAHIDžAe#HEL9rnIM;wVID$II$LHIT$HHHt/HEID$HEAHIDžAe#HEL9rnIM;wVID$II$LHIT$HHHt/HEID$HEAHIDžAe#HEL9rnIM;wVID$II$LHIT$HHHt/HEID$HEAHIDžAe#HEL9rnIM;wVID$II$LHIT$HHHt/HEID$HEAHIDžAe#HEL9rnIM;wVID$II$LHIT$HHHt/HEID$HEAHIDžAe#HEL9rnIM;wVID$II$LHIT$HHHt/HEID$HEAHIDžAe#HEL9rnIM;wVID$II$LHIT$HHHt/HEID$HEAHIDžAe#HEL9rnIM;wVID$II$LHIT$HHHt/HEID$HEAHIDžAe#HEL9rnIM;wVID$II$LHIT$HHHt/HEID$HEAHIDžAe#HEL9rnIM;wVID$II$LHIT$HHHt/HEID$HEAHIDžAe#HEL9rnIM;wVID$II$LHIT$HHHt/HEID$HEAHIDžAe#HEL9rnIM;wVID$II$LHIT$HHHt/HEID$HEAHIDžAe#HEL9rnIM;wVID$II$LHIT$HHHt/HEID$HEAHIDžAe#HEL9rnIM;wVID$II$LHIT$HHHt/HEID$HEAHIDžAe#HEL9rnIM;wVID$II$LHIT$HHHt/HEID$HEAHIDžAe#HEL9rnIM;wVID$II$LHIT$HHHt/HEID$HEAHIDžAe#HEL9rnIM;wVID$II$LHIT$HHHt/HEID$HEAHIDžAe#HEL9rnIM;wVID$II$LHIT$HHHt/HEID$HEAHIDžAe#HEL9rnIM;wVID$II$LHIT$HHHt/HEID$HEAHIDžAe#HEL9rnIM;wVID$II$LHIT$HHHt/HEID$HEAHIDžAe#HEL9rnIM;wVID$II$LHIT$HHHt/HEID$HEAHIDžAe#HEL9rnIM;wVID$II$LHIT$HHHt/HEID$HEAHIDžAe#HEL9rnIM;wVID$II$LHIT$HHHt/HEID$HEAHIDžAe#HEL9rnIM;wVID$II$LHIT$HHHt/HEID$HEAHIDžAe#HEL9rnIM;wVID$II$LHIT$HHHt/HEID$HEAHIDžAe#HEL9rnIM;wVID$II$LHIT$HHHt/HEID$HEAHIDžAe#HEL9rnIM;wVID$II$LHIT$HHHt/HEID$HEAHIDžAe#HEL9rnIM;wVID$II$LHIT$HHHt/HEID$HEAHIDžAe#HEL9rnIM;wVID$II$LHIT$HHHt/HEID$HEAHIDžAe#HEL9rnIM;wVID$II$LHIT$HHHt/HEID$HEAHIDžAe#HEL9rnIM;wVID$II$LHIT$HHHt/HEID$HEAHIDžAe#HEL9rnIM;wVID$II$LHIT$HHHt/HEID$HEAHIDžAe#HEL9rnIM;wVID$II$LHIT$HHHt/HEID$HEAHIDžAe#HEL9rnIM;wVID$II$LHIT$HHHt/HEID$HEAHIDžAe#HEL9rnIM;wVID$II$LHIT$HHHt/HEID$HEAHIDžAe#HEL9rnIM;wVID$II$LHIT$HHHt/HEID$HEAHIDžAe#HEL9rnIM;wVID$II$LHIT$HHHt/HEID$HEAHIDžAe#HEL9rnIM;wVID$II$LHIT$HHHt/HEID$HEAHIDžAe#HEL9rnIM;wVID$II$LHIT$HHHt/HEID$HEAHIDžAe#HEL9rnIM;wVID$II$LHIT$HHHt/HEID$HEAHIDžAe#HEL9rnIM;wVID$II$LHIT$HHHt/HEID$HEAHIDžAe#HEL9rnIM;wVID$II$LHIT$HHHt/HEID$HEAHIDžAe#HEL9rnIM;wVID$II$LHIT$HHHt/HEID$HEAHIDžAe#HEL9rnIM;wVID$II$LHIT$HHHt/HEID$HEAHIDžAe#HEL9rnIM;wVID$II$LHIT$HHHt/HEID$HEAHIDžAe#HEL9rnIM;wVID$II$LHIT$HHHt/HEID$HEAHIDžAe#HEL9rnIM;wVID$II$LHIT$HHHt/HEID$HEAHIDžAe#HEL9rnIM;wVID$II$LHIT$HHHt/HEID$HEAHIDžAe#HEL9rnIM;wVID$II$LHIT$HHHt/HEID$HEAHIDžAe#HEL9rnIM;wVID$II$LHIT$HHHt/HEID$HEAHIDžAe#HEL9rnIM;wVID$II$LHIT$HHHt/HEID$HEAHIDžAe#HEL9rnIM;wVID$II$LHIT$HHHt/HEID$HEAHIDžAe#HEL9rnIM;wVID$II$LHIT$HHHt/HEID$HEAHIDžAe#HEL9rnIM;wVID$II$LHIT$HHHt/HEID$HEAHIDžAe#HEL9rnIM;wVID$II$LHIT$HHHt/HEID$HEAHIDžAe#HEL9rnIM;wVID$II$LHIT$HHHt/HEID$HEAHIDžAe#HEL9rnIM;wVID$II$LHIT$HHHt/HEID$HEAHIDžAe#HEL9rnIM;wVID$II$LHIT$HHHt/HEID$HEAHIDžAe#HEL9rnIM;wVID$II$LHIT$HHHt/HEID$HEAHIDžAe#HEL9rnIM;wVID$II$LHIT$HHHt/HEID$HEAHIDžAe#HEL9rnIM;wVID$II$LHIT$HHHt/HEID$HEAHIDžAe#HEL9rnIM;wVID$II$LHIT$HHHt/HEID$HEAHIDžAe#HEL9rnIM;wVID$II$LHIT$HHHt/HEID$HEAHIDžAe#HEL9rnIM;wVID$II$LHIT$HHHt/HEID$HEAHIDžAe#HEL9rnIM;wVID$II$LHIT$HHHt/HEID$HEAHIDžAe#HEL9rnIM;wVID$II$LHIT$HHHt/HEID$HEAHIDžAe#HEL9rnIM;wVID$II$LHIT$HHHt/HEID$HEAHIDžAe#HEL9rnIM;wVID$II$LHIT$HHHt/HEID$HEAHIDžAe#HEL9rnIM;wVID$II$LHIT$HHHt/HEID$HEAHIDžAe#HEL9rnIM;wVID$II$LHIT$HHHt/HEID$HEAHIDžAe#HEL9rnIM;wVID$II$LHIT$HHHt/HEID$HEAHIDžAe#HEL9rnIM;wVID$II$LHIT$HHHt/HEID$HEAHIDžAe#HEL9rnIM;wVID$II$LHIT$HHHt/HEID$HEAHIDžAe#HEL9rnIM;wVID$II$LHIT$HHHt/HEID$HEAHIDžAe#HEL9rnIM;wVID$II$LHIT$HHHt/HEID$HEAHIDžAe#HEL9rnIM;wVID$II$LHIT$HHHt/HEID$HEAHIDžAe#HEL9rnIM;wVID$II$LHIT$HHHt/HEID$HEAHIDžAe#HEL9rnIM;wVID$II$LHIT$HHHt/HEID$HEAHIDžAe#HEL9rnIM;wVID$II$LHIT$HHHt/HEID$HEAHIDžAe#HEL9rnIM;wVID$II$LHIT$HHHt/HEID$HEAHIDžAe#HEL9rnIM;wVID$II$LHIT$HHHt/HEID$HEAHIDžAe#HEL9rnIM;wVID$II$LHIT$HHHt/HEID$HEAHIDžAe#HEL9rnIM;wVID$II$LHIT$HHHt/HEID$HEAHIDžAe#HEL9rnIM;wVID$II$LHIT$HHHt/HEID$HEAHIDžAe#HEL9rnIM;wVID$II$LHIT$HHHt/HEID$HEAHIDžAe#HEL9rnIM;wVID$II$LHIT$HHHt/HEID$HEAHIDžAe#HEL9rnIM;wVID$II$LHIT$HHHt/HEID$HEAHIDžAe#HEL9rnIM;wVID$II$LHIT$HHHt/HEID$HEAHIDžAe#HEL9rnIM;wVID$II$LHIT$HHHt/HEID$HEAHIDžAe#HEL9rnIM;wVID$II$LHIT$HHHt/HEID$HEAHIDžAe#HEL9rnIM;wVID$II$LHIT$HHHt/HEID$HEAHIDžAe#HEL9rnIM;wVID$II$LHIT$HHHt/HEID$HEAHIDžAe#HEL9rnIM;wVID$II$LHIT$HHHt/HEID$HEAHIDžAe#HEL9rnIM;wVID$II$LHIT$HHHt/HEID$HEAHIDžAe#HEL9rnIM;wVID$II$LHIT$HHHt/HEID$HEAHIDžAe#HEL9rnIM;wVID$II$LHIT$HHHt/HEID$HEAHIDžAe#HEL9rnIM;wVID$II$LHIT$HHHt/HEID$HEAHIDžAe#HEL9rnIM;wVID$II$LHIT$HHHt/HEID$HEAHIDžAe#HEL9rnIM;wVID$II$LHIT$HHHt/HEID$HEAHIDžAe#HEL9rnIM;wVID$II$LHIT$HHHt/HEID$HEAHIDžAe#HEL9rnIM;wVID$II$LHIT$HHHt/HEID$HEAHIDžAe#HEL9rnIM;wVID$II$LHIT$HHHt/HEID$HEAHIDžAe#HEL9rnIM;wVID$II$LHIT$HHHt/HEID$HEAHIDžAe#HEL9rnIM;wVID$II$LHIT$HHHt/HEID$HEAHIDžAe#HEL9rnIM;wVID$II$LHIT$HHHt/HEID$HEAHIDžAe#HEL9rnIM;wVID$II$LHIT$HHHt/HEID$HEAHIDžAe#HEL9rnIM;wVID$II$LHIT$HHHt/HEID$HEAHIDžAe#HEL9rnIM;wVID$II$LHIT$HHHt/HEID$HEAHIDžAe#HEL9rnIM;wVID$II$LHIT$HHHt/HEID$HEAHIDžAe#HEL9rnIM;wVID$II$LHIT$HHHt/HEID$HEAHIDžAe#HEL9rnIM;wVID$II$LHIT$HHHt/HEID$HEAHIDžAe#HEL9rnIM;wVID$II$LHIT$HHHt/HEID$HEAHIDžAe#HEL9rnIM;wVID$II$LHIT$HHHt/HEID$HEAHIDžAe#HEL9rnIM;wVID$II$LHIT$HHHt/HEID$HEAHIDžAe#HEL9rnIM;wVID$II$LHIT$HHHt/HEID$HEAHIDžAe#HEL9rnIM;wVID$II$LHIT$HHHt/HEID$HEAHIDžAe#HEL9rnIM;wVID$II$LHIT$HHHt/HEID$HEAHIDžAe#HEL9rnIM;wVID$II$LHIT$HHHt/HEID$HEAHIDžAe#HEL9rnIM;wVID$II$LHIT$HHHt/HEID$HEAHIDžAe#HEL9rnIM;wVID$II$LHIT$HHHt/HEID$HEAHIDžAe#HEL9rnIM;wVID$II$LHIT$HHHt/HEID$HEAHIDžAe#HEL9rnIM;wVID$II$LHIT$HHHt/HEID$HEAHIDžAe#HEL9rnIM;wVID$II$LHIT$HHHt/HEID$HEAHIDžAe#HEL9rnIM;wVID$II$LHIT$HHHt/HEID$HEAHIDžAe#HEL9rsIM;w[ID$II$LHIT$HHHt4HEID$HEAHIDžAe#fDHEL9rnIM;wVID$II$LHIT$HHHt/HEID$HEAHIDžAe#HEL9rnIM;wVID$II$LHIT$HHHt/HEID$HEAHIDžAe#HEL9rnIM;wVID$II$LHIT$HHHt/HEID$HEAHIDžAe#HEL9rnIM;wVID$II$LHIT$HHHt/HEID$HEAHIDžAe#HEL9rnIM;wVID$II$LHIT$HHHt/HEID$HEAHIDžAe#HEL9rnIM;wVID$II$LHIT$HHHt/HEID$HEAHIDžAe#HEL9rnIM;wVID$II$LHIT$HHHt/HEID$HEAHIDžAe#HEL9rnIM;wVID$II$LHIT$HHHt/HEID$HEAHIDžAe#HEL9rnIM;wVID$II$LHIT$HHHt/HEID$HEAHIDžAe#HEL9rnIM;wVID$II$LHIT$HHHt/HEID$HEAHIDžAe#HEL9rnIM;wVID$II$LHIT$HHHt/HEID$HEAHIDžAe#HEL9rnIM;wVID$II$LHIT$HHHt/HEID$HEAHIDžAe#HEL9rnIM;wVID$II$LHIT$HHHt/HEID$HEAHIDžAe#HEL9rnIM;wVID$II$LHIT$HHHt/HEID$HEAHIDžAe#HEL9rnIM;wVID$II$LHIT$HHHt/HEID$HEAHIDžAe#HEL9rnIM;wVID$II$LHIT$HHHt/HEID$HEAHIDžAe#HEL9rnIM;wVID$II$LHIT$HHHt/HEID$HEAHIDžAe#HEL9rnIM;wVID$II$LHIT$HHHt/HEID$HEAHIDžAe#HEL9rnIM;wVID$II$LHIT$HHHt/HEID$HEAHIDžAe#HEL9rnIM;wVID$II$LHIT$HHHt/HEID$HEAHIDžAe#HEL9rnIM;wVID$II$LHIT$HHHt/HEID$HEAHIDžAe#HEL9rnIM;wVID$II$LHIT$HHHt/HEID$HEAHIDžAe#HEL9rnIM;wVID$II$LHIT$HHHt/HEID$HEAHIDžAe#HEL9rnIM;wVID$II$LHIT$HHHt/HEID$HEAHIDžAe#HEL9rnIM;wVID$II$LHIT$HHHt/HEID$HEAHIDžAe#HEL9rnIM;wVID$II$LHIT$HHHt/HEID$HEAHIDžAe#HEL9rnIM;wVID$II$LHIT$HHHt/HEID$HEAHIDžAe#HEL9rnIM;wVID$II$LHIT$HHHt/HEID$HEAHIDžAe#HEL9rnIM;wVID$II$LHIT$HHHt/HEID$HEAHIDžAe#HEL9rnIM;wVID$II$LHIT$HHHt/HEID$HEAHIDžAe#HEL9rnIM;wVID$II$LHIT$HHHt/HEID$HEAHIDžAe#HEL9rnIM;wVID$II$LHIT$HHHt/HEID$HEAHIDžAe#HEL9rnIM;wVID$II$LHIT$HHHt/HEID$HEAHIDžAe#HEL9rsIM;w[ID$II$LHIT$HHHt4HEID$HEAHIDžAe#fDHEL9rHEH]LsH^AefHEL9rcI0M;wKHEH]ID$HCID$ID$ID$ID$I$LsIt$HIDž0Ae HHHs HeIPM;w^ID$HCID$HCID$ID$ID$ID$ID$ID$ID$ID$I$I\$HeIDžPAeDHEL9rLHEHH##AeHEL9rHEH]LsH^AefHEL9rcI0M;wKHEH]ID$HCID$ID$ID$ID$I$LsIt$HIDž0Ae HHHs HeIPM;w^ID$HCID$HCID$ID$ID$ID$ID$ID$ID$ID$I$I\$HeIDžPAeDHEL9rLHEHH##AeHEL9r!HEH]E1HsHAefHEL9rIIM;w1HEH]ID$HCI$AIt$HIDžAefHEL9rHEH]LsHAeDHEL9rvIHM;w^HEH]ID$HCID$ID$HCID$ID$ID$ID$I$Mt$It$HIDžHAeDHEL9rRI M;w:HEH]ID$HCID$HCI$AIt$HIDž AeI8M;w2ID$Mt$It$ID$ID$ID$I<$I\$eIDž8AeD H[HH#f H[HEHu#HEL9r'HEH]H[HEHHu#Ae@ CAHAH CAHHEf CIHuHEH CHCHEAHsHEHD CH[HEHu# CH[HEHu#CHEL9r'HEH]H[HEHHu#Ae@HEL9rIIM;w1HEH]ID$HCI$AIt$HIDžAefHEL9rHEH]LsH~AefHEL9rcI0M;wKHEH]ID$HCID$ID$ID$ID$I$LsIt$HIDž0Ae HHHsHH#IPM;w^ID$HCID$HCID$ID$ID$ID$ID$ID$ID$ID$I$I\$HeIDžPAefHEL9r!HEH]LsHEHAefHEL9rIIM;w1HEH]ID$HCI$AIt$HIDžAefHEL9rHEH]LsHAef@HEL9rcI0M;wKHEH]ID$HCID$ID$ID$ID$I$LsIt$HIDž0Ae `HHHsHH#IPM;w^ID$HCID$HCID$ID$ID$ID$ID$ID$ID$ID$I$I\$HeIDžPAef`HEL9r!HEH]LsHEHAef`HEL9rIIM;w1HEH]ID$HCI$AIt$HIDžAef HHHsHH#HH#DHEL9r!HEH]LsHEHAefHEL9rIIM;w1HEH]ID$HCI$AIt$HIDžAef HHHs HeHH#HEL9r'HEH]H[HEHHu#Ae@HEL9rHEH]AHsHAe@HEL9rHEH]LsHAeDHEL9rIIM;w1HEH]ID$HCI$AIt$HIDžAefIĠM;IDŽ$hM$xIDŽ$M$IDŽ$IDŽ$I$I$IDŽ$IDŽ$I$I$IDŽ$IDŽ$I$I$IDŽ$IDŽ$I$I$IDŽ$IDŽ$I$I$IDŽ$IDŽ$I$I$ IDŽ$(I$hI$8IDŽ$@I$(I$HI$I$PIDŽ$XI$hI$hIDŽ$pI$XI$xI$BI$IDŽ$I$hI$IDŽ$I$I$I$rI$IDŽ$IDŽ$I$I$IDŽ$IDŽ$I$I$IDŽ$IDŽ$I$I$IDŽ$IDŽ$I$I$IDŽ$IDŽ$ I$I$(IDŽ$0IDŽ$8I$I$@IDŽ$HIDŽ$PI$2I$XIDŽ$`M$pIDŽ$xI$`ID$I$JID$ID$I|$ID$ID$ID$I$zID$ID$ID$ID$ID$ID$It$ID$ID$ID$ID$I$Mt$IDžAeHLM;}{import Aleximport Data.Maybe (isNothing, fromJust)-- Generated by the BNF Converter-- local parameters-- layout separatorslayoutOpen = layoutClose = layoutSep = -- | Replace layout syntax with explicit layout tokens.resolveLayout :: Bool -- ^ Whether to use top-level layout. -> [Token] -> [Token]resolveLayout tp = res Nothing [if tl then Implicit 1 else Explicit] where -- Do top-level layout if the function parameter and the grammar say so. tl = tp && topLayout res :: Maybe Token -- ^ The previous token, if any. -> [Block] -- ^ A stack of layout blocks. -> [Token] -> [Token] -- The stack should never be empty. res _ [] ts = error $ "Layout error: stack empty. Tokens: " ++ show ts res _ st (t0:ts) -- We found an open brace in the input, -- put an explicit layout block on the stack. -- This is done even if there was no layout word, -- to keep opening and closing braces. | isLayoutOpen t0 = moveAlong (Explicit:st) [t0] ts -- Start a new layout block if the first token is a layout word | isLayout t0 = case ts of -- Explicit layout, just move on. The case above -- will push an explicit layout block. t1:_ | isLayoutOpen t1 -> moveAlong st [t0] ts -- at end of file, the start column doesn't matter _ -> let col = if null ts then column t0 else column (head ts) -- insert an open brace after the layout word b:ts' = addToken (nextPos t0) layoutOpen ts -- save the start column st' = Implicit col:st in moveAlong st' [t0,b] ts' -- If we encounter a closing brace, exit the first explicit layout block. | isLayoutClose t0 = let st' = drop 1 (dropWhile isImplicit st) in if null st' then error $ "Layout error: Found " ++ layoutClose ++ " at (" ++ show (line t0) ++ "," ++ show (column t0) ++ ") without an explicit layout block." else moveAlong st' [t0] ts -- We are in an implicit layout block res pt st@(Implicit n:ns) (t0:ts) -- End of implicit block by a layout stop word | isStop t0 = -- Exit the current block and all implicit blocks -- more indented than the current token let (ebs,ns') = span (`moreIndent` column t0) ns moreIndent (Implicit x) y = x > y moreIndent Explicit _ = False -- the number of blocks exited b = 1 + length ebs bs = replicate b layoutClose -- Insert closing braces after the previous token. (ts1,ts2) = splitAt (1+b) $ addTokens (afterPrev pt) bs (t0:ts) in moveAlong ns' ts1 ts2 -- End of an implicit layout block | newLine && column t0 < n = -- Insert a closing brace after the previous token. let b:t0':ts' = addToken (afterPrev pt) layoutClose (t0:ts) -- Repeat, with the current block removed from the stack in moveAlong ns [b] (t0':ts') -- Encounted a new line in an implicit layout block. | newLine && column t0 == n = -- Insert a semicolon after the previous token. -- unless we are the beginning of the file, -- or the previous token is a semicolon or open brace. if isNothing pt || isTokenIn [layoutSep,layoutOpen] (fromJust pt) then moveAlong st [t0] ts else let b:t0':ts' = addToken (afterPrev pt) layoutSep (t0:ts) in moveAlong st [b,t0'] ts' where newLine = case pt of Nothing -> True Just t -> line t /= line t0 -- Nothing to see here, move along. res _ st (t:ts) = moveAlong st [t] ts -- At EOF: skip explicit blocks. res (Just t) (Explicit:bs) [] | null bs = [] | otherwise = res (Just t) bs [] -- If we are using top-level layout, insert a semicolon after -- the last token, if there isn't one already res (Just t) [Implicit n] [] | isTokenIn [layoutSep] t = [] | otherwise = addToken (nextPos t) layoutSep [] -- At EOF in an implicit, non-top-level block: close the block res (Just t) (Implicit n:bs) [] = let c = addToken (nextPos t) layoutClose [] in moveAlong bs c [] -- This should only happen if the input is empty. res Nothing st [] = [] -- | Move on to the next token. moveAlong :: [Block] -- ^ The layout stack. -> [Token] -- ^ Any tokens just processed. -> [Token] -- ^ the rest of the tokens. -> [Token] moveAlong st [] ts = error $ "Layout error: moveAlong got [] as old tokens" moveAlong st ot ts = ot ++ res (Just $ last ot) st tsdata Block = Implicit Int -- ^ An implicit layout block with its start column. | Explicit deriving Showtype Position = Posn-- | Check if s block is implicit.isImplicit :: Block -> BoolisImplicit (Implicit _) = TrueisImplicit _ = False-- | Insert a number of tokens at the begninning of a list of tokens.addTokens :: Position -- ^ Position of the first new token. -> [String] -- ^ Token symbols. -> [Token] -- ^ The rest of the tokens. These will have their -- positions updated to make room for the new tokens . -> [Token] addTokens p ss ts = foldr (addToken p) ts ss-- | Insert a new symbol token at the begninning of a list of tokens.addToken :: Position -- ^ Position of the new token. -> String -- ^ Symbol in the new token. -> [Token] -- ^ The rest of the tokens. These will have their -- positions updated to make room for the new token. -> [Token]addToken p s ts = sToken p s : map (incrGlobal p (length s)) ts-- | Get the position immediately to the right of the given token.-- If no token is given, gets the first position in the file.afterPrev :: Maybe Token -> PositionafterPrev = maybe (Pn 0 1 1) nextPosnextPos :: Token -> Position nextPos t = Pn (g + s) l (c + s + 1) where Pn g l c = position t s = tokenLength t-- | Add to the global and column positions of a token.-- The column position is only changed if the token is on-- the same line as the given position.incrGlobal :: Position -- ^ If the token is on the same line -- as this position, update the column position. -> Int -- ^ Number of characters to add to the position. -> Token -> TokenincrGlobal (Pn _ l0 _) i (PT (Pn g l c) t) = if l /= l0 then PT (Pn (g + i) l c) t else PT (Pn (g + i) l (c + i)) tincrGlobal _ _ p = error $ "cannot add token at " ++ show p-- | Create a symbol token.sToken :: Position -> String -> TokensToken p s = PT p (TS s i) i = case s of _ -> error $ "not a reserved word: " ++ show s-- | Get the position of a token.position :: Token -> Positionposition t = case t of PT p _ -> p Err p -> p-- | Get the line number of a token.line :: Token -> Intline t = case position t of Pn _ l _ -> l-- | Get the column number of a token.column :: Token -> Intcolumn t = case position t of Pn _ _ c -> c-- | Check if a token is one of the given symbols.isTokenIn :: [String] -> Token -> BoolisTokenIn ts t = case t of PT _ (TS r _) | elem r ts -> True _ -> False-- | Check if a word is a layout start token.isLayout :: Token -> BoolisLayout = isTokenIn layoutWords-- | Check if a token is a layout stop token.isStop :: Token -> BoolisStop = isTokenIn layoutStopWords-- | Check if a token is the layout open token.isLayoutOpen :: Token -> BoolisLayoutOpen = isTokenIn [layoutOpen]-- | Check if a token is the layout close token.isLayoutClose :: Token -> BoolisLayoutClose = isTokenIn [layoutClose]-- | Get the number of characters in the token.tokenLength :: Token -> InttokenLength t = length $ prToken t where[] -> layoutStopWords = layoutWords = topLayout = import module GHC 7.4.1.symtab.strtab.shstrtab.rela.text.rela.data.bss.rodata.note.GNU-stack.comment @|HSPm + }4&R 1868">HN0H SWR J x))}!.}8AN0}X8an}x`P}x0PXx ($1:GQZ0c8phzXx}0}}8P}'`0 =}GP@]p }gp`} } } }P }@ } }'0 =` }GP@] }g0p`}}`}}0}}8P}'0 =}GP@]p}gp`}}}( }h}@}}'H0 =`}GP@]}gp`}}} }p0}}P}'0 =}G8P@]p}gp`}}}  }( }P @} }' 0 =`}G P@]}g p`} }P !} !} 0"} "}  P#}'( 0 =#}Gh P@ ]p$}g p` }%}  %}   &}0  &}p  @'}     '}'  0  = `(}G ( P @ ] (}g h p ` } )}   *}   *}   0+} @  +}    P,}' 0  = ,}G P @ ] p-}g 8p ` } .} X  .}    /}   /}   @0}    0}' @0  = `1}G pP @ ] 1}g p ` } 2}   3} (  3} H  04} p  4}    P5}' 0  = 5}G P @ ] p6}g Pp ` } 7} p  7}    8}   8}   @9}    9}' X0  = `:}G P @] :}g p `} ;}   <} 0  <}   0=}   =}P>}'0 =>}GP@]p?}gp`}@}8@}P A}A}@B}B}'X0 =`C}GP@]C}gp`}D}E}PE}0F}F}PG}'X0 =G}GpP@]pH}gp`}I}I}8 J}`J}@K}K}'0 =`L}GP@]L}gp`}M}HN}N}0O}O}HPP}'0 =P}GP@]pQ}gp`}R}R}@ S}S}@T}T}'0 =@J`Wdq~ @`  @`'4AN[h u@` @`+8 E@R`_ly @` @"`/<IVcp }@` @` &3@ M@Z`gt @`  @ *` 7 D Q ^ k!x !@!`!!!!!" "@"`"""!".";#H #U@#b`#o#|###$ $@$`$$$$$ % %%@%2`%?%L%Y%f%s& &@&`&&&&&' '@'`''')'6'C(P (]@(j`(w(((() )0)8)hUX)V}x)V}8%)2 W}<`E)RW}\e)r@X}|)X}*`Y}8*Y}X*Z}x*[}(%*2[}<PE*R0\}\he*r\}|*P]}+]}8+p^}X+_}@x+_}P%+2 `}<E+R`}\e+r@a}|+a},`b} 8,b}8 X,c}h x,d} %,2d}< E,R0e}\ e,re}|!,Pf}0!-f}`!8-pg}!X-x-- - -& -3 .@ 8.M X.Z x.g .t . . . / 8/ X/ x/ / / / /!0!80!X0*!x07!0D!0Q!0^!0k!1x!81!X1!x1!1!1!1!1!2!82!X2!x2"2"h}"!'"24"h>"!G"2T"2]"3j"j0t"0i&~"pip"i"3"(3"xl0"j&"8kp"k"83"H3"nS"l."!#mV #xm+#m!#!*#`n_4#X3P#HoZ#hod#o4n#ox#p#Hp#xp##p#p#q4#hqV#q&#rp#r#Ps.#!#sV#t&$Htp $t$u.!$!*$uV4$8v+>$v.H$!Q$vV[$8w(e$xw4o$"x$w,$x+$"$PxV$4$$$%-%Q%s%0%@%`%p%& &#&O&s&&&&'A'f'y'''' (#(B(a(3(x((( )0)J)`)w))4)|rSGx_closurerSGx_infocSQO_strrSGy_closurerSGy_infocSRd_strrSGz_closurerSGz_infocSRC_strrSGA_closurerSGA_infocSS1_strrSGB_closurerSGB_infocSSq_strrSGC_closurerSGD_srtrSGD_closurerSGD_inforSGE_closurerSGF_srtrSGF_closurerSGF_infocSTh_strrSGG_srtrSGG_closurerSGG_inforSGH_closurerSGI_srtrSGI_closurerSGI_infocSU6_strrSGJ_srtrSGJ_closurerSGJ_inforSGK_closurerSGL_srtrSGL_closurerSGL_infocSUV_strrSGM_closurerSGM_infocSVk_strrSGN_closurerSGN_infocSVJ_strrSGO_closurerSGO_infocSW8_strrSGP_closurerSGP_infocSWx_strrSGQ_closurerSGQ_infocSWW_strrSGR_closurerSGR_infocSXl_strrSGS_closurerSGS_infocSXK_strrSGT_closurerSGT_infocSY9_strrSGU_closurerSGU_infocSYy_strrSGV_closurerSGV_infocSYX_strrSGW_closurerSGW_infocSZm_strrSGX_closurerSGX_infocSZL_strrSGY_closurerSGY_infocT0a_strrSGZ_closurerSGZ_infocT0z_strrSH0_closurerSH0_infocT0Y_strrSH1_closurerSH1_infocT1n_strrSH2_closurerSH2_infocT1M_strrSH3_closurerSH3_infocT2b_strrSH4_closurerSH4_infocT2A_strrSH5_closurerSH5_infocT2Z_strrSH6_closurerSH6_infocT3o_strrSH7_closurerSH7_infocT3N_strrSH8_closurerSH8_infocT4c_strrSH9_closurerSH9_infocT4B_strrSHa_closurerSHa_infocT50_strrSHb_closurerSHb_infocT5p_strrSHc_closurerSHc_infocT5O_strrSHd_closurerSHd_infocT6d_strrSHe_closurerSHe_infocT6C_strrSHf_closurerSHf_infocT71_strrSHg_closurerSHg_infocT7q_strrSHh_closurerSHh_infocT7P_strrSHi_closurerSHi_infocT8e_strrSHj_closurerSHj_infocT8D_strrSHk_closurerSHk_infocT92_strrSHl_closurerSHl_infocT9r_strrSHm_closurerSHm_infocT9Q_strrSHn_closurerSHn_infocTaf_strrSHo_closurerSHo_infocTaE_strrSHp_closurerSHp_infocTb3_strrSHq_closurerSHq_infocTbs_strrSHr_closurerSHr_infocTbR_strrSHs_closurerSHs_infocTcg_strrSHt_closurerSHt_infocTcF_strrSHu_closurerSHu_infocTd4_strrSHv_closurerSHv_infocTdt_strrSHw_closurerSHw_infocTdS_strrSHx_closurerSHx_infocTeh_strrSHy_closurerSHy_infocTeG_strrSHz_closurerSHz_infocTf5_strrSHA_closurerSHA_infocTfu_strrSHB_closurerSHB_infocTfT_strrSHC_closurerSHC_infocTgi_strrSHD_closurerSHD_infocTgH_strrSHE_closurerSHE_infocTh6_strrSHF_closurerSHF_infocThv_strrSHG_closurerSHG_infocThU_strrSHH_closurerSHH_infocTij_strrSHI_closurerSHI_infocTiI_strrSHJ_closurerSHJ_infocTj7_strrSHK_closurerSHK_infocTjw_strrSHL_closurerSHL_infocTjV_strrSHM_closurerSHM_infocTkk_strrSHN_closurerSHN_infocTkJ_strrSHO_closurerSHO_infocTl8_strrSHP_closurerSHP_infocTlx_strrSHQ_closurerSHQ_infocTlW_strrSHR_closurerSHR_infocTml_strrSHS_closurerSHS_infocTmK_strrSHT_closurerSHT_infocTn9_strrSHU_closurerSHU_infocTny_strrSHV_closurerSHV_infocTnX_strrSHW_closurerSHW_infocTom_strrSHX_closurerSHX_infocToL_strrSHY_closurerSHY_infocTpa_strrSHZ_closurerSHZ_infocTpz_strrSI0_closurerSI0_infocTpY_strrSI1_closurerSI1_infocTqn_strrSI2_closurerSI2_infocTqM_strrSI3_closurerSI3_infocTrb_strrSI4_closurerSI4_infocTrA_strrSI5_closurerSI5_infocTrZ_strrSI6_closurerSI6_infocTso_strrSI7_closurerSI7_infocTsN_strrSI8_closurerSI8_infocTtc_strrSI9_closurerSI9_infocTtB_strrSIa_closurerSIa_infocTu0_strrSIb_closurerSIb_infocTup_strrSIc_closurerSIc_infocTuO_strrSId_closurerSId_infocTvd_strrSIe_closurerSIe_infocTvC_strrSIf_closurerSIf_infocTw1_strrSIg_closurerSIg_infocTwq_strrSIh_closurerSIh_infocTwP_strrSIi_closurerSIi_infocTxe_strrSIj_closurerSIj_infocTxD_strrSIk_closurerSIk_infocTy2_strrSIl_closurerSIl_infocTyr_strrSIm_closurerSIm_infocTyQ_strrSIn_closurerSIn_infocTzf_strrSIo_closurerSIo_infocTzE_strrSIp_closurerSIp_infocTA3_strrSIq_closurerSIq_infocTAs_strrSIr_closurerSIr_infocTAR_strrSIs_closurerSIs_infocTBg_strrSIt_closurerSIt_infocTBF_strrSIu_closurerSIu_infocTC4_strrSIv_closurerSIv_infocTCt_strrSIw_closurerSIw_infocTCS_strrSIx_closurerSIx_infocTDh_strrSIy_closurerSIy_infocTDG_strrSIz_closurerSIz_infocTE5_strrSIA_closurerSIA_infocTEu_strrSIB_closurerSIB_infocTET_strrSIC_closurerSIC_infocTFi_strrSID_closurerSID_infocTFH_strrSIE_closurerSIE_infocTG6_strrSIF_closurerSIF_infocTGv_strrSIG_closurerSIG_infocTGU_strrSIH_closurerSIH_infocTHj_strrSII_closurerSII_infocTHI_strrSIJ_closurerSIJ_infocTI7_strrSIK_closurerSIK_infocTIw_strrSIL_closurerSIL_infocTIV_strrSIM_closurerSIM_infocTJk_strrSIN_closurerSIN_infocTJJ_strrSIO_closurerSIO_infocTK8_strrSIP_closurerSIP_infocTKx_strrSIQ_closurerSIQ_infocTKW_strrSIR_closurerSIR_infocTLl_strrSIS_closurerSIS_infocTLK_strrSIT_closurerSIT_infocTM9_strrSIU_closurerSIU_infocTMy_strrSIV_closurerSIV_infocTMX_strrSIW_closurerSIW_infocTNm_strrSIX_closurerSIX_infocTNL_strrSIY_closurerSIY_infocTOa_strrSIZ_closurerSIZ_infocTOz_strrSJ0_closurerSJ0_infocTOY_strrSJ1_closurerSJ1_infocTPn_strrSJ2_closurerSJ3_closurerSJ4_closurerSJ5_closurerSJ6_closurerSJ7_closurerSJ8_closurerSJ9_closurerSJa_closurerSJb_closurerSJc_closurerSJd_closurerSJe_closurerSJf_closurerSJg_closurerSJh_closurerSJi_closurerSJj_closurerSJk_closurerSJl_closurerSJm_closurerSJn_closurerSJo_closurerSJp_closurerSJq_closurerSJr_closurerSJs_closurerSJt_closurerSJu_closurerSJv_closurerSJw_closurerSJx_closurerSJy_closurerSJz_closurerSJA_closurerSJB_closurerSJC_closurerSJD_closurerSJE_closurerSJF_closurerSJG_closurerSJH_closurerSJI_closurerSJJ_closurerSJK_closurerSJL_closurerSJM_closurerSJN_closurerSJO_closurerSJP_closurerSJQ_closurerSJR_closurerSJS_closurerSJT_closurerSJU_closurerSJV_closurerSJW_closurerSJX_closurerSJY_closurerSJZ_closurerSK0_closurerSK1_closurerSK2_closurerSK3_closurerSK4_closurerSK5_closurerSK6_closurerSK7_closurerSK8_closurerSK9_closurerSKa_closurerSKb_closurerSKc_closurerSKd_closurerSKe_closurerSKf_closurerSKg_closurerSKh_closurerSKi_closurerSKj_closurerSKk_closurerSKl_closurerSKm_closurerSKn_closurerSKo_closurerSKp_closurerSKq_closurerSKr_closurerSKs_closurerSKt_closurerSKu_closurerSKv_closurerSKw_closurerSKx_closurerSKy_closurerSKz_closurerSKA_closurerSKB_closurerSKC_closurerSKD_closurerSKE_closurerSKF_closurerSKG_closurerSKH_closurerSKI_closurerSKJ_closurerSKK_closurerSKL_closurerSKM_closurerSKN_closurerSKO_closurerSKP_closurerSKQ_closurerSKR_closurerSKS_closurerSKT_closurerSKU_closurerSKV_closurerSKW_closurerSKX_closurerSKY_closurerSKZ_closurerSL0_closurerSL1_closurerSL2_closurerSL3_closurerSL4_closurerSL5_closurerSL6_closurerSL7_closurerSL8_closurerSL9_closurerSLa_closurerSLb_closurerSLc_closurerSLd_closurerSLe_closurerSLf_closurerSLg_closurerSLh_closurerSLi_closurerSLj_closurerSLk_closurerSLl_closurerSLm_closurerSLn_closurerSLo_closurerSLp_closurerSLq_closurerSLr_closurerSLs_closurerSLt_closurerSLu_closurerSLv_closurerSLw_closurerSLx_closurerSLy_closurerSLz_closurerSLA_closurerSLB_closurerSLC_closurerSLD_closurerSLE_closurerSLF_closurerSLG_closurerSLH_closurerSLI_closurerSLJ_closurerSLK_closurerSLL_srtrSLL_closurerSLL_inforSLM_closurerSLM_infocTVB_strrSLN_closurerSLN_infocTW0_strrSLO_closurerSLO_infocTWp_strrSLP_closurerSLP_infocTWO_strrSLQ_closurerSLQ_infocTXd_strrSLR_closurerSLR_infocTXC_strrSLS_closurerSLS_infocTY1_strrSLT_closurerSLT_infocTYq_strrSLU_closurerSLU_infocTYP_strrSLV_closurerSLV_infocTZe_strrSLW_closurerSLW_infocTZD_strrSLX_closurerSLX_infocU02_strrSLY_closurerSLY_infocU0r_strrSLZ_closurerSLZ_infocU0Q_strrSM0_closurerSM0_infocU1f_strrSM1_closurerSM1_infocU1E_strrSM2_closurerSM2_infocU23_strrSM3_closurerSM3_infocU2s_strrSM4_closurerSM4_infocU2R_strrSM5_closurerSM5_infocU3g_strrSM6_closurerSM6_infocU3F_strrSM7_closurerSM7_infocU44_strrSM8_closurerSM8_infocU4t_strrSM9_closurerSM9_infocU4S_strrSMa_closurerSMa_infocU5h_strrSMb_closurerSMb_infocU5G_strrSMc_closurerSMc_infocU65_strrSMd_closurerSMd_infocU6u_strrSMe_closurerSMe_infocU6T_strrSMf_closurerSMf_infocU7i_strrSMg_closurerSMg_infocU7H_strrSMh_closurerSMh_infocU86_strrSMi_closurerSMj_closurerSMk_closurerSMl_closurerSMm_closurerSMn_closurerSMo_closurerSMp_closurerSMq_closurerSMr_closurerSMs_closurerSMt_closurerSMu_closurerSMv_closurerSMw_closurerSMx_closurerSMy_closurerSMz_closurerSMA_closurerSMB_closurerSMC_closurerSMD_closurerSME_closurerSMF_closurerSMG_closurerSMH_closurerSMI_closurerSMJ_closurerSMK_closurerSML_closurerSMM_closurerSMN_closurerSMO_closurerSMP_closurerSMQ_closurerSMR_closurerSMS_closurerSMT_closurerSMU_closurerSMV_closurerSMW_closurerSMX_closurerSMY_closurerSMY_infocU9R_strrSMZ_closurerSMZ_infocUag_strrSN0_closurerSN1_srtrSN1_closurerSN1_infosSNc_infosSNg_infosSQq_inforSN2_srtrSN2_closurerSN2_infosSNq_infosSNu_infosSQo_inforSN3_srtrSN3_closurerSN3_infosSNF_infocUcY_strsSNH_infosSNB_infosSNK_infocUdz_strsSQj_infoCFtoLayout_zdwcf2Layout_srtsSQc_infosSQd_infosSOa_infosSQ1_infosSP2_infosSQ0_infosSQg_infosSQh_infosSQi_infosSP5_infosSP7_infosSOC_infosSOG_infosSQk_infosSOJ_infocUgL_strsSPk_infosSOn_infosSOr_infosSQl_infosSOu_infocUhX_strsSPn_infosSQm_infosSOf_infocUiB_strsSPq_infosSQn_infosSPH_infocUjg_strsSPK_infosSNT_infocUjD_strsSQ2_infoCFtoLayout_cf2Layout_srt__stginit_CFtoLayoutCFtoLayout_layoutSep1_closureghczmprim_GHCziTypes_Czh_static_infoCFtoLayout_layoutSep_closureghczmprim_GHCziTypes_ZC_static_infoghczmprim_GHCziTypes_ZMZN_closureCFtoLayout_layoutClose1_closureCFtoLayout_layoutClose_closureCFtoLayout_layoutOpen1_closureCFtoLayout_layoutOpen_closurestg_CAF_BLACKHOLE_infonewCAFstg_bh_upd_frame_infoghczmprim_GHCziCString_unpackCStringzh_infobase_GHCziShow_zdfShowChar1_closurebase_GHCziShow_showLitString_closurebase_GHCziShow_showLitString_infoghczmprim_GHCziCString_unpackAppendCStringzh_infointegerzmgmp_GHCziIntegerziType_Szh_static_infobase_GHCziEnum_enumDeltaInteger_infobase_GHCziShow_showListzuzu2_closurestg_upd_frame_infoghczmprim_GHCziTypes_ZC_con_infobase_GHCziShow_showListzuzu1_closurebase_GHCziShow_zdwzdcshowsPrec_closurebase_GHCziShow_zdwzdcshowsPrec_infobase_GHCziBase_zpzp_infobase_GHCziShow_shows30_closurebase_GHCziShow_shows32_closureCFtoLayout_zdwcf2Layout_closureCFtoLayout_zdwcf2Layout_infobase_GHCziList_foldr2_infoghczmprim_GHCziClasses_zdfOrdZMZNzuzdccompare_closurebase_DataziList_sortBy_infobase_GHCziShow_showListzuzu3_closureCF_layoutPragmaszugo_infoCF_hasLayoutzugo_infoCF_hasLayoutzugo1_infobase_DataziList_unlines_infoCFtoLayout_cf2Layout_closureCFtoLayout_cf2Layout_info+ TOU` Vo  TU V K ToU V 8 TU V `k TU V x8 T'U8 VG SL 2p TU V  zC TgUx V Q 2 TU V' , P TU V M 2`# TGUX Vg l Z TU V K ToU V  TU V 8k TU V ` T U0 V?  T U V  T? UP V_  T U V ; T_ Up V P T U V [ T U V  T U V/ { T U V   T/U@ VO 0 TU V `+ TOU` Vo  TU V K ToU V  TU V 8k TU V  TU0 V?  TU V  T?UP V_  TU V (; T_Up V h TU V [ TU V  TU  V/ H{ TU V   T/U@ VO  TU V + TOU` Vo   TU V pK ToU V  TU V k TU V  TU0 V? 8 TU V  T?UP V_  TU V  ; T_Up V (  TU V P [ TU V   TU  V/  { TU V  T/ U@ VO  T U V P +! TO!U`! Vo!  ! T!U! V!  K" To"U" V"  " T"U# V#  k# T#U# V# ( # T$U0$ V?$ h $ T$U$ V$  % T?%UP% V_%  % T%U% V%  ;& T_&Up& V& 0 & T&U' V' p [' T'U' V'  ' T(U ( V/(  {( T(U( V( ( ) T/)U@) VO) h ) T)U) V)  +* TO*U`* Vo*  * T*U* V* K+ To+U+ V+ @+ T+U, V, k, T,U, V, , T-U0- V?- - T-U- V- 8. T?.UP. V_. X. T.U. V. ;/ T_/Up/ V/ / T/U0 V0 [0 T0U0 V0 0 T1U 1 V/1 @{1 T1U1 V1 p 2 T/2U@2 VO2 2 T2U2 V2 +3 TO3U`3 Vo3 (3 T3U3 V3 HK4 To4U4 V4 p4 T4U5 V5 k5 T5U5 V5 5 T6U06 V?6 6 T6U6 V6 P7 T?7UP7 V_7 p7 T7U7 V7 ;8 T_8Up8 V8 8 T8U9 V9 [9 T9U9 V9  9 T:U : V/: X{: T:U: V:  ; T/;U@; VO; ; T;U; V; +< TO<U`< Vo< 0< T<U< V< K= To=U= V= = T=U> V> k> T>U> V> > T?U0? V?? ? T?U? V? @ T?@UP@ V_@ 8@ T@U@ V@ P;A T_AUpA VA A TAUB VB [B TBUB VB B TCU C V/C X{C TCUC VC  D T/DU@D VOD D TDUD VD +E TOEU`E VoE PE TEUE VE KF ToFUF VF F TFUG VG kG TGUG VG XG THU0H V?H pH THUH VH I T?IUPI V_I I TIUI VI 8;J T_JUpJ VJ `J TJUK VK [K TKUK VK K TLU L V/L {L TLUL VL  M T/MU@M VOM M TMUM VM H+N TONU`N VoN N TNUN VN KO ToOUO VO O TOUP VP HkP TPUP VP P TQU0Q V?Q Q TQUQ VQ R T?RUPR V_R R TRUR VR @;S T_SUpS VS S TSUT VT [T TTUT VT T TUU U V/U PU)U TUUU VU !)U !)V T?VUPV V_V V TVUV VV 8;W T_WUpW VW `W TWUX VX [X TXUX VX X TYU Y V/Y {Y TYUY VY  Z T/ZU@Z VOZ Z TZUZ VZ +[ TO[U`[ Vo[ ([ T[U[ V[ PK\ To\U\ V\ h\ T\U] V] k] T]U] V] ] T^U0^ V?^ ^ T^U^ V^ _ T?_UP_ V__ @_ T_U_ V_ P;` T_`Up` V` ` T`Ua Va [a TaUa Va a TbU b V/b {b TbUb Vb  c T/cU@c VOc 8 c TcUc Vc h +d TOdU`d Vod  d TdUd Vd  Ke ToeUe Ve  e TeUf Vf !kf TfUf Vf 0!f TgU0g V?g `!g TgUg Vg !h T?hUPh V_h !h ThUh Vh !h Oi2=i _Xi2i _i 0ii `i Xi2j 2#j pi>j `Gj XZj `cj aj2j ij 3j3k _ k3Rk __k jqk `zk Xk3k 2k 8kl `l X"l `+l aXl2l kl (3l 3l _l Ol 3"m _/m l=m !`m(3m _m 2m 3m _m mm xm n `n XHn 3zn _n mn !n3n `no `+o H3po Hoo _o hoo3o K3o z2o 8)p3p j%p o0p3Sp p`p3p jp Hpp3p xpp3p pq3%q _5q pPq3q _q qq )q3q _rP32r _?r qQr `Zr XrP3r 2r rr `r Xs `s l8sP3]s _ms rsP3s _s Pss !s3t _0tP3bt _ot tt `t XtP3t 2t Htu `"u X5u `>u lhuP3u _u tuP3u _u uu ! v@3Fv fUv ehv@3v _v 8vv@3v _v vv ! wX3Fw ORw `wX3w _w 8ww _w "w3x _"x 28x3jx _wx xx "x83x ox hq y `y 4y `@y \y `hy y `y Oy `y y `y Oy sz `Dz u`z `z vz `z `z Oz `{ ${ `0{ OL{ `X{ t{ `{ O{ `{ { `{ O{ xw| `#| w1| `Q| `Z| Om| Px{| `| g|3xWWW(WWUZ[Z5[Zu[WW(WWH W Wh W W W W W8 W WXWWxWWW(WWHWWhWWWWW8WWXWWxWWW(WWHWWhWWWWW8WWX W Wx!W"W"W(#W#WH$W$Wh%W%W&W'W'W8(W(WX)W)Wx*W+W+W(,W,WH-W-Wh.W.W/W0W0W81W1WX2W2Wx3W4W4W(5W5WH6W6Wh7W7W8W9W9W8:W:WX;W;Wx<W=W=W(>W>WH?W?Wh@W@WAWBWBW8CWCWXDWDWxEWFWFW(GWGWHHWHWhIWIWJWKWKW8LWLWXMWMWxNWOWOW(PWPWHQWQWhRWRWSWTWTW8UWU]hVWVWWWXWXW8YWYWXZWZWx[W\W\W(]W]WH^W^Wh_W_W`WaWaW8bWbWXcWcWxdWeWeW(fWfWHgWgWhhWh[iZkZlcKm[mZ0ndn[oi*pk\pdpkqdurZvsms[tZun v[vo w[w[+xdx[|p|hLNK O0L@NHPPO`LpNxRO0P0N8X@OPYXxNXXxY(NX0Y8hXN`Xh8xX0P @p `    @  ` @ `0P @p` @ `@`0P @p` @ `@` !!0"" P# #@ p$` % %  & & @' ' `(@ (` ) * * 0+ + P, ,@ p-` . .  / / @0 0 `1@ 1` 2 3 3 04 4 P5 5@ p6` 7 7  8 8 @99 `:@:`;<<0==P> >@p?`@@ AA@BB `C@C`DEE0FFPG G@pH`II JJ@KK `L@L`MNN0OOPP P@pQ`RR SS@TT N(0O@NH P"`NhpBNbNNONN` N(@0@NH P"`NhpBNbNNNN` N(@0@NHOP"`Nh pBNbNNN@NO N(0@NHP"`Nh`pBN@bNON NN N(0@NHP"`NhpBN`bNON@N N N(0@NHP"`NhpBNbNON`N@N  N(0@NHOP"`NhpBNObNNNNO N(`0@NH@P"`Nh pBNbN N N NO N( 0@NH` P"`NhOpBN@ bN N N NO N( 0@NH P"`Nh pBN` bN@ NON N  N( 0@NHOP"`Nh pBN bNON N` N@  N( 0@NH P"`Nh pBN bN N N`  N @   N(  0  @ NH OP " ` Nh  p B N  b N   N   N   !N!` ! !N(!O0!!@!NH!@ P!"!`!Nh! p!B!!N! !b!!N!!!!N!!!!N!!!"N""! "N("`0""@"NH"@P"""`"Nh" p"B""N""b""N""""N""""N"O""#N##" #N(#0##@#NH#OP#"#`#Nh#`p#B##N#@#b##N# ###N####N###$N$$# $N($0$$@$NH$P$"$`$Nh$Op$B$$N$`$b$$N$@$$$N$ $$$N$$$%N%%$ %N(%0%%@%NH%P%"%`%Nh%p%B%%N%`%b%%N%@%%%N% %%%N%%%&N&&% &N(& 0&&@&NH&OP&"&`&Nh&p&B&&N&&b&&N&&&&N&`&&&N&@&&'N' '& 'N('O0''@'NH'P'"'`'Nh'p'B''N'O'b''N''''N''''N'''(N(O(' (N((`0((@(NH(@P("(`(Nh( p(B((N((b((N((((N((((N((()N)O)( )\0) )8)hUX)Vx)V) W)W)@X)X*`Y8*YX*Zx*[*[*0\*\*P]+]8+p^X+_x+_+ `+`+@a+a,`b8,bX,cx,d,d,0e,e,Pf-f8-pgX-N`-Oh-Ox-N-8--Z--N---z--N-,---N-O---N.,.-.N .,(.-8.N@.,H..X.N`.Oh.:.x.N.x,.Z..N.X,.z..N.8,...N.O...N/,/./N /+(/.8/N@/+H//X/N`/Oh/:/x/N/+/Z//N/+/z//N/x+///N/O///N0X+0/0N 08+(0/80N@0+H00X0N`0*h0:0x0N0*0Z00N0O0z00N0*000N0*000N1x*101N 1O(1081N@1X*H11X1N`18*h1:1x1N1*1Z11N1O1z11N1)111N1)111N2)212N 2)(2182N@2x)H22X2N`2Oh2:2x2N2X)2Z22h2h2N2^2O2Y333j3Y 3(3(3xl83b@3YH3nX3e`3fh3Yp3x33333333)38)3x23232333(33H33h4g4r