DIRECTORY Atom, ImagerBackdoorPrivate, ImagerColor, ImagerMaskContext, Rope, ImagerDevice, ImagerBackdoor, ImagerScanConverter, ImagerPixelMap, ImagerFont, ImagerManhattan, ImagerPath, ImagerTransformation, Vector2, Imager, ImagerFontPrivate, ImagerPrivate; ImagerMaskContextImpl: CEDAR PROGRAM IMPORTS Atom, ImagerBackdoor, ImagerColor EXPORTS Imager, ImagerFont, ImagerMaskContext ~ BEGIN Class: TYPE ~ ImagerPrivate.Class; ClassRep: PUBLIC TYPE ~ ImagerPrivate.ClassRep; -- export to Imager.ClassRep ROPE: TYPE ~ Rope.ROPE; CharMask: TYPE ~ ImagerDevice.CharMask; Clipper: TYPE ~ ImagerBackdoor.Clipper; Color: TYPE ~ Imager.Color; ColorOperator: TYPE ~ Imager.ColorOperator; Context: TYPE ~ Imager.Context; Device: TYPE ~ ImagerDevice.Device; DeviceBox: TYPE ~ ImagerDevice.DeviceBox; RunProc: TYPE ~ ImagerDevice.RunProc; DevicePath: TYPE ~ ImagerScanConverter.DevicePath; DeviceRectangle: TYPE ~ ImagerPixelMap.DeviceRectangle; Font: TYPE ~ ImagerFont.Font; ManhattanPolygon: TYPE ~ ImagerManhattan.Polygon; PathProc: TYPE ~ ImagerPath.PathProc; PixelArray: TYPE ~ Imager.PixelArray; Rectangle: TYPE ~ ImagerTransformation.Rectangle; Transformation: TYPE ~ ImagerTransformation.Transformation; TransformationRep: TYPE ~ ImagerTransformation.TransformationRep; VEC: TYPE ~ Vector2.VEC; XChar: TYPE ~ ImagerFont.XChar; XStringProc: TYPE ~ ImagerFont.XStringProc; FontImpl: TYPE ~ ImagerFontPrivate.FontImpl; FontImplRep: PUBLIC TYPE ~ ImagerFontPrivate.FontImplRep; IntKey: TYPE ~ ImagerBackdoor.IntKey; RealKey: TYPE ~ ImagerBackdoor.RealKey; -- Clipper: TYPE ~ ImagerBackdoor.Clipper; Data: TYPE ~ REF DataRec; DataRec: TYPE ~ RECORD [ context: Imager.Context _ , lastColorRequested: Imager.Color, maskColor: Imager.Color _ , active:BOOLEAN _ ]; forkViewClass: ImagerBackdoorPrivate.Class ~ NEW[ImagerBackdoorPrivate.ClassRep _ [ type: $fork, ViewReset: ViewReset, ViewTranslateI: ViewTranslateI, ViewClip: ViewClip, ViewClipRectangleI: ViewClipRectangleI, ViewFromClient: ViewFromClient, ClientFromView: ClientFromView, DeviceFromView: DeviceFromView, ViewFromDevice: ViewFromDevice, DeviceFromClient: DeviceFromClient, ClientFromDevice: ClientFromDevice, MoveViewRectangle: MoveViewRectangle, TestViewRectangle: TestViewRectangle ]]; forkClass: Class ~ NEW[ClassRep _ [ type: $MaskContext, DoSave: MaskDoSave, SetInt: MaskSetInt, SetReal: MaskSetReal, SetT: MaskSetT, SetFont: MaskSetFont, SetColor: MaskSetColor, SetClipper: MaskSetClipper, GetInt: MaskGetInt, GetReal: MaskGetReal, GetT: MaskGetT, GetFont: MaskGetFont, GetColor: MaskGetColor, GetClipper: MaskGetClipper, ConcatT: MaskConcatT, Scale2T: MaskScale2T, RotateT: MaskRotateT, TranslateT: MaskTranslateT, Move: MaskMove, SetXY: MaskSetXY, SetXYRel: MaskSetXYRel, Show: MaskShow, ShowText: MaskShowText, StartUnderline: MaskStartUnderline, MaskUnderline: MaskMaskUnderline, CorrectMask: MaskCorrectMask, CorrectSpace: MaskCorrectSpace, Space: MaskSpace, SetCorrectMeasure: MaskSetCorrectMeasure, SetCorrectTolerance: MaskSetCorrectTolerance, Correct: MaskCorrect, DontCorrect: MaskDontCorrect, SetGray: MaskSetGray, SetSampledColor: MaskSetSampledColor, SetSampledBlack: MaskSetSampledBlack, MaskFill: MaskMaskFill, MaskStroke: MaskMaskStroke, MaskDashedStroke: MaskMaskDashedStroke, MaskRectangle: MaskMaskRectangle, MaskRectangleI: MaskMaskRectangleI, MaskVector: MaskMaskVector, MaskPixel: MaskMaskPixel, MaskBits: MaskMaskBits, DrawBits: MaskDrawBits, Clip: MaskClip, ClipRectangle: MaskClipRectangle, ClipRectangleI: MaskClipRectangleI, GetCP: MaskGetCP, GetBoundingRectangle: MaskGetBoundingRectangle, propList: Atom.PutPropOnList[NIL, $viewOperations, forkViewClass] ]]; Create: PUBLIC PROC [context: Imager.Context, maskColor: Imager.Color, active:BOOLEAN _ TRUE] RETURNS [maskContext: Imager.Context] ~ { data: Data _ NEW[DataRec _ [context, maskColor, maskColor, active]]; RETURN[NEW[Imager.ContextRep _ [class: forkClass, state: NIL, data: data]]]; }; GetChildContext: PUBLIC PROC [context: Imager.Context] RETURNS [child: Imager.Context _ NIL] ~ { WITH context.data SELECT FROM data: Data => { child _ data.context; }; ENDCASE; }; SetMaskColor: PUBLIC PROC [context: Imager.Context, maskColor: Imager.Color] ~ { WITH context.data SELECT FROM data: Data => { data.maskColor _ maskColor; }; ENDCASE; }; Activated: PUBLIC PROC [context: Imager.Context, active:BOOLEAN _ TRUE] ~ { WITH context.data SELECT FROM data: Data => { class: Class _ data.context.class; data.active _ active; IF data.active THEN class.SetColor[context: data.context, color: data.maskColor] ELSE class.SetColor[context: data.context, color: data.lastColorRequested]; }; ENDCASE; }; MaskDoSave: PROC[context: Context, action: PROC, all: BOOL] ~ { data: Data _ NARROW[context.data]; active: BOOLEAN _ data.active; lastColorRequested: Imager.Color _ data.lastColorRequested; maskColor: Imager.Color _ data.maskColor; class: Class _ data.context.class; class.DoSave[context: data.context, action: action, all: all]; data.maskColor _ maskColor; data.lastColorRequested _ lastColorRequested; data.active _ active; }; MaskSetInt: PROC[context: Context, key: IntKey, val: INT] ~ { data: Data _ NARROW[context.data]; class: Class _ data.context.class; class.SetInt[context: data.context, key: key, val: val]; }; MaskSetReal: PROC[context: Context, key: RealKey, val: REAL] ~ { data: Data _ NARROW[context.data]; class: Class _ data.context.class; class.SetReal[context: data.context, key: key, val: val]; }; MaskSetT: PROC[context: Context, m: Transformation] ~ { data: Data _ NARROW[context.data]; class: Class _ data.context.class; class.SetT[context: data.context, m: m]; }; MaskSetFont: PROC[context: Context, font: Font] ~ { data: Data _ NARROW[context.data]; class: Class _ data.context.class; class.SetFont[context: data.context, font: font]; }; MaskSetColor: PROC[context: Context, color: Color] ~ { data: Data _ NARROW[context.data]; class: Class _ data.context.class; data.lastColorRequested _ color; IF data.active THEN class.SetColor[context: data.context, color: data.maskColor] ELSE class.SetColor[context: data.context, color: color]; }; MaskSetClipper: PROC[context: Context, clipper: Clipper] ~ { data: Data _ NARROW[context.data]; class: Class _ data.context.class; class.SetClipper[context: data.context, clipper: clipper]; }; MaskGetInt: PROC[context: Context, key: IntKey] RETURNS[INT] ~ { data: Data _ NARROW[context.data]; result: INT; class: Class _ data.context.class; result _ class.GetInt[context: data.context, key: key]; RETURN [result] }; MaskGetReal: PROC[context: Context, key: RealKey] RETURNS[REAL] ~ { data: Data _ NARROW[context.data]; result: REAL; class: Class _ data.context.class; result _ class.GetReal[context: data.context, key: key]; RETURN [result] }; MaskGetT: PROC[context: Context] RETURNS[Transformation] ~ { data: Data _ NARROW[context.data]; result: Transformation; class: Class _ data.context.class; result _ class.GetT[context: data.context]; RETURN [result] }; MaskGetFont: PROC[context: Context] RETURNS[Font] ~ { data: Data _ NARROW[context.data]; result: Font; class: Class _ data.context.class; result _ class.GetFont[context: data.context]; RETURN [result] }; MaskGetColor: PROC[context: Context] RETURNS[Color] ~ { data: Data _ NARROW[context.data]; result: Color; class: Class _ data.context.class; result _ class.GetColor[context: data.context]; RETURN [result] }; MaskGetClipper: PROC[context: Context] RETURNS[Clipper] ~ { data: Data _ NARROW[context.data]; result: Clipper; class: Class _ data.context.class; result _ class.GetClipper[context: data.context]; RETURN [result] }; MaskConcatT: PROC[context: Context, m: Transformation] ~ { data: Data _ NARROW[context.data]; class: Class _ data.context.class; class.ConcatT[context: data.context, m: m]; }; MaskScale2T: PROC[context: Context, s: VEC] ~ { data: Data _ NARROW[context.data]; class: Class _ data.context.class; class.Scale2T[context: data.context, s: s]; }; MaskRotateT: PROC[context: Context, a: REAL] ~ { data: Data _ NARROW[context.data]; class: Class _ data.context.class; class.RotateT[context: data.context, a: a]; }; MaskTranslateT: PROC[context: Context, t: VEC] ~ { data: Data _ NARROW[context.data]; class: Class _ data.context.class; class.TranslateT[context: data.context, t: t]; }; MaskMove: PROC[context: Context, rounded: BOOL] ~ { data: Data _ NARROW[context.data]; class: Class _ data.context.class; class.Move[context: data.context, rounded: rounded]; }; MaskSetXY: PROC[context: Context, p: VEC] ~ { data: Data _ NARROW[context.data]; class: Class _ data.context.class; class.SetXY[context: data.context, p: p]; }; MaskSetXYRel: PROC[context: Context, v: VEC] ~ { data: Data _ NARROW[context.data]; class: Class _ data.context.class; class.SetXYRel[context: data.context, v: v]; }; MaskGetCP: PROC[context: Context, rounded: BOOL] RETURNS[VEC] ~ { data: Data _ NARROW[context.data]; result: VEC; class: Class _ data.context.class; result _ class.GetCP[context: data.context, rounded: rounded]; RETURN [result] }; MaskStartUnderline: PROC[context: Context] ~ { data: Data _ NARROW[context.data]; class: Class _ data.context.class; class.StartUnderline[context: data.context]; }; MaskMaskUnderline: PROC[context: Context, dy, h: REAL] ~ { data: Data _ NARROW[context.data]; class: Class _ data.context.class; class.MaskUnderline[context: data.context, dy: dy, h: h]; }; MaskCorrectMask: PROC[context: Context] ~ { data: Data _ NARROW[context.data]; class: Class _ data.context.class; class.CorrectMask[context: data.context]; }; MaskCorrectSpace: PROC[context: Context, v: VEC] ~ { data: Data _ NARROW[context.data]; class: Class _ data.context.class; class.CorrectSpace[context: data.context, v: v]; }; MaskSpace: PROC[context: Context, x: REAL] ~ { data: Data _ NARROW[context.data]; class: Class _ data.context.class; class.Space[context: data.context, x: x]; }; MaskSetCorrectMeasure: PROC[context: Context, v: VEC] ~ { data: Data _ NARROW[context.data]; class: Class _ data.context.class; class.SetCorrectMeasure[context: data.context, v: v]; }; MaskSetCorrectTolerance: PROC[context: Context, v: VEC] ~ { data: Data _ NARROW[context.data]; class: Class _ data.context.class; class.SetCorrectTolerance[context: data.context, v: v]; }; MaskCorrect: PROC[context: Context, action: PROC] ~ { data: Data _ NARROW[context.data]; class: Class _ data.context.class; class.Correct[context: data.context, action: action]; }; MaskDontCorrect: PROC[context: Context, action: PROC, saveCP: BOOL] ~ { data: Data _ NARROW[context.data]; class: Class _ data.context.class; class.DontCorrect[context: data.context, action: action, saveCP: saveCP]; }; MaskSetGray: PROC[context: Context, f: REAL] ~ { data: Data _ NARROW[context.data]; class: Class _ data.context.class; data.lastColorRequested _ ImagerColor.ColorFromGray[f]; IF data.active THEN class.SetColor[context: data.context, color: data.maskColor] ELSE class.SetGray[context: data.context, f: f]; }; MaskSetSampledColor: PROC[context: Context, pa: PixelArray, m: Transformation, colorOperator: ColorOperator] ~ { data: Data _ NARROW[context.data]; class: Class _ data.context.class; data.lastColorRequested _ ImagerColor.MakeSampledColor[pa, m, colorOperator]; IF data.active THEN class.SetColor[context: data.context, color: data.maskColor] ELSE class.SetSampledColor[context: data.context, pa: pa, m: m, colorOperator: colorOperator]; }; MaskSetSampledBlack: PROC[context: Context, pa: PixelArray, m: Transformation, clear: BOOL] ~ { data: Data _ NARROW[context.data]; class: Class _ data.context.class; data.lastColorRequested _ ImagerColor.MakeSampledBlack[pa, m, clear]; IF data.active THEN class.SetColor[context: data.context, color: data.maskColor] ELSE class.SetSampledBlack[context: data.context, pa: pa, m: m, clear: clear]; }; MaskClip: PROC[context: Context, path: PathProc, oddWrap: BOOL, exclude: BOOL] ~ { data: Data _ NARROW[context.data]; class: Class _ data.context.class; class.Clip[context: data.context, path: path, oddWrap: oddWrap, exclude: exclude]; }; MaskClipRectangle: PROC[context: Context, r: Rectangle, exclude: BOOL] ~ { data: Data _ NARROW[context.data]; class: Class _ data.context.class; class.ClipRectangle[context: data.context, r: r, exclude: exclude]; }; MaskClipRectangleI: PROC[context: Context, x, y, w, h: INTEGER, exclude: BOOL] ~ { data: Data _ NARROW[context.data]; class: Class _ data.context.class; class.ClipRectangleI[context: data.context, x: x, y: y, w: w, h: h, exclude: exclude]; }; MaskShow: PROC [context: Context, string: XStringProc, xrel: BOOL] ~ { data: Data _ NARROW[context.data]; class: Class _ data.context.class; class.Show[context: data.context, string: string, xrel: xrel]; }; MaskShowText: PROC [context: Context, text: REF READONLY TEXT, start, len: NAT, xrel: BOOL] ~ { data: Data _ NARROW[context.data]; class: Class _ data.context.class; class.ShowText[context: data.context, text: text, start: start, len: len, xrel: xrel]; }; MaskMaskFill: PROC [context: Context, path: PathProc, oddWrap: BOOL] ~ { data: Data _ NARROW[context.data]; class: Class _ data.context.class; class.MaskFill[context: data.context, path: path, oddWrap: oddWrap]; }; MaskMaskRectangle: PROC [context: Context, r: Rectangle] ~ { data: Data _ NARROW[context.data]; class: Class _ data.context.class; class.MaskRectangle[context: data.context, r: r]; }; MaskMaskRectangleI: PROC [context: Context, x, y, w, h: INTEGER] ~ { data: Data _ NARROW[context.data]; class: Class _ data.context.class; class.MaskRectangleI[context: data.context, x: x, y: y, w: w, h: h]; }; MaskMaskStroke: PROC [context: Context, path: PathProc, closed: BOOL] ~ { data: Data _ NARROW[context.data]; class: Class _ data.context.class; class.MaskStroke[context: data.context, path: path, closed: closed]; }; MaskMaskVector: PROC [context: Context, p1, p2: VEC] ~ { data: Data _ NARROW[context.data]; class: Class _ data.context.class; class.MaskVector[context: data.context, p1: p1, p2: p2]; }; MaskMaskDashedStroke: PROC [context: Context, path: PathProc, patternLen: NAT, pattern: PROC [i: NAT] RETURNS [REAL], offset, length: REAL] ~ { data: Data _ NARROW[context.data]; class: Class _ data.context.class; class.MaskDashedStroke[context: data.context, path: path, patternLen: patternLen, pattern: pattern, offset: offset, length: length]; }; MaskMaskPixel: PROC [context: Context, pa: PixelArray] ~ { data: Data _ NARROW[context.data]; class: Class _ data.context.class; class.MaskPixel[context: data.context, pa: pa]; }; MaskMaskBits: PROC [context: Context, base: LONG POINTER, wordsPerLine: NAT, sMin, fMin: NAT _ 0, sSize, fSize: NAT, tx, ty: INTEGER] ~ { data: Data _ NARROW[context.data]; class: Class _ data.context.class; class.MaskBits[context: data.context, base: base, wordsPerLine: wordsPerLine, sMin: sMin, fMin: fMin, sSize: sSize, fSize: fSize, tx: tx, ty: ty]; }; MaskDrawBits: PROC [context: Context, base: LONG POINTER, wordsPerLine: NAT, sMin, fMin: NAT _ 0, sSize, fSize: NAT, tx, ty: INTEGER] ~ { data: Data _ NARROW[context.data]; class: Class _ data.context.class; class.DrawBits[context: data.context, base: base, wordsPerLine: wordsPerLine, sMin: sMin, fMin: fMin, sSize: sSize, fSize: fSize, tx: tx, ty: ty]; }; MaskGetBoundingRectangle: PROC [context: Context] RETURNS [Rectangle] ~ { data: Data _ NARROW[context.data]; result: Rectangle; class: Class _ data.context.class; result _ class.GetBoundingRectangle[context: data.context]; RETURN [result] }; ViewReset: PROC [context: Context] ~ { data: Data _ NARROW[context.data]; ImagerBackdoor.ViewReset[context: data.context]; }; ViewTranslateI: PROC [context: Context, x, y: INTEGER] ~ { data: Data _ NARROW[context.data]; ImagerBackdoor.ViewTranslateI[context: data.context, x:x, y:y]; }; ViewClip: PROC [context: Context, path: PathProc, parity: BOOL, exclude: BOOL] ~ { data: Data _ NARROW[context.data]; ImagerBackdoor.ViewClip[context: data.context, path: path, parity: parity, exclude: exclude]; }; ViewClipRectangleI: PROC [context: Context, x, y, w, h: INTEGER, exclude: BOOL] ~ { data: Data _ NARROW[context.data]; ImagerBackdoor.ViewClipRectangleI[context: data.context, x:x, y:y, w:w, h:h, exclude:exclude]; }; ViewFromClient: PROC [context: Context, p: VEC] RETURNS [v: VEC] ~ { data: Data _ NARROW[context.data]; v _ ImagerBackdoor.ViewFromClient[context: data.context, p:p]; }; ClientFromView: PROC [context: Context, p: VEC] RETURNS [v: VEC] ~ { data: Data _ NARROW[context.data]; v _ ImagerBackdoor.ClientFromView[context: data.context, p:p]; }; DeviceFromView: PROC [context: Context, p: VEC] RETURNS [v: VEC] ~ { data: Data _ NARROW[context.data]; v _ ImagerBackdoor.DeviceFromView[context: data.context, p:p]; }; ViewFromDevice: PROC [context: Context, p: VEC] RETURNS [v: VEC] ~ { data: Data _ NARROW[context.data]; v _ ImagerBackdoor.ViewFromDevice[context: data.context, p:p]; }; DeviceFromClient: PROC [context: Context, p: VEC] RETURNS [v: VEC] ~ { data: Data _ NARROW[context.data]; v _ ImagerBackdoor.DeviceFromClient[context: data.context, p:p]; }; ClientFromDevice: PROC [context: Context, p: VEC] RETURNS [v: VEC] ~ { data: Data _ NARROW[context.data]; v _ ImagerBackdoor.ClientFromDevice[context: data.context, p:p]; }; MoveViewRectangle: PROC [context: Context, width, height, fromX, fromY, toX, toY: INTEGER] ~ { data: Data _ NARROW[context.data]; ImagerBackdoor.MoveViewRectangle[context: data.context, width:width, height:height, fromX:fromX, fromY:fromY, toX:toX, toY:toY]; }; TestViewRectangle: PROC [context: Context, x, y, w, h: INTEGER] RETURNS [vis: ImagerBackdoor.Visibility] ~ { data: Data _ NARROW[context.data]; vis _ ImagerBackdoor.TestViewRectangle[context: data.context, x:x, y:y, w:w, h:h]; }; END. -- ImagerMaskContextImpl.mesa -- Mik Lamming - July 30, 1986 5:34:19 pm PDT Last edited by: Mik Lamming - July 31, 1986 12:16:56 pm PDT ΚŽ˜Jšœ™™-Icode™;—J™KšΟk œψ˜K˜KšΠlnœœ˜$Kšœ#˜*Kšœ&˜-K˜Kšœ˜K˜Kšœœ˜"Kšœ œœΟc˜LK˜šœœœ˜K˜—Kšœ œ˜'Kšœ œ˜'Kšœœ˜Kšœœ˜+Kšœ œ˜Kšœœ˜#Kšœ œ˜)Kšœ œ˜%Kšœ œ"˜2Kšœœ"˜7Kšœœ˜Kšœœ˜1Kšœ œ˜%Kšœ œ˜%Kšœ œ"˜1Kšœœ'˜;Kšœœ*˜AKšœœ œ˜Kšœœ˜Kšœ œ˜+Kšœ œ˜,Kšœ  œ!˜9Kšœœ˜%Kšœ œ˜'Kšœ œ˜*K˜Kšœœœ ˜šœ œœ˜Kšœ˜Kšœ ˜!Kšœ˜Kšœœ˜K˜K˜—šœ-œ#˜SKšœ ˜ Kšœ˜Kšœ˜Kšœ˜Kšœ'˜'Kšœ˜Kšœ˜Kšœ˜Kšœ˜Kšœ#˜#Kšœ#˜#Kšœ%˜%Kšœ$˜$K˜K˜—šœœ ˜#Kšœ˜Kšœ˜Kšœ˜Kšœ˜Kšœ˜Kšœ˜Kšœ˜Kšœ˜Kšœ˜Kšœ˜Kšœ˜Kšœ˜Kšœ˜Kšœ˜Kšœ˜Kšœ˜Kšœ˜Kšœ˜Kšœ˜Kšœ˜Kšœ˜Kšœ˜Kšœ˜Kšœ#˜#Kšœ!˜!Kšœ˜Kšœ˜Kšœ˜Kšœ)˜)Kšœ-˜-Kšœ˜Kšœ˜Kšœ˜Kšœ%˜%Kšœ%˜%Kšœ˜Kšœ˜Kšœ'˜'Kšœ!˜!Kšœ#˜#Kšœ˜Kšœ˜Kšœ˜Kšœ˜Kšœ˜Kšœ!˜!Kšœ#˜#Kšœ˜Kšœ/˜/Kšœœ!˜AK˜K˜—K˜š Οnœ œ;œœœ"˜‡Kšœ œ4˜DKšœœ/œ˜LKšœ˜K˜—š œ œœœ˜`šœœ˜šœ˜Kšœ˜Kšœ˜—Kšœ˜—K˜—K˜š  œ œ7˜Pšœœ˜šœ˜Kšœ˜Kšœ˜—Kšœ˜—Kšœ˜K˜—š  œ œ"œœ˜Kšœœ˜šœ˜Kšœ"˜"Kšœ˜šœ ˜Kšœ<˜<—šœ˜KšœF˜F—Kšœ˜—Kšœ˜—Kšœ˜K˜—K˜š  œœœœ˜?Kšœ œ˜"Kšœ œœ˜Kšœ:˜;Kšœ(˜)Kšœ"˜"Kšœ>˜>Kšœ˜Kšœ-˜-Kšœ˜Kšœ˜—š  œœ%œ˜=Kšœ œ˜"Kšœ"˜"Kšœ8˜8Kšœ˜—š  œœ&œ˜˜>Kšœ ˜Kšœ˜—š œœ˜.Kšœ œ˜"Kšœ"˜"Kšœ,˜,Kšœ˜—š œœœ˜:Kšœ œ˜"Kšœ"˜"Kšœ9˜9Kšœ˜—š œœ˜+Kšœ œ˜"Kšœ"˜"Kšœ)˜)Kšœ˜—š œœœ˜4Kšœ œ˜"Kšœ"˜"Kšœ0˜0Kšœ˜—š  œœœ˜.Kšœ œ˜"Kšœ"˜"Kšœ)˜)Kšœ˜—š œœœ˜9Kšœ œ˜"Kšœ"˜"Kšœ5˜5Kšœ˜—š œœœ˜;Kšœ œ˜"Kšœ"˜"Kšœ7˜7Kšœ˜—š  œœœ˜5Kšœ œ˜"Kšœ"˜"Kšœ5˜5Kšœ˜—š œœœ œ˜GKšœ œ˜"Kšœ"˜"KšœI˜IKšœ˜—š  œœœ˜0Kšœ œ˜"Kšœ"˜"Kšœ7˜7šœ ˜Kšœ<˜<—šœ˜Kšœ+˜+—Kšœ˜—š œœW˜pKšœ œ˜"Kšœ"˜"KšœM˜Mšœ ˜Kšœ<˜<—šœ˜KšœY˜Y—Kšœ˜—š œœ=œ˜_Kšœ œ˜"Kšœ"˜"KšœE˜Ešœ ˜Kšœ<˜<—šœ˜KšœI˜I—Kšœ˜—š œœ,œ œ˜RKšœ œ˜"Kšœ"˜"KšœR˜RKšœ˜—š œœ*œ˜JKšœ œ˜"Kšœ"˜"KšœC˜CKšœ˜—š œœœ œ˜RKšœ œ˜"Kšœ"˜"KšœV˜VKšœ˜—š œœ/œ˜FKšœ œ˜"Kšœ"˜"Kšœ>˜>Kšœ˜—š  œœœœœœœ˜_Kšœ œ˜"Kšœ"˜"KšœV˜VKšœ˜—š  œœ-œ˜HKšœ œ˜"Kšœ"˜"KšœD˜DKšœ˜—š œœ%˜˜>K˜—š  œœœœœ˜DKšœ œ˜"Jšœ>˜>K˜—š  œœœœœœ˜DKšœ œ˜"Jšœ>˜>K˜—š  œœœœœœ˜DKšœ œ˜"Jšœ>˜>K˜—š  œœœœœœ˜FKšœ œ˜"Jšœ@˜@K˜—š  œœœœœœ˜FKšœ œ˜"Jšœ@˜@K˜—š œœœ'œ˜^Kšœ œ˜"Jšœ€˜€K˜—š  œœœ œœ%˜lKšœ œ˜"JšœR˜RK˜—K˜K˜K˜K˜K˜K˜Kšœ˜J˜—…—E6XT