[BACK]Return to ols-xfs.sdd CVS log [TXT][DIR] Up to [Development] / xfs-website / papers / ols2000

File: [Development] / xfs-website / papers / ols2000 / ols-xfs.sdd (download)

Revision 1.1, Mon Aug 7 22:08:16 2000 UTC (17 years, 2 months ago) by xfs
Branch: MAIN
CVS Tags: HEAD

Add ols presentation

ࡱ;	sc	

 !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abefghijklmnopqrstuvwxyz{|}~Root Entry	


!r\V)䰱
PresentationStarImpress 5.0USfxDocumentInfo                               1<Stephen Lord                   '01Stephen Lord                   /1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            Info 0                                Info 1                                Info 2                                Info 3                                /1lغ;e <44StandardLIBIMBEDDEDLIBIMBEDDED
TASK,0,1,H
1,0,100,1,SBX sb
Z	Standard	StarBASICSBX ARSBX ARSBX AR2c%bqqOh+'0	h
t
9XOutdevItemPool 1
)	

&'()*+,-./06789:;UVWXYZ[\]c !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstt	

 !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefd[606'(@w#XXX'@Ultrafine dashed333Fine dottedXX,XZ'
^@h23#XXXX&X.X6X>' @X'6@Arrow
ArrowddArrow}}Symmetric arrow4k4XXXSXX'@ArrowddArrow}}Arrow
Rounded short arrow0*&'/DY"f7jjfYD/'XXX_XX':@.,XXXX&'.@l,XXX'@XX'@X@X@X@	X@7	X@U	X@s	X@	X'(@	 XXX'@9̙
Light grayWhiteBlue 8Green 7====	Sun 4
Green 5Red 2##Yellow
Green 2\\&&̙XX X2XDXVXhXXXXXXXX+XDXV'6@22ddX'(@X'L@;BMvv(@@SD@x^SI
0s\z
46ZBn8x)1̔.<觔B+̄ޢ40:prf
|q]~+H~|WFMbP@aoCē[ȡz6~U{߃<?{r=+|.MxG
ܫBMvv(@@SD@x^SI
0s\z
46ZBn8x)1̔.<觔B+̄ޢ40:prf
|q]~+H~|WFMbP@aoCē[ȡz6~U{߃<?{r=+|.MxG
ܫXX"X6@cX@X@XX@X@X@X7@R22ddX@pX@X@X		@X

@X@X@*X

@HX@fX@X@X@X@X@XXX@(X@FX@dX(
@~(
@(
@(
@(
@(
@(
@(
@( 
@.(!
@D("
@Z(#
@p$$
@%%
@&&
@''
@((
@))
@;(+@
XX,, @D
X--"@n
,XX.."@
,XX//@X00@X11@X22@X33@8X44@VX55@tX66@X88
@99
@::
@;;
@<<
@==
@>>
@0??
@F@@
@\AA
@rBB
@CC
@DD
@EE
@FF
@II"@XXJJ/N@q%$((	,
3W
4/b9,'8`5A	4/()!5+,(.XXXX&X.X6X>XFXNXVX^XfXnXvX~XXXXXXXXXXXXKK@XX(L@XMMF@2XXXX&X.NNF@@2XXXX&X.OO.@XXXPP.@XXXQQ(@XXXRR@XSSj@t)D|XXXX&X.X6X>XFTT
@UU@XXVV(@
XXXWW@"XXX
@<YY
@RZZ
@h[[@X\\@X]]
@^^
@__@X``@Xaa@*Xbb@HXcc@fXdd@Xee@Xgg@XXhh@Xii@Xjj@2Xkk@TXll@vXmm@Xnn@XXoo:@
XXXX&pp"@2{XXqq@XXrr@vXss@Xtt@Xuu@Xvv@Xww@Xxx@*Xyy@HX{{
@b||
@x}}
@~~
@
@
@
@
@
@
@(
@>
@T
@j
@@X
@
@
@
@
@
 
@# 
@9 
@O 
@e @ X@ &#X@ RFX
@ 
@ 
@!
@!!@=!X@]!X@}!X@!X@!X@!dX@!X@"X@>"X
@X"
@n"
@"
@"
@",@&%'  '''''	'''
'
n''''''1''''''''''''''''''''
''''''''''9''''''' 
''''''''''!'"'#	
''''''''''$''''%'''&'''(XXX X&X,X8X>XJXPXhXXXXXXXXXXXXX^XvXXXXXXXX*XlXxXXXXX@%(''' '!'C'''''''	''
''''
''''''<
'''''8''	''
'''	''''''''
'' ''
!''
''''''''''''XXX,X8XDXJX\XnXzXXXXXXXXX
XXXX@XRXdXvXXXXXXXXXXX0XT**@)#!#	


XXXX X&X,X2X8X>XDXJXPXVX\XbXh774@+#!	

+;(,,--..//00112233445566,,+;(,,--..+;(
XXXX X&X,X2X8X>XDXJXPXVXXXXXXGG
@x+HH*@%-# +''S+'''+'	

+''''''+''g*
(@'A'1'+'!'''''''''''''''' 
g*
(@'A'1'+''!'''	''''''%'!"+''#'$'%+''&'XXXX X&X,X>XDX\XhXnXtXzXXXXXXXXX@XFXLX^XjXvXXXXXXX*X6XBXTffE@63JJ(KKJJ)KKJJKKJJKKQQVVIIQQVV	JJKKMMNNOOPPQQUUVVJJ
KKJJ)KK	
	JJKKMMNNOOPPQQUUVV	JJKKMMNNOOPPQQUUVV
JJ.JJJJ	KKJJ(KKJJ)JJ)KKJJ(KKJJ	KKJJ)KKJJ,KKJJKKSSUUVVJJMMNNOOPPQQJJ	KKJJKKJJKK	QQVV__``aabbccddeeJJKKJJKKQQVVWW[[\\ IIQQVV!"JJKKSSUUVV#JJKKSSUUVV$JJKKSSUUVV%JJKKSSUUVV&JJ
'JJKK(JJ)
JJ	+QQVV-
QQVV.JJKKL(UU/!JJKKSSUUVV0	JJKKSSUUVV1JJKKSSUUVV2JJKKRR3JJKKRR7JJ+MMNNOOPPQQ;MMNNOOPPQQVV<=QQVVXX X2XDXVXhXXXXXX"X^XdXpX|XXXXXXXXX*XTXfXxXXXXXX&X,XPXtXXXXXXXXX4XXX|XXXXX$X*zz@@
5ggnnppggnnnnoogghhiijjkkllmmnnooppqqrrssttuuvvwwxxyynnnnoonnoo5ggnn	nnppXX&X8XJXXXXXX
@5X&@06XT@6	XXJBCo7_~6T8z&Fn3Rr
)
G
e




	'=Si/E[q5c7Uk1G]s'OoMSi'Gg})Ge9[9Wu!7Mcy)?^t$Df @`-CYo)#+&&!(7(3+O1222
P9^XEditEngineItemPool h:6fR0ތg*9@s
Z,StarBats
:,StarBats
d	,StarBats
d,StarBats
d,StarBats
d,StarBats
d,StarBats
d,StarBats
d,StarBats
d,StarBats
dZ
"X,StarBatsN
-",StarBatsN
-",StarBatsN
-"`	`	,StarBatsN
-",StarBatsN
-",StarBatsN
-"hh,StarBatsN
-",StarBatsN
-",StarBatsN
-"pp,StarBatsN
-
",StarBatsN
-",StarBatsN
-",StarBatsN
-"`	`	,StarBatsN
-",StarBatsN
-",StarBatsN
-"hh,StarBatsN
-",StarBatsN
-",StarBatsN
-"pp,StarBatsN
-	Z,StarBats
d,StarBats
K	,StarBats
K,StarBats
KmO,StarBats
KmO,StarBats
((KmO,StarBats
KmO,StarBats
KmO,StarBats
@@KZ
Z d|)Timesd`	`	,StarBatsNK,StarBatsNK,StarBatsNKpp,StarBatsNK"  ,StarBatsN-"  ,StarBatsN-"%%,StarBatsN-"0*0*,StarBatsN-Z
Z,StarBats
d,StarBats
d	,StarBats
d,StarBats
d,StarBats
d,StarBats
ddd,StarBats
ddd,StarBats
ddd,StarBats
ddd,StarBats
dddZ
Z,StarBats
d,StarBats
d	,StarBats
d,StarBats
d,StarBats
d,StarBats
((d,StarBats
d,StarBats
d,StarBats
@@d,StarBats
@@dZZH,StarBats
dZ	ZmO,StarBats
KH,StarBats
d,StarBats
Kg,StarBats
K],StarBats
KmO,StarBats
KmO,StarBats
ddKmO,StarBats
ddKmO,StarBats
ddKmO,StarBats
ddKZ
Z,starbats
K,starbats
K	,starbats
K,starbats
K,starbats
K,starbats
ddK,starbats
ddK,starbats
ddK,starbats
ddK,starbats
ddKZ
0Arial Narrowd",StarBatsN-",StarBatsN-"`	`	,StarBatsN-",StarBatsN-",StarBatsN-"hh,StarBatsN-",StarBatsN-",StarBatsN-"pp,StarBatsN-
)Timesdr,StarBats-r,StarBats-r,StarBats-r,StarBats-r,StarBats-rpp,StarBats-rXX,StarBats-r@@,StarBats-r(#(#,StarBats-	"XX,StarBatsi-",StarBatsi-",StarBatsi-"`	`	,StarBatsi-",StarBatsi-",StarBatsi-"hh,StarBatsi-",StarBatsi-",StarBatsi-
XX)Timesd",StarBatsN-",StarBatsN-"`	`	,StarBatsN-",StarBatsN-",StarBatsN-"hh,StarBatsN-",StarBatsN-",StarBatsN-"pp,StarBatsN-
",StarBatsN-",StarBatsN-",StarBatsN-"`	`	,StarBatsN-",StarBatsN-",StarBatsN-"hh,StarBatsN-",StarBatsN-",StarBatsN-"pp,StarBatsN-XX.XNXnX(XX3XSXX X%XA)X^-X1X55@6tX@\t$@XX+@vddddddxFdddFddd"xdddxYFdddddDd	HdddY
7dddYDdddYDdddYD
ddDdddDd<ddDd\ddDd|ddDd8ddDdXddDdxddDd!dddYD8ddd8YDXdddXYDFdddddDdddDdxdddxYD!ddd!YDXX!X4XGXZXsXXXXXXXX#X6XIX\XoXXXXXXXXX2<(
n@
uw#T<		XXXX X&X,X2X8X>XD
(!@}
StarBats!"-Times!d'
StarBats!d
StarBats!dP
StarBats!d;
StarBats!K
StarBats{!K
StarBats{!K
StarBats!K	dd
StarBats!KTimesX!d

StarBats!"-
StarBats!"-
starbats!KTimes!dStarBats !KStarBatsX!KStarBats!"-StarBats!"-StarBatsX!KStarBatsX!KStarBatsX!"-Arial Narrow!d
StarBats!:XXGX}XXX(XaXXXXEX{XXX&X\XXXX@XyXXX(@'3@(dddddXdddd,dd|d@ddd`	dddhddddddpddd 	xddd 
(#ddd%'ddd0*ddHd

ddddddgdddg]ddd]ddddddXddHdgdddYHddddddY7dddYgdddgYddHd]ddd]Yddd	dddgddd,dd}d @ddd`	!ddd"hddd#dddp$ddd %xddd &(#ddd%''ddd0*(dddYmOXX!X4XGXZXmXXXXXXXXXX+X>XQXdXwXXXXXXXX-X@XSXfXyXXXXXXXXA'*@&ddddddddddd,ddddddOdd	dd
dd&dddd
rddNddddddddtddXXX&X2X>XJXVXbXnXzXXXXXXXX1'@	ddHLdF'UZ	
d/XXX$X/X:XEXPX[Xf+'2@9g8XXXX '
@/
. 	. . . '. 1. ;. tE. `O. LY. 8c. $m. . 3. . . #. -. 7. A. K. U. _. ki. 3. . . #. -. 7. A. K. U. _. ki. . . . . ). x3. d=. PG. <Q. ([. e. 
q. ]. I. 5%. !/. 
9. B. L. V. `. 
{. g. S. ? . +*. 4. >. G. Q. [. 		. . . '. 1. ;. tE. `O. LY. 

. . . 	. 
. g. #. )-. 6. ?. GI. R. eV. LY. 
	. . . '. 1. ;. XXgXXXdXXX>XXXX!'*@c{XX'@HelmetArial NarrowTimes New Roman
Courier (Tur)BoldHelmetHelmetBoldjHelmetBold Italic$Helmet	TimmonsBold Italic
Times New RomanTimmonsBoldtimmons
Arial Narrow

symbol"
Symbol TimmonsXXX6XPXlX}XXXXXXXX5XFXW'@fOd
Nd
4d
d
d
{d
|d
d
hd
	d

Ld
d
id

d
	d
'd
d
d
d
bd

d
d
7d
d
;d
d
Md
XXX"X,X6X@XJXTX^XhXrX|XXXXXXXXXXXXXXX?(
@'%@
6XXX'@4X'@SbX'@w
XX'@0X'@X%' @Ud:eXXS'@X"'
@'
@4@NPX@lX{(b@ʌppPhttp://oss.sgi.com/projects/xfshttp://oss.sgi.com/projects/xfsW!X!pCmailto:linux-xfs@oss.sgi.comlinux-xfs@oss.sgi.comW!X!pCmailto:majordomo@oss.sgi.commajordomo@oss.sgi.comW!X!
p1mailto:lord@sgi.comlord@sgi.comW!X!XXXzXX999<)=BFGHHKLM^OtOOOOP*PIPuPPPPPPPg*
"XX,StarBatsN
-",StarBatsN
-",StarBatsN
-"`	`	,StarBatsN
-",StarBatsN
-",StarBatsN
-"hh,StarBatsN
-",StarBatsN
-",StarBatsN
-"pp,StarBatsN
-
(
StarBats!"-!''Times'Od
'08s'2& GStandardStandard%'''''''''''''''+;(,,--..g*
(@'A'1'+''!'''	''''''%'Object with arrowStandardObject with arrow'''''''Object with shadowStandardObject with shadow+;(,,--..Object without fillStandardObject without fill'TextStandardText''	Text bodyStandard	Text body'''Text body justfiedStandardText body justfied''+'First line indentStandardFirst line indent''g*@'TitleStandardTitle'''Title1StandardTitle1	'''+;(,,--..+''Title2StandardTitle2''+;(,,--..g*@'A'+''HeadingStandardHeading''A''Heading1StandardHeading1''A'''Heading2StandardHeading2''A''''Dimension LineStandardDimension Line'''''''Home~LT~Gliederung 1Home~LT~Gliederung 1''g*
(
@'A'1'+''!'''''''''%'Home~LT~Gliederung 2Home~LT~Gliederung 1Home~LT~Gliederung 2@'A'	1'+''!''''''''%'Home~LT~Gliederung 3Home~LT~Gliederung 2Home~LT~Gliederung 3@'A'
1'+''!''''''''%'Home~LT~Gliederung 4Home~LT~Gliederung 3Home~LT~Gliederung 4@'A'1'+''!''''''''%'Home~LT~Gliederung 5Home~LT~Gliederung 4Home~LT~Gliederung 5@'A'1'+''!''''''''%'Home~LT~Gliederung 6Home~LT~Gliederung 5Home~LT~Gliederung 6@'A'1'+''!''''''''%'Home~LT~Gliederung 7Home~LT~Gliederung 6Home~LT~Gliederung 7@'A'1'+''!''''''''%'Home~LT~Gliederung 8Home~LT~Gliederung 7Home~LT~Gliederung 8@'A'1'+''!''''''''%'Home~LT~Gliederung 9Home~LT~Gliederung 8Home~LT~Gliederung 9@'A'1'+''!''''''''%'
Home~LT~Titel
Home~LT~Titel''QQg*@'
A'1'+''!'''''''''%'Home~LT~UntertitelHome~LT~Untertitel''QQg*@'A'1'+''!'''
''''''%'Home~LT~NotizenHome~LT~Notizen''g*@'A'1'+''!'''''''''%'Home~LT~HintergrundobjekteHome~LT~Hintergrundobjekte+;(,,--..Home~LT~HintergrundHome~LT~Hintergrund4'''''''''		



+;(,,--..//00112233445566TitleTitle@SubtitleSubtitle@Background objectsBackground objects@
Background
Background@NotesNotes@	Outline 1	Outline 1@	Outline 2	Outline 1	Outline 2@	Outline 3	Outline 2	Outline 3@	Outline 4	Outline 3	Outline 4@	Outline 5	Outline 4	Outline 5@	Outline 6	Outline 5	Outline 6@	Outline 7	Outline 6	Outline 7@	Outline 8	Outline 7	Outline 8@	Outline 9	Outline 8	Outline 9@Title~LT~Gliederung 1Title~LT~Gliederung 1''g*@'
A'1'+''!'''
''''''%'Title~LT~Gliederung 2Title~LT~Gliederung 1Title~LT~Gliederung 2@'A'	1'+''!''''''''%'Title~LT~Gliederung 3Title~LT~Gliederung 2Title~LT~Gliederung 3@'A'
1'+''!''''''''%'Title~LT~Gliederung 4Title~LT~Gliederung 3Title~LT~Gliederung 4@'A'1'+''!''''''''%'Title~LT~Gliederung 5Title~LT~Gliederung 4Title~LT~Gliederung 5@'A'1'+''!''''''''%'Title~LT~Gliederung 6Title~LT~Gliederung 5Title~LT~Gliederung 6@'A'1'+''!''''''''%'Title~LT~Gliederung 7Title~LT~Gliederung 6Title~LT~Gliederung 7@'A'1'+''!''''''''%'Title~LT~Gliederung 8Title~LT~Gliederung 7Title~LT~Gliederung 8@'A'1'+''!''''''''%'Title~LT~Gliederung 9Title~LT~Gliederung 8Title~LT~Gliederung 9@'A'1'+''!''''''''%'Title~LT~TitelTitle~LT~Titel''QQg*@'
A'1'+''!'''
''''''%'Title~LT~UntertitelTitle~LT~Untertitel''QQg*@'A'1'+''!'''
''''''%'Title~LT~NotizenTitle~LT~Notizen''g*@'A'1'+''!'''''''''%'Title~LT~HintergrundobjekteTitle~LT~Hintergrundobjekte+;(,,--..Title~LT~HintergrundTitle~LT~Hintergrund4'''''''''		



+;(,,--..//00112233445566 template1eearial~LT~Gliederung 1 template1eearial~LT~Gliederung 1''g*
(@'A'1'+'!''	'''''''%' template1eearial~LT~Gliederung 2 template1eearial~LT~Gliederung 1 template1eearial~LT~Gliederung 2@' A'+'''' template1eearial~LT~Gliederung 3 template1eearial~LT~Gliederung 2 template1eearial~LT~Gliederung 3@'!A'+''' template1eearial~LT~Gliederung 4 template1eearial~LT~Gliederung 3 template1eearial~LT~Gliederung 4@'"A'+'' template1eearial~LT~Gliederung 5 template1eearial~LT~Gliederung 4 template1eearial~LT~Gliederung 5@'#A'1'	+''
' template1eearial~LT~Gliederung 6 template1eearial~LT~Gliederung 5 template1eearial~LT~Gliederung 6@'$A''
 template1eearial~LT~Gliederung 7 template1eearial~LT~Gliederung 6 template1eearial~LT~Gliederung 7@'%A''
 template1eearial~LT~Gliederung 8 template1eearial~LT~Gliederung 7 template1eearial~LT~Gliederung 8@'&A''
 template1eearial~LT~Gliederung 9 template1eearial~LT~Gliederung 8 template1eearial~LT~Gliederung 9@''A''
template1eearial~LT~Titeltemplate1eearial~LT~Titel''QQg*A'1'+'!'''''''''%'template1eearial~LT~Untertiteltemplate1eearial~LT~Untertitel''QQg*@'+'!'''''''''template1eearial~LT~Notizentemplate1eearial~LT~Notizen''g*A'1'+'!''
'''''''%'&template1eearial~LT~Hintergrundobjekte&template1eearial~LT~Hintergrundobjekte+;(,,--..template1eearial~LT~Hintergrundtemplate1eearial~LT~Hintergrund4'''''''''		



+;(,,--..//00112233445566(\P\Dbl		v
$|0

<8dI|H^q"0n8p&  :!!z"(##X$32@
@h@>@~.
Stephen LordDrMdJoeMn0/1ֺ'01'01ODrLyLAYER_LAYOUTDrLy
LAYER_BCKGRNDDrLy LAYER_BACKGRNDOBJDrLyLAYER_CONTROLSDrLy!LAYER_MEASURELINESDrMP'JoeMnKFdDrMLDrOb<SVDr&`!%DrOb<SVDr&|)`C%DrOb<SVDr&>!RDrOb<SVDr&|)>CRDrXXggfHome~LT~GliederungDrMPJoeM$mVTDrMLDrObSVDr&$mVT'	Home~LT~Hintergrund$mVTDrOb*SVDr&'TKITStandard'TKITNAT5
xPNG


IHDRR;X '?IDATxQڸ@QZgQyɐG`[%Y:;K`*S/_w}坷3Wuv`}H[OC|=v>~oN';CAяdpaRKCn3~mwW4_zS~j:g֏_dv`UWc'Nld=dF
RcOm|!O<╟Z+)i]"Vnq'0'&"]qW[b:>>hh'fidPQ_z'R}@[SLT3i]7u^p̤?44,1>3>d@
`+->yUt})>d@
 HA R})>dSZ>ºR_\w}Dn~dWAs"[牋[L7ng`J+Ln7c2nu~gh@J>u}g=of}bUϯܽU/:e9
vظSc2i>pn'gZ!+dw>oڍ\~_8Oqe8|c`CގC_;[d=*Yҵ:!!d=)7Q~S@kS_WPN9o
l:tHs=&
vmIBI;8#+,a=)Wau/@]%3fytSQ|`WhP>|U]-'7{CMk3_[d	>U~!o}6x{W_[d'6#lr3gY-8@q(Ʊ_[d4U-ؗg_ݷ?loQ}|Pv&e[4<<x:[*Ûܹ]ݼ߉/Ӊܖ}|aGOcW1[N]仚9{l?˽_g7׈CwT>~|U[YW}2>~
	Iù>4_5_cXCzNA 5Ww18h`:C$*|LAd*rmY>t4_E&}ȔL")&Hdj|LJd@|ﺒ:N.*~>4iH2RpI&"96F#b|Ni5ǐI>4߮sHdj sA#@d<\>P\z.<>84+od@p	;Ƈs+Or,{6>\5`+I>($n}| na?PNu#&5bNI>pUE c>)Y%d@GAE`>I>ɡ.w*h $wS k}Npp![Z}
*<e K>Yvwtg
]a!4%}qJ7S,0+WAkg$ ,94t 9_9TMSA@sOx/?ɗ`2oH_y3;G|JݟV惞dOYMoʽ(i>,u]Tc|I^MGAI6dzN0J˾@s.=\@o1@SN\?ǐ'jg$DOwhILtBgD?2ȟ+l\?Gu^GwvOu8⏞_$ &T	?'-}08W84u᠜́mj귨F>7៱%4c|\g2qlvǟNjW/>ʬٷ8$x|1h>|g7۬4h3؏5iOS<4_$u
7#4_T|2|Xp	o{Kp☝_r^ԅd]ØF>͗Dͺ}/"Dɺ^<ˠ'!b| F>͗_lxN5`%;d!5k|CDxF@ٷq"p
HK\}5;a|>Ǯ02ݟ}Bo:V7ts8DMꦐn>'(Q}ܖ}Ӕ4Y{caS0&E64uOjKrh>OQa,mhwi> }h>S~B=`odzhDAuC|"7 G/\ޥ)w֔T)
uMj}0[uIACjQ~})?yљtiMq>8
Uh>u\qE^{ۈc80 FF=kL9}$+=E	j"Di}Zl	Gi>"\Cg^UFgB18:M5f|Y-V\HAZO~ikƋ:n4y[_AR=
mduKWv51ȖqR}ͷfgu{eQR{KX;z~MC2?O*	K<qeW8z2nF߃ૹ>ޜKۥ^P'2^{!\)g#{]Wb5}=t>K;=z-+NK{1v~ipG8Px9Zn{])ar?
7ӫ&߀wΒ<F;&'^׍vZp>{LIdi&~6d+%? /
V=];T[t;^I9Kz&a)s=eӾ"1|kJ/l wuXU싷
*!bY^$Y׋"]be-c5?yUyǗz}bIȻ%[=
K{]uK싴r6SQ%_K;?B/ڸw!ω_H'	F}i{i*wָ{{7-iciO
5/iB}򖠐,5L`{ؐ-A΢ޖ ٗ=R}/$>W"Uiok'>W_*hr2}4_$èO̴o7<,j`ۙw,=c{XFb=OG}fI8݄O}%}QiuR+^*M_~m"mAx}T0~_rʞ}@[~<:F0W.b.Mz{1mE	h4R!R~ٶ,^ug&zɉۿ%7	(c]W쁟vM|"]W[FF죃[j({ώ}(8Ⱦ-Rk;xW>
5}4WbJ438˾030wd_%V jO1Q_O~i_掌Za]\䥫±_E*>E_$'AK*NbSL*r$dh740&yS}h7Uڇ9zhEf!?'12f_Gs<sz7Wэ0LDҍ%P9;'R9Kxʘ}A6Qt~>bpk/5<>dudgtdu3z}KoȾ_%fdҁ
0d=4j`dI뼄\;H/"7})˾HH^ybi\%$j!u'Qξ1ن.}B8${}T>0~@/$!~2“}[FGkYp>$d_>A\	Ò}RPE#!Q!̾|)?`R.~`jf_R~@$}[{\c?`
/j)?`v}voqإZBG_og|ٙ:c?`:W/yߔɴ/õΒ8\=oFP!r^}*[eT8{0n"o5'o@/u/m8z1kh-hZ}:0k\-fmx´*H@gWJ-FA}o:}Vo~3+w#@C35ڌ+ZM|#E@>E]wW Rok//Ҹ
Zp	6~ʯ#@>wZ#@opqh>\?WiЕ0~y΍
`"COJy`d]oh0zO\N\1pWty@`O_#ojGnw'y_nt(ƟG{_gݟ}۔t-jٷ
oFF?D8
,IENDB`DrObSVDr&Q|MDrObuSVDr&I|StandardI|DrObSVDr&IQ|StandardILH@I|-JxJpJb[KPK8LLL9MM|MI?NN
N
)OT
qO

OOu0P$hPPzP"P
Qj
9Q
UQ	lQK	~QQQ"QQZQ~QlQ1UQ9QpQPPZPhP0PXOOqOo)O(NN?NjM2M9MLLL_KC[K+JJ-JII|DrXXDrObSVDr&ZM.gdSDrObuSVDr&ZM.gcSStandardZM.gcSDrObSVDr&ZM.gdSStandardZM.gdSxV4B17/21/00Standard	g*<(
(@'A'
1'+'DrXXDrObuSVDr&gM1lcSStandardgM1lcSDrObaSVDr&Z@hStandardZ@h#aaNAT5
`PNG


IHDR@:`IDATxٙXa]}A@XXd````AڂsViwt':sh|f/ͦh4j=SZ/$tl[	|T*Iv[~{t:-ju<s6}^qK`}OudS6	\iq~FO1ݨ"W$I^Z)pOJ+$p(	QܑMcf[$bDZb!giN#T*y!7l6	ݥIUw[l
0L$Ѯk_^^EӮydS`~.Rp]Ȧ^өj岝~	L&>l
,V05O"K9L
3ȦF~`jH<jPMu&FjE6vl6nu~_%j)9I|^__q	X“q<'BA6f^%I1'ވl
p:fh4vUl
 ΧK~ٰfdS/MS7N7dS3{v!#ewɦ?"ew}.jdSt:m6*JZȦבM&	.l\NJ]Ȧ@|>.TřuzIx<jWQvK6l
wB™\)PnKPj+Ȧ@M*)Бi8+/E6:B[u~)lDFdSM5L9M4MKPCwȦ@G!dS؂l
[M`)lA6:*
[)Qv:g.RdSU*,E6:FjUKMɦ!t:NԔDUz&`\6ME6J1&uf9^DFqUz-؈l(ɠp8ȯy^dl6T*OnY8Vi`/)sin6|_f`0z]s9+Ȧ?<*5Xt:%\q$UJ.,l
v+8$	jz=I	jmF6Hr/߉x6iWQ&{\G68x<V+EKi,BɗA8ٔM$ldSZn#̾"Y-ĵK	I-;n7ljvӮvdSjr=O$H$ޯ`5i|>&H<5jbxl$C*@6XJRl6TuN.K^ϭ	FdSu4Md\jRNSB"HҮtގl
l6
l6{>/܎l
Javv&W̭]3Ȧe+n\cN/U*NGܘH
M$FR$rf~p8(	4?B6J=^}d3ÃkCB6ߋl
([J7v!Nf]uvˋӛJdS@&ISKnd*znZ^*z]׮IdS@Iw$v;㩩MC6NE$ެnɗDvb<%>l
(d~I"|ǭxJ0}PhDw鏎#SNt, _z&>l
(Ĉ~oy+n'CVl
l6]bXjIX5o
cӼMyٻ15f2)F)9"r#qXէlہ*eLSKsG6c2HVЮ^OjG9T*` ]Z)Y:%cDCiIF,-JK@6<x<@焺l$5|Gnrp[Z.P{4MnTv;cҐMTjf%xEB$s:p8fnگfRj/p7yͷZ-υ $2Θ\s92dS}8)_lBTI&z@-G6܁OLd.MbSv	]ȦLsWVٓl
l6FUf<kXl
{Eli
|F6\C0-BRY,U6"E0-S_"F0-S4C6|`Z	L3 >"`
l
Ʉ`J^9-_J$Ѯ7z])[MOEǓD
dS?#4_f{MV]?$NS6@6НNN#jIȦVv# @xԮmqrA6pf32}XZv^N@Ȧ~?pORn	(Bd?iWs$x]-)j0FDRLdSh4bӏf%%#@X6l6Ӯ^ptM  ӉIl6+]dS?}fݏc:JM lkWaI`82p<$ѮRZdSBg4?"#&	FJ'Ms^7NIȦh]f)^k&dSYk+^];M[)8sȦ0KTNȦ~l(ݥȦ~]B$p]MC,MS*SM7-bR'dSp@I*e	TkP#}Wͯ2cX<Lfve`=>%i$=f	{2+`i2Ezl~1o4Es9J>n
47ۛր3bW<7<́40e˦Q*oL`
xl8yUK„Qˏ4/"M&ZVMvFȦf9/\3fph43e.0Q5%G #L=&:r'?yך9O%qL*pfЮ%\^oXhWXdo.vګS+$TS@$!#6ZV?tZf~^vRϋ_ɽ/Oi<|@ Ȧar;fh4"W&J˩;N3jW$d2fwː:$s"X&l*!Q1P^n9n1k%2TbjJ0Bb6DO9
vS$'?YN"z&	+J i&R'	$J6w&K`QlTɩf3It:dXL2hKz:VXVS-Cf/'ϳ)$-f61	ZLw<}!ύ6tɓS/#gd2ols6T>eü1T.y#ѷvI7V{W:̦R%._$>дB*uPWTn7AI8ףMaVX$Ti]1ʏJ]|f]yߕM忿M4rf_b`-?B*YK^w?L&v9 țl*;"eՒ{WzGo	p9SWVAg~vE^HQ<<@ZrJ=P:#en7fΦfl6.OoPbS܎>1Lpn{M%qJǞ&|X>r5;t:fS*G:7>z.w9ag|X%ȯ_>7eSL2Cx8jKɃO$c2mon#ݱljNbvFrqӁGۗP$l*ǯa[[MO.tJo
})=~)k"3=4~nl6_CMMwC~o:Py]@l6y1+VՕly@́l8~j^j]x<dc!qF?e_/L۳)/%nY q1oJp8pr)
la~З`mnu6fa햍yu:v~S'~j9N33wT~N&L.3}"E\e6MT&}T*W;ۘMS	@.zS|8>>Hxz^V+uٔ`+!*K%,ls9n_fr9Nh^Џl˦3-qy%BEU.ӚY~0zg?;oj@p$Iu]%m6XeB@ȧ-ٔ`{{L
ASݾ|o66K.?"LxOr<@nyyϱ)`!_a^a@zϦS<\?S	>K6]VlJ0nǓɱx`00|o~s4O];w=剧=~V>eS)E</a^"S*qf?~y?2Բ) ;O___0>,!2~p㭪MYE62c)
b>8̗l2ddŽ(\]J4"h#6v_ffm6j5^T6 S/BԌ7"XrBF0E
N7	e$4Vfپ)'ͦv!@|>7Gefh',vڅ`
-gPgMr.lO2څE>v))2xrV,P$I[4rw:*4)2)LK+OK`?~:M'	L+Ml~Xp1b<6`dDۘe}>MY{+5 b؉8$Ioѩh^o>ܤ)~ra6Aq4v`zCN^$6pXT6ö:y?NB?qrI{rrN{s^lʒXHLlw/H1
N8d}?x|>raNޢ
'MO___B)K`-y?m6FsApYϺ(rglv
NsAp3'}(Zt:),'mfDwuQ,l*MR&~Պl;]f4OkMgߨU*I0ɇ|&f+F>:VD=ipOM4ICMkϰ/;LBXKZrUG1ӵp{ׯ_5j@m=enۯr˦t[+yT~}Wyח-^r]ޔ[Vxiʯr)`ܲ)ߑPn#IigKUDfSZτa{}8W~nz)~j&z.O`|)D*e֞ՊXu;Fdڄf"f~_,|g9X%lJ>ei^Zi.Kyiv8,h&m.	&ʃ:[Kraݷ
.dS45$c͓
ͱ&ۍJg$`Kz#Rө|-%iwFb	

 !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~	

 !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrtu]!c.𗖼)UAIhgr]>c^f<X3(.kKMiJ_L	PKRbzo*lj̥HNu|PY]~R:Kf\yJ/P/ɻt.4`ZT^__E%	mkQv_H&^2	(\[`i~jgiZ~:cyR{?ː~hHRN-ϝi.w}߸\lw
{*x6.L·vޔ_?=^
KJ
;?l6^t=MWU^uدZJ{ڛ٥72)ɄʌtQv,o_~pyiWldSɦqw:кChWCv	Qց*<[z=Bp=M7iWLh4l7{
T8v3(Idzi 3yRGh4X=i$Wzr&nVg-?O
x6
a@`|&z]^W~,kKN/Zn&´HCG.l€>;f<hE>4	?2/ӉS@˃HCdN "xJ)lz8*NU8@;wiYhۅO:<M=ϻFfir16
T)^SNdS?4wf[Ŋ4%>F4Dٙ_~R)S(cY2Vˡx*53A E&LL#Y-Lשv@XɦN6ԢmDZv	v	 (s.pirLPG#?=leCڵl0h`p:MNyD{s)PS/Fa4?NS6d:(C/]̼V]H䭷yAy$Q.yi#ZXL._V
aojE6Jsw6}{{+]U2عL3]]v	eVwz&v4ޤU~:MYYkByz9Qd^[±P?pA,L,,UPJ	V!쳙P)SP)ZX](%pKiQf
Ⱦ)lߣ'ck|6kv럅
j8)&>s9@	˦gnK9+6oB@}i0øfSZFOG6Jz6pҘxtTF®ISv(t:;N'ykE/z<bxiɜ9LJ^6A0j+O[n4gl[)PBTF]B$6~_B9U`{l0ڟelF@	^EWd$IfYqK^gK/Y]
(Tb"ӣ9~3P?y2z}fa}hw
l ̓n't>5HG3Tz~/g>P;gt34MMB}lYnSn>W`q6=N6x98үfsh$c~gjg(˳gHr܏7~-(1< efʬ3r.@rm0iG
FvEi#z&ٸܙAI*
D^q65C:DML#Yrq2Pp`
Tiyڠn{M&"!ߴjq(7l
t:yvLPizdS ,~B*~3(ߓM4_ۛv	Ȧ@X7}=!@/T;\l6Ӯ~7EdS  ~SNPV.@rCrn6噂*(Pn6]BsTZT*IB}CZͦNߔ,;NR~P)j/j5_7%lt1|:*vWȦf3IJ)iywP@7eB#ToJ6rn6F
]B8f"iS
$@ٔ@oZX:x (~w=p:}[*7u[K~Vf~.(~Vi88~S wefRvK6E<s?xmAA\~@7,*<p-dS _ezYtbX!u43eӿ:V+)G6"Wqs/z9ll|:jWC޸{iAuZ.Q']N/V2m&?l6L&څx
K(z.{HTߘ7"_t"tFu
l6MBHiuXb4jW݊q.șSq/(4ʺN=ޏ&I8V@Ȧ_t:(#ٴh,˼+H~^kMs6͆%{00=IjGil6b~/O_%`6m!d(.ZNSZZ̦Lc)Oz08gYXE{<iX,ٴl2MzͩQ{<FٰD}iQpz.O*8ln̦џQp:j`Z7z4f~X, Oe(Ǘp8
gi
9	l60g9x<R4J*kl6K}Ft:e*rȦqF6:Bˋ|,C]ٴRz=f~H6eF9d('~ɌWU$|d/	^a4MGQ$f_'FfRdN2cQEX$lp\-L7	FnTc]B*g6a!U>CɩI3tRgYZhȯE$lZY4MgJl6T~9F٬SiNƿC*RϦ$&Ih42#S9q
$l*jJӴ?2\WH64N;N8.?˯*$8l
i癩EܡleIIT:NR35	FTY5+#?әjr*
̦Q(jrR
.;Sةl*߿ٷ
;M%,ۉU
ϦQg8f.<켱^vTP2igx,3R4%eSxI9iW<W^6T*O_^^J3'u4IHl
^K򲩐LX,~)r>LHzsܨl*$&u*&ݨ GegSX,WݨP
Mlپ{Sۑ/dj4IBdS.jOq:L
M#⩿@Yl6.Q˦kf)ɦ񘄊kȇf63砒PQ4MKC9FPiD<
9NSD_"F`H<}yya-?-4OG{Of~iSN
u>OSΔK!h}BP8IEV+&l*z^Zt:]kA$p8/D&sgi6fs}^ff:q]'؛MQAIӴH6],d)܎4:VIBծ%l6^w:Pq#FWgSc86NɄ8Ntp[5r#F+A1NXׯ_%^q&FvgzY nZp:j6v'6۹M8Svrl63ѵELp;iv;+I^^^X 6ljC)hhׂ2RKz!"@5|9Mu^K6@f3I!>KLD1~p;qZP~jd^F"@|ȦQ62Nh4!x<J<e{y'0g2bzڵ8l
E% w^eSf|47VGݢRpG@-&0Fb2CΑ
C$r-BlW=r8K<Φ3x$		o%^GxM/Mj*e0LoORWj57߇Bȝ0ˤ$	0_&~PӉBwFG%	cfo)闼ϦӉe!Mo
.lj*MyzxsNooo%`
!ljydN#Teiz?7&NSC~lqr<T=jv	BϦU,$I<~>k4ϴ&Z-
`l?zysw	_~IC[x?=Nn^U>
PA6y$T	7;-Ij*MBPT,,@6<w'~=]>6u8áv<hA+(gfnTZWFYש
-4u
(Vݨ٨nU18C:-!J
D)PݨfE2X//$I(ɦ
/\.3 dUU$~Ish.vegT(Y_dAZ<'L+TGKӔЗVv	Ȧ3I)Rmt^__Cxl6=ΦQcj}u~?i]-i$'TC	|iјfUH;.*oM"Oajrn~䉧]B}t j~/-̑}gx'(k~"JyiWQ &"2J,`N$t^knMH6"
E)P(sxdB>d|x?orucm>kWQ .*hdSMJŬr眪]W@ٯFE$	Q>WAE٘v	Ȧ0nC:S$v$T^o VDS"MMCgj$uw~'(I!oVrwZ%#Zsge*FnӮl-$Qi<uZ;MJ@6uù3uXGs{QEr^]H~I5]L&~wvȦ18*ޯH	0m)]~y~Ā>PFXF$]HB֏:-h4Bv%A z<W!|8/"mWD-KIo̊ѮXjK(7͌TzR%кN%yMWU
oǫ]B4JC6ֹ'zNC؄?ʶc._v!\2h!R˥	+̮`BW$r#(*_J7*ʞ\9@iȦ14:FR]rUMnd[H;vev	@@ȦֿYnjqw׭|2A

_eKvϑd}gDJG6
Fu$ztjWQnB6U;3<6w 4KB6
YOBd=AVDN5igE@"΂4M*leC~_2HxӇ@FLS1@Ȧ/P7h4
;o!c+Aâ`?rH*
mz`)>"	u65<"`Η\.k.I[V8
Wsv@pȦ<'<~7t:
$A-leڅӠTMz*!5r&obAp6:3Sl`0dStv:p\T670FtzȦ@Wx {IAZiD<ʬiJ)lT*zЖuem:jbi*Lw\	") ٴZP
뇖M:mi
">Zz
$ІPNlc)uhrw8`OS@wl‰uebIaN0=PG6#GYשG))$O6ȦxP8x<ZFVArŢljRskݥKM8t:څ.Mp8Ͻo{\!AMZ_qKdx	s
%s\vȦx<%!=v8̦f'Id	uKc617
ϒ&NI'P _L[$Qc?&J?][Ȧt:=f)姫څ(/jiWaFTPIɭ=LdS@^ҋE0iv?/P8uIJ,QZdSCrt:`
v?ȧȕ?$Zۍ|}J_lv""7_V{԰(
vlZғj"Ƿd.UdSg^ORNGL!HB59*p8H%BYvx""OT_'[?LÃu,Skj
rY_z"C64,D6E<(4OC^/礙oWsbYqL׮ȦYRK:veda	uE6E|=L1/LS""Jv	y9!?N]8p^fx6W+7ӸҮ5dSB^`̖:>l*?v?ZlXlt]v	V0ԶZ-&!r2E18z]Xd}f(ѮȦ(Sf%Tg_1nCȦ(P&mX0T*ݎi+Ȧ(s/[ߞ}pŒߊ(\2~ENl8lbmϲ).
v˒OsȦ(1.Nh4.&9	pŪVM9eHx{{cl GMQzKlqz`0 B;FN#pFçl+v	SN#p-
ֽ9SdSZj'w˥O))
Y)nK@7Ȧ(CZo2-S'dSl*?gG0))Y#~
} !~.:>SKdSZV% 8fs^LMQFYP(Gs)N'yJ+YJڵ>dSm65E!Gs#|n^zl
؃}iX
f{6].J%1v
Q(GRYfSŲ4i*#b`fjU)@˦F~LSgG	XŖlr-$EQ|LѮcl%;28ɦ.:MQJX,8.@ԲYB$cKB-EL6EqS&RȦB=H%Z	@JͦfFuN?'MS6uGv.b@PHͤWdSQ
l#\t٬V斷x<AJ"sV
ʦi6ݸ!ԓ$N&<]i>k	cB=l&Ŕy˕J)
m)rAw)ɦOn_=:'t".gi^B=SMdS<IiFg|7z]"Q$3ػ	銳iqB=Sy67.Aۚafs:?^0ȦEo	ISO|p8hDZ)#w<QcF?gS6l0YiטMS،9ײiB=c,$Գ1l*IVE65Bs纻$Fwf]˳PQT}(gOKvM#KDwC'IdSxt&e
@O"":gS{6zm%Eu)g
T
䝗M&|nGg(c6𨯺ViC<R%icȅW[˳`MivL߿k6#ig*_Xsk6u`c%*r显Y]Sv97Ŀk|JgMoF_6~UI.!a6x^e-
DRs[YE>Fi3+TO]x?xd	=mt:5@F{I(EBmBf&u@>#bDɏ}#N鞶/y-y`0o7H65G13$Qy2?
e
s8ȦT2J6bd_|^7
p\umWLSBBȦKO6uX?bd_Q73$c]TI6fnuB8N)M͢K_$I~jh*WhWQ6yޏxؙ	Ҡ5s{O*hȯ)a.Ey%e_t:!\6ƀa.rL/it&ޣ#WDR(%lz9He~^93VB0Eϑ{"1	ULOpV3?d8w'OlXJ:n8j3LRfU	IوiFBo3Bq
5IT|Lgsh%Ilv=Φb4mP$I|dv]SJ;\-X5OOWyK_~EN<@|N6q}*ufi!m^t#Yz@ 5kOǙyrſ.a0x<&e=Ow|V8`j6ԮVb7;l9!H
O6h49=GuQkZ_6M[+KZzL s?Լ}]g}&Wb]'{*H5q}n$Ua4qzgσleY4-3UKwڢ
;My*<((P:c65+߱yX1{kk0l8:h_}&iME\1Fc=leQv!N
'Ȑ`gf l
2K_dSjoT1(j]S9%~lٿE6q Ӑ#	ЗΔSDyl:z#.`94ʶ5?J%)џm___CE|4 (Á]8,Qmv	es}@_Z<?3HӴjq<P]6:-uh:rY|f&k>{W*€>

8oiZx]+Vnq=܋NS8?Xٔ:ft:"m68le9OC3\ޟdY))gB83iMv-ue///4?c[Sv`nVX,&MPNhdVGQI*L]++_>/m0:;?i]~ڕ@R{iBRp<MC6$f	+!t;B۟S4
Xg^Gp#9V:tNS[L&\N3]E.)
d>2CxMYZ,HTrkbgWa<jCl6@R7eS=~'qNSG1xLԐu$;ޔM?]tQMn4ܟl9)}zk6<;Nq8gi6,V+/ij6y֮)S
xOBX׮.&
i&zwd8B_2fŘ{큶ۭcET.	^@h6{ʺݮ+ȦbXR(#OݶT(Y͉[`J׮)~<\gZ?
ezʒ$@}ٴZLEt$ʯev<z8Wڗw	ԃtVۥizwtILto6EQ	j%0-(kIBj&ؔy̼Tןwo'BsJpDZ-rөsɻDbjKf0U"د_倲IiF~s8,Q}仐v
[.^^^C;FY0JHy9`tɦ@Pn*Cu޴2hrGi-bF#<`ZUXV%<Ō?hWTlvN/}0};e]y>k|0hlt>x<Zp(	Uk̦Q#p[ozi9@:}l6p^[|<Fes	Tg}vOaa*:}x|yyxjST
f	y4?ʶ5uI
} dTvn7yZl|fT#})W%Qyو~ٷɳ4ʚ/Gl[S${x0di4&Z-.LDѮB=
 sypz.ldz.-6`91L-öWh|i7&f5ۚ

t:eAv^:
7eӈRWk+|>.Y:Pǂi$
Mn7Oaj4SmM9XlYBR~U9V*:O6SZ.Y_5#yFtk9FYdž\%=To`j,v#9iPMlBPe:hl"S
;/y纳NɦQ;)iL
yKSnK`Ⱦ3l ?i
3L"ԮЗ+\VyIT›\i-ۗF3)*lL#ilͦf>%;J.<&i>LSl'_qF\4b
JG0ɦj5lBxWx6d)J@0Ln'YZ~WȦ ~iZi,pZwZI4"`/>x[lOQw\<֟&M#)
@0ƒlk
afk[ΦQ$^__;[<yqˣ`%vOROwM?kO<*grQ\^p)<hL_@'Ft:xt3<X?hW!#m_~<K@'=s3Jwe+G)Rt:}PKN2k=$
0c49짙MbQr.n0c~A)<f.of*CxA󝊦s~6P>~}\ǒ1v2iUOԒPʭOoA6GAt:F!iLS*>\q̘Y&mSQ(l$Eſݖl[߃@ߎ.:T~7!Ta8ʥ%/N(FYYדɄCp&w\Zy]8LIHe#r'_؅]Ԑl*\.f8cؚ
dFnp?rt>g%4l̦QoCVV=d^~⼷[)I#PKig|_$I@
p8Ǽ{C64e$JHe;9b:6
2ԧ؛M
(fS.rݥ{{{.(Fg$TJyr7m=F@*tv?±HV=p|Vn%\ȦdSy4b`x.#Mv<ABaa
}lǙle4h#Tyȳ@n;'TI
:M#!!Frh410 _P[dtPa:P%oem4\̦џSݮ4hr9K6y5z=I~0yIk$&[rDp2rʡoMg( 6S&z}}3NͮUe$s/@W5x8fng|65$C/?J(2C,ē*yMr<ɦWf%%/hn@œ.jrzVɦ	+"]@qL*3P<7rJ)sЀm=oԸbX)U28g+M+~¬{fjrewK״|H&U>l87p>n{H8δAKKBݨ؞y65$Thϝn%~]IVKiڵJe1cX5ʙAdSZN3O-ݨϓ{0cR'I*NN##_!TzO[+@ʦgfߒEIݮDRƎdh4z{{[,څC4=A~-3xz0Jq\7"RȗLx(
b
	$&SZZTCfӳ!u]En4DRHl
L
v.˜eQy7rH^tV3klrldnBUK#\&jׂGw7ʹcVGOQ2޾i=f|^~K6eF.sɣE8[R"]
rYSQSϳC<7F!.EK))lzӂ9s!X˜dzQ
))l8.ooofjV`51Z믿B.=TO-d<}9<} :\M}Vl<Mx]isÙKSaO>e">N///U[.JEn%BPMpȢ(rj5aMϙY<c4}^
dSsJeXZ-9%Oy}}e)P4)z>Nv!4h^kxl
L#l6l8jl
BiIh8l4sE62L*3(8dS ,^Oީrei$	;!ln9(Q^}}L&L?3&Үd^v-c$])j$&IBB2ϥu'7v!WȦf0lX&Bhn@ȦZ.2p8RmYl
^FB>#9x<S/%IB6rD6-3o~f̜TIVQ͘W*ZvAr#)˥9ȦnbzV[z.hDYB&*DXV]Jl
l
=p5Zvٓ]_*eIA~
]~|NM8CiPRHlۗjLMplVUu
l

v%0v팤_:HH2ty!p@ JE`0pw;w|$IPf+~*M8`4'T"p8hג3TB=u
<l
vf*
$n:zJ/cZM'Mz.4#4c~1)
Ȧ6L|#?v%T*Ţv:;P%E Y]E$kK?xՊl
<l
^IVwKo!?ծfWlC6`)/@zb]>ɦjיl
<l
RL/ɧ!駛׍MhѮ"OJ٘fZgT~|cȦlYt:%|̾/n[q1dSl6>uJFUKbt:څɧ(u|79X>%Fa}VD O3MͱOUABpigV!73M,־b8fɇ7M,ddSIԛ7$-U?E^dSt82Irx4if28^dS0Gȁ	XUJvp8M{Mb\1X,f]EH@ȦlZKAfS
g&xH[)Ȧm6p8{B6`?:M%IJǢ7ǐMXUP,ʑ:MT1l
@] v:e9p/)}~i;?f
>8&R\.y
2ys{0'j`z6ۊ#PAiZ҂3N^ߵK\B6p8h,iݮԃu~@Ȧyoʀ~$;ѩ(4]Sj^׮gՌ׉%#A\Jl6Ӯq,nG6ɃlnK_  ia}vdSܝDhTJ]Cvz')Mhr7m*ȦԸi*jv	v	@6ƃl<HG$v`^5P)<ɦqz;kۑMD(曖l
vdSx%H{dSx%܃vבM`)lA6-Ȧ dS؂l
[MAQT4MKP8)<x<j))5f3I*r:*vAw<%akW{v	3Ȧ8iiA6ZjwB]2M {B:P)<Nˡt3l
܎l
@St:sDYfX
Ϲ~r8ȦEn%<sȦ45
׻6t:ծs_$nG6iz<v!2v&ՊlZf]Mhc2%<CMh#i*QEEl
@HEٰ>ٴj,)p)e~7M~,t\jW,Bw!PVմKG$B
xN
p/)eެp_.,?:MҐM(iēyiy4,l
@_^wzsr9*{\tF~5rMTFn]c.!4T{Mk4L|{Yáv!ЃmŢ,V**ǐMl3I8Y4Mii
<l
@_Rfʩ8N~G'vRdSViiO2څ8F>1?F
rMX)F$͌v!l6ތGـ>:MX!J`tvoq<vyY<l
.l6U<%9޳I.p-]Y6VE<B"|Dij'7C6`8=5W`28C.fWMB:5FO H2FOSô\E6`/WI7+l(`
<lqHq@T TQB* Tw
{8$眐Qnn.Ϛ]E~m{[QWNT,EY\6`,nُoaX.N`z!5hSfFn狐iNfq:j=`7q,s00,4M_@
/wkMG~K8muxUUgfq&$	PhS&V=ŝH7ʲtfͷ*U\6`<Ϸۭ'Kz.B\}{}/[L6`"uz}PEuuB^E,u6`(Ma#qtyw^)Ca(}ٸ"u6%:
7pUYpm
\/^PEx~ZI}zz	LN+_T}g"sSMKzKԟ
E5buw>6gRefq؈6`47OּM	ѦAYEQ5yh
L6`:tvp
m
M,S䝩{5)qyR0M$@MءCA ISMARir{໲,>pm
'zwEF7BI4}sez
M هFu]GQ{
Y)q=)ѦSuQ Z=8^^^4
'n6`%I/_(2ISM*iA8=4}{{c_nJ>q)p7)u}:ڶ=ܤHmЦ'pQ5s)pO)H@,}hS.P[)&4MCpy	.)wa
hDp
y+^)ר<].}!LhSRy^9G&M8KRaS)UUaQI,0C=a
64M%;0gq80呤9hS6}}}ew.y^׵)6uCaUU~~h&I݃Di>h߇a{@iugeYGS-w ҦRGMȇ݃$L)}PeGZa	k/lA˷oߪn\w|*1]hSN4s.A42.6M_Y͆BWC(R)D^VR<G.T)~!Iv;PGΠMT]ױS4W
6uݶv)gj|=)|Jn#OT)M$ԶDx=$I|=ۢM8/àVRɑhSJ#p8pJQq,I*_uhS9R嵊ԾYL$գ\m
Sʋ$y***/8LR^zIbT^УnHK8q&sT}sHuOP)O8G-#pPܺl=|=e?(*zIENDB`DrObSVDr&3]3!
Home~LT~Titel3]3pxV4B1[#Click to edit the title text format
Home~LT~Titel<(
(@'DrObKSVDr&r8eL(Home~LT~Gliederung 1r8eL	xV4B1	%Click to edit the outline text formatHome~LT~Gliederung 1	<(
(@'Second Outline LevelHome~LT~Gliederung 2
<(
(@'Third Outline LevelHome~LT~Gliederung 3<(
(@'Fourth Outline LevelHome~LT~Gliederung 4<(
(@'Fifth Outline LevelHome~LT~Gliederung 5<(
(@'(Sixth Outline LevelHome~LT~Gliederung 6<(
(	@'(Seventh Outline LevelHome~LT~Gliederung 7<(
(	@'(Eighth Outline LevelHome~LT~Gliederung 8<(
(	@'(Ninth Outline LevelHome~LT~Gliederung 9<(		DrXXHomegg^Home~LT~GliederungDrMPQJoeMnKFdDrMLDrObuSVDr&nKFd	StandardnKFdDrObSVDr&U
z>",!	


Home~LT~Titelb
>,dxV4B1OClick to move the slide
Home~LT~Titel<(
(@'DrObSVDr&F?w+!	

Home~LT~TitelS?j+dxV4B1OClick to move the slide
Home~LT~Titel<(
(@'DrObSVDr&T/E[#Home~LT~NotizenT/E[mxV4B1XClick to edit the notes formatHome~LT~Notizen<(
(@'DrXXHomegg^Home~LT~GliederungDrMPkkJoeM$mVTDrMLDrObSVDr&$mVT(
	Title~LT~Hintergrund$mVTDrOb-SVDr&W|DrObuSVDr&I|StandardI|DrObgSVDr&HWxStandard4HWWWWWW
WVJVUEUTj	
T.
cS
RQ>Q3P_
VO
iNH}MLK,JVInHxWDrXXDrObSVDr&ZM.gdSDrObuSVDr&ZM.gcSStandardZM.gcSDrObSVDr&ZM.gdSStandardZM.gdSxV4B16/14/00Standard	g*<(
(@'A'
1'+'DrXXDrObuSVDr&gM1lcSStandardgM1lcSDrObaSVDr&Z@hStandardZ@h#aaNAT5
`PNG


IHDR@:`IDATxٙXa]}A@XXd````AڂsViwt':sh|f/ͦh4j=SZ/$tl[	|T*Iv[~{t:-ju<s6}^qK`}OudS6	\iq~FO1ݨ"W$I^Z)pOJ+$p(	QܑMcf[$bDZb!giN#T*y!7l6	ݥIUw[l
0L$Ѯk_^^EӮydS`~.Rp]Ȧ^өj岝~	L&>l
,V05O"K9L
3ȦF~`jH<jPMu&FjE6vl6nu~_%j)9I|^__q	X“q<'BA6f^%I1'ވl
p:fh4vUl
 ΧK~ٰfdS/MS7N7dS3{v!#ewɦ?"ew}.jdSt:m6*JZȦבM&	.l\NJ]Ȧ@|>.TřuzIx<jWQvK6l
wB™\)PnKPj+Ȧ@M*)Бi8+/E6:B[u~)lDFdSM5L9M4MKPCwȦ@G!dS؂l
[M`)lA6:*
[)Qv:g.RdSU*,E6:FjUKMɦ!t:NԔDUz&`\6ME6J1&uf9^DFqUz-؈l(ɠp8ȯy^dl6T*OnY8Vi`/)sin6|_f`0z]s9+Ȧ?<*5Xt:%\q$UJ.,l
v+8$	jz=I	jmF6Hr/߉x6iWQ&{\G68x<V+EKi,BɗA8ٔM$ldSZn#̾"Y-ĵK	I-;n7ljvӮvdSjr=O$H$ޯ`5i|>&H<5jbxl$C*@6XJRl6TuN.K^ϭ	FdSu4Md\jRNSB"HҮtގl
l6
l6{>/܎l
Javv&W̭]3Ȧe+n\cN/U*NGܘH
M$FR$rf~p8(	4?B6J=^}d3ÃkCB6ߋl
([J7v!Nf]uvˋӛJdS@&ISKnd*znZ^*z]׮IdS@Iw$v;㩩MC6NE$ެnɗDvb<%>l
(d~I"|ǭxJ0}PhDw鏎#SNt, _z&>l
(Ĉ~oy+n'CVl
l6]bXjIX5o
cӼMyٻ15f2)F)9"r#qXէlہ*eLSKsG6c2HVЮ^OjG9T*` ]Z)Y:%cDCiIF,-JK@6<x<@焺l$5|Gnrp[Z.P{4MnTv;cҐMTjf%xEB$s:p8fnگfRj/p7yͷZ-υ $2Θ\s92dS}8)_lBTI&z@-G6܁OLd.MbSv	]ȦLsWVٓl
l6FUf<kXl
{Eli
|F6\C0-BRY,U6"E0-S_"F0-S4C6|`Z	L3 >"`
l
Ʉ`J^9-_J$Ѯ7z])[MOEǓD
dS?#4_f{MV]?$NS6@6НNN#jIȦVv# @xԮmqrA6pf32}XZv^N@Ȧ~?pORn	(Bd?iWs$x]-)j0FDRLdSh4bӏf%%#@X6l6Ӯ^ptM  ӉIl6+]dS?}fݏc:JM lkWaI`82p<$ѮRZdSBg4?"#&	FJ'Ms^7NIȦh]f)^k&dSYk+^];M[)8sȦ0KTNȦ~l(ݥȦ~]B$p]MC,MS*SM7-bR'dSp@I*e	TkP#}Wͯ2cX<Lfve`=>%i$=f	{2+`i2Ezl~1o4Es9J>n
47ۛր3bW<7<́40e˦Q*oL`
xl8yUK„Qˏ4/"M&ZVMvFȦf9/\3fph43e.0Q5%G #L=&:r'?yך9O%qL*pfЮ%\^oXhWXdo.vګS+$TS@$!#6ZV?tZf~^vRϋ_ɽ/Oi<|@ Ȧar;fh4"W&J˩;N3jW$d2fwː:$s"X&l*!Q1P^n9n1k%2TbjJ0Bb6DO9
vS$'?YN"z&	+J i&R'	$J6w&K`QlTɩf3It:dXL2hKz:VXVS-Cf/'ϳ)$-f61	ZLw<}!ύ6tɓS/#gd2ols6T>eü1T.y#ѷvI7V{W:̦R%._$>дB*uPWTn7AI8ףMaVX$Ti]1ʏJ]|f]yߕM忿M4rf_b`-?B*YK^w?L&v9 țl*;"eՒ{WzGo	p9SWVAg~vE^HQ<<@ZrJ=P:#en7fΦfl6.OoPbS܎>1Lpn{M%qJǞ&|X>r5;t:fS*G:7>z.w9ag|X%ȯ_>7eSL2Cx8jKɃO$c2mon#ݱljNbvFrqӁGۗP$l*ǯa[[MO.tJo
})=~)k"3=4~nl6_CMMwC~o:Py]@l6y1+VՕly@́l8~j^j]x<dc!qF?e_/L۳)/%nY q1oJp8pr)
la~З`mnu6fa햍yu:v~S'~j9N33wT~N&L.3}"E\e6MT&}T*W;ۘMS	@.zS|8>>Hxz^V+uٔ`+!*K%,ls9n_fr9Nh^Џl˦3-qy%BEU.ӚY~0zg?;oj@p$Iu]%m6XeB@ȧ-ٔ`{{L
ASݾ|o66K.?"LxOr<@nyyϱ)`!_a^a@zϦS<\?S	>K6]VlJ0nǓɱx`00|o~s4O];w=剧=~V>eS)E</a^"S*qf?~y?2Բ) ;O___0>,!2~p㭪MYE62c)
b>8̗l2ddŽ(\]J4"h#6v_ffm6j5^T6 S/BԌ7"XrBF0E
N7	e$4Vfپ)'ͦv!@|>7Gefh',vڅ`
-gPgMr.lO2څE>v))2xrV,P$I[4rw:*4)2)LK+OK`?~:M'	L+Ml~Xp1b<6`dDۘe}>MY{+5 b؉8$Ioѩh^o>ܤ)~ra6Aq4v`zCN^$6pXT6ö:y?NB?qrI{rrN{s^lʒXHLlw/H1
N8d}?x|>raNޢ
'MO___B)K`-y?m6FsApYϺ(rglv
NsAp3'}(Zt:),'mfDwuQ,l*MR&~Պl;]f4OkMgߨU*I0ɇ|&f+F>:VD=ipOM4ICMkϰ/;LBXKZrUG1ӵp{ׯ_5j@m=enۯr˦t[+yT~}Wyח-^r]ޔ[Vxiʯr)`ܲ)ߑPn#IigKUDfSZτa{}8W~nz)~j&z.O`|)D*e֞ՊXu;Fdڄf"f~_,|g9X%lJ>ei^Zi.Kyiv8,h&m.	&ʃ:[Kraݷ
.dS45$c͓
ͱ&ۍJg$`Kz#Rө|-%iwFb]!c.𗖼)UAIhgr]>c^f<X3(.kKMiJ_L	PKRbzo*lj̥HNu|PY]~R:Kf\yJ/P/ɻt.4`ZT^__E%	mkQv_H&^2	(\[`i~jgiZ~:cyR{?ː~hHRN-ϝi.w}߸\lw
{*x6.L·vޔ_?=^
KJ
;?l6^t=MWU^uدZJ{ڛ٥72)ɄʌtQv,o_~pyiWldSɦqw:кChWCv	Qց*<[z=Bp=M7iWLh4l7{
T8v3(Idzi 3yRGh4X=i$Wzr&nVg-?O
x6
a@`|&z]^W~,kKN/Zn&´HCG.l€>;f<hE>4	?2/ӉS@˃HCdN "xJ)lz8*NU8@;wiYhۅO:<M=ϻFfir16
T)^SNdS?4wf[Ŋ4%>F4Dٙ_~R)S(cY2Vˡx*53A E&LL#Y-Lשv@XɦN6ԢmDZv	v	 (s.pirLPG#?=leCڵl0h`p:MNyD{s)PS/Fa4?NS6d:(C/]̼V]H䭷yAy$Q.yi#ZXL._V
aojE6Jsw6}{{+]U2عL3]]v	eVwz&v4ޤU~:MYYkByz9Qd^[±P?pA,L,,UPJ	V!쳙P)SP)ZX](%pKiQf
Ⱦ)lߣ'ck|6kv럅
j8)&>s9@	˦gnK9+6oB@}i0øfSZFOG6Jz6pҘxtTF®ISv(t:;N'ykE/z<bxiɜ9LJ^6A0j+O[n4gl[)PBTF]B$6~_B9U`{l0ڟelF@	^EWd$IfYqK^gK/Y]
(Tb"ӣ9~3P?y2z}fa}hw
l ̓n't>5HG3Tz~/g>P;gt34MMB}lYnSn>W`q6=N6x98үfsh$c~gjg(˳gHr܏7~-(1< efʬ3r.@rm0iG
FvEi#z&ٸܙAI*
D^q65C:DML#Yrq2Pp`
Tiyڠn{M&"!ߴjq(7l
t:yvLPizdS ,~B*~3(ߓM4_ۛv	Ȧ@X7}=!@/T;\l6Ӯ~7EdS  ~SNPV.@rCrn6噂*(Pn6]BsTZT*IB}CZͦNߔ,;NR~P)j/j5_7%lt1|:*vWȦf3IJ)iywP@7eB#ToJ6rn6F
]B8f"iS
$@ٔ@oZX:x (~w=p:}[*7u[K~Vf~.(~Vi88~S wefRvK6E<s?xmAA\~@7,*<p-dS _ezYtbX!u43eӿ:V+)G6"Wqs/z9ll|:jWC޸{iAuZ.Q']N/V2m&?l6L&څx
K(z.{HTߘ7"_t"tFu
l6MBHiuXb4jW݊q.șSq/(4ʺN=ޏ&I8V@Ȧ_t:(#ٴh,˼+H~^kMs6͆%{00=IjGil6b~/O_%`6m!d(.ZNSZZ̦Lc)Oz08gYXE{<iX,ٴl2MzͩQ{<FٰD}iQpz.O*8ln̦џQp:j`Z7z4f~X, Oe(Ǘp8
gi
9	l60g9x<R4J*kl6K}Ft:e*rȦqF6:Bˋ|,C]ٴRz=f~H6eF9d('~ɌWU$|d/	^a4MGQ$f_'FfRdN2cQEX$lp\-L7	FnTc]B*g6a!U>CɩI3tRgYZhȯE$lZY4MgJl6T~9F٬SiNƿC*RϦ$&Ih42#S9q
$l*jJӴ?2\WH64N;N8.?˯*$8l
i癩EܡleIIT:NR35	FTY5+#?әjr*
̦Q(jrR
.;Sةl*߿ٷ
;M%,ۉU
ϦQg8f.<켱^vTP2igx,3R4%eSxI9iW<W^6T*O_^^J3'u4IHl
^K򲩐LX,~)r>LHzsܨl*$&u*&ݨ GegSX,WݨP
Mlپ{Sۑ/dj4IBdS.jOq:L
M#⩿@Yl6.Q˦kf)ɦ񘄊kȇf63砒PQ4MKC9FPiD<
9NSD_"F`H<}yya-?-4OG{Of~iSN
u>OSΔK!h}BP8IEV+&l*z^Zt:]kA$p8/D&sgi6fs}^ff:q]'؛MQAIӴH6],d)܎4:VIBծ%l6^w:Pq#FWgSc86NɄ8Ntp[5r#F+A1NXׯ_%^q&FvgzY nZp:j6v'6۹M8Svrl63ѵELp;iv;+I^^^X 6ljC)hhׂ2RKz!"@5|9Mu^K6@f3I!>KLD1~p;qZP~jd^F"@|ȦQ62Nh4!x<J<e{y'0g2bzڵ8l
E% w^eSf|47VGݢRpG@-&0Fb2CΑ
C$r-BlW=r8K<Φ3x$		o%^GxM/Mj*e0LoORWj57߇Bȝ0ˤ$	0_&~PӉBwFG%	cfo)闼ϦӉe!Mo
.lj*MyzxsNooo%`
!ljydN#Teiz?7&NSC~lqr<T=jv	BϦU,$I<~>k4ϴ&Z-
`l?zysw	_~IC[x?=Nn^U>
PA6y$T	7;-Ij*MBPT,,@6<w'~=]>6u8áv<hA+(gfnTZWFYש
-4u
(Vݨ٨nU18C:-!J
D)PݨfE2X//$I(ɦ
/\.3 dUU$~Ish.vegT(Y_dAZ<'L+TGKӔЗVv	Ȧ3I)Rmt^__Cxl6=ΦQcj}u~?i]-i$'TC	|iјfUH;.*oM"Oajrn~䉧]B}t j~/-̑}gx'(k~"JyiWQ &"2J,`N$t^knMH6"
E)P(sxdB>d|x?orucm>kWQ .*hdSMJŬr眪]W@ٯFE$	Q>WAE٘v	Ȧ0nC:S$v$T^o VDS"MMCgj$uw~'(I!oVrwZ%#Zsge*FnӮl-$Qi<uZ;MJ@6uù3uXGs{QEr^]H~I5]L&~wvȦ18*ޯH	0m)]~y~Ā>PFXF$]HB֏:-h4Bv%A z<W!|8/"mWD-KIo̊ѮXjK(7͌TzR%кN%yMWU
oǫ]B4JC6ֹ'zNC؄?ʶc._v!\2h!R˥	+̮`BW$r#(*_J7*ʞ\9@iȦ14:FR]rUMnd[H;vev	@@ȦֿYnjqw׭|2A

_eKvϑd}gDJG6
Fu$ztjWQnB6U;3<6w 4KB6
YOBd=AVDN5igE@"΂4M*leC~_2HxӇ@FLS1@Ȧ/P7h4
;o!c+Aâ`?rH*
mz`)>"	u65<"`Η\.k.I[V8
Wsv@pȦ<'<~7t:
$A-leڅӠTMz*!5r&obAp6:3Sl`0dStv:p\T670FtzȦ@Wx {IAZiD<ʬiJ)lT*zЖuem:jbi*Lw\	") ٴZP
뇖M:mi
">Zz
$ІPNlc)uhrw8`OS@wl‰uebIaN0=PG6#GYשG))$O6ȦxP8x<ZFVArŢljRskݥKM8t:څ.Mp8Ͻo{\!AMZ_qKdx	s
%s\vȦx<%!=v8̦f'Id	uKc617
ϒ&NI'P _L[$Qc?&J?][Ȧt:=f)姫څ(/jiWaFTPIɭ=LdS@^ҋE0iv?/P8uIJ,QZdSCrt:`
v?ȧȕ?$Zۍ|}J_lv""7_V{԰(
vlZғj"Ƿd.UdSg^ORNGL!HB59*p8H%BYvx""OT_'[?LÃu,Skj
rY_z"C64,D6E<(4OC^/礙oWsbYqL׮ȦYRK:veda	uE6E|=L1/LS""Jv	y9!?N]8p^fx6W+7ӸҮ5dSB^`̖:>l*?v?ZlXlt]v	V0ԶZ-&!r2E18z]Xd}f(ѮȦ(Sf%Tg_1nCȦ(P&mX0T*ݎi+Ȧ(s/[ߞ}pŒߊ(\2~ENl8lbmϲ).
v˒OsȦ(1.Nh4.&9	pŪVM9eHx{{cl GMQzKlqz`0 B;FN#pFçl+v	SN#p-
ֽ9SdSZj'w˥O))
Y)nK@7Ȧ(CZo2-S'dSl*?gG0))Y#~
} !~.:>SKdSZV% 8fs^LMQFYP(Gs)N'yJ+YJڵ>dSm65E!Gs#|n^zl
؃}iX
f{6].J%1v
Q(GRYfSŲ4i*#b`fjU)@˦F~LSgG	XŖlr-$EQ|LѮcl%;28ɦ.:MQJX,8.@ԲYB$cKB-EL6EqS&RȦB=H%Z	@JͦfFuN?'MS6uGv.b@PHͤWdSQ
l#\t٬V斷x<AJ"sV
ʦi6ݸ!ԓ$N&<]i>k	cB=l&Ŕy˕J)
m)rAw)ɦOn_=:'t".gi^B=SMdS<IiFg|7z]"Q$3ػ	銳iqB=Sy67.Aۚafs:?^0ȦEo	ISO|p8hDZ)#w<QcF?gS6l0YiטMS،9ײiB=c,$Գ1l*IVE65Bs纻$Fwf]˳PQT}(gOKvM#KDwC'IdSxt&e
@O"":gS{6zm%Eu)g
T
䝗M&|nGg(c6𨯺ViC<R%icȅW[˳`MivL߿k6#ig*_Xsk6u`c%*r显Y]Sv97Ŀk|JgMoF_6~UI.!a6x^e-
DRs[YE>Fi3+TO]x?xd	=mt:5@F{I(EBmBf&u@>#bDɏ}#N鞶/y-y`0o7H65G13$Qy2?
e
s8ȦT2J6bd_|^7
p\umWLSBBȦKO6uX?bd_Q73$c]TI6fnuB8N)M͢K_$I~jh*WhWQ6yޏxؙ	Ҡ5s{O*hȯ)a.Ey%e_t:!\6ƀa.rL/it&ޣ#WDR(%lz9He~^93VB0Eϑ{"1	ULOpV3?d8w'OlXJ:n8j3LRfU	IوiFBo3Bq
5IT|Lgsh%Ilv=Φb4mP$I|dv]SJ;\-X5OOWyK_~EN<@|N6q}*ufi!m^t#Yz@ 5kOǙyrſ.a0x<&e=Ow|V8`j6ԮVb7;l9!H
O6h49=GuQkZ_6M[+KZzL s?Լ}]g}&Wb]'{*H5q}n$Ua4qzgσleY4-3UKwڢ
;My*<((P:c65+߱yX1{kk0l8:h_}&iME\1Fc=leQv!N
'Ȑ`gf l
2K_dSjoT1(j]S9%~lٿE6q Ӑ#	ЗΔSDyl:z#.`94ʶ5?J%)џm___CE|4 (Á]8,Qmv	es}@_Z<?3HӴjq<P]6:-uh:rY|f&k>{W*€>

8oiZx]+Vnq=܋NS8?Xٔ:ft:"m68le9OC3\ޟdY))gB83iMv-ue///4?c[Sv`nVX,&MPNhdVGQI*L]++_>/m0:;?i]~ڕ@R{iBRp<MC6$f	+!t;B۟S4
Xg^Gp#9V:tNS[L&\N3]E.)
d>2CxMYZ,HTrkbgWa<jCl6@R7eS=~'qNSG1xLԐu$;ޔM?]tQMn4ܟl9)}zk6<;Nq8gi6,V+/ij6y֮)S
xOBX׮.&
i&zwd8B_2fŘ{큶ۭcET.	^@h6{ʺݮ+ȦbXR(#OݶT(Y͉[`J׮)~<\gZ?
ezʒ$@}ٴZLEt$ʯev<z8Wڗw	ԃtVۥizwtILto6EQ	j%0-(kIBj&ؔy̼Tןwo'BsJpDZ-rөsɻDbjKf0U"د_倲IiF~s8,Q}仐v
[.^^^C;FY0JHy9`tɦ@Pn*Cu޴2hrGi-bF#<`ZUXV%<Ō?hWTlvN/}0};e]y>k|0hlt>x<Zp(	Uk̦Q#p[ozi9@:}l6p^[|<Fes	Tg}vOaa*:}x|yyxjST
f	y4?ʶ5uI
} dTvn7yZl|fT#})W%Qyو~ٷɳ4ʚ/Gl[S${x0di4&Z-.LDѮB=
 sypz.ldz.-6`91L-öWh|i7&f5ۚ

t:eAv^:
7eӈRWk+|>.Y:Pǂi$
Mn7Oaj4SmM9XlYBR~U9V*:O6SZ.Y_5#yFtk9FYdž\%=To`j,v#9iPMlBPe:hl"S
;/y纳NɦQ;)iL
yKSnK`Ⱦ3l ?i
3L"ԮЗ+\VyIT›\i-ۗF3)*lL#ilͦf>%;J.<&i>LSl'_qF\4b
JG0ɦj5lBxWx6d)J@0Ln'YZ~WȦ ~iZi,pZwZI4"`/>x[lOQw\<֟&M#)
@0ƒlk
afk[ΦQ$^__;[<yqˣ`%vOROwM?kO<*grQ\^p)<hL_@'Ft:xt3<X?hW!#m_~<K@'=s3Jwe+G)Rt:}PKN2k=$
0c49짙MbQr.n0c~A)<f.of*CxA󝊦s~6P>~}\ǒ1v2iUOԒPʭOoA6GAt:F!iLS*>\q̘Y&mSQ(l$Eſݖl[߃@ߎ.:T~7!Ta8ʥ%/N(FYYדɄCp&w\Zy]8LIHe#r'_؅]Ԑl*\.f8cؚ
dFnp?rt>g%4l̦QoCVV=d^~⼷[)I#PKig|_$I@
p8Ǽ{C64e$JHe;9b:6
2ԧ؛M
(fS.rݥ{{{.(Fg$TJyr7m=F@*tv?±HV=p|Vn%\ȦdSy4b`x.#Mv<ABaa
}lǙle4h#Tyȳ@n;'TI
:M#!!Frh410 _P[dtPa:P%oem4\̦џSݮ4hr9K6y5z=I~0yIk$&[rDp2rʡoMg( 6S&z}}3NͮUe$s/@W5x8fng|65$C/?J(2C,ē*yMr<ɦWf%%/hn@œ.jrzVɦ	+"]@qL*3P<7rJ)sЀm=oԸbX)U28g+M+~¬{fjrewK״|H&U>l87p>n{H8δAKKBݨ؞y65$Thϝn%~]IVKiڵJe1cX5ʙAdSZN3O-ݨϓ{0cR'I*NN##_!TzO[+@ʦgfߒEIݮDRƎdh4z{{[,څC4=A~-3xz0Jq\7"RȗLx(
b
	$&SZZTCfӳ!u]En4DRHl
L
v.˜eQy7rH^tV3klrldnBUK#\&jׂGw7ʹcVGOQ2޾i=f|^~K6eF.sɣE8[R"]
rYSQSϳC<7F!.EK))lzӂ9s!X˜dzQ
))l8.ooofjV`51Z믿B.=TO-d<}9<} :\M}Vl<Mx]isÙKSaO>e">N///U[.JEn%BPMpȢ(rj5aMϙY<c4}^
dSsJeXZ-9%Oy}}e)P4)z>Nv!4h^kxl
L#l6l8jl
BiIh8l4sE62L*3(8dS ,^Oީrei$	;!ln9(Q^}}L&L?3&Үd^v-c$])j$&IBB2ϥu'7v!WȦf0lX&Bhn@ȦZ.2p8RmYl
^FB>#9x<S/%IB6rD6-3o~f̜TIVQ͘W*ZvAr#)˥9ȦnbzV[z.hDYB&*DXV]Jl
l
=p5Zvٓ]_*eIA~
]~|NM8CiPRHlۗjLMplVUu
l

v%0v팤_:HH2ty!p@ JE`0pw;w|$IPf+~*M8`4'T"p8hג3TB=u
<l
vf*
$n:zJ/cZM'Mz.4#4c~1)
Ȧ6L|#?v%T*Ţv:;P%E Y]E$kK?xՊl
<l
^IVwKo!?ծfWlC6`)/@zb]>ɦjיl
<l
RL/ɧ!駛׍MhѮ"OJ٘fZgT~|cȦlYt:%|̾/n[q1dSl6>uJFUKbt:څɧ(u|79X>%Fa}VD O3MͱOUABpigV!73M,־b8fɇ7M,ddSIԛ7$-U?E^dSt82Irx4if28^dS0Gȁ	XUJvp8M{Mb\1X,f]EH@ȦlZKAfS
g&xH[)Ȧm6p8{B6`?:M%IJǢ7ǐMXUP,ʑ:MT1l
@] v:e9p/)}~i;?f
>8&R\.y
2ys{0'j`z6ۊ#PAiZ҂3N^ߵK\B6p8h,iݮԃu~@Ȧyoʀ~$;ѩ(4]Sj^׮gՌ׉%#A\Jl6Ӯq,nG6ɃlnK_  ia}vdSܝDhTJ]Cvz')Mhr7m*ȦԸi*jv	v	@6ƃl<HG$v`^5P)<ɦqz;kۑMD(曖l
vdSx%H{dSx%܃vבM`)lA6-Ȧ dS؂l
[MAQT4MKP8)<x<j))5f3I*r:*vAw<%akW{v	3Ȧ8iiA6ZjwB]2M {B:P)<Nˡt3l
܎l
@St:sDYfX
Ϲ~r8ȦEn%<sȦ45
׻6t:ծs_$nG6iz<v!2v&ՊlZf]Mhc2%<CMh#i*QEEl
@HEٰ>ٴj,)p)e~7M~,t\jW,Bw!PVմKG$B
xN
p/)eެp_.,?:MҐM(iēyiy4,l
@_^wzsr9*{\tF~5rMTFn]c.!4T{Mk4L|{Yáv!ЃmŢ,V**ǐMl3I8Y4Mii
<l
@_Rfʩ8N~G'vRdSViiO2څ8F>1?F
rMX)F$͌v!l6ތGـ>:MX!J`tvoq<vyY<l
.l6U<%9޳I.p-]Y6VE<B"|Dij'7C6`8=5W`28C.fWMB:5FO H2FOSô\E6`/WI7+l(`
<lqHq@T TQB* Tw
{8$眐Qnn.Ϛ]E~m{[QWNT,EY\6`,nُoaX.N`z!5hSfFn狐iNfq:j=`7q,s00,4M_@
/wkMG~K8muxUUgfq&$	PhS&V=ŝH7ʲtfͷ*U\6`<Ϸۭ'Kz.B\}{}/[L6`"uz}PEuuB^E,u6`(Ma#qtyw^)Ca(}ٸ"u6%:
7pUYpm
\/^PEx~ZI}zz	LN+_T}g"sSMKzKԟ
E5buw>6gRefq؈6`47OּM	ѦAYEQ5yh
L6`:tvp
m
M,S䝩{5)qyR0M$@MءCA ISMARir{໲,>pm
'zwEF7BI4}sez
M هFu]GQ{
Y)q=)ѦSuQ Z=8^^^4
'n6`%I/_(2ISM*iA8=4}{{c_nJ>q)p7)u}:ڶ=ܤHmЦ'pQ5s)pO)H@,}hS.P[)&4MCpy	.)wa
hDp
y+^)ר<].}!LhSRy^9G&M8KRaS)UUaQI,0C=a
64M%;0gq80呤9hS6}}}ew.y^׵)6uCaUU~~h&I݃Di>h߇a{@iugeYGS-w ҦRGMȇ݃$L)}PeGZa	k/lA˷oߪn\w|*1]hSN4s.A42.6M_Y͆BWC(R)D^VR<G.T)~!Iv;PGΠMT]ױS4W
6uݶv)gj|=)|Jn#OT)M$ԶDx=$I|=ۢM8/àVRɑhSJ#p8pJQq,I*_uhS9R嵊ԾYL$գ\m
Sʋ$y***/8LR^zIbT^УnHK8q&sT}sHuOP)O8G-#pPܺl=|=e?(*zIENDB`DrObSVDr&3]"Title~LT~Titel3]qxV4B1\#Click to edit the title text formatTitle~LT~Titel<(
(@'DrOb[SVDr&r8eL)Title~LT~Gliederung 1r8eL	xV4B1	%Click to edit the outline text formatTitle~LT~Gliederung 1	<(
(@'Second Outline LevelTitle~LT~Gliederung 2
<(
(@'Third Outline LevelTitle~LT~Gliederung 3<(
(@'Fourth Outline LevelTitle~LT~Gliederung 4<(
(@'Fifth Outline LevelTitle~LT~Gliederung 5<(
(@'(Sixth Outline LevelTitle~LT~Gliederung 6<(
(	@'(Seventh Outline LevelTitle~LT~Gliederung 7<(
(	@'(Eighth Outline LevelTitle~LT~Gliederung 8<(
(	@'(Ninth Outline LevelTitle~LT~Gliederung 9<(	
(		DrXXTitlegg_Title~LT~GliederungDrMPJoeM$mVTDrMLDrObSVDr&"Title~LT~TitelexV4B1PClick to move the slideTitle~LT~Titel<(
(@'DrObSVDr&'8e>M$
Title~LT~Notizen'8e>MnxV4B1YClick to edit the notes formatTitle~LT~Notizen<(
(@'DrXXTitleggWTitle~LT~GliederungDrMPqبJoeM$mVTDrMLDrObSVDr&$mVT3
!template1eearial~LT~Hintergrund$mVTDrObD*SVDr&(EIQ;Standard(EIQ))BM^D6(R;SD(Da)(Dx^Qr,9lz^m[WʈIG6_ p$]U߿*uer$17=5ѷ~ck]ڗue+CL\uJHp|<+Iwk]P/SBq%[-%ײdte\W/Pd3	7*[JeQɊPӗ;DP>}Rr-
iuЮ0}[0b9_Řgo{\ˢѕr]}/y.7dxML=‖kYTz2Tk%o>p|0B)I QĆm)EW0};eQ gog\ˢҕr]ӗ-2]Lm-%ײNPd߇3;v_[[L~얒kYT@2TKV"{|ҭ(3	WMM|ZJeQv
PLwe(Fyؽyvf*Izz2dRr-24sHWu>LVr5^L@LUVen-%ײdyue\W%o{PDx̖kYT\+C}ɛ`r+^׽]]^WLM}ĖkYTJ2T+ؗޗ[{8[YZLt~ܖkYTD2T+a7r^5$|\ˢe2TkK!˭۽C@PThKɵ,*Y^]*xa^m|&HfuіkYjwe\W
?!{gOR-%ײdyue\WMlu\P>}n)E%˫+C庂|_x^ϋQq$|T[JeQPLߗ,7{۞.ZJeQ3]ӕr]ǾMheb3gOR-%ײdyue\WK֚r=~VLׇ[JeQP.w$Me9JT>}rr;ᖒkYT2Tߗ	>v-+*P>}Iv-!i΢ȃK>n]׍2M*uw̖iYTd2Tߗ	_Bn,ђ{$[JeQP.Gc4%#|&$Rr-JWWu6ʄP>}m)E%˫+C庼|}ߛi%B;ThKɵ,*Y^]*ׅsCq]BA3	')疒kYT2T+%kr8Y߇P/ɵ,*Y']*k4}ɻN&|&'ܖkYT2T߷	p|+G@L"0rKɵ,*PBwe\WKV֖,oKb,
3	'ߖkYT2Tk%-;3	'喒kYT2T7	p|O@LaŖkYCGBte\ע;7&[JeQ+]ەr]>M=#!M@LE#$~Kɵ,*A2T%k*m9L_jZ'|&!BKɵ,*Y]*ׅlLcP>}ut4IKɵ,jC2Tk}7cW$|"\ˢDWu7/`9gEAZJeQP._ߗ,0}фD@L"6lKɵ,*Vwe\j`s$|&ZVPi0}gP>}ZHRr-JP.Gߗ|_3	祂8]<eޗں7)LU=J}յ:ﳒ:o\=\>w05XLOOMgY,u|9ݽ*Z8k-zS`\h#ld|;9fuļZ8kk{6{CfzbaT,XDzCWF=m{u=ёQ8p,F!|}^at4K1zc-ڨQ|*hg*A@o#6{{WQ=Q*T/ގ%QO.^Ycx1<-j zkNbІ+N`>LRgmvOothc]D|/L\FR~8GoQ%6UFFyqiy^kSx]*u/`4gƥ}MvpIKm|Qߧ=mIqiBlٔEk+F}?-X?U(}eSZ}NfV,N@X:υ>bkYT̺bT{_I	%|_@<h)Eyv+F}G)"Or*EUJ<ɴlJˢF;>+F}[8 P{_3]w~bTXۮD&|,Ҕ+HG G0@ǭbsn4R_p}wKā@{Wl$Ri-"$,ME׺_Ҳ8
DJR.|oa	O',qEZE]I*ׅm9X4ɄK]_JR.|op3\ɄӐӾ,Q>W+}TIF>8q}8@Ku}"
"\߷0`]u%H}	Fˢ[or]>|q2Lħj-z
S3}_j˶f'|_ee[׃٢0ZP>|8_-bKׅ:X7@Kk]	Zk8Qb}}_XaƗXdV*-t5(]y*ׅrU#|>}Fw>wC'^$?d7%(9.&sբ9A%Nޗ(Kk]0BF>#a>|_>,5j,VTps^^grwrx6^k.߷K7=fWQ5=%(c!sz11}e=D6tCVpQ.MMֵWi?%rȸNr/ƥd]J2u\׺u08Kz,+Q>5x=|^G}_`6ֳfQ׵/ņZ]Y}ݫcWisn	hLy|ico2VGc_rYC#k"l3etPG6~{;ƻcU߇=EC-}J4huloة~+c<ED%\}'MG7>+Tul{[8U#+#Q6ԑ
U-~oqoڪ1PS]駄37d~x,OzZTh]ƷA]K׃tū\ׄ]}AU!'??i|ƞ7|EF)K_5M߫:wۣhoU6%Ιja*qS"ʦhqד3;vS6uy>c`e7}<=>k)Y+2A(F%Lg{O-۲soBOks䮐}oQg;2tzcZS׫#	j?ļ8+a_0;*멫\{gpKZ'?;*sm
MTG|A7ʷDkla-5p,壘8Ez|=Lz=vLwȋ3+(|ĉ17둫\״zk9Kys:cS?J(D9uwhKg$TkFr|ߨBV+}=>mh^}s\Ws1}myTG>XI7/LScGGPŁQ7}x}|ʢ$nN[d]ϡ]tMȦzV|QR4y\zyTɷDKGIpos	_h[)v	ӁI$6Z>*x[_ϱi
$Oz*׵wQebkԑ}SH{i^ͭ3 ˍ|DDY6MW;C~S	oƇ(&`Vr־^ޖSmw~9g=%ؿw~
W+v5@Rhiۛؖ珱7H{d﴿j#}w	S1clVnp"VzS9`7sf5(afxlϸ5ư&6~}}>2q7.|}|^#}Yny3(o]#ckm:{D4螟QlWIs"Ʃ`teY(ZV(o֕>rOdtL䙟1}g>k]߷7(:ʛu豉GݖwM˖juo0lQ2}9&W9Q)?8XiʞZ]44M[8W;Gk]{S}u
l}'|t>ώTM}O~qo}$`?`9p6oXc-][
2p|_|rhU~U=@j=[e";e྾'+{q$S	g^7eDXe"Ge|Yr1\7הco9\߳/ҵd*{TxU1	<|]:
ĹCh'kUنHRx[b(ვ֝|O6#&Q#|O~n")~$B(lCB\x/JĽ%[:C"@ZhEI	\
СW]HǑ8R?
OC1O~
M:x$:4
}ّȒoxs)	ot6d;'*}j
Ne6wBDAДmDOQwhga_["	R!ƞ<]=aji]6<4o>6DR|ORI=,a18R<
2p|H/MX4,"䮔lC$խ<')l1}Mx2t_نHZxIj[-ilH~`1}MW!rV~IWEu1}V!U?(lŵ~Q6R_1}O~"!L6\V;	`S!k
S~ԫ
7Cb4Mlm{+mB#o}XBOT~![{}6d*}X*U΃`~"[{e6d㕁}5P	UOl~e[#[{M6dSo}7O~X7C
ۛ[{
x,e{}ot5fPRT<y&^邲
Y{\e}on5Jh~ikWE6d=ӕW}X=\!4*6-5gL:ne^>ݪ-SŮۻцae ;2:뗭[tzu)MlDPRe 52RbeZ}+|#v)_IєW}X$ъ,i5Mn{+U!02*/~UXAK39j]N*ې1}Xp^WqȎ;@TA:lCFV^oWs^g(ېP0Q}X(іP-IX&(ې<K(~-ˡd[27Ass+ېBΫ(}xns#(a4Y6$ZU|M=^%@b7@ޡC]owmH&'Wo(c+;P1<ٜؕ9ymd[>/G==.	\0Z(K}(W}<#	q:wE'W_X)ېBΫ(}<98>&ςX4+Q_BmH%K>Z`DnA`Q/6$MH|e"~	pc3oQHlEEنD	{-^[g0
WPXЦ(ېP0Qw}Ͼ\Q{?] rc?bg"\|WMCwiH)6ԵA
rrh%r	=KjmG&|QߨlGh|CH)AU`;lp™.9	LU׽Sg/<M?~nn)LJ(ۦ93ˑoC#pz[Dʖx nKWGdؑoNC~6it2Qrc*wܚ8-p<7=	k6ƣf_Ȫ5}woϼ>zW#ӝG{_.a
GvىX#EV!	;a[KnsX- c[m9tǬm}uK	Ps$>Ng `#q{T#?.+;FBm_>REm`ؾ+-	kJ
J߷˩\y:"@er`ڴBJ{J6]xڦR
@:|_3,n@Bu,&໩5f
}{r9-!|WGG~&+bBH#N<H_<rܯd*@$|_$]bC${0Q1@-|}AᯖFOs
@
uhxz#cI$@z7['F'0҅ 'Ch%%<@U`N{<#C0<n8! `&3b  N~2?`]Y|_kV I8Ab'#2 `!pߋϢƜMwvhE7xk(# 8k{_8.-d: Rx[t3xy% ~0ܬc!JP@[	`>sZfq_>_D Pp{VY@ǰ@a!5@K~F|a(FW!@o
` +R H7wNg
6mϲxL%\\ެ@`"t\\'g
W!"	"@!X?f<?UD Pϫ+k@ϛ( &jϋ$q	a ~m#LB3f@V[LG
&Lx@E	VLG$Kl@	VÿPa}ah	@@ϱIX?G!JT@2~9$T|_TBB#slG	xL Їϫ>/	 JH@~^myU%}[DoP`d̯F"IL@~.W_w|_}^$ 6~/a
\V$OQ	@ 횚b=/hJ"s}""M@;LU0`&o9>V( ;M7nQ`$@H@iwf%ﳳ{̫kgMxx*ּ\ςQZ?(g(@x$O~|ߣ$E#(>?D П%B|=RZ*Yb}И@dܐMjU$ S;BT^UQr>$@/Ᏻ*7;7M$p1	&zB4B~J(]Fh1x3ik0;HI%l! @wg_>PMz8!@yU<AI:_W =@rp|5>hJ*l)CNbW]tGxg^~>T!(0-ʚ`r}& |"`~Ox*֯pbA5O8˷/
,rA-Nʥ8!@ [BaC(?X^F_MxSűVvF3A F`1EVﳶq L@gtxYO4FUL|X
@_ FhX֚e@'0^~,Y--7%R7aC@2Jx}3r` Mi K輌s7yVh-L@A`‘EOف蚂>HՋ[j7!@`h7g@ŕ|*Cz}g> &`4hv]q}5P^|jǙ@;}g3mZՎ3
pځWE|@@`	BpTռ
) \r@nmwA& Z%U5ϭ M@Jj|[	@8rkT> p6)*}n}' @lRȭURUN @[@ 	H9 VIUs; @gr@nwA& Z%U5ϭ M@Jj|[	@87}Hu 4j&Z> H}tZ> |}Cv %j_lv ߻-uNX|RǙ@Ԟ'X)ō @W.&1
 &}edQ @av5@n	h
4U@|@
@-2}3 3Yg\ri2 AQT$τA D@]I(ڀ
@H$O"|_`)@YwZ@@.}_^-<,/W@8@E?S N@p|_Y p]tcߗ}m=
 uOi_ߗ.} H@C%lP! 8qR>v4}|u0! @0ogh{ }
@0ƪrnà?LyP$ @ՖoSjﳒb @~}V{LƯ}{: @Xn5 ǒCh}Y
 ?X۲h
4 @G0翴W3@8)|h.bFʴD @i[׺@#hB7	 rm+SB ++1|(1C ܒ|E}5@ G_NUb	%DrObuSVDr&ZKkg!Q;StandardZKkg!QDrObSVDr&gKql!Q;StandardgKql!QfxV4B1QStandard	g*<(
(@'A'+''DrObvtSVDr&Z}h;StandardZ}htsBMZ6(SD$s$x^iEBC0ChAC(P!!}O)ʐ:V! ,#ׯ~۷o[[>??մ?.K@@3U tۛ\4_߯_jLJkTQo@`<xƔ&E/=	tQ*#4)@
$V"&nT{w$G"6
e.*8&z-X+8Jwө,;vvЦ5 P&I	PU
Vp$lЦx ZzFУD(@ &iLQk@`XJo
Hr?ٟ!Цc; (Ur	]
ƻh p!6 ЎRz(XF-TC i&k@K:dT醀 tx|*-ݦbWQ;4@6a" PCl
No)	MSFA=mUCβ|@VБN;VȠ_ݱ(	M#@ m-fd)CMgiNnhu+,'7M)D!6b)	XįMRE#7v#	M ¥|t*n=
B4iix$Ҳ_rQO@F(f2h;6uY@ЦDpI@|	UzCݥR)&6-m~"tD!L	Ц!D%!~}'!`MmjM O`*m!䩧K]J@6?@n߾}k%Fh]h(|Bn@f$h1\XG@TXIt]ߥd?R@".@hL4hhs{ЦkS: `Fa%@Ԭs@EZ@+,#7^:Omƴp	59V=h7hSo>ac:BFyzC@j(%6tʇ@h*HI@U2F?Hكh@:4
U('L#6% sЦ4 Xp. "X"6-dl
L8XO@Cl<4Ц>B W84_Q"O 0tgJ_$,$ad@@$l3](B@"u
PЦEe!P
		hs"6E|!s:%\PlX7dOb`5Q芀3F硖Em\T	|͕42=C`(l>B'y >> ҄Z' όх% nVU	IqD={ծI!0tV2pʳ,n")2@;?M@#?NzHq7c+j
ztGOV4ΉKee~nmyfYThGۨ:Y'6-4	poԵHҷ%_)*5,gЩ롄ʅ"6
e.*JJ( '	(=6,'3鰚tXcTI[!0t \(4$DjH*'e%6jYWMn-^5+=H]h]D$(x<_&SMaԂ
5V{AǦH4@6@"	 0‡#h+xFnN2 4yibP0Up1
~ia(X4Lm:
E	1ZķԹTpxszM3Y@ ݝY!hZ!\z)DTa6,%6]!;(vS_?8<)"{WS`zKlh_JHBmĐ49H$i9;v?F*OFTЦx ɪM~&u)4Ũ/RA5e,WdkHmj S^kJ[,x6imzx"rAabz)YԼ-V&
	MAN N;MQ*.Ц8 @DV2PPIlЦx @vec	Z}}@8iqB ]B!tiiEs=ԋ%*Hv{0gK󘛤݀+@V>m6~||x!#tʖӘH@.6C"i)&.feԚ"6-en2m6]HN)0rWC(.M]J@8*D`'fC "ЦEM3!K	$@`&p}̐	YAi+F&ASs?K:շXͱ!r@/@	AA~#t:B +iV.!D6K.ǡf%6jY0)TtEk*`;2_
qTv=zPT&cі=C}XxCpT{y>h|6ED ATLI=Z]s<.&6]l@q
)mn=6d4Mi"HMYПpѿ6E@ 
iS$><OC' !6McJhSNOFjPDh4!I t0l_BVЮ6nw%J
Ab9BعtPJhvI knvrLWЦ-H!@MҦz3BU]ǸQvi(_	M!P@m>i[Ц@&0"M@T&ΜōrdoЦG!@c ZѦ,F}!CmCg ѵ)Mܠ=}+<%nneRBm@Dצɮ)\eP\hhMm~k6!tt6hS<!\$@PhӠ@mۀ6 tz
Ц!hCHЦA
G!4'm:6EA`2MCЦpA	MjC i+Nlt"l2he)@M"1@5Ն@ѵq |*):	M; p@tm*t9*LUmneRB믿⪍?~XX?-hbJsO@	p϶-ooo-%%@wBG¶%$X;@JJ[@%qWi;cC~-Mٚ	M;͇b_~+8T/_,&XЮ6-4Ԁ"Y@wMU_~u7	rh?ll) )>$zᦖHCkSMpHCmƔ4!	DL}J֦:7Jhӕ)HpT-XCk	(iMӘ@ *貃G{^m;C?i2#n-x#tДB5jԅ*{hMR7QH䟏4MibiǏ.\n:C<i>"#=0\-\ 5=9%iJ(#-=An+u(z0w2Mm۾1$Xe[WKi92	3K @;\Wazh&A Dz>߈2WGq3U)hR榱K Dz>S+˱T+Ҭ@14̈́@	Ns`r4]ȧi)sX&c
Wr;NY+o	|'xMhӚvH 2N-E7j[TM@	.ZI7N>'-'i8
@4:M_isK>??Z39@/A_nh5kP9$f=Wirԁs۴vm>!@/:HcZ!vJcs`.m7=)!pMm?@	"P}Ky'¦vhS|pM@z&BlےYۣv-N @<:k'2(
u
Em\Tedu]yS
S]fCM`%S@<dS޻@EL}ȡ,iYpx'/t<|.a}p~	M}ۇA6d
mڅgn7m~q֟%6=K!q}%`櫨8nsbwڔ+=uAmLTu	$iu6-hjnL{G@&LY
De]~¥)wh{&=y<iyHy(ZH>֭cO)SNAN`hF@ւ)Ta{mZ$
ΈЦC9 `C@BMm|ϱ(\Mn70ظ;@6imz!/6ѾHZ‹ĽWᄚ&6um*\bz(a!H$Pఔ:
#MGP%O@`ڼx-}˵!vFQE
@My2-ImZ4a	?wTxRKnju
5V"*Qb4-&I}Cݏ̫@V8@'ɤN6=$iѲ3e3~[˯>4VxM@)MJ S$OU  @$+$!m"DVU<*+4ЦͨHj$=Tȡ>0>&6M ?n)h	-PA*U&6l}5JMd
$"99R2@Y	|4HGE@F?~T4!8e1@(G@7s'	8h0f@"M9A@Cy	hAѡ@&4*M3l0-.h	ma@cKE.!>>>|uljtЦLJ ´&iM'@,&%H?H2L˗/l3]<Q|
hv	h6庨ʊL4}*TtٍL&L@bw^J@MhӚvU(SYOv6*#&Amc&s3@,o߾
<&6?ԧՒOrnyZh#jIM-
))=IROF<*u(UFbE3Sю"67ߦDWgo9OF  )!uImzlUv I9؂@7iqj$6ݱUa.ăfXB9-%!JBi1V%6}`;G_ҩ׳\Cy@OWͿ:PtʕO?~('swUa!jڭ]@-$A@MzntHQəyM$)uܝ~:s)g@yfvгgmu){fB@KRj06.B&._2X*tӣNHVԦzjVZxL}[?'"x@ik	8	i@ ZH?ӌB~85t2yB 0(,bnB
-T@IEPᇠ[2
zU`n@tZ	1OgҷE3,_87Drmgoo-G+!mĹ=eIL4L"pW`z1<MԦqZډ$L%ck=ҝԠE.O[;M>dܮdӦR5D
i`ih>@2<&w7|Ny)>VPnGXK7I)+CP猿BbT @td-צv
7u%0`wNYϱ]֦:yq	cGێ!Ǎ3rވxP?U46UP=M
Zb]M5.A5/'qOMs?{OiSmfT9p@v$Un5VC`#}||TaAde?62N?|p$	pp)UYEiMDxi%~AW
6^@d(.MB6HiBCQtM|!?n!t]});@=3OPjfPo2<^r8Ͳ!(զBCLsX#TڞF,ϝݓ}P@$w9Ժ_PsM5rȓ&xs s^@Ќ@)<:SڔɲÆxؚke(
-9w>#m!ħ,
Y4KoXRȄf^2lQRNGpvuMy}9Ls`}}Wo.%-pIM@[*Sv"FFm8+ʝ.(c1UBmzic&	>{;hc	L\hS^_vZ☖αSzOzkREetdҘ@3\M/!5SFvr5hSFoJAHsI0>,3n+)7)	,mw-O>g.J꧉_M|$9a,Ӧx!!C>v2OH8!P_/hS]WK=m\c诎gd_'sՀ3s8|yF/&/{ǴO?Ҧ>&<l,0S%0hSi.ÙCA]t,s)jC	/ϼ5}B+R4P`6.%)H ڹ{'iSZS:~4w;]8IP4"BЦ.BJӇkPph@VZzSޠɿYʥbl_@ތ	N,ܕ15 Dol1q2 <,oU3=B S#k/HMܭhno2F5s=D~VbMOOV3BmjS]\|	 O/s^1:yP!(8b5V/?JrIk&|ԏ-	 `N='Ǘ_2DT7t:O@(3Lp)/xHN,a#Ji{mޙ*:3a\n)"K#-&
=ɦY{{TQ
.[RvrS=~i5A{!K@c{ncm|WFe	xxdG'HpBqbh? psqS?j;4K`
F疴X7+,0Mle340Y%煢/~-ܤ{A@|˸):Y
%
7&j>ђ! N h6t;6qS^\y(4E|R}&%LJc
)L
(~!΃JY@;';G&L
)ې:=|;p>$8a*T
ӳڔߢ*'UA/tY(Fp5@476"Pye?rX3mS8 YxدMv9@`!+	wKQt-7MOΛN.W4IxW_tK)	W/=5l]ǿvNmjBߢh[eO$ԄI" PAӾP넁>ףMyk)vKQ0!FK`8	nLN
KqHI7Irz?M/)Q5SٞؔV
J_)3
"~H6MxԴ}R}BũP^	j}*;ԕ]̊<@G	$X9Æ73vKPm|ho:xɶ5?)Gm6} 	n0j5I1D""t9ABgM>*R=/5w	2C;IY6BӇ!oiԷ%o1	j'_iJD iAn:M9uq7sȉGvj_(]s? r?mBE_xT>SZ|hpC˭95u5CڲugC 1SQOJ77nҦxUqJk%#gݾ`44ڻ-)!P}9.*=M7Jn!=C:iV#MhiqmSܝGx?n
nE
*a2hVC	$fst&=*Hp^TRӾ6-K.v
Xs|*RaĿncN'h/*(.Bku$BtڙwihgWKnRpod
m,H$قѱWE-^
^K`,
UM
R4ceǴWqӲASuQ;Pjk(2}tCR
( 0-8]6&wǛkk:E|4.91	wkM%+KW\p]b5dzTø^4nZ.[sjG[;G;5!@G3+?Upo<JpfB-(t|SF r\e#_i)АTGܿSLb$`,:M9}퇏K}]c`#O_~q:z4@jG!Evi١w{<*'N);2B'RMN4Aܴ*'"ጓ]!@ͦ5>M\"ӸÃd OD۸_&ݙL @T Y)fnF7-xz-	Q݅yԹٔ釾/mZꨂRc{i}9L|tt'#P q/mZa}mG8k_t*m=@ m!K:3f"MsG+
qw^)K@oځW4ޠalnӨMQ=m`ٮ7<^X\rӚZOC1wrUaG
2
ڻ3		ԜVmXXlNFNy)qg,Mntm/PR($ÁьȽ
w$/|mFײOscJk>&?׼e۠gUUUabsAJ9I f KxGcO&oP
[>q2e+.4JѭiRYD2WapHjhjOF^54G=t{lCNHIjl\FK&N9<RV}=Ԡ%!Gj>IzaLۭrB72;Kr\ >ztX N|Ǫk6~[Y;yG_$"хQ=l@(XnZ2xRLmg.eUΝ2tZSON_w#RW
eM0S!->\6qioxDu??t;M$P8Y)$=$K_w˺OHP>J\c̗3[$4zKo
 Mw]4 _%KJT(=/OK)MuZ3]+_:FU&l8ebĺUFaԲ=bИIiٽa|7A2y:C@LV(&pIRLeʚyξֲ!WYwP<`h|'*̃hAPP@.
uZ!4RY?ETr:J3$h*KSŪ
u蚲dS}TJ6_tzR_НX?oY<9Tw0t[[j>g8Dfp(f$~%}HíڋX1̑6MY]PXjhC^iKU2EP/9yi\*_tneRZBrr:m>uLy
|{g=MUy'{m#mSC4wxWGܴQh-G&ިF{/Ili@4D譪RKޠzsZp\-kK*.*Y1G+|Qv6"A\5j4v^nikӭ/vi&4=3$@9Ev1bE'dGF<MbkVXM0*1U3(5,yV#օòâѦJ6RN4]7Gtٹ贚^NKsGo{댵%XPAvc/LBNmq;qFI^[
Z~JM/͛pKB~EM}23Rg	@ad6bMڏvAѦV$8-q	v:૪6]E[3N4Oldd4H1
}@(y=tյS8?[zq.:EY#Gi%&)ЦN@nu=L6{y>8D	p@j@d3ڴۣiKn/y0و6ݼN+R%%#BhnGZMkߡk6|FBڟSJ*%%xpd3ڴۗhK{O;w{ՃFőt\V&m[5|Q4f
iӦ0ޕfn{z0و68V0$ڻqq?|Zf
i8զک#TW=lA^N*ZA[5)7L6vM-*Z\E وyHooo5^B@U&l@v;Lm5O- 20u{F/qVPNG-̇l@v{K$mH\N Ѧ7EⒶs`>hT#6hxuaK&AMo\Nyپ x3^Ѧ{mZkۉ6]t\t\B@[jt?t&meM=['OݴdT(q{?h-^@'mɚgڂ6=Cg[	~O!ϘL:.:Ùj<M3̠MӘdCЦ'xdA6K$IЖX9i;o<Cr'kۭ~K]!84M65H&;(HvS8E΃ OMh?Ԋ$<%nvOp EG'ihVmjHvuag]ШH46k;ۚMmyM_xyTi$<
:MμhSsdxK :/K|MFFЦ6hTW[4H6
gAFK#6s3!DbX4Vm:/K>XzflOE:證8
iK't4,hW>+wh I@ΩwqMjx5ѦW. ͦ[٠ۮ3>E	F@ToP\Цm4Ls8-%|&F#R!.i3M$tE[rkoS>
E?MhN
Ѧs8W,%>ŕ9Xem碜OEhSV=4
wB_6Hm~{l3*rsQ"g̬t&Ber.dMeinu_|\Am4+6Jq)7i*&|Δ5R+zH@K:bЦ>2Vhky#nhj^^G_wJEIiSfʩCMAHi\UON5hSFYR%M4F̖khMm{Q^u3㚉k(4[b=g!}::$Jm:ЦjO%$WMYwܜp@mlѦ=6Mf2!Pb,F_81ZI5mcm'[b4vh=Ԏ%9wȍO+[O@j8%?/0⩉EZpa
m+6]?[ѹ7#Vw&:ğ$+37J$Y3MbmMЦk)=jfʗ$CܭMG?QҖDS>8g[gB!@0JVe+lqTJꤼ@B5W9mw;cҏ6\DihFP${E }0fS6,^D MzN"(t	TmQᔌw`zMJ
#hS[3\J+i7rj.:[u>Z@*wt25Mby5ЦMڂYdZͅg+g[dʖFgrόEc+gi,{9maZ_R(;Iϼ6c5A:´Qy*Q;zwWskl2@p4
06ͽR*rV7n6_&lcsfR0^>}y\ ԉ!Wm*B=LVslд:1(^HUZ5-MWV.ԛE\ק^4Y;V٠)߮wiR`%t>\ئD4ּ_ݚASv>Pjn?-{y0Z~JGߚԜ>)}ASѧG.ЦMhS'[Yd)4-hᦠ<%t''AqiS7DR/L,sd<%t&)Ѧ&d6M`D&l_N?R0jR,ӂI98$4MӘҬ!u!Iv:JIIWX=6"=itZ_NE=UVEs
p(
:5ݬЦ$@1N3Q7:6:0kˀ@z<_VhFPiJk.ia駄k+Wۭ1ș|5 6@6-ڴTdp+[L
wVaHq>:g*EzV*uYp	Q-lǗ:碤lёChSi9PHI\CYup]
g[g5r#{hSmZt'Vl	̂ENA?h+r-./6:[!`M?z*$mMĽL
;2ԒfЦDI;T4})K
y;'ЖyzGb{MAyOFTكO@M*\hGB&%iK=nǛ*ȋu5"z
C0U-/9	m:pѦQ,O=AP
fʚkWu'qE3XӟyYhS_`~T-Bĝ1.5_bqi6um Hu8YF"P#	N$r)\t:ԣЦCmXi9L9
U8Ot+T6-bfMwMJ@tT,(UcҘS9tX9MWڋ=z]ֵWz+\_ָ?%?ϲ8Cc+g{iO/W@9F=`\j^
`8{TdN84MZ6$w?#r/Mzh;%&$?k%tp٢MIs<hէQk)C(ahMoY=@9کЦ	Gm:RHRou}_-(NF cBFa/̊MJ[`3e=b	>)ЦfvV 2VE[kGO`6(qy9OE1OYIh!HJ&Lٔ+a Ac+giAgRjKm99
x,K6X,ӏN|ѦIդAiŷnNIlԆ={YO3w9ҠM[
@N$UՖ؃zMfhS^g˩M͑mo8JsO.t2"G~.mbܛ#dJhSsA3D>5bxy6%[N͝
mj4hhS64”1.{UNt,Zܗ鲅oѦ<6`}U)Acq֚~]oѦ<69;>L-rfSSQ-,غԖgܪkSm}I˗kJx9%:ٺԖgjSTi>=ziW>]M ϩ(}B.67Tޟ{e3mx~gϩ(.g̃*ł^gҦ]a=EQ}]M7>Ɇ65:*TܺDQ'/ƣ+9@8q5&|.f+M<+\7s0#Qmۛ."x⨾SM
a*6U3ѡ'?L>.0dЦ޺ڔJHҭ
>
`IEzfjSO^Jt4V{Bo7
t/-+HuѦ0CgJr)訹Bh}rGxKiw)sÛ3khӬ=ڮ$TZ
4RՓC=ϋ!m:xSiڔE:/ؽѦ^1Y9Rn?:v?MLZpqB9޽S\9Ɯrki֦vvst^"dn۝)L `\~6mT7ҋj
{g@)L +'hv?MJt"tR]Yėl^z9#N@ZyԊd|"
|iĨ<O.b/5X"A5g6Ѧ:gFψꠛ^H1'G:1DjDEfm8ԖgbhS{j#HǞ9R2<D \Zy^$FZwm:~YVrkS9glL<M\mjE2z>5$h
m6AcJnm86&p?+?AZ_m*<~i:qJ<8ϱ9hY9	Ԋd|j߿'h
|gP|=;[hS+M_Ęx>4QJ8<Pmq?+CZ/mɧCbREi#Hho٭<`#ux37MHFǑ6Lɽ%nw~@q>@:y]QڴZGЦ,^)4t6]WMYM6-kЦܺakf&;tUrt_6mgU6%ڴiSinр*u2v37{Q
-!t	T`qa^1+S4wfhS\Cg̬Jm0MQT̞[VbgSt.%@t-MCiB%iSiV	mAN8iDm0'tD43]mj*B)[i&kimʗ2	J˷t9frMxљRЦgymZл\MiTLǏ]'#iaCЦ|uЦmh&pRTsd)PFjLi,L6]?Jh(]ϩT1diG)r\m:sr~\k$hS+Mf:6n.bGiGѦS6hS+CZ<mSvmXɷgRh(ZXOBM?tT$|R']bh#6huM???sϋ9Ze)$>$^;q@MIkSz%eIW
~xnhqc3Ԋd|Ц{iõi{COrvY(}WH*gS.ԿsMhy
ѦMcֈLK@zT7@)DFR'}or5v=$tdw(m#hjށTKZ_o/wš@p-!t	T`6*:3[%{'}I5r7{Q
-!t	T`6l|)'Dky|Y"ԛmFk6]n'Mu[3SٲrIw\}mMhy
ѦMCi1W7vFT?';hSx^V6"={m#PzmaswBj,mr2ie_^j9,8u\O_5!0o'65qM͑94ϷX 9)kq\޹_Yۅ6hS6Z^Cr86+P'ׯ_NGjL珣M*ԿmN*`M{ոYT?&'"e5yѦmFk^Epl,)Aӣ4MIvQ猕mzCF6M8AhF4i6MRS%5q_2i'`B{ªhU^H7mF3m	{'I2[:[F6A5Yhdn6N(粺ă8I ܭ<{Lxm:r"Ц-hUm廓G
&+g%3rw@ߘ,tХMCϰT@V:Z*5T:IÇ=6=GNitZ@~=6ANJ_XO66Mh4<mIf;8zyeЦ<*gMPjS>RͲ:!$LrUhәWڴ[Цg)4CgQ	A:w?UmFk6]n'8M/4fel-uT5@ݪhS6o5D.7
ҦHG.ubE]iÆMw`yrԿ6--(ݙPsRMHOeK?6"=Sڴ浦]mZ讚3M<
mjE2z>4=F*nr_@VY5}^6o5L+xi~mx,-Q^E2ЦRJhRk,ڴ[i|_EhRvXCxԛEVէS3Tw:N>N5$òo*B)[i&kiK6U1Twi)70uB wE:q@MI:[:x*8I wEt	M'@^4ߩM03YN 6Clh]D$@m5=gſǢMhy
ѦM=ڴfSmZpb!hSdMmڍ΃h:~mS/?C@&3hMÙl~Ѧ,G~5<|JgY?sEihVG8k^d@n6ij-g~hS+9MsB-J!@⨕d7'~;/`j#ΎDmX)x@Zy,Ԋd|kS#uxFmo%u fWhSC:MpЮL_s7CʿMhy
ѦMirTcT ndkE 6eIЦV$sL*r|!hݏ.T.%r#N67czVcq=7HS|Ht@fgQ7г~ϟHk%8@wǖ0+CZ1mrz{{{nE]);%@TQl36d3m9MS.~~~!ȳA EBJ\mعE6wBmjm'յ)w
)CH?kܳv?|r	ڴOi|XoRF'^ؕg̽3XuCƲ׸VצȒ3@zH$֦l3tc!Y֦T(_&{*qc#M
a64\JwQ2^Q>0t|2敌7Fo)M٠%$A pmK|5n:fJkЖ8J ?u
Sc2šMPjS;DN b[Q(/+tЦɂ.ljR [Դf
SKx~gU-B"y2m&!oH}&H,4@BE$;n:QyFmoljS}^'@5KK1ӟH$.67ڔi,RnFǃt;}VmՍ	MqS)} )Ϊ.6;tܻ9orhS[qs7k3jn~]MįC8l&9voA"%2H,8Aso#q<tЦgXy!L@Cqћ&"d;iѦA
G!I w۷o\xlܛM9e2hSsA3D5Ն@'-<{)AzsA#
!46:	36hx̚@Ml,m:j<ѦF!p%\s9DS	m:j<ѦF!p@-P9v^ggMG'4=:rbkKx$>MGqT#y@&{	҈8O b)d}䤇<|m:j<hdN<,ucb8iܷ{<q7rCЦȶ6eEƭ뜵&6-ڭBzԚB?w;oxlj-ܒ\AAe[Wl9җ4T-$F0nn92ǑjFXv]hA`e{@mAqVG&$J5 J7E
F1<EmljS}@"rG}s$%MS*"$?m<Ѧ6Ք-JD:bZVt5^:%ݺ
T6-bfӦ#B\#.A	4YP:#α>ug٦ʙyThqlc|L&EIJVjuXA<ѡɆ/N%1sH4eA;M
1m:_Uۘf:h
#O:>Ngv
ASzt(@Ӧ>
y2Y%tƋC[_g>la~0h_B&%c4߰?S%L=hԽ-K
nJĂhGJE\^BǴiO$sZWĩ0L{#VX3Qݝ"sdxmh>n:M~'"p$"2ԭ!qoU
{nV|}h7}כPd.hS`#pX؎63x{7i]y4w
EB m:r"kӔVC*WdG
\k:sD쿔ԭ8DNOSc8c:x5Y9Tv"^ [ytg֦Y/Dd1tVo:1weYSzaOO$./ɼ͋{SO#֦7OӼN_n
31Թ֤+u.1ҙ8LK&hJh|ǡk
ogbήNjl32s[sH?
7mmx>ia>*yJ༻@o'ghӣIJѦ_4Kn[<Lp.o8?xR<Q~`nu!"n=TYv~Wqfu.ɜ|Ëum(Qɠ Ovv/t!gANmZ͌⚨➇HRceέR]=&)Ѧ&dҩMӯpLsGyNV.:E-M5aJд7RMHFϧSf:<}
5初G#_M O[W4mq4hS[qsԦjp
g$ɧ98Erl&+(L	.5h%گMu=di7^z7r-QoHP纨6]aڴ²6T!O7Ǎu~KZ٨Taa䡓p{%\y{r~N-+h%گM,_UzI)V<O/^xWd-o|jXI?pikҦELʬv_Fh#E͘٥WŘǫÈdhT#yJYֿd4R9p6B
v'wVDPdA.7
Ҧ/
ӕX!.^eSϣ܂Ww)4|cMSYmZsGwnM0	H(<z#U@m^+$tKnc!ijS>/|;PMQhݑJQ|E-":6B8[TY>P
Xg4/s|қ{J
Gh>bMw}TzᎫrjͬx2  wUzoRK(hi}Pidj375T 08L(Yq]^eu@:U?3q&IF3O&{5Q7
~B2/Yʉč^>d,B͎LЦlM9{4ZJoYL4vXߝ6'IR6\qmۗ%@6Y6T%tI].R%dYC#V4
/>H
td7$2慦hm8
iSB~BnL94)2yaƈ1:+a^g[4+s4z
omzO34;fڔ!՘(tPMxGj
dWY-r=w$ceŻv(@MM^CSXu-mzsG6:6%tzpS`~lm'(>WZ;ddO"P($t+M8KmJtSQ575
-Ɉu9һ" niЦmا)UO<8"4&B3[m8NMWy#ڴkS׷W9=6.AոHhU>6mU
f*U݃d	(Op@L/m!ѦmIU~O8"J=<l<u9!P|)t+M!TeZPtAc Yc)}-KѦm2((mʌP{4m%c8<ZhFMU<_1];MDž8IsNݩѦu6UP'T]	m⺹p:nWK:T=h:X8(zs.Nn*_]5
nC/Y푻YiHM%WyB+z%/t:46]娫b6}>SP5׻%tۧy#%N|?MW9*mz:jJP@1?Q|/~YGEh2tM`dZ
(w#j֘	~灀nM=uЦ}rV>o譇ԩ0J_>[0}ݝ[/mpwUg\P͊nmtX)8'3-NQC Ov
ghGp9tѦjO/,[*FUf6[>)"Okv^6]uԩ6U$W"2EMH<-6^أѦ6]	?0gqt6xW)4NQs!Ot-Ewg*G-M}Y'uM9W)sc:) OUDhUZD>F{ѦE|pU]Miު3;VAhUZAX;#mʱU}#q|<M4<t
T{^rkmIjdY"´o'z0hUN[A#xok[VU=$YYjdoIs4qI\wE.q
q_wMzHrSԪ5Z<Sɞ6챗Moiz3_Q"OWu2KV=Ύp~+4?%q3+m:okӛ+qejS~\1K/n^;$ML;t>?6WlMJrLf1}pr]+6Eob
se}t7'V9:' W8%P}=nmv@q/@P=ڥkSՕ]hLrD!7NGꀓGm;)tg^ůէ
k@"OWeKd愀/Tr{{(t,nz=ߌo\Ц[?Ī\O~|&ÅnNtF*6[wD}XDVmz_xXM'Vr$,0[;쀓
Ў6Y/qyKԶ$~% 6Uc8$*C'*N7h.^f~y{<mJsHbU/P._&=KyΟWS}prXǟ%Ѧ:6PeMRn`KĄYyGEEs#}jc_rKP_GEզ[;~.A\գ&+CsQԜY*D)p~qhR,ރwg܀֦N˕rD,W~DNsiSiK5צZX;f)=͟ԡpI折UE.qq=ҝo>I?6݆mK릫zנr	FApalknG|q%җo䬶ѦPWu岨7yfJPN_Gt%yj`^IY7ԑ[v
aaDYn9#Wo<9=lotGV*O7Q_ן!}L_}fZٺU/YTYzwAWWn8t'Ӧ7uuO
5f?	wQ!\dCŪ?W >lV>k6]~]E
]h\cRL?!RJPdXKЦ m*c"Aץ]ٍ9/Bg7%mfF8/,]]C7Gw[>E}6=Vys*yKPWur7U|3z!k(T'ݿ-W$gM;@T=6+QY?]0Nݙ-
}`>"*MME_-~2':+Wׄwߤ8qV_"|^7X}X1,\j2mDǥOZ*A`t6<A8
)'nB{y:d>C$)Aq# `!O:C (t3TO'o
Ov>Z'z΁c-.F0j(n#szM&0^S;9haqމl	MScnb7d#Dڽm?$7֏H$@z MoQKu!R$>IA	l"7%2Y\z_PL#6}zA%e~Zo oA=?ND#oB} ЦT3H)1noRT"=/*zPJ}%6=fK%NU|tӣKzH]SO"U.DmolTSlO:?~I6:IL'G#OyMmjf_TMєEF5"FLNFxD@QU
ZU3l__~Cȗt>$&6h=R6T.SԶFh`@3D-ª6&lCZ>"jTMlQ.Du^C	
	Itst5$O(KR8Emz
CpH}Bvht@vA@N	9\GGF	k@gP4QHmlmrTMЦMH@ 9/H[YTЦx tҏpV]S~NUeM˘BOFr~TЦIc \v(Z@/@ (iPQm@M
]MH!6uc
*@`}cvOY
!ЦC) ?JUT?IM  r<Y:,NK)N@7 Շ F@;ԋBmRA`2@`&kՋB{CЦp@`?(L@-- pGg
U'~@M=X:@Dm{[%???'Yb 'Ц Z$vUZ_|q~¨zDmgcFgsjKR!6 T$R
U;	m^Dm<BXJg)
iKN@7}#yJ95E hA`@xzFjsj*SŀЦF!P>mCv6!'&6-m~@@8eFՑ)<
8Imz CO@碤LPt(?~)TK9k4٨4 sVʌ|6K;*'6Mob@K"+	  hS!<5צP HmdPo>+rT.D;@2AJK2vdLmj  <EdZ4ɨ0 IIF1"6 @) y:<#67 @yQܧA!)@;#n {hS	|||g瑢i=b@]\I<ЦK @SB.Jn	M&@GǏ:c.fϙ3%A i+QG@HJQU
'.	Mۀ@Gׯ_S+sf b'f?ElW:MٔADL$+FbT]uoD5vTUŘh.ԅ 8u^rZGB*/8+.lm:7Lڔ@ !NG	bzԛ$D**̱*tgJ dflt<=~
ڟq3X?cgѦH@M4g+?6mD3UPڴ @`4֜U2!6ٴQXg:j#	M@$P'ӎ6=:g%CM6ED@8L@1z.Shv[.w<o	[p7%t	 @jWhSx󕺺H%6ED@'	]M60㏻Ӏ]S&@"" " S#V|4=,Xxhӓy	h&BU,"0L<=hӓyZ	(Yv~\V'Lmz!9@>3_egT"OMOq@8L@Z"d9Ё$6e"⇇>6S pK,ǤAP=Ѧx|}'⭞B<L'縖`6=J `L@e7j{1IYI+J!\$ Q6ALLr4f|l<=hCH@c	(pڽ3e9rG&2&M @N{o8['7^T6mE2@M >TݎRg	bmY݅b6i7j
@iW]*_ƀ
ժ0爚:mti#(Ab.:S2B4LΓ=)C"t2M[(PQeF>AM:mGЦ-H@h_j&D37o	C	t	 @/Qu=DQ̍t-CˑF/T~M}؁Z@9۵~fBi^}mzn,i@pFHb溨>RԵfD٨Iu @`
T2)m
\"-LiXGTnH}{{-UݥS1ll/܃5ƾC2@@@Qq:UW+J9JײWnBb@(A@++nꙥEIy@Yf@cdrky#nǖNPTUQOUUHOZV	Ub9a.DgcsWg~m۾ }˗̯UVm@JAMgsףM @̓P6tu|@M6ڔ _8p*_B qZЦhSF@|&6E qZЦhSF@|&6E qZЦhSF@|&6E /_8Ts6E2@ @.Wo6 	R:,m6e @k;TsjP@
7Aoc|hӃH@?zSs꣍Ff6MhT@B@9rU)h(zByPhӄ&A$0ܸ&7ǖ!@!Pp˩BŸqS| ~:'ZZG T%PmYׯ_UMni&A 0Z߾}1Mh4! ؜,'w}m %PDԗ/_rL;4i @ 8
SNA8)ڴi @K }蔠iMA rN???˒;4%i @ 8ƙW}<֔@kO/Ǐڴ @A@!%q\pY@f$  CQYSe^#ЦXS @-tlh\sfْ-M&ͅg @l~cM; @	DRJ纆3X4Ui @ mu
,htt @n<(O-}mzB 0@8y0=hӓy =Ewy@pO}8M&BRЕL>W*MH @	*{o5}{{Ӧ-/Sڴi( @ ]!:pOM͑! @	(;fFJ  __&2ѼeMKFC9	1TJ'x
td @`8kH)O
pΔ@$ZpH=֯(K|?l_t2p @`mHNչ%I/_Q.+g~?b	%DrOb[SVDr&W%DrObuSVDr&H <StandardHDrObSVDr&HW.!=Home~LT~HintergrundobjekteW=u,PF&#RFDrXXDrObSVDr&f]
-
template1eearial~LT~Titelf]
|xV4B1g#Click to edit the title text formattemplate1eearial~LT~Titel<(
(@'DrObSVDr&	oeF4		 template1eearial~LT~Gliederung 1a	oeFB	xV4B1	%Click to edit the outline text format template1eearial~LT~Gliederung 1<(
(@'Second Outline Level template1eearial~LT~Gliederung 2
<(
(@'Third Outline Level template1eearial~LT~Gliederung 3<(
(@'Fourth Outline Level template1eearial~LT~Gliederung 4<(
(@'Fifth Outline Level template1eearial~LT~Gliederung 5<(
(@'Sixth Outline Level template1eearial~LT~Gliederung 6<(
(@'Seventh Outline Level template1eearial~LT~Gliederung 7<(
(@'	Eighth Outline Level template1eearial~LT~Gliederung 8<(
(@'
Ninth Outline Level template1eearial~LT~Gliederung 9<(	
(@'	DrObSVDr&ZM.gdSDrObuSVDr&ZM.gcSStandardZM.gcSDrObSVDr&ZM.gdSStandardZM.gdSxV4B17/3/00Standard	g*<(
(@'A'
1'+'DrXXDrXXsgitempgg^template1eearial~LT~GliederungDrMPJoeMnKFdDrMLDrObuSVDr&Ld	StandardLdDrObSVDr&.`_Ld7Standard.`_LdlxV4B1WStandard
g*<(
(@'A'+'''DrObSVDr&
A)0-
template1eearial~LT~Titel
A)0pxV4B1[Click to move the slidetemplate1eearial~LT~Titel<(
(@'DrObSVDr&3G"]/
template1eearial~LT~Notizen3G"]yxV4B1dClick to edit the notes formattemplate1eearial~LT~Notizen<(
(@'DrXXsgitempggZtemplate1eearial~LT~GliederungDrPgcJoeMnKFdDrML8DrMD,DrXXggFHome~LT~GliederungDrPgyQyJoeM$mVTDrML8DrMD,DrObvtSVDr&[O;
;Standard[O;tsBMZ6(SD$s$x^iEBC0ChAC(P!!}O)ʐ:V! ,#ׯ~۷o[[>??մ?.K@@3U tۛ\4_߯_jLJkTQo@`<xƔ&E/=	tQ*#4)@
$V"&nT{w$G"6
e.*8&z-X+8Jwө,;vvЦ5 P&I	PU
Vp$lЦx ZzFУD(@ &iLQk@`XJo
Hr?ٟ!Цc; (Ur	]
ƻh p!6 ЎRz(XF-TC i&k@K:dT醀 tx|*-ݦbWQ;4@6a" PCl
No)	MSFA=mUCβ|@VБN;VȠ_ݱ(	M#@ m-fd)CMgiNnhu+,'7M)D!6b)	XįMRE#7v#	M ¥|t*n=
B4iix$Ҳ_rQO@F(f2h;6uY@ЦDpI@|	UzCݥR)&6-m~"tD!L	Ц!D%!~}'!`MmjM O`*m!䩧K]J@6?@n߾}k%Fh]h(|Bn@f$h1\XG@TXIt]ߥd?R@".@hL4hhs{ЦkS: `Fa%@Ԭs@EZ@+,#7^:Omƴp	59V=h7hSo>ac:BFyzC@j(%6tʇ@h*HI@U2F?Hكh@:4
U('L#6% sЦ4 Xp. "X"6-dl
L8XO@Cl<4Ц>B W84_Q"O 0tgJ_$,$ad@@$l3](B@"u
PЦEe!P
		hs"6E|!s:%\PlX7dOb`5Q芀3F硖Em\T	|͕42=C`(l>B'y >> ҄Z' όх% nVU	IqD={ծI!0tV2pʳ,n")2@;?M@#?NzHq7c+j
ztGOV4ΉKee~nmyfYThGۨ:Y'6-4	poԵHҷ%_)*5,gЩ롄ʅ"6
e.*JJ( '	(=6,'3鰚tXcTI[!0t \(4$DjH*'e%6jYWMn-^5+=H]h]D$(x<_&SMaԂ
5V{AǦH4@6@"	 0‡#h+xFnN2 4yibP0Up1
~ia(X4Lm:
E	1ZķԹTpxszM3Y@ ݝY!hZ!\z)DTa6,%6]!;(vS_?8<)"{WS`zKlh_JHBmĐ49H$i9;v?F*OFTЦx ɪM~&u)4Ũ/RA5e,WdkHmj S^kJ[,x6imzx"rAabz)YԼ-V&
	MAN N;MQ*.Ц8 @DV2PPIlЦx @vec	Z}}@8iqB ]B!tiiEs=ԋ%*Hv{0gK󘛤݀+@V>m6~||x!#tʖӘH@.6C"i)&.feԚ"6-en2m6]HN)0rWC(.M]J@8*D`'fC "ЦEM3!K	$@`&p}̐	YAi+F&ASs?K:շXͱ!r@/@	AA~#t:B +iV.!D6K.ǡf%6jY0)TtEk*`;2_
qTv=zPT&cі=C}XxCpT{y>h|6ED ATLI=Z]s<.&6]l@q
)mn=6d4Mi"HMYПpѿ6E@ 
iS$><OC' !6McJhSNOFjPDh4!I t0l_BVЮ6nw%J
Ab9BعtPJhvI knvrLWЦ-H!@MҦz3BU]ǸQvi(_	M!P@m>i[Ц@&0"M@T&ΜōrdoЦG!@c ZѦ,F}!CmCg ѵ)Mܠ=}+<%nneRBm@Dצɮ)\eP\hhMm~k6!tt6hS<!\$@PhӠ@mۀ6 tz
Ц!hCHЦA
G!4'm:6EA`2MCЦpA	MjC i+Nlt"l2he)@M"1@5Ն@ѵq |*):	M; p@tm*t9*LUmneRB믿⪍?~XX?-hbJsO@	p϶-ooo-%%@wBG¶%$X;@JJ[@%qWi;cC~-Mٚ	M;͇b_~+8T/_,&XЮ6-4Ԁ"Y@wMU_~u7	rh?ll) )>$zᦖHCkSMpHCmƔ4!	DL}J֦:7Jhӕ)HpT-XCk	(iMӘ@ *貃G{^m;C?i2#n-x#tДB5jԅ*{hMR7QH䟏4MibiǏ.\n:C<i>"#=0\-\ 5=9%iJ(#-=An+u(z0w2Mm۾1$Xe[WKi92	3K @;\Wazh&A Dz>߈2WGq3U)hR榱K Dz>S+˱T+Ҭ@14̈́@	Ns`r4]ȧi)sX&c
Wr;NY+o	|'xMhӚvH 2N-E7j[TM@	.ZI7N>'-'i8
@4:M_isK>??Z39@/A_nh5kP9$f=Wirԁs۴vm>!@/:HcZ!vJcs`.m7=)!pMm?@	"P}Ky'¦vhS|pM@z&BlےYۣv-N @<:k'2(
u
Em\Tedu]yS
S]fCM`%S@<dS޻@EL}ȡ,iYpx'/t<|.a}p~	M}ۇA6d
mڅgn7m~q֟%6=K!q}%`櫨8nsbwڔ+=uAmLTu	$iu6-hjnL{G@&LY
De]~¥)wh{&=y<iyHy(ZH>֭cO)SNAN`hF@ւ)Ta{mZ$
ΈЦC9 `C@BMm|ϱ(\Mn70ظ;@6imz!/6ѾHZ‹ĽWᄚ&6um*\bz(a!H$Pఔ:
#MGP%O@`ڼx-}˵!vFQE
@My2-ImZ4a	?wTxRKnju
5V"*Qb4-&I}Cݏ̫@V8@'ɤN6=$iѲ3e3~[˯>4VxM@)MJ S$OU  @$+$!m"DVU<*+4ЦͨHj$=Tȡ>0>&6M ?n)h	-PA*U&6l}5JMd
$"99R2@Y	|4HGE@F?~T4!8e1@(G@7s'	8h0f@"M9A@Cy	hAѡ@&4*M3l0-.h	ma@cKE.!>>>|uljtЦLJ ´&iM'@,&%H?H2L˗/l3]<Q|
hv	h6庨ʊL4}*TtٍL&L@bw^J@MhӚvU(SYOv6*#&Amc&s3@,o߾
<&6?ԧՒOrnyZh#jIM-
))=IROF<*u(UFbE3Sю"67ߦDWgo9OF  )!uImzlUv I9؂@7iqj$6ݱUa.ăfXB9-%!JBi1V%6}`;G_ҩ׳\Cy@OWͿ:PtʕO?~('swUa!jڭ]@-$A@MzntHQəyM$)uܝ~:s)g@yfvгgmu){fB@KRj06.B&._2X*tӣNHVԦzjVZxL}[?'"x@ik	8	i@ ZH?ӌB~85t2yB 0(,bnB
-T@IEPᇠ[2
zU`n@tZ	1OgҷE3,_87Drmgoo-G+!mĹ=eIL4L"pW`z1<MԦqZډ$L%ck=ҝԠE.O[;M>dܮdӦR5D
i`ih>@2<&w7|Ny)>VPnGXK7I)+CP猿BbT @td-צv
7u%0`wNYϱ]֦:yq	cGێ!Ǎ3rވxP?U46UP=M
Zb]M5.A5/'qOMs?{OiSmfT9p@v$Un5VC`#}||TaAde?62N?|p$	pp)UYEiMDxi%~AW
6^@d(.MB6HiBCQtM|!?n!t]});@=3OPjfPo2<^r8Ͳ!(զBCLsX#TڞF,ϝݓ}P@$w9Ժ_PsM5rȓ&xs s^@Ќ@)<:SڔɲÆxؚke(
-9w>#m!ħ,
Y4KoXRȄf^2lQRNGpvuMy}9Ls`}}Wo.%-pIM@[*Sv"FFm8+ʝ.(c1UBmzic&	>{;hc	L\hS^_vZ☖αSzOzkREetdҘ@3\M/!5SFvr5hSFoJAHsI0>,3n+)7)	,mw-O>g.J꧉_M|$9a,Ӧx!!C>v2OH8!P_/hS]WK=m\c诎gd_'sՀ3s8|yF/&/{ǴO?Ҧ>&<l,0S%0hSi.ÙCA]t,s)jC	/ϼ5}B+R4P`6.%)H ڹ{'iSZS:~4w;]8IP4"BЦ.BJӇkPph@VZzSޠɿYʥbl_@ތ	N,ܕ15 Dol1q2 <,oU3=B S#k/HMܭhno2F5s=D~VbMOOV3BmjS]\|	 O/s^1:yP!(8b5V/?JrIk&|ԏ-	 `N='Ǘ_2DT7t:O@(3Lp)/xHN,a#Ji{mޙ*:3a\n)"K#-&
=ɦY{{TQ
.[RvrS=~i5A{!K@c{ncm|WFe	xxdG'HpBqbh? psqS?j;4K`
F疴X7+,0Mle340Y%煢/~-ܤ{A@|˸):Y
%
7&j>ђ! N h6t;6qS^\y(4E|R}&%LJc
)L
(~!΃JY@;';G&L
)ې:=|;p>$8a*T
ӳڔߢ*'UA/tY(Fp5@476"Pye?rX3mS8 YxدMv9@`!+	wKQt-7MOΛN.W4IxW_tK)	W/=5l]ǿvNmjBߢh[eO$ԄI" PAӾP넁>ףMyk)vKQ0!FK`8	nLN
KqHI7Irz?M/)Q5SٞؔV
J_)3
"~H6MxԴ}R}BũP^	j}*;ԕ]̊<@G	$X9Æ73vKPm|ho:xɶ5?)Gm6} 	n0j5I1D""t9ABgM>*R=/5w	2C;IY6BӇ!oiԷ%o1	j'_iJD iAn:M9uq7sȉGvj_(]s? r?mBE_xT>SZ|hpC˭95u5CڲugC 1SQOJ77nҦxUqJk%#gݾ`44ڻ-)!P}9.*=M7Jn!=C:iV#MhiqmSܝGx?n
nE
*a2hVC	$fst&=*Hp^TRӾ6-K.v
Xs|*RaĿncN'h/*(.Bku$BtڙwihgWKnRpod
m,H$قѱWE-^
^K`,
UM
R4ceǴWqӲASuQ;Pjk(2}tCR
( 0-8]6&wǛkk:E|4.91	wkM%+KW\p]b5dzTø^4nZ.[sjG[;G;5!@G3+?Upo<JpfB-(t|SF r\e#_i)АTGܿSLb$`,:M9}퇏K}]c`#O_~q:z4@jG!Evi١w{<*'N);2B'RMN4Aܴ*'"ጓ]!@ͦ5>M\"ӸÃd OD۸_&ݙL @T Y)fnF7-xz-	Q݅yԹٔ釾/mZꨂRc{i}9L|tt'#P q/mZa}mG8k_t*m=@ m!K:3f"MsG+
qw^)K@oځW4ޠalnӨMQ=m`ٮ7<^X\rӚZOC1wrUaG
2
ڻ3		ԜVmXXlNFNy)qg,Mntm/PR($ÁьȽ
w$/|mFײOscJk>&?׼e۠gUUUabsAJ9I f KxGcO&oP
[>q2e+.4JѭiRYD2WapHjhjOF^54G=t{lCNHIjl\FK&N9<RV}=Ԡ%!Gj>IzaLۭrB72;Kr\ >ztX N|Ǫk6~[Y;yG_$"хQ=l@(XnZ2xRLmg.eUΝ2tZSON_w#RW
eM0S!->\6qioxDu??t;M$P8Y)$=$K_w˺OHP>J\c̗3[$4zKo
 Mw]4 _%KJT(=/OK)MuZ3]+_:FU&l8ebĺUFaԲ=bИIiٽa|7A2y:C@LV(&pIRLeʚyξֲ!WYwP<`h|'*̃hAPP@.
uZ!4RY?ETr:J3$h*KSŪ
u蚲dS}TJ6_tzR_НX?oY<9Tw0t[[j>g8Dfp(f$~%}HíڋX1̑6MY]PXjhC^iKU2EP/9yi\*_tneRZBrr:m>uLy
|{g=MUy'{m#mSC4wxWGܴQh-G&ިF{/Ili@4D譪RKޠzsZp\-kK*.*Y1G+|Qv6"A\5j4v^nikӭ/vi&4=3$@9Ev1bE'dGF<MbkVXM0*1U3(5,yV#օòâѦJ6RN4]7Gtٹ贚^NKsGo{댵%XPAvc/LBNmq;qFI^[
Z~JM/͛pKB~EM}23Rg	@ad6bMڏvAѦV$8-q	v:૪6]E[3N4Oldd4H1
}@(y=tյS8?[zq.:EY#Gi%&)ЦN@nu=L6{y>8D	p@j@d3ڴۣiKn/y0و6ݼN+R%%#BhnGZMkߡk6|FBڟSJ*%%xpd3ڴۗhK{O;w{ՃFőt\V&m[5|Q4f
iӦ0ޕfn{z0و68V0$ڻqq?|Zf
i8զک#TW=lA^N*ZA[5)7L6vM-*Z\E وyHooo5^B@U&l@v;Lm5O- 20u{F/qVPNG-̇l@v{K$mH\N Ѧ7EⒶs`>hT#6hxuaK&AMo\Nyپ x3^Ѧ{mZkۉ6]t\t\B@[jt?t&meM=['OݴdT(q{?h-^@'mɚgڂ6=Cg[	~O!ϘL:.:Ùj<M3̠MӘdCЦ'xdA6K$IЖX9i;o<Cr'kۭ~K]!84M65H&;(HvS8E΃ OMh?Ԋ$<%nvOp EG'ihVmjHvuag]ШH46k;ۚMmyM_xyTi$<
:MμhSsdxK :/K|MFFЦ6hTW[4H6
gAFK#6s3!DbX4Vm:/K>XzflOE:證8
iK't4,hW>+wh I@ΩwqMjx5ѦW. ͦ[٠ۮ3>E	F@ToP\Цm4Ls8-%|&F#R!.i3M$tE[rkoS>
E?MhN
Ѧs8W,%>ŕ9Xem碜OEhSV=4
wB_6Hm~{l3*rsQ"g̬t&Ber.dMeinu_|\Am4+6Jq)7i*&|Δ5R+zH@K:bЦ>2Vhky#nhj^^G_wJEIiSfʩCMAHi\UON5hSFYR%M4F̖khMm{Q^u3㚉k(4[b=g!}::$Jm:ЦjO%$WMYwܜp@mlѦ=6Mf2!Pb,F_81ZI5mcm'[b4vh=Ԏ%9wȍO+[O@j8%?/0⩉EZpa
m+6]?[ѹ7#Vw&:ğ$+37J$Y3MbmMЦk)=jfʗ$CܭMG?QҖDS>8g[gB!@0JVe+lqTJꤼ@B5W9mw;cҏ6\DihFP${E }0fS6,^D MzN"(t	TmQᔌw`zMJ
#hS[3\J+i7rj.:[u>Z@*wt25Mby5ЦMڂYdZͅg+g[dʖFgrόEc+gi,{9maZ_R(;Iϼ6c5A:´Qy*Q;zwWskl2@p4
06ͽR*rV7n6_&lcsfR0^>}y\ ԉ!Wm*B=LVslд:1(^HUZ5-MWV.ԛE\ק^4Y;V٠)߮wiR`%t>\ئD4ּ_ݚASv>Pjn?-{y0Z~JGߚԜ>)}ASѧG.ЦMhS'[Yd)4-hᦠ<%t''AqiS7DR/L,sd<%t&)Ѧ&d6M`D&l_N?R0jR,ӂI98$4MӘҬ!u!Iv:JIIWX=6"=itZ_NE=UVEs
p(
:5ݬЦ$@1N3Q7:6:0kˀ@z<_VhFPiJk.ia駄k+Wۭ1ș|5 6@6-ڴTdp+[L
wVaHq>:g*EzV*uYp	Q-lǗ:碤lёChSi9PHI\CYup]
g[g5r#{hSmZt'Vl	̂ENA?h+r-./6:[!`M?z*$mMĽL
;2ԒfЦDI;T4})K
y;'ЖyzGb{MAyOFTكO@M*\hGB&%iK=nǛ*ȋu5"z
C0U-/9	m:pѦQ,O=AP
fʚkWu'qE3XӟyYhS_`~T-Bĝ1.5_bqi6um Hu8YF"P#	N$r)\t:ԣЦCmXi9L9
U8Ot+T6-bfMwMJ@tT,(UcҘS9tX9MWڋ=z]ֵWz+\_ָ?%?ϲ8Cc+g{iO/W@9F=`\j^
`8{TdN84MZ6$w?#r/Mzh;%&$?k%tp٢MIs<hէQk)C(ahMoY=@9کЦ	Gm:RHRou}_-(NF cBFa/̊MJ[`3e=b	>)ЦfvV 2VE[kGO`6(qy9OE1OYIh!HJ&Lٔ+a Ac+giAgRjKm99
x,K6X,ӏN|ѦIդAiŷnNIlԆ={YO3w9ҠM[
@N$UՖ؃zMfhS^g˩M͑mo8JsO.t2"G~.mbܛ#dJhSsA3D>5bxy6%[N͝
mj4hhS64”1.{UNt,Zܗ鲅oѦ<6`}U)Acq֚~]oѦ<69;>L-rfSSQ-,غԖgܪkSm}I˗kJx9%:ٺԖgjSTi>=ziW>]M ϩ(}B.67Tޟ{e3mx~gϩ(.g̃*ł^gҦ]a=EQ}]M7>Ɇ65:*TܺDQ'/ƣ+9@8q5&|.f+M<+\7s0#Qmۛ."x⨾SM
a*6U3ѡ'?L>.0dЦ޺ڔJHҭ
>
`IEzfjSO^Jt4V{Bo7
t/-+HuѦ0CgJr)訹Bh}rGxKiw)sÛ3khӬ=ڮ$TZ
4RՓC=ϋ!m:xSiڔE:/ؽѦ^1Y9Rn?:v?MLZpqB9޽S\9Ɯrki֦vvst^"dn۝)L `\~6mT7ҋj
{g@)L +'hv?MJt"tR]Yėl^z9#N@ZyԊd|"
|iĨ<O.b/5X"A5g6Ѧ:gFψꠛ^H1'G:1DjDEfm8ԖgbhS{j#HǞ9R2<D \Zy^$FZwm:~YVrkS9glL<M\mjE2z>5$h
m6AcJnm86&p?+?AZ_m*<~i:qJ<8ϱ9hY9	Ԋd|j߿'h
|gP|=;[hS+M_Ęx>4QJ8<Pmq?+CZ/mɧCbREi#Hho٭<`#ux37MHFǑ6Lɽ%nw~@q>@:y]QڴZGЦ,^)4t6]WMYM6-kЦܺakf&;tUrt_6mgU6%ڴiSinр*u2v37{Q
-!t	T`qa^1+S4wfhS\Cg̬Jm0MQT̞[VbgSt.%@t-MCiB%iSiV	mAN8iDm0'tD43]mj*B)[i&kimʗ2	J˷t9frMxљRЦgymZл\MiTLǏ]'#iaCЦ|uЦmh&pRTsd)PFjLi,L6]?Jh(]ϩT1diG)r\m:sr~\k$hS+Mf:6n.bGiGѦS6hS+CZ<mSvmXɷgRh(ZXOBM?tT$|R']bh#6huM???sϋ9Ze)$>$^;q@MIkSz%eIW
~xnhqc3Ԋd|Ц{iõi{COrvY(}WH*gS.ԿsMhy
ѦMcֈLK@zT7@)DFR'}or5v=$tdw(m#hjށTKZ_o/wš@p-!t	T`6*:3[%{'}I5r7{Q
-!t	T`6l|)'Dky|Y"ԛmFk6]n'Mu[3SٲrIw\}mMhy
ѦMCi1W7vFT?';hSx^V6"={m#PzmaswBj,mr2ie_^j9,8u\O_5!0o'65qM͑94ϷX 9)kq\޹_Yۅ6hS6Z^Cr86+P'ׯ_NGjL珣M*ԿmN*`M{ոYT?&'"e5yѦmFk^Epl,)Aӣ4MIvQ猕mzCF6M8AhF4i6MRS%5q_2i'`B{ªhU^H7mF3m	{'I2[:[F6A5Yhdn6N(粺ă8I ܭ<{Lxm:r"Ц-hUm廓G
&+g%3rw@ߘ,tХMCϰT@V:Z*5T:IÇ=6=GNitZ@~=6ANJ_XO66Mh4<mIf;8zyeЦ<*gMPjS>RͲ:!$LrUhәWڴ[Цg)4CgQ	A:w?UmFk6]n'8M/4fel-uT5@ݪhS6o5D.7
ҦHG.ubE]iÆMw`yrԿ6--(ݙPsRMHOeK?6"=Sڴ浦]mZ讚3M<
mjE2z>4=F*nr_@VY5}^6o5L+xi~mx,-Q^E2ЦRJhRk,ڴ[i|_EhRvXCxԛEVէS3Tw:N>N5$òo*B)[i&kiK6U1Twi)70uB wE:q@MI:[:x*8I wEt	M'@^4ߩM03YN 6Clh]D$@m5=gſǢMhy
ѦM=ڴfSmZpb!hSdMmڍ΃h:~mS/?C@&3hMÙl~Ѧ,G~5<|JgY?sEihVG8k^d@n6ij-g~hS+9MsB-J!@⨕d7'~;/`j#ΎDmX)x@Zy,Ԋd|kS#uxFmo%u fWhSC:MpЮL_s7CʿMhy
ѦMirTcT ndkE 6eIЦV$sL*r|!hݏ.T.%r#N67czVcq=7HS|Ht@fgQ7г~ϟHk%8@wǖ0+CZ1mrz{{{nE]);%@TQl36d3m9MS.~~~!ȳA EBJ\mعE6wBmjm'յ)w
)CH?kܳv?|r	ڴOi|XoRF'^ؕg̽3XuCƲ׸VצȒ3@zH$֦l3tc!Y֦T(_&{*qc#M
a64\JwQ2^Q>0t|2敌7Fo)M٠%$A pmK|5n:fJkЖ8J ?u
Sc2šMPjS;DN b[Q(/+tЦɂ.ljR [Դf
SKx~gU-B"y2m&!oH}&H,4@BE$;n:QyFmoljS}^'@5KK1ӟH$.67ڔi,RnFǃt;}VmՍ	MqS)} )Ϊ.6;tܻ9orhS[qs7k3jn~]MįC8l&9voA"%2H,8Aso#q<tЦgXy!L@Cqћ&"d;iѦA
G!I w۷o\xlܛM9e2hSsA3D5Ն@'-<{)AzsA#
!46:	36hx̚@Ml,m:j<ѦF!p%\s9DS	m:j<ѦF!p@-P9v^ggMG'4=:rbkKx$>MGqT#y@&{	҈8O b)d}䤇<|m:j<hdN<,ucb8iܷ{<q7rCЦȶ6eEƭ뜵&6-ڭBzԚB?w;oxlj-ܒ\AAe[Wl9җ4T-$F0nn92ǑjFXv]hA`e{@mAqVG&$J5 J7E
F1<EmljS}@"rG}s$%MS*"$?m<Ѧ6Ք-JD:bZVt5^:%ݺ
T6-bfӦ#B\#.A	4YP:#α>ug٦ʙyThqlc|L&EIJVjuXA<ѡɆ/N%1sH4eA;M
1m:_Uۘf:h
#O:>Ngv
ASzt(@Ӧ>
y2Y%tƋC[_g>la~0h_B&%c4߰?S%L=hԽ-K
nJĂhGJE\^BǴiO$sZWĩ0L{#VX3Qݝ"sdxmh>n:M~'"p$"2ԭ!qoU
{nV|}h7}כPd.hS`#pX؎63x{7i]y4w
EB m:r"kӔVC*WdG
\k:sD쿔ԭ8DNOSc8c:x5Y9Tv"^ [ytg֦Y/Dd1tVo:1weYSzaOO$./ɼ͋{SO#֦7OӼN_n
31Թ֤+u.1ҙ8LK&hJh|ǡk
ogbήNjl32s[sH?
7mmx>ia>*yJ༻@o'ghӣIJѦ_4Kn[<Lp.o8?xR<Q~`nu!"n=TYv~Wqfu.ɜ|Ëum(Qɠ Ovv/t!gANmZ͌⚨➇HRceέR]=&)Ѧ&dҩMӯpLsGyNV.:E-M5aJд7RMHFϧSf:<}
5初G#_M O[W4mq4hS[qsԦjp
g$ɧ98Erl&+(L	.5h%گMu=di7^z7r-QoHP纨6]aڴ²6T!O7Ǎu~KZ٨Taa䡓p{%\y{r~N-+h%گM,_UzI)V<O/^xWd-o|jXI?pikҦELʬv_Fh#E͘٥WŘǫÈdhT#yJYֿd4R9p6B
v'wVDPdA.7
Ҧ/
ӕX!.^eSϣ܂Ww)4|cMSYmZsGwnM0	H(<z#U@m^+$tKnc!ijS>/|;PMQhݑJQ|E-":6B8[TY>P
Xg4/s|қ{J
Gh>bMw}TzᎫrjͬx2  wUzoRK(hi}Pidj375T 08L(Yq]^eu@:U?3q&IF3O&{5Q7
~B2/Yʉč^>d,B͎LЦlM9{4ZJoYL4vXߝ6'IR6\qmۗ%@6Y6T%tI].R%dYC#V4
/>H
td7$2慦hm8
iSB~BnL94)2yaƈ1:+a^g[4+s4z
omzO34;fڔ!՘(tPMxGj
dWY-r=w$ceŻv(@MM^CSXu-mzsG6:6%tzpS`~lm'(>WZ;ddO"P($t+M8KmJtSQ575
-Ɉu9һ" niЦmا)UO<8"4&B3[m8NMWy#ڴkS׷W9=6.AոHhU>6mU
f*U݃d	(Op@L/m!ѦmIU~O8"J=<l<u9!P|)t+M!TeZPtAc Yc)}-KѦm2((mʌP{4m%c8<ZhFMU<_1];MDž8IsNݩѦu6UP'T]	m⺹p:nWK:T=h:X8(zs.Nn*_]5
nC/Y푻YiHM%WyB+z%/t:46]娫b6}>SP5׻%tۧy#%N|?MW9*mz:jJP@1?Q|/~YGEh2tM`dZ
(w#j֘	~灀nM=uЦ}rV>o譇ԩ0J_>[0}ݝ[/mpwUg\P͊nmtX)8'3-NQC Ov
ghGp9tѦjO/,[*FUf6[>)"Okv^6]uԩ6U$W"2EMH<-6^أѦ6]	?0gqt6xW)4NQs!Ot-Ewg*G-M}Y'uM9W)sc:) OUDhUZD>F{ѦE|pU]Miު3;VAhUZAX;#mʱU}#q|<M4<t
T{^rkmIjdY"´o'z0hUN[A#xok[VU=$YYjdoIs4qI\wE.q
q_wMzHrSԪ5Z<Sɞ6챗Moiz3_Q"OWu2KV=Ύp~+4?%q3+m:okӛ+qejS~\1K/n^;$ML;t>?6WlMJrLf1}pr]+6Eob
se}t7'V9:' W8%P}=nmv@q/@P=ڥkSՕ]hLrD!7NGꀓGm;)tg^ůէ
k@"OWeKd愀/Tr{{(t,nz=ߌo\Ц[?Ī\O~|&ÅnNtF*6[wD}XDVmz_xXM'Vr$,0[;쀓
Ў6Y/qyKԶ$~% 6Uc8$*C'*N7h.^f~y{<mJsHbU/P._&=KyΟWS}prXǟ%Ѧ:6PeMRn`KĄYyGEEs#}jc_rKP_GEզ[;~.A\գ&+CsQԜY*D)p~qhR,ރwg܀֦N˕rD,W~DNsiSiK5צZX;f)=͟ԡpI折UE.qq=ҝo>I?6݆mK릫zנr	FApalknG|q%җo䬶ѦPWu岨7yfJPN_Gt%yj`^IY7ԑ[v
aaDYn9#Wo<9=lotGV*O7Q_ן!}L_}fZٺU/YTYzwAWWn8t'Ӧ7uuO
5f?	wQ!\dCŪ?W >lV>k6]~]E
]h\cRL?!RJPdXKЦ m*c"Aץ]ٍ9/Bg7%mfF8/,]]C7Gw[>E}6=Vys*yKPWur7U|3z!k(T'ݿ-W$gM;@T=6+QY?]0Nݙ-
}`>"*MME_-~2':+Wׄwߤ8qV_"|^7X}X1,\j2mDǥOZ*A`t6<A8
)'nB{y:d>C$)Aq# `!O:C (t3TO'o
Ov>Z'z΁c-.F0j(n#szM&0^S;9haqމl	MScnb7d#Dڽm?$7֏H$@z MoQKu!R$>IA	l"7%2Y\z_PL#6}zA%e~Zo oA=?ND#oB} ЦT3H)1noRT"=/*zPJ}%6=fK%NU|tӣKzH]SO"U.DmolTSlO:?~I6:IL'G#OyMmjf_TMєEF5"FLNFxD@QU
ZU3l__~Cȗt>$&6h=R6T.SԶFh`@3D-ª6&lCZ>"jTMlQ.Du^C	
	Itst5$O(KR8Emz
CpH}Bvht@vA@N	9\GGF	k@gP4QHmlmrTMЦMH@ 9/H[YTЦx tҏpV]S~NUeM˘BOFr~TЦIc \v(Z@/@ (iPQm@M
]MH!6uc
*@`}cvOY
!ЦC) ?JUT?IM  r<Y:,NK)N@7 Շ F@;ԋBmRA`2@`&kՋB{CЦp@`?(L@-- pGg
U'~@M=X:@Dm{[%???'Yb 'Ц Z$vUZ_|q~¨zDmgcFgsjKR!6 T$R
U;	m^Dm<BXJg)
iKN@7}#yJ95E hA`@xzFjsj*SŀЦF!P>mCv6!'&6-m~@@8eFՑ)<
8Imz CO@碤LPt(?~)TK9k4٨4 sVʌ|6K;*'6Mob@K"+	  hS!<5צP HmdPo>+rT.D;@2AJK2vdLmj  <EdZ4ɨ0 IIF1"6 @) y:<#67 @yQܧA!)@;#n {hS	|||g瑢i=b@]\I<ЦK @SB.Jn	M&@GǏ:c.fϙ3%A i+QG@HJQU
'.	Mۀ@Gׯ_S+sf b'f?ElW:MٔADL$+FbT]uoD5vTUŘh.ԅ 8u^rZGB*/8+.lm:7Lڔ@ !NG	bzԛ$D**̱*tgJ dflt<=~
ڟq3X?cgѦH@M4g+?6mD3UPڴ @`4֜U2!6ٴQXg:j#	M@$P'ӎ6=:g%CM6ED@8L@1z.Shv[.w<o	[p7%t	 @jWhSx󕺺H%6ED@'	]M60㏻Ӏ]S&@"" " S#V|4=,Xxhӓy	h&BU,"0L<=hӓyZ	(Yv~\V'Lmz!9@>3_egT"OMOq@8L@Z"d9Ё$6e"⇇>6S pK,ǤAP=Ѧx|}'⭞B<L'縖`6=J `L@e7j{1IYI+J!\$ Q6ALLr4f|l<=hCH@c	(pڽ3e9rG&2&M @N{o8['7^T6mE2@M >TݎRg	bmY݅b6i7j
@iW]*_ƀ
ժ0爚:mti#(Ab.:S2B4LΓ=)C"t2M[(PQeF>AM:mGЦ-H@h_j&D37o	C	t	 @/Qu=DQ̍t-CˑF/T~M}؁Z@9۵~fBi^}mzn,i@pFHb溨>RԵfD٨Iu @`
T2)m
\"-LiXGTnH}{{-UݥS1ll/܃5ƾC2@@@Qq:UW+J9JײWnBb@(A@++nꙥEIy@Yf@cdrky#nǖNPTUQOUUHOZV	Ub9a.DgcsWg~m۾ }˗̯UVm@JAMgsףM @̓P6tu|@M6ڔ _8p*_B qZЦhSF@|&6E qZЦhSF@|&6E qZЦhSF@|&6E /_8Ts6E2@ @.Wo6 	R:,m6e @k;TsjP@
7Aoc|hӃH@?zSs꣍Ff6MhT@B@9rU)h(zByPhӄ&A$0ܸ&7ǖ!@!Pp˩BŸqS| ~:'ZZG T%PmYׯ_UMni&A 0Z߾}1Mh4! ؜,'w}m %PDԗ/_rL;4i @ 8
SNA8)ڴi @K }蔠iMA rN???˒;4%i @ 8ƙW}<֔@kO/Ǐڴ @A@!%q\pY@f$  CQYSe^#ЦXS @-tlh\sfْ-M&ͅg @l~cM; @	DRJ纆3X4Ui @ mu
,htt @n<(O-}mzB 0@8y0=hӓy =Ewy@pO}8M&BRЕL>W*MH @	*{o5}{{Ӧ-/Sڴi( @ ]!:pOM͑! @	(;fFJ  __&2ѼeMKFC9	1TJ'x
td @`8kH)O
pΔ@$ZpH=֯(K|?l_t2p @`mHNչ%I/_Q.+g~?b	%DrObSVDr&)z=:fS

Standard@)z=:fS!xV4B1
Steve Lord ()Standard<(
(@'A'1'
+''	'''
SGI File System EngineeringStandard<(
(@'A'1'
+''	'''DrOb$SVDr&jxE;
StandardjxE;xV4B1Porting XFS to Linux
Home~LT~Titel<(
(@''	DrObSVDr&<!!?MStandard<!!?MxV4B1lStandardg*<(
(@'A'1'+''
'DrObSVDr&3]3!&
Home~LT~Titelm3]3NxV4B19 
Home~LT~Titel<(
(@'DrXX OLS 2000ggNHome~LT~GliederungDrPgJoeMnKFdDrML8DrMD,DrOb<SVDr&h@*DrObSVDr&N/Fq\#"Home~LT~NotizenN/Fq\gxV4B1RHome~LT~Notizeng*<(
(@'''DrXX OLS 2000ggFHome~LT~GliederungDrPg4JoeM$mVTDrML8DrMD,DrObSVDr&3]4!
Home~LT~Titelx3]4YxV4B1DIntroduction
Home~LT~Titel<(
(@'DrOboSVDr&r8eL(Home~LT~Gliederung 1
r8eLxV4B1
Project goalsHome~LT~Gliederung 1	<(
(@'
What is XFSHome~LT~Gliederung 1	<(
(@'OS Interface differencesHome~LT~Gliederung 1	<(
(@'	Page BufsHome~LT~Gliederung 1	<(
(@'	Current StatusHome~LT~Gliederung 1	<(
(@'Future WorkHome~LT~Gliederung 1	<(
(@'DrXXIntroggVHome~LT~GliederungDrPg=JoeMnKFdDrML8DrMD,DrOb<SVDr&S?j+DrObSVDr&T/E[#Home~LT~NotizenAT/E["xV4B1HIn this talk I will give an outline of what the XFS filesystem provides,Home~LT~Notizen<(
(@'dexplain some of  the rational behind why SGI is open sourced XFS,  and the Goals behind the project.Home~LT~Notizen<(
(@'wI will then describe some of the filesystem interface differences between irix and Linux and the consequences of these.Home~LT~Notizen<(
(@'Especially the buffer cache interface where XFS has some very specific requirements, and where the available Linux mechanisms did not provide what we needed.Home~LT~Notizen<(
(@'GFinally I will outline current status and where we want to go from hereHome~LT~Notizen<(
(@'DrXXIntroggRHome~LT~GliederungDrPgJoeM$mVTDrML8DrMD,DrObSVDr&3]4!
Home~LT~Titel3]4bxV4B1M
Project Goals
Home~LT~Titel<(
(@'
DrObSVDr&r8eL(Home~LT~Gliederung 1[r8eL<xV4B1GPLedHome~LT~Gliederung 1	<(
(@''Aim to get XFS into mainline Linux treeHome~LT~Gliederung 2
<(
(@''
Single SourceHome~LT~Gliederung 1	<(
(@'
)Minimize cross platform maintenance costsHome~LT~Gliederung 2
<(
(@')Irix CompatibilityHome~LT~Gliederung 1	<(
(@',Move customer filesystems from Irix to LinuxHome~LT~Gliederung 2
<(
(@',DrXXGoalsggVHome~LT~GliederungDrPgbJoeMnKFdDrML8DrMD,DrOb<SVDr&S?j+DrOb4SVDr&T/E[#Home~LT~NotizenT/E[xV4B16OK, enough about what XFS is, now onto the Linux port.Home~LT~Notizen<(
(@'Home~LT~Notizen<(
(@'DrXXGoalsggVHome~LT~GliederungDrPgJoeM$mVTDrML8DrMD,DrObSVDr&3]4!
Home~LT~Titel3]4jxV4B1UGPL + Lawyers ! = Fun
Home~LT~Titel<(
(@'DrObSVDr&r8eL(Home~LT~Gliederung 1Nr8eL/xV4B1FPlacing commercial code under GPL is not easy if you tell the Lawyers!Home~LT~Gliederung 1<(
(@'F.Ensure XFS did not contain cross licensed codeHome~LT~Gliederung 1<(
(@'.-Extensive code review for cross licensed codeHome~LT~Gliederung 2<(
(@'- Two Lawyers left in the process!Home~LT~Gliederung 1<(
(@' Took way too long!Home~LT~Gliederung 1<(
(@'DrXXGPLggVHome~LT~GliederungDrPg*JoeMnKFdDrML8DrMD,DrOb<SVDr&S?j+DrObSVDr&T/E[#Home~LT~Notizen.T/E[xV4B1Taking a large chunk of code written by a commercial organization, espcially a US organization where Lawyers have one of the thickest sections in the phone book, and open sourcing it is not always a simple matter. SGI has cross licensing agreements with a number of other companies, and while we are allowed to do what we like with our own work, we are not allowed to do so with other peoples intellectual property.Home~LT~Notizen<(
(@')A group of SGI developers in Australia undertook the task of doing a complete review of the XFS code and doing cross reference searches against other code bases such as SVR4. When a match was found the code had to be replaced. The process did find a few cases of this outside of the core XFS code.Home~LT~Notizen<(
(@'From the developers point of view this was a very frustrating process, and it delayed the release of a complete XFS source tree by several months.Home~LT~Notizen<(
(@'DrXXGPLggVHome~LT~GliederungDrPgOJoeM$mVTDrML8DrMD,DrObSVDr&3]4!
Home~LT~Titel3]4nxV4B1YSource Code Compatibility
Home~LT~Titel<(
(@'DrObSVDr&r8eL(Home~LT~Gliederung 1r8eLxV4B1bInitial management requirementHome~LT~Gliederung 1	<(
(@'Common Irix/Linux core codeHome~LT~Gliederung 2
<(
(@'Irix release processHome~LT~Gliederung 1	<(
(@' Very tight control, Irix CentricHome~LT~Gliederung 2
<(
(@' Linux community requirementsHome~LT~Gliederung 1	<(
(@'
Clean CodeHome~LT~Gliederung 2
<(
(@'
The good of the manyHome~LT~Gliederung 2
<(
(@'DrXX#Code CompatggVHome~LT~GliederungDrPg6	JoeMnKFdDrML8DrMD,DrOb<SVDr&S?j+	DrObSVDr&T/E[#Home~LT~NotizenT/E[xV4B1iOne of managements first statements in all of this was 'Of course, there will be a single common source base between XFS on Irix and Linux'. This is a good goal from the point of view of maintainability, it makes it simpler to move new developments and bug fixes back and forwards (given correct ownership of the changes). However, there was another  hurdle which got in the way of this, the Irix release process.Home~LT~Notizen<(
(@'In the past, Irix had a lot of stability problems, and in order to control this, and guarantee things to customers and application developers a very tightly controlled process was put in place.Home~LT~Notizen<(
(@'The ideal way to create a common code base would be to abstract out a lot of the OS dependencies in XFS on both platforms, and provide a layer to map from common services used by XFS to the OS specific vertions on Linux and Irix. This level of change to the XFS code in Irix is not  something we would be allowed to do without  buy in from a lot of the organization, and a major testing effort.Home~LT~Notizen<(
(@'RInitial attempts to wrap the Irix code and run it unchanged on Linux lead to some very painful header file constructs, and a not very efficient implementation. Most of the core code has not had to be touched, but there are a large number of minor changes scattered about the code - the buffer cache interface was virtualized for instance.Home~LT~Notizen<(
(@'1The other aspect of how we end up doing things in Linux are the expectations of good clean code, and not introducing special purpose features which do not fit into the general scheme of things. We are still pulling a couple of nasty tricks which we know will not be accepted int o the mainline Linux tree.Home~LT~Notizen<(
(@'DrXX#Code CompatggVHome~LT~GliederungDrPgyJoeM$mVTDrML8DrMD,DrObSVDr&3]4!
Home~LT~Titel3]4gxV4B1RIrix Compatibility
Home~LT~Titel<(
(@'DrObSVDr&r8eL(Home~LT~Gliederung 1>r8eLxV4B1On disk format maintainedHome~LT~Gliederung 1	<(
(@'Linux XFS is big endianHome~LT~Gliederung 2
<(
(@'Volume manager port startedHome~LT~Gliederung 1	<(
(@'Application portabilityHome~LT~Gliederung 1	<(
(@'aProbably a user space library to map Irix fs extensions to Linux calls (no syssgi call in Linux!)Home~LT~Gliederung 2
<(
(@'aDrXX#Irix CompatggVHome~LT~GliederungDrPg`JoeMnKFdDrML8DrMD,DrOb<SVDr&S?j+DrObSVDr&T/E[#Home~LT~NotizendT/E[ExV4B10Initially the XFS port to Linux did not worry about endian issues, and since we were moving from a big endian to little endian platform, we knew this was breaking the on disk format. Since an end goal was on disk compatibilty this had to change. Home~LT~Notizen<(
(@'DrXX#Irix CompatggVHome~LT~GliederungDrPgeJoeM$mVTDrML8DrMD,DrObSVDr&3]4!
Home~LT~Titelx3]4YxV4B1DXFS Features
Home~LT~Titel<(
(@'DrOb/SVDr&[dJ((Home~LT~Gliederung 1[dJxV4B1!Large File and Filesystem SupportHome~LT~Gliederung 1	<(
(@'!#2 ^63-1 byte files supported by XFSHome~LT~Gliederung 2
<(
(@'#Other limits in Linux restrict thisHome~LT~Gliederung 2
<(
(@'Variable block sizeHome~LT~Gliederung 1	<(
(@'512 bytes to 64 KbytesHome~LT~Gliederung 2
<(
(@'Completely Extent BasedHome~LT~Gliederung 1	<(
(@'File extents and free spaceHome~LT~Gliederung 2
<(
(@'DrXX FeaturesggRHome~LT~GliederungDrPgPJoeMnKFdDrML8DrMD,DrOb<SVDr&S?j+
DrObSVDr&sT/E[#Home~LT~NotizenTsT/E[5xV4B1#So what does XFS have going for it?Home~LT~Notizen<(
(@'K   The XFS code itself supports ridiculously large filesystem and file sizeHome~LT~Notizeng*<(
(@'$      2^63 - 1 maximum file size andHome~LT~Notizeng*<(
(@'"      2^64 maximum filesystem sizeHome~LT~Notizen<(
(@'B These limits are actually the Irix limits, on Linux other factors come into play  such as the current 2 Tbyte limit on device size and, once we get beyond that,  pages are frequently referenced via an 32 bit index number. However, anyone who wants this much data in a filesystem can probably move up to a 64 bit platform.Home~LT~Notizeng*<(
(@'o Metadata journalling - All metadata updates are written to a circular log before the actual metadata itself  alowed to be written to disk. The log is used to reconstruct the filesystem to a consistent state after a crash. This also lets us play some tricks which can reduce the number of synchronous disk writes required during a metadata operation to less than one.Home~LT~Notizeng*<(
(@' Extent based encoding of  file blocks and free space,file extents are stored as a tuple of three fields, file offset, starting disk block and length. Small numbers of extents can be recorded in the inode - avoiding any indirect blocks for files which are resonable contigousHome~LT~Notizeng*<(
(@'DrXX FeaturesggRHome~LT~GliederungDrPg(JoeM$mVTDrML8DrMD,DrObSVDr&3]4!
Home~LT~Titelw3]4XxV4B1CDisk Layout
Home~LT~Titel<(
(@'DrObbSVDr&rfL(Home~LT~Gliederung 1rfLxV4B1!Data, log and realtime subvolumesHome~LT~Gliederung 1	<(
(@'!Data:metadata + file dataHome~LT~Gliederung 2
<(
(@'Log:circular journalHome~LT~Gliederung 2
<(
(@'Realtime:only file dataHome~LT~Gliederung 2
<(
(@'	
!Data split into allocation groupsHome~LT~Gliederung 1	<(
(@'!2Free space and inodes managed per allocation groupHome~LT~Gliederung 2
<(
(@'2 Can add allocation groups onlineHome~LT~Gliederung 2
<(
(@' DrXX#Disk LayoutggRHome~LT~GliederungDrPg|JoeMnKFdDrML8DrMD,DrOb<SVDr&S?j+DrObSVDr&T/E[#)Home~LT~NotizenT/E[axV4B1LClick to add notesHome~LT~Notizen<(
(@'DrXX#Disk LayoutggVHome~LT~GliederungDrPgKJoeM$mVTDrML8DrMD,DrObSVDr&3]4!
Home~LT~Titel3]4fxV4B1QXFS Features (allocation)
Home~LT~Titel<(
(@'DrObSVDr&r8eL(Home~LT~Gliederung 1r8eLxV4B1fDelayed allocation supportHome~LT~Gliederung 1	<(
(@'allocate on flushHome~LT~Gliederung 2
<(
(@'.Write reserves disk space, decide where later.Home~LT~Gliederung 2
<(
(@'Pre-allocation supportHome~LT~Gliederung 1	<(
(@'Layout file space in advanceHome~LT~Gliederung 2
<(
(@'Direct I/O supportHome~LT~Gliederung 1	<(
(@'Stripe aware allocatorHome~LT~Gliederung 1	<(
(@'DrXX"
AllocationggRHome~LT~GliederungDrPgJoeMnKFdDrML8DrMD,DrOb<SVDr&S?j+DrObuSVDr&T/E[#Home~LT~NotizenT/E[xV4B1In order to ensure that we keep files more contigous on disk, and to reduce the number of transactions during write calls, XFS uses delayed allocation. This is the default path for allocating writes. The in memory verstion of extents supports an extra state where there is no specified disk block. Free space is removed from the super  block and assigned to a particular inode, this is usually done in medium sized chunks. Only when we need to reuse memory for something else, or  periodically, do we go to the allocator to request real disk space. In a file which is written to frequently, this results in one allocator request for multiple write system calls. Clearly, if an application wants to guarantee data is permanent fsync, or O_SYNC should be used.Home~LT~Notizen<(
(@'We can also preallocate space in a file - this tends to go together with direct  I/O where data is transferred directly between user memory and the device.Home~LT~Notizen<(
(@'Finally, XFS can be told about the stripe unit and width of a filesystem, it will attempt to allocate extents and some metadata on stripe width boundaries to improve access times.Home~LT~Notizen<(
(@'DrXX"
AllocationggVHome~LT~GliederungDrPgpJoeM$mVTDrML8DrMD,DrObSVDr&3]4!
Home~LT~Titel3]4cxV4B1NXFS  Features (Inodes)
Home~LT~Titel<(
(@'DrObSVDr&eK(Home~LT~Gliederung 1BeK#xV4B1!Dynamically allocated in clustersHome~LT~Gliederung 1	<(
(@'!"Default to 2 fs blocks per clusterHome~LT~Gliederung 2
<(
(@'"Inode size is mkfs optionHome~LT~Gliederung 1	<(
(@'BFixed core, variable sized fork for extents, directory entries ...Home~LT~Gliederung 2
<(
(@'B 256 byte default, 4Kbyte maximumHome~LT~Gliederung 2
<(
(@' Extended attribute forkHome~LT~Gliederung 1	<(
(@'name=value pairsHome~LT~Gliederung 2
<(
(@'"Used for ACLs, Capabilites + DMAPIHome~LT~Gliederung 2
<(
(@'"DrXXInodesggRHome~LT~GliederungDrPg|JoeMnKFdDrML8DrMD,DrOb<SVDr&S?j+DrObSVDr&T/E[#)Home~LT~NotizenT/E[axV4B1LClick to add notesHome~LT~Notizen<(
(@'DrXXInodesggVHome~LT~GliederungDrPgJoeM$mVTDrML8DrMD,DrObSVDr&3]4!
Home~LT~Titel3]4hxV4B1SXFS Inode Structure
Home~LT~Titel<(
(@'DrObSVDr&(ojE|%
Standard(ojE|%xV4B1w
Fixed SizeStandard<(
(@'
Inode CoreStandard<(
(@'+'DrObSVDr&(%kE5
Standard*(%kE5xV4B1Extents,Standard<(
(@'+'	DirectoryStandard<(
(@'+'
Entries orStandard<(
(@'+'Symlink dataStandard<(
(@'+'DrObSVDr&(5jE	H
Standard(5jE	HxV4B1Attribute ForkStandard<(
(@'name=value pairsStandard<(
(@'+'
DrOb#SVDr&Xq 	.Standard*R!9R!9-(-DrCn#DrCn$;PFPFUDrOb$SVDr&B	?Standard*(u#u#?(?DrCn$DrCn$;PFPFUDrOb<SVDr&)I"+Dimension LineH?N(#xV4B1Inode SizeDimension Line<(
(@'
Mkfs optionDimension Line<(
(@'


HDrObuSVDr&P51U4
StandardP51U4DrObuSVDr&(W~)?\2-
Standard(W~)?\2-DrObuSVDr&T]
1kb4
StandardT]
1kb4DrObuSVDr&W41\4
StandardW41\4DrObSVDr&Rw*	X2StandardP(WX+aS51DrCn$DrCn$;PF(#DrObSVDr&XQ,Z2StandardPY2-Y41DrCn$DrCn$
;xi(#DrObSVDr&^[w*`1StandardP?\X+_
1DrCn$DrCn$	;(#DrOb[SVDr&P=lbH%DrObuSVDr&PDUH
StandardPDUHDrObuSVDr&)W=@\@
Standard)W=@\@DrObuSVDr&U]DlbZH
StandardU]DlbZHDrObuSVDr&+WDB\[H
Standard+WDB\[HDrObSVDr&R>
XEStandard)W>bSDDrCn$DrCn$;PF(#DrObSVDr&X?ZEStandardY@YDDrCn$DrCn$;xi(#DrObSVDr&_[>`EStandard@\>_DDrCn$DrCn$;(#DrXXDrOb-SVDr&D&Z. <Standard3kE-JN-JN'Y'Y~)DrCn$DrCn$;(#?DrOb0SVDr&D9Z?Standard3jE?JN?JN:Y:Y=DrCn$DrCn'?	;{(#?DrObSVDr&LeJ'!-Object without fillLeJDrObUSVDr&"Och$".Standard"Och$xV4B1Out of lineStandard<(
(@'+'BtreeStandard<(
(@'+'BlocksStandard<(
(@'+'DrXX$Inode layoutggNHome~LT~GliederungDrPgvJoeMnKFdDrML8DrMD,DrOb<SVDr&S?j+DrObSVDr&T/E[#Home~LT~NotizenzT/E[[xV4B1DIn XFS inodes are not  allocated at mkfs time, but dynamically. If a new inode is needed and none are available then a new cluster of inodes is allocated and added to the free inode map (which is a btree!)Home~LT~Notizen<(
(@'Inodes themselves can be different sizes, this is a mkfs option. The reason for this option is that XFS can store some metadata associated with the inode within the inode itself. So Directories with a few entries, extent information, and extended attributes can all be held within the inode. This reduces the number of disk accesses required when all data can be held within the inode.Finally, as well as data within a file, there is also an extended attribute fork, this can be used to hold a name=value pairs. These are accessible via the system call interface, and in a couple of special cases can be managed and used by the kernel itself. Irix uses extended attributes to hold access control lists, capabilities associated with a file, and data migration information.Home~LT~Notizen<(
(@'DrXX$Inode layoutggVHome~LT~GliederungDrPgbJoeM$mVTDrML8DrMD,DrObSVDr&3]4!
Home~LT~Titel3]4axV4B1LXFS Features
Home~LT~Titel<(
(@'DrOb$SVDr&68ejE('Home~LT~Gliederung 168ejExV4B1Btree Based On Disk StructuresHome~LT~Gliederung 1	<(
(@' Directories, Extents, Free SpaceHome~LT~Gliederung 2
<(
(@' Completely multi-threadedHome~LT~Gliederung 1	<(
(@'Runs on 512 CPU machinesHome~LT~Gliederung 2
<(
(@'(Can handle multiple parallel allocationsHome~LT~Gliederung 2
<(
(@'(Realtime supportHome~LT~Gliederung 1	<(
(@' Separate deterministic allocatorHome~LT~Gliederung 2
<(
(@' DrXX%
Misc FeaturesggRHome~LT~GliederungDrPgJoeMnKFdDrML8DrMD,DrOb<SVDr&S?j+DrObhSVDr&T/E[#Home~LT~NotizenT/E[xV4B1Other features of XFS are:Home~LT~Notizen<(
(@'8Btree based on disk structures for faster searching. Directory blocks are organized this way, which allows for faster lookup in large directories. Free space information is held as two trees, one organized by location, and the other by size. Extent information is also held as a tree for highly fragmented files.Home~LT~Notizen<(
(@'XFS Runs on extremely high cpu count systems, for those with large budgets, you can buy a 512 processor MIPS based system, and run a single copy of  Irix on it. This is not too relevant to Linux, in fact some might argue it is a disadvantage for single cpu machines. It does mean that there is no single point of lock contention within the filesystem - of course, if every process is working on the same file it is a different story!Home~LT~Notizen<(
(@'One example of this the the way the filesystem is divided into allocation groups. These each contain their own free space and inode clusters. Allocations can be in progress in multiple allocation groups in parallel.Home~LT~Notizen<(
(@'Finally, realtime, as well as the allocation groups, XFS can manage another area of disk space known as the realtime subvolume. This only contains file data, all metadata is held in the allocation groups. The realtime subvolume has its own allocator which has different characteristics, it uses a more deterministic algorithm to provide a more predictable performance pattern, and it uses a binary chop process to lay out extents. This makes fragmentation rare, at the cost of ineffecient use of  space.Home~LT~Notizen<(
(@'DrXX%
Misc FeaturesggVHome~LT~GliederungDrPg2JoeM$mVTDrML8DrMD,DrObSVDr&3]4!
Home~LT~Titel}3]4^xV4B1IDirectory Layouts
Home~LT~Titel<(
(@'DrObSVDr&3 l*ZDrObSVDr&3 l*'(!-Object without fill3 l*DrObSVDr&)#
%Standard)#xV4B1Fixed InodeStandard<(
(@'+'CoreStandard<(
(@'+'DrObSVDr&)e *
 %Standard)e *xV4B1	DirectoryStandard<(
(@'+'	EntriesStandard<(
(@'+'DrXXDrObSVDr&07Um*DrObSVDr&0?m*'(!-Object without fill0?m*DrObSVDr&0$>
%Standard0$>xV4B1Fixed InodeStandard<(
(@'+'CoreStandard<(
(@'+'DrObSVDr&|G? 7U)
 %Standard|G? 7U)xV4B1	DirectoryStandard<(
(@'+'	EntriesStandard<(
(@'+'DrObSVDr& >]H% Standard? |G%DrCn$DrCn$;PFDrXXDrObSVDr&.B'(!-Object without fill.BDrObSVDr&6/8
%Standard6/8xV4B1Fixed InodeStandard<(
(@'+'CoreStandard<(
(@'+'DrObSVDr&*Av8K
 %Standard*Av8KxV4B1	DirectoryStandard<(
(@'+'	EntriesStandard<(
(@'+'DrObSVDr&PAB^K
 %StandardPAB^KxV4B1	DirectoryStandard<(
(@'+'	EntriesStandard<(
(@'+'DrObSVDr&=A]KK
 %Standard=A]KKxV4B1	DirectoryStandard<(
(@'+'	EntriesStandard<(
(@'+'DrObSVDr&7F]>xG$ Standardv8F=FDrCn$DrCn$;PFDrObSVDr&JFBQxG$ Standard]KFPFDrCn$DrCn$;PFDrObSVDr&=r0]K*:
 %Standard=r0]K*:xV4B1
Hash/BlockStandard<(
(@'+'
PairsStandard<(
(@'+'DrObSVDr&CI9`EB StandardD*:DADrCn$
DrCn$;xi(#DrObSVDr&0m4>B Standard=N51ADrCn$
DrCn$;PF(#DrObSVDr&|Jm4EXB Standard]KN5dWADrCn$
DrCn$;(#DrOb-SVDr&!-`E9 Standard38R-8R-~.D~.Dr0DrCn$DrCn$
;(#?DrObSVDr&
$@#/Standard
$@`xV4B1KIn Inode DirectoryStandard<(
(@''DrObSVDr&7/N-#/Standard~7/N-_xV4B1JSingle Leaf BlockStandard<(
(@''DrObSVDr&Tq2'[4#/StandardrTq2'[4SxV4B1>BtreeStandard<(
(@''DrObSVDr&
&Y+'!&-Object without fill
&Y+DrObSVDr&m,Y+'!&-Object without fillm,Y+DrObSVDr&
3-`L'!&-Object without fill
3-`LDrXX(Directory layoutggNHome~LT~GliederungDrPg|JoeMnKFdDrML8DrMD,DrOb<SVDr&S?j+DrObSVDr&T/E[#)Home~LT~NotizenT/E[axV4B1LClick to add notesHome~LT~Notizen<(
(@'DrXX(Directory layoutggVHome~LT~GliederungDrPgJoeM$mVTDrLyLayoutDrLy
BackgroundDrLy!Background objectsDrLyControlsDrLyDimension LinesDrML8DrMD,DrObSVDr&3]4!
Home~LT~Titelz3]4[xV4B1FExtent Layouts
Home~LT~Titel<(
(@'DrObSVDr&3 l*ZDrObSVDr&3 l*'(!-Object without fill3 l*DrObSVDr&)#
%Standard)#xV4B1Fixed InodeStandard<(
(@'+'CoreStandard<(
(@'+'DrObSVDr&)e *
 %Standard)e *xV4B1ExtentStandard<(
(@'+'RecordsStandard<(
(@'+'DrXXDrOb	SVDr&07Um*DrObSVDr&0?m*'(!-Object without fill0?m*DrObSVDr&0$>
%Standard0$>xV4B1Fixed InodeStandard<(
(@'+'CoreStandard<(
(@'+'DrObSVDr&|G? 7U)
 %Standard|G? 7U)xV4B1ExtentStandard<(
(@'+'RecordsStandard<(
(@'+'DrObSVDr& >]H% Standard? |G%DrCn$DrCn$;PFDrXXDrObSVDr&.B'(!-Object without fill.BDrObSVDr&6/8
%Standard6/8xV4B1Fixed InodeStandard<(
(@'+'CoreStandard<(
(@'+'DrObSVDr&*Av8K
 %Standard*Av8KxV4B1ExtentStandard<(
(@'+'RecordsStandard<(
(@'+'DrObSVDr&PAB^K
 %StandardPAB^KxV4B1ExtentStandard<(
(@'+'RecordsStandard<(
(@'+'DrObSVDr&=A]KK
 %Standard=A]KKxV4B1ExtentStandard<(
(@'+'RecordsStandard<(
(@'+'DrObSVDr&7F]>xG$ Standardv8F=FDrCn$DrCn$;PFDrObSVDr&JFBQxG$ Standard]KFPFDrCn$DrCn$;PFDrObSVDr&=r0rK*:
 %Standard=r0]K*:xV4B1Offset/BlockStandard<(
(@'+'PairsStandard<(
(@'+'DrObSVDr&CI9`EB StandardD*:DADrCn$
DrCn$;xi(#DrObSVDr&0m4>B Standard=N51ADrCn$
DrCn$;PF(#DrObSVDr&|Jm4EXB Standard]KN5dWADrCn$
DrCn$;(#DrOb-SVDr&!-`E9 Standard38H-8H-~.D~.Dr0DrCn$DrCn$
;(#?DrObSVDr&
J"@#/Standard}
J"@^xV4B1IIn Inode ExtentsStandard<(
(@''DrObSVDr&7/N-#/Standard~7/N-_xV4B1JSingle Leaf BlockStandard<(
(@''DrObSVDr&Tq2'[4#/StandardrTq2'[4SxV4B1>BtreeStandard<(
(@''DrObSVDr&
&Y+'!&-Object without fill
&Y+DrObSVDr&m,Y+'!&-Object without fillm,Y+DrObSVDr&
3-`L'!&-Object without fill
3-`LDrXX%
Extent LayoutggJHome~LT~GliederungDrPgJoeMnKFdDrLyLayoutDrLy
BackgroundDrLy!Background objectsDrLyControlsDrLyDimension LinesDrML8DrMD,DrOb<SVDr&S?j+DrObSVDr&T/E[#)Home~LT~NotizenT/E[axV4B1LClick to add notesHome~LT~Notizen<(
(@'DrXX%
Extent LayoutggNHome~LT~GliederungDrPg.JoeM$mVTDrML8DrMD,DrObSVDr&3]4!
Home~LT~Titel{3]4\xV4B1GXFS Journalling
Home~LT~Titel<(
(@'DrOb`SVDr&r8eL(Home~LT~Gliederung 1r8eLxV4B1Write ahead journallingHome~LT~Gliederung 1	<(
(@'Write to log then to metadataHome~LT~Gliederung 2
<(
(@'Transactions are asyncHome~LT~Gliederung 1	<(
(@'Only log metadata deltasHome~LT~Gliederung 1	<(
(@'!Automatic replay on unclean mountHome~LT~Gliederung 1	<(
(@'!DrXX#JournallingggVHome~LT~GliederungDrPg|JoeMnKFdDrML8DrMD,DrOb<SVDr&S?j+DrObSVDr&T/E[#)Home~LT~NotizenT/E[axV4B1LClick to add notesHome~LT~Notizen<(
(@'DrXX#JournallingggVHome~LT~GliederungDrPgMJJoeM$mVTDrLyLayoutDrLy
BackgroundDrLy!Background objectsDrLyControlsDrLyDimension LinesDrML8DrMD,DrObSVDr&3]4!
Home~LT~Titel3]4`xV4B1KXFS Journalling 101
Home~LT~Titel<(
(@'DrObuSVDr&	+T51# <Standard	+T51DrObuSVDr&+@41
Standard+@41DrObSVDr&-R/#/Standards-R/TxV4B1?HeadStandard<(
(@'DrObSVDr&
H,M*/#0Standards
H,M*/TxV4B1?TailStandard<(
(@'DrObSVDr&G5dDrObuSVDr&G
#StandardGDrObuSVDr&H
#StandardHDrObuSVDr&H.5
#StandardH.5DrObuSVDr&i$ ,
#Standardi$ ,DrObuSVDr&h"
#Standardh"DrXXDrObSVDr&H\#/Standard|H\]xV4B1HMetdata BuffersStandard<(
(@''DrObSVDr&Y,Vh+/#/StandardxY,Vh+/YxV4B1DOn Disk LogStandard<(
(@''DrObSVDr&>-Z"/Standard.y!.DrObSVDr&?-DO/Standard@n.Dn.DrObSVDr&'+'51
$Standard'+'51DrOb&SVDr&
_5T=$2Standard
_5T=xV4B1Reserve log spaceStandard<(
(@'' Obtain, lock and modify metadataStandard<(
(@''DrXX'Journalling 101gg+stardiv.one.form.component.Form7StandardJHome~LT~GliederungDrPg~JoeMnKFdDrLyLayoutDrLy
BackgroundDrLy!Background objectsDrLyControlsDrLyDimension LinesDrML8DrMD,DrOb<SVDr&S?j+DrOb[SVDr&T/E[#)Home~LT~NotizenT/E[xV4B1^Since journalling is one of the bigger features of XFS, here is the XFS journalling 101 class.Home~LT~Notizen<(
(@'XFS uses write ahead logging, where metadata must be written to the log before it itself can be written back to disk. The sequence of events is as follows:Home~LT~Notizen<(
(@'
First you reserve your log space - before we start a transaction, there must be log space available for the potential worst case amount of metadata change involved. You cannot to this with metadata locked, because getting log space can involve writing metadata to disk.Home~LT~Notizen<(
(@'Once the space has been granted we lock all the metadata and start modifying it and marking it dirty. Once modification starts XFS never undos changes, there is no unrolling of transactions.Home~LT~Notizen<(
(@'Home~LT~Notizen<(
(@'DrXX'Journalling 101ggNHome~LT~GliederungDrPg?JoeM$mVTDrML8DrMD,DrObSVDr&3]4!
Home~LT~Titel3]4`xV4B1KXFS Journalling 101
Home~LT~Titel<(
(@'DrObuSVDr&nPy!
StandardnPy!DrObuSVDr&1Q?z!
Standard1Q?z!DrObuSVDr&!Q/z!
Standard!Q/z!DrObSVDr&&H(bo!#1Standard&H(bo!`xV4B1KIncore log buffersStandard<(
(@''DrObSVDr&G5dDrObuSVDr&G
#StandardGDrObuSVDr&H
#StandardHDrObuSVDr&H.5
#StandardH.5DrObuSVDr&i$ ,
#Standardi$ ,DrObuSVDr&h"
#Standardh"DrXXDrObSVDr&H\#/Standard|H\]xV4B1HMetdata BuffersStandard<(
(@''DrObSVDr&@

 #Standard#!)DrCn'?DrCn#;xiDrObSVDr&.
m#StandardDrCn'?DrCn#;xiDrObSVDr&
%)#StandardD(DrCn'?DrCn#;xiDrObSVDr&
3#Standard#2DrCn'?DrCn#;xiDrObSVDr&	+Vh51DrObuSVDr&	+T51# <Standard	+T51DrObuSVDr&%+@41
Standard%+@41DrObSVDr&2-O$y/#/Standards2-O$y/TxV4B1?HeadStandard<(
(@'DrObSVDr&
H,M*/#0Standards
H,M*/TxV4B1?TailStandard<(
(@'DrObSVDr&Y,Vh+/#/StandardxY,Vh+/YxV4B1DOn Disk LogStandard<(
(@''DrObSVDr&$f-*(/Standard-(%G.)G.DrObSVDr&?-DO/Standard@n.Dn.DrXXDrObSVDr&
%6XJG$3Standards
%6XJGTxV4B19Transaction CommitStandard<(
(@'''Copy modified metadata into in core logStandard<(
(@'' Pin buffers in memory and unlockStandard<(
(@''Transaction is completeStandard<(
(@''DrXX&Journalling #2ggNHome~LT~GliederungDrPgJoeMnKFdDrML8DrMD,DrOb<SVDr&S?j+!DrObISVDr&T/E[#Home~LT~NotizenT/E[xV4B1At transaction commit time, the modified incore metadata is copied to incore log buffers, we then pin the metadata, which prevents it from being written out to disk, and unlock the metadata buffers, making them available to other threads.Home~LT~Notizen<(
(@']This is the end of most transactions - note that we have not written anything at all to disk.Home~LT~Notizen<(
(@'DrXX&Journalling #2ggVHome~LT~GliederungDrPg"JoeM$mVTDrLyLayoutDrLy
BackgroundDrLy!Background objectsDrLyControlsDrLyDimension LinesDrML8DrMD,DrObSVDr&3]4!
Home~LT~Titel3]4`xV4B1KXFS Journalling 101
Home~LT~Titel<(
(@'DrObuSVDr&	+T51# <Standard	+T51DrObuSVDr&+@41
Standard+@41DrObSVDr&-R/#/Standards-R/TxV4B1?HeadStandard<(
(@'DrObSVDr&
H,M*/#0Standards
H,M*/TxV4B1?TailStandard<(
(@'DrObuSVDr&nPy!
StandardnPy!DrObuSVDr&1Q?z!
Standard1Q?z!DrObuSVDr&!Q/z!
Standard!Q/z!DrObSVDr&&H(bo!#1Standard&H(bo!`xV4B1KIncore log buffersStandard<(
(@''DrObSVDr&G5dDrObuSVDr&G
#StandardGDrObuSVDr&H
#StandardHDrObuSVDr&H.5
#StandardH.5DrObuSVDr&i$ ,
#Standardi$ ,DrObuSVDr&h"
#Standardh"DrXXDrObSVDr&H\#/Standard|H\]xV4B1HMetdata BuffersStandard<(
(@''DrObSVDr& !+#Standardy! 
+DrCn$DrCn#;xiDrObSVDr&Y,Vh+/#/StandardxY,Vh+/YxV4B1DOn Disk LogStandard<(
(@''DrObSVDr&>-Z"/Standard.y!.DrObSVDr&?-DO/Standard@n.Dn.DrObSVDr&.
4~aJ$2Standard.
4~aJxV4B1q#Write in core log out to log deviceStandard<(
(@''
Triggered by:Standard<(
(@''- log buffer fullStandard<(
(@''(- synchronous transaction (O_SYNC write)Standard<(
(@''- sync activityStandard<(
(@''DrObSVDr&	+Wh51DrObuSVDr&	+T51# <Standard	+T51DrObuSVDr&%+@41
Standard%+@41DrObSVDr&2-P$y/#/Standards2-P$y/TxV4B1?HeadStandard<(
(@'DrObSVDr&H,M*/#0StandardsH,M*/TxV4B1?TailStandard<(
(@'DrObSVDr&Y,Wh+/#/StandardxY,Wh+/YxV4B1DOn Disk LogStandard<(
(@''DrObSVDr&$f-*(/Standard.(%G.)G.DrObSVDr&?-DO/Standard@n.Dn.DrXXDrXX&Journalling #3ggJHome~LT~GliederungDrPgJoeMnKFdDrLyLayoutDrLy
BackgroundDrLy!Background objectsDrLyControlsDrLyDimension LinesDrML8DrMD,DrOb<SVDr&S?j+#DrObSVDr&T/E[#)Home~LT~Notizen}T/E[^xV4B1IThe next step is the incore log buffers get written to disk, this happens either because a buffer became full, sync activity pushed on it, or this was a synchronous operation where control cannot be returned to the user before an operation is guaranteed to be permanant..Home~LT~Notizen<(
(@'DrXX&Journalling #3ggNHome~LT~GliederungDrPg2"!JoeM$mVTDrLyLayoutDrLy
BackgroundDrLy!Background objectsDrLyControlsDrLyDimension LinesDrML8DrMD,DrObSVDr&3]4!
Home~LT~Titel3]4`xV4B1KXFS Journalling 101
Home~LT~Titel<(
(@'DrObuSVDr&	+T51# <Standard	+T51DrObuSVDr&+@41
Standard+@41DrObSVDr&-R/#/Standards-R/TxV4B1?HeadStandard<(
(@'DrObSVDr&
H,M*/#0Standards
H,M*/TxV4B1?TailStandard<(
(@'DrObuSVDr&@6EP:
#Standard@6EP:DrObuSVDr&@6EP:
#Standard@6EP:DrObuSVDr&rO6TP:
#StandardrO6TP:DrObuSVDr&H6"MP:
#StandardH6"MP:DrObSVDr&'E7H19$#StandardEv8Hv8DrCn$DrCn$;PFDrObSVDr&gL7-P19$#Standard"Mv8rOv8DrCn$DrCn$;PFDrObuSVDr&
M6:
#Standard
M6:DrObuSVDr&	
M6 :
#Standard	
M6 :DrObuSVDr&M6:
#StandardM6:DrObuSVDr&IM6`:
#StandardIM6`:DrObSVDr&el78$#Standard> '8I'8DrCn$DrCn$;PFDrObSVDr&l7k8$#Standard>`'8'8DrCn$DrCn$
;PFDrObSVDr&S7F[W9%#StandardTv8eZu8DrCn#DrCn#;DrObuSVDr&=mA
#Standard=mADrObuSVDr&=nA
#Standard=nADrObuSVDr&="A
#Standard="ADrObuSVDr& =A
#Standard =ADrObuSVDr&uS=,[A
#StandarduS=,[ADrObuSVDr&I=MQA
#StandardI=MQADrObuSVDr&?=GA
#Standard?=GADrObSVDr&Y,Vh+/#/StandardxY,Vh+/YxV4B1DOn Disk LogStandard<(
(@''DrObSVDr&7
V9&#Standardu8
u8DrObSVDr&
F9O
q>$#Standard:=DrCn$DrCn$;xi(#DrObSVDr&F9q>$#Standard:=DrCn$DrCn$;xi(#DrObSVDr&F9nq>$#Standard;:=DrCn$
DrCn$;xi(#DrObSVDr&B9tDq>$#StandardVCP:C=DrCn$DrCn$;xi(#DrObSVDr&I9,Nq>$#StandardJP:qM=DrCn$DrCn$;xi(#DrObSVDr&BQ9Xq>$#StandardQP:PW=DrCn$DrCn$;xi(#DrObSVDr&^6lP;#/Standard^6lP;xV4B1xActive ItemStandard<(
(@''ListStandard<(
(@''DrObSVDr&]=hB#/Standard]=hBxV4B1vDirtyStandard<(
(@''MetadataStandard<(
(@''DrObSVDr&>-Z"/Standard.y!.DrObSVDr&?-DO/Standard@n.Dn.DrObSVDr&A	T $2Standard9A	T xV4B1In core log write completesStandard<(
(@'''Move metadata to Active Item List (AIL)Standard<(
(@''&Unpin metadata buffers (now flushable)Standard<(
(@''DrObSVDr&	+Wh51DrObuSVDr&	+T51# <Standard	+T51DrObuSVDr&%+@41
Standard%+@41DrObSVDr&2-P$y/#/Standards2-P$y/TxV4B1?HeadStandard<(
(@'DrObSVDr&H,M*/#0StandardsH,M*/TxV4B1?TailStandard<(
(@'DrObSVDr&Y,Wh+/#/StandardxY,Wh+/YxV4B1DOn Disk LogStandard<(
(@''DrObSVDr&$f-*(/Standard.(%G.)G.DrObSVDr&?-DO/Standard@n.Dn.DrXXDrXX'Journalliong #4ggJHome~LT~GliederungDrPgJoeMnKFdDrLyLayoutDrLy
BackgroundDrLy!Background objectsDrLyControlsDrLyDimension LinesDrML8DrMD,DrOb<SVDr&S?j+%DrOb\SVDr&T/E[#)Home~LT~NotizenT/E[xV4B1When the I/O completes on the incore log all metadata in the transactions it contained is moved to the Active Item List and unpinned. The active item list, or AIL is the set of metadata whose current state is only present in the log.Home~LT~Notizen<(
(@'BThe oldest item in the AIL represents the tail of the on disk log.Home~LT~Notizen<(
(@'Home~LT~Notizen<(
(@'DrXX'Journalliong #4ggNHome~LT~GliederungDrPg&
&JoeM$mVTDrLyLayoutDrLy
BackgroundDrLy!Background objectsDrLyControlsDrLyDimension LinesDrML8DrMD,DrObSVDr&3]4!
Home~LT~Titel3]4`xV4B1KXFS Journalling 101
Home~LT~Titel<(
(@'DrObuSVDr&	+T51# <Standard	+T51DrObuSVDr&+@41
Standard+@41DrObSVDr&-R/#/Standards-R/TxV4B1?HeadStandard<(
(@'DrObSVDr&
H,M*/#0Standards
H,M*/TxV4B1?TailStandard<(
(@'DrObuSVDr&@6EP:
#Standard@6EP:DrObuSVDr&@6EP:
#Standard@6EP:DrObuSVDr&rO6TP:
#StandardrO6TP:DrObuSVDr&H6"MP:
#StandardH6"MP:DrObSVDr&'E7H19$#StandardEv8Hv8DrCn$DrCn$;PFDrObSVDr&gL7-P19$#Standard"Mv8rOv8DrCn$DrCn$;PFDrObuSVDr&
M6:
#Standard
M6:DrObuSVDr&	
M6 :
#Standard	
M6 :DrObuSVDr&M6:
#StandardM6:DrObuSVDr&IM6`:
#StandardIM6`:DrObSVDr&el78$#Standard> '8I'8DrCn$DrCn$;PFDrObSVDr&l7k8$#Standard>`'8'8DrCn$DrCn$
;PFDrObSVDr&S7F[W9%#StandardTv8eZu8DrCn#DrCn#;DrObuSVDr&=mA
#Standard=mADrObuSVDr&=nA
#Standard=nADrObuSVDr&="A
#Standard="ADrObuSVDr& =A
#Standard =ADrObuSVDr&uS=,[A
#StandarduS=,[ADrObuSVDr&I=MQA
#StandardI=MQADrObuSVDr&?=GA
#Standard?=GADrObSVDr&Y,Vh+/#/StandardxY,Vh+/YxV4B1DOn Disk LogStandard<(
(@''DrObSVDr&7
V9&#Standardu8
u8DrObSVDr&
F9O
q>$#Standard:=DrCn$DrCn$;xi(#DrObSVDr&F9q>$#Standard:=DrCn$DrCn$;xi(#DrObSVDr&F9nq>$#Standard;:=DrCn$
DrCn$;xi(#DrObSVDr&B9tDq>$#StandardVCP:C=DrCn$DrCn$;xi(#DrObSVDr&I9,Nq>$#StandardJP:qM=DrCn$DrCn$;xi(#DrObSVDr&BQ9Xq>$#StandardQP:PW=DrCn$DrCn$;xi(#DrObSVDr&^6lP;#/Standard^6lP;xV4B1xActive ItemStandard<(
(@''ListStandard<(
(@''DrObSVDr&]=hB#/Standard]=hBxV4B1vDirtyStandard<(
(@''MetadataStandard<(
(@''DrObSVDr&F_J
#StandardyF_JZxV4B1E
Disk SpaceStandard<(
(@'
DrObSVDr&>-Z"/Standard.y!.DrObSVDr&?-DO/Standard@n.Dn.DrObSVDr&@GStandardAFDrCn$DrCn#;xiDrObSVDr&B@D`GStandardCACFDrCn$DrCn#;xiDrObSVDr&L@RNGStandardqMApMFDrCn$DrCn#;xiDrObSVDr&	Ti*$2Standard	Ti*xV4B1cWrite metadata out to diskStandard<(
(@''Triggered byStandard<(
(@''- Flush activityStandard<(
(@''- Memory pressureStandard<(
(@''#- Tail pushing (log space pressure)Standard<(
(@''DrObSVDr&	+Wh51DrObuSVDr&	+T51# <Standard	+T51DrObuSVDr&%+@41
Standard%+@41DrObSVDr&2-P$y/#/Standards2-P$y/TxV4B1?HeadStandard<(
(@'DrObSVDr&H,M*/#0StandardsH,M*/TxV4B1?TailStandard<(
(@'DrObSVDr&Y,Wh+/#/StandardxY,Wh+/YxV4B1DOn Disk LogStandard<(
(@''DrObSVDr&$f-*(/Standard.(%G.)G.DrObSVDr&?-DO/Standard@n.Dn.DrXXDrXX&Journalling #5ggJHome~LT~GliederungDrPgkJoeMnKFdDrLyLayoutDrLy
BackgroundDrLy!Background objectsDrLyControlsDrLyDimension LinesDrML8DrMD,DrOb<SVDr&S?j+'DrObHSVDr&T/E[#)Home~LT~NotizenT/E[xV4B1When metadata is written out to disk, it is removed from the AIL, should it happen to be the end of  the AIL, this free's log space.Home~LT~Notizen<(
(@'If we relog metadata into a new transaction when it is already in the AIL we move it forwards in the AIL which can also move the tail of the log.Home~LT~Notizen<(
(@'Finally, when you are reserving space for a new transaction, and the head of the log is too close to the tail, you move the tail by flushing out the metadata closest to the end of the AIL.Home~LT~Notizen<(
(@'If I explained recovery as well, then the end result would be that we can always get the filesystem back to a consistent metadata state by replaying the log. This state is not guaranteed to be the last state the filesystem was in before the crash, just something close to it.Home~LT~Notizen<(
(@'DrXX&Journalling #5ggNHome~LT~GliederungDrPgJoeM$mVTDrLyLayoutDrLy
BackgroundDrLy!Background objectsDrLyControlsDrLyDimension LinesDrML8DrMD,DrObSVDr&3]4!
Home~LT~Titel3]4`xV4B1KXFS Journalling 101
Home~LT~Titel<(
(@'DrObuSVDr&rO6TP:
#StandardrO6TP:DrObuSVDr&
M6:
#Standard
M6:DrObuSVDr&	
M6 :
#Standard	
M6 :DrObuSVDr&M6:
#StandardM6:DrObSVDr&el7k8$#Standard> '8'8DrCn$DrCn$;PFDrObSVDr&S7F[W9%#StandardTv8eZu8DrCn#DrCn#;DrObuSVDr&=mA
#Standard=mADrObuSVDr&=nA
#Standard=nADrObuSVDr&="A
#Standard="ADrObuSVDr&uS=,[A
#StandarduS=,[ADrObSVDr&7
V9&#Standardu8
u8DrObSVDr&
F9O
q>$#Standard:=DrCn$DrCn$;xi(#DrObSVDr&F9nq>$#Standard;:=DrCn$DrCn$	;xi(#DrObSVDr&BQ9Xq>$#StandardQP:PW=DrCn$DrCn$
;xi(#DrObSVDr&^6lP;#/Standard^6lP;xV4B1xActive ItemStandard<(
(@''ListStandard<(
(@''DrObSVDr&]=hB#/Standard]=hBxV4B1vDirtyStandard<(
(@''MetadataStandard<(
(@''DrObSVDr&F_J
#StandardyF_JZxV4B1E
Disk SpaceStandard<(
(@'
DrObSVDr&	qXM"$2Standard0	qXM"xV4B1Metadata write completesStandard<(
(@''- Removes metadata from AILStandard<(
(@'',- If metadata was at AIL tail, move log tailStandard<(
(@''DrObuSVDr&	+T51# <Standard	+T51DrObuSVDr&%+1H41
Standard%+1H41DrObSVDr&2-Q$y/#/Standards2-Q$y/TxV4B1?HeadStandard<(
(@'DrObSVDr&^L-QR/#0Standards^L-QR/TxV4B1?TailStandard<(
(@'DrObSVDr&Y,Xh+/#/StandardxY,Xh+/YxV4B1DOn Disk LogStandard<(
(@''DrObSVDr&$f-*(/Standard/(%G.)G.DrObSVDr&Gf-L(/StandardHG.KG.DrXX&Journalling #6ggJHome~LT~GliederungDrPgJoeMnKFdDrLyLayoutDrLy
BackgroundDrLy!Background objectsDrLyControlsDrLyDimension LinesDrML8DrMD,DrOb<SVDr&S?j+)DrObSVDr&T/E[#)Home~LT~NotizenT/E[axV4B1LClick to add notesHome~LT~Notizen<(
(@'DrXX&Journalling #6ggNHome~LT~GliederungDrPgcJoeM$mVTDrML8DrMD,DrObSVDr&3]4!
Home~LT~Titel3]4kxV4B1VFile System Interfaces
Home~LT~Titel<(
(@'DrObSVDr&r8eL(Home~LT~Gliederung 1)r8eL
xV4B1Vnodes  Linux VFS interfaceHome~LT~Gliederung 1	<(
(@'Irix buf_t  Linux buffer headsHome~LT~Gliederung 1	<(
(@'Block Device InterfaceHome~LT~Gliederung 1	<(
(@'System CallsHome~LT~Gliederung 1	<(
(@'64 Bit InterfacesHome~LT~Gliederung 1	<(
(@'DrXX"
InterfacesggRHome~LT~GliederungDrPg|JoeMnKFdDrML8DrMD,DrOb<SVDr&S?j++DrObSVDr&T/E[#Home~LT~NotizenT/E[axV4B1LClick to add notesHome~LT~Notizen<(
(@'DrXX"
InterfacesggVHome~LT~GliederungDrPgNJoeM$mVTDrML8DrMD,DrObSVDr&3]4!
Home~LT~Titel3]4gxV4B1RThe VFS Glue Layer
Home~LT~Titel<(
(@'DrObxSVDr&r8eL(Home~LT~Gliederung 1r8eLxV4B1@A thin layer maps from Linux VFS calls to vnode based operationsHome~LT~Gliederung 1	<(
(@'+'@,Can support stacking which is needed by CXFSHome~LT~Gliederung 2
<(
(@',8Linux VFS implements more fs functionality than Irix VFSHome~LT~Gliederung 1	<(
(@'81Gradually removing XFS code which duplicates thisHome~LT~Gliederung 2
<(
(@'1DrXX VFS GlueggVHome~LT~GliederungDrPg|JoeMnKFdDrML8DrMD,DrOb<SVDr&S?j+-DrObSVDr&T/E[#Home~LT~NotizenT/E[axV4B1LClick to add notesHome~LT~Notizen<(
(@'DrXX VFS GlueggVHome~LT~GliederungDrPg"JoeM$mVTDrML8DrMD,DrOb
SVDr&3]-

template1eearial~LT~Titel3]xV4B1rLinux VFS -> LINVFS -> XFS opstemplate1eearial~LT~Titel<(
(@'DrObSVDr&}`DrObuSVDr&K
StandardKDrObSVDr&T}"StandardzT}[xV4B1Fstruct fileStandard<(
(@'DrXXDrObSVDr&!J*
Standard!J*cxV4B1N
struct direntStandard<(
(@''
DrObSVDr&X0K9
StandardX0K9bxV4B1Mstruct inodeStandard<(
(@''DrObSVDr&c|-
Standard}c|-^xV4B1Ifile opsStandard<(
(@''DrObSVDr&d*/.$3
Standard~d*/.$3_xV4B1J	inode opsStandard<(
(@''	DrObSVDr&8JdCStandardr$9
$CSxV4B1>VnodeStandard<(
(@''DrObSVDr&:IStandard};+Iz^xV4B1IBehaviorStandard<(
(@''
DrObSVDr&O`(StandardvO`(WxV4B1B	vnode opsStandard<(
(@''DrObuSVDr&P
*5`'8
 StandardP
*5`'8DrObSVDr&Q+ib:$StandardQ+ib:gxV4B1Jxfs_openStandard<(
(@''	xfs_closeStandard<(
(@''	
xfs_createStandard<(
(@''

xfs_lookupStandard<(
(@''
....Standard<(
(@''DrObuSVDr&n.N 
 Standardn.N DrObZSVDr&y2%Standardy2xV4B1linvfs_openStandard<(
(@''linvfs_closeStandard<(
(@''....Standard<(
(@''DrOb#SVDr&-"Standard* !DrCn#DrCn$;(#DrOb$SVDr&)|91Standard**,d.X0DrCn$DrCn$;xi(#DrOb$SVDr&j-5Standard*K4?4..DrCn$DrCn$;PFDrOb#SVDr&wjDStandard*XXoKcKDrCn#DrCn$;PFDrOb$SVDr&)q;?Standard%u*
$>6$>6R;RDrCn$DrCn$;
PFZDrObuSVDr&'4.;
 Standard'4.;DrOb]SVDr&h51D;#Standardh51D;xV4B1
Linvfs_lookupStandard<(
(@''

linvfs_createStandard<(
(@''
....Standard<(
(@''DrOb$SVDr&HqP!%
Standard*IRKRM@$O@$DrCn$DrCn$;FPFDrObSVDr&:kJ 
Standard:kI `xV4B1K
 Xfs inodeStandard<(
(@''
DrObSVDr&<;j(I1Standard<;j(I1xV4B1|StackedStandard<(
(@'
BehaviorStandard<(
(@'
DrOb$SVDr&8q<-Standard*;R8R8,<;,DrCn$DrCn$;PFPFUDrXX$Linvfs layerggVtemplate1eearial~LT~GliederungDrPgNJoeMnKFdDrML8DrMD,DrOb<SVDr&<6AG,/DrObSVDr&.JI^/
template1eearial~LT~NotizenF.JI^'xV4B1qSo here we see a picture of the various structures and operations vectors involved (OK, I know some are missing).template1eearial~LT~Notizen<(
(@'The XFS specific part of the linux inode is not the xfs inode it is the vnode, this is actually a small subset of the irix vnode. Initially it was maintaining its own count field independent of the linux inode count, this was a obviously a disaster waiting to happen and had to go!template1eearial~LT~Notizen<(
(@'The vnode points at a chain of behavior structures, currently we only have one, potentially we could have stacked behaviors, in the case of CXFS, a layer is interposed between XFS and the VFS layer.template1eearial~LT~Notizen<(
(@'This does not seem to be too expensive, but it does complicate things in terms of there still being replicated fields between the linux and xfs inodes, hopefully we can reduce that over time.template1eearial~LT~Notizen<(
(@'DrXX$Linvfs layerggZtemplate1eearial~LT~GliederungDrPg:JoeM$mVTDrML8DrMD,DrObSVDr&3]4!
Home~LT~Titel3]4ixV4B1TMissing System Calls
Home~LT~Titel<(
(@'DrObSVDr&r8eL(Home~LT~Gliederung 1r8eLsxV4B1RSpace pre-allocationHome~LT~Gliederung 1	<(
(@'reserve, unreserveHome~LT~Gliederung 2
<(
(@'Extended attribute supportHome~LT~Gliederung 1	<(
(@'attrset, attrget, attrwalkHome~LT~Gliederung 2
<(
(@'ACL + MAC settingHome~LT~Gliederung 2
<(
(@'Realtime Inode attributesHome~LT~Gliederung 1	<(
(@'extent size settingHome~LT~Gliederung 2
<(
(@'DrXX%
Missing CallsggVHome~LT~GliederungDrPg|JoeMnKFdDrML8DrMD,DrOb<SVDr&S?j+1DrObSVDr&T/E[#Home~LT~NotizenT/E[axV4B1LClick to add notesHome~LT~Notizen<(
(@'DrXX%
Missing CallsggVHome~LT~GliederungDrPgmJoeM$mVTDrML8DrMD,DrObSVDr&3]4!
Home~LT~Titel3]4bxV4B1M
64 Bit Issues
Home~LT~Titel<(
(@'
DrOb.SVDr&r8eL(Home~LT~Gliederung 1r8eLxV4B1XFS ino_t is 64 bit quantityHome~LT~Gliederung 1	<(
(@'	:Once a filesystem grows beyond 2 Tbytes we have work to doHome~LT~Gliederung 2
<(
(@':Device addressabilityHome~LT~Gliederung 1	<(
(@'hopefully solved via kiobufsHome~LT~Gliederung 2
<(
(@'Directory offsetsHome~LT~Gliederung 1	<(
(@'64 bit in some casesHome~LT~Gliederung 2
<(
(@'Glibc dirent != kernel direntHome~LT~Gliederung 2
<(
(@'DrXX%
64 bit issuesggVHome~LT~GliederungDrPg|JoeMnKFdDrML8DrMD,DrOb<SVDr&S?j+3DrObSVDr&T/E[#Home~LT~NotizenT/E[axV4B1LClick to add notesHome~LT~Notizen<(
(@'DrXX%
64 bit issuesggVHome~LT~GliederungDrPgJoeM$mVTDrML8DrMD,DrObSVDr&3]4!
Home~LT~Titel|3]4]xV4B1HThe Buffer Cache
Home~LT~Titel<(
(@'DrObSVDr&r8eL(Home~LT~Gliederung 1Zr8eL;xV4B15Linux defines I/O in terms of fixed size buffer headsHome~LT~Gliederung 1	<(
(@'5XFS has variable size metadataHome~LT~Gliederung 1	<(
(@'512 bytes to 64 KbytesHome~LT~Gliederung 2
<(
(@'<XFS transaction code needs control of write to disk sequenceHome~LT~Gliederung 1	<(
(@'<:Long term Linux goal of caching metadata in the page cacheHome~LT~Gliederung 1	<(
(@':DrXX$Buffer CacheggRHome~LT~GliederungDrPg'JoeMnKFdDrML8DrMD,DrOb<SVDr&S?j+5DrObSVDr&T/E[#Home~LT~NotizenT/E[vxV4B1[8The traditional linux I/O path defines I/O down to devices in terms of fixed size buffer heads. You get to pick one size of request with which to talk to the device driver interface. All the work of collecting multiple buffer head requests into a larger request to the I/O device is handled in the request layer.Home~LT~Notizen<(
(@'This is OK is you start designing your filesystem with this in mind. In XFS's case however, we have variable size metadata, with some components being 512 bytes. If we follow the rule of  fixed size buffer heads this means we end up with a lot of them! It also tends to mess up your performance and memory consumption. We also want to be able to lock access to metadata objects, not fixed size bits of metadata objects.Home~LT~Notizen<(
(@'Next, as I already explained we need to pin metadata in memory for the transaction processing part of XFS, and the way XFS is structured, I am not sure we can do that with the write ordering contraint mechanisms which have been talked about for ext3.Home~LT~Notizen<(
(@'Finally, there has, for a long time, been this implied direction of caching metadata in pages. So, as if we did not have enough other things to deal with, we decided to do this as well!Home~LT~Notizen<(
(@'DrXX$Buffer CacheggVHome~LT~GliederungDrPg.JoeM$mVTDrML8DrMD,DrObSVDr&3]4!
Home~LT~Titel~3]4_xV4B1JThe Pagebuf Module
Home~LT~Titel<(
(@'DrObSVDr&r8eL(Home~LT~Gliederung 1r8eLqxV4B1R(All filesystem data cached in page cacheHome~LT~Gliederung 1	<(
(@'(VM system handles page reclaimHome~LT~Gliederung 2
<(
(@'Manages metadata and file dataHome~LT~Gliederung 1	<(
(@'Uses kiobuf as I/O mechanismHome~LT~Gliederung 1	<(
(@'ESupport added to SCSI driver, IDE in progress, Volume managers comingHome~LT~Gliederung 2
<(
(@'ELocking at pagebuf levelHome~LT~Gliederung 1	<(
(@'DrXX PagebufsggRHome~LT~GliederungDrPgJoeMnKFdDrML8DrMD,DrOb<SVDr&S?j+7DrObVSVDr&T/E[#Home~LT~NotizenT/E[xV4B1!So we ended up creating pagebufs.Home~LT~Notizen<(
(@'nAll filesystem data, both file and metadata is cached in pages. As with other linux filesystems, each inode has it's own address space, there is also a special address space for the metadata for a filesystem. This means that as well as for filedata, the VM system now does the page reclaim for metadata as well - so lets get those try to free pages algorithms right!Home~LT~Notizen<(
(@'+'QA pagebuf is built on top of a kiobuf, this is our container for pages, we have added support to the SCSI driver layer to understand kiobufs directly. We have had help from Suse in the IDE version of this code, and volume manager support should be on its way. If all else fails we setup some buffer heads and do it the old fashioned way.Home~LT~Notizen<(
(@'+'Home~LT~Notizen<(
(@'+'DrXX PagebufsggVHome~LT~GliederungDrPg!JoeM$mVTDrML8DrMD,DrObSVDr&3]4!
Home~LT~Titel3]4cxV4B1NPagebuf Based File I/O
Home~LT~Titel<(
(@'DrObSSVDr&48eK(Home~LT~Gliederung 148eKxV4B1 Extent based allocator interfaceHome~LT~Gliederung 1	<(
(@' "Support for delayed allocate pagesHome~LT~Gliederung 1	<(
(@'"DDisk blocks not assigned or written to disk until pressured to do soHome~LT~Gliederung 2
<(
(@'22;;DPeriodic Page CleanerHome~LT~Gliederung 3<(
(@'Memory PressureHome~LT~Gliederung 3<(
(@'
Clustered I/OHome~LT~Gliederung 1	<(
(@'
/Adjacent pages processed in single I/O  requestHome~LT~Gliederung 2
<(
(@'/DrXX File I/OggRHome~LT~GliederungDrPgJoeMnKFdDrML8DrMD,DrOb<SVDr&S?j+9DrOb[SVDr&T/E[#Home~LT~NotizenT/E[xV4B1We really have two distinct sets of uses of pagebufs, file I/O which does not actually always contruct a pagebuf, and metadata which always does.Home~LT~Notizen<(
(@'For file I/O we have an extent based allocator interface provided by the filesystem (XFS is the only such provider). There are separate read/write paths from the normal block based functions which use this allocator interface. This lets us get by with less allocator calls.Home~LT~Notizen<(
(@'DWe also added support for delayed allocate pages, these are pages which contain filedata, but cannot be written back to disk without going back to the allocator. Pages are populated during the write call, and a separate page cleaner daemon is responsible for converting them to have real disk addresses and writing them out.Home~LT~Notizen<(
(@'The interface to the allocator is structured so that we ask for a disk address for a specific page of data, the allocator knows how long the complete delalloc extent is, and can convert the whole thing to real disk blocks, and return the complete range of the file which is contiguous with this page. We can now go get the surrounding pages, place them in a pagebuf, and write the whole thing in one go.Home~LT~Notizen<(
(@'KVarious other places in the system also need to be aware of delalloc pages.Home~LT~Notizen<(
(@'DrXX File I/OggVHome~LT~GliederungDrPgcJoeM$mVTDrML8DrMD,DrObSVDr&3]4!
Home~LT~Titel3]4cxV4B1NPagebuf Based Metadata
Home~LT~Titel<(
(@'DrObSVDr&r8eL(Home~LT~Gliederung 1+r8eLxV4B1Locking at the pagebuf levelHome~LT~Gliederung 1	<(
(@'.Single thread access to variable size metadataHome~LT~Gliederung 2
<(
(@'Support for pinningHome~LT~Gliederung 1	<(
(@'EPinned pagebufs are available to other threads, but cannot be writtenHome~LT~Gliederung 2
<(
(@'EDoes its own writebackHome~LT~Gliederung 1	<(
(@'DrXX$Metadata I/OggVHome~LT~GliederungDrPgbJoeMnKFdDrML8DrMD,DrOb<SVDr&S?j+;DrObSVDr&T/E[#Home~LT~NotizenfT/E[GxV4B1*Locking is available at the pagebuf level, and can be turned on or off for individual inodes. Metadata uses it, file data does not.. When XFS needs a piece of metadata it calls pagebuf which does a lookup operation for an existing pagebuf on that block range, and obtains the lock on it . If no matching pagebuf exists, one is created and returned locked. Very similar to buffer heads, but on variable sized chunks.Home~LT~Notizen<(
(@'In the case where no pagebuf exists, then we may either find the pages cached in the address space for the inode, or have to create them, and fill them in from disk if required. For metadata we keep the pagebuf around from the initial create request until it is finally written to disk. We may tweak this and keep them around for longer to give us more control over which pages in the address space are available to be recycled.Home~LT~Notizen<(
(@'Pinning is implemented as type of hold count on the pagebuf, you can bump the pin count and decrement the pin count, you can also wait for a pagebuf to get unpinned. A count is required instead of a flag since one piece of metadata could end up in more than one transaction and iclog buffer at once, only when the last iclog hits disk can we allow the metadata itself to be written out..Home~LT~Notizen<(
(@'^Pagebuf is very much a work in progress, Rick Van Reil - see me afterwards, we need some help!Home~LT~Notizen<(
(@'Home~LT~Notizen<(
(@'DrXX$Metadata I/OggVHome~LT~GliederungDrPg{JoeM$mVTDrML8DrMD,DrObSVDr&3]4!
Home~LT~Titel3]4gxV4B1RStatus of the Port
Home~LT~Titel<(
(@'DrOb7SVDr&)EfJ(Home~LT~Gliederung 1)EfJxV4B1Running in 2.4.0-test1 on ia32Home~LT~Gliederung 1	<(
(@'!Mips port has mounted filesystemsHome~LT~Gliederung 2
<(
(@'! On disk compatible with Irix XFSHome~LT~Gliederung 1	<(
(@' Basic utilities portedHome~LT~Gliederung 1	<(
(@'mkfs/repair/xfs_db workingHome~LT~Gliederung 2
<(
(@'(dump/restore in progress (worked today!)Home~LT~Gliederung 2
<(
(@'(#Volume manager interface needs workHome~LT~Gliederung 1	<(
(@'#DrXX#Port StatusggRHome~LT~GliederungDrPg>JoeMnKFdDrML8DrMD,DrOb<SVDr&S?j+=DrOb
SVDr&T/E[#Home~LT~NotizenT/E[xV4B1oSo where are we at the moment?Home~LT~Notizen<(
(@'We have a working filesystem running in 2.4.0-test1, there should be code on the conference CD, it is out of date! go to the web site at oss.sgi.com.Home~LT~Notizen<(
(@'@We have been doing all of our work on ia32 platforms, someone just spent their 4th off July weekend getting the MIPs version to boot and mount filesystems. The user space code is finally getting closer to a state where it will be easier to build on other architectures, so maybe people can start trying things out there.Home~LT~Notizen<(
(@'PRqWe are disk format compatible with Irix XFS, and that is independedent of which Linux architecture you are using.Home~LT~Notizen<(
(@'RMost of the XFS user space is present, dump and restore are still being worked on.Home~LT~Notizen<(
(@'We have almost exclusively being using single disk filesystems, some LVM work has been done, but this is an area which needs work.Home~LT~Notizen<(
(@'DrXX#Port StatusggVHome~LT~GliederungDrPgSJoeM$mVTDrML8DrMD,DrObSVDr&3]4!
Home~LT~Titel3]4`xV4B1KFuture Work
Home~LT~Titel<(
(@'DrObSVDr&58eI(Home~LT~Gliederung 158eIxV4B1tPerformance.....Home~LT~Gliederung 1	<(
(@'Pagebuf + Linux VM integrationHome~LT~Gliederung 1	<(
(@'Realtime + Guaranteed Rate I/OHome~LT~Gliederung 1	<(
(@'#Complete realtime subvolume supportHome~LT~Gliederung 2
<(
(@'#Port XVM to LinuxHome~LT~Gliederung 1	<(
(@'SGI's logical volume managerHome~LT~Gliederung 2
<(
(@'CXFS - Clustered XFS for SANsHome~LT~Gliederung 1	<(
(@'DrXX#Future WorkggRHome~LT~GliederungDrPgGJoeMnKFdDrML8DrMD,DrOb<SVDr&S?j+?DrObSVDr&T/E[#Home~LT~NotizenKT/E[,xV4B1!We can always do performance workHome~LT~Notizen<(
(@'4- the I/O clustering can be improved, lots of thingsHome~LT~Notizen<(
(@'FWe need long term to get pagebuf better integrated with the VM system.Home~LT~Notizen<(
(@'JWe can also go work on the realtime and guaranteed rate I/O end of things.Home~LT~Notizen<(
(@'hThe XVM port to Linux has been moving very slowly - mostly a headcount thing - we keep losing the heads!Home~LT~Notizen<(
(@'^And then, once all of this gets into a reasonable state I get to go do it all again with CXFS.Home~LT~Notizen<(
(@'Home~LT~Notizen<(
(@'DrXX#Future WorkggVHome~LT~GliederungDrPgRJoeM$mVTDrML8DrMD,DrObSVDr&3]4!
Home~LT~Titelv3]4WxV4B1B
References
Home~LT~Titel<(
(@'DrObSVDr&r8eL(Home~LT~Gliederung 1(r8eL	xV4B1Project Web SiteHome~LT~Gliederung 1<(
(@'Home~LT~Gliederung 2<(
(@'(CVS tree + patches, mailing list archiveHome~LT~Gliederung 3<(
(@'(Mailing ListHome~LT~Gliederung 1<(
(@'Home~LT~Gliederung 2<(
(@'Subscribe via Home~LT~Gliederung 2<(
(@'DrXX"
ReferencesggVHome~LT~GliederungDrPg|JoeMnKFdDrML8DrMD,DrOb<SVDr&S?j+ADrObSVDr&T/E[#Home~LT~NotizenT/E[axV4B1LClick to add notesHome~LT~Notizen<(
(@'DrXX"
ReferencesggVHome~LT~GliederungDrXX!Generic PrinterSGENPRT PostScriptgQtRQtd,,lprdefault_queueSGENPRTPageSize:A4Resolution:600dpi	DrVwPSVDr
SVDr:SVDr{{SVDrALayout:SVDr{{SVDr#SVDr SVDr#SVDr0SVDr1SVDr3SVDr4SVDr@SVDrSVDrDSVDrPSVDrQDrHLDrHLDrHLU <Custom

Root Entry!r\V)䰱CompObjEOle
persist elements"
SfxDocumentInfo uStarBASIC	BasicManager24SfxWindowsSfxStyleSheets StandardjSummaryInformation(4StarDrawDocument3$d