dicomscope-3.6.0/0002755000265600020320000000000011262371102012766 5ustar tilleaadmindicomscope-3.6.0/DICOMscope/0002755000265600020320000000000011135621372014661 5ustar tilleaadmindicomscope-3.6.0/DICOMscope/cacerts/0002755000265600020320000000000011135621372016305 5ustar tilleaadmindicomscope-3.6.0/DICOMscope/cacerts/b628ba89.00000644000265600020320000000520307770306714017543 0ustar tilleaadmin-----BEGIN CERTIFICATE----- MIIHlzCCBX+gAwIBAgIBADANBgkqhkiG9w0BAQQFADCByzELMAkGA1UEBhMCREUx FjAUBgNVBAgTDU5pZWRlcnNhY2hzZW4xEjAQBgNVBAcTCU9sZGVuYnVyZzEOMAwG A1UEChMFT0ZGSVMxOTA3BgNVBAsTMEhlYWx0aGNhcmUgSW5mb3JtYXRpb24gYW5k IENvbW11bmljYXRpb24gU3lzdGVtczEmMCQGA1UEAxMdRENNVEsgQ2VydGlmaWNh dGlvbiBBdXRob3JpdHkxHTAbBgkqhkiG9w0BCQEWDmRpY29tQG9mZmlzLmRlMB4X DTAxMDYwMTE2MTUwOVoXDTExMDYwMTE2MTUxMFowgcsxCzAJBgNVBAYTAkRFMRYw FAYDVQQIEw1OaWVkZXJzYWNoc2VuMRIwEAYDVQQHEwlPbGRlbmJ1cmcxDjAMBgNV BAoTBU9GRklTMTkwNwYDVQQLEzBIZWFsdGhjYXJlIEluZm9ybWF0aW9uIGFuZCBD b21tdW5pY2F0aW9uIFN5c3RlbXMxJjAkBgNVBAMTHURDTVRLIENlcnRpZmljYXRp b24gQXV0aG9yaXR5MR0wGwYJKoZIhvcNAQkBFg5kaWNvbUBvZmZpcy5kZTCCAiIw DQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAKgaj+KBWZew4fFJThBlvIATKsHu ogBvAaoemWmTQFThgynrCGTX0RMk1ja5Srqltqgq/fYhrvsPQ/Mver8RLSmhGDLy rsi2OJ4VYXj3lDlPYjjpePFVTw0KnigxVokmtXGVzJF+RPCB/l3Mm78XM2nX38ZJ CyRAu0ffnm9e3qzBcBjIBlgpu5GxSDwkchQGWnzwPWwLIrbjrklJgjBtCfqK2uqo eBUQc1hEJUq36pNOXDrhWEfR5Tfsps8YqkAFCcicehcJH/8xIpEYHzB0AC+1Obh6 YCZ27QPlKvGIRdEPhYbswI1HYlJvVrfjQ3dLWxzy8qslEp54lPw/G7ei9fHCLVHP TYQce5w9glYUE42Re61mVgXvqNfifz4gDmDL3/Ua+Y8De3AgLR+cyFa9JroOHHck A14jYowCMaFG20zeelcuEvzkE3tZ/GAexUohHKItdSGqD7hTz7PpOqPO7zQor7XK iYJoBSOaP573nHJVkxmhD6pHHdS+kyURxRM0HEw4TukUdDVm6lupRdWLhj2o56NR A/E/rrYcgROo7BRCqo13u0zFEgAyz+hRs8OpaOuoBs3fcGlaF4COJ9lHPrI7vfS/ 42tL6QvpabqPK9BKbrUxYKXEV/WU56F+ILSUhIpcpnW6znoEUGsMM67swWaPecyq D1Awcg89oDN9KwfLAgMBAAGjggGCMIIBfjAdBgNVHQ4EFgQUC3hCcpVRJG3Q5RZ4 sXGIuz+j39UwgfgGA1UdIwSB8DCB7YAUC3hCcpVRJG3Q5RZ4sXGIuz+j39WhgdGk gc4wgcsxCzAJBgNVBAYTAkRFMRYwFAYDVQQIEw1OaWVkZXJzYWNoc2VuMRIwEAYD VQQHEwlPbGRlbmJ1cmcxDjAMBgNVBAoTBU9GRklTMTkwNwYDVQQLEzBIZWFsdGhj YXJlIEluZm9ybWF0aW9uIGFuZCBDb21tdW5pY2F0aW9uIFN5c3RlbXMxJjAkBgNV BAMTHURDTVRLIENlcnRpZmljYXRpb24gQXV0aG9yaXR5MR0wGwYJKoZIhvcNAQkB Fg5kaWNvbUBvZmZpcy5kZYIBADAMBgNVHRMEBTADAQH/MAsGA1UdDwQEAwIBBjAR BglghkgBhvhCAQEEBAMCAAcwGQYDVR0RBBIwEIEOZGljb21Ab2ZmaXMuZGUwGQYD VR0SBBIwEIEOZGljb21Ab2ZmaXMuZGUwDQYJKoZIhvcNAQEEBQADggIBAIr7Qg7E cfyCqEeonfGbuEYkL/QisC5E9KUp/fK+i0+sY22mrk9C7NZwauIQyjYAz05B36LI AIsjV2trNT5CdfYckEcxCT116wlB0+39jaqZ81tozdWolmWb7FpAIjrsFgv0tgWI kq/zkRutRqW0bVzvPZVAZd/NxMqs7wZbHonehHy6mCecBi4izX4hS/LCXUNxe4Wo Oo0sTrztZW1ZrwnmhfxXHv+FqSdXLJeO4ZT5AfcJmdXKdF1N0JChgFn0IzMt+jyd Z+GbHxEJTYsJgV0n+k/m5QtNFEoaMUutLl/GTH+7wiV0zBRYXzDNsK96DVkdgwUn B9PnfBbCVVqJ5vtRwUAnmJFJiIa155kETLA5rFRUhEww+RyBHdTztTe8mnHjQV37 dzNZLlMus8E4kiEzU7n6twqynRaDzOjqQSHbAAcWicbwbRXOtwC61ZyC0sGMnybW cRA43bkd9ekZAu65ZpY8Az08lLJvgv0awnzLbBK1MASBqIm9ZBwqzIqiyQ1W+M63 +oNlxNZ2TFpfNY3JqvA3ZF029lNao1pSOgcyHtBNgsOs29X4xyqG/72TWgN2b4Ru x5HKs1zJprv/GtjmVmwclHdSyrxDbffg1IT/rtTe+TJ2Vg/Cl5TDgRtYKfs4v8zb 2M6y+XewOs92mPqSc8s3rOdAazWHD5SNhOOf -----END CERTIFICATE----- dicomscope-3.6.0/DICOMscope/codes.dic0000644000265600020320000001542407237517562016460 0ustar tilleaadmin# This text file contains a dictionary specifying all codes which can be # selected from the DICOMscope 3.x application. Many codes (at least the # code meanings) are directly taken from the current "letter ballot" ver- # sion of Supplement 57 "DICOM Content Mapping Resource (DCMR)". # # Each line represents an entry in the code dictionary. Each line has 5 # fields (Context Group, Coding Scheme Designator, Coding Scheme Version, # Code Value, Code Meaning). Each field must be separated by a comma and # surrounded by quotation marks. # # Comments have a '#' at the beginning of the line. # # Context Group Coding Scheme Designator Version Code Value Code Meaning # # ------------------------------------------------------------------------------ # # Document Title: Concept Name codes for CONTAINER content items (root only) # "Document Title", "99_OFFIS_DCMTK", "", "DT.01", "Radiology Report" "Document Title", "99_OFFIS_DCMTK", "", "DT.02", "General Radiology Report" "Document Title", "99_OFFIS_DCMTK", "", "DT.03", "Ultrasound Report" "Document Title", "99_OFFIS_DCMTK", "", "DT.04", "CT Report" "Document Title", "99_OFFIS_DCMTK", "", "DT.05", "MR Report" "Document Title", "99_OFFIS_DCMTK", "", "DT.06", "Consultation Report" "Document Title", "99_OFFIS_DCMTK", "", "DT.07", "Consultation Report" "Document Title", "99_OFFIS_DCMTK", "", "DT.08", "Cardiac Catheterization Report" "Document Title", "99_OFFIS_DCMTK", "", "DT.09", "Diagnostic Imaging Report" # # ----------------------------------------------------------------------------- # # Section Headings: Concept Name codes for CONTAINER content items (non-root) # "Section Heading", "99_OFFIS_DCMTK", "", "SH.01", "History" "Section Heading", "99_OFFIS_DCMTK", "", "SH.02", "Request" "Section Heading", "99_OFFIS_DCMTK", "", "SH.03", "Current Procedure Descriptions" "Section Heading", "99_OFFIS_DCMTK", "", "SH.04", "Prior Procedure Descriptions" "Section Heading", "99_OFFIS_DCMTK", "", "SH.05", "Previous Findings" "Section Heading", "99_OFFIS_DCMTK", "", "SH.06", "Findings" "Section Heading", "99_OFFIS_DCMTK", "", "SH.07", "Impressions" "Section Heading", "99_OFFIS_DCMTK", "", "SH.08", "Recommendations" "Section Heading", "99_OFFIS_DCMTK", "", "SH.09", "Conclusions" "Section Heading", "99_OFFIS_DCMTK", "", "SH.10", "Addendum" # # ----------------------------------------------------------------------------- # # Report Elements: Concept Name codes for TEXT content items # "Report Element", "99_OFFIS_DCMTK", "", "RE.01", "History" "Report Element", "99_OFFIS_DCMTK", "", "RE.02", "Request" "Report Element", "99_OFFIS_DCMTK", "", "RE.03", "Procedure Description" "Report Element", "99_OFFIS_DCMTK", "", "RE.04", "Previous Finding" "Report Element", "99_OFFIS_DCMTK", "", "RE.05", "Finding" "Report Element", "99_OFFIS_DCMTK", "", "RE.06", "Impression" "Report Element", "99_OFFIS_DCMTK", "", "RE.07", "Recommendation" "Report Element", "99_OFFIS_DCMTK", "", "RE.08", "Conclusion" # # ----------------------------------------------------------------------------- # # Image Reference: Concept Name codes for IMAGE content items # "Image Reference", "99_OFFIS_DCMTK", "", "IR.01", "Baseline" "Image Reference", "99_OFFIS_DCMTK", "", "IR.02", "Best illustration of finding" # # ----------------------------------------------------------------------------- # # Organizational Roles: Concept Name codes for PNAME content items # "Organizational Role", "99_OFFIS_DCMTK", "", "OR.01", "Physician" "Organizational Role", "99_OFFIS_DCMTK", "", "OR.02", "Nurse" "Organizational Role", "99_OFFIS_DCMTK", "", "OR.03", "Technologist" "Organizational Role", "99_OFFIS_DCMTK", "", "OR.04", "Radiographer" "Organizational Role", "99_OFFIS_DCMTK", "", "OR.05", "Intern" "Organizational Role", "99_OFFIS_DCMTK", "", "OR.06", "Resident" "Organizational Role", "99_OFFIS_DCMTK", "", "OR.07", "Registrar" "Organizational Role", "99_OFFIS_DCMTK", "", "OR.08", "Fellow" "Organizational Role", "99_OFFIS_DCMTK", "", "OR.09", "Attending" # synonym for "Attending" "Organizational Role", "99_OFFIS_DCMTK", "", "OR.09", "Consultant" "Organizational Role", "99_OFFIS_DCMTK", "", "OR.10", "Surgeon" # # ----------------------------------------------------------------------------- # # Numeric Measurements: Concept Name codes for NUM content items # "Numeric Measurement", "99_OFFIS_DCMTK", "", "NM.01", "Length" "Numeric Measurement", "SNM3", "", "G-A220", "Width" "Numeric Measurement", "99_OFFIS_DCMTK", "", "NM.03", "Depth" "Numeric Measurement", "SNM3", "", "M-02550", "Diameter" "Numeric Measurement", "SNM3", "", "T-12420", "Radius" # # ----------------------------------------------------------------------------- # # Measurement Units: Measurement Unit codes for NUM content items # "Measurement Unit", "UCUM", "1.4", "cm", "centimeter" "Measurement Unit", "UCUM", "1.4", "mm", "millimeter" "Measurement Unit", "UCUM", "1.4", "um", "micrometer" # # ----------------------------------------------------------------------------- # # IHE Year 2 Technical Framework: Concept Name codes used in IHE Year 2 templates # "IHE Year 2 TF", "99_OFFIS_DCMTK", "", "IHE.01", "Document Title" "IHE Year 2 TF", "99_OFFIS_DCMTK", "", "IHE.02", "Observation Context Mode" "IHE Year 2 TF", "99_OFFIS_DCMTK", "", "IHE.03", "DIRECT" "IHE Year 2 TF", "99_OFFIS_DCMTK", "", "IHE.04", "Recording Observer's Name" "IHE Year 2 TF", "99_OFFIS_DCMTK", "", "IHE.05", "Recording Observer's Organization Name" "IHE Year 2 TF", "99_OFFIS_DCMTK", "", "IHE.06", "Observation Context Mode" "IHE Year 2 TF", "99_OFFIS_DCMTK", "", "IHE.07", "PATIENT" "IHE Year 2 TF", "99_OFFIS_DCMTK", "", "IHE.08", "Section Heading" "IHE Year 2 TF", "99_OFFIS_DCMTK", "", "IHE.09", "Report Text" "IHE Year 2 TF", "99_OFFIS_DCMTK", "", "IHE.10", "Image Reference" "IHE Year 2 TF", "99_OFFIS_DCMTK", "", "IHE.11", "Key Image Description"dicomscope-3.6.0/DICOMscope/database/0002755000265600020320000000000011262371102016417 5ustar tilleaadmindicomscope-3.6.0/DICOMscope/database/empty.txt0000644000265600020320000000000011262371102020302 0ustar tilleaadmindicomscope-3.6.0/DICOMscope/dcmpschk.tcl0000644000265600020320000001142207125700566017166 0ustar tilleaadmin#!/bin/sh # the next line restarts using wish \ exec wish4.2 "$0" "$@" # load text from file into window proc loadText {w name} { # $w configure -state normal set f [open $name] while {![eof $f]} { gets $f s if {[string first "-" $s] == 0 || [string first "=" $s] == 0} { $w insert end $s tag_emph } elseif {[string first "Testing: " $s] == 0} { $w insert end $s tag_emph } elseif {[string first "Pass " $s] == 0} { $w insert end $s tag_emph } elseif {[string first "Error: " $s] == 0} { $w insert end $s tag_err } elseif {[string first "Warning: " $s] == 0} { $w insert end $s tag_warn } elseif {[string first "Informational: " $s] == 0} { $w insert end $s tag_inf } elseif {[string first "Test passed" $s] == 0} { $w insert end $s tag_passed } elseif {[string first "Test failed" $s] == 0} { $w insert end $s tag_failed } else { $w insert end $s } $w insert end "\n" } close $f # $w configure -state disabled } # search string in text window and mark all positions with tag proc findText {w name tag} { $w tag remove $tag 1.0 end set hits 0 set pos -1 if {$name != ""} { set cur 1.0 while 1 { set cur [$w search -count length -- $name $cur end] if {$cur == ""} { break } if {$pos < 0} { set pos $cur } $w tag add $tag $cur "$cur + $length char" set cur [$w index "$cur + $length char"] incr hits } } if {$pos >= 0} { $w see $pos } return $hits } # search string in both text windows proc findTextCommand {name} { global hitsText set dh [findText .report.text $name tag_found] set hitsText [concat "Hits: " $dh] focus .find.entry .find.entry delete 0 end } # set up text window proc setupTextWindow {} { global findName global hitsText set hitsText "Hits: 0" frame .find button .find.button -text "Find" -command "findTextCommand \$findName" -width 4 -anchor w entry .find.entry -textvariable findName label .find.label -textvariable hitsText -width 13 pack .find.button -side left pack .find.label -side right pack .find.entry -fill x -expand yes -padx 5 frame .report text .report.text -height 1 -wrap none -background #fff7e9 -selectbackground lightgray -font -*-Courier-Medium-R-Normal--*-150-*-*-*-*-*-* -xscrollcommand ".report.xscroll set" -yscrollcommand ".report.yscroll set" scrollbar .report.xscroll -orient horizontal -command ".report.text xview" scrollbar .report.yscroll -orient vertical -command ".report.text yview" pack .report.xscroll -side bottom -fill x pack .report.yscroll -side right -fill y pack .report.text -expand yes -fill both .report.text tag configure tag_emph -foreground black -font -*-Courier-Bold-R-Normal--*-150-*-*-*-*-*-* .report.text tag configure tag_found -background lightgray -underline true .report.text tag configure tag_warn -background #ffff8c .report.text tag configure tag_err -background #ff8c8c .report.text tag configure tag_inf -background #aae6aa .report.text tag configure tag_passed -foreground white -background black -font -*-Courier-Bold-R-Normal--*-150-*-*-*-*-*-* .report.text tag configure tag_failed -foreground white -background black -font -*-Courier-Bold-R-Normal--*-150-*-*-*-*-*-* pack .find -side top -fill x pack .report -expand yes -fill both bind .find.entry "findTextCommand \$findName" bind .report.text {if {[.report.text tag nextrange sel 1.0] != ""} {findTextCommand [selection get]}} focus .find.entry } # main window catch {eval destroy [winfo child .]} errMsg if {$errMsg > 0} { exit 1 } # initialization set temp "/tmp" if [info exists env(TEMP)] { set temp $env(TEMP) } elseif [info exists env(TMP)] { set temp $env(TMP) } set checkReport [file join $temp dcmpschk.report] set checkApp "dcmpschk" # set up window wm iconname . "DICOM Checker" if {$tcl_platform(os) == "SunOS"} { wm geometry . 956x903 } else { wm geometry . [expr int([winfo screenwidth .] * 0.995)]x[expr int([winfo screenheight .] * 0.938)] } wm geometry . +0+0 wm minsize . 400 165 setupTextWindow # set up bindings bind all {destroy .} # start check process if {$argc > 0} { set fileName [lindex $argv 0] wm title . "Please wait ..." catch {exec $checkApp -v $fileName >& $checkReport} loadText .report.text $checkReport update wm title . [format "DICOM PState Checker - %s" $fileName] } else { wm title . [format "DICOM PState Checker - "] } dicomscope-3.6.0/DICOMscope/dcmpsdmp.tcl0000644000265600020320000001243707740556346017220 0ustar tilleaadmin#!/bin/sh # the next line restarts using wish \ exec wish4.2 "$0" "$@" # inserts the tag value proc insertTagValue {w s} { set sp [string index $s 0] if {$sp == "("} { if {[string match {*\,*} $s] == 0} { $w insert end $s tag_val1 } else { $w insert end $s tag_val2 } } elseif {$sp == "\["} { $w insert end $s tag_val2 } elseif {$sp == "="} { $w insert end $s tag_val3 } else { $w insert end $s tag_val4 } } # load text from file into window proc loadText {w name} { # $w configure -state normal set f [open $name] while {![eof $f]} { gets $f s set sp [string index $s 0] if {$sp == "#" || $sp == "*"} { $w insert end $s tag_emph } elseif {[string match {(\ )*\(*\)*\#*} $s] == 0} { set sp1 [string first ")" $s] $w insert end [string range $s 0 $sp1] tag_tag set sp1 [expr int ($sp1 + 1)] set sp2 [expr int ($sp1 + 3)] $w insert end [string range $s $sp1 $sp2] tag_vr set sp3 [string last "#" $s] set sp1 [expr int ($sp2 + 1)] set sp2 [expr int ($sp3 - 1)] insertTagValue $w [string range $s $sp1 $sp2] set ss [string range $s $sp3 end] set sp3 [string last " " $ss] set sp2 [expr int ($sp3)] $w insert end [string range $ss 0 $sp2] tag_len set sp1 [expr int ($sp3 + 1)] $w insert end [string range $ss $sp1 end] tag_name } else { $w insert end $s } $w insert end "\n" } close $f # $w configure -state disabled } # search string in text window and mark all positions with tag proc findText {w name tag} { $w tag remove $tag 1.0 end set hits 0 set pos -1 if {$name != ""} { set cur 1.0 while 1 { set cur [$w search -count length -- $name $cur end] if {$cur == ""} { break } if {$pos < 0} { set pos $cur } $w tag add $tag $cur "$cur + $length char" set cur [$w index "$cur + $length char"] incr hits } } if {$pos >= 0} { $w see $pos } return $hits } # search string in both text windows proc findTextCommand {name} { global hitsText set dh [findText .dump.text $name tag_found] set hitsText [concat "Hits: " $dh] focus .find.entry .find.entry delete 0 end } # set up text window proc setupTextWindow {} { global findName global hitsText set hitsText "Hits: 0" frame .find button .find.button -text "Find" -command "findTextCommand \$findName" -width 4 -anchor w entry .find.entry -textvariable findName label .find.label -textvariable hitsText -width 13 pack .find.button -side left pack .find.label -side right pack .find.entry -fill x -expand yes -padx 5 frame .dump text .dump.text -height 1 -wrap none -background #fff7e9 -selectbackground lightgray -font -*-Courier-Medium-R-Normal--*-150-*-*-*-*-*-* -xscrollcommand ".dump.xscroll set" -yscrollcommand ".dump.yscroll set" scrollbar .dump.xscroll -orient horizontal -command ".dump.text xview" scrollbar .dump.yscroll -orient vertical -command ".dump.text yview" pack .dump.xscroll -side bottom -fill x pack .dump.yscroll -side right -fill y pack .dump.text -expand yes -fill both .dump.text tag configure tag_emph -foreground black -font -*-Courier-Bold-R-Normal--*-150-*-*-*-*-*-* .dump.text tag configure tag_found -background lightgray -underline true .dump.text tag configure tag_tag -foreground darkblue .dump.text tag configure tag_vr -foreground darkred .dump.text tag configure tag_val1 -foreground darkgray .dump.text tag configure tag_val2 -foreground black .dump.text tag configure tag_val3 -foreground darkblue .dump.text tag configure tag_val4 -foreground black .dump.text tag configure tag_len -foreground darkgray .dump.text tag configure tag_name -foreground darkblue pack .find -side top -fill x pack .dump -expand yes -fill both bind .find.entry "findTextCommand \$findName" bind .dump.text {if {[.dump.text tag nextrange sel 1.0] != ""} {findTextCommand [selection get]}} focus .find.entry } # main window catch {eval destroy [winfo child .]} errMsg if {$errMsg > 0} { exit 1 } # initialization set temp "/tmp" if [info exists env(TEMP)] { set temp $env(TEMP) } elseif [info exists env(TMP)] { set temp $env(TMP) } set dumpReport [file join $temp dcmdump.report] set dumpApp "dcmdump" # set up window wm iconname . "DICOM Dump" if {$tcl_platform(os) == "SunOS"} { wm geometry . 956x903 } else { wm geometry . [expr int([winfo screenwidth .] * 0.995)]x[expr int([winfo screenheight .] * 0.938)] } wm geometry . +0+0 wm minsize . 400 165 setupTextWindow # set up bindings bind all {destroy .} # start dump process if {$argc > 0} { set fileName [lindex $argv 0] wm title . "Please wait ..." catch {exec $dumpApp $fileName >& $dumpReport} loadText .dump.text $dumpReport update wm title . [format "DICOM File Contents - %s" $fileName] } else { wm title . [format "DICOM File Contents - "] } dicomscope-3.6.0/DICOMscope/DICOMscope.cfg0000644000265600020320000015156607770303302017243 0ustar tilleaadmin# # Copyright (C) 1998-2003, OFFIS # # This software and supporting documentation were developed by # # Kuratorium OFFIS e.V. # Healthcare Information and Communication Systems # Escherweg 2 # D-26121 Oldenburg, Germany # # THIS SOFTWARE IS MADE AVAILABLE, AS IS, AND OFFIS MAKES NO WARRANTY # REGARDING THE SOFTWARE, ITS PERFORMANCE, ITS MERCHANTABILITY OR # FITNESS FOR ANY PARTICULAR USE, FREEDOM FROM ANY COMPUTER DISEASES OR # ITS CONFORMITY TO ANY SPECIFICATION. THE ENTIRE RISK AS TO QUALITY AND # PERFORMANCE OF THE SOFTWARE IS WITH THE USER. # # Module: dcmpstat # # Author: Marco Eichelberg et al. # # Purpose: Sample configuration file for DCMTK "dcmpstat" tools and the # DICOMscope application # # Last Update: $Author: meichel $ # Update Date: $Date: 2003/09/05 16:30:17 $ # CVS/RCS Revision: $Revision: 1.48 $ # Status: $State: Exp $ # # ============================================================================ # General settings for the viewer applications [[GENERAL]] # ============================================================================ # ---------------------------------------------------------------------------- # General application settings in this section. [APPLICATION] # ---------------------------------------------------------------------------- # Directory in which log files are stored. # Default: application root directory, for print: same as spool directory. LogDirectory = log # Name of the file where the general log messages are stored. # Default: no log file, i.e. do not write any log messages. LogFile = general.log # Filter for the general log messages: # ERROR = only error messages # WARN = also warning messages (includes ERROR) # INFO = also informational messages (includes WARN) # DEBUG = also debug messages (includes INFO) # Default: no general log messages at all. LogLevel = INFO # Port on which the GUI application accepts notification messages from # the network processes. Default: 0 (no notifications sent) MessagePort = 11000 # Indicates whether client processes are allowed to keep their notification # message port open during the lifetime of the process. Default: false KeepMessagePortOpen = false # ---------------------------------------------------------------------------- # Monitor calibration settings in this section. [MONITOR] # ---------------------------------------------------------------------------- # Settings for Clinton Medical monitor with SXGA 1152x864 # monitor description file for software based correction (GSDF etc.) #Characteristics = monitor.lut # screen resolution in pixels, width\height Resolution = 1152\864 # size of the visible screen area in mm, width\height Screensize = 400\300 # preview size in pixels, width\height PreviewSize = 256\256 # Settings for Siemens Monitor with Dome Board # # screen resolution in pixels, width\height #Resolution = 2048\2560 # # size of the visible screen area in mm, width\height #ScreenSize = 280\367 # # preview size in pixels, width\height #PreviewSize = 512\512 # ---------------------------------------------------------------------------- # General print settings in this section. [PRINT] # ---------------------------------------------------------------------------- # Path to the DICOM print spooler (Print Management SCU) application to be used Spooler = dcmprscu # Path to the DICOM print server (Print Management SCP) application to be used Server = dcmprscp # Directory in which spooled print jobs reside Directory = spool # Log complete DICOM protocol (--dump --verbose) in print spooler/server. # Default: false DetailedLog = true # Log complete ACSE and DIMSE protocol in binary form (as DICOM file). # This setting is independent from the DetailedLog setting and currently # only implemented by the print server. Default: false BinaryLog = false # Time (in seconds) the print spooler should wait before polling (again) # the spool directory. Default: use spooler default. Sleep = 5 # Minimum resolution for a print bitmap (width\height in pixel). If a # bitmap to be printed is smaller than this, it is scaled up by an # appropriate integer factor before burning in graphical annotations. This # allows to have acceptable annotation visibility on low resolution # bitmaps. # Default: No lower limit for the print bitmap resolution. MinPrintResolution = 1024\1024 # Maximum resolution for a print bitmap (width\height in pixel). If a # bitmap to be printed is larger than this, it is scaled down by an # appropriate integer factor before sent to the printer. This allows to # reduce the amount of pixel data to be transfered. # Default: No upper limit for the print bitmap resolution. MaxPrintResolution = 8192\8192 # Specifies the default value for the Illumination to be transmitted to the # printer when using the Presentation LUT SOP Class. Default: 2000 DefaultIllumination = 2000 # Specifies the default value for the Reflected Ambient Light to be transmitted # to the printer when using the Presentation LUT SOP Class. Default: 10 DefaultReflection = 10 # Delete print job files from spool directory after processing. # If false, spool jobs are renamed instead. Default is false. DeletePrintJobs = true # Always delete terminate job files from spool directory (these special print job files # are created to inform the spool processes that the application has been terminated). # If false, terminate jobs are handled like normal print jobs (see DeletePrintJobs). # Default is false. AlwaysDeleteTerminateJobs = true # ---------------------------------------------------------------------------- # Database settings in this section. [DATABASE] # ---------------------------------------------------------------------------- # directory in which DICOM images and index.dat reside Directory = database # Path to the dump tool used to display the contents of DICOM files located # in the database Dump = c:\program files\tcl\bin\wish83 dcmpsdmp.tcl # Path to the check tool used to evaluate the contents of DICOM files located # in the database Check = c:\program files\tcl\bin\wish83 dcmpschk.tcl # ---------------------------------------------------------------------------- # General Presentation LUT settings in this section. [LUT] # ---------------------------------------------------------------------------- # directory in which LUT files reside Directory = lut # ---------------------------------------------------------------------------- # General Structured Reporting (SR) settings in this section. [REPORT] # ---------------------------------------------------------------------------- # directory in which SR "template" files reside Directory = reports # ---------------------------------------------------------------------------- # This section contains the settings for network communication. [NETWORK] # ---------------------------------------------------------------------------- # Path to the DICOM sender (Store SCU) application to be used Sender = dcmpssnd # Path to the DICOM receiver (Store SCP) application to be used Receiver = dcmpsrcv # Application entity title sender processes use to identify themselves. # Also used as default application entity title for the [[communication]] # section. aetitle = DCMPSTATE # ---------------------------------------------------------------------------- # This section contains the settings for secure TLS (Transport Layer # Security) communication. [TLS] # ---------------------------------------------------------------------------- # directory in which TLS related files (certificates, keys, random data, # Diffie-Hellman parameters etc.) are located. The content of this directory # should be kept confidential because it may help an attacker to break # the security of the TLS transmission. # TLSDirectory = tls # directory in which certificates of the trusted Certification Authorities # are located. During negotiation of a secure TLS connection, the remote # site's certificate may be verified, depending on the settings for the # sender or receiver process in [[communication]]. Verification checks # if the certificate has been issued by one of the CAs located in this # directory. This means that the content of this directory defines a simple # means of access control for TLS communication. # # File names of certificates in this directory must have # names derived from a hash key of the certificate DN, see -hash # option of openssl x509 command. # CACertificateDirectory = cacerts # directory in which certificates and encrypted private keys of the known # users are located. User certificates and keys are used for the # verification of DICOM Structured Reports and for the creation of digital # signatures. # UserKeyDirectory = usrcerts # DICOMscope allows to have certificates, keys and Diffie-Hellman parameters # either in PEM ("privacy enhanced mail") format or in DER ("distinguished # encoding rules") format. However, all files within one DICOMscope # installation must use the same format, which is defined by this setting. # True => PEM format, false => DER format. Default is PEM. # UsePEMFormat = true # ---------------------------------------------------------------------------- # This section contains the settings for the query/retrieve server. [QUERY_RETRIEVE] # ---------------------------------------------------------------------------- # Specifies whether the configuration file for the query/retrieve server is # created automatically from the data contained in this file each time the # server is started. Default is true. AutoCreateConfigFile = true # Path to the DICOM query/retrieve server (Q/R SCP) to be used. # The configuration filename is created from this entry by adding the file # extension ".cfg". Server = imagectn # IP Port number on which the server listens for new connections. # On Unix platforms, the receiver must be started with setuid root # if port numbers < 1024 (i.e. the standard DICOM port number 104) # should be used. Port = 10003 # Maximum PDU (protocol data unit) size to use when negotiating # incoming connections. Must be between 4096 and 131072. # Default is 16384. MaxPDU = 32768 # Application entity title imagectn will use to identify itself. AETitle = IMAGECTN # Maximum number of associations the server can handle at the same time. # This is only applicable on Unix platforms, since Windows does not support # the fork() command which is used for this purpose. MaxAssociations = 16 # Timeout (in seconds) for outgoing connection requests, must be larger # than zero. Optional setting, default is Unlimited (wait for TCP/IP timeout). # Timeout = 5 # ---------------------------------------------------------------------------- # This section contains the settings for the graphical user interface (GUI). [GUI] # ---------------------------------------------------------------------------- # If this setting is true, we assume a system with very high resolution # (2 x 2.5K) and a graphics board that performs calibration according to the # DICOM GSDF in hardware. Therefore, we display much larger icons and # disable rendering of the GSDF in software. This setting requires that # a static 256 grayscale color palette is used by the operating system # to access the graphics board. HighResolutionGraphics = false #Starts the update thread for the study browser. #Defaults is true AutoUpdateStudyBrowser = true #Sets the background color of the study manager as rgb color #Default: If HighResolutionGraphics, the default is 0\0\0 otherwise 255\255\255 #BackgroundColor = 255\255\255 # Sets the size of the fonts used in all GUI components # Default: If HighResolutionGraphics, the default is 30 otherwise 12 #FontSize = 30 # Sets the name of the fonts uesed in all GUI components # Default value: SansSerif #FontName = SansSerif # Sets the size of the fonts used for textual annotations # Default: If HighResolutionGraphics, the default is 48 otherwise 16 #FontSizeText = 16 # Sets the name of the fonts used for textual annotations # Default value: SansSerif #FontNameText = SansSerif # Sets the size of the fonts used for the process log # Default: If HighResolutionGraphics, the default is 30 otherwise 12 #FontSizeLog = 30 # Sets the name of the fonts uesed for the process log # Default value: Monospaced #FontNameLog = Monospaced # Sets the placement of the main tab in the GUI. # Valid values are: North, South, East, West. Default is North. #TabPlacement = North # Sets the placement of the image processing panel in the viewer. # Valid values are: North, South, East, West, None. # Default: If HighResolutionGraphics, the default is East otherwise South #FunctionPanelPlacement = East # Sets the placement of the paint functio panel in the viewer. # Valid values are: North, South, East, West, None, Toolbar, Integrated # Default value: Integrated #PaintPanelPlacement = Integrated # Checks if the presentation state information panel should be visible # Valid values are: true, false. Default value: false PSPanelOn = true # Displays a warning message if an unsigned instance (report, presentation # state, image) referenced from the current report is opened # Valid values are: true, false. Default value: true WarnUnsignedObjectsInSR = true # ============================================================================ # Storage and Print applications are configured in the following section. [[COMMUNICATION]] # ============================================================================ # ---------------------------------------------------------------------------- # The following text documents all settings defined for a local or remote # storage or print application. Each application or communication target # requires one section with a unique section title. # # [COMMUNICATION_PEER_1] # ---------------------------------------------------------------------------- # # The following entry defines which DICOM services are offered by the # application described in this section. Four types are supported: # # STORAGE - a remote DICOM Storage Service Class SCP. Entries of this type are # shown as "send targets" in the DICOMscope browser GUI. An entry of this # type is also required for each system that wants to download objects # from the DICOMscope database using Query/Retrieve. The settings from # this section are used to resolve an application entity title into the # target hostname and IP port number. # # RECEIVER - a local DICOM Storage Service Class SCP which accepts incoming # images and stores them in the local database. # # PRINTER - a remote DICOM Print Management Service Class SCP. # For each entry of this type, a separate Print SCU ("spooler process") # is started together with DICOMscope. # Entries of this type are shown as printers in the DICOMscope # print preview GUI. # # LOCALPRINTER - a DICOM Print Management SCP that is running as part of # the DICOMscope software on the local system. For each entry of this # type both a DICOM Print SCP and a Print SCU (spooler) are started # together with DICOMscope. This allows DICOMscope to print "to itself". # # Default value for this setting is: STORAGE. # # type = LOCALPRINTER # # ---------------------------------------------------------------------------- # # Hostname: The IP number or domain name of the communication partner in # conventional TCP/IP notation. For entries of type LOCALPRINTER this setting # must have the value "localhost". This setting is mandatory, no default. # # hostname = localhost # # ---------------------------------------------------------------------------- # # IP port number under which the application or remote peer receives DICOM # associations. # # port = 104 # # ---------------------------------------------------------------------------- # # Human readable description of the communication partner. Used in the GUI to # present the communication partner to the application user in selection boxes. # # description = Local DICOM Print SCP # # ---------------------------------------------------------------------------- # # For outgoing connections (STORAGE, PRINTER) this setting contains the # called application entity title of the communication partner. # For incoming connections (RECEIVER, LOCALPRINTER) this setting contains # the responding application entity used during association negotiation. # # aetitle = DICOM_PRINTER # # ---------------------------------------------------------------------------- # # Only negotiate the default Implicit VR Little Endian transfer syntax for # all abstract syntaxes. This setting is useful if we're communicating with # very old DICOM software which claims to support Explicit VR communication # but fails to do so... Optional setting, default is: false. # # ImplicitOnly = false # # ---------------------------------------------------------------------------- # # Do not create data types (VRs) that were defined in post-1993 editions # of the DICOM standard when converting implicit VR files to explicit VR # network transmission. Maybe necessary for old DICOM Store SCPs. # Optional setting, default is: false. # # DisableNewVRs = false # # ---------------------------------------------------------------------------- # # Maximum PDU (protocol data unit) size to negotiate for incoming PDUs. # Value must be between 4096 and 131072. Default is 16384. # # MaxPDU = 32768 # # ---------------------------------------------------------------------------- # # Timeout (in seconds) for outgoing connection requests, must be larger # than zero. Optional setting, default is Unlimited (wait for TCP/IP timeout). # # Timeout = 5 # # ---------------------------------------------------------------------------- # # Use the Transport Layer Security (TLS) protocol for image transmission # in accordance with the DICOM Security Enhancements One (Supplement 31). # Optional setting, default is: false. # # UseTLS = false # # ---------------------------------------------------------------------------- # # Filename of the X.509 certificate to be used for TLS authentication. # The file should be located in the directory specified by # GENERAL/TLS/TLSDIRECTORY. # # SCP usage: The TLS protocol requires that a TLS server # must have a certificate. Therefore, this parameter is mandatory. # If absent, the certificate file is loaded from "sitecert.pem" in the # TLS directory. # # SCU usage: For a TLS client the certificate is optional. # Therefore, this setting is optional for Store SCUs. If absent, no # TLS authentication is performed for the client. Warning: Anonymous TLS # may be susceptible to man-in-the-middle attacks. # # Certificate = cert.pem # # ---------------------------------------------------------------------------- # # Filename of the private key "matching" the certificate, # to be used for TLS authentication. The file should be located in the # directory specified by GENERAL/TLS/TLSDIRECTORY. # # SCP usage: The TLS protocol requires that a TLS server # must have a certificate. Therefore, this parameter is mandatory. # If absent, the certificate file is loaded from "sitekey.pem" in the # TLS directory. # # SCU usage: For a TLS client the certificate is optional. # Therefore, this setting is optional for Store SCUs. If absent, no # TLS authentication is performed for the client. Warning: Anonymous TLS # may be susceptible to man-in-the-middle attacks. # # PrivateKey = pkey.pem # # ---------------------------------------------------------------------------- # # Private keys may be stored in encrypted form (e.g. 3DES), # protected with a password. Since the DICOMscope Store SCU/SCP processes # do not have any interaction with the user, they cannot request a password # from the command line. Two options are available to the user: # - the private key can be unencrypted. In this case this setting should # be absent from the config file. Users should carefully adjust file system # access rights to the private key file to make sure that the private key # is not compromised (e.g. copied by an unauthorized used). # - the private key can be encrypted, with the password in clear text in this # configuration file. In this case, the DICOMscope configuration file must # be protected from read access by unauthorized users, otherwise the private # key may be compromised as well. # A real secure approach would be to keep the private key in a safe place, # e.g. in a microprocessor card, but this is not yet supported. # # PrivateKeyPassword = Should_be_kept_secret # # ---------------------------------------------------------------------------- # # Negotiate the following TLS ciphersuites when using TLS transmission. # Ciphersuite names should have the format as defined in RFC 2246, e. g.: # TLS_RSA_WITH_RC4_128_SHA # TLS_RSA_WITH_IDEA_CBC_SHA # TLS_RSA_WITH_DES_CBC_SHA # TLS_RSA_WITH_3DES_EDE_CBC_SHA # See the DCMTK documentation dcmtls/docs/ciphers.txt for a complete list of # supported terms. Multiple terms should be separated by backslash characters. # Optional setting, default is: TLS_RSA_WITH_3DES_EDE_CBC_SHA. # # CipherSuites = TLS_RSA_WITH_IDEA_CBC_SHA\TLS_RSA_WITH_3DES_EDE_CBC_SHA # # ---------------------------------------------------------------------------- # # This setting defines the policy for handling the remote peer's TLS # certificate. Known terms are: # REQUIRE: verify peer certificate, refuse transmission if absent # VERIFY: verify peer certificate if present # IGNORE: don't verify peer certificate # Optional setting, default is: REQUIRE. # # PeerAuthentication = REQUIRE # # ---------------------------------------------------------------------------- # # File containing a set of random-generated Diffie-Hellman parameters # as required for DH/DSS ciphersuites (but not for RSA ciphersuites). # File should be located in the directory specified by GENERAL/TLS/TLSDIRECTORY # in the format specified by GENERAL/TLS/USEPEMFORMAT. # Optional setting, default is: no Diffie-Hellman parameters (which will cause # TLS connection setup for DH/DSS ciphersuites to fail). # # DiffieHellmanParameters = dhparams.pem # # ---------------------------------------------------------------------------- # # File containing random data which is used to initialize the pseudo-random # generator. After transmission, a modified file is written back. # The random seed file should be different for each send/receive # target - see DCMTK documentation on random data for details. # The file should be located in the directory specified by # GENERAL/TLS/TLSDIRECTORY. # Optional setting, default is: no random data (which may cause TLS connection # setup to fail). # # RandomSeed = random.dat # # # ============================================================================ # The next two settings described below are only used with entries of type # STORAGE and RECEIVER and have no meaning for PRINTER or LOCALPRINTER. # ============================================================================ # # Receive data in "bit preserving mode". In this mode, data is stored # to file directly as read from network. Transfer syntax in file is # identical to transfer syntax used for network transmission. # If this mode is switched off (default), images are converted to explicit VR # Little Endian format before storing in file, which makes it easier # to burn images on CD-R in "General Purpose Image Exchange Profile" format. # Optional entry, default is: false # # BitPreservingMode = false # # ---------------------------------------------------------------------------- # # Silently ignore space padded SOP Class and SOP Instance UIDs in incoming # images. Optional setting, default is: false. # # CorrectUIDPadding = false # # # ============================================================================ # The remaining settings described below are only used with entries of type # PRINTER and LOCALPRINTER and have no meaning for STORAGE or RECEIVER. # ============================================================================ # # Print SCU usage: assume that the Print SCP supports transmission of image # pixel data with 12 bits/pixel in the Basic Grayscale Image Box SOP Class. # Print SCP usage: accept image pixel data with 12 bits/pixel. # Optional setting, default is: true. Not used for Storage type entries. # # Supports12Bit = true # # ---------------------------------------------------------------------------- # # Print SCU usage: assume that the Print SCP supports the Presentation LUT # SOP Class (Supplement 22) and attempt to negotiate it during association # negotiation. # Print SCP usage: activate support for the Presentation LUT SOP Class. # Optional setting, default is: false. Not used for Storage type entries. # # SupportsPresentationLUT = true # # ---------------------------------------------------------------------------- # # The 1999 edition of the DICOM standard contains an inconsistency in the # definition of the Presentation LUT SOP class. The attributes # "Referenced Presentation LUT", "Illumination" and "Reflected Ambient Light" # can either be part of the Basic Film Session or be part of the Basic Film # Box. DICOM Correction Proposal CP 173 defines that these attributes # have to be specified on Basic Film Box level. However, not all existing # Print SCPs supporting the Presentation LUT SOP Class are implemented # in accordance with CP 173. Both Print SCU and Print SCP can, therefore, # be configured to use either Film Session or Film Box (but never both). # # Print SCU usage: If flag is true, transmit attributes in the Basic Film # session instead of the Basic Film Box. # Print SCP usage: If flag is true, attributes are accepted and returned # in Basic Film Session instead of Basic Film Box. # Optional setting, default is: false (which means that behaviour will be # consistent with CP 173.) Not used for Storage type entries. # # PresentationLUTinFilmSession = false # # ---------------------------------------------------------------------------- # # Some Print SCPs which support Presentation LUTs require that the number # of entries in a Presentation LUT matches the bit depth of the image pixel # data (4096 entries for 12 bit pixel data, 256 entries for 8 bit pixel # data). # # Print SCU usage: If flag is true, assume that Print SCP requires match # between Presentation LUT and image data. If for a given print job this # match cannot be guaranteed, perform rendering of the Presentation LUT in # the Print SCU and use an IDENTITY Presentation LUT shape in the Print SCP. # Print SCP usage: If flag is true, enforce a matching rule as described # above. All Presentation LUT N-CREATE or Basic Grayscale Image Box N-SET # operations that would violate the rule will be refused. # Optional setting, default is: true. Not used for Storage type entries. # # PresentationLUTMatchRequired = true # # ---------------------------------------------------------------------------- # # Print SCU usage: if the printer supports 12-bit image transmission and the # film is to be printed with a Presentation LUT that could be rendered either # in the print client or in the printer without loss of precision, # prefer rendering in the printer. # Print SCP usage: flag is ignored. # Optional setting, default is: false. Not used for Storage type entries. # # PresentationLUTPreferSCPRendering = false # # ---------------------------------------------------------------------------- # # Some Print SCPs do not support the optional "Requested Image Size" # attribute in Basic Grayscale Image Box N-SET operations. # # Print SCU usage: If flag is false, assume that the printer does not support # requested image size, never send this attribute. # Print SCP usage: If flag is true, support requested image size. Otherwise # refuse N-SET operations containing a requested image size attribute. # Optional setting, default is: false. Not used for Storage type entries. # # SupportsImageSize = false # # ---------------------------------------------------------------------------- # # Some Print SCPs do not support the optional "Requested Decimate/Crop Behaviour" # attribute defined in Supplement 37 in Basic Grayscale Image Box N-SET # operations. # # Print SCU usage: If flag is false, assume that the printer does not support # requested decimate/crop behaviour, never send this attribute. # Print SCP usage: If flag is true, support requested decimate/crop behaviour. # Otherwise refuse N-SET operations containing this attribute. # Optional setting, default is: false. Not used for Storage type entries. # # SupportsDecimateCrop = false # # ---------------------------------------------------------------------------- # # Some Print SCPs do not support the optional "Trim" attribute # in Basic Film Box N-CREATE or N-SET operations. # # Print SCU usage: If flag is false, assume that the printer does not support # trim, never send this attribute. # Print SCP usage: If flag is true, support trim. # Otherwise refuse N-CREATE or N-SET operations containing this attribute. # Optional setting, default is: false. Not used for Storage type entries. # # SupportsTrim = true # # ---------------------------------------------------------------------------- # # Print SCU usage: this entry contains a list of all STANDARD\C,R column, row # combinations supported as Image Display Format by the Print SCP # for portrait orientation. Landscape image display formats are derived # automatically by exchanging column and row for each format. # Print SCP usage: this entry specifies all STANDARD\C,R image display formats # accepted by the Print SCP for portrait orientation. Landscape image display # formats are also derived automatically. # This is a mandatory entry, no default. # # DisplayFormat=1,1\1,2\2,2\2,3\3,3\3,4\3,5\4,4\4,5 # # ---------------------------------------------------------------------------- # # Film Size ID identifiers supported by the printer for the Basic Film Box. # Multiple values can be specified, must be separated by '\' characters. # # Print SCU usage: Optional setting, default: don't specify film size ID, # use printer default. # Print SCP usage: The first specified value is used as the default. This # is a mandatory setting for entries of type LOCALPRINTER. # # FilmSizeID = 8INX10IN\10INX12IN\10INX14IN\11INX14IN\14INX14IN\14INX17IN\24CMX24CM\24CMX30CM # # ---------------------------------------------------------------------------- # # Medium Type identifiers supported by the printer for the Basic Film Session. # Multiple values can be specified, must be separated by '\' characters. # # Print SCU usage: Optional setting, default: don't specify medium type, # use printer default. # Print SCP usage: The first specified value is used as the default. This # is a mandatory entry. # # MediumType = PAPER\CLEAR FILM\BLUE FILM # # ---------------------------------------------------------------------------- # # Requested Resolution ID identifiers supported by the printer # for the Basic Film Box (optional attribute defined in Supplement 37). # Multiple values can be specified, must be separated by '\' characters. # # Print SCU usage: Optional setting, default: don't specify resolution ID, # use printer default. # Print SCP usage: The first specified value is used as the default. This # is an optional entry. If omitted, the Print SCP does not support the # attribute and rejects N-CREATE or N-SET requests containing the attribtute. # # ResolutionID = STANDARD\HIGH # # ---------------------------------------------------------------------------- # # Magnification Type identifiers supported by the printer for the Basic # Film Box or Basic Grayscale Image Box. Multiple values can be specified, # must be separated by '\' characters. # # Print SCU usage: Optional setting, default: don't specify magnification type, # use printer default. # Print SCP usage: The first specified value is used as the default. This # is a mandatory entry. # # MagnificationType = REPLICATE\BILINEAR\CUBIC\NONE # # ---------------------------------------------------------------------------- # # Smoothing Type identifiers supported by the printer for the Basic Film # Box or Image Box. Multiple values can be specified, must be separated by # '\' characters. # # Print SCU usage: Optional setting, default: don't specify smoothing type, # use printer default. # Print SCP usage: The first specified value is used as the default. This # is an optional entry. If omitted, the Print SCP does not support the # attribute and rejects N-CREATE or N-SET requests containing the attribtute. # # SmoothingType = NONE # # ---------------------------------------------------------------------------- # # Border Density identifiers supported by the printer for the Basic Film # Box. Multiple values can be specified, must be separated by '\' # characters. # # Print SCU usage: Optional setting, default: don't specify border density, # use printer default. # Print SCP usage: If any of the identifiers is numeric, then all numbers # are accepted. The first specified value is used as the default. This is # an optional entry. If omitted, the Print SCP does not support the # attribute and rejects N-CREATE or N-SET requests containing the # attribtute. # # BorderDensity = BLACK\WHITE\150 # # ---------------------------------------------------------------------------- # # Empty Image Density identifiers supported by the printer for the Basic # Film Box. Multiple values can be specified, must be separated by '\' # characters. # # Print SCU usage: Optional setting, default: don't specify empty image # density, use printer default. # Print SCP usage: If any of the identifiers is numeric, then all numbers # are accepted. The first specified value is used as the default. This is # an optional entry. If omitted, the Print SCP does not support the # attribute and rejects N-CREATE or N-SET requests containing the # attribtute. # # EmptyImageDensity = BLACK\WHITE\150 # # ---------------------------------------------------------------------------- # # Print SCU usage: Max Density values supported by the printer for the # Basic Film Box. Multiple values can be specified, must be separated by # '\' characters. Optional setting, default: don't specify max density # density, use printer default. # Print SCP usage: only the first value is read and defines the default max # density that is used when the Print SCU does not specify max density. # This is a mandatory entry. # # MaxDensity = 320\310\300\290\280\270 # # ---------------------------------------------------------------------------- # # Print SCU usage: Min Density values supported by the printer for the # Basic Film Box. Multiple values can be specified, must be separated by # '\' characters. Optional setting, default: don't specify min density # density, use printer default. # Print SCP usage: only the first value is read and defines the default min # density that is used when the Print SCU does not specify min density. # This is an optional entry. If omitted, the Print SCP does not support the # attribute and rejects N-CREATE or N-SET requests containing the # attribtute. # # MinDensity = 20\25\30\35\40\45\50 # # ---------------------------------------------------------------------------- # # The DICOMscope application provides limited support for the Basic # Annotation Box SOP Class. When printing on printers supporting # Annotation, a single annotation can be specified for each print job. This # setting defines the annotation display format ID and annotation position # that are used when creating the annotation. # # Print SCU usage: Two values must be specified: First the Annotation # Position, then the Annotation Display Format ID, separated by '\'. This # is an optional setting, default is not to use Basic Annotation Box. # Print SCP usage: The Print SCP component does not support the Basic # Annotation Box SOP Class. This setting should be omitted for all entries # of type LOCALPRINTER. # # Annotation = 1\ANNOTATION # # ---------------------------------------------------------------------------- # # Some printers use the Film Session Label as a replacement for annotations. # # Print SCU usage: If flag is true, any annotation defined in the user # interface is replicated in the Film Session Label attribute of the Basic # Film Session. This is an optional setting, default is: false. # Print SCP usage: Ignored. This setting should be omitted for all entries # of type LOCALPRINTER. # # SessionLabelAnnotation = false # # ---------------------------------------------------------------------------- # # Configuration Information that can be sent to the printer for the Basic # Film Box or Image Box. Only a single value per entry can be specified # because values may contain backslash characters. (VR=ST). Keywords are # "Configuration_1", "Configuration_2", etc., without leading zeroes. # # Print SCU usage: These are optional settings, default is not to use # configuration information. # Print SCP usage: These are optional settings. If omitted, the Print # SCP does not support the attribute and rejects N-CREATE or N-SET requests # containing the attribtute. The Print SCP default for Configuration # Information is always an empty string. # # Configuration_1 = Configuration Value 1 # Configuration_2 = Configuration Value 2 # # ---------------------------------------------------------------------------- # # Film Destination identifiers supported by the Print SCP for the Basic # Film Session. Multiple values can be specified, must be separated by '\' # characters. # # Print SCU usage: ignored. # Print SCP usage: The first specified value is used as the default. This # is a mandatory entry. # # FilmDestination = MAGAZINE\PROCESSOR\BIN_1\BIN_2 # # ---------------------------------------------------------------------------- # # The Affected SOP Class UID attribute is optional in DIMSE N-CREATE-RSP # messages but some clients rely on its presence. This setting can be used # to test client behaviour. # # Print SCU usage: ignored. # Print SCP usage: Defines whether the Print SCP should include Affected SOP # Class UID in DIMSE N-CREATE-RSP messages. This is an optional setting, # default is false. # # OmitSOPClassUIDFromCreateResponse = false # # ---------------------------------------------------------------------------- # ---------------------------------------------------------------------------- # # We define three send targets: # One is a standard Store SCP which accepts conventional # DICOM associations on port 10004, the others accept TLS secured DICOM # associations on port 10007, with different ciphersuites. # # # ---------------------------------------------------------------------------- # ---------------------------------------------------------------------------- [STORE_1] # ---------------------------------------------------------------------------- Type = STORAGE Aetitle = STORESCP Description = Hostname, unsecure transmission Hostname = Hostname MaxPDU = 32768 Port = 10004 ImplicitOnly = false DisableNewVRs = false # ---------------------------------------------------------------------------- [STORE_2] # ---------------------------------------------------------------------------- Type = STORAGE Aetitle = STORESCP Description = Hostname, TLS transmission, no encryption Hostname = Hostname MaxPDU = 32768 Port = 10007 ImplicitOnly = false DisableNewVRs = false UseTLS = true CipherSuites = TLS_RSA_WITH_NULL_SHA RandomSeed = store2.rnd PeerAuthentication = REQUIRE Certificate = sitecert.pem PrivateKey = sitekey.pem # ---------------------------------------------------------------------------- [STORE_3] # ---------------------------------------------------------------------------- Type = STORAGE Aetitle = STORESCP Description = Hostname, TLS transmission, 3DES encryption Hostname = Hostname MaxPDU = 32768 Port = 10007 ImplicitOnly = false DisableNewVRs = false UseTLS = true CipherSuites = TLS_RSA_WITH_3DES_EDE_CBC_SHA RandomSeed = store3.rnd PeerAuthentication = REQUIRE Certificate = sitecert.pem PrivateKey = sitekey.pem # ---------------------------------------------------------------------------- # # We support two types of receivers: # One is a standard Store SCP which accepts conventional # DICOM associations on port 10004, the other one accepts TLS secured DICOM # associations on port 10007. # # ---------------------------------------------------------------------------- # ---------------------------------------------------------------------------- [RECEIVE_1] # ---------------------------------------------------------------------------- Type = RECEIVER Aetitle = STORESCP1 Description = Standard receiver at port 10004 Hostname = localhost MaxPDU = 32768 Port = 10004 ImplicitOnly = false DisableNewVRs = false BitPreservingMode = false # ---------------------------------------------------------------------------- [RECEIVE_2] # We accept TLS_RSA_WITH_3DES_EDE_CBC_SHA and TLS_RSA_WITH_NULL_SHA # connections, default is 3DES. We require that the client authenticates # with a certificate issued by a Certification Authority that we trust. # ---------------------------------------------------------------------------- Type = RECEIVER Aetitle = STORESCP2 Description = Secure TLS receiver at port 10007 Hostname = localhost MaxPDU = 32768 Port = 10007 ImplicitOnly = false DisableNewVRs = false BitPreservingMode = false UseTLS = true CipherSuites = TLS_RSA_WITH_3DES_EDE_CBC_SHA\TLS_RSA_WITH_NULL_SHA RandomSeed = receiver.rnd PeerAuthentication = REQUIRE Certificate = sitecert.pem PrivateKey = sitekey.pem # ---------------------------------------------------------------------------- # Print SCP that supports most options of the DICOM Print protocol and # the IHE technical framework requirements for Print Server actors: # - supports Presentation LUT and 12-bit image transmission # - layouts: 1x1, 1x2, 2x2, 2x3, 3x3, 3x4, 3x5, 4x4, 4x5 # - supports typical defined terms for empty image density, film # destination, film size ID, magnification type, medium type, resolution # ID, requested decimate/crop behaviour, image size and trim. # ---------------------------------------------------------------------------- [IHEFULL] Aetitle = IHEFULL Description = IHE Full Print SCP Hostname = localhost Port = 10005 Type = LOCALPRINTER BorderDensity = 150\20\BLACK\WHITE DisableNewVRs = false DisplayFormat=1,1\1,2\2,2\2,3\3,3\3,4\3,5\4,4\4,5 EmptyImageDensity = 20\BLACK\WHITE FilmDestination = MAGAZINE\PROCESSOR\BIN_1\BIN_2 FilmSizeID = 8INX10IN\10INX12IN\10INX14IN\11INX14IN\14INX14IN\14INX17IN\24CMX24CM\24CMX30CM ImplicitOnly = false MagnificationType = REPLICATE\BILINEAR\CUBIC\NONE MaxDensity = 320 MaxPDU = 32768 MediumType = PAPER\CLEAR FILM\BLUE FILM MinDensity = 20 OmitSOPClassUIDFromCreateResponse = false PresentationLUTMatchRequired = false PresentationLUTinFilmSession = false ResolutionID = STANDARD\HIGH SmoothingType = NONE Supports12Bit = true SupportsDecimateCrop = true SupportsImageSize = true SupportsPresentationLUT = true SupportsTrim = true # ---------------------------------------------------------------------------- # Print SCP that only supports the absolute minimum that is required by # the IHE technical framework for Print Server actors: # - supports Presentation LUT and 12-bit image transmission # - supports STANDARD\1,1 layout only # ---------------------------------------------------------------------------- [IHERESTRICTED] Aetitle = IHERESTRICTED Description = IHE Restricted Print SCP Hostname = localhost Port = 10006 Type = LOCALPRINTER DisableNewVRs = true DisplayFormat=1,1 FilmDestination = STOREDPRINT FilmSizeID = 8INX10IN\11INX14IN\14INX17IN ImplicitOnly = true MagnificationType = REPLICATE\BILINEAR\CUBIC\NONE MaxDensity = 320 MaxPDU = 16384 MediumType = STOREDPRINT OmitSOPClassUIDFromCreateResponse = true PresentationLUTMatchRequired = true PresentationLUTinFilmSession = false Supports12Bit = true SupportsPresentationLUT = true # ---------------------------------------------------------------------------- # Print SCP that supports most options of the DICOM Print protocol and # the IHE technical framework requirements for Print Server actors: # - supports Presentation LUT and 12-bit image transmission # - layouts: 1x1, 1x2, 2x2, 2x3, 3x3, 3x4, 3x5, 4x4, 4x5 # - supports typical defined terms for empty image density, film # destination, film size ID, magnification type, medium type, resolution # ID, requested decimate/crop behaviour, image size and trim. # This Print SCP communicates over TLS and requires peer authentication. # ---------------------------------------------------------------------------- [IHEFULL_TLS] Aetitle = IHEFULL_TLS Description = IHE Full Print SCP Hostname = localhost # in the IHE Year 2 MESA release, this printer listened on port 10005 Port = 10012 Type = LOCALPRINTER BorderDensity = 150\20\BLACK\WHITE DisableNewVRs = false DisplayFormat=1,1\1,2\2,2\2,3\3,3\3,4\3,5\4,4\4,5 EmptyImageDensity = 20\BLACK\WHITE FilmDestination = MAGAZINE\PROCESSOR\BIN_1\BIN_2 FilmSizeID = 8INX10IN\10INX12IN\10INX14IN\11INX14IN\14INX14IN\14INX17IN\24CMX24CM\24CMX30CM ImplicitOnly = false MagnificationType = REPLICATE\BILINEAR\CUBIC\NONE MaxDensity = 320 MaxPDU = 32768 MediumType = PAPER\CLEAR FILM\BLUE FILM MinDensity = 20 OmitSOPClassUIDFromCreateResponse = false PresentationLUTMatchRequired = false PresentationLUTinFilmSession = false ResolutionID = STANDARD\HIGH SmoothingType = NONE Supports12Bit = true SupportsDecimateCrop = true SupportsImageSize = true SupportsPresentationLUT = true SupportsTrim = true # TLS settings UseTLS = true CipherSuites = TLS_RSA_WITH_3DES_EDE_CBC_SHA\TLS_RSA_WITH_NULL_SHA RandomSeed = iheprt1.rnd PeerAuthentication = REQUIRE Certificate = sitecert.pem PrivateKey = sitekey.pem # ---------------------------------------------------------------------------- # Print SCP that only supports the absolute minimum that is required by # the IHE technical framework for Print Server actors: # - supports Presentation LUT and 12-bit image transmission # - supports STANDARD\1,1 layout only # This Print SCP communicates over TLS and requires peer authentication. # ---------------------------------------------------------------------------- [IHERESTRICT_TLS] Aetitle = IHERESTRICT_TLS Description = IHE Restricted Print SCP Hostname = localhost Port = 10013 Type = LOCALPRINTER DisableNewVRs = true DisplayFormat=1,1 FilmDestination = STOREDPRINT FilmSizeID = 8INX10IN\11INX14IN\14INX17IN ImplicitOnly = true MagnificationType = REPLICATE\BILINEAR\CUBIC\NONE MaxDensity = 320 MaxPDU = 16384 MediumType = STOREDPRINT OmitSOPClassUIDFromCreateResponse = true PresentationLUTMatchRequired = true PresentationLUTinFilmSession = false Supports12Bit = true SupportsPresentationLUT = true # TLS settings UseTLS = true CipherSuites = TLS_RSA_WITH_3DES_EDE_CBC_SHA\TLS_RSA_WITH_NULL_SHA RandomSeed = iheprt2.rnd PeerAuthentication = REQUIRE Certificate = sitecert.pem PrivateKey = sitekey.pem # ============================================================================ # Logins and Certificates for Digital Signature purposes # are defined in the following section. [[USERS]] # ============================================================================ # ---------------------------------------------------------------------------- # The following text documents all settings defined for a user. # Each user requires one section with a unique section title. # # [USER_1] # ---------------------------------------------------------------------------- # # Login of user, must be unique. Required entry. # # Login = name # # ---------------------------------------------------------------------------- # # Name of user in human readable form, must be unique (e.g. might be # presented in combo box GUI). # Required entry. # # Name = name # # ---------------------------------------------------------------------------- # # Name of user in DICOM Person Name (PN) format. Used when creating a # Verifying Observer Sequence in a DICOM SR document. # Required entry. # # DicomName = name # # ---------------------------------------------------------------------------- # # Name of Organization for which this user is acting, in DICOM Long String (LO) # format (i.e. max 64 characters). Used when creating a # Verifying Observer Sequence in a DICOM SR document. # Required entry. # # Organization = name # # ---------------------------------------------------------------------------- # # Code for identifying the user, with the entries required for the DICOM # Code Sequence Macro (DICOM Part 3, Table 8.8-1). This is an optional entry # that is used when creating a Verifying Observer Sequence in a DICOM SR # document. If present, it must consist of four parts separated by backslash # characters: # - coding scheme designator, DICOM SH format (max. 16 characters) # - coding scheme version (may be empty), DICOM SH format # - code value, DICOM SH format # - code meaning, DICOM LO format (max. 64 characters) # # Code = Coding_Scheme_Designator\Coding_Scheme_Version\Code_Value\Code_Meaning # # ---------------------------------------------------------------------------- # # File containing the user's X.509 certificate for digital signature purposes. # # The certificate file must be located in directory defined in # GENERAL/TLS/USERKEYDIRECTORY. The file format is defined in # GENERAL/TLS/USEPEMFORMAT. This is a mandatory entry. # # Certificate = filename # # ---------------------------------------------------------------------------- # # File containing the user's private key. The key is used during creation # of digital signatures. The password with which the key is protected # (when stored in PEM format) is also used to authenticate a user when # a DICOM Structured Report is to be verified by a "Verifying Observer". # # The key file must be located in directory defined in # GENERAL/TLS/USERKEYDIRECTORY. The file format is defined in # GENERAL/TLS/USEPEMFORMAT. It is strongly recommended to keep the files # in PEM format which (unlike DER) allows 3DES encryption of private keys! # This is a mandatory entry. # # PrivateKey = filename # # ---------------------------------------------------------------------------- [USER_1] Login = default Name = Default User DicomName = User^Default^^^ Organization = Kuratorium OFFIS e.V. Code = 99_OFFIS_DCMTK\\USR.000001\DICOMscope 3.6.0 Default User Certificate = usercert.pem PrivateKey = userkey.pem # ============================================================================ # Print Presentation LUT files are defined in the following section. [[LUT]] # ============================================================================ # ---------------------------------------------------------------------------- # Assign a unique name to each LUT and put this into the section name. [LINEAR] # ---------------------------------------------------------------------------- # Description of the LUT. Used in the GUI to present the selectable LUTs # to the application user. description = Linear LUT (256 Entries) # Filename of the LUT file, should reside in LUT directory (see above). filename = linear256us.lut [LIGHTEN] description = Lighten Image (256 Entries) filename = lighten256us.lut [DARKEN] description = Darken Image (256 Entries) filename = darken256us.lut [MIDTONE] description = Enhance Midtone (256 Entries) filename = midtone256us.lut [PHILIPS] description = Philips Standard (256 Entries) filename = philips256us.lut [LINEAR12] description = Linear LUT (4096 Entries) filename = linear4096us.lut [LIGHTEN12] description = Lighten Image (4096 Entries) filename = lighten4096us.lut [DARKEN12] description = Darken Image (4096 Entries) filename = darken4096us.lut [MIDTONE12] description = Enhance Midtone (4096 Entries) filename = midtone4096us.lut [PHILIPS12] description = Philips Standard (4096 Entries) filename = philips4096us.lut # ============================================================================ # VOI Window Level/Width Preset Definitions [[VOI]] # ============================================================================ # ---------------------------------------------------------------------------- # Assign a unique name to each preset and put this into the section name. [CT_ABDOMEN] # ---------------------------------------------------------------------------- # Description of the preset. Used in the GUI to present the selectable VOIs description = Abdomen # Modality to which this preset applies. Must be one of the DICOM defined # terms for element (0008,0060) Modality, see PS3.3 C.7.3.1.1.1 modality = CT # Window center center = 45 # Window width width = 250 [CT_BONE] description = Bone modality = CT center = 500 width = 4000 [CT_CRANE] description = Crane modality = CT center = 35 width = 100 [CT_LUNG] description = Lung modality = CT center = -500 width = 2000 [CT_MEDIASTINUM] description = Mediastinum modality = CT center = 45 width = 440 [CT_PELVIS] description = Pelvis modality = CT center = 45 width = 300 # ============================================================================ # Structured Reporting (SR) "templates" are defined in the following section. [[REPORT]] # ============================================================================ # ---------------------------------------------------------------------------- # Assign a unique name to each "template" and put this into the section name. [KEY_IMAGE] # ---------------------------------------------------------------------------- # Description of the report. Used in the GUI to present the selectable SR # "template" to the application user. description = Key Image Note (IHE Y2) # Filename of the SR "template" file, should reside in REPORT directory # (see above). filename = reportki.dcm [SIMPLE_IMAGE] description = Simple Image Report (IHE Y2) filename = reportsi.dcm dicomscope-3.6.0/DICOMscope/docs/0002755000265600020320000000000011135621442015607 5ustar tilleaadmindicomscope-3.6.0/DICOMscope/docs/dscs360.pdf0000644000265600020320000137671310010274560017503 0ustar tilleaadmin%PDF-1.3 %âãÏÓ 288 0 obj << /Linearized 1 /O 290 /H [ 4446 847 ] /L 392651 /E 92824 /N 58 /T 386772 >> endobj xref 288 195 0000000016 00000 n 0000004252 00000 n 0000005293 00000 n 0000005451 00000 n 0000005518 00000 n 0000005663 00000 n 0000005829 00000 n 0000005994 00000 n 0000006169 00000 n 0000006333 00000 n 0000006498 00000 n 0000006628 00000 n 0000006808 00000 n 0000006914 00000 n 0000007023 00000 n 0000007197 00000 n 0000007330 00000 n 0000007460 00000 n 0000007585 00000 n 0000007716 00000 n 0000007848 00000 n 0000007975 00000 n 0000008146 00000 n 0000008262 00000 n 0000008429 00000 n 0000008535 00000 n 0000008656 00000 n 0000008791 00000 n 0000008920 00000 n 0000009048 00000 n 0000009170 00000 n 0000009307 00000 n 0000009438 00000 n 0000009566 00000 n 0000009693 00000 n 0000009863 00000 n 0000009985 00000 n 0000010157 00000 n 0000010263 00000 n 0000010413 00000 n 0000010549 00000 n 0000010681 00000 n 0000010808 00000 n 0000010940 00000 n 0000011068 00000 n 0000011195 00000 n 0000011316 00000 n 0000011487 00000 n 0000011593 00000 n 0000011702 00000 n 0000011824 00000 n 0000011949 00000 n 0000012076 00000 n 0000012202 00000 n 0000012330 00000 n 0000012457 00000 n 0000012640 00000 n 0000012832 00000 n 0000012938 00000 n 0000013047 00000 n 0000013186 00000 n 0000013316 00000 n 0000013442 00000 n 0000013569 00000 n 0000013705 00000 n 0000013837 00000 n 0000013965 00000 n 0000014105 00000 n 0000014232 00000 n 0000014368 00000 n 0000014497 00000 n 0000014615 00000 n 0000014747 00000 n 0000014878 00000 n 0000015011 00000 n 0000015139 00000 n 0000015266 00000 n 0000015393 00000 n 0000015511 00000 n 0000015629 00000 n 0000015747 00000 n 0000015865 00000 n 0000015958 00000 n 0000016097 00000 n 0000016267 00000 n 0000016427 00000 n 0000016553 00000 n 0000016656 00000 n 0000016777 00000 n 0000016939 00000 n 0000017045 00000 n 0000017169 00000 n 0000017317 00000 n 0000017449 00000 n 0000017590 00000 n 0000017752 00000 n 0000017946 00000 n 0000018077 00000 n 0000018233 00000 n 0000018334 00000 n 0000018435 00000 n 0000018551 00000 n 0000018667 00000 n 0000018838 00000 n 0000019014 00000 n 0000019131 00000 n 0000019244 00000 n 0000019410 00000 n 0000019532 00000 n 0000019644 00000 n 0000019805 00000 n 0000019921 00000 n 0000020016 00000 n 0000020130 00000 n 0000020299 00000 n 0000020441 00000 n 0000020583 00000 n 0000020740 00000 n 0000020908 00000 n 0000021029 00000 n 0000021223 00000 n 0000021372 00000 n 0000021494 00000 n 0000021657 00000 n 0000021795 00000 n 0000021946 00000 n 0000022108 00000 n 0000022279 00000 n 0000022439 00000 n 0000022603 00000 n 0000022702 00000 n 0000022832 00000 n 0000022958 00000 n 0000023087 00000 n 0000023244 00000 n 0000023412 00000 n 0000023576 00000 n 0000023728 00000 n 0000023885 00000 n 0000024007 00000 n 0000024133 00000 n 0000024281 00000 n 0000024455 00000 n 0000024593 00000 n 0000024740 00000 n 0000024911 00000 n 0000025071 00000 n 0000025235 00000 n 0000025334 00000 n 0000025464 00000 n 0000025590 00000 n 0000025719 00000 n 0000025887 00000 n 0000026008 00000 n 0000026202 00000 n 0000026360 00000 n 0000026482 00000 n 0000026645 00000 n 0000026789 00000 n 0000026924 00000 n 0000027023 00000 n 0000027153 00000 n 0000027279 00000 n 0000027408 00000 n 0000027576 00000 n 0000027739 00000 n 0000027891 00000 n 0000028044 00000 n 0000028166 00000 n 0000028292 00000 n 0000028440 00000 n 0000028614 00000 n 0000028758 00000 n 0000028893 00000 n 0000028992 00000 n 0000029122 00000 n 0000029248 00000 n 0000029377 00000 n 0000029495 00000 n 0000029596 00000 n 0000029697 00000 n 0000029813 00000 n 0000029929 00000 n 0000030021 00000 n 0000030218 00000 n 0000030398 00000 n 0000030795 00000 n 0000030983 00000 n 0000031771 00000 n 0000031826 00000 n 0000032864 00000 n 0000032943 00000 n 0000033786 00000 n 0000004446 00000 n 0000005271 00000 n trailer << /Size 483 /Info 280 0 R /Root 289 0 R /Prev 386761 /ID[<351eef32a845d16738e7c386de0410b2><351eef32a845d16738e7c386de0410b2>] >> startxref 0 %%EOF 289 0 obj << /Type /Catalog /Pages 282 0 R /Outlines 291 0 R /OpenAction [ 290 0 R /XYZ null null null ] /PageMode /UseOutlines /PageLabels << /Nums [ 1 << /St 2 /S /D >> ] >> >> endobj 481 0 obj << /S 1181 /O 1637 /Filter /FlateDecode /Length 482 0 R >> stream H‰ÄU]HSa~ÎÙ–3¶òˆÐºÄ´Œ~PŒ~ Ó\ê\*©iVjSH©\?j”r¶#½ $Ä쪛œ3­s6Šê&H*È;/¢›zÏ·ö§C‹.ú>¾íyŸ÷yŸïýξáfcŒÄÒòço1pŒâ9}Ây>N˃C’1•7\î]¾n†ó‹yÒZc\wKòLz¬iMGJ6¿·f§L?{½%¯ÆÚ\މíÊÌ9¦ÝÞQñ-Ò© V‡å›I%£ OÊX7²m™KßSø½žüÌû®¶©ìMÆõuƒKßÌït=|zfhûœícÊ~Tì¿§ÏȘ{4Š}¿ûS%Ÿ hŠ_‘U-”|~YS}’2; ü2A-PÂ@ ™Lòé)& ŸÏ¼X&KÐËšOR‰™ž ­*KVѬâó§[DwöX·>i:4«jŠLJAIÑTy†É:zÚ¿îi­#ý£ar±~ -¦Ì"Ý ³þ ˆìšÄ…œ`Ó™¬¡x¾@¦†H¨óœ.;J€Ïg4†ñ&Y±¾K:AghCÖC‡ÖËš2\zVÄ;Á)q7aˆv$¬h¤#’bÄÿ|…© L3úC‘i½d?Æ~¤¡œÆe\ ¸éóúQ€}¸ŽÂå¨B5èE®_Šãp¢vÔQ¦’2=„¯Qæ,j™²š±¥T¡»ØÉÁ ƉfÜ ò­ ¸–ir¢˜¢*ÚSW:( Ïm¤îÁyÒç‘çEª/C ) þöÐ,¢Ù‹>F!ÄŽƒ¸@L.¡'ivà*U •r]¨‡‹ª{ÉÕ]¬'S¸ÑFßvŠ[èôõh^¦ {t2Sôb|U¶G+ãsÅÑþrpý\#ùtKÞÁfÈXps_¹Eî ù:Ì[>awp±ì 2¸­@z1'€ëæ/ÁcJ endstream endobj 482 0 obj 729 endobj 290 0 obj << /Type /Page /Parent 281 0 R /Resources 471 0 R /Contents 477 0 R /MediaBox [ 0 0 595 842 ] /CropBox [ 0 0 595 842 ] /Rotate 0 >> endobj 291 0 obj << /Count 33 /First 292 0 R /Last 293 0 R >> endobj 292 0 obj << /Title (INTRODUCTION) /Dest [ 85 0 R /FitB ] /Parent 291 0 R /Next 401 0 R /First 470 0 R /Last 470 0 R /Count -1 >> endobj 293 0 obj << /Title (INFORMATION OBJECT IMPLEMENTATION) /Dest [ 208 0 R /FitB ] /Parent 291 0 R /Prev 294 0 R /First 295 0 R /Last 296 0 R /Count 5 >> endobj 294 0 obj << /Title (SECURITY PROFILES) /Dest [ 196 0 R /FitB ] /Parent 291 0 R /Prev 370 0 R /Next 293 0 R /First 371 0 R /Last 372 0 R /Count 2 >> endobj 295 0 obj << /Title (Grayscale Softcopy Presentation State IOD) /Dest [ 208 0 R /FitB ] /Parent 293 0 R /Next 322 0 R /First 343 0 R /Last 344 0 R /Count -2 >> endobj 296 0 obj << /Title (Structured Report Document IOD) /Dest [ 250 0 R /FitB ] /Parent 293 0 R /Prev 297 0 R /First 298 0 R /Last 299 0 R /Count -2 >> endobj 297 0 obj << /Title (Stored Print IOD) /Dest [ 238 0 R /FitB ] /Parent 293 0 R /Prev 309 0 R /Next 296 0 R /First 310 0 R /Last 311 0 R /Count -2 >> endobj 298 0 obj << /Title (Structured Report Document IOD Modules) /Dest [ 250 0 R /FitB ] /Parent 296 0 R /Next 299 0 R >> endobj 299 0 obj << /Title (Structured Report Document Module Descriptions) /Dest [ 250 0 R /FitB ] /Parent 296 0 R /Prev 298 0 R /First 300 0 R /Last 301 0 R /Count -9 >> endobj 300 0 obj << /Title (Patient Module) /Dest [ 250 0 R /FitB ] /Parent 299 0 R /Next 308 0 R >> endobj 301 0 obj << /Title (SOP Common Module) /Dest [ 265 0 R /FitB ] /Parent 299 0 R /Prev 302 0 R >> endobj 302 0 obj << /Title (SR Document Content Module) /Dest [ 256 0 R /FitB ] /Parent 299 0 R /Prev 303 0 R /Next 301 0 R /First 304 0 R /Last 305 0 R /Count 2 >> endobj 303 0 obj << /Title (SR Document General Module) /Dest [ 253 0 R /FitB ] /Parent 299 0 R /Prev 306 0 R /Next 302 0 R >> endobj 304 0 obj << /Title (Document Relationship Macro Attributes) /Dest [ 259 0 R /FitB ] /Parent 302 0 R /Next 305 0 R >> endobj 305 0 obj << /Title (Document Content Macro Attributes) /Dest [ 259 0 R /FitB ] /Parent 302 0 R /Prev 304 0 R >> endobj 306 0 obj << /Title (General Equipment Module) /Dest [ 253 0 R /FitB ] /Parent 299 0 R /Prev 307 0 R /Next 303 0 R >> endobj 307 0 obj << /Title (SR Document Series Module) /Dest [ 253 0 R /FitB ] /Parent 299 0 R /Prev 308 0 R /Next 306 0 R >> endobj 308 0 obj << /Title (General Study Module) /Dest [ 250 0 R /FitB ] /Parent 299 0 R /Prev 300 0 R /Next 307 0 R >> endobj 309 0 obj << /Title (Hardcopy Grayscale IOD) /Dest [ 232 0 R /FitB ] /Parent 293 0 R /Prev 322 0 R /Next 297 0 R /First 323 0 R /Last 324 0 R /Count -2 >> endobj 310 0 obj << /Title (Stored Print IOD Modules) /Dest [ 238 0 R /FitB ] /Parent 297 0 R /Next 311 0 R >> endobj 311 0 obj << /Title (Stored Print Module Descriptions) /Dest [ 241 0 R /FitB ] /Parent 297 0 R /Prev 310 0 R /First 312 0 R /Last 313 0 R /Count -10 >> endobj 312 0 obj << /Title (Patient Module) /Dest [ 241 0 R /FitB ] /Parent 311 0 R /Next 321 0 R >> endobj 313 0 obj << /Title (SOP Common Information Module) /Dest [ 250 0 R /FitB ] /Parent 311 0 R /Prev 314 0 R >> endobj 314 0 obj << /Title (Presentation LUT List Module) /Dest [ 247 0 R /FitB ] /Parent 311 0 R /Prev 315 0 R /Next 313 0 R >> endobj 315 0 obj << /Title (Annotation List Module) /Dest [ 247 0 R /FitB ] /Parent 311 0 R /Prev 316 0 R /Next 314 0 R >> endobj 316 0 obj << /Title (Image Box List Module) /Dest [ 244 0 R /FitB ] /Parent 311 0 R /Prev 317 0 R /Next 315 0 R >> endobj 317 0 obj << /Title (Film Box Module) /Dest [ 244 0 R /FitB ] /Parent 311 0 R /Prev 318 0 R /Next 316 0 R >> endobj 318 0 obj << /Title (Printer Characteristics Module) /Dest [ 241 0 R /FitB ] /Parent 311 0 R /Prev 319 0 R /Next 317 0 R >> endobj 319 0 obj << /Title (General Equipment Module) /Dest [ 241 0 R /FitB ] /Parent 311 0 R /Prev 320 0 R /Next 318 0 R >> endobj 320 0 obj << /Title (General Series Module) /Dest [ 241 0 R /FitB ] /Parent 311 0 R /Prev 321 0 R /Next 319 0 R >> endobj 321 0 obj << /Title (General Study Module) /Dest [ 241 0 R /FitB ] /Parent 311 0 R /Prev 312 0 R /Next 320 0 R >> endobj 322 0 obj << /Title (Secondary Capture IOD) /Dest [ 226 0 R /FitB ] /Parent 293 0 R /Prev 295 0 R /Next 309 0 R /First 333 0 R /Last 334 0 R /Count -2 >> endobj 323 0 obj << /Title (Hardcopy Grayscale IOD Modules) /Dest [ 232 0 R /FitB ] /Parent 309 0 R /Next 324 0 R >> endobj 324 0 obj << /Title (Hardcopy Grayscale Module Descriptions) /Dest [ 235 0 R /FitB ] /Parent 309 0 R /Prev 323 0 R /First 325 0 R /Last 326 0 R /Count -8 >> endobj 325 0 obj << /Title (Patient Module) /Dest [ 235 0 R /FitB ] /Parent 324 0 R /Next 332 0 R >> endobj 326 0 obj << /Title (HC Presentation LUT Module \(Standard Extended SOP Class\)) /Dest [ 238 0 R /FitB ] /Parent 324 0 R /Prev 327 0 R >> endobj 327 0 obj << /Title (SOP Common Information Module) /Dest [ 238 0 R /FitB ] /Parent 324 0 R /Prev 328 0 R /Next 326 0 R >> endobj 328 0 obj << /Title (HC Grayscale Image Module) /Dest [ 238 0 R /FitB ] /Parent 324 0 R /Prev 329 0 R /Next 327 0 R >> endobj 329 0 obj << /Title (General Image Module) /Dest [ 235 0 R /FitB ] /Parent 324 0 R /Prev 330 0 R /Next 328 0 R >> endobj 330 0 obj << /Title (Hardcopy Equipment Module) /Dest [ 235 0 R /FitB ] /Parent 324 0 R /Prev 331 0 R /Next 329 0 R >> endobj 331 0 obj << /Title (General Series Module) /Dest [ 235 0 R /FitB ] /Parent 324 0 R /Prev 332 0 R /Next 330 0 R >> endobj 332 0 obj << /Title (General Study Module) /Dest [ 235 0 R /FitB ] /Parent 324 0 R /Prev 325 0 R /Next 331 0 R >> endobj 333 0 obj << /Title (Secondary Capture IOD Modules) /Dest [ 226 0 R /FitB ] /Parent 322 0 R /Next 334 0 R >> endobj 334 0 obj << /Title (Secondary Capture Module Descriptions) /Dest [ 229 0 R /FitB ] /Parent 322 0 R /Prev 333 0 R /First 335 0 R /Last 336 0 R /Count -8 >> endobj 335 0 obj << /Title (Patient Module) /Dest [ 229 0 R /FitB ] /Parent 334 0 R /Next 342 0 R >> endobj 336 0 obj << /Title (SOP Common Module) /Dest [ 232 0 R /FitB ] /Parent 334 0 R /Prev 337 0 R >> endobj 337 0 obj << /Title (SC Image Module) /Dest [ 232 0 R /FitB ] /Parent 334 0 R /Prev 338 0 R /Next 336 0 R >> endobj 338 0 obj << /Title (Image Pixel Module) /Dest [ 229 0 R /FitB ] /Parent 334 0 R /Prev 339 0 R /Next 337 0 R >> endobj 339 0 obj << /Title (General Image Module) /Dest [ 229 0 R /FitB ] /Parent 334 0 R /Prev 340 0 R /Next 338 0 R >> endobj 340 0 obj << /Title (SC Equipment Module) /Dest [ 229 0 R /FitB ] /Parent 334 0 R /Prev 341 0 R /Next 339 0 R >> endobj 341 0 obj << /Title (General Series Module) /Dest [ 229 0 R /FitB ] /Parent 334 0 R /Prev 342 0 R /Next 340 0 R >> endobj 342 0 obj << /Title (General Study Module) /Dest [ 229 0 R /FitB ] /Parent 334 0 R /Prev 335 0 R /Next 341 0 R >> endobj 343 0 obj << /Title (Grayscale Softcopy Presentation State IOD Modules) /Dest [ 208 0 R /FitB ] /Parent 295 0 R /Next 344 0 R /First 365 0 R /Last 365 0 R /Count -5 >> endobj 344 0 obj << /Title (Grayscale Softcopy Presentation State Module Descriptions) /Dest [ 208 0 R /FitB ] /Parent 295 0 R /Prev 343 0 R /First 345 0 R /Last 346 0 R /Count -20 >> endobj 345 0 obj << /Title (Patient Module) /Dest [ 208 0 R /FitB ] /Parent 344 0 R /Next 364 0 R >> endobj 346 0 obj << /Title (SOP Common Module) /Dest [ 226 0 R /FitB ] /Parent 344 0 R /Prev 347 0 R >> endobj 347 0 obj << /Title (Softcopy Presentation LUT Module) /Dest [ 226 0 R /FitB ] /Parent 344 0 R /Prev 348 0 R /Next 346 0 R >> endobj 348 0 obj << /Title (Softcopy VOI LUT Module) /Dest [ 223 0 R /FitB ] /Parent 344 0 R /Prev 349 0 R /Next 347 0 R >> endobj 349 0 obj << /Title (Modality LUT Module) /Dest [ 223 0 R /FitB ] /Parent 344 0 R /Prev 350 0 R /Next 348 0 R >> endobj 350 0 obj << /Title (Graphic Layer Module) /Dest [ 220 0 R /FitB ] /Parent 344 0 R /Prev 351 0 R /Next 349 0 R >> endobj 351 0 obj << /Title (Spatial Transformation Module) /Dest [ 220 0 R /FitB ] /Parent 344 0 R /Prev 352 0 R /Next 350 0 R >> endobj 352 0 obj << /Title (Graphic Annotation Module) /Dest [ 217 0 R /FitB ] /Parent 344 0 R /Prev 353 0 R /Next 351 0 R >> endobj 353 0 obj << /Title (Displayed Area Module) /Dest [ 217 0 R /FitB ] /Parent 344 0 R /Prev 354 0 R /Next 352 0 R >> endobj 354 0 obj << /Title (Overlay / Curve Activation Module) /Dest [ 217 0 R /FitB ] /Parent 344 0 R /Prev 355 0 R /Next 353 0 R >> endobj 355 0 obj << /Title (Overlay Plane Module) /Dest [ 214 0 R /FitB ] /Parent 344 0 R /Prev 356 0 R /Next 354 0 R >> endobj 356 0 obj << /Title (Bitmap Display Shutter Module) /Dest [ 214 0 R /FitB ] /Parent 344 0 R /Prev 357 0 R /Next 355 0 R >> endobj 357 0 obj << /Title (Display Shutter Module) /Dest [ 214 0 R /FitB ] /Parent 344 0 R /Prev 358 0 R /Next 356 0 R >> endobj 358 0 obj << /Title (Mask Module) /Dest [ 214 0 R /FitB ] /Parent 344 0 R /Prev 359 0 R /Next 357 0 R >> endobj 359 0 obj << /Title (Presentation State Module) /Dest [ 211 0 R /FitB ] /Parent 344 0 R /Prev 360 0 R /Next 358 0 R >> endobj 360 0 obj << /Title (General Equipment Module) /Dest [ 211 0 R /FitB ] /Parent 344 0 R /Prev 361 0 R /Next 359 0 R >> endobj 361 0 obj << /Title (Presentation Series Module) /Dest [ 211 0 R /FitB ] /Parent 344 0 R /Prev 362 0 R /Next 360 0 R >> endobj 362 0 obj << /Title (General Series Module) /Dest [ 211 0 R /FitB ] /Parent 344 0 R /Prev 363 0 R /Next 361 0 R >> endobj 363 0 obj << /Title (Patient Study Module) /Dest [ 211 0 R /FitB ] /Parent 344 0 R /Prev 364 0 R /Next 362 0 R >> endobj 364 0 obj << /Title (General Study Module) /Dest [ 211 0 R /FitB ] /Parent 344 0 R /Prev 345 0 R /Next 363 0 R >> endobj 365 0 obj << /Title () /Dest [ 208 0 R /FitB ] /Parent 343 0 R /First 366 0 R /Last 366 0 R /Count 4 >> endobj 366 0 obj << /Title () /Dest [ 208 0 R /FitB ] /Parent 365 0 R /First 367 0 R /Last 367 0 R /Count 3 >> endobj 367 0 obj << /Title () /Dest [ 208 0 R /FitB ] /Parent 366 0 R /First 368 0 R /Last 368 0 R /Count 2 >> endobj 368 0 obj << /Title () /Dest [ 208 0 R /FitB ] /Parent 367 0 R /First 369 0 R /Last 369 0 R /Count 1 >> endobj 369 0 obj << /Title (Softcopy VOI LUT) /Dest [ 208 0 R /FitB ] /Parent 368 0 R >> endobj 370 0 obj << /Title (CODES AND CONTROLLED TERMINOLOGY) /Dest [ 193 0 R /FitB ] /Parent 291 0 R /Prev 381 0 R /Next 294 0 R >> endobj 371 0 obj << /Title (Secure Transport Connection Profiles) /Dest [ 196 0 R /FitB ] /Parent 294 0 R /Next 372 0 R /First 377 0 R /Last 378 0 R /Count -4 >> endobj 372 0 obj << /Title (Digital Signature Profiles) /Dest [ 201 0 R /FitB ] /Parent 294 0 R /Prev 371 0 R /First 373 0 R /Last 374 0 R /Count -4 >> endobj 373 0 obj << /Title (Verification of Digital Signatures) /Dest [ 201 0 R /FitB ] /Parent 372 0 R /Next 376 0 R >> endobj 374 0 obj << /Title (Time Stamps) /Dest [ 204 0 R /FitB ] /Parent 372 0 R /Prev 375 0 R >> endobj 375 0 obj << /Title (Key Management) /Dest [ 204 0 R /FitB ] /Parent 372 0 R /Prev 376 0 R /Next 374 0 R >> endobj 376 0 obj << /Title (Creation, Removal and Replacement of Digital Signatures) /Dest [ 201 0 R /FitB ] /Parent 372 0 R /Prev 373 0 R /Next 375 0 R >> endobj 377 0 obj << /Title (Key Management) /Dest [ 196 0 R /FitB ] /Parent 371 0 R /Next 380 0 R >> endobj 378 0 obj << /Title (Upper Layer A-P-ABORT Indication) /Dest [ 196 0 R /FitB ] /Parent 371 0 R /Prev 379 0 R >> endobj 379 0 obj << /Title (Selection of IP Ports for TLS Connections) /Dest [ 196 0 R /FitB ] /Parent 371 0 R /Prev 380 0 R /Next 378 0 R >> endobj 380 0 obj << /Title (Selection of TLS Features) /Dest [ 196 0 R /FitB ] /Parent 371 0 R /Prev 377 0 R /Next 379 0 R >> endobj 381 0 obj << /Title (SUPPORT OF EXTENDED CHARACTER SETS) /Dest [ 190 0 R /FitB ] /Parent 291 0 R /Prev 382 0 R /Next 370 0 R >> endobj 382 0 obj << /Title (CONFIGURATION) /Dest [ 181 0 R /FitB ] /Parent 291 0 R /Prev 383 0 R /Next 381 0 R /First 384 0 R /Last 385 0 R /Count -6 >> endobj 383 0 obj << /Title (EXTENSIONS / SPECIALIZATIONS / PRIVATIZATIONS) /Dest [ 178 0 R /FitB ] /Parent 291 0 R /Prev 390 0 R /Next 382 0 R /First 391 0 R /Last 392 0 R /Count -2 >> endobj 384 0 obj << /Title (AE Title / Presentation Address Mapping) /Dest [ 181 0 R /FitB ] /Parent 382 0 R /Next 385 0 R >> endobj 385 0 obj << /Title (Configurable Parameters) /Dest [ 181 0 R /FitB ] /Parent 382 0 R /Prev 384 0 R /First 386 0 R /Last 387 0 R /Count 4 >> endobj 386 0 obj << /Title (Store SCP) /Dest [ 181 0 R /FitB ] /Parent 385 0 R /Next 389 0 R >> endobj 387 0 obj << /Title (Print SCU) /Dest [ 184 0 R /FitB ] /Parent 385 0 R /Prev 388 0 R >> endobj 388 0 obj << /Title (Print SCP) /Dest [ 181 0 R /FitB ] /Parent 385 0 R /Prev 389 0 R /Next 387 0 R >> endobj 389 0 obj << /Title (Store SCU) /Dest [ 181 0 R /FitB ] /Parent 385 0 R /Prev 386 0 R /Next 388 0 R >> endobj 390 0 obj << /Title (COMMUNICATION PROFILES) /Dest [ 175 0 R /FitB ] /Parent 291 0 R /Prev 394 0 R /Next 383 0 R /First 395 0 R /Last 396 0 R /Count -4 >> endobj 391 0 obj << /Title (Standard Extended/Specialized/Private SOPs) /Dest [ 178 0 R /FitB ] /Parent 383 0 R /Next 392 0 R /First 393 0 R /Last 393 0 R /Count -1 >> endobj 392 0 obj << /Title (Private Transfer Syntaxes) /Dest [ 178 0 R /FitB ] /Parent 383 0 R /Prev 391 0 R >> endobj 393 0 obj << /Title (OFFIS Private Presentation State IPC) /Dest [ 178 0 R /FitB ] /Parent 391 0 R >> endobj 394 0 obj << /Title (AE SPECIFICATIONS) /Dest [ 107 0 R /FitB ] /Parent 291 0 R /Prev 401 0 R /Next 390 0 R /First 402 0 R /Last 403 0 R /Count 16 >> endobj 395 0 obj << /Title (Supported Communication Stacks) /Dest [ 175 0 R /FitB ] /Parent 390 0 R /Next 398 0 R >> endobj 396 0 obj << /Title (Point-to-Point Stack) /Dest [ 175 0 R /FitB ] /Parent 390 0 R /Prev 397 0 R >> endobj 397 0 obj << /Title (TCP/IP Stack) /Dest [ 175 0 R /FitB ] /Parent 390 0 R /Prev 398 0 R /Next 396 0 R /First 399 0 R /Last 400 0 R /Count -2 >> endobj 398 0 obj << /Title (OSI Stack) /Dest [ 175 0 R /FitB ] /Parent 390 0 R /Prev 395 0 R /Next 397 0 R >> endobj 399 0 obj << /Title (API) /Dest [ 175 0 R /FitB ] /Parent 397 0 R /Next 400 0 R >> endobj 400 0 obj << /Title (Physical Media Support) /Dest [ 175 0 R /FitB ] /Parent 397 0 R /Prev 399 0 R >> endobj 401 0 obj << /Title (IMPLEMENTATION MODEL) /Dest [ 101 0 R /FitB ] /Parent 291 0 R /Prev 292 0 R /Next 394 0 R /First 465 0 R /Last 465 0 R /Count -5 >> endobj 402 0 obj << /Title (Store SCP) /Dest [ 110 0 R /FitB ] /Parent 394 0 R /Next 421 0 R /First 451 0 R /Last 452 0 R /Count 3 >> endobj 403 0 obj << /Title (Print SCU) /Dest [ 158 0 R /FitB ] /Parent 394 0 R /Prev 404 0 R /First 405 0 R /Last 406 0 R /Count 3 >> endobj 404 0 obj << /Title (Print SCP) /Dest [ 130 0 R /FitB ] /Parent 394 0 R /Prev 421 0 R /Next 403 0 R /First 422 0 R /Last 423 0 R /Count 3 >> endobj 405 0 obj << /Title (Association Establishment Policies) /Dest [ 158 0 R /FitB ] /Parent 403 0 R /Next 407 0 R /First 417 0 R /Last 418 0 R /Count -4 >> endobj 406 0 obj << /Title (Association Acceptance Policy) /Dest [ 172 0 R /FitB ] /Parent 403 0 R /Prev 407 0 R >> endobj 407 0 obj << /Title (Association Initiation by Real-World Activity) /Dest [ 163 0 R /FitB ] /Parent 403 0 R /Prev 405 0 R /Next 406 0 R /First 408 0 R /Last 408 0 R /Count -9 >> endobj 408 0 obj << /Title (Real-World Activity Print JobŽ) /Dest [ 163 0 R /FitB ] /Parent 407 0 R /First 409 0 R /Last 410 0 R /Count 8 >> endobj 409 0 obj << /Title (Associated Real-World Activity) /Dest [ 163 0 R /FitB ] /Parent 408 0 R /Next 410 0 R >> endobj 410 0 obj << /Title (Proposed Presentation Contexts) /Dest [ 163 0 R /FitB ] /Parent 408 0 R /Prev 409 0 R /First 411 0 R /Last 412 0 R /Count 6 >> endobj 411 0 obj << /Title (SOP Specific Conformance for Printer SOP Class) /Dest [ 163 0 R /FitB ] /Parent 410 0 R /Next 416 0 R >> endobj 412 0 obj << /Title (SOP Specific Conformance for Basic Annotation Box SOP Class) /Dest [ 172 0 R /FitB ] /Parent 410 0 R /Prev 413 0 R >> endobj 413 0 obj << /Title (SOP Specific Conformance for Presentation LUT SOP Class) /Dest [ 172 0 R /FitB ] /Parent 410 0 R /Prev 414 0 R /Next 412 0 R >> endobj 414 0 obj << /Title (SOP Specific Conformance for Basic Grayscale Image Box SOP Class) /Dest [ 169 0 R /FitB ] /Parent 410 0 R /Prev 415 0 R /Next 413 0 R >> endobj 415 0 obj << /Title (SOP Specific Conformance for Basic Film Box SOP Class) /Dest [ 166 0 R /FitB ] /Parent 410 0 R /Prev 416 0 R /Next 414 0 R >> endobj 416 0 obj << /Title (SOP Specific Conformance for Basic Film Session SOP Class) /Dest [ 163 0 R /FitB ] /Parent 410 0 R /Prev 411 0 R /Next 415 0 R >> endobj 417 0 obj << /Title (General) /Dest [ 158 0 R /FitB ] /Parent 405 0 R /Next 420 0 R >> endobj 418 0 obj << /Title (Implementation Identifying Information) /Dest [ 163 0 R /FitB ] /Parent 405 0 R /Prev 419 0 R >> endobj 419 0 obj << /Title (Asynchronous Nature) /Dest [ 163 0 R /FitB ] /Parent 405 0 R /Prev 420 0 R /Next 418 0 R >> endobj 420 0 obj << /Title (Number of Associations) /Dest [ 158 0 R /FitB ] /Parent 405 0 R /Prev 417 0 R /Next 419 0 R >> endobj 421 0 obj << /Title (Store SCU) /Dest [ 119 0 R /FitB ] /Parent 394 0 R /Prev 402 0 R /Next 404 0 R /First 439 0 R /Last 440 0 R /Count 3 >> endobj 422 0 obj << /Title (Association Establishment Policies) /Dest [ 130 0 R /FitB ] /Parent 404 0 R /Next 424 0 R /First 435 0 R /Last 436 0 R /Count -4 >> endobj 423 0 obj << /Title (Association Acceptance Policy) /Dest [ 134 0 R /FitB ] /Parent 404 0 R /Prev 424 0 R /First 425 0 R /Last 425 0 R /Count -10 >> endobj 424 0 obj << /Title (Association Initiation by Real-World Activity) /Dest [ 134 0 R /FitB ] /Parent 404 0 R /Prev 422 0 R /Next 423 0 R >> endobj 425 0 obj << /Title (Real-World Activity Print Job ReceiptŽ) /Dest [ 134 0 R /FitB ] /Parent 423 0 R /First 426 0 R /Last 427 0 R /Count 9 >> endobj 426 0 obj << /Title (Associated Real-World Activity) /Dest [ 134 0 R /FitB ] /Parent 425 0 R /Next 429 0 R >> endobj 427 0 obj << /Title (Transfer Syntax Selection Policies) /Dest [ 158 0 R /FitB ] /Parent 425 0 R /Prev 428 0 R >> endobj 428 0 obj << /Title (Presentation Context Acceptance Criterion) /Dest [ 158 0 R /FitB ] /Parent 425 0 R /Prev 429 0 R /Next 427 0 R >> endobj 429 0 obj << /Title (Presentation Context Table) /Dest [ 134 0 R /FitB ] /Parent 425 0 R /Prev 426 0 R /Next 428 0 R /First 430 0 R /Last 431 0 R /Count 5 >> endobj 430 0 obj << /Title (SOP Specific Conformance for Printer SOP Class) /Dest [ 134 0 R /FitB ] /Parent 429 0 R /Next 434 0 R >> endobj 431 0 obj << /Title (SOP Specific Conformance for Presentation LUT SOP Class) /Dest [ 155 0 R /FitB ] /Parent 429 0 R /Prev 432 0 R >> endobj 432 0 obj << /Title (SOP Specific Conformance for Basic Grayscale Image Box SOP Class) /Dest [ 152 0 R /FitB ] /Parent 429 0 R /Prev 433 0 R /Next 431 0 R >> endobj 433 0 obj << /Title (SOP Specific Conformance for Basic Film Box SOP Class) /Dest [ 143 0 R /FitB ] /Parent 429 0 R /Prev 434 0 R /Next 432 0 R >> endobj 434 0 obj << /Title (SOP Specific Conformance for Basic Film Session SOP Class) /Dest [ 140 0 R /FitB ] /Parent 429 0 R /Prev 430 0 R /Next 433 0 R >> endobj 435 0 obj << /Title (General) /Dest [ 130 0 R /FitB ] /Parent 422 0 R /Next 438 0 R >> endobj 436 0 obj << /Title (Implementation Identifying Information) /Dest [ 134 0 R /FitB ] /Parent 422 0 R /Prev 437 0 R >> endobj 437 0 obj << /Title (Asynchronous Nature) /Dest [ 134 0 R /FitB ] /Parent 422 0 R /Prev 438 0 R /Next 436 0 R >> endobj 438 0 obj << /Title (Number of Associations) /Dest [ 134 0 R /FitB ] /Parent 422 0 R /Prev 435 0 R /Next 437 0 R >> endobj 439 0 obj << /Title (Association Establishment Policies) /Dest [ 125 0 R /FitB ] /Parent 421 0 R /Next 441 0 R /First 447 0 R /Last 448 0 R /Count -4 >> endobj 440 0 obj << /Title (Association Acceptance Policy) /Dest [ 130 0 R /FitB ] /Parent 421 0 R /Prev 441 0 R >> endobj 441 0 obj << /Title (Association Initiation by Real-World Activity) /Dest [ 125 0 R /FitB ] /Parent 421 0 R /Prev 439 0 R /Next 440 0 R /First 442 0 R /Last 442 0 R /Count -5 >> endobj 442 0 obj << /Title (Real-World Activity Image transmissionŽ) /Dest [ 125 0 R /FitB ] /Parent 441 0 R /First 443 0 R /Last 444 0 R /Count 4 >> endobj 443 0 obj << /Title (Associated Real-World Activity) /Dest [ 125 0 R /FitB ] /Parent 442 0 R /Next 444 0 R >> endobj 444 0 obj << /Title (Proposed Presentation Contexts) /Dest [ 125 0 R /FitB ] /Parent 442 0 R /Prev 443 0 R /First 445 0 R /Last 446 0 R /Count 2 >> endobj 445 0 obj << /Title (SOP Specific Conformance for all Storage SOP Classes) /Dest [ 130 0 R /FitB ] /Parent 444 0 R /Next 446 0 R >> endobj 446 0 obj << /Title (SOP Specific Conformance for SR SOP Classes) /Dest [ 130 0 R /FitB ] /Parent 444 0 R /Prev 445 0 R >> endobj 447 0 obj << /Title (General) /Dest [ 125 0 R /FitB ] /Parent 439 0 R /Next 450 0 R >> endobj 448 0 obj << /Title (Implementation Identifying Information) /Dest [ 125 0 R /FitB ] /Parent 439 0 R /Prev 449 0 R >> endobj 449 0 obj << /Title (Asynchronous Nature) /Dest [ 125 0 R /FitB ] /Parent 439 0 R /Prev 450 0 R /Next 448 0 R >> endobj 450 0 obj << /Title (Number of Associations) /Dest [ 125 0 R /FitB ] /Parent 439 0 R /Prev 447 0 R /Next 449 0 R >> endobj 451 0 obj << /Title (Association Establishment Policies) /Dest [ 110 0 R /FitB ] /Parent 402 0 R /Next 453 0 R /First 461 0 R /Last 462 0 R /Count -4 >> endobj 452 0 obj << /Title (Association Acceptance Policy) /Dest [ 110 0 R /FitB ] /Parent 402 0 R /Prev 453 0 R /First 454 0 R /Last 454 0 R /Count -7 >> endobj 453 0 obj << /Title (Association Initiation by Real-World Activity) /Dest [ 110 0 R /FitB ] /Parent 402 0 R /Prev 451 0 R /Next 452 0 R >> endobj 454 0 obj << /Title (Real-World Activity Image receiptŽ) /Dest [ 110 0 R /FitB ] /Parent 452 0 R /First 455 0 R /Last 456 0 R /Count 6 >> endobj 455 0 obj << /Title (Associated Real-World Activity) /Dest [ 115 0 R /FitB ] /Parent 454 0 R /Next 458 0 R >> endobj 456 0 obj << /Title (Transfer Syntax Selection Policies) /Dest [ 119 0 R /FitB ] /Parent 454 0 R /Prev 457 0 R >> endobj 457 0 obj << /Title (Presentation Context Acceptance Criterion) /Dest [ 119 0 R /FitB ] /Parent 454 0 R /Prev 458 0 R /Next 456 0 R >> endobj 458 0 obj << /Title (Presentation Context Table) /Dest [ 115 0 R /FitB ] /Parent 454 0 R /Prev 455 0 R /Next 457 0 R /First 459 0 R /Last 460 0 R /Count 2 >> endobj 459 0 obj << /Title (SOP Specific Conformance for all Storage SOP Classes) /Dest [ 115 0 R /FitB ] /Parent 458 0 R /Next 460 0 R >> endobj 460 0 obj << /Title (SOP Specific Conformance for SR SOP Classes) /Dest [ 119 0 R /FitB ] /Parent 458 0 R /Prev 459 0 R >> endobj 461 0 obj << /Title (General) /Dest [ 110 0 R /FitB ] /Parent 451 0 R /Next 464 0 R >> endobj 462 0 obj << /Title (Implementation Identifying Information) /Dest [ 110 0 R /FitB ] /Parent 451 0 R /Prev 463 0 R >> endobj 463 0 obj << /Title (Asynchronous Nature) /Dest [ 110 0 R /FitB ] /Parent 451 0 R /Prev 464 0 R /Next 462 0 R >> endobj 464 0 obj << /Title (Number of Associations) /Dest [ 110 0 R /FitB ] /Parent 451 0 R /Prev 461 0 R /Next 463 0 R >> endobj 465 0 obj << /Title () /Dest [ 101 0 R /FitB ] /Parent 401 0 R /First 466 0 R /Last 467 0 R /Count 4 >> endobj 466 0 obj << /Title (Store SCP) /Dest [ 101 0 R /FitB ] /Parent 465 0 R /Next 469 0 R >> endobj 467 0 obj << /Title (Print SCU) /Dest [ 104 0 R /FitB ] /Parent 465 0 R /Prev 468 0 R >> endobj 468 0 obj << /Title (Print SCP) /Dest [ 104 0 R /FitB ] /Parent 465 0 R /Prev 469 0 R /Next 467 0 R >> endobj 469 0 obj << /Title (Store SCU) /Dest [ 104 0 R /FitB ] /Parent 465 0 R /Prev 466 0 R /Next 468 0 R >> endobj 470 0 obj << /Title (Revision History) /Dest [ 91 0 R /FitB ] /Parent 292 0 R >> endobj 471 0 obj << /ProcSet [ /PDF /Text /ImageC /ImageI ] /Font << /TT2 473 0 R /TT4 475 0 R >> /XObject << /Im1 480 0 R >> /ExtGState << /GS1 478 0 R >> /ColorSpace << /Cs9 476 0 R >> >> endobj 472 0 obj << /Type /FontDescriptor /Ascent 905 /CapHeight 0 /Descent -211 /Flags 32 /FontBBox [ -665 -325 2028 1006 ] /FontName /Arial /ItalicAngle 0 /StemV 0 >> endobj 473 0 obj << /Type /Font /Subtype /TrueType /FirstChar 32 /LastChar 116 /Widths [ 250 0 0 0 0 0 0 0 0 0 0 0 0 0 250 0 500 0 0 500 0 0 500 0 0 0 0 0 0 0 0 0 0 0 0 667 722 0 0 0 0 333 0 0 0 889 0 722 0 0 0 556 0 0 0 0 0 0 0 0 0 0 0 0 0 444 0 444 0 444 333 0 0 0 0 0 0 778 500 500 500 0 333 389 278 ] /Encoding /WinAnsiEncoding /BaseFont /TimesNewRoman /FontDescriptor 474 0 R >> endobj 474 0 obj << /Type /FontDescriptor /Ascent 891 /CapHeight 0 /Descent -216 /Flags 34 /FontBBox [ -568 -307 2028 1007 ] /FontName /TimesNewRoman /ItalicAngle 0 /StemV 0 >> endobj 475 0 obj << /Type /Font /Subtype /TrueType /FirstChar 32 /LastChar 246 /Widths [ 278 0 355 0 0 0 667 191 333 333 0 0 278 333 278 278 556 556 556 556 556 556 556 556 556 556 278 278 0 584 584 0 0 667 667 722 722 667 611 778 722 278 500 667 556 833 722 778 667 778 722 667 611 722 667 944 667 667 611 0 278 0 469 556 0 556 556 500 556 556 278 556 556 222 222 500 222 833 556 556 556 556 333 500 278 556 500 722 500 500 500 0 0 0 0 0 0 0 0 0 0 1000 0 0 0 0 0 0 0 0 0 0 0 222 222 333 333 0 556 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 611 0 0 0 0 556 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 556 ] /Encoding /WinAnsiEncoding /BaseFont /Arial /FontDescriptor 472 0 R >> endobj 476 0 obj [ /Indexed /DeviceRGB 255 479 0 R ] endobj 477 0 obj << /Length 963 /Filter /FlateDecode >> stream H‰ŒUMsÓ0½ûWìQž‰U}Ù‘¹A[ÚÐéˆa˜©ë6Ú±Cþ,~gv%'N‚a˜¤H«Ý÷vß®O.fî›àK`D J HSˆâB yœLJ guð*x–'Y¦@Bv(Ù=™(.\ŒÁ7Yw·¾ºÁ»,w;»Çà=;›œN¯á´®îêuJÍ5›‡‘àcVåÌÚy[tÇEÕ†³A,yš8§~—޹m%OlÑãÅ@‘Û¦ÉjòzU€æ aö‰(O‘G\”¶è ´0\˜Þ¡Nv¥ñÐgõ]¡1kCÉ { eÌ­G¯Ø:Lð¦ðà¶øJ$ðà!$#Dq 7ßüÙG =Ù"¤CvæcÊ#ïÙ5º•Œ‡‚§ ΗèL³|á¼jvS¬Ýõ½sh¿#å6JÄXP)â1øßU†já’#){9)·”5;c6"“#Ÿ_údpä s«OŽ™ê³é‰]q¸"†Dc€@saÿF@…MÒ¡°½üº¨#xÁáõ²hÊ0¢ºËÁØÚèÄ>Jž6ã¡ØÊöÅL¶ÑŸr˜å‹µÓįv0¶‘†›ÿåm¤åéït×vz/tFc”Í"DÕ¥l‰*Ÿ$„0NiHIãªÒgºO´õä‡0L°)#­»Ú`ú|~-k)—Œ’¬Ø¦„éóç“ü-Áyƒ#…nÝHS~ŠYW-œej„í%qØOÜãÛ¢ºqŽýý($[¸pJÊ÷¼úæè *•ÜM·†Pˆ–Z¡Ã;©RÎWÌ7Û´àÀE…1,§d¾kàÚ-d–û“º%ðn¯p¢±oð¾¢WdøÕŸvV ñ³mš¶{Fv? Ì.R5fŒÁgu¾Ø”#ÇŠLˆrÝ2“<>ä6 ùªvÙD!w«×w»xo'³7îÏ,ròƾÜ[ࢼ¹t×#x¹ð¯|KøýjEÀÉrŽ c‚LÂ}Èt‰5vùrôfÕáD×:ÚÕc§Ÿ©C„±|“*G¥(š¤çó¦…éüs³¨×μhà õn™ÿ»t{—t¼ÁéÞ]Ý4Ýf~Û@çÿ ƒŽ¥ÆT:2Ÿ‘ {êÀŸgÁo Ññe endstream endobj 478 0 obj << /Type /ExtGState /SA false /SM 0.02 /TR /Identity >> endobj 479 0 obj << /Length 768 /Filter /FlateDecode >> stream H‰TÁ[HZaà„à@"D#‘•‘a› _”‘°6“014’Íi7© %“¬ ‹Û¼´FÅ¡tefeâš]$B†eÍVبµm•¶6ªÁºxþ­Ç}ÿƒI„$0N°¸“^¾Ab@E¬H2‰šB²ljD"FÔ’H$”T6OÒ“ÉäÔÔÔ´´4qbOsžéO×dddSä æ£(ïRò•JÍ¢Šƒ™JF§µgOçÜ¢ÓsYº\O8÷¹ŽJè%=Î`0ì ²þÞ“ÉT2áG¦p“)d±Xl6›Ã.àp8»œnËåj¸þ/\–† Ý*=(d?®gòðx¼£"ŸÏWóãªâU@P"2*Kf„B¡HX&‰ZEøOy»ôáAi^Mé’X,îÇ$É…$¹¬LZ^^.•J;¤ð”Póthë Èl2™¬Av¦×VÈÃ/äø•( T***j*uUUU’jÕy5¢¼UkR„ÔÕÕ©Tª•¶[u)Ro¨Õj\ ŒšÈ¥† lÜljlÑjµ]M^N×§ƒÍÍmz½¶€ÖÖÖ¶¶¶öööŽŽ['„ÀÐe.0ì Ó+Ôh4q“Éd3ß7»Ìæ×½æé–Ï‹eÀà솿ºÁe7èééé½…¢}C}8ìýýýcý =@Qtlà8ÇúÝjµÚ¬Ã6› ³Áõ·»Ý>2Rˆl;ŽáQÏèè(Ñq:Þ1811Aq¸\®ÉÉÉ'îc·Û ÝÀçÆ=†a>ìzjj ›~çõzgfffgg³æÎbsΔù ŸÏ·°°°¸¸è÷û¡÷ÿ—‚Á`(J^¾YY&Âe°²²²º* ‡ÃkkkÙë7ñ ‰lll„6··¶¶øQ<ÂO`gggoo¯þ+¾¿¿¿ÃÃÃÈ‹Åqü4> OøœžžžŸŸÃ /ÁÑ„×)¿ð&‘€ Äó!΃°î¯n«†ý endstream endobj 480 0 obj << /Type /XObject /Subtype /Image /Width 540 /Height 280 /BitsPerComponent 8 /ColorSpace 476 0 R /Length 58360 /Filter /FlateDecode >> stream H‰ì—¿kIÇBHòöž’³ÕËÙç;skvz­`Ï ôÀÁ&¸ÎN7 Ë&ND%N.pÓ™ü îh£ 7Ðp—éÜÙ9jG†Æ!%÷Þ«ªW¯ªÈæf88T=še©ªúSßkk×ãz\ëq=®Çõ¸×ãzüÿŒ(Š£8Ž“8I’4Ͳl:â>ãwY¦?›*¥èSi’ÂO'ðßâ(ú_/àz¬lw àb2-в¬J<E¡àû.ø †ÿŸ! dœ"K„#JÜHù‹®¾‘¹«cLõ“Yà—<ÒO¹>z˜õ‹í°c„¸Vw8XïýöL |B |‘pà§Ä®àXâÜFZž`äø€+‡ä>ô0 Ò¨ôE“£¦‰šÑÔ >Ì‹y×ÐÇá€{FÕú¾ú´Qv?Z—´LyÛç´'fLIÃi$ËÛÿ`Z5I¦rÔš6^ß óßÕU¥ç]àÄà§ÇG¼»¹´Éĸfº˜Ø…ãÐÐt HéÃAwŽÉ°ÂÁ¼«0è#`¡®ºéè&¦¸§ª(È[-Рb·ÂRÛ¯«f#ŽG#¤ U<<ÝðòFŽË7º‘«.Ý-mûƒiC»¬+¬Ðt”=y‡ôÂëÚyŠ éå˺‘³n dxªá§=qÃ% ’tqÂbm¦Ç]ºñè7OØ„’tê†g)fùʯ(~]™n¬££@ ˜hò»©=9úbcF³¥ÈAp,ÑTH7”_c ͇ÖX§ºl„h¸Ó.@Ü¥ƒë(Öb†üåÓøðtÃ<‰ÜÁÀK¢‰fîQ.*zd+Ë›ÀÆ8xOŒW|ö´\²µW1ò6E6¾‰—VbEÞÈY7lå +-Åï(WÈF-•#H§>>NB¼îRy/=€ô«‡ã£ô¾ïï)Š;Jî[Š‹ÙÊÚ´«íbÒ~ÕkžB¤lLUE'“ÕuXˆ¢O&™Q U4˜Úq#€Ã”4‹FnÂØTèF¶Â,›ZÙ [`uƒû«qÜ» h±N8 ÆöµØT5—í¡†fcó†õ”\Ž¢3/‹ZGa><ÕÊ!…cÑH@Z¦ éŠuW½­!]Õ¥…G;n¿ôòÜa)S£E'«Ë¢ñ·YFh<ÓÛ_ºÀßX4œdšƒªs4Þ7˜"Ž8Ž:Ú‚Ác ; ÝÈmKá¸1ë ¢¥·á\Ü9—ÝDb ñeÃ}^7‚2 eÐ`-Œ†×`ýšâòÆê<%N³'S„ÜNðJ̓[,X¯ Wñ‚ìg›¥£Qï :U÷pãý³µjJ®åÌêFYx²ÁªÜ•6¤p0 «-íH|8õhX?B<<ÕÄñÑÒ #‰ÚUf.nxiÃXŠK+ë°Qgº£ÀDŠfËçF+ ŽÊÖx¢;4£ÌóKÓ‘SŽ(+ûCz`>±ÖMÍ}Ý(I9¼šÊ£Qy ÖÅ Š…g0µ‡GO¹Õ¯B•¤Û82Di»KOÞph¾nfClÞ˜ :l56Š¢D£AATû¹©ƒ0ðmSµmÖõ–5ÇåÌžåųéôQšPU‰Ö’þ}1†A#ª»›ÍÈɇ §$ž©T~­áà{Ù8(@8èÑ%^:­{aùðÛm—¹T]x0§ˆ0êÐ(Ù ·%ÂEÑ•x ÅÉ4Øÿr†7›ó.ØÈÜ½ÆÆ¦*h2øÃ$|0×$Æšýþû“ÓÓÓï/..ûYà_Ž«º»ØÄÊFÑ0ndáàšÒ7Üm“^à‘±¢¨IǴ‡×m]\í$àCêF‹Œ oäÊȆ6|ÝX>²R”g*/ØÄ J¢úÛD.Ò¬j^Îf¸ˆìý¶?|ÿêÕÉ›7oÞçï{èX^T‹´{R£0nÙ =4ØUJ ŸYR9,!‚ ß^d6ué#l· ÿ ñ'0B@D5³5%@CQK)Œ¡háIucùyÐØâ8!6 «:lØ•À$½#iÀxm‡…Ìpbëw~ûøàðèéË—'HÇ›·ïÞ~øðáñ¸°=~¡¿.ÊžYÅ*(°"n˜:-……9t”Êæq¥p8>sL¨íò"Û-ÒÖXhvÿ KŠŒÂP(‹æV@ÙR$ˆÇ’u%#&4RDƒvؘ£Øô‰n¢­$yGç´ ¹‚iíüncëóýÃÇŸ¯´xoß—ïÏÏ/Îáëò¤äüü«µµE“Ÿ…½W膭(¶>iá(¼,ª£†ç*Ã-…¤Aª†xòtõ[Á•{uúáÕ[)U²¿¸—Ž[JÙ(ÛÚ¸ñÕWûG‡G‡ÇÈÈññÁƒýýýƒÃçG(&/>Þ\KÿVþõÙ™Ê@;ØÉFnuƒÓò!tC<¡^ugÙÝNg)zøîbAñIê‹ö—{êÁïlñÇVëV…qEnME8ŠòìUžu#N“qfÿlú­[·v *86wˆ 3î' <ÀP2dƒÎ%å=ã¹ÍÆQt[qhàç ØÉÿ¼·÷§½{_Þ¾ plmm~cc{ãîÁáÁ_ ™ܸû`ÿáþÃÃCæáæÚרxiaʲ‘ÌGâ×§F9‚šèFÝÊ2p,œl0N:§iZºÑ“?ÚÊш¼!¸¨½$Ú‘6¸Ãú¡M%÷¢¨Ç€nhÑÆ[aí€_ö×Òï~À?î'ô ¨ Ýüã,›àÖãÜ^üd£ÅÜt•²âÓIl§`G©1h¬#{øõ¾Ëç5Ñ$ãBšh&½Ýƒ=º‚0 ñÒÂxPPB˜YXI{+4Ã^‚®—¾4,aä=l`siy¡/9¾ô{YoBà /¤!‡^½,44˜S`ÌaÈÁ?`¿ÏSUoU½ï›)‰yT}êû£T*æ3»€#›ÞNg«Íî+èÅio < ÙôNjßqÿÉë@:d+/HÆ”ØÁS„¥¸:o²ádq#¦AL7B<´{¬BBŒîbò¡ãG2#Q<’ FÇÔHK  QT¥ ×#l°š ŽGó&u_ÝcH|`Jÿå ÛDŒBÂÛto¯Î$1JŽ Ž³hà5Q¬ƒ¼Mzå ÑªÕ*F­‚˜J¾˜C&ÍgÒÛÙB6-4«Õf“°H£Ä¤·s•â¡Áküu½ä0ãÃ]€ÇÃûÏÜÚØ·,eÌÂʆgeQczeBŠª;¾±Ó9‹†ª!éXFÔ#1 &»‹áVQ*b $¹¥l$ ¡ò†õ7æ­ ²=Ê íÎÃQ¶‚çã;è‡ÄÁOÃׂ ~(4 l&“ Kôl³&L¼uÃs)ÊízG Ê8™wIç¹äUõ§tì€Ðß¡1œCá(3hžƒ‰œâ¹ ,Bûð ëõzÐŒã¨h4J(¯h'ÍŒÍosEèG‘´¤öC­Vk ³>O=ÃåÌè€÷œsrÆc,~¥¸ºaDQºÏó鑨IqÃ.fÖ çubä0ÃG„Ätm*†¥&Ò MÙÐAÔT™6´£˜ VÔ”¨n€ Çë·Cç G:‡7éF‡pâ ás´ñQ;‘œ çm¸=/®Ü«+LõŒP*-'z¾yÔ?o_“Ñ;æ$Zª {¦³ÝÓÑhÔ<ÈfQ] …Âv&SäöòÃIÿä¡u'õl°xÁìøqY:c*}ƒ ŽÇcC7\'” Wʆkë†-‹˜p$ˆ\ÿµñlW–ˆ~D-F§ÓˆÅ,Ìè–³Â~zL6\³¦È¼1–l¢!TcecÏŸ#ŠH½Jáá«–âÉÕ&?˜7”6]š{Þ¦ˆ­ž'ê+鋆#`–hŠ— e't cãï}øÉ1„cw·”ÉV«UBct::íþ¥Û=í6»Õ·™ríèä¤×ûùç“TC·êO÷Bo O¬t“ѹ– rñg_ä _‰†ÙRü(ÒĸašÇ:¢‰ 5ÖkWº¸$ ‡!ŠŒ@Æk\ç§p¿Ùp¸FKqUKq¨nh4d܈zÊ3ŸµB´@>ÄXTVG蛸XkŽ˜7ôÓŒ…ÄÔ_¹î•Êxã7â¬c,'ñS„5 4õò—÷ÄFQãa£‚`‘®…&ÈøÏÝÝý‡ÞŽn³ZÍîV€Æ FhP” Ä,7È1´Æ—ì24)@SÀé‰[8£¨Ò /A6b-%žD-.LÝÐ\ÄIn·¶x˜î²zÌV!‰žò;ºa¢¡+¶ ø"Õ˜™;GF¾ÁûëE0CxÀI¥ny‚nŠ Z7¬¸áë¢+°vÞ0dCbûã°6Y«§¥þ¶®é,2¿t¬B,T5Å"CÇX5à;²¨“uœ¸n°§Ä²¨{nøµë†Æ£1ÎØ[MÔÞÁ@ä\ þ‡R“Œÿïl€ t’ã_Î0Þ÷zG=F#³›Î6›LJ/‡‡»/ˆ§JÑf3¹ÙÊËÔVÀ2•x}t!`>ƒ*®QиºÀòÎÑI”>îú±M¢º¢qÃl¯l$€#ŠEÄLbïÕÂÆ…#EùêþkÅ M†+шű,n*o˜Q”5#A7ö Ä“nî*Z\’,Îÿ‘­uƒÉ›ÓéT á86õv›Ší0¯Ï-þÅÙJmIôÑ´aë†e)+[8ÖJ6Vk ‰IEÌ]Œ²ZYp„D©†¥ñ´!.ÛOÔ _U‡!‘ *t¢:"žâ³øû3¹/Åþ›Ïé¤Ò Œ‰‹ñ?ðq3ŸM=rgØ!Á <ëõN[BKlí NA£”Ïås¥R¥qÒ‡§ôzý“ãÑt6{ÐýðHÜ?üöpûùÝH ‘e>0ž§R.ÏÀ\êÉ+ÈóåòWJ‚ ׸ø‰/=%”3niC›IbMÑ1Ôô”å*ê ‹…Ç︌>„¦b¥{­i*ºÃ.dLæ;Qõ/6t‹+tc,UÃŽì'ôµoëÆŒûð`:!©c°².É —›"M)–kðU\¤ÅÖƒÐ:¨×÷÷ööëõC¸ (y£’ Ï5zëÖ7¥$‚ÙhõÎH7Îú$l)Ù껟ïî{xx@ýÇè{‘É=Éd2» ñ]ê¸:ÚœC0ݺ,B¸ö€'bq6º¿¤nh8¨SŬa™‘’²ˆ¦¥ ¡0¬mÕñ0Äãÿ„—?hiÆÅ…à_’Û#¹ùîPÖ¾°>ì9ë`£BÅÌ!&WÄ8SˆSaØf ¡aн&AL›Æbº7¾Nxš¤JÀp‚/¤ð΀¸J0 k‹%ÅtnîyßoþJ 7ŽÅŽæÏû=ßóüžd¹.*þQØÆ¬B¢™>‚…HYVaçZŠj¯y¢®‘7XÛ²•:æ2%$Ž©‡P— ¾ÁËÏÃÀöù¿§×ÎiAðÛÿp?`æë;І®ó7ÔøÂ…é–è¿{§ H£Ñت׷ê Ú8¡¢ÒiA«°îëËëOŸýõ—O—§½v{“ã„T}´ñ°¶bXtÂ\‚Æ¢@ò<ø®h„Iòè¦øâ\&¬°¨[¶ ÖV. nÐÙ=öÆL&sº˜SG¼h…{à+Žr…¤€ ³€Q? ²&;ËX4*£è\ýéK´±¢„á^7õ§Ü`ˆBó[1¤ýˆmæ;Ó†7mÅéÊ,ÙPc< ÏqaÞ‘CË0vùºAPc³ua¯»jµ§ýýV«¾möÿÑ0̓NçääíYÿ¤cš:h£ùúúåúòòbÐkKw8L8O8_×j?žSˆü”Gi$œ~Ù²±Ÿ±4xjîrÛÈ@´â¹qøºR:8‰.$¾„Ð ÍCˆ¨)BÌf9ˆæþQzgy3O²qD‚dâá¼ÒQbð«Ã3Šl©ØF®Œr¤Ðþ¤2¥)Ê6 ÞÈ|#Ž¥¼A¤a3,ø†Ÿuˆœ†F®hØñÍM2Ð?ތʴÁRSgeÒ$}8ôÇ¥&åî.ŒÃQêô€ µ?<í÷öM è­VËì÷ß²k™°ÕÕ½ÁåÅÅ)ƒÞ‹v·Ýëî¥$Š’rwÒP®Aº?WE³8ÁBZMi’Óx2™NX½¬Ü6J ÖW/ÅUŇHV¬ ©éq*yI‘¼Äq®83¬Éæµ…þË8ñ%GJLô…ŽtùÆÎÇ2È"e6O…2‚…šòßÈm#%Q¯ÈgÞ6DSã˜ó L8P‰2Ç)‹F’‡˜â›Â6Ø5H?coè0Ý“l4@Û±w5 âËùgªŒ;úÇGä}Gc¿s|rr† Û!mÔïmvÛÍÞàtËh·aƒÞóõ{÷È28n dƒœˆÃó2û§» ­†tÿQ*ŽI<™w„©o6J¶1Ê…1×R2}èRwñ-„G n ¯ˆ©i7°vBÆyã€6ä¬H’옡â8IâIþ!´‘Ì ‹èÑêÃC‹ÿv¬Y‰62—оhEKQ©ÈÇ¿ê(J©â*ä¨GQ`IÎRß§³¥:Áò˜ü)±ÕeÉ:˜GÁªëç#WÇ&š€0ئ]ç%[…¥Ké·h²XL´þ¤Õê ˜Ç>DrF=å-¸±¾Ù\\À,^´{½A·‰w÷V©¤¬ï^¿R«=ûÎá;w¸ùø¹sŒ³ÝNš¦éÒMY¾P‡¿7²L¡Žri¾ÛðiöŽ0ha+‚ \O­`„Ô§ôd™"EÌHáûÊ4/*È –À¾AäßH$2С¬Ä×cÁ d©Ç ÉY´âÿ×7ʶá¥#PÊX(°PF!9mh(\=âh)'! ~œ'ûÞgÙMÑe^’þ|Ú•Cײ¿³-º*œÉÀaé¢VûúQ}»Ñ0Zf«qÐ!ß0÷;¬þ1 fkm½Ùí¾F–t¡ŒÁ  ]‡,67ÛÝ‹÷ßÔjR¬ëÐ…­r%ÇÆq9 8o(T  ²«ðÊ_À %cªVþ¨ÚaƒTg¤ zJ_È€µáðŽuˆAP‡" ü7І‹¼qS¾$ß°„RÑ!ˆˆ3iV˜G€_+ß mÄð WÕJËM %2R ÷×’o”%.ÙF”?v°¤Á²»Vq#G FËê° Û°«Ú0 Ô”§ìËñÍ$Dp#TÆTSJ„Jt¥¡§ðÐ;gq¸®}xÈíõЦ«ºÆýZíOkhõÆþÁüÂi4L`ÇþÁñÉÙÙ[ˆÃ4A¢ë{H’^Ò@ªtÛ{w›ÝîæÞN»wyý}­¶ògd”¶‹þcº¯ÎóR1®ôÎq8ÁÓ$C6·ðjœÙưb¾*)‰©–æ¨ØÔáJX_JC—2Š!!y2o¤ˆsEBh†×IÄÞxEºxz¾AJ¡LI|áÆIZle”b()¦ÜS¢Ü6*5e‰k,4Ø m(ÞpUUYB¢ä 6–÷J’B¯Ó›Ûû\fh†ÜŠ”‡Ø…ç´-ᇇćXèïþõÕßÕÕ·Zh& óÚØ§H6ÎN:G&l-¥½‡é žwŸ·›ä/š{íÁõû÷8‡XÂ[ýFU-qª¦¨{‚ù ã ùFH¿ƒŠo¤£òU‰¥*ã—•†piôa(%kCshY ÍcCø1~zéÆ4É8Hápœ/N=¹õu·Ð†c)(ß ¸AtéËÇnbIòfÍ…Qª¯J?¥£)‰úêi3ߨ è‰Ú,Žô˜Ë”Ž(šL1[r ÜJf±|Õ±"¹6ÅOÜQ|EW±l–#œCñ.ÄI­ö›-n kOÀ¦Ù9Øom7+P "=å쬿ŸúFÄÛ袞4ÛÍîi¯÷ú‚M£°}F¾¡í"W ‹iôîì#FDw÷¡4%Üû”øŠÔq•uXî)™48SRë-l#7 K¸Ê´uá…Ê7µ°ƒws߉AoˆB¹§"P¾¡!( àô5+Š’,è¸5\–CZY"&ÔÀÑ$<&±(—tÎâé%רÆJI s™âÏmàÜ7ŠHV¤±Ä7le¬ªoTJ©¶’*ð ø 0Š4ÎR¦ýÉìïÆþ¹—Ê'CˆØ¶º¤ÍÆów«wW× ú“F¼Áe Ü÷0~8£ž‚Û m€:7ÛM´Æfsð¯/•iÀ¹åã_}uuĸôØãàcÄÞ‘¯*+¾6Ò^EІçª<©ú†?òkJz5{©¥¼A¦iÀ M³` YO¡8ÑEæ”)”"|ÃѼª6ýM’Q‰7Š8h¶3 ’×w¹©¸ú,wY©¥qý8O¢UßðRØðª-ÅÍZÊ0£²q¶a/úF2×G3F9bq2‹1ù5VÁ÷î Z 2âQ(¤ $` ú Ú‰aý  ñÍ:VœlcãÉv}¬aF·ëõi ¼A5¥ßi46¨€=ÁpŒ4–Ÿ?}º¾¸ƒB¨î÷‚Ž¥Dù¡&Ëà£ÆóW4ä^WQü_Š”(J;lJEKQ,ê/H£Wîòì‹‚/lZ!øñü@JŠ\,`Õ7d¦ ÚpÅ0nËÚÀKÀ–µé ¢‰î¢œðªÈz6ÔsÜ(™FJ±Š”e¸Qñù¢âzp,GÑÜ3ìÅL1(^‹*­¦ >&}¨LC|GJÞè•k;ÿÎBméC\Ú@9ùË_ÿø[ÖÆÚÚ–¹½± i4)õzýÑÖVHÚï÷aÇGæø•ÕÍæÎâd§ùËçOŸ//¿¿CÊ€kˆ;reeEˆX‡þ-®m¼ô¸²òŒ7øÞøÈïѵ¸mo K¸Á5…ÊU)Ú¦¯šp(tøGÁºôãØA$àÑXß ð&ó$cQö ;õ…u›DšQ¨ÃBÚüïò i$Ë㸌ˆ-·WX©‚QiNaÄ…JH··Ù„±B†YBB{ZhdŠºô5¡{Xdaosé>,sð(èÃ4ô¤@% 4TÝsËe¿¿ß{õ7Î>Û*µõ¥òÞ÷}¿Ÿï̇((ZÒ‡Ç\ª¹3³Ë5—*JØ3¢P#ú5à`·L¤ñŸñn°oäP4ÑŒ2œ|KéuSÞ(}ƒB…ŠÕ-cÌ/ × „áÕQýý›k*ÍÔü+ã•AŽ¡w{T~ó{»¶û[Dų•ÒvµETêõJµº··Å…–´+|c¯DƱ²±v´vtyqym|¡âÊf*ȺÀ§²‰ªB™‚2ëÐ6N}/^$ÚKª&2yyÎ;YRN¢ jÃÄ6ò¾11UÅpMUÆ>ûxcŠ›>rU°¨©ž£Â3оÀ. !xß ¦M|hº0‡Xt¦Ó5â«¡,?R¹¾Îz¤fv! øG*‹TMÔÁì—³al™X‘êùšàFE {fœ,EßÀªÒ‡ʇ6ÆãþE éq&l.½64Ð$m@"Íæ«cãø˜r¸Ñ-ÿ±ýWûòÏG++L•=•ƒ*ê€<àçÒ.Ö>XTˆc·V»l÷û”Ç«%!¥äCÙćZ.³6¤8°Z,W)$ö_x§ô?“‘PEbÃ8S°†Ã´ÂzYß@S.Muy'd‡õÊÈ7Å OÃ]íEÒ7Tl#î)‚7 …fæ¾¢ÏY"NFŠŽúƪ@ß1{òg¤ q 1]¨¹Q½2f2IrÅóEGá8£ÉºìžØ¯ãòmT¹ºÿ|×®Ù6L vr²¶»²þÜ‚m`ÔO«Uëo–Uÿ¶Õ¹~ssÓùÖ¢îo•J/'¶Ý¶xüT 8ÖËÚ¦òœ{Šªi&@_ªDMƒ^ÆáýW¢;?D ?ˆp£wƒ~Ű‘Á ÙR†9ßÈðÛ¿™M„è¸O3§9D©À) 3ú(HƒÅA×™Pˆ§‹{ò)u!Ä!õa p2£0ë ‡B%Ýš"nŒ„-JuĪÈEJ*Ø7º±u,ú›Ç”jì¤âO¼IªM)X(Œµú¤¡—±“°Žç˜çªoßÝ?~²ð޶]«­­•J¥uBÑj½ºW¯×O­–…H!߀q R —Êv ýµa÷íþãÏ0 MLª©›H~•üãP¥SGévßmŠûcÅ$>åì$XM14Fù–’â†+–‘¥1%²ÅlÅ Bó±qLÙ;Böì#«‹(+™°y"}š˜H2¢¬k„¡§²¥„Ù8‘®<¡ Ô„|¦Ä5ÅM/’DI¨$²Hq£Ëq""e7&â¸`à٦܉ýc}Èò„E¤¹y6Ãì:]>̆qf½xù²Ñxkßyì_ÔÚv™²¶²þl£´U:¨[¯O­së´Õ²p³Z7×ïßSQ©ŸV*ë+»'àPûîç+P§Ö„•UUXÒ†®©$@z-F’%Þ¹'VMšË¡MãL6ˆ6ÄÑÉD ØlƒÍú†XyVäy%Û€oLe®„Ò7¢Ô8f‹Æû†¸Ïæcw–&L¢ º°>h&× InBO°¨‡ÊO‰ã&™“Æ(¢R®“Ö”¢mˆ’ò4o°8W¦ç5FÑLbiø8_ãA¬N¯‹Liê Puuiõ› »Öh¼ q2¸§„y¹T‰õ÷I˜5œ…~ pƒ"”&&fý‘À}"ªbMÉF ;gJ7œž+C„Q/9Ñf/í)q¤È‚’´ØEßðý?j*})¢ÊáA„m`¥{Ns¢Æ6•¥åoúŸú·w·¶]ƒs´QT>÷©ŽÖÖŽÖJ[{{{ÕsëüŸçÌÃâHnt¬ *n©ô»¯¾RPCt€Ž»XÕHñ@¨¨p ~‹ ,oôh,òØK¤ñQ,"m+õê)7õŠDf[Š—ç ßsÝOkJêÞ †Šù8Þò¨ccY>Sæž×›ÔAÃU%œÍÜÜ™«˜Y߈˜n%o„瞤@Ò9Ò)M#‡àP½ë: U'ÏÑkŠª(¦£‰0ÒHµ3QGž7Žé€Ð›Ò“Å`'‹œ'T;ñ°¦˜o i†< ûú j¸d€2úŸ>ßÿî2mãÊøXÜ:˜@Ó÷N-qXÍÆ½ôÐÃÓbÁšÝB…€‚RR–`e.½ôsñ¡ sKÈ%·šKz+ªòÀ‡Í¢Õ@X Œ`A ñ!«ƒ‹uÙïÿ#il§cE™‘%ùÍ{ßû}ß׃§t=Ú¶v·®_'uìííÃSêµúa­vx̹ã˜Ò´q¸³·ýƒíßU×ÕA­âˆ¤ rǦ¤Énã pØôÀK›þËWæÇ[º ¸!¡ŽzÊI9nD9½—¸±TÇ0”β¥¤Ë¼AÑE¹P…ÄjyÂü‡ƒÅ†V65¬¹á)ÇM¯*c¾ˆ±Dñbn¤’á<–î:mä¬3ÛH¡ðñ×”.׫Œ57ìˆK†ÆEÜð¶± 5Ân#mh—é€uS^‘EË5…+ìoqƒda³8¦”ÔÀŠ(jŠ#Jo{ =¹>pãÛ. Ñë>yÒíu;Ýî`4šŒÏÉTvw¯‘£ìÀR7 ‹zýQ­FM–¸Ky‰ »·wý#pögçNUA‚x±)+3*d.D(§Jàhx`­0f…-ÃÒ)™ßÛb™}¨àFsSy¿2ÊÜH,7ؤÒÌ“­ŒB×4SjhK ¯g"Ô… qhPã=ÊX6d0_øØÃÑ<3éšÖRˆ6ïº"ÌÒPhë(en\©)œ˜.p#Òö/| žr!wUS”{)o¸žMË$z%o°›’H§†;!ÏÎ)q#¥Ò_æDÃÒø)cã^g4uÚÝéb4è ÆÐÆdŽW”z}© Ô”×ÏÐSž×nW*÷iœ.rhU’.$s£b …=“ÙG!pHÈú 6?­e–&+qœW[lȤëG˜Ÿuܰ–RæÆ²¦\ᆒä×®¤Èµý {]Šy#spÒȵŒóÜùñ[,´!G×6‰ºxƒ³Xx4v’ÊŠÙ ¯ Ê(å)›7æ}ú¸“åFh|~Q*PI†HAyCã’4¾K™žæˆªqq¡TLCu¤nß 7ã ¿ TP„ms®dXEKqÕ…°á15Êʸ¬êBÆ[î)ÔRN-¤ÁÃÉ3n¸±ôðq¬×ï¿ý‘ìd<OÎÎÆ“É›)c2:›Œñø¥}tðù.kcöËf)Ä8$Oi¢¦P}ù«ÿõß“x¡;’”A…HQak¡©c‘°¥H–Fƒ RG´ CJÙ’ËÖÉ:§ON‚56Š–®¨Ñ¿œDWÜp0ã®ýÝ×Be‘#`'g-%µ—úÓÜ—^®ñÎxî`ú37Bz©Â¢ ^,”T®Ç¦IÏY&]rŠE+ϕҾ·$’ÎRè_£3|…ã"Ý JâZ‘ÎwÒ‡‘ÙÁà½.fB|Ê…||(jÇK1maWÅ–”Ä1Fä Ë¢¾(ÂÆ:в6ZkWyoÞšÓ!çá²8ØÒ¡ %@ûîŸðáŸý½ÌÙé½&g¼dK‘V9ºGGGv¯í ¦ìÕH‡M¢Ç£GÍf5åõË_:|EÚ€4`wtaÅ ÙÜà@Š­XU¬ˆÈýºå}¹`n˜‹xduºj{}ÃÐ(c ˆÑEq¬ÔmÂI‡X¯4©Š" ’Ä €£5%ÊO§Jóé’óD†˜‘ÐUT­`)Ž„,†!Ã"o„ E?¡'‰-èCçó¾Á iò©'ÙÌ2™VÜSä0 •ÊŒ¸A) ‹mª¡W6à^¦\håÆ!SÄ Ë „(¢~H8Ê-…{JYW<…¤ ‡<·ä'Ëx)#Oç´ƒ¿xTqÄg_µÛ.ŒdÌ.2›œÍfç3ãlvj@½vè8¸öáΧ{_ ¾Ökš0ÍãgÏ~…8žbÑýøUD£l8ªª Œå€>×'À†”̇´áÒÍ…¼–é…Šwš­¤A­QI ËqÃrãR]uG «CH$o?u…T:@ ó%õìé\‰aFÜÈsÌžQ E±EPc\«¹ˆ#ò…Y‘Gcééù"an §Ðð‘ÀB¦`PŒŠ­ Sñ³4UlX!alhÆdnnÇTUâÜp‰qÿ'_9±/õ~‰t4qCÒ¤Ÿ¹ÑòZGçâ†WXÊêh\Öy A’HÓ·œDùÉP=DnæP¾@‡Õ•OŽŽ ΃Á€,åÝìülòîüüüÝl@Fçùsˆ£ýà´ÔýZóÑ—u&´/yùúŸ‹¢¨”þU;”!+%mXQðÅ‚¨Ü¾ 6ŽF«…›²y#)©Árƒ‹ [ `‡Ù NÊŽBq#ºh*ôèØ€ÊU§‰VœžT©Ó=eÉ eò"oHßöOqP€ÈUˆS14t7Xl@BÞ\h-rÒ]x"àª25ÂAƒu@ ¨µf õ”Š@èû¥üágñ1in‡Éh!o(„* PbæFÆ:î2o@`eÑâðXknpÚ°‘£àF£q©§P²raòW•ÄdÄ”¡apøîJåÞO@…v§7èö`%иqþ¿w‹ÙÙqz6õ:½.¨cëC`£†¸QGÎh~ÃÚ@ƒ}ýúñÓ§·oo/‹ªö AlXUÈB›Éë¦-±šì^Ju.É“²8Ò•§`È?õ£ð$8 Âð‚©”“hÿR¥,*­6’LK\Š[È{aÁ n8ÂLKÜ OAÚ7LÌØ`när¥ )æE‰!G)gNÚˆVÜH2ÊSËiæ)hñ7‹ $´‘`HÌ¿Ø|,þñ/›ñá)®y¡ˆ¨Æ(6^%¶GàFÈy‰Ý§žâ¯{ŠçWu­+ÜÐW<%6IÑZ³õLŸc³ä-,ÅJCUÄöÖîÁ¶ÛXøÎ ×ë@ 3ð⸱XœÏ!34—1~xt¾ºvíÖþ¡¢ø×üä $ŠÙËaýÖGŸÜ%÷ ƒÕ±´”MqÊòæ2m°6h#„!K™À‘i4ËJqƒÖœ¸Á–òbÝR€ÿÓ]>¡œg7]L,YÆuÀŒ²Q*cðÆ,Ê¢ƒ£2¦˜¬ÁžƒÁCYº!eJñ¥·b.9ô"U‡€/¹­Ðº…‚ ìÁE‚½FP°Ñºè C°/}ÞïÏÌH›|²;kÉóçù~ïïiF²1— Æ zŠàFEu\W£lßðÇŠÒÇmT |ƒ¸a'г™k‰[L f0PH‡GôH(,1Ä Å|4”„ùXÜ Ïó‰ôD*ÈŸ÷¹b#– —qc@Ü | ú†uko7H5\ ÊîP=±Í„Jøhrßh†ÜHjzÀ Ì”„f™a: IH>¸át:Ü[Y^~šÞ=ÚÕÉ6NŽNÎJ¥+HèÑfí• ì™™G†ÈK¯¤#;;ÔaO —,´.1TN ÙOs`~:ûa2ýÇ—*¬ª*ŸP6/2_làûž ½1~4útN¦f : ȦÃàÿk˜ûÎŒ[‚šf:ï)x;*œ#£bâ”5ÚKÈ©‰d ‘p„ÁˆÌ”Ì<70SŠ÷Qã »ƒí]±´´¾‹Å–—Óú‰®ÇÓ»'`¨Ñª¶á­Þ儞ø¡Tíµ[#ŠL»š‹ÇR[ÙüÁi¡@²û7‰ š-Ç…B!µ†w÷F˜DÓé¨;z=|õ%³SìLê/™g 8‚`ðþZa-…qU……ƒº¶š1Ì7êAMi2å°CÙ° ÅF¸Ñ—çÍ[®ëz÷÷øòïñ¤fÁª':Æ,ºgbE¾eÿ0÷ÛÔPØ }¨1¦tàþ$'8? 1'û0ÑÈâ=…ŸÊF /cj‘2튺UgÓD Gòw–¹È(8>戼$Þ|'ô¿òäW[«››±•å_çôx|-Nëú®®ë¥Z ÒÑ#F“} GÝj»uM½ª¡¥äâ›è°ùƒƒÃEãeùæªu‰‰BØÈçWW÷ˆÓÑ_«oÉ^ÛíÖëïTÒSð5C¢ñì™,¯Ø f±XA.Lz!mààpã ÎâB2l § ÎÈlØ‹5e‘.¬Ÿ…ƒ^\v·¼{zbq'}±füI‡HO†D½ÿ4ãokæ"¢ë1bÓ´tÅ€Üb9··üX QHÜàÑÀM˜MáM3É’Áº E£ÁmƒéFDDeK‰0£ø±‹öy6\þŒph>YzòÙv*•Z­¬,c®@G$d7§Ã6HI«LLG=À£Wkµ«'µÕ\=½²µ³“ß?Ü?8<-¿D…½d¦A/PÑòA¡ßÞ\Áo¾®AaÚww½×™låK–$C¡`PFTÉ" ®ÜÏÆ8Œñ@Ãá¾q]ç5åZšh“Õ”€s¶Á°GŸ¼KbÕ‹'ólÐòýÿ1nÐÖ‚ñ²c&’!92 ö.ІÏâRŠaÃ÷ƒ™ ŸŒ/W!7`EªÝ¶Ýh¨&ë(QÃÒ¾úÓEÄDñ0(7ŠÚb6žÃ5I#ÅÓ ÇÙ­ÔöÖj è@4Ö–Ó{¹Ýxz –Öj„’~V£1ÒncÒ`ìTKU}9–Êfó§‡4QÊç—— z7HE1kvR±t­U#·­a´tk­.fL»Õ~•LðÑ„ô9Aƒ/B6»é¶Ã/&ÓQ² –ŽcSM¹;J3¢þ片Pr~W<~Óî6îy47fóÔˆ~ã…cã1àÏJ >Ã÷<–Î z;µÏŽî6’ ½i n@Oü¦Ì†eppÐÖô ua=çØ°~ÁD1R>ê)ìâ ø–à ¤Büß.%þx~LÔØŽ¥6c1âF<§çÒq¬½xúÑ çhUá­ö­¶TÚ;*åô³RzeÑ(œî6ˆ7REÉEÏ ûùÕØY«u…²ÒC]âóºä-ø¶ýu–)j ¦ÊוJ±" ¬õwlŠïm\Íà^²„ð‰Òï §X Ya¥oº!]c®¥lpnð+¹qOàðE6ߘÍM”…|ˆxÈ€Ìs#‚ ŸyÆ8‚ ž ‰ vL·tp6øP±ÝÀjrÙhЦYÒ°‚\0l\XæÅ¢n•0Ç¢o°lȃaó¶ÏÅôÉÒ?/Ï ÈÅv– ÊÆòZ:þÛ=Ì•ôÑœ³[ë '“».ÙÂU«×³ÒÞZ<·§Çc›Ùláð°°p@-冀Qæ3…„¥ö4¿•Šå¨ø\õFÈ2V½›L§“ápúaò¤ùtÙu…|£hðþÊMôû@FCEr6úÜ7hè#…E#Ð º°!6ßàÑ7Ååd—܈`cÌ7=Ç|:ŽÁ¼ À1“Ÿ0æ‹3c,FÊ@‡¸8¤[:<©¢ÿ!lD¢ÑdËŽDƒ† · Ò Kp0’•7Š‹3Eësnã>úïX8„†„`¦RÐV¨Pa¤æ¾¿÷fô'ÜÈ‘FJ<ÑÌûÎç÷ùN!¢h(4^òO|*™|Œ‘rnP6*•fç],£M*±Å—ç€ã~þ„`¨,Ýë R™²¸™Îç‹ù¼'Óhd³†ì*%:[Kª¨ÌF¸>TÔ}e±œ(‘‹ÚëØP*ºÆ j)®¨Óq\K´#%*)è°2¿Åºo^ÛÛŽ5p„Ž®LFt»{¡­¨ç·-b`+g¢’²¦ž%ÙR.qˆvÄ Dô¹ÎBÚUÜ<¦°LBë&7$6¾—S%ŠFé ÝØÆ h[\bÕ5vÕPÑvþÚ|W„3œ¤©§$ï%ïîî?ž’6ªôÒ d4n¦7óaŸÚFƒêë‹Óüéñýäaúäìå³\î=&H‘Zü„92Ž'7´†óéð e£t\äó…ÓÔî=JU.s~ŽI4À ²Ž¦ÌqMå$ùÕiᢑ…´€Ý¨1ˆHàð„iÕ}è8âè²2åh¦´¥Ÿä·ÿ$b\aqñHKH7"Ø®™¨£¼â†qÃâÈÆ Ì5w¾ª°±‰º “¸1[Ö”Pecûl‰Ááišfxòg#®iºv¤!;Ø£lX#±£¬Žµ]ECÃë!X.¥þköØ5¨d9š@6ÊoßÖ…Îê–mj~` h¸ƒäùó£2QâÆ¦ŠnèÆvß »V^£·ón€åK?:DUÙÛGEI9ÍW« ”Üã(­×ÁàÀÝ=E¹è× è¢ý~«z\ n`¤œeÎÎ24Qš) ¤Y‘C%ƒl¤žVkW8X—HÔNûý`<¿AÞT<ð¾ßýƒåˆ6=k”ÈFm9Q°¢17¼OƒèI-6]Àµ–b“Ÿ¬¸AyÅ^$3¼Å4GQÃ[ê’+؉òoK߈”ƒÚè¶l,ÇËÂ`ÙÑl1й˜ùŒÏ”s8ÌPæ12¸í fàlפêDÕÀ“-å~F ÓPR"Ýp„†SaÂù—}ii¸a8±n†µÉH7VØXéÆª¤˜[zJ[•˜Í’ž»ó°ƒ»;—I§“éCˆÆî.ÙÆiµ†±Ñí¢°B.0SÐR0Qæ“iÿ*ÚjQFROSû»PÑ“³ |ÖY0:"F³ÒA6ÞÁ?ÀÜùÙã½ÓZ7†ÈF­Z«貈Æ両©2 ð×Ý×d¤£8:5†}H† Ç bA+-o.±6QèáÜÒömny¸Gç—Ë8´(»¾[v,Ãú<À~èf™Ž—ÐÅÕõGøÂ„¨´g#Aì"Äg¡m–Ù•-G‘ñ€A“…kሳ¨Á:Ü.:"nøB£lüj ò |·d˜Žt?·÷&aàk–5c©m×0p.‰7ö%DªÌ‰±ŠÖKšP¾Q_Ó¿­sCECýÄ*Šp|Á÷ôßõÖ|£GäðÞyHäG4PE1M°7òµ‹‹|µAàhÁ:tMPc>™/Æ]ú Û¼[@ɽ›L'™“³ï*$••Xìþ³Ó!'8rÏž¥¤$ô¤l\w[Át1žL§7“›Å|2n€(A¿Õú¬C—]…ÂQ·Ô’z¸£ãP«Go7¤nØKÛXRcä\ä:7å¡ë :sü:3\øOpf„MuC£]óf¡É Æ=š)Ó°úŒ…3ƒ>cF ÿÄPÙ@ ”0î7”±€¡ì)!q¼2,B•ʹ«qÄ"¹ö\‡ˆá !¿s[E)6ÈÆ¥]gÜXÖ|x¤È?R7¤p¬EC"#憡·}ó1ˆ[ ¾œäaãì„L#õáH$6.. bŒ…Cçœ'T=ƒ>es¦Q8ͧî S™ÌYúY®H˜xסúŠ[!~ÐLɽ½•ëË’‚+¾ó»ÿVL.Me?u¼ŸB­U/`¿ !Áp*ðQ  0W}ŠHáôþÞA’JÎI®éFSõ×ÎGÚC8^’n7rÅïŠh'›$ŠI“l%sòè`oïnêøEõÔxòôIµÕot§´¥Û´npQ»®’Çô1W44“¸a9”/¹ÑS3¢½â†#“±QS$8Úí lÈž‚™Âêƒgmò N¾ÁÏo™éûÿ£»|BÛÈî8.Öˆµ¬QCM@µÝGØ [Ä"‡1Åì¦È †²{"TJ. Yƒ˜C÷‹Ô¹)ä’ž"<û°l@`…l˜Žš ŒN63††tÚ^úýýÞid{ŸìÑË£§yß÷ù~¿¡›Wójö44ëa˜ÇVD“@r •pÞ³Ä Õ&BØc¬¹à†¥ìò}Ëyƒº åÒ(sÃFØðý¾¢öI`в4.S-¿øT½1Û²f5¨¦€qÃPžšÓ,JÙc–)ƒ>ŽغÐÅ$‰25J×ò]MWbã]„Ì2ÿÉ·ØÜ›wÒKÄ ж·×Ôõæ]%‘ØCðh6! `ãð°ÓzÍ´Zåf+Œ§½BÚXZ-"®ì³©Gì*Ï©§à̵­Í\.•J%7 °-“L¦ç5Çé8Ãóé¯(§¢ßâãK{Ê\¢„Kô©§8|æáÛ¤~Ä A ËŒ§ YT&=EÆ î)¼cKqÃö<æúÃEX]|èÄjø_¼Žåm€UÅ”*ñT5œáFŸ¶ì)Šè)ꤧÜSüIOAÜ0=ºìˆÌ UPn ¢rUùJE=î÷…§Øß«‚Œ*zJ¾$¾±ä†ˆíIMá;ÓRêSnpK©–v¯sCäYnàŠ'”}ê)¹tŠÂ¨¦0V–éŸ~¯ë,¬W¯7ì5;O;ÚÊä³ÑDÝÓ +ÉôêÜZQtØ£çˆ7X&ä)û¬4NžÊ,,¬’ó¤•u°Ç9-Fè³£áRjj¶^Q­Ÿ1yª±¤ “öÑ]=J÷ö›7³yƒ´ñ Òˆ÷Nù±´!ZŠK=çA¿è7úž«€m¥"(f­ð}yã©RƒFv7 Q]ܰše•ÀYÀ T\*«Ä¸1ÎA¨ÇæQWÇc„òî)‡è)d&Ä:J’çu•¬M¹oµ7Úƒ®Iê5•Ï~Såˆmˆo`(Ý 7Ì?”ºÝü®l°Æ½’iÌ`ƒu1S`7ÄkyƒzE%90ßÐLÌý‘´AÒ(¬PT>¿‹ÿøš¸«ë ™-\ÇAXèA*… 6?ùOAK¦ÒKKk›[;;5ª°ì)G‘8û°’ÃHͧè'™Ìd28M1¤:C£ D××1ƒûUƒM…}ÀØð¸¥ rL£(iã™ä†Ù}Fàˆ5ØÙ<iCpƒÀ‘'dÜ3òYÉ ìlÔ<7²ªá Àãz ²¨9y#TÕ’‘W§Ü°CæFHêp©‚T&|ôÁ ê)%Ɔ7ð±j©„*"T]Q¥¬jSEØÿ¶Õ[‹&MSâÉ›YƒzJã©i6òÙ¶)òGŒv[­¶©:8l©¥ˆ¨Ñ¨>œHC`ㆼa»1pFÞ7Âÿü#‘¸½*£h2¹Lf¢¨ÕÒ\¢L}{¹ÕA§¥Þ~ÀI:ä óóÄÖ…ùù%dÑ­­ßHmPÌ8bS@`*ö@y›¹5 ±#Ì,¬¬kj,ð¥&WPÊh1£šŠ^Þ(,ÏÍÝgn q@Âá;_Ìšnðæ7ÒR$7¤¥@7ØLúö qƒ¸Q¢óì*Ù.åRt׬a}âø sÃö9Œò6ó(x¸ÒSúÇÇÂSºœ7DØèÆ“èÕ¸ÁØpå™8½äh\Ð¥¸¸¸ ÅÄQX„/ÌŽqì^<ØI¢©Œå_–‡À†Ï§;þè7±xþJƒÓét1u·e£ôÕPSHfÛœä QS"O!eÄã†F}F»Œ«žBW‡µ1µ”Á€æú˜ÊO¸Æ¿Wÿ\ås’GýéÓD¹RÞÐ( G£óËçääìb©PÑ]H%IÐFnuI´†–Â=žBä€:È\žS­moïl:Ò©ÜbÍÊFÙ99ÿx /A{ ¡ŽÕÞVs¯¢éúž®VVçUÓ|aöy–ÞT®ˆ¢}pÚé)Ð…9ƒYn¸"ŠºrQHB"Þ«ã‚F îä}0R(UŒoJú CÉ †8°*¤(g¤q*ÆTQɲ`*¤ Ôù%…2Lx‰Ú¸VacqƒóF}Z`2øx•.‹ÃLx·„ë«Wø®²ñÃßX× ¥©C=Ûu‚RŠÅpØÙÈ$SÉL ýdi>µ”FI)nA(fÀS^¿elPì88 W©=Ø©mm#s¬ÂUr©ŒÞt>~üß/¿ OΞ3º¼D•…ü†CÇ9Ô+å½=M+C Éß& Bkð Å’©Ã:¶„§XÄgÖ$lȼaÇãÆ‚buÄJInжHEt?3$ ¤&ܘþDzUJCÖI H $ ÷Ôv§û'RÆ+NÓ¯¬gSã…TiÃ0Û»yS ãGc7Q…­O²ÆTè°„Ý=¥ßwÑžaO ¡ ±©h²ü0ðÿJâ»—ÈX4hc䜱 W8NK[¡(J Àq)·µSÛß?@= úÜxÍ㈤Aú¨ÕvjÛµíâæÊɤöÄ9ÿðáürtùñ¤‡3¢¹$† ËžõôfS«hë ÉLz5‘0°àžçzöD{%Q+–Eé'ª)Läã_™Ô”Éð¢á nÂ\2p`gñé\7YLôTø ¿,-E0#ÚàÊ5áÏIzW”£"j`üõŸˆ Ý)6^`¡u‰¶t”Ùžr=n”~¥Ã–\)Ì)8¼¸\> ƒö‰ƒÓF¾ôIâå!pNÛyD›ûM9ýÜëìm`W§7×RÜR¶kß°,ž?â¸Aäx-ó(›JƵ•W•ŒÞ;Ñ›°èƒãœ\žqƒR†£K¼„ÎÒBÜ(PeÊ¥AŽ6¨/K,ƒ§oSíê“utã-%6¦ RO¬]üAL³Ü&©Ã—¦"øm|_ìþ˜½Ä-&θ`"K‰òFàM¹1x/—‚æôÆË'´ô ãÆDŠ”æm”ÝÉZ5QhÔ¨àõ‚(ÈxC6`ç`*° „õAØqYr)´¦ƒ.9$¹:dB!½ Í!Éa±APAÞ µp0ã“”CðaOé¥Ïû~æI ;²!»eæ7¿çyöpwtÝØ•mIÁA…ƒË†ÒÄ:Êf¢H*”5ŽY8Œ¾±¸8Æ-öp‹– }¶®ôžÇ=AÙݦ“Š"šÍZW%¸ixž;ò~ç¤S!q`Ô:ù›S“,•H,–LÏÝY£‘B4 nÐ×›Wâ <Ð7–AG.“Žqw}Yø2´TsŽE玼? uD 6 œpÄö%+Z%6ôÅ×Rx¼šhÀÕ`ÝPÒ0gŠHņì>YÞ)ÙÅq;¥mdЧ"…žFº€|™Ë\n³ßgS)Ë¢@ Ãi"T+­4›«ÖŽs3 ]@ßHÆ ‚dn®ø`C³• ÀTy…>J?*Åå[¹:Éå[™ Úkxò¼>ï4±M>7+аGÄ`ó¨ÓÎR☌ÙÉéé+VV£.?qòzv¥6Žºž)ªnÈ™X)x8»CuÇCç {CÀ¡ÂâÚÀë?FªG`Â(k <ß O| Ak;°R†úé¾É‚'J:S6Ä„õ½±"Vʺ!ž)Ù옢ݪÐà«1îî.¡Álp¤¤¬‹MQ>; ÑÆÒB¥yͲv"ôô#ÂÔ7’s·Š(›Ô06ÿùÒ8~xùŽ5BcM4‡P±Ã1P Ï6ØDÇÎÉÙññÙ‡Èq‡´ÑÁ’-ägoN…m;™N_±6èÆô½ž¿±D¤Ð#%e›ê†Ë/ Ñ7=TkC¡ñ¾7|ȧåT½H@à*í}Q:ä/ÿ5gU¦ tUlȉdÔ s¥Œxc›Äa XÑ6žøhl™}Cice]6Ñ@®dÇõ ÝÊ”REÝÀLa6ÚÕ­ªLBã7ÖjD@ùF­†;8šŽã k5ÄTØÉX{%œÈÜzÀ–†ëCëÿ?¢ñk×VWwvNNN>ž}Ä׈²PqJ…ÂììùÚL.sÑréÊö<*žÖgJ]·m·ªWŠpF+èý¶¿`{ ;Ç©®~Î(o@ú—¡úáNjֆX)Â;Œ™‘)*T¸‰îừšèn‹­ÑRpÔùx!µñ‚#EwQ_„7‚uc=¨ Bc´oÀÀhí-á'JŸU-2ELñNÔD-TÂf­ÂåÓ©¨|¹jMD­¯Ã‘Ä4¼‘ÄL™ ‡§3sËEÔ7Ô.Zñ¿Oéã«ëñë©8^ð‹8¢_|µ¬sš‘ÕòÙÇOŸ>ý$6š LF)­r!”Lgî~cÅ»øœzôuEuãkçQ×è|i_ëÇJ–¹RtÛ`·ã@Äh!žQ7$Ãú¤¯Q#GYCÀ!âLÇ£ÐÆž¿R°Sv* mà_ÆdÔUÝ(W¹†mTFŠ>TÑ0¼±xoqlßHµ˜ *ÆLaA#P¸mlÜg4RV´Ò¨@ï5„Í)U:äÿJÔ:—ZB j±D Ù‰Ù9̵5.ž`Ã5:ƒavœæÅ¿pžòßHPßá3F%!Ñì3œâçdUs*Ø)*³³Bá êÌ7VJ\VOFÊÛý·Òn©RßÞ®ò%Ô‘Ò’ÅUÒð½¡l.ÞØÃ3‘ðÔÊ|Á]/~ÄèDé{o¨Þ$µÁâhÿ¢,Áá[Ch#P7x¥TÍ•Âh˜ÞX_v=¨ N…‘¾Ñ¢âÞâ>*Ì!eÀ—Ûu·øÝ×å€ÅJ©8MÞ N Tè¦Eq ñW_‡"ɤ‹Ä"² olRÝÜ$6˜¸Çdô8±˜ÉŸZîOø·=¥ó‡o’HTñqmµÑìœ »j/üAã8?ŽÜ½[\FåxbÀJ6×\E}mÞà¶ÑÒâèîÞϬþî~> Ãï¥ãñÈ/…Šè(Ò½o°6ö̾4Úîˆ7tÝàL)›¨,ÃÚX+Ɔ] vØ7D¤´x­t¹Ž 8Nñ' Þð/ Ç÷Ùì„…g·BƒÒÁ3LÏq©¹4ffæ£îâtæ€8béÜhƒw ±ñââ”^<Ö€H3hãéS:Ó½ïn§n¤`·Txðçc>&V1^Žt>®£ù›“!;]¼[,F­mº°?h]q!i\ÕuI«Ó’5',kC±/f ây=4逌ðáéõ¢¯ÿ9}˜|ôýHñÛ†ÊG¦•چʔÝ1Þ 8ŒH1ªÁ ‹çúQ9P7„56Vzc´oÀí–€ƒ.Ï”Þ)yÃkóFïJu?k}Uqpk~WÀ]ª5(VV-T‰ìLö¢u‰b&œŽÙG"LkÏIÂÝê <©û*RpË?áù«7XPÙð†…?ñT”>æågGðTÉ¡P™-¦Ðum ñ÷wV,‹«ù¶-¼ñºmTQ¢DWѶh¢*DÕNQu£'WïÐäãp*_úò7NŠ<¼AèM´¯'lwö†Ù7Lm¸Už)U¦lù ¶ìgJPë{ìÅ1ÞpE¨´ü­"ù‡6ÈÌô8ãÝîÓû¤ øÙR¡4›_ÍNÓ©«÷f²Ùã`ö¹[{:aÇlD ´Áp r<´ª$¾öFÙàþHçqwÝòÆÊÊÊüLVÇÊ×ãQ„Ëe‘-ñgŽs³„2 6¦Î#Tìéb±xð•ã½÷¾'g¨9S¨m5h§UÔ5VJW{CaÑUÑÒ5ÔA/‡cø0½ЈÇ7†Ö‹ç{CÊH’Ñ=TÞhÞÀgÞå™Ò6G ¬¡ÛFUO]EIå?ÞÖ0Yü¬7X²¶wɸbÂVùüè1÷°SâK¥R¾/9ÒиŒ7ŸŸ_OM\ILÛv:“‰…ñ3™ž£D¡HÁ†5½A)K…C—„½6ß6pÿ¸¼2~ça(J0Æœ»/2 ‡ómð€±‚7Á$ùC!_(¡v`É^+È ±•¸”°“v2—ŒÀ÷”(„åùsÞ°.sÑ?åÊA䮿Çlp võxƒ[h» 8R$pÈÜàRêœÒÒÂRajjÞ°Ók›/‘*øÈ¸ÅûoEFµ¸‰ª’ÆWЬ-¿nH6+…!óEÖ£wŽóGÀÆ€1ù–0õ!°1WŠª¢]µRÚ†6vwÚYY¯›‘R6¿Æ®ÁßÑ@¤,Š'q8S˜ ù<íKo`LôÚ|‰Ë´^78ð¿_+,J”ý¿…wæé=»óðF29N'±Tb±ÌX°ÜD_;唜S¾| @Èá~‹ON§Ûz´’åT™I}K?n›B9MQÆP°DkDG¾”§b§í?½:8x÷ÐÚ`‰‡lŸ¯](Q7Œ¶¡ì /Ÿ×DÒ4Ž "cEÓ¡ÝØŒvìЭ¬ N<”`pe ´l×B !ÂzA7‡Ée. ƒ—>ô¥]o+2ÐGÁ‹}ËMú c‘K ²{iô¿Øïó¼?ê­2NW“ªò­ïûy>_-Ó7Xíz¦,”0;–âeÅæ¥‡¯¥ðe¥<¾ëãÆ@sãƒÒ5„n eêt(Ýhé ‹Ê#E€c?À ¬%/ä¢x|lˆ”ö/bL9Ûæ¹Â\y‰ÙUznEÛiÀÂ!Ò‘($2ÙLéü ¸Ac¥oö”56ËZŒ0c!¯Fu–î€Å÷Ò9ÃæÓyŒª|:™$nP4ª6“£R¡[9B‡=,”À tÔ&y¡š…G=ý(x'¹1ð¸!ÂÁéáø}fDÃÈÇBM?> =Õûü+óeeEì ÑÓÖ+9Y=¥õX¸&6\£¦`¢HÙûtCqãƒäFû{ %ãÌ)̺­Ò±™Á˜—Mqƒ{Äz**ž—Ð:'¾Û¦ÿÓ—ß…âyÞàÉ\ÑnµíÐãÃÃDU…¬ã˜*Ê)5c4™ ÿ“&ÊU…„žèBdƒßpF&¬É©EœÝ9ÜÔñõxhŽ]SLÝPãŠ÷µÇ ©j›³†Öñ©T4d§3àuÒHátˆ[¦»@¶»—t¾–#”ƒÙHçìËöÛ|èQ"F¬hâ0{zNÄ@Oy35ú7#ø†ê°^òé˜ÔàÀ髎M±È%s¤¢6%[ƺ(<&YÊ;ÕŽ$¸A:åM†ÆÐh°Š"a¼S2ît$ü1Yª¹"€!2²U>ÌáâýfÃ6dK™ÏæŠ\R¦×¾–B_½®&%£c0ƒ³¡¸aè×MC7°ù4—ÜØˆ0•ÇäS÷-߯ÜLgŠþÐh9 j+UÖC>eÑèäC3‘ÝèÎN$Z¨ÕNx¦PKÑÎþ/õ‹õZ"uH—ïíÅ÷ÂéðžwGáP8žÌ#€Ò÷¹|)r¨y.òTÙÕ$ÖaæôçÏdƒÀqëŽeÙhsKé58xžo(LO‰®®ûø!R²¸çi¸såhYaǾ_?Vþ„èa#“q§Ï;׺¡ÀÁ-åšß= ÄÂh°ƒW*Ž(°ÃPÑ7’$ôÊš!šk×%EÖ”0z ¤ÄŒ*Y±»mbHýìíÛ\4‰Ð§•*•Ð^›ýf%eróùŸ¡é‘B/Ä ºüëfó¼Ùh4j+—J™‡3ÏŸ>}Bpçíü_óßÃsiváBâRÝ}ø bYV*‘8¬5 B»b‹‘#a°¼r8Ìš"|cjsÍ ããÞ€¸ù¸õ"ˆ±4A²¥¾¬åÅk)ÜÛ¤ˆJ ’#E€Ãk)Ì „£gúÆ;O76¼¹¢uCú¨Î=J™ ÛŽû³qÙév»Ä J«K°vç'C O\$z¡¶Å"ú¥}Ö²Ïp?àF”+–-d åÆ9Ë(|ãf$:¬(kŽÆZfϵQ«—K…R¡IŬJ¥òþ§§”›ËkݦK…qtèö÷ÀX*•ÉÖNn&0*]™Î%s£‡¦lc:4˜¡ €."SÝômâÃ}Þ)d_‘SEèÇöþ²2b¢&Ê­¯Ášº!*¬x ª¥tƒëkp¤Õ0tgŽ×R¤mlãÆ>N&²!ÀáÒä\®°Ð]‘ A X=O;Ø/²NЭjýªÓ…oXQ+Id3ÙL¡TkÒq>£çðõZæƒW¦ëeÑ(—² GÊ:zvñëÅ‹§˜2\Uè‚¢Ê2>DW‰D¬o³Ù,¼=¥?j6Qc?‘cbíŒ »%±¡U4¨þCÇâ+üp7òá.nÙàÝ»…d?i&Çv|¬|Ü£ÄWrC×”kÎÆõµ§üaJ†Ña;‚>l3.ƒ¶ámhnf 3ŽÁ@l*Üe=¥lÈhÈfÂÌÀÎÍåå##ã¨×V½~†¹„™bAE­T&“-•O¤¢MŒ*ÿaßP6*ÖEdÿçüôø¸P*…Òa*a<{yqñjçq8ô ˆ æx®Ty†Ñ4SR©ãr Xê÷Á¨pÈ%™ø(mƒ²ÑÛKª(ŸnÌÈ8ù0ر-÷¥ÃÓTõ”µ¦nÁÇBY‡ÏD ݘÍ<Û¾1Õ#¥»©F0Ì¢àˆqf`CvÀúVn =*+cæÆœîzEN×ýÀ®ÑâlÔÉ0p’|2GÛ|¯âaÁE«8ñÕÛN× =‚lì¦h;—Žk” ¤¾A#e"¸ñ½M •…œ)øO§ GéÊxd³)Ë:xõ¢RyöüA(N—Ûß/æöqU·eeRÙòIé·8 œå‡P›f†4Q×SÍ rÌŒ8³¯ðƒžŸ/ :!Th¨Õ(€ˆóú±%<Ùf3Å .±žŠÅ;ëêtpI‘ñxçØ 7„o(rT56}Ù舺G;éX,¿,ir•kÔ€x–P¹¤òâdÕªè)N›9‰Ñd(£¨œ#tLH9&¢§ÈËØp»:ŽÓr¹Ñ8­ÕJ™R6Û}õþýÅų— %“ÉÜ~ÚÎÅ¿IçriòÛ!}µ‰ìq£öÙÀLi¼UálÚ6êygÈ5¥çKÆTrãú^ïP¿˜f¦‚²F8d\7›Í7ëk[ñ­x©F!ø'Ò»›‚ tJ¿ZF©¬¿§·®Ó¾hÕKv²@¶ÑS±!' Ÿ|JÁÍÍË’c!>F«ãÃó>&:tzšxÐÿN½¥ó%ЙØ@jÜ)Ý Õy§­Î@74ßðWJ½¥‘!C£®¡¡R#/'†mÇWç/:üPÑÞ®!A³ùN>ü€KŸ<£õ®0òµB‹NÎúÚf(²G’Ê\µ!R£Kº!sãó'Ö‡ég †#“Ë•«DG9›N톊ÍÍfå…±&âOŸˆ#¾EÖA|ÚÝKe³å·ãnƒrƒ– 6QèF2/]þ£2QNòUŠŽno@ÉÕÇh´è¦óxx:òzïGÉÔóòf²Ä>è¸ÿiŽ`ÀrÊq¥ø.*uCŸ)F+QÁ~­ûÛu67˜ ÉqôôÂ7†ôâ§¶×öÇ+ë,K‡§ÿ%›=k¥”¯]õ¾ï 7#±çF:wŠhtûÒDÇ27¦*6(9>Ê‚NáÄ8ÅÑ‘Ný& ™‰Ê5²ã‰G…ØœOEfñ_°ëî[î”r¹ü•Q ·Ž+¥V8NÚb¥(Û+EYZ4Èið1kó £ˆ˜Ù1«ð˜ñRyù"¤t¢ìT};soUöŽæ«G…¦àÀ+ rƒB©»hKæÆ¥î¡ŽÖ¬nÔ}ÝÈ‹ØÈº1çq<üª%– ¿ª”ÏÞ Þdž(uÿ ~'€«åë%¦¦T¢àQGæ´;õG›áXj9=u]·*7 †î(7Ä~%2x¾ù¹Ñ¥ä G€ª›£)Ù°š•ʇ\g€ëD;y|@4£_PyUûÝF‰Sv­¡4QÔ ½eã ìàüRº!/üßp‚àý&<è_¿ßK‘÷ªnÄÇ>嫼™èþá :ø*Ÿ`(Å ÆëäܱAÁÑÑgÊUKk9R´Øs¾!OxM7æ:…ØàÛKï†þÌ)RãÏ0ºßã±/í—/_âa‡ôL/EtˆpRãö]9Þþãá‘‘¡ÔÀÇ ×¸%8Æ·ÌF[`ñ鳎‡é·ÌFÁÁ½B`t‰‘ Œc/l¡Qš××ÿúÒx h§ v°Tž…0‡²™··ýF—Ð(o=ÁF½†9ŸÉ ‘72==¥„Ÿ•œ!«óC+éÿ#?´i;ŠÊÝr?ñ»e"fŒ²©š¼~£xdÁk ÛþLÑ&ì·À¢ÝR;åRƆžB7J*4ü> 2T¥,Ù)€ÎX<i_®­Ñ÷t«k|kâëíÈî>Nå,R£|ŽO¥2ãñ·Zn<<TãvüóÏcé¢ò`í18ë»UÔB•›¥Z=??wÓé½ýè†srâ›Í'kñƒãžGìÁǸðRp¸¯3nÏðžrcÂÑ£s‡Lô`=‰Èèøºá;'È@ ÝsdH2È?ØA‚ìÐd4‹†lo6@<½_øÃær™ú#f¢æŠ'ѰL%OâYx!‰_.£MŸ)½9å•ÒÒmcÅL¥ù™Rð;e!7ˆ‹vËX‡C¦1 ϱ.úéX8 %*•fó»æÙ‰e%_;NÂ)‹g•ĆuVùæM図_…£±Xì‹èîn”44ëb¢PlpÀ8Æ¢VS¤ tã³È üÿdµ+Kµ|~^†ŽR«"~Ýouªû8OŠ îY8ö¢1ŒòFlä¾2~Ý#+Ãßol=¶gTt‘ÿïº83% Å~-ß/ŸìËÇíO³ëv‡çwŒ_)27î†A§ –èF°è hˆJ¡ëå²Ü(ÕDlÔy\ ³±1ï¢ꥫ¶±†O®àÒIÜÝ„B¦iU˜Œ“„åœ%,ó(aY8•‹Žc…L°Q©ßTL…#±h8‰.|¶çUÄè<`ûd¬:e Ûø„Ôx¹ñwZ3 êVÒsW™Ô^,|â9GgMã1¿l°, IŒŽhtíõW‘ålÖX§ÜàJÙŠI¼{; lè›E^ô¦‹FWÅÈò‚©üðoDÜyzÁxó顸úq¯ÀŠE‹ FC²!+oInø•¢VÊÕÌJYÈZI¯ž-7’ –rÌ›4>Gýý6‚i&¬7Îë¨RįO)Ò7‚Üh·4<´ÜlÈ¢MXäÅ«%¤â}éÀqÕ2¶97rÈn#‡ hF¥6š'²,°0ÖHtPp˜&ýo8bZ‘ØÞ~ 2š{´A±:ðïßþN‘l<;þ ?骙‚ä(Ÿf²™ýhp8gožI0Aœ×j5JÈ(—J(‰fÄÆ{$M.½ýèO¼+5ì°!s£C§Xg9¾~¨j¹~*ðXäc´QP+|Â;oÊ:´(™ø¢êMd£ŒÝ&ä†Ô ö@7fWJ]à¡5J h”ôbfö+£1Bý]ë‚;…‚ãuS !€Ê0éÄ%-&È2è@S¬8dÃ17,DÂ#ašá ðY-ÁÑ K&*rã/rÁα!¶ Ïš>/ØÓSØl6“ÙC«„¬“Šsdl½kÕH¢jt+ŠQ±‘ªžcÄVÝÜëlzÛ¨±n€ üICµ åïJ>Tv ü£7¬Ô·Ó|Œ†Š…†'(QT gñð‚þ&¢Ä”¾“Ñ3ù&:k=ß686>Rlø;åR÷ M7tuŽWÄD!€#>—<ØøH‘“p8d9ðl•Ôé©ËµBC¥ËlŒüÛ̆}Š ±NðÓý¡áæNF1°ù/ãeðÚÈ}Gñ!FX’e–-5]yå{»šJ Æ ¢Œ@Æko› ¨,¬!ìm±´{ÙCEŠ.9$‡ÝDƒr(_tS´` µcL%$÷þ}ïûýÍÌoÆRš[ÒbK+Y}Þ{xP˜£áäú¯úýWÎ+¦Šºƒ÷½ŸJÿ¢zÒ;ÿªwúôéÙð)`£Ì—è ù;’Ü\.1}H°è G˜2ÓØºMbš©À¡&áõÕ¥UQí~j­–(i¾Ñ_Em E¼¡Õ9ôÆ8QEu§|,pÈPé¿%ô† ” Ö–µ_E·ú†²‘[É98ßÂÉÎ[ΪÃ/ò“Õ\înNB®pWüî=H¤‘Ew­`¾d¶vkH•v[Å1áïw»¯åÛ÷;;/ÑK²ÒOÖ3Åm²¿}¢kåÚì”ï ß>nBoô"I 6Q)Mä ı6š-í7VØøv°ÁZÚK;*;ë©T±Î2{ú´Ù¬×~é¸1Rö «â óç›|&=.ø¹ûYú˜ýco¨ÓùÒùò¯˜7.͹¸{DX|Í[%ÃZ)L”ÙÔŠ])öL9ëÎL¤p$E´!ʰF¬)¢V¢$3%×6úñÏ6ùr‘5øäÏÝ~આd¸îWË÷ÈE¿ÿØxôȹ÷{h[¥D{dvkµGM”x\ký>Š•¨oh•isÚ~ñâ„Þ8>>8®‹ET™‡¿z{Åó[ئFÿ9àðZ‡‡|w²ëX±È­ÏO›íz­¶ëýW~k¯@rÜð£¥ÁbJÜ`¤q½ŒiP;‚b.-2ØSñ–-I—¹.Ù-WZTµ¦./š&r­?¹ÐÅcØàÿ8µ&,¤AÚv`{ãÌx£Û½5SºV¨àCæÛÎX)wPÿñ X,óx_ßüc ±˜ÇuË@ãAÙ}ìºþÑÏÒ¥9ðº¾ûÈÙyuëvÿa¦ÈBÛfáxÁHBçlÿ 2åû«0SBu ¹YÐ+ÛõvKeƒK%›ºãø˜)‚F‡±BuðEäöKéôÖ9‹ÊÓz½N6ÎúÏ}cÆÐãލwP £åõcj%œ0ÑzQ:Œê† ÿ}qamÛ «&ý±¨žŠ6Œv¢**Ú˜FÞØ‘Â*Õ`ÂÆ,t¡ÞµÑòt¥úÞ¡%ޏ7îy,„ƒãëfN6¼?úÞÑ"“¸rp¾¤ð͒αuh ñú%¤<®é›p¥¯&¡7i''ôS¥¶Ṳ0ƒ~íx¨ÒB[ІïÈF ¾Z;F©9A­W·笋Ü”W(}ã3õ®åiöŠ\ŽGXhtPÆ‘ü¾»¹Y.àò¾´Ô#Ÿ?ý­ë܃1J Ry˜Íìb¨`d«7>¿âP1;å‡0T¢LQoôÂ¥‚©rÜ<>ÀQß­®¥KÏží8åçO„ "¾ŒØl¥²žÚ{BµÚöGØÈ¯ª7ä'ÎA0kIѯÁ2@¢h!úýæK;YøÅËí„1íäJÀG¢u˜‘B½Dmc¦Ö0Þ 5dw…M‡*æ+¨a¤t£®aê2Ú÷}ÏKh#Ñ7îzZ8oŽÉ€#…Q$Ý“0—/”™, ?Cäàf™?u~“mÆzaXñŽ—©H̾‰rsyý0ú¸´Î…€ˆ‚&*Úz2Rì+G Œ8ýÄJ ˆhã¶7ʉLyìy† &ìåUTVÊ¡ë¶0^ ersr¹`Ò 6ßwÞþ˧­dQG³LtÑ”I¼¿§Â†h©ì”Œ:n‚¾qªlô 'Í™±Ø*œ*[Åt Þ@Ýi=÷™*ž»G8”‡øSé?œ÷†Íz½ZÝÈ9@Ã+¬FÞˆè°âe$ߣÜ0î°›Ëò%<&S ðœÌåbI¶ÄøøIXöÖ‚5Ƌճu£„¡$JØD5¬«Æˆ¬¡uãvß`á`¨ðã1DóÔ y!ƒâåÍå&Ȉå‹zCàÀµ4|%YÔ ãHrÐ2}31µC¯õJsEÚ©¾›·ê‡Í…±‡H – ‰òñ¢¶ažx0ÔÆ ?°#¥kækT7|Šã}+SZzþ¿¾‘{äý®Ó 2Ï3‹·_mÁJ_pÆd«àã[(ÜÅ¥—:÷–¸%IìoTë,ÃäúÚê¢rüWЈú†.ØžzCA9=9nÖ0<ªÕ­L* o `É€Ã-šW6¥Lj ëæ´Š »–s…Ú7àa>u#õÇHý1"/c.ÛqHR"SûÐõÂϵÖ¼‹fÂXíã"a‘Ëø\Ù™bØê,4F‘5¢º‘ˆ“*(hTF8R¢á{¾(åd¦@â3ŠcÎ*ÊÇDšäs«ù Á—ܳ Ÿ[æIÞ „–ç¼ý²‘ÝO1R² dMÙ@¦0TÈ#åú;‹x¦€‰ÞP¸À7n@8tÙØØ][9B¡`¬æ7‰ª²ñld2KõÚönÑqº-¯lØ/óµðˆj‡"þPÅÄÜ^/¦vX-„]•}CB°d–!qL.ƒÆjyƒzcÄ¥bÏ”Àgñ• X);Sd§x^RnÂ.ã[G,½quºÑ'+Èm`±ºŠ4Q¼ÚdÊxeé<ððÎÎ{ïî7ˆF¥”Í®o°Œ7 ßnä ZÇp(Þ¸‰±a¼1$C‰ ™+ÈJSáTÝØÎ¤Ò÷\ŽÏ@Ñ0 gØÈBX¸[uc{ÃY!Ó«&SÎÎ>Jà1‰Ý™†:²L8^̸/çƒpDDKWœ¡î`A±ˆ=ÿ—‰þöÿ/ŸÐ6²;Ž1’5‘˜°ò H±]#e«©%˯£ɨ[Õ+Ö‚l(N!¨VÕC/¹8˜1d¡¹D™CiŠ/ò¥‹szPì!”eCN!‡í²MšÃ²‡–öÒïï½ùóf§OGó$ô¾óý~¾œ6èc(nx¿edÙ£PG±|U¾1ú+”Á csÓç Ã,ÑÙÉ”%9ÉõgϦÔ`MS“¥vË _d‹Ið¡É†ï@¨,kº”Ûêo÷æq·O7Êu«° D©ª@6«°o¼Lñ|㘤áöW(d·»Ûˆî¶º”(åååT<¾ e…x§Ä…¡«®Ãí+sñKŸBõr9Ÿ’ä¶¡Kž6>§S aüü….0qoCHöÂÅñª.®:fü„áQj(O.àp¸$ÊLhâ ÂI7˜8î 5%âËn¾£¦8Œh¦At¼ mL,J”’"KôÿÇ x¹FQÏ>Å`áD`H…^¿mñ§+½•E,T*_þÈwSJ“çÔU„LyCwßÁ87SŽ<ÎØ¥[·ÙlÕqWÛ€³©$´¡â˜eÍ`Ž¡éWKšÊ´ñå'øÊ¹Dí`ÿÓZ¹˜OJr€`Qn–}×¾{÷ÝéÂë ýÏ“1ÝøâŒ}ß°]©ö!j„Tñˆú8ˆ ¼¸Lù³‹ÇÓ¨:žÚà¾áKã¾þ­ô€Kã;¯§|í¸™‚‰.cà}{ÝV½YkâVû¨\ÞÀ‚Ç“¤ E†„Yh*6™¬_ü}{ñÚÜ\yÿפ¥$eàãFìg–u÷w7nn߬üܼ~ݼNMì¢ñàèfïˆfbÞõ_ ™f8{8ˆW±É¤ä<ˆZ‡¯“Çta+Éë ÖuÊ©ÁBÏü|‰²iDO=i0]Í®A¶1´aààöv´§,v7v\i0Ú yl†lã\¦ 1ŒÍÎ2Xœc[T_¢Þ ¸J+½[3×J¼,dWJRáˇëÝØîßï÷{‹ñdj©\oíîãzJB¶ñüøÆ›o¹*Xª@^‡eŒÑŵIÛª·IõË”r6$ÃPeY’é(Ìžñƒ›õb½Š±ººZI«óÊ’Ʋkãíêº7VrétÚ¾Ó>Ž>© 3+…´¢†§¬¿@#G­-ú6rŠ¢^õ×êh«ÚØòvô´¦Íü\!Ì<ßÀ#©#Ä!<åÊ®O=Û˜žyA%â†ã‘èØæ±ùÞ–Òñc ´ž(>nP˜Ñž"_¹‚)^T ZÇ’+(ÞŒ7¨òUØÒÖÁbŸ*ƒ.þÚxØëö{½•x2¹´T¬mt÷($ŽOOQ`a¯áNE}ß ‰¤  „Q¢¨¡¾E1ŠEÒFNúQ¡ªˆŠ…܌ޫ¿úç-,g·Š5/H¥öšc‚®ËÍGå'i”®!ñGXщ˜Š™ªÉh„ÆÉ¶0§ZQTU±=môÄ7]QÙJò‚Ë2åš ÷À6ñCH‘|"…»g^¡¥86ƒh7ãEt WAí¸´Ñ6;aÞ(E{ŠŒpà0Нújm¥«ˆ_r g¬ “ÐYU0©ÓBkØf¾qÿþÃÃýþ!\#‘EO¡¢²ËŠ´ÁBååË‹;,!Æuæ]d ”Q.¢£,‹Å¥l"1—ƒofh”,Z Ú_üø¶áîʼmèì×ÉÒ‡\1‘%ÏA?¦Edo{õåèü46U…:†ÔeÜg­b—:<™ŒÙb…Þ¿ C~3gº0y8Ü;è2åKþþðÝÄó™ÛSÆcæŽ-´”'Q/Q\ÛÄá“è{}ƒ…B4Sd]7ÖÌΈÉq:dš›)tèšZbiO¦A Ĉ”ÀT*n÷W®!÷ùd*›§[kROA¨0i R^¿þ‹¯¯ÿê)]c·ÙââhÖI0 ÔŽ|1Ÿ]Î&.ÍÅ$D€߯¦þÄÂ/x{Ë[L=­k ˜G -U×Ïiƒ6«9Ø¡a1uëIá þ“F5w`Ö8÷âÚ0yqþTß[ÈA7¼¾„ÕÁ9:0ßà6r¡|å“èÔK'?RÜ–ø†ˆ·oó†b ¶±#X7žo®<¢=Ú(y0 5;£¶A}@&Y¸g¨ŒQ€@@F¤·D8þÞÆ2‰d"‘L%//a9³ù%h£Î´±wpL™ÂB囨o<{öŒkfoŸ„Ø€8ZHò ÔŽ|6›M&ãs‹Š´iê€|ýUY8ô?~ÿÊ[—Š2¯f2’aæIYš·]Õ!ŽÅÊ=›î{‘ ‚> £yÕà¡bßñ÷Ñ}AUuƒˆs¼ |¾îÕW3O¤ gÆ^$q…¼Ç@¦QÜŠŽÇ¶XaÉ4B‘Âå"߈ØFG fmH8!Mj±ÐŽgbaB–c1_>z…ÎXÍÜi·ƒ·¯Ñès\¥L¾˜*2n¤@¢ll´äD¡O8qˆ¼ñoÑ7vw E™mt›­æQFqy¹a6ñÅEIaŒC´aè$ŽWÈãÿo4èRÁ«(’¹¦KÒjc]¸Ð]% 0˜0p¾õBÓø ÿÉ:}¢Éö"|F£B¡bQ‡99éó—Ü] ØãiƒÛÇ™h \ Ó)îgŒC.Ù¨bìÖ;Ç(ƈ„Æ—ÆN8De°KÀá IÓ®¤!i¸aê%:w†ÊLáì»q4“‘rGÇS4Ö±¦õ¥r­VG¤Ôº{]´Ø$Ê“SÂ'ÏEßàÚp}ƒhc„ÑB¢lÔëu”Ñüòòržkcn.^F”®6dèX“};ùï«ß4ø¨¤ÓĨmCUø+ëü®ºÎŸñ±UAôh‹¼Ø:jc}}«ºÕh³«”BŽ“žø ° €Ãmœœ4B£0??/jÃᨉW&Ì7Î"ñ"zýlæáƘáÆxÂAÔ P4p‘Ϣà T@ ¼¤x Vô¶*ïò Eѱ«Ó±¬ Ø`B‰|Ã7 EÆ–\"eŒ˜L'l@ÇçÑ£XfƒèóÓz ËZk6›xÒ‹¢©pÞxò’båbßèvY‡m5 C¡ DJq’kÄ/Í-HF‚%Å¡¸ DGöãÛ··¾èØ ^ˤô{¬­4B35Pª}tG˜ZÑUM±8‹Šã38ŠfŒi¥ìÐŽ†Ï‘1=w9;s¹ƒÿŒ»GÔ>8n$Jú°YM™®aÝsìÈ@ÔŠ6Ø!S6Û‘–bð–ÞˆøF Aß@‹…6fö°C™¬Q9‘ül×J´{4“.¦“)§)gú¿'¦ nbM»µr½K eÆ…¡è)³ Hãç´ÞqgìÖ¸4¨¾"™–³©l*Ïn—S—óÉú³5h·ÛP­ÛðŒÃøþžoÌ“o覞·¹ ¸Õö>ó<pêÐ_Úó'V Šªs±ôE@í %k£QH#: qtÇB:àÿ/Ï6¦®8¢a¯Ÿù¸1a(j‡xÃ7˜8B¡Òq}ÃÏ”v´¥âˆúNÅhÃêtàÚHn—E©Ê%T\¸ŠÍ܂˂?L§_|Ë E &ì‚)cooâ`ÿ”áÆKRÇÿè.ƒÐ6²3Ž˜t,i‚CmŒ•f`s¨)c³ñfµÛ•M¥ €q ÁˆŽR™%]¤ÃŰ>ÉÓ‹ILÁ¾,ê9U©À‡=YÄôbšž¼é¡ ć%¹ôÿ}ï{3ÛûF–<3oÞ̼ï÷þßÿA”S†o†ÿì÷X7î D!0þ@‚ÃÊgŸ¢Ö¹þ;(ÈM²’£óì1Þ ùÐ^{ÿ¯ÿ”K3¼9(¤ìägFŽäÓðÎU=c3%:HÇmr’ï/K?$\{Õ§Ò…}HsFQåJ–*Ý}¹º ôd§¡Žês ažÍÆY| >¼ˆéÆí†²´ëj€m%1Ý`ßÄelÌŠµ8·«·#¯áÎIb™‹ Ç„Ú&²§ØHˆ•\lXž|†Êä’‡¸ý§’®nû{ThííõFF x $$42u²¡Š å7þ•)Ã~¯ïÓÝo p6žeii Vf*ܦþhØ(Ÿ:(<ýU¼üƒ9W^ ÷ó߆lX–iż`a*úá‚Ê«h£'Ì‚B4Ò£¶M`–•)•äFE­BºÁGÊAž GÌvžöq@úçlò¢\AÄ#ÁùΧÉU/¼½ ÏóçZâµµ-1¦J>ðKÿ??Ï×ýêå1Êq!LE›ßòÑ£*)Šv¢~L5VŠ·«ÓÓî5²q݈TCì†{‹ç-6UR+,L›zJ\èå/aDVÙc€{…F¯»ßííSÛÛÛß3‹_ ² \¸.1uv¯¸F9|¥ë”ãXNé)ݸèŒI*o&oRy³Y¯HÃxÈ87Œ»=šP²¾ì½ ü ÿ{ûþC«¤š“ 6\GöalsB±FS·ìE=³.ɆnWàNQ [›×áj0¯OÍ"×XdCfdP}‰i‘áÖùh)ï”ÕyÑ€·fcÏäg1Q¸ë ýØx"=æ\iÙÅ@+‡ü<Ò(é8Ÿ®¢NQƒÃa+–³Y7»ÒÌS¯/Ð)•²çNd”åy>›Ïs-Ç¡ž(¥(·ƒ’ðH*MÍFoV*PR©[ܯ\*Ht¼ÜhÒ6©|Y_(j(›í‡¹¦qªÃ’½Å’òôÔÔbfÖg7ÈóϦ®„ËÁSwAr-j2Vò'ÆpPh˜¶ÒŒ¸l°rœ¡›Q,²à1öåPc$ZB‘QÖ§?bc‘¸XªÓw]…˜Øx}0¨½;úÁè‚ R |©BE±±» g"8p:Òû@¤rÃð‡¤dÎ(­¡5ºr싼ߢØxXýÄFv:G3DÛ˜•´²b̸­Æ5lxÒqÞBœ ™6ƒAßNѧPñ6Tg/㨋òI=Q{屜Œ–1a]àHô ô?¸ÚLX¶VŽ…²WŠmÜ`‘`W:¬%¯t²GiœèñY8êg¯Ñ™ðVøË¥ü¢èFÞ“‘;àR;^¤ÄÜÆlœ·„U÷2<;—¯¶û€’ ;P­?îw÷9™  úƒÑš‰ …WE’-~ŽCe5ðstD9åXRÊ1³1ì› +\/R±+Žƒ¥ÃéSCúê>ë*6v\úܹß6~þKDäc÷›å’ÌCڲͯýWtµØgYϘƒúƤ…ÿí@M6Ö& D5hÊäg2§4г·š2FÚ‘@çSÌN°ÝˆET0£ÐÑCe(hê‹?ã°7Y.]ž9æ.Ö 4ŽÄ 8ˆ uh¶,øEw¼’J¥,¶+ úX)¼…W%:N)ªJÉžfÃ Ý A5 _f#£˜jé=,[»š QþÁÁ 0 œÂX¨…_¡´ ÂñвŠÂãèµò ÖáuƒÐ"BñQ«_2>—E*±tv¨ˆºtñ¹Oþ.ÓOºÔàduxi¼ÿ­‡!QÓaõ2(E®®1ôi“À´ý†—äè»vS†ÍÙeõŸC‹/hª½Ó‘U K´·%Õ¿´/{Ñ¢… ÙV•ФsJ›uCN'Q<¢ˆ}NÂöl·¥n—³õ­Ì(t#è¨.-gÔ-¢ÞÜÒ°R¶°l¨qàudOÃЃ¹T­ó¤%Q÷ ”¦¡Gh9H*)?XoÈ‹3±¨nCžq, õ‡pÈ=¼YÔlÉéb®¡^‰ä‹ž>V£H 6RgèÆ„Ks‡ç¼ Õ 4àA!Ê‚ööA‡R ¬á}Ê%¤ô=4›´ô.@Qgì‚Í].QŽŽ”…nK>9æ:Etã~¥^‰‰Ê)àâäŸKFå`H~co¯§”c‡®»1usòúo..ÓJ&§Ý–¼þ¼×W…\M’ éFM}¯ÐDªÀ–“”|¥”ñ%­øš-9÷—r¥wËËØã÷k˜ªŒšûVÚÊ©ƒ`DzRëë¶9Ç€ŠNèD«ÑÈ­ÜöÉŠéÞrìÑä·”c6äÁ[cP–ì Ø#vLNBržV½mB8-=È8LNUxWC-bÞ[–ÝrÎÙ½W,½ð-0úML6ˆŒì/èrJ•ØH%€|ƳžFN04ôƒtƒ¡ŒÅ.ó2(¡¼6^+Ý8VnTàkØŠÊ"ÒÅ%Çâýû ãó>ÌØ 8Ùðài؉Nݼ99yýú‚zÿÕ°É{Ó2]­yò ÿç» BÛVÒ8nÒC.ƒ/’Bز%.–âÂKüö=0K](MS•w !Ïõ’^ ƒÁëƒr)^¼döÒ[ƒ! {²¨éa0MX¶9ô@¯ûÿ¾oFq^_;²eY#iF3¿ùÿOë†ç‰p0¼f¶XX­ºpT©É0´&ëFÀƒîXÛÜ4Á¶gèd°ñ(ïÝ «¸!] ݆3-x”V4:{mšâ}ˆHg¯©¤Ðö%£•S+.ðirkĵÞe‹ÕÔý…] «³W5°à» ]×í"ð@þ‹é X5ÈpW*z°¾ËÚ ðšlLßÝø’öt™ÙPjüFÁã…Ø§¡ÉÀÚE0I ¤Oh°nHÑTüƒ$ã¼6 @òQû«<%Õ ‡|…õU.s™L!ADé(MéöØòtù¶¹………»wïþq-Z#6–1bêçâÆFÄïOaYm2¾Þ0<Þz䂼etc—%ÃXUTQu‰>¿Æs`PÕ²Œ/†_Ý—GÀêÌðµ° Ù¼m#µ•Á£Ê-GÙ…Ÿw÷Â0!!ÐŒN,BîÌë¼¥T›=á¤S—)Þ;«“ÞvÛÀ¼FoºÝÐ˨MqQ5Ó®“Wöí`c›Ÿã‚ë¹"´Q»va$¦LÃoܰM×{éBŠ2Óž¿+hPêÚí¦y ¨Ä£Á¥?@›ÆÑ ì‘¢JDa6`8žJL1Q…à6€ç)ìf¡""«çnd”Ï €Gï(é%¢JR–Ö˜Žµ àI¬ÀÄåÜùHF'¸5°nlÐ<¶P(JlÓÛ_膰Áu¸b*k‘nŒ I|‰1âY‡~¶ƒô$>¬a(]’žU—g§€ßŠß ÛBGè;W°~Ýý}MÄUÙÐ7—Hºr®ÝÜЯêP$¾":³¬(«ÕeC·;å8`ƒÚ@,eY?¸\ªòÜÇy–÷z–"ºá|é72öï\d&e{\©²Š×`6z×lÆ1ó‘´ N39ŒÃC&?‡T¸¾'ÝxÁx˜˜ryy©•3Í!Aù«NW¸ÌÍM ÊeÿIPCh¯'nãÞúÂÒÒÂÒݵúZD¯KK!ï]ªŠò P<Ï á‰ÿÀV5WR²[HÓŽ)8ª™ê[YËq}}uTÊæ&uÅMgÞ<Á"ÝГ‰I^@ÏKÚ’–ŠxO³ÜBäscÖ“«"äÁmÌ»«Ñh··M—Jº~øŒ²Gz¿³cÚ»iå²+ú‚ûüñ¸S,Þ7`“p\³¢Ó…/u#c;åMïeYÉ… ÊÞtMÚšÍè1ÉñøÀo0 Àâ- ©d…ðøøl\ ¦<ÍtÏ/Ï>‰nHËlLüºärÜ?Çít2Á G’tÂ¤×£Ú ˽{«ÀCÈ å‡ïºfpEÒD”‘°Â^%eã&t#]w&¦ì^CÇ *ß)+«õ bk ªðu%é„ E8~U–áUTa3Œã°¡I Èouâ˜àØl¤4Ò—@¸ð4q\7€"œ9ЀÏÛJÛ Çt»„ј ¾^¦ å¯E”¯Ç” üFyóeÑÉ`˜@«”#ñ¤â@Gè€c ¯Êq !8Ö )”¥°ã¸@hùðùiæoÌg±¤ÿ=ë|ÙqÆ×ï$ÉÉF÷ˆáè'TŒ!É]_]Z½· cJUò ¢ɘaNóEÏÓJ±ÅX<ÛÒÇø1³‘Æž¤0Wtè‘‚œCI@-2cî¨e™“ªª*5#ÃoÀ^€F ýˆ‚«OP½EÖÔ㆞Ö@Q XTL~ U‰Ù{è›)\xZ6âö†îÄ Úp¦æ 9 鉞—_Q–ª¢ôk¶`QÑð\“ IS~‹ 5]vÁ†R.dƒ½Ë©FÒg§‘¤hô5ˆ'fƒÈ¡¨Ä[}üñg'Ð BãâãÅ«LWôBì¨.áHIX(ÞÿJºº$ƒãÄ”7äŽæž÷–V—–ꑼî2rÖ¼ë-멈nÚv~Ú»*¾W©að\äc„ÇV%¢ñÁÔÂÅs"#™.ª¥ê*…*ŸØàvJYË*q Zà†£¨dA7¤š×+éF¸W×ó™y¦'–ØÄ }ªŸ«| â#¦¸²Oˆ4ù¾ Ú€±U¾‰)q]ƒ‰'SSÕœC4Ñ^5’ת ŸUnS¿ˆ~¢a Ûöh–ò-Ý`6ü¢Í…È 0Ž(¤Áè ’¤ôŒj§ÃÓÁ©Êä&rY½YéÑ$Ž gò? ÉÊS>‰fˆnœ®PÄCñoö½ˆ'GZ9 ¦Ýè;QȬ®S2óãš¼wT±ò”¨-Ê€àíÉÍ{£¥EuŠûê÷Å?Ãs艋ªYέ­Q4j¦ö¾•§h^Ó­@7²“‘àXÑ×L¢¡J ——²øúáó0l^­Ó(héƒ4ʪè¹rÀ³­ˆY5ŽúÐnšÛFt—Ôuƒ›R׼͓û2vv 03ˆ_ËQ”B)LD)¬[]yQÖ €áü6ŽKl¨Pf‹;âE¿¦î˲ëï†ÌÆk2DG FÒOÆñ1¸´ðê?9âKÒ~8žŸº¼\ɼ.à7º¤BöÖ Q V´ôîøífoаەCj=I6)¢‚Æs­°­*QS$1óeÑ­žÿÜÔL’‹ñýF:æùz0ÊÆ2ÐÈÖÒzüó_„/ ‚ÇuZ°ŽÓ1ÿæ³ /æä…vp7Œ¯ØˆZ­nÍF˜Þ5bŠ¡ypOT¬pئù¬f¥¦²*÷‡EÎa‹åÅ¢ËL”E5fg‹³bF¿á7œr™ìÚ."Êkö¡¬G"EÿʆÃjÀln '''Óü#exr~öé'ÒϤb✊ä°$ Ç€2²¶¼ÃcR;Kö%q §¿ˆn,´¼VZR¢,2ËñŒràó¬ÎÁg n‹ºÑâÿì5kQÔŠÒÇ)+_hða‹Ø0ºñ"$>^2RIä̱ÂHx>˜¡´†ÈØ÷êÍf¥àŠ®rãô8¼Ã$¸@Hiw|ÎÂf+7¬ëþuˆ ǶIÜ·›9…܉Çáà1ª£±è–ËåÅï¿×|0øLÏ·ñU66ɦ¤,âDû=-)ÃÁ¾ƒ!i‡ðÀ\ éC¢Aßó“óó³s7ó vôâ3놑KÃIÇÿ8¼`Ãóx7¯z*qçôŒY†ô‡¿üEÃñàÁú«k2ÃÐÿS^>¡mdwÝÃ^]¤Äö’àñiK/Eè²F )ÀžT¢^J”¦fÀÈ陡².ãAeVDz‹ÇìÅä`ãœRƒ ¦d%|XX„Á~¿÷æS»Ð7£?óæÍ›7ó>ïûûþŠÐ alêwÖ_(a­Ç–£j6…(° ¬…Ãf²½ÛSOz" Ôéé>¯I\”ápcÜ)i«…<¦¾'H«,K Ç·YÙ 6hÓhÜæ7VšvllsLQE…þ“8qMÐPÊ1¡Mº¡Â‰þ™Š‘3DèÆ hœÏà7~ÖpplÑAåz™L'´T6• ‹Ãqhbœ_§´+åøÃ÷#¼Mlì/ªÍù\ ´‡›Uz)–m5±9hÂÕ›.–>M&Ú…›^ÂÁÊ\¶åô¸Cj¼Í«««ŽK‡,X¤˜ZúOSö½< ¥ís÷!Åù‚X—¾ß£6 ¦aTd§óB¾ôhD¨rI£¸jï•Ï*d8½«6×`O…Oçi°U/ˆ'4}® ûÊntˆ/FŸƒŠM!…GNm %…¢ÅcÄ(`„Q%2Zx$·µPåy3QJ6M¹‰/Eå¡eKJ`»*{%Ý8â4å(Í[É`¦NØmtnL?àOì6ˆZù˜äŸtcvu5›])ݸˆ3•À 4Pýd€ÐE®©¢ã e(s@åésÍÆ“'¼ñ ø A7r9(8ÏSèA’E¡Ò´,ÛõôÛû¦– Ûî)ªÐW å9VmÇ õ<†aNôÁ*xqÕÅ~Œ’ÓS/=Lîëø '>/º}=õµ,ól¼ðus—:€uÕx\Êbí”~¨ª¨‡¼9Эà,D©,)» tWF¼°d§— Á ¦’xPÐ#Ñôt—kZ8-n€âRš2ŸU8¤ÜÂÄw—B ÂÛ~’¤ ¦Šw*¤(g8! 6&d8N§l8¦éÆ_Š2 ã좚{9»šÿÝPÑä"ÎTÆ1 PÆÓÉÇôËb¡„ãt|Bñ$wç9Ðx® ¤h|? ¹ô] ÝÄ”\y÷eÓ0-7Ðèµp>Ãl´‚¤tÔî Q]w½l]z…,ª¯:k¸¸”…І¢ ZôyJÖõíBÏd×øFÍ$7(˜Û8ÔwqËù¼ñ@bæÕ=K7PgÁ7-zÓø3LIƒ’²Ý‹G %˜™zT·‰øZéñÉäP·ß•å/ŽT6ÄmlXö¶B²qxÈt°ne|Æ S¥ö“Sš@šb#Úg¨L…"ç)¤—³O³_^S­, ªŒÓ?¸è#䆂̈́*߀vIC6þ8Üz:dá#O9®<é”êFî÷a¶׎ â†0µ=u7ÃÿÑë Iç/+nÌF‰“‚L#,l$¹ ;%,Ø”(—0î;nÒ3Z—°èSºB¿Q­­%G¼QÂÌ2ƒjÔjtdìlÙigëÖ¾®Ôzi'@nÛò’>ªÅ9±ÐHû³"Aã›oÙ0Åm1ÅÙ%2ˆ ‚ƒÙH¸8Rª1a§qÍày›èIŒEcÂù,%´ð¢P³©…<…üÆ'ÎS”ÝPÂ1V8\Ó *S¶£cM…‡f<÷lø T Y7¶žÇ~t¿Z ™œÞZªù¹âÝ$w‘ýÛ[j4ld†ÝÀ]„ÓÊL•‘/éùEÒ é$“kn#yÊ'Kó˜Xç3 “æ@Ípv¥ôn> ð7–„‰éÝÒm0ðbÅ^®·²•™YÝ”5)ÕpˆÛbJÉ´l jw tãà@¡AÂqHvƒ¢ 휟œªï «†#SÆTáqöa»1eÝ 4årGëF È Eå(cd|Êò<ö­/Èh<¢¼Ú·’B¦lD´E.f1å G„êõGUPQVÝZ¶ìGG7ŒOEªY·ŒÅã{ņ ñue IÉœ ϧš…t[Ÿpž‹¶#5ª0Ò?¡ú¡ˆQpœv[Ê T”4º?‰|@Ž¢ä\Ò öê7Ò…IQ¦õHc½¾´®™€\Ø+e¼(á˺Qš¯7aDcÙ`·q Ç;Röžì70u'ìÈtÄQù˜pzÆùÅ”³é:ò”ŸÎg—W;äEϦÉvSsª2V_¸ß¾MB`ÜÙÙ±o DÅ–²Ž‘~ûS *¦ 44ɦ~hY›—ëÍzù ðXv‚”ˆ´)õW¤Ø³¢7_Ÿ¤<¤à¬tõ%\a˜Ì_W›Ãe”ófºKïï‰bžâtc#ÆçÚøZE1÷€f^’%ÉÅÊSNUêJd`7Êh€ (GD>$Y¨úsÝë¹÷³ËO—W³\Õ¾^,ÞTiªúAÎišzˆsÏŒãã½áñÖ±’½­¡Ž(œª$läEɰ̘ܯjA”)a,æAÝ„d£Þä;.---óÄ‡ÙÆÞb1o&dPTñã‰0àòœÕÕ¸ï@éFýˆÖ5ëIG gLv¹цnÈu¹îG׊[†Kp¶eZz×΋˜õeuÆAL‰‡Tn:|ムWiX]=d«e®ÇyO†©dcÞ¬°Û7³aÌ# ê¼A¢B1å@e°l7bÝÐ9%Ð JXŒã5ž,{äL…%¤ì7ÀÆÿS澺sg燷Ç{ÇŒc¢cïÕÑØÓÂñœéxºÝhŒ¢Ñhôù©[÷E¦Å^yët ÉÑ‘é5p«åßVX3:8# *m¿÷£F×o”ïVì OdLˆ?J:X¼kZÎ_bl2º!D¾:Rt»5ã+S/7VÆÇxÜ–“úhlÆd°h|ž¦ÜSr%’ÆÎ`›tc°Ï9ìÑç¯G‰nLx#Ùà …ð€ãÐhhŘ(»Aß°gtãüüò|ö~')¯_¿ÖÿžaÛÉ~¨âíÿB9Fa&èC€ ¢P`ÙÚÓaE ǯs•£ƒ}Œx0NF7P„õÕjI§Õ²Z°ŸKJ›À솪ºâgÑÒuœ–ýße%{ðg­%+œ¿¬8«ˆ0´qÅŠ’ŒvL(]ŸÖù:Hh· ¨tC×´;]ßïvŠ”ü•”î_þ »ÝtÈme¬ÿa¼Œ]ÛHÓ0.ÖE±!M,ûد;†4Þ»¸JÛY¶Q!7S¤8©ñª:Cð5Æ‹Š5l“ÎŽ{Nµ2oÙlqà)†I¹çyß÷›Ù’²ßŒÆ’âÈÒè7¿÷yÚÂÆ»·ï˜x¨ªä›ç{16ð «øˆ\Û/÷½—¾ïùÏ<¯â•ÔÆ“¨Ë¢¥ù3EØ8Á;:a¥7´£ô… nì¯*C-)ÜÆå„[Kn ê6¾Ã6Ž'ã$'“ñ]FlÈ"#]á¹ÁåÏ_ — ˧ö“iMvgÿûBªwÖ}Óíþûr^p«‘ê¢JmÈfæ¨jü`8}ùüùó 6‡@‹lSN|:fø¤b4› ·šáÌzåî´ƒd ò±®vnµ: ×QŠF§ÝjÿôNW !ªî5÷ð&Âàl:¤~|t0áËýNFÅ÷f–åõõo´ÅÎõóFçhvß-)ûDšB)‰WR3U··Ÿn]ØPD¦JˆžÂ‘"s%Ž<’ ÇDa0pX¸ƒaˆ9â$NƉP’ˆ7"I‘ríL2§HÏ¥Á¦hÀ,*ÅBç#´ñ¾÷¦{o³l<džD²hÕOÍÁ#žSoä¶/áe ¹Í‚É‚gEªŒvšNÓÒžA¿§€˜6tuæ¥SŒ¤Vç½RñÉû«ymTù”U÷¡=D &mlHµ¸ahÌÍÅuœ­¤ÑN·›æ #eãJÝA0(,Ì—0†½NÿjŠÅâ_×¾[+¯ý†J:¢DŠ ˜â QªQ$ŒŠ‘ƒã\½q©Ôú 1áTY+øÃ>㼸6ÖWòÞx†øµ½ñFÕÑQ•tšóF]~ò°ŒÌ ¹;¡‰£I:šÍo„:EB‹¦G«e äïtŒåd^yá/96üUæ 7\§²$êçèxè ¶ÙuWSJËò^®6à³Þ™UX!â£FáãFÒÆN–›[’1¼íwƒïŠ_}Å—y¼¶‹&ú3„¦ ˜;;l$öc‚Dš0ŽF"£d xðÿ^ƒŒkKºS6UNÏ_s¦ì ÿÅ{üÐï¡§t‘£¯4ë2àx¶]^dËŠÝ[ãF"´ëV_~a¼4ÁœMt"ÝVìª?”ˆƒ0å"ˆ ¦m«/3•(äWÈ°êØø{ yÃÅl¤TåäЀ7¶*÷ãÆúý™2ß«¾·6$o¼ï™6RqH ÃT7*½Ð“—{´¶v|qq=2àÛNøÕ'" à@ïj$Ø=†$޲T*‰t0Êà8×¼qªSå5Ë÷k…•ó†xãè$¼Ç¼QF:/ãR©Tá¡Þ0HßyƒU¯¿?›>fðqðÐÜãŒIrY¤åðhcW*Ò$’ƒ“…8¤ppÚ¸¼Q³¼a!ÙiãAeÞ˜ÑÃj éP2VyceµîIŒ>a‰Õžr•eÑ¡l7WŸ†BÅW"k»Çú…Êpˆ##š$0âx "&“)îL $ãŽ##vê0Hm‘›4‹¤æ ˤœ.œ*û0‡ÁÉP »¡ï•ò©„k…`”±yˆé ã‡SNfÍðð34LKâÇC8”fÐÔÞb_]ã©MÚ¡ë´²uÒyƒ±¢µ¶%sDõ¡àübl’7ÂFÚŸ$n¨5øRmðäÒÆ¦î›Ö_׿á>?o<*U*Ð8:±ž8rlXS¹²†B6N<ÑÅñ…ÅM•‘®„âˆî09ÈB<ž|žN&¨'c £‰¶$R±‹F(§ y%…ãRnyuœr¬pªB賓ƒNX¿Ï†_.WàlŒé¸ ùmÜêr«gúø÷½/©)q´ÁÞ²¿p¼Ì„VFí–ÛVêa„`´„ Ò ÿõVàxû|ËYÃyï³® ÅÕ9÷½± ixù;¿Ã®”¼-ü…õÆ™Œ”¾DÌŸŒ “«àþÏîÅ…»Ìåû´ëŸ+Žï¢x:Æ’˜1N' #™ …Ž'8&.~°¯¸ÿç¨ ]R8 ÒËSZãµ6•ÃÃýýµBµ =eŽ7<T”ÕƒãÖ_¬™ÎØyÍ䣮s¦þ'Û­´—@nx¨ÞÀµ­úhÌ2Ó`:Æ…z£æøoÈQCˆ -<4¬Âõ:[7§-^³qƒ%Å˲Æ6 ë•ÊÂÆ™yC[JNŸXS„uãâZRAú}ÚXeŒâgH€*0Z¦Ÿ?Oøˆú˜™i,销D)P‘ÄÐt]¬Èš5ô(5dð°¿8JðF®õ½ÇùOô”×HY&ŠÌ[àá“­…tÌŠCÎ.)¡5êi ‘ˆW¯/Ç£!p4¥æJui*º92r奕â8´Þ*àÂ!#LÊ”¼öƒ¸á罡-%CJ ÀpÚ(-a㮲°®yCàšÒ¿:mÈBƒÅ2Š»m›Ü¯G–A-AÈŽä9L1C’ñdš|ÓDc4&Ÿc­.¹ØA]ăÈÍ×c­¦hî8—ÌA.^«7Ž7gh°!ØxrÏ`ƒ_6Ó/Ÿ?Á‡žÖºí5AÂæ¸Œ²„*£™ID¹h( ¢ÂAÎ_®Û m©·‚eŽ–B⦎XcÖ2Wc5n`¯Tä\¤ctlÎhcnÞ(¬{•  ƒ ›)™4HÅP:Êd<>¦î‚†& |±‰^û.Vâ{Ž)˜Qt:–cEïŒåŸ£è.Ö¹b…V÷k&[ù .m!8œžË<±©6^¬!vq%åâ,ÛeÂáãÆËƼWÑ’ðá[ÞHµá[}áÙ†;êVmñxá|iÎçCF‹šÒ;¥½´²½5HÇ´Á#±8°¡"´d¿,ršõ†bQM¬y£’¢¡i#õ’h‰h¬>šÏ†W§7ÀF—=¥( :²Ä,pû°ZX9Ö1° 1¹j_±áA3Ä,¯ŸÓñ”iC˜HÆwH¢±DbG43[FZWð7ÎJÆéå¹ÕªƒÎ ûœ)/^¼(‚.´ñ ’QÎfìVEÑÑ»%2Y?œ8j¾Sߊa-]zi.Œ‚FAš†CÒê=kd¤­òèXuÁP¼ÑvÊ4hPÆ—¡÷T 4pè'á'–,š[*i]ž7VÉFlt{ggzýœ88N®˜A‡a¡°+ùPt/yc€F1rý$ŽXdå0’¯=ž°– bL˜;a>fMÈ[Œô˜Öœ‘¾pZRŒ Cã4õ†Ê‹üí/…â?;81ÞÆÌ'zêmÿŸòòq#=øˆ9ìµÜ$Ù5±r—€C$ØBä`‹qa„rJ1„)¶ÚaHeEàn‹u3­®1ª——"*¬tîV¨;®Pº5U‘·H@Œo´Êû¼ïû¾iäóÈ«öÚÖÎožç÷p§ 7œ2J…¼õ ѡϲâ£fZ¥&/$>6FV½\ÄÁ±·*!6±~4Mnðƒ©"wxîýCÔLñDE­Ã噆kÄMåFÉÐqÀÁ±ý¢KW±Á¶?ÔÜ>¨M> UÜ;#÷‰”Š”ˆzF`ª§<Ä€¥JY¤H f-CüÁ!¯ ÓGS¡ãz4p(ÌF·'¥¢CåŒØxö(—Gn8Î$ŒF•s?7ÇùXçÈ®ùb ¤«È^öz±Àð×/6æ£ig‡õð½‡òOÉ ÈFjÁÆzdtŸÒM„E±à”Œ‰ªneã.é Éèkaƒ*e°FC•cÜÈ=ü±Ç×òdÊqÁµ2‘Ë=\S1]È×,X"$XJ Z´!à Q:ð­3ú^^³ ƒ‡ð1‘!;ÒøP8$7î+:^œüµòìÙ¡Qw IÚ•QO…ƒCîP'qtÈn‡€X»V' í£Îx|†¿!¿ô,Òù¼Ø ÄßJ‡‚Ñôõ!­çvl4<Ë6\Q×^°‡†æFž¸ÈSnlõ;NÑõyÄÒN°‹rvXh´ s’pÒ¦*|ý‡•zù#3ر·+Z*ô,äQ p4b§fÕ XT=Ì` &(,ž±ò™NéòFa<.Ù7N*•ãor‡ š)‡‰Ot¸¾L\£ˆ2îq'ù¸åÌ¥««ú9: ≪„4j»ùP!5½rž!k$¬yëë¼óh1Z?ü]¾¢ÞZ7èƒ2n*7¨RжmäóÛsC«Õn¿¿ ˜ É¡G;w÷Ç_ÆrÎûQY¨-„ÌÆTJ…HiÄ.£Û)bVPEƒ4 ¥„ðv056N Þ²×"‚Æ+Þ°g•ÊÓ§ß<ÌÑO¤šdcßI.úD´CºÅ)sŸh©`¾8^ÕÍ®—ÚÆÍS8bïЇ¬Ã·j%Fc#= –Vf$žši®¡YcftCœymeOs#EGa-£y†ã ¿±ÄFsƒvÊPmtø0÷ŽN Ç<ý tŸ–9p?ÐÜ)3 qK·hI#eµ4¢yi$í¡’§Ä¸Áó00Ù!¾;Zó!•Â;E…Žg•ãã£_æþ@¹‘ü`‡)6DH€ 2RJ1²R²rƒ.3Ú°\*4aõ0¾A.zH ….ZIx•PÐXÕ°˜âê×ÅB(,o©M" XÊ t ½^á%LÄ£W A݆¢ü·*×Z(,¥êÝË7¨ÊgÇÇ¿L;¶êÜM -GY§£áIšÐ[”.rƒžŠÌ~Ùèˆ×m].\º½ü2>ùŒñÓúa˜–¾8O›¨üã4UNc4¦\ãJ)Á7ƒg ÙF>¿Õ7rw‹Ž§lpnð4†Ƙ(¹G£^OUƒÑ" ˜G:»a ý2]rjPƒ,#Xh…ÊŠŽår! f×H„h¹R8¼cGj¡=íÀÉ3…¸¸|ñ‚;åäéñÑÑƒßæŠ^rÂf°a„0(sn˜/ ]ô‰[•î2륶 ˆI:/HFãWð.ùHÞ.ùAóƒ§îEBL›IP 窺Œ‡¨¨É ú\^9éñ†MèFÖ†…pxôzýºB÷Ê¿ÕEÙC{JÎöIÀ²aNp„Ç(œÉȸ¦b oÿG È<)6(né--3òPˈ'-¦ÊÂdÃF7I äFOjEÑxò!h¼÷îåö½¤n䋸 |÷mއþÐÊŽ£ºæ)Uµ/è—š¬["¢Æxàn—l6K¢]üó Y·¶~X‚Ú4l$ET+¥±ŽEó±• €atCdƒtã0Ã7¨Ÿ]øF«EhX¹Áµ2.äÞu{€Ãt »h\(8f8ÅPkùÝ`±Dƒp*À0¢%oÎ,–@•”$õX„f«ï × Ûè0^/96p~òxoïa.5SE§ô-]™é¡ŒÈ´UYãØ¨z¿ú"øIZ?¶ë†]*R&õÓø'¬lûFIlÃI¤F!Ÿw ÄFCØRÑØŽÛèz‡ÌW.q¢!«†¬\üYDlÐx%",Ÿ!)ÁBæq‹·}*‡ø E<‚ézÁN'Ü+½ÑDr£Ë3åM ÇÙsfã1åÆ}‚aÃ7¹Q’I&²[Žª`\$7\±wW½$ð¨ó_ºtó²ÐÏâaºå\^\h¿Ð͉=i7b£fl\*')¨´ -ØR©°Î,6\¹Ñé\ÑPé÷וB#åÝe7^)#Y¯qj˜ +•B7º¾G dÆ“•¦l¸#©N0aá£Ë(bƒ•Јke¦Q˜V Å3ºq)¹qöüùÉÉ tcïëߥ?Ï~±X**»éàËÊu47H4øgéJn˜eû³øD—“cá+ºÖàdÉZ·öh‰Ÿ øhL ÉÊ E£ÃáB8ÜôHÑF0ÄEó»rCdԧܸ’ä~ÈJÙßï^rp°ŠŽ$6½W:‹(.îçu ÍX ø&YEÄvº\0!ôî"·ñoâN\Dp2á14¹îɘE©`ÁJl 7(6*•'ì}õõŸ7Øø®X*• |);ôƒ»äío… Çëô[àÄÎ ü¢£¥4´j6m:+Íý^ÝÒ}£=ðq¢j5¿?¤S†7µÝŸÖ¯~ Ä[<í4Z¾âÑñ™ˆó–o­[ ߬É!#…†ß²ÐÀzõ\3ÂÌQpJ¶ŠˆndûFîÀ¡ÏDr%p 6d¨\±‰Ê!åš/k.–ÐDJg“¢ÿò²‡“»¼ W$´N:ñŒÆŠ"ŠP)¢ 8€ ßl,ì¼Ô #ã¢F²£1ïç ÞŸw¼æüjÞ:ŽûóÆ©ÄÇËù˜îçþ°¯'øã[9Û;LJŸ{¦áÇû%½a¬Ü@j´ÆV£p-ºžý ‹PQ‚#¦ã@„ƒÐÈê’Q¯ßh¿¿ê S~¨nÔs'6º²l¢øº;øÔ2¤Æ+aƒjFQ$é4V·ðŽ…&Z,MçˆÍ S+ô:ž°]QQ3SÎ*Ç4Söîÿ韛8J¸+J~”L×–œÌüú>~¡[ú}¢bNíW^‰C-£HéT–È4eãÐÄžÄ ^Å*§µsf5®’®f‰5ªú‹ÎþILür°gðæö@Yësczyb}/¥åÏlÞH{>[†N«]*¼ˆ'”5ÚåøoÔð›v\7(5–.UX ŠÊ%486nò ÇÚ4 é(wØà¢¿z÷X* AFË’2ÒÑ–Q´U°³Ea¿VoŸžˆ!5Ùãcp2 ØÀ*,@éÒf —òÑR@)¡èý[WCØ(r#èÆéF¬Ð«¢¥Ðþ¹(O*¡ƒA®Ha¿²ò´ ½`6Î´Ë „ŠËù1H9>ïÓ¨áQ„ßdé@o鄘`íló;eFÁÆÎ¨À®¡£ùæ§/¯²QAlV*DÈ,ôkÿ€ñQá)clÀ`„d:ßÊïŽ=]GU=Äqš4R"DŒ4Ë^‰¨†ÜPË&[¶:‚‰DH‰PFpj2í°N‘rÊ9¤¾e ‚¡oiCp¤96½ê1‚ªÕê†SÊQJlp•5ÁIn©«À“3ïœÛ]Ïr_³8çÄÀãù1r‚2¦;èrZ„aÂ¥ßaãlm±Œ2¡Ð­"7¶¨¦pKyL¹±¸8w÷î{w>ýîõ¿®åÆh%¢2„Àà]…2£R0QˆjE8a_Zì‹ÀÀŽsCSnìká½Ímpƒü›øA%ðÊ~5g‘Š#qi0<f´–uUyé4ŒT¥±¬J†Ã­w¿—~ýylhWe5 ¹›ÃlÀ=} 2BldÈmÀÃ>KªNÔ:Bʨ\ÁÈtÆsƒlóniI\ŽñtcšrãÆ™21±T«ÕÈ8ÐbwS”XÊ5…rƒˆZ ¯a¯.ÑÑ?åáÒi±k€µ­ö”óŒdt0색A¿˜(ç”ä: «Fÿè(V²Ý6!ž\í`£En„ŽÂ-%eqaaaòî{·ŸüðúåU6ff/mÈ@2±ÑÄ ­¥"Êܨ ¢Hñ£æù‚Žb|ÅX¡|ÔÀ é#aD3ëä3ê²›È î/‘EbE²/PLà.‰¨¡ "¨ˆÈf&ww©³ÐM®bÔ–”E+‰¹B¹NÃFg>¢ŒB¸d)ù4ƒÙ€oh×ô‰ñëÚ'”P×^‚ãÃeT¢FºAÂ1¡ÁrnN ÆÅH™¾i¦LLÍ22ÊhX=ñ§§ÜS°><ýƒpl”Û+tÎv{«@c¥ÞêtÁÄY— H`ŽtÙDÑZp>èŸ2 ƒn7$êí v C‹=[á5„Ðà Ël<¥ØxtanqlüîÉ?½!7®àQ˜Çì§£¹B ×X_68¿ÃuÝõÞÍĘ}Èiq"—­kî [BÜb?ޤÍyïd¤ÿë/Rê÷£'•Œyo¼‡1ú8–”K †d!c‘2:Î|êâÌÐi#O1A¸ß≸ÙóVmúœzŠïejs&b)Mð7 öY&í_VGp 9ˆ‰±ä˜§ë0º(AE™ŒéégʇĆ Zl“ØH3vÑõ‰?bE¸¦´y¦6Ê7vÓd€B;`ƒèØjŸ úC ÌŽ>MBdÐ'6K¢„¹ s ’ÁY@!°Ê‘ e a¥{Z/¤Ø ™rçÏ^ôܵO3S|ö±ËÀñ"£Ü¨Ý–3E…·<áí!}™òqV+/póá½$-O–åÆ2"n’—Ę.Ó¾Œø¢GÄ™óf ´„lƒš q¬.m«ã'&@c½8¥_j¬¥Ðÿäͱ1?*,³Sÿg¦ Ä¢§ •ÐT(8à!7v¸§´(9ˆÓ‘mŽV§Å[èkOë;2 2ÐÌó„%Ãa·@†Z ë(UØ.  . Í­<¼s;¼5ç%Ç׬¢)Ÿ=FlÜ_œûøã&óɳŸòklL°¸W³ƒ%¤h/E¡‘ý=z²‘ÒóiÑ]p¥íËÄ+¦ßË…î6ò‚k[UÖªlÁ;ªü¨ª@Cf6õ4aâUzêÛ:“.ÆÐ ·G£h)ÑXfT¸¦Ð<™×%Ä͔险·Í”ŠÔºASe;°A2º¯É7ÆÑh•D”—‘—¯¾ÆiŒP$`Ñi€t¹Åž£žpo¡ ÒPpœPt@diøÐ³o§e(qQið88¶!šPaPK™››œ¼óéß__ËwñiµKòQDG¥Øq`ÌVBn„‰R(}`E¬Rs 5ºÈKIÊh0Ë£û2bDß²ôßÂGXÉUY-ð Øª™šp@‹}%%965ÖR.å†Õîšî)Sä3o™)ÌÛèv(*$£EO¡DM«ÅÍ•%^À­µ?¯­wRXæÊ°K.Êe¶ÏêÁ…-làu‹¢ÃÃþyzÆ5¥2a¦´ê[!˜Ç0 “PÑï~îùk¹1Ã}ffªŽ©ñ Á$)' —˜ ÓsÅD ÁÁEfþì—?häèÆ &˜ƒsR Iµ0ßÁÁ, )Dš ¬r;·¨Ør¢cI8¦ $•3å¶7¸Ø2é|LqÍ;¾Û…8^nö,†e. e ¾»ä}Ÿ÷ýþÈ#))¯˜Wÿå±f$ý¾çy^d«€†]Ry,QûHdÍÛöš‰jŒ®’‰±SVû¾ó>ä>Ù,¿£,Ÿèæ…[‰?|Æ£úÅ׸-%~ þ„4£þÏJéÈl6øI=8e|ÿX–УB—8¾_¾à–Ú”g}†6å3òÑ_ô³_~ñï¶óc!9‹ýt´]Lø`÷Õ‰´Âö/¢àB³j"Ñ¡)k9¼n „t¢qCeÛ™"¡‚§¼S?4mÌò<C¿{’H²¢ÁICf›67Ž(êÌd*Ùl¾8™ŸPëtcµÚûÅãçŸëìê’'Ì®èc\ô7ª7—o¨.±^ýk‰ƒ7R—RÏ/›õ撯ꯖ|óã î?¾ÿW?G}úéßÈ¡·ØC!C¦­t*þ2æÔ>¦—¥ƒ<†ø J\g«+£&Ó®BG–8‡zHîwáƒIV/ÜVpÑ=˜–é¬ >8W6X8²»²&eìèˆD6ºó³1Ÿ/ÈVgç.Œ–«ÎÏÿ¤ëÀ©†UŽ¡ãã<мt 2¶‚îvlsGb,‰Õ}!èWiPRl&¬Ýé#·º!’‘M§n^JÚ IV"LæãÆùÇúÊXrhâL%BÞà¬AsÔ“7öG‰èÆâôT„ã5éF™ðúÄ$ÆOhj”ÁgºžÛvQŽšÛ9˜õ9æFÓ#xr\ó­ÿoàÁCÓÚz ᡵ” 9¶v/¸1E_ȽûNõHCwI'*Ij#!t¤Ç[r/™5ˆB•ÃáÁó–~ÈríU ¨;ï tŒí-ëøAõä nbgÅéüÏsêbI7^.WªêíÍÛ›ª¬´êóº¦âÃÊÿ¡~¹®omÕÁÚ{_ßÖøTm‹÷pÕj½–kÑôN.{­U]—eyõú5ý¬ÕWË3®ÅŸe¦ŽA¥3k*üuØn/2¢3²ã‹#‰$Ry°ÇIb»ñº!|ˆtàUÙ Ò—=D7Y©Q""SY“ŽÒê8å€j$“FÜ0¸?º±wáqDC‰=yc?N2êSX7Î8q0Ô¨PaÅlx7R4RQ©‰ÿe#Y7+™,4zòÆ^œ¤› {Š{Š«ª|ÛxgëZQHÞ‘”¬ëÍf >Hî@pëå$øþ×n”µRY{Ç»Œs2^½zõ #KlfœýeQL'qÒ˜Q ÉÈPåˆ[ðhQß¹ Ïå–Fåbl`¶2;f‹¦Þ`-šß- V3 H˜¾sɱQý€¥ø j _—°rLœn ‡âFË ŠúòÆÞ€‚…Ñ £¡n¬”ŒJÅÃKð6­–Xݰ"±¥L…?/;þ‚R7Uå(¼æ¹[a6X7€†ZÊÉï§I+á(%=€(b:¢må`Qi \F‡ 1–V×Û²¸™Î<ìSk/ÒNò`õÀ‡úâÇÔIF %Á¤R‘ϤÑPbu+š¼rØ>eÄ Ã!D-¥— “r—rr¢ã%ËÆÕ•Æ7–޵cƒÁØÔŒµ¾öÛ¦«T‚…ÐÑô”;”ò±Ý(a)¥¢6Îó"KZ³h ኣ`EtЙ-å`D´}iú YsX<ÚŒòaí?è³—ÔÅS{†Z‰³^õÐp)^Q¨Ãˆð’kͱo²ºïµhà—Ë©lȉ͈¨ÇS(ŒRàXP1/Y8®^—N:*ea­fà†}µ®6LFÕÔŠÆ¡ që%CuÃâá¨E? ü¥× ó¢„¥,a)OY7ˆ¶(ÊlÐ@`"†P f„öF1ŸljÔ#jUQ FÀGâ\EšÜ‡}“)&©7ÂêÇU?üÆs}ïMù`¹È !%H¢ ùJøÇÂPÌH¥[Ä £Ñ“EѨÌç`ãTtcuõMÉx¨§(Må›À†[—êÆÚJGM¯qºã.^V~ª¡`мri–²˜OSÓz/(`JÔ^ (¶‰Ú³‡Kb…DMÛh(Ey0îþõd.„@4Ž2MLôñô-‚ŠÊGîÓ©œÕHU7ìwDÑP7ÔPH3D6útco$¦Âpœ³p§\]ÁXèÕÜ”e(÷µFŽÚ´¶ÂR±–Vönà‡³tHÏñ@å*vîÿeÏ\÷äÈÈé{Œ®‰ ŽïÝ£]žy‰ÝøïÆo"'¦¸#¹ó>•ƒÁ~OÜ Á6ˆbãÉÀ6AGrÁ¬Ò'Ó‚Ö…ž-p@'ÉÙâ¸è¬ÏíNf7™îfzÀ[åÿøI0hh üv¢C€¥1|ïíë]íjW»ÚÕ®vµ«]íjW?ñúïDt endstream endobj 1 0 obj << /Type /Page /Parent 281 0 R /Resources 51 0 R /Contents 52 0 R /Annots [ 2 0 R 3 0 R 4 0 R 5 0 R 6 0 R 7 0 R 8 0 R 9 0 R 10 0 R 11 0 R 12 0 R 13 0 R 14 0 R 15 0 R 16 0 R 17 0 R 18 0 R 19 0 R 20 0 R 21 0 R 22 0 R 23 0 R 24 0 R 25 0 R 26 0 R 27 0 R 28 0 R 29 0 R 30 0 R 31 0 R 32 0 R 33 0 R 34 0 R 35 0 R 36 0 R 37 0 R 38 0 R 39 0 R 40 0 R 41 0 R 42 0 R 43 0 R 44 0 R 45 0 R 46 0 R 47 0 R 48 0 R 49 0 R 50 0 R ] /MediaBox [ 0 0 595 842 ] /CropBox [ 0 0 595 842 ] /Rotate 0 >> endobj 2 0 obj << /Dest [ 85 0 R /FitB ] /Type /Annot /Subtype /Link /Rect [ 74 718 514 730 ] /C [ 0 0 0 ] /Border [ 0 0 1 ] /H /I >> endobj 3 0 obj << /Dest [ 91 0 R /FitB ] /Type /Annot /Subtype /Link /Rect [ 90 702 514 715 ] /C [ 0 0 0 ] /Border [ 0 0 1 ] /H /I >> endobj 4 0 obj << /Dest [ 91 0 R /FitB ] /Type /Annot /Subtype /Link /Rect [ 90 689 514 702 ] /C [ 0 0 0 ] /Border [ 0 0 1 ] /H /I >> endobj 5 0 obj << /Dest [ 91 0 R /FitB ] /Type /Annot /Subtype /Link /Rect [ 90 677 514 690 ] /C [ 0 0 0 ] /Border [ 0 0 1 ] /H /I >> endobj 6 0 obj << /Dest [ 91 0 R /FitB ] /Type /Annot /Subtype /Link /Rect [ 90 664 514 677 ] /C [ 0 0 0 ] /Border [ 0 0 1 ] /H /I >> endobj 7 0 obj << /Dest [ 98 0 R /FitB ] /Type /Annot /Subtype /Link /Rect [ 90 651 514 664 ] /C [ 0 0 0 ] /Border [ 0 0 1 ] /H /I >> endobj 8 0 obj << /Dest [ 101 0 R /FitB ] /Type /Annot /Subtype /Link /Rect [ 80 636 514 648 ] /C [ 0 0 0 ] /Border [ 0 0 1 ] /H /I >> endobj 9 0 obj << /Dest [ 101 0 R /FitB ] /Type /Annot /Subtype /Link /Rect [ 90 620 514 633 ] /C [ 0 0 0 ] /Border [ 0 0 1 ] /H /I >> endobj 10 0 obj << /Dest [ 101 0 R /FitB ] /Type /Annot /Subtype /Link /Rect [ 90 608 514 621 ] /C [ 0 0 0 ] /Border [ 0 0 1 ] /H /I >> endobj 11 0 obj << /Dest [ 101 0 R /FitB ] /Type /Annot /Subtype /Link /Rect [ 100 595 514 608 ] /C [ 0 0 0 ] /Border [ 0 0 1 ] /H /I >> endobj 12 0 obj << /Dest [ 104 0 R /FitB ] /Type /Annot /Subtype /Link /Rect [ 100 582 514 595 ] /C [ 0 0 0 ] /Border [ 0 0 1 ] /H /I >> endobj 13 0 obj << /Dest [ 104 0 R /FitB ] /Type /Annot /Subtype /Link /Rect [ 100 570 514 583 ] /C [ 0 0 0 ] /Border [ 0 0 1 ] /H /I >> endobj 14 0 obj << /Dest [ 104 0 R /FitB ] /Type /Annot /Subtype /Link /Rect [ 100 557 514 570 ] /C [ 0 0 0 ] /Border [ 0 0 1 ] /H /I >> endobj 15 0 obj << /Dest [ 104 0 R /FitB ] /Type /Annot /Subtype /Link /Rect [ 90 544 514 557 ] /C [ 0 0 0 ] /Border [ 0 0 1 ] /H /I >> endobj 16 0 obj << /Dest [ 107 0 R /FitB ] /Type /Annot /Subtype /Link /Rect [ 80 529 514 541 ] /C [ 0 0 0 ] /Border [ 0 0 1 ] /H /I >> endobj 17 0 obj << /Dest [ 107 0 R /FitB ] /Type /Annot /Subtype /Link /Rect [ 90 513 514 526 ] /C [ 0 0 0 ] /Border [ 0 0 1 ] /H /I >> endobj 18 0 obj << /Dest [ 110 0 R /FitB ] /Type /Annot /Subtype /Link /Rect [ 100 501 514 514 ] /C [ 0 0 0 ] /Border [ 0 0 1 ] /H /I >> endobj 19 0 obj << /Dest [ 110 0 R /FitB ] /Type /Annot /Subtype /Link /Rect [ 100 488 514 501 ] /C [ 0 0 0 ] /Border [ 0 0 1 ] /H /I >> endobj 20 0 obj << /Dest [ 110 0 R /FitB ] /Type /Annot /Subtype /Link /Rect [ 100 476 514 489 ] /C [ 0 0 0 ] /Border [ 0 0 1 ] /H /I >> endobj 21 0 obj << /Dest [ 119 0 R /FitB ] /Type /Annot /Subtype /Link /Rect [ 90 462 514 475 ] /C [ 0 0 0 ] /Border [ 0 0 1 ] /H /I >> endobj 22 0 obj << /Dest [ 125 0 R /FitB ] /Type /Annot /Subtype /Link /Rect [ 100 450 514 463 ] /C [ 0 0 0 ] /Border [ 0 0 1 ] /H /I >> endobj 23 0 obj << /Dest [ 125 0 R /FitB ] /Type /Annot /Subtype /Link /Rect [ 100 437 514 450 ] /C [ 0 0 0 ] /Border [ 0 0 1 ] /H /I >> endobj 24 0 obj << /Dest [ 130 0 R /FitB ] /Type /Annot /Subtype /Link /Rect [ 100 425 514 438 ] /C [ 0 0 0 ] /Border [ 0 0 1 ] /H /I >> endobj 25 0 obj << /Dest [ 130 0 R /FitB ] /Type /Annot /Subtype /Link /Rect [ 90 412 514 425 ] /C [ 0 0 0 ] /Border [ 0 0 1 ] /H /I >> endobj 26 0 obj << /Dest [ 130 0 R /FitB ] /Type /Annot /Subtype /Link /Rect [ 100 399 514 412 ] /C [ 0 0 0 ] /Border [ 0 0 1 ] /H /I >> endobj 27 0 obj << /Dest [ 134 0 R /FitB ] /Type /Annot /Subtype /Link /Rect [ 100 386 514 399 ] /C [ 0 0 0 ] /Border [ 0 0 1 ] /H /I >> endobj 28 0 obj << /Dest [ 134 0 R /FitB ] /Type /Annot /Subtype /Link /Rect [ 100 374 514 387 ] /C [ 0 0 0 ] /Border [ 0 0 1 ] /H /I >> endobj 29 0 obj << /Dest [ 158 0 R /FitB ] /Type /Annot /Subtype /Link /Rect [ 90 361 514 374 ] /C [ 0 0 0 ] /Border [ 0 0 1 ] /H /I >> endobj 30 0 obj << /Dest [ 158 0 R /FitB ] /Type /Annot /Subtype /Link /Rect [ 100 348 514 361 ] /C [ 0 0 0 ] /Border [ 0 0 1 ] /H /I >> endobj 31 0 obj << /Dest [ 163 0 R /FitB ] /Type /Annot /Subtype /Link /Rect [ 100 335 514 348 ] /C [ 0 0 0 ] /Border [ 0 0 1 ] /H /I >> endobj 32 0 obj << /Dest [ 172 0 R /FitB ] /Type /Annot /Subtype /Link /Rect [ 100 323 514 336 ] /C [ 0 0 0 ] /Border [ 0 0 1 ] /H /I >> endobj 33 0 obj << /Dest [ 175 0 R /FitB ] /Type /Annot /Subtype /Link /Rect [ 80 308 514 320 ] /C [ 0 0 0 ] /Border [ 0 0 1 ] /H /I >> endobj 34 0 obj << /Dest [ 175 0 R /FitB ] /Type /Annot /Subtype /Link /Rect [ 90 292 514 305 ] /C [ 0 0 0 ] /Border [ 0 0 1 ] /H /I >> endobj 35 0 obj << /Dest [ 175 0 R /FitB ] /Type /Annot /Subtype /Link /Rect [ 90 279 514 292 ] /C [ 0 0 0 ] /Border [ 0 0 1 ] /H /I >> endobj 36 0 obj << /Dest [ 175 0 R /FitB ] /Type /Annot /Subtype /Link /Rect [ 90 267 514 280 ] /C [ 0 0 0 ] /Border [ 0 0 1 ] /H /I >> endobj 37 0 obj << /Dest [ 175 0 R /FitB ] /Type /Annot /Subtype /Link /Rect [ 100 254 514 267 ] /C [ 0 0 0 ] /Border [ 0 0 1 ] /H /I >> endobj 38 0 obj << /Dest [ 175 0 R /FitB ] /Type /Annot /Subtype /Link /Rect [ 100 241 514 254 ] /C [ 0 0 0 ] /Border [ 0 0 1 ] /H /I >> endobj 39 0 obj << /Dest [ 175 0 R /FitB ] /Type /Annot /Subtype /Link /Rect [ 90 228 514 241 ] /C [ 0 0 0 ] /Border [ 0 0 1 ] /H /I >> endobj 40 0 obj << /Dest [ 178 0 R /FitB ] /Type /Annot /Subtype /Link /Rect [ 80 214 514 226 ] /C [ 0 0 0 ] /Border [ 0 0 1 ] /H /I >> endobj 41 0 obj << /Dest [ 178 0 R /FitB ] /Type /Annot /Subtype /Link /Rect [ 90 198 514 211 ] /C [ 0 0 0 ] /Border [ 0 0 1 ] /H /I >> endobj 42 0 obj << /Dest [ 178 0 R /FitB ] /Type /Annot /Subtype /Link /Rect [ 100 185 514 198 ] /C [ 0 0 0 ] /Border [ 0 0 1 ] /H /I >> endobj 43 0 obj << /Dest [ 178 0 R /FitB ] /Type /Annot /Subtype /Link /Rect [ 90 173 514 186 ] /C [ 0 0 0 ] /Border [ 0 0 1 ] /H /I >> endobj 44 0 obj << /Dest [ 181 0 R /FitB ] /Type /Annot /Subtype /Link /Rect [ 80 158 514 170 ] /C [ 0 0 0 ] /Border [ 0 0 1 ] /H /I >> endobj 45 0 obj << /Dest [ 181 0 R /FitB ] /Type /Annot /Subtype /Link /Rect [ 90 142 514 155 ] /C [ 0 0 0 ] /Border [ 0 0 1 ] /H /I >> endobj 46 0 obj << /Dest [ 181 0 R /FitB ] /Type /Annot /Subtype /Link /Rect [ 90 129 514 142 ] /C [ 0 0 0 ] /Border [ 0 0 1 ] /H /I >> endobj 47 0 obj << /Dest [ 181 0 R /FitB ] /Type /Annot /Subtype /Link /Rect [ 100 116 514 129 ] /C [ 0 0 0 ] /Border [ 0 0 1 ] /H /I >> endobj 48 0 obj << /Dest [ 181 0 R /FitB ] /Type /Annot /Subtype /Link /Rect [ 100 104 514 117 ] /C [ 0 0 0 ] /Border [ 0 0 1 ] /H /I >> endobj 49 0 obj << /Dest [ 181 0 R /FitB ] /Type /Annot /Subtype /Link /Rect [ 100 91 514 104 ] /C [ 0 0 0 ] /Border [ 0 0 1 ] /H /I >> endobj 50 0 obj << /Dest [ 184 0 R /FitB ] /Type /Annot /Subtype /Link /Rect [ 100 78 514 91 ] /C [ 0 0 0 ] /Border [ 0 0 1 ] /H /I >> endobj 51 0 obj << /ProcSet [ /PDF /Text ] /Font << /TT4 475 0 R /TT6 268 0 R /TT8 269 0 R /TT10 270 0 R >> /ExtGState << /GS1 478 0 R >> >> endobj 52 0 obj << /Length 2572 /Filter /FlateDecode >> stream H‰ìWÛrÛÈ}çWÌã U€07 °oZ‰örË–Y"•Mŵ0 ÉÞH¤BRöz¿>}€àE%SL%¶TE æ†>gºO÷ü<ì ‡™PbxÙ)’")üSÃI–ïOL–1¼é¤48»ê½(q5ïÄi’¦°tÔÁNúÒy/O{'ï¢8KŒ|)x9b/Gø3½­„I²$~þŠ_Îù˰‘Wi.bo“©\ Oa#!D{/m“\Š“iÛ$“~\F±ƒÑÐ9‹4üÞ”apT‰Á‚'”áYÝTapQÛÐÛ4)´÷€>NÈ´­¡)Ðd¿¼ª„ކtºÃŽŸD'+›‹L  EL¿³ªsyÿ€OýֹĭŒ8í°½eÍý#üë“ì)CdÜkÅÖuÀ*ÑyShÀöQö«ó×ÐøÎâ˜þ÷E¨T¼ïOŸãÁgÐ5~ÓqÊ%6¼]wŸ‡-_‚±àÆÜÒF¹€²‹Þðá¦Es¸ä·rX~¸®ÄôàÃŽèHÁ‡å´FÂ¯É ÇŸhŒ&G0~ø0«®%¸ÈC9”"~™N梜ŒÏE¾5›N¾ò‚Q¢žî”j@ ÿÖ:ºÆ‹ëó3Íù À`0‘Oà–~+ôy¢p›Ò6‚¶É¶1ù—–O}‰ n­Á…Ä=Ø­Ø)Åâ#=Û'ÆÔÅkFÔÅ o º‹°Ý²öjïgµ -¹^#f(kì{.øž“¿A€(€[Î&ŸèÜ&W¨5ñÎ T¸W3è³0kÿ/ GF|-&éjfÀNÝÖUßòHt5C]…Ê ÖÔµ“É7Ýú½KïAs-D Á0ª_QoaTÔ³éõ´û^ó—da•’×|'yÍÐL½)¯z‹¼Ó1ß¶¢óº%ŸìºepÔt›ÚžRW˜Âñ EØh5ŒN[›óä«Y"#vf¿Úü?Øÿu£½N‚áòn2Z°óO'å55Àl|TfŸËà!@øÑ¬˜C]&:çà\Șc§{Iö"H T(k¹fE —°æ 3Ku,ƒºqç X£ÉÐçÛ§·Ýz½»õQœçP?ÐøâaãMc|Ÿìœq`LšxÛ`¿@:€Ø'!¸@ÿÁ{×áÄ[ƒÃø¦Sµ˜ <ÊcµòoLVÞU“F¹tp’WÜ]Ç{!Å9V$NÆœLAgÜ1¦e¤ ÕlA6œ¤B/“üú*P ¯÷kÁÀb—|êà”¯ÜSšbµ®VMHªž3e&»bÐïžô^`Ì—'¡›¨ãŠ—š¤L¸Í&[àS$TñåE'¹*Âå%m¤Q¦á ÷`buGo¹·˜-‰u1ÕÙá¨@êáÛ\ï¦ä Û·­;ÃZ=Š1ƒ«ÕŒ~ XF9ŸOix„* )Ák,pq.wñø„~E—Eè4 žü~¯i.¯àáÔÕ³£ê¹Þ#l.ú´ÕtcõˆVs›×áÝȺoÔ ØCƒC3j)‘÷S¥¿ª?ydeZX¹e s wBßqZrP¶x"™ÂK ¯Å<4æ}Ø`f2|ç3oÌùŠ!fŸÖÛY$×sK×SL¡£yÍ‹ |âS>ó©¡b¢œä.ŸÐ¯àE£QE¯·íÙek‚6’'‘é°Í5mÉó$ ¡ØSýJ¼è€W=¾Vj»¥éÝE2²NVS$k2dž-Cú‡ %käî‘!ýÿÈ}qrÊþ.e({º ™F†v¼Ý@ÑèX®HQöl)ZËù?¤H27¥hM—þ§¥èå+"ÿ¨­½|'RäŸ.EöIR„EQ†ßÛƒå;ãC)Òd}¶ÙR”4AÄu½GŠV¨ú!E°øxUd¿3)â*0'^ކC• %†—")2‘Â?5<¨I.Œ‡HS#†7¨Z@ o‰J“ÍPšN §ø.Š3ù>càõóâ¬wrQ4„iÌëlÑÜ3^'úçôú \ ÷ÞtвßL»¢R¬ÌuQ“a™ ¥P)$ƒ[y‘øLèÂ&9É× y“i$MI³ I—JáúêÉÝíít¶¨Æâ$œ±Cµ¹¹›|b?)ܘN/X0!åè_QìáÔçDj/<„ó`CD¬dÛdÝdw‚Á Ó[&Ì;%MF'Í%X« ö}ع+˜eÚ)–J¹„°¬áÁí ØVëਇÏü!<©9ž-P62è*°ºÅyÒ€ÁÇ£Î)†e‡¬îA\ÌdM˜è:LL‰ËÍèç!XôwŒ qMOñ6ÒÕ˜ûK “,ÄHªÉÞqh8ø%;”j˃Y/Õ¦4²^¯Å î# vÃ-3ÿ{ž¹å$IT]·Óôh%ã:ʘֺÿà4PÈîÙ ‡ºçN‰ q$ýîI†–o0!äèјAÿÉoa¬Þ% nnÔ?ïý}}î=[Ô‹È®{zÅQ‡é¤&Ý-¤i’Ö(Nš0Égu6'Dh袜ŒËÙ*\/ÿŒúÁ¢šŒ«ñÄ…¼­ Jñ¯$W¹¦6÷üÅ“a"Äc± Ÿy \T‚?ñ ÌÁ/ñÒ7ÏJ?”l\MÅãQäZ¢¶)o˜„^‘EüÛ I)çê)§ò2DE¤QƒñSQK„ûÍä®9ñÄíe€.ò~ÓÖøFT¶öïõÃE ¤x~íÂU>½G…Ú„éhë q•†`ãpV¶Ð0þKôÛ†‡Y€ø•—¯Óò'w×üÁm3{1ÚÂÁ#¤2(“²v¥JYç½ÌB‘ê¸H5èàL>ã·W½×ü~qN¢Q0ècàùËÙ…‹ö ôq&»…ˆô…Ä:*õžÁ%&R)¶ÚIqÔÔ.{@q²–âS¤¡Òˆ!’àƒb,XW*TXš2Cm™W“´8 í1¬gÕ|ŽY¬¼½åÑɰÇÖóy úÂÀÓ mñMRZ„ O·<Õ„Œ§¢ÐQˆ;òu¡ àwò †•w4ÄÚQRûý^Ó¤ŠÚA`xxÆZðc†zªö^²>P¶ }Gí(ºYKC6E7HË߬jë_]JCh™³^-jYîoC wGpÅyþÜtÿbL`EЗR¼q Å7ÅÒË °OBq¾¤ŸŸ5ŸBŠî°óŸï´‰ endstream endobj 53 0 obj << /Type /Page /Parent 281 0 R /Resources 83 0 R /Contents 84 0 R /Annots [ 54 0 R 55 0 R 56 0 R 57 0 R 58 0 R 59 0 R 60 0 R 61 0 R 62 0 R 63 0 R 64 0 R 65 0 R 66 0 R 67 0 R 68 0 R 69 0 R 70 0 R 71 0 R 72 0 R 73 0 R 74 0 R 75 0 R 76 0 R 77 0 R 78 0 R 79 0 R 80 0 R 81 0 R 82 0 R ] /MediaBox [ 0 0 595 842 ] /CropBox [ 0 0 595 842 ] /Rotate 0 >> endobj 54 0 obj << /Dest [ 190 0 R /FitB ] /Type /Annot /Subtype /Link /Rect [ 80 758 514 770 ] /C [ 0 0 0 ] /Border [ 0 0 1 ] /H /I >> endobj 55 0 obj << /Dest [ 193 0 R /FitB ] /Type /Annot /Subtype /Link /Rect [ 80 740 514 752 ] /C [ 0 0 0 ] /Border [ 0 0 1 ] /H /I >> endobj 56 0 obj << /Dest [ 196 0 R /FitB ] /Type /Annot /Subtype /Link /Rect [ 80 722 514 734 ] /C [ 0 0 0 ] /Border [ 0 0 1 ] /H /I >> endobj 57 0 obj << /Dest [ 196 0 R /FitB ] /Type /Annot /Subtype /Link /Rect [ 90 707 514 720 ] /C [ 0 0 0 ] /Border [ 0 0 1 ] /H /I >> endobj 58 0 obj << /Dest [ 196 0 R /FitB ] /Type /Annot /Subtype /Link /Rect [ 100 693 514 706 ] /C [ 0 0 0 ] /Border [ 0 0 1 ] /H /I >> endobj 59 0 obj << /Dest [ 196 0 R /FitB ] /Type /Annot /Subtype /Link /Rect [ 100 681 514 694 ] /C [ 0 0 0 ] /Border [ 0 0 1 ] /H /I >> endobj 60 0 obj << /Dest [ 196 0 R /FitB ] /Type /Annot /Subtype /Link /Rect [ 100 668 514 681 ] /C [ 0 0 0 ] /Border [ 0 0 1 ] /H /I >> endobj 61 0 obj << /Dest [ 196 0 R /FitB ] /Type /Annot /Subtype /Link /Rect [ 100 656 514 669 ] /C [ 0 0 0 ] /Border [ 0 0 1 ] /H /I >> endobj 62 0 obj << /Dest [ 201 0 R /FitB ] /Type /Annot /Subtype /Link /Rect [ 90 643 514 656 ] /C [ 0 0 0 ] /Border [ 0 0 1 ] /H /I >> endobj 63 0 obj << /Dest [ 201 0 R /FitB ] /Type /Annot /Subtype /Link /Rect [ 100 630 514 643 ] /C [ 0 0 0 ] /Border [ 0 0 1 ] /H /I >> endobj 64 0 obj << /Dest [ 201 0 R /FitB ] /Type /Annot /Subtype /Link /Rect [ 100 617 514 630 ] /C [ 0 0 0 ] /Border [ 0 0 1 ] /H /I >> endobj 65 0 obj << /Dest [ 204 0 R /FitB ] /Type /Annot /Subtype /Link /Rect [ 100 605 514 618 ] /C [ 0 0 0 ] /Border [ 0 0 1 ] /H /I >> endobj 66 0 obj << /Dest [ 204 0 R /FitB ] /Type /Annot /Subtype /Link /Rect [ 100 592 514 605 ] /C [ 0 0 0 ] /Border [ 0 0 1 ] /H /I >> endobj 67 0 obj << /Dest [ 208 0 R /FitB ] /Type /Annot /Subtype /Link /Rect [ 80 577 514 589 ] /C [ 0 0 0 ] /Border [ 0 0 1 ] /H /I >> endobj 68 0 obj << /Dest [ 208 0 R /FitB ] /Type /Annot /Subtype /Link /Rect [ 90 561 514 574 ] /C [ 0 0 0 ] /Border [ 0 0 1 ] /H /I >> endobj 69 0 obj << /Dest [ 208 0 R /FitB ] /Type /Annot /Subtype /Link /Rect [ 100 549 514 562 ] /C [ 0 0 0 ] /Border [ 0 0 1 ] /H /I >> endobj 70 0 obj << /Dest [ 208 0 R /FitB ] /Type /Annot /Subtype /Link /Rect [ 100 536 514 549 ] /C [ 0 0 0 ] /Border [ 0 0 1 ] /H /I >> endobj 71 0 obj << /Dest [ 226 0 R /FitB ] /Type /Annot /Subtype /Link /Rect [ 90 523 514 536 ] /C [ 0 0 0 ] /Border [ 0 0 1 ] /H /I >> endobj 72 0 obj << /Dest [ 226 0 R /FitB ] /Type /Annot /Subtype /Link /Rect [ 100 510 514 523 ] /C [ 0 0 0 ] /Border [ 0 0 1 ] /H /I >> endobj 73 0 obj << /Dest [ 229 0 R /FitB ] /Type /Annot /Subtype /Link /Rect [ 100 498 514 511 ] /C [ 0 0 0 ] /Border [ 0 0 1 ] /H /I >> endobj 74 0 obj << /Dest [ 232 0 R /FitB ] /Type /Annot /Subtype /Link /Rect [ 90 485 514 498 ] /C [ 0 0 0 ] /Border [ 0 0 1 ] /H /I >> endobj 75 0 obj << /Dest [ 232 0 R /FitB ] /Type /Annot /Subtype /Link /Rect [ 100 472 514 485 ] /C [ 0 0 0 ] /Border [ 0 0 1 ] /H /I >> endobj 76 0 obj << /Dest [ 235 0 R /FitB ] /Type /Annot /Subtype /Link /Rect [ 100 459 514 472 ] /C [ 0 0 0 ] /Border [ 0 0 1 ] /H /I >> endobj 77 0 obj << /Dest [ 238 0 R /FitB ] /Type /Annot /Subtype /Link /Rect [ 90 447 514 460 ] /C [ 0 0 0 ] /Border [ 0 0 1 ] /H /I >> endobj 78 0 obj << /Dest [ 238 0 R /FitB ] /Type /Annot /Subtype /Link /Rect [ 100 434 514 447 ] /C [ 0 0 0 ] /Border [ 0 0 1 ] /H /I >> endobj 79 0 obj << /Dest [ 241 0 R /FitB ] /Type /Annot /Subtype /Link /Rect [ 100 422 514 435 ] /C [ 0 0 0 ] /Border [ 0 0 1 ] /H /I >> endobj 80 0 obj << /Dest [ 250 0 R /FitB ] /Type /Annot /Subtype /Link /Rect [ 90 408 514 421 ] /C [ 0 0 0 ] /Border [ 0 0 1 ] /H /I >> endobj 81 0 obj << /Dest [ 250 0 R /FitB ] /Type /Annot /Subtype /Link /Rect [ 100 396 514 409 ] /C [ 0 0 0 ] /Border [ 0 0 1 ] /H /I >> endobj 82 0 obj << /Dest [ 250 0 R /FitB ] /Type /Annot /Subtype /Link /Rect [ 100 383 514 396 ] /C [ 0 0 0 ] /Border [ 0 0 1 ] /H /I >> endobj 83 0 obj << /ProcSet [ /PDF /Text ] /Font << /TT4 475 0 R /TT6 268 0 R /TT8 269 0 R /TT10 270 0 R >> /ExtGState << /GS1 478 0 R >> >> endobj 84 0 obj << /Length 2147 /Filter /FlateDecode >> stream H‰ÌW]oÛÆ}ׯØÇåÅËýâÇã¬8ÎuÃVŠ[} dÅpaK-ߢÿ¾3gv)Ê•ìÆv€ÆµË!—sfΞ™}7ý4›•ʨٷQ“7¥*胪ÉËš®UîÊ©Ùݨ€±»ýt|iÔõýh\äEA¯ÎG<à‡~}ÕG'“ÏÙ¸Ìþ”›Wú>WzΗÕz¡\^æEöëì#¹–/ÓB•)j5®|ÞS«Ù-¤”®e}^k5YecŸ—z)?ß²q k¼Ùe–®wm4Îêr#´ñwq·ˆÆMò!¢÷EÞØª"„ôq ³>A3CÓçí5ùŸÍ~Mg#£nÔ¨lr_«Ò*`Õ×n1úvØP¹åû>„<ìX‚ <ÞóÎa‹|ÆWyù=&øËA/ö¾÷”-6¹­£Í8&ЀýVáÕÅ1 >R.~£'ˆ¿+S¨Oê믅ºUÄ&£%ÇïFÁ„ÜÇÙíèrô,¦ÇÓ¸,r_÷³¶ÊÆÆ—uÞèËÌQ¾œŸGæ]ÌÈTU¼ñ^¤¦ÿK–éÙÑôHM>ü's>÷ú"þNzû…ºœ¦É%ýþDþê´RQӒ΃Ì…5¯Jh¢pQ2NZG AOhDn|æÑè#™M/¼¯õ!ж3ñboœžÞtsJ«ôŧll>9Kp”lZýX~~¡g(o½Gï´ @?ûWZ÷¹›™b?|¹8Ç{ÃqPçȬ‘Ìz}r:å$Ùæmüü4A»2 “>“„–QÝäñºhh…™°:Û‹UQç†Öt†6;q®"x‹ùC·à´Ñ¦'­äÝ«ÛåýzÕmÔ$«õj¹\Ì77©s¼ŸZ}ãxPhØxKÿY`]7[_ Üònˆ¸iïÇ<6Á‚Ç×ô)mzp*F¥ÿK¾’Od5‚j…´öš±Z¨þ†“îò–S‚ÁÅ' 2²»¾ùËþk2<+(ºf0¶@ã 5£í6£lÇñ<£ê¨)?|k…[K\•L8Gœ5;ÍÊ~õ>K ´¸n𹌻ÌDi’ç7ŒÄp@°üNTœÙ-¬’N‡05/Ùã[Êi£ÁG## iÞ953”ÂÀ1é6÷*ã¡yI2ä¡éLf"¹,µ,{ω /AâúGwÛ¦Áo±ùˆÍê/”«×ëE§N[–š’Ž4—ú,=æÝVjÞz^&A‹å®ŸY£©¾`™t4êdyuƒóv#ƒµ8Æø×é,Й„n¼w_>CoP¢vÎ s¯¥0ÈDÈØ¸®„¶ñÙå³Ä%ðó|cwÈ Ã Ä©öÖxEXGkKöj¿’=ÎPÒÞÿy°÷’€Ø…$:0ŒÉó’ðPðöŒqõo¡«{b7•éõßöúOÍ¢ÆOÄ¥o­–ÿV-ЛܭþÏG‘šp8àDˆÚåUzj-·Ú9*…(“¸•ˆ[)q«7‰ÅØrâZ—Y@ÌÏ-Û •[.’Ô÷æs’QïÞWðlTÈZÁ«w ž4_[-(™â »Œ|¤zÍúÅÞ1ÏèÌÖÓ©‚mà]2®1¦x6oÑ:?ƒŒÃéðÁ:µcO/ý„rp¾(*ŽÃWm òR|röž»ÌØ'!ÐfWZšQ²Ãz†CÉ=„þãt’Ìê$½w~:MÃéY2?^Œb'ëÉBonQ©â5«E ̾rÛ¢úðøÐÅýÓ®9—;ÇRXÞÇ2ïZX‰étæÓ÷s™²R9ÐÅ ]<ÔÏAðx·mäí¹Ü]×@Á°—`Kã%®ñýv8¹ÁGWƒ§â§÷=};ù|$ǽúe9àM":ÝîmßüÛØü“ê£A®iŽ%oÕŽæ …ñ]¡g|ò¡®I‹èy‘¶’b·ŽSÄJ9 ð¶XÜ“¶°Ò²Îâu›^i7 ® I…^]=à;(¼Õ߈ÄÐ%‚%õïyãÜt5£s`ÊÎ(@W"N’Àùá…üXÇ—#?Õ1¿ÅÈË%÷¥ñ%Fù)3 ħP)Ò'ïçÝM$Oûu¸„ƒ'&útHÐ÷÷[- |ºãâ!ŠÂ|µ¼j»T&ÐÒv͵HØhƒ}Ó>è?“À‡'r®ïŽÃ€Õ€Ý`€à©T<#ñçL1*³¯.vV›0DÚºß^§Á?ƒã zˆÞm4|Ô(“Û¼h&ÛÌüf¬t` Oטnd"'_½,WÀQiÿd÷^öl²[=öÐc/zÌÚ=ú©Ÿ‡Æyhg¥¯0žÃéÆk\¡³tJ;îÚá\´ÛC»=ôÑG}lx+½2qûcÀŒðøÒžü )]"åá_w%ZNwmBk@ÀŒOÔ4öµµ8ñ³zŽŸnËÏBÅ„ô<޵ Šµ 'ã˹ڄ@K<­Ÿâé°§4hÊŠa?Éüt:6+X:é$¯¤Ÿ<‡IN,Òn.aØÄò\…#ˆ€rñôøð¥Üõ¹4}.½p±€ÖT@Ù-®V…ƒ/öé ad\¡ÇUÇlš”M¾R\Voz*€î´¢í|ÀXÒˆñ¤ ÔVˆÿ6ùoÁFüÂ6òt-ËDêlÅáz=2îBñTM®z ÛŒ©É0)!ÝÜ Ÿ7¹÷\¬WÝH)'‹ãüOð±äWÞ.3µî ¾õÞ×[ï£öaW•”¬¡ÿè1¢ÿ<¦Î‘®ÿ«x"-Ø(*R‹ü•ÅwÃBBBô®o­8¯†Óþ‘Ónà´ƒÓ.9 _]òÕEÅsP<—ÏAñœ(^ìåJ{¨•ÛÃ'ÓÙèÏã"0Š endstream endobj 85 0 obj << /Type /Page /Parent 281 0 R /Resources 89 0 R /Contents 90 0 R /Annots [ 86 0 R 87 0 R 88 0 R ] /MediaBox [ 0 0 595 842 ] /CropBox [ 0 0 595 842 ] /Rotate 0 >> endobj 86 0 obj << /A << /URI (http://www.otechimg.com/)/S /URI >> /Type /Annot /Subtype /Link /Rect [ 94 162 210 174 ] /C [ 0 0 0 ] /Border [ 0 0 1 ] /H /I >> endobj 87 0 obj << /A << /URI (http://www.offis.uni-oldenburg.de/)/S /URI >> /Type /Annot /Subtype /Link /Rect [ 94 121 180 133 ] /C [ 0 0 0 ] /Border [ 0 0 1 ] /H /I >> endobj 88 0 obj << /A << /URI (http://www.microtherapy.de/)/S /URI >> /Type /Annot /Subtype /Link /Rect [ 94 81 220 93 ] /C [ 0 0 0 ] /Border [ 0 0 1 ] /H /I >> endobj 89 0 obj << /ProcSet [ /PDF /Text ] /Font << /F2 271 0 R /TT4 475 0 R /TT6 268 0 R /TT8 269 0 R /TT10 270 0 R >> /ExtGState << /GS1 478 0 R >> >> endobj 90 0 obj << /Length 4065 /Filter /FlateDecode >> stream H‰ÔW_sܶŸ¾Þ§À#ØÉ1ødßlY±•‰e$”ëèÒ$ÇâÉm?F“Üv$Ï’›¦îCG£# ,û÷·»Ï÷›o÷ûB(±·©âª üùSÅE ¿&N‹$û›Äo~¼Û|ûr§ÄÝýf›ÄIGo7îÅ}Úü$_\œ½‰¶EœÊבұ‘÷ÑÖÈ[÷3ŒV¤q'Ñ/ûïÝÍ%Þ ŒŒJJ±5Y\åªûÀH±ä¥³¸”âlˆ¶Y\Èï¢m»´ø1Òðû¡¦Í[+vÔô´,mN,iŸ%q¥ ár¯™ÎX5eœjòª¾³"‹öï7çû­ØUœ•¢ÐÐbë?ÚÍ»§7Lk·žåyœ¯vr»÷GÎ<½ƒ×d&.þ“-/ƒßyRŠGÏ}iV±.iO¥.€V <¾‹quý^¾_¼ ˆ¿OB%âµøé—D41ã‚Qƒà6¹Ê㌾ºÍnóÜG1{Gª,N2Ïß(³,Î)Ñ»z×c·JˆÈ$p·¼€X•¼ŒDÌþúÍ‹·g{ZƒhÔ†—<ÙRG™¸L–7â…*7Þ¸¶@cä!‚}%[HˆpŒyãb^ܺ•¡‡({A˜ÄdøRdq&ëÞXáOBˆ+ê–÷m?áÖh=aËŒZ‹wM+nì¡~h™µ ÂÔ}ï|舷MíÐ×];ý=Ò%ìz*90rœéu¡¿•­·a¡«,+æ´ËCÚ‘gêqìZw*ÎA;¸þá¥Íå ÙÙú· _b!œqËX£q 4.z¸Œb“íJù)*á·Æ½õb¤ïá¡m,ssj2bÙu²i#*ý`ÑÇú¦õ|ú/Eßi "o ­ŠÊ™"ñFð°ó'‡8s¬%q–›r‰S)V©Ñ``ù rÄÈk[7þ2pŒóhÓÒ×èdÍdWƒ!L%¡]¨a ‰jÒ =l#˜bè:t Úp؆h. š[^å )F(~ §ºëð%ÜÑÔ³åR¦¢•KÆÞ¦Y•-C˪pvò&+ j©ؽ‰ä~ˆÛ.R>‘"`poñ¯½åâ%ñHößø ¢ÝŸ©$s»;Žã@–œ‚ÂÞLdçš¼×Þ-¸Ü Ê…AC>>é}ÑØ‡–x[ñ³D¦³Û‰åù9§¨‰œÃ9Uƒ_-Äþ4øY†ÁK|aÑ×x¢¡«ààæ:0~Ü»hÓЊ¨ŒZTX¡Âu¿sÍ€!@sÆñ˜b[Ô_”IÑöâPÓGó)ªà4Z1,¨è†o@«gˆ'™¤ƒ¸ÇÇñ뫆“CJR]-ÂÉh0噿WI …Áµb`kÂO·Ö„%'k.i£ ´7Žc3ŸF*&õ6E`p»·ø¨#WÒœÿ(ÚD1Á0Ò9qŨZåë'0öÍ{Âv:9Ý©É*0!¹Ù«ÊÙ‚•É!óQ>áŒÙ~ájAËÞŸ9e U\‚àã|ÎÒ+å–‘Ï¡·¨dMü0÷2²¬‘D©a$QQ€i‚‰ÝÙæ¦AÑ™%Fá=dr}?`AÇ/fi‰˜}ñż#,ËŒÊÑt?¼õÕ—±gG©%κz]FêIؾ¾é¶B¶3¸Œ§žD0&퉀 'Ë(c…`χé0ŸzEÑ ¤òJïÿ¼îÞÒ”ºlc°uㆋŸÇÞ»}¥.cÅ‚§ïƒ,nzÂ#¾SF;¢·“ËÊ”¯¡í¿Â-~ŸÚÃÞ†Æ ÛºÓ6¶‘[ýœ]ÇùÜ;ˆH<Ámê(ÄNìì£2“µ–ŒGK†¾ºgXVc!ªìõxÃ›è• Žoõ ^³ÆÅ?zŽ_Da9p’ùNÇðõ lÐòþg ƒîÛ‹¬XäŒ|ÄÀò«´‘Œ“³Å\u™Ñ ' + Ö7ŒÛÖ[•Iz¥ÄCËÈ ë?"ß…ß¡ßâk,ç‹m{@Z!N(ê:×Á¾t>W §E¿ͤÃ!i.Í>רRøª%sq>FÉ\àq‡Á('þ´ X¤*_A¶>ÔiÄ#†gÜåf` ó,žœüLR§0¬C§CÅ‹XP‹¬µ*D­4 –³®xrŒØt¦§e‚*ÍP•¯ J/¡*g¨ÊP•3Téªò¯UÜòV¦<éZv¶o+© Sñaß…N”À—¾Â1öDF³vd¥ ¸½>ñÐÖ‹©cy~71hä¡—Ú%éc;-U[-ÓàK ¢ UnÍC}n±ërqÍù¢Â“óÆø¼ÑËk6è=R؈ìé>Ž7ý´N´”GÝç 0‹Jy"ç’™sÉP.Î%̤ ®K‚âó<âÊî" q¡¸Ï Oœ4»u²}6QíØåÇÇfñÿYïIKU.ê}Y¹.ñ$'À7¾(à@G‚àÄš»0,…ÝD'Ž«Œ£!ñȺ6âÚÎZ2ì2p†£×XÐÝ Âöuׯ™ äÕµØQÊ]}žKä+fߨ`÷$hŸjõ}¤hŸËó×ÏÄÕ.N·Øûé$Ic!HÍ”;CìJ’))™®”LQIêW±~b‡ý½ÂþÞ ÝøZe›öå}]%yð¾)S0ÑŒO.c´ vò_+¿hïÚÉÍPÎÙí]_OÁ©L@kªÉÐ+dl1sŒ!âÆ&âAÿÿ´ xzØ–K;¦húþGFMH¦²Òs•¨\ðÄRH€Nô7ödGH-½ o€vèºkZ¶œ•ÚM¶-­ zàKÞö#ž¸î2‘ ~b^eE£Ñ„ëE `^HŽÉ£ýù‘‡ÑB>ÖÞ1_:Å áz-gaýçuÝ´C7ÜùœãE„-Ï~2yFøÃ»Éç­|Ji¥J*?Bß×Ë[UUå#–‚ßȱ³ü ±n©·N±ývcÀW§à…ÐÄŽ´Ž‰ždJŠæ.B¦¤¶¾X•ÎÑ|yÒ•ÏKo ›=¥óËp?¾*/©So‚CÏ"°èÍõæŒhaýöDg•V!¥ü X†cÙå@ìIÓƒx,I;ñ?I"*-Pæ¢-tÈ—Ïзní{7³vj¡¥·9—é.¦G›r¥I}rh1;´ ‡N!±rjØÝ3Ù¿Q[í¤‡qòÁRÇ̽=¸2tÙžÉÈm6Q¬=8±Ç5bcÝ4Îú[¶û6Ì9Înawö6Æ7üåÑ€@fÓ‘fm†,4Ù3 P(óTÆ•<¨6öÁvºn^„bx¨;TÙOTþWä{ó+öŽnª½£X5°î+[wÓa=Å®¥BÎ ­+ªò¾b éÈo¸µˆ Ì«sŒ"¢ZëÁ®ã´ÅTIEL(z#7èW.¿Ãªó¯Îú]Cø èCïæW¯w;÷©(Ï]¶hÀáZ¹î]Ù9nþÀ(©ÿE{µô¸má{Z@~ˆ’l­{J'ÙAñ¦ ГkmŽh¤²·ùµ¹ä‡tž”èG‘ËždÑ$5Î|¥d@Q¾CÕ"{³ñô?P§œ‹ù~Ù\øó^Ël9¿‡ÀÞW}æ€Ê¾üZ:Ó”ÿÏN~yþr»ð¨î°è€>µèYØÜ*A)¡h×xZE'y¡AR¾Ô|¦B ˜µ÷” .æèÄ ,Õìôœ{•– 2¿h¶e#³*µ<Ðùj¨I)OÐ1ì.ÍI*‘,¡:ÂVÓF‹zq}¼äX?üd C ?)á׸&ºÃÞ€wêÇåOÉÔ³I4¦…$öܺQÉG[ Šöƒ¢u/ÖÇ‹:? ÝÙ ›R6¹}NMršÕª+¤ê¯AÂ.\ÌßkÂG ©dºÔµxÛbyEÇ%RuI ã.¸c]a¤¹Ðšt`W‚htA|‘¥ÆE.÷¤Ô2ñ[–•i¤ôÂo¦©¨¶†ÿ7‚¥ÿe±ü«œ§ÏCSË„’' ¢ÅZ·¿ÍA[*хߺ¨Œ;ì;Šœ®×óoSëD¬ð„Šòô¿A²Nö*/ƒß8AбV•bQ§>)‹Qã=Ìê°T‹}Õt*ÚgÊúL…÷'ÏC=–|Žæùtu‡±‚ynÖÅõ¹Óíþ>”ꡪ®¼”MÅÇá¨ØÕ‡‡‰XP4ÅdšŸyPÈ—¸º:úä^XÇ}©Ô¼\*¿šG×ñQßE´ó"È»M¡)%½ViË=Î4¬ŒÃ‚DY€j$q°1šúØ84B.­ÌƒÙÖÜ)ê gæ-X\#¯`x XdÛ4õQ‡egv®­ú¹®°‘Ò ¡“ 餽ѵ¾¸+±Êgæ5ëÿÕ­†„]¶3m ¹V9i½ã-eEuÒƒ^áDèš"÷+|S ªœM¤¤óÈÈÓñðcûĺ± ósÊ#ÿ(ë]¹ÚUˆ•d"«#3ÌY»¯X·eû«QP€Û¶m÷³Ñh] ‘9åÊ¡d]ᔓžGÂ…C&¼u5RvÔ ö¿š¨$ÓD§ÌšŽÓ —‹úá„)‹äW«dѳÁÁy¯òFµ¨B” fÁ2—|ìÁùÞ%Õ447ã4’9[G»•ƒ˜¼”h…ØÌåÅÉ¿òÐÑr-±0e}ºÜ"›O'ÖNcóaù¢ßÄI’öoçfÔ½cŽ—ž{žÉëèäùôô4”Ÿ.Ü â×ÏŠl_#”@-¥èý6<¦èTÙHgºŒu’¦šq;ñwWÀ>¯8ÅòÐD™Ê°yíò _R‹°z·ªÎD«mŒ€˜4$P’hG]°®š•нMÌ0“PaŠ>Qé‹ ïûó_ô¨ÅÓë“ÒÿäYç®y®\صt[Ÿ¢´ø"qÓîS/9r*ˆ_è«Çû”ðþÊ•Áü]§Ÿ*xBÞQL ÿ‘äƒk˲)x¶?œ@÷Ö«¸X¡êxÊ+Ÿg½(­rºíˆ ÉÏ[j\”N*ùU>ùý&)‡¯Ýíâá·ÿ$]» endstream endobj 91 0 obj << /Type /Page /Parent 281 0 R /Resources 93 0 R /Contents 94 0 R /Annots [ 92 0 R ] /MediaBox [ 0 0 595 842 ] /CropBox [ 0 0 595 842 ] /Rotate 0 >> endobj 92 0 obj << /Dest [ 91 0 R /FitB ] /Type /Annot /Subtype /Link /Rect [ 225 220 231 228 ] /C [ 0 0 0 ] /Border [ 0 0 1 ] /H /I >> endobj 93 0 obj << /ProcSet [ /PDF /Text ] /Font << /TT4 475 0 R /TT6 268 0 R /TT8 269 0 R /TT10 270 0 R >> /ExtGState << /GS1 478 0 R >> >> endobj 94 0 obj << /Length 3315 /Filter /FlateDecode >> stream H‰”WKsÛ8¾ëWàn•h_{óÈžXّ㊔\2s`$DfV&µåTæ×o7ºA=LÊ™r•E²Ñï¯øm1ºZ,R¡ÄâÛ¨‹TDðç²"LsøŸ…qÅbñ4Šñy=ºz7Wb½£0Š€u9Â<ôcôEÞL'‚qÆr(frŒ3¹ÄÍÖŠ8LÃ(økñ5ç¤e*ÊÅ83a‘¨\,n@âX–6a.Ť Æ&LeM?ß‚qTþøhøÿT2qiż¥%ÿÚ'ËÄÖÛÀÞ›(,t–‡ Üy¦wMeèš|(×V$Áâûèv1R¢£´M.R-À-Æîÿ³}&dQ¨ñ»I’09¡$:Áçža ©1Y˜þ’³ÁQ­èå»Dc‡U¨s¦©tâ@?•põñ<¼‡\|‡€¿BEb&¾ü‰Õ(Ì 5þ4JT~ÛŒæ£ßŠá¸K¤2adœHzb ÇQ¨È.»QFÙÍ¥¸*Tâ£} òÐÈ ARÈ]ÕÔ"ÈMjyWíÚæù§‡¹P4J¹GºtW$Ê®Ïöqm°8òPIÔLð-+§wÁXÜßj ƒ³W³[x7>«¢(Æ$"JøAeÎ8g˜E¦• Åyú/¡6Œ'*•…PGdU¨0χ˜¤$í˜õ99†¤ÇƒšcNsƒ!ù‰j“çT_¦z—#ÔÏT€¡SŸz©Ñ½ÔNm/€Ù‡´ÈáåºÃGr‚„ð¡>t‡íy{õžèƒq¡€’I ÐoóƒŽÎ€åø3{"羟™sÏ̃¹ïgö¹gîÁÜØÝ95œÜ^â‘Qéí%e6OÁrÊlã0ùµ$*ŸÄÄ'1?MbZ€®m0…ý¬”AfJ`?+çy‡Ò7`qçM”¥o€zdSõHku(ƒ`·Ì=˜Ü»Ù©ØÅú,LÌt˜ôl)‰"^G¯ZOíÍÁbÑÃÁêí©ý¢}(Yöp({e{j¿ìËÔ_Y‘ÒØ„&â]ðžÆ~/¢\ Ü>pºtÛÉׯ®”„¥)Õ O•ÁXA·jùµ©w¢¬W‚Y–De¾¦þÄxExÚýÂZ•*¨1s°Ï×ãõ|2‚Ü4C™×O°:Ðá«´ZR–5ÜÀ”’¿¯à.±²n3ƒWX‹%Å´î'xée‹e?­[¯†µ<–õÚ:g"È]¨ŒI» Eì;‰æÈ^Ã>§‹‡Àõv»AK –|[·UKËæâ_ý÷࿟£ãE£2-gÇ3vÜ ã÷Nh¹9Ž@&W;:nðS‹éÎvßÚݸ—ð5/'Ýhk:Qó¤AÕ€Y¹¾•øX®ªfýŒ7®\–ÛÇS7TçFÄnLƒ¶{Q9‹ 7 %À y ÏN„G(v|,÷f2C~<øØ #œ¢~ÿ}:w÷Ê™ðĦÙ¸tÿÞ]Cwoíið_º›f4Ç ƒ¹¡­½ZW-ÄzÚae]ÕkWäžaWðw_wø$œa¢x°ˆª3»òª z}–˜¢³K“]·.3*SàÃm Á¾½Ë·–ÍÖ&M½æv‡’DC˜×’R¸iÖo!ðrfrþ0ÇXFÌäOŒ±ò'~&`’´ùl¬˜³ÎÌcO4[f,ɲ[·T"€å3”Öh.°»élŽ–)—Ww©Aå¦}D5d†"Scié­+ý˜J¿£SÊ (¦sVÖåÚúï`˜˜ƒÕ¨ m%@®?à>‚ÇN7fhg5®º¥äÂzDCkŽ%ÓÉ•C*Ÿ©²á–¡².",í[N C%—Ø:$40‡” m­¸óÂð—o~|D5®ÃÈí„Τ#ˆïåœL]ÕÄ®XL™Rœa?8¥Á9ÉÌ_éÓw„Dæ3·< º¸±^Eº®ÿÔ´W×®éäë$UÞªDúO=M4á& qq–ñhK京«¿h/™Ë×ê]®¿ÈûÛÙ5š +b"»N}»±®€Ñ‰L¹ŸÃ„Ý ðöä$ÎÛó9Kû'¿íˆ*®ù:ļ"Ñ=ÞÚŠÆé$Á½–?omMà7c— ã ñŸ{ÆfS×–_™¡òÎ FñÃÍ'nqZ>€-õ¦mbsWJnÄMÙ–â¤ýÔ§n)dç÷×Ü¼à Æ}bPîRFU _ª[<Ö-´§´ë™PØ÷„[†`.ä‚Gr.bmzµÌ'À¨‚yàzÈ3áþ…v‹ “M¹Ãw÷ÏuJ<Ô¼T+`ðs1t½„gcÊÄ"('nÔ¹h¦±Ë¬ûlœÏÖÁK àê(4cIAlúXºo»øä¾î‚¨ãg:u 7™DçT‚¸ûEu¾ºßïôºlƒÔ b&õÌñüFÏÝÖR ç-—êžêsIuÜRÙëŒÝ6ü†=òrw£…%ƒÀºYóp5oUd°x··ÒÍù®ËQ›rŸv‡ѸÝ2 ¤ EøÐÒ4i6âêPVÐílÛsæòl óŒüÃõõ9š#Êüw5wyЉlÅ¥›y†@óÍòèØŸÏ‡ó}¶Ã½âY÷izãz \ç“Ø´ÿ··bº‚ÑZù~WÙÓ$ÇÝR¢ÛŸa!ÓYŽ…÷¹Ü€€Ù~ÓV¼_c¤ß4䳇Iʾ»rõkˆ¿¸\¾[é<êî.c¿­¡Î ¬ä1îš»®†9†‘c¤_Ã]ÆCÇÍw@T·³/¯õr/Õ%­SAÚ7›!©$µ„.Êl–è~ŧ{AÕiù÷ù¬O±NÀó›ÑI ƒãXS\‘þ_yÕô4ÄÐ{ʼn&iº·¬”CpâÔH)T»a—ÿ?˜g?; UÑCg2Û3ö{Þd»ýÐe ²vlÏÚŽBÄ¢œvO÷œ~ù€R<á|7'v1÷2!8{›¬öÊÒh–’¶Q >UŠ4‡mFÇԛ炰ŻÎ3Â5´S6cè^dË~h{RH†$$¨Y`—ë2 ž¢,6™Q)­ iØî£³_ŸÈõPß)°%fªÁ©»ndþï:Ò䣽É›C¦ó /亄âí°ÙÕT'åLÁìúÇ{ƒ¡à¥:"¥™#ª‰Øíöâî»ÌóAé&·8ÂÕ†;-ýÀ-Õ¨øú×êÍÙ“ûŸM¤æÇ•ÇÁšp!ßO.Õ$YsN "¶ÜälCoË‚ØÃ}’¯”]gRÈìÉ{u/PÞJÀÍŽ7.ç„°ÝÜ5‘ÞrVH"à详U™+êV‘Ô6Ûö/çô«Õÿg2yé>¶tpäã83A-© _³¶bŒHV¤`—K)1t¢6=Tº½+eÂü³u 9¸Ÿ*‰t¦Ö#õ£ÌWÁŽº±-N¼°Èä{|-SŽêIêDI’¡&¼A¢øò—åRä~6)â›Û“U ðàáá}UøÓ-¿oÐkñKƒ²ˆW!cQúL޹pq‚ Ž8ߊ¼¼üÀ…ãG.œ 'aÃ9> endobj 96 0 obj << /ProcSet [ /PDF /Text ] /Font << /TT4 475 0 R /TT6 268 0 R /TT8 269 0 R /TT10 270 0 R >> /ExtGState << /GS1 478 0 R >> >> endobj 97 0 obj << /Length 5330 /Filter /FlateDecode >> stream H‰”WÛrÜÆ}߯˜ÇAŠ„×òF“Œ‹®Èfi)½Ø®–qG€ ‰¥”ïˆËß›¾bj©8µU‹¹ôtOßN÷|·úîî®4‰¹û°ªãº4køÑÀÕqYÁ¿‹³r™»O«5m>>¬¾ûa“˜‡§Õù:^¯áèý Hôyõ‹½º¹ü9:/ã̾‰’4vö):wöÿ†½7Y\Æëè·»QrÅ’‘KÖ•9wy\Ie‘1fÎ+ÍãÊšË!:ÏãÒöüù°+‹Q ÿŸÙ¼÷f32A#_ÿÉËæ¨wíóu\§Î† œ4KsU-q¨š½m¼)£»«ë»Ub‚Y•uœW¦L (šsúô«¯o¸uœâz^q±Ø)ÒÇ'μ¾Ãbr—ÿÏÝv^½ÅÉsßÚ…“8­d/É0€ œÞå¸zû ~_| ˆ¿Ï&Y›7æ—ßÖ¦]9ˆ Æ.þiU$EœË¬[mVßSç§¢¸Îâ HKªQ'Yžr¨^\›»è<©âÄÚŽ7ⵊskîù;ôdp]gÃÃá£ÑÙf „ã`šç!´füUpx0­rÊ+Þö;3­&ûöStN¡íyjúfZ1CoÓ{Àr‡Nc3)¼a”Âè?L³=lá¦ék°yœäyyŒïTâ;¯Û£ Íq/¬\¢´¿óÜDÄ÷WËÓ‹gû}Çú¦`.ËDWÍØÈðo˜v•í¢ &Ã稆¹:!æ×Hä<1¿Ë”ìúÑë94EfE8$w‹xƒUð p0³ t±ÿp…-/·^¨æ*2øÒ-Yïî/b3…»ÚUl³†îð¡œY¤|íD?$µmd¶ó­éBïÏLˆMTã) Ã…7GesË*å“( &?[ô»óîXhPq´y1y'Qïà2;GäGj¦ì›TŽNÊÕA…ì´~¯<Éè9¨¸°bf’IL=hÊìwšø]÷ï(u°Eº ™dAG7–DÙ…½úUˆÕP E>^äX7¼¤Y¡<½Ì„(M3êh<¦Ó·òOΓ9ÜÌÒÈëof£*v¯‘`5*U‰4’+8QÎ-T…yEF¨Ðþ oIU¶o:Ëá9ŒÁËéxéÂŒ]˜$,– Wp+ƒÔ—PH–gýâ.ØÊi…¥øëÎ ú‡u*¦¿è…3-£„€3+ ŸËî;žÍ7r·[ó /N(‹øtI­ 57“ñð¤&ÇÙe÷‚Ã\IX¤²UÑÝÿŽj –p;/`üF¬9*Ó\ŸƒTQ×âQL¯õË8J—Õ>']þcÃ]Oieí-æH ˜t‚§~±¬ Ô2PæZ2.••V¨Œ,D[aŽ Ë.œì€ÿò‚O¼±Ô9uRFó²œe¢£„/Å‹Îʇ¢­Ò™àVXN}ø×ÁsÓ”O4-R oÐ K^Ý*¤áÍœBîÀVî †@O°'¨eßEçh¤›+B*Œ”ß1%ÇG5ñÙ™éŽa©Ðî2ÝmýÓõ›‹F!ªó‚-ÄÞ1FÒ¸ Òðð¢X¾"pYÇf— XŒ_+VÆ…‚@…v:# n™vÌ?™Ä<¼1z³õŠ|Я°£äJR·ÐnLV&`MiøµÄ]¬dµvIøÂ{ѵ5fºuà fyd7<ÎÚ´”éôÁ:úÞKoʯ)‡õ›RcnúEÏ<*¡>5…Å™Ðkï–«_s©³æÜp½DF¨¹ÚÞ3ÊäÊÚ¼“žS:û:“¯9Ñò­œžC;±¤¶º£Ò[ÛËwQË–/㇛psyËE9¥^gNž37Ú“•Ú“•–{µQ§döÇÒ7+QMÏ (ÕN«Ê%ÊŸ})NŠÁºKbdïåó"›·ÂáE –©Ôßnj•Ù”%˜2UCž(àl¾…ݤ£Np€fÛ5Ï^° Œ% ¥+„%‡؈ôF€4 1aÄÁ«â n±c…R²ûkg‰öÖ@Û>³w1³wJÉW#„BÔ%ìÃp*ð`bgÒu½|/”Iq„vô“trœOœ}ؽ½‘\N¦¾Ÿö'Ÿ Ôýì1¡¾`FF/+oÞÝ\ÉCIvúì83 1ñû‰o'§åí´å÷As`F-„ì‚6òÖáPüZA‘üt²ØÃHœÏ•ëfÐj( ðŽR<›YÕöXaûfšž™íaTBiòñM¾5mÐJ¬_<-ØÂðñ| /{ ‘DRíËYµ_:;Ÿ^$¬uiDP(Q¼t½•¹a¹¯íWvl5ó£JNÚª‰ 1âvØQX<ë†ÙËÀ+Àö#×w904}‘Aõ¦Ö›+ËÝåÑ%zމ´Dlå̲EsvZîEžà„` Pød0w\qœVqlÏæÕ|$@ý^¨X¦Ï”0ÉTä‘€Þ¸™Í¿ðÁ†5ÜàØQüI¦¯1„dÒ¡÷z{¼±ïïy6´¡PÃ$ËÞ5ª»UÝÁî'3Æe‚'¾óSô÷£D>gÐ !Ñá³1è& Ý(‘ [ü´ ¦Ý úŒ ÍØ»i[e¯íe!fZèzµA>ªY/ÕLg\G2Z ½ËÙÉš›–¢g±–gÀû¦;xóVÄ×Âå1„9{kû>¾ä-'-˜‚c´”­zØŒÝÐþRMp–ºÐ kó7ûÐbuA¸„±")î`N™ò$>Nl›÷oYoæï1ÒN”´È3VÜA}Š´(ëHà—â´šð?øŽãÔã“ÉyˆîhÇ’Ï‚~†×‡–.z­âô¨ ¶yÓ à_áÉRwì` &³Œã̌̓»S®NŠJBúæk£SŠ¢Í–&c7)Ì®]óµñ¾4{M€Åo‹á r€Zº T™j¸1;!”YxÆðnöÇ›²–v`"¹å¸Ìc7U>Ö¹õÜйÕ(¡©C8c ¸{C*’fúN¹`ƒ‹¹9!ÁU§;Õ$Ë“©S%lmÛ€÷?;æ©ô•œ;Ú­rëÇ’Ýô…7§R3Æfðú{Gh¯û64š©¥½A”Gßq¶–ÿå¼Z–ÛF’àÝ_#!ÙÄ“äÞf4Ú¼«Xú8Pl“Ø€îTŒ÷ë·™M€’ž½àÑêîêªÊÌ42æä×öp=þ³ ¨aä ¡knæGËàÖuÙK¿ºÌK££fúùáqë+£Ae¨ˆ+ÈGLy—¼ê3¬€¤–”Kp_\‚ÓîE׃8 µJ¦[Gß`#®Ëêdך"îùܽÿ=Ï¥¾1YMX:ÆzX/P ÷F}ñF-Þ¸Q§”IŽI¶üµÁè`-‰"aFòvßîâz©6ÍAÐN_x àl'²±¸z¡«ß$¿xEZ¥Ÿo"ÂA* /½èÉXiJ9ûªù-3׸™‹'7«z‚›® *òz†›VîÔñê>¥€ ÞÁ›ŸüOá[k¢Wgm1ÜÔ‹H#‡&ZÓ2¦^?…T5ãç?ø67«jóø òÕÄE*xp°5`Ç‘pˆÈ¬ØŽ÷UJ­»ý§FÍ#þžÜBg÷ÞÀ^F'Öé|Ž1©9F´bìÀ{ðž[]«¦HÊ dDÎaá“U Y{“•'Ûpû"1Ÿ`»ï ÙY]㮑«Ý¢H™ÊÌh¯?ø»ñj éå(X¦,)Ç„"$áÊF?¶DFIÀu?Ú0r.ÇÌWGçËÂØ×UÝtpÑ ìŠbÑQ³¤Ž:Ó<†KѼ½÷{V;Añ ½¿=ܸ«ŽœV4å½(iˆEª0% µ6âÿü„ÿ3ÂB‹_‚agûØ£wÑDÂmdéçDª¢–?U;ËËjâ Í“‡:Å;Ý_y|;ßZ¡ÚdN·4º¸Òót6†*8WPQ}8 rÛúý3UÕÂq3)ªµUM«;I.ÁÜþk{˜žZ(I<‹ýë¢&7*f§Z Â« jšêF¯k¹p =P¥ ¥V{ZT¾äú¢ *¦aE´]Sˆ™ã I¾žpÞÊú¦uØ ît¿múhíà1°†WvÈ]xñÔy(žú‹gÑ|¿y”g/¤õÇMV­^ÕÑl¿ÕY‰ØíÞ7î¤]ÍÐ:~º¢H]M°†Æ¬È%õ!©*i™bžå¦Ïnû1 Õ·ídM B!§Öpøârø"ž{hDÊ~‚Æø*Mš„S%©ÒnlÇóþ]µP»3ŠeD†ùM:Eƒ:ÞÞ&ÞÞ·"vÑ|µÁÊC%­–j`h\}•Ž£R'a“'Z>wÊ¢acðÉÝ‹–£§Y››ñ'%ØÔ ;L¢ï…kžøÕìÚ®¿Ï9Z9IÓ̰ã5¬)4~6í ¢uQWnt¥¹¯á¹]¡­” É…&÷ÒôçByÂì%UÙÞûäîØØ—öï'ê±&݉Úö‰i}]—­’ËbÊ2„@^f ïIuÕg°š¦¤}D“Z× í’þl®’üA›Gj«²D‡7hãXØTP(â 7`DâøuöšÅLV²Bb Ö«bÝkðü²½{xH~O‘Z#¤<†db:ž»ñ÷…÷ß0§4™cÊ÷%ñ¬ö=l‘µÉb£êh½Î†Õ ’‘y «ÁXuhwR>’3&^ZZ;ÐxœªÂÂf` Îåý÷gØ‘ oú÷rB·ÈJ¸¯kúù9(=¯}ýÞß^êΤ;JÝ$*Ç„”Ò’štŒca9¸Æ¹- ÞÎÑg׺ N7áþsvßPÜJ9u½´öâ“ÿ²ë•¹±·“SÈB, BÖy6a‘Y,„²Y¬O4ý·Á6.!¼•㤠Om£¶-‰¶™ÚÿíTcŽD­. RM•ÖÎÎa×Ñ\Ä”2šüxñ‹ 'êêñrì+jíºQø!x„âÂNü™¯5{ÎÝ^±Âæ >ÀR¦'Z”e¬¿ñ~¶úŸ{VÑ~ý¤ê£–=‰‰)ÅÔ=-½»Ù76w‘ˆâÚMâg¹®\gŸ¶¿ñùšÐ¢cÍt°‹n{“ïmˆ{k| :ì{t}è]÷(¹Ú…¿pß;MøŽ—®Ì7û4YÙ¶¬µ© Ë¹oh‡¾¡áð<‡Ú<Š„Ö˜v¯BÊŽà[¬è›É޶ºáð}‘éž_Á·pïå*ŸÊì/è½¢ãýb"Å,”bö¼Ôa–)œJ¾û·úIBÓïQ.gš?¦¾,J'y®ZS`­D÷06»î;P\Ö_WÕ+g8”y‘û ¶#nìì÷‰+³À“Æxóp÷¿ŠÁ{òŠ—áç=,œ—3¢ :#€Ù,ãpJ‚MO`,ÚŽ+ƪº‰3zže@lv²ï½œÊ;·¨åóÓ±áÆ“éþˇÿ ™-b& endstream endobj 98 0 obj << /Type /Page /Parent 281 0 R /Resources 99 0 R /Contents 100 0 R /MediaBox [ 0 0 595 842 ] /CropBox [ 0 0 595 842 ] /Rotate 0 >> endobj 99 0 obj << /ProcSet [ /PDF /Text ] /Font << /TT4 475 0 R /TT6 268 0 R /TT8 269 0 R /TT10 270 0 R >> /ExtGState << /GS1 478 0 R >> >> endobj 100 0 obj << /Length 1641 /Filter /FlateDecode >> stream H‰”WÝoÛ6×_qÔ³¢$êcokÒ)ЭX ì¡è3¶:Yò¹Yö×ïŽw”í46°HïûîÇËÛeòf¹¬ÀÀò>iu[A†aQ·ºjð·ÖE•°Ü&Y î×É›÷7ÖÉ"ÓY†¬w -èÒcòY]]_þš.*]¨©Éu­ÒE­îègÜy(t¥³ôËòinX3 ªMÖÀ¢.ukMË+§²òR7 .ÇtQêJ ü¹O©r¸OsüÝ:!Þy¸™ø‚“¯ßz!NÑñ¾Ìt›×5zˆÊƒgy]35¹¦>¹µ‡:]~MÞ-$U«ËªÐáwï“û× u¦s:/­ÕöŒbsKëx^§°š²ÖÕÿ!åU+^äû7š8ltÞÍT@g¼Låºúí=.>`.¾â ¬¿G0|„Ï_2X%5Ö cކok¬.e×'7ÉÛPÅåKUܺÁ«*•*æ¢m%µm]qÕÞü‚…Vë oäêÝPõ5î©s×—W`™. ú¯6i¦:ªlÝ*¯Ç³;^b¹¡³ªXy! Iäu·¦9‡Éÿ%¼°–;ãaU¸a5_]uÃÎ…nü6]`‡`…?3ê°ÛE&¿‚Û§P÷f@›²¬ŽÕnçjo8$n€Ž¥¶j×û¸ôÃä&tLÇÂízÿðcT:g»Ê+ËM‹*L!*(yêgf)£†ã^0Å OiÞàa؉—åÑËrö2\ÀP6Ç@j¢a<ŒhV3J¦t2bÕ„XØ™o'D‰¢ Y>Óïâö1mq+úfˆ&ŠØ9Y9Îd¥ü‰ç‚Äœ 5 ößÜ öc‡Ž¯´ 5‰Tµ™£^kÊ·¤›6‡tÎ7+´’ïûpzG6a\£-üQiZð\X]£2Æ)n°ba7öHê¼È¸ Ä5«‹Ù3!{/+»lñß©¡råÑ0£—y£ƒ»Ùð“õŸ1C¦Š¢±F&K…!¸¸~ùé߯'¾;Ÿ@ˆ[Þ~õwr®·;>ë9ó§³ èW7_:þŽ0¦ÈíéQ‹'m[¡ ÃõS?mÆÃzÃ8Q ÖÊÿyèx±º)¶TýCè—Rá;ò­ uY+î:䉾;/„Žº¨T‘å1mÂS…–`2åΆÁ_1ž¹ž£‰Ôueìé<Ljæ¦)‚×ía fØ‹&Dñ„«fÁ=¬ÞDød` €T¨xè¡HTdÄ­4n¡×ÃÊMîÖ1¤â;|=AÇêQ Åóâ3J;ì¡Nc\ –'afq³µ¯<ŽÅ ±Òíhi>Î ½å$`ÙžQœ|Y]Mm¥äJ§§0öÒM“ƒ‘ï gi5’“µ%G&:Ânˆ~ÃNÔ„[ah:qÄ#áTI8ðÀ·ÁðmŽ.1Ö‡à Ÿ¼ç2@TÁƒþåäk¡†`"Ù8ôOgÞä•”“)¤œVÞõ!‰„¦Tàô?-ÅÊÈè$füµò{:!:&R³°§ÝÄŸ(›² ]Ù¢W+NZ«VÀŠ7,'ŠÝDÿŠÁ¿@ŽÎGÑÂé,ƒ6ïWX0ñ®˜.º@Dù³Óh"űÿ«ØÿgA,穨œùQ¨1"T¥îØ&8dsï¿[&ÿ Wâßû endstream endobj 101 0 obj << /Type /Page /Parent 281 0 R /Resources 102 0 R /Contents 103 0 R /MediaBox [ 0 0 595 842 ] /CropBox [ 0 0 595 842 ] /Rotate 0 >> endobj 102 0 obj << /ProcSet [ /PDF /Text ] /Font << /F4 272 0 R /TT4 475 0 R /TT6 268 0 R /TT8 269 0 R /TT10 270 0 R >> /ExtGState << /GS1 478 0 R >> >> endobj 103 0 obj << /Length 3925 /Filter /FlateDecode >> stream H‰œWÉrÜ8½ó+pd9,6v€sk[v‡=V·£]>9| J”TݬedÊŽù™ùày‰¬r•z ‡UD"‘ëËDâŲúa¹´L°åmÕ6­eÿ‡këñ×5ÊrÅ–›Š‡Í‡»ê‡Ÿ>v÷¥ºà ç8ºªèƒ˜¾UŸêË7/Y\ØFÕW !WY\¸zEvûž©Æ6|ñyù–4û¨‚œàž]8Ý´Fx¶¼„ ÆØ\–Ô¯ÙËÝâB7¶ÞÆŸÛÅ…Án">,$þnº´¹êÙ‡12té·ßôisÌ6$ï5oZé<„òà™ÔÙ5áȵú}w×3¿XþV½ZV‚­YeÛF{f%ƒ’]„¿}u{~ÃñF]Ó˜ƒ# }Ÿ8s~'ªÑ®±e+ØvÎZqòÜS{ÉaÑHŸö„"8pz7âêןðñ¹ø Àß7&8»bŸ>svS9`†À(aø¦2Â4:­†êCõ" ì!‘B7\‘ñ+YëÆ$ ‡ìò”]ljÀ•ìÍÕ‚ 3õûw¯ò竟— ÏññãBpÛèzùæ—ŸÙÂqXYg&€”]—¯ÞTqv¡Á¥=%k“¶†€mkÁ^ÛFBtµßqgVݘ¾v[vÙ{vß5q™ö»»úÐu³P,› q}¾À­GÉèY\d2Ô 3¯gG5ˆJöTÉ>T2ª;-¶acþŽáoØÜ݆ð¨¸êXØé)T¢Ù´»ïb‘wÃÐÏYù6pQÃ¥üû¸]‡í.‰YoïØõãÈÖÛ›~ßãÏvdû$n8û v®;Z8Þw#»é»}[´à^/Șñ>gP4BëYs`tëb`Æûžåà˜ú*˜4î"¢Á¶ü&ÃÁÐE†q½Û6Œ-(Ý÷ÁjS÷,Œ¬K®˜è H}ÚÊÁ‰±ûJHfEçÝC…Y~\åø›šndMqµþJ&W×ÙtÁ¬ ~{?u$ôÁä$çCH—Ï&”ò%Ž9»HcÐu˜_w1gÏÙnÛGG#a{¸Î§’Ap @@‘¤ô÷ÿzŒôñ9Ë6"û$-}¡é{pWYÄ 0û óë¡ÈN`M§&ñ}öŽK££¿£™y½ów×Eàt¸Œ•ÑQ‡ $»vCvú쌩}Ôu_NÎÌaV¢Þîb‰ 9»˜êóMv#÷}Ô´N ÂÎ=1À¬@dDð¶ú•ŠX„"¦Àí Ç\\ã¬Ö²¤-»îQoÛǬ庙 åªñ¨ú2°²ÄýÐçOt)*« 'ùó¿QÁW¸¤%uãc7œ,!ãRÀN$/¤å}û“¹£b†”ì©SÒñSªôqèF€“hì5ÍU6ÃiW ¹+€{Ü”$ôÚý}û>í}E™O)û3­{VYÞ¤ŽœBm¦P uéÒ:z 9«ø¯ÿ“(s&¶íG B‚ ¬Ó½ëAÎjV§šÕ±f!'AJ$H%é}ºãÀ7ö7t~ÇòI¬¬¿~¸ú×ùt5ád\÷IÈ?N–>MÞï'¼³/?>g‡„÷Ï1ï òAÕpHûxp%ÍL’s“þM£J‹D¬Ç¡?Â{7Ž]:qß—®›ÇaWŒ~˜2f§ áfCãëü²ŸPæCJ'Ã̉XQ¡gf–…dB?ómºQÎÛ̲¾{L\º|ìĬ'Tàýž¾û'¾hT•BcVÅ%ÆÕJaÔµÂ2#iÈÌâ”×ìB L[šÞÏÂÀúzÊ$øÒXFŸJÑÜê£9×X'¦ÇW4€Â•3ŽÔ”Î×HÝ)s¥Á”ÜJf4:k›JZÆE¡H ×Öif”l fø²h¨¢e«ªP8|kY [Ý8åXV‘×8 |ãíD‘„Þy9iÈ”lCPl<òbU]‡(~<©1G0À9*’yðRÄð„CæP9aÌyõÛÝuzÜ¥â€6°D»Yü´ƒ-Ίö(_9Ù^ÖÅ»B‰îg9:YÅ?­ñÀq…ˆÐÖy9iÈ”lCPl<òâ|ü´BïçztOgœ?Œßä(^9êÌÊ»ƒXþÚov#UZµ!çÛAJ“Â-©øQE•–ªiÛ {› r1‡ÛB¡÷q 8C%ë=¥n[×Θ2 œPf¶NG†êöY¥P^Ê·3ep áÊ” ‡£™iSÊ™qž¬îøPÐw¯J5N T=Ç` L(öpE_}Yáz¢áÎÁcoÚ†‹ø¦¬_m¿®vÛMÁŒ–%5…‘ô!ÂñÝvõ†®«ÛnÕŸlh©…UsÓâ*Õ@‡›@Á£t_%föÆãù£Z<Çz•õªðB"—™ÒŠÏ(@ÑR ¾Yêj& a˜„s‰–² ç9uN𞯰(-lÜ<.±l&Ú[;S.%Iஃ⡘w£ iê! è”ZÁoET™}¦L:p££Ì¦5*SQeŠð艂 €« ŠŽ´¦ +ÀßJö+ (nf …LÈdz‰GNœo¾m´—Š)„ruÔjAÌt5@c*3{œ¥ÛVjÃ…ƒEQèÖ4-.\*P)覥fÙpKñF£ ¢ÓA)%‰î´(ðàeŠwØðÝ©P¡·5HaK’ ƒâì´E})Ô ƒ¹W•ÆEÏyH1¸à¼è ±* Œòa55ˆãCQ›A“ îÎ[4eê,¸‚yʶèQŸDõ[dK9ÀÀ›r^‚‹0ÁW«Åâʾ;6š;ö“ Ø?svSä íZ‰Ä*ꨑ [Ì…­†¤´|Š'ci ^;äuSÑå¤Ë:ôiHqJÒYâѸ”½œsÌh3§¤SÁtƒ¾b€ÑI”p8&ßITá)¢ŽOÅ(Ðm!DsƒU2€ž)!Ͳ”t”Š 4C„ĉ9WáBê¾Ãw§‚B js¥€-åLTá)¢ŽOQ'ûv9 \Ê9OMšÈ7çÔ*`Eñè²ÿ°Ð4çã…Ðç)óý©;¤Œ0˜ÛZ1Ÿ’2%Ï@š&=3MIšnJ9Ÿ’ÈqQ†$ÕBƒž†¤¼ž†¤Â‘f t>¯&ù™’-ÈCV¶ðȇ'f$œä¾¥wT¹Çïͦ» =ƒ‘âÆ F«~½'…ŽæC×öNCM¦„aõh -ÊÙÙx41tÙú9% @’^ ¥âœFCUz6ÕÌÕIOnBRaB”BT·ê4—€0qplC7::õ'ëðCÃü+ÈŤ%Ñ45z­¤Ëáü˜ú=fgï"ºdèÓ³&Rò«GãrÃE0­qøpï .äozá ‚ÿÓÃ(­g£Ì‘Þ=EB^O:2%[QžVÉÊ#?žz… •ð¹9~½Û­º!뜾Œ._8c¼RÒÞáS‹ Ð?ÕJ¤§P¤”ÊO>–u‰B¡¤8 )ŽEG‰t©îÌ‘«?KÈëIG¦d+Ê#,YyäÇÓo(”Í mã9ìþã7Ôÿ)¯‚åÆmzïWðHujÕ¦$J>vv»3{Èô·{fc&ÖŒ"¹1½™ü}H€’½»Éæ"‰€À#›mÛ½‹)ØóSðÌS©uÓ,©"Ke‹s[-gxsEµÙ`抅AÓuX²Y”nj–Ê2Ùàõª·¹¢jqÛBgð¾S΋“´äÉÛ§ÜßßËd©µª³ñr5s†Ì#T(1kgΨ,Ý0–œQÕȦõÌUÕ–]3s†ŒgÎÈÌYƒŒg2#^ˆñòj¯p­¬©Ÿ£L¦ìÇ'ݺ‚© jØp¹ÖOn<­"ž2§Æ2ËûÓ©ŸFÎò™ óŸÁÎWžRmæq"Ï0TYC™md°ó¥B$˜²Ï6dF¼ âåÕ>^¿V˜GvwÖWÀn ræ’,§à‡—Dàùþ#šöûo-j ·Û9Mg²™x‡µ ‡uµàYHDl1®×Äò®6t?Ø.¬ S,­Ut!\³9aY*Ëd{׫¢A ýûn·!w÷¸Ç—h"ªñ+6](+K¨.›Ø§‡˜ÖkÎîîú² Žg€ù©/V™ýp~òjS¦úœÞÅ ]£>iè=q}S6ÚÈÍV1ê&ML{?ÄÈPcÃÆ/\°Ð¨RG×Úä_r«Ën%¯ 9¢*V]~U:wÌÀˆ#o´úèïãÄŸòó¤¦{õGaºr£ÿ,6>%OLrð°õF0‚aÃ.Ôí¶ ¨ò68£4rM8NÁ§E£Ó% ¨SõVÒߊ;î)ó&ÑŒF ÍM²p‹&è¬ö 7;ÕŸ°ß²ÒÊÊC—Æ.€U°ïÃKBì´ Tø ‘(@^>!%ZÂÁ«Ÿ?üU¬p%Õ7j6‡âS·ž_ бØòêÃàXƒ(Ž€B»q/ŸPŽúX™5ª •™vÙð.›ºK»ü'ê&Ï{¨¨ò(Z¥tÂbŠ"öYD ·²ŠÜkؽî¥ßâd£ùÅó2Kx–*o¹»@¿Ý9L ²-Á+n CéÅ‚r¨Ó޵¿WazðØ?Ϩç¢Ë» ‡zVœvիݯœì[Nvÿ ! ’Ñ7'zo zMǸ_-ÉÐ&o§±ŒÓññ%GÙ~𺷕õ<!íÃèäsg6ù[FÎ0r¼(âa K”„I¹» ;þÀ/Tƒp1…Ûès±Ö¬u„K\¤>6a\®òp"8k͉Ú\sÑ 6’ÔRq;YB>D!²-Ï!öŠUŸ“!V%%:†AªÏ±`è¿zõN/sÅs)±àÁ‰…ü¾Œså-‰B¦¸¼ÎªMÓrÝq„Žî¹@[«G‰˜S£OSêÈ™$t,#¢¼ižòîƒêGI-üÏ „z…µµHĈÑB1ÉóÒ$žN8PÃ;8A%yð?©&B'ºžáÌB>œ.“®æb´ Á†2Õ\;ÄZŽz@«Õ†Uu)È`¿àéúžnµâ?èaËñ­µçw4àxÀ/ÖÌëú¸.éØvÎ’ žð‹5ˆô2ÍèŒÞ÷$LO<ϯóÅZq3“¾ ßg²5ŽÕÞàÝ~É ãO†Ìý+lJ¹Òý?YÆ endstream endobj 104 0 obj << /Type /Page /Parent 281 0 R /Resources 105 0 R /Contents 106 0 R /MediaBox [ 0 0 595 842 ] /CropBox [ 0 0 595 842 ] /Rotate 0 >> endobj 105 0 obj << /ProcSet [ /PDF /Text ] /Font << /TT4 475 0 R /TT6 268 0 R /TT8 269 0 R /TT10 270 0 R >> /ExtGState << /GS1 478 0 R >> >> endobj 106 0 obj << /Length 2592 /Filter /FlateDecode >> stream H‰¤WÛrãF}×WôcsËfx¿/ê°.T?ûRÖaQÁ¦E”ªÕý"²“w‹ï~¼‰ÕÝãâ2 £¶nø‚‹ž¿é~ºúWpY„©¾â$,õcpYê þ {£Ò°£àÕÏxrE'ƒ 2Ž*uYfaÇ•Zý‚”R¾¬$ +­®†à2 ÝÓãsp™Ã,> üß7<¹1êf¤ ?ͽáÉQt`ë³(¬“² ápkY’‰iq‰¦éesgT¬¾,>®±jÕ¢¨Ã¬RE¢À€D]Úÿ³øüòD… Žgyæ³™<ÉñýÌž—g蘬 ‹¯™²:Ø™µ8»ïµ968“Šçâ43àü,áê—áåg¸‹/°ð÷¤âH]«ßþˆÔvQfŒ (~¿Èã<Ìø«[Ü,>XÃr{‘qbåÁƒ!œW C¯µ¢kÍÊ:#Ä‚PÉaÃQ¬×7WA®o%Ù+1’-@Àq1ó 7ãð€8Î4@òêVµUkÕôªÙï»vCßÍØ½2ýØŽ À}Ü5£jïƒK@®÷‘WX#2Æá@)á€k5†x½1üq Ò°Ör’QW]Ü2ò*†Ê“c¬"¸µ0βÂEHÌ®ŒŠ˜ƒƒ¨×h`‰ñŠ͆>ÆöØŒfkÇÖh¤Ó<Ö×¼‡Wc²x j°ugzs$3ØÜ/uƒü4 O¢ÁÈsMÏ#äBÐ’käÁ Y£ zèäÙ;|Ê©öC ë/è?¸›Sý¶ú{«fo¥%{‹ÎHH%é)ÙØ VL­› ÒÚ6c³niȨqPâ}p¾–­ ˜ꇭ+ù ¨ö+$?¼Xp¤ ‰Ûv{­ù4t;¯iyF¾GÃÊam÷y!óÐÈ !èUä¸{¼%ß51IžqÄ€}£ ¸g\ öñ’=ªˆê¬¯ÞX:Ç9Á»(䘀*9ë Úè³3ˆY Õ¬å‡×F"÷ð(ÅÐÁµJ^’56u‡– äŸÌ_!,Áív%ýÂòUž¬cQ «°;¶2ÍÙ¥|9õtªÈƒü 1pR`/OîUâ«÷ÓLÃOA澑c†Á3\Hö³¸â§ÛòoP(Òf Èý^}›ºç•H6í$öÊ "À­$*YgQ l°Ãd|‡¹ÓÝ{µB‰gsB]žó¨‚tÆU—-ð’­: ÛóéŸ÷€~òçÃw ¾†J•fü\UmâÁqYˆAÝv~¥ÒkYÚ\½´¨—}Ù±…¾=SÏG|Bp–~¬š~+—fYäb›ÉØŒWs½‹¢­™â±Ô±éÚ­Ú †Ýq#]¬ìêGó—€^PsrÀ·×Ç)G¡Œç‰à^Iâx/çÇæØ´]³îŒ[>/!ESÂ-ѱx­sÕ6·ÕÖGeΨlº¹4iÎ6¦¸(>ÿR·P@o‘&^·P¸n¡˜º…T-Ú†B»nûÓå;úèÂ,óûi4ëŠsÚÒšP‚êRfwÌÊ*Ë.üÞ!;éJØ=목{¨\÷Í»‡ºÿè릇¢ãm’n¢´ÝD¡å쩛ȴSï)S¼4Ê](…l'Ïœ’'hDg–Ä› öNÇÂÖJp“ZÂ:ù!!(åÚ–Rm+¸(ÚÒVLð<-´¥°´eÉïèt|ÛŸHéù,óR‘e+xvgÎçš)ºr.Ï(æs‰Þ©c+Ëi÷è㞇@7:ß³Ä oz9 ½;HÈlÁ–“\(ŽÍÙ±‰¤túäl/!Ãd‡G]½º8•ï$K˜è¿z¼³é|PÃ.'wØ«z5ú]R’3@y7f3­êW¤«ß5+aÇÄ 6ký{À55V3Ð<‹«.H£rDY^ü±á¹j"ýxõ°šfJÁ*Æ(©éb—7ŽªÊ U%+]"ê$¡ì wÆE¸â·ÖêiëIHË¿Ž|ˆm‰.CZ=ƒÏ þ©»±sfÂPTqF~÷™l#§6ôé§y½×\žßŧŒæ­$Ìw~þJåH^$A‰Èz¯Q¼~`5å›ôan™Ü.?XìÃyšAYãŠKçyÃkP“¸"IÔø¤Ú:Çf²ÐVjWVSWVS®Ó>5Ké0M[ 4¾¸— æÆ;CÖ¤ú BJ}í’;¼ÚäG5#åš¡¹þRµts¼Ì8ÜPòá|PÄ ô]ÌÅqÜYpX$ÃóØš•²ÍØ qÈ8˜£ã:²ûÀUÙMÅùó å~teßgM ŒÚ;&ÖrA?PyïdâÓº foFhÊŒ½‰4Èçï1oöw>Wy#ßâ•üg–P÷à Mî¹sE%öœ'Ñ.ÛžzX#HÇ]+™×[#]oˆv€æÝ±åݵÄBÍKïÂĬ4*Ù"ˆ‚.utlN-—žvvìšÉquelûƒ9Ϥ£"%§€UÔ-ŒB>{v°ãz1^ÆpÊœöÍGX¿Õè·gš®QÄï!±/]èI‹º6¼·qUÃÄéoHÖÜË̱3TȈ;!º·ÄÊfãÂ'B­=¶Vè™ùõÜüÛ¨õ|á†ÑÔópËÏ‘LKØ®Ú1Á“’˜à'¾ûÝ|þâ(!¦!k³k-vÆŒj’,/"†’L<œdY¡Ô/جhUCöÄrÔ–Ý@›$›ÔúîË#”6Ñsž—(“؉íÆÊ´í[ññs²’…QF|žŸHË ¦Ç'0QR>‘„X> endobj 108 0 obj << /ProcSet [ /PDF /Text ] /Font << /TT4 475 0 R /TT6 268 0 R /TT8 269 0 R /TT10 270 0 R >> /ExtGState << /GS1 478 0 R >> >> endobj 109 0 obj << /Length 4345 /Filter /FlateDecode >> stream H‰Ì—KsÛFÇïüsD0/`°7™ReK±Ëâ&[•ʱ`‰.ŠTY”ýöÛ3Ý3iØ»ï–Ë"€?æþõk^m?l6µbóaÑ–m-*ø.š¶¬ümJ]WZlU?Ý/~x}+ÅýóbU•UCß/ü…éËâ÷âòzýf¹ªK]Ü,¥*›ây¹jŠ÷þÏ᩺¬ËjùÇæg¿²Ã•a¢FVN¬S¶V:±¹„‰„ù”)]!Ö‡åÊ”u±ÇŸË••~Z*øûØ‘ø¾·G|¡£ßþ±'ñ÷@_oªR7ÚÂÂâáË”ŠŸ&­ÿ´âmwß Y-7W›…[±¨ÛÒ8Q+_ Ä*üýÔ/>ðBS•Ê?7Ö–öL±ÊúëÌ^ÁeLSÖÿ‰övÙqs}°,•#MjïAgWѱ޽†‹ŸÆGxð ˜Z܈ßÿ¨ÄÝ¢§ñÞ¨`ã +mièn·¸]¼ n ¯’Ò”• Sây²1¥%OxA x›ÊZô\-.–ª-mqµ„7d!–M[)nß^­¯¼^_,eU—¦Ø,aïÅõ›_nƒUb¥KY©Ú{NU:[54_)ÁŸz±t¦.Uq»~½Îð1W;ðb3Ø©¢Jé£ÍϼY®¤ƒ>øÚb !æ`c¢{zÚmßãMwÜö¢ß·Ç-U(ž>ù`‚8ü¼½ëãú…‘ uû»ŽÞº4Óaa¼` IËUÇnO¯ôâxLJ^¤7qg»ÝáËÒ ·šm±¿§öÛ¹·tõ6®´ ou´%úéqªôébÍ/KiLWcN 1 &ÿ›ØÀ…±øŒC‘NÆIØÙz×=?‹_ºG؆lµi!‹ŒÕ\_†­@Vh¬YÛÆ“¬|H¬Â_Œ»Y\ËDQ5 <| jãJg¸±a[*ª¦ªÏFûøãWžWO›V¤IYºé¶2ê`⌊Q;Ú–u‹Oàòk7†âs„䃪 !qžñVxO*åSÅ9+ ´Œ'V¶ð_¸ií 1ÜPd¹åÇFn¨òܘ•ITÁÆ ·¼š&Ϊ7OÃZ!ëÔµÈí•O˜Ù!H°ƒáKHã;"ˆ]ü…O>Õ¶@æÁ±>8S8Žäã R*.EN~l„ƒ*‡Y9‰•cáäÕÁÄ•c[3,ä©Y–fÇQSÅ{¼¿¶tÙ‹‹—»í¢ YOH¥À2XhÆ–¡Ø²§Ø2„¯ª}o=[f’«v¦L¡ÈâËøPåñ1+'Q±ô²â`کȱ‡®Ü0°L ,jïÖB€ëÚ›]ûÒsß§ÀiÈò­ª|¶ã,¯Î­náÀÅ5Îæù‘drY‹3«&M³gÔÁ¼•³9lOU³EhÝQŸƒz²íB2ƒ|uµëéòHúáéJÓ3 >À Zv‡ûX²þëBÕ|­Néq,Y?\A"Ë5?6‚E•'ˬœDÃöŒ:˜8£rhk0äYaS89BûÐT¶8ŠõÅ%Ô 0ÕhßTÌTÚŽLÝàñ/ojYSçÇFS£Ê›šY™D}*ISSçÕ4qVåLmáãÎZ‚Ééf}@×VÅSè•©§îúý3öÐÛÏý© ðæ2ÓZ9é¦ÏpèQ‡fkUJ® ‘Å‘q Êã`V&QžJÌG^MgUØÉÖ³á(ž^Žýx×A½¿½¥1KEÆœ•˜Ø›Ag¡gz³q2²Ð0°5EI~lD‚*„YE˜ƒ'’ã´Y‘ãÖ¬Ýl‘¹ÜÞoÝN\ïc5éÄ<ÝÄûøçró+|ŸCñˆåå:–1ª âGÏKxK=•«~ìð«+íPÂËßñ±ÈjW²)0h,ßìȈ7ˆ<Ýüª¤5§24¥›WÓ¼Y•ã+á˜BMÄÿåZ’ˆô¬ÙßÙÚÕ3ÙTfúU—–í#PdÑæÇF¶¨òp™•“Xñ}D^LœQ9ºÐK·jL÷¦‹€âoH Qê¿CÄ–~¼¬|*ž‹ÖqË/·9Ej~l„Š*•Y9‰’ïXòê`âŒÊ@5­ø¿‚úÕØ•ÒU³±«&±[©²a;!YÌù±3ªØº.à°qónî\a”o–Y››‰Å릔\{B"k÷üØhzTyë3+“XŸÊÜ@^MgU€ÿVCM:\Œíßxûß¾‹!B&o|Ôñ&wb£öÁX[*®} ‘5z~l4:ª¼Ñ™•I4§¢35z^MgUÎèZÃþbžz ¶…¬ß£MwâjžˆßÀ±}FTéæsÿŒ­}*¢,F]†,F@T ¤ösÆèRs…žDH~l‚*„Y™Du*)S y5MœU9 J¾a´) †Áëó3ÕJúT |QÙAR:T á~H><ÅŠÃÕ| ÙG5.¬t|™V-ýW34QdiæÇFš¨ò4™•£È¢ÌH§)¿bÕòÙZòSGÕâ¢HTUˆ‹-Äú°‹õd®ÊèZ{ŒS$²ÔÕ†„½q,‚ƢȎŒ$‚ȃȯš4É÷¼:˜7£2@të¼ígjKàQ%M¤a Ò &6zôŒ¯Ð›˜!à®c&4p„JZzè *ÕŽPU0)Û  ÈÂÊ´Påq1+'Qñ½@^LœQ9^®º±,ýÔ£U¡Ó½ æ×ž‹¶Ã"å K\Â}Èa²ˆcRZ“±Péð2_¨&'RÝZÿÑyD$rˆ˜±„ˆT·r5Û90ê`âŒÊ!jÀ’©sø{O`ÄC»„³d³>ܨP‰|«ÐïúóG¾ì\èÙK‰AYò@u¥`™ÏŽ"I;öžÇ„"‹)?6bB•ÇĬœDÃöŒ:˜8£r˜j°ØY?aS)r˜úâ9FcUI5ÆQp¸¶k«ÍÈâ`ÍŠ«ù$²ÏG•·8³2‰²äã"+¦is"gnë_DsË=Øøö©§*¤~xÆûIñWyÛXU†?KŽºh^rå5–@vdDÞþùUQ³í©®LíŸWã¼y•# Q]żtƒuóHq¸f}zHÖÅ%œ$ÁÈuÝð&ö©eÔOù½kÖÊ(²fÎvF•74³2‰Í©Ä)Š’Žm’C~,’è!6†Ýƒ7ýûrf(ZžW]´¹ì®ýðc5†3L9}¾³ÉÊcÇ]í±[<†úzʼnMß÷Á“at‚O¼óé‘€L†P¦=We2Å2ÁÎâBiÂjÙ7—I?9òþ}Òùw3P-•1¯§ÝûÛE/Xÿ=K¯h© 6ì®Ûж=@¹™A·æLU›!6kïZX‡ÍÚ´Z× È-ýò¥úõ5Çh.ûŽºÌSvÐì~9ÏÎ\‹W ðû1¤×Å߯š#O Ó„š#H˜+„BhçlŽ­6(r©zxuðr“â–BÝç @z³é¾ûQßù³ŒxH4¹n™—;ÙœÒÉR2m¥OŒt1é¡>Ò»ò7 ‡µ;¡?{®úcŠýÆ¥ >û³iYؤÈ_ßÓ£n6·Ÿï3h—%ÎËGÖDyõ^ÏoûO55á%“ºàÝÆeÎùi¥"DM‡@¨Âž«*˜b`ga)bÏ*lZ6)RA'O_7n(*ØÄK>¨nrœŽY…þçÛWJ‰vûèJi½>½zº¯ ê!†Üž«!gŠCvè8â&,ËZÅ»sôkU>Æ\>z)©®—¢‡Õu«‚ï¾4ü÷'‘Ö¹Ÿµî¿ì©ù£i%$©_ é!€ŸÌ s¦ÚÉ˱wÖ.eçYŽM˺&EzÜtKuÿã¢Åd–Êq{½ÿ‡ç(רÃF&âÊ„Ÿ=,ô ¡ {®Ê`Šm€ lq¡·iµ°A‘Žv y›…Byq4±£Ü_¿cÀm¶otë«®<݃I_™ôl2“^LFßOéŠ D®î¶>•/˜S ¡H{®ŠdŠE‚ t¸âÛ´ZØ @¤›"i¯ï¶®ˆ ,òÏý;ʽ&; ì*ðíÖç+M³ûáúõ,½YH½Y:!ó=ödzÌzÙ§[êe^NËþAm¨ÔV;µAÔvã7:ˆ'·m` Áºµçª[¦Ø-ع@ šM«… ŠÜŽš‡¢W·íÈn?qçIÕ)§_GyšÓµ×nNÏ>é˜ï:ât½ï>ñ —{ô ƒŽùƒxM_pû׆©ÛèÄÃèÖWYGFÔDöÀ\±'ÚC;OXV˾ù|uôd¾t#•%ªÄž¯AñûºêÃV«ž\­Ê¡Q-LZ2f©¢q£š» qKq|¶cÓ²ªI‘ŸÔ-´uj…’ZÃCjÑ)øá–3ŠŽ±}ºŽ–€ð)F¿Ñª§€ûUÀcΆݞ«‘gŠƒvf§¥¦=Çߦº°MQüiÉÞ¿ñhûISa©8ËÛN]LØhüRðÝ*øýxð¨gƒoÏÕà3ÅÁ; –¢ó|›–…MЂߥÿšE ~Žøôñ®Ù½P¥/‘ž8Òž$ýÛ¹²ºð¸ªàa¤í¹i¦8Ò`gýR ž#mÓ²°IQ¤©Q⪠té‘Ⱦ҉Ò5ùpÍ=õdô0z×O÷µ]7úãdaÕG¹.¤ÿX`-ØsÕSlì¬*0в䛃O-å8¾ñŒ×?ä`/õwÌõ÷ó«~Òßs.2:ñ¡Ñ2r™.ôhV©£,7=+žîKHcfТ9S%fˆÚ»æp½¶iµ®A‘ËÖ%m›õbþ{Ÿî9»ó}6ÊDŸn›(Üqݹö0ÀÍFÛž«áfŠã v.Ðã´±iµ°AAÀljìp¼ëñù$gÕízœå\Êo?½àïç¿îËÙÅ×ć’­G˜›èi°‹Õk?åg³M0C"ì™âa’f h»*ë`¡¶á²ª‚šŸP¿ò“¾ò”7lã>“†ËízÚý–´øæÛžbØœ(Ü‘>]æìÆëᓾcaj» 㣂1æÏTÀ )°gІPØUYx®ÂÌèg‹Š`ùI˜m<‰±£@{YyL†[i,,Ð^xþ3jÉ— endstream endobj 110 0 obj << /Type /Page /Parent 283 0 R /Resources 113 0 R /Contents 114 0 R /Annots [ 111 0 R 112 0 R ] /MediaBox [ 0 0 595 842 ] /CropBox [ 0 0 595 842 ] /Rotate 0 >> endobj 111 0 obj << /Dest [ 181 0 R /FitB ] /Type /Annot /Subtype /Link /Rect [ 409 385 433 397 ] /C [ 0 0 0 ] /Border [ 0 0 1 ] /H /I >> endobj 112 0 obj << /Dest [ 196 0 R /FitB ] /Type /Annot /Subtype /Link /Rect [ 125 373 132 385 ] /C [ 0 0 0 ] /Border [ 0 0 1 ] /H /I >> endobj 113 0 obj << /ProcSet [ /PDF /Text ] /Font << /TT4 475 0 R /TT6 268 0 R /TT8 269 0 R /TT10 270 0 R >> /ExtGState << /GS1 478 0 R >> >> endobj 114 0 obj << /Length 3588 /Filter /FlateDecode >> stream H‰œWmoÛ8þî_ÁÒa­Š/¢¤ûÖ&½"‹ö6X»{,öƒ+‰ G2¹½þûr†²lsÜÜ!ˆ%ñ!9œyæïÖ‹7ëµR¬ïuV[‘ß)ëÌVð[fÚæZ¬Ÿ¹Ÿo>¬¤xxY,ó,Ïaéݽ¸Iß&×7W¿¥K›éäS*UV&/é²LîÜϰk…Îl–§­u’+” •2¯Ä²4Y]ÈJ¬¯a#!Ä|/e²*WCº4™Mz|ܧËP|Nü>5Þµb5℆žíSKàÎ@Ú›<Ó¥.@Cî5S*¨& §ZrÛ<´BÊtýuñ~½¢ [g¦V Ð@‰¥ÿ}n÷ØÌ¨R‚3H› äEWiSgZyHÂöh3<#íDGJ E  GîqˆŠÒ[š|NO=Ñ£Îøù4ÀK7þHU•©D|ü¼^À%“@Œ"YÊ%$ Ž,™Ÿ°UT™T-²ÌÄ×råùa$XºUqtÚ8Šrþ=uÝn¿µâcÛlÄû«â_ÐdTI“‚­“o-ô&Pä$4'â)]Ãê†]Go&}DÕžº4%Ë‘;ÐM•uŠ34!ÈÒ_hB”§‰‘<š-ü :Û8‚r4ÙHEš.0ò)˜Ÿ¬ýÒc•½Ð•y‚Ô A¥ñ§Ž„ KP|m Qž Fò¶C`ÐÙÆ”#¨Ð@gn¦8R.ŒˆªÊ¥gD­¶Ýî’Ú]'›®oÆÖOE«„Áú¤¯šÈ3GäéÐSWê2uú„:«³œkd©‹¯ Ô!ÊSÇH&Pe|hEÁiÛÈñf`Fu–ÿ.ÄØíã0!^v¯ ©\»"u‘sÂK³9Z<Ʋ]Hñ ÏI\*aù¡dsG§}£(ÇŠ‚Çåâß`THRÔ.„&À7Ó?RU âmÿÐSòÀÔ!~â-„Ê+±wRuVœ´7,Â,Uñµ+Dy²ÉV‡ÊuÎV6Ž¢[pñ)U(N¯ æ÷fÓ ¡ÃÛîƒýj‰¦P­~BX]ƒËòíðuZ«Té˜aøBå+¾6ð…(Ï#™@{(dç|ÅÑiã(Êñ•ÎT‡èRrŠ.ƒÑõ›3¼Iþá.AexÜc0¸·Þþ&é¾AÑš¾|ùVÚ~lÆnè(ßÜ^ù láÒ¨LA J€+Fr)AƒÐs`«†{–- Sdž00–®K eÒ¸Å]åwÐDBêγZ–ªR²6Yž®¿Î˜–EV°] ‚,ÓñµiDy¦É8Õ=¸XE ¶áŠ"z…¼¤PD*¡ÌΤ.¡ÕìM(³÷e”ñÝ¢”Y~ä»jòÝ}w îæ ò£ó5ø |N4»ÝÖ7P.xOíFHJ¾|o†6Ìì‡Qì¼WÉðÍuj„Œ.Фé7 ÁA;=&4XAæ, ³iJ+ÆA4}¸òAV$·a‹mêòaC²¦c‡—ÕÕg Œ7ëµÌÄìýîhÎ@ð ó@ð„6tf4ŒvéP¤Kèw’·©v äËËp×5c ·‹ÄYäý ¾7NQ ]O÷òøfòƒâvv`&:EE‡p”à9üHv^à d (,°q•§Oñ_ÚÔ1Ø·ÏÍ6È4(3ê¹Ê õ:ßhÅõÍðé½ç^3>¶ÿ¡u¢oÛí/â{ZÁýhú£88âg48ƒü! “ãíj7¿L‹ÿîíC”eZ—zJŠM5jú6œ{vêé̳CÞ­­R5&g™REô¸‚šªâï\ès\ŽbÖR"”ÍBÌêËèáБËО³÷Du¼¤.=evÆ@ô¢1øË-³÷e”Iɦp‹Bû‡Vº›n©èWÞñÜmJ'Ù#>Åíõg±mû‡ñýµéÅ—6¸.æWˆ¨‡=]x[ÏQtý‹wi¼pùÚnÑáÇnæàN L#‹7=ô’&¯m–I-s¸œ|ñý©LF_’,„Ú¡ÿêUN½M‹'÷Û‘"ÄHèž nF[¹ :Ä­ªjuˆ[=®ÅÀŲ`¡,\m1÷ë„ކmû (ß·ÃØ¡º]˜ãнïw;,FVlðë¿% ©uEr©­³ŠTªduuëŸ÷þ¥= 1„@‰Û{óaÑ Æ÷Kˆî0™h ‰XC"ƽbr–žòÂó¬N4KÐÛúw*Gý;oPökEð׸ëêœôãR"5•’UK™}iœÒv‹_ÞN¡ÚÔô”Äw¡EÅÕÐ÷a#¯ÑmHÿ¡è¶m&ĪmÏ;`ø‚rü°sPHÀÝCÁ31XåÜ ¹^BK²‰Ï<Ö¬óíÉÔ/í"}9v±bòmò±p$2“EA©òGª³Wu.}fÞÒ­Þ¬w–ºŠÃSA TX×Ðüsÿô¥}Nw¿o};„³ )‚Aç+þÓ™õçˆÖ6«rl¿ÐO¥r[:›>”À ýÞyk±å Z'4Nv¾w ááÚ- b‚° =|ä”hU GWðÑL>aÃVÝì4ÛzJ‹Dl;¹Æ¢ü•“ƒÃU3n¤úÑ#1ä)‡§ÏøÑß=>ý°)yºHa›$Ïí+DUöäú"§1Ô¸QÅðõ£w&Å„ZJ…ñhª9˜ð á®2„²4×$ó!g5Bj„9ÔˆŸ™RY¨´*ÒÚiúrko¦à»™RµoÙm©(øÛ†7kã›ÿa0 !Á÷‚ÖmR—?hò„ßã׿”ÆÀËhMï×Üãöƒÿx~jN%¼†Fc/Íh/U£-ë<Í!¬M×Ö-í\ÊqE¸|Ü“_UéiÍz"=s'u«ô´îóRâ”Zé5Ê‹•Úb‘WiUÐ&É«ÑÅѹÖRK5Ä•×Éí*ãöš6e±£æ(Ýt ^t’>çÚñ¤àå~Å;}Ý^…¤WìÛVÊU¼`·ã„ÃèØ5ÙäÇe® õ•ŒÇôvë_d²fàç’nëÍçžNz¼¨ÿ¤–¹íõŸñ}ì?÷ä}™»’ðȈ9Dws»E?Bƒ8`âVcþh;«‰UîýÖcÕ 6ÿ½$L¸ÌÀIËË,Ž“”»Šò5BC†¹Ú*îM¨p@@„ðCžþ#Z\‚¡—ÇRŽ– *­Jz~öÔŒ£ŸŸ­Æ[sðªŸL¶@†ñÒ/…Õú…ï?UÛ°ÄÏ䦲Љù¦”‚öJ 8cœsQ]:(F)ªÌèíg ;\ŸÍW'¡˜jDD8cöúp÷…¨2PòéèÃW  -xP”À{œöὟ›¯´wBÓ6w€—5p†~0y£Å· Ç»'›>’´Vü([ºo­74Bj¸¦>)5;¯À´éˆ_d^€/+©u#©uq ŒÂÖ¯eFþ7 j0ht§côçÌ4C¸de_K–`ׂd îƒ1bÇÊ÷B)-*)Ýd!ö<›z0­W½]Ý6xÌŽÈ ›únð¿uCƒEHÝL­¡ÃP—¸)½ÂL"Ë%m˼ŠÍaÞíôñõ*¿S@öO€÷îv endstream endobj 115 0 obj << /Type /Page /Parent 283 0 R /Resources 117 0 R /Contents 118 0 R /Annots [ 116 0 R ] /MediaBox [ 0 0 595 842 ] /CropBox [ 0 0 595 842 ] /Rotate 0 >> endobj 116 0 obj << /Dest [ 178 0 R /FitB ] /Type /Annot /Subtype /Link /Rect [ 391 642 415 654 ] /C [ 0 0 0 ] /Border [ 0 0 1 ] /H /I >> endobj 117 0 obj << /ProcSet [ /PDF /Text ] /Font << /F2 271 0 R /TT4 475 0 R /TT6 268 0 R /TT8 269 0 R /TT10 270 0 R >> /ExtGState << /GS1 478 0 R >> >> endobj 118 0 obj << /Length 4656 /Filter /FlateDecode >> stream H‰¼WK“Ü6¾÷¯à‘J¹‰zçf—Sëõ”§k÷0ÉAnÑ=rÉÒdZ=¶ÿý‚ G7ÙI.[SÓ’ø €W»ÍÏ»].b±û¼©Â*üÙ—¢ ó~‹0É£Dì¾n" >6?¿½‹Åá¸ÙFaè~c^̤o›{ùúÝ͇`›‡‰|Ä*,ä1Øro~†G-’0£àÝofåWEE•b[¤a•ťؽEBˆ¥.•†¥7C°MÃ\öøøl3@ið)Pðûµ&p¯Å݈jzꯚÀ‘÷@§O£0)’ N‹Û“)ÅG‹3s4y[´ˆU°û²y³ÛÄ¢›¼ ÓRäJÀ ”ØÚß'½ùìŠ(Tf<Ͳ0[!™ÊÌ»CÆà2iæÿ²{°ˆwN¹k8UIXœZÀ¢c}| /¿Áe|à€ßD‰÷âþH4›œÆx£‚Ýdq¦ôÕmî6¯¬§WÜ8‡EÉñnSº[••è¶õãcׂ—–a ÞÒ½0ÞKÝíø#Px2 Á@§8UÔOÆA ©E{èþhB!vÁ6.aúƒ<Àâ™$ÑÇ¡oÚþ .W^­Ù×_ƒ­u~-xV/>MCAÖ,d{8Më‹¶ヶNµÃ8MóÙµ:~œäx|«,™”哲œö4wú…Ñ,ÍCõ©E{D âõÍûÛ;{vù`‹—„Òc0†HyÑ6HhZQÿyÒ4sdµ ÉØžDÀ4† 7FÝ_‚mÅï$› K| *»øøÀ#æ`ôʧ£½vÝÀÓûƒ5ëî'bÀbâ ´¥!<¸³œëDŸæ¾Ìsh4Ô}c,uMCCO/¿0=AX·†KTÈP|‰qn×Å5?êãÉPœ’¬«ª* +y7à!@À‰°^V” P FÌ“ÔPçëÀ,"õqÿÔ>"h‰ÓœÖ¬ä$av$Xd6ÈÀ=SˆZ €­ýE–¹†åaš–U›KœÛ-h0ЬÊ3I•d³ÞsQVjÍÓ%š$i˜ù¶›€hÄzã*2z°¡7ïQ¯‚l£ÄhD0ŽÃòÌnt:¬ž䆧m¹á¿¦Ô±t^îÅê)á§0ŒÚÈÔö}Ä!<‰1DRo ™à¦â1bàxß6IÈ>6ŽQl[úïÖ"¯gê"[.  †eö&î#&]‹[ƒl1ZÎý…LDÇS×\-h˜éµž6uy’T-lø«a²¬g9òFsÆ@³‘—ôqƒ[”ÉQ/;¸…™&a7?¸…™ õ3„çÈÆf• ÏNì§#9ÑiÏNtÚ“p…}(ýgaωRQt×£„?œÆ*ä§SÇ‚ u*ußÒlžmJ;¶ ¦ya÷ƒµâ¬¸L‘Ó¦“©Æõ¸:.ƒ½Æ¤¨,-ga“g檉¨ðÖ“ˆùíe[[Ðoj÷²„A‚UC0­ ù$} = WŽã\–Pj:-¡WŽëÔM¨G÷uÔç?Eªhé?L©q’Í™¸€òˆÊ7ÎÄÙ”‰Wy8Ã긷îÅ'-èšÊ¤Â¶·©ƒ‡žÕµ‡iÀ6w”T•<™¤‘°òümõ)¬³Õc%)%f”=ÔYJTsJT”•œPçÓe^fÞçøl‘ã3ÎñÊäxH^5ÍæÝà ¼ð¼'ÊÅÆ6/‹QrÍ8¹*ɧÐ| ¼BÉ>œ^añš-EUÐtoPéf*1s,ÛÀÁwáyP¾l[TÆ d25ÖÆ0 ° >Ï¿C]ƒûæM™€)ïõ¾ýŒ_í О>¸^ùÊÆÞ–#–…k S&ÝK)0ÙA‹y‘›®>õñ¬LuÆ‹‚BoÅ·\•åq¾Œ[»rÝ™RÝIÅìg]UQAF_Јº·¥À²ß”ÕïÅðé‹™WJ½?+è~—¨Ë..ààŒ<¡îÑý–¦-føµþýà<¶>/åX ®:𠩦§Ûrõm­ºû «{²4V=Õç6 :W™é´—ƒör«úÒ ÙŠÚ’‘ß´rO•2´)2lá W»g[Ú’ÓðºYa¢7&‚w£1øi’½Ù[¬tqYçÎ5Þ G,Oöb‰Ù\Q8AK®„ F²fz¶ÖC ”ñÒõƒBálŠøL°„’ îáR}ø^Ñó-AâÓÈÌc‡[ôz ›xÆ¥Ú¡>ÿ¨Uµ)@ÒϱïE ÇUÝ;ÈöOvSs_‘q3 0òÿÚ´ûªî8´Ä”k»l-™QºŽ*mJ€LÓv^¼H=ÆÊ½ª .¨•½OO{êgŸ_º’åeÞ.sÝØ¡$‚ÏÞŠÏ6#³µEËhd^Ö³Ú˜­Â›jÏíGÌ8h5_%öj Ë‚U'yCl ©ÐLÔÅ]~kpÞžIo–8Lg•£õË´IŒØbjñ¯£?%¼;*O~Öª7Ú©ŒòX~J)º$•¥7Îyi?änJùü›× ¬R8wÒÎ}GպܩRW\˜ L1S®¬±Ê”ÁçüíKV ¾$´Ñ i†.Ÿ±+w‘ºytYŸ_ø”(¢n–I{rFÜÔŠÚO´ÆÄHa@_»¯ë¹@‹ D¡¾…ð[«—'­Þ¥>Ôç…ס䎣 >ÁªÆ‘ÂÎí¡8Öælr~§Dsêd˵˜ÏçñMI¥ ¼³[Îï3¥‰ý®ýXÖ>”BŒñvìÔI‹NÊ)ÒV ìø”² d2Ë×ð1õÙNäµ­XFO¨½ú‘À¿:N%,ôsÓö…É[‡ŸõõG:0ÇXžéÁù?Eâ ˆÑõ㯡ÓjOA"©®°rÐå7FÉ8 0ýÂ=×§14}q•’õ’ͤó;âr¨»GºÙƒ…‰œÏî/.ðHäïwöÊ™›èdz;µÝ#A;9 Sœ…ÆÖ$µÅä0-„?U:´®¦2AÁ .Üq 0ª:{ކ<˜&¸Ã¦=ÔÏGãi·im€`0Y0êz)ZPEêÅP¶_<ŽV•ÒMNxäµß· -—xåwùÌ÷~7÷½Å¦¬¦¾7t‡ð*T»mN¤­)ðgQD© Ùð^»Nüî¬Ò<› `ÕÔklÔM,jÒ@i{»¤Íç[S[ëòO“w9¯êé^x@]X„ek5øy+àÌv?ØG­N3½,vEÊ¢ëuQ…8ÿ±øüþGé=¿¼m«4;œ›u)f<óÛ]ÈÑ·Óc4´Þf!?Õ¶¤-bcsUˆÒÞE ÇGa(«Tº#Ñè¦êl´•ÆÏ\ÊV4ýC Š)´ •'â> endobj 120 0 obj << /ProcSet [ /PDF /Text ] /Font << /TT4 475 0 R /TT6 268 0 R /TT8 269 0 R /TT10 270 0 R >> /ExtGState << /GS1 478 0 R >> >> endobj 121 0 obj << /Length 4574 /Filter /FlateDecode >> stream H‰œWÛrÛF}çWÌã`K„q¿8O±äMœ²7Z“ûçǼÀA9Éoì~ðöŒ\Ùbqéžžîž>§oÖ‹Wëuab³þ¼¨Ãº0ü覬â‚ÿ2L‹(5ëÇED§íâÕ«Øl‹eF,½_à *}]üboÞ]ÿ,‹0µ‚8 K{–¥½Ç¿~ïLaüºþ w®xg0TÆQe–eÖy\™õ 2ÆLm%YXYsÝË,,lÇ—ÏÁ2©¼| ølDxïÌj`…F®îщpP$ú, Ó2Í!BØœ"K -Î14{Ûl‰Ó`ýeñv½ˆMkEf•)$fIÿOnñÙ/(£0Á÷Yž‡ù™$Or¼ŸYã—ð6YED>ÄëÅ캗dp&•Èâ+è,€y)ÖÇàæ'8Œ/ øÕÄ‘ù`~ù52›E EƒÕ˜€ã‹<ÎÃLžv‹Õâ •1¨ûë8‡‡„ëxR¶\±ZS¾¸`gQ•ûæªü.íÊ=ƒ cPíS+5õ;¼Žª4Ìì;Ü?µ{-0’¶ì7VhGUÕSæä\ ~bÞ–ôχã—a–‘$­ þ‰$ŽÙì¢r•&$ŠŽu2&I&óëPTòº¬ÏW•%Ú™]U¢g(I²K;¬ªÙe/ˆ$P^y"B8„ê"pXãó‰%X½òˆ¹ê²Š.+/Š®ɲæÒkÊ(‚ò)ê*̾ bj*¯™ Ëé 9KsóÚôÇÁôŸ©ŽÒ°Žóœ ã,+FâŠëIq?!&h”Ô¶?Ê»{~fÚƒàÒ*ÏÍ…½$‰°`£èà×6XÜ™mwl’°“$9báûý~×±oÛwê8¯4 ™¬›ÐÇžÅÜïARë_]Öîœ9°Q‘É -ÆýÕŽéÅ„Ù4Cs׈š£8¡Ë!LóFaV&Eœæç×ê+Fob8Ÿ6¨àaR¸wí—§§ž¯æ“B³å+)£ûxÀGz·#3üÿ)¸ „Ž9ó!Ÿ…>ðÏ/Uü³ÔOó«•Xê#ÏZæúéÀñ˜Ž¸a’„ŽxF:‰hNzòyF:qjF ˆŸÅ9T\‘Mp»+`JÁy%8¯¡©2¥òsÁR ÅAT¨!}õ3´´·æž_îd„FTäbº~x‘ Ê Øâq¿'|ØÁm^D~>RM‘_1ò‹ùÕˆüÂ~t÷\îNtžÝÆ\/Ymµp>–b«ìÇ`™ÂÓ[ü'¿6ºOÏ6dˆµÍïA¸5QÀ m%¦%m9¥­’´åBu'Ä¥L¸>ıЇ¸ù¥Š8–ú7¿ZÇR≡+Ã3DdŽÔD‹ˆwðTEß ȇ,G•ù,ô!~©"Ÿ¥~äϯVä³Ô‡|ÏZF> ýÈ÷D,éˆB«ŽñÌ Õá9áèМÐúbŒ*ý/|Ô•åeVà K%[¹ ÊLJ×X̱5²¬é¾Õ5§3ô±Û8™™e†&l$`æåöùÿ ÎÒ>SŒ§eL¯ó5¨a‚zÀ™š^(ÀS¸Um¹œÆa÷81 ¼ý£1G‘d àð;‚+è)¡gZy"¿oUã ²nà\À·¤Õgœ“Güu˜ñ+ K~#ßÖóM%Òètòø7ddžïx:€ 'B×ìL3~›äòm¢R¹ŒSÇa”އ/Xæ¡‹ù…Â,ô’ÅüZá z¨Â³’˜‚e^¢ðD:fÜf!ŒÉ™J8N|+=BN _Èà̦*7¬ f鋞±­ÒyÛz,}áæ,‹Ôc™ˆ…/žÐŒi•Λ~Yê£Ý4Á±jòu£¬§Âj«Aé¦ïë[Ó¹g§|sâ7$3îê%,³ÏNÈèŠÉH¬×åçTø'2ñCÓmÕ’i†AÄíÝ8æ¹ÙÇmŒûïÔð^ù§PŸÔ6¼M€‚pÂ[1²W‚nJD$oš3?ÅkÕéu#}±•­úãþœß$¿…Ny;×m‡ÄÐq$º”£Ã, 8³2,P(ißõÏ.¤[ÃÃŒPμïiý!Åbc|§ðêº×§=Æ ]T"âDðt!<®Î|²¬ÞWWIGŸ~a.<6-ûÜn»^­n4|:«%è»BÞum·5çN`Êñü¾%µ¸<Ü}ÁüÃÀG*¼Ûè¬xóej?¤Ñï¡JZ]­Ë.¡™f̻ҎýDº ½l燪¨©«ÓP`w‚ c#¾zœÚ®íZ­¹ˆN]-e?$„ Øè ÑLfϧEÁÆíÁ­sœÀ£Ö¶(^Ñ0òÐ+!ÿ·sƒ; ^¦)¼K8z9¤‚‰&*™¬މ•K*<Àíw½¨ÃgÝÑXt×ÈJ¥gM õ>´º>lHþD0f†Iä;62KëÖçdÅ%‰EJ““b“µÝïœÞàHH•œo½$7Ãq´Çá§).±Õ Nh§p!VÇVV¶.ŽºZ¿4ÚéF<³©u±µe0Þ´Ûvº¶§wŽZHA\IƒÛ_莞…;ºiG¿ðé?¬uÇžµƒñÚAzSÏûû¯ÔF«¾!Y4èÐ>Ãì¼tÿØ *4Ç<«¹+9gnv°‚é¥sÛ~h™¦–Ï¡ZM>|üµtÜï{ùŽÂIÿÕz]ø*À1 X›¦¾ã±! –d:6ŒS{™²õ4dJåzùœè¦Î!•ð­YAÆdãS{ «“‡^¾8ùE挊0M¥³úhNö+wÐÐ2mnÊj¨ŒjØHnY-ßFïΛMBM)JÈkÒp2«_–غÀ¥2Üq¤¯n ã"v¤"•îôYŠuHå+ÍçGî]…ýðž_(«öÀ…²Fík’ »ƒ=³8mà;e[j³âËöØi¶z³¸èyÙØóbÎ ¶b!‘Ê`Ó?˜ÕK cà¢Í¸#•ÖÜçãþª6˰C¿ÛaÎDÞc…\ ã¢iä*“[¦0-mëh4 €nWaºÄHJ›à¼Ë­ý‰ßH§C# J„hvrGß>M4ÒYtÓ#ÖanÁ÷ ÇÕÝÞíE³!Þ£üÈ £ni Œjª‚#‚Ô¼‘%ÐŽußæ¸h±n»qº£ªô¼¡˜<ù'78.wfw\=†ÞG™˜€n47ÚÖ¥4—ql¥R°:î¹É8kŽ];ðÐØ¨xœ÷zC   i¸Ó™–O‚ÇPžØ6Μvìuûn'êÔAÓ@“ÎuþG_Ó°‰M¼N=ñ;Ò\L¦Zÿã¼Zv7‚à}¿‚Gp‘"E:7C1kÀ°“Íy$O,nÒ°)c÷ïÓê&©Gv70 ÍpöTWUŸv…Uìj³VaZíÔŽlßÔºaö^§m'cfþâÈøè†gî­4££_ŠêbMKoÚ ˜(cí!ùOÍÆ¡( þìh}«$ìûÎÞ@‘ñh°óåA¡hÇŒl…ÝÅ’•½ïN)·ÒqÂQåÕõ$sj&p mËDSÆò\MZ*™¼ [}ú7k3/¼t<¥[uëÙP‹¥âk¸Ñí1d2] Á”‰· “Þ&dá1³³éuJù–•sùÂaÏ+­¡xÔÖiòÙš.“ÆEàòÙ^Ó=º·ª?Õì†lXF·{{wý«ŽÝ\&R‚ñõ_º‘\+m›ÝôNC“¨rö‚¯&è8I#¸" vÉoö¶»§¬l±(Ʊ£8P bOé T£' ¹=–ßZ:ÑÞô,dî³ðCŸ`3º¶Ã¢æúb¨Om}²ý~`y¶èȹ1†Ý‚·KXªì6|“EnKº—¯§ij‘Nñ Ÿ³oJJ¡Î”Uÿƒ±žœ^¬8ímË¡æÜÄþÀ”N{ u>À{}hÔtT#QUOæµí|ƒÌ©ºÒ\·B^Ä VOZ š r•rÀL4ƒîáM{øÁ½¯ô~–3ÛË>¥ÐOY⊼kƒ-6‡àÉZåt¾fz¨=3j_‰˜baަ¢ÝÝ%'û.Z3lºwïŒö¡«†ñáI~àIÀJM¦ñ‚­)ÕÖTfkòèø´e9;K|f,W)d“@R'&ö=¥û>XIXدídl?¸(k Ï™Eë{ó8̘¨óÚé”»ïS·Gƒ=nGßk–«!†$·ÝcI ÎZ@SðÒo+´ÖªÍ}1 홽¸ÛcŽœ¨ %9è²ÛOrðc<Èß’C›2DjŒC±tMa!ÌÈ êþN 2¥æ |ã·u«¢XŒ”f4cR3¯eÓ…V|‚µeU–ÔaœZÙJ6‘ÿ)¤W 6)÷¯ñ-¶¬dÂ_œÒ|PiÖô™LC<†)T­Nú2/~‘ŸäúbÉ—»ÝÆ—£ 1Ÿ*Úõk­«^kßkZºÊýæEY'©á(gÈx4†Y½%ÎñÞ0§Ø®©b ˜4*ÈÄá²K/ ü²GŽÕuc@ÎÎdŸX¬F#ÖAc’ÎXÿU )-—³û3ø?ºè­Îgö^ {s?ñ®AâÃÒÂGÓSIá‘`ÌN"çÆP Ãc:[·’[$ 9±>|Áë0ð=x½òÏȦ€Í°ê—X™û‚ઘ½ýÅ#EyM¿ª?ÄH¯áKò›¸EW¡Wؤä}BRMþ&3w¯ÅHÖ!æ¿h²'Uë&îÂ{m"kXh¤õ¥öú”›‰CÚÙDH¢Oauo¡>Áµ5‰ó€ÄÛß¶3x8ÍŒÓö‡`.6åi8Ç¿K5 ó*/ƒõa0;–‰y¤D@…ÉXzUvaÉA¿zºåÌR}9«{øô ó¬ðl±út&s1Õ›U^ÈŠë³~'w³Á byû†'óW‰„ºo•.‡Š7VœbBs¸ÂhD`j@Žm#ÚágÉí,ùP×ÐÙéÊæIœ'MÝ÷äšcûT“®Ðm߯©>¨ŸGOï¯Ö.&IrkÚh´T{½õ“GxTÄœ–Ò‰Q—#[€m£é¶TÜZï¡n¦‰—N‹§-™D!Q:$J†Á¡û…c*QáÕL†ŒÀÁÙù ,{Ãu—tÞ7ÛÚðÛ”z´Ì¼¡mŒ—!cKÎXöºãœSß×x#4huºœ ±QLn>…íàs§1Ê5¥iŠ7T&u0hqj(Ù¸FÎÐÑ@™ ªâÿ¦› úDS‡SM­êgb|ö^§,/óœ½Fâ¤ùjLÌÕL‰„k‹hÈzÖ‡c’ÎgxhEh듦»Ð>+©±YÕ*Àm›½¤~Þ[æHüyÍNî5ƒ¬c¿ ýy':²‡È®Þò*¸å="ë‰C–Zƒp°—yàfjõ³Ê(àÃÀÝš!5D¦HÀйÅÜ÷òÆiÊ82 i>_äÉ‚þ´U^ÍWU’fËù2[ ý£0X@ªbQš“ÈDm髜-Àãú¿š_­dki`çENÑΖcij^˽(œ ÁùÆÔr¤{¯ŸâAbæäÍf= ©c©i.Ñ+§QÖÉùLäyÓó–”ê—Û5œå]âÓÞ¤Õ]À‘¦YîßèvÂD‹•D‰Äþùâ÷Ïn~ÿðï(®e endstream endobj 122 0 obj << /Type /Page /Parent 283 0 R /Resources 123 0 R /Contents 124 0 R /MediaBox [ 0 0 595 842 ] /CropBox [ 0 0 595 842 ] /Rotate 0 >> endobj 123 0 obj << /ProcSet [ /PDF /Text ] /Font << /TT4 475 0 R /TT6 268 0 R /TT8 269 0 R /TT10 270 0 R >> /ExtGState << /GS1 478 0 R >> >> endobj 124 0 obj << /Length 4707 /Filter /FlateDecode >> stream H‰Ì—[sÛF…ßù+ð>ÁÜpy´%­ãì*qYÚÍV¥òÀX°Ì-ª,ÊÉþûí™é‚@Ø›ÚÊn¹,‚8˜¢¿é>=/oWßÜÞ6…*n߯úªoŠšþ…‹¶¯šŽþ¶•ijSÜ~\ÕAüt¿úæÕ*îŸV›ºªkúnå/üC¿­~*/__ü°Þ4•)¯×JWmù´Þ´å;ÿçð8¦jªzýóíw~å.®LµªîŠMk«Þ©®¸½¤‰Š¢Ï¥mÕ•ÅÅa½±US>Ä÷ë#•o~ZkúûqË⻡¸9ƶü9|X<¦ßÀooëÊ´ÆÑÒâáÍ´N¯¦œµòÍö~(”]ßþººº]©bW¬š¾²]Ñè‚Þ@›ð÷Ó°z…¶®´¿o«Ü™â´ó׬Äel[5ÿ‰~CPà¯Ç-iüªÒkÊøtö²7ÖÛWtñÁø•ž  ø[¡êâºøé纸[µ´iünÔôÃ?®œr•åoûÕÍêeØÆô8ÞÇŽ¾è¸ã¶í2\÷í í´¶Rå›âb¿}z*¾ß~ÖÕÛÓÆ™ª}6m„Ö…uZZÒ‡`þÆ8c¥©¬ Šn5½ËH2¶«:+Ž ?EIÑ ÍÙ8c°Ú‚Ä?‘è9Í¢RU7ù-@Nó9b± Th'Sé3©¼ø¸ÞPæ›ò—çýöxøä«.ÿµÖ}W¯<ºú‘ò»#>Ûu]~¨,ÐþÒTê’‡¤y¨$¤Y(é9¥i®¾¤­I¯ZWŠ*YW¹JU–þ«ª§ÿf‚Úµ>ö€i!Vyl"U ¬œEÕœ0ØÙ‚:šXP‰ ÈÍP:Ú1·&»@¹½Üú²Ouv·6U,ÿô¥¸¥€·¾¯©Ü–¿Ç»T›)ã‰Ì[†C?‰á´šBÑA8!W8–JMƒàD‘Ç&8QÅpÀÊY µO†#«£‰Á¡m®š-ZÙŸ-Žöpü—â‡_Å‹ç»Ý³ŠìÓÒ9±¬7\#$’åÜr§Ü²Œ¯n¼£/ä}NðãëÀEˆO›ðEã+gÑBz¢8šv."vÔ0énœX6'VÙ]Ä"\¯}Øé7ûXçÄi9òTV}µC‘ד¨kBN Œ·0*›$ii5VÔ™“Lâ,«yVQE‘®éÁzÑz.¶ìwä"»m(aT¥®ö_Y?<~`CzŠ‚O+Ê‘ýá>Õ¶§öKîdf¤è1ˆ3Ѝ<6A*æ VŽbÝŸ¬kŽVVÓIJ Ð6ä p9‰:Fûa¨\y,.^\’óPøëÖøVbÁkwê¦'¸¨`…ŒåP³ CVf±=Ñ,Ô@Í‹* uø}‹mõÅ!nm]>’竸ßÉa> AWî>'ë÷Z¬`–N‚TÎp˜I_ÖttRDÖÏ"Ä!M8¢Šq€•Yt'c™ãÕ<±¨"%x‹}ã(ŸÃ]ñvK.Ÿ:..cŽ­ÅžKêȨŸ0 Ù¤yÿ·ÈÎY„Hä± IT1°r!A:MùÕ$…§[´—ËÝýî¸Ý¯’l‹âi&}ßÿ\oh¾ro¤ûdÉX^'ã8±bï(þâ±¹±Éoøb`£ŽÛãîð°Þ˜ÚøÔSô0";=5®`¶ ’G&°AÄ\åU³¦`ûÔѼ‚ŠøZå“*ðýߢËágÆ­Ìb}2¼ æ‰EhzÂ5ÐæcÆ4þ­ÿÍÛ”,òÖ6ýBÈ;J¶I#áhi‹ aÐå±)èQÅA+³ØìgtYÍ‹* ºk}¬¸b½¢ØRýbL÷ÅÕE¸SüHÛ×*ZTx>ï)ØÆ%®gÜo¨rD·ÔÚa ý¼³sM[9dù,B òØ$ªX9‹5´| Ž&TÄúAã,ès蘯ÎOcì"\þÙ¼½ì©(*’ôI,“÷ ÷'’ÛãÄè©ÊÌOœsþÍ(BšòØD3ª˜&X9‹ÐSdq4í×;б~ÑQ¾Ý²gÜQ.™’½…鸲¸8ì“«,yñ§-€¡Â^OXSA"Aƒ@Ä‘‰G1yÕ¬ŒCVGó *¢u¥ë%‡ <š@ƒs¥M4lY„bËßzŠð“±…õñCn´^\Òy’‚Ü4-±/-“~ÊR2ia˜å±)ÎQÅ+g±†& ÔÑÄ‚Š"íjâ²x`¹~Þwé ’Žt@‰eÝxcˆÍÕWžj^²èÏ'C:Ñ<Ümyl:Ú\lÏéx“z2ÃÅ­¢oº÷M·¢Iïv–RMíaÚQ„´å±‰vT1m°rô{ Ž&TDÛô´7Æ´»L[Íhç–k{nãá[$~z„[‡§hüìÿq 1}ÝYw§¹IýCÞªLmÈi ¨ÓЧ- ºº‹[€€›ÀL6…µEÝ‹pÈcÓ&ˆ*Þ`å,jln²:šXPÑ&ÐÄmÜMè¼Ìl˜ˆ‹òn½9mK›`ñíî}N䈣‰Õ˜£9q´ããULlºï,ò`o§¼5 •u3Ц<6ÁŒ*† VÎ".ߢ8šöë‹·rÄý¿“ηôLK^ÊÏ<ÅÅaŸXŠºž¶D~«À–(Š0ôòØý¨b`eõÉAç d5O,ª€éK ÞØÒ|¨]hûý~¦SîUÚé;~âìAz ¥Ôá,ßBÿR‚ûWJ¡¥¤ijÑÄGx'üjz69Q„ü䱉_T1?°2‹õÉüæüd5O,ªˆŸÿ°‹-íÍqKul Äys1Q^]¤vóóÚ†Z–HhÎ$cµZ8Â)ÝŸ£0Å µ,"`,£`¢@+³Ø¬k†¨ybQE(*RãVCµE$ñ&ª—³á.  ÐÿípO)Q/—®³^>=nÛ@ÿ*>jkˆDIÇ6 Š $HÚC.ní¦ ;@µé×ïádi³h{É:~âÐz?’oH¿Å¯N/×÷ñ§ËY„–ëcÅrV±å`f¡ßŠ4—|¶Ó]Gv¬‚cHÁÑåàˆ9^¢CŽ©k-±wŸþüžžˆu¦³äüñó5{ah©ÂӭЄn7CÒ u¤pI"Æ¢ÏZ4s¨‹ºŠŠðxOk^ð|¼HŒrfÜž®Çÿ˜Žî’+Û÷(â³Yèc«˜˜¹ˆF£¥è •ÞaÃÖò ëlY„lõ±Â–UÌÌ\D›]]VTÄ– ra¹I;aÛÌö=÷n–PÒös´OÓvíäF›¶gq&yâtvïùFËݹ—‡Žé?™kü‚¿Ö®ÒƒûÁ¬¯®Î ûö!,BzúX¡Ç*¦fÎb¿ÇSKYMèìHïYº‘%q5{Ï ðÿ²ê|­I¬ÖqØÒù‹P% ’RG ¨$bNú¬Yëæ˜ÜrÒÕRWU©ÁïC»ìÐ}ÙdýÝ&£óðå-í-:Ðâ•´XßgëÇl¥]ÖÛ{ëíè£Uº÷YD惱Ùý¬BûÑÌYtsºmüj)¬ªÈz¹Þ.ý¯r¯eSÌÙ3¯û‘ú™J Í7+ómæ³Í×ÇŠù¬bóÁÌY4sülÍ×ÕRXU‘ùÔ4“WÉüäøxç¸kvï(ó‹Ó#;m Ò÷N˜ÕÕÇö´_P–g:­§YÅNƒ™‹ØÂ,ꢰ¢"§©äVàâ ’}¢Å5é˜Í»3ú.k´ÖOÓš‚ & •N9RXuT¶âoX„ô±BULÌ\DxÖëâ¢ìóOz×°gžôò!ï%‡”Çžäò÷!?B½o$¶}Ší¢Õì T§F³_Ñô4ÁLd©Ž”IÄ$õY‹æ0I]]ÔUTÄ’Ù¶ž‡¿â½g÷ò0”°èâíÙV’u~?˜fº­»YÅ~ƒ™‹èqLëꢰ¢"ã_»MЧ|dÝ®ÇC>žÒò§þâðuš0¾7Þ%·œdf¤×Á0Öëž6\ S›EÈB+,XÅ,ÀÌY´sÐlYèj)¬ªˆEKOøåâeñ›±Lâq¹]O»Ÿ#Û|{ 3›ùN]ws9$HVŽ¡ø³ðcë*,† ú±æ:‹…>VX°ŠY€™³ØÎq³e¡«¥°ªf‰Ü’E_XlP¼ˆ»!$®‘m²ñ]èÚJû:ÞoÆqoÑéŸEd<›Ï*4ÍœÅa}×ÅRV‘ë=9ÃswÀÛ}8O²âß|äpÛÅo}×WBØ´+…;b4ˆ@)’ˆè³f-Ìi± «¥®ª"Âô.‡‚`»ò?¥SÈ4¯‹ûÝ쾑£Ç·´™°û«Û›¡?Êä,Bÿõ±€ULÌ\Äf2P…!èûÎ.~:îÞåçë´Yùƒ F=}è›Uþšà¢-Àw¡ïúXñUì;˜¹ˆæ/P…ùî-Qª.}Yã±íšÓåÛi÷æt8î^½ø‰7Âîj€øÚ`šo§?èyú é¢.qW¤†i™Ñ²QÚ`|åæ7ÆWÌ:j£PNg2ÓÇ 3V130s-Î ]]VTÄÌ‘Ow9Ê…!·²/“t¥åžöéz¬õ­]o«—ˆ GÚ,B úX¡À*¦f.">°TqQöùÇ•¡øªÛ†¤…ž ŒàíÓe:?² ;Ež“M" >Ѷ[Æ[SAå6¨psUë¬*mUµ§Â •íç¨ÙÂÑÕRUUž–^¯­¦É§s¢26çGañÛ…Nµó—?§Ý«ëñ–¥ßùÏíë9.îŽKα÷=¾÷õÊAfˆ) }!}¬b33g±›“i‹IWKaU˜FOL™RÈ[q?›ý/é* YâcW|ZÚ°9`òÑÇ V10sÝœB[>ºZ «*à3P"xêádÙ¸‰2©!qr N.ç#Ý ol»kŽçëa:¥G™áÐdå–¾Lß0½¡°ówìœtÓƒ­“s÷äF»w¨C` qÓGfl,Bj`VÖÌœY³ï¬ ék}ÐÒ›°ßD1‹zÙüš,â×T gQ/\ÿÅä endstream endobj 125 0 obj << /Type /Page /Parent 283 0 R /Resources 128 0 R /Contents 129 0 R /Annots [ 126 0 R 127 0 R ] /MediaBox [ 0 0 595 842 ] /CropBox [ 0 0 595 842 ] /Rotate 0 >> endobj 126 0 obj << /Dest [ 181 0 R /FitB ] /Type /Annot /Subtype /Link /Rect [ 409 527 433 539 ] /C [ 0 0 0 ] /Border [ 0 0 1 ] /H /I >> endobj 127 0 obj << /Dest [ 196 0 R /FitB ] /Type /Annot /Subtype /Link /Rect [ 125 516 132 528 ] /C [ 0 0 0 ] /Border [ 0 0 1 ] /H /I >> endobj 128 0 obj << /ProcSet [ /PDF /Text ] /Font << /TT4 475 0 R /TT6 268 0 R /TT8 269 0 R /TT10 270 0 R >> /ExtGState << /GS1 478 0 R >> >> endobj 129 0 obj << /Length 3516 /Filter /FlateDecode >> stream H‰”WÛrܸ}Ÿ¯À#™òp ÀKÞlÙq´YÇ*KΦjk( =â†"'s±×ß‘|pºÑÝrDÎ*¥ÒD¾÷é7w‹îî2¥ÕÝ—E™”™ZÁŸÉË$+à7OÒl•ª»§ÅÊw›ÅïoµÚìËU²ZÁч¾à¦o‹_¢·×Wãe–¤Ñ‡X›$öñ2ð§ßÖ*M²dÿz÷#Þ\ÐÍÀ(׫B-s›”Nêî-0RJ y›‘ºêã¥M²¨£Ç—xé€Ê‹»ØÀïSÅćZÝhCÅÏú©fâAd`íí*IóÔ†p¹×ÌQM;T-º©6µÒ.¾ûmñîn¡U£Y™ØBeFF-ýï®^|™'ä«Äàºu.q#Š3ß'ÎÌSè›'ÙÿCò2xʬ“ç.ÑXa˜‚i:Å)0M¥Àúô^~gü; ¿)½RÔ/¿®Ôz‘CÐ`4üiá´K,µ‹ÛÅÆöBg qAaLQ[ß Û4§I5qšØè¾­ÕOÍæñ nûC¿Ùaš¨Ú>6´O]?ÅKJ® Z/[6u¼,Wi–èôM ˆ, éQ$.щ…ä9¾ú„HÊ—4¡Ñ†KÿKŽš§d‰µžbrÆR[À¥“§R[&©ñ$ ²Ñ9tÒÌmH,"¸ß&jÐm,Ê4U¸NSÁ©“®–v5te\©É•ÿû'.Z¢?t´£Gƒ¢ï±)Àcêu·iØ©úäÔ"8ÕŒœªÉ©Ú¬ $Íyª>ó©+`uÎyDœõßôYq!Qç½8s3s<5ç­ij`³g6gb 5(›;9C$…ˆ8¯Ðä­Bæ,êõ‚º“¼…:Íû2u.1’Ì ^˜4Ô‹ŒêÅ„[=ÆÈ,Â6à#±Ún[Œ²ÂǦïTÝšª»u_Ëή?¨­»,ê¿6ëZ1@‡†µª[WL^+æØwäp‚IÇ9ìæ-µ:ôªêäÂÛñYt#,Ú㛂Ðòr{u#Ú¨oŒXàd™¬È! ÛðÙ$…œÑ  R±Š^Ç`qí÷ýC@ÊA²¡9Þíé½"-ïÛfÿðŠÕMÖkÀFc¨¾^Y’ÿ±(®„èuGNr9a/ˆ€ á§–§zO/5Ô‘4êê]ÕÊAfÛÈ9Ú£°ÀFÿX3Í¡v} ßò­;ùÖoO!c8dø£ïõï|Nu¹:‹êWê[\Bµò±—FröQ5|‹ªZÚQÑ e$Ô-_Ýo{^ª×¯Âá?{;¬ÔÒ$išÛ° š2d-r¤2$¶vÁ̘2Ò(ŽF•5¥ª:.©YJŸ,OsD_ž˜8WžfÎrbêlš9}™*BC\ÎUãLƒ·æªñ‘Ô%⼺“· uš³ƒ¨Œ1É[¨Ó¼/Sgª±+ 0¬àʰ3L¬¢¸ò‡H<„r$Š|ª›·ŸU[w›Ã#ÅkÕ©ûZB—Š+dÔæ¸ãòéyPM·÷!É Õ³m)àÍ Àñب ®:vUfI¢S½‚ùåÞ|ˆI5ˆk3`I½Õ[×$(xlœ¡pÎRðžgƬ0©NykŠÒœòöYç:õ„«ö¼PÁ&TwkP¾«7ý¡!u›açâ÷ãv+èP¯I„»?!¶vyΠ ëê³ Æ÷è¬'æ×h~èfG†q¾CúþøÜÑÈÿ*¯†Ê+ìãS˜ðµa{jÃdÊ´4 ðÄô¥,½<=ÙPÊ®i$ǜܶŒšü@çÍZùùÊX*j8Å*>·Ž±óæ@ÿB_ßýQ^ƒ0â3?ó…Ø÷þc÷Tßð7¦y>Ž¥çƒò×`þrn• d-¯ 8ùäóõ[ñXÙÒp»Ìvnä>7;fI@ƒkJâ#êTFA <®1ŠÊèV½½ú@ý>þLVèPÐ]¯½AÚ“¬„ùÿñ¥‡+té ’´7:ög€ý+óD‚¥ÿïxLK3Pxfl™¡ù©…hsCËôIžJˆ8;”LŸ½H<‰ ì§ç³Ôé¤4s'gˆ¤)/©:q«P§9‹%ˆzѼ…:Íû2æ3È)½âºb¨¨I(Dh\¥Mp(;)(üâ¥-VÑë8M!‚=öôÅžáyÝ5ü!‹Ô”€t/ðSŒ'ëª]ú?Cܱk׊¹BÊyL>äð5ö¨˜¿ˆôýE¥Ò”å¸àŸ’4³Ó]'tŸP*?¼´¶¤Úõ3M‹bÓòÚw õúÁײŒj@'~rAŪ(û?×´úTÁŒÉ¤2D°°â3û}#mæ¿/¨ˆ¦p…†‘Çc4¶NÀI@ô NÅ«Ê=æ„ædÜ ÅÐp1„¢ÔdßÈ!ãJŧÿÎĪ˜†a\ÓÉ›ÜÀ@ÄEgã΄¿³x2^€V…Ý糕øŒ§^ä­qÍl`³LÀ‘¨þïc-öbDˆÚ‚yþÈrÆ%ÆÞAŽ~45‘TÄ7Z‰&§GÀk˜´Ú0ü‘Á´ãARôç;CobÈÝ^Ý µ¡]õä–æŽñ„4BÂÚÁáóy²ô¦® ÍVÉ.¨áC¦Ò"L¥€¿×¯¼Êè[ ÙPÛ­…öì¿ ƒÞÜJ§-/ï¢ÒïøïsMêõXu„¶dTzRS|Sp²²8¢øQ“&L4ŽF%v¾&ÇY9u/›ù 1‹ f±èãC¿©Á2¼àÄÇH˜le3_`Cµ^Ÿ‘‡B¦Áõ‚báÈÎÁÀ@ ­À B!g9EÊœMÃkm¬´ÂK…s'¼dC“ÉM&¤W•+ĥаB,»È7(—0z¬ñ[}ò}į@E.±XâúÀ”‰Úÿ5^m+nÃ@ôWô¨…í[¾ö±e¡…BC }wjÓ¸,¶Ù(eûÛîh.’“HÙ<%ò‘FÒÌÑÌšƒ~ÞQÝÀ©XEj¨)®²–2dðïY®ÅQ”uNÝò©Mm‚ÔtŒßc$õŰžcœµ|»ÛÐv䇨eEréy÷Û9¹Ò~êý¹6î@qõ6fÙ÷p²Í±w\uß)Ȫïl·ëĤÚñ²ÙQ«ˆlõ@v”ú4¨®ã¶x¥•2{êùƒ"ŠÃ¡&Y 乿ÌÊï˜w¬íWÉHïçÙñ–8 9VÑh‚§BÕÇhx1{{F\œ3NŸtX£ií+MÿêŽZü oa0r!ð6÷¼Ý>ÏTÙévðç€Ìuùkû<†‰–¼ —üÉ—¼Š§©§cž;¼Xqó[ÜQ ¾Zs‹š¤Û’ÒínØwF)WõÁ6È( #ó2KåòåR°SøGlr©ZëЈ\çö4À¡¯lù¸,r$ËjCLj–z»Êü¨Úžd®‡[)ÈtsÏÏu¸O’~ óÑ'_dÛ3šA:¾q(E¶{ ã}¸UÝ–ù%6«üÏ"‚¾­úñM}­…K>NýØý²ª©jH—@RèvàÃ÷N›ÌÌd¨U£ÍW Äæ‹ÁTó•XËí£Éö*±ú:]4©®/® GPèÌbŠ>Ë€42^ÑJ6(Š‘I†ö‹„è!; (ôM“ŠÉ8Ä×JMÇ!±3¸!éè((f£`ÂÍmóÖ}“%Ò ¿ ïï‚ýýaüœ]mázÆ gŸ¿øœ§|XÒÕÑ•âiÓŽŽïÊ<äüÂ]¶•³_˜Àð*„¥¯ݒѸ]¾(W.µÌhÜòUð?˜,¯ endstream endobj 130 0 obj << /Type /Page /Parent 283 0 R /Resources 132 0 R /Contents 133 0 R /Annots [ 131 0 R ] /MediaBox [ 0 0 595 842 ] /CropBox [ 0 0 595 842 ] /Rotate 0 >> endobj 131 0 obj << /Dest [ 119 0 R /FitB ] /Type /Annot /Subtype /Link /Rect [ 258 520 274 532 ] /C [ 0 0 0 ] /Border [ 0 0 1 ] /H /I >> endobj 132 0 obj << /ProcSet [ /PDF /Text ] /Font << /TT4 475 0 R /TT6 268 0 R /TT8 269 0 R /TT10 270 0 R >> /ExtGState << /GS1 478 0 R >> >> endobj 133 0 obj << /Length 3727 /Filter /FlateDecode >> stream H‰´WKsÛF¾óWÌq°%Âx<:’6«Ôª¢ï!Î$Æ\À2A9ù÷ÛÏ!@KŽí­-VÀtOÏtÏ×Ýßüô°xóðP˜Ø<|X¬ÂUa"øÑK¹ ‹ þË0-¢Ô<<-"~Ú-Þü¼ŽÍî°XFaÁÔí_Péóâw{usùk°,ÂÔÞq–ö,K»Å¿aïLaüñð ®\ñÊ`¨Œ£Ê,Ë,\åqe®À1fj+ÉÂÊšË!Xfaa{~|–9HeðSÀÿS-­3ë‘jyº''ÂQ÷ ÞgQ˜–iÂâäY’¨kqŽ®Ù»zçL\׋شfQ¬Â¬2EbÀƒÄ,éÿ“[|x]PFa‚ãYž‡ùL’'9¾¿0çu /“•añ="ÚI^ÝÅ‹ó¾&‡ã0©D§ˆ ™/KX÷?ÃË/pAøÙÄ‘¹5¿ÿ™fQh lüi‘Çy˜ÉW·X/~"g_q‹*ŒÃ([•ŒÕ‡`—áÊ>:ƒX­û3XVab÷]»å·vÑ»{y?!$s[÷V‚7¹uÄ#µ"mÑù+Hp¡~¬eVðß)~”ÁnÅk¶Ø™ÌÄ~ãt¡÷–_ØJh‚ çºÐtí8vθ¾iëÞ ½¹»¼0›v7Yß½½¿|P2Dp*aœeÅ)2N$*rŽØç ‚m´]'[­;¡æìfÉNgÖlœ!¶ 6˜€*mÛ댦íI©kýÈ H°— Ã~ טQå2«SoDÄF¤²/ ?˜Á…ßÜÀ»n``‘L£m8™©ÐÈïî)rÿbXú’Áá¢mò&Ñ­[„ˆÒi(€…Ð"ï–D`t¤cØ“÷(j™ x4¨;à .A¾ ñ…Î}áºZÚ[Ó8žP»ÑüðnÃY|áLËâ¥<³²(æ.‹C÷X?·Ã$w¬æ@/ ÓÁǺßS8¢¦†yö¹ZU¤ €ÞŒµÈwÎOô†^-µ»£¦øØBŽøqÈ%±uäÅt þk5€·ï$YÑú<0©‡‡ææ)XBc+=ªRF•ù7§î5'*£½P´§âtÁhϬˆHiýÊ£vÖŠD’©ðÉ”"6Z5 ]2F«užµÇ8†²Ie•߸®«\WÙÃ\=,…¤!B$µÉÙ3>ÿ6°ö*‡Õ׿òÈYïݶýÀ_íz/Œ“Ì>ñ£î·TdJ¦Pë­(˜*’€Ó,8Uhã§E.»úp€r þ~¥‹Ø…²‰·ÈTÈÛU)åq=ò"ÐIÌúò79¸Xsª²|Þ %vnG%Ê;æ´·åO:’OiØ|ÄS‚>£"Íhˆ­,6è"\WQ¯Ù°&?¼ßŠQ@zÖÔc½©u+¦†œ㉪¨sõètq×üè†Ý¼®¤`¤0>®çˆ$\C¸ š¬ZVÄ4N9Luƒ>/—,[s9),¹‘Ø{p¾®I œ”¼¡1ªM±ÀÞw¾…ƒ,BÅ2³òiøëÑAuSƒ¾ôÃHÁUSr¾+9ß”Î×›’AAaËpö0¯J¦ËT åeÌåFŠ_¬ǃ¢"efx~£_´×õå‘´©ãQ¾û™)SFn×ׯ‰Xkiji’;ÂU¼T,¶ýΈU2x=uñch”!|¹DïX|ô™}ÅGŸñÑWxôËÉÙg|ö\0™g™täÇV×oû——å3ÔêïÕ<Ðs.('F]§©ÎÁ3>?Sêp?¶ýÑ©]+A§Ç£"ozf9ñŽóEùOã! ø_Kœ® @ýCÏ‹8“æS£Ó}ﺩq0õq&¡E¡ bÞX¥=~è”?#ùœƒ÷‡‚=øù=…Òa–=&ÃÓ5³`W§`óøŽ^,x@}¤ÿmœÔ°ú(eÀAõ0õ~/¥cЗŠªÑ§ÊÐÄ †b°ãþä×Ñ»©vïvÈV¤Š†DÐ(ð7*µÚ‰DчJóê…Åy;-d´¯ëW\%©ľr)f¸}ÐîÜ<ôÖë‘3ÔPÚR V±¸ hZyT|¿«PšÑ%~Ûkï˜&Ư;“bGÛó)óu˜úÔ‚ z3qªUßuNû„BOè„€ºí‰µ¼Ã1P «8/@Ò@ZÂ_¯™™h_Ô0Ö™VÛÙ(­÷&>a¨•L‘o¤Ó^iV ·¤lO‹Š=jq$Üp€ýœ¤™²ÅD™QÉ×™›‰†@ æåBœ¦+ާӤþÍ‹"‡ÅiQ¤úr ¸À…ææí;T¨œ÷Þ˜›‘+AFl}dì´tN ê¼ÚwN²¦æeeåV{n{]Nw«}ôœºÃ‰A-–AÁ¢ðr¼*‹)Nj˜© k#ÕãDõ‘ßõ<3=O8CÚZŠ·«nº‚ØØïQ€e¸èEXnR­ ϯä€Sy ÌßâE÷Þ¼«»££+Oe Ô•¦”|Äÿ½ë(2öØî_ÓV8VÛÍݼ%&^ØÊ·¸½ÇÈ$¿ûwoÞ[~‡0YÌš„2)äôM1}‰TIƒ›pÕÍž^Õ¸¼Bñe=²C¹½¯epœÜ)sÕ´¶p#UhÉÂï«hda>eÒCú7ÕKwêà‚ÓÉV|Y­:'©Q רTk„¯y°*dÙ¿¤bË>žX¹@xçÔ¤_æ§q*Mã™sjë—Òêoïäe$€Þn.…½n©:ò¸¿º0*¾Ä YaÏÈ¥ÿËsïí»ëÂ+ìOå<évJrº´£§Ag¨îûaTö±ñA.=H†·[·çÁšë=Ò²»¡k·}åJáQSÊå¹$z¨”‹rRÈ¡AÞÁõ®ã|Ïùžd Ð-“¨A½“LÅv jò€ {#ò"×½Ò²²§º“Û/C›y†œršX‹S€5ªüßÔÜ}jA•!__Þ}K¸’8¬¢)õ.ÇQ< —TÄÜ* ›„+û"\¥6sÀôsÛxR$Ok‰Ô®­Æ(%ë•7 "òÌIY›CöÐöšÂÿÛxÙôÄ aøÎ¯Èq‘håƒ[iQ…ÔVHÀ©§ RØ*TBÅÏïkÇÉ&vಛÝ7þšÏvo~\6´ìíî$C»Édðó¯?dS öôFKoøx`5Þó“ÿ«»; ƒO¹ÑŠ‚ECR\ñÍgÞ÷l×aϳ;:†¯d-”ÊJqX'bG¦rTJt9Ê‹©•ë³W“Y(1z[åM£å(WµÒ‹Èh*U¡S"—Äôq£«²Ÿ™Aê†1¢s³Ÿ{[M¤dô”0,“3n˜çæ·‰·Yy%…f—_o²¾îÇŠ×vÈn;]ʯ¸Q÷¯ „¸žc¶ñ¹Ë lï{ øq? p» ^t &óýpßeò2Ï…ªõ­'þ‘@3ç«6ñ¯¶Ç»ëhG8àk?úŠeD©à=7™ŸÊ^*¾Aÿ› endstream endobj 134 0 obj << /Type /Page /Parent 283 0 R /Resources 138 0 R /Contents 139 0 R /Annots [ 135 0 R 136 0 R 137 0 R ] /MediaBox [ 0 0 595 842 ] /CropBox [ 0 0 595 842 ] /Rotate 0 >> endobj 135 0 obj << /Dest [ 181 0 R /FitB ] /Type /Annot /Subtype /Link /Rect [ 409 747 433 759 ] /C [ 0 0 0 ] /Border [ 0 0 1 ] /H /I >> endobj 136 0 obj << /Dest [ 196 0 R /FitB ] /Type /Annot /Subtype /Link /Rect [ 125 735 132 747 ] /C [ 0 0 0 ] /Border [ 0 0 1 ] /H /I >> endobj 137 0 obj << /Dest [ 178 0 R /FitB ] /Type /Annot /Subtype /Link /Rect [ 391 300 415 312 ] /C [ 0 0 0 ] /Border [ 0 0 1 ] /H /I >> endobj 138 0 obj << /ProcSet [ /PDF /Text ] /Font << /TT4 475 0 R /TT6 268 0 R /TT8 269 0 R /TT10 270 0 R >> /ExtGState << /GS1 478 0 R >> >> endobj 139 0 obj << /Length 3965 /Filter /FlateDecode >> stream H‰”W_sÛ8÷§à£tS«’HýÛ·4Ùë¤w¹õÔÙÙ‡Î>¨6›¨ãP>[n·Ÿcï@€”dKžt21)‚x÷¸xûø˜‹D<~YTQ•‹þ줨¢¼„ß"’y,ÅãË"¶ÄÃÓâíûu"žŽ‹eÅ1°n8ÁMߟ‚»ûÛßÂeÉà!LÒ¨Žá²6øÓîµQÅáŸðä’NAE—bY¨¨Ê’R<Þ !ÄPVª¢2·m¸TQ¾„Ë ¨¼xSø}©™¸ÑbÝцšGý¢™Ø9ØzG²X‡[ËÒÔ™–dhZ°ªŸ´HŠðñëâ×ÇE"±È«H•"OXŠ¥ý=èÅ—yBG)®«,‹²%K3œOðÌSèUDùϬ–2«Å$ß5œDiÉ´Db ˜¦R`}|“p_aàw‘ÄâA|ú3ÛEAƒÑ˜‚â/‹,É"Å_»ÅzñΆ±ºÆ9ÊaLwKW›dEEQ»:Pœ5¦¶ÁúveGˆÛ2¨ÖýRk ôÀàx:1¯ÞŠ®§#Òµ !„ãb9ÑÜm¦/ñC\d"¼„KˆxåÇ“iH"wMkÄ™&-‹v,Mˆ«æ µêžµxW[hÙòŠG`- GÿMR×6)b¸(Q*¿L…Df䯵FQJVI²*#«d`ýD²+GªÍ‘8ö-¯tÍÆ8AÖ¢“Z²) šŽ„Xk-x›37óŽÑ–·ÝãÀ‡ˆÆž²NîàFf`È£4’¢6ÛécËÐkàöaŠ6‰ý„¢Gë½Ç°Ï2_>Jò™S‰Ý”ÓA©TZ•ªÈÝÄvY¥ý H/-ç°a“+q»³ ºò ô_4é´ÙBTýÔv y©q{LÛ žŸö|'Põ6:«ÎIÅÊfÍ(¥ò*Ž”¤ZI次ŒH¦SÅ8ÏÀÅÿ9½|ÖÑÚ2^âæxl7 í¢’áj?ñfY¯+‰žÀoAºçéך½þLw€¡ Û˜ãè2jÃÛ4oà‹†œéžÞ+êý~×ðFr¯6]CA¢[³sSwª“ºï¼  ¼^%¤ëN‹š—xhGáBû踺þ®¡Œ¯\\AÆ<œv]³ßéË„†´ŸÅG½Ñ¼¾çõÿ½"\”JÆÐžœ ³ªLÈ<…Ø: „Y3îݧõ>r ‡ºkÞÆƒCÅÊÓoÍë<´”̆áTñQßC€ðèÁkÕ VRvóWóM»³à”WËw"ÿ{rì ×³˜ÖÒ ¯i}‰¾—œtÖiƘëÀàMI³P´¸»¿µÝž ÄŠ7£ë×·¿Ö§G´À§Þûþ,[-ê²Þ¶F9OcÞÚïv|26»¸X¿X¯¸-v;Ñ‘Þ# Ææb=I‰ÛIäŽ6”ö8çÔí! p0;s0.h«¤l ´³ÐAt`+ƒÒÖxâÓi7ýúNƒ—î;î3g]¸k¬¢µ±˜—?˜ÄC;ÂhMê‚w»£ÚB&Ú÷°BF”ÆAi>¥£q§Ýy¼Ð=jER3…d€··‡¸V-íQĕV[Óé¿hê2•tå†J,†‰èXš½«Y0ëå1ñ=Fcæxk~Ö˜·Ö$ç®x7îCmê'£E‹ÝÕbýÉ]1Ô+©É²7nRoFÇÀ-Bßಠ"Gc.Üw²¥þp·³§ÙŠóuˆ·K$Ü—2À 0Ýiš]§)š'ãºJ«Ÿ½Ö*·ßnÆBö­Ù¢:!‡Ûå‘vÅÔÛÓ‚cbŽÏg‘¾HŸO¹Ï'¸ qÒMo&]ŽI÷Ær¸ä… §]Ç×(YihVkë”à††ˆô{Ûy°«œ¢—C8U]e–T‰üQÌÕ»cÌF¢¿†ËÊÍ™¡Cˆ€.¹/©|@q Ã4§Ê eìÙšN†§ØêA$µÃp½¶‡©H>V‚/ ql·Ú­``ZEáâk^´Ø '¿œc'êÌ ™wf¤èG}…4;nÍžˆb0<­Ï1j»dV!ŸîC戶a"üùšHpË+Ñ0µ*ÏxS™ DŸ3#µJÌã&E–Ìf•–À{ÑI£¨Ë6e†û:Õ{«oÊso\’zc/i½-—´^—KµSW°¤”Ð(Ä=nW6ñèß‚¯4l:·×Ó§ c¬QÂP- qU¦âŒ‰ƒ;„Š"Ÿ2 rä”ð`q(Ýr÷RâPS~EÐY µú˜¶,î´·øc¿ã2¼4çf¤¾hp;yoÜ;=zŒÝÓN‹¼ÅŠlØ“92õÖ»ç gú TE„ÝÕt’q.ɦY]’u6ɦ™]’yæé$›fvIFÔù$›1™‰9žIÄ4Î,ž$z“&©^çIª×i’ 5™F‰ ÀÔQqAÿ¹\¢— ð£æ…â³êz>ù.0NŠ>ŸlKÅùHÆ´¾Er=U F–Ũ“o¿ÕÐÕ0ýùÔm[êÛŒp½Ó¸g{®Mû}sÕ˜¦k@ÌöÕ9o%eæz­8‘¤´-šNw—mjl~¬€„Ê"r–6©ŒJ5—6DœK›iV—6DM›if—6žy:m¦™]Úu>mfLöD™_Äïÿ¯šÞ¶aúWtt-bË_é­ËŠ¡ÀÖv+°DK=xqÖ8ÅöïGФlÇ’Qhl?‰’HŠï‘Áå—Ì €äIg<éY”A¿]q3¡snöXÔoZ‚àLƒà1-¨ß´„ˆÐÙyl ê·=¥‹–ô£¤€‹X§SIq•aÉ•vp‰@d¯–(þo:NVGF[¸·È—ªjxW 0›+úò&`ÑÀï BQ¥Òk`»ÀªÀ“­Ð,¢·*’L^ü'ª8u¢8¾NAÎNêY\â³Øvg£Ö+•FcÔy‘ý@¥«¢‚Uw\§XüÄìLé–-¶ÈߥžÕpÖ¶R6O£a<‰FÙÍ0åC«Z®æ`­,Uñ$»u©Ÿ®<ÿ9×ò¸S]_¶Gëñ[ýfBl¢]èsrâÇûõ#õT_ÔÑÊ"hú…5¶ÝXͤ£kÓRfƒ¦¥p¥{œT‰Kª§Ws2H/Ô§A‹ ù‘Ð#¤CLMˆŽxˆZßí8ó×þ( ~‘¶&64¢A#æý©Ë^©´3’ Õ¹éÔÆ¼Toµ R+ räÎz^?õƒàH(%,ÇÎå‰H6#ó^ë`gÊsY¹âX RpkœÀžŸ1FEô$ØHCÉ7ÎOÎ٠ϨšfV~ا„\u”ΖûY¸`NÖR£ËÂä5@è¸50¼e;JM»XFbÅ ¹@^pTÓ€YÙû¥á?Øëx¢m5p)nz£Š!(¨¹a/¼M9Éø2[z®±ÞKûºSß¿©Ïu×5FÝvuYg)TA¸@ÌnpëJ¼c©—«k’»!в/ƒIV¢^žRY`2“£A² ÌžGe×e/E Ú§Ûò¢Î° (í8‡ÔOä–hÒËw¶µÒ.B:!½*§º”“qQ Ãa 0ÿd ¡á0–f0·N 8Ú:Ã^4äè,C =é/ÈåiÔÓ0¹üC½ïý/s¤ý©Ç/oEž…e'ƒaû'‹Ç {<°´—åÄk f}˜éDΞȳ¬ ~Ór^BgÏë±-¨ßö<J"Àv‡I$¥5ÖYÏÄXŒYÔ gÄÆøiÈÈi:®ÁÕèZñ 4¡{ Éú`éƒ?¶1WïÏlØË}o˜n“èŒ\©Åø ½µªþj¬¦n;²ó†|HKZ>ÄÇŽ‡¸ÅZ²ù:%ß!ÛÈv„ý3ËþDûÐ>/ÔÆÌ÷‰L2´‚,Ü}ó>6cŽÍˆcqœÂÈ)( Œ²ˆfíâ•xŠõ‘‹è#³s3'Ù‰¹‹ DO”A+ì‡ ”K*R‘è—tòóo"ï(~V(wÉ“)xòùh¶õOz«· ?ü"Žÿ-.ØZERˆâ/ÝéIZ M¸ãýbë¦:.´ªïÒ” xdWw5˜–ÔN‰búlÑ”vC¥iÓ±)m…”¶íL׉µÍ¹34“ïÐíS÷;l®Ädm„´±Óàü1¾¶2BA=\Ñ OÔWÜFÕ|狈±o_ deÈ.ŒmÓ¿jon„.þHL” endstream endobj 140 0 obj << /Type /Page /Parent 283 0 R /Resources 141 0 R /Contents 142 0 R /MediaBox [ 0 0 595 842 ] /CropBox [ 0 0 595 842 ] /Rotate 0 >> endobj 141 0 obj << /ProcSet [ /PDF /Text ] /Font << /TT4 475 0 R /TT6 268 0 R /TT8 269 0 R /TT10 270 0 R >> /ExtGState << /GS1 478 0 R >> >> endobj 142 0 obj << /Length 5553 /Filter /FlateDecode >> stream H‰¼—Ks¹Çïü8ΤÌñà1¯=¤J–¸²¶ôŠH;‡Ý=PÒX¦‹E¢ììÇX'8ÝèÆÌB³œR¬â<þÓº_£ñn6z;›•J«Ù§Q“5¥Êáçoª&+kø¯2[æVÍV£Ü‹O£·§S­žGã<Ës0½á ~ômôkrrv|•ŽËÌ&©6Y•<§ã*¹Ã¿Íc«lVfyúûì칦ž¡¡JçµW.k ]«Ù 4¤”¶e\V'êx“Ž]V&kº|JǨüò)5𿚳xתé–>˜óµ]µ,nÃØ{—g¶²x{ÏŒ ®é]K®ç­Òu:û2šÌFZ-Ô¨l2W«Ò(ðÀ¨±ÿjGŸd¡Ê3ƒï]QdÅŽR˜ï#6²Bݸ*+ÿÉÁ+â(¢v‡4vXg¦fM[\A;ÄUZX7§pó LÆøà7¥su¡~ý=W÷£  ®F_ ]dŽŸ–£éè_Æð¹¼Ž] ~ò:ƹ­qný4Û‚ÖíQjëÌ$ÛíSZf.YܾlÛÔÁúU—s]µéØØ²†e8Kǰ´›„„XQÀ‡÷¤º„ÏSè¡NÀNÛ|L«L'7ðŒ¯ùùõ¢JŽaùêd³ZQ¿kZ¢°ÔªÂ{RÔ>îæ±ÿ§¹<¤#޵Æef¨iX¥ u¥3mX,-¤€¡j¬Ãû¸)ŠÝ€,8¹«B¯µÔ«^mèÕTøáPmšLKž¢Øy¦Í΀­Á·´¦öKË‹º.yY¹ÐvÓCZ?-Ú°¨5c?ø1yà¨Ü1*÷ŠÉ}0bjïSL%ÐÜÎlÙqFI´Û´#ήŸ0£`ëmË·¦çÛØ'¬«êä·„Þ­ó7`—ÿ– ¹F€>¼EXjÝdˆËØCS¦©L4ò™k0/¿¥ ð8G àhj܆À©DqŸ-IÛ~^ÓsøêÏKØx*xC½\ßÃÑ•™qs$JÐÅMu¤ŠØÅw¤Šà ÆL©"z‚1³×Gá‹ÛúHñBÍó{KÙ¯U·ê¨ÚÅ2®†`Åը܊Á¨pE‘‚§t„T ÇöôØž(ÎÖŸp3¡’HC)k™x²'Óóä<•ÄSÕñTtœ^+L¬0‚Ôâ™ô³ ]Ág eu?œ;ºnî[Qñ^ù¤ž\b:uë1—æöL;Wö'X®½\ÃgœéËæãÏ”›ÕùÛ F÷¿¡,göö>Sê,l4 Bºß’:»o×ÛEødÑmUçÔ4º‡›®‘+¸?¥­ãe9^Uš-~¿Ï](ãx›ñó‡6ŒcI¾|Üò¶õ†;÷2ôë¯Ð9Æpö—Zõ”j@Šá¡Ô4ç'ÅÍz;_¬ë‹-ÕžÅË+&CiÉ×ÏúÔíæ+úP aó éÓϳëŠìjXdWX&¨éñµZ·_[~EýCûë{¾ãÈÃý8¹D/qüêfr}Ekïf_rž ášF\$Ü*_`>øŽF燒Î#rçé¦;»´œ#¼Ñ#H5Þ#›á0Ì««æ« WœÏÓ+zs­¦í.F|ZÜ©ãÍš6¼.Wt™¯ïZ$t¦LÂÂ}7ËŸËU(ºÚççÅf­ú^Ž—óççàã3R©Ë® b µûýg?šPÎá:_.7T‰aºEfûE4týd'/ÁSÌa{mßLŽÂ &ûèm"ÓÉ>¨Tèý®ÀƒIÙ¬èVyMqòøˆ_ûOºÝ†”RS^‚i#a‘â)Ž ÔÏ8HøÙ„q5~:IÛù¾›ßšçw盟ÂdëœfÛ“i+[à˜ýk²½å|”Ú±†Yë2CêË˹¿®Z,»ËúĘ éØÁ¾Ç™ßÿ‘ÂRª“G ªÇOÛö1­À».äk~ÆJßÔùsÖjEý®·»•xÑh\¥ñ"O}‘Ç¢Pä ¦\Ʊ*•q‚1j¬J…šdL¥«R)&S±ÕÇŠ-Á–ë)V¥zJ0>(ö“dúB¬~=uè˜ÚG2¦ö¡Š¨},"bïND„ ðp*-J¸äÃZ°érçÒËbÜ&·´š®ì€»ãÍãɇD£_Uá&’çùh#Ç’HC¾óo Z7Ø–&™âV“ãFfýÝIŸ¿,·?)©óåK«Â0^Ò<ñe]CeŒâ¶UUù†à¡5i$J¤ÅMi¤Š¤Åi¤Š¤ ÆL©"i‚1“ÖGI‹ÛÒHIBÍóPãp…³© v±Œ«!Xq5D#ªw£bp'* Ç©¢€]Û «Ó!T ‹É“Ýý&ܤXBm=vyƒ'b¨ ™ž¡rÀP ÛÐ÷°)ïRUÇPÑ1T0C^LN¾gj²f–áTƽϱžùŠ|ù=ÙðžlŠÌ”…–èUZÞ˼!ßίþžŽ¡ûŽ9ÐÕõþìô}¶ÇcY!y$J<ÆM¤Š<ƤŠ< ÆÌ#©"‚1óØGyŒÛIyBÍóPúUìEEÚ^¨£j˸‚WC4¢jp7*w¢¢Ä#uçt ;ùTzÑÞ/˜¨eñO·É#ÖU9Sè…¶§°PX…uGaÙQ§Þu×IËgÐ=Ü4žîÕ=ãê<®ƒÇœY%É·*øÆ»5œ|^%þŒ¦¡‡輂®ñ´Åï–í>Îá$ t’(Ñ7 t’*Ò7t’*Ò)3¤Št ÆLgg¥3nè$U¤S5σíëÒ×tÆÕ.–q5+®†hDÕànT îDE‰NØOuyp·„³%ž¹ÂÙ²LÔIØœ|½‡û¨_Ìškºª³Û1Ýÿ°cþÈÖ¸Ãj±ËjñÿdÕäȃÀ*‰«qÓÀ*©"«qãÀ*©"«‚1³JªÈª`̬vÆQVã¶UREV…PwóàDT£â ’±TDì#ñZì=}­õ޼ÖH] óP!íµFËŽQ—¨©§$ñXÒZXÔê|~Û.ŲaHm€´è!ué< Z_ržB—:¹‚…Æv¤¶+km(kŸ¨Mêªë/ÌÓ­ _n¨9þPýË£ôv6ƒü¬f9ޝòÓÒ;K~Mft =ãëù$4ਗå®6{Ýa®©ƒe‚¤Ã9Á#i1µì G[BZòi*žPrcV¼ëS%6xr”b‚œMüEÍÎ.R 9'ÙZ‘gìZÞ9•|Og_údâ\:ñ\BšJ↜IH”IÜ”ó‰RL)‹(%Á”rHgK!qKÎ $J DozˆCia!½ pL1*÷ŠÊ}0brïpLí}Š©R6),ƒCÙä¢ id—V¬È±F>Z.7¸Sþ‡ùj[’Û¸¡¿Òœ”´žævUªÖ«uYUŠ¼Ú‹_ôÄõ2+& gmÍ(öoä‹4€æ ˜Ò¯~|^Zw^åX3Ý´ø¦‡ á5§ å59g3é5Yg3íb°Ê;=VˆG¨É<#Õ|Y¤%t¤+â©`̤ J¦TP2¡²S “h˜E¶"…gdÛØÑOØ`bÍ–ÉZÝĽ}vžíá5Ħ$õÈ%?ã’ŸqɉRxöGìOËýD%1h±ç7סOȒˇwàŸ¾þgEˆ2½H->Ì¢ƒ(l I5T¸@“ z(3!€&ôP愪4P#…4I §—Sï1Æ"ŽÆê¨dIG%**{UAÙ ZTÈa#û9ŠYgwJ:aPw´‡ßhêìÆÐ¨ 7hûíç#¡rZê&ˆ~žÐœèa# pïîÃ"÷Y̺u×ýz oÃѲ Ï5LªެnÒé…k»œ¯–û¥ãýí `ª“»ÈÐ=ÔõÌì.»Yì4üé^pÎí¥_Þ¡ÕJ?uîF2DÉÆÃf %­òj›¾i;m³„ÚÐÀñ%ÿÆq^hì}Ò~¦_| ŽëÉq³xsìžÇ;ëW®]¦½ˆ¯¬ç'Vó‰Ë{íÃzô-5|K?òcGl!  ¡Sƒ0÷ >_õ1yìº1¤Î!´ EÈ0üâKG7ù¾Pv«ä4 ÐïàŒàøñð‘M ®Ÿ8Û´Gwwu³ÜäºJzjPÂF9Ãþù$GöäŽw¢ƒ ‡yÇ«nqÒT¥Âˆ?™Õ”U·ÀÇ}""%EÌuHP.(yq·šr Ý—n cjà%pL)¾¾}rÜQ?èe5¿ gW÷ýáwzþbeIÅÕÜð$-SÒCÅ•5mI_"Ô4&#˜‰PÓšŒ`ö¦¬š“+îD¨iOFªéò?—@ôUªuTri œ,ålè(oWy;:høS†­S:Ÿ‹²È¨’ û¯BÉ2 ­^I|I¢Êd©û`Pô/¯s5ì (tÔÑ’¼¸hüf¾³VjËw`Ýú•÷…é;8kÕyŸ6ùÎ-²Ôì×S?)ÐÊv¢%‚"±~½¬fIÖ NtŸdeÐ «ÊdeÔ"«ÌdeÔ"«LdeÔ"«Ld‚5²±LVF-²Z©¦s(¡ˆdJIÓY Tri œ,ålè(oWy;:h‘5«`ó_¬Û¾ÒÇ…µoÑÐ*lÁÐŽKê;ðw÷g™[ü?07‡2+-æh1Wæj2Wæj2×fæj2×fæÆ`•¹z¬0—P“¹Fªã9¤µÉ\åRC§diè” ¶«€ÓvÐb.v×圹› äí0œ¨-¡åĉc¤9æužWØ ˜¸{D%¸§¯"N_M_YÂ÷gÓWÁ wºœ¿ ÉMËÂo°Mß®=<â ¡o—m9 `5Þ%Y’›Ó6VjV–sÃF8a”!Í@5aÁ”‰¥ŒK9ŸX‚B –+û¸rN+‹"óè•RörÑeKÞȽÏ|k9µ„a…¦–§–ÿ1ŠlÇŒ0Ó44½âgûs_ej‘/ñUÜ;}ÈÚzÒž†ã·.å_Éoš! ù%Ð’_=Tä—PS~õ`‘_BMù5‚Y~ 5å×fùÁªüê±"¿„šòk¤ZΑÜxç 4eq Åm¡˜ ÷·AâÇoCiSèêú¬Ò !QXPg;BK‘àǾ[kFÂ5’wýó§ãîþFÆïôóæÇ‹x—ÓØ’NÍO ‚ý ŠEÅöÉåYù É"_²íƒlãí(Û>Ê6}‡·gªíƒà„ÕæªíÁ/òj+Ú›LŠ:5"Ú…ˆvʹmÙø¢^K6"7'Ñ~åÚeÎ7>!ŠÞ±â¯”re AØð16n1²¥tî|¿êcòØu#_žœðã rÇ\.ÝäGøBé­’Ó0ü±ƒ®Ø9rJ5t«+#ªÐˆXÍr“ëN™{×ÐÉŠeу²¹‘9)éŒ>”Ï:K¤~úYý@Yÿ!Kðl y8 åK<{eUL!|qC/žùO ¬ ÇÔLþ“áÒáe©ø»>}AO;¶ø—ŒÆ¯l&-€Ñ†Ëf˜ŒÈC e1z(; –Á¡ä/Zöb„’»ÄPÍ\ôHö-k1ÒS¹"zú*Ç-é‘NÁ3Ǧ¼”Qca>UFÏ«²4£ÆÒ|ꌞ;vmiB­¥©*=WÚÒ„ZKSÕLK[e£¬L ±0£çªJY™@cå³ Ñ0ø"»€ÎtÖ0Èl‰TÀdö©“…Æ}i‡S'3__:ú8; MA¦¯¤—U"WZÜ`à‡/¨,™ nûòÿáÇ• $MÞ¿¦™äêöú’¾ñš€VǃŒ2ÃAô—w„^Þ¶Ðh±#Ÿ±Ë¯†¿a8‹ó”úìv°bÇc _–ƒâ7(ÔE²0†FúÕó2Ü) =ž¤G@;‹ÃS§ÜmÇðë±›¯ƒé wCúÀ*dZe–ƒ‘•Çc÷;Në(ÓEÌ4®uÍ÷nïn´\‹Æþ/åþ¨`ów×ä§EÂ7nw¯ñ°MW)9xC;¨åÒ>wŽ2O¹m0•´sß·ü\/"þ çÌãä–F›ŽëÒóàèØ3áäy㮆vùÌ·aoßÜßû½ƒíüz`˜³ ëCÞØL®àû°ƒ~¢K‡_½¯¡Öß·ÿ‚uYzøq×}›ÛnvÓÙc×û¶Â5 +0=~þå·þ…–a´§ráWŒKŸ÷¾Dý3üÄÉOÌpº˜{êIn…zè“QÀõ>½h:–‚Î¥f4¢UŒÎ›¥“¥U…«Y±~(ƒi¾•Á-Æ>NÉÊÄÓá”êmB4x¶cž6¥Á³Ó`Ðo¨ÁœJPSrèªr.äë¾f¯âÇÝë¦ÂæñýÁÝBwü‰Zfwy> endobj 144 0 obj << /ProcSet [ /PDF /Text ] /Font << /TT4 475 0 R /TT6 268 0 R /TT8 269 0 R /TT10 270 0 R >> /ExtGState << /GS1 478 0 R >> >> endobj 145 0 obj << /Length 5669 /Filter /FlateDecode >> stream H‰ÔWKsÛ8¾ëWàn­h‚œ[b;©GijÉh‹±™¥I•M%Ù¿ÝèDÚ€j÷¸å*“Ô‡n ýõãínu±Ûi¡ÄîÛªŽk-ø3/eë þ—q¦“LìW‰ŸîWï·JÜ?¯ÖIœ$ z·Â\ôsõE^}¼ü#Zë8“Ÿ"•Æ¥|ŽÖ¥¼Ãã¡Y¬ã$úk÷;î\ÑΠ¨TI%Öe×…ªÄî  !æºÒ<®¤¸£uk9Ðã[´.埢þ?6 Þµb;Ñ‚†ŸícËàdÏÀÖçIœ•YÂæÆ²4µ¦©M“›æ¾ªŽvßW×»•Xé:Î+¡S¤bmþ?µ«oa LâÏ‹".H‘øî‘ #´M^ÆúÌ <…WîÆ«8­SFÐÂ?Jõù=¼ü—ñV@þ*ŸÄ—¿±_•4)üqU¨"Îù«_mWoMçgÂXƒÅ…1ÝmmïoÃ6Q*ù­k(äæ Â5Nåa[ŵlŸéÉâ,—ýx‡ÁYÈ&Z+ÙõG–j£u¦ð‡ âªN+ ÆŸk<´¼S­rXÔµ{Ñ}Ç@3uã ,úJ#3eY£K°¯cmþÓ‡ç¹A² Ü:CìUå^!W¥RÀò:ƒ)—úå*I.¯ã¥TY¢¯T‰'C$Í_b/âªòŠØµEÊ R°ÇÂn?j­  l…µ'ò£ÇÞèÍÁúd½¥‹^¼Šƒ7“WG5%D ä@H¡•܈l%¤¾5DÐÀK Ë*ƒ{G™¶á°raZÈ7ƒèÂb4!)ÅôЊ· /êL"æ5‚wý#ȱ’bÛòÂÅzˆo{Ö˾q+0´SàoY*pV¬ò\Ÿr´v9º&W4ýnœmöÿŽÒŽ/Ú_¨KË?ÅWIko€±pÂ5}]~¾~³«*øéZŒCÏz¾F„Ç/ØVT±JC´"0Ä,¿¨%¡a~ù¥-Å ±, KD#0̵€Åì(9ƒi¿´Ø‹:‹ü¨=³u‡ò¢!Na ¦3N)Ç)å8•NaÜŒb{Ä"ò!‚`”âäÈ­yÿŽá”aðƒWQ¼RE9Û„´2Ò:Èä†O¥!#JAFȪ¢/ƒÝõZ*'-ï°«)±àÎD\mN‚Ô§É7ÓÔ"írˆß-›Ä4Šf¿·k ”ä‡hqþ"¸vF5>Åxk¬¬$U*jˆ=9²ÜMìÉåö¹Sb³FÔ©8KÆd&Œ!0Ä¿¨e ¡aÆø¥-c 1& KŒ!0̘€ÅΙ2ÆÎ,ò¡§3{ÐÙ¡ÉhÉàGz6e4 ˜ÝÌèY7{t3ÐÍ—Àè™Kði&4¤Ù\ƒg¯È£šÑ€êóh ±i]ÆJÏ›­³Pû‰Z¶¢A—•Ħ7ƒÄ1RIöSì¢ «å=/k¹ÆòƒWó×è€ 6 hà‚îqqžH¤™Ž¶ZÌ%yÜ·Þß¡¤C `¨&“t >ox»~‚œM¾iã­¶a¢Ækýh-¸áJuýW믡ƒO¡ÀIJûû±rc ÷TŸ·ACά°¨&Ë*ûhî[žqy«–fÄU‹£2CAæU<`änÀHÝ€áôÒz;`€ºÓˆáÖüf±Û)˜iÅîTèk²2+NÕgV|.á|X öôÀ–+Opb¹iá£ÒZÁǶýá„§LwÖtölT޵J*ôèUû|÷ÔH £ÞbXækƒ¯C)ÈQ2X ùm†1`0Áøem1` $)C,˜ ü¢gAë"…ç"®¦zé?ìl ÀÖ ?ìÎå‡!5AàåwÞ$íøÿݼâN˜ÍÆM¹N¹q%sãJ5WrWÔr\Éh\1”]Œ*ŠG•ì4ª”4ª°e'ö¤uxø`0Ä¿¨% ¡a–ø¥-M ñ$ KD!0Ì”€ÅΞ!€ÁD‡û¤HŽ$ðŒ#ÃO@±u3¡gÝž—ºí%zæ³VH3]g¯(<¨TŸGÝNQp?ónGÛn§ÊNÝ&(¸ã瘦çš_Ë7—ýˆ½H-1­Àã&Zgð#5šŠ{IíL-DXçº;Æx,Ònµ‰êÙHTØþ¤vý õ 5uN»é pR“ÜhSîKÉûfz„Ôöü#· Z.ä M ”mÛЧmÜj£’×£YæŸ&n»ÁÒ—›óЦéz&DŒCo ÇÄ&¼LoùUpf„·oðZÌŒÈ7£íÍнhºmî…å}ÌÕpKªÍÕ”|5x:³r?¶öPæ§WóÒ·ÍžÞ 'ÓÓúž5XÓÌ áÖÑ^D³ì¹×V~ä«ÃƒiN¹[¥†Úö±Üm‹‡†;×½íUF(ªY¯Œ'ž5µÇEŸÍl‰³^ø;5„ã-_Ž’b©t´‚{Û3÷ãË3¹mlÓmlGØ5èüm_ìBŸìϧ¾›°áƒ›/=ÉÛ+‚’kn„ÙA㾵Ρðâß¡i¤ï[°¼¬u4qW¹á3ØÄd·;@nþÅG²W`ò¦”\pJFMéȆ&eh^$¯úL_ÛÍË»àsñ£¹åd>9×¾”ÎG¦å®LœÏ£ÙU¨”k¾©„&Jjó « 2ù¸Tûÿͨ‚yE%4°@ ‰2+\ ¤¬Nª/yŠÝÓ›ý<Áöü¦y„Jk˜‰à?"œˆ”K åt=ƒØ[«¤ÂxÕ>ß=uRÃhGžà-†e«_$¶Cþö5šö•Á@ûå•Ñ`ƒæ”Ñ@ ’5M&ƒÁ&3 |uÎz=´ž¼ñ;ÙêÁœ-¯±Óa^cÐÑBÐås¾Þ6¯ 8'óÞ¶vqžR0&J% ˆA 0²D"¶Ô\8WrL]ïˆg—ìÔZRΠm%A¦Z ô?Öxhy§™œ#[¡r4‡Cß1@}“E_i\„w^]Ò@3ˆà€(G0£ÁHs3ˆà¬‰`ƒ²˜Ý‘Ä:?…MþÂb/ê,ò£öÌ^ÔÊ‹æ¯\C䥳U¥k,\ˆ¦&D1õÞŒb{¼Ãë/åC„­¡À""oÍ»iTÿÃ{ùý¶äpü_Ñãx‘ú43ÒHÚ‡²Ip-²q{÷о¸±Ñ5εs³×î_äÉ6™ýÜ>ÙÒWœ~8d“3f.’ñ«C(n|ÛM[ÎÆ¹£ï^yªÅð‰B Vû¶­Nš²B¾-ò­Â•Ÿh¢ÞB[˜ËÃkŒÆ=Òg‡ š†åj%ß"5¸2wP1ý>Çïv¹rˆnWí?æ ÂêÞÙþàÐÐXáO¢þº©„?©vøëÖþ¤ZáoØRø“h‡¿±cvLŸX a~ºcU-;ÒUY³ª–E©ªþM‚ §):•à¸^H5¦èÞר¿î)û†RªW?î¡èj‡ˆAÄÚRBp(Y·q§v é7ž¦í—9Ô°Ø­JõóFz éœXú™ é›V{™¦Úí)b!ªÁ“~ ãûÒpíK¨*—;±Ww›‡û=ËœŸ Òæ-DtSA„TÝZi9a눶„‰6"ÆŽ‹;J‰sŽˆ®Nv¤©ãšu²(Eµ/†4E¤Të>"?¦¯ˆ¾«!dn(Ïvîñƒòé4 ÈHÂ"â_ð¯§òV@MC¢¶ªÁ¶ b(Ô-|˜ã ”uµç*zd»¦'éyÒQ‚5y¤ðŽÜ Î8’t”QØÀA`*6$.,|È-MqKGnaŠ`’ M×c×ôD—$0¶ªþ;ËÕ×v›ç‚Å l3oî›Õ)H1àÑ ‘h¤› H¤Ú éÖ©H†-D¢ ’±ãâŽpϬaIlÙéy1k/8ñ|BÕQÅÁY|ѿ狨,¾Ïâ ®W†eQ–Ž%k/žÊù¸"ªã¾(RK•¨¥‚ê¯nr6¢”ŽbÈsS…°uÜIÅ95%§¿žƒ¼¯ðFÆr‘.°Ø!lðióP]íwü°çâð3ýÀŶ®DÂt‘€Ù,ÿž ½Ø­Æ®¶Ë§§ÌðË-cìüq²õÜ2ú Yå-¬ó"¤¸„‘w”õpEµÛnsµÚ`Ò£fqy8|á;üãóaýD—vµä—9åà›çÇÇ=¿;@8”_cYüæý¿º¿¹”…Üð»ûŸh·œ¥1£ÖŽGçH”˜žè $ÖõWú{& ¼Ë/îå!»ïíwä—Xê´0”& +•JâÄ>H¥ÒçJ^òÏ÷r&¾¦C©!籋mîQpø'¢9[šériÜŽMèjôë,_&o–ù÷3Ü%!&ô|Zwž¸Ü8]0–÷ßf>Ág¹'ésµk¼ÿ9ëàhïáo랟_£Þvîj†¿ÿü™æÝ´"±éŒŒ§*9ß¡24ÇÙÃw¹•ÔŒ<ªYJq§1M±ÁÿšJ¼ŒØb8Ê85¦OÕ f‹4VG)9 ÃÜë;C‰×fÃÑ"#¼Ñ­"$Ôš–ï!Ùtá8}AŽWÍlE\Ÿæ­$KÈhý©“u¹8ÓÅi†,ÎÑeq‚®ÊŽt•rõK¹ ’À¦…£/RC$ÝRªhsb¸ÞäêÇ Ám—ßrX×ÓR ­©Ðbê÷3,è¾À@+§e~$†9\6¾:©Ó|_VáiŒ˜w¡öõ¼®?Ì`4øñúoÈ\ç½[smæ¶í°8óÈx ƒ»EÉÞr΂šwAé±u—o®/ï¯?|x áK;ïøó 7r…ù,¦TëA¹ÐA,ýv•y·ç¢‘°ÜÇíº¢}uTü6î‚«IÜþVü>ßd­“õ#=nvËÃf¿+Õª”¢ÕjMYºƒOÖ+IÊïݘ×1å+¾êÝæÓs¶…â¬Êûíi{!Ô“U±h¥(ÝT²©f¢Ò%W‘j¦+Ø3©fÒ2Œ9oc5ué¶’½H5˜áêr^šÖˆ?uµ¢N|©©£³4uô†¢ŽÛUÄq;Šht´a€ôÒ`‘ÄTŠ ÏÅÄ=ù@maG¼ÂÓ.Ç7ôœ+ì%ÓÊ$Ä2X¢Ákn*' )€°Xÿç™ÇÃZé…ŒÕM^†šSU[©Ê—TUÃ:1Y%÷–5œ4$«#ÒÐáC2HcÑ Í0eÒXµH3Œ™4V-Ò,c"U‹4˘H5Ò [&U‹4ËÕåéj'äèjEøRSGgiêè E·«ˆãvÑ"-¥ãvæŽ5`*C–ÜÅŠ[¨äîÎK<`íKy^óˆW[¨‚ÃJ¯Xþ©ÞÝ^ÿ1Æ`ÄþÂûÖbì\˜p5ÞbåÑ`¿s à”z 2-ÈtSŒT2ÝX #Õ„Ì0fÈH5!3Œ²b¬B¦Û d¤š®.çLÆTqâIE=¥ˆ£'ÎÅq§çÚ¸‘sÍ¢«júÿ']¾ (pÝîr•¡Ä†/’[îèyýçkÿ,`mœ[å"i^ª¡Ð•E.ÕTØÊ¢‰–nÊdeÑK7e®ÄTÅJµª²hB¥»—]M† •®êªxIWŪ*{UEÙ*Zhø°ž ……!£¸óœ½j±OÚRã]•a T*B]¸Þrǃr‹õcAúÌf¼X¢{—ã¾÷»Â¸OPÃAõÖ¶@€´šÁ]3Îp½=oßWw<ç=u›ÉÝ_ÞÊßyUÝìžeuk^ÖòÀM[€K2µþœùÒaÖÜaþ2Ãr9öp;âøy³@ãp<·çöî¢úô½‹«Ë»›fcÐ’hQ«› ¶¤šÜêÆ.©&¹†1£KªÉ®aÌðc•^ÝVð%Õä×p5CÆð`]_*;ËPÙºÊÛÕEÞŽ.ûÂ0LïÆPn'÷àäªÅæ×™o¥é¢áF{Õø¦ƒÀ'x[wR¦ ¼=Á;x»oë r·™Æê—åö™ZÄàªånU­˜ò6S>yÜì~ÞÐÉ.9KmvU¾î;è8q”Æm>=Ãä˹©âwÛõü„Ó:áaœ’hqª› §¤šœêÆÂ)©&§†1sJªÉ©aÌœc•SÝV8%ÕäÔpu9‡˜LNuuâKM¥©£7uÜ®"ŽÛQD‹Ó.Âb¦œúÂiC!üzùi·! Rgxùåöp%Ip9éæéÝ·YèÝ# …e*—n#ܦ‘ÛvÂmGÜö…ÛT¸mFn[æ¶9åÖsÛsÛü…ÜúòD2¸eÑàÖ0enYµ¸5Œ™[V-n-câ–U‹[˘¸5n [æ–U‹[ËÕåêÞâÖP'¾ÔÔÑYš:zCQÇí*â¸E´¸m¡LSn ¶Q°ý ìªë5¶ŒpϾÁeZCaíÊÈPú8BÙL LÔvʶ@G(†2ž@yŒd°œ ©ö!ªC‹ª-§Lª}ÐúЬCs$jƒ>4«ÆÐ-eh=`Ô‘YÔ–€"ÕŽ)udõ‘_ÿ7öA_ž endstream endobj 146 0 obj << /Type /Page /Parent 283 0 R /Resources 147 0 R /Contents 148 0 R /MediaBox [ 0 0 595 842 ] /CropBox [ 0 0 595 842 ] /Rotate 0 >> endobj 147 0 obj << /ProcSet [ /PDF /Text ] /Font << /TT4 475 0 R /TT6 268 0 R /TT8 269 0 R /TT10 270 0 R >> /ExtGState << /GS1 478 0 R >> >> endobj 148 0 obj << /Length 3852 /Filter /FlateDecode >> stream H‰ì—ßoÛ8ÇßýWðQ>ÔªH‰ú±´In‘Åv7;OÝ}p5UáØ¹Vn·ÿý 9CJ²gÜ+î€Û‚±­¯†ä 9Ÿ¾^Í^®V¥ÒjõnÖ¤M©2øó_ª&-kø_¥y™åjõ8˼øñaöòÇ¥VŸf‹,Í20½›¹/î¥/³·ÉùåÙ¯óE™æÉ›¹6i•|š/ªäÎýÛ=µ*OË4›ÿ±úÉÍ\ãÌ0P¥³Z-ª"m¬®ÕêRJÇ2EZ'êl7_i™lñãÝ|aA¥‡çþ?®I¼kÕ²ÇÖôÙ>¶$öa ä}‘¥y•[ð&÷ž\ÓÖ¹–\­Ze²ùêÃìb5ÓªS³²I‹Z•FF-üÿíì,TYjÜóÂÚÔNk¬ûÎØÈ NSTiù=’_ƒWÄU°v§4rX§¦&MçîMàUÀp¿(©7ê홺ŸUphÜi4°ðÇ™Õ6-è×f¶œ½öǸ8qŒKð¸ÆcŒ{­.ðØ.ç 8b6Ùíú÷ÝöA­æ ]Á‘û:7uòÔ‚jlžšä÷ÄÈ"1™Î^dYý>‡73]ƒíÍËøÞä|? 0_Âå2Ñð Ï4˜^l÷a¶ö#޶îÛ{õy½Ù·.uªµÞÞ«û8D ôý¦ýì¶í½?ÀXSZ ñLuQ”Ãá-¢ƒ:ØmÕºHv[¦Jº‡½Ÿ¿‚ù»ÝVÅç›6Uj¹zÚ‘ÞG r͹GÏë“_ÉêoRh×}O^v·û¾Åeèd½U·­ºïÈáõíB«ìß·Ó«0 Áñ¼}EnäÄØ…Â;àD­¬?œ wDþ?æ¬Àj ¯4EjÆŠ†ä) ÖHW° ÆKeØk&/ÜwÎÌI´ŒÜ¦õTƒÙj~6³å8›©ÜKc­iRÍ{æ$Z?˜5“EæÆe6g•›Ú' Hº.)õƒh5 ™5“ =Pà H’iŒy5„RP)b‚JáUòŸÉ^±Ü“¹sƒªåkL°<¹oé‹:o·.%’®ÿ h´v tr‚ŽÎè#è*BÇFèätŠ$L5…Î9ù9ù3r¾9&O#±E /¼i ª"dxãÀTEÔÆDTEàÆÄœhÌb‡· äAU„ê¸q‰2¼:Š%§ÁâÔ!Œ:¸Ëˆƒ;Œ(P¦,á0›S”¹™ÿÔ»vƵ—á4µ“³ïÚo°¦f޳ȵAŽFî5ÀŸ®µ:ÌýÀ¥ÿ—À‚n±*ªg^}‹WeåӚ牯S⩯c⩯$c䩯$cäÕ`ÌñJ°%^‘*ñJ u܇¼”x%¨£Xrê,N¢Á¨ƒ»Œ8¸Ãˆ¯ŒI³âämì rêƒàÜûN¨È³²zzýì ׯ›çë×_Š-¹N«Rb Š[xÓÀTE¶ðÆ-¨ŠlŒ‰-¨ŠlŒ‰-јe oØ‚ªÈ!ÔqL-²…WG±äÔ!Xœ:DƒQwqp‡¶Xïæ˜-Ckbñü®àˆBØ1…lÒ *›¹¯ÈØR l)Gl)±ii"[ªÈ;°¥$¶ØC¶˜)[ì”-ö™-ßÍ[[·õ<[HØ"˜[H•Ø"[H•Ø"#[H•Ø"#[cŽ-‚-±…T‰-R¨ã> -¼8Š$#‘bÄ!Çâàé±68r¬IP1 lâ*ºÝ‘®ÛúÔ® zÊÝxÀïE×xsñ™¦“ÍÞìËsþj5¾F RfŸ¯Qÿ8ÊáÐH4òš#Ö0°È‹"ŠXÓ@"/Š âM‰C^1Ä›…‚) !Ö20È‹"‚øðÆÐkA¼: !§QâÔ!Œ:øÊˆƒ7Œ(€¨¨ó´ÎÆ ²¹#én=íÜAΪu?¶wNpÙ¹ÿFú\Qò„KP»íñ¨ÿ|³šššÑ´KÇ¿íö6í˜d·Æ ¤8„á@7 t³Ù”noÎÜàdù›Ëµ Nól¯æþ»yñ_ûä°Ön)϶–<‚%ô¥çêŠ~ ƒã'¹wÔXº(ak©–¿bȯÅe3Ïy¨ à—¹ón햓LJÛöa×wŽÑ/Ôzv§¬Ç;VÓŽÙéŽ-´×RÃZº-½ÖƒOÖ¸k`¦Þ¯#[ß&·m»õáƒ}Ø#„ èôÑâCz…>¶÷›Í×9œ|@6½No}ÝqÅæŠžtÛ^-Ï®N—Ì‹”ßãPPòXP`ËîU¿S{Ü8¿™×±xµ“ÆSz”M¤¾¢Z¹Ãì=kŽ£ZBT£í‚Çÿ ›ÄÆZëŽÔëÝŸhª6íçvsP!Š}#”…!˜R‘ Uª‚1• R¥:!c¡ Uª’1–ŠÁ˜«‚- R¥j!…:îCVXÂI= 5£ŽbÉ©C°8uˆ£î2âà#Jål3*&ÉUâQÿ{È•p_-)K0±e2MÑÌWüJãœmæÐP{À•pô¡n¤ÖötA€qëZ[± Ü\º<, XÚP®± †rÔ h8¨±V*,O‡è?HVhËBJV¥dåMC²¢*&+o’U1YcJVTÅdŒ)Y£1›¬¼mHVTÅdB÷A‡ÆÏ@—sjFÅ’S‡`qê FÜeÄÁF’5o48òßKÖì¨cÑqÀµ—[oÍ]CaĆÀýnÿÓ̵…ÌucK71¥ÌåMCæ¢*f.o2U1scÊ\TÅÌŒ)s£1›¹¼mÈ\TÅÌBMû9_¥ÌåÕK^ ÁâÕ V î²bp‡¥Ì…Bœ—ãÌ=º\n6{׺cßù«À/‹¢¨\‡Šùcá*¤á*¤í…ËŸFgPSo\r4ÉDyx´t·" ד˜J6yEŽp_Š,¦<Ž×"¯E¯EyBÏG×"K°™^Œ Õ5¥ÕcÎ<_‚ž/A§/AaB]Eq¾s\o²Þoú”B2¥y^yñ4'Q ¹`J4'U¢¹`L4'U¢¹dŒ4'U¢¹dŒ4Œ9š ¶DsR%šK¡¦}pã£ü;Œ4'ÆH²bˆ+†Hpbð”Ó‚#œ&`ÜÔÎë“9e e-Í¥ô«À÷Û.t"1¹J?#ù¹{xßÏW„ÆÊ1æÔãÎJ‡ÊPw"3tV.ËnB9Èc9ÐÉ«¹Ap9øÑǤ&h_ÜãXt¬ jBD‡—í¹àG— Ũ¨Ž:ÏãH>—‰ç2ño•‰2ÞYšqpíV }P'L(” Ô„*ÁR‘@Qª¼)•¥ !˜b@Qª‚)–‡hÊUÞ’ŠŠRmÂC«>ä-‰íÖH–‚ˆ»†â‰mc& *?pØUTOm+3tPù¡Ã®£zjÛ¹¡I†¦Sê©cÁ Mª04š8´tl˜‘Iä‡ ÕS§Š™D~ä“¢Pãu'*ãj|m©L„ºlœk“\Ž6›"ºÅ=ø—Zº&ÑÇô"õÒ›LêI[üÕÑ0TÕz4X÷ûPæ¨0îîÛƒ'ë­ºmÃ¥Ыn}9–†›• ¨g÷a¤mßþI³©]¼®Õ/ 4;»¾x"q±øF ¸^^©€s¨":¡Z@ë‡Ö÷…›ØÉT2ü‚^¯é­:*š°üSeÂi·ò+u¶YO§úÁ¯ôåj¥3ýÓ;hº&Í«ÜVìÅÞ&g°ײÝã‡[{‘ÕPlY?º,5üX¶ŸApÝT ÝP“|ì`‡Üš¾ºÞ«ÎaÙçí§»ÝCj‡›KSl§UÊÐÆÓP= IÌ¡Y˜ÍeC!™jhÌ ¿HÕ®|N²Ð@–ÑÚ©U´.š)‡ 4Ùm+·PMqœÄµ¤`|ZýãeÓÛ&„á¿ÂqshfaÍ1jU5‡TU£ö¾®-…ÖW…üþÎÎÇbðŒÕq^fÙfß‘b•ø¡£oi¿-ˆ.çŒ Y’Òå¼1]†î zBPíCPĺ-ýÒ‡¶NÜ~óùá]’ƒú2/3ú±W2iÅã4±Qëó¬ÖM›~}Jìµ.öçlùÒ.îq(æá7|Oi…ûXí†bäAD_˜ç€皸~RAa‘öAv“Â4y×OÛÆ÷¦S'J"šD‹h=Tˆ&Õ&Z¢Iµˆ6b‰hm¢Œ¹û÷WØøMš˜óQEÙ°&æ i¢uNÖn¼>'³¯º h‹€BñÜÓðÏý1cÙ1,?âyN†*hØÔw œÙ怳çEâf‘·´p—3r¨Ý·D\‰½F%ÏÃQc‡šÅ(Ø¡hS§Æ t(ZÌé‘„j6qz¦\ô]qºš“ÑUÙ°ªæ=©ªEœôíÊÝX²ªJ¦®É³çÈ®á´6ä(À[±™ˆÉ{{8±BÓ¬Ên1ud3¸ï¯x9ñ“zñ3}ê—˹g!N= ¹¢Þ¬¸F³nÓ{Ã&‰œz¨ÐIª§-|’jjÄ¡$Úˆs905‹Q]ÍéªìYUó¦TÕbœrØ]3êsg ™ÑŠugAÃ'´®ˆúZ<SžÜ>4¶oìxÊ©\zeÈ<îÜ·ÓŸù$áàÿ¬Zij¬8$WÐ '¶Dýݺ«ïQ-BõP!”T›P=Z%Õ"Ôˆ%BI´ 52ærìVvoC¨®æŒtUö¬ªySªjZ‚õD(ÂF9¤™–C:J÷ Dmð×Ï>w)­ÒÞïaú!Ã8‘éƒÏch¶ƒÒåÙÎ;<å©swnzçéæÞ!Ÿ/t︯’áh-rI´ÈÕC…\Rmrõh!—T‹\#–È%Ñ&×È8—#»Ñ[ruõ*#M]ö¬¨W›RTƒÜ}úûºµV¹µzi­»’§¢àž©mÑ—þ¡êà¼êe8òGaÕçá¨sÏq8ÆiäÿCƒÔâz‚løAúÃ×v˜—N!i„z 3ØñId ¨Ç2$‘Èi&~F¦R…[HÒS#J—°t(Ù•3®º$µ{55 ²º*—5»Ú¦­Ö×ÄÒ½÷`ºquÑ{Ú?F¶ý£ endstream endobj 149 0 obj << /Type /Page /Parent 284 0 R /Resources 150 0 R /Contents 151 0 R /MediaBox [ 0 0 595 842 ] /CropBox [ 0 0 595 842 ] /Rotate 0 >> endobj 150 0 obj << /ProcSet [ /PDF /Text ] /Font << /TT4 475 0 R /TT6 268 0 R /TT8 269 0 R /TT10 270 0 R >> /ExtGState << /GS1 478 0 R >> >> endobj 151 0 obj << /Length 3647 /Filter /FlateDecode >> stream H‰ìWMsÛF½óWÌÜ2aÌà{[ÉNÊ©U,›Ô^”( –™¢@F&cûß§{ºg’Ýòn%›Ý­u©ŠðÐ3Óoú½iœ-&Ï‹ÊX³x7iÓ¶2üù‹ºM«~ë4¯²Ü,&™ï'Ï¿›[sÿa2ËÒ,ƒÐÛ ^àK'×É‹W篧³*Í“‹©ui|˜Îêä6ÛÎäi•fÓŸßãÌ Í Õ6k̬.Ò¶´Y¼€Œ1ã±\‘6‰9ßLgEZ%=ý{7•€òÃÇ©ƒß‡%ƒ·™ïè…%ÿï:wa œ}‘¥y—!Lî3s.¤fKL-¹\ÞwÆÙéâçÉËÅÄš•™TmZ4¦r2pfæ»É;¨³Ôáó¢,Óò)]‰×BŒŽÐ4EVÿ ä×àubÜS'lS×0fs¬ ƒd” ëíwpñ=lÆÏðàGc3sa®ÊÌݤ†¢Ájt°ð‡IiË´à»õd>9óe\¨°úçØ"¦StX$Á¬êhVc-úç FcæûívÃø.blýË„ŸàåÃÉ9§-hÚånçß•ßìwñ˰ɲ77¹[}àÛ›µÏ FìücìöIëÓÌD ^âAÕJÄÐà$TDeñ j#r(»HMDŒ âAÕBdz#õ6|¢%¼w̯€Ž(”Ð% ˆÐ!W²@ÅHÊv"{²E?ÛðÑzÎØã^ݵ¾!8:ϳÃó<I…Fògöê_­dl%Y–Nó53‘Cƒ›ªÚ‰ü„PÕP”`vBUKQ‚ÙSb°h*rlpBU[Q¨Žûª¯ÈèˆK È’Ð ÒÀ!Ô|¥´@ÊØW¢r*ß—$ô"Ù‚…8,}ó*ØÄ ùüŽûç”öÅñÕŸFþTVHö'RBÙŸÕüI fbTó'-˜ü‰QÍŸ´`ò§!Xò'%–ý‰QÍŸ4ªy2¯jÙŸ4r)£, lˆhHWC:"¨ùSoOö=PäGN‘gmübŠ>â4¹úÚèüçŒì6×>šÔŒD FB¨j$rp0BU#Q‚ÙHUD f#‰Á¢‘ȱÁHUD¡š÷¡À\5#‘ÑÈ¥Œ²d4°!¢!] 鈠b$E ÝG56’. D±âYB+~]fxIFR#)#iFFÒ`CuÑHÚh$õ`$ I}l$Å`$õ—ŒäÿÛ3ŠªM]£xƒŠg(¡ìŒjž¡³g0ªy†LžÁ¨æZ0yÆ,y†ËžÁ¨æÕ¼ Í2d02)‚) LH`ÈTÂB"¦™¨£hFf½Fü°yëUêPÉSåSâM‹Ÿ;eÒÝ}AD—,¡ŽåÒõ;*ø¿_-CÝhÚy÷ËÞÏ=G7þ r°E­ŒãO8²¯ì«û*³Á¾ °¯‹s¼Av“ùT\VŒœ+O¾™:øÅyé§Û¢o­ÈCòÄ`I´—<ÚKNöÂ~š£½tæ’o|ê1ñ'¿»N>dif¡Ø3M”_æe=E^rg´SÌn‰ËÉãþ»ßìVhÂÏÌòö2NÙŒw¬á+w O ÖÒÀZV=¿¶ ž,i× Ì¼_F‡½Nnº®7ìý{²b¶uþ×ÑC~…ÿóޯן§P÷`Üü:ûxç–eÇlãi²3óóËÃ$«Ä›7•<+°ewf·1{Ú8¿™o»ðVw°ÓT¥':h£÷»Õ‹ÙgÖž²Z«ox»àñ·Ô€¯Öx’–XRg›OjÖݯÝ:=œ0)V4á‹nÛõw«þGà $•c ]ÁNhäâÈe¸Í*ÀË{ò±©âŒ-‹À—™ª­ŠË³Šì¶Ü)ÑÃðŒ«2⎻—CK¢4-Óz10´,T;144,Tû9”۪݊ÊÍJ{12´*T;™^¦Þa 6'?"X†#‰ ˆRà@† ‡„e4ä$£JÛâ ˜\6þÆ9qÀ¿Ï®ø3¤b·&ƒ§3¬JŠÌw0tÉ㜯§ðUâZô þg®^½7&ÇG¹Ö˜À¸Í3kKµ1¹z…çAQÀÒ†Æä-\¡ ý²_ GÔQ_{&8²ø€Û· ‡2u üÓtÊ "T%”•ʨ&U%˜µÊ¨&V-˜Ôʨ&W-˜ô:K‚UbY±Œj’Õ¨ŽûŒ:8¥Z@G\Jè@–„lè®é &ÖÒAòœX³“ÎÙÆƒj_õþhα1Ͱǡ#Fû½Ê-ÿ”[9, E¹jÊ•Cƒr U•ûûe“Û6 Dá«h)iaʦd-]  t‘"ͪ+‚“…] ·ïp~H9š'ôY æÓÐâóqžl•+*¬\¬•+*¬\¬•›ƒÝÊõc­rE…• R÷>U®¯Nré©%YžZ²á¨e¹ŽX–㈨r›”ÞiåÎ,ê÷qÔî¼åþ;Ô'1ºŸ¶Û.õ§R?±nÖa}Ca_Sýô!õÈ÷©8úºÑƆî’5ˆ‘*ÇJ)Ö{5¾ú †¹”R”R¢áËÛ›ôÍäI+¹qÞÔ:Îù­þ4Î|.4²\MÔ3¿këü©)Åú¶ÒyåKä’zöüç6xž^ÏÇd\oªÃusrwÅ6¶É—ppœÛÆÆ¾eGßr<ékļ@#!(…UÏôiÙÙ< ÃIÒ¥f-JN·ödP_ч䲫/ãøwÕ°ëÑ×ù#‰qiMÕáô¨¹í’•¬È-.;%óÏÜé&»Sæåùµºyëì®ÈÈÞTˆ>^ÿaŸýkS²Ú¥-ç•õó¬’×¹û©ÛEÃß䤨íIØþ"ƇNÂ8üÆwö§Ùô Ÿ€Î"":û¡FgQ!ý`£³¨Î Xé,*¤3V:ç`—Î~¬ÑYTHgj݇]Z«ˆ-Ôw©vÕœK_µdùªeÃUm¹®hËqE@çЮ?wí"­T¢jP^¥JݶŽÖ`äšiy¢4Gýãøô|^ýzýRB•þg˜6LÁ€ß«Ó”†)ϽQ~“)êýª%¦éã õQŸ†3êCF} Ôg"„)é—;Ï6%} ;fÛÍÊy&?èÿAÿÿ¢ÂËvè¯" ?Uú«Šè‚•þª"ú£`¡¿ªˆþ(Xè_‚=úƒX¥¿ªˆþ(Õ¶3ªB AwÐdóXÃ{‡nNÛU6ÝPþ¬¶Ý,.ì6ºÙÀ¬zX\8èF³ê±YÁù©?§Î ¸€ýI—´ 9\4… endstream endobj 152 0 obj << /Type /Page /Parent 284 0 R /Resources 153 0 R /Contents 154 0 R /MediaBox [ 0 0 595 842 ] /CropBox [ 0 0 595 842 ] /Rotate 0 >> endobj 153 0 obj << /ProcSet [ /PDF /Text ] /Font << /TT4 475 0 R /TT6 268 0 R /TT8 269 0 R /TT10 270 0 R >> /ExtGState << /GS1 478 0 R >> >> endobj 154 0 obj << /Length 5180 /Filter /FlateDecode >> stream H‰ìWKsã6¾ëWàn­8|€¯ÜÆÏdRj¤ìR9PÇæ,Mªlzÿ>ÝèEIh¥¶6—T¥\e’úÐFãëÆ‡«ÍâÕf“«Xm>-ª°ÊUö¥¨Â¼„ÿE˜æQª6‹È‚O÷‹WïÖ±º^,£0ŠÀôn/8èëâWýæýõ‡`™‡©þ9ˆ“°ÐÏÁ²ÐwøoØ7* ó0 ~Ûü„3—438*â¨TË„U—jó)¥æ¾–Z]ÁÒ„¹îéñ)Xf€òOAÿkïµi@ÍÏæ±apt1ðêM¦EšÁ ar»²$qK‹3\š^Õ÷J’`óyq³YĪU‹¼ M©òDÁ µ´ÿŸšÅ'(¢0ÁßM–…Ù’%¾{ld„¦1E˜ÿ/Á"b^»K/8“’±8E-À±>¾ƒ—Ÿ`3>à àWGêgõëo‘Ú- ²1ÀYœ…†¿ºÅzqeil.Ð8‡I™Æ´·)ïm™UDÛM°ŒKýÐ( ƆœŠB£»nøTº RÝß«æ éˆL³Ã_¯À8¼>zújÁC <ih=¾ðꎞî9ù¥îÕ¶qvM?ªí÷ )°Vì¾…××+Õöj„8OýØ|ãÙÔàV¥à™„±®ÝËí’œ¬o(üù1X¦z½²EÁn…±1ù¡4*WX$˜¾Ç`™Ø'Ú[¹V NoÂcV x·Á^Õ<ª…Ú5úŽ>Ô[Œ"Ómçüª«ácëø’蕺îêã©~pE Ô±d€Ðªk:õ+ Ú5“=0v•вnëGø(s l¡×Í 0˜©ŸZn&ßáç¨L!ì7ÍóÝS»wÅ¢-núÔšz´"³´L³+JfiÿS]^ÂòÐÆÒè?ÃbÈmiÊ%MŒaÏ«d' äR²E°p¶¦ -‹} –ÆHXbNQèñaY ¦ÁCŠÒ„AØšò<>x¶V/|XžÅåƒÿ¸ Aɼ Mç Qe?Ë r—ëÛA­_°ô2)Öêõ8>ÑiØn_F hšåøõ ͤí^G&W¶I¼îÕKÿ_("ôÐc+¸WKG¿ì÷î§±Ù©úx&Ef5Åa ™m±> ö¶ìÂ’')rV`2•ý¦ŽË„Êdö[;6*ÑY°%>(ZX1§#±¬pÄ1'+ö¢ÓŠü¨‹Ù‹NAyQà«—¥PÚÌYšM4-'šæ–¦°á}ÿ¥îÚÝDÎ’)óïº{A8£¶ý<>P´dŠâémÙI}âä :öÁ:ˆ}9uúŒøOÇÀÊÏ@˜<Ë%(1ÐoêH¨Ì@¿µc ¡[b 2…OéˆJ‘~t¶"zˆÙƒÎ‚ò ó?æ ’|®; Ñvίº¾1¶þ€/‰^©ë®>žê3\ãˆî‡~¦p•œÂmôø5„c =ïè±›ÛèmýežÇð±n¾x\Åöø¨ôS;bWOõwø9*1‘ošç»§vOnmqßSÍSô'--^`$ú R¿ñ›ºŽB¨ÜQüÖ®g*õ Á–ºrWð_F]²Š£[Wyš?<­X€Ý¢ü𘆎4DA_oÊ*8Øó¿µÍŸ m¢üpå9«¥Zñ›ºZ!T®¿µ«B¥Zl©V”kEX1§¶DÐ8Y™ˆâHÀl “è›A¿WN0òësÌ ß1çž@1õ^· ní¶vaW|~ôû½ ¢&ƒ)Ÿ_Š’t*ËœÊrÝöö…âRëq°…–ã;Š‚gBÔÐw °FAìy H‡†_×m¡_ºzl‡þŸö´&µë×רJý5L®±Áã6X‚kø)Ñá.»æä—™ÄO%Ç 7SÁ”ð­ÍRá®…÷ `Ws¸‡+@áŠÖb˺ ².lYÃ<ê#}±ä‡6OäÉh“Œ{8Ñs 4€£›Ë~ce¥9D+ûYô£g'ú ‰~ æ ú§©þ2¢?ƒlTç÷×Ë Á g°`êÎYBŃV°v‡)¡Âi*ÙÒ‰I xd Æ—ÑC²¦Á¹è—àÙŠ½ðaQ>x˜þCÑo*lægwåJ»(«þȪþ ;ÚRÄ]n›ã».VŽÁõ–›%JyRáhTNáxƒ!"*yÿKÏ÷ ÏÔbåÔÂQSï÷]Ë´=óxÌöú].š@‰Ð~SGhBeBû­¡ •-Ø¡ ” -¬xJÇ$Û6ælÅt¶"zˆÙƒÎ‚ò ‚¾4~ü}1ýÿ/¦¦´ õÓŸAþ‚)ÓŸQ‘þ‚5ÓŸQþ’­¥?ƒ"ý¥OéHÎîG³Ÿƒ³õxÀCÀçà, sPb~–ŸÜ¬ò‰Wñê ¨_Pèù“éýhÕWê $¯Ê |ýÞPÌ[$}*R…¨ÏîQVÃ1ÓWª R49ßrBØ;šÅ !@Ü} ^ñªÄ îj{uï¢iÉbr£Q‡ ¯m×Y®Ÿ!ñÙíè¬æq"R¤SiÚë\ÂÖçÀo‰ô“8ï5t”· Ìx¯­#¼%¾û-‰î“Ùî_)g!;h—ó4 Ÿ%a#”@Å z'u¨ß±K0¡2ìõíP¿o·„Š;à÷̨à™6ˆÀ ;äuíP¿ëË(i¼œ4G‘±m„Þ¸@U¥ õ,¡üwö«¥9n#ÿ•>’)g–Ýͧ©r—×U+[±”½$—‘ÌX“ geÎ&þ÷ 4€æ<Õö¸§!ù ºèïã% ÅJº½øõüø·vX¥°~áȃ_nÜ-tfØ“µ)E¸«iÇ/ÓóÔÈ4i¥×²*žq¶‚?½£OÏX !Á|ûú°ÞŽî=}}¯}Ò ³¸e'®¾Ê<õR/ Éë4[RÊmËEgÉÔÈiôÅvË%tSâWè`×óÌews˜G®ºR‰]z?ì÷™¡+=[“,Õ4ÎÆâö­?ÀäàígÌbðW©ÿ#­°Ô{Œ ægìvò„C+?¦j wü+•}ù<É‘wÙá‡ß»ï8pMN¶=Eî°'—à4)£·Ôõ7isjæ+øˆ7J~ r™„§+ÅUèJé#ÿ¼–ûõ]pòXÅ.6©Ã3õx¦t<üˆ‡zSBÚ ^ä"º§²†pºëôûq ±Å¢w—¼†%j] …Œåû·Ò£g©ñêSW+<Ø?Ëbõ §‹éIï׈7]qU¦(?=Ѿ»³~+öf=­Z`J« õi‚òPæÛÚ2õ§\œÐîµ=ÉP±ÆgÃÑåT±ÁŒs’Þ*LÙ–1ìóÎØÎžTƒ0 +ozŒèâ'ÇŽH5Ë6B>¯²O¾oñç$uB¥±Œ_—K RR!¥ö—¡ÁG¡Vá%˜*¼„Kƒ—€hè┆R±x!‰FhÛúxØr.<‘ºcR÷Í”:°!呺˜74”amµÅouŒ¡ Õ+°¯~+A7SÀöúo¨¡Žæ‹_0 Bma‘Õ…?“(8*3,)…@K)º©(…PS)º±(…PS)†1+…PS)†1+%«JÑmE)„šJ1BÍ÷С¯™TõY¨U4ÇRG%X:*ÑPQqWÅ4Æ­XCPÚ¥Mjº\rÀ?·J_A IÅoSz(¼îÝ3½+‘ ô4éu‹è˜ˆ\]N3/‹êvü×aÜ=°ha] wúTDK$¹±Øü‘Ø|[ËÝ–¨µŸQkU½Þ™Ö`ä¬{KkZZÓMEk„šZÓEk„šZ3ŒYk„šZ3ŒYkÙXÕšn+Z#ÔÔšj¹‡Ë±)Çùr6ÉQTƉÑ%”#peÿ”Y…X² PNúò:³¿#êþp»&þC¶M½6Tw3¦~ú¹›Í_ô-5Æ ˆëû®ÅÞJLW`%¦ ™õýQ‰i±ÄÀð”KÌ´‡Î°ò`úvw½e¿5vóÿ^oãkw®]£%„YêP E 4µ¡šŠ4h*C7ea$ÐÔ…nʲSUª¥ˆ"¦&ôðrèÃÒ¨]–Í!ÔQ‰’ŽJ TT|UAñF- S«cÄ£ìþÃÍã4OÄÔ®i8m±íâáí²ÊT©Êïa,|Þ?ó:ugwXÅ$Š,«V*Šèªf]áèºT“ ï« DªÂ)Uñ¬Ï¤§4"­Ë4#Ư4ò¾v×É“ü{õ÷OütýÖ¿J®ùfÕÕݱé¼>‡§¸þøá#^¿ èà"טnè•@K°º©(–PS²º±h6pa2Dk³j 5ek³n³±*\ÝV”K¨)]#Ô|É3«¢éhŽ¥ŽJ°tT¢¡¢â® Š;*hh7ôÐ7‡ã±©Gr‚l?M– ·øÞÖÍ2yÑÖQ§–šECQ“+Vçó–g¤:Ï 3˜h5šÖ4àί]ÿÊùvåÜía¿Ÿøo³ûÖ‹ð4ÑÉž“jB³ mã‚_ àúýfvÙjýet³l·ãm„± VãüCߦ“`ìÜý˜ö»ûŽK_+’(K|Þ$ã¶XßoÁ£ÍÎÍ#-ÐÂRtú¡Ø|9¤“ EšÁ\þ¾_‘lòkñgÙCQ|Dg»bÃë<Ê‚kúÎ[Žôæ¦Ýö[ di ×;9[³ ÿŒ{ˆøê,ç´aev ³2Žj( 'f¾QM%Ý$ÐÌ6º)'›š¹F7åT#¦j¦Q-%Ñ$ÐÌ3zx9ô~5ȰTƒ\Îâ«¢9„:*QÒQ „ŠŠ¯*(Þ¨ •mªvÕVç]cRNäúʨp·3É=˜vꪭàñ´„|óß·‘”vâ’vjN;ñ,ípÒ 'I'æ¤)éøÿ'ÿAÒÉÞÄìMKÞü4îÇÝçÍî ¬¹8³#mv¤eGnøm³›O×îdí@Kß^Ý8tþºÝ:°êèü}K×Å^Òé3”Î0íÇôwÚpCGädCŸ¯¦â«aÊ÷hJ‡@¡mÀ§ûDøãôyåq7ÍŽlÖ%~ àñx·—w3D6#²öòô‰ÿ3¦m¡7v¼9ñÄÏ>_š'?÷é úÒ„+3¹µÉ¥/M¨±ô‹àÞq endstream endobj 155 0 obj << /Type /Page /Parent 284 0 R /Resources 156 0 R /Contents 157 0 R /MediaBox [ 0 0 595 842 ] /CropBox [ 0 0 595 842 ] /Rotate 0 >> endobj 156 0 obj << /ProcSet [ /PDF /Text ] /Font << /TT4 475 0 R /TT6 268 0 R /TT8 269 0 R /TT10 270 0 R >> /ExtGState << /GS1 478 0 R >> >> endobj 157 0 obj << /Length 5828 /Filter /FlateDecode >> stream H‰´Wßs7~×_ÁGîµYr¹¿òp3‰ã¶éÔ‰ÇÒõÒ>ÈöÆÞž"ù9iî¯?¹»6 kgzãKÚo ¾àëõâÅz]+£Ö]ÞÕª€¿ð¥éòº…ÿM^ÖE©ÖŸEn/¾_uûy±,ò¢Óë…ÿâ_úºø ß¼=}Ÿ-ë¼Ôç™±y£?gËF_ûûû^•yÙ¯ëýÊ-® ŽS´jÙ¸¼«L«ÖoÀ‘Rjê˺¼ÕêtŸ-]^ë~|Ì– ôð!³ðÿÓ†Àë^­øÂ†>ûO=‡¸ŠÞyÙ”D‹‡È¬¡™Ê‡¦/6·½²e¶þmq¶^5¨EÝå®UµUUËðÿ¡_|”¦È­îª*¯fHe+ÿ±‘\Æ5yýg °‡€ˆ»`íŽa°ÉmK˜)}ÍàQ,¬ËïáËp¿ÁP€_•)Ô¹úðk¡n ¯F ÿ´¨L•;úµ]¬¯C»#e\CÄ-–1žm*[ã°lÿþÃp{§^¾P\ÕåVÿ¢}é9 o·'…)ì/Y¶4…ióJŸ¿8‡ï1PSÿÈ–Js|:kmàAY0=Û=~‚,úô¶9ô7êËfûØ/ÚÜè—ª9QàH­ïï÷ôÖAAeCŠœ/mØ;”¶/WH£­+ÙËs5òÄXu5ÔWòUzˆ«íh•Y Þè!}à³ýN]ãïÍN]õa½õß(]uJW‡éº‚q­7W[hØ©Ã]jp…»ïôpûvÒAܬžoû0Š‹|Ð_³¤âÎÛèüÜE‡|NKöøKíwÛo™m *Õ¨¸µ!úèï!áyXHÛT¡(¨_®Ëð9!#HÎåvŠ RíX#¨ÆCu :ÅléüwÎÌC´²ÊÛ9«µüjV+q5ȼ4ź.7|d¢ýƒY7Ûdi=Ë9«Ò¶Œ™¶&ˆ`e@¦Y3¡Ôƒ‚T–@<šç˜Gc*”2& ”¥øybáAP#VƒÀÆ r¨A$?Ãï^]€~ývÆ=߯áËþ>P ^ð§ß«Âë°Ó5 7ñ–º3ŠZ™D­L¢æ&¢fQÔš$jUµr5G¢VNDí¥*žpÍß­D*%^ñ¦‘ZˆŠìâ#Á9&Í™&Ù’1Ë7Þ6RQ‘uBªÓ9@ƴаž¥šA'¹äÐ1Y:fƒAÇpp ‡zÕL vÚâËTûõ”c­·êÍæ]Å•]Kœ¨uãûŠÓßùQ±Óg™ÕÅ Xž"mULøQé÷ž‚µþ'<0Æ·.ó¤ì‹W¡ì”Êž7e¨Xö¼q,{DŲŒ©ìË^0¦²OÆlÙó¶±ìË^Hu:S'瞥šA'¹äÐ1Y:fƒAÇpp ‡¥²‡ÂMÊÞhTöËþb¿Ý¶aÒƒáòü‚VU‹¥oµ-¬¯u[¤vsm(÷Ö@gѧ¾Ô©¸ÔìØJjv>ã‰Ìû.ÆêËóW?H³,Фpÿ—g?Ÿ]®Îr¸öa~Ô›Çí\‡OÆ»ºBÖÏ "p@{‚)qP‰{‚1qP‰{’1rP‰{’1ro4æ¸'Ø÷•¸'¥:C¸ï±-G@'¹äÐ1Y:fƒAÇpp ‡%îàf9i9ã¸Uaížonw^zðîeð^bñJSêp+Zû¶4 ·™Nß÷¾«TþÖ„ü¬€ŸÆó³ùY?aH3] ÙD~v‰ŸMâg5ò³&~VOï V«›>mr®sG)jEIbBL ÝûÝúšÉÏùßSšÖ•ϳ@S%šò¦‘¦ˆŠ4å#Mi*Mi*M“1KSÞ6ÒQ‘¦Bªã9ˆe 1‹";9(e@â%ƒ¤ÍÿaF–^<:® P¬ûÃݰ» äk‘zm žµ•ï’q*$êµ#õš õO½2¯MÄ«Gâ5D¼ú)ñÊ‘xõ#žKá4æ9b^ K!÷  &ì ÏJ­ïï÷„¶÷ZTiz® /ŸgWPkÒ²—ÝámàõÕã¡WaFovêªW7Ãgúyµ 1Ç~îð¯gséf‰˜$¬aTŠâÁšFí (¼))GEáàMI7¢)+¬eTŠ¢Á§—Ro¼ ‚®‚…æùeÑ”BYâј±²`Œ†!© '®xÞÚ±ZO#ݪD· kuVåEåm>è·ámâ°Ï`ž×^|»M`ƆI[=¥û³yb>˜JšV™þyi«ÿí/ ®ù?MUW{öñl&P ³`J|&T"´`LŒ&T¢´dŒœ&T"µdŒ¬9Z ¶ÄkB%bK©¦s¨üòÂ@  )—<“Å£1,ÃeÁ J̆B0¶p‰Ù¦Šå ™Ã gÿoº¹VÚSã­'Léùz;oc°à( «á?P¦Ôý1F'B—SB—@hë§Œr$´›Úé7~ÀoÒœQ%FÃì‘zz™zz‰=ÝhzŽ=}Ùj;w9éܳ¾]û(áSÆ e [½}+Y ž ‚GNY4¢¼ãx¾ˆ;_ÆuDy×ñô=vúœkB×Tˆ« Î5¡‚kªœäZªÆ3¼ãXVˆ++Æ3¼ç£ Ð\\ ROo%IU[‘Jz‰m5êMsšÓÛíþkj—•zw«P©kMôýz–ðá_ßÌ€þÀA@ñÕÍá‘ ÂtxÓ?y‚âIûÝA]}Ë| huAîx¸:½˜)*xÚúßi5µQ© ðÐjâ—wKt²:à ÐÏËl ìÅÿÐwl`-LÖðB¥IߣÌßöI¼÷ø {Øæë ½7d¾ãPPßûFÓÄ77!Ö&ºŒý½m{¼øøÅ^ï''«÷èåBn7ó]½ !½X¯M¡ ™„ ZtÙ”ÕØB'ƒÇ)ìÜA>nð£÷¼hÁõ»Í'øÑÖµŸ.Vý|Wï¡qvúa8ø&Yêo~*hKOè?_? ÷è†ÐÁÇn.Tɬ»¹ºÍ%ݰ ›ˆ•ëLù<_œ`h`–AÐø`ÆU \¶’­›h tž[6÷%X6~ˆY÷œæ­'8ozS1!GÓ>OObeá1 žì‹ƒA ðÖ«SÎëäT§ž^K ST?dËrWëw{ßÂ=ñ/•êÕü $®jÿ+Ì} 7Ãö‘p_É]БW;õ¸ûðÈ{Øyµx§âÍÀÿ’^m»m#Iô}¿‚­E"“l^ó°@àx°ÇcÙ³Xd^è˜kV–4‰”™üýVuU5/ªØÓâaUwWŸS—0}އYhßæã*™u´šhÉì‘$ :?€Ý¬…+ÊÀYƒÉZTÖM…Ë„ÚdÖ­…Í„Zt6l‰ÏÚ„6NÌáHœbvb'ÒQÙ³ŠÆM©¨UM}1Õò2Ò´‰4­M¡ùp×ÛïÝfýÉÙ0e¤ƒ“ ®ˆ 3P´aŠbŠ®ÙI7sòû,ȾŠ2}Iüƒ§0°ÕXöÁ Å@ÝTH¨Í@ÝZH¨Å@ÖH Í@ãÄ1±#;e ŽŽN¤¡Ãžt´)µ˜CP'ý\+ Ìsa`–2K‡R sï.4­£«uüÀ¤Àö.p°DeŽxˆV˜F³´Žjxàií¶ìqßóJk쀠±ukÌ™ûýfÍÀ0Ü"zâqÊQŸã© ŽhqT7ŽjsT·ŽjqÔ°%ŽhsÔ8q GnRTGçQÀaçàhC§ EOø"mFôÄ~™ddgÎeÜÇ2Žë3ô¹K°uáÿß©oíÃþêøá—mVÖ°Ÿe¶¯Ü´^# é; U·e+bìÍ7e™ Vz§!-Utµq€t*Å}OŸ’Ã.éžžäÛÐP7ÐmÆc8 ì.42‡óák“ø³x¯ íh³^µÒÐâ¼nI”˜Íxý¤1 ±Ÿ„ÔwzTFC‡ +èhO j°Þ7@Š”X ÏSfxí>¬C^¤ÆÙ´ð@fH¸ÒÒ¯`P _=4E¤]ë>tÛ§î°ã÷0 "¹¦~¢eÉ é‹O™æÛzYæÕ4¸f˜2Ù5ÙfX3Ý5øfÙÂ1h2Î:q GZœ$<È VkÜËðL •EÕK˜ =fÅ· ºo¹BÏ\‚æ™QÃ3]g¯Hq-¨îúžÃÆ2v–ºÍ&”³"¤–ÐHJ>Ê)…rÜBšâ—}ÂoŽûýŽßÁh2qʯ±nÞ¼¦ÿ/ï®ÞÊ®øÝÝÏtNNyXŸSÇÞùÑ}éa|J°ëÏôf·=ôÑ¿‡d'«â]åXÄŸ©SHÇ­…1èÝʬÆÃÜu¶pà®A·t _}Ç7r/YJkæK_û2´3¸dƒK†Õ=ßÂÛ…G¿â¡rP.’›.<_ Xä¾Â‘ð>œ b€/P``lcyÿc‘áöCûB§Oqc¿,jˆÄ¶çe ýþ€xY»ËÆi÷òBëng]‹Ï=&#? åGÛbši²: iS7Íj¸¦\ÐÊ/}5I5¾Àÿ cD‡]ùSÇ$O¥!÷ư²+cS8IëyÛ.3óĈ‡ÂÒ>Ù¶‡7¦­‡ÄœÆ3eM…iz’‹¥yä³ \R¾¬«!ñ6ó‹Ðáj–`°„K‡% :*‡ÒQÊúç’_ ªÆ9?‹R/ÆR/XêÙTêF¾ ©‚ìWýÇg‘&N¸íŠU6E² ùOîW‡ f.OËô¼N]€þÒT>\^€Û7²úe𢳙³C`h@Kkº©hPSkº±hPSk†1kPSk†1k-«ZÓmEk„šZ3BïA¤6š_†HŸ‚£H*à)"q '=ņƒœbÆÌƒM^ÓŒ{†X!S®ÿ Jjô;êJ÷™_qÌiÜzÆ™¬.Û3PQUùñ>ŠÏ­V‹ûßÿ†m/FrKñ 狚Ɍ. Åè†,-½è¦,-µ¦$-­¦$•hª)E·d¡héÄo }–[:1ÐQ5tˆ’†PÐᬠ8œF-µ”ŲwØy¬1~&hæ® C…ÎlÓmC™×e‰ .•õácY(ÜÃÅ6äÞcO—¹hý­Ÿ‡¼*#Ó ´¨®› × 5É® Û 5én3ß 5 o3㣱JyÝV8O¨Iz#Ô|·;rc¨U4ÆRG%X:*ÑPQ9® ÊqTÐb}=Y>®>ÖˆjJ{¨Ý¡Ã!¥L¹T‘çU¬õ¨THð ÿ‚¯±¦œ/ Ô[QQÀ™ÿþïãz1-ù2oÚ|°nÃ'Y°›´{Ÿ\Æé–6^GïfÊ+sÔ˜¡<-å馢êCê.?ø[þuàAfÝÚÒ¯5» ‰?w2èG~‘|¦ç½é¶ÉcŸðK(Éã^žKny‰5¼\]Þ&ëmr€#‰§í¡ÿ‹WKvrƤKn^“ÙåÝÕ[‰ÄÕk­ü`u©)dw«Û$ÈÐ=©¤£òè¾ô -RSp8TÐeâ¦nùGÏŸO*ßë ‹a²úˆÕ¥v·É妛z¶wqŸ¥ TÕß°Ì—¾öåPcÅüä.a0ü¹'zôXé :×î¦{MUeðcÕ_`C uxìëú€õλX.ë¾ë¿}þºÞ“F×t£¼Ä¬ÙÌ Ø®•uŒ`À<þç0äafP[1U0Ëòe;Q]ªÌ-[k±-ÚiÖÍë}–uX.`yq*Ø“¡nz”…¥ã¬ÓÌ¡Ãñ¬,Òá¸/†<Ä+ˆwjÆÉ+¸ˆqƉêñÄÇ4KËB㱫ÜÍ.YQ¤î™Ä{8y· ¨‡i ~ýD#Y·ÞG&·XÜÛmrÜþ‰¶!cy·Mvü!€(wÜïå6qÝt¥„Ì:ÚG0HÈì‘Ä^¸õìfÍXæ+èt-&hQY7.j“Y·6jÑÙ°%>hÚ81‡£\–Õ@œbvb'ÒQÙ³ŠÆM©¨Ua;Åd> endobj 159 0 obj << /Dest [ 184 0 R /FitB ] /Type /Annot /Subtype /Link /Rect [ 409 195 433 207 ] /C [ 0 0 0 ] /Border [ 0 0 1 ] /H /I >> endobj 160 0 obj << /Dest [ 196 0 R /FitB ] /Type /Annot /Subtype /Link /Rect [ 125 184 132 196 ] /C [ 0 0 0 ] /Border [ 0 0 1 ] /H /I >> endobj 161 0 obj << /ProcSet [ /PDF /Text ] /Font << /TT4 475 0 R /TT6 268 0 R /TT8 269 0 R /TT10 270 0 R >> /ExtGState << /GS1 478 0 R >> >> endobj 162 0 obj << /Length 3861 /Filter /FlateDecode >> stream H‰”WKsÛ8¾ëWàHnE I€¯¹%¶7ë©IV){É̶›Y™tÙtÿ~ºÑÝ )JM¹Ê"ùF÷ׯ·»ÕëÝ.W‰Ú}YUQ•«þìCQEy ÿ‹Hç±V»‡UlÁ§»ÕëwÛDÝ=¯Öqǰõv…¸èûêspy}ñßpG:x&iTÏáºnñ_ÿØ(åQþµûO.édT$q©Ö…‰ª,)Õî)¥¦²R•ºèõ‰ò £Ÿ/á:”?>…)ü¨¼mÔv 5ÿ6 ƒƒèÀ·7q¤ Á áp{³4•«%^-ØÔwJM¸ûººÚ­ÕªU^E¦Tyªà©ZÛÿOÍê‹(â(Åï&Ë¢l†di†Ï {ücŠ(ÿ'ÕÁ"^-÷ÃøÂI”–Œ%4»À2JÄúø~g|…@Àï*‰Õ{õù¯XíWÙ˜‚â«,É"Ão‡ÕvõÖÒØœ¡q‡2É·BÛª(‰¶»pÀ°ûF!m¤èh[`®àp过<´¡†ÿÝ/kž &à^Ío¯AüÐÆzuôÖ:A&%ü ´¥^ø÷ôÖï›Åïu§nÅPÓ êæg˜B¼lø¸>m/6ªíÔWiÝÐüàsU/7Vµú°¦m—W\‰e® ºÒ`mã&F‰1ù-ÆEKAý¸Ý¨‡pmã¶ÁÛftG#?NtfAvËÈ8E`uÜðKÃËáVõÐöúãªdm°…ôPÀšº8Ôsé¿I€,1@ç”b\t&¶’Xöô '&.Aô‡ú^ÊÈ[Ûæ Ú8–O-'–Ÿð9.Ñz—ÍóíSû(YÆ¢-ÞÎ¥©Îj)¤È,EuaT@ø¬íŠÑs¸Æ0¦á®S,IÀÞÆ³1ÀÑ)ƒ ð§J§pš–QêÛ‹`!{ zÊòì,PGÂRsŒB¾ÊÒ³õ,8šH§ ‚kÊSC,Á“».Âã…–à‰^Kð¯’>&$íÂ''BÆIÿ'\C‚žQ,äAoWsLè€ 'aFú7²­¢D!xá]À_ ì„8<³"©R )9IN8ŽºSÈ‹€¯+Tw]?` Ú7‡fhöGO52ÖÃc}D^Þ*L&ÔOååÝÂeB}döì%6è§³çÆlŽÔrBhcŽn¼ˆº-£¢ó"ê”ZD­‹ÐfÂQLìÌQGÑ”)ªƒ½Ú¾ÜR:¾±¶)LÎÁ}þÊ9ܾð*jÁtT%Y1­'œ‘¯»gY·ÆÇ»» ´×e–©ã*ä4änÔ>'Â'Žðš eíÍ04T¦LðHË5ôªÞïe-²Ý†”F ÷XŽë:Û@è©þÆ^´Ãxà›ôm³ÜG}ô_Þ*ô'ÔOÿåÝBB}ô÷ì%úè§¿çÆÎ±¤s ä ÌË’šÄ¥>Ð’Á3†\8”Q`63£gͼ ›Qlv£gœ°$™PŸdë"ϺhA4£ÑçQ*{Òo-å”<Ï£4>—St„Ý K CT¤æ§6l¤ `0c±-¦†ž0^bGÄÉ»]×ü°?êM¨±Û¼½mOòz˜/l[»žZ'‹›IãzIHŸYQžô¿‰Éõ8Q`Euž‘n·~9 üñ¦¹¯¿µ½4¾ô±—…ü.­0vñôÅöòÜéÚluKÏüÓ<ª>Ô£¯‡æun0Á Ò¾‡ØqÜSCÞòÂûÉŽ:€¾kÔ¨%´ë¾±€­ƒYŦїÇÇž“+ô x¥€:y <¾Ù,z€I :‹1û6”ž%ï§Zh–Äü\w•õ,AÚ‰C&ö¡þa´#¥h*ЗâEM^œú¤XÅí0f ²û\>MÊ”.Ïc×}ÝÝñµÁ”ø3IÜ”×É,ÖÞ½ðG~ÃE;¸‰ï…¦I‘Oo`z` ˜@æÆ9æ3 Œ–rÂ|šLe â¨?ÄŠÊS™ 6£ Ɗ̃šxQj¬êšoXѲ™HLSýÒZJDª‰N=­Ä/ýܱ›Y?Ñ·˜:MímPõÍ¡ÙÿÒÆhy’ÄöÃM’ò|Ì^Æe/:$mp~¬m’É‚ç/(:… £¶?)¢¨¨-tÒ·üJy(“EjÃï‡ö¶…{ý29ÉtQèj’œ¦tÎOé ù²PÉ\€)hL>Ú&™hª84<`߆[EFO¸Ènj^wÏ]:x…ã(º¤1Ó5g£fûµ¦–âÈ‘2‘ÌØÃT%Ùƒ( ÅFŽ„äC©gœ²,ÿEÇCË+ÛAýï#'™œ“ |–[7ó[3 ‰C… ‡VÒÎqý=ç†W áxï¾!Ô¯2Ç bH4n>ÈœÈ Ç;dÏF­á&‡Ú÷éÉʳb—<¬R|B ¡E‚ø KƒnŒl¾:´Ã©ªéöm•Cm.^©›önòe»yóñ‚â­À|{=)-c™ãbÆ&6,j¨VI eÔÞ¥p&NΪõ·º=`œ¿šøÕ8¿‚U†ùswgÎæÎ땨”³J©T +F­J™S)§bKf+Ðó=P–×¶ƒ IP *¹Mî„ó‘~9…h²íYöÌ'Ð×êèI’|é&¶âo×H¨ÌY ÕÌÂOäøe憌Èp®‘F…\Ê—1tðô^µŽ­zp!»ŸÚ"â\˜õó?éˆF­d ‚Y¯ÂÒGoÇ‚¹mðLû?|?nÿlÀIºÙHˆ–åcÛ€õ)´;ÆiÞGàíìgé´ë4wîûA:%*•$ž§]ÃIÑdùd"ê¦5¼ïÜA–pÈo®€SŽ›_:uƒ@F·{ed¯kJa¹ã\Ê™÷J/WD$ŠÈL"Rº¥Œ¼¥†£6À*‘éi±‡16vŽ¡'dL‘¸A•§•YœÊ c hÚŽ½4X÷ŸŽ õÒ„d2ÅÌdBrƒE"#’#·èBÒúqL^ä.ð[;ptÌ￵ûæ(ܘ¼ÐS×¼j?„ÐV†r2R¦ l~n%GF#§Ëë [h‹à=w‰…”\¨RvUÍ*Íc×ÝÑ=t3úÄ”Ñ@hèßÂÝ×ÓŽ­Ð“Ž­t|K¦- [ [Ôgõ¡~€Ã“J$î1úéúÒ*pµ[ºÏ`å,ÔÓR­íÿ§fõå tÒFÀ´H2T›¨àÛkÕJM@T>Û¥çN>ŽJƒ׫µ€N/ ow¿¢œEe<¥¿sÏoi| Dbó‹zG££¤:NAÏ.Õ”Ù›0,ß×]}×™mPVã :™TL\s‚„E6Da¨ã2ʠ݇:{D†ºóÔço½þ^Þ+þ&ÔïoÏÉŒ'n1'/ Á (xtɺ‚n#%?~~=‚-ZõLC¢ñ›=ÕGvÇ™ËøìN ×îË{Åî„úíî9ÙIîµû2:¼€úì^¦à%±;Å ˜£…‡&¨Ío:h€Éoûü‘<`FP%i‘­Éé’’lî]A)É=>`ÐçÏ^ö£^øNv`ZžØ‘A°ž7ú@ºç.´pª Ë’庄ž½î‚lA—eŸG}¬Ê ÅŸ5%Ú¥å|Ò”¸’§ÜIK¢OZHÜû¾‘•8’=ò¸i;ňmMò±5É¥5Ñ®5ÉÝ êÆÜŽ—ØÖ¤îä@"y.=‡†žCsÇ¡§´01\k©!ÿ‹ÂR©©{;rïàØ"88¶ƒT(ŽÉlŽÛ ÊDÕT·fW™ið«¸p³¢Üqá2;5a(ÀìHÞ<ÄPÐ †‰Á ” æ2žxGhXáeµI嫯º¯ PcÖÇçèµÒ["bé…-(×鮋Ôy;Œã'B^$ ¼OÔ±ŒÃlÓ8ñåòÎÑ=ËÝ_œ€íÈÈ*Hêø_²ŠŠ+Õ^pµïdeH¾vÞ«¢àí³"2;Z¦MëÖIòâÜÔ ¢Hî£Øízz(¶#Ó٦׳ÆC €¨U´ ë;Ï=£È!_¥ƒL­cf(7ë_Ÿ$feì’nj’„ÉòA%›´ &UKÉ{É»&F£´}"2Ü-A¡œ? Y½;vCÃQŠ x—¼}¯=ÿ®vT mþu¾ W½å\îå#e @º°^‡_YjV`„(ÂÖ “,TÒÑ}—|ߺ/\rû{Ç';ÞóÇÉQ”8žK|ÇéX¦íÐô8€‘ÊÞ&¼vÉz"™ sÉ[ÕX³Fõsï.«ÛÉmŠ’Ñû†p†œçÊÈ¡¢Q—bˆ+p;Œ ÄÝ\âGïÕù™õ}-kh7®½Ãñ&F`ºÃ6ZÐ ÃCÇë±ImÕ4½±Q–Uû™tf4hÙ‡*Ør´FžhP#(l]¯«¸~ü}²ãÜ3§&¯•þ`–ÖL endstream endobj 163 0 obj << /Type /Page /Parent 284 0 R /Resources 164 0 R /Contents 165 0 R /MediaBox [ 0 0 595 842 ] /CropBox [ 0 0 595 842 ] /Rotate 0 >> endobj 164 0 obj << /ProcSet [ /PDF /Text ] /Font << /TT4 475 0 R /TT6 268 0 R /TT8 269 0 R /TT10 270 0 R >> /ExtGState << /GS1 478 0 R >> >> endobj 165 0 obj << /Length 4701 /Filter /FlateDecode >> stream H‰œWÛrã8}÷Wð‘Þjkt¡nó–N÷vev3ãJ<;=ó ÛL¢.Eò&r_¾cæƒ Z²-oïVWÇ"A‚xx¼]Í~X­2©Õì ÊL…ðÏ}äeð7’,LÔêy:áËãì‡÷‘z|- aëf†¸èËì£~wsýË|‘‰¾Gqë×ù"×üÓí¬J‚,ç¬~“ :åQX¨En‚2 µzŠ”RC]± ­®»ù™néça¾HAÊ“/óþ>W,ÜXußÓ‚Ší³ea/6°÷& ’³gZBǘ<Èþ‘³ÁI&­8»ï’ŒŽ‚¸`Y” ‚Fœ—°î>ÀÇOpŸ`ð‹ŠBu«>þªí,Ð c0üy–Fi`xÔÌîgoW0EQ§‘¾È)ØgȄیn7Íñ ›5£ ÿFü›¨«×oíæé¥k»ý«š§YÄúg‚Tª÷sP¢_¬àÉ\xM0Œˆýë‰ q¯¥"ýmr¸)|;8õD£²ÊCõ<_ÀëHu·µªƒ'±5ZÁkãµU_w­ªeyÛõŠ¿÷»]Ç‹z» ŽÞåD(c0¸†2/²dÊ„C™p(a¬ f.|74–ô®¡!>OkaM´]“œà}[fš{ù¾¹­<×>ÊžÖíy õ¼ù²ô`´aY„ŸCYNí:'!?ArÉÉÓ³DxF¥¸¢‹¾Ÿ*á¥DDÈÀßD#1qHÌï'K3®žéÑ乩ð‡$B¢.B}5Oìëk·©áµ@*¢ñ¦­y “ì9b ä™Ãu7ǶjnÅo˜ùaÅK³U¬^X àiø»7Áke q¡%£L‘¸LÑÉÆ¦«¶0®F ÿ ·—Þ¨±&¦’X蘥î&™ÿ$5»E#¶"HîÙv½ï{¸bÕí a!äã)Ê?‰ÍÛ½Q†JÆ*¡ å^¥ËNþ¿w%x@[ìѶ|騙ÛIOç~^Þ0Ëûj[ôèYŒm¥|ÖèXvñ2u=óZû•?^ÿ;â„’L9B\ˆ›»0 "Aš\[DZ'ÌA“,äqïu,y¡TTõ€,„bº]'œÁø9.­‘œœi+&·'u8Øg½Hïw;±˰{wÅF/…ÇsÕ˜½¬é œ† ªÜ͉náÉ„ÈðÀ’„$¨!¾âGïÇ$zx¦h­ ÑyV5Òpâ•«žUW®|Õ²ÞÒz’A˜ ÜûªÜydÌ_ò2OÉ&Œ8ÝAHöØõê_wêŸu߃“ïÛm]Ô¢¬È°\@BVËvwÒû·‹Z¼ÌLô’SB×N²pª£œØË}#K'[ljݗ¥££lª—Ÿ‘Bóy®Ÿ1P¼„椟ù¨ßå&Âw$SW”Dç®(ˆŽ.)Š-›ºNÞÃù½r$¾‡‰“½0.&#}^:P|F:é(=ê}éqé@17úPºSÌßÖ‡€ç¦4 9 øñ«À¢¹˜ 8 '~~¯œ¤ÓŸ8Ù ÍIÌX¼7±ëœ„<É%7NÏá•â ˆ.zwªT„g”^M@%)#à*±ÏžùI½F™Ï1?éˆRIâ<É… 1<,‘ºÎŽŠ'^Ík\S ×cñEbÌZPÄÓdÓñá×ojÍû¡É“pë«Èßõ°\ƒ6̸Ú/P ±Œu Wà–×oÔžÁaæ~yuwýû|ªãLJ'n[›†M­𩍠ufæš[Gì,I3çn—ÛN^}µMíg:Ù0hjr_qP/Ä“| FËK†°X±”í’ðKd ,—mt=‚Cּ͙aÏÓʨ_B b2¢p93ÉHTäÎ¥0röå®ÙˆQ#ÙçŽD`dîJ3F·sÞ£¨¬yƒàÑ î€3Ô¡v¤†})¤æâZß*.©Xü¿­ Æ]㥾`ãkÔÔר£ •ÞŽ–7Ðò‚áäSÕ>‚S8#ªºñëãz–úf¨ØT,´x¼NzÙÔ÷²é¨—M±—]{:LŽ h«¼mõ“xxd£.¿\ 0Ú3A{ÂNg„v£Y¬XêÎ/<ÚÁ²š%ü˜2ÿ˜ÄF-j]Z«­ož2êE€£Cã–¾˜bc Ø†žb3ñ07äaP!oø7æßèxŒ}b™Âé‡Òÿ~g7õê ´O-'ÏÂÄG2¹´…‡Á’ý…V†äv,?vÝT¯ÇØÙ´æG7eQŒíäàV}î×Â-öqQhUIûÓ[iޤ¢v†;žÍQ3l|DžQG-Q7ÒQS×ä`ÜÚÇ®¯Ý÷5Õâ‰%VZ:@ßÏ ZûBõ櫦7n#†Þû+ö¨º®f4úê-q6@€&Hí$w¹Q¡ki¯äß—~Hòm{±¥}CÍ ÉG>{<»ú“À^9uìd[s¢dï…Š3†‚ÛHƒkt>øŽ;TÜŽa¼ëô3ŸË8ǧ{z‘–ÒPýà ¯8vô…àèøÃ8>²—ô’†2¦Œy7ò×#mLCz‡Ö»AÿÄÚÐoº“žñæ*öð6Èý2w@üÞÊCœ_0ϲ‡úC¯nµ]rm6yÆeyG¯\ ðºÅñDy‹­„k¬ãû6ïשi¬ƒx8l™lüÓõåGy”Ô“w9ß¿š„',õ;M‚ÝB†…L·•ƒPÎëNgEX_6äNnç‹„ ÙBƒt v$„5…ð|‘dU+„³ªæ¬*9«ZͪzΪZ²ªž³*PVÕ’U!fջņ¢—6ü uJ(YǺl8¨Þ‘¸Ì×{~ÄÒîä¹Sý·Ò«³>+çë”Òo<ŸM¥ñ¡ï¤½HG¥¨9* /-*\·»ÆyÐñ©Å=ÇWª:ÛÙ ºŒºÚd_ ’rœl"þíIÉÕd‹¬’Ç—†}E†uô…šB 3ÖÎÓ¹†£ôëÆ¨Òž)ïd`(ä]&†Û éM…ô¦‚zj§a¼mÓKΣ¨ˆÞ`RpC6fŒw#Ñ4œØN²”€ï«óüw¤çáîuëµÇƒ\0þÌ…!‹µgµPOÃcxmYLãé`ùðdÓVíéT(B=ã$ZÈ`1UK®Eß6vQÉÍeóäÜ ”›ˆ<ªÒüåã$Åîù:ÕbÿÛƒ|é8ñÓIÎù¨öÓMeÕ9ºšt­ <êŒÓ 罇{j8£Mø‘£©¡ R©«âfN+©#˜QœbDë8​ŽÅCåÒ*\QξÑãå_&c]ë.B³”tAe¬_ÊXÏ2Ö³lõ,cçwÿHÆú•ŒõKë•wôo–±žd\%9¼yÝ݃åÛáÀK7×ýý=Šºy——êWWƒØËËÊÐZæ|ÙWèHÖ§u6«®ZÔó)¾€âêŒNd"R»a%±,JQl¸(VÜ µrDmÅ•¯Æ¨{©{°,&X¿ &±_AwŽãNÈ€Þ;îļšŽLêWØñ–=’¤{Aßûã³Ì°ìòr>¤§Ô,å˜ÐÝD`—Ú¾‘~رˆðx¢×Ò©¯òÒÍÛí®Dx &V1ê„­ÖO#ëM<Þ·^çÕ‰›îaZvm(§ª«L¾WÄw"ÛL*7ý—îÍB.ëî×U¡V¿‘ÛŽ^8Jщ•0»¼Ú¿¢CCMŒEJJ5¶ÀÓï’Ê.§\Î7;QÔäMÜÂÇ÷-8J¯¶E ägÔ›¨Õ¶;ì‡.þ¿ƒ|ôE…êþSì±mFÀív`¨ãÁÿ¹u¨Ê”À=?Gqþe ó_v…ÙTbxèý=âe]n#îîhß‘¤üþÓ/u‰t!‡J³‰vñï÷þ—¿Ÿá*AÀ6\ø%èj(Á2u5TL/h·Z¾øl#:Ÿª€»®aع1wö°s¡;C&ÁÒ%ÜBBš7Ft¾¦áêØübÚÐdr½“k@_­V:q–ñ“ ‰è ÍYαÙÉ L}˜ÀÔEç˜zàÒ+œC¯?=×@‡|Ùœò™ÕÒ‡‘7½…yþ¼œŽ2Ø…à€B¤3Cæó<ÿ¾‘c‰v ÀüóoH™ÆµÀ’wX>Cv­3Ç'‡,O×qÀY… º“¢žE™"Zý Zéû#¢lôÏ´x–6žjò,m,<#Ôä™aÌ<#Ôä™aÌ)+±Q>rõy’‡-ö¡ÓOhMyë¡ÕŸjᓟùÔŸ|-h‡}þš;T«lª—lÂ&+|ª™OAø2E„Oqý/;c´J,Fh1*m*Œ"ÔdTÚXE¨É(ØE¨É(Ø¥ÆIF¥m…Q„šŒ2\Íq(/êÊdTU_¦QqVo$Q¹n”ë$AƒQCU€±M u¦Óß÷_‡ÕË"ŠYËAÅ¡Æa‘¨T •Š™JÕ¢55H&$¡©V2•k2µJ¦’Éä…L>Sd&S+dòçdÊf»A&-2¥M…L„šdJ ™5Éd3™5Éd3™Ô8I¦´­‰P“L†«9ÞÕ"SU_¦QqVo$Q¹n”ë$AƒLæ=ÙÞâP&ã'ª7=×ÿ8ïb×êNÃ4"#B«zOûSøßô'èž)AE˜A¨´!ó‰@‹NiSf™ Sâ• Sb’š¦ˆ”¶dhÑÈp/»þ, hÀÁ†MŠÑŠ,‹¬Ér#fÑbxò“݈ÙÁµÊBú“õˆÙA·jIú“” òÉt2õ'ùAN’ˆÙ9b­äŸ€þovp endstream endobj 166 0 obj << /Type /Page /Parent 284 0 R /Resources 167 0 R /Contents 168 0 R /MediaBox [ 0 0 595 842 ] /CropBox [ 0 0 595 842 ] /Rotate 0 >> endobj 167 0 obj << /ProcSet [ /PDF /Text ] /Font << /TT4 475 0 R /TT6 268 0 R /TT8 269 0 R /TT10 270 0 R >> /ExtGState << /GS1 478 0 R >> >> endobj 168 0 obj << /Length 5833 /Filter /FlateDecode >> stream H‰ÄWKsÛ8¾ëWànE  ¹‡­JgÖSIÆÉ{™™m#¶R²èu¤Éäßo7ºARš}Tm©J||h __wóõzñr½vB‰õ§EWvNTð 7MWºþ›²vU-Ö‹*€Ow‹—?¬”¸û²XVeUèÍopÑ×Å/òÍÅÙOÅÒ•µ|_(]6òK±lä þ ^Ô¥+«â·õxrK'ÃFªZ±lLÙYÕŠõØH1ßK›²•âl(–¦trG—OÅÒÊ/Ÿ ÿ=ƒ7^¬ö´ ç«ð î£l½©Êº©-X‡Ë´Ž¦)‹¦ÉËþÎ íŠõçÅùz¡ÄF,\WšV8-À-–áÿÉ/>å¦*5¾7Ö–ö±Úâ}B&Ð1¦)Ý¿’Õ")÷=Œ V¥nS5fБi”ëãpó#ã3¬€ü*T%Þ‹_~«Äí¢¤ÁlÔ øÃÂ*[~Ú.V‹×!ÍwÒØÅ-¥1ÅÖŒ±m(mßBžÉÍö¡XR¢­<äm[É— äV'‡x×_ûm±TZ,•˜ŸÔ@€Ue«_ ÄT {\½¼‚û®®àþ]çZ Ù¬,˜ÞHÕ•‚»•ßíŰÛ~+tbI–>úÑß°Ùø[q×x™ ) ©ÙØ`z^À ,Ã?E>¸Ò˜€t¦ÔsDAº8“R*•«¡PÌ1]¼O‰!ÄjÔ¶l18­MŸ¦á´šNËaÑëºR¥-Cˆõ±îHÉZc.§¤j݆”HµŽ“=‚VAŽ$Åò»²Æj•‚4>òq®Ì ì± ÊŽI£ld[Ò p.É4©XÍ™66eˆiÀÒõkÑ•Zî k@FŠ‹7P¢ë*RÊH­RÊM”²3JY¹Fjùwx6@ï‰QfΨvä“a>©È'%G$ò©lR§l²-¦z†6易ä!4ËŸ´p¤¡Ye„™H„f¹”f:ÂIF¥e#©Íò*ãjŽCƒÇç”FG_¦Ñè¬4½‘D£¹I0š“sªÐmF >€@ÄSVCCñlŒ5ð°Ãù 8áoCÖVpP©ŒqÓ0sBÃK&ž ¿Û÷û 6¸«uØdý—£9ˆ¤VþŸ‡pZ Üóa”Õ*dl;5¨ºñ@M¢Äk ­Ò¯m5ñº^¿?Ç®“«Ÿ‘Ñ6áÈh¸nPÅÈfØ É'Ãí¼ŠJòK±¿÷â’<  EcšS·Ì «P¾y)¸)oÃ`ÐO âkÑâ[êúñåÎß ûM¿÷·/D}#Ñr$ì±rK…žtl Çnv¼ FZozŠˆ‰{Ðâ(rnÔ¾#í¯½ßQtò€Ê…ÉŸøâé%/á y\½¥!ÅJÁ˃æàN´Iô»[vt'7»ý‘*§é°:»‡¸¡ë°‹ÜÜbÈnÅ~cÜn1žÇVž¤6± {0G˘ê;.ü>*šIÿ¥j ø3µ*è%G'Öã—¶Óô4?Zp ÍØáø‚ó£Âùqë÷[Š"¾‡(j ^+ÔÚ wO·{=üAëËgmÉ€L®-˜kKiÑØ–Ͷ¥´plK„fÛRF˜Û¡Ù¶”æ¶4 'ÛRZ6¶%B³m)ãjŽÇ Tòç®N¢£/ÓhtVÞH¢ÑÜ$ÍI‚™¶ä,?Ÿëê‘uŽ8ð·H;'i¨s‘p5Ž*˜“—GTªyé–÷9Û+ªÊðE\Á€8k7Ï u¾ÝÀÆí ¥l¦Ý\]`‰5H»?Õnbÿ ÷S{(k¦&Þ15o\'¨©º27ø–#fR0ò2€YZ&E#+˜%eZ”9À,%Ó¢ÌÈ(š$dR2ò1€Y:¦ÝË®‡Û<ÓèèÂ4½”F£#’h´5 Fk’`†”|bªRN–Vn=aLx9z½‰¹:~¡ºÀi¤³|·¹»ßëÏ¹ŽØŽôWóލ"»Ý4Çê©#‚uò*Rº)­BO´óž¨&^ƒþÖ':€d;ÑZqclOi­ r˜&Ãêù°ñóÛv ™&8ƒ†gD™âŒæ8žf’3šcyN˜hÎhŽç9a"ú$œbzF–©ÎhŽë9Ws,ÿœ: 6mÉHf@Š Ù&hzã_BóñMnÑôÖ1ú„棟ޚÑÌÖœ„æs#½5£™­9sÆ­Ó™“Ü™ÁôÆ1­ͧUrgÓ;Ì•k«àüD¹¾G®ÓqX¡Z6ŒðþÞ‹×=04c±„x[,!Úr³å]¬â¬s´ö‹Ûõ4-m¶¼àÅ8%m ¯Î®DÔƒn}<:îêhñÍüP²ãkIÀoö÷Aöq:Ðóm Ú¡­âUÔs„DÜ®¨†«ºn©†£ò€ç“_èÏÓ‹†?Ú·–‡mð7i¬$9ÎÈGzÜú¹ók9Ó·úŒ6r¸Ž~«G¿Â9ÁK ôN|XþæüÝùök@î:ìÊ’Ø}Âò½Ø–hPáÖƒ>>áù|K9\‰ž>r w6e[þT ™Ñ™ÑHQ(ø /°æF€~ÂfêäexÚìxÅãd?5I„¯¹I;9ÄNÞÇt¦S]tð` \ûc5Z3)r§‚•b-î= âAì@T4öî~Ôhç¦F»^ì¢÷æÃÀc”ÜoX“Û¤GÞ‘Ot;*SÁÉWg˜­¼ ØºŲNš$ 6¯ûY¬X/qÝLd· Ù¶ Ö¾\¯€± Z‘*+êÝQ¡2] óBeâ¸ÔpRÕ%*¬¥á«æ«zö\cÊb}å¬ÒU«GƒS>mnÄÙ°ã‡Éð@È4/"„þw’ +@òm°š^ ˆé„³mÿåK4Õ©©ŠlšöÙݰ¡”õ`h¨B†jQ‡k ¸:$Uxâ‹§—¼„/´ x›ÍË»9*î Mƒ¹¼ƒÊK²ÅÙ˜ƒ<@ëa7tB .`Ú6HI gR±jÆ„}¦PÜVôB—yÝQÝ8QsŠ@H0Uth‚J’—{Ƶ’Û퀭Á„zf$¨{”Φ_h_õ ó­Ð¡]{Á0~;ôq)X#qâQÁÁD?-Ï>ž¿Šêœ ^Ì„Ãöé£*ÊŸ fƒ²nj‹!WÂ'P0_†d)êð™µ*Ús}Øû"òC®¿x\ ²µ¼“ÜKã*T3¾ÿV(Ë)<QµÐÿQ4ùªåç÷ˆÛFž˜ŸÃ¿˜/Ÿ·‘#¿ TàUØÍÿ9°g²ÀqvÖã9­/ò 10¦¯&ëÍkd8Õ]UÝU?q°ŽO’ø©šìj~ÕÕïßó}ׇ•¦­CSk÷ÁÆ>X èƒA¨tºBQ§ ‚¥—ŠzYÌݪPÔ­¢`îGs°Õ‚Xi9…¢–ê"ùXÈ"¤¢=¬ÂÆ)Õk2ÖtÙXbS”M©Wþ5º¦•ì–5Ú¥J#5úŠ+u´Sq¹e˱9ž¶ì_£ä/½ŒMÓ©¿¼§ItØ„]ôãû°'“¹»ø“å·­\‘ƒA½{Srñ•«žÑåê͆F«\؃_þ1ÚÓ¼]yCŠ6Qó–^Ò¡t¡$T¡B^¤úÈ×÷SñÝc*M*þÅ7Ê…*ö<þúÛåóW—oÞHå}Æ•WŠåoq:®ÝöM¿LÈj¨É^­†š¨Oœ×8h•‹ãíÙ—ºoùç~Ž;œ¬‡þ—š ·“î?q[€Øfïž´%¾/ô¢tèºûO»DGˆ\z˜ŽËÞ|’¯ÛUõk\p8†¨ÀÙ¡Zà˜Âgkc –Ç8,.›ÎŽÕÇ8jYÊ©°:äû4ÓL™4¡fÊ„š êL-¦±U-«VÕ#õíòVuɪ‘­z%祑Åž_êоD=ºðÚÏ~¯[,=Úås hõoB#“ŽiŸ+bý¢Æú%Õ«­rõr©zUôœ7±ü1´UCßÜJ±ŠdB†E†3Õ¯¡^f¨Ú!”Ë·"„jÙ¡b–†šb™‘êU„P+;½’zúð½ß®ókÒ”B›j–lª‰0©ÎÕ„:"¹úzuX;óáÏji½êÊìÁ½»òú¼!ˆV.uô•ŒxñHŸ~£Åƒ_ø(n¯.ÿ;­hÄá™s-Òê–vNÚT¯BÿÑ„CÎÊ«z¨ƒ¶XY TÔŠÜÁ"—Pd f½„"¿P0 –ƒ-Ã@¬(&9†R-ëàÃíd€¦\ÚT“eS͆Iuº&Ôé˜IÖR£åCoü{IæÒ€êØÕ;ÛšúmúGG âÿž¾Ü³öK=kǰÀ3†È3;T=c =³ƒÕ3¦Ð3,ž1…ž`ñ,›žÙ±êSèHuZ‡ºƒžÙt‘K‹ædY4gàyºÌÓ1 òÌwô0ËͬIžõr& ïsèÃ™ŠŽZÑ+éûr?ÍÇxº ¸ îñù³×óg“·š¡¼ ¾*/6ßÕñJ \¹züì©›œÅa~¤“]¸Q±gÍé[l/›òÃtÇ_Ù“ðoõÿOò7ª §NÕݶíS ‘Sv¨:Å:e«SL¡S Xœb ÁâT 6²cÕ)¦Ð)ê´éLæ5’ëTt‘K‹ædY4gàyºÌÓ1 rÊ……e§Îõ¹ÙÿsãZzO㹫- ÚZ¾k\^Ý•:í·£={7 u"uìPU‡)TÇVu˜Bu@°¨Ãª‚ElªcǪ:L¡: Õi<4Ç„‹L0gÊ€9ç0Ïôœå‰œ3äLUSn>Ûï½Ü=Ì{íøö›º”^o²"|î ¯hE£n]ÓÐVuɺU-ëvã sØÐ}Ë¡ âäàqÛ’SÅjö5n€-?ÃÊÌ™y³ñÔ†­°í÷ß_L?ŒÛª9[¢˜˜ TÄŠÄÁ"¦P$& f1…"1Q0‹™ƒ-1A¬ˆ)‰‰R-ë0äc—›ßiªMšriSM–M5&ÕéšP§cB$fKç°f¹©5I’ž%y>χct«¸Ü롇OZ»_Ïe®va”8 «y˜ïQÔàíîŽh_.jµÚBiãtcM+úͯ°…ÆG)vó}œC8z6ýY¹ò.M¢áIÄ\ùôáÃ!ŽAvÁ·j¨”Q/åzq|7/v@9¡;þQ,–ãÅáS|‚×[zËpópË›8꺸xäá†R>Š_6C¨¸áÆcº(ŸO|õŽÉÇtòWùh¬9³uYÌÓÃá¸ß§ûíª¨u”ª5†¨¨Ù¡ZԘ¢fkQc ‹–¢Æ5,E-›EÍŽÕ¢Æ5ê´^Ûø:$|jƒ.riÑœ,‹æl4O×€y:DEªLÝ-‹Z\ìDŒP‹*‡ÃñÝ~~8?çzß1W'Ýáô¤«•§ÿú']_»ð™"™ìP•‰)”ÉV™˜B™@°ÈÄÊ‚E¦lÊdǪLL¡L Õ²”SÔ¹Û0eÒ„š)j&,¨3µ˜NÄbÈ¢j¤?çÝÙïÓ^¸:øú1öç«öºúÿîÚ§öP_νÌ;f ª!4Ç Uq"„ÞØ¡¢M„Ð;T¤ÑPÓ3R•‰c§WR?„dŒMS mªY²©&¤:WêlL¼q# X-½I›´Âá͇Úh’ÅÇ®îJ/í¦“žÎqOǬYØ‚fÿÃI×}K*V}x‹‹ ‘Œv¨ÚÈêh«L¡ XŒd •Áâd 6¥´cÕJ¦PKjY‡.<.:êÚ4åÒ¦š,›j6LªÓ5¡NÇ„È˾¡É³—?•/÷óz×jê°ã­UñH•Û¯¯ŠšmÕUU@¨¨"©‚E¡H̪Eª `V%[ª€XQE(R¥ZÖ– 6}€¦\ÚT“eS͆Iuº&Ô阩Òyz£–[X“6”ž7”x^¢+v€}¹§ý«o«ð•ýéÕŸ&û3,ü≉PÆäOêOŸüéÅŸFýiÊD²?½úÓœûÓûFàCäªþ0…þØÁêSè˜B@°ø“‚MìXõ‡)ô¤ZÖÁ…× ùcÓ”K›j²lªÙ0©Nׄ:"ÚŠl[øãšE÷júûÓû¸¦> endobj 170 0 obj << /ProcSet [ /PDF /Text ] /Font << /TT4 475 0 R /TT6 268 0 R /TT8 269 0 R /TT10 270 0 R >> /ExtGState << /GS1 478 0 R >> >> endobj 171 0 obj << /Length 5775 /Filter /FlateDecode >> stream H‰ÄWÝoÛ8÷_ÁGê«"õ} 4i¶èbÛfkç^Ú}P5qáØ¹ÄÙ¶ÿýÎpf$Ëá»w X’3œß|œ.g/–ËÊ8³ü2kÓ¶2üÂKݦUÿušWYn–w³,€7³¯ÎÜ<ÎæYše z5ÜômöѾzsö>™Winß&Χµ}L浽¿í}oò´J³ä÷å/¸sC;ÃBµË3¯‹´-]c–¯`!cÌþZ¾HkζɼH+»¡Ç—d^ʃ‰‡ÿ»ŽÁ«Þ,v4¡ãg×3¸“3°öE–æu^‚†°yÐÌ{QÍ•¨š½ènzãëdùuv¾œ9³2³ªM‹ÆTÞ€ÞÌÃÿC?û¢u–z/Ê2-'HéK|ÈèmSÔiõw p†€¨§ˆÊÃXa—ú†1—£Mˆ£äX^ÃË/p_a8à7ã2óÖ|ü=3׳œ½ÑÃÁïf¥+Ó‚¿Ö³Åì4¸qsã™'kwX<0ŸW<ဠÕDâÅÙ¥‘£ÑÄu/{K84x.äÇ–&_§$ž%møÚÝ©ûq+iùR8ª|xŒi–’2´hÙ¬›þž‹=ÙNj¿n'埑¼·VŒô'ê6¦3<™‹Ù›uoØÜ2Æë›`êf05š Øjä©[БÙ%ìv#†ó–|²«ýý‚éR3T³r1ORÕ>NŒ3t¯E[q@­wsj)_ž-aw ÅVÞcÖôöÖÝ tž ¹ùÜ™Ý6:,]êVXFøg/À~¢¯·{Wîƒ_ñüpŸL‘%É¢ì[{"‹³ °ÌUDˆ}6ã=øOIfù€rN™UzZǽ̗\!\M.I®ýž>×}pññzGuËQÝÔ=9v•ä?Õ•öÕù¯çti­=O»F—®ƒÜ n麇3ôaß¿ì²ÁV£ß†ÏEpŠÒ^LÍQ²9¸ó[m¥ݡ'5àeWô-Qê3o݆7ºßPm,/ˆÇÆOŽÝZ³èyâd>˜ŸÎÞØ sä|ÝæÚÈ‘ðòª!¬á•ÜìE´aƒ-Í»ÚßNˆÉ[ò>·àŽ>>«“¥b6(?M'˜"Ü÷XÚ¦aéË%¤7³„rÂÏCî¡7J>e Ù|²Šý7O)¦üôütßúA[šG.Ì⾿ÂÂ<Ää+s¶ÝðÇöáLÛùz= ÿÁ¤×4ô€^WÛîÇãUáô Þ‘/v7=ÆM3ît¶îEÏ‚ôŒ¥Ø2¯ |¥§½ô EÅ–fŸÆ{Óẇ['¯‰,ÐýH<‡ DyR'´7o„M¬ /ò<]áÞÜw<¾;ˆ?Ùœ ßôaPYMSË+8LŠ“‚å*Çiôyî^Z‰D‹!…áXÂqQçÀêíY~µo´ÏƒÑž6ë~zn´Šleºáíx.¯ÞKB€ÝŸ3Ûý}²g£Ì q˰Ï-íµTÚlMÄT13ÉÕH±]¯b6ô‰§Í ®§ª…«|¦_Jãô/¹åÙû¬×[RG.fA„–}àpÏö§˜|”~Ⱦ¬×4V ³–k“Û*&D*‹@k¢òhR“æÁ¤82ÐÊîþ)Ãe12(îÓ¼ÎáÖ^…}ˆÃá9_åË$÷±{H*,‚??íú$Íïºð¼òyÕó–|&n’yQeX4ÈøÄa> Å@H+.Ï0Uü+©Á¬à»(‘Áôýñ²¶g!¡oïîh_6×ù’;Ó¢iÔ®UÁB×J˜ÒµÆ¹1%PkLã¢Ü{¨õžŠ(µ—jí¥"Jä ë ã’Ü%¨u‰qÑcØx-`G!)7σ÷ …G#FáÑP1x4F uŠ¡ÐßOÃEqÊS±1m@2Xš^©ç1d]l'ÖP€¶v£Ÿ,Uò>óÙ ÈgŸ ”P ûö’¦†£9{IíÊ‚YUXwÀ /4r¨±#.*ô TåG\XB¨ÊE˜)B¨ÊE˜I2GY—šªòD15ß~ÕèTÅ©£è`Ë8*ÆŠ£b(*êFAQ'  ¢¾_B",ÆB»¬‡úß?M\I“Ôã*qPÑ™×ôý#AW°P‡Ï5¢}pdH^ànEQaòú+¤Z`.Ü .®Ñ¦¥kœ9\'œ0£%ݘlnln [†‰7A®ý†\Ë0ïr­* ×Ô¸®ªr-.,\#Tåš"Ì\#Tåš"Ì\„£\‹Ë ×U¹¦˜šï!G] ôП˜:жŒ£b¬8*Öˆ¢¢nu¢ ÆµÜa»7æ?“Ž‹ÉŸ’¢´÷ÜD@]yAÍ“«ï4š„ø6¯¡´û“ùòiŽÛ8¢ø=ŸG¬KZƒ? \\e¯ì˜UQÄ©ø_V$Â…kl(¬XÊ×H>pz¦»àn?VÊ©89ØÂòᘞ÷›™.e×iSF¤]'sB»Øs¿çPeÏ©‰‘ÜŸ ³œŒÚNêé•ùúŒ2÷“ ab[•V!!¶Y aÌB«`B¢Ù$Äö*!¬BB@©e²5ÞŒL1VÒµR¦¨•°D©¥é@, ¡‘·tãb±Ês½§‘w‹MÚM‡Ú¿Ò;°Ûda·I¯†©{<>vÓ.œÒnA›JÛºZw…©˜6ôîyW©¨óyí&¯ÀDc^Àz½¼}ÇßûGoëíïåêí÷îŸç¸¹vímAC°™Fe-ˆ5Óª¤‚f[…³ BÌl«P¦V2Ó©Œ"f—WJßxÚƒl5–ÐVµJ¶ª…0U«)êhL€V´tØÍ–½N³íýø´"BRÊn]VsC“+ ‹3–›7ngªØÎG¬Œþ‘feÚ¶j¨Y…©¶ÍkVa®Y‚Í*L60K´£Ù̶íÕp³ Ó Jç¡,áb«‹ZZê\,K«a¨óp qŽ!¢x7t¾tË}ħ›‚½'Þ@Êt t—mSй‡Ó]Ätç1Ýåâèä8ß›˜ïê<ß…73zÈoA¾Uò-*Ê70K¾EEùFfη¨(ßÈÌùžÍV¾Wò-*Ê7*µÌC±®à ¨±–¶ªÅ²U­†©êpMQ‡cŠ(ßG‰º<'ù…¼ÖÃw EÚ’o?ñå±»ã‹)yïBô£,(МÿZó_”1ÿtÖÙzÚÆwW>ù-µ uê¤i¨‰—vÔô!ÑïÉ1¾Ú7(ezHv— §·ßB#}•†qJòŸ>‡«q¾Æ.\¶UábÂe›.V!\À,p± áf+šM¸l¯ÂÅ*„ ”Zæ!÷DpÙj¬¥­j±lU«aª:\SÔá˜"‚«¦c}½„«Œpm®ïú)„µL“o‡ñޝC–«têî Ž6+é¼Ädm„¬<›ÏMÍbg©ýÎRÐíº³´ÒGädûˆð>ªÄi8tòSÿzýÈïé Ä›í‡d¿Såc× $W­]]å=RÞÆá9ÞoYÚt˜h—ö§ð|ý>™ÆäßÐ ÷Ióš…ý”м¹éî(÷øÛ§}¾àö+)hߨòáñ­ÿüN._Ñ»½¿’§•_ˆö¾º4ÂPì:Ý'r±ã¿â_ÿòïL>/*GËRsÖ_”:× …E´ ØV]PX… ŠmÖ…U¸ ³,(¬Â˜eA‰fsA±½º ° Pjž‡º]«Vøz?«´)j%mQ*e‹R S”‘šš ÄÔÐJâü$òJ²X4(Š7Ó(1÷kE™Ñ’£§Ð6®z m+EÃ+E!+…oÉt¥hŸ­ôJ¢ìÉ„ÑâåqÅŠìЊµ°Õ¯’æåc³hG"Í%õ-cö+ðoFšöô;Š6ÜÆƒ† 3Ê\!r¦U‰ "ζ oA„¸ÙV¡M­&l¦SY "DÍ.o,}®M¡sëËúꢄ–:WÉRçBê> endobj 173 0 obj << /ProcSet [ /PDF /Text ] /Font << /TT4 475 0 R /TT6 268 0 R /TT8 269 0 R /TT10 270 0 R >> /ExtGState << /GS1 478 0 R >> >> endobj 174 0 obj << /Length 3923 /Filter /FlateDecode >> stream H‰¤Wmoã¸þî_ÁT+"Eê¥ ì%Á!‡Ënºv®8äîƒk/ÙÍ*·½ßÑþàÎp†’l“Þ-Š‘¬‡Cr†ó<3üa9;_. ¡ÄòÓ¬NëBdðç^Ê:-*ø_¦y‘åbù2Ëøú4;ÿq¡ÄÓ—Ù%s (|M4üi|lÅ¢§ ?Û—–ÁÞï½7Yš—¹aqç™ÖÞ5eÑ5yÛ<µBWÉòóìj9Sb-fEšJZ€ZÌÝÿ×vö)”Yªñ»±6µ{ˆÕß6q„–1eZü/ÛƒC¢»ÚÂØa•êŠ1•cí9F)±>þ/?Áa|†€_…Êĸÿ=«Y IƒÙ¨aã/3«ljø×f¶˜ýàÒØœHãå4¦³-èl•Ö†Òö%™k+›®k_1ãj)¶o=¤n¹²N0W­èŸ[±c|ÝõÃû¶ß>ÒÐí&âÝf#Ö<áSË“ˆ¯I³¬{hla’u'nç4ÏÍæÍ?ónñþY4`™Ì•–·¼j;NÒôëmGèÏwKxVì_\ŠgëTSŒ‰=ä5Sößı‡·WzéÚìê?ôC4¸Œkà~·<Ðí`\Ÿ–.a»bñÜÙ·ƒ /q ¿áqyõÞ¼ö/¿&ʤFúUŸ›Ä©íD×>mûuÓ·«ô€²J¥™qGMo|Ö(Õô¬÷òÎù›§ F©–†ŸšŸêà·ÅˆÖB¼ø@_nÅb×>b(ð×úô¨ã[ŽÉ =šäÇC lå‰\£èˆDŽF4üä(Šq½‹Móå‹wüTŠ+ µ™ºM^ç€Îëëá0@—¥;¹·ÝÎo»w_ý·c5ì!ÌýdȾ£³O†Ôsç?ɉœÀÑ”IÏœQÇ{6¤Rkqq'S~- !³ÆEcù—ƒÓ­+E~Ò,%ÓÃìm|òüP’?Ð6KØ&ý^wlØc²–x’<‘€ÔÆjäŸí Øü™hç{CQÒ¶¼âLÁ^+y^dx-i>ðBâwúìRÉÍɦ›Íå¡fãîI´›vØO×Ù ’*Êjg`â&¬‘°qÜëú€ºÔð»Ø5èdÑY:|’%/>^½£37òJ¸aí?„¡eÿWŸ¸ å.sAŒ4ÕY#w|îÌm2·´·wI^Á¦úþ5A–¬Þú61¸‘÷{¾´°û¼¨ÀS\ÛÏOPÚAåÁØÿ3Q ÛaÐ .¸ý¬‚ðý’”àýGø°âß7ˆÛR^$xÌÛ—Z·£^j~i‘pE™ƒÂ@•‚‚7wÿ©ªžÁãÁÚ¤z *(È…‰™ªô[{´zSXçÆUÞ°1¢ã®r‹ÿ§0¬\EWÖ°r>¬ É C§p]§*ê1¢£S`\ïm;רEDlsÈÇlðIU7·P*¢.ŸÇC2ŒAí¨ŽÏ!€NBÇH†Ð1TtŒEÝ €ßì| ƒ³iYve¦ziX/Õ~9tT\È~Œ'Ô@1´¨Sèâ•­Æ.ú^þ&q=+uf³3øœý–ï2…­ÌÍÅ9°®£‹¿#=3 [RHøLáGGM×6‘"Z_O-; û‘Ú÷#k!º-qÉÒ”Çþiw$ÐgW9 ^FPF±@}Úv°PÏb Û[³‰˜˜ 4ÆVÇ4ƒÀ˜f„M½fÕŒ°±× B£š1fÍ 4ªcÖŒÁ8¨a[¯„F5#êá2Ï2­ÓãPÐI,Cè¬:F#€ŽîÀѲ‘Õ1@JRžgÜ$þÍsHrIuÜõ)ø `­\ïzlµª‘±ÈfüŠ¥ü,‡ÿÌfdg3$¼[œã@Š"?¢œÉI‘‹E²ü<oLnÄ!5óšwó,ŠÃT ¦\.G…‚w&$ô1Dê‚I£í1±11b#fØÔ“Ð(1ÃÆž˜„F‰1fb%fʉ9‰¶õÄ$4JÌH¨ù ,¢Ä £C,èVõÑ¢ÞÝ èÝ ‚1bB•Û»¼©zÈr}@LÈê«!!k¹Û4«tX yȵUl̇ښ˻ó;¼Îæp'”?'™ü€V »e_^µ¼iÜ]ÈO÷Bx¡:–ãUAzÊçpY¨åVí®íVk¸‡ÀnC<‚æãˆçGW¼L<Ò}aÛõîêB׎émcGW‹ñv²ß¡À=çžî®r½ñ£Ä›¾þŠƒ“]^_`á–7ŒûÕwíþͲž49Ín·Y;á›Úa WŽš¥ 0¦aS¯Š9Qа±W B£J1f¥ 4ªcVŠÁ8¨a[¯„F•"êáŒoû…µC@'± ¡c°Bè:ºGw`D)¬Åå¦J1ÔìØW (àMß$sSØŒËt1C1”érR¦ ¬ˆÿ€ÑXòO×lU5ë;mO*çû•\§ºªõhíø%•³Û»cÜK5'õéÎG~ßH_Ò $ïpÎãî`ñ6gBüò1r Â58ö5­F2èt¥À›€Ô­˜ª[Áê¦ñjCöugp!ŸÞ=rÚÕñíšÜóâW‘ôU£ð©½Uî%+ â _Jé(F©S$uûJg‹ Õ$¬t F”.bÊJÇhLé"ƬtŒÆ”.fLJÇhLébƤt£qHé"¶¬tŒÆ”.êáLLèÂà$’pŒT#q Žžc£#ÇXLâ •³Š$î^Þºä7LI¬ýD3¹@<7PÌAV@¸T¥Žî‡ £¶)—:³ÙàÙÐ6™AQ.ðÙX Êè{¦o$^f@Hn¿IÙÅ A$@NgmZšòÛ-¶_GÑK]Ï!©Ãb zŠ:0ÊР©'¨£ü ›2=egØ”ÉéMƒÜ Zzj:0ÊÌpx‡Ðî[ ìËêˆe t§Æà‰c ,Êhdb>UFOk`jF#Só©3zêØCS›š²‚ÑSiššÐØÔ”5ãÔ±´ ÌL`dbN*FOeU`f#3Ÿ# kJ¶lÒDzA¬,wM^¿Ö j‹‹;ѵ´üI8ÍòúÖôÜqÐ5ÑÈm3ª§_Ð}4h\÷%× Jd÷´i¿C&š}×ðÈž¯…¸‘ãùh´ûÇûxGеM×w)y=ÌÃ_NÀÎVÓÖ˸8$JËÏX„`ò÷Ë7M°ïuÇõÉkІ•ÍS;ýa y_ÕD¿|¿¥u iûšÔÐçâ®ÑD¬¸®éŸ.¬ZúI`s'Ë$Æ’Âȶ‚Ý`À'<ú®U¥ÉùaúU˯û¾´îùý+ Xkë:âi|Ä n)ïÛvÍ0ájÝ=‰u/Øz,~M·¢¦ üzÍ^ƒ@÷ ÷¦§Y®¹ŠÖÇ[‡>ݵ>é´×—Wï=x Oøæþš(ôIø±Û$“¼ÂdßÚ…Ü%Ü Òý&Æ3±.ùFA“×òٳŲúx»p™X¸¾ÞÊ[Á …»„PÓ}G÷ØÕªÝ´>á”K8… \}?§µ.¯~¾ò“_%Háwý‹_A4䳕|"–dÂË%x!wô–Å#óäÖÛÒÏï¾ a,‘˜>‰rN"¼Ûí Ѧ%‰h'2‚GóÂá6u¾\ÿe¼JvÛbè¯è(‰ªÑf¹·$@MQ4mO¹(†°-£v‚æïËmfd›t{ÒòDjfÈGò%0…AïtyQSaå;®¬Õ²Í—å¼²Aºá­Ê1B.­åZÊÕ<·xK–SŽ©ƒ˜>ì†|WÉÝ´•‡IRkÈõx÷Ó„D¼í÷`y³…’ñ^®ÛéOÿv·î÷{¿íš·­µ“ª+ó²›oÚǬZH?ùb,)óºÛM’)‡Äƒ’+>ƒ00·½prJRñú9ùaÍò2æ>®œ_úLñ/ I úm‡çé0ö˜û˜8𻼠±HB§”AîB3(ýâòM¥Þ{Àéc¸éì8õgÕØ3BŸ²k¥ÒqíùÄ~ÍWLõP)|ûö_÷¼§÷¬¤b1Òë -5üššª/¡¨%ÀâÐËú_Ž‹qh-¼èc žp?Ø8 [ó?¬üÌh¢òz²ÕÐRXjÅŒ7J¥qÏ.ÿª'+Ø: 9ì¹òvÏÞ,ñqqÎpœ‡|.B#‡àü! ùá£g‹+˜.Ìqyµ¨sD Ú7¾ÄßdàáwF]íéõ0d5?_{ºnÔš-?hVY¦ )ŠRú˜òp ý¼¸Ãâ1CÌ!¡î? y°¦*ý ôN=»ÚÔð§‚ÕZaТˆnê)¨IÝØS„Q“"†±P„Q“"†±P$«Ñm=E5)buˆ¸ÙTŸµ‚ÎÎRCãaih< ÛUÀ¸„ôW“¾X¶³¤‡KÒGjÇaìÑÔe[iè@0^,©£B ö²¨… ÊÀ„ô'ñ s(X¿SÂ\CÍ蔥ÃU4`ТnêiÀ¨IÝØÓ€Q“†±Ð€Q“†±Ð «4Ðm= 5i`uˆCy–S‚ËÜ´Ó1a¢wþCª^}d ¼Øs¿Týú x)æŠ_u¿’^Jů€º_Iï×Ê”s·‚©^}x)‡ÎÝ ¦º½„qÇöc1„k\¸r•„¢(j¬\Ô­ë0%%W®*¯ó*ŠÔ81£šÙï§h¸¬Á©Ú¸¼^­†¿ìQÕév5$ߦõ¸zÿ1‹a^–óÉ¡ “C‹(+ø MYE èw;ø ?ð`Úb<Ú¥¶ÞÒ  3zùL.°ààDnä2ñ?ä»1ÃAƒ| žûûwl:› endstream endobj 175 0 obj << /Type /Page /Parent 284 0 R /Resources 176 0 R /Contents 177 0 R /MediaBox [ 0 0 595 842 ] /CropBox [ 0 0 595 842 ] /Rotate 0 >> endobj 176 0 obj << /ProcSet [ /PDF /Text ] /Font << /TT4 475 0 R /TT6 268 0 R /TT8 269 0 R /TT10 270 0 R >> /ExtGState << /GS1 478 0 R >> >> endobj 177 0 obj << /Length 1052 /Filter /FlateDecode >> stream H‰¤V[oÛ: ~÷¯à£ô`UwÛkvA†¥ ça؃‘¸·Ä6ZgÝù÷‡²¤4I/hq ¦DJ$?~¤}Y&eiA@y“¬°Àñ7 YÁlŽÿS–+(w •w·ÉÅ—¥€Ûû$åŒs<ºJœàŒ’äãt2§©eŠÌ¨,#÷4ÍÈÊýu} ŠYÆéÏò«óœ{ÏxQ&xi¦YaDåG¼Žï’šå&M5³¤õšÔ†Í;*ñW媆åà ªð¬wuP1†½æLeÊ`†è|ÌLʘš0.5²¨nk-%ŸÊD@‰-˜ÎÁJÀ $¤ãÿ]ܼ¬È8“n_Ã̉ÆHãägμ¬ñntÆì{Tc £æÅ(ž=÷š.$,˜ÌƒN(Ç “ž×zb}ÿ‚ÂW,Æ/´@>€à0ƒ?9¬“ IãØ(1ð]b„a:¬¶É2¹iŒæc%…f\Wz)0Ykf“}y/oÆ3뙫a2ŸÑ/·$>¯¯¦Ž€™| ‚k¤P6æW@3Ž¡’Å÷ùç°ù fȧåH.©b‚KûH©È(,¥wÉÜ9IÐ4×NZîû¾»Ã]2Ôk¤ûn·oo´ª† u-2»Zý¾$Ö/·°Í±)ôQ⮿¯ÅqËfL\÷}íÜã¾UÿR™»¶‰;ÝŸƒX"B&;¡©ÄÇâbº€ÆõºkÓðŒ¹ =fÃb´¯WÊj…‹0sÜ`É|¼¹.²ˆš„ùr 4@æ x 8Bl~Œ„> ¯póU7øØuŒ‰ûŽØMn¨G±«»á"ÆŽ[“­w†o,2L3X ìj’“M ^ÀÒ(_ÌÉÕ§ @RW+¿ü¥ã˜êX7·M»ñ¶¤qüÃùê•„½n‡'4":Ù·ëh¼E¢¸‚7í-t}ÜE¾â:Ü,N#©wOp•T³Öâ„ *$­³¼8 Ê| Ê8Rœãdú8%ÒÒ>§urgÕ÷Û&€†IaûE *š:#’µ_F8÷A¨¡‹HŽÈ]F„ç¶uÀ–ÝYuêá±:C<¯‹¥D-\·Íß`Zµë3Ÿ(KìÃÒ9ÞÚPEÚ'¾¢ÕkžâlLh}4Û_®­|‘÷¦œ7dz«$ôÛjðWj÷ÚÆ7‘'—&RãÁäiÇ1CçÅI¯‰âüSÄ1CbJ:çd±g™p× ÚͪÚ¬^7ø‘;¼3?P$?æÌÙ7Âã,58K}[IW¸uã“6$>Gª(Ÿ<®Ú†n,T¿©PpÚa'ÈÊ/*jˆ´nöQ>ŒgCàxjãÍ›pz¦vá§vá‡Cý×kë`µêàúSO+ô~ K|ÑáØ‹ïV|a/:¤U:té(¼wüiÖúÿLoühûoÀÞsê endstream endobj 178 0 obj << /Type /Page /Parent 284 0 R /Resources 179 0 R /Contents 180 0 R /MediaBox [ 0 0 595 842 ] /CropBox [ 0 0 595 842 ] /Rotate 0 >> endobj 179 0 obj << /ProcSet [ /PDF /Text ] /Font << /TT4 475 0 R /TT6 268 0 R /TT8 269 0 R /TT10 270 0 R >> /ExtGState << /GS1 478 0 R >> >> endobj 180 0 obj << /Length 1164 /Filter /FlateDecode >> stream H‰¤VmoÛ6þ®_q©!bDŠzñÇÔu;kbTÂ0,èÕflŽäÙtÒì×ïH;HŠ ƒŠäïåásG¿k¢Ë¦)@@sMø¤€nRNxQáXò¬H3hî£Ô ÷ëèòc-`}ˆ’”§)]Fvb•£[ö~>½‰“‚gìs,$/Ù!NJ¶´Ã°Óñ‚§ñ׿“õ\yÏh¨iI©ø$4ïќڒŠW ¦Cœ(^°Þîâ$G)mîc‰ã}KÂ¥†Úx…–¾ú^“Є({•ò¬Ìr̻̤ ©‰Ü¦ÆíãOãæ{4k"DÅ„« ˜„Ä{ݽ-(S.í¾ÊsžŸIr™Ûù+gÞ–x7ªäŹœäÍ(^=÷3%,¸¬H&2Ë ³^—zb}ùˆ“OxßQ ø"…Ïpû5…UT"i,%~å"çŠVÛ¨ŽÞ9£º»I¡xªœI?#&+Åsb²»Þgæ*bnHÒ³ÙÍ캞ß\×p õb6_År‚üûmþçU,ÒiÝxñeþ{\–\°QghãDÓ¯QÝq.…$ã"•…eš‹d$š¢@¸ÀP*UpÉjÓö«v¿‚Ù£û•^]Ö;½ìÚm÷7Îûî!žX‚Ç)†gñ7‹ƒs#¤Ç@EQ=—²¥·²^“ùužU•²›æ58û¢ÂzÁ BЙÆ-}н_µq"ðㆠÙÐÛ¢sÂpb¾˜†bSo·š"ÏA'$K‹2÷ñ5è®B“›8±ÙvØY*Äv{Û]º‡Öå›lK/Ûº–Ð’f80žúíS,K´ GÚÓ+À®"”m*Ö‹³ ]o´›%v؈Hüi¿zᄤz'XbüûŽZ¯`:Dcì›6±…_kÚyÝÔnèñN‚;§8ø,üÂlºC Þ±RD>QY”-¶ín·ðp€+f£ÁtÁ eßtׯ/œ°6ƒƒgÓ W‘ î6zãw^Ú ´3ÁúüºíÖGêy?>ƒã¤!§ÜöO.«æ¢ մȲ ¥åŽ F(±.|T{ûÎ [ÿ:jÒ5ŽWvsØ ´‡iƒÃÒ­Ù,yˆnéæ,ž;Eò@; æȰÁó#µ¤øÌiªÁÝgf™ja'#ÇÝn »F¯E! €!qÛÓ‘`F{(H øV‡x±"*†ÑQ4!`îtÜpŒ¸¢Ï›Më3·<7i}~-òíúåÙíX¶a³¦ôQáÿ\bpIˆ"ÍÆ˜G?=6Ž è0ÁÂÖüœT/þÜú8$ÛÍj°vë}-LX5¿Òž8cÞ]Î.l³ÌÙÈiëhÓ>t)€¨ðm c®3M¨{ »¶ÇÿÈ%~î #cæHçÉ!ŒÉ "C3úðÏßÊŸ Y=?væe•ãË^(zƒlÃ×Ðì‘hwzõSœÙ–ay¤ÿ¢ÿç ò¤ÿ‹rÄÝ;½Œå}‰] ðÞ²ü z½L‡A¬|šøíŸá!Œ( endstream endobj 181 0 obj << /Type /Page /Parent 285 0 R /Resources 182 0 R /Contents 183 0 R /MediaBox [ 0 0 595 842 ] /CropBox [ 0 0 595 842 ] /Rotate 0 >> endobj 182 0 obj << /ProcSet [ /PDF /Text ] /Font << /F2 271 0 R /TT4 475 0 R /TT6 268 0 R /TT8 269 0 R /TT10 270 0 R >> /ExtGState << /GS1 478 0 R >> >> endobj 183 0 obj << /Length 2219 /Filter /FlateDecode >> stream H‰ìWKsÛ8®½êWàVArnŽœd3'ªHÞË̘ˆ–9+“Z›Jfç×oÝ ‰²ä8[ÚìEå*™x÷ãëî¯_ÎG/æs+”˜ßŒÊ¸´"?ÿ‘—±-à7S›¤b~7JüâýrôâÍL‰åÃhœÄIG?܇Ûôuô«¼|;ùmœÊ«Hé8—Ñ8—ŸÝO·®EÛ8‰~Ÿÿâ^.ðe¸(WI!ƹ‰ËLb~  !vïÒ&.¤˜tÑØÄV¶øï&g°J“÷‘†ß»Š?×bÖㆊþ×w5-ö,io’8ÍÓ 4„ǽfZ³j*sªÉiµùU4ÿcôj>R¢#[ƦV Ð@‹±ÿ½¯G7Çò$ÖnÞdYœ V2¹ïgޝà3&í÷,yüÊQ)ž{jV±.hM¥A¯"°>¾_ÀÀàW¡q%~ý=‹Q qhÔ øÝ(SYlh´ÍF/=Œa»÷¤2qbü•øEH6&ÎÉèÞÝ›'yȵbòáýë·p¥|˜®?^D*1±’sZøðÞ#'ã4V‰¶/înÄ‹ÉèÂX‰h\kyiC¾Š)æM¿ªÅ 1½¯궯ú¦kmX,`òA\EÎBFVàR®×M»dÀšãáj Ùì*iH&‘’s¸¸unkq*º ªüõ¢»ñoæRÀĪˆ-œ^8²éÿéÜ-÷Nü\}'Ö÷Î2¹ä¹ RÊ —xGÒe<)-›Áˆ^ïZªYnè®ê´ø¿¿­¿}ÊIÄžS±2fë9<§,Z Ï[ÙÀS¿Iw¤œ®U/îq´‹ A»ß"œüIx% ÏÔbQ÷U³¢±øT¯º¯Q)cöâÓhµ©:RZ‹L+—Ki¥ÔÛ›^Ý „3`jЬŠ0œV¼çï꾦™/šÒ(Œ&I²²$lßy A{AL^DÎ!Óf€¥î\aŠDÎ&Q&§ÏÀlV@tiÐ<`6”E/¼F;‡-½òn]~ïhß“©ðP¼ý“Éu×&ò'n(°hËÊ»>š(…_ƒuE7V|Md¾`Ì*<ʶ|/#ÎxœþŒx­Q=(pÊA/ñjúÊò7WS¶fëf”vJÑ#“8¼'¹h½kHªÞyÔEŸ æ·S±fÓô¢Ý°.Ÿ@•Hcz ÎjeËïL™Pþó}Á®ª?¡è;“€iK‰\èóHL/¯]Ðl÷ý)Ÿ1ü6|Î÷&)m«ÔÝ ÑvBBŠô16Táâ‰òC.5gj³ê—“«éŒÓí`ªÈ!€¸p‡ sbHƒ^ kÕŠ¾:<$6œX˜?ñA?â(«ÒÄä?ª–LiCÓ"1Rqj À÷3eb·†…KboÛà‰¯íC?|ÛÁé¾f›5á8£ST[Iš5­ä*ÙôâEO‹UëL#ùd=<é×ÀVÎPµü=¾VIrkÜš’[»ö´øSeÐ^×^í5hŸHš×ïÅ—jµ©MÔkþðAUn‹1ꣃ>ú¤ÏãbºÕçeÓ±R®©ŒÖ\0iüÅ%/^s¾2XÔS5ë>TdVŲ*<äÿ'Öl¯!8ì©,x*Cœ¦’æ}ýyYy±à(Tüè²€s×;<1³š–6ƒ;j…ý4(‡Ý;B-hù€)-u,Þ–ÝdÁ–ÙЖ™äÿû¶ÜfˆÿÆ”6˜²Ü7å±PbA+eƒÀ‡WœÝ×Â%®5ík¾¸™BEI|áp]‰ô l·;œ¦#”uS´wö®6àH¹á ¦‹? ÌÆ9jœ³Æ¹ÜÖžÀ··,½§Cœû{HþϸÉ÷ ,—„¦oꇓjúYÙ† Ê‹0.Ð P—˜O![ßî¯ nkÈމøÂï3¢­—]ߜޙOd‚iÅ1‰¡ŠÌËrä—̰ö¸DMóÇ’Æe³‰˜9ê1nø{½ZñUKaòµ> ïÕ’H¢Rÿ#Ü^ƒ¯÷˜7»ˆ¼OÈáýG&žT«$À*t“ù£nÒPwR‹„Ô’O™Äž s!ì£F#£FƒÒVÒVIiërr51W»à÷jçÎäÜ™œ;“sgòíL^ÍGÿ“£pü endstream endobj 184 0 obj << /Type /Page /Parent 285 0 R /Resources 185 0 R /Contents 186 0 R /MediaBox [ 0 0 595 842 ] /CropBox [ 0 0 595 842 ] /Rotate 0 >> endobj 185 0 obj << /ProcSet [ /PDF /Text ] /Font << /F2 271 0 R /TT4 475 0 R /TT6 268 0 R /TT8 269 0 R /TT10 270 0 R >> /ExtGState << /GS1 478 0 R >> >> endobj 186 0 obj << /Length 3827 /Filter /FlateDecode >> stream H‰ÌWÝsÛ8Ÿ{õ_ÁGú&V%Š¢¨}kâ´—m7gï6û Äj¢=Uò¥rÛ½¿þ@ %¤I›Þt-ÅsCŸ ¯•+\Ñw·4Z®îjZWâ\Óø•èÄ­U’Ö¬G'МXñÚõ²›á‹o—züÝ®ùõºbo«–ß˾»V·éà¶|JžšÃý­û;¸0ô‚Ó¢îZ±êð÷ ë®$nXVèî\–ë¦ÿiÿ~^ýg]óëòjºe„’É’¯µ.—î`b½Zu÷Èá þÁAhH¥¨>ƒ¾r…fʺÿ¼=M–­»PÉ;«ñN?ç0cm_z9•$¥ÁG)ù¨kwŒÿ¦«MŠ`½:l½ Ö+°>–4(~{+>–ͺ4P­øÅ¥Mˆi¸N¼F´G{Ôw²ç!ÖÛØ“¦²:ð¤Ëži²%"äI¤7¤Ž­Ÿ¦¼àg'À±×uO‹^¬êÏÄ©¨Y,ä÷Äñ^¹ë%ì¡mèË,ø2ûQ} á,ΙÓ9•0"~ùívyâ_üêÐ’ÉsqÒ”c§6v;ã|Ÿ¸Ð©.‚í&µp÷ã°€*Qî ,þrx}ertÀº ó€pÈ9Ív«Ž¢§lD’§!vh A7v|¸¸¡Umô¨ZÚÉíüPpº«p¾K"°V;%Z› rÂAa)k.€Ž½dëøøHœ5ÏH™Ç½+c[” Y‹ôÒ²ñíêA¡—¼çº]Ä/õí](¯ûê†çÅq÷·9Bf­>BøWŠ¡ÜyRùòÞ‰»òü𢢭ô@Í»Öûâòïd|‚À ñþð#Á€4‡£/‰lì«Å¯Š>:XÅfS«Xãâdƒ@ƒ“X‚T5I“.ñ­[¹{`áçZîÙ‡õ§P¡ZLVšE”}O2ëëu_wùð>ÆxMÝaiyíµÃ—aJŸ÷­¤…´¨DéM%F:ÐE§L f@ )ˆx¦è¯D¹Ìùë`åO~ÂÅù…‘g<†ÉÙQ9ØÖûÔ~W-w÷¹†åog(cqŠ´P¥4ïbÅ ë1µ{YÄ^ÝÖí­(w×Á9”†´wŠuù$•p7†kIÆ1_MJWƒƒ,u„f¢5ôÏ€˜9ÖðÎì°ŒçGç‘$“€ä"v…ß8l¸t'•¸)BñÃs$N½!ssóâ„¶w+q\Ý•k>Kœ6Ãc Í,¤#ž3Ö¥¤~…–Ò":tƒgðüfS­"×ì‡=†ÚÈ-êéø‹Ÿˆg3À³¡.$uˆ&<ÃÇÑ›Ýц°…°6kK£ÙŒXçlÖÑÏ“ø È’øXV4]‡À‡«¢1’ æ×^ó­@l%“Ó8Š€’¾¨0uñŽt½WŒÕ›£¥Gãü‘´‘rIjE“‰GE“ E“E¤[Z,š½ӹp°ì1(™*Æo±¿™Oe¯ÀþŠ|Ó„íD³Ó¬à-“ô ¼Ù€7;&Pîk,ÎàÜ­11¹üÂ+x€DšZgNOŠ’Ý&%T=ü<Â:ŠhXÉ“‹Ó—HÄFžŠaœéÙÈг ˆ}1FOA5Ó¤{ZNWHgЩè”ÜtCßH¬Ok_“4ÝÆÛ¿¦³Ì¡ç®ppÓétøÑvý R‡°<-NÎi©¹dFãqZâ¾v͹ê:Ò¤t²\ŸÀ¨¿À–áDÛé …†,ˆ's>TÀšB'p¶  ˸Äb³C+¸–:.LPV{e5-g4Gc¬R8Bi4hí’УÛ@y¨²§‹³¥qêa±é7!Çï­XuA tˆú©$l¸Æk¸.Ù˜£¼9œ@>²Y{¢ðWã“éÐ…vìßT6’Œ% otKi'ö ñgóP…ºé²åZŸ´ËµvùÐ}~¡ °-l2*A˜r¹$—D‘ô8cÊìïjÆ*ÜàW‰`¤9†¦cb¢O틹‚×ïÀšXQ3+æ2†S˜ŽóÍ4‘¦Ó‘¦B¯©Ž×Ø¥º J Ç\ò䣒'ÿ!šÌ$„Ÿ>~ï¼mkN¨˜šo0×–˜=–0¼¬/ Jç³!œ5…å×È{Vêaî1#Rõ8ÛŸyã] ´àµë—®?ƒAÔ¯ÔÞ’Å ‹DgõÔ7ohg†–ïÚ2 ê,´=Ö>Ôð¹>ä‹’’NHÄÆjJbóňãØH~ú86h¶8sUÍÍí¸>áÚ¿†1;.y^a:å˜Íå ’q~=Päp ÆÁ™RpnôØœfœæ‡ÎM“’m7)ûðyÌËŠñá†çUK˜¬{‚…¨—P›Ö ªš×3v‡ÑJ˜Ý#|`˜zz'3 7·»¸&ò$-’âòUÂðU¾kÃÏ ô¶jûX­ðk[åÉ‹R“"àÚ\€«ÙŠÐ¹9n?:³:A@„ú°)ë±²Ï[R?%Yœr³¸ê=ss¸bCÉ·œà-Û1 5’Èbúxâ þ’õ™: s§§ D“XE.9ãÃi1 ?͈ηkÇָ̂¶)Эâu·dâuS{äGÓUE@sãŠÙ`¼W^©k¥<5¡÷­iIaA ²ÏHŠá,U›*g‹B'÷7[—_¡ä—ülrG·t>‹­íͧl§î.iÑæËîz‡À½ã±/Yª„¡ø¸Ã^cºžOÎåÇ’gÅʶWÓXy¡ÃhO45ä×dvK+2•iþÕ lH$óy8—®®w`ùZŒXT¦üË5he¥9(«Ù°½:íâÀ¥_>eÎ߸rí\™Œ]¹!¸%mPGtx±—YCYÑ–BžWþđiôP4³ª |.‹ óë?„÷- g*ï :@ZnssMènMÜ8¢GrãˆoŒµY„'y¨Z^ÔIï€båuK˜ ×pYѱe[êÇÿªohc…Nn æ™b #8 ™#±ÔÑ´²uœ‚y  ÇÓŽ£k}0myþ`¾Ài.˜$¨;®¹­6`ÄÊøilË1‰9ô%Mø¨«JöE0Ĭ…ä{~Ñî@uûna×ë MÊçO«qšÑšƒhÓæXò¼œþU•éjÇ LtƒøŸjdnW®^b¾.Œ1Uwòúàòé kyÏ[H®wâ…T œ‡ô$0nL%ÒdGŽÎ#¦óg׳q³¥¼Bóû½ï1Ñ/á¸ð¾TQ²XÇÊ÷“Å2ô@Þþ¸èsy%¬¢ [„Pn@ ÍW(Ëçaì&š‡õ{±ÏI° 7°/¼….‚µâÏ«jЋhÙ2fÙl l*Ò¤X¶¹W¤¿iE6„*Yƒ3>Øù"²yJU™_ó×Ïq{#ò<—åšA$ïéwûbSº+XûPl%§Ö¹]vT­:è–«›½‡ìv5L<SnåÇþ¦–\öæò$åìVÀJ¨¯$ Ê•¼(F¿øÁ)·œmï2u4<ÚÖì-ôŠá•ê&¶3Öÿ+ßq|E8Õ à\»oÁŽûïö¿/Ý…• endstream endobj 187 0 obj << /Type /Page /Parent 285 0 R /Resources 188 0 R /Contents 189 0 R /MediaBox [ 0 0 595 842 ] /CropBox [ 0 0 595 842 ] /Rotate 0 >> endobj 188 0 obj << /ProcSet [ /PDF /Text ] /Font << /F2 271 0 R /TT4 475 0 R /TT6 268 0 R /TT8 269 0 R >> /ExtGState << /GS1 478 0 R >> >> endobj 189 0 obj << /Length 3489 /Filter /FlateDecode >> stream H‰ÌWÛrÛÈ­¼ò+æH™0wäÍeG[–—%ÒI%«}€Ä1‰ h;ûÙýàôLw‘e™k¥T%æÚ—ÓݧO–“çËe"¤X¾›ä^žþÌ Í½$ƒÿ©&~(–ï'¾Yü°ž<µb};™úžïÃÑ›‰èMŸ&?9³óÓÝiâ…Î…+/unÝiêÜèM«Dè%žïþ¼üA¿œáËpQ*ýLLÓÈËc™‰å .Bôï "/sÄiãN#/qjüyçNcX¥Énÿß´x£Ä¢Ã ýª÷Š;–´|/LÃ4„ÇfAÀªÉX«æÌ‹5ȺË_&gˉ¥˜$¹e" hˆ©ùÿAMÞ/¤¾èù(޽x°±83¾‚ÏD©—|Í’‘Á¬ŒJqðÜ}k¤°ô‚ŒÖd¨4Pàð*ëò ~gü;€Ÿ„ôÅ…øég_¬&)€F£1ÁßOb{}U“Åä`ü2¸Å x1bk§þI{áIß‹â4ë emáN¥Ÿ€£Ó¢ªÔJm[•í `^teS Uwe÷7H½È0¬âŒÅ›Ò+S0…LrýÖWH$#mé]‘.ŠÏcðlé†^î¼w§A³u}/¶_b>{+nûû~ueÒ+³M\9:NR'òóÄód¨ï¾r©Âݨ꫰ضmóA|ìtb@ëà†Øth^t%NŠ[môÀè üK8‘‚N¯ñÄB,-mw(ü²ûiº¨éÖž§M]ó%ÆÁsZjX¼²RÆlzr¥x¶ØVÝ_„ÝÄ¿wm)½0ʣǚ2±¦Ì÷ªŒœ9ä9¸©†'ÍšÆÌÕ]aî1YƒmZ…\òêãò]ÚHû=¶Ó>°Ú ½ïФxûF|,ª­4¡Z”ëøE7¢>Õ'øƒôùfþSÚ<ÝHw—ºð"¦7š%Ðõ“›SyN·`Øë²£MÏÛò3åÔJ”|­©„÷ŠÕŽÓˆlìØ(ú³¥æ’Lè—FÄë·ÌÅâG–Ø™‹ÓªõñÜï8q´º'¡¦]ðpeà Ùù©Ñ*p.€åÒ,Gì»Á1žìXê ·´ EOQ ™†6vè_‚fløqqiCKíäP5‚â6 Ní m»]–Q”ì7jyFUséØÜ¬;3õLœW•©H±Á}FªñfM}P®È©Ì‚¢SšY½à3×%È"^—ëM(/1÷•¯‹“æ3Ó„ʪ>B˜!Åa“‰ 3Ýà›ø±Ÿ™^(:J?(9±°åŸIùÐA‚ʛǟ d2}ÒË Z}ôpà';®’%:NvL  cBXCâТD5­ö ?Ï1¡¥&ÛáÔ¢„ž5¾«ð&š.ºŽî,¯·ÐÊ”u¿U uºCjuí•ÆWÂ2¦îgm¤MÞÝÝ@rtÈI!é%…й½¦”®Â ÉÐ`c¹ƒLq ƒ˜ím`ÙŒŒß”™(ËwÔ½nÏtoýŒmVU nãlÖ5ÔCÄ÷‹ oÃþ†;8?^¾=‹óºSí•3Wßü;W++ÛJíö d¹¶¬zçýz?Z²o Ú;ï¨ð&oÉÔ—Þ¹¯Ùà°¶ìì^}ÑKí°gê¦_­U¸µy~JÇ›Vœ¨Mñ±ä·ÄYÕo<î@œ/¤Ûä1ËR¹i+m¢Gw O,ȹ_lQï´xÓtbËEx%HÂíÀ¢\«ë®"}Žëó{úˆÓSK(Rt8É•"¡°ŽÖáa»2ÈÞhaàΊݘpcdÒ|îP“aj Us˜PÄ (íÙ?règ´…iø“ÌÈÈ~2ì·*‰öàß!=`e¹Á0Ñÿ¨;Vš$´8 ú´]–mU°é6žãÆ3âÆîm¸C`m¾×5ížöEœÛcà\¾¹À—MbuÆr>ìÉ#Jœ1—3 jÉk‘ùyb…Œ°TÈú¨N„Ø#Î.ïÑxiù¸t4⯿.½1õ‰…9Q ÅhÀNbÊ¢1S3se Õ)ó2®N±©Nº.AE"OP§‰ÑÞ÷…M35\P˜ 3EâTü]VUY¯%ïæ{DD!ÊÁ¦´ ó*xÝ|r kX¬WÌï fÒ.ãæéÎϹöóÐ’"$L)‹pmmÛ#€É@Š`gѯžÕïµìÕºSì;ÍjÑ‘õô¦ú‹MÑ*Ž8y>;{Ë纰FþÕ‘"+ )½åëW<ñ´3ÈP}[ݪîZHÝ„P 7ÓcÉ =4‚ÌFI&Ó˜Èo¶°v@è4fOâqXnºa:Æ`û‰í­qÃöô—i ¬òVég1±J"~† t›f‹…êiSs‰µç‚S07F?“£0U1/lîÚ•l“ájËzæ="©Uµ4† Þp}>ÆúûLZq?Ú!®¿r=‡/AçÁ$ ˆ£ ÈdnkXÒCMʤ»~êÄt·µ™3¨yMk£ßp©¸ÞRWôûûàZ}Ù]B°à­ú Q[\CÊ}Qz°/e÷!Ž;ΜG„ÜAéV Þ?Ü aóTØ .LµUA­—â†K§¹‘¾ñE &Æè´-™§¬‰óÚ¦}xbØÐÑ,5Pq øïî²­.Sga~8‹û’ª×Ö¢¦lÈ9‹m×Ax -/i醲éKÝ>¥Ö±±u,5g¼ϱ:ö¨™S&¬ ŸáX÷^ Öscè¼x3{q9»º:}vIí„¡9³òqк¦×(L:ŒIcPÈ%‚¯/¤cÝíQYi`ÝÓúØhó»Xv iQþêJ-›ÂVj亱jêÿBæÖ‹S._I©ùao— K[€e0nŠÀ˜âB­J¢Ó z9qŒ÷ (ãÕœX#Œ Rö01ðŒð…Wެ~fÕ—ãêK£þ%j˜€J§Úšaœorê-­Þò€Þ’õÎHïÀè P½þiÈ #×7DwëºäV û#Ãh¸ÝÑâ1 "FÓR…¦­)¦)n£ð‰îqïÙJ{ùü™"LwœŸàvºÁ`~¬e#‹è|νÜÝn©o“ñzñÅgžÎ'ü±²ýÆL±egäå jwÉš—¼óHÆyˆOGg ð¶câÎS¦¢¤$§^î+dc!WúÆØújYž0û|6ê~O댾ùtÁu$ñ{GÓÁ7Ÿ §Mm}½Þ²±8Ú•k­ZD›]߉o}ýÈfûñÕ¶5 Dßù ?¦E4¥5ûXu‘¨Ô‡•>À»±R Ë’ƒÄß3öÌ1I¶»´*ONÆãË\}ŽøíújBEõÍ*SÇ)nU€Ÿ‘a£È ݈C¾—ñà­ÀϽ`ØC"EB¦n7DÝDÍ—5Øá%üñ‹‘ÜRß©øÌd0‘“’ûa(ÞBN6!£dém+ôdbÅÅUÛ¬\q`‡ÒQÐjžÜ=w0¸IEça]º2NößÄ™‹ì„ÿgÊ¡÷vJ7Åæq¶L*yÿsF;Á»`êpß zVº@€âþk>.«åÝYü áÛšðmc»³²É?æ_§üx$}­šG^±U[û¬SA¨ ¿äf“KP¶fcޏLÕ´vÅ¿Éý™/'ò¿¸ò¶ºrµtå=¿ «&‘ˆy0裓S;'_§Ñ+•¦¾Qâ¿'l]õ6àÛ$J®Wê ‹rž·'”ñ=%ÎPF×v®¥?»^6·ßG‡ÏNÚü§/o~ 0R½ O endstream endobj 190 0 obj << /Type /Page /Parent 285 0 R /Resources 191 0 R /Contents 192 0 R /MediaBox [ 0 0 595 842 ] /CropBox [ 0 0 595 842 ] /Rotate 0 >> endobj 191 0 obj << /ProcSet [ /PDF /Text ] /Font << /TT4 475 0 R /TT6 268 0 R /TT8 269 0 R /TT10 270 0 R >> /ExtGState << /GS1 478 0 R >> >> endobj 192 0 obj << /Length 532 /Filter /FlateDecode >> stream H‰”S]kÛ0}ׯ¸Òƒo%Y²ìÇ5ñº”u ±ƒ¶ “8iJ¾H=ºýû][òh!) ƒt¥s?ενöìÊû ø+°È@Ò×®À,§ÕašÉüŽÉ<­ÙÕM¥`ý‰RRè‚uFçôÊîùx2šŠ$Ã”ß ¥Ññ‘8¾è–ñ3”âÑßv•óP™9%sHœÁªü˜ÀÛ\Ú`Îat‰ÁŒïö‰%4^ž„¦uWGpÑ@Õ‡:îÍ®‰`;pˆÝ‰©K-uHÅûδZS¶kÏê5ñ7Â?³Ò3`Y&‡Lu !é×SÃV—'Qw÷ÆZ´ï«mgŸ‰¹Œ„2Æaö?PÏ¡G.²8÷V¨óˆ©´SлΣAXó2né1žÉƒø JÂÜ?JX2G¢éÔ¨‰øŽYeÑÄÓ–U캗1¹÷/© JÓ§ VT²1h£’ÃóÚáy3”ë€D*©8¯¾ÏfÓ¹‡ég(øòÛ¸ÃèË'¡>ûÈ—s¨J_ J2Ì‘.PË·ÕÿÍ2¡º‰r$ñ'AšohlrTêãq»Y„CÝn{ˆÈ¯ãñpê¦Ãðvp>ì·„¦9™T48ËŸ!ÝdN¿SÂ*FÛàyn‹$@ ¾R™=¨. ²7¿ƒÑ6ûe³„H꩎,êÅÇ‹i8´Øÿ)š¿ í~öÝ endstream endobj 193 0 obj << /Type /Page /Parent 285 0 R /Resources 194 0 R /Contents 195 0 R /MediaBox [ 0 0 595 842 ] /CropBox [ 0 0 595 842 ] /Rotate 0 >> endobj 194 0 obj << /ProcSet [ /PDF /Text ] /Font << /TT4 475 0 R /TT6 268 0 R /TT8 269 0 R /TT10 270 0 R >> /ExtGState << /GS1 478 0 R >> >> endobj 195 0 obj << /Length 1103 /Filter /FlateDecode >> stream H‰”VKsÛ6¾óWììXA‚ul,×MƲ:/$Ö„%¦4©±(;ý÷]`¢åÚ™éh†öýøvÅUô¡ª PPÝGs9/ ÁŸ?˜¹,J|™IÕC”xæã6úp½Q°=D³D& ªÞEîà„ž£/bñérÏ ™‰e¬RiÄ!žqçÃÞB& ™ÄߪÏÎsIžÑQI 3£åÔ̼³°I æ·}°ÌC œ½Ndf²3Dç>³4 ©©Ü¥&þ¨·Wߣ«*RÐBTÌ¥.¡H3HaæŸ6ºŸa™:ºÎs™Ÿqò4wç7tÞçmdñX>Ïy7Š7õ~Æã„•LKæ©Ì!è,·¹¬õ5>c3¾£ðTKøò-&2‡Æˆr•KÍ·.ÚD=ŒQÜwRi™ho’NŒd­eÎH¦öêÐÞ¢ ä–€ Mй¸\-®6ðkœ™‹Û\®n«õêææjÕÕzÏ0€\|rÐ,Äm¬™«›ÕõŸSú'•ÎešðDÉÄhEÎ+4ZÊTìbŒ®-NM‰>ÀÍõ~ßµwDªÇvè™~d1{.ÞŽç÷á9.1Æ Õ Á9ë˜ÎÔ¡±Lh‚O—$:®]Ö¥øÇ§0€CˆÝ,ƒ5Vi»v¬G ãΠö_Yh{/³YƒmÚq`®$¯ c}TZÓ´j§2 ·“ƒ7.ø4„nÈ­F·âÂá…ÔàElオ§¥µ‚ük²wq”¢³`°ªíƒè_f|¢;“¾<ËaÁu¡ D°–ÝnФê}7GEÛoaê» }Ÿùμ šòeà…7UN‡T¹ê—×ðW†êåÝhפ€zõ€¦}j_ì7³­3›‹ŽÚoÄŒ„mÁjÏUÑb„-ÛŽûà*è d”ÀÖ,ÐÚ@šJ¢©$2 ×A9W"Â_“ÉÌ4c+± øFÌÑ᩵Ï1¦ 7: ÎWA×߱Ψ ,]”ZܰëØ¾ êØ»¯1[j*(6¦Fp8ÒaöRñ7^ÝÛÒêЏ?²Ž…jƒ–N£¤ü(1ÀM§ž¦S oC™Fˆó>œi !òÿX›wG+?A¥¤B.mÝ;x>ÕÝ瀶KØ\<ì׸„(幨û¦> xÿ°=Rg.Ô]÷bmK8–›õÅdù´ÿ4g»ÊÖÍ92Ò)¡ŒwE™òGËoîó`.ŽÔ×ñøH«ÝÒž,¼‹ÌUšO¡;nîÚ@œ0šñØR Ü.ÉÄv7žî5y è“Ã`”ÂZÙ¶õÓ-&·þzj”‰‹ÅuÈŸ7ÊηA˜øØ— Æ4ã¤ÿ¢A™¨v×nû¸úð<?¥áÀ뀖¯zú¬3b ,åZæÑáÍpßðëßÍ sÐ endstream endobj 196 0 obj << /Type /Page /Parent 285 0 R /Resources 199 0 R /Contents 200 0 R /Annots [ 197 0 R 198 0 R ] /MediaBox [ 0 0 595 842 ] /CropBox [ 0 0 595 842 ] /Rotate 0 >> endobj 197 0 obj << /Dest [ 181 0 R /FitB ] /Type /Annot /Subtype /Link /Rect [ 338 657 362 669 ] /C [ 0 0 0 ] /Border [ 0 0 1 ] /H /I >> endobj 198 0 obj << /Dest [ 184 0 R /FitB ] /Type /Annot /Subtype /Link /Rect [ 374 657 398 669 ] /C [ 0 0 0 ] /Border [ 0 0 1 ] /H /I >> endobj 199 0 obj << /ProcSet [ /PDF /Text ] /Font << /F2 271 0 R /TT4 475 0 R /TT6 268 0 R /TT8 269 0 R /TT10 270 0 R >> /ExtGState << /GS1 478 0 R >> >> endobj 200 0 obj << /Length 4413 /Filter /FlateDecode >> stream H‰¼WMsÜ6­½Î¯À‘ÜÒ0 äÞlÅÉ*q*.iœ­-'ZKLÆäDâÈñïØüàíFwƒäèë¶ìÒØht¿~ýðr³új³±J«Í‡U“5Våð/<¸&³5üuYióRm>®ò0ysµúêÛ ­®nWë<Ësøôr…¸èÓê]òõÙééÚfeòCª‹Ì%·éÚ%—øgØ{Uf6ËÓ_6ßáÎ5í †œÎkµv&k*]«Í×`H)5·U˜¬NÔé®Mf“ž~>¤ë fyð&-àïÇ–'/½ºiAË¿þ£çÉQ|àÓ›<+]YÁ aóp²¢£é –¼i¯À›n~]½Ú¬´êÔÊ6™©•-œ Pëð÷Ư><>áò¬ÀqSUYµ˜©Š ŸøæñÚÆ¸Ì>g*øfõâÁïžšã묨yN—ˆ Åž%` ßA2~…ÀOJçêõî—\mW@ƒh,Àñ«JW™á·Ýêbõ2À–‡Lj“å&˜¤'F²1Y%HÎ\xuúöü af’Í¿S°]$*u9x‘¼9ÿñžzjà«‹€›\­ËLç…hÉ+A‹ql9Ó*]ׯ‚½ y¸ñjsÓö·ûáf÷½¿»¡Won†ÝÎß Íãåhk¸¡C,0ªSЮ›t­x~ànÐ÷*ñ§oN–ïoO`czëúæUÛo—CoU»ßï:(ÝŽÐg}?vcΆ1%s½zïåeè¡*!½`åê n!À:y:°/Õ™6fЍÍ6  ×Ãj˜ÔÈ'ur ç¢žaÒpHÁ%dœø˜®CLü=ôáhIKÓáx]ÏŸð€Zغ|ÕöaWŸÒ†»×j„€¿lƒ‹4–)J‡ô„M. áq×e5Xpí^|Øà º·ùûÃtõ.‘d1;Ÿ)5CÈ£t{ü‘l·’Måÿ ¡ý®ízH.Ä-f¼¡ÓÃЮF³` Ê Ò&´Çª-¨d zi õR¯ ¦Î‹X^`ïûÔЦXœŸÓ"ø™Â*è¦Ç{ n þñ©0ÝGÍ+Œ£Z:Cûžõ!×dQ’Ùj™×'`ø“98á úâV„¿j轚£}Tƒàñ>¢~d⯠AÐT,¡¦/g†H¯åB'â®Ih\ÕÌ»b#©™AÕÞßà‘ ðA¥Á ä…Ý®@o3ç´ž-£M2ô†s^£¯:éȵµÑ™†Å±ÊÎÈ‚uˆfò¥r¨R aq×í¨:ø/ý0ªýÀoüƒµ[$ïw‘Ú Ó@x—4ñ!#^ìo¨5.(’ëA]·bœC¤5xåµÒª‘ߢoâ-íþGX‹²ógÜ”ß9B©¡ØûF'XrŠŠjÕÈ[w×õW ¤["Ž:qT¸)®€,ó ÿÐØÐŸ|w€Bi(Á¼#ÌÃRÞq߉é)!ÃéâIÅ¿¾ß¢wû¥¾| jÉ—–AW[f”n‹É¦šh’R-â÷ƒ§ÃTI†6 K¿÷<¼²S™ÁsØœ¼¡C5Éd”W…Rãoy©Wòðû¡“Ç-ÂZk{×v»a Lí€P®åûí§Ëe27Ä ž^6c¨ðë|eŸ®áÑ6 {n¿m‡Fø7`!ìWáI/iTÞ·²Z|¨7=ìCS úm¶LL™4MýjÒ#åzȱ#€:hL^‘ÇëHW[ÎF¸=„ß3“ÈXO‘32Ò t*&ÛÐQfö÷Côkr& X¼Rû­ývÝþƒXò›‚H2Ôqêë8! ·¿áýcâRp¯rõœ ™+Çyƒ¤W%’ÿ¿àûãB³l½4ö°;¾Áj[͉ä;[¯™hÕ0£:9O×( ¼NúQ“üyDþÀsZÇ̦6+é(N›p¥píQW(©û9è~¼LtÞìD±¹ÜΘ©à¢µ§@UÓͰZj튵6‡¤˜kí‚ü¬–׳uX¶¶¼ß©øúë’ý‹r×Ìu‰ºÆE]ã/ßÏ/©8žhþ4ÑO %ÏT ¹‹….<8ã_ñ…LñÝÎÇ ŸÃeË/¥-‡Ú8À·•ÈÛ¦¦hFQÈ­Qúç'FbDS¿Ò ÷’yîÚÏm§Q2˃ÿƒö]”¤œSÿeSêÜß òÊ2ÃõZló·²òš<=ÍCÈlvl–n “E®ÍŒ„µÜ%Býa³Gµßñœ;a ®Ôl©²±^ ¨»¿¦µ5‹[;‘®(²‰€´¶´jò ·ý1åTŒhN7uÜú]òçO´Š׎ȵlXµ úYâ3ÊRØëXh—™®s7'ÇB[çF®@‰Ql;ÛÅvAs-ƒúEâ§ v´€DŠ!=^ƒO¥G»Ig¹I“;J1ð‚jyŽü~ €ûç€Ú€ågÜ…&Ê.QG‰âÑÉ¢°»÷œD„àdɤXZ€Î=z“ëGQpT–ªŸ>¿¡9 õÆw†v~7àEj&Ôölm;ü]¼¡ÈÃVfx!×½GL¿îîx•Ì&S‰óïu+n‰Œªí~¿›¾Ç"óýÈ7‡*¥ÐöGô3;'ŲߖQ–²PmiY[–Qº€¶DÞ¡~/ú2 ³S¿WZxù p˜‹3ÝZÏöÙŠ†µe‰Á’éañ±jáž…Šaä&òm ly/°u ëEªˆn6/¾Ù|buN¶2ŒÂ¶$QþËzµí¶jDQõµ_1DŠÃÆ}Ëí(‘R+¤Ï £‰‚›˜Óþ@ÿ»û:0¶ONZõÉx˜ ³÷Úk­Yª^þcGNÈü\ù;ñÝ™÷Ý…÷ÝŃ‚c ‚Wp•,ƒ~¢«›oM=T­"FʯPÄ@Í•Ìâ…¶JÀdðœ˜å xÕØ[¸àåw …¯x|˜€K™'€³´XD¥kÝËþ Êš#‘yz(ÍWáàðvª_Êé1d™$ËC°žl„dÄ;G¸µ§¡[$öî¿JÏF–£hÄÑn«l¥[I«6rÔ~ N´î‰¡HH•³þ}äEüúÆž'>:Ê]ܹ¶eTäÚ`xòä>Íœ¢é T$yI7ç¸uˆëïI{вò×_ªh‹„ëõAê±V2$¾»©±’|c¥;J.¼]©=­¹vàÇÀçY6•Ö#ÁÑtk׫ÑBUüólE–Ú’þ›I[%%«zŽtÛöÓ%°ÃN“é£þ—äFŽýET „5ËNøÏxâ(y#/‰ÊÍÍÝæ¦,ÿ>v`§ç>–—@£³e˜ ^(ÐáHó,ÿÈPÇE6·ùh¨Ñƒ‰£ÎFGmCG¢©bOæ~mÖý¿ì!ÿYôFŽûúÌyt“ÅŸñÞñªbê½­Ïaî-E†{‡½—ÀÌÌÊ}/£®¼^“\­e éö8tÔJvÚ ¯¹Ö"÷8ÍÅ–øñÖyEÏGE¿ø’ð ÉS%q¾B‡´}æO¡Ë„{dËâc— ÇhhEXÝÞ[¯ÃDIGÊ-ZëUoð>àÐ}ê6ؤHQ'úN;oL+Ùæ=˜¸Š•o apfríÿ=D ïØ@íØ“QªGË™YÎUïØ6©;ÓªD1ïÌ•8¹fè•cQïu:Ó ö T:4 ê$&¾4öxM=^Ó1Ë©Ú çZ¸«‚ÎÀïF¾Åy§T»<Ó"£$¨Ý7;¨IMÅúõRSq¤.æÇÄ´€¤M‰iŒP<S*ÄôÛnçÞÌCE©" M9Íå™E&œaºžÉß+âä¯O澫›Jõ'èh•Γ€rõè"©¬ž$«]%M€å\Bç¸W $ F–69¬“6´À¬œ.°h¼¾!ûÎGjÊGÀå,L2µÔCtj¢>€ÈåŒ×ò{yõ•-Ô£~,|dÝȆrp¸¯>ÈÏàêÓ½K’iïÒKSG¶æ ½ÓZ{Ö:›*iJ:`r…ŽÚJf¹¦Þƒ¦ܲQ’ª2Rè MÜ÷¯Sædš`¶=‡P5ºÀZèsgAëµÓŠo”Fán“Û§Ÿÿ[[ S endstream endobj 201 0 obj << /Type /Page /Parent 285 0 R /Resources 202 0 R /Contents 203 0 R /MediaBox [ 0 0 595 842 ] /CropBox [ 0 0 595 842 ] /Rotate 0 >> endobj 202 0 obj << /ProcSet [ /PDF /Text ] /Font << /F2 271 0 R /TT4 475 0 R /TT6 268 0 R /TT8 269 0 R /TT10 270 0 R >> /ExtGState << /GS1 478 0 R >> >> endobj 203 0 obj << /Length 4167 /Filter /FlateDecode >> stream H‰œWÛrÛÆžÞò)örÑ‘œ¾“E%qÙ‰i/œL" .0(·ÏÑ>pÿã %Çíp†Xì.ö?ß¿o7«ï6›Ì„fs·*ý23üh—~VÀîÇY›ÍÃ* ÅÇÝê»nB³{Z~À§ÛpÓçÕG»~wþÁ;ÍüØ^zaäçöÉ;Ííÿ†}cb?óï·ÍO(¹`ÉpP…9Í¿LÃÂlÖp1f~V”ø…5çƒwšø™íùq禰*“^ÿ•,ns3ò†JžÍC#‹£ê Ö'çq ‚p²,ŠÔ´0EÓìUµýsoóiu±Y…¦5«¬ô“Âd‘ "sJÿÍêîõ…<ð#œOÒÔO+i”âø…o^_a1IîgÿËé@+¯jñâw_[ƒC?*d-Œ1ƒ¼¼Ê‰uý ~‚`|‚€ŸM˜Kóñ·ÀÔ«’³1ÅVi˜ú‰¼u«›Õ[Jãä+iœPIcÎÚRbƧíþ-²Ãs[726ÀVÆM…yì—vè}š§¿ï1­RÈ¿Àοï³åí‡iIOêG³>¿Üx§!8Òþ’6±¦}ðN!Åc»ïÂÎjl‡ÞDvS›ÛyQr¸6r^ʪH„*;1¨Á‹&}iBñÃ$ɦôÏØEaœ$ì"(6ˆZ‰ÕîdsJ6¸êA­BRi#ê'Xêë–gvò«ŽæFWzÚ#Žsô"5Wò>ÜÉ&ùHÖŸT˯ n–:3ÔUB͘P?Ú÷ÃØ¼1ëvׂR Ž*‚ŒO‰É%huªÂ¢äÍ<72j½þ9Fú?{¥{ï!t- û"0A4&-(ÞmYW¡˜V¡í1 ë–+]× þ¾W5TMÎôDô€ú‘í˜ÔåCÐ3Ú¹Pá]«>0¯¨Ë&ª•yÕê_-pØ#¬Å~ú«''·j‚£¦© <ü7È „‚…Š ÿ€=øŠ`±–¹JMîDU¤2ˆëœF¡äµXL$Pc7PdªTJÌš„'øÈÞ£R€+TÇ¡½—º‡Üî‡ÑÈìÀ›ô„=` ¢Ÿ€!‹8u£òy²‡|›ò!„|‰órB0AѵO‹U_sä[û¼ÿ穟`Ð"uFÒ«îÒO¤R¨qHÊ…¨ñÐ å§®N„2Á¬¡—‘jœN^M9/`Q¤`nÈá]G…ÊÕo81HÕ¸•¨:fª.U®¹M¦D£Õ´s¦íŸ«®¥VgáwÕ¥@¤¢1¤³¤) ð^„&\‘–¬¡Â}mž5Edƒ:,ÑèU_brÄ€ Ô¥`c4¡qѤ“B¬“"°mÛ»vËô5Ü}Í·€kš‡@spMDdYˆL&êÛuO.îIØ= ¹gâÔD8U/–‚¬úÖÈ ìîEìΧ-*Ù¶‡HS²·=?gJÉ—!ô;=á„Wvr0s}n—FP¶A“Ò¼œ/ÐÁ²Cž5¯Å*µéò¹ÚJóœˆ)áÔ‹Uô¨(•–‹rÄåmk®Ök—žR ‘ÜKþ”2Š&Í”³ŒOK´|LlzÇ_n4Ü~Âã€,TE]iŸ&(Ž©‘¥öu¨jŒ%oé¥ ~•XžÛ†™X©ê„¸V¢Ç’÷¼Ì$GäFGË:Uéè1/@×ø.¿!BŽã1+ÎÚº9Àˆ›Ù‰‹|ÝßâÇŠOi£S=¢ ¸$r:fŒƒæš †1ÃÆz”,ôBmýîËD¨÷wÔ|Úé¶r,Å´ªüÆï#†ºFaVâ0 bB·Ø?y›O3t ü$Í @'wsTð+Ò‚ýù” ‘l+%ÛÀ=F™†PÓaè£a2Nر¿å4"¾)D©Ô y«Î[Á|e1þP©ŒßD!1 _=¸ó0y¥>dêÀ· Þlîf§/-p…Øuä÷À=.Ñça’dΛa¦T”.+ñ¾ƒºæ³Þ‘WNÐy‹P"äDpWù?»$tM³Ìç;§•VyfeºÚòôØ>+VÆnÍÈ^ f"~r¯ºØË f0dÐDŽ4!½$dÝXÁ—ÄPP*XŸ©Ÿî«¾•âãÝæi±OU!´ÎÜ!{Ý¿WåÔj¡‡¯EÒÕE”f3|‰XÞgî¹SëÀÕyj¹URh™x²æ  ~¡Û¨Æ©$j¦—NµãjÂj¹=Œ˺Ӕn–EÙkò×¥Œ¢äŠyTKZ»bÉåRaˆºŽMà4³T’ð\˜Ã^´²{—œL¢YN›’å•Äz"áfθI§M”V¯(ö³W`òÞG>¬ç7D04^¼“« ò@leHlà$W·È[tô·lÑ eiÛÝAäL™¦þI"WÍ)6)‚YGùTÀØ ,Ó5«âÜalæËgÇÜè-¦K¾]ÞW-X»ffv‚$3÷JÈÏxOËÙá¡’Ù‚—•0r& +Ü ^úýÀZ 7Ø@`¬ÈŠ2šÐ³dÛ¢X;qíS"êS0ë·üÀ^EfàVÉ‘¸œcïHŸ DABßä˜Ê ¬tö²¬§ò¶‰£"ì’úd|ê´»Ñ%òÜè¨v÷J={i]7Ì÷Böі˳sTÝN­iÇ{.ËØŠè7ê¸?¤ëwW—ë0 NÌå:¥’FÒ17?ž…xAŠËÔÏç¤ÜŸN7¤HnHç^LÞÔªÑCÄ—ž˜kZ€´DP|ž½]Nï1ûb˾«¶Íä!¡çšö´|mÈ Yw ÷Ú4wÔ´ý¦Y\~±¸‘I]Ei"6λøY‡Â?(ØÏ‘s¹íãѷ㨞PéÐl»îG[/]ÃÄ;9‚ú£þëRÓÁ¹#˜®šÿVÙ„àrãrG‚L<â®|û®Ñ¡Úâ‹­òàV8ã;Œ°¢7µar‘0ΙS½"Êš»  7æŽsíC“Y*|bDrHi_¼è¶:P#†ZÚê\>‘L::æEÙë¸Ü\/}¥MW™*7u;Ú]µÚJ-¬š;ì+4àèn ¯4å+ikª©µúåÝzv¦ ä¸ÂÌ)7ˆå!¢Ñ§íbí mRíZ½½š0N7ÑzÖ ëP|¿ôÉ1Qþ#ìų°ÄMy´nyä%zÙ„Œ~>¨O“,Õ[Ø™/—ݸ Šîó\R€ _áwJ”Z0,Ç{JÃ@LCáq~#úàTuÝ[dSN ‰Cö£ººçjè¹2;¤ˆš‘’Š5¿t ôA['eÑ7W•ðRé^’ÀM¨ç¸`U©·u{eçª\ùuc7;ëZU>´ ]ö@a~qÑ!R 0†0MÂXi‹O—R¦(¢Q«™ßeèîFDá‘wš! ˆïà‰³«$ù$ûÖ’VÆ"CÂÌ#¥ú½s¶àǹÀ±aÿÇŽqò*œÚç¶?(­½‹eÖæÛ–¸Ð¾mÑ8¯Š²)çâ‹S7pÔËE¦øùBcG¯Va¦ÿå‹:^Ò]o\M(7úé'(]QGýŸ‚†réZ&ôÛË¢±Iê‰iÅŠøË›MMñ—åÌsfu¬íôÅËøHÍDM5DònVAÔºöÂ<-ÄÃýB]úFÆÝǯ-–6›2¡HØé˜jË®Â1±g–2{<<…@HAË´Q+Þ0ìéšL‹BÔQV³ÄZœØ¾³/4ÕÉv™Ý"Õ|+| ^ å‘$\¦ïÏ@ L©Ûœò«…YGѺ´Ýº%¢¨)#W™.Ã&e9£ )œrW;UJÄ }Ì×’Âw?ëY~˜ÐÅ©äãÝurG/+ù€§‰JâÕŽ„š¤·ëÓø¨{HiTš;³]ÍjÛªÔ.ƒlÜšƒ$(LØ<Ê}þnƒ}IU`ûß 7'•©ÙÂèåº-Úô÷-&vX÷.öÆ'e[Í œô[œ'øv$v>§Ã^+¸>å eïòÄB¼p®d½®ˆ…Ö¢(¸8Žæj-šÖí@Ä8ÁɈ¾ùA}®ó-ck¼¤ë™å Ø#:„ÝO{­YjÛ+¼ž ÃJKµ„±³8+f•ÒS¨mŽëv8NǨ‚OýsO9€ èÇΘ*WžºµÊzƒd0ª6,îp–4R%²Ý ËÖ“}­ZÐÆn™û’/¡™„¿f‚Ž(4â/6{>=ÙÇC ›'~=-¼”ô³I¤ vŒM¬1NË?q’Yĉ¶Y»ß¯2½@ÏÖ<5‹éeÿ¢ ênÉ_öƒ3§Ž/"cÿ‚‘¯Aü*¦UJM•ÿ,S9K4Î2µœGYf‡SíÈ2ÕÄ2KL‘ûÜÍ ¥›|7Q ‹É*§üe}‘.räºj^s ºT=DžÝK*™35˜6"’U"ö"nXì¢ lðTâLRLL‚!‘Ü~²~;‹é{ 4Ш 4¤B¯k`I÷‡aaìi 'ü£‡A«HìRw LK’—nø2àL–ë‘6u.§» §Ü¦’Û#n:4Ÿ-û·züçÛ›EFb··çóWâæÞ[:06£äxgÖ¯ÉÝÔ[täžC/ÛÎ1)ž#xSQvTÛjófxZ ±R ­ûÞHì¿©U[·ª9cÕÖ¬jhÕÖ­jh•5Ã"D¦1]ùÆÎËÝÌꌙ¹™YÑÌÜÍt¼ÖGÏ™A±j`¼m3ÔâëÃÈøÒÒ?w„إžÈ}ÿÜïOR‡9Ãq”êœôìÅ5ƒø„ª,55žÁŠÞ9×à{ëyßÅ ZVxDÿ&oõçÄýq…8ek> endobj 205 0 obj << /Dest [ 196 0 R /FitB ] /Type /Annot /Subtype /Link /Rect [ 232 455 256 467 ] /C [ 0 0 0 ] /Border [ 0 0 1 ] /H /I >> endobj 206 0 obj << /ProcSet [ /PDF /Text ] /Font << /TT4 475 0 R /TT6 268 0 R /TT8 269 0 R /TT10 270 0 R >> /ExtGState << /GS1 478 0 R >> >> endobj 207 0 obj << /Length 2673 /Filter /FlateDecode >> stream H‰¤WÙrÛÈ}çWôc#%b°/²¤LËó0?XÉ“Ç'μ¾Â×deXüÈé@+¯jqòÜ_­‰Áq˜T²§˜Aœ^åĺù¿@0þ€€ŸM™kóñ÷Ȭ%$ fcŠ?.ò83ùµ[Ü.ÞPg§ÒòÓ¸€K%9¶¹Ä|JY» –q&vÀza;HÚ*Ì­q_ƒDXÈÜ’ ´†$”ÅÒ­²›¾qû'ÌÒʶ林†^7²ô,!ƒkëÆm[󦑉–/6p, c{s{®ÃËnÓ¹f§?o»Ãeú½Lx-»_kúµîvÃç ‚uUDÖëÎuCßì¨0"ˆPgY1•ƒx,-3vÙ§ö‰k³ RøÏ÷¦V¼®ß¨;ÜáEV÷úC4K;Àø¹kéz´kõÎíYèR»gÿe¶í]hÌ[g:– âÈ}±¥½õÄt’$oG²U_Ö즰ÊÏÉÅ(²ú›à]Í~Hj¼¡7MOV'Ök\B¨EçuFá8·ö»µ¹ó¡Ù‰¸üDV¦üq½ÏT©˜Y·ÕY´æÍ Þ²ˆêÀ‡OôN£Tâ÷-ˆ ÐèC£sžP¿Äv_1/jk0i0×Ìo–—þŽZAÖƒ«º?(ÁĶ¿¼öMï—"½Š<šß—z"%Ç.)Éœbò¸ø{™VPQBy˜SJX†xU¾m½ËB‡U„hHQÕÉ«Ðþñ ª ©8 œN˜f‡Î‡:Áä¢,/µšaß=uwã f{YÄJ¸yûþêú2."ÓèŒÚõùÞ r®s[6 `÷_}á½ã®“ :g>ܘwsPÝWýºƒ^wº\ãÜ7æŠMlÈY9ßìž°!V 2û@É…D²jd‘²š®k¾ðD¨ñŒ–€æÂ‡‰CQ€AJ&ôȪH¢_‡I˜š_ƒ Ó(À@Y­¡vAÃÏÑ×8ßCß…¾íŽrì_)ò>s ÏÄ Y]Ï‘>¶[Â…Zý œ)çã’cœYÙƒq¹çÙFÁ+P€²Í\È0] *a/HÝ5È ÐÈ9™‚\TÖæ[ÖÒD6¡z†W¥õ×5:qŒ)8<5¯ÎyQí¥ªŽªšÙÙt,Õ:Ê£RŠ´¯5¤©}âtß$˜ßhD†ÙžÁÑ™Ù÷»{È]¦€‚qQ¿€íÞIQHn£ß8z…vRiÜÚæ|Ü|«•†é8É:ß7e—Æ-׸åSܤÇxFéÃ;ž¾5}»\DZã~«ÌBÄ{ôn¦N~„áu˜Vy~Ó²–Þ3*n›®fà&_'Øèéö£aQW‚[5EËŠ$9/±JDáÚû£¶ÐÙÞŠgÑŠª,}­T’¤Êëù£sM"SêÛÈãGIÿÔ3(ð؆3»°ìN?Ø­:?ÓŠ8‰X*´à´oYµ¼y½†7‚F”câœ`!_´Çè';AsÓ~ô'+Iõö®;ô˜ú—épf/nÞÉ3QÿÎÁXé# ãäÀG>”®S[Ä[¯2K¡HiZUì0$XÈ^9u¬4œc+À:Rñ9ÍÌù—§HŠÈ kÀôGÙŒö„c¾Õ¢O¦[e÷ûƒ‹äZ£öêó@[Ç8øÎs1ôýü‰ o¨Te|}úLʾõ﫾ٴú£ía>mç/©îŽßW´ µûÙ+ õ[áO»mi_‡V ãÄ”uXT&K“²tx\ÌcžIÄ¡bC¨–î"žU‘½uAŽ_6òº Ù4é10󂥓Õq¡fGõ<¥R KÉN‹ÈûÏØÃ ´)‚4¼6Ê,%~NI|œ•ÄÇy§O¦«Õâ¿¢" endstream endobj 208 0 obj << /Type /Page /Parent 285 0 R /Resources 209 0 R /Contents 210 0 R /MediaBox [ 0 0 595 842 ] /CropBox [ 0 0 595 842 ] /Rotate 0 >> endobj 209 0 obj << /ProcSet [ /PDF /Text ] /Font << /TT4 475 0 R /TT6 268 0 R /TT8 269 0 R /TT10 270 0 R >> /ExtGState << /GS1 478 0 R >> >> endobj 210 0 obj << /Length 4749 /Filter /FlateDecode >> stream H‰¤—QsÛ8Çßý)ô(ÝÔªHQ¢tom’ë¤si2Mö©»N¢&î:¶/QÚë}úP’mÀ·{;™‰eÿ  ~¡÷7³·77ub’›¯³6o뤀¿ðàÛ¼nà¿Ï˺(“›§YÄç‡ÙÛ×&yx™Í‹¼(Àôn†8èÇìKzz~r™Íë¼L/2csŸ¾dsŸÞá¿Í¶Kʼ΋췛¸rC+ÃDÞM2÷.o+Ó$7§0Q’$Ó¹¬Ë›49Ùds—×éš>¾fó Tþñ9³ðÿiÁâ]—\÷4`ÁŸÝSÇb}àè]‘—¾¬ BX¯ÿŒ|Šê…hwLã€MnÖL‰í «Öçðð’ñ F€?S$ɗߊä~æ¤Ñ‚ãO³ÊT¹ão«Ùõì}À†‡L—.LIOL²syIF\ۘݒÁûlnbrþ)«r“þ#ÓË̤ŸÃ÷ ÐaÍô]f dßýü’F'—ïÃçdz“ðIjr­®þ~8‹ßÏ>ñ°ÆÙ{sfóü€™™Rw䌟7EFàÆ3é`Lí–„Aéclº„#Ù ÇüÙÑÏwô ŽŠÉ]ºÜ¬£¾íXZÂyƒÄØÅ)úÇ.{½óõQÝD>Ê/’óuüyC+?ã!wéS6‡S^ÁiÅÅyø- ù†36²«Éi78–• ¯—8Ct÷;ý5¥5ÎÉ„'?…aÖ_3ièk ãž¾÷úd/»m|ˆãÖTL  :7ÎÕj ù’âv-9üŠÂ/iâŠÃ¯9üÍm¹MióÁúL¶<~sÿÊxzû3³yë—qà2θ]uñœ ó瑬ãǦ®ë]¸ð‘BrU<7¹ ²mÓx^üÌJLâËÝbxóµ¿Ûlù·äê¹{‰@q^ô]r~yú ¯]“;7…œý0¥3#䌸cÄKF¼$nqS7u@ü¾ã,…½é6þÿ€¸ÔQ\„½nÒ]Ë-AA‡×q!û ah¦¸ÈÁžÐz§Ñ‡Y;DÆ“=&‹8I²ë{SD bÏ r}ó7Ü6·IØ6†Äø’$y×÷Ö¼öÝth½é“Éd0x´\‡½¼na“úÅíj˜.œ¯Ñ<|Å9ƒ]vBÜ P9}‹ívµä3Cû½Xß³Û¬»|Xoâ—{Œöí±['ñ·Åýrý,8}§Ïî§ïðèæ{Ý” ¸šÖ¥‚jvè3>múîïØeŒGÂæeSM›¯/Srè¶Ò_Ö«åï°ïn"|ÿÞOmhÂÀ!ªŠ¡N lòO¾1µ–¾aªð3n›^°é}`7‡ø×MV¤q‚€½Mqœ‹"e/:x|“ÐÏð¼ä©ù·nwhr»àÉ!¢'.ÁÃ6ÿÉL'™Z ^ ƒ7ã¼IÏËÅ*$eÎ{‹µ»ª'µÛq©šrç¤4ãIiÆÌóæùI½ð´¦çzá©^prT/ªi½ð´q>Žàzác½ð œÛîºßÄ¥ø:véëv×Ï7“cÄÊÀ þá¼a(Ÿ§Ã{m ¯0Lß‘Lá•ìÒõb•ôãÖCa¡ž¤†ó3>d+þð†ã¶!î0»xÐêpÐÂÄ‘nþ¾Xc¹í’¸rn±~ÀÙõ ^Ç! f·¦¸!rÏמ¡°XKVàïf"ì+?^¾–n^Ë×]å -qc·ŠŒ_³üxëâ½Ûtç`»wndGºs¹ S†¥›loã«_Xóü â©€'|ƒ"ƒ§'ÁkB÷ñKV„{± |ãÿì°B‹i¬GÄ?‡!]¿RûE_žC;LÏk²º _ºà#¼rù Ý× |‹€×yøOï4Ç4èÖkàCk§¢© Ó,Ql¢©©íž\¯Pe[Ö fgÕ^¼ZÕ²‡ã¢´½;*&Æ6ŠéQqÜ£Ò²h ξ¿’<‰U”Ç€$yâ—$ÓÜ‘þ¯*ÊÆÉåþ%½®±Ÿ»ÒWã7¸k¼¡Ó* ¤a&|kp1$ªÈȶ‘Ruhdk¦†DÅ–¸á…Up”y?lØý˜ ·±¨ÉjôYT§D¸Ø¥ÁTðrç©5C} 8 o%–/ë“ÕríÜ«p×4t{@®þäúïŽïÔ0 ˜ñ%øRA ›ƒËXÍ>u¡„{~h‡7½ŸÂäU-"PURu@dk„DÅ–á…U@dã1â¢Q‘ÕID’:ú,¨§õ*Îã— ‡ËuÿzÿÊFkñEíµ¸Ý:ÞÿˆhÛv êÄ)AU¨ s´é|¿ì©y€fb› °÷Üâ a™‰ µ-«¡(øÈƒ)ö€ðnª„®"¤ê@ÈÖ ‰*Š-Á «@ÈÆcÄjõ—ÅI­+ò©åìÒš”K¡Bâ–Eýãé¡ 7å"HË)0jžéÉ0ï¸CˆÜ\¼5C:S]w‰˜²„bøÑªP V CøÁ¶â¼ô— ði]‘O-g—Ö¤\ @3öy­€ó‡åK>,êÓq÷ðeÏç@Û<»¿?Ø#sÃDÐÅ©Ê ŸÉ &^=’¦,¡X~´Ê@ ”ˆèÄP~°­8.]Ã¥ |ZWäSËÙ¥5)—BtTsqUô¢ƒ»*öîk󖮇±Õ»aw”Ká/~1Ò>/²ai-‡VeÒÇŒËûb{&N÷˜²L„b™øÑ*P& Vd¢C™øÁuÅP#ZÖÕá %‘ÖE'ZÍÕGd9¢T<ÚùPÆ×ö¢äƒÚƽÇdèO‹§éRéÂÊû±Rxa¨î ²”]'EU÷C—•ØFºZŒG—„ºÊÉ¡PÃHå–+âÏöÍáÓîëþI+Û¼þƒÏƒnÙü—µÎj;7l¯P®®P\^?Zë+ÄJ…ubXb?xYq„  «ytÉÙ¡«¤ kÜ÷´3«6 ŒÕçAÏÿƒœñ¡}âBh‹ÍÇöðP´Úæ]yW„ö•¨bL©[~¨¢ÏDA#ì ¯P…P, ?ZE!ŠÄŠ(tb( ?xYq‚½! «ytÉÙ¡«¤ EA1_=üMQD[=ûUt@ÜêÅ0…Ì÷Ò4ŠFrÞ’޾ªB¦3…ô©ä‚)+D(Vˆ­ bE!:1Tˆ¼¬8öÐÕŠ<ºäìÐUR… ¡I'mc¨ ɪr(äö¶y~vpÛÚgicKá4öެaìΔ°£|²²!qæÞ.z3t‡µ.ðÊ{tÖÍ/ ï½;¬BX©‹¤‹ËâkÐ÷*$ýòömèòmY,n¢R~O1d߉•Ì?â$’Fq’X¢ÙŒ]ûò‘[ëZ®ãÇÝ×¹¡cøéc9sù7:sçc=gïèsn¨mûNøb>~|Ü?08gQF£&nèþ/9•ÿIZa,ÍßÊášVúšŸðÔóég´ïÍíŽn*C»—_('ùÞl(jd»ó7NMÿÀr²]:=u4¥!Þlã²S±´*%¹´•œžm_>OO*t»ÿðýiÞðë£ùmW>¿Ít¥ž*ßrÿ) ŸéN¢‚í÷7S{ೊ3¤ë®éðz·á^çwúžIj£~Ã|Ë]©µ=|û&óÒÂOα0Fø,¬8WØD÷ò‰ý†î¦Ï 0 }#Žw2ñŠÆ”ùÿ~(ÚPÚžÙ$Åô ”fM6+©’þpMù‚VZžLy NN,q™¨åèl1aì¹-?qg¾AK½Æ–²¬_Mãåæ{xµÁ.^6ÑÅËFyxÙ .kò¨GùŠÏú®ú ¼ Èà{2õOGy »äjìê6GòÏû–½ZŠê~æÞoøÅØ ‘îûnâûþ–ü²mc7Ñ´¹ ìÏŽŸÏûùScGí`5úü¡ã±µ¿’o†îõ©BÃì-n÷ynþ¦g Í;뜻”Š&^¬(yÑ53 …nôƒÍŽB¡A°R(t$VKÖ`ד~¬™R(t%Øj©CO͡ӒèVûÔöPÝ,@u7|ªËõ¡.LJ}´:-´ºsÏ/Ù.¤£5¯^Еò@o&ñU2_ÅÅW¹ú*·¯ùÚ -5áaËV5V:5V³$3VVc%vòâ¬úÕ [km¬¼6ÖPŒui+:¼á"[ù¡f+¡ÐV~°ÙJ(´V[ …¶Áj«ìÚÊ5[ …¶[­ux­ÈV>­{éSÛ,ŸÚn¸Ô–ëB[Ž ‘­mÊúu&öÕÙµEÝè¯û"gjIäôñ¥yA=sqSTŸEóYZ|–ªÏRK¾¤ÖOi— ,žú,¶:•ú,©ÏøÆìZûþ¿ý,—×´òXZ{¬×ËkºpYîy›€Ë"—ù¡æ2¡Ðe~°¹L(tV— ….Áê²ìºÌ5— ….[mu€sв‹Ð\ª;€låšüŠÄ7Žb¨KÝÍÿ†ÄϤ3Ódß4ÏÅ4wÿ#ÓÐîÛ©0d7ÐS 4Œj~)ÚÅU·Í⇪W,ÔµŠiN)ÅßÞºõëwJ>1ò€ @©šÀ+es&5êlUz­¬ÎÐFý¡­êB¯•ÝZ)ZU!ôš,¼¡•‚¡U5uh$gd…þÀ&*¡×T匬Ðù*üo™ ãp endstream endobj 211 0 obj << /Type /Page /Parent 285 0 R /Resources 212 0 R /Contents 213 0 R /MediaBox [ 0 0 595 842 ] /CropBox [ 0 0 595 842 ] /Rotate 0 >> endobj 212 0 obj << /ProcSet [ /PDF /Text ] /Font << /TT4 475 0 R /TT6 268 0 R /TT8 269 0 R /TT10 270 0 R >> /ExtGState << /GS1 478 0 R >> >> endobj 213 0 obj << /Length 5899 /Filter /FlateDecode >> stream H‰Ô—ÏnÜH‡ïýu[i‘VT¥Ò?ì)cYÖ^#îÌ2sèØŠÓÝm8íyŒÝ'^²HJ²›l`o³0à–ôKU,~$ë—ÕâõjÕ8ïVŸ}Ñ7®„¿tÑöEÓÁÿ¶¨š²r«ûE™ÄÇÛÅëwWÞÝ~[,Ë¢,ÁôzøÒÅÇìôìäŸù²)ªì<÷¡h³où²Í®ñßîapUÑeþÇêWürG_†Z_vnÙÆ¢¯}çV§0sn>VˆE—¹“]¾ŒE“méçs¾¬Aå‡y€ÿ÷k¯wµ§Öü;Ü,îe¼úXU[Õ°BøxZY²4_ãÒ²Ëõíàb™¯¾.Þ®Þmܢ鋨¹&8XApËôÿqX|¶…¶,>u]ÔÏ”:Ôx­ØØ }&¶Eó¿HiI1g¡ÚÓxÁ¾k¾Âz¶]¥Àzÿ.~…Íø o@þp¾tçî㥻Y´4&~¿¨}]D¾»[\-~YÍ‚Éû¢ŒiDºâ@®a~‘™â¶—ÝmZ \_kmæù7ȯ˗ vÙ;ºrÁgÛáq}GO8Îúìéæ§;§ËÝÍӼϡ ²I‹Ü0i}Î/Mµªi‚oòª+B¶ß?æM³Í§§ýGüüÅ:ýÞÃÌBÕt0ÕL9À,H¸…˜‡±ÁXžÿÌ}¯=àR:\‘¯Ê®¨³ßò–öî14:¾?G½n³Ìg»û{úî– Ú:­¤ŽÉ÷ ËôŸÂí¨K‰"ö±sÑC¤6Ñ2õ­/|µ© SÍåPE¼6ŒQfUÁZŸËðåÎür€/Wã—C‹¯Îå¾/¼¹bT§EqÿlÚU@¼ Û*t R}×0…¢×²¤e|T”MªŠºaøé^n„.®6dq¦!‹»tY¢«²(]¥Ì`Wù;Ê Ý˜õ=awµªsp|•¹³-V3àx‡àËÖÛkº܇³Ó|Ùǯýž!ø>ŠËWPOÏóe{àËç˪ì ñà ÑEp> U‰ãÀ¼µ{Ø 7î3Ri´Ý=ˆHæøÁc’·èN¤q^7n#vX¾vŸ¾ÂTàõ,ä9ÂÑ£[ JI´(ÕM…RRMJuc¡”T“RØ)%Õ¤Ô0fJGc•RÝV(%Õ¤Ôpõ¸aŠçxàéCqæIEœ<¥ˆ“'Åi¥‡Ú´C ÐS ÀV§bˆ’çÀA¨Ÿ®¡ÆAñòÈ q€«²{…p!WæƒUe§ÈPÕ’jØ„WÈNæ`‚%Xƒ¥LÞÁkyLPõ3¨ª9T CÕ@úÂd*iRª¡•D(ÕTxJ¢‰“nÊ4%Ñ„I7e–ÄTEIµ’’h‚¤»wt}eƒ¤«3jêä%M¡¨ÓZqZ"Z8A×ÊNéÐ2cÈg{¾ÚµM±’QàFìùb„®½g¬*Áªš°Š#V1“QR/Øa‡+\UϹªˆ—J¸ŠÌU%³¼Æ·""]ó‚çlµ‰­ÃrSꃅ‰[º©ÀEªI—n,x‘jòe3`¤š„ÆŒØh¬2¦Û d¤š”®÷!F3]ùRS'giêä E–«ˆÓrÑÀ¬ÁÊf§3*ZT¯Þãi¨Ã°îWxóø¸É±€mÓÝmŠÚÒaÏйÕét²»{8Öå ¶R}&ö‹›kþ]oÿ‚çÊ(‚»~±©ÃF´IT#“tÖ„|çÝ‹¯…±ÐVô±à÷:ø—9ö´XNØÎ?öesä,I¢…½n*Ø“jb¯ ö¤šØÆŒ=©&ö†1c?«Øë¶‚=©&ö†«yêéØBñÒÕª:úRWÅYº*ÞPUY®*ÊrTѾ­`ñ„ý󚊇½ºäšEé´çuŠ®Eÿ3QÔt¡hƒ" Š S¦ˆU‹"Ø)bÕ¢È2&ŠXµ(²Œ‰¢ÉX£È°eŠXµ(²\=îCè¬âi¨3_jêä,M¼¡¨ÓrqZŽ"Z5Pô&…"…+Åð7¼Nÿ¨CÝmÝÅ“„ñ§BÜûü÷²^Õÿ?¤ávX'@-ÒtS!T“4ÝXH#Õ$Í0fÒH5I3Œ™´ÑX%M·ÒH5I3\=îÃaÏÇZÝ[VšB[Ê‘}3bmDÙQŽm§ÙFkcÊFƒtl—Íæ[“÷¤c›o¶ìê˜4¦VŸ¯(ÁÒ±H±NÚ¶yïõj1éV°>õKðGWœ+ %ÊÔŒÝxK͸/‹|Ùf>ýéå0½Áùár½Çìã!AÂãaËwîŠ/ /qçx²ÝÍÓ]z)e ˜V¤i©‰9øñTC“ªxR=GV0.û‚0fÌÑ]î|t÷°ßì¶ë;¾¥lئ ül´ØîöޝŸv)—6Ù~¸)œûtRœh¾ [wMï°>¬÷›í­»”[Ö¿ÆOÃò×{N½=%^P÷üÖ+·Ù»iÃ÷‡qÓ0…q.›6Ç×äšdL“LãÔ0»›iv5Ï.¨³ë ™_àù…ùüBæ6·Û ¥…jœòG/dg\ÝÕE(g{ëdzfSÍ"kšçßÀ¿QâîÄþo‡Çõ=pWœoIû†‘M5G½Ï3ô¥|uÓ–4Áäóç—¦Z±ÓßäUòØþ1Ǿùô´rŒ1w±N¿÷Öö¦ƒ©b¤p3 ·ùŠÆòügîxíC9u¾*1ê~Ë[Ô÷Ø-Ô"ùþõºÍNòé÷÷ôÝ틺^ÃR¬Zch©nfTÝˉVÐM¹ hÕÔ’=‰Vº7L)§¦ZV×-9w“heoÝô˜6m ¬hLûÝ¡ó5yæ`Užœ¨Ê“£4yr†¦NkÒTª=G’|]·#gÏ“| SJœïnÖw›ýOÌq~:Ò6Òh7S£Ýb;m„cYA·-äHŸÝdo·OR $éB*¼qß×wOƒû÷åûÿ¼À¨i‘ ƒ-XtS¡…TÝXx!ÕÆ0fbH5‘1Œ™™ÑX…F·jH5±1\ÍûФқVC}©«â,]o¨ª,We9ªhDë{ç5±Q„ÂlHGјÊ.ìBæÎ¶|—yÇ@¼§Z·ú+t8Ž’}8;ÍW_a µï¼{Ñ[Pþ˜ClÈ+ß"c} FŒl Œ„ XŒP„ü f€¹º±˜!ÑbF7fH5™Ñ…RMf cf†T“Ø™Uft[a†T“ÃÕã>”RlB(]­¨3_jêä,M¼¡¨ÓrqZŽ"ZÌÀõüà⻑ÿŒŸ˜©™™š4®!û„o„®jA¦Úâ%î½kKÈ×–aÜÃKX]úÒ+á_…"˜í‰Vøë¦þ¤šá¯Kø“j†¿aÌáOªþ†1‡ÿh¬†¿n+áOªþ†«yüØjV U=©Šâ)UOh¢¬TÓd!šfÅ=€šîh­ø45\-¤}Š-F>…xŸµOpÆ‚ºê/O¤wŠcï² ¸Â³îwÚqá“ßߦcbÀc⼟II_``¹%I³ Q …‘$šˆ¨¦BHM@tSæ#‰&º)Ó!¦*ª¥°‘D ݽäzÑÂE<{ËÒi×H´¶Mÿ¨¨úÀ²«¤šÛª-ª>´ì:©æ¶C³j ÍQAªÆÐ¬CsÔŒC«a£Ì¢>°©fTé#³¨|T¤3bGgD°Œ)ÛÑ¥»ØAz–îIwà‰”î !b–dÅ¿k‡Ù òÞåãð Òöµu¶ÎÿK}Ùí¶‘QøUær¬„éùçMÃv¶×kÙ¹Ém .dÒ–¨EòÙ'NuWUÏ:‡v {c‹<<5ÓÕõUWWÒ‘ìÃV¹ß2,؇é®x¥êþúþƾKíK^6TüFÛñµô]Ó…6M$é­›Nßõɪ‰óÄáp»Ša·îÓ*ÞG‹×›ôÿ—)vÜ~”·~'o_KƒUáóꢕqGÌþý¿V¡—Ÿ}]]Ä5Š/41ÍåßWƒÌ%o­‡öùUÔ»¡|ºªåÓþË}®då¨1K®ç!ì´015I VCÜT†81Ħ2ˆ™Y15•aÊÌ âlF ¯±f*c˜ÏжI±gHÇ“}Àª'š¨–I¢Zª°j¹À¢-‹ÚÚ3¼ucæ-QV7yê•·WûkÆÐÉü¢#P/#P5@ƒ]oe?’‹¦¼ÊùÔ—ÏwvwJƒúR†­ëâ—ÍÍýTüûÍÛ_Opꇸ½„1ØêĨJ‰Áf'FUJ 11ªRbˆÙˆÉfH ö:1ªRbHªó>Ô탣ËĸÉl\b¢î Šgv<ÔUØ÷WÕsû B»ŠCûî«zn÷QhSIh« UÏÕ m* m•“C³Ê‘MĽ¬T=WV ²‰8òYñ1CÜlÇec Czº£¡§³¡§³¡§+{zþªŸ'wB¹›n77úEñüÛýVÿüúŦ¢¾Ô‘gÈ#O÷È‘' ²ïð‘GŠ„Ò5…?iŒ}ht¸“HÙ†V‡7‰”]l58“HÙÄVƒÏ­=ètº’Há‚ÖsšoKt9rˆœLdO"‘=QXöd`ÕׄÕï:U—9ÓQ'O:M:›Ýý§Xð—M¹ù¸ºËÃ}šPšÈIìò©éëŽAAÃ<ÉåɆ ¶|©¶EêRXƒšòéþëV¦ž=g¯£Q[ÇöŸÍï‘Ä]zK ³ußæóTì?ü,_ÇùJqª qREF$¶:’ªR&±Ù¡T•RĬ¥ª”Kb60³’‰½Ž¦ª”M’jÛ‡ö²ëœŠ&JÏ=sQwPEºƒð¡®âÀ¾¿ªòý…¡]Å¡}÷Uå»C›JB[m¨Êk‡6•„¶ÊÉ¡qåÀÈ&âÀ^Vªò²‚‘Mđϊ˜§šQúÎbJ‘¯–CÔhCÔhCÔX>D½¹îlFŠS‰RããF©¦oe_þØ£T3´üÆÄD¾‰„|b5¶Mel³Ñk*£—™•OSŸÌ¬ÎfD ñd¦2Ȉù¬8oÒòº3>Ü$/R å9™PžÓ…ä9!H…ÔïNVMWgìNîZA©{±»[] Rí‚w(7ql‰Ÿ¦âõ½.¡ü0ÉPÆ1Þ¤Òp%£U]ý§³›aÝc¯×½ª´îIª}hÑiÎ"-w$å °BJ~ùG—¸dc—%Þ¦_V÷`ÕÝæêNeYIøËж}ñîYb¢KÖ”ÏÒà3ÉTÔ”wo·+™£âçÃ*6wûjŸ¾ÒhëË.Œ¡˜#â“ÆÅ(,ŽŽ:/WqýQ”.4¯º‘3ä½QñêËâzú¶r»›®‹ÃôO?¿Ž“a’ž3Ic¸A£Ó–D ´:kI¤¨a«‘–D ¶gn…˜A§S–D NoN}𬖶ø ¿@]¤©s–:'¨óZ8¯ˆ ¼J|õûÁSLǤê5ÀÓÛxÑêËIO£g›Ãt³ºÎ˜u ÎäHrÒêLZŸ¬^H¿ˆ¥'v` ›ã‹}bL>ÛÝö°ÝÜãzêòV£ÛÛùÃvûCq³¹ÓŸ(ŠA¢¶ÃƒÏïÛèûê˜ÙÊr«Ï²Wñßø@½–†2>,®£—ïýÝ䯯·úUJö|‚§Oq ÉÓ7wy±†ÞÔTd½[½9¨J»6{{P•öb¶¡*íÄl-"›aÀ^oªÒ.ARmûÐÆ×em«9—XõdaÕ³U_.}9P$m¢eþ®S›x÷'k}nëesX;~ï¤ÆfP’ʳÝ"w›Ð/»Å|.ÏWº!w‹¡ŒÏËW;Ùê:7‹Þy¾q§‡¸Õ™Òþ¤ƒ4ÚAúãÒ/;HóÞAêu}Yµ¤ƒ˜H:±Z1•ub¶b*ë ̬ÄTÖA˜Y;ÈlF„x­ƒ˜Ê:KµíƒW=ë D͹Ī' «ž ¨úr¡èË"ë ÝZÿ¿ë {ûó×4_ ¨¯7ßo!ß™ë[8׿YÕÿu6úêò÷Möu/½‰ö&2ú°ÕéS•Ò‡ÍNŸª”>b6úT¥ô³Ñ—Í>ìuúT¥ô‘Tç}¨GJV¹Dêœ,¤ÎÙê¼\ ÎË"£Oörèô…u®üZKÿ­Ö«ˆÓªÒsMþÜ}Œu+„]W“}Ï£6¢Šo6ÅkÔ«éÛ} 2¦ÀgP£ËÏð Vã!„.3Xç3¼.¯„Á®ü)2Xµét?ƪíb^V*2¬°Õ±R•b…ÍŽ•ª+b6¬T¥X³a•Í+ìu¬T¥X‘Tû>P¦€4g‘Ò„¤œÆPòË?š PË—çW>;  ?'@†r«‡ØP/vö— _u¹Q Ãàœ*#S¾ñlõîg6ó.!i’:TÕóÉ:T‘8ʃä¼é{ùKù"N¶m+çÖ))²pvTqŽI)%Ðê$‘2‚­†H)!Øj€¸òŽG)8½–ú=Œ¬æbÕ³„UOT}­PôÕ@‘Æõe]=œølîJȼ6ùm¥£Ë1óËTOÅ«éz»9?eEs§æ¿Ä ÐXno¦Tç]’B9 9Q¾7xU‹ûOš¾FÁ+4ÕbújN¦¯¿Ù ¨==SÂ8À{®¥" [(U)PØì@©J"fJU 1PÙ Â^JU IµíƒTAÏ¢æ\bÕ“…UÏT}¹Pôå@‘Õµ²øÿP‰t³1vÖRâ!Nj‡B()·4@É׿¤ƒ”¦³.OgI’RGwV%IEF¶:IªR’°ÙIR•’DÌF’ª”$b6’²’„½N’ª”$’ê¼õHIÂê"—H“…Ô9@— Äy9@d$5•,~I’Þ3d>û$µ˜nõÊ1¥[L9]“s)’g Ú½èÅ©òV¬‘À«éÛ} 1Äiï Mv¾-iêtê KšäBã—¾¼ú)IU—&¾cÚ” ’Š $luT¥ a³ƒ¤*‰˜ $U)HÄl e3 {$U)H$Õ¾”" ÍY¤ü )g€‘”üòf¦ä‡çOŸÌÏÚøY?R¬Óuqõ£rð†°T…Qÿì5äÓ›U'ÇæNû¯x~ÄkOXêüBç,I9KñÏ÷v(= I~H/KIcA£c”DJ´:DI¤ a«!”DJ¶@n…ü@§ã“DJN¯¥>yNëSÅuÃoVDK{¦Ý3øDSqXÛQùŽÂÀ¦âÀ¶ß*òýÆU%µTäÕ€«Jk­äÀ¸V`\qX+$y!Á¸*â¸ç´ÿ Þµaú endstream endobj 214 0 obj << /Type /Page /Parent 286 0 R /Resources 215 0 R /Contents 216 0 R /MediaBox [ 0 0 595 842 ] /CropBox [ 0 0 595 842 ] /Rotate 0 >> endobj 215 0 obj << /ProcSet [ /PDF /Text ] /Font << /TT4 475 0 R /TT6 268 0 R /TT8 269 0 R /TT10 270 0 R >> /ExtGState << /GS1 478 0 R >> >> endobj 216 0 obj << /Length 5613 /Filter /FlateDecode >> stream H‰Ô—MsÛF†ïüs¶L3|]RåÈÞ¬R‘ã)ïÁÉa‰E*—÷×o÷tÀnn’Ê%¥*À‹L÷ô3Ýóí|òr>¯Œ5ó“6k+“Ã_¸¨Û¬jàU^˜ùã$âçûÉËïfÖÜ?O¦y–ç`z7Á |éËäCòúòâÇtZeEr•Z—ÕÉs:­“;ü·}êL‘UYžþ<ÿ¿ÜЗa Úæ™Ö>kKÛ˜ùkȳ?–óY“˜‹m:õY•lèçc:-A凟Sÿ,ÞufÖÓ þí;û8öÞçYQ%xž9]³%º–¼[ÜwÆÛtþiòf>±fe&U›ùÆT΀ÎLÃÿÏÝä£.Ôyæð¹/ˬÁ€_ŒÍÍ•ùðsn–“’³ÑÁÄ'¥-3ÏwëÉlòmHc&+ð¸¡4¦µ­†µm)m¿ù溃l‚iµI÷“~7¶ $ $äa Þ…´Éaþ™õ¾’Å x¹ÁćœƒÔËaŒ†÷¹¹|†i3HvkÆ¡r2ý)Ál­¬yamYþ”ÂÌr[Fqe‹—7—ð´ñ>±a4Èɺ >×à>®Æ4ü§%ו*ó>(­Ïܾb!O*/Ù&í‚T°Cìk®ðx-™¡ÄÓ(ʬ9Ôàkü5_+èk®Æ—öµ¶Í¬ìJ<0k&Y8LbɪpMÈ5lSq–G±´° ‰fºÂ¡@JÇ¢sÙQŒe5†RQ9bŠÊ‘Uö_ÙYØDÄŠš‹@D,±VÅ`U,`a©ñ4š3 ÿD&ìñðÓ&‹GÀÀKowtu c‹LÑdÜ‹1¬+ŒX•3bMæ#bxy9ƒ§mé—Ø)Y@ý°>oÏ÷Pn 2™Ï$tȹMøµ%;]$«M·4«™ížžÖ]˜-ŒÜmzSGàúo ¡$jʦ‘SRUTeãH+©*°Š13KªŠ­bÌäÆ"¼²mä—Ta%ÔÃ:8¯²*«{±”Ô1X’:FCPGwqtG5V!/k·Ç*Á;ª>Éìa×÷t9§XžÖÍw±V>s©Üô‹~µÝ˜÷‹õ®;ƒ¤õÃ7÷+ž+甊‡8úÒò¤æ¹!QÐ!QCG6誢#GtHUÑQŒRUtcFg0Ñ‘m#:¤ªè(¡æup!átduˆ¥¬Æ`ÉjŒ†¨FwE1º#Š :U /z>A—!‹CBW–rù*­¡ ,Rìõž„ÅC™¥X2váémJ}aï}¦ïèn•Zhá˜Ð×fݯ;.§.9Çۙ蚕͕8ûw(xÄÜÔ¡ÞÀÌ[Ü&º¶åØwË̘Y×™«EÐÀ‡UÑ\m—»ugbQÜR±¤š í|íë?‹}?—]¿X­aÌüÌŽàÏsÌ~5øeÓ?©*ü²q„ŸT~Řá'U…_1føc~Ù6ÂOª ¿ê°UQàWTŽ¥¦R°4•¢¡¨ä®"’;ЍÁ_ÙÕiÝÄ+ÇÇÈ÷xR ™Ÿ˜pntɵ¾. ÅÏm0–gÝÀ ,¶"o‘ª ¤­J¨ø•ˆ'ƒè’› n€ÐC¸7™@˜3Z몴Á `kASFU AŘdUCP3&YÕÔŒ ÁÑXBP±eYÕÔB=¬ƒÚ¹Êâ^$Õ¾UÇHh]«¬Žüîžµòx½Ï^IçËëîs¼Äl4ð|U@ÆÇßn³äCæü\ë-3û~Õ}I±w]m]ë`l÷ª(ñkóv¬¡v¬¡6¹ˆèºˆ.UPŸ¾õ€ï)¼5Âk[è~ð ¨€Ve‘iõ“4]Ñ0¢D•\Ñ4‚D•[Ù”± ¢J­lÊÐFS‘YÑ2"D•X9¼Cè­;¡€Å"G—KE¤U#ñ̲ ªlÂtÅ»pÍL#u@¶.iŸ ¶!ubù×ñoc®Ò),m²xþÅà9§Iønkôm½0 O³*AÙB3ä÷æà<Ï¡ÂÙàæØ`Á¾ûÏ!°ÓÒI¤vÑ?7›moøzh¢j܇Íí×Ôálú‡áíbò´îâe·éC[÷À#,%ÝÆ`QioÕcuY˜w|ßñ€ÑÖ„ƒ¢MfpÛ½ˆw«~¸zŽE ðÆq°7ÝoÔXBuH­K %š…{ „Kð¸U%+փƞ´£'íÞlàœ“¬Ök¼ ‡µð¡ŽÆ¢&Nt¿LwÁ¾ßšh²Xšmœç2Îâ‰Þ]/B˜Áè]|}tƒf‚ç~G¿[W jÿÐøã“®|}aV™é²0Þáh'‡×Ùî¶çî‚®Á¨‡À£0Ãî×]· O;C]}1tõ¡+ÀYLﳕ¾°ÅcFUÿÈZÌDëõН_¶ÒCl)ƒ]îîŸ+šB_Þí¶ÔI4ÿE3ÝüÛð™8š-½rO0–¿Ïm˜õÓ—ï%<¿ý£ |€x#?õî»ê¬¥åü·WMvÛ“ŠxÂÝ5íQ„°»Vc=Šuߪ¤G‚î[•s³º˜»N£<Šr?¼zz†ÜWS}Õ¢ä«Wµ¹º¢ÍÆêM¿èêy_÷Ôùvz‚ÛÈÁR¡x;\6»mqÍÔœÂ7ÔÎém½y+îÊ–¨¨—Üü0fLIêؼ·åùý·jI×UE%•îø½Ê"~Ò»½¦Šò74+W¾ÕÀ’å› -Q![À¬p‰ éfÅ+™]¾|¯&*$ „ZסãÇ¿NXCà¹'eE„+è>ÔT`[_QñúºC›êm«/*^}hUÁК¢âÜð‡V ­™“†ö3ÇYE`K+QqZ¹#«è|R¤"ù·«+j‹+Zí° ˆë¥|“‚ÙLÓbª¥7â 6h- õBŠaÐkc¿ë‚ªT=ô‹¦üi#÷¨iʇêŒr³\틟õöãþ^¾¬žc£ÁÿŠk®jmù¥xËz(w·OúO©²ôÒ¼´Wã›±£5œŸÀŽÚ¹+*©\0?óƒúrc]œvu»íí† ;õfôÖ E0¾Bl}äz5PÔù­Š›ÍÁ 4Ï[ûû^s¿Šmߘ칹¢{iì½ÞYϲ徲¸<–dúH×õ‚Ck£Ssw6µ¼ëüçßL éÓ´‘<¯Ú‰–åpøRñž³¹y:¬«Ž_èÝ*^Ö¼ë ”1l ¯WîhA)Ìd¶ûÏUèoqº¯bhë‰&~]ìºMúû-ëýX^ijåîáAž»=¼Ü·šaõÐUb1dTBϤ…Ž%Tå<›1–PsmR XBÕɵIñQ›Wy<—V–PYñlX±ÐS?b;—×AöåL [ЀlÁñe ‚¯ÚŒ|U*á©¢ÒµÔf΋ÊÑ‘Ì9+Q+G eü«ãZý⸦ ß@$œ1FÖð,q!Ô“[Ë÷kz©ò—í“Ôª•ú@âÿVŽo??ýÊDR’0c\yÎ/_1Õ·y'9‚GDÄo5„D…ùfITÈ0+N¢B¢€Y¡Jf—+ßkh‰ é¡N놜ŽÝQ¨uKOÍÁòÔ GÍÓuÄ<GÇ­¦m¨•j^ò¾:éúµjy¯Ð»¼Er¦ÆëÅJjµ ö†½MMM¹{ÚŸ8|…¸çÙ™+¤3W›l‚œ¹ú„`KÒKrº°á¶#""Ç·9¢Br|³‘#*$˜•Q!9À¬ä$³KŽï5rD…ä€P§u nh€:‹¥§æ`yjކ£æé:bžŽ#"r¨qçM¬äbèêw‡‘fH{’¶éÒ0.µarÃxÍ;ÅR£¸½F§ùsèÐÿ» ¡#"BÇ·:¢Bt|³¡#*D˜Q!:À¬è$³‹Žï5tD…è€PÛ:e¡(aI§6àZ\<ÑðÚ!Lý1uUE<±¨oT]nO¬6* `TÉO¤*'`TI4*ÈP…ü15qD<‘7 zùƒžÒ¤¥ž¤¥¦N¡îb“oRäÂH'¿ã"Ç߆QJO¨rä zmìw(¨ÞÔÔÏ7å{¹õuýå^¾­ž‹Kûº]Ôó±swû¤7¥òîøCOíÉ‹Ž¿×— í$/Ç]6×ÀÏÜeå&Yjm>Éu·½Ýp±]ÝÒ­/ã+¬‹ôG½RU.6ÿ¤Á¸*VÛb÷U¢)6D¼ªe±Ó;ÅÍæ`íö6Dn­èiü½ÞYÏ´-Ÿ×¼@Á/È¡ºÞ>ÐOú2L=nÉÜO·mü­‘ íöûÝ#÷o´+݇]q³ÞlïŠÝöžfÊÑ,´­[Wu)A‘ïv{û)¹M¶FPâÒ–q†{3ØÓljú;Ωá9ñvÆÿ\XZ„Zò"ÎgjCËó‰9·Å8³V}çUËo}8|©¨–››§Ãºê(ÉŠw«x} c`Óë*Ö- wÕYGÙOf»ÿ\ŽéžcJk³«9ü×ÕH!ÿ ;뤿߲ÞtläÙ=<Ès·‡—ûnhceˆR×E…X­|‹Šê70[••idÖb,*ªÆÈ¬57™½¢ ¼V[EEŘOŠy‘ÒvNt:^Ož…Ú•s0]9‡Ë“s@<5OÊSek8U{¯ü¼ö¦*Ò uñôØÒé±Ó³c+¥r"Š»oÕ’îèmÛõD¥T«¶êQA+ãÇÌËMmûÙÀïœúÙNúÙ1õ³ýë~64ý’5Žk4n¢±q­FM!4¾U™‰"DÆ·*1fuqÆK!.~xSèC“«;Н£ÎBè©9Jžšá¨y®Ž˜gãˆàôêŽr}žÿ€~@OpÏ ôÖ-,Ëâbwÿ$»áPny;‰4„‰â7* ½Ò@û^"=”ˆ>ñ0ËÄÃxÄmÅ#<"ˆˆˆð­†„¨ ßlPˆ ©fÅBTÈ0+Éì’á{ Q! ÔišÂ᫳Xzj–§æh8jž®#æé8"€cIÝ΋¾<$6º]dc©ltº=”÷Z´žeüµ§«š!AÑ¡ÔK„¢#(º¼M,=u_„Å”°XjÚš=¿l•Á>½u›·ÅõêþIîPþX¼‘·Õç^QE#M¢JDD•o5ªD…Tùf£JTH0+U¢Bª€Y©Jf—*ßkT‰ ©¡NëÐ*_ÅÒSs°<5GÃQót1OÇUSMΩšŒ*æK©â„eªš˜Ï|чŽ\*ëýÍ݆¶6 KJ~F‹o*ZÒ-bÆ'—ºî -å‡Ðé!+ÞŽ˜¬>0jÍK4¦%>ºˆÀðÊ…ˆ ߪTˆˆ VaBD„° Éêá;• ¼úycß͵1Žíû€—L4¼dÎUôGÕõñÄz:ãªè«‹-â‰ÅöÆŒ+™ â‰LðÆŒ+i’Æiâ +š?ª¦ˆ'RÈV4ØSÚ¿TkE@ endstream endobj 217 0 obj << /Type /Page /Parent 286 0 R /Resources 218 0 R /Contents 219 0 R /MediaBox [ 0 0 595 842 ] /CropBox [ 0 0 595 842 ] /Rotate 0 >> endobj 218 0 obj << /ProcSet [ /PDF /Text ] /Font << /TT4 475 0 R /TT6 268 0 R /TT8 269 0 R /TT10 270 0 R >> /ExtGState << /GS1 478 0 R >> >> endobj 219 0 obj << /Length 5271 /Filter /FlateDecode >> stream H‰ÔWMsÛȽóWÌØ2aÌàû²U²”Úò–+&“¼{€%XÂEj%HŽþ}º§{즳µÉ!¥*äÃë™éé×ïÖ‹·ëui¬Y]4ISšþüCÕ$e ÿ«$+Ó̬ï©ooZYsû´X¦IšõzøÒ·ÅçèâýùÇxY&Yt[—TÑS¼¬¢kü·{èL–”IÿºþW®ie0TÙ´6Ë*OšÂÖf}†Œ1s[.OêÈœïâež”Ñ–>¾ÆËPþñ1vðÿ¾eðº3«^hù³»ïÂøôyšdUVÀ aq2çÂÑlG‹®ÚÛÎä.^ÿ¶øËzaMoe“äµ)8³ôÿ»ÅW¨ÒÄáïyQ$ÅR¸ŸŽŽÐ2y•”ò{ðˆº ‘w ãÛÄՌ٠#hï2Jõé'xø.ã7x𛱩¹4ŸMÍÍ¢‚ Áht°ñûEa‹$ço›Åjñ·q~"ŒK8qÍa Zdxµþ–KŠÚ/±µ q•8$mb›Bœ´þ‡×8ƒ%#ó.{QOЗÜF)œ'±y^ŽÁ“Qðñ³ÍfhÀP/q™¡»ñÄ&p·æ€l$Ž~‰0ø]T¦ÿù$MÄoЈ‹R›¦¿Äðlm:³ñ2KËßã% a^p.A[Þ)ø¯kéÿSLèH™ä¹GšB¼ 5{›ÌF¹ÄÊ\íƒ [—,ƒpòÑt„] *ƒÎ%>–ÑàJe)(;FFùü2Èg‘AP£¨Á¬â*qÏù5ókÅ"Ä𮢗rCÔ=bðWѦ}þlÞõƒ¹ÚA9©!¤{ÈõM4ô;Èç5yÃj©H-ø xµT¨Çj)@𾻉”xÅÁù]YØ£ZJåÐ?9òçî÷çþ‘Šcwc†ùÒ±]çíb•ÄÍÀ^!Üu[Àö¦ßÞ& ‡ ©sMáj —©Aᄪ —ÉAᄪ WȬpBU…+dVøH.sƒÂ U®¸z¼‡¬TK ŒÎ|)¡“³$tò†€NÇÀé8¨)DTç¦^t\þ®éƒ_è¸f°Àw !L6³B˜…ðC ›*p ¶°ÙLøU´š)¶ñÒnž;sÓ…ú-¨ðKØä3ï¶¿/3HE©ÉŒ@Mf25ÈŒPUf29ÈŒPUf ™eF¨*3…Ì2É¢Ìdn¡ªÌW÷Öj!•Ñ™/%tr–„NÞÐé¸8G™•5~ù3…ôCû¥Û€.2Çò{•Ô{•4è©"=壞ÊY!]íWÊ}=•s=ÕAOÙ‘žÊÆWÖƒŠž*ë‰QMO ™õĨ¦'LzbTÓ“F&=MdIO —õĨ¦'ÍÕã=¸£àd¬†£h<£ëó؉Û;^0€¢Õp³Í_[ÿyßaõ-kðÆŒC?zà6^æ  ‡ß_c‹Î|@ù{±YŠ^þG\AÿßóR¿D¼¨¢óØÁ·Ýý=­»ªu–ê-™R- P+25$|BÕŒ/“CV'TMë ™S7¡jîVÈœŸG²˜ enÈ„ªiX&Ÿ§Kšw¡õñEHðÌÕ"<9S„'wIðä %¡TBN¥_ˆú¼þ#óê¤ö3Î2COXKÉÇÏ©¨ ¯i›ç%jšªSã“ÝhÍMo“¶¶æâ÷óÙwèE˜x+šx+JX)αð&wè ¡ÈÁÖ\Ñ`o}¾òbƤjäŠUE¤Ç4=ŠÄ Gªj©AŒTµ(SYŠT•(SYˆ*êPdzPU¡ì^v}…Ký+¢£ e4xIFƒ#D4œUÃiDP™O‹ºªtÞ—AVà7þØVAÁÞ…TyåÐ/mœzYý/uTü÷tT€LMH *JR¨,%F5-)d£šš42ɉQMO™5‘%E)\–£š¦4W÷? Qá`e®1nÀ7(,PÙp¸_BOݯ`: ²épû„žº}É4£ŠiŽ BOņdšQÅ4GÎhZ‹Á2ƒ²áV„ž +Á2ƒ²å“à0ºy”óéì8º6{£kãkã+|ϦÑõ¢§ßž6ôоÂIÔvÚ<—ÀNóŒòßÖÇMÿbTÒað¡EýÐYçøÙ§ªÌÑüÒsW¥óKØ!­ý6E¢.²ìv?­Ê>Ü?f1@…̯Y»çòí!žðÍNÆ»'z…8_ñWÕÉdS—-›°d‘'Û¡Á”E…®l[ú2Vc:3VkŽÁ¦7Û±ÁœE…î J­ûÐðëŠØt'…6´XGK e²´PC ‹4¤°C†\5lß3Cާ¸TZþü’¡ÜAa,ÆË¯ÚâŒG ó\1¿§ÃÞ‘;îÙòé†pSö—`c1²žÝ/öÞº;·;vêò¢ì‡2Ï1Á  2è.–çM ºä©Êög¶àƽ!¥¥-®]yŒXÕö©h§ˆ©¡Š˜ª1¬ˆ©ŠCÁ‚˜ª1,ˆ¥` 1«ˆ©ŠC¥ŽûP…ö¨â‚Ÿ–ÚPgµ´ÔT,KMÕ0Ô´\CLË1D_%õ÷÷[º Ÿ÷Ó´—Ž'{·yüüSWý.ê¨^š5TDÔÙ¡:Q!uvp NTHVêD…Ô`¥.›ÔÙ±:Q!u ÔºND­ÆZÚj(–­†j˜jX®)†å˜" ŽNðE×ÎçŽ!bW*vo=b%÷k…ó-&7ÅÓ8QC™Ým~]WCDÉÝìÖ«û_Ѐ‘Òf>a4ŠR‘§ £(µŽG z%3ê†9-xö £qW;mâÜD½ûD®ñaÜ>ù®•^ü§ìîÅ囫LnäÁý•WÛ¸ÌK½»ææ¹qA}vnÈ(¢ÕTé–§SçÞ½¿Êî®ÿqõ,»¹|-Ýó-çíÜõ«¿sýjwÒÙò9¨{`*¡jª"Ájª"@Ábª"@Áb)Ø2« *2Tê°ª”Ô¡Öy!¥*.¥X£¥+°âúJ|ù…‚XoéðôßÁúÛÍ¿õV·áÆÔkòî0~y³{œß“§˜GJø–M˜×ó"bÞ¸‚é®:&æe ¼¥ÛR¯ý=Zúáp#ó#]êo¿J>!¼81+ÿñlãRñ>¬?ÉSöŽóœóž[Bt‰.£÷ É{èšfïÈqúè==yO!üïéƒ÷ôê=Íbm‘×m ³aÃôâñÝí§³¦ÔÍF“?Í?«£—¤gÂ^Sïián‡ÞE…ÀÛÁxQ!ò X™B‚•úlboÇîE…àƒRÇ}ÈkØHØê¬––šŠe©©†š–kˆi9†ˆÈÏéè–ùU„¶•\7ããN‘ké2¬œç¨r#£U;ŸñZA³vs+è¢TÑ úd­{ÅÈ½áÆ¾ã¹' ·ƒan]°ƒNí ^ÌMØA#Í›À9ô‡ú~àzÞòøÓÒ Á­Fãhœ¨¹×81ZEY##Œ@Thvp0Q¡€`5Q¡€`5‚lŒ@Th ÔºdÔí+‹ÁWÅŽD¢ßAášU$ÖýUﯙZUZw_U¼ûvjQQj9ªâ³a§¥–““RÛ'ÇÌ,"H¬ÇJU|¬ÌÌ"‚ÌgE²ò?Ýß“œÝÓn‹ÛÓ?ùKlÏÀpdëÁ3[mŸŠüBúB?Ëð½ÎÈ—ò–-òµüDVXS—6>oä‡OÙ去òÓqb÷¢ÑQ2Èùaÿð´ÕŽÊ;½r-¯lÝCECŽx4âjÃWôü¿1Ïg¨û,mXl»´Ûï6lÐã6ûB ¨õÖ©?KݬíÛïÖÙ^[¿(¡ÎiRRõg.‡>ÛK.¦Ñÿ8­µq¤q¿ùD¯¦ÒÈåó÷É·y†1´ô×1Ù¸¿1±9CYœ0Y6ÌÀND„°bgìD…Ø`ÅNTˆVìb°‰°bJ­ûPóZA›—œDQvPD¸ƒæCƒj'û+*Þ_3uPíÔa÷EÅ»o§V¤Ö³!*>vjUAj=91µ}rÌÌ*ډñ+3³Švæ³âZ.Zr endstream endobj 220 0 obj << /Type /Page /Parent 286 0 R /Resources 221 0 R /Contents 222 0 R /MediaBox [ 0 0 595 842 ] /CropBox [ 0 0 595 842 ] /Rotate 0 >> endobj 221 0 obj << /ProcSet [ /PDF /Text ] /Font << /TT4 475 0 R /TT6 268 0 R /TT8 269 0 R /TT10 270 0 R >> /ExtGState << /GS1 478 0 R >> >> endobj 222 0 obj << /Length 5047 /Filter /FlateDecode >> stream H‰Ä—QsÛ8Çßý)øH߬µ"EQÒ=t¦Mo»é´Ûníö¥»n¢&Î$r6q¦Ýûô %Û@îz½›ÌIJÿE@øà³ÕìÇÕÊ+£VŸg]ÑyUÂ_¼hºÂ·ð¿)*_Vju3+£xw1ûñÅÒ¨‹ûÙ¢,ÊLÏfá"ÜôeöQ??=y3_ø¢Ò¯çƾŸ/}þmo{U¾(翯^†'·ødX¨1e«+ºÚ´jõRJMײ®hµ:ÙήðzÀÏóE *ýx7·ðÿfMâY¯–;¼aMŸýMOâ.í¼weQ5U ÂãgÖ&×L\Óo×½rÕ|u5ûÇjfÔFÍ|W¸Vy«À«ñÿ]?û, MYØð»«ë¢ÞSj[‡kÆFVð1®)ü·HqQwÁÚ=¦‘æ°-i¦ ´ç¯bb½{/áe\Á€_”)Õkõñ÷RÏHš6~3«M]8úv=[ΞÅ4v¤±[Lc|·ñÕbÂ>y×CÁ~ =î0ÛúòµÕýyL’v[ç|N ÓåÔ°¸ÈéÍ| ™9²ìÿxˆK4E§û¸FW@^u°ŽÍô‡ëü¦ÃœžÚŒqåosØ[iÚ¢ÖæžQ5aƒË_áWWÂoá§Ò€Å’ßÂÎwjƒî8­v—½ZÃv·Þm¶€ØF«ÍÂ&};Ýõ¸÷Z«ó­‚›ã†!ÄkŽ<·MÚ19¾¾½½þsn›ø¸­Z__ǧnš5¬ñˆOj´ºÞÐÕ®?ÇM`lVãû¨ßÆ÷Qk\"z=®×»^½Þž?\÷E\ˆlêøÆxù!ñ?&¼¬@°]T:WØ©b€ïX#Ó@Tl”<¤Ÿj¶ráš3 m£ª‹v_ƒ§µüÓ,<­Â§A˜á¦©Öu…á= í̺½MV6 ÌYU¶¤dZOŒ'±6PƒY3Y¡ÐCy¨-‰Uˆô^Œy5…RP)b‚JáUòŸÉ^„RÃÈu_N ŒÏ¹ÜQ™Éu¦£:ÓQn@,ß`½x»ÇöW¼ô¸ÐÉõ¼Ö÷a £éC½?}þX¥ÉÛ©¦…¦J…¦  ÕïOá×Ö…Ž™JMKM5-5•V÷±`R݃+a×ê6•T¼aØÐ $TVÂE‰LÞ4Á‰ªÈ'oœEU¤T0&PQYŒ ×lÌËÛ&hQ¹BMïÁ…í¢hmqjVͱäÕ,^MÑ`Õä.+&wXQ´„”µÿC@™¡ Ê£0‘zZ. Ð0lÂ^¯q&¾—ÖúÿD+ ô¥“hEQ¢•7M´¢*ÒÊ'ZQiŒ‰VTEZc¢5³´ò¶‰VTEZ…PÓ{0EíEZy5Ç’WS°x5EƒU“»¬˜ÜaEV¥›ÒZMö ª'P}µzdfÏÀ—üOáLháÔ^Ç)Pøå¯>ÁÚ2¢ÇGdÔ&FýØQ«‘Q£O—ðkdZmh1Äa<¬º)«6²ÏÓ3…Ú¤©`ÞÐD¯ôÆÛ`õpžmi¦oóLoЕ»`oàèz§ÃNÜø5‰ñpJJÓ¾§œò¡˜¬Uúù-¯w›§%i­uº±ß[jo:8¹¶‰ÀsŒ¢³I89ÐÙdÿ¼ü¨SQ¤Ò‡yÞB¬…R¿lwýßÕ‡×*ÇàÑ üvžO›!žkÒ3¦Çºål%Ÿ³Â{©ªƒs‹oáhä…ÚJ¢P[Sª­¤JµU0¦ÚJªT[%c¬­¤JµU2ÆÚ:sµU°¥ÚJªT[¥Pç÷D X7G>Ò&q<ÖÆ0kcŽ´ÑÉ#itáH’ª© µwZM]F©¡’ú"Ó ^ß^n"ÝN«Wk@(h¡ÔZßUÀXê(uMùÔ;›K]ªì<\AÍ«€“Pï\J¬9ÈøÊŒ>e<ŠRÆó¦)ãQ3ž7Nª˜ñ‚1e<ªbÆ Æ”ñÙ˜ÍxÞ6e<ªbÆ ¡¦÷ž‘mÚDšs$Y1EŠS$81yÊiÉN“?ôÔvšøGîÉ*LÌ¡&Å®µSoÂ…ÑŸ°g]Í]ñµ¼Ý~±“ád™§êÐÎ ò^Œ™&SÕfª`T8 m± —Ë_ã¸à€¿4ä›88`cù2û½ìµ >5q»¡åkµýtö÷‘pŸj}‡îi†04C´8‹ ÿv„O,5:sשÇR=xlÔ‡½Ït…t¬@Mª¬a*Q«kšŠ@ÅÀ›R ˆ¢XxS*ɔ埵LøGQ¤Ÿ/…¾-:+%5‡WS”x5‚U“¯¬˜¼aE¡ÔWNj@er ˆÃ'žm†óÍp¡žm¿ÎWW#ØùVœãôÓœÀêý°zàfn7© ìzÒ.+;ðE`‡Ëì”î¸SÖÐO!Q D0%DH•Œ R%J$cÄ„T‰ÉA9R[B…T‰)ÔôêðxAͱäÕ,^MÑ`Õä.+&wXQ‚ÁØÒ°dV*ê—Ož†æÖéËm<»Áñóív3`C,ûÂ_Dûf‚Â,„¢DošBU$ˆ7N¡*$A¨Š ÆDP6f âmA¨Š ¡Îï¡ò"A¼:‰%§ŽÁâÔ1Œ:ºËˆ£;Œ(Tu°™éÈ'£Îûá3dg8>mi6ºÄu…×ë0\Vz·ëÏ9‚E ð`‘°žñ‰XõsÈ~¯¿Â¸×À„g|8¬}˜Û–‹ÊõÜý€×ÿÁ ÊÏ ~:ƒÒÉÎÒ´Fçr±9‚ÍÁ“¼Šl¼i‚ U6Þ8Á†ª›`L°¡*Â&lÙ˜…·M°¡*Â&„:¿‡²aãÕI,9u §ŽÑ`ÔÑ]FÝaD 6HúÚÛlwܣ‰àÉÈ$vi¾½U¯ú­ß×ÃùÞÁo¯EªCú»)m¶°-Œ«û´fJþ°÷SXÓéW ù&Ô {€š[ 5%ÔxÓ„ª"j¼qB U5Á˜PCUDM0&Ô²1‹o›PCUDM5½ð•´*Ä{?Òœ˜#ÉŠ)R¬˜"Á‰ÉSNKŽpšÀ˜k ¼ÄïfÌgÆ:ÄåÙv·ÛƨջÍÅå_Œ—ùïðr)¤F†šoHl¡(¡Å›Y(J` ¦ÈŠV‚)R•M9¨xKb E )!¼9ôù v„” NBÈ©c”8u £Ž¾2âè #J`9h1åwƒ•Oh¥Ÿ4/øÊ8Æ#Ú.Ì—^«Ÿ‘!¯7s§ÿFÆVo‡Ýúz»ª›`÷Îzpšzbô=^Ãj ³ ±gø{<Õ=†¦ÑœœåŒýÖ³œ«}ÑY‰J%,yÓÄ%ª"˜¼q"UMÁ˜ØDU„S0&:³1‹'o›øDUTu~Ή„òê$–œ:‹SÇh0êè.#Žî0¢D(Ì}µžå\‚Í4ˆÇ“'OHÙzÈ%žê­Þn7@b} 'GêDcº»Ü‰Ú±µ¡yêCªÃ>³°uRÊ£(¥d>tHýis½Ùý9퇭Mèõ7÷ S†ìàAQ‚‡7Mð *ÂÃ'xPጠTExc‚'³ðð¶ TEx„Pã{(»à+Š@ÙA¨y5ÅRP)X‚JÑàUr—É^à©ÀÁOái= žà¦ÕëÛKœ a¼ ¿~‚ô…4¾ ¹ í¤Ç¯t‹„—µ¾–ý=¶#û/ÒËm7n#ï2—`o¥Ñ9‚œZ IÛØ PôJŽ[ÅZ»µåéÓ—3䌴»üÝ…/¼»¿HÍpø‘C²ÇdÙØÆd]ܣЀXÖÅU.=ªL.~sˆeŒØ¹-2ÇñEêºÜ0Íæï´£O·ÃdnîÙŸl²MÌîêO·.º˜úïóƒÿµ—糟¼à¼|—¤+fS6ëÿ‘Ì·ƒ¼¢Œ¯ YÏôÓ´›ý5tsXжqÉ«WA¦RDEKUdÌ@TT1W€ÅX«ÀV*€¨¨ PË9ÔqÞ;)º#©Š!Rª"¡‰a§š6¢i}ê;Y»BÝ÷~ôØSr;ð#ë‘ËÆÑ/çÑïyÌdóq‰þ@—lWobŽóÈq9¶ŽØ"ëjúô‚ØÝT ÷ËŠtÔ/ Jg‹×+ªa@Å‹Õ4€âEȉn*˜xR¢› $ÁTeDµ ˆx¢‡7†¾°]]…PS—(iêE]öªˆËnqRÐb<kNžBDéybór¼£D¦5P»xàŒxyø}Ïfë¾'¼”ÉGÇKy©VÍïÕôÈ‹ †zÞ<\›Oýöqxfަ¸¢Ìh Dd±ˆÐÒM[¬B¸tã@«/`,|± ÆBX4VÓmc¬BÈ@¨ã9d%¤LWW±ÔÔ%XšºDCQ—í*â²ED”e m~E™]2¿ =é½dn\qêVtKû‚˜«£ƒŽ¼qß¿ËÖô/ÞÂjŸÂð©–esµe}ü¯–EÓ -Y,"²tÓ@«,Ý8Å*$  Y¬B²€±U²tÛ@«,j92Â7<]±ÔÕ,] ÑPÕ°]U ÛQE@–m)‰Ê5YE£dÏFÍlÔ Eb^ösO©œw¥<§~S߯Ôobê7ÉëôœB›¼%©¦ ç‰M]Ø“s6žA°ä¹«"€©€ * ¢"1ƒ *3‹±°DE  PÇs(Ã-/Ï7åI¨uKM]‚¥©K4uÙ®".ÛQDBc)Ö œt§=â’²Ùñ-¥…UÉ~p7ª†òR è"…@Ñ _( ¥¸ÖqÔ lkÕ ”`! ›X…èÆV!ÀX`"Œh¬" ÛX…€PË9ä› Š1’ª"¥Š!švªia#š†r¿vf…Ëý§ÓüµûÉ&ãv;\S†ÛÌMÇ^.Nv¶êºäNn š XC©­†Ìö"LlÕ4äµaZ릒Õ^„I­›JNS5¥UËÑ^„ ­‡—C_wÎæ8ID¬Z·%` D>5ѱé/ ªî8œ*«ðXu×AÕ]‡Sg;p-*p-YÁ*L àZTàZ²&ºVÓF÷,¢î8$«0«tÏ"ꞟ©0ýpyIuÙ\Òiç~4¤?þ$EŠÎÆJ‘:÷SnÐ ß ólã*Q™äò߆B”Õä!¹Ø÷³»VÉÈbŸ"É–¿˜Ëû~zøâ¨“ÝýÝѳ»É¼ãv×b2ø‚FË/yùj…µ.½W‹?½fûDrËwáñAî×rÏÞM×ã<î¦~kxÈmü”ÿÃ4›‘–Ÿ®\Ï·ƒùUníÃòDï\™ ú?˜ þõ8†¼„àx¾ígïh oîos-wü¸svmvò£ KØŽûýp½ !Ê3ŽQFi³i‹œ¢ðÒGÁ¶.>4EÅyž-Ì<ß§.ÌãÕã<¤îýæ}ïÿßùKVÝnZ<ëz•nÒó²Î 2¿Ki*j“½[këv˜YK§ø)m¨%}ð͉Зïïœ^¹‹™¥o»»;~ï4µ.r]Â˹D²ˆJ¤nŠ «°êơ̱ Ë0–BÆ*,dÀXJU4VK•nª«°éÆOŠñ–"ÖžœÂ©¶YÑb -†èT‹8•âN%®˜O”œ¼#›l]/ÛXrr&ìg&Úz¢?ì¸.ÐO í²•k]®u¥•kƒ’GwüHÏH‚Pá$[d”ªÉ«é1¼`¸g_¾H|ê·®Q%ÏLvfºì,o³3 à`Y¶Éá5ƒEÄnb2¤†X… caˆUÈ0†¢±Ênb2BíÏ!ç׃;P%–Hå`!•£TÞ.y;@óOÞP/°kTÊ€JÖ¬P)(a*?¹6WQGÓ‚šË?®¹PC¦Æºõ ì»[^–µënÞaÅíž}½vµs­Ñ?Ýmª¼ÍÍ‘…°lÅ8Ç<âXFKjY„cq¬"ŽÅ‚c)8‡8:Os§Ÿ‘¹ëýïyÌ[b¿<Šx¦Â£¨ˆG`,<ŠŠxDÆÌ£¨ˆGdÌéµk<[áQTÄ# µœC³ij­Ýе °"Ÿ ‹ðÕ—UwΗU|¾ªë ê®Ã鳊O_w-*p-¹Á*Πݵ¨ÀµdNt­gŽêYDÝqH«Z˜@i¥zQ÷ü¤øƒ[^æ›î º6qp«·J·J7ú^/ƒÛþ‰J—¯ÃûÛ‘ølÞö߆{Ìš8˜Uß5˜åÓƒ©ÒV²¸Ú®æ2z½ŸÌj™ÌªÄ¤¹M>óçÕtæ~å*ÛÉ„æ~‰Fò5¥µ‰¹ñÕ˜·${~ÙÖôÓ$÷²à¢—§³ŸÖ^§ÕÐw ­†¾33nLZ»±wظ…èMëtFu®ß¸‹[È ×LÝây\«yÇ{ã 3ü… ¿RÏl¤Ñûo©,ùÁµœ:yñ(‚> endobj 224 0 obj << /ProcSet [ /PDF /Text ] /Font << /TT4 475 0 R /TT6 268 0 R /TT8 269 0 R /TT10 270 0 R >> /ExtGState << /GS1 478 0 R >> >> endobj 225 0 obj << /Length 5413 /Filter /FlateDecode >> stream H‰Ì—MsÛF†ïüsl…0æ —TÅVÊ•”;&í=89Ð,Ó%‘ŠDmVÿ~{¦{ Õ­$‡Ô¦T%xñÎGO?ÓƒçëųõºUF­?/†zhUé¢궇ÿ]íÚÆ©õõ¢IâíåâÙË•Q—w‹eS7 XÏñ"¾ôûâ£>ûáÅ›jÙÖN¿®Œ­;}W-;}ÿíoFåê¶nª_×?Æž{ìêLÓ«eçë!˜^­Ï !¥Ô¼-ëë^«ûjéëVïðçsµ  ÒÃÛÊÂÿë ‰ç£Zð… ýŽ×#‰‡<š½oj×¹3„ÎÓ̬ÍS3!NM¿Ý\ŽÊûjýuñýzaÔV-Ú¡ö½j­‚XµLÿoÇÅgYèšÚÆç>„:)Á†xÍxd»ñ]Ýþ)!)â(XßSMØÔ¶'͸˜AGàUL¬w/áâGXŒ¯ð$àïÊ4êµúøk£.$MÌF ¿^jOwW‹ÕâyJcx]Îã7–ò8®m×6-³ ˜·ßU®¯­>n«¶özûéþ0VòWý´I¿×cµ´®í! ×ÕR{Ð(\BF#`ÎÏ*ÓÂk7ôÐkð×ôuЪ®6úÜÇÀ÷tÿ:ê¡Ó/ }Þ__c¿;LQHµ.¤™t0©äeú+)+0 Ÿ”Á×v®XþÖ³&Ó™ÚØ$µÀŸkÖùxÍÙ¢DÃp0­c zëùÞ,ôæ°7ÛÅ—æÚ0Ô†ŸY”hü`ŽélÌMÎålŸR$Ó·”¼Y 6Ö&+zÈû`I4&Nþ(È‚œƒ)É4I¦à2APiF‚Š(ù'Hú3I¸Mº²M¶HÒKØëÓn ;w«77_¶°û÷°ûªW›‡*.µoSn7Ðwm¼oO7]lh5þv?î’ÙEÑ£6½Q'.“pþ¨ѱO£›¦k¾iš¶ù¥¶@¿©–®Z¸ZgAÿ)l"h愳ÐÅ¥€BQbŠ·f¬PÉâÍ.TE¾3!†ªH™`&Њ™e÷fÜP‰B]ÖÁ´$Z[?5£ÎbÉ©S°8uŠ£NÓeÄi:ŒL±$Á‰¦õs’|!©C¾M(uˆR7¡ä J]DiiÛÁAJcúw9ý[Ò¿/éßC™Y:`dEUhx”ÿB×Jù¢”ÿ¼5ç?ªbþóæœÿ¨Šù/˜)ÿQó_0Sþ3›ÿ¼7ç?ªbþ ¡¦upq®e‹ö'¡fÕK^ÍÁâÕ VÍÓeÅ<V”ò?~´óürþÇ*ó?îÝ·;åÿPòß洀 ³Rò[H Y}A¦¿VM,[M~¨bÇ §¡‰W§8ÁFà{ '%œxkÆ U'ÞœqBUÄI0N¨Š8 f©˜YœxoÆ U'!ÔyÄZÂHSÅ*ÂI%Rý`”2ø?[9Ú>~lýä„9ïÆóØFÐû †§¯ãG4“ÇÝÅx‘ÚYÿ+ tåÓ B›š8«‚ÞVÆè»›*ž ¯âõ&]>T1µzy{tw¾™Þs󸽿Ëàô‡ÍÕýX­¿f]íëþäv²+ ¿‡Á4s]t§ ·°¶Và5cÞH£(AÌ[‰a%„+Œ¢°`E~‹•×w½(Jð á¥Ð÷у¢ÐÑq|Yµ„Ws”x5‚Uó\Y1φ% =dnó:¹›2˜†s¶­ ¶ú.b5è›Ê¨ñÁ®`,°Z½{ù\Ÿéù}eŽ¿ßlmûÁž€Jã;¥µûs´ºZƒ‹x ¸¢(ñÊ[3°¨ŠÄòæŒ,ª"³‚™ EU¤V0¶ÅÌrË{3¸¨Šä ¡¦u°Ó'ž‹?5«–Xòj¯æh°jž.+æé°¢„nAÿ[ÐMÕÔÏÈ8˜àƒ*£ƒ y %µû›t¨"3ôhŸíž8ãZW¾5Û9vmÁ®/Øu»N¿ªâ Çã´ ÆÁë&npîmõjÜÔö3(ñ¹úO¬Íêb̶»ñB}JÓ…z#àò¼'l¡?ï%lQ”°å­[TElysÆU[ÁLØ¢*b+˜ Ûbf±å½[TEl…PÓ:¤O¤(†!Ä‘óNIL+H¢¸‚l§¤ Óú’*¯/Û4©BÓ´ú¤Ê«Ï7ªÔ4æ©rnðM£*5™35ÍgÛ2ŠBÔV¤ÊiŶŒ¢Ðò“"l¼ÏÖkøêSkXmS7>íÁx…›pè,äÜ–M8ïn ¦Ý ¶Å¸½õÚЯÍ÷‚¬il¯«%¤°Þ_À±%‰[ü9àóõêýZ•—îé%<ØÀ=‘«!t'_lFØyƒ#\Ã>«Ä—¸ÃÂv™6È Ue`núïö»‹ía»ßm®èy<µyÎHÏN¬twgÒqK†]øðeTooiÓ{›Ø…ZÁï¨JLJÍv—Þ¨©ßÍÕövuØóÔÖ&¿™{Úã¤HÎæÔO­Ô¿!¤=È_Æp€µyA!»0\祦¶qÐÐÔîÆõ6?¸Cýd68ž€ãqÙ­6;5þ [2¦ö¶8ÒVo.Gµÿô«öH}¾)hçr B„Õ|Ç¥ù4Dx%.ÏáËæ¯óhòýÍãéÕ—õí.­2ͤK3ÙRñÅÅuz³…Ú¼Ýö³Œh©wÃ:§»i0ßÓjõθ|f±é4ŸÆãŽâ»Ê¥ˆA\ èí§ûØ3ê§Mú½ã9¢í!;Öi®I¸¬–¾m˜óó‡ÊÄ$º‰‘ŒôA`›˜kàÐcô;ú èéþuÔC§_T1~ûëkì—âVÎÁBX¥3¬$bICQ(i‚5-T¥¢%˜sYBU*K’™ ªRá‘ÌTZŠ™+-‚7WT¥ê!˜Ÿ§EjòqŠCÿx!8yjVž‚ÉÊS¸8y §N“âT,{OÕ”Fîç5¥T=Cؽ>Þ• |1_øêjüí~ÜÑÎ6ò_ó¦ñs!èˆû7®išò¹ßÐŒ C¼\ýyl °—/…,.#ȸíä‘v¶}ÞUÞêpÇ̯Gè4â‹?Ú¬Ox‡ØË§T%¤ykFUiÞœ‘FUDZ0Ò¨ŠH fBº˜Y¤yoFUi!Ô´.æ²täçÕK^ÍÁâÕ VÍÓeÅ<V\9H}YÑÎ ç‚Aú6R¹„C³×ê,–ÜÊÓ9þÄ,×Û›Ã.¬buLÜêl¡ÎLÔý~õ,¥»„ÛÖ=:Ny<&ÄèÕªZ]À<¼óJ:vìÝ? b?4bˆ+ALª±`&ˆI• –Ì1©Ä’!žÌÄ‚— &U‚X uY/1Ì‹³H2â)Fœ"ñXœfúX›&òX“è…϶ž>Ûf¤B)ýž>n®6»t8!Ù|Zݬ0=®âÙúð&Ú³êøEªˆJškÌ<%Qĉµfš’(ÂÄ[‰¥$Š(ñV")[YXgæ(‰"F|xKèM>ÝÂAÐ?Š/£ÎBÈ©S”8u £NseÄi6Œ(Áäá ÛÌÏ«m©.ÕÂù5HÖªQW ØG½~¨|H_„Àf+^±KSºôós¬/¸ú‚k˜*jЯ2©¾ê±öG%Ð#>óˆW€Z_£Û,"¯fÆk˜óÚ¯æ¯ð©ÛIŸ¦$JÄòÖŒ,ª"³¼9C‹ªH­`&lQ¹Ìn1³äòÞŒ.ª"»B¨Ë:X¹òê,–œ:‹S§h0ê4]Fœ¦Ãˆ¼ðFgççØI‚Èd-d7‡Mµômˆ9‹|fÄZB,RB,^¾‰(üù²ëuÛÈÁð_™Ëq‘ãj4úìE€E‹ 4iŸ“^ôJÉQ/ٛ؋í¿_rHŽd›t/vÍ¿^q,qæ!_vþ7¸½ï}ºÙÁ¢Û ûøÝÒÜ^úÚr]v}yÇ׆jœSWáÁ¿ KÄØ€›D n=Tà&Õ„[¸I5á6‚nRM¸`†;«pë±7©&ÜFªyBB"‰~™jU͹ÔUI–®J6TUWåqTÑ€;v¢j wŸù(‰·4™ö4™ö~X~?ºÍtÓ)/E',±^E½µ$ðCQÏÓjœ{kô?m:(Gso- ¿æ?î–¥à? îF®ÁÏòó$7•Á‹Kðš^p^„‚ÔZ6˜E<#”ÁcÕÏfðXµÀ³‚ Š_ýÊvu:½pÏ£˜Úá¼?¹ ûóøƒ{Ú:JHíÏ_~»“x\ÈÒ%ç­ågQ±W‚ïÖ¶±Z˜€ÝÚV c¤[Ûºªa skšV-J0nm»ª¦‘ ™—)uëX„yÌa-‘v‡DsƒÔ?U_XvT{Õ¥EÕ—–]&ÕÞh}iV¥ù$j}iV¥ù´ä¥õ£®Ì¢¾°(Rí3¥®Ì¢¾ò]*ñ÷ЈÜ#ìv€#eúÄUo»ƒ¯P•±µT‰B±_îCz-ésç Ü T3¿=üµMDzû€5JéñO÷î¼xƒ/îç§G÷Š®8<Ÿ÷øÛ˜ªÜUEw¥v ¨]ÓPÙP¥ŒMŒtØ$prù„ÜúÝWš&Üz?LÏ»Óî0 {‡5ºN?º|¿C}u\+{ïNŸF÷&Uàž+pºbÀ…ÜÞÇyùÓ°›d1ˆ/±ƒÉ‡T¡åË!/Ï?ìd`멳´ž×Á©mqU÷Þ¿[¸æš’6t ×ôÇï.IÝ´¼}'n$ƒ´iüËèY¦þÕøôˆk· ¥O/¿­êöóÓ8¥ïÜV¤;ÁåÓÇ$ œ°‹–µL˜þ¿n˜ÜøoîU˜ÖÜå;š;j省A3L§ VØ\&@L{ßvËT’€»ùᢛ玷ÌWº£´zþ!’)¿êøbf&÷~”/d:pWqïô KÞÜþå/©”ÄôQìÏyz9†„³D~¹ÈIL)¡lÀôxh¿`ò"æ ¿ß£Âïka2e^¥ Ñ«¤w¸­Ë^åo«˜öÅ{Ù½?ŸÆUGÕ½ÒûçíWƒ zLgº÷$|\=T0rA°üþç*4pÙ÷¦C,ÌTåw«îó-L…zÝ‚©K€}þLÿ;] 4ØEËe[bjµ,­ÖåfʪÕL`n—¬ZíÒ ¦†ÈªÕ­`jys°ÖòŒXîj¬Z];+Λ$M zVw»ŠºH´¦Î™ÔÔ9UŠ:çBçÇQDêÃw:^YA(–/Üð¶ÜH"õ‰˜j26\˜’°hQaŒ~ƒM7PX/8þóÌÃLÉ]¹_ס î**$öçhþŠ!yþ*qÒŠEß 3(kÿ+"[ •á Jè+Ѳ¸,ZÜé¡Â©&wz°pGªÉÌÜ‘jrg3w9XåNîH5¹3RÍûnט 5çRW%Yº*ÙPUy\U”ÇQE@Kª¬áá¯úÝ¿|; GÔEá=AàÇgƒšÐgKBgC. &9j“£³9Ê&¥­#-½(ŠîE`2Qµ?b÷lñ·DS”•±”•KûZ‘}¥*Pqx2OÞe'îfsÅÄ¸çƒØ7¨}†zÝVíméhåæ9Ãñ¸‡ÚÓ¦>¸a¿Ÿ Rè#- ~`¿ãO'ðAd¤Tû ‰aoñ¦òUróë«Êô•UYH´*‹*•…T³²èÁRYH5+‹Ì•…T³²Á\Yr°ZYôX©,¤š•ÅH5צּň ¿Lµªæ\êª$KW%ª*«Šò8ªhT–Ðãƒ(Ã)U <¾/s•é}žõ&ž-Oso.0(BöØEC ý¸_Õpü‡¯ÔyùÍ=m~ºWg®­•™(e¦žËL5—™Ò?ápÙU8}I¡‰©ÐÄe¡‰Þ}MåR܃èÓ/<7E¢c®- $È”D P=T%ÕT@I55‚PRM@`4«€ê±(©& FªÓ>øûN,÷Më7TÎ¥¥R²,•²a¨ô¸†Hcˆ  øàæ¨b ¢¬(¤n¦¯ä¿O8Ã6~ G0ü·´ÖÿZCÛâAÓieÑ ÕeZYµh5‚™VV-Z­`¢•U‹V+˜hƒ5ZX¦•U‹V+Õ¼ͺ1aUÅœIU”L©¢dBåI5MDÓ,Láì؈Œi\L§3¡ Ú¡ñŽUϤLúßWØA¿à[ï‡ä|×gúôÖ¶Ù¼uþg)p6s+3œÁo¶ðkH–>J$Þ;Iʺ$êëÞÓþ3ÚCíÔ endstream endobj 226 0 obj << /Type /Page /Parent 286 0 R /Resources 227 0 R /Contents 228 0 R /MediaBox [ 0 0 595 842 ] /CropBox [ 0 0 595 842 ] /Rotate 0 >> endobj 227 0 obj << /ProcSet [ /PDF /Text ] /Font << /TT4 475 0 R /TT6 268 0 R /TT8 269 0 R /TT10 270 0 R >> /ExtGState << /GS1 478 0 R >> >> endobj 228 0 obj << /Length 5599 /Filter /FlateDecode >> stream H‰ìWMÛF½ëWôiA.,º¿Iî!€3<¶×’ƒ“ƒì‘#iv¬‰í¿Õ]Õ$¥©ì›Ãb€!ÅÇ×ì®®÷ªúÇåìñr•Q˳¾é£Òð—oÚ¾‰üoµSËíLgðîÓìñO £>}™Íu£5P?ÌÒMzéëì]õôÙÅËzW]ÕÆ6mõ¥ž·Õ‡ôo»V®‰®[þœ¾Üá—a ÖèNÍ[ßôÁtjùRJMDz¾é*u±¯ç¾‰Õ/ëy”ÞÕþoW~X«Å_XÑu½]x(s Õ{ݸÖX!|<¯ÌÚ²4ÒÒªW«OkåC½ü<»\ΌڨYìß©h¬Àªyþ·ž}”V76=÷!4á 6¤{†##øß6ñÏ@ygÁòÎa´`ÓØŽ0ãR-€G1±^ÿ7?Ãf|†7 ¿*£Õ•z÷›V׳’&e£…‰ogÁ„ÆÓ¯›ÙböcNc&#¬¸Ã4Ƭ퇽µ˜¶?üðüͲžX[¥ž®SÒ6}N[¸Ü¥$´Õæö°‡[-¬¡úµÂ§)Ý#ÿ­Ó¦ƒ<3@´¡O·osª™¾ 1:Xyc¼Cšy—§’3l±HÉe›Î;XÍñ{§éø®rð §Mª ¸ƒiîo7ëkš€àœt¨ö[SÆ+z°®aXO 1PŽNCÍ “Xrè,£Á ãrp\JÊ‚Šmì´b¶Cù9-˜ æê°‚¾J·¶1¨°A_qЗË¢IÊj«_ +Kj+$–ÅTB¡..ÿ>­˜ÇÅZ®·gŠ¥™£òÀŒ×°Ò¿DÑ„„輤f%5óÔ¢fDE5óä¢fDE5 dR3¢¢š2©y ³jæ¹E͈ŠjB=샋ºðÓP3è$–:‹CÇh0è¸\—À‚šc/ú‰šípl3žäœ´˜úÕÍîzÿµî!YÕÅzwXCŽ[ÝvCÃëQÙF=(;ŒÊÕÓE’,"‰Î¢ëPtÝ‘è<ÊÈÑG•Ùª¼F? ˆ¢3Ñ…©è:!Ñ¡Ù̃þN$ KΖÖÙ/}×Ãus‡¿¿à°‡´S©?V7÷ëGj¿»ù^ƹJm CíöêíKüú3…>™B£ÿć¹c#Ð:åƒ`JFÀS‹ *O.F€¨h™ŒQÑ2Á@f€ç#@T4!ÔybŸõ"4ÌJ±”P –„b4—+€¸”Œ B"Ç?mãÚÁÏëÃïIn­~àæÿŽðßr„Úï:ÁA ’#*9‚@&G Tr‰ŒŽ@¨äa$sŽ pÉ•A õ°^4œD’ÇH1à‰‡à¸Ò‡Ø¸‡˜dÞÁª§Vð g&+ðƒ˜±'H}¯ú[ÎÙÒ—Û8 ÐãÈïÀ7,ôàêò[J÷XÝÞ¬v«Ãf¿Ë#@ão:£Nu8 çFFU±›0د\=wºO6ð<™B>`˜.á*ƒæH.ÎÓVSÏ¡fÞÏñä9MÆTå5úYÀì9ÇñSÇiÑqÈoLhZßþEí&¸Fê?“̆%¯É h5,µ8ME£á©ä3m†§’Ë*k2,³xLE‹áÃ;„bu*[NK˜ˆ»†à™mc>ZP~ಫˆžÛVfè‚òC—]GôܶsC* MYè¹´à†&Tš²fZJfdùKR!z.«˜‘ äG> B©x¼\B¥TKØmÓhŸ«ÞQÙÐmcÊFq/³{Ý$oì*CW[~÷*%#´]ÕbVIœÌ,]>`'·¿ý®^Ý­¿@‘NµÂ§ù~ƒƒìwÉÎÔÒö×÷7ø|ý fo4NŸ«y¡7M§qò£õæe8ªyOj×¥OîêTL6ïïëÚƒ“««|ÝB°.&#N®ja|ªçZk —çßk“¦v›V‘fD'~['7MMqG¿¯ ,ÕÉÝ÷Û-~ww8qjmÎt+ˆŽ€ ä<µhQQó<¹¨QQÕ™t‹¨¨[LÊȬ2yn¢¢øxòYpܤҦ™üÞé>0è$Ð:F’CÇP1è —ÀhþŒÞàRô&7_•ÃÛ:»í¹/ÌMËQw‰Fƒ¬Åú_÷tܳ$ý=déCeuÐà“zèãx½‡Æyú¦­v'¢r&åƒ *%QñÔ"*DEQñä"*DEQ d¢¢¨2‰j ³¢â¹ETˆŠ¢BMû1%Ì¥xGš‡H²`‰ –Hp`Y)‡•…p˜ &шÝvBÑ45yìœ~_Ý®“PøN[7:²XÍ·n‹td cà¡Ó¦º¬-T©Ýý~û4ÍÜ®ëkõÇêæ¾ôŒÿP/@ÞmõúêÉóG(l(º¾=»†g/Þ^¾^\µyª¢Ôå!&“'’.”dÉSI•J¢¨¨I%I TTä@åÉ3IJrÂK¡‡K9+}­K˜ˆ»† ¸mìG Ê\vQy[Ù¡ Ê]vQyÛù¡ †¦¬@TN ~hB…¡)k†¡ù´aG&¸$¢rV±#È|[}¼\BUQKØm“ϼð‡wd±Ðzè#‹-Ž©_1ºÁŽÃÐÕ–«Vàf:&Ÿ[PWòJ]ì·[°ß«ÔËôÕþúþ‘u¶3˜ŽÑ8Öð!m¢ÆÙäÉäö%ÏËÑ©áIíÒAáp¸«“ïoÞßÖµïT/Vùº]'Ï|3õYÐŒV|J–†cÉðü{mÒÔnÓá!Ípnœîàðð¶nÁ£_“‹wÿf¾Ú–Ü8nè¯Ìc3e1Ó—¹ù-µëríƒlW¸zÒÓh9ÖÒµ"×+®}‡ýÁ@Ïè8ÉCJ’s}AŸs€æßoo:w^îl“æÝO»¢”nŸ’Ä ´$®‡Šˆ 5E¬‹L 5ej³ 5…h³ÔJ°*5=VÔD¨©&=ø*8’ˆ ´Ò_žƒ‚.­¡s&5tN•‚ιPÀy; HúOWô.#z#õù{Ö*»M€²ŸÆÜdÇÕ»»[ÐZbîŒà=¼è@oäÛÒµØÅJfëÞÁû ¼;€zXs/ ~Oó¼Ð0ã×’B¦z •ÝÓTm?£áÍ#|¿qxæÀê'iâ!Jg¸Or£ÖÕ6þòÖtqiÛ/t;?NßV¿Ñw¿‚”»5^žêµÇ·×Í®ˆðþÀßßϬ!TŒ¡~-õë¡¢~BMõëÁ¢~BMõÁ¬~BMõÁ¬þ¬ª_õjªßH5ŸƒÇåZÝ’Ž–\ê¨$KG%**ÛUAÙŽ ÷¦ÓÅ u—ªŽ ê»=êƒTݸG¹‰¤ åKI;i÷EÚ©H;‘´»"mTý)ùë!7 :ù ´È¯‡ ù 5ɯ ù 5Éo3ù 5Éo3ùK°J~=VÈO¨I~#Õ|àRí\,ÒYªU´äRG%Y:*ÙPQÙ® ÊvTÐ"ߣ–ä/nîÅÍŸ§\.·£*Ò»?¨nÇêXG~tœ^2“ïÿ¨ÏãáPn3W÷¿À:ßû꼌 eâ@“’‚(©nŠ’¢ó0]hüz³áÖôõ†"öø޵uh?V³Š…xÜWÓ?QѬv¿¶ÕýâÍ„¼‚ùAõ™L«ÚÁPŸó}³îR·¬‡ïÝ«¼¸­vûêø8UÏ<Ä$ˆTVþ½¦“AÓfÔPq™ š&£‡²Çdд=”FBUƒQ#Å_2hÚ‹žÞ’zÈ•e/:ºH¡†ÎYÒÐ9 :ïUçÝ( e2 À¶^šL*&Ó˜L"“éÄdR1™Uy(·”znRÞÝÝÚ=J˜-¥YZJS,%Ki‹¥´îö(ƒ»¨O°ãâ( ܇æ{ \¦^h¸iÜVòŒÈZ—/.=¶ Ÿéó¸ÛdI7YÒøP$ýçÌáBÿÕ‡‰ÖáÝALã\êpÀ1XZ'л*j'Ô”»,z'Լ̊'Ô”¼Ìš/ÁªèõXQ=¡¦ìTó9´¸Üs1X§u¬H¤$ÐòUœû¯÷÷¾®ÀVà¸éøCßÈÆC fà'Ø8ZPà ¢¯×Ô† oG>öÛ‘ûë*¢U7ãóñUܼº£ ѹZ¸¢EÁ-A«#!A'·¼ó†Èv;®#Øîõî‹Hb»¹éÁω?Я#MŒMÔvâ7ʾ Ðy^a›¢_¼5|º«ÜVÉÖÚÜßýHò­„CCVŃþ}|,{ä';*:{~šäkiù¼š©ôëzë;~Íî$ï˜[Úãî ,)#9-¿šœtÑSîN{·Ÿóçãáø;$­u~>~™*-º4ÌÒW¿îy‡ýZèR(ˆ¯A¸¬lùb#åÿ´å€ Õª¯ ]sv;9M<ÇÛêíaûúÛ¥[Ë%)ý€þÅq3ó,¼ÔG¼’¼4åA0ý=z´à[°{¸©A›ŽÿĆûü\à:÷÷üÊ”ÁŸ”/«&¿ˆß÷õL§U>Ô]@,0aÃi®/š±ˆö%Ø·áÜÙð ƒh/` Xm–hÓàZ¬Ø–]&nú³Ò@3z+ø:*ÙJëFºwïqüÓ„èpÙ±˦t¸,L‡É±¯¸¥ïC!&IÜ£Þ»ŸÀ ÀVoR쀻óoÑâ’6B× =iBÏ „'rJ/?œEgƒƒŒXf£&ƒŒhbƒƒ¬ØÌ ™Øbµå’0SºØð%¸ØÎ ¾ º/na¾IØS`W÷ BHõÌuëæi·Çú4¸ñ©Ê¥ŒèkYt;x´yýð  XRò[À™.ÂR¼/Á‚ÑÚ~˜¾L‚®>`õ9cNǬ~¼"32hCe^d̤…I¬ IMR¨¡óN£M ]lFCç+èbM zA 6ŠfX‡zÁ ?”f 16Ç×íW0Œ!DhI¾ÇãÅ +uÙÂo CÙÿ¨É<ÂÚwa˜¦yè±BBmŽèÑLM–±DžØä‰±å’”L¢èèbG:¯YA‹RPÓAÞf—%enb ჯS żûð„/D†{󠸼otñ*Š$ Ô&Í$ Ð$K$à‰MèÁ²ãö¤ÒŸ‘@GËŽtTÖ¬¢eQ*j’ 6À™ÿªŒ7z=WZ–ø†µå H‚¸5©a£H BmjèÑL Mj±D žØ¤†,;NsçqI -;ÒQY³Š–E©¨UH :4'çù¥r#wÉÝ /tx‹Lmj¥¦ÄRSb®)—o]ÝÎõ %w¨žŠL<£IŒ¸£Èh=VHD¨M"=šID I"#–HÄ›$2¶Ìùk›C*Xö£‚²` , Ò@‹?ðF»lPC*êˆ@ßýúº{þE$ ò¥%´=Ô0âOWøÓ!._^$–Ér|©G×£¤˜NÀådʘÉ%5R¨”A›Ij,)c&ôH¢Mj²Hß*§¡žÛ˜KéhÙŒŽÊ‚U´¬IE­"5 ëþZÚ›%?"ñc|«µ¯éŒ õ°nô4^EñÀ µO\æ#'Ð> endobj 230 0 obj << /ProcSet [ /PDF /Text ] /Font << /TT4 475 0 R /TT6 268 0 R /TT8 269 0 R /TT10 270 0 R >> /ExtGState << /GS1 478 0 R >> >> endobj 231 0 obj << /Length 6781 /Filter /FlateDecode >> stream H‰”—ËŽ·†÷zŠÞ… Díæ­›½L<1AÆxdoœ,”±ì(˜‹!ËIüö§ŠUdëR¥s]~U“¬ú?²øãjñbµÛ¬>.¦nšþò›qê†ÿÇνoV‹>‹»O‹¯îlóéËbÙw}¡÷ |ƒ?úgñÞ\]¿üµ]77­uÝh¾´ËÑÜã¿çÏ›ÆwC×·¿¯~Æ‘ mŸšåº)ÚÔ¬®àAMÓ>Ë….™æås» Ý`žèåc»Œ ò—»ÖÁÿÇ5‹÷›ænO?XóëæqÃâ¾ÌWúÎ> að¼2çÊÒlÄ¥™Ûõ§M†võ×â§ÕÂ6Ûf1L]HÍàXk–ùÿn³ø¨ cß9ü>ÄØÅ#%ºˆï…]¡aÂØ ÿ”çubÜ%l;—X³t´Y%c½yo~†bü¿þÓØ¾¹iÞÿÞ7#˜Ýè`â‹hcøÓÃânñc¶q¸`ãVœÈÆäÚ¡Úv"Û^?¶K ”ü1€ƒy…Ö›Ìæi³C÷LfýÐþl=:é¦]ú`&´`"ÓÁ´º˜í…6‰ðÌc„)a†–ù^÷‘RÈ’܉è!wÞ‰q(¥¬×Yw$A©'%*S—Ž4̵KbØiŒ9ù`ŠèX´Æ8Z·¬–Õ)*¯BVËŒdlrlC¶UH]èÝ1UòÝ¡;p#-àvû/ìf茶7-Œ`ÝÔY6Â`BvÀPÀ¹€ÌZ§z@WѤêN£Ù $ª~PbÉ<°ê 9¸¬ö‰ V_VëŠdµÌYTë¤DU­¾À,‡Õ÷uo¨úw/‰{Œgò­z_ÁüÀOʆε캊e'U/»Íe'Q-»KeçÕ²ËÁeŰjÙeµ®HVËœEµNJTÕ²ÎC8(»«G‚å#áW¢üïÖC‰ñ ÀÓàaý­ucMsû°~B/€a|çÌ[pCŒ¨¼†wØkü]bhdó´?q ~PÝ¡«èRuwÈÑìUw(±äXu‡\Vì1Js‡¬ÖÉj™³¨ÖI‰ªêì\‡Cwœ4ƒïÍÍó‡õÃvŸÝ%þåí ½a“˜ª¬y]\ÙNpË%Ô\ «èRuÈÑìU(±äXu\W¬Z@浨Ťy"ÿ{Ù{HêaŸ8Wo7ïò¦àÍ5ÜXQä‚#ëµàž .”Ûöμ*b±³¨×ZŒåRgM­´I…¦AÕ:‹¡óJ­^iY=XŒ¤ÎÔƒ9 ªVõ!M|Ua¿Ëeæ. Ô Â=“_áò‰m?Ü+§×Tú@øŽ:Át\ÿaJxR pA°ªZ@‰&°¨™@‹Í.(k6P‚ç»óŽŒÅ4àÊ”HE„)…"Žg/gRµ¨ò“KžI½˜gáÙE•ŸÍU ñR¤'³ª<™jÄ“¾T#áÑE•}Y¤^¬V.ŽÍ ’ç2[ð éKÜctÖÜb¨@HÓ¦ÞÜm>¬w¥½z¹þ¼ÿºÛ4pÎ~}Ø4W›/÷»íçýöùéKæ ÆM<¬íú@#çw<¸?mðxp;upܨ“q'¯¶¹]ïÛ%dÜléÜÄó禅¨Œ8~©ñÊœJ.Žwž’…kâ0çò SÊ“ó¼ÑüÐzìöû] %5Û?¾î7m€{Góz_7x Ä&Ÿ?0 >µËφàòý·ÖâÔ>ãþ„3\Zß'Hí»;“7ð9€«¾A=Žæe Î4Ï4îéé5ÀUWíý5‘p%q‚Mñˆ¸±ÇëšjG‹œ°:xD÷@vPdx¯£:ÏÊÇ,ÜH¬+Á0²¯#ƒ'ᧇò„µTƒA…âÑ´=|£Æz—ò©DªðFwLdèÔ%_K‘ÒÑE)B–kª¹$S‘Kºd¹$DVË¢d•ö p»~¬ØeØlªç»%ì€÷-0þÝ<æÂF§»ClÜ;êd~3ˆº5Õÿ~kóíyupä÷ÓïnŸ|´@#l×Ll~*üŒ—†„ âGd¤-\1£Ù<|hxgMã€( í4‘E¢F–ZÈ"U%K.d‘ª’¥3Y¤ªd)ÁLV É’c Y¤ªd)©®uzŠ9ÓçâA&qΔ Ι:‚ºRéH/ 9×κ`‚$NxΗ¶BŽ i®¯àô³aw¡0áf&be"š_ðrzhÁï3¡@Š‚DÈH¸‚DFÎ‘è£Æ( BP!$!¬0’ €ÆîIµ¾ƾ§0ÑôBTq!¦sâäçKï),*P(¡Ì«J0ÓÁªˆLŒ°ªa¢)s°‹˼°ª!£¥šëàpx…E­¹”Õ’,Y-ÙÕ²\Q,ËE¨Mt§÷ª#T`¿Ûü Ž}_'_¸3¡ràÞ\ŒæŽ¹ˆ• _¸… [¸ð™ _ Šdõ ‹rh¡‚T• 9¸PAªJ…ÌTªR¡35X¤BŽ-TªR¡¤šëÐ5ïáH&Ì¢©ˆTAÕ ŠƒU~p©/©z}ÅGU~t©>©zõåG³ª<š½Aªî ùѬ*fçÔGËΟ̢üàb+Ru[‰OfQ~òE‘î‹ðÀ>ä-ŽÞñ`¿rbg0ŒÔؾÃ]m4îôµÁÍ îp¯èó›_kž6»õ}ÓÜA÷Þ6_?|knèíó‡¯å÷¸Á m¯_i£G3Ðóœo´yª>Òh=vûý®ÅíuûÇWhTÿz_ñjë‡S]Á”Ì‚„Oíî®Øu”￵x'2Ÿq) Wd}-þ»v„¥½á-;ñçÔã;ºƒOÏ4îÙÖàpPOQE$êIÔ¨—C פª\ËÁ…\RUr•`f“T•M%˜é«Á"}rlŒT09ø¢8)4é¼’|jQž“)Êsº$yNˆ¤Î‹’TÚÂì g)ØÑ¾ʾÐó¾p·ª±IЮŸr³𶛘Y?ÝÓçMóöîS°ÜEPblú+lR€Ub Ý’õö Jo ÇÁHQ=IÔ8‘C '¤ªœÈÁ…RUN”`æ„T•%˜9©Á"'rlá„T•%Õµð­ÕÕƒ\Jêœ,I³!¨órq^Ž j]?ÀñD³;®­Wk8là±ØµSÿïÀà}ú]^û_ûo®°ÿàØ¢Ã$Ôþß•þß—þß•þßåþ?”þŠ.Üàè’F‰!rh!„T•9¸BªJˆÌ„ª¢3!5X$DŽ-„ª¢¤ºÖÁ©€ˆâA&qΔ Ι8畞kóBÎ5tŸÐp¶¢ŽÑ0 vTP¶ì[gÈ×;ªÆžI …?“+)Ñ”gä>+ ”P@‰ JÁ$ðpŒI‚“å“®P’5 1°0’E1´’E9”ùÈ¢Š‡Êt”P1²°‘E 9½5õ^GCVR(©s–$uN„ ÎkÄy5‚¨’À|ýÁe…ŽBã ^’ùˆ¶„<Øí¶-îòOùÓ§lÔêlC³ºš/:÷õöƒÏºý\[“O@Áöž_×OßaŠÐ¼à`€5à?GjðFW/øM¶9͹ 5_°Öøê˦7ŽÜÃ¥ RºÙìÉÍ…€HkX²÷àÓÈê5ŒFŠ"럱û‹SÕUE¶fêì!—À€çãQqšÅzȢɺ.²öYÖ>|˜/AW|ªõ|y2Y;“µYùìR]»YצèuMëˆïG ° TUŠ”Áê¬R$- k•"mQ°x[‚=qA¬š«©‹R×!_%b<=LµC¹ôhI–GK6Z¦ëÀ2"w;ú—‡[Ö ÝkûºðP× äR¯v´v«iŠ)Û‘Â5Ùц¿«å(kÍŽd=_cv´³m¶Ãq£ŸK¸!¹á‡šB¡~°¹!º‚Õ ¡Ð ¬nä`× ?ÖÜ Ý©ÎëÐôè\t‘K–dy´dáeº,Óq r#QŠ’¸ñ%¼û*•¾PKWÓÆ­í–¾Hö¸«®^­S»ž©¬›šDÜoÿ:¿ýcgbvføß´©Nçr+ÎDÎø¡æŒPèŒlÎ…΀`uF(t«39ØuÆ5g„Bg@ªó:Äñ ¦9 @YAGVÐùQ£þÀ¶¾B­¯3´Qh[}¡ÇVßZ)ZkCè±Úð†V †ÖÊÉC£ÊqFVèle%ôXY9#+ôG> i×ûëÍ ý`uC«ÝÐV7o€òNw@îÒ¢;hrOÞk{ÐÔ§ÒĽ׶â½v½Ÿäó´ªéÿÝô¼ÙÊÕõD÷aÿ®.¹ïÂãÝëÖþž70z¦–Gt·èz º\\=F~¾|}à|·j¹Ã~yy^ñÞ{ûú·. ›ùõaâ ¶éQoè‘© ¾Ñ%‚Ʀ`ûþǪééÏžxïùhÚš7ïÏ«6ݼew”ký|ɼÂÙ|Ex|xß=Øš›¡4lÖ(Ö DÖû¡æµPèµlæ …æ‚`uS(t«}9صÏ5Á„BÁüà£Ð©ŸkÓÔ÷ÂÇ9Õ[2¶tùØâS›”OegHX»vÝeíäÖòµaí.ï6Û{êSNº±é¨ì¥ù¬ùéKó3r‹37?#¹rÒ’,תÒ:w?C8ßiSEæ=ËX›—é®ú¾Ù¾NÕï?¯NèÜUåè=ÉêŽKx$y䇚GB¡G~°y$z‚Õ#¡Ð#¬å`×#?Ö< =©ÖuH§øÊàœIZ¦\h™ð ÍÔc6ËB;R#>.ÊuV"Š×R¶qn×z\±ëP]ìôÝ Õ.áÍî«|–#°¦_?mRê«›÷ôåñ§‹÷«›ÒÃtÍØTåOõ—Ù:>‘HÑš¬«ÏÙºuMA*;öé‚¥I‰´iÞjÓ®éøÖÒøêŒ@¤ŒªÆD€PñE Ò„Š-9Ô“ÅTW"U@z5õ‘cr¶—_—æúÔ²äSK„Km®.´Ù¸ C—ÛX/ÏìKûÆ—vö¥}¡;)Ü2c;äÓ¥µ:oš|º¤õtIëœþˆO—uÍïìtiùúDgVä¤ú•û·òóÛ»j~‚i¿k{š´D ÒÄ5O„BQü`3E(T«+B¡, XmÉÁ®.~¬ù" R×!÷h‡  ‹\z´$Ë£%-Óu`™Ž‘1i¤µY1cV¦eþAÑ,M¬ûJCñ£1?ÝW ‘Ž›Ø­ùí™5^E&œÓý¥ âG¤ËOM߉$­IÒÌ’t&ÉpêiÒóÓ×D ÒÄ5M„BMü`ÓD(Ô«&B¡& X5ÉÁ®&~¬i"jR­ë0œv‡}ÂÔó“ƒHeÂtÔ¨?°­¯P¼¾îÐFý¡mõ…âÕ÷‡V †ÖÚŠkÃZ)Z+'íWŽ;²B`++¡¸¬Ü‘ú#…rÑå¢IrÍÒ?y§›^¤Ý%ÒÇÜ&4¶éõkÙôšú”7·uˆ{¯©â=Žö¢ë³êü_¯÷òíÓoM'}¨.ùÿÇ»×­i·éšZžÈÝ„kJc’ç™gÞƒç'k;yžw«–÷Ò——ç7÷·¯/Ó*Ñ&\]mæ×‡‰÷Öžo¾|]ôÛ¾­NR_SO˜¿ÿ±jzú³§Õ ÏcâͶi£ý¼hÓý¨»õ¨Ÿ/™wC8£» ò»;q3”Fí@rErHr?Ô4 5öƒMT¡PT¬* …*‚`•-»²ù±æ“Pè“|–EŠ‹Æa<\/Ríâ’L—ty¸$Ä£eR• aí"]TM;ÙÚÜûô¢ÝÙãî»4?}àF]:÷ð¸«X¦‘TâO,Ñzd,MQOMQ=rS”rS4pû3_X¦¹2ˆiÖõá|§W‘!ØïRûuW}ßl_§ê÷_¨ùbU¯ßÿ±§_ݱÀ0È0?Ô  óƒÍ0¡Ð0¬† …†`5,»†ù±f˜PhHµ®Câ¹úP\·ü½‰à¼‚ á º?ª ¬ë«¯¯;´R0´®¾R¼úþÐBÑÐRJqmøC ECK唡ýÊqGÖ²RŠËÊY ù(üç:¥åíoÈP÷¦ê´*¯5B?Éçi¾Ãí¦çÍV¾¨.ä•ö³–þlómâæˆ¶ÜÜu®=Š—“<åÿk{ûßžõõA¨É-É ‚M_¡H_¬‚ E‚¢`U0{ ‚X³L(² …¶HéÍEeÜ_çTlÉØÒåcKˆOmR>ýïíQŠY;irwÔŠu;î‰]|hÍÃf÷•?MÕ•¶0)ÜrÓŒ#%P£–£Xÿ…ÇÈQ Q£.d,nÖ5¿³Ö¨ ç6êÓ µ]#ÙVýÊòIOFÿOÛ»j~ éÀ¾.òŒ€`‘`~¨ & æ›`B¡` X Á*XvócM0¡P0ê¼ñàˆ[dú.2éÀ’)–LÂ2ÓCV&rÈÈו–NÕQ\ù>l^î©«ŸW'Õå³>EàqÇç í4;±^*A2ÅnÍoÏì¢Ð±(jýãK‚^OÚ€J?QŠPåÏ ¾hu?CXön¨Uý aÑû¡Zó3„%ï‡jÅ[¨[ðn¤Õû a¹ûéÍ©oq¹ût‘B–,y´$¡e®,³q *úf}ëe÷ØÛ Q¯õ„˜÷ì¹÷{O÷XêµÚv˜ëžú»‘ë>¹êÃûwZóž5ýý\ó­Ö<À5O“rªžÖnQÙ Duï‡Zá …•ï[é …µ‚µø…ÂêÁZþ9Ø­?Ö ©ÎëTÀ§‹\z´$Ë£%-Óu`™Ž‘5mðq©À:7Iq©÷G$ß1¸`¹aIÁ{Ѭy;—!šmi’Úr"´Á†™/#_F¬MŠ"IŸ†¨’¬Ih |íˆ$ñCM¡P?Ø$ %Á*‰P( VIr°+‰k’…’€Të:ôo:ôôÖ?9ˆPVP \A÷GúÛú ÅëëmÔÚV_(^}h¥`h­ ¡¸6ü¡•‚¡µròÐ~å¸#+ô¶²ŠËÊY¡?òQ(—ÂQ.…4 ×,ý“w²å5c¤X^ Ûòz=õ›ú”·žuˆ{¯}Å»mWò™6@ªÎygüp/_ý6måMuɯMx¼{Õo¦yû¢çkj|kmúžVDo~º‘Ÿn~ж“Ç{·jGúÕ——ç_9ïo_©3I´ûVW›ùõaâÝ´éAy§ôÛ¾ÑóöuKÁöý-ÁžV'<­‰÷ãz¤Fýój gÿ¨M̨ŸçýºÂÙ*òÌäw÷7æf˜—ÛwÁÙy…ÀyªV+EVƒ`õV)ò‹™J‘™(XÜ+Áž{ VõRŠôÁGaY¤¸è"ÆÃ…ðð"Õ..ÉtqI—‡KBÑ»pµ³¶¨Ÿ7ÛשÒ¤VèoU³']Ÿ¸ðW‘W~¨y%zå›WB¡W X½ ½ÁêUv½òcÍ+¡Ð+j]‡–ç @s.}jÉò©eÃ¥6]Út\® ÍH/Þ¶a(ˆ#“½”(Ér·Ö)ÐA‹¤[»‰‹¦0¬ÂPѯ_RïóÎK6%?ßùx'’M:èwå•ABòõ×0~/õ/×…§É°!½c]5MJÕ­Såçã¸?ý9íÇÇñe8®¾ýN¯o«¾Z\üÜ·ë<†üΞ©F3µIo“Lµéi—þ—¢õ Ql5U!ðvÿsÚcbñqÿ¼H£ÈÈ#~·¸¹û’§óµ$Ñ¿vŸîõéîc}sĶÎ$AÈ‚ˆ¥D¡4ˆXlAJƒHÄD¡4ˆD¬At1 "ÖZ…Ò ’VÛ:(©ëuÑç»X"ïQ‰¼òùÄ_–¹j›~8Ï\7ËÜýðoµMÞL›Ã&ÄìҼפX.ª`{í4yŸÉ®·¦Z^î&õvMic†Bsð©¡Ôü;Aj_,U÷NšKÕ»&…Ö…Jsî©qq{µõýù`Vn ˜z 1µ.aj€Ôæ ¡ÍBfæ †bù¾Ü ‡¿¶uW!û¹m»|Ó³Sí~®üìýìÅÓ{º)<ö…HM-¹KÍÖB©¯±ØŒ-”:›ˆÕÚB©·‰XÍíbèn¬5{ ¥þ&­Öuèòp™Á1õ^bjÍÂÔº©MB›„Äàéб©gþ.¯^F»:¼?†'y~”+øN–núü}~}i¨Bx륡¿ˆDh³ùI$²H`©EB([$„ÒH±FB(k$\ #µ ¡4¤ÕºÓÄY$0õ^bjÍÂÔº©MB›„$}ºa4óHx"â«D,ãp’“uŽAÓÅ>ùXb=çïã1häû¿ñ ´„8 ŒÁ6®[pŸ›R Œ„ 5Y°T €HÅÿ™ý‰TÜïRd~¬Tï dÖ'íµÖ‡òî)¬¯²w°Ž°iÉ„ñ%/Tˆ«êz ¼²ž ®B\W[à•ÅFu’ºâWœ€ê $uÅ&^—Ø”†«ª…^±(+ —½Æþ 0)÷ýÁ endstream endobj 232 0 obj << /Type /Page /Parent 286 0 R /Resources 233 0 R /Contents 234 0 R /MediaBox [ 0 0 595 842 ] /CropBox [ 0 0 595 842 ] /Rotate 0 >> endobj 233 0 obj << /ProcSet [ /PDF /Text ] /Font << /TT4 475 0 R /TT6 268 0 R /TT8 269 0 R /TT10 270 0 R >> /ExtGState << /GS1 478 0 R >> >> endobj 234 0 obj << /Length 5202 /Filter /FlateDecode >> stream H‰Ô—KsÛ8€ïú¨9[C€ Hæ–ØÙÄS•GÅÊìÁ3Æfl¥lÉ«ÈÉæßoÝõèöLæ°U[©Ø´>5@ý‹ÙÓÅÂ+£Ÿg}Ù{UÁ¿øÐö¥ïàg[Ö¾ªÕânVE¸¹ž=}unÔõ×Ù¼*« B/gá!|éûìBŸž¼+澬õ›ÂزÕ_‹y«/Ãõý¨êÒ—UñÇâ×Ðs‡=CC­©:5o]Ù7¦S‹ShH)µÛ–ue§Õɺ˜»Òëþú\Ì ôᦰðón x9ªó-~a ßãÝHp›ÞF者nëFÇ‘Y›†fš04ý~¸•k‹Å—ÙËĄ̊¥šù¾tòVÁ¬šÇŸ›qöYmUÚð¹kš²Ù#mÂ3#ìÆµ¥ÿß!ñ-ظÇ Ø”¶#fêA{à)&Ö‡Wðð+,Æø$àwe*õF]üQ©«Y I²Ñ‹ßÍÓ”ŽþºÏ^Ä4v¤±‡w˜ÆúõòúF½XBJ@fÃXôï:$Y£aÍ»'•©ìïE17•這b^W½‡§ÅÜ–½>¦­ ÈÖ•À߆ۇQA¢w¥ÕãjûLµ1½ MÚ&¾F o&hâ*ÈÄ—ÎEÒ»ÒîKçdZS‘¯AÚ]fkž¹°€è5ê¦ìöôÖñ½Yè­ÆÞl¾´Ëú¾4üÈ¢÷‡°~ï%kòŠ‹ªm—é<%^‚ “ M=älc )µ7Ç8é†T4N&éŠÞ Á¤^fíãc“€HE…©¦uhC÷-¬íÁT³4Ï%OÓdñ4ÍKÓpY˜†ÃBI68âŒÝ‘ÍÖ9óýŽq]¨BŠ0=úVÛÊ‘¾ %Šáu‹ôŸ¡béõËÂêê 4ROº¦Ê’´ú]ÐÐëÁ7ƒ=OcæÑûzWãðMÝ×ï^„Fäjw$ìAÕs±sÌ=‡úÊèÛï̬~!‰4z;§ŸÒgñxÁ}%aU;')‰PR’MJ"•䃓’HE%…`R©¨¤LJæ`VI>6)‰TTR˜ê¼µ•äéÎ\rtš,ŽN³ÁÐi¸ œ†Ã@IIHÚÎí*ÙO¼¿VÃ&xp|â¡úd½‚ Tª^^?l°Hü³Ï´Y Ž»ªòù¸3ÚÀ­È6}xü˜N:›|ÓoÃèôø-žrQ°¤Át‚B ñ’N%øÐ¤RQ'>8é„TÔI&Š: Á¤Sfuâc“NHE„©ÎëPu¢N<Ý™KŽN“ÅÑi6: —Óp(èä[8düOžpÏ¿â÷ã%>lÕ‡`PÈvkó™GvÔ.ÛÑNv´ú,ØÑƒÎ^[:<Ô†xÚ,ÑQ0äþ°{ê\ ìfT«õjŽÏÄþýá¾V¾ëð¶ÊiEPÐJ%­ˆJZ Á¤QI+)µ"*i%£VS0§•KZ•´’¦šÖ^÷èÊC,¬†Ç3\¾ÈÄÕã:Lm5­l„òÂrí&ȶ›=ByÍÙv òíR>D(§Û.A¾]J•Ô.Ÿ)\³ÄØVSE(ç×,1¶ÙÇlO ÈXµ€Õ…]ÒÅÝŸh;lÂ:ßy;ÌW]ßSå\•akéµ=øÝª°Ë…ûí‰:ÃàJ 騇ëQ½ Çýúêá îKð:¦Â÷a7ç†ßáæ_¦ /ß«¦:þyQ‡¢|»Ý0d½üô° »«z;ÄßwcØ[}ïµ€÷³Ð7‚kx7Øø!8}þ£0¾vöÙ.l·¦®Âä·¢…bæÕ2ýý&ð¦Õ'ñþ°¾»Ã~ ïbÆ: }F( ͇&i‘ŠÖòÁÉL¤¢šB0é‡TôO&Çr0+›LB*ªÄ? §Er;vÇ Áá©fñ4™,ž¦‹ÃÓ„ptGqphg›¬Ý”´L¡¬•ld’2BÑI~zóÔÃ\ îL!G§Yâè4 ÆÊÀi4 ”.$f…’]Ä#(ø³,jHR86­‹¥Ñ²pL%ËúdYHÝÿ±e޵,½}<»pDþ¤f°‹ÔVò ¡$šLC*ªÆ'׊² ÁdRQ7!˜|ËÁ¬p|l2©¨œ0Õ´&¼îa#lº>VŒl¤ã W픨Ð0­/Qy}Ù¦‰ MÓê•WŸo©Ô4æQ97ø¦‘JMcæLMó™Ã¶ŒPh˜ÒЍœVlË…–…á®Òx*’úïÜUº|Wy‡¼W'P¯WëžÒ4UÙØÿï{Jã+ñ,Ê™à6˜äPr—MrF(¹)„’|Jî ¡$W åÜâ#“=Jòð¡±iYrÁq|1‘ðγxšDOÅái28:‰£z1iÀ¡äŸë•5 :·P‘€Î·”Ž?Ôdzpð¶°¦©¡¦©º'ár“kšx=ˆ5ÓÃÍ¡Õg€:ç ¸I%M­cÖMUX FÂ:­R¡>ÕÖqN×£:ß® À_Ï¢{pͲ¾1ǵ›Ïµ›þj(X˜°ðº%T˜¥ƒÿ¦l)_vôu°½ˆ0BIR>4YŠTÔ”Nž"E‚ÉT¤¢ªB0¹šƒYYùØd+RQWaªiÚ²õGažj–æ¹äiš,ž¦Ù`i. ÓpX(\[Iëà þ ž­¢|[P(¤ý*Z3¢‹p$…ãèÐÅ¸vÙ˜mBò#”’ŸMÉTL~>8%?R1ù…`J~¤bò Á”ü9˜M~>6%?R1ù…©ÎëŸäÝM5Cwæ’£Ódqtš †NÃeà4JÉ_…DØ=šœýeÿ}< [~YeØ’>P'7x^tz ¶ã&fòâT-šiç?·a‡ïËÆtF]îØ`Çh’I&UM6ÉjÝÙ¦'çTÖÚÌ1b>© ý6xÖèñÛ¸A¤¾—AÚ£jFVu’q%ãøÐdRÑ8>8‡T4N&ãŠÆ Ád\fãc“qHEã„©¦u°åñÞÌÁÍJŠX\>dâêqä[¥•E(/,×.A¾]Zt„òš³í"ÚÅ|@(§Û.B¡]L•Ü.Ÿ)\³ÈøV)‰Ê9Ä5‹Œoö1†uº©°P‡/B9vJ|­Ò5¡®ßÙ*+“v,G…‚©ÊZÁŽÓCîè×Ãæêr}ÿ£¨ÃåT½Ú ôøõr¸…RúÝiÜ€¿¸º>¸ÔÔ©¤‹.B ¡oŠ0½ õ 섪0VÓóˆèÿе‹×Ëõ*~çj¤oŽÛ$àOãnKÛ›1þ~=¿Úk3Œ2¤Œ2ì®>µ2ÐÇû] ç¿~šúú^ôy$ôí•úÕþ;ŽÃv¼RŸR×Û›<ø%^SZ};¦GØð‡muìc\ÅɯŽn*6-ªmþKz¹-¹mÃ`øUt)Ït]I¤N—M¦ÍL;Ýä´k%qǵ¶¶ÏÑ>pq¤dpÒæÆ–ô$H~Àš×Wæ¹ãHý—9ç’˜ËgN}e~Ø~¤M†fs»a³ÉSö$fÛýáé€jÌûÔÇ´_gÙËÆÙ/¨Áíì:ÙV‡ÿ§iÚ4޹0L~JçÓ^,´‡ƒö4©#Ù´OòwÙ&Þ¤à[_#ÞÑzH™?ˆý{ȸIÆk¯ HÔlFƒáÛ#RÐ2EX&EÜ|OŸ¸‰´ÈL‚qi]¸Kج›´[Ø•/Ú¿¼ÓÎòã<ùpû.5›ôI†çq`¯OVªšï BÎ ›QcÇ7ü4°BÙÀ‹ÇRv{·>]õ†û ¡«æSŽwåA„¼G+رFW°æCû#ÐçÒpé7‹ÌwÜéôð‹D QÒ˜ÔÇt´±»ùðÑxÏ^ܾáá^0=™úJ˜>îßÓŠöù$‘’oW–wÿÏ(<ðëá#qíÏød"/\¢,Üóž!9-ZŽH¿"G¤š€bd¡žý0f‚:šáÛîé.»Ý b/™¾ƒ A¬6Ùó?ùûaÜo`¹®t±Æ° i®˜Ä‹-…* oÔF%ë'“¸²è{žìf䃌XÁxÛ=- Qqä¯óä` r®ógßÁÙͦ'vØ%8G1MÁóå;±‡©Ž¿GŽ[Ð@¢mð~Ü@ Ó†ÏCžt±˜ Ëí^?Î'òt†šíÚ 3¼Óà¯ÉíÔ3ÈøhµaõÆì¨ 7ùåTÒqßl¾œÝ¨ÕKqd’òp´æOüëän”ïPT²Ãn7ý±ê`A˜¶ð72Ö7üvä7i&¢Ÿ®üI΄̺•œþÕ'h»lÐwÜeª]âbý¯_™‹ u É  ¤NF6\k©™JÜŠëÛJêÌPÔë*B­ u&­L¯kT,jÛu™­ºb®lÙcªlé1U¶Ù«isÜ®¬º¶j¡}µ¯¦ñx¨Ïa65øòW0óv‡ç¢ÃkFþrž¹@›†¿ !’€mZDîgj2’øE}ù}USC|Þ³Õ#½0$ÏßÊ…²ê 29—MG£Ë&kàCzÛ¬ ¼'Ú–(vjZ6ÕùwºrlQìD‹ÞK—b]£Že ë uwvݬK@¢sL¯ŠºF-ÞÜX,ñît¶¶œæêÈ:![N~Ù2ßó®Ü·ª¦I\.r,ä8õpöW71´õüV´¨‘Ó× –Î lÃLðì⋌m«Ì°êCc[ 5,ºØ8¶Ì ì‚ãL9­L-mP¼˜±¡.fd©³Ï†ºpÊP‹SÊ:® hCÂAëªL0VÝî S@‡{G%OÇ©kõ-|º?r’j)IõX„µ|©!†Ý€ËÍ^ŸG1ÁZ­Ç$s†OÈ=pUE@Xõ±­]@[Dv±çÃ[]ÌÈRgŸ uᔡ^"á&4 >æ¼YÊýãþpÜüa£¯”‹TKa==RÆ®iÑ÷¬¸F#Õu…\:q„E7ŽØ¶Š «>&¶µ`¢‹‰c˘ÈÀ.&Δe=ʵFL1ÍÇÕaKLY¢B¶\ RÍåg-wÎ& BYÄX¥ðP毱H ðy”[Y6ßÊÎ舅S\„k"î>‰þæ›¶²÷¤¹[o[òÎó îÆ›¦2ÓП$ø³·UŒ£ŠÃ¶ª>Ùª»ùšâ›ò3Ñ•P Çe΀'L*_ÌP˜Ÿ _E(Xõ©°­ ].[CvɰuÆí\w\¢a«iF¶ª>›jrÊT½ÌQÀ=µZ†…2……(™ƒÏ{¤+^E÷ÏØD¼ÞR‰)‹DÊ"—­ûéSmZiN gˆ””=œœÂ¢›Sl[ˆU ÛZbÑȱe€d` gʲõ\—\d«iF¶ª>›jrÊT½ØRöÖø›b‹ÆŽí   dÚÖÿ‰3E\×~…꫈ «>&¶µ`¢‹‰c˘ÈÀ.&¶ñ<ã¯Pmu1#K}6Ô…S†êÄ™²ƒÚaY¡V1Å™–1yþÛqûô+ÀmìMÕtD 3m 3-btÙ¸m#r¥ÈF¦LõJ+õJ¼„¦ì+ôÑŽ<"z‘DZ¤Du‘r¬)=¤<[BJöò¦œÖÃ-jlq1·¤±Å…C__Дm Ë O—p*§ŸÚö2߬ ø}Dˆº|zúkE¡eIP%±…óx¬y*žÑÒÁÖzÆ‘}L[a4Û’IàA]LÓy¦ÁÁV“±ÔÙaC]ød¨^h©ûuµ,nËFY(zfáís>|±vi#,J8¨àfCPY6ëÛ×M‚¡Uê3šçã„ÝÐaÛ*,¬ú´ØÖ‚ ‹./Ž-#»Ä8SNëݪ×Q3²ÔÙgC]8e¨nüˆ!–eo™ª–¢‘øq›#MN€4ù@‘£Ë?qòÈD—&ß Ö(„O[tø¬øDŧ9Ã2Ua׭᪊€°êb[ ,º€8¶ ˆ ìb댛¹–¹ÄVÓŒlU}6Õ䔩º€Ø´xý^ô†¯?wÙíÄy¤ÎõÚg/öï¡Ô Ð`ZAU.÷"m2¶ÓÂQÝvðvq9jÏ@ˆJ·®½¢"(¬ú ØÖ ‹.(Ž-ƒ"» ØÆ:ã8W(— Øjš‘­ªÏ¦šœ2Uåû·oaàìí{; Áᯛ«%ÉT$tÃáºU((»ƒ įMöò\š®…:ZŠÜfÎJÝ-!àTœ¬Ä¢›•l[e‰UŸ%ÛZXbÑeɱe–d`—%gʲÕz±¥uu"VåKGä•dÑ_IsTUížuY½²ÎfߪÚ}Ë.°èï‚ݳ¨NϼGâ´¿GfתÚ]_Wÿãp endstream endobj 235 0 obj << /Type /Page /Parent 286 0 R /Resources 236 0 R /Contents 237 0 R /MediaBox [ 0 0 595 842 ] /CropBox [ 0 0 595 842 ] /Rotate 0 >> endobj 236 0 obj << /ProcSet [ /PDF /Text ] /Font << /TT4 475 0 R /TT6 268 0 R /TT8 269 0 R /TT10 270 0 R >> /ExtGState << /GS1 478 0 R >> >> endobj 237 0 obj << /Length 6423 /Filter /FlateDecode >> stream H‰Ì—MoÛH†ïú}1ì~{‘d°ö±&—™9(6ã(°$C¶1›?U]ÕlÚªv/³ &©—o³»ºžîêw«Å›Õª5Ö¬¾.†jhM ñ¦ª¶‡ÿ]åÛÚ›ÕvQGñp·xóþÚš»ÇŲ®ê¬7 ¼Á—þ\üVœ<ûW¹l+_\”ÖU]ñX.»âÿíFã«¶ªË?V¿à—{ú24ÔÙº7Ë.TCc{³:‡†Œ1ó¶\¨úœíËe¨ÚbG—¯å²•<”þo×,ÞŒæú‰^XóuÜŽ,>¥>ðèC]ùÎ70Bøx™sih¶Á¡Wë»Ñ„¾\}_ücµ°fcíP…Þ´ÎÀœYÆÿ‡qñUººrø{hšªy¡4®Á{Á£+ô™ÐUí#Å>DEí…è;¥ñ€måzÖ¬Ç z1Y¥Äúôn~Éøo@þilm.ÌoÔævÑAÒ`6:èøvÑØ¦ üt¿¸^¼‹i ¯Ç™´.¶Îᦇ®qãl¶Sʶ”²æš*ûºø°>ÜÞì~”®Ãt{XóíãÍú~4ûÛg¸œ7‡ÍÃÓf¿{|•ËÖVu Ä;s(¹¸¶Ë}ÀLï ÏWÇWk®({‡bC¿Œ;~6%¸z`#>a×ø…Ô§m @Õ9,03Ð¥Ø9ßPŸÞ–¾¯\ñôt(Û*›/ÏOcis¹Ž×íX.o{øæª\íCAÂ@˘Óï?J‹]{(—uì!$@ÝWMñ¹ì*[|‚gÌÅžŸ/Poºâ ˆ¶Å~»¥ïîˆZ ¯kâHpQÀŒ‚Ô[Æÿ”ß'EJHâ*7- ÑÍj;[aZ‘ÚzXç²óï3ª¹W¾Áÿs¾Ü«_vðe?}2¼‡¡²êˆQ̓óð¢ÛÞ!ϊ׻>’Gªí[Æ>é f‘f>)æI ¬0ýñ<ê,Ð’š#)©9T‚šc!ˆy8‚HkP8Á[í&Þhçì§ýÅoúàþ wL\}.×[à Ryq¸Ž Åï2n pÕ?ã¿ßK`ƒ·\¹ôõÐÂÝpÓ—HU ]-,rZCögû‡Íxk¾"`ðx ÖöéC†Ëþ§·è)I»ê4³I>Ü÷_¾—Kdzä^Ó Aã4 IÔ€”­ HRU es’THÅÌ@’ª©˜ÈÉ,){¤ª@*¡žæ¡ž¥p8 µ Îb)©9X’š£!¨y¸‚˜‡#ˆÀœDZ;@á„Ͷ¶þhæã9lêÏ\ùÄ•Ë\…‰«Pü·/[@Qj ÃO`ù—`y‚Å'°ƒå‘äLÖô˜DDkV˜ƒÕE°Ž±ªã¼)X‘¨a%[V¤ªXÉæ„©*VŠ™±"UÅJ13V“YÄJö&¬HU±RB=̓mU¬duKIÍÁ’Ô AÍÃÄ<AÔ°‚KæØ€\½Ú¶ *}·‰é …#$9\¾™óõÓirÌ™KœùÌ™Ÿ8óp‰G¹·\æ ̽äÌü)æÌ3g¸cÖEzïÓÏ´y 3Æüœ±–7¯á5em¶ÇS)cQ¡L±2e¬j”)f¦ŒU2ÍL”±ªQ¦™‰²l–(S¼L«eZ¨§yp½F™¢Îb)©9X’š£!¨y¸‚˜‡#ˆe-œZ¢ì­ëñßÀž&û×$™¤3"éúÿˆ$`F=—±¨‘$[I¤ª$ÉæD©*IŠ™I"U%I13I“Y$Iö&’HUIRB=ÍÃqMÅZÛh.I¡©åļ©§ÔbšQNM§Z¦Jm¦‰éÔ,«Å­Ø&Ï?H§&_-‰Å69-¨M-'´:Zj1% H§2E«¾¥&uÖµ7«ä¤YÁ<ÚX·ÃÝñ,Œ‹Ö8,$ÚŽÊr[W¸¶t…ç«KWƒ+¬yï陫æÝxXßÓ/æŠ HÐâùö‡¹ Ûýíó}zW è–­©_âÊë }î¬ÙPÞÄJÇ7ÔÁ·¥ï±®y:”xØ|y†º&àç/×ñºqum{èê ºì $Ü•Ë#súýGiÎâ‡Ò㈬¯ûª)>—°Ÿx½îùùõ¦ƒåÜÁÓ~»¥ïî^¯­¾­uëTD¢—D `Ùš0%U%U6'IU‘TÌ ©*{Š™ ›Ì"d²7±DªŠ“l>)æIªgÕB<’< µ(ç`Šr—$ç€Hj”¤ÒrN`gÄÝìXïawýT—Ñ3w©ªˆ‡‹õT†˜_?±aÈ̵‘ÃÚ¨>ÇÚ¨ðA¬¸4úõ#4чÐå¢ès‰þõýó˜j.nŸ>¼I€ÂÌüY¸”þ?}ƒUhŸÊ£[sÅ·›#JR¦p5 Cј(Œ¢ ¡hM FQEP¶2QT”­Ì_²Šø‰ÎD_Uøäðrè=z´RDV§ÊjŠ’¬¦@ˆj«(¦Ñˆ¢v|¨¡Ú¯g49;Ñ^ÒT˜ó5l_°/ÁwZF&2uÿ3r3'šé8Ñçxœèa#¤í©È Åg†¦‡ ¡Ák„o6| q7‡&dh‚ ìš^¥†D Ùš¸!UG6'rHUÑQÌÌ©*<Š™é™Ì">²7ñCª jž‹ÝÕ’Õ)–²š‚%«)¢š†+Ši8¢¨Ô 5eN›j^w,çâ®Ùl‹-Ѐ0!V¡Ã•°jV>cÕNXµEj%–y0+v⪙qå˜+—¸rÌ•Ë\YîÉŒ«&sÕ\Õ5¤pE¢Æ•lM\‘ªr%›W¤ª\)fæŠT•+ÅÌ\Mf‘+Ù›¸"UåJ uœ‡f l”¹RTŽ¥¦R°4•¢¡¨4\E¤á(¢ÆU§¢0;^Q™GD}ÂãL_|Åd†m >›S{ŸîbÖÖð¡Ê†ÐšÕy>šÝLç5lëê°‰Pfü _×»Ÿð`’`.R,!±’l#»xl¤Ã"¼`{k^}íx-xÅ÷ ó}m—¸k¶xÜûÛènú^?ó±¨Ð­X™nV5º3ÓͪF·f&ºYÕèÖÌDw6Kt+^¦›Un-ÔÓ®øÀøt_ÑÙ´Måz 5|dk‡TÙœð!UÅG13>¤ªø(fÆg2‹øÈÞ„©*>J¨yðmoÅ)’¢˜"%Š)’˜F*ii ’¦q<\NV›oyWà ”–uå ÞÒFw…ýÎ\>§ôËIm-œ‡×›T#oR×q“úð?ؤ_i(ic¢1!E•0Ñš‹¢Ê—le¼¢¨Ò%[®dÙ ­(ªdÉáåÐC~¸£le1Àäkç@M¤Y#Q6ñ£I•N³Jª>­bÓI•›N³Nª>írÓ¬*MsVª§…Ü4«JÓœ5SÓrÚˆ-³(7œ’ŠT=«Ä–Y”[>) ùfµ‚ ¬`¶mU‡¸XÒ¯–°b…ùji§ê¿õ´ZÚºÂUÆž¯.=\ò`Y{OÏc‰Ëèn<¬ïés=‰ƒ´GsG…¦Øß>ß§÷q͂ښº(.絇¾Ì9=öo:¨Äå¼ôqµ|:”±äøòü„çŽ#ëxÝŽ¸î¶pZ*VÐe\¿I¸ƒã ”X`N¿ÿ(m ¯=à–ÐãÎ`}•Ó粃õ÷®äP—õü|zÓgqßo·ôÝ£ÕØú\øQ¯ˆD=‰õ²5qMªÊµlNä’ª’«˜™MRU63Ó7™EúdoŒT0Ù|RL“äª6“Ù¿žQ-«)’²šB%ª)¢˜†#Š´$·ðóe°Ü6r„áWÁ-ƒ-‹Á  ptD%V•%oLÅU©Ý -"6·$R+“ÞòcÈO¼ÝÓݘìfå’ª$’øñ0=óMw÷>óf´7»õêa³ÿã‹#Áƒ»!1ùé‰]‡!ÖéaѠǰ2=¬Zôf¦‡U‹ËLô°jÑc™‰žÑ¬Ñcx™V-z¬Pçu¨åŒp6ž„ZQ'±ÔÔ1Xš:FCQÇé*â8E´èÁJ)Néé2=þz¨¿m˜ž 7ÎÁ}Ä;BWÏA¦<ãeß{ŸóLpóLp¸ïá&Ì3}å•íßBÚZÛŸDkûëVÙþ¤šÛ_7Ëö'ÕÜþ†™·?©æö7̼ý³YÝþºW¶?©æö7B×!\'ÉÃP'±ÔÔ1Xš:FCQÇé*â8E´¶¬áÇÙäñªNRQÅ9@;=ÈNŸTTÐ~A" M_/¥˜Š¹˜ îë¬Ö _eè‚3ÑpܗĦÆ5H Ñ"A· ¤š$èf!T“ÃÌ$j’`˜™„lVIнB©& F¨ó:„“mÅZ„âÝòé-_ÒάÞéETG••Mâ¹…=WDu\Yô$ž[se\õqy?$ñÜvPÆeQ—·ŠŒkí”ÓaYSG•M”Äs{ètXÖÔaÏiÔ vÔ ÂpUL}ã Λy«&ð¶¥ÌW3•±ÅäëßJßÂmOåÎ|¾®°¹ýPΡ¾xχpÇ¿oPoæÐðøµ{|¤çžœ¾¾‹©´ ‘Ø&Ñ‚[· À¤šëf¡”TSÃÌ(’j²h˜™·lVÓ½B©&Vºù¬(‹0™Èîx!t9‡Ú%˜†,áÒe ˆ®Ê¤t•Ž„hcW÷>c—` >—4‘°»Ù­¥”é<&TÊD(eªîÇRFºÕ¾]bÑÒ9©gÚ\ÏDwµåfúƒg ʦuñuõpŠ—7—߸ª¼Å (4ŠIˆÉÄE± + ™ h6¦$ÍÆ|M…Cq  ™XhaäW³Æ.t5LW%.º*ÓWU™¥*Ê\TÑ(ÜkøÇ$íEÙåÕœv9$5Ê_ëFv÷X`GY®„ÀBйdyXí7»mÚŸUmiŒ84,ÃÒˆ‹ákÙ@I¿\Ñâ€-ÚK,è‹ëE¡Ÿ5¾ƒûq”Ó®bl|÷ Hó“æ¡fâj÷¶¬Ü;¸ÞxÌt“öá¿hê®G2tÊX4@3¬Ì«n†™‰cÕ‚Î2w¬ZèYf¢o4k^fU C+Ô¼>žÄèQ¨U5ÇRW%Xº*ÑPU™®*ÊtTÑ"±iaò«6×yp< Šë{*@‰+ˆ¦˜hš»ûieyÊ¡Ÿrx³Úþƒœ[%ªçn@À]ÏgH éå„¿>ó7gþz¦oìažñë3~½{yGÌýäk¸..R]Ý6¸X‡$ZêVáT“CÝ,’jrh˜™CRM 3s˜Í*‡ºW8$ÕäÐu^‡\%žr¨«“Xjê,M£¡¨ãtqœŽ"ZÖpGü_sæ’É8‘-wHbtÐ+÷G 'th©"1;¦ïŇ!ý„d…¹òí—sé²›ÀN¤úLêk$µ¯zUepoSïüÝ¿Åתp†/e ÿáoŽÙŒaÖX‹›ºUØ$ÕdS7 ›¤šlff“T“MÃÌlf³Ê¦î6I5Ù4BסêL6uuKMƒ¥©c4uœ®"ŽÓQD‹M܇íÿWŽ„¯~`Œ‡ÂI‡96”íß´¾.ëÜOfh㤓¼¥&S ܘ Ü|§®ïá5,xI´àÕ­/©&¼ºYà%Õ„×03¼¤šðf†7›Uxu¯ÀKª ¯j^‡n&Zñžh¡ƒNÉðZZ>ÒÌÕÓÈ¢>*¯,‰öÂj㲨ˋN¢½æê¸$ãÒ~ ÑÞê¸$ãÒVÉãê;E–4}TÞD$Ú{H–4}Øs´½»ƒ[ÜÁêúYÓ™KßèÐ ­ÇC7æC×çÚ¥m蘂 ,è3ðgS`7çÐ?è7šPR Ï«ºP\Óç#¡[}Š›ò¢ÁÃ{}xžWðš¾¢÷ÔRCˆ-ÄŽRC:K»œj~Ë×eÝÁ ¼ß?—x n>öCÊp<§ÏÇÏâëîà½t!$|*/"¤0Ëõo¥oá¶'*ËLUïú¡œÃßcÍÔÀ6æß7¨7swYøµ{|¤çŸÄ[@sC$ÎI4@7¬3©͆Yˆ%ÕBÖ23–¤Z\Zff/›5ø ¯Fª…˜a>+Ê"5¸Iˆºã…ÐåjC–`²„K—% º*“ÒU:âìàÍ» ng¸„©‰ºë-Ø×Àš»Õö Åí*¢è>b…â»ÈõN õN¨^áXï@ÝÓÁ} žè®i¬%|ô~“²§vW2êÓj?¬wŠT½´)ñÿð°N•Ðib=³Ê Ò,¼T£Ð•D.Õ*l%ÑDK·2YI4ÁÒ­Ì•XU¬T§P•D*=¼9ôðÖyûÅ“ø*ê$„š:FISÇ@(ê8WEg£ˆFß ³ Õ„ß#&¿¸ŸWû lÄâ¶ÔMÀ^a·ÅdÓ6LE*B•©¨]žBÓã×Ë%§ÄJ"¸+H9Ñ5ä«ÊAÀ Œ(`Àº+hÔ~Ö‹ -8t«ÐAª‰‡n>H51ÌL©&"†™ÉfÝ+”jbb„:¯DÜâDW'±ÔÔ1Xš:FCQÇé*â8E´8Z±SNZI'UÏé$måT(b-6‡Mösãž  ‹!B(0˜NÀֽŒ«)‰@%v8… 1R<Ú]Á‹U^Wï¯?\-~ýuyuù1ìÝíâõû—8=÷ýˆ“P¥ Zç„D‹Ý*œjr¢›…RMN 3sBªÉ‰afN²YåD÷ '¤šœ¡¦uð=´,&'º*±4T–¡r4t•§«‹<]48ñpÞÇ86;ø 0!BÃó¦Äêk‰¥Ô 4=t R nØ ž1ó1]‹4@)-R_2”ˆÕ—{€œCÖÀß{Î;¾´K—h4xsßùb‘ AŸ+ÁH/Fi,•Á{ŸÓX#\·ez_d»™‡\ÙE÷òfõLþ5–ØG=!ù®àËÃv=È×uqøB7m¶ŸŠŸå2_ËéßÞ7³yœO2ÉÐ)¤n ·ßË»ß&¤C·gwc$Z¤ëV!T“tÝ,¤“j’n˜™tRMÒ 3“žÍ*éºWH'Õ$Ý5¯Ã|l\ Ê:µªæXêªKW%ª*ÓUE™Ž*Z¤Ã4};͈]ÆÊVËÝ!íoïî±|ƒÎRô=”)%È•i§ßýÄd†Éi±~? ©)ƒ;‡s<7vc¯F8‡I¯Vç^ q®Ý?SB…=:iÕ(}ÏÝçòßw“º2îÍä Qä뫇?Ê>génnî¦(£éjôöŸ‹=ýÞåü$ž›ý ‘ûBa¿ 劣qŸ.ž}zXãxøþ}q:FÁ·Ð∛~‰´•ÏþóÑÊ5ùe;~YzLŸ "µ£ñþä»ZV†à¯è¨C –âÈÎ¥PÚKN--ù€€-”8ÐïïJ;’ck×'Û™ÌÈÚ‡fÝÛ1c—žžS ƒýIɦM| .Ý›ïHÐt¸R¥fò‰É·ùû,k'0åàï<<Å÷Gr8k)¥ãe0ãålðO@üîå1ƒ¨Îó2®+ëóò×HCøºrÌ<ßi K'9霸Vm«É9êl2ÄÌ}œï´r³ÚuJ<]‰geV›ùÀèú6Õ²TlD¡ÂF€j6¢a#@5ÑÈl#@5ÑÈl#Y²… ªÙˆê’‡> endobj 239 0 obj << /ProcSet [ /PDF /Text ] /Font << /TT4 475 0 R /TT6 268 0 R /TT8 269 0 R /TT10 270 0 R >> /ExtGState << /GS1 478 0 R >> >> endobj 240 0 obj << /Length 5816 /Filter /FlateDecode >> stream H‰¬—MoÜ8†ïý+x¤¶"RÔW 8N&ãvgöàÌ¡ÇQýtÚ“Í¿ß*V‘j·«zw± –Z¯Š"‹ïC_Íg/æóÖ83ÿ4Ê¡5üÅ›n(ÛþweÝVµ™¯fU·Ÿg/ÞÞ:óùûì´*« Bïgxƒ/ý˜ÝÙ×çWÅi[Öö²p¾ìì÷â´³÷øoóm4uÙ–UñÇü7ürO_††:Wõæ´ åиÞÌ_CCƘý¶|({kÎ7Åi([»¦Ë§â´•n ÿW ïGs»£|W#‹»Ô}¨Êº«!|<ŽÌû44×àÐìõâóhÂPÌ¿ÎÞÌgÎ<˜Y;”¡7­70oNãÿí8û¤ ]Uz|š¦lž(oð^ˆÑúLèÊö¿‘b¢¢öBŒ;¦ñ€]é{Ö\z2Y%cݼ…›ß`2¾Â`ÀÆUæÒÜýQ™³LƒnôÐñÕ¬qMø×rv;{mŽØ¸…÷dcšÛçöÎþýf a_ì¸E§Áu ^íÑ+Í-¸k¯£Y*èuéBh³E\Ýß’û/ÖhwˆÃU¹ÀÖð÷hÞ_¼ŽÍ %Xܙæ†ì6OM}°Ø!o¡ñþŦùP@W+‡}sçÅ©¯!+ξ¿€§}ec>¬ Éö Hvù£€Y±‹Ÿ…ïáaìÙ` _Ç51^«Ò†³xÿ“Ut¥-CˆÊJ¿¯8ðWÄ ×Á°}”ÚV–}Í×ï¥0”¸uSöO5øZ/ÍÃ×júšïð¥}mJ' %î?„ O:Y{4¿UCŽ+ê¾ë[¦#‰ƒÕK ÓN=€Õx½/r,«)•ŠÊSTNŒ¬òøe‘Ç"‹©ˆfÝñæ‘ЌϚñ¬O€SC²ÍHÔÈ/¸ô{Øà2ØÅ €ã»GºûZþ°l+Ë‹[x:DÝ)EÀÎãB£¶ïà5\jþ¢Qù#L†h%>5þäЄ ©*…rp‘T•E%˜q$U%R f(s°È¥›Ð$U¥SIužž™šE_ãt(‘ŠH3Hâ‘>šT¹á4¿¤›_¡é¤ÊM§Ù'õØìKM³ª4ÍÞ õ˜7¤¦YUšfçä¦5ç-³(7œlEê1[ -³(·|T¤j‡KgçÊ*Ä5•îxQ­àõ'‹j®e;ZÅ\UbE^Çÿ>þo ®cPdÿznÞâƒ-VÊP;ÿü~¿XâƒÑ\àeÅÏ¡¾ÄåËÙÍÇGz!ÕPº©ÅXÛƒ‹<Ÿ)°o=ö-v³n¨wgEËn·-ûðçãn,œ%Ì»E¼®F\hÛz;‡^{\Ø£ðúçNÏ®…×¾a=ûn'UÅÒïE=¿Á5Šàž_¢Þtö (×jEß=\–Û¡Qp•È:* èRsŒ’±ÆŒ¢¤*†(ið‰aćI`IQ J5R˜®¤Ô‡©ðúÃ$ËrN¦"§¤)rJŽ,§$Èj‘¬þÛcMÛùLarµÂœßR½“hìrüŽÇ›`Í5ÕõÃ?éÙÈï °l5\ìt)=ŠÇçb§ÇÓF] ÈÖ{¸Zn™¥!D:ûfý˜:>·ØÁÉê÷Åòq|iÜV½Ç™Rø!QCHM‘ª‚$'–HUqR‚™(RU¨”`æ*‹hɱ‰.RUÀ”Tçy€ÎeG†g©Ô½\Jê”,I²!¨ÓpqŽ *‡Ž¶ÅÍr.ó‰™ë/›Ý†\ ç—èìÆö^9vT±{±ÞÛoÛq·Ø=lÖÅü«v¬È ¦ ùCf,0c]f ·'á!Ï9»/£Y<ÿè–¾² ~AÌ¿dÖ›q>¸ò€$(±:¯¡D¢Æ’š`"U¥IN8‘ªò¤3P¤ªD)ÁŒT™’cT¤ªT)©ÎóàƒŠ•¬îåRR§dIê” A†+ˆÓpQê‚Õßïcå3V aõêaÍê­9[.7÷t½\[8ÀîzD`j&WåZ¶Œ´‡p=4ä=¤ãÃ…ƒ@>\xkÜR[OŽøÝ—Ƶ'¦? ÆÙ L¢…D94ÑBªJ‹œh!U¥E fZHUiQ‚™–,Ò"Ç&ZHUiQRç¡nUZdu/—’:%KR§lê4\Aœ†#ˆ -Íëw¨ÂDK†¥~‹5·»M´pm‘ÐÖHRgB¦*+dBÒeBšLH=˜ú€äÃ?ã£h4",*|(¡Ì«J0óÁªÆ‡L|°ªñ¡S°Ä‡Ë|°ªñ¡¥:ÏC>€<ãCQ÷r)©S²$uʆ NÃÄi8‚¨ñÑÁy¡%>î쯟¿|ZÕøøiµå*¿_m±ý²Ÿíßfû‡Éþ Û?np'¦; s§@¢€šè¹nWƒ¤ª(Á ©*J0ƒE䨩*JªyºRÝd1gRS¦D1eBÓH%- DÒ4ç·`¥~¯Ž‚(ÜöN&ºŠG¬~–Ñžó¿Ñ».¾{goÆoÑÕp‚3wøúz‡ç•u|}(×;¾ ¡5ó×Êt¸ÉÔÿ×M楩Ј´ƒ iXb`â*Š*Vbh¢*Š*Tr(3E)9”‰J¡"Pbdâ)Š*Nrz9õÍtrñ°häWTs e5eIVS"D5UÓhDQƒ*ÀQ¦Ú?œ„lön,töˆç‘Æ.ÍëÅÎ&a@2 íHý~Ù7…«h¤÷Rp¬H`ôö Éëì?ŠÓK¶ÑíØkÛ‚ ö¢©3äöêU1ÿ:ƒ!…:œ 5иÙHé>äI‰W…#{¹mþ}ï{gHK÷Ew,‰‡gȹsÎý8ìg\ ¶Ã,Ò³«ëMúüÌÝXèzzúšö™·T@hf!r¾þuæ¸8FÊãLòÃF'‘v «?ò#î¨]êéWõ½¼BžVôrztçFXwCu•G›ÍíP­÷™r;ü3™Ó·sßµnÚé]ä†3·zß>è¼hEÞϼӽs¿ü†ÀbîØ÷|¦¶ƒTõ°¢ÈÄ€¬.VÙ‘ÅÇŠ"##²8y$[V\õ²¢ÈÌ(Ôå(P 7è$–:ËBÇhè¸]·c€`HJu'þ5ƒ^í’%¨³§6»äAœJ‹‹Õ±Sû¿êÔ'•-v- LHü"ñÛÔ,~A¡ømr¿ Pü€¬âŠUü…lŠßæfñ ÅB]Ζ(i?ž„Ú@'±´Ð1X:FÃ@Çíà¸Dâ~LÅßõ÷ªþ‡eN½Úö«œš´­^¨.‘²BB/†}Ròú[í%ݘöWÃ3ürÞºÞUÇõ¡4ÎÎɃÅI.;©i‹“|íèq¾]ò×Ë•6¡vÂØñ•†žS_³ÏÚzømØ T}a/“i{ÉØpœ€Èq65;NPè8›œ'(t «ã…Ždu\!›Ž³¹Ùq‚BÇP—sð°Ú˜à$’8FÊÇHœ‚ãNO±q#§²š§-ôÓQ±ËŠo–¢øT^è¡\`¦¸ÀðÜó”·¬‡Ía{¿KÒmNz¬fÒc½ÜаÝæ]q[œº-–ºå‹ÛÚ:hÝjkîHÉ=/Ôrc‡ëw¿Ï¸UM­¢¯¹…L ¤šŽ?OM(xÈs C–3‰Ùq „†3©Ùo „v³©ê¶B³ÙTõZ¦šV3™Ùi „F³Ã+¡§¹b‰f£9„Õ(Ta£ºWÔÝØ °[X.æ±ùÙ–qíè¶÷õz;ó®þÌZÔC"ü]çÓykºÆ…ë5×àþ¿6^³`§ç ˆ¬gS³÷…æ³ÉÙ}‚Bû²úOPh@@V²iA››=((4!µžCÇ?Ö´€¡x,C`:Aá šU,¬ç«(>_siEÁÒzúŠâÓ·—--ÚPkÃ^ZP´´(g\ÚV޹²€`a••¢XVæÊ‚•Ï‚”GŸ¯×ÔµUk:m7obJ©òMsjG±žæTr2[hÓîš9çPWýôúÙWœÔ(ýpY½Ù_8%QÚ ’¶ÚZmåîû]õã»uõš/úúþæñN®•dK_¯fN2÷dÝÍfS½úã · ùêpS­~’ÞT—ºÔæËJ´œiÛ®‘}›•$Òláe×iÓiR‘馕]¿˜E‡ýŒ3ùöÃ#5_‘*Au½IŸŸN×]OûçDî¹Ú$àvviþ"r¾þuæx zà—ïy.4\ ~žñ[¿ÕΫ×ß©´‹úræ9lŸ?Ësó} Ì$6&‰$a ØÄœ(ˆò„M͉ (ª=È瀪FÎTËÇ63;5Ȩ6õ–%Ží¹°?¾ —8À9P6œƒa£yO6*ù%žñYÅg Uz³—ViûšÔ q²3‘÷“.m5üçqà.¯OéáL—Vž¦MZ¨}Ó6ܤ5¥I‹¥I‹””<Ýó/öhCQ(MZ¨¯>±QéKõ°—•ÒxϪûÝwmܰmRËFiïÝÝÞ Õö0P[ééTëj›À*3<CJÚ¶‘DN¶©ÙÊ‚B/ÛälfA¡›Yí,(ô3 «¡ Ùt´ÍÍ–z„ZÏÁÏÛ¶W6Zbi£9X6š£a¢y»&˜·c‚h²¢2ÞÄédµd·¼¯¿ûŽmÈcJWW/‡4\-ëò±—š¼}8ÜÓW×ù†ÊT.æ\TŸú_\jGDß.ùë»Õó$uGfíºpâñŠÇëÕj¶þõ´‡≫K»Âà Û:¨A;¶.[ªÚŠQ;ȧ%eÐwqàhãNSQ0ìHo»èDv´©ÙŽ‚B;ÚälGA¡Yí((´# « Ù´£ÍÍvÚ„ºœµlÈŽ6:‰¥…ŽÁ²Ð1:n×Çí °£ç tbÇуT%^ý!Ê|¸ÛìR•œ],\yÄu]q](®[”Z¶¨ä4ÖÔ7»6Â=Õ·çŠ×}+ô ¨ªoE‘¾Yõ­(Ò7"‹¾EúFdÑ÷H¶ô ¸ªoE‘¾Q¨ó9ŒÍV<Žó 4Fñ*1:…JN ²¿¤¼ü ‚¤¼ B?­,‹’°%_%†º¡—› ~±Yðè“D]$ÝI»±8ó¢þ÷ì¢åŠkŠ.:TIÖßNkÌÓòâɦÔ굚ü¶:º v ©#¤¦ÑM M«…Æ×OzS-4>šV ?-4¾sTgC64‰Ù… „&4©Ùƒ „´©êÀBÚTõ_¦šö3™Ù} „æ³Ã[Bïò¬8ÊS0.ÇAè„ @95Ï›ñÐŒÚ çSôܱKgÔ^:Ÿº çŽÝZZQ°´ªBÐs²°–V,­ª)K#Ù++h/œE%è9U++h¯|¤”ú|½vME™’Ž;¦ù„þ䛿Wç)9I~å4Õ´9a……&,Z°¢t¹l¸%¦V}¸©Þì·”®®~z)ùÒ˲^×tôºqMçR6/9wÕ¬oN¬^ßß<ÞQbã…­‚àZJ±q²x[ý÷õÕ+JŒ­ÔѼ¦Wn(»¦å(­úž´~7#qÕ_fªÅ&ý¿¥9ÿò=‹@]ÎÛtËÀO æûY›näï;a}L?†§Ù—&–¨ír&—+H¯±|jó¶aw.£}!óÇ‘ü¨¦(`°í3HSŸ{òäжI³€ÛÒk—·ý‘Ï[×r× ÈçÑ-Ç[+ÍB.;pÞ” —³a±UW™M‘è¤ x_¿¡ž›kõE ‹vüå‚︜“dõ<è²Aè(Žtåi¶t„Ò±¹Y:‚béØl•Ž€P:€+ÒÑCé€-—x”xÒéŽ;6ÐÉŽ,t|g¼”žt°®œö)õp:Œ£JŽu½ä­Ë»ín›ú¼¶ÞÜUiZ£¾.µy}½¥K«Ç¿Ò°ÆÍžÞGÂY×RF» ·æî÷zømPŠ4-w†Ïªííî^¯Sªý}F±®vU¾¶¹™ -¤ze‰%œEYJ‚b)Ùl•’€PJ€+RÒC)Ùä¼ãÅܘ™ò†-°ìÇó [`y! ss<ïMç e‘­7_)·,} Jý=É#" ϺÒ;–Ëž‚ÓMN6þHžH(×$ ¦“™å‘@¬“«âHÔ†ÍiÈC¡2ì­jZnÖ2l´lÆFó ›hy'…9¦¡‰¤™–WäEZn²ˆ]jˆRú¨¯µÓÑ5…¸£%…p"*)$Z)„šLЪ„³(kDP,›­*ÊpE'ú`(›œwž´ GJ±Ñ²#Íïl¢å¥L)eéIWS¡üb$êYuËi¢oœsþWe¨ñœm†0ÊkÈf«†„\Ñ>jÈ&ç»±Ý9ÕÐY”æ³Önð΂+Ï„Ê|¬¢öÊGÁpíuë¦ë ã› +j/|üs0šÓ endstream endobj 241 0 obj << /Type /Page /Parent 286 0 R /Resources 242 0 R /Contents 243 0 R /MediaBox [ 0 0 595 842 ] /CropBox [ 0 0 595 842 ] /Rotate 0 >> endobj 242 0 obj << /ProcSet [ /PDF /Text ] /Font << /TT4 475 0 R /TT6 268 0 R /TT8 269 0 R /TT10 270 0 R >> /ExtGState << /GS1 478 0 R >> >> endobj 243 0 obj << /Length 6352 /Filter /FlateDecode >> stream H‰”W]sÛÆ}ׯط’3Ãýà’|lìÜŒ;M㉕¾¤½3JÌ8ÊØ’¯-7ÍÏèýÅX`IJ4½öŒøqˆÝÅâ,ðrµx±ZEcÍêó¢¯úhjøO7m_Å~ÛÊÇÚ›ÕÝ¢NàÃÍâÅë+kn˺ªk0ý´ÀüèÛâCq~qö¶\ÆÊoJ몶x,—mñ v÷ƒñU¬êòÕÏ8sG3Ã@­­;³lCÕ7¶3«sÈ3Ë…ª+ÌÙ®\†*[º|.—  üò¡tð{·fðÓ`®öôÁš¯ÃÝÀà>¯½uå[߀‡0yò̹ìšmеâr}3˜¦.W_¯V k6fû*t&:8³L¿Ãâ³´uåð}hšª9@×à½`£#4Mh«øÿ@i QW!ÚÂØa[¹Ž1ë‘AÈ(ëÝk¸ù‚ñ¾~3¶6ȯ?js½h4ÈF ¿[4¶©?Ý.®/à Gð¸#SlGÚÚ@´½i¡Ø”¾rŬ 1Dàïk .¼¶ù‹õ­¾îÛ:V=uéعÂÖU¨\åÑ€0m“ÔÂÚp«–é—â¡#0GHHë«ÞÍ!Ûce+„:2³ÑvÞ;Ñ¡.!ÁUö`6Dé«&Výæ|::‡>¯þ󴹿+—.Pôá.v¤œ”ªš1U5ȶç·HÙfÌT>gªpDÌbAKIªYI¶Íô!T§lÍô!P¥bKôá‰Uú(.ó~À!UúÈè葌æ5‹è¸(Uó:>—L„ÍvŸ9aξ¬3=RRrňáqf‹G~ y ßñGð66ŽŠ±#æ4GÌñ·DK-:ŠÜ Tç†lÍÜ På†bKÜà‰UnÈÆÙcV7dtôHFóšEt\”ˆj©ëñ˜©q‘“”µXì´Mñ/¬’»bs›!ór÷°À…ÏââîRДŒA š1dÛÌ BuVÈÖÌ UV(¶Ä žXe…ârÞ•4ù¢’A€¦…üóQæÎËa,TøˆqtÄ09<’ƒH€ÅˆùeóHw{,xýŒ™í%൞ TCž@=â¢-¤9ÞÝa¼cßa{§ü gT ¹bM1gP ºf›¢ž'Ö®O;µªTЙG:­Y@g‹P5îm ;s”û›$ï·Ôàþ g?4 ÜØÞ®¿—®ãpÀ…X8QF.@kL[“À­‰=jMµ&=ck„Ö$vù ‘HG‘D„ê$’­™Dª$Rl‰D<±J"ÙxòØ«µ¥‚Î<’ÐiÍ:[”€ª$Š`uT[úÔ­vjÎï±Ám¡ÿdÊ$Â`Ïá™0Ørúè"߆4¯yÅȪG^¶æÈ¨F^±¥ÈóÄjäeãÉã VŽ :óHB§5 èlQªF¾Aõù+N—æl—3I¾.¶Ÿ>Ø•à°+XécÒAž@ÉÙ´ó>ÔeNØúˆÑã4Rè(’‚P²5“‚@•Š-‘‚'VI!g]õ\•Œ5¶RÏ"Kõ7aZù-ϘAqؼà <±ÁÒÀæÍO˜¾÷â° ÊÃR\h¹zX¤q3(Ž{=½X­lm Ê‚-sIXp¡†,º¶r\Œ¥ ì¸ 'E˜²«‹«ýîŽÏˇÍvoÞ쮟ns><~zØÜ£œ“f`®Ž§²¨5Í–îh¦?®þxFÛÆqFkW¾:¾Zs¹ÞcØzŸžM V ŸpiüA^Sö_jJ›ÎW›ö¶–”ç.HKµN±ß?”˜F6ŸöCð€ùu®wÐÀ:!¦ž=p¬Ü`c[{0Îï¿——v‰ WyªÆ,ô[ õQñž¨ãç7ˆCsV‹ÝÝÍ Žd¨¦÷j_ `I“„õâ¹°Zè2‚bh[‹Š 0bRž£Î§¬.›"8.È7Gpm’³b ³ú<+>œ£À*«yŠàè ˜ö öðF³ô®ÃI …J¥u‡º •æê)l ˼mêžo¾Ï6X„§Mái£$xÚ |’PJ4á„Î „YgI]À?Î6¾%%{à÷¦¬±ØòãTçA-‡ùT‡B· ±¥ãƒŸÔ¾tm„IŠß ¬þÛòXý# ·¿—8€CÝ9x[÷¨×K¢ÅÂ†è ‹B®ÑâïÃßtÖÙ©çy&&55ɦYN„ªz’³ U¥³¤U5¥³¨FcQU²m–¡ª®”­æ8ÔU+” y«EtÜKÍ›%£y7D4»+‚Ù|Vî²VÜÞù19ÌaÔÊb.ÎA 6`5Œ´Çó)Ñl˜ð"|„»_¨$† Ú6©F&ÊÃ’ŠW¹@¾ß/]W˜\FoJ<†ÛkƒýÈexvÅ~jäž)ƒ@M²iV¡ª2d㬠BUe(Ƭ BUe(ƬŒÑXT†l›•A¨ª e«9©°Ô”!£ã^ÊhÞ,Í»!¢Ù]Ì¦ `zgʰýqÍÊÊøá{D(_nRûõ°._Ìùz?$e8֌˚ñ“fü¨_œãI¡¤êlҌ˚ñ¬xêqI5!«¦åíP5M‹n+ª!PSlšUC¨ªÙ8«†PU5Š1«†PU5Š1«f4U#ÛfÕªªFÙêU24í¢* w@“‰€Œ‹ÿÇIa;î°T‰ýjø ÈÝz,³H>K L£t ¶¸b 4£|–@ȰY>IÀ‡ €ÐèÍIÂ4ú‹†™ý TÉ/šfî'P¥¾lÊÌO J|Ù”yŸMEÚ‹–™õ TI/oï¸õóB>€Þ《¥RÔ<6aÒŒÊç¨z*¬ÂЕ‡ÎQ'ôTØ¥¡U†fVzŠÒÐŒ*C3kÆ¡5Ú#3(œIEè)V #3(|¤Þ±£Þ¬CÊjtÇi :¿Ø‰ç~äî¾ÀDÖ¯._Mj»â5=Ôòm‡‡õ-½1W{l)ûâéú»yC·»ë§Ûü=æ,X¡­õö6ôMåjZ`J»®/-Õ7´ÀŸJõÁ~ÿPbFÝ||‚2$àô¿®Óõ[XõP±‚%;X7å2@ÑÆùý÷ÒbÏ{®tè‘õ5Öù¿•-¸ö޳tÇÏooZHâžvww4ï³l\ƒê©€¤z5Õ˦Yׄªº–³r U•«³6 Uµ©³úFcQ}²m¡ªÀdã“`~2*³;ŽƒˆŽ-£y'e4o•ˆæ½ÁìŽRJ'ôÖùQoJ#pµ9sM~±åœ›€õö×äæý”÷}p É©pX ÕçX u&Är‡›÷0D¬r m´¿½5÷Üll¶{óŒÁt÷1·"<'2@rm®ŸF‹³Û†Ÿ¶f÷9éÓAÀcca*B4«söØgëHï¿ æüâì-Žð?ê˦¹‘ÛÃenÁ¸¼ôƒù`n[’Ê«*K–WŒ/{HQâD¢K"ŠÌ–†}ðïM7ºC‘ÝŒ+•K.qÞi|4ð4^´î&u[»Gz¬7CÁoÖ%ì÷TKZL þüZú ê þ»ÅØBYÁÅž£†Ûçô!:¿:—ÈÙ7‡YïsÖk邳^SÖ'ï«OœBa³l‹F1B¹À°j#˜ «V±‚©À°j+˜ ̬#– «V±R×2Nb ?Nµ¢äRSÇdiê˜ E§«ˆãtѸ!Åe8¬}®þ¨rÔ®¸Jñø…žj. DÕ‹U"ß•B¾+w‰w¥jÂu®Þ}|ùZNAC|¼ã>$€ ?OnI±ö£E‰z¨AªI†,dj’a3¤šdÁLFVÉÐc… RM2ŒTó:t“®«x”jU͹ÔUI–®J6TU¦«Š2U´È¨á؈dŸÉˆïÉp:QÜ­Ë})x""*±«”( Ô#(M¥qÒFò§}›9‰Ì œÓxp„ bÒ4?O1‰-îc-LôPÁ„T=X0!ÕÄÄfLH511‚“¬b¢Ç &¤š˜©æuHsµ0ÑÕœK]•déªdCUeºª(ÓQE Øé]{pÕ#çI€|Æ«UÞª‡mL?¶Ûe‰'Ä*ýz¯”/‡ùƈ-Ü=ÃnGÿûŠå#?ç«¿ /‹"·1âÙ‹áÅ•¼|à{_YÆ2Ð|)%Pu:‚ÚfP[w—.Ž·x µxáPwEä·n³ƒa'—‹¾²ÆCeL_DlPˆ¥E7ˆ%Ñ"VbI5‰Õƒ…XRMb`&–T“X#˜‰ÍÁ*±z¬KªI¬‘jYVB˜œäùD³x*åJ9'Ržß‰’¢XpâñÑžayÇ×G掼ú5]ÀËPËÝÏ Ä Bt÷Bí>1ã‰U ‘@H­u¡Î (@É1/>I³ P…$š¨¡B@MôPÞÿI4·¿Ê»_BÕͯFÊÞO¢¹õõôrê+Œ±Î*]Í)ÔUÉ’®J"TU檊2U4p¨{xT„Ã÷ñ‘¬?2Wì§øA~n½*n÷bê†-ìd_{ÇÆ®Ñb2&ݱ»’F $r¿ù´Pü] ©«-NX4@1B™V-TŒ`f…U +˜haÕÂÅ &^Æ` #–‰aÕBÆJ5¯CÃ=Þ,ö.‡iˆ´‚$š+¨v*ªÞ°¬/©öúªM‹ª7-«Oª½úzÓ¬MóÞ ÕÞzÓ¬MóÎÉMë;Gm™E½aÙV¤ÚÛJm™E½å³"T½ïf3p=Å VÛOª˜ ýǰ…e¬ ÏŽ»eG•ÎþÈÏÀϺÀÚUï{ú=”ü] Ûù ½(îðö¤½7hÏ·^ì_ä{,`0B_ÑÕûÉ4\'z_¾à?–5úçÝn[bí]>ìwx³èà 0OÏ× l Ùu3rNÂ\àªÁòþ×Ò·ðÙkG€¯+,Þ?—ÝÏX²ØÍüûõ¦sé°~}¥~OJs3µ×â v%HXÉY NA2!Õ˜ALµ0æ‹ÂT¸”($“%ÌV$õ°®N¡?N².çd²$Í%9º,IÐU™‘®ìñ Iu›I"Ôûlþ=‘t³^Ì_–`=>4½o`K“ŸñâgÚÑÏt-ÉÏØþB²5DG w—9rN T‡E±CÄ­’Ù ®øíùë@ÿ±ü@»ºüûÝçë[yý{ .þ(¤d´4ÏXMš®¯a¢³Ëwõ çãVk(³_òâ'S¨²ôy…º¿âØIhjÈçÄ7m› uÎPKÚ=/“ƒâÆÓhyPn² žyë–8é媸»/ÍIQ\ïðSœI•ºŒqìÒOs—ºÜ¿aN¦yHw'HØîy(.¯/R¶‚»á/é±Þ Å|³yYòïùn †u·N=ξá©ùÜO¤~K¶–;7ÖÑÕÓ^^=“.†Ý×rŠNtXï?_oÉúÂ07üïrµ+Ö¿àgPKÙVïÞÞ#æqt4ŽùjQ<ÏS[¤(h}Sï0ÉO¬ÌùÅ}ÀßÍq {Š%-KïæOS|-á0¡É4nÉ!Ïÿ!/{qÜ)ë¿}ºø½›ÿ 7>ôÀó]ðÓ`á2PÒëBL½ÐÚä脈-ã( Ñ: ôP9H5Ï=XŽRÍ“ÁæÃTó|0‚ùˆÈÁê)¡ÇÊAAªyV©Îëƒ#±M…ö8ך|MUó¥ÊcF4yœ³¦Ž“ÒTãÞÚîè(8©:÷TÝBªÛ@5—˜âzÅÿ%ìÐÊUfŒª±ÿíúËëtÒøÞÇ•.Uê/éŒAKìUpÆTWÈÍ´‚ >b`e %è®èòïÑ ]g£Ã¢ŽÊè°j¡c3:¬ZèXÁ„«:V0¡3k豌«:Vªó:ä- ,ž¤ZQr©©c²4ŭ¢ŽÓUÄq:Šh1›¯Ì„ŒLý™:!S'dz¸ƒì©üG÷€zèk<µè©eÓ{ŸUtUt¸éá#4VÓÊ«Ú]I«›t ùÜýË"Ðn8¾Ž„&â–6ˆ!Ñ"FbH5‰Ñƒ…RMbŒ`&†T“#˜‰ÉÁ*1z¬CªIŒ‘j^‡çš|;¸8î_$« ÕW4V­ðúi€ìÑH“Séq iÌ5ôcY÷P÷v»m‰Fcù°ß e„®ŠÛyz¾XYá*Ñ»Œ=@!%á©ü! ,ï-} ŸmÊ8Ã]HW÷s þÊ}æZÝóïÔ›Î]”~­__©ß“R…ÑœàmˆÄ7‰àz¨`LªÉ±,´’jâj3”¤šTÁÌ^VáÓc…1RMÈôà³¢,’Ç͘ íB—sª Y’iÈ’.]–„èªLJW©DÄ3ØõUÆN¿!ÜÌW{qéóG4ç»=ߤÇ;øU·¡Ê^oU^¨«ÔÂö#HMjörCðýtbyÒ ºô@†‹D‹-=”Ñ"Ñ"Ë%°H´¸2B «ªQ¥G2T$ZLéÍ©¯-ËãÁ%Oƒiˆ´j$žY6¥SQõ†eUI=·¬JÓ¢êM˪“znÙµ¦Y5šæ]Aê¹m¡5ͪÑ4ïšÜ´µm”–YÔ–MEê¹]¥´Ì¢ÞòYñOx"÷Ûþ°äù˜=Qxç‰{¢Àž(¸F<ÑÝvIoVàŠ:—¼O,RtÛâây¾?ÊKùô-©ü–ß=¾‘_ª³_ Ò/Õp¬þ¿ý’Ó‰y‰²D* $Z¥AøI5á׃oRM¼`˜T`#˜ÍÁ*¢z¬PHªI¡|VÌ‹dš%U“lÚ$]Ë)² ’*å)ü7ÖšÂÈÕÙµDØ]2B­[®vø¤ùÓ@þ¥Ëö¤‚>'>F¸d:¥‘Àëb¾™?,_–»åÎfêŠûŸRètÒøÞGá¡Éƒè)žLWï ¦Ë¦kŠÎ*™®©»/aêî'µj ˆçêÝ¿ù®‚¥„ú+{\œ\Á=â èožJéhu€ü½I^¶“xi›¾ämwó6Ù®é VqI |º£=ÝÓ®ÇúKorÖ+³ê=mŸÃ"{v§$aÉ)v=–„çÕ^SÂØ2ÝD?³êr¹x’ÕXÖHR2ßÅ$ÝSªøkºIJ± K¹÷|¡Ñ¨RQ·AÜN…À`D®ö°ÏÞÒñÐÀªVÛg^àŸrE¡~¿óä±N<Ói,(X¨²bIJÊÂKF½ÉÒÏÈÒÑ>¢Æ)€òhfp×hø6lè0Í)ǯNIðùfµµêu ÐQwù³Æoߟ¯æ›æã|æû U¤¸ð¿®†9ÊÓ+~‘¢:Õúú7õ®%´oóZ=\­Ub‹õÍÅM7™V\Þ†Ðkvhn@݆aç†ÔmN°6  nÃp‚µaŒÁfðcsÃê6 g©5%öïT=ý!·a&Ùæ&ÏO1›Tó ÐO«A«˜M«è'Ü¢æÐB })X´ÀZ¨d¤µEb°²IU>•þŠzê1XÙ¬ÿa¿ yÕI’ endstream endobj 244 0 obj << /Type /Page /Parent 287 0 R /Resources 245 0 R /Contents 246 0 R /MediaBox [ 0 0 595 842 ] /CropBox [ 0 0 595 842 ] /Rotate 0 >> endobj 245 0 obj << /ProcSet [ /PDF /Text ] /Font << /TT4 475 0 R /TT6 268 0 R /TT8 269 0 R /TT10 270 0 R >> /ExtGState << /GS1 478 0 R >> >> endobj 246 0 obj << /Length 6314 /Filter /FlateDecode >> stream H‰œ—]sܶ†ï÷Wð’êt‘¢DéÆ3ŽtÜi>½97i/6±êlÆÖú8ë¦9¿þ(ízϴ㙕¬W H>_-ž­V­qfõç¢/ûÖTð—nb_¶üƲn«Ú¬nUï¯Ï~¹tæúÛbY•U¦Ÿxƒ/}_|´çgoŠe[ÖöUá|í·bígüÙÞ ¦.Û²*þXýŠ_îèË0PtUg–1”}ã:³:‡Œ1ûcùPvÖœm‹e([;ÒåÏbÙ€Êï ¿·k?ærG/¬ù:Ü,îòxõ¡*ëX7°BøxZ™÷yi®Á¥Ù·ëëÁ4®X}]¼X-œÙ˜EÛ—¡3­7°o–é÷~Xü© ±*=>MS6Jã¼lt…>bÙþ)Í!)ê,D»§4^°+}Çš«1‚ «Xï›_a3¾Â€ß«Ì+óñÊ\-" F£‡‰ß.×”ÿ»Y\.ž§0R×µ+kob Kî(Žis§¸uâöí=FZ°ÄkW:;Œ»õn³ÍoVÅÒEŒ¾ß-½³)êÒcðÁ*‚5wǦ¿ôȬÇ+ó|ÍÙ}N¡WJBKÑ~:Ž[þàóíßôú¿ø^™Æ†ðŒM¢8‚'pc–é—v_W`„”>”~_q2m\„eø$µ5$‹}Í×ï%3”xuSv‡|­“¿æ#í'H>âKûZß—N^J<0ë&Y{Œgɪö] ;\×rÀg±qD3]a×+gÑûò‘e5»RQÙcŠÊŽ‘U^¿,òZd¸‹F¹dØê ¶–`;y?P4·vHÁ ×ñ3F3äè+s Y&eߦh^ýDÃP­¡[çì¦h€ 䫸b>\œ'K˜µëœ™9£’Õ¥éЄ˜³0f÷³sM…$9x†uŲ®úî>K_6ö¤.ÀF€tÈYHá¡E¢Æ”lš±"U%K6Îp‘ªò¥3b¤ª”)Æ Úd,²&ÛfÜHU‰S\=íƒ*Z²ºçKI%©³7u^® ÎËD -@&ú=´êÄU¯ˆ•bÜPGõEÁðìËšé[3|»Œ#”ûŸAÔã~…ŸšËwO1ÖOßòû yë]]ýŒ=ÕZm=ƒVÛKhá‚}J¨°á}]9düæ{=†]•ýQxä;˲·†¯PKcNw»{úÒæÓÃnÈïl)ßxkv_ó6¿2¹ ZŠâ±Ï´Žxè³È> Ùg|æáSßø)z-²×B~Š^ƒ Ek Ü~x7ðKš$XAü4Ül¿$À¹!å^›f)ÓŒÃ_ÿ“FEg¤Þcs=nó[W]XÛ/Ãhò³õÕã–Áט´”TF¢–ÊdÓœÊHUS™lœS©j*SŒ9•‘ª¦2ŘSÙd,¦2Ù6§2RÕT¦¸š÷Á§Ä~èjQ|)«ÙY²š½!ªy¹¢˜—#ŠJ*káR…ý.¡Â»ç.á Á›bµOxE{½×; éÐày‚óJy¥Â¼sï9«D{Z ˆ/àiã0æsNéíÙúæf3^›õÝÝ ™0õà€Ïfi&BÕ7p{3RÒv][…JS¦„UŘ)aU£D3&JXÕ(ÑŒ‰’ÙX¢D±eJXÕ(Ñ\=íC:S¢è »ZP÷|)©³³$uö† ÎËÄy9‚¨QÒFøÜ>%Géä|È%ÑÀè=}!0x Èx@UÊn7•Ý.!ÒOˆ¸ ‘hßçÁï¶ãÕ!+ሕ(³TtÆ ‰+²if…T•Ù8³BªÊŠb̬ª²¢3+“±ÈŠl›Y!UeEqõ´AEE÷<)ˆ³§qöı8¯ôX›r¬i4pìž>p¾ÝëkÇ©Ë5¯×·ê"w@êvB¦dV”zF&Úš‘‰ö·lß$fð ›™iíô­½ó‡ uy­em›ÃövÌol®rƒžP›ž1Ö6` ht F-T®³ H*Q’ã’Ê’dÆ ‘™H‘`•IåGr#;8”?ŠH›¦X*"í‰ê‰ͪUDlÜkζÐòsì®~âˆ:2¾þû0$Ì PQÑìËÆuÎ@4†§•s²r©6~dèFêG‡d%è<Ðæáóï°¤UXµÜ#zª 9Qè!Q£G6ÍôªÒ#gzHUéQŒ™RUzc¦g2é‘m3=¤ªô(®NûÐôsIô¾bÍË-bäÓ!jg.Ο€ÈϽ#Õ§&ã´W™Z[3N-§–8ü%Ÿ¶âÔ6P ÇÙPµs^X.¨pØäJ eu½‡+³Íî ÕM£…x´~L4S²Ø~úJf€â”'fš›‰Qh&Q£Y6Í4“ªÒ,gšIUiVŒ™fRUšc¦y2i–m3ͤª4+®žö!¨0‹âž'qö” Ξ8ç•kóBŽ5 céö1Ž™#†óä%ª¨ŸlðPô@pîŠvˆëx«à5¤.fæBf®Ç²–˜ƒ”‰ÌÁ™¹6U·Ã¨¯Á¯ZÐ'M‹yÑ0‡|ÕˆMsÀ'QwÙ”Ã=‰j´Ë¦ìÙTŒuÑ2‡zÕH—Ý;¹ÞåÃÕÑùIQ÷\(©³—$uv„ ÎkÄy5‚¨Å{ÕcáIñ.Æöåædî‡pNg±ê,ë¦í¡4Ävó/cêON¯Ü$jÑ-›æð&UoÙ88©j„+Æ⤪1®sOÆb”˶9ÌIUã\qõ´>¨.«{¾”ÔÙY’:{CPçå â¼AT=`4z tn6NþÏ|¹õÆqQø¯ìc¯aÑ3=÷¶ìb¢Hd^ò´ŠôÔ.C‘€õïSÝUÕ=äž#8 †-¹‡§gºº¾®ª«Ýí1÷3Òº…Cž#rÿ2Ë"’î#Ýä)]¯¿K%@& L®¿n{IÔŸM©Yù÷‡™q=ÌÄ2Ìäîk(ÝWwFK3¦ZTd´`«Ó¢*¥›U)-Äl´¨Ji!f£¥˜!-Øë´¨Ji!¡.çÐyÍ8o€°ºŠ%Rk°Z£Ôº] Öí‘Ñ2Ióׯ۠®Œ£Ñó!Õˆ^ÊÀéôøëáx»¹NMOYeJhH½hÇ)ÕMýÑS®©?•ÁcÊ…¢$þ\ÆŽ1\ílÉÍÇýæKâ³ «IDÆ"ûò~ÿwý¡(™@>ºûɽÏ™êggX{e"aŠX)SSÄlL™Ê˜bfeÊTÆ3+SÕŒ˜"^cÊTÆ u9‡ffˆ¨«X"µ ©5@­ÛbÝSc+¿¬™ŠZ^ÿtzH„ áÓÞ~Øü¼?ætáðø5¡ÐI䌤ÁHj›JÒXHµˆ,…¥©°48KKe)®Y‚i,ÅP”ÊÒâ,Ås–$ÿF04*K*2–°ÕYR•²„ÍÎ’ª”%b6–T¥,³±TÌ%ìu–T¥,‘P—s S W‘¤3 k$ØÄ‚µº‘ß=¯ôƒ3¯ j—R˜¢¦_´0IAØ6Aè‰)S7—þíîVûµF‡z5ë•ÀT9¼ÁSг}Pç JÛ?¥ÃrA!ÍcÑ,RB¡ÕÍ"å[ Ï,R:±Õàt+d:Í,R2qxKè;Ïö³Æ‘¨«"µF ©5@­{bÝ ŸQºæFùLÖáø²”uS×–¦°@1$7ÿGH:y½È(Q‘a‚­Î‰ªlvRT¥¨³±¢*……˜–b†¸`¯ó¢*†„ºœCÓÓZ†ÕU,‘Zƒ…Ô  Öí±nˆŒñ,±³ûMóñŒ›¾/©éÖÔÄ?5RbÇžQ£"£[U)5ØìÔ¨J©!f£FUJ 15Å ©Á^§FUJ u9‡v¤Ô`uK¤Ö`!µF¨u»@¬Û"£¦‘Ñ«_S}iÃ&ë¯%qg)5y¦šÂa› .p\$¾½±49K}ei.hNmZ'k8KKair–¦ÊR¿fi þ¥±Ô‡¢T–&g©?g©ÓÈXR‘±„­Î’ª”%lv–T¥,³±¤*e‰˜¥b†,a¯³¤*e‰„ºœCœ)KX]Å©5XH­ÑjÝ.ëv€HXêÉŠQY²áçõ›Ó±äêí“´{<œŽdvj†ÄßßÂeöµBÎi+iìJàU3ž£tøòé©u,‡Še,%. QJR"|˜Ú\ឣÓ4)= :*2t°ÕÑQ•¢ƒÍŽŽªb6tT¥è³¡SÌìutT¥èP—sðu>í@qI ÖH±Fâ\¬;=×êFÎ5ÆÌ(ç0¯ëÏäõ'B—wwO)ùIæT{ÆpT^uó/ºœé¥ü ¿¤<_Ú&U¤­,™KOì$e—ÔÐuÂ’¡”þZ„ƒRoú°y÷ÖÛçj2¥J”·y{£…PþâßE ï6oîvöWö±9|ÉÉËÆqhÏèn—¼;ÝÙ}¾b~RjåIÏéë¦k Ÿj„=l4ôTdäa«§"ãŽX;uĪÐ+b; 9q$¼%ômdÄuB¤Ö(!µ¨u¯@¬»"ã®—¦·ù&wï÷ÊÃv]SxX‚4\?:ž²×ßÙ*cÉïðöpûëãöú¤NÅ®4š£>Q+Öè$µb Êñn¼‡œK9¦:¶îG¥8­¦wg+ÅÖÇ]°縕©¯Ÿþ[Œ‡>@8V‘Œ­N²ªelv–U¥0³Ñ¬*Å™˜çb†@c¯­*Eš„ÚΡK¯Ë˜Æj‰%V=XXõh@Õ· EßÓ12ùýç“çäãþÓsN {&ñûŒ‰ôš"·áî)“rùó7úÌX×ÖüÂo~›UÇ9–ApÌÕXÞÈ!ž ă‚KŸA=ÿÒÁŠRÁÅÁx6v]+Ã.QE"¶:ˆªR±ÙAT•‚HÌ¢ªDb6‹‚ˆ½¢ªDj;‡æb)ˆX-±Äª « ¨úv¡èÛ"1.¢~]\WåÂêj—JR®©4¥tÆè³™0óÕ«S+Zo­}^ўѽ~Þ‡t —ýè4Û.±= ç5г=ÐCS^Bëy þ’Xny5gy¾Óÿ+zg/ɳm`8o­£åus=ûøßåfº˜hs­"» °ÕïUé]€Í~¨Jïb¶»@Uz³ÝÅ ïìõ»@UzP—sˆ>öv)à/C ÔU,‘Zƒ…Ô  Öí±nˆì.ȉ Wa¹ Æ‚Ùb7B¹»»RûúÉX»g·¥n¬¾<ædïR£.Ñ »´Fú}¿¹ùv)Ù (ø]µçïÛv ø}?†›ËDmš$ ø]êĵÛvð;-Û¡ÜCò>‡üÍæÞ/@ýƒ—ŒÆ©Ké…5‘0J¬Æ¨©ŒQb6FMeŒ2³2j*c”™•ÑjFŒ¯1j*c”…ÚÎ!^œ?Óúå‚ú°¦Ç—5zzè.ÂUýd³È­ë"\×=‹üÌáº&âu-²ÈÓ®k"^×RÅ×Å™‚–5 ®êI”EžChYÓà²ßÒä>ýáúZž¶¹–ÓÕnRþéOv·Fy‘Qû¬t}Ö·´Í…6½}Fûœ6é“.õ÷ÏÛW½4R»Ûýæ§Óo›·ýú‹\ cØ\m_I‡Ó§§;ë[òõ$oÕ6úZð—7Œs}))r»æ{¶³AéÇm—zÇLJmêçŸ÷Û^:©ÍŸvùóó>]§ã,ÏLQš—T¸•– ‹Ù¿ÿºmӫݧ+?½¡Ü¸Mj–þºdgïmÊší÷«¤“ aQ~;}þ¬Ï=»xÓ$É*6kרêìªJáÅfTUJ(1…ªR ‰ÙP+fÈö:PªR¢°ù›¢R“¡¢däüò °\BMd&‘=\Xö€`Õ7…U½ zŽ]+Ïvì´?*}Vc}Ö¥à{§=µFù›ÓñÑæl¦ø“ÔËI$#ïmT¢0ù}#ai£bj˜ºfI]Tj˜† 3T‚±}Á¢¼>aM09e"QÄ€Íù‰Â…lF–H+d3¦Ô.§I$Š £XîËH» ¬–€aÕã‚Uß>T}—Pô½@‘L ­d‹@°"c)ý~´ DGŒ(#F”‚´±IbI“„T3Ÿ$›$^MÒ-N–ÞQ§„”õ%½»:%´uJÊ” I߯§„˜§„ü £LŸw°omVˆyVÈÒË¢ÕÎC:yÌŠ‰b5bLeгqc*C‡™•S@̬ U3ˆx$SL,Ôåb_¯ðþ,Ô@]Å©5XH­ÑjÝ.ëv€Èx¥gŒ+ž¬H$ž¬Á{­¥FêK*6ïN_´f¶ððx8q]Blb*m-c)c¸‘¿—”ÿ`ÝÜYh…ǹg©¯"K}lõÔW•¦>6{ê«JSŸ˜-õU¥©OÌ–úÅ S{=õU¥©OB]Ρ´dç©ÕU,‘Zƒ…Ô  Öí±nˆ,õ‡( ¬SXõG¯ßîv:*¿Êô4ÆÎ2|ö 5×-ÃH^u¹,¤ Ïò{lóÛàüV‘å7¶z~«Jó›=¿U¥ùM̖ߪÒü&fËïb†ù½žßªÒü&¡.çÐÏ4¿±ºŠ%Rk°Z£Ôº] Öí‘åwßH"4}Íoëä__ín¹S‘»_îñÔ±çA`»­ü墷úÙ!k´Ã¤k\Ýö’*á~Û¦Éã[ÄyE©u¢Më:Ñ•:ñæ¼NhÃ5„«Ý×mÌÔÇýÆêѪý‚y¿· §(‡ý§ÍGw?¹÷á¢C“²‹ ª"C[QU)¢ØìˆªJ%fCTUŠ(1¢Å Å^GTUŠ( µžC/gà =’X´HaÑ"EÛ)Ôl#Pcl 5ͼ®=ýºö¼95_§p¸}ÊUh ;Le¶7ƒby™}­€yÚÊýRë–(ªæÿ R9&i}Úð¯ÞËa‚_¡L™ÄÂ6ï€/  ! ÿŽ÷ÎŽÄ®K:`´Grw#'·BÎiÿôGG×r+E+S†Ò  Z¡ô“F]Ï ¥> endobj 248 0 obj << /ProcSet [ /PDF /Text ] /Font << /TT4 475 0 R /TT6 268 0 R /TT8 269 0 R /TT10 270 0 R >> /ExtGState << /GS1 478 0 R >> >> endobj 249 0 obj << /Length 5321 /Filter /FlateDecode >> stream H‰Ä—MsÛ8†ïú8‚SC|ñã²U‰“òÔ$ñDò^2sPbÆQÊ–=¶œlö×oÝ h«Û;›lÕ–«$š¯^hôƒn>_/ž®×­2jýq1ÔC«øKÝP·=|vµk§Ö—‹&‰7ç‹§?¯Œ:¿],›ºiÀúa/â¾.ÞéÇGoªe[;ýª2¶îômµìô‡øqu=*W·uSý±þ%>¹Ç'Ã@izµì|=Ó«õ H)5Ëúº×êèªZúºÕ;üúX-¨tó¦²ðy¹!ñèV{üÁ†¾ÇË‘Ä}ž­Þ7µë\€ÂÃÓʬÍK3!.MŸlÎGlµþ¼x¹^µU‹v¨}¯Z«`V-Óç͸ø( ]SÛx߇P‡{J°!^3YÁÇø®nÿ)Í!)â,Xßc-ØÔ¶'͸˜A÷À«˜Xo†‹_`3>Ã/ ¿*Ó¨WêÝ:[t41-LürL¨=ýw±X-ž§4ö¤q +î11kûio ¦íßÞŽÞ1W!Íöã™:¾¬–sVî§\i`Òµñ¾2Äã(8Àjû¯ 9–~=ÔÈF=p<Ì©wúwÀùÙŠ5‘W§Xòj¯æh°j^.+æå°¢@T _PPfDµq`íP»øò5~Õ³—j ÉÛ*xs1k=ôÄDÀ€4MðDÀ@ùßég©L¾„»ÁDPá>tðz‰¾Ý}Ú¾¯»V`DÁJ,*± ˜‰R%$3²@ªÄ‚dFŠ™cAð ¤J,H¡žö!½jE²Ì„šQg±äÔ,N-Ñ`Ô²\F,ËaD‰…¶ƒÇ! ˜öXOª'Õèµ )Z½Áºp"5Š&‚„—-’tt½"¼ûÝb /uzüâ;kKàkËiìƒ>Ž|zÿÃâÒ:}/…¢oÍ@¡*Å›3P¨Š@ f U(ÁL@Mf(Þ›BUJõ´^ª-¼8‹$#–H1b‰Ä¡XVz¨•…jIÞÁªÿcUù¼ŒË#fºŽwéåÍé},&ð*†t?BXø>‚«ÅŠ•4‰/Ö˜ñJ¢HkÍp%Qd‹·ZIÉâ­V¶²\±ÎŒUEªøðN¡7V¤ŠWg!äÔ%N-`Ô²VF,«aD‰- iælù‰­.³µÚß}«àÑV‰‹r¸ˆ]×)óôFs­f"AGfÖŸ%dRqCZ ³h Ók^DZzß×=Á€’SÄľ崮‰&p‚¢ oͤ *¢Â›3+¨Š°f¢UÁL¼LfÞ›‰AUDF5îƒât%fx5ÇRP)X‚JÑàUZ./ÒrxQ`& P윙!3cíÄL,CîÛ13Lè ;7Dgø!tÂ~BçeDghÀ4¡3dt<¤‡è4ûÖŠè (¡Ã[3:¨ŠèðæŒª":‚™ÐAUDG0:“™E‡÷ftPÑBMûÐÖ¡ÑáÕ)–¼šƒÅ«9¬š—ËŠy9¬(¡ÓyXü‡ù[¸–¸67pÐrImÛÔ6Ôþ=b`õMüôæHƒÒ¤^ßáÕ{[nÝköo]îßÚò†%é†t]œéñ îI5 n¦«UeRºW[\TÏnŒ=eÐù6ý›Å©¢ž©mš6ª-U^•oÞ¡ïb¿]¢5H#mòÇû´‡~$5”$ ´ V¢T‰vÁL´“*Ñ.™‘vR%Ú%3Ò^Ìí‚—h'U¢] õ´¶—hÔY,9µ‹SK4µ,—ËrQ¢=4°øÚ3¹X(O6ûm„ªÜÒ ƒ!æZ`ÎÄRf s¶ôÎÔé_cî{ ïu&¤S#ƒ×ê—˜ö¾Þ§®µ×*-Û N“‹3uKËnÿ€Œ6-M E‰ ÞšÉ@U$ƒ7g2PÉÌDª"‚™È˜Ì,¼7“ªH†ê¼¤Sû‡q>J¥)F‡ÒiZß2Mþ@‘ pP,ú9Sk韫ž£ªçèø—kžµC9Æ|oS‘x»Î ¿T.žûiL¨›ô Ï¯þ™Æ]ÿ”§°ÿ¼£’c©PPu„µly°™ìçÕÑk›šNã ©¡TG§W¿Á]ß„ Q¯_Çæ÷g5-i"‘OÔö|wE÷¡~­˜Ù§q§ò½ÍÙjáQ,gI“˜eÙ$ŠÄ²Ö lE^y+ášD‘VÞJ°f+Ë*ę̈&Q$•ïz“_]ŒòÃø2ê,„œZ¢Ä©%ŒZÖʈe5Œ(ÑÛÀ/¤÷»˜ór’¸$;¿«úõt©œ3þ?4 ¡ù뀮ªø†:k^ÑG§¿4©ÐnIS›ý~ó¯?Äû«4qêÎw‡gZ—gnqâ©ï àGÚ{:³ ï0ŸÁJÀ£(Ï[3ò¨ŠÌóæ =ª"õ‚™°GUä^0ø“™%Ÿ÷fôQÙB=íƒ÷"ü¼:‹%§–`qj‰£–å2bY# ðû@³óÒ=½oš!÷¯ù4è4ò \‹×*ÕãAŸÜãÛL}pC}ðñî6þÐé}ìk¡”Ç1âÿ£:…Îø‘wÖiFnμ˯¬!LÌû¼էÇp·÷~Ö9»D½›Sï°0ëéÒôªÕu>ûð;i!´^`”DQÁJŒ’*1*˜‰QR%F%32JªÄ¨dFF‹™cTð£¤JŒJ¡¦}èË hyc#1¤/Á)ˆ¸ƒ(Š;È>4«üÀyQ•÷—:«üÐy÷Q•wŸšTahÊ TåÜà‡&Uš2gšÏvdùsZ¡*§;2‰üÈŠpÊ>]¯áP­a·MÝøtàâ¸ÎB¹¡v µ–ŽYÓÔx¶zú¶ôÝ«x¸Açñl·»‚³NÎô¹E96'ty›î«Wñ?£¯Îî.è´NçLÌ483¶@wã}™—íã±›`GoaÏ*´ýþ¦ŠMÒöýÝ~¬|Ýiõz“¾/Çxζð6¨c» Õ(œWKß6Ìùþ·Ê´ð³ëX àlGq{¶TÌýmìÖ Ä=ýÿ*ê¡ÓGpzÃÊ./ñ¹'2¤DJ¹$"ì(J°óÖŒ3ª"μ9‹ª¬`&$Q‘ÌÝdf¡ã½™+TE®xó£bÙ¤&ô€M¸œ< 5+—`²r 'ÿ›õ²éqã†Áð½¿bŽã"ÞŒ4š_›$í¶Þ´‡œ¼X£qØFÖ’_J$¥±‡¯ûyI¼óšòˆÒó’, ±Ô²)KeCW°kºŒÝRÛ.iwÒ¤ÀØór{ØŸbrÿá|û'Õßm®<ù¬¡‰jÒ\µ‹eÛ¬zžÚš‡*ºÇÓë¼·ÒjGO?Ä×ê÷W©Ù¢mv{~°É;}ºàš†*ë4‹];TÑe¢k+º¬BtA° Ë*D º9ØD׎UtY…è‚TË9„xgQÓc«9—¶ªÉ²U͆©êvMQ·cŠ`jG*/ý FšxÈñ4äxºý•Ì2«8Ë8z,³ÌJf™å0´tÑ%Ïs -6f”Ú2§¸2§t#Ÿ Ó9ŧ9%ý† Í¿·“§BšOÓJ’.«c»J¾dS$" „ E¢"Š@°P$*¢3E¢"ŠP0ST‚-Š@¬P$*¢¥:ŸÃ¤T„Y¦çâ$“†X2eˆ%s±ìt®•Ì5„½ˆ'øø>—¤úE©c ~ ÌÚÝá‰ëÄŽèëðoêW“ê—›Ö¯ ¯ß®¥Å즵+Uµó–JS®¦ÜX Û–¿0ƒmli¤ ÌŒ eŒ$˜¦t‘Ѳ„+’ TV˜Åa&NF”²DÉJ#'˜î\n#gµ¨š0 J^€*Û·UÙ¥-Ê^lÁ¨£l¦0•«.óØ‹8L%«ÿÊÞ©ZŸÒµìž–JË>^±cë…‹N¹ð…‹¾pê×Tè\GW¿pÑ%.Ü”‹Ž¹ˆÕfÚg2±Tå5¶úµ]:p€‹ˆ;TAa²b+.¬Bb@°@Ã*ä :9ؤǎU€X… Tçsðs‡‘š’1 H ò ²xåUÕ^XÏ—Õkçk,­ª½´ž>«×NßZZT°´Ü V¯Ý kiQÁÒrsòÒèæ+‹h/¬×ŠÕk×ÊXYD{å«"áóû{jªª{:mwÓ„ä‰üILÑS_ÕПÙÕILžèš›è‘Ú×ÕþÎáñËG~¾MŽF¯ì~gÓÆj<Ûxzá1¾qz÷Vlü‡E›Ì›¬;:ðîáËi»ÔU?mÒÿŸ¶Ñ‰û‘~3:¾Oï…èî4®P°>ÿ¶pñÕŽq[ñ ɬ›‘|ø·Å@þ«ô<£üý&êÝPß&?|úÄ¿;ójZº€­± $ y€¨'2n†*ÄI„ Û¡i!£v¨@¨¡&ƒf¤R–D™zMÓc¡ÿ|s¼L¾-çY“dM”-k2lU÷d«ì sæéš)gì .·K9»K=Iž$õ3i‰°§ ?ŸI\¯‹4+^äö°?ÅFh­íIœ (³¶-wb.ubã´kË–û5î¹~‰Ä6}štc瘶Z;zú!îŒ<ê¡’–ŒÞv³ÛkWv7ïÊ6y¾¢Ìa˜¥ )3Ü»:fjéâØótaMH~mû‹ÈìPuV¡ØÁê¬B3Áâ¬B;Áâ9Ø4;VUh Õrt'z8ÙjÎ¥­j²lU³aªº]SÔí˜"˜ŠâÙ4a‚¹[e¼¼LEëŸ#•¾¾#‚B]½Š×?NITÆ=Þ0µ45Uo_½¤CK5¡ô5]ø‘ tc†²-ã‘«ß¾¢§#õ/e<ò Õ0|Òod—XÉx? ³>˜¤Ë’ëÇæfèO"ž@¨ð$*â  O¢"žP0ó$*â 3O%Øâ Ä O¢"žPªó9PË& Nri©%Y–Z²a¨e»†X¶cˆˆ§.þÜ´l¶™§^x⪫\LOjG;¯ž÷ߟ<Îe2•»Lšµ±ébmtÓÚ˜1 õÚ¬‹©bžG-tÓ·H¦zxœ×à cÓ=" YDÚ¡Š!«C;X1db‚CV!† X0ÌÁ&†v¬bÈ*Ĥ:ŸC@UÍ'™4Ä’)C,™˜‹e§s­ld®!þÒ!^¯g/¸ëŠfõR+†Ô©#»ãéð9vf¾9«e~|ÖÒ¿ –­ŸsãGDö};ëüB›A®×ëÅý‡ïh7¡ ³7äWø•[ar &—7erÐ.t깓Pu¥W«&¾˜Øø¦ôû]æ]újâ8]ZCw+kÒÑf Dȳª8'Òl‡ ÌI„,Û¡‚²†š$›‘ r!Çvzsê‡Ûê$…–Z²d©%†Zöjˆe7†ˆhvþ¦o¦Õ4“Ñ^ÂL üø•îw}ü¸Ùó¶\ ½ÀÛfxÛ oÈÓa¨_ÇZìjêt]GTµ¹ ¶õ›Í·…O>óRÕ')‰õ†£TßNÕÃ6ÕÈ„èãö¸Ý?îöT2úîÆ÷›7ä}ñ¶Nï·Ur¤!Nœ´ÖÿQõu¿È.³xWó×wõ[ÕýúcõÞ;ðb/_ÝÆ6¿~#ºþúq{ÖŒ´nb ›ãñ㎾Hw¢.so1:ßÖ#g`YƒªÞÀ*4;XÝUh XüUh X"›aǪG° M¤ZÎÁÅ×e1¹ÉyªM5çÒV5Y¶ªÙ0UÝ®)êvL¸„ë©çôÓš‰Sq ºí/7'â64Cìn“;doè³78-ì”Á:ñûbÙÅúk<öØPeW^¸æŸ—{OóÄÊ_TÛÚ¥¸fºâ»Ú-¹øîŸ¤ó³i ¿XsÞB¬ÿ¯ž¡ùí‚#þ}® "p*® *r,® *rÌ® *rÌ®P‚-W±â ¢"W@©–sènm,Ú˜ðóT›jÎ¥­j²lU³aªº]SÔí˜"r…6zÈ´wh3½ØS@54ÖñP'Z³’N©âþý†J#KFàFwÙÃÏÇ"|Ó5Ïh­Æ"n×ô4t½Ž¶ žº~ÏŒ*Á¾®”/a4}®v§-÷&Ô"ìä•dµÙ?²QJÃ0Czž«œ*+IdgvѲ]¤O±+:Ïâew”¶j›§Ý^š(]Q·vî$Á‘ #'a9‰ªNÂ*t;X„Uè$ Xœ„Uè$ Xœ$›NbǪ“° ¤:Ÿ-qÉ¥ˆM"È'Èâ•4~TU{a=_V¯¯±´ªöÒzú¬^;}kiQÁÒr7X½v7¬¥EKËÍÉK£›c¬,¢½°^+V¯]+ce핯Šñ¯9+ endstream endobj 250 0 obj << /Type /Page /Parent 287 0 R /Resources 251 0 R /Contents 252 0 R /MediaBox [ 0 0 595 842 ] /CropBox [ 0 0 595 842 ] /Rotate 0 >> endobj 251 0 obj << /ProcSet [ /PDF /Text ] /Font << /TT4 475 0 R /TT6 268 0 R /TT8 269 0 R /TT10 270 0 R >> /ExtGState << /GS1 478 0 R >> >> endobj 252 0 obj << /Length 5898 /Filter /FlateDecode >> stream H‰ÔWÁrã6½ë+p$·Æ $•ÛŒJ9UN¦ÆÊ^&9h,ŽGS²¤ÒÈ™ä;v?x_£ %Ênv/[®’I>4Ð ¼~Ýx³˜}³X´J«ÅÇÙ¼š·ªÆŸèæUÛã·«l[[µxšÕ<<ξùþ^«Ç/³«ºªk˜>Ìè}½/nn¯*¯ÚÊw¥6UW|)¯ºâ~vûAÙª­êò×Å´rÏ+c¢N×½ºêšjît¯7˜H)5Ë4U_¨ë]yÕTm±åË+T>Jƒß§¥€ƒº?ò€¥üžÁ‰¾©+ÛY‡±¸Ì˜švZñvù8(gËÅçÙw‹™Vk5kçUÓ«Ö(D`Ô•ÿ= ³y «+Cßç*w‚8ãè9a“Gx™¦«Úÿò>x$ëEÒî&ëÊô‚iK : 2±Þ}‡pŸ1üªt­îÔû_kµšu ±ÑÀñ§™Ó®jäm3»Ÿ½YLȤuU7~F~";ø×0‘™·}8ݶeâêº"®µE#ÿü‡å•©[W™âþ'þöL|zÚmÕ-¿oKð‡éžû—ó®/Ö<£ïøÃnõ¼áoC !Égacñ"YHÌô¾û0¬cç_—¶‡{Çã¡l«¦Xx>e_ÔKÿÿi@ ¶í±ú¢¼BbÎ ‘˜Æáû¥n1l_b…â¬ê¾rÅßË®ÒÅ;¼mzy¿#ÜuÅ5’OØ^wË †DéœÄ5þ\ˆ%Wþ—©xD(MçMe¦ ‹Û&gª;]iÐÖBŦ°± =gŒ ½²ˆõÆÊ}veƒ•m\Ùt4t Ïç•ÎFLèŒç'n[C©—±µ¦÷I¨î[ÉЀ; Í_Ã!Ùʵ"·úóƒHÃq«3pØÌ ¶+ ‡ I£!¨4ʪÑ\H;«cÚ%+Â{/Rr°Y¢ÐQÊ?õóí R®5žâ—‚ÒÝ(“ý+˜·¿”HˆÉKyeë9‰ÁÏüƒ¤è¾¡r§)gk ÃûãîÀS +õV×Û£T§o}ÎAlMë4‚­tÓ´± ‘ÓpŸ=ÿ+‘†T5Eepu¥É½ÊU°«L÷ϳn4mJ&GÌåhÚ4ä(£ÙM‡e4›£cÉQF³9š1–ÆÉMÛ†e4›£™­Žç`38·;ýœìdw*Ž;ñ#}‰¼ÄxÉt÷Ú~šn1Ûì4Û,²ívKY†&Gw·} ·SÕˆ*§œ)×Ç”kbÊ5œr]L9ÊÆSÖÓøé=–ã|Ò0PÞƒYÆ'Má=˜å{ÚTèîÁ,ÛÓ¦Bö`šäzÒ2P݃Y¦§·W¶Ë™Q·›³ýM¢q ÓhØ¥46"‰†X“`ˆ& føÞ‚€}=廋„ï…ðû˜MRÿ‘ˆM½¤|Pן–^øûb)ŸŽÃÁ“wñ7é uÔûâ~8Ò½e^áz¥Õya˜Ç… /ÌÉcBòÔ.&-4–3nN×÷Ò "¥®ØbK_jXÜ£!lŠ5JœGM\nÕð;%ñÞnW¨eü&Á ÃòA}áCY˜ê‹€®é^T8¯ï‹g/˜|½UÇOƒÚX ¨^~¦½B‹þ¡:Kôº¥›P&ÓÌ¥zÚ4ä:£ÙdO‡lg4›îcÉwF³ Ÿ1–ŒÆÉ”OÛ†œg4›ô™­Žç[Зõ-Nö2…Ž›•BÇÝH c¸ p 'æ²¾C7j¦Ñ6$_=çäóÅ ËRy«éž¶}à÷A]¨mC2,ëÝö$ÛënÌö›%n=ݵ™¤»•Zi jgáÅë1ç¥=5~Aµ‹i.9,ÌΪ°È‰rÛ7Í>Ý©’ãæl°ÖnEc]Z¬%S.I09ègÀ¢„TBÕ*é_Sº\Y½3šôb/$»ŸYV‡þJ-7_Ë9µÚèšuñGihƒd¶0+ïLZÚaäš3Ò’1i4'-c‘AsÒ’3fi4'-9c––Ñ8%-[‘AsÒ’Ûj9´zmNZ2hÜË46+†ÝH¢!Ü$ÂI‚9iq5‚ÿßJ Œµë&÷ÆÅº4ºx¢<éP“iXZe^tïç ¹4ä66ä |ë0õeO•±#E°K: EA~¬—Ÿ¾š">Ð, ëO¼G¨0eT+kù—l;ÊýÿÇdI˃9ùI›ùa4+?iã ?Œfå'c,òÃhV~2Æ"?Ñ8)?iÛ ?Œfå'³Õñðå<™´-¥pÆ2ò 2xá‹4=q8_F/obꀦ§§Ïè¥ÓOM-hfjᣗ¸‘šZÐÌÔœ8uŽ9‰™LOhÅè%Z%f0=óEä›ÅB× ª„ãn|ÿŠ?~âjB7¼®T“:^O¡t^Ìt]9Éœ×tÝ;žŽÏèØ»a¿;ÕÍîáù‰î·?ÝxIš /™*_®‡ƒõdA© ®î¤‚ýÿÄB¼öÚ­ø²ÇŸ&jN²¿<:-ëüÍß á4}~iÿ*ˆÄo>,%± ù8IƒÑ(ó$Ö6:ë>©e˜õ¼Ja¬k0ôƒWvT4zGÅ;ohôå}ÑM+íûšèŠýfðÇW¾J©×G޲EìÏG=•.¸ÇÎ5ìù*îQ?°ÝÕd2L×[¿mw»ÕófPÇå‡MœÎ;;šûWšÃ?ÈüÑúX}ùÊÄzÞD,÷û o%×õåv5ÙÒõãv7žšìÿ°Uq—Wëí£Zþ¥cÄ}iðûnì¸P÷¾Pc®¾5µ2ýÜŒýPmBg:gŽéŒÃPrœýxœ}˜±»qÕð ÿ÷ƒK …v‰#'<„ýùÓ^éæöÚ'”.î”!a8mœpôKi˜Vߪ7KA©as…4MŠ%]”o™~?™á¿Rßm?IÜÓ‘cGˆR×;Þ SìËØ/¢G™Â2¿ÑöUA×¢–R#¢ÖÌ!X†EÍ‹èe3Šh¥UÙ×"¡’u_þ )mpoè§7@>,Û‘oPáœv|°›ÍîkÙãÜ×þô‘0ÓtW‘¦¿-7ëÕ¹±pì´åÝþoù÷â|æÙÎ:b–ØM®/·ßau‡u,Ý0 Ý|pDΞ {ñ3¼Çì“/ýï#ÒáÓ˜Žb}ç‡ üH`x9”Τç-[=ø—á´%oÚ9Ä!Óíå@ßí 7æ§íî~6kKhukÎۺꘜ5¡}C­áuŽ|ÉÙ:¸výY¿çpq2}Îø2v s ¦5MºI4Æ›FCDI4:•D¹³º”šMW™“.Ç׸÷Å[è;¨_^5¶sã›¶¦mAw°ÕB.Á[/8…3Ja£át†5 fY“¶ ¬a4Ïš´µ°†Á,k2¶ÌY8ËšLÈq?y< æEÄ tQ }N §(xqÊíêü\¬¹¨Ô÷cE%RÝ®¨)‹%VFø ‡iÐg]ƒ3ÎQGúãð[h‚ÃüÕØ0uÜ0‘ìdž©£†©:£Yãüe!A{%"1š'RÚZˆÄ`–H[&’,œ%RÚ8DÜT®Í)ƈÒhð9‰F§’h–HuFJþûâz³Þ2'õ~\ì Wgô.øtÿL}+„•ûVŒƒØtV;@fM3²FnYÔG°¦¬éGÖô)ÖX[é6Ëš~·¼>=ú&Mi¾†êG~¿X$…Ë1Ï“D<úTt©´!5fi—¶‰©l혘H1!¶†‰¿˜bB\öxÔN ‹?PŒ #±l‰¬®´³’²nPÍöã³J€ÐÔ]×äA:בêÊ'd¯%qSl6µ¤³Z¢©Ô’Õ’z>ðDEE$‹œhë€dò- {)¥š†§Ó2ßœÓÕâ VcÃP-{‚*%dÓ‹‰¶/„LFÈ_hGÆÎ$ð,èh ’OZpþO¨ÇC'Ýö¢*ø¸Jù!Ö‹Œ f›Š3†ˆñâqMç`¢®”¨îöÚ†ŽA7äÛÐõûÝ›Ç[mKcõ¼¯…’syÙYÒâJ—êå“÷©vÃÉÔ—¹O¹Èú± ŠLåak§ÈDJ±5ŠüÅ”"âr‰GC‡`¢®éH©™Ò¸*K½•¥¶”¥ÙËÒ°)Ks”¥q)K3*KÂÒHçã ªe* [;P&R ˆ­å/¦@aãÅãD'¢®N©ðÔOÿøÏóÝ+9ùôåÓ0isË£r_FåÜøÎ<Žv3Ÿš)¯GÝ¡Ñ “zd"­GØ6ð1•ロ)>ÄÖðñS|ˆË%¼©AqåoiP\mè¯7´NZÑzlÖaÙÈ©G#ÇÛV—ÛVŸÛ–^ Œ¡i–»Óª¹_í~T®F'¬—O7Ÿå/IJf[\@õ úšÑ$ E XG"qˆ€$ ÅY;ú2 rÍœîæeP:Ç«áQ}«Xa•v±4:¨?®h3ƒ30f~x|8ebq»œz§>lN½4Ô¬ÏpUØT~ÆØÚÙDzÒÄÖÛ_LχÇã2Õœ9V‹GX=Cµl ªôÈéIæeÞh®ÿe åœy´x>îŨ­ö¯æi\æÛU?7 ¤áðŒÚ^TS9ØÚA0‘‚@l 1‡Çý2,âbÓ©ßÄ’ˆV-M¤¿5T¼rÄÙÔ q†k‡Š×öS0‘Ÿ^ÙU²²‘ošŸ\:T¼ôeUrêo>4Òv$x)'—<¬§YCm™•»ïT«³Ä² Ùí§ºº>==ßžžŸdjüòøtÒÒû|¯…öíã§çÏÇÝ›ã×Û§»/§»Ç‡¯9¥äÕ“¿¹É^}yþäï¶#¤¿¿‘0Äûµ‘OUïÏäÏf÷îæ¤]¯"ù/¹Òë÷Ý^¬ršë7Ýšÿ öá@³I’Â0øl’w”C’7×z±y½ou†=žörªÕÝïϧ㾓ž³»ºÉÏûãþU—ZI¸J¯PIvaÂò÷n¬åSüý۾ѭ}Ñ¥;|Õ´µÎ¼¿îÇCS½—ï€5ù÷·ªwØý ׯ¦z¼¿·7‹ë/JXÞèõ‚‰9g]ltw/“vš0b¬êT¬u:]«©o´àÛÔçTsµí7É‘ä+³”ËDWT½†/óyíÒy¶êâb,û_Ëç‘úÛÊ ‘–h 2à /³²;Ðm_—3Z_ŦóS@ò*ÐPöP"m,(/á@òâR­ u²®íJֽЯ~[j’f¤û¤øw_­ÓK®Ù¨7kÖtƒ´·¦ú­ÒœŸ*±¯¿×ÿ~Ûï_M“Î|Iš~=Õ;Iœ©ºÒÄj1i6‰#n‚.i¡ÉÏ h‰‘E–Ð2Ò"‹8+°'EiN@ÓH‰0ÅM=!,F,pt=òyL8›"¸P-ÄjŽ”J°žB5|"¹ò¦$ØÕkÀ—VÛ¼|÷ó!\°Œ®Ê³rí<§Âó<ËûϽr,pÓËürNt›–ûÕÒ&r¦±q@m*£ÛÖ¦b®‰¥ƒm*%ÚųMŒn£›DºC îZKœºŠ$R=T@ZÅ©‹³@]œ"Ã[&®9Þ›R-cÑßïž„ãJƳ¦ús÷æFÆ¥WIïb­|·…ï¡ð*Iòeê²Y(žêå6y¸‰pl€›ÊǶ¸©pb逛JÇÆx1Æ€cÜ£Å'‘.ÇЀÛÜg ®"‰TV±@êâ,Pg€HoæYÒ~}ü¯ ý<ù Rˆî Ñ?Ñ×”h¹ðÝDN46¢MeDcÛ ÚTL4±t¢M¥Dcã ºc¢‰±íÑbD“H—cXO³ÝZlä$§‰X21{ëâůu•,íÇëê…ã+»JVöÃw•>ZW½$‹®^â¬ë*YÚ©Y–¦Ô ¥MeKSq€˜K›HV¾(Úíi²Û“,¨mYþÙ'/Oc+~®ÇË9ÆËa´ñR:´“cÕû3Ås'u¨–KÑö]š³”ǧ›Ïö—ÝõIïUsõüéÛî­}|üôü9~¯ÅKvØÔü‚×ô“Ð+û• ê®RóVÛÞ6øzßJàªÓéi/ç[Ýýþ,sB§¯¿ºÉÏ{½è¥V+èÙ²¤OeÂò÷n¬åSüýÛ^(˜ª/êʤ5­œJ_ýºŵ÷^x'ÿþVu9ùY*³À^=ÞßÛ›N/ s3LJIz"¬&Ò¤'Ƒ֦’´&¶‘¸¦ÂÄe–ž¦²ì$Æ‘Åæ3ö óh‘ #ÆÅ8£ìLÉÍi{ X.&r%ÖJ°ˆáÀr¸„U+ Ý…¬ë†’uVº( µ—…ë“$õ>Mšg??ä¦ÓI]³éæáÖ¾w¿è­4Mõ,ßtÂÑ+¨^HeÆ©ßèŒ3ŠŸƒ 2:ãh}øågIªI¼;»6ýp¨is4‘ç 6Ž<1•å ¶<1ç ±ô<1•æ 6Ž<)Æ8Oˆ±ç‰G‹å ‰´ƒ ¥tÊ€b‰#sœRâÅð‰áÒØ ÞvòÃu' òóù¾òËèÐM♃= Øõô½ÒÃ{_†÷Æ®£m¹Žžã-%FwÖ8ÜÐ4ØÎ"CZÙYÄ`c;ç:‹khT‡)†›:Ó#†4Ž®G¾=Œ‰"Õ@¬æA©„«á)TÃ(2°S: õì)Ànš ØmµÓIhpïö­ü/ÐJàtÚv”Oùš*ô:ëma},¬·U,’¤¬mao%(í&rܱqðn*Ûñ¦b䉥3o*…õÅcOŒ{ŸDÚ¡ÑW2ò±Z"‰Õ*(•X`5œ…j8EF¾ÜNÆ´"?•)¦ñ)æýñߊhÜ^úêÉî&þ¸Ûë¥àáÝ»?%?Fù‹ :“^2nýyóðÝ׌v-:H•‘®ñÆÞV[±]Ýh*µ~é‘­KZô»…eæÇmŽÍ0ÇÞÉÞúêJÛÉ 9˰T_¸U˜È3 G†™Ê2 ÛF†™Š3ŒXz†™J3 G†cœaÄØ3Ì£Å2ŒDÚŽ¡™—\*ñ&ÎXHUC…¥ˆQÝY¬º3X$6ÉßY‚e~7í¤“«Œ=c?ËBFu ÿMaz(L§êZ˜ªŸœévËô<š m%›:Ð&ž±¥ãl"¤™ØÌ&2–±©£\L!ÉÄÔ@öŽIt-òƒ7éXŒðaQ•ÝI(ºP#üŠsý`ü~¬^çKëTù㸯¥µ/þ°¡èñawõ“ÑïGéiëmÕîaÕ¾ÎUû'Vµå׉]qM£„cS'ÜDB8¶tÂM„„;#ÜDF86u‹)$œ˜á#B8‰®E^°ÅƤ±=°òŽ¥ìb–øi¡×¹õƒÌ;G´¦kpM?â¬á†+Š€—³“Ï=x´¢kpQg"ÅHÀEMË-vD ´¨IpÍ Òÿ‘³#j endstream endobj 253 0 obj << /Type /Page /Parent 287 0 R /Resources 254 0 R /Contents 255 0 R /MediaBox [ 0 0 595 842 ] /CropBox [ 0 0 595 842 ] /Rotate 0 >> endobj 254 0 obj << /ProcSet [ /PDF /Text ] /Font << /TT4 475 0 R /TT6 268 0 R /TT8 269 0 R /TT10 270 0 R >> /ExtGState << /GS1 478 0 R >> >> endobj 255 0 obj << /Length 6389 /Filter /FlateDecode >> stream H‰ÔWÁrÛF½ó+æl™ðÌ`Žäu)Å»"ãK’-Á6³"©È`\þŒÝ䃷{º¥n&{ÜR•âá5fzÞëéùf5{¹Z5ƙՇ٢Z4ÆÂ_ºiUÓÁÿ¶ª[›ÕvføøqöòÍÒ™Ÿgs[Y ÔÛÞàK_f?—WoËySÕÅué|ÕŸËy[Üâ¿ýCoꪩlùóê[ürG_†@­³™·¡ZD×™Õ%2ÆLcùPu…¹Ø—óP5ÅŽ.Êy”>–þo× Þöf9Ð k¾öÛžÁ!glU·u„ÂÇÓ̼ÏSs§Vücý±71”«_f¯W3g6fÖ,ªÐ™Æ˜7óôÿ±Ÿ}ÐÖVŸ‡«x‚Dñ^àè}&´Uó¿@i QG!òÎa@®ñäsÑA}i:™ÇXžAç@™S0v˜…©€4qõ•“?›Q9t^ZBµÕ•#gTŽœ—ŸPYJ\„” ¬BU‰Èq3*‡ÎCË2RB3ª„fñjR“C3(G> Rä-ÚÊ Ýq„u±Ó:ˆ{-ÕÁ¦¡:èl…•¨)"_=_kÕʼ¼1—ûÛì¤iSm ³ì7ôRÿÙ\ÓÃýÝសåê¹^¡\,7X ÓÀÒëH#{UÖ”Óax,S=~ú2à÷¿_§ë¶‡­Ý× ¼´‚±‚o >Âó›^;>ÿZÂòwÅVèFuØvPuß•-Tüø;cÇ¿¯‡%_Ða¸b¿ÝÒ—wÓòìÓd·+ ©”@Ýí29û™PÍÏ27;–PÙ± “mI¨jK™œ7’eã)d¶gK³–L> ×hâÉîù"è$ÍÊy I¢$ô˜ =NFÿ¼!²íh7jˆÂصd·ëýÝú~]ȼmºTOOKŒÜñ@;ã¸çAƒÌñÝ%;h1ö¥2T˜‡t¡*ÔâÇL~egZß=-Ó_ êA&ç‚@¨Vdn.„ÊAarA T-29„‘,…̳¥%Óã2äNÓûê‹01'c4Õ„]¼çŸÌ 7/lϬëó°Ãæ5O ºäBPD䈬…ž“Âó ãf™ä¸ªJ„¸ ÊqYA´bgô<.cbØsÔî—«ÈÕ¬>`¹´!•qºã:kQ7ðê8–&RÝq¶Â¢‹ÈWÏ×` DZ(oè7Õö]ÿ¸¾§æõ¯‡ Ý>l¡>áêÖ5^Ûbw¸ÏD,R0>gi€â6ã@m38<Ÿv™T*k髲ƚ< %ÖñÍûÃЗ°С­ÓuÛCwækÜV0vç•|„çжÁ]~þµÄTñ€§Ø pû²Œõ]ÙÂ$opsˆ¸mÐïkÄaÉÅl®Øo·ôe˜ôiö‹cOúÌÞ H%P7¸LÎ&&Ts±ÌÍN%T¶ªÂdGªZR&gÛdÙw ™½ÅÙÒÌ%“Ï‚Ç5 “Þ¨{¾ ¦C‚S’P* áŒël;ºnÚÜ‘á®×»CîìÖÜË ‡ÜÝåV/PƒãÞËQïemksïÕŽ½W]|—Ho!fLQÝû¸¶R ’0Ý"5Û#š;Df6GeoÈ<¶FUgˆÔlŒL•}!SÙ”#ÍrvÇÌ;TP8-¬¢×˜ H%ðìª ŸÍ¨:/*¡gVUˆœQ9r^tBÕU—â"¤eEzNB܌ʡ³bÆÐªd¤ÐŒ*¡YQ¼€g$%„fPŽ|ü Lì<\¦5k<6íIOÓrOÓrO¿sO³¼1—ûÛCn[ºÂ¼¡7zì&mNË M764í_khbÓVÞþ¿74±…Yhç L’ePµ¾Bfs3ª˜[á²}í«1É£ŒjUÈìÂ#Yt¡F&Ÿål)>SÈgÁ¼F µŸQÐ1Í2šò(Bc¢d4gBDódDðO;™êÎv›v2xçÈnW»ÏÜÀú±¥ÙqOÓ›ïÛrîøì}-MÝÆú¤¥ñZW[7¶4Wl —…u©§]·(–ý`†½ùb¸ÔùüA?Ì&·U¦Ï~¾–¾ƒ€Õ6Õ¥˜Œ@Ýd29›ŒPÍd27›ŒPÙd “MF¨j2™œM6’e“)d6gK3™’éq`tJ§¢ “LJ(§J€&¹Ðãdô8‰î uUû‰{¼ÝÈ={Rj¤=Æ÷ý°ÙïÌßqwl‹û²†gkܘl< ›'€y‚}ñ*,š§…RGó4°ûÌ=îÆ¼=5O|hƒ&~uñËä,~B5ñËÜ,~Beñ+L?¡ªøerÿH–ůYüœ-MüJ¦y<’4ñËè˜IM©¡12š'+¢y2"¨‰¿†7ÂTü~<Câ¯OÄß%ñ;?Šwõ·D!!þej®zè½êâóíã¦tØ»=¤ßC‰[?Ú§G»^w1ØTBhÌêR³æS«ù£ÕêÑjß‘kß‚Õ"l=!ïSð¹%tÁyK …Ùíws Ø–O›Ó³­)ÀЄ%-º;erv'¡š;env'¡²;&»“PÕ29»s$ËîTÈìNΖæN%Ó¼ eL ‡zú$Ï":fRFSªDhÌ…ŒæÉŠhžŒjî„ÝÄ5SwÖ£þÒÿ;ìÙP㛲.HÆtývTk”þ‰/›ß8Ž#Šÿ+{¢1=ßs ˜,ÀŸ¢”‹O›p¡0–±¹ô!}ªºªzš»ï1Jì$‘ÜÇ7bW¿ßTÕÐlÄ®J¬5«®SŒ )$åA/ ÂÂv4«E›U_ZÕrѪҬy#0˜ÈaÀæ€ÁTö ¦bˆÓa0•€ÍC1cˆÙaðj1H¥Ë5ð1 ŠUÉ•ª|DƒâvŒÏÐI`·ÔëM¡ ¢GOú"¿ÙŸò±%óì1»]^);±ÂtlMò¼å›79ØvK_ñíKïw`‹<·üÍ\‘ä–½Ó‘Ç3ܾð6¶HoûÂ{Ù<·í opTE¯ïøÅØÑÈbµ” «¹*P*‡Çjœªq(²à.²‡´upÇÜåypßKg ¦¼¹%…:zôò¦Ö,÷Sò$/‘ä¾$yˆWtøV[€+Ï¢<¬ƒ& §ÙEhböL»JbM¼žlWa¸™Óòí*‹81{Ê73 :3[Ö£Z$î¬Ò~ ½…$ž¨¥’XÍ¥‚R©Vã°PÃ@‘%~–士–© ,ë³e•¨w2ôÛȲ62cëÌ~ü¸“1]î´ù³N.só¨s̤(èOîýõJ§uy’F¼•?ìlMèªýãöðóÓá˜Ç¡Nƒ·‹zá±hô•¢ûX)¦&}©d*3ÍíÚ4ä}Ê6!Ê™RS­ã¶RŒ±RL¶RèÏ–Šaé4_„Q9£ØŒšÊÅÞ`ÔTÌ(q:£¦RF±9-fÌ(1;£^-Æ(©´_CÒÿ€,D-•Äj.”J-°‡…jŠŒÑa•£WŒö)•Šd^gHeDkrŒ¥‹e>3²]cˆÊý*¢I>DW½ýäÎ_åwWŽh;Uˆ~·ÏÒiP«!èì cÐYz¡öƒüç}óþíS«Üžq6.¹0˜39gØœ™Ê8ÃÞàÌTÌq:g¦Rΰ98+fÌ1;g^-Æ©t¹†a¡œaµª$R½T@ªjÔí°@ÝDÆY§‡üsÖ•‘3ùÈùöNú“·§¥¹Ïqlö§û‡ãîˇ;cðýþ½N*ï"Qz™ÕeÙXí «·™U릃åœUÁa¯]¦‰œUlVMe¬bo°j*f•8US)«Ø¬3f•˜U¯c•Tº\CÌ´ý ßž—ùR¬êD¯Ó¥RÕˆÛ9/Åí—´_¥¥X/xyýZ©ØýiÿéI÷1WæPKvld©mm#ÓÁ°Ìˆssûuî@)ψÏSÝ&iQxž-Â,K2pEŒEÂF°H4½ÀÑ5Î-²yhµ,±¨Š^ßVºfaµ” «¹*P*‡Çjœªq(²ÔÊqT©]JkIUju›ºÍïë¥ùkÞ>Æòæ¾li¨Þõ7‡GïLWºž}<îO¿¼8ž={ç…Œ.ÈH϶§¯}6[ÎÉèåŠRGàp‘òAÌŽˆ«„âuP\…¬0§áâ*#†˜šÍ ¹afC'ªEèa•ökX´(d6#j©$Vs© TjÕ8,Tã0Pd’Çî÷¨¯òÑn¶©M8z8¾ˆO“‡ÒP@ê¤ £~ÃhÖå§ëôvò@%äñ´ó)ohvLJãµ=.Ÿb@ÿ~’Ysi¾8Ão5j?9~Øø™ÊðÃÞÀÏTŒq:~¦Rü°9ð+fŒ1;~^-†©t¹†~¢øaµª$R½T@ªjÔí°@ÝD†_/¿1Ôøu%ý㳩ëÛÃþ(ʲ0³dû¼» °»|#{S%ùãEw:½ oy¼±9âm*‹7öF¼MÅñ&N·©4ÞØñ.foböx{µX¼I¥Ë5´±j\ŒgD­*‰T/ªZ u;,P·Ã‘Å»kå‡:ÞS‰÷êñÎíA.¡ñwôÚÈÛx–ÀÞËÛ{n¤ï|¯ícmü×> ÿ¸J£üÆþêZ_ø'í(×Òt1.Vábh_½i»Y¹˜g®®ûv…oÌh¬hô-\ÿ¬v&r4°9Ð0•¡½†© ât4L¥h`s QÌ bv4¼Z Rér tqÁbUG¼¶`¥ª]Z°¸ãóW–v‚ÚA™€ñ¿ÏcÖÔì5×»›ýéð^”EÞùFD¾dôºN]'O1{ð73 >3[ð£Z$ø¬ÒåÒÄZQ«J"ÕK¤ªHÝ Ôí0@dÁŸd‘êÕ$•WÿàÁw°÷öÐØ&_¹iÉ[ýNºŠxÕk¿y$Ë{Š=³´¢E-/µ"ktÑ€R£@¾J)ŠÒ²ŒJ2Ùi«kBCVž5'-!ÊDN6Q¦2¢°7ˆ2EœN”©”(l¢ŠEÌN”W‹E*]®¡[X+!jUI¤z©€TÕ©ÛaºˆŒ¨~‘'¾LÔë û’·ýNZŠPk-%3f-%õƒ¬WÎÁPZÊW1ˆ…ƒª©, 989ؘÊÀÞ@ÀTŒq:ƒ“@Àæ@ ˜1Äìxµ¤Òq ´£i«!î%àóíü´‹©üéŸÝ?ºI®¬NûPÒ>GÚßN9î³ôˆN—ž_»7_íÞkH%àöáéÓAæ¦yÐ$[Èg{Ù·í8ØË^_ñ½‡|mÞ\%ù÷+yȘ&Û8Zñ^›õ¨Ä¬úøÛjõ˜·ÕcŽÕc‰Õc>_=º^`b¬d£­AJ(Мdc‚}NI)$ÐŒ„#‚­NˆÕˆ‚«[*Ÿ:ŠV«"Õk¤ª HÝN Ôí,@dФQ‹ š5 Ñ)É[ÄéáÝ)ºfÿñ°ûöpw¿ßýQƒ;6÷Ÿ×dÊ:ß[$ý§´÷cVWxíí¿6øzoøR߯¤µøÆ9}Øô™ÊèÃÞ ÏTLq:}¦Rú°9è+fL1;}^-F©´_C›SKèÃj©$Vs© TjÕ8,Tã0PdôMr5CMßTX·qÑò+ƒbå«íBSs¸ÛÝ~¯d®Í„ÂΘ²‡Ý~~rsײƒ˜µ€ÉFÏ”Ö5œË~Õçî76?j÷k¿g(¥Yøbƒ£‹%bv”\%(¯£ä*D‰9 %WJÄì(mfˆ3JQ-‚«´_ì™#(µT«¹TP*µÀjªq(2”¤@iªPêK3éÆ@éõ;ɬ¤D ’ÙCîk£¥ ÉZä3FT›ôÁ×[cû©ùòÓÕ¨ÝñÑ`ñ/¹ÙýKÆÚºÓÐÆ–;ÝX:ÝxAÚ8h˜ i&rÒ°9H3•‘†½Aš©˜4âtÒL¥¤asV̘4bvÒ¼ZŒ4Rér tbÄbUG:þÔ¼=>êcúætu­ Ö^Ÿ¦?~eãDY/wÅ Ëg Z±,2 3Ë"æ û¯,Rº 5à +f [-«# W·T>u”,¬VDª×HUº¨ÛY€HøZe¤këa0•app îdŸ¹Ïó[jöŸv7þý“RÑ5¶Ô(k§ÇßmÌÀXó3 ?CûêÍØe~þÉwä 1ð+{@¨MZÚ;ü â<þÏ&vB…lÎ#o”Ýí®ePÓ-Ï%ÃŽ_ÁÈ}›ëOâ4ö±å»-m»b+?´?ûØ4n—œ\ê}ì´¸åÔOk[ò@uôŒ’ÙµáÓâ–¾.Öñ3bæÝr4æ3Ô#]5íÔ´¶J¢Þ MÛe%m—‘Ð$0î˜Ó!ÅöœCÜþz?áeû:q(-J[J ‡RœWò_CþˆÐ¤ñ¥î54qµ>t†G6éwØÄlgc{0ëz-¥éçµ’–”Ž7:Ðù]Ki÷.•n7R˜=2^7ÝEçç"‹¯â|dkö{–aõ–`þÅä‘„º.ŸÐ=§,K¨Ëò­õ[ë¢ALE¸Ðº@%Ôui‘^W[D×4uá¾˜ó¬ ¦Ëþc–·a& endstream endobj 256 0 obj << /Type /Page /Parent 287 0 R /Resources 257 0 R /Contents 258 0 R /MediaBox [ 0 0 595 842 ] /CropBox [ 0 0 595 842 ] /Rotate 0 >> endobj 257 0 obj << /ProcSet [ /PDF /Text ] /Font << /TT4 475 0 R /TT6 268 0 R /TT8 269 0 R /TT10 270 0 R >> /ExtGState << /GS1 478 0 R >> >> endobj 258 0 obj << /Length 5625 /Filter /FlateDecode >> stream H‰¼—ÛrG†ïù}ÙÜ'Ó§9ܨʱ•Ä©râˆô•“ •5¶å•(Ç¢íÊÛ/Ð@÷Œ(À›ƒwKU9?ÿƒ¯þv·úf·ëŒ3»×«±;ÓÂ_~ÓM7Àkß„® fw³j³øáÍê›ï·Î¼¹[mÚ¦mÁúj…oðKŸW/í“§^oº&Øgkç›ÞÞ­7½}…/·ï'š®i׿í~Ä;tgX¨wí`6}lÆä³{ c–kùØ Ö<¾]obÓÙ=ý{½Þ$Pù⇵‡×› _Mf{ /\ðÿéfbñP~GÛ&ô!A„pó™÷%4—04ûüâÍdRZïÞ­Îv+g®Ìª›8˜ÎˆÀ›M~ý0­^ëBß6¯Ç”štOI>á{Á£+t›Ø7Ý_‘òoÈŠú+Dß—4Ø5~`ͬ {È*Öù÷ðæGxïàP€ŸkÍ3óò·Ö\®z(¬F?üf•\j"º^mWßæ2Ž_(ã"¨ŒéÙÖ²u‘Êöô|‚b‚_íôkþï¡j‡ÆÙéÒlËÅ«uh¼îrù´Gãb쎋†ÖÜN¿äEÀ’Î5aHÉÙ°æ_ãW‹wqpNœsé×5¸ÈžuëMhGda ežì/ðkc³‚+CIö)‡ÜCôø06ù•ž¸®@P1+hýRsÃô‹6”òÁS½'ùäš.Š.Ÿ|ã|–Bj†û|=ÀïQò=F±Ð‚«¿þ؆Òè‹ ~êR‹69®Sã9PÒéÞí’ƒ=H´é g×ò,zß%XVK"ó%K%-ŠÊÑË*G"‹šˆWè¹èxÎ<+ótÏï`wv \TàÌ‹§OFØ•=C ßžÀ}Îоï‚Eg_<…ï›Ä1±ÃG)|õÚ—Í¥üIÕ½Re'£@ªJƒl.@T³Ì„bf,8[J¦ëc€%H„m0>ȳ .2)©œ*AZäBRç`uF5 Ã9¿D Vú‚ÀùtÈ ôÐE Þìôi2ÎÌ+ªž.®§õÆ÷Ë›*¿§vж)R;À&¸òGûhíàõ I{0Ñ‚wCÖ=b4âòÛi0WÔäzkö·{þÊt7DpÞþXCaô¶9"(D¬… u‚ds!ˆT Ù["U&Hq2A¤ªÉæBP5Ë)f&ˆ³¥¤dº>†Ð©Éê"“’Ê©¤E.$uVPç`Q#ÊÒÇ%Ac!‡*n"‡[ ¨‡¦€³ø³éòêÂ|‡UœìÕõ´Q†2œßù2äI~; 4ä•ylýùTC$ q]hË`6VSÌ‚ý38;$Ñ{x:þ{af/ö"±‡˜³Ýwì4öHÔÙ“Í…=R5ödoaT™=ÅÉ쑪²'› {Õ,³§˜™=Ζƞ’éúâ p²ºÈ¤¤rªi‘ IƒÔ9ATØëüð¿a/TöºÊÞ‹_á{ Aë*c`ÿUèëÆœ™>Uú3ÓǪBŸâeúXéÓœD«}Š™é›Í"}š™è+ÙRèÓ2]ƒzz’ÅE峓¬,ò žœdqãOŸ›ºN.û®–þ8T¸0.æáþÓ1©³Ó¥ÙþŒHŽö¹‚Ÿ'˜h±íôûG6{;e‡‚ ÐVÈs4€:7Ž…¼¾½Bn{Éþ‚m¯%ðî3„´heM'H´€²¨ñ#: >Y”é‘} OUvDkA§Xerd+ƒC9Ò¸‘³Ë™OxoY­ ”Õœ#QªiÕ©¨–XDQ£'†&¶ zBm>zNÏ¡L‘„(B™N¹‡%‚›C4À5 ¢Ö᛹‰½´¯× ;áñÁÿrcû¯XµË®VÙJ­ÄVîj©vµô®°¢ºHÔñ’Í…/R5Àdo!ŒT1ÅÉŒ‘ªB&› eÕ,c¦˜™3Ζš’i~ “¢‘&«5“²šS%J5²Z‚ÕŒ(j¤ùBÿv<-¾´O÷w¸L°‡õÏT¸~žþléoÁæ3 l$ê°Éæ©l²·ÀFª ›âdØHUa“Ͷj–aSÌ gKƒMÉt} ¡Sa“ÕE&%•S%H‹\HꬠÎÁ¢[‚Râ6—*3„° q°ªÐ~ 4‚vŽ£Þ}<|ÝÙл:¤Æ%\àŠíÉ£ÐçNÖ÷xo÷˜ }iBLõ`ìOüðO4ÚFkîð8åpb®Þìoù:Dôy{ÈÛioʵ‹ËãÓZÛa5)|’¨ó)› Ÿ¤j|ÊÞÂ'©2ŸŠ“ù$UåS6>«YæS13Ÿœ-O%Óõ1´ƒÊ§¬.2)©œ*AZäBRç`uF5>û¡/m±òÐÏ©œ{K'·ÞÞòç¨÷ˆižó¥ÛŒVøG¾2i½q¬÷ñ<„Þ^N¦‚‹Ç@ ܨ¯ŒúÂh°ž`Ì'¹XOrC%ÕÙ3úéÁ¾?ü±ö¸G˜;¾åòöõ"òËßNüæß°D‹[–½¤Ÿ™š³÷ оJq"ú¬sx›kÍûüö·ofÊWhwö†4„ÆÊÞÀ¢º7(fÞXUöÅË{«âÞ 9io`UÛ3ï ³YÜ43í %[ÊÞ ešò¥l ²Xó(Š9O’Ró Š%NI,aHš¶)¤b^6íƒìã¹Mw–ÿaÕÎ]æÛ‰¨Øý‹·•¡ÎØŒÁó]]rûx¨ ýÉ6ï!(  °LsoOußHeßèæÞko‡ßRö ÚMr+7W´&kö·û -8ÑŽÒÑŽ‚ûÃ1±]«á ŠÎª`+ ‚¤Q*¸ ¢ É|J†$•LÁV°$›Ì¤dc 1R)¿ å@bãï§QVKº³"K%xEåe•#‘EÈÜ]¾8FŸn/s7ƒ–ÂçÌDçÌ¡œ3Ÿ3¡¦´©ŒÎÚ€U{K=É8¸n>GÚåüèÏɧ&x­¨IÔëZ6—Ò&U«nÙ[ œT¹Æ'—9©j¥ËæRìÕ,×»bæ’çliU¯dšCœ—°ûÅ£<‹jͤ¬æT‰RÍ…¬–`Eµ#ŠZá·0qúå|úà¼vJÈ€cg9LQOp8šnËÅ«uÀ.q÷uÏ.7¶ÒYœE Oœs¹³ CšQÂC#ôT'ÒþQDÔˆ"Q'J6¢HÕˆ’½…(Re¢'EªJ”l.DU³L”bf¢8[QJ¦ù1ø\‰ÊX'«5“²šS%J5²Z‚ÕŒ(*Dž¿LÔé tHµ|-¨¥–’£–âB„©‘9ˆµ¥œ• +UMe8F Žmã:U3#Àª‚€âeXМ„«Š™˜Í"š™(ÙRÐ2Maȵ¢4E-™TTL•,•\(*+«Œ,jt¤d‰@¬ôóéè¡q@½ÙéÓd™V.T=]<\O0LõË›*¿§ж)RÀ}?påöÑÚÁë,’\G狼²î£—ß.ý|ÐèËAc(þø ûA<°RŠIÔ ’Í… R5‚do!ˆT™ ÅÉ‘ª$› AÕ,¤˜™ ΖF’i~ pK Q¬yÅœ'I©yŧ$–0$MC'Áþ=,Ñ :8@q÷8Ü~Àㆷo&ólº¼º0ßaù&{u=m”ìøH  t–Ý;möò•Ú@·& 8‚.´e+‚)aÁþ€CX×B3rx‚çâïAfèB.tÈç1t<¹¬éȉÖB\5àDgá-‹2nÿá½Üz9r(üWôØÆÞ¾wëeÃñbça.ñ%/óä¬{/|™Œ¥û3vñ’E²º-£™$0`[::¥.¿"‰}N[)lЬ…£†­NšÅˆ†£ë‘ïô»I³FÔ@¬¦A)‡«±S¨Æ^ Èpk¤O-ÿÜšŒ[Ÿq»ù&ÞZÈÛ°#e*Z¾á®m4Ë q&rä°9˜3•A‡½A©;âtîL¥àas—Í=bvöi?†ZƒÂèÃjŽ$VS¨ ”cÕØ,Tc3PdôUÒ"×KúúLÀfî-¥CLý¢üµÉ¨/¦»ÕÕG%sS|"ÖÆ”-v5ý²ss]LÉAH¬Fµ€•õœUµÙ€Cž¶šTðºâ{-x¥ñ÷¥*¥=AÉDŽ6J¦2”°7P2£DœŽ’©%l”²£DÌŽ’G‹¡D"¡é)JX]D©* -bÔy³@7D‚R#sÐØ.Pjr1©»@éí¥ä¬¤Dµ’³Sªk¥É’ñUVºðÉ\Ø>çëN«ã‹ÁâR±ûMÆÊe¥Ë u%-Uº.WºnŸ´FëaOHs‘’FÌNš«„4âuÒ\…¤1§‘æ*#˜´Ù Icf#-¢EHc‘ÎÇPŽŒ4¢."‰T±@ê¼Y Î›"#­odëiûäçâÝÓ‹.ÓÛõ‰ŽV·ºš¾ž¾ ¶îwÁ64§õÈ`3‘ÆÍ›© 6ì ØLۧÃf*… ›¶lư³ÃæÑb°‘Hû1hÂ2Ö ˜ãÅ'¤ä8@1ö‰ÄØÒem){^¶†ópä”}²~°S*ÅžtÚùhœù{?ËgHc8djm¹‹_ïï¼9„§E¯8ïŸÌøê„¯¶|s&åk!¶:¬…¤¸²Ž±cbkS/Y‹±­›Ç¶.Æ¶ÞÆ6í{÷ƶ¦+‘¢p-X‰\A¡HAäqþD¢ð[g6Œ²9sТŷGMqÃj„‹¨,Åæ‰ê{Īï‹ ºjÐb3C§ íhôÒvµÝÝIîéøµòrÔY9£u^Žä a%á ¹ 8ÔåY껄ƒì-—›â&ÊL}Pfjù\Í’ÚDž×Ø©m*Ënì7ç8qzš›J3›#Ù³ç;1{Ê{´XÖ“Hçc¨c´’‹°=ˆ3P‘Dª‡ H‹X uÞ,PçÍ‘%¾ÞÂuÙÎÕ¦Êwzë‰9Ù…ÜVwÚÂËC•z¹xó~Ýhw÷ÂÊN½èÃ5¦>^c¬};èÜ*عi é «.mR^¥jQ&r¢°9ˆ2•…½A”©˜(ât¢L¥Das•͘(bv¢§-‰6h ÖŠQÃV'ÍbÄ@ÃÑÍ‘o"}š5¢.ˆTa@ê¼S Î{"íOùçàÖdÜúŒÛÍ7ñÖBÞn„)SÑò  p²RW3âLäÈas0g*ƒ{ƒ:S1vÄéÜ™JÁÃæ /›1zÄììy´|$ÒùÊ–Ò‡ÕE$‘ê¡Ò"H7 Ôy3@dô ]½¤¯Ïlæ>ÑòW:ÄÔ/Ê_›Œúbº[]}T27Å'BamLÙbWÓ/;7×Å”„ÄjT[XYÏYU›M8äi«I¯+¾×‚W¯Qª+M‚’‰%l”Le(ao d*F‰8%S)JØ(e3F‰˜%C‰DÚ¡Ô/`(a5G«)TPʱÀjlª±(”*9šº] ÔäbRwÒÛKÉYH‰’['¥£U‚B †5Ê{Œ¨²Ò…OæÂö¹8XwZ_ ÿ“ŠÝo2V.+]­+h©Òu¹Òuû¤U›”’˜4)iÄ줹JH#^'ÍUHsi®2ÒˆÙI›Í4f6Ò"Z„4é| íÈH#ê"’HõPi ¤Î›ê¼ 2ÒúV^ü¤íwŸ‹wO/ºLSl×':ZÝêjúzú&غßÛÐj8l&rذ9`3•Á†½›©6âtØL¥°asÀ–Í6bvØiëFŸáZX)LøIÞoiÚòûÿY˩ެGyBcJ½ðXòä—Z:IZý^u9ëMq.…ììñѾY¶üúæ•3äÅ—ˆ–›&r²±9è5•ዽ¨©˜QâtM¥,bsð–Í8bv¨*Îg”áf<<$/ e%ÒÁ‚ò$Ï[BªÝýêÊ2S·lFô¿*›ÔÈŒÅú@vw“^öÖn] z¬.§‡Ûíý³uAcñóý¹äQAý;¾úÕ°ŠFÇ??Mò,§r¶§ò¦ö<ªîÁ%Ÿ ø$Ó­O;Ðè$“ƒ}N)7ÐØ„Sƒ­ň1ƒ£›#_Õs~uõ¾©–}-Ï> Æ«ä›KQåWþ·»i¥—ö.m YñE®ë¾‘ó¼]î¤]nË7gòKSgiÀ£]äÎ>Ñ+ÿÊ/õÔI×µœ}[\<íå…4qi Ð¥n·ÒÿÛ÷þ÷ü£l…x޳TÞ}¸¸üßë ÝŒ4A“Dó==“F²ú<9“s»,5“Æ2=1Ãó---2$+qD#ØË¬k—Ú(ç^ÑÒM;vLà+]Äëú!šÈO,ë"^ÖÏØDvÈhQQÈŠvþ&I°¨‹x]O¼.Ë´®‰d]Ë?1ž>`]Óð²Ç´ÿËRöV endstream endobj 259 0 obj << /Type /Page /Parent 287 0 R /Resources 260 0 R /Contents 261 0 R /MediaBox [ 0 0 595 842 ] /CropBox [ 0 0 595 842 ] /Rotate 0 >> endobj 260 0 obj << /ProcSet [ /PDF /Text ] /Font << /TT4 475 0 R /TT6 268 0 R /TT8 269 0 R /TT10 270 0 R >> /ExtGState << /GS1 478 0 R >> >> endobj 261 0 obj << /Length 6899 /Filter /FlateDecode >> stream H‰¬—Ñn㶆ïý¼”€µ–¤HI¾)°»)z¶8iO7ÆÞ´½ð&ÚÄÅÆN³N‹}ûÎp†”lÏ8@À±ük(ÎèÿÈáÛõâõzÝgÖŸ«fÕ éK¿jº>û¦ílkÖ ›ÄçûÅënœ¹ÿºXÚÆZ½]à¼éïůÕÕûw?×Ë®i«ëÚù¦¯¾Ö˾ºÅýÓhÚ¦klýûúG|ò@O†zg³ìC³Šn0ë+È3ˇf¨Ì»}½ MWíèßçzAåŸkŸoGss 6ü|Y<ä9pöÁ6mßFÈž2ó>§æ"¦Výos?šØÕë?߯ÎlÍ¢[5a077Ëôù<.>ëBo¿‡›x¤Dñ»£+ô˜Ð7Ýÿ#¥9$E…wIã„]ãÖ\‹:J@VÉX~€/?ÂËøîþmœ5׿×ß­¹[ô`t£‡‰?.¢‹Mà«/‹›ÅÛdãpÁÆd<ɵ“mÙöÝ~‡m\5>ÌO›ÇzéÛ&VcmÉwwcrŒ…©7.„îÔ'4ÌÍøçˈ# ¯(¹¦b4'ahs¶—£Øß*ôº«`NöÕÚßj˜QßÃH®^¶v… Ü€ÇcõK½tÁ  ï‡Uõ¼}¦Æ;`@…aá“7‡‡Ñð÷ýþ`RÂCµßÆÝÁl#&àqMš8˜¼©ˆ=Ô_ï2}’‡t¥kBHŠþW~®¹a뉆Ò@qà“#ÉG×tAŒòÑ7Î'©Íp¬Á¥3 ø%ßc3­ueö§a(­|ƒ©ÎµïBΫ ±ñ\€$=.:XÕÄ0]áÊãXžEËj.¤¢b½d)—EQ9{YåLdÐm{ÞRXßZ:¢å;DÒ|Ü|yamï, Éu@^Yg-4 ôoÆêæ?H, «LþX¯H‘ÓUæ+B [F¾Oô•Ùòæé™;æÝá” Ðᪧ B¢N‹œ!UcFŽÍØ*“£D2<¤ªüÈÁ¡,S¤3H\-%¥Òå5À$ºÎê,¨³JJ*—JfµÔ)YA’D ØeŸCÓhV4Ûݽ¹I†îª‡äæXi{› ³½í ýÝ7¡ÚÖ-°s¿ÛöÏ—¶¸Ó*oq±ê3 n4L€Ð6>7G42¢¾:Ús'D»Œ¨ÏˆFFÔKˆ¶í¨ J¢Ž¨œ%UCTŽÍˆ’*#ªD2¢¤ªˆÊÁÑ,#ª3¢\- Q¥Òå5´º¯Éꬒ’Ê¥¤Y-$uJVP§dQCÔ‚¿Šh;GôãøŒˆ¦CB³Ýï.ZÚ`怆hË€Nx¶ž¥ûä¾ôh •ÙíwKމŒÕÓá[퇳æ;=uöäàÌ©{rlfT™=%’Ù#UeOÎì•`™=%˜Ùãjiì)•.¯Á*{²:«¤¤r©iV I’Ô)ATØëúR'örûx=nv[½ -lžñÌþA°ÿÇäðËöO[›íNn¾;ż;¹¼;Þœ°;uà+?(„°¨¢3!¬*„(±L«"!Z$ªFˆÌ„LÁ"!Z0’«¥¢Uš_6«òÐù¥’ª¾Uqä¬Ê#ç—NªòÖåqQReGª[B7«òÐÙ1ehÅ2òЬ*C³£øª–‡fQù¢kÕëõÚY+ÐgyÙ *2_¶ÊÓòÓÙ&ßÀrd`é Ø_ía»‡£åí ýwôV0ì̇ñˆ¿ok7VÁ÷}­±õ}  ¾ã‰®Ì5¶ еonŸ9ȼ©áˆàóèüïúhÏ?Ñ=/G€. ´ú1xízêÖÓ¢LM?§cãiöpx®»4ÞËa¬á]Væ§Múÿ8Âоíà¦5,µÀ^Eö<Ã…7ÿþ­ ˜‰…#®î:¦êcÝÃbþ꯯QÛ¬`%Rªýã#=6‚ã…¼…ÛµŽSÉé$ê+†œ×R»o=»m¼‹"‹T ¾?Ž…¡§‰Ó½J’*ÐÝã"¢·n˜å$ðÛé³FqšµëÄõ³•}YÍï)=¡À=œ¾ YεVÔ\MY.õRd®ˆ¬–¤d™Ö–pai4ì厎Â'X ¬ pÔàÅ3õ?ÕÈýæ°ÝïÌÕæ0"h}ZTZø¤S€'Ð`çjOû¦Öcß´ò0ërü¨®Öéðá¦ÃG:zÄùÑZ²Ý~·¤ÁÆüœ§Ü¹ž,|hÔƒEÒtÅÐÌ_5üÄÈL_UøäPf/‰*zbh&/‡ŠàÉ‘ÌUIÅN.p)~«7=²:•P§* ꬒZrÄY6‚ª,,LÕÎ1Še‡¦ƒš—èð ¡èhasyJW°ÓžèBèpOLzÚòi¬›ñÏ—qw[/‡4FÀÛ!F3…åi`!¹h!çñ¨ÂÈÁão~ÁÍÏFÀ‰¡ÃÓ¶7Ã.NØÅŒ]GØϰ#¨îHÔÁ“ƒ3y¤jèɱ™=RUø”`¦T?98óW‚E•X&ë¥"¨»¼‰CðêÏK-¨S-%q*– Îª!©%]Aœ¥#¨ ƒ±Ç—3cÐ3ø—˜!Ûwˆœyþf{C«;ÂÆ§&l œÀ¹zk-‚ÓG¼ iíª‡¾p 5N°qìàç#ÿG¨Q'A“ÿYTý¯³ÿYUü¯Ä²ÿYÕü¯“ÿYÕü¯³ÿ§`ÉÿZ,ù?×Kó¿Vìò&Jãw¶)êTKIœŠ%¨³jHjIWgéªæ¨ŠŸË!ѵlÿëÍÓÓvw'?èã†jÿ’:¸¶Â4RF¦o+ܼ^Yg#šÞÙÖR7®Ç¥÷ 8Ýð)ž9¿ïÑ\ŠóIÔ/g瓪9_ŽÍÎ'Uu¾ÌÎ'Uu¾œ_‚Eç+±ì|®—ê|¥ØåMøAu¾¬Nµ”Ä©X‚:«†¤–tq–Ž jÎpèÈùS£55IhíÖy ¬PßZn„¦6Èç6·‡SKwS,M¢ni98[šTÍÒrl¶4©ª¥•`¶4©ª¥åàlé,ZZ‰eKs½TK+Å.o"¨ŽÅ©’‚6Uê\œUBK¦çÚ,‘sQór€Cì0_ÅÛ²Œw¼Œ¡kÙîw¸ˆƒ—¶OéT1T©ª'\ʇÐÂêL~ïØï°–çÆ¿-+ù:˜²Žg¦jû/õ.BXözÔ»!*»<^èW¤0öw¼Ð©aÙÙQïQ¤(öt¼ÔH…äñêü°Y*)ª¹`²˜ë"ª%}Yå,E±ä"ª`ê×ë5ìSfýY¶w -½ÙÛ­Š½=Ûû=.Úx”üòr7š«=_½Ô¶zÄ…}füí];l\6p ß:_í à+¾{ƒ ñ ìjp´5‡‡)ÂF‡áøûñ`ò†òþ0>š-c¶e–u }LõÎ|úF?-A*ӸضW̲+ÉJö/DØÁA÷ð㦩ÜpsRs·ŒtËÑlCSî+ˆH5èòPÅcìÍWº~Ø|ù‡õrëm븢ð_áãaa gÎ̹ðÅ€j©ˆHI,Û('Ŧ]5å(RÑþûçBr-¦}ID/­¡fÏþö埫ýãóê·í껉[Ó⩈¬ØŸU«KáÞÙÏéÂñ½ðû¿Ø›ÎéšzÃx”Ïù²Õ¹¹Û^Uš0\:°¾j±Q‘×lÎ%GUVu°7Uií!f+?ªÒ „͹3¬CÄk¥Èâ%ÕÈ ÇÕˆ~q~W÷(.ÇéЊUÒÑÂf–»(ò);Ü!çËçKä\2*‘žs=¥ö&r)ŠýZJQWw ørø €»CÀƒd'Ä—‚ø’[ÄÉødþ—~zr8Ù½Ž°®;WüK ÔSzV¨z̯H ½}‚³ÏßVq®0Êz-ß”ÛøÙÆécnûù²§c±ŠÁ/GèY2¯,©lÚàe»=tBQ[Pà-(Ì^pj[ÐRË• 닌C>EË’mÎÉ{­¦È‡ÐùPŽ›õ¸øª2‘…˜So?‹s§§ÏÝNާÈ#ûeWGG¹±)¤1Ïãx–F¹ë¿Î>&÷<qbÓå%6‚?ÊÑitîÜ…ö‡¯‘ůe"­²ÄlUÖTRe‰×ª¬©¬Ê2³VYSY•%f«²ÕŒª,ój•Íñ"U–ź‡1Öiý|õ /Õ½‘«È€óí›~³5œZÇ}œT"j…P‘WlÎ5@UV°7c®*Åœ˜ dU)ÈØœQ-fˆ*ñ/J#vŸWë;…íCÛÆ‚ÍP°™*6¡bs2LùYºÛ4Läà`s&GU†öfvT¥ð³Ñ£*Å›3?Å "^#ÈâE"Á./ÑÖˆZc‰Ä, 6Ñ@j¹.›ë•1d’âÜôcÈ· }Ü>E†æNPÚD”÷g *£œ³QNY …%_X+K¾²4ÇeˆAŽËÊ·ýój÷Ed/Ǭöû =1]#È1ߟe#ZºË#Ç>æ aPEÎ 6gUe bofPUÊ 1ƒªR±93XÌAâ5-^”Al}‰°‰—e bÕbID Vs4ˆª×Åb¾Vƒò}CPóv»}Ø të‹àéð†/„‚A¨ Ý?É¿Ž’éþ¤¥ SújœÎ*òtÆæœÎª²tÆÞœÎªÒt&fKgUi:csNçb†éL¼–Î/šÎ$Øå%Âé¶Û„¨5–H¬Áj ¤–ë±¹PY:Ëb맦¥¸¥u§EýÍãþy·Ù¥Â+¹ºzÔúìºU”¤bKF÷›Yг&¾“Äý««~L+Èfpqh²¼ïÞÜÇâ?Ž)ëSñO¥lK¿v›Õ{ù¶¯þ¾]íÒ˜·ÈwÿpÝ]þ«·w7ïŽû‚/{°5*H*r°9ƒ¤* {3HªRˆÙ@R•‚„ͤb† ¯dñ¢ ‘`ÛK„ˉrÅI¨åH!±DŠvS¤•‹ ‘4ldTYÚÅÆ‚&%(fè"#X J÷ï8˜ùN q2Ÿiž 5S/Çš 7@C„%7ޱûð>5'{NžŸÆQ‹ÐÔ"´D€"5PÂX…±ý=v'û+êã~’ÆñÖLO<ЙÙéuî"è`«‘“D ´fn²bƒFF‰BƒlÁ.çBƒÕB,æ(Aµ«vW(–Û@•¡³}‹ÎÉFqýð¼Õ¿t»µÜ¬Ë‹€@3÷ò“o¶ŽÍP qíÒq¡ù³¥£í< œiL×WYºIæüém:t·7G ÙžB&R†ˆÙ 2•PD¼†‘©Œ#fVLe$³¡T͈%æU˜r¼M,Øö}üJ‚Qs,±˜ƒÕ ¬Úu¡X®U†Ó$‹Ì 8)9ƒYö•f#QDœ!Ò®#×W6˜!â[@ü! ³Žf® R™ þ¸£ sŠáAEÎ6gTe<`oæAUÊ1³ýá›3Å y ^ãÁâEy Á¶—XêâsÊVs,±˜ƒÕ ¬Úu¡X®UÆÃCÚ¶—PÚËÜLf’½;ÉÔµ–4©mœÏe.Ô ¹±„ÊÍTθ|,SÝkD»_Ç!­Ág>ËÄ•³¹v˜Ð)u”t”IÖ°°*A*r‚°9¤*#{3AªR‚ˆÙR•„Í™ b†¯dñ¢‘`——(Ï)AX­±Db P›h µ\ˆÍu€Ê ñš¹£ü¼}Š<,]JÔ±{ܯî”™MdfL‰`Ô,…Ÿ©+5s÷ó]ì6“‹Cšá2'\–—å—Aq™*.c·úùîêicXE9"ØœQ•!‚½U)"Älˆ¨JÁæŒH1CDˆ×±xQDH°ËKЋ5’tÁb ¶¾`­¹Èÿ¾¼ø $5ÝÅmJw´»|x{-™?McYR†BEP*b{(T8qÄ<¡™Á\šÁBKÅp8ƒM:ƒ ™ In%ßýîæo¥u G°Iãh@k&#‰ èÌ\$‘b­FE)К™ÈVˆv% p ¾ç@`µ†‰5J@mÔrW 6·*ÃB ýзC—/XLŠÅíö!Õnß½¤†2uÛÏšÐ)O{ù–K‚üöµ1¤#Ô}¿ýýe»ÿ:uÈå—q\ÛN¾Y!œ Bß÷¹5ùnX_ø~û–àÖý›S/Õ `8ÊW§ƒ¾¤]i©]I–¤»·ÇØyÃI¸S‘ƒ‡Í™ìwÏœ¶ _»7Ÿ·«Òwæ´íœë;cÓ®¶¡~¹ÉøèÞ#å­'·œpÌÆf°&†L¤ ³1d*aˆx!SC̬ ™Ê"fc¨šCÌ« åx1†X°ËK ëD­±Db P›h µ\ˆÍu€Ê’D˜§³³Ûë× k£t™ŒêXÕ/¯z§c•ë}/m£,72@ýS|ú/ïe³Û6 áWñQš@¢$K>è±M¤íÝhD@!sèÛwÉÝ¥h{Æ(Š¢§ü †6—ûíuЉ|«’ÛÖùÅÊnPË5O~_M'Cu¨–;Öѯn™Ow®fhãÖ ;*rv°ÙÙQ•±ƒ½ÎŽª”b6vT¥ì`³³“Íâ5v¬^”Rl? >HÊUd±ƒ¤¥$p²|ù?Žš^æõXb2:&¡)0™æçÕSêà±zIíÛç'Ëõ#§éŠÔø°OAÕUÓº\žçÝéðz3sB&µ/ƒ§ÏP† åf²[ 3”]„Rò©À²7,CuöúZ°Ü8–Á±ì Ë€°Ü4÷4Ñ’Æ¡„Vg2‰ Ièt"“HÄVã1‰GhuÝ aÄNcQ«DQÄÎÅoM1¬.%DâR% …@jÞ+‹Ý•áä\ÿk<ÛÏoñÍ4HI‡G^¦Ã|Î&ÃÙ•pvÎ6ÃÙ/p¶ œC†³Mpže¦<ÙæÃ|§+}u<ýZ‡±º$¯•Æ =9{Øìð©ÊèÃ^ÇOUÊ1€ªR±ÙÌfÈ ñ„V/J!)¶DúH†!V½–XôbA5W«¶](æí@•a(o™6”^E”]&åY6 ŒòºAü2¹:œ\?ËûNÿ1¹š^ž™Œ9?Øìü¨ÊøÁ^çGUÊ1?ªR~°ÙùÉfÈñ?V/Ê)¶„L9ϸë;%V½–XôbA5W«¶](æí@•ð³•ÁÞøXEÅça}×I³¿IŸKÏj€`éO ¨iÝÈýñ»Æ”>ÛV±¹‡êm÷31ßTÓþ•]K·™Ú ›˜}rš¤i,3ÿâfÚÕïÞ·uùÞ†˜jr[Ë›u0ã÷“AÒ”ˆŸÓ­{ú"Ư"™÷ Ô_?­vóÍÈôE…’n¸Þé¦Hx¢ò1—c nïzƒU‘lö1 *Øëc@U:ˆÙÆ€ªt `³l†c€xm X½è Ŷ“qËPRQHÙƒ”héU»q€ð3MÅ ÛéªH®«"^Ö^E~îx]UÉÂÚ*òž€ ›Š¶†É ã~Áë&‘,«½d'Ç[ .l*^ù¦ø[€‘óž. endstream endobj 262 0 obj << /Type /Page /Parent 287 0 R /Resources 263 0 R /Contents 264 0 R /MediaBox [ 0 0 595 842 ] /CropBox [ 0 0 595 842 ] /Rotate 0 >> endobj 263 0 obj << /ProcSet [ /PDF /Text ] /Font << /TT4 475 0 R /TT6 268 0 R /TT8 269 0 R >> /ExtGState << /GS1 478 0 R >> >> endobj 264 0 obj << /Length 4629 /Filter /FlateDecode >> stream H‰ä—]oÜÆ†ï÷Wð’ dçƒäMDv]qó!Ù7N.T{í*°Wª¬ È¿ïΙá¬ô¾Û6±Ñ…yµÏ¾\žÃytf¾¼Ø|~qÓ\¼ÙÌÝš^þ-/ƹ “ü;zÛ\¼ßô ¼}»ùüɹiÞ~Øìú®ï%új_Äý²yÙ>zzöÍv:Û>Ûš¡ÛÛÝØ¾Š?®oöíB×o¼ø*~ó”¾Y.4š~jv£ëfo¦æâ‘\¨išúZƒë¦¶9»Þî\ÚCúïÍvç…ê›·ÛA~¾¿Tøjߜߥ\êÿû÷{…wù´z×wv´^*”/_*†\šñ±´öÛË·ûÆÛ‹Ÿ6/6¦¹j6aîÜÔ„¡‘ †f·ü¼ÝoÞp0öÝßwÞwþˆøÁÇ× ÃIú7vá?AË=,„ÞÌbZ°é†I™±q€iZXß?‘_ÉÃøI>! ð—Æôͳæå}óz3Ê¢‰«q¿ñÆwN{·9ß|¹,cwb©xJË8=[ŸíËöOgׯ÷Í‹Ëw?ïe„~5öC—\heIOŸõ¦ïØnw¦·rß­9Ûî+wãÛó¿È»N.<·FÞ¦9¾¹Úý᮹’…+lYýS\xÿøyx¥¯›«»ý{É8¹bs¥ŸhnnÓ÷îsäp×-‹TÛè—bF©+¶y·üLÏ’“Ð9·#ÎC͌ܭűˆ¦” 6~¨bƒ·Òr”Š$6Z•g}œ’+ê<ˆ šÓ‡1R1kÆnš`Ìš)ß¾Äänkæ¹ÇHôM˜ºá(æËwr?wi÷eñûA¡1²6šŒ©ö’@m¦¹3„¦`˜kÁTD‚ú¸©s}­O(çôW?ŠtuxÛœ/k<´_¸o÷Ë îåK:ã\(\[® ##.ù±síÕÖŠNo—w×·KPnÍNÞ7÷Ò÷ÿ4¿Ti}‘v(Ò†UZ·J;i]”¶3µ¶^µ*m‡ZÛµ²¶^µ¶~êÌÀüL+ŠÃÙÒD™¨8›]M”êJÂjl¢TZÎÞ–0T—dÕ^í˜4[Ÿ„Œ.§p?ö÷Z iî%†¹Y–n`ªåBXÊ”‰*sÖ UT[‹úbE]ötÑœ«ëÃIMËæ0ê¾jꊦ¶hêWMíªéX4µ‹¦GÓÕµÍáú°KWT3}{s÷ëv˜ÚûZq0Aî geâlv0Qê «ƒ‰Rq8;XÂÐA’Uµ_ÔAÒìò$l bºöÁµY€VÝ@´” `U ÌÁÞHñÉÁ¼Á|¶¿<ˆtrò°b¨ Ã|-‡ã—•~Zƒeô˜jZ™zZù<­LžVN§•AÓJdö™’ 7‡³)‰2Sp6›’(5…„Õ”D©)8œM)ah ɪ)Ú/j ivyýD·•˜®½Dpm U7-åX•(1%ćªielž}Hóâì:®ç1ž†nîšèSº#L©ó£mÛÉ U¾Ñ„zBÅÓŸë?ûB\TsëíÑáï»8 z/×?uø[–Í…ü:µ2•¤½íÍ~=ñ}k í£Ç÷ óÒ ì Bê «ƒJ‰ƒ$«*e²prP)s„ÕÁ5ŒdÙä`îs5»<‰ + ×N¶vê!¬:`©ô!« y™|!6çxL-Ëu»ó¡—teBR}Rã‘ y¯6ŸTA×üj¦­GÔØ®V¤tDY0¢BÙ±0.Œf7ÈÔ€ÉlÆ©8ª^,j£ÙŠ…Rà¤:‘ºD•À Öæûø2•Í-Ä0w ÒÒLµVK521¼l^ûz†2õêQ\×c<-Gºïâ¤ê½|EuÔ;>ç-gÈæB~Z™MÒäöf¿îΖ¢Bûì[}/û4}üñ}9ûÐõ“3A.'g9erâl–3Q*' «œ‰R9q8ËYÂPN’U9µ_TNÒl}¾ãS ÂÜIÈr§,€P+E¬‚ ³r´Ru™_YËÐîo“ê”]… TÈ~Ù¦—ªÖÙ»m´åòC¼šiõ¿æùÓG§5Sev²Ód;}_ìж}.>ŠŒO£HÎ-3ôÈ%?ÅV`•£&ᨊ” ñ'U£™E$š$J9„£ªP‰"ƒH2 ¤]bþ—æÛùCèÚB×.Z5ÑR+€U5€2‹œ¬…¾>‰=˜1¿S-S.˜Ízzø#¶½‹4´—ñjñ÷ýï²Ëÿ6»¼LÂé• ÷ ‡³`‰2Ãp6+–(uŒ„U²D©e8œ5+aèɪhÚ/jivy½£ªaºöÁµY€VÝ@´” `U Lµ!Hñµj¦¨æÒ’þoî-C¹™¹ök~°·4ëÑO¶–y_é˾2î7ì?«Íå|´¹+—í¥_·—²û|úì‹'±²ùÁfÒÛ—Q4A®(gEeŠâlV4Qª( «¢‰REq8+ZÂPQ’UEµ_TQÒl}K±LQLs/1ÌÍ‚´tS-ÂR¤LÑ^nÕ}Êiø‡ÞhF‡ó,AîgÏežálö,Qê «g‰RÏp8{VÂÐ3’UÏ´_Ô3Òìò$ÜD=Ãtí%‚k³­ºh)Àª@‰gnŒ¿üï:Ý´ô«¦ªFªšR¢ɪjJ™j,œTSÊT#aUm #ÕX6©–ûÅTcÍ.O‚žï0\;IOwV`g;̪Bþí“ó±9µcE1{O1«ŠYU, öçí΋%úþå{YÐnÙ—ß\åÈ_Ž·²ü[¼°¬&™j§ó1œÜò’R·‚ޱAªÊ{Îx­ççqÏéeǹKŸ?Ü“+ˆFÌ­…qµ`4›µ@&Lf¯HµÂQµjT*ÍNå(T 'Õ¨Ô%*n°6ßÇ0¡0Í-Ä0w ÒÒLµVK52­¬ÏúO9º~ã.M©ªÛ′e@oã|J‡7'NÝŸOÎvf`%È%ÂálQ¢L#œÍ%JE"a5)Qªg—JÊD²j“ö‹êDš­Obè‚£>aš{‰an¤¥˜j¹–r e>™^Н} ŧY}*BÍ*Ôœ… «Póÿä™Ë™E "Z‚\4΢%ÊDÃÙ,Z¢T4VÑ¥¢áp­„¡h$«¢i¿¨h¤ÙåIØ@EÃtí%‚k³­ºh)Àª@‰hv Rü'í~è²ò)ˆk ©k$¬®)%®‘¬º¦”¹ÆÂÉ5¥Ì5V×Ö0re“k¹_Ì5Öìò$ú‰¹FèÚK×fZuÑR.€U9€2×d!øP»fŠk.-élZöNñ¡øÉ¯ùÁ,3ùØ%:Úó´[ô¢˜87ÄŽË›[#»Çýá®ù'óåÓÛÆ Dñ¯²ÇU »\î¿£k·½´pa'é¡'u®l@j~û93ÔJ~Ï(š¤õI‰ß>îrÈßãpëÉQ½ß<üq_½M •­dõõÓ}µÝk’T?ɵmóåûo¾M/µË­°,–ÖgàŽ²òWE.6;¸ª2p±×ÁU•‚KÌ®ª\lvp‹‚K¼®Õ‹‚KŠm+‘¶>ãŠ^I¨y¥X*E›)ÒÊDȈÂàô%¯u¯¹ íú†Ñ% G Øœ+‘TÀåD‰DqB6cI$ °9Ejƒ!—ñ“*BáA…ÔÇyÝŠV­`D´º`Õ§OT%}.XeÉûd~A€^{w†õF*r’°ÙaR•ñ„½Ž”ª”*b6°T¥la³ãUÌ0â5Ȭ^”3Rì²!RÔ°z¬%Åê¢H-Óâb:@%¨…¹“É jÚ€õõ&që?ËÃú³üÎúÎO}õq³ÛÝ?ìWo£ífþ:ÇlÌbóæ²ù:USn[}­÷š}‚­“ÞRú;—F1¨~¡Øÿvgü5]Z#ÂŸŠœ?lvþTeüa¯ó§*å˜?U)Øìü3äx?«åÛV"ä]KøÃª×‹^,¨–j`Õ¦ Å2¨2þFy0.ù+øuŠßwz eŒºzóôq›Ø««ëÍAëã†Nh›7é*Wx¼t…ZîG½lùïEƘP¸P_ØÉˆ1Ýï·¯nyûåf&·¯t™ôÛW]Ý]ÝèÇÙÏíõÙeKºàu;ŽL¤³qd*áˆx#SG̬™Ê8"fãèhF1¯räõb±bëJèvSQÂ5ž–«VK"Z±°êÕ ªN‹>¬2ŽÒ441qÄ™y¶“…ˆnN9G¨Ã]ù9Ò§s&¤9[B: ?/9i•'FŽŠœlvrTeä`¯“£*%‡˜U)9Øìä3$‡x«%‡ÛVB^IÁ¢Wj^)$–J@ÑfŠ´2$2drqGO;ks¥»Vº¼U#mÛEˆ²AŸ3L¡Þlwûìc·©ó^óx *¹AÉ Ë#ð]êû!=ÖZÿ¸KÊÇè¿8 ]ÈôŽõù¹Xmv¿è„8>+@[ Üœ8äÛ´÷úŽZ_}g:¥uHµN7G}¼ºÑõðAüwoîƒý£|ØÛ¯ìKÆRΓ•ÎㆼÌþcúiàï[]èÖª6úXµ{<øà¶¸OªìÍ¿;œçZŒë>°`S‘'6{´©Ê² {=ÜT¥éFÌoªÒ|Ãf¸b† G¼qV/šq¤Øe%OÀ(W®g¥ê±–H< ¨‹j µLˆ‹é•„\;Më1,‡¡08Ÿ2¨PuÊàìÛ82ØeGí3êû²ç×M›B©DÛÍj¨?|دú/«ÜVm¨?-ß&”o‹ÿÿÍ·ãYõ¬ÐÉ R>+ÚåYÑëY䬨ì hsqƒù¯-µÚyJ;§–‰4µˆÙRËT’ZÄk©e*K-fÖÔ2•¥1[jÍ(µ˜WSËëÅR‹ÛV"/I-¢z-±èÅ‚j©VmºP,Ó*K­(—ƒ()WZ³¶ìüxÚš½„Ûrÿ÷é¹vnS{¡ÑK´\¦h™Ú”m­æÓÕ×) ¦|Ïê%ºÊ:„ÇÍTß-’&ž&Í”“¦äLBÛ…+>GLôŸEÒÈÞ’Ö®ÿï£æóéamÔæÚ‡ðß½yöœNyØe>-ÃïFU $ªTäQ…ÍUª²¨Â^*UiT³E•ª4ª°Ù£ª˜aT¯E•Õ‹F)¶­D›¾î|yûÄœDÔ5Tñ…5„¯uí+¬*]a8²‰x`_~Uùòã‘M%CÛæP•o8´«xhß:eh¼uðÈ*’m_Ùò}‡vý²ú÷»2Á endstream endobj 265 0 obj << /Type /Page /Parent 287 0 R /Resources 266 0 R /Contents 267 0 R /MediaBox [ 0 0 595 842 ] /CropBox [ 0 0 595 842 ] /Rotate 0 >> endobj 266 0 obj << /ProcSet [ /PDF /Text ] /Font << /TT4 475 0 R /TT6 268 0 R /TT8 269 0 R /TT10 270 0 R >> /ExtGState << /GS1 478 0 R >> >> endobj 267 0 obj << /Length 3153 /Filter /FlateDecode >> stream H‰¬—msÇ ÇßóSì˽Œy¹}¸§Î´35å&N«85¿qò‚Ï3¥Jdlûbؽ# hÜÆã±HÞÿp·Àâ`_®fß®V2jõaÖ—}£*ø¿´}Ùtð·-]S9µº›UQ|¼ž}ûÝÒ¨ë§Ù¼*« L¯fáK¸éãì½¾x½xSÌ›ÒéËÂØ²ÕOżÕWáÏýà\Ù”Uñëê‡ðæß jMÕ©yë˾6Z]Àƒ”RÓgY_vZ-/½Ãż•.>þÞ­I¼Ôr7¬és¸Hܧ5÷¾*]ëjð^=³6¹fêàšþi}=¨º+V¿Ï^­fFmÕ¬éKß©Æ*ðÀªyüû8Ì>ÈB[•6\÷u]ÖGJmëð±‘|oËæ‘â¢"®‚µ{N#‡Mi;ÒŒ tä¯bb½ý¾ü›ñ;Ü øQ™J]ª÷¿Vj3k!iB6ZXøÝ¬6uéé×íl9{¹š$“1eåãñ%r ëó˜È¸»9q›×Teȵ^×ôié³UÅÄN/ßà…Ÿ ïîîwê~ëûÍá¯)§`å2RÞÁB*,¤ ‰kr5®äï…ëJ«÷ûÇ¢)½ÞþvØ…”Ôëøy7@[×ÀM+X›…w£p ×=lo›¯.LK(æÁ°3®êÊZ¿+ÚÒè·ð;ä@G¿/ƒîB½–Œ7ñÍ;äò¾­£/µa›>1³žÁŸDVg§²éz¨5’qP»l ™t¤ÚÚ”—lm ¾Ø¤:p÷Xî:ѲëÂwRm¼›ÈÎL]:5jo'ưþ© qnE¯K;F ðª^]¨‡’ñ³bÚ#žˆ"Òî/ç@ r %¯å` r /'—x+€†:g2uÈ.îÔ·ÜÐìÜ·kèYŽÔϯ/T}ü¢±A·ë^€ióK÷tPmй«à¦Zÿ\ÌCÛ{ (uÁ§ Y aµš^±Ôý‡@|Wû›þ?⃇AÅ·îéÒ~ب¼¶¡…´ lJã}“û•éƒKïc«…ÝjGð$ü¢¡¨Ò׿À`Iêeºe ÈZ…úu>Z|Âk{²X¾}¡^ínÖ;ºwØÄe­¾™Dâ wA™ß=<6Ö£“›7Ã.ú¹ýzôÛò¤¶x¶L((Êåƒ7NåU©|ð¶©| Ê—Á’ʪbùàSùÈÆ|ùŒ©|P´¤ò!D:oƒ%ÍùÒž…ù\œÄ‘)NçÊ$Œ8úy.ŽnœkP¸JÐÀHk;¬Sê_cFÆ$‡1$7ôKÄßY¶gøw_ˆÿqvW­”Ú Èy͘¥¤IÊhÆ*¥3H|.s6”È ‰Y̘¥F3>93JÞ)s¹(R|›0ÒæáOÂȪ9\¼£ÂJÙy^M>²jò„¥ì…lóUÎÞ‡!¤)Ö-öé‚Zܬcµ…@—ö]PË!¤¹‡í7”Ô>%uUcR7Ú, “]~±¤9®Îñö]x S1LŠV»½Ê‹Pë>¥·î6ÐÂh Ï,ê / ¡SÀð«¶OB·{¯Uxêvûç”\j1l8WåºÏF¥oc—U îwàœ7ÿj Gà6}¸áÙ%QÄW0&‚I l‰cRY”%K¤™T hÁ˜˜Y¬%c$;EK€[Š4mƒAAÑÚò4άš#É«1T¬”cÁ«ÉYVMΰ¢Äw6u2§š& ªSc£ £Ù>¤x¯iƒQM- ›C7Öû-O/Öûpà3Mò;h©yÙÔ¼jí¨y}š—ƒ(ânhvíóð0[ñRÑ;_8ÊDåd™t硨àWGÒ!=eóì|Ûæ‘ÐMëý µ¾ýX„6½.Bù\XÈrœv[­èÊÔÉ´Ù´&¤°€5Š2Ö¼qÂU kÞ6a*µ`IX£*bÍ'¬³1µ`LXS´$¬…Hçmpˆ5¯N"É©*FšÄ‚SGgut†%¬ äSÛ&‚ÛØ˜¿-ñÛ$˜ðæã¹¬ÑxŠíÑTÖ-±aeœ]¹É8[qúrÔϽ–Ø¡ã)QÞêé²’” '7â=‡h~5¹|@[‰ì¯F±ïBÎ £(SÌ'ŠQ•(æmŨò –D1ª"żq¢8ó ÆD1EK¢XˆtÞ†ª)æÕI$9•BÅH“Xpêè,£ŽÎ0¢D±nÙœPLãeæ¸KšÖû{úŠIÓ÷4\œ5M†×'xÛ ¯Ãƒd’5±ÛëådÖ†ïîwszRlõÃ>rãô \š¢•º>2>>×s!RÏm±énwqN÷èu‹^‡ßCØã7EW¢çm°9ÅÕBªu®(ʸòÆ WT%\yÛ„+ª<®‚%ኪˆ+oœpÍÆ<®‚1áJÑ’p"MÛn‘heÅGVŒqâ”VL~rbrƒÓNëN¤]âtq¿Ùî®Õ’²ò†( 4„œ\}C©žm“í €F¨ôzí¡/Å.¸þsvt d` èêZ"dòs=>é÷D¿1Ò?6îF/ájõ¿Ã^eðç)ú~Dß'ôkBÁ‡;QßþÆ÷7¡ xý0n·éã5ÞºD'`HÔŸ ß]ö‚¦ï‹Å%޵þg •¢ò‡á¦ŠC×nriÔz³6ê·ÏÇÑÇ'otÐéõáö¬ÑWÌÁs ¹f0f©`€$U Æ*• ø:ÁÙP‘I¬ŒY*hÆ×ÎŒ Cˆ‡T¸(R|MY'ÑÁŽ„‘Us¸x5F…•²ó¼š|dÕä +J•¡†cg…•A þoGõ¢¡Ô­Oª…ñ“„½ž¬0K÷úzÛþ35iz2À\?Î&ÏËH×÷¡4à&(G@ÔM[:‰ E,c"ƒTÁ–ø •ED²DJH•@Œ‰•јÅE2FbR´h¤HÓ64ãáö¬— jŽ$¯ÆP±Rޝ&gY59Ê7@–³‚›ê|´4‚Þ×8=œ+ixôúó³õyvÚZmn­¨N›,ǵ·A45t›[«‰˜y=é¯vì¯6õW—Fk«OúR 1¯¼„!Š2†¼qÂU CÞ6aˆ*¡`I¢*bÈ' ³1¡`LR´$ …HÓ6¸ñtzŽ!¯æHòj +åXðjr–U“3¬(a T~Š!ö‘#öò°ÎdxêlÀýtêt¹Û,-Lpƒp2LˆX<|¶ùðÙfPìÑ êFFœÎ¯%FÌ#¶ AQf„7NŒ *1ÂÛ&FPå,‰TEFxãÄH6æŒ‰Š–Äˆé¼ ùHåÏą̂“Hr*…Š‘&±àÔÑYFaDßC5o¾j«2ù =áÕ§0ð5z?<îÖ· ûS'@ŸN€6c_8]Õ­žþâ©ðK€§ðU]Èo>eøxãª|¼m‚U>Á’àCU„7Nðec>Á˜à£hIð ‘ÎÛ ‰¬8‰£0$²Ê$òˆÈŠ£_< ú6l Rw ˜É S?®ów`È:Oq¨ŽA ¥>ƒÄÿIƒ‡™PêD¨‰,𦄊 ¼%€"Ë`‡ (QÀ›Ù”e@0E(FBts䕺 NÈ©#Fš„SGOuô…%ÚÄ×ì>ÎOJï†ÇÐyZ §¥Ò|{¿{¶õä—»içg@—H}†­Ž°9ý=@å› Vø5f?ߺ²µq(ÊÈñƉ9T%èxÛDª> endobj 269 0 obj << /Type /Font /Subtype /TrueType /FirstChar 32 /LastChar 148 /Widths [ 278 0 0 0 0 0 0 0 333 333 0 0 0 333 278 278 556 556 556 556 556 556 556 556 556 556 333 0 0 0 0 0 0 722 722 722 722 667 611 778 722 278 556 0 611 833 722 778 667 0 722 667 611 722 667 944 0 0 0 0 0 0 0 0 0 556 611 556 611 556 333 611 611 278 0 556 278 889 611 611 611 611 389 556 333 611 556 0 556 556 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 500 500 ] /Encoding /WinAnsiEncoding /BaseFont /Arial,BoldItalic /FontDescriptor 276 0 R >> endobj 270 0 obj << /Type /Font /Subtype /TrueType /FirstChar 32 /LastChar 122 /Widths [ 278 0 0 0 0 0 0 0 0 0 0 0 278 333 278 278 556 556 556 556 556 556 556 556 556 556 333 0 0 0 0 0 0 722 722 722 722 667 611 778 722 278 556 722 611 833 722 778 667 0 722 667 611 722 667 944 667 667 611 0 0 0 0 0 0 556 611 556 611 556 333 611 611 278 278 556 278 889 611 611 611 611 389 556 333 611 556 778 556 556 500 ] /Encoding /WinAnsiEncoding /BaseFont /Arial,Bold /FontDescriptor 277 0 R >> endobj 271 0 obj << /Type /Font /Subtype /Type1 /Encoding 278 0 R /BaseFont /Symbol /ToUnicode 279 0 R >> endobj 272 0 obj << /Type /Font /Subtype /Type1 /FirstChar 32 /LastChar 180 /Widths [ 278 0 0 0 0 0 0 0 0 0 0 0 0 333 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 667 722 722 667 0 0 0 278 500 0 556 833 0 778 667 0 722 667 611 722 0 0 0 0 0 0 0 0 0 0 0 556 556 500 556 556 278 556 0 222 0 0 222 833 556 556 556 0 333 500 278 0 500 0 0 500 0 0 0 0 0 278 278 278 278 278 278 278 278 278 278 278 278 278 278 278 278 278 278 278 278 278 278 278 278 278 278 278 278 278 278 278 278 278 278 278 0 0 278 278 278 278 278 0 278 278 278 278 278 278 278 0 278 278 278 ] /Encoding /WinAnsiEncoding /BaseFont /ECJJNL+Arial /FontDescriptor 273 0 R >> endobj 273 0 obj << /Type /FontDescriptor /Ascent 0 /CapHeight 0 /Descent 0 /Flags 32 /FontBBox [ 0 -210 769 728 ] /FontName /ECJJNL+Arial /ItalicAngle 0 /StemV 0 /CharSet (/L/t/M/T/O/g/B/v/m/b/C/o/d/R/c/l/D/y/p/E/S/e/hyphen/n/U/f/I/r/P/J/s/a/i) /FontFile3 274 0 R >> endobj 274 0 obj << /Filter /FlateDecode /Length 3261 /Subtype /Type1C >> stream H‰$TkP×^,]»DiÓ‘v;»™¤iÇišºqšLã©ãšÄØ„l ¶ z I´Z $RÛ¼ô`Ò"­„HȲÂC–1±jLãWÌØM¦©ãqúr¦M;ÓñŠY<é’ü¹?îýÎùιßw*Üñx¼§öï+/÷ÐOö¶·IU›/ä‘¢§Ù–uߺj+æ}}úô·g‘àÞÓLÁ÷¼?xJúÌ&ÿmă„ô|ô"ú)ÚŃv@oñ¡rª(„ª·@bª… ç86¨ú.´Ê«æÝà}ÁûjËž-å[º ¶´ü»pµðÏ[Άï௠L‚ÿ‚_€ÏÁãm¼m½Ûînkûòö¯¿s£)Ú_”Øp 7*ŒRô™Ø->{wÇz\9ï$’Ø 1i¤Ô`\íS*`µCëQ\§7)ð[ÊQƒˆšl‘ —’Т„¦Óh¶và:»Êœªæ¾“[–ß-b^æÏ'†(,ê¦FÉ n: G{ÃÝj§,£æaàîh¬AØçY5Ÿ½_È”ñ§é3ý$FŽ»ý¿wÔï 5¦á˜+JŒ£D¨ÓoðA>Ä‘¼Îžæ ÅùûÌ è‘Áü¦¼²¦©¤I|¨c/²çP Q‡Õ%d9à h_±Ý¸ ßóߌ„Æ?š[¸S—VÆ>FÖV;勨EùYñø—MÅø¥öŒ* ¢Ê&²9ZOèåX‹^''$€8ëëáJïÑàI”:oK›€éÜœ=‹\ÊM§±ôtìÂè5 ¶ù…§Ë }®)lÖ‘îš2œSN5Rµ`ü¸¯ê |ÔUg—¢6©¥µSgÖšLF«רNàT4÷5 lé}óÿBfÈÃbz4 éñ™dƻ߳]5Ì¢†YU¼Õ|íCÕûâÆy¾ðÙ?qÄy鯬.•n`ìûùƒ¥á†ëÜã' !;9ÅHDŸ“ýG|2Ê\b¦b=I$ö± o40Laj01ç6¬‚Jg=¡D …A¯ÂEÕâ"µTZ)Òø•3k@x÷›¼EÌÿ8–•?n¶ýœ€yscp¬ž”»%žØh&¸ÄìÍ÷3ßÒ°+ÿ%ŸmÙørëk|¶1ÿxëÆcpp‘ùˆÙžüçÇ·Ð[×ÿ’ú ¹¹Š«.a—•s’x5ˆWûË÷Áû¬åš*TS%•ÕÍÑÃÖ äwI1v,Ùx^· tËÄêà½)ËÕ¢µ¹•ö;È•‰¥–[Š®ý¾Úó¡y5/hR-œ²²²yç°ñç†=,ŸáŒÿjÁ…sï÷M`g{§»#xüàW{­p¥Y,“¢Òæßtüa²çùù¢B¦‚-KÒœLôèÌ<íŒYè5Ü1fƒ¸z@º‰ôrîÜT†¹#¸~Ñeç¦Ê6i)AHéki†[$Ê6TÑ&6¾í˜°‡ldw¼}R•1O³âbv;ÿ%f§nÞ˜ê¢Kº"xð^«›ý=ý„å±küü  !5ä‰bQOhŒ 2ä¦i8e‹h”64ˆ¶ƒíá’c,¢/<ƒrŸjÌT2fœèL€Hf\³H:9ì›Äâ¾p`”~ÊÍ í Û¨-`St¹Ècz¥à1€Ç‰$œö¥B 4”LD?€ÀYï"ryÑa™Åf-I}XI+HY¿t—«ø½¬å¬6"Z)y©’vwè1}‡M¯õÞ G)üb×§–Ϻ®àqû\g¢=¤!¯U˺å&jR(uM] «©¾§9xÄG5`ªuÊíba²¥ ¹c½ˆí¾Ÿ¿^Êv?)p+aa½Aôhãþ>g.Eq©ºUªziQ†¨&i)&¨R]  +ë¸ö)œ…à *†OŒhÐuÈ·<~Ö9‹|²HLaÓ‰±Õ¿ÂÂüÎ"…ViVwƒnµ¢· ©’ø'Õ˜:ާà‰áèH (ФHz$:œJ ®y.Ì€<ãé‡ÓŽîGC¦VŸiT9‰NÌLXuù«d±;=š hŠŽQ)œšug‘ì¹ÞN–ž0AZGqŸyȬýZÌn¼Ñ/0¡&OÇH'øßAõÒ¿›.F,RÚjíò>½‹èµöÚ{œvà´÷Y­°ÑkZQ+s¦Ô´ÇÏ9דÀšÊÀgf¶ ™ïx}½á!gÛ\z1zIN»ìq,n‹vRFÊÐø”À§–·À»Me’:´Nr¬½©¬-µa§˜ZQ…÷d@‹J&3Æ H&Lr¡3þ¥›ðmbIŸD“:EP†ÈÚ, ¦Uµ‡8å&ó;™*Ñ{ÏoÛëeŠ…¬ÖRì?ÉI±†œéÖxÙ{‘šG©ù©d&™ù‘,²œ³jÏbim´Ñ'~ÍVìLá“æ  Ìz¯‘Èq%—]IÔ¼ —ùkb*TKãó\¿#!‹„3ÃY Ì¿°ã†à¸¢Vil&é6¬ÖÎtÍ‚ÎÙžÅËð‡Þ y48?9“¢š%ç‘é)—0[¸k¬0#¹uÊn0¤è€¿&®D•ñK†k8ˆa“ ÿâuøqY7ƒÎhÛ‚MH³Wr~WÚ¸’¸]“ÿ%ó+ÑßìÄ1­T¦-ÑÈŽ[+‘_WFrL’3Þº?ˆÜÎ.¢‹Ù•‰5ä“ßê³ÿ§±úbÒ¸ãø’î’-<£÷K¸ì©{0[Ò4]Òl™uK—­Íj™Vg)ä88@Û‰ˆxÇñG   T­mf­µ[·Î7·—vM–è¶dÙÃöv4ÇÃ~léûï÷Ë÷÷ù÷ýà[}™óïLÞœðbÍ6ièbb`É€ŠkÎ;`yiž‡¿J¤–bk¨¸!¼)6¥Á;ô ™A+Fmb¨t.“ 7™(Í.ƒ£¶›ÉÙƒg{ÒJ¸áÑL<µÈ¡Üb9Z¹¥©@ w½+™!! Œ÷xã#Xß?]§š=ˆìþ€üWOxŒ!xºƒÊ”&ª ¶…Cdøx6ZDÃÉPõk¬_Ýk½Þ¿”ß¹Ž_ß!žü„mÏßKn@ó-L³Ó{໳rßÑü 93ñ)5¬ †L&µk¼=àc%WPãê%ûæô#ôga_ÞSæ Š‘ÂmjÔ*|©Ð‚z»Ž}ïúʵõ?ÔC-öMzWßlZ*kn×MùßǧÎfSÞà›:ìTvc²ºØ'©úå$™Ï,fch,Wœ«€­uz¼‚W¬ùáÄ54qmþêçØeo¯}Pa4kaqÒªi5EX+ne Þ•BÅ2Ñè…~RBËêóªú*@–¹?`u×}ˆh†È!#nÔ9{àÍ O[øAÒ«©[< ÎD:’¥²—,áúÓÖ6>gv2àqáNšvÔ72©Óbb®Õ‡ÊÂ[ò#.¬ãL²ƒÌ,{k VŽò)<Í3é –öñä‚‚Ž˜^ö#¾Ÿ³°f–HÐi”Nûs·°ìl†I)˜4ŸH²1&Åda™ÍåÃyP[ Ð%¼Dç(ŽàˆSdømº=˜§3d“¦èPün w¸|”ó„=ŸbÎÇúâèÂÄ&ý„Úræ¼9oÞG9"j6`£>£Ã¬pŒ™ =\Úzµ_Î÷p®[²núöZÖ˜grö¬$h¶NÙÁˆy–qà$ãŽxÔÏWw1áÁ‡O…“Èñ®Dì>îê¿A,!Gȯ˜ñG‘ œ[¸Á&6âqˆp½M¼Íñ§T8!î³C :FÛ-,T¸ª€?¶ÿ!•M^O>"ð¾“É)¤ø™‹³†™cg£L–­LÏÎDÃ󢲑l‡o½&îrê˜ja°ƒYgkð­£ö#©x¥™·]r¨<¶ÊHŽnÔM˜ýF@á˾|ãõÆîÉ—qù¿…Tª endstream endobj 275 0 obj << /Type /FontDescriptor /Ascent 905 /CapHeight 0 /Descent -211 /Flags 96 /FontBBox [ -517 -325 1082 998 ] /FontName /Arial,Italic /ItalicAngle -15 /StemV 0 >> endobj 276 0 obj << /Type /FontDescriptor /Ascent 905 /CapHeight 0 /Descent -211 /Flags 96 /FontBBox [ -560 -376 1157 1000 ] /FontName /Arial,BoldItalic /ItalicAngle -15 /StemV 133 >> endobj 277 0 obj << /Type /FontDescriptor /Ascent 905 /CapHeight 0 /Descent -211 /Flags 32 /FontBBox [ -628 -376 2034 1010 ] /FontName /Arial,Bold /ItalicAngle 0 /StemV 133 >> endobj 278 0 obj << /Type /Encoding /Differences [ 1 /bullet ] >> endobj 279 0 obj << /Filter /FlateDecode /Length 208 >> stream H‰T½Â0 „÷>…GCÚÎUX:ð# ìiâV‘ˆ¹éз')ÄKöåÓ-öÍ¡!@\Ø©ô†4ãè&V† (AÖn©ÊJ"Âí<´ õª*×(ŽgØ´³íÜs—oAœY#`s+î8h'ïŸh‘äP× ±ÏÄþ(ýIZŒòŠ.ób5tG/²¤¡Ê‹ú]ô¿ö!ºþÝþ¾Ve^–u‰–à´É×[MÌ1Ö²î’(e0„ß‹xç“ezÙK€CÈi? endstream endobj 280 0 obj << /Producer (Acrobat Distiller 4.05 for Windows) /Creator () /ModDate (D:20040115103759+01'00') /Title (DICOMscope 3.6.0) /CreationDate (D:20040115103436) /Subject (DICOM Conformance Statement) /Author (Eichelberg, Kleber, Riesmeier, Schröter, Thiel) /Keywords (DICOM, DICOMscope, Conformance Statement) >> endobj 281 0 obj << /Type /Pages /Kids [ 290 0 R 1 0 R 53 0 R 85 0 R 91 0 R 95 0 R 98 0 R 101 0 R 104 0 R 107 0 R ] /Count 10 /Parent 282 0 R >> endobj 282 0 obj << /Type /Pages /Kids [ 281 0 R 283 0 R 284 0 R 285 0 R 286 0 R 287 0 R ] /Count 58 >> endobj 283 0 obj << /Type /Pages /Kids [ 110 0 R 115 0 R 119 0 R 122 0 R 125 0 R 130 0 R 134 0 R 140 0 R 143 0 R 146 0 R ] /Count 10 /Parent 282 0 R >> endobj 284 0 obj << /Type /Pages /Kids [ 149 0 R 152 0 R 155 0 R 158 0 R 163 0 R 166 0 R 169 0 R 172 0 R 175 0 R 178 0 R ] /Count 10 /Parent 282 0 R >> endobj 285 0 obj << /Type /Pages /Kids [ 181 0 R 184 0 R 187 0 R 190 0 R 193 0 R 196 0 R 201 0 R 204 0 R 208 0 R 211 0 R ] /Count 10 /Parent 282 0 R >> endobj 286 0 obj << /Type /Pages /Kids [ 214 0 R 217 0 R 220 0 R 223 0 R 226 0 R 229 0 R 232 0 R 235 0 R 238 0 R 241 0 R ] /Count 10 /Parent 282 0 R >> endobj 287 0 obj << /Type /Pages /Kids [ 244 0 R 247 0 R 250 0 R 253 0 R 256 0 R 259 0 R 262 0 R 265 0 R ] /Count 8 /Parent 282 0 R >> endobj xref 0 288 0000000000 65535 f 0000092318 00000 n 0000092824 00000 n 0000092967 00000 n 0000093110 00000 n 0000093253 00000 n 0000093396 00000 n 0000093539 00000 n 0000093682 00000 n 0000093826 00000 n 0000093970 00000 n 0000094115 00000 n 0000094261 00000 n 0000094407 00000 n 0000094553 00000 n 0000094699 00000 n 0000094844 00000 n 0000094989 00000 n 0000095134 00000 n 0000095280 00000 n 0000095426 00000 n 0000095572 00000 n 0000095717 00000 n 0000095863 00000 n 0000096009 00000 n 0000096155 00000 n 0000096300 00000 n 0000096446 00000 n 0000096592 00000 n 0000096738 00000 n 0000096883 00000 n 0000097029 00000 n 0000097175 00000 n 0000097321 00000 n 0000097466 00000 n 0000097611 00000 n 0000097756 00000 n 0000097901 00000 n 0000098047 00000 n 0000098193 00000 n 0000098338 00000 n 0000098483 00000 n 0000098628 00000 n 0000098774 00000 n 0000098919 00000 n 0000099064 00000 n 0000099209 00000 n 0000099354 00000 n 0000099500 00000 n 0000099646 00000 n 0000099791 00000 n 0000099935 00000 n 0000100081 00000 n 0000102728 00000 n 0000103101 00000 n 0000103246 00000 n 0000103391 00000 n 0000103536 00000 n 0000103681 00000 n 0000103827 00000 n 0000103973 00000 n 0000104119 00000 n 0000104265 00000 n 0000104410 00000 n 0000104556 00000 n 0000104702 00000 n 0000104848 00000 n 0000104994 00000 n 0000105139 00000 n 0000105284 00000 n 0000105430 00000 n 0000105576 00000 n 0000105721 00000 n 0000105867 00000 n 0000106013 00000 n 0000106158 00000 n 0000106304 00000 n 0000106450 00000 n 0000106595 00000 n 0000106741 00000 n 0000106887 00000 n 0000107032 00000 n 0000107178 00000 n 0000107324 00000 n 0000107470 00000 n 0000109692 00000 n 0000109881 00000 n 0000110050 00000 n 0000110229 00000 n 0000110399 00000 n 0000110557 00000 n 0000114697 00000 n 0000114872 00000 n 0000115017 00000 n 0000115163 00000 n 0000118553 00000 n 0000118708 00000 n 0000118854 00000 n 0000124259 00000 n 0000124415 00000 n 0000124561 00000 n 0000126278 00000 n 0000126436 00000 n 0000126595 00000 n 0000130596 00000 n 0000130754 00000 n 0000130901 00000 n 0000133569 00000 n 0000133727 00000 n 0000133874 00000 n 0000138295 00000 n 0000138482 00000 n 0000138629 00000 n 0000138776 00000 n 0000138923 00000 n 0000142587 00000 n 0000142766 00000 n 0000142913 00000 n 0000143072 00000 n 0000147804 00000 n 0000147962 00000 n 0000148109 00000 n 0000152759 00000 n 0000152917 00000 n 0000153064 00000 n 0000157847 00000 n 0000158034 00000 n 0000158181 00000 n 0000158328 00000 n 0000158475 00000 n 0000162067 00000 n 0000162246 00000 n 0000162393 00000 n 0000162540 00000 n 0000166343 00000 n 0000166538 00000 n 0000166685 00000 n 0000166832 00000 n 0000166979 00000 n 0000167126 00000 n 0000171167 00000 n 0000171325 00000 n 0000171472 00000 n 0000177101 00000 n 0000177259 00000 n 0000177406 00000 n 0000183151 00000 n 0000183309 00000 n 0000183456 00000 n 0000187384 00000 n 0000187542 00000 n 0000187689 00000 n 0000191412 00000 n 0000191570 00000 n 0000191717 00000 n 0000196973 00000 n 0000197131 00000 n 0000197278 00000 n 0000203182 00000 n 0000203369 00000 n 0000203516 00000 n 0000203663 00000 n 0000203810 00000 n 0000207747 00000 n 0000207905 00000 n 0000208052 00000 n 0000212829 00000 n 0000212987 00000 n 0000213134 00000 n 0000219043 00000 n 0000219201 00000 n 0000219348 00000 n 0000225199 00000 n 0000225357 00000 n 0000225504 00000 n 0000229503 00000 n 0000229661 00000 n 0000229808 00000 n 0000230936 00000 n 0000231094 00000 n 0000231241 00000 n 0000232481 00000 n 0000232639 00000 n 0000232798 00000 n 0000235093 00000 n 0000235251 00000 n 0000235410 00000 n 0000239313 00000 n 0000239471 00000 n 0000239616 00000 n 0000243181 00000 n 0000243339 00000 n 0000243486 00000 n 0000244093 00000 n 0000244251 00000 n 0000244398 00000 n 0000245577 00000 n 0000245764 00000 n 0000245911 00000 n 0000246058 00000 n 0000246217 00000 n 0000250706 00000 n 0000250864 00000 n 0000251023 00000 n 0000255266 00000 n 0000255445 00000 n 0000255592 00000 n 0000255739 00000 n 0000258488 00000 n 0000258646 00000 n 0000258793 00000 n 0000263618 00000 n 0000263776 00000 n 0000263923 00000 n 0000269898 00000 n 0000270056 00000 n 0000270203 00000 n 0000275892 00000 n 0000276050 00000 n 0000276197 00000 n 0000281544 00000 n 0000281702 00000 n 0000281849 00000 n 0000286972 00000 n 0000287130 00000 n 0000287277 00000 n 0000292766 00000 n 0000292924 00000 n 0000293071 00000 n 0000298746 00000 n 0000298904 00000 n 0000299051 00000 n 0000305908 00000 n 0000306066 00000 n 0000306213 00000 n 0000311491 00000 n 0000311649 00000 n 0000311796 00000 n 0000318295 00000 n 0000318453 00000 n 0000318600 00000 n 0000324492 00000 n 0000324650 00000 n 0000324797 00000 n 0000331225 00000 n 0000331383 00000 n 0000331530 00000 n 0000337920 00000 n 0000338078 00000 n 0000338225 00000 n 0000343622 00000 n 0000343780 00000 n 0000343927 00000 n 0000349901 00000 n 0000350059 00000 n 0000350206 00000 n 0000356671 00000 n 0000356829 00000 n 0000356976 00000 n 0000362677 00000 n 0000362835 00000 n 0000362982 00000 n 0000369957 00000 n 0000370115 00000 n 0000370248 00000 n 0000374953 00000 n 0000375111 00000 n 0000375258 00000 n 0000378487 00000 n 0000379031 00000 n 0000379579 00000 n 0000380076 00000 n 0000380189 00000 n 0000380838 00000 n 0000381118 00000 n 0000384472 00000 n 0000384660 00000 n 0000384855 00000 n 0000385042 00000 n 0000385112 00000 n 0000385395 00000 n 0000385723 00000 n 0000385875 00000 n 0000385984 00000 n 0000386143 00000 n 0000386302 00000 n 0000386461 00000 n 0000386620 00000 n trailer << /Size 288 /ID[<351eef32a845d16738e7c386de0410b2><351eef32a845d16738e7c386de0410b2>] >> startxref 173 %%EOF dicomscope-3.6.0/DICOMscope/docs/dsum360.pdf0000644000265600020320000364135410010274560017515 0ustar tilleaadmin%PDF-1.3 %âãÏÓ 684 0 obj << /Linearized 1 /O 689 /H [ 4023 1806 ] /L 1000172 /E 86782 /N 82 /T 986373 >> endobj xref 684 164 0000000016 00000 n 0000003632 00000 n 0000003795 00000 n 0000003834 00000 n 0000003935 00000 n 0000005829 00000 n 0000005987 00000 n 0000006054 00000 n 0000006157 00000 n 0000006259 00000 n 0000006383 00000 n 0000006509 00000 n 0000006668 00000 n 0000006829 00000 n 0000006979 00000 n 0000007116 00000 n 0000007262 00000 n 0000007407 00000 n 0000007526 00000 n 0000007626 00000 n 0000007727 00000 n 0000007824 00000 n 0000007923 00000 n 0000008069 00000 n 0000008214 00000 n 0000008333 00000 n 0000008433 00000 n 0000008534 00000 n 0000008631 00000 n 0000008730 00000 n 0000008885 00000 n 0000008995 00000 n 0000009096 00000 n 0000009246 00000 n 0000009381 00000 n 0000009547 00000 n 0000009646 00000 n 0000009745 00000 n 0000009858 00000 n 0000010017 00000 n 0000010129 00000 n 0000010238 00000 n 0000010368 00000 n 0000010521 00000 n 0000010626 00000 n 0000010735 00000 n 0000010889 00000 n 0000010993 00000 n 0000011103 00000 n 0000011257 00000 n 0000011404 00000 n 0000011556 00000 n 0000011713 00000 n 0000011829 00000 n 0000012002 00000 n 0000012144 00000 n 0000012289 00000 n 0000012400 00000 n 0000012506 00000 n 0000012624 00000 n 0000012742 00000 n 0000012862 00000 n 0000012979 00000 n 0000013100 00000 n 0000013217 00000 n 0000013335 00000 n 0000013451 00000 n 0000013567 00000 n 0000013687 00000 n 0000013803 00000 n 0000013918 00000 n 0000014034 00000 n 0000014159 00000 n 0000014271 00000 n 0000014406 00000 n 0000014533 00000 n 0000014636 00000 n 0000014776 00000 n 0000014885 00000 n 0000014991 00000 n 0000015123 00000 n 0000015245 00000 n 0000015369 00000 n 0000015480 00000 n 0000015593 00000 n 0000015733 00000 n 0000015842 00000 n 0000015973 00000 n 0000016102 00000 n 0000016265 00000 n 0000016420 00000 n 0000016523 00000 n 0000016622 00000 n 0000016796 00000 n 0000016892 00000 n 0000016998 00000 n 0000017114 00000 n 0000017274 00000 n 0000017371 00000 n 0000017481 00000 n 0000017602 00000 n 0000017725 00000 n 0000017838 00000 n 0000017951 00000 n 0000018062 00000 n 0000018216 00000 n 0000018369 00000 n 0000018482 00000 n 0000018634 00000 n 0000018759 00000 n 0000018871 00000 n 0000018969 00000 n 0000019094 00000 n 0000019190 00000 n 0000019299 00000 n 0000019414 00000 n 0000019528 00000 n 0000019641 00000 n 0000019753 00000 n 0000019869 00000 n 0000020024 00000 n 0000020122 00000 n 0000020220 00000 n 0000020333 00000 n 0000020499 00000 n 0000020610 00000 n 0000020715 00000 n 0000020839 00000 n 0000020963 00000 n 0000021086 00000 n 0000021203 00000 n 0000021306 00000 n 0000021408 00000 n 0000021526 00000 n 0000021633 00000 n 0000021737 00000 n 0000021863 00000 n 0000021982 00000 n 0000022105 00000 n 0000022241 00000 n 0000022360 00000 n 0000022498 00000 n 0000022624 00000 n 0000022730 00000 n 0000022831 00000 n 0000022949 00000 n 0000023068 00000 n 0000023199 00000 n 0000023311 00000 n 0000023424 00000 n 0000023534 00000 n 0000023652 00000 n 0000023762 00000 n 0000023959 00000 n 0000024147 00000 n 0000024720 00000 n 0000024915 00000 n 0000025736 00000 n 0000025791 00000 n 0000026864 00000 n 0000026943 00000 n 0000027786 00000 n 0000004023 00000 n 0000005806 00000 n trailer << /Size 848 /Info 673 0 R /Root 685 0 R /Prev 986362 /ID[<318742d94ae381f5f02f6cc415eea4d7><318742d94ae381f5f02f6cc415eea4d7>] >> startxref 0 %%EOF 685 0 obj << /Type /Catalog /Pages 675 0 R /Outlines 690 0 R /Threads 686 0 R /OpenAction [ 689 0 R /XYZ null null null ] /PageMode /UseOutlines >> endobj 686 0 obj [ 687 0 R 688 0 R ] endobj 687 0 obj << /I << /Title (Figure 34: Structured Report ViewerŽ Toolbar)>> /F 271 0 R >> endobj 688 0 obj << /I << /Title (Figure 1: DICOMscope Group Window)>> /F 80 0 R >> endobj 846 0 obj << /S 1834 /O 2483 /Filter /FlateDecode /Length 847 0 R >> stream H‰ÔT{PgßKr1 ZHcÕNQ¢y@x¥D0îR@¢RˆÖ8¾‹¯V;8£ÑBã Ó bµˆïGŪƒNÛ€vpÔiÛŽè0j™¶>êtïý«ÿöËì~ûííþö·{ßøo› ^­ ! r(ÃH)" HR@ |‚/ò$)$"€ÌÇÅcIàñ0„ À^„G¡=åo¿Ý˜.*‡ÞõI?¦d6ioY¶¬/æöÊ5é±Ên…w’ Ü«~ïïàsü¢Š;±‰Åo' "ÚÁš¶•75S²G½ó)ißÝXº!´Yp†Xôóá†Qk„TúÓ’‚’8#Yáç×I«ÈwK¬/†ˆ yÇ+”Åb>©]\’:?<†Œ^¯n,Ì1Q¸:ÝðHhÄxùܶ)YêÀ›‚Ž)¿ðzùaé/+Tê¡Nþ»0iiò•e-Jo|òõ’"ƒÍ­Ìžq<ò¾£çÈsÑcÔɆò›ééq;ÜrÚ±å³K¿E_3TôÀF»­÷»Í*#Í¥´ÍFÕÎê&«¥Ü;;ƒõxúú,êFZj¸\þp£Ú^í¹œ×cÉpdÞ'aN£bg®,¯yÅ;æ˜Zjõ\ÜcpèÝ÷äÚÖ|Íž|E'­vÎ*¬§÷ ÛäåΓuÌ„¼æ>ïÖòöRGÁ~–†~^=ÝRë•:¯«2‹©yÅâ£9ª‚€r§Q1sB.³á¤>ª®ú@­Ç}^¯:I»]òë79ò&¥ Ç\jGÀÖ­+ÔǤj ìÖ8Š¥!ȶQuº&ûÐ0.½%Ôã®Ú¨±3RÃæ‹Ï‰µgJ5XšF‘~>‡GnÅ,_GMñ¹Œ%p…ªžv‡]]imÚ¶?Ì9kG“•ÛÒçÕ+꙽&¹‹Cn =Ö™¡ksXæ26Ûè¦íÑ—,:tÓßNË%MÛ·N ]/³/=1ú+S댌9“Š{÷ÎtÿðÐs§7'ev@fíw*¶ÄÁ§¼?êV?]ë'ö|ÝøÝ/pEÏvzööøÞ×ÁUü£~êÇé}ž3yŽgM ÆèΕìàǹèø9#NŒp.e²&-ncš¬÷µ­3¦Štçs)_ÖáˆémïË웤ÖC]Þü¨˜áºo;n ç Ö]èϺp—Ú×¢GòÒÈ*R•¡k²únËæ‹µú†ó³dõtGéý®®¹Ü‹‹+ïYÏÞÃÇ.¼cl KyW}ÖÆ=Žr5eö©â[®™PK•»,)ÆIÝ벤Ø÷—”qT´ÚŽé5l:kXºƒÌì]µz´LdMk'µ2ÏJÛævt¶†5©´;ÄK)媫5{Mqž5ê+4UfОüT{µÆ]‹1f,:›jWM¼Ë:£xËë€ú6ç,å&sœWô̬°1Td‹ëô–ú]ºå:¥ ¤tV÷òÈ'F…ƒÆô¼SªÌ±Ž·Vy"ë°hGíåF~ƒ"sšýÅ•¨XCİšÓ•~?‰‹±xò+_X !ÇŽõ~BÒ€ •¯á²uÅ’J Ä_þ8Ñà@‹•ÎDhÒ¢Wh•o˜ I¢A!daEáüÁ©bqøü7›Áyp³Á<;«±U>> Pø ÜøÄ2Ž89cLærÃ$Äì„}|-øúÄ‘ö›„äû× ?úv±ϵ7‚ác‚Xˆi‰ã[sÀ3¡¦@4¨@QoœL˜¥Â¨é°OQ Á¬dHJ!÷2ˆÃˆ2(†`¤ÂJ(Àü$H€4ü¥ÃdÈ@IÃ'©xJ…”a:d!|DH€˜Š|’›=g ±n,V[r|ž fä2‘´£ÁÈ2¬®ÁŠ,’µóR`ú’1Ú„>%ÚK02‘§aÞd®ë4P#ßLìO zÔ¹h'`ihgc®«¤¡l…> endobj 690 0 obj << /Count 38 /First 691 0 R /Last 692 0 R >> endobj 691 0 obj << /Title (Introduction) /Dest [ 70 0 R /FitB ] /Parent 690 0 R /Next 824 0 R >> endobj 692 0 obj << /Title (References) /Dest [ 524 0 R /FitB ] /Parent 690 0 R /Prev 693 0 R >> endobj 693 0 obj << /Title (About the Project) /Dest [ 506 0 R /FitB ] /Parent 690 0 R /Prev 694 0 R /Next 692 0 R >> endobj 694 0 obj << /Title (System Requirements) /Dest [ 503 0 R /FitB ] /Parent 690 0 R /Prev 695 0 R /Next 693 0 R >> endobj 695 0 obj << /Title (Compilation) /Dest [ 462 0 R /FitB ] /Parent 690 0 R /Prev 696 0 R /Next 694 0 R /First 697 0 R /Last 698 0 R /Count 8 >> endobj 696 0 obj << /Title (Configuration) /Dest [ 422 0 R /FitB ] /Parent 690 0 R /Prev 713 0 R /Next 695 0 R /First 714 0 R /Last 715 0 R /Count 4 >> endobj 697 0 obj << /Title (Microsoft Windows) /Dest [ 462 0 R /FitB ] /Parent 695 0 R /Next 698 0 R /First 706 0 R /Last 707 0 R /Count 3 >> endobj 698 0 obj << /Title (Unix) /Dest [ 481 0 R /FitB ] /Parent 695 0 R /Prev 697 0 R /First 699 0 R /Last 700 0 R /Count 3 >> endobj 699 0 obj << /Title (Requirements) /Dest [ 481 0 R /FitB ] /Parent 698 0 R /Next 701 0 R /First 704 0 R /Last 705 0 R /Count -2 >> endobj 700 0 obj << /Title (Compilation) /Dest [ 481 0 R /FitB ] /Parent 698 0 R /Prev 701 0 R /First 702 0 R /Last 703 0 R /Count -2 >> endobj 701 0 obj << /Title (Preparations) /Dest [ 481 0 R /FitB ] /Parent 698 0 R /Prev 699 0 R /Next 700 0 R >> endobj 702 0 obj << /Title (C++ Code) /Dest [ 481 0 R /FitB ] /Parent 700 0 R /Next 703 0 R >> endobj 703 0 obj << /Title (Java Code) /Dest [ 496 0 R /FitB ] /Parent 700 0 R /Prev 702 0 R >> endobj 704 0 obj << /Title (Tools) /Dest [ 481 0 R /FitB ] /Parent 699 0 R /Next 705 0 R >> endobj 705 0 obj << /Title (Sources) /Dest [ 481 0 R /FitB ] /Parent 699 0 R /Prev 704 0 R >> endobj 706 0 obj << /Title (Requirements) /Dest [ 462 0 R /FitB ] /Parent 697 0 R /Next 708 0 R /First 711 0 R /Last 712 0 R /Count -2 >> endobj 707 0 obj << /Title (Compilation) /Dest [ 477 0 R /FitB ] /Parent 697 0 R /Prev 708 0 R /First 709 0 R /Last 710 0 R /Count -2 >> endobj 708 0 obj << /Title (Preparations) /Dest [ 462 0 R /FitB ] /Parent 697 0 R /Prev 706 0 R /Next 707 0 R >> endobj 709 0 obj << /Title (C++ Code) /Dest [ 477 0 R /FitB ] /Parent 707 0 R /Next 710 0 R >> endobj 710 0 obj << /Title (Java Code) /Dest [ 477 0 R /FitB ] /Parent 707 0 R /Prev 709 0 R >> endobj 711 0 obj << /Title (Tools) /Dest [ 462 0 R /FitB ] /Parent 706 0 R /Next 712 0 R >> endobj 712 0 obj << /Title (Sources) /Dest [ 462 0 R /FitB ] /Parent 706 0 R /Prev 711 0 R >> endobj 713 0 obj << /Title (Options) /Dest [ 405 0 R /FitB ] /Parent 690 0 R /Prev 718 0 R /Next 696 0 R /First 719 0 R /Last 720 0 R /Count 3 >> endobj 714 0 obj << /Title (Configuration File) /Dest [ 422 0 R /FitB ] /Parent 696 0 R /Next 717 0 R >> endobj 715 0 obj << /Title (Log Files) /Dest [ 457 0 R /FitB ] /Parent 696 0 R /Prev 716 0 R >> endobj 716 0 obj << /Title (Registering DICOM Instances in the Database) /Dest [ 457 0 R /FitB ] /Parent 696 0 R /Prev 717 0 R /Next 715 0 R >> endobj 717 0 obj << /Title (Monitor Characteristics File) /Dest [ 453 0 R /FitB ] /Parent 696 0 R /Prev 714 0 R /Next 716 0 R >> endobj 718 0 obj << /Title (Digital Signatures) /Dest [ 391 0 R /FitB ] /Parent 690 0 R /Prev 722 0 R /Next 713 0 R /First 723 0 R /Last 724 0 R /Count 3 >> endobj 719 0 obj << /Title (General) /Dest [ 405 0 R /FitB ] /Parent 713 0 R /Next 721 0 R >> endobj 720 0 obj << /Title (Browser) /Dest [ 418 0 R /FitB ] /Parent 713 0 R /Prev 721 0 R >> endobj 721 0 obj << /Title (Viewer) /Dest [ 411 0 R /FitB ] /Parent 713 0 R /Prev 719 0 R /Next 720 0 R >> endobj 722 0 obj << /Title (Process Log) /Dest [ 384 0 R /FitB ] /Parent 690 0 R /Prev 726 0 R /Next 718 0 R /First 727 0 R /Last 728 0 R /Count 2 >> endobj 723 0 obj << /Title (Signature Status Bar) /Dest [ 396 0 R /FitB ] /Parent 718 0 R /Next 725 0 R >> endobj 724 0 obj << /Title (Create Signatures) /Dest [ 401 0 R /FitB ] /Parent 718 0 R /Prev 725 0 R >> endobj 725 0 obj << /Title (Signature Status Dialog) /Dest [ 396 0 R /FitB ] /Parent 718 0 R /Prev 723 0 R /Next 724 0 R >> endobj 726 0 obj << /Title (Print) /Dest [ 366 0 R /FitB ] /Parent 690 0 R /Prev 729 0 R /Next 722 0 R /First 730 0 R /Last 731 0 R /Count 2 >> endobj 727 0 obj << /Title (Process Table) /Dest [ 384 0 R /FitB ] /Parent 722 0 R /Next 728 0 R >> endobj 728 0 obj << /Title (Information Panel) /Dest [ 388 0 R /FitB ] /Parent 722 0 R /Prev 727 0 R >> endobj 729 0 obj << /Title (Viewer) /Dest [ 129 0 R /FitB ] /Parent 690 0 R /Prev 732 0 R /Next 726 0 R /First 733 0 R /Last 734 0 R /Count 2 >> endobj 730 0 obj << /Title (Main Options) /Dest [ 370 0 R /FitB ] /Parent 726 0 R /Next 731 0 R >> endobj 731 0 obj << /Title (Additional Options) /Dest [ 370 0 R /FitB ] /Parent 726 0 R /Prev 730 0 R >> endobj 732 0 obj << /Title (Browser) /Dest [ 84 0 R /FitB ] /Parent 690 0 R /Prev 824 0 R /Next 729 0 R /First 825 0 R /Last 825 0 R /Count 1 >> endobj 733 0 obj << /Title (Image Viewer) /Dest [ 129 0 R /FitB ] /Parent 729 0 R /Next 734 0 R /First 768 0 R /Last 769 0 R /Count -56 >> endobj 734 0 obj << /Title (Structured Report) /Dest [ 261 0 R /FitB ] /Parent 729 0 R /Prev 733 0 R /First 735 0 R /Last 736 0 R /Count -33 >> endobj 735 0 obj << /Title (Structured Report Viewer) /Dest [ 261 0 R /FitB ] /Parent 734 0 R /Next 737 0 R /First 759 0 R /Last 760 0 R /Count 9 >> endobj 736 0 obj << /Title (Create Digital Signature) /Dest [ 354 0 R /FitB ] /Parent 734 0 R /Prev 737 0 R >> endobj 737 0 obj << /Title (Structured Report Editor) /Dest [ 281 0 R /FitB ] /Parent 734 0 R /Prev 735 0 R /Next 736 0 R /First 738 0 R /Last 739 0 R /Count 21 >> endobj 738 0 obj << /Title (Tree View) /Dest [ 281 0 R /FitB ] /Parent 737 0 R /Next 739 0 R /First 756 0 R /Last 757 0 R /Count 3 >> endobj 739 0 obj << /Title (Item Editor) /Dest [ 305 0 R /FitB ] /Parent 737 0 R /Prev 738 0 R /First 740 0 R /Last 741 0 R /Count 16 >> endobj 740 0 obj << /Title (Concept Name Editor) /Dest [ 305 0 R /FitB ] /Parent 739 0 R /Next 755 0 R >> endobj 741 0 obj << /Title (Edit CONTAINER) /Dest [ 349 0 R /FitB ] /Parent 739 0 R /Prev 742 0 R >> endobj 742 0 obj << /Title (Edit TCOORD) /Dest [ 349 0 R /FitB ] /Parent 739 0 R /Prev 743 0 R /Next 741 0 R >> endobj 743 0 obj << /Title (Edit SCOORD) /Dest [ 344 0 R /FitB ] /Parent 739 0 R /Prev 744 0 R /Next 742 0 R >> endobj 744 0 obj << /Title (Edit WAVEFORM) /Dest [ 344 0 R /FitB ] /Parent 739 0 R /Prev 745 0 R /Next 743 0 R >> endobj 745 0 obj << /Title (Edit IMAGE) /Dest [ 339 0 R /FitB ] /Parent 739 0 R /Prev 746 0 R /Next 744 0 R >> endobj 746 0 obj << /Title (Edit COMPOSITE) /Dest [ 339 0 R /FitB ] /Parent 739 0 R /Prev 747 0 R /Next 745 0 R >> endobj 747 0 obj << /Title (Edit PNAME) /Dest [ 334 0 R /FitB ] /Parent 739 0 R /Prev 748 0 R /Next 746 0 R >> endobj 748 0 obj << /Title (Edit UIDREF) /Dest [ 334 0 R /FitB ] /Parent 739 0 R /Prev 749 0 R /Next 747 0 R >> endobj 749 0 obj << /Title (Edit TIME) /Dest [ 329 0 R /FitB ] /Parent 739 0 R /Prev 750 0 R /Next 748 0 R >> endobj 750 0 obj << /Title (Edit DATE) /Dest [ 329 0 R /FitB ] /Parent 739 0 R /Prev 751 0 R /Next 749 0 R >> endobj 751 0 obj << /Title (Edit DATETIME) /Dest [ 323 0 R /FitB ] /Parent 739 0 R /Prev 752 0 R /Next 750 0 R >> endobj 752 0 obj << /Title (Edit CODE) /Dest [ 323 0 R /FitB ] /Parent 739 0 R /Prev 753 0 R /Next 751 0 R >> endobj 753 0 obj << /Title (Edit NUM) /Dest [ 317 0 R /FitB ] /Parent 739 0 R /Prev 754 0 R /Next 752 0 R >> endobj 754 0 obj << /Title (Edit TEXT) /Dest [ 317 0 R /FitB ] /Parent 739 0 R /Prev 755 0 R /Next 753 0 R >> endobj 755 0 obj << /Title (Header Information) /Dest [ 311 0 R /FitB ] /Parent 739 0 R /Prev 740 0 R /Next 754 0 R >> endobj 756 0 obj << /Title (Insert Content Items) /Dest [ 286 0 R /FitB ] /Parent 738 0 R /Next 758 0 R >> endobj 757 0 obj << /Title (Select Content Items to be Digitally Signed) /Dest [ 305 0 R /FitB ] /Parent 738 0 R /Prev 758 0 R >> endobj 758 0 obj << /Title (Delete Content Items) /Dest [ 305 0 R /FitB ] /Parent 738 0 R /Prev 756 0 R /Next 757 0 R >> endobj 759 0 obj << /Title (HTML Viewer) /Dest [ 265 0 R /FitB ] /Parent 735 0 R /Next 760 0 R >> endobj 760 0 obj << /Title (Toolbar) /Dest [ 269 0 R /FitB ] /Parent 735 0 R /Prev 759 0 R /First 761 0 R /Last 762 0 R /Count 7 >> endobj 761 0 obj << /Title (Copy to Clipboard) /Dest [ 269 0 R /FitB ] /Parent 760 0 R /Next 767 0 R >> endobj 762 0 obj << /Title (Reset Document) /Dest [ 281 0 R /FitB ] /Parent 760 0 R /Prev 763 0 R >> endobj 763 0 obj << /Title (Save document to Database) /Dest [ 269 0 R /FitB ] /Parent 760 0 R /Prev 764 0 R /Next 762 0 R >> endobj 764 0 obj << /Title (Verify Document) /Dest [ 269 0 R /FitB ] /Parent 760 0 R /Prev 765 0 R /Next 763 0 R >> endobj 765 0 obj << /Title (Complete Document) /Dest [ 269 0 R /FitB ] /Parent 760 0 R /Prev 766 0 R /Next 764 0 R >> endobj 766 0 obj << /Title (Edit) /Dest [ 269 0 R /FitB ] /Parent 760 0 R /Prev 767 0 R /Next 765 0 R >> endobj 767 0 obj << /Title (Revise) /Dest [ 269 0 R /FitB ] /Parent 760 0 R /Prev 761 0 R /Next 766 0 R >> endobj 768 0 obj << /Title (Toolbar) /Dest [ 137 0 R /FitB ] /Parent 733 0 R /Next 813 0 R /First 817 0 R /Last 818 0 R /Count 7 >> endobj 769 0 obj << /Title (Information Panel) /Dest [ 257 0 R /FitB ] /Parent 733 0 R /Prev 770 0 R >> endobj 770 0 obj << /Title (Presentation State Panel) /Dest [ 248 0 R /FitB ] /Parent 733 0 R /Prev 771 0 R /Next 769 0 R >> endobj 771 0 obj << /Title (Presentation Size Mode) /Dest [ 248 0 R /FitB ] /Parent 733 0 R /Prev 772 0 R /Next 770 0 R >> endobj 772 0 obj << /Title (Window Settings) /Dest [ 232 0 R /FitB ] /Parent 733 0 R /Prev 773 0 R /Next 771 0 R /First 774 0 R /Last 775 0 R /Count 2 >> endobj 773 0 obj << /Title (Zooming) /Dest [ 232 0 R /FitB ] /Parent 733 0 R /Prev 776 0 R /Next 772 0 R /First 777 0 R /Last 778 0 R /Count 3 >> endobj 774 0 obj << /Title (Interactive) /Dest [ 240 0 R /FitB ] /Parent 772 0 R /Next 775 0 R >> endobj 775 0 obj << /Title (Presets) /Dest [ 240 0 R /FitB ] /Parent 772 0 R /Prev 774 0 R >> endobj 776 0 obj << /Title (Image Processing Functions) /Dest [ 219 0 R /FitB ] /Parent 733 0 R /Prev 780 0 R /Next 773 0 R /First 781 0 R /Last 782 0 R /Count 7 >> endobj 777 0 obj << /Title (Zoom) /Dest [ 232 0 R /FitB ] /Parent 773 0 R /Next 779 0 R >> endobj 778 0 obj << /Title (Zoom Image 1:1) /Dest [ 232 0 R /FitB ] /Parent 773 0 R /Prev 779 0 R >> endobj 779 0 obj << /Title (Fit Image) /Dest [ 232 0 R /FitB ] /Parent 773 0 R /Prev 777 0 R /Next 778 0 R >> endobj 780 0 obj << /Title (Annotations) /Dest [ 184 0 R /FitB ] /Parent 733 0 R /Prev 788 0 R /Next 776 0 R /First 789 0 R /Last 790 0 R /Count 14 >> endobj 781 0 obj << /Title (Reset) /Dest [ 219 0 R /FitB ] /Parent 776 0 R /Next 787 0 R >> endobj 782 0 obj << /Title (Presentation State) /Dest [ 232 0 R /FitB ] /Parent 776 0 R /Prev 783 0 R >> endobj 783 0 obj << /Title (GSDF / CIE-lab) /Dest [ 219 0 R /FitB ] /Parent 776 0 R /Prev 784 0 R /Next 782 0 R >> endobj 784 0 obj << /Title (Presentation LUT) /Dest [ 219 0 R /FitB ] /Parent 776 0 R /Prev 785 0 R /Next 783 0 R >> endobj 785 0 obj << /Title (Invert) /Dest [ 219 0 R /FitB ] /Parent 776 0 R /Prev 786 0 R /Next 784 0 R >> endobj 786 0 obj << /Title (Rotate) /Dest [ 219 0 R /FitB ] /Parent 776 0 R /Prev 787 0 R /Next 785 0 R >> endobj 787 0 obj << /Title (Flip) /Dest [ 219 0 R /FitB ] /Parent 776 0 R /Prev 781 0 R /Next 786 0 R >> endobj 788 0 obj << /Title (Layers) /Dest [ 174 0 R /FitB ] /Parent 733 0 R /Prev 803 0 R /Next 780 0 R /First 804 0 R /Last 805 0 R /Count 3 >> endobj 789 0 obj << /Title (Graphical Annotation) /Dest [ 190 0 R /FitB ] /Parent 780 0 R /Next 792 0 R /First 796 0 R /Last 797 0 R /Count 7 >> endobj 790 0 obj << /Title (Move to another Layer) /Dest [ 212 0 R /FitB ] /Parent 780 0 R /Prev 791 0 R >> endobj 791 0 obj << /Title (Edit) /Dest [ 206 0 R /FitB ] /Parent 780 0 R /Prev 792 0 R /Next 790 0 R /First 793 0 R /Last 794 0 R /Count 3 >> endobj 792 0 obj << /Title (Textual Annotation) /Dest [ 197 0 R /FitB ] /Parent 780 0 R /Prev 789 0 R /Next 791 0 R >> endobj 793 0 obj << /Title (Graphical Annotation) /Dest [ 206 0 R /FitB ] /Parent 791 0 R /Next 795 0 R >> endobj 794 0 obj << /Title (Delete) /Dest [ 212 0 R /FitB ] /Parent 791 0 R /Prev 795 0 R >> endobj 795 0 obj << /Title (Textual Annotation) /Dest [ 212 0 R /FitB ] /Parent 791 0 R /Prev 793 0 R /Next 794 0 R >> endobj 796 0 obj << /Title (Line) /Dest [ 190 0 R /FitB ] /Parent 789 0 R /Next 802 0 R >> endobj 797 0 obj << /Title (Interpolated Line) /Dest [ 197 0 R /FitB ] /Parent 789 0 R /Prev 798 0 R >> endobj 798 0 obj << /Title (Polyline) /Dest [ 197 0 R /FitB ] /Parent 789 0 R /Prev 799 0 R /Next 797 0 R >> endobj 799 0 obj << /Title (Ellipse) /Dest [ 197 0 R /FitB ] /Parent 789 0 R /Prev 800 0 R /Next 798 0 R >> endobj 800 0 obj << /Title (Circle) /Dest [ 197 0 R /FitB ] /Parent 789 0 R /Prev 801 0 R /Next 799 0 R >> endobj 801 0 obj << /Title (Point) /Dest [ 190 0 R /FitB ] /Parent 789 0 R /Prev 802 0 R /Next 800 0 R >> endobj 802 0 obj << /Title (Rectangle) /Dest [ 190 0 R /FitB ] /Parent 789 0 R /Prev 796 0 R /Next 801 0 R >> endobj 803 0 obj << /Title (Shutter) /Dest [ 167 0 R /FitB ] /Parent 733 0 R /Prev 807 0 R /Next 788 0 R /First 808 0 R /Last 809 0 R /Count 5 >> endobj 804 0 obj << /Title (Create) /Dest [ 180 0 R /FitB ] /Parent 788 0 R /Next 806 0 R >> endobj 805 0 obj << /Title (Delete) /Dest [ 184 0 R /FitB ] /Parent 788 0 R /Prev 806 0 R >> endobj 806 0 obj << /Title (Modify) /Dest [ 184 0 R /FitB ] /Parent 788 0 R /Prev 804 0 R /Next 805 0 R >> endobj 807 0 obj << /Title (Navigation Toolbar) /Dest [ 152 0 R /FitB ] /Parent 733 0 R /Prev 813 0 R /Next 803 0 R /First 814 0 R /Last 815 0 R /Count 3 >> endobj 808 0 obj << /Title (Rectangular Shutter) /Dest [ 167 0 R /FitB ] /Parent 803 0 R /Next 812 0 R >> endobj 809 0 obj << /Title (Shutter Color) /Dest [ 174 0 R /FitB ] /Parent 803 0 R /Prev 810 0 R >> endobj 810 0 obj << /Title (Bitmapped Shutter) /Dest [ 174 0 R /FitB ] /Parent 803 0 R /Prev 811 0 R /Next 809 0 R >> endobj 811 0 obj << /Title (Polygonal Shutter) /Dest [ 167 0 R /FitB ] /Parent 803 0 R /Prev 812 0 R /Next 810 0 R >> endobj 812 0 obj << /Title (Circular Shutter) /Dest [ 167 0 R /FitB ] /Parent 803 0 R /Prev 808 0 R /Next 811 0 R >> endobj 813 0 obj << /Title (Status Bar) /Dest [ 152 0 R /FitB ] /Parent 733 0 R /Prev 768 0 R /Next 807 0 R >> endobj 814 0 obj << /Title (Image Stack) /Dest [ 160 0 R /FitB ] /Parent 807 0 R /Next 816 0 R >> endobj 815 0 obj << /Title (Apply Mode) /Dest [ 160 0 R /FitB ] /Parent 807 0 R /Prev 816 0 R >> endobj 816 0 obj << /Title (Frame Stack) /Dest [ 160 0 R /FitB ] /Parent 807 0 R /Prev 814 0 R /Next 815 0 R >> endobj 817 0 obj << /Title (Load Image File) /Dest [ 137 0 R /FitB ] /Parent 768 0 R /Next 823 0 R >> endobj 818 0 obj << /Title (Add to Print) /Dest [ 152 0 R /FitB ] /Parent 768 0 R /Prev 819 0 R >> endobj 819 0 obj << /Title (Save Screen to File) /Dest [ 145 0 R /FitB ] /Parent 768 0 R /Prev 820 0 R /Next 818 0 R >> endobj 820 0 obj << /Title (Save to File) /Dest [ 145 0 R /FitB ] /Parent 768 0 R /Prev 821 0 R /Next 819 0 R >> endobj 821 0 obj << /Title (Save to Database) /Dest [ 137 0 R /FitB ] /Parent 768 0 R /Prev 822 0 R /Next 820 0 R >> endobj 822 0 obj << /Title (Apply Presentation State File) /Dest [ 137 0 R /FitB ] /Parent 768 0 R /Prev 823 0 R /Next 821 0 R >> endobj 823 0 obj << /Title (Load SR File) /Dest [ 137 0 R /FitB ] /Parent 768 0 R /Prev 817 0 R /Next 822 0 R >> endobj 824 0 obj << /Title (Installation and Getting Started) /Dest [ 76 0 R /FitB ] /Parent 690 0 R /Prev 691 0 R /Next 732 0 R >> endobj 825 0 obj << /Title (Toolbar) /Dest [ 89 0 R /FitB ] /Parent 732 0 R /First 826 0 R /Last 827 0 R /Count -10 >> endobj 826 0 obj << /Title (Load Image File) /Dest [ 89 0 R /FitB ] /Parent 825 0 R /Next 835 0 R >> endobj 827 0 obj << /Title (Check IOD) /Dest [ 118 0 R /FitB ] /Parent 825 0 R /Prev 828 0 R >> endobj 828 0 obj << /Title (Create Dump) /Dest [ 108 0 R /FitB ] /Parent 825 0 R /Prev 829 0 R /Next 827 0 R >> endobj 829 0 obj << /Title (Add to Print) /Dest [ 108 0 R /FitB ] /Parent 825 0 R /Prev 830 0 R /Next 828 0 R >> endobj 830 0 obj << /Title (Print Stored Print Object) /Dest [ 97 0 R /FitB ] /Parent 825 0 R /Prev 831 0 R /Next 829 0 R >> endobj 831 0 obj << /Title (Delete) /Dest [ 97 0 R /FitB ] /Parent 825 0 R /Prev 832 0 R /Next 830 0 R >> endobj 832 0 obj << /Title (Refresh) /Dest [ 97 0 R /FitB ] /Parent 825 0 R /Prev 833 0 R /Next 831 0 R >> endobj 833 0 obj << /Title (Send) /Dest [ 97 0 R /FitB ] /Parent 825 0 R /Prev 834 0 R /Next 832 0 R >> endobj 834 0 obj << /Title (Load SR File) /Dest [ 97 0 R /FitB ] /Parent 825 0 R /Prev 835 0 R /Next 833 0 R >> endobj 835 0 obj << /Title (Open) /Dest [ 89 0 R /FitB ] /Parent 825 0 R /Prev 826 0 R /Next 834 0 R >> endobj 836 0 obj << /ProcSet [ /PDF /Text /ImageC /ImageI ] /Font << /TT2 838 0 R /TT4 840 0 R >> /XObject << /Im1 845 0 R >> /ExtGState << /GS1 843 0 R >> /ColorSpace << /Cs9 841 0 R >> >> endobj 837 0 obj << /Type /FontDescriptor /Ascent 891 /CapHeight 0 /Descent -216 /Flags 34 /FontBBox [ -568 -307 2028 1007 ] /FontName /TimesNewRoman /ItalicAngle 0 /StemV 0 >> endobj 838 0 obj << /Type /Font /Subtype /TrueType /FirstChar 32 /LastChar 150 /Widths [ 250 0 0 0 0 0 833 0 333 333 0 570 0 333 250 278 500 500 500 500 500 500 500 500 500 500 333 0 0 0 0 0 0 722 667 722 722 667 611 778 778 389 500 778 667 944 722 778 611 0 722 556 667 722 722 1000 722 0 667 0 0 0 0 0 0 500 556 444 556 444 333 500 556 278 333 556 278 833 556 500 556 556 444 389 333 556 500 722 500 500 444 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 500 500 0 500 ] /Encoding /WinAnsiEncoding /BaseFont /TimesNewRoman,Bold /FontDescriptor 839 0 R >> endobj 839 0 obj << /Type /FontDescriptor /Ascent 891 /CapHeight 0 /Descent -216 /Flags 34 /FontBBox [ -558 -307 2034 1026 ] /FontName /TimesNewRoman,Bold /ItalicAngle 0 /StemV 133 >> endobj 840 0 obj << /Type /Font /Subtype /TrueType /FirstChar 32 /LastChar 252 /Widths [ 250 333 408 0 0 0 778 180 333 333 500 564 250 333 250 278 500 500 500 500 500 500 500 500 500 500 278 278 564 564 564 0 0 722 667 667 722 611 556 722 722 333 389 722 611 889 722 722 556 722 667 556 611 722 722 944 722 722 611 0 278 0 469 500 0 444 500 444 500 444 333 500 500 278 278 500 278 778 500 500 500 500 333 389 278 500 500 722 500 500 444 0 0 0 0 0 0 0 0 0 444 0 0 0 0 0 0 0 0 0 0 0 0 333 333 444 444 0 500 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 300 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 564 0 0 0 0 0 0 0 500 0 0 0 0 444 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 500 0 0 0 0 0 500 ] /Encoding /WinAnsiEncoding /BaseFont /TimesNewRoman /FontDescriptor 837 0 R >> endobj 841 0 obj [ /Indexed /DeviceRGB 255 844 0 R ] endobj 842 0 obj << /Length 998 /Filter /FlateDecode >> stream H‰ŒVMoÛH ½ëWð8X“ùÒHê­mÒ$ o×J±@±ÅQbµ¶å•äíŸÝKÞ—œ‘ÄvÚÂ@<²ÄÇÇ÷H*'ç]ôOde?ZIÈ¡$Ö™IÓEtr¹PpÚD¢7EtR÷‘VC h“‰\ƒM)cŠE$ý½ö!’BJi¡˜ún"vÓU-\—Ëu9çÅg‚´2Q"w>2œr#´“[‘è€{¼ÜÜ^¾_wÓfUNHÂRÉ!œ´“Bg`œéA&óŒæÓH0æŽIž Ç—,\I–ó¿‹÷‘ÒPƒ¶a@çZdÙ¡P` ö‰Mšû~S¶ÜU_y¬¤ÈYÅ5þ#Ý;¸å±¦ß¾q• Å^ùŠœu¸MȇO÷7ÃÕÏiDô‡Q!Šaãù]µ¼]£•ØfÃ##œÓ&Ò¸î MÏ¢\ú]gq× ¤×TQÛüÒ€¡^“ï-߃z‡ —P××ýº¯à¾Á—N=}ZcÓϪ¡†ÒÓ]}Û–â…›eýµj»ºÿÑw]ß–ÿ7BqÈe±6Ísxà ¶îOgëÅη‚î‹ ©ínÉK½«@‡ –Í6u?{QM,Hã‡Mn&qQη#øcVÏëÕÊS« !2$ ‘Ɉ öÙ– áí'tôO=QJd/tç'¢Ÿy²{mÉáµ5.ªé,P÷ö$dj•°)vŸ¦ ÎÊ®‡qÖ×nÖ´U§ÔMÆû•04coÛ¦ëÚ¦¼ë ÓþN{Ê uZ§#¸™¼öUÑÿ \.ù§ endstream endobj 843 0 obj << /Type /ExtGState /SA false /SM 0.02 /TR /Identity >> endobj 844 0 obj << /Length 768 /Filter /FlateDecode >> stream H‰TÁ[HZaà„à@"D#‘•‘a› _”‘°6“014’Íi7© %“¬ ‹Û¼´FÅ¡tefeâš]$B†eÍVبµm•¶6ªÁºxþ­Ç}ÿƒI„$0N°¸“^¾Ab@E¬H2‰šB²ljD"FÔ’H$”T6OÒ“ÉäÔÔÔ´´4qbOsžéO×dddSä æ£(ïRò•JÍ¢Šƒ™JF§µgOçÜ¢ÓsYº\O8÷¹ŽJè%=Î`0ì ²þÞ“ÉT2áG¦p“)d±Xl6›Ã.àp8»œnËåj¸þ/\–† Ý*=(d?®gòðx¼£"ŸÏWóãªâU@P"2*Kf„B¡HX&‰ZEøOy»ôáAi^Mé’X,îÇ$É…$¹¬LZ^^.•J;¤ð”Póthë Èl2™¬Av¦×VÈÃ/äø•( T***j*uUUU’jÕy5¢¼UkR„ÔÕÕ©Tª•¶[u)Ro¨Õj\ ŒšÈ¥† lÜljlÑjµ]M^N×§ƒÍÍmz½¶€ÖÖÖ¶¶¶öööŽŽ['„ÀÐe.0ì Ó+Ôh4q“Éd3ß7»Ìæ×½æé–Ï‹eÀà솿ºÁe7èééé½…¢}C}8ìýýýcý =@Qtlà8ÇúÝjµÚ¬Ã6› ³Áõ·»Ý>2Rˆl;ŽáQÏèè(Ñq:Þ1811Aq¸\®ÉÉÉ'îc·Û ÝÀçÆ=†a>ìzjj ›~çõzgfffgg³æÎbsΔù ŸÏ·°°°¸¸è÷û¡÷ÿ—‚Á`(J^¾YY&Âe°²²²º* ‡ÃkkkÙë7ñ ‰lll„6··¶¶øQ<ÂO`gggoo¯þ+¾¿¿¿ÃÃÃÈ‹Åqü4> OøœžžžŸŸÃ /ÁÑ„×)¿ð&‘€ Äó!΃°î¯n«†ý endstream endobj 845 0 obj << /Type /XObject /Subtype /Image /Width 540 /Height 280 /BitsPerComponent 8 /ColorSpace 841 0 R /Length 58360 /Filter /FlateDecode >> stream H‰ì—¿kIÇBHòöž’³ÕËÙç;skvz­`Ï ôÀÁ&¸ÎN7 Ë&ND%N.pÓ™ü îh£ 7Ðp—éÜÙ9jG†Æ!%÷Þ«ªW¯ªÈæf88T=še©ªúSßkk×ãz\ëq=®Çõ¸×ãzüÿŒ(Š£8Ž“8I’4Ͳl:â>ãwY¦?›*¥èSi’ÂO'ðßâ(ú_/àz¬lw àb2-в¬J<E¡àû.ø †ÿŸ! dœ"K„#JÜHù‹®¾‘¹«cLõ“Yà—<ÒO¹>z˜õ‹í°c„¸Vw8XïýöL |B |‘pà§Ä®àXâÜFZž`äø€+‡ä>ô0 Ò¨ôE“£¦‰šÑÔ >Ì‹y×ÐÇá€{FÕú¾ú´Qv?Z—´LyÛç´'fLIÃi$ËÛÿ`Z5I¦rÔš6^ß óßÕU¥ç]àÄà§ÇG¼»¹´Éĸfº˜Ø…ãÐÐt HéÃAwŽÉ°ÂÁ¼«0è#`¡®ºéè&¦¸§ª(È[-Рb·ÂRÛ¯«f#ŽG#¤ U<<ÝðòFŽË7º‘«.Ý-mûƒiC»¬+¬Ðt”=y‡ôÂëÚyŠ éå˺‘³n dxªá§=qÃ% ’tqÂbm¦Ç]ºñè7OØ„’tê†g)fùʯ(~]™n¬££@ ˜hò»©=9úbcF³¥ÈAp,ÑTH7”_c ͇ÖX§ºl„h¸Ó.@Ü¥ƒë(Öb†üåÓøðtÃ<‰ÜÁÀK¢‰fîQ.*zd+Ë›ÀÆ8xOŒW|ö´\²µW1ò6E6¾‰—VbEÞÈY7lå +-Åï(WÈF-•#H§>>NB¼îRy/=€ô«‡ã£ô¾ïï)Š;Jî[Š‹ÙÊÚ´«íbÒ~ÕkžB¤lLUE'“ÕuXˆ¢O&™Q U4˜Úq#€Ã”4‹FnÂØTèF¶Â,›ZÙ [`uƒû«qÜ» h±N8 ÆöµØT5—í¡†fcó†õ”\Ž¢3/‹ZGa><ÕÊ!…cÑH@Z¦ éŠuW½­!]Õ¥…G;n¿ôòÜa)S£E'«Ë¢ñ·YFh<ÓÛ_ºÀßX4œdšƒªs4Þ7˜"Ž8Ž:Ú‚Ác ; ÝÈmKá¸1ë ¢¥·á\Ü9—ÝDb ñeÃ}^7‚2 eÐ`-Œ†×`ýšâòÆê<%N³'S„ÜNðJ̓[,X¯ Wñ‚ìg›¥£Qï :U÷pãý³µjJ®åÌêFYx²ÁªÜ•6¤p0 «-íH|8õhX?B<<ÕÄñÑÒ #‰ÚUf.nxiÃXŠK+ë°Qgº£ÀDŠfËçF+ ŽÊÖx¢;4£ÌóKÓ‘SŽ(+ûCz`>±ÖMÍ}Ý(I9¼šÊ£Qy ÖÅ Š…g0µ‡GO¹Õ¯B•¤Û82Di»KOÞph¾nfClÞ˜ :l56Š¢D£AATû¹©ƒ0ðmSµmÖõ–5ÇåÌžåųéôQšPU‰Ö’þ}1†A#ª»›ÍÈɇ §$ž©T~­áà{Ù8(@8èÑ%^:­{aùðÛm—¹T]x0§ˆ0êÐ(Ù ·%ÂEÑ•x ÅÉ4Øÿr†7›ó.ØÈÜ½ÆÆ¦*h2øÃ$|0×$Æšýþû“ÓÓÓï/..ûYà_Ž«º»ØÄÊFÑ0ndáàšÒ7Üm“^à‘±¢¨IǴ‡×m]\í$àCêF‹Œ oäÊȆ6|ÝX>²R”g*/ØÄ J¢úÛD.Ò¬j^Îf¸ˆìý¶?|ÿêÕÉ›7oÞçï{èX^T‹´{R£0nÙ =4ØUJ ŸYR9,!‚ ß^d6ué#l· ÿ ñ'0B@D5³5%@CQK)Œ¡háIucùyÐØâ8!6 «:lØ•À$½#iÀxm‡…Ìpbëw~ûøàðèéË—'HÇ›·ïÞ~øðáñ¸°=~¡¿.ÊžYÅ*(°"n˜:-……9t”Êæq¥p8>sL¨íò"Û-ÒÖXhvÿ KŠŒÂP(‹æV@ÙR$ˆÇ’u%#&4RDƒvؘ£Øô‰n¢­$yGç´ ¹‚iíüncëóýÃÇŸ¯´xoß—ïÏÏ/Îáëò¤äüü«µµE“Ÿ…½W膭(¶>iá(¼,ª£†ç*Ã-…¤Aª†xòtõ[Á•{uúáÕ[)U²¿¸—Ž[JÙ(ÛÚ¸ñÕWûG‡G‡ÇÈÈññÁƒýýýƒÃçG(&/>Þ\KÿVþõÙ™Ê@;ØÉFnuƒÓò!tC<¡^ugÙÝNg)zøîbAñIê‹ö—{êÁïlñÇVëV…qEnME8ŠòìUžu#N“qfÿlú­[·v *86wˆ 3î' <ÀP2dƒÎ%å=ã¹ÍÆQt[qhàç ØÉÿ¼·÷§½{_Þ¾ plmm~cc{ãîÁáÁ_ ™ܸû`ÿáþÃÃCæáæÚרxiaʲ‘ÌGâ×§F9‚šèFÝÊ2p,œl0N:§iZºÑ“?ÚÊш¼!¸¨½$Ú‘6¸Ãú¡M%÷¢¨Ç€nhÑÆ[aí€_ö×Òï~À?î'ô ¨ Ýüã,›àÖãÜ^üd£ÅÜt•²âÓIl§`G©1h¬#{øõ¾Ëç5Ñ$ãBšh&½Ýƒ=º‚0 ñÒÂxPPB˜YXI{+4Ã^‚®—¾4,aä=l`siy¡/9¾ô{YoBà /¤!‡^½,44˜S`ÌaÈÁ?`¿ÏSUoU½ï›)‰yT}êû£T*æ3»€#›ÞNg«Íî+èÅio < ÙôNjßqÿÉë@:d+/HÆ”ØÁS„¥¸:o²ádq#¦AL7B<´{¬BBŒîbò¡ãG2#Q<’ FÇÔHK  QT¥ ×#l°š ŽGó&u_ÝcH|`Jÿå ÛDŒBÂÛto¯Î$1JŽ Ž³hà5Q¬ƒ¼Mzå ÑªÕ*F­‚˜J¾˜C&ÍgÒÛÙB6-4«Õf“°H£Ä¤·s•â¡Áküu½ä0ãÃ]€ÇÃûÏÜÚØ·,eÌÂʆgeQczeBŠª;¾±Ó9‹†ª!éXFÔ#1 &»‹áVQ*b $¹¥l$ ¡ò†õ7æ­ ²=Ê íÎÃQ¶‚çã;è‡ÄÁOÃׂ ~(4 l&“ Kôl³&L¼uÃs)ÊízG Ê8™wIç¹äUõ§tì€Ðß¡1œCá(3hžƒ‰œâ¹ ,Bûð ëõzÐŒã¨h4J(¯h'ÍŒÍosEèG‘´¤öC­Vk ³>O=ÃåÌè€÷œsrÆc,~¥¸ºaDQºÏó鑨IqÃ.fÖ çubä0ÃG„Ätm*†¥&Ò MÙÐAÔT™6´£˜ VÔ”¨n€ Çë·Cç G:‡7éF‡pâ ás´ñQ;‘œ çm¸=/®Ü«+LõŒP*-'z¾yÔ?o_“Ñ;æ$Zª {¦³ÝÓÑhÔ<ÈfQ] …Âv&SäöòÃIÿä¡u'õl°xÁìøqY:c*}ƒ ŽÇcC7\'” Wʆkë†-‹˜p$ˆ\ÿµñlW–ˆ~D-F§ÓˆÅ,Ìè–³Â~zL6\³¦È¼1–l¢!TcecÏŸ#ŠH½Jáá«–âÉÕ&?˜7”6]š{Þ¦ˆ­ž'ê+鋆#`–hŠ— e't cãï}øÉ1„cw·”ÉV«UBct::íþ¥Û=í6»Õ·™ríèä¤×ûùç“TC·êO÷Bo O¬t“ѹ– rñg_ä _‰†ÙRü(ÒĸašÇ:¢‰ 5ÖkWº¸$ ‡!ŠŒ@Æk\ç§p¿Ùp¸FKqUKq¨nh4d܈zÊ3ŸµB´@>ÄXTVG蛸XkŽ˜7ôÓŒ…ÄÔ_¹î•Êxã7â¬c,'ñS„5 4õò—÷ÄFQãa£‚`‘®…&ÈøÏÝÝý‡ÞŽn³ZÍîV€Æ FhP” Ä,7È1´Æ—ì24)@SÀé‰[8£¨Ò /A6b-%žD-.LÝÐ\ÄIn·¶x˜î²zÌV!‰žò;ºa¢¡+¶ ø"Õ˜™;GF¾ÁûëE0CxÀI¥ny‚nŠ Z7¬¸áë¢+°vÞ0dCbûã°6Y«§¥þ¶®é,2¿t¬B,T5Å"CÇX5à;²¨“uœ¸n°§Ä²¨{nøµë†Æ£1ÎØ[MÔÞÁ@ä\ þ‡R“Œÿïl€ t’ã_Î0Þ÷zG=F#³›Î6›LJ/‡‡»/ˆ§JÑf3¹ÙÊËÔVÀ2•x}t!`>ƒ*®QиºÀòÎÑI”>îú±M¢º¢qÃl¯l$€#ŠEÄLbïÕÂÆ…#EùêþkÅ M†+шű,n*o˜Q”5#A7ö Ä“nî*Z\’,Îÿ‘­uƒÉ›ÓéT á86õv›Ší0¯Ï-þÅÙJmIôÑ´aë†e)+[8ÖJ6Vk ‰IEÌ]Œ²ZYp„D©†¥ñ´!.ÛOÔ _U‡!‘ *t¢:"žâ³øû3¹/Åþ›Ïé¤Ò Œ‰‹ñ?ðq3ŸM=rgØ!Á <ëõN[BKlí NA£”Ïås¥R¥qÒ‡§ôzý“ãÑt6{ÐýðHÜ?üöpûùÝH ‘e>0ž§R.ÏÀ\êÉ+ÈóåòWJ‚ ׸ø‰/=%”3niC›IbMÑ1Ôô”å*ê ‹…Ç︌>„¦b¥{­i*ºÃ.dLæ;Qõ/6t‹+tc,UÃŽì'ôµoëÆŒûð`:!©c°².É —›"M)–kðU\¤ÅÖƒÐ:¨×÷÷ööëõC¸ (y£’ Ï5zëÖ7¥$‚ÙhõÎH7Îú$l)Ù껟ïî{xx@ýÇè{‘É=Éd2» ñ]ê¸:ÚœC0ݺ,B¸ö€'bq6º¿¤nh8¨SŬa™‘’²ˆ¦¥ ¡0¬mÕñ0Äãÿ„—?hiÆÅ…à_’Û#¹ùîPÖ¾°>ì9ë`£BÅÌ!&WÄ8SˆSaØf ¡aн&AL›Æbº7¾Nxš¤JÀp‚/¤ð΀¸J0 k‹%ÅtnîyßoþJ 7ŽÅŽæÏû=ßóüžd¹.*þQØÆ¬B¢™>‚…HYVaçZŠj¯y¢®‘7XÛ²•:æ2%$Ž©‡P— ¾ÁËÏÃÀöù¿§×ÎiAðÛÿp?`æë;І®ó7ÔøÂ…é–è¿{§ H£Ñت׷ê Ú8¡¢ÒiA«°îëËëOŸýõ—O—§½v{“ã„T}´ñ°¶bXtÂ\‚Æ¢@ò<ø®h„Iòè¦øâ\&¬°¨[¶ ÖV. nÐÙ=öÆL&sº˜SG¼h…{à+Žr…¤€ ³€Q? ²&;ËX4*£è\ýéK´±¢„á^7õ§Ü`ˆBó[1¤ýˆmæ;Ó†7mÅéÊ,ÙPc< ÏqaÞ‘CË0vùºAPc³ua¯»jµ§ýýV«¾möÿÑ0̓NçääíYÿ¤cš:h£ùúúåúòòbÐkKw8L8O8_×j?žSˆü”Gi$œ~Ù²±Ÿ±4xjîrÛÈ@´â¹qøºR:8‰.$¾„Ð ÍCˆ¨)BÌf9ˆæþQzgy3O²qD‚dâá¼ÒQbð«Ã3Šl©ØF®Œr¤Ðþ¤2¥)Ê6 ÞÈ|#Ž¥¼A¤a3,ø†Ÿuˆœ†F®hØñÍM2Ð?ތʴÁRSgeÒ$}8ôÇ¥&åî.ŒÃQêô€ µ?<í÷öM è­VËì÷ß²k™°ÕÕ½ÁåÅÅ)ƒÞ‹v·Ýëî¥$Š’rwÒP®Aº?WE³8ÁBZMi’Óx2™NX½¬Ü6J ÖW/ÅUŇHV¬ ©éq*yI‘¼Äq®83¬Éæµ…þË8ñ%GJLô…ŽtùÆÎÇ2È"e6O…2‚…šòßÈm#%Q¯ÈgÞ6DSã˜ó L8P‰2Ç)‹F’‡˜â›Â6Ø5H?coè0Ý“l4@Û±w5 âËùgªŒ;úÇGä}Gc¿s|rr† Û!mÔïmvÛÍÞàtËh·aƒÞóõ{÷È28n dƒœˆÃó2û§» ­†tÿQ*ŽI<™w„©o6J¶1Ê…1×R2}èRwñ-„G n ¯ˆ©i7°vBÆyã€6ä¬H’옡â8IâIþ!´‘Ì ‹èÑêÃC‹ÿv¬Y‰62—оhEKQ©ÈÇ¿ê(J©â*ä¨GQ`IÎRß§³¥:Áò˜ü)±ÕeÉ:˜GÁªëç#WÇ&š€0ئ]ç%[…¥Ké·h²XL´þ¤Õê ˜Ç>DrF=å-¸±¾Ù\\À,^´{½A·‰w÷V©¤¬ï^¿R«=ûÎá;w¸ùø¹sŒ³ÝNš¦éÒMY¾P‡¿7²L¡Žri¾ÛðiöŽ0ha+‚ \O­`„Ô§ôd™"EÌHáûÊ4/*È –À¾AäßH$2С¬Ä×cÁ d©Ç ÉY´âÿ×7ʶá¥#PÊX(°PF!9mh(\=âh)'! ~œ'ûÞgÙMÑe^’þ|Ú•Cײ¿³-º*œÉÀaé¢VûúQ}»Ñ0Zf«qÐ!ß0÷;¬þ1 fkm½Ùí¾F–t¡ŒÁ  ]‡,67ÛÝ‹÷ßÔjR¬ëÐ…­r%ÇÆq9 8o(T  ²«ðÊ_À %cªVþ¨ÚaƒTg¤ zJ_È€µáðŽuˆAP‡" ü7І‹¼qS¾$ß°„RÑ!ˆˆ3iV˜G€_+ß mÄð WÕJËM %2R ÷×’o”%.ÙF”?v°¤Á²»Vq#G FËê° Û°«Ú0 Ô”§ìËñÍ$Dp#TÆTSJ„Jt¥¡§ðÐ;gq¸®}xÈíõЦ«ºÆýZíOkhõÆþÁüÂi4L`ÇþÁñÉÙÙ[ˆÃ4A¢ë{H’^Ò@ªtÛ{w›ÝîæÞN»wyý}­¶ògd”¶‹þcº¯ÎóR1®ôÎq8ÁÓ$C6·ðjœÙưb¾*)‰©–æ¨ØÔáJX_JC—2Š!!y2o¤ˆsEBh†×IÄÞxEºxz¾AJ¡LI|áÆIZle”b()¦ÜS¢Ü6*5e‰k,4Ø m(ÞpUUYB¢ä 6–÷J’B¯Ó›Ûû\fh†ÜŠ”‡Ø…ç´-ᇇćXèïþõÕßÕÕ·Zh& óÚØ§H6ÎN:G&l-¥½‡é žwŸ·›ä/š{íÁõû÷8‡XÂ[ýFU-qª¦¨{‚ù ã ùFH¿ƒŠo¤£òU‰¥*ã—•†piôa(%kCshY ÍcCø1~zéÆ4É8Hápœ/N=¹õu·Ð†c)(ß ¸AtéËÇnbIòfÍ…Qª¯J?¥£)‰úêi3ߨ è‰Ú,Žô˜Ë”Ž(šL1[r ÜJf±|Õ±"¹6ÅOÜQ|EW±l–#œCñ.ÄI­ö›-n kOÀ¦Ù9Øom7+P "=å쬿ŸúFÄÛ袞4ÛÍîi¯÷ú‚M£°}F¾¡í"W ‹iôîì#FDw÷¡4%Üû”øŠÔq•uXî)™48SRë-l#7 K¸Ê´uá…Ê7µ°ƒws߉AoˆB¹§"P¾¡!( àô5+Š’,è¸5\–CZY"&ÔÀÑ$<&±(—tÎâé%רÆJI s™âÏmàÜ7ŠHV¤±Ä7le¬ªoTJ©¶’*ð ø 0Š4ÎR¦ýÉìïÆþ¹—Ê'CˆØ¶º¤ÍÆów«wW× ú“F¼Áe Ü÷0~8£ž‚Û m€:7ÛM´Æfsð¯/•iÀ¹åã_}uuĸôØãàcÄÞ‘¯*+¾6Ò^EІçª<©ú†?òkJz5{©¥¼A¦iÀ M³` YO¡8ÑEæ”)”"|ÃѼª6ýM’Q‰7Š8h¶3 ’×w¹©¸ú,wY©¥qý8O¢UßðRØðª-ÅÍZÊ0£²q¶a/úF2×G3F9bq2‹1ù5VÁ÷î Z 2âQ(¤ $` ú Ú‰aý  ñÍ:VœlcãÉv}¬aF·ëõi ¼A5¥ßi46¨€=ÁpŒ4–Ÿ?}º¾¸ƒB¨î÷‚Ž¥Dù¡&Ëà£ÆóW4ä^WQü_Š”(J;lJEKQ,ê/H£Wîòì‹‚/lZ!øñü@JŠ\,`Õ7d¦ ÚpÅ0nËÚÀKÀ–µé ¢‰î¢œðªÈz6ÔsÜ(™FJ±Š”e¸Qñù¢âzp,GÑÜ3ìÅL1(^‹*­¦ >&}¨LC|GJÞè•k;ÿÎBméC\Ú@9ùË_ÿø[ÖÆÚÚ–¹½± i4)õzýÑÖVHÚï÷aÇGæø•ÕÍæÎâd§ùËçOŸ//¿¿CÊ€kˆ;reeEˆX‡þ-®m¼ô¸²òŒ7øÞøÈïѵ¸mo K¸Á5…ÊU)Ú¦¯šp(tøGÁºôãØA$àÑXß ð&ó$cQö ;õ…u›DšQ¨ÃBÚüïò i$Ë㸌ˆ-·WX©‚QiNaÄ…JH··Ù„±B†YBB{ZhdŠºô5¡{Xdaosé>,sð(èÃ4ô¤@% 4TÝsËe¿¿ß{õ7Î>Û*µõ¥òÞ÷}¿Ÿï̇((ZÒ‡Ç\ª¹3³Ë5—*JØ3¢P#ú5à`·L¤ñŸñn°oäP4ÑŒ2œ|KéuSÞ(}ƒB…ŠÕ-cÌ/ × „áÕQýý›k*ÍÔü+ã•AŽ¡w{T~ó{»¶û[Dų•ÒvµETêõJµº··Å…–´+|c¯DƱ²±v´vtyqym|¡âÊf*ȺÀ§²‰ªB™‚2ëÐ6N}/^$ÚKª&2yyÎ;YRN¢ jÃÄ6ò¾11UÅpMUÆ>ûxcŠ›>rU°¨©ž£Â3оÀ. !xß ¦M|hº0‡Xt¦Ó5â«¡,?R¹¾Îz¤fv! øG*‹TMÔÁì—³al™X‘êùšàFE {fœ,EßÀªÒ‡ʇ6ÆãþE éq&l.½64Ð$m@"Íæ«cãø˜r¸Ñ-ÿ±ýWûòÏG++L•=•ƒ*ê€<àçÒ.Ö>XTˆc·V»l÷û”Ç«%!¥äCÙćZ.³6¤8°Z,W)$ö_x§ô?“‘PEbÃ8S°†Ã´ÂzYß@S.Muy'd‡õÊÈ7Å OÃ]íEÒ7Tl#î)‚7 …fæ¾¢ÏY"NFŠŽúƪ@ß1{òg¤ q 1]¨¹Q½2f2IrÅóEGá8£ÉºìžØ¯ãòmT¹ºÿ|×®Ù6L vr²¶»²þÜ‚m`ÔO«Uëo–Uÿ¶Õ¹~ssÓùÖ¢îo•J/'¶Ý¶xüT 8ÖËÚ¦òœ{Šªi&@_ªDMƒ^ÆáýW¢;?D ?ˆp£wƒ~Ű‘Á ÙR†9ßÈðÛ¿™M„è¸O3§9D©À) 3ú(HƒÅA×™Pˆ§‹{ò)u!Ä!õa p2£0ë ‡B%Ýš"nŒ„-JuĪÈEJ*Ø7º±u,ú›Ç”jì¤âO¼IªM)X(Œµú¤¡—±“°Žç˜çªoßÝ?~²ð޶]«­­•J¥uBÑj½ºW¯×O­–…H!߀q R —Êv ýµa÷íþãÏ0 MLª©›H~•üãP¥SGévßmŠûcÅ$>åì$XM14Fù–’â†+–‘¥1%²ÅlÅ Bó±qLÙ;Böì#«‹(+™°y"}š˜H2¢¬k„¡§²¥„Ù8‘®<¡ Ô„|¦Ä5ÅM/’DI¨$²Hq£Ëq""e7&â¸`à٦܉ýc}Èò„E¤¹y6Ãì:]>̆qf½xù²Ñxkßyì_ÔÚv™²¶²þl£´U:¨[¯O­së´Õ²p³Z7×ïßSQ©ŸV*ë+»'àPûîç+P§Ö„•UUXÒ†®©$@z-F’%Þ¹'VMšË¡MãL6ˆ6ÄÑÉD ØlƒÍú†XyVäy%Û€oLe®„Ò7¢Ô8f‹Æû†¸Ïæcw–&L¢ º°>h&× InBO°¨‡ÊO‰ã&™“Æ(¢R®“Ö”¢mˆ’ò4o°8W¦ç5FÑLbiø8_ãA¬N¯‹Liê Puuiõ› »Öh¼ q2¸§„y¹T‰õ÷I˜5œ…~ pƒ"”&&fý‘À}"ªbMÉF ;gJ7œž+C„Q/9Ñf/í)q¤È‚’´ØEßðý?j*})¢ÊáA„m`¥{Ns¢Æ6•¥åoúŸú·w·¶]ƒs´QT>÷©ŽÖÖŽÖJ[{{{ÕsëüŸçÌÃâHnt¬ *n©ô»¯¾RPCt€Ž»XÕHñ@¨¨p ~‹ ,oôh,òØK¤ñQ,"m+õê)7õŠDf[Š—ç ßsÝOkJêÞ †Šù8Þò¨ccY>Sæž×›ÔAÃU%œÍÜÜ™«˜Y߈˜n%o„瞤@Ò9Ò)M#‡àP½ë: U'ÏÑkŠª(¦£‰0ÒHµ3QGž7Žé€Ð›Ò“Å`'‹œ'T;ñ°¦˜o i†< ûú j¸d€2úŸ>ßÿî2mãÊøXÜ:˜@Ó÷N-qXÍÆ½ôÐÃÓbÁšÝB…€‚RR–`e.½ôsñ¡ sKÈ%·šKz+ªòÀ‡Í¢Õ@X Œ`A ñ!«ƒ‹uÙïÿ#il§cE™‘%ùÍ{ßû}ß׃§t=Ú¶v·®_'uìííÃSêµúa­vx̹ã˜Ò´q¸³·ýƒíßU×ÕA­âˆ¤ rǦ¤Énã pØôÀK›þËWæÇ[º ¸!¡ŽzÊI9nD9½—¸±TÇ0”β¥¤Ë¼AÑE¹P…ÄjyÂü‡ƒÅ†V65¬¹á)ÇM¯*c¾ˆ±Dñbn¤’á<–î:mä¬3ÛH¡ðñ×”.׫Œ57ìˆK†ÆEÜð¶± 5Ân#mh—é€uS^‘EË5…+ìoqƒda³8¦”ÔÀŠ(jŠ#Jo{ =¹>pãÛ. Ñë>yÒíu;Ýî`4šŒÏÉTvw¯‘£ìÀR7 ‹zýQ­FM–¸Ky‰ »·wý#pögçNUA‚x±)+3*d.D(§Jàhx`­0f…-ÃÒ)™ßÛb™}¨àFsSy¿2ÊÜH,7ؤÒÌ“­ŒB×4SjhK ¯g"Ô… qhPã=ÊX6d0_øØÃÑ<3éšÖRˆ6ïº"ÌÒPhë(en\©)œ˜.p#Òö/| žr!wUS”{)o¸žMË$z%o°›’H§†;!ÏÎ)q#¥Ò_æDÃÒø)cã^g4uÚÝéb4è ÆÐÆdŽW”z}© Ô”×ÏÐSž×nW*÷iœ.rhU’.$s£b …=“ÙG!pHÈú 6?­e–&+qœW[lȤëG˜Ÿuܰ–RæÆ²¦\ᆒä×®¤Èµý {]Šy#spÒȵŒóÜùñ[,´!G×6‰ºxƒ³Xx4v’ÊŠÙ ¯ Ê(å)›7æ}ú¸“åFh|~Q*PI†HAyCã’4¾K™žæˆªqq¡TLCu¤nß 7ã ¿ TP„ms®dXEKqÕ…°á15Êʸ¬êBÆ[î)ÔRN-¤ÁÃÉ3n¸±ôðq¬×ï¿ý‘ìd<OÎÎÆ“É›)c2:›Œñø¥}tðù.kcöËf)Ä8$Oi¢¦P}ù«ÿõß“x¡;’”A…HQak¡©c‘°¥H–Fƒ RG´ CJÙ’ËÖÉ:§ON‚56Š–®¨Ñ¿œDWÜp0ã®ýÝ×Be‘#`'g-%µ—úÓÜ—^®ñÎxî`ú37Bz©Â¢ ^,”T®Ç¦IÏY&]rŠE+ϕҾ·$’ÎRè_£3|…ã"Ý JâZ‘ÎwÒ‡‘ÙÁà½.fB|Ê…||(jÇK1maWÅ–”Ä1Fä Ë¢¾(ÂÆ:в6ZkWyoÞšÓ!çá²8ØÒ¡ %@ûîŸðáŸý½ÌÙé½&g¼dK‘V9ºGGGv¯í ¦ìÕH‡M¢Ç£GÍf5åõË_:|EÚ€4`wtaÅ ÙÜà@Š­XU¬ˆÈýºå}¹`n˜‹xduºj{}ÃÐ(c ˆÑEq¬ÔmÂI‡X¯4©Š" ’Ä €£5%ÊO§Jóé’óD†˜‘ÐUT­`)Ž„,†!Ã"o„ E?¡'‰-èCçó¾Á iò©'ÙÌ2™VÜSä0 •ÊŒ¸A) ‹mª¡W6à^¦\håÆ!SÄ Ë „(¢~H8Ê-…{JYW<…¤ ‡<·ä'Ëx)#Oç´ƒ¿xTqÄg_µÛ.ŒdÌ.2›œÍfç3ãlvj@½vè8¸öáΧ{_ ¾Ökš0ÍãgÏ~…8žbÑýøUD£l8ªª Œå€>×'À†”̇´áÒÍ…¼–é…Šwš­¤A­QI ËqÃrãR]uG «CH$o?u…T:@ ó%õìé\‰aFÜÈsÌžQ E±EPc\«¹ˆ#ò…Y‘Gcééù"an §Ðð‘ÀB¦`PŒŠ­ Sñ³4UlX!alhÆdnnÇTUâÜp‰qÿ'_9±/õ~‰t4qCÒ¤Ÿ¹ÑòZGçâ†WXÊêh\Öy A’HÓ·œDùÉP=DnæP¾@‡Õ•OŽŽ ΃Á€,åÝìülòîüüüÝl@Fçùsˆ£ýà´ÔýZóÑ—u&´/yùúŸ‹¢¨”þU;”!+%mXQðÅ‚¨Ü¾ 6ŽF«…›²y#)©Árƒ‹ [ `‡Ù NÊŽBq#ºh*ôèØ€ÊU§‰VœžT©Ó=eÉ eò"oHßöOqP€ÈUˆS14t7Xl@BÞ\h-rÒ]x"àª25ÂAƒu@ ¨µf õ”Š@èû¥üágñ1in‡Éh!o(„* PbæFÆ:î2o@`eÑâðXknpÚ°‘£àF£q©§P²raòW•ÄdÄ”¡apøîJåÞO@…v§7èö`%иqþ¿w‹ÙÙqz6õ:½.¨cëC`£†¸QGÎh~ÃÚ@ƒ}ýúñÓ§·oo/‹ªö AlXUÈB›Éë¦-±šì^Ju.É“²8Ò•§`È?õ£ð$8 Âð‚©”“hÿR¥,*­6’LK\Š[È{aÁ n8ÂLKÜ OAÚ7LÌØ`när¥ )æE‰!G)gNÚˆVÜH2ÊSËiæ)hñ7‹ $´‘`HÌ¿Ø|,þñ/›ñá)®y¡ˆ¨Æ(6^%¶GàFÈy‰Ý§žâ¯{ŠçWu­+ÜÐW<%6IÑZ³õLŸc³ä-,ÅJCUÄöÖîÁ¶ÛXøÎ ×ë@ 3ð⸱XœÏ!34—1~xt¾ºvíÖþ¡¢ø×üä $ŠÙËaýÖGŸÜ%÷ ƒÕ±´”MqÊòæ2m°6h#„!K™À‘i4ËJqƒÖœ¸Á–òbÝR€ÿÓ]>¡œg7]L,YÆuÀŒ²Q*cðÆ,Ê¢ƒ£2¦˜¬ÁžƒÁCYº!eJñ¥·b.9ô"U‡€/¹­Ðº…‚ ìÁE‚½FP°Ñºè C°/}ÞïÏÌH›|²;kÉóçù~ïïiF²1— Æ zŠàFEu\W£lßðÇŠÒÇmT |ƒ¸a'г™k‰[L f0PH‡GôH(,1Ä Å|4”„ùXÜ Ïó‰ôD*ÈŸ÷¹b#– —qc@Ü | ú†uko7H5\ ÊîP=±Í„Jøhrßh†ÜHjzÀ Ì”„f™a: IH>¸át:Ü[Y^~šÞ=ÚÕÉ6NŽNÎJ¥+HèÑfí• ì™™G†ÈK¯¤#;;ÔaO —,´.1TN ÙOs`~:ûa2ýÇ—*¬ª*ŸP6/2_làûž ½1~4útN¦f : ȦÃàÿk˜ûÎŒ[‚šf:ï)x;*œ#£bâ”5ÚKÈ©‰d ‘p„ÁˆÌ”Ì<70SŠ÷Qã »ƒí]±´´¾‹Å–—Óú‰®ÇÓ»'`¨Ñª¶á­Þ儞ø¡Tíµ[#ŠL»š‹ÇR[ÙüÁi¡@²û7‰ š-Ç…B!µ†w÷F˜DÓé¨;z=|õ%³SìLê/™g 8‚`ðþZa-…qU……ƒº¶š1Ì7êAMi2å°CÙ° ÅF¸Ñ—çÍ[®ëz÷÷øòïñ¤fÁª':Æ,ºgbE¾eÿ0÷ÛÔPØ }¨1¦tàþ$'8? 1'û0ÑÈâ=…ŸÊF /cj‘2튺UgÓD Gòw–¹È(8>戼$Þ|'ô¿òäW[«››±•å_çôx|-Nëú®®ë¥Z ÒÑ#F“} GÝj»uM½ª¡¥äâ›è°ùƒƒÃEãeùæªu‰‰BØÈçWW÷ˆÓÑ_«oÉ^ÛíÖëïTÒSð5C¢ñì™,¯Ø f±XA.Lz!mààpã ÎâB2l § ÎÈlØ‹5e‘.¬Ÿ…ƒ^\v·¼{zbq'}±füI‡HO†D½ÿ4ãokæ"¢ë1bÓ´tÅ€Üb9··üX QHÜàÑÀM˜MáM3É’Áº E£ÁmƒéFDDeK‰0£ø±‹öy6\þŒph>YzòÙv*•Z­¬,c®@G$d7§Ã6HI«LLG=À£Wkµ«'µÕ\=½²µ³“ß?Ü?8<-¿D…½d¦A/PÑòA¡ßÞ\Áo¾®AaÚww½×™låK–$C¡`PFTÉ" ®ÜÏÆ8Œñ@Ãá¾q]ç5åZšh“Õ”€s¶Á°GŸ¼KbÕ‹'ólÐòýÿ1nÐÖ‚ñ²c&’!92 ö.ІÏâRŠaÃ÷ƒ™ ŸŒ/W!7`EªÝ¶Ýh¨&ë(QÃÒ¾úÓEÄDñ0(7ŠÚb6žÃ5I#ÅÓ ÇÙ­ÔöÖj è@4Ö–Ó{¹Ýxz –Öj„’~V£1ÒncÒ`ìTKU}9–Êfó§‡4QÊç—— z7HE1kvR±t­U#·­a´tk­.fL»Õ~•LðÑ„ô9Aƒ/B6»é¶Ã/&ÓQ² –ŽcSM¹;J3¢þ片Pr~W<~Óî6îy47fóÔˆ~ã…cã1àÏJ >Ã÷<–Î z;µÏŽî6’ ½i n@Oü¦Ì†eppÐÖô ua=çØ°~ÁD1R>ê)ìâ ø–à ¤Büß.%þx~LÔØŽ¥6c1âF<§çÒq¬½xúÑ çhUá­ö­¶TÚ;*åô³RzeÑ(œî6ˆ7REÉEÏ ûùÕØY«u…²ÒC]âóºä-ø¶ýu–)j ¦ÊוJ±" ¬õwlŠïm\Íà^²„ð‰Òï §X Ya¥oº!]c®¥lpnð+¹qOàðE6ߘÍM”…|ˆxÈ€Ìs#‚ ŸyÆ8‚ ž ‰ vL·tp6øP±ÝÀjrÙhЦYÒ°‚\0l\XæÅ¢n•0Ç¢o°lȃaó¶ÏÅôÉÒ?/Ï ÈÅv– ÊÆòZ:þÛ=Ì•ôÑœ³[ë '“».ÙÂU«×³ÒÞZ<·§Çc›Ùláð°°p@-冀Qæ3…„¥ö4¿•Šå¨ø\õFÈ2V½›L§“ápúaò¤ùtÙu…|£hðþÊMôû@FCEr6úÜ7hè#…E#Ð º°!6ßàÑ7Ååd—܈`cÌ7=Ç|:ŽÁ¼ À1“Ÿ0æ‹3c,FÊ@‡¸8¤[:<©¢ÿ!lD¢ÑdËŽDƒ† · Ò Kp0’•7Š‹3Eësnã>úïX8„†„`¦RÐV¨Pa¤æ¾¿÷fô'ÜÈ‘FJ<ÑÌûÎç÷ùN!¢h(4^òO|*™|Œ‘rnP6*•fç],£M*±Å—ç€ã~þ„`¨,Ýë R™²¸™Îç‹ù¼'Óhd³†ì*%:[Kª¨ÌF¸>TÔ}e±œ(‘‹ÚëØP*ºÆ j)®¨Óq\K´#%*)è°2¿Åºo^ÛÛŽ5p„Ž®LFt»{¡­¨ç·-b`+g¢’²¦ž%ÙR.qˆvÄ Dô¹ÎBÚUÜ<¦°LBë&7$6¾—S%ŠFé ÝØÆ h[\bÕ5vÕPÑvþÚ|W„3œ¤©§$ï%ïîî?ž’6ªôÒ d4n¦7óaŸÚFƒêë‹Óüéñýäaúäìå³\î=&H‘Zü„92Ž'7´†óéð e£t\äó…ÓÔî=JU.s~ŽI4À ²Ž¦ÌqMå$ùÕiᢑ…´€Ý¨1ˆHàð„iÕ}è8âè²2åh¦´¥Ÿä·ÿ$b\aqñHKH7"Ø®™¨£¼â†qÃâÈÆ Ì5w¾ª°±‰º “¸1[Ö”Pecûl‰Ááišfxòg#®iºv¤!;Ø£lX#±£¬Žµ]ECÃë!X.¥þköØ5¨d9š@6ÊoßÖ…Îê–mj~` h¸ƒäùó£2QâÆ¦ŠnèÆvß »V^£·ón€åK?:DUÙÛGEI9ÍW« ”Üã(­×ÁàÀÝ=E¹è× è¢ý~«z\ n`¤œeÎÎ24Qš) ¤Y‘C%ƒl¤žVkW8X—HÔNûý`<¿AÞT<ð¾ßýƒåˆ6=k”ÈFm9Q°¢17¼OƒèI-6]Àµ–b“Ÿ¬¸AyÅ^$3¼Å4GQÃ[ê’+؉òoK߈”ƒÚè¶l,ÇËÂ`ÙÑl1й˜ùŒÏ”s8ÌPæ12¸í fàlפêDÕÀ“-å~F ÓPR"Ýp„†SaÂù—}ii¸a8±n†µÉH7VØXéÆª¤˜[zJ[•˜Í’ž»ó°ƒ»;—I§“éCˆÆî.ÙÆiµ†±Ñí¢°B.0SÐR0Qæ“iÿ*ÚjQFROSû»PÑ“³ |ÖY0:"F³ÒA6ÞÁ?ÀÜùÙã½ÓZ7†ÈF­Z«貈Æ両©2 ð×Ý×d¤£8:5†}H† Ç bA+-o.±6QèáÜÒömny¸Gç—Ë8´(»¾[v,Ãú<À~èf™Ž—ÐÅÕõGøÂ„¨´g#Aì"Äg¡m–Ù•-G‘ñ€A“…kሳ¨Á:Ü.:"nøB£lüj ò |·d˜Žt?·÷&aàk–5c©m×0p.‰7ö%DªÌ‰±ŠÖKšP¾Q_Ó¿­sCECýÄ*Šp|Á÷ôßõÖ|£GäðÞyHäG4PE1M°7òµ‹‹|µAàhÁ:tMPc>™/Æ]ú Û¼[@ɽ›L'™“³ï*$••Xìþ³Ó!'8rÏž¥¤$ô¤l\w[Át1žL§7“›Å|2n€(A¿Õú¬C—]…ÂQ·Ô’z¸£ãP«Go7¤nØKÛXRcä\ä:7å¡ë :sü:3\øOpf„MuC£]óf¡É Æ=š)Ó°úŒ…3ƒ>cF ÿÄPÙ@ ”0î7”±€¡ì)!q¼2,B•ʹ«qÄ"¹ö\‡ˆá !¿s[E)6ÈÆ¥]gÜXÖ|x¤È?R7¤p¬EC"#憡·}ó1ˆ[ ¾œäaãì„L#õáH$6.. bŒ…Cçœ'T=ƒ>es¦Q8ͧî S™ÌYúY®H˜xסúŠ[!~ÐLɽ½•ëË’‚+¾ó»ÿVL.Me?u¼ŸB­U/`¿ !Áp*ðQ  0W}ŠHáôþÞA’JÎI®éFSõ×ÎGÚC8^’n7rÅïŠh'›$ŠI“l%sòè`oïnêøEõÔxòôIµÕot§´¥Û´npQ»®’Çô1W44“¸a9”/¹ÑS3¢½â†#“±QS$8Úí lÈž‚™Âêƒgmò N¾ÁÏo™éûÿ£»|BÛÈî8.Öˆµ¬QCM@µÝGØ [Ä"‡1Åì¦È †²{"TJ. Yƒ˜C÷‹Ô¹)ä’ž"<û°l@`…l˜Žš ŒN63††tÚ^úýýÞid{ŸìÑË£§yß÷ù~¿¡›Wójö44ëa˜ÇVD“@r •pÞ³Ä Õ&BØc¬¹à†¥ìò}Ëyƒº åÒ(sÃFØðý¾¢öI`в4.S-¿øT½1Û²f5¨¦€qÃPžšÓ,JÙc–)ƒ>ŽغÐÅ$‰25J×ò]MWbã]„Ì2ÿÉ·ØÜ›wÒKÄ ж·×Ôõæ]%‘ØCðh6! `ãð°ÓzÍ´Zåf+Œ§½BÚXZ-"®ì³©Gì*Ï©§à̵­Í\.•J%7 °-“L¦ç5Çé8Ãóé¯(§¢ßâãK{Ê\¢„Kô©§8|æáÛ¤~Ä A ËŒ§ YT&=EÆ î)¼cKqÃö<æúÃEX]|èÄjø_¼Žåm€UÅ”*ñT5œáFŸ¶ì)Šè)ꤧÜSüIOAÜ0=ºìˆÌ UPn ¢rUùJE=î÷…§Øß«‚Œ*zJ¾$¾±ä†ˆíIMá;ÓRêSnpK©–v¯sCäYnàŠ'”}ê)¹tŠÂ¨¦0V–éŸ~¯ë,¬W¯7ì5;O;ÚÊä³ÑDÝÓ +ÉôêÜZQtØ£çˆ7X&ä)û¬4NžÊ,,¬’ó¤•u°Ç9-Fè³£áRjj¶^Q­Ÿ1yª±¤ “öÑ]=J÷ö›7³yƒ´ñ Òˆ÷Nù±´!ZŠK=çA¿è7úž«€m¥"(f­ð}yã©RƒFv7 Q]ܰše•ÀYÀ T\*«Ä¸1ÎA¨ÇæQWÇc„òî)‡è)d&Ä:J’çu•¬M¹oµ7Úƒ®Iê5•Ï~Såˆmˆo`(Ý 7Ì?”ºÝü®l°Æ½’iÌ`ƒu1S`7ÄkyƒzE%90ßÐLÌý‘´AÒ(¬PT>¿‹ÿøš¸«ë ™-\ÇAXèA*… 6?ùOAK¦ÒKKk›[;;5ª°ì)G‘8û°’ÃHͧè'™Ìd28M1¤:C£ D××1ƒûUƒM…}ÀØð¸¥ rL£(iã™ä†Ù}Fàˆ5ØÙ<iCpƒÀ‘'dÜ3òYÉ ìlÔ<7²ªá Àãz ²¨9y#TÕ’‘W§Ü°CæFHêp©‚T&|ôÁ ê)%Ɔ7ð±j©„*"T]Q¥¬jSEØÿ¶Õ[‹&MSâÉ›YƒzJã©i6òÙ¶)òGŒv[­¶©:8l©¥ˆ¨Ñ¨>œHC`ㆼa»1pFÞ7Âÿü#‘¸½*£h2¹Lf¢¨ÕÒ\¢L}{¹ÕA§¥Þ~ÀI:ä óóÄÖ…ùù%dÑ­­ßHmPÌ8bS@`*ö@y›¹5 ±#Ì,¬¬kj,ð¥&WPÊh1£šŠ^Þ(,ÏÍÝgn q@Âá;_Ìšnðæ7ÒR$7¤¥@7ØLúö qƒ¸Q¢óì*Ù.åRt׬a}âø sÃö9Œò6ó(x¸ÒSúÇÇÂSºœ7DØèÆ“èÕ¸ÁØpå™8½äh\Ð¥¸¸¸ ÅÄQX„/ÌŽqì^<ØI¢©Œå_–‡À†Ï§;þè7±xþJƒÓét1u·e£ôÕPSHfÛœä QS"O!eÄã†F}F»Œ«žBW‡µ1µ”Á€æú˜ÊO¸Æ¿Wÿ\ås’GýéÓD¹RÞÐ( G£óËçääìb©PÑ]H%IÐFnuI´†–Â=žBä€:È\žS­moïl:Ò©ÜbÍÊFÙ99ÿx /A{ ¡ŽÕÞVs¯¢éúž®VVçUÓ|aöy–ÞT®ˆ¢}pÚé)Ð…9ƒYn¸"ŠºrQHB"Þ«ã‚F îä}0R(UŒoJú CÉ †8°*¤(g¤q*ÆTQɲ`*¤ Ôù%…2Lx‰Ú¸VacqƒóF}Z`2øx•.‹ÃLx·„ë«Wø®²ñÃßX× ¥©C=Ûu‚RŠÅpØÙÈ$SÉL ýdi>µ”FI)nA(fÀS^¿elPì88 W©=Ø©mm#s¬ÂUr©ŒÞt>~üß/¿ OΞ3º¼D•…ü†CÇ9Ô+å½=M+C Éß& Bkð Å’©Ã:¶„§XÄgÖ$lȼaÇãÆ‚buÄJInжHEt?3$ ¤&ܘþDzUJCÖI H $ ÷Ôv§û'RÆ+NÓ¯¬gSã…TiÃ0Û»yS ãGc7Q…­O²ÆTè°„Ý=¥ßwÑžaO ¡ ±©h²ü0ðÿJâ»—ÈX4hc䜱 W8NK[¡(J Àq)·µSÛß?@= úÜxÍ㈤Aú¨ÕvjÛµíâæÊɤöÄ9ÿðáürtùñ¤‡3¢¹$† ËžõôfS«hë ÉLz5‘0°àžçzöD{%Q+–Eé'ª)Läã_™Ô”Éð¢á nÂ\2p`gñé\7YLôTø ¿,-E0#ÚàÊ5áÏIzW”£"j`üõŸˆ Ý)6^`¡u‰¶t”Ùžr=n”~¥Ã–\)Ì)8¼¸\> ƒö‰ƒÓF¾ôIâå!pNÛyD›ûM9ýÜëìm`W§7×RÜR¶kß°,ž?â¸Aäx-ó(›JƵ•W•ŒÞ;Ñ›°èƒãœ\žqƒR†£K¼„ÎÒBÜ(PeÊ¥AŽ6¨/K,ƒ§oSíê“utã-%6¦ RO¬]üAL³Ü&©Ã—¦"øm|_ìþ˜½Ä-&θ`"K‰òFàM¹1x/—‚æôÆË'´ô ãÆDŠ”æm”ÝÉZ5QhÔ¨àõ‚(ÈxC6`ç`*° „õAØqYr)´¦ƒ.9$¹:dB!½ Í!Éa±APAÞ µp0ã“”CðaOé¥Ïû~æI ;²!»eæ7¿çyöpwtÝØ•mIÁA…ƒË†ÒÄ:Êf¢H*”5ŽY8Œ¾±¸8Æ-öp‹– }¶®ôžÇ=AÙݦ“Š"šÍZW%¸ixž;ò~ç¤S!q`Ô:ù›S“,•H,–LÏÝY£‘B4 nÐ×›Wâ <Ð7–AG.“Žqw}Yø2´TsŽE玼? uD 6 œpÄö%+Z%6ôÅ×Rx¼šhÀÕ`ÝPÒ0gŠHņì>YÞ)ÙÅq;¥mdЧ"…žFº€|™Ë\n³ßgS)Ë¢@ Ãi"T+­4›«ÖŽs3 ]@ßHÆ ‚dn®ø`C³• ÀTy…>J?*Åå[¹:Éå[™ Úkxò¼>ï4±M>7+аGÄ`ó¨ÓÎR☌ÙÉéé+VV£.?qòzv¥6Žºž)ªnÈ™X)x8»CuÇCç {CÀ¡ÂâÚÀë?FªG`Â(k <ß O| Ak;°R†úé¾É‚'J:S6Ä„õ½±"Vʺ!ž)Ù옢ݪÐà«1îî.¡Álp¤¤¬‹MQ>; ÑÆÒB¥yͲv"ôô#ÂÔ7’s·Š(›Ô06ÿùÒ8~xùŽ5BcM4‡P±Ã1P Ï6ØDÇÎÉÙññÙ‡Èq‡´ÑÁ’-ägoN…m;™N_±6èÆô½ž¿±D¤Ð#%e›ê†Ë/ Ñ7=TkC¡ñ¾7|ȧåT½H@à*í}Q:ä/ÿ5gU¦ tUlȉdÔ s¥Œxc›Äa XÑ6žøhl™}Cice]6Ñ@®dÇõ ÝÊ”REÝÀLa6ÚÕ­ªLBã7ÖjD@ùF­†;8šŽã k5ÄTØÉX{%œÈÜzÀ–†ëCëÿ?¢ñk×VWwvNNN>ž}Ä׈²PqJ…ÂììùÚL.sÑréÊö<*žÖgJ]·m·ªWŠpF+èý¶¿`{ ;Ç©®~Î(o@ú—¡úáNjֆX)Â;Œ™‘)*T¸‰îừšèn‹­ÑRpÔùx!µñ‚#EwQ_„7‚uc=¨ Bc´oÀÀhí-á'JŸU-2ELñNÔD-TÂf­ÂåÓ©¨|¹jMD­¯Ã‘Ä4¼‘ÄL™ ‡§3sËEÔ7Ô.Zñ¿Oéã«ëñë©8^ð‹8¢_|µ¬sš‘ÕòÙÇOŸ>ý$6š LF)­r!”Lgî~cÅ»øœzôuEuãkçQ×è|i_ëÇJ–¹RtÛ`·ã@Äh!žQ7$Ãú¤¯Q#GYCÀ!âLÇ£ÐÆž¿R°Sv* mà_ÆdÔUÝ(W¹†mTFŠ>TÑ0¼±xoqlßHµ˜ *ÆLaA#P¸mlÜg4RV´Ò¨@ï5„Í)U:äÿJÔ:—ZB j±D Ù‰Ù9̵5.ž`Ã5:ƒavœæÅ¿pžòßHPßá3F%!Ñì3œâçdUs*Ø)*³³Bá êÌ7VJ\VOFÊÛý·Òn©RßÞ®ò%Ô‘Ò’ÅUÒð½¡l.ÞØÃ3‘ðÔÊ|Á]/~ÄèDé{o¨Þ$µÁâhÿ¢,Áá[Ch#P7x¥TÍ•Âh˜ÞX_v=¨ N…‘¾Ñ¢âÞâ>*Ì!eÀ—Ûu·øÝ×å€ÅJ©8MÞ N Tè¦Eq ñW_‡"ɤ‹Ä"² olRÝÜ$6˜¸Çdô8±˜ÉŸZîOø·=¥ó‡o’HTñqmµÑìœ »j/üAã8?ŽÜ½[\FåxbÀJ6×\E}mÞà¶ÑÒâèîÞϬþî~> Ãï¥ãñÈ/…Šè(Ò½o°6ö̾4Úîˆ7tÝàL)›¨,ÃÚX+Ɔ] vØ7D¤´x­t¹Ž 8Nñ' Þð/ Ç÷Ùì„…g·BƒÒÁ3LÏq©¹4ffæ£îâtæ€8béÜhƒw ±ñââ”^<Ö€H3hãéS:Ó½ïn§n¤`·Txðçc>&V1^Žt>®£ù›“!;]¼[,F­mº°?h]q!i\ÕuI«Ó’5',kC±/f ây=4逌ðáéõ¢¯ÿ9}˜|ôýHñÛ†ÊG¦•چʔÝ1Þ 8ŒH1ªÁ ‹çúQ9P7„56Vzc´oÀí–€ƒ.Ï”Þ)yÃkóFïJu?k}Uqpk~WÀ]ª5(VV-T‰ìLö¢u‰b&œŽÙG"LkÏIÂÝê <©û*RpË?áù«7XPÙð†…?ñT”>æågGðTÉ¡P™-¦Ðum ñ÷wV,‹«ù¶-¼ñºmTQ¢DWѶh¢*DÕNQu£'WïÐäãp*_úò7NŠ<¼AèM´¯'lwö†Ù7Lm¸Už)U¦lù ¶ìgJPë{ìÅ1ÞpE¨´ü­"ù‡6ÈÌô8ãÝîÓû¤ øÙR¡4›_ÍNÓ©«÷f²Ùã`ö¹[{:aÇlD ´Áp r<´ª$¾öFÙàþHçqwÝòÆÊÊÊüLVÇÊ×ãQ„Ëe‘-ñgŽs³„2 6¦Î#Tìéb±xð•ã½÷¾'g¨9S¨m5h§UÔ5VJW{CaÑUÑÒ5ÔA/‡cø0½ЈÇ7†Ö‹ç{CÊH’Ñ=TÞhÞÀgÞå™Ò6G ¬¡ÛFUO]EIå?ÞÖ0Yü¬7X²¶wɸbÂVùüè1÷°SâK¥R¾/9ÒиŒ7ŸŸ_OM\ILÛv:“‰…ñ3™ž£D¡HÁ†5½A)K…C—„½6ß6pÿ¸¼2~ça(J0Æœ»/2 ‡ómð€±‚7Á$ùC!_(¡v`É^+È ±•¸”°“v2—ŒÀ÷”(„åùsÞ°.sÑ?åÊA䮿Çlp võxƒ[h» 8R$pÈÜàRêœÒÒÂRajjÞ°Ók›/‘*øÈ¸ÅûoEFµ¸‰ª’ÆWЬ-¿nH6+…!óEÖ£wŽóGÀÆ€1ù–0õ!°1WŠª¢]µRÚ†6vwÚYY¯›‘R6¿Æ®ÁßÑ@¤,Š'q8S˜ ù<íKo`LôÚ|‰Ë´^78ð¿_+,J”ý¿…wæé=»óðF29N'±Tb±ÌX°ÜD_;唜S¾| @Èá~‹ON§Ûz´’åT™I}K?n›B9MQÆP°DkDG¾”§b§í?½:8x÷ÐÚ`‰‡lŸ¯](Q7Œ¶¡ì /Ÿ×DÒ4Ž "cEÓ¡ÝØŒvìЭ¬ N<”`pe ´l×B !ÂzA7‡Ée. ƒ—>ô¥]o+2ÐGÁ‹}ËMú c‘K ²{iô¿Øïó¼?ê­2NW“ªò­ïûy>_-Ó7Xíz¦,”0;–âeÅæ¥‡¯¥ðe¥<¾ëãÆ@sãƒÒ5„n eêt(Ýhé ‹Ê#E€c?À ¬%/ä¢x|lˆ”ö/bL9Ûæ¹Â\y‰ÙUznEÛiÀÂ!Ò‘($2ÙLéü ¸Ac¥oö”56ËZŒ0c!¯Fu–î€Å÷Ò9ÃæÓyŒª|:™$nP4ª6“£R¡[9B‡=,”À tÔ&y¡š…G=ý(x'¹1ð¸!ÂÁéáø}fDÃÈÇBM?> =Õûü+óeeEì ÑÓÖ+9Y=¥õX¸&6\£¦`¢HÙûtCqãƒäFû{ %ãÌ)̺­Ò±™Á˜—Mqƒ{Äz**ž—Ð:'¾Û¦ÿÓ—ß…âyÞàÉ\ÑnµíÐãÃÃDU…¬ã˜*Ê)5c4™ ÿ“&ÊU…„žèBdƒßpF&¬É©EœÝ9ÜÔñõxhŽ]SLÝPãŠ÷µÇ ©j›³†Öñ©T4d§3àuÒHátˆ[¦»@¶»—t¾–#”ƒÙHçìËöÛ|èQ"F¬hâ0{zNÄ@Oy35ú7#ø†ê°^òé˜ÔàÀ髎M±È%s¤¢6%[ƺ(<&YÊ;ÕŽ$¸A:åM†ÆÐh°Š"a¼S2ît$ü1Yª¹"€!2²U>ÌáâýfÃ6dK™ÏæŠ\R¦×¾–B_½®&%£c0ƒ³¡¸aè×MC7°ù4—ÜØˆ0•ÇäS÷-߯ÜLgŠþÐh9 j+UÖC>eÑèäC3‘ÝèÎN$Z¨ÕNx¦PKÑÎþ/õ‹õZ"uH—ïíÅ÷ÂéðžwGáP8žÌ#€Ò÷¹|)r¨y.òTÙÕ$ÖaæôçÏdƒÀqëŽeÙhsKé58xžo(LO‰®®ûø!R²¸çi¸såhYaǾ_?Vþ„èa#“q§Ï;׺¡ÀÁ-åšß= ÄÂh°ƒW*Ž(°ÃPÑ7’$ôÊš!šk×%EÖ”0z ¤ÄŒ*Y±»mbHýìíÛ\4‰Ð§•*•Ð^›ýf%eróùŸ¡é‘B/Ä ºüëfó¼Ùh4j+—J™‡3ÏŸ>}Bpçíü_óßÃsiváBâRÝ}ø bYV*‘8¬5 B»b‹‘#a°¼r8Ìš"|cjsÍ ããÞ€¸ù¸õ"ˆ±4A²¥¾¬åÅk)ÜÛ¤ˆJ ’#E€Ãk)Ì „£gúÆ;O76¼¹¢uCú¨Î=J™ ÛŽû³qÙév»Ä J«K°vç'C O\$z¡¶Å"ú¥}Ö²Ïp?àF”+–-d åÆ9Ë(|ãf$:¬(kŽÆZfϵQ«—K…R¡IŬJ¥òþ§§”›ËkݦK…qtèö÷ÀX*•ÉÖNn&0*]™Î%s£‡¦lc:4˜¡ €."SÝômâÃ}Þ)d_‘SEèÇöþ²2b¢&Ê­¯Ášº!*¬x ª¥tƒëkp¤Õ0tgŽ×R¤mlãÆ>N&²!ÀáÒä\®°Ð]‘ A X=O;Ø/²NЭjýªÓ…oXQ+Id3ÙL¡TkÒq>£çðõZæƒW¦ëeÑ(—² GÊ:zvñëÅ‹§˜2\Uè‚¢Ê2>DW‰D¬o³Ù,¼=¥?j6Qc?‘cbíŒ »%±¡U4¨þCÇâ+üp7òá.nÙàÝ»…d?i&Çv|¬|Ü£ÄWrC×”kÎÆõµ§üaJ†Ña;‚>l3.ƒ¶ámhnf 3ŽÁ@l*Üe=¥lÈhÈfÂÌÀÎÍåå##ã¨×V½~†¹„™bAE­T&“-•O¤¢MŒ*ÿaßP6*ÖEdÿçüôø¸P*…Òa*a<{yqñjçq8ô ˆ æx®Ty†Ñ4SR©ãr Xê÷Á¨pÈ%™ø(mƒ²ÑÛKª(ŸnÌÈ8ù0ر-÷¥ÃÓTõ”µ¦nÁÇBY‡ÏD ݘÍ<Û¾1Õ#¥»©F0Ì¢àˆqf`CvÀúVn =*+cæÆœîzEN×ýÀ®ÑâlÔÉ0p’|2GÛ|¯âaÁE«8ñÕÛN× =‚lì¦h;—Žk” ¤¾A#e"¸ñ½M •…œ)øO§ GéÊxd³)Ë:xõ¢RyöüA(N—Ûß/æöqU·eeRÙòIé·8 œå‡P›f†4Q×SÍ rÌŒ8³¯ðƒžŸ/ :!Th¨Õ(€ˆóú±%<Ùf3Å .±žŠÅ;ëêtpI‘ñxçØ 7„o(rT56}Ù舺G;éX,¿,ir•kÔ€x–P¹¤òâdÕªè)N›9‰Ñd(£¨œ#tLH9&¢§ÈËØp»:ŽÓr¹Ñ8­ÕJ™R6Û}õþýÅų— %“ÉÜ~ÚÎÅ¿IçriòÛ!}µ‰ìq£öÙÀLi¼UálÚ6êygÈ5¥çKÆTrãú^ïP¿˜f¦‚²F8d\7›Í7ëk[ñ­x©F!ø'Ò»›‚ tJ¿ZF©¬¿§·®Ó¾hÕKv²@¶ÑS±!' Ÿ|JÁÍÍË’c!>F«ãÃó>&:tzšxÐÿN½¥ó%ЙØ@jÜ)Ý Õy§­Î@74ßðWJ½¥‘!C£®¡¡R#/'†mÇWç/:üPÑÞ®!A³ùN>ü€KŸ<£õ®0òµB‹NÎúÚf(²G’Ê\µ!R£Kº!sãó'Ö‡ég †#“Ë•«DG9›N톊ÍÍfå…±&âOŸˆ#¾EÖA|ÚÝKe³å·ãnƒrƒ– 6QèF2/]þ£2QNòUŠŽno@ÉÕÇh´è¦óxx:òzïGÉÔóòf²Ä>è¸ÿiŽ`ÀrÊq¥ø.*uCŸ)F+QÁ~­ûÛu67˜ ÉqôôÂ7†ôâ§¶×öÇ+ë,K‡§ÿ%›=k¥”¯]õ¾ï 7#±çF:wŠhtûÒDÇ27¦*6(9>Ê‚NáÄ8ÅÑ‘Ný& ™‰Ê5²ã‰G…ØœOEfñ_°ëî[î”r¹ü•Q ·Ž+¥V8NÚb¥(Û+EYZ4Èið1kó £ˆ˜Ù1«ð˜ñRyù"¤t¢ìT};soUöŽæ«G…¦àÀ+ rƒB©»hKæÆ¥î¡ŽÖ¬nÔ}ÝÈ‹ØÈº1çq<üª%– ¿ª”ÏÞ Þdž(uÿ ~'€«åë%¦¦T¢àQGæ´;õG›áXj9=u]·*7 †î(7Ä~%2x¾ù¹Ñ¥ä G€ª›£)Ù°š•ʇ\g€ëD;y|@4£_PyUûÝF‰Sv­¡4QÔ ½eã ìàüRº!/üßp‚àý&<è_¿ßK‘÷ªnÄÇ>嫼™èþá :ø*Ÿ`(Å ÆëäܱAÁÑÑgÊUKk9R´Øs¾!OxM7æ:…ØàÛKï†þÌ)RãÏ0ºßã±/í—/_âa‡ôL/EtˆpRãö]9Þþãá‘‘¡ÔÀÇ ×¸%8Æ·ÌF[`ñ鳎‡é·ÌFÁÁ½B`t‰‘ Œc/l¡Qš××ÿúÒx h§ v°Tž…0‡²™··ýF—Ð(o=ÁF½†9ŸÉ ‘72==¥„Ÿ•œ!«óC+éÿ#?´i;ŠÊÝr?ñ»e"fŒ²©š¼~£xdÁk ÛþLÑ&ì·À¢ÝR;åRƆžB7J*4ü> 2T¥,Ù)€ÎX<i_®­Ñ÷t«k|kâëíÈî>Nå,R£|ŽO¥2ãñ·Zn<<TãvüóÏcé¢ò`í18ë»UÔB•›¥Z=??wÓé½ýè†srâ›Í'kñƒãžGìÁǸðRp¸¯3nÏðžrcÂÑ£s‡Lô`=‰Èèøºá;'È@ ÝsdH2È?ØA‚ìÐd4‹†lo6@<½_øÃær™ú#f¢æŠ'ѰL%OâYx!‰_.£MŸ)½9å•ÒÒmcÅL¥ù™Rð;e!7ˆ‹vËX‡C¦1 ϱ.úéX8 %*•fó»æÙ‰e%_;NÂ)‹g•ĆuVùæM図_…£±Xì‹èîn”44ëb¢PlpÀ8Æ¢VS¤ tã³È üÿdµ+Kµ|~^†ŽR«"~Ýouªû8OŠ îY8ö¢1ŒòFlä¾2~Ý#+Ãßol=¶gTt‘ÿïº83% Å~-ß/ŸìËÇíO³ëv‡çwŒ_)27î†A§ –èF°è hˆJ¡ëå²Ü(ÕDlÔy\ ³±1ï¢ꥫ¶±†O®àÒIÜÝ„B¦iU˜Œ“„åœ%,ó(aY8•‹Žc…L°Q©ßTL…#±h8‰.|¶çUÄè<`ûd¬:e Ûø„Ôx¹ñwZ3 êVÒsW™Ô^,|â9GgMã1¿l°, IŒŽhtíõW‘ålÖX§ÜàJÙŠI¼{; lè›E^ô¦‹FWÅÈò‚©üðoDÜyzÁxó顸úq¯ÀŠE‹ FC²!+oInø•¢VÊÕÌJYÈZI¯ž-7’ –rÌ›4>Gýý6‚i&¬7Îë¨RįO)Ò7‚Üh·4<´ÜlÈ¢MXäÅ«%¤â}éÀqÕ2¶97rÈn#‡ hF¥6š'²,°0ÖHtPp˜&ýo8bZ‘ØÞ~ 2š{´A±:ðïßþN‘l<;þ ?骙‚ä(Ÿf²™ýhp8gožI0Aœ×j5JÈ(—J(‰fÄÆ{$M.½ýèO¼+5ì°!s£C§Xg9¾~¨j¹~*ðXäc´QP+|Â;oÊ:´(™ø¢êMd£ŒÝ&ä†Ô ö@7fWJ]à¡5J h”ôbfö+£1Bý]ë‚;…‚ãuS !€Ê0éÄ%-&È2è@S¬8dÃ17,DÂ#ašá ðY-ÁÑ K&*rã/rÁα!¶ Ïš>/ØÓSØl6“ÙC«„¬“Šsdl½kÕH¢jt+ŠQ±‘ªžcÄVÝÜëlzÛ¨±n€ üICµ åïJ>Tv ü£7¬Ô·Ó|Œ†Š…†'(QT gñð‚þ&¢Ä”¾“Ñ3ù&:k=ß686>Rlø;åR÷ M7tuŽWÄD!€#>—<ØøH‘“p8d9ðl•Ôé©ËµBC¥ËlŒüÛ̆}Š ±NðÓý¡áæNF1°ù/ãeðÚÈ}Gñ!FX’e–-5]yå{»šJ Æ ¢Œ@Æko› ¨,¬!ìm±´{ÙCEŠ.9$‡ÝDƒr(_tS´` µcL%$÷þ}ïûýÍÌoÆRš[ÒbK+Y}Þ{xP˜£áäú¯úýWÎ+¦Šºƒ÷½ŸJÿ¢zÒ;ÿªwúôéÙð)`£Ì—è ù;’Ü\.1}H°è G˜2ÓØºMbš©À¡&áõÕ¥UQí~j­–(i¾Ñ_Em E¼¡Õ9ôÆ8QEu§|,pÈPé¿%ô† ” Ö–µ_E·ú†²‘[É98ßÂÉÎ[ΪÃ/ò“Õ\înNB®pWüî=H¤‘Ew­`¾d¶vkH•v[Å1áïw»¯åÛ÷;;/ÑK²ÒOÖ3Åm²¿}¢kåÚì”ï ß>nBoô"I 6Q)Mä ı6š-í7VØøv°ÁZÚK;*;ë©T±Î2{ú´Ù¬×~é¸1Rö «â óç›|&=.ø¹ûYú˜ýco¨ÓùÒùò¯˜7.͹¸{DX|Í[%ÃZ)L”ÙÔŠ])öL9ëÎL¤p$E´!ʰF¬)¢V¢$3%×6úñÏ6ùr‘5øäÏÝ~આd¸îWË÷ÈE¿ÿØxôȹ÷{h[¥D{dvkµGM”x\ký>Š•¨oh•isÚ~ñâ„Þ8>>8®‹ET™‡¿z{Åó[ئFÿ9àðZ‡‡|w²ëX±È­ÏO›íz­¶ëýW~k¯@rÜð£¥ÁbJÜ`¤q½ŒiP;‚b.-2ØSñ–-I—¹.Ù-WZTµ¦./š&r­?¹ÐÅcØàÿ8µ&,¤AÚv`{ãÌx£Û½5SºV¨àCæÛÎX)wPÿñ X,óx_ßüc ±˜ÇuË@ãAÙ}ìºþÑÏÒ¥9ðº¾ûÈÙyuëvÿa¦ÈBÛfáxÁHBçlÿ 2åû«0SBu ¹YÐ+ÛõvKeƒK%›ºãø˜)‚F‡±BuðEäöKéôÖ9‹ÊÓz½N6ÎúÏ}cÆÐãލwP £åõcj%œ0ÑzQ:Œê† ÿ}qamÛ «&ý±¨žŠ6Œv¢**Ú˜FÞØ‘Â*Õ`ÂÆ,t¡ÞµÑòt¥úÞ¡%ޏ7îy,„ƒãëfN6¼?úÞÑ"“¸rp¾¤ð͒αuh ñú%¤<®é›p¥¯&¡7i''ôS¥¶Ṳ0ƒ~íx¨ÒB[ІïÈF ¾Z;F©9A­W·笋Ü”W(}ã3õ®åiöŠ\ŽGXhtPÆ‘ü¾»¹Y.àò¾´Ô#Ÿ?ý­ë܃1J Ry˜Íìb¨`d«7>¿âP1;å‡0T¢LQoôÂ¥‚©rÜ<>ÀQß­®¥KÏží8åçO„ "¾ŒØl¥²žÚ{BµÚöGØÈ¯ª7ä'ÎA0kIѯÁ2@¢h!úýæK;YøÅËí„1íäJÀG¢u˜‘B½Dmc¦Ö0Þ 5dw…M‡*æ+¨a¤t£®aê2Ú÷}ÏKh#Ñ7îzZ8oŽÉ€#…Q$Ý“0—/”™, ?Cäàf™?u~“mÆzaXñŽ—©H̾‰rsyý0ú¸´Î…€ˆ‚&*Úz2Rì+G Œ8ýÄJ ˆhã¶7ʉLyìy† &ìåUTVÊ¡ë¶0^ ersr¹`Ò 6ßwÞþ˧­dQG³LtÑ”I¼¿§Â†h©ì”Œ:n‚¾qªlô 'Í™±Ø*œ*[Åt Þ@Ýi=÷™*ž»G8”‡øSé?œ÷†Íz½ZÝÈ9@Ã+¬FÞˆè°âe$ߣÜ0î°›Ëò%<&S ðœÌåbI¶ÄøøIXöÖ‚5Ƌճu£„¡$JØD5¬«Æˆ¬¡uãvß`á`¨ðã1DóÔ y!ƒâåÍå&Ȉå‹zCàÀµ4|%YÔ ãHrÐ2}31µC¯õJsEÚ©¾›·ê‡Í…±‡H – ‰òñ¢¶ažx0ÔÆ ?°#¥kækT7|Šã}+SZzþ¿¾‘{äý®Ó 2Ï3‹·_mÁJ_pÆd«àã[(ÜÅ¥—:÷–¸%IìoTë,ÃäúÚê¢rüWЈú†.ØžzCA9=9nÖ0<ªÕ­L* o `É€Ã-šW6¥Lj ëæ´Š »–s…Ú7àa>u#õÇHý1"/c.ÛqHR"SûÐõÂϵÖ¼‹fÂXíã"a‘Ëø\Ù™bØê,4F‘5¢º‘ˆ“*(hTF8R¢á{¾(åd¦@â3ŠcÎ*ÊÇDšäs«ù Á—ܳ Ÿ[æIÞ „–ç¼ý²‘ÝO1R² dMÙ@¦0TÈ#åú;‹x¦€‰ÞP¸À7n@8tÙØØ][9B¡`¬æ7‰ª²ñld2KõÚönÑqº-¯lØ/óµðˆj‡"þPÅÄÜ^/¦vX-„]•}CB°d–!qL.ƒÆjyƒzcÄ¥bÏ”Àgñ• X);Sd§x^RnÂ.ã[G,½quºÑ'+Èm`±ºŠ4Q¼ÚdÊxeé<ððÎÎ{ïî7ˆF¥”Í®o°Œ7 ßnä ZÇp(Þ¸‰±a¼1$C‰ ™+ÈJSáTÝØÎ¤Ò÷\ŽÏ@Ñ0 gØÈBX¸[uc{ÃY!Ó«&SÎÎ>Jà1‰Ý™†:²L8^̸/çƒpDDKWœ¡î`A±ˆ=ÿ—‰þöÿ/ŸÐ6²;Ž1’5‘˜°ò H±]#e«©%˯£ɨ[Õ+Ö‚l(N!¨VÕC/¹8˜1d¡¹D™CiŠ/ò¥‹szPì!”eCN!‡í²MšÃ²‡–öÒïï½ùóf§OGó$ô¾óý~¾œ6èc(nx¿edÙ£PG±|U¾1ú+”Á csÓç Ã,ÑÙÉ”%9ÉõgϦÔ`MS“¥vË _d‹Ið¡É†ï@¨,kº”Ûêo÷æq·O7Êu«° D©ª@6«°o¼Lñ|㘤áöW(d·»Ûˆî¶º”(åååT<¾ e…x§Ä…¡«®Ãí+sñKŸBõr9Ÿ’ä¶¡Kž6>§S aüü….0qoCHöÂÅñª.®:fü„áQj(O.àp¸$ÊLhâ ÂI7˜8î 5%âËn¾£¦8Œh¦At¼ mL,J”’"KôÿÇ x¹FQÏ>Å`áD`H…^¿mñ§+½•E,T*_þÈwSJ“çÔU„LyCwßÁ87SŽ<ÎØ¥[·ÙlÕqWÛ€³©$´¡â˜eÍ`Ž¡éWKšÊ´ñå'øÊ¹Dí`ÿÓZ¹˜OJr€`Qn–}×¾{÷ÝéÂë ýÏ“1ÝøâŒ}ß°]©ö!j„Tñˆú8ˆ ¼¸Lù³‹ÇÓ¨:žÚà¾áKã¾þ­ô€Kã;¯§|í¸™‚‰.cà}{ÝV½YkâVû¨\ÞÀ‚Ç“¤ E†„Yh*6™¬_ü}{ñÚÜ\yÿפ¥$eàãFìg–u÷w7nn߬üܼ~ݼNMì¢ñàèfïˆfbÞõ_ ™f8{8ˆW±É¤ä<ˆZ‡¯“Çta+Éë ÖuÊ©ÁBÏü|‰²iDO=i0]Í®A¶1´aààöv´§,v7v\i0Ú yl†lã\¦ 1ŒÍÎ2Xœc[T_¢Þ ¸J+½[3×J¼,dWJRáˇëÝØîßï÷{‹ñdj©\oíîãzJB¶ñüøÆ›o¹*Xª@^‡eŒÑŵIÛª·IõË”r6$ÃPeY’é(Ìžñƒ›õb½Š±ººZI«óÊ’Ʋkãíêº7VrétÚ¾Ó>Ž>© 3+…´¢†§¬¿@#G­-ú6rŠ¢^õ×êh«ÚØòvô´¦Íü\!Ì<ßÀ#©#Ä!<åÊ®O=Û˜žyA%â†ã‘èØæ±ùÞ–Òñc ´ž(>nP˜Ñž"_¹‚)^T ZÇ’+(ÞŒ7¨òUØÒÖÁbŸ*ƒ.þÚxØëö{½•x2¹´T¬mt÷($ŽOOQ`a¯áNE}ß ‰¤  „Q¢¨¡¾E1ŠEÒFNúQ¡ªˆŠ…܌ޫ¿úç-,g·Š5/H¥öšc‚®ËÍGå'i”®!ñGXщ˜Š™ªÉh„ÆÉ¶0§ZQTU±=môÄ7]QÙJò‚Ë2åš ÷À6ñCH‘|"…»g^¡¥86ƒh7ãEt WAí¸´Ñ6;aÞ(E{ŠŒpà0Нújm¥«ˆ_r g¬ “ÐYU0©ÓBkØf¾qÿþÃÃýþ!\#‘EO¡¢²ËŠ´ÁBååË‹;,!Æuæ]d ”Q.¢£,‹Å¥l"1—ƒofh”,Z Ú_üø¶áîʼmèì×ÉÒ‡\1‘%ÏA?¦Edo{õåèü46U…:†ÔeÜg­b—:<™ŒÙb…Þ¿ C~3gº0y8Ü;è2åKþþðÝÄó™ÛSÆcæŽ-´”'Q/Q\ÛÄá“è{}ƒ…B4Sd]7ÖÌΈÉq:dš›)tèšZbiO¦A Ĉ”ÀT*n÷W®!÷ùd*›§[kROA¨0i R^¿þ‹¯¯ÿê)]c·ÙââhÖI0 ÔŽ|1Ÿ]Î&.ÍÅ$D€߯¦þÄÂ/x{Ë[L=­k ˜G -U×Ïiƒ6«9Ø¡a1uëIá þ“F5w`Ö8÷âÚ0yqþTß[ÈA7¼¾„ÕÁ9:0ßà6r¡|å“èÔK'?RÜ–ø†ˆ·oó†b ¶±#X7žo®<¢=Ú(y0 5;£¶A}@&Y¸g¨ŒQ€@@F¤·D8þÞÆ2‰d"‘L%//a9³ù%h£Î´±wpL™ÂB囨o<{öŒkfoŸ„Ø€8ZHò ÔŽ|6›M&ãs‹Š´iê€|ýUY8ô?~ÿÊ[—Š2¯f2’aæIYš·]Õ!ŽÅÊ=›î{‘ ‚> £yÕà¡bßñ÷Ñ}AUuƒˆs¼ |¾îÕW3O¤ gÆ^$q…¼Ç@¦QÜŠŽÇ¶XaÉ4B‘Âå"߈ØFG fmH8!Mj±ÐŽgbaB–c1_>z…ÎXÍÜi·ƒ·¯Ñès\¥L¾˜*2n¤@¢ll´äD¡O8qˆ¼ñoÑ7vw E™mt›­æQFqy¹a6ñÅEIaŒC´aè$ŽWÈãÿo4èRÁ«(’¹¦KÒjc]¸Ð]% 0˜0p¾õBÓø ÿÉ:}¢Éö"|F£B¡bQ‡99éó—Ü] ØãiƒÛÇ™h \ Ó)îgŒC.Ù¨bìÖ;Ç(ƈ„Æ—ÆN8De°KÀá IÓ®¤!i¸aê%:w†ÊLáì»q4“‘rGÇS4Ö±¦õ¥r­VG¤Ôº{]´Ø$Ê“SÂ'ÏEßàÚp}ƒhc„ÑB¢lÔëu”Ñüòòržkcn.^F”®6dèX“};ùï«ß4ø¨¤ÓĨmCUø+ëü®ºÎŸñ±UAôh‹¼Ø:jc}}«ºÕh³«”BŽ“žø ° €Ãmœœ4B£0??/jÃᨉW&Ì7Î"ñ"zýlæáƘáÆxÂAÔ P4p‘Ϣà T@ ¼¤x Vô¶*ïò Eѱ«Ó±¬ Ø`B‰|Ã7 EÆ–\"eŒ˜L'l@ÇçÑ£XfƒèóÓz ËZk6›xÒ‹¢©pÞxò’båbßèvY‡m5 C¡ DJq’kÄ/Í-HF‚%Å¡¸ DGöãÛ··¾èØ ^ˤô{¬­4B35Pª}tG˜ZÑUM±8‹Šã38ŠfŒi¥ìÐŽ†Ï‘1=w9;s¹ƒÿŒ»GÔ>8n$Jú°YM™®aÝsìÈ@ÔŠ6Ø!S6Û‘–bð–ÞˆøF Aß@‹…6fö°C™¬Q9‘ül×J´{4“.¦“)§)gú¿'¦ nbM»µr½K eÆ…¡è)³ Hãç´ÞqgìÖ¸4¨¾"™–³©l*Ïn—S—óÉú³5h·ÛP­ÛðŒÃøþžoÌ“o覞·¹ ¸Õö>ó<pêÐ_Úó'V Šªs±ôE@í %k£QH#: qtÇB:àÿ/Ï6¦®8¢a¯Ÿù¸1a(j‡xÃ7˜8B¡Òq}ÃÏ”v´¥âˆúNÅhÃêtàÚHn—E©Ê%T\¸ŠÍ܂˂?L§_|Ë E &ì‚)cooâ`ÿ”áÆKRÇÿè.ƒÐ6²3Ž˜t,i‚CmŒ•f`s¨)c³ñfµÛ•M¥ €q ÁˆŽR™%]¤ÃŰ>ÉÓ‹ILÁ¾,ê9U©À‡=YÄôbšž¼é¡ ć%¹ôÿ}ï{3ÛûF–<3oÞ̼ï÷þßÿA”S†o†ÿì÷X7î D!0þ@‚ÃÊgŸ¢Ö¹þ;(ÈM²’£óì1Þ ùÐ^{ÿ¯ÿ”K3¼9(¤ìägFŽäÓðÎU=c3%:HÇmr’ï/K?$\{Õ§Ò…}HsFQåJ–*Ý}¹º ôd§¡Žês ažÍÆY| >¼ˆéÆí†²´ëj€m%1Ý`ßÄelÌŠµ8·«·#¯áÎIb™‹ Ç„Ú&²§ØHˆ•\lXž|†Êä’‡¸ý§’®nû{ThííõFF x $$42u²¡Š å7þ•)Ã~¯ïÓÝo p6žeii Vf*ܦþhØ(Ÿ:(<ýU¼üƒ9W^ ÷ó߆lX–iż`a*úá‚Ê«h£'Ì‚B4Ò£¶M`–•)•äFE­BºÁGÊAž GÌvžöq@úçlò¢\AÄ#ÁùΧÉU/¼½ ÏóçZâµµ-1¦J>ðKÿ??Ï×ýêå1Êq!LE›ßòÑ£*)Šv¢~L5VŠ·«ÓÓî5²q݈TCì†{‹ç-6UR+,L›zJ\èå/aDVÙc€{…F¯»ßííSÛÛÛß3‹_ ² \¸.1uv¯¸F9|¥ë”ãXNé)ݸèŒI*o&oRy³Y¯HÃxÈ87Œ»=šP²¾ì½ ü ÿ{ûþC«¤š“ 6\GöalsB±FS·ìE=³.ɆnWàNQ [›×áj0¯OÍ"×XdCfdP}‰i‘áÖùh)ï”ÕyÑ€·fcÏäg1Q¸ë ýØx"=æ\iÙÅ@+‡ü<Ò(é8Ÿ®¢NQƒÃa+–³Y7»ÒÌS¯/Ð)•²çNd”åy>›Ïs-Ç¡ž(¥(·ƒ’ðH*MÍFoV*PR©[ܯ\*Ht¼ÜhÒ6©|Y_(j(›í‡¹¦qªÃ’½Å’òôÔÔbfÖg7ÈóϦ®„ËÁSwAr-j2Vò'ÆpPh˜¶ÒŒ¸l°rœ¡›Q,²à1öåPc$ZB‘QÖ§?bc‘¸XªÓw]…˜Øx}0¨½;úÁè‚ R |©BE±±» g"8p:Òû@¤rÃð‡¤dÎ(­¡5ºr싼ߢØxXýÄFv:G3DÛ˜•´²b̸­Æ5lxÒqÞBœ ™6ƒAßNѧPñ6Tg/㨋òI=Q{屜Œ–1a]àHô ô?¸ÚLX¶VŽ…²WŠmÜ`‘`W:¬%¯t²GiœèñY8êg¯Ñ™ðVøË¥ü¢èFÞ“‘;àR;^¤ÄÜÆlœ·„U÷2<;—¯¶û€’ ;P­?îw÷9™  úƒÑš‰ …WE’-~ŽCe5ðstD9åXRÊ1³1ì› +\/R±+Žƒ¥ÃéSCúê>ë*6v\úܹß6~þKDäc÷›å’ÌCڲͯýWtµØgYϘƒúƤ…ÿí@M6Ö& D5hÊäg2§4г·š2FÚ‘@çSÌN°ÝˆET0£ÐÑCe(hê‹?ã°7Y.]ž9æ.Ö 4ŽÄ 8ˆ uh¶,øEw¼’J¥,¶+ úX)¼…W%:N)ªJÉžfÃ Ý A5 _f#£˜jé=,[»š QþÁÁ 0 œÂX¨…_¡´ ÂñвŠÂãèµò ÖáuƒÐ"BñQ«_2>—E*±tv¨ˆºtñ¹Oþ.ÓOºÔàduxi¼ÿ­‡!QÓaõ2(E®®1ôi“À´ý†—äè»vS†ÍÙeõŸC‹/hª½Ó‘U K´·%Õ¿´/{Ñ¢… ÙV•ФsJ›uCN'Q<¢ˆ}NÂöl·¥n—³õ­Ì(t#è¨.-gÔ-¢ÞÜÒ°R¶°l¨qàudOÃЃ¹T­ó¤%Q÷ ”¦¡Gh9H*)?XoÈ‹3±¨nCžq, õ‡pÈ=¼YÔlÉéb®¡^‰ä‹ž>V£H 6RgèÆ„Ks‡ç¼ Õ 4àA!Ê‚ööA‡R ¬á}Ê%¤ô=4›´ô.@Qgì‚Í].QŽŽ”…nK>9æ:Etã~¥^‰‰Ê)àâäŸKFå`H~co¯§”c‡®»1usòúo..ÓJ&§Ý–¼þ¼×W…\M’ éFM}¯ÐDªÀ–“”|¥”ñ%­øš-9÷—r¥wËËØã÷k˜ªŒšûVÚÊ©ƒ`DzRëë¶9Ç€ŠNèD«ÑÈ­ÜöÉŠéÞrìÑä·”c6äÁ[cP–ì Ø#vLNBržV½mB8-=È8LNUxWC-bÞ[–ÝrÎÙ½W,½ð-0úML6ˆŒì/èrJ•ØH%€|ƳžFN04ôƒtƒ¡ŒÅ.ó2(¡¼6^+Ý8VnTàkØŠÊ"ÒÅ%Çâýû ãó>ÌØ 8Ùðài؉Nݼ99yýú‚zÿÕ°É{Ó2]­yò ÿç» BÛVÒ8nÒC.ƒ/’Bز%.–âÂKüö=0K](MS•w !Ïõ’^ ƒÁëƒr)^¼döÒ[ƒ! {²¨éa0MX¶9ô@¯ûÿ¾oFq^_;²eY#iF3¿ùÿOë†ç‰p0¼f¶XX­ºpT©É0´&ëFÀƒîXÛÜ4Á¶gèd°ñ(ïÝ «¸!] ݆3-x”V4:{mšâ}ˆHg¯©¤Ðö%£•S+.ðirkĵÞe‹ÕÔý…] «³W5°à» ]×í"ð@þ‹é X5ÈpW*z°¾ËÚ ðšlLßÝø’öt™ÙPjüFÁã…Ø§¡ÉÀÚE0I ¤Oh°nHÑTüƒ$ã¼6 @òQû«<%Õ ‡|…õU.s™L!ADé(MéöØòtù¶¹………»wïþq-Z#6–1bêçâÆFÄïOaYm2¾Þ0<Þz䂼etc—%ÃXUTQu‰>¿Æs`PÕ²Œ/†_Ý—GÀêÌðµ° Ù¼m#µ•Á£Ê-GÙ…Ÿw÷Â0!!ÐŒN,BîÌë¼¥T›=á¤S—)Þ;«“ÞvÛÀ¼FoºÝÐ˨MqQ5Ó®“Wöí`c›Ÿã‚ë¹"´Q»va$¦LÃoܰM×{éBŠ2Óž¿+hPêÚí¦y ¨Ä£Á¥?@›ÆÑ ì‘¢JDa6`8žJL1Q…à6€ç)ìf¡""«çnd”Ï €Gï(é%¢JR–Ö˜Žµ àI¬ÀÄåÜùHF'¸5°nlÐ<¶P(JlÓÛ_膰Áu¸b*k‘nŒ I|‰1âY‡~¶ƒô$>¬a(]’žU—g§€ßŠß ÛBGè;W°~Ýý}MÄUÙÐ7—Hºr®ÝÜЯêP$¾":³¬(«ÕeC·;å8`ƒÚ@,eY?¸\ªòÜÇy–÷z–"ºá|é72öï\d&e{\©²Š×`6z×lÆ1ó‘´ N39ŒÃC&?‡T¸¾'ÝxÁx˜˜ryy©•3Í!Aù«NW¸ÌÍM ÊeÿIPCh¯'nãÞúÂÒÒÂÒݵúZD¯KK!ï]ªŠò P<Ï á‰ÿÀV5WR²[HÓŽ)8ª™ê[YËq}}uTÊæ&uÅMgÞ<Á"ÝГ‰I^@ÏKÚ’–ŠxO³ÜBäscÖ“«"äÁmÌ»«Ñh··M—Jº~øŒ²Gz¿³cÚ»iå²+ú‚ûüñ¸S,Þ7`“p\³¢Ó…/u#c;åMïeYÉ… ÊÞtMÚšÍè1ÉñøÀo0 Àâ- ©d…ðøøl\ ¦<ÍtÏ/Ï>‰nHËlLüºärÜ?Çít2Á G’tÂ¤×£Ú ˽{«ÀCÈ å‡ïºfpEÒD”‘°Â^%eã&t#]w&¦ì^CÇ *ß)+«õ bk ªðu%é„ E8~U–áUTa3Œã°¡I Èouâ˜àØl¤4Ò—@¸ð4q\7€"œ9ЀÏÛJÛ Çt»„ј ¾^¦ å¯E”¯Ç” üFyóeÑÉ`˜@«”#ñ¤â@Gè€c ¯Êq !8Ö )”¥°ã¸@hùðùiæoÌg±¤ÿ=ë|ÙqÆ×ï$ÉÉF÷ˆáè'TŒ!É]_]Z½· cJUò ¢ɘaNóEÏÓJ±ÅX<ÛÒÇø1³‘Æž¤0Wtè‘‚œCI@-2cî¨e™“ªª*5#ÃoÀ^€F ýˆ‚«OP½EÖÔ㆞Ö@Q XTL~ U‰Ù{è›)\xZ6âö†îÄ Úp¦æ 9 鉞—_Q–ª¢ôk¶`QÑð\“ IS~‹ 5]vÁ†R.dƒ½Ë©FÒg§‘¤hô5ˆ'fƒÈ¡¨Ä[}üñg'Ð BãâãÅ«LWôBì¨.áHIX(ÞÿJºº$ƒãÄ”7äŽæž÷–V—–ꑼî2rÖ¼ë-멈nÚv~Ú»*¾W©að\äc„ÇV%¢ñÁÔÂÅs"#™.ª¥ê*…*ŸØàvJYË*q Zà†£¨dA7¤š×+éF¸W×ó™y¦'–ØÄ }ªŸ«| â#¦¸²Oˆ4ù¾ Ú€±U¾‰)q]ƒ‰'SSÕœC4Ñ^5’ת ŸUnS¿ˆ~¢a Ûöh–ò-Ý`6ü¢Í…È 0Ž(¤Áè ’¤ôŒj§ÃÓÁ©Êä&rY½YéÑ$Ž gò? ÉÊS>‰fˆnœ®PÄCñoö½ˆ'GZ9 ¦Ýè;QȬ®S2óãš¼wT±ò”¨-Ê€àíÉÍ{£¥EuŠûê÷Å?Ãs艋ªYέ­Q4j¦ö¾•§h^Ó­@7²“‘àXÑ×L¢¡J ——²øúáó0l^­Ó(héƒ4ʪè¹rÀ³­ˆY5ŽúÐnšÛFt—Ôuƒ›R׼͓û2vv 03ˆ_ËQ”B)LD)¬[]yQÖ €áü6ŽKl¨Pf‹;âE¿¦î˲ëï†ÌÆk2DG FÒOÆñ1¸´ðê?9âKÒ~8žŸº¼\ɼ.à7º¤BöÖ Q V´ôîøífoаەCj=I6)¢‚Æs­°­*QS$1óeÑ­žÿÜÔL’‹ñýF:æùz0ÊÆ2ÐÈÖÒzüó_„/ ‚ÇuZ°ŽÓ1ÿæ³ /æä…vp7Œ¯ØˆZ­nÍF˜Þ5bŠ¡ypOT¬pئù¬f¥¦²*÷‡EÎa‹åÅ¢ËL”E5fg‹³bF¿á7œr™ìÚ."Êkö¡¬G"EÿʆÃjÀln '''Óü#exr~öé'ÒϤb✊ä°$ Ç€2²¶¼ÃcR;Kö%q §¿ˆn,´¼VZR¢,2ËñŒràó¬ÎÁg n‹ºÑâÿì5kQÔŠÒÇ)+_hða‹Ø0ºñ"$>^2RIä̱ÂHx>˜¡´†ÈØ÷êÍf¥àŠ®rãô8¼Ã$¸@Hiw|ÎÂf+7¬ëþuˆ ǶIÜ·›9…܉Çáà1ª£±è–ËåÅï¿×|0øLÏ·ñU66ɦ¤,âDû=-)ÃÁ¾ƒ!i‡ðÀ\ éC¢Aßó“óó³s7ó vôâ3놑KÃIÇÿ8¼`Ãóx7¯z*qçôŒY†ô‡¿üEÃñàÁú«k2ÃÐÿS^>¡mdwÝÃ^]¤Äö’àñiK/Eè²F )ÀžT¢^J”¦fÀÈ陡².ãAeVDz‹ÇìÅä`ãœRƒ ¦d%|XX„Á~¿÷æS»Ð7£?óæÍ›7ó>ïûûþŠÐ alêwÖ_(a­Ç–£j6…(° ¬…Ãf²½ÛSOz" Ôéé>¯I\”ápcÜ)i«…<¦¾'H«,K Ç·YÙ 6hÓhÜæ7VšvllsLQE…þ“8qMÐPÊ1¡Mº¡Â‰þ™Š‘3DèÆ hœÏà7~ÖpplÑAåz™L'´T6• ‹Ãqhbœ_§´+åøÃ÷#¼Mlì/ªÍù\ ´‡›Uz)–m5±9hÂÕ›.–>M&Ú…›^ÂÁÊ\¶åô¸Cj¼Í«««ŽK‡,X¤˜ZúOSö½< ¥ís÷!Åù‚X—¾ß£6 ¦aTd§óB¾ôhD¨rI£¸jï•Ï*d8½«6×`O…Oçi°U/ˆ'4}® ûÊntˆ/FŸƒŠM!…GNm %…¢ÅcÄ(`„Q%2Zx$·µPåy3QJ6M¹‰/Eå¡eKJ`»*{%Ý8â4å(Í[É`¦NØmtnL?àOì6ˆZù˜äŸtcvu5›])ݸˆ3•À 4Pýd€ÐE®©¢ã e(s@åésÍÆ“'¼ñ ø A7r9(8ÏSèA’E¡Ò´,ÛõôÛû¦– Ûî)ªÐW å9VmÇ õ<†aNôÁ*xqÕÅ~Œ’ÓS/=Lîëø '>/º}=õµ,ól¼ðus—:€uÕx\Êbí”~¨ª¨‡¼9Эà,D©,)» tWF¼°d§— Á ¦’xPÐ#Ñôt—kZ8-n€âRš2ŸU8¤ÜÂÄw—B ÂÛ~’¤ ¦Šw*¤(g8! 6&d8N§l8¦éÆ_Š2 ã좚{9»šÿÝPÑä"ÎTÆ1 PÆÓÉÇôËb¡„ãt|Bñ$wç9Ðx® ¤h|? ¹ô] ÝÄ”\y÷eÓ0-7Ðèµp>Ãl´‚¤tÔî Q]w½l]z…,ª¯:k¸¸”…І¢ ZôyJÖõíBÏd×øFÍ$7(˜Û8ÔwqËù¼ñ@bæÕ=K7PgÁ7-zÓø3LIƒ’²Ý‹G %˜™zT·‰øZéñÉäP·ß•å/ŽT6ÄmlXö¶B²qxÈt°ne|Æ S¥ö“Sš@šb#Úg¨L…"ç)¤—³O³_^S­, ªŒÓ?¸è#䆂̈́*߀vIC6þ8Üz:dá#O9®<é”êFî÷a¶׎ â†0µ=u7ÃÿÑë Iç/+nÌF‰“‚L#,l$¹ ;%,Ø”(—0î;nÒ3Z—°èSºB¿Q­­%G¼QÂÌ2ƒjÔjtdìlÙigëÖ¾®Ôzi'@nÛò’>ªÅ9±ÐHû³"Aã›oÙ0Åm1ÅÙ%2ˆ ‚ƒÙH¸8Rª1a§qÍày›èIŒEcÂù,%´ð¢P³©…<…üÆ'ÎS”ÝPÂ1V8\Ó *S¶£cM…‡f<÷lø T Y7¶žÇ~t¿Z ™œÞZªù¹âÝ$w‘ýÛ[j4ld†ÝÀ]„ÓÊL•‘/éùEÒ é$“kn#yÊ'Kó˜Xç3 “æ@Ípv¥ôn> ð7–„‰éÝÒm0ðbÅ^®·²•™YÝ”5)ÕpˆÛbJÉ´l jw tãà@¡AÂqHvƒ¢ 휟œªï «†#SÆTáqöa»1eÝ 4årGëF È Eå(cd|Êò<ö­/Èh<¢¼Ú·’B¦lD´E.f1å G„êõGUPQVÝZ¶ìGG7ŒOEªY·ŒÅã{ņ ñue IÉœ ϧš…t[Ÿpž‹¶#5ª0Ò?¡ú¡ˆQpœv[Ê T”4º?‰|@Ž¢ä\Ò öê7Ò…IQ¦õHc½¾´®™€\Ø+e¼(á˺Qš¯7aDcÙ`·q Ç;Röžì70u'ìÈtÄQù˜pzÆùÅ”³é:ò”ŸÎg—W;äEϦÉvSsª2V_¸ß¾MB`ÜÙÙ±o DÅ–²Ž‘~ûS *¦ 44ɦ~hY›—ëÍzù ðXv‚”ˆ´)õW¤Ø³¢7_Ÿ¤<¤à¬tõ%\a˜Ì_W›Ãe”ófºKïï‰bžâtc#ÆçÚøZE1÷€f^’%ÉÅÊSNUêJd`7Êh€ (GD>$Y¨úsÝë¹÷³ËO—W³\Õ¾^,ÞTiªúAÎišzˆsÏŒãã½áñÖ±’½­¡Ž(œª$läEɰ̘ܯjA”)a,æAÝ„d£Þä;.---óÄ‡ÙÆÞb1o&dPTñã‰0àòœÕÕ¸ï@éFýˆÖ5ëIG gLv¹цnÈu¹îG׊[†Kp¶eZz×΋˜õeuÆAL‰‡Tn:|ムWiX]=d«e®ÇyO†©dcÞ¬°Û7³aÌ# ê¼A¢B1å@e°l7bÝÐ9%Ð JXŒã5ž,{äL…%¤ì7ÀÆÿS澺sg燷Ç{ÇŒc¢cïÕÑØÓÂñœéxºÝhŒ¢Ñhôù©[÷E¦Å^yët ÉÑ‘é5p«åßVX3:8# *m¿÷£F×o”ïVì OdLˆ?J:X¼kZÎ_bl2º!D¾:Rt»5ã+S/7VÆÇxÜ–“úhlÆd°h|ž¦ÜSr%’ÆÎ`›tc°Ï9ìÑç¯G‰nLx#Ùà …ð€ãÐhhŘ(»Aß°gtãüüò|ö~')¯_¿ÖÿžaÛÉ~¨âíÿB9Fa&èC€ ¢P`ÙÚÓaE ǯs•£ƒ}Œx0NF7P„õÕjI§Õ²Z°ŸKJ›À솪ºâgÑÒuœ–ýße%{ðg­%+œ¿¬8«ˆ0´qÅŠ’ŒvL(]ŸÖù:Hh· ¨tC×´;]ßïvŠ”ü•”î_þ »ÝtÈme¬ÿa¼Œ]ÛHÓ0.ÖE±!M,ûد;†4Þ»¸JÛY¶Q!7S¤8©ñª:Cð5Æ‹Š5l“ÎŽ{Nµ2oÙlqà)†I¹çyß÷›Ù’²ßŒÆ’âÈÒè7¿÷yÚÂÆ»·ï˜x¨ªä›ç{16ð «øˆ\Û/÷½—¾ïùÏ<¯â•ÔÆ“¨Ë¢¥ù3EØ8Á;:a¥7´£ô… nì¯*C-)ÜÆå„[Kn ê6¾Ã6Ž'ã$'“ñ]FlÈ"#]á¹ÁåÏ_ — ˧ö“iMvgÿûBªwÖ}Óíþûr^p«‘ê¢JmÈfæ¨jü`8}ùüùó 6‡@‹lSN|:fø¤b4› ·šáÌzåî´ƒd ò±®vnµ: ×QŠF§ÝjÿôNW !ªî5÷ð&Âàl:¤~|t0áËýNFÅ÷f–åõõo´ÅÎõóFçhvß-)ûDšB)‰WR3U··Ÿn]ØPD¦JˆžÂ‘"s%Ž<’ ÇDa0pX¸ƒaˆ9â$NƉP’ˆ7"I‘ríL2§HÏ¥Á¦hÀ,*ÅBç#´ñ¾÷¦{o³l<džD²hÕOÍÁ#žSoä¶/áe ¹Í‚É‚gEªŒvšNÓÒžA¿§€˜6tuæ¥SŒ¤Vç½RñÉû«ymTù”U÷¡=D &mlHµ¸ahÌÍÅuœ­¤ÑN·›æ #eãJÝA0(,Ì—0†½NÿjŠÅâ_×¾[+¯ý†J:¢DŠ ˜â QªQ$ŒŠ‘ƒã\½q©Ôú 1áTY+øÃ>㼸6ÖWòÞx†øµ½ñFÕÑQ•tšóF]~ò°ŒÌ ¹;¡‰£I:šÍo„:EB‹¦G«e äïtŒåd^yá/96üUæ 7\§²$êçèxè ¶ÙuWSJËò^®6à³Þ™UX!â£FáãFÒÆN–›[’1¼íwƒïŠ_}Å—y¼¶‹&ú3„¦ ˜;;l$öc‚Dš0ŽF"£d xðÿ^ƒŒkKºS6UNÏ_s¦ì ÿÅ{üÐï¡§t‘£¯4ë2àx¶]^dËŠÝ[ãF"´ëV_~a¼4ÁœMt"ÝVìª?”ˆƒ0å"ˆ ¦m«/3•(äWÈ°êØø{ yÃÅl¤TåäЀ7¶*÷ãÆúý™2ß«¾·6$o¼ï™6RqH ÃT7*½Ð“—{´¶v|qq=2àÛNøÕ'" à@ïj$Ø=†$޲T*‰t0Êà8×¼qªSå5Ë÷k…•ó†xãè$¼Ç¼QF:/ãR©Tá¡Þ0HßyƒU¯¿?›>fðqðÐÜãŒIrY¤åðhcW*Ò$’ƒ“…8¤ppÚ¸¼Q³¼a!ÙiãAeÞ˜ÑÃj éP2VyceµîIŒ>a‰Õžr•eÑ¡l7WŸ†BÅW"k»Çú…Êpˆ##š$0âx "&“)îL $ãŽ##vê0Hm‘›4‹¤æ ˤœ.œ*û0‡ÁÉP »¡ï•ò©„k…`”±yˆé ã‡SNfÍðð34LKâÇC8”fÐÔÞb_]ã©MÚ¡ë´²uÒyƒ±¢µ¶%sDõ¡àübl’7ÂFÚŸ$n¨5øRmðäÒÆ¦î›Ö_׿á>?o<*U*Ð8:±ž8rlXS¹²†B6N<ÑÅñ…ÅM•‘®„âˆî09ÈB<ž|žN&¨'c £‰¶$R±‹F(§ y%…ãRnyuœr¬pªB賓ƒNX¿Ï†_.WàlŒé¸ ùmÜêr«gúø÷½/©)q´ÁÞ²¿p¼Ì„VFí–ÛVêa„`´„ Ò ÿõVàxû|ËYÃyï³® ÅÕ9÷½± ixù;¿Ã®”¼-ü…õÆ™Œ”¾DÌŸŒ “«àþÏîÅ…»Ìåû´ëŸ+Žï¢x:Æ’˜1N' #™ …Ž'8&.~°¯¸ÿç¨ ]R8 ÒËSZãµ6•ÃÃýýµBµ =eŽ7<T”ÕƒãÖ_¬™ÎØyÍ䣮s¦þ'Û­´—@nx¨ÞÀµ­úhÌ2Ó`:Æ…z£æøoÈQCˆ -<4¬Âõ:[7§-^³qƒ%Å˲Æ6 ë•ÊÂÆ™yC[JNŸXS„uãâZRAú}ÚXeŒâgH€*0Z¦Ÿ?Oøˆú˜™i,销D)P‘ÄÐt]¬Èš5ô(5dð°¿8JðF®õ½ÇùOô”×HY&ŠÌ[àá“­…tÌŠCÎ.)¡5êi ‘ˆW¯/Ç£!p4¥æJui*º92r奕â8´Þ*àÂ!#LÊ”¼öƒ¸á罡-%CJ ÀpÚ(-a㮲°®yCàšÒ¿:mÈBƒÅ2Š»m›Ü¯G–A-AÈŽä9L1C’ñdš|ÓDc4&Ÿc­.¹ØA]ăÈÍ×c­¦hî8—ÌA.^«7Ž7gh°!ØxrÏ`ƒ_6Ó/Ÿ?Á‡žÖºí5AÂæ¸Œ²„*£™ID¹h( ¢ÂAÎ_®Û m©·‚eŽ–B⦎XcÖ2Wc5n`¯Tä\¤ctlÎhcnÞ(¬{•  ƒ ›)™4HÅP:Êd<>¦î‚†& |±‰^û.Vâ{Ž)˜Qt:–cEïŒåŸ£è.Ö¹b…V÷k&[ù .m!8œžË<±©6^¬!vq%åâ,ÛeÂáãÆËƼWÑ’ðá[ÞHµá[}áÙ†;êVmñxá|iÎçCF‹šÒ;¥½´²½5HÇ´Á#±8°¡"´d¿,ršõ†bQM¬y£’¢¡i#õ’h‰h¬>šÏ†W§7ÀF—=¥( :²Ä,pû°ZX9Ö1° 1¹j_±áA3Ä,¯ŸÓñ”iC˜HÆwH¢±DbG43[FZWð7ÎJÆéå¹ÕªƒÎ ûœ)/^¼(‚.´ñ ’QÎfìVEÑÑ»%2Y?œ8j¾Sߊa-]zi.Œ‚FAš†CÒê=kd¤­òèXuÁP¼ÑvÊ4hPÆ—¡÷T 4pè'á'–,š[*i]ž7VÉFlt{ggzýœ88N®˜A‡a¡°+ùPt/yc€F1rý$ŽXdå0’¯=ž°– bL˜;a>fMÈ[Œô˜Öœ‘¾pZRŒ Cã4õ†Ê‹üí/…â?;81ÞÆÌ'zêmÿŸòòq#=øˆ9ìµÜ$Ù5±r—€C$ØBä`‹qa„rJ1„)¶ÚaHeEàn‹u3­®1ª——"*¬tîV¨;®Pº5U‘·H@Œo´Êû¼ïû¾iäóÈ«öÚÖÎožç÷p§ 7œ2J…¼õ ѡϲâ£fZ¥&/$>6FV½\ÄÁ±·*!6±~4Mnðƒ©"wxîýCÔLñDE­Ã噆kÄMåFÉÐqÀÁ±ý¢KW±Á¶?ÔÜ>¨M> UÜ;#÷‰”Š”ˆzF`ª§<Ä€¥JY¤H f-CüÁ!¯ ÓGS¡ãz4p(ÌF·'¥¢CåŒØxö(—Gn8Î$ŒF•s?7ÇùXçÈ®ùb ¤«È^öz±Àð×/6æ£ig‡õð½‡òOÉ ÈFjÁÆzdtŸÒM„E±à”Œ‰ªneã.é Éèkaƒ*e°FC•cÜÈ=ü±Ç×òdÊqÁµ2‘Ë=\S1]È×,X"$XJ Z´!à Q:ð­3ú^^³ ƒ‡ð1‘!;ÒøP8$7î+:^œüµòìÙ¡Qw IÚ•QO…ƒCîP'qtÈn‡€X»V' í£Îx|†¿!¿ô,Òù¼Ø ÄßJ‡‚Ñôõ!­çvl4<Ë6\Q×^°‡†æFž¸ÈSnlõ;NÑõyÄÒN°‹rvXh´ s’pÒ¦*|ý‡•zù#3ر·+Z*ô,äQ p4b§fÕ XT=Ì` &(,ž±ò™NéòFa<.Ù7N*•ãor‡ š)‡‰Ot¸¾L\£ˆ2îq'ù¸åÌ¥««ú9: ≪„4j»ùP!5½rž!k$¬yëë¼óh1Z?ü]¾¢ÞZ7èƒ2n*7¨RжmäóÛsC«Õn¿¿ ˜ É¡G;w÷Ç_ÆrÎûQY¨-„ÌÆTJ…HiÄ.£Û)bVPEƒ4 ¥„ðv056N Þ²×"‚Æ+Þ°g•ÊÓ§ß<ÌÑO¤šdcßI.úD´CºÅ)sŸh©`¾8^ÕÍ®—ÚÆÍS8bïЇ¬Ã·j%Fc#= –Vf$žši®¡YcftCœymeOs#EGa-£y†ã ¿±ÄFsƒvÊPmtø0÷ŽN Ç<ý tŸ–9p?ÐÜ)3 qK·hI#eµ4¢yi$í¡’§Ä¸Áó00Ù!¾;Zó!•Â;E…Žg•ãã£_æþ@¹‘ü`‡)6DH€ 2RJ1²R²rƒ.3Ú°\*4aõ0¾A.zH ….ZIx•PÐXÕ°˜âê×ÅB(,o©M" XÊ t ½^á%LÄ£W A݆¢ü·*×Z(,¥êÝË7¨ÊgÇÇ¿L;¶êÜM -GY§£áIšÐ[”.rƒžŠÌ~Ùèˆ×m].\º½ü2>ùŒñÓúa˜–¾8O›¨üã4UNc4¦\ãJ)Á7ƒg ÙF>¿Õ7rw‹Ž§lpnð4†Ƙ(¹G£^OUƒÑ" ˜G:»a ý2]rjPƒ,#Xh…ÊŠŽår! f×H„h¹R8¼cGj¡=íÀÉ3…¸¸|ñ‚;åäéñÑÑƒßæŠ^rÂf°a„0(sn˜/ ]ô‰[•î2륶 ˆI:/HFãWð.ùHÞ.ùAóƒ§îEBL›IP 窺Œ‡¨¨É ú\^9éñ†MèFÖ†…pxôzýºB÷Ê¿ÕEÙC{JÎöIÀ²aNp„Ç(œÉȸ¦b oÿG È<)6(né--3òPˈ'-¦ÊÂdÃF7I äFOjEÑxò!h¼÷îåö½¤n䋸 |÷mއþÐÊŽ£ºæ)Uµ/è—š¬["¢Æxàn—l6K¢]üó Y·¶~X‚Ú4l$ET+¥±ŽEó±• €atCdƒtã0Ã7¨Ÿ]øF«EhX¹Áµ2.äÞu{€Ãt »h\(8f8ÅPkùÝ`±Dƒp*À0¢%oÎ,–@•”$õX„f«ï × Ûè0^/96p~òxoïa.5SE§ô-]™é¡ŒÈ´UYãØ¨z¿ú"øIZ?¶ë†]*R&õÓø'¬lûFIlÃI¤F!Ÿw ÄFCØRÑØŽÛèz‡ÌW.q¢!«†¬\üYDlÐx%",Ÿ!)ÁBæq‹·}*‡ø E<‚ézÁN'Ü+½ÑDr£Ë3åM ÇÙsfã1åÆ}‚aÃ7¹Q’I&²[Žª`\$7\±wW½$ð¨ó_ºtó²ÐÏâaºå\^\h¿Ð͉=i7b£fl\*')¨´ -ØR©°Î,6\¹Ñé\ÑPé÷וB#åÝe7^)#Y¯qj˜ +•B7º¾G dÆ“•¦l¸#©N0aá£Ë(bƒ•Јke¦Q˜V Å3ºq)¹qöüùÉÉ tcïëߥ?Ï~±X**»éàËÊu47H4øgéJn˜eû³øD—“cá+ºÖàdÉZ·öh‰Ÿ øhL ÉÊ E£ÃáB8ÜôHÑF0ÄEó»rCdԧܸ’ä~ÈJÙßï^rp°ŠŽ$6½W:‹(.îçu ÍX ø&YEÄvº\0!ôî"·ñoâN\Dp2á14¹îɘE©`ÁJl 7(6*•'ì}õõŸ7Øø®X*• |);ôƒ»äío… Çëô[àÄÎ ü¢£¥4´j6m:+Íý^ÝÒ}£=ðq¢j5¿?¤S†7µÝŸÖ¯~ Ä[<í4Z¾âÑñ™ˆó–o­[ ߬É!#…†ß²ÐÀzõ\3ÂÌQpJ¶ŠˆndûFîÀ¡ÏDr%p 6d¨\±‰Ê!åš/k.–ÐDJg“¢ÿò²‡“»¼ W$´N:ñŒÆŠ"ŠP)¢ 8€ ßl,ì¼Ô #ã¢F²£1ïç ÞŸw¼æüjÞ:ŽûóÆ©ÄÇËù˜îçþ°¯'øã[9Û;LJŸ{¦áÇû%½a¬Ü@j´ÆV£p-ºžý ‹PQ‚#¦ã@„ƒÐÈê’Q¯ßh¿¿ê S~¨nÔs'6º²l¢øº;øÔ2¤Æ+aƒjFQ$é4V·ðŽ…&Z,MçˆÍ S+ô:ž°]QQ3SÎ*Ç4Söîÿ韛8J¸+J~”L×–œÌüú>~¡[ú}¢bNíW^‰C-£HéT–È4eãÐÄžÄ ^Å*§µsf5®’®f‰5ªú‹ÎþILür°gðæö@Yësczyb}/¥åÏlÞH{>[†N«]*¼ˆ'”5ÚåøoÔð›v\7(5–.UX ŠÊ%486nò ÇÚ4 é(wØà¢¿z÷X* AFË’2ÒÑ–Q´U°³Ea¿VoŸžˆ!5Ùãcp2 ØÀ*,@éÒf —òÑR@)¡èý[WCØ(r#èÆéF¬Ð«¢¥Ðþ¹(O*¡ƒA®Ha¿²ò´ ½`6Î´Ë „ŠËù1H9>ïÓ¨áQ„ßdé@o鄘`íló;eFÁÆÎ¨À®¡£ùæ§/¯²QAlV*DÈ,ôkÿ€ñQá)clÀ`„d:ßÊïŽ=]GU=Äqš4R"DŒ4Ë^‰¨†ÜPË&[¶:‚‰DH‰PFpj2í°N‘rÊ9¤¾e ‚¡oiCp¤96½ê1‚ªÕê†SÊQJlp•5ÁIn©«À“3ïœÛ]Ïr_³8çÄÀãù1r‚2¦;èrZ„aÂ¥ßaãlm±Œ2¡Ð­"7¶¨¦pKyL¹±¸8w÷î{w>ýîõ¿®åÆh%¢2„Àà]…2£R0QˆjE8a_Zì‹ÀÀŽsCSnìká½Ímpƒü›øA%ðÊ~5g‘Š#qi0<f´–uUyé4ŒT¥±¬J†Ã­w¿—~ýylhWe5 ¹›ÃlÀ=} 2BldÈmÀÃ>KªNÔ:Bʨ\ÁÈtÆsƒlóniI\ŽñtcšrãÆ™21±T«ÕÈ8ÐbwS”XÊ5…rƒˆZ ¯a¯.ÑÑ?åáÒi±k€µ­ö”óŒdt0색A¿˜(ç”ä: «Fÿè(V²Ý6!ž\í`£En„ŽÂ-%eqaaaòî{·ŸüðúåU6ff/mÈ@2±ÑÄ ­¥"Êܨ ¢Hñ£æù‚Žb|ÅX¡|ÔÀ é#aD3ëä3ê²›È î/‘EbE²/PLà.‰¨¡ "¨ˆÈf&ww©³ÐM®bÔ–”E+‰¹B¹NÃFg>¢ŒB¸d)ù4ƒÙ€oh×ô‰ñëÚ'”P×^‚ãÃeT¢FºAÂ1¡ÁrnN ÆÅH™¾i¦LLÍ22ÊhX=ñ§§ÜS°><ýƒpl”Û+tÎv{«@c¥ÞêtÁÄY— H`ŽtÙDÑZp>èŸ2 ƒn7$êí v C‹=[á5„Ðà Ël<¥ØxtanqlüîÉ?½!7®àQ˜Çì§£¹B ×X_68¿ÃuÝõÞÍĘ}Èiq"—­kî [BÜb?ޤÍyïd¤ÿë/Rê÷£'•Œyo¼‡1ú8–”K †d!c‘2:Î|êâÌÐi#O1A¸ß≸ÙóVmúœzŠïejs&b)Mð7 öY&í_VGp 9ˆ‰±ä˜§ë0º(AE™ŒéégʇĆ Zl“ØH3vÑõ‰?bE¸¦´y¦6Ê7vÓd€B;`ƒèØjŸ úC ÌŽ>MBdÐ'6K¢„¹ s ’ÁY@!°Ê‘ e a¥{Z/¤Ø ™rçÏ^ôܵO3S|ö±ËÀñ"£Ü¨Ý–3E…·<áí!}™òqV+/póá½$-O–åÆ2"n’—Ę.Ó¾Œø¢GÄ™óf ´„lƒš q¬.m«ã'&@c½8¥_j¬¥Ðÿäͱ1?*,³Sÿg¦ Ä¢§ •ÐT(8à!7v¸§´(9ˆÓ‘mŽV§Å[èkOë;2 2ÐÌó„%Ãa·@†Z ë(UØ.  . Í­<¼s;¼5ç%Ç׬¢)Ÿ=FlÜ_œûøã&óɳŸòklL°¸W³ƒ%¤h/E¡‘ý=z²‘ÒóiÑ]p¥íËÄ+¦ßË…î6ò‚k[UÖªlÁ;ªü¨ª@Cf6õ4aâUzêÛ:“.ÆÐ ·G£h)ÑXfT¸¦Ð<™×%Ä͔险·Í”ŠÔºASe;°A2º¯É7ÆÑh•D”—‘—¯¾ÆiŒP$`Ñi€t¹Åž£žpo¡ ÒPpœPt@diøÐ³o§e(qQið88¶!šPaPK™››œ¼óéß__ËwñiµKòQDG¥Øq`ÌVBn„‰R(}`E¬Rs 5ºÈKIÊh0Ë£û2bDß²ôßÂGXÉUY-ð Øª™šp@‹}%%965ÖR.å†Õîšî)Sä3o™)ÌÛèv(*$£EO¡DM«ÅÍ•%^À­µ?¯­wRXæÊ°K.Êe¶ÏêÁ…-làu‹¢ÃÃþyzÆ5¥2a¦´ê[!˜Ç0 “PÑï~îùk¹1Ã}ffªŽ©ñ Á$)' —˜ ÓsÅD ÁÁEfþì—?häèÆ &˜ƒsR Iµ0ßÁÁ, )Dš ¬r;·¨Ør¢cI8¦ $•3å¶7¸Ø2é|LqÍ;¾Û…8^nö,†e. e ¾»ä}Ÿ÷ýþÈ#))¯˜Wÿå±f$ý¾çy^d«€†]Ry,QûHdÍÛöš‰jŒ®’‰±SVû¾ó>ä>Ù,¿£,Ÿèæ…[‰?|Æ£úÅ׸-%~ þ„4£þÏJéÈl6øI=8e|ÿX–УB—8¾_¾à–Ú”g}†6å3òÑ_ô³_~ñï¶óc!9‹ýt´]Lø`÷Õ‰´Âö/¢àB³j"Ñ¡)k9¼n „t¢qCeÛ™"¡‚§¼S?4mÌò<C¿{’H²¢ÁICf›67Ž(êÌd*Ùl¾8™ŸPëtcµÚûÅãçŸëìê’'Ì®èc\ô7ª7—o¨.±^ýk‰ƒ7R—RÏ/›õ撯ꯖ|óã î?¾ÿW?G}úéßÈ¡·ØC!C¦­t*þ2æÔ>¦—¥ƒ<†ø J\g«+£&Ó®BG–8‡zHîwáƒIV/ÜVpÑ=˜–é¬ >8W6X8²»²&eìèˆD6ºó³1Ÿ/ÈVgç.Œ–«ÎÏÿ¤ëÀ©†UŽ¡ãã<мt 2¶‚îvlsGb,‰Õ}!èWiPRl&¬Ýé#·º!’‘M§n^JÚ IV"LæãÆùÇúÊXrhâL%BÞà¬AsÔ“7öG‰èÆâôT„ã5éF™ðúÄ$ÆOhj”ÁgºžÛvQŽšÛ9˜õ9æFÓ#xr\ó­ÿoàÁCÓÚz ᡵ” 9¶v/¸1E_ȽûNõHCwI'*Ij#!t¤Ç[r/™5ˆB•ÃáÁó–~ÈríU ¨;ï tŒí-ëøAõä nbgÅéüÏsêbI7^.WªêíÍÛ›ª¬´êóº¦âÃÊÿ¡~¹®omÕÁÚ{_ßÖøTm‹÷pÕj½–kÑôN.{­U]—eyõú5ý¬ÕWË3®ÅŸe¦ŽA¥3k*üuØn/2¢3²ã‹#‰$Ry°ÇIb»ñº!|ˆtàUÙ Ò—=D7Y©Q""SY“ŽÒê8å€j$“FÜ0¸?º±wáqDC‰=yc?N2êSX7Î8q0Ô¨PaÅlx7R4RQ©‰ÿe#Y7+™,4zòÆ^œ¤› {Š{Š«ª|ÛxgëZQHÞ‘”¬ëÍf >Hî@pëå$øþ×n”µRY{Ç»Œs2^½zõ #KlfœýeQL'qÒ˜Q ÉÈPåˆ[ðhQß¹ Ïå–Fåbl`¶2;f‹¦Þ`-šß- V3 H˜¾sɱQý€¥ø j _—°rLœn ‡âFË ŠúòÆÞ€‚…Ñ £¡n¬”ŒJÅÃKð6­–Xݰ"±¥L…?/;þ‚R7Uå(¼æ¹[a6X7€†ZÊÉï§I+á(%=€(b:¢må`Qi \F‡ 1–V×Û²¸™Î<ìSk/ÒNò`õÀ‡úâÇÔIF %Á¤R‘ϤÑPbu+š¼rØ>eÄ Ã!D-¥— “r—rr¢ã%ËÆÕ•Æ7–޵cƒÁØÔŒµ¾öÛ¦«T‚…ÐÑô”;”ò±Ý(a)¥¢6Îó"KZ³h ኣ`EtЙ-å`D´}iú YsX<ÚŒòaí?è³—ÔÅS{†Z‰³^õÐp)^Q¨Ãˆð’kͱo²ºïµhà—Ë©lȉ͈¨ÇS(ŒRàXP1/Y8®^—N:*ea­fà†}µ®6LFÕÔŠÆ¡ që%CuÃâá¨E? ü¥× ó¢„¥,a)OY7ˆ¶(ÊlÐ@`"†P f„öF1ŸljÔ#jUQ FÀGâ\EšÜ‡}“)&©7ÂêÇU?üÆs}ïMù`¹È !%H¢ ùJøÇÂPÌH¥[Ä £Ñ“EѨÌç`ãTtcuõMÉx¨§(Må›À†[—êÆÚJGM¯qºã.^V~ª¡`мri–²˜OSÓz/(`JÔ^ (¶‰Ú³‡Kb…DMÛh(Ey0îþõd.„@4Ž2MLôñô-‚ŠÊGîÓ©œÕHU7ìwDÑP7ÔPH3D6útco$¦Âpœ³p§\]ÁXèÕÜ”e(÷µFŽÚ´¶ÂR±–Vönà‡³tHÏñ@å*vîÿeÏ\÷äÈÈé{Œ®‰ ŽïÝ£]žy‰ÝøïÆo"'¦¸#¹ó>•ƒÁ~OÜ Á6ˆbãÉÀ6AGrÁ¬Ò'Ó‚Ö…ž-p@'ÉÙâ¸è¬ÏíNf7™îfzÀ[åÿøI0hh üv¢C€¥1|ïíë]íjW»ÚÕ®vµ«]íjW?ñúïDt endstream endobj 1 0 obj << /Type /Page /Parent 674 0 R /Resources 45 0 R /Contents 46 0 R /Annots [ 2 0 R 3 0 R 4 0 R 5 0 R 6 0 R 7 0 R 8 0 R 9 0 R 10 0 R 11 0 R 12 0 R 13 0 R 14 0 R 15 0 R 16 0 R 17 0 R 18 0 R 19 0 R 20 0 R 21 0 R 22 0 R 23 0 R 24 0 R 25 0 R 26 0 R 27 0 R 28 0 R 29 0 R 30 0 R 31 0 R 32 0 R 33 0 R 34 0 R 35 0 R 36 0 R 37 0 R 38 0 R 39 0 R 40 0 R 41 0 R 42 0 R 43 0 R 44 0 R ] /MediaBox [ 0 0 595 842 ] /CropBox [ 0 0 595 842 ] /Rotate 0 >> endobj 2 0 obj << /Dest [ 70 0 R /FitB ] /Type /Annot /Subtype /Link /Rect [ 71 705 526 719 ] /C [ 0 0 0 ] /Border [ 0 0 1 ] /H /I >> endobj 3 0 obj << /Dest [ 76 0 R /FitB ] /Type /Annot /Subtype /Link /Rect [ 71 685 526 699 ] /C [ 0 0 0 ] /Border [ 0 0 1 ] /H /I >> endobj 4 0 obj << /Dest [ 84 0 R /FitB ] /Type /Annot /Subtype /Link /Rect [ 71 665 526 679 ] /C [ 0 0 0 ] /Border [ 0 0 1 ] /H /I >> endobj 5 0 obj << /Dest [ 89 0 R /FitB ] /Type /Annot /Subtype /Link /Rect [ 93 652 526 666 ] /C [ 0 0 0 ] /Border [ 0 0 1 ] /H /I >> endobj 6 0 obj << /Dest [ 89 0 R /FitB ] /Type /Annot /Subtype /Link /Rect [ 121 638 526 652 ] /C [ 0 0 0 ] /Border [ 0 0 1 ] /H /I >> endobj 7 0 obj << /Dest [ 89 0 R /FitB ] /Type /Annot /Subtype /Link /Rect [ 121 624 526 638 ] /C [ 0 0 0 ] /Border [ 0 0 1 ] /H /I >> endobj 8 0 obj << /Dest [ 97 0 R /FitB ] /Type /Annot /Subtype /Link /Rect [ 121 610 526 624 ] /C [ 0 0 0 ] /Border [ 0 0 1 ] /H /I >> endobj 9 0 obj << /Dest [ 97 0 R /FitB ] /Type /Annot /Subtype /Link /Rect [ 121 597 526 611 ] /C [ 0 0 0 ] /Border [ 0 0 1 ] /H /I >> endobj 10 0 obj << /Dest [ 97 0 R /FitB ] /Type /Annot /Subtype /Link /Rect [ 121 582 526 596 ] /C [ 0 0 0 ] /Border [ 0 0 1 ] /H /I >> endobj 11 0 obj << /Dest [ 97 0 R /FitB ] /Type /Annot /Subtype /Link /Rect [ 121 569 526 583 ] /C [ 0 0 0 ] /Border [ 0 0 1 ] /H /I >> endobj 12 0 obj << /Dest [ 97 0 R /FitB ] /Type /Annot /Subtype /Link /Rect [ 121 555 526 569 ] /C [ 0 0 0 ] /Border [ 0 0 1 ] /H /I >> endobj 13 0 obj << /Dest [ 108 0 R /FitB ] /Type /Annot /Subtype /Link /Rect [ 121 542 526 556 ] /C [ 0 0 0 ] /Border [ 0 0 1 ] /H /I >> endobj 14 0 obj << /Dest [ 108 0 R /FitB ] /Type /Annot /Subtype /Link /Rect [ 121 527 526 541 ] /C [ 0 0 0 ] /Border [ 0 0 1 ] /H /I >> endobj 15 0 obj << /Dest [ 118 0 R /FitB ] /Type /Annot /Subtype /Link /Rect [ 121 514 526 528 ] /C [ 0 0 0 ] /Border [ 0 0 1 ] /H /I >> endobj 16 0 obj << /Dest [ 129 0 R /FitB ] /Type /Annot /Subtype /Link /Rect [ 71 494 526 508 ] /C [ 0 0 0 ] /Border [ 0 0 1 ] /H /I >> endobj 17 0 obj << /Dest [ 129 0 R /FitB ] /Type /Annot /Subtype /Link /Rect [ 93 480 526 494 ] /C [ 0 0 0 ] /Border [ 0 0 1 ] /H /I >> endobj 18 0 obj << /Dest [ 137 0 R /FitB ] /Type /Annot /Subtype /Link /Rect [ 121 466 526 480 ] /C [ 0 0 0 ] /Border [ 0 0 1 ] /H /I >> endobj 19 0 obj << /Dest [ 152 0 R /FitB ] /Type /Annot /Subtype /Link /Rect [ 121 453 526 467 ] /C [ 0 0 0 ] /Border [ 0 0 1 ] /H /I >> endobj 20 0 obj << /Dest [ 152 0 R /FitB ] /Type /Annot /Subtype /Link /Rect [ 121 438 526 452 ] /C [ 0 0 0 ] /Border [ 0 0 1 ] /H /I >> endobj 21 0 obj << /Dest [ 167 0 R /FitB ] /Type /Annot /Subtype /Link /Rect [ 121 425 526 439 ] /C [ 0 0 0 ] /Border [ 0 0 1 ] /H /I >> endobj 22 0 obj << /Dest [ 174 0 R /FitB ] /Type /Annot /Subtype /Link /Rect [ 121 411 526 425 ] /C [ 0 0 0 ] /Border [ 0 0 1 ] /H /I >> endobj 23 0 obj << /Dest [ 184 0 R /FitB ] /Type /Annot /Subtype /Link /Rect [ 121 398 526 412 ] /C [ 0 0 0 ] /Border [ 0 0 1 ] /H /I >> endobj 24 0 obj << /Dest [ 219 0 R /FitB ] /Type /Annot /Subtype /Link /Rect [ 121 383 526 397 ] /C [ 0 0 0 ] /Border [ 0 0 1 ] /H /I >> endobj 25 0 obj << /Dest [ 232 0 R /FitB ] /Type /Annot /Subtype /Link /Rect [ 121 370 526 384 ] /C [ 0 0 0 ] /Border [ 0 0 1 ] /H /I >> endobj 26 0 obj << /Dest [ 232 0 R /FitB ] /Type /Annot /Subtype /Link /Rect [ 121 356 526 370 ] /C [ 0 0 0 ] /Border [ 0 0 1 ] /H /I >> endobj 27 0 obj << /Dest [ 248 0 R /FitB ] /Type /Annot /Subtype /Link /Rect [ 121 342 526 356 ] /C [ 0 0 0 ] /Border [ 0 0 1 ] /H /I >> endobj 28 0 obj << /Dest [ 248 0 R /FitB ] /Type /Annot /Subtype /Link /Rect [ 121 328 526 342 ] /C [ 0 0 0 ] /Border [ 0 0 1 ] /H /I >> endobj 29 0 obj << /Dest [ 257 0 R /FitB ] /Type /Annot /Subtype /Link /Rect [ 121 314 526 328 ] /C [ 0 0 0 ] /Border [ 0 0 1 ] /H /I >> endobj 30 0 obj << /Dest [ 261 0 R /FitB ] /Type /Annot /Subtype /Link /Rect [ 93 301 526 315 ] /C [ 0 0 0 ] /Border [ 0 0 1 ] /H /I >> endobj 31 0 obj << /Dest [ 261 0 R /FitB ] /Type /Annot /Subtype /Link /Rect [ 121 287 526 301 ] /C [ 0 0 0 ] /Border [ 0 0 1 ] /H /I >> endobj 32 0 obj << /Dest [ 281 0 R /FitB ] /Type /Annot /Subtype /Link /Rect [ 121 273 526 287 ] /C [ 0 0 0 ] /Border [ 0 0 1 ] /H /I >> endobj 33 0 obj << /Dest [ 354 0 R /FitB ] /Type /Annot /Subtype /Link /Rect [ 121 259 526 273 ] /C [ 0 0 0 ] /Border [ 0 0 1 ] /H /I >> endobj 34 0 obj << /Dest [ 366 0 R /FitB ] /Type /Annot /Subtype /Link /Rect [ 71 240 526 254 ] /C [ 0 0 0 ] /Border [ 0 0 1 ] /H /I >> endobj 35 0 obj << /Dest [ 370 0 R /FitB ] /Type /Annot /Subtype /Link /Rect [ 93 226 526 240 ] /C [ 0 0 0 ] /Border [ 0 0 1 ] /H /I >> endobj 36 0 obj << /Dest [ 370 0 R /FitB ] /Type /Annot /Subtype /Link /Rect [ 93 212 526 226 ] /C [ 0 0 0 ] /Border [ 0 0 1 ] /H /I >> endobj 37 0 obj << /Dest [ 384 0 R /FitB ] /Type /Annot /Subtype /Link /Rect [ 71 192 526 206 ] /C [ 0 0 0 ] /Border [ 0 0 1 ] /H /I >> endobj 38 0 obj << /Dest [ 384 0 R /FitB ] /Type /Annot /Subtype /Link /Rect [ 93 178 526 192 ] /C [ 0 0 0 ] /Border [ 0 0 1 ] /H /I >> endobj 39 0 obj << /Dest [ 388 0 R /FitB ] /Type /Annot /Subtype /Link /Rect [ 93 165 526 179 ] /C [ 0 0 0 ] /Border [ 0 0 1 ] /H /I >> endobj 40 0 obj << /Dest [ 391 0 R /FitB ] /Type /Annot /Subtype /Link /Rect [ 71 144 526 158 ] /C [ 0 0 0 ] /Border [ 0 0 1 ] /H /I >> endobj 41 0 obj << /Dest [ 396 0 R /FitB ] /Type /Annot /Subtype /Link /Rect [ 93 131 526 145 ] /C [ 0 0 0 ] /Border [ 0 0 1 ] /H /I >> endobj 42 0 obj << /Dest [ 396 0 R /FitB ] /Type /Annot /Subtype /Link /Rect [ 93 117 526 131 ] /C [ 0 0 0 ] /Border [ 0 0 1 ] /H /I >> endobj 43 0 obj << /Dest [ 401 0 R /FitB ] /Type /Annot /Subtype /Link /Rect [ 93 103 526 117 ] /C [ 0 0 0 ] /Border [ 0 0 1 ] /H /I >> endobj 44 0 obj << /Dest [ 405 0 R /FitB ] /Type /Annot /Subtype /Link /Rect [ 71 84 526 98 ] /C [ 0 0 0 ] /Border [ 0 0 1 ] /H /I >> endobj 45 0 obj << /ProcSet [ /PDF /Text ] /Font << /TT2 838 0 R /TT4 840 0 R /TT6 536 0 R >> /ExtGState << /GS1 843 0 R >> >> endobj 46 0 obj << /Length 1634 /Filter /FlateDecode >> stream H‰ÄWMoÛF½ëWìq·î.?¶å¸)âÚˆÔhÐ#Ñ S™4(ªAûë;³³+Q4Uç`26 ðC¤Þ›y3óær9{³\†L²åÃ,ó³˜ðo’ÀÏ #_fËÇY`î5›Ù››…d›Ý,ðáNÆ–«™‡‡~›}âs¡}Åß ¸ò+‘Âɹt»‰ñUýT0íÇ~ <:õ5÷„”~Ì™b\Œ¥áâoæ)z¨Š7ì6¯öÐñ|+þ\þ‚ØcÂ.#žŽT¬ý dIûZ~R"Ü€€^Õ•ðb?á­ðC…;Û¹w+ûnE/V6&IúAê‚ïûÄ/„—…‰Ÿí”WmS¯÷«¶ÄŸPÀ&åþ䆆Žü4ôË9À¤Ëà€‡æ®G·=~„_1y”Ç”JŠÔ%< oø%¼Úµùv›#?–W‚Ì×ì2•A¦4|¶mYmآ͛£ê.¯…§5zkRkœ’W6ŽX9ÀÏšŽ:º>°ëu {Ö„ÊF‡/–:š ·¾”VÔ·Ë6ßB¥Ó‰SpŽ4@+#˜p—ÿ0zqS8ùašßS[§UQMêLú,솠û‚KM˜<Û”uv`…š^¿ÅÉšò¼¬ØÝ“³É4ö ›¼WÐqÿey]i]£ì³ Us!PNk;@5YÓ`ŽEݘ™ô(¦3åñã/°ÊJxSÛX³aïëñ‘“nbjFa‘e¤°n=Xê®H¬¢©|q%Ÿæ“£324EyOóüò_柷6‹xªá`©ÛaÉÛ(R€î$À=~ÚZš÷§°’êõÛÙy> endobj 48 0 obj << /Dest [ 405 0 R /FitB ] /Type /Annot /Subtype /Link /Rect [ 93 757 526 771 ] /C [ 0 0 0 ] /Border [ 0 0 1 ] /H /I >> endobj 49 0 obj << /Dest [ 411 0 R /FitB ] /Type /Annot /Subtype /Link /Rect [ 93 743 526 757 ] /C [ 0 0 0 ] /Border [ 0 0 1 ] /H /I >> endobj 50 0 obj << /Dest [ 418 0 R /FitB ] /Type /Annot /Subtype /Link /Rect [ 93 730 526 744 ] /C [ 0 0 0 ] /Border [ 0 0 1 ] /H /I >> endobj 51 0 obj << /Dest [ 422 0 R /FitB ] /Type /Annot /Subtype /Link /Rect [ 71 710 526 724 ] /C [ 0 0 0 ] /Border [ 0 0 1 ] /H /I >> endobj 52 0 obj << /Dest [ 422 0 R /FitB ] /Type /Annot /Subtype /Link /Rect [ 93 696 526 710 ] /C [ 0 0 0 ] /Border [ 0 0 1 ] /H /I >> endobj 53 0 obj << /Dest [ 453 0 R /FitB ] /Type /Annot /Subtype /Link /Rect [ 93 682 526 696 ] /C [ 0 0 0 ] /Border [ 0 0 1 ] /H /I >> endobj 54 0 obj << /Dest [ 457 0 R /FitB ] /Type /Annot /Subtype /Link /Rect [ 93 668 526 682 ] /C [ 0 0 0 ] /Border [ 0 0 1 ] /H /I >> endobj 55 0 obj << /Dest [ 457 0 R /FitB ] /Type /Annot /Subtype /Link /Rect [ 93 654 526 668 ] /C [ 0 0 0 ] /Border [ 0 0 1 ] /H /I >> endobj 56 0 obj << /Dest [ 462 0 R /FitB ] /Type /Annot /Subtype /Link /Rect [ 71 635 526 649 ] /C [ 0 0 0 ] /Border [ 0 0 1 ] /H /I >> endobj 57 0 obj << /Dest [ 462 0 R /FitB ] /Type /Annot /Subtype /Link /Rect [ 93 621 526 635 ] /C [ 0 0 0 ] /Border [ 0 0 1 ] /H /I >> endobj 58 0 obj << /Dest [ 462 0 R /FitB ] /Type /Annot /Subtype /Link /Rect [ 121 607 526 621 ] /C [ 0 0 0 ] /Border [ 0 0 1 ] /H /I >> endobj 59 0 obj << /Dest [ 462 0 R /FitB ] /Type /Annot /Subtype /Link /Rect [ 121 594 526 608 ] /C [ 0 0 0 ] /Border [ 0 0 1 ] /H /I >> endobj 60 0 obj << /Dest [ 477 0 R /FitB ] /Type /Annot /Subtype /Link /Rect [ 121 579 526 593 ] /C [ 0 0 0 ] /Border [ 0 0 1 ] /H /I >> endobj 61 0 obj << /Dest [ 481 0 R /FitB ] /Type /Annot /Subtype /Link /Rect [ 93 566 526 580 ] /C [ 0 0 0 ] /Border [ 0 0 1 ] /H /I >> endobj 62 0 obj << /Dest [ 481 0 R /FitB ] /Type /Annot /Subtype /Link /Rect [ 121 552 526 566 ] /C [ 0 0 0 ] /Border [ 0 0 1 ] /H /I >> endobj 63 0 obj << /Dest [ 481 0 R /FitB ] /Type /Annot /Subtype /Link /Rect [ 121 538 526 552 ] /C [ 0 0 0 ] /Border [ 0 0 1 ] /H /I >> endobj 64 0 obj << /Dest [ 481 0 R /FitB ] /Type /Annot /Subtype /Link /Rect [ 121 524 526 538 ] /C [ 0 0 0 ] /Border [ 0 0 1 ] /H /I >> endobj 65 0 obj << /Dest [ 503 0 R /FitB ] /Type /Annot /Subtype /Link /Rect [ 71 504 526 518 ] /C [ 0 0 0 ] /Border [ 0 0 1 ] /H /I >> endobj 66 0 obj << /Dest [ 506 0 R /FitB ] /Type /Annot /Subtype /Link /Rect [ 71 484 526 498 ] /C [ 0 0 0 ] /Border [ 0 0 1 ] /H /I >> endobj 67 0 obj << /Dest [ 524 0 R /FitB ] /Type /Annot /Subtype /Link /Rect [ 71 465 526 479 ] /C [ 0 0 0 ] /Border [ 0 0 1 ] /H /I >> endobj 68 0 obj << /ProcSet [ /PDF /Text ] /Font << /TT2 838 0 R /TT4 840 0 R >> /ExtGState << /GS1 843 0 R >> >> endobj 69 0 obj << /Length 1658 /Filter /FlateDecode >> stream H‰ÌWKsÛ6¾ëWàvL†øì­‰›´i<ÉÄLzÈô@SD"’²’ß}€z$v¦Ó[±gDå~»ß.vŸV³'U•%ªÅ¬ŒÊLÄðOƒ<ŽJ-’4ÒqlDµšÅ´Ö_Ïž¼¸Tâz˜Å¬”¢jf!cngäy`"-ÿ `2‘Ï‚^^ÓÔÅäQ*›nm…‰²(B•ĦˆŒ ¥¢L #B˜Ìrm`òâC6вu» @;Y/ƒª—3¥I'x”:҅ȳ¬.ë¤Q½˜û#RAX”°E¾q¶µ}æðÒÂDƒ¶Ñ)þ‰I¢2(Õ9jÛÌdšÕÇYÈó¡ŠTŠk JáÄ£’ï ¿În’Êa|(÷aÉÿ3aydàá¾ÛH(Sv*LHGÔ*ehi”A+„æ ð)EŒYŽ›>`( dT@(Ge×.€tÒ!¾]oúzt]‹H ìy|x„ b±dT¤‡,Ó’ÖöéýgùÏvîÛyrK€•A_h5Eè1bŸ!àá»ë@áÚÝŠ±ŒÏÁëFº¥ BPçq| Ê¥¨›‡ßÉÍo°!ˆs›’Áe/pÁ¹±ëų›º¯›Ñön]34Å7r‰‡ài1N3 À#Òf ¬úå(úÑPÁ€´4–oÁ ð°×m 8 ‘9Ksâ^  5q;T†=¤y'Ñ-‹ƺmÐß ‡ä/áZ1ÞXq^õ•]óÚFgÿ?3|-óx‚{àE†Ê„ËWHÉBv¤9òS’×4ÓPŸ"8}$æw¤žíLÆ?N=‡Ùõ%R‡!’pâËŠCuí–> &ÊO‘e'€Er[1MPwä¢8Ûç¢{âõ¥¿A|ÀR6Rëš¾ºÅ(þFjš)FÛ9_>9}pð>X=HP Û'¢ø ~a4ÀC……ŒŠÓX¾µŸ7®·+ÛŽ 0TjOÓ#ì2ËÑÈh kT€½éíºæ{nºÒXÇè;«bøNÏõĤ'Ýj Ú”ä|º‚rMj†wxÿÀñ±4sŠc¬Z÷…Ü~¢ro_ð¥™ÜHe>xó‰b—mïÇ¥B›Zÿ4„6?$´þYm¦”=ÝOI¤’ýõtOÆþ »ÌÁ—X”ò+”œ›W\{ Ï?ÉÆGѹš ”³¬Ý*ÀR_zúýõ›šY3å<àKkmŠ‚™,°Š¬nÜ@¨2@ŠF¿+¹E&dPí¦$êlÑ6ؽÂé9„|“æñýL®éÄ3ü^a¡hýŒ–h×=W"…Î赋×ü¥çA Ï©õȰfÇ^ž5¾3Uí¸Ö’Ph_ÆÍH‹¬}GÓ¬³¸pÍ@²iÉ(Ç]”q¸´Ø.}½F¢È¯*·Žå~¼g}°w—ï.êbµjÄRYdœ†ÂÆâ,õÉŠ¶[>TÓt]%ŒÛ3læoôþèuÝÏ©‘QØÆHŠM,EØ3áÆA¬-ÉZ@OÓõ«š5öì0ÿ’ÛC?Bxxp&#Þ¤ +Žnjz´#?¯l,Ü軞¯ÐCIÑõ;',ÐÏcËR†Aà{h(HÂZ×»/Ž¿µYÖ´o3ðù38(8Åïü;ïV< O¶0kx ›¦Y&~|µ*ìuœ;/ŸÄ œ)ý˜·uhÁý)°Îñ5›û @ãí×tí¬MÆÁ|þƒ,#Ænb–A§…am·pÔ\–ÔA*‰7^$DÞ… Âõèü\ZѻᓨöyS“ôáGfkË’ú9Ý˵$Wt Šºj-+Dô©ý{Œ.õè Žˆœ ¶n¼!î“zRXPo!~…kGÛÎíÜó¡ëaæÖB<’Ur$/$bºÙë%J]»$0Þ0)÷<`÷]\kxCÀ°E0†”ÌeäQ4Š+k[1ÂGìü¨ÂðªƒõzÝw·‡Z5Kײés ŠÀ†¥kH-à³€ÝóÿRC“¶½u}×ÒµÍû÷jöïùÔF endstream endobj 70 0 obj << /Type /Page /Parent 674 0 R /Resources 71 0 R /Contents 72 0 R /MediaBox [ 0 0 595 842 ] /CropBox [ 0 0 595 842 ] /Rotate 0 >> endobj 71 0 obj << /ProcSet [ /PDF /Text ] /Font << /TT2 838 0 R /TT4 840 0 R /TT6 536 0 R >> /ExtGState << /GS1 843 0 R >> >> endobj 72 0 obj << /Length 3397 /Filter /FlateDecode >> stream H‰ŒWËrãºÝû+°$S#]‚ÔsékÏ+§Fšl®³ )HB†$€²nòIå{Ó/P”=I¥\e@£Ñhœî>ýëöæ—ív¦´ÚîoÖÓõBeðGËlºÎÕl>ͳ¬PÛæ&£5¸ùåãF«C¸É¦°²VÛêf‚Ÿ|žo~KîÓbš'ŸS˜œ%wé 4õÒåtžT®3ª˜.¦Y:ѳ¬XM‹d’j=]$j¦&0¹XæL~§]¼É¤yâÕCÙžR°.)ëô/Û?¢í9Û®Wdü°ÝËùl: 34.¹M·Å] Þ•M—9ìÚÞß$JVò¸2[ñ ß-GÉç¶÷nwªzëZ‘ßéœÏÏãù:Ÿf39,Ȉi®×3vÓöhR°1Q_Þ?ܪ;×4¶ïyJöpÿEâÒ þ{úV}Üt»{I'kø*iÜV<߀÷@Ž-íì•cEêþsªñã„rXLóé*yPé$Ï¢žŒt– çÐèýÉLéø`(G'±ð¸†©¾XÎÒ!°Œc‰==b¦Àf=¿øzƮʙ¸ê[¹³®vÜ Ûþžê5÷”¼¿ûö”ª£ ½Ù©RíDÀÀ‘à ׆ޗøVàtê¼ë\) À‚-÷édEX€_ÔæÔuµiLÛ«¢P}:YÒ-” !'‡ ð7¡=†®°ýƒ˜¾dÓ5}¡é·ïðdØ’÷‰úê [Àn{6q¿þ;§-ã‡e*{²îªôz½V¶U¶¦mË);“ßïvßÏÁ5dÝš¡å]Û:¨œ§‹-SM®/ ¾ÏçÑ÷h¼c‚~ÃÅE8<–A=Óª²ëÄÿ>E׸ð0»1]ošg°ŽÌ' Jš ª+}/oƒwž'o_äÊ<]4è Í }:)`#(,ýNËCˆ%+G ðc;h˧ÅlsÑ8Ã/Ôø!ƒc¦¯9¤œñÍéa–I۞ʚ&czÛÒ­çô^pš`vXã_m\e ˜ç¼“œóÅùþ¨nãmÅ'–€õo›/·ö»£­Ä>Øýï`š *—Ù™q€œáÍïò~½iwðv½SøÖ` Ýèm°b( òœ°=€šîó§”´:÷C}ïâ{ÆŠÁ‘¾Ö’1Ÿ,“çÚÐ/ú„ 4Œ¾oÑ‚"yJÖëd IgÍ"ôïW²Cƒ;óaá,e#ÍÙHfû#`¯å#Î* À:á¡'Õ/¤¼SbJïD9CÆ êláÉ>bèê9˜(6ÖÀ—ª)⋨â>¸#E;¾Ô½ ]ýJ;óCºLN-ë¥24ò§ŽÑ»Z-ØŸO åÝ.ՔŠ˜Ã98ñ«gàKÎó’ôQ‚¶)£!ïí:•LæðäD¤k’Ô¨ÒÈ ŸRóû×Ygä*(ƒË‡°kŽL¡7‡”؇Oç„Éxš’èœ'kŸpXÙq†7Õý±â/V5’~ßö¬+™ãõ.½k!Ìà ¼?ߥ鬱å ÛÚÞF_ä S¸G‰Ir±‡Íq…ŸŸRÂÁÅÊ‘Ñ>‚„mŧž¡#Y·co°­ Ù­€—›¸».ßùÀ?rv<0fª3ª+b‹„Š÷^SÈÔ ê¨iÂP–èd\Æ€±X³±MÕ`7òDZ•#5…¤Z9x`.#9æ˜I¬žTô¡Z@Ѻ† çí³êi۸͆«b!7jJ*¿X°N!n‚A èu5AØ„KÅŠfb½²—’YMd…â!ßÛÊv°Ö²¯Ô‹\„Öîœ?ë7Ev‹ÎH_ßC¯äù×µçöîšn ³t_™"Ñ‚ ´FàüøRŸÿ X‰süB‘nÈi­9£³(I~N”äÔ$à„GJgPëMuò)KÁÈ€'—K¬ð<ú”l¥äC¢Ø0ÖÕ¿Ob> · ¨±ëeT Dj!Fü}sä;NjX†´ÕWýhÝâã7Z.ž¯%éŽl¡ß®ï-ñذµ±B%dÛÈ¥=´AÄÌM×s'OG¥¤s¦¦1„S Qc¨Â÷GáBÆi;}Ý3'§.M¿á¾™p_­3á¾›ÞC+zò`Ã7ƒ>*ZP¬/±ÎÌÊ‹§Bwc‰EÒH´Qe¾׭˹d^îÍ…·s”öÒÊí\uBýä1àá)rî×Ä$†ÅÙ€¢P[aŒhæ"9ö±™ŠÝ©‹\ÙsU‚¼²wWÝE‹–Fˆ÷ãèӋ}ÍX{l8šünfh/‘’G¼ä1–!Eœ<4Žf èÌôP9Ø Ù“.¤£$(Æì:‡0:Oö=ÏR#˜Ëõ•%Sˆ(rጽƈâålY: É/"‘¿Ð* G<× ßµ@ÜH§Ä3±w3è,LQÆ^n+šh Løi¢‘pËs¡ôeå]dHÿQ=3°æìüw4Ý•\g0 ŸêÒSd³ƒ…¶[!9òD1xö2.Ig0„€¿èœ²Æ ¢/š›ýÞÊ T= Ô…)¸:ÒJP°ïùÙ°±¸ŠÇ%_´Ðø…7õz>AnÊ  “,ö1ôo( ’rW-„Ï‚ð9* ˘Uy²‚i°Ê,ûA¨ÔÆíä¦HÙ(Š„êBï.Á‹üÎ!6u­gƒ=ç D÷â¢(°Iµ!,“)û(ßLÌl”¸3ß 3žNê§ú˽‰ë«8êº>¸Ã¾¶Ž·.Öj”ôP+E‡ñ?k$ó,6’±=Ãæ=؉S*pÃÕÈðüºÏ‚+ììž’õS…zÃÑ ¥FMÊ ˜ÄÐdÎŽ Ÿ²ÿßFhô•7ñÔU*Ê/j˜yCµDZþ¼º•tÍJPt%ûBÍ£žïõgÔLàžÎþν¬‘Æô × ÉE&äý¥¬O&H¤R¢n/¶bš‚/ÃLiAžSïL÷jëÐ× ë{'®ƒ÷>ª=ådH @Œ ]uÆ3 ®L×#TjÛ‘òöüQ’Þqµá+Ì¥Tæø%\çàÔÂ4æ sO€\m€–<@02n‹$ Ü2t¦²{ µˆq4*/‡ïœÂ÷ã›3¨“*’?K¬ Tƒ<’ŽÐÕ¯6¨§¶Â ]áæ¶®Çp×ËHóWB yαLÓ{ò75±PŠÞ[\ØcA)àWY¶â˜ÃVÄ"nC3†‹Œ‚¦<Œ†~¤tE »Øó3}’ËÙL„YàI”GOv¼%*èÇúT9>sÐåÖmŠG„Æö²e§xAî/zÇîê1GÏ©¯#íxÕWÜ¥úÛÕ²ã&ïù Ž¢•½ÂØ9FJ"åi“`a¼K °óû©ê›0ÀLÏtuuÕ¬óyÚ"ÔèüР2÷‹6 ÜäÒÇ1–±Ùö G—N¾Ôçº‡Ž¡Îv‚àsí[÷ýAD7ɃªÇ(ºûã6©ÔI¶˜_ ­Ã’¾E“C.xÿ ‚ÂDË“»ñÿ„|\ýùY=¸ƒ«¯Àª‹¤‚ž×Vi‹×ãç$ñø<}{B”jFVµµY¢ u“†rîc«w± N˶ÖÜ*M—{êuoAçï§n¹E‹ÏG§Åk'ž(L¢ff:‘5OˮﯙßÈ*Ä¥“«¢r‘4g“¯Ê¦Aụ?9¥:ÖÀ¹ùRf{äìVWÈySŸÃX·aµ½uL4LsE"òö²ö}¢L¤¡àëq¿÷Ï2¯”²ÒW°Ëò]6 •Ú.l–¨sZ· –RLËŸß~’öb83Œÿ"–pœñõ¯QÚ<°/?®¶FocÌßàÜÊÃÜŽOŽôac&Ž!Æ]°>¿>†eœ&í…ĽO•ÔׇœÙ!ˈaÀ¥¼Zî{è™Qen®Âû¼©¾ç±c¤r¨@Ýfé-4ñ̺<€óäà”Þ$õlenÑÕËd÷Î17Dp¿_–ÒŠ0ûÔWÞñÿ?]HÛØ a/±•ü¬TÆLð.ß‹îmËÙ}íÌ~ ³ËmCU —eÒùó´$døPYÉWx¤—ÄíhÒjd²£Ó¸caª#Ϻ·)ôRÆöÒ„ÑB­êB—yëâ?¢£\K"§I1Òè·µSîy± ÿ×fÔªàÒ“º¸¦1Û3ÑÖ]¡R@zOÈÚÿX1Nbâ>Ÿ2@j³©“ {GŠËÞ–ÊXËÃè(.Jl35;O 6RãD‹¨…d^8‰ª± ÞtXÒiNÌßÿ|ú/ÀœH!F endstream endobj 73 0 obj << /Type /Page /Parent 674 0 R /Resources 74 0 R /Contents 75 0 R /MediaBox [ 0 0 595 842 ] /CropBox [ 0 0 595 842 ] /Rotate 0 >> endobj 74 0 obj << /ProcSet [ /PDF /Text ] /Font << /TT4 840 0 R >> /ExtGState << /GS1 843 0 R >> >> endobj 75 0 obj << /Length 1520 /Filter /FlateDecode >> stream H‰ŒWË®Û6Ýû+¸”Š+E/ËrwéÍ-¦HÜn’.h™¶•H¢ J6ò÷=3Cù^'-Pˆ©ápžgyÙ­^ìv…JÕî¸ÚÆÛR%øÇ‹Mo3U¬ã,IrµëV ï§Õ‹·Sur«$ÆÎVíêUDËËëêSð*Ìã,ø5„°à ïYôÎ…›xÔv0*Ë8 £´Hò*΃(LÓ¸ ÔZE–›,‡ðO>%‡L˜£z§û9Dtnÿw¿­ÒŒcÂD»)“8«$\Ž)ÝPxX­i%ÑE[Øû5ÌR¸x £"Þ ¾2Ä¥ÙaF94²ëPæ2xPΈ‰†ðV÷›M§O”üâÁyDz/Õ¹ÊVÛúÂÜ+pâÏbtŸåCšäÈÔØ^¸EòcHÏ}Èér÷“Ÿ¡µT0ÍhEtÓ8×Ó<ªU$£@Ã1ØqrÊ^±Iå¢QB¹°T®ÞLWjr Iú5VêÑDG1e)Bìuzšà€ëq ·¬Î š¦-ÿ2Ò]M-)#^Q`’lü) ̓èÚLgYíç±7¢wˆš~ɘÆrIS÷½4ÕЩZ÷jïhçL·oÜd1#ÃØô“úb÷J<Îàƒå4Šß%ϪfDÂlè%ÍoË~KÇOÑÜ×äØsÊ­¹§^QŒâ€£¢7ÀRë¬júº\<«Ö^›žª¹Ah‡Æ ­Tq-nI~öÙ† *…[òO)¢»=«ºš»¹6}üT¼´L lGöÈû0´M­‰Ôÿ—†¢ƒM«ŽvU§›^ èù…£‰¢*‰ ºíÕñ¨gWŒÐ$>CñJZH *¸ë8QÛn°½4㮆 f!„‚VêÙ,0´²Ð”;¯0+ÜÖÁ;'2«Kt#\+¬] ÓÒ­mA´ÞbwgïVcjö‚F’°ƒvêJÁ¤^ Žƒh™¢N÷ZÐwž©ðžHZáŒ<8 Žoxæýç;Á»\ðÃèöÇ\Œô ïS©$•‚W|MÀ{]åƒÃ*cÆÊ;{D$Ü"#%%à¶S»3ÀŽŒfݪƒ!žÂeØì Mi«Žt£Ä(–/¯õlÑßzËXÞÍ‘°Ð}éRJ 8˜Ä5šXTOêÃÇß_*¼›õB½~ü@ËTËvå7—Æ¢.îŒI‹ÃݺH³8÷÷èV¬~ Þ„%zÇ$wÙÙã$&—\^"ôÂ`öÛû9~Âðy$Y˜&H¶·ÄÌXœ›?§ÎâBnAˮڙKðùIï?4d—º³õWF¾ÄæØ÷ÖQư@±šÉŽß?!¤¶¥§ ^Qø‡QGž%‡…@·Ñpnj4úÀ®è¼ÿ9¼Íø©¿°ÌñŠ´Ò»¹î³G/xi2CƵõSPrZ…‡ˆü邻Džÿ$éÂÌwž©â½}©N£˜9û๔£Fù2aĬÀÿ½Á‹¡ò -<Îz\΢Ûß„Šñ¶âŽS«‰ç1éu3àºÖrsc*µ§êRÆòž±%ƒ| ?**"ÞŒoUrÌüLe ø†ŽáÄÜ.@5šÖ\X‡ˆ¯ @Â8¸utÇdš1_V§a%ÖeºúQ6>$þZÙ‘Ÿ#š`ü¹šàqYôðŠ|z_$‰ü É4=_‡àˆ–éƒnä<åV}½[ý3ÝP endstream endobj 76 0 obj << /Type /Page /Parent 674 0 R /Resources 81 0 R /Contents 82 0 R /Annots [ 77 0 R 78 0 R 79 0 R ] /B [ 80 0 R ] /MediaBox [ 0 0 595 842 ] /CropBox [ 0 0 595 842 ] /Rotate 0 >> endobj 77 0 obj << /Dest [ 462 0 R /FitB ] /Type /Annot /Subtype /Link /Rect [ 242 667 248 681 ] /C [ 0 0 0 ] /Border [ 0 0 1 ] /H /I >> endobj 78 0 obj << /Dest [ 462 0 R /FitB ] /Type /Annot /Subtype /Link /Rect [ 501 571 508 585 ] /C [ 0 0 0 ] /Border [ 0 0 1 ] /H /I >> endobj 79 0 obj << /Dest [ 422 0 R /FitB ] /Type /Annot /Subtype /Link /Rect [ 372 502 387 516 ] /C [ 0 0 0 ] /Border [ 0 0 1 ] /H /I >> endobj 80 0 obj << /T 688 0 R /P 76 0 R /R [ 208 257 378 275 ] /V 80 0 R /N 80 0 R >> endobj 81 0 obj << /ProcSet [ /PDF /Text /ImageC /ImageI ] /Font << /TT2 838 0 R /TT4 840 0 R /TT6 536 0 R /TT8 537 0 R >> /XObject << /Im2 83 0 R >> /ExtGState << /GS1 843 0 R >> /ColorSpace << /Cs10 538 0 R >> >> endobj 82 0 obj << /Length 2568 /Filter /FlateDecode >> stream H‰|WÛrÛÈ}çWÌ#2aÌàFæ-²v]ÞÄegÅ]?DyID b¸(®ö7¤Ê÷îé HQvRª†síîésNÏÍbòv±H5‹ÍdÍsãEÍI³ÈÅqbûIÌcÝvòöý5Û~G™›Åj2¥fŒæiò¯à6L"|Ñ™ïÂ~|â®}XDY°ò‡Ê$QÅáÔ¦q2‹’`ZåÉÍyátþ«dQº 3Ëöº lÂ/~"ÛØngl>bw‘¥Qz6&Æd\p.þC«rYGyžX·¸FÇÜ8–%I"câ_ÂûÓ¹xú¡í‡²iÊ¡ö­)Ûµy_…Ó$²Á0ÔíÖÜ e§¿µ=Z­·N¬v£ÕÖEq*VË™NĮ̈%ÑÎ\ç¢YðîB:µVBZ÷ækëO­¼éŽ­MK?ìÌÇ;ó%œæ¸Œ:œ:|Úµ?õæ>HœYÖÃ}Ȧ÷~_™_Úúwl#ìæ¿6¾Û÷†z‚û ŠL˜ÇÁ0 "ö$6SÙì¢LÍ-¨EæÞù¦ìêþlòПX¶£Ú£–÷adÌ]Ý®*3ì*1·8Ocsª®§0ïÊÞ,« ^VýP­ÍÞë"ÐUÛ×Uó#³à™S%çï´£ )¿´×· N¢£Ù«Å_ø–m>Æ~–Š3«0Cøº0EªVÜ.ùÿÀÛŽ}ëSY†á–²ÀÒÇÐñPMyÃÃHÙ\;H[NùÊ»”[ÙÓløPÏb"…?4gÈ‚o§íeÀüWæïë­@m791™=iå‡ÎѳëVâ„«‘þ%Gù¨áØÉP$còÿG wcxËn -'Š¡d%²ÈÓª{‘rã…uÕ†òèÇNeöjÇ_,ø‰Ú1',§Üá±Ê¬üþP+.áôºêW]½¬Öш¿™bÜ–)ç/§¯½™v|¬Wïýf‹¾„ŽÌ¹i57oèŽͯát޾ É58[©cŽì~{ë¢ä‚M4a~9bÆ0OÏ0§Ü  ‡˜pZð Eþv¬»ª7¥Æ#åüvÁCið@÷A0*B¢ÀS|eSìì,ç¦ãLí™ØÙÒGœÑç7 “×ÐGœˆñŒ^'r! û&,ØÚY€®MS·|Ζ\bè—‡CS¯d¾¿7ìTŒu%¯†SNŒ»»ý»â·“ïÏÇv¨÷š9?´uçÛ}ÕêÅõ;lÔ¯eu…^@F-ò¡&¾ž,h¡ä'T‡¿ú¡¬§›rµòÝúÅZ³ I׌®ô²Ñøs'?ýJ{Žóý3»ãJ[:î[ ¾óús]©O'í¸>â›yî¡\}U;KJ¤¹š[]á÷.œf$½ºh%3u'pŒwëÐe9¢\á {w–PjQ 7Çû¤XA°¦pØ”Úâ-C|zѳô¼Äs#†œ å‚(aä6"© ”8§×f9rå—ö)×É$1"@g"`q*ŠÍ- ÕNM–¸(WÑælÊ.õî7K…ÅEêí¡Î¯–M/ìCY8’®yËåNWî‰û4 ”[ û‡áž3E07ô"‡ÞžJ& !$d‚'w± yt+x†ZÂØ*‚Ƭëþ«Ä—ͽù…µŸC ýöò%_O5 $ý iêµÎГŹ°ÚD*…9Ó9«M°cö¦tâù"‘Ô$‰äÍY"yáŠ;dfOärëMëIBâÅ[ªQ”¯¨g¿½_ת/ÅŠãUzƳ1=©ÅŠïÛMMwàÈT¦¡.t#7™M % €q|ÚWБ—ˆ;ޏÐm>v1Ý ºè$´’@ëäˆû@¸?'² 8 @޲ú…ÀH÷w€1–dåç¡Ôʼn*¡¦ñ'±wÄliúãj%XÕ÷›c3æÄÚ”ˆ6e¨ïa2¾ŸB"MBq¨Dý‰„Ä5ò^·, ’mÓù=ç° ê·Åkèàj¸Ts–ÝÚ 25@~:»aÕ öB…6ÙQ…x~©<‹IÛÎsŠ“•¸ÙwÃûÖC©‘-n„Ç¢±5‹g ¹Ê'Á$´¼¬9ã¹f`2WXR½/¹±W Jƶ‘hvÝÖC-¿šúïÏvºa?×°Ž*–G*Ë1iÙq邨¤%hM9P¹Iµl2®ÑC ÔõT·R‘šÓâóQ+þøvÐàJwË– =Š 9ì\dþ¿J”U‚§Ê¡\–½–RJúÿ°˜ü6±^ú"LíÎ8;‹2|f¸fÒ]í'o?ì˜còÏÉÍâ›—˜Ã²Ùì%;§gvÖ×À;ÜâWbUÊ§Ž««œÁ›K2ç„nÔ¬å¥ÙÀ³ Šš{Êœ™/³vÌ*pÆà·² ÈeÉ ”2‡£Ê?é1ô3 äè ñÊëí®y­8¿"‹‘×öߢ6êÍÓMGNûÎ#IðŒçZþZó®s>ΧqÒ3'¹¼®p½ôãé³ w‡G˜¢…ÊȧÏh̸IßOA–)¯›Ã8˜§€ÐÿF¼1{õ¿`¿ìXd”Ã9W´žóÃà•H‘M# ÄëL}æÙ˜°//Ñ>öG{é8¥_dy>võD•¤rÅ%?!µ’mÄŽ`î¡ú] é£àÞ‘<{â×ï\Ç‹R?:M.¥~Æ¥þkF ÷Z„™¥ý?Ô“fà9ô “ºJ(=2µgV˜éˆœp'OŒ·i€§d©g5¬iNH/‰?®d<|¥Öˆ7ì¢.Àmß©±´÷ ´1Ó£Ÿ¸}G€šÑÝÆÙÓ\5þYH]@u²{úZ8®%>%¾å«$Ká˜V¢L¬K‰ªÒÓ;Ütçó¹l«æ™ŸI}Õ°hCv )¬&NEqv–“œää"&ªÚÏ„õ%QÇÞ?hò*X#"Ÿ6ß°µ»¾zÃHO™¦H]1NvfW>TgðTU«šÜ)„N$ÆPN.‹j´KÜ0 0wíÆ®kÞ«~LÉ—«ÍBa—ªõµcíϬÊê]¶gôe¢Ö)fL'Ù“ZP Ç $¯zš1cT Ót‘üó&ˆ)“N&eNìQ)ÐK 6¯«±Œ.©œ„͸½‡Ú•˜Æ§®’‰|Rˆ˜€)¡Ö^Õ;ìD©™^>²õ•¼s1v®Ëø¥©P… …” ÒcÚŠ¿'¨ IkÈï³ÒYCÝÚLlQDé gù“ `ŽþwÕdC*÷v±ÀûÃ,6¼rVœÎ endstream endobj 83 0 obj << /Type /XObject /Subtype /Image /Width 211 /Height 181 /BitsPerComponent 8 /ColorSpace 538 0 R /Length 2137 /Filter /FlateDecode >> stream H‰ì— ƒ£&Ç3ìîµÁöÚ^¯ïwãúHP×lzßÿ£E$‚d#žÿ$F~Î0Ž›ÍÒ´0=P¤{ßUÏZ,Òãr$#=Q½»÷„¦KBzú‚jfLÚº}ØCFz’50¤­}ØCAúRÒ»mk°‘°Žø†ï6;â¨Ô`£XW¤Ø‡ŽŽB®1H8’%OõzT†­:ÛnÏ#RÓfÛÒW’8’¸T?Eõ÷æHݎ쥆¦å ÉRú‰ÚPçÌ7HôyD}àuA‰ àVHæ5’œ:^rEBHÓÿ ZÎH]ì¾~Ð7ß"ôÝ’ÒÀS3Þý…¾?ì¡"ídÍ ®hØCEZˆŒ´(­H!hE A /=4©ÇÌàLûª9¥l3õ6Né’T$ÅðS`<ö.vÕÃð %Ó©7p#$¸dØ8Ô ðWÖ\@ô=AÞ•‡â: ]ÿÖ˜2ì6HüʰÞU>yÑUë Êsw¤cÝEßÉDç½Ý݃ŸSç PØ®2Ô<\þéÌÀ–ÈŒ$Œ›Â[šŒÖ³Ÿ›v^"˜…¥#õ¿s§a_<}Nô ðÌHÖ2?—Ä4¥‡®“È"Î6}yè¤~™ÁÕ¦zi’‘ø«áÅcúøîr±…{i!Z‘BCzXŒ@‚…h#!¡ehE AH¦ø½é-å‚ë‚ç91Ù É0 Ò ˜’4ËóÄa Ò³I°o<3%Rl£]™:ŒµF¢ÿýõH^™ª"¸ªŠ—ÁöHÍ—o¸—ü¦ˆ4ÏR*œWNýÔ"µNjâ=ì&0PL¶Iœ$IêHää¥gÝK,íyAJêT)Þb¼+ãÿÊC´µ·5‰Ä{B‚’ª(Šü@_)hª¨ªêP£,‹ {[0õIý m™N‡Ýî¥EzyÙåè…D'{[6H‘PKÕ¬$)û([óUI‘v»M 8Ïn$Z R8e¢/kMzAŠ¢©EËQ•×o€Ä^_¤&æRš!¨heaw$ÉûÝ4Hô/#("uioÎÚK “GQšv…Ž;’hAeE*¢,£ïÅvKìÍ9{‰0œV Žð/õvó<''¢ù/B¸Ü;{s–HÍ…›Kc¥b˜$ïÓUYòåS99TyÖHm ÔZÈRç%Ú*Nm>'eIH‘9˜³Eb-PJ!HÜûÛ¼8®<ÿäRŠ[¯¥¶ƒ°›ŒÄ칤‚:ÌÁœãsɤIHÝ¢á*K7Ù ÉÓ7ÉþêL’÷Y¥×ñ”åéä°˜j<ï’¼:•B'ªO/Ls@2†q§@‘Vxã®^ºá°{yÉEއ4,^­tÛ›åä%y]›Œ\¼;6›J\¥;Ò›Ê D*êsÒ n£d³–„³äç®ü4í»jtÆë ŒD4ú¢Å𴿇,‘dçHõ2殲Ìx Òùúù®²z.‰"E¤ñíëÚ»3͹zpÔŠ‚V¤´"… )­H!hE A+Rr@ƒn:GK¹ źàyNL6H&÷P5Hsb²Bz6 ö ÒŒ˜¬‘è¿A=Ò|˜ì‘š/ßp/Í*E8z©EjÔ Å{*Øß~¶£äâ¥gÝK,íŽÔ¹jH¦Œ0’Y!#u‚½¦ ñ:(¢©*ZR´8$LðÒR/ )^Rº¼À‹"²4$c¼,$L}DÒ°‘"¡–ªYIRI´@¤pÊ”¦¸ À`‘ØëkƒÔÄ\J3­Œ",âH˜¤8ŠÒ´+Œh0†Š$¼DN«G8X/5@ V*Ö Ó°N ÖBa#±(¥PØH Â.`$&0)D$yú&½Å|Gȡƛ»V¤´"… Ï ÄÆtÂxFép­Hý @¢ˆ5jþHpÐ"¶mÀÛ÷ÑH$6kÄ·ìDaÞBÒé{i´—PWã ÄA¼‚Þý®6óö>r<3̉R3A»/¶Ràu@ó¼µ"… )-i³ ¤{ß\âH‹Ò2‘–&X þ[€÷V endstream endobj 84 0 obj << /Type /Page /Parent 674 0 R /Resources 86 0 R /Contents 87 0 R /Annots [ 85 0 R ] /MediaBox [ 0 0 595 842 ] /CropBox [ 0 0 595 842 ] /Rotate 0 >> endobj 85 0 obj << /Dest [ 84 0 R /FitB ] /Type /Annot /Subtype /Link /Rect [ 310 717 316 727 ] /C [ 0 0 0 ] /Border [ 0 0 1 ] /H /I >> endobj 86 0 obj << /ProcSet [ /PDF /Text /ImageC ] /Font << /TT2 838 0 R /TT4 840 0 R /TT6 536 0 R >> /XObject << /Im3 88 0 R >> /ExtGState << /GS1 843 0 R >> >> endobj 87 0 obj << /Length 2385 /Filter /FlateDecode >> stream H‰”WÍr㸾ë)pS‡I‘JNë$5©šl¥FÉeEBÆ$¡”•}ûÓ dg‰]6ñÓh|htÝxÜ­>ív¹JÕî°ÚÆÛJà—eoÊ‹Ø$I¦vý*¡¹ñ¸úôço©:N«$†™­Ú5«56h^W¿êÏQý%‚Á\ÿUÐù…†¾NQºñg«²x'Ñ:Í“¬Š3½ŽÒ4ÞhUª5 nJ“Áàßi/²‘Ñ£úZ—Ð麋þ¹û b7Œ=­|wYäq¾ˆ ‚8»ï¸jë’¸4°j÷y¥•̘0“WÂÑR=B/Õ>2ðÿŠ`÷EžôºŽöOõ1JQ,V\’6OͪÎMó¤jZÓuÒx!Üv÷ìíúZtñÀô NѺDKSŸQ´¤¢¡x (õ[d°«—>²t× _™›„ŽöùÑÆ¤cšýÈ#¼)žY³f2{¢ÖiœxKäiÎÆMRl¡qýþ{´_Ó¶™¹¨óh';È@ ús-Ç?¨)LË×N ¡Úen¼­—1ZW Æ¶j´g’)ôư'¡­â$'ç F†Qæ+6ÿå§)zãÍ—20ä&aKYx 9:° Á§Ü jurv¬Çæä¸D–î`»XP¥yݰµàWÜ<âÝÀmûËN²Ö&¡ËMiñ4_Zgù08“¥ìŸTÁþØB8h­¯Óްò)Š©§~èë†i®‡ÆR‡¡F™æ¹=vž\½Òu ˆ³àˆÁ÷j>YÕù¦îT[Ó©HÁ¾žìí²Z7;ôÅ’bÀÓ2Ý¢¡pùë?œÖ8æÕ"‚ñí¸ûœi#›a‹Î4©«Å°šÔ<ÖÃÔ»y¶íxø%6ÚKÆ/AhN¶y¦3lÐ;üÈí…8€ë¬ `‚…<ÁFß0Ö\nl²¬t3»áÝfð¼Ï{¼AðLº[ôÚ³Z7€c8E‹œ,)+‰ ¸\Rñ<‚Ï`#¦®Rˆ X=QDˆXPž\Ÿ;ïï<(:D”ð´¶?w¼ÛÌ…L—s’©htŠðêÃ>­xàýT#sj/zfVSß…o @󪕀eÔï°o°ÿ°N¾'=r®êXc +^zŽØd÷„ÂvÆgÈõòÛ4N9iÃç8P©¿*¢ R÷ü©ñK}´ÓÑ9M¦…½Jb¯LKG–.ìU {•È^7â*â*…¸ ".i‘ƳE¶Ä°t0J'Œ®¤ƒa ‹)JIê0z9‚:.å XêE¦jv¯ú‡¡Ç-4ÒE[@®³ êˆÂ[â¨î<FrCÃ&¤p`QV–WÂMäˆ|Äh7;¸lÈ–€#e·5Zù£ôÖŸOh#ŒÙB/ÎH®^î­/¤ ] ÿ¯ ‘å=æ÷Ê‚‡AfÆ>¶(/sVÖBPØjyWœ›I ¦]Á‰6 ûwÛÝ8¯»áp{§rÏýõN Å„F1¼GÊdhùQ¾å²Z[l¡M›Î5ÏÌPš(=ƒ(-ÓýÞwª³‡YÍžæ]‚Ìó%8ä5™—¸° ‘<'!kL'´ÖÎ ’ŸÐ,)nF ‡çrº‘}LG7:L«àc{Ûø–¾¸ÉÁMÄJ}öwJÔ;ŸÜ§³{™©‹Z˜‡z<ÀSpPHÉÌÑ,Øœ>0½?„ û Ç,õíàø?f•*°Š„ÒÀ‘¸0ä× e¦’!V6ÄbOµ@y#„!Íkrïy PHDVæÚyã•.î§î]¬«oè• A]Zøèõ)R4b¹R¶æ{GÍa>Å$ß}8ă²/áÚ‡ õ@Ùxƒ4pˆ¸ì þàÜÛÙ˜¥*ƒÔÿR;dkÊs9%=äû½ôìB=€w!©ø“¢’í¯ ê âšX‹3À€1ˆµðº JåX½†^¸×Þê'êSjÚ¾[€¬”á“4μ|qI‰¬êÅñ¨xd¾z†ñ¬¤¡¸'ñˆ°hœg= Q5Æz„Ù°}>#P‹ØËù¢ŽTÖᨴd:ùëðc’ EeŠJ×÷¶uõL%Tª:±}¨*ÂïH5|žRw†© ±PaiU_ÏRqB&ƒïu × úWuuó 8GDÆñ]U?d´I]†Ùuï*®|©¸„lÝ~Îð)½pñbðª‹p®½åÎ-² ÇçÄϤ„…Ø9ð†°Ú"#u‚ nzYˆj®J„Ðo üS³ëYÈã[¨»ŒL³cPÙF£ã½žw‚KåÉf˜ùd"7`¢HÓ¥ÂâIÕ»3èùÂj¯g°êõÎWËBUP™¥¶ñvCóÔ(«{‰;ž•€§úl;qÑ…_zç c[tì |¨£bAƒD†ÙÊàåe-V7©fxd¬©êë!`tÐøQQíX˜·"¬¦°^À^cá&x(,ºÜ‰qÑ‹£‚âÄèl8B-uT÷LËN$%Xë½g³’ù>BR¯yÞŠ ÞñAñ™jbù±mü8 ŸC$¼jÄÜ™ê°ÿow ›º³ÿÓNb 2,¤®CÀ?Ê® ¢Æ@M²Y¢¯¯ñ<:´B ÇòûïÙ¶™§h` 2¬6S£é}³¡× /¨1_Pkȇ¢ ³î,‚ŠÏ•i–‚ ³Ôx¡A|éàžÜÃûGðܱøÆáU ø;W¥Qf ̪òj78¦ |‰‡O»‹Ú>¸µ© >%Lb#¡YÐHÖÉ?¾hþ䎗Ñ*ó{ 5|\>r½4zê])­ 'äñMý oªt÷u*Ì€°lèÿZå9Üm—™2Æ8ÜÄ Ùô Ð4ýêÓ—>ƒzvõ·Õ,â5ù endstream endobj 88 0 obj << /Type /XObject /Subtype /Image /Width 700 /Height 511 /BitsPerComponent 8 /ColorSpace /DeviceRGB /Length 18196 /Filter /FlateDecode >> stream H‰ì—ÿKgÇ@@Š”B@NA-ä IZðÊ ”ÃäŽérþ–þr½ßë¥Û²\/ÖÞ¡‘p5n“hwMРQ÷¤´KSDMÎL“ÓÖK‰n¸¤WΘ.ÉÞgçÑéãÌ<Ï<3ûeüò~ñfòì³3ŸýÌNöy^^¹à‚¦iẗ ‡Ã¦3-/X¿À ‚Ý4-Œ ‚ bFî ;š¶rdsfeü!‚ RˆxsNg¿AÙбî³R4û¾ìv¾¿OaWyp³16à?žü· ‚ 7æFì Û»½žïïSØUœÁÑÎ`».lyËõLù¼¤` ÏWbMÖïf… ‚ˆãÛ41Á8ƒEÖ ƒhg÷ñ–ú%Ž3E~¸’ÞoAÙX)¾3ðçØg|8ƒäÖDc•M_TÜõrÑËÀ4œAÉ%¹8ƒãi®Î`‘‹BxumÕ2FolŠ˾-è ’ùdf-òËEZä ŠA-žLÎ`ª‚E|;ƒhsw|·Îà¸Û–¿ëoRÔ°ë½@Ay‚rS?…]¥è š`³ÖÖn¯ü-Ë7}ÇÓÔ/wìÄõZy?’IÇrmÛÇ ‚ ÈOPΠqäâ ¼ð»ª&Øpå/óâ ’Vù¯Î þ á ‚ H. ÄxU°hƒ?gà_Šæù[íÚ*oùv¯ïú›´<ÜO@A3ün®Ù(„3Ø+ó3>œß@-ðgò·l?ÇÓ™òy•‚Ž¥$“*ˆž¯ú·øÿFAd='“ƒ3ˆ;ƒ¯Î 9íÔüÝ™çþUçø˜6ú- ‚ =^ws»œA„¶)6ÜMp ‚ ÈFíDae˜3x:ßß§°«TœßIí¶àx‚ ‚ ¾Rhü}Jö*EgYü]AA6Mä΀ ‚ Â"r;vgÐ8à PAî ôÒÑLó>:ìééé<ÓïÇâ13ÝŸvŸŸøø¯{êP~w¹8ƒ×ïP~N¡+¢`ë â º±Â8ŽùIÅ%Èu•/þf«&a »¸ÔÈâµCˆ 2aàmTAç„A¤ ¢‚é’;˜cAûUósóã“ã}RÏfJ🡣¡ŽvÏÎ@ÂðEò *89>ymò ¼ÿ~(:ÕvJ½`!œÁ¼eó'CÈÿoήðQ $È_UDc†âÄ/§l¬¸=™—˜† ²Ó¹Ô s°4ë[ä¡8Î@Â@BP£Õðg’P˜*Ð[MMMšFÉ0—píÐu÷¦è é»éÔt*5ûc‰ƒõÓ·Óɱ¤J‡&mímt¼{÷îÌôÌì­Y3C—‡¨àÂí•ùÛ‘üŸñê L{5s^TÐñfU¯bqi¥@‚Ütcmqë~— õ?iÍóMg0þ ›ý³IÇOl40+[&$ –É"9CCì¦E"­ü™Ì(d Ì mÈŠ„J‡ùuódb~nž ¡ùDskKk¤%BG§Òe•e¤ }Rµ Ñvªm™ÔLóšO¶œ¤´|ØBã…Å…òŠòáËÃÃÃSW§Ô;ôz¿®3Rà €M‰«3k62Á:ã¸=9*ë œ!œ“3膰ˆšdÂ è ’¿då8$a¨Ñjlßs†a 2ñ8›É¥Cמ]ayi9û‚¶ñIéÍÄzcä ;vîØ¶})„bÁäçÉèÙèÒ—¾ºòÕõ¿_Ÿº6E™›x¸ô0UTVì,Ù¹}ûöwO¼«Þ¡äÐóê aã­â;Ãp@ÞQqÝXaÇü$¿‹ê~=ëû½n£žœÇ«30`eMyàãµÃ"8CCs† Lm0&•œA_ÝéØkÀ¥µž6ÐÔTG{Gz!½üx91HŒ®f AÎP»·6ò~ä`ýÁÿ>LÚ RpææLû©öÅ;‹=º<4ú·Q–ÁAš¡öÞ‹¼wàÀC¿:´m›RA] ®'øp†ðê¨ÈÎ`8 È_UDc†ÝŒÓœyvmå¥Wg`ç37àÿÞ”üíéÚ¡¥¾å/\OÁ‘„!Ò‰ž‰F{¢ý}ý±¾Ù Ö;vüXueõÁ†¬3”¾PêZðËä—mím'?<Ùíê>ß}±ï"O<?þ»ãUUU¯ÿòõC‡•¼Pâé–-3¼ÑåŘ0â LÖ Cö±Úå?Ͷ rgеÅu¬;9ƒHŒ5Î`Ã30ap<æè apœ‘|bs†{÷~ Ø/Ê:Nw¤Òó·çSÓ©Ô”>¥OŽS£‰äçIÔ¾ZK¶P÷ZEéKîÎpúôéÅ;‹ßþëÛ™›3Ó7§¿¾þõØÄØÄÕ‰Ï>ÿŒBƒ½û÷ùÍ‘ºŸ×í>ûâK/zºe ¹;CX[Ù£ÙËâ;óúdÓhÌ~(žJ€Wgг»|ÆqÌcw}­$Hp,åê a>œAç$úäÌ(Ì(vhVV¿_QAr†wJJ˜$Ð1ÓÐ@3”Öúz‹9å ­nM '(ý}ý”XoŒÜ€ŽÙôÅ¢g¢Rzùæ[o†Ž†\ ~ô—FFF†††ú©^_]x¾ç|O¬'~!~áâ…ÎÎή®®ÒÒÒóŸž§‚o}ÃÓ-‹î׆§šSŠï ì7KË;ê6„=• *Π+Œã˜Ÿ´8/ ‘÷C{1áXJÅèÀæ};/ ê}qœ:š%hZ‘L}þìéãgþý }7=?7Ÿ5‡³QJb «ä ÇŽ£šôÒ½à'Ù‚™ç™ÿ=~úýƒïÓ‹sßÌ‘0t}ÒÕí¼48:<ºk×®·ÿ6òtËü9Cö‡c؆`=D¦ ìyrcm€3| w†5[˜`̰;ƒîKt/Î`Á‡3èœ0HúTïP‚HD3† Ôh54&IxbìÞ˜0Q(v˜Ggˆü1’^H§n¤hœK’!Ph<>9®Oêý}ý±³±lÙŸÕîØ¹ƒÆ®?øÓßÝùî¦~sbr‚þŽ$F†G†ÇÇÆ¯Ž_½~íú¥¾Kç¢çXŸ%%%Ý纽޲Háü9ƒ© a(¾3°'hô YâµH;ƒn¬-®cÝÉü ƒî¶#³=._ÎàC\;!ùk×± ó2„wJJ˜0Ѐ&›ššìÎÀÏÈ;Ì£3 TWV×½VW÷j]íÞZzIGšYÉO«© B¿ ѱ ßµ`MMMEEÅ_xeÿ+ûöí£föìÙórõËU•U”Ý»wSÁʪÊPcˆN»|é²§[–àÛÌßKf-Ev†ýÁ¬Ràˆ«3üÚ"ZgìÎàOt…9lÏ‹3ø•½"*˜‰Ç3†-˜Â`¹ ¦Þ¡¦€z‡‰ÑDr,Iƒ§ÏŸ-/-/?^žŸ›OÝH¥¦Sé…tYy à •‚cÉa6~öüùÒÃ¥GÍýs.õÔ­é[é;éòòò#¡#e?)õtË’×ssGqÝÐ}UøA!šlATœA7VÇ1?É/AnHZRÙ‘Õ7;IAW±É¥COH ’<ù?ûu—#¹m…aX é†`ÆWÞU€ÞG#ßeµÃ60÷‰à)Œ8b³ùsx¨?R¥÷A¡,±¨Ã£ª±øu*0Ø´ðËðKÎëð?ã·~{}yýùËÏöõúåÕœþxýíÕ|½æàÏßÿTüë¿ýú¯__^^¾~ýúåË—¿ÏL…—ÙO¯?™‚æìßþ¨ºåÜ? y‚üÖ†®ñ”ÌФ€û3ƒÿTÉ[çl ÷,hÒ‚ ß¾ýû LZ‚D«;/(ïï¹]þ ÛV8¢€û3Ã8?[ŠÇ#™‚Ôl[áˆR ÿÙ’{Îôÿ¬¦ {(ض¥܇&3Œó&yìvþ¬¦ {(ض¥܇œü§JîØêÿYMA öP°m…#J¸93Œó³¥xìNßvbŸÕ¤àóÜòkW͸¡bfЛvEA >kÁ-ºjÀÝì˜À#3 2Ð 3 2Ð 3ÚÌðÖ±ÞZ=³ŸÞîý osíÿað<ª2ƒyrN½ žêÍògöÓÛ½ä&· ÝÒgÎïPÉßAìñ£©3ûéíÞÒð6É'0ª3Cçaô2C'›æ™ýôvïix›du™¡ÿÀ0.ûH?›æ™ýôvïix›d™áaœûìjÓ<³ŸÞîý o“Ìc)3Äaø¬EËiñnbÚ žüv$?n—‰ð%/”ÛK~š¼÷âB'ÛÞ†‚â׊/'3À¸*3§ é3Ã9r™ac?ṵ́q¡Ý—â(Hf€#ì•ìjÅW%ƒù¹Á`_qvÇÁ %Ì®õç?R–¿ËÈ›Q°nPÊ «çÖÒ,”+˜Y=·$¯›Ûñk3ƒ¦½ÜUÁ…dwÍ C>!Ä#ÅOsƒC*0Œ«2ƒ¼õ+?Ím‘µ™!ٞܳ°VÕBÉúÊiÅÁÚksßgò6ýkãL²ËøKÀÍ­È 7îωýxD…d (‰À.™!Ø€‚ÍH¹¿ø»LÜOÙgq¹dfÐ/$××·‘û*„k•yÃZñoô—€›[‘’§[2ÃèE‘x$—LU„ºƒxc•3Cn~¬¸ÁåÆ÷Ê ú…äúBüFrƒµ÷Uû•Ê? ™öÒIf æV÷­Ë òü83äæÇž)3$KÉ„:»g†-K@ï´ÌP{\ ä2C¼÷©ªãgÍ {í¿µ×³dóšÛt1o¯ñ—€›[‘|þxrZ0X;_^Å·"3¸ÍEž|Ì??3äv´Ú…ùÛ×OÓ &oGXw—̰âF„/™Ìc}fè–š8³ŸÞî}£ªv2Œd†Ãª žÜ2´Ef8™awdh‹Ìp2ÃîÈ Ð™á d†Ý‘ ­\f˜<­{T™ÀaÌ_OBfh@/Š™á ÜXUf˜À-Ù@f2“¦.3Ã÷ŒÓ>ºÊ ¶#þÈŽ“8_?™Á-ç‚}wÞ=ÄNÖCfpÀ v$È ®p²¶™Áv]ûÌI¦Âgj•âàCðÑû`ºyŸ2HœãüÌïò.*Ø7îÒ‚r5À¾šg† 0ØOmZP†¸&ØÝù™ÁççÿØqÉÁ†ÿ¿@Û3ÃàQ.‡„\`H-&‡à*p„™ÁL{{{¸WUlðC‚= æø™!ˆ qrÈ Zr§ÉV“ùGSrq.mKf°áñ0Ÿ˜O's`^Êí2 îTÈñGîªÌüaú¼ƒ ÛzUº–à)mÏ &- 3”û¦¿×Ûƒ ~™ *¡"*²53 ‹\7'Wܯ г3ƒQf†80¸?£‚_'iKf/‰ý  ¼DX€ÞlÏ &'˜Ø`ÙÌ`NýW,Î Á„ªäSÜâ“—8µúAe\ [2Ã4o&'¸Wính×r"ŽþqPÛIÃgn08..Ñg†\ FèÜÆÌ0}ÞkW·kE?âAœ"ô‹wsa~ñ}fÐ7 @϶g†i‰ ë°Å§T<ðƒò\$h˜äA:×<3D¥>âAœ"ô‹¬È Ór#Áíø§Â„`Züir!íýÐZo™a)˜M¶¥×m3ƒ¼ûû%ãäδKfØHHqTc8H™ÁªJàdýdKHÅOÀqzË Ù€Þô™¬ 9$h¨çÌ0‘èFç™Ár=€V.‘@sd AfÍ3Ã8î^ìïB™á½Æî}ps×Ê ó‡â;™€Ý]-3”ƒy'3°»keÓ—"0Ø_ÛÌ0xŠ“—Ì0yñà?68BÃÌ`–x{{¸W16,!Œ q`Èe†dDÑÄåÌá3ýêCJr\¨–+tžLŽ$ï7ywBŸšk«ÚÈu•l#ٌܼ09W\ø ä{Ôt ýh•†90<¦ª©<™ó’˜Kæ`à^ïþ©m>™r[þ)]œ)ìnÊÕ5ûcíUñ¾æâ 1w•|GšïP­ÜFr-ý¢‰Âêò%Âïµî‡€®´Í &-ØÇ© ò\.3¸®l«ß=s¢¨È É¿ãc‚& Ä#OôwWlX¾ö)3ƒÜ™À%t’̈:3L66Ø÷äˆ&3ÄãÉGz¼Ãî’””Wij&ï(ùž¼J^´ó̬£¹–̾¶™Áä,›Ì©ÿò-aà#˜÷äH23L˾efˆ‹[I|¹°zî4—£„p•«Ÿ ÉÌ ù*ü¥…>‹ßŒò#y_ÖlÁ†^üiŠ?S²TÜsî.r½@WZe†i~Nšœà^ÅǦ>† 6™!X=w ¬Ú‹«kNsª®Rfaã+ÞE±CùÚÚ6âÁÚÌÏ¥ !3—Hþã!3¸„†™aúüX.N^ÂÀG“Ó„;îÂ]¯% ~²æWË}ÅßHþÉ Ì “„̰#ò€»¹ZfäÀ`ÞOÈ À ]-3híÞ'7GfÊ  !2Ð 3 e†÷»÷ ÀÍ]+3ÌÿŠïdvwµÌP æÌÀL_ŠÀ@f`m3Ãà)N^2ÃäŃüØ@fà 3ƒYâííá^ÅØ°„06Ä!—’EW43ƒO“§n0Y*,^ÜH2€%¯RN“OB©â|9: ß|í½TµONþò7S€«h•†90<¦ª©<™ó’¤Kæ`à^ïþ©m>™rÛŠþé-ÏŒ7a$·«Ê ›£<žÛà„OyGšf„A¡sw*ì³+îeurA9B(k@çÚf“ì^`cƒ23¸®l«ß=s¢¨È þf$l@þýþ›Üô“ÍhªÉ (3CÕfÚCf¨\w›š6„ÓÕ™AhúÔIf0#êÌ0ÙØ`ß“#šÌË{q1ZÄW­Î ʲłB'ÂêÉ‘Ó2CnBÕ†»=3ÈŸ’ÜSÛÌ`r‚‰ –Í æÔù–0ðÌ{r$™¦eßw»¿ ”ƒ¹-@ØP4»ªf¿ËµܼµÅ«Äru’óã9r}¡sÕ÷²¢`dÝ7S, k•¦ùir‚{ŸŸ^ø‚Ø d†`õÜr0·Ä—Èkù““•…fr_Zíxò£Ü&˜kF^E¹?ê·ÑÕ÷²¢¸ð‹³™ÀÓh˜¦Ê?0—0ð’ï¹ÌP|’÷äcMe¡¾Ð³þ#ÍŠU™AÙ¹¦`í½èÛЧ8åd¹èSÛÌ0-±A3Ó Rl8!3ÄÕ„qͶ²¢ÃéóW§ßyõw¤FÅRBK«3ƒ°è¡™¡˜”™Ààr.˜¤À`Þs™Á­¬ì¼¹ ñ`n a$¹«\܃ŠÅã>sMÆÓþÇ~Ýë¶±£aŸ;Ú›H•°X UÜn±MÚ ånNè|n‚, :på* æ¸v±ggiÑšCñãåK5cjþ?ŠDñSô>š™4· ;KO>ó.ÕÇHý£Ã4ëWÜV×afåØ d††øÎlMo™aƒy\ 3´zføùS;òK‰æç`ãÈ @££ÌVDf]gò‹!3 2ÐØTfÎÕo Àöl'3¼„„ýyjýf†Á¡ì†½j"°:Í æx77»©ÉÕ(‘]¡èe·Jï+ßeæ.hô˜l`Øí̉^¦›'¦ ¥óå­½¶…ëx=‹Õh/*ï°€~3ƒ™8ÙØÐ*3¼´pzâåpâ½ë>¦F¦:£›ÊÇ`WLOÃÌ-ÖÑþé¹›Â'ÙÎì¦ú´Õof09ašk3ƒyé6w|A`ØGjñà8[6x^×Ý1û!Èh«ÇÌ0+¦É SË×_]fx ¹­§'a–HŃTêðz¹Ùc°ŒN3Ãx^ˆ³# ÃÞ_Í[?¢ƒå‘š2`aýf†ñ4Ô™á56„Óc/³ñ ¢3µ¯&TpQd?0ìãå{í?Û+ñ\3=µoüR,ˆÌ‰ °Ì ¬?׫ëÌ Ÿ[@`#™a<Æ¥úp½¶“Ful¨?×kS™¡Õ\6ˆÌ ûý·ßåVºBf™Tðßÿý™jß|'66‚Ì Ëfb`#È 2Mf 6¶€Ì ³™á¿ÿÃmaf 6®™A¦Ï ÊØ0œ„=®ê{p!d™œ¼–Í ^TÞà­!3Èf†lH 3Þ22ƒì¢™¡t+ÚrfÚÄf· ÿú›idÀÖl63(y™Á†06 ÿþNf\72ƒÌÍ n`pcƒ u™Áë!3Þ22ƒ,›l`Ðd†ñ<d#o ™Aæf/6¸A™Æc0°¢o]à´Afy™aŠ ^`Ðg:Ef…™á59œ2àê‘dÑÌ2àê‘dÑÌjdÀ#3ÈL (j?+!3 2Ð 3 2ÐØTfÎÕo Àöl'3¼„„ýyjýf†Á¡ì†½j"°:Í æx77»©ÉÕ(‘]¡èe·Rlª?°¼`87µ¼röú½RëÈÓë W˜ùÇ€-è13 ÇÀ°Û™½L7OL¾ó_ÞÚk[u•l+µ©æxB*HͶ±Ï£Hø–E¢fN×L$*€^¿™ÁL´ÍƆV™á¥…Ó/£?`ÇDÅŒÖßÔ/ÜêÌPÔ©É áE¼ç¥™¡"0Ô­ /Rºà 2ƒéi˜ô?ES1,mÙÒY·©Ü£™Ý®"3¤NR’ëµrYYv$™ôúÍ &'Lsmf0/ÝæŽ/ ûH‰–9}Èv¦®ÝÔ#/’Z0œ+ßQ„ÂÝÅõÃaÞ ÊÌ õ˜ÆãW½É SËÿbÕe†×ØÛzz–­TÁ•€æ¾ÂúJú¹ÂvÙK…KySGʾ=•ŒÌ ušÆóš•YöÉRå½ÌA}꣼TQÉæj¶ 3CÑ1ÞHf˜óÀÆõ›Fç7lv˜23¼Æ†pzìe6Ttm(˜™FçÏXØB6R#«o­<6 ŠÌà†}¼öM¢ýg{%žk¦g7Sõä¹EÛéQñ¹é§{ï-"O„È ‘Ø€Å5ùØùÛÀEm'3èë„ZdxûºÎ ze±6’ÆclPZè@te;™aTdžå@?ºÎ Ì5Ãh´7°ºÎ ì»ú×5¶z‹ÌF£m¼€EfÈ£Ñ6ÞÀ"3d‡Ñho`‘²Ã¦öôôt8ìóççç§#ÍWîàHõ{oeç*[tÖS·æœ«¥Nè­}+Õ/l-);læúÙ?æ3‰ž*¤ùT…ÿÑ™!;̶Ýn÷éèööÖ†?þóDNryÊ~‡ ãç·º•…[¹‘\˺\ºué¢ú¯ ¿²æ0òjÙ½¢ŠNè6°È Ùa¦™ðîÝ»ÇÇGóüÛ·o‡ÃáǦӼ4)âî:TüŒþªõ¥°è÷lêî€9WÓÜ:Ü%ºEEA×,ÕjýÒÁ­S=ÊQ?À"3d‡Ù¶ÛíÞ¿ÿùó燇!¾~ýj^šððë×/áû6Z¬•UFS”ÃNÍeåÊ>©¾šþ E9¡÷Ì0ç/•êÑß4ÕÀÚrfÐ|IÚ—OOO6Üßß›äðøøh¢Â?>}út{{«ùÖ ËëHÍx!Z,”eN.4B¹©»ZQ5Î o­9’0L9 {ùÏš½—üyf·N­™:^ØÀÚlfP²ß™‡ÃÁDlZxxx0¦ÿùùÙôï÷{åw¯Pª4%Õýò*ˆPjåÅ•UµÉÕ4õN¸H´VOsÚŠ¿”|ñ9Ÿ¡f£ºu„™A6}mš`ðùÈ$óòîîÎóÄä‡ûû{euh’4?KSã•g6ÕëÅ2ƒ¾R/œJoýsFfz”kfXd™þ{µ¨””þZt{”™A®òEÅ:»ZéÕ²ŸOø<Ÿ„äª*O¯ ú+g? å_Jó®°¦ÜÀ"3ÈŠ¾ZSµ@ó+/Ú#üH:£µCS^…~:eÚPt5ySù„s>±†™!µ¾òš]²Zõ§:pôHn‹Ì “¿KiE-[›®¯]Ç•À"3ÈVÿº¾švÕs›W‹Ì [ýëšF[½€Ef­þuM£­ÞÀ"3Ž2×ÍÏ ÀÆõ•ŽÿÙG2Íõ–òÁ<’h®¯Ì`Î¥ dÚ[73 ŽìàSfxðÊ d.aÅÌ`¶¸¹ÙM-NÁ a`He†hDÑÄ•¢‘úÔV¸£þ$MN+/2½Û꓉Þ.Õ¹Ìe'tj­Ì`ÃngV5+æ‰iòWë) Ç`0µ/îK{øhfŠ‚þÌEc–¬v¯ÔîËœD™šïýS†Ï/:¥hqèÔº™Á¤û+ÌÆ†áœ7eÊ Ó©ìQÿã8&Š‚Ìàî%”w€PÂ3‡ë4üÅžJBòI454úG‰n!¯Üv¯Š}/:EsAèÔÉ ¦GFìc´G“Âþlù¨È Ñ·–$o€”'™Sûšd†Ò½*ö½è”Š»@/ÖÍ &'˜Ø`ÙÌ`^ºÍu Åóí‰f†ÑùÛ¤„U@Yô;*§‡ëx=Ñ ¦\Js¤¢EÚîU±ïE§d; _ke†ñø-jrÂÔ²_ªN8 ^l2ƒ·{ꉲ³43„‰e8ŽÌNÏÞ.Ú#,•*sBðÇÏÉ ¥{Uì{Ñ)š @§VÌ c¬x Naà¯x}Le†°§ž(;5™A¿xTõôê“dË\êc¬Ø¢t¯Vû^tJ¶úµnf8.«é„)6,ÂÕ²cÜgV1eä¨;Iiíkž”uV9Wó!ÌŸ2ó.Ћ3ƒÌc*3Œ§*éÖÊ©3; ìL3ìm]<»B8=[†ô'ÑÜ7ºTö á{Uìx¡)¥Ð©3Ã(Ç!34DXŸ6¼½e†A æqÌ@ [8¼½e­æç`ãÈ @££ÌVDfd ÑQføR¢ù9ظ¾2Ãñß!ûHf ¹Þ2C>0˜G2Íõ•̹Ì@{ëf†Á‘|Ê £^¹±ÌÀ%¬˜Ì77»©ecÃ) ø±! ©Ì(š¸R4RŸ‚ô[·å]_ÿ±L“9›fWǧ:«§DïR´Žp©ÿ³[ÈÕª0vµÝG×ÑÕü+ó1ú´’“¢ÔéùæŽW#$!0Xì-åÍ^8VøÅI®ô ]-£b™q/ú,O!¦0K3,›`øúJ^“ç5ݤÞ‡X6apþ>óÇ=yS3xg¿™–MExÊö߃zÃ'§¥uöÈ LDÏO}ßÑe=j~_hðõñ©få5Æ9˜¯o2¥Q®Ëq¯;ùµy ÑÍ\ÍÔÂ^BwÙ€ëê©άöTÿelŠ¢A3ä±@ÝÎàs-Æ…‹py¶EVž³W= |‚˜}™›¾ œN©µ HÏLu¸Ñ›(ÆØ´&ןßË\rfGoé‚éK=w&lf.û°eöäښ'3ìÓ3 1Š_¢’…Ö ë.ö«ia4Cmånu (­ÎÍ·Ì=ï!¿1;’}Ûî <8¥&#~4S%õúÁ-ûÂ…“Él„ÖîX‡^÷îù»AšÞ‚Tùè ˜>Ãd„¸Â\ÍtB’ ;»fHù/çßò ]M‹©ÖL÷&Þ X7À~®„÷ŒÓ‚§ÅtØTÊ Lq ói-ªfüÈMå/óÓ„ß OlÇFð0}›šÎûVéEcGª+7ùØÕ¨ô„¸ƒYšaÝ–wÒ ç/\í™ø! Ù4CÝ»!ÌñaVrÓa]jÂ’âùçëisEN#Ê:<ê¦L@/Ÿº N¾©tŸ¼óÖï b5eL_o•’k¼å½uù.}Û“O¯ö™ÛqnBô1Q3¬„&Ï9ÄÀ·<0¯žfðÎ…îªÂ¸¼óGÃÅòâ… í aþÄA™¯ºíÈěӲµ\ƒeÃûçÇÒ·pV×!nFÄ{{F3„s˸êHÏD²AÜÁ\Ͱ¹e[fbɆ4Cí-l3°:…®¦k†°¬Ò µ±£wRCèS4è•ÃÉBˆYÌÕ I-ìµt— ¸ÀžšáÌjOõ_Ʀ(4C+<p3ðXÜ€3«~U\ñçyðÜÖ9ƒg(“ Û€yf&ùŽ.awÏ0â‚á±E®r/˜}Í”À φ ›™„«=lY'€ý0©¶æÉ ûôŒB ç—h†d¡5úˆýjZÍPÛAÝ[ŠjaÖ³1s“÷ZšAΞ‘O„Á59lsS—¦¯4 1ÆN&ó¡ù¢÷9잟±û¢é-H•Þ‘€é3LFˆ!ÌÕ I'$Ù°³k†ô˜ÿr1ð-ÒÕ´˜šaͤ8¿ï€Ñ«áLˆÂCSëð`Z š<_©`|q+Z†AÇv©¿fÓÁáñT“Þ:Œ|¾]ɧgn®p» 1„‰ša%ÄyÎ!¾åyõ4ƒWá»Ë ®r88‰Lo댂±_,° _ß¼‰A¯w1_áƒÌô&ÆÃdúÖ?Îêâòà ˜/6è;”[ÇÎ-ãª#=Éq+s5Ãæ–m™‰$Ð µ·+!®„6CܤLÏ­ö&ÍÐqâôR5ðöË5è½3D3ŒZŸüÛ¾¹mš–QS-Äp^¨`HWO3¬Çf,v}±C½µ±)DÝ«®3 y¿ü< [•ÍóŒ“1ƒ’óStÁNÌû#Hã…0[b£¹öÌXøã2ëG¼„ÀHùù4[¼e¾>ß’H“0 ´©oB+º¹uñ,÷E9cÝBˆnÞ¦X†ç)„Büq¤„BÁð"Í „Bˆ‰H3!„‚AšA!„ /Ò Ÿ- ÏS!„øã¼K3lÿKx•fB!†ó6Í †t•fB!†ó.Íò"ƒ4ƒB1ž¹šaÉšaÍäÁÿä²AšA!„¸ƒ‰š!…øøø:¡l8B)jÁàiS¢0r…lY7à‡>ïpíˆÕ1K­!ò.µàôŒ ÐÀ.¤x&½å¯<£Ù ÇêÛMãºîj©ËŒ{Ñÿcy ñ³4ò †¯¯ä5y^ÓMúáňeçï3Ü“75ƒw"ð;.lY—ÜëÕ¦¸6ås%îØä®V'óÖæéæyÅñúéèÒ”ÏéÖ;M¬¼Æ8³ñõ­A¦4ÊÕ3{aˆÏpò‡‡âVæj†¤ö‚¹Ë\EOÍpfµ§ú/cS š!ª´wv›§~¬»gn2ô:æ#­³õŽ›î4 y­¦7ÌÍ›ÆXØÅk0Äht’ òOÀ¬ÿü{Õ}Í”ÀÊφ ›™˜«.ÜÅØë<&ÕÖ<™`ŸžQˆ>~‰fHZ3¬»lد¦…Ñ µ·Õ?ÚjWõ8g¢“Ïæp¼QŒHӈ©¨iš ¯ãÀ. ½g¬WnÙ.<,˜­Áo½Ïa÷üô­O<ò-H•Þ‘€é3LFž¹š!é„$vvÍó_Î!¾åAºšS3¬™Þî;n¼ƒ¯hP_ÍfžsÓR{ë+gY÷@˜ü¯T90Fï‡fà±>&̃„i\D¬ˆGm6¨ÓnÚ^¦o“CÓyA‡·cßre&»•ž×™¥Öm1'pþµ‰‚¡ @3ѽÒèÕÉúz¾-JGá/´Y<Ãâcæ3d ¹‘¯–­A_lÄd—3Ió•×ÞHSw2ˆfBn œÿEšpø–÷Öaä»xt죦ôÌn%!x&j†•Pà9‡ø–æÕÓ Þ)Ð]C¼RV_ç U/hÜW|† $]˜'Yܺ3d—ðßô‰'Ãdú¶Îêâ9ˬO²qSá¡Ü:–pnWé™H6ˆëÌÕ ›[¶e&lx@3ÔÞBŸùMŸóp Mi›ùŒ3¢îŽ|ߎ§ïêûš} Ï4>©Fm«!š¯Õášo%¦×Å\ÙMB¼P3 Á®žfXWlíbz j£éß»Ébn–/ èHÞù ˆ9ux8`ÎÁ¨=ÿ…Œn`¶9@/„ÙÃÀW¨ýãÆõcÝ>œ7œ3¶˜¹Õ‚–Þðù–Ì@šüƒà±{F!úx¡fX±lša Ú€£ Ý<¶xî¤] ¦ó6Ͱ`Á®híÜçÑœ‹nn]Ãd„Â\ÍtB’ ;»fHù/çßò ]M‹©ÖLŠóû½΄(<4Õ°>¦¥ Éó• Æ·¢etl—úk6Àƒ·ŠÀÒòþ[׿׀éÛäÐtn®Ì&oƾ%ÍL>v5*=!ne–fX·užtÂù —}&~†B6ÍPD÷nHc˜0Qx0kcX[ê{Òƒ™$°ÏÞü„%„[2eóz—5S Ì”¶Öm3pÅ™dÈO‰³jÚ;­ëO5é­ÃÈwñèÛ•|zææ ·›C˜¨VBœçüÇ~`7«aÔÕv]GVóVæãÄ_Keæc@Œ±¹÷äXƒ83 ÛU~ôÀœ"ÜÈàBpˆ€3@„9Ãw Ãëøpîå Ï¿Sõˆ3 çnÎP†tĆs/gHu„gϵÎ0eT;¯Î0gzð\p€3¸ÐRН¯Çö©jÃ*{m(…ÁsSQ"ºì¼=Ò2„Ý„”ud–^6ŠH|ÓQ½!ëy¨ïÁ÷­i\ÇCM£r™y»ã—u/U<ûíxg®r†é) GŠš"Ïé$}ôq•é)Ûç;ÿºo:C¹M˜íºæƒZo7w·#)DÞ㋹wûkF‘çò¶oï6ëÑÕß‚% i9#ï;„jŠŒ3À's­3$[XÖöEô‚¿9ÃVÕRêO£hp†<—ØPòb¯ñsD»F¯Oµ°òjVq†ÝU¯ì GaV«ƒCŽÜ"‚ç_Ë÷-øî™÷š%UŸE!2„ÈcŠô, ÐqÌÂDÁ­ï’™] \ƒ7q†Ôv†yцåh¶Dœ¡l7r©ñÖ/…ë5æ-M¼ój^Q†Hñ>£étOóRµ±º#DÞ·ø»'²÷잟¾L%xUÜý.uÌsäjY!ÀàZgHž´aaq†ô5ÿä¬2ð£éh¶˜Î0ÿél»“`cdÕõ:7)½L«ÕÌ–ÖYº|taæÅMÝy 3ŒzW‡8ƒ~dgìËÎÐ4'Á ?øþ7t% éè9üþðw«Ðn5ð:”:~v.ÖQ‰—Åì_!ͼ"EÙXVøž£ð0oÔCÖ•‹2ÄëTÆ×˯æk©Wsä1•C¤qæØã6'J¬S—çæ(ª—OA—ðg¸¡3ÌZ„3 „>œ—ýNMÄ ‰»9ä…!_à ¬3goåçe™ù-4r7gˆ2¼N€g€7r¸œ"à áFÎðÝÂð:>œ{9ÃóïT=â ù›3Ô…!q€áÜËR]aÀÆs­3LÕΫ3Ì™ü#לà .t†”âëë±}ªÚ° Â^JaðœÁT”ˆ®{N¿ †=ŽÎµ]í.i²è®pw~ð¡´""›—x¦ñ ßêiÀ\å ‹0<)jŠ<§“ôÑ+À*ÓS ¶Ïwþu)Þt†]ðŽU7â MýGÜ_ÎN¹q9ñ&ÿøVX-£U x¦ñßäiÀy\ë É–þ¢ ú¿žÍ¶ª–RÿËxEƒ3ä¹¼ÿŒvÄ?PzÍÌ¿š{S¤1/Ûì#¾–ƒÒ‘KÌm¢ZvYÃnfÊø^1C¦.>ºH… »é3õB]û4à ÞÄRKØæE–£Ùq†²½\‘v'æ*-R”÷V³DÍÚ‚Ch¼CŒ·©/Qp˜}‘¡•Wy¦‘FêõONâZgHž´aaq†ô5ÿä¬2ð£éh¶˜Î0gÿ­_äggÍÔ)"Yâ=ƒ·Y®EIÅ”ý[g¬)]µæ<ÓÈX¶–7šp«œa~þÞ“'lŸêÏ?“_°Óá »ìÞI°Ñ\3u®Y®«^KÞ)Ò»åŒý%>–H@³]ÎKgö=x¦b,:”Ù~íÓ€ƒ\è ³³hx¬2ð£æÑsoµéXu§cÎ`öÑ©u¨àÎØ_äP*c ¶Ç+¬¦Ó—ŽWX ò·Ÿéû?M8ȵÎð í™É€Ò†8CM4F‚ŒjÌO^¼¿Äƒ‹€ÁÈæè‚c9Û>ù™¾ÿÓ€ƒÜД0¤£ç óº:åkÔ\,Y^‡²ÑŒïå5ËèhôÕò\´Ä#W/»{ÆÌ8z,^£ÈèÁ3ÁË>Õ×>M8È aÖÚ œa ,VðiÜÍ&- éøg@๛3D^'À‡ƒ3@„9\Îpˆp#gønaxνœáùwªq€áÜÍêÂŽ8Àpîå ©®€0à ã¹Ö¦ŒjçÕæLþ‘kÎp:CJñõõØ>UmXa¯ ¥0xÎ`*JDW"='‹`ä2þî^3˜WÔcÞhÆôƒ¥zZç*8®ã¡>ÓÖ¼ÝñǾ~f̾ÂNå=«øÃ\å ÓS5EžÓIúè`•é)Ûç;ÿºo:C¹!šíºæÝÄˉW¡¹¶ë½ø{{·9ÝØZêñ½òà½ÕP‘–3ò¾>Tüa½oXÀßæZgH¶°ìb‹6è­ms†­ª¥Ôÿ2žFÑà y.±uæ:vUsD»Æ²’ÎÐZmw>gðÆ^}"æ½fIfÿ2`ëÜ–Ñò•)¼že:ŽY˜(¸éõë{Y°~"»ìºfï.oà ÞÄRKØæE–£Ùq†²]¬o³³V›1ÅÂÏåuÖC¨¶Ä{zyucG©e„¦Yò²÷ìž®£güª.¸ãõóBÅ#4 |ÈtÀk¸Ö’'$mXXœ!}Í?9« üèA:š-¦3ÌÅÿt[ãî$Ø8jÑÞ] ¦·SLfa‘j«IõVK­Fa# h÷ævÈ[ä5v”j¶·¾~Á–ÖGÅÁ9€p•3ÌÏß{ò„íSýùg2ðKvÚ œa—Ý; 6Æm½ùz7V+7[ZWÑྠã§Btx™3”Ï¢ê ÞÕx´k¡ûõ;2Õ£È;tL,¼€ aüOš³ÊÀ˜GÏʵÔ; 6Æm9¬úX Øš1ÍŒ£»KmÚP"ÙãûlÓ¾ÙíZg0»éàÕ–³AÔYí çq­3<ÃF{f2 ´áÎPF‹$jÊ ì iãû8è'8ÄòhÇu4rµãm9²ã{wéâ>œà¸¡3(aHGÏæu¥Ý­·»EÞëP6zuško¹ÈëJ"•ëŒ^y:~5HµQ—êuؾz³$&J?Áê´ëšu‹÷b·~¼g¤à`=bZšÂzAªCÓå•çfap7t†Ykƒp†°RÉË^ Þ@x=ws†I C:¾ÀX®ÁãÔwcÊ8/ €ÇÝœ!Êð:>œ"ÜÈàBpˆ€3@„9Ãw Ãëøpîå Ï¿Sõˆ3 çnÎP†tĆs/gHu„gϵÎ0eT;¯Î0gzð\p€3¸ÐRН¯Çö©jÃ*{m(…ÁsSQ"ºé¹»j~ ÊÂÌ,æ%/Ú.{ž¥©æ¾Ô‘{›Êðª2Ë0‹ÑÅ‹Î^ðÉypÕ©ŽT ð¶\å ÓS5EžÓIúèõs•é)Ûç;ÿºo:ƒ·ÅmÝs*¶iݩ͋¬ë)÷µí¤Üu…­©ûîL¸%^v°süñâÜ…k!Ù²º.Ú ÿÿÚœa«j)õ¿Œ§Q48ƒùÏcyžwˆl…b×öfÃkiºTÍÞä ©ûîý“ΠËÀàŽ¼‰3¤–°3Ì‹6,G³%â e»¹Â—nd#8Õ‚#ò²kÿ©nÖÕK^‡W:ƒ'r/Î ¸Ö’'$mXXœ!}Í?9« üèA:š-¦3Ì뾿’ 3”‘}ªÜ¾M/ î°å]e4Ý<Ç^MmÖ¯ÃêŒ^ÿ²1Ò§‹÷&TãǨ7 ¯6€wæ*g˜ŸËfò„íS]E3ø% ;mΰËî½½¯ºk‹btÕK:¸v±ñu¤îQ¤Œ²±Õ¼vÏ‚„3TS˜o ÎwäBg˜¯ÒÕΫ üèyôœ¡ºì¸3ŒM½Ó€Ž°—8C0>ΟɵÎÐD&J^à e4ÑÞq—ø‰æ÷NZ7ñ`êà\u‰×8CÓƒk•ÀÒŠq¸#7t% éø?»õËœ:p¸ª¶ß¡[-¶ËLM$³"µug°¸Z\©Duê*k+ïØÝ»g›)“M }¡åÿóÌ&œ„äÐÎp~«šá÷ÇOwí¼ú¶å‚æäªG´Ì\4,oYùª¯³êƒ¿—mpñføú£gWÝaéCkËk>«y·–/™ÿô°ôTË?´ýþ«ÖpÈŽ°~·gCK3|#¿ùœ›ck†‹ö`H¯;hÁÀ:¶fˆÚã:à$i √Ø#ÍDh B3šˆÐ @„f"4¡€ÍDh B3šˆÐ @„f"4¡€ÍDh B3šˆÐ @„f"4¡€ÍDh B3šˆÐ @„f"Öm†ò8CñfHöÙ7À¾Å›@3-ÍpP±ªö3ÀaÑ @„f"4±A3ÜÝýÜàÐ"í¡‹mô0÷Óol†Ãü‚pø¾^ ;Ø…7n†2‡ªß±ùvÛ‹€ÓPÛ4—n¯«vÞêxjäGó/²½~6T×Ðü^Kš7€³RÝyW­õÀÒÝ¿¶Ï¶ŸmŸß`ýŸ6C33Öm8gÍfh¹¸ºÉFvÿEiDš¡zýë× °U‘fXºÑ·7C¤(–Îo¼þm4ÃÓGÌl¶68%‘fxúÿÖY=XÌ7c v¶ýSµù Ö¿A3qÁfhj&Ä^hØ›áé½ö Ošvå+Íp4ì†f"4¡€ÍDh B3Ÿ6CñgÑ>Ö}âÅÿ]__÷+:Nõl|ýñf¸»ûYë~…š¯ß_¤þúçïUãáñaÝlXôÀåååíímþnü¡(Š,ËÒ©­6Cí&_Üô5çàëͰn6,š¡ †Ñh”Rá¾¢(Æý~¿Ì†øú¿«Òq9j¬š\|¼v“À_ŽI¼Êm†§`74¡€ÍDh â|šø¢Ú|t"ÍPÒ @ĪfhÒ @Ä¢þhuóï=!µ: endstream endobj 89 0 obj << /Type /Page /Parent 674 0 R /Resources 91 0 R /Contents 92 0 R /Annots [ 90 0 R ] /MediaBox [ 0 0 595 842 ] /CropBox [ 0 0 595 842 ] /Rotate 0 >> endobj 90 0 obj << /Dest [ 152 0 R /FitB ] /Type /Annot /Subtype /Link /Rect [ 421 137 449 151 ] /C [ 0 0 0 ] /Border [ 0 0 1 ] /H /I >> endobj 91 0 obj << /ProcSet [ /PDF /Text /ImageC /ImageI ] /Font << /TT2 838 0 R /TT4 840 0 R /TT6 536 0 R >> /XObject << /Im4 93 0 R /Im5 94 0 R /Im6 95 0 R /Im7 96 0 R >> /ExtGState << /GS1 843 0 R >> /ColorSpace << /Cs11 540 0 R /Cs12 541 0 R >> >> endobj 92 0 obj << /Length 2951 /Filter /FlateDecode >> stream H‰¤W[£È~÷¯¨Ç"3T1–¢H3;Ùh¢EëÌËt0”m²Àmí߈ýƒsn…¡»7Š”nÉÔåÔ¹Õ¹|õq»x¿Ý&ʨí~± 7©ŠàŸë(ÜX•¬BE±Úžíu‡Åû¿übÔ¡_D!ìlÔ¶X,qÁðºø®?qhõçýCÁä+-}éƒu¸ÒE{v*Ó0 –&‰â,Œõ20&LµÊÔÓµañïtйÀêN}É›KÚé¼þ±ý+ênYw³òÊóˆµ_¯ÒQ}ÒÑXT7BEõ¡ ¶ÿD©ð“u¼ÛOHR,´eÀ €›MˆjÛ¶õ.ï„VœIt õªØ,4v¢J”‘*adp„Žû0¨áèÔОU»§á)¯u­š²½â¼ –ë0ÓNU½ÊŽÄÂþp„is9퀛àtU´M¯ü ÖçÎõàZô²k†ª9€­&)°éüÆ:ʪ!ßFjiB³B[ÙuFôµ8B}÷—¦*”#êÞP\¬?pºk¯,p£]wg!Oz_¡ :@`lt ðs阨~ <*µ=Ê’ËOí³Ëwµè7¥*òFíŸh„Vç§~Ä!ÔõÚy¯z”‰V ³ZEÑØ¤È1‰¤†Í$ë~ a PY]Ò¸W<£0û„e" ~ ðõ 'Î ´yµx뉖 á ó*ˆˆeœÁWÜ>ÅP)$ KŒ‰!äìö|’5©Çœ#‘ ^…= d±,êÄåƒ7ªšé iUliˆR"¸Üèƒø&EUQSÞ‘Âüc€ÅÎ3»¿™»Vr7ÍäË T%ýuKöÚ1{y@ œÑ¼®Ê‡ËSVÓÎ\Î žEÓ,k£ÕñÁ¤ÇÚÑ*xP[¨g6E7à|pp}Ù|ré”û‘Yí˜/.Ñùiñf1â 4¶¿Àt£ù×Ñoߣ@£/5–̺`hŒÐS‰Å5¡2A†Þ¾ãUUVý¹ÆY=ÎË5mHÆf|£1yÏPãEju˜Ò}«xv Ä?°«'„eþ—ê$€FÒWÕAŠÏËaÿß‘Ãõ׳k~ŸJî'à§hZ¶$,IAN}¼Ö. ·B(ŽØé!h©w5/ºb ä´UWý#ßæfæý±½ k}èAÐÍÀc@ÆÃ£+g½.õð'n ŽóâÙ%þÙIÈ€Ú„¡-÷-‚IC #j¨GJ¨zL\“]"eás²½ *o…=¤œEªë_9Êéž7óbx‡Q¯ ɽ* @’¾Çü™s¨úY“Xû7˜³ŒÚ¦(1 k*TzXÐ “ûêzð*±7bM°½Ó2z–Ò6IÀ³IÃBªÞ¼RKâ¬8q¼6/¨.„ËWˆFÖ»ÆnÀ×£W ‰Ño£éWRø–³rn¢›w £fò2x¥åÔåé£/ Ò«zIsÄÝR^&°Ò‰T‰žeó4™¡øŒÄ¾A°Ëí¤úU)àÃ>ûiŇ©eªeBq*í›(nôùžÍ´èyÅX³Â´»Óg|û!^\éec_‘­ÄTXÇ+‰¥–Jåà%ŠÔdE=g¥eRñ§åšÔ{ùºGÄK[b¡˜6L¼ˆ@¸w€ÓÑ7Ç•ô¢õ"TC€ËGD±ÆG¨ 爵©$â†ßá³²Î댷Eºì=GG†B³.•Ÿ¼ˆ^/L Z’—®|³!š1Õ¥ªÓKΠæˆJCCõ<€¶übËa„†ž »•Ûõ Äü¡Œ[ ¤T5˜á8“°%32Ã@u`gôÌò ’…ôŒeÜÕ0—cã}ÅSQâˆ+% wQÀÖ”=þTší‘5˜·ÎÑÉ#æn±"Á-ï‘ÜP?Zã“ê1á«>Q‹‚ªèzD¼¯ò‚W ×÷8_=W¹¢ŽKùsþ\v<Ñ¡bô˜ƒm½Ë;è½c” 0ãShÂø)x$k¸y¤ªõÀ "ý wUœ—ö‘— åeªeRñ‡ü,ÛòuÊ%ú½c@Ó¹¦C¨7¾wðŒõN ƒÚêÙa%<¼—7ªm$)}òjH–öwÂ[Ξݨ]‰$Ö2\%ù\ÇfЩµ®…´˜ÛúBm:6×ϽÌF޲2#éH `ȯð 8NpÜ+¡@‘µO<) Q_¤08îpûÖoýQøì…ÁHùžÇ-E&¥Ù­š®¦ÿêÙBöH´½PIäø‡P<_ºsÛ»§åaO$a|?¬{˜>qèÃÒ9ZÍÄ‘)ŽÐ‘7|‚Ý©Dí.ÃÐ6!ég{tz4¼³ Èân‚0i ß\W=C„`{ ÜÛWP¾•À>|´Rr9ž©|×>c¦i¶óMdÍ#z”PÅ¡b“C/†:!2C 줧˜¥]´¦“4M\Џš ¸°¥ Eñ öÀÎ$5¡P²™!ïñ^>3)¿‰ù5ð˜ Fµ% ÙVˆ ïR¢­,i#zqôbï=R¶ï…«œ !¨«dÄAMþ!dX¥}Wõ‡”mÿ<ïéúß.64nY–æ$:ú0¸Z}…¶t†Óx½?‹X¿.ÚdöHÕ;4  Ó/Q'Ök®ØP«†­3[Tm¢Š+ªŠ¨¸Ý¥[fŸåµ2ü@M3ø‚=f•R¤L´°…Zk¢J »g’{›^+G<{ׯìç‘èï endstream endobj 93 0 obj << /Type /XObject /Subtype /Image /Width 26 /Height 26 /BitsPerComponent 8 /ColorSpace 540 0 R /Length 117 /Filter /FlateDecode >> stream H‰Ä9À0÷!H´yBJ*JÛÿMâËøè"eÀnF‹ÌGÒá${ø`oPNÓàÌ0Î JDeÚZ-ÆDØfЙ2¸7ùÌ ÔeæD7K¢%b¢ú™°¨¨J­ýEG¾6oSn«Ü…G€Zð endstream endobj 94 0 obj << /Type /XObject /Subtype /Image /Width 269 /Height 159 /BitsPerComponent 8 /ColorSpace 541 0 R /Length 1214 /Filter /FlateDecode >> stream H‰ì—‡¶« EÉÜ´÷ÿ?ü’Ð0`Áåìµb¡Œ°ÔC!K9 d2¾s~ƒ¿BÆ·ïΡ @“q“š {|1—ËskÌ·Çùš2.qûíq¾ìÙ)m¯¤¸WFö´˜ÌŒ fF*¥*ȆY<4µÇ;ïÃB11Œ. ­¥/'ÆÒ…S—]ÍS†ÈÉm'd„Nþ—ãS2æ¶]Œñ^FÚ2ì›Ä‹ ð™bnæî$×w‹-°]h“³\BÖv›Õc—‰ˆÍŽ)~$ç0K\.a¸óÍ0¿CÛpbÒæEœ4V"E[9]2ÜJ™’áß=6KÂhÎPŽ|]¾G1ØÜ÷*J`ºÉ%³¶[¤Æ’Ìx0./L*ætjÇìÏ’¡×öʘùÌHî+¾M¦—I1‹Zó)Ù%·_&³ß&~„+ûÜÄGBHàs2ƒ°-²Ž°Œ`’ùTã%±m(î–1÷;#IñMòòÇX(óÑ"ý1Ì_ÂäGWòÌ8’1õ9þêŽNMÆè2†E“q’[EÆ}@®†27ʈ03ÊæÉ8”{^••ì—¥2Љ$ã9ÏG.Øàæî~ò:=†–Œ0i˜;aA¾|öHC†›]1÷{^ ÷̰ͬÙ!³`¸ÌxÒN‰(ã&îsÞ&êܵe²f¼ZÅ-—¸h$]-GX!/ø P@e”Te˜¡ €2Ê(˜-CE]³xe³Jiå¨Îú̘Šþüë2kžÝ26hgiɰ“ãvþ(”»Ø­ˆ?õWöa%íöj˜F6Á[(“¬_Ö7’ÕÆ‹j›u2¼ñ¹BrÆG+QTt"i¸<LªL¹ËûˆRk²Úâ*ëdha È&bò žôá"IÈR†ÚJëc°wÖ-鵉 Xi0¼þVºÂRäyUFx¾`•+ Û<]DK“0\‚ùUVÈ(†œ  N E753BCå&j ’©Ý”vm=3bØZúj©Xv«E6&{.é·@²xšŒJ»¶eoŸwå­ kA¹`X&Å4oì;ôè^9®î´ëy›ø©4û÷ E~ßÕf@ÿ›”P@e”P@e”P@e”P@e”P@e”P@e”P@e”P@e”P@e”P@@UÆí: ·ÏÝ_¢"cL(  €2Ê(  €2Ê(ØDFß_‚-b´"Z†éàfúc4#\Æi=WÓ£™2 ò—eük2šŒÖ)£QIå)†||òàµëáb4¨Õÿ–Œç(ýo­Œ¢ÿNeØA>¶É„–ÉÝl‚¸`1åZ®~VFð:â# ØE=;’ã]™6H:ýÝÊèÌŒS‘ÎÏeô/ma¤»ß–‘¼MV>@ û|f$ßkeà‹C@íÞÞ&:Ã~jPF£’2Ê!WF“Ád¬2eÀ#ãvíÀl£ùÃ2n¦‹-b´"XÆA  €2Ê(Ðe e…Œ¿‘ÉdÈØè_o„B!Ûñ…j²9 endstream endobj 95 0 obj << /Type /XObject /Subtype /Image /Width 333 /Height 27 /BitsPerComponent 8 /ColorSpace 540 0 R /Length 1432 /Filter /FlateDecode >> stream H‰ì—moÛ6ÇY»v“x „hsGµ^pÍ /ˆÚ0Ì„™JÁÂæêûšõÈ'Û –Ù²“hÅü‹äñçã‘(ºµ·(ùìôë©V -”oPòÂ<ýz—êUïÏ¡„7(…×öB—ÿÃ4¥ðÚFPZ[êšoŽý3®¾~)¼¶¬œ‰0í×Ba& B‚]m¥Íí(¡wŠÙ3Z™ã„·ê- Uxm'”`æÌÓ0-g4)Qju»³ðÝH›Ñ§;‰Ïb0˜yZC0WŒ¯8ç,cN«5ÃzÎ×¶¤õDÆòû}tBõŒœÙÃlú6aR¥¤ï¥’$fÝb»Ýš’ìZÚŒ(~ŠeK³•q"©‘ê b·ƒrÊ챘ÊÇ#u>{`b‡%¶êyž†)3¥µÅ‚IªB,˜µb³÷'©^W$·ÕgÌÍøR}›ÍƒËôbPè­ˆþ>Ñ[Õã ñâ¿Â‹Ì•t?ýazHºÈIʲVðib³ý®Ÿ¥ø{A& áLÎ$&LIhFè{ì¥ Ín™'Ú2ßk‚®S•t[&`TÎ HëÐ<Ý Râ|hVD÷÷†’B#M7%b÷gÀl­“ü~×Oì£2K(ÁΙZê Ä™}ôÀÔ–7²$ºääÙNU‰0/0(7ƒ _+w™+ Ÿ9:΢ Ér]¬¬Bµä™df«®×ã0‡0…ZéL'g’ŸðSŸ•3)§ºH×K-m‰$ÛÚ,bçaâ*Ÿ!Í™S­JÎÕRˆckî’%÷‚—1&ÄhEeɹ༌IsÀê°ƒ9„0˜Š%ÞÔ”Ö–&š«îVÁœ0)}‘´ˆaž$ÍekÜ'útL˜y`25 ó+eŒ¯9nçiôût"{I0%)ci_ïý0™/gæ Ê?‹B2ÆîÅ$#úÑ¥%DÍE”auØ™ †ÈRÃ̇Ãby8Ь”Ö–>gj,soÎÌè©XvíLWû9X­nqïÇãÑh_±ÜØ0ý9sQä ¸ÅW$þ°Ò$Z`.ãü%FâÉÊîðÄ9†â1øh”Qq¨ÌÜs&1âÒÊ™ê_ j7÷D¦ÍÒÌVûñèúj|]Ì‹ ¦qho–¹›3ó8Šã›››DŸ#®µŠ'S¥ú¤³9³ŠË@˜ô‹º—†P‚uÎ$K ÖÑ`¨"c“> stream H‰¼Ò± À0 @™x©~‡^ÀûObØ‘¾t¾Ôñ»Ëtzgß"ö& Æ °(ø´fAK‹€—’JP-•‘":êµÂ&÷$çBxH¡¸NÌBõoVŒˆ' endstream endobj 97 0 obj << /Type /Page /Parent 674 0 R /Resources 101 0 R /Contents 102 0 R /Annots [ 98 0 R 99 0 R 100 0 R ] /MediaBox [ 0 0 595 842 ] /CropBox [ 0 0 595 842 ] /Rotate 0 >> endobj 98 0 obj << /Dest [ 422 0 R /FitB ] /Type /Annot /Subtype /Link /Rect [ 180 601 195 615 ] /C [ 0 0 0 ] /Border [ 0 0 1 ] /H /I >> endobj 99 0 obj << /Dest [ 422 0 R /FitB ] /Type /Annot /Subtype /Link /Rect [ 164 360 179 374 ] /C [ 0 0 0 ] /Border [ 0 0 1 ] /H /I >> endobj 100 0 obj << /Dest [ 422 0 R /FitB ] /Type /Annot /Subtype /Link /Rect [ 335 134 350 148 ] /C [ 0 0 0 ] /Border [ 0 0 1 ] /H /I >> endobj 101 0 obj << /ProcSet [ /PDF /Text /ImageC /ImageI ] /Font << /TT2 838 0 R /TT4 840 0 R /TT6 536 0 R >> /XObject << /Im8 103 0 R /Im9 544 0 R /Im10 104 0 R /Im11 105 0 R /Im12 106 0 R /Im13 107 0 R >> /ExtGState << /GS1 843 0 R >> /ColorSpace << /Cs11 540 0 R /Cs13 545 0 R >> >> endobj 102 0 obj << /Length 2608 /Filter /FlateDecode >> stream H‰¤WËrÛÊÝó+f ¤L3xÌζâ”Sq9±˜lâ,@aƒ€Rù;¤ÎéHH–}Ue©Šó@OOOO÷é3o7‹×›Ml¬Ùìë`šÿÜY…ÁÚ™8 \FfsX„ü­¿Y¼þëµ57Ã" ðem6ÅbIÝݻż+? œ÷ÁÇdì½ó3 >ñÔÇÁ_‰WtÇÊDA„þÒÆa”‘·ô­ RϬÍ“éÊE˜ü¯’E•ï¼Þ|ÌÛ“ë¼¼ñÿ»ùÙîÄvaÌJO¬_%Y`˜Ï6FŽÌ ÅÐwõ—¤<Àžõ¢Ig*:]àð•›+ZR,<ão¾Î7 œV*í6=;Ó¼Çß;?!{Ksý½Ì3ïѤ^ÝTÓnê}ëÄ|èW|„œ|OÚÅö ̲L•ûÖy3¼ÜO¼’{ƒÁiBž0Wþ2Åf|8Åyï>}4ÃØûÔ?ùË Ö!ïdº:«1=õÌfÇ­ŒdËÃl#ùJ‡‚7ÍsK³M]’VLpl†ûR@ÄÞÜÒø kü¥ ½ËìÅ.¶á²=ù44t ÝŠæJ‡HÐ[ÙçðÖ7ÛŠ›bß Ukv}w¯{™¿ÿt¤]‚¶Ž'-ßaÂûÁ¿kïÁ”uÞt*tƒàóf7ª@oH{*Fœ A]¥™z¬G ¶åE™Wµ|šÍŸSv=I´áTàÜ+O~+þ†´­½SÓÀe†|÷rÁ3M—³DéÓP¤ËW¦Í]Ý4´+Íà$ñÉq”ä²V…MÝÒ9DŽý~Ïý³ýµ|¸“Ë g[¸¼(cÓU„ÁK36þŒ_F,v]µ¥J>“ŽÈÛØ¤€ÂÈÍÒQƒ*ÖÛØ "=rqæµ¾õ†C=ê.dý m#MÁ¿êÏ4@œCj<•˜\“ã­÷Ч*Ò[ÏEÜ R‚RÀà ãe×B·C`ëd7™ÀÒ|kw¼ò©KǺkÍm-ÓÊ‚Qå‚§IQšM§fí/J”RúÃX·9÷XoÁ]™€¸6³%ô‘ ÁR ä›ËœÛrÞ[F Ô§-g¡jÙchäSišzÍŠ’š¡Ç"=¹ t—( ½ä‹tÝìY%ß²˜ôëFÚ­â 2Sb(‘P@t$â•¢;Nm]äìrÍ1ïǶêvöŒ ÔR™»­ž`Q^–Œ 4Š®Uéït^ÂožìyRöÙ̱¯»^³•K¬íSDŒ5x3ê‘ÅùñØLö"*zrÞPIù¨¬åBPJ¦Ë.ã©·ø%ï¾]S ?2¬Å^5 uKÖbŽ¡”㪢°'yÝ A<˜íiiÛîP™±*öä¸FÄëv×õ6ë‘Ë5ù¸Ãæo»Ó( [5U1„و¤Ï1]°«¼ãÓË(¶Y¾‰’ßå DŸ«ÌÜÿEk2ñ‚EÊ ¬Ubð¹b®±ó)@ˆ<ÑhØk+uÔ¡ÞË[ͲˆÖNÜæïœJùYáÈßÌE/–„ %¸%oß/9³i€S;ÕN+Ä~•àU[Iâðĸ¦+TŒK]'Í6gŠ5£‘u?`–„}:ù‰z_µ¤äîÔçdÕ¹ÛŠ#9•ÈFœÆ„öîD'2E~žáàËOcGÑZˆ}µ”¥”{ŠC@²´~«%±S& 1á9!Zt)źSú¨ô…R³2Hňê<Ê«å¬Zy_|_f_ãQIJð’O¿Úf$†'BvBñ³$ß¿¢ÂïÜÌjï„_a¦yE÷R3J3h9®¿ü].QÂ|“„)§)¢›±âZ•øtG¯¤\Š/âò‘Kqp.Æô¡e=…J*?žš±>ª}ÕLrTå“á, öÍÊ<—ÏÔ›ëÿ|0ûÃÉ&„nìçÒÄMÔ&q ¯§§ŽV-ÕЕÈQ&÷2Y™ûa¯r;ýô (Ж¯eA~_ù‘§"=óÑFåa$Èå·Š $ji§@v0ò àÀ_ŒÂçŒÐqw4d–úÕAæ€þÒ1÷otCmÌ5â‘‹ qùºbÐèx ]ÖgŸëjí”ba~Ö>cðv*ZÉDž4ʘ3qÖ2ì0*ðµj¤•æüÞãJ"åH—Ê”­bv#dëѦgB%µ•<Ö¬>ÖÖüX‹ðXS¥6 G:ÙHBu~#„¿\Cì8³¶i@¬_ Ž¸ÜzârJÁ†çh ;Tá<\eÊb$ÝczìÜÉù·¡”Eš–2¥ÙJÃFò«’²ó­:zñÇRÚFšQá[FåD‡1f)_SoнdTˆ(ÁR>©`ÃdÔS Æ“%]K/¸³ÔÑjs¯R¤¾ÚI££7)DÍö;ñÝTCöì ’¢aòÏÜ!ÉÅ!8îÙ×SéüâÕ¿`,à’FáPMoD¸zÌ·ê ¢¹À´Š®^ß¶ÅÈ—=+®¨[îŒOy_éù„§ò;->t·œhü>˜Õ×îp>¤ò0—WOæ®äàqZòîÓGÉXæÎ’éÃ・‰jRN‡-Á2‰Ió†ú®æê³!0PxtYçMGÅ]øgÞÜ9Ê9É”.[ÚÙSfö…hwŠ§Ì–{`ÂÝ› ùvè#ŒPá<Ý(o `Nœë&U/c.\aöRÆ»ú}6Àê…Ï+"þ£¯ÛÑ\~æq4ÉøÓökUßVH˜?` vµÆëtvÒL÷çÜ´CýJ ÞÊ6x4Ɉœ9•\K·ý*=Ex‹ÜE-3:Ø‹teúéåHÃ]E# pÕÒÃû¼/N‹Ogçlv~êÞø¼H4å\ÿøUKÍ ä®ÂBeN >H“3í®0ÒÖlu#1G´ÿä„"R>¥sŽfÇ䎟#O¯b¨BªîXPÄ;&yäN|Ì—7G6“bNs§D†±0å'ˆCÄ u¡ZÇðŠd•_´i9ŠŸÐ>»p+D.ôë);Ïê礰¥> stream H‰’—Ç pùì@~(Ë0@)2iE¢®!ÃÀ€j$12(fb•Áæ6T0¸ep%D€¸/“Ï endstream endobj 104 0 obj << /Type /XObject /Subtype /Image /Width 26 /Height 26 /BitsPerComponent 8 /ColorSpace 540 0 R /Length 197 /Filter /FlateDecode >> stream H‰¬ÒÁ ƒ0 P(¤Ô¼ -´gý€GÂhNþÿ×,±];O[¤¾&Fcη±Ýå¾GþE0Bž—™84‚0Ízec‡ è}VxS´ƒ.B0fÈÎð)]ÈþÄ”kRØSDœlGã:‘bA(ôrÄEÖÚs'dGi8z?q—I[·ã³Í‰R®x PvÀSŠ…ÑKÉÄ»\Þt•Jv,Çóñü:ëƒÐWnÀf ¥Ð"³wÈí|ºø·ÐõçKzê!ñ`«7‰ú endstream endobj 105 0 obj << /Type /XObject /Subtype /Image /Width 26 /Height 26 /BitsPerComponent 8 /ColorSpace 540 0 R /Length 78 /Filter /FlateDecode >> stream H‰’—Ç pùì@žf2 @€!ÀPdÍ!V§i@u –– šš  2¸d ÈÐCM{нCÃø¡†Œ®„`%†H endstream endobj 106 0 obj << /Type /XObject /Subtype /Image /Width 26 /Height 26 /BitsPerComponent 8 /ColorSpace 540 0 R /Length 229 /Filter /FlateDecode >> stream H‰´’±j1 †½uð *nC n> stream H‰ì—‹vã D+¶­ÿÿ7 $¡Á$ÅMÒÎô4± ŒÄåaóöFÉ[¢bý»°yôð<«È+³y§:56y…}¤¯Ï”ÙãåØ|´ÏGgöÓrÛ°x6×)óñGÙ¸&˜7zÞ@F{ñõ+íµÒk=dÓ¦Mîm¥àS³Ö~=J_lDÞöÏŽM­Vþa›Úä5Ù\±\y6ùõ^—Ti—rçýâ±Iƒ%ùŒÊkJ$ÏžMéX›ºç)WQkgAéŸQðîgö›?%qêÏ ×j/~2Z¥Æ†ò*l¨H™Í'åµU6‰²úLdƒ´‘ ç Ù`6r-_§+X¬IÿÏë…Øü¸›Ëi"•¯¯Ë_+ØïtIj-“«Ü¾LÖr÷·æA(Ÿ—*(m~‚ø/SЕX6L| °û- Yêæg²É29˜lÜbã[·;é L]ØZ¡ˆ21Y,ÓpÞ´¹« Q‹ª¯œjžMmY~uæzªF)Èëlê]œŠŸÉ}¦~¬Ã¾À™†äµX³ûM»‚=I×V:†A^?ÆÆÍ]QÝw­Mý¯ óœR5Ún÷÷æ3kÊÕ:‘ÍýZŸØˆl°xžÂ",²Á",²Á",²Á",pf0š}±“¬Z_Ú©`ÒàÞÈ“æ7Ú­dSªJwý ¯Í·ç0qÖÌSÁòry+1 tlvÛ<0ž&Uéb{ãv#5€ »Û؈ÿ1] dS/Å5f}dÛ<•¾›Øq¾QèGvslö Cg˜\únÌÆî7’|s…Тˆb™8]YG´–yÎqÚ3lºÎ‹tŽ˜EeØ´ë’°k.ʨFqkjŽM0¤g³I±¥ëŽG!Ý5œk¡Ù 2bÓ•ŸÎƸ–+ØÏ)6¹‡neQÈ%âJ¿ÇÆÍl©^¢GBÕ,qJ«ò€+˜¤übšÏ¬)[Ë žS†b“L/LÍy6÷ë0Î"ÝgŠÒïf£—øíây ‹l°È‹l°È‹l°È‹l°À™ÁhöåIöÂz‘×G« ƒÙÈå,Ó­d2٤Π@+Ù$û"jÏš+¥Wýiî&›‘&Κy*Ø#`.o%&\Çfw°Í³áYÓÍ}ðŒØøPíFjH@lĉ˜‚®²iqÍYÙ6?fÓ.½qaáJAϦ,\11-u7fc÷•çîPD±|œv/%o± U& èÙté »ý6íº¤çš‹2ªQÜšB©GóFG y-›¸îøÄ¤»†s-4D³±Ž3Ørû9ÅF"÷0Ð uÝcýƒcQÈ%âJoaãf¶Ô–¢¹«š6»2¡Ûê—ò‹i>³¦l­ê'%ލßoœyMrŸ<º_¦&bs¿ä¸Ê}?NÀ鯱ыþHÓjÇ3|?ÉæÈl°Ù`7²ÁndƒÝÈ»ÝÉF. mE}ÞÒqŽ¢¯ Ý±ïÕù q÷û·ØHhÙ ï`ãšI÷ãP˜·?‰MÙòØ\>÷oã5fÓ,•ƒèHH³¾:UU¶œÍVE¤tAj.ñx÷¡á0WÃপ#,dSö=®:ÿ%lZÁñ–sÌ&²?‡M‰”-e£,¥ò÷ÖԦݛV¶ŽMÙoÚè.7ÆÁ†ºi>šyù.c³pÞØeêw‡»ØO°‰³ßlfÛio=w<§T[©ºbº5ÍfS9‰NÕ¦¿Í½ú ïÅߌJ68*Ùà¨dƒ£’ ŽJ68ê/b³}.SZîx†ï<›--ÔzÇ3|§ÙP_",²Á",²Á",²Áº°ùG …õéÓÊÍ endstream endobj 108 0 obj << /Type /Page /Parent 674 0 R /Resources 113 0 R /Contents 114 0 R /Annots [ 109 0 R 110 0 R 111 0 R 112 0 R ] /MediaBox [ 0 0 595 842 ] /CropBox [ 0 0 595 842 ] /Rotate 0 >> endobj 109 0 obj << /Dest [ 152 0 R /FitB ] /Type /Annot /Subtype /Link /Rect [ 206 700 244 714 ] /C [ 0 0 0 ] /Border [ 0 0 1 ] /H /I >> endobj 110 0 obj << /Dest [ 366 0 R /FitB ] /Type /Annot /Subtype /Link /Rect [ 238 491 247 505 ] /C [ 0 0 0 ] /Border [ 0 0 1 ] /H /I >> endobj 111 0 obj << /Dest [ 462 0 R /FitB ] /Type /Annot /Subtype /Link /Rect [ 245 406 252 420 ] /C [ 0 0 0 ] /Border [ 0 0 1 ] /H /I >> endobj 112 0 obj << /Dest [ 422 0 R /FitB ] /Type /Annot /Subtype /Link /Rect [ 94 393 109 407 ] /C [ 0 0 0 ] /Border [ 0 0 1 ] /H /I >> endobj 113 0 obj << /ProcSet [ /PDF /Text /ImageC /ImageI ] /Font << /TT2 838 0 R /TT4 840 0 R /TT6 536 0 R >> /XObject << /Im14 115 0 R /Im15 116 0 R /Im16 117 0 R >> /ExtGState << /GS1 843 0 R >> /ColorSpace << /Cs11 540 0 R /Cs14 547 0 R >> >> endobj 114 0 obj << /Length 2034 /Filter /FlateDecode >> stream H‰¤WÉ’ÛȽó+ê8†öÅ·‘zlkì yB_,@ HB¨ªåïh}°_. Ù’&b"Ü*+³^îÉ—»Í‹Ý.5‘Ù6UPå&Ä?/Š0¨b“fA†‰Ù7!ÓÜqóâ¯o#sœ7a†©Ù5›-­ âqóoïÁO‚Ä{íc/ñ^ù%žoxë—Ù/‚ÜkÆÉš$ȃÐßFIQB¾·õ£((<…f‹Ý<Åݱ÷³ —õã òœù¥.~zuïÿg÷3a{”ÀBe%苬 ¢Xà3È$&¼¡@}Dþ¶2/À¥_®2s‘1þ r÷@,ÍÆ3þîýý¥A ä‹§›Vs”t‰÷cÛše4ÿtݰ(³Z;Š.d…YPréjk’À¶ ƒ(/süÚ‡r©wð·lbØ>—§ÚùDnýφ #¯'èW‚ã¿~LŸæHöN='rjPÓ \©³pŠà´4{»¦;×Ê¿9›Y>{+ü EÀÊ(L·˜Ç®ïÍ^9厶ÕCd¨å¤4‘rñ·\“§Ð‡ÅL÷4˜×¼÷»afW·Dâux‹VdɿծE$ú[¨Cs˜§„]Ù¢€8Ý-¶ôY÷vÕ]6Ž~ÉÊÅ0›¦˜¼·¦qVY˜¶ØÖg œXÆ3©hž^“±KïLIÀ§E¬2›uöÑßVžuÂüÅì¿ÂÚœÆqîðÓî‘õÞýIÃ0ÓÈ)iEú>ÝÇáóΛ-4‚o½‡¦ Šw¾_"!pI…C82àñ$;ÏÖ}Ð)+›Æ~ÖC‹«›¥޾²ë¶5l9â’•Ü«ðмOŠlã Š¾v¢èt-4Î6¶ûDú³JÄÏäÖ00" ƒPÁÒ3ûq9ÁQ3 ®›Y9äLË"4XsO˜”ôój$FÅ¡€ÐˆÅU’ Þªm!´&‡as^Fßw_ÓÖ‹¯꾞í-Tã ¸©©¡ñ5ç#ÊøJóŸ3Ä¥”Þtm“8ļN(Pšs0]3tÜ¿—/ÛÜoëq˜…pÁµýW§è²F= €dëD²¡”òÖÊ22d†‡ø"À‡Ú LÎ'ÞùØ7_]ÜŒÃA·H‹³^Žœ©˜Ã¨·¸oDj…"9[.›UJûýDOV«­ù‚\Yê¡‘†NÉCï¶›§žš¾v¿‚àP0H™”ÒÐ ÷EØNµ¤™#ÇJ•œ¦¾k€ã€Lß½Î~¼tŽûæ“5Œ¡ïùÛMûÞ5!*mà ­õ®é_ì>˜©n>p·‰PR·ìwnæ²E}°¢Ñ¹ÁýfÝrægî{_²#²É{voL'YkPæñŒÒ#OrG=0òŠ›7ɤ֭•DÊ€To¾QÎ\œ(§Ðÿ~_ õPD+ÒU¦4>2V@Ž/¼ˆ‚ñË®:;’oŠz”­E«¹÷ržÄs7ÿˆ/Ó4:ÔÜY)-âòVøÏZ¦Í©#Ír±IêõëçÒ zD6Ø´µ™»óÔS¸j wÍ 7æájLšÓU2os\ó•׎a—¡!¨ßjµDE­v;t4˜Vkƒä"ô V-â¾K4c^Ú¹kuâ‚@d2 ¼¦ËB1 ,O3 ;Ší{ìO1VÅÁUx/vh´ Ü'•½ÊÁphN}ÊR³ ”ºŸGYí•ó«¼È5V’P«*uXî­Ò¼rq Œ:q_‚5çYÚVzíÌØ4½=,æ<^¨í]–ápèܼ ™OˆV>©_sïÊ­ê ›ö?=ãæÑ¡p)*:ÎÏÛo&ôdÐ]'“1‡éçàl¨naðËýôÝœàÒuF]k¡Ö'ßóÀ£›C§×x\Õý¸!µ^YqiV…¡MÍyóâõ9JÍøù•çëØg40ÉØTÀéix;ž}çx~7e!šÂ»ã¹ÿßTæw9 endstream endobj 115 0 obj << /Type /XObject /Subtype /Image /Width 388 /Height 119 /BitsPerComponent 8 /ColorSpace 547 0 R /Length 1335 /Filter /FlateDecode >> stream H‰ì—‰šª0 F ƒ Þ÷ß+Ò%mÒ–a1þg¾A¡[èéæåŒ¡Klùy:°ßØ3;èÑÁ¼2]»ëuºvudßCæà¯Ö‘•l;¦ÜÁk \áàHºl'PæÁ•̓¢ŸÐtå’gåiÙ$WÒÞ¹ý7Äi°ÄÁôáÿ›e®ÄJ­žSI™]ÜU8Ùüÿ}-H:ßý/¹ƒg¿Ïg"ï#[rØGî ó©ìkžÑÕ;„¼}â ‹S‹5yªÝi^‹ˆæ¹ ø>ílˆºLBNøW¾öq?)]Òœ¬#­âL ü~0+ü¹ižʲße’DÖkyFÞÛ²kU¡Š¾?£ƒÒ<˜:¾s³ ?§ˆ±ªÔ$)ý*¼Üù÷ƒ8„{qVTdý_[‹úBM!õ«Ö¢Ê¹È¯]è—`„í±ÉY¿ GV®çu=¯&i Û“O%¡þû ¾ªÛ¬¢ËÊe¶Bhñ-Ë=±·bKhÒÞ0d‘e1r5ZájÅù£¬Ö¤G5… Ø~ #díTBS*WÒ%£tPÝ‹ø%ÊbLÞPNÆäJ~9 •SRÞlZsö"¢Rhšƒ¬Ù#$I{ Þ²î@¼SõEõ¡*ðêÒoâžµ)¨ÙôÐJó@” Œš]Bâà圵,–ÄÒ–_f‰ƒXDí4mXú¹ì@f+„K(ÍÄ\»;pmÎm±Ó@ˆÅ§üž¿Vº¾R¬YëðP›~.bE+ç¢ä,¢ó =ñR"[-´˜[?!.<ºƒò5†ÐlÁGáhÆÒp0ÞžÆÁ'ÄàiÇ¢:÷ûÝèWÓtbå¹ÑðNŸÖ"H8–†ƒÛs)ºßààPÉ4HÏEpp`tnÂéÙŽ å ;›ÂÁ4Ö"‰Y¤çEý}Þ ØöÀ=p`ØöÀ=p`Øóد +Îã [ÍЙ¾üÇ8XÛßõ¹¡è.|Œƒ­%á`#ªƒ’JI8؈î`Á8Ø 8€ƒÕEwà`¦è€ˆ¦¯¯Ë@˸rX:L”LåÿŸ—ÅB™2pQpà†èÓ¥B97hpÓÉ]3Ep0±À ¿u0wD¬ÿŒÕÃ4?)—T„â¬Ûá@§é€Ö̓iÝâ³Aµà8Öí$>BçÃAÆQ碸`?hqØïƒy Jp.*StÐzRrð»Öá`€8€ƒ 8øT’JI8؈êàw%á`# ÀÁ><ë5xDÂÁ‹n=Ûk€ƒ¯ì{àÀ8°ì{àÀ8°ì{àÀ8°Ç;–À=O?Àöü{˜3 endstream endobj 116 0 obj << /Type /XObject /Subtype /Image /Width 26 /Height 26 /BitsPerComponent 8 /ColorSpace 540 0 R /Length 235 /Filter /FlateDecode >> stream H‰¬’QK!Ç}·Iˆk ßn_F\np¹ðÉïÿišÝ«Ûíê"¨¿‚èÏÿ8:\U»"†Æß þ@Œù’ ‡7Ä,Îû=·ð•Tmäãçh"}Œ±¯.¥‹sNc£kžËJ ¾¶”r¢æã]0¾ Ò0§îþÁÊ‘XežpÎìƒ'»zbÖíâ ×±a:äÖjBLÙ‚IOÕH”ydÚowgRnW¹YÆG«gÊcÑbÕ"UA>l²ŽËþ®sqãE}d:è£M¾ü¶rÿEøýß=„¥ÃãiáM€ M¤ endstream endobj 117 0 obj << /Type /XObject /Subtype /Image /Width 26 /Height 26 /BitsPerComponent 8 /ColorSpace 540 0 R /Length 63 /Filter /FlateDecode >> stream H‰’—Ç pùì@ž$€&ƒPL‚ Ü,’L#GD­í!Ç?dèÁ ˜€Ú2¸"@€¾NˆO endstream endobj 118 0 obj << /Type /Page /Parent 676 0 R /Resources 121 0 R /Contents 122 0 R /Annots [ 119 0 R 120 0 R ] /MediaBox [ 0 0 595 842 ] /CropBox [ 0 0 595 842 ] /Rotate 0 >> endobj 119 0 obj << /Dest [ 462 0 R /FitB ] /Type /Annot /Subtype /Link /Rect [ 174 243 181 257 ] /C [ 0 0 0 ] /Border [ 0 0 1 ] /H /I >> endobj 120 0 obj << /Dest [ 422 0 R /FitB ] /Type /Annot /Subtype /Link /Rect [ 461 243 476 257 ] /C [ 0 0 0 ] /Border [ 0 0 1 ] /H /I >> endobj 121 0 obj << /ProcSet [ /PDF /Text /ImageC /ImageI ] /Font << /TT2 838 0 R /TT4 840 0 R /TT6 536 0 R >> /XObject << /Im17 123 0 R /Im18 124 0 R >> /ExtGState << /GS1 843 0 R >> /ColorSpace << /Cs11 540 0 R /Cs15 549 0 R >> >> endobj 122 0 obj << /Length 1361 /Filter /FlateDecode >> stream H‰„VÛnä6 }÷WðQ*2Š%ßûÖlÚ" AQ÷iÓ£Éxã[lÍf÷;¶\’’s[ Å[òððˆâE×u êCT©*‡üRĪ2fÊÄqõÅ<·ÜGç¿ÿ©á~bÇ)Ôm´£74ñ}—2Q‰¸’8–ˆ²Äç ]¯²P¹h§ÙB¢rËNŠí‹ÔZ´†Žæ)ú6â/ÞæwYi” \7ãIêX4½ü»þHØÇ®S…X óèS)mäàÑ&7öH \&”ÌU*tø‹7³¹7kTaò ­Ö—´­Èúó+¿±*â*õ ˜†¸zaÄGGÛbX±x:W¥d'Uò‚ËJd,ø iÀmzˆ3U¦ÄZ¥! ÞGÎa(SÒÛæâaw´°ÚÞ¶ý´mï€=_IüLÅÍ%ÜŠn¤!$õ ilZ†ÆuÓÓþ3n„»0k‘~#ÝØÑì´Mߣ¹ïݸºfÄ€(ût£wáŽÝʑİÓJgÏŒ`V­6:hänjOƒÝ­JæaZ Æ!!l¸[´ž:wäˆ.q¬D¾®¤Ñø÷?S\r#iá5œ»f ‘ޢ¹+I.Η`°Á` ÑŸ,„YËóbW+w*\ã¸c6Î8”ú§·„ÇÉFø—†LúÞn|ÞË ùDÐ4l]«Î`r¼$uµÏÔ1¿0£ÞHo×´ô›Ôdç–íØ¦±—;CyÝ&‰º9ì]8äaË~Ã.8¹HZ¸•ÖΨJ¿ËRœ…,%ôF!"*Žä®[ç¾!Ð…÷›á¡ÄÍ bã‹'ƉÅñi‚N)?W;‡Ý b€fžû®e’Ïó£FõÀbO&) ö,°Üú>HôÀlÖm^?¼ÉNB†øàÏMûÐë&†áZ¿OvÆÙÏ´Çf&¶’ç¡>2{Z Y\•ˆ‡y™ö͞ا•ÈBI3ë4X4Á KDÐn‚îhÖ›ÃX&ÆÌâ$•wÁ_uZ|d‡®gxÁ·µÀj/„Ò·Rmçʨ䇄ÅzKX}$4ÖsÝrõ|èFR%FÊþ_qëiž§Å­€> Á¹]ó5°ÇÎï>R¥ÊD¿}ºPC2¬³Vv†SNŽÖn˜ûôj›Å“ÞâÑ 5Aî„ÊÐ|ÏQeºó§±%¨ÿ]UŠ­ªÜb±"R+¬é|’QXE,ÊP88pa×îÎúji¿†i"¦s(·,꬛Jâvv` Ž·T¡‚<žøHxÒBÀ¸Ûgû¸Õž`§iÑÌ&}Ññe)”Ц_'ÿ¶;íÿ”!_ì±,ï‰ýWUã¥à¬^8NBo†é´Z*Qޏ¬øt$%Ó—îmY{±ßæƒ8mµgªæ;ŸÞíF°Ïwû@~(6Ë[¥½‡g«Àâ·•>aíSú‹÷ó4á5ÐúÙ†À{¾7…½"+Ûïa·(€wÇå9ä’̓{EÄ׋&ŸåIqm> stream H‰ì—‹b³, †‡Û~h¿û¿ßÊ) !`»¶®¾ÏV­Vƒ€îctøüäÕŽpX Q/@ À‚€Ó°pœµ)ÊÏ£übÖðgy=I*‘k•óÆ”_CtÔø!ë_6øUfI«¬F•ÕŒïíïk¯ y'=N__Ê´ÈAÔ 6OäKmƒuæËg¿tBÊЖ© =µ³ŸWG<i‚lꃻ¸7ƒ¬l $ù1D<ÍÓŽßoKyBNÝ/ÖJ[»3µåT”­Ì "®˜(¨ „vÇd—~@—qç;ÈÊ–@¾¿Iiž³‚(߉)Þ™)óµYïb|­ †fÜ3öshõäÏ%/Èè‚<‰%e‡œtAâYçtA¾¸ |Q½ˆ}9õEgN¼ódziËü$Jz×F^ikíEнnpãêµðµ­Á.M®‘j¯‹¨' ¿jGZæùbÑäyh‚dØ;HÉ1RïM´_0ω²Ä: yí<’xàÉÉX>N·Í €÷Å h# &ƒ,@% ²Lá^=XžMd2€“A0€ ìÄp,¦¦ïóùàHÌMß' ²p ƒ' ²½ò|8rÞ±Ð,ˆ[Çåâÿú’Àë âÒÆég”ò¾ &,A–tÀk˜DÎï5äíc!à…Ü*ÈÍd]de¹ 8:óK¬u:;²ØÚ/ˆsµ¡­"Gg(ˆ+óZ¼‹Ü‘A ø+ìÈ BNÀ>Aè”~– ð¼]‚üæ+½’(‚,ë™% ¿ð*打º*±[*‡anúÞ€ÁÑyàh¸c òêç’C À‰€ @ ’ Ÿ3@p:¢ nŽW€g³KÞùªáŠ ÿpzüò±P>‰ €Ó³|,byA(@ ƒ,ˆÓqnýà¼$Aœs#AÜJü2hÓåдQ*”³™½ÀoÙ¦ë(ƒÌç“5ÌñÃAH¯^Ë&H|ž;)ˆãÏù(HÍ#Û—m+·0’:j/B|i$·QÚô¼I^B~ù¿ƒä#²‰‰ Š“í!jPAR¤”B_[!ѼK5ƒPA¼„Dz/Q“ u¡Ñìñ—€ÍïfI÷Ô(¢ ÂRË/€1ó‚µYFåw8µµHZA6Æ^7J+¤Æ³8ËÇ'ÃÈ œÅ ¨ œu‰Åÿ …¥ñ‚P@Àd A0@ÀƒÕŠƒ T~’å‚@ˆ«ª€A0€ @ €À‚`A00qnýà¼Ì âVâ—A›[­¨…äÖjÁD£fïnn{zØ4]vdù|ÒÔÓcºGãø‰nwU@ÇÄñç|œ5l_\zn³„fjpÞû&ex~ŽVÈ-6­ÐÞIRSºõý¦øs‚wㆠB6iBnÿÙžZ¿‰ÅVuBm³LãҦ筈HÚ¦sŽtëÉiÑ4³ìÎ üC’#ã_Õ%†ÊǽÖf­ÐJWë Aئ‹ “ünÉ‘žo1^NÏYAh¡©R{u2 ‚€}Ì BÌb¥Ÿ×DeºüÉ1¾V¬9Éý5 •÷Ñ{ŽS»­]ÔB‘ű#ƒp>LA8;€À‚`A00qnýà¼Ì â¶£ÖÇB´ˆ~ZÖNµäH¨8 õ›‘Å£ÎHšbÑ!ž!ïÌŽ ÒË'D-fÐ£ÖÆZvƒ ê|-…BÑC·uu,Ö` È;c âøÓ4 ’Ê\~»FG"k„c‡e›"c.÷)ê‘üÕL{9”2"qÒ7c©¼?ïäXRc´‚Ý‚÷dw‰“"Ok9eÉL/Ǭ^™jùãR¡ó´AÞ.)äðd¡eÒQí¡´^ZdÝ‘õ»“Ý‚·ä¶ R–ê=AÒk'^}·øl m—<õ›Ñçå%HDiZL{9N_,7i®¼%û3ˆ§å– d‚ÕzbŽåfÄ„­uE+‚V' iG,›ñ±ˆÄÕ‰ìg8ò®ìÄ×ÔáÉc—'™&¤,×µ7þžQú¥+ÙŠÔ‘´žHÇÉ;rž|j³Ê8yTÓ‘¸t-·7a çxíx#ÏÅä¹°\t 8$ð\$Ç‚`A0€ @ F‚„mú»„Bã.—KùŒp.íøþÌ\þfC»‘Ê™õNñÊÎÅSó*Èa³½=”AÒGÝ%Ìv¥òáò&Nϼ V¤rf„²s¹`)J6 ÝsžÏœ×p» lì7 2t‚pæ3ÈÕ U)·,6…ìf’ âå¤ÐóÛå„Ñôþ6‚ÔÙÆ!¤Cr;ÞA’ª%s‚ý> ìˆé°C@Zx%3‚äE(Ûådl„”Å+»ÌËå·— Ε·_wgfŸ×Î:KK.늋ö&‡¼ µÐ³ÒZ]nÉ‘ßb|hν÷ÚæK2Vxâ^~‘ïÂ.Ab½Îh2m²Ü/ȸ£]ó‰8žæõC2€SA0€ @ #A¶ ý]¢RÛ(\.—m³îlœsuçdáþk}®?s×~ v*lø|³è½]ËùÍ–õøñÜ}gv¤Ux3‚¤ºKtÎ)‚\â'í,’®~¥ß ˆçHí ¿ŸžOz.L[±wNà öé—0¤LsÕŒIAØEC;˜N 1xÏ™ïZ`·,%•$H> †ŠéSN^V/µã/ÙKV5:žÀ=‚ˆ§Ê>AÆK,"¹^­•“ ÞwŠÎw/o| w•xQ#›‰‘¦¸ïT=”óA©Î:âÏ‚°,l†üJ©›Ó ²'ƒXý "Iï4ÃÙ[ŠÏ/l AJË5è‚”¯,•ŽºÏí‚°ñAg°#ƒ˜a½w²—·/ÈõÁn bfòµ‰£ù;‚Ô(ôB~Y¾Ø:£ óäš>^ê~A‚¸Ç; ¢^Û˜o;° 9ɱ]`)v&$±½|\&ÞA¼sŽì²Û‘s¥ôD̯°J®Q*¨y¨Þ¸mQêôùSUäîBêñÑh{«äÁ6ß­ðp‚Œ5æo]ÈùŒìxÉ5öV‚û÷ñœ\àǽŒàÔ@ð‡ø§ñÐ!øC@ Ç$l›Ðß%¬w¹\òçg;Eà=ÍTGÊ@¿×¦µQµxgH‡ëÏß âz%»Nˆ2¢ÐÜìm˃v;Uˆ ‡:a‚—7PŒå_ú¤íIu—n…°Ë½¤ŸÔ£ma® ùNïÐFô™ì6GM“íå„qÈCA®ñ“vF`„—4!{‡*ðéUZè6óobý”Mx­ e¸ªAX™›ñõ.mϘòP ì ”ŸsiËnY eÇê¥jÓù.Ò¦• ´1ÖCí¶D–¡´øp›1 OûˆŒHŒº]Ò»¸ÀÞ°û£&Óƒ RŠ•ß<(‚ü|&.ûvîD<˜û!· ’§Z9ìv$»¥‘ä†4j‹êü1–¿Ý6—ÊŒ¤õJc¡é]i!Í(x×+׫µr*Q)tÁ >ð‹'C4‡mº¹- Úoþ§¡ÓÞ¹MÚ4%”_–ÿÌä\žSå ˧}9ÐÌ ·\Í¢M1¥i£n#­Q¬c)d&ƒ\óf_ñô'Æd {0jUß4]‰¶Ä:® tÖBnD†õèöËtËA†Â‡_Aûþï;*[6—ZÛÉ „EÍG Îßçw/ n9ÔW†:¶‘Ý¡fB‹(+‰ sNwÒ~Êw¦®Z}¹å‡x]ðU¤<'ß7AúÑ\¦:-TœÊ0­;ê¡ÄVæYItCZ‚šÉ $’‘Q:HýÎ*«V_‹>4Î$ Ëç¶Ïiä€3v˜DMÓÒiñ-[±Ón_‚è«<èKÑ»äy0üݘ.e…². _¶âÜŠI2D=Èš¢NX)ȤP£tÐâP¾O²º¤ú²+«¯E.q¢ÜmÂoŒ¬ÚÒ×gáÛ””ïZôÇ8¢ëõâǃ%Ö8ò Âzìíp^§ŸìKÓ+«ê< ý9Þàpdó¼lÈw }µ®YáÝ|\±j¯é‚µÕÕÄdzžAL¦Çê\ Ó×Ê1™2@L¦†žˆß_Ï¢Z&Ønš¦t-i[ι)•¤ä\6uËdB yV—ëk¡«VFXv÷êØ0/=Íó–Ô •¦õõñ·¼¥Ôˆ–»ŠÂÀ¾dûFI |Å+¦Ÿ$^j––Ú2!·>Å zx,~ÀòôÛñ’ K5C‰è‡Ê­6¹$jéºk¡&t>Öž5Èf²1Ò0Ú¡5Â$R3ìÞ±ó+µwÌ× ÄzåÄß H^¼JF2@ÒI@dÙåLÖ×,Q‡ |¾+é­…Çî^2@N’Á½}lṄ½Ÿç ™Ç0“µ…J ÈruŸÅ>ù}ÅÄ Ã ©z½£‡*nJ|Ò!ŸmBÏ8í袌I,Ë1J.>ö£&{ÖqÕ<·NNÑŽž¾UtÄÊŽ]¥•xÌÈœˆÍèÉ#Y‘¶=ìö7F½¤ïÑ wGö ɳówjr YGÁ˜iw#$’q¸£yå³A83Ž+ÈÃqÆW:6J©{: Øëo¤â»£€öý€8ì÷: ÔñõJ§™I@å,7î‹ s°9qJ »=ȆÊÞOFP½¨;¦\ËÃXåqù¾ šð0 ޏ/-A£l݉& ú(ÝJî÷ÃÇ(}vÅ„ CM“F¾AhQ:9<¢£TG£cjƒI@–ÿg±G#€”-”åˆY7¡ñ3iš¦N=DÊÑ9¥Z*¦ÛX Xw<mÚ(¡¬µÅîtdà%9íÇûg[ µå) ò±B‘BÒA‹Cëë ÇüÊ=-åïÌT ÀLpwȰ}9]lÌÒŽ{À„ßYµ¥¯»¡¾­Éw-úcTäú&ÿU»ÁêÈÞ £.ÐÖKÓÅsœ¤?Ça@œ!¢ê䃹›?°‰Xêâ9z€˜LÕ"ˆÉt‰îpæwÈ1Ý"ÄdjÈ1™úU@ü–øzÅÛH%²›¦)]K:¢g´1ìe떖˜/»^ìÔ2Ö$4ä‰Ð´ŸV?€«Ý€@¾ùø€ðÓúÌSžDƒØœ,È(ë%Y®·þ)oXÛ€äÇŒæÐ#Hš½œï<ÚÛ¨ ±„ ›-þtlç¦ÆÉ)[Áq@Ð#óøI²·î³%”wT:PËðÿÁ>óþÒ$nqÚrÑ&‡ïAq ˆœöÉ sJŽ øiÑoI¾o1È #›ÿq™7G¹•‹B³ÚZðxðu€ŒD9§'áÇœ§6ìJ¬ùw€¯òÂäòÂᘪdôQö<ˆœöÃêGHFDj' Òí‘e~;OŸ²dùïßñÇ5úR-YþlULèçó¬išB:!’ÎO^Yš(~%úôÁ˜± 2K”ÉPNÄoÓ9ȤP£tÐãxsäiò¶ò´½ãü茲=å¿1²jK_¿H×ð›Ï{V[O__ÖÈ'ë±·ÃaõâKÓ-+;§ó€ôçx¸>!6¼Kwñá»Ñkºgq§ÔÄdºD¿AL¦»ôH† ÓSd€˜L  &SC_ ˆß_Ï¢x©DvÓ4¥kIÛrÎ…L©$%粩«X&jȳê #%ºRu°Óš—¿ŽÅ<£¬b"ë¼§ï3ÕîZê¨Õ…êc.í¯xÅôK‰—šEñJÏúMñ‚‹s±<ýv¼äDCÇRÍP"ú ”Öß|¥|õ§ÕdWÌFBªßöñ’hû%Ñkb½râvtIF%8 ˆ,»œÉúš%êЄÎ×j»~ VGY÷x¿mòé Rïs[.AŒ). ’÷¤_´Äá#Gꨲ\÷ûVù} ax U¯wôPÅM E6 ­1#âÍ€Ìsëä”­¢iÇ‚+¾·Dˆ< ¤¶X®€) ý|ö Ù†³_„|‚èm"Ò\ˆ^’§¬ / òÀ¥­÷œF"Èœ’#G, AJb\Hðx GzÅž„‰Šß”6 ‘'d?9Jê€Ð8tŠŽBÚ¯ÄÉ&|J#dÎéu€$ºA3‚”L´‘á ò ½0áá@q_Z‚F[rZ\©f£´gPæCùêGHFDêj@<+ œ<ÆŽXËç~ß®@Hú=¦š”o5l5MSH§" Œ°1G§TKÅr+ëî€g¢­;&›!”ÙÊ. ýV 2)Ô(Ô8Þ•÷%‡òI[.•—MMe¡ü c’‰–#ÖkÉ^[ºä>?¬‹Ô„ú¶&ßµèQÑ•{ïçt/ ¼ÇÞAGߨ9½4}d%HçéÏq÷ýˆ|øò1°ë½A^Ó'‚ÕÄdºK_AL¦-ÄdjÈ1™2@L¦†z€ø-ñõ,Š·‘J2ã4Áò7…«)ç\ÉÜ&’mµà¹+?б+}øÐÛ1bðPÍË_ÇbNyÕRkñž¾ÏT»gq¸£6hSíp—F‰—šEñJÏúM"k>¢ë;záâVvغˆÏöŸ»1cCnù@¢AÓLmT]±ïŸ¾QM»ÜÝûÞ¢ ØÑ%@@” SqìÒÔ±[–Øà¶dÞÿ€ ð,ÚfU@¶]{sÍtéæ«¡-—‚IŠ<—¼'ý¢%šƒö¯uð¨ýF­´ˆ†OVÓÔ=aq@ð+7âS„x¿ã0l¾ynœ²Q²ì˜pÅ÷–‘'ÔKÂpˆ ý²%å÷Ó:°ùHé>¯s<‚¬:xÄ’„üh"¾/Ðì[ÙAê¦}@€ømÜæ<Ñ·B}Wñ›µôxåŽVzðÙïÓq@È2oU‚½_=b¹MÚ ÏÔŽW’ rp7hFüSXP[YºU‡)ÏÐ ÚÞÕ4]ˆs d,‘(‘V€Çr ‚¨@] ;<}ÿê` ¬Š£y\z. )’,Ç:Å„~¹1@"ÓÝäÂN~‚Ä­ß:9¹üyâBt(?R‚mËçè‡Íc5ÀG 2)Ô(Ô8^™÷%òK[.~Éä•óB²É3e9Qî²ÔHg¿Q@úÄ,÷è Ýï®ßï±·CÐíûôsuþ‡q÷:ìÝóÝ ƒ|Ü»I?Z=@¾AΕCÒU–&Ó¦_Ädz› “©!ÄdjÈ1™2@L¦† “©!ÄdjÈ1™2@L¦† “©!ÄdjÈ1™2@L¦† “©!ÄdjÈ1™2@L¦† “©!Ädj¨ ˆsë¿Éô5ˆ[~tÆÌ–©X3ꘘL׎2OD?Õ ÓãÕÄ9 ‚Û—8²ýØRf˜)XÈHHP“éi:AP9Øþ=÷‹¥2æ¥4¦‡jwÁ€„Z\B% 9ô ¦ÇêÚB,Iˆà‚ÄöEb2=F〠Žò‘¿A ¤Ø›¢R±¡¦·Þ¶É4¦Ädújb2ýw &SCˆÉÔb25d€˜L  &SCM@œ[ÿM¦ÿ«q@ÜV’¼8b¢YÔ;à:Q94’C¦¬€û‹•…Re%¢šMDWh{È/kG©ÅÈfÓ™Qc­;ˆê¯¹’Áf¨Ž®®¥µä—ÕÄÑÝ4ë\ÚƒÄ!ËbáH1§Ñ2LàÒœ¬Š_ÂíùRòŠX#ˆµC:8¾–8îàØ´¦ßÔîœ"¹5wYäé¹LúeWK—‹•ð€t\TIEƒ…AÐDe†¸–íbŒ¼U:€|vy©Lòv];)ðsFùèç¡d/GÒ{š 'ȹJ·Ê<¹U5xt-¶™^¢#€Ü®ç9Úófdú]uù]±Xô =pJ¦ßÕƒ1™ž'ÄdêÈ1™:2@L¦Ž “©£ ¸ß°DµL0õ‘µ¬ÚXssÎ…{LÁåÂb±;V1 yòŸË¯ “¶¡Zµ®*ű2Ù Éå2l7¨;ì4H¼Ô$J¯ÃR™µ„kÙéËÑÔÇw¤œÖ5 KÝw |úÑ6áB{¹VOV|¤Fs:ìY’¿WaϽ°¤+ HJ¾ >Îá{^oH¦äR]jNÛ¥nd/¤0šdIUçcÑM: ßbõM@`HÚpÁâ}o甌Òí Åoµ _FéU;@i‚¬“be^oÆ¡[#í iQªr"åþNêÄäµ€ÜA6‘dá¡ OR ¥¬—x*ß© £w"¼ÿ­€ÜA@. œD Øî„Ë £ë€ÐÙ2!.áÚ6X‡q® ÈWl±ND(í Rí­ ZÀ æŠW€”KÆ“ ‡A29lÕɼIT8|,0{qaåÀ¥í±ØëÊé„6H–¹ÁÿÈ)ȤP£4PãÆ]Y¹˜…²áb [ãíF*‰IªÖ[©6?Ø>B@Æ`…–ÂbI"A–pËÓ¡u+ üíE@–Mƒ¹±8`€‰ Wa?Õ˜!¾}( ç©#ÈÓtº¥ä€Èx²k¡A¤¯1ÕN‹4€÷r"‚¨@ ¡~‹íõn©¢Þu5Hèiš„½D¢™”Ó‹Ô›bàØîý<ž)âÉ¢“Ë÷2ÍG9ƒ( Ô8ÖŠ\tY1 Ò²¦ Vœ–J™IÝ‘qi7ó¯ãW4d õÄ}æËþýÅ€¤G˜„®2ã4 î’‡_lþ W5Ädúj &SGˆÉÔ‘b2ud€˜LÁý†í$JÖ±Bb·dm?ûssÎ…„ç”$åÜkå׿IKß´ÔjùzNk¦]m€˜<5è/jx©I”,DÑ6k‰ÿ; ƒ¹9šºp©Évs¬É[5 H×L­Ôc¥.7áá«bNX»8@é:yíZi@;c#”a³ežJÝ€O·2³:FÐ8€«S€¤„Bj«÷ƒ ë51Ågé4 |yt@¸ÃÍ’\-g›siâÉ: 2ëB«è ˾bþêrgX.sšI5 >ô&ï{;§lMBÕ+¬ÑÞÏ——§ë¢—#ójqï'uÏ‚Czòª3«QBô)&£½—v>Ý Ú"SǾQ3ħۡü!ÄÁ²L?ׅĹÕ KŽ8¢t,9èQ@–úxrf¤aº9´Lx–$E3Äçû%@ø|ùR“ĉµX™|(Ý µaU@êSé¦÷D#”ÄÌPäôWWaXñ®›L2A"(í ¢½Bu©YR²þ¦ø<ͧL4¾!K¹,K¸/“ˆT}–Õ”öó+9)‚63ÀjG ŽL¬ËÜ=‹¦K}j™  }[õ¾ “dHZ°9EMì°RI¡Fi Æ¡ê6—…MlwF6í÷Ÿ÷"?Sµph1îãŒ>ß)V?¬jŽ3GÑâhƒƒúÑtï7è: ã1np8~>ýT—wuýi}f†7óãžÐÍc~^#@L¦“úŽb2}Dÿ+.ˆéWd€˜L &SGo÷¶“(YÇ ‰Ý²,éZï}9çB¢²œsÙÔ5,“ 7”IsšoÏ…ÏZéebÀLÄÓ«}ƒ_ÿFò~¿µ ÕªuýÒ:bIP±hmô¯x ñR“(Yˆ¢mÑ/á±úHÓo's®ªXª ¹UíH¾WWO‰[ºá\¸ OÔgM²›ìŒtL*aøÔ  !2?Û•oø@¨£Ÿ„‡¸Hw9©Ë[–¤Á9Þ'Í…w'ž¾d*€œ$%-¶¤=–°3¬.Ö€¬×pÞ/ÄI&• €ð3ˆ H6ù, M¯wüÔ!M™O:â³}@ø!@s{6@GF“í¸‰Ä^4Üä}ïhmà éð5 iïÅ·ÑÉ k‡ù:@þ,‚è9ý­âHöpé<Û)´:… ‰¬ã`U˜iO3$’qP?‰ü€‰t‰c<)í Eä—iøî, ¬þ8 Žú½w|½Ðif5 Žs–+El.RŠXAA€²ß¿…ïÄ1÷å9èÔ±O7G¢ ˆÞËp„’: íè6J]1ÝpÓ¤™3 *PÚDÛF©N¯¦§h€¬ÿóþk͒è–h&ìÈX–%Ü—"eëAœRÍSÈu"¢¹™TuZ/!¯ÕÅæ¼g¹z<ÞN¶Ï¶ÀKË[šäcƒ"…¥‡ÄªÆ "‹:F…,i+¸3²i¿ÿ¼îÛšph1î£!76ùV„j´#»E?šþ`Guñ§q†ˆª‹/æ/øÈ±…é/&rP#@L¦è­Ädúj &SGˆÉÔ‘b2u4÷¶“¨ž µ[Vųó“Oág EÏ´]þÍ;;Üó­ò³óñW¢Ö­K…u)”EF¾àߢ@â¥&Q]ö^—ýÒ½¯iï<ëÆ^ûý@<´g®Öad¡b€­1ª¯Ö"ÇBH¾Æ„ìKéã'~÷ü^êKa´ ¦ü ™íHƒlá‹ ¤Xá³™ p=Ùãf\¶°J°|ïbUN>Å¥Ó€ð7S¢Ç@‚ßËe¹\èµBÅ’7í¼ÒÙ£ñ¾·sb–p¾.ˉƒ}uÞ¤›"mwh»=$áŽîùÙÂûF,jÚ„å#t_ÙT¹=ß_“/#±|ûÑä@Ä×EdÙ4š\è*ÍÂûð8äÎ]@P+àKûJ]ë—§Æ“¨…‘Žâ_ ȉ¢¥ŸA$¨­1…£ójÍ’÷§Z¢™Èy‹1pl÷q‰{"; ¾Öesäó—uÿY¶Q@LÔ¥]ðÂ2Ð#4ÍGy[Z- ! ]H y$Û©¼—â«ûå[¬ñbâõœpÎL!ë ©Åg¦ÿjúºÈx äÏô‘Ù¿=Ht5Ädúj &SGˆÉÔ‘b2ud€˜LÁý†í$ªgBí–¬íçhv~ò)ü¬¡è™¶Ë¿yg‡{¾U~v>¾óJÔºu©°.…²È Ú½V3€ÄKM¢º& ìW낳ª=~çGbÞÿ÷È5 á¢ÖÖVÖŒ"•,V ÿŽ ÝÕ GçÑ0&ëùBP_¹Ù‡ Eð#·x96t’`A@Õä[u¼"ˆÛJ G:?÷ȵRn –ÞTžÉŽ9$ Ê&'÷bȸ€À~‚¸Â‰&ºl²â[òf†ÙÅÏâ0Aä›ÑIï³J÷×A †{Ûj©‘¬FÃR:(?2»AˆZ™“°„‘épÞN4ºðŒå9ùƒø˜‚Œêa1bd “ü¶ ª80±(Ù¦,oëdCÞ½2G®\B>G8C*U‘cPÅ¡2ƒäÅr¥‚@“ ¹AÆVþ½8OžMÕLÄ”W„~š Ä ”ý ¢ù€ÅO‚Ô’òS«7 X×ÕßÜC!'ŸɽÎÉ¥“Õ=æ4 ˜‰éý"@6æ‰na~ä·e9X2„‰þÀóõ˜@É.t½¡ïá)Vÿ„x=Ç_à ‚óKHØAèñšåÿ4Ú8Oþ“ ÃKVÿë"ÑD Æ$ÈÄD“  L‚LL40 21Ñ@ ènX/Š>d51ãºÂßßê¯hðWШ¡™û¥g9Øî‘/®‡¯ÄìC,Û*(-·F=ÂŽoŒ‚„Ë,T#jߌÕQd+ Ëñè<Æd=ÿAê+¯ô gDc€'$)À‚ˆ7µæbH@þN;àñs\+åÆ`éMå ™ì˜C² lq"Ñx/†Œ ì%¦dEQ4F¥]n„Ø‚aïyZM¿ ‡ "%Õì3 2«uͰ\Xëm µÔHV£a)”ƒÝŠ D­ÌIXÂ1‚´ÎB¹±C K}1(vüÔÛàã2Œ¦Xݰ‡12ÐI~[U˜X”lS–·Àå ’7Ï…ä^ AB óyù}øR‚„P©*ˆƒ*•$/nD $D±"ëgÅ^‚@1Úáô÷7fHuC£kÛ)½¡å³ÜÈgà_Á’ á2‹ÕˆÚ7cõ×ê(ÒÆ’ ÿ&AFì aiô8‚È–ÊóÃhÒQ¤»‚¢Q¾ÒUML‚h ˆ7ÞÑ ’2`5G¹A|W: R'ˆ|=Ê$dXP'¬]™Ñ jeNÚxWº?¶ˆå¢º?€×)ˆñ~VóÑD$ûaÍOÄiŽ$‚5‚°Lá§qXAÞHx…K$|€ÿ鱃 P{ˆ#ä·QʼnEÉ6ey \¨ J:R#Ûç¸FP@6ä‘YÜ›]º£Oýyô^V&ATM+œ&H•ª‚È1¨âP™AòâF¹VAøŽ²À¾¥¹lKNi«R ˜Š‚|ç„Ö«õ#AÜgHû B?M bª—bÅê ‚ˆ ˜B^»A$J¥YX&âC äo Öß}Œ Û™é3 ¹×99¢t²ºÇœF31²_ÈÆ<Ñ-0Ìü¶,C†R†²–q¥š(â•MÂ(,)Ói›®‰‘0º³¾<áÎõBt¤ÏßÅÿy7Î,!aA¢Ç;–oìï‡ý¢£ éÏ1 ò1\¿zëxÿì™ÿZôdbâÑè)ÈÄÄ£1db¢©  L™˜h § ènX/BEîÛ¬+¬®Xû«#w#_žƒFÆ‹FÒÖð¤îp…«úW‡!ê-ÊèB”Û©vw~« ?k(Ûò~è)æË,Ð(d›Çê(â9Ò]ùk( Ç°+»Z£ÙóÉ8 AÂiâ/jhô¨í<»>(‰5nùatãí A„Ýš‹.AÒ–»2ÛSdM|JÇ&<=ÉÛ³ƒÕyHÎ¥ñüHüH§|0¨QÄ2˵ĥóÉ5¥ªòBFXÛ¯A ù˜Jð‡}ªÅ “ iùæ|"ûIKoŠ‘5­‰ÞŽ‚Ô ¢l$¾nès«q‚„¨ÌG#¨ƒ2´˜§gª‘Ò0‰®$ÄÁlŸö$FI#Q^ˆš/±Š‰ÚïCS÷F£îpu‚°„øVs´KÎ(ágF‘´ÌÃò1­‰ÞŽK„À1šbñ31Å’ºtQ¯ÊBè§,ÌoÕQ$~Š´¶<~õ†<(¦Cñ†x Ë4Ht‹Ù!šPNÌÃŽyÑ…7±–Ú|2̵4ßGC?* ­[r¤”¨Ø@]‹ ƒØ÷×¼±ŒÌöP¸»’Me¢w££ }â¬Ú¶fÈ`ë«ðºÑk#Ùq~V@lkßÕ+ñ)‰è £ éÏqü§›ÛÛÊÃÏãU£ïç’õEüøˆ>ôÑS‰‰G£§ ÆT‰‰¦‚LL40db¢3 ‚þŽX¦¹eXµî‚¶kÃûø8⤭áÙ_B̀䢨2Á ¨îVZ_±ÕƒØØÕ_Çá.‹š5êâ$Aä}¯×é@Wk´æ|<¤‰]ÇÐ $îÑ¥²ûÃpBA¢l§‹,”Ž„6°Âßúºnÿîaí.œŸïQHÜ}»±¸ÛjáÊ–$OÊàç.J}”º‚#¨QôRò‡²æK~¤à8CZQŸ»NDlîv{aN(ˆ8VP·¡°+˜aÄÑÃÿC—!"ÊwÆÉ,- JŠi›ŒT}ø².±”8J‰² Èù¢["‘çÚÙ&ñÒZLa)€êî6ð 9« 6ADÒÕú‰×€„XIǵˆ~2<²‰>Mb>ÕöûÕºæ*¿þJdßÿ}OU’.Þªíav…‚I@É0H£'ªÆ“S+=Ñvô(ˆ~Àš¥†"-çB«ÄÚm È=¡z?A‚2ï#ˆQµÉoG‚&M»þ#‚\¢ l‚ð1‚„ÔÕ Hð bÓºqÄRþU‚ØñäÔÔ$47¢­ bkÛshÿ;‚T\U±’(Cü¸³•|ÉóÁj9\Mg¬¸Äq/¤3Ò» f‡Œé)-éb“µ€vôäŽ_Yé-G‡ ¸ãɉÙ(»¤vlʾv”fy³à³X\D}ŽþYPöÒñ÷¿â½;íçâ6"ù)}‰€øW½ÁŸÂé H{üǤv’ÿDœÏeíàGŽ(ÈÀÀÏ㈂ ü<†‚ T0d` ‚¡ \¥ ¸X®Èe¥Š8M0-ÕÔ=,EXëƒ1BO<2Ò¶Žgh†Ë ‚3®Iµ¬BˆÓ©Ìʹƒ¨—Ó¬nf‡,Œo·5ô¸JA0]n¥ e…Ê7aZ(²r¤9zX¯®„îC.ÖŒš¤i§ýL‚ˆ«1)³N{RØÙ }«ÍÜ;)?ô‚(»)UM‚.€·ÄYO–ŸK“~ñ®@ožaµOÞ«‡æÇ[#Ébј2Ššf>šj>žÍsW«üÒÇ¢†Y… HÒ²%Ôeº@]ú¬Aò)ä=$ÖÔF8ˆ‹¤L;oE„"AâÙªŸ 1+ILb&sKôèNCB:&ä”CúE1Ó´s i"z<¦ ‡dœÚûÐÄ,Yo »¸²“òxÿ÷¶KqœFµA&IAï^m„£x”‚Xû|½G¬ ~ð^¬™a;Á¦Q mWDg‡”­.AÀF1}ÞÝñ.Vö)Ë#ˆ‘îÌZbq³NMÐéû½`n'(¿#ø¸‚T ²>Ô¹I]9%²–ŒÑ&Õû Rš O(H5œ¯ ê$JÓ2é«:K " sÏ)áp÷)f¯~¸™¦ …ü ¥¤l$ø±im ’EþU‚Øñ®U3_ÏÁ'ˆÌâ>‚d9ÝAq~RÁÐë4Ä:‚+$}P9•Ð )‡ÔQVL EèS¤Ž¸ÖôÕÏAt¢Mè‚ ,9¹ÑÍä@&éqÄ.¯:!óàÌ¥<žf‹’ÚûèžÌé ®]h$M¦Â¯Eù¥¸AAHæÝEWFGbx‘o}šæÿåÇÔ]îï$$K9"íæV¼’eÐ;eô[®À÷ߊŽ`¢Ø©¤Byã%Ç`;`7Czù±› jqçâ«sƒ‚¨mm*»ŒAz¬ÿÐdˆ:©­1¸³¶ ›:¶éD Å(z*…#…”‰z<öcÖ…`mGÇi3$~WŒ¼N4å²€ßÅ»Ä'ˆ:´’º@› tuHˆGÞ®Uö‡ 3! ºg ’gúhôDµÂxjn¥GÚŒ> ÅÉèIh(‚Ðr~Až¦ ÖnAŽ(ì!Õû ”y'AŒ‚„nzDO­l”Á*|!A¥ l‚ð1‚„ÔÕ Hð bÓºqÄRþU‚ØñÔÜÔ,4·a»‚¾‹ÈÃÕ·ä&!ÁUÐ+‰2Ä;[É—<¬–ÃÕÔqÆ¢Ó´N’&A‚¸ªFæiö<òZé¤áÐÅ 3!æ‹ üá;B-!° km¶£u1¨Sm\뼤;9¬&å¹èMó&WL# b¢×÷8 mY­f‚ x?wnŸV%&w;ëˆAÞWaîS2AìÊk‚ xG{ bVÉ›ò¨Ëάƒ•8éÀêñ”«:<–ÆÕƒ€*§d-ëvqe§y0ýbÄÓš…÷â­ã&‚ü„‚“}ÑÁ#]L¾ë0­ß ±“»“l‘DûÉ£z)LÙã8z$PQ6õb¤ƒ;³–Ùxô{M÷4]èŽ ¨úI¹ž "·ÐƯN‰m°äàÄ<4ú#H«Rßã0z$p¹ zEõQ-CÕi"ùï5÷ýmÁìõå&"âöo´ Rš‹!”fñBa³… FŒ>F‰Ì`‚¸„ª±¨Ù&H¾,(ï™ý£œL9AÞÿ…|¢‚(9´±$~ÁåúÉQ"¦iZË©"¥Âu8㮕>*ÉB¤ Ô»~qŠYë &´0A=|æq:NX$2$5Žƒ§C|ÊÖѶä;P‰r­¸ô_àM\82c)ÿÊy–‚´wÀŽå?wí‡3î‘©l÷=ûÁ{>AŒÇV‡[ðç¡`û0é È 1.·uïßÍ·{ž¨ûñü ¹Ö(Ø>MA.Ç7+ÈÀÀ=(°f(ÈÀÀŒA†‚ ÀP*¾DAp)°\‘êjùA•°›¦‰®wYÇëõZ+§S´óÞ¥õz­Å´¼²×FÌG°¦nìsÞ ‹Tíšd]ˆz9Íêö ®8 {‹,Øluû‹W,© ˜.·R†\¡Ó1Å Zôxgš©é·nÛjÅþ—r2ÊÃít‡}5üo$HWÕÈÀ,玄ŽI˜%­9ÂßLˆù⨠ü|G¢%Ķ_”ïîíMÉC—†½ mY­f‚èMY¸E P&Q:Г ¤ýÔnÌœ ïëq R&ˆaM} ;• /“™/>>±µ$9Ôù§D}˜óg%‚€÷ „P98%«hY·0°‹+;){AJD–’Q: ÓË#x1Kù 1íËÄ„L/ å­ Ëéyˆ‚*ʦAŒtpgÖ’™o;Tn¨ Òt ?æ·+È3²`AÀIp;ÒóÒ£ ËmÑ+ª•_µL2«NIù£gçßúÁìõå&"ân‚¼T&xÙNNTÙÊ´æ"Šª^ÍÖËÎâ9 ™Áq U?bQ³MÌ:½c”ŸëUL- ïÿg*ˆù¤ð>0Hií—›~Ñ ¦iZË©E>Ù¿D2¾^*µ×¶î¤ã“qß /ï¯D-ÛY ‹0™^ý Ò>a‘ÈÔ8žñQ*[GÛ¢K¬1Ý›ó].¼°H~ÈI‘üܘoBà‘Kù÷÷<ѹí4-Ú1 ¸l#¾7Äzluxþ<TvèTh ²Ðcý‡&CÔ‰)•aÍ” Z”ÕÂ!P:9îœ"AÆ Ptà`vF1©Õ¬ePá†ÐÓꈕLòsW×éOM­|7šrY@ÌWUçA4qÝyÝQÆD(:p°¸KA|‚¨C$màðÄ„® ñ÷~MJœ&AxïeéÑÌOO̲Mßd‘’U©4nóäq±‚èÅ5¡o„>[\‚äz¼Ýxœ‚X» 9¢ à)Hæ°]A|ÌΨLÒ“ ÈG<ÑwAät·‚ø2ØN0Ÿ*nRR D[AÖŠ­OòI—åý¿þXº£G¾ï‰o=Y®UúE}¹‘s„öÒ˜ƒÄ$J1»EÙ¹yXJ‡¨Î“ìŽTÕû»ûêäʨ€XÏ¢×€–ˆ @«MkS2ÉëŸW\$u6@Rùq2åay((Øaܤ ŠÊhÛPÙ¡,0z+xóbû‡.CDв˜lÌÈ5ÑbUÁY‘~GÙ˜ï2±¢h¤1=^0£N2¨p(„#ïÑãÛn‚è|Ï (WÍ—…εAê¼aFŠFÓsà`q§‚øQEÚ õÖV3– ‰âmì ™a¡h¤¤ê„”¥G3fnìÄ{¢,R±öå; ya?A ¥¨·ŽE#” ]‚°²ôF%Úi‚|BA¬Ý‚ìPPÙ2aËF¨4žUY·¼ÚOï)r§‚€Ê~°ë^­h<« ¾ƒ vÏ+› x¯ë2‚ˆ£È4Š^£¶TiÒ!HT9­á$æˆW$¦Ç.l÷+ˆK(§MœŸ@. zÚR¦{ ¨¢Ä'房WAò•(@‹ªú+LsÀ÷Áj=\-g,Jæ´Ôô}›ò‡Ž'@DaÉ›­sœ‰Q”Éò-ràŠ£9K?³çGÑ))å?„xü>ùÁQ<W‡òÊÉh.¹Æœà¤¢(“ ¨ü)+Pqà`‡q“‚ôI;0éãåçÃp–|Ž Hö8þ®Îl׿7)ÈA.ˆQ…»¼£çð¯ÀÉG=Á3Ûõ/Ä] 21ñ¸KA&&.Á‡ÇŸ 2ñ«ñq‚L™øÍø8A¦‚Lüf|œ 7)®7¬d×ê¿—e¡ëuo#„°N£¨—­k-„­‘£˜šC¶Úˆº¯t75w Óˆ¯¿ŽEŒ¢¨˜8¯C§Õ3Ô«;ˆ—ÓOºÒý;óåÚÌíÓoyIôèñJ.SÒo]·-TKíA9™Fåá6ºÃ¶,‹`Ï$nW*F¸Rd ž]×÷çMˆ÷Å7üAºé´$m5JBàAl=P¾»Ý»R†®û!‚ôd³:D­ÄmáVºðúñ¹ ç‚l$YIÕ·5–y]C} nRŸ BV„]]d.%H0©øøÄT“äPGžAôYÉŸM×R±.%HŒ­“[%ÓŽ…AÊeàüßZ*ˉ¨÷B–X¦ÁÇ ò ‚ÈFaWDn9„KÄ„B/ §ª Ë)‚4Øòi‰tÛ¥ oH%ÈMFÀ¬¿^â¤'ÀiÀî'Ès ¢U 4Ñ/èN‚¬8@u/Aúâr AF$òýAòÏ\ÚÏI»A– ¢‚mÅÇ ò˜‚z‚-“%á0A‚J¼,Á6rnÊZ¡5DU„nÍN±ü”‚$f0A\Byß ¨–Ì#ˆ{‚Pç²V”yýwø:Ü© â# *‚«M¼¯:Ʋ,Û}éQ„óAd#KQ¶‘ŽOÆA~ƒ•ïtàò]‚¨¾Zí†oþ ‹D†¤ÆqpuA.ªB45ŠK&&ypÌ!påÈëýçY‚Ü£ :·]ƒ®E?FWó±{nÇÇ¿IArAŒ Bøÿ)òágø5ü`mQxpü»dbâ|«‚LL|¦‚LL40db¢©  œQÜîˆeáš‹µ¬ZwßוnÓC5m^q®õ5ÆSF=“HÁ¼ÑVÇmMÐëB¬®ªíáµÕVÉ8}ñžÇA¾Ù¢f\ˆ–ƒˆÅ½è¦Þ5`ØoÈýÉl«cCÇ=A7 ¸=XZº'Mc¼ÇqBAHÞl×…Ñd­yµI‚½±,ïÿõÇÒ¸ÚØ×ûûF9À„I,Ý©Æn[L”r<š— &÷dªé-\ Üa‹M0Ž£_Ȩ€XÏ¢·€\j •±ª¼ââÀ&Xº‹„È1ÁD)Ç{'DÑm*;t ´Yé±ýC—!êÄ”ïqË”(j”ÕÂ!R:9îœ"QÆŒPuà`vF)©å¤eLaŸGгŽ`ˆ©[ Ív'„ËUÕyL\w^w”1ªìaœUŸ êI›8<1¡k@B<‚¤½_„§KÞ¨AYz4óÆÓ³lÇOy gØÖd8öÍ ¢×„V¼Kúlq P:èñÇm bív䌂€§ …Ã~ðd0;£*Ajr† *x ¢{Aäô°‚ø2ØÃ¸GAØu׉&a£I…Ȧ 4sÒOs† EÑž ÇÙ« .¡:A“°¨Ó½Góá" |‚ØñÇYÉ[¢-¸êë¬øfËß«õpµ œ±ÒóÇlLÕ­-æ Õ9ÏP·ã©f+Pqà`4/égöuÑ'%¢“Ÿ(xeS*È(?8¶çàêP>?åÅÅ ¶1i@ÝŽ;§ƒ­@Ń=Ž Ò'ôÀäá|øJê´ƒ äñ·ßà N(ÈAúãO‚€# G¢\1•¯Ç™˜øzœQ‰‰¯ÇT‰‰¦‚LL40db¢ž‚àvG, Ü…˜‹ªuq½Å­Üéú‚®‹z€ÖàeÐî\L†a# ¿ŠÖ$Ü®×JX'4¹À˯­Zü Çsæbôùf XX'H¬¬è€o4õÖ0C†Ô¹“WÇq” ±9§srïšåí$Ç!oËæs9: BŠh £#ÈZ±õÉB>é²¼ÿ×Kwr‘oÀ{â[OÖŸk•~Q_n䡽4æ 1‰RÌnQvnAc–G€Ò!j…³Á$»©¦·w÷Ô+µQ)\m¯-€V›צd’×?¯¸Hêl€2¤òãdÊÃòP:P°ÇÑQEeUhiHµ\`.ôVðæÅö]†ˆe1Ù˜‘k¢Å4ª‚³"ý޲1ßebEÑHcz ¼`Î9Og¯û &»ßvDç{^@¹ªhÖ¸,tŽ ¨ Rç 3R4Ò˜ž{# âDiC€Ö[[AÌX$$Š´±ƒf†m„¢‘’ªK P–͘¹±Kç²FÅÚ3”¯hÞCØOH)ê­cÑE#eC— ,@ ,½„Q‰ö1‚œQ Ñ5F *ûA&lÙ•Ƴ "ë–W» â=äAîTPÙvÁ«gÀwÁÆq¡r?¸ƒ âì2¢×¨-UštUN+Bø‰9âʼné©=Û½ âÊiç' ˆ^£¶”éÞ#*‚¨ñ ‚9âïUüA% Тª¾À Ó<Þû`µ®–3%sZjúÀM Dç  ¢°äÍÖ9ÏÄ(Êdyƒ–9pŃќ¥ŸÙóEŸd”ÿ âä÷1Èã9¸:„WN@ëtÉ5æ$'EE™l@åOYŠ{é“v`ÒÇËχá,ùÿqP@²Çñwõ‰íú¢£ éq1AFÏá߀³Oz‚ŸØ®!z 21ñ§ÑS‰‰?©  L™˜h`*ÈÄD=Áõ†ºQKh™H;X^XïëÕDa½…TƒT Û@}¢š¼7KŠC1ɲHZ† £Ptá؆ É„±œ¨õâë¯c£(*&eêåäæÎho/ßó[ÐSÌýÌ·übš&úý-ÛÿV4èž’>¥#·ù;p#9O„Ÿp€ Æ‘!{ûã ÇbJ¦‰Ü‚Š}]‚ÄíJEÃÈÕ:µR^õ!öYô_££ 2ÑÄHÈ~‚pzåVJ7uä!Rœ¢²;¨D51Aåx¥£ppgf‰qŽ }Ù¬Žd“ÜåI`ÕŠÜd"üV=a‡ï@GAî#Èú׆"O´<ðÁI4Êk¦– &ϯ'HP£_C[''6‚ã±¢¯Ö_.p^q~ºöø€‚¬Ÿû  RMîÓ¶Œ‰"H¡ÌóQ‚è *3»– ·*D–IbjÕÉIAA*_4ÿ#>¢ pA´±K¢EŠ Ú.XK6kd»‡j3û€‚?bACAœ¾¶‚| Î+bßDŽHY?Cš`‚l'¬ A‚sÒwL¼BØ•}ãÆÌ¶É=§ ‰L—Pc±Ë§ÛóŠ uùF‚ (ˆ_ù‘»L6¤Öë>F¼=oû:íï6ûÀ}úÓbëKýÔ~ÂDÌìdÆ+G€ì«zHé~VANXIcHjW‡x©äÒ‰ ]¢R#ù%ðAíÐQþf0ð&޾«s»í®‘ÂScÝNã±×a £ éq˜ ¥íSxü‰&?΢§ =™˜øÓ˜ 21ÑÀT‰‰¦‚LL4ÐS\o¨ µk¢Šì—ë¢ë…«ýA¼ÿŸ43ª»§*ëÛ;Ì$iXYðnÛ&Ž”RÇNù’öEåöÐFű vÿë ´ç¥&#»“ªO/bŽŒ“´…h9ˆ‰[8»øndH’ _áFû–BTØ+P¡Vùv®¨’2¤W Öoç­)FôSmÔ~4õØß§á \ ýÑ¥„À€@hàÇÚ ©•W£ß@ô @œ#8{ I‚/hÞV Òpa÷ø ÐÄI„¦_¢mUX[›9¥¡•ÆB)š¾èsÞ¶.rò'ÑrúÄ$m[U uZ6æ"ð~¢/)8ˆt‘L Ûß D/.~šbéŠjmk äm1& )&âfX'QyÛªp¢ ú’vßYÛÒúèrf¿:.Òh×âØž¸cëÙÂ2#̦üJ$}AQ-EVH·>â¤Pô!ê*Þu¬`tØD› yËÒpöç¡ã¾Âña„ŒW@BÃA:Ҿǰ@ÔØ@Í[èã]ZÀ¥i9—@…§"8  ²›çÀp³*"ˆ9vF4+yÒq`qÛŽ?éx:Ûù+lo`režGçòb/_ù£ØÞ籕WRj3²;©ºqCyyd'­«ÌL@üNã.þp’$ˆ÷³ÿ:ìëtÎÑalKç Äêó'/·ÑOµ!mÒBAÇg« endstream endobj 124 0 obj << /Type /XObject /Subtype /Image /Width 26 /Height 26 /BitsPerComponent 8 /ColorSpace 540 0 R /Length 102 /Filter /FlateDecode >> stream H‰¼ÒË €0„á…)d¶¡0%lÿÕdPôìxÓŸ@ ß!’i+³Ø—ŸI¨F´Z×4ITÅ™æEîœÀ h‹0žæ]úOè>â`ó •< endstream endobj 125 0 obj << /Type /Page /Parent 676 0 R /Resources 126 0 R /Contents 127 0 R /MediaBox [ 0 0 595 842 ] /CropBox [ 0 0 595 842 ] /Rotate 0 >> endobj 126 0 obj << /ProcSet [ /PDF /Text /ImageC /ImageI ] /Font << /TT2 838 0 R /TT4 840 0 R >> /XObject << /Im19 128 0 R >> /ExtGState << /GS1 843 0 R >> /ColorSpace << /Cs16 551 0 R >> >> endobj 127 0 obj << /Length 288 /Filter /FlateDecode >> stream H‰lÁNÃ0 @ïþ “C½8ÎÒ–ã6@CšNˆÃTecb££câ÷q:qAÈRdÙ±ýÞ,Á$¥€Œi-µƘԎZaJÞ9Át7ö†-LnŸ·'pä\ÀÔAU2]ñ /fa…Ä,­ÖÄÌm£ïýXZlMÑtý1£P$g+–ºÑý¦²ÌTd•VcÐÛÞ> stream H‰ì—‹b«ª@KÚîkÿÿ‡ï‰Qœ &ê¤u­³Oj†–`>>bI7€P>ÿ“0ú9€‹ƒ„ÎCÂ/€(ÂABØó‹#Ùï¾ÂÎÜÌ»žýîkh ¿Œ±ÆÏÑÔÇ…ø¶üÍEóݹx%ÏG•bµµ¶O1­vØît)]¯  ÓL‡„ßß‹…ß“„Ù¿åBß.Åf±Ìº©@n ®±‹Ý’³Ò Wè“ð~ýøôŽa¾gµoÖ¶¯[þ·Õww)¿"á_¤$áôEî„wÿF­„(‹ƒ/Jx›fq™k~éãýk©û¥¾×üfÎþüÝäúâ@ytx3;³MI&w[RÐC[} ¹~ÿéSªK¨ ¯ÌmÚåæ}®,á£4¥²„_ZÂ|:Šo7µ[Y ¿dqP‰_ ê®ØüüÍ5 ¿jDZìΤâŸ1=ý6a¬[䇉 $áŒz'Ì{¥•ðûñ³dú]r)6„p DZQnUÂØìúå´VsS}$¬qûT$ûÝ×ð?L^"­àk !¼HáÌòðÖEŠNþ&“„U !$„p¶K˜àŠùóõ ?ázô)r¢„7¸Há !„s¢„ã+èGåIUÍޝªãŸèÙSè0MÉÞ¥Ú a9²“pT/°ðlÐjÔðE ðBœ.áý@7P½"á…Ùtß­Iù`^= ï„9Ê£)!ï„—¡G”õQï†F£u §ÏôÑ'áÝð"lÛ vH¯³YBíÝa¦ñ^‚­îvטÜ_ÓwÂë°IÂõÃäc㓵ªYB¸}Š< BHá¼›„foË{IýLB o%!ÀÎ !„ƒ„Î$ágH‡ð0õ,üM6Ið2ÿŒ)Kø?€Sþ}Ü$ŸBÂàþÝ…SG1ÂÉ !„ƒ„B8³„ !ŠI”B Sš,DB8ŸQ”f •„ÓíÄÅE/N•&IKÂ7y¹`'8$„pþ}|*Nç_2 !œÍ¿ Âéü÷N(á8†óᇠ„ƒ„B8Há !„ƒ„Φtd‚¶‹´ÚÝR!¥õÚKÍ=âÀ3´$Lņr‰ÏRvџϦÄ"àÁ4%|ÌÿÚ¢ŸÌª„k57…ݶÓ)aÞç½1ï‘¢`p—fùÄÖ*þ¤©¾,J¶Y¾dÙ“Ég‘íqû¸gBë"G6òÈîåüÀVÞ óBL‹ZîøKsùl‡ª”«Î-aü¿‚½ùORièoª²O^‡3öùÊÕãXvúxH óýôJ(7ÀA” ~ù ±h¶l\%\Z¯<J3»µŽŸCaŸåˆô²dÉfa5ÎÔzð%n~ ›•ðiÞk%öMæ½Æö¸„„;'óVcû !á›I{§ófÃûµtó¶¦Ì»„½x[ á: !„ƒ„B8Há !„ƒ„NKÂ4ÁÅE/ÞAB€S`'ä¢zñœB8Há !„ƒ„B8Há !„ƒ„B8Há !„ƒ„B8Há !„ƒ„B8Há !„ƒ„B8Há !„ƒ„B8Há !„ƒ„B8Há !„ƒ„NSÂ42pqÕ‹“`'„pÂAB !$„pÂAB !$„pÂAB !$„pv•0¥ý|!ðj«tXÂ/tú\R!CÙ‹–„i¤7ROåme»µ]­zj<‘Þ4$=²zœµ^âJÓ܈êkŸlts'¼ç²%ŸŽº; ï¸0Ï=#ÉíE‘–®Ï¯0?+ù!Ûø´é*÷–IDÎ]Ñt+Í­—;¢N1 i¥’Ùè8sñmhô•Ãd ýô”¶Ó©šÞ!éÙ°‰Üäì·áe«ùˆÈµµ=’þPL~¸ÑU=Ms ЉVƒéyS+Ÿs¡•h”&aªŠAM}†"aϧ]Ô6«æã¸‡ËDöù˜Y(NïI¬H(žPõ Åg¥#÷¢CÍF=*Ÿa¹ãe’meÊlr‘‘0ÍnÉæE™¥„&N¡×b§¢Q%Žhï*ÛzÊa#aqgXÖô %ÌYzêÛ\‹²„îŽéÂÍ ±³P÷¥›õVBo³åù¾t›Z;/å±¼²Ù7+×Ç¥§ÐçSÒ{KØx_îe +;á`fP§Ðh5[•+Ù¢%²”°–˜T-N[B—;Ž 3è×Â?\vFšùؼÓ<‡§Ð’P‡òH7äXü=‹ 3˜3Ò™c0©N«­×jP­ƒn_·‡]#C1ªÁGg¨Œ­Œ=ÉŒô(J“¨ã( Í<-}”ò1)ëäÏ¡¹œB8Há !„ƒ„B8Há !„ƒ„B8Há !„ƒ„NSÂ42pqÕ‹“`'„pÂAB !$„pÂAB !$„pÂAB !$„pÂAB !$„pÂAB !$„pÂAB !$„pÂAB !$„pÂAB !$„pÂiJ˜F.¸¨_-!À !„ƒ„B8Há !„ƒ„B8Há !„ƒ„B8Háì(aºsDŽ÷Ї´:,ß^ýZøpk´$L›´k®TßÑÄnÞèjÕSã¹ôü°ªqd寏ŽFÆÜ”si‡Ù1ÁæNxï§»¯ wKý¸0OE.LT=NkVÝ«TôWs>_Âü䨼©uJxo™DäÐM·òαÜuŠM+•¼ÈFÇ™«ˆoC£/5ª¥Å`3ôSàÇ5Èq¹äí—Ü–$UsÑÊK¸-g5™åõŽþP&]Û÷ìÒTwü4Çð}‘h5˜ž7µò9Z‰Fi²´š¡•ÊI•׌­«”|ò]ä$kk¡èÀþœsÛRª/³"áÒ·ð_Þ0™®öWCͤÚ(’i¥æb¾ãe’meÊlr‘‘pÚ;tóšÌËGž \VÝ6Õl k¶º(8£uy1çl¡›¨=XÝ sÂV„Ê’®P–ÐÝ1]¸Ù1v–š%ÖÉ×[ ½õîSè«G§lrÌM†ú.¼„ÖÚ—s. ;NÂÆ ú²*Kh'ÙÛ¨[MÕVC±Ui!’-Z"K k‰•æG¤¬–ØU6dïÛ$JÛ_/ÿnÏÙOÔ´$Tç¡<’Ä ™çú«ª 3˜3Ò™c0©N«­×jP­ƒn_·Y#C;,u©Z¥ÁW.d8È1¨";@ñš0x e¥•ª¶)g“ ^‚×iî„ð[ØÉ† ð/°×–þ~ìÙùë@B !$„pÂAB !$„pÂAB !œ¦„idà‚‹úÅÑœB8Há !„ƒ„B8Há !„ƒ„B8Há !„ƒ„B8Há !„ƒ„B8Há !„ƒ„B8Há !„ƒ„B8- ^ !$„p~“„é¤~`~Qzîh~Ÿ„éES_€W»ÙBgJqv ÓyÎù}$LžàcH6ßz°Bɶžûj¿² GäÓS75¿>Ûg©~Gûþ.vÚ Ó¶^ë#á+u//a{ýoK{l‰ùâ'å¿ËŸp®:ÖY¶V0åºsÉãCìÃv?žƒÉöòX/·ëεRá"©º?¦Né\Èí°~|òSÙ£…Nm¤:g_ÙÖÍóü“;³#­Ï†X<™¦«äêÆ>±—„‹"KÓßåÉqþÈÚúÂÞz DG–5ô²ýˆÊºU¤Z =]Bõ||Ä俹|~äÊšXՑ꜓«\Ù$}>=³á×ÉGÄpnÚs',f×Z=ÎróÖX\äÒ”#§¤Ssb77ÿÑÚ‚êùTÆ`ÖÚK(Sß ¡Û½s¡{a—Ó[©‹,Šœ„n8] ÷ö«vÙUNþyúþ|o‹B’M‘–j³sÆr$߬Æ‘PÛ>DB7¹ƒ$4LkÇŽÒ¥Aþâm$Y!¡ŠÝNëú$´?K£²([.Äfä>a1€±IHVM Ã~}šBB+S3°UòôXeyU÷ªÑNB²d´ó1$§PvvýÛFú,?¿j5a8£ùáW]-pß)gÓ|çÇõl"²Ã{‰ºû0gÚ¢N‹kA”ƒp íļ´(ýì\L°¼˜,`í]r¾Ô —…ܦ Høë&ƒŸl¦!H˜Ž!$ ü€‡$üu Ó$< º©¯y¸ ÿßÁÔ MëX¨I©_µÍ>³<Î %Ó´EOùÉ)‡¶Cb»4 KÙp€ÂÍ/»íµ,Ésùvä*>‘* ñ¨ P£*ìFCÔìÖý}Ð#šÔFâD'¼ _kØMÂþÖãp±ßØÂÇH¸ý5àñâ½iФ6':aÞ×ÎØ]ÖÎC8eô$±I ­§ìæ";ßfÒÃp|+ÿfƒå'Ô µ0‡‰”ä¥!í×&¡ä§Tñ»¥þÕÈ$̲¸TL=ð±‘ðZ°Ä~¶Â‘Ys£'åJ[-\Ð¢×ÆXV—„ ±P‹,ñH³ðº›Ñi‡“ „IëcÅV>Ö혮t&,k…$ÜZ™”†)ì„. µ!kõ• 3äÜ[µSk±U4‚²%Ôü‚¬¤”!$„j8Éʳ!UN«uB– pQïñ•±^ÕN¨ ÕH臌®k=Í'¡U¥rŒ„FHްÉÖ.*AF«mÇæ2í0„äo};Æ.LàÀcl‘µ;®! ‰È±Ü6’PÛ«±‘¥^Ë¢0ÃZÿ‰Ì½|;Á ÞŒNò{‚¸äÁ"‹žZËʦV#éÝYø1{ÓbA• t•–†¥”lêtÔég¸[3«2Ãë¤"ÅÛNõ×oÕ²ÐÚ»˜lGÁ'ÿ.v&¼Œ6N¯Ý¸}˜Ý³[ÕRì<GB‚ aÂ[IØn½‹ƒu­ áU`ì¡oTû ø©Å•Pø\t+‚„¿Žè„@0ð¦ãÍ$üös{|K:—Ny>B³®q76×’5A0;˜„´wý ô“0×-×Ï/¤1s¬êÃH8zꀈ­Cýú·Á‰N$<&bë Ouµˆ lðì‘Û —8ϤG.{Òfwçú|[·µÌýö©½Ùq¦Jð%/OlQŒUJ$@B«’~•–cáuk/Y¸0aéCLí.œOÂòA˜.ô ÒAuv~Ô¡bî‹iÈåÖè&¡Qc_öÉÆb •ÎGrØÊ¶´B;j±âÚÄXêM)랯Åý$Äú÷‘Ð0­;°s‚„MÐ6¥f‚„$d¥ÇrãŠð-‰„–µ±2v;{¥¥…1¢€Å‡ç•¯ËP‡¯Ë©JÐ@' Å)œøÉ{)M’ÝYøá\]-Œ}U\ ˜¦~þbRB"øŠŒØ|;å¡Ïx-úIô_L.‰¯]ë¯ ìø5öÜfÞ/ ëSø1¾AÂÀt Ó$ LG00AÂÀtL$!¾WÇ v«7i´¿Šª¯†{¿zIH ­nLAX›Vk¶ì9”„zå•IO·ªƒ› »ÅÝ“Þ{ù{$´K$<@Bz=h}¼þÖÒ²Á*CjsZg¸AC&΋V$TÇpÕµ·SâÙœß7åíÁ ZÚžn'<ô1 5 6†¤µYX‘Ùb-Y6+à^$e²D&b±^Y¼Úf'Ëÿ”G]]T| ÙwS¾—M™4Ñ-0å{ÏuÂuè”›„ô*ʦöIÈ]©ÎcFdª3 Ý-I*CÃRI¸„³#zë,|ƒu™KbÄ™HÈEäPwD4Y%áÁNèHX ¨p¯z¨’°t@|_gõžÛ b K—ZôFçnmÄ2y„„@S݈ƒ³ØÇ…$$eÃáÙ^$jÎë›R2H˜O&ìa^Lh#q1!4©e)‹nw0½£®eLav áÒÂ2;ŒGÈruå“GQ~älÃþ~CtwBÄmkÔ‰áõ¸mƒ„oÃà+ì`sß„q$¼q‘ïÅÀN"ªï a`:‚„é¦#H˜Ž a`:‚„é¦#H˜Ž a`:‚„é¦#H˜Ž a`:‚„é¦#H˜Ž a`:j$ü N H˜Ž a`:®DBúŸÀࢴ¼‘¸ é$©ÍÀY7GÐRƒ!fš,o1 )¡/Á”’Ž×7fÌóÜ&}fAßO‹,UÿíõiÉ7è·»Ô é˜W?â áÙŸ'!½¼þoi©%æÁåßò΢/™ÒZ™AʲÛLz°>¬ûñfŒëómÝÖzÉnRd HÈþ)k_ÈuZü:—4t:^¦2fÖ²¹ÎÙ™ÎÔ¯[\LåŠ@ÆÈ}Å(Šëoyè)–ç—–ý*%"-s ¹lLXúSB‹Ñd ~V,a%ácÝŽéJg²VH­•Ii˜ÂNè’P²V_¹0CνU;µ[E#([BÍ/ÈJJÙBB¨†“¬Œ0Rõá$¼Z'd© õ_ëUí„ÚP„~ÈèºÖÓ|ŠPU*ÇHh„ä›lí"¡d$¼Úvl.ÓCHþÖ·c\áBðÁt<ÆY»ãಈ Ëm# µ½Yèµ, 3¬õŸÈÜË·ÌàÍè$!¿'ˆA,b°è©õ°¬lj5’Ø…³0-T¹@WiiXJɦNG½‘>p†»5³*3¼N*R°íTýV- ­½‹Év|òïbg›Áh`ãôÚÛ‡Ù=»U-ÅnÀp$„!&¼•„íÖ»8X× ^ÆúFµ‚ŸZ\ …ÏE·"HøëˆN _€ a`:ÞLÂo?·WÁ·¤sé”çà#$<{áwcs-Y³ƒIHûwן@? sÝrýüB3Ǫ>Œ„£§ˆØ:Ô¯œè„AÂc"¶NðT'\‹˜ÀϹ r‰óLzá²'mv×y®Ï·u[ËŒÐßaŸÚ›gª_òòÔÉ–ÅX¥t0AÂ$´:!éWi9^w±ö’… –>ÄÔîÂù$,„éBŸ!TgçG*æ¾(‘†\nnõ7öeŸ<¼a(¶Pé|$׈­lK+´£+®]IŒ¥Þ”²îùZüWÑOB¬ ÓZÁ±Ó‹1'HØÔ mSj&HØABVz,7®ß’HhY+c·³WZZ# X qx^ùº uøºœª t’PœÂ‰Ÿ¼—Ò$Ù…ÎÕÕÂØWÅ•€Ùaêç/&%dp!‚¯ÈˆýÀ·SúÜ×¢ŸDÿÅä’øÚµþÚÀ>_#aÏmæýøÒ°>…#aà$ LG00AÂÀt Ó$ LÇDáxuÌ`·z“æAû«8¡šñj¸÷+¡—„”ÐêÆ„µiµfËž#ð@)!L¨W^™ôt«J0¸ º;¡QÜ=é½—¿GB»AÂ$¤×ƒÖÇëo--¬2¤6§u†4d²á¼hEBu W] q;%ÍyñpSÞÜ U¡íévÂCSP£`cHZ›…™-Ö’e³îER&Kd"ë•Å«mv"°üOyÔ…ÑEÅ}7å{Ù”IÝS¾×ùð\'\‡N¹IH¯¢ljŸ„Ü•êyåGÎ6ìï7Dw'DܶF^Û8Hø6 ¾Â6÷MGÂ)ð^ ì„ñ ¢ê1ñ¦#H˜Ž a`:‚„é¦#H˜Ž a`:‚„é¦#H˜Ž a`:‚„é¦#H˜Ž a`:‚„馣F¿Ã앺1‚„­˜½R7F°³WêÆ¶böJÝ&!Ñ?ö«vËUžü£¾ÿï¶ $™€ˆZÔfν–•|‘Œè`{_ ct¥Œ* iFWc©µþªµ6—¤~·xh]©£Þ ©¯^¢Òd¼kPk”q>«$¤O½þ{ÓÜŸÒàEé7¿±*…Eõ£-fÇ >_K{sºÕ²î,½•²x (:#;°Ñ•z0VH˜êI_0‚©)$aü¯~ˆ ‚$™E03÷%|®©£ û,¸ ­5ºRFC'•Å×v6Ê%&iˆ úé)â¶ 1‚-$dÝ–¥]©£õL¸„k "¦Î#!ë„kË]©ãH—Z¾Éaõ+Û±˜â$䋊êHÿ $ÔÛñü÷èJ=U²ó??ìË–¿)‘0 É[Ã+™–*úfU¥,Ƨ”þ»æB/P!œ„'£Þ ¯ˆÊѕz0œ„­.FWêÁ¸ õ¾úM£+õ`Ü‹„#1ºRF„ÇL€‚ “Ðqœ„Žáp:z@Gû. ÿ/”jЦeÙ®Ú®¶(’vÖiÐðPõ^«{çZ\ð¨˜m_MÒõ¾@ÂP¸åeCHýnÅGT}÷ûh˜\õž¦Œ<—µNàekÎþY÷ýDSwtÂû’Ð0qYVÖ|}Ò‡~Swt·¶ÏךbÛ{KN-3梒½À……jÙ½- 2F¤ÅsHo,_:°¼Š ;´ØÞƒBÖ2Ö²=æ¥ )®ž_D™\‡¬%V¬j*«2÷À)’ðŒNHø‰òtÅmDÿ‰°Êp‹J@8ó4è¤Zu+Ì%ƒ9\³µ‹;L+?­#iÉEJ‹yÝs¢Tžf#Cfn#ñXzH…„Ó²ÓñgBÆ áò”†© sW 9AŠ„–þ:¨0VuÔ„‡öbX&&VHXòž}A øÝuÅL,¥ìB)|e®’PÎsžÓ Y¶€„A½ÇWU%t ±„ò¯BAË6Ðü^–£Fµ®˜%Á¾EÂs¶cȪ• äïúvŒÂ/+1ZIS¼²$ÔÀ[‰z™„â0a¬½m;ÖSÛbÎÖ€„$h™nFî¥Û ®üƒN²q? ‚=ïÜ¢’‘fa‡£kABÐ¥}•Ÿ©s[À˜ÕÑTš1«Û¿5k/^L¬»F_Ìi>D÷ñh¤ï5J&Ä·Á­æ+ßü£åLx ¿µ¶÷MOkìÿ>.Р è$ìðt½’_/¢ð4Vn¥gøú–«Ãpј P¼ ·Ä³:áýМGpž'á8 O“p îFÂKžÀÃHxT~ÐN‹åNï‡0Ý{6]Óº®tÔ¯Ê ¤›ZäË^â@Ø(/ý$¬¥°aÙY¢½–$ÚÙEÂz0ý$ÌfqÐ]I¼Ï^[ÊI<*Ô¨ +ïÿ¬ûÏûDS4E—Íå¯'KJM¢­úì4¹:‡„WîKÂ`¿±…›HHúMiÐަ8¹þþ7HHâ£å±]½¥§–aïŒBë-]$çqf~.¬Ý‹1('ù)UÖÛ¦ô5÷À)’ps'Ì¡R€ŒY!ŸœCØ “¡üžÔØá²JÝðB~$ö“?^Q$2 gWV]%Àq—N"aþ’ô¢NËvL΄jWªrIlŠ;/ÖBHÈô‰}´ *uðnDx q ,oËg(¥aJÅ…§|˜-ùývuBÚæµ±“pìÏ“>^ÿ[ÚÜÓàEé7¿Á€“èG&·Vf’lœ™¬ë~q}¾­ÛZÙ(EÆ€„ìKÉXûB²¨—õÂà—¹YC/§´R3 kÙ”çWr¦WZΫNJ¦rE c¬}ÁQ$ÌÉ—ßüÐSl/.-úÕ¼i™KȲ½˜°ô!¦„£'È.Êñ E¿ ž¯¬²U\©Œ™@¸Ð$1ž–l`p9Ì$\td'4£«•F®ÓV¯­,[-(Y&’!²œèæ†Z *ÇSXƒª5’‡¾„нÓ$ØyzK+Ël HËi*ÜŒãH¨mo"aqqIh˜Ö ;JJƒ }âm,²BB»½¬û“Ðþ,\Ȥĵ›‘û„ÅÆn$!Y91 —X&¡I‘CHh­TÆL l¥|~,²<«kÙh'!Y2Úù1$§Pvv}Å‘~#ÂϯZMžÑü𫮸ïä³i:Šóãz² ÙáÀ½DÝ}˜3mQ/‹kÁ"(Q0´óJÐ" ùgåb‚ÙàÉdkï2á°ö÷ûƒ:¡ã¶ÛÃ8 NBÇ`ð“Í08 Ãq … p„U'¡cœ„Žáp¾A£P¸Z<'ãÂ$ü¿ƒ©A›Ö¶Pg¥~ÕSЈ³.Z¦âR)½ 9ÅíÐê 9ЮFœ  póËn{ëYÎu܃=m¾Ö•JëHÊ5ªÂŘiC^þY÷/:Ñ”Mj+ØÑ oGB£~Mè!¡!³„Á~c o#aü×€éÃ?ú<æA“Ú vt´5.ß‘±a¼I|kìW¯[ì;Bë-]$çqf~.p̵¡€Âò ÷Ƀ2°èBkq椰Gùm“PòÓXVy`úJï—K"Å*dœ{àI8¼’Ì ˆ™Æ<¸²._€ :ËF¥Š$ d…ª&tW;e-#æ³H˜¿u£DBcÚÙBÂiÙŽið™0WI[™”†)•¸A+CñYì„›>&'¡F&AdÈ\›À’ÌŠ’lRÀ½HÊ$‰DÄl½R¼Úf'KäG]]T| Ùw“¿—¨Lšè˜ò³Î‡û:á2,¤›„ô"ʦÖIÈ]©ÎcFdª3 Ý-I*CÃRI¸~„³#zëU” Öen‰#΄@B."‡º#¢É* 7v‚„Å€ ×:a Uæˆïë¬^s{C@ÂÜ¥‚Þè ‚±X&·Hcª1cp–û¸„¤lx¶‰š+õM)é$œ‘N&ìa^L(ˆ‘¸˜šÔ²”DãL¯¨kS˜]C¸´°ÌcÄã²\]ùäQä9Û°¿?ÝñØuâð|<6ÁNÂÓpðö`sWÂq$|p’çâÀNè8DT=&>NBÇp8 Ãá$t ‡“Ð1NBÇp8 Ãá$t ‡“Ð1NBÇp8 Ãá$t ‡“Ð1NBÇûe ¬¨Q£UÿÿÅoU 3É$ Oi¸œã–Ë Éd’i:(‚Dr!ÈA„ ‚Dr!ÈA„ ‚Dr!ÈA„ §+Âôdà‚‹öůE°ˆä BƒA"9ˆä BƒA"9ˆä BƒA"9_azð‹¡—çþàÖxûWYÏ3ü4¼[à¯çú =¦· ôì¸Ôý½ˆ©¾Š>¦îDíNXÜ|oɽ9Ö$ï§]ŠŽ*ºô6j1 ]'Lýê,ô~/àªê-G}G„,¹1Ç;Aò¤ïÄ™G­šêˆpö‡Ù*bÏX!Âé*½¢»€¯ÿ†b†<Ñä{E¼Wš)§šlçqŸ‡" >┘ͣ^{˜êö-—\§cóŠãT‡HVíÐ,&Ø„Ÿ¿v|Îz'Ì]ë,—,YÍçrdq©îw"ÌS Õ¾ùަ³%N¦*“©ÕY¶D螟j|™ªé%ßy~ý‚ª8ó¤>l0Êp8¸Ç^îQëÉpÅRË¢9Õ— [EŸÚ˻Α¶ˆñsr• SµF%ßaä{Æ"6—³GÞag'Ú„qú"´a+'Ì]êÄŒ–y½/Â:r”o%ž*ùÆÖU£â–ƨ¥ãx°…¸#)™ÊWßê|O“Ó1 ƒ3ÏZEœþ‹N͹DEýì*R}ÃÞ©—l6çZvŠ’·£êkÅé¯}0ãƒu¸È;¤ë„p8v+´ˆðoAÊŠ÷¡}‚A"9ˆäÜ/7"„͹§D[s¿^üÂÖÜ/• !l NrpBƒ‚œ®¦'\´/¾!BœÔðNrpBƒ‚œäà„ '98!ÈÁ ANrpBƒ‚œäà„ '98!ÈÁ ANrpBƒ‚œäà„ '98!ÈÁ ANrzN˜`%ê*œžªK{ÔU<88á7PWñàà„ß@]ŃóU'¼>ð s{Øû³’ïuNÏ ¯#á¾ÍuÓÜA„ð¤ç„×—Nþ‡û·!<é:aá숓7Ö™mÓöošNãÅ¢óTÉÎÞèsõçûÕçãû,Ç©;—-v¼ºŠgáp~©¿æ‹'´ãÊ¿§8¾Ž‘ª“éèg¯úŒü­ù_ÑgUœºs{¸ºŠ§ç„V<ÖKÅ•" :Õqâ f5^Ké¦V°P„&Áàpqrçp¸›K]Ńó†ú ´E8ë¦á„¾²m"6û¼)ÂFêAÊáÇ_e­–z¿¢J.‰0>Žk"üŠ®ˆÓsÂù±I]ŃÓuÂ|j¹wü|´ú¢æŸõo„——Uè~¸· OuÀ¦kþ‘áû,Ç©;WëC„ßbÁ aê*œ…wBX…ºŠç~ñ$Døê*œDZå†?A]ŃsžÀ3ˆð#ÔU<8=l"9ˆä~ÑY„V›¡;ÂÏ¹Ä ?Lá8úE—"LS;"p*'LyÑ^„ *9•ŽZ«D˜¡”s9a›aB„ZNæ„/µá„û'|ÝÈ››s2'œ]ˆð‚•œË ó¢ šÍ€Í9•æE#Â=q*'4‹F„;âìNxs¤âo؆“8a¹èQ„ vZ›|ÊEsôÂ@„ ‡÷?Уxõðü7׌B× endstream endobj 129 0 obj << /Type /Page /Parent 676 0 R /Resources 134 0 R /Contents 135 0 R /Annots [ 130 0 R 131 0 R 132 0 R 133 0 R ] /MediaBox [ 0 0 595 842 ] /CropBox [ 0 0 595 842 ] /Rotate 0 >> endobj 130 0 obj << /Dest [ 422 0 R /FitB ] /Type /Annot /Subtype /Link /Rect [ 162 682 176 696 ] /C [ 0 0 0 ] /Border [ 0 0 1 ] /H /I >> endobj 131 0 obj << /Dest [ 405 0 R /FitB ] /Type /Annot /Subtype /Link /Rect [ 280 682 291 696 ] /C [ 0 0 0 ] /Border [ 0 0 1 ] /H /I >> endobj 132 0 obj << /Dest [ 152 0 R /FitB ] /Type /Annot /Subtype /Link /Rect [ 134 538 163 552 ] /C [ 0 0 0 ] /Border [ 0 0 1 ] /H /I >> endobj 133 0 obj << /Dest [ 129 0 R /FitB ] /Type /Annot /Subtype /Link /Rect [ 499 602 505 612 ] /C [ 0 0 0 ] /Border [ 0 0 1 ] /H /I >> endobj 134 0 obj << /ProcSet [ /PDF /Text /ImageC ] /Font << /TT2 838 0 R /TT4 840 0 R /TT6 536 0 R >> /XObject << /Im20 136 0 R >> /ExtGState << /GS1 843 0 R >> >> endobj 135 0 obj << /Length 2001 /Filter /FlateDecode >> stream H‰”W[“«Æ~çWÌãZq`ny‹ÏÆöºêøTbå¼xý€HØd@+;?#»?8_wºl\åÊn•fzúÞ_7_­½ëµU‘Z7^© ñÏ‹, £l˜0ŒÕúà…|6î¼ßü©Ýä…AZµ®¼­Àâìý¨ý8ˆõ“½Xôsü~æ­O“Ÿ©®†c­â BÅYþzåGQiÅj…ÝÔB¶Ñÿâkr«öMéQ}*û“…ºìüŸÖß‘îFtrÖÑ;Kl`/ŠCÇÔƒvëŸéV*·Â 3¸µ~ô´r'f9±¹œ°qqL<~Ô_Z•‰®ÏÐÓÒb\qNŒŒ(bELäÖ)BnJX› LóD<ö·Æ'Nsí'°wä5ªŠßewš„èÔuþÊ@mý»o""솒)¶>½¶ýNÉ{Ïïªí§ùv£~êÑ_¥'¶âãgDgU`C„"FB+ál^Ÿøþ<äun+YtêŒÑ­^|s:·³pÜû«œÜ%ÖÈé<¸çþVÚ+¯¿ ø™në³óÊ»9T«( >^rŽ|i"—|Ϻiw~¡p;v–‘~ö}£¥>7"¤NãT?(ˆV/mí¯2$Ü­*y+‘r¹îUÙMƒÚÔªÚ3§²çI©™b«””|Fщb\þÝ gÏ‹.²»¶ú¥½²²¡¯Ý¢¹xEè›ö¥fë׫ÃBÌŽ,­Èîj8Á ŸÇ\n¦€Wü³#È¡ú!Ë ]÷^LJ§‰§3ª0Þkû¹G[ժ췋£ÎÆ YÿŸiq¤“<©m}¬A9ô æd Ýé»Ô7´½{’u/d›aÞ_+ ˆÙWe¥¶åðp»7·î5wI`«Ë[åÍ%†"»PŠd{A®E­êVP;Ý9ù}"P´T›~ÓxŵÎK%gGœzŽ ßÊ6jˆ–gR,wçpšVç¶ë£hà'€Q`‘^iAHu;–aX,½kZÉÒqe%#EÇ]Ç£ÌM ¢û×dq&­ŠÝu²Èu9®Âäâ-cÅ]O”9j!²ºÜÕ®óçý-)R¨~£m˜9PÎhEì×®B_ÉŸ…æ"Ž5ƯyÜPrí<Õ]£Z JûÒnë-šZŶmšZ®Œ„tGwœ'öž!j¤r5ÄÕ/¤ëPOšW{B‹ ÌØšþe+xa‹"°qQ¨4Dñåÿ33òçÕì$ŒƒäÞnÒÒ‹ÒÜ2'‰[Řv’w­kq“. þúµôÙ¾" {c—R3*t_ hœ›zœî0Ñ $ä­ hã8–];»sêF„öƒcßøÏ`Œˆ•V Œ.Ü(¨KÆ”¬Â›zÖ]ûKÒè·Ã™ÛZèüwîð_òÞ£™üo)ýa8`pÁ *Njf4·ó@1\êžÀ¶F âÙ•4*â6CeʼÆGÙ÷ÌeèÔ´?ÍhiËÁVÇQ}=!\Ãa`ÃK}/Nocr×·hÒ}¹ó¹¶L ƒÀtªš@& ÉJ).:Wý6LB¡Ààk¥­ótYš8´uf£PƒÌ‡pE~E¦CÄí: JÊsÛNGvW"ã™Ðlï@z}#ÍH.bY§ܺ…eÐ>gé]€£e.q0<C·)Çw-ùQøH#´qžæçKÏÃQa’qà SõùvZ*6¸³tÑìºá<áæ³a˜j¾YÉ86NtœÇËDvñD¶l¹!îf¼´×uK. {¹`^¦cĬeÈ(€ YAô¨x‚Ùª ﹤¬‘‚;.®iÈP[ïÁ WàHx8ô<_^®»Dµnd< c½ ˜SÿhbS7ðŠL¢Á“ÌÂ(3Œ(?z‘Æ·£ªÆ(Àl‰#àòÆtáLNÉäÒ -P,Bc|%ÙKO Uÿçáîß×^¤ZåI³)ø7²VÁ˜Tµ×x_­ßá¹ûî*gžß#x–¨Ì’ä”åK'æE–ßRÜbV.><©ÑO³r«_»ÕgXQGÙ^èx,h`Æ- 9“É¶Ú Q- kªÆvs·ãÎÑ ùÖUˆu2P Žù™šlÂE‹üu²vr·”,1—}w{vÌ–K¿‰ˆ{œZ'>›UU:…îÕU•ãÙߺfa,z ¤µ™zá/8Q‰y¥s!÷·Ê‰Z(Ÿž}I7ÎúwÂŽ1ôkmäje6—L¹ŽE÷7± 2œ@½8Eñ@ÿ`IA·æ:bºÞõu‹È¡Ñü”>ŸjUüU½Òg+yÝòÇ&¨Xß|L|äS O[1õwºŒ²¢|W°Ëèe^LûÕ³QƺÄi$©*0ÞÃD˜ECbuð><L¨ïÞ¬=9. endstream endobj 136 0 obj << /Type /XObject /Subtype /Image /Width 700 /Height 617 /BitsPerComponent 8 /ColorSpace /DeviceRGB /Length 119004 /Filter /FlateDecode >> stream H‰ì—OhYÇ !0—Ń—m˜ƒÄÀ¬ Y‘5ìEšf;Ç‹­xAÐ8aw”Ì*Cpg[WLoé%m= a‰Aä­¢íΤaÉîah2Þ_×Kj^êý©W¯ª«ªÓß_Š×Õ¯õªºó~ŸÎl ó¿#AAú‘xÎ èòLî·ƒ ‚ pŸ5âÉ}9j¾ÛUø§b8C°0>?MÉÿi#‚ Èà&hÄ‘ðÞw¾ÛUø§b8ƒÒ4Î }®z+r¦ù¼¡`.߯ÁšÂÏf… ‚èãì žž|œ!¤ […A×ÙÞ²ÿˆòLÆ_®am¹/A¬dï âùŒƒ3nM7¶iúºâ‘×½Ìý‹†3 ‚ I’Ä”Ó"!$ !…ˆë Þ¦týµñSâ[r[ÌÑ gÌ'»[1\÷EëœÁ²‚ 2äéæá *„„ÁÙtÍ]ùnΠìÅò‚ÍïºÔ-8ò^  ‚ ˆ9y9C  Ê«ðOY:ƒ§iÖÞÖö*Þ²¹é+§Ù\¹’ÈÏš×c8©¼Pä²& ‚ Cž¼œÁHâ ¢ˆ]ÕÓ4\óËTœÁpi›KÄuû/΀ ‚$I.Î ªBHÜœA|©;/Þ²®kÛ¼åì qßu;úrN@A b7÷$úá reñŒƒ3ˆ 4„8S¼eyN¬™æó6•¥ 'mV¢û~íŸFî¿FA¤Èé&pfg0×'ÅËÀ0`ã Ìß6•cñdq¶èâ÷;L^0ùœ/ÀÙÄ­R7æj‹.~¿CÁä“ÏIñr0 ˜ùfä˜l‹VV8æCoûRrÁP…ä1¯Ð›‚4­º ÛüÙˆð·”ÁpËöÏM.˜|NŠ—€a ÒqÃÔmž…Ú¢å Ü8A“²éV†Ž:ÆZ[¿aÇŽ¿òéáshrdA_ªÜC ApÆë½[µ—N0¿~»>óåLc¾AƒúÜFj·k'/ÒyeA›Çb÷#€3ÇÆ˜¿m*ÇâIË}U÷ï­C)û Ç|” Xøû1C)¥3EB·ãVЙì!†$ÎàI¬®¬.-/QØ2ëå [ûßZùhyæ‹4á‡R0l˜AÜ*ucŽå¾*6” áº•2 «ÀµA¼®ØÙù8Ôë Î*ž° ŒÜU•¢•™3x‚3­v«3¨ié íïÚ­ç­Ö¿~Js¡yðƒƒíoÛ‹傿§§›ržà÷ïP † ³30ÃŒ3×}ÕÐbâ–2W8æ\44 þ:iã ºn«`^³T*:t¸r²ríêÕæÝæ¿¿ùƲ#÷ͪ:â:ƒx›«+«d'/N_™žº2EG·_µK{J¤ ¶¬(hxz†9pp&ÒqÃÔmžÊ®jh¦† ýpæ·oݧx·oñé”%dÃsg¸ÆIª“±3¨&ô"¡ó}§÷â 빯t¦>W'gygdÇΤrAÝc7Ï Ùœì±qæo›Ê±xRÜW©Z·»Ÿõc¿ÜS "!—r@®ÀÛ7_XÐëŘKePP|,¢3æÎpí*wK é§3DcyË­§­™/fÚ¯ÚõNs¡Ù¼¿™…&9ÃØ{cS—¦~ppâ7¤ rAÝ6Ï‘…Ζ˜AÜ*ucŽì þ4õ1{gàWä­<èõ¡£¡T¿ †np”Ù¹sg,g8j$¾3x4P¶ÝàWdï $ SW¦j_Õj·kùF}¾NG>¨ÏÕ+§+£{Fþºç »~¶K.¨{Âæ9\¶.{ã¦â–€aÃì Ìß0#ÇLå :a c.ÎÀû»òèæ )”Ý€Ÿýúõƒ<¨Õþ2ùÉ'åryß¾}qá¯Fâ;CµÑhœ;wŽ~!.\8sæÌ‘#GnÞ¼yàÀZX,g˜ùr¦ýª½úíjëy«õ´Åž°¥å%Jó~sñëEŒ½?F¶0~`œŒb×î4{ýg 1_{¬R0lD:ëuù®r,"7A¶U ˜K9 lñLèé´$ñÈ ˆ\ªßCOƒX_'gXZZšûÛ9Ãï>üpÿ/÷ŒŒÄu†®Ï³gÏÄc»Ývr†Þ¥'&&NŸ>}þüù;wîBܸqãìÙ³qaúOÓÍ;MJc¾A©ÏÕÉ èØË|½öUBª@/Ÿ8^>Z6¿2º9üçMß‘è ›ÚPU † g`þ¶©‹'CMP†©KêP?%Ì¥P¶x±¿Û;ŒÁR/Ì ÿ][ãÎðé¥O?úýGããã»wïvs~~vv–kµx7g¸|ùòˆÏ­[·H®_¿þòåËS§NÅuR:¾ùñí›õ·kÿYk×^]Yí™ÃÍ¥¹ÐÓ r†Êé ¤—rAfÄà U® þÐÆ m€3Çì âV©sdg`N —r@Ù‘™Ðß KR–ʬ 8þa}òìé?©5öÇÏ>>þñ¡C‡’;Iœ>HÂ077÷øñ㉉ úx§Ó¡wã:ÃÔ¦Ú¯Ú­§-/>\$C Ðxiy‰-³Æ|£~³N¥Æö¼3Bc¹ 3¢›ÃÅÀÿ©{¡Ä-ÆÙ˜¿aFŽ™ÊÜ„A.倲#;ôwflñé hË/šw›ŸO^9Y!g°ìÈ:g¸{÷. ½tr¢çÄ£GöîÝ;99yïÞ½•••“'OÆu’Ñ=£ãÆÇß{oŒ^Ò‘Îlä£T‡åß–éØXhÈ O/rNUZà À‰tBÜ0u›§ì n —r@Ùâú;3:Cºe<– Î@cÒWgð¸3ŒŒŒpg¨T*4¦3T$–3ÍûÍŇ‹4xóãÛÎ÷Îzgueµõ´ÕzÞj¿j—Þ-‘0бy§©,h~z‘shµlSÄC)lœùÛ¦r,ž÷ÕcQ–Ô'gpèïÌè ét&®3<ó¡.?;;ëà U#1œá ›º4UúyitÏ(OiO‰^näÝÕ¡Áâ׋º[¶y,608pÌÎ n•º1§P[t¿;ò@$ 1 ¯uևΔËåÙMvnCAÏšln9ùœ/ÀÙ˜¿aFŽYÁ¶èAlñ(·`ò9)^†Hg Ä S·yj‹.~¿CÁä“ÏIñr0 Ø8ó·MåX'ÅËÀ0`vq«Ô9…Ú¢‹ßïP0yÁäsR¼ fg`þ†9^žH‰äÎîbP°€3þ $ùAÀö Òìé¦JÂûJ}1(XÀ‚ôƒ€m@ŠÎ€m œ6À`œ6À`œ6Äu†¦hKÍr=E»÷>‘ãmºþ…Àö!–3yç ­^vsE^O–÷Þ¿kåÈÜ&{gà[ôŸ‹ŠØA¸0d÷U„ÖÃúùè²¼VŽäx›ð`ÖÎPüNìêE&8C.ËkåHŽ· gfç щø" " ló¡eóè²¼VŽäx›p`Î0(è„OA„ùÏ-³G—åµr$ÇÛ„3‹ry‹ö¶’ýî­CZ^èfùù|?Pv7›§g~ªÊwâkJ¾ ƒ0„Š'¼–üq80'gHqsN{gÈ3^Ú`ï /”:ýs^Y¬g€~–3„öíиºý\7_wRîâ®r¶U‚qèäÿÙ¯Ÿ(Þ?€ãAðO:„ä¥N!ñ£:‡(è©X¤ƒ•¢ K1¬øIEµ©}Ë”P+Hè⹓魋÷ⱂ®AAèèïÃíoœgžÇÏÎΟñý"–ÙÙÙÏì¬úÌ;ãøÀ{ýÇ×_2k¤¡fð_—¹Óý--7Ò î“§ûÑÐNó#¹Ïk»ã7Ú úß(ó]7Ò Pµ7&÷z~à«¶ŽJ£Íà¾õ+_ $D]£Í`^¸mgèµÇòcroDÛÙè{Ý?bó+]¶üÅu!þSÀ!¡k¯¹›¡K´~1÷¯êÍ7CuRÁ=-ÀÖ æW§¹ØÍ ?‘{¾þc8~:¶÷*{Ãs`†ÅÕ94„ŠÐ ¡O›i†eß=ÎÜc+sU7›¡jÜ÷«ûo÷~æñf3ØŽ7xƒ³í«ô'rÏwäG`mg£×Õh3¸OhˆK‹4ƒfÝ¶í¬¯êšÁ}¼Ù ¶ãMEj†ÐQîsbo†fNA3€^jÍÐè¶þŽY_ÕC›¡jÜÖC òvQ›!®ûo£ï=Rúá5—YÏѸ.Äj8ä"4ƒŸmõ6°­ÏîãÝg ¬ê6ƒ·íqx)p|úÍ`»£5z¢eç×®>^©T"ϧ ¨hۨϗH8[ãÏ ‰Ø›apppjjjzzz²fee…f€ü*j3ìÙù/ß1Ê=¿®§§gsssgggvvÖ|µùùI|~)/êåPo!Í ÷÷ÈóëÍ0::º±±±ºº:77711qíÚµÞÞÞÅÅEšrJ–Go‘T¢ü>}úÞÞÞãüÐ i~¾W ^*xý årY‚¡R©4ß ]]]ÛÛÛ_¿~õ7ƒœEZb}}f€<’åqYfð¿·§§Ç¾»»×|ï£&× rïëëó²¡T* I0LÖÈFäù^3ÌÏÏÿøñÃl†ŽŽŽ±±1šòÈkåÒJ3øß»¹¹™Üü'73_îÝ’ ^* Ô ÕH*”Ëeo;ò|¯Ö××mÍ ­E3@Ñ ¶Qîùbgg'¡ùšOÞÌüÒ_^-H'xµàƒ÷Räù4Í`åž/fgg“›Ÿh3 ùxÁ &''åQ*¢¯¯Onî‘ç{Í0??ok†±±1šòˆf°rÏ·åÕ«WqÍO®¼Bð"ÁÛ®T*òÉeC*BšáÂ… ‘ç{ÍÐÕÕµ½½m6Cggçúú:ÍyTÔfPrŒÒÌoooßÝݵCóóÝÁy¾ u¯þ’~(—Ë¥RI²!ò|¯¤ FGG766üÍÐÛÛ»¸¸¸µµE3@Ñ ¶Qžÿj¿>,,,ÈÆddÃÀÀ@äùõfèîîœšššžžö&¯¬¬¬­­Ñ S4ƒmó£Í÷7CÿðððÄÄÄÌÌÌÒÒÒêê*ÍùE3ØF1?Ú|šŠŠf°b~´ù4UÁš!öQÌÏv~:hРÜ£˜ŸíütÐ  A3¸G1?Ûùé @ƒfpb~¶óÓA3€FšÁ{ŒEè=‘ùÎOÍ#9o±+æ·ÚüÐ  Q€fšD3€ÍÐ  A34hÐ Í4@3€ÍÐ  A34hÄØ @~Ñ p ¸š( šBÑ @Í¡h €f€P4@3@(š  ÍÐ *ÑfÙõ¡¯*Ï ¤‰f€PI7C`Cÿ +4„J³ä±þÏÜØ²B3@¨¸šaÙP5"Á7g9ðh>5É¡à@16CØñÁþ„p7š4Òl†Ð< 9š4Rn†ú¿ª½È¤ŒfD›Èš4h€f š @ƒfhРš4h€f š @ƒfhРš4h€f š @#ïÍ0+æ·ÚütÐ  1’ÿfØ‹‰Lóß˜ß óÓA3€F1š!¹QÌÏv~:hРÜ£˜ŸíütÐ  A3¸G1?Ûùé @ƒfpb~¶óÓA3€ÍàÅül秃fCÕ ß¾}ktTÞï¹yŸŸš4U3ÈÁŽÊû=7ïóÓA3€Æái†ãÇGºSóÅ63?šhó¿|ùrþüùþùg||<‰ùz4ZŸü¥œ:uê?5ÝÝÝ7oÞ¾qãÆíÛ·ÿ[óàÁƒ™™™ÇW*•©©©ééékfk^¾|)¯Êþ™y:77'O'''åñÑ£G÷ïß—í»wï–Ëeù=¼uëV©TºTsñâųgÏž9sF>C[[[Ö_£CÒ >Œ6ÊÖ îQ¡´`3\¿~]>ª,e›››===²ýóçÏXæ»ëôóÓA3À$ypúôi¹G_½zõÎ;’rgýúõ‹/dûùóçòTÖ¹ËK$K$5- fÊCC(û g`>”§Ï8ÄézpO§¦¦æèÑ£êô5úZ„ãZo;f62b: ÖG¡K°äĉâT¢T- 3ƒœ`t\ÂyÕƒqÏ‹±Dùiˆ‚A4€¯2™L:溰 Ôbxxxddd~~>ŸÏsŸÿ‰¼xñ‹À%è£a¬åw¸ØŸ»¥í |uw˜êgp†ïŒÍÏÏ&¿ _Ž|þüy‹£å~ ±3”jTTTÀÐîîîÞÞÞééé©©©‰‰ >_xõà]{{û…(Ä+<¥¬rvÃ_xÊ 4O$´`”Áº(„5ÐÚÑ´8€d·K„™ì>…o@B§QÑ?ÔÆ[3˜–Â,•ANAB5F»P6XÅAHE_½¡uüt¼eÐÒ÷-yXâ#¯BZV)T´¼mŠ‚“T*ÕÑÑÑ×ׇKðórçÎ………G½|ù…X^^^ZZB½:TìïEÛv†OŸ>½ÿ~‡©JØþÕ¹²²ba8xð é»’ëoÝ÷ç/LÄÎPzqøða>žÏçgffîß¿ÿêÕ«õõuþ²îÞ½KÚbMâøá(agà;¿óTÿϾ;É¿½ØFþ?–••…š·†íåÿ¡ˆ!ŽmÇþýû„ⳃPØB6›Åš››ål‰L@7'(i¡­Â y%å>"@Á"Ó@§¨¸¤дˆ3MHŸA·ú¬Â^¤­p'¿ž WÐ2Ç™ÁI(ÌGåDÐ[Œ{…ãÐgGB%€ãç¢ CSS¦Á d2I_CpÐ ÙB%p÷/eƲ™£2q9ô©Ç¼Zòèc^‚*‚ªÑÁ(ø€¹ÙÙÙ¥¥¥µµµ×¯_/..644û«Ç7¢T¯ñ®¤*.Óãü…‰ØönTVV¢ ###hbbbtt”lAl‚€` ~9p&‚ úBVð‰Z èLÀ세“P…’ ¡*[8A ;yÅ¥ˆgšãÁ.x‹Ï˜JKá-óYÈo—ºÂ¸ùM«¸]íf‹Â]h9¾Á¸-#fF4]‚É<h®uá®xÄ[èP•LcIJUö%­âÁFäGNDqäÈÊðt$îÄ# –Å|ŽÉ U!-|vccc?^]]¥EøL‹ýÍŠãëQ’ÎðöíÛýù箤ÚëÌÝëù ±3ìŨ¨¨€nü£z;ŠÉÉIÌa7ÀÌ&a*°€”ø“¹ÀTÂexÇcUU•m º1Îä€{2® Ðam@9 ¡0SQ˜ÿÌfÈzÂYÈKŸåŒ] â¡-¨ß9jƒVàdÐ,µ5‚RUf%lÍUx( å\ƒ´hZ.Siñ–ØN‘`‰þc‘ºýß6ƒA.Ðkd!å)0ÌT~OAyÁÓ<¦W‡9Ðvttð æóù………•••ði–••û‹ÇEI:Ã.¦Šó7a"v†½€¦··wzz¸` SSSÃÃÃ}}}Ùl6“É€¿àHºñ(ˆÁºä¥/Π›2 Îä¬d”­$©‚´²ÆÑjbÔÊYù(^Uá(µá)L—ûª=…o™|6ŠP˜ÐqŒØ€f^ùQX‚?„j 6ÏÈL)OGãô/GÁ8‘sR±‹¥P)W^E2™4¿§æóÉ@kÁldz1“A/œ [uuu¸¢B0+mnnF°>ܧOŸÎÏÏûÇ"v†­SÅù‹›¿0;Ã^‰´¶¶þ±˜C*•jiia„) [uQ&Hû„&ü‚tŠ:y¥`²öSyë*ZaG*Á'ïê6ƒÉAHÔå¦vkùN-B:ÓZƒŒfD›D@[ãÔF_£ v –xbÚUÖæq|øäÉ“¡¡¡b+݈aëTqþâæ/LÄÎðsFee%V€*ôöö¦ÓiÀg›šš ’”‡8þOJGîÔGÁc2™Ô€W€£|§OE˜`úbÑê ä4 ÛQŒÀ •Ðill¤Ù‚â5 ê±r&°å‹‚d½PUUERˆÓ²/Ð_OÐ(t B…¦a6õɲe1ó•@x.}Æû ÂàUTâ¸2£ðxôyËx˜cZ¶V¢މxP¼–¢<èNÊ-“¹:íË g£`wËP ½·¶¶6¾kkkÏŸ?Ÿ››ãºŠý%ýå"v†­SÅù‹›¿0;ÃωD¢««ktt4—Ë! Ø ¢P´BpÂh4òUÙGh)€à¦¬¤ON&ÓgDN‘nÒw;Z¹O'•Já ‡¡C‘ÝÝÝ×®] Ú‰(ÆÇÇgggé5ꢧ§‡9Ùl¶µµ—Ø…†#‘ÝŽ­y©:ƒePµQxæƒË€rÆÍàLrRvè…öB R¾bSo‰W,dœl z^’˜M½FI…'Т1ÿf¿n~³¬Ò8ŽïܺtE0$Œ“81ŽÑqX`hÂK¡Œ¤R(еÒ†—…´y)­v j)m¡¡F ø#H þ,EV„f óÉù¥O&“™ÙŒòh½¯ÅɹÏ}s®ë:çy¾¿;²!K)£Ž–Mz™¨M%9çt,¥5]ý£²l¥QÓc'I9BÈ,&vvv9rdddd||ÜH½oëïË*Íð¿—ªÖ¯ïúOÇ*Íð«2ŒÜõë×S Z„…LÁÓÐ*ô ̓N>Qƒ[Úð. k"ß­¡Xð¤µ8Å_? ¦]³fMSSÓÚµkƒþ]]]TÁþýûûúú>þøããÇã—/ß‹/Ÿ9sæìÙ³CCC:#Å=jM11ÊÁš:+Š Œi˜5!x4ƒà5â'y1uˆ ‚@9¹˜NÜBí€ÞR²²•Ô.²‹¨P¯È˜·ÞzËxtÅêÕ«µjkDljb‘7Šñ¯måYb»pÐq?qŽ®“]DHN*2)eçÁrFÉBúÙ+»ÐlJçüB™~ åê}m/64CÚŸÅþ#«õë¸þÓ±J3ü šAyãÆ;vì¿ðEZMà$‡q# æ1ß§úxpu°Ø:Þ†¿A$&H# q ’ssó–-[zzz"€þôéÓ=páÂ…ÑÑÑóçÏ뤽r劑 Å._¾<99ùÅ_\ºtijjÊÈØØ˜öóÏ?ç£0Ñ‚‡Ú¶mÛÖ­[wÛ¾}{G1}bI«ÄIK±uëÖ­Zµ*i [Ì .¬ÉPV¨5Í9”åž)¸‹*¥’ AmÚ´iÆ ­­­*Ð5kÝÝÝûöíëííU}#ÂnkkS.Š.á95k:>­-, ©– +;î?ÿüó›7ož~$Ÿ·,!ZS"rdÍÆ'ÊGÅâmFìåˆÝ™öööu–W½/ò·¿ýÆ5{ò³Zµþ¯mý§`•f¨¯½ð þù †ð’ Р |ó†þ¡$vh=ê„,LŒˆ}Z$ Á.‹/ÖÑÊÆbÓȸ¿˜VpGŸsçÎi)2À=0>>^STD:£Å¼šžžæ¬™™!!ø‹Y!âÁtׯ\AðÞ½{é‡={öx¤RŽ?îQçèÑ£0è•Û¨ ˜®2ª­‚—”ªF/%Ay¬ñ1®D¦D]xèê,eµŠŽ2 ë¡¿³³S<ýýýÅè%A’LÑ9vìØààà'Ÿ|â•Zqþè£yøðaþ‰ÖˆPÕ3jÍ)Ø=rîÕb¶Ë± ì•b?IæùÅ„!‘ñ¢ÿÉ“'‘%!ßQþÓO?Åý±±±‰‰ 2ÀÈåY# àÉ+× ƒ60+ãqŽÀ0Âç_Ù3g¢ l p'‹!²í@™r8qâ„ñS§Ne8-¬¯\¹RjÉtÑ¢E—,ŒF3²:a±–¾R«è Ø5½¡¡aݺuj¾¤˜ÁŽŽ@âÃÃÑ…ðè„(" ª†A—”ŽØ"±ÄlŠqúÊt‹Pííí[¶lÙ¸qcss3ŽG9$ Q >Ð’ðÄà•G¯¢åe4Eg FoH™›ŽWÑ ñd9t7gëÖ­Š&Hµ?~½/ø´J3TVY¥êbÖÚÚúî»ïÒ 8þ—òåë 1L¬i†îx ¯Ã¦èpÓ‰ºð eH´2C*æ- ØyëÑ£GÃz€†¼èˆt¬ ñ=¢üÕ«WµSSSÐ}ÚÚ€X<i *BØø.åR I)†.X° ÕAa)kÐHÌM)–/_¾fÍs#Ïñ`$‚A5¢ph¤l===íQ›ø ÁˆMœüš¹Ip´Ÿ´½Åˆ"¢‚~Ø´i“³ áÄà¤^)&ìW‹9nAÊåµbÑ.€˜½¥p ¾\LRÍ• |-å¥0nÐÑ/-ÖÖÖF´ô÷÷‹íÙgŸ­÷5ŸkVi†Ê*«4ÃS¶gžyß}Šnذ¼€Ã_½ÿÿ`Å«|<†#ø‚)`¡ÿ×bqóý4#   =(¹}ûö¾¾¾ááaü ‹Î ê|VÌ#ÊñiĤ (Éb‘c³æ1ÊÁ Q—5‡Œàï…b^Ñ ¶Æ\; CÀŠ¿ ñ =Yìl±è Ι Ù¦›xàÀ÷ó½÷Þ#$‘ w aÑ¢EØJ9h_zé%#ÔmY±·ß~¸•¢¹¹ùwÞQy@ÇÖƒZ_v6Mðv¤ ŒD>‰_ƒƒƒQ2œO=<“lW·È*&xžòêîîÞ±cGKK }ñŽ/èZÈᲜ¬ãËc´¢N4a uþP,êQËßxúQGÖqèr´¯³ÖÖû¾Ï)«4Ce•UšáéŠQhî ¼üÛƒ‚{à ëµþù €%K–xô B‡7f ‚J25LQ0íììÄADƒã‘‘¼/°8Á8Ê!Ú ¢¾NZXÔBÿÑb$ z‹†á)ëðñÚúˆëCÅôùpÐ\›ò1N ‚üðÃ{‹}ûí··oß~ôèÑ“Y{øðá÷ßÿÝwßݺuëÚµkðmkKá/ñ`#©5å°páBP^HÅb²îR:…U%¤Ví>ø »˜NWWèQ»víêéé’|å%£hÛÙÔ ¾}Å/x2• ÚÖdƒ)܇̨)¨Xäée͈ŸD.eÓ÷ìÙ#~÷À#íÄI ÔT„DqMND°¨‚ŒpÎÑ{¤‘L7Ë•ˆÌPW‚R²‹Åo¤Þ¿€¹`•f¨¬²J3<{î¹ç6oÞ ^4C¸ï?<­¿ú?£ üçûÃçà °Ïˆq ˆÆ`µÑ|x644 ã¶mÛP —8À©¨…È€sÅ`.ôO\~VŒ[féÀ¥WÜ0‘r€¿01zÃF¶q-˜RƒÅ<-¸ŒŒ(ÏÍÊÑ-úF0Åøà¯eŸü{üøñÝ»wïܹãâ}ùå—HE@H!äåƒ÷Ê•+"ŠÁ_xgüÍ ûøŸ™™ùꫯ0ôúõë:Úk×®M3—ÿß‹¹  «!;ïܹsïÞ½ûöí ”Åæ•Ž;†¿ÙÚ^îOM$üðÃ÷îÝ»ÿþƒþñÓOüñæÍ›W¯^µ¸-8[øô³ Ôʽ©©I%S–SÑ”nÅŠ›‹QÔ¡C‡Üçžž}á)‚BYSûÍ7ß|ýõ×3Ånܸ¡%Qä²÷÷÷Ãz__ŸM $DY‘ªÄùÖ­[µšX©Ãh1õIa¥éåUtˆ·ÆsF#Å¢Ü7A !&õ©‚_|Ñ£ àÜešöŸì×ËO–IÇñ]ÿ. 5ôbÆ Ñ6mHŒ F‰Ä  Ž6h5Ô ˆã 3º1Ó°¥½$â+£(éï6^¢ c¢Æ»™Oê¤ß¸šÅŒŠLž³¨TÕSOÕ9§ê©ïï1&ŽŠÂϧ8B¡B™K–,¡—$Mö|àSýALcË4Cf™ešáó™;¿¶¶¹jjjH‚ùÉ _¿›_Å=·½º®ú¸äc°:d|— ô,⳺ºmý=Y@Šr£ ñŸK6àTõööÂlõ÷÷+! !+¡óòåË*¹\îÖ­[äÁ?“ý’ìÆ np M@Ç>'AI ˜6à©°uëÖ={ö455a´žC‡ý˜,Æs ^MòîÝ»>Ð “““±´õüùó·oß¾ÿÞ0Œ£:zzz̞ʲmÛ¶ªª*™‘º¼T®Å‹’S__ÏЧ—Œç†tᦈ„‘‘‘›7o"þøø¸u¯_¿.X2ÀSÑYšÛ¢øS2uÑñA˜Do%Ä ¾ /z]Ó»!BçXH]©‚!4ƒ½ !šCÉ$Ç䜔ºU«V‰KP………s“‰Ë™ù]²?$sD*äPŽžÈ†‘:©Ê9lKí:lª¿Œéj™fÈ,³L3|Cü?&«¨¨p™ý‹ŠŠÜä¸jÁWº ?~ñT…`dD©'~51bË–-­­­ø4ñ3ÿ¼huêÔ©Ð ñ‹G©²8¾ÿ~à31zbb‚PÞ¹sçöíÛTÁÝ»w5íéƒ Ànå“ßìÅ‹÷ïß×c€ahkú(Ïœ9ƒ†” ²[Ѻ@ÿçdVÍp†{Fz‹>Á\˽|ùÒÒ€Ë+̺B3JÛ˜ ñM:'8 刃Ò"?Ò8kÖ,V)--…ݺº:c8à]Q777ã>7È¡‹/†.æãÇŸ>}*"© B,‘VéììliiÙ»woÈQˆ‘c^§7èI0ƒïBêÔ"?šžŠÅÈ#ɬî]>‡ŠPŠEóɸÏ+ùØ%жáóºuëBÌž=ûÛdyÙàü”••) © âPQ¡Ò‚!$„RG˜Ó(u²*œ;wNõ‡2Í,Ó ™e–i†Ok3gÎ\½z5µPSS³8™+ÝeîêŽÿA¦'®úø ,))ÊAEé‘Òx—¿W~ŸŒl@Ãêêjpp Ä„ZÐyòäI$R¢‚+ч`€NÆ÷k׮ݸqãÍ›7py7Ùídð§Ä¾GéÔ|öì™ò×$! &${øð!8%¼æTž;w΢¤ ö ã»åಧ§"’Ï?'3p¹a’W¯^ý’ÌT.\PšÇÔVòœÚáùþdØÝÑÑaNJì–/_.]„V>·R¯ú)«¶¶6«›¤¯¯M«„‚H•B#œh‡Ü™ä­·¬ØÔÔ¤ìêê’IÞ%x¼N]ÈÕ½{÷$$Ä Ñe²þ{h¶ž›G8š’c³BàÙ;#•‘" Œ Õô.Ï ¡‰Ñ1 Ê÷É¢é´,[¶Œx t惄xªœ3gNh‡Mi€ƒG6BÜLïNõG3m,Ó ™e–i†OhÂîÝ» p¯®î(ãæW†Šˆ§þû–$sáûUÔ„Üð¡\éååå.ùmÛ¶¦Ìc .Ê2¤¢A6Ü`.-¡nXh†ÖÖÖúúz?•]½zull %'''ÑM¯±ûq²¨Fƒ§Hª´Ë¯¢ ”!6B3˜6Jž`=, vt‚²³³"?®3ij.ìÒd ø‚l.—£"à8p™× ˆm_¿~}]]¬ÖÖÖnܸQ32‚R$™RGSÉžG4ƒ1 b±ÑÒÒ"-ÄÒÙ³gy;::*R1†¢oòJŠ,}øðáîîn/¶·· î… Û!ln%ãvä'4CTô_¿~ÝlJƒ-j#Bo(÷$3¡ÌP CCC'Nœ°œ™5 Žž¡d6ÑÎj:Q¢v„)^eEEEeeå¢E‹¾M¦"JIð”BÐYXXX”Lcé‘Ô`:Ä1“Rù±ú7ß|3ÕŸÎô°é®~ø¤–ÍÿµÍÿe,Ó ŸÊüСÁ[nx×rü†< Š‹‹ãwO3îm÷¼éô¸êCB ‚K^ÏâdkÖ¬±)mmm(ìÇýQS0úôéÓu|ÑÄD¬A„êNÆ%Ð1‘QÌ>¾~ý(¡Ÿ ñäÉ[y/ö!`ì8* 6 £"™:,ŽŒŒœ?ž`Ês†€ˆ°\UF…“¸|ù24Çü˜ðÕåpðŸàá|ss3úK¦Ô)C”””,]º”$SR*+W®ôtÅŠ8¸víZéRW!6(‡íÛ·÷ôô˜œfà@h':Aâ Ý ŠnˆÕ9ß××î| ]4±›oœô.Ï Ž<„Ð2X"(iÑ)LÙð–ý¾ ¬ÛßßOõööò§««‹š Àˆ ƒü)™»LH„óˆþq´8oÞ<'DŒ”CåØÌOV’̹rÞ<²`ÇOE§Ò1Ó4ÒQ”%ªŒíT@ÓÀ~˜þšá_ŸÈÌö1²ù¿†ù¿Œešá“ôÇ5î>ǵ²²27³»Ú¥íÏý¬B¿›ì¼âÒöÈUšAEe²U«VUUU­[·,. B@óàà ¦(Éüé#³/G]8p :::üØÚJ(42—ËQ(IéÆÇÇU4í¯Š&€ªyͯJý1ìV2ïâ&Ü›‘\ᛥaQ900—êhˆ˜†?s)TYZÊõ˜ÁëàxèСýɶlÙ" „J‚ùDbAž …v›6mª­­•scò ÷Š~» ¿®®®¦¦fÇŽÃÃÃB󱦭+ä§OŸr"4šÁŒ¦X0½3™¤Tbå0CˆœP’cf=r£££æŽÿ–ŒBˆ<蔄cÇŽÙPšÜÖxJKÄ®Ye0'c‹CxxÑ^Ë'½±zõj1B»vírZdÃÑ’"çG4+YÒ)]äºÌ8l‘¢PúU9¹âƒäÛ²3fLõ—ôUÛÿ‡fø|SeóOíü_Æ2Íð?šŒùŸõ·ëß–p{/X°À-튎û¹´´ôûdnl¥›\Y\\ldÆPz}ãÆ1ÛÞ½{ÛÛÛa _°#ƒ[A ýC?ÀÐɨ\;L9xð ú€ŽfžÚW®\8Ü ÀAÛX²ñd*êéÇTì;¾Ç¥¡2#Äu‘Ä߸a-ŒCGA„› 744€ ø0艖%ƳLý…D» WH@Nqéç ƒ F¨˜TÔÖÖ®[·Npÿ)1#Ê¡ùš¸ÁƒY3tvvjQ‘@I“m÷ìÙcPc‰ÍÊš ÔíÊ•+=ºsçNoo/b‘=¬bÕtޱ¾zaØ9ˆSº¼ò9Ÿ*¦ ÕÜÒú‚‚‚ØfAªv &{A­àAV'ìÉ)‰!zúJ];lŸØ?Ò8Ü¿×Çh#Ì0´«ÿÃëÿÃØ3¼åääÈ•£ÕYí*çXv8DZìv;´Õ•ÙÙÙgÍš׺@ À€òòò‚(Ô£³qߤ§Žî½‰íK,hÁã׉ÑJ}(‹ÎÎy2Gt@‚Ͻ%)&ñWð@Έ™£ø¡}8A#~ €JêI¿¼‚–8VŸ´)ƒX`F”}ŽDh í_¿Þ¸4—¢™)W‰Ò#qÉnذÞá.$°`Á9‘ÃI“&ý"1z§Ñ[Iæ­¼¼|ÅŠÊ;vÐî}óÍ“'Oˆïõë×ct™¼éHϲ!EJ*¢Uƒ%ÅR$'>‘.ßJäoJL¾ð›4º½½ZðŸb-é êð¨.ÑA0<Ç*ðiÖ•••BâAO´ ø‡öõõݽ{÷Ö­[‡6¦2;_YY™¼2H,PÁ#rPW±=´0JK~~¾by ‚µß¢Å£zì@5PV7-6d´Øº6$ˆ-**’+C[ÇôôôáþÏ>.a†¡]}þc'ütþßÐF˜áçe4ŽÊ•«Ù¯s꺬<8‡µ¤®o©cÜ|¢²dÉ 2ÚØØØÔÔÔÜÜL/â‚Iè/Ñ! Ô'nšdBéîIP´ëà`ß½{·¯¶nݺeË~víÚåsí–s*YQQA­8§5!ñÔ­££ƒØ©àj¥ÜŸ=pà€ÇQœ={9'xLÁCˆ¦WAœ„j‡Ò‘ÚZF  Iÿ¢E‹0@AAÁÂÄÔçÏŸÊÒ&o26~üø´´4iDS¾å„+ù!aÆúîeÖßßßÛÛûàÁƒï7>{þí˜!NóB°’Ì0+±/^Øo‹]ŠfÏž»Té1VÁçVÁÒÔÔÔH¸†ûWû¸l„†võ©úÕŠÿ}ðéÓÔ–xGÿCl¶·ˆÿÃØ3üXs­®®...þ2±©S§:xÆA læÌ™êŽbçó¯ÓèÐ j¢I@]<]u]B7oÞLôϤ–FÄý‘‘‰½‰…X0œ<@GtPÙ¸q#T ¤MI8øQj'|–’,Š–&Ò,©}W`ƒöövžÉÜß3œW0è‚&ÒGŸ¨?~œ,jÁ¾%Ž>WñêØ±cœˆœØ)q °¡õ€FPL‡&É yŠìQ+i‘½à.Y’4-ùùùUUU"'…æ(ΗÒÂÙàÙ³W½ú¾! $ü–““# cÍ›7OTÐÖ$¶råJ+[TT$uêòfH¿ä‹™r@TƒlÈL€„„ȤõЬZ#Ÿ×ÖÖú•L⮃¯®]»68èày .^¼ˆ".\¸Ï¸Æ’C›AccXw€'Xý¨s¥=ö q7"à¶Ieee9¨Ø~æØ É‘aI°'-DƒžJ¯4ª[ –È>vìØáþç>ûL˜aÔëëU®>IfõCNHÕS•wñÿªÏ_»#Ìð³0§(-vEu‹K\ff¦S×™LƒÅJ‡­ã×Ù«ÝqíÐŽ«ô9N èÛ¶m# Nû¯^˜–@rà”¦¼$#(‚P íN cð@Ȉ)à°®®.Ü’ EjW¯^ÝÔÔämyy9᳦\8A¹ŒZç’Ї0©)Òã-~0(ôÊÐÝ[‚H­ôÇ'Ož´1€Ä׉éÌ?åŒÌƒ”¼EÒ¨}ÕªUaiiiII‰Ä¢‹ß¾°éÓ§Kcnn.o|öü¹øøñc"‹XD"3øÇŸKm t °ù{b\7¡êCëu0(IÅ ÆÂ h·Ì™3Çp¹‰ -ÐN‡‰ÉžTËžD™µé›¸)ƒ¥@¯È@{bàÁp­­­b³R¦Y•˜)Xb9”U!‰Ç¿ÓÓÓÓ××w=±7nœ?K(E|È‚¬u`K d9b3&`﯉]£qõf»T322lKHœ¦wíÕØ¨zz´Q=†™‰y¼qyF\Ãýÿ ¿}Ì3};WŸ 3øaGýô̲7÷ÿal„ÞÄFíðt“<§nvv6q!=Û¸©9`¹q}Sv¦Å ¬¿oIápþ‡S=:KDþÚC¾C#œü*¸BOÂeP9 _¨@$ÕÕÕA$©¾¾þw‰UTTÐhÃÑÄeË–a•²²2Ý*¨ycc#EÛ´i“º…þCb0#ˆ"p"(B`"ÑÞÜܬ%tS:rêÔ©«W¯Ú– {444J>QM8§5Z -BQÞÀñ£…¥K—¢)MÊ%*”Kö&Ož6fb"?Êÿ¨¢ÂÿT^:Ê»3ƒ;ÅF˜ác¶1cÆÄ=‘ìÒ'êܹs•ÎX—8çª#7==Ý §Ùˆ>A FkjjúöÛoñƒ¿lçÎ;vìðhÛ·oW"‡@Ž>0à .qC‰±ôAHFŒiÁ©ˆ<ép \ ô†´+5†+ì³¥cÒþûbZ¬ÂJaƒ1mcGÿ”cÏ*3ÔüRîZuõCµÚèÇ7Z8ðˆ™¡¥«mÕïuüÊÔ4CÂ]Vó虡RùŸã?ëd†vlĈ²4á“QeN)”¨… D~ÒlØ@‹¼*kW—“eéqãÆQ>)]—Ïÿ^Ì•P¶G˜…¹JË.tsçεÿËŠy»´X®¨$iòäÉcÆŒ¡°U®â¹çž«-Ö­[·ž={öîÝ› +ûöíK²]3)r}}=1E/S!QX•HŒÕÙ™‰'Μ9“JÒGH<‚Æ1æ‹/¾hŠ®ÅTÌÛ«·!éLª¢=<èÓ§Oïb*Z¼2 Ñ|…"¹WÑÈ1^Ò?,ý•† „0o9æÃ¬Å J‚o îõÉy‰ÿ©S§â²Pòñ褢òNð›o¾!Öé©Ã;ï¼ã¼0†tFNʉ;¸?üÐi.^¼ixTÀNP‹Ò[‡ûQ±+V J!ñb_}õl°áòåË.\À< `„$32 NÀNÌ ´Ö¯_OÖ˜qà\0U»6lc¥` Ã`T#zºA߃ QØ€Eè9|øpäÌ ò¼'ÕþO˜¡š·ÕkºÏOœ8‘A RG…*-÷=~K'[–í[5ã×ø×Õ«9ýV™áüùóépþ·åjM'3<…&=&ÇÊ«Rh”…ÐÈ¥J)”PÊ¥ê’j˜Aðë¡øˆ#ÑzQDmmm="¸ÑPª:pàÀTÈ«•Z¾Wä˜Ô,ÒÈ'i§Îõõõ>Á t߀à¤Â Ô_O•€DÈÁçy«|þùç+ífÿC±Š®1‡¢=>($ð¹¯4š+ŸgL}‚>üm1>pU{Ö«®¿J „Œ¾úê«ôtäÈ‘Â*'L˜àihho¿ý¶Šs7nœÒ+$ÐØØ8±Øäbúè¯?~|êo½õ–·S¦Lñ¶¡ÙÔ}~k×®M|òÉ'{÷î=sæ føé§Ÿä¨S§N¢˜|íYe†íJm«¯ª×Ä—‹a%HP¶|¥¥zW[mlÇóv¬zÿ[E…‡È mY'3<]æ¶(¯Ú ·0 37,Ù’0¹sy”<É}AZ€Ä+¯¼BS|äÒC‡ýÜlÇŽ³þŽÝ»wÆ-[¶Ü]6ÝÝ@m¸Gz!\N?*&í»ÆN›6Mê~< þîˆ;чDDI^•Ö«$¬T•({Emi®þQ[ÊB£5ê¯Ñ3Pm}êêê<ö(æ•Gí&ª ŠÆÐÆP EøP‡AƒÙgTæ”6$ç,‚mZR×S?i–Loyî㪖¼b&2oÏb½ŠevgE†²ÜŸŠ™ÝŒœ ^Y¯é´¨´IüÉtÁNoõ·¡C‡2I¶È!Á{¼ù曢hÆŒø(._¾€2rþ~2{V©=ñÌÐb?[ø/tõ¤2ÃW†`†çWøo¥éAöU–~{&3“ìÒÒRŸ%øFÉí‘0eKùS‹l)©º”a©rÆŒ²ñÁƒá†ãÇŸúè£uëÖUVV:¥õõõ›6mÒ0(µÃ˜Ö®]»téR½S-žo¾ù¦ òÉ:% fk!çד٠õ=zôïßßïÃÉܹs3}Z•==Ìðë\=ÙþŸùOlxDÌð _e™!ãF¾'L˜PXXˆ¤Êȇ$F&xhÉí„ÉÅ*??ŸÊ7NÖ=wîÜõëׯ]»†¾ÿþ{å‰'ЩS§Üÿ™ìæ­[·ïܹuû6´Ø±cÇŠ+,X0}útwÆñãlj—e: 02Jß))Å * hTLÒ8$2tŸD*C[u¡÷m»d^i÷„OJx-*õP &y5™-°hÁ¾„–uKFæˆ]ì)Åf)}‹R|NyÕõסcÇŽvÖÄÌèsë•É+–ièîÝ»0€Û8>çÄz¹E¯%Ó ¤ï‚Àƒšô‰Õ#b¾íСž ‡æ¦ƒGu-r¢8Ì®‚@þ’LŸ¾}û:jNž<™FðÁ_~ù¥ÖÜÜìWmhhpƪ’UWWcƒO>ùD»2§·¦¦?T$[¸paQQv H+ðT„ZÌÍÄO%þžL•ZÌÖ[»Ð«W/³Ãê™>¶Ä²Ìк«'Ûÿ3…Z±ÿËÕ£³,30"5cÆ éÎu‰îÈqr'•ç¥h÷ÍHã*úˆÒðáÃKJJæÍ›çðˆŒ+HP?}ú´úÑ£G/_¾¬‚¤ñãÇ߸qãÎÝ»ÐBãž={/^,Õó`P)ú·I a¡¹/&3OÊH¿”$ìÉ<*¼,úÿ.éJŠÌU4ªk n‡g¢9´M¦?Y'¸!Ê“„Ù»C¼(T n4K‰ìÐSÅfù08ÇÞ᜞={Â3;hOM›:ëþ=ê`QüëóÎ;ï”––4È'6ÈpÄ݈|:&››«sðƒÒôBDÈ*@‚so äsGÈ@Jó 0 +â0"ž£]T‚Ê8‰cémœI“)((€ “&MB¼Àš:„gΜ‘Í®^½*¿„Úd€ ›6mÒøa2PÌÀCyy9q¶ñ0D`˜˜ˆ°¹i1Ó€ÍJ“·4“ÑGˆl¢8pàªU«u¦Oî÷,3´î*ë?³þe™A’t3"o$“e?iP¶$CR¢Ä7,íäfìØ±äÞLb”¥‘NØ¿ÿáÇ›ššðÀNž<ùÝwß]ºté‡~À•?þd²úöíÛGÅç™^}kF¯I¥PU*%!#‘Ôö•dAè‚JB÷Ò}¦Q‚"pšJ ô|²g“E]c°‡á(>&šNyíKˆ&³_yyy„Œ¢‘-ñ41Z<ªôë×â»öÚJr†ÐF­ôh]^…ÆQÉ)S¦Œ?~Ñ¢E7n$©;vì ³ëׯ_ºt©Fo‹‹‹•'Nœ0a´iÓÐE%ˆÅ £ÑÑrÌt ´Ð¢ ®Ðë W¨Ô!Î}º³¾¾Þ‘»{ïžãwðàÁ;wnÞ¼Ù¢ªªª ÁŠ+*++=~úé§Ÿ}öYMM –x@kÖ¬Y²dIYY™ŸÂ9/,,¨Ž;šX ´2&cžñkáøk´‹y§d}ûöõ¹Šgô?dË2C뮲þ3ëÿñØSÎ ®ióçÏ/)) ‰‘÷HRdxZ [ºWFŠÖôäçç ‰wíڵǎùùÈ‘#»wïþâ‹/¾þúkÌpèСo¿ýö_Éäí‹/¶Ãí;wˆÑœ9sHp¦—ÞšµmÛX~Ïž=…EB³hâkɨ!§Y”ËZ¨¤ú“œÐ>eôˆ´uåsÉÀC°A 9†À }”>Ñß(á+£Øó1™2òÔ=ÝìÕ«—-#d*A`Ÿ>}LÖq…žÚ ŠŠŠÈý!C¼9rä°aÃèÚìÙ³§Njgihmm-føüóω/lX¹r%lð*”$CŒúMVZZêH81t`ƒø˜¤ƒ¤îDsD%À ¢j!Jñ ÍU‰·¡Ëdú¯ÉxÖ•þüˆ6”aáÐû÷ï~LÒlAÂÞ½{›››1ƒ“¹uëÖuëÖA‡vùòå@¨ººº¡¡¡®®.PNÔ&SÇ 3gδ.2f̱µ4Ë1nDÞd"ò¦ñz2íêÁà!ÐBxñUWFÏòô,3´î*ë?³þ=ÍÌ Û/X°€ PY.R¢¤'uË{JK¦âRéö$'»¬¹šíß¿?0àðáÃ0`Û¶mR.•‘«¿ùæœpþüùË—/_¹råÇûÌÍŽÐÈö™^zkF²C¡$777hH)i™'Ð>jД x5Ù+É^J¦Bñyó–ºáe»víð@›6m´?›ìg£Ã†6É^H® AªÈ©2+ü 0À Aƒè¾skCÈl+`0`@A2„Ï+ü3nÜ8Û=;ÙäÉ“§M›¦œ—ŒP8;K71î]»œyJd©œpæ×¬Y³jÕªÕ«WE€o +½6"&锬…aþ‘Œ˜ˆ$¦ è"ÁΘWN—W:¨ »ºvkìÒ¥‹§ÑWQÎÞ"ýDH…K UD[LFeS¦LY¼x±#ÚÔÔe­¢¢¢¢<<°Æ@ËŒõ2tíVä§ÀQpzĈ¢úÖ[o™O0ƒÖ¨ Ìv‚sbzNˆ>æl!H†“… Ú¾Œœä‡nYfhÝUÖfý?{j™A‚?¾û”l¯.Ñ…>ÊÒ2aäCi0Z¤M‘!7>qM;pà@0ÀÍ[·%[tDf–{!„t}èСûiAO#ñfzÝÿÛð€PtîÜ™4Äݶ}ûöx ''‡äõH ¤é*JH¨0!^~ùåþ“‘6õ–ò¿i|.Y‡¼×^tKÞN]»vÍOF¦m¥e………ƒ“ÁûÚ-Š‹‹—,YB÷7oÞÜÐÐ@= +p˜cûB:+++kjjêêêô±³))Ùµ­»wï&Áûöíó;è¼1™#9lnYY™±ŠŠŠ†&(E óòòˆ©H ,…Cežf‹nœ4'3h±ÁŽsøoöë=´ëëŒãøþ ED©È ¦’?DæÆúÏ3/`CDiÔJœÑjkI( ±ULD¼D­Š!juˆQê%ZV¤(m *iŒ·FëRã%õ®Õí^|Jk‹kÓdk~áð|OÎï|ŸsÎó}>ïÃHpô„@›–ƒ¾¾½‡öÊxù,WçλcÇŽêêêC‡YT@‚µÃ†²²2‰ê1VÊü?hýĶ؊’’…í›m´í¢’â ¤@,Ä*ô,ƒtF‚d›ÌïÄþ¥ìWÀ Ñvˆ=USówáücÝ“zôèá&5}útÅY5S¨Û!A«îµ_ÕgeSñ¤ 7nTi?yP__¯Æê‰‹§Â¸aÃ÷PBSWWwéÒ¥¯¿þÚ0w=ŠÖÕ+~V#ôê|{È1F‚‰-àAš5JÀh‡[f »TX¿ô?~¼ž¿$&÷ø~âëÑÈhˆ­àëw4¶½OŸ>OÝCæ œ|Q+W®Õ²Äì’\E›6m !€íÞ½[ „´²bÍž=[Ì–`!àGx¾ŽøFâÃjÐó±ødD¨õ(~=þ‹Ùà\r¿höþÒöÿsf`ßt¨¥æÿ_›¿¬{2 rss322¢>!¨ÉŠ¡2þ·Ä¢†+é€aÉ’%J¨kÚ¾}ûâ°nÞ¼InhDÔXµ—X©#GŽ\¸p-,1yòä®^ëgÁÚ­:˜è8p 6 ð =1TàEè§MHƒ~ÈÿûÄP`õ‡Ø¨?¤w¿IèÅü¡¡‚ÑÒ¬à·yóæi‹ŠŠ ‚m§Ú‡r{öìáPÿ£GqýÀÐzâîDž$¼÷°¥E¨­­EÀyÁgzëÖ-ííÛ· 6¦¹¹™S]]._¾l°ÙÌ`€_Å´ÞbÀ'Ÿ|‚7äûï¿/%***øt¹¤¤äí·ß~õÕW‰¯‹òNœ8’á‡I“&‡ÌÌÌqãÆ!„ UYÈ¡¼úcávàÅ_ô/ÃB¸¡r°ÕÏr¬Ænif„!Ã? Tصk–ÉÂ8Z«°ÃsçÎ9l³ÀlÄØ ¤€&a†ŠäL¤‡ °Lo*æ´üŽËÖζ_3¤,e?Óº!3,\¸P%=zt\ߘ²7&e¹ýN7vìXÒIôÕX´uëV%ôÌ™3öáÁƒUUUjl\iXUNœ?žˆÐ)ÏùóçwõBŠ¥¥¥#Å>)þ„;Š¿~<0`À` 3À ð Õé±W¯^î¼Æø¯1À$ ‚ð´:µí¨€¾ƒN¼! 2D}¼Ýeee½þúëàÍUúá1êHöçŸî\´555'Nœ ßÒ<è!ô7nÜxÔÚzÿþý{÷îïÿúì³Ï.^¼è¼îܹƒôÆaŸüÑGiI•ë­ÎÜÜ\úØÕ ý‰Fýé>U ÿ…^@„½{÷Æ@"­Í 0L?IòsƒùØ@Kúµ={.±ßµÙÈü@f6•™‰æŒ3òòòV­Zå>øà<xÀh:*hjjjhh¨N E9r䨱c_|ñÅõëש0lˆãƒ ~ˆš››ý'<|ø0ÆhñCëãÇÀ@¿_}õ•ñgÏž…%Ø@ë_¦Å ÞˆÌ`~hll”!ÐÉü+1Ù•?AÊ=ä`ERQ+ÍPÄ„ ^zé%‰"Â"!诤ÕKLÏŸƒ ýû÷ö#†d°ÙW°fÍØfV%æ‘ ƒ‡íÛ·sDγ$·„+V`†ÌÄÄìPŒx€ £å 3ð9pBOÌôh•‚”: S»ÂR̲”u+fPµÆ·ÞzËu)îAjšº§&G‰Vú¢Ö¹ú©ä¯½öš›Q0ÃîÝ»Ý1m‚+*iعs'E8pà‘²9haÇŽnˆ rW¯ògY0½¦Dn‹ƒBþ…b~øcb!ëƒ ‚þëÑO°~èl°'  ðÁCC˜7>ŒqN‡<åçç/^¼Ø) Ƚ³àkßòèQ`ƒ"Žjkkùäž¾ÓfZ[QÁ¥K—ü—úi*ZíÚµo¾eÆø3ç½{÷´zÀÃ…Ä._¾lZ=˜áöíÛM‰q®^½zóæMòáøñã"<˜ÇpÚQgÈ!”ˆ¬Ñ[ÌÓQÛ™–b†”¥¬û0åRsssÕ:5VMSÊÚë0Së⢧$º º•––ºvmݺuË–-î¶4ˆj7YUIûà†H(»zqfdÐwâŽPk#~€Ï?ÿ¼ûlzzº ÚôéÓÇ' îׯ_ЂI¢õØ£G~ƒ\áDøú¿ƒ1Žæ7Þ h.¹555gÏž%ÙwïÞuºO¦=>li ¡§Ý §OŸpÂ1‘õÀ Àƒ ;yòäÇ,ŸüÓƒ‚ ˜†èy’˜©üÌ—˜bwlĈÈA«Ž¹©xYYYnRè" ¦;‘«¢‚yàÀXrSUU¥ìë)**2UW/«ƒîôn³¾‰á„ÁƒS–´´´?$ <Ѓ—ðCÿÄ ƒñóvl@zžK,"(‚ÿP„Ih¥Í¯¬¬¤¿H$477ߺu‹Ä766Òâ+W®Ðz-¥¦ÎŽF6RêúúzƒuÒñ;wîðà‘OÖ!!âæñ[ÓhÜ‚àÏ*Pá?ì×{h××Çñ?„B@‘"EfƒQœÔ9dV¦BÁiÅ ¢¤ZZ/PZ*Výà B[—jE$âµ3Øb#^šDDâ-Rç%S$1ÚÎUÚÆèšÔÚ½z”±ýרû{þ8œû÷|ÏyÎóyn6÷ÂýzP 80`žê/ö*Áe£e˜!cû•0ƒð[XX(öбâ˜T(ÖäźaÆ ¼Âò˜1c¦N*b¯^½ÚóÊKP¨”"ÞÊÊJ*&³jÕ*hAÝÚú·¾=óÌ3´¾k×®4=Ä]Q ¤ê»té`ØÀ¢IJT‚ ` §šh•Z1­|v²ÿßÃnݺQ¢E‹…×ÕÕÕ555}“ 6Psº )~CClhŸN¦òŸÉÈ4Ꮁ@¢¾¾ZÔÔÔt®«¿>†c€Ÿî}Gx477û4ÑoN¦éúõëú"%¤wüQͽ”× ªªªà%rÐMn÷uèi= Åj}º¼¼|Ïž=pšr'4‹þ’lùòå|uÙ²eT›‚Ož<9??ÿ•W^±-˜–FK¹+–ÊóÛ 5vû»%—F,> /^ìÓEEEÖVœlíÚµ›6mr)þšLÕ ß5P'@—`ƒ€„’¹e Ub†Àuÿ&MšÔjŸ}|–a†Œeì×À Çÿ裄åˆibì‹÷MQ@‹¨+&Oœ8Q$œ?¾¨¸eËOªÒÒRù²²2ä°sçNAÞ“¶õ?=B#:ž«”=ø¡}ûöŠH€ÜôìÙ“Ü÷èÑ#$BhÕ”›LH€¡ço’)³™V‡Þ½{ÛyÃÿçÓ@Ž8Ι3³UWWS^ZO¾‰8}'Á˜ìž={öÌ™3Ȩ9þ|mm-Z8yò$¢Àô-h"ÓHãÚµk”*˜SŠˆ;á6íí۷ͨd ü™ZZõ¹sçNRþ{Bµ¢&¥Aß}÷21³›RQQaå>ÚòÃZ ù6Ù… ôá]}úرcÂèÑ£9*§Å½ø!//O%ïåÃÜ›Ã6»ý‹OßMYºt)t‘ Ò•É, 9¸®Ci2haU€Áz,#€Ü ÅèÀ9‰LÐBß¾}û÷ﯧ5¿úê«É ­ò×ÇhfÈXÆžzfð#M5B«h&jA…aÆɋ]” QŒN6a„7Þx£  @ öŒ·mÛ&#t ž^ ,ðnjëzößoUyð€Bô›Œ0åää Ð+0P´?¿Kõñ´$ÑEè¦5X"¤íÁ·@ òÎ]²d‰WmUUÕ©S§ˆ>øúë¯Im}}=$@ 555ÔY$8 nܸñd¤9†¨T$å§“™íoÉNœ87°‡&ÊNîI?ÝÇ·nÝ"î@E*;™zD¡T€?“CK‹a”T”`L~äÈ÷ÂÍ`U¾¢ÕJöìÙ³}ûö;v]N%ݽ{·"O -9Þ»w/œdݺu+½.**â…Éè,u&¸Ô9ÜxèС‚W«ÔE¢Üxíµ× ’­Y³ÆR­ÄÊ?ûì3ëq;\±yófÇ0fΜéî€ l,ãÉ4pË‚Â1Ü8M ФrÊ”)0iÅŠjZ³àÇcfÈXÆžnf˜:uê²eËf̘! Jb¬Ðê-&^ 2D¥ûR²üü|‚%úé/NŠ¢·.6 ×Þz¢h‡Úú‡ÚÌ`C§N:'#÷0€î?Ÿ,8¡_¿~ñœ$ Q£Qˆz©Q¨ K—.Ѝ£k2sfee™_=™›6mš×+<³ÿ\Ð÷£G?~¼¶¶6„^%f8{ö¬À@—/]ºôÕW_Ñz´p=™"$êv.M7Jj"®ÕXÊi6666ܼy3àAÅ ˆh „À ÑÍJ̱cÇ|ÈG}"HæêÕ«–¤éÓO? %ÁÁ û÷ï÷›•••¬®®þâ‹/€Dô,M&o7P½æ .¤³£FÂÀ˜?ÿ1ÕV#ÓJf`¹¹¹sçÎ-..vØ!ìÛ·Ï y+±~ ó;°á­·ÞÊËËs³œ¾µ½üòË®›8fpâAqõdÜ;kæ!z¾þúëXȇxÔÃpÕGhfÈXÆžnfâÞøñãCË+‘ 9xˆ‰±¢«ŒXçuF­fÍšåÉ#ž‹ü±½nÝ:¯ª>øÀ íÚµkë¿ic{öÙgC÷îÝ©?9è—¬OŸ>T€@Äã1°!6ö…dö\ -ƒfxî¹ç²³³ƒÊnݺÁE§CéœÂ¢E‹hPIIÉáÇÉ.Z ÂÒS§NÑú††ùÓ§OË|“ìâÅ‹A uuu0€v_¹rEFýùóçƒ(¤ú+hZé™3g._¾Œ ~€æfº šššÐ‚4ŠøÁTðC·†à¨ ýé¾É£Hc…RŸ¶r bU¾ o|”èYN…H¥|¬¬¬ !¸YZ 4JO€¤Bæòòr´8p`ÇŽ;wîüüóÏ œ?>;vl(/C¸7[žoËØØÖ:DÌK–,Y±bÅ®]»¬Íb Ž¼›‚ü—?.¬ÃX†Û]¤–ÇÂ%~Ÿ 9È«ç*òœGQgÈáªúDëüH-à ËØSÌ ´iÞ¼y“&MŠ`%T#Æ80tMê¥ fΜ)<ŠÂ`<£V%ûðõ¶õ¯<Ö¡C‡¬¬¬^½zõîÝØC߯"*`' MšløðáJf·©†Q999xxtìØ‘Xàµb,f0jܸqï½÷Þ#ÕÕÕ”_¸p’*9r¤¶¶Ve}}ýÕ«WÉ75GÔ„¸3 A¬/'ÓM9Ž©‚ ?wîœnP< ùoïÒP#½qãÆwïšöV2LÒÜÒ‚îܹ##ýñÞ==}Õ¸& €E ”`€ÒÒR…6lØP\\¼qãFذ{÷n°wï^}0†Œ=tèЗ_~ég’WsâÄ M x8x𠥎>}º³ÃR@¬ÑBl¾ã`6¶õ‡î g̘±xñâ•+Wú ÐRUU…âlceee,&þN· &X‰£5jÔKÉ ~­É‚û'ã-A•ò*ßyçŸhý‚©e˜!c{Š™‹$6DȾdTÆë,??âĉè‚Nï¸õɼž Õ·õ<)Ö®]»öíÛ“þ¾}ûÂZÑ^ØGƒ“…lÙÕ#FÊeŸ‚>öèÑx`†ž={Êçææ>PÝŒ2döìÙ¶‚Jþý¾É?ÐÓºº:rO̓ h:*ÀŠÒ¦¦&˜qíÚ5õ‘'»xCJ—/]ºd”TgZÿý÷ßC)0ð õÆ“~;Ù¿’ý;™‹•°AHX1%ëh*KfÁÀ ¬¬ -ð«¢¢"²È¯Ã¾}û@MMÍÉ“' fð_ƺSÇWé¯-Æ2¤:¨1¡ÔlŸ|ò ±.((@³/&ãÒ¶Ýæ‡FcãpûÎ;·þÜúÛo¿í.lÙ²eÛ¶mÛ·o¯¨¨À96ÇRËËËýŽû‚ôtËËËóižàXæÈ‘#ƒÓ«>ƒøbŒ”{¨äB³fÍBŒ­_𣳠3d,cO%3£… zøˆ]¢¨¨EædUT¥&² ScÆŒyóÍ7E*Ï%o@!½¤¤DJ³–/_>mÚ´¶þ•'˲²²:uêd÷D{:e ”`Á)!—Œ|ü9™}ÆlÏ' hA&;;[¥ :ÿ‡ý:íyKã8>‰Äÿâ!$–4„Dn“¹“+S‰‰X‚pCJ%ƒ6–Fc ƒ4"vµEˆ­c‹†ÆZUkDjÏ ˆ-UE·c†Ä”ªÖ¼ò=шëÎåúÍmUŸüròüÎ÷|Ÿóœå{>ïCæhƳ¤ÇPáÒÒRJÊ¡øJÀPXXxëÖ-²NIIüÓ§OIy{òJ»9ÏŸ?*@]ó: † DYMQQ‘Gh¦=Ý///WÇ!Zˆ # FägÏž! ¯{TU]ísxSUå©frçOŸ&ë°¤Röýû÷SömÛ¶’jGQÛƒú”¤T\\,ŸŸ"{]Y©G½ðõ¨ÞDF2éˆC %O©% Hvv6 0aîBhä˜L÷xgV‡›ax«Õ_¶lYnnnNNŽ@œæ™È­Áœ9sFŒá“OøÊl ùÀx ŸN‘ÙmÚ´‰‹‹ÓÆ_¬mŒSÙ±Ê9¶ÖÀ Ö`õ5jô·ÈFå˜rrâØð}d$,œ¨DjРAη‰'ºØ†ãÝyål_YZZšPµ=š:g7Æ f2\$ñ€»d 0¨:tèÈ@ß¾}U*-½°m#£´Lm–‘‘á‚™˜˜^6lØÔ©S-BÀpæÌByíÚµ+W®x ª4”ˆ“*òjgò‰>Á}ÁUâ»wïjïÅÛ·o“i²K÷QçÉ“'eee€Áë „A=rP#`è%€Dˆ¬k***Cå›7ÞY†'Nœ 倞îÙ³gß¾}Û·o¯a¶sçÎÇÉ›7oRÛ@ X%$ ý•°”ô ô¨_XDùŋҾ~ý:ø1"|räÈ‘%K–YˆÏ ±ùüSdßEfâããé²%‹ÉÒ[qÃ9uê”aîÝ» ™ ©† eµqãF°çÓ³úº–ƒïÎÒ[YÉø‹ 8ÁèØ±c …`Á7 ø½“œck ÌÐ` Vÿ˜aܸqRWxààr–ºò8¯ºwU5N'Àššêfäìut°»(-]º433sþüùD°¶‡R GuîÜqH0Éýúõ >6 #GŽLJJ2½,ƒÊÞ½{[ +ÒºukêвeK8‡hfãxQ´þýûcªqéҥ˗/&­TR%ŠIî±Á¥Ú„žæúÑY‚KÂè,e÷6xª1ö ¶EEEøóàÁÍH3QÆ´˜óøñc5þ‚‘9¡C" ¥Fd Wº&ôâ£rÈËËäsÇŽ€!++ üü=2Žf´ü;2q^WV¾}gF,¥¥¥Æ"¾¿oß3P¡þþýûºÓ—Ž·]§OŸ>fÌÛ&7Ãf•àrˆµyîСC“&MbµúDDG•x8wîœ1š<%¶zõêiÓ¦Yq)HO·nÝ8]ºt‘tTß12ûTÚW499Ù~X³fM¬rŽ¡50Cƒ5Xýc†… ºyQ(ÇÔï̉¤Ä ÔíÏ‘ >|ÆŒ³fÍr@¹†-[¶Ð/¯/^¼xèСı¶‡RGè›@Hp‚sÞ¬rp‚y=z4f5j”惷ÄÄDehج-kÕªIKK›={¶›©µÐXÁƒ?ždœ>}Ú®»rå ` ˜¡  €bÚu€v“r%ѧY¤– ++**(¾’æÙDF©½"`€ÿŠŒâ“ïâââ@‚<}úT˜x€j¿ŠL|‘5 ,!2ùVj°¤FÁOž< À'f°—-¬_¿ÞXÔZiÈŸxK!ŽÏJ&J´£wôòöc& #B&Ç××±cDz³³ÁöÙš·?FfŸ#:ü`ªiqûöíÛ´iÃÕ×—Þ¯]»&Ì`9À˜äkòTïƒòeÙÑ-4l°g”˜¡KdPA’6ƒ$ù$ÔûH!zaα²¯‹þú ö;¤ñYö5æü­Y=c†æÍ›»¥’'÷,ç§C)!!ÁêìúKd.;4Žº9—ÒÓÓçλbÅ ÷µíÛ·;Ûñüyówµ=Ž:mŽwHöcd½zõâx0íØ 55udd$¼¥¤¤Œ7@ˆaÆ…U)ÕL™2ńϙ3G{‡ 2vìX¢Csss©Ò… \fÁf¸xñâÍ›7>|XVV¤Ÿ’ÒwB\^^NRý¥Åö*¸sçν{÷T*‰¾W”T›.#НþydA©‡ðÕÁ@œPéuP!¸ÊÿD†(DÌ_¹r%ZàØWÊÌÌL±wï^É£ŽÐEè½Fd3(Õ ®Ä‚À ºöúùóç‰ò‘#Gòóó÷íÛ—••µdÉs˜œœLSgûÜþ'ÁÐb»|&………7nܰ’sxìýT}JÀ{Ñ¢EVßšB•Ý"1)ù<ããã9þúH;wî¬<ÕHÛ^ÂX(¶i¹}uÌðQø¬1mÞ?Õë‚}9kVŸ˜¸žP.§S·nÝ>î5üu¢r<¢JäÉÝÖÑçd[½z5fp¶/\¸0##ƒ´Õö8꺹*Zp¶+M8'12xÙ¤I“0p(šó_é/<à@‹%ÉèÓ§·4Y€éÓ§:tèĉ—/_&ýtQQQII ÿÉ“'`€Cˆél OÉ=e‡Þzðà-SjùèÑ#mhnƒpÅ?#Ó&°{à„ו•þ‰€„^X]xTU]­÷»wïÊÊw±{÷nl$¨³~ýz¾}¨äïß¿ÿìÙ³:•CÀ ß‘ÈêB¨ Á€„6oªªøÕÕÕ??0=¥Ñháøñã"›"%¸Ò×ĉÁfœ`b‰òw‘ùÛ´iÓØî-Z„äMx0Æ«W¯Þ¾}ðÔd i< I Ä|={ö”[\\\Û¶mm•:uB °Á_õþÊ\K_¨iÔ ¶™‰}Ìð¹ >rMå/9¿jŸÞòKrþô.bb?ß¿ÚþSžþþù Vo˜¡uëÖô(--Í!éÌ ŽP7š€ ?DFÝ’’’ÒÓÓçÎë‚f njëÖ­s²yZ5jÔ¨¶‡R×ÍñNÜþýúõã <جrüE\Ôß*LŠlòäÉ3gÎ4Û˜3{öl`6oÞ<0bÄ DÎÀ„0óh× EbD Å§Nºr(--%ëTžÚ’{*Ø@=Yç€Ì ÔÐtr3< 5„^qÿþ}õ"€€ / È©|ó†4“u*¼ÈÙO‘i#`Õ¶nÝj ǵk×ÚEÊåË—ÛZ6•!äååÓð¢°ÒYNèÈ©ó®Ù0-¹¹¹YpØÀÙ¼yóŒ3L¾Ù£È·k×®„8Pÿÿ¡¼¦%def¬Œ9yò¤Á¾?(5fÃjuÆúÊG)±öíÛ¼a2„ "øíÚµ˜ÓV 1Ïü7Û7 ÿã•?Ô3„8u‡>+‡/yZ׬Þ0yr9=z´ÓùãäqõèÑÃ)Ú+2Ø0pà@zD°b‹-r¼oÚ´ÉXÜ,X@ãš5kVÛãø ÌÜ"K~ŒlÀ€¡OŸ>tÊ”)'ddd@H³©V­ZeÚùÉÉÉXŽ‚X#iX#¡;vlNNN~~~!7YO¾>|XRR€Ö“~j¥Æ_*ì)i.‹ h ^ Ç#%Š õ(ÂßáåË—^¬¨¨ð(È:óz ¥6ÄQ3¥úâÈ <˜ ¶mÛ¶aÃC³‹233ñÖ-[ óðáø'x]/^¼¡¼¼œOXAÕ/°Á«W¯>xŠ‚ƒ…ÌÆÙ³g}’ÇŽSš¥]»vÁÌ` ˜O€c+õ}d¾…ÆÇv¤¤¤ü—ýúíºÚã8>ýÕÿA´…5jà¼Jþ‘e†—œfþ¢«Ó~@T£lÑš:›NÅËeÒú±é&¢BÍd—2CFš?nºœº™I?nêF—f©ÜŸCß;¶ï¯™_××|óåÃùžÏ9çó>ïsÎûõ<ÿwïÂ$c±„EpzÏ…{–Û¡³²HÒ76ÜvÛm°c………ùùù !ðC GØf°IÓþ¹ºž_±ýi™!§*ôn‹OŸ.¡&î€õ96ZrŸc_ì]×±t¼Û²ÏãÖôï˜ämï¿q}HéÌ5¶ëƒèWYYçå sĈR“Uzøá‡ƒ\êÕŒ3\oiÓÒ¥Kׯ_ïvVÙÚµkÕŒ;v°ç‘Fz&Mš4uêÔ¿EFî=§L™"ÎÊd‹ú?ÿüóÈAª'Ë–-ƒ ÂëYQQAX««« œ6Ó§O'jVJ¡´´tÕªU£¨¨È:ên]?üðÃæææÀƒöövÊNÄ©ðÉ“'Û"Sp¢»»»32 @îÕ‡f $è°„«Á]]]`€äÀ åÔY*¯½gOdjh½çñãÇaÀ¿"Û¶mfÀÌn]d•••X”ÿ---ßÿ=T0”¯xß9 0pñÒ¥¸À×r( ƒha!Ð{öì¢;wÖ×× %@hÁæ'Ðö¿]­,ÎyyyW}3˜rÌCkÄ%ØrEos6º… ¢Aˆ 8À&° xå¡C‡zÁs› yÖÔÔ,X°àª;vƒ’½;`J—zwì]NÉ ‰Êõ6nËtjR~"åÛþm’;sí:`úâ+aºêÊ!ùlP?~¼ä3yòdù‡¢¹iLžÜ_þx g¹¹¹ƒ=¬±›o¾Y`çÌ™ƒÁfΜùøã{ú ”—,YRRRòòË//Œ¬x’ÑòòrÀP[[Kgß}÷]ÚŠ.ˆˆëç¼yó,¢ŒA\Dqq1Ûºu«[*eüøã=zäÈØ€ :::PÅDÙ!œ:uêĉß}÷]¨ 5ÇŽû:2R@"Ð…6žàìÙ³ÆAçÏŸ⮬>ƒÊð!c~þùç‡&Ó4zÓ¦MÜÛ¾};±6°‘Ì´ªªJ¹¡¡Á‘3ÆI„j&ÂùÖÖVÑøì³Ï‚LÃ#òV€ÙóŽ@ì8¸å–[2±„%ø¶ÿþ>øMñGðc>Ã-1Á<\¼x1zÇ3|S2'†ÂÂÂ;ï¼Súp„Gmk9°™ð| ö'a†˜õ®LYHY9 Ÿcôñ$%3Äýn\~ÏúïäßMÓœðpÅñÌ„]Ì@Œ¸íþ"U† )ḧ¸ÈHDÊ&L ®`óçÏ—µÜzˆ—$¶aÆիW»óÒ©ÁžD–Ùí·ß>{öl¨@îæÎû÷Ȥw×IÌàzˆÄÄ-TDf™¤QX’*ø¸Å! KóÄO\•+V¬xñÅaƒîï¼ó)„ }ôZ ’¨àË/¿ü62êI”é{[[›ò©ÈPA[dZžN ¹Ã† #Ð…š[o½5CûATƒ{LÕÔÔ$¶1·?.8Ë–-CìVÞómldØ€{ùùùÎì_#ó—Ïåt¼;¯”ƒ'꘦9‰™!‰3ר²rss%“É“'c©2\[$ GÎ O×™x`Ú´i.³òê믿þÖ[olÀ DJìyd™ »­Bñ1ìÈТE‹æEFÄÙ dbåÊ•bÖ­[¶EFXU>öØc¤¨¨νúê«Þ† ésÏ=‡ü%Êï½÷žíG¯Idgg'¹<ÅGÔ0' ü… ÐÂÍchŒÈ™z} þ € zén}Õœ?Þ&*¯‹WúzûÃ?ÇÓ˜D2˜¡¾¾þí·ß~óÍ7ÿ™ÙÙKëׯ7/¯>ýôÓÖÖVâ„_~ý5èæ¥«Á ¼pႹ8}Ÿ|òI8›˜jÇŽ¶´È#·|0Ð9&¾dwTdÎEæ¶DÌC¡Þ¾};†9tè¨ÆêwïÞmÅ¢cÑ‘@8³œ,((¸ë®»¸h?œßÀÿ^ñUÚ6IæüOÇn0C’B¢Aâ6HéR,æò9Ñw“7HYÙßrúqB¢WúVNbfHâÌ5¶lg†âââ'Ÿ| >|äÈ‘’L¸§¸U lܸq€A9sfii)£\²½ëVë/¥£€ƒ=ì3 ¤sçΕÿI¿ë­…Õ­ˆ8———ÀPQQQUUµ:²åË—744f¨­­Õ@÷3fE†–-[±ÆeeeÐ6lÞ¼ÙösQE0àèѣĈÊÆÀ gΜéîî&ñ¸êjÐÑÑ¡ !Î;GaI?ýÒæçŸ¦þ*uÁ ¡2N@ 69¡W¾¬­­-ðŠ0`ss3f°s°ßêê긊ÔTF¦²©©‰«ÚóÇç~?'ô6Nšˆh>|˜3{÷îœ={öà.¡bÌ`Eœˆ{î¹Ç‰?~'ún\·Ó¬Œ;…œô˜!yÜÒ fJg®±e53¸Œ¤G}tôèÑÒ‹g¸žH;¦§´ã’õÐC=òÈ#¦F³äv‰ 3¸‚wÛÂÂÂÁE–ÚìÙ³ayZ°`ÁÂ… ©€lxæ™glž+VPáEÖÈ_Oœ&ò€aÇŽõõõ–CGWH¼±xñâ^xÁ긢zEˆ]HÁƒö¶_kk+! _|ñʼnÈÈ=M'Íÿâ¥K?ýô­WäÈ’Jô5 øVƒÿD HC9讋8ûùkÀ@ ÇŽ3Ô׿¨á†È\{7üf«V­Z»v­é˜ Ù>øÄåË—¯.0»ðË/]]]üÁ ál’fÏM›6½ôÒKÏ>ûì¬Y³@òСCƒÛá£FR¾ûî»oºé¦Ìm‰˜‡û÷ïß½{·UшÕ[DQâ¤]a«8˜£"srù6bĈÀÿްN±ý&¼6FæüOi7˜¡áß½T O—¸õõ9'=Í Ó¬L$ŸHßD_ï3þ@ƒ™!Ë^f˜8q¢‹ª;‹”èªâ)ÏH;ÈA!äœI“&Ñ5÷Y-¹½.2y^_ÙUãAœBV›„/íÏŸ?_‹‹‹‰¾/Y²ÄÓ•(}PVV†Ö¬YCU…½¦¦fË–-¤(¿òÊ+%%%º<ýôÓ¤„oÞ¼ùý÷ß÷¶¼¼×½ñÆ*ý¥ÂÔ‡ˆÃ¢ÚÛÛ);éTöììì¤ïˆB0¸Þ ÝÔÿ«¯¾òʳ=2lpöìÙÝÝݧOŸîééß|óͩȌüã?ÞPi:È1îÕÖÖ˜1‘ºº:eJËø‰(öíÛ×ÒÒb@ル œä• ttt:tˆWÍÍÍá„nܸ±ªªŠ([«c烄!C†8d7àt^^^FwE~~~ðS<›šš¬uoÿ­’´î6É¢E‹¦M›vÿý÷O˜0a̘1ÀàÞ{ïUo‡E622§{Ê”)v4š:ujFg‘ȲŽÂ3‰%èkoƒîsÎ@”ÿà–¥Ì››[™Û0^äF ·ü%27yÒåå¾ûî›3gŽûlii©¬N¹(‘ ’WËÿëÀ¦OŸN›žzê)‘T áþH ÔÈíþÚk¯aº/ì•••ÕÕÕ–ÔJûÔ$À[€ [N3[‹ƒ-WþýzñùËã8®”RJš$"—\ µÛÏÚHrI±ŒK¹F¦Hnõ+Kë¹÷[Rc\»#d˜qƒ$¹Mã¾b]×ÊdŒiŒ[ûØsúMö÷óûý,c4¿¾ï?Nçs>çsÎûœÏ9ï×óšŠ6oÞ|üøñóÁè>xPqÊNš£ÄÃoAÅõë×=ÒkÂúòåKt¢èc ¯Ô?~A-¨(uS‚xC *‹h‘ŸŸŸ••ÅgÌ€¸í,qUBpÛ‰òêØ±czB#c†÷ïß—••U 3”””D@âó©S§PÊ¡C‡Ì›““£Î%;6~üxBìðGrŽ´+(âkŒ>}úDWý)ÿ1##ÃÞ~¸§OòÓ±q7!=¼éÑ£G—.]Ü_×¹c0þ»Ñ(-´nÝÚÖaÔ¨QŽýÚ«ø¨U-f`Ÿr¢*Ç“O·Ê÷ùÃ_\±#ÿ&­Š2ƒ¸Dž¤·Ã† +‡Ýºu“ªˆ3B¥Šø#ÉM9j¸-ç]Ì·õêÕûVþÿÌÎO™2%ƒAl2Tr• èË(—.]ºjÕªåË—¯]»6==Ý_ ¹€È¢ 2þ|˜¡¢³·‚†ÌÌÌ={öœ>}úÂ… Ø€"߸qƒbª“fªE¨GÑòäÉ¿ƒE~xøðáµk×”‘¼…ñ1¶``!A»q ‡R£ŠÆ³gφììì­[·rÕ îYˆºÒº°k’——Ç>˜0ü?8ðIÆs.•––šÂt‡>zô(fÈÍÍå!t±á'Nìׯ_»ví¾ æv¨+Õ)rRRÒ×>åÞ¢Û…ñ>'ŠÀ¤s"à`À ÜÙN:Eìç'ThÛ¶mçι­] f¤¤¤Øð¯½„Z•c†„%¬Â­*2C:u¾&ÕRD›˜RÁE&%Ô/]»vŠÇ—ãeË– VÈxQ% Î7qþ›X5*|Ì‘#GN›6 $Ø^"…þŒ()ׂ lû¬Y³06ÀikÖ¬ ~ĦM›5ü=¹… Fê˜;w®ßöïßO )²:uÆ ÎÛ?‚!‚NÊi:‰BÍš5ã8*8¡víÚÊšÁ*ÂÇÿ±#FLž<-L ¦Nñ©ѧT#üyóì66Ài6Ë–-iii‘ØÖ­[W¯^.|¥'”~zô úìØ±Ã }úôìÙ399ÙEŽÀáŸÃÑÿ˜ ´k×.%%ÅÁhÕªU%,äCK0CÂV™AJ+ÂHLQQ„Á ¢Š Ã#–èÞ½{ïÞ½GM¿hÖÊ•+i–H¥ÎùÔÔÔoâùÏe¯L¥ZP•ZµjÑú¤¤¤ È ›4iÒ¬Y3•† Z¦@Ú¨Q#õúõë׫WO‹›7o®®pr›k,~k´Hq®Ï¶ õTÞï˜L}æÌ™°f)‰ °ÕÀægdd ‡¿Û¾}»ô“àâ 6è3#ØÔ©ScI¨ä†Òâ]»v)‰õéÓ§ eAA)¤³¤¤„ÊSRH?Døg0 ¹B¯t†x-xu3˜Ñ°„¡ô!÷€$Ò…ö¨ËDÙìÙ*8¯Ü³gÏÓÓÓ=ò^9räܹsãöíÛÆq_"6°·ïÞ½{ÿ^åÍÛ·_ >7çíÀÕ«WÝÊÜÜ\ŽÙ%•C‡ñÀŒ?Þßù.˜«ªý}¥ƒÑ´iÓÊ”Ú7r5úyêÔ)ä`ó-䨱cxUbKÇ9H† ‚xowôü»Ñí¸à®Ûg™¬ñ}0Z¯„ Ó§O'÷&L .¬X±Âæ“×]Á@T€ dW…¦¬[·È9oPÁÿŠßFE ÂRÔ³gÏFf8|ø0Y¤‡¬SdÒLƒ>|¨Ä@] ðƒÆ[·n¡•0 ìõëHd< }îܹ£^VVöôéÓ¢¢¢/^x«Ý[º Ìhê}ûöq˜(ó$Ó’™™IAoÝ3šÝ !¢B¤SÇÊ’Cii)W-™@“bîq#–Ž7ŠsAÊï…£‚ü}u mVàÑýUs8‰»lc~0«°±n¥âÌø×Ó¦My† ææþäädÌá¿[·n|¬;á¼å8íx5ž+¤ÒÖ’`†„%¬Ê1†DÅŒ!QÒ!†€©Kôë×oĈ²-Ù®º~ýzK’åÉãìÙ³+ßóÕ® $4hÐ'ÀaP½Q£FÊ.KûS°ÁƒÃªŒ@X²ŠWv£G0uíâ­¯”'âPR6Ø`¢HŸáv­Zµd…ô]†8iÒ$ð ®BæÌ™CÀ0[¼x±ýء¶mÛvÛ¹s§òoÁÒÒÒtX¶lÙ¼yóüŒaŸÓÿ‹:_ºt)//èÄœ`‚ÊÆû÷ï#BH|qq1lˆð@R½zðàrÐMRŽ.*Ð$xÔ£(˜þˆây0ãܸqãÂ… ¦;zôhnnnvvöÞ½{±ÁîÝ»•åk9pàß´èsñâň+/_¾¤ì® °‰Z^¿yóÙ¨Pn4xôÿüùó&u7m ÷"ÌPRüælÐ_wÄÕ€Ùþ8fp–@#Œ¬ðcüËÿlÑ™3g@¾² û¼eË'(:3“'Ov~RRR¸ív+{÷îÍmg•ÿ]‚9ÃêJáÑê+‡£VÚB̰„U-f1¤¢¤PÐ bˆ'ÐSÙ“zçÎi%`jÉbˆ©’¥ŠZi?~€•ìùG 0$%%¡…ºuëñ˜ªX‹ŠÜP‹ÈYžmYµŠå÷ïß¿oß¾Èp9rôèÑ~ÜСCejƒƒ©hWƽ`}A Y)EãfÍš™ËÔˆ¥z°j"ÆüªÛàM¨7¯?K{>cÆ Ìðç`ð,55Õn§Û´iÓ®`YYYd7##H8Hþˆß´hÑ" "þƒÀ@J6nÜHŽ©0<œ:U%~ˆ+Z(,,¤ï´8 õ€¡  àîÝ»7oÞÔ¢‚ H96Ð_ MÿW0íW®\1þíÛ·£ƒW:x3Lm:¢œ™™Qq‰ÿÔ?dó*ò ºˆ½*))ùrBø‘¡ƒ™«&BSæµ!ü‰> ‡ÿ°_§¡].WÇ_ ÂED‚"hD´”ûBÔ V Z\-•¨5Z¯Z­— ÖÒºà¾ïRw­KŸ6ŠˆÛUÜ0*R× ¨1Qã¾ÑsHzáÚR[üÓÀÿ¼æ™çyfÎÌœ9¿ïuËètêÔ)¶-§ÉÔh†â»ÊF…­äþd¦`ˬÛÂ… íõ“©8•h!`¸oß¾"68YüwìØQ ÇÁ©7/,ÎÍTÏ›H–²–µÄ ²Ÿ eü:1•7¾®2u‰0˜Ý‘…¨Uu>—íeþÝ»wË0™t»ÚB‹«9Aoذ¡{_ä@´£ìܹ³–„i"À@Ù£G^U&—*q‚2//ü:YäX)´OŸ>®iÚQA·Vƒ¸k±n>C(xÄõMɇœœœ:uêðWiŠÇ@ˆOšY~›lĈß'à Jææ8aÂÌ&Š–-[FÈvîÜ´@æÜ7…“:lÀØ€Ì)1†]ó/üÐÉêÕ«mA,..>~üxƒ¿ÜUHVRR‚ ˆ;¡/++ƒOF¸ƒ.^¼è-…˜¡,ÙÝ»w=VTTܸq#ð <Ù«W¯F¼½zõ*?Îs‘³}ûväYXXh ÈG 휡ƒÇ“ùþüùóp%z0Ðëׯ™wïßøøQåý‡ÿ#0èÁL ñ†½} K jY¬ÏáÇy+¼a˜eoöÚ.6àCRkËš5kV¿~ýZµje0êÿ3ÂÃ2ZLûxùòeÔ·téÒiÓ¦áC¯Æ/\(€#æùïPÇ,~™,N=·Žö™ð›2eJff‘e†¬e­1­—[h¥4تU+%Á• Û&‹Ü"‡„â,Y²dëÖ­'Ožt‘”Ì‹“ÉírT›6m2évµÕ®];'Qnܸ1ŸåÀvíÚA¼*£ûô]æ”ó•ùùù.ŒêÀ``²¨ûÆ—]`_0@ r°VßV™[žrذaãk%3KÂ0,77·Aƒ¤'WQêøAžÿäDêÕ«'uóí»dT>€A…è“·?•YÉèm¥¶t–‹ .œ8q‚ÆÑß7Ò‘U«V­X±ãM:U?ãÆ›9sææÍ›‹ŠŠüB‰£¿lŸ8<}úô‘#GTl¨WÈLSÒ+W®øÆv‰ ‡€¯´¨?~ü¸´´ÔZ>|ˆˆ» ØÐâQÝú¹téEC›T˜Æ~nذKê¼ ™`à 7œSÓ¡~øƒFhúOuŸÖ+ƒ">×*++ùiFOŸ>UÇÆå³¶Ö“ob~ùòå6Â.ÓVšë¤ø8#tVàýü¢fè¹sçòÖ õáI¡2¹Ê¸o¥ ±-žE©ÓáPÿ"™8uŽ T05ÇߣIa`äéƒ L!Ë YËZMa†.]º )EE®% )Eqrï½¢§ÔŠódHΗüé…d~æÌ·NC† ɘÏaR´›` È’vóæÍ%:Shß¾=ÕîÙ³g×®]10;â>hРÐ÷Ðú¡C‡j>|¸[˜Šv~„à/%ð¨ÄBÅ4%ó»‹e'ëÊ‘#Gj´J>“lå^À+7P)‡M›6 f@ŸÄ˜Á²ó-PaìØ±8M]Î sæÌù> ®½€Ú":{êÔ) ·ÿ~Š\XX¸zõê¿$›?þ‚ .\ùP„})ö苽SÒèJÿ’ž½{÷j‰]QQÞ¸qC…¼B…«W¯ªÐqÌàN¨”••Aí¾Œ·¯_¿.//W÷£P1Šq…P53pÆ pÅDŽ=j.üñ™Š 0hª·~èðÙ³g¯^½ªýçÏŸ¿|ùò¿ …°wïßëмxñB…ŸáÆÁƒ•Ê‚p’[|[ìP3çÂf©€‡&M𨻠Çÿ²Û_;ÔGë1ü”)SþœÌøÿU²®Éüb"Ž60VƒcFâUÑ“d¤ øŸe†¬e­¦0U¢M¶uëÖ?K溡.i ‡¼¼¼=z`ª* Ñ yÞ…4n|qÍ$´À÷ó9h!''‡ eY. G–ãjŸ>}ˆ{~~¾@šN‚_eR(þ ýý.Å÷Ù˜1c”²«Í ¨Ð r0wùV#äøm2¯ ’ù~üøñ~4œðeÐE·nÝÜ㸄~ž 3p•ÏuëÖý*Yõ\„ð ZXüÑ£G7.PÛ¼•ö§OŸ>kÖ,íZHRܺuëÈå¦M›$|—/7Yœ@¡þÁ~…v™^q¿¹ñBôÊŠ5¸Ð‘FÅ¢B(¸à‚‚b£˜D3¢VZÄ¡¤ŠŠKDD±¥ÆiÊ8XIºÇLD1\0—ˆ-j·Iûá9(vÇiÍÆ‹ÿ¹x8ïó>û{Þóû>ÕÕÕ”T=3lß¾K`Ž6oÞìQ¹nÝ:é7”úwÉh·¬ ±L*9cÌ b%¥¥¥>± 8X‚S\\Œj4PJ¹®¨Ò5~p°Ò5T=z´«ÊiÓ¦i£»‰ìŸ˜˜Ë8UrÌk"™ß–W[[{ðàA!D÷‰;ÁåÓ; @ Iÿž={”„ïÀ; øE2Êu¤Ñ”Ú :F³Éêëëë’©p5¸ÆÈŽ£l€îÝ»'8ùíííb£-Ñë³d‡Ú¹s'Bð!„º3Ïa¢WÌ|,d.jnܸadÃÂ’¯^60 >Þz…T>~üXß4‹hlü«W¯: ÀWÎmÿþýÖ,xpæ† | áç|ˆ8­­­ VeV‹â|Lâäx|”}ûöNÃX¤¹,Œvß.\0¬ñ=zAØÙÙùug§Ynß¾ÝÑÑWb pBÀ†ç/^¼¿ƒ´¿|ù2ä0±æsçÎÙ¦5X¤€±rëÿ+W®„Ðñ(‘ƒrÀ€ÿÿÉü³ ,¸wÍš5~à^ä "~ ‚Àó³Û‹»:4~yð€"Ô ‡øé0ÒäÉ“'lÈܲ³Ìµ¬½ÿÌàzK¡Ü8h±Ì0a‰Bö+”ü¢¢"zG=åãõL+-?{þ<£Ìiz÷îÝ«W/÷8™MârE¢Ë¤sÕªUò!¡§ò’9Ñ·¼O’Éð$‰>ÆÅ¶®®Nò§§*=Æ[F˜B­”UUUá6D‰d]s™ŸÈ½/e«Nààøß$Ã#KløâÆA5 $@0 é}Ê”)›Ša ¥A\ Õðcäõë×Ê£ÏH(×ìÙ³ ¦þt–ÖC:Ë'ñ_$³_°d³¤?„X°isüøqoOŸ>­Wp‚@õ´;FÐRGäô$3—J-ÏŸ?¯‹òìÙ³–¦“lð@vÛÚÚh7Ç _ ÁoJkFt¾š£æWWWÿ5™·¦6…¥Òœ9s–˜ÂŒ`àéÓ§06pИHIè‰>õ÷*¹§é?*EÇP>¨öMMMŽ( •}š BtƒêÔ©SœPö[·nQÛPjÚí‘òÊz|›­NVYYi;µrÇëªY¤/âëØKüG-F¶ªK—.‘ucℯ;;#ä8æR !8Jm…š¯’}7-hp'¶Ñ=jø¦F²Ôššë÷]„ŸóÇÕP!˜Á_ã7ñ³ˆØ.Œÿw7$ rêºuë‚T#nÁ?H”••Í™3Ç^÷—ù×ì'ÄŽ@öàK¶i³£Fš:uª‘(2±æ,3¼Õ>ÌÚm™þÄï93Ì›7Ï¥uæÌ™£“åççH&cðe×%K–È9»û 5ySºjU¹¹¹={ö2dˆ5̘1£¤¤„¯X±¢¢¢‚˜îÚµË5PôÓ/x Ü›Œ•²=±£AÞRJ¤ü{2ÆW{†F¬óD3ã˜ÔÔ¶Ì`aJàó9vÚúÁKËËË4hPß¾}»*ø»ÊȺ˜H(7`UèŠCìŠ"ø .E]`?û˜1c$~ÜÂ9r$:â#0 %¶3±æ³Ìð6‹]gíÇ2Ÿà߯)u&ì}fºLŒ,©°°'Hr‡XË„á7NžÙºu«ô.óËÃßz’T¦  àÝ—”““d`³ËWãÇw’úH°LåžëZÀ@åÿñßFexꩤ’uuuGŽ Ÿ£ÁgÉ<!D>ÀPê¨&Ä+.¼t­ªªêãdfüS²7ʺÔóæÍAJà$Ñ]ÒpWÅ®˜!JùpèСQŽ;6T’^“ž7Ñè’%ɽýû÷—¯°JQQQiiéòåË#ÅÑy›úP™¿%“Éâ&«$4É} ŠxP$ÙáÇíEíC©cœÀ V[[kºšše`ƒ=:’ç(äaDz*Q†²ƒ‡?$ãS|¨À ®œP#u«Ä^JJ7Åždœ¸j`ØeË–ùLh3È󜒒_ 6Ð/G<,) ŽÛ_Y__ïÑ)ûçÉÈ:Vž:õöë-´êåŠãøƒWñA|Q¼ ‚bK%bID%Þ#QQD£µ(¨b_zJ9ˆØZJ«â­pžÎK=Ú "FCD—›hbt5Æ[LLB?…û¡zŽ[lI›aþ³gæ¿ffý×ï;—•¢ƒh~õõõZÈ¥JKKKCCƒº¦²™<´KöÊü€D£ŠÂõV2ßÖÖFµ½1˜ñY×áÇUl¦z ²ÿË$d0¨@” nPp’Éd:;;èêîF^°„>w“Egíþ –xüø±Q=½½½‰þËП•zMœ,Ç2¾HˆC‡ëׯ/..Ÿ¸Ú2*ÙðáÃsü97âÃ!ñʈ1ñ¦n!ÈAh‰+L.”””€Y³fá¥:l€ Vê1˜¡°°°  THb Ä„9wx€>jÌðe­Ÿ3ömÛÖ­['Biar2éB”5ºe¸Éº^ÅÅÐ|ävâõ‰Îäåå 2däÈ‘r”$¶jÕ*ú(­yõ±cÇBOÉ:úîi=¢T^°@…l ÌШ°„¿t eÚ£}ÈŸSPÉ^- Y\0YUUZ sß&ûS²?&“‡¡W ¾N&£ÊÕú€ ¹ü.™ÓW—ºuðˆ:t6mNLî]&AûöíÛU***hrÀ k×®µç°JE7£lÿÑÂ?“©kQ±^KHKŽëêê®^½ŠD×Å‹‰²Ç BI=‘CccãíÛ·ïÝ»G=›ššœ»ƒ1Ì4e—‰7­’Ê×ÖÖb˜ÑÚÚJyQ‡Îöðp²ƒÚÀám7,Ó®Š+›àápÍiŽ™ðr2>p3„ô÷%ÝÇ @ck2n[ÿ›››cœ×¡½½½££i€¿F¯!^<ôôhˆ±7nܨ©©±FQ$$¬ó8G„&>}’áÛ‰'ú^rñ9æÞx(Á'ÏÛï“9›/º‚l…“o|Ñ¢EãÇ/**òÉ£yÀº\d"3`÷ïÉ“'Urëð3|Ô˜áËZfºÃ™©S§þ2™ü0}úô¸bŒ7B¸¤”••¹äÊí¦ñÁ¬ûìÙ3Bö)ž †tÊn3cç®Ôí§÷Bx#O&³+ŠMSþ5Ù¡C‡ä;zô(Þ0Öè´ ãu|S¹{÷.Aóæ Zèéí{ôèßZ’Å”†Ÿ?fð“ÿ \ñâÅ‹ÞDïÛÛž Ô W˜ÿåË—&¼sçŽ3U ©Ø°RlƒÜ|5¾:zôh\†š›òóØ7ɧƒ‚ÊA`«Qè ?1&º §L™" Ì›7'Lš4É2³™Á_HIr~())uÑ›Co˜á£6À _Öú33¸·–——»SÈ‘ ¦'›={¶D!¸Æ‚ZF%ùáƒY—¤~õÕWŸâ‰ô ]/^ì'wy!&Ð5=¢ûYpã“ÃÑ IòB8lI^çP"Ò3Qh ¤Í_Æj‰É•Æz…F£Ô9@×Juêÿu² -Á :ûKÞ†æ”Ì¥ô` µiÓ&̦üí;s"€AÆ^¸p¡ŠŒ­*ä>X#ÿ¹MÖÉ(ÕW555‰¤Þ¼y38¡±±‘,õlKtÀ¤öñãÇ’Qg‚«ó¿’é9lclÔ÷Él`VƒWÛapd9Á3–lygê®R]]ÍÕººº .p3(é>‚ ÚÛÛ_¿~ Y»ºº¨? xðàAGG‡>–iT@‘ŪÅÕXç ÉÂÆÍT–iòçÏŸëo€J|’Y˜DŒ>´ká´ˆ1bÄ„ ”¹ú?“W!*äžS“»NÁˆOA(´RQQ‘„`òÀ´iÓ<"ùüüüYɤu¡*Ö®]kóäÐÛfø¨ 0×µþÌ `ä©3Dº(Š‹‹)¸ÛIÒ‡®E’w%|?ßJËëSÜ4hµtéR;³cÇÚRBå±tMÜCÖqr“ A—Ï?®ÃwïÌ>ò<] Æ0‰±FÙa!s¦ YlPTdç‰i½(TXE7À¼—‡Èá`2ò'sÆmÐ})Z*v‰‹ËGÇò6õ”ÀqÂîÝ»õÿC²Èê&‘Ò 4fعs§=Ù¼yóo’9Ž+V*رåË——••A;ݨ€÷r;éìÙ³d”+ +­oJvëÖ-­­­ê?&khh ²õõõZ¨çÇu†ÄÚá>yòäéÓ§$˜pg2Blq?wî\€Vì6°9¶ÚIñÁc,‡Åêøf]v <ˆ% ü[2cƒ:8Ì“ ž477>ñÎÎN‚Nô_½zÕÕÝ­ån2ÝÃÅ‹ùsùòåÚÚZ^ÎÛ––Ãÿ ÝÝoÞ¼ù)ZC Ï“ðk4­^r3Øa;OO}2£F>|8rÈËËËÕ÷ø™ 3Ø|áä8l»‹Xý6Y@¯¿›Ðš1c† à{” &OžìÆ!Kü:™FéB(-äÐÛfø¨ 0×µþÌ 7nœ;w®Ìð«d’€„R~X´h‘¿ÊËËÝ>hY”^dÎ÷ó-y’B¶R®ôKû¼ˆÊPXï ½–«É´ a¢ø?$Ó¨ÔBI9­ÿ{2ÝBýƒÈÛ®núk÷xæÌù_ ‡C÷ÒùĉAJ=M«Ì †ÆzÌ¢á#"JÛâ¤öíÛh⟓ÉÃ!”Y±ei;[{S·pYÝ$ß$“ØMeÔîdx ˜¡¢¢Â‰¬^½9,Y²Ä­P)o+7lØ`*ÉßÛyk‹,Ÿ€*1¼téÒõë×))<ÀÀ€°Òhuá/%*À S7bMsÕ5ªk§§ê©9u¾pá‚Ý;šìÈ‘#6aÿþýöĆ "Iƒ¶nݪNj­(P!øJEŒa¬Ít‚ŸFêÏCo¼wï7è8Nèëë{ÛÓÓÛ×÷úõëû÷ïóœ·Jücuœ©©©áõ*5ú !ÀmäðQfhkkÓœtuuA&bÇDEÄ ʼn£±çdTÄ6lðàÁÿûÀÀ`›s ÎBP©ˆ.ñæP‚xƒ(t“š„“5NM–儱cÇZõÌ™3å‡)S¦Lš4IÝ¿ÂÒðzûÄ <ýܯø‰÷0×´~Ë ùùù´FføE²,3¸F¡… (%š¹Ež'—ïç[Ÿíƒ”ë¦&5’'ùxKee%Ñ ò¶ A_do•h×óïìûd§OŸÎâ_©ÿ©S§ÐBÌ*௓'OÆ=׋ª««ý¼aH–"ôŒ!Õcè?㦶7™ ù³Wr2õT’>-– ¬QÒ–±5B[§HĨ€ &k×-lÙ²Åæ€„5kÖ”•••'[šÌ·´´´¤¤Äaù‹F{ uˆ¥Y¬ˆ"£gÏž l¸víŧûäøN2 {ãÆ %öWSSˆ:6PS€A©3™Œþ!Ù&$©^„DTpp–àJË[,*r`î]»ìŒÕqL©Ø¥F›c»øé4ÍùóçÉ4 ×0¦%™·¿H¨ðŒá-ßô¼rå ÒÀ H#à!;‰…pØX°9>ˆ ½ïÚu `è~ûoöë54ëäŠãø AD ˆ¾”J%ूE%1,ê«xMTð‹ŒF”Z ¥YÑ7B+ÚzÁ¾Xº´ZP£VJ܈¬©11bEWD1Þ/1^—~˜ƒa5A4Ù¢Éáa˜gþ3ÿ93sþç÷W¯ß¼á€÷ˆ‡8ëàFËt^S¦Lñá 2dàÀYYY]ø=vŸ•–– 'ÑÅÑ%üœ”#*‚V 5•"séÒ¥É}!haêÔ©Ê_$7nœä ½°°?Hî2†6ÄaWyÛË 0o/3ü?­Ç2ƒ”îâ äææŽ96Ȳ< ½  @6ÐGž‰[aÈbû”+ÓJÔòÉÇ9 ñšHB£2Þl òœ $ñ!úT[EÒþ[2œ ÚIMôÅ,ru¦#ðàðáÃôN…ä6°o“µä¯ÎÑÁ@Á%¢ìqC Òˆ±þEÄDêFOü}¾I÷Jý÷&‹Yb xѾ¿$£›4EîE?q}Û¾}»ä BXƒl£õªø«¢}óæÍ*„Uê&²°§iq%\Ìá¹sçJæ‚gÆŒEEENP‰œ”ºD_Ë—////—ü9˱vÌíÎ%£†W®\¹yó& Æ Ä—R«WJ­r=Á%Ðw“yä¯!·Þšn€„›À[‹â$¾J&r´XˆÒ¢ìxe7öìÙôe` õF,ñD´ƒ€“/^Pó`>›—‡– ÏÞš¿¾š ,„70Ãd<§þÀðŽ€!à Fé QÚÚÚ lWIªÈävža†aÆ 4¨_¿~]ø=v·9gaJÑèPÔUœ‹v@˜AÄVVVb?¤G Af€Ç—Ô'L˜àr¡Ø€&Ož,æ½¹K\ýÜ™¡# è¼åû·ñaóö2C×[GùnÏžÉ 4HbwG}õ2Ø1cÜâ*¡îêºjÕ*¹…rý!™ŠÛb&Ù^½zU:çÀ€ÈÜŠ+¨$ð0 "äž4S:ItþžL{Tt;zôh0)rØÐ3„î{‰¿Ñ‡By³:Ÿ ôQ $ˆ)<Š7{ï1–oQ§wáªþX-(eÝÐúÇdVäøT¢®oØ@^+žŒ ”72y°„rs²Êd´*,Z´¨4™M›>}zaaá´iÓB elG†(肎ÕaþðÖŠþõÖëéÓ§)þíÛ·I* ¦ÎΨøK¯)&^®ÝÓ¿&Sß¿¿QÀÓcÇŽeÈ„ñ0ú¨‡0b””»{÷n‚HÁ•EIÅÑ%nÙ+ÛèÄU~—, ²wdr,±¹­]»–ò"7€‡.\ œœ›1c†|îÆçÈ0Ãøñã£lPRjoà –PSSsâÄ ›Cm¡BPÒG$p+‘ÕxíÚµ7n\¹r?xêo”Ô\ ]¾xñ¢²©©éܹsvøMš4).¤t„{eee­+ܰ9q¦6ßv)í*g„=¯Ä9Áf¿ÿþƒÈý£GL“zj:ØsáÂðïd1?xzùòeÒÏÿ í´¶¶zI'¨Ou3ФF–ï’y³swšœwŽŽ ¼Íž=›\æääôëׯ˿Êî6áôÛd¾bç²cÇŸ^°%¬U `¨C ìÒ¥Kq©c•%ÆŽ+E8_¨T4z”——'Ô·á6løt?¿fОùµïÙþoG}>lÞ^fè.kŠõḛ́|ùr>¸®úö}ø¿J¦"3`ÉÁ_IàëdR{« S¡œ¤/þæççÄì.h¦p‹¡¡ÖHpÉ7Õ¦&*ÔÄÑeI;„&„›îè 4êO‰¾k€„!Ú ½áÑÇ¡”ù5ªx›G1Ö¨ÃÉHªGÀÔ^|¢Gj,ÑÉ8p *þîÝ»×e͹¸IÂ2°í–¦Er¦8®o V½ íRtl/Û²eËúõë•®„€Ú!+¥¬kÝ0½&ÜÖmóæÍ¤§ñ­YU VKˆB6©[÷5RÒ\À,×¢E‹ðl˜7ožê„}º˜ÒµåË—{×P|0/Y·V‚ç­­­öÁ¥ËD–4ÓJ¨p÷î]b­NµC%-Öçfaž^¾|ùüùóôÝ‚777 P <à3f ŒTáoíóºº:ŸF€,ŽJDx l'õ0íæ›ÑÞÞž§ììÙ³ÜóèêÕ«wîÜQá!Ï Þõ”‡ê\õ9d†îîn¼ôøñcãøL˜Ât˜„oü¾HçÖ­[W­Zey‘Þqòÿ‚•••!RgÙ·.Û3dÇxŸ,íè£Ô(¾v”­%'ˆ©]'Qˆ5DL¢øaaãÇ—:$ ˆhôóÿ‹¾ö{·ý‹ÿÎ ï¾ûÞσÌп6ИAà€<à¦ðia*®«ÊäW ×X¢¶¿0Ò#‡(I™ @¯ß¼Y·n]ïf;v,á# t•“™¥/c¢ì”E½­­MêÖ• 0hi),НüGaÔ,†Jiœè;Y—!©|Â#ï–°!u*¤Ãg…©¿;»>‘cýMâõ!÷íÛ‡`¡‘o%Oë~ ›8t)©yxLE‹rû[“ÒÑÂ/ s±¥S"Üà\÷”È!x€$ð3fL:U>,êëëƒ}%R"h|Só-þó– ÒýK—.‘WZyýúu ÍUïèèˆÓnä ‘˜jרê™3g X³féøYUU҉'6lÔ¨Q´µºº:ÎûÀ_Æ ‹éuAÄçŸ(À6+œ½j£úXí@7ÁÂò}(¸sçÎ2e Ôw¹ÀA–ð×ö 0È!’†­¸víÚÅ ßÊÞßr¨AfèOPÌàhKòÈeA†wð>À !¨H.‰ò`T¤™ŸF5™_º–Fz1ûðáÃ¥—•+WM6¦ ëˆ/MW}¤9ð ‚r3R?|ø°nJY=¢ï%HШ®L£n^7Àˆú{äo $þf"ºÑGçÀCøA#ÄÏ< ‡üµ0ÒYú2¥EKî¥Ú$ÛêAH Üá.ÌóT²[Û_&:6løyaÒ5Í­©© B¶`Á‚ÊÊÊ9sæ¸Ðè0x5\½zµ}emåyHf:a.Kp¸Çyk&ŽçÎ @JMvKJª¤Ô]£¿zÒqoÙ¢Æñ¾´¡¡FlÙ²ÅDæåÕøAaö’-Äùºº:žìÞ½›0ÀDáĉÆ9rägDçÔ©S\âO¦€þzDÔü…¼âŒ]§ä }°‡“„þÂ… /^ÔG©ýáÇ]]]_ƒ”‹”ÝÝÝ/^¼xÙÓÓU˜1 ¢ÌDù@›'1ŽÿÅÂúÓÍqãÆõáaüîÍŽ{ް}ÞÞÞŽ:d{ü¦°ææf‘õ÷÷…¡çÝ^²i…²¢¢"öãÂÊËË%×{¸¬¬ìcœü^2CÃÌÐß6 ˜$­[·ŽÐ8ò9ø9òÎ>„ ¤ýY³f9û;wîüma¸;vlÛ¶MBàé9rd/f'%K—.5”a£ Ñwº,K+é5ŽŽ«PdÉM%ÌðngpB^ WðŠé}LYW $”(ÅS¯XE¨è8I=czšžú”ÆLüCK\!'Ë· 6D.s•ó$XL„`y=Rñ—ìÒz¢Â´Þ_‘’®V˜K.¶z©(¥èiÓ¦ %¢¨­­õйŒf‘RZd·Eô"ÿ®Z+_±¦D™ÔF…‰/餹4ôÆ„X…†’鎎"NÙ!„–Ó§OÇàæâ-ŸÍåC/^Œdl!ò)mrÛ±P"E‚M-šÇ7µ¡ˆ><08T0¾‰Œ|¢°3gΘè«Â8FÍq ßþU6àžõÉëºi÷!<øFZÀ ÊžW¯ü}ôèÑÝ»w?~ÜÙÙisY/ ãFkk+z´n„£³ÕÕÕÎȈ#úð$ö‹9æv Í,Õ„íq±9ía¬À’=c4Ú¥°ÁnÜÉ“';ÂÁ—ŽO “7’I4âXp…?ÆÉï%3ô­ 2CÿÚ€bwX·?G;Ç_&t{òWB ~R˜¿<$2` ®taWa„ w³“ÈHòRd—.Ãu2¤® (#âQarìQÀ€îxäƒè¦Qé©·¢òQv ACOy’¸UEôÿT˜ñÓz h1fPdÀ 3lø!ž)¡…¹Ñ‘‡ k–Q鯀z¤þˬ§µ•`-¯J23‘r«µJ€aÅŠK–,/rN¨ªªBt•••â…fÏžîV¯^ 3ÌTÌöQÊýû÷k÷ÕÁo>‡VRdbNxøð!u&£ô—€ž?žˆèŽÂè‹Î·oß¾uë¡1 ½Áy_‡Ul ˆ/'í¨SWW·qãFŸ©§U²¤"eFºŒ ”4+lÒŒž=zÔàyª…3&5µ °ád‰"ø9Òÿž†§OŸ:AØ À  ‚_ww÷³gÏ^½~­~ÿþý®®.oÞ¼iöövþ˜ÂPf·2ÖÍ¢‰”pX[+ÍÆŒóÉ'ŸôáIìó "%–Nb ƒùê°¥HÙhƒÌп6 ˜%«çjà°+ñƒÃîÈK ³ £DMMMHû$IþÌR.íÝ=bèС+W®¤„Œ¶FÓɽ F‚£b—Ƚ–HyàAû‘#G åöÐE`ƒéFë6*oºPG”]»Ùµ˜E7Æ|02oZ8äð ÔÿPXл9ÎxåàÁƒ’íï ³zÚǪ[4éwïÞ½Ò©5´ª;vì°ŒJÊk…¡Â¦M›¬³Jh!äà† „ƒr‰ÎÌ™3Z˜¨©Ï›7¯¶¶VhvîÜ™§¡¡aþüùx†“tÛ¬]»vëÖ­vQbzìØ1±³™Ã Ä:{[Åh`–œ:uJ‹Iá HˆÜ㸤–8ÐÖÖæ]ëyíÚµ{÷î=yò¼xñâõ›7Jä4òY»6à"åËžíA)Æ9yò¤RpY,uÙ²e–½¼¼0”••õá1ìG[¿~½¯¶ª¾ZÄ-‘u°ue{Õ&±s‚—bgl-ð ¾ .\!–40CEEÅ„ ’@ðƒrêÔ©v¦LbçϘ1£×2Ãmú×3¬ZµŠÖ䦠œ\˜K«“Sï¼ó8ûÒÅöíÛù THž¬BÎz1õèÑ£ âž={ää5‰ÓhFY´$1õ`€±+½HУ€^üsa Éß[2¿2ÀÐÒÒòyaÆü¬°£­LšþH P1šW2çºwƒ©û== ŸH¿õ„lÂ- –40Æ,E€*l*ÌúÔ×׫X0±jjj ‹þÃ~݆ú¸¥qŸRJ)/¼PRò Ҧ:“4¶L!6¥dz1زÑ(”§"ád{|cB&Ó/F3sÆÌ˜p4MÛÓž¥”Ùžf‡í!ìqœ9™Oëw†Ltü¯þÝ­ÿº×½Öu_뺯ßw}þ¹¢÷í±cÇÚ)g̘+L¢°›½ü²X¨ ~´â Wµ…E'-Ž"“Z¬MA¨3Ywü¼|ù²žææfWÒLÙ Ó Ö&1¿«÷òF8GÚÈ%RBGdÁõ^|ñ &$ñÀÀãÈP.ËaKƒ .²3gÎhà `صkׂ:…]!´Ï„F¶µµ`àóùúÅ ×ööv'Ož<}úT¿¿ ó---·oß¾uë–w4 Âég³¼î²/|F;¾ÑöR]»víСÃ{ü?¬Íž=;°®be[%ƒw—´€!¬Ïj¬ZµJÊ:@¢ àˆa¯Áƒ†½2»¿}ûöw;VÄ*ÌðF«0ǵO‡zõêåÜêÃ÷û´UøêêêÏŠ)þªŽN¯ fصk—³¤Hˆ¢Ñ&=uuuo»´cšR³eËêIkèÑW«ƒt?ÂBˆv¸@‚«¿‰æ®j/=úýÍ•Y"Ïš“4DF#åYÅœ<\,"•gô7~FgM•FgwÃ6b¯£ƒª×tË$¬Ƀœ¢*Œ_Û¸q#sªáåË—_Ñ®¯¯ÿI±ºb¡g^W”m²•n-^¼xóæÍ›6mr$4¿ÕÑ… ¾*¦Ó‹ÆŒ‰”ë$¾ä8ðŠ (ä['a%Ù”š4ÓÙëׯ ýrÕ³&ñ²+W®tÆtê”NX”pŒ?~Ö¬Y†c E°-s¢׉iÃ$z,ÊcÀ72!àA¸âÔ©S¾ wQÇ£GPAØ'¼øæ?´ðïbOІ;wî`r©á-°ŠyÄD@ì£$GÅ®îgżB¸Z꾯ðc0)¤È´¶¶Ú…0þýV`í£A²7ô+W“W2M£oܸqõêUWò¿QŒÖÐ_:.cÍ0iÒ$Oò*©¨I°“6!O/¸wï^cÄÁàðÀ?Ši“­È7õ¿víš¿–33øg1 ÄbÌùóç-çYŽy6nܽ{÷Áƒííí°áY±çÏŸ#„‡ê Ƙ0o4LeGÇ¦Û j¸víZŸ3gŽ˜ÛÉï£èׯ_Ïž=;wîü¾¾¾ÄºtéNcò²Ö:räˆ4سg\’œ8Áw±nÝ:Ÿ¼¿:¥¨ …R6ÚùÂUˆƒbâ8 !'Fdâ5â}7+ÌðFóÖ¹VìCÙ§À }úôq’RÌ\LUôÓ aÆQ¢1cƨöz”j1¢A˜ÁQPZ!S%Þjé:X Jt$, @jÕm=NÉ¢¶Yú¥A Ca ¦ÎçVz<þ§b'NœÐïAã5$¯ça‡‹iD%#è7ÌÆ±P‡¿‘øx寑û÷ïדñYý×Åh. C®Ê¬™3 Ÿœ}Ò¤IwKŠa§9Û÷Y1ñÜV ~ûCÊ;'‘Lb奬îÊanóçìÙ³‚W )Æi˜aË–-ž2QÐÖË—/{¾Sj¡G#âûøñã––mw½2å‘ETCòP ä ±|ùr§T^ffþ÷b˜!³Ñq @úM« XH;PqêÔ) =ˆ‚ôIé@´ØàÞ½{hAƒüéô'†à»zõªU®\¹bNüZl™p}Q̱téR¹=¢Ø¨Q£†Ú»woþ}†¼bAkooÿn”0{‹ÉO)aãÄGr걃2V®Îš5K”lt¿bC† QLp‚â¸a÷«ªª&Ož,—<õnîU˜¡bû˜ÑH *þ°ØàÁƒ†4|õ”9à UT­PT ºæäëäHÎV¯^MªÞviG6Ì@jI'%ÈÒ/šEs),Ä¿Æuèˆuúƒ¹ºksFßOƒ>Zƒ®&Ô¢ð7Ã~W,ÓæEÓ0¸õ«b!‡p…F®¼Õc ü…œçO⬮3kž,`@T~Ó¦M˜A¯ÈÔ×××ÕÕÍ›7!\´@pÅ|üøñ*°ø;â=Ú®Ù>§>ÛÚêÔvõy÷îÝ û¾b<–`4¬þÇb0ð“‡ü1ÀÑ’Fxœ@¬[·nçÎ<¸L²i®¶<$»™.ýâ-¦¿^M–òS Ñ\’!¼æñ°GΠ¯l-«SmÄÒÔÔ€™¯CWŠA·š››­{ñâEëêÑþW1#£w®ØàV1DøæŠîÓi W®òÜTAGá:ô+ì¢:uêÔ‰'Êÿ /5ìÑ£G§NÞËG÷qZ áÙ³gßeaØi³ä•m¥ûÕÐÐpàÀý’Öçogåžp©RQ3ôïß_Ã¶¤•H>%PñîU˜¡bûàÌ€hõQkjjàòèwLPêÕyuN¨ücÆŒql¤\kÖ¬Y¶lB´Ì±‘ röVKwìØQ=¡z„éËWF°+©Õ ¿ÑkWí¨¼[T&<@õ®Ã#z‚AW·\óxÔ™éy 4•[Ú$lBL8\,3è÷T¼ò %´9óÛb&Érÿ¥˜Çµ£ÈA…(uü1ƒ‚¼uëÖõë×+¿Nm‹„¤¹‚ºiÓ¦ µ- ÄÚãÆÓp‹º‘6Û”¢@fÛ³g•GþÒ}L¢Âîc8"z|nŸbñΚ5KÒ%:tðÆŒ#Ÿà‡Ñ£GË*Rœ±é;l¯Æ 5«Ù#g·"E‰\QÑ‚EÈð6Ⱦ}™_UÒ©Õ«W¯\¹rU1‚5wîÜH€Û§¥›ššf̘AåMO#R^–jÓ¯·”NS´Ð©”ÄN…êéC‹Ã íííÔÊ"øÛbQF%™Ž¸ÿ­˜Æô 'ä1¥©LžG 飒Él‘ÚÃŲt"Ý‚)æ1ª”÷Šéc¶ªÅ@:.ë¾ñÆ7@”$p)BCb.¼Ž‰¯æsX\0ù‹y\±bí“ÞᇠI¡¬þA1®„Ö’äÕµp¬Õ?*ÿØ-7†„œÊñãÇí6‰×_0¼ú꫾áÞ‘uvvÒèëîî&â<#>½‘¥½‹­’ Nkk«wYQLä<Ì`rCÎ;×ÑÑ06@¦"ý/^$îJ„àQ̃êgŠáŠ›7oÞºu 6 «W¯¢‚+W®`À€aÃåË—ƒ™Í‰¬BmÞñYÝVa3ŸS=Û ”€AeÅ Aƒú÷ïÿãbÿ¹ýŸ[áîÝ»|Õ›œr˜3Ì€E…V*"A)<Ö®] ´ÔÁ q¹‰TàA†¥ÀØØï°½3Ô¬fœHÅÿi1là3÷iÃ>p™SEæ H&7Ü(S‘ü%ŠåÅtîÓÒO?ý´B8h©¥æä‰rQaâEO©3fPùk±nZhn¥×Ñ߈¾!*éL‰T¿£×Qÿ軕¬br3è`¬ù#÷(¦Ýãïî›QáVu#¾ž%¬kÚü Igcó˜ÿüóiÏé Ú·}ûv´°k×®ßÜ·={öHõœüá‡zܽ{·Eç‹Ñt½µ¬K¶lÙâì9¯Àð3JóxeÒCt,m,·XÔT—.]ÛÀ€ú]]](ÂãéÓ§õŠ©€TpãÆ Ð ¾øâ õžžÌ „f0ŠÀ$ÇŽ³g‘ÆÿÍVy,[ ™Æ577 N27lذ~ýúýh!Bø÷7ßpZof€bfÏ} ï¼óޏfr‘¿„Ö† d§µ"%ð£OK»‰e’Ü1ô)âÙ"@”‹$E¯•„C´>t¡‘⨫Dš#èZ™•L’9U* €X‚2š'Úmà÷Å ü¹ØŸŠ™9LbÂìÜ<£¿D*|bÿá™°ŠFC¬žià 4¹q¯Û™;²Øˆ#r_“o›››‡ 2tèÐÆÆF-Žcr1C ±Î‚L_ÌZÞ•æ—Ïeu¢ŒÍ¬¤w×ÆŠŽÂ]AFXuŽ«=Ú­oÙ²Åa¡š_|qñâÅäÞž•Ë—/íµ×¬¨VœÁÒÞK€!Cì3£”¸fͪºÝ¸:räHp…ÖŸ,†ð€€?~ü8B èàÐÿÞËЂy…„WfÞ×ü-”b>4´€gļ çgî­¯¯ÿrBo« Ïïý·AMŸ*7:Ü÷Š…˜ŠGô(HĆà”@¤”§žzJ2®£GVr²GáŠ!‚íëö`ÀgŸÝ{Àß·3CÍjöøÚ#d†7Jט*ø–ݳ|éê)„ I©Œ;Öý 3L™2eÞ¼y´Ã%19õêÕK—.¥þFõi醆[wa©î¶a€öbQá !"aQj•wôúÅôÑHnL¢C !ê5¤hQóH¼Î¡‹OŠYQçŠé©?YWÑÈëábø!33 ‡#&!gy‹˜ý;8 äè¼mÛ6ù“ªR®áÇ4hàÀô 9à„Áƒ« 6Œ–õëׯÿþ à:é×U®©©I*vp3¸¸E©ß.FÇùÖ5ðƒb A–Vzù¿b›ÉqŽW›Åo´ø{ûtÖ4×éGsÁ€p÷Ü_Ì´ä¨ØÀ¦M›h4f ÚdR؆… ª {Aeˆ ä°¸k9ÊÎÎÎÓ§OŸ?*ð–À@é£ÐÙAs¸ŠÝjÙÀÞ½{½uDÍæ ‚.¶-æí|Ö¬Yb’q)ÇòðC~P»U„ÐÕÕõÕW_õfÁ#¢)&¸W€ 9ñDó(f̘e%ICöŸ"9è 'd˜I“&-Z´Èõu{aÉïA~ß 5«Ù÷Æþ÷ÌÐÚÚJ­ÆTð»#!ž}öYtZå™3gΟ?_’§õDžwÇL*–ú´tcc£¤ÝÖÖæÚY§¡AÎNÅÔ©ùø¸Xþ%¸ZŒ¢éi‘µH¡ •ñQFô#ÌpúH•*´ 1äFϨ¼þé©C%†DÅ" J`<ˆÙ€áf3D»¥MþQñR A]=ÕÿÃ~½„V¹a„€ !„b©C´$J*½M,TQ£V10Vë-µ¢¥E¯˜¼a´ '­b•ZžÐb"R Ž9qä™9rä°úc=äc£êÖÓPt¿l>Þoíu_ï÷>ÿ¥ðQ1¯º%¬Ô“ªJ§RkKK <ðtçÅííí´¬©©©Ú7~*xÚCMÀ?wîÜ•+W œÐÝ$ Ò»›`Ȭ#¢›7o*Éæ0Ó® A¡$ül‚yÚLbžšàþº˜Hð¤û #5ѧ± ah!†)Bc0lP (ù]±ô¶gϾpÂ<9DámD]yÚ7Qaß*›˜˜àgW*æli„Œoɤ $Ø#GŽÑãÇëß¡…Šf«I˜víÅÉ6°v‡?g«áåË—/^¼¨e¨ ®­]^]œƒówX³fM===ÒˆÌ`‡³í˜Až<¨Þé5˜¡a {æ™(>á¡ä …b†+Vü´˜Bßø’%K’`{{{©›´/Kòròðð0ëÖ­u ­CwOJ$Ûê@©ÉŸ‡(ïߋѺFÔò—Ê™ˆš+ N¨¿RöôFbø£rbä©PÿJüU9ÚÄ×?¢ ïþ%L™tbu4Ľ)瘪&ÿ(¦P[οŠA¾:7CØCB&Ávww»íVâ5sæÌ¶¶¶wÞ|ÕQ®ÂŠÙIØvöìÙ(õØØ˜¬Îÿ¢˜Ä.™Óâ`ÕíÛ·í˜=‡ A5 1ëò¥ö—:wŠ ÛHŽ;¶sçN©^ @ǵk׊Šïè…Qv”ÂRCÍ54´ØÀ ¢ÅAÌ ¼§Êä[WJ<©¹ž…¹šƒ‡?3§c’6_¹ùgæÁ je¥˜ÓXNƒ4?}ú4`°«°ÖÄÌÐè$lݺuyÛT k!®… ÆÿÈï蓱Š^½zõôéÓZf°ÕvØn;eð8 6 5‡åèÄe«¥é!H)í'żæ2âö6Ož|òäÉää$ðD Á‰Ç›’C¤òdŽtºó655U›ó>´PÕœ;wnoo/üƒ Î-À´@µ%ö¬âÖ­[Õ*Ì9„Æ© ÁZ¬ÔK—.¥D"V?zÀ¢sæÌ±¥P¡­˜-šQ¬Ìö¶ÕBÂ×_]û làÀ†7nØ Ø”f¤ ýÚµk—-[–™ ,p(²ŠrÊ‹Šqœµæj¾ÿôÞ`†€Á;ý34ì3±éd†cÇŽIÈr¾¬+ùË·¾ßp‚[€O>8¡ÄÅM~–¥%siÿðáÃpãÓ…’Fê]·»wïNž!OòõÄÓÖˆ8]»ÿ~¤íÖ­[ Õ¡ÔÊà ê¨àY‰;É‹‚«©U !ýh¢„€FÖ¥äæÍ›*xjîÕÓ_ê{~9eþ%ýAm5ñZ ªÿÔ±i899‰ ÔQn9€A‡ '&&B¦AßɨDÚÕÕÕÚÚú1GÙÞÞn?‰,áv(rx–i>f%3_¿~=»àÉê¼òÿR,›¬•}¶þ" ˜áСC€Pxè_ £¬ZµÊ´E -€š`ÒBÀŒér:_=eÆRB\°úPÁX^}ñâÅ£DJ?h¡¥¥¥¹¹yÆ”e—Àð_­^¼xñïo¾©^Á€¯rT'¾¡T-°S¹ É]CqÄègŤO%‰ç+uª÷Ÿ^Å µäðm~½Ì ~õûÎ{5Äÿ¨ç†}¶6Ì@îÝ|Ú¾e åþ¸˜oÜSù/‹$ä7šT8sæŒüøT€@•zG×3“a*u£¶Ä”Š=xð l@p£¼DYÿò£ÑþzÕV²Š¬+W¢RÎ ‡Ssd20á–À‰¾”~·Xˆ‹ÝÞÚáìRh' ±‡’¿šƒ/Æœì–-[ˆxòWÅ !l"Gù®]»¬E0„Ž?nuiîf:22‚"[€]ìØ±cçÎ@'DÄÌ¿WÌ…4ºïNJS,E,!>MCÌxýy±… Λ7O+OËÿ~±ÎÎÎÖbÕ~68¡.«e†çÏŸ¿~ýºzÍ^¸páÒ¥KŽUˆ…>áË—/$î«n"½½½"§»»;G–³sšÎΡ;PMPåûO¯b† A-¼í3¼á4¬aÿÿ6mÌ ]ûü¥å[\LºN‰ìf´=}Ý.†¤aÿþý$3Â444¤\?Û¶m«wú¤ òOòL¤–x‘°ˆÍÍÂ9JRÆ© ÂêSa••p‡.ø¤PŽõïh¢«Ú¿XÔÓ@äòn…ÂÑÖÌÖˆ™LhGç!çi†“““Šñ=ÿYÌ(Ý:k§ðŠÚŒ3ÚÚÚîÀÀÀàà ?wa–i††¾ÿ~ÈÊBþ\,ð“"£ACHàôÍ'P·Â 6€ÃíÛ·Ãý›ÿoŠíÝ»×rÆÆÆäÉ“'1gtt”/6L|óùC±`ÃæÍ›©‰ Ûææf“Ÿ5k˜={vKK‹×òÁ@{{»r%3gÎÌ_Õ¾y­và?ì×[hÖGÇñ ¡ EzQ ê‘Æ”HMq V4Ò†¬xi‚¢ÄˆµŠ‘Xm-‹[[Oɺ–¶¸êºt#HQРشˆRŠ-ˆ‚à…x³–ý0ýó’“oRõ¥»ÿ‡—á™ùÏÌÞÿ<óü¾3*Ù“úžÿ‡vÿþý „‡ÞºuëÎ;3à@±$óp>øà1|ôèÑO’ êøñãÇ…_äÚÚZØ „ä{=-_†ÁŠU¨ŽôŠ\^!3¤8°ÿD˜A¿Ì/ìùØjál…óôï0`Kn¹iÏŒd~·ÇÙupÜ•®»£Gž²×ÕÕ566®^½ÚÝP¶—üÛ“Gž¸bPá.€ɇf¹Û¯5êLñCÁCm9QèLòTu“£”µô!„PgRhTPöÐGSºoÇœ9PŸ®®.þ—ÉL¬Â&‰øÖ©ƒÎW~•Ì£À»»»ÃÏH“˽XkÁ‚®]#ÞÁÁŒìÚJûHß[ZZÈwö”4ñß}=Nœ8!Ï[•ì-$ì,–“öÍC¯%ÿÆdA´ÞÊ—.]* 6oÞ¼!™ØðÏX°Ä°ˆbK²õÉD‘ðœ'N,”øLñû AC1<Ão´ÞÞÞ ¾û~ú)«Š q‹ œYù^:/GŽÌ`0 ?43|ÜÏ®w¡¾÷wЬö[ü ý×–[n}¬$Ì c{…ó[UU5uêÔ8ÂåååüòdJêÓÐÐ@€BضmÛîÝ»ICüï~A›†»ÌàÚÙÙ·ÝPvŠHÀu !ÇÁ ŒR‡j'…ª„?¨zÝBÍÀ ½ !xôE²¿$ ?ú„œ  ådø‘i±•xc¼Î¬'|´pîÜ9Û‡‚m¬“žÚh¹~Š% Hˆ;v€‡¶¶¶ ÌÖÖÖ5kÖsN˜0aÀõƒ„§ñYr{¬]¸p!ƒ„«W¯Þ¼y3«Š!lî¡C‡:“9PS:úS2§Àî#L„ oDÌÌž=[>‘a Be²©É´¬ZµjïÞ½B¨ÈåeÌPHƒùC3Õ~6˜Ü?– I#kéÓ¡xfÈ-·¡­TÌ@÷%mHàt#¥Sì~êvP•læÌ™d½¶¶ÖeÁ½Ò¥RþWÊü°Ð{—Mì!W‚á.À´F¹“º˜H>ÄtrL…(ï™_í믿þêW#»¡ÚQ 6Ȩƒ¦fdÓjÑS)Ñᾞ 親i=ÕÕÏ’b‘Z@EIàGàM@†>Á-oÎ`†‹/*ùZôñ%—,Yâ›?~Ä;X¤;Ö[¼Ë_´hÑâÅ‹á,%ܧM›öÊ+¯Œ5jˆÆGpÅ·òwÞy‡pø&dáÂ…ÈDùùDXÂ×À$”EK{{ûÖ­[³‚f Lìá÷´ÿ~nÃ2Á„ðè—_zzz®_¿ž1tT' BÀŸŽÃ±cÇ>ýôSŽ3Ì ´ä Ì`ßá¨Ä"ü´6Ya0hЦ•UŠ\^Æ …xÐßÚÌ0 B =[Î ¹ýv+3}-€ÿ²dœŠŠ ǹ"™|î˜×ÔÔ(ÝZ“Iû’¿ æ®]»öìÙc-E w$LJqË0\ΡAt6ä8T˜ævww+IpPÁ &¾Uù]]]´[®S•ÓNŸ>­³28²‡”ÇX3œ*•×-›ÜXU}¤Á“'Oj làkñ”«Õ-V˜ñy2™3$h·~¾ùæ%_z ´æÌ™ãƒ¿øâ‹#ÞÁgiBeçζÛÖÛw_øòå˾¼´Ÿõihh°›8!¸ˆ”@ Ì€ l´²¹¹™ƒ8&lkkÃ0CãJnÏØÆ „ÿ1TCj]Oqè8't_õ¯ÉBÇ=¢GÿJƧ¿¡øÿHÃã©nÙ$TL»ª’OÄUþúl-à>GÕÕ)Œt¡<Ä2²W›$ üpþüy5ú›d·®®Î=k̘1#Û¾’Ø’%Kh½ðenܸñý÷ߣÇ>}FíO!"ßšVØè5kÖ¬\¹²©© d6'{÷ÝwÝ1ßzë­’üÜ4»„pïÞ½«W¯Þ¼y3«:ã€-(í¬øÌø™/€ Ùañ´¾¾^Vqרºuë{ï½'‡ -åååJ÷”W_}•#Û  o|ÿý÷ÇŽ[Ìòž*3”Êú#Dn¹ a%a†Å‹»666:¹hߥ$(q-à ü?$süeõµk×Fò›&“ ²GggçÑ£Gkjj†µé‚”P ©Æ Òý WJGêLjCÓ¿L0HE.D…èð÷dE„ÄuÅ'âÚùœ3gÎÈ{§N2$?Þ¨ñódá(ãűÎ&3ÖŒŠžæŒÙ4z ‚WX96H¿Åü~ø¡D꛿ôÒK#Û»R™h™Àìéé¹víš–{Š%Ÿ"öE„ˆ– 6lܸQmÞ¼™F¬X±¢¥¥E‹ Âìÿ—Ü3Wƒû÷ï?|øðÇ”s u0÷ß~‹ÕŒ:“ÙhJÂEè 0€Kýðö·ªªJ‹À%fÏž&Ožì’" }<*fyTuX¿ß3\I´CnEZI˜Awœñ¿c[VV6iÒ$gvZ²ÊÊJÀàP3Krs ` wÀ°ÿþHEÜ8Á°Ö0oÞ<Ë0Ud¡úK— 4§¼ô7À¥5€:{ÝÉø:p¢ÅÓÀRE×âªø&‰2 é=(EKÆgÉ<*TøwVhU&ôFó›è+Œ…™G5hDiý ÝÝÝr¯þ õ1Ù˜1cF¶w¥²E‹ÙbûåÛž?‰–Á:ÓßVÐŠŽŽ‘³~ýzÃqlàØzN[[ÛÎ;×­[7nܸgù_rÌ0ÃÝ»wRd"ÏÈ-3fÌ92ŒTóúë¯Û}Ìðæ›o³<¹èãáØï…rË­x+ 3HגÜ9smü¯„ýøß1'gNô¬Y³êêêœýåË—777ËíÄ-¼={öp0ƒä@ßé&Y”^œýa­A–Xµj•©è 9VJJR9»ººèõÙ³gi.V’ãàí:d¯ Bðiºª!|BÄ£Æ@} 1C·èº¨p:™ÆÉøÁ!KfH´?x‹Æ€C4RÌ`ü ê¿˜Snliiq ?~üsÏ=7²½+•544Naà)=z°ÎÂ#n©‡0Û·ofX¹r¥I–-[†|ŠM›6µ¶¶rʳü/¹ f îÖ­[·oßîé鉣Ì Úm¥ >IÆ Àv 0ƒ3’UëëëeéEº8xð L23YÜG<ª®®®¨¨gìûÛo¿½oß¾… ³¼`†"S«Î93äö¿g%a†öövGÕES¦L 'NDNtMM xpÞçÏŸO&šššdû-[¶8p@ò?lïÞ½„›p…Ë—/_ºtI’¡•ÃÒA¯°DI>L©ÿœLòQÊQT‰<…¦‡ìr¼T#!æc º™J·“'O†úg¦'A'€£›´FîåCÓF–ÓÇë¬A5x@Õôòïdª¨À{-ÀØX’Ù´{Eô×î©ê™d1ðÜÙ¯“Ъ–<Žã AATˆŠ6Æ–¨-‰A‰Æm"1&Ðç<¡8àˆ‰¶J4h EãÜè^ôm〠w.\¨8€ˆèBtáÐoc8¼Øv+÷½ñuŸÿ¢¨S·NU[õÿý¾uõê•+W ë3å¼yóJJJÚ¶kí4ßáänšìù|¡óž={®_¿îxØY€êü¬ZµÊY‚ UUUXtêÔ©³“˜2eŠ{¨[g—.]rö-i|.@©¹uë–ì€ñ2Bܾ}ûôéÓ‡:uê” =zô¨û‚ÔNˆ´Õ4®=Å„Îh¯¨¨ 5„Å.†ß$QPP@v*Ìàb’ÍòRfH#Ü3CïÞ½)ee%H>|¸Ì4hò—È2Ý]@½´´tâĉ´}éÒ¥œÎ=0@~áâ ÇiG -˜Á•äÍ›7qgùc qßñ°fÆ<œöÍë p…2t,ÓÇ8½èu-"ÞÒY‹y=6Ä»H£_@ ‚ ¢ˆµiDݯ~Òß’”8Á‚MqíÚ5u_ÄFÉ#9õŸ·a×Ú7Ð`0÷g¸ÑQù\çN:9!7nÜðáŒóã-s纄 3¨'áÈõêÕ«C‡¹ü¢4þkЧ×Ñ|”÷ïß—àÁ  ˆÑOÇWJ½“'OÊŠ„"96¦² Ýl:f /n(*~¢0®*yyyu#U–ËK™!ÿóÈ=3€„}ûö•——cþ¡C‡²0É+‹ŠŠ´Hg.—IzYYÙÂ… Ý%5­`t£±±<ðÐ;wî<{öÌäæÍ›˜Áò,>ûewONþ®$>€!ss!AìøÂ… ʰo Æ£ÿœ„zpÖȲt†FŠGÍ”zzÔ®›¡üªÑÈZ¼¥ô!J-¤xqW²/¶´´è“aÜ¢³ÆÉ,FíW‰õXj ®c´¶¶Zëä›sæÌñÇvïÞ½ »Ö¾Aá-žï€uëÖíܹg~®3 àþ"ÿ€Ó²qãFo-[¶ ¦Îš5‹k¸Î˜1”ª;~}ûöíܹs.?'ÏÅš5k‚±á‘Qw/YöQB'N(¥§J䩜µÝ0R);ô,))qHMM l¨®®F‰´…È8K$sjÁH²6‰l–—2Ci䞤3Ó¯¨¨€A #GŽ”ËÔ[  eýÌ™3çÍ›Gê·oß.ñLâàÁƒÄ¡®®Ž{>yòäŸ?ýôôéSªòîÝ;Ë£0Ù/ƒ}°+!>h“„Å"ú&þ—$ø²IÃÇù2YcëÜ<¹³¿ˆ×»)ã•Lþ¥ Bðnt~£?s挖¨»=ep%XÅøñ¢ÿ–„#›´%‰à}tŽº’Ò¾i"Æ7ý¥¬¶cÇŽmصö ¨CÛ†¥K—.X°`ñâÅ}úôù\ggØèOæ2‡¶ËÞbŽïp´2À0nÜ8ÔÚ«W¯~J_ /É‹k‚¬—†²@9rDfI,l ì²ÌÕ_ú(éƒ_÷îÝK@h fÑ hÓFƒ„ÐûNpòóó=ªLžÂƒÝ»w¯Y³†JÈJT ÷&Q__ììÙy¤1“¿µµµÔ¸qÔÔÔÐ1'Ç#… X‚Î 2dàÀÄÇp6è@Ê i¤‘eäžH7U‡÷î¼òW:³³±cÇæåå 06ht¯\»v-pã hA^8p€€0Óû÷ï¿ÿ?~ñâEÔ—,Y’å2Ìh L²uëVSÖ,Æoll r8wî\ƾã^àY0G¿æàáøÊ ¿²ï 0èÎÎî£ÅP*AQ lðxñâE#]´¶¶Æ»½®OÀŒY€„n*ñ«ºž¦Ó‚Tš››)­ÿ€¹UuéÒ¥ ûõȬ®®fvmåʕꥥ¥Ž/pfzôèÑ·o_‡jùòåPÁùt`l«ÃæÛ£œ={¶haÖ¬Y°¡¢¢¢ÿþíýYiü[¬_¿ßΟ?ßF³r¦¯”•Ž1xPEÀ‰ CµhWÁ´…zŒ?Þ¦;ùŽü°ãÃØ$òóóä€úõë׳\FÈrµ¡3´Å0%'DÁ Œ˜wÓ(€‚ 8²Ÿ˜u`ƒžÑMé‘k·´´dõAçÏŸ7ˆ×•ÚÍâ~¤Ž+<¼¢§4*bfÔÍÈ1WÌŤ™v8a´Ó§O»²á"Û­[·:´a¿¾“pB(¿c³hÑ¢uëÖáI÷G$°8 ¿ûN‹Cb[Ñ W$wɲ²2ýU<–%a¨öþ¦4> öm›ìZyy9üst·mÛæ² ñQ}SS*›ÀoJBEË#íÇŽ3‚KÇèÑ£«ªª$uCCƒu¬H[$ˆ#T”dG·àL&›å¥ÌF¹g† 6¸JðëHíââb¥,>|¸ c^^`˜0ak`åäÂ\ IpsÒ7”÷îÝË0ÃÛ·oŸ?žyÌrƒž>}ºË21Ñ`7õõõ?&AX9onnæÔç“ S !°ApöË—/9„­‡ã‡qgú´¶¶!è©]©=¬Ÿ¹#ýéžvuÓy4` {éÒ%eP‡0Ј@Lï$æ ÌÐG£ŸÎž=ë^¶sçÎêêêþ¢A‘}V²lÙ2ç‡;ÔÕÕ9v 5'aË´c¿íÛ·¯ZµjõêÕö×Z€Cg[Ý¿Œãàµ÷7¥ñi A,‡ìº#555p’eå‰$‚|q¼q*Vjq Î;§Ïúõë'Nœˆ¼‹œ7VTT”””КãnBmòóó%r(--Åœ¦Èfyßš~øª‘ŽŸŽÿuÇÈ=3¸8 ú?fÌœÀÿG&1lذ±I¸9FÊ766ºb(Ý)Ì»{÷n¾ðàÁƒ÷lø¹ÌУGÂ;H ]b@î§Æ7‘» E¢N¤‰(ñ_À¦Ïž‚4òý0hfý§¡[צ¿*=!ÃÞUrÿàß'áW0@ú‚.D HÌ«›¡þ‘„ Ñh $pKÇ‚Q–?Sà®]»¶a§¾«pB&MšÄô1^mmm@]Ü7ãÿQç,¶oëÖ­hÁåü6 Ìà`3¯ÏŸ?_ ûõë×ÞߔƧasù{`ƒÛ´i˜·§‡–õn D@Ež-ØtÀ $0þ÷¢+ htþ½Ø B¦M›Faøqã(©q¨ôtTtËfy?|{fxÿ•Âh+v:þw2þÌÏ G(÷ëÏLýɤߚvíÚÅ£åoaa!×üò7€Á@]"»T’ )ÏÊëëëe4é a ”áfø8²\FÇŽ‰i't¦îC nëC¦â^ظÛä$ü‹ýúíºÚã8>„A0DBŠ#4ÑF…6QvC¥¡d]åRÓ‰š?š4æÄÜ¢ÜܺK *¹NÛ]”x½÷ºkm DLº`ôW$Hÿõ‡Aáÿ)÷Áy_×Òm}¦»î[}ßÎç|Îç|ÎçsÎûõzkÔÝÝ­âÒiÑîÒaÆ À ªª ÀÂRÔÖÖjTr%{l²?(#û®©©±X|ßÖÝ¿?’;……H€ àAúXw—JYà2X¶7‚u‡ˆmmmm Ìà‚9§°ú‹-rZ¡?Ë–-³+ÈK–éÝfÈ8~ö·çÇÏñ/¦Õ¿ó˜”ùGÜ}f`Ê­­­+V¬°ååå ¡´´üËeù»råJ§®ôçú+ñQg‡þâ‹/îDqq1%Ù¸qcCCƒÃH{{;>1>©a@ÞÒÕÕõ~ŠR&l0Ä *½½½*L_eÿ#+Gxº»añA8A]‹ºÇu0‚ÆxJ900ò¯*Æ×°¡T‡"1½þþ~¼Ë±Ë¯#¿LMŸ>ý6–)×böìÙ¶ÇSO=UYYÉSlTlP__,_S Œ¤‘A°}xÊæÍ›!NøãPŸ;wîdP>nŽÂÂBëµ>…5zå•Wœ¤aÀ¡Ü‡ ’3hÿkŠžž¹cÃK€ÿ;wZzym‡P Èk9¾|ùrÚBXÈ å Á¢ÚÑ…É2Ã<3äÇ¿Ãñ/æ™aüÁý—.]º`Áù»dɾû¤ÂÎÕÕÕ$¢³³“b8h80A¹O=”Œr4f(**Ê8“)S¦8qP˜­[·¾–‚tJáÕIqüøqrèRX9l`Ü šX1hHü à®Kg¢ÁÁÁ¨kt÷TŠRxŠÝ+ÝU*cˆCÜõÏ}&r8sæŒÇ£=˜¥h n}œb-LÕê„rÒÆiÓ¦ùÌÛX¦\‹9sæPx:ï£Tð6À{öìAGÖÎ'×ÕÕÁ—Ju-;vìPaþ†ã'äpØä<ðÀdP>ngkôòË/oÙ²eݺu P²“ "€ˆŒJ;¼»»[HF*Oõ”q:{ÊÞ°Ä#äUj±s¬>qNyì±ÇHÍã?®¢8ÓYf˜g†üøw8þÅ<3Œ3ø—D–×òw~ Øð_QQ±bÅ uIí0ØÖÖ~8…úþo§8wîÜh̰jÕªìó+úó”Ý»wïÚµ«¹¹¹¥¥Åëd¨ n!&]]]ÞèÃë™r ›Ð— Áúœ?ž›ŸH¡ƒž`ƒï³{¨Ï~òÉ'îjù0E ¥D nÄÈQzÄfâRÅe__ßgŸ}æÌEQ±E$‰áC=„Æ»F¹tÞ&Áxeee6IM ÇRþâXÚÐЀðƒbƒY¬wRXAcïÞ½ø`Øu~ ^-))™ìÊÇÍ!ëe¢•b÷6lØ·oŸ¼;xð dTÁ80`ûüÈ‘#JõwS¼Ÿ‚\Жªª*J‚4Üòàš5k°bee¥ýì%ð>•öƒ7zE–þ˜ÁgþzÇ¿i½&|üì‘g†‰b†¢¢"éOÛŸyæl€ ¾òá‡.OAÏãÙÞÞίå2 ˆ’ø‡¡–:3¼ñÆÙç3cÆŒ§Ÿ~º¶¶¶¾¾Þ¬Œìq¯æ5Rxé‘KÁ»Ož<ÉßÏœ9s:E ‚Þ­ÑÄâìãR{8¾Gx=Pñ'OÜîêÓ“Â%Ðòï§ÐbÌ¡Î8!úÀ uïU×¢â½þXgg'‹¤„ñ¾ûî›:uêx×(7Ã!ÔgÚ!üeõêÕÕ)lZNÁÐÿüé§Ÿ^¸pá?)üjè¥Ñ²²:sì1sæÌÉþ |ÜA€uuuìÞšÊ>YßÑÑaK {ûèÑ£8ø¸´ .e H‘žúØ `Òöp Ð'˜ÁÈÔ€û'hÁåÂ… —/_®'öÈ2ÃÜd†˜[–¡&ÝÓ/Ž2Û;?†­ýyŒñ®<3ÜÆü#î23LŸ>ÿrg'>„ sa¿,ž7oÞRh‘Å–ûÏ)éN rÿõ×_Wq–¤_ýõˆÌÀ/Æ5¥ââbØÐØØhðææfâÛU¼9,sðRÓ MÎ2 'e G A츥ѥΡf}}}?HáÙþþ~¦?88ˆtÐxDKP„zàAPǵ3xP=½Z‹4¬©"¿îÙgŸå°%%%………ã] œ{ï½×JÅVñu È>yî¹çÖ¯_Ï;üó¯¾úêÊ•+ßÿýMûáÚõë?^»öÃ?|ûí·þ[[[Oñøoéçüâ‘GB÷Í›7¿úꫲïСCCåÛ)à»»»¹<~›Ò‡h‘q¡-Ï?ÿü›o¾)mIö°â8áÑG%/È3àÚ,^¼ØáEâ*Ë$sLiêÈ2Ô¤3ÃðŸ9ãMâÜ Cä0QóÏ¿ fc9r‡ŠŠŠ¿$eÓÈ_æÊeð y‡˜¡¢¢bÛ¶m­­­†‡R8h @ðU0ƒ…SäˆÌ`ó0—ìS’nddïÞ½---§¡¡!^@ ÁñöÒD[œkØ4ïæS\[é2 6@¾”½½½*:ü=űÑÄSÆQ @ØC‹Îq7€Aûéú ™¨ëè‚IüUs&¶NXþçý÷ß?mÚ´)S¦Œwr6ÐæŒ3æÎ‹p&.â 7nôÕçÏŸ¿téÒõë×GÜÃ9œ={Ö¿Ú´iÓ¬Y³&û›òñS 8«‰Øå 2NÊt•®®.¥zä mÌ@0¤—³;vì &k×®UGnQI0½- eP±‘$¾g³L2w˜Ádäø’%KÊÊJ•êY†º ž8Úø#þÏ ¿ CDAflø3Ã/.Aî0Ù—øÛ·o—”Ÿþð«KaÒyåÊ•ƒYcA+ˆ¼¼þSŠ·Þz+êìu4k0Tö)1V2Âm‰yÁ MMMÍÍÍÌhß¾}^§4ŸL£”d pjÞÍú9;‹rÐHÍü+-ôjxã‰A ¡§§Ç8žUÜß-åàà [êÚõô 6ˆWø^ÿLá‘€%µ$ŒÈjçÎÎSþž¿ZXXø[JJJ0È´¾ëÖ­sµ^~Ñ•+W~‘†âêÕ«—/_¶¯l¶Éþ¦|üÕÕÕ´}×®]¶ñK/½$û€º‚­´^øÈA´püøq{^åèÑ£GR ‰@1V¯^í'û ”uuua»Î cüóŒCÝef üœ5Ãi»(żrÙÎç555κùrù¿©©éÀÈÚ&þÝwßè”g\³ºçž{***¨G}}=ÉÚ¾}»×9ï@—öÞ‡Á©1C˜5‹£OWÿ0E4‚8áÖ‰Ñã£õ¾¾>õÿ²_w¡uUiǹ*¤ BUb…¦Ôb ´V©-)1ýJIK¥i¬I‹ô#±i˜¡*¶õB“61™**b™I?¬“©Œ‚Î8™v¤Jñ"(†Ô oÔ ¯¬z122?÷K±'9îs’ɉ/a³ö:+k¿kïõ<ïQé HŒ@4ì"À`æh»æ§x.Kô–¸âÓO?-mÀà¸Á~¯¿þúB¿Ë Æ…ëC8¿º` ù ^Å—_~Y(0ˆï¿ÿþ½÷Þ»ö^Ô¯4jjjš››÷íÛGø{÷îÕèîî¦5çQÓyЀv¾NÔpU= M›-lÛ¶ +ÛœÒ׬ìÛËÿªŸŠ˜?ósf¸ ÆF¦pf˜(·‰úÓÌ?43dF™!y¢8fH“ù/N5ÍÌ`û‘¼êÏù—,Y’þÅ‹cÜCÉV =ªp;K†ipƒ#GŽè×ÃO´5Ùq+‚zZhbêQ}}}[[›bÄd`žçÑ~" ttt0"B“’“Žš¢ú{â™3g´ƒ ô -ð Æ¨þú]c`ð_nµÏ;ÐEÜþ# #u¾ýöÛ~õ\.Ç!Å@UC½:Uõš,‚ܲ¢¢Ân¹ûî»W&±eˤtñâů¾úª`ÈÖ*+++õúf{ø¸ a×®]´Fò?ü0­Q™rOhd`Ì4^L‚ú Y)—ä@n5žyæZرc‡øŒ¡“¯Y³Æ¶©®®† ¸šç¶ÃmÈœ* H“êô3C&ñLµ-ôöö"„7ÞZð7<<üF õõ¿8Ungš%{z\‹˜ìSÆ]ož_‹f†À†L9d g†Ü ¯Ê6û–Òç?43D\ºt)zܱ·S ù?Dú©¦Ÿ¨X &ašEþË–- „ì @Ô6lÀ ===¼‚tuu±^Á ´•l…òرcÜÞ-Wùúë¯sk*|Ýu×”˜4Ö¯_ßÞÞ~ðàAÏU‹[ZZZ[[Žl8àê0‚d"7%›Õü% Tu\C¡Wâ5ôk£š¿0p‹œp‰_cÀ¿“0À?žàWNøÏ$`8{ö¬‘Ä'=ÝÚ½¨¦¦¦f8gΜøµ(hþüùVøüŠ$¶nݪ^Ô~øa2Ìà¼f–z‰³=ŸÝÁ$ð“'O>;Üоmß—Ä«¯¾J_§OŸ~% ê°€…ª­ »0Ø$DJ&›7o^„-ätPUUØPWWÇIl{,MªÓÏ ¿KBÂ;ECƒ·dùüax4$Ï7ŠcódOÎE‚ìÓ `ÎF1D¼ºqçÏóëd˜!KS yòÌŒa‰”ùMÀ *ì¸ýSÅ ù¿BnÌfPÊi™N×®]K¶hA±&Þ¥I@êfŽ,‚HÃø'N(Ó|€9rDC¿_Í£ÂæÖ‚wÞy§¼¼¼ Ä<š¥Ð%Z€ÈAƒB÷ïßXÙI:t«ÄÙÌàN¥}" 5w©û¯'ñ÷$(Z¹ÿ×hH-ð:P†«ŸÜºâP¡'РfDñÇ Ç(™†7J}ÝtÓM…bÒ¯"-Zd“,Y²Ä>A÷Ýwxزe‹wòé§ŸN„÷¼{÷îR/q¶Ç“O>In‡\wû§$8ÀóÏ?O\J¿kˆNÏñãÇqÂ_zHƒ( t[[mº=•„O\SSGVcU%±`ÁÇÓzVJíL?3DÜxã·&Q_[ м¨þþ¾ÁÁwGFF~b†þ~ýi¦Êí¦Ë ™1•%pâ³Ï>K™jfÈŒW°òüT3üŸ˜aÜ("ÿ¡ÌàöÍ$2SÄ %™'f3’W÷7l؇Gµù0(Ž "ÉwwwCmÖAÔ===Úêugg'rp=š„‘¹µàüùóóæÍ+(+ã¹ÊöíÛí®={öàÇæÓÚÚºoß>ðp Ø ùŽŽŽÎ$¬å…^`eàÛ¨ée©:«‡ÓáEÓé €¡&Ñèíí=yò$ÇÒzhÄ-¨8}ú´¡ÓM›6±—L}(¯È“Xª««ïLbùòåN+®ì޽2ÛÒ2CÄ(9, rhÙ¹60®4S¥™?“®¾Á õ=f”®ŠÌ¯‡Šˆ‚ÞOÊoú‹SEL?3tuu1j%À>W¦çÏŸoÿ“0` âÍ›7=z88DEöD¾Á1Ôèg“èììd2üáòåËc ÁÈȈ_M[Dn¢¼¼ÜÿJoíÚµü硇Ú±clؾ}»—³wïÞ?$äöÔSO!ï*`ƺ$ÿÜsÏIäH˜#¹ÆÉ(NC>ÑœI0dM~rªò/f°Ftdr¨àÑ,*¬^½Ú©²²rÞ¼y äš†ŠŠŠûï¿ßñÞ-yÛ¶m¾~X–„¯óÑG}÷Ýw“d†K—.Ù?¥^ë¬Àϰ™4 rgiA` B€ASzüh$ø_XN5zŒ¤D»…NMe˜_ƒ·émòW'nC;Î)5554k0J™íL`†ˆ[“È’ƒvš© ­‰y¢Ðù'z¥S2&/6Œû”R½Ÿ¡R0ÃTå1ýÌ@§`€í/]º”ÿÃþ»îºkeT,…’üQš}ôQã_J‚c°Žîînm åX=E dl!vx¹á†ŠÈM(Á 1žQškkk|ðÁÆ$hs×®]=ö˜ÄÚ“hkkSÍõHXõÁ ®2ƱcǤ§ü ÂùX°£Ó>{ö,ã²¢ðÇÑ€ ¦µ–Gydgfýúõ|ïæ›ož;wîœ9sŠ[ã «s0ÄiÀÌð’½jkonn¶m|`ùþûï_¹re’Ìðá‡Æ>ÿ-JN ƒƒƒ¾&¨ö­É!HxÓ;`Q¸uX0†^ȇˆü—†Nz¡Ê¦¦&[Eçñ$ôƒÂY±bEUU•ÇÝ™Äâ$ô˜Óäé©{æ0CÄ­£Á²ÒL•fþLºSÜüc_æÔÎsæ2ÃDúŠÈ?bú™3(£ÎŒP3P.ZÖÖ¸çž{`¡RÛÕÕÅ_G¥“‡„-8k931Ƶ' _|ñE¶ŒŒŒ¨5é} 7ÊÊÊ ‡Qž Â<àœ«¡f9ÅÀ†={ö¨ãjYKK‹«ÇÁð`i?þøÁ$d~øðaÉw%ËPÁrd®­ÁÜ,!¬²··÷СCþ7®föE$PWW§\nÚ´É‹ºå–[ÊË˯U`¨¨¨¨®®¶=âíyiÀÉ«ðžõì߿߇€p.\øöÛo'É vµ7\êÏÞp¸xñâåË—?þøãþþ~Ú f  ê&WÒ öè/F__ß©S§‚€5µ¶¶Ò¦=£“¦\ 0rëÖ­„¼jÕ*g“Ûo¿ýŽ;î "m=žEhéžiÌØfª’3Cú˜<“ä_Èìa†)Ì?bú™A àê `¨¬¬T5–ÿýúíºÚã8þ‡†„ ÇÂ-œÒ·¡â0”%Ë0–mÓh±ÐR·²’¥R³˜Î¡f:Ón±Kt¡®wýpŠŠMƒ•ý2È”4ˆåB%SÒ ‰·+÷ÁçMCÊîÝí;î÷ûþãp>ç{ÎùžÏç}Þ¯÷ó]Z*S”——‹ú–––ȳkÖ¬‘&ä_ºA(†×R ­­­„"1Á¹–T8ص–J¥0U‘©Ua«•­jjj$,5¯E£%V__ïEÈhÁÚ†††¥K—ªz[¿~=…„xiݺuÞÎÉ8¼¯éQ‹:¬µ³­ì<7±ÊÊJ¢7}útmQQQnn.ª  YƒCÞѧö=}M²ð•Ü Ň2âûø2{÷î={öì ™¡££ƒ+ÓýÒjâk×®]_|ñÅ©S§¾þúk!ÌË£r½Tõ¨Àx6õðøÏÄt¨}bÂPkÎÛo¿ ËßLÌr×I1Ђ?ÕNœ86Üÿý–»i}?óÐd†¾oõÏ CÿÃYfè¿I£bù‰'žÈcÇŽ-.. eeeÂYZ”+ ˆƒ<óÌ3ÍÍÍ”á½÷ÞÛ±cÑðï~l" ÿ#±ÎÎÎH‡¢8ص&#=ÚÙræÌ™UUU*߇à THñÁ<Ο?_ö©««{<1}ƒÑÑ÷^JZ8gOÇwÉ7÷ŽZ“mnÃêêêÙ³gÓ4úFëc̘1J‰‚‚‚A¾×P¶Q£FÆø¶>§#„ÈZ.– ¶mÛæòp½Á>úèäÉ“†ï¾ûÎ-B)é~ïL4ÁÞÝÝ}æÌ™K—.ñ…N[[›xÝ <®£Õï8A$Dë‚íÛ·Ó® Œ™PØÇ4ÚíÕW_…ÜAa¢<M"Ú¿ßsÏ=bÍY}?v&0Cvÿ›ºÿá,3ôß.\(´kkkEñ]‰ d}fEEECCƒWSÀB V¬X±zõj}«Ä8¹ 48H$…hD69qâ„CÜqáÂ)žg¹X˜0lNŒ£ ê¼õÖ[B^ìã—aëÖ­00êU«üdÄÚ 6À÷±‹J¨€À'Nœ851ÌæmÛ¯cg™!»ÿ ÷?œe†þ›I1/^,lediqüøñR¤Œ,´É8éxå•WHL¡ÒTr¤rD{{û;ï¼ÕGh‹“h îܹsÿþý?üðCWWÌ6lØÎö³Inn.µy81l Byàx¸÷Þ{ƒsª“ëËËË%ý ó#ýUWWÏž=[ß ~p…¾6VÙÄÎZý²²2²VTT¤ü),,9r¤dŠnÈë es¼»¯¢\ÂÆÆF®Ç È¡¥¥ERhjj“+W®lN,2‚bóøñã†o¾ùÆ=á—t¿w&š G\¾|9:ç΃y_Õ°iÓ&1.§G°72ñn&)P#lIÌOË–-S\˜F:¬mIL)a¾ŽH ` 5hÁMS§p½;*×wË2CvÿAî8Ë ý7Ù–2sÒ!xÑÂ]‰‰k¼|ùòׯ1:TØÀZj`œ¶`² Ut¨>:;;¿üòË#GŽ(:rrrp¶ß›d-‰GZ—Ôœ–ìèLŸ>Ý!„Ž_½”AsâøàƒË–-S`Ê"š D)A¨?ÕWGÀ$ůr`èèè *GüÐÕÕeš44€³ý‘IßIL6O¥RS¦L‘ë ÎØÄäúÛo¿ZÜvÛm‰” ƒˆ°ÄwÜaDKzñ 777?± û'dN.óAP¸Rñ=÷Üs‹s÷d WîÈ‘#'Nœ8™˜\ìØ±C‡íÝ»wÏž=ÜÍûnxؽ{÷§Ÿ~zþüùÞÒõ7öã?ž;wnÇŽîꨯ¯W~¦ûí3Î\oqù÷Õ«½ÞáÍ(x˜ °yóf#ðÀ¯|-Þ…´‘eX¹r%¡À*°iÓ&«ÞLÌÏ>ûlee¥€ >Ÿ¶wÍìÓßó?u“™õ‘~ûhÙý³ûߨý§ƒ˜ V0VWW˧BxܸqZÌP^^NÌ• ­­­â]âÀ:t€ŒP å¡L%F´N‚ƒ<òÁèÈ pBjØÙþ‹IåÒº_˜XàÇHýZ8¤EÚ#F¤ƒ EEEyyy–8•™~ÊM¬—Cnø‡¾Qrî&ÔÕÕ-Y²DUHÿwíÚ… þè_¹råÛo¿ýüóÏ÷íÛ÷á‡nÛ¶M6ikk“xf\¾|ù_¿ü“¯^½jþ™3gŒKL«V­¥‹-š7o@M÷Ûgœá´ëú”ÇÿšBï/¾ø"r€ àõÄÜ  ÃÑA œîצ¦&¨C p…ÀWnèÃH÷Á>O>ùäÝwßÜ®6 eeesçÎ]»v­ú{þ?²–µ!niaT°~ýz¢ÝKþÂ0q‘N7zå"ʇ矞ŒPŒ¨. Ò…gGG‡b³½½Ý€1uêÔ횟ó«ÉøÑ¨`äÈ‘ñ8"±Ñ£G#\%b•Á „xÌLNè5¡´´”ßçÌ™³|ùrŽC/^ì#÷ôôœ={öàÁƒPÁe¢î‰d$º»»OŸ>}éÒ¥ãÇwuu¹² L­­­}ä‘G{챚ššûî»/Ý ³ 3ãùßû‘Çy !~$:BØp+¨ ð“?jñ_›#õ“ ¨`?™ÌË&“ý††¾æhjJJJŠ‹‹!F6éï+d™!kYK 3466ª)¨wqbãÆSo m±¬ „­­­&…HÌ" ¶nÝB"°*¨SÈÑû￯¥!aÚ´i;[MÞ—ô#ûß’˜Çá‰Å N1hþ°_-ú½mluS:dm„ €aÁ‚ÒÄþýû¯\¹ÒGZø!ÀQc®ML6A•îƒlbó¸K–,©ªªª¨¨˜5kVeeåŒ3Òý2ÈÜöºººëº(Šhîã©pb/3§¤@Ÿ´%F ‘ 6477ûÕA Z}«xßøŠ+Ü.\Š&¤&•JÑ™ÿ°_n!Q}{zŠ" ^DQÑñ62 :ÞQQÊ •¼Œ¦(L¢e8¦©;Â9ç„'ïA/õÔ«TRÐC‰æñ‚æ­窜{ÑüeR;Ž—9'×Y¬½ÖÚÛ½g­ß÷÷ù óÀ½~…d))Ÿ0î䆇‡GFFªTª¸¸8N—žž3tuu1KÈã!MMM´X æLq‰-PYà xeæàà ý)"Ayyy¾ÍÅn$ÚVAAAT¸÷‹/vG‚¯_¿®¬¬ÐqmlØíö–Y,–÷ïߌŒ)²³³“’’8uuuZ’ -˜š˜˜¨Ñh(6I¾þ Ž‹ˆDr÷NçÎĵ¨s쥵µ* AÔ³ü{¤HF›"AÔÜ.P{{áUUU999Ô#.\ 0Q£££3339¬ç0ìõC$3HIù„ðmò>‘K8 ÁŠ(9±z£Ñˆ¡Ü0™L˜n€?0Å[15::J¡W@0i¯ Á8˜AÖ ɤð¿¬sçαûì×ÂÂÂîÌàt¹ì‡è»™Ájµn»xqq‘ĸvíhÊa w‰(WÁ½^Ÿ’’0@ª¾þ Ž‹ [÷Á~îþüüD2ƒ””O˜áØ‚V«¥ÀÀiéSäççãíp€-`ôÁ€[àfq‚'Ás .©D° Q€Ô×׋Óëד:<:uŠ¿|ù2ºWØ“–––8¨pÂ7h!ÎFyy¹N§S«Õ~~~¾þ%Ž‹NçN{Ä À;™Íf²?!LŒûLõ1N€³ŒÇ:::( 0.YÏ»Lì³@¸,qëÖ­ÂÂÂììlQ¥RA‰8LDDDVVΖxñ!È RRÿ¿ò 3õ˜CTT-°!66–ˆ.))©««£v6‚uÐâXÇßg€0 ̯ÀL¨%á*ŒðL*J˜Ø0™Laaa^¿¡Ô!I£ÑpÌཱུµµÿ&õ»66œ.—Íf—ôwZiw8~œ˜˜ ¿¤¤¤pº8xð'Í×?Ãqˆ¸u;<6DOŠÿëÑ¿ÿ>QOGÀ`@øÓgDtˆîÆÆF"g ƒ===‚(x·³ÑlwBBB\\œ á0EEE¸Gii©wßrPÌ %õÛèȘ!77HNN&¢©€‡èèhoÇ(4°Á= ZÊ œ¨ø›".|òäI__ÁJnª««yueZZš×o(u:sæLzzzssó›7ová„ïß¿Ónln®®®’e†/_¾|ûöñUEÛtÁ-ƒ0ÆË—/9jµšÁ D1PG¼S)Ð!ã3Hi@83EŸQ/(‚–g%lÐÝÝͬ€ !ñ4NWaa![œ˜˜Ɔâ0xË` ï¾E2ƒ””‡ŽŒÈæIII*•Šˆ&À³³³±tìO 0›Í¸î-À}?QˆúN€%†‡‡¤CË‹µ··SKFÐÂ`0øùùyý’RbƒÊÊÊöó¶›”Ýßß?==½--Ø-//C¤{€Aôçææ@úÀÃÌÌÌÊÊŠÅbXóç½tñ3H|øð¥Óé´Zm^^ …9¨ßDjwô(èÖÓ§O p²?áÜÙÙIƇ€:œ¦0"šH‡ØAÖÀD7¦¸‹•Ìb,f¥¨#*++srr.)Øthª„NSSîáõ·Hf’òБ1ÃéÓ§ |B[£ˆ Ž‰‰!¨sss+**„Ptà ÁÐÐØÐÓÓÃÿ}üø1®âv X‚2„A¬ƒYƒJcð‡êêjîõKJy¨¸¸X ¯•œœL^ßDŠ'³@íœ-LNN³³³ ÂV«`j}}Ý}¯ÃéÜÜÜüù™óóód®¢¢"°Z¸råJjjêAý&R»Èßß§FD+!L˜‹°%¢ÛÚÚè þg ¡e ž`2™Î‹Eì3Eàwww3Bû‡¢ªªª¬¬¬ØØØ8Ex UIxxx||<˰¯?G2ƒ””‡ŽŒÌ€ÔÔ‘‘‘Äxzz:5`CCƒàa&£££xˆ  ¦î+Â10@,€.¸‘:‚'c,<rÐëõûyI©ƒUAAû ì”Gl6³€œ@gqq„pº\333ÙŸqfAqi±X6¶ã„­bÍ«W¯`HXZZ E’äшܺv»ÝÝûö-\Ѓj’þ½{÷`Bž)âš>S âHµµµ<°¥¥…KnéííŘeÍ#Etxû«V«£¢¢pPŽJ¥ºxñ" ë322¼þÉ RR:Jf(---++£ð„À†øW§lnn¦¾ø‡"R <@M!üSƒøI{{;Ø ŠÖÐá­°q!˜’¤¾¾Þh4B&ûyO©Ô;w^¿~mµZ·Mîkkk°ÁäääÔÔÔìì,}1¾¹¹iw8@…¹¹¹ÏŸ?OOOÿ[.WVV6… ÜøìÙ3N—À ðõ/ñû+""âOZp8Ø&÷å»wïHú>±L–'`Zʉhœqú´¼0tttˆK$b_X„à ˜ÁÂèèè°°0vùüùó`Æ’’’RRRrìç‹$3HIyè(™÷®¨¨ÀÆcbb¨¨´Z-ñžŸŸOh à&Àÿu®b6›;;;ÄLè·µµáÂaXLÛÁX°#¨ƒ‡˜L&Ür âØÏ«J”ص?î”ÙH€?11Aßf³Á§Sذ¾¾r¬®®ÎÏÏ ¬dÐ ![+Y wllŒÄ£¦¦¦ž={Ö׿Äï/bPüø‹eyyÙér¹·ƒ*€@&¢ÿP$h¡µµ•á ùSÔ„9ƒ ƒÚdV0õ˰–‰R‚ÛE¥¨ÕjÌT ŠŠ¢$aß °.÷óE‡Ç <Øãoïæ-%å%3Þ½{7##fÐh4¡¡¡D4–®×ëkjjú á ðCŸ"j a)¸ f ƒ†‡‡! œ‡q,…°œà!¸ÑhdYqqñ~^Uê DX\\üûåÕÖÆñAô奤áQ2Qñ†—#GÅp¼‹J¢¦¦“xÉËHâ…¼‘yÉ4_»p°z­¬1“’.ö)ˆÐ}Š’H-Ò4¡+§¼Ëû{÷ÂaN£çxÎŒÎ9¾ûϰY{íµ×ì½Ö~þÏïY5­kµZ0`llltt”344$*SrÍâÒ’Èû  H46|øð Á n¡S?1--/ëÏÏÌQQQ*hªP(̽[_Ož<+ìMOOë6x#}“ßIô`ŸB¶/©{!S^^Nðfddñ yØ€ñŒ¬¯¯gcè!êñœŒOKKc‹ÝÜÜðGGÇxzzâ* eeeF¾ÑÆ1Ãoo”AÖ?F›É [ˆ‹‹uG___fP©TXA[[GPÐh4œÒÆð a2¥¥¥ÅÅÅ<ϯ+ÂL@ƒÂ„ù9æçççææ2¿‘O+ËHíܹ“œ›Ÿ_•fffßJ!Ѳ”ú¹ è¡Á%ÒÐä䤠n¸ÄÈù…1¡>?EGGC§æ^Œ-.Àl||\l+P§¿D.éT é T@4ð‚—§Ÿ§ `Xzz:é^­V3¢¡MH Ràsjmm¥¸ ²àjff&~âîînoookkëêêJÂv3ìÁäF¾Ô&0ƒ>0Ð^ëT´õëœ_–,Ój“™ð'›+•J7ICHHHJJ ÅAù3PJ`€§ŒÇ4ˆ}Lƒ6Æ‚Ptà\Åmê%>}šcMMÍñãÇKJJ Ð"//Ïȧ•e¤°ñÒY$ ¹ŒŽŽ¾{÷nxxx``@«Õ~  z¸…SSS³³³‚LÏÜÜ Š% 6ô•MúˆŒŒ´³³Û̯®®~þüùÇwìØ±™ÿk.ñšþ³gÏ^¾|ùñãGöE· ]jj*$O„Â"` U¹   °°P„* jìˆ6ñ{êÔ)a"º  ˆNÚ ÁCÑAuààà`eeµÿ~>¹ÐÐPL†[ #ßËTÌpÙ@+·ü†ô¿ªkÎ,K–ÉeFf ×é5U ‘îííMQ@ÔÇÆÆâ'ØN{{;¥„8BÔ „ÿ¹a5EEExãq(‚6BÑ·#° ¼rÀ…¶oßnäË2F8ùÓ§O ™ì\†·oß ’\¾|ùÂUR?`ˆ‹KK P!|ýú~ a8¿N¤žääd¸ÔÉÉi3_¼»»ûõë×|–›ù§f±L<ÂH/^¼`õ·€ðd  ÔÕÕá34ˆbP!===33 bhäää¹0l‡5$êá¬÷€†3gÎ`III¸fâáááîîN Â.ƒ LÅü8W|/2Ãjã/¯zú§˜A–¬–y™+€j˜ÁÑÑ‘0÷÷÷Ç.ˆq8A£ÑàØÂõë×B ‹/â¸^áà0€=¢ŸN|‰z¤©©)??_­VcGÇ%yyyùÀ²þ² …³³ó£Gôó¾~6!¹¼ÿ~```|||llŒ#N¦þÿQ„Ô?;; 0pœ™™ùüù³V«¥ K¬Å |*• f€^6óÝmll***,--7óOͨàààÊÊÊžžžþþþOŸ>éÖ¿··—ÐŽÏÊÊHåy’RRRŽ9rXRXX˜R©ŒŠŠ"xËËˉe,‚r€ènll<# ÿI("pÚl+ƒ±‘   œ„͵¶¶¶µµ¥Á'‡0 ´´Ôø’aã˜Á0ãËÌ ëï)ó2uS‘Í#""üüü(ODP[[‹KPJà T4ð Ž©2`¬€ÒÒÒ0ÀàôŠNTUUQ}#Ž;–Í¿äææþÿøößM»wï¶··ïììÔOâ¤xÑXX\˜˜Èþ$0€~Ž_$­…W¹ÀX^^!Ö‰Hܱ±±Ô›¤s¯ÇVäO‡¯^½šœœÔ­FF†Odd$œOÌ&&&˜4à2>8ª”׿ÕÕÕuuuø…G8„ š¸, [ ”¸té<””„iü"ÉÅÅÅM~½`&©©©Æ¿×†2Ã?]çctíµ²dm¨ÌË TdÒ= ·Q)àÔ ¤~Ðæ@MKfhooÇ@H'OžÄv°\¨¬¬ §jjjjhh Aé¡V«ÓÓÓ3%AT4ÑÑÑÆ[‡¬¿ …BaeeÕÖÖ¦Ë ð)lÐjµ‚ >J8®Š?hiyùû÷ïÜ®ci¦“/äСC|]ª¹×c+‹p>þüýû÷ûûû@±þçÎóðð€(HåÁÈ^ÐI¢§óç‘ý [fø·¤ææf€ÛE@9@›ð‡"®RÀáááÜèëëëààp@ NËËË¹ËÆÆÆø÷Ú8f%ëŸ"ó2¢¸páëptt$ÌEu R© ±…;wîÀ ä|£ Eh4š––Ü´ Pªp $¬fàH‘Bõ‘’’’••?ðF Æ^¨hvíÚeü“ËZ¿öìÙƒ‡ÛÙÙyúy|jjjzzšÔ/r:yn~ž# B,Ký¿¯Å¥¥…ÅE ‚©¸kUZã󈋋 ä³¶¶6÷ªlYAò]]]÷îÝëíí‹´S899¹ºº:;;“Êýýý===9uqq$8ýEð@‚€¨ˆzÈ/§ªªJ0ÑÍU:) ¨ 0Àbæäø;æKJJp“¼—Ì ²d™øGL~¯¯¯ÿU´äŸ“$È¡ººš«MMM0 Q\VV0±¡>Ê_0m IHHÈÉÉá/Lõj23È’evf ¡à‚pì…0ˆˆÀjxžŠŠŠ––Ò=Ø Ñh°£ææfŽ 8uÀ………ÉÉÉÌ€Wà!˜ØP\\L?…ó=z”yÚÚÚ¨}º»»ñÊ^ã^Özô/I0®Ž¥_½zõO!I4==Íg#ÉÏÏÌÙÙÙÜ ³5¥T* Õžžžññq±ø°À²îîîöööà=‘N¨ò>>>QQQ°=œåÊ¾Š‚ó’ê%A 0äÐ$ ¢ RÈÍÍŽŽf¦eCa€„B‘••EÔ›ðÕdf%ËìÌ€ˆ}J |ÁCðsêNccc!€«¸ÐíÛ·a†›7oâ! ˜{Ð.**‚ ¨P(:˜AT.¤°áĉjµš6Á<`FWWW__ß›7oð“<¼¬?xfeeE¦øé§ÿ²_®!Q­kÁ}£À>¤d’‚ǰŽ‘wÅB©ÑB·³½5(–ä g»-¼D(êQ+5ÅH-£Á°PØ••ùAҒʨ$ÉÐÊ]çwÖ{æx;fKÑyï¬Ë»Ö{ùÿŸß³‡×jµËÏ ä/RRXXûŠäÅ>!‹­ôĬ°±±IJJz{{ÅÌ·¶¶2áH’ÌN6þr±Ó¦AêÏÍÍEÎ%%%TÈœJ¢àܹsȽà ØpA #88xïÞ½t ¥° `Ã?¤ [€!111##C­VË8: 3X¦À vvv8C\\ÚGøØeµI`` B¡@û¤~}útyPáãÇûFcxx˜”Är–l’JáêêºÒs³ª`ˆ‰‰!¿#±7oÞtuuóL¸¯¯/©œB€ ÇíÛ·“åEºGé”!#ê²²2Ø H v b¨Ày˜¿¢¢‚{ØHì(ž…Ø][¶lqttJ…ð!C$'°âÜ ã—~—5ò©«øu¦ò|)b!£0f 0Ê@j@hÁÅÅÅÍÍ íã œÁ…¸zùòåÚÚZÈfhhh ïˆäO)²²²@œ‡‚E”<îíí@=rèÐ!l„F[[´ðàÁƒžžž¯SSŒèÉ“'ááárÂ3ÃÉɉ æçç×ÕÕuww³¯_¿^fxÿþ=ÑÑQ6-…'[娱cAAA$2yŠ% ØØXµZ 3äÈ=FFF"F˜«i6gÈõ-Úg{p¿~DIIÉy)83ˆ6bONNæVåãqŽ¢O^^^èýèÑ£iii¸™¼ü}™A. ÐÛw#ë^ƒ¯3qàK-l2M„pÊÞN–Gõ$},C ×ã¤ûÂÂÂÊÊÊ‹RÀ 5ˆ(Fð“³gÏ’ÈÜ iìÚµK’øI`` T€Ãplii¢âËGFFÄD½{÷“k –˜ ‹’™™IR`á˜üåT¨ðêÕ+°U¾{÷.ÀÉ.âcÈeª¤3gg畞¡U¶¶¶¨ ©æææÞºu‹D¯P(`~ *xzz°i£P´Ép?h ÀBÈç¤(//‡ÊÊÊ.HBTUUq†›£££ýýý1Ç7èÙÕÕ•*ƒÎixxxàyyyFv&\ffXà‹~½«Õý:Ó g†N¦‰0ƒµµ59…"7@û$q¬cÁp¨bbb´Z-œ@Ò¡V­¯¯§Ÿ`546Pƒp?~â&…··7ð—,Á#}}}“““Æ¥îÛ·oåˆ%¦ÅÆñpòk¤×ë¿NM-³>ù"ø~hnn&åää9r„tF5 <¬ô ­’ _+•Jà@†ˆ×××—Ä-J46pÒFà~~~¡¡¡©©©ÜŒöÑfii)›B¨¨¨E€'ê®Ò­J¥¢ˆ蓞z¦+™ï–‚nñÜ !!Aö1Z˜Á_g:aa†¿äc‚â‚Ú$>>'ÁÜÝÝ)IpÚqqqÙÙÙ˜ImmmSSSccãÅ‹ió%œ¬®®¦¡ !7:uŠ\‚ì•ÂËËkÇŽô†ÛZ ‰6 !ãX,!bÆ NNN¸½N§koo¿zõê³gÏVHߟ?s²Øf'OždG¥¤¤P´²=VzžVCFEE1±èõùI¡fXÐGÚ0|PPØáŸ?¾°°< ˜Ah]#ðššèZ£Ñ!ôÆãˆðÐ5(BŸ¼£€YVœ„/YŠ1®fàÓñ[ôë~1~¶+Ðø÷“ïú¹ûgëÁ r2Czz:ÕDZZæ°gÏ|€ÚOÀ ( ÊœäÒ¥K«¥À^øKU9ê²²²¨mE?p‚ìAWnnnàÇõë× ³411ñòåKÑ—q8–°µµÝ´i&Úµ¶¶¶´´´µµ‘¸±™¿|ý éñ,‹5::º8E ²ôlÒÃ!¿P·²ÓìííWz¶Ì;Ö¯_O¾Ž‰‰IHHHJJ‚ÈìèÅÁê‚ YžÙæN¥R™™™ iµZPñÒÀ*++ù ÚåååèÕCw`F€mléi»¸¸ð–;wÂ*LJ[ììì–b˜&Î â#ÑÕ4føÙ0/fø…wY˜á?a:Ì@‚Ÿã!x®bð‚¼CU‚ëÕj\¥±±NÀL`þ^–¢¾¾žÇ…ùPéà”Ô#0ƒ¨GèÇÝÝ+ƒ=úúú E2í>È8¢5Øx||¼^¯gÿtuuuww߸qã§°HxøðaGGGUU•N§khh`õéçóçÏ yœ•ýûÛ7Ÿ>}zôèÜž!‘’H.l*À’MBF[éÙ2ã°¶¶&q“Ų̈̌¨(È0ðööÞ!…€L²§§'³ÉöjÞ8¢z„Œ~©`ˆ6+ÎI.©Tªððpz%€¯¯/o‘Q{xxÁ4XÓ¼¼¼ƒ.ÑHM™øéóæÍà ºæ*,ÁÍl –uék Ì0ë‡ív5ǧþ÷-†ã\Ÿa8š3~sÝ0­1ÿ¥yîŸëk¿/ŠæºAÆ0Gf°ú Øþàéé‰ùz("ð láÀ¡¡¡8Z­ÆUt:]ss3Õ+m‚9’Sª««µZ-îAÑA¢T*©P@lÀj0®W©´_¼xa¨vûûûeÚÚ ›€€RCCC™º¥¥…ýÓÙÙÙÚÚª×ëÅ CÞ´M;22ÂÍ,Mrr2ìü!…hp^Ô¤lRgÈF¥RMMMðžq‡°ÐÞÞKp²{Ù$ %› ` 剢u¥§ÍÌÂÞÞm¢J…Bo ¿ýöë'¸¹¹mݺ­ ÐBddä‰'X#æŸD­H6((((þ¬#¢®¬¬ä<Yqº‚vþ›ýúͺ\ã8~@„@Â?‚œQ‚KTæv°y†S´ZŠÊ†lÍ_ ÅŸe9\näìtTDQ‰sˆµã©µâ¬DÃaŠ ‰‚ŲhÚ/稿ŠÈa‘ç¼øÞg;ÛžgºgÏÛõÇ—û¹¿ß线ßëºïÏõ¾"£èŽ+Cvv¶%œb«¸`à§;uŸœvfˆ÷bÎWô†®â¿êÿŠ­8èkô #3„¯HþÖ0C¼ù~,1Æ ñl´1ƒr£ÜSz#I'”dÍš5{öì!,ÍÍÍjlTH9 9¡[QS:䪾¬]»V3BĦOŸþÐCM™2¥°°ÐWô˜róóÏ?Ç~~úé§Ãþuƒgh 0455É hkk;{ö¬²þÕW_…ðÚQ²ÓoÓ^½zilŠL P_\=¦Ä«þPAÊ^‰Lu $¶oß®½­­­mmmíîîîëÐ6°è¹È¤fÖ+q˧]QQQ¡Ùf‹/V¦NšîÈe’ †yñ¯ŒÌO©êøÃ?ì¸9t¬ªªJ¾^Žìĉ‘It¸†I&¹f°âîÝ»aFAAÿº"ºE‘Í™3gæÌ™üçE–““CdÀ`3À ÙLé'§—Â; |8öz!ž«„¯:ˆÿ?Û‡b’ü­aa†$`Ę!LôÖPÅÿ-C™9ø”dëÖ­$h~dä‚nwËÊÊž}öYoHaˆOS¯) ª 2Fê?ÊcP¡¬¬,Ì@ÊTš¶lÙ²3gÎ$ˆaGGG*>ðž7-'Tx÷Ýw±œ+åvËùóçC`?ÿüs ƒý~ùòe™x²ÕI4@ƒ¶\CdÇ#S —úÈvíÚ¥Ó™–ëK}Ìfxíµ×NŸ>}éÒ%Ø`? ®l¼±mÛ¶U«V-ê5lܸqé^fجY³JJJÊËËÃsÏ=W]]½bÅŠ?GæÀΈ̠¸¸þ)è"/wÒ*‰ò‹ ÿÑkåx³s͘aÉ’%Öu Áº–W?ñÃã?nõºººÕ«W§ú«ÓÈ áÚãà“ñ\ õª‰ŸĆ…úƹýÿ¿¨ß­!]%\:3 d€ƒx“ñWOŠ’¿;¼–¹Ì@·éyMM 6xâ‰'.\H7¨Dvv6• #XÂ-ZD((Ï¿"{õÕWÕ)Ø@y€D¨ Lm:pà€'õ¡ú¨Õk|ê4¿ÿþûaTìRñ÷¶‰[[[KK‹Œœ:uJ½îîîþá‡zzz„ô‹/¾—_|ÑÝ~ÑöŒy%C%RPä.0C(ý'OžD‰&9¢ ¹…<¿wï^ËV‘ý°D̼ƒ»¸Â-Äâ''¼aKß±cÇæÍ›m§À¢EEE<òHºƒ—6{ölE|Æ ê»cUUUµsçNTï@Z@æÎ©gDX‚ð€-Àï•È Â¤¼8¹~ʬ¼¬[·N"rss-B›€ òòòxvËBsçÎÅ  ‚8”––Ú^â©þðt1CX=6ô/}ŸIà*‰WMüì v÷Ì{ùd‰] µôàŸ£…~<ïg  W¹[føð0Zæ2C°¦¦&Å‚¤ÓrA"‹Œ-_¾œÎS$­¥æÂc Šçµ®A” R_42‡V pq£040Lš4é¾ûîså“j%fê>óÞ³çŸ0¼ýöÛ@N^€AWWW,’~ÊÑ?þ/ÔˆB¦¶lÙòúë¯Ë#rPMì7ÿR_Ìà 9•\yß·oß /¼`¯zÞÝx>/\¸°k×®­[·Z"ÚÌï¼óŽ×Û>öÕSO=<ô³ãÇOwG£M›6méÒ¥kÖ¬Ah¡ººíÙ³gýúõæUyÌË/Qur'M® ]ÊTöÍ—#à ²fÒñôgYw /(,,|úé§Ñ·®ùùù)`ðI,„"–-[F¯,$³#´3Cl0ÐâÝÊfˆÙí~àí2Czí.™aà“Ãk™Î $E)¯©©)++Óh¢E‘Qu×’ÈH}qq1ùBª‰*ã_h…19RYŽ=JµT"¥vlܸ‡<ðÀ'NÄ “'OæpÈx>øàƒ©ûØ{ÆÔß>úè“O>yÿý÷ÿ™ê‹!x0sóæÍÄ¡îéé‘z¼2¨¾(4'" (Ýr°¡¾¾~÷îÝ@"±Ï?þØ>éèè0îîîözo¾ùæþýû>Õê™gžQƒl-;JµR¤ÒÈQg&Lª¬¬„ ÈÐÙ:µ€fpH=cF—Ù‘¬#‘I– d–z¸J®I,úP‡3 ø ǬˆÌŒ~!77wVdˆÂUa^Ë€X^zé%gyd‚vfH`ñžÉPfø9ƒ~`†2Ãúô¡}gßíkC”«;²Lg† 6¨þħ¢¢‚>qŠTy!Sô6¬\¹TÐ.4ÿŒÌ€F….Fiø[d°ÜyXcB…&G–••5uêÔo¾ùfÈ.\¸0uß{˜\¼÷Þ{ß}÷mÜ>}º¥¥åâÅ‹!z7nÜ8{öì¹sç’ÜÀMMM6À±È$ñp¯éIÍ`W?¥ÕÝ_~ùeH‡¶„ ÝÙÙyêÔ);Ä–À0R jkÙ`éŽåè2gdÞ¼y€aÇŽ MÐêêêÔë-[¶ˆÜRîO…ž€„:îЉ6Z @òâÑ qà@ _ZZêPó0þül˜[?qÈ´iÓ\Ö3f w!DAAµ°"üXþ˜Ìð§µ»ßc̤õe†Qh™Î ÷ß?Í!5ÔÉ[QªEF4ƒÆ¡ :OäaÃæÍ›I!¢H'Ož$SzEÁ á⊶èh<³?²Õ«WÓºG}”(‘#ê÷û­[CFÕc©ûäŒ6uVîîî¾~ýúùóç[[[]/]ºtíÚµºË—/C¸®®®$7pGG‡ô8p ´«zRâøñã8A6caÒ¢É8!Ø ¹¹ù×ß~óóË/¿|ë­·,aWTUUaÔòòò²Èì+#Ý6a¡@ËEEEH»¦¦¦¶¶V±ø¡¸¸ØaTÄ•õ%K–¯`TW‰såNêƒÃH:Ä܌̢÷'Ÿ|rîܹÙÙÙ˜Á·‹øávÕªU~æååáÎsrrü,ˆÌŠŽü¦M›,ÁÏúõëG,fˆ¹Ôg¿»©`†$o1Ã0Z¦3£'¤¦¡¡RQµ(2ä Üà‡‘ÑJEEAƒÔ 6ø/I!P ͡Ȩ­S \u—ÊDhg´H¼UWW'Ø”~r†IWúé'ñ¹råJ[d~øagggZOOUû¶ö°]w¢×Ž=°AIÒÆþ=28‘¤O/ ·]»v­,ðÁaÒíeÎf°%öîݫ텅ꑽ7† læÌ™Ž†ÃµråJÇr‹9ü6@Ýn͉Ì!æq‚«³Ë<è§”)îãåÈ6Ô××#lœ><À`p¢eí€ø£0?}útƒüü|dⱿDæ²Æ¹EÇ?bÑH3´… îÞ 3$^±=Ìp»6Æ Ãh÷3°)S¦Ð™7Þxƒ8”””fÒȈeéÒ¥nÑ4@Üô‰A¾ˆUèqhËÁÈþ½RÔåCضm[eeåºuëx W懌mWW×ĉSýí™bZÑ|ûí·‘Ù_ýu˜¼ùë¯gΜ‘ w;¹µµµ±±Qu¦Ò§é^å^»v-y?/^Ô“–––êam€Ï>ûìêÕ«---CxVæ?lß¾=ÀCyy¹j5nܸtÇx¤mÒ¤I*õ‚ € lܸÑamÇŽs|ŒER¹/,,tâˆÆ¾}ûDO åÅ-ŽG&qÛ@a‡ EEE " äÏIÀœhÁw´sz-77×uöìÙyyyvÌp+bŒK™¡=>Ä›Oà*á«í³ßºc̤1C{ê™Qøææfb^QQ¡¦Ó™üȈ6„ž,^¼6@ä°|ùòÐ|"è•Ö†Ö)4JC´P jkk©ý ð`` "éÖáýýÖ-â6Ÿ?ú­®®.ÄäÆW®\ ׯÿ—ýz ­êÊã8þ ôIé[êƒ(^Ѐ:è¨Xà Þj *^âD4ؘA1¨a⥣¦âŠÓ¥Iœz#jâ½¢ˆ¨©q¼kµÑz!“6Š(Z/5uæ3{1!d¬“ÆxNbó'lÖYg½wþký¿ïÿŸ> óÅÅÅ«¢°òöKOòéÓ§óóóm%Z°q9QØ£ÂÂÂg••µ¿Ï®]»’““žÅ—-[öøñã+W®˜_»v-kãhÓ§OÇ,F†S‘––ÆÑâãØEóæÍ´YAɃŒÑ -óàÊP™QbÖŒ=ú£>²x-(1‰•LÛE€vkÀØøñãQAß¾}{GÁô²~p7Ulwúôé ¡mÛ¶®]»v'Ö¸8PyÚâÝbŸœø2ÃKô¶·úùW­ù —¿Æ?š˜¡ÖámõÁFm’Ùð™A,-jÀH@@HMbb"ñùMG÷1" ¡!G!1-5#bAÓ‚¾ Öó×(À1dd類¿ÈÚž>}ZcÆoc“üÔ©S!åååÆGŽAUÀ òòòÐl+((¨¥¿—••ɶ›¸›][¸p¡3Àij³³mJñ\Þ´oß¾‹/Öòž·nÝr<>ˆÂÙà}'Ož<{ö,fàkúVÀæ &8 ö×ÓÓÓß~ûíxg:F¡”$G¡¡îŒŒ 9Q)*Èöa69ÁTˆKÙ·oÁ€X´hQ(+íÚgQ[*—éìW¡dàjÆ! QÚ]ºtéܹ3ZHHHèÑ£GèÆh¦Nꆸ$çÃx3à %·Î·ú™W}ùÚD3Ô>j)VqŒÿû/4 f Ø›7o¦Bƒ¼Ñ„ö3“ƒ úCÔÉØ·’DÂHôŒÁ•»~ýzdjK«[aˆØd a‡å¹U©øæ›o¾úê«ãÇß¹s§zŠøˆlÓùâââZž[¨0¶nÝj;X6ÿÒϲrƒ?GÁÍmß_|QTTô¿;õsᇼÉ}€³#7lØàÅÜÊGGÅý™ü)Š´´4?qØ™†7Þù~½Ñ¬Y3–=eÊø¤pšÒPtJÃ@uȹ¼¥¦¦Ê`ð1P·õ@N}T\özåÊ•jÍoaƬY³ÆŒƒºuë†úFñ»(¯*Æ C† ??ŸBÒI8¡ªá;·oß¾xñ¢Þ<0ʲ²²Ã‡û•‹e6â<¢*!òpüøñ³gÏJKyy9 ª ’öpòäɬ䨱cµ÷÷áÎak`[oRQQ‘:¼ûãhØ€BTà` ` uÅ N”e¾å|²¾õÖ[ñÞú‰fÍš±c9Ì»víÉ0Ì`Û¶m˜-`ƒÒ°Ýþñ´´4I€>æää̉nÙYµ³|ùòä8räHÖ¯;tèÐ¥Kx€ðûF!{}úô À Ì›QÂ^CéŒÍû­;˜WéïÓ(ÆÇt51Cc|\SÔo4"fhÕªUnnnaaáôéÓÇŽKIh U ýH¢dìêÛáÇSžÐ³„Å®¾bK—. ÔŠ+ B‹°!°lð Ü´iS ë¹{÷î…(nݺe\ZZzèÐ!+c™xEóæÍý§ß}÷]H…Ø·oßÑ£G/_¾ìãÓ _ݸqCbÙJFFôÂ{N‘Å×®]{VYYgßÅØ¹sçĉG6`H`àŠH!âÇQp= aùôôt‹ð`}ff&ÞHJJâhñÞŠW …¿gÏž½gÏûrêÔ)ì'?EEEfì׆ 0ƒºhÊÊùóçìdŒ²$ÍÇPA&™»\÷Çó¼tGò>ô3øh±7±¸sçÎü]U±­ü° _ÁÚ¸øf¬‰ã㚢~£1ƒàø7näYZWN| Bèe‚ÚJ¥—âÞƒîß¿îØ±cË–-r… fΜ‰PÝ ´ väʶ._¾Ü.ã 3οB v¯0Uk¿~ýÌH”2TUÌ Uh |+­7PÅf|ì…ñ°aÃ$ÜãÜÅÅ;m1e†p­—øW-Lü ~\SÔo4.fÉÉÉÔŒ›Ó.z‚‚Èå!S:uÒ°-"YÄêý( Т腯4Dî ©üä“OV­Z…F6mÚDE?ÿüóÏ¢0ù÷(ŒMž;w®ºûܹsçÒ¥K.\°áÆú2Ô¦M›Ø§%Á7ý³Uÿ~iiéáÇYqqñ÷ß_ÚϜ9#Ÿp‹à3YæÂ}B>Íë^å3??ßÏkÀFýFåO?Ý¿ÿÁƒwïÞµ_aÒkgffúw ‚wó†ÙÙÙ“'OF>rF  B ‡´´4ŒñÇ(ÆŒc2,†Uã¢Ä-Z8ùx÷îÝ áHÆ@*à‡ƒQ ;U¦Ì•ˆZ´h‘Áœ9sB®þÅܹs0,\¸T`*wV_Ý¢P}ïEñÛ(B%3iBaì‡;vÄÿíÚµ3°Fi+OA‹¼CCÈó‡±bQ¿…ð+\SÔc4:f³fÍÚ¾}ûš5k4>Ôè\5&˜øP!äо}{l@”\õ8p…5½{÷¶Œ¬¹êwÜדA¦†V¯^MTÝŸ©~00¿~ýú¼¼¼çÏŸW?®åååW®\ùöÛoƒ²Eº:|øð¸$çu ***ªþ_$TàúèÑ£õûøñciä2œ×îðeæËSlÖâÅ‹ÍÓ_16¤9…>j$×­[wïÞ½W[vÐ= •Í›7£ÁmÛ¶A¯|x¢—±é,Éqòn< u]°`Á¼yó\ƒKZÆSRRRSS!„Óâ£Jñßùjذa p–Þ}÷ÝxoÔ‹£eË–IIIYYY2\RRrùòex 3ÒâH;çÇŽSË2ã=ztçξ…v¾µ5G!93¢Èˆ"ì¬$ 2±3úÖ­[ózuÝU™IU©î $?&$„Ú„ÖW•j˜Wª~-Fí¡¹¹¹öѳZµjï,þ'bÉ MÑ 3#3"OÙø8m7nEÒËPí‰k€ãîÝ»‡æ…ŽQ°þ¡ß~Eµ,fñîÃÝÜyåÊ•þAÆŒ5S!þÍ~½‡v}qAüÃ?¤C‰J‡s[‘º¢ˆ7 J¼_Râ%Š2 ^vš9Ý…âT* ÞÔ?¤jðÛx­ŒÅ ^æ¥Û‹ó,?²XK×9cÆïùãËùžïùžËsžó|ÞGÅ©¬ÛP"ë’]ºt‰ùTQQ!›˜Î]ëšÊE¯ËæÌ™síÚµÌzïܹSYYI—kjj^ü;>±{÷î:tˆ—¸Ž°“Û(¹ñüK² ŸV­Z¥Fyîܹˆþº´ºê¾Üí´7n ›(ŒƒUðž½€ ¥¥¥sÇŽÊ€&ú´ Y4®©D„€` ÞX»víçÉÄÙ*** ãÇ8p ùByyyj &L˜à‹æææ¶oß¾eË–M½o-Ú´iã 3?|øpu2HÀ!›Û¦’’Þ8Ÿ jPVVÆ9K´kö¸ÈòÁÿp©/)s'ÐzK&÷N™ãÆüºï  K¦SÖ¹sçŽ;jæ¸9•*{ôèñ‹d *uâ>žTœ¬[·Nl`ž¦öå¿,Ë YËZ3eæÆ*¹‘ryLº–£úöí+I>q[Qžï½÷žL%#E*.>2fPL²’ÜÜnfΜI5ˆ¥ +´CyõêÕ´cc2#†ƒ>ñ"£V>¬­­å%bê2{äÈÙØtРA†nB/ý—VUU•Yã­[·HM?vìu~Y²‰Ž lH-Êú46ø´ÞhWœ°råÊ ¢ÀÉàaùòåBnéÒ¥ Ü{ñâÅÿˆΞ=‹RÀ Âñ4' °•F±}ôNìH46 ( §²YÝÓ¦¯O¶aÆÍÉLX‡„RxŒ=zèСfðàÁ¦0x˜4i’8]BKàW*Ùºuë7¿k­ZµíPÏÁŽE¶W®\±wœ€`ÃÞ½{…«X=}ú4`¸œìÌ™3*ƒ©Ä?v \Ì@¾9Ö6!@÷éÓ§[·nÖè|9wDÁÉ€ÊÉÊN_n2óÑÒY@q65V¼÷DõjœAôe,qâÜ÷톯•²–µæk͔ڵk'«———Køn%î&që‘‘2)ˆÅýEv –èäv‚.íËðÈA¢ Š îGr£|ûçdDmÍš5ŸÕõ!%Qc*שS§***Ž=J[÷íÛ'9K}òž™K_úê'˜ àÀÌÒž>{†,ÍUôÉ“'/«öÕ«WiͦM›ˆ/çHøH Xoþ…%öB™@AAÁÛvj^3d-kÿ7ÖŒ˜IY2ùÆåywÀ)S¦ >H_$“?ÁƒLÀð«dq’Æå« 9Œ1HÈf#GŽ”ö¥Ç ‡Ð‡d3#â1¯7oÞ̈׭[·äaÂzðàA÷YmüµnÝ:Z“ŸŸ/Oâ¦õØ1—AòšYÔýû÷]TII#@jhÖ‹ 8ŠæC,¯Á üÆi™B‚IvIIIi²-[¶ø$ðª¯~DË–-ãÉW ×МX%pú7ooÞ¼YW[·nÕóöíÛ g›ÔÛ/5–æã1†ó¯cžLfž”ËÖ[‹n-'€A˜™˜ö‚múôé'NoPd d'(CfÏž­©ÅÓ¦Mœb`èС“ξÆýjÙ²%~îÒ¥‹Ð5ºUØŽ†aùD³/9ÈÇŽ«ªª²§×¯_¯««{ôè‘8PZìÞ½[´C)“_œ 0ÌN¦FÿVê“wß}·{÷îA Tÿd‘W ,Ó¹KÈÁ‰súƒ‚ƒ€úöí<PáßQ£Fñ-‹»`]¯ÑK¯Å²Ìµ¬5²æÅ a²½ÛÓÎ;i´Ä>yòd·ÉJ‚òŒ$&_ý2™šHt¾þ6™\'ó“w´Aɤ5·Hܰ¨†þé‘'IÚ”Œ R¨¯¾ú*#²çΓ™÷ï߯þ¯ÉüN¶BÔȨ ¼=ר֭[bšQ™ÚÚÚ¯¿þúüùóÕÕÕ!+Œèðùúõëiq.‘¥/”å“O>QþS2ùß’W­ZE‰8Jä Tö×É6'#î¡Î”Z{õ'Nœx*˜U€\ƽþ5ó‰ÝÙ–L`€·è_=V‰íC¶Æ_&l¶´$àRewÜsuµ2Ùêd@^­ `h ŠŠŠBL¬Y³°Aè õ]yyyS’ù¤Aaa¡óå©=À ‘B.0UL’àöíÛ·jÕê{7H½hÁÚ„^S[ý›†¥>}úÅwß½ì¥ÇÛÁ/¿üR4*œHjjj@BÖ<ÀºœcuÖhäÛ&ñQ0’câåææâBoÎ±Ò @õ:uÂÆ;vÔÌ<Õ¼Ÿ,X]½zõúM2'Ž,X Tì£Ø0dõ†ãÿGZ–²–µFÖ™¡mÛ¶2½Ûµk—œ#ÅMš4IB–Šƒ $+ÉÍSŽúu½EÆCqÓ‘Ó$|°À kɰKHïò¼´I2¤5ŠCªBzèé1h¨áñãÇïÞ½ËQ>¼víZeeeYY™–®NsçΗ ȤJY¶4¢™4¡÷È–åTTT\½zõöíÛnš®¨/^$C(ÿ|¯dk·p«&¯ôÚŠ¦'£¤ÖHw‚tNÁ×'C¼áÉuþ îú¢Þ2 A¸ý JKK_Å ”…²×Ó@^ý¥`2±;AwºÝ¾}{ì‘ xUÙr(>AÇ óçÏ_´hÑ’©ÿjìÔ’%K¨§ò±•žþòûïêMàÙБ#GBÍ@ÖÞ½{‹¢Éú÷ïO±âĉ2^TÓ¦MC¹vaàÀ‚-pWêDª=z´¿ò’i6lØ0ý|üñÇD–пÊ?ìÎ;öQÚ\{öìYÏo¿ýV}£–—/_Þ³g4²RGiñâÅv3€ÁùÇ2T€ ‚2ÀЧOŸ’ù'K¨ÐµkWžŒ‚#¦à/Í©ô‹ÕY~D‹íp¸”1I‡¶,3d-k¬92C‹t “â\aƒ¹)ËêãÆ“£dªÌÕOYîR–ñ|Šz)ÎýHëׯŸÄ.c2$r¸× B oËŸ°ac½¹´R¢’’7YC«‘ô¼ò•$\[[K…O:å•2Òó‘ÿóóóÇŽ+ç%›0a‚„lÉVvíСÛñØ;ï¼c2ôñðáÃîž.¡UUUd…ÄœºÄ*×Fi“p›‚ÄP -àĤ´†Ÿ<òÈÝ]Ÿ‡zÈ"˜Ž"ˆ‚ÏÕÕÕkÖ¬©©©Y²d ÚY±b` ,·nÝj’ô§¶$ÐY‘Rm"H …f}`&¬f!sDPF+CÌK+ýõÖܹsÃ]ÆÑnÌŒf­H¼¿¤Äê5rãÚµkNŸˆwõ4—2àA‚ÞKÆ£™3gzÅ\^ñ—^!Ó£G¦\:g(.½]Œ·º…˜½‹˜Rmú.:R.jœðr±)S¦¤â©m´±ÑÒÀbýŠY|uÛÍycñ·lÙR[[»mÛ6‡díڵ˗/×þV± øK÷ñg“üÖ$*\¹rEÿºº:ˆ:d¨Ðä–×D>¼dA#Râ@löQø4œ¨àÃQªkDAÀ[KçλtéÒ©S§”È!=Í‹)}nÁ _“C‚À³kA8Ü?îî¿ëÖÆ mÖfì¾f&#I³¤|ÐÙ{Ĉrµ1:6¾Ç/¤´îÑ£‡3éƒÂáÀàûõæ³ÒÇÁsV+¥*zzÑ[N£ÏÊBe1m !Z>Øÿ'öí1ƒ›«7üÛò‹­·¯ö›OÑf߻ߙ!Ö³gO©;RN#$|iʽ.ËZÒ—T~@¹þ$Ýi—ß´'é…dN"Þ»wojžÒ Z¨ÀÔ©S‰”) r`„‰)Í+ç¶ë !\'!MôÎ-RÈŠœImñ‰‘ñƒ„,ÁöêÕ«OŸ>è‚çøA;W9 1ô:t(xþùç‡ öÌ3ÏJ‰C¸-?«C"åZGH$]‹Kš'{÷î¥,Ÿ~úi“ÊRSS#2•$¦vU:!ᣠ„Ë.œ(iĈ"Ðâ”G£úÛõö÷bo£ø Š-©7kµqãÆ›7oÆ-ôט¹œB…Ê‹çd`#Ô‘½Ò¤äa*dÊÓ7Šå‘fS±­:è,F>Ϙ1ƒ¼NŸ>= á¯Õ¨ ("íÙÊðƒEVZmË>¡˜Ó’Øÿ\Œ^†õëׯ^½zÍš56l@GÌæö¢9û×W_ݸqã“O>©««»|ù2¸xñ¢²¹þ'Nœ5 ÁNý®Ø¯Šq~äÈ‘ ÓIË<ó-ø.r±¿¾”Óͧ”J=íÞR Š+aáOž<Ùt¦*XdÌv¯SÅÙÿ€Riô·5/¶ÞZ¼õS·Y›íxP˜!F‚%F Š‚ÈÕR"m%£R_®HR_îG•˜$©"×¥"ã‘iCÑhœ0pà@ðÔSOÑnRNˆé¡1‘RJ ?2ÚÄCd9@ÝÄæÍ›W®\¹páBâ8gÎ=õ—½‰,ew¹ãaß¾}C`Ætrx HuxnáþO»wïþôÓOs 0vìØ±Ô꥗^"aälF1‚µhÑ"‚µiÓ¦;wž?þvY¹téÒ{ï½§["â|h!uñ† %Æ´’Îêf „,ð¨pbÌÊØÂe­X˜! €"ª««ƒU ±X«pÉÒá¢I“&QÞè>橪ªš7ož¥ær -àÇÔ·Š¥]é]=ÿX,á0`À¥ hç°F¯„š¬€Ð~Sì×ÅÂEXB¼>™?Ô[ðÉÙ ”¾©Ñ£GÛÙÞZXqù¦@Âûï¿_[[«’¿êÇŽ»víÚ… °œh´5_|ñB€W¯^=xð äû裔HàôéÓµ@ž‚U±ˆNÈö‚çâ ñ™ˆ;x¤ßGñƒb?.ˆíÑ£‡¤S±.Åüýa1'³sçÎó)åq2a-v2…y­|v l;¨÷:Cܱ}{̰ã¿i¡É2¿†ý¶4ªï¸ ?MÔ¨¥Ñ, ¿#ÚHã»f30’*¥ó6bivå™FY1PÁ4z$mÒå!C†Ðh!þ¼˜”8jÔ(YÑD ¯´3*%dz!OF.©!ÉVJàäƒbæÚkI›¸˜…è‡OoM¤ ¼Å-={ö”™áÆÜu¨õç$žáظqãÈ–ðñ Jy÷Ýw7nܸ}ûv´püøñÛ%†ô …eË–éOvy+ÃÓ}$X¢¹õÈ´žBÐÅÌ£ÊS<õ#ar´DªWæ³ï¼ó÷Ô- '•+‹©8{/^$ÓÏ=÷œu¶D‘øˆ/W‘ƒ×ÖxÌŸ?'Tà!þd‘ƒ JŠo_ŒI=@ª0RÀ&žçÎ{*¨4êo‹[Ltžþ¾X‚å¹ñ¹çÍKrìŇ~h/,»‰þÙ³gQz]]$Ø·oP9zô¨>pA9räСC?øàß`¶B\¿~½`$V€· Í&Z¬LÏQqªs앾0àPw´€Q}&¾‹: m´û¬½÷:kïÿú}Ï¡½{÷ ä Z¯püøqžú­. Qá0•lXHZðR¢MÔ¹öܳqßÓ´alÞb£G^´hQã-qÙ³g1õ‘«´ªo^yÓ¦Mk×®¥ø¤ßwSaáÂ…ØÀpW…èqUZ]ˆÚ‹78Ô§+W®Ìg¯úIþò¹³–ÕI½€ ¿-FJx\åÿï‹ý¥X¦A€¢>‘]ÎõÒ |*¥ŸÃ¾}ûBýýýÚ^YgUR+JÅ'Å4Ä@O?*fªPD7KˆJ ÒrA·¦ $˜6°…B56*/Œ;P,Ê¢_`0F<­nG½téRtðûï¿ÿá‡nܸy }}}´/$fûàG˜BH¾¶P«hFÖ“f«»æE´]ó4ï›i{— ±zÂ3^*Œ—QÂpBÍXž²,÷‡br¹uëVC¬+ópÎË~÷Ýwÿ3*\½zU&Ü9rY1ï"€]»v%Ey{{;¹okkà @ˆ9sæ`c·Par1gŒ3<à`¬k˜AZ~ùå—ë^H»¿ºô7DìñOÿðíQ3Ãÿ‘ Eˆ¦!ÌÃj]½]¼x±ú¦ÔÓ&Wu[­ 9¨¨ª¢*Š æ›;w.$øM1Oga#…×ÕZæ_¾|¹ZªDÓ‘÷ŠE˜4v³¢,FîÉßf¸µB;úMžHj|Ì™±QRÎ<3sâÑÏÍ#ïb¬~Î6Œ9NH‡:qâÄÉ“'³/¾øâرcLØdôßwïRÆS§N‰GÞdŒZÈ„–° Ö) ÆZ1ê™*‰%Èè¸ÛÊW†pÛ‘wOJÍÈá~³Ù/°„uóâÉáÚIðœ.WÛ]“ÌÞ0ËÉ!´;}úô7ß|óí·ßÞ¾}ûiáæÍ›Ò˜å¬ëÝmtÞ"Ø)QëÖ­[½zõ+¯¼òú믿ð „Þ wV1ƒ†Ó;þ|@ë+0„€Î¶bp‚¿žI“&y­ýœsÿ™O>׬Y3è¯÷ä“O>Ö¿ú£±&34šd4aÚˆb†'Ê—ÎóÏ?¯BÖž–––×^{-’‘OQuOuUZÕUœàËKaÌ3 °hÑ"ÀÞ ,]º”³Ÿ|¦©«ñ×él ш|ú©á;wî$´/À@ï¶mÛ¦óí·ß~õÕW»»»ûúú2„0ñçæ)O»C§Ì0påP?iÓC§ÈPÄ1*O’ º¼oß>´@b‚‘þ}ØÃ¢QÛè£ o$cJ/•,&!dU‹ã6ˆöìÙCàÄs¸X¿~«è¿|ùòP}¼zõê§Ÿ~J"ó Fš£ÂQ̽vàÀ#GŽèÉ J¾·óʵÀàÚµkCåò«¯¾2¸(Úݨ¿,f6Ñ®_¿^2¥TÆÄ/0C8G ã™ô&9^™CrîQœk6ò¦:VÀ(B;ïË+¸Ö‘!KŠäÇ‹gB=Ù#þf º$QᨣGž8qBBâ¦?Oe8ð¦Ñ6"ÇŸNQWW×òåËC§4ç°½½w™~gØáôÔß¡mÀ8à^À sâĉãÆÓé/ààH¯ZµÊ‘{çwr$,läÜøo;vìãýC?rk2CÓš6’™á‰RÖ”ÓñãÇמQ£F‘àãǫϪºzH”}£)’¨@ýU1UýToç ˜’«?xáÂ…ð ££C)ù¦ó5§‡ƒÕ[Ê’b«È»j+õ®T ‘¹7ß|sãÆTI¾v?*Æ?2Gn"IQÛ¥©"j‘oÊf0œ¬Trˆ¬GCIÿÈ–…²JÀ‰OVLÜ‘ÎÄÕY ¢¾N\gÐ"«›'f0ƒ…!’i#â]¼xq(3œ;wNl™E=÷ïß¯Ç ^GëUfÐÂïŠÕ yMB4—%É /Ùh„«Dþ§b²mrŠi³!™öÃb<“ŸX ! —9³GÁ‰ÀF–«dãÄc ´ó¾aœPOEÒkþx†C¼ì’%KK§1Ààø9„Îí3Å¢þÁ]mx$¦M›æ:uêÔÉ–Û &´´´8Þæ„²===Lzœ–Û¹s'¨¨¢Æöp²&34­i#œbO=õÔèÑ£{ˆl8räˆZ­˜oß¾ˆ¿ñÆ/½ôPi}jÕ’Ëà„öìÙ³•_`0·˜ä°xñb81kÖ,å:ä ÍÇסhd‚Þ¥ÔWM!@åÐ××·cÇõ9²Ýá\)"’Ñ(C)ã|"|Ü"4XÔ‡îDÝ ŒC>Q3<çÑ{Åifd:»æS7j¥ßmæ1y% é¶oRòJd£5 ŒPÄrû X44:þå—_e†3gÎ$C,ÄÙ~U˜q5á'–—Ϭû~±8{d­Â-’Ft_2l!OsÕ勒êd,»–dò©à”­´ËV!¤3žÑÜD˜ØtjgwâN«T&] O#ÈTé+±ñéíí…¸H5‡Ðak/æà=ûì³Ï=÷\X¢°þ€ÄŒ3À<€ n[[[QLÃÙF vëÖ­€$ ·¢˜!D¥nÿ£FfÖd†¦5­É 1_R”½±§»»›¨Á†þþ~e\Í'yjfWWW*¸*¼Ø ·˜af1•Y•6tvvþ²X˜AùõH[é^±bņ ¢аUþ\ì?ì×[k–ÙÆqA‚ˆˆ‡zàèAqJÓ‚ ‰Aq£ÙLÜbBbwØŒL:¥hg:%ÕFÄÉ‘‚'~?„ß¡óã¹xÁ]Óª‰Ú÷æe±žõ¬Í½îg½÷ÿZ*8K-LNN’+7oÞœ‹@‘½åmu•;wîd†GýR34‰Ì`>\ÚzÌBjcÕU´ë¦G°à,âmU)Ä×Mi,˜pª,®)’Õª™zt‹þF…¼VP!0<¾xñb®`xùòåÇ ß™!oè¯äLQ_ºÅ1ÛTfÐîãFíÌu&;œ€ã¿W¦’Ùëô)A‹3ùˆÖÊç(Ê!–ǘ>¶ï¢n~eü¼[³²Á¨©|îhŒ¸‘–ÎÜã­nÎÌÀÀ€#—£H8cŽœÃæ‘6 "ÊAŽeTAN,EA-lÞ¼9‚aÓ¦MMMMZ×¶¶¶±±1a´Oæ„ ˜ÿ˲eË \„¿îÚh†o>¨ÍÇÉ…\n>öa]úö¾ÁºfxݶlÙ²|ùòòÈ;;;«ÄbéZÚ9}ú4ý ËÌ20É!?«Ë½%g™Vâ•~¥bw=Ywß¾}ú²´v Y]gí§N¢¤b¸´„ÛÜÊ<º¨ŽŽŽ’1* ¾I¹]ÊáÁ=÷†¼ø•b]-T ÎÌÌxÔ'ÃCv¦³Æ†½ÿ6?÷ Ö5ÃÍÝêàÁƒ²è’êE`œü†nˆ8èàˆ=zTjZ±U\âdïÖÖVùÙ£ô›[›,íQꦒ´%joiŒ’í÷ìÙsá·9ó‡ªðÐåj¥ì-%âꨃžáŽQáxѱ&4 µC¢àR{ÞlÇæ ×rµü®2«kfƒ?¦ !o”CÀj:ó³'Œ6¹ S¦C*¢:11aׯ_ÇÁ¾¾¾žžq–þþþ“'O¢˜?Wíñme*‰ ([ýÇÊ4^½zu¸f:QĕչˆsÉN‹·}ë ™}_Y¶`†k©À ûµ÷„ݨÔ,1 ýSIœ£‘"!Ô£””‘¾r¾¯R¢å|_í©çÑ–mA‡¡¡¡cÇŽ9o¨lWÍ*çMé¼yÌÉlnnvÒ¿ßU¹«=N© Yëð µ™É6žüPß®\¹b¶¥K—æoòŠºþâmÁ4Ã<—˜¿ŸÈróŸç“µ÷ßæç¾Áºfx‡:=zCCƒÌ,oÿ«²0€€¬»»[Ž…ûd`¹— رc‡Ü+ÁF9hÙ¶m[r²4žË>¹Ù555 jikk3!\‚ËP[¹Ø†AL@æmd@(–2®^QÑ!uxðýÚ±OŸ@­”¨J~˜Š^Ê[tË´8"æ)sšGi JÞòJ©{Œ?&)pϨÉÉIò€*p»ºº_T…Q i-e{{»Æ'NäÚ› ð™cä—B|Óf#–ÓS0Ïž=kfœ úC@OT¢gÒý€GS…ï ½xeæ¨8¥þÀ ß‘a?ÕÌ*Q‘IQ&Ñ`ELMMEƒE8eæÔyK"zoãgÖåƒQQ Ωà\µ´´(4ÇIYèßÑÑádþ¶²ßW¦$®S§§cùÊÌF-ˆÕøø8Ù–“fE'³¨¶råÊEú_.šÕ5ÃLõ¹#õ‹ß`]3üGëííݺukêk׮ţ'Ož<}útvvöñãǨ!µŽ!ÝȃÜàÐ?ª Û+#”Ú÷T¦3t­]ç$p\)‡ááá$€Kwr3µ®Ï”¬º¥ÄR  ¦ˆï14—ü£4¸ IÊ`+W7Chí¡'î^:d6-Þr Ü÷2FŸ(ƒõŒ2Offfheø^vd~nܸqéÒ¥óçÏ÷õõÝ®]»DˆvU&,H§‚k===ƒƒƒÂeÅlµíÅÒñͦ¬®Q·‘‘„˜˜¸yó&Ÿm6Î'€øgeº Ʒ캞ȡ¼M à»¼Êº¢”yâs)ê“ö€H¦Ä“&¼}û¶RÝ«"«"còéíÖAœŽŠ œ;w:<’ãÔÜÜ,PE¯:ÀN… =ÇRTÕ•^566è-5+øB$hQ2NOÄü(ÿˆõëׯX±b‘þŽ‹iuͰS}îHýâ7X× ó1¹Ô…nãÆê«W¯îêê’̱ÏÝ6WT¥{æÌÝdr V—«SÍ u»ÜEQHÔ*æTJìåÒçX$„|î-8Jà€p–æÊ%¯]»†³:h‡•ééé3p‰Òƒ¢Ò„‘ΗnFå2«%ˆ ò"?˜Æ`Ñ Q*ßV–9ïU‹ÁèÝÊô7O4 “u)™¸ªe¦2oÍ…Èî cGG‡°EÔ—0~U™È´´´P\:è&æ“““Èú Q;f.b)ßHœ¨ ð`=®f~vZtšöhªèj'*"ê+}½̈Œ¨…D,±Íl†¦äs¢÷}eñAáú[ÍÌ@ð\¸páøñãm•µ··‹ƒóæä8B"ãØŽ“£QÜ´ ÝîÝ»5æ°9f_ÕŒTP:ŠäîÉ“'Íìk cÜfä–·ù,]ºtóæÍ+W®\ÔÿâbZ]3,ÀTŸ;R¿ø Ö5Ãk}}}®f©ËŸ²ë/5)i1qüâÅ‹Rº,qd€¼-Kשh¤(vTæQ7|Œ¢Ð®¿dîÚ ¡ƒüî3ø¯@*÷VÊ1­D†éèC^aA𒆕:¨Ü¯L£ÒœZÒ-Ú#“GTš‘^E·$„²€&Љ> /Âàvevá•i3vxxú»»»‘K¢‚¿Ä„íß¿ïÞ½Å0Š 4°ëíí%îÒ¥K&tzIóó!‡¹å¡•ž†ééÓ§±òÔ©S¾¬Ç‘‘"Ä@[¯LÅl¬,HMÜl*ñO4"Zв ñ‹$ÐY| ÕßU–Þºu+3Gƒe‰x;55uýúuÞö÷÷wvvÚ¾hˆÏ¶mÛ¶oß. BA 8BÞ ‘€D_ ŽF"S§¢Z immížž•šrr,Wùé‹[ÎüºuëV­ZµH¸OÈêšáƒL%Š~s_Ÿ'V"ÿFº½ûíG²7nómÛIý,yåñõ}-X(êšác˜|‹/òð’êòghˆ>,‘„‡††ºººÜø@PD÷>9Yþ§M•Üè dÃוåJHf À]¾|Ùr2üôôôƒÀâ±­$÷Ð0èÊ•+W¯^…?-Õˆo:Å[Dó 4OXÁ«FoÕá#ÛñÖí6¨Œ:R×”­‚–ÀͨSEi ñ‰0ǰûܹsÉ':::ÄŠ:B4Á¡‘>ŒƒÚ©/ao£¯ÂÄ o ñJgúÁlÄÖ‹Æ_++žØÑ_*‹Ôa"C` òŠêeš!B‚WÉu‘„ìÑÑQRÐ.îÖì^eY"IlEI™E# ¤*Kl3J7a1‰vÝ /*K)°¼å§ 8E‚`ƒ9!Ž„³ALÚ>î:tHé:BQ›„h¤©Š–¦¦&*W‹#”W†ØÏakv”uyÂÑ3¤õ5kÖ444,Þ_íÓ²ºfxÿ© @_!é+ó¼BÒ%¯ÑðÝo?žýšám,οm/¥¾¡¨k†g26ДGCû÷ï‡J,@%÷80 é¤q:!@†O £€ y¾\ ¥wíJ“ê5’ GމrçaèçÊ‚õQ; 2"(¡S;xBp9R¹Òz•õèŠhÚ@™e”ïì×]k–WÆñ€à‘ âAN |!tFlgÊL¥¥iÚ4ƒH j¢ñ|Ib‚"‰µè„¡Ò9‹Ú$Ž( ~’|¥™û"7јãË“Øglö³ïµ÷^kíû¹ÿ×ÖG=Î.¥‰§d’Aï†õ-üqà*¸«SS!u__ ’¨‡ûWeQ® Ð YúuäÞÝÝM³ñŒSœÔÖˆÖ#«QtÖWy!‰µ‰™$(òJ3R4ùsçD¢¤äÁÈÈÍ`®Î`1ÚCvÖI.I0Ú#é+TÊ5W0„¿¦(…Ý'&&œHöý©˜ŽÊs0¨·¬o/E0*ÓÕÕ%AÄÿC14'&wìØ¡õJH\MþQLç«bßS·h†Hž|%Uœëׯ{+lšø‰@'«Ž£zŸ×­[×ÔÔT‹?ÖʵZi†ì¾Ä}_j> UcKÍ,,^Yç#ƒré¶PšÉk~»H‚Uð åÒP× Ÿ¢¹Š¢Uú¾ê 蛯>ð°Bƒ¯ñéӧχÝ×ÛgÜeØ·o"D*°ên¨%HÚÛÛpÿþýúÚ<Ê-RÜ‘kì’køî–š›cxU *ØBŠ XAF®½áuÄOã¦$ ­ŸZþôÔZžÓGƈ žâUD‹ÁÄᯧ§GNS´þþ~„R*HM":::ô!ÝL9xð þÅè¥8xdÁj–qýÅRF>&'jN6Fý%.å€R)"rÆÇǯ\¹B65aSbä !là&øxšJFrTE«$D4C ÅîóÈÜ”"š![³ˆ´êPr@•m­P’ÊëÁzD‚ìöìÙ“w†*P@™z=R=ï¡~¥NiªÈ->j®$|UÃŽ¶³)© òÑÑQnllô¯Y³fÓ¦M[·n­é¿j…ZM4CÃ,çw–À»ø,Te,5S× /k†D¾P. uÍð‰š{ úJççÚµk‘‰ drrÒ7G°ƒ|´ó÷Íß[ vîÜ |¦»§%tüÔÁAKácØŠ{g ;À‘r8v옕#Pªl‡ÑÁ}äDnµ¹ÉÂZñaƒË&š¨?555==ýèÑ#ÎæfÎrñô×bA§G•x1‘Ñ56ü’o®·A¿tÀ®ÊH?¢è›bù©>…§ |¨>»wïNY fAKUšÁD?ÓQC>~ÚÂ:ÃÃÃêC½ ã…Y;þ¼³Ð1>\Le’‘4Èú/ˆŸƒéèOoü»XÊ5¨†){ +l$ a¹’:›EY9‚Ô3’£²[·nÙȦäPww·‚HÁ @*HÿëbF¤AE H§x"¢¸ñOI=R|RA²¢Šj@ÒÌA žCõ& 7n¬ÑßhXm5Ã"#K\jy>Éý½l7S× uÍP·9F-àïyuMseSRŒ~òäÉ\Ú*¯û,Fø°ûÔGBD[[ÛÅÇŒë@!àegg§–T@ tÈUL±)ººº>lG×I˜€-PæÂ)ñ¹áfœ<¸ÿ~¤… yj3Ñ#ŠBÌXƒkxíÚ5’ÀÊž’ÿ*611GfeeO/_¾<22"Ñâ² UœÐO#É”XÂįŠqø¾˜4,fD^*¥”‚XDšFŽ=ª©Or÷ôËbV3¢Ü"·Œüµ·,nÜšZÌEU¢ ©©>}'r¢˜ŽJ:M7åÔ©SÈK<88@î2 ýJaµ~ªyðŸb|Bj}j¥a5[ôööÚBšJѨ2»víR%éËNÑR(ä«mooÏé+ˆG,fJ$“wò”@¤‹3ª¨¦Š‰ÁéØÈ»šWtýúõ¦×ì?³ª¬¶š!†¥ †×.µ<Ÿäþ^¶›™CÒ7"µaUi†W2ZDÍOp¡\Þè°”§ï1ÁX]3|ó=ǵêçºuëüÑ£GÏž={úôéôô´Ë¦/9v¸Òž={}íÍús±ÀøPa"XÔæ‰bÐ{%Q¦D]xj)º’.\¸0::jkœB1hCÿ«ºásˆ†kÁŸÀüÔ1Âß h­‘Ÿ‹~ZêáÇDéøÉª([÷÷÷ 2ÂFR8%¡Š3ºHÌà7Åt Þn’íèè0}Ïž=Õn .;ã ·Eê“u"EÂЈ1‹pÓǶV:žÊk‘J ¸lqèÐ!jçÀ?Î=S„SÄI e%ú­Ø/Å"ÌÒ:k•Q+žf9îH)»ØÎa & J‡šÚ±c‡~NVKH!‰$)j!#‚OIc½rÂsâ6òj‰$Gìß*6‡îhʶmÛòZnÞ¼YMšššjô/Y}VÍ0ó2µ^Vó;‹/µtŸ…аŒ¥æyÞ[¯ŸžfX$Á¹¶H^³uÍPCó}öå¯~êC ?~üø^1}tö%B+ €¾êakdÀ×ÅÐÍ>-Æe

Z)êšaåî`Ü–-[ªý‘‘Œ~ñâÅóçÏó‡c€¾~ýúØØ˜"Êc=šÀT}Y,a`ä§ ŽpCƒÁ(è(bšùa öErëœÍ2ÄíÕÓÓsøðamoo¯ ¬±ippphhHK •WåСCü¡ÓD±a™‰t¾˜µ7´H°©ØŒ¨ØDÈAú­ÏÍ"欅˜37ÂCk/» Þâ²ã™]’þFEXJ ¾Ù(ìÖ”-g«i9§VÆ…§M:YAÌF•hÿ4kúY0}>ID¨:ªä¿µï‹EÛ¦ÖUÖ·Wª'T?sXfÑ$Þ™ÑÑQÿPšíÎ;^*îÁƒÿ-æ' £¯¼{ùmÿ$­®Þq©¥Ø|¤®(ûšaEY]3¬4Êá•A—Ä»wïNNNNMMùøß+öK±›7oºH 4¸ W˜Âp-f¹„†AÌH`=áW8È¿³³PÀ(@sÛ 9á¾~„Š6º…¶««ËOú­fS>Óh U+’ ÛÚÚ´ß]L? »[9)$€à2²„‰\jq£møsh/ô§ܶoßÞÚÚªæB’µmÅMòY± f娯ƒÅ¬c0p¾2E=3˲U:Õ:á~å »ˆ‡È˜¿‹ø[±ô­Aò—b&ZÖFeýF-œ;wn||üŸÅ¼•Zø­Ø¥K—Gccc^ª 6˜n‹j¤nïh+G3̼,^Çôåi†…rcªðí·ß xSå·D œ5ÿ®ŸóØTÎð‹ xú9ÿmï¿ÊrOÏ:RŸû VΰQQWW¸°òĸ¿“ô>|¸ºº wîÜñwryyÙ vôõõA6vã#´•°F¢€æ *p4>L O£ Q‹ ÌL#žÂ5 –V­Œ9r4µ EÄ(LÖommÕÆ(b Ú=2¼F!Þ.âwE„°Ñ 3å´V|@6«c«Éù@D%®ˆ¨DfR€AÅü{2è«9Äׂ¯ì´ì[×±+£ô#[òÚHJ}¯ˆøÖg9#¹›“”Ùƒ9ÿT®Ÿ4!§”ËlyAq)‰§²M?ÃÞÞ^&À&&&Hãõë×¹uŒ-øÃÐÐ-¿òÊ+ùrvîÜi-š¡˜šÎ/D¼Îð›.÷ôy6mTÎP9Æ<ùcøÄ ‘¶¶6Œøé§Ÿ?~ÌÙ¹sçú»¯¿þúáÇÛÛÛáò.æÁtb©ˆ=:¡6`SSSXo*|`qÅ âŠYX^¡0Œ©‘£ð SØVÃô` nã ’œœacccff¦¯¯¯²íèqpp¨Û ‹#OÐvÈ‚œáwaÀÑÏϧ2ÀÔÔÔÞÞ§âââîHy$&’úß¿©­­E˜*z¿ Ed£#â€æ?r¹Š1ˆl40QÇh#Á!©©©___ƒ-ëטÂèD^s¹\“èééaA]]]ôŸ8qB‘ãr¼½½q›G566644ÁÛ‘€*°X,l¬ÀÒÒ·ééé £€ ÎèèhÜopp0ª…`à껾¡ì•3Ä¡œPpìØ1¡Pˆ÷!>>>66V,;::"U7™…ÀEds¹\d®™™ìÂÄÄÄØØ tâ‡Ãa³Ù¦q:ÆØÛÛÃàh¤óñãÇ7¿¢ÊÕ!(>‘€Ò`)WWWxŠGÊ›››ã5‚]`ñ³gÏBæƒË?mtb:TS,,,Póö 7ä ¡9¡ı@ ‰DxC$Ibb"Dm„;–Ïç;88XZZB` úúúºr0Kcà¢YŒ|ÇÄ€€€ˆˆˆ¸¸¸‹/z{{[YYmdÁ,ä ¡9Ãv°¶¶¶µµåp8LÂK½_y•KkLmY¯Ò©R¡Æ5ÕÍa›KÌBΠ]ÄÅÅaó;::††† «««+++ Æ;w._¾laaÁt™Ä.¸»»gffWWWà úúúÞ¿ÿúõëžžBZZš¿¿?‰#üRg ­€œA{±´´‹ÅøQ222²¶¶ö×ú:Óúú:>vuuUTTäååaŒ¾¾>ÓŪ°X,++«   ÔÔT¸Aww÷óçÏGGGß½{766600ÐÖÖVVV&‘H¼¼¼àL×K39ÃáAOOÏÅÅO°¤¤d|||qqñ»óóóCCCOž<©¬¬LLLôññáñxˆ-¦«þ-@âÛÙÙaÛ îÞ½ÛÜÜ<887˜žžžýôéÓ‡ðtZZZÊËËsssmmm™.™Ð9A3bôõõýüüð(ûûûçææ¾«±²²òæÍü‡[QQ‘Psuuåp8L®•èê꺻»ÇÄÄdeeÉd²úúúÉÉÉ?.//ÿïÛ7ü­­­Áåfffð…ª««+**JNN …:::L—Ol 9A3üV ×x<^JJ $¡§§g||\]$À·?ÿ\ZZBÞ566b¤T*ÍÈÈ@´ÙØØ°Ùl¦o‚X,—ËurrŠMMMÍÍÍ-++ƒ OOOÏÏÏcÇT¶qaaall¬¯¯¯µµƒ£¢¢N:ejjÊô­»„œ ȈM000pqq‹ÅéééÈÇÞÞÞÑÑQDäêêªFÙPçëׯsssSSSHÏÁÁA¤gMMMyy9^!Äh^^V†Ã …“’’ªçÎ €¢x{{{yy¹»»»ºº:;;£OOO>Ÿïææ†¶@  :sæLDDÄ… ðöÆÇÇcÁ¬¬¬«W¯àpžêêêÊÊʪªª§OŸ¾344411”ÿk}}Ë[€AÍÌÌŒŒŒÀ²ZZZnܸ‘––†"MLL˜~DÄþAÎ@ä Ä®a±X–––ÈqÄô­[·JKK‘Ëíííoß¾]XXX\\\^^Þ¦]ì'0™ÏŸ?ÏÏÏC&''ñ&C* 322ð µ··‡à™ÞcâAÎ@ä Äþ §§ÁàóùB¡0$äÿì×?‹ËÇñ‰##߀ñ¦&¾ME¸  l²`bj`²F®ÉeYÔ@A9‰ x4jÌ 7õEœsçÛlSÖSõôSÝ=Ý]ÓßÃÒÓ]]]Óõï·ÿY¯×}r¿~ýúéÜÇs®ØÛ·o]Vyýúõ«W¯^¾|ùüùó§OŸºÝÿþýû÷îÝ»sçÎÍ›7oܸáž~õêÕË—/Oý&P*2@f 2@f 2@f 2@f 2@f 2@f 2@f 2@f 2@f 2@f‹ 3á'÷Þ ÚlÝ^þ(;2XL’ê½iëiÎØ+_¡ÍÖíåÊEf‹ñ3C³Cù'›Ý*µUùm6>È¿7÷©C³åsiIPO·wRËýQÑ!ÔíÑJÍþÉA*oEf‹©2CÛ&Œ›ï*s+É-¥ä¥Ù«6÷”žvøQƒÕ¿ògú—:ôc ™,JÌ ò¼<°_ÍjvV•ØIííLGºý®a3ƒñ§E[ØÚ¿Yµu@f‹"2CPÞ?©zf•ذä-;j¶l€lIëÉÕ.3C‡}V´ ‚÷¬¿ùÔ-•Ø‘-µå"3€Å$™a{îÐSŸ±×0‰1›½Êß ;ÜRÛÃ"3€Å$™¡¶õäÞ;¡Ý5Ûï—÷öyt¡}12XL˜€™ 3€™ 3€™ 3€™ 3€™ 3€™ 3€™ 3€™ 3€™ 3€™ 3€™ 3€™ 3€™ 3€Å€™(™Z •€½Af€(2 3@™ ŠÌÈ å–Çz‘4"3`ï‘ ªŽFd,™¢ü`YK³2Ãáa²Œr©ƒakÑ j’Ì0ÔOTÀ. j„ÌàþÖŸæ¤ü\’¥@å…åA€™¢†Ê §Båe†‹Û[,%•òúWÙB Œs2Hf†Xùá3ƒ;¨?­·§ò 3€ERÅšµtÚÌÐç+Bf‹ 3D@-63ÔÇY¡¢ùø÷úÅôÇ™,dfÖÀ`-ÍÊ @È `Í Í2œ$3`/‘À"•¢È ØKd° 3d° 3d° 3d°pËc½Hµf†-P2ØuØåÉ Øƒd{äNó?@ä‚If@¹†Ê YO<þä2€[;7î\y`Y»|]˜Ì€½1`f¨lÏ—{ca,Dܸ0~êÌ0u«±D¹Ë]j™IfXy‚ó©’ƒ<´%Û‰¿pÑÁLfÀÈüÌà‡‡Ô1™SÙ¿Ì=©ìÂýwÞ3CôäN¿pÑÁLfÀÈüÌp ´c2¦²‹ÌPodÍv¶ºÐ|mVìèqPÞ.µç¦.)wùWå–œ ŽçÓx´Šæ3ƒ»]N"V{‚Ìp>@¶Ñc2¦]îäB' ë™AIzfH]ÝzÛqj_Ö/¥v Ë%=ð´Æ¡I‹è`*3Ô½)'«=23\ƒÈ1™Je†hl°g†fMV6YùwÛoÔ·ìÖ[,Wí™!×à‡Et0’š('«=~fðÃCê˜Ì€©ä.w©ev¨ÌP×úì“d†íœ‹è`îŸV9‰Xíð3ÃE$ÐŽÉ ˜Šž‚oœÌ½wëmÇ–}Ù²í¶î¹2ƒÒ€‘‹è`&3`dAf8 Ûè1™Óš$3t8¶PîÕwÿÖ £ñÀxÕhðÆÃ":˜ûgÉÇj€Ì Á rLfÀ„r—»Ô2›Ê õ×Zp2zœ*o”º7õ¿pô‰Ñ–'ƒãIn¢ƒyÌÐÌ#9‰Xíð3ƒRÇdLEÉ za%3Šýw¢ƒy¨ÌPO%9‰Xíð3ÃE$ÐŽÉ ˜J*3´&3`Dó€™!:‰Xí2Cë‡Ì€©ä.w©ev2(:˜É ™¥ 3`É¢ƒ¹Cf¨ÿ]æ~œ©Û ´K-³d”hÌ5ìO dƒ,³§dh¨ÌP¤2P2ì™{£sf«.P®™,™X€™X(™áÀ“Ê SÇ0/d`Afd`Ñ!3žv¸ì´ÇúDÈš&uá>3‹Y™R÷”ß_–wÕó}¦n§›Pý¹zÌsH ˜æù ¦¶}¦“f"•úìwõ|hp’žZ¸þia„!Ô93È|.¿îºñÀ´ü¥>ú7˜Ê4‘·GR7Êò3ÿoeä«‹.h²×ü“r»O-ƒrqü÷‰žZdtRîðë0Šê%äf DrŽË2Seù¿FP8úǢػÏ?ÞaP,õžõ«–Ì ÿO”5È'¢ –Ù°/#ÕŸ£Â>hsG™ÐMžäŽ&• •òKÐ33DOZr]k/¤º¯9îPæ/k@ö\F,ç;·™¡úsä%2þ_ÝÍ-ÿTbš(³[þÓ½W–——¸D˩ݔ*cìù5zK•è÷ÔQ ûz¢¯ú8L·Ô êÐþ™XãÇ< Ø}öÕ•Ý)dôŸˆñ‘™¡hãg}¤Z“.2 #3îì”> É €®ô9¾ptf¥ôIft¥Ïñ…£û0+¥H2 +}Ž/݇Y)}@’]és|áè>ÌJé’ÌèJŸã G÷aVJd@Wú_8º³Rú€$3ºÒçøÂÑ}˜•Ö¹ùïFÿä>qõ§k×®­=þU{ûÉ @Tî¦sxØe²¸»êýjë×è-¹O)±û:÷šRƒ~58¯7À/f UÛ˜‰Öc©|Ï†Çø,™áŸÿý›úüýåïÜØÐäK—.ݾ}ûøÜ‹ ›ÍæèèÈ]"3ƒ!3tÛzäj¯ë¿Á•hw™AyÿATSzMyPk=Ê-zDéP9rõÏ ¹±¡É u`899qQá/Ïfób½^×±ÁÞ~2¥Ïñ貯¯Ø¹ûµeÍ'3¤»OËNí¤6ÖT§Wj¯)UE¯*]&oÏ òÒ> ñÙ3CšOpÒêÀpëÖ­ çiáçÏŸ?~üøüù³È @ÊO­Æ­Ûw gf0>”ÌP¥»Ïø–”KúÆš*o,æ·3Hö¦¿W&{åû4BFfÏ ÑŸ"Œ±ÁíéW®\9>>®Ó‚‹ '''îàìììׯ_.<|øðÁ]Z¯×d ?˦#Ïø;‚ý?A½NY¿|VÖ-ö6”ËØ}ÑŸ<ÃÌ`¯_¹%wx4`f0Æ·§_¿~ýÍ›7.'üþýûèèèîݻ î«‹ .E¸ÌððáC2ÐßÌ3CëšOfH}UÞXóIUÛ33D;ÅR­±þèy{."3ìŽ=3ñ !Œ™Á… ÎÎÎ\rX{\lp'ëÌp||Lfú›f{™¡‘›Œï¡fˆ&“a3C‡2Æ÷i„ŒÌž,cf8:ú?»õ«Ü*`¼ª¶ï¯Å^‰D®Å\Db±ë°¸‰Œë+Töîi™f2ù³94tØsóý†éP:4²_¾ßï%œsÇÍ Ç‡af¨ëZöià~šEçbèWá©«ùÍïyšáàÇÍp²šŸ˜úþxé¿9Våï¹=h†-Ò ’ooo’Y–Igƒ÷¾ë:içh`ágüxe™ú-}~žÀKºvõóUoÒUþšñ&'m¦üÀ¯ýéÚ¯š:£kƒ>ÿ_çÑŸüâÿ }3lwÛÀ6©$$¤ þ|9dƒ—Zh/?å ÍÜïæ3Ž˜ýÞøf_:'Eæ‚b{?¶è›A³é›Á{ß÷}Y–EQ8—;WH3H'´mÛ4LÓ”fîG3˜ö«ã›qõ<9Uø×ÅóNŒZ¤$$ $¤Æ1!º®“ªª$’$¡€ûÑ ¦1>DEß ÛÝ6°Mm†±¤ÆrN†¡úâœË²ìùù™fîÇ¢cãCTôÍ Ù”Í$‰´4ÃÇLJdCQ’ u]ñ¦éÓ7ýû§€‹XtLc|ˆÊ"Í ò<—fx†AvÚ¶íû¾i>ûáéˆþýÓ ÀE,:¦1>De©feYzïÛ/R ²É‘ÍfC33bÑ1ñ!*úfØî¶‡m®fè¾E9ÊóœffÄ¢cãCTôÍ Ù&5Ãf³ñÞ÷}_×MUUMÓÈ‘,Ëh`F,:¦1>DeÁfxyy)Š¢,K †º®Ç`x}}¥€±è˜ÆøM3LÚn^ñ8 ’$ÉóÜ9·Z­Ö뵃„Í̈EÇ4Ƈ¨X¿!i Ìú3þà¢bý†¤€0ëÏøƒc|ˆŠõ’f¬?ãŽñ!*ÖoHš³þŒ?8Ƈ¨X¿!i Ìú3þà¢bý†Ô7ð°NØÂøë7¤¦F4Ð¸Ö çh qh†¿AO:ÿH¤#5 endstream endobj 137 0 obj << /Type /Page /Parent 676 0 R /Resources 139 0 R /Contents 140 0 R /Annots [ 138 0 R ] /MediaBox [ 0 0 595 842 ] /CropBox [ 0 0 595 842 ] /Rotate 0 >> endobj 138 0 obj << /Dest [ 89 0 R /FitB ] /Type /Annot /Subtype /Link /Rect [ 371 575 390 589 ] /C [ 0 0 0 ] /Border [ 0 0 1 ] /H /I >> endobj 139 0 obj << /ProcSet [ /PDF /Text /ImageC /ImageI ] /Font << /TT2 838 0 R /TT4 840 0 R /TT6 536 0 R >> /XObject << /Im9 544 0 R /Im21 141 0 R /Im22 142 0 R /Im23 143 0 R /Im24 144 0 R >> /ExtGState << /GS1 843 0 R >> /ColorSpace << /Cs11 540 0 R /Cs17 553 0 R >> >> endobj 140 0 obj << /Length 2946 /Filter /FlateDecode >> stream H‰¼WÛrãÆ}çWÌã eÂÜù(¯²©Myk]“—( ŠH@ ±Ö¿¡ýàômRâ®íÄ©Š˜kwOOŸî3?lWßo·±2j»_müMªø§Fø›PʼnA¤¶ÇU@sýÓêû¿<õ4¬?bµ-WklˆóêúÞ‹üHð`,Òï¼~?ÑÐÇÁËüT—öT«ÈOýÀ[›(ËA¾^{Æø™V&VkMcÐê¿Ñ6ÞU{¡ot¯>Ýä™@­÷Ïí_W&$›àÃÖf)lÌÅ\´)Dó å9›·=Ô^¢Us,àóDí›ÚQg({/åÖ3ðÛ¶8X©X•û¹þì…8¬Ž8LÛhÙ ìžv©ñà­q¡È‚ßkqjWÌcƒø±V­å-¥ˆAí¯h‚n°L€˜_(ÒÀ ÑOèÀPhǨȲŠwîì8Ú£k󦪞ðÉZß$j{Ïwäâ·0Xü¦Ê©ï½u†ÇëFu²C36¶ƒ³£Qªj†S[À ÕwªªÇ2U¥ª ‹ t6'®: 3­‚H,QŸ`‹×·“ò¥¿%X‹Ó©mñ(ÙÁ©è¨&ìL{;u߃djrŠzç›9?g>FÖýud˜ÌE"ø…ï–<écÁ]r_}FTÃUö_$*\ðýŠg²ÈÝ>Ù¾·m;'¸LKÌWÎ|€@›;ª‚30ÞNä|f»ÒDH`~0„•da` Ê?lö0ð¸Ý´üÝ!ŸA ä+,x¸£¥œe~€,Ë“MÖí×9ƒK_¸¸6š“æü¼Ï a“}3$Ñ’ ‚Í|@lâ´E¥>=ȧ9õžYd#åkɘ7hc˜Ï^“ZfÂ\Êó $j1y-¤ÓBYTÜ£2wϱñÃçݧ4ê'‹ˆeÅÜ>ÜaY%-b'â”)sJXM.Æ ’À(&ðØ1NªÍ¸“-igБJâ²Ðp&ìI!«eUB¢x¢iyÄÊY:Z)ô¤¼Ðçë„‘ŸŠ¾Îy)Šöåfh ºÃÔ±ïªAjŠök+œ•¼„£Ôxf.L«šjqyÊf†W.gDµ™~“5Z!&!föȯò†¢±jßñFà%Ž¿»çÁ¥ô‹Ú-Üžö»T¶0Ž™|àa‡©¡Í¿5ý*4zjÔX,é‚&¸á #«¹­¤øvàÑ¥Â'Ë~Ù ž×Ñ=½P›¼g¨$*§1¥µ‹uà¨w¦WùÃÀµâÐk¼’6æW1þ˜7ÏÊøó?«÷ŒÓ›(¯Qn~¶Ýë /ÿ-¸‡‘a41„#??&žª/Ä©ž{'ÉãoÇâzpCØßÈ2Äfk\.‰fcØÀ&1-ym× xìÀV 7¹‰£Õa<ÓjKhRŽŸðTÚ#ÙD{0b£áGÄäÓ©ž³Æ.¨þÑ,ĸh-Sl—™îö€K g(ÝP”àüS9N}]Iƒ¿OVÚðÈ8€Ñºþ?àò»?“  êÕÈP£Æ‰»nïÏÜÀc¢kxrdž­~f#$?¿†Ùè¿ÄìWÈÜ0·Ïê'¸5ÄÆXk#röÏ¥xRO¾Y¼IS¹8Ä#©™EB UÈÜ1 …GüóÖ11"ä0Òiøc9h·D¾ÕûÞ¹¯ö²¾•y¦CK!EŽ×±Jd¸‹ÑOG‡g€àý"È$Æ)á–^¸øìÄèYøíÕ*Qz/:Ä–wH&"¨âküxûÁ±agF™£W'¹*º£îhƒu¤ãòJiU z™‚D E¼" ôäšù%”éY°¤´9½ÔØÑ åŒ]l…ŽJ ŠL‚T‹¿¡Ã/#0dô&„].åܺD/“`o Z€§@Ö †‰v1E ~– Àá‘ Ñ/|:á&þÝ„V,Ò9cgé¶›ÿæÑ3éG”ëÃÂ9zrˆßë+ÌfäÉ[=ã¥ìÝvÓÒø©C/yÁØ^uvüýt?þ#Óˆ~(žk´ó¾‹]Ï;Þýü`$¤ƒÌHH?à­eŒzàžà%m j,ªœúž“¬¤ p€¸{Õ2é4" =+Óògr£cÉoµ²•e¨UWšv²€{C½ÄVHÉKÀž-æ™×Š8¦ޕ³¤Aãâ‘;ÇK½î=%s—)·ãM¦Ÿ‹Ã£\R?ãv-„ƒÀn‰ˆ¤Üé—ß)UµGþíæ·O nX–=jî€c’@?ù¼Žß¶¹{ʤ ›Ïe½:C¬;yòÎu6áŠl¶Ï±¤œÀŸ…ËÂñ3§T?zN!Àû­2L4¬¢Å< ¬ÓºÔÆŸÏO¹ Ù¹ªò1Ô¶½Ô¿ØÅw(ìø—Oª=±„\ʵ'v‘ðò€Gœ~âf¯!Xà‚<¥ˆµtþ`¥æõn‘|k§ÈŠÞûâJÌŽ*V,½Šr/r9ðS| ft§kºÔ¡ƒ±Ú\Àó¾(ñò@#¢½7‡m¯L¨¥+L¿«Þ¬/1n0½¢ëb9)èy£Ýß,ž’«L(aO›C’-ìá"…„dSî5ü¹â¡øw—E7“k4a–R“¼;iV@AÞOh0Ð`± î"Ÿ~§DŸ, ñN´÷ódÔ‹ u} Jd×uZÝgÏØszx\Ew2GwÂ>*úºP–Cè ‘Xq½BÞè7Uk8Ø©­ÐØ¡_U¬ ÓÕÐüÂ횈0¬?oWFáÿF­L’û±Jbƒ¥yÄ:Já±Ú¯~Ø^”£¿I¡ŠaŒ4S%!–<¬tÇUðŸ¾Ëa†Â{Ná‘.!qÜ„vfaDBT±PU !® t–(R>9v%ïé*G•¢?þbº¬íDŸnUÔA -7=§'’Í|‡¶»ù¶îú¬TÃ΄ìpVè !äµáSY‡™ÿ;M ÄÌo Ô‰eÉŠ3<ön¹é1Âzp[e} ckß ” #…âi†ãœŸD§ž¾à:3<›ÈYtú‰#$Þ'Ó›m ƒöP9 endstream endobj 141 0 obj << /Type /XObject /Subtype /Image /Width 262 /Height 27 /BitsPerComponent 8 /ColorSpace 553 0 R /Length 1102 /Filter /FlateDecode >> stream H‰äWM‹Ü8U/xðçàÍÁ‰`::${0d.­ôh!Åô ¤wÿÿ“*ùKŸ¶“°Ð’í~ruÕÓSÉèæ€g R¶2üF ]±êœÀûŒ,…,ä‡ß´+Vð”@C“sžV†ß”î§ÍJø}YêÂoÊBXvø ÆX*2{7 %ÝMO¹æBLJ9–’ýÿ £ÞHí—ëBc0{ÄùØ<³Å«ë¥vÕ53 $ÿ`„&àpð ²,¨V¡µ¢¢þéºàLð $…aèét YÀÛÖI eY0! ÎSÄ©¹Y„c@þ }óƒ,¬Ô«f`1z6GyžìÕÑÂpM@ã8ªß£…²Ú².kW0ØTõåŸ B ЄlԶ͂ՔñÉ:ðÊ‚ÞËš¿×ÆÍgU ‡jA )ß…,3c¡×ò|Ž¢žú8@#2âºà¬¶ƒ³È3õSÍCA¬üK|ødÀ…Vµ0Z\8ÉÛðÛ«»‚Ý?åXÀiYˆêûß<¥n°€sÌNƒ-À&DΉ…WüïOÆ%hC ¹ížÚ/½Òg}îÿ”uè§¾¶-ÐB¢.0èÆ¶ZöÌß– ÏA6 ¶lŠOàj¡™-® “#°Ð¾k[õ ðà/êW…ɰ -Ç@ q]` ÝNN0¶˜…,4MæU+ÑT¡ÚÙ"-h®¯ÛŠI#¿J\c嫚JaÔ3 úØi8vGæQ]°Zˆd·ÂeÙQc“ô]-¤¡Q =±À«‚]ÀÕ‚²9=\ÛQ ͬ¨¹ÔªÄ‚q Òôª@­-ysɰÐu¨…c'} ª DÂq´S³Íeê³æj! Û ² ùËÂ×BÕ"   g£̲"Ú‚a²æmákZèûëWó€ËBœÃ¨ç¾¼ï:yÄS.@º.8$˜m(Óù7²uˆÎþ?P÷¼.ƒ=BYz(Tj °|Š`E€¼ârx|ÄžúȪâcŽ!Q dª ¡¶´fêh! Á@Å¿ýáM=åÓLu!М*;TBhÁ”eUUeU¢±²)UŽ÷Râ!×…H ,D™.,ä¡‘†e‡pµ`YФ…`À±EQ Ž¿hûÃÕsEô%ÇyÁW'ëu¿ 8íQt1 1 Q¦ÎâÏBIwÜׂa*Ô}Gµ2dA’ Ê»»²`¥Ž£^ù×ôw¾ŠÚ²ùü,ݶÐ`¹Ç‰÷6‚ ó,ph.Ï—ç'Šú9Žo•…­ïˆUÿ ûóD8©ŽwÍ4lÕá®XéÕ…-»<ߔï [þvy¾(ݥꆿ]žoJ÷ãA~]ŽÖ8²4 À3ÖÿÔÌç@³@¯éx½Ü÷Z”?ê•òê³–äqeø@{bý>åv[A endstream endobj 142 0 obj << /Type /XObject /Subtype /Image /Width 26 /Height 26 /BitsPerComponent 8 /ColorSpace 553 0 R /Length 116 /Filter /FlateDecode >> stream H‰Ä=À F¿[°°ö™˜Ôû¦õ7¢²5é\^>BdvIÂIÎð?ÀÙ  ¼m0fÚc%¢²\ ­6ÓE8f0X2¸7ÙÌ$ÔdÖÄ0[¢%b¢ú¨½MTT¥–ó×_›·)w¯Ü…G€s•% endstream endobj 143 0 obj << /Type /XObject /Subtype /Image /Width 26 /Height 26 /BitsPerComponent 8 /ColorSpace 553 0 R /Length 120 /Filter /FlateDecode >> stream H‰¬’ËÀ D·®ibÏà¤ÿbâ_½$Yf8ð\`T‘£îƒ‚Üa/yO€ž)±÷ ZHZO͹̒5c½Ûì’€&éXåvcÛ–0´p$côŽÊ1´z"®&®s,Äyo|y¹ßH8}ÄG€}€”e endstream endobj 144 0 obj << /Type /XObject /Subtype /Image /Width 26 /Height 26 /BitsPerComponent 8 /ColorSpace 553 0 R /Length 141 /Filter /FlateDecode >> stream H‰’‘Á ‚p™ ì@fpÉ0@¦ ‡ Œ¶½² D‡¢Ž˜—a€ÈËèÚx1 É€Mg€ÙÃÀà†"Réko­(΃EOHF†‡•ÁͰu^Vt·¹ù»X«Èr Ë@üãâçn¯#/ˆâ”0p£NˆÒTÆWB0È:5 endstream endobj 145 0 obj << /Type /Page /Parent 676 0 R /Resources 146 0 R /Contents 147 0 R /MediaBox [ 0 0 595 842 ] /CropBox [ 0 0 595 842 ] /Rotate 0 >> endobj 146 0 obj << /ProcSet [ /PDF /Text /ImageC /ImageI ] /Font << /TT2 838 0 R /TT4 840 0 R /TT6 536 0 R >> /XObject << /Im25 148 0 R /Im26 149 0 R /Im27 150 0 R /Im28 151 0 R >> /ExtGState << /GS1 843 0 R >> /ColorSpace << /Cs17 553 0 R /Cs18 555 0 R >> >> endobj 147 0 obj << /Length 1669 /Filter /FlateDecode >> stream H‰´WKÛ6¾ëWðHµV¤^vnMÜ)$EÜS݃V¦wÕÈ’+ÉÙ¤#ûƒûÍ %{Ým æk8ïù8z¹ n6›TµÙ«h•«?žq´²*Í"ljÚ‚˜Ïú»àæ§FÝ AÅqª6U° X<¿éu˜D‰~b/ѯÂ%þßñÖÛ!,¢\WÝÑ©$Ê£8\˜¤X‚¿^„ÆD…V&S ìæ)d[ý+_“[.´‘ѽz[¶§ÐĺlÂß7?“îVt7–µÃ zgÅ*ÊrQœÕ£i ¤^G¿,ÜüArá`£U›5UVþxe‰?ž¹ÍŒÉðå'§ÆN½&cŒ®7©èÝ»‹•ZØÈ.‰8mÉZE6¡³  .C«?¹A‘±c¸Hõ=-µãêÔ÷ábIë–OÕ±w(,ùJ¶ˆOjúëZ5È6ÿ;U¶;Å'!^,õ¢eÉÕZ1Q'"x\­ÃÅ ìß}¡]¤8|ÆQªßª=ój˜7DJmHcQùêPµ%„Z‡b1ýìqI¼òµÕõxßF6}Ç*÷™xëѵCݵÛPUe«nªî»a’Úª®Wì “ˆYØí¬nÕxïΝ5ž¾)ÁýQíê²éXÂ]¸[<Ñ~ ëæ;ΓxeͲmØý™¢S@A^±–ªTÉËa¨ïȉ‰nCú¢Ï=ɉcwåXW<ʪ¡âZÑ`iü&DüÂ[Ä$ÑN.y ÙEµó")_á Os(½Z~C,SìÙ¼× ‡ƒ_Ê ©t)¹È“Gö‘¼ ±gMâ)!‡¢”¡â)¥hFîAC<ÀÌSÈâcµç;¬4“‚ ÒNGSrÙ(™Û\âe ÍH¤3‰Ãmª¹ÞÀé^¶œúŠšÌAé‚ó÷²ì¥Ü DzY_YÔ2@mºãYL„~t—òº ^ûÛ§{¯ývÙÌW¸äï’­œ7pÍ¢‘³hfncm¬¿‡Ê¹6¶¹4åv‚^ù#†Žëk•$|ïcçCqáo]¯ºýõågQ .&ˆ}eÄÁÕå” #KÍQ%^ d!!€“–J„êú ù–Hu._y £éùû×ÒãUœ.Ó©Í@§è x<|£ø+èá@•é‘ ’2ÀÑÁذ+sd¨¥µšÓ6=o:R/GÞN/Bîy¨0õçÀ‹}/ê<ÁV³äšŠ,× É©ÍšéÙ£T‘r{'¯À$m |µOÕ—+çÇ@ 5žïlCf0»½ü6¶¤¶ ®êÚ] ™Åàëw*…ãxâ*˜ÀBJ'“ÒIæÒáºBrîO­/ëŠÉY݇®ÿ8¨¦þˆÖKøJÉfž¨g\á¾åBj=q¢ÔŸ:ú=’î E_¢‹%‰ý3÷ÃXH`Ö žgÎ7³®Ÿj $ѹ;â^ Íš£¸.¨à0 Sç>ŒX;1º<öe;ì]?Û‰´JÅ©ˆäX~žSˆÎ·—Xò\·0ÃáÜk?Å•ä\&÷å@yàÛB׊_~ÜFÑ2FÕ*0yåK•'Àjes·x¼Tï‚}ðrsO?LQ¨U“äW_GüUdÏŸE 𢧀ÿ»S˜s´•1/è5F Ê;„爫/8 x°žou²VBÊOÍ ƒ¢_Ñ·‡l¨5£|)ÝûXÞ Yzþœ9žRd §`Q¡‡Zï¬?ò [%xáá‹ß'p—%ÓSU‚›7›©uüráÚí¶²ÒEœšä³K¯¹J£D`˜§W¾|Îmöÿr›%nø–‡žóM ÷&£¢DõŽÉÅ1D ¼ab›ÑªÿNMÐÂ^ÏóLÈM ì™|)ä[µÀÎ endstream endobj 148 0 obj << /Type /XObject /Subtype /Image /Width 348 /Height 185 /BitsPerComponent 8 /ColorSpace 555 0 R /Length 1818 /Filter /FlateDecode >> stream H‰ì—‰bã*q`ýÿ?ülÄ1èÊ£#‘tíZBª cüñA@˜K0|¾Ü^ýçý­Ð-ŽÅíƒ §¸]2Ä—ýúz­½zfóS¹ý*Ç«g6Õט©Ý†ý¢Ûï`«LÛ‰Û/·{Ž—?ÑéYtGœ½ÓÆ£/ Œ]·%lmœãæùr.ï[ßêF‰âAùaÍeÝ»øhg„#æÛEmë6í#–ÎS•ñg‹PýjÊó£Ü'¿vSÓ¾°þè<¬ë¶ôÖytf„v»·o¡6F­Œ×*T2””ê¢RxÔí~ë#ÛÈ£¾†í|«‚¯š¹ ý~Í+®*Ür[?K[q+ç³õö…q»±O°kå:z¤e$7e¥V»}ä>å¢zùΕ*ñ,µ˜uÊWÏ.ÉÂê‡Èï2«g„u»¾¿U˽„~»nøôôë°ŸŠÎoµŒÈ LEû›7tCoWþÅ-MrK,nÝâ [t‹£që_×ô94êoѺíxm꬛üVû_¤ïö»!C/ŸTp¢: SíŒcéö_Àes9S)Å¥×5In.–áÿþ2Êmt”tÊnå…t[·KÛ¿—M·.]WÁÛÛ¶ý³å6gXª>qÉ·:'”vǸmÝ’1Ð-ºÅA·8èÝâ˜ÒísܬnííqöOº5ƒômò¤[t‹ƒnqtÝzõ[W×ñL‚L¯ ¡!Ït»ƒrkêÂëŽé\掗»õÞ‡«pÊW÷ЫãÖT…M·±ñR·I¥ÏFï"ÖuÿÝÏ­sµÔÛºíüO®Ê··që½RËÕ¨¿ËŒ.$•wÛnÀNâÖVq{C·þÎùV$W+¾²Œ‘ KŽÈn¯Ý'¤õï›7Ý'„¥ŸÉýmëö6ûÛ˜õwÙ Ð-ºÅA·8žîy{fuë~"òþ/“º½:&àfu{uLîã¦Û«Íí3m¾¥[t‹c^·Þûþ+­Tÿ<ÓºõnÍ"ݧëvèßÿ}Žáp*‡Ðv¡é¹ÝŸ9†Ë)•® áùÝ:•|eùJ~‡[s€÷t{н|+c–q{Ží}‚øøœ}éö Ûû[/Ë>ûõU¾‚yÝÞºÅA·8èÝâxºçí™Õ­»:*0«Û9 [Ú-ŠtKFC·8èÝâ [t‹£që_¼Ž¢‹oG•Ên# ´n]-lË­§ÜuVÜúÀ.Æpˆå(݇³n—Ž)âI¦þ]–ÝMÞÕ%qvñ‘jÃõµ¿…î„r늮 ^Äp.I·>¦çtüáȸ1›ns€¶ñÚ‹[QKÜŠÛ’cÊ·É ˆP)Ø3ß*zn6 ¤Ï9·T{†]·äÛÐ-ºÅA·8èÝâ [t‹ƒnqÐ-ºÅA·8èÝâ [cÝ>#f77ƒÝÚŒ³#¦75£Ý6Eó¢t0¹Î”KW·÷0‡{ìtÓc–‰ì}[“Š•BÓ«ìš3ë]¾áv}"#À¸5­Û *\hx;3ªgìíÖ¨¶¼ÊÅró¥FtŠ÷‘½rW=~Ãݦ÷‘n]q%*MÑ» ‘òè²¢\gÔõß*_¨ÛŠû¨^å¬ZF€pA.v}JMyúí÷ âWï¹ßeí+]ŸèÛöëÖYÁ©Í+# ý¦Úg°[" [t‹ƒnqÐ-ºÅA·8èÝâ [t‹ƒnqÐ-í– Eº%£¡[t‹ƒnqÐ-ºÅA·8îàö¹Ê^ûW¾ÕMÜÚœÝnß#Ž¿Š{¸ÝnXmÿöºÅA·8èÝâ [t‹ãNn1áäÒ±rÛc#Š&BÉÔ7¾ˆ¹5â³´[ÑЦ”œÒmaQã°hRnKœuÔKOG·®çÖÈÕ¾”:nÝöhÜÕP»-JMå–ù¶¡vk¶ãV4ŒÛNæ[#OÌ·ÛœÛ'$•qÛUtt+9·¿UnûûÛx¦[þ.CB·8èÝâ [t‹ƒnq<Ýs»Ó¾Ý:»Ê^û—¾Ö-ÜþRèÝâ [t‹#¹%èÇËí'aŽÿÁ˜ô: endstream endobj 149 0 obj << /Type /XObject /Subtype /Image /Width 348 /Height 232 /BitsPerComponent 8 /ColorSpace 555 0 R /Length 2313 /Filter /FlateDecode >> stream H‰ì—‹b£ E;n ›ÿÿáMx΢ví=my9žŒh>>€ô±þ¼ÜŽþz*p«‡wû·“Ýúâsûü|o·mtdëS¸ýÌÛÑ‘­Fñ£Ò­KÙO¸ý [±Ò6òö“çí‘cÿ]Ž¢9âêLáÜþÝæ´}ÇûÞtO½N»µŠuŸâ|EßÝÃyÜ}„må6u‹Ÿ£ ovÛﻀ[§Õ .ݾ|úw„GZ⸧U¾{£ÛU§m¨Ú¼9ÜÆ²Ÿ«è+NVŸûñóį D>wk·1ì8Óݲ;wKò¬•w b5Ç&Å]ÀN”-Vç~Èó$¬·^mí6¾GøCbÊdË—÷Ü3{Ð$·UM­D4NV¨~d·Ã·Ÿ·o¡[ÈZž¯ÅbÐXEuj2­Ý·>*·:Â.Ð_oEòÅûS\‘¨}ä+ß_N»-ÏubMˆ»yÖ„Î{B¼·R ü=7/†­P®–Ï2™ôÜY¡Š‹÷e'+…[Þmý÷[q[¿ÉãÐmdô ¶ ÛAã·ƒXoÁ¨ þÍ뺡ùd·àn¢[ wkÀíÀ­p«ÜêQ¹µ/NŒ«úœõ»¨Ý6¼±6±—M¶×þi»}ç®KD—Äþk†UÇa¢yÌÝþu˜d.%b,ż´²&ÊMÅ<üïoF¸ Ž¢Nž²Ì-?ànËösËöÏ¥ëÖÄã"yÛy[·ÿrznÓ ËSÕ†$Îë­\r»AÞÖnÁ=À­p«Üê·zÀ­Kº}.€YÕí6=fû•né&}]žp«Üê·z4ÝZq½£q<£ jøÆ58Ânn©,¼>n7Ñeê8Ü­µÖ¹]:šC¯Ì[* ]·¡q¨Û¨Ò&£³ˆ5g݆¿ùÜSJÖmã?º&±ÞNãÖZˤæ£(Ÿe$ Qå¬yÛLØEÜnEÞNèÖμ޲Åuc,"®0¯ÉíØ÷„xÿ[osÒ÷wë'cüý¶v;Íûí ¬ú»làV¸Õnõxšçô¬êÖ|Gæý/‹º“g0«º“ǘeóv´¹c–]oáV¸Õc]·ÖÚö%íT?˺µfÏ"Üž§éÖ ´ï›rØíòƵ 4½¶[ç3åpÞÅÒØ^ß­ëƒ-,äg¸µa °n/q´ÞòœEÞ^£ÿžÀ>6­¾p{’þû­åe›üÚbÁºnçnõ€[=àV¸ÕãižÓ³ª[3:+ϰªÛ5€[=¤[p+Ü-¸¸Õnõ€[=àV¸Õ£rk_¼¶¬‹­GåÊf#pÔnM)¬çÖBî>;n­K`rØårnÝÞ2·¾cÌx(—%·N“5e‰íMø"b­;û[h&„[“uŵ,‡S‰»µayŽÛoÎŒ‰éºM Zçk+oY-0;nókÄz ² å‚-Ö[AË­àÄ hsÍ-Ô^áÐ-ø2p«Üê·zÀ­p«Üê·zÀ­p«Üê·zÀ­p«Üêq¯Û'ãŽèÖæf·[Âlw„·4w»­Šô"w TGùДí-ètƒnrŒädï‹(¹¥X,R«’qhŽö»|Áí~ w ã–j·.ADºkx;#Ñ3tHº%Ñ–n†|à'÷5¬S˜‡÷J]åø;¸Ým¼îÖdW¬’²^?„Wð­IŠR‰åw•Ä´lÑ+ïEËh¸uŠõ¶ë¶l©ÔöÇ+xúíŠæs–ùz»‚[Ÿbì±nà˜2;k¯Hn‰ŠDcÑKZ:nÅ<éQjª®t碠á6ßðŒ0¦åÖð«ã¥*© ïÖlÛs[ïX8ìþ¹Ïë•õ6ßw‰JÞ@ì"y& eq¸l;Î[v‚²Wåvâ¼-‹éU6ÜÀ±._KýžÀdæ±t[½CÔï üf—»(òÙ§O`¿z¯ý.«/éÞûS{Ú÷º5ãÒÀê’5Üú¤:æf·€·zÀ­p«Üê·zÀ­p«Üê·zÀ­p«Üê!Ý‚[ánÁÝÀ­p«Üê·zÀ­¥[û¦Õ±¨lwœ:oÛÒJµE L7hºµãS8•üdžN~cS³Í™òwKÉ`*ð£°&Ø¢:øû{h„Ûh-$dÊ 1%&ïÇݦÜÆéÜsË̱ªtÇÛÚ-û"@ßmÊ[óÖð¼ÍËnè„õVÒt{xÜåÝBí>ÿ·`¸Õnõ€[=àV¸Õnõ€[=àV¸Õ£åöùblT'X ÈÚíó¹½xmG‡Öc‰ +·¯ ßõ¯ÀCÜÔF¬>–)‘C &öÏ&aóv¨ƒ¬§cÓmŠ_œºŠ»:Lq~$#¢jTwÞ=^±ùKî98ÆÚ-»ËB‘ü÷lÜ'c©*N¦wJ?H&LœÓøöÜ%ÖWµL.›‘æˆñ´ÛøÉ»êÿ nÙW& ›St¡½»o×­ÏÈ)b<íVU‡+ãî¯e,îбšº8í·iªYb¼Ù­!Þs7îtU¼S>¿žSnœk|Œ ·ÍgÙu·,à*îtîݸežÜúYv˜·ßãÜRÉÎÄ}ù<ûn« ³¹9blÿvðÛ~™·g°K*?z‰Lõ –k¿ËÈô㮂døYbl¸}ÿÜy†—óš½y¾™n“ÄØpû|Ïì×Þ¢ÊðÚU4p˹ö~+ܶßoÃnñ»L¸Õnõ€[=àV¸ÕnõxšçÛAûpk¶]ŽÚzYS¸ý¡À­p«Üê·zD·@¸ÕãåöP‚€ÿHeY endstream endobj 150 0 obj << /Type /XObject /Subtype /Image /Width 26 /Height 26 /BitsPerComponent 8 /ColorSpace 553 0 R /Length 136 /Filter /FlateDecode >> stream H‰Ä’«À Ekp3(L¢ºbæª&3üÿÇì Û:0›Ø%iHNNÚP˜»É€3Úá÷„n¹Šñl#Y!æÉ/NªñŽÔxG—7\Ï$Îd!Pdj:ÐŒ ƒïÓu62®Îc¶Ý1Ò› ¤‚¤¢¦ÔÍYY˜•ë‡m7 Ž—Ž’öÂ< 0lnŽ? endstream endobj 151 0 obj << /Type /XObject /Subtype /Image /Width 26 /Height 26 /BitsPerComponent 8 /ColorSpace 553 0 R /Length 177 /Filter /FlateDecode >> stream H‰¤’= à †_ nYœJá†ÞÒ›\ Žùÿ?¦gÒ@¼$Kû(œøðú]2_ 4ë9ô³ˆ|'D°7rƒ(³‚5À™ž2ïM0£u1p&XFXäu4+X v¸}¶{°ÏTªL)OŸÑDRKænÚ`rD)¹=ã!ƒX4¥™ýj1êĵ±ÏØQcœ˜¬Œ¬dÍ»³­÷¶þ|ís£ÛÇ»/ýa­W¢»}H endstream endobj 152 0 obj << /Type /Page /Parent 676 0 R /Resources 155 0 R /Contents 156 0 R /Annots [ 153 0 R 154 0 R ] /MediaBox [ 0 0 595 842 ] /CropBox [ 0 0 595 842 ] /Rotate 0 >> endobj 153 0 obj << /Dest [ 366 0 R /FitB ] /Type /Annot /Subtype /Link /Rect [ 320 716 329 730 ] /C [ 0 0 0 ] /Border [ 0 0 1 ] /H /I >> endobj 154 0 obj << /Dest [ 391 0 R /FitB ] /Type /Annot /Subtype /Link /Rect [ 194 312 204 326 ] /C [ 0 0 0 ] /Border [ 0 0 1 ] /H /I >> endobj 155 0 obj << /ProcSet [ /PDF /Text /ImageC /ImageI ] /Font << /TT2 838 0 R /TT4 840 0 R /TT6 536 0 R /TT8 537 0 R >> /XObject << /Im29 157 0 R /Im30 158 0 R /Im31 159 0 R >> /ExtGState << /GS1 843 0 R >> /ColorSpace << /Cs17 553 0 R /Cs19 557 0 R /Cs20 558 0 R >> >> endobj 156 0 obj << /Length 2820 /Filter /FlateDecode >> stream H‰¤WÛŽãÆ}×Wôc3XqÙ$E‘Γ×k;kd/€e'‘’Hl™¤FI~cçƒsêBŠš]$‚ˆ}­®:u³Y¼ÞlRãÌf·(Â"3þx°ŽÂ"6é*Œ£(1›Ó"â½n¿xýãÏÎìûEFQj6ÛÅ’F q]üfßI˜ØwÖû]ã÷#/½ïƒu˜Ù­?×& ³0 –.Yç o—sáÚ—™%V³oÇö¾&·ê íÌû²½.²å1øûæ'â=Þ]ÌÜá#|¯3ð” ãÌ ·LÚ·¡Ãß:Øüƒ(dB!‹5(lÞÒ¡íÂÝW‰nƒZ\LrÓÿ6XŪ2…õะæSàˆÖ~›vÙVÈ— [˜eÆ9‘ sæ4Œ éï‚eæ âK]˜Úº7¥9-‡2ˆmWÚ`Óü_ËqÔ`;²û®ÄwZì·Á2'‰ˆiès¢Ÿ’–÷Úö•éùßa$ñŸåE¶ ‹ÃK™Ô† {™måS ÏÄæcÙc/ZS¶¸Œ¡Ñªê…ßÙ3<fg+ヌhd0q« ÃX!LbAðÜUˆžc¾Oðü~©/Á¸ctë@“Ú|þ,W„üxF·ŸÍ¹$é *bâ¨l_×ÂãöPžõtMBAæû‡ 4fs›06|WWæPê)UcÌúUö—…eM†º×3¼ŽŸ¸A‡ÙI>J‘. J›?):#{½o~Õûõ•¡© ?VïL§‡–°º›lÃ(5a…W ÷ª¢LqãÉp¨ L«Ä”B ¹sr³ÄdÂ:¬7‡º«MÙÕ7ôVöJÓYÏkþ¬«||ÛÏϲZËb%° ʼq(;-±jP1Ä´û`ÍA)¯À¿÷È;p"®ËƒÑ²VbY+Áz¬¿‘¹ÑíS4ÊÊAøGmÏJÙº3/¤xyHö/ŇcíÖ3eÞ×nÏ‘ó•Fe—<AJ‘¸éÍgDæµýæ`„Ç=Ü×Ùg›á@b[fˤÜî:&";-/ °dØpÉl´±›NTPïìB)ÁA§ÏÊg0ƒÇ«úž—+ #•@NG›Vn%£ªŸŸJÝÖ»¼Ú7ÿ–é+=²êd-d¦%ÖNOò±ëÁõÍùòü  ìhÏ._ Ä׿xÔàÁ)Çg&¡Œ'‹ÕŸÅŒv¼,Ö|˜/yHÈ"å_ëîvLõæìÔ0†g¹t»ÍіǾ.w; Bk[ÏèŽcU‘°KÂ[u•èÑrFõÁò†,{o¾Ê4í“~“©ª°—Þ<ÒB¬Ág8Fùd«Q> ¦HŽæÒË âЉwúAÊÙrxÖ£•¨&^Óˆ(þÅ_ë'ÈIÅG÷Ê” ?tðÆg…¯ÀYL^] Å ÏeÛúAçý¹Þ6ìx1A9J êž+€ÖÊa~¨Í(ÂÜ`Æø§ùx¶%ar+ xúÉ$RNóÁ©z (÷myêgÎ\ÁG¡Ì9>CޏâԈ垢b®W„Ù8'c~@­[§!ѧ̬»]=»ØTBDØ.E­‚Ÿ°LüÊç ôÍ[‚;G§ö»ïÙfØbè+´Lå P¾W^2åÍýå|öÝÀhßà ú Æ·Gëº òÛsǺ^ÙåÎwPê•íák6bÖ·³TÒ´<Ö„…LöAÁ.C~Ö‡/+ìµÙ<ÒþVå³:;‰§:û7*´éõL6iN5wL%È«ºc4 r`ÓT'Ó#?’K³¦–6ÞÀ£ïëì—íA’'èq´¯ £utËÍ 1ûn‡´#àír€FðAT]GÖ¥3Sì~üÉøÏN%¼åÚ´•¿’™TÍSS± ÁÖwþÒ™ž••Ú-;[(æ÷µbvôkçF¿Þ5]?°“ô5_—ZÀÃJ­zª§ÕúŸêïr©ªÏu[Á¦À YŠ:¸X˜¤$Š?£ü+6‰„wqÄV"%Šc)9™‘aß»7ð±­Ioñn8T¯=¯x‰<ât "ß$Ù^øĆބxÒY$öˆêðvÊ–À¿­)`/M°Šìkþ½6•Þƒç&ö ©ñž9ÛnjÆ„izŸ0lKÅWÕ-ièÒQ»DQÑüúQ§wMQúk@AéYßá@PºŒXÒUphb’âôBÙû®B-@ÎÏ/<– àÇéÑ)îŽP Ïc¡’IxŒXŸ9g¾ZVK^4ÇÆÕëŽÀÿ…žr\nEcâ0`‹Y­à'Ô‡òhúFËk^j$ú8^S?yö}ß<õ“eÉu°¿Ü·.c”ÔÆå¾_Ó>ŒJKt-uu×ÛíVÙnë~LðÔ¯ýˆÌŒ¨þÇ^¡ÜÎþhÀKþ®&‰U›J1 §†¾k»×ù s/SÈœPÅ·ñºÀdlõøÿ ‘.‡û¥3A£b*/Š[´$½~þP3Ü7ì¥øáXò,IÝû#Ó@**ÀSp@uPÅ•8GDew,ìJ¿Ð £ëàÏch}jØQº&Çå˜Ð–> stream H‰ì—‹¶£ E¯ezçÿ?xêH€#èXmëÙkÕg@ذ·)#·Žùyª9ûí¼)T™Ôô$%ª™†×½»ß‡m×ݲÓIÔÜãöì–L2KªfL˜û5Õ$³L!kî&k¢!{a“¹é}˜ê’û¥Ãƒ¨ª‰I³‡š$j<ÍJfh¯O5"·y›© aó¯Wë jF+£ŸTÍSÇ´:õ1iº ¨ »¹é] j×iŸÙé´éÆŸ ïÍ}û¤£˜”È”9¹߇Þ1?Øë+ñŒŠ§¾ßÖPh]ñQ1Ï5“™\MH„1ƒÚÕ„B!€š>)üvjPÖ >º9gâ©«A]]¥FÕž8×tZFhÛÒPAj6dÍ;¨YX¡üh0=Š#¦Ï†ŠPz矗OÙšè&ÌøçMÃ軦×]ÚÖ°ƒû³#U5ž-}<þMïI÷c(|òeWAò? cØg¿ÿ½ˆjH‚WC LjI¡Õ@¨B5ªP „j T¡HQÍÈI­<…’læRn¨B5ššÇÕx´˜ñ‚’sJ#ÏaQÍc>~ÊqT3ͨüqTã5óTC5#ÆŒ›GÓÃQQ3 ‰GTC5®2ׇE  ã (}!¨I^³º믫1õ$ …Ø0¯i¥šÔ P꽨‡ëv§WUÊû£,¥ƒ…{HM¾³•x¨Û¹Zþ/UQZ¥c›Tm4s¡î±/nïÕ³F= 6‰š‚•5÷6³v…ŠëEÌÛ eF¥/ªÉV¯|…Ò#Åî|ÿ%>ݬpë³ftñgQÍFò¶ ··ûƒiø®IMíCÖâW˜YúN¯Ò2 ^¢æý©NÃOTãY·B}-TùÿÅûk9mñ~N[¼ßª”Ô,¸9©•§PTC¨B5ªP „j T¡Õ@¨r€šßf¶x o©¦kÄu/lö1jÚ:úë{úÛÚãæÀM£f]ÜÕü-“Æ]RMñ>Õ8ªÉ Õ@”wbïWÔË”÷æà¬z˜ö²¦fŒ¿Ž™;<ìªY“R5“ÝQ¿kU“gÜw©qaxˆïh}®‘+©‘ip´ ¨9s.¢&ÞmP—SÓ>׸i™º†šu+”ß~ù U€_ÃŽj2¨B5¥¦LwE5qWRÓÊÕ´Úñjšm~ºçºVÖÆ¾šÏ„j T¡Õ@¨B5ªP „j T¡Õ@¼R€j O5?¤ŒÈ¿9d™ü endstream endobj 158 0 obj << /Type /XObject /Subtype /Image /Width 26 /Height 26 /BitsPerComponent 8 /ColorSpace 553 0 R /Length 229 /Filter /FlateDecode >> stream H‰¤’=k1 †µøp‹—ÐÁ¼”zä&áS æR”xñÿÿ1Ñ¥IÎI›BÉ+<–,#‡ðPõr¨ùw…'À„T8ôØ8I2o·¹úŸ¤dQ#·ßÜFécŒ}±)ÝÝó=Vê |L ™p_‰§úWüD¤´…×Õ›‘ ‘xyÁÌÙyGfñ‰<ÎO™ ÍüîJ0×Z2hH6RãS4Ô8êŒÖàÌz!Î:§ÝªÀzKMn¼-–ˆ¼kHœÛ®³,ßÕGN6iò_Ï×ô$Ÿÿ¿´÷óÆQ€ª©‘± endstream endobj 159 0 obj << /Type /XObject /Subtype /Image /Width 700 /Height 52 /BitsPerComponent 8 /ColorSpace 558 0 R /Length 1239 /Filter /FlateDecode >> stream H‰ì— {šJF½”I‹· 4JK4ͽíÿÿƒõvgwCÌ`fç´E„UÞYãvöÏl–(JdÌf_Ò™º«Dˆº«ÄJà.;WôÿÀ9䌠fgÚØçÁ× ¯§NJůlƒîFU;/ÐÉ Î!wÄ'¸\á”»tB¡Ðæ¾Yáîñù>nX#FØ?plÀÐ÷†^êÃÌôíÎíï Õ?RÐߣc/F º¼} ‡}Ç t[Ù‘¤/’6Ѻ{sßœÃß›ka?Ýr7ñ6ØÝ~ϾNÊ<;öºA‚îê—<æ)“wQi¦/ ü¢‚ wûgÀu÷Z¸1§ïžtìœ÷ pÊPæZè¦ :wÀ¶\‰}—–$Þd'¶[\ðyu·ãîö+O0ƒM œ4êµÞú%ú®Ðûè•FN¶÷câþ”»WµÞuú€YØ.Э'žÛ­†“Ä4Š C™.oÿ;Ò÷#“ ï°X`¹ÞuçÛë¶€–ꦌàó»×Š÷&ƒÁPpâ]¥½ë÷AݵDìnŒê’¥½ççAݵÄånü|´4u×"R‘¡xPwù©‰ÈP<¨»|ˆÔDd(Ô]>Dj"2ê."5Šu—‘šˆ ŃºË‡HMD†â•öÕâJ÷|ËvÌ÷{îçÕÝ_F€»‡6äÖPD"sœwÞ9ÜìþióÂ’ý °»ÿö|÷åÝùz{—çEQ,Ê[uw€7Ý¥Eô&ÁŠNd.ˆž'眫5Ž‹O‡/C»ëË»s÷.¯ŠzÇìVÝ¥±sÙéhï²ï#¾Á—rº@€¾L8g/<çécNOëî÷=‡WÞ4½_õrÕìå«»4f.ñÅ’î:Ã&t·k“Î÷ÚKamƒ­é²€*àta¡S2Ðw=yÓ‡¼^6Õòñiµ®3u—k’}ÁUå3ÝEÝïŒv7 çª~ᤠºëÈ›þl—Ïå¦\??5õVÝ¥9Ë]äÄeÜEÝóîºG‰¾û©îvk†Ž»›æ±Ív¬›:WwiÎs÷èÒÅÜýÀšKº‹??%dß Ý-—/{wËU³(Õ]w½ëßõ$4Ü×r—ê»Ö’rú‚R§¹›=­6å^Þv½ø¥îÒØ¹4K?ÿ~úåöz1‚7Ôñ»!ñ/P*:Š:á_äž¾€ºÔš¡[8¸k†Õúîn'ïfñª}w4—r8Š2Ì{ÞÎäâîöÝMÛäÛ_ÿee]lïÕ]šÝ%óW¿çquG¯Š:/ê¶Y·U9Wwibt7fF®²¼hë¼ZUÕËæVÝ¥©‰ÈP<Œì»óªø¿Ý拼ºOSu—F¤&"Cñ0ÒÝ´,žWEݼnSuw‘šˆ ÅÃXwÓ¼­ë××Dj"2ê."5Šu—‘šˆ ŃºË‡HMD†â×Ý+ç0!ÒЇ–†ÝU”¸Pw•XéÝU”øPw•XÙ¹ûEQ¢$U”Xù;»-T endstream endobj 160 0 obj << /Type /Page /Parent 676 0 R /Resources 161 0 R /Contents 162 0 R /MediaBox [ 0 0 595 842 ] /CropBox [ 0 0 595 842 ] /Rotate 0 >> endobj 161 0 obj << /ProcSet [ /PDF /Text /ImageC /ImageI ] /Font << /TT2 838 0 R /TT4 840 0 R /TT6 536 0 R >> /XObject << /Im32 163 0 R /Im33 164 0 R /Im34 165 0 R /Im35 166 0 R >> /ExtGState << /GS1 843 0 R >> /ColorSpace << /Cs21 561 0 R /Cs22 562 0 R >> >> endobj 162 0 obj << /Length 2212 /Filter /FlateDecode >> stream H‰¤WÛ’Û¸}×Wà‘H­h¼*y²ã8åTM²[f*q8%1Ë‹BJ3öwì|pNwƒiƳñ¦T%‚ ºÑÝè>§ñ._½ÉóH•ïW“¨?¤¿±*Š}¡Ê›UÀßúÃêÍŸ?uV‘Ê·«5 âqõOï½ýÐû¨1zÔþÿÆSwƒNýÄÛv§R…~âzmÂ4ƒ~o­ñSO™T­1›DØÛzg1‘*µõ׫»¢½hxE­ÿ•ÿ…l·b»±lbw’Exˆál ·ðFzï}ㇾÑù¿IC"¬¿I¡!O‹¶+O¹Ïã~ÊgQ·aunDŽl´!#‹\€ ^©>‹íÏ£¡.ÈëÈÕÚú6›tQeÇæÇRýr×=”ªj)C8õ½–B¯S¬óâÖÊÇãë’¥óIbÐÌÑ .^òEÖŸeɵ€¬¨å”¶|ev‹1øŠnR;ƒ§ì/ GCÙÜ1÷~ñr¾¶˜ç¶#´·Pˆ¨‡œ¥fÃù‹ù»nW =ý yeà«á4^ð¶¦A=Ç œÆâŠÄÍ‚´}Y#É•LV@¶SÉIµYЗƒ¾ÇªÝu/òÖØ¹3v.Cy>W­4zƒÃB?Rôj“Ê6ŽíN¡Æ‘´šhyØD×#ÂÆÈÒ ’Õ⌽½¦®ë›rºÈ]W™¸iC7Û¾tuÆ«]Ê®;°Tçò]úÁ LD ;"OÚtæY×õ/½Ÿ&å±[´•îzÁ/ ݆ÛEjíòÝêYÏÎ!Œ”m× \L«n;Å¿IP⌦‰Š2”@B§Üpd¢hªã‚ô¡Ò„¸‡ —H_*“üm½_4ߋÒm‚1RÄZ–R¢Mõp)TŸxê B¿!ÎdìÏÚd~a…•\5{ò§|õŸ•µt1e7¢Œü0›ÈTÄÔ„jÛ¬Þ|lB«Þw«ŸVFѯ?`P©•I…ʦ&e“bë0AÕ¬ö«wù³ðd~ŒeqäÛÈ…‡¿BÙŒ&ãµFÂt¸PpÒ18PÀ±¡ËCÇo åfI˜ú¡/\Üm3rUI§ËÍ ÂAñ$Š[Þׂ¥äSùI„ÜvAo‚`ÄVeᘠ€ îµßŠAÑ#À¿‚0™Ñ9èãœTJée†od´É?TûÂ6QègÑõ6„æ§ò§—DÐ gW"”»áœ»¶(g-çlæŽåí"Œßmé&¼ÙV6ÛÌ8¾muDó[GE°þí ƒ”>/ô¾mà%µ·±›š¦Àº²%2¶ - ÌÊ'¨‘”t —«´4Ðy•–Ö Ý€Év.Ìè&'aI ±0ŠbÉÈ„ ïi ­TŠšz1%c3s¼Y WFè•rÄ.þ îp>¸Ï…6ÜyÊ+úö4soÓu5OÞkêj˜§ûÙé(F["&†¨æH±G±ØçœŽÅéÿ'ì†Â endstream endobj 163 0 obj << /Type /XObject /Subtype /Image /Width 220 /Height 49 /BitsPerComponent 8 /ColorSpace 561 0 R /Length 640 /Filter /FlateDecode >> stream H‰ì—=o¤0†Ý m‘† édTtÛ¸¹f +'Y§4üÿ¿rÆ6x ñnÂÞÆ¯Äç;À< f@©ªªªï–sÊIÚÀÝÚùðï“M,Ên´c ñllB¸œÄJ:ïóYÚU»µÎà q'«åiO•´ö¦¯ÌDÈ‘ÚÄ6Î.äY²lk:6_.šÍVh©är›D(žò+§)ÏæƒH64[âbÿYØ–2ø­õ¶Ólp¼ÁgòiÆ`+ÑùîdÛígê^¶gVeû?õØxRe–8”žÊrlSBj*±–€Clù“L²,7È–¸2Ÿ²VVÉ#?ËV’[e«l•­²}3šçäñÎ<… \³¹t‘I³™˜K“b[LÈÆ>ņÿæßˆ™Ítèl¹6Ó 6lRl&ù·ni¶`6v›Ý0ToŸ«¡m@y6c¶9y>~˜³A3°±ýº û“ç&áøìÒmx¨#l•ìdCfĦ٥W“ºQuC&¨Û.› ¼q”MÏéëqè.ÛÖ$êÆÕh¾Än·†x&WÕíQlGÆ›YÑ·¾éº!“|&ù •$Çc ï¥?‡­Õj†–~&±I¼K´¡ëú^RãÍ¢w=—ìýñl™Fغß×á ½ 6É`鮉0›¿®_0Þr=.Œ·‘mÆ[»Á&{·Îõn÷îƒïÉy!\G[÷­=@fêÝ€,îÝ;ñÍõç=>¸ÐÊêáß\‰sÛ`ÿ¼ïÉÊVÙ*[e+fSܨóÔä,JË<†m¹J”N[M¥Ï]fù€#l{*Ì-°½ ^ŸíEuöÍ­*Õ?,” ‘ endstream endobj 164 0 obj << /Type /XObject /Subtype /Image /Width 220 /Height 49 /BitsPerComponent 8 /ColorSpace 561 0 R /Length 630 /Filter /FlateDecode >> stream H‰ì—;o¬0…Ý m‘† éÊ.¨è¶qs›-hF¹’u•†ÿÿWâ0cÃ’dI6>Úåu œÁŠŠŠ-…¦œ­rÇHÍ\ãÊçÊ&‡­¬ÊýT²å;hdS*DR©ÛCªÐÒ+Îa¾"aYÅêÆ‹§½”¿æS LÍ•š6 vâú™>IžmJ“°Åra¶qâË36EPa ß=¿Vy¶ØˆaSIÝÆ†i5“î÷P¶± qmºê®êŽ*vÙïÐßÛÓ©°ýL¶Ÿ©ßÀ&WuÌŠ vEØÒ±lˆmX G¬±Á.¶üA},f[9³²VV«{ÞËv$[a+l…­°}›°rSvÿ`žÂ†NMÙB\bòl¶Í¥ZcMÌ&îb£_sîϳeg¶Êž[˜6jrl6üKÓõ<Ûl"6ñ6¿â°ô.6 ]]¡ò6j.Ù\xٿٳdÃæÌ&¶ë¦\u üÃrÜV´«Ú>¶ÿ [€Ùˆ¹`3âÒÂÛ7®nÄDuÛd‹`hFWöÞ“ÆÅ7}×\¶Ôdê&¡·ob·[ÅÜ““Iêö86`skÛž¯1Ù{Rv4Ûß„¨d«ø9lµ®ëjþž¤&ó,1–®i[Íõ7Þ´R‹×“Øš¿×î…< 5Ù1ÀÓ]WÆgþ¹žÖßjB–ô·:ÁfÇn“»ÍrìÞùœt3F´iÛu„l9vì•w®¯Ëý‘‹­¬>ýËÐ=i¶û÷½O¶ÂVØ Ûa6VMüc Áâ”±bƒÏaϲˆGPkfƒõc³bƒ=l[:˜mf{B=?Û“êì‹[tTï @H ò endstream endobj 165 0 obj << /Type /XObject /Subtype /Image /Width 169 /Height 49 /BitsPerComponent 8 /ColorSpace 561 0 R /Length 386 /Filter /FlateDecode >> stream H‰ì–ëƒ F3ˆLѲA÷_¥<$ ”ããœ|?Ð*nc‘"j4šÕ1F^Ýîˆ \ÔÄfçž8Qã|Bã…¼T¥£áÖWæãƒ±lÞ07ñ÷>—Æ‹_ãÓ'j®.©ªèÅa¢äÄ~£iÙŒ…=nMNOz¥‹>dz}jTtuTtuTtuTtu^)ºÙLôÜÃfÑmûÚØvnªy¸M¢¶·;µàÒ;WxîY¢AŽÂD1˜MÌ•˜¸`- mQòd¦À¨P[{êÏýe^möÔ2\é ¤pÌΊ@“ÒG@>L]´è b´u¢±Œ‘N3tŠ¢è#,ˆ(æC¸ÁEÅJ;ü)›z-¦JwC`}1•`?{PÑæÂå¿ÏÒ¹[ ¦Áµ-Q ›C~ïÊG_y˜¢,%,{ËÃ{*ê6‡Þ¾Ã醡¼ÔÇò½ÞídÊyºS¸¹ÕõLüÊOŽŠ®ŽŠ®ŽŠ®N}Cî®”æÆüÛ&] endstream endobj 166 0 obj << /Type /XObject /Subtype /Image /Width 610 /Height 48 /BitsPerComponent 8 /ColorSpace 562 0 R /Length 1275 /Filter /FlateDecode >> stream H‰ìW {Ô6´ä¡)„ J¡I)¯>ÿÿ¯«m½v啼§KN’Ñ|à³½ZgG3+˃èèxH ¥ èØ9ºÃ:Ýa ç0 Ž’<¥†áôðóÇM®êG#k%W;¼Ã¤ ¦1@2,ç2¸SNçV19-+h¬B¯&¥®E:Mæ{¦ºåt¹rG/~€t!#K`rÂÐó4 8­ÊB€Æ*ç°q\*uS¦Púɤîû™–á¸åg,…¹c¸­Ê¯˜”PÚ>1 LáÆÂ‹Á91;Ì׉U0íM;lih»ªÙ§IßëœÃè\nBÀòk&ºGØ… 6¼WK®bçn…”à Òa!¬¾ÍK!í03ˆpXHì‰àæ÷- ‡½+°ÃlæÊu)í0¸ƒ/’j¶*Èa,nÂ.ÎÁR­Ã5‘C³Å±Ö°óê–ƒ¢ÚTaoÀÝ#`«Kw7^ ÎXèI+²säâ;q˜†_œÑIqœì°šñý:¬ƒu‡µŠf¸u‡5Šf¸u‡5Šf¸9‡¢È ™¬¶W›WaÏܪ‡wØrBv«†ôC†1¯6à°¬ü6¸Uà°ÈˆÃ %ÍÄ5l«StØ~¹Uî°Æ¹Uî°Æ¹Uî°Æ¹Uî°Æ¹Uî°Æ¹-×8ÅÐ;!™“K:LM˜ú)St¡sªþ´/@VÁ˜ÃöÆm–y)‡WOˆS’y¹„Ã&6.b*Ø  MPG© ñ•Ô*Œc\ ¯Âã_â©*à í°"܆„ÍNæ6],Ã|AjeÖ8ÖÉÌD*×d+ü”•æê~|òôŠVÁ]há–‹QkÕÁ«ðì§ç×xª 8H9¬ ·!Ñ<§s›/´¥2Lâ{/Ëaá‰ZÒÓ[¦ùêÅËW„ 0èBS—oª çnú¿>7÷ô…€á°Ÿo^¿y{ý z•éÊVÁµÃJqykX>7¥Å[¯fJøZß@—ødb´2ÞIçòöèÝ«¿Š÷W¤ èUØ~“ À¾à;ìÙøðÛíÝï¤ 8H8¬7Þ–Í-â0£´Î1þNÔ%äh…žÍå9ì£xùÇ4ÑïI@ðÞUHÈTø$>|~ûü3­ +Æç°ln¡ÃìÂeewÖ`:L aê˜\ëGá±zK^|üòU|¥UÁ{Wå°»›×Oo¿]_’*à õ–,Åå°|n±·¤°nƒCŸ›Cù›¹ntÂaó°Ë»?ßýuI¨ƒ…Txó÷·K¨ Ò;ýýq‹îô‰…+Ð^Ð;ýu"?w{ 3Sýä_Eªàƒ÷­BB Â·Pƒ@¤VˆÏa™Ü¢Ÿƒp&B³ˆ 'î0¥V‰ä*sÜv˜[)Ükþì7–4ßXàžUaœ±­ú˜ *ˆrX nL‡er›®úh™à·$ñÞCeŒGãŸTî1#™FBID3RëRá¸Úh‡íÛ¤ßp˜0°ÊY¬Ö·x¹Ýas›1?ˆS Fòj}="·;¬unÕ£;¬qnÕ£;¬qnÕ£;¬qnÕ£;¬qnÕÃ;L"²Bf«†M²jÛ1·êá&â³285l!³6¯Âž¹Õï°¢2Ð ·î°F¡¹µí°¢2PÖàGµŸèèÈÆÿQ¦Í endstream endobj 167 0 obj << /Type /Page /Parent 676 0 R /Resources 168 0 R /Contents 169 0 R /MediaBox [ 0 0 595 842 ] /CropBox [ 0 0 595 842 ] /Rotate 0 >> endobj 168 0 obj << /ProcSet [ /PDF /Text /ImageC /ImageI ] /Font << /TT2 838 0 R /TT4 840 0 R /TT6 536 0 R >> /XObject << /Im36 170 0 R /Im37 171 0 R /Im38 172 0 R /Im39 173 0 R >> /ExtGState << /GS1 843 0 R >> /ColorSpace << /Cs21 561 0 R >> >> endobj 169 0 obj << /Length 2686 /Filter /FlateDecode >> stream H‰ÔW[“ÛJ~÷¯˜G‰Šîâ1›ÃI(N²¦Š*–Y–mY#FònÂ߀LßF–wåp(ÈV¬Ñ¨§§§/_ón³z»Ù$J«Í~Ue¦Bø£Ae¤’4ˆÂ0V›Ó*¤oö°zûã½V‡qa˜¨M½ZãT<­þì½÷ã ö>ú0{w~¿¿§©ŸF?2¯6C£â B­ã¼ýÞÚ×:È=¥ µ†Ù,½#ï´ŒW5~hϪŸªþìëЫ:ÿ/›ß¢íÛ®“lAyÄÖçièˆÍ'#ãí ÅÔ@ûëÉJmŽþº€)þ Þô5~¹&$ÍÔ8±‚~WYZºóIñŽ×ñö-‡¼_jùpÌF0ŒäXÕplkuÎÑøÂ"£©®Ü¦jÛNr„a`¹+¾±=¶ùÇ?’ðãõàíÁÊ*áà€*¤M‘÷à«§£|¬át…wä-*ۨϟqÁ´CÍÐ <"|B枢@‚ùxEí#.P?ÚjÀ½4mæ”x(†ì€Ô;V¤’'”|>’>çˆjÀaz¶Áh¯±ª§µxb2Z¶«Xù^T‹¶>ÏßA L\94ÌÅ£ Ž(÷¬L‡;@ ¨rbï`zJåÇý¡ªhs´cÈìˆbWmV¸ gIU ƒHb1aþ¬3Š7-3}çÉóÖu£Ú^UÊ-fùflú©šZÓcROÚž'^87°ˆan»æÕŒB¯‚xéqD¯:-Óbh¤j@‰­ìUI­-FFô× ³¡4­i—¦r©!ÉéR“„ Sg…Ã"Ôœ6œ•ßÍ2E)8Ä–vaO]ØßùxË*rG0*饿 Uä¾7Ín›åG‰‰²Gô`D/ò á7LX ;®>KÌDg?©« vM5¦¥à9j\3šýô„IžŠ™k“ª`Õì_ƒßp†ß“a쎂[Œ‘¦—ù[ ö¿°Ëpdiò‘tð¸íø¹íD!¦7+pK¸Ù,¶àv Ï/ Ô¢Å\¶zðÈã_› ê/‚©'DJn¿xÏ’¢o“Òe*1ò Q2WQ8BwB“…<›®©±Å’‚=ÀÌ¢GüÄ žqˆ.º$n<“ä&Ø)b&$eþ*Iã‰â¹üc6ö3‰›ÁYg~RÕaR¡-PX÷<}䇛ã…΀ÃÒs²•ÒëÃB» ýÑ~'愽ô ûÔkKØ;þd9¶’m—™Ñ¿Äh)É2ˆ9ôÆŸd% .½@µCÃæ´û%ñ(ÏмkðöXýd޺㉽ËN\´¦—#¢êwŽAÑìK;ö~‡Uš{(ûî(%K X<"˶fšŸ3'HêªGè`Û"=K1\!<¦õ‘ƒDŒ:kc{™ƒ~6ãEDL½ÏÀ‡0íØBµ2¥Œ`¹Çê[ÌŽÚ²0£vV@íC%#-îš½t¦“9‚÷€Ôá­ŠbW@ÕD ÀK%T x ©ÿ‡»7êdúÄë3É-”×dÔÜñ,‰÷Ù_íVŸÚéh˜É¾¶Ç3$JÑÐ,,%ëàp¥þޝáú ¾æã€ÃèÒ3þ³ |iÉä¶—¥UåÜHñ©ÁôÚôûÖžØÛ¿3o(bDsõíΦ-FiÜ\MÉ‹a"h¹œ»é Ñ|;sý ^Ž4z ±½¾Sïà–¡#x…/\lƒ#¤¤÷ñ·Ý·Ø áðÓÜz5fŸ¹nÇZ_n0袦§†¦‘èî©\€ôX.9§ÃQ ÆògÇ´À¢¶ß G˜Ý~ó .Â’W@÷¿ƒ§KN"™¡v&BõÙü@ xsvµN–¾ bÍí:|Ñ Êà”ƒ {É2ɺ¶¦ª‘L…+¯»³Á·ºkë/Ï`R´D2 Îé’¤Q!"”E˜:âÒýÔv¶"Û`áìþó^ý7½&ž{M,½æÎBBZ,ÜœMÊ&v&çF“s£ÉV£Y_ušR ­¹Ã6V2)ÕóÅØˆ9¤öäÑPÔûUVH‚ª9-µá­(H³XŠ”DPš9NS+‘ ÷ÔeæO2ÛËÍ“MËMˆN¬iS&Õ@ÿ®v³ ±å¹¬u¤_w¢ÿ<xßRû("£<·ÛäfB;Ê;Êl…ÁbÆÅŒÿå¿Ãÿkà›.gl,AúÕåhï,wv×Äx®DsÝ?’ÙЄ ¥ 0&\Xë¥>–P#LÀcà«vKèŒÙÒ˜é1ƒ(rGðz¿{ÖQ(g³Œµë}Ðøq{ Ûó˜HHæq— h@2¯µô8 # €ÎÁ£ÛXì.ZG,v-Kð8B<Æ9#¯{º^q‡SuKYBpOÉ<@fëXyä9(Syð•Tj'Z+Z?£³ŸEuu‰-ÚVÑ 8³Ð¹ZYçÀöð:Q ]ófžÛæ§BvA~n/"ô¿ÞøB/i+.=¾à³~BîšALCðh÷í`úªS÷îòø;·¸Üµ¸O¦“®$í‹›‘‘Œ•&VQÇ꜃cs"]5cJ!2.eÂEC†“]ÎüíV›|tÒ¤ÐNmÝ0"^˜ÞÌj|6a<+xv;‹’™n Ø꽤}¾C„[Y°¬?¨Á´ýtƒ×. ­ƒ¤†P뫼M×(,+ŒBaYƒÛ©Å„¥k‡C¹ÙP¦À¥7| so–@N1ŽÉ¸äLW<6öXÏKû}ÌÆ&ׯ¾¹âÑ£a‚ˆà“~fÀ’Ì˾ä¨53g†øK°îÌ(ð1§×¥-ÔGcnÂ>ã £ü‚ÄÍ2пì³C•¿·ær|$Ýse#%„¦÷•›˜:5ýúûÙ«††M_–)Nݵã€Xg¥p=ä^‹üW¡>Î1ÔÏnŽâ 3pÜ&àϰž‘ò_ »k€—F€v0Ô_›æûK¿ج´Â?{€A«V:µ* ¡e*ÊàÞªÖ1ܬX·Ú¯Þm0…–̇ŠQR <§E vÓ*¤¯ =‘è »TøM hFŸ}€üFéò׿ÈûÇ=¼á?Îãþ©>ÁEQ4Bèv–ÿmÅe Ù†LÐ]t·D0? Êl¨O«·Oq¦Þ›ÕP>  ÈQœG9Ê©ÖfáE<]<áFº/nˆ§(Èâ:×WÆ”,þ¯-òÙ endstream endobj 170 0 obj << /Type /XObject /Subtype /Image /Width 239 /Height 61 /BitsPerComponent 8 /ColorSpace 561 0 R /Length 512 /Filter /FlateDecode >> stream H‰ì—9’Â0E'¡ÊEJ¤@‘ ØE H|ÿ«LK^0 ¥†ñ"ÚýÀðQß^°– ˆïFJØÎþ‡dåóKÄ99U,G¦Ê%&qX†Y®–§Aw—ﺾY4Ý®ueTwJpðÔ®|̯¯T.û-N]ü.fH3¤‹ÒÅ ébæOº"IùÖºC;T‘o®›ÎÎËnš³uÎÐýyáõëìžßš–q¡´ézëîÃEt ]ÎÚ¶e ^ ]°eAW¥uµV*èÞ÷×]ÎwiÖ:§›[Ï|»mhWÅu…íŒâÌÓnY· q󙮟d€C¹ ëÞu™ë;­kú:tY!ÒºnÖ ³m÷fÜØn£êf›ÏWi|˜Á5Œ²ÑaîC» Ëêh7Ÿ]€+ÈrißëÚ> 3«£]ý¯vý_åáœEÛ5s»ªŽv§Oè|û)]¿ÏÂf´`müÈlý¾ é1‡ªòyµYlÓ?Gr½ÒãæñD4¶kŽ9ï–u?ÏáÈ ¦p]PJ_fh…䪪Ï‘ݵtÍQ‘Uè®ÿñýt3Á{î y|½{¬vñÜ­W[·c»™à´¼–vÍËnaE‚aÓœÏoóùùËzþtçb];$©#ßX÷ë!]Ì.fH3£îu8û÷&âS~ˆË;¹ endstream endobj 171 0 obj << /Type /XObject /Subtype /Image /Width 26 /Height 26 /BitsPerComponent 8 /ColorSpace 561 0 R /Length 50 /Filter /FlateDecode >> stream H‰’‘Á Bq7™P7ì@†l4@C¸?†” ½B‡ uc»Œ®„`©Ázq endstream endobj 172 0 obj << /Type /XObject /Subtype /Image /Width 26 /Height 26 /BitsPerComponent 8 /ColorSpace 561 0 R /Length 83 /Filter /FlateDecode >> stream H‰’‘Á Bq7™P7ì@†l4@[·Pu¬2¶`r`ÊBýŽ)ã†S&§Œ:N¨&u,2p ‡6àCilc—qÕ hƒv endstream endobj 173 0 obj << /Type /XObject /Subtype /Image /Width 26 /Height 26 /BitsPerComponent 8 /ColorSpace 561 0 R /Length 70 /Filter /FlateDecode >> stream H‰’‘Á Bq7™P7ì@†l4@[ˆ?H‘ Å%ŠG• Å)ƒ[²ýnCHÐ8t°ÉP7¶±Ë¸áJˆ4vu endstream endobj 174 0 obj << /Type /Page /Parent 676 0 R /Resources 175 0 R /Contents 176 0 R /MediaBox [ 0 0 595 842 ] /CropBox [ 0 0 595 842 ] /Rotate 0 >> endobj 175 0 obj << /ProcSet [ /PDF /Text /ImageC /ImageI ] /Font << /TT2 838 0 R /TT4 840 0 R /TT6 536 0 R >> /XObject << /Im40 177 0 R /Im41 178 0 R /Im42 179 0 R >> /ExtGState << /GS1 843 0 R >> /ColorSpace << /Cs21 561 0 R >> >> endobj 176 0 obj << /Length 1643 /Filter /FlateDecode >> stream H‰¤WÛrÛ6}×Wì#؉¼ê±‰3i:Ét:QŸâ>À$,±¦–¤ì´¿‘|p÷J´lw:S{†Åb/gÏBo¶«×Ûm 1loW›p“C„ÿ<(¢p£!ÍBE l«ˆ×†ÝêõûÏ1ìÆUFQ Ûjµ¦ªxX}QWA&êC€s‰z”øü…§>Aæªr½…$ÌÃ(XÇIQ¢~µâ8,ÄXãlžâÙZýÆÛd— t«>™îÄ‘2mðûög²]‹í±fëð%v9Ú”Šál +ôTWa¦alÿ ¹hÐá¦@ Û+ªV üò|@˜%~µ%úä7 Éñ7Íähö!ˆéeúÞ…ªáóþ( ò¤Éa6Þ~ÊÑufš{s¶×è€íÞBu†`Íé&l‹áÒa©¬-8üˆp郕*˜öÍhFÛTfj\µ³#tn‚ñØ÷n˜ šuázç7ï‚ m¾i¦¹PÈöOvC6:46Îæ8DÅ)4$3r6HÃLÝÛ3X¨WADÉe¼@‘¡÷¬›?Dv$ÜÄ ÆÉÉ„—M¢ú`½Ap,eüVùèxÄ>ah•l⌓ÿ(è^*~™ÅV¸‘¼€,U^ÏýYÇY‰·Ñ,ж=ÍS1Ó›øH _vÊw&tÀÖP= Þ¿‚xÃŽ·¦Ã,î9[d2ÕȽÏ^ÆÙ#s;J¼Ÿ™rýИÉÂØü¬sŽm…kÕ„@%ee:$ËQÅÈÎ%þ„ƒ3Bƒ d!9Æï¸NÐÐarr(Žg‡âø à~°£íXw¬*Á, oƒ8Ü áÐ;Ä´¦3Ñåçv®3íŒB@H7]MˆFhbŽ4mö’@+µîd¼(~ÅYmáóLuçG»€>ß»úÒ¤io/‘ÿBVn@ïz‡ö]TSS¹.±é ñ.qFq­Âú¼»Ü€‡Bãk»Â håûïÒ‹,’šúDÚEb8 zêð‚$%C Žy‰ÙÿàD}æí¹€¹/ãJÌr9㑞ð #Žà,Të^¤DR5#ªˆÇE\,(‘“°ª5u‘Ž#bcz4 Èt%[@}¤÷;LEü·Qv–Þ;¤ÑÞÈìà'Gp·'QÇÉ¡ïƒW$;vÜîä p^yå;Ö'ÄÇÄ#öR7OR^eÞ¿æˆ"Ua…³˜à™ûÝ›ÇP³Œ®NX]ucZ'KˆØO÷^Þ°d{Dú¹±Ó·ÛP?ÒÈMëñYÝ]p:¥†˜—öÍdqAjt°p﹤mžà4N±wK?ç‘´ô,-CÒãpî¼¾_¿ïŒŒª7›už ¬ñï_Á¬ñ>r†sÄüõE}4a#+QåxÑË;G¦‘9õòÎ1‡3‡ÿ#2-]˜ÕË™¬nA?pwÇž‰yšûúÎbÁÏ}«D2ŽÎâñ3â íi޹Ðgq-âÿ të¿é endstream endobj 177 0 obj << /Type /XObject /Subtype /Image /Width 26 /Height 26 /BitsPerComponent 8 /ColorSpace 561 0 R /Length 149 /Filter /FlateDecode >> stream H‰¤’1à Es/žþâÅ“;0±æþWé7JZ™&RÚ<„@~òÌ.Ù.h¶µsìo³LÜ3PQ…™G5:Œ™ì‘ÑãÕd[húaúaF˜Ïi,,³él„eÖjòn=´šÌç\ÃT&É^Óx69hÂq÷Þ~7¤·÷Ú¾ö¹iã×aÿ}øì_ C8sš endstream endobj 178 0 obj << /Type /XObject /Subtype /Image /Width 26 /Height 26 /BitsPerComponent 8 /ColorSpace 561 0 R /Length 153 /Filter /FlateDecode >> stream H‰¬’¡! †g.Aœ©ÂÔTõª5Uˆ3¼ÿ«Œƒ,Ù(Í’e?¸/_)Ä0-ˆa³}ðgò8Ò ‰¥¨Õ«y"!‰f¢A®O‚V„2ˆs jaBHºCêt­Õt8À»S1Õ`uäåëÚîsεƒÞõtÄßç¾)S8òen®ÚnÖ=µ¯?½öžØüvÙí§1Ž® endstream endobj 179 0 obj << /Type /XObject /Subtype /Image /Width 26 /Height 26 /BitsPerComponent 8 /ColorSpace 561 0 R /Length 90 /Filter /FlateDecode >> stream H‰’‘Á Bq7™P7ì@†2 0€)åâ‘AhC—ñqÃ#Õ†EªÀ©†,2nH¢Ê ˆ"ƒb † E%Äi§XeÜp%D€R –Ž endstream endobj 180 0 obj << /Type /Page /Parent 676 0 R /Resources 181 0 R /Contents 182 0 R /MediaBox [ 0 0 595 842 ] /CropBox [ 0 0 595 842 ] /Rotate 0 >> endobj 181 0 obj << /ProcSet [ /PDF /Text /ImageC /ImageI ] /Font << /TT2 838 0 R /TT4 840 0 R /TT6 536 0 R >> /XObject << /Im43 183 0 R >> /ExtGState << /GS1 843 0 R >> /ColorSpace << /Cs23 565 0 R >> >> endobj 182 0 obj << /Length 1143 /Filter /FlateDecode >> stream H‰tVËr¬6Ýó½© #“]l'·n*N* Y]g‡„ 0žòwØœÓ-ðø‘[TÔêçéº,ƒ‹²LÉP¹ Öz½¢,òX¯-¥™¶qœP¹b9OºƒXÇqJeD¼‚ŠSðE]‡‰NÔç´D]…Þ¿ éf s½Rup”蕎ÃÈ$yý* ѹ"Sê*…m«þ1/åB«è¦êŽ¡‰UÕ†•?ÆŠOøxoó ï®wª`ÿ°JxÅþ•;Gm¥ª‚¥B=†¦€-è‡vPbõ´qaT¨ªž˜«á×4HBqÏ$Ä1Œ,<£ãè6$'½g£Ñï¨ÁÖQÿà˜4ïlÒÁûѹ‘N;ÑYÃíÀ%ö°{pt7oëhã¼"ö×{ƒÅ†nÕFä“ÞwϺX“àúÕYV÷(q£MF嵤H ^IRÌxLµüššîžź jÚ1‘*¼Æ±¯ñ Fñ~âŸnÂö–½<ÎÔp†)6ZŽ©Ü5£¬˜¯mûÓHSOƒ°°ªqêÏ@:GŠ'·Œ-[°ÆcËzº3ׯ:U@J¸ÓB@ðìûþáÝ´[Ä¡ò_J¾Ô—CSu]?USÓw´ú=äÂxpuSµ$þ¬P ˆy-ñnà¨*ÈíÜðUžÛP‹i´¦õ­‰4¥F§¹ä‰­«kmt¦MXþÍl+Ïfõ:G?x¦:òþxÖ‰ÄKD6c¦/êjp\ÚkÍ!ŸGB”êŒPç¶8K™¥¥¬9·gîéîôì Xõ,Ä»#×"ˆó`5~ÕqEóÁÎo=ý,m`ÉõZÍZh]+ºÁ!âDðÌè*x¾æ|¦úµŒ„gØZ­¢nqSì±æyœš7îï¾â´¤ÝÓ¶óc¡_Íìë~¦Ëæ[ªûÙ|ï• ïÒ—Ý2ÁL\,e·Áë¡9HíÝŠE칟xôb Yƒ2¢y¦]õmTŸ§Y,ã%QíóÅM'd%– ñŽK3Wõ?·!É 6œ`RMŽ5‹bÿþý“—¿ W/“¦f‹ãÛ2/4WN58B/Ðx<úab€"öíÀyHÔ$‹ j&û>«‡¶©¹a?ÆA/ðY|D/[Ðû~™FJÊ8’tK¶ÛÖ—­/éZŽðó™¹3v³:NýfëªEm²¨âùå3¸ÛÉ ݶöM7Cï3…@ª`¦ ƒ}·yÏ´Á4éßѺÅ4g~Ó øïüoå/°çW³E;Ônå'“±ßRŠ:a(QÚÊàßÀâB`ü-!ÅèÂÒäVd׉.Rüyë}pñyŸ&tÝ¿†øÁÁPCÁÂjuJ6CžV%–• .Ø—å«Yõö2b­%›':MßÝEäb—KˆI¬ðÇc~­î¨H„#Yeãï0]p'AœÈ ’L’%?îN˜Ñ«|û¸wè‘â ÿÜX!îüégž—ÿòä4 endstream endobj 183 0 obj << /Type /XObject /Subtype /Image /Width 327 /Height 555 /BitsPerComponent 8 /ColorSpace 565 0 R /Length 3430 /Filter /FlateDecode >> stream H‰ì׋b¢¼Fá ¦ûþ/xWB_!¶ï(èZÓñëÓúçý>÷g¢_÷ß7ã³ÿ’/Œ’ãý¦ÌñÏéóóv;MÏþÍ.UÅø™oŸý›¸êêâjÆe"~ÂxÐT³ñ³˜–aÈ›¡2æÉã~7Fçþ¬·Æ4,þaœÌ¦oÑËšñ›.\¥£KÔ™V¬Õ¬+ž¤ųøtz)îpP;fä–1²mÕ°6Iá|AZÿ‰øÃð¿Ì±¿žƒâ–1¢„™igcfœ¦6c^‘geò3]½þl¼ÙMë\,/1y.™™ïÝþÝÇÇk1îžÓtÌg»°Už`ÌŒ/6;Wêxô­(%jZöQ>6xZu}‰yÖ×ÖÿÜ˜ßæzn¬·þ™Â«àåÓcûÞôi¥¸Š¿PÓ¦ÆÇosn¤v®jûepöšsè_–éEFúeÑÓo‚QŒ’`”´aœ;ƒg»²7ôͺ‡qNkg mMÆù»ð ÌÀ9Là w[5¯#йó¦eÆ¿Kf¾Íù>,œ·+æbÈß7Í0&¿8¿ÂdœçâžÓ‚б>o¾S{ŒvÒÙ3âìëÕ¨÷«É¸æ‹‰YÔaAøIq~ëSc‹±hæí/Û}Æa›7žˆK³‘Æ‚QŒ’`”ôƯ—îqŒÓ ç§Ç1þ«=Ÿ /Á( FI0J‚QÒã<Ïíñ³¹Û<>x¥ïœsG#ïãÁµg¿§ÓXz£óÇL#ëOæØd 0óígŽ3óû¡¹ó~®fæ2n]™¶±¯T8æÔ2µ\¹ÊUKÃäs‰î Œ.µ<í0ú •`Ì]üñæ8ŸÍ­7g† cpÊB%c¹4a¦·àŸÏèâ>cš[Þ'2s—­ó¾ÓövH|%; °EËkòÒr ÷vϬT<<¨ý:ÄÇ…czetëñkóÒ<"½F_(0nüvÓšÙ,Juf£ß0s´˜œÞ{»çV|^è_©Ëóâ¼e¬Ïs½]ù¢ýƒº´qù\è|ííÏÃXÔÿܸÔë,«çfô‹‡pº´ä+uõJ¾øÌ—„œ+Ÿ¦¥Å%ÇUpWùÜØhðÓáþÀ}‹9×^rÆÝq?a¼Šâ8£ä•^6%Á( FI0Jz £ÿzáÆè§—îaŒ¯Œ’`”ô KÌK÷8Æg_þeüÜøÂy5gã|«i1—ÚC`LŒVìÆãr»ÎÊåv^þÝnæ°"Ë`ÜaœÓÝ,‹;3`à‡±˜5­Yãc¸ÖÀxÔñlô0׿R7ÉZçF»Ÿí•Úç+µ¯®Ô0Þù-æîŒ0Â8ØýŒ? F‚QŒ’`”£$%Á( FI0J‚QŒ’`”£$%Á( FI0J‚QŒ’`”£$%Á( FI0J‚QŒ’`”£$%Á( FI0J‚QŒ’`”£$%Á( FI0J‚QŒ’`”£$%Á( FI0J‚QŒ’`”£$%Á( FI0J‚QŒ’`”£$%Á( FI0J‚QŒ’`”£$%Á( FI0J‚QŒ’`”£$%Á( FI0J‚QŒ’`”£$%Á( FI0J‚QŒ’`”£$%Á( FI0J‚QŒ’`”£$%Á( FI0J‚QŒ’`”£$%Á( FI0J‚QŒ’`”£$%Á( FI0J‚QŒ’`”£$%Á( FI0J‚QŒ’`”£$%Á( FI0J‚QŒ’`”£$%Á( FI0J‚QŒ’`”£$%Á( FI0J‚QŒ’Èè¿^¸‡1úgϘÛÃ_=%Á( FI0J‚QŒ’`”tzÆþˆ‘1cã~÷[žŸ±ûõa:36nñÓ.Àx¼²;flÜá.úÁ8ð2ÇÁ8ð2ÇÁ8ð2ÇÁ8ð2ÇÁ8ð2ÇÁ8ð2Ç]„Ñ-…%.þT<ÎçÛæNÊ}+Ë=ý´«0K ®Š§Yí¤ÜW1ì¿­–©&TÅãÖ‘ËÊôd;ΗãÞ‘Ñ…I·sP¯(ÎÓí8_Ž{+Æõ„–ßyóÜè,[5aÜÎÆî%&ò‘üˆ1ÿi`ô[Æ8v`6z›WàêââüÎ8³³·aŒöÒqغRÇ[ç ÕîçÆ·»R÷Wò-æ0%Á( FI0J‚QŒ’¾üW§i`ÌØ¸gôS·‘1cã~õKžŸñÁ( FI0J‚QŒ’`”dé§•Œô‹`”£$%Á( FI0J‚QŒ’`”£¤ãÜß]ù¾mç-Õ\ÝS]›qž¿Å–›ïÛåÁòËò¸Žb™ñï’_é¤Ì7~³d^· ¿†1¸®³nçbqC¡&£oÎÆæZj0Æã7ãÍñü8ûâÜc®5éî`”£$%Á( FI5ãÝ]‹q¢;ûš`äaTÄl”£¤Fwï~Ž7pG]¾¿ûåŸj63¸œáÔ›nr·ÛåM¹x·¼ÇõÙ2$>Ëï= 2«ìÝ”8³ûuçël´ëÎ^‡1þ_ßz^8E5gÖ…ì–Å6y_®Ú>£N£Ywöz³Ñ¼ +æâ²cù|³ÙÎØ4ËA¯Æèœ™]ñ@‹«öífÓôFw‰£zˆq{²“Õ,ëm}ïl¼@£Œö×?¨ëóbí’†oÖTÖ¯wPÛ»r :W¼ã4ȕڽR7¯}¥Þmè=¹Î³þš+µº‡qèl¿tãUeßbÞ<%Á( FI0J‚QŒ’`”´ÿeð¾>—ï t»O®“j63JF®ýÙè¦Û·ºðÍÎÅ»åm¦¯{ËÓð,¿ý0Ȭ²wÓöÁ::-½f‡1þ_ß[^8E5gÖ…ì–Å6y_i¸«vk^íRõf£yGV,1´Ëç›Íê±Û]¾.£sfvÅ£.®Úc´›M£ŒîzGõãö.d'«YÖÛz`6^­QF{‚ëÔõyÑmëscãÉ¥=¨í]9³’ñJ]£»UŒt%£óù¶Q¹"1ÚÝn×p¼§Ôa¼­.~iËèâM³£óÇL#ëÏáèRËÓÆð‹´6ã²r}{q§aYz…šÑ­€rÓüWÛîÐ%ºó0z£8Âß’=¨Ã?Ÿß¦3PùIƒÑùzÓÌØØažõ'bô¥¢ˆÑ<ö‡ŒÕ~]šoëoUí0Éї׎F·g‡ŒiÇcŒq¿–1/Í#ÒoîOÄX^g£¾Üêx6ú cc‡ge,¸R·êü³ùßA]Ú¸|.tv ÷v'käscëJ!\òΟêZWêb­ßlZ®)®UÎUp×ûܸí¡ßbÎɵ×Y¯¥xZÆ‹£¤]ÆV0îµÇ¸;ÆV0Jj2ú¯Ý¦ÞJÙ&׫Áè§NÝ•²M®×ÿÙ¯£a0€Âüßÿ…‹2œiké!ÿà| »ÙÅ8¸M72j3"–µWQ˜aF„fD˜aF„fD˜aF„ù2ŽÝÎ^i%aÆ¡SÎ^ê,cFzâ˜aF„fD˜aFDÞŒq>NÌ mƨžæÄ²f|Ô‹)åôb.36ÕË\òu0c[3c1c§·§Ý1íj3¶¬ÏÆê¦‰*°[Ö7µgãßÞÔßó/aF„fD˜aF„c;™±eèvöJg 3þ#3"̈0#ÂŒˆgFdFÄ-ãEÇ…WeäŽË endstream endobj 184 0 obj << /Type /Page /Parent 677 0 R /Resources 187 0 R /Contents 188 0 R /Annots [ 185 0 R 186 0 R ] /MediaBox [ 0 0 595 842 ] /CropBox [ 0 0 595 842 ] /Rotate 0 >> endobj 185 0 obj << /Dest [ 174 0 R /FitB ] /Type /Annot /Subtype /Link /Rect [ 183 366 212 380 ] /C [ 0 0 0 ] /Border [ 0 0 1 ] /H /I >> endobj 186 0 obj << /Dest [ 174 0 R /FitB ] /Type /Annot /Subtype /Link /Rect [ 334 239 362 253 ] /C [ 0 0 0 ] /Border [ 0 0 1 ] /H /I >> endobj 187 0 obj << /ProcSet [ /PDF /Text /ImageC /ImageI ] /Font << /TT2 838 0 R /TT4 840 0 R /TT6 536 0 R >> /XObject << /Im44 189 0 R >> /ExtGState << /GS1 843 0 R >> /ColorSpace << /Cs18 555 0 R >> >> endobj 188 0 obj << /Length 1668 /Filter /FlateDecode >> stream H‰¤WKsÛ6¾óWàv"†©{KꤓN2I§êÉî&i‰ŠTIʪ{Î?p~p¿Ý$Êvz©=#â±Øç·»ÀÛuðz½N•Që» ‹²…ŠñσeeV¥óÈÆq¢Ö» æ½~¼þù7£6CGqœªuÌhÇàZ_…I”è!ÖýS¸Âïg^ú4„Ëh¡‹n_©$ZDq83Érþz-µ²FͰºH!Ûêßù˜œªBÝ«Oy{M¬ó&ücý énEwcY;|œÞ™æ QœÕ£a ¤¾ŠL¹áúOâ°6Ê–à°¾"¢"ÐÊm{Ñ<‘m±6#¢ký©+ÃÙÊ×á,…ŠwáleúÁ«ç\‹½¹šÙȮΖ¬P§4"×­·•Ú÷ðO?†³\jùˆñƒ‚kb}£Û|çÖ_ÉRÑ5²Ða Uz•·¥‚^ìUwºè·ý%ó®½ Uw§ÜêVXTŽó¡ïÉ ,´Ž@9Y9–l©¡ûɱ¼U·â•S¹+Ø;o[©nBK,pÖÆzïÎõ¡!¶Ãà[·¾aÏÆ jšùÉ™±w&È™#œùø®¬Çoêö0Ž]«nX¨AœÁ$óˆ@J°‹ÙaÖÜ„ÑXÅ´ÄžåÖ]ë`œCWÔùHE€„”OÃÊU“9ƒõ¸UTÆm=ð€ ^°½°ì%°ô¼u¬I)Ì$)zW¿r ÆcGÅÍ&ç¤Ø#$ƒôÔ§)@ÛºØN*™/†½C|ÎéóRæPbˆàý¾© æÇµe»ô5f/ׯôT¿R±bßWZX øV? kÊÁ…æ”O!ºæ Ë«¿Ù¦T“¹ 9ðÆÉ®ÈKFE; ^9÷%4"ÁoT['ç-oŽùäZ—ïË,†iâHÏqR”V“¢$^²”~¾Qˆ§ J!ê(‰fo[¶c¥óÖ 6¡?È>ô‰óÌ‹™¯ _%b_¨9#™ëv|䊰GZJm ® eÛÊ"­ZëàæHóN*ŠÈV_]ýf§Nx®¸¸¥¸^%@isQbSõ¾‡œœN†ä¨Rk4t„sëMëK¢ð¼¶[®ÒÓòHçƒ0)ûüÈúŸƒQŽ~Öž 1I—e=쟇ÕÁà±Þ‘Í“°)Œpº¯N®(º®/ëVZož\õUÃëŽÌ`‹|½ÃmYõ %¹×†n ú ŸѲ8¡e!vBmR9Õ\ÔWO‚ÿx²™öXNªIA¶‡*¯3…¥.¸uX(-}JLZÐÍ 3?a’FÈæìzI˜—§ÚFZ.FõÛIæS‚Öãdzù´v•ˆí·U8GuGw*ë»0•mŒY/C¾¡ßhÞÚÉ™l¾R¸Íä6ȼj·ºqó^¾¬’×d½ë™«·™ÖÜ“€MýιW¢“LFQ©àI$jÜ„ÂWüÅ;bÚXõ“*'Ô?Iª=KÝʉû “xç¶’Y{‘zÆœ.ô®}£c¸ΗÇ–Þã¸á뺑[3Ö†nW)OÍ·êÌ]†%Ó—È ÜÓ9¼ŽÊ¥$Á…Ãæ:åO¥šzW®ntÉsjÄ2r,½S€Ã„#ÃbÌ[G ä|»KNï‘~aµõ‡F‚$°ê¤C‘ê ]úKÈ»uðW`SÜ»¥±ÛdIC³ŠÕ<$z²»àõ‡]šª«.ø50Šþñì4ªV™¯¢”IÓ•²«,BšÙ,Z­ 4¸ Þ®'WŽË­ÅÀª9½HŸ¼hù%kÎOY¿÷5P‚òqÑp+<ЂÕáôÞ”ú/x¯aO6¡%s-?Z—úÝ”ÐP®©–}<\éÓÉ5rã}òïÄ’Ä~ endstream endobj 189 0 obj << /Type /XObject /Subtype /Image /Width 321 /Height 317 /BitsPerComponent 8 /ColorSpace 555 0 R /Length 1728 /Filter /FlateDecode >> stream H‰ì׋b¢:цmÉõÿøV D^:­™Ù­R‚}œ‚F þ}¾úoxè„õ€ŸöX`B5__×ǦyõOv*À¯éñÕ?ÙŸ¬Z?B ØM¾/kª«ßÌ üÊfàÅþ/±ç[¿Å_dpš€»w÷x×®€!| 7€ãaéCÀª&ÙuŠ5à7Z¿'Ìô‹÷²Û?}Ò|އ¤WŒCÃÞt`S¼ôsß9ÿ'ëOáúYx ˜À>KÀÏ4:B¶Ã®ÏB¹z*÷Vp¸ö~·€i•îgc9'ÀôÉ04=×NMSNØm}^Õšaþå×¶bæä§îç:àÜ@ñ¢ãµ~ §`ºLÝÜb¬¾å)¼² §³,fçtê•§añ<¿ˆ|VëÏñ‘¥ûÀâ›ùwþÞÇåÙn05£°{Þ¼5à¿¢™éâhu¡êö­\wØÞ÷·–ÚC%@{¸°µÇ& L@Ø `\98–ƒk‡ž¦{ã8ÕKÍÆïú~ÖÅ~êõfס8ÑÄì˜Ó5þ×U̱8=÷;ãí@Ìùït€£\šSýŒ1;]㸣¬¯çh °œhå•/¶õÕQgjp¨Í&c~ ÷;úÿãä‹'½Îfí$9ñ’¼¸[唓¯kcÚV„ ûmÀË[÷ Àæk›Cþ%~©‹€,aÂf7ß“ÅìnÒ„Þ0> 0tŒW¨Øïè¶¿7ºaï´;ެ1¶%î¥#è Æé”>úlo·‘0fT#c[f»ìZoì…&0ß;2¦ðÈ€mBʤ²½å'i ØdTHBh†½ùãÀqãp÷gp,ÌÒ,ÌOóìÀÀ0œ­%à´w:"udÀqN•r9`5íâÍì»Í `6/³ ÙL[ŒMí˜.z÷ŸÂÓ0í ÕÈÑÓ ;­¶åâ:ÝÆXÍÀ¥U8[okÀ+ß´¨„lpÜq0Àª½÷{Kí}'²¢th@ê·p éЀ¸½3p%a'l/oÜÛWÏ’ßí €ïž€0a¿¾ˆìïç¿ù3ú;·1móóßý ýÀ‹€s0Ƙç_··ƶPp½À¬SŒ±Úz³ß͆°üÆö½Ûq&Æië‘Éx騒_ŽyBÀG¾þåJ& lÎÜÙò*,à®VîoWá:#à& lìôNpøÃïÈ' L@˜€°K{Ù›€³íž€§L@˜€°__DÞºgÞ±ˆ®ëƒ€ V@Öì Œ×f-b¾5ˆ€ƒÌÏ^½óvÃLìc÷ïúûé€~Ÿ€7€q|нböT°zB ˜ÍȵØ'à `¿š¸Üö l\k}žÅš» ¸pX®Âí´ ·Õ*,àîw"wÜ (àf÷ÞŸ€.' L@˜€0a„ & L@˜€0a„ & L@˜€0a„ & L@˜€0a„ & L@˜€0a„ & L@˜€0a„ & L@˜€0a„ & L@˜€0a„ & L@˜€0a„ & L@˜€0a„ & L@˜€0a„ & L@˜€0a„ & L@˜€0a„ & L@˜€0a„ & L@˜€0a„ & L@˜€0a„ & L@˜€0a„ & L@˜€0a„ & L@˜€0a„ & L@ØSÛË÷ÀöÕ³äw{à»' ¬´ûËí¡„ & L@˜€0a„ & L@˜€0aÂ^xYlk|«'ÿ"/lj›õñ­†×?¯—®,Ž?ü…+a„ & ìÅ€!„î©Mà0>²Ížº­Pá§õZÀ}ô%`6Öm†úE ㌚, ÀiÆ…â±|átd{fÀãýÖ `+`;<†Q`pr ๯`XŸSp^»óò'¯í½«pòî\ê¶çÜyXÎßϧ\ðÈF„ & L@Ø¥½,ÔlŒouÀ¶Ylk|«'ÿ"¯|›„ & ,Úà ûüg¤`°ÿ§Ú(½ endstream endobj 190 0 obj << /Type /Page /Parent 677 0 R /Resources 191 0 R /Contents 192 0 R /MediaBox [ 0 0 595 842 ] /CropBox [ 0 0 595 842 ] /Rotate 0 >> endobj 191 0 obj << /ProcSet [ /PDF /Text /ImageC /ImageI ] /Font << /TT2 838 0 R /TT4 840 0 R /TT6 536 0 R >> /XObject << /Im45 193 0 R /Im46 194 0 R /Im47 195 0 R /Im48 196 0 R >> /ExtGState << /GS1 843 0 R >> /ColorSpace << /Cs21 561 0 R >> >> endobj 192 0 obj << /Length 1851 /Filter /FlateDecode >> stream H‰¤WÛrÛ6}×WàèX ÞóVÛm’NÓ¸©ú÷¡(‹­Dª$mµýäƒ{vÔÅq2t5¢<Ôn5gƒ’h·„JÞ…µ™'À%a0EL‰”ã~$KÓö[ÃújÏ ­×bn2ó[Ú¼ÛÑx©ÆNk^Ȱ·¼¤ÿ²×EÖ8*Ž 3Þ;ÐÞ)Ò1ͦi<²-oò~àŸN]‰_$óhH¥¸c‘—»Ý©I˜TÊ!UUt,ªB‹¢ÐçÛOõ^Q‚ƒgÌ< ©cäöIZ#q ²\€Ùv:• *›Çz©J/®º~Ù´\t…–#ãäÞ/œ{09´Çk€WƒPñû¼`øšºr_YW'D¨ßÖÚ†»Í¨.7=:ιóêÊ)}vL8ð°!³ ½ò‚²õ×p‡þNžgÖW^¾–Ë=Ì»eÃÑäʯÏ×¥‹ÍNVkª†gy¬4tO/Mˆ~tn©áÄ»Ÿß‰b-ÕÜùåÉ‘ne&:}ãÝ—`¼ÉC>jSž®ü©®Ò©®( öÿÒ¤ØÿöåÊ“Š}¢ᯉ @V(µÝD/ÄSž ¨˜SýMM•;²`AW“%KÊË« E4s^ü‰w2¡9ù$1·zÿ)õð;Î.&º>óâŒz’Ï{{ÊOR§'ê,¸UlI`fú-UY„ ‰äÁK`Ù­pUóô³Ò?" ¼Ûµï£©Æ3 ³Š•š""¾ôrC÷Îo*wמrÞDàMèd ÷·ªšAÑ7ÁI;w¬íwzhÐá³ß 8§MŸôŸV=›>êklr`ÒäȤ=÷&™®˜f2)?|ÒÀÉÿ7²ê©5j&jÍN¨5†K<“eBl S+"Ý gÖŒ™5Ò~â·˜5óÌšyfüšQƒxâÛùé¾8÷~õܼC÷ýD­™ž¼ù*jþµÚ{²wúFÞEù,‰8†˜9òѧßSÌáa ãÇŒ0A, ¿¯RrR@Ì„ÒÁàCäéÒ_ÖCÃ…{=z§þQ(!RñmçdH0ün1³Šþú; 5³ 8X¥aN¹ /â€Ù™7[Í.' A‘¤PñÀÅo’'¾ùÙÎB–Â4…g€¤v&|ß @¶÷†0èkåÜsEµòá¦QË’Ì£g½16â¾G^VÇÏŽæÏ™‹Ð[‹_6MዲðË}Pð¬ÚΞ½ÚƉºîf?ÓhżAFYHÁGYr¦ž~YÝ¥Iœ¨gO¨“A¯njÕsQÿwF‚EM endstream endobj 193 0 obj << /Type /XObject /Subtype /Image /Width 239 /Height 166 /BitsPerComponent 8 /ColorSpace 561 0 R /Length 1274 /Filter /FlateDecode >> stream H‰ì—½¶£ €§¹çl‘Æ*©öRo‘†Š" ïÿ*«ˆüɨP3w¾so$ù$FæÐõ˜Ö¹‰C{Ò¶ÖººÄú l±‰ñÔØÅ¬uǃ ÑAëŽÖc-Mu.1fº]X]bÌuýê’óõu¬KÖ¥ ëR†u)ú”ÉÒmQ®/­«„ºD¼¸îràìø:¬‹s¶ë®$ú8Ѩ27ïÖmãe]ùƒ¥Yéúñ<ãxbKì×} ‹ÜI{uïðW4 ‘x|5Ð}ãé~®û‚áZ>!GÇ_g·n#ç]ðΚÅoõè¶¼AÜïhÞÔÖõoÜYºëJzŸ¯ûLŠ-æÇmxUWYÌêµ”î纲ߩ„úy ñ£·ªÛbº¾ˆäÐ÷íÌxbkìÒýƒJ>FÈ•x2±Uöèþ› þ žªv¤ÃºEãë°.ÎÙ:¬»’X ëâ´¢õ¹»¦JÅÛýñ»÷¿½a]¡P®/¬ûõ°.eX—2¬KÖ¥ ëâ`O¬m{xi]ô‰U]"^\w9pv|ÖÅ9[‡°.@~ÿu.©Û«‚PàŒƒ8LlH,f¿îŽ«¿1®UÅ{8¤âÓ‡‡êîYl[u_ƒ®©¸Õu®­«—–.Ú1ާëð¹4ˆ[])ÒÒXÐm„x5‰ŽQV§;×5g º¦Àuuõ0_LæÐÀkM¼ÿ8®WŽÔ¬êš ë·¢{¯OóÕ´ºÆm">Ö[z£zºou ]›jJ÷©uõ^ò9u÷ï;¾§ê^CW,éJhh†ÅÜ¿&t"Óy|*-ª;qœnôÝêJ]Ø>øl„œ§‹l/Çd›Ôê:r”nüUï¥#ái*Ü7H¦‹ l¿w£â¦n†±q®0»r:™ê¸ù!RÛ7¢ë¯çÅc>xfö¾‰ ?3›ú¾ÓOUãv=/sÉŸ¦¾ï÷‚nÐøzÝ×ZuƒßEß®»/¾ë✭ú+‰ÅäéŠÁ¤#î}û®ÿÒñµþî“p”mý ë …rxaݯ‡u)ú”a]ʰ.eX—2¬KÖ¥ ë¦h=r§ø¤oi¶ê*‹P™S|Ò·4›uã& ô‡éÏ#|—ê»)50Ṡ͸™ýºøä˜.dêÎçIOÁ§º®º¦ý+¢ ¾.½6L¿§­¨Ó?²-Ðgš‚pœ.¸7sÝIÍÓþãž DP×ð¯5¶Ýé•uí%3ITÆbÕ ÎM `ï]/Θž¯Žn<¹Ýº’ºcÉÓºAO·?Ù¡ü¡ƒý18ý`]û>­õªÜPè ð«›A…{7½˜£¾¡.ÿÞ΋oøÓ³Û_[Õ¼o¸˜Ãƒ·Pü¡Ý9àmQuvfïQ0û©j{ßÌ¥™ÏÖŸÊ#wŽm}óöœð/"ʰ.eX—2¬KÖ¥ ëR†u)ú”)«ÛžÍÁºê\„:X·ÔH•ægÝšÓU†uCX·æt•)¤Û•š®2¬’§ÛuÝø¦3í¾Ñyãp]°l›?Kwòs¯¢ |uÛ ‹¹3®“npÞ ‹Ù·­°˜­ngW¶ãŒ{׳­²˜]uÅt…³-¯kö§ë,æ¼ù7êNK×nQngö•‰èF _Ã$uñ‡’ºLWÖ aÝšÓU†uC ëŠö\ŽÕêlŽÕ½:¬KÖ¥ ëRfÔý=œ}½¦ ÿÜ Õ€ endstream endobj 194 0 obj << /Type /XObject /Subtype /Image /Width 26 /Height 26 /BitsPerComponent 8 /ColorSpace 561 0 R /Length 84 /Filter /FlateDecode >> stream H‰’‘Á Bq7™P7ì@f€d|pÊÈàñaÅeš".Ópº@л ²%¨2Æn8dBqÉð¸áápÃ!c‹|?Äɸ¡¤>q À²¾ª( endstream endobj 195 0 obj << /Type /XObject /Subtype /Image /Width 26 /Height 26 /BitsPerComponent 8 /ColorSpace 561 0 R /Length 48 /Filter /FlateDecode >> stream H‰’‘Á Bq7™P7ì@fÈ0 4„âÁ'ƒÓÕ¸}:ÔdÜp%D€t‚¡® endstream endobj 196 0 obj << /Type /XObject /Subtype /Image /Width 26 /Height 26 /BitsPerComponent 8 /ColorSpace 561 0 R /Length 40 /Filter /FlateDecode >> stream H‰’‘Á Bq7™P7ì@fdÊ00.C/· !7\  Àªn endstream endobj 197 0 obj << /Type /Page /Parent 677 0 R /Resources 199 0 R /Contents 200 0 R /Annots [ 198 0 R ] /MediaBox [ 0 0 595 842 ] /CropBox [ 0 0 595 842 ] /Rotate 0 >> endobj 198 0 obj << /Dest [ 422 0 R /FitB ] /Type /Annot /Subtype /Link /Rect [ 427 246 442 260 ] /C [ 0 0 0 ] /Border [ 0 0 1 ] /H /I >> endobj 199 0 obj << /ProcSet [ /PDF /Text /ImageC /ImageI ] /Font << /TT2 838 0 R /TT4 840 0 R /TT6 536 0 R >> /XObject << /Im49 201 0 R /Im50 202 0 R /Im51 203 0 R /Im52 204 0 R /Im53 205 0 R >> /ExtGState << /GS1 843 0 R >> /ColorSpace << /Cs21 561 0 R >> >> endobj 200 0 obj << /Length 2471 /Filter /FlateDecode >> stream H‰¤WÛrÛÈ}çWÌã eB¸_ò–X®”Rqìd¹OÖ>@$(b‹´ìýìçôe’¦•M¶T%æÒÓÓsÎéž?¯w«UbB³Ú.J¿ÌL€?nä_F&Iý(b³:,ëŸwù!4ÏÃ"ðƒ 1«õbI-˜xY|²÷^ìÇöÁC_lßzþà®÷ƒ—û™]wÇÚÄ~æÞ2ŒóöíÒ C?·&ŠÍ½Y‚½#û#/“Uµù¡íÍûª=ya`«½÷Óê¯ä{$¾‡{‡ñ;ÏàS"޳{ADž䤽÷C8ú‰·ú™ldb#ös²²º§ië…5:ì¶ðqFfƒ1üdß6Þ2õÛ¯÷Ò¨kÖeè‘YF~TL‹Å?È"‰Úª3t¬u_{Ëg¯<,²£·LðQóO¨Ìº‘NÞîjTçï¼%ºÍºn'l´íÆ\Nì½e©;nÔúi0»êsí&v4Ñ<án¦ý†cí\Ùâ7ä}6¾1) ¥í½ÐÖÃpµÕ…Ï[3Ýå4H샘…é­ •p…1µ(^O§qìZ9Ï(gßɉëþ9tä:¶ ?Å®²lÖ§~è´¯žRkíK3îºÓhŽ=œmZ~öJ&›²Vö{ôÌØ±‡«?¨g‰z–Q‹<ã¸la'¾za ô²!D™º* :Aœaº Þ—Ç÷]†:MØŽ;›ê¹jZìnÖ8‰)Moú/š_¼eFÇåõ†&Ùn+¿˜Àn„exÜ8›ˆñɮ̅skDEÿŠmÁ™pN®‰WéÿÉ+fFÈsÞí÷Íp™¯0)Ô (Ão™”3“"bR­Ø7µž0Ó»¾Õ醸“b§s†.¯à±îÔn&!Ä·Íz¬æ^Ä.&”‡¸³f'èúžjbŽ®áÞfÛ€7·q/WƒãR‹N÷‘árîû¾þ*#b쎆—;ÂÃ@Ï™ù| d¢ŠÃ¹L#¢ô—8U°Jj‘'3uÈ ¥ñ&·þ‘]ŠäûŒFçÐg8Ç$ßE -f•¾ ίôÔ*×bpíÂ!霣T>ˆ)Ö˜§ûÀÍ„LQÒʱ¼M¡Xô\òЮâùS ù«ã²¶åv-¿.—¹(ûÝœ:<(H ¿(Yî¿î›ö¿ä"މ‚,È‹d¢0á£A*þkþ1òeŽPÿêEpßòn<$ÑEãs-ÆFìI÷Ivbè3å&7$ ‘& )·pÃd¤‘~N1ꘘæ Ùn2SdDÉ8»ÜAm=ÚmöESÖ‰&Ø0¦‡±êGA»fÞc×´ãkl¢“Ñ€ˆwÄ*Ù/ú# êÐŒ œsìâ¦ì¤:59á]ê¼»ÌToÎS ëœR‰SW9%âœRL9Źó†ù:tšTZ_òõJnq†ô¨ư iÎ ÃFDX„‰òcd%µC,×ûn¨7Tz(Öx‘Fv×u.gg|"ÎÃÉ6S•«‡c§ª}6µBÏÒqeuÛwµ‚jâ‹.‚0Õí ÷ÂQ½ÔF—‚RW÷ íQRуn;NB('=+^FÉV›f8îùfbq¦t"ÚˆÚÓæ ÿáÈAL[¥`Äk"Z³×3RåeÖHvOîA….¯9,ø¬Æ)¦á´áZö? *g3:CÜe:\:ø÷€|óëT=6ÝÒž1_En¿ m¬¡ÅÙþÞÄ䯮ݻårÓ@K"›éÜ©œ;ŸÎ_ž;æs£ŽÛ6û½Ë±ÿ›*ç¿ç….JÔ¢(=´TUMu”E!îC¾Íߨ.(%VgÿÏu«¢ˆ/ë œä¨\„<!OEÈ%q!̯úlªÐ”Ja]CHN­LÙÈüÔ ~ê?WÁwóIðKüT?¶n© ~: ~*‚Ÿ‹à§³àçÎÜ0o(‚Ÿ;ÿDwo«¹B6Šdo¿!®ô=¿Ðwáñç¹zt/ ÅÛ…ÒÏ'uOo¨ûxIªéQèýRöeO—?nj ÉþTŽ]•‰¢ûg‰@S€ô7’\:Ø~/|_ê‹Iìœ'8Mà߇c-¡& õ€K{ kUò…ñ\XS6°³ViÒÀ‹ñ\ú V©H¤Ÿ_‹Ñ¼î» _Øñ–±°<]2èÂ++§Ó«VD—Jå¯*EÏõ›°wéšL_ø—‘á}ªöæOвҶm']“PÚ YüJ(PŒ²Näó5%Ó5¹j¸'NFöÁãèÛï (ÐnÈ¢³©·{wÊÏWóÙMhê‘9›^¼x=uGÎÀO¤Lónf'›“=é7î&áKƇ®è¼Ûù£Voò{~½d …ž:Wc€ï@Ϫxz£ŒNÇc×f‹®Ãi?6Ç}m’Rìlå×y7Õjo¤¦š_„B<ÖÙ^H÷º¾ãÁŸñ *!‘Ûf] µ¸»×þ%‹é0Å|UD’-¶2°ÆØG1îÆÞµÕA‰Àœ%ÿr1U]êF\'uáJA-*2@4C@í{Rb¸ÅqÛQRl'/²ÒB4·Š«ŒÂ^• ÙT2h)ØkpKî>A"6ød¥¹ª'Y iÒRê¸S_료® ¦êxÜkl!µƒ¾xk6e¼ˆ®ÂQN9 ¡ ˜“¶ƒP*„>îëjà¸iuÂÖ²}\øzÇ•IdéÜÄ¢jaCõ •ù„äq˜"ÏxÓ½S6úÀEZÜK>á=ÅCíŠ-rFL_tw;ïE³}²C·©¾Hí ’ó‹–Ÿ‡`ºªÄ]ÕÇ9i‰Ýà&̰ë^ZkFÓJyk ͦ†>lÜUUûN×N7¥¬:‚yUž ~åÇ É¾\22v¬Šz'×áÓ•zº´ÔrýѲ´nù?¹Œœý žáË—ÒÅËÅÞ²Dúèñ<ó‚¢5WK krÏCDX)¤0':®\“ö(¿_Äê(ÛªA¢­ óí&S9씕’¢Û¢;Éç‹Z/i?ŒÒ-ªÑêÌd[kX¹ª»õ¼ ¦ç{U¸‡ÃÑ=+FÐ÷®ùîc}{ôwÿ¬ÇSߊ„hš†v:úÿªé€¿'zñÝ•ÀÆ"°{5;=“TR¡§œëÃˇ’PóûUé23~"?—.TUB,\FðRWîr1 ù`cïV‹-¢ DA.L”úedò€ÿ‡‰Ÿ¨"Ö‡ÅÝÃ!)Í}·øÇw§g@K0OOƒ×§§Œälzxc:·dz\æx+ÌÓ£×§‡Ytî;*žþŸí´C endstream endobj 201 0 obj << /Type /XObject /Subtype /Image /Width 26 /Height 26 /BitsPerComponent 8 /ColorSpace 561 0 R /Length 102 /Filter /FlateDecode >> stream H‰’‘Á Bq7™P7ì@f¨Èð0(b•gPwdðÁ”qdpŠ3`Ê𨃕Ã5Áe| Š±èQä‘¡Xd|€p eUÄ”J"·äpúÔmèȸÁž8€ÑÂ¥› endstream endobj 202 0 obj << /Type /XObject /Subtype /Image /Width 26 /Height 26 /BitsPerComponent 8 /ColorSpace 561 0 R /Length 57 /Filter /FlateDecode >> stream H‰’‘Á Bq7™P7ì@fhË0Àš B1Š ’ŒCP·ix\@–†˜Œ®„`Y'£Þ endstream endobj 203 0 obj << /Type /XObject /Subtype /Image /Width 26 /Height 26 /BitsPerComponent 8 /ColorSpace 561 0 R /Length 81 /Filter /FlateDecode >> stream H‰ÄÒÁ À Òy²A÷_EEQ øk^âQ X3¡9óX‰@ „ôû\Æ@*˜Šýb”ûtJø(¡®^‰ÄÚ5ÿó+T‹Ø‰¡® endstream endobj 204 0 obj << /Type /XObject /Subtype /Image /Width 26 /Height 26 /BitsPerComponent 8 /ColorSpace 561 0 R /Length 60 /Filter /FlateDecode >> stream H‰’‘Á Bq7™P7ì@f(É0à’a€K!É0 a$õ(2HªQePIuõ0–qÕ Í¨> endstream endobj 205 0 obj << /Type /XObject /Subtype /Image /Width 26 /Height 26 /BitsPerComponent 8 /ColorSpace 561 0 R /Length 103 /Filter /FlateDecode >> stream H‰ÔÒ± À0Àoà{¶`š¯ÜzÿU‚S9’)£(_úÄ !»·™MäSçø¿…Rò$D6‚¿'}—0•@iŠ]@W˜¶ªªÇš‚›Ø*0ˆÚoÞàCQ÷/Ê+¡Ä endstream endobj 206 0 obj << /Type /Page /Parent 677 0 R /Resources 208 0 R /Contents 209 0 R /Annots [ 207 0 R ] /MediaBox [ 0 0 595 842 ] /CropBox [ 0 0 595 842 ] /Rotate 0 >> endobj 207 0 obj << /Dest [ 184 0 R /FitB ] /Type /Annot /Subtype /Link /Rect [ 238 414 267 428 ] /C [ 0 0 0 ] /Border [ 0 0 1 ] /H /I >> endobj 208 0 obj << /ProcSet [ /PDF /Text /ImageC /ImageI ] /Font << /TT2 838 0 R /TT4 840 0 R /TT6 536 0 R >> /XObject << /Im54 210 0 R /Im55 211 0 R >> /ExtGState << /GS1 843 0 R >> /ColorSpace << /Cs18 555 0 R /Cs21 561 0 R >> >> endobj 209 0 obj << /Length 2055 /Filter /FlateDecode >> stream H‰|WË®ãDÝç+zÙFŠÇï»™¹€„Ä‚ËÂ×î$FŽlç^†5+¾—SUÝÎcF(RÜî®ê®ª>uªün³z³Ù$*T›íªôËLøñ ü2RIêGA«ÍaðÚ¸[½ùæçPí¦UàA¢6õjM#lñ²úM?x±ëæbýÞ+ðÿO}?y¹Ÿéz8û™xë0Î ì¯×^ú¹VQ¢Ö˜Íœé_XM´Œù¡Õ÷UòÂ@W÷ûæÛU±MxXk“ÄÏ 1— r²/ðÔFd߯Þ:óK½'smz5ïŽs;ô꼯žzN}Óö0„$v^ +0ù—xUí¤ªznŸ«Ù4¬>sň¶ò¤§;{ë‡Ëô£n­Æ4›ãt«\ì` Ö!ŒW›8EA&N4f73A2ôýè)ŠI]õü|âÃ(f1¢¨¦£!— ]ó{»mau5©o]@Y¤ºŽ§öF‹ôÈžU}ï|›öékÔ“QM;»ê#Cê,݈ÕçöPÑ„„VɉÍ!±\†ŒÈÑtØüÙ¼ª}‰õè1Îr&s?Õ½° Yˆh0S©ÕGM |£üÐÏ=ò-Ö¾;žÏŒìéaQÈéo%^•—êÇFˆPª÷Ãè%7Z:m?óh4XÛò \NµM^/Y`–Íx@aOyÇÖYUÂLL6|àÝ!-£‘v 8¦zGc_Il?x!m!–B(lÇŽDô×ϤÂWÅFtmiD…ðÚˆ½´ðrs'»“4°w²‡ƒxDø%—.¸rÔ­^Y¿]ª¾Þ CºÑˆîNä`Ê¡jŒ:?·SûÔ™Wx·!Wd™!¼æüž@íÖÔÔærN#21®ÏÞ-øŒ½³Ž‘Ão¢‹´Ñbu©b%¥"e£WÖSÿª¶oÌÑô û”‚6fÅq"g¯ù"eà§¾àû{{ëG¶„ܦ³$Ë04Ê2E¦+ºZµF{Ó uep!{£·Î—dÛE»ÅŠL#KŒ¯¼4°‡ùĘä*‰G=Œ½Ë}\¶‘6¬ÂJLC²/í¼¿É­ÒÑlaˆøXK‹f¾~(c©å¥³0 =Ë\oPóxÏãR;Ô²……Íõ~[yÈ”ü·RŒzÑÜQ±*p,gÀ¥(ÐnuQ+c/Ä.‡ò ε'Écš«³ÐO7Jß:Åçn ¢æ5_¢ÂâòÿëÞ\ÇKŠB-& <×!åbÌøYP!9,¨þ–K†i– OټŠMèm^@Çå©Ð§ª»&þѪ¶Ÿ”°“"œ¸ 3¢d´l#yK‰?.É~ƒ‘ðÒ*X†gëXŠ0Åô—XÈØccfËaäÇR ása}ÎPú…Ñ·Hƒ:®”^„efž)OKd 6h±ây”?i&k2£iíÝ$²Ói ë›»wãñ2U_:à£ñ;‡å(¦ˆà4ݱœyæú%ýÒôóO§yfV§·¾¹ˆÏ¶׿dÓYÌ:9ëïÚˆ›¶HFœ¯—û&F•? y–ºªA°öò-”He¹t‘t8#ö“ür†TÚ^sUöcoó)d¢€½s4ot™$‰PɲÝ/ôÓØ.c·ˆïZÕ´³³M+KK‚I<Ü%ðW­F´ŸãÜš‰_ ä­ç8°ã…¾ Ç4·@Éahlµ—F©ÕÝÓ“1–(êÑ®UÌÊh]ÇýKt|öZ\1]1>ކàBù›N,Yâ"jiÉ^z5ÈÕt|&š”YMm#9y¦x½’Õ†KˆHP#ÈÍSÅ–]ñ—b¡7÷D!©Iî¶“Ë–NÎø‰¡˜I«F¡´Ev_qѤ¥WK}§ÁNQ·aô½:xkÊP‚ z+³óxÃYf)Ä<‹øi%Ü~Èg êK {§d·¶º‰åöÃÖ ¨©IïïÆvAẟMgêù¾Mž©o¹àdÛŽ¨ Ÿ(V–û¡Û"ŒÜÍ!†ë.âö;¢3[[dì6…¸0GĿ͢Ô;îÁÆŸïù3þˆie{)z³’C,ùÀ-×~dÎÜX¡&ô®Š°¦éOÔöt×udr™Ô83 ;C_Q¶x48ô˜ü”Z@ûÑå.¢O¨ÅoÉ%öóèÉß«rY*“­#ß Ô¥„’ã¾­eä¡ÃB3Çm8чèYz|údzg¹c§ÄÏã{vú„|¿Æö)‘}#ÚöT¾;G(Ûલ£å¥^©ªAšã­º”±„¦‰Øb æ2ÍYQ|í<—×Ò^B辬x[ž > öxœðl¿`«¶«Ð·_}”ÐÛÏÓY²8š\p&Š!™3DØä¶ÿÎôY&AFÚƒz¤  ƒM‰ÞÞ'åT¢÷^ƒ¸CŠl¢ïñ›]üÎØïDüø}µY…Š~ãƒV­Â$QIÐUÆI„K-ü¬¶«w›+h•~™ZâAºÇ#ÉAt ¥Ûað*v¥È$Ù¥+²Túu 8 =ydéhT‰jéó{؈¦Ö€Õ¬U2kå¨ü¶}£´µJº€Ž·fI±çùdbÇ"ƒL¿ª•ÉJÔÑúØ€ü¹Š#ÀCü‹rÜC\–*LñIŠÐ °%¸éú°zóá&êaXý•(ó1Ëè…#•ô–qiìÄSÿoÁ˜¨ë endstream endobj 210 0 obj << /Type /XObject /Subtype /Image /Width 431 /Height 370 /BitsPerComponent 8 /ColorSpace 555 0 R /Length 3679 /Filter /FlateDecode >> stream H‰ì—‰‚«(ESt?íüÿŠ@‹K¢Æ;¹gæ¹ ”%'…öãAp‡#0ü º>ý‹!›¡.(¼®_‚@Òå—Æîß¿qëܧ3#2]ÿÒöÓ™‘ßì+Cr]Saý£®›à²·V¥ºþéêr½¹mc—í?†¯þÙ¬êJÅ5NSÚòÆJ¯²i‹.ué«UŒºDó¶Ð»…ÍùzO×R)RWÂS“³\× ÈþƵp6ÄŠ›Oì¬ÏGáêïd>KíªWXj]+r  »}~1ñVê Óù›ëJÿ~cO-@ ®£L8­5Ínwéâ—0¿»¼­RWørô•–ëÒ?rÝ»˜NVrõ›_¨ìÌM²Ý7±\]£#7×–+uéÃbgÍȯ–Úеxá‹X~wÙúM_†Í)ܲfu¢ºR× +_†.®†zq‹ÚÔ:W¸¹üÔP« Y ºÒ ôMÒ…/ÕÕþ»ËÔÊwMÌ=YÕø¶ßñ=q?†òÝ¥¯OçJ~%#wéO·§Jj$]€ ‹€àuuê‚‚º  .(r]ýÈ'"K”ÕedÑܽ¨ë ¬÷¥ö±ÌH…¤ëoÂkšeM»?rŒ®Y`¬ªY¹ M]þ€ºîEK×X^^ß]7¢ª‹Üê‚‚º  .(¨ ê‚"×õCn‹«èrSU]ŽÜƒ‡…ºîÍÜýP×½y˜ú¢®›³M׌›½} —²xÚVí![º›«kš¯“v°.2±W—„cUjñ$M{¿ñg¾4SgÑýc\?Z Éû~'³.Ù¨KÂÊ”f]¡©<1Õå¶-†]u1L÷ü>öæ+[q²²š×:ièbui^ÕÕ^ ƒqêË0œJì"º¹\Æ.nYZ¿“ͺÈ .(?êº7’A]·æa¡®{ó0g\ o?5  .(öê§þÆÝÀ®Î/ù^¨® t‘ÛþîgÐÿ“ñÓÚúñþÈŸ‰„>ó¡3ãåàÃ6H éÿÏš‰Ûúw—Öåf=ÁG<›;I:4 Ùå¼Á©4“‘‡ý¯±†ÿ\enã¼›™û0㵡Ri¯5WØré’¸ª.Rž©:;¤h&#§U— ת(k×CŠfâ6WW¦å•ÅP½·¸¾Ì¶ê2Z¤®+~éÅCg:‹dó/RŽvù/‚k¡fku‘{°±ºÈ-`uaÁêB‚Õ…« V¬.$X]X°º`uaÁêB‚Õ…« V¬.$X]X°º`uaÁêB‚Õ…« V¬.$X]X°º`uaÁêB‚Õ…« V¬.$X]X°º`uaÁêB‚Õ…« V¬.$X]X°º`uaÁêB‚Õ…« V¬.$X]X°º`uAñ°uÝš‡9û¡®{ó0õE]7‡º  .(¨ ŠÑ‰x¨ëþLÕlQ×Ýñ‹ál‹ºîÎüî¾» à§ÔuAA]P<~ Ôuo$£ªëAîJE×§RdR¹5ÔuAA]PPÔuAA]PPÔuA¥ë9pöˆ3B®çÓ ÛGœâH.ÔÕ÷}<,®é£âêÄ0oãn˜»yêÄ^‘µµNe å›N˜A²å8®ÓÕw-]¦«Î0a~¦êº¤œ°h)ØyVCnj¤ñ¿ÔÕ‡m?ýŠm8îçã¸É¯N̶”¯0?S[üÕ'ÔfFH3ÍCUÃÖ>Š?JÎæºú¸â™³ÐP¹:ÒÔ5WLY]­¹VcD¶„HãL”óùDu5v]EWw®®.×Õ­†Pï®rw:ŸÓÕ÷}楯•Úº.߸OW«$6¬‡®û>]©ya1ŒÛŸi·ú©!YÏ¢0‹)¯‡ø‚êŠSßZ /2­Ë¬-† _†[ÃU]ò¿ÕþîŠÊz-Ïÿ‹[{Õó|úmœû°‚ÅwIá+‘¾ßÒßNñ{!.s‹!ª_†õ»ŸÁ…ºÞeø[uÀ¹õž¯Øâ’šJéçnïÔï±#Dñ—Þù@é"ÔuAA]PPÔuAA]PPÔuAA]PPV¹;Z€º  .(¨ ê‚‚º (tõ}_ë×wys£#9“RWWˆ™›Ëúºš†®~ÞÍ54nõq¥#¹‚¤ëob´ÑϦòM:I'gätŒ.ï¯nª¦+ñ-v ÔEU×ü‚êÂËûè;}l;òÝu 5]kÐÍÇxEW¾ñ’.ò)¨ ê‚‚º  .(¨ ê‚‚º  .(¨ ê‚‚º  .(¨ ê‚âx]Ï#âœîÔ¨ç?Z×óé†íû¡NwjÔ+‚×uõ©W¯ú®Íê¸Ò ÙŠHº,•!K4ÃuqNpN$î_ÞÒ¥¶­£F²O+$+&©ýÏžÌáŽÚÍšN žÂI÷nðU]S‘ÙMlŽæÊUÄøRé ­êçåÏü¦ò£¶ž‡;™$ÉÇŸ¯ìÓw‰zG§·YXWÒNÏ‹ä¿ ͸rþª‰˜é»KÕ”îmºVÓ?‘Ktuψ[ïþ Û&jG"—,mû¹BWçÇGßñŠß–Èß /r‰.rÔuAA]PPÔuAA]PPÔuAA]PPV¹;Z€º  .(¨ ê‚‚º ¨èê»ÖÉÔ0иDN§ÔÕ¥®¼Ö.¤®ËWиÉf]SÃÔ‹\@Òõ7ÑE;]¹éºy1œBû¹£+é蓟R—jí󥓜IUW·R]ó†º.§¢«Ûø‚RGªƒÒH_Q«.r[¨ ê‚‚º  .(¨ ê‚‚º  .(¨ ê‚‚º  .(¨ ê‚‚º  .(Öu=Wg÷™ >ÿÄM6èr‘Î]ÞG2øü7Ù¢+?µ­R^ªv–‘ZŸ¬w+ƒ5dé !ÊûôHaâj‰l{¤3tIy­þl­+-]²SWÖ·ù{È(ïwÐ#U'îB]ÓOIüIúYÉÜäÄžHì6¡uîf~ *ѺB×u¼z6 }DŸ„3õlé!T7›AP£t•QcƒùÛê¨È»}¿£©šˆdmK¼¤K¿“ÛY2 5ÚâB_{ˆrú¦®ººÌóI~˜gWÜÖkêÊîwÈ#Ùæ<ÀYºÒ­çÕPR¢ñhóu]vqA—^×eo˜ ÷Љþ5›îK÷;ê‘D眨¤’sÀb˜~¥yª‡êÊ2jÔ"ý“ÍÊR¹Wó~Ç<’”ùØ®+¼«K—~š•W‘ô‹ºò ¬.1;5¡y¿.{çèékÞïÀG 9•©WSÉyw1TšôÛ¶ÓU¯'FTN1µba°IW3°QíÎÄ··•y,ó^¸ß”~Bg}vψ«u8¬=îÑ÷»šu]S\œÝ® Ö_ÔÇÞïlÐEîuAA]PPÔuAA]PPÔuAA]PPÔ…ÕEîŽÖE .(¨ ê‚‚º  .(¨ ŠëzîæÕqKÑîÅu¹tîµq‹ÑîÅ­u½6`÷¸ƒnÔuØí¯€º»ýP×a·¿ê:ìöW@]‡Ýþ?öËB†‚Ä…ÀÞÿ»øi ©Õx*(Ƀ µêt™Å{L­®ç®@©SèžC×¼¨9N¬Ô)@×Cúy•E%ÿTW]ŒÛ*#Þé~ÛA׺.a± tqÑLÔt9îãU—ôjë*å!è²AÓ%úº ‹ˆ:]õÞ >Iu±0ß {u—Òºò—aÝ·°wYóÆ×ö-öðehÇô¼]ñ@—Y¼Ðeït™Å{]fñ@—Y¼ÐeïAd]üd¹Y§u‹E`]¼Ls·NëŠÈº@t¥ºR]©€®Tº@ +]©ø 0âÔ!É endstream endobj 211 0 obj << /Type /XObject /Subtype /Image /Width 26 /Height 26 /BitsPerComponent 8 /ColorSpace 561 0 R /Length 129 /Filter /FlateDecode >> stream H‰¤Ò=€0PnáÂeº0u`áþWPléObÒ/5MxRŒŠ¸lB(´ž ÀJ´ $Ð0Ä«El›„õöjÛtš•}ÁVzñùÕ“Åç¿Â’¤TÖk!ßQ&œ„¢C[dZÒS? £¼ÄÓÛ‰Qk¡~Ìù7ý-Ô~½ËWä`ï`Ÿs endstream endobj 212 0 obj << /Type /Page /Parent 677 0 R /Resources 216 0 R /Contents 217 0 R /Annots [ 213 0 R 214 0 R 215 0 R ] /MediaBox [ 0 0 595 842 ] /CropBox [ 0 0 595 842 ] /Rotate 0 >> endobj 213 0 obj << /Dest [ 206 0 R /FitB ] /Type /Annot /Subtype /Link /Rect [ 196 345 233 359 ] /C [ 0 0 0 ] /Border [ 0 0 1 ] /H /I >> endobj 214 0 obj << /Dest [ 174 0 R /FitB ] /Type /Annot /Subtype /Link /Rect [ 113 331 141 345 ] /C [ 0 0 0 ] /Border [ 0 0 1 ] /H /I >> endobj 215 0 obj << /Dest [ 174 0 R /FitB ] /Type /Annot /Subtype /Link /Rect [ 298 221 327 235 ] /C [ 0 0 0 ] /Border [ 0 0 1 ] /H /I >> endobj 216 0 obj << /ProcSet [ /PDF /Text /ImageC /ImageI ] /Font << /TT2 838 0 R /TT4 840 0 R /TT6 536 0 R >> /XObject << /Im56 218 0 R >> /ExtGState << /GS1 843 0 R >> /ColorSpace << /Cs18 555 0 R >> >> endobj 217 0 obj << /Length 1386 /Filter /FlateDecode >> stream H‰œVKÛ6¾ëWÌ‘,"E¤žî-é&EŠ,Š"ê©éA–èµ YÜJrvó;vpg†”üØE…›&‡óü¾¾¯‚·U•‚‚jl¢M1~xQÄÑFCšE:ލAÌgã]ðö×/ î¦ Žâ8…ª BZ¡Š‡à/q#“(Ÿ$î%âYâ÷ï¼u;É"ÊEcï $QÅ2TIQ¢~J¥¢B€Î ÄÝ¥Îqv/ÖäiLNŠ›H¡I¤eõéÈŽ$*HKuCbM À/&"ŒÑS¸Å)òÂ…^™E™xœeŠÑëÞa1 ÖmÕ’ÂtëŽ2” ;,ø"„x˜@¨#]’)ç{ɾGqF+2õ-¥Â’ŽÓ2›GÌ­g&lº&«õÜÙa‚†ãakF°;€ƒm»]×ÈüI„— Q«»¾Þö&rÿÝwµ÷ê½Ô•=·ÙÔƒ[l½”i»Ù´oü•½áHcU¤²Sl[N+ŠÍŽœë@µF§¥SÀ¿[{Ún`ûq'7 ðè7\A/š½ß¨/Å Mž™¹ñq~»Ž‰§N&¢Ü¢*YÄB§þúW|<ŽLX"v4o`‰¼š½õ²#Cîm7ÌyõÓU5㥚Þ݃ý¶¦k4þ_M…j[Ó‚á@.rÙZߺ©£B]1¬ܧ¿üäŸê„…nLofã%Þ¥ÀåRàjoV¸áb~°ð Ã’ *Jëw©¨þ¥¾0[hÙÚ’å3tcAª½?Øuã4ƒ ìë ¶¾Æ xt‘²†k?v[Ìh7¡jòÅlHß« UÊÇ ”osO·D#òš½- *µÃë»Õ·gøŠý0¤C—xÆ“I Ñrc‡–<&HRqa ¸FÿVá§Ï”N’&ao–¯j„ûBÒߨÝÁ\¥1’Ké‰?Š.Ñ™ºPuF+ UÇo8®É8ˆ2ŠDrÀ¯/XæÔÝç•«=“ö¸˜ÔÂYb¤¬?ì»fϹ?Fr1E¹¿§K\PWáË”cËì ZYÚÉêv¾’*wnŸiîæÉô;´ÕÂýh¦‰-3bžÅϰ=Î3"é%‘ГâääšHé%XÅi”%g4zÙn‘ñ„õGŠÀçúûÒv‘ñãËA‘]S­X`û‘ôÎAò,ôQæ†èƒ«ÑÆÕ(q„ËĩϺjZ'îPpÏeØ ‘¨YÒ(YJ½ªñ£¯ótÏaÂ4(n\ú­ß£6Iíl\¸ÝBc{{‚É5!¹“ø/3á|ØIßVè·e#9IEý0œ¶²Ôp½N3ƒYîjL»ËØYE| ¥ 4uò¾„2µ¼¶5¯6~¥—Š#,ÌÆ¥¹.æÜ5þÏ uEgR3‘S¥tq áyFÜ™3róÓnˆ±\‚S̃éŒÎÜœr±NsÞuÆþÓ˜«k7ô·Ç¾}hºBÛ÷f§´ÀtÖ1N¸±‡-û9ž ̲Ēh”¦ëËsÂ3˜Tû=ûì Ìç üpê¾çÊ®=éJ—»wJ±†Â”§¸•˜6"–¨ôÁ籂UâÔ,ñùŒè*Ak„¶“Fì‚÷ÕY[¸|u«MÎÏîg•¾zw“ÙúêÔþ%ØáS«”L9:ýë«ÅÓI\lyß ÍPIÇO¢î#¾º)¯8,Rá®S¹EϲøvMQtà}÷M”„p°nóAD‚n³v—í'³òo`ìÊE¨“”^*M!M)\ °9o?²nlðGðßêß endstream endobj 218 0 obj << /Type /XObject /Subtype /Image /Width 431 /Height 313 /BitsPerComponent 8 /ColorSpace 555 0 R /Length 2652 /Filter /FlateDecode >> stream H‰ì—‰‚¢:D½énÿÿ‡}4`êYg¦Y“ æX‚ƒ<ágÑõéo 9 uA¡uý¼.=5þ©¿¿u©Ô§ïŒHtýùå§ïŒü&o’êÚ‚õG]ƒ ’§V!]Aº´TÓUý Ã3­ë©tãx²¯Ë‡Kë ºªßèHaXóCGtE_‚ÓŸèͪKäa–™.×ÌþõÒÕŠ"uUQÖÔæ,Õµ(Òo…V]¥'C•æE‹ð'Íž?´2e~U°k¾&~3Úûrz2Ñ ËuÙÑuYò“¢5âJ9¡îŒWe[ø­ß@‡Šš'Çp=.¿óìÒ¶r]öÍQ'- G]W‘ÈLIWÑÊoØ<[}1ít­Ž”É–:ªËîUü†R+ºš'¾—ö³K…{\W:&9 šR×9vÞ •› ƒ)*›«L©üU#˜£É°¢ë7z2Æu°~/íß]‘‹¯§AØÕeùò¯õ ¨ŸˆüÙÌeŸ¾Wò+ é³+|“ûð­’^Àê" h]A€º  .(¨ ŠT×¼òÉ"-òtE²hn,ʺրÍ:j»3RÀëú·¡5YÛê…H—èRet‘Q¨êÒÔ55]k¼´6>»¢¨‹Œ uAA]PPÔuA‘êú!â º„ Ê£¨K‘1xÄPר<¢½ê›G”/êœcº Êx‹ôU\Js·Ú­ØBŽ4ÿ §k¯ƒÖYÙ8«Kì¶H5·ã¶¶µ^è=MßXÂö®®ît¶ IÛ~'F—Ô%vfò#žîd‡%î¬üŽD+¥².’¶ýN´®õ×ÑÉP‚ÑV*Ù±º²>E“’´ÍÎ~'›®í=✮Ædèu‰Ÿ÷‚q âwÊ+ÉýõºÌ{ß9]öP¾¥K› +«âdè¯ù}œ3Lg¶lgg2Œ?ÁNEÓòª®údhEˆ Þ í®¸&¶Ï§KWA¹¥Š¦Öïä°.2ÔÅã'‚ºÆF¨kh1Ô56h“áàðU ê‚â¬.QÁoÜœjür—¯á…tÝ ‹T8ö»kAý'ë«ÿ¶Ôýõ–Þ±m̦Š»ÓÖG|@|Iý?9LÔÑß]¡.eôXnÏ4¿HN§â.…Ãdåÿ«L†öŸ*Œ­÷h½ñRW)/&*³¥:é7M$ ^”º¸Kv˜¬\–.eÏ7R”»d‡‰:œ®DË+“aðÜâdø2ÇÒi‘².÷¦ç6UÔX$‘¼·J¿œ Cަ‹ŒÁÁt‘!`º°`º`º°`º`º°`º`º°`º`º°`º`º°`º`º°`º`º°`º`º°`º`º°`º`º°`º`º°`º`º°`º`º°`º`º°`º`º°`º`º°`º`º°`º`º°`º`º°`º`º°`º`º°`º`º°`º`º°`º`º xÄu Í#Úû¡®±yDù¢®Á¡.(¨ ê‚bu"êŸ-]ÖuŽž -êóì>» à«ÔuAA]P<~"¨kl$¡¨ëAF¥ ëÓ_)Ò ×E††º  .(¨ ê‚‚º  .(¨ ê‚‚º  .( t=®îqE‰~éz>Õ²¼°Ç%zr£®yžÝfv.ÜÊÎn,ã¶®–±3C'ñyÙëQj”j_t#ê$»UúqŸ®yª‰˜]e–Ó#UÖ%ù€9Kn#ç kã¢ñ†ä=þ—ºf»œ·6lËöl¶Ý"=»al¾ìølÇÜ·ÞL`Q±}–-Ó58p´„®¢·|«ù€®ÙÍxÑž=P8»RÕe“§«6ÖA »šGJø~Q•ëùDº*«© kºV×”êšvKÏ®|u9ŸÓ5Ïsâe.Em_—>xN—ëãRâì—iú>]þpc2të¯~µûª!IË,˜Ù—K|AºÜÐ×&Ãʃ,ÔoìM†7ã“á®.ùß겿»œ²9”§ÿÜ2>«y>õÒ½Áܳ$ó•ôðïoþ·“{_pÓ\³DñͰ|õ+¸Q×»,¿U”ÚoùzÓ%nÉ”H×:vg‡þ|%²_z×¥‹PÔuAA]PPÔuAA]PPÔuAA]PĺÈ脺ÔuAA]PPÔE¦kžçR»yJW’+ÉuM™s8?B_wSÑ5›•Éк · Éx]ÿ6V³1•.üöŠo¸9ûG.'Ò¥ý•M•tù=>Ånº (ê2¨É>±´y ·ã†|vÝCI×tó1^ÑÅ™ïc¼¤‹| ê‚‚º  .(¨ ê‚‚º  .(¨ ê‚‚º  .(¨ ê‚‚º è¯ë¹Ð£Î5å.­z}ñÞºžOµ°,ß/uA¹K«ÞQ¼¬kÞð­æpkžê,·º®–Ûµw+"þ´º´¨–ë\Õ”¸¦¸.'âÖ¯¯é –µ­ÊÍNú¶ìÍJtSç?{²aÊu®:M—÷ådz·ø®®-dñÂ^¶Ì*¸W‘ÈWp{ËÑàë¥÷ô¢ð¥Ž?zZ®{ÕŠ®ÅmåL×ù⻺f·Š¶ìN:5¶t‰þû1‘ìHúm; «KÕ©¢«Sñ ü{ÅwŸ]^Ò4tMçtMÙÍHv¢ýÙãOÔ«ª+&q:ª½W¼•®9Ø0ó_]útxOæˆdé/|v;gô­ZOWâm]'Š7'Ã8]ÅÉpJtµ^5‚* MþM ?qøZ\K×;UÛºzK¾Xü”®ýtx/ò«pV«„ÿͰKÕºÞ( ÿ{ŽjQóä–Séɦoò©—~ \¢ã~Vk½ ÕÊu®jGðŠâîWñ(ëzåçá‚Rû-+q½Ü¥U)Þ[×z»Gnµô}£Ü¥U*Þ_¹ê‚‚º  .(¨ ê‚‚º  .(¨ ê‚‚º  .(¨ ê‚‚º  .(¨ ê‚‚º  .(¨ ê‚‚º  .(¨ ê‚‚º  .(¨ ê‚‚º  .(¨ ê‚‚º  .(¨ ê‚‚º  .(¨ ê‚‚º  .(¨ ê‚‚º  .(b]dtB]ê‚‚º  .(¨ ê‚‚º X×ó4¯ökU‹‘u©“Lêµ~Íjc1´®×:œî×éòw@]Ý.ÔÕíòw@]Ý.ÔÕíòw@]Ý.ÔÕíòw¦KD¶Õä—Y‡F¿Ùyê:Ga¼$ø«p£_êz“|¼\¨ÊÃ_ÕåèS&“ ©YËQ×9Úº aÙÑ59Í"A{lÿò€ª«4µíërÝCÔÕ‡–®¢¯ºD$Óåí\~@uM…ñ=ðì’låêP×›\ðfèŸ[|võæŠß]zuöøfØÓãÕÐuÇåº]þ¨«Ûåº]þ¨«Ûåº]þ¨«Ûåï`d]Óó$êÅ~­jc1°®IæÕ~­jC1².’A]PPÔuAau¨ ŠE×ÁAÿ ¯ÚýÀ endstream endobj 219 0 obj << /Type /Page /Parent 677 0 R /Resources 223 0 R /Contents 224 0 R /Annots [ 220 0 R 221 0 R 222 0 R ] /MediaBox [ 0 0 595 842 ] /CropBox [ 0 0 595 842 ] /Rotate 0 >> endobj 220 0 obj << /Dest [ 422 0 R /FitB ] /Type /Annot /Subtype /Link /Rect [ 382 262 396 276 ] /C [ 0 0 0 ] /Border [ 0 0 1 ] /H /I >> endobj 221 0 obj << /Dest [ 453 0 R /FitB ] /Type /Annot /Subtype /Link /Rect [ 422 110 436 124 ] /C [ 0 0 0 ] /Border [ 0 0 1 ] /H /I >> endobj 222 0 obj << /Dest [ 422 0 R /FitB ] /Type /Annot /Subtype /Link /Rect [ 290 97 304 111 ] /C [ 0 0 0 ] /Border [ 0 0 1 ] /H /I >> endobj 223 0 obj << /ProcSet [ /PDF /Text /ImageC /ImageI ] /Font << /TT2 838 0 R /TT4 840 0 R /TT6 536 0 R >> /XObject << /Im57 225 0 R /Im58 226 0 R /Im59 227 0 R /Im60 228 0 R /Im61 229 0 R /Im62 230 0 R /Im63 231 0 R >> /ExtGState << /GS1 843 0 R >> /ColorSpace << /Cs24 567 0 R /Cs25 568 0 R /Cs26 569 0 R /Cs27 570 0 R /Cs28 571 0 R >> >> endobj 224 0 obj << /Length 2179 /Filter /FlateDecode >> stream H‰¤WM“Û8½ûWðHm­‘úž[’N¦z+©ÉN<§ÉÔ²lk#KINWæo$?xÊ–ÝÞTÒ]eQ$‚Þôbµx¶ZEʨÕf‘ûy¢üó üܪ(öm„jµ_¼ÖoÏ~}oÔvX~DjU.–4‚ŠûÅŸúÆ ýPßz˜ õK/Ãïo<õvðR?Ñew¨Tè'~à-M˜fЯ—ž1~ª•MÔ³I„³­þƒ·É®Ê³¾Ñ½z[´GϺh¼ÿ¬þE¶[±ÝD>l!e$Ö§qæ+泑¡%{gªo¼eêÇÚÇ¡PŸN:Ñi}‹?¨\ÝЖr¡•·úïüPßâ NÚ{ò† åŒÛ½g,îVl+õ®ïÊjêv«^Ûr„s"]{,èÚa:ÜÃX¹®~Ì®¤|7¢³ž«ö¸¿«zÕmT½/¼eâçzëåðb_­¸hkz¸3ÔÎ7'‚jsœ&JÞ3Ö°MÕƒ*>uSÜ5•ª[5î*õ÷™D*úªÅ4#§7êƒÞÔ˜²'³|JžBjãžÕ@-‘QF–K‡§øQøü!”œb–§OF,eù%ý^ Õèû‘q®–HlŠ®1Îá6ËÅá¿W^®yŒ¹…‡ªäR•²cú]Ƙ’õ–Fu5§Æ 8R3®ot!ú 5ŒîERÖ7vªÆñ¬ £dôIÖ×oóù¥ž7 ŽõÎ;†Ðe&gšBxåNùž±3RÝ× ‘¢å›ø4л«TÓ £897äêÌ>gûƒqæ0³%êמ uS® vk1 ’`›˜F÷¼9ö3ÚÍa&€Ò»®¯ÿ& %€ðXÀ”Þ‰þì™_­ J(Ðå±ï‰m"]µ£Ú@e<2¶êv]—ÅX­ÕC&šà(7áÔÜåÇ­SÔÛõµã¿A e×tÌ lzÙµ¾Roëµè, 'Ä¿3Ÿ:Ø;¼VX ÛÐÁ©ÞüS­‹þ£ÛÝ_ïö+_ˆÃŸ²ÉÊœZ=‰åoÄWv΃‹XØy,†±:T¨u%QßöU5À™«sœi‰y4áp÷¤›àËCÀåyŠº„ö³ÇÇЩšö¦Îõv²›ðjqVÈ'Òoç‘!÷ާy1çç†&ú©Ð$¿Û–80+õã÷@0wYœŽoo©–⦀È=žsoëüü3Ú°ÿ g4Ê„DÑ€e—Ül”*Ù¤¢`ͱN¡úIÛ¶¢ËJÝéÖÊBwÓöò£Í&x:ìÏÑ'¡§æ2%|®Ç¢oÂs·åú‹-µN¡T—”ï1-Í O“µ”Ð"9Mé|’*B!—q'Í­=ÃõùG’%þ©dÉ&î¢]ñ—Óý2*Í”hB“·D¦»wõo`ç?8óWO'@ŸšSËD­Ç¡¯Ï)n¿á{Cy(ER…*R³aL˜‰‚#í^Ü.Dó §YëÚ*¦©ÓL(Én΋ã¶Ü-ÝRÏKÅÝCU©[‰/Ú'K¢Æmùàñ…#ܶ»w~g­äÉ‘Sð›WàD¼¸Çã¥&qáŠhD.v:ü/D™`&B6Qn%ÜZÝŽõÈŽÌ”‘þ*Òª,ZªIV•»ÆR‡sµPMÐ`åXRBŒœCדÝÈA×I;ä&n[Ï×Èå!Š9`õIÎÙ‡#b›pmÌ\K([üB‹ôGx?ÒGQk븙w’Ò$FZ”#óÓKËêF‘;×—7t[ù~J~0B :²x?Wç44ŸÅÙ?ÈZSɶ‘è6ã !óBôm^Ÿâ…ä'Z8sn&ÿ ^xðâ’7RŒÑßÁ_ÏÔËÛWK.wø^ùŽBc]co2ë>bŸ#·ˆQš³&g`(ø·ì¨Ÿ#xTø’›ËR¸áã½~ªxÂIud²Ñó©L!‰å}/‚h#D¢¤LËduŒäPß•(2 gGï1}?´fn ФhuÒø¬s‹…ÛÐL‡Óywî­úEžêÊâÇ9!žüI#•ëS|¬‡’"†‚ÕˆoÞE‹ª·V7õph Yt²’”Ô~§úØ–œçD©(4Ȳòý¬‚ÿˆ•ÐMÌ$⛳M¸VdŠ¡ëƒAIô%“`¬c=o©%;€®¿æåbSmJW›Šõº&ƒ¤óÅd+#ºZýjÂf ŸSýÂK˜áŽlnFá¹è5¬æ~;;3V:ñ•Мe¾²ÂWT5ë4ʇݹ5õ¢OO¶‹ŠÖ#!vÿ?Í(2ºh;Æû޹yÊu§—VCVeÃ)ã”I‘ù仕 YÁïÌüÒ¦8ú¼Ëñ§ô19³£ìTù÷][œæ,ØIÍuE…³rÞ)ÕÒc-‹ƒ’{×͹¹š_ô¯cíz«ù,›~pzE3f¾Ñä¼™c&KjôÊ3õ´ ¾’íN r=’nÁ+Úž¥o—)5ÄŒ#{¡±Y”\Í0=ñÉÙv#È¥¨ÁÁ9¶ïj÷-)ß›;òbªºª®9òÒ›ÇÓ‡ä0NŸû×ãÆÇgO¢åùàIt_­FѿŠV ߪ$ô"eSÔ@µ ³Ø,^¬f&÷ó&P<°’™JÂØÕ®ý"àUè¥kEÓýuíÅz{d÷•²ñ/Š Ð—w}W¢U$Ö–_’kYlûU½+dXq«ÑL—økaC°¸X”Ê$hlUáÛ+ƒ9å~ñìv§ê¦[ü›„ä2ËÚØÏ­Jú!ngâÙÓâQj/Äó§ÅÃüB;Œ|ZÜ^hOÌ#â<q{i{bŸ7I4÷LŠøÿð[Hï endstream endobj 225 0 obj << /Type /XObject /Subtype /Image /Width 239 /Height 60 /BitsPerComponent 8 /ColorSpace 567 0 R /Length 682 /Filter /FlateDecode >> stream H‰ì×éšš0à0r ØqFc­Kmik÷û¿º&„°$9Â8JšïyäGB^³€„øø¸–€Åþ…WêÈë$p dOÎå#œrýˆƒ¨'Æ›»zkK®ðš¹Ujûï6@àývkášö„˰;†M÷‡™Î]Ð|AóÖ(^eôäÀ‚qtrns6×ëòÛÚß²æ-uUkåBDw«Ã‡t¿?fÙ½ÖÔi+«neáÆrw6_øÏ•ŸÿHÈ–nSkåFѧÓÓó,=ËÏ:7…b»fß„yÚ›[ °q2ו«_å~ù*ëf®¢m™Ì ¥çÝã·ý÷evÖ›K©œÌÈÚ…j>b\¾p-\b»žÿÁ¸°Ù`\UÛºU%ôçùô–.YËy¾¶ßy€׺3£œ_ J­+Ú¢„ÎϧßÃÎlhÒð j¼iè¢x—ü1s´ÅÔËö]¦¶î ·«¶3¤^y/òV¥i;q9˜¢oUC^"YµØœ{qÚê}¹ŒÝ®í/BKwoóÞÜ@îUê¸c¬{î5»ã¹/ZW¹d‚$t¢®pIˆÆºÂu>žër<×åx®ËÜÿ'×þ½}||úæ¯!ó, endstream endobj 226 0 obj << /Type /XObject /Subtype /Image /Width 26 /Height 26 /BitsPerComponent 8 /ColorSpace 568 0 R /Length 150 /Filter /FlateDecode >> stream H‰¼ÒÙ PÊ&´e­ÿÿ•R£‰-ð¨÷ñžd2™ BÝ `4àvЯ…¶JiKãÎj)½ã4ïåÕ+m ßJémér#„‚5áè¼Z‹o¡ô”ÎébŒê*¶Ó@¶ÓÍß•Îû ,9:¨JV›sz^ ư´¯|¬'ïüOpïŸ Y ¶ endstream endobj 227 0 obj << /Type /XObject /Subtype /Image /Width 26 /Height 26 /BitsPerComponent 8 /ColorSpace 569 0 R /Length 94 /Filter /FlateDecode >> stream H‰¬ÒÁÀ P¤bñÿx‡±Dô2z}Á*Qä˜vˆJÓ<òWP*yO™n»Ø@é«ôA† ½‚%1q<1mïaÞ£êßݦW¼ô>S·Ñ"ÑÓG|Ž€ endstream endobj 228 0 obj << /Type /XObject /Subtype /Image /Width 26 /Height 26 /BitsPerComponent 8 /ColorSpace 570 0 R /Length 87 /Filter /FlateDecode >> stream H‰ÌÒK Psîç6Ú@Ц x}42“"nÃϱWvJÁJ—tÉAËãÀ”ZàÀyBÐfªššmÆ}7¯Sóƒ¸úˆS€!Ÿ endstream endobj 229 0 obj << /Type /XObject /Subtype /Image /Width 26 /Height 26 /BitsPerComponent 8 /ColorSpace 571 0 R /Length 99 /Filter /FlateDecode >> stream H‰¼ÒK À Иtîå´Áü¥ÐÙ>Ôa¨ÍhÂ4¸}Ñ"riÌLK¦y P ˆ‚É¢SüuNðô˲EÑG²(™äÖ(å °î¶ë½Ø:æ?áî#Þ ²Ä endstream endobj 230 0 obj << /Type /XObject /Subtype /Image /Width 26 /Height 26 /BitsPerComponent 8 /ColorSpace 570 0 R /Length 72 /Filter /FlateDecode >> stream H‰b`À q&F&ì€aHÉ03c—‰Cä 20u0Y\-3¦iPf0Âæ,z`28][ÃmCM† WB0ÄÙp endstream endobj 231 0 obj << /Type /XObject /Subtype /Image /Width 26 /Height 26 /BitsPerComponent 8 /ColorSpace 570 0 R /Length 72 /Filter /FlateDecode >> stream H‰ÌÒ1 CÑRïg] P$qÓ?ö…  Íšã9¼’±:Éž‹ø.!I‚(‚¸(a#åÄEáBj?»Gœ ÃÜn endstream endobj 232 0 obj << /Type /Page /Parent 677 0 R /Resources 233 0 R /Contents 234 0 R /MediaBox [ 0 0 595 842 ] /CropBox [ 0 0 595 842 ] /Rotate 0 >> endobj 233 0 obj << /ProcSet [ /PDF /Text /ImageC /ImageI ] /Font << /TT2 838 0 R /TT4 840 0 R /TT6 536 0 R >> /XObject << /Im64 235 0 R /Im65 236 0 R /Im66 237 0 R /Im67 238 0 R /Im68 239 0 R >> /ExtGState << /GS1 843 0 R >> /ColorSpace << /Cs21 561 0 R /Cs29 577 0 R >> >> endobj 234 0 obj << /Length 2492 /Filter /FlateDecode >> stream H‰¬WÙ’œÈ}¯¯ÈGp¨$PzkÆ–Ã’C53’ü@³tã¡  T·¬ßèþ`Ÿ»$µtKžY*r¹y·m餕ûF·õ[Ý›`Á¬(ÏÏ܉ ¢ø@\¢+˜`<Œ¥Ù&ˆí Æb»`ì#Ì_g€B@ì#/w<¼Yüû&â,䈹(ã`ûè}À¥[ |cŠ”=Ù±%s°œz=Å.âút—1‚8 Òð4FÜ¥¡^Ñ×ý@fDÞ@dë ÃþÑÜ2jèÎ4^_wæ“×´Ï #(Ed4Q? =›~ò—3#Gòp×VÀuaúÃþª#ÐkšC¯„%3'´+¾æA¾_@Nz\r_ˆèš²*¿;&"DÆ‘¤G@Ñs0µê‚|!ØY’GN¶`~Bë£ Ë ºr «“ù½ Ú2¢—]%î+”…2ª«e¤ŠKøÇž›Õ@|î}cëé’¹dNÙàüШ g²¤Û 0ä”'ÖYƾ+‹Þ\©5ôœ"påV‡;s÷§‹T¹TVµc]Îi çÃ%[ÎJto=]¬»IúÖŸ5+Íä´­3‘V ´*oŠþÅšcv˜Ú^ò\¡ô5ajH3tÝp¿P5¥êK†Y >)¦[wºœÍH ×w ’%^ȸ¡A©‚žä'¤%°Èƒk7ÔyD€hÆ’t·„õÉ)çé)xÄ à`F4Í*ŸH/SáºØËÊ´:dÓï)tÙ1çp‰2¤›o3Ž" #fù’IüTov¦ä—4íyxµ,R4+ôÛ6>u -íWBJºyp!˜‰ LBêuôSâÿLÌ82/S0{ÂÂÈüB^c=ÎXxGrÀz–0Äò "ˆUczÓ.Ú×ßJ2Q®Iæ0\Úè¸iÖ`C«™²\¼×îKœâ€=Ð8.8(•¢äɹ×|pš%.RÆT;ùuyLL✱–d!¼ÍäÒUY_0òévaa8Qœé¤‡Öbô”Ã1Ü¢Äj_Éb)u1ó¢®…39Lš3¨_àØ™êñŽÓN¤”®í¯Ã=[{wõøB¤Ç,†Ió”èd—͉xT „}q)X¬×3Z(УŒÝq{Õ«àByôÎÙn. i¥»PÒCb¯ œTc瑔躓ToJ:Œ¦Ï¥ԫˬ¢ Å~OB!´܈2?q:†É1å|ó†OWWÁÆC$­yðõ:s6Fùñ9¢yçÙ˜’ƒ¸Fð¦.> Žº€Ô Éæ^;›¶?VítÛ|í eFþ'ïwß—ü)ø·£†'9áÇ×ó“O,yñ“Ï.=­W“¿žÃãÿ¯Ë?@£ §sýÐWþõ 0ѫ觌D%å¡Jz#á¹'ŽJðå%‰¥‰Ú½[nØyøQ3F/¼bÆæ¾`ÝRA‘+ì”U \ü¯o¥\©Ùü; *xý"[»éÅódèa9v¯à‘—\;ÜÓíËJã^ Œ=h¸ž­öaªVÇ4"«ßÕ£”öº)Ý|ÖþòCŠÞ ã$¢a"â"Ø+6$ÞÎiÜuÔ¦£€£NÕTã¸Æè! ›DÔuÊ;Í9ûÁ\J8ºêD é×´¤Ô¯²tqH|vþ Ø,ÏÍ;ç44mc´Óß`}–¶|#/G©y ‰ã};qöAd“¦"¤íõ˜œ +XåÛzlÝ÷®–0O^Šg[®+1Ø¿Ð=¼)äqŸÞíÆ•Ûæ7KÿXôîø™ÉÑ’û"÷8XÒSIJ2—ž¦ólȯ-w<«\R™JYëº_†0ß–kC™„ùI\YÜ;w³ÇKNÝÎñ’åŠS\ñr;Øã.‡¤‹ËMIi ê{ý\k(=%ì ÂoD61g³ª¶i—GZ.!Jí³é{tù`6º0z¾Ev/ˆÈj“¬½T"½TN½TŒœ,àŸŸ¸iJ(ndð‚’Š•M]º‘%‰4i ¥¡M¥ËKÐñ ŤO“~ylX}÷ê¥î•g-q0ÂÚÊ©@ÍáÒC'Ú£/š%ëE– ªî¥ª‹ýYÑE$(Ÿ8~>Óo2å+!x4tK÷n*úŸË?‘xòfYí°•:l=üF×'°àªÀ‘`éBˆû£¹-úº“ÊÝyÀ ÝWzVÁ’齑å]0D¯^˜%Z’Û å3°ñ =7ZÆ-ãN‚™°Z²åÜÞÑÓÆÆ …ç³y+tyk?ܹüÄší‡ÃT›òà’ÍD-Ê.[›™žfsÓvèÜ9X­iºÌhÄ`”BàÜH^œUöÕažM?îVÿ^ÙÔµ–ª®–à =Eš£—ûÕË7û41¯‡Õ?V‘¡¿ñƒÖ¬¢ z³‰-q°ä—m˜±^5«v'ÍòSÊBx`ãÄl"¦E>ä-°%ß%ɱ×jÝ ^|ÉgƦ¯‹þ7S?ø1•¾aÐ9ZÐYæ]ÑóÉšýÖã1&Š%9ieà“â 9±~#ÖŸ9+=ö\Iix$O¿Mǹô¸Jž}›Ü¦ñy.äÿxÿôq endstream endobj 235 0 obj << /Type /XObject /Subtype /Image /Width 26 /Height 26 /BitsPerComponent 8 /ColorSpace 577 0 R /Length 89 /Filter /FlateDecode >> stream H‰b`À q&F&ì€a(È033ÃI4Vf&f6vvLv&  \ªiLLì ]†“ BcÊpe˜YY±Èð@ÌÄâ^Ò}:Äd˜p%D€EKÓ endstream endobj 236 0 obj << /Type /XObject /Subtype /Image /Width 239 /Height 49 /BitsPerComponent 8 /ColorSpace 561 0 R /Length 473 /Filter /FlateDecode >> stream H‰ì×Ùƒ ` ‘çè€þ[‰Ü‹.„cÑàCxÀãSAbgg²p·¯âѬ§å®˜öiu¬Vm¡8·ïLÑ\£æåÎÀå®\„kújè»ssWÈæÎœÍ9‹sdĈFuI2—,W&"äˆF•ÜÔ!s‰Nwç&O5¢Q]š¸Çæs±u&>u}‚ËX›¤œ‹´yË>Æ{—0fïD¨uqí3Ö«_è•÷{žaÎqžüÑp•6ÉÍú¹ÆmúÃ=•ÎiÍÁ;ÐÎe&JûIp…÷ºjsß r+—è¡d{¯6r­öt-Êu^_C¹þ-@^Kì?\ ¸ ‘·qA¯ü\®>ª3_$ÁžãF¼®}“eßÕO5r7ÌöIŒg1—c}7É õΧËÂ{ê½\cõ[†«°\ر ŽÌ¡Å8îµÃu|wÿõÝò`\‚‘ùÄôqÍA¹IõÝ-ç UÔÜÚPq©>D¯s732SM3Ê3lξ•ØEÒN"Ë3n‰àgUØEÒ.Êsˆ£!sfü"i€iyº²n½Û*ÁíÎæâÙ\‚FOçÆM~rD£§såf¿!Î;w–䮓·ï÷Îa~ <Î endstream endobj 237 0 obj << /Type /XObject /Subtype /Image /Width 26 /Height 26 /BitsPerComponent 8 /ColorSpace 561 0 R /Length 103 /Filter /FlateDecode >> stream H‰¬ÒÑ À Є7¹ Ü•† T±$MêýéÃ(ªH™^„Òù9#@!hƒ6QH‚…¶ˆhbÛÒW„ܵK‰‰}Æ)¥äFÈDéls?LòÜÁ&LpêM?«x 0º“Ž endstream endobj 238 0 obj << /Type /XObject /Subtype /Image /Width 26 /Height 26 /BitsPerComponent 8 /ColorSpace 561 0 R /Length 80 /Filter /FlateDecode >> stream H‰’‘Á Bq7™P7ì@†2 @€³à2Åh2np).“‚³\À'hçü2Ø]€ÛÕx|Š;tp†(õýC‚Œ®„`ÝŸ~ endstream endobj 239 0 obj << /Type /XObject /Subtype /Image /Width 26 /Height 26 /BitsPerComponent 8 /ColorSpace 561 0 R /Length 68 /Filter /FlateDecode >> stream H‰’‘Á Bq7™P7ì@fHÈ00 2à2 04HŒM" GDÚƒPMš ÓÈ ƒÁ(ã†+!/YÚ endstream endobj 240 0 obj << /Type /Page /Parent 677 0 R /Resources 242 0 R /Contents 243 0 R /Annots [ 241 0 R ] /MediaBox [ 0 0 595 842 ] /CropBox [ 0 0 595 842 ] /Rotate 0 >> endobj 241 0 obj << /Dest [ 422 0 R /FitB ] /Type /Annot /Subtype /Link /Rect [ 238 208 252 222 ] /C [ 0 0 0 ] /Border [ 0 0 1 ] /H /I >> endobj 242 0 obj << /ProcSet [ /PDF /Text /ImageC /ImageI ] /Font << /TT2 838 0 R /TT4 840 0 R /TT6 536 0 R >> /XObject << /Im69 244 0 R /Im70 245 0 R /Im71 246 0 R /Im72 247 0 R >> /ExtGState << /GS1 843 0 R >> /ColorSpace << /Cs21 561 0 R /Cs30 579 0 R >> >> endobj 243 0 obj << /Length 1886 /Filter /FlateDecode >> stream H‰¤WÛŽÛÈ}×Wôc3XqØÅ‹ƒ<ìzÖwmØÁÊÞ‡3ä"ÑRJ$Öð¿Qª‰’ÒŒœú±Ûæu5R%³CI~Æ' ¯-x—Jr(=J2=ÿá”À9Ž0+EÄ¿3_I³5¥ÓHÀŽàÐóÅspéf0p ·»jÛädv+•ô?@¨èŒP‘˜6”uYŒ·£Ü8ޱí¯StÈ€o,2²£iÊvBš¾óå'2 Тo €ëÔi²Lc×äcUÌØ‹Ûb@X×§qF'±ô:¥UÑÑLT$< ”Z žM•‹ûTº¡T´;ªâ`Ô3dáS^ŸÈÏkà'Ê*6X§‹Ìü)¯êü±æÆcž›J.ehòozè‹* Ê¡¾Ø#ó¢¤Ûó‡pÎ Ë3¾º|Ũj®ív”FEÇ!·ºÛÒ%&KÓÈ÷5«~éÞ$‹úeHç¹æ›*ð_¹ŽÕLV2S­ëÀ‹+z¢P§y‹|IÙHÎõ¸¼9v Xuvü={ÔR«¯v´¦ß8å5á•©"H,øóœ˜\>0 µ|àÄÄM× ço”`¸Á½á†ÈZ»/y|áT7G® ²ô$\Bpåqð^yÁsùï TjEô–çT*ˆsO-c:—Gºcº‰éPò9:D+ÛÚ\éy%K¥0Õƒ~¡ì¯‚™ÀWS¡ä°× ':P«Q¯J¥ì-ÓÎ8ÀýÅ«sõ:Ý54¤çjÇÀ ̽3'óÿ‰‚,F¥²@ÕÅ_ýgáæÂÿ=s‹ŠMãWÀ¯£RûÞãâ.gংP×Ù ×SÆÛáçfj öUû¼ir³›Ú‚ÛÏBœ[›VÚ‡¹[+¨ñ»ì ©?ic1Is0Œ†ÑƒÃyälR4wh©Ö}vŸ¤ah¡ ’Y±®Jfaýðœ(øÚVº-e©•‡öáŒ8ÀRÞ.ï¼ésI‚aU(l/=xL®Å€¥RÎ':Á¯Òl’q¹ˆ„HZÄWš^pNX9²§×H¬B/ù>s¬sQD>·j §+'­ð²xVŸ¿ôpYºª`NÓTâòá‹n˜Kú 7‹.B<ú"~¦ÉL_j¨HuCE³¸{ßÄ™¹ï¹ËR%>¹,3a€&ÄŒÀ.ôI ôÎЯSg*³p z2¼'×þk´/f¹ŠM_.v‹6¯º¨ë7oˆÂ ²0ŽýøöÕ˯ÝðòÜUH|WÁÁèE&/¦j‰Cß ?B«2m–Í•=‰_Ð3Ó+Q¶ZfÛò?=¤š’½È—¹ç&_¨Q> stream H‰’‘Á Bq7™P7ì@fÐÈ00àa€!l2n8eP%Pìa@1Ùm pˆéjrdÀ‚ nØd°¸m¨É¸áJˆB£ endstream endobj 245 0 obj << /Type /XObject /Subtype /Image /Width 264 /Height 357 /BitsPerComponent 8 /ColorSpace 579 0 R /Length 27480 /Filter /FlateDecode >> stream H‰ì—‰cÚÊÆc|aD…@œ­¯pì4Îadí®ÀIiܾÖÍÿÿ÷tŽ] ìÞãpßË&Hb%dÍo¿ùfôæÍÏcçMéç(•vö—â5ŒŸx0‡½?øð8KöKûû¸-•¶ýd›3öývÛO¶Î1c‘;³H û3Îð„ösz`ZOÞè…Y8*^òº¸¾ÈÁË9ì-AÃs§^Ã@;;oìvŽƒ»L>Kr kå3æõŒ’ ³ v®ÂD8”8¶\”… Ÿyü;Ÿ_Oþ`Kƒóbg‡51ÏÁ>œ•J…à=€¹£g9¯œûÁ–†õÆ0ÏAê kËٟ*,ª½4惡oOØ›ûÁvÆÿÖ_²j(Ísã\X{{ÿÇžõ‡âªïÍs(‘™Ø+^ú<‡gŒt£ã…zák¦T8³Ë}q/s(úäkáð|ÿàŸÎúÃïv¼ÈÁ%ï–lÍ£´[OôQøÝŽ™1ßWÓe[÷óÍÏá=„ÃÏÁf3fÝãàðà |Ä£b?08*éÃM?ÏÆ9T}ü³£RüV>8¨nì±6ɸ(ƒ™À+<“'R¡™ Á؇*ªU_\tr@ŸŠÅCs¿0(¯ŸÅ&8TËÁ\è• ®ß9áÀ¦|¸VkçP=àx%ºŠÓD`¿ .AˆÀêåh²X/‡j9§€\ÐVä€_ö#ùZÉÏ*ÿi=OºFUïŠùõ•o³FAkÎñÂþÈNÁ:U±6ùøDt…À.m ’ÈÅI‚ ¬ÕBüáNNx}¬¾½X·¼fÄO— {*ª7âf=„/Q½5¢bEðeå‹b Ο“vE¥` öW?Šãz³ÕŽ@ q'ŽãF=®×5”„h ¯;Xå3¯žÃÁÜREŸ;òR絆O)Ñh4¢z³Ó‰Ã ÑmÅqE0$ÎÉ”•¦Çª9ÌøÜäƒS?ðž£A㾚¨ÕÛ½NÌÓq`ÔÐ9Bö ¦±2«å0cŽ®ðÄa{B¤>Šd‡&Ùƒˆãv»Ó¬×°#•Z£…!ÌG5dâ•Gኲc•ž4F6Š×Õë 1¨‘ìa¹ýÇOˆÀ fGžYo68Óí^¯Õlà/‘TàüyϾ:O½C¾ °Q µ¸ÓiÂÚqù1Âf'ÆðëH‚ƒ o°‡q³‰G°øp) é¶ YbÀÔ"­v§×êüåõp¨æ¬ÑFï¾CÔÀñc¨„`q«×¥åæ q´!¤^ãjuš7ÜêÂt‡X;MÈ’.]Õëu;m¸ Óë´z'ǽví7WÑÕpþÙº¿@YGÄ2Åv«[§$h¶º ˆ.<ÿéÙùÛ·0úƒápc8öû—ý~ÿÝ»w°½^—ÃáÕÕÕ`p}=ÀÍû÷ƒÁÕÕ°ÿîâíÙéùùé @iƒcüõ7’X ‡2{¿ãÀÿ‰Cˆë‹×íöÚõ¸ 2>?ûáærðþã§Ï_nG£Qrw—$iš*•ªDÁÐZãGk“™,ãÿq6ÉÆcÜÇJgÚ(•ܾ|ýöñúòâ¬×m‚Üþ¶mUº`Èùe“ØÛ(蓳‹þÕǯ·£ûb„˜&n2Úƒ» Lã™1ï&t:ã=^`Æe —M&FßÝ~ý8¼Ù=†”ùûV9”‹¯Ä!í+Ø<àñùùEøýÓí}j2"De`h^}+Tƒb1h–†Òv6E( â´Ñ¨–ñÜI'£OW7oÏþ±=Õ#éù]§D¨9ªEõáfðíˈ$@KÏÑs€©²Áa^à†þã†O(¦v¯eOêpàœÎ hf:1ÉèãÕÅ?·ÄÁûcþ5Û>ìšÝ“ÝþàÓ½¢ÄFð2+·²ä tÀC1‰Õž—«4]¨-4šAùÀ6Ë&Óé8}ªlƒC5ÈÇoó"àÎÞŽ? ¾ŽRHgÌxΓà¸-áâfi`F¤©WNÉ=श7Òà-øwÔý/çPÎo·(lšÝÓ›ë¯w†|uÀ™Ÿbn[Ý󺧩¬¹|ø[┡íêÍå§´’T!¿ûlo–Cµý‘{þ=áøæûmj¸ "Ôö±ÇãD»—.M(RKŒ#GŽšýCsnð9LtÏ,›vþµAÕ¢'`i ×¤¸yrñ²a‚ 4§¹ö ªœ ØC™N†µÉÄžÓîrÉ%¹ñÑVX4m¸Ô ,ÆÿÞ‡²ÓB… DHïHÐó¸þœbÃ*ð‹èÜO`È Ç®rd„O$"W9$jÚº‚ƒú0&eHÏ47Är‹! O€÷ÂÎÙðs=á'dÕÛ'×®@¨<狹Z‘&i^9l Nÿ,Û]¸Ê-ã¡èxªÔ;Ð:s‰D fïâû=Öò±QÊIÛåq¢”CuÕ2§LÓܬJ\NبåŸvʰŒЊRH‘4^.7~ ‡ª«”èŒÀ V«wÏ#-=¢,%?bÐrPƒ«ô‚QÔ†Û‹ Ú_È>×lÊ=ÉD¹œÂ0Kø†#B-‚MÜ»ø–@ÉÊ ÇœÈ‚&¢i×¹l‘î1ñ±æe r­%g† ×õÖµ5 Ø$ZJ*%ˆ^Äò¥S@ Ø2Å'—_ôôq’i×¹uMÒTê?²¶%ß>{Î ÜϤ pï h|ÍÑÒ‚rg¦•gLšßL0Cþ³Feû>®PÃÎ1>޲‡Ç‡LË¢»6 ñ‘æÇWÞç¸*r#áRÔ¡ñÂÄ‘€¼h°Ȉ¡[0X'é7t/íîÍgq·\–C™)B¢pk~e/̦XH@ˆàññÇã?EF©LÉbѹ´ù7Ì RÌ2ãVÞû)lQa”jÝ nf›²YŸ|ÃúeJm7Þë…—®…8TQ AÐ8yŸN)Øô¿¤W OÛh\ iw+*¶4‰H  t …$8vl@V-ÝÉJ6 Y„´¸ëÿÿ73ÏëôtÛrÝ®8±ó¾óÌ33yV¯—$jm±'öãlæ÷ý<“ËFâPô™ÊÁŒ.ÍR>?䔾"*pê($² )ÜLÿ{³R(7ÝSèOd¯£§ø&~ƒ0ñê÷ù0È1ºö–ú¬ˆ¨¾b ,,æ Sç™úXE&GOç©oÁá7(ó…r³'=7#‚1 “[ÇžÒ$ãrÙX{Æ=¨„ƒZÃá3’Æ$ç£!.6ZÁ!²H·!—˜UfY]uŽ`ù¦™CX$×°pV )Ñ“¦ñ 8üŽ9?ïmÆÑ‘æi! 2m/·&(˜ µ»975ä“,7D†Ã÷l¡Üà '§£Ñèdé2!y1}égÚ°ù§B#_’…Vï®1¬Ed0õá8ýñ·pxN~ñÖ%î{@G6)ªH;È´NÛ~>«ªP™¸ÿÃáèì£á€~*¹3`s2:_\žÙA³Æ*°Ô¿ÔDQƒ‹Ä¤èiY–”#áCAQl¨yJ+ÿ?œ­¼µ®¹k ®%jq°2+ViŒÈû¦ESä*|±%HCxÆcru~zr‚¡0fýN]^ßÜžOÏGj-žväY鯤ˆ]º\¢£8 {Nå2׊1¤£¼åLçoàð+pŒ ξz %,NH6~Ñ‚ÁiÃI¥»ãUý“Ó“³ñû“ÉÝÇós2^Þ]ÝÜÜßO¡ªP ºÇ Eb0Ò©VÉé:ÂöAö[`‰’ÈҕͤE‚·Ù3(blè}7? /¼M±Áe5E$k& ² ¾£q&^äv"Éíáó€8{¸¿¾¾º¹¾¾¹¸xøðxsuu}=¹¸z˜æÎ9íÐÅCs]QͰͬ$òQ#¢bËUÌluÃIW³L e Ó}'ÏÙþæA’XøÑ™Ÿd ™©Í-IµÈ,sš P-ÕíÖ™ »»¼¹¸»»›L®Æã«‡k0ãööãxr1Êp—4·ôÁ8NÔC®×³DU¬à$½q¢g‘CÅ h “ˆNa«QÖÿç÷á ‰Ü9LRÚOÐQSP›’ÌõBFÃ:b¬r`û f"O/IšY £éÇñíÙùÙùt:ýx;=?;=¿ýxy~Â{¦F#Ñ¡€Uœ³|j ŒtM)"&ªˆpÇ6u³?:H7Ø|2JoÚ˜"›é”×¢xÖ€q†¾W(Ažå³H™g–°t†½1< #¨ãH!DÆã³aJ€sö›á€ÇÌ”ÌšÒ è3ÁÈØ=šF3YWCGdÃg×àpL°u‰C^ýžÏ#E®ì«÷4ÃÉ.Ä GëÆ´/³WXŸ$¶kê©aªÊÎhó»ñôŒ*yzŠÇéåøv: ’)ý!˹"s§½üz}kkûm»kišÃ[f¾Š@Á­’ÀÑ_ùQIÏ:6Áڰʵ'tø/wÆ“8<›_xÙ8fVÐ<åb\,i òŇ^fIXΘ(`ÅEc¶E¦<ÍAU£‹ÉøãÕÝ"•|üp=y¸ •¿ó´ŸŸäÝÃÖÞîÆÜR­R­TjõÕW»­XoM)H…yÌnåÁÙCì°P!¡ ]߸ Ñ È ²¿ŒÃÏÏæ_TÖ»ÜYd#"¦ä“ BG]™dÊÉ©ŠÕ^‘› ›>¤äòýÕÍÃãýÃûþýéÓŸ>}º< ±Ï^Ô~½±³ÚðK8ùPöskÛïŽ[%ú{ߊoT½Ýà rRÙIàÒ‰¨Ày?ùb¾~‡çÔHX52t™•[´®O8`1ØJ*¸üD"„ŠPa㫦¡0ʆ'r>ÕóÇ÷¯n¸Ÿ\áçn2 ]¶Ž¶7Wj¾W*—ÜñrQPÔês›Û{tƒs]’@™É¯ˆ;=Pb \âÅX ²‹á ƒh_Š•Oà@œk%´Ìb¶¡=iœÌSig%6]@µz*D@DÁúz{{Çnë°ùF¡$*|,?;eý‡ãÓCBÚ9z÷ú×k«ª7ƒ€”þKåJ}uk/ zvÕ hÔ¤ç p‚¢}zÝ®›:Å‘^h³ð º ‡ŸAv£DwT\Wiiœ+¥ =óÜ`PWÔ¶íWo–µF½ÑXš[m¾Zß=ÚÛoµ;èùvkïè-µo0mllmµ8 ìo¬Ôj¼ ¾´wƒÀ#^i±\20ð¢²ºÞ ¤…L-Ê®Dª(M@²"›½8tDzµD²ñ…ë«8 A½¨nd %fõcêàð&’A‡0+×ìﮯ½YjÔª¾çyå2~Ë^µV_ZYm67_5ß¼YYÆ»< ~ü›Û »Ç;õJ™åÆÎí¢Û_ô*%ƒÁaÓh¾k³(qâTk°!°k“(µ;úì§SV°Yýsg|‡_ç)¯¶ÛeGÔ|1xÈöNp&Î,?ÒP|qûèõæJ]°úóÒ=Ï÷¹ûª6©mòÑ«¿Ãº_7—kUÎAþèJœ}YªU„‚cD©ä×׎™c,Ì)°¥Ê]'ç@É9==TÄʉ1nüY*¿†Ãóù…Åúq\âR LsQldÈ92öØ1o7šK²º\ÖjÕÑ3Á/©Ðíx±äϽeÃG[Í•:0`¼ºêãI¥\ˆje»‘ÐM*«[-¨@j#\_s‡´1TÖ¹ÜÐÅöPLî&:CùÇ·âð³,“ AnAñ³6Hˆ {3GË‘o†ûës5ߨÀškɾãƒçå/»=Aô6Io|ÃáñÆÎÜr½†V)£ªUÖ¼jŸótƒŠÃ·µ¡9v£^:råb@‰˜Ü¥oD6xÎ0:h* Üû"ÄWpøqþE¹ÙN,Ôö”œéx%!$'Í/a„x³³»#·±k>+‡WŠw ý·“Ëïh¼T öñÖÎêÜ2€¨ø ý«xN"(1uO·,ºƒ7¨,oíw¢þnì&;0Cä÷CŠv$WèdidB,þW*¿‚,sù¨—Ê ••˜žÜ •#ééÀ³¸·ç´l”¯\òÅž}õ†«)ž€/34*Í=-Q!-8x»¾¶ÓD|„i௭V\á¿Öð  Åô›Ç­n ‡ÕRî|®Û£l”kʵõœk@aï!{ÉXW@ P®.¿©˜…ø^eÑ[¢âœÔõ™_k®ï§“«1FWÁ0 •YŠdê#-$naãð?ŒWíSÚjeÆý²³kÞ“^Ôk¹ÖK¥…¼ N¦ÌìÜl² D@ÔBAe®»îÝýÿ?í9¿'Ñé^{»©òœçü΋JV¾Dãÿ‡7’è´¦ˆ½†N´‡‰TBj<£ÞùAÍq`vJÛE4’@$±Ô+¯´v‰Ë£}ðN}eïñÀÇp41­½:$ z®h ÅUj¦¦ë¸¬’`³˜5¨Dû"þò°YNQÓ8¥ÃHó”"[ØÇ× ˜¨93½2m_þ‡?ëÕϾTDÜjLxÆ%ü`C:ÊÆù4ý³÷mn/ˆË§ðÙô,µcUO½‰…);1ݽNľÊB #Ò¬¦ƒÞéûã£æO?·0v±V]Ù<›$+ÿ6J0ûÇâf¾šå"` æAí;ì$–±ÆZ¿ƒ  J_ºÈqxƒ ùQz¡´ÈÁ@ú¢¤gî¡$i D>M‡ýÓã}Ïy{;Fë°QÉjËa3%]ʇÜvWÚ|L%ž5…{‰Ü{Ö9ywÔl·Ì-×)üujŽ"™ÂáEhpªq8¼Ùn¿Ìï&÷Kø/ú{—;cÁADR~.„¦¢Ã¨†c dˆ‹?B–̈‘ŽóÉr±";í¸¥ŠŒéÒ q§J-½=G‘¤LP8uÔ1®ÍVV´Dælœ’ðc—¤h·vª*™j2vÕÃE5[‡a* UÄ®6ñp³™’¶±T!<ô¨ ¼qniÂ6¦¢§ÊÈpx£×>Ã+$¹ @+P0à¦ÃtºØ\¥gͺ£B2•‹ËUkÖtÓâÝ[u[“m,îïÕ/ –š9æPl¾!EÅÆ9<0êu>¡§x*CHÙ²ªÆž¬ïîjê”Ä*^Û®5³ëíÃíÃ&¾²óŒPnBÃq‰ƒ²{Iºþ–¯àðw«y-'’ƒAA¼PÚé@ùâj~³Í»G­ZÙ%Lµã¦J|‚v²á A4M+]¿q:ǾÉDÆŒGÎc’gÿŒ¥u¿N¹Ô4Ȭ®™õªYðפ%ë/™Ì®¥›‡ûõö:åîù’#CJ'Ž·4D|eŸÆâð'»Ý-eÂ2dKºÎ7_®oÖ‹îÛqB¶® ¦€€õ× £°;¨þ'•J9h0eàšQs‰| úÝÎÉѲ¶iìgÁmT§nà !JD)eÒ6kÇÙ|]¹\ Óʺß'°~c ›3Àå÷ù#þqð!à܆˜áU0„êl2ono·ë/ŸšuëE!yG…œînŠ^jΞ Öj,8?öq4ÏM\¨$8sñ€`ŠC¦Óq~:=9@6l ×tÞ'Wë%¬!•wâ–Á„!¿ÙÁ“Ñ/€ðýËïãÐñUÒU8Dôɽ¼²a¶gëÇÇÊÓæ¼dr.ÊÖã»Îà“ãªÉ âa½Ã†tHÈb²‘j ; Ç8ÌÀ¢°\-gÓ¡mºfÑ}^,C«‰\–*Ì®ô>À€#‹™v1p6¤È$Çb…Tr·X,ï@d2N£î×w¹õ†Y55G¥IvuuSP2¢ÖìdÈ7èA¤/%m@çdIDäf¡kú¢ýBü/6‘ô…!í!P!OCâ²|óTyüõ>ÿɳìšSâ@$õ ªcJ*@Ïö_``h‘#Жé”>±Z…;AânA™ÈGч¦‡ÐJK&MWƒX•¦r ¿¿úöt f1[=Ò)Bª⑉Å/´†áßÃAôP"”Ø¡ˆ‡J¿øõéþq½¸¨:\µé–`y²ÅĤi2äÃ`ÚÔ¤5zp ŽÈLØäf†QG‰Äôåòn$xV«X’ç;¶®8 Û2a† åe³U1õ%­B+º“Ûí5×­\$ňq…Y N-A³_6Oÿ;8ü&î¨BìWrU‚DóÇWÖÛÕ§=G A±ÅÁb¤©mY ‚.¶á9õT3 ±äFh Ä"²a"ÅXÜáX. Ä ó±âd D~|‹Õë*”×LQá]Ýqš©R‡R$LÛÝ?ôW··3ÌZ\;3}_1¤Ìõ Ï )._ÇÁE9 ’7YbÆ'(ÚÕž¾n—AÛbk2ž¾QÒ±e(tݱ4Ñ6¼iaçøÂêâ¦RA!W1`€£ „'Óå4¸VKü®fK‘giÔi˜ÁŒ†%Ù]7,‡~±k¸*Á8åFxûñÕíÌŠa²ÍD$Ä ‰üˆúYÂð!¾Åá ,¥†AIÙ™$ytØÄ‡PR£iyY5†9Æ_ U½Êc¬ÚÅX0@…"+Œ \!cº ¢\†b> à0N“mGć’[5$¦›5ÛQn!Ù¡÷2„Ý|¾™’èA_©$–oJ¢!ç[Ê]= @üõ5~ ¤ùÐ)á~!"œ#«Òìú©²žÎ¶t+Ç–ÄTnÆsªT)Gä’Ôµê.I£µ}6 (ƒäƒâÀpŒ³Y//æW$¹ ØPXFÒoz¤>«‹‰šE ¶ëŽõ, ¶ã³‰ÛBÓèOó”³PßâŒÁZV…xLdòÅ6AŠ¿½†C £Yd• ø_ª\Òáéþ:ÿÐrd(4ÓµU½TíAqµEY? ˆƒÃ'ñ™£"™Žò@ d0 Q‡¥Œå J >Œ’Þ!j F,WôÇÛñ<[÷¶Í—ìn:ót5ÏɃvM¯X鸥xFNö‹æ <ú¯â@ʱLˆBØW#3ƒdÉ]å~3é5=zµào9ÏZ]öIÛ¢@8ŽÃ(~ELßak`¼’—fL ¤>@ˆŽÒ)ÖMè`?2MF£48®Jx&À®'±Ák53ÉIÇ)fÒ(°Ýv/Ÿ­hMÃÌgãL€–“àØÙ(P& ‰ó.Å2•ÉúR)d”‚~Œ­Lï¯Wƒ“Æs¹ÒlKvG{‰R¶ã±ƒº’~5Ò¥ü„qŠ•å+Áa)XÈI޼7‘3@bƹ8Y×%³ƒ[˜Q qÛù/ÙåúÛ¶•ñúVæó¢^±­8pÜô½ÈÆ Ê/aEc§NÛhÛìÝ/ lwÿìÌœKYId›’¬yçž3ç7)'µjÁNaÇîßUçÌ/šühGv ¬R\ˆŠ°y¸kýô¥€Üƒ¥Š#ÙåÝß{h¾›úrm^õ=&ôÓ3†AÛéwÏ^EÕìºb Iø_ÖÄnÓìïLšƒ×wð “åÍ8b¥©Ý"ÇŽì=dÈ{,öÅ“ïÛý.gä"¯ÅP…!!§_QˆšÕÁ—:,VëcÊ¢b ™Í¡*ÿøõíýâic½²P¦¿u^³ò¦ÝÕϲ0Œœ.³3˰U’]ä¡à?îr–E¨™88ÖþeQo÷V‡ûS˜’í¦•)ˆž0W52ÞcŽT+é@­á:¨úñdÄýÇ ]¢4¤æ'’W|Ü”x6GsÏkÛQÆ,²ÐjÿjCˆÚ0ûÍg:¬¼ k9Šº$t€¸ÛínÕ£ÞIЏèn#úb{_ô„ÙÕÔÐÚ'Eüo–W»Öoÿ‰ Þ2Ú¦%HÄÔÄjü€QÐáûK§ó„V`ö|⬠t(†ÔÁX±ÊFf9xþÑd(×þýQŽÒ(Ô›ºd¤Ït0T(V~œh¼$¨Š©išïÏ;7¦¼²4Núf}sÅÇ.éÝìí`¥±E»»cÌ4²–?  Ãú»ëT¡MN{±±ÂhÖdŠ¡¥˜NkŒ+o4CAaÎ(eªM³¡,¶?êðÆ†¦Ö.ø˜ë)½}A oãПDˆ[öÂ3cè8 éz[ïæ›™I6Â눟ñÁ‡‹ÕÒ÷^…½éÑÖõnïáépïû‚µ)óoÇ$´ÏÙtlX–LgC—vÍ€e)Ç×&ÆRcSpÍÚÆ.4ðˆ í¾Q3LúiðæT–ƒXsi±ÂCv¡ÏU4ÞKO ÇØ åO}g`€ÇGœÎ¾¹2wë…¢©tR5›Í¶%8J†=¼§*é ʲ–Ní`ÎeþjÓ Õ^áø:#7öƒÁÅ$Nlyº€/·-ë¹ÈÅFÜMÀ4¶ºPÔœSP÷ü͉òÄ•Q”,‚å!G9Ð-Ï»„{z ÿ2—F>©AŽ8ç|t1°ãÙþí¿½ûp‡=Bs°=¬2ZvíNSóÎtÐD»mÛnëõG\Ô¢Ýõˆ×Ðf7‘Vë"—eçp$ðãæÍ<ž¾,¸Ñ–ûˆhhŒÎ@ë/×t3¶Ç©±äo9è’Ü•sbB ê%«ç^kÔN’Ø §x¿dzK:½äÄSQC‡ÛÝŸ_}üý—·[S{Žv¤ æ |@ATÐa³zž¢äž O3Ú]Ü^"À` †Y6¸,Âä³­@pômÁÜÕ"&Rå’‘£Ê}z’s9å‰X;†cÇr¡±‰ç$/êP²¢ŠžáPø¨‚ŽèUQœt8 Žö€—³ÞÄ›("ºiþüÏÏ¿üúñÝ8– )v¸Û g·PD³Â\2°ð2Tªç=Ò#ΦÍáÕùu†pºEI„pAÔ·ž5Öw·¢Ûûý–k`„‰RaÎZà·G8%˜³ª‚JÍçpÑ<ç˜ N’Ë–™®à±c«ÿ$Ö&¾'dš¾Sãl”H-þ#~õð×ß½ûÇ¿þxøpÀ6mÐü¸áû±í{Û‡ƒBTK -_ŽMú$Hf׎33]=™D¨±$׊îúýîʼw…ÑÓÕþáðöÐ$•)Äšyë›[I!–§:ËŠ!•–Œ$0  2Fµˆ ’¹ñ}5`èOšª1:{z¬vo*IØÃùÇÿýõñ÷¯¾ú燇÷m±i`Ø+NRK]ôIȘÿ'»JwÓÈÒ¨% )j‘XíxkAâØKA¦…Ì/T¥Ѐ1ƒ-[BÓIg’Ìô¤ß}Îù¾[Ñ%qŒêž{Ö…Yt/‹Çi7›º>“JeŽNN<ÛáÀrœ8!lÙxãàsOƒéb¶¥z$FT ¬‹þÍA!Œ]Ñ4ô½ZÝǼ »¬tÇ•#áeéÒ”=aë8NÜ3uhØÆBøhY4Ix¥áÕyùúioo³†WN&£¢£$BÞºBƒµ¡8 èÁê”ÎÞ½öønå¸RNy™‘•%½Z9ëÒ²RF7Ë»[ÆQ Â óÅ_\Ie®5AüþÙÐ]%@Ð;jüªÕAÎÀaá³Ý ­ -º$žg®ÝµÓ™dåX®—µ’Á•‰W^üÊ].æ‹ÇùG@-je01ÙkârïÆï ¾æ¥|[eSgƒ´ÀöÓK+ö†\å \.”<¯,ËõN"C›Å$³MéÁßÙ‚WHUOßa°=<zþtÿ4ŸÍn¨®p†¡/œk,£B‚½Á‚”;r…Vñ¼v^ º'¥œ—¸m›™•V8b.f¼,Ö“ùzŒ:{lÉV ªÙœ ¿× ͺæ  Öã ý´×=g‡ðP\JåJ¹\Iåµì ðŠŸAà¼BåôüƒßG7ÍŸÿØ›ßÎf7“q á©zÖ°\š 5VY¤CóP Rö¬VÃb!¤ª•‚çÙ‰'šÏNÜøìõbs3Û›`¤T†C£ÙÔSÖ®Dürå?á Ëèâ 8`^P[à²çÂ&àûYÛܵã¥*x"›Ñ)BgÙjXØÙ\ù·F·OÆF7÷O³›[Ä…TÈáHVÖr¹Ð˜+#„tI–¨n×?ËRVê²yY‚ì\9Uô,Ë›îM¹…}òÂv oÝ×Óo·³½Y¡‚æØ4Çd™›ØâЈYjâ¢,ר(È‹vÏ}bˆOvÄ Ò22Š—:HÊRø@Bժܔ›K½í¢#M‹2ìæa²XIlJ[OX. TdC_pèõZï ¤`£}M¯)UJÄ>cÙ–Á!cf&éH…HŸ¡·žN¿ÜÝí̓ˆÂta¢Ôµ5×ë =gógH˜z=qü¥s³×kc)†—ølðßuåc\'¾ô\±˜ªæ\ÉG¾—Œ>ŽŒ×á`$çœNW‹Q4^¡FFƒmBŒ…e¬ хйŠ[ˆÚ×E'[>ï6«°šÃ“\.gÛönWб¥{3­†)­åpõ}>ß|ŒH]»Þˆ¯ÚoÖÕHˆæŽ.ø¾¯î()!šôt ÙÃõH^Ð ,ÍF}t]Vב8MÊClbi¯>^ð…,Xha©]a¤[ ‡^,c=€åHC³‰5 ñÿêü–*_ûÑE¡T=>.*9Ëù¿¥Cð÷Õ!ÒqÅ?yø÷ãÓ§u$fÈKo #j[F4 â 5ƒ'™ã30°´"ÜÏ{'c€–A*hyØqF7N.Û2-ë$XL!Š1‚ ‘ÍÇå·–±T@j¼S W†ò;÷pÊÒÕ½¼ôûÝ×åj5UÈ &,#FGåai`UòÍÊí^^¾Þ«,`s4î-âà«4à D-ÁAúf=HÿàÄàÿÑ‚Êu×L MG¶}öx7¹¼íʃí,÷uCXŒbCÞ.‚§tP˜߇ ú²¿…0êõ§7“Éd9DÝŠ:Ç¥b£ ëVøÀ²¶Ï´tb>ˆ" ‚Ãì¯û—?÷" N\gKÎÈdyF‘ðã¢ã€-e¯ªêð[2´zƒÉrÙö2–ôD/›q Ê‚¸¿IuØ!*¿çœ´` K]ª… 2‰MÑÌ ‰¦Zö@Ù@:ô†ÓÉjµ÷CP«æòŃ“¢—ÕœvÜLLóqi]<éý‡ù÷ûû¯›°Gƒ€0:æh> ´è5‰Œðz, S¼ktNeŽo§Ó^>9¢›+yê’²¥XíQ3­xj)Vé )š—Ñ Z€/.˜—Æ'NЦ×ìÙCú¶E8XLl²à]*—:­æ]pA>ÙÎk¯G’»t(ÛN\I³4s0ÿ¾þøç† t †ª‚u9ñL½ñ-xø¦CrÃÌTê* ¦óÕMTH.;Ï2¨ô´âŒ°“ò`ÞöÞŒ¦ cqÁ¥D(Q³F*=À• Û¢E}‰Ô$'fè tÂ6Âúa!W=rwzsܤé;|ÅOÅ%h‘}\ÿkQ€Av¤Gź78Ô¸>‚–¶j¼Ùêøõx˜úR¤ÂÉÓänT‘Z‡ìtâXHËÆKkJÁ$ŠPh샠)¡h<ûx,úÐy9ˆ°sýê«ì®î,.˜bDQçM¹P8Íev^–ÙsP R …ü{ßÜÊÁÓ—ëož€#4!M‘çkù>´ 4¨f³…ê’`Öèð¿n׳õê8 Z£YæÈø87V‹Ôû45’–Òé™'͵p\,E0’’¤‡g>,Æš—ƒ>>¾QÀÂ(^^„ pthóåӼͻ°¶üËÄÃ&½íSiZÖÁúÛÓÓçrš²;Ò¨Y$)ÈŸ°Ô¶þèH” !º¾tÊ›TGþùËl=û•çÛFAlNFú[ŒThãØò”V±­&É€T #Ô¨:CØ! ]yZ·Í3 °vœ*–½|¾\Ê:[#Îè¾J'µ2³íqÖáËç?æÝ@€.jæ†I`CºöN^à§p~8ƒßî÷|ýYþDœ Ãǽùýúܲ¶ØñÄIÇȃ٪}DÚ¶[õ%(#’}Àˆ¸*–S)ø¶¶'¸ÐEgƒO†ýÁÐà0–ŽÍR5Î*Goʶã*©¬¦ƒ~꾩N;ß"qɇ£õOŸWÝP6„D¢¡†ø8.üºí7:Ã.±ªëê*|ܬŸ75Gt¯X8*凗p#V(1¯Ýâj‘iý0ð/Þ^4{}Ö%¢8~ËoAöu…JÇ\ TÃ~pQr gÇUN.0Ât·}½ƒ}S¥M½Žë‹eŸ­7³§Ï£^Ø•BÙë4åÔzþºú¡4¦­.¸MCF,¢RR“Òm:$Uôôí~ïk×#ÌRœšŠŠ sÒÍW Xµ-ÏbqˆØ¥C½QÄVÐ>dNù×K_ø×iû~K‘‰ð#ÒGªD+ ¢ó.ÿ‹wXÂÐtœl¾TÌ»†‹F;»&!­å¼]?ÏÖ?¢nØap†am1NJM SÀ%ÁFO„c5„ ðŸvBôïþÞ»ÿ±,*Ò¨s¶¶G6k›OÖ’…;r²ÛôÌV/"âÀ‹ïù‡™W¿¼z•ÉW¯?4qû6û­z0`“BtDZ´ðªÅûb¦zVÌ犹¬CÎ:Î6L‰’È_æûÝËÞíú+ðïªEôÀ7_¸ &Ùòýºœ»|ˆˆCÐkµX!Ä¡üÁç‘tlTr´¿½j[‹@i¡áÏïuSzÊ…NZÒFÇEv,cé¶߇Hè:;¥ò—WæuΖ7]nÙ|výÅÓ7“˜±:cÕ‚% b•J&)"CLq¸;$ CŽ">eIZp¤’ˆVV¼ÿñêë¿šÊ MJÕ©4‰jib¦åZÓCyÁ’©©þZÿðdYAîÝ_Tþn¿ÝÁ¢2YctÐßlZ‹àÊ'äÊz;:wR-YFÊtÛeD™“Ù¥Å`éù-Û‘d+@P'vG¯ž>{;ŒQÞ ¼ fx¤•Q’$Œ©žœâÀÁȨqÔƒB²—ˆf¤B©¹ï®¿üåÙ®TeƯÒf½+vuûÓNŠØ´Œdâ{e«¿½ƒ]ù½•íýƒ#&'Ù¨øpoÕ·Hààøë‡qÎjÁêaÚéŸØv4ÁÐnüÀó\GÍ`0!VÍ‚Îs×Ïž>~õ<%Ú9œ3C>Ò-R†^ CØí¥Q×qÈd,0C8)ÊMcKÃj_üzsóë÷}—bìèdk™ôjÜÊUf:\3£–½ÜrE>$[5,wycïÑIo{0èï‰YFì³I|Ôþ4p>Á\X~°±&b"ì‚A Ñ·)Ï :Ü ”˧w> R’¤ü“ɋǯžÄv&8ôLn‚ò‘òH½N_Oqàæƒqâ§ÇYÀË¡˜ ˆ5þöíõ»!oL¨0K–æºÓUYæsåiž’ JÛ<Þñ›Kó«««»kk›Ÿn#6e,ðàá®ÝX¸ßp‚•'¤(©”“óó‰&ĸYvþ¯·W~èø:H+«>f:êÚ±Ôµ*:€ ¥wíÖl„í.%š†1câ×|˜¼$ ãü$Pº>`4”²}à7™W|ú²m{2 HýbìNžŽ{ Í™w•†š0K¼F ±1{Èx§Žƒž#ö‰¡D*mœŒ,/?ü|ýÍoãy‡;iÜâÖLÞf†ªŒÅ2aB§_×vÅrIiŒ˜ë®2·÷=ØØ;–t’c€=s $‚¥ë4?ÜôŒ+ºµã ˆÅüjàیـHåá±Ü=?ÉcéX¾\‡Càe,7'>Ni«ù r #…ôç%ÀÀ³R Qšç~»™ûír cQK𷥡"„‚ˆÈØ(éƒúÝ¡p›.Ú%Å÷øGÐ\±®—PŸÐ-NÇh§¬e)ã&–›$á瘊†L˜¥c î\ “ã϶Ì*"%7H@½™ŽF'à7X.B*°@†)Qá§1‘(j|(¤jÉEAöD€Èò‹¿¹|÷þç(ë#Ǭg`EÎÔP5”v4åV3C‰ðÜ z WÒDÄrËquŒÊ,îv‚`usíÓµeÁ£œ\ÖóÊó婬 4ŠaÒñùèìÉHŒ™® úK’d[Hµ ÅDÀ‰$ápW§Bda8Ô"— DùîÝÕûŸFó®+—1S¡¬ßc¢ÈN9CKxåéF‹]• Ào‹]蟌Òx6ⴈע“ÖåFÈ&·>„I¹ÜŠ]Á¤Tó¸(Ï_&Qª³¸c,I¦;ÎáH²×uL‚¬n^(‰Ï͇_üróæ»W|PJ}„zUz·ÅÁ³ð†ì&QDÞÎA&œ-¤%e 1ìln×ÆŽ ‘œºÉ·U/5¶­—ÁBºæåŸFˆî24AàõD&3* ÞæR$ðîmDP*yäl ÌÅPTeôí÷sùº×Ä=TŒ0+šyÄ´Ì¢–b˜b“` B·–|WŒÛ¼|¬5 äLÓ¤8åÝ gx8%ƒ%¢î*sà £4–)¸žíUËð”ë™u8ÊÞK²ñy*tà5†YÂŽ¡Cañ.Íðë{ýl†ÃäŠt©YQ’f6DQÌ}¸yóÃËvÅ5³¹ß[º¡?sªyP:æñ¯ìÀ—Pª€gë· :ˆ1.¥Íq&€œ–vÜêFuÁ´f³áŠ5M|R¾gR­0QiñrÜ£3dœ½aš…Hò<qÈÜÓf8Ü!:Œ C£ b|NB0aŽ?¼¹ùëÜA““-5CÕ2„cF¥æ xÍí2ò Ù@p¼–/Ž_öCv-4&Üái y>ên¸ c–ÿ7ø¾t›¾Úa¦ò=ŽƒÉƒ(.')î¼ÐžY€ qJÑDœ(x›¢…9'¦(îÔp(tÅÔš…û俨EÆâ:÷îzî«ñ.¦›U_ŸR‰·žUÕª†¢Á%+±ŽJ…vA߉ÁÙ™ÁO’u„c8Õa.¢ly JxG VNË×nµÚI2G±à ƒÑ #\Ér˜ ?Hþ¢S(†uî✌Û/–™iÅ$¹Š{úß·W_½êÎÛ ³Ž ÷‘ÌZá ×?r¤ؾP  ƒ¸W”e9DÕJG㳺N‚é§1ŽÎ.Ò¨r»Q æ[âÐMTËæyøæÍ^’_äa’IZ§ã…°)…fðD[Âgu^§ZäÄ,5jIE-‡™ÌL~õîòù—§H¥nzU–PV=Tk5“,#XÉÊôg¦RhL[ŸÃG“Ç/.ÏGi/ýí2ým»¢¸ ñWU\Ivœ´ãvlL\'¶$ ˆðC@ ¨WJ¢d‘²h¹6 Œ­i³7ÝN§ÓéúïöÜûHI^EmI|ï¼{ÏùÝeº„Óî=ü6ÇÉðƒ¿TãÄä/­VaÜ|êžmG±ÕÆÑxè´©ð CXl>x~$ŠðÖ—uxÊRq™àõ.§Ë!B¬+>\ š_Õ ¾4e1RÞ¼˜õåKµNBöJ=ê @ÁÏ­ ÈŽWNrü®•Ùå®èvEk ¡¢”mq]yw½ôc(BID×|7`ðϧ™Ö¶]Ø÷¤E¢?è9 ü§Ë:¬ú²„è-˜0!@ f}™0ä£/ã“s±¿ÛPõ[bi¥AG5¹XÅTŠyC®œÇMxýî7ìÍÆ“|’äçÇ aÑ3ÔC´ß ¹t±éJ¥À²ÊÂ3.ú%î(1Íü¥kÂn»T×<¹3zTç„W4 ;Dä¯^ÑA†÷ [‰/D(3”£ªêÙ³Óó‘ó¤Qdäbã•ùeûæð ÓG¢sîæ–Ò £þ¤éÄçÇý,NÓ´7: <±H º:îv9\asÝ+•å¨Tç$S5Ip(Œr°#ŸËut`x‚Fa aˆä#¾ªÃz(U"ÐG=ä¯_œt97\"ÿ2›Nãƒ-UQnŸ2ª¥ƒ¯+¥&ÔºEβÉ*Ƈ®ôó$Íâ8Ëû®ß™ku³8Ú¯Íç‘¥Þ«,éaª†A+ê>‚!'ðDàzÌΜ•8OaiªÅ_¿¾¦ûg(±IÌþúÝ_¾ûÛŽ¢rP£ÍÞõüÇ5 xKa¹€‡"Aˆ€»r´"jPžj¦ªòŒbl·Ýøt’ö’,M²,ËÏ#Ú"ãðŒv C™««è‹Ó¯–ÍRµ¢KcþÊöœÈG>àÀ)9%ú!¢ œ÷~Q÷ø!\¿ªÃjÀ%C#‰ë¿ÿý4OÇúû+AaÀÂïý΋çƒAÜÚÕÊs¨TO?‘Tƒ¸™¯X¸¾±aâªmPcÅšùÈöó!Î=M“n’Æéh`y’¥2ˆÑ ~J­ë¦¹¸UQ K­¡,0Kʯ˜i¹6Úµ-àºïEDR4õ* Ê?zà…GöpEvC„¤çÙîû>_ŽºÝÉǼ…o°±xÓ'½$ºÏø2"®¬ªð5ESçÀ‰u+k›ªa¨uSž. „NÔÃþãÑM’4?…Ãû+ÑîþvÍPU„óf½ºˆæ%3^̱ÕB~†\ý‰ë9¡Ó¶` H ‡ F§?¾|~9;s]ÖÓw™*¯ë°>w×ýøÃ÷Ÿgãg_^ÿóM\NÜ&˜Í†iìÜU‹£«¨”]ª Á¹‡ âgk´R6)5µêî¡×ÀPy9²tô¡‘×ÚÛ5‘¬5S«íióÍ_óÉRö_ª³;-poaÒ›A‡dpÃÓ^®ŒÆ/{ @a¹-âËÀoí?¹cªfm¨²³Czê%¤*70bΚ$½VH“+$°0µ´Ñ.Uy8þãûédpüâðËÑ1 ÞFA¬_×a•«:oˆ§'DÜ»øñKälâs0ðì8‹ƒGª´¹1_ŸfÊáG£²Öä[u{MáÒ ’дץíà Ò,ÉDv$0¹vsïÞnMÅU‡M)D®Q!èä½sùF X7Û¨·ÕlC†–íÉ` úŸ.áħïÿœ0D†\cõ†*çŒË¾JåÉWåo^EÔPÚ²{+oiÇÛf&¤}'/‡ÏT±J ‚¡óΩm;ØՆ܃~¯å„y‹ƒ yÞÇS7ž$6ð‹šj¨Ü=Š)ê fͨ1#U{¿Û¸“~϶l7°[íVóð°Õ–ãE¿•d½ó_ró²7¹öÔ›:üc%á7À@ P)â—çPeâZí¦ãŠWý8lî(²'T}9ÚuµhbPÊÉ P­ÕÈöÕ†Á¬4Zžèó ÉÙËû Š"í¹­Öáþ®FŽ"×USUt“ôÖõù=½TTvºù q‰oi4-OŽÑøÝÉñÙË7o3CT’5 á­ßÔa“© ƒq‚¼™>‚'љ圸ŽíXX²çgi'|Ð÷¯+ÕÒÆéI¦œÖhàçF©®™:'…ÉëÕÕÇ8©ÎyÑëõ`ý^¯ßËóIÔ:l>ØÖ%‚Ài9°JNsͨʾb„¨T®‰ÁÒß9ùžE:6Ékpô~Ôÿöl¼2;2>C®÷€ Û“iqCA!Ó4ËÆ*¦§<«mYƒ‹qyû&£ijeYÎMS¯í¨sÿ`×ì‘w”;˜àn[/>í'9¶ŸuEÒŸ@ŠÞ° §lî1­“ë:5½ywml¢ÉhÂ-» È éÉ’Ôï[”h¾£ùàÙÃæåoߎ„q¢ b‚ÄŸ ƒçަ÷€Qp)A *ÅðÅTÐxB/¡”sz9¾»Ç= ÛB'^D,hÔ5ÓÜ¡ “1P—užN+Ö7ˆ,ö³épØë¥iWˆd!úƒQŠÏnoi2u5þj}sk§¡WµÍMÀÏÜKV¥»P ݃ èzÙÈ pú:»œ%rR DÊR r9×oÓá)Û&hÇQÉ‚€QÊ¡@¥/±,;_Dàrq<~<L†“IÒÍ’Þ`Q¦]Šì=¹?æ´ªV[SÑS•ª±VW䥚D(RhùÕÆn‹  Û>¤®°ùØÂleÜå‡>”ÜQMLþÓÛtXUš-‹ ‘O> g-Ú!º°’ø¼gÛ–X™åâ“OM"C…e¨ZC¦dÕ„ ÚVƒlAÖ/ÛmXN쥧ÃÁd4>Ÿ ;ƒÁd09Š wö.¿M§0ÒÍ:R‡ûmcCæ‚¹ì ³•D pçCÊ:×jY-DP’ø ÈÎVR”räËÝø¾<[‰ ¯ÞªÃ·”¹\:¬»ƒ/GÎá똃t´Zñl–G¾³gòùáÙl˜Åñ¨…½kuÌ™älq²‘áf¢#:~|>®\ ®ÑƒSÇd$\ &n¡È0k©òÐÍZÙšRvMåÓj`Ï·›¤@’Ò‰yq‘DD>#±´=ö|ÏBñ·~u»«‡‡që€ýû|‘°^øù9uC4·ãËYxÎ~ƒê Á0 ¼úªB)I'×0çŽ_øÌÁc, ¢ÙÊÇwÝÿ3^µ=m¤WÔˆ_Pߤ˜„l–„URHqæ=D£Œ´ÚÉŒFãÁ6ð$,#Y"` ÙËnÔD¢ùRõK»ÝþØžsï@³mH2 Ž1öøÞóœ{ιœRØôö«ç›;ë´' <ûNa”Kqf~¼r‹_PÑu ó©1WçCEˆU1Ÿþ/µ9@D’v{uus=—ze0ðx‚^Ѓ:Ä%«¤Y¥&â(2Q»YE.+̈ÉËÕœÁ…) è–ëënÇ­Ñ UàdÇb™Ô<ÏAj5 ÃÊõ8L†é†—{š`)›&_IG¿·¨Â˜/ИƽA?Áúå,Þ¬Ü/1­eæF0YŽ”¥ò±R_"ßGü[N¾ùb·´™âNH팹†10YLnZ-SaÊU¹Mµ¢¸ªaprêw,$·@vÇ­‚¥c=êm¥qÔüðEøz(q0?¢Ã'p˜2 ÃÕ¾CU ˜T ÕØøë¸C–¡VÛ·v·ðWß·î4ªU%D­\.¨L°I|µÛ̓i{qÞí ‡g㟎¶ˆî Zgyo°Ó§ôȃy›oT ÝQ=œš¾\ª4Gh˜¯Ï[☡JŸC†Ñî[½NÂÜ”1jvÄ&ôaês8|jÓ€¡DÖÏ(*vUÜ=ë½}÷gH³Ã,}?ßì&$¾ûh®^%j™äérŒ„0’Úär܉Ѹ°Öëm¼^Œßþ²¿Í/ÈÄùîÑ/ùùl3¦NÚb€ç-MR «ªxGeJ“dµXÄÀ’û‹O Pb«°q62hÈ‘®FºqÆê—`±c;,›—ýÃçp!ØéïLD ÂPo„ß²³Ó—y‚—0f6·½Þƒm xwéÞ­z šPã£tP•4])ß_°×¶:È ­v¿¿½9x>Ú{9,œ½ïnea’··KoÞÿøæÍ¯ûŒì ĵ=ó(†A„kô‰á•D"˜LW÷–Šn({…ës+@ÙYk°·–ÈTd¢ä´ï*0§õ>…à ÞhP-Ù}¡8q‘¨ø­­áøu)Oc‹÷ÚQÞm‡ÄÁqšOÌÔD•O³zdfv~É:ëkkY»ßj‰ÞîÞÁÁÑI©ôòäýÛw?/^ïííG¯/>Œ2Ùh}¢ÌÓ]¾_¯Š¾ˆuJräÿÔ΃EÓ§ …q7ß#ÒþhÜ ÕòTè¨ô‚­ š€ÁøX%?‰Ãì Š †ªº²‰§ƒ‹ý—)#ЧyÞ‚\‚õ®Ý\¾s÷þäÌF×É»ó‹M¦õ~Þ]o­öòNžwV7¶Ûikp|4,ß¿ûûßþýÛ‡×'¥ÑÙøx=€qe2t…»7 …\è]Ö¯ŠèãìÓG®/ó ™Å щü(놧ç]aA¨^$ÙÂåñ¢3‹ƒÏœø+†\¦ãS}D0©Æx„qÚ;;ßëŽPÑ2ì|Ï"j1þákš–./,>\"(›`–õ׳^0äý~+a˜^=9ß;Þ?ýó닟Ƈ£ÑÉù:Àô)š€ÔçÈ#®Ùvóáw·É2e…þ«ÖoÎ-4]Æ1¦… `ƒãøYébÿpÔ¿òcd¶áÙf<@[fS<Ó|ö%&lñPßÁÉ€Ÿ%:ª½|¶óãéþ ²˜5àpBÑi'¬Öc0”‹n€޳N­u°`1i5:»¯NÇç'£áhoïèüU9HÞsõè²@‚qÆãåùonO’cår½qãæìÜ“%‹çO:@eQ0R$ƒIëÅÞh§Ÿ%É4BÊ ¹žø…)¶9ñEVH "gÛ~¤ RHV ŠTvOöº®a`µC¡†Å 1”]pD„°úÖPy…œºÝnæ:)0H»£‹Ó£Òîðä ´“…—W3’ð^PºùøO‹ Oþøô»§ —L-ðN°YWw'/jcBEÕéuRuQvÙ‘è‚aF?ϾŒ‚8XLë®4QxFB?N³ cÖîö:!'Ÿ»è‹RøòÕA03ÇÆ©&\iÞnw»ý…-zaöâpô¢4:Øí¦<~¿$!D,§*Ô‹qÞf¶ ÛD1.—dàòÄÑ@8'ÆÜaBêŒ'šK¯³° óïép +"%’=ñYd? M"%…œtDœÁ6)*a`j¤A¼pô@º ©…ïf­þÆZ¢´"pµG‡Ã£ó!b©Ì{Øl¨ð‚P&“Fù”Öð£ot~ %ÊñèŸXÖªlŽ5’ú`ho+_ƒÃ„ÄN𨉠LBQ,²h‡ hÇcðOÝDò„KP„ŒR­Oú#)³vO? r¨í$Ü3ðwÌÝÚááñA—¡T–$ѱFG¾‰¶«sàÓp9x_A…¿0ÕÈ€â?˜e¡ýÒ¯‰¯Âá™~Ê´”P<›€5ÂÕäÀ;°ò´mw>#)y’àgq’°+&C†RX×Ñ ý‰7†y¤}èÎHÏÕu,‚Ët+ËèÇú‹ ¸t’1 44Ed”ä~S$ùÔ^ù:&¦Ô0”R6Ó3+f”é ó ðx±ÌH¨a+’¬Í ¼(”mà#¡,®òi6ŠŠÑ2§Ý”,ˆäulˆi"CJ³´ê¨˜´H—]}-*¸ª(òYhŽ”áÈ84…”¹øÄšþß~¯ÃáÓ’Ï›  ª1—ìËQåˆdFb­@²÷/j&Î_—œ/û*µ+(☀<0œ‘HÒ«œ¹°7dÆ(D*H$˜H&…ƒëÜZµA­ATÄÍfíÌM–Ä 6ôûÍâó8€²œÊ-pO¡FA°‚ ä%ºwHE†ef1ø.$p•+¡¬~Ô[YÙ®’*Pð›@Õárb¤EYU.11~©(ƒ˜|Yà Ô™‚HíYðAÅ2,^Û·.ƒ$Ÿü®Çá{â÷H!÷iÒwåv üÛ¿tü8Ò°©#Ž(ìÄ Âézô<Ö"§óÜE̾?úe¨1G>ߟ&‘æ6Ä4ᾂ€Ãñ·%>úaÁAÿ?¤WÛn×ÄÀo‰Y¤bI@ÇÑR2o;<—™!©°5˜É‚óìÇüŠ"N>5Ý]Õg舗]j%r—»³sNש®ª A]&ŒÎ!ØÎ½)¢e¨øîÇ¡úYJf;i ÊưÃCÖvè<ŸTD] tVÒs‰ª¨ž®s¨"r=loЄ¬ÒºM d>êm”RK£¤$MXצÀI¹Ñå€Sb÷"n ímýýÿžù0{Jó”Ú ´&h¯0–Èf#ãÈØmªM³aÏÜUdòÆk¤^zA…‘‰ú FèåŒ –Ôõk€t¢¨™ ¡;Š}‡A[*”äa7Á+…"®h6iG…x ÙÐŒlABÞn¥ì–*hÞ4´ùå“4½Õ„Õ’ 4 ³¹¦„O¿üSFU~UeNç“ÆäR¿kÛHBŽè$ ´ {¤HS#HC¶ŒN‰²ÐÔÑþ]µ>„CeSgkÉ”9Ê;‹f·ìJq1 ;˜Çf3:„è'’–J‹4Lz„#B™aíMð-‹SèGœ%Ma Ó²£Pbc0ÃOîxP8þ¥>ˆÃLj;*Ñjû~Ù3F1¿¿ñBo2Ëó$`Úh=<16?ˆøL¢»TJ²[tP%R »\ K|5Öúð`Lˆ4 ÝaAĶ(W)¡QÁç^ñ(Õ>qF””qü HmdP´$jÚLz£š ›LÉ6µªå8ú²¹1!œz%[˜Æ"ê­0ŽÈ½ŒKŸÌ†ÈƒQˆ€s¨yäÆË¢^á¹);}eןG‡-p€g(í³»&\)éaWÀÓÙÃ4•yÌÒsÏìËh<Á5`½Î*h%›^z\ (P?l–s˜5ˆáPâR‘Dc)Œ;ÕðƒyQ+¹§ÐGpøpõÿ¼—à(6›“\£”Y nÚ&0ùë†þ¶RØ_òZ'“·NqÐh9R å! ¸Z¦27˜ñjÊFÐ5¥|pUS¾2jßÝâPýì  }úEð@é.)"’}ˆËl Ac(ž§*ÒÙ$ ‡ª =‚ÇÚFM*¡ÒC b¨ŽX„š#PŠ,5zL€fÌ#–rG‚Ú“(LdªÆ̼‹À<š†ˆÊ)S‰F «^qâܨӃˆ¥©ÔÚdØY6Ó×µ,‰‰P(*â­ÑS£J»SiàP`› ؼ1Ýi™ÛáPÉ„í¡Bæ,)ªù2%N¨ÚïÓ¼ù\´-Ö ¬^Jc‘GõW£'0Ü œÈò¥QI¨8'@£y4!zæ‹È“ÁÏ W«”Ü_åã8|TÓ õ9ôÒ2zk†·ÕÂ*¥-:Ùd¤€ñ í5õ4È;ò=`W¼Ñ¬'WP—HKâÊ&Á¯m˜e¼ñ FªÃ€éšžæ¤î¯vÀA$‚©Ö\“è¾y˜IàBÒ£@޳ÌÝõ&C™6XƒÑ+(ˆ·M{Sc¢jZ`5i$"¤7,xZ4*Ôç¶QŠ˜ù¾¬p¯8l‡ƒäkÏNìËÔâ­bIoew†‹ÌEêk †æ&ÖÍkg4‰‡lŒíú@l`SI-ñÐ#c(òd|²$1TfÄÐÆ÷‹Ã–8ˆVÎ4T] ´ÎÄG?#Šeb?¢INbªêѨ6f\–!÷ q8g(SËKÚ[]£é¢1Æ3¸E/”r`ÎTï®ëàÝŠ÷`ðËPfÏ T —h}s1- åO‚¾×P3Êšñ!x¯!¬î ûžÇÀœÇ-饗í±F»Þ<‡mq8劌VdRÁ4ê²Ióèî%ÀÜQxi~ ‡•|p‡ln[²ÿÒ Ò–°X€¸)ÕÁvÂ^ÁJ }ÞÎiäö8T?ÖIÄ̃ª3…êR1O,ì^ŽÐÙQÎÓ“?ŠlÚ f—Á©GöØKRaSÆ’¬ƒó•œµ(1=ö8h®L\%áíå}"V†“‡Z¦]|…à¹PdãDýÌl $‘è4(#é!xl¤M†ˆY˸n×RRï!«Ø ‡jväT;÷uza^cßÔµIAS„TͶTT4Ô€W‰œ™¬J](‚]0ë e`îGƒæHFXÒG™{â}CæSp¨ž{ï…ˆ”BÁ“™­½££Íw5&Õ™ëÉł͒˜ ´v?rwBߣϳ%N"S}c=7[™ýìµýo¯n{ªnEä5…[+°rº{Ôõ€B–JèqB¤ä]NA‹ž ¥Á݆íïL`¢öÁðfö‡¹jӼܢ¸p<åùÅŠ¥7âa‡“iØ·ZºLDf~jòêýx¼ ˜[ ÷ÔÊÝ\rcˆÞ•äa.hs(’¶é·a'löŒ.v´Ò2æ("·6Ó-^Ÿvæ}SÇ3¨RŽtæ fZàâ]ÓÔô•Ý£x s£†[MÑH–ýÓV¥í„ƒˆ%㜯VŒPå:y|´ƒ€öà ™çÍýÖ`R*‰Çës|Í—Å‚ýÞ>T ÊÄ™4Ý¢@†®Ö¯¶«l7D#¼—}¸¤dEÿáÉ'J˜K{v”U@ã¨Uè Þ8`®²¶k’£„Fñd–œoÐÙ¶zR¶„aWªyœÁ oË{#1)“Ì·ùÀA/Ž_\&É×Iå6nq˜`%2æêC€ØJž‚CõjÝrWL,<]FãEŠòÿ“Ðd¤À<Ï­M.šœ=I,nu”ÒñÖr‰ÁÉ2IÛõ" £’¡­Ÿm]ÖÎ8TÿšdÅ¢IH-–î|jš{$¸!ÚlU>nÔÀ° &…4ƒ‚¯çàÖShïNYàVœš¶S úaúu<]þ{ûªvÇ¡úu¸ÇaÝu-ˆš-ÄÖáöVCÑo¯†³jòØKðñ>+/‚“ì÷:Pf¨è–y4”£Q}tiu½8úm‡¢ž€CõÓ8úè»¶m²çfKÖžví=Îæ†Z” 5jñò=Ò'8vÁ|RŸ-9"2ÿNƒ ˆ"ë^öÔëñWÃéòðhõØ„ùå8T?½ÞL“€0è][ë¶@š \ùc±E áÞ*Á¦²Ùcf(Ú{¼‚/DÆMË¢†Ò¢†¶¾Šl"œ]¯âù³ÿìTÒ“p¨ª½ºé‡iœly<+2 ‰4g# 4¤9»³¥RÇÔ¶ëumz寒„‹,“CšÝS.×ò±º|MK5+­.—‹ë³.®¿ÿïŽ=‡êB½cÜL›id›L€c4,†µÖ%*"?<Ú¦U£ÌìÑ6;ÍIr+y–ŠÚ–¡eãÛm+Ø›€}ÀzÊ…¾kêÓ£Åâú´ÎiuðÝËý»ÖóTª_Çöüry}tršµŽQÐØlôð‘7´–±^¯ŽÒ`¤þ‘‡«/õ«ZÞ脬ûð0°l™A˜ä¶]ªÏŽ—‹Ã«• ¼Z|õúÅþó½¯w.çÉ8T¿ýq•û¡©Ï®–ÇÕåÙyjºAÑØè¹zQÖ.£µÌQQl ¡aBú þ ä“}qÂïÑ!*}h„ks-°\,NÏS®Oà›oö>ìÃàPU^¼úîÍÕ… 3íÅñáÁ›¿¿9x'ݲºH]/¿ÙÜl6¬ ‡\Ε¤aIrÕØµÐ޼]vð9ÐSd±ëxqz¼<<<¼¾\…œêÓåßþürï›gÂÞÞÎ=ñ¥8T_ëºÏ¿}ý×·Çu»îëå;ãýˣ˳U²hºT°QŠl”Óx±Oì=ynÄíï‡ )í´îÀo¨ô½Ü>‡‹³“ã£åâÝby|z¡žº:>øþõËýçÊÅ`ï)=ñÅ8TÕ?°öÞóý—ùêhµZÓ¦p¾:=¾>\¼{ûæíìúúêòäòòDOuAõSeÞÒ§“ƒ÷ïåâÕ|0tõñ»·‡Ç§«ÕÅùÅÅju*ß»úûåÖÓÆÅqýàV‹v×w¬b ø ¾‚qb\ˆ‹@ª„’8¢ ÞúæÔ¦-|Ìž™3{3¾.³MæÞµwwΞó›3gf*•=°E µáΛ&LEýJÖŸŒÓbBàFÐU2¼œ¤wþÃÁp$žØ*• {í}3t#”þÃzý]e7/—óù|:Ê …Ì.dv&íFÖãéTHTÒ™:̈§Ç̓6`ÛPwªÕZmÿ ~ 3˜‰pu7ïOFc4Ø«5xµÎ€Ü%ƒ„aTÒ¤d}ä…ÃáH,M¦üå,-°ê,8¥˜ÙN Bª¥·’‰h4QHhj°|ptR«×Û¥Ìþa“N”t¡úö°Q‡Áp–É•·SÉ($@ 0þôH_\'ƒd-„ ð„gLSãøŽ%’›©Ô–¿T†œ ÙÀð4O*é­T.›Œ% 鸮G÷*á¤U<º]Çc‘H„Î;c7í3=¼Âu2ˆá)žiÜ=+9tÎA7‚!Þ…‘øf®Öl½=iœw/ê…|i§v˜ ¡-ŸÇ/!>üøÛ`¤ç?^‚dí£Ž“óY£?BV,Lô"e Y¿1®Ht;Si·«PO‡UX™à· …4 qªXé\OøÿüëeˆáÀ¦PD4ÝrþŒÈl¡±kì:͈‡þÁ €ÛªªÁ?HÕÆ’ÂH§  eyc;Û®ýþRÿEq ä Í& ÍüŠ÷YðšÊh™w`ð:‹Oh˜ši€„ /Ñxt߃ÅôéûËÞÇ—{/Ž!¿DiM Y]¨cTf*ÐHx”˜3šYUh[£È² ó1ði(¾žÜÜÉTëÍÓîÕõÝ]ïJ±ùÚ¨eÊ[Éõ8Ì'ŒnL+E4>0t£êÙfͨ†˜WÆ< U`s;½Kt.¯‡Ãaï²Ój´¿Šñ\,Øsô‡½îE«Q;+6ßyQãñ;úšÏ+œ‚5;òå!D‹?Ó>8lw/{×77Ã;xÃQ½ÛJÆÿå·h„üs×ÜÞÃë«ÎEëMýÝY6_JÁz‰® ®„pMÀ ^ÏÿlñÄ&66ý;éL…n£Î!ýoú7ÃÞUç˜n)JÑHJÌ'q^‹ç@È¿ÙjÜïÝõoA÷À俦1\œ¶èÎã6 l¿Íæp• ;‡ÌY¥R­ÁÖ¬Ù:¾è^õ ãúƒÁ ?x¸»¾ìœC†íå¶7q@GL(‘>{ÁfÑßÂáõDª”Ï´÷ɇ«Þð¦ß¿¿ÿüùË—/·ŸMÐï÷ ŸáñÞSÝÞ"·û>Íý«î9$Su/½ƒÛ ]WiølRUÕâKä P=†bÏ&¹ä¦¿”fû¯“7o›°:‡ýfçC§ÓévºÞ_œžÿÚ¢ÛÔw°MÍoo§¬¶°¥ØQUQ9øš Lžq€¤P÷©ØI¡htd‹& C‹Äc±+ ´ †Øò ¥)´PxP§“‡@kE…b„¤² “-»›Nì¶uK1ž= yËЬÀN幡ØÒ¨#Õ„`=i1ò,Pžs EÑÞHt$`KŘ*Æ€2¨E!Õp Z ü„‘a¬ðågÕˆ›ÓPÍÜ0†‚¡øÉST«â@µ( #7ì¹`e’Á©ÁÛ<0´JL£¨ÚCVÌš¡ØØ°‘°L+çÀ«``­`ŠôÞªý18Œ~pI(É%9 $”P®´:{3$–ƒÏ…F¾•Ù›¡Õs c¿s˜ao†$”䀒Pžp€õºíd…NòËs°Ùb[»eÛ·×Çà‡X1ø¬Ks Äg³å›üësxz¢§ßÓ9Ûñ™ßOægÌž“â«äðd‡0•ƒ90©çrpÚ³q^‡&׋ƒ#¬q¿Ÿøß4¶l"f–¼Vf;N6O—å`µ¶*³Ü¾Vv猱×ô¥93«¬£ó÷«à°@}pôèŒys¼:8çÍÉÑ¿S拉ësÚŸËaÜžcá`s%ñ-9ŒI®'—ð[r~4£GšÁA°½Êaä¦ÿ|3ümoºÄrøÿJr@I(É%9 $”䀒P’Jr@I(É%9 $”䀒P‹qx\RîZyiMßRùÜ´òÒ·ñróxNz|ÉV^Z›ÛXr@I(É%9 $”ä€rÏÂNÓŸÑj†žÝŸem¡KS;äš±}¦<>£Õ =»=ËÚs[“­{ÆG2áÝS=7[ñ¼€@Ø%ã8ÉØ\܈ušîÑt‰à0þÒyF&=Bl6Œk [3b&N[dôm8Œ¿sfc[莋Z#N\Z‡ …o„ðþ³q°®-hí™ò 9,?.Ȥ®4Í,gm’­Ur°ÏÓÞ:§qú¾´5ÂãõaÒœ±šõÃø{X?bwÚÕ|Á =›/VÌaþã+ZOÇiì«ÓÆt}Èóg~Kؘ.É%9 $”ä€ZÃèq)ù\µòÒš#ß’r×ÊKkb8|÷’P’Jr@I(ƒƒ”ä€~)‘Bý7iæV endstream endobj 246 0 obj << /Type /XObject /Subtype /Image /Width 239 /Height 49 /BitsPerComponent 8 /ColorSpace 561 0 R /Length 489 /Filter /FlateDecode >> stream H‰ì— –ƒ E³²ŠÙCvÀþ·2#ß~*OÛzlxÍ5+âÒÒÒÌRþ¥Ø©$ˆŸÚL#µíŠ!ìhâ×jjÖM*nÊ–YÙrÚ“6ļ›ˆíë$tŽ ðcDq1yS¡¨ŠMƒ$Ô[+“£C©ÀE[P 7íëÕˆË(àNÐÍׯͱZ¾d±¸¡SÝNBgh]†Û­i–ékpgh[£‹pgÑÂýf½÷“R„UJºÅ*ÁÕ¡&?YÄrÌ (I6;k•âæ ¤åãlÐée³³V wá.ÜC\÷lásóË@>Ø‘œ£ ¯`= ÉêV\òÔ`sôÌ>4=:ÄõV eƒC«,.@-.8‰¸qÀ_!“6\Tn‹W.z°Áݸà÷ëpõõ¸n.k ླྀX› ÊâòÞíÃ%ó þÊåqÓöá²)nSÑΥ¸¾È-V…Þ6§E\6“S\yeÖÀ3kÀÝY]†kXÂÖ‰K°œšsL¬ØÈ«pñK“YÄv³ä·ÍZ\îÑhõn«žÿWÖç=n:“çÇͼ÷ è͸øéŒ{Òê \ì)‰–ÍNZ=‚;Ž®¤…[T nv᣸5AƒŠã>2¦q1I î·ë•¸ïÑ_ï¥{õ+Àÿ¤)ä endstream endobj 247 0 obj << /Type /XObject /Subtype /Image /Width 26 /Height 26 /BitsPerComponent 8 /ColorSpace 561 0 R /Length 56 /Filter /FlateDecode >> stream H‰’‘Á Bq7™P7ì@fpÉ0@i2¸MÃ*ƒb‘2$Ûƒn12XÀà–qÕ 8íœ6 endstream endobj 248 0 obj << /Type /Page /Parent 677 0 R /Resources 253 0 R /Contents 254 0 R /Annots [ 249 0 R 250 0 R 251 0 R 252 0 R ] /MediaBox [ 0 0 595 842 ] /CropBox [ 0 0 595 842 ] /Rotate 0 >> endobj 249 0 obj << /Dest [ 152 0 R /FitB ] /Type /Annot /Subtype /Link /Rect [ 135 609 164 623 ] /C [ 0 0 0 ] /Border [ 0 0 1 ] /H /I >> endobj 250 0 obj << /Dest [ 422 0 R /FitB ] /Type /Annot /Subtype /Link /Rect [ 294 274 309 288 ] /C [ 0 0 0 ] /Border [ 0 0 1 ] /H /I >> endobj 251 0 obj << /Dest [ 411 0 R /FitB ] /Type /Annot /Subtype /Link /Rect [ 465 274 484 288 ] /C [ 0 0 0 ] /Border [ 0 0 1 ] /H /I >> endobj 252 0 obj << /Dest [ 89 0 R /FitB ] /Type /Annot /Subtype /Link /Rect [ 290 148 318 162 ] /C [ 0 0 0 ] /Border [ 0 0 1 ] /H /I >> endobj 253 0 obj << /ProcSet [ /PDF /Text /ImageC /ImageI ] /Font << /F2 581 0 R /TT2 838 0 R /TT4 840 0 R /TT6 536 0 R /TT10 582 0 R >> /XObject << /Im73 255 0 R /Im74 256 0 R >> /ExtGState << /GS1 843 0 R >> /ColorSpace << /Cs18 555 0 R /Cs31 583 0 R >> >> endobj 254 0 obj << /Length 2907 /Filter /FlateDecode >> stream H‰ìWÉrãÈ _ùu,8šhTaeß<’9FV;Ä™Kˇˆ°IÀ–Ýgÿúƒ[¤¤‰ðÁ¾9AÔš{¾Ìúa»ú¸Ý&ʨm½Ú„›LEð£A…«’4´Q«íqÑÞð´úøû{£žÆUFQ¢¶åj# ñ¼ú¢¯ƒ8ŒõMk±¾ ø¿£¥Û1ÈÃL—]_©8ÌÂ(X›8/€¾^Æ„¹Vv£Ö°š%ÀÛêŸèߪ=¨[מiwþ²ýãÊX’ >,mfÓ°(X\Šå‹B“áåÛî+Už†!Xça¢«vR?ßëøÝÆ+5‚æðOô45íS° \‡eå‚uÓ!ÀÓ•ê+™] äÁÚâÆ?ƒ—Ô®ûƒC­–E¦¼SM«&g e×î–ÉÔ ª«ùÀä¦Ó¨€H¤Ý@ªG ¤1©Ú^‹ù Ö”G¨éƒ~AÕáM@} ‰þþ˜TLí:„õ‡ $’ –#Á$!Ø‹LK#¶nšaj%Ð÷1±ô~‡Mhfäy²“µan³¨‚ÐÞÕ*ØþõŒoæÑ&áì¿x‰/QëóP`g‹»& Oœ¤ºkÕ=ÈRøù·JÝv»Ê‹"±þ:rÒ$ ‹èþh!¬crñŒÌéPต=Õð÷ȇÙR€€ hg¨Ôo0¸]–ݰ“ó-åN&'=§Ž9½a| ¤pXŸ+ Oظ Pé[¶Ô(—Àtnë]Òñ²KH{Qj^®$]½QÎö³'YKTLt-‰!óoh ´;Z{ûk¶²õ©gÙÆGŒ<«Á)àòAär_]Ãëþ8¬Ð2«>q„þΧ‚ZÛ0.æT¡4Ó¿’|1‘O˜$ãtyJ†3Ø‚5"£±Ô÷Á:…¬)„^GRÄàÉýj8b=}z•:IX¤g”Mì)ã)+Ì”±¯J²Yªë† œêj§v² È„ƾÖÂd§(âRð-JW9ÈЬ˜$Å{òQÕNsT˦¾Æú„Á §ÄM£ê»q’r¡Rϲ2ñ‡b/Ö²Øòì,:ç)k2æf²`›¯M‘¯M"÷x¨^Õ§:¬„ ÉÒîºçª w€£”Œ‹.dÝQnsÙjyµ©0'4˜0Ë{lZÞ¤YSó·­J¦ÂÅj¡î U“¹²±²|m>žda/†d!ßE%›Í #¨4ö®­¿¦fš3¥àL)(S¬d  +W+¤dŠbѨ(„îŸ~ úDø|µw¶-cÁÅ]1r-ÒyP…ÎÓ¤‚„ÀWFF¾JÈá‰iÏÅ úì6ô<£ý뾤9ß:° r„R™5Ó ¯<7‡ƒj»Iñ¥=qežü-/mst¢…,tíZE©X)ÆZ }æû¬*äá”ã R ò¹©Æ(øv-·8ó1u«útP5¤•š׎5'Y5 M+;‘p¡dk©h‚õnªÆ³ÀÂ|µ÷Ë5HduÃßÖ^¥¥ÊÍŠü‘°?žÉ4õ tJµI… ¿XPx ™H_HG>‡1J#O [š»„š;ËUÎöŽ˜Y›¹ÒÓòžØM€a¼¿kêúLÄÚ³kùlxY% ü“ &Aÿ*ÅÒ÷|Ñ·î `íÿºÄá&]®, È¥M¡¬cAÉc4‹¨c¼•`€ÇÜÉa5µ o£»¶à¨;_†ZÀsȉG!!HƒðêÐ[|©ñ‡§à:¹ Î4íÄw˜Kßf.Ï eïÄØ/pãÐüñ"—Åô MdŸWhŸ{Ì‹ÄHåP9n"7øŒ@ŠÀ˜{:"Ùñó`ÉÌ § ?ª]U7mµûe0ô^I¼W cÃ+1`Ë:ˆ~ ›÷rqñSÏvâ`*vðäíÍý©Ü:s8€Þ-ŸÚ_&%$!Ÿ¼ðÉ ´3”%±¾”øóÞó’‡ìpÀÓ·ýpŸ¡¯®¶H=R¡NS=¶rØ×ó¾)¡f ×ç]„ÜëÐTéys­ñ¤ÝUçÓÝì¿¢¸üP†Ñ4žÑôòÇñË ›ý”ž¨Ð zJ]~iHGâÏã™)ÊPÙ–¯t£oZ\ßcÉ“pÛaB jàÖVËk iñAº</NAe@}-=füa¹Z¢+­<ÞGYÿÆë=0UW¿"8–fPs*ÁÈOžI„!¿ù1#7ŸH¥¬Êµ¯L–ÞðÜ¡˜9]ÍåuA=¢õÜΛ  å…èú¾ÜîÝx‰â…ÏXQ ÛQVÀk?RiÜ´>_è[vŒÂ…®ÁÁ ÃÓips×^7ðøzÐŒçÊ•º  å’© Ž Š† ôË]Æïô5øFíâ½ úCh%u¼Ýù÷\¡_(;÷ :¾3°Ôdú@°Ü´ÈäpÓ44§©R`%Dh°Á8uT[,%K ÉRhÒ¦ÐWw· U =”y\L@i”CC`•…¾)µX/$XϘûE_S>…ö‰F>Ɠ͘,<læF¼û!_£ 2[ÁÌåM¬ðyàÜ,©Y„BGŠ¡Só^vÁŸ]‹`/ÈK°6–Õ³¢›Ù€="ÖíýÄEƲThQÆœ%òçS²î÷áºêAœ9I÷Ýóèß6;å“W>æìOgÓ„WéK9¢ÞËÏ—a q˜‰F?ò§¥°ù¾ð‹iþx ¸èóÙK4È](FïŸÙHƒãˆR/FmìtËÓ0 M·²­ÐbZCرñ÷þôÒ¶|1S±XÐ'ò}ÈLT=¡òÏêÍ<+¡GHšÏÓ#únðLH†Y@ùvB–¼¢c‚g^0uMçEVNýrŠk…qKP³ùëE=É}¦ÚºùêP$©9ŽÐЀ{€í ¡` 7mYñÛ«nªÃX‚cl娽ÌtÙì`áyß”{*‡5bñOœb©EŒ}sI]*ò ܸ¾?4DóRÂl†2iQ]KI…íi«ô†ù×X1Ntw$Ìz WHJH>Äe#B^\…&´@1„„ÛvèF! Pmi…úívõwÀ7F·:Àµª €Àd€åqõñæ]åu·úóÊ(ü O0hÔÊFPr0ÐG­m&…ª—]ÅHÂ@°ç)¡ÐX:Ž•36è¢c£?áÁînq´ „ÛÛË^¶¸‡ñK̆íàõ ¬…&8ã[˜“ECµŠ­³˜nÇÆ,žU[>&h):e0v؃JËóHù§k æ¦ñHQßKòŒòåUó£Æ3‹%~Ô7…Ø´%zSJHƈ„XÓ#ZRMl0(~Åöƒˆ-„Ɉiû”¥»iV@¬íꈚ^ñR^X¡Ò{o>AM=Ïl-í ³¾€¬W^—7›”=ÒÚ¡Ùö ÂÁ/!DÑÕK&ÖEb?øiÚ endstream endobj 255 0 obj << /Type /XObject /Subtype /Image /Width 192 /Height 117 /BitsPerComponent 8 /ColorSpace 555 0 R /Length 746 /Filter /FlateDecode >> stream H‰ìךª à†¶û¿áSÈÏÌŠÇv¾}ÒPy‰ÜÛmêÀÍÌœûË/]Â+ùÿcÒdÿ:›³,ï­1Ò²¶0ÿ’·Ò²RØW¸ß—~ØÏf~¡þ ®¿iû ñà|B<+ìS›AW4yz¡ þ\þ¤(^“6&r–ýË.Þâ¸…íÆŸ‹¯êå ã&αû~O÷‚û_æuíy°kâ­Än¹ìÏ×bãl>Í:Ö{°õÇQÜOTáHÚrÑŸ. “+ùÃÚúãú´Þ îO•O—§ßÅé\ý[ýµú¿Ñ&T³ŠÐJóË_õçݱ¿:ÿi•Ñhz°Ë§!ÐâßYLš@i0ƒFÁß+ôM£P¾þãYÇýh™ Ó÷nê_]ÿI57çöÏøc çöMù—ßÜI ¿_dþ`Ù>?øÃ{FÈ·üÿ2oV¿4ê—Í÷ù‹o ‡;WjÌÆïKQÓX ä·ëMpá^¼6±ì±smò­xß]ý?>™îÿÐ&øWehF{ßøÓ9ÄŸ>“ Ž;ËçOh¦~ú—ü¹Ü™î¨ß•ꟿ7²þ8ç]ªi|Y› õ—˜ÿ•ù3MÔ/õËFý²Q¿lÔ/›³þgÏ|ÂoúÅšOø¡›ÿ©~õ«_ýêW¿úÕ¯~õ«_ýWü=ÿƒü€ßv«þ;ðõËFý²Q¿lÔ/›?ë¯?µõ¥“¿úÌböûŸyžz~Å¿ßÑòðxîÂŨ¿Ò¡þ¦¨¿Ò¡þ¦\ö€ßÙ¸eþÐŽôâο? ×º¡~Ôçß?)ºeü©ž™Bü¹Þ@¶ôÄ1ü@ÆÇý¶æ·ùtpfó‹Îÿì‡ýú#%ŒYÿýùx7Îüo]"7,™üD9ãúOüåõ?ìõ÷÷â0ê?s´ú+êoÊßõÛg%æ ÿ(}üÖTsÔ”>þ1¢~Ù¨_6ê— õOìŸ3ßâŸ7_à¿O˜=ÿü^šN endstream endobj 256 0 obj << /Type /XObject /Subtype /Image /Width 239 /Height 62 /BitsPerComponent 8 /ColorSpace 583 0 R /Length 455 /Filter /FlateDecode >> stream H‰ì—’ƒ E“*÷¿òv@¢ÈP:ym¤Ìøú €a̾iùÚ¹ßnæ÷`A…µ‰ó±[¥ý©„ûF qù¨Ã‡®z€]¦n¢ýñi¿Ó¯Çëc­ÌÝó›ô˜»Ôe ºØ>w÷=‡˜õT¤Kƒ`ëÊì º­l{’Šë­Ë²ƒ{Oß¼ÝPÐÿé»65ϺOýßýHW%¦kº‹ë¦•]Òô¤«Xjî‚-Uëè†í@qyÝãÖgn]$³°dû¿|øo›J×+¦¤ó‰J8WºlP#ä¼™ø”º/âÔºxLvÖtÅ fž³ê¦Õ˜—1)Ç•yÝ6LW ¦kº¦«“>]Ø´Ò£ £Cú‚]Õ,©»£ïÛù`ÃÒ~ endstream endobj 257 0 obj << /Type /Page /Parent 677 0 R /Resources 258 0 R /Contents 259 0 R /MediaBox [ 0 0 595 842 ] /CropBox [ 0 0 595 842 ] /Rotate 0 >> endobj 258 0 obj << /ProcSet [ /PDF /Text /ImageC /ImageI ] /Font << /TT2 838 0 R /TT4 840 0 R /TT6 536 0 R >> /XObject << /Im75 260 0 R >> /ExtGState << /GS1 843 0 R >> /ColorSpace << /Cs32 585 0 R >> >> endobj 259 0 obj << /Length 666 /Filter /FlateDecode >> stream H‰tTMoÛ0 ½ëWð( µª/ËöŽ]·!Šm˜wZwÐb'õÛ™ ÛþFûƒGQn“1MŠ|ïQd®jvY×4ÔVÉʃ‡ŒBÉʀ˥QÊBÝ3E±iË.ßѰ™’J9¨×,‹–¸gßøµ°Òò•@ŸåoD‰¿Éu3‹Bz¾÷-X饙¶E‰õy&´–« C¯wˆmøWJKY­0Ró nÂpZñ°ßë‘»Iܵ“È%LVb_8'­YèG¶6ÒUOLK™s)¼t\//óTÖ§²FÆçXµ¾ŽikÆAÔ?Ïp•,Tå–ˆ ò熟pVÑ >ŠÌÊ’O½Ð–‡C7ð) -Æ–³\…6I‹y¢½ôË=d'´\´"L}׃È<"­„6(mØ ¤VhM"~÷úû0,þ–Z¼ƒ[¾éÐ…jùVTÔ•,ÆAäŠÛå°N¾[óÝx?CtóÐ4]¬vÐ!Þ”0 ü8 ¥Ýš¶I‡÷/è´s;Ô@Db*5ç@KǦ&µfQ[F+ªáÐÂÐлëCTïHAIÒ<¿ Ð|\ßA˜ÉžÚy܉dü7Äò?ɉ°!ÂåaG„=†¹ûsí’ýØ´Ðtó~RàЧªK/ÂÔ¦`ª(ƒ¤×¯ØIñ³ø(yßýYªƒó>¬»a+ˆ ¤Ü·5Ó\R 0£=ä^KÖÕAf ˜Z¶aWõÙ ¿Ü{c½Ì äÎHëã~Ÿm>íPuZù*1{׉5l¸D8à¸ßú5v×ð‡íØ@þPxhœ¢Í{a]|¼il$UÓÉǸdaË–Ý@m¿˜.*iÊ´ZÉËËôµîÙåª/r¸ÙgöO€“M É endstream endobj 260 0 obj << /Type /XObject /Subtype /Image /Width 239 /Height 148 /BitsPerComponent 8 /ColorSpace 585 0 R /Length 838 /Filter /FlateDecode >> stream H‰ì—‰–¤ EË&ÿÿÍ3­I J-]ÊóÝÓíÂ&· !dh¦ÍE»“;·òA˜Óô_i=Ì åòQsÎîìüÌ<›ú§ïÊ}=üŒÈ¬»Xïéæ¡Õ9Ò©F¤¡»ÌP¥;n»º7€ºÈP™›ê¦;@]d¨{Œ,G‘í©U8Hï«þY^Ñ];¸üÛSTºÑHgõÏ¢te~®¨‡Kø«KíX«¿zÄ$5Z9[·<¶ê–nÈŒêj¾ˆú+.'jå|]Ý Y;¬d´ÕÚ|«´!—Ó—­Û]—´"’®§›»½ÌÁŠ¥óUNØÊu^æÍ¿Eܱ{îº6N×-ŸÁüøöËœJü2œRÏÊ<Îww‡¯ôù ¨‹ u‘¡.2Ôµ<ñi‘æMÝWžÌwte›t&ˆ±ñߺkÙë.º §º‘oʼn»hݺUѽŽßÕ†ÆÄÿÑf ¸9ß¶¹<Ú®ˆ9%(] ÞC·ʯ…þQusa±â¢l6FcëF/³ž»vÒûz×­ë®t®ÌE/Õ+³úIN†Q2ÔE†ºÈP™ª+kˆh‚ÿlÄ•MYkl¢ãê®–ÜîSÖ¬0ý%Ìèææ·*áÔf@ëæ´ä/ŽZŠCWéi»9ÖuÚ«šu鵤rÍéÝÒ½)’ä*õè¶[:U7wg§éX7׳“¸£¥ÒX™òEWþ\7ŸÖUõT^¿n0˜âºýOÌÝåüÜË\ûÖÑ’­#ºÒ÷twÚ72:1Ö=hÉ•\Ná~N²èêϯšKÁ3œîzé?·½-é/v)lª}ø»û&¯÷âkPê"C]d¨Ûfó¥ á’òN<ðG¼­»-äÃý+¡uM&ÉEn*Ì×9Ø´Qã º.—×è7Jö{„tyÝ_ÌŽk³ s;¸Áu͆¤ rݘ¸½Íສ{~X£ýèè£['ìÁÜõÆÔMnݬÌ9e½—M…Rh¤ïîåzú¨‹ u‘¡.2ÔE†ºÈPê"C]d¨‹ u‘¡.2ÔE†ºÈPê"C]d¨‹ u‘¡.2ÔE†ºÈPê"C]d¨‹ u‘¡.2ÔE†ºÈP™ª{n©{Îþ½ ù ÿÁYt endstream endobj 261 0 obj << /Type /Page /Parent 678 0 R /Resources 262 0 R /Contents 263 0 R /MediaBox [ 0 0 595 842 ] /CropBox [ 0 0 595 842 ] /Rotate 0 >> endobj 262 0 obj << /ProcSet [ /PDF /Text /ImageC ] /Font << /TT2 838 0 R /TT4 840 0 R /TT6 536 0 R >> /XObject << /Im76 264 0 R >> /ExtGState << /GS1 843 0 R >> >> endobj 263 0 obj << /Length 1417 /Filter /FlateDecode >> stream H‰„VÛrÛ6}×WàìTÞûØ8iÓ©'­£æ%îMA;2©òMúñ÷ì $O¦µg(—ÅîÙÝsøãfõj³I…›ÝªRU.büó ˆUeDš)ljØ<­b^W¯~ú Å㸊U§bÓ¬Ö4‚‰Óꓼ‰•Èwæù:*ñ|ÏS·cT¨\6ýÑŠDå*ŽÖ:)JØ—ëHkUH‘h±Ælžân#ÿàcÒr·u7G:–õ!úsó ùnœï: λ‘ó¾ÈòÅ}ç¤!crUÞ(mþ"¹·¡Ò")`bsC[š•~ƒ¿$Vi ¼ÍQÐ!üÒÅÿaæfŠÖ™Jå<Øm´.T%Å=öÜö€³-xl‚»&QY~é.{«t±€».U t‘¯ßÑ5€+¦˾EÍ£¯ÎyÀ F¯”[^pŽððckÉ;#O‘ÆÓòÞg^º—»–òƒéǨ’ c€¡ËX&†.•÷‘8íÛf/ZÜøp°bêÅrW%»­¼Õgwñ’¢è¦[Æ!k­t¶€©+m¢iÄXŒ…š)eŸq¥á*îh\á>'ƒËk­ûéš Þ—x÷Á–?uáæ·}3?¹¶ó€ª¡j¼°D¬Å>l­;1XJ†[@ðvØ!ñóæ+dèW¸€‰]ïwÞŠ31àÑäK°M :¯íè6ÔÝ–Û|ç«®t@™<öEwìÿë©í;Î߈1Çp S^¹£|ËУ¤Œ~oŒ_"]!9bÚ[1¢zèn*®‰áfOW< ™©a°V|nǹ>´ÿÐ$6~ËÜW*¼<ÕÔÞ”{‘1>¢”FÑGF?•öDeI†ž×Û™15Òe;•{ëÐLeï·Ùï‘©yäô¤ž\ 2ÆØ­·ëÏ‹`‡rn¤_D$µ‘†Ú+~[çᾯ¨®<Øtwúb ¸] †wTˆ†Ë$_êžlòÍ ÿzøY]᥇—^›}?SÕrψóUÍÂI‘˜P÷æüñ¸ðuöÉÓ)z‡ï|³Yý½J3ÄST_™¤°YúÞÆG+^pgó´zõî©ÈÅM¿ú}õï–9ü¹ endstream endobj 264 0 obj << /Type /XObject /Subtype /Image /Width 1152 /Height 864 /BitsPerComponent 8 /ColorSpace /DeviceRGB /Length 196342 /Filter /FlateDecode >> stream H‰ì—OhIÇAØËâIQæ48°d  †õB/Y!²(BN£–‡Š†°¨»ï %¨èa³‹‰ãFdPEdg!ÂVeÆAÖ?sËVº|=•®ª_ÿªªûõKòýòå¥Ò¯ú[ºª^¦¦ ‚ ‚ ‚ ÒE‘øœ‡ ‚ ‚ ‚ÊÔÀÀ@Ê_Uƒ AAAÐrø ‚ ‚ ‚ ¨9Òù+Š`†a†a†áMó×¼®(úø) é•ÅêGÃ0 Ã0 Ã0Üšvã/µŒW* Ã0 Ã0 Ã+ÜYf!錓W߯y—¥“õó—*ÕÏ6 Ã0 Ã0 Ã+Ù)ÔäJrk}¿Vä]üed. i÷ d¾Ê­I_'+y¾fç” Ã0 Ã0 ÃeÚ›¿"»ªá¯ ‚-†/%y|Å¿Åx¥É—è[å݃a†a†á•ææó—ZG¿âÁ_ÄÐle@ÙÂso·ý[ùƒÁ0 Ã0 Ãpµá/cµ\þÊWÇ\ù+j°Õ|Ò7yIýJGŒ ù‹¸B_œ_,úvÛƒ¶ñ3†a†a†á@ÏWÁ_)veàË›¿l dü¶ üeä½Ãô·~mÎ  †a†a†ËvUü•"˜±y“¿" øD‹QE2 PÆjüÛ=ɽ—îqÑØPn·=*À0 Ã0 Ã0èªø+RÂ_*^©„Yà…þ·þ"šæ4áÊ_ü þ‚a†a†áj] ©Ø•A0?þRÿµ]W‡l# ÎWÞüåú­ßÅÌà ¬Ã0 Ã0 ÃpVÉ(ÒTéÉêþRa$#µ¦:d½ŽSMú:'ÐE\äôÄö|ù³Qùj„a†a†áåíùþ²‰æ/Z®ü™¨G]Z§ò©|LK}0 Ã0 Ã0 »’‘I5¿lŠ–¼,ƒ!À0 Ã0 Ã0,ÞêØ’üåT߯y‡¿T*ÑÉËX †a†a†a¸"—-¿Vîbò—°èoa†a†a†áÔ4Á0 Ã0 Ã0 ÃEÙÆ_AAAPÒù+† ‚ ‚ ‚ ø ‚ ‚ ‚ ¨9¢ùKü›Ö´•¥þX¨UxgØ‚Xeb†Xx ؂ؘK.°É *\4ÅÉCÌ-Ëç Rlâ;'Þ¶`à2X!‹\Õ¹sçÊèá2˜a¶Z ؂ؘK.°ÉŒnòP.Å‹gÞöä³.¤KáQ…w-^Ç©¹2ãÂ…FàR ¯ãÔˆ@N`x§æ^§Àæ qø+NæßXV/¶Î³nýƒÀðÀð:NÍ¿<ê85‡À•^Ç©9"œÀð:NÍ!0<0¼NÍA¢ùKs[Yª¥žuëo††×qjüåQÇ©9®„Àð:NÍ!ä†×qjááu lòÍ_q2ó¹å¸Åžµ1aW"QˆâG附ð@oÑ=äˆ(ª 47–*ù•qˆ!óçM ¯ãÔøËµ½Ìô(N£…ï²&l[þ. ÑR ¯ãÔ(Åü­i!ïjˆèñKª:Õá¿]èÓn{ÁXkÖ¬Ù°aÖ-[¶mÛÖÝݽoß¾þþþ“'Ož={vllìæÍ›\«Õø•ð×”EQP hþRçÜV–òø‰ðâEÈ– Ï1µ]•’d9ÃMü³.0PWî)A–Á_‘Â_éžñ—¹“Ìãqî¿sO?yòï_<~}¼}kûÜìÜ×w¿ÖéÙ«ðxX™À¸"þ}[¿~}ò;ò™øecéÛ;Ïë†"6‚5ÿ5¹¹Uøe§@WÑ'1:úö>©lœQÐu˜ò˜a¹% ÌmÎi† ,¼‡-iüõôéÓ¨þ¢§!ïR$3eÙ;#ð?Pü\~–HE0eáüµwïÞãÇŸ8qâËDçÏŸ/‰¿Rá+óóÄŒ‚EóW¼ø'ÉVŽ}¾P½£èõK[Ô›¬ÄÙ8±’z”k`F2sãÆÛôÿûø¾ûÎ6]Í⯛\ùKæÌôŒ ­#ÇŽœ>uºvª&>Eyîû¹Ÿl&ß3³Ç¬cìŒ-ŠH,=06ñW:ÄoþŠäÕÓÕU¯×kµ…£^üš{È…žoä/yÅ¿FFFÔ|õúíÛ·‰¾Ù‰ß_Û³ó”'ª,è¿nL ã•{RÓˆoW­]»Ö;Ð6Äl0{˜Þk[ ®Bmmm«W¯¯‹…òÕäÀh1ve N…ØŒÓÓÓD×!gÈ+_ÄI¢Ò!6º!Þ.l‹Ÿ‰K÷ïßóæÍàà ½›˜…ôPütJìJ),å/!±¡Äï)?0å¯ýû÷ߺuklllhh¨¿¿÷îÝ;vì8sæ øky+—¿„Ô™·=ãyEo|[…2ø+NPHÚv—d%ÎÆ)#P­–ÎÌm—ü5,ù+ÖÎù&ó—ÉÔÙHÏ¡¬ÿîïþù6^ଵĕÑË£‚¿ÖüjͪիŽé¶iç×ÉtC/çöŸÈÉíÁ_â¾qãF”—øùjdîû¹wÞ_ÿgÃ×Ç}þ›Ïk®µomÿâ÷_Óm3l¬c[u¹«‘è¿GT&0¶ð—D­¨Á_²@(÷%ä#yõô¤ä%ÞpîÝ»]¯ˆ+%ñWÁTqÖðÈȈ€/ YjiY¢™Árq)2½Ö§Sî¶5ÞH, Nõd]æ­•Ã_/_¾ ̾Ӣ2ÞBŸ±œ@¡‰‰‰Ì½§OŸÎœÿÌÀ‡,N!q‹8—â"øKÝ>¸2ŠJ௴ÀrF*píJä:d[é‡ÕjüÕÑÑ¡§½}ûÖ;Pv¦Jþ‹³³³S"XWWWoo¯€¯/‰?Pò×ðððÌÌŒÎ_›6m:tèPáü¥Ãø«*Ñü¥Î¹­,¥/­¤šù3ü4 e;š$¥Çr擈*;0s¤ŸºÄÛ&gk§üÕEÊ¿"Q0îßtñÑ|ÕNÕê­×/Ô¯^¹:zeT|ÊÂèåÑ:ðé'Ÿ¶w.ð×Ú_¯Õm3LÔQ»—éªñ¦ûoKÎU.I=zôH^s«þËç/¹`§ò/Z‚¶þqíš$/á‡^KX¬§«‹3{¹u"¿$‚E…¹þ€Ú$·ƒ hD k”ÓÈ,§ð@µ>§À²Ÿrm…ä4J×aî5þ„ìܹ37ÌíÇÁBgúTmmmƒƒƒü†\_õs“é9œ•·Hþ¯µ)…¥W8QÂV?¿/—Š‘¿^½z%+9*ˆ¿2ð•¹ÒÃ\µÝ¿¿ÀÀÜ(§@±‚IìêIÔ›H`W__Ÿ,ó%MNNÚøK háü%Qkñ›ÛÇ÷:×((P4ÅÉÌç–cÓö´Á—\ûD—Jâ/ÉJÆO¿ m§Á‹/¦þ5U¯ÿíØÑ£ÝÝÝ[þÏ~¹…V•q|? }ëƒ$48ˆ… ÐŽÁ—AŒy“ÐB vÀ ‚QôE"Nð±øŠZŽ6Å SÐ8ˆ¦> QdÜU4ú ¡‚dZ(µ ::öË^sNWöZëÛë²Ï>;ÉÿÇá°Î:kÿ×eßÖoÍWÿú3‹»9tè]!===û÷ïß²eËÅ‹ׯ_Osò¯þ?öO½œšüûäÄ㉉‡ñ·ñø½qúŒ~=:vkŒ k?]KæÕ¶¾ììçËóñ/yµÕÊTf`æØÿ¢åÕÖ»ú×G ô¾˜{+tuÑ;¢R©ÐNæa•!ò¯/¿¬«Õ,ÌÕ¿hœQâVª^ÕfG Z[[©¥i…µÛ<æd™þåý‹Ét ´§ý]Âñ¯+VdFefŽÇãȼP]ãä–¡Í­Mhù¸³¿Jé¹$nó¨ê_¢ ŒŒ~Š©™M`Tu®~÷]´üK•/†Eï_oÞ¼É+ÐflN[«ó"çæ%äKüeØ(ÿÎEËPó/*‹í›S$Ó¿â9cú -˨—V<_¸ø(L¦šÑäï(‘©ÚGªw`j5Ä÷÷³³ä_ãããÃCÃä_¿ëêúäןРkskËþ%8=’¿§¦¦¼ük®ëŽŽŽ}ûö>|øÚµk¤c.\ '†«õý¡oôÚ(}F®ŽÐçÒð%ò,úžû\½TùS…>¤]ôsÇ®[;ùó«âz™®FÓøSÚw$ÆþE?ÿ’¹û— ¹¹yeÂÖövzkôôô UîÝûë³gÏæükhˆêµ#´™Ej)jÂ%<+Ä¿âdFÖýK>P¨íИVgÁœh×kÀæÔû]Tòj‚ý]‚} å-PÛ63ŠìïïÏ%Ðæ2ð!ëH{EÚÑÉ5ÓÓÓL/…M™–@w4}ÓOßò_Tã4ÂÈ ]!þe"пœäË&Е²ù×éÓ§s ÌŒr Ü.!ä‹ W*}Ó»µ½½®Uû@á_gΜ1ù×r÷/±Ã§5ý«ª`G¢@ 6þ'ë¯-Ë•©KK–¯Þcú¹‰úÀ©“ɮģFXkY+üûÕ+á__ûâóßÞÖÖ¶|ùr›@Õ¿Dýàà P0zÍùùשS§–% |;wîéÓ§{÷îuõ/Ò+ú~÷ãûw³ï_ýëÕÔ?¦&ŸOÎYØÅ }F¿šS3ò¯î}ÝH?ÕÀ˜Åÿø(Æ¿ì{IÆÿzýúuª&2ËW¦ „…µ¶ÎY½;z{{ȼ*•þ¡üü+–Œñ/Ë+D@z%o’åc[[[µòÅÆf_0Õ›™ö™mâ_j3òEï_oß¾½sçN.6—Ç™…õ öõõ‰2ÉWSSmMmî#›·Hw±ÜžÊd[òÛ°R©Sïwþ¤˜LÈ—“Õ2Ÿë¨ý;ú—«|™åe·)«6ªÝií&D—L±tÑzòcs ¶%„K”{{{ilT ·*ù׺uëì…mذáñãǪ­Y³æÖ­[õ枅BÁ’b$•5 ÿª¼Ékn* ÔK+ö’/5Ê­ÝÄ’+1CÒF(—¿Ÿ¥Ï£‡#Í9yâäÎ;7mÚî_T&óö/:ÃÃÃ÷ïßïèè Ãgffè_Wÿê=Þ;õrjâá•Ǿ#Û¢•ÇïÇ÷â‘«#—.^¢¨µkÖ.ûÙ2*«1K1þ¥o&¼y`¿U®ZX«°°=Û·“‚‰½:B›Y¤*£ª¥ˆ|ýKÍçØª¯]Ó‹˜´9û¦6{oû5”ç¨2ýËjÑU ocIæ ·µµåhZ~},uɾÞ&ðÅ‹ôÀ¯Š‘/Ë@'´ôî Ã’~– F(þªý´a”å_kÈ\ç‘»yÈWæ=ñ/K2ÇŸjßÔÔ4==m’/@^¾ì…pÕè«B÷Ñž={¶n¥÷j»} ð/ò¬Ý»wß¾}[ö¯Í›7Ÿ={öÁƒ¹û—¬d·¥>®Q Þ¿âdå3˱îöô“/5ÊížÁÕbv’o`Ѝª`Ož<½>zºït÷žnò/õùïä_ׯ_'ù¢Ÿ^þEÌyq÷î]ÚÃ9räÆôÒ¡'«‘X­^µºm}[Û§mkµ–~Ò7ÕüôùåjÊ¡Bço:é{ä«5Y=Ë6–ð¯øÀ¸pÿ¬L¨Y•µ#´™…Z± ¦]±b¶y©Af¾…mù£˜ ›²?HmƒÅí_«V­Ê7ÐûwºÂ%¹JéLÈ—·18ù—Ÿ|1~/£ØëÆä×8ØèRiûæS©Túûû©Ð“@¡®®.ûÀšmܸqÛ¶mÇ?q℈¸yóf=üKpT÷¶â»dú!¯¼é,h¯UùR£<Ð>š<\)fŸuùªd>%˜@Æ¿¨L æë_‘ð/znÿêîî¦2ÕPˆ“£_Ž}3F…w?¾ŸùÏÌÌìÌäóɉ‡'¦^Nµ|ÜBòEߣ×FµüêÁ¿2YY¥¹¹Y;B›Yhÿ—ê_¦årº)øNüeh:œ-Ò¿2gçtÛŽ0¼SwÚÀË—/ÿ÷‡r Ì}„ZüÞEް„‘¢`¿ŸEQb[*±»9Éè÷2нnLVe2ö- Ú¿ò ”ý«³³sçÎn¡*ŒÝ3MÙfYl0“ú²¸¡þ% ¦¡Í,˜ÌûHU¼ÙÃÚ¼‚5B~<Ì¿‹Ø¿¸¤£ù –—Yþ¥ [ Ì½Ó-Ÿ¦@§6õ‘%ØXÿ²þU'xÿ’×ÜT”ê\/ô÷E.dU$YtZ¨†nðÁ*UIÉè÷ä©ß”ÃÛ8u·Xý‹ax§î®껣l#,I`x§îˆÀ¨>þ²÷Ž« æAnLûÍ€å‚,Í@ø×‡÷¯8YùÌr\²s½Ðß´ oãÔüË£Sw\ ámœºC hÞÆ©;††·É±;àA¦òÊ›ÎB©Îuùo††·qêþåÑÆ©;.…Àð6NÝ!´ oãÔÃÃÛäØðÀÆ¿âdýµe¹²<çºü7ÃÃÛ8uÿòhãÔ—B`x§îˆ@Ú†·qêáámrìxÀû—¼æ¦² Tçºü7ÃÃÛ8uÿòhãÔ—B`x§îˆ@Ú†·qêáámrìxÀûWœ¬|f¹ösWN„ûW¾ƒA` Á5 Ô)Ç@¬0Kˆ‹ ,a nÌXð)ã»dú—=r%p^¹% Ä5Pï@¬0sÄE…@–07æ‚ ,ø”|ÉÑ¿0À¿ à_P ð/(øü ŠÁÕ¿v•˜² µÈñ”mîu¢Óô½Ãø?NþUæ]hjlôóCCQÇSäÜë×WY"Ó‹{ÿÛÝóeEÞ ù*nu¤Æ×séŠì«4pšp= –þUþ]}m‡\ùŠ%ÿ*`éŠì«4pšð/ 6þµ võb%‘¯¸ºhÅ,]‘}5Nþr!Ó¿Ê®~WBIä+NÖ­°¥+²¯ÒÀi¿@.ðþ¥nw£ù¿6¡Ê /5YQ£Ö×­)ج¿ªÚÄi #_©ðÀ¾ÔÃá_ <ü+ÇnŽØûW1˜ü‹ùiƒ½v”;õó/‘,çÿ@9ÉË¿R{ਊz”¶œjoªTwÚò9å_ñ|᪕S•¦}êX¹}í/ÕìœüKž—ZɯÒyÿâO“\ÉŸ§JuH|¿&{rõ/û+J=*u ü äBŽþ•Úäó{ãÌM•ÌæÜÕ¿x²ü7¥c5\ýK¸©R;÷\N_ð«t=–?Åê’ž7\EyMDî€@<ü+³U÷´ê·v»k¿1–wÈáþÏW­”vñi)Lþ¥.Íd=ü˾#>ß~ÌÙ1kén‚L¥ÍËá_ Nxø—ögˆ—|A­1YžºCVý+V*ž¯N2j{Õ¿LíU2eÁTŸ—ÙwÄç3*—ª1UºÎËÕ¿øëþÊCIüËflª¬í=ü‹o¯ú—©½Êbò/m߀ÉÉÝ¿Bº€€")Ì¿\ËööQÛ!ký+VIëSÞåÅê_y¹Œë±Q‚vð6Ó5rü ”ÿ’1í„Õ¦½.ßžï%µCvõ/Q0 R¥Úï_&;píè<»ì–Íl*ÿÇ~ÝìDrda® _‘5w`ͲVÖxƒÔk 44ˆB5õÏjV^¶ÄŠ]îzá è•/À²åqO¨bÈ âç䉬ȬŒª÷Q eeFœˆL¨:|ÑÛÖ-’¿z܈ðÉ_("7M–¿VbÌGWѯICŸ¿FCþ@䯿²Ì©1ä/ÔŽü5òWqä/ÔŽü5òWqä/ÔŽü5òWqä/Ô.•¿¾ÖiÕóÿVý$LË|>òת ¬Îü5 N «Þ`ãØl¥Ì_«Ì‡ôÒvº­ 02ò`½‘¿ÓAþ¬7ò`:È_€õæå/ÓãÚcZ`d¥ò×|~U|oaÍ!V¬77™gZ‰Ûûä¹fðø­'ÚþÚ×k•]à"Ö[ÛéløÒç¯¶éØƒÜÔ»gÉío™V¨i¬´ZTÙüeûšûj¯¦Î¸oSeÃ1Þq4Ga-ÀF±]¬ _=òWó¼•D›š;,ï KEWvâ­˜êÂÅiµ0¨ùë*Ðľ“½÷môû<Ü$š‚ÐäúáÎkÌítrþJÍM…¬èAgwË=ïu@a3¹;ñŠ{ ¥*Ðj`ö{²_þJ}{˽IøV÷ÚJªrt¼r`£Ä:”¿„Rš×íF“•„æØYJn¬òÎ…¤ÕÀFÎ_Ê·Q©oþÜ€vºæ)5(óWgŠÉM=rÒ䯰H¿DëÓj`8ãç¯öÕžÞF‹{Þô&hOíšl hþjMA™¿š§nâ§ÚMj|“îJÊn毰¦71ì’ÞÉÔ´ZBñü•%ü’ ¬Tþjž÷>op¥è§0q«Í_‹jW4 Àp„üÕ"ƱòüÀ 6*&ŽüXoä/Àt¿ëÍët¦µ…chm€q¿ë-Ì_ó¹ß¿hm€qÉ_36Ï”êt‹RW^ [[îr&b€ÿ—’È_€*˜îóUÍík©üåF°°µe-`"ÜÏ>0Mä/@l Rv7w°¿ÜÞç ÎZÀDðÉÅô‘¿U(ž¿Üjä/`=ðÉÅô‘¿U(›¿¼Rä/`=ðÉÅô‘¿U(˜¿Â:ä/`=,ÿÉ5~ýÕÞÝUQëW¿]Å¿S6Oü[e¯†ÿc¤òWTØÚR˘²å?¹¶BMìkgèú«½;!täJ壪ë{—¾’¿ý·Êàž'›©Tþn3C×/>%«Tíùˆü@+ìõá˜öù ØLä¯âS²JÕžÈ_´¼^ŸÖö2!Eÿ#ò“¿€‘¿ŠOÉ*U{>"ÐÊú·AÎ_n/óÞ’¿€ª‘¿ŠOÉ*U{>"Ð*›¿šD#U+ž¿¢_GíÕ?ÿšy?;7³ÉùëÇ€0¸¢üõ¯})ò  Åó—ÛÑÈ_Àz"ýù×Ú—ý:rÇ›Øe_ÊÍDO¦¾÷²¶ªÑcÊゲԦå/»¶ŸèK‘¿U(˜¿„ Fþª6Bþ²?íÕ6|E#XVþrWIe=M©¬»ëd’×wÿøî›¿}óðéASª3½{÷Μ —¿Â”]hÉüe’×îîîáááÁÁùiŽõ¥È_€*Ì_n/óÞ ùËÛr'^…ΡeŠGëh–Xþf‡æÝQô8œ"ÜNçƒê]§_Á%O6±GÑ{ç©‚Êcþ! ”¿ìþŸvÜW*|¥6“•¿Ü¬§¬Ÿuw²/¿~yµ÷ʼnßÞ*Kuæ—³'røJ•ê¬oÓÖÞÞžÉD§§§———777÷÷÷ár½óW›¼ŽÍø‹‹‹óóóýý}})ò  ¶ûÌÕäüÕ$☜¿„·eõ(NIm¸s¤0w:f±ÌeÿTôã—¼š[G_pÉ“MìQ,¹sáÙÊ”Ϥ³rŠ7x üõ<í8og6‚™‘a[>¥n³÷ÍfM1߇[/¶¢á+UJ“_šEJÒ¬®9é–úñI˜¿ÂE{ä//yý´p¹`NêK‘¿U0ÝçJM“¿Ü޶dþj7é ðN†SRÝ9¼äU‹®.ì°IüÇÞïŒp¿©ñîw#ÊçÎjÏ{Ú.ò˜Î{WÎÍúý çS¿ôΓò_ljoÑ«šg+ÿIkÖí, G”¿ž/»Æ1óS¹}þrƒ˜f«=î®õðéÁËY?üó‡W{¯¾üúE_J“¿lDê¦Ï_m57¹ù+\4+µÉëÍ›7mòzûöííí­m:ä/Àú±ù+ÕÎêÖ×ä#¯Bû3´½½Ý/™äeæš@g’—Isf€ t6ywww6‹köï]"¦¬`þr{™÷VÎ_žpÝY"h®FG†o½"+†»ÍºyóÂêÃôä“Â³Š’È7Ò$Â`tpj!ýùð +jþŠä•;o/å>Û\ò­5Pþzþ‰ÙñY›Ë4›ò—»žŸ¿>ÿòÙD0ó2±Ë¼}øô`—ü•«É_&¤È[2̰0‚åæ/7ǽÿÞD$3øüüÜ$£ýýýÞùk{áàààääÄD°³³33Æ¿{bÂ×õõ5ù °~Êæ¯&Çäü•zëî3<N™efïQ¤ö ¬©™ž—§ ã5K»Â;•K ¿å­ÉWåß»0Xÿl•ç³iî΋ïP?=‹÷ ”¿¼œ$²Y©ü徯Ì_–]?ÿûgóMhƒXn©hþºµzä#/yÙŸ?~4ùË”5ÉÈä/šLzzùòe¿üeíîîî-™‚¦¬)n–¸¿¿ÿiÁœW–jÈ_€JÏ_nG[&ͺþ­ GF‡iÖ O 55îܳ<]¹zç³’ŸŒ|°ùË”5qéõë×&@-“¿,›Âö÷÷MÚ:991ÅÍf ù °– æ/!ˆ-“¿ì>ÃÁёњk…s…Rö Ù@´¦ò d Ðܾ|;—RWåú¹W—\%ë‘Êo{ì\8¿üÄ‚Šç¯Í_ÞTñüõìxÄüõûol½Ø2ù˼z”ZIþòŽ?.ÜÝÝ]__›²&(É_–— 3Ë,¡/EþT¡`þr{™÷VÎ_®ðRüë ¯¦ö^òª…e££Ž&vn&uGaáiÅ£ÇÂÞ¢o£w$_ «)w¨Ù8>œ%<ÒΓòZ=vÞù6u§O>U­ŸÑòWøZ>ÙØe_Ï+—¿ŒÏ¿|6ìññ±G©0ivµLþò´ìþþþæææòòòôôÔ„#¯xïú­½…6…™c})ò  eóW“ˆcBþ0}ãä¯ÔKSJÎ_‰d7jþZ¦Tø-m‚Õ­B©üÕ,"XHYJße¬½'»»»úRä/@Šç/·£‘¿€õ0BþZ²T*ÉJmuüüÕ,"˜†¦Tn>¬o#˜¾ù P…‚ùKbä/ j•毂õ‹OÉ*5Í|4úÞ%ò`Ê æ/·—yoÉ_@ÕÈ_ŧd•ª=‘¿h•Í_M"Ž‘¿€ª‘¿ŠOÉ*U{>"Ð*ž¿ÜŽFþÖù«ø”¬Rµç#ò­‚ùKbä/ jä¯âS²JÕžÈ_´ æ/·—yoÉ_@ÕŠä/û³ˆhþ´þjïpÿµ×oW±ä/À”Í‹æ¯&Ç®È_@ÍŠ|r¿5~ýÕÞ:‘¿U(ž¿ÜŽFþÖŸ\Lù P…‚ùKbä/ j|r1}ä/@ æ/·—yoÉ_@ÕøäbúÈ_€*”Í_M"޹ùËþPò&Žü¨Â¼tþr;ZØÚþË~Ý´JRÝîÕ€ŸÂlt5 â:‚®\dPp§A‚ºA‡ *êÌ8FbD‘« ·®Ýúú+µE7·9Sç¥OuÿïKÝz†PuªúÔ©î$çþv÷sÔûw0\ýÀ,öWþçY±¿ œþ`û+ÝËF§ú € ¥¿˜…ØþZWrLp¡ô³Þ_鎦¿¸ú €Yì¯FˆõÓ_ÌA`5B¬¶K>}s¹’ÑTK§Ú<“ú«±ªÆmùÚýX»9OW>éõn6ýÀöWº—Nè¯Zï¤W;›(¿z°¿ÚÙUœ°¸ÂãNóñž«‹¢¿˜£ØþZWr¬³¿FY”ŽäWÓÛ*«}ª‰Ò©Òj3ŒÆö×h…Å:—”¿à¤•,þ`ŽÂû+ÝÑ&õôÓ_ÌQ`5BLK0Gý•îe£Sý@,ýÀÅö׺’cú €Xú €9 ï¯tGÓ_\ýÀöW#Äô±ôsØ_é^6:­í’ïÀú €Y{/´¿j9Öè¯ 6i#(nCú € ï¯tGÓ_´¥;Kþ`Îû+ß@õm“ú«¸ Õv%ýÀ5Ø_é^6:Õ_é/%¶¿Ö•Ó_é/%¼¿ÒMÐVì¯ÝÕ¹ Õv%ýÀ5Ø_ùª¿hËû+ݤz¶¡Ú®¤¿¸†û+ÝËF§ú €¢Qåû”þà&‰í¯u%ÇôEéÎRÛªô7Fx¥;šþ -ÝYŽÛ†j»’þà ì¯|Õ_´é/%°¿Ò½ltª¿(Ò_,Jl­+9v\¥ë܆ïûéü“>òКS&Ò³ªÑ`û#7­=¢6CÀë׆þ`QÂû+ÝÑNé¯Ýòj§zf_I>Éê¼1/è5P\ᤑÑ÷V;(NÕùD`îô‹Ø_ùztíÖ–^ÄÖ_|ÖE?ºöОÅ\šU³¿VçÁØÿ‘Iƒ=ó7€þ`Qû+ÝËF§!ý5ºšÞ“žŽFÇ£ŽžÕ˜9Ÿ³%íì_LíE:ÅJo·S¼×m£¿˜³ØþªåX`¥—òãUÖ#íÁI7Lº?¿'‹ôΞÉ;WeUoŸÆqñ½Óý,àfØmCôsÞ_éŽvùýÕ8>ý†#ÈèžÆ‹ï©Î™þ«2ºÔ>n¬­ö…Lš¸1N߆j»’þà ì¯M=ÄfÔ_©âbú'l¼HÏxþ ž™5æ/~Q›¾Vª½øÔù›A°(ý•îe£Óõ×ÁÅôOØ?çÔÉßO ÆOPYEôWçüí§s¡¿X”ØþZWrljmJ…²:ªzöÇ“nØ<ý7ÿþ†Iߢs¼¶ÂÎï*Dãqµ‘âOÖ3mñ›?n~`^ô‹Þ_éŽvJmγb¯8^)g«}p•ý_¼aÒJë?¸˜ž·èüS§Sq…ÅñÚªŠkk¿xçüµgs¤¿X”ÀþÚÔCì¸þе{ßK{ÜE(þ‚W½(€“è/%°¿Ò½ltª¿BäëŸûè/%¶¿Ö•»òþJ_ùržxAF?ßU/àTú €E ï¯tG»>ýÀõ¤¿X”ÀþÚÔCLP¤¿X”ÀþJ÷²Ñ©þ H°(±ýµ®ä˜þ H°(áý•îhú €6ýÀ¢öצbú €"ýÀ¢öWº—NõEú €E‰í¯u%ÇôEú €E ï¯tGÓ_´é/%°¿6õÓ_é/%°¿Ò½ltª¿(Ò_,Jl­+9¦¿(Ò_,Jx¥;šþ M°(ýµ©‡Ø¤þJ——öïé¦Nupò£gh8eòÓ5~‚âòë?øšíwoß¹¿¹ç¶öƒ€+¡¿X”ÀþJ÷²Ñé¤þÚTê&iK'Ù§ï>i¶ÑŽ›¡±Âô!“Ÿ®ñ—׸Z»tpÛq“œ8C>aqÎÕž._Ã*©˜öÕþKÅñÆiã›é¹­±6àJ »Ð°utþÓ_Ì]x¥;Z`Ž÷F#£«ùÈèæölµ‘þûó©½cþ‚µÉów<ø ãä³V»ê«¤âqã³37–×ÿ Æ p9vý5l =ÿôsØ_›zˆöW:ž¯’.¨Ý™ž6¦ÎÐ^ϪògªsòΞ.Ÿm•EMñ7jçﻩý3ô?¨çMK£¿X”ÀþJ÷²ÓûkótqäƒãƒWÓ™W•¿½÷_Qÿ ýk+ÞSÏÓ3sˆ|æÚjƒ=77Æûg˜ú ƒƒÀåØ÷WZaµcýÀÜÅöW-ÇÂû+5º9ÿx~5yUú3>¿Ú3CÏqm…WÞ³ªXÅo¦x)ÿ™Úƒíg5žÛ˜¡ó¶Ú^›¸hûþÚæÕY’Z…cýÀÜ…÷Wº£Ø_›CUÕçèêþ´ÿS=3t~¶ÿ]ÚÖ>%Ÿ<]@mÍ£›‹ƒíg5žÛ˜¡ó¶öäÀåKûk»9”õ7C`mê!vqýµª7N:’jU œÆ§Ò4f8xÜ~»öòV¥¢98Û)Š_um ù`ÿHþÛõ,£sµý.ߨ¿¶‘uV<Ö_Üý•îe×_ûÁôR{dtµvZœ?Ÿ³1Cm=ù#ŠŸj¶¡ñ]®ñýäw¶Gj‹o|£«µG×n;øeû­aöý•VXíX0w±ýU˱£û‹\ñw¼êEiß_Û¼:KR«p¬¿˜»ðþJw4ýuVYmå#s‘ö×vs(ë/n†ÀþÚÔCLÅýˆW½€ãúkYgÅcýÀ Ø_é^¦¿è±ï¯´ÂjÇú €¹‹í¯ZŽé/ŠöýµÍ«³$µ Çú €¹ ï¯tGÓ_´¥ýµÝÊÇú €›!°¿6õÓ_úkYgÅcýÅwëÖ­gŸ}öï[¯¼òÊo¼ñ¯­wß}÷­·Þzÿý÷?úè£ÿlÝ»wïñãÇ_|ñÅÇ÷Ï­;wî¼úê«/¼ð‹/¾x{køNþöûeûU×Åá„ ¤O¾`Þô‚FšÔm©j£!*šÝã„£©)#FXê%¥´2ã!í•úÚߨs±Ìæ g¦ió^¿›uÖ^{íµ÷9:모8uêTiiiIII±_”Ét€*,eÂ1ã/“Éd2…Êó—ëj…ØÆ_¦?Keeeõõõ°Æðð0ß0"0Y\\£D+P$õÌÎÎÎÍÍ¥R)*¬úÇipp0ö9É€˜ !‚IÞÓÓÊu¤ÕÛÛËãíÛ·…9Z…Öc-9c±X_Z¬` Ρ¡¡;wî`ŒQíôô4…_<ãD…Ô¤6xôQƒÖã8OŸ>Ç>9}ÿþýÛ·oíNdûúõëöö6SÏ#6üøQ³;NPdÇålnn2nllˆ"½Øwtt”[ŠÇ㜂ótÜveeåÉ“'Üb¿|“)£ Î_Á_4ã/“Éd2eW¿ÜC¸müe:ü:~üxUUU[[["‘¸ÿ>„d/° äÂ(xyðàTì GÀ«««@@1ݸq\joo¿zõêßN7œZœ0®_¿w@: ³ÍÍÍD6444;a\ºt 6³W®\ÁnlldUSSSkkëµk×ð´:ý7-2¿¾Á2Œœ"™Lvuuµ;uvvR‘šíL öÁëÖ-"=i"m||œ“êÈà—J‹úÁ(¨ê±Áü© K¹4€k}}{öìüÓ­­­½H š{óæ NxíóçÏ' $iqþˆzȳ@[° x‚óÂ… `ý?¸­à7!ø‹åѹsçÄS°¼£øJÂþËéìٳؚOéQ©xCùGq–øŽ0¿iI…_9ekV ':Sa/?eCgõN"5ù€ZÅÈB‘ ovb! æÞti\”À)œº7]ð3+ÊS16‘H¤Ã ¦ã]@m [<×?~ vñÊÖÖÖ^½zµ±±ñÖ .Ðx\XXH$d+///öGg:j*8ÑŒ¿L&“É”]Aþr?á¶ñ—©ˆ*++ƒ#úûû«‰‰‰©©©ÉÉÉññq>!ºú˜þÝ»wéíéöaŠ&' L&`ˆ/D=b10*+®8A7Œ „¸¦.-á Sb.fâ,¥ªu…| `TЃ±•\ˆŸEs@%Êà…“³æk|q ¡¢/›`/<Vð…Ø‘!~òË/ZÔåhVÈ&nÅfÔ!l…±œüŒòè…«J¢¤T>›¶P<0¦Ž&C99[S*DÖé‚&‘ò5‹¹´ÑE'ªÄÔ8éºDd¢6<þ~t±žøt½L¬äŠÕ2Å[¦0•‰Dúûûo;E£Ñ±±±ÙÙÙ‡...¾}ûöÇÛÛÛüKyòä‰xTÅþNMž È_Áß2ã/“Éd2å"Ï_A Ëd™T¥¥¥ôêÝi8% rÀ àêììgAôí´ý"! ò½½:~Ù ± `@ À ~úA–²^DRJÈH¤ ÍQÅÃ…ü  Š€(›š±Ï;Q 1Ù‘’ªªªtѵAL*[\ãù ‘Aõëìb@öòÉuvF–3rLňÎhMNÔ†ˆ#•@É3,Â+a³Ê :á2xN¼âäQQ2««æ\âMòs'ªknnfk ¸Œ—~Ó ‹ÇãüÓO¥RËËËïœøï±ºº:==‹Å( ØŸ°éÏPaù+ŽåÇ_Á:õxÀ]@® ½ÉƒÎ¼‡ßv¡§Û§3t—Ùcòx#{ò/Ïï˜û¯Ód:Âòüåðj'€Z!¶ñ—é tâÄ z{ì±±1¾ ƘS___$¼h¿=a Zw/O[¤’A3OÃ/NQ{ïƒEX¢­êêj b ÂX"ÆÑŽB*’óȬPp`ž(¹ßÈ?2«2T-~’@b†´vŽ´<+‰YnÂÕÉAä$âÀ:‰ªt|_ŒU*‚Jª² ƹš–äÁ°1à ÖÖVuW,Ô҉ȃ-XS‘ÚQ¯†S茄é,šâÂ=¯éB³Z' ’S§ªÒAD‘TÛÒÒ‚ÍWÁ·1ä”L&gffVVV¶¶¶>}úôüùó¥¥%*/ò7m:Ü*8ÑöÃ_*/Óã/)ï…YÖæW^Ž•³í²sßkÿÚuÀ‚8CwÙ;›Ë÷¾‚LÅç¾uöšó;æþë4™Ž¶‚üå~Âmã/ÓA¨¼¼ì¡‹wJ$Ñh4âD³M+NÏÏHgN?щ\m¹J¶¸F6}»oøµJlEW¯ r*L‘‚F~1¢E*I£‚Á‚˜Hœ¢G•$ú’Ê/’Li#1”ØÄÏjëÆ´”`Õ#`Á¯ËµéZÏñ¡9]Nv!‚3Â( [œ…¿p팣Þœ‹aßt’“xb˜ÒaEdª“í<Ùá¤v¾’”zæÌFH÷ö—“h'Á¤Òl]ZìÂrîJ!N*öôôð ŽŽÎÏσ`¯_¿ˆñu;v¬ØŸ¹éЩ€üõ#3ˆý*©¶½Îü~Üó^˜eíÞ CkΣ’<ÒþýçÀø+ÓlwõKk™ý ü¥š÷_§Ét„µ‹¿dí„ÚÆ_¦B©¬¬Œ~xxxffæ‘ÓÄÄ600|Ñ379ÑÏÓ]Ól{´¡§->0+ñt#ÒY˜¢·ÇSUU%¼R«/è@ôðÌ »<%ñ¨~^ô¤­Å_‚‚¿:0êX®­/$ŠaQ0»À#<’“Y¿Ñ×Ï‘—ˆ [tæ¹R<¢´J(-B݉öÐy TÍì%â#¿gL7Ï”F(L#ïK7#äÔýSî„`2ˆC™Õ¡°õ™Âs1-&o?£jæ8š%' U³<º΢µº eØz5PcGGGww7ßÒìììÂÂÂúúúË—/———£N%%%ÅþöM‡Bä¯àoÙAð×®Ù`Lð1ÔŸ‹ç§k³W˜÷¾{ódÙhoµ»*ß›3t£Lçʤ`ÙûqfOþSgŽ1¹-KäÞƒüôD¡‘©Ód:Âòü¤°L¶ñ—)ow¢UŽÅbSSSôÆ©T òšœœŒÇッƒ}}}]]]‘H„n_#R,¨>ˆP€ ‘HCZ¾§W' Cý¹–0z"ð”Aæÿ³_¶=U%Yå«¿ÀÄhD"šM÷Äžî8fL#È›h€@Å7p‰Á/„D• cÆ·Q™¨ÿÒY©*'pî¹—ËU»ž'ûTíÚ{WÕ¹°×ïA²ƒ A'Ï“ø<å iÿÈArÙ%;©Ê 鬀€”˜.¡ï§5Eú ‘(ä.â ðz8HÖÀ®$/>î+r(>è‘ ,Ÿ’‘øž’ ˆlî1‚•[=ÅU’rbÔ±5Ÿä ÏÁCè<Øæ ™ÝtG,',ÏxË^ AbV1¯˜€d9tèŽyY(c w×ÚÚ ˆÁ\“““|lo‚`±éééÓ§Oo÷¯!i›U[þ*…c5ä¯ìÔF»®Fm}mÙ ·˜=§ÂD•T^aÒ²ªË#‹*‹ƒ—¬Ð§ò­xnœ*»£ÍÖ³©+HJúQù+àÕë j娉¿’ªÐîÝ»;::†‚þ¹¦óAmmm4ÃÌòŒ4;|{o™ÅnÜöÞö[ZáõïAŒÐœcØÏÛÌÃø0hóXEÊ Ïg¬`ƒÆ¥*[z–V[¨ä—51«³>2”ÀòèìÓò"fYx0Hˆ`Š'ãV+CQ!ãJŒìÉ Bž¼ &,ÂÅR-ž šš­YŒ1=ÀSAqSàSŸX­½¸¯úúzÒ¹k–3.ízÚ&þñ~ â,nÖ/dáæ~r;úGþò¬ü-Èãb•ô'!^Ož<‰'ŸVww÷Å ±±1X {öìöž={¶ûÇ‘´=ª9eÿ£}þúvvÙ Kl6㦕µ+ÜN±êJpGnÙŃeãW¸d‹ Ë:—œ{S›ÊRÝ]$%ýxÊòWøço'þJªBt¿£££Üµ p__´ÕÞÞn·O“lËm—n~tMôØLE಩ŽLÁçxþxÂ\J’ÅAˆ'ojjâðä¹8qÌ[ðr9êgÐOÅ…Ö#pùýxïNy5‚Ä »PÖÒÒÂyõêÕ¹¹¹ÅÅÅåååùùym»(Iß[5䯯¥AlGñWV•¯-[aîÂ**©.QqmJu%¸#·ì²ƒ¹;*Nº•…Å*¸ßâÁÜ›ÚT–êî")éÇÓ:þ õ:×Nü•T¡víÚEÓÛßß?<< saÐô¶1N{O·LÓKWŒ!ñ¤=fÊÞFZxžøØÏ3—`Ë_4êøÓoû”YèÀ%ÂÒ«Û£ˆrÌ’‚¼¬b„à<Ï^eIÍÆÞ>_P‚Ybý8Ë‘þ¤-ùÂDÌÊ>‘°xÅM~aÄ%H¸€Ñ˜:²&ÅÖ2Ë #rãÒžRž4$ˆGL±–œ-ØâÝ…¨¿c —{€VÎ+ðuðàAâxk9E¤_×ä©Ê°Fã5–„HíQs˜OﻵµÕÛñ*eI„˜&2þ:tµ’ck6‰Æ900011ñàÁƒ¥¥%(ìòåËÛý»Iú~ª!eÿ—ídþª.fÙ ãÈ+©•¬ª0Bqð²[®mII?°"¼zA­;ñWR)Õ××÷ööŽŒŒŒŸ‚¼h•iwíüm€màmž—klŒi˜¡?Ç_è¨éómûm¶1èÞéùéºiÎé¢A%FÄÖŠöÞÒ–ÑL-_`HLikk©èÉ!GÞ þþþ¡¡¡áááK—.±Ç]¿~ýöíÛ7nÜÀ¦ogã# âß××× ÑíCmæ±5ÉMd§<Ç ù‹ -˜úå/©‡'nb°€a§1ãBÃÍq9Èì‚Ø‰5y’Т7õk‡Ï¬•K»d‘Ou#2S¤°*oŠ1ð§ øQ‹פ!yáæG"–ŠfŒKm~ÄçéˆÉ¥s°Þ£Ø…¿„ÅZ"Gôè,˜D‚!¡¸¦‰‰‰û÷ï?þ|uuõ~SÛý«JúVª9eÿ£m…¿¾f8EåŽçŽäÎn}m©Â6ú”š-[IA¢‚Ô+ϵë6œaÁáWrþ¹ÎeKe©ÕÂ\· #än¹xïU,É­3)éO«,…ùv⯤b%þJü•ø+éÿE5䯯¥A¬:þJJª‰êì$%í`­ã¯Y¯síÄ_I¹¢¡O`°‹'¬ÑÜÜLÓK? VØÛ½ t¶ôÀ¼â@çÌ«m³…NÙÒÛÛËV¢A$2R0(;Ø¥ÛrÛ{“:rS¼šiº»»ûìÙ³===”}ñâE¸ žšœœ¬ffffggç‚>|¸°°@sÎsyyùÝ»wOŸ>}ñâÅË—/\ZZÂ~¾¦Ç?yò„A ‚êæÍ›‚¹0€;ލ=ˆ­A òdD؉ü%e ¸qfÿ$ÎHR©´"ìÈVH s‰h£áupVž ¯—5Z61 >Â#×j©ÂÚ™3g°1˜Â`#²åS‚¬Dö"ÙïgGpÆAŠ”C]È 8†ç#è‰u~-„u¹ÍBÙ á@+qãÌR€ÅX•wuuq5\=¯q§PX[[ÛvÿÂ’j¯òWöY⯤¢º_II;[‘¿²VÊNü•E‡ÜtçÎàkxx  ••ªìxémƒÿ$SÈJôÒÌÚ6ÓTÛHÿô· ^  °K'OaMÖ ,Y"žØŠ›ÅzðçbÐ… ®\¹BÙðѽ{÷æççé´a«ÅÅEð ªZYYyõêÆ¿ƒ^­®®2øéÓ§÷ïß3È+Ƃ޾}ËÔƒð¤uç«fhtòëäÓkAp9hhhz啿£··—cììì¤àSAˆ‡)¼¸ÙÆÆFDD7D-léŒÇ%Ø<…Y!Å£#þñ IJ¶'‰Ëɪbcg6#8csªlÀâ2™…\š‚HDqŒ‹& ôG|ÉÈÏãç êÇ™âb°MlöÅB¶iÖ××{ïg9 Ýy5,#Úˆtâ'Ñ$;ÌUÆ™³}?’‰‰‰¹¹9®•dãÛýƒKª¥jË_¥p,ñWRRRRR®"¼zA­;ñWÚ»w/Ý54a›zëÖ-X†½¹¹™›'=-]==-Í6m-ãÒ½.=0n‚ƒØ²»ÎØD Õ'8n¼F°’æì« ¢©¶—æhþÖÂ; 'ÒN? ZZZ‚°+ P‚¡°i¶%)ž_¾|áËŒx…`+€KþúøñãçÏŸÄøðáÆ›7otÆ f@=zôhvvvlllttôv8v=èF#ÀàÔÔ¥ŽŒŒÀ2T.Ñ€3‚[IØ)ü%AødœCÀ`Ni ò¸äÍ#ŠÇè¹b,Wztttˆ·æI@žžðŠ[†/q¤“Aϓʧ§§ïÞ½{'ˆWÙì• vÁ]Àžn‡/çܹsäâ+âI¤#‘e° *á¥E1ððáÃØÅ.öíÛǫߒ»ÀMÃS¶òˬðä@ü¢H„ƒ,Æ,O©ÐÔRɉ ¾:>ïñññùùyîtaa“Ùî_RmTsþÊþGKü•””””T¬,…ÿc¿n~³¬Ò8ŽïܺtéKê'&c$™è`ƒiÚŒ / mJ@j¡ê0ŠøL‘ %„Ò2SÊ‹dŒAÆA†)"³ýŒ‰Æ­KWn WÎ'×/ÏÆ)cšÈù-N®ûÜ×9Ï9×9wžßwå¸ñW=ôÐCL騨ÎN?[b°Yô+˾Æ?s³ëׯ7±Ä»æxµ:¥…Ë´2½eÅYܰ¡§ÑÑQÎ_ˆˆ»¶ŒGyD¬ÕÙ_²†M%ö¿Dð§ÒñãÇâ¢Ï—0êúõëèI?žº|ù²6 š@™:½_ X%ǨŒ½qã"3D'Xû{Oæ4<8æ­ë}îÜ9=VLÞ~ûm,†–tŠyûtÒÜÜÜáÇõ[¿Ÿ‰ o+ÄThظš„8ðE°4h–ÊP£U *o¸‚w ¢tƒ%Īz"€fDMû÷ïÏÊgfff{‚±6ek©m¤ùÎ;ï,,,œ={V¡’†¿úê«öuôèQc§§§³Gv·½´¡d%Ý-Øe:sÇì"\F‚h¶/ xê²d úƒf)Z¸U¿Ö+s抦P]•H)´[·n…“öî4-¾QØ/@«È_?ÜÄ55555­¨ñWAÖ…ãÆ_w³xà–8>™Ki‰gF[œjŒq`Š¡åf=2´,4¯ûxÉ[†_~Ì-;­S«§ó½®/!ŽÉÉI¿hH<6¦àŸµ~+ÌÿXšššš.9rääÉ“Ð7 AÈ ¢¿•0bºvíÚ¥K—aTúÿÙSXŒ.•\ÑLbN„ež$„¿ôÜ>,In|YÉ»¥–åñðådObë, 6??/áÔ©Sy XpÊT ¡Ñ7*N*¶fÍG d)y´:óVÅrè5T^˜m¨´yóæ‘‘§žõjxxxß¾}J Ïœ9c#ŠÆ´Àe* &J¤¼úíBŽ·j"©Ù‚Iì»·çÏŸ7§™ašWNð…ÒøøøŽ; 5Ä,8¥µë@¥ÅçFÙ‘Ì¥(j³b—*;• ó©’|U Ù©Œê¥\:å„¿òs²\cÕvÉÝ×^zɉؗC¼ÿþûïôGÙôóµŠüµü¿¬ñWSSSSÓí¨ã¯åv«¸ñ×]¨{EŸ˜˜C[‡WçKùÛ§Kl-ŸÌÐvüEq¿Ì³€ƒ…`ëJnY§bõ ‡ÚL%õ(1áÏ<óŒ·õc¥à3l=`ÄÕš››ûk)ˆ„_bïň †`B ëý2 | –––@v%¾råÊåž®”’Í“4S¯<šÓ[s kbó䇂*ÖÀ´ $rüøñÓ¥¿”c[x¯$0žˆ ô Í—ìª`"Ûw dPyÑ××%pàÀ±cÇΜ9Ãçóó¬ûù'ï"yÔ¢ƒÀ2 Á„ÅÅE=–ðGúCX‚Ö¥ž‚lˆy…Ô`^t$ßé‡$ôþ\V†²Z¨¾ÂŒÌ•à˜öd jÁBsÙŽØT§J&q¦:|ø°Ï¡@Ñ”=¨•šã¬5%È€ÂBCÆÁÒðð°óÝÞÓŽ;P˜³†?/”¦§§ýºúdU]}ÄðVxJAlÜj?iàÑRÊÊJÑŒM ŠSPÞ÷z2¡³³³ªŒã~íµ×víÚ566fÁ˜ÈâMa±W6ž­¹lZ·¨Kx²§ëË¥#/Ö(ñÀŒåfוT&V‚ ôÄÊzŒƒåWšWO—kfèïï¢dNù±ÇÁ·¡¡¡‘ÒÄÄÄÞ½{Ã\‡‚*óóó§OŸæíùÞAP…°€~fž«÷' trûl¿£B[ø‹ÿ×â¦PXr‚i(˜fx&÷JZpÃu5iåHðsZ òCh‹3×Á‚N˜G¼òÊ+Ð ûî»ï–’ß~ûí7ß|óå—_~úé§Ÿ|òÉG}RÂ&~Âässs•5o¼ñ†¢)b>üðÃa‡Ž¿H__Ÿq8'¨ø/‡ »ô„s=¾þúëpÉ‚ß|óÍ€˜õ«[Ê¢&ó†¿B¸³¶”H§r©Ì‰Òììl(LlùŽIÍ1×å’y..“™µ€Öu,–#°eÕ3 ûCÉÞ]WDé¢ÚšÛ¸:Ø|´äÊåññ’œ©‰Ë©tÉ1PçïJbàË„&ñèÒ†Ôrჱ;KVeï–çÕþ‚›þ·V‘¿–ÿ—5þjjjjjºuüµœÂn7þúë¾ûîÛRÚ½{7g.`AáÒoK ¸PÞ5^©ØÑ–Nn–Ï×þ’v£’·âà[`ͨ¡¡!8°wï^À¢c–÷Jl<ãÍŠkC^±÷âó%f>ÜtwoÃbdHfÈð$ËY\\äÿ (ìÃèPÎ2Nô„w´A0`µPÒ­³ X"ó£Zô¨€ ]>*ñs_}õÕO˜ßÿý×_ýÅ_|þùç>™• ´µýî្#ƒ!NAÍUõ×¥0… E†'7nÁ “““VnýûKh Â.«µTdç˵l¿òA)`u¥'|¤'ÛTAðJŒ•‚cÒ³%¨Ó 9Õ8‚¥¥%ñ=ý£d§9šœšsñÊ´9èv9Ü‘½ìÙ³gttÔÝ a¡N¥pßR¬-áPÅqåçö¦z”;/Y+‚ ‚ifsáóiÈTÒÁ’ï½ÎÌ̸Šæ§ïôÝôSZ]þºŽÝý»©©©©é®ÑóWáÕ…e¨µBÜøë—*”ý~±4<<¼iÓ& ÅdrªÚ@SÜil' Êy>Q aiõ›‡G]·n€)M‚I\Äåö÷÷K0dÆ ›7oÞµk×¾}û~þœ{gŹî‹%NnðÞ+îýÝËÍÞsã:¯^½Ú!UÕ—o¯ßØÌ«µäíÿa¿Þ_»¾î8ŽÿÖ¡?õ7Q4£½‘Ö–µÁ #^ HDêe"M©(•h™I$h :gÙ…Òµ]ÕÕÖ„ZblŒÖxé¯ i,)CÚúƒØËï[Yé{¿ù~—I,Ý„Åóúáp>çs.ïó>çóý¾ž‡MOOŽðE¨xTyï½÷ºC¦²úþÐïB.j‚€v«à ²eË– 6(_zé¥í!h¸¡ggg'|K01Ö ù™ŒÕ×_ýÅ_ܺu뫯¾úæ›oþñÝwÿöÛ›7o?~¼««Ëº€±Jë2ù*Õ ‡4.Z´ÈII²l?Ê#Ó‚|ˆ„ÿ2´|ùrœ…¼ÚÛÛ}ž›Bëׯ×b6Yu¹S•ÞÞÞ#GŽdº”ÇBù(6˜4=@PGGGnÜ–ùj(O²É¿'Nœ€WÕ<}ºF—Óm”®jE9LFsE=êiu}2Ÿ„rÚÚŠôœ;w.¶E²Åéø}›ìϺ讚pþûößòWkQQQQÑTׯo,ÅŸÃøõÂ_SUéŠ+Ò“/«'B,¨·*¬iÚÑ4¢éNuK#šÞ•ÿÌY\Ýž U‰à±ŠpX²d‰ €\F=Š OPÚâ«5òØ*ìw"áí9ð;wòÛÜøoB»víJôG0;=zT^õ÷÷Ÿ9sæƒÐ‡¡Ó§OŸ:uê/¡“'Oâs^€]!nß-U CVA"Ç\üöºuë6oÞœüBÚ9ðÝ»w¿J Hv3¡™•Oào!À544¤QxðŒŒŒ|þùç_~ùåððp¦{9di;Í]'õH‚åš››œl;ùOæ"yvõõõÐÉySS“8E —`lßjii¶iÑV__ŸäÈ V:{ölƦEÒúC0J7)ŒmÖœ¿ ‰Ó£üx•HåLÑ–=šÐ$~äÙTæÔbªC‡%CQ¦0ìÑ£ŠiÏ“Mþr¼úsÈ+éÍΤ.ç–¶/çˆò>š9s& ›5k–Rf\ï‡+ª^Néz¦¢7—Y»zfØ(õÙ³gç 9P_Òpg±víÚ½!9ŸìO¼hM ýˆýxþú¾¨¨¨¨è^Òüõú¸õÂ_SL÷ßcc#ºzõêgŸ}vþüùé$S“YSS£¢ya«ô™~]]ÿ™ÎV‹GfÍå•·J<*àN;::à§ ©XhNžy®ÒÊCo¿ý¶F•„—ôù`;tvvnݺÕ#Cž˜óî»ïvww Î;ç:]¹r%M>‚`û/^¼øñÇŸ A´œ?^7ý/_¾œ ¸ …‰êP>$ Šú‰„÷:~Á›6mjoo·£!”„tÐß Ý!3 ^ËB£££·oßþkhppŒxõNE6¢›FÜg_¹Ê˜œÚ¸$àè´lÙ²††gáä\ž =š7ožÃ]µjÕÊ•+Ñb[[› “eB¶…äÙNíZÒ°’T@ɡʅ äG¢]mɉã\-¡-[¶$Ù%=9µÜ»9sG8×´J'âäÙ„îY1y*Ú©<'‹it%2¥‰{ʼ-¤¿lȉ„ä rèFå+ÇaË (ïªl¸Jåg!—ðÀ“ý¹ý‡&¿Æþ—ýoü5)ýEEEEE“¨*¥°»Õ Mñа«©©I¹páB~’ùLÊa²î0*ͪötžŒ%›Ê[B­¤°±´Åù‹³²|<¤b-†4„Ö¬Yƒ›Ò?c%¾Z%¡ƒsÎF•?…¼MÜ`¤ÑCÙ\'ȰmÛ6ø` ÈK©˜yܤÄYx!­~RCš ŒŒ(=WôÙgŸ]½zeÏäàp$¤‘à‰8ù|Є$0¸ z%„ªaÛŽQgoo/Êϵk×,t>“ò,¡LÕ’ø Q»ví2ÿÎuíZ‹Wº)ñªZ¼xq}}½TgÚÇŒ£TÇ_X`ݺuzê/NÓ&Ó!G÷FH®0QOOO¿Šä|’ ‘X)§ °L#žUø2[ò—,ÙEOÈÖj“UÓ&vYN)—CûB™.iÌ| 2iÎBZÔUäáÕŠòªˆßµq"›Fù·Y°¹)ôÜsÏ¹Š‰QÓ§OŸ5kVbT^õÇBÞÎ A0u·Wn!XæV ÚÒߨLõÃ!Ê:}|fp.Ï?ÿ¼ã“ 6LöG_ôoM,Ý Ç~ ݃ªòWàÕëcPkœzá¯) iÓ¦566Â.ž|Ù²eõ!&óñŠ8Iœ•uíœdºPVSK]]Ý3! VRI_ªb,wj8gûH‚ñÿK–,i qÔ¬r‚«Ì§INìB7^iOS­’Œv”\4òâð±S ˆŽ?>000ºqãX¸:_·¯äóÖàà WWBŸ~ú©¦%”˜–oµ#€`þBèÉrYvww L¨|þÁƒá Rx9ôûv;}§"ˆ Í<::šl˜2ÿû￟DcrU”önËÓ~·U"`N{{»åðW),Xà jkk“òIò·7n|á…Ö¬YÓÚÚ*B§`æÎÎN³™?÷(KÂÈ8…']B•1™_¾\ü•Ÿ°þÎËmÜo«ð%½J}2Õ555øKþ½u9‰!Ba.­€—©&û è_špþûVø«¨¨¨¨è‡5–¿âÏaüzá¯)£Â_…¿ þºÇ5üõýÝA¬ðWQQQQѸºƒ¿²^·^øk j½øâ‹à ±åsçÎM¶b#•ILêiM•i ¯ÔçÌ™cˆI”¼èS!^±©úpžÚŸ±š Ìgss3^øCÈYs˰%™KÅ# ͱƒ™gÆ o†´( IþÚºukSS“ëôÚk¯ésìØ±S§N¡ƒÑÐÐЯÑ$;|ò¨ž>°"u@‘°æâécl^B-!_»*Y1K3Dª¨°W¶”!-ÚmV™0e§J±ÁèþΙâ€'¸ §`ºLKòW"'Óν7‡€ÃÊã[±bŪU«´466æq8;iw|Î+fÞ¼yNGпô_»v­4nß¾ÊÁ¥–– ¦««ËOœ8!cU\°h}¶çB†$_„{öìHf3U[[›½£$ aïN6¡’ÎTd³™öœ*%¡ÌÛ“! )•Þ<ý¤¹ÌÆæ…d;/ òÚ¿?XOÞ+-Ú³qEBnZR­¯@ÝÏ$&·]eáÂ…‹-zúé§§…Ê<Ê­R&¥T7œ¥}æÌ™Ê+Òî»Ð¢¯‘™Ö@u_¯Ã©É¹ó’Üwß}“ýcpOkùkìYᯢ¢¢¢¢£*¥°»Õ ýÿª¦¦†gÂÁ— çÉ&y1íIXUT[[Ë=²Ž¹J6RgT™´¥ }2¤EÞUÏìO°kéÒ¥Ž¸µµ›ðäo„ ‡ÌCq(óñ­n™‹Ö™ñÞ<ÛŒntF+,º»týúõk!˜ÀÆ#)˜“ø0<<ìR] ¥ígø?ªˆíçùU 4D]ŸìP¥ƒ*ôõõ>|y‰-áHØ¢}%7:ªÉ_¹/q~ôèQØ’K[HœU$ÑŽzþÉ~ý½v}Ýqÿ3v#/ˆReLh'E 5 *ÄŸóÇüQ§Å(ÖZLŒ1YW­Ê0]7gQŠàH¦[[¬Œ¡vRwÑ i)½jw!^ìb…íÁûE¾„Ë.çü¼.>œï9çs>ïó~Ÿ“¼ž8ÅÌäÁÆ!ço¼a×Ð 7-.©‹Üj¬ÚÚÚÚÛÛyûŽŽ ÖQZ¾|yæwvvíîî–7µðSÇíܹˆmß¾}``ÀwÃ_ׯ_@ÀpÙ~²‡Å)!ÉíJ’ H»;ƒƒƒ€B¨¸F~Œc#6õû’wíÚ»IlhWR—$$ØEFåJz­`F&å$ɤGyNE__Ÿ#à"ñ8f^ôÖ;¥ZÀVÛÊž du¤ÈÁž3gŽ3,KØ6ôê"8ä?*IµÌ{:ê.‹[µ”yý°”äÊxK;@çvÒ“üœ* Ø5|Üž^=ZþzŽ5üÕ¨Q£F&U‹¿ ¯Þš€Z“´þzBÅ^Ê6«É[2™¬û¢E‹˜CHÅ4²ˆÜ&‹8»äg ÌÖtAÉ ¤91¢á¯¶R&,+uuu!¯•+Wöôô0·1Æ|/ªŠF.gÏžå‡=ýYŽÖ¨§óðfédéÈ‘#\ë¡C‡z{{%Ιù÷ÖÕ«WA:øk ^ÅÒãø ­ÇaÓЃ2B[¿+²ôk˜ì™Ñ¼2jÑ¡$ŸÃ£££¡Š pûX )ü¬¤‡Ã‡ ¶Éí_*ÁœeÁ F€~k^(‚ááá×Jv½iÓ&)ÅVsJqõò¯pi€,œËد_¿~Íš5ꫲæ/*© JY™ ô&¬]»vãÆ«W¯FaçÏŸCÀGŠB(:…$°¤ñÎ;XLžµ%'üe¦B€DeB@‡KöþRA5²åÜ÷k¥à§d&ᾫSžõëÔóÇ’ÅeCêTÔJV­iHJñ‹£u´$Q>í`˜†ÎD•“#†³%ñÁrê¼.xy¶”ã§j‘Š—^zI¢0é®]»V”œjvdÞiŸ;w®”êq$_nÐ÷K +3CaɼzÍŒj»,J°ª$Zåvl¦L™ò¸ÿ<66?hþRâêºÑ• Á«P•'¸àí ý¶Ääë7Ù   …¿ôd} ¸…ÀT¬{bcàaˆð´OË‘¶GCf¢»#YJ¨ùV@F`æØ”]c ¶|ß¾}`ÿþýX@ÉäYæS&–^ ÂK–,º2¿º„ªüTZ¸pá‚ÒsÏ=çdÑÓÓc5€Æùãµ4@$ÃXIþ…aö"ª\U™¹{÷.ÎMnÅJR>¤c§J#Ô#GŽ€ ”)CAÎЫr$áÚÞÕУò`A©PCWJò,c³ˆЧ¿¿?ÇÉiq<!£ælá•¢0aôööšòòzvDNàÛ%CÞÕÓb1ÉÏ‘³ÀëôÊÕ¦Ò¶mÛäJÂ]–3fäRäðkç9sæÌ”&„¥a¾´çi7Ó§Oםީ mܸQ´v'˜­[·>î?O!ýëá ÖðW£F5šTÿÁ_YoMÚnøëÉû-ÃÛJ(‰cdü¸Á¹sç²”ñ“ !ßȱg(R¿'Xólkkc#õsVÀnñÿüqÉW ž¯‡W_}µ¯¯ïÔ©S¼.‹ëɾ~SB"ðG'K‹1æQ›mÆYÇJ\q\·N,ÇÌ·—þÞ{ï%ÖýÚµk9Tˆ‰·á¿|ùòõ’ö‡~øAiâ„€€BXYAþÂG¡$mÓ>.˜‚烀322âô¢Â`ËÉRø‹Ì±å ãòâèèhxÇöß)ÙµÝMüÂÿ#/Î_>AÓâÅ‹[†Q a­*qï+W®„]žò¿yóæ=%ø &,-)Ÿw­¶eËü¥XëÖ­Cj6lУX¾+€‘ô“yaȳ2I2>’„O?ý4xK-€U2Rh+¼òÊ+ÞB@ÆöÕËjøÈ6/—BšJ G[å°¬ɼeM-É’ƒqþüy‹Hl°[9WÚ¾(6•ºsçÎßJÖñ-ó_ýuÓc¥´•¡ )ÇLΡù*’ùi&sÆ,288øZÉRr+ír¨ ο'žrq@®Ÿ˜Ë=J´A–Ÿ¹/FM›={ö³Ï>‹ÑܲôÐâ’ÚÛÛN´bðôúãþ›ñéò×Äÿe 5jÔ¨Q£ÿF-þšHak7üõDhÊ”)xàèÅà jåIl$CøÂ /+v1s"„»“™wub4^”uŒóW¾Ÿ–˜^™uç–Ùc~>¶–Þ-ipÈñ½†<͉gN;aà'Nô÷÷/±ÍébŒ}ÂQáϽ˨ƒ#6žuÏ¡ <|ÚFõsæ&pøW¯^5d>X G ,þ<®…ݼyq´úhäE«™ƒæ€X 'mYœƒÂ,‰V?0y³$'l`Ï¿xñ"«ïgFÍçówïÞ­X˜ aIû¬Y³øö©S§²îj´lÙ²Ÿ”vìØÂÒ^±b ëééaÝ­ HÑ 6±æ¡C‡v•Œš¼”É[ÈkuÉ:>êbâ&Á(­_¿ú‚ò Oì4 š¬ï+°1aÛþBjéííÝ»w¯Ÿ¶Òñ4Y‚®·oß–CKa1k*ŠŸú?þøã®‚ªÑû%mïž;wÎjbŒˆ_Š£3ã•»wï~óÍ7/}þùç_|ñHT`è,¥" Fž“üÈqÞ…’Z² oÁ<µí=“ÑG!RWWWÌ]Pn‡+“«¤:¹PJ¾4”/Œæf͘1‚å©Ç[VøAI LÎ÷ìÙ“Ó®RûÇÓ¢GË_ñ†¿5jԨѤjñWáÕ[Pk’vÃ_ÿûZ°`Ä2rÌ<Ó³ÇÆÆ2¼Éú©1þ|=Ï—æÍ›ç™þ!¯ÎÎÎ`WÏr¿6.ÜÁ³²êˆ,ØHVV#¬Aa®_•t¾]B (&$âEþ“™‡œ3ÔúEÉ4öØâ:ñЋMå±-Ë«3íÌüŸJp‰“wºŸosix¶Ÿ97áf©EXN]Τô‡ ²`”‚r~1kŠÜ¦bõ<(6 ²»$9øhçÙ[’·d GàÍ¥U«V!©¥K—J2O®LÓ¦Mû^é™gžáç ™³½´¿´eË– 6xJÆùòË/ÿùí·<€$Ÿ}ö™-$B’m»– =’ì»bR*Á¶»©ä´8<PT“väÙ ZQšþÒ@ɦ0 í]‹™jŠb.]ºÙÞW’¬¡JÖéñSb}¢5YØ>ˆƒoIàË/¿,øÓ§O[Ö[˜Ë–ÿQºÿþ×_- _}õÕ½{÷>ùä“+W®Ø,앟Т~]²ÏW‹¹ôø¨“æ§¶ïÐ ŒŒØ”T/_¾X©‘§¢¸A®†;â¦ä‚è×™»“§ëæNÍœ9Ó-óŠNóuæJr]«… ºYkÖ¬Qá9QÓ§OÜEþÿõÈùkâ´†¿5jÔ¨Ñwk"Õ?‡ÉÛ =âä~‰moogùž³ÇÛ³a±øFvÑýFã*ç•b#™E4ºººº»»þ ÄáÇ9í¾¾¾ÁÁÁŸ—¸ô˜yö•pÎq¶\4O"£3gÎxš`f ‹©¶ÈðððÐЧõOž<ùËR&8?> ¶nÝÊ„3ä>Í-‡‰øÔ­[·{?—~&\c´ÄÞ㯱±1=•‚iæß¾}Û»®ë¥°Xê7æ 5X9h?<ü7ûõúšUvÅqüÿ€o#DÅ *:-ÓÖ •Š—Ñ¬(Žw«õ~£"‚©A¢íÀбvìTlQG:¢¾(Á[ñŠ·h¥XD‚ªÆÎdúa-ž‡ É0…€"ç÷â°Ÿ}ö9{íµÖI~ß„¯ù!ü2qâÄÉ“'ã&õ‹Ð¸Ÿcǎ庒átïY娬¬ìÑ£‡2É?àõ6o^’v¹bÑÓÞÝÔÔÔØØø¯ÐãÇ_»ÛüêUëŸàE™f…´¦@‚Da*Žzl óжV®\¹.¤ÆÈKoàJì`+`Ñê®'K’v ”Oc9ÏôºúYWW§®ñ‹ÐÞ½{÷ïß/ÃÒ‹}TrÚúi“êxíÚ5¼ùŸ# ÏKÌì iBÙQ‡d—á‹„a;íªÄŽ]e¥ªWòWUUÕ’‡r>+«” ª¬økذaùʾ_R–Þ Í[¦1V¬X¡¸âô ¿é¿%ï¸:¿¾mÄ þ*T¨P¡Bmê5þ ÈÚÙæ¸à¯·Yýû÷ç—.]:cÆŒBýúõ3ù“7ÈÏ'‚ßè'+hlò½ÐKb ÁÇ„×òákÖ¬>›7oæÿÙW.z|âQy×OC<íž#æ–ЖŸ‡¸¬4à®7lØØÅ½»nݺ•×õò!w៯Uà€H€@ºqñØ€Èõ«PR«ÿ×}śЇ—¶€áOþ²¸â/18uêT]È<”ó*D4G~Zsüøqæ?Ñ@\A%Dä‡!Ì%ÿ@&Ýušóôêf²:ÆiÂ¥ZuÔþ¨‚•*brüøñ3gÎ\²d‰#3ÿ[BÎ…2¾ãsnnn~ñâÅÿõ£m 3 fĈ¢‰àMºÆI“&9ÚŠ’æÌ™£Ó¦‡”ÆOEÑ!jª|*.T šß»Ü&ä&…I¯Iå0^Y͆¡¬\Þ úüqvoÖ9hÈJ/ÁYÿ½|ùòùóçìÊ•+¸ÌüåË—/\¸`;¯‰VQ¦ìU•ž6Ó~ ç.ø‚ZJéåùÓûÖ,È~6’GP§ÃÊÉ AƒÊè4(¤v~.IAË¥”RŸ•Š'|%yÐØ·<ë§0?kÖ,ç‰í***Þôß•wVÈ_­ÿ—üU¨P¡B…¾ÊüÕšÂÚüõv +q†ÀdÊ”)éí9½¤ª„¸;6ßKæJ×çjF3Éx§ ¤ôÛ ‚ÕÄ>L5B^€H¥pGÒ'\f.¶Ö•iäc öíÛ‡wØZvÚØJ“i€_R2—˜¸ƒÈÎÞl°!änrÔ-`„ó7éA+mÇ*óØ_†:ä'÷nS·2¶dCWþYH‚ù[hÈÀãÉk‰&1—W8p¸Yp*pRðÇIŠäÌqÌÔÖÖ„ùóç'Aè:nÜ8iDa£G–L0å–+ƒ=oÞ}ÚÏı£¡#GŽdQB¥7ÛCb $Yï©£Ê*ʉ'¼êvr655ÉÆ½{÷rÆa˜Õ×׫©G³#¤Q¥Ù{›qWAUÓ@Óf»R¢Y²XŽ­‹/ž:uª.Ñi@(,¿/9’%ªò J){¯$ãÀÝò`š/ÑzcUX½zµìø«Ð›þóªcù«=+ø«P¡B… µ©2^íl…ZmŒ þz ÅÏ£$î—cgŒÓøõíÛ—'䇇ªªªü¬ 1x¼¿Wf40]÷¨Ðøñã½ø  ­[·¢!¸ÄŽþ±$ÎÐü§%q°*ÈÖšgt \9U®•L(£Ä.FÚk!àZ²·™ÛmÚ´ H²ÜKBË–-[¾|yMMeèfΜ9zÆ$Ÿo1 Í `OH`É€Éz8P&ñ±‡NÖ|J›ÎœÛ·&ÉÑA,ƒc|»g-;J|€`»Jò Ý¥}ÕªU‚ÇÂþuI ,³#<âˆ\©Rî.\¸púôéóC5{öl\¦|É8ÃKJ‹®RðgM‚©æW¯|AÐ bOAŠY¶Q *.\8:~ü¸°ëêê,Hð„Bù"dýáÇ=ò,äÍbƒTxJ0IˆRTÀP<£[ )˜Ç šÍâ_†TGYUPuä_“mí(‡²‡ÅZ“—™ò‚“'O&ˆ¡6gÑ'Î+]Ù ÆZ.{Ìy/òú¿ PôNÈr^ºt ˆ¹:o"X¹{‘ÆÈÙ²e‹öþCHd¯ÚewȃZåO!AÊ¡»bó,À”«Ö_œJõîÝ[–|_I¯48dÆ·¯4-ÁÍS&}wù1"µüBÍ@0§[~;¾‹7ýgæ]S‡óWëÿh*T¨P¡ïVkþŠm þz Õ©S'&äí¹e~oèСŒ1ÿÌÝ¥©{?ÄÔqz,"+hÞO ’¿\Mò~žý0ä…\4»Ë r¡IUÌ'è`}¹S実…ZWkXScwó)^×À5¡,ù‹qeÎ1”˜ËÒ¥K“³l‚Gæ…„ Œ±xœnÚ´i˜B•¹sçz$I øl­_¿ži߸q£Ȧë’YŒ’0Z•¹ÌAÄlAmm­ÇÍ'8XÌýŠüï¡[·néOøã–§ÌóðëÖ­¶¶¢´ïoCܲ³¸%Bñ»•€ ÁsM™2ejí²ñH'Kž\]zöìÙ½{÷®]»vëÖ­²²ò§!g<{ölòWYÍÍÍXãŸ!PvóæÍ„Ο?Ÿ‚ŰOš¡Õ¤ÄN—ïijj*àÒ?ü¿TãD§P”I%Mœ81“'O¶}(Š"ª”ÏÙzÇÌ È§Z|úK(P$GŽAO˜ Ô¸+µP \¦Û·o—1[c:u·‘íì"™Þlåž={<{0tàÀsçÎ9¬ƒß»wÏyïß¿íÚµëׯÃ1çE|öMä´òÙNª»ÝŽ@lÇŽÙ!º4©gïÞ½ZeOèÏ!GpµÆUz`íÚµ3BR›|Y*¨R@ y%·&‚å÷h0(ä§±•ênŒd=n¥õ^’§þMH¨"Ñ$oúOλ£ä¯oÛ±‚¿ *T¨P›z¿²v¶9.øë­RçÎy]ø€D¸åQ£Fñoyeê  g<<ÄéõêÕË 8`À ’¼ ÙBì_uuõŠLàK4øa>“eAA‡A‹<áÇ!Ë’YÜ2É”&¿°©lm®ßòrÖ7qìöâ-Å¿hÑ"`b†Ùv 8!ÄpòÞŽ \ýÌIÑrþÖC˜i!PP~ÐØÕšä¼"’+kC"W¼·«þ€Z2ðÓ-¨èÔWB/_¾|øð!vЫ _y¯2Îs£|ƒqÐŽ bahöìÙ‚OΫ;ËìRI+Þ·oß>}úôîÝ|UTTôèÑ£K—.•!ë%J`Å7--û§@½$M“è‘UÞôXæmõêÕË—/A BÈȉfΜéê®#[ ŽpFf°§gJÚÕ²§£@±4f25ü±~sÈ@öd ÔˆA­?‰M}£ç•fÛ¶mŸ„ ÐÑ£GÑ%Ä›øŽÕ×ףΫW¯šñçØ±c_†P†Ò¨»wïÆ}"±Š×ÔÔØZ¯ª&þÚr×J¡Zi}>Êò+Ð9™a¨»tiN5òAI£A~€å*+®jþ,äL.kMgÖ¸ê߯U’piÜ·oŸÄ¾é?<ïˆ:¿Zÿ/+ø«P¡B… }•ù«5…µ7.øëmP¯ÐÿدÿP¯«;Žã „ ‚ŒËE¥%mB ‹Ý”5ÛDÙÕ¼&·¸²JÒ®nºº±a8e»»®Ì-Rãºdd ®æ…JÒ0oá$d¡ÖAôOAôGÅXÿlÞ¯}¿\Æ53nmŸ×‡ó9Ÿó9ç}ÎyŸï÷õܼy3óÏÃî”ÁcØ9fOyýõ×3rZÂ_Ì?Ï×yûÝ’<¿žÈK#788zb29Û#GŽì.ñ™@ÌIý¾„§v¶„¿´Ä¾†h”|¬GV™!ß¶mÛ#-AŽªðØ‚_k×®• 0jÉ’%B3óyC©½Šîîî8Rå·Ksçε ÁÇÊRLl\«FVVEcÞÞ|óÍöAÿlH__ßJ!#‘%¼ ˜‡††DÎcÿµôÖ[o¡°gžyÆoóC‘º¡ƒ`IƒÜS²Ð‹0Ä `K3¶Êºøð¬qΜ9ŽF˵% ÔgöìÙ_/MŸ>ýšk®A^3K*6ÄZ/^ OÀp@ Àhòo¥Ïô pñâÅ_—ì’0B¢J. »”Í ¤l)Y»%ÿ¤¤îX5J!›#d¦íRøK;vL»>:ü²¤â« êºuë°Û†R’j.¬ê°ì¤õ:²Ûn»ÍÛZz¨$ÓàO¦øKittŽù9{öìéÓ§Ïœ9£å…Ò©S§”GK!©$¤xB‘¢ü®’€å¼ô–ü,—”AHWC£ šûSÉ£l·dAÚÉ6|Y‚àÕÃY^õ”Ôƒf7•œi²T’$“o,%{í€S°cÌ\Ži¢„¾ôº²üu9kø«Q£F«6^=9µÆ©7üõEPÃ_ 5üÕðW£ÿFWœ¿Æþ£5üÕ¨Q£F>]cù«þƯ7üõ{¶©´uëÖðų±÷Œ«Ï˜1o¸#ö½ã{Pg¼Ráî~Xbtï»ï>ÖzO‰¥äf¹SÆq° ˆLùTWl*ת²­ÄvòÕñç½n·3·Jƒ?Z6fÑyAS‹„çGÓ¦M›4iRGGÇ”)S&•&Ož¬ÞÕÕåÁ,ÀdÖ¬YðSÿ<¶ÉÅ Ú="áÑ•^Ù•|ø–²W6ÍÎØ®ÞÞÞåË—3Ïýýý«V­‚XÀ¢þPzöÙg™m«£­\¹#&Ø[{ÈKÛö •‰®¾újš=%ªëJí€Õ¿QÒÍ£€U¬1K£Dë 3Èì’a-ê[¥î’qÔ­B8V«¿¨V–ì°[æp­'"&›ÿ`ÉBžI²ÂžÕ•ê™N Y,¼òyè ­`_”lH0J% B.ÒÀY*?þå—_Æ/vUÒ¢-‘ –DèQ¨øë祒°W¯^-½bYÑÙBÂ_á5³HEù‰€°‰Œ=~ü¸ó‚*° Ž…¼Î¶t®%¯¤zhÑ ÉUaKÝGJ— .óŸ~úé N¾ò¨Ìí8\re4JŸ[ËŠ+n¹åûf'—–’$ ,˜_Â\¹öß+e¨M» wÍn23úØ ë5…HìäDÿ}¹uùë—±†¿5jԨѸú7þ*ÈzrÜzÃ_®eË–±ˆ±©Œ+;ÇÇ*¯ˆ×;Ç“/(i÷¨Âfëà5` .‘õååøÌ?¶tàÀ~näÑéìß¿ŸÏܽ{÷®]»‚]¡ªá3ϯ_¿~ãÆÎ:Þ5=WbÈë·%’…6/²èììü¬;ð•RG šM:uÆŒ¥™3gª#tÕUWmP B™7oÞœ9s¼Š§¥Z ex" ”…Xí6" X S¹úúúøê V¨ÊæÂJfŸÜRSN/éc½GQ©ødj)P†°´[‚Èg”RÑ®ƒ‰k‘9w¬¤\"KpèNÖ¡[ïü–ò9?ÈmÓŸR7«0NFÈòœþy•©3æ’%KäLÈ.X :’hîþûï×âÄ¥ Û³gÏÁÒ‰'Nž<‰tò•žösÓ¦M¾…oIÂH’d‹Tô¸cÇu©…Œz´„þd‘Æ\uÝ$Û®’Iüq"c”p–FK§OŸ>uꔟš>øà½÷Þ»xñâ‹/¾xìØ1„eófƇJ*òVEÞŽŒŒP77",æR¨?Pæ•ÆÜW&©n»pø’6neOO;xSI޹ŒUÂ_m²”ößž»¦¹¶¾íííEaâ|â‰'{ì±+ÿó£+È_cÿËþjÔ¨Q£Fÿ‰Úü5–Â.WoøkÅzÅÔ­(ñrÜZŒ1«Ì³qn*¬@àÙǘ½ðWàˇŒt?#ÇÄ2œÌ*÷ÈI-1“©Rý©§žâi_üÞÃ%ðÅ<+U2GÍW3ÉÌ*Ë‚2Û>Qòá¦à±\25 ø<ö—P6mÚ´±øaJ*øë›cd‹®- I=¸±uZ|õƒ³Õ^Až|åU(‰pSèé«¥öìê3ZÒA™C1üZ)u¶{ŠÙ˜éoøã“ðW)ä˜hE¥ÄP’Áƒœ¤ÅøÞ¢³ŒN4c¸Ìž¨gp}’0–™mÑÒÞ·öìYFIHyx÷ÝwK$'»~ýúuëÖI)*+$PÚV’ê!&¥·‡††dE2jGi¤»ä¹dÛÙÒƒ%?#JŸo)ág¥Ì.K·ááaÜ$o%6V:pà{¡ôüóÏc±K—.½ÿþûÿä“?þøÝwß}íµ×PØ¡C‡tÆ5èæÑR@Ì\– <íòyß¾}ééW+D¶¯´·Á$® ÒÀÀ ƒWèÉÅÄbA*A^ÍŸ??,–ìÊ u…õW÷ÉÂ’Ûíhl»ÎͶ»}Yš¯>Ûô?¯+Ë_—ñ†¿5jԨѸjóWáÕ“cPkœzÃ_%†÷c,ï¸ãŽÆ]³Á,Æ¿éöqhÜZ˜+ž9ýuPrƒ·ß~;'ÌO]cù«þƯ7ü5‚K###\œ[ºtiø+¾WÉÅf/\¸PKXŒ7fØ€ØÂòZ¼xñ­·ÞÊ=±m¯¾úê‡~ØÎ„7ß|óBÉ9sæüùóìøñã{÷î OmݺuÆ [¶lÙ\r¬[K,îŽ;pÙÎ;ÛØÅ¯  u¢÷ï_Âb“&M ¸@`ë«öPÅÖ)ñ¸d‘>†¨ø<ô¡˜È+Ÿëöµ¢™RB7/¥ÆÎ’ZÚ„%’6ª{ìÂné(KØz¢-'ëL-Zäè•@Ì&sï*IÍ+iW†+}• Þì¦Fâ¹¶%ã[ŽtÊêÔ5¦OÖ%’®R;xíÊ©ƒJÆ1äü~IÎ/ RH–¢âÔǾ‰'Kè.!1`– ŒÄ£ÅWF‰Ø ÞÓÓ³¨m$¹ òOöë?Äë"ãøÇqpp]äEwPQy%qbèiÊ‘bXVXJa¸%.é²²x«[›Y®º"––?NÛ[L —+ D"‚þél{’…v«¦ˆÉúc»ób¿ìuk×݉›ðy± ó™Ï|fÞóž™ï¾žØ쀻 {üñÇ‹-Z´lÙ²àPÚ½{·¿o߾Çc±ÞÞÞC‡õôôÔ.Â[o½åè¹uëVçÜÁV:án„+ rÚ)8æ²€/ìæ~™âÕ"-«W¯vé¦OŸ.Ú?¹’¡­\ÛP˜D©k·Ò\íÛ$V­b¯TŒQÅ`ŠÖÖÖá¾^—˜. }{~«ø«R¥J•* ©ïðW¬‡¬Wü5,š6mZ[[ß8sæL&s̘1w±aÜ_{Æ£ò¢<*+4Ó'äEyðÁ~øáºº:^Uíß¿ÿô™3ƒOB___oѧŸ~zàÀF”/ݳgOggg{{;¼B^óæÍCU---° mµ©°—‚427È Š–ãå„!Ïpçï¼ÂbJ±ë„äJ 8Þ´Ë3¦ðI¼UË qõÕWâBIÀ³ü¢(ºÁ©uÈc­CÀ-¦4¬IC@fI´7A[/*ðâl„DþP4¶(¾= £¿Y¿¡­=^[dœ ›…kOÿÄ/–¬"àËŠ®(ÊZjبÅò‰þXìªAò­àyÖ›ö$6É$É ë6=êl¥B ß…yõÿM‘Ú2Ú}\'ß*rM<ÊÔ)Sî)e<òÈÂ… ý(A§ 6«®®®÷Þ{ïÃ?m.Z·nWË—/÷Êã–-[PvG;vì@dͽÀä"ÁàDº­.µ%Œ.²œ…Á´ì£G[™{-W:»ìx]°¹¹î‰$Éî‹uièò×àÿeUªT©R¥¢ ¦°óÕ+þºÈ⯀Occ#€b·x0¾kTÏÆ'Çg2f±1io½õVæÍ'*š1cÆüùóÙ?òwÞ9räˆ-èïï?{îÜ÷œ DÖÝÝÍCò–Ï<óLSSSCCòeËæb>×­.ÒÍêëëÍe^V|¸“÷Ÿ¡Äå—_²`ï¯/Š·gƒÝß…<"‚ÀKpDpþ°B£W1Ài7æˆ#¼ªá0ÁVêú¤©kZ2&’ôÉcÐF 7~[$iQ ²ëBµÝ&Lvüå (Ç9 º9ŽŠ˜¢±–›o¾9cú<« éé•aµÔùP]lá/¢ýi‘PƒW5À´jÙøå¿ÊhC“†¼„$˜¤=9!I²_©‡@}¥s24»©(•¦‘…HˆøeÉZ¼õx{D•¥éÓ§Ï;÷‰'žX²d‰_§+VlÚ´iÛ¶mo¾ùæ»ï¾ûñÇÿ£‚ëïGd}ôQ~¸víÚåÀ¯\¹Ò=joo÷Ãåä¿\´qãF×Щ«.äî:::Ôƒ`(É\ó‹\“»ï¾pI¸€6Û”’„ª}ܸq·e¿lŠÙ#\v»ìóI“&åv‹¤£Ù ÷źtaùë|8VñW¥J•*UR5þ*xõâ Ô¢^ñ×Å£ØÒÒÒÜÜsÈãÁ…îÞ½ÛÁ@f¶¶¶çž{nùòå,誢ÖÖÖÅ‹›…ñÉp§í¿ CWñðü¼@P @UÔ2A*ØA€©<ðW¯P&D£¿Ò#Æ ‚™(QQ(Ã8f$ [χ£-'o÷ÊÙ¸c@£Fr0´XTø+låÛ_i¼®ÈøÚ³Ì`Q•³–ÉÀ …¬K‹Š˜­Ú«+„ÎL”µ(C¬¦¸¦H%8F#-ɳ¨<úVTÞªg pV­˜ŽT¤ÅJ­"c&QY!SbwêÞ{ï­««s;–.]êx;Õ(fóæÍ+Ú»wïÜ ÖÓÓóÁìÙ³R9ù0J¹fÍšçŸ~Eì‚W¯a4[¶lIË_‹:;;»ººPÞÚ¢¦¦¦9sæ¸ãðÎ"›e§ì‹ŠÃYÁÆœÆH»µë)~evßM‡`íEf¯¯¯î[õc×ç¯ÁÿÑ*þªT©R¥J߯ÁüUþ9 ]¯øë"‹—fêð‹Èñ`¼cËMZ8±›Š4²dºqbàkÚ´i͇=öØ’¢ 6°Ž1“gÏ;vìØ7ß|sòäÉ£G"¬”_ýõ¿îîî;v0“‚a5TžSTÆäWÍ;y ˜î´ý J(!ßαÇÌËsá×P× P°÷*p#*7é€8‚ZFÃ,`$ü¥%PƒMj£ ‚…¹‚-A›tÎà Qf"û>vìX™aÕ¬»úè"íÎoŸÓ’o­+ö^سdòV£%‹ß#D2u0JY¬¨'-¡êã­¡’Š,_Oe 0³|‚T™W=•@–œ¬2Q:X¸ö«Š¼Ò­V$×L&x‹rA”A-ƒy›í#ý•Æ´ReÆM™9sæ£>:oÞ¼††Xäx·½ôÒKo¼ñ†+Ð××Áz{{?ùä\ö /À´U«V­.ZS„¶@Ök¯½¸vîÜÙÑѱqãF*²×_ÝUêAÜ ÆÆÆÙ³g£§qE‚Ïn ÏþÚ‹;Š´(½s`SOý-Ó¦Ûb,vÿý÷Ï.¿ûnða¼P?~]@þúöü VñW¥J•*URßá¯Y/Y¯øë¢‰ûÂ5‹-’"‘ûâ²”¬·ùû¢¸2~ŒOÓΑƒMœ81csæÌyê©§víÛ·deÇÁ×gŸ}¶ÿþCEÈëË/¿üâ‹/¾úê«SEµ³q®¿ÿí·ßÞ´iÓºuëÀknnnmme™ÕY³fM-bÿÛòKT0Û&ð·#GŽdnUB #‹‚a.X,ðòó"Àr]‘¯Ôå$ü¶2¸J¨J»ÊeÂ)é™F\“žêÆ÷*0’‰…0Lïn €˜#1~üx&%M,ºë®»rTPXÐ2 »f@9BL>H õuDQ°1Ìø“%Hi ÷ ÆW¢;:[ޝjé¹)$'‰ªq«’Xíá,¯ôLþ1”>bK‡0—ÇŒsK‘©]MÒ£œ#´EêÙAu#{«”É|Wñ zàêêê.\øç¢––xÕÙÙé'ëðáÃn„Rg½< ¿])B^ÛŠ^yå7n×®]]]]EàKéƒo]ElëÖ­k×®5‘kîÎÚµ &Ø£ÚnÒÂb7‰9«¶SÉ@èlòäÉ÷Ýwß}~:Œüì³ÏÚ‘á¾X?R]@þü¿¬â¯J•*UªôCTã¯Áv¾zÅ_Al6ÒY°`ÁC=„§˜1®8FK…u¼½(8É•ñ“œ6É€!£úúú¦¦&~ï`ª:yòä‰'ב#G”===° ‹}þùçÝÝÝ/:VÔwúô™³gOŸ9ÙöîÝ»}ûöõëׯ\¹réÒ¥ O>ù$ʬ²|ñíðÿWPY  ™‡ +Ž?W øðÿ̼F€BLÐ PÐÐ-á+¥V¤O0D7 –¹jü¥âUÚkêiñ¹JMô´×¿.²ïΣî08ñêPËÖ(Çqõ9BΉøk„â, ÐÉ©…mGí¤yJ¥4J‘6U,Gxæ4iÒŒ3L—óipcYÒn(’I ºö,Äø€HJ ›¡rœ¼Ò¹Uzê–Ñ`ÌD7 HgZ´ë ¥†™Á±Z€N)ÂLAZþÉ~Ù‡d¹ÞqüàÀ ˆˆ8t˜t6Ö[±3Îæ`ãÄa«,•ŒDK{›š–I±-%SËLM¥dÚ›£IÙ›e¥H¤‰ý‘/¹ÞèÅfI-ÚYžöá÷åyx(;ìÇ£l×÷‹ß}Ý×}Ý×ý»~×ó|?<Ë0M³jÕªÕ¦ôôtSUUuíÚµááaÎÅÇùkjjâh444󩾾µ.]ºdi#‰ûÄyä‘zD&p+++ËÉÉINN^²d‰P‹- a1ZQ» m±fV®³ÉNÐÉ2f‰Ý_¼x1_Q\\|ðàA.Çû„MD—¿>„cŽ¿œœœœœF•Ÿ¿ ¯ö Ö(±ã¯±–»¨¨(??ûŽyÆYaðX-<˜ì%Â+†††ÊXàÊOJ“’’233™OxûömíòÐдõäÉzúûû¹¼uë~Ô"†¿p•÷îÝû‡éõë×oFF@6nuvvb)+**p¡L˪p‰PÞÿvù% )` Z> "À™ÓBX?7}f¢“»Â.±à þ•|âÌ7ÁS´b^¡[~øšbâYZ˜ÖŠÂèŸjâÙ ˈYà ƒ’§ðÞWdd$Îü&°‹š¡Nø:ž"¦Z¨¦iŠ##""À7 ‰êžPi<¥W‹t4˜œðv‰‰‰YYY^¯—Ç)Š–õ@C,)ÔÄl0Kõx<<8ÇÄ{i…´¬DéEŠA3rÅ«‰Æ«™PÏJhYí¯LB*^AÌ[ˆµYz£°‹»ÚG¦Õbx\33—|‘àŽ»,ûO¦¸¸8lË–-%%%°UGGÇýû÷9 ?|ùòe___kkk“锩±±à‚³ 0n577ÓyúôiÚ¿™ /ñšø‹i«««%@“ Æ‚N,€e1ÄVBa|·ÄœA}ˆà‘˜Á¿1‘|*!,,,>>~÷îÝ ,9¾Gl*èüøæøËÉÉÉÉé»È_öç0zìøëûÑŽ;öìÙƒë[hÂÊ`ã¾°X´8®PŸ0«ò`²‹ÀQFFvVÂéAXäùŸ&|ダ¬îînL6ÂbÀ«W¯à¬\åüE?wŸ>}ʦ`óòò6n܈eI¸ßñNRÐíbÂqàØrl?Ÿ†á§…Jðç~@@˜à‡D@'&pó㕨Ñ:ÑVC Ôš ¡–ˆ,paê$à€Ã|‚þX- ÊSTˆL8Æ—Ž{‡¹¾ ì:oôX?OýÒ¤¢ÂÆcï¿4q‰c¦€8êJˆÄ´ ¦éafðj¹)%%eûöíEEEåååµµµÔ[YY‘““CÿæÍ›SSS×­[oŠŽŽæÁØØØE‹1ϼyóx;kffæ÷'ù'>±¤—òæ®Àjîܹb(Xƒ­4Íñ‰~Æ0€C!ÓW3ì ó¨S±€ŽVƒ5’ié!Ã̦Ô0|©ŽUAAAeeeCCÃÕ«W=z¤Ï7##ýýý7LmmmPØñãÇÿj:qâ-iÅÄ_†jjjà/ÆÀG_›òóóIZBB›L‘m6EüÅéÖ Ä‰þÅ‹‘ø‹ñð3ð”×ëeGªªªô#ìäWùëí‡AÌñ—““““Ó¨z‡¿ ²ö;þka_‹‹‹ÓÒÒ¢¢¢ä±R8U¹PÜ–La8e ޹‘ /l0ŽÂzë󇲈½½½×;w:;;»ººÀ1ð 4{þüù³gÏiŸ›üµ£]¼x±¤¤[È+xõxg(˜‚˜H/"¸|áù¡µr‚OM!!! #Ôš1c† ‹X€(x‡»Œç®@ŒÀT“&Mò¯ä&õÐêRñ4˘_Л>{ölj€’Àuc¿k¢`@PEFaÂ,´Ü¥Ÿ8ˆ‚‰.\HQ…™"##a  ‰–NÒB'cha¨¤¤$ ,;;û/&° Ö€)¯\¹röìÙºº: ‚þ}ûö1Œ2¦Í0m6åææÒÉ{©%ægy|—I¨û©O|àKpÁa£xVŸÿ3Ÿôuº¥ÁéàÁ£úEdXHIÓüLB–ˆió ÛÊ´d€_ª 6ð  %?V.\༌|û-g„óÒm‚ËΜ9sìØ1ÒB[]] ¯=zô¸éòåË---à8&@…@¯°ØÞ½{óòòø É+W®ÁH‘¶±`í–­Ocå|ˆ @¿ |C'&&†9ùM€ïÆë¬M@‘¿ÿË99999ý7òóW …}(vü5¦rüõ}Êñ—ã/Ç_ÿ· .}Ç99999*?^í@­QbÇ_c¤tSiiiff&~I&…Á–gÆkáWñc¡¡¡2ÛòŠÜÂBGGGó8ì†å;|ø0œ¥ÍÅ%þÝÔÑÑÑÞÞN{óæMø«§§çîÝ»ÜÍhñCCCïƿ߼ÁWz½^Ød¼34M5AO$“ÔEDDjeõs  'ÿ±‰[þS€À¥âM.$”‰Ô '.§L™Bð‘‰[~ÚBô(˜d£1˜V3Ó²?ÖñjQ!…ÁÊY6µ!£Žß¬À(Ú%&l’ –ab†)E:5\ŠbBM¼”Næg$ÒOzáÜOLdžTó.ErâM|ßj]¿~ý¡IüÅáEAª#GŽ@UC8&¾êë뛚šÎ;'àyÁh§LôkðWAA™ôÖ¯_¿víZ6‘ä|ebm X-ËÖ^³à_›¸E¬ò¯±ãúRÄVfdd°ìòòòÉ“'ÛÙ›H :þ£9þrrrrrúnò—ý9Œ;þ;aD÷˜pªø^|#–I^ Å%.+¥~ ä—&.cccá5±Ö‰ÇrãÀùÖHÂVГ×ëMLL„˜þl¢œF€W”ðµ|ùr†«Åä3 ÂÄS›6m¢wš¶nÝJœ››KPd*,,„¾6Qi€ÃiS[[‡šÒ‚8pøÜÐ8Ôµµµ}ª©©¡.ÄÆüPPÃ’XÛ‚ þè“à‘Nì÷&ª]H…øX°÷óÁ&œ3˜KvY—Õù&bÎid]êAZF ÄH¯²ÍÞ±l €—œÎßRùëí‡AÌñ—““““Ó¨z‡¿ ²ö;þ áèpDY&¼(—Ø'Œ“¸¯ˆ¿ò-uJØ3rˆIf,n]]]WW—¶õ_ß|ÓÝÝÝÜÜ|ÒÄ-Üoee%æ×‘á{zz@°÷K‚g1É8·ñÎMðRyLx{L¬’Œëž9s¦ ÃÞCÄØT’ ~¨ŠOÎ-ba—ø &Ò°Ó4Ÿ>6M5qéoß'¯@që#“ŸÑxÑg&ÖÆ[(66Œ‚b@'`*,,Œ–K¢H  ¼:Dóöë?Ô«úŽãøûKdŒ…QÄllÊÁ¢BØé]êÅÂpÞ®óNç]* ·ÐR®Õæìš¤—иùcy#ÙœÖͲ+"^SÃÙÍi©•?r©éÊ›–º=x¿¹_.íÞæêšÅ΋ˇ÷ùœÏ9çóãýþÞ׳ªªê7!&mä[Z}È6)TWWW__šV¯^ýâ‹/Â0…2´*T 544È¢å!Y"V®\¹bÅŠçŸÞxi¦M¸…DäØæÍ›7…Û¶mSøüKÈ %-¦“i>ø ¢1™ß‡~² «C…ŽiàÀ€"OÊ Â,„d«³F†A\Ÿ„¿tÚ=Ž»Ä/J)G0ÉÎD<_1X×£GÏ“ƒð¸:µ“'O†“€kKhýúõnC’¶l#SqØJÑ%v­ ý-d"ÓzƒÖnÛ[G€pkjjÆï\œT´Uà)éšœ˜ËL2µ–¯Ó*JüucÈê~ÊzÏ”)S ˜uyé«ík­n䯎ÿË þ*T¨P¡B£u¤°®â‚¿ºW,"úÀT„x*Ž‘•⎠(í“©‡3D·„T€¯9sæ0{ ^KKKéX±USS“Î%íš28-ôºuë8ä={öœ9s¦ôTSˆ[»ÜsI„hìäPYY™­NKOI7€«_¿~ð æ+¨å²oÈ%F»:„€`T¯^½T‚XŽ7à»íºâŠ+ô'mù.'ß³gÏ´ô%ýW óˆaïÓ§OÎÐéËœ»@Juuµ"B[òEO"Ó²n•——WVV2óŒ÷Œ3Tâý÷ßÏáËÆÆFDÀöc„¡7îØ±ãèÑ£ûöí“.Q•|€KZ—Zˆñl2¸«–Åž}ùå—×®]ÛÜÜ CvïÞíñÖÖVÁСC‡¼vÿþý(Lfªô|3Ñ‚‘¥K—JÎ?…”ƒNœ8Ñ*†.ó ¤µj%àÔ”‰¥éÐ.uaùÐC± ’›ÛeŒÖSH$GæIÈø_†t&¼ˆípî¶m·ÿÿy4ŽÕH{ ZgΜ¹0d— ªJTk¶ÔOŸ>].Z´aA°¼%Î ´v›iùhW§ƒð‡²`Á'eù£G3f̈“¡9Õä,©ki.- š%e2»«Í_¼L5Þœ½‚™OfÈ¥,¸¯µº—¿ºÂ±‚¿ *T¨P§*ñWàÕãP«“¸à¯nwÍg>ôÐCcÇŽM¤b¥øÀŸ‡‚K-¥Õ“>“›Jã4jÔ¨ššš‡~ø‰'žÀSÜïù òLwíÚÅÑqƒú—†¸AþÖ>7440ì§}øðáS§N}üñÇÙ»wïàÁƒ/÷–\Zá&>¶BLo¾ù¦žÍ›7£*ƒA™$q™%üÚk¯I3Oá©íÛ·‹o¼ñ†|yóÁƒ9òÐñãÇOœ8ñþûï¿Û.6mÚ´aÃ3AvðMº6„ÌÖ´ÕÅÔ©S-NŽ9Ru€©¡C‡Z¦õVTTز IÈ2@ùè6lX"UVSrJ–_`-û³MrIvsWJü0ä {÷îÝÕ‘£”ýBŠ´ªªª¶¶ö‘G±„Ù!›o-J‘1Ôƒ³V†œÅ_CðÀ ð—V9×××Ï;w„ V:2d”<³¢üAКvþb$”]×A~%üVX‘X µð1{x×]wÍŸ?qä^¢rûš«Ûù«ã´‚¿ *T¨Ðç«#Å?‡Îã‚¿º]3fÌà“«««yÈd.>J› ÆrY\åÍíJKÉdþ.¾f͚ŭ±ÖMMMŸž;—zòäI†™›]¶lYš:bü8[Þ÷niiá«acÌE£³ÊÊÊ˽—\\4βƒBÉ_P gég¶¿Ò²’ËPÚú~—¹ËlCªD0–—I^½BÈ«„N L …iM#û¿Õ®Ï™3ŽórŸNŽ Ó–V|Ô¨Qr`Ú´iwß}·`æÌ™€Ë)#,h³>$ž{î9ÒN[·nÅ;îb.x² JJ:}úô… ¤ÐÙO>ѦvìØÑÚÚŠ¤Ð“„1C :uJûÏg?vì˜`K^½÷Þ{<2Økôžü"î3 #_yåIøÒK/-_¾|YHÒ666º,°¥®®î¾ûî?~<™ùd}}½§†&NœXUUe™sðàÁÈÑ¢n¸á‰aæ²ÂlÉ_rÕЖ»bKƒÝ²üäPY4&$‹|Ëî}áÊú†ªù«ãÿ²‚¿ *T¨ÐŨÄ_)¬«¸à¯nëøè£ÖÔÔ0Ò `ù¾8@Î;b“<C˜^±¬¬¬¼¼œc¼ÿbá-ZĶ­]»¶tšÌ6Úbá´ÍÍÍ7n\°ß[¶lÙºu«»ÕÕÕ¸àroÃW*7!¦ä©´ÙÜuö\sÍ5`^)í•W^ Çp™»};ÈH­Nl/ô Ö%¼Ò~;$P‰`I^zz´ëbÌ<¾qô9ŸðÅ[BãÆ“S¦L™;w®£_½z5žr¸ Y„€Nž< ¬Ž„öíÛ·%´aÃhs¶mÛööÛo;vìĉ縴m¡ä)Â\^…¿ý¯¤ ;üuéÒ¥C9úZ´h&¨ E*8pÀ¢™Mk{Û·›6mÂe}ôþb«V­Z½zõÊ•+ÿ”ä™L›6­¸¸…)Á^|ñEõ¢jF Çlû¨)%–®: 0Q˜¶¢Ñ þrJ=*@ù¶Ä=o<[¬JKK½»yóæý% |™9–TÅøËr‚¹ªªªÁ¬Tÿ¯IÎúh̘1Ã7Ð1ºì SÍ–UR‰XŽ…:Œ~sØìß¿ÿ€bÕƒš={¶iüž×øÀ©Ýù«ù?ZÆ_™2eÊ”éîjÎ_éÏ¡õ~Æ_í"¾cä£ ù"¦ˆg‡Â8å”gÞIܸq&L`2ù7Ï*, ºvíZ3Œô™3gøÕúúúÝ»w rªúÚH~ï½÷òóó;zõ)4„˜<í'’°Õo›¤©†ÂJ=zô@dÚÀ®à5€9éÞ½;ò‰™ÄcC­®IAa;wÖFékc&ÍûÝ™¿ä¸ã3Ï<óú믿óÎ;ñ?üðC$UÐ r2ÇÿꫯDÂP¹º¾•$çÔ©S`êðáÃÚcÇŽa4ˆÔxíZó䜌ÓÐÐÖ Ø¾}ûܹtº8ëV.k7”V?´oܼ ¸.^¼/'9%(‚×$è€/q¨5¬ûîÙ³'>¸ÏœQ:€õIÛ·oߺuë–-[jkkÿ–ÊÖ'a“Å‹———OŸ>¢–””h˜Îk¯½öòË/C¨õ‡¤€õ<‚MâP¡Ù ‚Q€QŒqÊ«·…Ú²m’¢¢"µ?')(Ì׈™ÿ²eË,dãÆ˜«²²c¢0‡k“¼z+Uò³fÍòÙ´+@%9r$€6l˜…ÏÈ“MrhQP+XREöOŠ„'š„ÝŒ`b âùδeÚ‘¿nßÄ2þÊ”)S¦L­êø+AÖ­ö3þj£ø7UVVÆäðEÜkÄþåLQX>nJ;hÐ Æ51bÄóÏ??eÊžI 3~lÍš5\ë… ØWðµcÇΙeݵk—GúöÛo3i&uôÒ;^0[õêÕëIè==öØc|5×ݯ_?}‘nݺ!¯Ç\ð×IWNE¦Â’Ö³gO£¹0ˆ jÿgI:u‚ÂvJ2Á.]º„“8IBËÙJ¶+¼¾7ß|ÓžáÃ÷%=zF"äâ½ë|ûí·'Ož„*"¨êv"/íwIèìÈ‘#.ùæ›o¤Ù'H*p õøÝLÉ.ôƒK.9tèÞQ¤vÑþýû!› ¸“㇠e@”dh+‚}2ÝB²Áã¾""ÇacccŒ†ÝŒã¾†B‘ÿH}èÏ„ašñ<ˆ?ûì³½{÷:eV6¹m¿mÛ¶“lûêêju±hÑ"Ÿš@0ü5yòäââbô:vìXœ26éIJ Âv‘Î!CžN5jæú]jS}ŠT10@µú²þ/Ù-ÅIHjÁ‚Ë—/‡`cK—.µ„+V±¨qV•„:­qyÒ»ï¾;qâÄ^xÁB|L2Z“ ºôõ°¨XŽ>ÓÁY¾06••Z‹ü¥ï¬%?~êÔ©níkÓÆ5>jGþjþ_–ñW¦L™2eú)ÊñWs »S?㯶ˆk⥵<›Ä…zê©§ÂïéðB:<•ŸŸ?nܸ1cÆpk¨-\YEEEeRMM WVWWÇ$3ÌÛ·oÿä“OøRÁ™3g¿£—{ ò0Ï4ª‚QZÀ•——Ç÷NúU\â½’ÄÙo8æT$§ ›St1àÏ“²t´âZ·Ö‘”™OÀZË©‚2#s×ü°7¾iÓ&Üq$ ì •óçÏcXtêÔ)„^Μ9‘´ÎꀗýIj Ë>|ˆÅµçòåË.wqx: j!5¼ô‚wŒ(¤füñÇàµè ⾫W¯b+‡\q6tÿIŠˆœë7n ¯Èqߘ€¸[௿'ù>¸µé¡KñH0=}K>qâD`ZÌbó1†e¦OŸÁpkii©~yyù[o½¥‚&$½úê«………([å,ênx’ê Qø%ŠQ\‹_:uêÔ..™ì‚TZ3/M [¶lÙºuëÖ¯__‘´aë³uæÎ;eÊ”W^yÅÇ:á/hé«’[ 榎ÒJâŽ'1NC‡e™X>ÎpôèÑ,눧ø±U«VUWWsbë’ô¡ÖÆwîÜÉ¢WUUé/Y²²1ð½ÜûQ'˜‹@PàOp“RuïÞ]ÇÙ®]»[õíÛ·ORP˜œ¸V‡q‡c¸ [‰ æÒŒ Ò%) ,îèðÑ$‘‡“ZÎÓ4˜ê3fpÚQ/ÈèJ _ÑbÌ‚­€‰P,,HíŸI8å`Ò×Iß%Éj ìÂeÇ“>ÿüsȦ5ŠÑµÆ‘oLô¤fsxu;ñ°Bs¨JkzX)w(áÂ… ‘ìrƒ¾ioܼÞJ‡Ò¬OíJª««CaòMØ)—ÜJ÷uUH41ÓÛ´uëÖmÛ¶ÕÔÔ¬\¹ÒþŸ5kÖĉñWyÒüùóÒûsRŽ„—^zéÙgŸu~~>HA1:J›ü>I_D%— 6Ì)/·ëKµ$š!øš={¶é-Z´hIÒâ&­X±BɯY³ÆG`C’Žï*¢D^æf¡IÖâ„å0h«’O`Y(//IÓÇ› ³ñž{î¹öZãý©vç¯æÿh÷Ì_¹éµ|¨Ýå–ã´åv÷­ˆIfÊ”)SK5ç¯ôçÐz?㯶ˆs›7o×ÇÕ„5bêÐøz:éÉ$¾(göØÂÂÂBþjÚ´ià‹ãª¬¬ä‹pVm’ÈæÍ›QØ–-[˜ÏŠŠŠI“&1ÿ½ÖûZœs§$(Ç´à«sçÎ"H ¡¤¨Þ½{(õL › ÊôeÊùMR0W\¸z'Iˆ4AœåÁz’m4wo9=A[Lž<ÙK÷–?ýôS0‘@ÞAL˜˜à/$òå—_=zô‹/¾€0€EI‰JB^ 0íĉ˜ ÔÀ.9Aa îܹsXfoR}}½Ûé 04pŒïŽ?üðƒ[7a.èäçPÐPA["—.]’|õêUñÄL·YcRÄåJPüe‹/Z‘É»i|vìØaÉ&öý÷ß_»~]ZŒ@"ð%³:I]hW¯^½4I¡M:½–••Íœ9Ý ÕQ™$̓]¸p¡³*«¤¤d̘1 K Ž9RÑ©AäU„ÈFå¬zT˜ Eñ‚”>}úx³í¸-‹ŠŠL{îܹ@L'àKga“Ì?pì¿ì×h×ÕÇñ`‚ˆÈÅ‘to\j˜X]–"ÚÑð: eôÓ2ú²FDqý1ÇJÌ’K9cu—»J…ZM³F kפÕn†W–\éÚM»VººFV÷Ñy³ñe¿Úv¿¶)Ÿãp>ïóãó>ßÏ9g¯§ÀÁß’äÚ„l–¾d+Õ…IsæÌ±©NŸ>ýª«®š:uj –­U\\|i’zTÄ'Mš¤Ïe—]f”•Þxã«W¯³¦Í㇚òÈ_?õ bý⯎ÜúÒt^ÐÔ)ØûÿžÞØK&CMgE’™2eÊÔUø+AÖ†në X eü•ñWÆ_—WþÊý_6`þêH¬§ÿÔ}ií¥CG lÂ_YC?ÃL™2eêIü•Ka=Õ3þ€Xñµk×rJŒ 7sæLn‡ÕQaø=hFRÀãTZZÊG-Z´¨¼¼¼ªªŠ«Ü±cßµyóægÚ…¹žþùMIÕÕÕ7ÝtÓ`/ôlÒÁbA^ñˆ¡‚’ƌ㓡ª‹“‚“H€¿ ²t+**Ò$¨ÛIã“ôZÁ_£GWŽ;6ì.uëÞå3eÊ”;î¸cY×]WW·{÷n…¶N$Ü@0KT°UKK‹³IPLûgÚjmm„iÈÇA0 …eÄuß·oßž¤(»ˆL„eˆWçÞ˜HVrPZµ@–nÈ ©!,qåïë¤j3<@LH%“–¤Æ¤¦¦&)yÙêØåñ_I²ò›444lÛ¶­.©¾¾ÞYPª»IàU ÌO<XTÀ‹³SŸTSSAgJO˜¶xñb¼ÌŸ?j9†à“œGç4"äl " æKÙyÜæ¿ÿþûñZ\³f<¥½qãÆ€Êx¬­­ŠãïìÃI€ä]wÝ%yØ57 QZμyóä)y¨å‘0‚™_W^yelÅÉ“'ÛÏ0-‚ä^ºóÎ;¥aÊ*kRÊ/õ„cyä¯èÓKÓ/ïרMøkjèg˜)S¦L½¨ƒ¿^mÈA­nê @–¿jÕ*0ÅÝ1o˜‹ía„¸#¥G¾(œOII û> ±â+W®ä¹,ÖkË–-øKå/I<‰ì|ðAæj°WyÖ¨ )ê°+"*X %9²°°ð÷ISEI8 RyäW•ØJÄÏÎͪ(£5û" ¹¶`ü3ˆã2A÷÷¤ÀŸÚÕÜÜŒ¿P˜Îú;v =!&Ç@µ%f£FÊïæ¼ùæ›W&I jYZv‹zùå—!§ä].Ì 0ÈiŸ<úè£nŒ’$™ãD&[iÿ!ÉÞ »¼]—¶ËÍ£IŸ+®¸BE“·ÞzëòåË×­['˜ß5å¿rÿ£õ—¿rëåŸu/­}Þ¯Q}iêÔÚ)þ‹‹ê¥Ã/NÕõƒöká™2eÊ4èÊå¯ôÏ¡ûzÆ_Óm·Ý¶fÍîŽgãdعÀ®iÓ¦±:ÅÅÅ3gÎÔ4=éê¤ùóç—••ñá<•±l'É€1“*|WX2­²²’a1bÄ`¯ò\ ‚Eõo’P€š8q⸤‹“|2A–…)YVÞ5œ­RS8[­:G7ó+h6fÌ\vAЕ4lØ0o×ÊÏûô‹/^±bÅÚµkÃr;,¨ ý-iß¾}÷ïß|¤Ž¿~DdÈ ¹`¢'>|Åà# ¦þ“ð%¢bÈv©ƒ ó(M®Îº™ )¿?}úd»Ì‰ª¾J\ÁV_~ùe´+ýEÊ0”2ú”ýðãÏŠ!r¶lµ7I&“Z „챸ˆDÔ]AVjÛ·FÝrË-ÈTöÞ—9èÊ#ýÔ3ˆõ—¿ü|`3ô2ªÛx§þ]ûäþ½¼¢¿}ºN;à%gÊ”)ÓQ'þJµ¡ÛzÆ_ýÕܹs7Å…Wçvø&…͘1ƒ‘ãë”3’§9sæÌ›7 ¿÷Þ{—/_ÎdrYLf}}=£øôÓO?õÔS’V¯^mÚ‚‚‚Á^å¹£áÇ=|]xá…¸‰eœ£K.¹„SUáf}Me‚ŜҮp¶*( |™Ê„¦-,,¼è¢‹À—xQQÑØ$&h–>øëá‡f§Ÿ|òINûÝwßE"°+ØDµ´´(q–GäÌÀ…Y:ØE­­­0 ã™Ï?ÿ\]‡ƒ9rÄ(Á{0é“O>1›7*?úè#}ð¼ú¾ûNåÔ©S"AXmmm°KT%ÇÙ»¢ŒÎP‡]ÊÜËÇ#°Â’±¢“dhÉ`0– =t)+¬èä ÔÔÔ(ŸKr@Ôr±è»Le£k@"Û–ôÊ+¯èùöÛoë©Üºu+ÈÝždžeË–Žë®»îš¤à‚ZàË'ŽcëѱUôùÎÄV\¸p!¬¬¬¬JZ·nÌlhh°iƒMu?ˆûˆ©øA\³K’äåæ2)))Œ*Öb¯Ú±¶¥Êåíbíjliöy Ätn0o‘t&V:XÊ#åþ/;ø«—©:Å»öìeÂE:â}|W¦L™2-êà¯\ 멞ñWU˜‘xàn¸!|Ž’ÉaáÂÔ‚EI³gφT‹-ª¨¨à¾ø.檮®s©ü9é‘G K¦ç`¯ò\ÓùçŸÏd6lüøñ'NäT§M›VœÄŽú‚lj|D‹YUgt¹q%£;£]ñqy]ó଀/d7räH掙gj»Lb6üe’Y³fA°¥K—®X±‚éÅ h ¡’CI€b÷îÝ‚MMMû÷ïךŽ?~ôèQ˜ƒ}@ ¼¢" :ƒ3G’Ž&é€Sb~‚N´öîÝë3ùÝ e¤¿OÜ FÁ79ÛTò/--½:)6s€Xl<Š>±½É®öÞÀ4šî¹çoÿSÒZé (¿üÕŽ-üÕU}yE_"]ƒ}éÓ—ýÿ?Z¦L™2 ¢:ø+áÕ†ÔꦞñWU‘ÄEƒ/·ÁãsÂðð?*JML]¤²²²ë¯¿þöÛoGmì7ÚÚ¸q#[eMMMuuµ¦¹Iƒ½ÄsSÇM“&MâB™Õà¯ð¢L©ïµ¦'…ÏÝk’‚Π–þ¦úm²Ã_ãÆSŸ0a‚ &…O6Ä$Æšä¾û¬ôõÂÇ9òdÑÚÚŠ’Pö ¼:ž¬‚°•mmmÁ_îØ±cÁeñCàIs ƒ-‡6Ò@è‘ÐSPþ‚Tñ 3@$³Å‹ÄMøMÒ‰'ÊþÛ.ÃùŽV—ù­PÀôÿ±_÷±YVgÇMLHü“øÑÄ1“Ešì%U¶8ÉL L0Ô„ð&”‘AK‘’ ̈àC_0(¬ˆ‚¨1 ²«Yê°„ÑÌL]}ë>¹NÚ4µ<<j§Ü¿?îœçÜçå:ç\÷y~ßæ:Ü&ËÄVµµµ°ËW4V¯^ | °kwhÿþýêÈ‘#uuu°±±±ÙC¹RŽ= ʼJ(ìž «7‹§6fÙ¹s'œYºtiEÈý$ä;MØå¬Å`±DdÞö õD6JÅòuÖÔÔlÛ¶mÇŽpSS“=·À={öØ WÄÚkG—x@„RK¢Ê1y5jÔ(÷Ï!C¤eº…(å¶T—±žžòSA{%ÛmŪPUUUO,³WtÕù«ã?Ú·Ž¿ò$Çfæ#ŸYòêÊ—œ)S¦Lÿ'êÈ_ñçÐu9ã¯üŶý6ıg< ÓιyÞbÛ8"¯8:ŽˆM*))™={vee¥¾kÖ¬á67nܘàËOþ‡3äØ{{}ßqñÒƒ rXl*ã}O›’o?;¬äàœ ƒ+..fwÇŒSR︬³Æq̘øëæ›oælû÷ïÏâ–••ý*4yòdƒ±ç'Mš´`Á‚… ²ÜûöíóQà@q"Äl%Ì‚üP0Å$ ÂMçÏŸOìóï6¥2P:wîœ6Ð#±•r}}=ê? vðf9Ò p577«?þøÂ… ¿ús!cªSf4oj¬––ÆWãmsÈìÊâl¿v ®ÒB ”À’ivRƒ/PòÚµk×ïCøÂ'.6oÞ ¾€’kä¡¿†p%Þ´-B:uêÔñãÇ­ñäɓʉ@¿øòËúì3Tè'Xe ÙÀ»}ûv³¬Í™3Ç·ì(¸Ó¹»MÊ#GŽô„6NùŽP椯~ùòåîfPç;ï¼cÉNÁf:bø‰ËÖ…D>þüéÓ§ËL¦+HNÊ. ‘É*Ц†Ä/K¥=æJŒ&oeiú)±ç†žxâ‰3fôèJ¿1]Eþj½8ˆ].]×]šè^÷N½r‡‘Ï]¶¹Ø,¹;^rº+ܱL™2eê]u⯀¬º,gü•8™Å‹Ï qM¬ŸÆÃð3 Ì;Ç©gÎo¾hĈcC¥¥¥UUUŒ7òÚ°aàzî¹çÒ“'\¹r%OÕÛëûîë†n¸ñÆÿ™Œ“³»/äÔ|yòçˆéÁÙ¦ûï¿ß±r¶ƒCø«oß¾ P¾õÖ[Õó±U¡yóæé ëx]#M”——;w$‚ P§n„¡ÿ¯ÐgŸnQ%’W&²öOC¸O›tõ)C0K€f·ï¾û.èƒ`«B .œ={¶¯¸¨¨¨°°Pà—Ÿ·IVtD˜Ûn»­GÓÒìÀ !¢Q›°gÏéñÁ¤]m « =ûì³ZVWWO™2Eä®ÁËç”±$x‰]¹ÄK¨%9ø½öjÜf*5²!/¾ø¢íÑ•~3ºŠüÕñ¿¬{üÕzÅ4ѽî_ïÕq‹º1E—m:UæÓ&Ÿé®pÇ2eÊ”©wÕÎ_)ìb匿rëúë¯_* ñ9‡¸ KÃDyòçÉ¿qDŒwqqñ”ÐÃ?¼lÙ2Þ)ÙNV‡ç䦞zê)Ϲsç¿·—xM¨OŸ>é¤8ÏŸ…O5*™ØôT9aÂДÜ)ŒúEÈ+• ο•Lì ˨«,++ûMè‘G©¨¨?~|¢9cNœ8±²²Òé œ•àë!ŒêêêŽ;¦¬>¡ŽÀ;í áûº‚KDeKKKzå OðWCCƒîÆ]!,F@¬SM©%Â2 ¤2Tš‚”5€Z镉R j´‡?©Y"»Ddb€]Ÿñ…. ȼVôæ›o¢øc±;B;wîܽ{wMMͦPâ/Úºu«·{÷îh'Nœ€iðD^ð0ÅI¦H&x jý'$Ø~û}òÉ'{<„Cm|ýõ×7‡|wˆ£¼¼Üi6 È8¸»C‰¹|Ú’äG!Ì"mz4-塨Þ~ûm{µk×.û`ßì€Õu¼Ò­bݺuøÑETZZ*3…'ZW„4ˆLvZ‚ W¾óÎ;¡–ü2dì²–;Ú”(ìÇ!û°|ùr—’r®ôÐÕå¯‹áØ·Ž¿r •£þ²ÌsÒK®è w,S¦L™zWíüxõBÔꢜñWnÍœ9“a›4iÒÈ6q>œ[aa!«sï½÷²:ÈK…S©Kƒ¼f…ª««Y>Æ{ýúõ '{úé§W®\©ðØcñü½½¾kE8—#>|8³z_ˆeuX£GnG0xÅÙN:Õñ=ôÐCα¸¸¸ÄHcÏ¢¢" à¸e€XÙ[n¹…o—$!†vÙ²e †Â_f3f þâryì#GŽ=z”Í>‚ ~*ðØx%¡³Ä ÐaåùIøƒD`ˆ6Þj¦R_p‡>N:Õ::}ú´·Ú£•q EùìÙ³fQŸ*Ñ–Ÿ©œÈ2cš"ÍøÏ 2µ)Bp¤ÒìÈËm€Â<_{íµ­!ì°eË䥰qãFŸÃïB ¸LàÓ\¤`p@—.´„Wb@ˆMMMiLýi¨Óí'0 >üðô) ˆW;>ÀùóçOŸ>Ý7›¾b§éøˆ‚ÏÑ$N¹ýöÛûöíÛÓ™9vìX|ºÿ~¡BE,vèÐ!™`:-ÍBV¯^½téÒªª*y(þ„Z‰¤°ä]¡¡C‡&Š,((Ð`HH¥tõ|©÷-Ü1bÄ´iÓ¤ëš5kúõë×Ó‹íQ]uþêøÖ þjÍ8r¼ÊÝ÷²zå_]ìv%5ù/ùrמ)S¦L½«Žü]—3þº¤ØòǼ¼¼œåþi(Ù³$6Æ“ŸÇ_Z&?£åäÉ“,Xðëc³jÕ*Þ|mذ37à“O>¹dÉ’ &€‚Þ^â5$¬ä€ÐPqL.þ3ñ—2àr(¿ ᯒ’G™~b+¯Æ¯ú“Œzÿþýù[#Ï -^¼xÑ¢Er@Gc…•––Jƒ}ûöñؾ—cÇŽ¡-ä…¿<ˆ|2è AÀ”ቕp7ÞB@ž---ÍÍÍ@IƒhßØØøç–1ÂßB |¡ªÄ5@Éh*5n‡#Ÿ©7ž2>ºùoH{3z«K¢³–PkŽ‚ö‰Î¬¢vÞzë-`…¼Ö‡`—äG[®ØõüóÏÛ •¸C/› $Á¨Òàfsâ/È)BmÄ ° €mˆaaàóÆoì mß¾}íÚµøÅMåP|¹…!òðáñHq¬ß ,fü% ,¹ÓÒ¼¿+ÅÝ"?!˜hÁ—ôóLWB⯡!Ìe] Ç,ÊÏÄe! l]±b…Û©§WÚ£ºŠüÕzq»,þj½øäHã‹uÌ­ÜÓ}ýU—;™»cîfù·É|7ž)S¦L½®NüõB—匿r覛nbr*++ùíaÆ%ŸÆ±03˜‹[c~øv•žì 'Ïl7Ž™™7oÞ’Ð3Ï<³9TSSÃs±G}Ô°ºôöú®99»¢¢"gô`›“ü•XÌAëY³fM›6mjˆÅ-•••«™3gB*P6qâDÝï –K÷ä„'†***quuµî²BKY1cÆ ¶yË–-àÕW_å±ÿzÿý÷ëëëáþb¿Oœ8qæÌÐôÑG%>B Á.p¡ƒ€”ÿ±_ï!^VyÇÿ‚þî! 2ØYÚU6/¨!L)cbÒ²c6”…iFxeGG¼ ŽÎ¤Î$&¦f£Ó‡Ê%ÒdsÖK¨µ;•Äî–—¼´/Ηùíq­qwžÃÃ÷9Ïùç|Ïù>g>oß’jiiGŽñÈ+}“„˜Äè¶ © 5þ–¤Q8“£-Ú5rþb/h7Ntb^êO7OH2c677mMª¯¯G +’—Ø·°dÉAuu5(Û¶m›”¡¢Áãífx&É×èpéü¬”3eÊ”é†RŽ¿ò)¬£8㯎„¡ÊÊʘmæ„+”ÄÌ IÂ_üŒæ'@¬  €{·Œúܹs$q›Œè¦M›NöF‹¥ãö»;¹ž¨â ~ut›8ÕqãÆ1áÈË.{:}út´õÄOÀ%ôd7ŸMe%%%³fÍòT#4bÅÅÅEEEácûõëÇÊ‘é aÕÉØ$ý+++7lØ€|/ÐãIøˆßæ½8€Â|2NBÀ•À« §¯“[.ÀM@C†œEY'Nœ8~ü¸[øöE”‹žARèɰ§N žÂb¬é|¼(8‹‚àü0x ý¹=›ä½H`p¯3mðØÔÔÔÐÐP[[»: g­Zµ |-[¶Ì ‡ººº€/išC$ˆãVÀa/^ºtùòe/Íñ—{´…μ÷Ç ‚=Û•ž¦gM@nSÒ»ï¾Û˜ä½>F_¥Ý/6ÅÇ @|ÈÈÅwSàÉÀ$´âjg»¦>wîÜi;,²üôÓOM‚íK²ù Ú§Šå-//W¨ê6²¸7éþûn¤ÛȈ×wÜ¡±oß¾®÷$É‹yªD­‰­tM¾®Î寎pì—ñ×ÿ®rËÛÝÉ”)S¦]9þJxµ.µÚ‰3þjWl3»(š1Y¿KÂ_,Y—ưmbW.(ûœ9s***–$qž IÌó@×ÝÉõP1¢àˆ>¸\ƒ¼èIO=õÔâÌ]ƒÅ¦&MOš1cÆ‹/¾èª‹Íž=[¬õsÏ=WXXȃ1'ÈkxWí <8L¬Ñ•ôÑGŸþy®{þüùUUUë’6nܸvíÚÚÚZ6ɘüÞM7ÝÔÝùõP±PˆÉ,H3fŒÛ‡~xìØ±¶O¬eâĉv°¤¤Äîs=›ÄâΛ7Ïþâ/ñܹsíreeeyy9Ô*..V¬ì¯“à(³×° â±ôÆç¹téRÂQÜ& †¼¾úê+F JÂð$ðÊ#øƒƒ¾Lã/WýuFUˆ]÷+ãè­InuÆeÇ÷Ô˜~…§Án u:Éí…‹‘‹+G8ËPfA|_·)Æ18ø’ÂŽ;pM}}½‚kÖ¬©®®Vók’–/_î‹ð!¼òÊ+Òoll1ÎO‰•¼t‚c&þ®qÊuD^¡@Ëk©wíÚUv'y5sk&3gΜ4i’·;P€€BùM’X‹o¿ËxĤ)Xa{§+„|ï½÷,Úk¢ÑÚ.\¸Piå [½™¹ƒK ‹;ï¼3¸,ŠSF€ ”Ý“hÖ·o_Õ«nŸyæ% Áº&ßÎU'ò×OƒXÆ_™2eÊ”©]]Á_ ²ÖµgüÕ®2þú¿TÆ_eü•ñ×õðWþÿ²Œ¿BÝ=‘L™2eºÑ•ã¯| ë(ÎøëjñÛ¥¥¥¼3ñ+,J¸—aÆ9’a{ ‚?~ܸqÜ5αè‹/æ9ë’¬CMMÍŠ+-ZÄÌ÷êÕ«»“ë¹²‰ +ü6ñ«ã“Ì^=1ÍH ø Ú¢²²²9sæÀ.1òRÿlêÊ•+m´ÛÇ|ĈÊãÞ$bX?WøN‘ß«'Ož Ù¶nݺgÏž°Ót( !“'Ož8q@ Ü¢ÐÄ„C!íMÂ&ž"ß$a+=ãišß¶ †@$ crõÏž=kœóçÏ…~H2 Æ@­èŒ~¼pÁOž~‘ä©ëÁƒ÷íÛ·sçÎÍ›7744€/×õë×[™ŠŠ 5_„È6lØ`­PÏ[o½…׼€&”¾ÿþ{Þ9s&æC(^]꘰<:wîÜå¤+º0ëƒL­mss³jOÒÛo¿ñk¯½á†z°ïÇ÷¥ƒ<‚¿‚Mb7‡ bgo¾ù殩ҩS§þ+—óç?NB‘ ÆR[p듟¯\,µ"tþŒMŒàËœ‡ Áz÷î¦åî»ï¾ýöÛ¡–8equÊIV­*fû¥Ô»&ßNTçòWG8Ö£øëŠîîédÊ”)Ó ­%¼Z—‡ZíÄ]!Îü¥—^’+Âpe àg&±gœö˜1cÀÛüUTTT\\Ìl³èóæÍ[µjŸYߦ—_~yÙ²e1rÝ\Ïÿ|ß}÷=øàƒüöïÛ”ƒ¯ÂÂB{êÖSÜ4sæÌ^x…q¡ó“.\X–d]a÷Ž2Ö®]+Ðg!¸ðíªÅ­JXºt)‚Ãt&LPQôs%±cÇŽ¦¦¦½IÜõ'Ÿ|‚³ZZZ Þa°±Ò±cÇ'i_hôÝwßIÒˆ¡p~7Ž%A-ƒLù•[€¦§jà»Ó§Oƒ©à»¡ð=Á‘Ÿ»žKk‡H®J2µ;éõ×_Ç_°+à pYŸªªªm×ÕÕIÜAqàÀSÅ\Æ4‡˜§Wÿ”¨ èù_¼té—~’2¸Àl-ãþýûÁ‹u~? Â|ðÁ×®]¯¾úª¶5öÝ—»|àƒÆ/#’|°ñùÛÓ>}útY­Z½\:IR$R€`Pµ\‘ò–-[YΟ)I=ôÐÈ‘#ÍUÉ"¸Rvq £¨Õþýû‹Á(HÙ‡ hkkkŸ|òÉ.K¹SÔéü•ÿ­gòW¦L™2eº~åóWúçÐ~œñ×ÕêÕ«WiiiII 3hÐ ®Œ?a§•Iü‰ÛáÇ5 ‚±7ÛÄ]/X°€ù\½z5«Y“ÄÆha๚îN®Gë–[na>‡ öØc·‰÷J¬¨¨(|8Vš6mš­œ={6øª¨¨¨L*//·‰QUìòòåËù¦M›Ç¢E‹T>Ž ß®< ®³ècÖ¬YO?ýô¤I“&Ožlp-Û·ooll þú裖ùì³Ï°Rkk+°‚Q_$}þùçð .ᬓIÁeºiM … N%qì_&鉕Ž=ŠtþÉ~¹ÅT•daøÄW|ãE1^ºÓ(‘ F‚ŠF Š40ÊM$šƒAÃE¥mB@¹ÈUI‰¢€1›ˆ"¨\d¤m[uâ(xëùf­9Ì‚3Æf8SH¥NíÚµkU­*þïñãÇ´?{ö æRSªzùòå_Eà%í´(Á_ÔÁúƒi•QÿNM"ýöi3üedddd4¡Æñ—@Ö‰ ë†¿Æ ã[ÆùùùaEp,êÄ00 ­â'V {‚AU˜và+**г²²Æ §*'''%%7îàà`ïàþß‚±wXÓïD0>3$$„í£B ø»G@´ ÓÊ‘#Gà/(ƒÍ¾ª««O:RÅÅÅmbйD;ý7\qDDF·ììlhÝ,jhhÀZ_˜êžžª··¿ RA= œEå¡H¡ ˜‚¤ô©6òbww·öÓ~ñ"?)Ÿ?NgJ` öá]‡¶”¿^‰À1m¾¨+|é4(©ó­›7ovˆ˜-ØÀ\„/°•••¬†¦}ff&ËuTDKUU·42ø½ÄlYì‹Å:5¨Èloˆ®_¿‚566²æð{Áv“ êùóçëaÿF¤gŸ“’¸¸¸LŸ>}*Ó•¥¶¥­­íüùó—.]‚™<;nûôõë×,r²ˆˆbbbÈd___à‘@¨Œqåœ9sÀ.777WDF»ò—^tp(ÇÛŒMœÊ§&‘¿lÿ—þ22222úñ—-…}ªnøkL«V­ÂZÂÊ•+1c_Y…3qvvöáOp/´,[¶Lá £ŽçIMMÅ–ãÉ1Bß‹>Œ÷ÆäØ;8£hæÌ™«W¯þVsAIT௰°°m"v322Òb±À_ )))‡E`»yHD’°Å¹¹¹”àdÁvkQQQ›Ep‰ €œœ–'"zÒ‚á·A6˜vãEÐþÒž òPôôéS:ÿM¤`¥ƒ0&ƒëP´¿q„•Œ /ÑïÒAèÉàTøÖO¢sçÎA‘ðWee%9fT®HY•JNNN¡ˆ>ÍÍÍ]]]°¸Þ¾{7v_}øŸñe¸ˆôšºzõªVÀÞÚÚÚÓ§O³lʶmÛüýý•D8à‹D $âi÷ÀÔg츈ØYf^SS<¶··³w¶OE¤âÞ½{¹ÍHrR‘„ç*#4î4‚‚¹æÍ›çl•ÞrzŹºº~%¢ñDGG“ºdòÔþštþ²ýføËÈÈÈÈè?Ë–¿äŸÃÄuÃ_¶Âi:thëÖ­€•»»»‡‡>d¡ˆÊ‚ ÜEÔ)½½½/ [pp0ðµoß>,:ž¼X„£+((Pߎ¥ÇóÛ;8£ Ãùˆ½ à_@Shh(»Õ$ )ö4==+{@Dn°›Gý^tðàAø¢ªªJù«´´”žÛ·omܸq“ࢨU]] ¡ð"Æ855µ¨¨Z9-âì455SuçÎ|50ò€`ŠH@õ_EÀXDO^¹qã{{{ù 1eCCCàýÿ"µèÿæÍЉG¼Î»4jO¥!€ ìâ#ÌOÚÁ4àë3Áó38ÃRò¡&ä‘çà±”••QQì¢cÅ(O‰.^¼HtŠL€ùLÍMHP, ÕÑÑÑ,bæ---ʼ°cÚaø‹Làì/Y²ÄÅÅÅCäããóãç¬Y³ì•´¶AݺuëÂ… õ""b=ÇEÍ$%%¥¤¤h\ä¶——ó×’ möìÙNNN_‹øI€z¿éåF])Œð*??ŸWìûçkùë·Oƒ˜á/####£ 5Ž¿²NLX7ü¥Â‡`“““7lØ€ÃPÒ¨>‚%S'F;eéÒ¥k×®]·nñZ,Ü8žÛ|a³srr`±ý"WWW{gôobC¿`XˆØØØÈÈHœ*u øŠ‹‹#Ã322 ÝGH t"Ih¤<~ü8[Ìv_µµµ•••äv7RÍÅÄÄ$$$`ƒÉššú€'ŒÌ8$ ïžqvZ[[»ºº ૳³óÞ½{ÝÝÝ”P¶ô÷÷ÃJï?|àïÕ«W Oy+\ÀJô„`%pƒž¶‘þ„ã¨@aÔ“è mB _üÑÈ·ô‹Z2 Ægäžžž‡"&yAÄü DyyyZÑ–¬¬¬ììlVCWIùNdªL€O|üøq*/ÃÑ·o‡‡‡™ùO"˜Kï+È…þª¨¨HLLŒß¼y³¿¿?âææ¶PÄyçüRzzzòÓÙÙyÚ´iöÊ[Û ÚÚÚI<]Ûq!“¬?iF\ä-)ÍeyyЏÁˆÈͪ…V-Z´ˆ§œê\qÔ¹å¨sRØGR×^¾&‘¿lÿ—þ22222úñ—-…}ªnø áœ1x0___¥-œÉâÅ‹A0XŒlÉ"‘Úooo¬;°†Æœÿ ¥૱å˜öôôôM"{Gf4^l¥n ˆ#Ú²eKTT9@ ‘%''ã`ÙÇx>7›––ÆæB………lwiiiuu5`UVV–›› jí`” BÉ[<Â'ƒZ”ô¡d#U”M@€öövðäÚµkøjø Úêëëz{{á¦ÁÁAX tAF4ÂA /:ÐÿÑ£GÔA*: ü,¢…Έ"zòä‰rÐsÑ‹/FFF€þhä+ôa(ú+¾é8ŒO/^¾|¹ZÄgJJJ( Ÿ@hae‰¹¼¼œÆzà‹FGG§ø>dõ˜›¨©©©YÄ•ÕÐÐPWWÇä¹ÍöìÙCÀ)v«8þJ" /üœ1c†S×6¨ÖÖVvx$زq!Ÿ9s† ¸š’’’,KHHH`` ŸŸ÷›±p­¹ÿýr©jËãø!„éBô@5š¡`0¡G”n™N$åŒeš•þáÅ’é…F†ùÖ-µÛd/q,{h’ ¥EM¢·ÌŠëÌt¯Óíá k²î|æ÷ÃÃÁ9:—‹y\d±Î:{ï³{­½ü~Š¢dmÙñ±=:øg±bÙÖ¾œXþÿdrýk<3þe0 ‡ØüKôê˜j9èÿ²Z­äj¢2éËÏÏàA‹j¡`duooo‰öôB& Á¿6oÞÌYœK±ÅBEEÅ‘#G!±{ Î.Î0OOÏÕBbbbBB3•””¤f“¦Ý»w\I›(Ø.!++ uÂ, ‹ŠŠ˜hµ020–Q[[KŸ©ß'æ¹Hjj*òÅu8òìÙ³õõõVZZŠÓÑrp™À ^€µµµuvvâ)‰uêêꢃˆ©I}' xš¦ý/^àP(ÆÀÀò…[q0þÕ.p5ú]zõòåK.¨b…|!nèþ5òñ#jp ¦ÖßßÏe¹ ㈗å>©â¬€^¡ŸXduu5A ”´Ø%u1xùòåÛÂÇù-~{ø022e;!EQû¿/ ºjaºk¡`RPPÍJ`U ¼Ý>‚——»A`` Ê¯ÿ¼yóœ¸tçÏŸo+YüΜ9Ãò£¢1…³ØŽð/V#+0999>>>::šê‚ƒƒ- E-p.>ª‹Q,5þZPÓ0""‚W FˆŠŠr☘I÷/ûÿhÆ¿ ƒÁ01öþ%ÿ÷¹ÂÆ '¸ „Ü…:?4tA@@À2AsKXXyfÛ¶mû÷ï'¼‘6Éä„ê’’‚œªœ³‹38ÆÃÃc@ÞNIIQQ¢OXE—p®½ãdNæ7SÀ¿ˆ²H››[^^Τ£X¡ôâÅ‹Ä`L¤B8x𠪯 ÊÆ)¼ ªUWWÇY999XØ7BKK ¢tW ƒˆÑ¢`ê\h -ú :†©=zôH] ©A11)ζÐ%ÎíôFøVÕŒã1/ú´*ztú¾Åæh¹ ¢ô½ÀñÈ—B^.]ºD¥ê_È—ÖËs :ú'Šå-àìàÆj=#—ÅQEüëÓ§Oïß¿Ÿ‚phhH-•Jï ·nÝ ¯]»Æ½555á_|äþ™Ž¤¤$v€   ^ðłʈv´”9wõ†‡‡Ûªc©°¢Î;ÇbÇÔNi¬Û={öPË[,&&» ¥Ì@]ŽMO77T‹ÚÙú2ú¾¾¾ø[ÇÅÅ ]]]ûÆcýë§ñEÌø—Á`02Æ¿D²Ž9ìOsÿ ˆÜÛ·oß°a‘ô¬V+ádÑ¢E¤˜ Š`"""/â:„8M±Äì2pÎÕ<==]œÁ1îîî´ K"šâY¬Â*J?###==:ÌfŽ€|‘cóòòŠ‹‹ Ž=ZYYYUUÅÔã ÈÆL• \ ƒãøC‡ábH}NÔÃ*þ³€‘ñúܾ}ûÁƒèªòøñã§OŸ¢ |D[0ˆŽŽÆÕ¿ð)FGÐ¥ÞÞÞ j[èãÿúúúÔ¤8 Ãb„΃œB‹^}? pq.‹‚Ñá+:Œóë­­­ÈWCCÃ)¤ZÌ‹rx:H‡Ç‚–"kÔ¥ÖÃé\ó¥€|MÙNHÉÜÿðð0¿þW[jllÄMð¯ææfä‹¢FæwÇŽ‘‘‘¼ãK—.]2ŠnŒÐòUaý8w'&&Ú D'™…úúúööö1J;88ˆ+á_YYY,fÖ9›3þ…|¡T£X,J¦:J£edÓ[¾|9Åò•–̦– 0¿‡vîIô/ûÿeÆ¿ ƒÁðs°ù—½…ן¶þåææ–6ʺuë– $"Â…‚<ˆ">>>´$`aÕªUøWllìÎ;ÉÕùùùäOr"F,'c#bñññÎ.îÿ3fLÍ‘Ÿ/ YØóˆv‘½ ¨ˆ¬¤q:´ÙÙÙû…¨¡Weee¥¥¥Q,ŒpâÄ 4Š|úôé A–1ãD.……±Hp.Ž!óþQ•oä…Óñ/^–o$ëùóçèÊND‹[ý] ÓÓÓ£ƒoß¾}óæ .Æ  }ܪgFøˆõ hŒÙqfÇ•á'8ñ‡Q¸øßlEOàã“'O0¢>wŽUýQ t’öÂ… 555<ZÆy2¼|…ã lm‚þ.·ñîÝ»©Ü y8?ýjy,¨êÒ^¿~ýêÕ«˜ þÅm3;{÷î]»v-J²lÙ²ßþþþììˆ -;#sçΚ…:¬[-Iäù×ÖÖ2;ÝÝÝûÑNo™¯ŒŒ –±úKý™½™²Z­_ lzÔ‹v±õÑᣯ¯/ßÒ× –‡ÀÖ·Và]8uêT\\œ³Ÿ&׿ÆÓ1ã_ƒÁ`pˆÍ¿D¯ŽÙ©–ƒþ´õ¯õë×' DñÐÐP2†——-Y‹4B #‡º.\HÇb±h$#™¬Y³†$C®Æ¹ä¤qr¸úW®éìâ~!...Ÿé²3gÎt¾Õâ#í¬Y³´O‡ösüôÃ,ÿNHIIA»˜J¦|D”ḠFp%åªy©|ábL.zU\\ÌtÓžÁVþ³gÏXu™™™,?Ö3«E¾eËv°ðððPaÅŠ«W¯Vë¤F¶8Ê ÒªÙ Dʰ³¥BBBBee%«×ÛÛÛÙÏ`,“î_öÿÑŒ ƒabìýKþ98îÿ2þ5ã_Æ¿Œÿ2þõÓø"füË`0 ã_"YÇö§­-X°€È'DEE‘CHš4P°àà`’ÚE‰@ ¢££ iéééûöíËÏÏ'8µ£±œÈMfsv}“€º’‹nnn:‚4i;SÐoùèêêª25c>ê  .2{ölOOOww÷9sæxÚÁWz5U3øu1­¿X«$Ò¤¤$:(}D‰˜Šs!b(Sœ9 Óš/0ÝdõÂÂÂêêêššZ²(V‚ÕÕÕ¬¢¢"U0.’&|-p"Üþ$þѱëÂÝ»w±!| _ÀƒÔ¶h1ˆþþþ##ü©:¡E¨"CÞFš0)lK} YSß±Á9æAOgáÒ–¯Nǹ5~šqZÎâ²¼ÅxоæÜªÍ¿¸yj¡pZDíâ­çiÔÖÖ677·µµ!;Ï~—*lÔ¿>|øÜ{ >+žz¥Z-à)ȵܹs‡–»åþËËË™ØØXÄù• ¶µhVÛ{‚¾N§¢¢‚'ÙÓÓÃsnmmeŽº…¡¡!Ûs`FvíÚÅbƼØñRSSñ/v<´ë+ÎJÁjµZ,6@ʧCùê_¨™¿¿¿ ð|xG˜eÞg?€±L¢Ùÿ/3þe0 †ŸƒÍ¿ì-l¼þôô¯­[·¹×XU@@Àb˜¡Áƒ‚Fa^ô±³UBLL̦M›H ¹¹¹dlœ+//¤ÍGJÎÉÉINNvvq¿µ*›LÁ£¶¥åáá4}ùå¿Ù¯ÿP¯«;Žã ƒ`HD¡\p œdÆ%•.”Ó«¸aXZ©­Ì´#½ÈMg?œó–B‰ø«m•Wtì¦e*ê%.¢[¢Ýe¡æ’i.6'3µÔöØû½ïí®]ûyÛøyq9¼?ç{>çs~¼Ï¹¯ç5eee;wîZ’ÇŽ;Z.fµSÈcB–Êl¬¦[HM—.]Tr³sæŒÙY Ø‚]Ɔ¿LÇhׯ_ŸÍµén‡=/¼¤´yÉL2¿¼¼ÜAh«lüö’™¦cR ¡Ý¡\U;(失$”Þ2ð‘GqKß~ûí·†Ì÷æ›o:tèàÁƒsâ äD‹ÍÚ£óëDÿ8äDûu„ y\í½Ÿ©Íù«å´‚¿ *T¨Ð«%Å?‡ÖãË–¿`³ ”ÒQ°éµà@EEƒÄ~bBÐYeeå˜1c&†éêêjnméÒ¥œÏ²Púm5sçÎíÒ¥K{Ïïë)ÉëŠ+®Hþº&Ô1„Âø+:u˜2JPeɬÌÀP¹Q£FA0FÚ q³–ŽÓkPbç²T£A®0 Ͳÿ…®½öZ–0Ø·œ¬i²”·…låäÉ“§L™Âšb1bõ±ÇÃMl*›7oÞ‚·Ë 'æzñÅÜP®Y³&cV+B?ýôÓO<ñ„|H|Ó³¹ßùóçKä‚v…8gØ…6‡2Â_@éðáÃP™‡ÒFò÷ìÙ³[·nW^ye›½¶’D•{V~gcnÛ¶ÍÖ[{ú /HcI(«¥÷ƒ>(Õï¹çžÑ¡œ²rÈ!N«ù:}&ž§Rà`f9(¤ÒÅh‰\õòüÑGmïÙ¦6ä¯O/ b*T¨P¡Võ9þ ÈZÞj|ò#Áo³ßÌz ðÅ`dÉZ ‹òòr H¸_Ó¦M›ªªªb­9ðµk×6ûíhí=¿¯'ðÅLÂ.ŒpÀN‚O¯^½øL–BÜ£G•Ö„=ƒNlXrS¿G‹9|øðaÆA0 fyÇŽ{÷ÝwßbóPب’òQeî‚>9:}Z¾WŸ×‡ÄÜ`×®]ÄxŒ$~/dð‰Éô'Û¿ÿq!FÔØ e`—í/þbVg„jjj~²¹µµµÏ…žþy»Ï½+xRWW‡ËäÀò@’@­y!è/X¥~p 6y7´{÷nnÙ jllTÂ1ÁöíÛÕ#¯ãÇ¢¤§“%¡'|”xuàÀC‡íß¿?aM ¯ Ï_C*õ }X’o¿ý¶OtèP§>ùK®<å!eee™~ÿ?’ü<ðÀ²e˶„6†šššL_Ú˜ãÂ… ¥´ ¬ ÜTcBÈË™Uþ4ä ºóH:)NŸƒé$:þ7†,‹¸oß¾²óQï¶÷ü[mÈ_-ÿ—üU¨P¡B…¾Ššù«%…]*¾Üø‹ëæUØþôéð¾ø.1Ö¼‡’÷€ižzòÉ'Yµ5kÖ°«V­z饗Òò!?þ8|hïù}¹¾_R§Nðˆ²{÷îi/9«ëBI[Ç"ðcÊÁƒCQLjMÄ~J“FC† ©¬¬´¤~Œ9|Á+˜364a„Ÿ—$?~üý÷ßçwrqéýtÎêMàsByàA^}õÕ€+LðƒxÌàK'® ÿÌ`ç&…¦NªdG%ÆôéÓgΜi‹³Ò¦ÛÓd(Ö^¯^½:Ë×B|;»+P¹råÊ%K–Ô†–.]Š¿<êjîܹÕÕÕÈß=üðÃO=õ”–ëÖ­CX(Iœ‡×dço¼ñ°Â_ÀáÈ‘#Œ4,ú{yá&œ¥>K–ü…/…´9ò˜;vìĉ`•0"&gΜ9uêÔñDRêš5Ã6ÄVüSÐb(›ššš[‚/ÌõOöë?ÔëêŽãøÁ ƹ ƒ4Rˆ+7¹M¡4t’Ìa–h Ñ®¦éœi©l˜cv×ìÞ›^»Ý[ ËÒôj*n\Älþ˜ ÿH§7Ôjiè†Å ·¬«Y{ô~wï.r“"×ýÃÏëï{¾çs>ç}ÎyŸûzfgzê©ñÌ™3 hø Í%sµµµA°Ã¡ìvèÐ!ß•šIÊ×!ßZ½z56”ûŠPZý7ê`ÚIjo„¼‹¿Ì ý%Ö4:È g¡­/¾þ a-ú3 ¶]¸-3Gs³Ô–Ýl%RoSS“š3gŽãç ;uÃB ¡¼¼üÖ“Ó·o_…sýõ×ÿ õúåx?²SöK^NÝ·o_cc£3Œ•æÏŸ¯Ã¼yó”ÞäЄ TeG]ËÝí—+ ÞóÌKrpH%–––º:T¥þÊÇQ¯ªªêîì¿ÒUç¯ÎÿÑ þ*T¨P¡BWVgþŠ]Ç× A$öƒÅÂ_ÌUiH€Aø+6#½VÚ¢"msCCÃÚ º{÷îwÞy‡ÃLÿÌÑñœ¼MYYYwç×…~ôèÑ£$Xz‡d*eKÁe¡’„˜ &bϘROKñÀ@'b« ¡q¡lÑÙ[…ÝP[â-ïÞbbñ›vÍ ¦Nª={&îÙæP0pà@;Õ§OŸ^½zñÀh+Éñ–[nÑ’ü…Èdz{ܳgO6’Õ¬Í !#G"áKŒ•xTÏÊÊJÏšvq°`hÐ7ØxæöÀ»víâä!ɲeËV…`ñÒ¥Këëëkkk,X`ð¹sçVWW?ÿüókÖ¬Ù¼ysŽ@·l§Híٳ١±Ó¥:qâŠ9:xð ÎN ˜Â\@ìH»°•ŧB8ëØ±c:k7ˆ?‘ã8ÿ éið·ß~‚™ÒÖ­[yxNg,y­\¹Ò䓼LO 2r1yÓÖhªÞÊ܇r|“}>¼.»¬.\¼è ‘<ʾ¿Z[[}=aóìÙ³þL#Ó3Ûææf›h×¶mÛ&um_ì~òʸ-äÈ)j7C^  CÕ\wÝu?\õ~Ge]/Z´HFvJšöbïÞ½Ï=÷\eèí’ìáI“&¹´³Þ¥¯â\n¿Ÿ‡†®U‹bhÈâXw¦Fk2jÔ(õòòË/ëÜÝÙ_Mþúò›A¬à¯B… *Ô¥.㯀¬»Œ¯)þºë®»¿!à¬ø‡²/Ár$|•——ß~ûí¬—>˜0á’e§·†˜m•Åå0[ZZÞzë-®UËäÉ“»;¿ËÅ(‚‘‡À`a ûõë—Ø%ý;î¸ÚŒ=|u Ó¤Ä='Nœ˜L”|4}úô)S¦hŸ6mÚÌ™3Ia:è™t&HàÒ®% ®ÜHìX®‰!þ@¡|ò„ÚÇ·Ë+<×gÂhK }ûöe2¥£åæ›oîà/\&S)'o^&?á/‰Ë4¹/™köìÙìè¬Y³üÉ”2“O?ý´Mÿmˆ•m -^¼˜¡_ž( tü#´{÷î-[¶ððPÅsChýúõ/½ôÒŸB(¬®®nÉ’%Ï<óLCCƒºÐboeá°Ç˜Ë ˜h`@þùõ×_×è¼å©#0•1ò$…Ä.è$Æ;É_Ù¨§øäÉ“˜ él¢ÛÇüÙgŸå Ž4¾3 ssà“¿d¿LÛ¬þB.ÖaçΖÂÌõ×"¶ êbÿþýÿ%âùÐç—.;wîÓO?í¸¬Äæpþüù«x¢<ŸC’ýä“OÄòÚÊ çTsã,²¼ŠívÞp„`@È=àÀ¸ÄnŒ›nºÉú¡Ëø»K ÎÛŠ+œC;eñQuuõ“O>YUU5?ä&œRÊí¾vý"”‹à2dȽ÷Þëϼ.È‚¨AwÈÀÅ~R°èÕÁî&uþ_VðW¡B… ú6êà¯ÎöMñµÃ_̳ 7ú÷:thG 1bÄÝwß LðCδðÒ|ÚžìâZ?üðÃt¶,+÷Ȳz½»óûŸ’¼JJJ°IŸfa™3Y¦LpìØ±h¨¢¢ÂS² UÍ vtV»¸5H¶%•d¾ëÑ·òÉËYag@¬Œ ¾èx¼_‡Ÿ2<2”×çÍ›gÓ@g“Ú•à6räÈ;ï¼sذaæÂÊCÌ!þ’ZIè†nY@̳c°X>u€löÚ” Í;7™ ÉWŽ\¸paMMدµÔ…jkk—-[†>xZ‡{çä{ÏíÛ·C$дyóæ¿„tÐM 89žÜ){á…pœ–åË—ë³qãÆ-!ƒ€ç ÍÍP ;vìH #€óæ›o ᯆÂwß}×9#¬ ;zôèûï¿&¤]#immuP½…>ì à HIV‚]Å*Mr}H:½öÚk⿆֭[§ƒ±™KŸÕOþ2Û÷Þ{Ï'’ò(ùëìÙ³mmm(ìÒ_´]¸àÆøúÙÖváâÅÎ7˜Y}Ÿ Ї|y}|wìØ1“Iþ²ªæŒj­°…Í¡å³Ï>ëøá¯ÁƒßÚ.‡­¬¬ n¸œ4ÕÔ£Gî-ío)•åÔA°M›69–N]}}}MèñÇâ‰'*++³–³ï¹çw¸qã0— P™ 4a!P8¦Ð\É_Ú :ó«%Œ5J½455)áîÍúêò×7áXÁ_… *T¨KuðWàÕ‹P«‹øá/>ë@láø‡A!Æ^Ìhõë×O7¿r#|Å¢E‹š››‘×ÑÐéÓ§O†Ä,%3)qž³»óûZÉäÆoäKKKÓ5IŠº/Äeý*s¦OŸŽ˜»`È‚ *Ûe¹ªªªà§Eðk P cäÒÂa™ä5ØÅÄ&²M›6mfȯ¾â[éô´®1xõàƒê »l?‘ ‰A¤|W»]H3sN?´_žv ޱ…øë§í²ƒ`ÁOVÙó'!h¦«3fŒï>Ú.Yÿ>„¶€˜¼pVuuµX.¦-‘…¡%K–0±|;ÇŽ5ìx2—=µ´´( 6$°0ök×®]â=ñ×Ò¥K}P@æÚµk—fœ½¡ä/âœQÎo„ö„@®b‡BLàË3)ìøñ〠 ÁŸÓ¡>øà£>B^çÎó'þÊ£ OðBq€–@—Y˜†¯ø:B|õÕW%bª²^2™dL‰˜øÊiËÂsÿþý8Q€w`ב#GþòQBUÈë‹€¯$,–Î?}Ï Ð:$]™Œ%Ú²e6Ñ´¦ù‹¥4mºã¹ÊËË("wÅ€-¬»ëûÛJ (UçÍö­Y³Fv¶«ì©§žrÚý¤– ©¨èÆŽënT#î Oª¾$îöPkZ~»3„ü¤¯ÝÿýÆå•WPj7f}Õù«ó´‚¿ *T¨Ð•Õ™¿âŸC×ñ5Å_3fÌ#GŽb!X÷ÛBC† éß¿?…V{cüøñŒ7‹Â±0,%;×úüÒ%v‘ŸQ’(_-§ÈqêëÿS²õ•Pæ¸ÜTâêÎÄÌ“î~_lôèÑãÇwo¸%—p[ŠÇ–„ˤ’v©àµ9îUIä¨è¿—|ùëúÍA¬à¯B… *Ô«nீ¬µ½Æw á‘ä>yà1xæaHè‡!üUYY9f̘GydÆŒÜø¢E‹¸2V jݰÃL#ƒW~efúvß UTTX¢ä‘8I¨$ á.Ë¢0Ê@Rè k466zZ&“¶fÍš¦¦¦µ!6ÛOˆÃ³¾¾Þ“å~õÕWUkhhP¢ùoKª­­E(6Aá²!.\˜NÏO¼›· Ó|œ%𬩩Á_ð d9<‚êêjÁ³!t—²šB¯*Alâĉžé‡‡¬‘ 6¬ªªŠgVâ»ÛQ55Ô¿©’¿že ~dS=hÇŒøLI–c—¶oß¾'ôAt /Ð}Ž=ÊÞ¿Úºuë¦M›ì¡ÈÀ(DÃí‹õ°+´»¤ÖÖV]á‚èY'²&;W_---É å¡“×`ô3:;tèPRØÉ“';::µHÉÙ’”'”}ñÅN/ s°QdKþÒg÷xé!ÁïC@•7CØ3G7®%Xˆ…ïÝ»×ôôùñÇ·µµ?~¼#téÒ%4ÔÕÕuõÚ5l…°dÑÑŸù€/åu2¡þÕÝ­FK^ßúí§€`ÙÖ öÄTË»gž¾‚/âi{­Åº]§S<ôu 0ÀÍ ­\<ð@ߦù·•cìgJ"£ß„ä¦îrKþ’í©§žré¹.P[æìr‡H(÷¤å»'²E~ÊÍ‘k~õê^5k–ní¤,ë«õÞFþêù¿¬à¯B… *t+*óWO »Y|7ðkÁ‡Àæ!ÝÅСCù‡ÊP"Ø Aƒ‹ ŒX°@~ûµ×^c°¿¹Ãé˯ÚöÕÒúõëwß}÷q‰ýû÷ª¾ÞLCW¹!`PŸÀÊÓdt®D¹p™›™ð¥?YŽÛ¶m6qÚáèàçˆW®=1ö;C¸iË–-žiòwìØ¡¡½MøJvC™8âìÊËèXeWÙDó·ß~ÛóÏ¡wC9Pö`h !ƒ<À ^%á Ï?ÿÜq+C³óçÏ;½gBê#¾ìg{ÈX¨ÄɇZ¾¾Dö}}ô<¦ñ^HýdÏŒs+ùäÔ©Sÿvõ¤2$ˆ’ü©£»òëåË—•«é ÇnýöÓ$7Óikh3±¥É_¦úÎ;ïø.o½õ–•úšŽzccãÊ•+éãZp!ü(”Ü!»è¢h}•æßMο,ã ¥ •–)XºtifSJ†föMŸ>]ÖŒ7N/qUUÕ‚Zž^eø9rä W¸O\}µÞÛË_7ñ‚¿ *T¨P¯*óWàÕÚ¨ÕK\ðWÁ_üUðWÁ_]ÿ:õüVðW¡B… úïêÉ_ñÏ¡÷ø.á/„=˜iÓ¦ñ,:Yìmä¯ë7±‚¿ *T¨P¯º¿²Ööß ü5iÒ$®˜À+Â'Lœ8‘»`ªBi!¼ª0sæLÞ>ð*ŒÄþýûoØ[†3¼zíZ¹„)½“Ë“ßÝÿý•••¦Íq>3fÌ€-ØÁb—,YÂhá#Xô»‡‰˜¬èÐÖƒtâçYÓ?…üÄù+ÌjÄf‹Ó„'‹ÑúPsss¾¤ 0'þböV¬Xa2¦´<ÄòA0– qkœ!à‚QbÔ“LÄ &‹ ü ŽWL”sütÎFÂ=ÆraHCLJô­=§N*@^úÉáô¯š!~R_¹SÊq_zé%ý+Qîà>žü±îs*° t©µµvá¯`Ä }²oÖ¦&u’PäˆÊÐPÁ‡!ä˜e ²5“q2†Hzh ù:;J2¿juôèQêApøða¸Ñ@›D¡3gÎ`x‚wðPR9á1ÉΜ}YÏuëÖY©§c㳊•ûЛB›Cꛡ X]â$þ:tèâ3$A3úÙÄ“­‚cÇŽý5”˜iæŸ[:8´¾¯33|øð®Á%UTT 0 èN¦ùí’Í;×ᯭ­•)Nøêի壾,”§Ýòe„Ó¾Æï’tmº-½&!С!Ž_6l˜×$V›&ž={öªU«lïBwx±·‘¿zþ/+ø«P¡B… ÝŠÊüÕ“Ânÿßó#Í~0W£F_l‰×tøëá‡öÊrTWWs#, Zá"XÖö¶»»»çkgg'{sgrÏ=÷€/>pHÈœ'L˜€2@H‚`¨#üihh`˜7lذ¹‡Ê0%€W,(þâçYh^šŸgøß ñù B¡: kÉeêûÉÎ@9Αce5MôóÑGý›ýzíòºã8þŸà_Eü£P„¤E#Ö°ÊÀRq%U/m T0´¶$Z3Å Z&êØº­+ëV/ñÒ•¢¶^çhK;­µl®“1˜s:Suâ̼ 5kÅ⼬Zu¯}¿äG°ñ6’ŒÚçC8|Ÿïï<ç9çûœóäóbq8„;<µ0øÂ2¸Æ®&úÙ°ÉíáUB-{Æ+s©¶N%¯‰³Û¯C–ì^#$þ9äÑVëöìÙƒƒÔÙЩS§pÐÅ/¾\N ¼Vf"hiiƒzšáÉ“'? ¹‘iÝuKŸ>÷â¾Xl>Ë’-ÖÄ>ÙÕ¹/KZ¬b“©S§VWW;S}úô©lîÐVTT€²;ï¼³kŽy‡Ë7Ù®vp.\è8’(ÌÎ6´`ÁgSàÚó6¼Oå£>:zôhŸD¨…Â|$}pòã©>žPkxH‰P*þÊÎjhgÿ{¡®_iò×µp¬à¯B… *Ô®Jüxµ² jµßÞüÅp'N„*L‚Ë{î¹gРAi*îkw1tèбcÇ2ÞiQÌŸCûrm¯2„Û¶m+//ïìU ¯=zÜu×]àËäÓù°:ü.às $a¥À«Ìÿp•ìåo¼ñ^ˆi箓¼øÏwC\¨ GÊÌë“Éß„Œý¦M›´H-Á­Ddiby×·Bb¿zœ‡¦O[«ŒxGknÉG„q´¯-„° sè%mÁ%ü…†Ò¿(íwCzb(rÉ’%K—.MÖ3¾Ì²W–¸'Oé€I—/_žóQ«tž~BaY½D6’±‡§L™òDÞŽ M›6M7TkíÐk%Üaç£W±ÍgAÕsË–-ðd{h÷îÝøëÃ6cnÿ[­$”åO‰cú{„ÝÛØØhp•/ñW¢‚kQòP}ñÄnÿG577C€yà‰XFÞøfîmÚ+CëBYU#«˜õz2J‡v-ÊNØÚ¼y³RäzÌôhϵø¾Çý+téòåWà'ðÅÆ›ÏŠP2=U‚·L`Ú¿ä¯"1üb˜Ë¢ž %%Iê¯[² 3»èÞçŸ^5„$µY ‚¢¯…”åõ§½0ôbhΜ9Iy‰{ÈKI%íå(R–dÒÌ<ðÀ¾KˆÕ% e¾´¾¢/‡™®\iòוkƒØÍðוV»ÖeWêÿõÜB… úºé*þ ÈZÙn|{ólá(LièС \ìÿpÑô efÔ¨QŒ77²lÙ2¶“½ä¯_gæuÒä»…Àïg†¬ÎèÑ£ÇW__ÿ0I“óꫯ®_¿>áëíлmôN(щóL"“[¶laÚ]&,ˆKýIF>Q+ow¯Kà¦K¦Og.HdcÝ׬Y³>dJ¯´jAˆÙ[¼x1zÒ&…iŸ yYÈ aI¦9”±LD&é'±Ÿ¼£d±ìÀ:þ,”8–lÅd"/H§m9É_^n²Dÿ'¹oTØ3fØ µµµcÇŽe&ëB’zâ/ÂÃsòöüC•üC(ÏBR’z"°³cÇŽ={ö$IŸŒ%ľŒ#`Á¥‚555!2ýí4É$cfÁa|x5ò Ï Û·o7¦§”(ϘGC@ìĉ†õ«¹ySù*•emÈêÔÍ¥åÒÖR«„2ÏR@õt×û!#x0[‹é峚››Qž³ƒ³Ô…‹ý‰Á&:}ú´¤i@³¡“'Oú 7 5…\·ÏBJ|ùòe'N‹Å®u=½šƒa3sæÌ±a9É–Îmœ¥³.«Nþò‰_eee€«¨O¿ÜqÇtÌ»F“'O¶ÛíùE‹9 bsCN·ì544ˆíógžyæÉ'Ÿ´ózè!Ÿ-Ó ¡-L*ðSUU4Ãb>P@ %…98yÄÖ­[7f̘.[fòWÛÿe*T¨P¡›Q‰¿ÚRصâÛ˜¿Ð /QSS“äÅ'”ÚðZBŒ9rúôé ü'ÿ|Ã:sª7y–ïî»ïîÝ»7«ƒ Ç?qâÄiӦ͛7ï§!~‰f ÙHFšONøz+” …­’ÂÀ‘˜U–DIú'@QBÙÆ“Å6…Ä BËÕ+…Ö½‚–ÏÁóYÉhd±ùlذA›†ƒJUR[~Tꇸß^xAppãç„2¬#æÊ_“×’Ñ\Ês’ß¡³Ÿ„$õ1>Ÿ™sÈy 0…üüžÆô%µOþâ?J=aÂ;‡“|"$£²3ÿ¤­¤5q©ý ”ˆä'(”10ÁAÙîܹӉ8/¨êÃЮ$ÈÚ·oŸ¯¯¯÷ñ¬®®V<5|øp´5<äràÀ( s©˜ òJþ}ÜÎãÝ8æ÷Rfäd9MË–-3_ÇÄaùIH`Xn'B64Sé¸ëêêjkk{õê5hÐ 7䛳gÏž23`À.{2”÷*þêÛ·¯ .´páÂ7 îÍ4«Î_­ÿ£ýüÕZ·=º-®XùßVyçëwþ,T¨P¡BUTkþŠ•ã›¿X¦zܸqÌWÀ!0 âô XŒ¯x44lذѣG3Þì:ÏÉ‚â—3gδŸdæ­cÇŽUv‡jjj’™üÈ ±1\›ä£6lH´IÈJäaŒyK•bö;2Eê“•<P|;XHãÛõ¬€ƒ¸lS•‰`‰l^ä½³CýèAÄç»øŠú2*¹/˜ ¥,ý+!^¹reò×'Vâд|ùò4‡¿(‰cT©ÆÒhÉ++m€Xš`QI|cÒå‘jlTÀš ‡ùb(¹OoÊ&Ñ~îܹ6ÈýaðÖ××î§Ÿ~zBHæ‡z¨k×®| òâüù4Á#1EÖÜÜl`o•Äf+ˆ¸ÊôÉY&‹1™o—Ä™{”x徺übr„·Ôd‡Ä©.‘?ß i£}Zÿ‚|ªdÿÊĽ,›ššä“á7ø?„x?N+K(vœ•L$X²d ¯˜æve Ë/ÙŠmNjü<¤~ñâÅ2¦T ¾ÔèÓç~‚XÌwî´Ôkhh˜7oÞìÙ³¡.“öÉ“'Oœ8qôèÑ@lrhêÔ©žúŠNÌÈ|ÓÏ›{â‡Oò,$•` @¡>@SøyäÈ‘Ä$RãÑáGPËO% Ã)`äôéÓH$ٴסoíܹY²\k’9÷3%…¹ŒÓŒYþåA)äŠdðJèÕW_µ^Øäµ×^[¿~½m 7;A}ô‘ï–±ËÏýû÷¹ð#ØA=—/_¾yó&&*ó—ó‚ÌÅDއrúJWDÎÄý³$s×…T8ùkç<úL“(¯|…I"­¡f®èÍ ,]kÖ¬1÷ùóç»+\ ®ˆ.]ºÔÔÔÀ®Î¡‡~¸êgü~É&ÿuȉ°úË–-ûqÈAHCgN¢§JÇÇ#'Âݬžxâ 7çBXÌEšüå^«ñTØåjÅbâ䯱cÇ:2ö’Ûì̱ŠüÕúÙ·ä¯[w@Ð#o§}Ÿb·*!Øm? *T¨ÐÝS™¿ZSX[ñÉ_ŒÓóÏ?___?dÈ–€1ÀY‚¡¡‘#G&” Mš4 Lñê Ì ÃÐ~†ÁE÷îÝ«8àï†Ø?À8nܸéÓ§3?8ÂxŒŠfjÓ;%ùÉoÚ´‰¥„f vâUòQÚŸB Yi>³Aújì [}–íÝÚb¹ʒѼ’ –ßU¦Û'ðT &Y€uWcØ‚$‚uëÖ­ É-«oR¬ 2â—.] ²Ì”T‰›x¿!ÀÅ¿i Ö@à'nz!$N.KþJàZ¸p¡×µá!á3é[ì%“¹zõjôäÅù¡9sæ466*ZÉN@^ì"ë8f̘ŒIüì³Ï‚5ÕH$Êž7q“åꡇ¿k×®< »wï¶óÁÅÁƒ„ÄGÅ^ùY¦0õ‰0Ã+ÜñùçŸã”3!ä@ „w”ä@÷á‡Z)97 ã‘p¥ÊÝòF(÷‰ZÊææf —ä% ’©{)ô»’<òÓ2Y>¯o۶ͤLÐÍñ%ᯤK#7TÈcvgÏž½téÒÕk×pЕ+W`Ô©S§ÎŸ?òäIí¥K?‰¨ ­~êÄÔþÊ$˜¸ÀÔ•«WË(×–|Ñ'¤KpáÂïú¨|Ã\”m¡L”Ì4559éöÌsÏ=W[[ë~pú:uê¾z÷îÝ)TÅ~ßeŽK–,qÜœ§ÆÑøiHM.;ÁÞ°úÖÝAsˆ{ÞÎ4h‹´6äþTûì3íA4vÚ_|¾Ž?ŽM> >}žèaß¾}€hÇŽVÊRæŠH/¼’ð!‹e«­Ê4ÞÒÅZg~L$í÷Cp, ¨fÞ’éÈ49™«L‹ÇŽË¡^ a.øƒ•¾úê«ÁMY"¤=ê_{öì1rã_{÷î5šàñ’ôù_øºzõòåËÿ㥧1àºz@ ëe¢|.SD84ˆMh)­5 pQtîܹ¦¦v±ï„ªxÆï»L YqGÀ6°Ê/„Z’+×!Ò•µ¾¾þnϱêüÕú?Ú·á¯[_‡cí4¨·ÕCû¯Üùb¡B… ª¢ZóWüs¨?Àü…fÍš5jÔ(>áû!n`”i$êêêF…ƒ††Nžý€{ÖNzYnn­ZCeó¿Á!nßHøäIsssB Çdé!·†Ò£Oêáêñ“ë~#ä•D¶2=%[¡ªíÛ·{%«ÑÏ–-[¸Óü„W U“~¼øú믗ÁJé­ü‰Ë]%ˆy$Ð[6“Ï®4ùkÖ¬á~RmŸ¬ZµJ€Â€ÀK!ðW¡Ä„ä)Q©R`±”²Ä:zú³øÂVé*åÕÔszKb8õ¯‡E‹-. Oᯙ3g‚¯Ù³gÿ‡ýúÍêºã8þwAEŠÿj)ÛReRIèÊœDb0fE%¥;ãj«v–m1­¢‘9·bÛeëÚálZÆØVêÆJ;¢ƒ V£Ånj7]Õ0×)™¿öâû%—›XYKùçž{î9ßó=÷ù¼eÂÌ™3yNð5uêÔ¦¦&esH…Q×Ó+¸S“d)­QäEA(E5ù‹ç‡]]]ÉMPRa+õ$/—ˆ¬+¤7€þ 9ÒèR»ú‰Ð?CZÜ>žÅ/;wî´;&#ÂJ9#¤? !)±Å\N;ýÌ3Ï(]B±í×BY÷¸MGpF³_êyÀQ øÂM‰9ÏcÇŽ©@À…€®^½zéòeäuáÂ…O>ùý9dJ˜¹oß>ñ1í]»v™ùB*néQO†€²Xv“=ý=ÕÝÝí)ØÓÓƒ^Á,ʳ²´à/¥EÉgY! vÙÇÁ2dÈWBŒ¼ -]ºÔq°õÀAXré\8,òA@2Óô_¸p¡Oºü¥‡zUWWW×]wÝ…³P£¯kMMÍ<0räÈ1!-º9\4ø­^`ùëZÿ v3üU9«>[>ÝáºÆ´÷7BŸÏ^»!ú•*UªT©*ê:þ ÈZßg}àñ×È/Í0³ £B•üÕÐЀ¹”“'ONþbXqö#¨’•í/¶t@ïJoÌå‘„¯ÿ\ºtùÊ•³gÏš§Á¥«ô{3$VJK+ cëëëë}1† vÇw 4h Âµ¶¶:……;yXòXÙw)í–c¨²fÍ¥#öì³Ï>ñÄÒþá‡þFOù®Nœ8Qet¨¶¶öÁôiu×Áñ¥…`_ ;ÖW×§Ê ¸ÓtKXEþªü/ûøës*—S­ÑJ•*UªÔ£‚¿*)¬¿zÉ_%•üUòWÉ_%•üu­‚¿úñ’¿J•*UªTŸ*ø+ðj}jõQ`üµ Äs2 ,øª ñløqãø®€yhllLkÍšréCÒáóŸŸŽjšL6{æÌ™U™*³gz&LxôÑG…LÄŽWa‘–Á/Jtƒ@Mâ%^iLÞÑ‚w~â–³žpD*0!‡r™Ø¥W€2ã|”Ê÷z$yJO¤"ÿ:ÄТ3e‚˜[¿è•Óîhå~âðÅ9)ŒÙC pà‡!•lר§KôôJH‹ âs³’­¾Z¾|9¶ÒS±*.ÛÚÚØ?wµÈÛÅ‹?B%DÆÎž={îܹ¶UÅ^°‹’ç‘?ùõPCCƒöéÓ§Ï›7Ï IP,” ¤€uuuA§$¸F`z:Ò~,ä®ö£Gj9~üøßzU€˜»PB‡“¡ÇÝ8_ÒÖ˜IF ˆÁ(;sáÂ…ˆeXï’Í$Ì×Bo¼ñÆë¡ ~gg§Ý´e¹¹ "9àzõ—©š¼™œ>}úÂ… € +õôôü;„ÂÌyý)„ƒ,ùý÷߇`€(™‹\º ¾,ÐóbÊ0…Ân棧'îËGr§N2O{!÷dr&öæÍ›7lØé'7Dfüøñ÷Þ{ïðáÃ<€á‹‘S`÷“¼¾²ãF£ “HB$=´+å¹o©/$ ›ª««ó õÕ‚`° d3F“¿´k)øK£>NôË“{KXuþªüGûÂø«rEU°T©R¥J}1ªä¯øsè»> ùë;¡––>¸ï¾ûî¹ç˜S[[ËEs ̃[ì4ß55¤?¿Ê¬1!|ìu!åÓI20£G®ÊT‡ f&œ ‡“á½&Àý"dÄØ« ¬¬€ ¤þóÐ/CŒeâ•[JÌ…’TtvËSÉ_ÉhZ8êÄ«lLˆ3ŽFcnÙ²% B£¡”ÚuNˆPºå€)czQ6ª$Žåh9lÎ!'œ¶X©2 ££Cü“ ^ % ð‡/¿ü2Û¶råJ¼À0F1‹4¦“,.ÝÒ?)CýùçŸG"ù,IÝ$‘L<5kÖ,y;gÎessó´iÓ8Få¤P&I¶ã¯'Ÿ|ÍлrÂ(VÛ·o‡*¿ñüXª á $’Ì£²Rp4Ë–$2eq™Ì…e`E’a±3gθkL¯øàƒpŸHZìš5kD„bÌ9!³uPX.VX2V:¯[·Nga߸qãæŠË=Í4°"|·oß¾\Ž ¢I~aĈC‡½ýöÛ«r®¿Ìò©±ûî½Ê8¸ÌK!˜KgÐ-i#áçÎûH¨©©iܸq>\•5vìXŸVUßX_Ú1!}4úüzÊ[:;;¬[·º*ò×µþAìVóW©R¥J•ú?Õuüµ¾Ïúã¯úúúE¡)S¦<â î¿ÿþ4 éjjjTcc#'0/Ä¢§‡gõ’U«V)+ãyþüyŽñG!LW•©ò{fÂÏðÆ&ðzˆ?/Ü/ÈÚ¶mfáíÕÙûÁ R.uSVöÉnÌžo‡²”cª“†Üò®‚‰r4-¿ !/äLò¥ÄÁ±ììEI‚YÑþf(Í|ÎÁ8ùë»5”XýM!àÀõA0®O™új¯l ÓnkÄGb$IÙ¦D-õï…ÔÝÕ¾bÅ uˆÁ=º¬½½]ãêÕ«¡ÓÓ½|§Ì˜1ƒÃ”½2GnÔ‡T’ÅÈ¥ºýjmm?þSO=µlÙ2Õ´3¨Lþ‚{BüÿÞ½{>|üøqX‘´•ܤþqË|ôÑG.†PÃÉPA"'BF8Q!ýa øBFÐO<­Ô•e’9mËÉ<×.Jñ4óÄ^áݲG™¹ïà "aIÉoæì8›Îì Ážžìs-øË1±Rs³"kÇYúï­F£ùV$yÁR4»,äï!ëí¡' •L÷™Jþ‚]Æñ ¼xñ"’=xð ×ÙK“<¹FGÌzöåË— ÈìÙ³ñ×wÞ9dÈÛn»­*Gûˬ––9`ù™ äLÉ-*™ÏN¥ôÀ_NßÚµkÛÚÚ^xá…%K–´†¤þ*˜ a©Ü}÷Ý>ª.Ý_îŽ%‚!² &HBGÛ{oÝêªÈ_•ÿe%•*UªT©›QÁ_•Ö_} ñ/HU[[;jÔ(ÎÊ_?{àòk!Aé’‹hnnþvˆýàCÒ®+Õ×­[WOö˜mK²ãÓ>ÿ<Ì¥0ó ,@­+¡é-£¥ËÆî¶ƒ‹.¦YC>´í¾8þf—q a•߇áp~çwþç|Ï9ßó›Ï{^MN¤¥¥eòäÉS§N½÷Þ{ƒ0“Š¤Íƒ>Ó8X=åØÊ•+ .H‘[  q¿ï#ˆqèСîîn¬túôipLàx‘QÀ* £†àȲ”F© Sž9sVß(°¦;øëA›]»vÙ"L*…wß}÷ý¸¨©©ÉZÜÊÖÖVÀhsXëW6ŸÄöšœ¯$Éù8p@ü‡F1` ÎSŸ)_çÏŸGIxçâÅ‹_~ù¥˜­¦Á«üÖcwÑ‘#G2ˆW€Q‰éôÌ>Ô‘Ó.*2 ‘CvßSBÀW_}ߌ`p;ã쌵ÞEòP½££CØ+ÚÜÜ \ÉAƒ]ûÕþ?&’ÿ–ÿ|M +w'—nëÖ­RBE£§‚­[·îÉ'ŸÌpΜ9÷ß¿{á+:¼È7ÖwÕ÷m¹&¾º^ý°H£“ÊC[-?ÝeiyV7°üu5«ø«R¥J•*õ«:¼ÚÒµú©ß4ü5dÈ+VÀ(CdÜ57Î`Ô |{{ûªU«ºººúî'ëȨ4]{œ·Þzë]wÝ…þ–.] "~ø­¢ÐS˜‹8a4ô^J iQêäùM »ÁÞ"¯ ˜ß" pYúd¢ h.}I=¦¿y½EU¡0òÈÍþ²È8¨J·={öpïþøã£G:)»´xñâ‰'Jïøar¬È½²-¢å¨lÏÅìPœ”ãÈa©8;a×áËŠ,Á-†K(O‰ðó"ñŸ;w%aCaü¥HE7ñ`OlxìØ±‹>(2š3 Ó u6-\Þ<]ÔÛÛkäïüÐé“nú›Ýh3ŽÝû°&“Z£¼ÚYdá2J’,Y²ä¡‡šÐvmܸ‘tF/Ô¤å§5y¥¥«H]–J W¯^í =ªà¯UE*=ösòsI¡™3gªH!ü嘦L™2µ¦ŠàŒFüð©§žbYo9û÷ï·ÆlfÎ qÈÿ€¡*xrâÄ ¤£ÔÃ_\£_ðp©xF;S¤=À¾€u)?n›i£0…œG·ß~ûФ½å M+µöuëÖÙdÖê&ßÞ|óM'RO’—ø/r”‡¤>úè#H…§<Š<ð6<þ¼ÿX”x°XY~i1 D§:`FýQ§%Pݺ,98F†uï¾óCwùÊW¾ùF0~uáÂüe4S›ôàÁƒ¦s,sÛ¶m?/’`ÉÕsèN¡ÔÛn»mРA×~µoÉÛgŸ}Ö¥è,’À¹k/R‘!JÊ÷PK>ŠÜšG}TR¹’ sÉ1U%’ÕÒÐÐÐØØø£š´Œ7nÒ¤IMMM6Üõ4¸½K@þú×ÕA¬â¯J•*UªÔ¯þ‹¿ dmé·~3ñ×¢E‹ÌÞRÄ ø×¯W¤Âeá/Þ ~€X¼xqWMqü†úÚµkÕyËl&—¨e̘1$›'€9sæ<óÌ3¦³K 0ëûNMÈÅ#üaà=†kÂ/h…“ô*ˆzòˆtD馋¾iùUQ<öž={ ¨·¡'N[¹cÇ^©¿Uä1$¦ømM»wïÖF Ï,ïß‚†5š¡?5 `çεÄã•à5š¿°vžÍcö˜dÛŠt°?ÚQƒízî¹ç„[y\¿~=¨Rg±¼Õžs$=¹M ¤ìèèhmm)+Š–.]ÊIΛ7s9`ÅUJ %ÚÂb'Nœ0aÂ¤šš››ó–t6޹˜I Ò8»g—,}Àð‚°zzzÖˆ¥~ª(ì^ÒæÂ#a,Fz{{Ï;÷§špÒ[LäŠ9 <õâ‹/¶µµIû[n¹Eš .btÇ?{öl+…œ\7ú³ “E+JN°ìÛ·Ï™"¦#E@Îtww›QTîEOÑçEâ·À`&ðQ9tèdÃk~ëè?(Òb7ôÑnœ¬:äe-Wj9{ölo¤úίܥ˗ÿùí·þ¾þúk{%¤ì›YÄðaÑþýû“ü–üJ‘D’òÁéÏ;×±Ž1®Èí¾!$u¥»ð³"Ùëö9z×P2lß¾]ËÖ­[%sî£M —¥¿ß®\¹rÖ¬YÐuôèÑòM‚!/Uߨ°XSM!2Ç÷vÚ´ivÞíöí½K@þêû¿¬â¯J•*Uªô}T篾vµúÍÁ_wÜqkýðÃ7Ý}÷Ý#GŽäüÓ‚©Ô‰Œé⺹ˆ—ŠØfCÀ1ÿl<þúôÓO³™#§=tèЉóÎ;ïäíŸxâ 6˜á©SUè&4ä‘™G7,qˆL%(JJEOïéÆðkÔ¢²wï^ž\Ýß.ÒAíÐ@·L¶Êøê)cËÍâ1aÑüУj{Oœ° šÝt^$3‹Š2C‰!È–q˜1f/³£&ØõRMÐÆ¹Ô!‹yˆ…Å<æ¼j1‡õÝ”U#CO?ý4ìZ¶lÙ’"HÂË„YEÁ.®rÊ”)2$î‚5544(§¡0¼¶`Á‚öövsmܸQ„(GI(ÆvásìØ±“'OBƒ!õ .« ŒŠü.Ór¶(„+NÕôךPr5ÎŤ\ñš5käÿ¢E‹ä¹4ƒ`á/÷Â-hii`Ö ­œ·ÿB |eÛ™‹œ$AŽ2ȨXÅñãÇ­BxÂø[ûì³Ï ΂<:ÉO<¨El*vàhQ°,'ñ[ï‰'ðãŠ\7 G^ßó»”—¯\ñ÷Å_ˆ$ü•mA^bPZ øÂÖûjJud«W¯ž?¾ãFÕv Èí¾!4vìX9ÐÕÕ•ûåÓçÜs¯}‘l”/¡Fù Ì'‚½Z“;…¡\œ™3gºFóQ då“릸>ùêj5jTú(½ò‰6µ¯ÇÒ–¿®†cUªT©R¥~U篂W[ú V?õ›ƒ¿f̘Á²Ð E£‹òŸ‹V3f þbX¾kùòåŒÄ+E›6mBC1ù;::xxž0›Éß²âä!C µpáB¾Ýt X¸èw‹˜á€˜Æ@ºñ¶¯‚3¿® Å@}¼UúIZÞÿ}àçé:£wj ÄÐNºyTî.b\= êARÆô(øøLZ'²„° Êqw‰*1gQ~þV‘ {œþü^Ìž Rñ‡¸àtvvzt.mmmüó¿Ù¯×-3ŒãBÀOÂü ˜€B`‰PQl¶‹,9ÔDÑ`ЉÔzHP<ЪÁØÅC‹¡Uе˜CiŒÐ–ôCÚWýà¡fiªDÒØµ’¦MÔÚþ˜‹}yqwíV_Ês± óÎ3Ï<÷ÌÜ3{ý7ù©´w/i·ƒ[·nUñ“Ó©YmŽQz(1ˆõŸ_ÁÔÛÚÚf̘© ˜ KÉ=&‹°XkkkêÚ¥ÍÃ?,ÇX÷ xÝ€>!Z‘€ ö5@Àìèèp.:;;lA!˜€¹ðË?‹üÔˆn‚ZÁ.%HÑþ¢S§Néö×"@‡‰ì¯…ݾ};/mR‚È*æ>|xSÑСCý4 t6±§˜-#mÁqnò*;%fÐddð‚§‚Na«”ʉ" Ù¡C‡Ò-zçwÌE³8yòä©¢ü4eõÀ—Ñt3æ§ÙYŠÿ‹¿.^¼ø¯¢sçÎeÅ,—P ègåÍż¤P=><ÿüóK–,±®…xÀ*5ätß*øn„AÈOíºRp ƒ)ó¹ °w‹ºººŒŒž¬Æ4ÁgŸ}V<ØÊì¦OŸ.Tù?´hÈ!÷ÜsäŸ;wn¦¼råJ«ôã"¡Ê‡ä…¼ä›c ¾Ô±ŒŠb%¥Ä™0@eg‘9ªëð~æ y ^åt‘©…´èãX) ¬ÓÙ/\¸0Ëí‹K—._¹‚ÔΜ9€ÅtF±Zd Iòç@É4‰$ÁÂ_f¿,…M·­@µQ§û’°¹ñ$’­ß¿¿­tsú´[4ÀmÛ¶%[^*r±oݺÕi’lÓ¦M›0a‚ÛuâĉcÇŽ…W–Ô«œXä¾\Å:¸{¨¥K—vÍš5 ŸWùë?ýƒØÀùkPû$ÂkÚ{W®¯kºÕÙ_ÿŽ\©R¥J•n^×ðW¬}Öoþòoÿd¤Ç?¦hÔ¨Qþûsœ'{À¨°ê,Á“O>¹hÑ"Ž"ðÅ Äp³¬)CË·³¦Lã¾}ûxŒ†9lØ0&dñâÅ>Á ²…|op†~WR²Ž)‘KhE=yT£-{öìá0½’JX)^Z…µÖžñµ¨ç©þ*2àn2¸ZÒßPé˜J´y„˜´ã;SäõàX ܼnØZÿtHØ*½Q¤’cåŒ2–ïgEöÝ@»ÃõÁ.T%÷6nÜ|üÄ_Ðlc‘n~¶ÙÄ4®]»Vn¬X±â»ELc0„æÍ›‡¹¤ÍSO=5kÖ¬Ç{lêÔ©?þøä¢ðûj‘ü‘6Ï<óŒ×m"ÿiØÕ«W‹‡›Œm|ÓŒ²§@ÀåÑ£G&HUáŽî"õЖ:šPbl<Òâ-ïBž?9k·JÍŠ™ CË;ð "›¹p¹_)ºóÎ;•ò_ð¦ŒÑ,‚˜·lÙby“KvpOÑÁƒ ¾wïÞˆ\n>|Xð¾"ûSQÈ‹o׌"‘;5J1ÿ­èdü4/päѱcÇŒ¦³Ò#üä“OΟ?ßçUöï«Wץ˗U.^¼øù矫ëüé§Ÿ*OYi´D’%’ç95 ¨:æ?)2w+`ÓÃý÷ßßÔÔÔÓ}kÉ)p×刹èœåC‡ÙP‹¶k×. 4Û¾}»“iZ^í.sÐÜ’ß š1cFkkknZ¥º[.·.}­èÁ"•\ËŽ›ƒ åÜØy5¿êÿ—Ý ê>i¹ŽÒyP/È[•*UªTéKP¿ê)¬¿úmÀ_lƒ ”}ôÑÖ"ÿèÙ¶¹¥¥% 6vìXÀOŒÆ<÷Üs¼ýKEcƺkQÆ·s 0çf¨›ÓÏÌ™3™î…sfz¹ÐJð„SGG'Œ_‚6à% b‰ÃM¤ã”F•€˜ÎS7C¥%§QnŠëÎ pÐßwõ4¦‚Z^0¦³AOÆIgO­aXRŽ®özð*1„¿|Â8ñÆJÃz¯ó–Õfý´)/16eÓ¦M m«Í›7Ûu\ÆCòꛋ@PÈ+Ýðˆ§ð$ˆ¤1Aò¢0‘9S¦LI »8óð×7‹¾Qdï¸Vi¶jÕ*ãˆÁ°(,$(HÌø‹:e›°ÌÛo¿Sä.øK 9Q'¢<^FDø§à2ìvð9\d4‹oÁí õ1GÉgGRöšæÓO?m"±¾ÍÍÍ#GŽt"žxâ‰eË–‰'"YKmÁ ÎÁ®ð Ø¡¼¯j‚]ZÒ¡««KH*HJ‡Ä§LÇO‘«˜é»E梛ÎâÏPæ¥?Àü裀UŸ÷ØÕ«Wa×å+W>ûì3äu¡y;w²}üñÇ/2²ÑÄcXÜj|Ëå(ÉŸä’U›ß+²ƒ ÔEqï½÷2äŽ;î¸ùÓ}Ë©­­ [m+’ÖÊEm -ÔÒ¢]JÐÔÝr&P¦în”ioáÂ…NÓµÜo¹u]°¹{É#×oîÞæ"‡kÖ¬YŽ­™:ujcçÕXþêÇn˜¿z«wŸë¼5¨þÊô¯iïÝ¿¶P×y½¿¡ê;ôÙ­R¥J•*Õø«àÕŽ:Ôê£~ð[Å[²Ê±4zôhõ‹¸Ð1cÆ(¹ÐI“&±¦<ËÊ¢ÿ¼GìcMY}¾M?Ràðï¾ûî›°©©iܸqŒ±ñ}’¯ðH(ìµ¢ÐS°ˆ1F4ú¨«ðE*ú{÷·=ò®Ga"=ù¨¼NZÞ|óMSø}FË»a«pÓE*å[Tk Cy×wk—ï†æ2`F »åQ̽e4?õ¯ÿ\vãñÐDpŒ¬Ã+=² | ó¨ ‘Á1ûܰ?*D¡3€‹ÇS .­Y³%i‘'ózô­"`¢0»£®¢”$|ãC=$©ÚŠXMcD0¾"Ù"UTl(“/<†ÿÕ"PivvÁ ttt 0ÐÔÙÙ‰n0^€WÁ“°˜ŸÈ¥»»M@á5@ád„\þX¤Ü'|Z0&h¦Ž¤`,œ9sðck‘ü犡¥ƒ©ƒ˜-ïÍE¿þúë³kRë@‘‹¶òi_FÈë`QW‘–À™ÅûEøÑD•üü{ï½w¬(X”É+™õ™3gúƒ/äõÅ¥K°K Áüi9{ö,^Ã_§OŸþðÃ3¸`,¯2ƒ ÌšïÞ½[ªØ)$%,Ñ¢"îܹ–å®»îºùs}‹ÊeøbœS··Ý IQYaé‚]*²Eªìܹ3¹m=s¸Õ«W;S³gÏ–o---®¸\³ÎÎø¢ÜÆ®_¥§îdOA™WŒÐÞÞÞØy5œ¿êÿ£}9ü5žƒz!Õ5íƒú‚©Þ#ÔÖm CÕ÷ïói¥J•*Uªç¯òÏ¡ïúíÁ_÷Ýwߊ+æÏŸïßz<ùÏbM˜0A#oÀ ¯X-‚dÈ™ÕmE±ñëׯçÓ6lØÀÁÆÏ3«H­!AŽ1‚'ÃÌI°÷† à0ÕZ”2R©A ¬BXÁ«øç”‘õ‡B©è“(päÝô UܼVbYwíÚ2 .¯çsÎû¼ÏçózºÇÞój¦mpÍ¢²®<(<Xó¸ð]8.7†%³´ ›GpwÁbÿ Fv*䥌 —­.ZYd9:»f+Õcm4ïýàƒ >øâÀ¥ÊÜ"¨¸¸AÌuË-·À®ÖÖV #Ixȶ¶6 °°( cb¨ÐXSœh¶ òrI˯Š*„D—‰‰½ ˜Àâ¢DÚ¢ãÇ>|¼@ T‚ víÚÅ ãüò~øÒ^ÓùСC|2\ò ÙkÕâÄDßvÛm’íGEVd-`sÑ¢EK—.+ñtWvMžØ8³z¯[…ªÎT¥))uëîîBVÝ\2m³2=T¥Ž+-JÝ¥ŠË¬ÐéïFíÖ®ø:uêT^Yð*•³çÎù!,Øå‡ÎNŸ>­òÅùóJØuòäI7ª|ø ®kùëbß öMã¯Kël¼x ÁUúŠ[jÕªU«Ö—ø«@Ö3½Ökþªù«æ¯š¿jþº¬Tó××òWÏoÙ7„¿zª×†ýøë+æÜÿùתU«Öå Š¿zRX_õ¡Î_,4_Íjò™¾û±<€/¾ "ó¹ÏwŸIh+bªÛÛÛŸ|òÉE;_Ê`sé¬ëÎZ°mlí7Þ8ð^yå•'Nœ?>.`ÔQFà’„ŒB(—®©xã—‹üÕê ÂXtxýõ×·mÛþr•ç̽6˜–‘ÝÅi‡žBmÕCƒQáµpPE|CsÐ?Teðžà–ùdzi7Ú–-[Âtn7I7úûbCa® U2ípßÖ­[¼g‹*þ‚0‚¦%^ZcWWçfÖ¯_oï¹UE*`¤³³Ónb®ŽŽ{ŠÂÔC^…ÅŠË™ÀK¹1}úô©EÒ†côwæÌ™÷Ýwß²"tìƅ²£¡HðUÕ-ÇTQ¤òÜsÏYW‚ÞaÇ/ìÞ½’`“}E`jÿþýH˜à2W+äA1ZÂ5z-Â&L2ÖeÆÁÆX4yä‘Y³fÁ®–" a€¡åâÅ‹W¬X!çsû¸}ûvù£tH+þ2½üUª{ ˜€¦çqÍjW‘‰™U(ÌrLXiªæ¯ºežfVß]ÖûñÇöÙgðÊ{ãÌ™3ç/\P¢°“EðÊU+ÕAyº¨*Ñ™KF0ì›EçwR‘oI3I˜rèî¹ç»œ—Àõ×_¾ššš~®‡´–,YÒY$n6Nå¡‹¼À:Œ^à΃&“%ù憤Fu"¤œ|›7oÞí·ß.Ùd·®w¯8O,3fLÞÃÁ1•)S¦8bÞÉN¢Ó}ÓM7 ⢗¿þÚŽýÏüÕŸ–^õ7«ù«V­Zµ¾1ªø«àÕ3=P«—úPç/vzÁ‚Üò„ |ú'©ü ¨¹¹Ù·^Ks‘O¿/¾IòäÌjø‹‹X¹r¥ñàK=®ƒ]1bÄÀg8räHßñ[t þ„PÂ\Ä¢3Æ:„ž#䯺þ~N>üϯÑî…?1ü:'}þÒ>Ü©K¬i:䉯¼òJpL£g½Ô{Jä¡A¹jbÓUب³§ëlduO v)c†±Õ¯‹~SÄË_Að×]ú¿Š\ ÂèéjGjÙ5>0€Fë‹Àò²ƒ°«£è§Eíííê6LÍŸ?ˆÍ) ÝqÇJÒ1­­­òD©å®»îâ×q›žèÑøeKQ¶ ±R i&bž`fÉY Pkß±cHA+ÊCE{Š´ð½àuwwP¤ñÃ?Ì%Ør È-êïÙC•Â"hfè8Èp™?±!XÚca±=Ù–/2Ÿ°y½_Ä“{(È270¥:qé;w BšI°‘üÝ»wo®Í ØE(Ï÷ /Ý>ýôS´ø¢=«üüóÏUNA0¥ÑÖ±cǬúàÁƒGŽ9|øpÕ°¯‰ª$ñd‹lÚ´IJX© 9½쬘|·èª«®>|øÀõP×ÝwßýlQBj÷•¢m#ä˜\FåÐ/Ù.Y”Øzg>ýôÓêË—/—rNSsà 7ÀÛQ£Fá¬Ð®ôóî7nœ•I ÉÉ{ï½wÆ «V­ÄE :õü¢ý·üu±¨Òkcº ëUU‘ùÚžýï𵋪U«V­ËV=ù«|z¯ øëšk®AI³gÏöõ÷‰÷YvùÄ=ú{E\_¬¥¥eæÌ™¼Ç²eËðWWÑO<¡nF"¦ÙÖȨܪ555ñ$ÂÒÙÙ Â5X)ØêaÿÔÀ jý±!6>¨¥ÔYËo‹bþyïtcDƒ<I¹¤q[‘¹÷ ™Cʳ*^0Bø(Ë4<ËP鬌çe(T’¥U¸düT~×P:gE»L8K ÖêÅ"}Œœ{µÇ†Â6oÞüÔSO±pvêg =þøãøkåÊ•=ö˜­\ºt©Ý´­6÷þûïÿqã÷“†‚]RâÖ[oU‘IuI¥Ãâŋ׭Y³&Ä—¹ef%ÂR–ÕB»ÝE.½\d]Ù¥½>.á‘  ~Ù·oß?‹Ô9a˜R‚¸˸¤ew‘ÎÐÌU|äÜ-Áá‡eõ”)SÆŒ#ùÇI~gáæ›ož;w®PXËm nùsÑk¯½æq™ ÈRÜÈf≡?&`bæ¬óߊšÆ@"Î sÈRO‡·ÞzkG‘÷€nA¶'N«ààbgÏóÃ\ZΩœ,_G ¨"uË7=“1xâ,ÂÒIœb»¯\½zµ_¸p¡ÒÚÅÁñÿN‘ó8(ož¡.ž\õÞþè£l=þºpá‚¿_œ?oÅÓùrÐr$Exk‘§@")A &뜔¶¶¶iÓ¦;VúyçÝ;ºHc²1ié-Ë=çÔ™ÄE "]ìÄúÏ_ÿ“€úséÒž—vûRK_ã ë —úº±¯zÿ»ÕªU«V­/ñW¬gz­uþb›-ZÔÚÚ곞ïþ÷‹&OžÌqÁ.vš#U×aÆŒL‚ï>·°bÅ ýçE<8Z²dÉ‚ x6—8ùuëÖÍ™3gà31b„i0ÿ7n8»®QGaêÊÀs^qö s*.K=í±ÐÁ¢p ˆÉÏß<"ÔSÑ“g©¸]Eÿ@Sææ Üù‹ÂÂSn×YK …È^*JÏLX=\*Ñ‚J2lµœ ¥Ñ%㤿ÛAMeö~_$VÁUøüóÏ#,Æû±pëׯ_WdCñVRá yï‡zhùòåííívÜÎΛ7ïÎ;ïLl7È É ©"fMŸ>Ýî?üðÃ’aMÊ8›6mâ?ÍóÌÄøÿÄÖZ^mH`•°8Ùq¥0†%-S(Þ, Ñü½!´ìB°ÀбwïÞ#EHDÎ(÷ìÙóöÛo›ƒàHZ«»îºëF-jnn抭ÑIq6…¥«« ‚™†Iš!qH+þ =y®ÒCÃa+ÝLÉÿѹ™ƒ…!µè`¶Á¬ÀÝ{EZÀ—É?~y}òÉ'*§OŸ†WA-;¦rªH{hK£õBåþýûMÉP–,nÛ·oObHûbë;::ì¸Ò2íµ´­Þ×^{íÈ‘#›Š~¢¿–м·Oœ8aã¼ú‚¨ËOïðŠTºÍEòßYl^h®Žy¥Y³f98Kî)'Mš4 …%Ç!/§Lxàä­Kƒµ¨A䯞߲ðW­ZµjÕº|TñWO ë«>¤ù‹Ýb³}ú}è–oú¸"¶Ó×yM:Õ_W}ñÕñ#:÷ßì×_¨×õÇñ !„ˆ.ébí¢°š‹<âHËÊ‹af¢µÌð PRüKšc‘3›;£™[P`§EÿŒZSæÖj鋲2ÑN®Ø¼_œ‡8ŽÁ97Æ÷uñåýý|?ßÏß÷çû}=çÍc­õðׯ™7%l9óÆ]°ÜlùðG8vìXíX.¦ýå6 }„}BInC.ê0ðpLï¸ ¦¥$üâÝ—JM½R ‹¥r@,íëhß¾}ª¹ŠY ÔïëëSòl©ÅJ{öìQk:<2%Oªyj© S"æÜ|GºVM§Þʨ2w\Óf&eŽÁRN^Že´é}÷îÝrlûöí|`övmذaíÚµ˜kùòåá/àz衇XÄxò „¿–,Y¢¼…`8Ež /y"^ºt)¦Óì¶ROOO ô€Ø®]»B”†”Aš”kø«¯£`ÂÉF„U¹Y>6%1Á°˜ó.@–`Ç•I†9¸&†ùx ’„M‘•Ѧž5k÷;aÂ!v׌n»í6³3Çùóç["†©¯S/,½] …¥‹¶< ²”ÿ^\ÿ(‰Ñ¢ÊFµŒGSf¡}­Ñ‚,„uîÜ9†ÿl©¿¿ÿ›o¿UøùçŸ{ŠÅN—ÜfvYk_&Xpã—Š»K«W¯†]¶øþûï·Ë¶Þ·¾€|=zøgùû¤Ë.»ìý’ï¶-8räˆnýA¾>~ïÞ½R4l+ù²ð—ï€#à”Á<ò©tÊd׌3äÞĉ}l'”,>þòenkkS(v¸ð—,•¢‹/ÖÅ}÷Ý7R“YþºŽ5üÕ¨Q£F†T‹¿ ¯vB­!â‹—¿®¹æš5kÖðÉìåOKìÖOJl' ívÒ¤IâéÓ§Ã1FT!“À„³è-kÍNó®+V¬`È™^‘qòlÃp†7ªdÚdQE9@±7 ƒ‡ Œ„•gކÄ&˜úxi@\¨:^Q'X§ÁP€ë믿î©vö•´RKã¾túBÉkœð]Ê æÖ€õb/’¼•ÁèK‰·z{{²py=ÃV==W‚!bŽÚ¬]¬µúiYùo¼dRGIÆæÊ ‚ æPl(Ù8ÛjeE®ø‹'—!8Kf.[¶Ì­íøyIlÇ9ö9sæÜyç2$™#‘¤ L[¿~½$Ù^â9e…[Ù¢k#4þ8RA€ÑÜÿXB[\ªB ®Ù‘ êîîÞUÒ¸u°t*#/•a Š9|ø°˜1výk)àƒt°Ï©S§Š[|tèÐ!¯Ë1Ñ5‘M™2å®»îš={öÌ™3çλjÕ*ÎÙ¢vhÑ»HëZw°Kø|úé§'Nœ@XpòäI,ö^‰u_zWßSñ_Jª)4xM)ü`@ü±ÖN•ðW+ú¬Äÿ‹?*éTŒ¼ÃÆ-‘­÷m±é¿}±³ö˹vºv°iÍÝ'b̘1 | ©3¥ü2l«ü‘®²Tž8Ŧ5ÿUIàd9]]]?pݺuŽÒí·ß~ýõ×c+ä5¥$ec }NÛK‚k¯½V‰“èu'k¤f4âü5øÖðW£F5úßÌ_õs:¾Øù‹Ûd½ü÷ï¸ãüqãÆù§‡¿B^<;íï S®dêÔ©|ÃÆ3l-qÂøkåÊ• .|à~øaNÞí•W^9œá.qòìììdџ̇,P(s•¯•R'ïÚ%JXÚdÂq„w<Â/ qJ__ŸG^ñâïÄG©£AuBvI˜Ë»-þz¥äõ`Nè/R§õˆ_ÚFµð*—1{woI/à…‘óJúÍ0òŠá…\~_zµ$0)9f¡L0TÈr€¶­/Ù2Øåj7mî£>аעE‹¤%ÎzðÁï½÷^<2«4þüe%>?^/É(»ÖUzª„’vìØøŠíäNÍ :e ¬‰‘ÿ¡$6#“5r>öàÁƒ®¦`v¦–p@Â_[¶lÙ¶m[ ¦¡ŒcÇŽí",Êà˜ò£¥ ÉéÓ§™ç?üЭj–î±Çñ¾rþ†Ò-·Ü"ÛMЬ5ñJ ÏÂþi@úMyhÒ]Êqaü­„¿kû÷ï(çá‘hò–FA­“%(‡°>ùä…ÈKÌí+W"@[Êh!2öáÝwßMïo¾ù&N”36bóæÍ›6mrÝXZ¾|¹ck‚ñüÓ¦M»é¦›~Xr„øºúKùeØ‘sçÎ þ‰øtç”ý²ä í,I_3Ëî”)—HJœAGoÞ¼y_îI hâĉ¾Ì.a )-ÇŽkî¾ûnɯ‘‘šÑò×. b 5jÔ¨Q£!õþ*ÈÚ9d|QówÍ<óœ¨Êß|BéÇ¥¶¶¶o¼…a.ÿ~{{;_ ÄXkn-.}s‰yp˨³p³gÏf×YYö{˜ÃSÂ_@€Eyþù籚qˆ™sVƒðä}%>X¼Â,%ÊÅ^T}´ø+˜¦$t¦š6™}ˆ¼²Ë­G )5:RL îåR‡?O§­:a.· ò”ž-…ÂZ¼&Î5œ¥ðÅ’Ž2¼ð¦‘§ŽÊV #Tþ€ö(ÎHØBÇŠ#£Ç<ü%'W–,øâÅ‹.\¸`Áè³\‘±¿fF‰ý³éK–,Q~ë­·JY$yXD…CûÝÝÝ;J±š===®á¦Ý»w›”¹ü¶È×ȳAd/—Ð òBU¦fR*(T¹··—¡í)±²kK(Ì|CC^ñ.îÀ Á"G)àƒV`Ë×çÏ @ *±8Ž›é›„Ç ,îäÒÌ™3­ö´ðSn‡+­^ã]hs°tøða…žP~?(!)·X,WÞ+ydTï¼óŽá)Û¿J}ñÅ_}õ•ëg%ÂBaa1˜ìr v}TRþÏ’1ˆÍN›ÚwX,©…µöeuÉ./)ÝsÏ=¦9}út'ýºë®³ફ®ºâŠ+.½ôÒùÔ|/5ø—qöìÙïð—m²æ¿.嬅¿¶”ì“O>ùÌ3Ïxêh8†¾™ÒÌÙ± Ö|Ér‹¿|,±ÌôÔ-s¥½/FHmø3Aþü/kø«Q£Fý?jñ×` »P|‘ò×å—_΀q•|—½ß:ëÚjÙ°ÜæcÀ—"µ©S§²âÀmÍ€V­ZÕÑÑæðOή?òÈ#n‡3¼Q£Fµ•x{kÅ®Çîâ#>œW‹) ¼Z#a%!^=&?ŒŠòV&€4 þh_y &d—ÆÓ¾a¨0²BFZ%±^‰´ïÖ»JÒ»ëž={2†çJ‰•§jê³Êy”À#£zn@*†îÄ(ÆSqV&cnñKQ`$™r†Çø±âüðCé‰'p™e1Œ`;ÙÈßYÀ#SJøkâĉá/“S²VëÖ­K,DVû9ª` y½õÖ[0 !)µÑáÇ8€³k•Gêã¯Í¢~òÉ'Rxuº¤Ž§iÖàO:¥ðäÉ“ê¿[z»d.Á.ys·zÂíc0—/_ž@›‚£ê,)M˜0ÁAcé/»ì²‹/¾xРAC† ‘ԧ曪þ¹_®ŒO?ýT,κG¬?ò²Áž,=^Ú¼y³ý)óóÒŽ;ìUOí^{¬§§ÇW·££ãÆ’¼Ýxýõ×wuu)Äe>Î@løðáâåí´jju©ÿ3pþê{£µüÕªU«V­¾Z}ù«.‡sçÏkþâ«o¦Ú%~íµ×"/Pöƒ’¼‹>Æ0 YSnMÊxÃ"¶ ´°Ä‡3«Ó§OMeêú3¼aÆý°  dÁè"‹oËÅCÎßîe;!žŽÖ—XM…ÛJýªd0ü§¿ Åye5BaYóP¤H/q÷T*ÿÚk¯½X‚`±µË–-_‹/æEõ«MïÚ3xø@˜öêøñãxÇbZm£² †g[ äx›ÑÔ©S-ż’M.upð—~½n?¼ñÆûJ !¬wÞyX©:…À‘ ÎR’s­²Q)Tr Hüàƒ>úè#ð¯ÐÖ?J^×&þ2rðQØÑ£G‘—Wtê]Ì¥Íý%ÎßÄíƒ4» 6<øàƒBÌá› ò2G–þæÒèÑ£}®¾úêK/½ô /üNi€>3ßd+åÊ8sæŒ(œuØx;wî„W‰BøkÓ¦M6›‘¼] Çdlà%K–Ìš5ËÞóɽ®$Fhë†n¸¦Ô”1u|´¸•+W¦åþÏhùë?_b-µjÕªU«sê,þ*Èzâœùó—¿ØT Ä†1`R„å–w­¯²ºßó”=cÒBglöÌ™3½ÇÉó¥³J?-y±?ÃëììœRâuõ ¯Ëoó䨄!gËarÁ_¡¤ÀTÃSäQÐ#DKßÐJ K‰Fäóbly*SZæfUó4DÓpS€(…òÍôþ’jMï %e.)yîÕ4žš}_Á#Ï—šfU3<=fMÂh5%ÙTLaL ñ~°§€/4!R˜+›Ô«îîn=´5nÜ8iOOŒèO꣉'N(5{¸ñùkÖ¬ y±ý÷‡Éj2¢º}ûv;\á–-[ŒŠM5süM)h¦PIPKºk×.@àËì^-y‘‰ÕΪU«–.]j+Þÿý¶·¿Q_epôf¯@w-‘Æ Æà£>jäÖÄL3÷FPÔ©´½¥wr­ÿ¬S-ˆ~Ö™ LûGŽ9|ø°“‹­pîS‚•‚2%-½^ÂnK2µ€ÕéÓ§A¢<¼ú{IÉûï¿¿’lšÕ>(ó–ÙíÝ»×LŒDЛ٠‡Éø¨[n¹…w¾®¼òÊÎ?ÅW <ø‚ .hÉëëë/¥\Ÿñ…ˆœu 2‡ÔöþeA­_”œDÄ)P¢Ž±bÅ ßÕð×M%daçKÈ~·$ï¸ù\Ë8•¶ú“%Õú9£䯾wYË_­ZµjÕêë¨á¯¾öeù󑿆º|ùrn[q_à«««Ë…¦¸ÜþŠ[3fŒ§êÜ\;vìäÉ“ï¼óÎE‹=PZ¶lïƒÇÆÿ¤4bĈþŒëøQ‰çÆ! ?ÉÌv˜gHÂ3œá‘@M¨Ä_ÄÁ{§$O½ØJ ¿Ääk9VŸ¥OåðéH z ô¥åJê€Á€¬Dª—€Õ‹%oexÒgŸ}Væ·%uìJta0j½RR(ïuk’Á«` ÁÔQ˜L|¸¥xê©§¶–˜½GyDìî¹çžùóçƒ õýR‚>jÔ¨ð”¸.‰ø­·Þ ¯&—Æ?®W´l ØO€LÈkݺuðjãÆkKܦ®ùO{ÇŽA-óôÓOËËðŸ¿ëU–]šW¥ò»wïNj©c€ýU“ƒ]¹r¥€J©Ý(]½zµGXËAƒcÞͪL\± l{Åq¥7£4sæÌÙ³gk ¥Úó .\^‚`æÈôj_v•œÖ€¬À”LˆOa)`XìÍ>òH £;R\Ì<¶’y·tâĉ“'O*‘"8Méhÿþý{öìѯ-‘ÔJn/˜ÅÏPMÊDÌHàg‘rä‡>´WC† ¨oË·G¯—reà/;óÙg}ï;S8À'JNÐØrR‡"gÄÁtGÒ'Ô¼±tÕUWuvvŽ9Ò7m/±Sî¬9§ù&Û–›KsçÎí猖¿¾ ÇZþjÕªU«VçTÃ_…WOôA­säÏGþr¿ã¦)S¦À÷;ã-ƒ¿F÷ŠÙ–*t×'ÏK¹tW?SŠÝîíSÊ».X°€s˜>}ú¬Ò%—\òoРAz DZñœI°%Å{£›äƒ pð§Aål|$–>D#æî.qøa©±•ú*(×WCa! ï* U…¼å•f„wûäÕ geHþ†ãpKÖ Æó%(„™ÒÌ%Ü”Áè(t–‚! m©, pž’¦å†Iõ‹w˜4ë™`Ý~ûí“&M²ÎjL‰—ãÏm~ˆÉ7òâôR.M>›$Ì?¯ðî»ïÆ;ëׯg#™ÌÇ{lSiCéñŸ ¾xQŒ€¹lr£ÊÜ•7s4årMV>¸$Eæ˜ÚSÊú0´+V¬°-á´ÄSvøâÅ‹Á¦î¼+Xi\Œ´©e!زe‹±©£òÒ¥KmfkÁ¦M›–m »À—a]2”=a׬YcFÆÿ§’ÓŠ‰ÀÄÃV¡*™à¨£Gþ­¤Pг’b‡JM%Çï½÷Ô»Ô·Úþç¿oß>Û8õ™gžÙZÚXe_fž9_===â%¬N:'?bĈË/¿ü¢‹.Ü«û´|‹”@4·ÆÁƒO:Õ÷ùøãm¼;wŠ ÔZ_rmû ˜Óaú«Ž# dÉ’%S§Níîî‰ærÄ|~¥ÎZJ"徯 ºÓ×Ï 8õ½ÑZþjÕªU«V_­¾üU—ùóç/1“¬©‹Þõí–g¶¥nö®®®ëJ7•Øož …É»ëYq6{ìØ±<*÷ÎŽþ¬WZówîܹñ{üC†7lØ08-3*,:áÆCIü6²`8ƒ'a«—Kqì¤0ôÑøy„\¢TnHG‰–wíÚ%ÏÊzWI¸Ì+á©Øõ4¢\ËÚÿ})Œð_öëïÅ«:ãøE È †¡#d¨a‚® j©ÙŽäEø‹±Q[Í —œØBtj·3¢õÇúc£%Øe[ö³¶,*«Ðv#x!tÙ•ÿÁÖ>x¿ø¾¹ã;s#×Åás>çs>¿ÞïÏ9¯g!…`ä 5µt˨12óQÐ2„å•ðcÖ„z’ÎYýŒ’J³ÊèYfØ03Ï ÞÁàH°†††6nÜ(šB,¾uÄïÍŸ?ŸÁSùhé‘GQÃø Jê9ùu%)Ç´Q/%FFF€LÌ@@Ãü £“'OB!c5Ζš‚([æ_J¶1!°óÿ¤ds\-0®Ð©ñ¢[¶lÙ½{·5Á@™)q¹ÆÍn‹µè+èÇž0®L/ø2Tµk×.¹‡+7—v–’êž"…×^{ ‚NçŒmNF]»v yaCRFRˆ 9Å®ü9ªºyóæ¿J*¯_¿Ž­€•²öÿ,ý£¤±–ø«5ùyáÂ…Ÿ !¶k·«Ç7#GŽî¡’µø’ØŠà¤0=ÜÑìÙ³ï»ï¾žžž)ú–|u¹Ôü5°˜(wÿGþýõ×2SnK?ÇáýR8+'BÔ¤Ÿ‚äs£…°(þ¿¬Bp â…8tîªÞ@&––:ÿkI9Œg&V}ñâÅY0õœÌˆH‡ýãÑÄóÏ?/ŽÁ+l5¿£‡z(õœ;»8ö9sæô÷÷«”RâéŽt|Ó¡À_,% 0òÂDÇŽûE)Γ>þøc¦ô£>JÙNvôüùóʦÚl‘UX ÅjJÕ‹ `lÉ2•чlÙ¾}ûàà þ’ÞÉJ]_~ùeÄÇÞ+y=s@|NZ|ë­·œ x¥Ëy¡$¥´~\Ó•ÃÃÃR=·µÆß”’„@I 0‡úÒ¥K¡*,£ð”‚T*¯–´”ŠŸ}[ZÞ¸q#³ülQRÚ7CÛvüh2 IfÚ>#°|9ȱñbòš>}úT}F¾çºXjþ¢|åÊ•Û~%B&Í|ÄDj¬¤Œ³\b”²«*e¯À­. œOô¢E‹òev.\è*šÎJWüu tæÌ©;™M-Ý ÇZþjÕªU«Vªá¯Â«]¨5Aù®ã/ŽšÕdñæúAiéÒ¥~ônW–bªleFÝuÉ’%økíÚµ[·nåî8Ï—tÅ‘²¸¬éK/½Ä²êg23¼ÿþû9Ÿ”x†3С\# Ã58F*ÁÍâÏyx–8<ºáÕµiŠ4vñÌzÖ2,cŸ®2ÊL»ÛðWÈÈ‹y=·®¦”wcï]½Û¬b¤™çÄò”ðH¦Þt«CN>øÖ4V©ì)Çž L^¥wyBo…æÌô"{6::ʧ1i<ùƒ>ÈÏš5kæÌ™³K@ p±è<ð€òܹsyõžžžiÓ¦õööΘ1C\‚f—$’²Tá ¥8zôhXæXGxçƒÒ‡~(¥UB[&s¾d7lÔmüeÚÙ®`ùáYJ&¤nuëu臒,-Ĥ -à `ʱ’Ÿ?/ýºä ÈôCó<|ø0øB1r˜¡õúÖ’R)ϓ޺_»vírûb)Fæ™é™mRT\xòk×®¡­/¾øp‰ÎßKnѶruü›_e Tð4é—yž:uŠQ·ñí–,šÎˆšì²Ø§J޶U?÷ÜsNîâÅ‹EJìDP(§ê3Ò*G¬ùk\¿~ݹ»uëV÷¯Ä©—êNÁ;3¨¹ÅYÒO çEY’Ÿ;w.5uóæÍ?,=ù䓾¥>¼>¿ùV;¡˜‚/€æ£ýÄOü¨$CäðdV4åüÕýGkù«U«V­ZýouóWý&.ߥüÅ•á¯M›6ñiË–-ó+vÅH¯()¸]µjÚÂ\ZúËórüÀ† ¶mÛ644Ä‘ø^ô7Þˆƒµna23ìïïç÷—ÆÆÆ‚*L)Ž`\ÙѸÜ?vôiG|/Óû»Rš…ÅTjÏ Ÿ¦žçaþw|²6ܯ«±‚KA°FúÔ˜Ç6¢fA6™Oέ‚6©†&4nØ!=tD¦ªlÐ@–·âëÌS‡ Xyn × ¨²=áúbõµ÷–ÛL†.–Âpe |Á¹µúúú@V_É-›SâÕï¹çžî ¸mZN/ “N€˜$A%o¿ýöñãÇøRv*,±š!b8q>51•ÙðFÖÛìxV°¼’fÙ´°‰3 ú³4¹‡Apïê*Q]á"ó(Å ÎL$ƒ x”9###¬/Îr4´ßQÂYœ­žÕï.5£ìÝ»×­òÿhÉ ÅÔɵ^³Š¯Iû·(ûsG2g||\z±3“ ¨Ú.Ý»n³{ <Ú²ÃìºS渙­Ñmû ¥8va]\bÑV}éÒ¥¾n‹f«Éët©ùk|õÕWâøå—_vÿJd/ærîý’CË¡P/ £Ãááa't}IL}x-Zäkì#ì»*š ±øŠ2þòéÞV’NßdV4…üõÍA¬å¯V­Zµj5¡n㯂¬–ïFþBLX à°ÍþÝþã~î@ŒUƒ]O—Ô¯Y³fõêÕKJjDvÅŠ¾Ï¾Ì[Ko¾ù¦ÎÕÿß+šBþêþ—µüÕªU«V­¾‹þꦰ;•ï:þò›Þ¿ÿÆÑÖcßç¶¢£§Jþøê!˜+@SÃé1Ÿ{K±ë(œÈïI¹={ö¬_¿žy›9sf7yEØJàf̘ñÝ#ÅØëMÄQÑG |&'øR@! &óìÙ³ìeÄpr›á¯P•…É®vc¦šl`ÀòV|¬ž! `%Yͦr­|éÊ•+%ûjÉ[¶lÙ´iÓÎÔúeÉ»§OŸvuÖ>ì\HæW_}õÅÒ %yî¼xÑ-—ËÃ:ø Sƒ€KšY©þGFF~Zzï½ÿ°_ÿ¯^–wÇAƒˆ$'NÆñˆÇƒIÚheg¢¤§v’ãH: qè™ó€ž$8&;f˜di7ôÚèË1ukl5m¦ˆA¿ôCRPBЋíÁõÚçæÃ:F;çŒî×7×}Ý×÷ë}Ý×ëyÒ°ua0©îª1~iK„³tβGá¬èñ†°žî¶nÝÚßß¿±ÈIÌ9]Uäx.[¶¬½½½­¨µµun‘Ö½««k:ç±Ö¤ÚTTÝ_}õ•ƒöÑG5_%¢ÚA°õÈè…"¯âÁ¤ƒÀ„Žƒ°tŽìõEÙhÁl‹Er~ÅË‹’¹råJù),Võ"P§<£™å¯›áXÍ_µjÕªUkRUüUðêÅ&Ôš$}kñƒÍæ ®[·O¹ÄWI»Óyéû‹Üò>/&6ź»»“Ó××700Àò‡ûŠöìÙÃ4r°GŽÑø¶mÛæÌ™3AêÝ:œ,zùå—ùíPL˜%ÌŽ$8–7‹ò‰Û F䇭‚c®> Ãä§ŠbŒÓë ¡§”ÔBjQJ¢!…å竦Ҿ'Lv…Â’¨x*Ï 5¬¬HP f$¡ÙªGéàa†WFk$Y‘óÞ{ï}øá‡È+iºÞ´L£=qâ„B(öQŸ={vó‚·‰ ö?í”ò¢‚cL ;vŒ ÄD,%³ƒ±rXMžÓ†JLLL° æhY·læbý[‘ü©bXF 8¯¯A˜‘‘c HeåE{zzÖ®] ±á£€Õþýû R-î7Ñ%qèСƒŠê½{÷ a®_íÞ½[ø#mõ¶lÙ¾´òÒ]€hs‘8×øË‰kª¬œ‹ÑÑQíãD)âÉ>¬€NmMºYhQu­yfä™—9ƒ\·y±â+V¬pR–,Y²î¸ãŽyóæ®YE`¶ÒÓ¶.]ºtÁ‚Ó9’µ¾­î¢æ‹Ã‰ûøã›sœ÷±±11 ÞÆ‹üØ'ŠÄÚr.Ž?ž`ö*0ÄÛƒE6Ýá²évÙvû3¯^½Ú¦;tþÕr|J“€QW˜MyF3Î_Í7ZÍ_µjÕªUë»ÕÌ_år˜<}+ò—+›IæñÜ×înW¹{œ‹X]ä~ÿq‘4£îö÷”Éò­+beÙNÆrxx¸â/¾ÑtØŒgžy†ÃT`:#äyË;vœ(âRxo&D„k‚?HÄ¢ÉùKQ KBIx3¯¤ò{8ˆ÷é͆ÂGÊÈI)硹Êÿ+¦â_‹d*P!žÖdzý{‘O©SýEÉŠ/Þ.Ê,2† –W 9hë­"Ūa›;òRøòåË|ðÁ•"™ž *è,üuíÚ5SK6JðóØaáÂ…·Ýv[óšß^4…ÍR«­­MõööB0»¸M» MÜf¦l.\¸tVÛL“–0ÍæÕ¶–+{‘ÍULu í@°3Eàk``ñŸ›6mê-ÞŒk|©¸UÔ  WøÃîflLï+¯¼“,˜ö¯š$nbީѾ\¿~½.$4îtx®/‚f;wîÔ¾¥Ð!mÛ¶MÚ d åÔ8>29í_²Ât±ßÒñákÖ¬±È]]]Hʽûî»ïºë.+¸fUÀUíË·wj û[ë;ÔYÔ|q|òÉ'7nÜhÎq„XäDœ.x ëÕ¢óçÏŸ={Öלÿ:ŸÁ–ÿ­W6lÈŸYw~ÚÂ@0$öü¨•¹¯HÌŒŽŽŠä)ïõ ò׿nb5ÕªU«V­Iõ_üU ëÅIÓ·1xîhÎеær•ë€:»·èž"7{ʸëy÷{?cÉ”²ŽÌöã ñÀO=õÔñãÇÓ4ù«¥¥Eº+âLâÏ9¸>Þj’‚d†M¼†¼’­ðê©4S+Õ‘W0* àÉÒ«¢Là+_+Œ ܽÑP©@eÔ•ÈH´¦_þJ›Š0EJfØU˜_¤…´)a Õ$*6TÒ׫W¯Z C•Ðàòê‰ÂT”~§HåY¾C‡ -;ÈÂÍŸ?¦Â Ç1ÿX€- hè¡›£Gr’¼¥éÿ¹( ’Ó‘ã)eÉ^˜x gÝ(‰€›DµSÌêøøøÁ"ýB!f5‰¾¾¾‡~XxǾvww‹^Ÿ6oÞ¼½ˆ¹ºÏ?ÿ¼ey¡±ÇøË©„Ef’v7$-F‰Iôôôh\Ëüð²eË@“’c‚ΜÌõó"#Ù\ä¸âôÐBvÒô)•)hœ©v5î©Íµ··ßyç6ÎSóЬ<§m òœ©=­õ=u{QóÅñé§Ÿ~ùå—Í9Îæ™3gÄ*È:SÁ×^{MœC0i±'_4ž:u ‚ HÔŸ­]»6aì|-^¼¸££C0øK À%ðºŠò»~Žƒ6ÕšÚŒf¿šï²š¿jÕªU«Ö÷QÅ_Ív³ô­Å_àyB¦”ÙãNcó\Ù¡­ûŠ|uï‡Ñä¯Y³†àyEö’#åQ÷ïß¿·hß¾}šåº[4000Ι3G»ví:UÄÄu³+Ð)XÊï°î/^ nÄØ_¸pÁ'…Ã2 „¶G ‡ƒâüCmì}`'µB©žRK#ò„ŠIŒÄ¹sç”4H îTQ 2(£®g*­)Ƙ÷"­iDf50ƒIï^µŸéhÊ ¯\¹²Ân&.~À—Žä¿ûî»rRXlÇq{ƶ-Y²dîܹ3MÿQÌ®!t#>ÌRf­^/ʼ˜Ã‰‰‰¤ƒZf—õ©fMù”Ý”¯{jy¥=yWüõÄOü¢(„¥wÁ 0aãÆ«V­2YQͯJ›{x Lñ·£££O>ù$,b/½ô`´Jž£EŽçoŠöìÙ322"È!Ø#<”rv´lÖ­­­‹-º¿Èyѵc¢ÀƒE#S喝ú‹œAù¾äòåË¡œ“ÈE/.bª;;;¹îEEÈ«¥¥eÖ¬Yž·7T­ _? š/ŽÏ>ûì‹/¾øç7ßT9"Où¬ŠBa°K$û8v‰êóçÏû$D*Z]äW,¢ù?û!‹ü¨ä$Þª?°ƒ0µ¹Ì,Ý ÇjþªU«V­Z“ªâ¯‚W/6¡Ö$é[‹¿P’ËL¹Ö]â<ª{œÙ»·Èýž3©ÀOŠ‚f.w~àÑG5BÀÅÁ>÷Üsñ¨@L›ªqn–%žÎ9L²ñ¿/Ї¯Pðç—.]‚a%r¹!<‚YÂGa™PŒbñü8KNˆ€Õ )©€|B7ª‡t|}£!…ÁÙ"ùZ²i3%ÁÂ[M’©kÏðcÅz™Kžj(Ã0*ùšò ŒT…óªÓ0—òY Áóþûï‡Â®]»8­ óc€Â®ÙDÆž“ÿØuL'xÄ ï'6øÀ§Ÿ~šŸÄJ(Êry"© §Wã´Úv3‹Ÿí uf¬†ÕæNÕÂn^ùUGC˜mݺucw m€L_‘ä>‰É;w†­½â‚YŸ4È!#GP&’GŠ{ì1sAmÛ·oß±c€Ò¦–Y_óßPG‘sä4­X±äòÃVúå4!,gÍhc¤INlóÒ¥K.\¨‘¶¶6 +¹ H#ííísÊ®5?£¾~X5_Ÿþù7¾þúë*Gô&ºÆÆÆ~W$Æ –`Õ>ùÅ>}úäÉ“A³ü 8°¹H´ôôôôöö r1ÓÙÙ™˜‘ØBKüÜS$º†††4rôèÑ©ÍeÆù«ùF«ù«V­Zµj}·šù«\“§o9þjmme†‡‡7lØèúv‰wwwǯB­•E¼¢W¶Ö½ÿÓ"f€ãݲeË®]»xTöõÙgŸÝWÄÇrªl*›qìØ±iò#ªSë0VtîÜ9î=ðƒþD⢅8">˜œáÛÃVÁ·KEñÿ|$_aí <ÓŽ|µÒ¬Z>¦´@¨Òãäõb¬6Π‡„¯!)9¨„1K¿TAVE‹i\Iå3ß.Ê(½Ð•"!tõêU㔾~ýz€T§Pâßì×ohW×ÇñÁ@!H)-¬Øˆ"ZŒ‘¸UšŠEju†2"ÄÚ$E‰ÿ[š¢ÎÌhý?µjbÔtY‹×ý‘1Ñ>û X¤´ >Ö'eeÖ½8_~—ßbÒ¦æç–´÷óàpî÷œ{î9÷~ï9Ÿ·O³|ùr, J•Kë™gžáù@©‚V¤„Gû‚ÝIÁ•ñÍÙÛ¶(¯Té2^‹Ö³Ic^QOOƒÊ©jU‚/fuÛ¶mo¾ù&ªŠÌ”̰ëÕW_õ\ðµlÙ2^TDºÂ¥à/ÌÕžÄÜ¢*%øjkkëììä~¥.SÑAP¹!)ã/ÎvåÊ•õõõÆ´F äe–———••ÉØII`Þƒ&\*'Nœˆ¤ž{î9>ÙO§)ð R©O˜0Ae̘1^ Ò€Ê@ª±cÇþ$áUNX#YÙ©ñ¯¯¿¾yóæ_|qïÞ½,(‡%•Ԓɇ’ä³:ÚÒt2IJã2Ay®ÒÚÚZ—²lÅÌ–h£®ªªrißÎ*‚¶ëøä|CCÃþýûm¶–ò׃ÁA,ç¯\¹råÊ5 úñW‚¬cÖG9£ùagô /¼0#É ^YY©tˆG°"Éáî”1íJ'ûâÅ‹YÐææfŽa®wß}wGRGG¦ÓêÜ7~SSÓp&ÉÐzÓûû¤àÆ“³ëáá9v%Ö/ñö2øÒ·â._E“{Ö‚ÂjtÓ‡çÔŠ\ÂM‡ºWþÁ½ÑGk6ZàX Б‰¹ zRº7‚Îbª`0z¨qÊ9ƒ"U, jÅZ.^¼èRår’ |ÔÕÕåI*Ÿ Å%@,ÓO z¬_-×pt÷îÝ85¾úê«Û·oC°;wîdGIoo/ø’üöóI\~LÖ•d—“ÛGEgþÙS§NIËú¤Ø~,Xà‡ÂbrÞ^-ýl×ÕÕÕJ—6íª$ÿds¯1'Mšôk)!Ÿe9åÊ•+W®¡(ã¯b ¬>Šø‹5ݳgꯩ©AX*Žø8Ù_~ùegý¬¤Ù³gǹ…–,YÂÍr¹«V­b>QîÔüW¿êÐçQ$1ºÃ™ä¸qã˜jÖ÷`+Þ×××ÝÝÍ–‡o/A[; zœOr©®Ä/¼}`W‘þ¼ ó¯ò$ñÀ«bŒ/1óo**:øX.U‚˜Ü®ì¦Þ“£ÁF‘³I:|XzÌö\R +biž«³EÓe<:ÖkD^ü±â°+pòÂ… êy¦ ÆoÍš5ðÄ…¥J¤o—ñ„’JFI¶–$˜Ã|¿UŸ p2^£¯ó‡‚NŸ>Í…š?'ÉšJZi†¼8RIk|P#o—¸Ä ’õ666nذA–¾óÎ;’Ü+{;’Ø]£A9´…Åd/ò’Àêš0Úæ‚Z[[ßN’ö~Ÿõë×755Mž<¹ƒR`WÖaLRyÒ÷…©œ¼F¾®]»–àëóÏ?¿uëVñkË^¿!¼Š ÍÆŽ¿Ž?n—8qâ„<×t"IPò«ÈÆåIsæÌ±Q/Z´È/<þ|9?eÊÁ_$â_{> -^¼XÒŽ=ÂZJË_ƒáØPø«xVFŠ›råÊ•+×C%¼:V„ZÔGqžË¬:µ«««gΜéÔF[îéÓ§»œ^¤ 3%]WWÇÙò±Ø gmÛ¶Mݹsçî¤ð« *{èÐ!f{8“,++[¸p!þÚ—ÔÛÛ‹¼€ 'ó×$¨H‚N?ŠÑL<ø‹2´ü[ó/hX> ˆè¦¿>ü© €/ÁŒ¶²É˜[p\èeÁ ŽD´¥4~àôPÆ#ŒŸÝ¢4g3«˜<š|D`×¥K—"…àXpe,–|õÊ+¯@PªDŠÆ”¦M›FQÖ½ñÆ’G¶9r„çìîîfAûúúЃº+iG’ˆIâIE)1à#V$IK%,R‚¯µk×¾õÖ[Œ.p3tÂMè F(K•l*÷u\Ö¤q{{;÷ »~›$hÎ7n\½zµ ÷¬æææŠŠŠoYx1|åúÁëÊ•+ÙÁ¼®^½zãÆ,â–Õ^BJ_«7ÉßÕÕPv4É?+'åÿÒ$¨eûÜö/@0¿ƒMsÙ®«’f$®³üÜ»w¯œ„µ”œ¿ŠO´ïÅ_"¬âÈíýôí­¹råÊ•kª˜¿Òá0p=篜¿rþL9åú1(ç¯OºƒƒXIøë;5ôž¹råÊ•k„¨%È:6`}tñbb ¹qTådGaJ§¶³{îܹ555Õ‰¼øâ‹8hÁ‚‹-jllD^aP•|)þBaÛ“PR[[¸Sg!˜ÕáL²¼¼Ü ²?)¼ *¨G§ûj!‘óçÏŸM:ŸtáÂ…hÒY Ft†0A@°å£$Ac²@âÖñK,P\ŒðARÀQðšKÅz.Ý¥O`TÌ0f塺‰GäÂŒ`Q‚§“ÀZ Ÿ¹©ÇbczñˆŒ a©?z\ðøÉ'Ÿ¨¸ÔáH’ïÕÐÐà+?ûì³ÿcþzø³"2Ó0ß÷õ×__¶l"Y¼":«­­•™³’&L˜0„ŸÄÁ‚&Ì”¬wË–- m¼mo ¾¾Fÿç“0©—Δް÷Ï ú5dõÖ­[³qÊv×ÒÒîôqé÷yÌo+ר‘-Nûß|sóæÍÏ>ûìúõëÙQÒ××wàÀ›Øñ‚ìÒRÙÓÓãg?yò¤ËîînuÛBð—lüU’íRIHyèÒ¶ì÷ôØ¥mѳgÏò¢hòCy¢]úÖRBþ*>ËJÎ_Ù„‹ã·Ö¡ßý^€­¥´¹råÊ•keüULaƒÕGá#§³y͘1cJÒÔ©SÕ+++ã•9Ê™L§ùK/½¤ljjÂ_“˜Rî”SݱcGgÒîÝ»,.È ã²áLòÉ'ŸäÏY޽IdN˜dvt§`¨¢ŽA.^¼¨ "Ã&VDk€$ Èzÿý÷Ï$© ²=Üѹsçܨ÷¬À´ ž¿$Å€† FÓ9"z©»%‚AOºPPÅS81õˆ“KÁx„n.cqK,!ðÍeL8H`šÆD[: ÊŸË—/«Ä«°„x{ëׯ5¾¯·Zª,i’ÒVÚÑÑ! å¤lôu¼O?ýÔ·–Éýú×ÕÕéÏâòÀÁª<0d‹¬FXrOùë$>Ö%þR÷ ÖÖÖ]»vÇ¡àa®ƒlPqjüûþý[·n]»víË/¿ÌŽl%Ó‚¼'ɺI’3øK“òt’mßv'k“lÂóæÍÛ”$o—|¶?WTTÄF=mÚ´ªªª¹IZ•õõõûöí“¥°–Òò×`8ö½øëa·>øo>z¸õ;ëÙ C*W®\¹r=Veü•ðêXj P-ü5yòd&“Ä_ñY³f9¾•X dÕÔÔ8¾çÏŸÿó¤¸Ô -Y²dÍš5ðŠÅ5í¶¶¶­[·òº]´gφA« ¡Ž;-++C|æy ‰KéííåO8„mPÄ€<%‰@’¿'eÄØF— ® :ÓçLAFƒ6FPq—J”nAOnügR@_P[ð”à•+WLæl’VÁ ¿èé2HMâ¹N2ŽuR‘é/n-1Ϙ¿Û¡Y<7\}Tt3¸a2²È¥Î\ß–¤ÆÆFnüøñ¥Ê¢(É&[T™¹sçÎS§N]½zõúõë7nÜàÇŽÛ¯ÿÓO?ÍÊ.]º´¹¹YRù.^>W,oÛÛÛå6ÈZ·nÝÚ$ÛÒÒòv’¿@ÎVŸ©S§þ_›k¤IÊý‡ýò ÉjKÃøÀ€ s…1Qh’2©Ô¨˜ƒƒššR¡–h…Y¦†bE¤N¦SvrÌ?„vÆQfgÜáœÓ™FEDÊ„0™þá7AåÕœæÇûàæ£üNé|Ù'ìçbó~k¯µöÚû{×»žŸN¹¹¹§OŸÂ_ÏŸ?WËú©««‹ÍHN’Š]&bRekii! ÉFºÑB9Ýo¢P§¦¦þÁD@¹f;s%ývš¨Õêߘ¢££cbbÄ_̰„wñ9yžhKã/o-Nì,þƒ=&^ðîÒ̃+W®\¹Z²<ùˇ…ã•Å_ÀÔåË—óóó9²£¢¢8Ä9²ÃÃÃ#""¸Âb4r|ë(‡¿8ܹrècV;vîܹêêjÌ檯¯g¶FXG Žá`1øõë×/yØc ;­É:€‚iñ-â/Ä!&‰°EÔC@ Wq üò£Iø#fa”ˆ˜FÁšæT7±›3³¨Ç!2=Jy˜U®¢BŠª 8!˜˜ëæÍ›Î$ ‘³†ÓΜð”@Rïdiµè »Ä†CCCwîÜa1### ¤…û*4eddðÿù*‹üS yyyPÉÉ×þijjФ]°?PÆ7KÁ+>,ä‹õ%ùnd2¹WTTtÄsAaìISUU”×ÔÔ”““³ÌïèÊ?EnèÔxùòåôôôƒ=zä´WÔC€«££ãK-T3v:û´¿¿_h¼¨uÔú\¼xQüE•NJJ:þ<¥• §ÇÅÅѸmÛ6ö5ÅìŠ4m7eff²¤k×®­^½z±ïâCþzëÄ|Ë_oB°Ÿïémþ§råÊ•+W˦wøË ëÆ‚ñ â¯C‡q¬gggÇÇÇsXsµ8²  -tø+Ö”’’ò{«‰ ÅÙÊ_¬Ÿë& Ckk+£½½½···«« ?¼äunÞ¼ n2uvvâIð*L‹EJ„<`†rùq^‚ ¡ w¡ 6¨â—#õdÂoM‚&úÄ„?èëyÑïИáÄPqÀ~3ˆ³4VZ¾2ð^ºûƒ‰ÙX'}˜Gíq¥EWGUUU{M;w䶵µ‘~°œ²L馆S®É|’\E;Ê´{÷n2þÚ·oßbßÅ·üå Ç|Ë_ï·¼swÁöç_°Ý[7W®\¹rås9üexuõˆW a± )))œ×ë×°°0,11‘S¯Î­]&ºedd` ° Nø s yaï/PŽXü%Gñ À`–¼Î 6à /›°Ç  ÀB€“Á±ð,àK¸sÁ ʉTOq—+,Ž Á$Z`8ˆF˜0J¼ÃO§3wÅStÖO‡à¢'ê)‚;:\Ð׿›„`_™ø)Öû§é&f à–pLÀÈOž¢7Ò£Å}bOXLäȧ`~|WII äkÚ¸qc@@€¯RÈo•••ÅÞ!Eù|6-00ðƒcI`:C¯|Æöövr›TwøëèÑ£GŽaæüü| 0ß¶=}útee%1NxÞΕ?«¢¢bfffvvvbb‚ꧨs„íÌ~$©(\ןçEà§ õ¤§§þ¢Ñi©­­Ýo¢JSŠ)¹­­­pjr¼ ΢z³Áé³Ýi"'‹‹‹á¾,ö]|Î_ž'Ú¢øËsUï·x“ç!îm¬·ÏÞæqåÊ•+WŸTžüe‡ÃÂñÊâ/ˆ W j…›6mÚ|á]k‚¿ø¹ÃÄážœœÌ Žù,**âè…°¦º¢ºº:⿘0®¬P0>>~õêÕ%¯dHKKã;ˆ¿®_¿Î#0'X¬ <õµI0}À)@Ê÷&¡“ F´%øÂŠÓ€žßÎK4'xT #†ÂD yn™KÝsˆ’ÎÒC»ZŒà‹ úx ó3PYHÅä?˜Ä€bC$Â!"¾3-ê¬y4-|« .ðáÙ¶™Ö¬Yã«üñgñ¦qqqä*Nµ»»[(Ö÷cÆ’É$í½{÷ø€Xeà‹lÇT—˜à¯¼¼¼‚‚XŒ 77—Ʋ²²C‡§¦¦²•>õÛ¹ògQT'''§§§‡‡‡{MW¦2ŠŸþò¤0o±ÿóׯMXÓƒ‚ZÆaìp‚spÓÎÏÝ& |rr2žóøñ㘚štà æÂß¶¶¶Ó"6Á»b?à/ÞbbbâÍ›7?Þ¾}ûÒV»zõj0°¨¨è&܈@sBŒQéííűȫ ”$c €C,¤ma°A0º ‘D: ¼&Îbr1”ú39íz ³1'í¢3Z˜‡4 ¾´Bٜͩ˜€n “¨€‚¡§A“0Mïâ0 ~ÒM\) C¢0Fñš,`xx˜˜þ|Pë…mãÿý•éÿOÿW@@@xx8i\\\ :aV›ššêêêHéŽ $ÇÆÆø†|jr›lg¦:lfsss÷ïßÏüð»ãw&öKpppPPÐ/ÿÇ~ý‡v]íq¿0ü+BDˆþHHa**ÎD—â^²6ÛÐØØ¦Î±í¶t6$Ɇ™á®ºY7µ%áÌ_óvç.uéV71µ ?îýÑ…Š+"Ê‚ ¨?¢nýÑ}pÞì˗غ9E7:¯?çs>ïÏùœÏ÷û>ïóz–”Ü€ÏÌš˜R±íG›ÑöïïïW£lùË—/«„øKÁÄ__G“ ?~\G:uꔲ£,(ø Ì-“˜3ê°JX__¯ØŠïë듊øK¹^°`Z­/@g~Rii©qw=¢rÚãø–ëÈ_cáØDæ¯ßeøÊÊÊʺy*ðW«cE¨5Jâó×ܤ444”——;©ç͛ǢÎ늊 ãÎq–rY’“Õ¬««kooïîîvš[ Á¬²GŽáoY‹7’>üðÃÏ?ÿüƒ>€`ï½÷þJ¿áÆ·ZÔÀxtuuõ&Á^|(…8œ EúA:,$á¨_K*`”„y=É]¾mqP‘OdïxÊ[„¹å¥\&Ñú´Fb|(I˜A3X­©Î;'Xd¯P•Ë4Á&e[¿»âx©ŽñXü«I¦3 8DéC¼;‡ÆÆFß´iÓ®=m&‹äsUU•Mèiûöí{öì‘·³gÏþ¿ÏÂ(ÎÖ/ìÇô3JìÇÜ$[¶lÙÔÔÔ´nÝ:Ûᨭ­]½zµw¹´}f̘¾nÀfMdmÛ¶- È:tè:éòý÷ßW[¤ÓóÏ?¯¤¨œ'OžH ÚrLA³ý%¡gµúžÚºuë½IòSîéé`²º¥¥å¾ûîS«ƒ¿–,Y"ùÕöEIÆW®\‰ÈZ[[ÿ˜4}úô«ú–ëÎ_Å'Ú篬¬¬¬¬›®bþJ‡ÃèýÉÂ_•Ip‰™tjÈkñâÅNp·Œè€¯+VĹï_»vmss3#º{÷n§?ìz!éðáì‚Ãý™gž þúôÓOÿûÃW®\ùè£ï¿ÿÞ·0!ã[í”)S8^fãOIŒ ì:}ú4ëâ–X¤ ë°l`[¬*ÈÅ¥qî†'nxñ³»d‡µñ¸[…x3Ä7¦é˜M¤ŽÈÀ±Ù9sÆà+#Ò·ì!Æ2Lhþ˜'ÞBÿH2®/ÀÂb…ŠÞ">0F⃾€ƒÎíÀÀÁ¿†;n¹å–kO›É"¼É—òœruóæÍmmm555wÞyç/?(ÀvóùC™déÄ-K<“˜°)I*r¼vDÀW€—;oÞ¼;î¸ã†|_Ö„VWW—¥\ïß¿_ò(•É~W—Ž=ª`ª-j&:;žtvDOeó¬¡tèÖ××'W$)×øKÝëïïWråÔR«Ñ– ©Œ—%„c.«ªªvìØ¡J{üª¾å:ò×OcƒX毬¬¬¬¬Qõ3þJulÔþ¤à¯š$Þ€9w:;¾çÌ™ã¤^ºt) [¾|¹Á¥I(¬"ɱî¬gD·nÝúÔSO1`€HGËlXá?“¾ùæ‹ÿöÛo?ûì3öõ×_»Daã[-þª««Û¹sgwR_’7².aQØî%ø‹y"£¨㸅MŒ Ì€|ä®N©©c#%"™¡À\:ÜEsZ·b£+ñ`Ì >VXŒQ ) ²+ÐY³È¸g/\¸ðöÛo¿1"1 gÞyç/:qâ{öÄOlذ=»ýöÛ¯=g&‘¦NÚÞÞ»¤«_`ãÆ6‘ìÅeri¬§n»í6ÎVnŸIB^LrX_ã ’¤"àÒ®Y³¦ººˆÁ1»ÃöùMAnÖXR£pÖ¾}û¶mÛ¦j)³*°R-Ž9¢=xð z™¦j øsRÔááaw õ gµ´´DFXÍÍÍ===Î ¹*É(Új¸¢ ¯´sçΕ¤ª+à’S[ þ’ºWõ-ב¿ŠÏ²Ì_YYYYY¿Fþ*¦°±úŸ¿š’0Sê¼v¬kH‡¸óÚîröìÙú«W¯¾7‰É¬¯¯ïììäê÷îÝë( c˜ N•»àþ•TøÝ€Ø_|¼â²¤¤d| ¶Ü÷h7â½øË™}Þ†]áj,€A=Ðæ•òàPpäï–óçÏœ 'r+\PŒpÍߊ,v>É[L. ïOy<ø+()àë¯E æ"ãž²¤‹/")ÓsÅ„}FbÑäõf’…£Åâ/%¯ 6ì°{÷nôÁzÍœ9Y\{ÎL.Á¥M›6=üðÃM<ò3 ÄÊËËÇ¢¤ûï¿_ŽI* ðâ‹/J°ÞÞÞ;vs­Qmm­½ ­Jbh™[;hÚ´i7ø³&¦Ô¨¾¾>m{{»¬S0•&yõì³ÏÊ+­šÙßß?88xrD±à/u”éQó#%áÒa1p÷ôÓO{KWW—$ æ’Û«’–-[¶8éî»ï¿páB#^*“¯ê[®/…c™¿²²²²²FU¿^+B­Qú™¿ ¿[æ¯Ì_7E™¿²n–2ýŸh™¿²²²²²~YÅü•‡Ñû“…¿Â”(g7ÎB^kØUYY¹råJíòåËKKKYwÇ÷Š$ž³µµ5ðgÿþý,#Á1îÂ:¸œTøÝ~øñÇO>ù䫯¾ŠK~x| ¶*oßš´k×. þŠe 0ãÇ30/½ôR×pRø;JV.q TÑ“ZtÄ`(aàÝ͹+؃o% bŠWè©f$ú/'ýv3m°Œ‚`1U¼åõ$ñžxèuÑ0âRØkIÆe øÒ÷ɼœÿˆ1klldÀn½õÖkO˜I'9¼víZNµ¹¹Yæà/©ëdIø øe¤÷ô¤3fØ===ÐÕF“ØrŒs¶MüŒÑÖ'UWW Ö®[·nÍš5MMM°î®»îºÙ_œ5QôØcÉœM›6É=ÛpçÎòJ«R $+­zu* m,[^í:3"ãtŽ=ªPK¼¨ÃðJ6ÚàR´··ßÉCã÷ÜsÏò•••ÍNe 8øª­­µEò&ò×OcƒX毬¬¬¬¬Qõ3þJulÔþ¤à¯mIŽoÇ:#ºhÑ"í‚$¤SQQá‘-Y²dňŒ¯_¿ÞS{÷îÅ>‡îïïgV9ǺîâôéÓÿI*þé>þøã+W®DÿÝwßß‚ÃB´&uww3$–Áôõõ/FEËÀ¾%ø+H ¤àÞF^A1Or·À_üeÚ@¤€ 0ÊœF†††Ì4¤#ÀNž< ]âµÀ.‘Þ%ÌS&tëͤx0iIç’<¥Å ƸËXC<+Ñ·Œæ-ƒƒƒûöíC©þ,?ÚÔ©SKJJ®=a&æÏŸ/cYSþÐCmß¾%†`mmmHª££cË–-ÚG“öHJKlÉ,ÇvíÚµyóf3ø%|ðAƵ-É„. Ö%źٟ›5!4% éÈ™ÓÐÐÐÞÞÞÙÙi?>ù䓇R*åØsÏ=wâÄ `õ—$eSµ¯O$¹´‹Ïž=«Œ¸«¬™P¦-M*//߸q£Òןä–ËêêjµZݶåsýEIê¹Ö#UUU–!±QáU}Ñuä¯â³,óWVVVVÖ¯Q¿Š)l¬þÄç¯I)¨q¦—••9£+++µqv/\¸pæÌ™¥¥¥Èë÷I555|,ðá"¬ÄѸ´Ø‡©€rá.þTüÓ}÷Ýw_~ùeár| ž3gŽlH€–áìÏ|ðàÁ’‚¿€ ~9 Ñ %þ¼š´…ƒ.]º„_ ¯'ï¸ñ/^ p#aÚxÜ]ãMhÈ{=‹¿X)wc%–$ƸÙâ.\ð/Çä#à­¹‹ª¬01(¬•Ap¯%ÅRÅxãÀÀÀž={ZZZV­Z5kÖ¬ß&|‘ìeGùRjýýò©*Íã¸A Òýb ±– ¤F¦¢‰‹]73,vЬDm5ÃTSL 5¿mêZÊ`©Ó0šã23ì,NSQ? õã°?î‹Ï‡{9ÜsÎsϽ÷ÜîuÖ÷‡ç<çy>çó<çs>ÏçE¨ŸDÈ“'Oh'l#¸ºaÃS ãÙÙÙ±±±îîîžž*[âíöíÛ [kkë_D=ì0%1Æùk’½Ö¥Šþ êïï'Hà/"„8ijj"sNLL0ù=WVVHV_‰¾‘%6EäÅ£Ÿ(ÝÚÚbðÀÀF.‰ )¬Á_„1oܸQ]]MêV@+**"‡ˆÈ§N"Ÿ×ÔÔttt0 ‹jEþò—Žyá/»oÏnï#?Gk1¬+r|{ªm _N&w«Ýuúî^",é{&û­=©æí^‚³J=ñW!þ¼zaA-‡vêóרhxx˜µ¤¤D‹k~~~ii)Gù9Q^^^YPZ__Ÿžû”Tª´illlàØÔÔ·T°ÿ…íj§§§Çàð±cÇðªADÉA1377G-½´´ÄÛqcuu•z††+õ eÌ7"¨øRV¢Þ¦êV¤¢\^B8ƒþiƒ :²èÑa eŠ]˜ ñ0Hn !Û+‘ò0Å•‚J "ÞÎWVS¼Ž)ùI¤¦·\yÊÒ¾@<À‹Þ‰0«˜ùìÙ3¾åµ_3333þPÙ§:sæ ‘`¥ÞÞÞÉÉIêX¾…†‡î¤n;¢G ãééé‘‘È‹2U ëºþâ7lÑ‰Íææf®uuu'NœHöZ”*º("Þ`"E0¸‰øšŸŸ'À–——ÉœäÉõõu2皈 F¦Rò"!/nùß͈ÛGuvvj(’‡»»»5÷2w||\õÊ•+$mà ΊHàà?³i¦$¿¬'ZTüµçÄ,nçµáQDÅ3×û+¼¯å³Éî•[§_Æã·³ñDø¿‰ó*Í?¬óÑþZ cÒ‚ðåã&ø"?wl_oO¨¬ü%‡ƒs{¿ð×cé]^^^\\ Ýpds‚sË•ƒ›[Îî åUç>Ô³¸¸ÈQ>/¢ÐÚƒ” ŽüeÕ;wbpj£–¸&)H(•Ÿ‚¸ÁQáàeöºˆ†J2‚V£ €EY‰[@L 1Øa˜²XˆÔ@§>(mým Hé ªb Š(:…8E<-òÉx5‹)^¡T¨#õ¥8©ü¥”§nè,0^;ß¾}ûZ¤ƒy YP¼±lÎÍ›7ËÊʲ²²bCÝ߇òóó©B oЩ««‹PÁæææˆ¢T `ªÜ/Et.,,ÀT³ nmm…­êEVCCC£¨MD)ËSÔØüÉ^èRH·D0ØEÀ€K¤MþG’ÕÒÒ’Gø)jmˆ4I\éäÊïÌÿNÒÿ5ÌÕ$" ÛÛÛgffxÄ\‚þº|ùr ¨ªª*–Å¢ÂÂBÒ8¹G-麣£#ªùÈ_{î öÅ_iÁjð³½Ñ»=ñË=ß—ç&}ÛºÛ‰3›DS^ÆÛǤٰ+éŸ>$=IÄ~¦‚ÂøK ë…c{_ð×°èáÇ555œÎœÔçÏŸç¤.))QCÜRÄr‚ÿQÄ)?55…œûTOŸ>¥¢ 0 Míº(‚€þ-2ì$H›ÏÙÙÙQÞÀ_ŠÊƒ "\¢æªUͪHÁ8ú^¤ ¥t£äE›þEÚÐ A»»»t*mqÅyÿ…Óܶ··Àëvvv0 %ÁG€H¥üÅëô]ÚVLà ¼{÷NÑìç xªF”ï´ÍU,Ô©®Ò¦`<‡††À[*±œœœ#GŽÄ'ûWyyy0ÑB LèöˆFFFFGG ¶ {$"°¹òG0 ¥¥…Jõ ‹À1PK iDÌ•1Ãü&É^èRHÝ" #H®]»¦ñó7ÑÊÊ ÙòÒì¤ DR…¹677iÃ\$ò 4,Æxb•DGÒû³¨¾¾ž6éŽ)¤bâûà) £Q**iç–¡¯¯ÐcnT+ò‘¿¬g™¿üòÖíÖ:ÅþÈ0×ííæanÂ^êqŠõiÄ•†Ù±/ÐìªÝ«=—"Ímë¢2n·ì¶Ø°¶ãÚ +õ¾9nv"NsCìæMˆjÒl²{èqáŽ/õ¸En^yì±?u”ãòíþ¸-Üñ-]mW½5/ܼ!ö×ÙÛ†[ózòyâ/+…¹µSŸ¿´ ìTþ⌆¼Îž=››› ˆq^CaåœÚeee墶¶6Æ+ì0—+üEm0==Í-¥,OaŸ_E†üïo¿ÅæsVVÖeˆA<666>>>;; ÷ñö™™Ê_Ô6Z½ J^PUr ‚Yh+ÑÞq RYô()^Á>jðaîO":¸”éÓ˜Ë-´ñ¦p§fÕW˜KñŠë¿Dáªx¥ö•ÑpŒ·Êeˆƒu-Tn/Ÿ†âŠò ô8zôhzzzüq²uJD WWW×ÖÖ666677ó+uuuõ÷÷OLL9DÑhPT§<ºwï°FåÌx%,ÚŠ`×E<Ò=§OŸNöB”*:|øp¿ˆ˜i! ¿'y‰ìOAa$LPˆl üÅÓ¯ƒÚÞÞ&i©ø©¹å)„ÕÛÛK6ŠH€„1Y L$ŒÉ‡À¹úêÕ«$j26)ý¼ˆ[]¼x‘k{{;I›HŽjQþò—ŽÅÃ_i¶"!¬aïܳŽSìÇ–Ç‘ŽÎ80?õbÖ¾œ°1a ŒÊ¦ã†½Î°É;.Ùí©uQŽO£ý.ŽnGüÐn#ãÙ»«†eº­Ýð­ÝŒÄ°ð=ãz±•W¼¬Ôà¹u Þ×ëeØžç]uûd†­0ôDtÆ<>ÎO™P…øKðê…µÚ©Ï_ VVVž;w®¨¨ˆS»¢¢‚Ò½¸¸X;§v]]Ý" Tʆååe Èk~~ê¡æ§ ®X[[SüùYdÞÌŒŒŒ|>tèP©ˆ"„:yhhè¡HIá î­ˆ¶¶¶¾)‚QÌ(õ(…A7ð uðòæÍpæ‘Ò™R•"=/_¾dÀû÷ïõV‡éH«¿‹°¦0ÅU‰t‚cßÅ\z¸2ŒïËFÑÄ^¿~­ƒy¤H¥üyé[ 0ÆèÞj¿"Û+ñøñcŠ4v†Ò+33“½Š?Höµ Мœ*OJPö„Õ)H^QÊ?આ[×ÓÓC„wvvÒIƒ[:©œïß¿O›—½mQQÃt@€Š÷øñãÉ^èRE¹¹¹m"‚„@º{÷nss3,6::Jz$ß’9•¿HžÐ©i]ÄÿK’!Yñ_“È]Ü2ŒY4˜ˆrõmQGXjÊå:11A'ANL’®ÉÞ%%%ùùùšÀ Éí4ªªªººº°IðGµ(ßùËz¢ÅÀ_VÙO–´HRØt·aŽÇVÄnã{"¾%âDÃnxqÕ¼öˆ®º 0¬Ú‹ç^,GtÒü"I Q9cþ:—ifƒY/ËñèaTÓ½˜Š¸"/¿žÇŒhÓ° >FŽÛ¶¶"þ&Âç„ÊÊ_r88·÷Qœ?q¬sj€]\A0Îq®ñ—.]ª©©á–Óüºˆ`ffFaç©hA4-¢®€Å¸þ"2o&•plžç‰˜N=<$zðàÁØØô¡TøüùsÊ8‘Jã+Ñêê*^mll€H ,£ØÈ(Á_?E¿v†Œe+Æüøö¡ó[‘‚³@9p‰( ìRS!¬£ó» p@_Áìb ©ôÊnʉÁ,SÔ,mzvww?}úÄÄíímê·M_d  £Ê:yò$üg„ü”‘‘AJ0—––R‚É„%1µ1urKKË€ˆÝƒÈcªYþ ¢eMDPKlïÈÈ8Ö!â_à¯a«+++³³³“½Ð¥ŠŒvÙ‰h’Z[[A°ÉÉIRÐââ"Ù‰Æòò2HmA^/E_‹HV\¹ ¡Ù+iDM|Ö‹HËÉV‡aêÖ­[@ ¶¶–+ÑsùÅ¢ .ÐCƒpÅ%hllŒjQ>òמ;ˆyç/ÇÅê°}¤cgTÃ{wÆñ‘›óÛ6¼ÚÍš›)óFœfÁ̓WÖö«G'ÝŽ6H¢ §x6ÄÑŽÝHįo·•{æÎ8§GEÖΈc 6Ýü1Øtü= nøNæ%„:í^EüÅ'Taü%õ±úüEiú¥ˆ3½®îì—mHUÙÇဠˆHHa ‘„/dŒN%%É0),Šð-¥È^ŒDQ™z­L¼e5 N¯ŠÖu¸wh𙬹©—û$Ñ…>q!»ѧ;cu<mÎÍ}öÙÇ£sïþج½öZk?kíµŸõÿm†°V­Zé5))‰S{‡™••U*jnnnoo‡k8Äñ¨\‰‡îTñ‡§8DÖ‹ÙÒÒ2½ÈcD›6m %±Áª««IGäÉÎÎN~U².eþÜÞÞÞ‹/^Q L±Á¨$]ôõõAg°•æ³E›ššŠDìaÇCãK"¶.ïe+’½µØí$på¯U¢ŒŒŒœœzwlÝ€&5ƒüå}–Í -˜–…¨™îÚÍN½ÅøÍÅo{¿ñÕÀ"N;QMÄ΀~žÞ& h;³ ¦ãØÄ¢Æ~xÓ‹0 îí"_ÍüîÓ6ö··Ížíd=£ÒæÈÓØAÆ<«2øË›Â|•ç8EGG+ÕÕÕaÚ9¦ÓÒÒ8£)¬[·ìâŠ_ÕC<%%¥PÑqôc$p ;€“'Oò´­­ ¡PóÛä¤Åbâf§y˜ˆ¨°Ø`ø«¡¡KŒ9!°"‚!*b;-º(ÂÏ|'ÂÏMÊ2ð\??Šsà&žRV.£Lnµ»Ò™𥕪´022gÑ÷Úµk¸)^g€bœ!})+"í®ô‡ˆŠq¨!Fc3ÐE_D‚õêè訕••Á¤n·{ùòå|Ü ·ÇüºtéR$==í e«äçç+ˆUTT°[¾ñYïÝ»÷èÑ£Ç?þüåË—ïÞ½û·hbbâÅ‹OŸ>Ó/ÈÊã‡ËËËùAC=QGsBä%u¥¨¶¶öÈ‘#û÷ï‡Åȱííí$Û³gϲӀ/’§¢·—E ÌÕ#¢^“Y‹Jí9øÍ7‰òòò`:¼rå ©˜¼WZZºaÃ~’¶&svû"ÍáÔ°ù ‰iмf–¿|áØ,ñ׎Åo_Ó™hŒ©üÎÅô©¯ñ}=²к½wá³Á-º´±°}M§3õíÖ_ÙtL¿‹d¥EvÄbv~1}j1ìg¯0–7Љûý¹,6ÜbF~ÿM;“õ;¿³°9Yû«ÐÏЂO}ÅlÊY•Á_‚W¼Pˤ<÷ù늈™ãXKéÔÔTNmŽïµ"*srrv‹ š?‹0 j'ðØ ø«¹¹™`ŸoEøU‹Å &þØØX|üU__Ï«/Çó'eâ!THðŒˆh‰€ñ6NoE\¡ˆê¹-‚ª¾Qæ€H´¡^錎:ÂO¢ÁÁAž*Ö)dJøs¸‰1iIwzAR:8õ|Sši #ð JFSûYÄS†R £ ”GK^¤ðűdúi¶nÝʇKNNŽ‹‹ r{ÌEDD,\¸­¢[šÅÁâBÙÏÛ·o‡ž0®½½½7DOž<³^¿~ýŸ_º]ßø0ùþý›7oþ%ç»´µµ1 ³àŽÐŠ+øŠø1I­€)‘,ÔÕÕe\á©oDW> à‚³®^½ s‘¯4ÉEÄhÉheeeD;wîþïZtô[6 &Ðõ±xµE ¦1û²é8ÓëhALƒ\àcüFkÑÒ»ÆÖþÄ}-{@‹9u(;‹üY{_“µîëu3ëà-*í¯ªÅ,|oÚfj̦¯ð55_á™Þš6Ûòæ/9ÌËþŠŒŒ¼$âDd8µA0kqe1·ÛmðWnn®š ¸¦µµµ¥¥¥K„‹ÀÁb'pxQ øÌÆ×¢‡Z,&Fc<íø].£¤¤äèÑ£'NœÀœÔÖÖeÂ#NH[ò•ˆ8Õ«àg°˜œ¾¾>@ÀÁxÃ5°’‚R¢‚AF<Âÿp¥f``€2-¹ý›ˆBŸH#Jap áÕ©€;Ê<Òën‰xª }’2 k Œ3…/fŠÁÛ&â«%&&.^¼8***,,,Èí1?Ä&ŽŽŽ‰‰ae௴´4È PžîÙ³‡Õãk>xðàŸ¢>ØO¿MNÂb÷ïßçCìÝ»7>>>Ôsuzmܸ‘}µ_äñxHJååå€)ˆäCF"+Rèîî&ORàV3â×f7*)|A^4ãÚÓÓÇ"Q¯•––RµÑ€öäp2{{£òĸj§=;6dç“ÿ" yÍ }ô bvøËÑ‚ß×ó8räÈÑ\Ðgü%uÁ´<÷ù Sª”TYYÉÁ­4ÚâÈæ6##ƒƒ›Gœãyyy5¢Ó§O5¶ÿ€ùÄp¦+ætttà1Œ[XÃz=ÚñƒxŒ‚‚Ÿƒ¿1ÕMMM\Câ9)¢LØ,^…koo/·Ë8ÓmÑ"1å)LŸ€J¬Ž’´þšè{‘bœE›ëׯSÏhÜ‚NÃÃÃp ~ŒŒðˆ6ÔЀ^ ÅJX¼ˆE£^ãÑ. Bcº(ô©+ëêêbÊUUUEEEy"¾Ý’%KÂÃÃø2är¹ Ñ¸¸8økõêÕì·ÜÜÜ]»vUWW³z¬üøøøÄÄÄ´ÂÛ·oŸ={Æ¿Àoê¹: ½vìØ±{÷î}¢ºº:~ϲ²2rióܹsgΜá·åʆ!‘*ÉŸd¤«¢þþ~²¿6e §¯¯«‚I¬°°m¶IÄ[:;;éK{rx}}=€N®&§¦¦’ÀÙí_ŠÈä$·Û]\\LZæíÎkùËû,sø+P-pàË‘#Gÿ—2øË›Â|•þrøËá¯ÐÊá/G¿§þ²Ã_¾pÌá/ ß"Ô8räÈQdð—àÕ/Ô2)Ïqþ¨w‹òóó3339µ9Á׬YÑÍ9žžžNC|ýúõøŠZ^¢µµ•. Ž~ºCa_ÑÞÞÞÖÖÆ¯Ôƒ°^Oœp0S!‰­¤¤ÃQCaW܈Çã!Hâiý$¢"T¼GOO¼Îàj”ªnݺ¥Œó¶|hhˆP àÒ§$®J[HÉ‹Æ`®0”Ö(mqû£ˆA¾û$i½ÑþæÍ›”ïÞ½ vQ»(ß)Ñz˜c¦ÐDz³O˜õ¶mÛ²³³ÕeÅÇÇGDD¹+æ™Øä‘‘‘)))ØÑµk×âQñ®xc¬/Ÿ~ll €š|ÿ>ȴıӲ²²B=]G¡Tll, D}@|H^ã]3"}2Õ0ÆÇº~ý:C+..ÎÎÎæ{_»wïÞ*òq&7ŸX»víÚ³gKš5 effæåå5440ϯ_¿†›üå ïÞ½ãƒÂw´QÀTXXˆK×ÔÔÔ‹Àœüü|¼þ”𜮮.ÌÓã´§§æúV4"º{÷.ü¥äÅ)=¿<E=f…ƒárGŽ9#ÂÓ冇‡9Úív½Š'pŒ©‡#jbccÁCL’öPØJ‡æGþrßË -G.þr§0oå Î_$ö~üE4‰‰a›¶X,‡ŠŠŠŠŽŽfû¾¸ÄÆ]YYySÔÝÝ \¾|™,¡€aìâj—ˆ¼¡°F‚Xb>‰¬>ŽbûöíD ‰’ÌE!Q¾téÒE§ì"ú *4Ñ=÷îÝ›œœ„t~Ñ+E3j 'Ž4PzâÅ‘öÿ)¦Ñžã}‘–Þ¢lE3jô @–ÞB „¥5Êkˆ»¨‡¿î‰hF÷Ie|w’8WVVFÎç»ìß¿?$$„ðq7Ÿþ$ c%ëÂNÁ_Dß'Ož¼ÿÞ¿æÀ/ÙÜÜèÑ@,¶ªªª .à6Ê_˜dqq1žƒÕà3½½½–¨ðE%æ©F¤¢ p|á-€?¾º 5”;::øë­Vë_D<ëæ ˜÷òêS§N±Âi‚®„M&€tŸˆ)²X,Àô˜(;;›åA¾}ñâÅùſ氰°À*âW ô@¹¹¹©!@ S ïܹƒOÞt ¨Á0ùµ‡œâWþ½+š0–+h†q;w†*a¹ÜË“iÃsp†ŒŒŒ“"<œ‹)…¥¥¥áÉ,Q~•ŽÎïüå¾£þ22222ZZîü%›ƒçòWÁ_€Ïw"6åÓ§O³M“W!/p†ÍšSvp%2vvBEÚb»' ÐOî%0ܺu !-Z[[a.ÊÑŒ‡ÃÞæóÑ£GÁÁÁ¾Œ"44”’: •³4üP& ÕÔÔÔŠ€/â]ÔÐÐÐÔÔD?é¶ò#´E’!ä|+Q~”˜ ÁÀ((I+rŠaPÔ(yœh Uc”)<Q©ˆŒKÚ€öúXÞ¨<8"¢ô–>3 à+==ÁFEE_Lôº)-Љ‰¾XÏ,ìãÇSÎÌÌdm0ÏoÞ¼ñ»9,..òMKJJ=FPcc#KëÊ•+[Ex&•ƒ"µM¬{Q£Fý‡ÊÛ"®I7á©Çp€¬¬¬äääj·S©.-³ê@³cÇŽY­VÖ9Κs*<<ÇHMMåtf¦áGþúÍ;ˆþ22222ò¨ßñ—@Ö€ÇòÆç/¤û>QÁf³±_³kk^UòRø"ígggƒ}" «½½ª¢†DÁnÞÛÛ{ãÆ %‡ÃA™6Ñuwy›ÏÙÙYÊÇQð‚Çùó狊ŠJKKëD•••¤”ŠŠŠQUU8¦—@0z˨[ZZ´ŸLAˆ( – M9HCdDÿ^DA9kNFÑ@‰ ÚâÈ)`—ÝÑR1ðÏUÚ?~üæ‚ãhI¥Æ-^Ç{é€ö¤»»†…Hnn. *11‘(äûØ| ³X,GE¬g°‹c=“BYẒù oß¾ý߯¿úÝž={Fêô­·RRRÀ¨ŽŽ5Æ«¢ÚÚZjôwV§Åa€&N)Ðÿä¿íö©R˜ÚŽZ ·p×:sæÌÙ³g›Dz•‡Ó¿ÅÜÒÒÒ°n–=ÎjgÍSNQOeAAwÑ¥U Ðüå¾—þ22222ZŽ\üåNaÞÊŸ¿†E;;´I¶ŽŽ&¸²w5ÄW ™™™PÕ€SpÖÐÐ@~ Ì±««K ¢áy@É‹S¶ûþþ~é—‚A"""|ÅÖ­[ÃÃÃéjŠ(++ TÉÏÏÇ ¯bâPyy9A…žÓÕÆÆF2’輡CÄ ”4é9 ‡)Ç8u&&&HÓÓÓ„ŸI ¥„mQœRPãtff†6Êe?Šî;vésW¿1½¼—wET__HœQzz:_„o|1dß¿þæÓÞ½{Oœ8ÁD¥ŠN‰l6”eÆÔ±’Y–üSŸ>}Z xùò%‹*ÐÓ`´Þª««Ã4° ÜÓ»,Âg°êù©µs©™ô‰´ÜÙÙyG4>>ŽÃ`ÔcÔpXå Øð•——×*Ò{ñ"ZrZXXh±Xð«ÕÊñ (!!ለBRR;^MËU пüå ÇVÁ_ôm-~ä@iuÃq}&¿÷Çõü5jì¯Û׸޸ī¿–Åù‡ëÇ÷,ý?.0ÿÎùZÌÌrVŽ/òhàkúÆu“‹¿¯ÜPËCyãó—nåÌg8pøÄز‰¬Mrr2:WÁ“["‡Ã³ØívF§ˆ A=Ô@öhkkãØÛÛ«9íMMM}9™>|€Jx‹£F‚ƒƒ¡(Œþ“ÀOž}º¸¸¸þðêÕ+~@τѺ ·Ä%ø©ùµ1= ¼Z„{ðSókÃe¸Çàà Æ¨5ˆ cÁÏ¿_ ´EË»"ìE˜*†à jGC"Úc ¼¨¬¬ Ó£'Nƒ]€`±NQ___?33Á­bŒ~ç/÷mÕü¥}[‹ùµ¢÷.³ñê†ã~ËZÌF'yi}ã–*×¹‡Ëyc æm¥/ýÆK8_·éõö|o•KtÆ¿]]‹™Y‡Uñe·µ°aäåË¿dsð\þZø«M€Øl68ˆ]„Ù·o_DD[yBB[9G,Í©Øë ÍÍÍÀ Ré‚.‘+`1®-n:E…&H¼TþüóÿÙ/»*³5Ž ]y!I Ì@¥$?°T:Š¡5#£ƒ™ßv2M3 KÎØ4Ù„cé4šÎ8•”ÑEEáE)‘!EeÝU$§i8³ÏgáfÏÞû]{íwo?êìÿÅËz×û¬µžõ¬ç}ÖÿÿÐ-˜ذ\àQ@…1a;………¥¥¥­‚ÚÚZ¨Kee%a„«´´´ì´µµ±%»Ð¡ßb¸}PÀÆ!Wø‰ŠTúKi¥Ÿ¦ARbJÑ'È´ ÍåhtÂÍhœÐà61†3­ŠRww7ë‘p¯®®®^€~„V!+bbb‘‘‘!ýå d)„3??¿¤¤DÅ Äx% ]k$¡¾wïÞLè¯ÿþþûƒÈö¹F³ ôÐÐê†:ÀëWd…‘ IÙ¤†ð¤T*éÄ¿¯ª ü, &PÐ_ÌÖßßO­À’~FQšÈjÊé£0S) Ô·ììlj5O~„¤¤$j8E#M——G 'óH…·±Ç ê/‡µóW9fFq˜À¯uÍÜÎ Ec®‚¬GØ OóÕ± :ü]ÔÊ~6Ãëu~Çüýêf(2³–ž ÍÏÙnúKDÖ¯íÏB}+@LÁKÓÓÓSRRਫW¯¦Á=έ­ž,Íÿµà°å²oß>ÆB Šc@*zzz£ø—©‚¬@¦A6`nÁkoo_¼xqàQ@˜ OØ ÙRPPP1 EÈbH›;v ¿öïßÏ.övïÞÍv Lûl}àÀØ ö«ð¥ãdzÚè&%H•(SDËI¢xšx€ö §%£¾Ÿš‹åàl„¢¹¹¹N€lTnC¥¢££—.\¬X}I >YYYˆ¬†††¶¶6Žr·€“­ÔÔÔá¤,”Ó~ÿþ}ЋÇFGGÕÿÂÿ Ö®]‹ºvíÚ;wÈ«¾¾>Òï¿?ÿ;5ê‡ìâ¯ç©*=ô;vìG’QT ga(8¾R%¨TÕÕÕä3¯}‚Ÿ¼bCJS4Ö­[—ššŠ?®Õ‚¤iÐ_TTÄr,M‘´±Í ê/׻̶þR^9<¸³ßùÉ­'ì Ämˆ×Qž–ú…<¿z.áµÇaMD=ýñj¦ùäs›š%Lœw‹†ùºVké-õG qÀ¯˜œ”þ }zàv<êck5éC¡‰•›'>-=ç79_7{éáÕO«µ OÓk ýòG¿¨fisû ‡×á-ž~mÄÞT†‡bâ@ Ë™ÄÄm×!&𺴿ÞÎ+8õ—È«3.RËK{þë/ES!0”WvBBâ…vFFFvv6Ì6//«¿§§G‰´Ï®®.x,ª:¡˜€âŠQÀI@z@àØ¡P '®ÁDíÝ»7ð]¸!** †þ‚u e¶ØàæÍ›yBÂyUT¼ªªŠ¨Âm îÛ·oçÙ( A´gÏH»h<ÛÛÛi´´´ÐÿwA§€€ÀÁPUÈØ#Gލ(±e:Ù2°&bEÏšŽ˜u™ŸEq¦ººšgQQ$аóL,_¾|É’%ˆÊàªÔ/ˆSbűrdœAæ8 ·ß ÈR^áÜ bN´IÚ¡¡¡W¯^½8¼~ýúêÕ«$Õ\G%„YEæÊ•+ÃÃÃcccÏŸ?úô)%ެûApT@åD"!£(†N-Æ+O¾ò‰ú©ìé<þü9m¥¿¨œ$6E‰'Æ}‚Ó§O«Ë„”&~ÌÌL¤5|­€FRRRš ??ŸÚÅlü&övtýåz£ÙÖ_Þå„•™Ã€¿é;5fV6aTJï§fB¿ |vútÀ0ȞƆæÃýÚ‚§·÷77 OÓÐ7“àkõëÄMìÍÃëðu¬† dª@2Á_{ÃåüõYŸNz?m{;¯àª¿ärðÞþ\ô×~W<Ú$==›:99™‹ †þâçB‡ßrw£)Ž µÜø f´µµñ sPd€' †"K%LhÀ=蟜œtsddeø.ܰ`Á4 »@Èæ 6h1XJMMbÛñUWWW[[[1òòòúúz%ÍšššÐG˜‡]Õhh?‘á B^!²<_â©Cšj­¿ ˜g 6²²²Ö8‹? -ZR^VˆŒŒÌÍÍݸqã–-[8„‘'QI³ïœ¹&EÉF2–C¡ÿÂ… ÷ïߟšš beøôÛo?†~ó¿Ìu`B˜%ðïß½{—£ÿõÓ§—/_’fT¼“òÍ¥Ê#Ú‡H*ž8q‚6Ÿh¨’¨Ô r¢¹”SÞÞ^æ!i©´ªŠÒ¯ÄÕþb’ŽŽJe„ßÒAÑ^¹rebb"50YÀ?‚«Lk;9ƒ¨¿ÖB,@ýåöKz5³¢ïtL³Ÿ“;þÈg|ûüêuB+X ×wš8àÓ=½±a(ìYš¬”áz3ý¹»ô¬DŠìŸF±K ÄHþ¢¢¢´´´5kÖPÃU1¡ôááŸÔVç/ ¼ØÛlõ—ë]öé/C³@æ´ñUclÞés M566BaÏÒd­  ט˜“š†³é;5KÛ¶7¯ç öæ·‘`f‚¿ö†ËyŽ5/&ð+? 8õ—« ³j‡ôWH…ô× !¤¿B˜[„ô—mýe%ÇüÕ_N÷þ™°ø›[ï…|úéºý„Vðj`¾MŸ3è7Y"µ¼ZjŽ@?ƒôÐ$žÏLr›ßÜO3ûõj”ðZÒûãs#þÔúÕ­\u/2þ–,Ÿ¿¿ÕBš9}z;¯àÔ_"¯Î¸H-/íù¯¿êÜìèuw§ ¸¾yÍÉÉY¿~}aaa{{;7þQî¡Â +ï¡C‡`¼2 ÷;‚‹^©0a€ëb ¨…¢ÁOžC*[§ÁW¥ãêˆ,e†½2 è+°4md^¥§§§¦¦ÆÇÇ#{—-[æÂsôã …åËJNNÎÈÈ žêѼÐÔ®®.òó¤åõ³@i1˜*úëÁÙ³g‘K?~ JYøÏÿØ/ûª¶4 ƒˆR˜¢‰)ÞÈk”&Z$NV$)Šb aæ¡hƒ©aYj~ÜÛ܈êÞº9ÚQQ)50ìéɲ´ ¢2û +D®s§yx_ÎáLsÆüÈlöïÍ»×Z{½Öy÷»~Ïܽ{·¥¥%''gº÷ÆÐWÕŒ¿~ppðÁƒšÏŸ?‡‰H³c"²Žª¨äUe¹G»ÆÀ’‘§E$*W“ÉD£‚[uu5üUTTÄ™Š:\&¢+ß‘íd]ZZ• 澨'‹/Öº§üµyófžåǽØIç/ëíKù룕Auúoó`Ýþ?cÇ·žúälv}þ¸Í÷t°ÚëµW Æ½Ì/Ú±qo¯½•:ùÑÎ_àøl.ê‹·iïÙÏ—à`ö~Åú·ìýŽßðsåñIß^Ç»ä`þ/Ùñ¢¬tZvÆæ/:x«±ŒûŠÆø¶ßš¬ùKÛñLá/¥ŒDff&Ç4ç5ÀÂñ¬\¹ZáXç|ÇTT‹À.Œζ´´tçÎtш7ÀÐÖ×××ÖÖâ"8ë‹Ô~ðÂŒ' ·¹¹ùÒ¥KoÞ¼Á²vuuAp³fÍšøBlŠ™ÝÜ܉p&ñ"ð*44”¥ÅÄÄÀY°˜bfDDf~½Yð]ÑÑÑJjŒäY@LÝ~\\܆ ”§h¡—…5½%ÐI¢Dü(×¿Šø!8ƒäëëëãããåååêêÊ{Â×ÔíÆ÷$²”mä?e·\>üü|2“œ„¿ °r‘z×ÂÂÂÜÜ\èl«Æµ©©©¿¿â5L~ôèÉÌ´dÅt!ª‡þûCCCÃÃà PýBùVYY©ÖƈNŠ(¿‰(¡uuu ¿‹@ºfggkÉ¥33”›uêÔ)' ÿ©Nø ÑJ¾téÒ "¾ÈNO–ñiùë£};2ôËé›wÂã–ÓgX4]obhÆéþÈ:n3žüµZ„Oà”ÇQppsdC^KEœéßyyyGÌ XèiÇŽ¸ …,ðŠ© 9Œ:ì·˜“ÉDÀÐÑÑqëÖ-\kOOöØÅÅeâ ±'E0ï(áÛYWXX…c·Ê›ˆ=¡kH1ö'NĆР«D`]´„‡‡s¥Eçäh‹™1Bt±ŸËEÜzzzº»»ƒ]0ïv9;;OÝ&|gòððˆŒŒä¯aÛSSSÉ@>™êêj jYY¹JRý]”.ÚºukFFFfffNN#IË'Nh·µµÝ¿"4îëë»xñ"‰ èM÷öšrQU®^½ª 022bI†ÞÞ^*ž¯iFZRiÑ þ2dÈ!CŽeÍ_r8ØŽg ©§å|ç¬_»v­¢g7.7$$$::𯨨Øììl\D¹ˆ ¢¢W€›Å<ó,Æ€·R¯‹OÀëi Ãý6ŠZ[[A0@ ÌmWW|5þrvvž#š={6«ÆG)=áX.n¹.y{{+™ÎŸ?_[肤¸þ Âçø›E#W„1Pã5ÐI -g‘þ:“`—A^c{( ÃU¦¤¤ìeŠødp¤äKOOϽ{÷˜uóæMÀª¯¯ïúõëííímmmçÏŸïèè`0i©–|FtåÊ•ÁÁÁ‘‘àíÛ·¢îînÀogÏž=ñññ|8Ó½O†¦V|¼T?K2¼ÿðÁ:7È+ )¡`EvAaŒ×( ¢‘ ©½d 呚ù«ˆ@9 þ¢®h¥Êh‡àÈÕ½{÷V‰”¿˜3+++11qݺuT32‚Fõ­^½Z?&'K'²ðIä¯öAÌà/C† 2dSŸð—@Öq›ñŒà/§ùâââV¬XYppûùùqŠŠ‚¿ 0ìåÁƒaw1,A^^>Û`2™ÔÖŸiÀ ×ÔÔÀ\ÀøÜ¹s8ì+€¶LÖBÆ"œ<äîîy‰˜E‹›H®`Æuîܹ´,`¾¾¾óEŠfôÎé$ÖSø2hk"òöö^*ÂR’¨iiiíÞ½ƒÚÒÒ^½|ùÒñÇ;<<üìÙ3 ìÆ€XCCðEÆÖˆ°©d&÷ôéÓ¡¡¡¿{gyöÇ<þøñcz;D¤nQQQvvö¶mÛ6mÚ0Ýûdhjï ÁÈßDZ$!,®%%%?‹ 0ꈈ¤%(bïŸ"°‹"I62¬°°bb*bJ(Õ’ñååå´hi%oIW&ß²e ¹§¥ÛßßøúQ‘œœ¼OÄœéééYø$ò—õYfð—!C† ‹,üeMaöâ™Â_°Uii)‡xhh(wˆs<<<ø¢Ÿæ ·—ÅEœY »"ÈÈÅ,@ Ô²ÜBO"WWWm±€•§§'œ¬YÆë<ô*j)sÑb×d‰ýxÃD$dRRR^^ÉsöìYHêÅ‹ãøGGGŸd¯ÙÙÙçÏŸOLLôõõ9Np¯¤¤„ø„ÅZZZˆUžííí-B°€VTTd6›³³³“““#½UJßEœz»Ý2x 3II`×U‘I×ÝÝÝ.—«¿¿ŸWäLR-y ÉlÉ[2ç!’êÈȈ|˘¼%s2õƒ«"ëBX J¯íÛ·'&&Â_äp€±¢¢‚ˆ•I›@ s ä/ï»Lñ—’’’’’yøË›Â‚•£…¿ðÜû\Ö………ÜãÀ×! ÔàB›šš¸÷åU.}BOOOgg'^B mX¹ä/hë¶Ô’ü…­ÅBH4ãBp¸\Lu²QŸ£ô3)>>ž˜è9§ßù›_XðÔxøkffæëׯ}?~üøêÕ+ì4Áɼ555‡ƒXÅî⨯_¿Þ.DÜVWW—––_&“)!!!Ò[¥ô]”””DZó ’Å¥%ïŸïß¿'8%$ýBÀy’lyéÒ%øËív÷N’ÔÈäCÙ Ñ’6„锼ò´á' ö—<´onn>~ü¸Õj%%veee‘´)>|¸««K®$...ÌM0–¿‚áXÄù‹/ý1¥u/8R_ê™7Z¶Zc_m„ïÚkPR2\þx5ä…ZÊÑÂ_ÜÝÜï¸ÍâââÌÌLnðŒŒŒüüüÜÜ\‹Åb³Ù˜c0!ÄÕFáB¹Ü{{{¥OÁð­­­Ôc ° Ö(àÆÇÇïÞ½+ù‹2]úúúpÝÝÝtÁE”õ9J?ð‰‰‰999°Ï;!çt^óµ´¼<77rõ?ÿüCð…?~L¢#ã‘Ùà¯?…à/HŠ,×ÙÙ ‚QOI^¤A) F¶$ŸËl)S"-)9É–ž·ˆ=ÚóSòù¶¥¥åìÙ³•••f³9]ˆì½SˆÔ ]½zµK(üM0œ¿¼o´Èòצ_ϬÊÿé/2ï:fÔÓ%à·Djc•”~yó—¸—£‹¿¶nÝŠU`ÞŠŠ ®r.ñß„(@aåååuuuƒ!h 3€—¨5::Šà922‚sÀ—òêöª°²pçΞô剠 @‡1€¿k„bbbŒú"¥ŸCIII$¤3===¿°ÀŸÎsúU(ÌÃÎÏž=›œœ$°á/–Axwttt Qép8¬V+üÅaÙ¶m[¤wKÉxÅÇÇÃP>1;;ëS366yõöö’H¡§>!2$‰Pr¹\ Éø£`«‰‰ r#™œ”H>ü]ˆ|ØÖÖÆt²/éB½¤6Z‚xôº#ÄD¤åêêj‹Å’ síØ±#%%…BNNI›pe¢:¡ð÷Á@þZ bŠ¿~˜"õÕ?~Þų³KÀf¿f8))ýù𗀬¡€eÅ_Š¿””â/¥ÈJñ—”üå}—­›¿äªVVí®ç§OÙó3XÏÛýÇ9¬ÆtÁ& 6c°%éùÒ€û¦=ö˜!Wå?Ž÷¼>m ¸9!{éÜ“Ÿ¬=”ž=\Ó¼ÁÚ¯i£Ö:NÈ©•”6‚<üåMaÁÊÑÂ_ç€I¨ªª*((HOOÇOòÌÈÈàgII‰ÝnÇpþ!„ À `p üÄpË_˜F õ´¢€ÓÀœH£f||E¡1öÂ… N§³I¨¨¨ÈÀ/RŠvÅÆÆ‡$´^¿~©#ÿéÓ§‡rè ­sçÎñlº$túôéââb ð–-["½aJÆ‹¸ðí›OHÌÏÏ{ÿ|ûö-!J2¼.äv»%N$:R"ÙRbyt"’ ½ÓéU¡ÖÖVâŠTL%í©§G¤ sìàà üâÅ‹µµµû÷ï·Z­f³9--Íd2‘´wïÞ½gÏ›ÍF^…þ„Âßcù+Žéä¯M|ã¦@ÆØ¿Òÿ•ÎÑ<[áßÀ^í©µ—áÝFÏ’ô èÿí!§Óù !7*à¼>=‹×³3:cÀg=!rdŸaµ×à?¯OË»ºÖ¨Ð'äÔJJDþx5ä…ZÊQÄ_pþÂIr‰ïÚµ ëËÎU?~¼­­Mº‹k׮Ѹ££‡055RI¼ba²ž¿ a04À9ÜÂEH;ÁP´Är8W…¹5ð‹”¢])))yyyDÈ“'OÖwZçŒ:øïÞ½#t›ššNœ8qVˆ2n™¸­©©±X,›7oŽô†)¯3g΄Œééi°Ø!ïZþ"=R&Ñ‘ %RIž¢ž|8<Î_Þ7Úºùk%”ÍöùŠ•@–rM£ì¥=”ö¤ÇÑž%`÷€Sh|{Èõ¯c„`‹ÑÞL·ZO¥ž/ ç·Ž8\Çt:+×ôuÚGCI)âòæ/q9.Gárûûû:”‘‘v`ð–››k³Ùðœ---=B¸ bž¬ð¬Š ÖÕÕ…yÂ0ŒMNNޝjtt”JæÂ]À_XÚw ±f4𣔢Zf³™˜Ÿ˜˜øò勞³¹´¼ì)/.-ñ÷mq‘¿¹¹9YI9ä ÈöæÍŒ1´U*dµZ9­ÃáàŒDz·”ŒWllì‹/|ÂÀ?É~°scUBÔH"£ð§Iž"gR&=R/Ë„ÚÚÚèKn$¯òü[ˆ·`š‡æ4 kÄAjåååeff’±!/’6»¬¬ìرc$á“'Oµò×Jpûüåå…9ZÀ‘=õþOï©ý =šFwqüÇ ¹~ÿéôŒ ½*^zÞêYj8C­iíÏÔ9 öªtN§³rM¢1µ’ÒF È XŽ.þª¬¬Ä p§[,®r“Ɉe q¿ã9±Ý«ÂTH††¹xV@3|‚ËåÖúWE%¯h055uûöm\íéîv»!¯††Fnr:åÿg¿ÜB¢Úþ8.ç©×¢ñ¡¢Å+*8Læ•Í1Éë±H˜$ox©ÔÒã9BD3w"ø¿½ôDôÝÌkjjá%/ý?¬E²ÿsÙŽ±OÓðß_†ÅÚkÿÖZ{¯Yû·¾Ÿ” _J—÷ÊÏÏ/55µ¡¡áÉ“'î|˜‹Bß…}þüù‹äµ°°ðéÓ'Jî~’ñ®8 jSrœRàÛýû÷Ù®QBx] 0·¸¸óô‚éÒ^ÇŽsܳ³³ÊË·oß’åà/]{{;¹±­­í𗀕[·n‘úÈ{ÄpIER˜ä2ÊF!:2”Ä7ˆ¡ãßß%§@ Byyyìº#GŽÄÇÇGFF’´ C`` Ûb±Néiµò—ò,óí´£z£ÓaËm»;ÐU•tç–;Ó©ÄH¹ÿTê1*靖ÈwùÍÍ.îï®þM?6úBýØ‚¨L­Kׯ -þRR˜«ºñàÓÛÛkµZ=j49Ê<‚q¾sšc2±mBxƒ––è ç€=À$Üúç»°0š„/<À|Q p—:%¯À]H­ººšI+„Ο?_RRòÛo¿iø^ºþm±=ŠŠŠ4–M×ôôôŒŽŽª’«Bsss“““p”yÍ q)ÛÁ.*€ØøøøÌÌÌüüüÒÒF°ýh6Ôæt"ÐìåË—| B8^“Étüøqœ0‹ ù èò¸îܹc·íZîÞ½+1 n"§µ¶¶J Tà—lcò1dNRYQ’{‰x`ªZˆ:-ÄH #ŒTIŽ¥£L˜¾~ÊÈȈbò±°!/26•œœœºº:’°†K¡-¹Â±ò—|6§>.̤Óx•»Û6ÚÉî‘\uqõŽ£í´»ÊÓ:]"WÓ©àæS9¶;þ5îŒà(W½«¡¶Ýê]ÜH7wŽú?ëþöS†mcõÓ¥ËãÚâ/W7¨å¤îEüµ{÷nNÿÊÊJŽõ!yšGGGs gff–––þ!„+À ´··ã@ªþþþÎÎN(ìúõë{ölÛO,ÂÃVcccÀ•ééiÉ_`×ÈÈÈðð0D611Á-XljjêëׯÍ–——íF³­­mnnºšëãÇxòSBf³ ƒ¼²³³“““5_]žÕž={Ü9Heðù”HœFÒkjjj¢ò£È{Ä988HIpGGé´¾¾òj’Ô&&1t¾£‘òšÐåË—Ï¥§§ÇÆÆÆ Étm0‚ƒƒããã èBÆÖp54ç/剶Sþú¦°ß>ÿk]5ú(̧òÒ®—J¤òÒq»gsZWvtg(Wê(W㨿ì¶Ó©,‚J£Ê8ß&_ýT†R.ìŽ^Ù1@½®þH*¯éØwGón;J˜ú¼?6µÓÝ¢K×Ï—’¿Äáà¼îuü…¢ššü$zhhhHH%G|jjj^^pô—„)i6°CCCP˜4>jQᮤ3°K¶,--­Úl®ËNÄ?zô¨N(33“O#%%'ŒöôšéÒXä"Ç °ººª¼|úô)¤CZ“äÕÖÖFꃕš…`%‹|x]ˆ"ez¤`R}yy9]¢d£lI.%ŒO€øN!ÉbV«5](***<<œ, sFê”aaa¤qº§¥¥i¸ò×7× æ>mÉGw†?Q>¸á©‰ôÿ]ê§ý#ºty\vü% ë†Óº×ñtõêÕ¬¬,°Ë`0:t(((ˆcÝl6c5KKK%Oa @0¨J’V¡¿¿_š `E›!ƒ!,1píôÅHHXÃl0]}}ý… ª„jkky÷²²2f×öÕty—ð¥÷îÝ—Ô¿G˜ ž²¦¦¦fggé‚I¶­­ñ“pD&k~~^RØ!Ø’FÇ‘×76œrÙèèhЩS§°¸ÉÉÉIII|,ž^3]ëÅ‹Êÿý«Ýfèëë#Iþ"-S' ’/ ‘¹$ÝÝ’‰“œÕÐÐÀ&'ûQÿSH¦PH’ŒvKˆKÚŸ’lÉ)&”#DŠ»±ÈÈHv#Û²±±‘1}}}5\ ùKy–éüå]òÑùëÓOûGtéò¸¶øKIa®êÞÅ_………œòEEE‰‰‰±±±[—ššÊ±Þ „%¼)Oá.h‘îâo!|‚4$¨¹¹Yš< ÈF¬üÓÙBóBÊÆçÏŸ“ÄÈl௣£CÒåU¡ööv™÷È„2€KJø«®®îܹsðWKK‹l‘Ú¢6™`©W)™‚qjjjÈÒ)BAAAl<ÿ€€€àà`uRRRAAñÚ.ˆ¶üå ÇvÊ_[çΗ«K)w…§&Òÿw¥~Ú?¢K—gµÅ_¯n(PËIÝ»ø 'ÉÈ¥¥¥¸Êèèè°°0Ìh4šL&Žû“'OVá% -8 ?@<öÃ`<°­­­œþÜúKˆ–¦¦&|½¤¡#—Xêx L'GÄêëëq&PXHHˆ¶o§Ë‹„dç¼zõjÛïqzzø‚¤À"àëÝ»w\®¬¬Hž²­­É00 [^^è> AaÀפ·¾ ÉàÕÕÕ ×,ÆÝ‡BUUUGñ‡¦¢ªª §âɯ}-8 "©× áLœ VVVÆÔš¿ ®__»ví‚kØK«6›Ê—FÁM¯_¿~'422òþý{°†‚³6…d$ã€T`í²B Žzvvæ¢äR‘#{a¼e….N€ýo±Xbbbüýý=½lº4“Édšœœ”{ljjŠmæ¸Èl¹V’Õ"D…^/D~# ­±±‘.PÒ™3g¸¤;Œ&s âò¦Pgg'û¿»»›ò¿ì—[HTßÇ‚ÀÇèA_I2Q©”Q“Loc#Š×QK45/(êÁR1oy9¥Íëñ’Eö]ô=ìÁ‡ˆ²ÈL*»´ÒÔ¿iYÏY‹†ùÛè?þÍ rÖÙ¬½gíµ·{¯ý[ßOwww{{;ÝRSS©ÌZ­V#ptt´··wqqqssóôôd2,%”‹R¥ÍþLÌè_Æk™ò/…B¡Pü ÿ2¶°ÕڛοÐ2@xx8 ÄÏÏ•U ŠˆˆþEƸ|ù22E0 ‚öõõÑîìì”:FT ?9.¸UIFFÁ£¹¹™ŒÁ–4È$è^eeå™3g*h²FƒèBûرc[¶l1ûÿ¨ØàØØØ>|˜9ö—ãìììèè( †v={öl~~~rr’]쉿o¹ "¶°° wÉÕ´‰ÖoÞ¼™žžFÁþ#ÀÔ Ú533ÃöësæÒ¥K$ÞÀÀ@¾Ž è_8,ŸszzúzßÈæ£¤¤„)ôêÕ+¦Ä‡˜3+^=E¢Û?Ô1jâV[[{òäÉ2¬ltCµØò.¨Ÿqqq™™™:Nlmm•³Q`1ŽPNeýÄÂø‰1™løWHHˆ¯€âìäääêêêàà@•öòòâçççsEŽ˜ý™˜×¿VÓ1å_ …B¡0‰Á¿„^]4R-íMç_z½žÕŸxàïïÏÊ®ÑhØâ_Z­6111YÀíqR¸ÈmmmQ©`œ+#ÉA& éY………999$ÂÝšššhZØQØJÿ"<ФAnÄ¿²³³Éfÿ{{ûÈÈÈ[·n­ö ¢HˆõñãGBòóçÏ_¼xˆ!SøùÝ»w¾,/ÓÍø\v9—ãlé‰|ÑmqqQú8—ã4–––è<77‡‚}3eaýýý'Nœ ‡††Z"ñþ÷ïßGHoß¾meeµÞ·³™àqõöö?|øprrrjjŠ)aüÞ‘²´´´¤¤$”ŠÚ%K\­€"F­ËËËËPÐd£‘’’C g—ú†q¢,¡² ³«« áêðwÂ.¦FaŒˆˆ@¾/[[ÛÝ»w󽸸¸S·¡¨¨ÈÅìþe¼¢)ÿR( ÅÚû—XL·•)ÿRü=”ý>Ê¿þ6Ê¿LbFÿú¾ºˆ)ÿR( …IVø—¬‹&ۛѿ°-‰µžÕÜ×××ÇLJ…ÞÓÓ“EŸ¥?R@À 9 úúúH l/_¾Lkii9/ 4Á)$Õ‚‚ò ç’+H,õõõì-êêêdüÀ¼èFŠ BÐ&´p¹­[·šýßTld–QQQwîÜ1þîŒ H Ùøõë×È×øøøØØØÓ§Oq1²1RF¤‰?Šž+>a†Bµ–¿~¥'Ñzff›ÌÎÎbd4~>ëgî‚vy{{8p@£Ñ`a~‚´´´ªª*’C{{;9¡»»›¨@›äÀöÊ•+(þE*`L”*99™pB㌀Ÿä–àQ.`Ø‚‚-—À¼¸âDff¦Êÿ?ìØ±ÃÑÑQ§Óõ÷÷wÒ’@î~Y^Æ¶Þ P0¼iJ 5íǬý93,FF·îöíÛ7¤ ûËRp÷î]'222 € ¼ÞONa(zÔ¥ÁÁÁÇ¿ÿ~ÅK?~ü¸——o<444!!‚Ge¦^ÑÆƒ%íˆ 88Ø_ Õj³²²(qÕÕÕÏŽŽŽææfØFvN@áå[Šjgg'°3j ^¯§ð¸»»ï¸ (Î#w’——GýLJJ²Ðc1»¯hÊ¿ …B±6Æþ%ÓíÍë_aaax–DƒåÞõ¾¾¾Zk}aa!Þ$% íêêê"-`aăõ HdÔÒÒÒ¢¢"" „Ói“pêëëëêêhç òóóI))))©,ŒP‘M’±ÄªØ€X[[ÛÚÚ’6{{{ ´ª?(r$ kò¨ۥϟW|­_3 æµ°°°´´Ä€ÆþÅà4\÷g> ø0™Éááá|ÞÞÞëýäæº×ØØxóæÍ‘‘‘‰‰ ÃKo¸¹¹á_!Ä “ªÅà' &Çq¢}‚&35 íbXéYMMM”MôŠkkkËÊÊjìò5 ãWÚøWNNB§ÓéçСC è$Ø# ÁA°¸¸˜qììì,ôXÌè_ßW1å_ …B¡0É ÿ’uÑd{“ú+8Ù'ŠŽŽfe÷ðð`KäpwwDFF"G(Ýzzzþ- F`hkk£Á¶[@Ѝ¬¬Ä×Hª8c’O’““‘2rþEü xüC€|eff¢iD\,GÀ¹ÎÎΖøg +++äËÁÁÁ××—Ùeøè¾,/ÏÍÍIëÁð&Ž K/_¾œžžFÊ>8ø³‚™„A¾ ÿ³M“ƒK Ãì¸Ü§Ï ˆèÌR¸©xÛ¶mëýü¿ËöíÛ=ÊÜ—oüÑ£GáWWW$‹bÈ,Űxõìòö‘¯½{÷²ËÔe÷€S¯×Sîp«ªªªòòr)YV]]»”Gjà¿Ò¹ØvttPQQ6Ä‚É%<==÷ï߯Ñh¸ô~%‘+r]„‘:)MÍrOÆŒþe¼–)ÿR( ů`ð/c [­½ý È çÏŸOHH B°¾³Ð;99‘%‚±±±D’'âêÕ«W½½½„" ´«¥¥¥G€ˆ¡W…,>>žŽ9B®¨¨¨hll$„°­ ud•ÄÄÄôôôÜÜ\žȉä .J4²Ðÿ«Ø ØØØìÙ³‡dËd#²wÑ´€ÆWaOèÒÄÄ„s±Å›1ÔIºÕ/²üõ+ò…¸- Ÿq™#kœõZ@NfGEE‘±¹á]»v­÷óSü.ÔºÒÒÒk׮ݸqchhÈðÆ)M®”ÇÅÅ…-òEyD¸Üĉ¼¼¼ F4°'ʆuîÜ9Ì‹Â(ë$»\ˆIŽ‚•••Õ¨„ ~¥ôeeeÅÄÄDDDèt:ooïƒy-yÜ—à ³³³Ož1ƒl@Bà#¤‰,Ñ××744Ôßß…]¸p¡»»»±±±VÀ§•••äÒÒRÜ*333555**J¥R1! †Ð1[œéCÐHA1NÇ×Ñ:´‹›055õîÝ»«W¯>ž››K# Bp¼ª“““R®»JW¤›áJaaa‡ưj´/:!ýŽÝÐРtEúaYYþÅa§Nâ°úúú{è~ÑÑÑ´V:0[NMuñR888ØÛÛoÛ¶ Û'P«Õ´SæÑjµ«pXÔ–õ÷õ{þeº¢Iÿ’H$ÉÒ˜ú—X¯uÿ²±±©h4²‹¾›››‡`ïÞ½ÁÁÁhTZZ¡…ÑÙÙI~èèèÀÂØò 00¯'N0 x0@²*DB 1†í~‘#99™´±±±¤ âB7::zýúõ;wîÌÍͽÿ~ll,Z`¾Ë—¬2ƒ –Ú ¢(¼ºº:*êñãÇ–}ßÌÏÏÿõ÷ß ¦¦¦ŠÔ*Eˆ'RÌžPHKßKɲ±¶¶NJJÂeèc´šÙÙÙ7näääðpyÄ*•ÊÕÕu‡€çk _4C¥K“¤+ÆÇÇÓèN hzh—"b´2¶T5½‘=ôFöði{{{SSÓ)•Oä-`6___¦¥ëb^[¶lqvv6¶Ê_4IÚ)uÈ‘«p‹”…ïÿ–ö¯¯‹‹˜ô/‰D"‘,È¿üKHÖ¹ÇkÚ¿€0ÐÚÚšŸŸ¯V«Ñ.'''©ƒ@B`?¡…Ãjkk»ººº»»I/øÆÔ×××" c¥Ë `U¤”ˆˆ‚é…ÈÊl^‚‚‚###  3W®\Á¼îÞ½{ûöí‡þùå wã¡€¬bÖ; Y¶nÝŒÅh4šòòòžžj~||œç>==mÑ×ý¿|øðabbâíÛ·ŒçææÎ (f½^Ï6===$$„”Nõ®N–¬,ô´””Œ‰>†ÑÖèQ1114"þµK€yáAlÙÃ~IQ0 ­Ñ-)`LªD€pµ Ò'Ï 8ÿ:}ú´ò/Q'`Þj‰*bB¶ÞÞÞœÎÕÀž={Ø)ÐjµÇŽcQX[ôí·ÄßÒþeº–Iÿ’H$É`\†L£ÅÆkÚ¿È„Rç%X²ô{ ”ÔA< ™°¤¼¼<²Dsss‡ ÿºuuug555ÌVQQAd%¯òÅÐÐP$Ž€áiÀW@G¬!lsss‡‡‡'''ggg¹^ùÌÌŒñY¼yó†cÖ› Yœœœüüü(‰ãÇ_)ž{÷îñÄ-ôŠ/ ÚõòåKŒª»)éïï§ìùÙdu.!::šÄîèèhé;*YëÖ­£ÛÐÇŠŠŠ®]»†EEE©ÕjúmÛrwwW HQ0z ½‹~Ås§•ñu” “§htÕÚ]• ±±±¾¾ÿjhh¨`dMMM­­­ìä‹ ‚ÀÀ@Åæ˜“'åDÛ·ogËy¸¹¹qLº ´´´¸¸˜°:wieýk1“þ%‘H$’1]†›®8ߎ¥Iÿ’|é_ "ýëG0.|¦¶ØøGüËtE“þ%‘H$’¥1õ¯% ÿÿ²²²"‡SRRXô »  È„“ÈÈȤ¤¤ÌÌL¶Erîéé!Zôöö*þEÞÀ¼*++™‡XÂXQ0N§Õjù:aÃŧðòòbfv2ÀδÌðèÑ£OŸ>}üøqbbbzzÚôq¼~ýzýúõf½s³aÞ8‘’z£BFGGŸ>}úç—/–x¿—âóÌÌÌ|.·nݺxñ"Ѻ°°0..ޏžœœLUãb–¾£’e€× P<»’’’¶¶6оDsS©TØ •ééé‰my P°Ø/¿ª¶<Ž?BOCƒ$BX’ˆ#6†Ö•0æ2fY¢¢8¦é¤ÇDDñ$þ9bj^3MS†æv-5M*Yj™X⃄>Õ„Y9…(’c‘i׿ÃZ´9sŽçx²km÷þíßþ~8Ÿ-=Nžœœœ““Ãérô+T«F@1£Zx:a\__/ÿÄilY‘æõ7Ëq%¬‹|±(óïЃ,wüøñT§Ó9ì.™~ø›ª–娶}².bÊ¿ …B±"fþeãcô½û&‘)ƒÁCùI@*Ø' „……‘6ãããÉ\UGG‰Tn‚––fàOD‘ÊÊJ"!„ Âœz½žÜBzažýæ$|X+ €…Øåúûûµ4þ_éÁËÖû>(Ö‰?\]] Ÿ™™™ÕÕÕTÎÐÐÐØØØüü<wyyÙ±ï·]¼ŒŒŒÜ¼y“z&E“Þ£££ÓÓÓóòòÝÝÝ7úÖ*Vçº Â…Ðͨƃrá’òEÚ%ðõõ¥Ê–uøðáØØXÚ2Ò•V…a]¸pá…Á„µµµü‰(N âbHýkc9ºèa­1[Öý³ è̓ü•žY"(**òöövؽ2ûðYÛã_¦ß²5ø×Š—·~/»–P( ŪhŸ!{>Fß»yyyˆ)))ˆÒñCæÝ»w³K!B È„ „«¹¹¹³³³CÐÔÔÄ.˜àÁ_Ð1 ùóôéÓè¡"H@àùYÀøKìܹ“,Dž™žžÖ.6'ÐŽ,,,¬÷­P¬®ÈÈHÂj{{{___WW×ààà³gÏýnÛÍÃÃÃF£‘âäÑëõ¼døììì„„ x£o­bu|¡¡¡t0ž ,==v" #a^4%ž&¤©»ÈÇ1¦¸¸¸¬¬,šd]]4,9¨ Z²ãÑ›Œi€¥¥¥´>¼Ñ“«ÈîÇÌþþþH áÚ·oŸÔ=:-ï5VXXX)àšy¯ÌüKJÖŠc{üËšŽÙã_Ÿ>;‘µÝoÎzϯP(ŠU1ý YûiãïÝ¿ ??uÊËË#*ì _D‚ `AIMME¦ˆdŒk™7$¶DͰ0étœŒ…'ÒÒÒþ. c0?ÂŒÜ|||P¼Û·o›>…÷‚©©)íÈÛ·op7ßÍ›7ÿI@þÌÍÍmiiééééîîîííEp¾þm]\Z¢0¦§§™j™ýú9á¹€‹¤,©m"7òHó†’£¢¢xA¶nݺÑ7Xa —ŸxMbb¢N§ËÌÌLHHÀ¼P!ú;c+µK¶#̈‡+•””d0©Ë—/×ÔÔTUU!\47tÎúúz2æìŒ3i€´¾ììl:wHpPÀ.2HSe!¥²º———±gÏÄ=äë 8;;;òvi>S ³6¶Ç¿L¿hÊ¿ …BaSÿ²ñúaü‹<@Â$<N"X’–€ðÌAŒäY\\LäÀ³:::¤…60/²m´¶¶2¡ *PTTD–H06ø!GÎOü@÷ˆCÈÝØØ˜Ù³ WÏÌÌh»oÞ¼qÀ Q|+ÜÜÜöRRR(J}xxxdd„Á;wÖ¬`¨ÖCÁýû÷ÛÚÚ®^½ÚÞÞn4)K&úô釾hÂ¥©´ß——¿{÷îß&ǹrr5›lË‹@®¦ŒIì}ƒVÙ´iv£Y,>> C…ЫÀÀ@i[têcü¿¿?7&&†n\RRRWWG+;þüÙ³gÐ'éuô·Ë‚¦¦&ü‹òà}:䯜“‘‘MçdÚýû÷ÓñX—¦·SÀÀÏÏO“>z,VVV†ÜÅ|ÇL?|ŒMUËrlÛ¿>Y±¯ñ/ ÓÌŽ[žoíˆiíÛžó‹šB¡P(>Yø—Ñá_@Ì 6`@Ñò „B8!BÈ0ăcÇŽ¥¥¥Eˆׯ_—¶uéÒ%~K!H#kiiá¸T3’Iyyynnî?2¸xˆF¾¾¾ÞÞÞ P°;v œlù8æææfggµÝ÷ïß;æž(¾—O¶··whhùB»Ú¸Òøø¸µ×Pª‹KKÃÄijý*fTQQQYYIBf@5RŸØÙ‡ÅE{^y¹ÖË—/Ñ:Dlrrò¾€+Ä¿ØRäÌœ••E†?zôhTT/¥ëìì¼Ñ÷X±2ÁÁÁÒ¿bcc“““SSSé?Zóñôôd€yyyÉ^´GF§¢e;wŽF[£œ¨1DŒb“Žq­€bû§€v×ÐÐÀŠP¯×S!hVE»cBð¯ʆ- V^ºÇ–kàL®-;;;???..nCî˜Ù‡ÏÚØÿ2ý–}Cÿúd݉,ÏYq°êÁUǶ—¶¼r…B¡P؉ö²çcôcøŸ~B#E€j8p€œ@ÙµkW@@)"$$„PqòäÉôôô¢¢"’ÉUAcccSSÂ…‘1 òÕÚÚ*]Œ”RVV† †BN§# 9r¿cr²‡››òEñó󋉉!îZ>‘÷mwaaÁ1·Eñ5lÙ²…ÊÉPÓÝ»w)õ[·nQ* 5óèÑ#o"*¤Ñ®ô÷÷cCd`R®œ™RdüËg°0b3 ØeÑçÏŸÛù⎎>~ü˜‹l\¼x‘ §¼Y‘h]RR’––Æ[@¤'HSÀ„ö¾ÍŠ «Ð¾è3Gt-ÚZBBBPP¿¿?îƒsá>”ׯ_ÏÍÍi»SSS޹3Š5CÂLMMmùL[[›ô¯{÷î¡Eì^»vmrrR>Їþ¾¼l한™™éì씆EF----,,”µJâå`yy9Ûêêj’ Ïü)//O¦h\o``à¡àÕ«Wóóó fK°º¼H¬««ë_ê–ì}åÊü‹iÙÕëõøïµºKàêêºÑwZñlÛ¶ ùâ1!\§Ô! ÆL‡çããƒøxzzÒvïÝ»EBÖRƒ½ª­­¥–xôô1¶ïÆl5ÿ¢!‰#™øùù‘Ò=<Ê¥q1ù¦X‚|ñCª"+++''§¬¬Œ*:ûid 8<,E A+((à &kEÀŸ›¿Šc¶ä/ó]™¿¤û­wÚþ·æ·¬?([æ´öÑÒh4%Ì?C´Í¿8óÛK)a Ï ¸ŽââbVXXXpp0vb÷îÝ8l³A:K00˜ü ù«U ÷Æ»bŒ1*D3e_Mà·kkkù«²²2¬‹··7™ËUpqqáÊZiÂÌÌÌÏ Kÿ+Ÿ’æ‡ }hhèÞ½{BOOO__¹fzzúãÇsssêìÆÆÆÐÙ3g³Ðù2žèSl0ÃèÇ”¿V™ÜÔÒÒ‚Þ¸uþüy†á¨Còâo‰`¥¥¥Q’F™¦ ˜ÃnÆ`<Ø0̬VaÂ|!++ ý«äÅ?!lÚ´ÉÞ~ù²}ûvòå(==@Da),,$y©åççGIñ4âîîNcC>j‹ú™ÿáûö÷üeþE[TþÒh4Í2Ä<ÉÇÁr{éå/8$àfqؘ¸¸¸ÐÐР  ÜæGAwž˜˜¨¼ F455·ƒ×ŨܺuëæÍ›XÖææf\ \ñ-W, ~»®®+‹Iæ9à‘bbb0$$777òך5kœw •••¶Ùœð‹Ÿ•Æ"®®®åå夭þþþÛ·oßZ[[éyõêÕçÏŸM§699‰ÒÐÌðð°õóETiii¼8U´DȪ¯¯¿, (ŒñÝ»wÃ*Ju*…UWWŸ={–«Ê_‰ó Z¨³³?œ——W/<{öìåË—<`fVaZ|2¦Ñ2•z/öïß-ðv899Ùûñ/GH=ÉÉÉ$¯ììì‚‚N‡ÌÊÊ¢:í¼¼¼<<<¨0ÞÞÞTŽ,''‡âÃs¬(‡zuùïÊ. Œ¹té׆†:¹EùB$q9‹Õ÷ìÙCUdÚƒ*1ʸåïïOà"š‘Âvì„l†Òš™™©$Ê`{?Eò×WÃüŸ©çÛÂALç/F£ÑXä»ü%!ëªÅöÒË_ŠŠŠŠöövü#¡Ìé7! çpøðaå4bccããã“’’p>ü Žš¿ÅÒp¥}MhjjR®†ÿ ‹ÁÏÁðxu²›Á` ßaÝÉ_«W¯vtt\-°~Ûö³³ËãÒ˜SRRòðáC2NWW±¥Mèèè|ÿþ½é¤¦¦¦èD$Ÿ>}úᱎ!Ü5~˜4‡¢pŠB!̃‘¦Ÿ¨ !6ÔXYY‰˜Qo\¶À0ëk=yò%çwîÜa{333¼¡´ùw˜ê„›› „ aaa$²+VØû–›7oŽŒŒ$|åççŸJMMå–¿@Rá‹"CAãøÎ;§ÂWtR[[‹lÎ JZèJ•¬+W®477SÁP·”(wû&§6’¼¨Š¤0åJ"£v±®§§'›ô4Â6è':tˆjÏ6Ð*J³÷ƒü •¿þm?|ßÌb—é[¦ó—F£ÑhlÁ”¿ÌSØBm¿tþÒ˜£ó—½O`¡ó×Oäçæ¯…â˜Î_F£±ˆ)I¼ºjµ,´—dþÂ$à:°µÅÅÅ !!!Ø ¬Ë>Ÿ©±F0¢111iiiX ‚6“Ì ¸å[Ô¯ªGž .ày0Õ555< oFFÖhË–-NNN«V­Rùkݺu,400`ûñ9;;Ûå¡i€TòüùóÉÉÉ‘‘‘¾¾¾ÛF/êEPÄ=zDÿׯ_m<Ö¹¹9‰xHsI™gP)ìO_q³õS¬ªªªººº¨¨è¢`ËZÃÃÃ'þptt”žééiþÎÎNôL'&ž˜˜È»€—x 0á¼)ö>‡¥ÏÊ•+}}}yæœB^^™«¤¤¤¼¼œ’ÅÑȶ¡|1˜~¢©%  ÔBà"RqE-×ÒJCcaÕPU‹€VQQA¬£’¡v ,¡Šá!!J s×®]ÜåºM £©†OÏN¨~ì–ŠgïÇù?=™ÑtþÒh4uÌó—|,·—pþ‚ôôt¬&F…T¥ì„Š` LH¸€ß ‚EGGÓ ¬a'06d®ÖÖÖ–––íkFø3ƒ‰ý§€!…aŸøÃœœr¾eWW× 6àUÞ½{gû Ûë¹-gÐ@ww÷ÔÔÔÄÄU÷ööÞ?|ø NçË—/ýýý`"ØbßÍ¡¡¡ööv”yшJ^õFðÒtâ«É_4èAct2æ?‚ µ h×­´7>>ÞÓÓÓÑцQ,é,###)) qÆ èŸ×÷ÂÃÃÃÞG±”q_„¯üüüªª*N¤\ Ôdggs{÷î%%í¨W„#ª+wLÍ¡þp²Ä.äÁ•…¨Ô¡“¹®_¿N™jkkãׯÆFÄð‚‚ƒÁ@õcÚ€€ÿ²_®!Qnk? Bâ× >zÄähO8èHLóBÅdÞ˜òÖ„aÆÖ­xË,éxC´²+Ç¢ØAAIÄA ± )5Rš Ñ1ˆ¤ËnŸÏ:Ξã«Ñ±WÇ÷ÿa±Þ5kÖZ³žç}æÿ‹Ø,Ч0Â_ìÈ#ã°žŸŸ-u ì »˜ó“È`0(X+((PËrN­oôr#ý>;ˆéü¥K—.]ºœj dtÚ÷`þòññÁŸàI°4œ*!!ãçÁ`ÄÄÄ`2yü‡/¡,(ü'–••…·À_xZìMKŒ}å#<ëc?¸ŠÒÒRæWˆ°µxZ<É_E8 6OõÛ—/ßDækuuËS¤x2>>g=xðàöíÛ7oÞ¤ý·httÔš¡¡!Ì-É0666‡×“ÅI¡êêê"•TMMM¸Ù††€Kùj;‘1ÞÕÕÅÁ\Úå_"«Õ dÁ\?}bÐf³ñÛÛÛ9I›ŸŸŸ››k±X’E»D¼ ¼¤®Öñ@y{{s±Q"àËl6çääƒ3°AǶoßNuv€  "Ȉ8ò©Ê •´$"/ò‡œ<#¢:Q~'ÊŒ“iyyy€^ll,(Q 7‰H{gGC‡q¶¸ØšªÅ1ˆ"ETH .33“°xZZšÖ—ú‡ÜÈ_Žÿe:éÒ¥K—®ï‘¿)l¶¾§òÂoàIZ[[q80îÛ£˜ #ˆ)Â#Df2™0!´ŒøøøôôtLQmm-ÞK‚áq:ÇELÃ2áp³´à†§5‰Ø%<<<44”]>ìRÙEÃÛ[VÂjB%oß¾åÚ‡‡‡{zzîŠè<Ùƒ255Å8h£r~nâ»ÂÊ’i Á0ØUUUpY³ˆ{±©Kë3ÿ‚ã’’BâݺuK}ÔÝÝÍ‚ä3fžDýYô‹èàÁƒÙÙÙXk¾Â»£#˜{µzõê   ê@¼hÛ¶m\5¥éÈ‘#DùèÑ£tˆ•Š9!"ªÇqdÀE[__OÙ©¨¨8vì#*%·iZdu‘òòrOØE-‚§XìŠQú¨x‰‰‰ô™yúûûÓÙ¸q#P>-–¢Ü‘>>„øÍ›7\øäääÐÐÐÀÀÀýû÷/:ÿÙ#222ÒÑÑÑÙÙi³Ùæó’^¹rEé„‘VŽº¬¬Œ|ƒ¿hÁTC…s[ÿ¨¤¤$--Íb±àóûúúŸ˜˜`k2™ŸÌFL€¼ŽŠèÃ_{÷îÝ¿?­Éd Ö86! ÅÏÏoÆ POü´(•ÐÌÕÐÐ@¬© ÔÔÔTæ@@¡¡¡›6m¢zˆÈ _„Œl©®®¶Ã—Â1:§OŸVðÅ‚|Êʹ¹¹”2ÊÜÍÁSth£££UD[D (ðì¸ÂÂÂh™ ‘ql:FÍä„[¥+kj}µÿ'·ó—ã?šÎ_ºtéÒ¥ëërä/ùspÞ_üµfÍ I[[ ”——§ÜÂNbá"ú˜€€è ˆ ó‰Gâã‹8ŸFQ‹ˆ51?ÇDtŽˆÊË˱²Ü þ+uP„â1| Ëb`øÔ¥hŽ­ZµJÛkô`y{{»gÏž©Û~ñâØrïÞ=Z²ÚrŒÅ‡¯_¿Nœ;w®¿¿žïéMÑÙ³gá,²SÍIp¶uuuµµµ¤Žztttn‹ß‘lðWRR’Ùl&9ùèùóç É\SSƒ{gÓ Qiié¡C‡€/žÔ…Åðÿxo///­£´„åëë ÔF^ÿ={öp¥{E”îœ@JD y@!heee¥"f&R‚™ªÚPÐDdåèÔ©S »ÎÉÉa¯¸¸8£ˆEÝceZg£ÄiѧR9çߦÒ2 ‚ñE“ˆÜ m8œ¨õÕΔùë÷ÙALç/]ºtéÒåT3øK ë¤Ó¾ÇóÂy^ºt ÃŒIOO‡€p#§…» Äo`6¢££sAa[·nݼy3^ã„UUÁn§¹¹ã„UÆÿ`Hì¾Ä´âââÃ"ì -×…¡¥ÏðELp) ¿}ù‚GÒú"=S%%%6›MÝóû÷‡!¯G½zõjbbâÝ»wŽèíím‘QÌ!.óyOï‹Îœ9Ó$‚¼ÈŸJ§"I®^½úéóç¹-þ«ˆ”Û½{7™ŒÇùzOž<™ššzúô)Ÿ^‘À¿ˆòóósssAƒŒŒ «ÕJÞ’´‹Ç¥j¨¥§•+W‚0ÜõD1± Bþ,"ÖÀWcc#˜—qê ¥‰ù;wîÌÌÌ$€){U¡ÔðHUÍ! O‹ÈEaÌ?$JIIªà#ª\¸Hõ©uôÁ1¶ Ê푃AÑÖºuëüüüè„„„€Lþ»ˆ2HÕ:(b/j;¿EëÛu"7ò—ãÙœùË~0ÕÿÎ7÷+3~ôý+Ïÿ‹Gs8ä|~—o~I\¯£¾yàEø‹æ/ _«¯Ï\ˆÛ^¸:ÖÀù/5ÿEܸÎl²ó—#…ÍÖ÷xþB¸ŽŽ;‚Tø܅⯨¨(Ì ðˆÑbNL&Ó6æ"‹ŒŒÄÀìåää€Z¡'N`„pA°˜²F›T]]M‹….,F‹‰Ââ⎰.iiiŒ|™Ý½øðáσ|Eë‹ô4á'ì7<>>ÎãÝ»w{zz±ðµ¶¶ÖÔÔÔ××wvv¾|ùÒÕsll ¦#¸¬Ì.u¢ªª*"KŠÂ;………d ðuàÀΆپqãÆàààä䤫{½‘u¤q¼ˆìÅçóbö÷÷?|øþº“¨eeeŠ€5&(LHMM%W9GÊÊÊ"ÿ}}}µ×R,C%áÎ)8ÙÙÙÔ Ø–K¦8œ‘E°Ìñãǹg>JNN&F[¶lt˜L}ŠI¹È^[T¥†ÌiÑ'…øŠªl\b UŽÚÅ1ìÆ9<yE‹(ƒëׯ »üýýƒƒƒÃ¨ŠCF€/¾e6›IHµ/åŽDÕúv˽ü5Ž}'ýÅá_^ÏÕWx†Ü²ˆgh¶«X û™ÿÍÛ¿¾ä‚øÍ/ò_äÒÍ/\˜~Ì-¹´Å<Ïâ©~? vþ¼:é€ZNúË¿°Ž¸öövL F‚ŸT £ÑˆÍP†ëࣘ˜˜ÓÂÒðha`0´ûöí×bnqPÍÍÍüØŠð'´ b“*DØuå8¦‹€žË422â4‚SSSXôOŸ?Ïg­ïÒsn€!Ž×k³Ùúúú€¯Ç¿~ýzÆå_¾|Lp± ½½½sx1a®ÚÚZØ­««‹4Èaαߙ™™€ê#²ö!‹ÎŸ?íÚµ;wîÌ–*_Www7«á·Y¶bYò¶¥¥¥­­_Áú¤"ƒûD쮑t‘ÅbQÔ`µZqì!!!Zm ÈËË ¨1™L\lË+QêDÔ‘B0¢L\222¸^È Lc¤²²’–ïW‹ˆƒª¶À\ªæ°øVTTDà’’’À®PE)£ˆÑnQܨ]:ÊW\\\ll,ªúý$‚³T=ŒŠŠâ£_d&厀îÑY»v­Öwì\nç/Ç´ùðןç&·,ârz w?ó\ÙñëK.ˆß<ðbþE.Ýü‚†éÜ’K[,¶óü°Õú‡;ò—ü98ï/þBx‰ .`}ñ0˜ÜI9ü†²(x|&Sy’ÈÈÈ„„ø‹^‹˜,–˜˜È8~ ¿Š‘Æ555ÑâŽèÐb®Ž‹þË~Ù†Tµ¥q\üÄ|ˆ>2&ÎLts¤;Ã\Æè&aQd£™%%f/–\-§u†º·nEXš¦âv3-K‘Ò2ÄêöB/¤"–…hocM]çdzè°gŸ½÷Yçx¼§¦þ6ë¬õ¬µŸõ<Ï~ÎÿC¦AÀ .ŠñÂ~1`þÑ…“[&qddd```xxøÕ«W.!öüùsNt,?y¬ܼyÓp4oWWWGGÇíÛ·{zz^¿~m\¥Â‘*ŠCAïß¿ïÛ·ÙØØˆøB•——'X¹r%µ1†?Si+V¬À7ÞE!UWW755¹¾/ß@Y&&&*ý…ʃêS´T%Jr|Ø"غuk†á@mÇÄÄ@¿ñ*ÅÌ8„Ïä7‚@çð#EXXqKJJ"bDþرc•••tž’’’ââb¾}úÀ>M€Ö±yóf¢J ¤¤¤ú*Õ¥*U´›R=$‹Ÿd'rŒÆÂ“LÅÇÇS6t*úRDDÄ cúm*::ú6¤’êBLáņêr4=Æ‘‘‘è/´ÝO=Í]7f wޱ-ü¨¿Fí…˜oúË´¤`´tÍçfvgÚc[hœ´tÀýË-–¯Ð;ûæ°jwYèy¼—ifÔûÈ;«ÿv“îc÷s4wpX'Ô&gÜ#¦“)ßÜ3;ŒÇr¬~$=.¹GÉc@œ}°‹¶³ÿî«îÆv·pŽ›Ã.¯båì°ÉI¼uOÄ8Á¤¿Ddµ>ú+HX÷©S§ÊÊÊ`8ø ?ù“@é/5†{LŸ>ý~biá ‡ùó0WùJ?kAP333srr`).XÖ°ÿ~ž(/&óóó!Õ………ø l`¿p8¹e‡††º»»{{{QïùåÍÛ·?BCCÑO»c¨Ñ¹„úÖ­[>T²×µôJ@À¡Êééé¤;--M}cÄ3Akk+•°páBJÚŒÌQ­½½ýÆ(AüË[êêêV­Z…òÂÿÔÔÔeË–ÅÅÅ­]»–A§ùvìØ¡ôצM›°Á›E]E"ʰ¡Ô BBBÉ¿ÐFPRôF¾ñšššÚÚÚ††z¬¼¼œIº"à€€^A´I ±MNN&¶È.Â6Êk÷îݨ-ÕFHö좟0&w¤‰ÔЈJè/úíè/š ‹–¥týŠºÂ€%&U—C'*±¦:`;ODœj€“eê7ð¹7_èH;ÁúËø_æ›þµç·&£™kdÏÇ,_awΨ8äȶ8_Ðý|7ôtöÍ/÷²|—ÑÆù@‡+xU»ë¸§Xçp“™ó‹<:lww;—¼uÏ·s8\ÿX¯Òd:Óiâ\Wsa<ÖÙmŸ3hŽš§tèØ{å°çX^vœàÒ_Ff7þ|ô€pVWWã[FF,4Z8Íš5 23sæL¸$D1H Ô ñøV0wî\ž¶À|°d M…GA_Syyy‡âJ%}/`F‰/æñóàÁƒûöíƒÞ@€kî©|úô)¢àÑ£G(‚ úúúZœƒÃŽè'h- Ëa{íÚµ¶¶¶ëׯêþþ~Ô–ÑÀUðÔ̺uë`¤°âË—/¿yóÆß,ïU…122âÇcò-33’çkÖ¬ILLŒ_¾|yJJÊúõë‘ùM~*……ˆÀ¥ÉsÉ’%|Ô<[°Ù¹sg†€‚‡É:¥Æ„ P.ñâ\PPP__ßÚÚzñâŦ¦&ƨ°“'O–––—””ðáÿS@ W ˆ*²‹™œœºÁvAnn.eFÇØ'@v1Fˆ‘ ’²xñb„=*44¹ô€f5ç”ÈŠŠŠb~®=…ó´8¦uüñ˜ažŽâ@ŽÅ€®ˆÄ£5)iÏð¯þ²“cúúKAùfúé¨#‘3͸/Ù­Úu¶h®zôÇ774ô8é°j·×!/¾EÞù Îo÷¸Ý«Iç’³„o/ÒœÔwÏçxjZz{¬CšÜðÊ%Ííšu2v߯7{¯Ö4Ó¿‚áÒ_"¯Ž¤–Åø³Ò_S¦L),,<}ú44)==ýï˜ôC .$OEH 1p~2Àf¡"Êdddäl ØË8*lvïÞ½piÅ[8À!›Bˆ) Ž9Â$ h•kUUUîÙüYÐÛÛ;44ÄÏû‚ææf6Λ7/ÐAý40qâDÂõøñcclù‰’ºpáBccã¥K—îÞ½ËÌ›·o]ÝÝ݇Pb2›––#­®®¦à[ZZØ‹šûÏ»wãú9gΜARQœ|žk¨'hºÅèHkÁïúËøæ³þRÒcM&KìöÚl9v>Ð}ÒyÕÎ×¼ûÓΠפÃi>øfwY{5oªÔ¸ïÒß2–«¹/yU$¾Mê»çsi¾]ç½úiò9t–šE®sA¿§Õt¸ŽÎ6^9ì—{ŒúKþ¬ÇŸ¡þ¥ÊÊJxl|V QAsÁC “ÅI $HNTTÔ<DtÑ¢EŠÒÀgi,ñ„·Àˆ @˜-âNqZ$"+??*ÅõÇ€ù¼¼<–à6J£ Áx ˜Š(¸sç¼îÞ½{ýýý>“ààà@g{|1iÒ$¾n®|øðᆆ¤V« IÀ Í¥~^Ô××Ój¨>yZ ÷_ÆÄyûöí*ß ²²²˜Tâ+//™¶F°dÉÞK“QH=¿БhY®¾”"Sfè,ò2cÆ ZOõ“s¦M›& á'ÆB¤k‘}:<®&''B9õ£þ2þ—ù¬¿‚ô˜@Ðÿò÷I˽:'Ç–[ÜO0Ú;;¦ï¦o#ïm^\fç˜Ý-Ô¿Ž¥™ËSúW³{‘Gßì\Ò¿š¦{®ÚÕ˜ûášÇŽ%McŒ’Ý.U¯.ëlìCqê¼KÇÞ«:ñöß²áÒ_Ff7þ¢¿¾è¯ÿo|Ñ_£_ô—ŸðE}Ìð¯þ²“cúúkÔæïÞ8i2°\2Áò(»3Ô™Ñ9ä¿ì—{HU[ǃ „ˆþò¨ç2e„l$ѬT,’$MÍè9eÜÁй=fœÄNOÚMÍòu±¸Cšš)QYJ¥=8öPÓ°§XR6Ý©æÃsÇ£Î(çVû‹lÖY{íµ×þ­ßúùýØÕ¨þm˜ãùû›ÍÁ·Ûôô™ßë`¾kÌ„vçüÛû›Á:ª}Ü·Óñ{—ƒµÙ ŽƒùíCZjm›9íP—:øÐ}þõÖ8h÷•Ý»vW2à­¾øŽßh7æj0Qí'CÇßeÙˆ‘“…¿¯ŽZ¡–ö7È_Š[þI„Âyâ!CCCq/óæÍÃÏ€T\Õ½üQÄO5*‹-Z°`APPm<úùù)»q -^¼ËŠMMJJ‚­òóóá¯ÒÓÓip=l¥cÇŽºÜÜ\œ›Í¶¾y󦥥ph555=þüÑ£GØ¿ììlŒ×9;®¿9ab»ºº¬ÃØÖÖvAD„Ìf3ÌÒ÷arƒùAŒàº•¿H˜Ý»wïß¿Û#Ú±c¶™þ4bÅ™adη­zzzxWUUÕùóç1ÿ¼º²²R¹€ly÷îcÈ’òŠ‹‹‹¶mÛFN²rlÿf߈ñ¦“ ñ9 HHH`0Gc‰hùòå111q"v' <…i ã\LžÄßß’òööÆœ¨]ÁºL)‹éøÂ±ðžGÇジòˆ>ˆ|}}ÀÌø[}úd½³8m˜«C577···ã±/^¼xüøq\¸çæææìÐþ&4eÊ”ÒÒR›£ÑÚÚJNÞÑV6±A¾víÛa2™pÈß‹0Þ›D[·n%[öîÝ‹‘f@rr2c0ÌüܲeK¢Kçòóó¡<.uww³ïšK¼+== Ÿ¡€âââŸE¼àcïܹsöìY–Í·Šùχ°rÎò Ì?ü¥€ÀÏ;w*aË#""`®U«V­ñ“ÄæÊ‘×9²ððp …ä' ¿ ?~~üØ:n/^¼¨¯¯XˆØSÑÇ_³­ª³³³¦¦†|ÐøÏD»víFðÌ4Š.1ÆÐØ/Ò[ô$$$`¤±Óøö´´´êêj»¯ûßÔÞÞÎ 1ó¤'NÙ0<|ø09‚>}:_İ’’z @€œÜm"ga¬Ÿ¯S øFà‘ÏQ Ë‘Ÿ|†|Æ ð×rùLæãöÉù%K–п~ýúÕ«WÇÇÇGEEÑùøøLMœ8ñ Â1=ì`ŸÌ©c›D &18¼p IRXXHl¯‰î‰Z[[ ö–——óââbŽ3ã 8{Dä¿QmøIØÙ;ÚÊb€-±%¤Ôâ%)LQm(;Ä“˜kub g‘ˆ~ÆPjÖ&Mš¤ÌEåáÊ- ‚ѦŸ™õ©`¡¡¡111šäCFFÙ x:{†¬aä/ëÿe_1}ÇnÑÈ=bhxe7þƦ2ätYøËšÂúkËü¥2™LØ$¨Û‰Â:âm|}}ÕÒàUfΜ‰áù“ˆ0EÃÝÝ“ƒÑ»<¸a‡ðHðW(@„eÂçp+22rݺu¸ÜC‡á~q¶Xb¼n†ˆúq¼9¢¼¼Ø¿p„YÒæÍ›9hT­øÀŸ%þuuu˜âˆqÐØÇÛ·osôîß¿ßÞÞÞ"zöìYww÷Ó§O[[[É7Ð Fc÷ éßDÉÄÄDmƒ<ÀlRRµ”~ ˆRCÿNäêê RQa¾i"Ζªe‡è1XÓBD]š&¢4qw¶Ló÷÷‡³hð¬_¯˜*B’ä<ë$âãã¿ÜZ1ìüeýÍà/C† 2äXÖü%ÿì· þ²÷įæää`AñEðQhh¨"æÇ«WXü8†ÉÁóÐöôôTÆÁÿèŒ%V'ÀJ¸E³°°0Ð GÄÏððpL)Ö 7kY/&£)bI¸ßÌÌLzJJJžJó í)aáɹ ^G(˜Sá‹Ó‘,â3pRÖ¬YUéa !±ÿË~݆h]¥qÐ _ A1:d²¹D¬µØŠäŠ‹¥ã*Ž–“ã2ù0j$¢¤3¬n²[Éö¢X•¶U7[RR{2Ú$òu˜Ñ²Åµ™76Ná9¹µŸ½.î›!g¬`Rþ¿‡ó?÷ÿ<ü¯ssÿ¾sçÎ]Zr-`±ÆÆF€£‹„hõõõN™7%guu5X×'gnºé¦aÆUUU™Ôy´BŸ/®>\„§lÙ¾}û`¬‹îСC­­­'Nœ`.\¸|ùr™×z{{µà5Y·gÏÛ u}rSSæÊ²±$u?™]Ä\ 0pøðáwÜqÇèÑ£Ý3yíL M ¹@4b+/[¹+Hò£0¥ËÇ]twÈ êÉ\PküøñÞ7 ÷Ášº¡fΜùDÈ&ÚMynë1 È\Ÿ-ø14ˆüõÍÀ VðW¡B… êWß⯀¬MýÖ þ*‹ùáÁX&n–kò |’âXØžñ¡4EŒ üƧLó£ýþGå„«“ö)AŒA}(4eʃx¬©©Y¼xñš£›Ìµyóf晋¶¤$¯Í! Ø øÅ‹Ë;ÞÝÝÍj„Ì6ó&O¥ãC\4£µtéÒÚÚZó2Ÿ7:Þƒ уé{Ëêéé9}ú4òjiia›»ºº®qRΜ9óþûïƒgAK¬ µk×b¸ñLè¹ú|( (÷ËŽ$ a®¿… ÐžP>¢$ãs¹Æ1^ûþgÙ˜Ö`^s+MmFÉ`­|=dßwïÞ ²ÌnÆ¿„àØ+!ð ©ëž~{õêÕü¢™dß\>Ö‚Ç|¯y7†¼ðb(qL  •“‚¤dò´iÓû9sæx„Zf„œ#å¬Y³êêêdûS}CPb^x$ä€8tƒ˜-CBÆ1bÄØ±cq¢y}àÎ;¥Á@ñïèè8zôè|pàÀƒªôÑG‘È’l_]¹ò­.ÛÚÚ +È®~º$¡nnnκ€+çÏŸ/2®Ž;A'kKhRq“ü"ä>ÉÆd(0¥DjÙkÔ¨QZPÛOBê:êÄÔÇ„ðZŽf:[#òÉ[™o7mÍ Fû†hù«ïYÁ_… *Tèû¨Ì_})l zÁ_e±.ÜãôÆolÙ²…½äRØÜ„¡Ò¥Iþb=jdoî ec™Ñè—!~òÁdù¦OŸ>uêTêJž ˆqDsB¦[¿~=/dvšgVA饷oßî1{†ðòå˹éçÏŸooo?tè½xûí·ýúR¨ì–“æ”ì4OÈ[çСCotÔ°n¾ùf¦yñÀ}Ó„òÆ'C§N*Gæj}²ËɹIO‚“–XpV¬X±jÕ*Ï•ÄK£Ñà *â¯.Éጠòh{ô×’¶†àaašø#;}ÍèW6þ;O±O0‘am¢”/„Ô™ü•¹±#dÇ¥.Ë©_ùÕk™EÍ;*ñ™>pÙ²eË—/φ’.¡VRX’fNêó½ Ô’°¦œTŠÕ’%KìS.\¸a-Z´H>ã…Ÿ…P€Ò¡˜4i¼z<äoº1à[–úþ&„Åpœ3âh8&::\p=a¨k§‡dõ°aÃ*B•••:–ñ!³[°ø´¶¶þçë¯ ~OH"µ´´ì߿߱R?êìììêê:{ölooïÕ/]ºÖ\0Å'…R•xá ûŠúó.wŒªªªrÿXgB“p©ßu×]y±à²Ä«áÇ9BÞ~ûíºø´®ûC÷†òšRÞwß}?©¸j\>¾zõjù,¶„$°uVWW_ŸÃû£jpùk +ø«P¡B… õ«2^mêƒZýÔ þê«[n¹…GâíwïÞÍ™0œüÒ¼yó8¥‡BãÆK¶âsØž.öæÞ’<¦ƒb¢$/pGì”Ëq`ÏÃ}ñEЬ:Ävr¡¼—Ë ‰!·Ì§æÛÓB¿âù½Ào>|øóÏ?ÿ/¿ü²££ƒo?räÈ;ï¼£Ë÷tˆÍ~2ñ°¦¦&ù1K²àÿ cÈEãÃ?úÎûóܹs™QΑdÃ\ííívDùé§ŸúõâÅ‹ýv<}úôÞ½{áªp‰¤›$øRU1öy!Ëv+劸§¤„¯¼g’¤Èky½xÓû°kÔ¨Q*? é"ª^K S×¢¯ Ç*â#2‚™Y- \/χ´ ¿}²GƒÎ_}ÿÑ þ*T¨P¡B×V_þŠ?‡þëõ«!C†ðKH‚±²>Ä#Ÿ9'Ä1²7L”N‰)òÈüxdŸa:t¨ZOCˆw_ºk×.ô´oß¾·Þz˦àÍ7ß|óàÁƒà‹+þ:4ÐqÝÑGš’daÐ ·Ìóÿ‚#ìL Oð…¬ ñ® PJÑNBIvÓb¤s¶…rp¿š.qÌ ¶àÅP®Áîô»ÚK—.ñð†õ~BŸ¡Ðœ^¿ ©$ÙY6IRÓ%ד“¢¼—B:ZŒA4SwdæÏŸÏ“ë蜂|ÂÖñ}£.Ia„ äOÅÚГ!!2 è­=Z¹r¥rùòåÊ|Í\r/#,ýd~f—£4yòde9s.im÷ìò‘#GZZZ$ó{ï½·wï^?eæ§vìØ¡Qæ#¦îîîÞÞÞza®óçÏëÛÑÑÑÞÞÞÖÖv2ôÉ'Ÿ$ˆý—ýúõººã8Þ_ý¿?öŸ±פ5ÚØ@ÜJ&¢èÚ¤1)#ËlÞÜÂöWA[m˶5±ˆ±l®1S“;iZ¦YCÒŒWS´2½’®7«•¹Úƒ÷‹ûåËíÞë7½•ÒçÅåp>çsÎùž÷ûsι¯'ìjZßÑ’%·Œ yµàTyýõ×ÛÌ3fÌ›n€\öyWWìri(=z¥n7nœÆÑ£GŸuÖYg–ôTW¢0WŠÎ†è–y2§JnžœKÆeb3Ï›7Ï’¬Í]¼x±ƒ€gñÝgs¢?K µÿ/;>þ²žOº5jÔ¨Ñ)­µSØPõ†¿†ÃZ³vÜ;Gú‡ÊL^~ùå¼ ’âyàBQŽ3†ARa‡X q%>§å¸¾UbŸò–×2 ü™6mZ‹¿~Ð/¦Ô+^”Ifí,€±ñ¾·Ä£†ÎÔ¹hu&\OÝ6nܸ}ûvžü³ôÐCq­¬5gÎûLBg¥Œñ‹ŽFˆ–¡Î-[‰Ò[áUúréôÓO?f2õùR Êñ“lä9眗è‡äÁüÌyww·åÙ]w”øvQÔ|cØSEÈŒ-ß·o___ß0aÿþý>ú¨QæY°`2ñî~1ü·Ì!O//È1@‡ •p°\«ŠJ²ÙB.xJæ­0Ë[TÒ®%o®i‘‘Ÿ3ÐÛõë׺fÑå#б§§Ó™9 q_)¬¤D²7lHsfr &À Ñ"jú‹+ $d çÎR+Kêb÷ß™_Eì®$¤Ëïú•n&ªæW ‚A³[J™M³ÁD6wî\t€RÒrcÉjeàá‡v± ¡ƒUu"Ó(ù ÛiçÎNÍîÝ»{Kï¾ûî0c! »¸~S²=„)ØðNB_v”í=yòd?×!,§À£›aüøñN–ûDýÜsÏÅVgöë«%wKú;zN*J=U¼2ÊØóK!¯Y³fù ùdÙ«v¦:"ëäÀžŠYþ Ç:ä¯áuÚŒÎN0Þ/Zº5jtŠªÅ_…W‹ÚPkzÃ_Ë9d€WôK\Ì¡ð¹D¶ê /ävÀÈb¥Z.ˆ•ú^‰éRÆwy¥ý;%uìæQŒsq‰ùW‡9dâĉ^™(Á> ‰X ã}W)8f8–ž-·6®ñ†ZÜ;òÚ\Z»víªU«PزeËLÂf³Ó7Üp“vÙe—ùi? Á¬<æ0Q°…Ö€ÂàH´<æMÿ©S§¦= ¯±|ß/Y3 c8ÑKØjfÉp—\r‰W—^z© ¯¹æF‘WçÌ×ÛÛÄÛÿ¾dÁ—ÿGyä‰'ž`’‡÷Æ{öìA^2së­·JyÄ ðøëR~ë–~töìÙ( + 8Ù IúÃë™?¾ CˆÁ®{K÷”T8sá£(1lDaê0*pñþ‘#þÚ—m*lbµ&Q×ÍÇ2Ö×4U¾µ_Ôa~)d¤Qr|t‹´%Œmacˆ,™¤ œø•$\‹y‚áJó˜Á¨p¥Ò–Ó’ùÍœ9õ”£‚fÆš9ðeZ[ ÍëѨ ú)- •ùçÞ|óÍ7•L˜4fûâÛ¶mCI=:²We_éwÞ9|øðþýûwíÚ¥ÔrÌ›6m’‰•½ÖŽ‹d u»º»»Û)pÞAÓ¨Q£Î8㌮®®€•G%trÖ”iÑ¡Å\éö•ÈÊ@Àe*ˆÌmãVñ¨t“8†ÓKN™$C?)õí|Á… ZÏœ9sÌðy_¨Ÿ¢Fœ¿Úÿ£5üu":Áx¿héjÔ¨Ñ)ªvþªƒ×þêP&Là^b°9R¾‹Ÿaù+v=ÜÂø¨¸#üÂ}»Äz¾X¬³Ï>[‡¸&¯<òQ*:L,a&*h3¹¤bfsçÎåi¹\†jaÉ2Ú½±…ñêJ´ß |A†˜X @”®Ñ[ë—u.î×_JJûòRÒžŠ¯°aÆÿ–Z+×κ›Öt|LÖ2š3Õ%qÉÉ]¥Y6@ZDš2ؘv¶n-Ýî+é | JíóÛW:(ÂTÓ°Ûí¥<*¥×<á¾À©·¢0D&Y—ozc)\öÓ’]R0ª="ñâÓÇ|íÚµëÖ­s½@°õë×ÛÃÛ·o~t"‡¹^{íµW^yeïÞ½¯¿þú›o¾yèÐ!å1ǾüòËK–,²`ÅnŸ„¶RIŒB¾îºëìü .¸À1ÉÙ'—CN=¹¼Ê9SZ¾VúFÉ×H® R×’·Í£>vìXwŽÒ¡s0%óç%+±<ßѱ‘T¯ƒüyߣŸºF¿>Ä:ä¯Óú‘!•¬°Õ2à±½ÃÇßvòjЪ۠õ÷ Aß~¼ñã=fÔ5jtÒjd-´ÞðW'jø«á¯†¿þŠþ:i5‚üÕþ¿ì8ø+ëùhôP´Ã ‡i<æuÞxÚ`¤Óá<#ïðKjÔ¨Q£“M-þj§°¡ê u¨€ oÃw16\"ÓÈk1“@J°R¬QWWkÄMYâ¬<òN±Uñ`©óN©sPãJ@ÆO„bÀÒbZ¯êÁ>%˜UŽãU‰Ó¶¤?—˜míì1⸭d©l<7ûÔSO­Y³†ÕðÁ±Àý÷ßoTœ63‰8‚BW]uhÔÔ©SÁW(Ri=,eP y…1Û¢°àI“&eñƆ" ×ó¼óΛTˆ±àKÒæÌ™Ã„sªÐ2Ì5¿Ä‡ÿµ´bÅ >üÉ'ŸÜ¶mÛÎ;_}õÕA7üJ›6mÒ_8Iˆ#X ’–Æ€†WÕB˜@‡·! eO¥Å&¹J¶Áš¯o?„L…˜î-…¿PA°•+W®.òeÝ•ÑWøw)!ø4XõÚk¯#Ù`æt<ð€!™çžÒÂ… [k†T0ª…C—¼©ÿ©dê&4*©’l!À SŽWÓG˜ÙcIBx6ÛOø7•BXa4oš¼¹t¸½Ma[ÌÆ.ŠY³fÙf6@¶´}¾•%Éq¥ ­Í›7oÙ²åÙgŸUO‹Ç_|ñ­·Þ:|øðÁRoo¯¯ÿþ‘#vÅÿ>üð½÷ÞÃY¨ª¯¯oÉ.Ú±cÇÖ­[•Hjß¾}õéä^Õ­§§G¶âµÄ+-ÙQ¢O‘â™3gÚù¾àëýúfé»%‡Âé?~¼;¡«äÒ=z´RK°K%C±¼ š)s'8bÓ§OÆúõ|&Ÿ8û„œ,‡îó¾;?#, …cð×GÇE@tÌÚõ‰~è˜Ã,f¨ÆO)ÞNÖÖ¨Q£F'‰ZüUxµ¨ µ©7üõI.øLÆÙÆ—2–\ÐE]„Ap ËǾ˜%ö‰ÝÒŽVò*Ž+¤FcJÞêÛ1f—P "ã²~XòÈn]Yâ¸,ƒyeÄ3“ çlIJnð%— ,ðÿëÖ­Ã5*ü$ÓË¥sÚìºòމØckÀJB¶$~|‰ÑJ´Da¥ ªŽõ¸·©þU‚Tê{öìÑ£y„·»wïÞµk—ö­¥gžyÆ¥”MÊLòöÛowr©B?ùÌù’Òì±T´ü¶$·ØÓ–v`œn¥ó¦ÜÂÿÙ¯ûP­Ë;ŽãÁÁ¿ü#ú' R 'Xh'޳Hbb'[FB‘¥M-¬Ö…pØÊm9ç˜mkåMV­Y>PR„mxT¨aYàz"¥G¡Z(âÃZîÅõáþqs¼ïÃÑì°ý>ü¸îëw=|¯ïu]¿ûóFCùP¸*}Î8ãŒÎÎÎ XðjrÑÔ†”Õ{ºVa7Wrþüùæ² ¶@0vju‘M§¬º­¾]£Fú6>™'IÃÎ_Íÿh'¿šW4 Í ½Žk¢vã ˜´ÝàÃ8ãÑöë|±µjÕª5ÕÌ_åÏ¡u¹æ¯¡htѱõü'Øá*î‹çY¸p!Dêééé.B[ÜT T •°^xD9ür~CÚÇ\1f|ÌA+W]wÝuPȰ¡°ð ÇÎÄšðä¼÷ªU«âÃ9C~˜+[Y$TÎPã¾¾>®˜Ucé7nÜÈèz®_¿‚-Ê(€OÆG·Ývcö~TÔÛÛ««F^Ž„¼}¤H~¶lÙ²uëÖ;w¾ùæ›jß¾}ÿþúëE΃€­Þ.ÂY¯½öÚöíÛQÕ?а.ÓËóƒ>¨~FŸ~úéÁƒ‡þ95¬„^ä’Vå3×$ËD‘.…ÛíÊî`T®yWW—Ûá. ¯Š­Ü÷‰'‚¯3Ïà{õ¿M^Ñ0ò×Ñö öò×àåvow¢¡3ôÊá]ï ÝkÕªUkÄjÈZݲ\ó×uê©§v ¨ÇDldÌXœ'G„,PÆü"x2}útŒÃV¼$*3f̸ä’K<¹5f,ÖK!Dƃyë)Â8˜+•3ŠTΞ=[åâÅ‹mGl?7Èùóía„8aÂ_Ì0“¦”ð”Ù]ž-&_/^Ý®­*Êr2 ÛiQìqL2|cÝ= ØW´dÉ€vÓM7-X°€ÿ\´h‘2h"Q6Lªð“"ñE8ÂÔàâÙgŸ}þùçûûû_~ùå;v¼óÎ;ï¿ÿþî¢Ï>ûlÑ—_~ùñÇ3Ï ù‹/¾ˆeÐÀáÕò2¦%ÇÛ›"DY¦…„ ”•:Â,¡ªpVò™ ¤oÐ#”öÊ+y`]V‰mݺu²*ÂÇ\ÁÏð—õ>õÔSÖ‹¼ž.ò6ÙXW”ÁmG&’¢¬ÑŠ~V$‡K—.µwˆ¼¨QC + .¥|ÑÊ"í £D%9U*H$IføQH Âð”¨P!Yl¨*Ê\0¸ã©Äé„,/ÊŽdjÇ)±é•òV3Qý´Hl⪯¾ú*Âr þõÕWÍŸ¸Ã‡;ÿ,BXï½÷Þž={€Õ‡~"sZ¾øâ‹½{÷ê‹¶°Û |H·mÛ&ùaÉd8§BÆD.f×ÊôööÎ-BX“&M:묳Ó¹E¨j„ *]soÝëóÊ7¡"µêá‚{"¯ÔWš2eŠA|pÜ2·IHrh¿ìˆ´»†—_~yGÑ·ñFþjþ/ûæøë”A©êØò ¼¼²J]».ƒv¼•C\o»BËÀjÕªUkä¨â¯f kW®ùë¸4zôhNé´ÓNk®YÜã£E±å|æÏ‹îºë./ÛŠJz‹n¾ùfé H5¼ÍÍžà³k©ÊŠ´\¶l™Í²; ¶2oÓøOEÙq›ÝÓOƒÿ¦È³ê,¹Â_9EÆÌap6’JbIYýŠ¢`cº\ÙÉAu&`käjÇŽj϶:|äÃ_Ÿ|ò Û½{÷çŸÐ:tßO3®-’ [“|&–ïäßyç×^{­;¤B^ãÆ;çœs&NœÁüM.¬;îµ:;;Çi Ù„"õ€Kƒ .¸`òäÉ~ž}öÙ²|tw÷o¼ñFÛ-Kväá"!ɶ÷ô9Y^þj‡cCá¯cc;z ì[Ù²osý€ƒ:øà§´‚¬}¶a±–dœ–ƒœðzÛµi—‡ZµjÕ!ªø«àÕê&ÔjQ®ùë„Âx*ªªéèèYLcÜZe}¹M¦”af›TE[ÝÝÝ]]]a«ø+ L…¹<½R£‹JOìšk®Áz3ÊÛ€ØÌ™3½½ýöÛûúú8s¦] |ÚÊ"wYQ¸‰ÅeÝQþn!¦{ï½——‹Óf˜›±‹ç¬pÆOV9žù—EЀëf -ÖSM|¸6ljòx*¨1N˜H V6l€`RÑß‹Øo<â­6X Ê8á¬LxÌ\äjÂR¨¸ì )=”³4åG$¯þ\¤ÊLa@þ:…2Žg’,½Éa† ¾)h –ú§‹À‚xë­·¶oß®¼mÛ6qÆf•-[ºt)ãýã"[,á’,À‹È<íyƒ~g^--;˜²Be¨Gx¿m(¬¤`R»¼Ê™ÑØOí«ÆÊ”UçÍ2Ÿr¶8ùÑÆ€99V㤻y ˜Z 9“ÊFí¯¼òÊ®]»8ð~9?Yz¨¡œ¥ «gÎF²gánÍœ9sPšT„¤`ÔwBOÓ¦M›:u*¤ÂS>ãÇ×&ƒc„Â<µÑÒh8Ϋà˜¾WÔÓÓ3oÞ<m/$<[,u .ô-jù3fÌÉúŽ ;5ÿ£ÕªU«V­ÿC5óWùsh]®ùë¿Ô¨Q£fÍšÅ#5×€ &“ÍÞPôØc1rü³$iwß}÷âÅ‹µÑ4a.œ£f]vÙe Ë+OŽ+Ø¥Ò“‘ó¼òÊ+QÞœ"4§¥J-Ó쪫®ºþúëãÊš”Õ¤ˆ“| !‘0À‚ŒiÇ\ ~`êþ"׬Y~Ñ7P¦cLuÆ Vdd^ºb´ jBN‚šø|â`ãÏU¦–kŠ@–Œ­_¿^ùÉ"Ù‹û}¸HAHrûhQÊÕWÅ$‡Ë*âK–È ©AÒEé‚Zº˜.Ë©pOÒ@%÷2R)àÐÙ“ %N‰ÒÀBÀãÆÕ›B³ª=©ßYT]Û}ûöíß¿ïÞ½¨3AŠÖ¾ðùK–,±S¿*rŠð]@†!Gd¶;8fê&IZóŽX²aC=Ù»Š¿Ò¬Ê[•à kÉFø}Q`Í«äGN•Õ\ÞÜ›’}Ìv¤Y0-£­,ZQ$Ï̺î¹çÝÕkf¯ûûûeì£>B¬ÃøÁܳgÍ’‰œ“ê²$*ϤBœbðdÞ-îîîFIS¦L9¿Cuuu£<§OŸÔ`.ðU=ÏmÈϪ»–FK!ü¥|ñÅÿ hÁ‚ŽAÎŒµÑ¾$¨­åw©££ãä|Gš†‘¿Ž¶±š¿jÕªU«VK à¯Y«[–kþa(Þ©¹föìÙqËŒhŒ·É8…ÂPÿ†¹Ø-níÂ"õý¢¼º¢H³iEü4«ø+¯à[eù ¢£ÙçÎ˳q‰A'8`U1”r¼®·â\¾|¹6 Þ/ŠØN£ Tj“^¿+Š{kýûešev†áE àJ²ÊÒjES¢T-I­DÅÁÔ¢$¨ñ7ˆäWCD#Æ$(:ÕZf†NŠm)މIH‚…(J@ÄŸ€+wâBѵ«:´çâ{øÈ$e(Q,¼7áå¼ç}ÎßsÎùr_P¯©–kÂÃóÄÊêl‘†Vˆ NæoI¦K¢,g)¹ J’(™žpn²•=@Ÿ’Ŭ ƒ²‰½’ÐVˆ`Ę_‚fN*è!Ü`8éÌæ±„áááÉÉÉ{÷îMOOs;¦¦¦nܸqýúuùŽÑA‰}øÀßïï£Gè“Y±/솟ô2I‡ 0 À<á+)•:×½p‚q˜›g SDj\£õ&ÄI’#îš ÄÜÄL§ÊWúd e±.™ ÑÕs_…ÍWÎøkATPPPSSƒûšU_^^ÞÒÒ¢ÖŽòÄG àâðr¸8h«*iÆ ø.Ÿ`.’µ1à ÂÁ~›ÔÐÐ@[>Q&ž¡uq>ÄÚi%ÒÞÞ^ö¨7‰ â ±AÝÝÝçŠT0ÐÕ$2Æ‘3ù«sžNb9"Y•ò„&e¼çV}›dª9<ÌÇ'ûîîó•Þ$ASíË"b•ÎG°Eî)_%G»E9>1“kI·nÝ‚X±7oÞÌb~øáuaOŸ>½}û6;BVÝÊÀÒØ\ò{ ¸ªÛ“víÚµwïÞúúzá‹+¹*§¸w ˜ðµlÙ2Š'e <¬ß$Ù0ž+sòþÒ £ttt0ôù$î«&E—.]âaÖLQQÑ¢E‹>ÕOÝç«…å¯ùp,ã¯L™2eÊ4§‚¿^]ÉC­9Ê-¬ðN˜¨Y•ÅÅÅûöí;wîÖ[>44„­ÅCâŸÉØÎ;·&aÛ0u¸¸Õ«WC[›7o¶þwIpYEE–OXc -9aùx€¯«¬¬äiW¨: ÏvèС®®.¼œ|„¿Å?CL8:ž_&IRÃÙÓÓsüøqŒ=Óƒõpƒ Ìu1IÌÖè–°ÖÖÖkÔœ8q +Ì3–[—޴ߢ<±Á8üà#žÔÈ:a bÁ¢_žÏ_öÌëå$¡C ²ñ´ÙŽ€¦§@ç”é§s&¶5L„øÄF;ç“=³ÅtÎ’É’ó!ç PP,ööíÛùîï‹/ /:‘ã$¯`RöË] Ê ÖÖÖvòäIꙞ ¾Ñy Æaô ¶PO·Ì\Þ \ °¥ ˆüðd»¸¬üSN +IdÒSµ*Ý3Ï«¨…ˆñXZÉtÄɦ¸;{ü¨tkX&˧&''§¦¦îß¿?==ýàÁž 4“Á¤¦Ô³Ç+Ó­›ë™t]\XÎ0‡àâ~AL\(n%—‹;7qO)ÀM•I_$ñ†*//µ(ˆWC[|ÝD´ÅM§gê¹ãܵ¦¦&®ã²|R*Qf>l.(—ÿÃRXXXRRòé~Ý>o-8åÿGËø+S¦L™2ýwåóWúç0w9ã¯'lØÊ¤Yõµµµ¸G +ˆÆb9“p_°€‚³xâ÷6mÚDoÛ¶m«¯¯ß¾};&M›sQÉ+M¨¯««#€b{õؼIôC<1¸;ÈàÒc‹ 8Oìî¥$Ý5–¯¯¯¿‡ù9–ð™ÑŸëØ#Ò„³í*„©ïsâu(illŒz³$/f"²Øñññׯ_Ïw>|ȈŒN|°˜y™H‰-ŒÂÉÿ±cÇØ/vòyÒ‰|!´Ú* 5ˆ’ODÆË>LŽA¯&œæÑóa™AX~º˜“Ë'Ì}ô$O€›BbcC©'‡Žâ'OmâÂ… &¹pÖhÒÄÄ F†Ù›ðÕ³„(“[ÓB!¨Ö­wùœü#I»“¸MÜ8n÷¨¢¢°*++ƒ›ª’¼ž^Fna\üåË—¯Î‰H1†<–´dÉ’+Vð•kΕç¶By---\¸ÏËM/Knhh˜õcRTTô©~Ïþ?´€üõïùA,ã¯L™2eÊ4§fñW‚¬+s–3þúx*J¹•””ä×&˜ð›7oâñ™­óI0Kss36 /‡¯Û˜þ “†ÍÛ²eËæ<áô 3ø„÷Ûºu+„USSC>OU9Asëׯ§žH¦Ä(Ø<\±OÿI×o“(„£ÆÏwvvvww3C*ùŠÅ9³ÅO¢@sM»þ\ƒ 0D0Â7IÚx¢ÆûÍSž K¬µsèÐþµÇ´ÕË_WrÂZ“Uã’à@™±dQΩRD"òˆ…¯sâUds’2ˆ«Š”¿˜‰¬G$£;G±ž={6ßý™™&èÍnÍO€Þàà õÒÙ`|âØ)p°ëËœÈX¬+È4Rªþ‘Sl%c1„¬jŒ¨EÁ§Ô|•Äæ2.£s<8-žQ‹ø€5ÊtTJXfÆóÇŠád4žô/Ó™Cʮ´˜dÏ$¯æÍ¥8HŒâ‰2Ì}dtjl%ë‘1vÇŽÞ/î—… Å­áúp‰¸‰QrŸ¸kÆSgf€•Œ…ý<§ÒÒRkJ“ÊËË+++¹¼ ×ÔÔÔÑÑÑÛÛ y±•,Ó=3÷&kñRXX˜ÿš)´€ü•ÿ¿,ã¯L™2eÊôSü•Oaó•3þúØ*..Æ›ášò+1rxWlll ǨQÄa À;mmmû÷ï¦@* ^uuu8½ŒF ¶nÝ:Œlµ)é‹$ÚÖÖÖòõ×I8=F”Â*“ˆß½{7ćcÇÓâB1öºPÙA›*—1+"{zzúûûÏž=‹E ?¬W$ž¶ÚZm¼e¹#ì4ÒX¢0ùćUþkNF“¬]ÇEÓ•‘ö¬{“îýIÌ“ƒ\Ö~›2•ŒB½•¨±s0Mr¡Oè“ h7 C·ì*b §*ýÉ›öàÀ wïÞïþ>yòdxxØí §A[y'@’þ)0ËaP¡ƒ&Œò‡$!(ï7ÑŽs ^ u†~5ÞÜŠ¥n‡ CŒ ãè·5¶Ãcã«$K¼û„Å$ÐÊYßåɆq´<ŠNŒzçãÁ­lNA@‹“FN\šÉq‹‘`;44d'žÏÓ§OC:ܸªªª¸J\®LE·fÍš5k×®åIgDnLªJ"`eðE,dÁ\Ô¬ZµŠÊ_&­JâÚr¯!¯îîî3g΀~Â,³eJ¬"+))ÉÿÑà7dVM¦|-,͇ceÊ”)S¦9ü•ðêJjÍQÎøëÓ¨´´šUÙÞÞŽ·Ëiddo‰)ÅÞãÊ<ØØØ(g\Ò6Oþ‚°xâý¨‡¿~•„ëÃâE°úúúÍIúCù ãG$1ÚÈ={ötuu?^g«_er¢ t€]}Ià!,ˆÑäb’˜š2N3‰‡¤L”/_¾D€ûÏ ,ˆG„—Ű£VÚI° ’/,ó•HÈB |Ò‰ËGW“xÕxßñ¤7€ÂžùôUNDÊwùÄç ÿÃ~ù½t¥qüB!ºèº.²0¥"CrKp‡‰ÌLEE¡²ÔŒV+T™¨¥#3³ËÐîìlMk.!ÝôôûGtÙEw³/΋ïÇÐa.Ü~ ç}ñá|Ïç|žsÎsΣ„xÅ0÷—øD‡)à–¹lm⇡!iB‡&_“LXWâÔ’®ÛøL¤-:%ÖéSÖ3T‘ ƒž¤Ì-Û¦Á?~,},p"®PNÙøÉÊÙÈÀÙI”Ð%øÀ¾„/Þzšf) ãEÒ»wï,Û÷ïß¿yó†´˜+ Bvè”ÈIX¦SX€s‘ŽŒ½Èk¡è®$ŽSˆ-&ÇLÊhnPÌáéÆíÖ<;Fʤ„ŠàÞ‡"?JO.ÆM!QŽ~ŸÄdŠGI„uòši4i &YúwIÖ‹0—Ð%>—ªˆãö=kî—¹···¥¥…ùº¤Æ$H h¢Lè¡ÐZ[[;;;)k @³­,Ä0:g*©¶¶梓0Www÷Õ¤Û·o[_Üa³JeŒŒðIüq(++«M*þÅÈÚJÛÈ_Åÿe™¿²²²²²~‚¿Š¶U;ó×Ç×ði•••ÑÓ„qŽollèá×××±”¸ñÉÉÉááa\"fOã‡à¦¦$]^‘L Ha>|X먓Ä"âýΞ=+ÄÕ××Ã_ À(ò“ Â[Ö𗤹¹¹ÕÕUGü¡ȃoœžž¾~ýú­$½½î=œ¼ÔƒÑ•h°Íºn¸æ—¤•ÄUÑök¿±Ó¢ýi™K'/7“yYS;Œà˜Xæu"«ÕË> ᤘs‡„“vF'O’·_[[sµ Óë\pXË&¾ÃzøPŠ|Â’ .ìåË—¯_¿~õêÛ§óæÍ›Œý åvøV€2Ä—û‚Y¤såREQÓ¤ÍìdÀôºk#(~–y…ä š[ÁÓãP¤Î㈄  6;R-‹ÑÃŒ$Vò¶œÏÂ4º7åý s1…lk~<\âˆoôÚ¸ûONH55EiPVMCCmžG“è¤và¦öööŽŽŽ®®. ðDcOƒ1>mPVà^]]ÍÓ¤H©¬¡¡!*‹z¹—$|ýµ¤©©)bÿJTUUUTT|ô?N_°¶—¿¶Â±Ì_YYYYY›*ø+áÕƒjmÒÎüõ©TSSÓÓÓƒ[‹ì†W†AÅÿc°Ÿ\2BZ\²¦Wô ´â¸M‘JçsmÌvÑÀóJî·¼’¼ôùB¯$&ÆKEOƒYþ“Ä`¬Ãä>YÀõ‹Q±N÷èDÄ‘Îb» ÁOFò³ˆ]BßOI®Ç8dcnnȬ¨¨¶¯¯çìN'qL]]]4ÚÛÛyŘÉÉI.ÌàìôIÒúú:‹g Ò Ó™:Y_q^×®]»žÄÔ ‡ÜÄRùŠO×\ÄÉè'ltFæ™B ’‰©0 <¹®Þ >1`i7ŽFPîð§ÁÅ@ÒåÁÀpuu•8‚¡HëŒBÜ÷IlðÞ½{NçÝZ¬uòv!Iò¢:`.j¡)Éáþó¦<J¬³³ÓkLúsüÅç4IÉXwˆú:räÈÑ$Þ2 äÅ)ܺukqqÑœDniÓO‰É«ªªjçΟäÑ@ÛÈ_¿n b™¿²²²²²6Õü• ëÁ¦íÌ_Ÿ‰¤¤Ë—/×ÖÖÚ³{÷îááaÜõóçÏ_¼x±±±ñôéSÌ*Fw1iffKîÜ9Ü{p&z¬ìÑ J’³x‹¥lIâCÆc1ŸÓIb)'1¸µµ ›˜˜À@jŒE’¿•$ `,±”Œam\­&>ÂfÇW8dÚzo¨ `@˜s® Ö¿ý]Ø/›§ýr‘çÛ$BÉ>xÍ<_ô=1 L°’égë4ˆ¶ŸU1Ò¡L·LLA y”´¶¶Üñˆ"'&„ÙI{iiijjjttthhó«?yò$uisÛ_YY¹ŸDcDQãNz'I t> ÞsÅ(=;vŒ{ÎÍçþV@Gp&‰êà˜xEUR f_ñ´Ðhðäíþ¤ššB1Œúâ”9q2(*¥²àé$ø®H^{÷îݱcÇ'úóóÑ6òWñY毬¬¬¬¬ß£à¯"…mÕÎüõY ç†Eß·oŸ?wíÚÕ×ׇ½Ä篯¯?|øP#§½Ä×a¶GFFøc‰£ÃUb#1J‚¿¾JÂIú¤GÛO›¹xâ6yE?ßòlLbAà2M)Àð? àá™]B`Ý2=8^aaaè`$¯‰%fåÿLÒ]K42 Ž”O°ÓÁY¼rZt|µ(¤-炈vû„½—ïoe.²B­>r©ÈeY0 PâÇ’øÜàòäÈÓµîî—’Ö’„/âãÿA!Jƒcêîîîììô˜D]ü< ç°Ž&‘í¦¦&”1’O8߉‰‰¹¹¹å$‰Cz9™QȈ¼!†û@«IàeË·r»‹DÊ Æ1«¼2-ÐI|uòô&˜@Ç{:Æ ¦øÐ«ËüÐSö˜âhÎ%ç-¯N$1€sá°ø·V ‡Ei- àâéx ª««k``€I¹ÿ}Üô?öëí5Ë+‹ãø…à• â…7Š"öB#F'ØN‹­Liª)Š-Jµ†¤‡H8Qñ4§3§•2u:c(¥tþÆÎ‡õãݼ•Xæ"ÔªÏïâa?ûÙ‡µ×ÚoòûjûµÓÿ{‡`›7o^µjÕ³øcó¢iiùëi8ÖñW§N:uZT¿ ¯î÷¡Ö"펿~…â÷&&&6mÚ”×+VŒ3Þ¬> &ðu<§çíÛ·çççYôéééC‡™ËR†žØû¡ž8In3–’cܺu«¯Á.Æ’ÿŒá|½'_-288ø›’)Úœ*"˜™™±#üy‰ÏdõC|o|æ*ΟÇcÅÙι¹9vcd YM~~g‰™déc,5`”¯¨j¤¤'®2 @œª‘¸íÛ·Ü ˜Wƒ¡„HÅJL{¼zà‹Çf>ÓÖàE9R,p·t¯”Á|©¯±ë!,kÐ)ô7ž‘Ú %ýž :2Ø,·Ž·Z¶¶QC»„¾èÉ‚vDaW¯^u Œ=Y§Y$ñ ù‘( ´©|ÜO÷|Ë–-žnì«%Ãä9? iLVß-¥^¿s™e<²S8 wnܸ!'¢RÎKÈÑM“^wà•W^i¿Ó+V¬[·îÿ›ñÒiiùëi8ÖñW§N:uZT¿ ¯î÷¡Ö"펿ž#‰‰‰]¥ÖÉmJ;S*ç1½üvp&N›Ølváä$¹ÊáááíÛ·ã©;wr­zÂÔø+Ø¥FGG9Uu÷îÝ^=ãQK–ÊHujj bn9ˆÄ›?/Ÿ–œ¿úÿ£uüÕ©S§N~^ýüUÿowüõœjK‰-ä[çòåËYz¦š'ä>|Ȳ¾ñá/;Í@Ʋ£LéH‰eÐàó-øÛR(  iëÔ`û-<ƒ\뛥‘žØ]ƒA;vì˜íË`Ç©Þ+Ås­!²˜öomŸÏ7ì‹R¨ 7€w¨À׃ÂMÖñúŸÒ£GœZ¿Õ²x¬»NÃþÙSb‘ùdͰXúi›â” É™RòŽÞÿý@“$ȆL¶„8ø;¥Pjè@zL‡iØJÏ/oo•¤2 %Õ>ÙåðáÃ6²~ø+´•Åu¦m®¯GèÏú³³³Ò/•ÐÊ\OgÏžuÀ‹¶³%?d o ‘+WèÔ©SˆÃoÙÁl åþ֓ꤎ²í‚©*I¡½þ±Un•‚„Ábjšݽ{×j)Ù×=}Õ'[|úé§"•:©üËð®’Ë)Øß•t¶ÌH&Œ’™Jæ¦pŠ¥£££’iй©Z’ùa sIÚÕ«W!H›S'ÎÜ=G6l¸Ô~ŒÈkÆ «W¯~^b-!ýøtëø«S§N:-ª'ø« ëþ¢íŽ¿žk­_¿ž«g#W®\Ù:Q¦V<~üøÛžbÈ‚ïeËùpŽ”ÃC1ÿ(, õjéõ>CË£Æî+¬=%‹„ævìØa©öäl9âJœ?žëþ¬Ä¯Æ¾¢žb#¯´5ÂDÄœ Á >L #Ócµ{=9é÷ßÂà{l©ŒÑ¶¦;| …e5ÓÑ„-þTº~ý:ò >ˆt\(9ç/Û2ðVOÒb ®j¼QŠù—¹B L¾†é,½¤en ŒÌJ³ v¨Á”ЦÿµžlÐx³{·d;ˆßBá€055uâÄ ¯“%|5%ºråJxmæì×ïkVGÆñ…_ "¾Áb[pE iqk±ÝÝ–-l¤.¡d16þ¨±¢‰Q©Xƒ«q©©k]µë ’êú#QK¥…þ‡ígçâÒDÔ¦qkçzq¸Ïœ™9÷Ü3çy®ïȈQ»ví²}úX»ãØ(ˆ#¤U´”"ÛSles•Q€•T2,XK`¬>¶òßE^¡9}rr Âtêï0KFAG­¶lÙ‚t6½RôRÑËÄrPp[¦ ¬¯(õÔÁ5$K¦ÕâHg½u¢ÈI°ä E2¯ˆš jþÕ«Ww’«V­zñÅ—,Y²¸¿MÿÓòW÷Y㯦¦¦¦¦GQå¯n ›/nüõK³Çdr˜Œ_md íÓx»è믿®ÜÁFj·ƒ'NœfSYP¶6 7ÛÛÛËÙÆíCƒðWMÌíóùÌg@Œ­#‹ZVÖl†³µa7øsãðYýÉÉI&–Ký …­°RRåu¥ªƒ§nQÕÍ›7ÅNWŒz7e*ôÁYá¯à¸X¹åüÁÒÄ3I}£F0ŠTdV yØ{« 4A€7ÆüoÞ¼96>Òó¢ÀÑ{Eu ™z†J…Ʉʥ}W‘ §ì™Ö£t âÖªlȵw6EýíàÍ¢l¨PöºYú«¶Fq¶[{€ëïE^$¡¡! ¨Õ梠®j÷ôô8Ÿ•¿”ÈŽ¾t×ã*P«V–fEÖ'Íà6äôzPµéN˹¢ ›’œ)’ªƒFeR!kÙ²e•ŸÎO@SÑÂò×|8Öø«©©©©iNUþ*xu½ µæˆýÒÕø«ñWã¯Æ_M Î_Ýÿh¿ššššš®nþ*sÇ¿ž11™|;›Z[–.]:PvîÝ»÷Í7ß>.7ÈÃ~³èá¬Ê_lùµŽbé9a¦u±×ná/q8. `1ùi¿TäEú× ‘)RC¦¬µX‹Qì÷™3g¢ôöìÙó×"k y…³,_`–V}–,6• "Á"3ˆ7©›*™ð÷E)N‚wî ½£-EÝ•70û S[³ÓÖ¬ÄA±}É(û„¬ÐG`Gžp`åÐßß|Cm¹RHq°ª ÃB*EV=•¿SäàjG¬ì—À Tm±Q0Ç$aPw°HòqZ¤à‚6b´»añ"ä˜eE,ËL¥&‚ÚhÉÁÒì]ä‘%ûd,Ç9”FˆRÂõÔY…³a9Ž¢ƒá<¬]»¶~_kÖ¬Qäçž{îi|îM³µ€üõýü ö(ü5_†õÑ£üwz¬MMMMMOE³ø«@Öõ9ãÆ_ÏžØT.‘/Õ®…ËÅ&_}õÕôôôõ"·È…±ôhllŒ§e_9y^—Û e¯ÎǦÏyÆè&ÎÓ¸â\+50½·€FÌ3ƒÍÒcÝ»w;6ðСC§Nš,:WtñâEPÆ_¸páb‘àŸE`*ØÅöOuä6 ²@±qþ‚ÊbÕ]kÑ-€`¬n½š?|ø°”8s RSÚŠåX¬²¼TÌ údÁU (ÁÀe_Ö¯_¯¿R¤>©^!åMY¼€¼[d Ù¼ÚÓÍE!¾ DrÀ#b“À€F7e QXz†_í(L—™³¡®y‹n5I‰™Ê#Ù¾_ÄöîÝ{äÈ vìØ1ççltõã °GŸþyö1ާâ“'OŽŽŽÚú;vX¬…%S@9K ØHÝÇOŸ”šr9e˜–=JcV£º#;wîüðÊx{Ž=8ÆÌã/Tå*0%aAå)â™Ä`GmØ*îÚ#¨wm†KE˜.h"×¾}û,0”m¸#DS½}%…`Žeê ",!IÏðBl¿Q/«v– >¸5äAžV †êÖßß°z­£€† H• r͘¹©ê~é¯ì½½½†äE!ÊžžžuëÖý®hÆ n]õ å i|£(ÓfïÔ IÁÕÃbGŠn÷©§Sg[írxVª©ƒ<½%§"À¥\Y¦žõ˜½]¤ÈZrÞkf¨,™Í’žÒ¹¦§x```¨H²B~Áœ+çÇ9q\çdffÆÙ8^´zõêYŸ•ÏG&j¾¨sÓ£iaùk>{bþz-È$MMMMM‹£Ê_¯®w¡Öqã¯g[[‹¸Ð%K–t·³‘\($yðàÏ Rîß¿ûöíÿáÒ¦Ÿ¢ä¯ïç±Ç⯪Yí³út·ÿ¸Ãljjjjúù4‹¿ d]Ÿ3nüõk›Ê̯]»vV»ÆÉÉÉ©©©é¢™™™;wî0¨×‹®}ñÅçÎ;yòäèè(xaŒCly¬8‰Y÷ŠfA0.:^:§Ñ ü3g® Û××÷v?ÌZÊ<®•Ä:c±àKï–™w…W¸Ï<ú»nÛ¶-À5P¤§Åçë_᥺ý@⦢dXi"hÃð#G×< yÕþa«P›X†Þ˜ä+e¤P5þsÑÖ"ÅÑn®TmÃ3ö/Eš‚ú{Ëúõë×­['±0T”´XTæ—ÌKEIÌ£ú^S©çû™\»wiÌ®é\iÔz3OJ±qãÆT#J¢tH±G1éY‹i“ê›!)ñ‹‚~(2Ü<½Ea=³) Z Á®‘‘‘?þøÌ™3狜Þk…¼îi?~ü¸c°råÊú-,_¾Ý‘5 ^8‘>9ŽZO)ºÔ¡hÕ sè%qqPw‡˜©T–˜QèªajT ¬Ã`wé:²n“€…uJ¾R­]´…l§¤…•YD‰"ü©0AR`̵¸¸sÅb1ð*_"/Þ*صe'{.\pïüܹsÁv®~y^ŸEYç¯à´/Ÿ¿\=ÓÖ^^^^^ŸUAþ²éëž¿¼$Ì6泸¸8m/ímmmÚ/^¼~ýúåË—àØ³gÏÀ±=Óææ&¦wfffll,‡B!ì1žö'.ŸÿkJXni‘ÕgkÜ5õ+&Ú%æ ©D+.rï@ S4ލ©©©¬¬šØTÈ ]袑½déåðYDh@…‘ ʪªªêêê+) !%c8\£¨˜Èâ°½t !YFhnnÆÕ“îînH¶½½½£££³³óÎ; €`D‚@9 S„'—*ÚE¡êÈ/p#?L¡B;–ŠOkB9¶«3i_±-#ÕXŸ+ëŽ8…xMøFIûMî ´š¶c²#¨¨|iwÄ¥±¦#Aí%ôÓU u•s`;áÝ»w{{{‡††FGG.!„gmllðUI$üýÙ5ÑÛ?LîUS'*.ˆ2???W?5¯Ï¨,ò×›Ì öÅòWÚíÞ‰————Wvu‚¿ ²¥­{þòr*((À!kJ;{Œïåf±d2ùôéÓ#.Œé•^]]ššŠD"°†c1\·ã/Ìvmm­˜Hf› ¥ƒülÒˆŒRô!@>Ív-%¹té¾P!,J>ËMl!«™×âZ–hQTˆÓ—`á—”4‘}!¶V)¬k`òï˜øôõõQÂ\ðˆÀ„1bO7^8ÃaCW¯ƒ*BW*œ…^¡"‹‰³h®›.²Óì­Ã4RSJ-&…KÉ']ŒñAgº.Ý‚ÂЫB0µ&a® H7Bï7&Â,,]1A‚H===ÃÃÃüÍ™ŸŸ_\\\XXø3%1•„IÏ’O°‹€KJJ‚oÔ"uœ‹ðÛx˜B¡ûàÁÏôôôòò2ïmÕDekk‹7¶»»»câOÍÞÞž^àÊÊJ?K¹{öìYÖÿÝÄA søKòʲË_™pìCøëT”6'§’———×W%Ç_†W¨•¦îùË+“@-8Žy~»—>fÚÜÜ|òä vppðÔ„Æ$ollPÂb>\ZZš5ÍÌÌà«!²p8ÜÓÓÓØØˆ[°Æ>È_xøË)aÔñóxÊïMŒ4™™D ¿™ˆYh†™Çuߺu IñÙl‘(eøoÞ¼©Á---ðT[[œEl h1ñIÎR—†i*|jí¤ˆbÀa¹g!~!ô‰p. ƒ¡¡Š(F°Éx52—R¨å–Uºï-NJ…ŸÿL‰a”$’¤1àû”O£hW)e0#é¢Eˆï´˲ãÕ”‰­ÅYœZ‘¸ó"¦®›ã貸 ²Ç30 ›x'Ñh4‹ñrÖ××a.Þ)‘ðuxx¨:c&''¹6âź÷yþüùëׯ³>;äîgãuJÊ:ÿ£ý-øë½-^^^^^ŸOAþ²éëž¿¼>\˜g(H)++;Ñ…éÅ¥cž1Ì;;;€Ø«W¯(yÛÛÛ?Ç0Ïk¦x<®ƒÍ+šššš˜˜¹wï^WWWgg'»€K@^ VUU›ÈáÓ(¶hŒ\ý¿Mìø…FñˆÄâB3*|þÇT__ï`­ÁÄ'ㆈÅnt©Q©m©.0 ‘N)z¢Ñ1Ž˜–añ£€”.ŸìK©H8«‰=”©…í”"Ú4‰§Ø rìÆî Ö-Xk¢—Át]3òmq G0%òÇéDúÔI]ŠJ7‚nܸAþI)”ÄŸˆ¾¾¾p8Lyÿþ}ÀâââòòòÂÂÂÒÒRÜÄkY]]…¼¶¶¶x-TxEGGG` F×ÜÜ\$ÑÝ»§˜ŸŸOHlGÆ8Wn"^§¬,ò×›Ì öÅò×® N;///¯¯K'øË ëQÚºç/¯Uyy9æ#¯.1¹®3gΔ––ÂÃÃÃxfÜ2äuxx˜L&vL8jÜ5]jù3%l6|vvvrr‹˜ 26jnnnjjÂT =ðùB0Q˜ãC%-BQc@’ÊÊÊêêj}^5 4$Ñ'Ò'ý’ÒÏ&± P‹^¨D8Ã:Â+Dåj@¢$lAŽÚXpøÃÄÑ8#0Òßߌ™ÆÇÇGGGù2§íííM&e1$@)HN$ê¡å¹"Tˆ}9… I1 ÇHŽK¦¨–.aè”4òÃ":]ÒXq5rT]$ÛÚÚ …Â&Þ‡š˜˜X0ÁY\4 FWVV@*^K,ãmìšxÔ‰D%ü5???00À‘ƒON*,,ävÈICCCEEEN^_Œ²È_Áÿe#þòòòòò:E9þ RX¦ºç/¯OS~~þo&.|ÀúbÔA07àâÅ‹~LøÌÌÌææ¦¬õž ;½¿¿¯ælooSb¹©l™`±Ø_ì—ýKUÛ†…@Q?PÃSd˜F–‚bš¶Åð+MÝ'5ë$Š]ÅëE3½fž:ÄÍî);}Xdÿbça¾ìź{¯µÜnw¦Ýùþ0k®9ÇcÌ¥{F¶0‚W*~¤4!æâŠI2"€„ÃáæææâââcÇŽE}$yyyÔ™òRUî®´´ô >a«£§$ò—û·Ìò—••••U>¸1 „#"ò#˜Žõ,`1Á<}’(¨Ga(6 fÄ âG`èf:Dö_# fÞ½{G¾ÐÊ눘WvìÕ29øDDe¸S~7R :Èa%yS´²z %ΈD:H6‹9Ÿ¼ÝÚÚ"Hswïß¿WÌ õŸòrËÀ,Àõ À_EF -køf€/>Œƒý`­Žª’Ë_~8fùËÊÊÊÊÊS¼Út¡–‡mùËê€UPP …p†6»©©©¢¢"++˽&Õ¨¤¤¤¡¡áÆ`ÎÚÚí=-½( 0ùËh+"Áˆ‚†îèüExŽxüÃH|à¦ååe c°‹™ÅÅE¨ ^ø‡ÑÜÜÜ£G4ð³nÄbq¯Ìé( þÄ;šU1¶8´Å © µ9¾3ÂÞÙÙ?5óÞHó2H_Y#0‡IðõƈI"Á¶¢z‘Âø‘ Á ÀÔXÀFâP"ùøñ£ðÏLrëe3Ê!5„Igff@ÔëF—.]ÊÍͯ¢¾ØêôéÓuuuííí,kmm=g»ÒÊjW%¿Ü¿h–¿¬¬¬¬¬‚åæ/óãàm[þ²: ª¬¬¤ý‡Ãããã 6íz¡QTž}áÂuØ 8zöì™Ð`Û4ÀæÃ^a¼0Í 1zp1a0 w€+++«FðÔ£1=±ŽvAdKKKâ8Ç/­a„a‹ º!¡ØBH¢-‹«©©©ÎÎÎŽŽrìïï¿}û6è'Üí(‰¼Ø.ät üK™ÊIâ# 0Ø.'œ ¬‰ak¬ÿlÄŒpÏqËbNažI-V=I““““}}} EEEéééžÍü‰'ª««•c(âÑÒ–UR”Dþúæbqò—g„ΫlvÑ~‚Ib"‡ª&GB |N‡¶ÈûùÓðÛõG—tíÉó¡­|rå™fü“‰ù?lŠâ/Y›ž¶å/«Ã¦´´4 «ËèW#õúúúòòr^¹W?~œnŸW}Fð à%À1Øagg‡ñÓ§O°Á[ H A"šÇ~mÄ[’àKh†ž?ŽÍüúúºàKpék ”?`.È‹yþ 8Ñ}.Î;¢í7ª­­ÍÌÌ (xBâeeeÍFCCCccc³³³Ð"g‘/GÁ<5ÒAJ„0…¤¨ŒH ¶bd#€¶i¤²È Â}Ðq‚ÃÃÃÝÝÝ­­­555EF?àóòò*++‰¶×(s0´œ¬•UÂJ"¹Ëæ/OC¡X3t}à`Mötîá¹8§bGýsr+\ü¶¸'²/ö´ÿÔÜÿôöé-‰®F¹)Ì϶üeuøEÃßÔÔzŒ3tòYYY±+SSS «ªªX3:::77.mll@€Äp½séË—/0lÂ+ÅJØ[F<Ê``Ñ©Dyl^a°ë½‘GLÄÑÐÖôôôÀÀÀÕ«W ,###þįà·ééé¹¹¹p³Ê0:nÄ‚‹/‚?,c»Q[[%…þé£üüüœœªÊöàsUgüÃYgΜihhÀÎA­¾¾>Œ–––ŠŠ üÄŸ©•Õ>•\þòñ8ùËQJLÏ;s„ô‚ÿQ5ÙÓ¹‡êâR\}é$‰J —]·üd_ìhÿ©¹=ìÓ[]Œþ2xµéB-Ûò—Õ‘=@ÑÓÓŽYÝFÐMee¥_ϧÀe555Fýýý|®“““ ‹‹‹óóóKKKOŸ>}ñâHÅŒ²ý‘Á+0 ¾À.æŸ!»Ë—/“/ š‘5>9¢¶¶^#å_Œˆ¿¸¸\…ÚXFuuu1ªPáp˜x˜áñv᤬¬Œ4 ÒÊꀕDþúæbIᯔ˜Æ,Å«9ñœIñ¿™¨³R|:™Ø•~!x >: 2®vMaO§ÁùM~‹)W<×ç‚à÷äÐï®÷tbüw‘°Ÿ8=Ä®÷,‚ßÛIJû›ýò‰¢[㸠,‚¼ì !Ü%¬D#*J-û¡"·¸AY*ë½hJšì†Y×¥ÒeaC,Sq#ËLŒt K¤¬¬4²"ÄÈ,Þ,µÛûº÷¹Gî2ïÌœ3gvÇÝž²ÏœyžïsΙ™ó• ¸4ì}ÅØxB%²1ÕnHÑZjþIã,“6!е+†b¨Ò ‘ÿ"&«V¶þ bÀ§¬[·.999++ vf~~~aaáÑ£Gs І츘íÛ·oÚ´)::Ø.0aáAàŒC–j;!==ýСC`µ xÀ]»vÅÄİm‚ ~¢¡ÿ~Ë–ÂIÛ¢Z¤·H¯†H\’lXżì‘<Ãø;ecz˜óÀ_‚ªNN‘Œ˜ ø§ÂÃ7-ŠÙ…¨’¤j-øå)®ç–ŇùáIÁ)O:˜³SQ˜tydð̤⃠x£ÿ#U%¥/^ÿ%ta´6ú¯eNllìúõëM&“ÞB‚°N«V­Š‹‹KHHسgÏÞ½{3339r” ‹Å’Mwøða¸ºØÆ 4 gÿþý`âRSSãããÿFл,dåa4õ–°âÑÖÑìØÒù/Æ7v5„~cä’ÍK»Ê¿“&ž1ü%ðdÖÂÉ?™´àìhÒ²¿´tìÃî”VÊŽÀ¿<̦uò/%;µ,>ÌO Åùð“¢J†ªÈÒñŠ»ÔÏ׎¢BNµºàõ_Ä^Õ ¬–Lý×ò§¦¦¦¾¾Þáp'&&ê-A 0™L)))%%%ð¶Ô[K0 ¹ÿ~Ñ–¡ÿ ùëùG1,{€ô*@U©9õ°‡ù™~TU¤¶é鯪ØYh·ø¶:Êã_JžÔì\œü»—g'àIQ%CUdéxÅ]êÏk‡G!§Z]ú/òqo£ÿZYLNNNOOÃï0¡©©);;[oQ‚ð†ëÀå§ÓyåÊ•ææf½Eú/݈ÀñÜÂÓÃ+ * h€‰F.Â/÷촆ªDŠ:9W\:F4!ìŒtlýÒ[3VG1…âê¨,­]:W"|˜F[­<ž<¹|XDMžq¶ö:*¦à¬3-B€ù/b²jeÛè¿V÷ïßÿôé“w¡gffìv{XX˜Þº‘'&&&''çìÙ³`¸®^½ÚØØh#äççoÙ²EouA…†þKø-óÇyµÉöˆ®JÓB)¶EpSéºØâie‹òHQl1>g—*Q¼$[»bRÆò±ÇȶE1ÒäÉÞÂèôŠ‘ÀhsNû_Z§H­vÙ«Šy—´"μ¢tÂ’}SÅ_¦â¼ÑÚÒ²)¤°kg«eÜ« ^ÿ%ta´6ú¯ú/YY ÿ Úú/šSå¿Aü$dy8 „¯ÿ"öªV`µdÚè¿V‘‘‘¹„7nŒŽŽŽ¹\®’’’¬¬¬ÄÄÄß~ûMoò«³aÃx‚Éjiiioookk»xñ¢Åb‰Õ[Z0£¹ÿ~ÑÐ!¢ !è¿VBÿE>òmô_A@ZZ¬…Ãá«ÐÛÛ šššâââäääÐÐP½"Hc4ÿN(++«¯¯‡°µµ^€åååû÷Ô[ூ†þËC7bè¿ Þ÷›ÞB.Dþ‹˜¬ZÙ6ú¯`"::Î{gΜiii#644400ÐEp:yyyqqqzkDOxxxRRRQQ‘Ýnolllnnn%ÔÕÕƒg™ÞE4ô_Âoú/A„¯ÿº0ZýWPš˜˜xìØ±jB[[Û½{÷>|ØÓÓãr¹ V í‚ð`0âããsrr¬V«Óé„'èöíÛíííðeeemݺUoÈÿÐÖÑìú/AD¯ÿ"öªV`µdÚè¿~Ìfsff¦Ãáèîî}öì™Ûí†Å*((Àc$‚„·µ‘†ëܹsMMM7oÞ¼sçεk×l6ÛñãÇ“““M&“Þ21šû/á ý‚ ÂFè¿ÈÇA¾þëW™iii•••àÅÆÇÇß¿ÿêÕ«Bkkkiiizz:ž3‘ Çh4‚¥*,,¼pá‚Ëåºùš››ív{QQ<«W¯Ö[&¢€†þËC7bè¿AYDþ‹˜¬ZÙ6ú/d8^fddTTTtFFFÀŽ}$>>""BoáÈ2Â`0ÄÄÄìÛ·ïĉÕÕÕà°Ün÷ƒž?þúõë·oßŽŽŽ>&twwƒÕ²Z­ùùùIII`Ðô֎胆þKø- ¼ÿZ,Çÿ1KÚ¤!!ì_ŠBhyõ‚V&­SsÙ옚däÀ3RÛIð!ÚmK½6¤ª¼>‹T[ ?²ÜžñE¼þKèÂhmô_ÈRë_»Ý~÷îݱ±±¯_¿ŠöíôôôÓ§OûúúšššþM(,,ܽ{wTTœÆõ.Ñ0J6lØ»w/¬òùóç/_¾ÜÙÙÙO“511ñáÇ/_¾LNN¾yóöÆ;wêëë+**rrrÖ¯_¯wÈòB[ÿE³cð_9Q›”6^Ø¿…è29ld%ñÌÏ’ Ð0#ΑÚN‚V[7À2tÉëÈ€Íó2|Æ=ÿEìU­ÀjÉ´Ñ!z‘šš {Éår=zôèÓ§O´-=;;ûñãÇ—/_ºÝ†òòr8´gddlÛ¶Íd2é]"&,,lÍš5 ÿ$X­V‡ÃqýúuX¾Ç¿{÷njjêû÷ïÿùùóÇð;??ÿõëWðYÏð>-Q]]]TT”’’²víÚÐÐP½kB–;šû/áM­ÿ !gƒEaÞž¿¼ÊE=ÁÑBt{ˆ’m‘“vJµ±õ04pÞ®•ií²÷Jó²32JfÈãŒ#ºÊ9Ÿ²R¥mþÉô¹L†Hv|i4š~¶$ÙD²³Á˜%YIìi”É™¦™Š­PmvÆlˆna×ÎÙ#ÒCCÓ¯“&€1çº ô_äã ßFÿ…,Càè•L(..·Õßß?666==MÛð?ÿøþfffà`?00ÐÑÑwÙl¶Ó§OÆ„|\\œÑhÔ»²Á`XµjÕ¾}ûrssOœ8QQQQWWÞ ^`&&&`¥`-þ\X]¬ÏŸ?ŽŽvuuÁ`Í,ËÎ;Íf³Þõ!+ ý—‡nÄxü—W’ð_o[ÔðŽC¢ñ†h°¨“SÚjSÔÃNÊHÍ?žGt<­v›gu<”é’ÊàŒÃS¦(8gLFi²1}–G û_öË/Ô¦o‹ã»”R^<üò¢”7žuÊÉí:E¨7”ò¯.D)ñ DŠÔ½Ä/9‰Ý%“~Ä))ÄQ: Ñ}(—rå¿t‘üêþÖÍS«y×sÌ1çš{ïµ×ù~NóÌ=çß1æÜ{­¯+yñ\Iå—MrQùhëå7„×Ì„’\'yv~z¯ì¤Þbåaùh^1U£à¿´Éj’cø/P5à¿* ü¨2 ý—ù,‹ð_™à¡ žYVø1 —Eè!÷zc–YoëñVÇŒùÒøhLŸ£ãxƒÛ ÊœZyÌ)¸â{Sð7„o_²$ZDöˆI2f&>»’Ù™º\"™˜ò;Ƨfš#ü–Iªè,¹ÿ2]˜k ÿºˆÉ“'Ï™3gÍš5»víRoïW®\yøðá¿5ß¿ç¿Ê£}ûöíÇÿÒÜ¿ddäÒ¥KƒƒƒÊ¬)+¡ŒÀêÕ«—.]ªR(¨,Û„ :]qKPNjêÔ©³fÍš7oÞ’%KþªÙ¾}ûþýû=ª¢<ìèè¨êí‹/Þ½{÷åËÕ=É:µEÙ««W¯ž={öï|þüù3f̨k?AHë¿\v,¡ÿ*|wøef¥®ä²|²Œ~Ò³Ìz×Ff™\Ca†Æ(‰Žã Îì *­EòøøÞh®O…7Ü5ißy2ZDöˆI—æÐ_€èì’o½¹Ò[»½ÅžÏÄ-µ³“Ñ1A—³mäþKÛ«¦aµˆ1ü¨S¦LéííUïüÊ£)71<<¬¬Ö“'O^¿~ýãǸïÔÏŸ?¿~ýúñãÇW¯^=}úT“{÷î]»víüùó§NR·]™Á¿iTÞ;v(C·mÛ¶-[¶([·nݺ•+WþEÓßß¿xñâ üY3wî\e‚”ãSš•Iéëëû“Fý»páÂåË—¯X±BY¤eË–­ÕlܸQ}Ë6oÞ¬ì’J´wïÞ}ûö¾7š°(ù ,Iž=bÒ¥9âû[&{Ü7Eòv}} ©~[:‹é¿ôÃÃñÌĉgΜ©,Ïúõë•‘9räÈÉ“'•g¹qãÆƒž?®¬ÊçÏŸÿ£ùþýûÏßïì÷º$ÊB~ùòåýû÷Ÿ>}RfêåË—êëyýúueÖ~ÕìÞ½[}W­Z¥ìáìÙ³•¥R-êô) %¡ÿÊÜF¬þ«a½=ŽaäŠ ITˆ/×c/¦&WÚq„ý!ÓIòò¥y£¹JÆá%yû)<&”$fФ7¾7š}úòÎKÚôE0¿¼H‰N^³ýÕ&õ%’šÈ«“)6á ýmé,ÿ¥MV“ÃÊäÉ“•qëéééëëëïï_¹rå† ¶oß¾gÏž½š:th``@ºãÇŸ8qâÔ©SÊæ\¸paxxøòåËÊõ¨¯ÌmÍÝ»wGGGoݺuóæMõWÕ`ddDý½®Që/^¼xþüùß4CCCƒƒƒ§OŸþ‡æðáÃÊ7mݺuÓ¦Mk×®]±bÅ¢E‹z{{gj¦M›öË/¿Lš4©Ó= å$ô_æ³,Âå’˜±ýo>“ï0öÞ…§¿ý)™ÅÌEÊö*´‘l'+•÷‡¬Ñ'(‹P¿R.O^`þ##N­kk£Ü[ Ù ïJa-¤0>š™”\ïÉÿëÕ\ÐéÚËÄf·•x?"k÷&eŽÆ[²{Œ¤êû/Ó…¹Æð_º´þËeÇ$þ«â4ª÷ÒR3 FÃ'äþKÛ«¦aµˆ1ü€n'¹ÿ2Ÿhð_@Nþ €q‰é¿ôÃè ýWæ6bÝî¿òvuZHÍ1of§µÚDÁi“Õ$Çð_j@Bÿe>Ëjæ¿´ˆÜ™.Ì5†ÿÐí¤õ_.;ÿ€$÷_Ú^5 «EŒá¿t;Éý—ùDƒÿÀcú/ýp Çð_êABÿ•¹ü’‚ÿÒ&«IŽá¿Ô€„þË|–Áû/Ó…¹Æð_º´þËeÇà¿äþKÛ«¦aµˆ1ü€n'¹ÿ2Ÿhð_xLÿ¥ôþ @=Hè¿2·þK5³Ó“_’ÌW]õkO®0IÀ–ö­"Á«7‚HXNh¨šuҤ࿴Éj’cø/5 ¡ÿ2Ÿeñ_rï'e¶5³Löv"‘j®á««TíÕQâ%NªpWEx‹:u"AyKvµ 5¶¨“üÍ4Éý—éÂ\cø/ÝNZÿå²cµ÷_å··‰ÔÂ~Kuj¯ŽžhòmhEÄEjAyKvµ=5¶"KE~ôrÿ¥íUÓ°ZÄþ @·“Ü™O´ÿ• ã'ÇÆædaMa7,¹À%ÀÎÎLJ– wU±ÅUiA'Ùr,,Ê5#©®LiòòQP+©üˆ”çm S ¤?Þ˜ÌØŠTb.fzë= ²dI]|"oW]3dÉÑ ”dt­ç[$ì[P—¼M.ƒé¿ôÃè ýWæ6bBÿÕ ^6ìÉ\¼k¥kk±½ŒQÅdoXo2¡Ê™I{¯7Ž$ƒ¹×Õ ‰þ(™©JËWz{(IÍdJpÍDß 2fÐ áÕò52z$Çê=‹ 1ü ôvÙIm‘®&5ó’äGtcSuÉ{C)ø/m²šäþ @ Hè¿ÌgYyÿEN6d¯Ì‹¹Ø»Å$.»\yhÞŒz‰’Kõ’‡êç;ÝÉ’¥y)úÈÊ\^I\%c†–㺺dˆû1éÕì)ÔéÍq…„"#ôD\T¯^¹œÜ™.Ì5†ÿÐí¤õ_.;Öqÿe–\˜ä³“óA’ y½{Cóòqäéxâ:ïípÜá-“K55Ë,ô*ÆÕ"9;¦ÛÂòí¿Þrâ¾³1%È5KŽXÊ?¨:WLF¤\OôEµdl“Ëû/m¯š†Õ"Æð_ºäþË|¢UĹÆÌv^•0{œòм|y:>{\çËËKUšð’0ŸŽ°°…\&¬E~ve¾#ö_~—KO™Œ.A¸¬LLòS{RØÀ$w»š¿™¡˜þK?è1ü€zÐen#á¿ᯠ·G× !xJJRŽ7`´»R“±ëÁ¤È¯WŒDž™N˜"¨4¾Õ’˜A½½efä—œ×#™Yý/Äwí"•Ò…ž`\ ü×Y˜È«Ó,Ç®×ÕÏÌj¯·¢ˆ{ÈŒ+Ü+ØuC)ø/m²šäþ @ Hè¿ÌgYœÿÊo8…Ió_{L)Tͬ!_øŒLdWÛù¢äyC›ÓøÿFeîw'2x¡Q ªÃÌ ßv᤼4{£ËZç¿Æd§}ú·Ž’RÍíí©ºþ2ÜÁé®Ë×I™ó¡ÍiC?mÙcƒñ|”rþžTŠÜ™.Ì5†ÿÐí¤õ_.;–Ðe~‹°))µÑ9ÿÕ†]Iè¢ËWá%ïLÛúi'·G)'áïI¥Èý—¶WMÃjcø/ÝNrÿe>Ñ"üW.,ÿ7Ÿ4ד’eäJIÞè- êGR‚ù/Y“ÝU;߇†w±·I‹òI[€°èÔ|?%‘ "åq¼©í]["Îg$÷Úcy.¦(r&Bm*oóùŠä½e4Kj -Í–‘ÔqLÿ¥ôþ @=Hè¿2·ú¯û†Ù Þ Ô pæxW!WJòzãHÒÙëù\“BÁ^ ÞqЂ¸¹tò‡X>µ·ù’+Arî…½cf½¤{;_™ÅÜ"L¤ÖNšêÜíà’OyµÌ‚ˆëçZàZÌHªÿ¥MV“è ý—ù,ûûå–,)Qö¿ËLÐ1„ÆÖËF>ç£Ã„”®69í¿$Û +É„õñùº›öý“—ªŠœh!¬æÏ4h‘Ï6:¢‰w}²´šsBÏ\ Né°A+8ßG}üœÒCÊ':U eíÀ“¿ õní{¿z»†Â†ò«»¨ÿ³¯þÿµÛ«UX-eÿ€·Sî¿ä‰ö3ÿ• SKäëúyòåN¶Vƒ‡2O̽Í?ü¦ô6;|KäÄK¬}S™xëÁPöÐ 9ù RïÖ¾÷‰»›¶=|…a¡dQ§Dr˜7"ý×~8èkü|ƒBÿµÙFlÂ-#ÆÉ°“ §5,Ú‘£ÞêÿuJXúÀ¡`?`ô5ý¾tRX^d>O(ÌoÐ nÒé ÃòdpJO¨=¯Ùߣw-Jþ§ý?*üïèvÿµ›¬U]ã¿àú/y–Íù¯í?c²ü÷ЯójXÿg²®ŸÇ_÷ßê]K¹¼ öoY-;“±´…Ù2#r.f™B^R&̯;WºäMå‡ã¼å¦¢£*ŸïhTmFU¸¶ðcülÉÞý–ûµ?À0Æy/wqø/é¬5þ ÞN­ÿ²ìXÞý%,ü º—¥û"½K‰Ã+DÂ]°=æ8ü×n¯Vaµ”5þ ÞN¹ÿ’'þËbáìcy÷ë+DÂ]°=æþk?ô5þ ¾A¡ÿÚl#†ÿ’ÿ[Èã;ón-&¯ wÁö˜ ñ_»ÉZÕ5þ >@¡ÿ’gþ 2þKº0kÿ€·Së¿,;†ÿ•ÃíöjVKYã¿àí”û/y¢á¿ÀGú¯ýpÐ×ø/ø…þk³þ Tÿµ›¬U]ã¿àú/y–á¿ Ãῤ ³Öø/x;µþ˲cø/P9ü×n¯Vaµ”5þ ÞN¹ÿ’'þ |¤ÿÚ}ÿ€oPè¿6ÛˆÕú¯e×ü)s3œxêx¤ð­=p„’Ô__òÙ+ôüžJú ÍëVÊ+>]2-È?ÕîœêVï€02ó:26ϪM%kÉœ™Òµáôüá7’|¬vB–*ì™°GÒ™‘=—Ù¹è÷’É3¤!”·‰Q[¯É/mMé:¤ÿÚ}ÿ€oPè¿6Ûˆ%ý×â~º,ÿÿ„ãƒJ}¶/Ö ódÊõñ~ ÖŤ`GÃq7ŒTk%E6Ýyªxëñ&I¨6œÞè›òq^‡£³ˆ3ö·Œ(S(¯3™m"³sÑéÅŠôÅgÊùòŽláž±¦í$¿ˆÆí&kU×ø/ø…þKžeÓþK’ùXì¡ðÙѺ[÷‘3$U9ÑBX=ÌŸ)¦rFᚘgF|Ryæ5…-*±’û’ÂW<4öP̽#ÊWÏl¼°èP³a9+OFÀDwÓø›ªd{Ïqø/é¬5þ ÞN­ÿ²ìXÞYÛÈÇXòÙѺ~ž|¹“-„ÕÃ`Ka8œ¡ÃBC9’F‡¶iÙyS>Ó;ÇéWyòˆ&~¶þˆü¢åÔ6ý»áo*–›h$¿÷¦·÷‡ÿÚíÕ*¬–²ÆÀÛ)÷_òDû™ÿJ†©%òuý<ùr'[«‡Á™aª°Ç°ÐPGþ­¼òL ~ËCÈ‹On°°â+F4W}HÒÐîý_"¬î÷³òã—ÿÈ@¡ÿ’gþ 2þKº0kÿ€·Së¿,;†ÿ•ÃíöjVKYã¿àí”û/y¢á¿ÀGú¯ýpÐ×ø/ø…þk³þ Tÿµ›¬U]ã¿àú/y–á¿ Ãῤ ³Öø/x;µþ˲cø/P9ü×n¯Vaµ”5þ ÞN¹ÿ’'þ |¤ÿÚ}ÿ€oPè¿6Ûˆñ_ÿŠœ>ÖÏ<û¨Ìù‹âù CÔ_ÍqëŠrå9K4Ü+¬™üq±Y|’¹îÔ‰=–Æí&kU×ø/ø…þKžeUþëȹ3ý̳ÏÏ|†*ž¯0ÃÒ}äÿY|£»$÷6Û¿‚ínI’Q?Ý êêrç9ü—taÖÿo§ÖYvlÚmç¾Î<ûüÌ×i¨âù óô½|©»›µJ?dþ£2~,û!Sò9ü×n¯Vaµ”5þ ÞN¹ÿ’'Ú„ÿjämâûA^<®×û$Ûÿ¿=úÇ-šHµŠŸ9“Á©Þ'é“7‘jþ&ƒºÎOæäüý§F“û‘™“]7UÂFÔê¾<«J6Ñ” pÖM¼/lHŒ¯°¿»Ô!4úu^°zËoÁ/t>~s'âDª£{¿é¿öÃA_ã¿àú¯Í6bIÿµhgÑ>ÿ6û+eÑ>ú…E_7¬Ò “W¬ IN#I…–0'ÞQµMÍ_>Û?5‘ÜŠìcÎtmM On) å %lÒú¥ýüÉ÷™“ úb|…É)e;Eû7Òßuºvf˜ÜiCñÉ-¡bµiuö~ÿÚMÖª®ñ_ð ý—<ËÊý—Æ;I,œrjÂfžÖ'¿Z® ›k9##?™3bÔÇÕ€‰÷ØÏªi<™Ç'¿1œ±ûòò §'?´%Ê÷U²÷L/U‚G5$³9s˜ŽŸØ´a9ëbfþ…þKº0kÿ€·Së¿,;V⿤ìL|¿^rMd¨ªܹjhztÊå/6wûä™Éœœ¿zñÌ˵ª¨óï§šßNÚŒÂPž“Ó >?ùæâ™}5ý¦2yœ§þ㎌üß wÚùxK|ØQþbfþ…þk·W«°ZÊÿo§ÜÉmÔmšûXN|.#Ÿ^V¤_%S—4Wwèbs×¹ªšã§*i*ógÉ~ð3‡%òsvâÏO¾¹xæL¿©Lç)GçôK58Ù’E§ã3ú{FwBF[9Ò퇃¾ÆÀ7(ô_›mÄ’þk)ý>@¡ÿ’gÙ´ÿ’È+ý]+lß6Í•åÿ‹ñeÒG6ñj¹>¹Ó‚%ÀïWí.œCS¥ÿst2½*_aŸ§¯2š<ìQ±rZRÃ)… 3ò29“aÎSþ¸¬Y(ã+ìRqÒN ÖïK½å”ŠSùc´ò…Â<%þKº0kÿ€·Së¿,;–÷_Οå$ó_'ãê§‹^*ì–®à±þk·W«°ZÊÿo§ÜÉíÉþ+Ÿü"—vw¦èÕÂni‹ô_ûá ¯ñ_ð ý×f±¤ÿÚöóƒß~èÒ퇃¾ÆÀ7(ô_›mÄð_ Òø¯Ýd­êÿ Ðɳ ÿÿ%]˜µÆÀÛ©õ_–ÀÊá¿v{µ «¥¬ñ_ðvÊý—<Ñð_à#ý×~8èkü|ƒBÿµÙFìRÿõoÓwŸÆœÚ‰§2›ä %uoÙ™inõÌèFùÁ/QNé-oöàu‚Fã¿v“µªkü|€Bÿ%ϲŸù¯?]Ìݽ‘óªñý|EËßçµd¿kŒ=?m«SëbùX~ðK”æžÔpæñÇþ_¤òc©‡ÿ’.ÌZã¿àíÔú¯Ø/£$×Qú´{)Ö»ËTQ„ÀÊ$8ݯ$=·¥c¯ó¯kô©àß}÷»:~‹ÞÌæçÿX"M¾e!³ESšT“X™ÿþ¹Y±Ÿ¾0½‡¿œþ—üq«Õ¿Š^Bµ”ÿ€ÝI÷/y¢Íú×QýŸÆšëÖEuVûyœÒVf?gs%’¤©èlE°ÄÍBò ‰TnˆµÿÙ9 ›ºþR—?,ßU¯†¥ûÝnš÷÷¹¹ìD]fÇ·ÅjÏZ‹3RÅ)ç/DmÃÙ¿u±ÖÅ;5¬»V§zÿšÍvî\Œ¼0ñVÕ•¾ˆÆ¿ŠdjŒÀHô/y–-ø×ûÆX¾Ø,¼ù&T3¨yœ1VæàZ† /¬w˜'²ðøs¹¿Š`‰Hõ`†x?êÜaÎàx«ÛµÍïÜYïöœ·TMîßZè!²Šá”Ù·4øÆúÏ1X÷ ?Ðà_M:Õ¿¤…Y1þ»“ë_–Ž}ˆ9ÄV†ŸmtÆD2û¬ºk%‚…â‹fs:YXÅð)Wœêý°Ë}”Á~ü‹VÎàx«µÍwfM=úµç$÷o-ôPN½~oS-9oìð5ŽÔõóÜ|.)Tÿ*zu ÕRbü v'Ý¿ä‰ö þ5¬ÉìP[f×;Ì£¦²vf¶“…U8ÃîdX^ËðéDJGÆ÷S~ð.¼iS>˜s¶='yV¹…·=ø˜âÕonTüÝÎúêEHÿ*‡ƒã_ð ýë²EìuþU¹¨’SœÒjJ3¦¦¶é¶Éß·ø0?¶vf؉ÕF|ÎSV¾Q2¼Ÿ~X°´:R½îoiÖ›6õèƒ9§.óGâánÄ3,<ÖÙ—9ØùZÂå†O$‹Æ¿ŠdjŒÀHô/y–-øWm©‰ûŸòâÕ}?È‹‘<õ–œîñ㾇§ça‰á\§P?1^%ØCp£œf.í)÷K‹ì€UE}RV?j‡þªý-röÁï¿ýå÷«¶Ú°Zõ»õWÚOT÷íþ^]¿ßœ~á͆Xc†©q|€Õ@ßO¤îìæ¿7êo¨þ%-ÌŠñ/Ø\ÿ²t,â_ïåøÃ Ø‚O~%Žî#ü]ܧúWÑ«S¨–ã_°;éþ%O4ü öå“_‰ÿ‚!ý«zŒÀ3Hô¯Ë±÷¯ºïn>…Ï%ä_ñ»{¸Eã_E²N5Æ¿à$ú—<Ëöò/xÕ¿¤…Y1þ»“ë_–Žá_ Rý«èÕ)TK‰ñ/Øtÿ’'þ>Ò¿Êá Çø<ƒDÿºlÿ@¥ñ¯"Y§ã_ðýKžeøD¨þ%-ÌŠñ/Ø\ÿ²t ÿ•ê_E¯N¡ZJŒÀî¤û—<Ñð/ð‘þU=Æ¿à$ú×e‹Ø×ú×;üîþGmcª·› ©ÓÿrCîת&¹iïó =dÑøW‘¬Sñ/x‰þ%ϲ—ú×!>>m?D:¿¿ØCxÐ0ÛÔ`?ÏŽéМqÓµ|2Õ¿¤…Y1þ»“ë_–Žá_= ß_ìÔÖ%îóŽÉêyǵ|2Õ¿Š^Bµ”ÿ€ÝI÷/y¢Íú×Q¾l“åù³¹¥– Õü }N«šJmà~çVcNÚ&Ž”.$²3ý]¹þrŽßÌÖU{Ž÷©ŽW7<ÒR?Ì*ÏÜïg0ϰ4À‘þU=Æ¿à$ú×e‹XÄ¿jKõçÕ}g6÷ ûü ÁrVª¾ùá˜`çNÏ~*« çºÓUp ý°¦“¬}V/F6ßY¦³¢f9NKê»×´·¼Xçªy†¥ÞKã_E²N5Æ¿à$ú—<Ëüëšùž·¦Hú$~þÈE¿‡`ϳ;Iœfԉѳi›¶‡Ógë‹6ا3+¸ñ´wŸâ—x#Õ¿¤…Y1þ»“ë_–ŽÝñ/Ù­3ì |^úƒ##=¬Ýš-ªŽïÿ·må\ëg8%øX_´ùÃ>Õ·"²{÷w`í)÷¥ÞHõ¯¢W§P-%Æ¿`wÒýKžh÷ý«¿b]¼FßÀÃÁ‘‹Ãœakül͘þß`ÑøÂƒýøSœÌ?Äë®mþ°Okp¤¥HÚÙ§cmËÂSެà/‘þU=Æ¿à$ú×e‹XÜ¿ŽÀ‡º¼ÕÿkM·² ,\Œ‘Î=‘cä0ká~Ñ>g¤+CÓÏT65mâæKXƒã-ùi×Þ´…)ñÆÞEã_E²N5Æ¿à$ú—<Ë–ýëêô¡i¸` nbÿVÓC+˜jªb°skájçVÜgˆìÆì­Í¼~?Ù&Ž\‰ÔuøMF²9›9¬8Œƒ Ô]+]À[¨þ%-ÌŠñ/Ø\ÿ²tlÊ¿à;iž>/Ãl <žê_E¯N¡ZJŒÀî¤û—<Ñð/ˆs l <é_åpÐcü žA¢]¶ˆEü«¶ôŽó>ùf¾»—‚mgÓøW‘¬Sñ/x‰þ%ϲÿ€/¤ú—´0+Æ¿`wrýËÒ1ü Tª½:…j)1þ»“î_òDÿÀGúW9ôÿ€gè_—-bø¨4þU$ëTcü @¢ɳ ÿ€Õ¿¤…Y1þ»“ë_–Žá_ Rý«èÕ)TK‰ñ/Øtÿ’'þ>Ò¿Êá Çø<ƒDÿºlÿ@¥ñ¯"Y§ã_ðýKžeøD¨þ%-ÌŠñ/Ø\ÿ²t ÿ•ê_E¯N¡ZJŒÀî¤û—<Ñð/ð‘þU=Æ¿à$ú×e‹þ*É:Õÿ€è_ò,ÿ Bõ/iaVŒÀîäú—¥cø¨Tÿ*zu ÕRbü v'ݿ䉆€ô¯r8è1þÏ Ñ¿.[Äð/Piü«HÖ©Æø<€Dÿ’gþªI ³bü v'׿,ÿ@¥úWÑ«S¨–ã_°;éþ%O4ü |¤•ÃAñ/x‰þuÙ"†€Jã_E²N5Æ¿à$ú—<Ëð/ˆPýKZ˜ã_°;¹þeéþ*Õ¿Š^Bµ”ÿ€ÝI÷/y¢Mù—Ú^â_Êä¯(´ÐÒë’«ùûXHøÆ}€'!ý«zŒÀ3Hô¯Ë±ˆ]Ý'}ó3ˆ5Ef³â”BñYË¥#UC¯š[S=¤ì€¤ñ¯"Y§ã_ðýKžeè_V¡µ*ÁBY³ªX…–×{s.€Jõ/iaVŒÀîäú—¥c þ%ãúÓ¿¨ŽiF:…ÔT‘B}¬6ãÌòÇ÷»¡.ÍI5Ü1¿Üñ›å‰ÃµÀRý«èÕ)TK‰ñ/Øtÿ’'ÚšUšëMÜ\ìG6¨I"q¤ì¹éߊGgRÖÒ‚…¬)‘rñ½Z˜ ý«zŒÀ3Hô¯Ë±)ÿ Æu V††©ä³…¬ºÍ\kÖloS‹r¦Ä—/7œ iü«HÖ©Æø<€Dÿ’gÙ}ÿº4ªÈꔞ~âlìêë6ÍGïgjQΔH†å} ö_Nõ/iaVŒÀîäú—¥c)þ¥Üu!j+ùl<,äüŒÌZègaðZ«wöí¨ÍTÿ*zu ÕRbü v'Ý¿ä‰ö"ÿªûYrJsÄ«Ã"qä®ÕypÖloS‹r¦[½¹o~ðåHÿ*‡ƒã_ð ýë²E,â_j{ê]늼ޜˆŒT îó÷³üNäOgiþÎøErÖ0¢z×z@ðµ4þU$ëTcü ÀÏéóO˜þໄvÕ³lÁ¿àa¨ïÛ»›€£ú—´0+Æ¿`w¦ hè_–Žá__ÈÑÙV úWÑ«S¨–ã_°;ò,ñ/y¢á__Nó²½»øD¤•ÃAñ/x‰þÕçÁ¿À§ñ¯"Y§ã_ðýKžeø×¿ì×!sÛJÀñ¢Ò÷}"´043!¡¡A7A) + kß± OYaia?ÀÝåv¢‹o«Õ®V²eKòï7šŒ,˲cm²û Æ¶¿â Ëíë/–n¿ý•Ë1ý@§m½æÕÇ(µ:öõK·÷þŠg4ý@YÜ_¯“C÷¾þ`Zý•;­¦¿^ò!¦¿èÔê¯×Èúع¯¿XVuÎ>qO¥_üòí\¦¿¨‘öWaÓ_,]Ú_­ ¨ÕSéÄ×zùKWŽé/:é/NJgmç ÖÁšþŠg´qýõîÝÿ¶f¿u0Þ:_ À‚è/NJ®¿:•û+½ÎˆþŠ*ެÂËúkȦ¿X¶=öW<—ë¯4©jް\­‰ ædýÀrí·¿r96º¿Rås¶Ï6;ág|$~mó°uµíÁô…º` »OC¹YI0C{ï¯xF;pm+©3 â—·B,½rù û¢¿8)ÍìsU-ø¶GÒ ôÀýõRÑMéË{û+ÞØ/ýÀIi¦ªAr3]<—Í¿¿ÒªÊÀtfÕ_WÀþ}¾ÿW˜é 96º¿jŽt>[î¯Â³q‘õ¾;ºšYÕòæ…@Yè©ðwY¹…¿Åp>¬[3UÕÏ5éėΛÛmh½ä˨|0}vDõ¾Ø»8©Þe¸¿6u®^—‰•'ÃÉjú+ü­TnMûSĆÎ5éÄ·=’^gD½¼fN³ z*~6>­w¿p¤æMØEk*ÄWnÊÍJú æ î¯8Ärûú‹ÕÛcm¢¹¬õpPK«°À¤ÓP.¾rÓPnVÒ_0q½åUi_±zûí¯M&Çjú+ôÎ"6ö¨sꌯÜ4”›•öÛ_1h•½ZýõúGóÒ¹¯¿8¹‰¯÷ä\m¢mPÍÎ8°BòTNC¹YiýÕÙƒú j¤ýõYûú‹Së¯Î+÷WzÅõ6ÿþz÷&ý0V‰Ð+î¯8Ärûú‹Õ:פ_üòí\Öz¨¿è4óþzI?ŒU"ôŠûë-¯Jûú‹Õ+÷Wkºéí¯M&Çôô¬[«¿^ÿh^:÷õ'bïýµ‰f4ý@Y3S\U{9lÅsb:ÙY%B¯´¿Þ"«c_q †Î5éÄ·=’^§¦¿6C¦]NÜáûk;-¦sœU"ôŠû+±Ü¾þbõ:çšÎ‰fÓ×_›h.k=ÌÍ’ÍË ^yfy™ ¿š™1­¡WÜ_oyUÚ×_¬^®¿zOîì¯M&Ç ý#¸¿Rú j´ú«wÓ_¬Þй¦·¿6ÑŒ¦¿˜ˆþ‚EÐ_вÇþ*„X:KÀŽZ3Kk2×_ÍO`>Ý‚cf˜‘BÅsY¹¿`¿öÒ_ÍË+¯;X¶ú¹¦‘›éÒ‡ú €ÃHg¥qýó”ë¯M4£™Ú8 ýÀº¥3]!ÄLmLjÇþ€ùkÍtñ\ÖzxìO Àúî/X¸¿ZLm˜þ`Ýôó1¨¿^`þ™ajàð*û €½Ð_‡Qè¯+ö*×_ÇNC€µÑ_‡¡¿Cƈþººú8â)€–xåÐÚ//*-9š“wY¥Xáä4w*¾_5ßÕŽßgîån›ßÿ{ÌsH챿æù ³ÕZ&Õ¯šô×LÄßLý·4Eí~—YÝËëCht5iÿŽéé?<°tñ²¹ógkQQXr¤/ïÜɽ0=÷µÜê¥_]çâ0½kñÁ4rKÊt õ0µ¥¯—NœÛǬ,}@ê/`jK_/8·YYú€Ô_ÀÔ–¾^:qn³²ô©¿€©-}½tâÜ>feéRS[úzéĹ}ÌJï€|øÇCyúŽï~÷çŸ^FÎÎÎâgë?}]]}lmC…–ݯÌÙÐü¸µAyeÒùlïÃΗ }—¥«¼}£ïZá ¹gËïµ}6·^í|£Âi…ÛZ+ 3QÓ_ÿúÏ¿sÛ—¿¿ M°m[½ÿþÇw¯>½yxx¸¾¾OMÚ_­‹ì8´ŒLX·ô×îËøÖ»sÜ»,ÝtýUøþ['Ô4Tç5;O(\*Ý/\pè˜a/vﯡ ¶í¯&¾îïïCv}Ž<<|º¼¼l¬þóï«¿šqØ98s#¶wl‹V^/u.bë—ĹszŸÝq-­¿­]|°&…â\•Ÿ-_³óÙÂÝI_^>yÜÇ`õýÕ¤Övk¬O°&¾ÎÏÏBh½–×·oßžŸŸ¿~ý'ØÙÙÙáû«þ?U¼£¿`Ý ë¥Ür·7…Zvì¯Ê7Õ_›üí«ü– O• «÷üô­Ó ¬ÿTé€ìü<ã$»¨ï¯Î-.²Ê }ôÇÜÝÝ5å²ëþþ>ìüøñãû÷ï!ÄžžžÂS———ÓõWk‹ŸêÜOþ§¢°25 øôH¼0è]$è¯éTÞ¾òگ橽÷Wý¥ /)§eÍo½¦Á0{ì¯Ê }ô×_=>>†æúùóçõõõÅÅEø²+< Š,ô×ííítýÕ¹¿IÒ¬óxá"ú ViæýÕ›Wú+÷°ð¥ –©ûkÐ¥Òã5«ÖÜ¥ôפêû«•Z9VÙ_!¸Bdýøñ#TØe$$X8Øô×ÝÝÝúkSñ¯fèH6D`eæß_i/语¡ýUù=Ì­¿rçä~Ç\cÖ*Ʃﯚ­²¿®¯¯¿}ûRëææ&î¯püùù9ô×ÃÃCØ?nåþ¹U¾ Xš|gaÕ/†–Qï \mMbC¿À¡G W”~ƒ>UMÙ±££ôWH­ïß¿‡Ôº¸¸'ØãããÓÓS诛›õ×&–éßÚöHç™Z Ö­¼^Š£—Á›®EHa‰R³N.¬j*ßejn_ú´Ö~•_xî©ú“knGîžv.Y ×ɽ]ïHcõýõåï/…mP…ì ñ:ëëm‚…㡼>}z ?ÃÁ‰úkR†(¬Oïz‰9›îöí²ð«é¯9˜ÛçYúþªÙêûëñññëׯwww···77×77·¡¿Bs}þüùÓ§OáàùùùâúËø€UÒ_‹6éí·ük½ªüðˆæóIÖä(ýR+DVH­Ð_ÍN“cOOOaçþþ>„ØÙÙÙâú X%ýµhn³Rß__þþR؆öWS^¡¶š Íõüü|ÿêæææâââýû÷ú ˜ øEsû˜•úþªÙ*ûëìì,tVè¯_¿~…»½½ öððЄØùùù»7õŸ_±€_4·Y9J××ס¿~þüùü_öëP7a( ÀðÞ€w@cñ<¶²[3Q‰¬­­Ãέ“{¬ÝŒ,K–•…²sÒïËÉ9âü¯¯åÃétDZïß[ìá‹éÿ_3qÀ§f|„ò_ýU´m; ÃéC)¯òÊ7UUé/ |jÆG(ÓûëùåùònÕ_OŸš¦=«ëZ¡8àS3>B™Þ_SÞUýUUÕ0 ã8v]<û¾/ßì÷{ý„â€OÍøåûkµZ5MÓ¶m‰¯®ëÎñµÛíôŠ>5ã#”)ýuÕûõ¿æÕf³©ëúp8¬×ëív[â«D™þBqÀ§f|„’}!õ0·ì÷Ò¡d_HýÌ-û½´pÆG(ÙRsË~/-œñJö…Ô_ÀܲßK g|„’}!õ0·ì÷Ò¡d_ÈéýðgßÎr1>BɾSú €[Ñ_÷ñS0ýp—þz`fÜË› qY~ endstream endobj 265 0 obj << /Type /Page /Parent 678 0 R /Resources 266 0 R /Contents 267 0 R /MediaBox [ 0 0 595 842 ] /CropBox [ 0 0 595 842 ] /Rotate 0 >> endobj 266 0 obj << /ProcSet [ /PDF /Text /ImageC /ImageI ] /Font << /TT2 838 0 R /TT4 840 0 R /TT6 536 0 R >> /XObject << /Im77 268 0 R >> /ExtGState << /GS1 843 0 R >> /ColorSpace << /Cs33 587 0 R >> >> endobj 267 0 obj << /Length 2403 /Filter /FlateDecode >> stream H‰ŒWKsÛ8¾ëWànY R|ä–‰íI¶âM6ádã=Ðeq"‘Z’²7ó36ùÁÛ/P’#:Sª4ÐèÇ×ü’Ï^äy¤ŒÊW³ÌÏbÀIàgVE ßA¨òí, Zw?{ñë'£îûYàA¤òr6ǰxœý®/½Ðõ[ÖBýÚKáÿ=-Ýô^âǺlw• ýؼ¹ “øë¹gŒŸhZ5‡Õ8‚»­þŽñ©Ê³¾Ñº)š½g]l¼çGÙ-Ën,I–;‰A¦ˆ'ñpX‚ ¤¾ô›o¼üä3ëg pÈ/qS9ÓJÈî2™Ø17 Úo¼9j’{óXß¼Ãõ¹æµêt üTWZ >ü…š[ߦ#_“ ãŽs¾®ªüíM~Œ,ê˜5Ó´Š—˜lS=VÞP°Û,F[ ¶µIq„¶nWd¶AL¾lËýtPýº}ìUßnå’{/ó ´!ﺚÀ¤ ÉF­+PÐÆê ­êfÕvÛb¨ÛFÁuƒ“»«P-_©OÕN82“®À´ç±Öª ]ò¿ ^RÖÁ¡ë¶Cè?Ádº%`¸À?ÙP@B#"Ƀä?š‘¸ŽӪn~«¿ÉsX¤t8`A¨¿ßzŠ®!œ@(tU³$·b8mŠ^ºtÁ")ðŽðf•‘&R+H D4BÅËb‡Ví/Ðãú°Þ»u¯Šf©*^ÑCøìÖE_ÿÉK˜\2½TCõ_²|†÷á&u·iË/=8åÚ[€+ZÌj€mU¨rƒüÀE–Èí™pÚuUOÚ&h¢ÑÕ¤øûD kÅ)ŽÈ`°nW× ŒZº¥’ü‰°ú¾”Ñ^6WxUÑ!­VŸ0}äD4º×w¾ƒÁºhrEÃS!b¼ÅºkÆ{)épæ®ê„âŽcc¬" (ç©òdZ ”¯€µCÁ^îjùf‘¯ ›‡æ£úð±ø).N#ºÔlÄ¢]µ"çƒ]Ýg,eÁ°ÛªUÛM;T ªi iÙô‘|W0§ò Åèí„÷ª¢$å4%/W6ö› ¢ãqí¸7ªØíºv'ó®†p÷]º nÙ˜¯¬qùÊJ±%ÇrS‚Tìw£KІŒ²]ˤŽd9߆Zµw8ÊËvId7Er† à5ßùþæBë=¸Õh@™Yù­g1@ò« °£ `NátÇ_ýJë`ßñ ¯>_‘Ú¡¾~/ªÈV0;‚7"x°¼p±D¼V4ý†êÂ)&N¬yÚ°þ£5ÎVWuS—L8*¶&CÍúxãWœC‘TÁ!ßmj€þ…ºÛªmP¢«%n=Í«ã { ùÇZµm›¶\wXiê­KbUq¨;†* Ud“.q‚!·D†¡u,8sz’£æ§¹5r!„#4å°r™DI?`æq¥™¡Â?Ö°C>œ´Ô¨»êtSßnà òy¨û}±ÁDŒ`±n(¨jègäÐ Ö±à$´‡.iÕ”­–"Ÿ Lxr¢ +–ü픣âV,ÌYìS.龫|fT­fqâ[e>)Ü¥jNÿ]5[ý„§B3&ö£c¢I#·‰“H\ÄB CPÖ“ýíÔÙg‰£´ðÔ`É¡±=Cý%æ-b2Ø—þø‘ºêuKž ¡üQ‡¿“¶¹¢À»öÈkXö#÷ f¼AJù5ÓͲ¦è ):!½C@S1 ¨]§àÛÞºW¯)ÏC³÷S{¢¯°Ë!ë¶S^}Ìy.Ü_qn{‡ò&¸€!¶z€¶S aâ$JΟu0aê4N&of©‚h ç©G|ÏPŸÇB’ùqp„;†­uaëqɃÊÉyÉÞªJ™÷=þ²-{Êï¡þ9ž¦J,àò0ð)¬Ä®6'iO’l¤¾ò4Á*!ai„ê 5¥¬–‡Œj¨ËÛNCIÑÝë2é­»»VK½eJÑCæ?-Öéˆmyò\åúµT9R,7šZ?¬³Ø‚a…¹£r˜r9¶ôŠã/…êLÝp!å~ܶ£WœzßU˃8ócyòump%m³Á—#ö %ÂÅ'¼£ÄÆ' Æ@€Nôm¨°ZÐ"ME2žšÉ ‘Œ&MˆS6qVM¨“6}3J)!ZdàöÓ{ÏRG¾g©ÏZ˜€ÇI7a³›>W]MÝXŒD4–Å!ßZηé_Ë·?_©£.ß&”oCÊ·õJÒ¬Tãn?_}¤°^¸ã×òZ’éÕ%¦Ý߸)þÇÏwOИ\J é_yŦoÕ²îw›‚€q¤Ôdbpl„œ6ê"ÞVhKèH­Û\skk©kMñ}ÑW݃¬a'/K|V9äÑE!7ž‡`wå&ž7'Á}þ¬7S§Á=y3JI×mXåɽg©#ß³ÔçÁdPÑŽÀm’ñÑ›¸Ž¢ÁIJ§â«r3u íÞ‹sn‚°üdØu~øaù~î›äòäºKLfÀ¾¢âô”C½•¥vE ‡d¸…&ügôÎÄéÞÖA6C4ðj'Õ&rDèLX€÷$&˜8‰‰óg&˜:‰É›QªïÚ0-ˆ>zn’†Ú0qZ›³w:êyÎNW¦>£ëYÞŽzž÷óÔŒg~Êi`ÃlZð~ŒÐ-/ÌÀËx×5•Çû½·€dÑU ÀKéL{“C#eõ ¥0M)Îæøò‰ôgÀ"ö9x´ò ½}ÄœšÁ‹ð»ƒÖfQ¢)P¦b ºx€Baÿ©r;{ñv›$ЋÍþ9ûÿ\¾Æ endstream endobj 268 0 obj << /Type /XObject /Subtype /Image /Width 545 /Height 404 /BitsPerComponent 8 /ColorSpace 587 0 R /Length 5553 /Filter /FlateDecode >> stream H‰ì—‰–£ºE+ÝÖëôýÿ~•àA²I¥3°÷*ÛPèD:|}<•Óédšú‚½Tºóµ6ê‘Ïæ¤E1\§:ãT» ADoË5ÜK¸ìN9GäKׯI%Š^ùì¤Ç.ɧöœN}š‚wàוúÓW;ôÙâ¤ÒL_bÚœn×÷ü‚7¡ĨàTu \ÈWM-_]·‘ÁW'’“(1oÄL %à§Iù2™{õ ò…@Þ^ §’(NÕo乘”lPÆ4³Q«®MÝlx}:X¸ pA à‚@À€‹ÈoK'çwßD  ¹(Bƒ@ÀÐ „ .\²@DÌX"’‚@ÀrˆHQËE"U!,˜TpA àH.Avfß~4—ø¾åx×IÏåÙên™$kƒ×z'}y™²h}+ùÝ”w$óþñûú!b$¿†:«kšþ‘o9Þuõ9Ôn6¯[VÔ?/­¯njæ°Â[*ävÌxÜ+²d^ óyÞÓ^Š” ʹؙ2®ðŽ Ù')y[R;[R®j=â9ÕÛWYýÚPÍúã-»;]ojEPK—A­­Lµ¢ØŸ‰¾‘½{š<Ø; ädñR^aÓKi›×ûˆçl‘úî[$sÓü¨«ùh)"“Ajÿ›•ªž”ê ÑÃô‚öÁt>{+Nÿ3¬ ¤¾Œ¹@”pƒÉß¶näÜ%C,[ˆkàmŸ^Z&kwÖ\ D©Ìè¨O]vý÷È—A’E©8Oˆ”é`‹Õk¢ýÚkü†ök›Ç–\¦©¯¦í?_ ³3ô?“4t˜eƒ©@Lê*‚ˆÎ:Ý#È0¼;72èŸö]r‘HÙ‘*û¤ym¬RL¹X9ÛHûoD¯ª¥2WÜçäÏéOÝæi‰µÕ”ò)S¨<:´ïrçö ¥vetÛÕ¡æLîÖ×®ÃÚ[h ›GKêØJM13o¨¥Ä”m5ƒ|6[qû±¸¾­@j9¦@6wh}=ȧóOB÷–úˆy8.xpÁƒ€ \ð à‚<¸àAÀ.xpÁƒ€ \ð àõ òMg¡Ëõ®ceXaÏcêb;êje@éݳ>¬ô ××í¿s}Õ£º±Ø8­îô^–MêY? î%æA$ðÒ{l »Y bÎÓps î$æAZ4[6¿þIËõ¹¿ìÅ´Û R~îõrY• y1bëbÞÝi×náWzšÍZCW”$jzq2î'æA&™©b] ¶´4‹¢„æÓÕȹi"ÿ©vT÷g5², ×Ñã“Y·šXª†æe죉zõû^ˆ¾”CëR‘Ÿ¤Ž^EýòÏÉÔ´Ô•¥s¯™¹@R/—t.k €$U”ZSêŽr-(©æš@6R=Ä’Æ`×AŽíSÎôý‡a‡I*ƒ¤4„WS ÄWHŽv‹ï,ÛØ ¢Mêy@ÖØáA’ˆ ¯6I²—0%¨ˆêÎSûa+ý·åAJÝI-¸cŽ<ˆª(Ê•Ø5AÈƒä¯ ûÕÑŠ‹qýç‹mÔiÝzê|ú˜õƒ$›ú5¡?)Î͈ª-_3Ãë—IûÊQ+×ëg³ÌtÍCó pXbäéœ_g¿F̃Àa y8.xpyÏ.xpÁƒ€ \ð à‚<¸àAÀ.xp yùf9ØÉµ·¿ .Oz+ñǬ'Õùj±¶fk‰mì½-=H K7yyÿiöÒ%­ $w¯©j…ú’ìY9QÇ|w}2A"«ovMë·,3nH'•¦™™@úÆ\è°NЃHý)Ú´ÊN]){Ûnzi Æ O2J Cj’‡é‡ „ʼ¯ÍšŒk±ÍIFÊl)³ŒˆNGM3³#uŠti\ê¸Ä5k:2™ ÒÍ6Ã!ˆN óRQú¦ÅHÝK†™$æA&ñ75KE³uCÔ6G2EÄË £@f¤+!ÒuL†”]dM2„_ÍÒB=iC§_?«©ë©ÃØÕ-dïÑßvz/c¬ d:Úé3ÈHÄÞ 2ˆ\mÉä^'æAJ gââ(t_›´2Z̺h¥¥T"ý Èpa6ïĤ^ ”˜·&àAlëÉêg®=jÑL¿bÌt4òjUÔ÷Š)9ê[&‘F>‹@™Ž—ÛRê |<7f8 \¸ pA à‚@À€KH "’äz¸ §‹Ú÷§ð Dr úEõ¯qm(Íù0ÑY¢‹¿d…èø(ÂYèdR"ÿg¿l”a |3EïÿÊ×Ú€VB–ÁI/g¿ic›Iˆ5à¶”ì«ôÂV!ÚŠ¼—‚Onÿ‘V*"XQDZy'ž#¢:ð—~ºíäxL Òv“ô¾È»ñÈ!µQ ÷eú3·ôÛN ØJ†¥…yGfR?KôFà¡F‡¯˜M*"Áy'¦B> „¤P $…!)I¡@H BR(’B „¤P $…!)I¡@H BR(’B „¤P $…!)I¡@H BR(’B”sÈ7õ÷ç†|+È.‹]%½¥ò!,  @>„à^ÓoK{–Â]è†L d§Šd[=Äüc¹«g±'=™T›±|HÝ2 ¤I‡Ü‹õ¯ñâ @îÌòc7HéK ¹çÑ/=­öݦÿ–z¡@nÆÄ 2 ¥qGž%}÷!·ãy¡>nÉ·rG(’B „¤P $…!)I9ˆl˜NÛ:,¯5ƒ ¹æê¨Û¼c0‘tʆ²à lýü®ö<Ëøtëc&V1¶/9™j6ô(GÓ)M‚êeæžÕÇQÅaÃçêqó¹4‰ÇAŽX± üì¯ÆZˆWZõœä´Í‘@NV­w©¿²­„ÒT^ozYk©*b±5ûj*Æd5¥÷:[Ò¬cn_¤!0cÎxÂÐt±T—‘Ö˘´é¥› ¾âbÖ¸L¤Ý›ñاݤ\Û$G1/ic(à˨Þ<ùTC& ØÒyëÚ¼a~lµó%š«k‰Å®¨QkºXc8Ü2x4Ñ`ztVlôiA[{6 ôhÞLó ÍO;aF šˆUÚ¡ \y¯ƒT\¶ºeì)Ò ©ìqIØMCñ)6qG¦‹7¦Ãâñ² üô °’dÌçaôÍ8ÎF`*ë{Âì R£pùb–vÑè!Mû¢·z>ˆ_·š9ñƒ‡äM ÄDÒ›™<Û WÒ"2¶fUÚærdÕ×Xý¢vœ€ æå#ˆ«25¡@œ3Øj0w ,·rdº`³§ ÄG D\ù´@|þÎúžpA 8÷C<ô$¤7‘X?R lV~RŸ#`‹qÛ¬OC8$ˆµ†ŠãÑuðèÒ3 ¤-CI`'œ ?KDÏ×öÜÜØOw¨ îÕ’m‹gGk¹þ÷o¯ªš®Ø ËXdM·¨L¤fl¥†gM–Á†a†Çh4ß/-Ý¢õƒÇb*¹6çÍæAüsò%/çE¡>Þ…—dru#ÿ¯ÚbÈ›@ „¤P $…!)I¡@Hʤ@ä¾F#"¹aI­ÎF#p ˆ?6!Á]^1i]N‚–ÇgnN 'óq%£{ØúõÑÉl/l5ëÇ7kùŸpÚêÅ>f3ë§Ký»BË“Wô•Ÿ\f+{L¯ «~L;µ™YARëËlÔ|«p Rº&w]îK À“6ÙïD´™èÛƒ/o¿cbr#àÜ;-îEÁQ´´wL ÿMĵ ¼µoN[3é1€PÆü­X/)Ç66µ£ù5&Rs«AK[¿ZÅüõÆ*~uÒ¼V Í4¡Ò4Nw b{ØøzŠÅ™Ó Ä—­µßw}ÿ§Åú7#:NY7Ù€©Az~lÏEæR'^3Z$º k‘‹ B•á"æQ»NKôd }Ì&2«pŸ $rz”¦¨"Š6µîûúùÆq ÑšK30=Bʱ¡ž ¤u FO~.‚B}0G}éûOÐ^/éÚ-$Š6µ¾—Ù#~¨×xž@¬Z‚ºQ*0¬3øwfhsM áØÆy{D p̹¯@tY>HûsM _;tٱ؉"èàL 2¶‚îCŠe³×³ £½Ü)LÍh"Lã‚u?!§¹$’ůüן^Ràf/,jjຑÂfs^§ÍZ*C|.pŒ¦–ÙxúƯ8RCaâT=@ ¶¶øË´u]˜0*µbz®2#äZ: =ÍÚ?‡9€Ù¡@b®®È±©÷ÕBr(’B „¤P $…!)IyX rÝwÐuÖš\w,îfÅ΃}WÈÓó%“'Û ­° Ú˜uù©ü_YYA®´’àI™È÷K&Û›¶½mÒ·;(êoc«ìZ“Öªu@kÕ6Ò:èQúËtãm=(àlƒA­(A—aœÆ…/‡†weB 55§5;í^kº\Jo[zµ:`•4k¥ÀŠýmå¢2ÓÈÀº‰uŸ]jK)ØEÚ¬>â^ oËœ@0éýUjJ Rp2´…Wˆï?”¶æVs¡c¼ •(¦a\C#I|j"nʺ@ö~ðŽó´½X}E–Ö¾YÓWZí óìD¨ Ô¢@¢ò`µ³1˜F'éûÛ-¹*øõ2¼eNXÁä´K—¢s>Lœ¦â¤Å0¬9º»¹r3ì²tÑE¸M9ÛúHñ‹L(œhÑ™!  xÍs èñátKI‚[LøZP Ç_1pé3ÙŠígx•‹ù)ÚQL¹ûŠÁR½ôò" èGL1Ÿ$ú‘¡ÿÚœ˜øÅ7Rã`¡î'é•̤¼òé‹ÉT“ߊs"Š›òõçË@\â¦|ùÇP ¯<§O|$ô&¿ç½?U~1±ÅO…!)I¡@H BR~! „ l+H×BûÓôAG=ƒT}P ÄÁC*I¡@H BR(’òõçËàâjÉÇcòçÕú%ÿV „ P $¥ „—Ê“BÈÍù;Õ‘ endstream endobj 269 0 obj << /Type /Page /Parent 678 0 R /Resources 272 0 R /Contents 273 0 R /Annots [ 270 0 R ] /B [ 271 0 R ] /MediaBox [ 0 0 595 842 ] /CropBox [ 0 0 595 842 ] /Rotate 0 >> endobj 270 0 obj << /Dest [ 391 0 R /FitB ] /Type /Annot /Subtype /Link /Rect [ 277 144 287 158 ] /C [ 0 0 0 ] /Border [ 0 0 1 ] /H /I >> endobj 271 0 obj << /T 687 0 R /P 269 0 R /R [ 192 640 400 658 ] /V 271 0 R /N 271 0 R >> endobj 272 0 obj << /ProcSet [ /PDF /Text /ImageC /ImageI ] /Font << /TT2 838 0 R /TT4 840 0 R /TT6 536 0 R >> /XObject << /Im78 274 0 R /Im79 275 0 R /Im80 276 0 R /Im81 277 0 R /Im82 278 0 R /Im83 279 0 R /Im84 280 0 R >> /ExtGState << /GS1 843 0 R >> /ColorSpace << /Cs34 589 0 R /Cs35 590 0 R /Cs36 591 0 R /Cs37 592 0 R /Cs38 593 0 R /Cs39 594 0 R >> >> endobj 273 0 obj << /Length 2355 /Filter /FlateDecode >> stream H‰¤WÛrÛÈ}çWÌã ¸@ÞlI»qjõÚX¿¬ó‚ „HpPŠ¿C®|oN_"%­ÊY«ˆÁLOOwÏéÓ7åâUY&&4åvQøÅÊøñ ü"2IêGA›r·xm¸^¼úñch®ÇEàAbÊz±¤TÜ-~³—^ìÇö­‡¹Ø^x9þæ©w£—ù+[÷‡ÆÄþʼeg9ôÛ¥†~fM›%fW Ύ쯼Mv5^ä‡v0ïªýÑ [uÞ¿Êí‘ØFlbw¶‚M‰ÎæÑ°†0Ò^úÐæG^ùoÒ° ‘_dÐP^’P½°F—Ý~ë29›²LÙ÷ݺTRøLüÔ,#?ÊIZ_ñá~ÒˆÂôz2äÇtÓȳ?¸÷AfÚ‘•.ó9æ®nLeöÇÝq 801B5˜~kÚºßcæíÐoÉ›ýÔîUúÚ+üÄš±ß5"(¢dßxË•ŸÛ¡êÌöè¶Ô¼6µ¤‡À@Ž|`–¡OQP£T=äyxÿ‘ÔÅvòÌ^à§öXëëÑC„Rº1¼eŠaã…>ôƒJ˜O-L Qs× bîWóÙnÝô5‘Z_q˜b¬ÐK¢ÏÏê³ÅWåâ÷Eœ¥~&PIB… ?7+ %]"õnñêí.ËÍe¿øeñ¦|‚«Uhžâ*¿Ã(·ßËÁ‹¬aG"{C/ïºßÉäº7ëþ?d§Å…ÍÁÏé&›=OÖÛÞ?£«>²Ði]è°@Ï/^˜[Ól­6ˆñ¦­G=ž‚[·Yl«ö "ƽ«’V#Å9·g;€ÙÙÍF<,†æV÷öDZãK#ûè.Ê¿h^䊚‚F¾zhª‰˜ÁÂêÛfxH†ñ¦¿ÛûƼ¦Ø°žt˜ =·8 çÀS8‰°ˆ·+°GZô*¬qvhº¾Ú0Øs:S¶µƒé¦ç›[÷Îø`æ’߬\c ({ Œ€8 Ž8€‘â¸ÇÏÙ'Xþ1û€_gö.›i ŒvѾ˜©7]{X÷Õ°yDI!©?ç¤Ð%¬7T´ÍH nƦkê Á¨(´À™Gˆáaå L»gÁû¿—ïàÙg?fíoŽ›(äre?+có$Dùã9ÚGÛÏæ”š÷gD|ÇsŽ{yŠŽÚðô8 à¿£[•IPu¯*†Él‡~'Ñ:ºIÊqÉ_¦c7åê¦]EõÒeCBY÷®è1Qóe‡Ž¯òB\"FOüBôž‡)×3; x ÁÙŠhD‘§‹MÉ:ŠÕ¾ê:>«tº`a¨°Û†É!cê@QËtã8”kê\åTñVJãªUµÙ¸;ÀV-ejÿ)ˆ\©ÖS7M-=`3ŽH_Wí” É!W^Ü÷]SÙ÷컩&Óï;þÌFæâçwïùäuNöŠn!·å•9#¾ÑPa>ojÍÀ4ý¤R<_XÏ«DüÕ5â¦Ä…}C‰ˆçK„>¢I¯o¨’ÊÝTÚ§V—¡ãØ1A1µ¨/„3•p¢#v\• ƒdÂU¡pUjOá9>Û¥…+ú²?‡½1»~Jƒ…ÿ}¸³Œkza¯pYo„JÜþˆtR4ݳ…•»úв3NMõ´¼ QEÁ—..ùžòÅóGHìšN’Øî(D™=¼Q\ùÒ­q­¥i""H‰nV\ÑÔ‘@.ïC ëÑ•7ˆ–é$¤Ãé­“7:¥âs/£Ñב¤6`îñÁa£†#7]…­u‚Á5H!UŽ¢Bú@¢ tÎæÞ™å r¦8+$&¬ù¸;µÌ™ðUé;Ôž?´nõGHTö9¤ÀT®É€Æ|F£vÿw¨|+¦?P…Å×è¦ë¡å7SSC_y(Z„[Ž },x\uþ,êÒïBÝjF’ä'­·9Õ[ê ¾P@spÙ+ÖÁZÂákÉÿ‡µÌaÍÚ­>›§@’ž hR<ƒ©30=ªtáI#„ÚòT?>˜4p¸Ó-‡FQ0âæ¦ÀŸµPA¥~ŒÚ‡žZ Ï,¥ÚØ%4rMµ;™#PÔaiÖSîÕÀ—s“CsTt¢‘;UÔÑíq_OZS«ÛªíªµToq³ê«Ú-8Û)2ããŸÄQ%Ç“²š9cgÒ¥PÆÄº>7WüG}Df{=a_#O6g–O0q4ý^UnQ Vœ-´N¾ â» >òG„6 È0Îc¡„A³í¥6ó Ùò=¥Ò-!%ͽ 3¤IiRnuéó„ZU‰R^l¥9ø›Ìð‘qÏN˜KÜ@Æ­pª 2^£=ø‚xZãÉ Q¿*W®Ñ4Î0¥©Ðnèó£°YA_¤ÚÅlª©‚ ªÔxJ¬¯ÊÅï‹håãƒ*À/Jý"2Y@ÿ1µ| £z·xõv—¸öÅ/çâÓK~j›;ÇÃWSzô-Ú÷ݺÜõüoÿ¦¹; endstream endobj 274 0 obj << /Type /XObject /Subtype /Image /Width 496 /Height 55 /BitsPerComponent 4 /ColorSpace 589 0 R /Length 1053 /Filter /FlateDecode >> stream H‰ì—ÍŠã8Çõ¢éè˜û2Ÿ}ÛûÌeï}„¿N@¿Æ@öº§mm0„P»Ì¤IÃ\ªôá²ä¤g.qÒñ?¶[¥·~ª*Ù˜5kÖ›V‘W5ö(Ê´æ$³9™(K_,û:{400ßwS4EÙ€½Ú5(ÊÂV8îŠ/ö T°KT6e3!&­5ÒXÞýÞŸçTò&rc±¤*}Ù¨¾ôÜàH Ç ®¸«±‹âÒ~CÜM䎾vÜn%87Ã/>Ñ7æ-æ8å¯õ¨=c~Ûl§4(£ÀehÞˆ¿ª<Á4N®™ûº4s_—®™ûñýôš„»›\//SpŸúŸæ:ùfîI5sÃ#ßî~ÏmÒ†RÖy§´=µÏ‘›ïwÿç6iÃ×y§´=µÏ‘û…ÕÈmRÆtš¹aæföÌ=­†ÜB »Ýî¹ ƒãÜmuÆÜ7Ý^ÂO¹íBj̸¿Â/q·ª:oî=<=í"÷M×í%6¦Ü[U3îݧÐɵ·J)àÜ­ZVnã×GÓ•B$q!%¸µ¹$ý°³»à-CÙ ´–Çn‘p‹ýííoÌßȽãþ¢å÷ŸŸ`À­”^UŒ»U-nâã2==ŒûC¥ÃÜFzþþÊvœ¡»H3¸…p!œú»{×}cùÜBŽpëšs{ÇÝ¢»—«¶çn•}Yáä;/7O4ÐÏCnߘŒATc Âö‘ýÀ‘Û ·q•ú[¼ëžŸ¡çþãcץܛ¶‹·pW–[k¹ÛÅB¯F¸£?¤Ÿ#‘yZÆMý\Wüùp£-"w`O¸}þäþÏ·w=÷Çï#Ü‹¿7æžÛ;ž[©ó;r·ÊbgÜ´êiܼ9·!¿#7„±¹¿ØCôn÷'ÅçÆ{ú»ë^ãÖõ²î¹+jheÏ­`­9÷Rëµ®Gâ\¸8³ÇµÁŠ³Ï¸m·CÜ2ãÎü rnô·¸¹;çÖáäîÀÎUí=ó÷v­,ÎmدÄ9¸?kqn\Üð7 ¸Ã% K×Ã/HÆ`YQü”¿í®Æ¹??<<üsÏòVÌߘàqr‹ƒùÝs›™Å¹CîιûÅz…Û*ñ÷8÷—%çþŸ¡Ý~].7¦xú³1vG6Ù~Ž[“À=¿íçFxn7kiYÖ 7Â5ùœt!cPáúÛZ#ÜÛã®Ú={~WëðÜ ï-)÷Ôʸo­î^ãöª©SKþ~¸?ö¾væï©½Øû¹pü»„ö5U]ðwI¯ëúí5sG›4sÃÌÍ:]"÷ãû^r›´ÑLuÞ)mOí3䆎kÄÕOub:Cî“hæžTÓpóMa"MÁ=ܦÑ$ÜW¨ üäåà endstream endobj 275 0 obj << /Type /XObject /Subtype /Image /Width 26 /Height 26 /BitsPerComponent 8 /ColorSpace 590 0 R /Length 100 /Filter /FlateDecode >> stream H‰¼’Á À0 5‰¿^ŸG)dÿMJš@¡‘Ð{úÆf’*«Á±MÁ`ΠWŠ2™’š'6wç¦ï!,³´-Gƒ‹vkœÄ¼|oâÖ„Ý&Ô#Þ +t¦1 endstream endobj 276 0 obj << /Type /XObject /Subtype /Image /Width 26 /Height 26 /BitsPerComponent 8 /ColorSpace 592 0 R /Length 104 /Filter /FlateDecode >> stream H‰¼’[ À csÿ#7„V7_¥„u¢¢D-£i0†>H¤ð™f»%ÓÉ„U•dJútĻșæCmß'`r¼fTÄN¬€Ž„vÜ9rVÒ:‹—¯ðGÂÝG¼Âí endstream endobj 277 0 obj << /Type /XObject /Subtype /Image /Width 26 /Height 26 /BitsPerComponent 8 /ColorSpace 591 0 R /Length 76 /Filter /FlateDecode >> stream H‰’•Å Bp7Ù7ì@–Î2 P€EâT$)t™œzàº2jjjIL™5’e¨j ƒh2˜€~2n¸"@€¤_¡› endstream endobj 278 0 obj << /Type /XObject /Subtype /Image /Width 26 /Height 26 /BitsPerComponent 8 /ColorSpace 594 0 R /Length 101 /Filter /FlateDecode >> stream H‰Ì’A€0)(…¢EÿÿY‰+œuŽL6, )%¡` |fˆCÓÌ¡©"gšé¸‡¯ -RGc«vDqzuÛÌÙ[Ôš}oߣ~÷M7I2ç.J̃Ìñ`d/µ endstream endobj 279 0 obj << /Type /XObject /Subtype /Image /Width 26 /Height 26 /BitsPerComponent 8 /ColorSpace 593 0 R /Length 138 /Filter /FlateDecode >> stream H‰ÒÕÅ êq€lÝúlì@wpÉ0@¦ ¤®sr ² D¤™{\ ˜—a€ÊèD•0 É€Mg€Ùƒ.âWd‡Y( s`ꩯH1SÊ” ÙÔ“å¬+ÉÀî6 žl '² Ä?ÙõÙÉÎú’(þA ƒê„(Me²q%D€4âæ endstream endobj 280 0 obj << /Type /XObject /Subtype /Image /Width 26 /Height 26 /BitsPerComponent 8 /ColorSpace 591 0 R /Length 134 /Filter /FlateDecode >> stream H‰´’1À E9FÂ1\˜œï–R¬­MÚ/$&ϯ_cKå…$d™+üEÀô’ìBs"Dtƒ!= /OØ_„¡#ÈU:…F6CÔeލ'F-mêI`wŽ÷œÛE1G‹p¥Nš òxÓdeý|¯¯‰”o·•.e:gäœ endstream endobj 281 0 obj << /Type /Page /Parent 678 0 R /Resources 282 0 R /Contents 283 0 R /MediaBox [ 0 0 595 842 ] /CropBox [ 0 0 595 842 ] /Rotate 0 >> endobj 282 0 obj << /ProcSet [ /PDF /Text /ImageC /ImageI ] /Font << /TT2 838 0 R /TT4 840 0 R /TT6 536 0 R >> /XObject << /Im85 284 0 R /Im86 285 0 R >> /ExtGState << /GS1 843 0 R >> /ColorSpace << /Cs38 593 0 R /Cs40 601 0 R >> >> endobj 283 0 obj << /Length 1483 /Filter /FlateDecode >> stream H‰|WÛŽÛ6}÷Wð‘,`®D]ÝÇdÓb ,‚îª}Iú X²­Â–\I^#ùÝî™Ê·6É""9ä gÏ éwÅì®(bªb5[ØEªüq' ì©8±."UìfÏõëÙݯϡZ³ÀA¬ŠålN=˜8Î>é{ÙH?È"ýÞäø~dÑã`2›êe·¯UdS˜ye9ìë¹ C›iÅjico§ÿ`5Ѫ³¡îÕcÙLèrkþ*~#ßø:öø¥ð)ÇÙ½À‘§9©ï-¬áfŠ¿ÉF*6"›‘•âž–-gZùéi ‹yš ºŒ ú…þTõ¨î;„Ûzy Xl¢wð‘Ô&D ­™“lœü÷ØÏC›;5wÖå§‚tÚz§5nj5Œýa9úºR½™ FPÛwý¨ÆNmËaTCù‚ùa,Gö)×µ½Å-L÷½4Klä.ЋÎè}"øhÇD[XEHn²éqDø÷C$ŽÞ/8:¿Äòy  JuèœVO5¢ƒ€à#DÕ‡ª1Î5Ä×xÞòœ²éDdbk(غ(_ȎŦ6±]hõÊͳ™Ó!Ž=F¡>,Y‡x(++õBôdLÎÑìÈ~ùÁ›ý¬Wçpj#A˜jõÒ ‡rÛ|#—ASá/+1+!jAÙ¾®E»l+µ)5t»Z­- mŒ`"|Ǧkakôš_M¸ -V_Õ«]Ù6ûö¤•vŠÀÙh"…2•¬DøPð;Ðwh­ÆfW󘼕Ž4ÏûóÅÂfP¥hŽÍ‹©úeúr½’ÕÖG ¿CË+FÕ´ÈÔ ÉÒï‹D‰ž@.âïnu›â?ŠmêÎ']—BÃëBèì"ûaú&ÑE!ŒN„ˆ''¢ÄÄj{®5ò†î­º•*))˜”c·6Éqý1Õ³x"ê(.Ôrý|’udgßq2亗½˜ uOf–TõŠ…-´!g‡‰»¾%Ç–èæDÑÎ,a}K:¬H#oŠÇ¨s¨¨ -^MV׆4{*¹.÷›Û|Tn‚긩{$,²‰ %=bbIÛU>,$Ÿ™Üó²`I‚rr‘?GÅ“¯ÈN`:²Èø„†7EÉû_'êiÿ5ιKá±æ—îŒÍ7>Tõ: Ï”ãi¾k‡ wöÃ*ÕmÂ¥øÉ³háé¸}e-ÞœŠó‘ËàÑÌHœ7T'‘P’ž|ó:3=uª<‹¸¸ÖDÁÛ…|Â=ÝZ~Ƴ%cZÛs%žü3¤' Îå™Ã‹|Ó‰]Ü _ºi«ÉŽŸ›øé5Äàx98YîœÔ=† ¡Ïè0ÏýÃ¥‰J ‘1¦*LU'מ:$7d•.,à©ÆËvº¦ÅeÆä؈œR ¯†g£l%BùZž¢#'¸R/UßóW}'Í !’ÏžõšØYñNêä–wH&ÅKgÚqKéis¹¡9HýÝÖ¢éá‘ÕÕ²áùòñf¹¤Ù{ê´Ì\~¼£ò_5Ã~[ú»z|4-{|ñfy››smZ·ûŸÇÈ™Âûäéqe§`¢ô"ó3”8fü8{rá|(fÿÌ\:=']ÂÏpyŒã‘’æ¸v–»ÙÝÃ.OðHžý>{W\\*×?>;XIÒó«-ÊOð¾îýÒð5¼>ì >«(ù¼rúõ™%xGr»”L˜–UÜ¢ôG§Äس¨£:žãg(%e¡lÂçšà±ùvŽ8aA<ðc ¿ øu£\ãj;‡œJÈÿÏ7#E endstream endobj 284 0 obj << /Type /XObject /Subtype /Image /Width 26 /Height 26 /BitsPerComponent 8 /ColorSpace 593 0 R /Length 178 /Filter /FlateDecode >> stream H‰´Ò!à `$KN´é QQuv¢j þTƒ éL¹4Tàû×G«F²Ï~÷¹b5{%Œ;—ƒw‹±$QH)J!•Rð׉Ô@o×Nšï'çŒQ¹¤y$çO6! Í‹÷<ÛþG¢”/Z8°ýèìµ([Ðýh}œœù"@«q´äòÎiè4ô WIÖki;š¶’¬G¯´·3[UøáÚ!~&Ùëá endstream endobj 285 0 obj << /Type /XObject /Subtype /Image /Width 551 /Height 461 /BitsPerComponent 8 /ColorSpace 601 0 R /Length 5078 /Filter /FlateDecode >> stream H‰ì׋z›¸@aˆ‘ÝÆxê¸9éû¿éAH Þ6WÉëŸÄ7HJ>ÖlD–ìQžËv³;îžÛíy&û¥ˆEÞwR{Nrîû ÈßÚ ±ªÏh5ÌÈëéR¿¯ó©ßØ=ÜÞfÙ¹‘·3Ä9ͯËÛE”>jöT¶_íÃÝs–y1ÝíÝlÎígÞ~î_C\ô‰sÁäLÂfÜhñ6´ã¦“‰Û§› "äe’ßgr?EüL‚”È$eþ4±k·ñ×Þ‡µIî¯MÜ풹星t¿gý?ó/:¯áô'L 0G&H™@€L @&  Èd2™‡A[Ù.‰q(dÅÖ‡¶db†jÜðVÈÄ “QdbÉ(21Èd™d2ŠL 2E&™Œ"ÃÕ ”~èÙðÖÈÄhjPÍWwÃ{#Ã֠̃7QÈD#£›‰Rá†7G&F'W ™ÔÈĸ›& oŽLŒ»%,™®Õ,_YÂzÈĬL421Èd™d2ŠL 2E&™Œ"ƒLF‘‰A&£ÈÄ “Qdb²Ã2ÉÈÄ)m}d{@&  Èd›ÉÐÝ p(Èed‚;Ù¡ToýL @W¡/2>2Á¬›ÉóÓäh-~¬ØÌÝ4y6“ãéd^œN„’¬i™u%Ç“ž%§¤Ëe¢ÔÓ™ëYrÔƒät⪓²&¥l'âLtÕ ©/9ÍÒ„Re3QªéD˜‰©B_pô‹_¿‚Ï‘“‰R®Q&&½(ÑäŠäWw’òÚ¶™%z˜ü +!“½~§£ñ®9¿¯uÈXŸ,}A ~ìTb>3¡0LR$ÊDå•N'ºs›SgR7âOu—Výig‡Î.ªÝäö˜úb’LTþy>~'ÌTrôÒè å†ÝmVÁªþ°>Y&g¥Îa&:;LÜ –'.;쀨_û˜-Íôð”LvãPä¡¡LŠ S‰&^#íÊÄ?×Á“jÏ|›’þº ƒLv£Êä¸èU&õvócþ0ùÝ7L‚…E[† Nû@&¬MvGgòéë]Âê ÝóÕ®Lú†IpÑi¯=}™(ïzlë|‚íˆ2)úþ¯&Ý‹Nû®oš÷nƦêLt(Íwo&Eßì&þ¹Vm-òµ ™ì‰™&ù§û–gR&îZ¢4¸èŒÜé4›¼Ë삽è4ßOgâ… $¥Y›4óDžIEß0AR„k“^.†Iê„k“P*áÚdбç’#\›Œ 70emÒ8º$jÚÚÄ"‘ÔM]›XGJIÚôµ ÞÀk$o–µ R7amr^í ±µ k“N&å¢Ç‰MMX›„™”:IׄµI‰úïé¤,É%=s­MªLþ”:’ú ‰™km¢3¹èHªL”j>ô;z?Ä^͵6Ñ™üQ—:“?ÿÙÈ$3®MÆ2Qf¸'ïCE2û7çÚd8Õ}RÞ;*Ù¿)k§ÊÄpEE4Ø»uÖ&¶–"ˆÆK;7ßÚä¿b`ŒIš‹Žób&u'U&e5!ÆÖ&Š‹NŒfËD_vªDÊK5QFîtŠöÚãît°{sf¢ª‰bpêSešI•‡r77HÉ¡8|^Τ ŽtéL2ßë™ ]d2™@`ÆLJmÉcÅf^Ϥ{ß[zµ‹³È‘cE/g¢òŠ×IÓG醊«£ÍĦ¥”kLy¯±[¯f¢òÏóùó³=¿Áåf eTûÎ{Æ~½žÉY©ó|™¨ús3V˜.»3)“¢Í¤ôfRôgbëiŸ°#S.:E•ÉY+‚aRª¡LzÖ&E;cÈd¿^_Â~~-MÔà¶ÞÚ ¡ÍÄÄÚv^ΤèœÌ`œHÖ&ýÓ¤`’ìÑë™áÿòá8Ñ/eÂEg—fˤ³:©\ïGTAçN§àNg¿fÌÄÃiNÌ|™ØûÅ 4A2Áû ÌœÉy‘ƒÄÖ΄ÕJ–Îäîb´x&vØL.ÎôCÇzVž&®2‰ÊÓDé'óžLâÄ4ÀòÓ¤ž(d·¹3qÌ{¦IVY›0MbÇÚdµ3q¦6Öµr&ˆÓÒ™8s0¶°p&H™@`ÉLÎOšñϼΤ]›I̖ΤI€L¢¶x&vØL.™Ädåiâê “¨¬1M”~"“˜1M °ü4©' ™ÄmîLüsÎ4IÆ*k¦IìX›@€L °v&™ÄdåLFÍøga^KgâIÌÎä)3þY˜™@`ÉLŒ…3i×&s0¶°t&w/£Å3±ƒÄfrq¦:Ö³ò4quITÖ˜&J?™÷d'¦ –Ÿ&õD!“¸Í‰cÞ3MÒ°ÊÚ„i;Ö& ¬‰3í°±®•3Aœ–Îę뀱……3AÈdÖ&àN‹gb‰ÍäâL?t¬gåiâê “¨¬1M”~2ïÉ$NL,?Mê‰B&q›;Ǽgš¤a•µ Ó$v¬M @&X;gÚac]+g‚8-‰3×c g‚4 –ÌDuÌxØX× ™\¿®72‰Ûâ™|ÝŠâF&‘[aš”Õ‹Ki2¹8óý XÞ™ܪ!“ˆÍœI Êäú]­M®•¯êªSI¬–Íäö¥ÊkY© 2‰×ÂÓD×òzÕ•üåN'bKg¢¾õ(©‡I‰3Óñc‹gr+ë‹Nq«3AœÏÄÖqSd±*]ƒgöLÔMÝÚ^£*“î³e‚dèL–ºè d2™@€L `2in]ɽì4q• z4¦2A·6±• z°„…™@€L @&¨2Ñ5x‚L:ÛËÏ$Ûºbì—ËdëÁž¹L€1a&J¹Æ&Ç„Ý 2QyžÛ—yMßñýÞß5?U§aß4•èå-ßïü­y™˜J¼Nš–¶î™ïÍç‰?MÚ…­y›5¶î™ï­ç w: ØLÀ 6“­sÅ~d‚ÇÈdžLrmÃCÂþôN“ ŠÁp&z äf´lulØ “šÉÃFR?}à­u3±í¸)b3Á[Ëļ Œe¢Ç‰É…µÉ»Êð Èd2™@€L @&  F3ÉóüñoÈí76–Ƀì&™$îQ&™í ž+îA¿mFÉ$·y;"½™|Ôl&¦‚þ³Ý¾´7ÏHÃp&Mw™dvl™´¦Ù[´¨AD™ôÏûLòÎ4A*fâ­Hr75ÚuIî¦[›´;RJ*g2ˆÞ™@`B&xd2™@`4“â·B&b§Ïìâ™ÌñO`KóœC2I™@€L àŸÃ±5îøú—Ld2²ÆÛF&É 3Þal™$ïÙL”þ™$®//„n&êôsú©¾Ìf2y÷™4„Ãnûg©£ÊÈä}Üe¢Ú÷þÄ0O?ÿ~´?Ïg¢š_©Âßôgb&É]&Õ0©+©†Éë™´Èd¿”ê_…Ú×öl¶'ÕÏäÇ^r~¦d¢ÌAøÕgö {T2I³kdâ­L¦e¢î^©ŒLv¦ïFƽVÍõsdâ“ç3iþÙvy“)*Ù¯’g.:Á0™á¢C&;×VòL&þ0É&ßét/?d²gÏL“Æqê4¹_›´{`º™4×·¢ôïtªêDŽÙÄib¿w§“‘Éžõfb gòÂ4yŒLöë.·p±Ï™œfÏ„Jvì>“æÞ5ü0Üf7Ï;M°_}™ôí0¶L’G& ™d‡ÅÃmd’¼à½o#“ÔÍsÉ$qd52é]Ö *Ëg2°¬AT–Ϩ‘ F2œÁL€™@€L @&  Èd2™@€L 0’IÞ>æ[öƒL 0vÑÑqäZ¦ÿ«¿èå=õfòQ3™Ôß6“úáïe8Û £&õdÁ{‘e’‡Óïæq&v˜¸¡’1MÞ €L @& üŸý²ÑŽ•U‚h\±ßÿ•ï‰#Pý–É$“|·öJÆ¡i`ª4ÒD,5yâýýR“]ˆ÷]šˆKÞ¤‰¸F»‰ 4±F ;þ<ŸÇf…¹Ãìr.§v£Û*Èy½,ŸÔŸ'‚ÝÜÈ®Š¹êì^è M|"Ôœ„ËFTÊáîi²?O“[ݲÅ?­ÉS¹£É±||ô“ßZÖyd:~|gU4jqv<;Ú´ù|t/;›¤ Ò#^˜!'´+<m‹ËÖú°)Ãt(“hqÒ/G~L5ñ¹îU/Õ„T¯æ³júiØÝäèÞÐl ?ƒó÷üdjr^qÜÕšŒ úL“”á\L5‰ÉÝÔd qdUk’j®4iYùISô"MÜfñ]Y1,¼4 p¥‰¿¼÷`¥&«É¶Y\èÀg5‹²ÔdL3žšÀB^¥ ӌĂWi2ÕÍŒaí13~*p_ÌYü8¯ÐD–ü9^²›ˆ¿†4ÒDHA M4¤&ü;¬Ñg¶œk_U2:QW“\Œ-zLÁ­..ZÎÂ.gn¬Ò:^楚Ø2ò­A·¼&÷;*]÷xS“yØu?v]åV¼£Éé©¢»–œg© ÎÚ–1lw{H/ ±wè³w»<'ô<9û6×GÎ÷ÌÄ\ÜÜWlÒC f=žÁGv-Ì,>¶Å…~« }¨a„m÷ jãkšœ³Ü÷S,g¾v,‡LP‹±÷Ðv¯ºœŸŒ>Š|‹‚=õ•šõ=Vs5O…š@ ¯IÕ¦šF?&œCëÿ®6§Iî¤ìvwß’&IŽ1R7U¥&eÓ“4ýL¾¡¸©XÏI“õlra›)~#·;©ÌVÇö¶b횘™•8îé«×íú%ßT»ð=Mz˜¯ËÄ0IH np®ÉÕzÆ9MªVÓ ]—wÖd–J1› M°ö½Ý$L{ìÂw gqùa„kMÜ<ÜÑÄÅ/GP,¡Fhr¥Iì‘Ó¤j5­Ð5Á¬à;‘JœÍ¹&n>ž{Óñ]/V6®Lòë"tQ©ÌrïHÒe\&o!àe!^¬nÓVó°8?~Ù“&嘪ñÇ&®ƒ~…{ÓÉ»ñ^”œµÎ”­wÔŸ˜["Å;OŠ1‹7Z É”ù­ÆÜ³zô‡7|¡¢ztÏcWo:ë°½Bœ¯IzÓñ+è*…‚NFF“ÿGìºÊEùOÉAšÔ|}r݃ú ‘&â§&‚@ši"¤‰ &‚àž&åËùÆeLÍTõ²;ýÍ"ŠOð„Ý„×ä•,ŸháB;~Òö±:ÇÿñmúâY,lm¬•¹Ýˆ7>Îr ¡R‹^/–@ŸÓš‚…ѤMv¿ø‚sñRa;³êÛå  ÓÔÂÊ’ð­®)X¨ÝäÁR[FAX‹fíVºPE…ºÃiŸ0AÂjbÖ7;?aÇØû%, g¬&®™ÅP°9Äð{l9×Ät×¹© Ìtüv“½X§Û»IlâºO¹Ô®4d¯Izˆ(—»o x(—ìêÙ Ô……©‹UMÁÂßt`ÿßÝa,^zÓé¿ú~;èkU¾éô·›± )Þ8v·ø˜d‘r]S0š| b@¯ïB<‰ïЄx>U¾m%õ”úD¾k7ÿ)¤‰ &‚@ši"¤‰ &‚@ši"¤‰ &‚@ši"¤‰ &‚@ši"¤‰ &‚@ši"¤‰ &‚@ši"¤‰ &‚@ši"¤‰ &‚@š‚kMÞÞ…¸ÒäíÕ"‹_Á•&BHA°ÐDˆÎT!<ÒDHA M4ÒDHA M4ÒDHA M4ÒDHA MÁB“mÛŽf«ëmÛdTó×þ]¥â‹×2×dƒÿK&•¢g[qYü¦šlíóßïý±Úx8 ·ó¼í î"ÕÞ`Ù\>¾øMšlýž‡S (vAÐ%ذ‹|Yü˜Ý=œ-£¬R)|®4‰Å/ƒÖ¤Ý ¥°•l£É¨Oµ•&á¡Wü xMÆÙhRÞtÞ’&þ¦ãúÈ»‰øuo:å³ Ô¸ÚMR5ÝtþsMú«Mý¦Ó?¶ÓÍ]ÜZˆ­}Ϫ]ƒB½éüJšÑ&‚@ši"¤‰ &‚@ši"¤‰ &‚@š‚¤‰A!j¤‰ šìBLéš±Bš‚C!.xµ§âoð¿6zø” endstream endobj 286 0 obj << /Type /Page /Parent 678 0 R /Resources 289 0 R /Contents 290 0 R /Annots [ 287 0 R 288 0 R ] /MediaBox [ 0 0 595 842 ] /CropBox [ 0 0 595 842 ] /Rotate 0 >> endobj 287 0 obj << /Dest [ 311 0 R /FitB ] /Type /Annot /Subtype /Link /Rect [ 71 716 117 730 ] /C [ 0 0 0 ] /Border [ 0 0 1 ] /H /I >> endobj 288 0 obj << /Dest [ 401 0 R /FitB ] /Type /Annot /Subtype /Link /Rect [ 186 633 204 647 ] /C [ 0 0 0 ] /Border [ 0 0 1 ] /H /I >> endobj 289 0 obj << /ProcSet [ /PDF /Text /ImageC /ImageI ] /Font << /TT2 838 0 R /TT4 840 0 R /TT6 536 0 R >> /XObject << /Im87 291 0 R /Im88 292 0 R /Im89 293 0 R /Im90 294 0 R /Im91 295 0 R /Im92 296 0 R /Im93 297 0 R /Im94 298 0 R /Im95 299 0 R /Im96 300 0 R /Im97 301 0 R /Im98 302 0 R /Im99 303 0 R /Im100 304 0 R >> /ExtGState << /GS1 843 0 R >> /ColorSpace << /Cs41 603 0 R /Cs42 604 0 R /Cs43 605 0 R /Cs44 606 0 R /Cs45 607 0 R /Cs46 608 0 R /Cs47 609 0 R >> >> endobj 290 0 obj << /Length 2966 /Filter /FlateDecode >> stream H‰„WÛrÛ8}×Wàœ²¼Ï›o3ë­rœM˜ìVÅû@KÅ]ŠÔT4™ß°?x»€,Z„¶T%‚h »OßyUÎ>”eÌBV®f…_¤,€-²À/‹_AÄÊÍ, Zÿ<ûðû—=«YàAÌÊÅlŽ+`±Ÿ}ç7^äGü΃½ˆ_{9ü?ÐÖ½ò2?å‹n+Yä§~àÍÃ(Ë?Ÿ{aègœE ›ÃnƒlÁ¿Ò5}KzÂyÏî«vç…¯ïßåßg¡ ࡵÍR¸˜kuI© Cý?¸BýʵdÈaè¥dU³¯P _ðŸ^X¸yè'œŽ,ºVÕjPôÒ­èQ±¾ëÖvKÉšê N ¹UCÞÈ%Û×Ú ãËÃ'vÝTJ±¶ÚH×qW ýn1ìzožáµ%¡È VÞ¥c­´q…J÷rÛõ{äÒglógx‚hþâÍS0Ï•‡ÿ•ª¬ôæ,òcþ'éóÁ› Ød_>¿>z¬j—¨O5°FVj`þcÕrYu×V aS>cd©¹øªîáÉCÚ…^Ò¾üÅø¿ÐZGW¨õËßdµ„³!˜Wö¯æ¸n£µô£Cƒ|¯Ø0Ú`?jý®vö†ÙøË›çð„cc.- q…Dò&ža[#¾òð¿FŒ´¹3Ü«ž-;s|±3|%iÍ= `}ŒJo†­V}Õõæz5صڠ\ɱñc¼ Œñn|¡žñÅœöú—Ϭ„øÅ( ù+«E&íPÕ­¡õ6ðZ ¡Év@Û] "€€ÎfuYVÌ8ær¡ÜOŒU6©¥W¨ò¶— xƒº—MÃ:äNêœAl=ÈbUo€,Öu³Ôg5Ø0®áÊ«o3Dø&È˃TË»­km•ºÕ9gÍ’ú9g‡ôEνÙżU?¨_ÙeËj8f"³^‚ŠõŠ@§tŒ®p¯}öðMûo°™ñÈTÍNBN销MôŒ•lð‘ þ7ÈkZ×[ö„[Ãÿõý©$¶Æ˜[ëÌ“èôV.0ä(}—&éåÆ&‡ã7«ÐÝ7)§lk#ÓR°¼Z[€6ç!¤÷kiõ³•â½¾FS:ו)EGŒÖzOI£&ÙÁ˜áXx7ÎãCÈá mú墯xÏ!̪¦¡¨ŽuTC4)Ck)¼rÇ‚†ùS¬C£ùÝ n½ËÝQs 2ÛÜlG^uMÓíkÊ4`¡Ët5êdO xcÝA›…eÓéf255é›Ö[Ê•BìŽK[%n0Œ(Äþúáº2”à %¼G4?ÌÞÃ# b“áôèM÷ë“JˆIí¶Ø´Á:Oèdp1@ (ؽlL‘« ô¬ôP8:Áx—<œGîÎMÚ 0° =°€$Fó¦Âœ}Ì@†KTæ ˜IŒ¾‘åÊŸ[]~nËYÈj6Xòr–d™…¬˜³9ý÷r¶ú¿Thµ©¥ÂÀ˜Ž¨) HwS(±¥†Ø'Ä1=Bè¼}žz¤ulˆÀ'jøžÿÆvPÖ+! T;‰ ô¥`õÅföán“g즛ýcvuŠ „û†+v㊊ÜtrdÆIŸ ð—÷'îÁ©ÔcšjqLSÝ8²xT’38²üP¨gÆõø¤à÷Ÿôó MÕ!Î@ Ì>¥‡#Ë{ˆQ!ÎÔÕ@tPÝ“xTÒ3“|Tt#‡ñëž&¹œ_Ò˜óß©ê姸2q¦L8¨×4u„+ij¸ geG©•Áå‡21?öÝ?qŽ.øå·Ûß>cgÊ d¼ƒ”ˆ3ÅÂAµ¦©nH¸éÌ`Á¼”'ƒÁwŒ¿ôÐe5(µã(ç.ª5MuÆŸ(’Q©83*Æ¥"5õü?ûR '€ôÜç4Mµ€¦©n@Y¢g2 ( ÎÌ"+Eƒ†Bñ±„D* 3ÑÔó·ŸßáE4Y †—CªœL³N*M؆ê±]r ÕÁYOà†êÁ¼-uš÷yªþ01Ÿ’…õ-D SÉx@ˆã÷%NqømYB3Íx \óä¥ðáÚx0sÉÂ_ÙË7?a+½µ#²ô ­9Óê‹Û#ŠòrþJ}‹‡, ÐP‹ó£ÄÛ§Ò#‹½G/€•jXe+oð gÌ j¨¡&kT 14+Äw×b ˆ¸’ýÀ®;ó6x0ÇpißØÝ€¥v¼y¨6˜ˆQ¼}ûAøfÃ7?H 2#1ÂY´c8«Ô-‰¬X+÷ _tí ÛՃܰº:6¬%[v‹Ý·‡^J¦¨¢"-¼‘ ä@·¹êvýêtM~ôXÛ-¥¦¯ê^Ááv‰\[#±©ÿ%Äœ6±jÇZí¾®Pí®%uúúÙ+À£k L³évJ²§Ý0t­ÏØ%ÛvÛÝ–Ê;-¤Úne…j¥¼‡H¹b  ÐðEsó570Lð(¥þƒþ¾f¡ÿËu­ôÊ0Úf˜R´P»'‚Uþ2öB˜[/ EŽx¹’M·½Ð/¨hÁ¯L¼ÒË ´Žx×ËW2ßËåj0”ž(¯l)­_dø¾~ª[‘Àˆ“í¶ª‡ Ù­èÝåù‘êah=+T½—MElPáAG!GN»¾ÇP…ül‡†æ’’0Ä>Δ´;7rÉ0Úi“à}ëe\[|Xa¼GÏQ1V-—´š²g‹uÝ,)Î.ØËÔ‚Ë•fÖöV£Wíßc|‘IWˆ Lwжù»jÂuP‘ñÔÿÈ®‚݆Aú+“ËM£j÷]§JÛµÚ$ M*H7íï÷ìg²T½$€±ÁæùÂ9:Ñ ÐB8D|LŽÂçÜ25 ˜pî‡ÙT‚vÀ†ôëª,#Ëõ¶JnEU n#ÁÕ…¡”i­:0R¶÷—‘­yx„ã~%Ë.¬‘y‚€®ù\êÝe¾P¾`'ÉÎöšäûŠXÈc¸¹År žJRÝzK Aí©ZÖ$Tm&m,`Šoï–wý“¥"ÐÙÙ)Ë´¨ ÒB*Øêi_ õRÜÝ"o¶Wz{œ¢Aã·ÞÉåu0×ÒQ_µ¯ž¹Ÿ1PlÁ¤,á Li{;]ާÔÛ§Z§mŽ$ÆW­{qdÜE*Þ7ŠI*^·8j^Üç‡p4g^©]DÌœ]Ù½Ùù_,†¼ØÆä©fêQ Þj¹&4ò”æÑÛS[k!w—q„Zš§Î¨É+Y¥Î sb5o•Y* ìDþ@i2ˆ—Ûן»Å]Ô endstream endobj 291 0 obj << /Type /XObject /Subtype /Image /Width 22 /Height 22 /BitsPerComponent 8 /ColorSpace 603 0 R /Length 46 /Filter /FlateDecode >> stream H‰ru¥%`€Q „UF¬ZE”Z°zâÍ%V-Å¢XC‡ú ÀT¡q¿ endstream endobj 292 0 obj << /Type /XObject /Subtype /Image /Width 22 /Height 22 /BitsPerComponent 8 /ColorSpace 604 0 R /Length 59 /Filter /FlateDecode >> stream H‰rv$€ˆœ¡\,!* E!l A$­¨jP%a¢ hn`A]ã úÙvB endstream endobj 293 0 obj << /Type /XObject /Subtype /Image /Width 22 /Height 22 /BitsPerComponent 8 /ColorSpace 605 0 R /Length 88 /Filter /FlateDecode >> stream H‰¬ !C­¹ëÿÿøÊºŠ¡>TLä†Rjl¦ª“fsnÞ„%Yëî•^Óéïèå¹W¼½Ët^ÆEíÇ,×ãÒò?ø 0V h endstream endobj 294 0 obj << /Type /XObject /Subtype /Image /Width 16 /Height 16 /BitsPerComponent 8 /ColorSpace 606 0 R /Length 60 /Filter /FlateDecode >> stream H‰„ŽÉ0—þ›Îéü_;(.‰Î2mžC²/¬cÊÁW¯L²Ü?‘Q•ù¯¿ýÿÓ`JM¦ endstream endobj 295 0 obj << /Type /XObject /Subtype /Image /Width 16 /Height 16 /BitsPerComponent 8 /ColorSpace 604 0 R /Length 55 /Filter /FlateDecode >> stream H‰b`@ÎÎ è|g$€ƒÏà Q 僙Îp>Œ‰¤ƒÏàŒÁgÀi^>šû €=-‹ endstream endobj 296 0 obj << /Type /XObject /Subtype /Image /Width 16 /Height 16 /BitsPerComponent 8 /ColorSpace 604 0 R /Length 62 /Filter /FlateDecode >> stream H‰b`@ÎÎ è|g$ãƒeà| ‡Á,Â€Š ”f€€ÌwFÓŒª¢§ý¨îCs?!`¶3*g endstream endobj 297 0 obj << /Type /XObject /Subtype /Image /Width 14 /Height 7 /BitsPerComponent 8 /ColorSpace 604 0 R /Length 38 /Filter /FlateDecode >> stream H‰b```p†ag0` B‘ƒ(€Ê ªñ€–¦Á endstream endobj 298 0 obj << /Type /XObject /Subtype /Image /Width 16 /Height 16 /BitsPerComponent 8 /ColorSpace 607 0 R /Length 63 /Filter /FlateDecode >> stream H‰\ŽÁ 0aÿ¥µ€#À¾H ÖSê1Ò÷LžÎ#¹9€ìËăÖr‰ƒ;d ·¹ž47X endstream endobj 299 0 obj << /Type /XObject /Subtype /Image /Width 16 /Height 16 /BitsPerComponent 8 /ColorSpace 607 0 R /Length 65 /Filter /FlateDecode >> stream H‰|I 0ÿºE\’Cp‰B¢ IdÂf =¨øò›¤m·ÕP-8Çy‰Î=̲í§Ž$DC endstream endobj 300 0 obj << /Type /XObject /Subtype /Image /Width 16 /Height 16 /BitsPerComponent 8 /ColorSpace 608 0 R /Length 106 /Filter /FlateDecode >> stream H‰lOÁ€0‘fÿÿÃ9[­Cœ<ªÙ/ààfÎò«+ÌÝ=ëív`‰–YU&..¯)ƒC§’ðNHPYÍ‘åGÁÛ@7A…*Ñþ€€IÇÚ)§øÊs@ÿ½rL|/ Ýì`ÉLÉ endstream endobj 301 0 obj << /Type /XObject /Subtype /Image /Width 16 /Height 11 /BitsPerComponent 8 /ColorSpace 609 0 R /Length 45 /Filter /FlateDecode >> stream H‰rvgT€Ág@•d`€‹1„€’`(@|Bà#@€׈&z endstream endobj 302 0 obj << /Type /XObject /Subtype /Image /Width 16 /Height 11 /BitsPerComponent 8 /ColorSpace 609 0 R /Length 35 /Filter /FlateDecode >> stream H‰rf@Ψ€>²V>bãc˜‡Ï=ÎÎ6K u endstream endobj 303 0 obj << /Type /XObject /Subtype /Image /Width 16 /Height 16 /BitsPerComponent 8 /ColorSpace 609 0 R /Length 67 /Filter /FlateDecode >> stream H‰rvvvfg82™˜˜¸ >LL1±°À`|8Â+ÀÎG2Š•‹Á‡ 0àR‡î~’@€R3` endstream endobj 304 0 obj << /Type /XObject /Subtype /Image /Width 16 /Height 16 /BitsPerComponent 8 /ColorSpace 604 0 R /Length 76 /Filter /FlateDecode >> stream H‰ŒŽÁ »H?LáŸýwR5Ô—§i R"I^`Óv,É–…ûT,uë¬G/Žîèûˆ§_þiÐG‡¨”ÁOÆS€¾6º endstream endobj 305 0 obj << /Type /Page /Parent 678 0 R /Resources 307 0 R /Contents 308 0 R /Annots [ 306 0 R ] /MediaBox [ 0 0 595 842 ] /CropBox [ 0 0 595 842 ] /Rotate 0 >> endobj 306 0 obj << /Dest [ 269 0 R /FitB ] /Type /Annot /Subtype /Link /Rect [ 310 458 356 472 ] /C [ 0 0 0 ] /Border [ 0 0 1 ] /H /I >> endobj 307 0 obj << /ProcSet [ /PDF /Text /ImageC /ImageI ] /Font << /TT2 838 0 R /TT4 840 0 R /TT6 536 0 R >> /XObject << /Im101 309 0 R /Im102 310 0 R >> /ExtGState << /GS1 843 0 R >> /ColorSpace << /Cs48 617 0 R /Cs49 618 0 R >> >> endobj 308 0 obj << /Length 2460 /Filter /FlateDecode >> stream H‰œWÛ’ÛÆ}çWÌã eB€A¿Ù»rJ©²R)QÎC6X`¸„…[P²¾c÷ƒsú^ÖŒ•r±Š˜KOO_O÷ü¸[¼ÙíVÆ™Ý~± ·©‰ðãÁ& ·±Y­Ã8гkï O‹7ýàÌÓ¸ˆÂ(Z™]±XÒ,¾,þeïƒ$Lì»k‰½ 2üÿ—~ƒM˜Ú¢ë½IÂ4Œ‚¥K6øÛeà\¸±&IÍ«é wÇö#“S>ˆCgósÞÙ¼þ½ûÉ‹ì. W™Ûšõ6ÜÄñÖìîY¼xMòÑ(Z‹|?UOǤߛÀÅöùm†™-«Éìx4xÿb~†›pk#\Ž+é2³ðÓ¤.ÆGlÈb¾Œî±÷aŒŸ ã`÷+‰™Š˜ ¤’Žh­ÑíY‹fämf«ð¸Rlëk?ys×µÁr Y§ÀY? ÙåÝ,·{™Á€ Ì û©¡ÔÉËU¸IÌÒe§{œ^ä²ù¦ú|Žû¡kx0¼~aïe>Ny[Â^ÐÕæpSj‡’7Ú®ô£y°#óÇî³ è"ëó"Xn•=¢1Ukˆù4xYöÌÅ(‘ðlÍ£7¥¯)hN$“/Íc°Œé꯬gd–.të³f³û5:GX°˜ªö)ØZæù^™B¡ ®ßC9;±…Ú$UßõÇÞ4¾=†¯B."+&ñé®[îOþ¤ûÙûÉ)·hHâðˆQgkùü?k¤‰¹ VØvIl+kB…øpØQ²wä»yæ!ôÌå4,ÍÍ=³¬Î>UB’3I]5ª§VË?16ÿJ#Ìe©¨²;ø€rn¦O×N2oÿN¦Òy3š/‡Jˆ& ¹ŸNÉÊñ"o"žKVÊF6K‹»¿T¸È™²Râj’•Zhn󒉀-³€áÁDºüB~Y$c§ö’t”IíÙšÅÌ“¯û½´{ÖVtîx½‘ Dæíx×€w±ÓˆÞIZÁÛœ•¿Tþ ‰µµ/¡1GÏQ.yÙNHm—Á¥_G$æùCÅÉ‘À´Ð¾˜nÐÄùØ"d•ÓßÙ`|ðc¯+”lŸ)Ábâ1seL¹H.½ÂóñöÈ?°~»¿hnmU¯H¯¼ï}>Œœÿ€câ½¥ ‡ÔUñ©jÙ®[ˆÎ;táP=&ÓtGèýxœ¦®…Šflòº6ÝozÈ¥°$ö¼Žª¶¬Š|ÒÙ¾Sz5 ›ÚÙü,þeôG›9ú¿ô0¿Œ7I$€Ì|©H\?òuÀžâ¹Öõ¯AÌAõdɃ}šs y<åeTk.ÊQ™|’&¿ò“ÿC 23A7\LÚn’Áƒ½Hꦟأg¡i: ‘ûnÏ»æ³P×G=ýŠ®§ uV6G#Äm©3 ÔËv-Ÿ‚ÿ9tçKd©cÅš/ J^ò"©‘ó¢ÿ¤ÒÏ7zõͲÏ fkƒ‰n®!€A]#ô¢Á^¿¾&ÿ“G‡OP™ÌHU„·‹IJNùH4Ox(dÖä¦ÏåìpMW@ìÔ•K>Pï©G=W$Ù0zj¾yžy¶Òô¾&˜}Ï 512­¤G¹V¦og%õp'‡‡STˆüZÏâŽZt®7ámí. #u±yË-tÌ…5“ˆ-}ïQÁĤ &\n¯Züϼ›ó)žìq ñ„ëöˆhàQȘûç–ñ¢Ñ’ê9úAÐô]K{Z1ãE¬üy‘.|‰G"›+}O%zÄ›`ä^cÃŒB\=Ò«À×Ý—›8¨æRëf©¢r[&+,7Vã4J&QKzCDË|{©*È+;d-Kï"ží›d‹0>µx]?æú†~¥aŽí÷²vîϸÿŒ«î¨éÏ ]¡rôÌZ}ðž¤inwÑFÒˆ ¤(öÝUˆ¨sixáàsG´±Ã}Yí÷äõ À„H?+UKg÷Æs#—°{ñ°<·`Ýãè‡ëcŒa%5cLY©JÚuEÜkYn&O-õ;œ}¹®#ß~Í¡¾ÿÉלäivêC4òîºVÚ™Â÷2˜Ìûœ£™«•“ÔzH+V ÑíêõúÅuê˜Ó­;úŠ‹  Me¿¨ ‹7ßË“œ7š‹óš ½#dM³=ÿW¬½¸;™%f‘MHÝð¢™È\P#iGzÕ±À"åtçþžë'_$²v|¾f·ÄoUh•„63.«É nGá# É¿ì·=^Ü›®T½ºrÚÚs¡JÁ©Pñ ÔµpIÞê­òvKù}‡BÕµòXËä±¶"q‹­ä#EÌJž<ïõ:ŠÛÍù˜hQš‹[H•ò0ËVtªèc§/Z¯ËÂZMœÑˆLüC‰èCîç5Û¢|é÷U«vŒX3F$-£XŒBy£«RïÅ–ð˜—ÍbRŒU„Øhè­>VkýüZĉ‚ÑèYKWÿ›^>zuž8û—k H')Ì3Šž²DJ}³ù ‘ÐK1t¢œ‰ôÑä¨M9a4¿ræÒb¬š¾Úž™ÀÖì«Ú¿ÜÍw!^º/FðzŽHx?˜ª½záž_7¢ŽäW&™Ù¾¯«‚G2gÛ¡dRɳu)´(‚êú·»ÅñØ”A#³Š j]ŠfŸˆÒ í}Ñ,Þ¼k®¼ïÿXü¸»ßm¸•£<@Û¦&CÃÓ{£a™Wç·‚Ó·ÂO×ѧc"Ho’ ­‹íó ÓòáuÊÏ£÷¼œsVÖ$‘¶[kêù˜HXN@%íðr¡_ºb BÀ¥@v“¦ EyrÒ,Íþ;d#¨Ã endstream endobj 309 0 obj << /Type /XObject /Subtype /Image /Width 363 /Height 57 /BitsPerComponent 8 /ColorSpace 617 0 R /Length 664 /Filter /FlateDecode >> stream H‰ì—z« F©kjûþ/|§H l½Ý¾MÑ ]¿Ñ9Æp;ûø;@õ0 zJõ4MûGLü :‘ªw$ri¹PýRÕŽ]®ù‹eÓG~S=ñ.1ÔYUßVXõfÒ^luòn¿¾2Qµ—˜©v_¥:ÝÏnjòSµå\õ”¤ÔÈT‹=…ôÆ>=…Ô‡^'Âv\uˆüP=ŒÕàw@õ0 zP= ¥ú Ø ú,ÜýÕï8åçñ/PÝTª‡!½Ôž›õg*T7 TWž›µT7¡U—'ÔjPÝD¯jbôPÝ€¥ZÈLUÓc~Ìß?[ª{ÈU{É:¹\{2ô"Õ}dª)nËän«ù9/<ç}ÕòÎHN¹,I}’,Š­üxQ&þ”žƒNÅVÍßCLØjÏUõê}Õa!!1ØW]ì9—òLd?ÙxÌ_!~©zæö1÷¨&‘? ×0›d‘©-…¾&OÄs(D<œVî8eº ÚOuJµèÔíª)[åªãŠôVÜÇf'¢t¤vœˆõ‚Æ>!”Bµ u[¯NWT«Qéb¸Ò5K.XzÐiÈVGQ¡nO5Å›½¤:Å•þÕò¶êP-CíºˆÿØ¢j—îøÕ‚žT{^]©ÎVE‘bô.Õ'÷j…ù²GânOþ[\5¿\CªC׫ä ÄéîB¾°%Õ[Bü­N$N¦v\9ÕÉ _PÝê‹peÕážÓ/Þ©êÇ Úüõ> stream H‰ì׉‚£ `kfÔ:Ý÷ÝUN©‚xäŸ]‹Ç´úML±i¦¼NɰoÙ°oÙ°oÙØ¾íœ*grËÀºÞ’å’Ì¡çu“Àï¬`[,cdÕ¾òo€ cŽüv¯W×i£3|A.@¯‘W ü¾^ù|aÙ. ™ëYú6Ú·¥‰ú6~_É®_ž¹?4“ïkNc”o !_OÿmtU³/ t]¨ýBðûmÙk j_¡Î_xK,£€Sú¯¿~®]ßôWîÙîËýcÝÄfn¼ÏªÿеQ/xþ@bû’°O†ØU$uΈÃáœ9/cåËÔ:é ÅöÕ™}sÄñUvì›%®¯,]é«çÄì»%kõ‹¬ì»)Þú…ù…}s„ë·l<õ»Ô0ûæ‰Åõ›=þþëÔïoÞÔºÚã“Ø󊰯ëÛg ûÚÏì»1k¾/®ß]q|1ì›#¶o ì»1ì[6‰Ïì»1¶¯î¿Æf¿ïr]÷ŒØ×8ƒ%_‹’}¸¾²t¥otþ ¸uŒ#½`_3výþˆ—_ÀgľF–ú…ùE¬³ï¾dª_ñE籯Qº°¡~£§ûbÄú÷õ =÷‡püý7µ~±Xó‡žç2»úïÖ°/ûfʪoìù‚}W³æ+þãøbŒÍì»1¶o ì»1©¾wMYÝtß.gÎS¿‡û†úofßœÝfOŽ÷uì›×W–®5ÿeß\¾æ@=¿±o.ߥ÷BНèÓd5®ªw?Ú×Ä} ÕU_Üÿhßå'±~åB”±5rÀu­?É£|câ+I­x|!â @†à9À>r卨èk­ƒœÓóøz¥#û7ëÒ_½Dÿ•Φoçóõ‡é¢Õ¿ùúÉ’nÇxöˆÕ$v]ùñU«¤ NzøŠ¯2îQL•›Þº~Í=ÉÀ€Àõ}#ÏÁþðÅQ¤~|û/Ùv_™øüמ?Ø37;I¾–/nÈáÛ×òŬûnNbýÒÒ¥2øªÑá¾Tñý¶ÿ¦ûâè±¾zR ëÕ˜?•LmS&Oô­’õß*9Íü!ë‡>ÚW–®5ÿÍ*òh_s žßØ7—ïÒ{}KùšöÍí»üpýæòÅ(߯°ïN_kä 8ÅWi¬Ç®…>•æòÙ›S÷_òðÚ÷ë¦z?û~ç»”±¨ewI¼ªòri©ïy¾P¾ÂR½¨!®ëÃÕZøÝ¼Ûa¥ñÈãÖï rh¯Î¤²¯L´ÿ–öì\ÿõø±ÇûbR|{©)„íúú ½þZOþôStç¡Çª3Ö½ÊéMöGé39Ø7ÕþÐ÷ßpÕ.zþ§ßSü‚ñ)øþ`5&ë&²ïç£ðN*œ\¾)ýGÁwÓ¥§KÌïk¿8›bí¢–/XYõ5nF{¾G£¾æ}nvyW_ïÜÅ9q<“ ¾Ã{S|7'æküyÔv|õ®»ÇFô~”:“Ã}ßcÓŒÕ}­þÛÛŠûú/9“Ã}ÚiðÓ ßØü·ˆooßà†¯î?žnDûJ´?Ð39Øwœ\gZø„¯Øs€ï7I²KÉñõÛÂç3-[hGö-âÛ¾§&ܶŸ×o¶ï;¶ï¡ý×~Æá;|1Â÷ý7|†±ýL=˜}sgžû~¦þ;LyO ‚}sûŽoh‡vÊ´hÊùÞ-ɾÓwÚÐÃÌûWpþÐ%yê÷_øÌÅ»”o¹ç‹Ú¬˜<×õ•ïØ.ý¡_ü yßð¡ª_Ÿ‘’§ÒÚ¬˜ ¾’u„d_ýŒ÷ÅCî #Œ:â;—íüOdáÆ¥ïhµù©¾áÄ|íÿ¡RÖî^_€Âü‹i\ ŽÇ¥÷íõ}ÅŽ4`HõÅñÅ|ˆ¯:ŸŽr!/Clñ&6ª_Y^Õy”å«VNí ”|Ç…}ñ|ü¾Is(-]tÂìw7¾†½ñQ÷u¿BbßßÅ|{_úêó Ô/©Líáøv¥ãòcÿÒ}Á­ì‹ "eªõE«?(­:Mõíb¾ ‘ÕŸ®å»91_ÚüýÁ®_s_î"ÆG­ûöXÇêÞìe|A_BâÝï¿®¯Ùq”ìÛßÅWÜòƤמ*ÐþaO*𬣌úÕùÎ7ôät ß=ñã%d¥ÿºõë¿ö deþp§þP%kó_œ?ÀåçUršç·¼©ÍŠ9ïîw(÷n{rßç¡Ï'ç»íÉM}Ï“{úî>Ÿ\aß²aß²aß²aß²9¹¯zn<ü|råܾ€‹£Ï'W®á»Ô0ˆ$xŸÜDÜK­â‹Ä þ_Ý×ÇYÅ—ô_óå&¾xsFoË¢ó¸­/^ÓÚMy@ÿeßçaúÂí|Éô³vÿÅùÃ|Õ¸VýúN*%ò­Úè Å¿a/éKæñiýAõ{#ߣ¯‡}Ë^û–½ö-{=ì[öz~ó&ƒLžœÅ÷®aß²Éu?þF¯Ž endstream endobj 311 0 obj << /Type /Page /Parent 678 0 R /Resources 312 0 R /Contents 313 0 R /MediaBox [ 0 0 595 842 ] /CropBox [ 0 0 595 842 ] /Rotate 0 >> endobj 312 0 obj << /ProcSet [ /PDF /Text /ImageC /ImageI ] /Font << /TT2 838 0 R /TT4 840 0 R /TT6 536 0 R >> /XObject << /Im103 314 0 R /Im104 315 0 R /Im105 316 0 R >> /ExtGState << /GS1 843 0 R >> /ColorSpace << /Cs50 621 0 R /Cs51 622 0 R >> >> endobj 313 0 obj << /Length 1047 /Filter /FlateDecode >> stream H‰|UÛ’ã4}÷Wô£D­5–ìø²oìØP5Ôš'†ÅQ&f;ØÎ¾cçƒénÙÎeJU¬KßN÷éÖ‡2x(Ë4”Û PE þx‘Eª0,”‰¢ÊCñ]÷<üðIÃKD*Š(« ¤š8¿‰¥ŒU,VÏbñ(süÿ‰žz™©TTíÑA¬RÉPÇYŽöE(µV™€8ƒOÓ}ñ+«y-'Ò¢ƒ'Ûœ¤Ž„ÝËßËm8&üøh³s®*§ø¦ÅWîlÛ½ Á-:T¹8×´i^0`#Ï"±=5Õ@§|Õ6=ØN†9 ;°¬Û·`_Q– Øz6i¥k^¹÷&¦Øø•¦….}þŠ9´¤?íZ©Uˆ3<"x!Ònã&[c¹•k†XP{¨´"C `Y÷ǽ•aªâo© ÌrO€µ€qÚï¡n¶mw°CÝ6ð,d˜aÖ+ÌýB´¯v¢tà¡{poðÚÙ¦nÆ»I¶ßù²“ØÝ ôÕn2öNÈ((¢ÅÉ\´h,ÚÆõ5Ù1¢!˜í¡ek¹èX1Ûl®¼æÂKÏ^sòŠ>áÕ!@ÑõöYB»å4p¹«¶©Üq€É‚õ „XÝU1‚0V q¨¥X5½ëxDYþqU¨…ŠÌU¡t1s²˜ õíf–}k¬µ“šëï" 1/r<Âæ\<Ìä-æíÎoìý¾ö¬¸ÁŒBzdmáY‹‡£‚e¿ëqÇà爌葇Q°û|u±óhç6Dôå›·gyŸ?¤XšJ¦æRtsÉäRÿó˜zµXec9ëØ¦þz´ªU¤ÿ7ÍGX Ò"²fÅu°jürKÝ]LIí4•êPß$»¹kC¼Ëbêi“_|{×:Ñ—¡CcëËG¢GRl3î0©™ÛZP/Òd$!jÉ7V<ÚÆí1ýÛz¼C~ Eòx½ˆDLÕ9 ­I£ßµçžWÖïÝ-Km%õË0tõú4¸λºÚ=`X³ãá€-µ­ÝÆW0ºkÔ¯SL@Ýæ– °nÿšÈ‚3ôtËÝÃ5ó†ÞVv?³SÓwb?75Û«>³ºí¾j‚%.hô¬¤¡:>ÒuÍ '˜;€ŽN“nç©à©rì\Ï#Ù25ä¿Å‹ó%§Ž@ÜËô>—ß•ÁŸÉüƒkòT%ȧE¡R0¶G‚/kuVã|Ù¿Ê+²ß¾ÕƒËs0¨ŸL¯5½(úò:Lü¾ÆÇÇãI¦¢Ã‡8D=$&6DÊÝ€oN†\L)©2,¸F†>Ô ¤<7B*ÞÆFÿÙÒÎñ,Þ_á‹â`„†ßgÿJkê s˜x€ÿ%Ÿ¦F%×ò /ÿÏÝ endstream endobj 314 0 obj << /Type /XObject /Subtype /Image /Width 368 /Height 382 /BitsPerComponent 8 /ColorSpace 621 0 R /Length 3471 /Filter /FlateDecode >> stream H‰ì—‰b¬:¥ðÿò»àM¶Í*C8•Žw]áx5~«!¥W­Z<¬±Ù÷’TÈÞEðÍóo(S×/h†=©Iå@å3”Mƒ¡ 1”>²×Àá´ `öu†Ê©»Áw> Ï€ÅwhÊÐþí[+@KëÛGªLÔZ|û,-|û£Rþ†oéÜ|Ûß¶À·-ðm |Û}ÿÜÏ |ànJß=Ÿ²oß¶À·-ðm |ÛRûæ™bÉÔ«†Ä Ø…î[ŠÔU¯Ï€%*ß^!ûž*o_ ÐÜåÔ»XôÍÑtôŸÅLßk#o™N¼^ 1XÌ€}¨¾§~gŠ9¤€ï#¨ù„ÊÐÎñMßç(}g…EÒXÈ+.ùÕ,ûÎoÇêuIù…Úí²_Ë’oÊÍv0o{\ñ»©ÿß÷ß¶À·-ðm |ÛRïOÀ½ ¾mo[àÛø¶¾mo[àÛø¶¾mo[ºû?Å|‚ø¶d„oSàÛø¶¥ñͳ6õí¦+ …Â'„qçÖ¦ŸLë›ûøv¡„(-®æŸŽß|3ûÖT…»ÀwÜá[~âHˆe' ƒ>ç†üî‘ò—}Ç*þ¦‘ë}yƒö‘þ¥ï¡™«V>3ÚµüÍI«|³ï&ÄKo9Ÿ;á{HNÑOt=¡¾/9æ“Ê7ß’PTß®ŠS‘ßÎ9æáØ×ä“à» j¾%¶}—‰|&úù{=°Ÿ(\߯„m•OŠ|¡ù.ÒqµGɹû¥ù;æ*¾oÛŸ¨¾ó˱Ibÿí甕oÉ'ö|ûÿKø¾ø¶¾my‚o?DßÔ;æléî»wÄÙBý}÷Ž8KèñÝÛ%Èßð ß·ß¶4¾ÙKàÚ û1æz†•Åû};çBå[¢?×áröÞÄßÚðYÙÁ·¿CÛwUý^Tßÿb8Ç2Oݹ͡œÄyVïöí5ºÆwÔ\{/šoöB½¿ØT?mç@vEš¨}‡t’nÈ_õ­V…\"ÿ¨ïYmÌß"¾Eþþã¾™yÕwš¿Ä·–Ob3Úw aÝ·šOnõÒË{9šOŠ4Ú÷Òþ¤Ê'4¾C¢H[ލV˜ û“ª§Þ4‘×ù±ƒ¾“ ¾§€ó?ñÂX8À‰§¥ñ‘ô8Åsºp°r`}œ¤©AëäéæV¹?‰'-{òÕ|:…+þÚOÝÇþ¿¼hã-}Û²A̯%N¡ßÚô†Pµô}-|÷¾my‚o?DßÔ;æléîÛ ¨:|«Eúû¾=¤¨Ëc»À|ð-€o[àÛ–oûf?Êõ2öcÌõ +‹wߤûÖ†ÏÊ&øž‚XÄ2Oݹ͡œÄyVïãó¾Ù õþbSý´Ù¾‰ÔªëQäÃ÷:˾™yÕwš‡ï¬Æ7­øVó Á÷Žå“"ÍÃ÷Ôý Ë-GT+̆ýIž(ïâÛ¾ío[àÛø¶¾mi¼ø–Üß| nîGñßñýh€oKFø6¾mo[ß<#ty@qRæ¸iÀ·ô]¹Y²¤Hå­«á[ó=Gl.þÅŸ©ð†YÞŸ4"=‡¼h„31|W¾9UIE›œ&¸òíS.ë8¾eþn}SÝÌ»9(M­²ß9¾Y(dÙZöMIfòóI‘£à»Í'BH¨û|ˆ~|¾çV}·'(>|W¾Ët@En.Ôû“ʵ¾?A|Ÿûÿ’wŒêÀ÷f×Üüó¹_7|ßð}OðMã‡èï›zÇœ-Ý}U‡oµHß·‡uylø€ï¾ðm |Ûòuß¼é0m/άôã¾y£pž„ïU|sQ¶‹›þP¦\M3Å¢tH¾ø¦(K{U[œ3Iµ&ÏrsHâÛ¾…1Y¦!Q•rI܆jF½g‰ûfæÚ7‡,PåÍ·ñeßòìû&5¾EpñMõ?î[$âÍù›Šúïæ|çWÚ¶ý‰’î™+ßTœø´ïß¶À·-ðm |Û2Òx7ð-¹=¾øþ.…op?·Á“ ß¶ùÜ Þ—¶À·-ðm |Ûß¶4¾y¢]§ýÔ¾™„ƒKh}S*bÛÄîÇaTß1Îc™FðœAËßD"ÎSWD;8L»?ÉIƒ+ß"¾;^ñ»ÑöƒY3Õñ† ü(•ï2$Ër„ˆSÓø¯É"”¯Kø>ˆºÿžúy;H)¶sfïv½oGËßà>àÛø¶¾mo[Jß nñm |Ûß¶À·-ðm |Ûß¶À·-ðm |ÛÒÝ÷ø)à{ø4À·%#|›ß¶À·-ožXÓòµºr»o73]O¨ç¶/]¸R7OŠ5q<¶Ã®îMë»tºÍüißóµ¸lØ%Õ. wƒKCuP=Hö°ä{.Cœ§jfÕSošÈëüØe¾…ÇÚw£»Õžg°ì›ëнtQ g—Æ÷ úN1[$×4êÞ }ɰ¯ïA1vз’¿Ó§ÌàUöIºÎßoô^œ1]Üê{^œˆìÒ¢H.ƒl,䓺ùÖã;À¾³ôÂ÷PÛåû5ù›iÝ­–¿/÷ÃYHnnÁë÷'iÿ­îO(ïO¨ÚŸ\ñ¾¬÷ߥ²œãÕAç\3üxß[¸hã}aÁã³ô6À·-‡|_ËAßï¾my‚o?DßÔ;æléîÛ ¨:|«Eúû¾=¤¨Ëc»À|ð-€o[àÛ–oûæyµ•êàyfßî³¾g«Ö¾Ýw}ÏZ™r5Ýö½p3bïš §è†ïXÅß\å‰Køx>!*µRÝÕ%|Þ·ñeßÌ ß‡ÙïÛßÇÐöƒ¬ûnÍ%ÀwpÊ\Çw¹?¹ˆoû¶çÛÿ_Úß¶À·-ðmËHãÝÀ·äöøàû»¾ÁýßO6@|ÛRäop7x_Úß¶À·-ðm |ÛRûfφ#·¬5 ¾ËÜtO@Må;Xœ« =éO}Úü €šeßQªV|¤ñµRôc:÷‘NŽ¢û¦üâÌ9„àû)…Â÷¥”¾…K陫º³â{éuI”ö*`/šïj;X*NKàûõÿ;5Ðz-ðm |ÛòË7¸ø¶¥ÞŸ€{)}ƒ»A>±¾mo[àÛø¶¾mo[àÛø¶¾méî{´¤Ã÷«èï{°ƒú?ÀŸò=Â7|ß¶|Û7σ¬­TÏ3ûvŸõ=[µöýûe» CÑ ²÷ä(?²ɼ»bŽäì"¶ûõ}iU)圀Æ. #w6gºé;—ü”R^˜àü<iµJ¿¬Š î}ÇŒ?ûVUúžæ½ïø}Ï1ºêØ÷í 1¾“SÕ>ßíýÄß¾ñøþ¿ÄCßXè }c pз0ßÛÏ|“õT¾¡IsKñM0Ð7úÆ}_œµ 27Í endstream endobj 315 0 obj << /Type /XObject /Subtype /Image /Width 23 /Height 23 /BitsPerComponent 8 /ColorSpace 622 0 R /Length 93 /Filter /FlateDecode >> stream H‰”‘Á À0½‰çaöŸ¤UJTd@iï“èD,d‡ÑÌéVáIc!z‹8Cã}ÕOeÒÈR’ÞhõòU¯kd—¾ë8ÃðÓW ¿µu+¾·Ùr 0±¡}ª endstream endobj 316 0 obj << /Type /XObject /Subtype /Image /Width 23 /Height 23 /BitsPerComponent 8 /ColorSpace 622 0 R /Length 146 /Filter /FlateDecode >> stream H‰Œ‘;Ä EÙ@*«©¨¨Ø •­û_IÆDœxÎÌÓ†{®øcÞŹm⛿æ‘“-˜¸’ˆöINÉ> –ngL*ACθ`=FÈ61]4dKöò´ë-kÐiƒFç{Ëì熶ôöÚ‹p—¢€hßv8æÊ‚òò¯÷þûî‹ñ›Ûœ Ùrd endstream endobj 317 0 obj << /Type /Page /Parent 678 0 R /Resources 319 0 R /Contents 320 0 R /Annots [ 318 0 R ] /MediaBox [ 0 0 595 842 ] /CropBox [ 0 0 595 842 ] /Rotate 0 >> endobj 318 0 obj << /Dest [ 305 0 R /FitB ] /Type /Annot /Subtype /Link /Rect [ 71 410 117 424 ] /C [ 0 0 0 ] /Border [ 0 0 1 ] /H /I >> endobj 319 0 obj << /ProcSet [ /PDF /Text /ImageC /ImageI ] /Font << /TT2 838 0 R /TT4 840 0 R /TT6 536 0 R >> /XObject << /Im106 321 0 R /Im107 322 0 R >> /ExtGState << /GS1 843 0 R >> /ColorSpace << /Cs52 625 0 R /Cs53 626 0 R >> >> endobj 320 0 obj << /Length 1090 /Filter /FlateDecode >> stream H‰œVÛnÛF}çWìãn®—Ë{9… ÈnªP÷Ai™­Dª•ÄßapÏ̶l M[wgçrfvæçUpVU‰ŠTu”¶Ì”ù³¥WIj½s±ª¶ã³ý:8ûñc¤Ö‡ÀYçU­‚Vpñ%øMÏLlc}i ‹õ{SàÿšEóƒÉm¦Wý®Q±Í¬3açüëÐD‘ÍµŠ Bš%ˆíõ‚ÍĪ1ÞFz¯æËîh"§—ó{õa÷‚=òŒÁgÀ”p†çb›“—jFj«@«ñx a‘£ßOŸ3§%¥~Q·ƒImªUuñÉ$ȨšPŽ!ŒUˆØÅäÇ•ŒËº¬+XÝ7l¬vK~v²Ý¨;¤Ô½ KªoÔ0)åÍqܨ4v¢Þ˜0E5 Y¥n´¸j×¢c•)œŽE³”Ç‘u{Øm–¸20žôÆACðj…S\‰Äßô_"zynûº½£k…Íè`T˜°ËN6_%üG¯¢r’#ÕÕ)èD)UR:°KÉ+*årµê÷ukÂDwðÙB¯Ñ’å!YOAŠqs/›FͰ(Ñs—ÆGP}m‚ƒk$è9 ½!õ㤾7aA ãõnZšŽ}.!äCè;õ¸¨ž,ƒ¿¨‚¿_Ä6I¤só„Ú/JS[*õ¹3L×jœ]n#—©YüœW' ùz^}ì­ƒ¥Ël6M, hö2¡™TåCkè2×G“¡Y÷Çò2‘×(N©k–‹Ò *–]˜0Ƶ|â¦Ñ“úyÙ±*M'®…óz;ˆI–Ýw1ùŸƒ(iùçk÷ã ¢Ú¸¹=¯ÛA]-æßŸÃ(½äEþ2‡)õ9f‘Öˆ6,»C7ÆÔD²ßó†åéág1¤žeÍ%uöNÌ‚ŠFKrBcI*ËÒéD<0–çy,Éú:5æ±L…8Ô#?®pe©>nAØ®äðWÒÕ½F÷$gm§–#Z‘•à±:ÀÞö£`Të …¯ß%HÂOÅ|U6g¸"?’Àq/²­DkNB ¶_tíðôâîÔxNrÉ´¯ÇÈ7š zí¶ÝˆêéÅõo‹GÃ<ûN|ÉÙN°¨«ÓnG;z ôâ“ ú Ñx øF4‡Õx’ä­Hk”ž«Xý0ËDi¹)m™èÆX­Î1ƒžÚÐz†{"("'ÇD¤VËNÝN[ƒD™ŽÛ¦¶J}@PaA:ÝSòª£NiéÝŒúÅš½5| >Éåì{×wuÛ­MIYòéŒÚ‚˜3òÄœ×ó)™)Ê@<î›Ý×2særh‰$®"`ûø¤Zä€Kˆðü àßàO|j<ó§w Ȭ3ñgþ/ø´ÂI‘ü7þLÜ?ðçSæ‚ÿçüMˆ: LókéÕô–D‘ÜßΫ-Í endstream endobj 321 0 obj << /Type /XObject /Subtype /Image /Width 368 /Height 228 /BitsPerComponent 8 /ColorSpace 625 0 R /Length 2617 /Filter /FlateDecode >> stream H‰ì—‰b›:E!Ñ4íÿÿð‹AËlÂ1ã<ûž6ÆhI‡±€eðf½ñìI¼k÷\ÁMñ-Å×=ÙŸ=—åcc÷œmo‡ðp6ßÙ{Íëì<ã{ÿß¡}ß|÷Žýû „op9ð |Çß±Àw,ð |Çß±Àw,ð‹õ½®ëq·5ÿ“ß&sÕíšÀ÷¸¾—,tËôúq;-É¿û^skÆ4ßÙ÷®ÓÿØëó×\\Ž ò]LßKNdụ|i=µñ¿1}ß~V[ß«Êo0Â÷Ívíµæqۻךÿuÿn ¡|DÇwØüðËYßàgÀw,ð |Çb}Ÿ«|'౤«|?"îëñ/ð= |Çß±p/£êøf ß³߃꨾瑾û Fuð=ÏYß”‘à{Ï73ª}ÓŸ¯?_ßÿ÷jø>õ]LËÎu3ôø¾ã›Ú9Ïáýðõ÷ëÆß¯IßTâ ú¾ø¾÷Ü6¾¿Ó{ÓýÞ'}7ÞÍ7‘ËËß³¡&ŠûþÊ»É×iß´Ì?¾Ëòᵺ;¾KÓEøf»÷¾É|£å|»õ;•Ûq¾yzOú.cµ-\˜_èõu77Nì'"½ïÝOÞÑ÷ÒtŸñÍÓ{¹ïùDï,oâ›q&¿ ÿîÊo»·ïƒû=¶f‰C¯Ú–ö§vbX/H®wË;í'Òõ-[O÷&:¿ò»|§Çù>5ìlñyß[~Þ>êÉ÷·RÆÛìñ[:ä¦l`Ö©ÄIülëSÖ¿¡«‰ÛìSS Äl8?n¾hbŽmÁT멬ËóÁ]©ï'|×Áø ÿ·âÄ¿µùòJ:NÒC”™‹aHŽÃ}³ %ÙF N\éÛLάºãC sy3û·‰ofÊ‘¾Ù¥W†õs„ª¾N55Ù¢eoÑ$cêI”8ÆÔpÕ*°#zÞw=± [OÄÈr?1—ûÎõ-΄ï6½çṴ̂ï›O‚ûÖ“;é»-ñßB†”D™¹ý>¸o'À‘oYj0×÷H4õâ*ß|ÖwønnåÙ´o±quFæ×— '2Oª=ã›tµ®×°[´ëÛÛxm2x×}ì[;:á;?2¨û13ÛŠ[ëæ„W±Sâ™$@ŒoÖXkÓà"7&tL5 nMìmV¬›ï#•kÍ£0CßÇ\ê·$Ì7toÄå7¸ß±Àw,ð |Çß±ŒßwÚkÔ<ÝÖ¦bz~Hš>Kü…ifL¯-©“³¹Oö}:ÈA˱orÊî“õ¸À7m/¥úMU¾ËR*…e[u©¥Ú,ÿ•_bjî9årHv&'×>ÌT˜£\+c³‰‰µ©É±µ–±ÉŒñ3ß)ÏI:SѲ^þéö5’NDOöLON–·”¾IÇî¬m49g2óÝf˳¡sàÕ1å›u)¿O;ÈYßDújׂzÂöÙåH ™Ǿ½^ÝÕ·˜·õÝ›Š^áØ·h}—ï653ÒÍ…CßbéÓ¾½^ÝÕ7Ÿ•ã{0là[ú¸×·8lל¯‘ç‚ÓöHŒn ~M2׺½úaÙZ”?ãÛ]“·~ÝE kÎúfwÜH¤‹wÃfÏ'õÎjˆtp>šò›úñçÂÖbÏ3¾Íó‰Úʉ˜Žñ-Lû¾wŒ'EùÍá×ù¦NbDóÿð €ïXà;øŽ¾cïX&|»OF“K4ÓÒ´½Èos.â¯áÞüž÷}G#²'¿×à9z¾·—RöÒÊ_iË+kâ­ô‹.•’í¿í×âµ\N*”éQÛé6f·åséú.³®¿nY-˜ÂrFÞA÷³+`ƒšä–¨o~ËçÒÏïbkVÚ[Z éŠ^¿Ñ¡œþ€Ý1Ù žÊÐ7QMYÊŸ,‡S­â…êlÖ·èF:KW>éž}ßô 6”‘o6eýMåwr|:¿u1¼™‹?àÈ7›ìó8ðm6Z×[MR~p×~´óêàrš!F-ŸËÁ~Â~ÚIšó|Ró°þÒë¢Ýç“úLÒ̘P|OHÂ"Ÿ¤3e¿åóxèûåÄRØuºŠ§çðˆ‡ùž¸µ&—)ù ·Ä!Íop|Çß±Àw,ð |Çß±Àw,ð |Çß±Àw,ð |Çß±Àw,ð |Çß±Àw,ð |Çß±t|/Ÿà\ß˳Óà…q}ƒ ïX´op1Ò7ˆ¾cïXà;øŽ¾cïXà;øŽ¾cïXà;øŽ¾cïXà;í{]×í0ÓwõÛ­kҚɺïÚ©ø¯ˆò½²¿C:ô[ê·Eú^ËçwîÚø!®ù¼ä©¨äAZ³…eü*†ñ_Ÿžïµnìý²bQÉL«ÞÜæÊ‡°Õ/N7¿ùö,´·2ϑoø-û.?ôýÈ’{]g|·fìêùVwØæÀw;[˜ow?YŒo¹Ÿˆ1l~¿ ½çwÿf-ŽòÛ4Ã~²Ñ}þvŸOêÇše®¢r-!Öò­Ý«OÇ÷Û>Ÿ€«ïXà;øŽ¾cïXà;øŽ¾cïXà;–Ý7ãÙ€kùoy(1© endstream endobj 322 0 obj << /Type /XObject /Subtype /Image /Width 395 /Height 248 /BitsPerComponent 8 /ColorSpace 626 0 R /Length 2064 /Filter /FlateDecode >> stream H‰ì—‰bë( EQêvþÿƒ'¶Y$À[BâÛç{ÚxAdÓ±ã!„² …>·<—¼ŽÈŽôRÅ'˜UÌ›‰8&ó6ÌróˆÄ¹)B^çk‰Ké 9.7#’:òE^fRáb’¥T!jÄÅis¥è úôÅó/²¥"ŽçªÐåPH"¯P¨È|êuGˆí#„«¢ Z9ª€*`  ¨ª€*`  ¨ª€¡V!"ÛO“ð ý¨Tl$9„F]TÑ—¦ r=ÕGÚŒ§±df†ÔDò4YÅ×DP1gº½™ãá0 ÇýyŠBELr¥Â…Ëߨȅgïj2¤Å²Šv-Ô*¤¨ ò$mªCHºúsŸT5©W䉴ñ$ *a¢ßUÀpTyTUÀ@0Ô*nä0ïRq'q÷w©èñº—¢Oʨ¢TUÀ S¶Ö××{>UtÀ¨Xéëk1ªè‚U±UÀ@0P TUÀP«øœÀ½©âN>Î’ŠOW&qTUÀ@0P TUÀ@0P TUÀ@0P TUÀ@0P TUÀ@0P TUÀ@0P TUÀ€¢âvypTÜ/Ž»S7ª@*`  VTÈ”!ÙÈ ”‡ÒˆìVáãçòÎËÊ)¬©ƒ }]ENÿÕ<Ü7ªB愦Ý('’y0Ì‘œ|QÑz`]…O.hâŠø°#iÀUêŠíªÈ*®·>môŠfB«³$åyIÅýz•±Ñ¶eA…ˆ4T„Br)j§PQ_'U˜*(U4¨M¨bãfVUTM!ʱ]„ Ô^vý®0ËQqK¤ï RûÎÅ& éŸ<°m+ævv*Ά*`  ¨ îvq`T¸³¯ÊóAQqö5ù*R£âìkò5\‡„á¨øô;v¥ÇǧŠ.P Tƒþøk}}-F]0*VúúZŒ*º`U,OX‹QEŽªð=H]h©PÉ.Uøïá{xüÏaªèI­"J°W~ˆýü¯wTÑ—J…ÏçúÊŸwÃÏ0ò3ìS!SX^ÿ”RmÑyíeÞ|/3ŽC[Å\•ŠGQL&E±OŘ)y›ŠòdUÅ¡ñÏà}«ó¦c&Í;gU ay«YˆÙ…‡L›0"ÝÙ‘yȹô”e#ö³p5ù錻ñØç“ÎçÏÐbL,¨ˆSQ¡:ÅNá/g½µ+¥,ª"6ªÂ§õ(ä=ÿ›zâçiÝ ¥ãxɤJ©ÐEñ” çtþ¬‘ö¡¸¦ ·®Âé\;_d½­âÉd¾ˆ2qd2EqP…H\§òr¥³=ô¨yBÅü%U¤°šxª¨ÐEáŽW…kGU16ù¯U…[¯ŠòèlŽTEäwU¨ŒIÕÌnÇ¥ã{{…[V°@iš7³>ÞU8Ó+Æ¡IïÛ[jrÓΞE1vÉRsT÷vê‰N™Í6šwP±)[1ìõÄ“9ö/ªØYfùwÅŸ R‘‰ýáQªø¦ŠÞÔ*Úw»6ÂTÑ“–ŠÖ„µUt*`  Œ wkpߌQEÌÇ¿7ÙŒQEz||ªèUÀðO©hö³¿Ã?¤b¡Ÿý^ÏŒ B0P TUÀ@0P TUÀ@0P TUÀ@0P TUÀ@0P TUÀ@0P TUÀ@0P *È 4UÜÉ´T“  Jä<¬ r2TUÀ@0P TUÀ@0P TUÀ@0P TUÀ@0”*DdÚíy®´ç‰„ÉÓlìÝõú£P!ê±É¤ҥ4¤ƪ¸}\·sFõ. J8W· êÉÓœª1oa_ÿÒ,©´þ¨]H½6A%¡x¶N´è·¨Ã×e±*t+0FòXKW±]SQ¾ðÕYWW޹«’Ù£"OS¼¥¢hô×dCE>sJEsr• »@™÷¨«‚,ÝA5{…š±UÕ4.P[,þ®hÞA¥„<‹ J| ‰G¹?§T7Tðj¤TANƒ*`  ¨ª€*`  ¨ª€*`  f³¯BùÂþÝÈ endstream endobj 323 0 obj << /Type /Page /Parent 678 0 R /Resources 325 0 R /Contents 326 0 R /Annots [ 324 0 R ] /MediaBox [ 0 0 595 842 ] /CropBox [ 0 0 595 842 ] /Rotate 0 >> endobj 324 0 obj << /Dest [ 305 0 R /FitB ] /Type /Annot /Subtype /Link /Rect [ 132 716 178 730 ] /C [ 0 0 0 ] /Border [ 0 0 1 ] /H /I >> endobj 325 0 obj << /ProcSet [ /PDF /Text /ImageC /ImageI ] /Font << /TT2 838 0 R /TT4 840 0 R /TT6 536 0 R >> /XObject << /Im108 327 0 R /Im109 328 0 R >> /ExtGState << /GS1 843 0 R >> /ColorSpace << /Cs54 629 0 R /Cs55 630 0 R >> >> endobj 326 0 obj << /Length 939 /Filter /FlateDecode >> stream H‰œUÍŽÛ8 ¾û)t”ÖèÏ–ÝÛt’Y Û-êžÚ=ÌÆžY·±=ô9Ú.”L:@Q`aÀ–(ŠüH~¤_6ÙUÓaEs—Õº.…‡ÑèÚ‰PhgŒÍ:;ÞgW¯ßYq?gFD³Ër\‰Çìƒ\)¯½Ü(yy£*x¿!ÑvVQ—r7:áu©Ê­Ø—¹²VG)|-r–|;ùž®ñ­N9måQloÇe¼Ý«¿›?»cìÖ:ø0îX¦ÀÀ žqˆÔ H¹ÒŽžB5ŸÐFÉ6¼Žh¥Y¡Ú.“"Ÿ\hˆ‘ŽÙ`$ƒi…¡¯U&d«ò  Ù/âæÍj}™r GÑ‹¼WäˆGvbÍfš;tî!ÐÃ-­GíIv§‚œT^Ë#,H²\^ùÂWö²å+¤XðR§rÌ9‰ ø(Á Úì!÷ŽîQW‹ÚúxœÐÕgeå,æ~è÷ì‚ü/“8»ÿFŸ•;9;àÖ"þäCR\·ý2¿ó†fÊ”¹Õ¶xÊrqÎrAµk»ywìÿéZÑâTH«±Të&û/óˆÇdp>jµuQ‡ B ©wÀˆÝ]mk*±š²·ÙËæ¢Æ?·€ó¸¬.«ÔÈùò‰ô%×ìU¯ ëýƒ*¡ôÇNû2ìä·5´@ œ@9+/€Ù5´˜ˆÔ0µdµïâ¯Û‘T‘ðQ2ËŸs;¸Wþ†Ûåÿä6Úsþ .‰ÛP0B/V Ù}MïfÝl¶€×Ê_ó<ž¬š:•ÒÕö’éÐøÄòÈ,‡¨Åå9Ž]O›D2PþÂÊÌoØ#·!/ÄnP'~#Îk@Œ®hY´±U¡"ãqË^˜õYV´Â·PÁÈÀI FÛÏ nÑÉWåðl&»„0™8’V$”ûéqƦ¶¿KúË +E0> ¼âPûÝóV ª=Ŧ¢@& °‚™À/Â($$/´IaPGZ‹–D¨qàN° .ýpíèËïK-­ûQåàÄ vSïÓÕNnð¿Q.ÐèÏi¨ãð/äV<Ã*Žü=°ùS•"mFò¸$äý4ÂtÁåŠ Be#6 ‰4åëyû[ø·ÄsûÛ"j[ÂÿêÔþõoÛßÖµ†´uÝ_<Õ¡¸è~Çݨû]ê~ìô f!,]ú*ü½‰ ´¼M›Ž#”7Ücxí“í!Ô 6ôsqiÃW·Ä‚fGužfG™f$凭À- endstream endobj 327 0 obj << /Type /XObject /Subtype /Image /Width 473 /Height 329 /BitsPerComponent 8 /ColorSpace 629 0 R /Length 7873 /Filter /FlateDecode >> stream H‰ì—»Žë¼…Õo r ¤ b#§uaÿtyÿG:¾J\$íØ“dÍáJbGÖ)ÉD¡P( …Þ«ªªXâçÆz­*â8¬(û°íƒ· ¸ÇÖ­×¶Ê.·ÐQÕ‚¥ )‚­"d-¶Âˆ Z#ØñTÌ÷Ø`{hÝ QÖ©¬SX§ °N`*À:U€uªëTÖ©lUUkTã/´kq°Yü»{I°4’ëc7_ºäÎØj|Ä †ö¤ì­×vàf_†üñïøxºßBû;!S`i M[‚x*½jsýÍ€µãTƒ­DĆö",ÛY«™e­rDç=¶ ¶{‘vVí8 °Nµ lè8 °N`*À:•ûúy½ì=ôÓ¢û[À¾¢ÑÐ3z ƒ»;X§ °NÅ,®–O^vw° §«¥¼»C!ØùŸ÷ÿ)• vwÚ¶¿§Qíß»gY`3:öp›®—Óé|ê²장ÁNHÇ;€Mçk÷¹^¥»k)°©¤+0€=]OΩ^675Æ?kz^i®\YD°´N&#kUßždƒe 8Ø6`?Z]®‰ƒ-ëyb¿‡š+d7`ƒMTžÍúQJìü£Á2Ó öt½ž/­Ú€Ý±¹­49 ¿Ó˜î.IfòF '•Ë8µ<ú”xO¬¦[×°SQ°mÀ^®—˹ Ø{l’+ã`☦\8±/«Al\I¶•ë±²©$4ô ÈŽ lv}°§–k±§6`×DìÔßteDIð-Ï,øÄˆ$ÙÖ*°Ø˜W1®[–â4ˆ/—ÔÔÍ`§Å4•5”­¤ÛÁ¦iq~69_‹3·NÀvÛ½ít;,­XŠsoÓ•…Œ \ƒ3`­(Ìí¬‰Øß£-›wçzÓRÌ"ÕFÃbjliDÖ¶–b³ÿK1—ùºÃ7|¥Ô´ê¶Ù¶¼Çš§â|I#Ü™ Á<—×´D¬•<ï+1—ý;ÈÛkSÓ¦ˆ ý€Øòæ˜x±u¿Ó9Àî[,™ïC#XÊíW€Ýµ,°V ,S€Ý³6€U °;Öz°K•ìî`éÓÐýa^€Ý¡€ÁÝÔã¼»?½†A€Ý¬S½¬¹!‡þ©ÞvfCýS½lȉ¬SØ#ß7X§ °N`*À:U€uªëTÖ©¬SX§ °NÅÀVåZýÈXB/T€u*¾w8«NÔ}úo>ªz°·^Øþ7‚í/·Ð±ÄÁŽ””%bûè Ks`+ŒØÐÑd6.EÄO&ØÐñ`*À:U€uªëTÖ©Øë->üümýŸ1}—`¿®÷Ðñ¥ÁR÷(ttÝ4Ø[€u ˆX§Òû`=("Ö©buªˆX§Š=Ö©"b*öX§Šˆu*#b¬K±EÄ:UD¬SÅáÉ©âuÇ©"b*"Ö©"b*^wœ*^w|ê+–b§ŠˆuªØcJGìW€u Øc½ê¹=ö3ô½ìs{ìç=ôÑ ÖÌçöØÏXµß¡W˜õ¹=6À¾E¯0«±oÙcì;ëTܬK§«¥¼gO/™H`NWKyO¾îØwÁÎXÊ‹ˆÝ¡¶‚M£øÃˆØÊËÐI°éúçzj¿CvDì~¥ÁNH1*ǼóõÚ~¯çD‰"b÷,6•4ÊávºžZ}\N©^ÛGlUU¢7™fdwš‹DyáïþOËÈ”™`] IÙ`ƒ)°ézþøø8/©æk,ÅÝ£Ž¢ 9 6CÊ—D…/¥âp¢XhRÊê“ìhÍbTöÏõziÕn±õ㈠öt‡Èm¯%U‹ˆ.³`Ç\ °BÀuìT”lê6Øó¥Ýa›G›ÁRŽÜªG«ãxܽÇ»]Ö¡7ÿOS‰þNöÔ›ÚˆíöAÄÞL°4G$è᛬-~èØ°§ËµÖl»Ã~/b‡¨g*–Á²)ÀÚb‡É `ÿ\/mÈ^Χn%^±*TÕùi,Ɉ…ŒûHëÁ~åSWSÃRü5óº3-ºÛ–b~ãt9X~4Ù2_wØ>‡ï±ÿ¥v®ë†ºûï±ùT\-œŠG̓ï±`e¿ÇÒ`©;6Õ"bgöØïŒ ô2)°yÆÝü¶Ùs¥úüpýÎB/“k¿a^«ÿèÑû„^& ¬U`)onÝ>‚ÐËô °±ÇîPï‰ØØc\–> ÝæÅ»CYï¦æÅR¼C½Â¬±ïP¯0kD쵃ˆ5wïгúñˆÙ½CÏêy°ÏElh·z2bC{UD¬S`#b=(–b§Š¥Ø©"b*"Ö©"bJGìW€u ¯xÝqªØc*öX§Š=Ö§bõªØc*öX§Š¥Ø©b)vªXŠ*"Ö©"b*"Ö©"b*"Ö©þFÄú”±ÖƒŒ=öví>Ãwýå{Ÿ¸,_þŽ?eµ¿× ‘(“ì=äB lMõw¾Ý¯Y_ô›½üÚïv»i°½Æ›ú?—$1'«èš.~C²aWWf7™e^5X²ÆÄÿšI6°eÊMeÚü¥É `Xp2²Ôµ X ÖÙEå¥bå‘­nþ׈áÌpð‰ b&Ïö—UÌ¥˜jÖ܃¯(ÏRòʉ®iÙÝw)UˆM.y…–»/¹œ,Àhá:7´U]8JJe Q)MÓcVˆÓ¥…*ÖR,;œêÁj€I‚f—†O0´¥6Ý%ÅŒ R`9~…"FŽI 3öX¶JM©$¿ápåÌD}>øå.ŸÄ,3Ål^â„ $˜Ï*P¥7÷bÄò¦9lX: ¬ÍFáåÔô]%ÁÔÙ˵9Û{Å!ö+¶j¤¹DXÅZŠy¬éª¼wlŸÁ*n(—lµ;JLÄlÛÔÜrº9â¹ÍW¶VUúïº=ÓTT ˜úð4)9vn£&‘(nI5ø21âOJhëaW¹´®²rµwVxP‘°C‚0)‚šc'ÅÊe bc.òDôŠÙð«÷ØÜ _Q!„U'7î/b–j¨GLÖ"!ì…1¤y_¹ip£­¨ÝhõËû“cZòT˜†àÏf)x6 óÁ 1S“éci—fÚ!_ø_j7ì±âìCsJM('ŸbOÆH˜ü¦ùò(ifL€´ ¹K-óÑ©Xþº=+©áC¯(ø^ OvžW£PÃGv²O>‘”)EXIË(ƒˆT£ó™GTXØcax‰d»ì .¾gÁS…÷COK–‰³lm;6uÊÿ sfsð¨Å:¯k¬¾å=MNDÐÁ•!È(?X2ÏY¡”Â÷‰û(òuÍ·)¨%w=ž5¿Ç«­ Ë##‡%™ŠA£K–™Ð4•C%a‚*`gR9KXZ®OAç¹d“qmˆØ©k=øâ VÒl„C-Ã<\²LVijŒ‚RXßð*•˜ájL æßce}~é@6©"–d =Òó¢ã%‘'óX#Úx-bÿ   ðΨ´SêÍE,Ž ›C ü°Å§J¢k>1Ïíʉù,‘,óà¤Ø\y-¾÷`X¯Âž§p+k5Ö³÷X^J[©Z%=63ÞŒpib :F’Y…ƒšÝ‡ …l#ñò¦5 ±&ZKqîhÂQ‡µÉEgµæDÈ»´†ž£¬°ßd!ÚÔ2ˆ˜¦¶-˜VBTЗºÜÅxº¯µCü@}Õ tY°µÁBkèôü ±ë$'‚ ¦Òbš`RhÔIF˜kÆzww±÷XRWÝ!É|QÁ€ÉfГž÷!’ú¹˜´8*ÕS  Rš‹¡\- 7½ÇR"sI òÑ—å|Ô:Íò†Õ O 0æ'q1’àÊŒÙÀ ²„Œ ÕŽ(ÌÇ‘^8î€wU–Êð¹ÂP”Gê…Gï3™Õ” {ž€‚Š}ˆ'jh‰Y¶t§,+;4O@Šï-¹?2¨æ„TßÅNÜé Kí6I07JèÄ5–ƒ–)‹àA ~²6×GìÜQŒmø”ETæ® æØè¶LKí1É1sâàS/si]ðÃÜP‰Ä³á¶bŸbƒÃ™Ê™5pl0Cæl0JQsIÁTجÎ/@u)ÇKÊÒÒJÅŒM[•E1_wxË¢v7ç-ŠÈ‚Åõ©ÿ‘®¸Ÿd™@¡’Wsb26†vm VTtÝ wW(Ì5ŽÎØc‰Š°>:ƒ;ŸþŠ”¹ix¥Uh Ý}I1Ò21­Õ" 4Aü‡-½ØîØJSŠ™K²kp"åÇʽ¥®#gÀ”U>¹ƒ¤v¿RÀ¢¢±ª v (ÎŽÝ¢ìLýÕ:›^Çúµ†¦b˜{S.Aªe9wÙÐ'•}ʳñ'<}AÔ+ö+m ·¦æå8úò G¬›î 3†¡”<­é ¯ëq¬ yVpw‘®Šö‡¹L›Zµbùòÿ™/ÛäØu†®J?Äý/lê¦m ¼šÜyÓ•t[_$‚’LC]“Ÿz‡[ñ’;ê È”êÛ|(;×’µgç8H8Ø«ÿ½¦ÆäH¥ÿYúBš–[35²ô·è;{Ïüy+ßQ=v‚7÷ÔÀQ¹1C˜{ÿ~³$<í¹ùšQûL+?I»i‚žÑKí [±Kzcæ´gRv~ÂQm̲/&b+ÿšCªm—1]Ê*‘¨†!™]35áç,•ú\X[sb§©“gk¿ŠÛÒZqä™iýÿȨĺ-k-}§‹ÌçÑ[÷â½³:4ªBOV‚¦çáŒõ© SÑÒþCÅ ©ð׺.S¡«æÿmÓaà9ç«ä„ºU¤†‹N–Ü:-P5óMÅ^BZ"@Ê(÷˜9­·øýb ÝråÌ¿ßt§!À*,¬{‚@Ne—÷í0\ÆMìvJ>]ž,`–ÁJ‰iF”~m/þ- OfèJ=Jào7#'„öõ¸A´ŒHOÎr!¼XW92U¬>b= «=()ö6b±g×îk íúkMk¡r·ÌV¨ñè,¢ò(ŸR?&µ kz9c3½>n± vXc_XÔ{|kÎÇ: ©þ…æq¼C…²Æ°8þ¯§<åÐ[J¦ócq¸þ|=nÅ…Æ=Zíu¤·My'Úz³mí—šys•9P´…yì¨_Y{µ¬ÞÎØ¯ÆøKWT•½¬ bˆ¥[P¹þÜkï»Õ™$û‘«Nœ×o5—œæ‘÷Fáŧ>fŒ°8Ä_|Bë(…>Ê#üš5ÞŠcÍP¬Òë7DÍÈË—‚þ l=IH0ÿ^3u©s2He¶Áí¶ê_Ñ/D*Ãߨ:0øtÆ" ºšíCtZ-¼† *}Ov[Üq;E¿Úï=ìNá,)¯!µ)A oÄpÑÁÛÓÛ¾kMA'ªÔN3¢Â,ô~G¸'WÒ®dýNs ·¡¨<9FâBÜó¥dð<¤žüÉq~žÎØä“!—u±Kø¥%kά ¼–}×Å{sǨ%ùQœ g›™¾Ì¸Œs>û1¡ú?>¿Ç2~ÈZ'Ÿ®^h\9ƒJu=æRéÿªYð2°~³”>Í}÷Ò ÑªQù‘Œç‹Lv[žÎX6Ð:dxÅô"6èE:K,t{]×âë²…S£DEü¼iÒòpÛßu'ÒÈ‹8ä2ìøÉUMÝyçÚÎ8-ÏXà(_Í‘¶—JL Ÿ'¼» h§ÏÍ(@ï3âßÿ¼¹×€è8h‘i˜=œi•ô³FlÿÐgêÌ}·u¨l>cn¨+y¡# ½Ü/W “ä6Tá/ª(JíàÛë4‘­Ô(»'WˆL™$ ‘I.–­s•2·~Ü~[±04EX/žrŪßÃG ¡¬ù,NÿQSÛ+—8Ûç™w¬JÌ~¶4Þ$ C6ÇÌ8>W¬,‚E9ó$ ǰdÕ­Caó³ÝžÞ/9²t ™ªÉ „t==†Í}šAã—ÓÀ6Þ] ÏXb«°dJŒû°x#lMÎHF¶Ì7Aóp|bñ¥Y‹Á°ŽMë:„uŽR¹¶9âSšùAn|Æ&€ãÕd²y¸FyÍPûå½!”l¦j¤í¥ùùø‘›B̉NëÅa£3Ù ¿¶vå´Œ ŠXõrÆÖhUOp÷öLyiy–J÷f.5ù’EßT<柜±VMÖ±Õj ³ï{:ss/êSE)êõAI™ú!`©wJöÏß7‹f*tNÀÉ)š¡â—­Š„vƒŽí±¶¾iŠI#ª}0µK[½æt?{2–{éW_^ž‰€›Ä êIxwú§ÜKuÂÓ˜Bõ¦Æ– š\AJ劶Ì\ÊÉxŒC©Ôû”M$2nwæ»9zDS}¹/7 ˜×Ï÷ÇïËKÝ‘žVò¼YŠ}Í)\¦ns˜ulœ’.å!´Nj¼*ì͉0‡Xî¹Ûï8ð™‰ÎV-ó5ÜØ¯lÝw¼og¬‘îAfõ¸‰zЬc0ŠwüN£š"Sž-q=ŒpN 8RcÆîžK׬ݽ¾ú¬ÏÄ:¶œ8‹šp‘(Ñߟ±\YÝùe¦FvýZé]²î&Ø):MÞŠ*Õ†CÓ4™4Ο<‚SŸZŠ ¾N·ëëgìæà¿¸—Íüúì·™&'N(åòP-µÜSÝF¾ä-Å—¨Tö©­«{‹YÃ3Ñ™L‹½¾Ûm+ñ$FJá$|1…éS4&ð`Y÷JèðÌzÝÙØ!Äz¼†„VŒ€tËT-õ¢„pV¨™ÜgTCQ óCQü‡ýjKn#†açÐò½Ëû¬i¼+ T{&N;哸±â¤$§OÔ’‚T.U9U?¥ò͇ùò$­&•P¿‰]ú`V¥‰¹Ò¡^eqϱDñeóÉIêÖ£áPK'‘J½ãÈËÒksãkxš7é%C y%k'vÌÌQ¥ ‚%òªì#~:4sí m ˆÙWE@ö‚]™ÛŧëNðá/Ê9W›”I&@ï·ÖÁæw¬FÌ#î,®WDn=C½®ä3©0ô'KÇŒj*žZp³̽“:Î@íé@­PýΠѬ6 B±ë$A%ö¿c#ùtYÄ‘„øÌÌÌ \â‰&ÂfÄ¡º1Çv5%mb/]§N-N‘HOr´¦6X Up)Û–‹ýïX1‚Ù§Ë·€U¶Ë»öGäˆÄOªO©ÃŒñ>w¡bÂ}WiO¡–‚MC§b±þ¨Y0Üä›ËSnBéd=(~ÔM)°õÙòq¬›&j˜³FO6RPAbÍ&±UÉI¼A®äàIüýrj%)Óq@¹»$^ØY ªO>åKþ” HµN„áÓSäC4Ìí‚8Ýy¹qï´÷"ߎՌÍàZ‡s¼Ä"‰9½d#u»lÒŠ ÓA_Sw§”oU©U‘“  &ÇÊBw²Da ;U/0¶ ¹&mõð­w’b¤žˆ)” YuHÔpR‘TÁÀIâ ’oÅ"hb‹‚ˆmñÛ¨†&¶(šØ¢hb‹¢‰-Š&¶(šØ¢hb‹¢‰-Š&¶(šØ¢hb‹¢‰-Š&¶(šØ¢hb‹ˆc|½½¢6¼Ü—‘%ÆkŸ«/Ùo|‹ØÿO±ÒÎf¹ñW0‰÷ëçL=øÁ·ëḾߓG‹hd‰Ìð l¿ñ^bÇÜiáí"Ó"P*ÚHÛ@y¹ñF¸‰Å#”ø]Ïùòú'bÕpãíØ{ï‘ëŒë¯»Äà>刕ëVãMØ»¾k·âHÄòVL>òÄ6~æVlÏXx6±I¬·â÷;ÖÞŠç˸X´8nãþ´nI“8ClߊÏEÿ#šØ¢hb‹¢‰-Š&¶(šØ¢hb‹¢‰-Š&¶(šØ¢hbKâ×ä¥L endstream endobj 328 0 obj << /Type /XObject /Subtype /Image /Width 477 /Height 260 /BitsPerComponent 8 /ColorSpace 630 0 R /Length 2599 /Filter /FlateDecode >> stream H‰ì—É’£:EõoeEÔÊ^txÍÂÚxÇÿÓ3 !SJ1"ûž²Å !\®Î­ôßþà}@®b W1I®}PÖ »ÀQ r]Ti_‚c’˵C‡õ¸Ç{À¡xÈ½Ž¤äF§-6®à0Lr'Í^î×iærÅ9´Š —øtErÁàrýT;N¶>Á–ÈuHî¡`r. W1«ÈU ä*r¹Š\Å@®b W1‚\kíòqÖAÔr´ùªá€ÜÆ‘å:ooÌp,†ÍëI®õ»HCÐDîuÄËÜÉÅTïWýî°¼‚6Èåm…\ç#Êä¦0‡Ö«&kðfäÊy-åÚ,¹ *rÉLkcBÓ|kc²ãœ›Âo+ÔäVºã¹ŠÙ,ÈU ä*r#È=ïó6¹=ø6ƒ7É}EÇ`¯q¹M¹Š\ÅPsO\óOcÛ$LîÌ×\ä6 —[o0W¹²U®ñð ·I$¹D_.×\þœ~~¦jÈm›RnÐÊÓéë~/ÃßålœqÛ:…\“¶i:§ÅÏågà÷éVÊwJ Èî8ÌÓÓ‚W!ËDrÁýóà|1nÜè4¢h°cäg"¿n|£iá¸ÜŸËå÷üàÜ­ÉåxâT¸$Þ¸i¯s©lƒ¹­È M“ûîùr>ÿÁ]9ç¢Õ ãh ½V“ÕHÃq=ä&^v"÷çávHîÏ#¸k“ÎIʪ\GÝCîsЇ› ò™”ÏgsënOËNn„ù˜Ê5—Ÿ…\¸ r‡àoBÃŒËê¶ÈåÃrª+“ v³%¹q¶îž–c,1,ñUÈŠå{®3·CpoåÆqvz§•Ÿ–É£ò ßs'$¹ChoÛš\ð ¹qBöË<¹Ý8(»_ÈmŸR®ü®ÄëÜä¶Ž$Wj0W¹¹Š\Å0¹î$Ð/ÖAn£0½Èrä¶Ék@n“@®bÞ'Wœ¤ÁGy—ÜÊ$ >Ê»ä%@®b ¹@™\  ÈU ä*r¹Š\Å@®b W1«ÈU ä*¦kSi¿ò‹ÀË€\Å”Ãò Ô¸áoüÀò1!r¯#“ÜñëåŽÅ‹\®÷=éLÉS ŽÅœ\Ë“ ŽFM®n °CrGU.8>«ÈU ä*r¹Šä^®ø;àßßÇw\ñÛ½$÷~éÁñ‘åºa78:WYîr€ä*FNîr5€ä*s®b\Å`ÎU ’«̹ŠArSI.äj ’\ Ë@rƒä*TŠÁ«b\Å ¹ŠArƒW!ÅàUH/w ËŠArƒ9W1rrï«Ì¹šÙ;çž@«ü·{Î=õ QîýÞ9r›åT‘‹ä*àÔW†åõsî·ÿPÉUÌœ\;@4Úª\cL_[ô¾ëÀ;™–mf´*we*‹ÞÛëÀ[™MnT:&8L³–krM²ÈëÀÛYLîPÚ¸ÈÍ.Ëíe¹–?Àºä.Ë5ý¢\ÚéýU¹×lXör³g¬gåöûªÃò¥:,—TÄb]®Ð¼—Åä±³Ãrzç©Ê•š€÷2›Ü8?A°ô´lÌôÞ:óž+7oeîj§oÿ  ÆÜ«ä$W1sT{pæ¨VÊu'Ð(•äÞWËuß¾?AÝÉÍâ0çªÅíOî·ÿPcÿœ ¹Í‚÷\ÅT_…0矙äÚ gWÈ5cgƘ¥ø ÕäŽÃò‚×(×û›¾s ðIªÉ½F¹vøØ¡œ6Ç…¥rMò¹ qêÿ.%×k¿Ó.h2,÷Ûk“¿órM¹í°bÎÍäÚi\†Üöy*¹ÅUð¶ø\>ÉöäÎ Ë©„ÜØœ\éi9DÖL/³xÏm„ªÜ1¹k8}û_5æ‡eÈ=4óÃ2ä$W1/H®;FÙ\÷íûÔ‘“{_/4Ë}ï«h˜½s.h˜Ýs.h̹zÁœ«̹ŠÁœ« ËŠÁ°¬ ËŠArƒä*ÉU ’«$W1xÏU †eÅ`XV ’«$W/w¿9ÈM„Ï«>ÔÐBr»ì(ê8nÒÙ7íOǧ½®èÇQï(÷—‰êœëxc¾êx¼Ãâquì>ôoÿ#e o=¹“^ú\›Ö‚âh'õGT¥ÅÎH;ò‹âQ(÷•äÊN{«¯BoÈŠÌkÇËà/trë û]ùÙÀÓ8ò™M®+îRÓ¥;@ÐËN%ÄXüM¼ >?Ž^Íé¢×ç\Ò6üåö¢çØ_ÇO&Bf?«v· \SÒ«9^ýzrkï¶Ù Pªs°ŸùfMxÇcåíÛ—çÐ%¹æÓu^žsÓ[骋öÙí’m±°³.»ú@í·oá¢\YŽæ\.$Yì/»Mm˜Þ¼ 7Ê#ؽ|175¹äÑ&Íq&íÎoWWôN|æ?¡¸uÂÕt²\qº¥atl?½ ²{ *.¿'è-Ñe­PŠeÂ_PÑ>â1.î“fðì.`§ó¥¢JǺ!½·ð”Òf™®ì-Êœ-%7sIÅ—ô® 5Ù æè¡ß wû@"KÉKG·ªsnGõ†æQ’c'¢~¸’b«PN%½Ž·'Ã>á*ñ¬PÝÄÙrrS—å“4PG쉌‰,”'×ñ'»²wÿo—Dlºn¤:î¯Î¹ñ"óGd¡7¢Í gá"™ÅL¢ëòÃxb¿}QÛ(©¸;Å‚ÙXxÏuÅJØ`·ÙvÙùÒ)…^;:JÇ•9éé_úW×ËK“½ªÐë*&(rSÈŠÈäm@®b W1«ÈU ä*r¹Š\Å@®b W1«ÈU ä*r¹Š)äZkÇÅšƒ­ÜÎZßIjÆëµ«úûÈåZò]¤Ò(¿;¬P >@&׆ò‘­É]øÖo‡²JÚIjæH–-;ï¼’ª\G]²ð2ÉnVI´fGSu–ž¢¬/£ž\:¥2ÇiŸtdåœÜ¼cðbä†ñrzD"±µvÜÔŒ> endobj 330 0 obj << /ProcSet [ /PDF /Text /ImageC /ImageI ] /Font << /TT2 838 0 R /TT4 840 0 R /TT6 536 0 R >> /XObject << /Im110 332 0 R /Im111 333 0 R >> /ExtGState << /GS1 843 0 R >> /ColorSpace << /Cs55 630 0 R >> >> endobj 331 0 obj << /Length 829 /Filter /FlateDecode >> stream H‰´•KOÛ@Çïþ{Ü=xÙ—íuo@Ò*•"ZÕ=•¢$PWy51E|øÀÇ8”"U‘ìÝñìÌÆósΚì¤i‚°¢¹Êj]—ÂÀ•ѵ¡ÐÎ/šufèÙþ:;ùðÅŠëCf´1A4ó,Ç„¸Í¾É‘òÚˉ›—ç*Âõ‚LÓƒªt)çÛÝRx]j£rë«ñe®¬Õ•Áˆ¬e€ÜN~¥c|j©œ¶r/¦³Í²FÎVê{óµ;Ön©ƒë®JÐX8É3•)GÚѯRÍOŒQr ¯+ŒÒŒÐmžI‘÷)4ÔH¹^˜VXúXåt/T^ȶ£Ó† ã^kê3+/rP)†°)˜‹5k~,Uе»Ý7¼]‰+¸[¹Uy„íž6¢ë³óê&í»;l­•;v_‚4ôic6òRRÚ‚ ½¯ùVx*ø¼'˥⬋ö°[q”æ ò_d’¼àIÓj{{ÝV¬·‹öêN9{¤|s³^r5íüE-Ø?˜ 8Q<õ? \ß ÷¼ Ñ¥í@Íœ;Á©†‡´n7\pêÊ~ :Ry EN”Eÿó‹é“Ò¾ËäÇñx³¾.6Âë %í’Úv»÷´d˜N9á™45cÜd¿2 ‘ç8ª`Œ]¥‹R¶ÔÞÁðÏ×ÙÉdm­£mö9;kã|L»óVÇ BíuèyG¼|î÷ûVaç®o$‘û¥þPÖÉû1Ð^AÑÎNTPAx°v{€—`‹O³ @ ÉX?‡9@Lù˜ãaÆxÎ>–éÒXmG5ˆf2…Eý*ŒÅþâ˜ Ž qdˆašˆ~^cù˜ð _ž„®58IަONÇâç_¶8§R Uª5_ÓGJs‹Ç;š<7 !‘©d€¹§;1‹ŸfŽö²i‡ÓKâ/‰#¾z‡Aqoå¹k×iõ?(fçg_Ч8}D_ÀÜÀãZN_±ƒ8ôÖcl_±ò!NDJž0.Ÿ0.{Ƹ ŒÃãš0.$;u0uh›(½)ÍRì÷.ˆà* …ý`TÛ endstream endobj 332 0 obj << /Type /XObject /Subtype /Image /Width 476 /Height 260 /BitsPerComponent 8 /ColorSpace 630 0 R /Length 3195 /Filter /FlateDecode >> stream H‰ì—Aró¬Eµ€¯RoUe”ª þʘ{’™÷¿¦g[n7l'r,ud@HæÐ€D!„òkŒ'žý ä1Œó=(Lnljs?ûÈÏù¼Pãv<.ŸO²c.n'ųÛsÐŽ\}÷Oëv¬qKvr;/³ç¸ã—ìtKbA·q¡Û¸Ðm\è6.tº ÝÆ…nãB·qiÝŽãxý²qþ'¦q{ÅÚ\töO·Çu+³¼K—äü5õävœ³ "ÙÕíç…Ùí¤ÎO¦òùtÎÎÇO² ŒÛl­q+s€*·5”sí›jò+ôÝúÑÚºMÜ’­à»…Uv,ñY×Ú±ÄuYokEêÝ ·]hn?Ðm\îuKöÝÆ…nãB·qiݾ’çó(·Gòläø(·k´K~Â:èv‹Ðm\è6.è`i³µ¼£Û-¢Ü.l¶–Êèv›h·ý Ket»Mîu;Ìè èv‹xnÁžu;|ü{yy{™ŠévÓ´n³U›sÙÛÇùïã}Aèvã4n‡úcs:¼|¼œyû7¤ÛÜ–qR'È&Åw;‰hÜžÂö߉÷Anr[”Öd‚nÂ0øÛ¡ù|˜+MÑn_>>ÞÞOœÂöθ-éå¾5!«¢ÔvÜæª¢ÜžÂöýãýýí¶·­·X½¤C9 Âð]o\·\ãråöå¤ö·/§°½1nó-!¥ÛG‚›;æäaÚ"¿¿‡tø®ÛéÞC»½"ëz‡ÛsØž_Ϋ­Ü6'—æTÏÉä¡Ü·e¥Nßš“³WÎÉ¿„û4O—íû­ ‡ç°=Üç¶LÀÃPürJ~0þûí„çö²‡$wÆ-yÛ²ÏG·é2#ËÝnžÖ­ÿ’¤ËN| ÝnÏ­Wa©Œn· ÝÆ…nã¢ÜÊ«ÃñjÝnåàèr½Œn7É:èv‹Ðm\æÖ]ŸÉ¯ò ·õ™ü*rK‚@·q±nI ´[ º ÝÆ…nãB·q¡Û¸Ðm\è6.tº ÝÆÅºk:>áqÈŠÐm\š9ùlt<#ç¿Ë‡’÷Iuûyar{ùŸÝ^’O²/ŒÛÙöd³Æí%†É¾Xp;ê¸%{£ãv۾¸Ý=·dÿÐm\è6.tº ÝÆ¥uûñÉ¿þýwú¿œÌߎۯ#Ù?®[9ç’½óéºý¤Û0nãâÆíÝF€q®·qaÜÆ…ëm\·qázÆm\ü¸¥ÛøqË99ŒÛ¸0nã½T\øÆm\·qaÜÆ…ï@qá;PX¾8'Ç…q®·qqãö‹nÀõ60«¬·¯d{üoõöõH6Ç×q•õ–n7È«ï–q€×£?'ß»Þ>ûwÆm\ÜŽgÀßè8E·Ã0{‡ãœºeä1,ÌÉ£zÅíÙÓÐ9g™nyKq[Œ^â·&ŽåyND]Fȵ¸=§c9øb¯»=ún9'?”›âöV·Ãñª[¬ÂØ},=·ŸfNžÝšíÕÏÜéö¡ôæäîœìrq»´_š%:UÈ£¸·Ùë sr}ÙéºõªG±·e>²ßþ>y¦÷Õ…÷[¿ y {©{x}öï - ï@t»s·qYØKÑíÎYØKÝåV^ÉæðãöëN·òì1JÿM~Vü¸n$žÛ$éîOþ¿ñsøÎEüÜ÷qÝ^˜™ë_MÖb/¦ë§¾[Éý.åïÚ×”ÛÌ—K=4çõ!’Í`º–Y×mUu3ye¹À;Ï£CêÓÓÓé´3'ËHr^gÎó™ëŸ¬Á䢷—Z Àö«Î̳Ñ:W°óó·vpü¸ŸYÁBÜÎ6”ü*ø]­Á©¹˜+‡¤¿Ã³1ýIº´Þæ+|;´Ùbë$§1\ÊwyB/DKsW/í“óRÍ ‚ZŠ%©ø©·‚@Ç‹ëóØo[ØŽì7Í:ßoËD«5‚30aeI²¨´jnW^ò Ü:{)éTWZK0ž±‚’è¥þV>?7|PÀÔþz[K„$\hœ`¶_C-­x¬ÎH`ÚK+uB½ºÞâ¸(×Î~jÍ:|Tm5¤Œ4I¥j7L¯§6“¿ÞB}=*ì^9ï‘u®à±UM™ØœÚ€0½!µ’rÖòûm©[PC¤V•$XM ÈÔ‡"‹ÉvTæ¬Þ^*Û2 4ç^p:±Ù>Š ÛÆn~`üô>Ø“×ÖÛNÿ– k+JH©—«”kj¢Š’WÚñ†Ó&…þÑËë­é_qΫ½F†ô®QWµµññêØ|~n;M%F¤,ì“¥^ .S{c¥Ï¸{ýTB®jͪúæB¦6UýýÚ}¿Å~U×µ%¢n¢}èCÛ¶mÇ]ÉhïO Ð_&Šü9YÙ*áWÿLü&¨ÙšÄ‰ÂD>Þ¢i õ±ùɈ¯/ª£æ>½·ˆÑ- ~G“¦ÑuòàmI5&‰iM+¶¿J§wÜ6o´ ^ _Y4ƒHìõpcÝšõÙBn&•úiM— ý}r­¨Ï´‚f(™ÁãTžÊÚ<õே%‡?yž» zμšæ‚^ܦºS›1t=®GQGØTãï­n¡j§¤Úé ¬¿vžÐ1öj‚òšï¯·º>ÜÄ¿µéüRÞ–É>UMD==æ}£G‚œ›¬ û³Tëí¥¤ùà pìäon÷ëÚSÛ~R¥ÍØ4ÿÖ9ö—íÓWsþz‹¬¾êÞ7Õ|»M©Ù«Ù+ô4íÿˆ¿vn¬(¨pã7µõkS`Má ®çª4x…ÿ„Í¡qüEá\w–õýS:©ÿ~+I]‡ãúU˜ÒFUmTL½lOJ õîÎ/sŸ,ø¹é¨Rúúg:ëì¥Pe=³8 TiÙCçjíkš°…ðSœóˆØØò¹î,”o:¬Tð÷ÉPžÏD]Ž}mî ô7·oÚvò`0èç5¿H’®ú\ýêTsqÕSay½5uµÔ³€¸Rëé‘b›ð¢Ô–šŸ¦ÅKS=`¾Îò}C?^º~iŸÜNáÐ6Ûdô°On¯ï¶%p{1M¨A-¿YÐJ‘3(òYÿýo€{áTl#³Ö¯‰TpªŠñ7¨‹j†¼*d>–êNQSL¯·½” ¡·9ö‘ìÍzcÓ»A3zÍ~ÍÜÊì·å·yIõ‚î—»âÖBÉkM d8›± —$Óh‰Íó`k8cÅ˯)ö«º®tSíC/…ݪ»\©S6U³ AŸš;àóØßRkÛãÓ+Û{¾W1™®ÄέxuŸÜšmž¥>RNy”¥ò¥ý ’°…æw ^*nAÞ8"åc€µÃÞvŽêF?nK^ªì*9bóð÷mãìj™Zt½«˜ý€þ0Üo~¦"ö´YosÎ^J’½4™&¡—¥6šTd ÚKSVf¤Õ±j~+^à<‚ÓÌnóMÀ¨ŽÀ€2×”Ó¥¸UG´‹~E7‰ 0>Ž'øbpØ©çõ×[”,&kïùØ¡užk«—<¨Ú[¨ÕŒ£¼”¢:§NUbýÔë“É®O`Æ€z*}/ÛÌŽó½ÙÌ1Ú„W½¼»OöíÅd«®¼(/_D=˜˜A«†ˆ®eu¡’¤kî;_uhùÀÁxÑ ž?¸…åV*‚$©öŒ;7Òœož/sðÞ´ ™¥ ÈõKkÚ\%Ð\ì»%Q Û¸X·$Ú-‰ÝÆ…nãB·q¡Û¸Ðm\è6.tº ÝÆ…nãB·q¡Û¸Ðm\è6.tëvÇËá–kG¿Þ8ÎÔjºìTzSûäg·#ü_¥SÉŽÑ)&¿€v;æôY“"<Ì™ãü=ÇŸ*ÄFj5HÕ-tûdMznÇ2åÂav Ùª¬š«Ñ܈·h‹Éjtã—S¥¸æyþMºäÖ6LVfÙmž,§Ýí8Þâ¶Vƒí•çÖì¾È*\q[¿ ¸uçdiÜê9YÝ£[²:½}²»ÞBkqÛTãœüëtßoÝ}rIÆYܨ ÇÜĘÏꦩ¸sÜrŸü¬[º ÝÆ…nãB·q¡Û¸Ðm\è6.tº ÝÆerKBòìÁEùÿ>¾ endstream endobj 333 0 obj << /Type /XObject /Subtype /Image /Width 476 /Height 260 /BitsPerComponent 8 /ColorSpace 630 0 R /Length 3108 /Filter /FlateDecode >> stream H‰ì—Ë’ë¨Eõ'*îÈŠ¨QExÐáž2pN<óÿÓµÀÎd»Z¶¥<{• =@Hf‘€D!„ò.ú‘O¿y ë—~ØRø2†=p‰nq";ft;;Ön9ù|+²m·Â¸Ý9Ê-qÝú…nýB·~¡[¿Ð­_èÖ/tëºõ Ýú¥tÛ÷ýýÛúùŸl˜ÂíksÖàŸn7NÕ­ÌòÆNÉpƒzrÛÏ—  ÙÙíidv;©«'Sþ|8_ŽûÙÆm´V¸•9@•ÛʱôC5y m·õh-Ýö&nÉV¨»…Y¶Oñ™çÚ>ÅušosAêÝ ·Mhn?Э_žuKöÝú…nýB·~)ÝÈçy•Û+ù4r}•[ù—|”ÁÁËÜ®Q3ù-tëºõ‹v»´ØZ^ˆÑíö0n[Kyt»E¬ÛJ‘ÃõnÝn‘çÝv3úºÝu·`ϺíŽ~¾¾¾¿¦lºÝ05·ÑªŽÍ9ïû8ü:é„n7MÅm—Ï16§Ý×ñkàûOs;ÕÇq¨›¼š–Û)f ··°ýsãçØÉCnal§Ö7Ðu°*ÝÆ@›v¢Ý~ß?7naûTÜÆƒn؆ºç¾ÓÑøºàJ·å6åö¶?ÇŸŸï!l›oó0œÜÆÿéå® ,ƒnc¾qûuS;Äí×-lŒÛüÐ9‰Béö5äYð©1¹›–È??Ý9œ×pÛqP^ŸÔ¤O¹Âvøf[ylL†GΉ‰[ò2ž‹Û4SŽÉÛ§ñ 4–å÷­tçCØžÿ»[®“_Jëûv¢ævÙs§ã–¼›ŠÛ4Ï{·a‘å›n7NÍ­úH²nó¤{ºÝ4u· ã¶–G·[„nýB·~1nåPáz7n·ˆv+×*÷óèvƒü[kŸ¦î–|”Wº%æen«ó3y+/rÛ˜ŸÉ[y‘[âºõ‹uK¡ÝoЭ_èÖ/tëºõ Ýú…nýB·~¡[¿Ð­_èÖ/ÖmŸÓþ¯CV„nýRŒÉƒÑ~@†¿q£ä}’ÝžF&·ãÿìvLNd_·³íÉfŽÛ1†É¾XpÛë¸%{£áv۾¸Ý-·dÿЭ_èÖ/tëºõ Ýú¥t{<ño‡ÿÜþǃùüZq{9^Éþ©º•á*Ù;§ªÛÝ:€që—jÜ^èÖŒ[¿p¾õ ãÖ/œoý¸õ ç[¿0nýR[ºõ@=n9&{€qëÆ­_¸–ò ¿ü¸õ ãÖ/Œ[¿ðÈ/ürË…c²_·~á|ë—jÜ^èÖœo³Ò|{ [ãkÍ·‡+Ù—ëJó-ÝnŽCÝ-ãÖ‡k}L~~¾ýô/!Æ­_Únû éŸpÛuv]woGÞÀâ˜ü ÖävÖ7ý/íÈ;X“G·ý°õC:Ž»Òúa–´Ñí¸·³ÕñºT g“¯t» ŒÛôÿ˜ÛîJ·Ÿ§åöÔrÛOƒ2ÝnŸÖ˜¼·UÐíÝ%yOÇícrNéö“<·Këä°ÝôËïÛ³¸–z†Ã§ ±,~Ñí®aÜúeq-E·»fq-õ”[9QÛËÓnåÓ½””¬·dƒ¬4ß’ ¸õËZó-Ù—•¾oÉá|ëη~á˜ì–Æ|Ë1ÙŒ[¿Ôç[Æ­·~á|ë~ù…qëÆ­_¸–ò ¿ü¸õ ×R~áZÊ/Õ¸½Ð­·~á|ë– ×É~á|ëη~iÌ·Çáïù䙿ÛöÏ´ãö¢­êöJ\Ps$üf‹ÿk”â¶ÂVu;2ïà`á¼-¥„ékÓ…¸vp õS£TòÄž¦Bøí¾S©»5¶1ý r³1/ù „é‹Òé°âVÐÚÝ õÁe銗þɪLzëq«p) Á®¨}@Ñ¢Š—‘ÎmÝmnüöZJJ3gí4Éð'ÙdÀ{ÊÞa:ÓuÒÆ|›ÅÍ…PœŽœcÙÁ{rßPÏØ@[øIS[7â<–ŒœJºòt߬ଟ=$çü0aºJõ´¾ÀTˆJ%kóºbu9ÕT½A™-î$¿%`s¾Ý ’‚šh±5›Wµ@†¶*Ü~¿å$6f}¾Õ­&¦|YÅw¾¡X‚©òÉ®~ ÓgS¬YÖÉ¢îÅø,9§,hŒ+ç)ãlzÂZiiM;å6×ÉssK°CnL%@]¶ÞŠÊt7éϧ-,Dö•V¸=·ù0ký¤Î£„ÁýêÁé>)«$"ªÍE7y{¾M-ûLÖ¢íP¼örª8·ç6Ózs“ÏG q[({!û@i§ MgçÆy[Ú¼!Óûih´ÛxÐü¾Åö—¹lÜÙþUtÿ:7 ©#¦¥yM“t”TãÖ¶¶ÙÕ$?wÕ3°XjnÀ•TÃôÑ4)IŠu{·Æää 9]én`Ž–ƒ[tF#°I…l($CêÚݸ…šRŸ±I»ñ–"¸±´h³bêãVÝ õ´lì¹õëäÐ\At(®ç|ø¾É…*·H*ï73ÕiFMj±i%æŒû¥u²`MØu0[­zË1Xàv| fêÀ5Ú'[oÃiMBB…ÇT¦¾N–|ƒ¬(w %*‡¢JÛBêÝ$¿R«+ðXË‹™9I­— 4ãV9«({ >_ß@Ù¦çïÂãHnXÁsÌW‡Sc7æÛTwY‹ê+6ž“'jã{¡è¢øäµÔÎŽMK."tÉÜÖKq‹Ïk­©Rvñ$û6Fqû.ªZ`þæãÜrz¸³Æã‘äKó­~\Ðk‰š9S{´]D ÖäÛˆ™M›þJEçÛv Çm0w£Dó|u³”7¤ãúêNùËuû‚pÓ”ªéæbKóm™JQ³–¨G}•W;ÑŠÍOgþÅǶQ ˆùž1W†ÓFܶû>ÍZ±…ÒýXeÎs(ªöÕc`ǶQª-,º5£œÆ|›Åhº7Ùçá%5èŠ:’|A• ­KØCþ®cÕ!_Í][[64ÖRù~0«ëQ]E ^õ¬`J©~RÑ)öºKy‹÷ëú’öðÔ3×ç[íLµ·ÎLÕTÕÖ*Pyîgðûq¯;³ë릵ÑrÔ©›^=0ߦJÄÖQZ·Jw'ÑWŠúlÉ=Èîseޝcn šX €uRŸoÕÁT¥Å”Jóƒ¤rªÕ—~†~qØ›ªìZÑÏõòZÀ&‘J㦾–ÂW#@¬ú¬^+Vh{FûxpŽUÙ_%ÁTXÌ÷ðÚøZX¯ë9M&uëæ–Ñ¹i¿·%Eœå×i• ú7è¸WŠ+êe±)ÚOòs½V0`“èU –‰'u·ØžÐol-F•]AawR÷¨–óLÙJ'Õ=[w4O×Sf¡ÍêÁfGíõu23}$+Åø\ˆ*Ìf…¢î,;C12@åÏÞûõ€™¶ ¤CÓ$æÎñh)náÁõæ-«3Å0Š´Š|=ÿH.¨+Wõãkú¸ñ’ÒvË›HW Øžoëq›õ™6‹u‘裕è'ˆ9W˾&A_Úûul«ØòXÔ’c¡>&Ãà uµúu1û& ¡gêÌô¯ÏÙí7Øýu=Ôéb:Cò&E—;ß·µêTŸK nÆâbö…§Šù%ÅO«´>Oõâ€{Õ!v{ݶ™ŠÕ¨P5pMØxK+n³Ó'* ^¾Pù¥mýÛ‹àxl{9šÖï±ÛëØ„ªŸÛ¶6­ÒÒ5·Ä tëë–8B»%Þ [¿Ð­_èÖ/tëºõ Ýú…nýB·~¡[¿Ð­_èÖ/tëºõ Ýú…nýbÝö}?î¹·¯—ëû¹’\LçÝrªŸü7ŒÛþïÒ(d;G_É&o@»ícz‹¬Iîæ‹ý|ãOeb%¹˜@$÷êº~²&-·}ra7»„Ë*¬š»Ñ\(³Éj4ã§S¥8_«ù7é’[[1Y™e·q°œVG´}ÿˆÛ\ –W5·fõEVáŽÛ|&à¶:&KáVÉêeÜ’Õi­“«ó-”¸·E1ŽÉo§ù}[]'§¤ŸÅõ*³Uôñ(/š’»Š[®“_‚uKü@·~¡[¿Ð­_èÖ/tëºõ Ýú…nýB·~¡[¿Ln‰K>ݹ!¿áÿ$k´ endstream endobj 334 0 obj << /Type /Page /Parent 679 0 R /Resources 335 0 R /Contents 336 0 R /MediaBox [ 0 0 595 842 ] /CropBox [ 0 0 595 842 ] /Rotate 0 >> endobj 335 0 obj << /ProcSet [ /PDF /Text /ImageC /ImageI ] /Font << /TT2 838 0 R /TT4 840 0 R /TT6 536 0 R >> /XObject << /Im112 337 0 R /Im113 338 0 R >> /ExtGState << /GS1 843 0 R >> /ColorSpace << /Cs53 626 0 R /Cs56 633 0 R >> >> endobj 336 0 obj << /Length 966 /Filter /FlateDecode >> stream H‰ŒVÛRÛ0}÷WèQz°°dY–û:t&RóTúI¸“¹pùòÁÝ‹LfÚ2™±ÖÒîêìJç8'urT×NQß%•®¼ÈàGF™éÊ Wh›e¹¨gIFk«ûäèë#î×I¦³Ì‰z”¤hAŠçä§ì©\çòBÁ\.OU€çMõתÔ^ŽˉȵיJM^È/SeŒ.¥pF¤0ëìmå …qÔDYmäJô‡ó­2™NÕ¯úb·ŒÝXBã.=`r œàe‘fRö´¥_¥êߘÃsŽ\—˜¥î¡Û(‘".·[h¨‘–¹^C £…¥Ÿ©ÔÊ1•l6âæ¢w'Ï[¼±×0Yæ"6|O˜v3Ö…¹ÄrHãœ_§âNaÒ…J¼®èElZç'vžnãûæûkä’Ý'*-ÐÿF¥º~¡ †Ò@HKh»¸•”•7jàT0Ã='Ò ŸÂq΂fn#7ëåt1¸Ï«²¸¶Vx!LÂéq1cNÏk^Ù,xœ-ÆÍ]ŒŒ+-zª‰çøå…W60îÛ˜”]:½ÀÈúï-·û–[n9l¡³ž+²©±…Ûyó¸%«ã0'ŸMÃÍ$zai-†GqgLv3G´[‰Émþž‡çó°òôª/žØ3Nyg΄æ’×öØ`‡ô BÃS£èM³˜‹70S®ÝbÇUSgÎêä1ɉ*dƒ±¥.¼(ŒÕ.›F³äèbf Y½Eò=9©;ü8”k=Fº ˜m£€ ^ø}Ç=wü¼̹¼ß*ˆ« hθ[V¾)<×1ͳp *¨ ‚ôȾÆNXÉÎçÊÈ ç„²QJÖŠ áŠ\gá? a²C‰€¶ýK"2]HDñ.EG" ”¬$b *0.ûgŸˆ6[ÕU‡Õ!°:VÔR†VBÔ…u!D]À‹5nã‘÷‘‘÷–.+²êµÄùJzÅ|?`»%¶ÓU´®‡–ë!r.ý;à C`P<¾à1Ú2£Ã£Ã_Ýù ¹=£1Ñ]bK¨Þ%<°½¦E=2ÖfÑu8¢‘ŸÝlc²›D¼v{^ch?jÄ;‹§ÔUOßE/ûx.èFG÷Ë82,¶ç´×†ZVƒ9PpSœ¼ÜÑÛFç-¥2)휰²v)‚Ò%ÞF”†ªKé[Î> stream H‰ì׋b¢:EÑDÉØÞÿÿà«'…!œÙ{Z¤„Ú©«h mÊŸ¯gþXÜó'Ð5Ê0MK{X^ªL;L×´˜´¡ºõÕ1Ââ£xL›]9˜ÎÌL›“ö³2{N+î¬tV+0ƒX(“(]Žn‚Åj6ðûÃŒ4qf†{&žçW`ÒµS(0…S(0…S(0…S(0…S¨)¦µöý·YÿI-5Á|Ãä‡^à`¶VÓx­~ŽÆÍëË0mLëe'Ò‰%Ì[ŸÇ¬ê›aÜïúÃáñF'5 LLã§`™&k8{ÕÍ–Ži³>§˜v43é´ê˜ÙÒÆ˜î—6ÎÜxÏL'âyZ3˜³AÕp` µ“L¡À L¡¦˜w:¡£0;úë™î(Ì=ž—6µÏ‹f)˜Bå/úÒ iyõf˜ +¤¥10©Äœ?ai ÌFÚŠé|å7€ÙD5ÌŒkŒéþ<þ<žÃ0˜m5Å Œåìóc?>÷ë ˜­5Átéë|ö ŸÇ«ŸÇZÌðlÙTŸË…­ó׆Ï~¡¹:æðJN0Ÿ³·|NÌU˜Ñ$mæ+0WœOi3^Ãø}ÿ’ÆW¶À|ø‹ìc%f‰8ÃuýðÎ.?'ÇDó}…å f8Õ˜Ùs%¦± ’‘ÒÅ#ÌϪ-Vã~˜-q.e˜ùÄܸraJ‚`~_¾ºØp™-&æ«YWÅŒÿ0?+[)nÀÌ'¦Ù†æy}ffç€ùM[ffèwóÌ\ÆÌV@91–[«¾5ÉîpåûL3@þš33Ý…ó[g¶¾5i÷™WŸ94ùÑ=“Žn‚o¨åÑ1æ0ÛkŠYïRŽùa0Ûª†Y;ai ÌFS(0…*0ͽR÷v ÌF*^ô®Úû10ÛhŸÌ&S¨Ã0«÷X:¶ƒ0gî±tlaÒUS¨1&]¹“.˜B)˜B)˜B)˜B)˜B)ÔÓ¦­=á¿CߦP“Ëì‹Ð¾2¯ýª)aÞúÌþÓcö›5ÞÓó|ifö³”oÓ–3“šoÓOÌ8A 3óÍaÒS(0…S(0…S¨)ætɺ*fGlóo_h‡À L¡À L¡À L¡À L¡À L¡À L¡À L¡À L¡À L¡À L¡À L¡À L¡À L¡¾Å¼S3}ÙQ#™L™î`ê¦P` µ€i{+;|¼ZÀtáùœs“½4ìòƒ´wk1ýî fì‚\Ú ÓamÁL;#LW(Õ&äx„Žh+æ»ËlWÁŒÖ\emÌìöd3Íã:3»{Ö‡içvÇœ^p«-liÿ–ÞgZ?߬f³kk¾3>ÊeöØ–0o™¿Ï¬®f=‘‹³°WsÓ÷),€msU÷³ )˜B)Ô˜æNô5¦9ûï‘R_cR;)˜B)˜B)˜B)˜B)˜B)˜B)˜B)˜B)˜B)˜B)˜B)˜B)˜BÍ`Ò%«bvtÍj˜¿tÍÀ L¡À L¡À L¡À L¡À L¡À L¡À L¡À L¡À L¡À L¡À L¡À L¡À L¡À L¡À L¡À L¡À L¡À L¡À L¡À L¡Àª†I— L¡Æ˜tåJLº|` ¦P` ¦P` ¦P` ¦P` ¦P` ¦P` ¦P` 5Æ´Öök¾×ÖϳÖ?I:­{Ž®z~ÚØÓfŸo›9iü×`+ÃtD%¦ ÛçÜLòÐú¯Ã +ó'I§™l®ÚâG”ÏO_5‡iãU4{ðxÙáb0c}wNeó1¦Ï›™ù-±0MÇjà£íæø‰éÛ–1ÃõoXÒdÓÒÚ5˜é´lMTÃ-™è³Þ`¦¯L†Y½Ìš fy™-~ÆtfÒ÷Í­f«÷ÌìŒw3sr—Ùã›}ŸY]ÍÆõR¶´á)lØK+ˆUÁd5»OcLºp` ¦P` ¦P` ¦P` ¦P` ¦P&itö_Õû踄g endstream endobj 338 0 obj << /Type /XObject /Subtype /Image /Width 477 /Height 259 /BitsPerComponent 8 /ColorSpace 633 0 R /Length 3959 /Filter /FlateDecode >> stream H‰ìW½rë¼dŠÌ-¢™´®RªA“ÊïÿT7Ö¹ €²Ï±dk["H±I‹$¢â¼·‰ßC’In`4r‡oliË/ñ2r¯p7\SH šÜ‰ÂïÇ0€0·O ÃÒ8Woçzbg|“û9a¡m"pIQ¦â° í3qLÌäÊBžHexÝ„‰Ü–ÖkÛ•c:±#rëC—ÜAen⨰äÖÄ(}×ö6練8"ˆÜD,$¹‘äF’In`$¹‘äF’In`$¹á; Ãõ~ÃòK–Ü+´-M—HrŸ\YØ›r¸>.âšÖ3¹ÃRЉãÈýœ°;sç?æö¥¸T¯ïÏÄ1 É]i3äÊ’¢DnKæUû¦Ã:ñlëç«%wP™›8 :äÂI;Ô mçíP3»ž¹M1ù= zäv‘Ô½’ÜÀ¸›ÜÄë É Œ$70’ÜÀpÈ}Oì_#÷œØ>~‰ÜG œø/x Iî!‘äF’ÈÁÖkû6–äDîÆk«-É=(˜Ü¾ÂV[’{PÜKnYÀ’ÜCÂ#èÓä–Ó¿ÓÛÛÇÛÜœä–Ü•VÎÎ¥íãt:]~EŠ$¹G‡!·4³s~½Þþ½½½þ•ñFrëpË^Ã_Eá÷Â'ˆ@rËéã›Ú·ïĽܶ¿øÝŠûÃᯣÿN´”*#HîÛ²+¿•ñÖmyÝã×gY)Ã×RY@–ú*Jú'Äm‡ÜUUˆÜ²¸߉{ã¶\ho]¨)5‰+¥Ò8­ü }©Bû ×òšuGr¿÷ãBïwâÞJns}]¢8öZµ èN·÷lË—ÄØýNÜÏÜ6åúTílJ#·ÉÕ‚jŠ ðËäbâþgr›$*sů¶™›¸†{2·žÖß»ò½ÿs[Æzg.i0Çk‡Ü–ï‡ûW¨¬·S¡3wª'jïÍÜz½íÜ–ë£m- &0lë‰MøÿsgxäŽjÇ›oˉ=aÈ­òòv3wOIîñaÉõÿ+qÛҜ乞ÂV[’{P$¹‘ä‘+ïÎWے܃‚88»¸Þ–äá É=$’ÜÀø=rÝC:ñTü¹C:ñTü¹‰ HrÛEn"’ÜÀHr#É Œ$70’ÜÀHr#É Œ$70’ÜÀHrÃ;´ç°‹E‰‡!É »-_(.Ëgú&˯ ÷sÂLîô[ÈŸ‰×‚&wá{¦³eî”ʼn×¹gnâÕÐ#wIÜšÀ’™ûzè’›x}$¹‘äF’In`$¹á{úÌO€ÏÙ%÷óœx}tȽT'^Ÿ½ÌÝ׬Ä#™~æ~%¹™yæFfn`ä™™¹‘gn`dæF's“ÜèdnnË™™¹‘™™¹‘…£³-gæF@fn`dæFfn`ä_¡ÀÈ¿Bqñ•Ûr`dæFž¹ñØÌ}Oÿ{ð™û~NröÉýJr_ïçÇž¹IîðÞÉÜŸ¹{/(Ñ™½Ì½œ¹ÃD×p?¹¥”›&/Ëo}:ÍM£´Q =Ô¨øÇ±•¹Ãð3r˹ÖB¹h•¥è¶Ã«`±Ðcš¯P¯[¦­3w˜ˆ~Ã\º¼ʇµÍ[¦/Ï%…æW9+I“Ûjq"­iÜNn²{A—Ü»¾Ö_­q3·¬c—ù·¾Š• pÁjçª]ªFÜ5NÚ¬Iî„Ím¹òHÿ”\ýšK¥À!ÙÚIgjªjS]{$¹]lo˲fï0(r皟;sDJu[.ä6e…$·‡+™;“«Òuèd­>sKïuöÈeµ$÷¸–¹õ½}[F~úgîj@YŸMånr퀮âŸÃµÌ]oË*s·nËçú?wó¶¼ Ôg)•$¼-·±¸cEa~élþÛØÊÜŸà½;SyÞ¢3¶þ %¹/Žî¶üðÌM<ÏËÜÄÓ±u¡ú¹òž8 |¡’½£5xlæ&…gnâ@øzì…*q(øä~%¹gn`ä™yæFFž¹‘gn`ä™yæFnË‘Ûr`dæFfn`dæFfn`dæFfn`tÈÍ̀ܖ#·åÀÈÌ ŒÌܸøÊ U`øä~%¹gn`ô¶åÏésÿãxŸ?ø¨_ŸÜs"\reö]û~cÉÎ_—Üq\¼³BLÁ­«±ÞVÃ…ØâúÜÈÜ%¤%`ªWÎèüûeªáÅÞd~ ‘­›¹kÏ›@þUýžSÆÐ"SþV¾ŸøäRè­Üû‚n•ÑÁ¿\nñȱUCû¯|‰´ÍÌU¾#?ªt9ÄÎóÊjCvhW¶G¥-Ù'£ÀÙÊiуBªò¬2ØÚŸµ W@§s<±±}æJUæäàz]b&ü¨<^/¯ÁÈõËÂó°=Í Rh}lú6ÇÉÎ"QÉ>g·’/ßíÌí¸uä ÔȬÀ+·Û‚ÚØ&¤£Â•OEøÁ!£æ2q²ç™ËëFë-)z9.¹èyg™h‚Ú)Q(ØT Lš*Ä)¢L2ŒQš_=Zó%8±iËN¢eÙü‹~¯u~æ²¹ŽgÑ´`T©|yô2—uGè‚~â`3÷[/ÈÀ^Ü?= ˆd˜¦wBY°Ý†š×–‡\¢ªZþ"Ի˥E ÷èÿªÉ¤ýA1ìód]ÍZ´öHíJÛcOù@ૌ2·>TUW¶Œì~¾¨Ó…ÃsÄ¢Ñÿ+äùƒcžKz2ÇKzv=¨Fcûç° Ú|…,tW!d™Î }Î\°Bä,Z¹®›¹&ÛÚÈ0­('ªF$O“Nüô°sÛ5)ÓªžØ6QS±Ånx.ÇR³î9¢oS]uâ¥O+¼r[kòc7‡½ÒVcTÊÞpm0"-åyGªÅ„$GV=G¬qè_± ê:·nË*ªÙ«(’Ûtl‰ªùÙú7]G6œsTˆ~‘=–#€üà…@½ŒÏUƒž^ /ýò¾v[ÆõQwϱŽë˜`ÞU|-»(˜Óx„ìA£U u4±è€ÖöÛg./̵Œöî«WoËšÔÖü¥õÈ4ç¾ 4 lA¬å†¨X‰_&.ÛnLeÃ3Î\4Ř×\n÷æ+·eMRæ€i1ÖB‹=ÙáŠ+cN­_h¨Šlã ³·6µµÔljlZuC«SiÔzo÷ÎÜQÌyÒ¸˜ÉcB4Wh«qngM£®£+5­ÔÏ“[ô·‚¨Ix®‰¸0Å¥ê%¶ÿXY™_WþçêåtælS‘¢-ÕÁ ‘!ý"­‰+]*ÖÕœ~l)î…KM”êôP@ýUíöÿ\ì¢Çobô”—è$DwÆy\tàÝsuwe ‘i; uÃzá¾úUL¯˜(®þÏõ¯Ëž™ÝÎÝ$1¢›zÀÔ‘j 2Q½¥ýàêGAf·Z– *,Tä<\DsÑJía€Öpz™ÛF4aûöË%Ça¢·èsdÃ~ì®þ[&‹R=)vlŒy@:~ð»yHë˜7Øí<¨þ„ +OáZõQ«Ä6„1‚©SÞhÄðÔ¯ý—©‡^6 ¶Ô8§î,¼»r¡¡4upã¾ârŽ xúëšéì2`zç^”°?°NzÕð¦ãñá!/ÏÎ-28ŽX!™î³eA‚äSä "’\Á†ä#¹ÄH.1’KŒä#¹ÄH.1’KŒä#¹ÄH.1’KŒä#¹ÄH.1E®™½Nw*[g6ñ°Xö,½Õ¾øY®Áç’EPžÖ‹/äÚq|®­·#<Í›6¯ ±°–-<"¶/v²”kç® §)n‡BКj£:ÃGÔb±õÊÅŸÔàØïu ?ÉÍ ‹Í\È=öËwŠËÖìŽ\ƒ«“›R0±…+¹~5@n»-"7nËáuåŠí,³åö7"®Vn Ó¶üuÖÿsÛlù<Ø4g¡ÐŽ&ìøæ™Ó)¯‘«lù_(r’KŒä#¹ÄH.1’KŒä#¹ÄH.1’KŒä3å J^r+?¿ `„6 endstream endobj 339 0 obj << /Type /Page /Parent 679 0 R /Resources 340 0 R /Contents 341 0 R /MediaBox [ 0 0 595 842 ] /CropBox [ 0 0 595 842 ] /Rotate 0 >> endobj 340 0 obj << /ProcSet [ /PDF /Text /ImageC /ImageI ] /Font << /TT2 838 0 R /TT4 840 0 R /TT6 536 0 R >> /XObject << /Im114 342 0 R /Im115 343 0 R >> /ExtGState << /GS1 843 0 R >> /ColorSpace << /Cs53 626 0 R /Cs55 630 0 R >> >> endobj 341 0 obj << /Length 1618 /Filter /FlateDecode >> stream H‰¤WKoã6¾ûWðH0#ê­Þv“4p4.V{jzP$ù±°-×’ìïH~pçE[NPäPÉáÌÇá çÓøk9¹*ËX9U.&…-RÀM²À¡ŠA¤Êí$ ½Ãrru÷Í©e? lά'SœÄËä/}c"é™Y¤¯MÿHtߛ̦ºîö­Šlj3uQ–¾žçl¦Uª)HÓÎõw2c«Ö„Ö郺¯vGã]mÌßåïè{Ⱦ»¼ƒýÎRð)fÇɽ DOtRߨþœ3åI$¶!”7¨WO´’m9#°‰“m¼oq¾zÁw¿mÖƒ‰m¡ÕõýIàJsãB¾ÍÊ[ï±D{Û,RSð#÷AF>Ú -"F,W-&à \z_Ñ|Ç¢ ɤLwfZ@¬´ ù06|fÃÍq$~ÂÐÞ³ik¦‰ßççß0=ó™ ´¼U ô£¦3øØ5ˆX-Êš€ŽÏ3jF’GÃ~5ë~¿©ÀOúiBÜëñ¡8­Nþ¾Ò§ãásu½açû^ýÁ³mûƪކŒ1¸š:ë’S†|8ã\Âùj.YÐ;ƒÏ¯*ÚÞ™)¾Úš­9…å;>MŠˆC£›·óV·0ñ9òl?²<Ð.„ý]Èw<ìjòƒŸ~°ŒÝ0L‰¶´Ç™7Øw Ÿ‡{lt¤->ü€ùõN±Í #W6-ß¾‡”Þy@ë¨u¯vÚw}¿~Zoà±Ãa”ˈè( å/Rr…ÄŸfÿm׬fšÁ ðü I¼z®6G‚‚ƒU·#Ù±oj½ZT‡Ò_T<©[K‡Ü–“&Q è9W~^ØJ+Ìl’ª¸ÈmŒå_o'W³­s±ºé&N¾–£z¾ä»ž¥Ë,±±g<$¸ä\æ ßâ·µAÖZMjcÈ!Øü ‰ õë-ð]iD9+ ê¹¾—×?§(C‘¡æ ¬œ.É–Þ@ ã=¯v¤ô—jæ¼÷LG©ÍóϘ.ü?L—ŸC_0]®Õ ‰.Õ_L¬ïL³OxŽ`ÂX^F‚3!:µ¯ví‹$Õj”Ô áU‹VXµ |-,9z‰hü¤OÅ^ [,Ãô\,,î‘VBýåîÄf ä04^’±eHeRâ0ÊYöh€Àø  1ž ™åt²Cëžá?xü Œ“ÂÆÃœGxP±ö(Äm[^´o ’Î'7ìå{8=Â|G}áˆ#%¡pߌIz‡(ðY˜ä, »V}G`&¸€Nu²¹`f›C´ÀòíÀǺh/–»ãÚ¨5›måD–c¼3Ñ…7#pÇètAÇ•ãôœWìÃ5Ø7öÿ3÷)¸|¯V v%ŠmsAgþsâBœaH÷‡¶owf½€{áGEk€Ëz¿-c«ýîB<À» Â+Â|. V©rEØLžǪ{Q¯êé(hÃéœÌ92]5½’½K([9…ý\´LÇv'gÔœ)4ÙúJ™âÏšyªT¢Zm'ÄžSßQN´‡.Byªçë_ÞxÇo|)MŸƒù»×ÏU}0XÎêE òRçCýaŽkQ­dS€1ÁTRÇjÊ(W÷è|1—Œ^ qFqºPÕ³Ôn%¢ÍëIVí£ôR,}·‚vÁWÛÍä'Šj¹~ÞPõÞÎsÏ0u!Pž±DªU€¸PS¯uJ„ä ß{˜Œ’”1,”‡ªM|Ì2¼.µ%Ĉþ ‹;6©ŠÎ™2¾bFñ‰ô²%*&’À@ùÎy-b‘V2mö^“BÉ3¹ë}¥£-—@-…á ÄYõÔy„PÜe}~}Ò;ÇÀqÎÄâÛŠwÆz‹ÍX„µ“&4òµGsizI\Õ4ëgìÔóª'î+Ñ¢, ¤ÖÌÃCkf/Ô¬¯ÖŒºb‚†Æotú‘„C·õ˜¬Ë« ƒnˆŒ1!!ôCwàƒ†ºóª„&ËzVRDçÆ½_ûÞ/„(¥¹rQ€½Ÿƒ(ÃO¿øÔû%Ÿ÷~an‰ … Æ­ßèÇm> stream H‰ì—Írë,„¹€SY¾TUª²øÊk/<›ìrÿ×ôY–=à ['¶"Mºë <4H"EQEm§œóÛÄA=]YîÓ#Ýcjâ6˜7ß4;y:d™2Jj•N7Mlxãa>ÏÌ8Qû×­ÌTûlG;Ëä韘ÔJY¶¹Ëv¼š¯©ý ÙÂîZØÖ”É·e¦ö.Ŷ!XdWwØRÙÆÙÆÙÆÙÆÙÆÙÆÙÆUË6ç|ÿ±<ý¨«a{‡Ú”5ð'ÛËe+¼›ƒËa¸M=²ÍS¤ö£ÊötÓÄvDçÆüérJžÏ'j2lgj [™ ªØV+Ï¥Ú¨©MÔg뻵e›o©½Èg »l.þ¬{m.¾.ûm-H¼{Q‡mW$w‘m\­eKGdWdWdW-Ûÿ¨Ÿ×«Ø~Q?-ùzÛgÔK}GÏa@¶{ÙÆÙÆ2XzÙZ~#Û=J±]xÙZÊ#Û}J³íXÊ#Û}j-Û4I?@¶{”ÇèY¶éãÏûÛÛß·1›lw­–íLU{sÊûû1ü}¼'IB¶;WÃ6Õ{ôæxzûxô÷O:Ÿmº[‚ú–|¶£g¶WÛþ¹êý# ÙîP)ù¯CÓuš 'Ñlß>>þ¾_uµíclӶߦ¤N¬AL}WÞkp¹žmVPÛ·+ÚÁ·oWÛ>ê[Ã.Í Éö5´kÖä4¾"¿¿§Ëùò-¶cÀ6qQ~–` W°l;| »­Ê[ËÖ]“©§koËN}þç5¹:•kòËå~¥ò"k¾o%]®l{YÃÞƒçO¬¤[â’üùß·£<¶ƒe/gyзÔOªa[6ãél}{¾­Èò—lw¯–­ÿ‘¤ó®ú²Ý¹<¶^¥<²Ý§È6®È6®[ùÏÑ×Ý<²Ý§ƒ/W÷óÈv—z²Ý£È6®^ÆÖÝŸ©Mõ"¶ý™ÚT/bKÙÆ•eK’fKEÙÆÙÆÙÆÙÆÙÆÙÆÙÆÙÆÙÆÙÆ•e›ë1ÿ@8ÔE¶qÕ¬ÉÑ[jîøVúl+'}•!!ãÒ°…0zlë™kòZõ};ï·@]X¡ŠàI¥¯dëì­u ¦wתïÛ›ü-Y'Àˆ^³­ïcðœÏvÀ·ä[²]«µû­àrk{ÂG`+Κ¬üK¶ë´ö=y”‡²îµÞ~‹µ¬xO&Ûoèþ~[^v×䑬J‡Gu-e¥VïÉÓ.›ôÕ-·¦Q+Ôa;ï·›…±ms¿CwÞ¥6 cÛæ~‡ÖäMÃØ¶¹ß!ú6®èÛ¸Ú‹o©ÈõíçÖl©èsß@Ô+´ý–z…ö±ßR¯÷Û°â~XÜoãŠûm\qMŽ+®ÉqÅ59®èÛ¸¢o㊾+ú6®èÛ¸â÷m\qMŽ+®ÉqE߯}Wôm\¹¾ý$Ûúä7P\q¿+î·qÅý6¬zûíéö7^uÆÃ^ÿì@æÿzpÙ~Q!ä±=Ëyëÿo<óôþŽýï±U}!OJ÷ÛX!yÑ ^àG9ž-Öñ0rŸý‹g}ûÏéú¯æÍsÎÜ:ÿçs­í‰'T¿Cû?Þ¢õ}k»Yzëç<œÞ¯·[Æ_zU}W8¯œ Zßóñvî­ÉÕ7à šóécÞ]æãY?7¾[`œå¹'Dé~ Mcå®ÉÈÅ<ÔñRzÃÆÒÁmß-z–QêøvFÕóO­ª—^;EÚÑ2î]žíV&q3 HÄ­gS gä>uPºß@.05X• ¤'µì–*¡-ë  ¹zëh[ÍêD›€ýD²; Ê‚oàá3$»¢ëÀbhQ÷˜ÔF ÔC¯öíGa› ìÕx1óy?ÿ8(ýýÖ Ÿz¼x]i‹hŠbžk/€½B'g›ØV'º¾[”Ø”êJ3@Þ°üÐQ½„t}k—AË[®:ÀÐà©2ë´nÌ‘4WÍ´5ßMlâ5³P¼' ¶‡c ni¿E·‰ž´©lkP¡šõ«›ÕÚ\ׯZijÒ‰8=ýîÙY©êƒîíãE ú¸ô}k@8¤x®é«AªF¨¢v\Uf¤ÏglGÍ}·K:2X²ì[Þê¤îœßRfƒë°mç¥å`oZ²N›àk;³W‹‰TšÄmÈ»ñhb…p.Ù—³-¨|[éª~øßtÖe[} ¶f0tØ ’!c‰ô'{›*êV­¿µlDûlâG*:2Ѧ°å«ú°ñÑt¢¿&«(.P¡ÓÉ9OAuËÍ0딳yÊÎŒšÒ n"h£7‰îT´-+ŠX¸*?u4è½KI턌:è°1aÅ3#;¢­ ìIÔkqí”ÔXJq0šà³º_¢[;—ÊlÓ¦Cj(UŠC¶M±AÜ÷­¨çœ\3Zª\M¼mFÅ$}íL3'õ 7¯ÛRº>´,Í­ê”™†&ŠmRT\Òa+º¯¢žR[š©VõÑ;-oµ«fò܃Å3å f¶ayµ·½´°ZœqÓO5›¥4kš»&;á;¶:«ÚDÝ»óÀb°Cß4±Úalg3Gœ°ôÐØŽ˜ðkÐ&ýHc ÈÖøú”s%ªÍ¤Æ¦J;u¡UM ª0pâá<Àèj­Øð˜siÛÂèKÿ.›¤4t¿oÛ±mÆ jlÇØžÅ}ÒÁa˜cAë%ïà¼Ö™ib5­;5dë¼”&F·â—¥¨ÀÊ8/½KYÃÔq2˜Ì|)%õÃåv|Ó6Õûk*õ•¢æ›mÖ„©cµ]—ê©3Gu%ÝNú§¦èHp xl+yÜöqm,xJTj)k(›aiƒi^Tí \v€Z"8ךñ2Ñ›éjlÔ4}I î° Zg¿UÓÛ’Ï«éeS]c..z àÄQuÖçaè©ÕÄÔΜ³nÆ‹U  ŠËÎ÷3¶n愞5ONñ4çú¾uVÇZŸî.4«÷7å…¦º:@Ö%Øœy@Ü.ÖÃp ”8.6Vó†`Ûõ&“ƒ—¦ènaÐ˾Õc¢»¯›r‡Xl‰2ºDmIO3‰°°YÕ“Þdñg¸Ø‹’N‡ìÜkš×=–—¥¨¸Tg¼ï[*ˆÈ6®,[*4[*šÈ6®È6®È6®È6®È6®È6®È6®È6®È6®È6®È6®È6®È6®È6®È6®,ÛœóíôȳÙ/—óTI-¦ó®¹ÕO}O†m†ß]u ÙÉ‘lji¶y>^5"ÂÓ”˜§ûÙ*+©ÅœœUº~ê™ê±ÍeÉ…ÓÄ’U&P5O#¹ŒM´ÙÔÓÔõ-n§ qMóø›ã[[1õd-³ËñíL›ó#lk1x½òØš·/ê)ºÃ¶Þ °u×diØê5YµÑú–zºzïÉî~ %îù¶)Æ5ysu¿oÝ÷ärȸ¬2ó\Eþ?»u¬0DAðÿÿ:…DA¬AXfªë÷Š÷^k4Ív‡¶vò/ö¶thÛ¥m—¶]ÚviÛ¥m—¶]ÚviÛ¥m×hKÒíç¾xƯFÓ endstream endobj 343 0 obj << /Type /XObject /Subtype /Image /Width 468 /Height 295 /BitsPerComponent 8 /ColorSpace 626 0 R /Length 2940 /Filter /FlateDecode >> stream H‰ì—‰¢£ªE!îé~ÿÿÁ猪pˆug¯î80”V ˆs„BÙ ö Ý¡S<¼ó/œËÇápök‘wx¼œºøß¥›×áAnÅËé¨V8RÔ§Ì=ïËFÞÁvªäftœÊõ”Zo†tZá¹¾'N¹å½)SNÉ=¡S<è:ŃNñ S<è:Å£u꽟ïæã‡\ÆéŒ­X5x§Ó‹b:uQÚ+cóa¸MI<:õ±H4$çSœ>^D§£2û0ÖÇËXœÎr.•Ód«qêbB*§%uSëE 19”¾S;;[§¾ÊSr6¶S±Šúœe-õ9ózZRëÙtœv¡±ëC§x¬uJ®âA§xÐ)­Ó?ä<Žrú$gážG9Ý#.y‡}ÆžN¯âA§xȱŸÚDMo°èôJ(§›¨©::½Úi¿ÁT^‹µNCDw Ó+a9Öj§á¿Ÿÿ~~ÿÕtzIZ§É¦ÎÅX÷7þG§¥qʽÌÅñôó÷gàïÏB§2᫸Ã1¨ÇÉJq×öÕ!>eM'xl§q¬Dƒ±îïËé¦ æƒ$ˆ‹y§»Í× ÁÞæÄë8Le´¤ÓŸ8óþ¬vDF…ü)©depAÝ¥.!¯ 2PlrÒæ°²¥´ã45uÊ©XMW: Í©uZNAߕٷ ê+U޵­Í×)r† §2MW¬§µÌ §êªgÝõ¾Õ7£îܸ¬˜{Uš®ÌÓPæÉžÓR)¾Wtº1­p*ÓÔ­Ÿ{Ó³»N]]@§ï±&OÿÖçisêW{9ý‚õTaþ– bŽT¿OÝèóŸ[š§ye–§jßëôÄÒÜu¨i9'´5‰‹`ªàÛó´š&;N—æéEøv§y¦Ò?`k§ÿÝÅ©Ü~ ­SgþØÑu±úN¿Ë©Õ`ªŽN¯âA§x(§îÁs¶ŽN¯…û§É|^Š}ÆžN¯âq˜Ssý%á §õ—|„ƒœ’›C§xÔN Ú)ANñ S<è:ŃNñ S<è:ŃNñ SÀxˆ[âtԗӱ̨uO4½=K¶§{=u"u’–ùÙ3€Ž”^¶³žÖé¦ÓQ´«¸É\V8õê$×L_}fÿz=ufäÞÜkì{µ¡ N%+-çß¾žæ oš(c€æ÷©Œ.ÊtÇjÍ- ªé^¿O]oîÕ'1Ë:¹ïí5… ï´K;'~ŠÇж+áØYé´Ù¶|”¥NWlxöF‰7òô<ÖäéC§xÐ)÷rJA§xÜÊéÙ/pè:ŃNñ S<úNý²þ—t‘îc×&ÂlHŸŽ^Ê/;Bº !ÔWA—;YœÊÇS©Y$äú¦Ó]&š3Jyu3ÂnluêÓA~Š£ñl´ä´í1¼]éòиlS•§¶qäÆîVâ+¤y2ã™ÑÍ~o´“N½ó¯„ sŽæT.zmC݉Þå Ê]M:-ñÅ‚ú󧯶¢K°rÅÉ íq²çjV0¢”¯ã‰NÓ'§`)¨r±ç´é]—Ñ*§âeÓH$êá«ò´ì4²*Mk‹!X6ôà/pjJ«¾O'å©p-'¦ÄK-Ôz*Ú÷âlpšÕ¥¹lÚiH `é4„fœkÃ!ÔñJ$}r®Žr=§£ªœfjÿbÏ”*‚·ãŒíÊ>Kô[îT ¹ÓCdæi•Iå‹!õZ§Ü¤ÊSëiwÈÓö4b¯§NÞ©ì´âTÑ;•c§Íjˆ&œ¦¬’›Î9§®vÓ‰ƒ¼º°S¯NrÌ}õ‰X u€z=­¿EZiý[F^¨AìfŽ‘Êm²Ïê‰Õè~§eÃ+æRçòzš‹&ç^Ÿˆ¨*šˆ’gä±8­ÒÒø}*1ç¤<¥ eb F«Ùß§öOÑô`£_¨#|ð÷i߯:˜ÇiO¾+ê½Ñ§¡ÓE¼‘§çA§‹ S<è{9%‹ S-Ú¹w4ªÊEW¥,Þ“/ûöŸùUô^:]âA§xÐ)tŠÇ½œ’EÜÉ)YâA§xÐ)tŠâA§xÐ)tŠâA§xÐ)tŠâA§xÐ)tŠâA§xÐ)tŠâA§xÐ)tŠâA§xtœ’;c:}’[c9ýGnå”Ü:ŃNñ S<è;ý³‘}¢œÿP>ït㯯çQN('8Ý£ûÆ(§Ç?:=%þ¡Ðé)ñ…NO‰(tzJüC¡ÓSâ žÿP®à4ü2œVtïGIwâøÆë-Ÿ ›?¡÷ä/qâa›ÓåvO§ýøÁúè4HþÎ…VòÎùØ=è¨"òë&”»ñ¥ÓR%Íüùûs§n÷ló=§¥SΣd4È*ù­Ù_å§~ˆõ€/q*#9(!ªµº/Š¢F6F õs¶Å·×S:}ÑŒõj§)JÈswã4Èi=ûØ¿ýR½ù€/q*'°÷VÓ å´=u_oyüºRϽ½ø‡rY§o­wµ±ÆiP§=âוâ!Ö¾ÄiµRÉ=åë]ì*1²>™´:¾þBŠþåûÞwºo{âÝ/~:ívßÅÜí:ív?zÌét tz8tzJüC¡ÓSâ žÿP>ïÔýÙÄs—(gÇ?”;uÏìåìøGòy§ähè:ŃNñ S<è:Å£vJÐN tŠâA§xÐ)tŠâA§xÐ)tŠâA§xÐ)tŠâA§xÔN½÷¯Ó’¾Þnç} RšéºßÚEñÉ{TN½øÌÒiT)¼QMD;õéø›I£yŠ…>Þ§|S•2HiæDæzõŸìAÏ©ÏS«8E‡¢XU ›UoiÌËG´Õd3Ý<•Ë¥R[Ê,ïÕqÊi˜ìÄ´Ó4)Ž»‘¤Þ/qZš‰m“å´ÚU‘MÌ8-wN85ç^×8Õs¯zF›§d7zû^s=-æò´iƹ÷ctŸšûÞ|ðQ˜W•>…ðéªl†²3Ã)÷½»R;%÷‡Nñ S<è:ŃNñ S<è:ŃNñ S> endobj 345 0 obj << /ProcSet [ /PDF /Text /ImageC /ImageI ] /Font << /TT2 838 0 R /TT4 840 0 R /TT6 536 0 R >> /XObject << /Im116 347 0 R /Im117 348 0 R >> /ExtGState << /GS1 843 0 R >> /ColorSpace << /Cs57 635 0 R /Cs58 636 0 R >> >> endobj 346 0 obj << /Length 1205 /Filter /FlateDecode >> stream H‰œVÛnã6}×WÌ#YÀ IQ·¾íÆIiÒD›>lúàȲ£…-¹–¼i¾#þàÎ…N¼Û¢ lr8œ9œ9<ôÇ*:©*ªETÆe?<ÈM\:ðiìŒI ZG†×¶ËèäâÎÂrˆLlŒ‡ªŽ&4ÂÏÑg5ÕIœ¨K¶D꿯Ùt5è<ÎTÝoHâ,6zb“¼Àøj¢­s> Z3¹úÄÛdW£]lÕ®fÝN[£f+ýGõ aw‚Ý:F‡?‚;÷Yì¼gxÆRC Õ4vü±‰®¾PL‚øØQ˜jJ~u¤ ,‡&N­,ËŽFtö3=ñy®')¢mGøýÃ}°ë2N±“n¯èCåÑ%dz#¦‚³G÷E.Ñ«§FS\ØÌø·“é š2ôzR`·<ñàüUœW»0_¨Ø‰Úˆ{CðJÅHϱÔ)w‹ ƒ’ÀíRvÄ 3£¼ì+5™4ÌÛa³ša×(Ì‹v–{†¥:€«F½òøNã)1ÉOWodþ«Lײq´=œY²ÏÅF ¨&6¶é[g\*µ³ŽFT»WÌ›oäWö_jG@;Á4ŒT‹\ÍpnÉP7ð — óÙ’çtý‚ßSpk`Û¬E³ÕêsÃÕéêPã9<Ͼ¼yiÑo×úÇ/2jê8„—˜CÒ/ù-·¤fc½ y·\ø¦ ^²ú ¦UÈ5èú¡¡ù׸Û`nÅ<oUëz.zõ“ð4{W€Lн釡}lWíHþx{_tbñÆÖý¼]0MhþDòŠºíU} *Îû.PÇ»Ná‚+‘÷·Ýæ 6Èþš¿™Ø™ŠëYý%¶8œ3e\`“9>CO¹z\®-žcÚG¿E«£Ëÿ­8:¤{E&É‚:’r->«ó!$j¹Ó5¥_þ Ú:õz†‚X¢@]œP$û¼v¥ºçoñ:¿¾åÙV‘N´‡¤fÆ­tØ‘Àï…ÏciS÷#áóÿSø¸Íé{ÇÃõ:›c¯=‘ôîôúúvúßò&[íA߬}Ó7”¶®AAC-CÉ!ÁG /$\T•MXÂþæDIIHbÕF/Ù/Ö¤ x’Ô¨4ì1b;V-ŠŠH;èFRÊ׋-QÓ"¥¨Ô›§¶òWAžM³G…‚º_?öðØÿõ½*ñ¥±Ky|`¤«êPÊ‚’ÑÇáªFôDj§…S] „öŽ·! :q]ÁMaØÓðA± °WôN¨±¥ïgßK„yÛñ‡ ÄÃæVFKÓ%ןÂìØ,¡¶ôÖD¼G²¬J#`8Dˆ4ðãS¨#|IÊ–‡—•FTª¡ê±‚­—Ö”ªëú–¥vÖ…×a†¯c*éq¤Ÿ14þ_ã@!‹IÛIÓñ= ¿ëÙ2l ï¾mžƒ o÷Ǻâi!º‚4Ã;h>¤xµ’µÿ"t%ÿ±®8O—]ßÿv‘°üóʱÆ8ÑO“š#)Xc¼§îxvŠ,*Ô5ëJÁÿÔ |c‘¥D"ÖÏÚ’…~àñþ$cP endstream endobj 347 0 obj << /Type /XObject /Subtype /Image /Width 438 /Height 288 /BitsPerComponent 8 /ColorSpace 635 0 R /Length 2141 /Filter /FlateDecode >> stream H‰ì—‹z¤(!“e2Ù÷ßíVíÕI¼ü›ª´‚Üô³røÿáÍÑ©‚[âŸ?ßS„´ãã߃u~:rfæê'…oÉš+âÎüLö ®d²6ËKÖæàZr}kp%=k¾^ã°v3¬µ¼–ù´—Œ±ælÌaíb k ÖÁš"XSkŠ`M¬)‚5E°¦Öi­yï×»ùå€Kh¬­øXªžf±v]knÑ2E]:=/c ÎÖüRdÂdko‹µYJÿ4×/Ù¥8¦op4•µè£±æ– *¬åð‹­7-ˆðEÆÖúÖZóU¬Áñô­™Õ̧˜ÊkšO±˜ÖµÜqÇ3°6'wkŠìµwkŠ`M¬)ÒZûGr”µw8÷~”5÷Äóífí;F†¬)‚5EJk¯¶+¯·2X;“ÊÚ‹íÊ«:¬Km­Óä×ûjÖÎe¿µ°PvÀÚ™ô­/µµðûã÷Çã7WcízÖ¢¯2ž–º? á38¬]DÇZÈ×6žæäãÏÇ“?ßa-¬ÔÀ‘µ9ÎkP›¤=B k§‚ÙP´ÖÂÒhN\iíc™?¶Z Ñ¿0ÄË®]^F¡ÝެŦ®°fVµ­ÖB!gÉde•<c¶ˆk±¾²fCmk¬UVB´ƒµ½ä}ý®²µ/Y›ÀX L‘ë¤W´Ëš 5÷kÝ6³/Ö"Ÿk9º˜!ÿšÁÎ?¤M^õ½æfcŸn_¬™=bü°å˜ w0ú^›[ÛkpkiÑ[ÒµßX»ŒžµâÓ ¶–7[ˆµSé[+¨¬õê°v.XSkŠTÖܯï«uX;—Òš{ï²^‡µSù§?óí¦o âHkp‡Y뮃ðMdm°Â7q5¸=XS¤¶”Ö@¬)‚5E°¦ÖÁš"XSkŠ`M¬)‚5Ejk>Ÿý›Àš"Í ùt埸çßôCßÝÈÖÞ&fkÓ±X›Nop*k‹ÇÙS޵)îà.¼°æËXƒû0°¶„Z 9G¬Ý‰‘5¸3XSkŠ`M¬)‚5EZkÿ½yïZ{‡;3²vv¼Ã°¦ÖÁš"XSkŠ`M¬)‚5E°¦ÖÁš"XSkŠ`M¬)‚5E°¦ÖÁš"XSkŠ`M¬)‚5E°¦Ö¹‡µ7ØÅM¬{;u°¦ÖÁš"XSä…5ÿ`j³¤>˜²ñÈÞ­4(ù0eÂJõúÔ ”§¶Ýh¤¦ªÕ]ÉØZ²bh¡(볪µxŒo³f7|ÿÃq¢hqk)fŒ…¢,‡¢IžUI­ŸsÏÄ62F kñŸý™Ì!b’D„¢Æ´0ÖÒˆKíœO§y¬²ÿt]4(ž ]]ÆŠ5÷ÊZ.ng¬Å$½(µÖÒÛM¯?¤Š¬…q[ó³­ŠèëôÍ¥±O0Žà³X_ײ5oâÈosΖ• µé1æõ$”o¨Ê¦¤|qMÛè?kj;vï㨽­ë=Èu¬ì!›2çL´ÛÌ)Þ¼¯¬Ù}[n™c­·b­×¶µ[£¬¹bœ8\¨&Ùk§È½ëš‹WÎFShyõ¹³)>F5CºÖºqÙX«;ŽúfGãÁmô]ÆÞ=äB©À·nâ2Ø4ؾ®¹n¬£žµ8)<ÚŽÝQ‡ÖB{»ËØó½fû™2ŸæASQDœ¯bm㲘sfÉ15=ÃñÕÇs0ßfŒv4s“`äÍ£}žËXY×N{Œ=¯}c—ONÒÚ…¯íê]HDÐ`M¬)rk° ¬)rkçÞN¬)‚5E°¦ÖyaÍ?˜Ú,©OÎ×Ã4ý~þåÒclcdͧ Ð$‹%S\T_UoëÄÛ[´Õ°a¬Ùe«—Ëzf«ó+kõÀ°™×ÖâÔ5ï/L y¿ÅZnf6(=kÕþVX±–¯œ±Ö!]c­œ!‹{´±;í!»ëši±kM3fÈodø½ÖÝC¦“_”ø¢ÒÇ!|ÌåmG²Ò±Ær'µ5PkŠ`M¬)‚5E°¦ÖÁš"XSkŠ`M‘Ùˆqõ¿ ÀÏá¿=Àôð endstream endobj 348 0 obj << /Type /XObject /Subtype /Image /Width 476 /Height 297 /BitsPerComponent 8 /ColorSpace 636 0 R /Length 2330 /Filter /FlateDecode >> stream H‰ì—½n¬:E]it‹±”vª)Ó¸IÅû?ÖÀ ˜„ß­µ&ƒˆ²²ýçà8¬žH›QÓ—9 WúēìYç2íÌ\†FLNÛR‡²mºnn?ÈuƒúkÂ4_‚wƒ7§{.J¯6M;¼Æ_ñ†si$t–;;v°Wà6\Ó‡N%v;Жl\¨·“n£sÝp8“$·¡Šú*;¨·¾†öõÖ…¬¶Zý5]†“ÌÉÄMÜê2r 2àVÜê‚[]p« nuÁ­.¸ÕeìÖZ»|™õ_¸0#· Ö|Wí·'ëÖyyM‚»M}BݺµþT4®CïöÝàݶêò›¶ßïúÓ¡}Ã5¸ ÖFnhâ¶r]T¨á¦ÝæÓ:vk¹…«wUYÛ峯µ¶ËuWoûè½ n'ÁÜ}À­.kÝÂ}À­.¸Õ·ºŒÝ>á|ör[ÁÙ¸j/·[ÜþÂ6p{Ep« nu‰Ì-¶æb¸½"‰Û™ÅÖ\n¯IêvzÀ\n¯ÉZ·Æ“^€Û+’sÙº5¯¯ÇãëÑvãöҌݫi6}ß×ëõª¿Æ‡Û‹3rkúã8›móx=þ=×?ó]æ6Ü­›ú !C4z¢VwÛþmGnÍëëcöñõ‰m‘Ûnnï6á›ÇôÉöÀ,Æä—C~?¤«m\êöá§ä‡ù.œ“#[õ¦¿mnZ‘¦y¦‰®IÅG0M¢vÂmê·ÆÛ¯OlËæäTWtwÍИ®É2ýX˜#· îöCšºY4rû‰íWm÷ÛB·É3Ý´[«[sDj×ÌÉul¹ŸØ–ÕÛÁcÿèÖ0)ýV¸c»Òí¨Þ.»Í‚5¬ÉmW©?Sòº÷ÛÑ:yÎí (%ûWÇäýÖ5ÓñÇìÚ9yô~;X'ÇCrƒX'ÿ‚üûmKÎíwmö»t g2rÛcßfsûýýÂíå»Í¿$¥}¾·—&ç67`®·×·ºàV—Ä­{f¨ûp{MU–å>Ü^’màöŠàV—ÝÜfë3ÊNn'ê3ÊNnAÜê2t B¤nA Üê‚[]p« nuÁ­.¸Õ·ºàVÜê‚[]†nm¿µ'ü:°!¸Õe4'×Fm«?Í’ïIïöÝкm¾Þm³yý¸õ¶[›}n› ý˜qkÓÜÂݘpëcÛÅבÛû1åînuÁ­.¸Õ·ºàV—±Û×›À§Ê¹}Wpònë³pwÞ¹=ów‚m ·ºdsûƒ[È­.Ô[]È­.Ô[]È­.Ô[]È­.ùÜâV|n™“ ·º[]È­.äVÞtÉÏÉäVr« ¹Õ…ÜêÂ;.¼Éòܬ ¹Õ…z«Ë ¹}ÂüwF½}Vp®ÊºýÙÙíŽ7‡À³:¡ÞâöžùÜî\oq{äV—‰ÜRo ·ºœZo1M÷™ñpøSn›ÜZkóWÙ¤qíP;9|üЦ1.£·›17'צò¶²g źඵhüO½ ²}ža%¦£9œ™“[W¶þ±!ßݤq®Ïjw&tw× ‰Ý¶;Æô–óy†µs¹í¥ÙNœß Møi‡uß¾;æŒ[—æ·¿#V»”[kSyvØÄ%·ÝŒFYrk˜”Kü§[Ìmðg­]ívju•«·ƒÜÂ/‰RQVo3R s›e°N6qܼsï@‘Ó®ÈÚ±Û¸Þöë«å99~¿m[ÖÉ›25'¿£÷[?'û%ó0ÅÉ:9^M-­“agær›aùv2¬ÉC×üŠðKfÖR9ÝÚ’Q¸=„™µÔžÝñæX™Û­ºãÍ!@nuY¹–Úê¡;ÞsòϾnÝàŒÜº !¿–ÚµÞÂAœ‘[8†ê-¹Õ…z« ¹Õ%Ÿ[Ü*Ï-s²Ìɺ°–Ò…ÜêBnu!·º[]È­,?¸Õ%ï–9Y|½%· [Y¨·ÂdÝþàVê­.Ô[]¨·ºdçdê­äV—üZŠz«ÀDn_ïæ³Ëf݇ÂèD8u[9· nuÁ­.¸Õeέµv0Úv›n„zàR̸µn¤,ãÚ΀YpÛF³Ng“ÐvS·ÝÔèÁùäܾ¼5o¸Õè76Ÿœ =o8—I·Îûô¶\d0hì‡ Ý:b{>Ånítný&qKÕ=Ÿ%·QuíJiœ¬ŽmäÝRn¯À¢Û„Ý Üê²Î-Ü Üê‚[]p«ËœÛ'Ü—%·Ü•g…[Une!·ºàVÜêRâÖ]‘Õ'¦úF#áP ÜÖ‚zIéQ5Ó7 ‡òw·¦šèÃíÉàV—?»îãö2àV—nÛUïÀØhzž G³âÈ¿Ñ Þs’»Í„£)q;ò.ÌÝÂ…Á­.¸Õ·ºàVÜê‚[]p« nuÁ­.%n1UÛ˜¾ñ$͉Q_Ùu°9n1Ug-qb†'¢£u×ÁæÎÉÅŽ2)ÆíI”¹ skÔT]ÇŒÛòë`{ŠÜvF:š˜Ÿ¯ƒ(ZKu£×¹]qì@ùZ*m*?ÑVéÊ8¾õŠë`JÜö/1UÜTÑ‘'u[~ìAá:¹ t]ŠMÝÂ¥À­.¸Õ·ºàVÜê‚[]p« nuÁ­.¸Õ·ºàVÜê‚[]p« nuÁ­.¸ÕeÑ­{Â]YpëÎþçƒ?°àn nu™v ·gÊ-h€[]p« nua%LêÔÀ­.¸Õ·ºàVÜê‚[]p« nuÁ­.¸Õ·ºàVÜê‚[]p«ËЭµ¶iJ®µùqÖú›ôÃÒ¾OoÑýáo ÜÚè»ÈÄ á?‡ÍtänmØ~’Õ*ŠÒú㿤3¾I?ÌEI¶É#ÒûÖL¹µÝ”5Þet:錬®ŽÍÙøãnØŒÉÜÆå4QÜŸËùlçÜo 3ï6L–íê( ­µ%nûaÑò*çv°ú‚MXpÛ¹ÈmvNv#·éœœ> endobj 350 0 obj << /ProcSet [ /PDF /Text /ImageC /ImageI ] /Font << /TT2 838 0 R /TT4 840 0 R /TT6 536 0 R >> /XObject << /Im118 352 0 R /Im119 353 0 R >> /ExtGState << /GS1 843 0 R >> /ColorSpace << /Cs55 630 0 R /Cs59 639 0 R >> >> endobj 351 0 obj << /Length 969 /Filter /FlateDecode >> stream H‰œUMsã6 ½ëWàHÄõµ·¬ívÒ™w½Ê©éA±eG[re9i~Gòƒ ´ÝÙv:ž±H€÷¤UtUU Të¨Te~‘kUZp©²Z'Pí"íφMtõëW›C¤•ÖªeÓ SŒ£i•|ª»£4ZÔ[ùGõa·ŒÝXŒ;Ï“càž¶„TH1UÖÿL*«?)IÆIœ²”¦š’ß2ŽÃZ¥&S½ïJw\ûlÕŽÒ)' šÌç‹é cèoìTž@Œ7”ćÚÄÃR&¡%© ÷u×l%ƤÖ=¶Åb7Ùô(cÚ7ðT§ãÉ<^°q¹Ø‡ÀFÆeª&2Ni&ó/¦p/Ö-zQÌÆÇ(΄(œiH`Øx/aÕò‡}¸¹F—Âßh(ü ã‡õRôÒâµjvlß÷ƒŒK<9Q- îºM†šKâs-o tií;­!68ÓsouÁ½åõvÙïzxèÿ&,ª €Ú=6;DSoaÙ÷êíê±90Üzh  ÎLD;>6vk§ªs‚V"Wél]?„°íØ õÖ(.åÑͪè¯(q( ¦ªE›+$½ËÒ’u¹‹®nvÆ0í£/ÑÇêû¾U§µ‰*P Æy’Ó 'S.ù—V’Ä6G™!1±œÔ~ÀÉZñ:Cqbåíì4bÇÉ6Aåž"ôœúÿ7¬…†ô¹î|)2,ÃïÅçp\¾žŸŠ/ûŸâ;½mx´áµ3CB`-ÈŠ‡“ùmE–ë›[²ø¹}¢SÊ´(ÏJD5—öµv¼ÝŸFô$©R ~ãÉù‰·Ç°_èífˆ½äÞÉÑŸ^Ë8C^ß ÐÐt˻ҿ ”¥OÌw‘@)Ɇs)Iÿ s¯OJk½å^2˜3Aéªiéì 5KÅ—² De¬Ûþùc»~Õ®ƒ?;œËò»'¾ìRá“]¿¦öÀë„Þ …è»±íŽøª$uú\Ž›n|ƒ5ËËȱnïôüØ.¡=ÀWšt†½Òâ3/¯±4gŸ‚7Õ P!«'–€ÍÆ©S³ Œº›ß…T߉¡{‘¢sÁ:M‘§.SÖ½Óiùï:¥`¤M•+.Bå‡_e'nÈÑöH¨¼·üø@¯:šI÷T}Š|Yº_{Š8,0Dú ³,ÞØUË ú¤„:ÿ`svËT endstream endobj 352 0 obj << /Type /XObject /Subtype /Image /Width 473 /Height 316 /BitsPerComponent 8 /ColorSpace 630 0 R /Length 7187 /Filter /FlateDecode >> stream H‰ìW½nì¼ô·ŠSØâ µ ³I—÷¦o½¶¤’Ú¿›Ä²ÂIÖ6%J¢8¤)‹@ øNŒ nédU¯ïÖèÀN¸M̘¯Vw¼"vÅ…°qËÝ1%fiØ­#õ®?Q9)Ç{áý‚ aãöJ-÷±¼d™X¥r¹['Í‘ü,Î~ßÞ²­B¬ÎØ:±iŽ’¶]€Ä–ûèR·õWzu[Vì V(cK-¹,‚Å7õ¦» ©övÂ{¥=(98‚ØNQ#6pp±"ˆíAl§b;EÛ)‚ØNÄv "vÇÛ#ÆíhHì ʶ®…ü ¶yhbecî’»ù²ˆ)WbÇ­ -áBìû±+oþeíß·æt´$6Qfˆ•-5‰Ø’ÄIû®âøTˆõóÔ;ªŒ ´‡X¨¬cÎÌR_ǜѹÆÅà¶xÄV´Al§xˆØÀqÄvŠ ¶S±BûØßBìg`oÈç·û“þ| Alsb;EÛ)ƒk§«ë'¯ ¶9±WNW×ú‚ØÁÄÖ®õ± âQb‡ < ˆm±@&v8ýy{yùû²v±í›(å¬Üúþž–¿ÓÛ ƒ±-Ã;³r½½œ^üý3Lw»NUÞÝå5à uY¥+ƒUøÄ®Î5ÄžöÏo§An ïó!_ë$êàö®cüóÏöœ²l½ ûr:ý};㜰÷glzv·¸YÓxièVJ(®€x­›T…ˆ='ìÛéííï’°wÔØ¡¼^ó%= å6䛯4ÝÀUx‡Þüœr)sľœy]2ö地÷dlY1_ÒàoR%V‚Ø{¼>ò*ÖñÛÛ0Oó;Ä»ø€“ vIØåkg©°Ô÷±†QXW)ðÉØ\§g^ÅDaØJ»á~î¤ïNPHÝùŒ%açljÍG[u*. úJq*~þwì Ø%YçIËØÀÏÛ 0èæŒ./bùĶ K¬ÿ=Ä}g|HÛ2,±²4ŽŽwKì{Û"c;…ÍØ ¶DÆvЍ±"2¶SD푱"jl§ˆŒíNƱ=ÀÉØx÷€ÈØNÛ)âðÔ)âs§SDÆvŠÈØNÛ)âs§SÄçNŸøˆWq§ˆŒíQc;…ÍØ ¶Dííר×Àãøßjìëgàa||¶_c_Û2çxuˆm/c÷¶à€xýt^Å­ÕØ¶Ì9"c;EÛ)âUÜ)”±Ã÷z@µKT2v\ñÈL«òãš%vÈ—»ÄÖ2ö!V³>^ïÑ¿ŠØ-qÏ×aiX¤ÔréÞZ~³CÆEt‰}/Ä®i5ÊrƒGè(B×Q©CcÑÙ¦à)5€Øí>¬ÿø+Eú] ^ýWqÉØÍÓ‰V¸ J©®¬ÀªS§ áNרB,ÜlËï#V×[ ¤ñ#±‰ÄbítÕ‘Ø-ãm'NÅÃf¾K¬éømÀãå­Œ]iºNlÑAvhdÎ_b][;NqÝL÷3ÖH¿ p°¸qxÚ}•Xû*¾™à éw,±Pc%^Å.*Ÿ;Ra.±œ±^ÝZª±úT ?ªÁ¿œÙ[Ÿ;多)2GØ1ç¢ CÂ=§þ{NÅ~9wWQ?‡3v±OàỂØ'Û)Qcå5ð0ªß± á3ðœWqc56ð±gÐþá)ðÚÿÜ <…ÈØNÛ)"c;Edl§ˆŒí‘±"2¶S8Äö€xwŠxwŠÈØNÛ)lÆ~±= 2¶SDíñÛ)¢ÆvЍ±"jlŸˆÛ+‚ØNáÔØx÷€ÈØNážNË_K—§÷'þþímöÏ^2m[ƒ%ö3Ð ±“L-þj7ÿvß–Ø|ÞEœk×€ª³×Ø¡XhÍ=†Ø-e“NúÛÆþ¨ˆ©/…¤!vËdÛãÜÀV¾YTt_ZŒÝ\B#v仉O~.WR­Œï™í¼WÿU\<²óa´ÅVM¶Ð­…­|£‡ÐIi¯±Ž˜”¿~X\ צ`ÖÀ½2ç³Y }•ˆ‘K!îÔXLY@Å*Ò÷‹¼!ã•ðYL…æ¥ÔÊ£ë·.&?¬ZµW1=?Ñ\ß,ŸÅÑ ¹M?*»ÒöŸMên²÷Kƒ)…)•TÞ|µhè$%u"„4%jç©![§YT{B¿¹ß±#&þÑ˨ðE¢z+6 +^ø ¶X»gXqvôŽ$¶6~Å)TΔx‘/ÉP6#_õM b*0ÂF¿q6“ã€!·Æš5bzŸÕIùßœ¬8Àк›ô6í™·,2™&á¶Æz/Hím’ùüqÑ,K›2íÔ%Jç§î² ^®:Y‹b!ƒ]5¥·²ÿ žWT–ñج2ûYѰ-ÐÍÏbTcÍf©[U&Ðhk]¬0»v?wlDƒ$wÃtèÿ§Å 4mj?ZGY¬ºsD{+ÈaD¬¦e/×j,“eã_y#Og½ø„ˆï{´·†} ;Áæt‹j/ÚÅžCˆ¸ Úfëk£Ü®b%7 ËµÁ8¿f†Æ8öàìD­ ÔçCqQÒ6æò¨v=Õk,¨iߨ q}®誈ƒ ÊpX³Î6*&­SUï¬}ÑA©.‰ÿÊw,»FpÎíà,°Çå ÅB ­CtÌÙ"e€/ê¨Ã¹tÞœ¬=1¶¬Õ»^.ΫXçh¹ëfF9 c£&Nhvv¼a/Iv´²'OµgP#eSšq>‚È Z+µïX~½ _Ô%Ð]ÓÄS9¢hsͬ:j™e]ãm€e†ÅÌ…ÖКÁÑyg´ËÕ;<¡U>Le.í[ÐJ‹2‹F´ÖSp˜àš{*Sá†@EíÕ>Ð4~O‹¢_DŽW?c†Kþ™ K PY­ŽðÑF v¹v:FqÔq¬úûÅhÁ Èa¢ kVLÛ¹ô¤kcÙ­±8ƒv®Ç®ž„F1¥bDQ›Ó¶à(‡dÇø}¦ÁSä6/ÒÝÛ[¥ÆºÎÔ~DÒ„Gߊ@²ÏöáüÎn¼zd«LM9ÊLã§VE i¡};&¿ÆÂ„µÌ%++òh—M`Æ6›Ûa^qíbð^3ø¤Ìá!Í‹‘y/ÊOÞw¬ö;y^Åz~ÌiPòAôz¢–פ˜S.¥b¶€³Ð"ȼ 6{ÍÒ¸Èû#rJSõTL  ¼>ZdŽÉ6,­l­èÁ†µg¨p£{œS¥Ó¾ˆyÄûNZÕïXÎ>ŠuåŽâgɃ´ëyÚgc’V¥ù'5«[c­GX{iÉ2ȼ+Zõ¶0–×&¿ÆV“Pgq%îÊCah²Ð„é$ªÕ4˜+² 'ÆfDÌ9ãW)ÑÖØü£aï2ñe}Xª Vò)\(j…u5EӤ͡™MH·¹Ëí.–—Œl vrOÆB›v”·–¨ûúì°¡ÃEp¬€òò›mëõÀV‹q*Úuà¶ ÎYœ'L7º«3Ü›£9ð‚‰.ôµ:{VØàyK,ê*‹ЬNÕjãtvç'°¢Z7vm¼š}QdW¾cÕ ÊŸÐ¡ß—L*QŸE6§IÅ”¢o¢Éhü¬CKËÌÎg[ï jAÜvÇɪcâµòËù…»vóŽU÷Òƒ&HÇ"¦P}DÙ-M‘CMCMJòû¬D"kDDh”Ð'?^«±è-ô¯ð|¼.¹';ÐL¢Ìæøƒ¢eõZü¬cÄÎ윺=çåk"Çžà–TM]îçÍnwMÌO¨«ØW‚ ²ÔLfÖPä ®gbŽl>ûMp„Cˆ× üŸZmÆš\*Ûö… ßÕWˆ¥U욌ÕÂóàŒÆÙbfÐ#Äöí.‚§ñFÛ*¾ÉõOÄšö”d™wq:§«zK.©ÎzF.–ûÑn9uFxÁ½—èoC ƒ/-þá ½]2PŽ„ áNH5M³²­¢™½EFÏTålÜÏï =4 ®çaü/€}/*‹{äòH·!Ãtc-uÃÏÞ±B›oXöŒùþ1+!óe’&UÕ®ž#DÈ:Ê9<åð6ë™áyÑ+1߈ÔèÅŒå”^yFE«Ý9=gµ­5æ©xÙUD«À­èDë“G,Íf^ n4ìP½Ç»ð\|ø¡˜¡ð‘‰'T†€Š²‰ÌËI«Â¬¬LµÄ®"¸íŸ˜TˆîEr?wÈ¥øœÊÎ6)‹±Ý6UÊ@5·¾)BÕ0¡i1Æ/—YÅÎÓì—[–Û8C—á…ðƒµÿ•ÍŒ-‘¸@Éét:óá#ž¤mJÅz(’Öî°fùÓ=›çkf,)OÅx¼ë؉lšêIÛRˆak‘ZhEÍ,BœKž8—OÊ¿¬&ä÷÷¦2ZÉ?I·:BÞ[í aA$’Ù&œF;Å­ubðûYqaÈY@Í›…Q¶CSåøW§†»™àH)ûVÛ±=ü]sˆ¨yZåÑבÌ,ûõEo¹Š-ÿ §9]aÿæïNù¸ÑÙñ_ÄÉ#Õ–¾þt{â9[ O>ÍIuU•¹s|±U™R2§\]tÒú¸.ñO§,J&RŒŠÜ "Íå‰k¥å$Ot®® >lupª^yªÛŠmÔ¥[>m„-‘MªÄú/Nµš©“¾Fj“€‹ðØÂ*YÊîˆò÷~»+û\ßànÚ Ÿ.%iùb-¢Ïð ÁÕkûÉi~>ÛºÓGWéÓÇ»Ž%"-‘¤ÃZ+Ä#"`yÄüb›ˆv|Y?"(‰- öVˆnÉüÀ”ÇÑÂHyÔŒvQyv}ß±@@å}56­ˆ´òôC‹ŸQ¥J5ʧøBƒêmR\ž7‚cÒ?×­Ã#fƒØ®¤²]Ja¡§x¾ð;vH;ªäÇ| _Ô²D{yÔÞM¶q[%Kw6tçFaæjû™)ë.dkçƒ\h¶éXSnÓr-jÇ/;[÷¹ õšµZ† Ò ®RpY†é27ìþ|ªÂÒX©Wo §‚Ñ+JRIl_qîÙ.…L©a1DLa®õMAàkm[Yᚯ¹Îô !ò'S„–3?«¯sAn¬Sv¿c]"JD÷Ã@ûÍΣ_\ÕäÍ­ad%_©æ›[‰WàÒb¦’ÃüþE >ó¢„PªÑ¸…¯z¹ìXc`£ ªŠôÈ.cÝ;cï– —(ÞÊló5ø÷|8)°úæEi¢ä” 8 ‡&ÿú¼8cÂòpN‚b‚åÔk(²É¼ZNè@EÝuãÄÚf?áÄêþÖTX,}šŠ5Â$!èˆæç½n§o¨?3àýo7zq}&NåªÆ—Gßø»Äl©Ú–¤êÛB ޳eÿ;SdÌ‚ÓßsÃN®É·[q!† EýU<9WÙÖàà™¼t—¨§—iÔvçX]AzÍ]÷!:ûÝ©qŃ)Ú$‹lPµù9i.O¦cP[À[Å¢îÜ ñ{Ñ™^õˆ¹ Öaû1[­$%‡ÍĬ†DüÎb¡ ÍÙlÝGjpqy @ý­ú8³MP†"m2ÝëJ4Uî,rW<-ÂîjŒãr´æ¾Í2òûS¯ËdâV5¢ÖGâ½9cM.I-Õg¯œBÔÑðiÿØN]VS¹uŸÊZù§;É@ÝÊÃTÐW§È§w˜b·bœŽ\~Õ±Üßæ²÷€jçá‘\iaÊ”¹_Œ5e¡4ÑÚ‘|§C"ŽÜÀ ùÓº˜[T¡©­_¼˜{Äª³FEéñÕŲ…\1ë§öùož*i¯MÃÃÛÀËBÎQµ ±—?Õr¾2ˆHx;‡iÏå®ûö§GÖ“(l3ë¢`Y†NIqwu°RÑj”À*ÜãqÜÊË(|=ÌÄ5˜¼gš8¾Ó6”¾2>“9Ýw[qy0¼õ1Në3n­ýlFu줾Lìßï§æéÏ2ò2”QMõ­þ/;fÃmu€V1gŽæhšl6ê/¢‡Ód í1&Š b.ì¸Hü—ÓóÙÄœT{pqtæLD(ÆÑtl&àÒíu¤|ÈË ÃP ´=ÔÌ«ŠÈ’¿(f9ÃŒûì¯z«“·Í:±Æô 1³H„¶L†j}ýѪ7Tÿ=è¶bË@KjU<ÜŠØ1<;º":€4ŠgÇy·­ÑwqÒvl];GÆW¦Y³k˵|ÄËԅ⥻«3 TÍzÜi9#kìxW‘IÙç…©o½³ƒÛ‡²çÀ¨‹Y}qš•íX¢´f‹TÇ¥\ýŽeƒ¹È¬Wº½5²¢Ä™/¾{\“Ìñ1w‚] ¬G_ßDÖìNDçkÉû©ºˆdgÖt>^zÎ¥)š3– ÅŽªÅ'9h$_®çØËÕGG™Š{ý ”´óÏt/é´/³š“±õßRåŽü&aKeÖoÅM@ŵ¥âåüb¥Skñ& !x¶¤Å)ÖçõDÍÌ™66©³Â«"kˆÉ/-'¼Â¼†&ïWˆëË\¸Ûcï„4Ô§1¹ª¹h!߱≈ÊI·L\€+ßãE_Ëë ;‚'¤V¬ ‰sk7ox>EEûÆLTÕŸ±Þ/}ýÃ’Zt >Ýל^›*MR¾bdÚúŽëèbýè]ékA+‹\a`Ëpy’ JâšÏÔܱžOòŒ…²¨š]C¶Ng†ËŠÊ̌϶ÊÖq‘YK­7@,0®5n—>‡Ü‹æ¹Ü`†ùámî|5*~ï,D®:v0÷N(öJiûkI„Ó3*Œ‰E‹Dw+FlÁT-—‚ÅŽòŠèEÊÂia-_­1U­^“+(¢Šø’Øê–î‚ö4:!M[)1“ÜìýÀ\¶Š©ÛDÁ!7ÕnÂfGôÌ Â®È^u#:¦ëIÆjR{G?v?w7äé Š>÷›²4—\_»'sR¼h¸-ù‹ ‹+,båËâ  _æS—%á8niZ8jŠkZï|=ùuǶbd}Nn£ì8«‹í°}&ç•…Vç?úÀDTû«gb«Å1’ʬ‡löLmÃßœÖs=­%ùÎ嫤%¢êžyT˜Ç—÷÷l8óæ1¯&šfâ½Ö\GIs©#Ôœ¯Í!éþT•ùžIåè«V„Il‹× 9È¢äÿEM’TÑ8$Jlâ|–2ÎC6ÑÎ¥öOV 9M®é†.°ÄØ…‚7xU¯ô”iÓÌÚ‹³c –”KÅ—Ì¡¹:ÛÅJ`RÎÅEb{êEßžäÝ¥¹ ”§Ø.› ÂÖž"æGÃIÖP¸°÷—§ÄaATâGË‘ˆ)ʪDŽJ¢![çJ'#Ñ$ú]Žpä!,eu•…*г59cir•oVÓØÏ€PÀÆ¥½mÜÄ~踉ýÐqû¡ã&öCÇM쇎›Ø7±:nb?tÜÄ~踉ýÐqû¡ã&öCÇM쇎›Ø7±:„ØÇãñüøÊ²Go÷xN¶ßýûöKþïñ§cûÿ¿F®ŒGóúÿËXÄ>οÿöÔ‹ý8>ŽùÙyx©N¶YI?‚þïñ³£!ö±vZù8ˆ”Çx)”Új¥í¡!òõ=~pt«G(øÝÏ:òíï;bÝñ=~|\{î‘ÿ°_9‚0|FßàøÿË<(ÐJ $ÆÍÌÁ@là0i]8äÚÕì‰Ø^æòT&ö·à%îÅö]qbÓQ\±q‡;ÆŽ…$©8ýƺŠYÇeŒâÈþcÓTÜvZ³ðÒêVW=%5q‰XRñ"¶y üÄŠ‚XQ+ bEA¬(ˆ±¢ VÄŠ‚XIö‹±µl endstream endobj 353 0 obj << /Type /XObject /Subtype /Image /Width 476 /Height 298 /BitsPerComponent 8 /ColorSpace 639 0 R /Length 4562 /Filter /FlateDecode >> stream H‰ì—¹–ò:„߀Ÿó§“Lè¤sÞÿ­.ÆZªZ’a³EÕ0²ÜZÑ×- 3I’$I’Þ§q«æwÏCzºFcŽbÚË9xçÿç$t,v¤ß‹Û`Jly’íWÚ‰.l-R-؆¸5K1,íEž­‹Ñ‘ãVgðž„lñX]5·‹Eq»+[©+‰m¿Û~%¶ýJlû•Øö+±íWbۯĶ_‰m¿*ÙŽãx½Ùþ¥ «`{…Z(šù‹íÆUekÞ%‚S2¿Æ ^ØŽÁ¥í(³ý½(°]ÐÕ“¥¥mÈ±Ô ¶”ØæP޵o:¨¥·¨Í¶­%ÛÑÅ­´ÕÙÂ);¦øÌgí˜â:·¹¢ðnE ¶M‰Ü~$¶ýê^¶Ò~$¶ýJlû•Øö«’íQú¼^Åö$}ZvzÛgô+=¢ç0Û-Jlû•Øö+d°vÙZ¿ˆ‰íElW.[keb»M1Ûv…µ2±Ý¦îe;q±Ý¢jlžg;üü÷s8ü;,Åb»i•l#UŽÍPöïççgþl0±Ý¸ ¶C~ÇØ\‡ŸÃ‡Ãáç¿aºmò“°@ï+º­–tEu¶Ù?ÿÎdÿÎa{[F*b¯Ö0Ô¯C!?„JËØí!lɇaºqOŽqÓa™Aãbˆoð€ZÒ="´ ¶±ªÛ!¶ÿÎa{ÛžMJwžVãv3SúX:gêlç¦t·é%S?oziŸºlÆí_Ÿ=~lغKðWº³4<Ûq›ù+ÝSjéÙ»ùDº‘t#n ÈNJ÷NpAº|Z÷ä\sóVz-u|/t×ÎÛØt ·¥WnQ‰s²ÔïÉŸ¸ÒÖiÙ‘ÜÞ“ChªÏÆ>9I„—übhìÉÔÀrK¥[J³q¢{í÷­AÛ¥Zþ ±L¶qÞÚTÐS<¹ãC–ÏY"€„€Ãs%n-uJMóˆ²|ÄB¨‘ ïÌí»õ8¥N ”åÏ9Qµl_²í»Tv›°eêP–÷ZFÂÌó[?o}oØ ÛÒ ²¼ÖÂà<KUXë¼%ˆ®qÎdy©%¼â[*?HÖ„õ{rî`*¦‘ÈMdyÅ=,?Oñûö’iÞ“©yã7TöY^g!žYyÑ”èµÏ[› T瞌º•å5x‹6ë’©Æ­ao4Jìżæ#Ëó,i¹oˆÛl˜[µödØÀS¿ÕÎ]-“å¹·àñ“ë€ÅÐ2­ýr½³ÁlüdyªÅ‘\Ç|›diœ·<šÕ;y‹,Oµä%·hƒÓ5UÌX-w¶·8fî<}Jй,O²„¬_m«d‹{nó¼å!aì-»ÌLéSR8ûhµó[\øŠu~][ê{*7ŽT4aå²¹,²äõåWWXi·ÐZ;o©94†þ\×²Ü úŽÔïRÆÍht)öÓÂF63† ™Å/$Ú©Q5>Š¥µ(ÖïR<†\s=ƒªÂÛ²oò~ÂÊÔÜ"pV6f¨E(Æ^ëç-ì$~xžÍõ*0Á#a&ßcá'f}£É=|Åœ5´•W²›â–Þi*èXÅt¨ üe"ÎðÝ!ñì–Æ…jªnã¼ ÖÏ«Œ`úªù[ÙZÐå]¶¤Ùæ¶Ⱥ¸-·~ßú¢¹¥ÑkˆÛ3ùK‡Èrh:¨ENî 9@`6öd¼ù•Nö _JÿÂ9B‡Žÿ7Xhýùö{[QdµB·30”8Nõ.E#LPÝå]½Æ·á–þ }‘Åj ‘ ¬]‹üƸ,T§ÞVÎ[ŽgœôÅÔ|Kòˆo²À¢,þ•`1§\%[+:uêk5Î[ß²Õ#øIerå\п¾Í’ :Yªd•Z¼}Sp¡r<ÒØõ¸åpÄÁ= ×ä&Å7s¹¯² 1®PÅ¥¼æÞKh¨Ò5¬Á6V«M¢Aó$ê_ |̾Íâb¯Ì´Ô¾ÔƪE|-¯+çmªn©]¾›—¤V §ðMXSKËRÀ4j‹ ü¥Øp àLë¿o½“Õlxµª'åwÃ~¾Ábô¬Ä­käòVÔwa„>ÅãÖ!ø`>pyðäküÕJ‡íÜ’×?­iqÞ±êÜ£\oŠr¬±'sÓÂ仂­ êÅÞ›ËHîÒB%u9¼ÎZ섈Ց.ˆ7îRèjÙçÀû oÏ›\Ì=­˜BÇ·–ÞŒ`’ÍUku¥«Ëú‹= è²º9žä›Õœ£ º¸?71èbËb‘¬¨Ï8 L‚b°qÞº©Tøâ콺ÆÜÊu_bïÃ’ }vxßãjaƒZ³z&6Xù}k¾oŽ@«äkñáÏdp>ã÷ý[ü7O_˜ ðJ¦å,"Êe æ ÒtæGkO.fŒ£ä)ãžR8T¥ø#ôÁ_j×G+ºÕšü«wÃ6>ÆŠ±§ÊØÕ»‡¾%­JÌÍ;þÖîøîÃ6ŒÉ 4<ªX ò%baôž; »F3n)Ę$Ycp7"ú!;^é‹;·Ë3¡‰Û•Ä“Ö k+\}Oý¯ý¾å.Õ0—ÏNõ?ûU”9 Ânákä‡ûŸm·Û8–„œi÷§Š^;cÀãqXiŠæÁÌjL¶B@¶¿…²7âË Dw{&ã[cŠ"¡‹+Ör¢-¡KY>Y‚ÛôÕͤjNè}Kå’ŠÍÖý°¾éÛô%¿ÅÕo&0!ÝÔ ê¬dÊaŸPàPá,Wª\ž¸…òYüï[,½ euµ½\ƒå-H¦4aO”¤40B‡T ª0fRPaÁºÛ¾M·¿ì$ä¹Ì‚b&‹ ¯9=<ñɵsa™^ŒÔÔC’Íã ׬ E›¾å%9ðÀO¿ô´ m( +™ò«¾ „"© ÓY‡Î ´DÜüÂ%ƒÍhos#Ë oNTGR¸ËVyú%«Ú# ,ÓÒbœ\í"¹_*T¥×ØÞ““=E¶¾ÃiêïÉë™J‚-²ùS$éÖ d’òú¢‡æ'@žl‰üààN¥Mß^Úaœ{É’öŒ| ݨxæ˜Û«ôG˜R?…ãÏþ£It²Ô°W-Áþ {r†W‰kn8/yT;n‡KêÉ%ˆiXkÌçÀ%òô¾ã,·x&¯BknçÈÐ2Å—²äŽ:ü¼ãV ò|âUέL¯ÉßAí nçaùy;‚¦«ãn¸]jp½rÜ“ïorKsÜ©óÀ!ƒ_€Ü®Q·+Ÿ·Ü’ZйoÈц[£â¹ÝÍÇîžìx£\¾à6©Q³n%ÝÔgž[§r[Ü»õ±ý}kïÉ×Ç8‰49¦‹ùz›jþžŒ¥$Ÿ>n~Ãz•CŸ êC¹mÔAs[Ím]4·uÑÜÖEs[Ím]4·uÑÜÖEs[Ím]|rÛ(‰Ÿ.®F£ñ?ø3êÓØ endstream endobj 354 0 obj << /Type /Page /Parent 679 0 R /Resources 359 0 R /Contents 360 0 R /Annots [ 355 0 R 356 0 R 357 0 R 358 0 R ] /MediaBox [ 0 0 595 842 ] /CropBox [ 0 0 595 842 ] /Rotate 0 >> endobj 355 0 obj << /Dest [ 261 0 R /FitB ] /Type /Annot /Subtype /Link /Rect [ 413 562 441 576 ] /C [ 0 0 0 ] /Border [ 0 0 1 ] /H /I >> endobj 356 0 obj << /Dest [ 422 0 R /FitB ] /Type /Annot /Subtype /Link /Rect [ 490 548 504 562 ] /C [ 0 0 0 ] /Border [ 0 0 1 ] /H /I >> endobj 357 0 obj << /Dest [ 305 0 R /FitB ] /Type /Annot /Subtype /Link /Rect [ 458 200 504 214 ] /C [ 0 0 0 ] /Border [ 0 0 1 ] /H /I >> endobj 358 0 obj << /Dest [ 354 0 R /FitB ] /Type /Annot /Subtype /Link /Rect [ 236 528 242 538 ] /C [ 0 0 0 ] /Border [ 0 0 1 ] /H /I >> endobj 359 0 obj << /ProcSet [ /PDF /Text /ImageC /ImageI ] /Font << /F2 581 0 R /TT2 838 0 R /TT4 840 0 R /TT6 536 0 R /TT10 582 0 R >> /XObject << /Im120 361 0 R >> /ExtGState << /GS1 843 0 R >> /ColorSpace << /Cs60 641 0 R >> >> endobj 360 0 obj << /Length 3041 /Filter /FlateDecode >> stream H‰¬WÛŽãÆE^õýHÍ›Hjßâuà Æ^yóàÉG¤FÌH¤@R#¬cçƒsNUQ—ÙA€ÞFÍîê꺞ªúa5û~µJ]äV›Ù2Xf.ÄYäa°Œ]ºâ0LÜj? 嬜}ÿ÷O‘{fa†©[­gs®Àâ4ûÝ»ó“ ñ~ò±—xïý?ÊÖσŸ™·îµK‚,ýy”äø{s?Š‚ÜÃcnŽÝ,ÅÛ±÷›\Ó[µ‘×»ŸËöèG¡Wîü¯þAÙc•=JÈBu¥Òç‹"ˆb_„LbÊš¨AìÏó`áx쓉g¦<ã Æ?°\ÝñÊzæ9õŸëGƒ*¸_Y#^èïûºkw×<6c¹sŸü%ÞküyÞc+_åxìa§JÚûæ(V…âI›$ ÒÉ´øB”ƒŠÅdüy&ÖS0~ÿ6Ÿ/±±öø Ë˯£›A~JÙyð#ÐﮎÇÎé¥Þ'«ZéÆ+Š;h…pÛ#½¥F¥’mµÂÖ®2"rïØ+‹Áç—ëZ÷iÔ'ŽBÌGÓ ±>.7*9w¿êסó羕Âè§o­ýyŠOÓZî)òhZ½kR:è:nÕø¡c$,èPq#M‡9WfbÄMã ˜XŒ1Œe[‰=è›ðÁÊÝ㥱画¬ëÊšqë†ãá°«÷u;º4º÷çV[£©avø“?‚§ºhîX¤^â ÕcìÔzaÐ vpl³WösÑiõWÓ¥P]¢WÔe„@åàe?ò Á=‹l×7›ÒäÔÈ9}·®‡á"0Í€óM׃ %ð[ŽŽDùÊâ¹î©Eâ¯*&Û0Ý™ðVâ̬sE‰«†ê§ž$“Þ6Ä™¸6âBw-ÄaŸB šÒ¾Yg,{]¾øÑ™šN“Ew4V½ëM iÅSÿRn[}¯n]éªn}gBkª¸QWÁ6•Ø´-÷µëŒÛfÒP282—$ÅÒ\¤ÁReyÖ5c7"hпü,°ùÅù©±¼ÔXŽôZ÷0\_|VŠë-JZÊ73"Âß+’jJ‘ÊÉÊo+F ‰„¢qׄ ð`§A{u¢—õtT}¿Âe¯ÛOú9hT^Dîú¡`ǵ ³K² j…ÂJ&jgžî»¼L¼fž;PûÔhºç¦jZ‘GŸzm×l®¸ŒÍÞØ!Ék£W T‹C‰+}@%ÙŠ$µ~<9eÖ]‰•UcLÓ‹ öR+´c0!U$ JÏɪ~ÙÕåPK@´Ý¨ ÍI¦ÍøYdòóõN#WÓ'Ó,ûÔè‡fVª3 Õí»'‚×Ü­€Î‡óþ8¼¸àe›ÝÎÛªî߯X+cIZ«êçz×D¼Ó9¦¨ÄJÀ– ÒC¶‘YôµèÁ‰¶'=-µ™Xí/ Xuõ šá»  AÏš²‹éÛÈ`×›P̯š Á`¸máíõ§õ——{o:q*èa™%>¶;&.£X³_ìrïÀüAÑÖ/6HRd£ËWÓë)ý£+ñ’ßÃU½íÂb±Ôu¬ËÖ=h%ˆÄæ<ê¥ÜØ/+›'T¢JÒ<‘N ªo+€„(_+ –6nZÓÕ úó†ÈƯ÷•«‰¯5\¥»hrÃ~x3Þ sÃÌ:V-Èbõ×Ïä èŒ&¤6x/>á\y?Çá‡*!ô¯‚•ô³Ô84°õ‰• D÷‚v@Ì­¢ Pÿ§às„ ””òaGÛÉ®þ•jyõ%ÚÒ8:‹ß#][5ím )!¼úõ³]˜I4¹¸wV¸^ÂIRîºëÛ÷âp9Ñmk•Ÿ&¡·°÷Ý„&»fQZïOmwjÝq¨ûá¬ùò¬ùODFp‹ô“ù%嬿­ÿ¹ZÁ•*Ûnïhíg/ íMiù ºÓÀJ6 ã×èoÚ©3ì$Ú´ֱ[SÅl#­A®­A‚H¨õÙ÷ÏÝ0°t_ÿééQ õt¿µï—…â)öd¥ {UÚ]Á(§õO[aŸ÷L=Û2K±ci ¿³»ÇÆÚÐÉ Ã©³›=Š% <(¦éHq ÊÜ"†Gãi¸›  ÞÄs™=â蟂89êœå¤Kh½‹µµ™A÷;í—€àX {Gx©‰‡ÈÈ BdS×WÒHö$`£©§5RáÕ¬w;§Æðƺ$\…”AŽÒoû‚¾4ص[$ï01÷.™óB°ùâîdƒ–d#qÜû½lØzg2r°y1J½'.Ô‡ÿ{‹‹ølø›Ö\W”•A¹éÄlF–t¡ŒñApW¢ãÊ©a/›qã>ý£™J Lqž`Õñ16 *H3b¿p%n&èLdúÝÓDa5ÛØÜò…ˆ›x°ç­ê }sa›žØ<«éê§DÊãÚVG· ½Õ*Fµ×Û©Ž°º–âULso»û­«ï®‰_¼g ôÓ†±•¤ƒUoÙD\``Ñ;à´³Óe©œhoeêI`ûíä¹Ï~eÏž%ò~”޾ÐwçžD,9^Óo&]ÙÔptÖÿ ÷ØçWU=µô‚Ï왞§þ¦Q [°W]âÇ(3Qš1Kœ¹/ Ám”±¡ŒË?#Ð$Φ¹h‘¶|–̪‘zœa2I9‚ r•pÏ&5Jd˜vß„Uê6󠸼1=1½€’$-ö44¦pIU5:¦²'쬅®åè2 q´LuÓºLàh½Ž¡ ½£ ½§V3Òšgv@Ám[&ܱÞ(NÍzëÊžÅèÖ?)ˆçZúÖP×îlÚõ—v(gSÀN5+HPÂK+ Æýu'¾›œ&ýÐÜŒ˜6É¢ƒCfqŠÜ²–žDªžÐu¬EWÃ-Õ”ï=}bƒ©N¢O×ì}m…æ/˜xw—«êÌéž ¹æ¬È{[Z÷77°¦ç¶Å\•ër˜z¦ †ã>jë5[}¬AŸ¢ †·û©ÅÔOÝ{5m´½ÇÀ}úø |8Œe»®ÝoÚ_ËT•xwúuïkç¤ÀxÝôN‹˜•Ö/ :œ¸}W5›1 cœµøm}²‰.—‰.²‰¸d“@?ELΈi^iñM±\÷u)QÊz©Z̽Ú:ñ´z¶V&e(YmEô©C|®'ÔvŸp]ÚXsÍ <Ï%3XZghÈm;Uahë}‹éRrù'dœ™'—y:$“ž™ @¦é @ÆA&† ‚÷5cN¤B‘ØË]ó‡°Pvð:IßÉßטÊV3¹ªða¢’ŲR`´mÒNÁR$¹Ñ0Áû ÿ©<úú¹éŽƒõ:²#70±\:Û…"‘…´ºékp›ÚŒ8Œ/ð° A,aÒVõADŠ%a™Š|ÏAØ~‘n°Ñ‹$¬°ÍߎyJsžèôèEަÐëu/‹[3­Õtj$Á<Ì_‹û?ÿ1€>¬f‘kÜLÏ(dÁsQ ‹…A†<›mf?¬fðr!-ª,”¶@Ûoý¾Ž·mwžþ·í*ÉA†÷¾"ÇæÝRîôR x@ e]D)â!ð`<¶ABâ'îÄJÇcH³Œh©h™~SS{n³°’wÔ¨ÎÀ(4B$Ojê°ò´üg×x®<ô7ë !.| ¬ç! /s©KFÝTf×øîÂ8u?¡uÄ“ŸÃ;[€>K ¸ÅküRa¹F±À"_8¯¦@6£Ù¶¦²Æ¡ǹ©ëáuAËrÿALf¡Þýû(E9·ûß½Ô€€¼'î,F~/ßW~Ðv‘2,Ω–Î}ä"K¿,â‘Ó1ªVƒlìî¨I©nÊ^|3ùDd(u âLå> stream H‰ì—‹‚£(E§œ´îÌÿ𪼊‡#sOwD`yR"þúEȯÔç÷ìõîŸö‰Ð+ãõEª¼šYágøùY¶Ãpwdÿ6‰×Ÿ°½;²‰ä‘%©×5Uèõ,C2³òõ'ä«qí¾¿Á±×®^³†Lô[q<ì—X¼Šü²ÛÌ«ïæ>Eg¹×ÓžžèuUºÊM½Î.ÍZÀ9ö^]þ/{Ðü»>ºÓ+äºé›4û‘ž„™DLÎæ^íÕº=%ÈŽ‹—òºÕ)ü Ùoòìüj´æ^}z­¹ûŠRðŒ×׫à5âIìçë"s°Ù:Ä^Í·/yM‡xûó«OØ0Fó–âgH5g@ix¬×õ€zÎD^ÓgQ8 ×¯Ñê&g3™­ŸÄþúUËz\øÃÄ\äЫãÀÛÓÖIW~GÞ ºÀ# ù{ìÚ-ì‘ ^IMœWRãu$5™¼×¡úˆâ2ã8¯SôÅeè½b¸èUÔ¶R@5¼ÎëòýãYµæ%,\õ*6®zUð*Ó¹˜jK*ä«»“"²š¶¶’f# ë^ýM´F'’Å·b"µ›¬ËEjyu…ûœOPM¯¢‹)ŽMG]Âå®Ï¯! %³¯SF$2i•«q'Txnù›(ñ*M(¯Q|ÞoíÕkÔç÷ÈkVø”íÖka»wˆó´8ͪ)¶_¯ö>+ÜyŸTqýê~õ,>µ˜dJ— x­"ŠëšNóx¯Ÿ==/óx¯7¡½Î•è#Šë¯ÿõÀŸáüÑ^ïfæ1^'zEç뺪ӇãÚ\_ÿ‡x[“ÅëöزS‹Ž˜¸íå¸Â¶Ǭ}%‰×äÙÙÚy-ýæùD}¢¢4r3¯î‡Õ¦øTˆ{†nt^ãs–â'ʆn.Û®WÑÝ«'ȆW¯ÚS C©ç .íc¬W/ÀŽ™Ç“×ʱ ºHnEIö*rè5kØŽ]*Äg¼FìÆÜøU‘Åfs[Ýr…,mê5ê7½!öj^%Î×AGqÊë êú÷ ›†êZ÷òuãR¯¥KøœâüZšJÅ{ó@ºÙmâ5»ŽR¾n\|5¯wo{-UUxùÝ__ëæúUOIñtà§úÂ%¢õ«š[D¼[½>‰g© J/Z"ÛaýªÖ+Á÷X ôŠ!òÚôú‡ÔCyH=è½b W ôŠ^1Ð+zÅ@¯è½b W ôŠ^1Ð+zÅ@¯è½b W ôŠ^1Ð+zÅ@¯è½b W ôŠ^1Ð+zÅ@¯è½bÐ^GRïuHM¼WRzÅ@¯è½bp^ÿ’šøõÀß»&B{½ûÎyôŠ^1Ð+zÅ@¯è½b W ôŠ^1´ò:Î Çï6^Çq˜™·¸StF¯³Õ¥˜ÍšsˆÚZ–ŠÈôy-Ö¶½êÿ4-¼Z­‰X“¡foýs•Gp«WWˆ­Ñë)½úBž¢õ&¯.7M#½~HúÜJîyzý¯3,`Åm²éà´z/0Ûp »ÔòKzý„å]k´o»ÐëI–÷Øã^ÑÚÌë·A¯è½b W ôŠ^1Ð+zÅ@¯è½bhåuœAŽßm¼Žã03oq§èŒ&^g«K1›5çµµ,‘i{Hdí´Ó±yw ^ õÂA9ì× -¼ªÛ_‰5jöÖ?Šþ€1)‰Wñ²›å÷q«WWˆ­y¯é'Ï) ¶KwtáÕ¢eÇ×FŸÔù±®¸Ç«ËM£©à5= Ý ½ZÒçVtÏ—¼n多_éµä5žF§T‘š8w¼Ê·{Ì»–~/ˆûY깇½_6äë׸Ko´ñº¼köí`—sŠzjiãu1û†Õ3¢BwI+¯ß½b W ôŠ^1Ð+zÅ@¯è½b W ôŠ¡•×q9~o´ñ:ŽÃ̼Ţ3šx­.ÅlÖœCÔÖ²TD¦Mì!‘µS¹£¬ÇK­¥¡°4òï¼ê…ƒ²×/¸5l ±-¼ªÛ_‰5jöÖ?Šþ€1)‰Wñ²|B·ùÍà¢ZàÜêÕâ®~R)©8yA¡?ì³Tâö¨aŠÎ×Bl^§ \rv|mT9˜‹5Šäk¼ºÜ´wç”yMhi6nzõƒè†yÍž[Ñ=_òº—“o{üô¢K 7y§Ñ)Q¤&É=¯rèUr¯OÊ×ɼké÷ëBÔ¥ê+vv}COaO².“˜õxèz`}#Gûv°Ë¹K–Zµ“|F¯‹Ù7¬ž¹âÃg¿ÝBk3¯ß½b W ôŠ^1Ð+zÅ@¯è½b W Ê+©‰÷:ª8¯wß9Oƒ^1Ð+zÅ@¯è½b W ôŠ^1´ô:^¢Æa4M½˜†ëc¨qдõzý˗ƨ2À{Ð+zÅ@¯è½b W ·zµUM"SÎŽW1_(}ë 0ôæµP¾\Ð"êóAî¼1{럫¿\c݆’â ]xu…ØÚ^ã¢â(]yõ…lúxÛëôÍ^]nš{¿šW7¯Ha"ø*¯®ò¹W‰¼N:mƒ@p÷úÕ¯¦Å÷Öœ_6Û$—SþòÁú•ë}NyEq…>½fFzÝäÒ%Ñë&ôŠ^1Ð+zÅ0Nㆠc„qдô: —¨1FLS¯_½b W ôŠ^18¯¤6ôŠaöú›‚áÿN=7 endstream endobj 362 0 obj << /Type /Page /Parent 679 0 R /Resources 364 0 R /Contents 365 0 R /Annots [ 363 0 R ] /MediaBox [ 0 0 595 842 ] /CropBox [ 0 0 595 842 ] /Rotate 0 >> endobj 363 0 obj << /Dest [ 362 0 R /FitB ] /Type /Annot /Subtype /Link /Rect [ 292 756 298 766 ] /C [ 0 0 0 ] /Border [ 0 0 1 ] /H /I >> endobj 364 0 obj << /ProcSet [ /PDF /Text ] /Font << /TT4 840 0 R >> /ExtGState << /GS1 843 0 R >> >> endobj 365 0 obj << /Length 758 /Filter /FlateDecode >> stream H‰”TMoÔ0½çWÌÑ–ˆk;Y'¹B©â@ÄÁdÝmÐv³Ê¦Tý÷¼g·-âB+Õ“ñ|<¿yÓ·}qÕ÷59êo‹Ît,~Åh¬é<Õã­­¨¿/¬ÜÍ»âêÃG»Saµ5õCQ²…Åwu­+S©¾J½Ó-þ~×ÍI7&¨a:&ªL0V—®jZÔW¥vÎ4Šê@%¼¡Fo¯¾JZÎJÚ§fº‰‡í¬Š{ý£ÿT8/˜p´­i© Èk3ZÁd†˳Åð~&’üãq?¦­ØËD‘NËü0,³. ÁÍÙ§ŽÓ¼ÐtØœ7zÒ®4xà°ˆ’Ài ø`@bø©à1lL{¡á0Uëþ× ü¾kŒ¯ÿñ‚pyAÈ/0DßtL«î˜dps EÐó©Õ¨KûŒ.¨f' ÝN3-w‰N¸qð¥a:liï(xÔe _Ä‹½šãs:¿­t©*qê¯eø¶½LŸMF·£®‘ÄT¡Ø´ÀBã~O?“ÜÑv<÷„3Gä«­Y›™º£rSPÃÍžy£ÿüašß÷…£‘Š,ig-ÏÅÕ514§â¶xÛÁÔ­ŒCŒÛv&¬³ËûkGj® Ûz0¨ðÕ:2{õ¬u¼õNö!¡e<é ”±‡nYˆ“.+ˆ‰G$Þ1ÇÐù\tÙ­%âòò+Ñï|j‹&óÈ7RqÔ•â2NÂ5+"wÛÇ]¶$t-Œ,rÉ;#H´žq›æœK¼Â‹âàAÝkq¨(ÚjºæXÃ2ÅvÓǵöKà)LjÑÎ,N†³ðǃ\b/åD#/«™dA‹hÿhü¦ÊÊ á¬Mß^¦àóN:ÈnTf£vÜ¢Û¾ÉO…I²ÜNýΟ ²• ñ9kÈoóç·A×kÒ¶—0!·r[|æ¾tn/¾KŠëõZèQ —¹=V&æÀ-ÑÙÚëDC»¨Qôðô žŒ&œ3ç”· kñG€£Y[ endstream endobj 366 0 obj << /Type /Page /Parent 679 0 R /Resources 367 0 R /Contents 368 0 R /MediaBox [ 0 0 595 842 ] /CropBox [ 0 0 595 842 ] /Rotate 0 >> endobj 367 0 obj << /ProcSet [ /PDF /Text /ImageC /ImageI ] /Font << /TT2 838 0 R /TT4 840 0 R /TT6 536 0 R >> /XObject << /Im121 369 0 R >> /ExtGState << /GS1 843 0 R >> /ColorSpace << /Cs61 643 0 R >> >> endobj 368 0 obj << /Length 1352 /Filter /FlateDecode >> stream H‰ŒVÍŽÛ6¾ë)æH0W”dÉî­É¦m lÓ¢*zÈö@[´­T–Q^#}ìw~(ïn …kHÎÿ|3ä«:¹©ë,Ô»dmÖ%¤øc¢JÍ:ƒbi²4Í¡>&)Ÿû俇ß,ìC’š4- Þ& ¢PÅ%y¯nunrõVã^®^ëþ¿ã­» +Sªípò›Ò¤zaój…úÕB[k*E Ü- ´©ßYL¤¼ÎŒU#ܹþ¬mª\§ÿ¬"ß3ñÝ®Ø;üˆßÕ²0ÅÕqô1%÷Ô] ©R¤RS–e…rõm¢ žeóÙ2Ïs9£ø2õ½úel{M^O³ 1}6²Ù…liV…¸ÀJWìˆI3¢(YõÁ…ó™”NLo‡ãiè}?ñê^íô¢2+ÕRºÔ^¯Ñ²§j‰;)ž”땺×,Ðþœƒo`àèz‡ ÔÞƒë:8‘}ç&Öçu®Ï…¿‚øÑMTŠeÒ‹Œ¨OÚ’M ƒh—P±­ð<£½€ KõuçĤ°°Æ.)}3>8ø"¥=:ÔÆ•]©®iÐcr^¡‰L G^O1I›q¸O¦ÑÞF Ã‡6î^´Å?НnôBl‡®óÛ ÕÈÉhOÛ>rƼ|<û³‡Í3¦Ý0’7²€ÇÒÓáž#¬¿‰u-ch%Q[ òaö£b? RŸ8¹%g õdq;ô¡ S€a‡"ýù¸‰ŒX÷gYLz‰¾P!ŠxN¥c$Q,»v œ¡ðІ³ëÚ¿I¨R¾™ýæ‚sEVÑíshû=õb¡æÌ3Òy„ÆLFô3êd³ÑW™ŽPQ0n2ÚÎdÇŒ½”ƒYq ‚NXE+‹‹€x¶³ÁÕ›ƒA±*î LS’H"ÚÆÇ#¢”©?¢š^|>‰.,Õ–„ç ˆÇ¦áÉÏ|õE(üUÌ,S”ÙaóHÙŽžŠ±Æ„ä8Ò•³âd“›C°nÜäUdÞ¼´³;–©ÿ(h¾iZ²§hå2 RƉÒò®g£¨ì&ÈH{##éÚ(žÛx.„KªÊWc·sì‚H.;¡’‡Tÿ¢³¥ûˆ¢~ˆ!{Ùð6ÿýì/"|ŒÉÚ{‰ãy„²jš®ùô˜fqÛnf9û9öyFµéÇËÕ€^)ÉÇóþI×1ûvGå¢@Þ Ód#šr焚ä»Á¢®çÆËñ$g½lvpi§×G6zæšDqË£6 biîŸ}æ½;²@£EÛ?Š})¡èkd%ìßI¢Ä-q¨Ú¡ÞNÄï5x®¥ë† u ‰aפ×cÌ8CÓîèFGìÉg ÿïQ´˜IÊåS_Âó1ÑIWNqî@œJÓ—Ý4 K3ßD™É¯QZ\»¦øŸ]ãº0À|¥6m8ñ”+yÒàíXòp‚-Á²Tü~æ4=¼’‡ ŇÁ½¢ÆÀ£ø¾zk®çQB9‹Ó¯‘ÛÙb:Ñþ “;ßÎDÓÅÅ_ðQäx1ódFà"ˆˆ£| Ø(í5© µÈrç…eôýV(LÅæ ¢ÒI>K»,q”¯ãKžï©qˆæ!J„/`ºè¹«h”B¾© ôÃG¨…’ ßjtÙà3Ÿ”°ÈK|Û$»äUýì!÷òY›åˆõÖOo³ë»–ß³ö ‰±«¿o5Ýgû³.éѰ,¾E€d >èqŸoÃL=Âkl’bŽö¨-½“Nš@^Xc(ñš¬YaJ|»J<ë =Û“›·G›Y¸’_“ÌÆÚ¹ endstream endobj 369 0 obj << /Type /XObject /Subtype /Image /Width 800 /Height 749 /BitsPerComponent 8 /ColorSpace 643 0 R /Length 39705 /Filter /FlateDecode >> stream H‰ì×zª:@áwãigN™û¿Ú‘„ü|ùPvd½­¨ˆÖ³Ÿ¬“äã@…ú”Ý}œ(ð·¢ Îöñ@&ôaW[ŸÃççt†³¿p¾¤Ïp<û›¯5H*}ž_‘öa¦ŽOúÀ;’}Eú<¿¢0|FóÇà:Ͻ©ñû…ê‡+ô¡œÆ>Âôá ÈÈúï‰iëczlYþƒÜ-NÁ½Ä»š¾"}à,¥>æ'ñü1¥a"Iûx4a6 ù¬Zï#,¼üÝ žù¯H8Kcv>)õáøÓØÇàZpï®Ý¹·FŸA8Vkó+ïà y;—´÷Î…ëý˜@˜?pšgç)Šaž=†–>œ]ÏñW¤œåÙý‡Ÿ†"iD”“®ªÖÖWå‡ÀA†ynp³C¹ûªR…>Ür(Ô0ˆÈÜÇ/Í/ø»A<³ßO~òÑÿ<¸¸RŽØø&ÙD#ùϳ×ñ¿La}•Ô°Ú‡óüð¦üe†› ÒçùÙþÃ-‹Xþàí¨ùéþc®b`{LBR®%¶ C@]ècÐá¦õ½ªø1/úÍ÷è¦ïCÅÜObãå@âõU˜=¦_yCù…—}û?{Ð0©î?èXØ<ÙfB/öÑ~9ЇÅý}àâ÷~¤+¥Úúø˜ÑÞÂâþÃçanª¡Ûí6åq£¼…öý‡¢\Îòþc^W¹%–!ãû°Ë+úÀ{Xܨ†”µ2à“ý}à=,î?Ôð5ÿ´öq3…|ß>èï`qÿ¡\_Í}||=úøúVô7°¸ÿ0ó‡òšÖW_Sß_7úÀXÞLyügöß[ú¸Ý¾¾nßÛ>пµýGœGËúêö˜@&ì?ðVö"†>¦BŒoúÀXÞÈ<šúnD¦_ú@ÿ÷ÿCsAýr ‹ûöOxK‹û’…>6½t`qÿQB¸ÅýG }àB÷%ô ©î?ô½¢ÜǶË>ˆõUl¨*~ÎÆË.Tû@Àúê訣 Ž>€:úê訣 Ž>€:úêÒ>î¿°õ-×7æ ÿf¸Ž¤ß ·ûÆ7Úë‡E[?Ø…ìã®¶»o|£¹~XþZÍŸICØ“èãWyLCtÓïëyèæÏ¤ì)îãwy<†è¶7Þ×óÐÍŸIØSÔÇ/óø¹o|ã}=Ýü™ô=…>ìˆT“}Ø7þØãú›ç<Ì_š¿…òßg~äóP᳊>°»¬êxlì£áú¹ˆ%}ØÞè'©õa¦™JÜuÏÝŸ*æ±ì®ù©½Ï½!éC™Ÿé Ì¤b^LûØžQô½Uûð#<’Q??~–õQ{Ÿë)éC‰;ûµ’>”øÃáŽ>°¯âþ#ù¿ÿüãæ 1>ë}È÷EoHöó-ºÓ¾¼úÀ‘êë«|œ»õM((î#ž(æ \ò ñü¡Wú±Ò޶©1,ôž§óÎÖ>˜?pª†>Ò[e}µúÞí}(×ûœ£¸ÿðc]¹!/Ÿ‡+Š}TÞ×Ö‡=ôñ£’¿oVmô½¥}üÂÖ7Î},jþLúÀžè¨£ Ž>€:úê\Ñֿ֡_¨¸û>öOèMÔÇ.æìÁ×ú¸°³_èãÂÎ|  ;{ðu€>.Ì‚M­½¿Oôqan ËÌøîy?>.lÃÚ1·Ÿ_ë9-ú¸0;Öò˜úx&ú@ŸÌXÍãÇSyÐú¤›òÐ÷çò ôÉå¡t8ÊGvŒÌy(7à•¿ó¿EŠ>Ð1߇r‡òÑóhWrÜ+Y }à½ä}({œ~C/²eïíÝãàŸ+{Í|‘¢t.¬¯ìöq˜:\ ¢eÒˆïüKœ‹Ö]ô.e}Ø'Q)vŒh·XR…»¬±;¡t+ïC)UíC)ÕÜG¸–>Ы¥õ•~fþ`}…7úˆ~+}¨d²Öóz—õ1Õ±ÒǼt +(¥ÜŠ*L2óIú@Ï\kcDÿ<…>Ð%úXEF«èãÂèc}\}¬¢ ÆÈpUwú¸´–8®Œ>®>–ÑǵÑÇ2ú¸6úXF×FËèãÚj}Œã=9d(þ•èãÚ*}ŒÚWqá84}\ÝbÓ$bnÓ|âæ1³¼=ú¸¶´ÃõQ>¸«Þ} –õaïê}è·ž>èÂö>ÞzGB*}Ø]Æ|ðû·'y_ô¡Ö‡ñÎ%”ÑúèÂb×CèC ô!ÐúèÂn}ÜûCHí×ÇÐ=Ð;öñªO:Ê>¢>)õ1Næç£eÔ›ÐÞ@±­ 9Ð}\ÏR£ù™£™Tæƒ=Û2Ú´Væw~`Øgþ‘¼(:-^v/ºùg¼} ³ØÇ(îì ó‰¦Ñ–ô^”ã:¾(}Mg¯Å·üâ-”ç¿1}@XÚ¸tÚGËàkéCùdÊüL¦‹âÇ=7ˆ<è¹êü¡K}ØpöïC‰»ø-áS^ÐG¼ä£lë#œ_úpƒ0ÙèBÙù¨«è5qñSâÏ d6÷±ûü¡+}¤ŸòtöSÂÇÐ2ú° ,}RåýÇ+Ñ2¥>^6ÚöèCÜ^Š>9²hÿ1_4oLVú{ó ¾øeè™ûè } C} C} C} ³_úÞú@j·>ôÐú@b¿ù£?¥ÿ|ú¸¶÷½ÑÌHíØÇ«>é(ì?¡>)õ1šG£8?¦'ZF[_è™b£;ÛâÐô·°ÜÇh+yG?…˜»éü¸ØŒèCM´8!¯Væ÷\ôLy}eB¶‡p"œYmžò‡è¹–߇òÌSú@¦±tþ·šÐ‡ûÊŽÉø •»`zzt""ú@n¹qŸì#TàCQÉ£øDºîÚYœ} ·:è§ú˜Ç^¡ì„¸ô(ñ¾ˆ>)÷QÌá%ó‡ÊÍsçé/ŠoLûÐfye×YþÄSûÒÄú8:‰>)õñ²Ñæ)w9”ÖWç¡dêïóÃzëñ@,³_Z¥è™cúè} C} C} C} ³_úÞú@j·>ôÐú@b¿ù£?¥ÿ|ú¸¶÷½ÑÌHíØÇ«>é(ì?¡>)õ1Nwæ7a_*¼Pm}¡dŠ}øgYcñlm´õ…>YèÃM!f. çüY;ÉŒ•ZDj¢Å yµ2¿ç¢dÖûp7w.ÜÏgËÈ>ü!z®åÇ÷¡<ó”>©í?t˜?Dñþ£±?ö•“ñA+wÁôôèDDô\Ãú*« >;ÖXs¡ŠJÅ'Òu×Îâ<è¹}Œò…ÊÜáF›_4úÈNˆKï‹è™ô±iþ°Rù¡yîü1ýEñéÂÖõ•ßÌ+«Úòª²ÿ(M¡£ãè™R/mžr™Ci}uú@æ >ü:?¬·Ä2ëð¥UŠ>9¦.Ð2ôáÑ2ôáÑ2ôáÑ2ûõ¡ï½iìCáöíCý¡;Ïý)ýçÓÇeíÜÇÙ“Áfšù‘½ûÐÿëŠfÿØþ}¼ê³Ž@úÇÑ“ ¢cáÕ0°è]«÷1ê…‘?ÐúVíÃŽ{3;Œ¶•Ñ3Ýâ¾ ,Ó‡ª Çê g¡H }Œ~%ž¹…WÃÀúûûÿš>j™?*wºÐ‡^êC™1¨´¹›ŽÊŸôçäGäþ%¦Çô©½q“ÆÒdRïÃ}3öUüH«èW^qÈ cÿ!ÌCú€´iþÐɪjãü¡EáNÇ—dWìoúw°èRµ?Ökë«Êfdy}•~¥¢äöÙüŸ¡Hõ>´Y>EŒq-öæòÕ0°Jë+Î~)N-G¢H }¼@ÚG>¤ûuüþ#BéÃ0ã^.¬ÂúJû£¹Â=;z ¡HGô±Õ «}@¢}@Ú¿®Ð„Ýûè } ¶súÞú@dß>ôÐú@°óüÑŸÒ>}\ÖÞûÞhæDöîãUŸtöˆÑ‡DˆUûø?ûåþ–T¶`‘çÙþdûQO!`73Ù(-K›9f9Õ©¦ìf:Ó`W/XfEE²Ñ $К²:ÑE=8#–¶óRISÚD9“cÖt¦š:§¿äî­(„bzú^ÖÚ¬‡µØë{ù¾…ÚpôQÚ»èÀ ÃGÛÄü¨ í‚ íøñ©÷ <úÚÿìùqöPgÇ›hsaŸ¡] fØŸð âÙÔUQQ{¾øáz¢ôú€±÷£ÿVØ»à@ÅãùÃ)ÆÀÔ›"«ßWì3úb’ú„0œlݱVÄy'úW ~N†ÏÈèøÁpYà…1 E½0°îò3}7‚²bðp2~8bσ.ІŽ¶ûàlƒŸýðF¡òÃ~á ÍO›?l3ÒV ~N¼õ¡ŸFÐò¡Ÿ?Ü%Ž~?ÆZ:à@eH?<òq~ ŽÀg upW_}:À€ŠÏ~x£Ç?l8[ˆ³–¢—Yc^Z ü¨øž?¼¶‰øP?è€ðƒøP?è€?ûM4À€‚ý@'àПóÇÄÃÝ×?>[ü}þ˜h ? þöc´>i¬€ó@ü ~T†ôõI à0Ñ?è€~ (Ú×AmG§¯íE´õÒ;ýÅÕ¿€O~8d †c\(bΙ¿ &ö‹™qñ 9¡!\ï“­/bQŒ añ’Ĥ¤€¥_~õw$Y–’²|EêÒ¯—¬\µš9;økÖ®cEp¹£³Æ¡ý@‘µa0àmo¿Y¿!mã¦Í[¶¦mMß6Æår3Øa 3NîõƒÃ Ÿ25.~ƺÌõß~·}C܈QÙb¯™ò½8kÕŽ¤¤»vïØ½gïâì1ž›'Éß—µo?6—_p °°ðà¤CY‡÷NZµxôHZèX®»éè1Ùñ"{É EqÉ2$ù„²”Pê“§’5Ú²²2µî´^O(´†òäSI‡+6pG6ç~ô©a—íSEiÜç—eû* ð£—ð5g2Ïþ0kÞœsQç+ƒ.\¼ôM¨ý.cí?//ØÀæqmÉ‹àò¸ÄDÆ,ZÇ ŸžÁ ± ¶U¼i÷£q£X*´ü¼n$Ûë-é…»v&=xØ® ËJ]Çi¢êÔ’‹€)1I¥* í5¿¬N(±÷~ nüðD-{|ö~DÄÿ–~ö‹(Ð"’f,ORhŽæ°Ã8Ïâ¿;sá^9?Žßøí¯ØžþŒ c‡e »„bë:*<?Ì÷íõn}ßïÿ}Ï•ÛU’°’N¦ïèÖµèÊ)xžµêA͉âêÖC‡—¬ztuåžç]‚I~ÖM¢‰ÔËšzˆëGFXÄxâìÑÒÓÖ¦"zj«J4„ªç®½Ó¡Ñ÷ô<½û¢[/+_¡)©*ÕSF¾XµÍש}ñuT\P_ygÑ6vhü‚¹FLjaŠ™L£Ql ç½ümÓ½?bçbuo}(kzzpE[ÅãÈŠØàWkÒÃ&ǚ͖ÚZ «5£ƒC|Ý^/xVÿh¯Ä”UW¦‘Yu ­B¡Ñh y2ñ÷¯ŽÝI)“ÉŠ•ÇþmJȾRW^R^Ú^žR·ëÏ+ùûSt:^/“éåš–ºG›ý·>^p€^§lW Ô#ð¸ü…«-o7Ë¢¢[òÒÚXÂäãYÎóùÃmþpàM}õYûÁ;›6•3eá³-Æ>†ëÒ\#Æ—Zêç<æ3…yyG%BKäÚÞCëÕì(‹ÄÔ%©åG¾~µèÒ ±Ø‚ EB>&ŠŒ™ù2Þ·ÝõÌú«“ î{¾KÓ©–É4¥«Z#S[u¥×K4 R¥:ÞAí?b|f›T¥®CÞÔѤnO~óËÊZ­NAZIµÌª¬y›˜}Ö?ëãþ|ò…L«&ȧà ?™zÍ@-¾šõÝ´Íw•ù4ÿ~¸Î#=|Æ~pÓ7Ç\œ1#óݱô}¾I$ìÍ"ÓbÆù|#V˜Ç7 Íb<ê#ƒµ†Ÿm* ó³%µ˜ˆuá¾TÈK1!&¨8²9=ó¥_Ž!wÖì|t8+ñ'­õt\Eöf•UAè ê^MºUj¡Ó+ŸãµÙªË»I²ç–\/S©«ÞQ“„Bk•2Cùµ7{VÿGÊñÃg—÷¦ƒ&=ÙÝ8²”rÃñaGÈU·_’ÜÐ~¸ê'G5… .[úÞ€úÊÛ¶¾›ôdó|¼+G"’JE9‹X*í2Õq?7b¹=™”–ñì¿ .çîÏaVFå™$ùïóD¹xt‰‰ÅLan½Ž‰c­‹õcH¶;ñmrë›Öâ¦ÎIªº;-I6ÉõšbƒºáƒFF–%·žJÝ‘÷ümÝ©†»Šj¥^ÞÑsZ¥jø°\ù¡]¦Õ*ˆ††-5‡V:Ï容ÝÜÜ+Fó Òj'Èáý± b ›’.}ô†ñƒŽGÜñ9û1=-íÂës‘•¹µù¦<¡Å"’š™~W‚D„ñÛ…R³¸íõ™íÓ5òxa¡ìðE±ÌŠ´w¯Ûð¼Â÷Ò\1žkî2 ðŠÊÇü6?{|(+~tã/ö펇É+Ú«ôrA謤NA¨›^t¨dêC7©Ó–%?X¹øì—éWiÆir~¢Ï ØCG$xHJ’JÀÑ MºAéY´`ÄÖ (rz@ÙC説ØBt´h’( ”dX„„%A"„Õµ1üC&L+K\>̌χœœTÞ[O%÷÷>÷½‚.Ó†ð]~M~g"Ä_œ ûÏm·D Ù*RŒ+¨Ä†¨õ™Ú­ÓHtnµ\ÄÚ?¶Ëº»®7ô#ù#×ÊÞMG7WêW?Œö_ñ¬Íéï6W¡«‡Í¤0 º´.kæã½´a—ÿ|lz™ù˜á,r: Lg£‹IÁ°–c{¯m¡(NÇiyxòÈñÌÃÙY9‹[b)tsØ#4Ò!$€3¯•iA+1L ˆ|4œM\w§­¤XÎouÏñöI{»½Ýlç)Í6Ÿ>ís«ªÓVª&Uíòþä=gRò8Oÿu÷ͪ²'|vîžLÈ墸[ d5 Ô„|UK…6Iç½øs»‹3>†?ÒÖ*‡jØ+:–ŽZmã¾Ýªq®aª’þÊ€„r ˽4B:–3æÙ¸xTÖ:Œ|æÃ[ÌG@HPö ƒSXÔØ¸ëÇÙÔD0ÑÇïfžœ>âï‰ÈD§'Æø÷ÕP[R3¾^\wýhVÈÉÜ—Ñ&˜›L&í)öø5€Ac€ d…©-=©£A±'>x‡Ì ïÊc©+í“<^[¹Ê“·¦« îLòìžfO„ R®¬€y¾¹“m?ݧ]|®þçMÅÉ)¿uIežã‰Tj+¼_0 Á=1"Dù2›x`vâìO%±è˜~® Åù^AС¬äµ-4|y’â÷TèNX˜ê2”SÔ15µ°D)á /«SÎ*Å[×þ~æÃ[ÄGèŸ6’CIÓÏ &½4ªÑÈaàA˜R)@`"1˜ÕÌ€ð¶C‡^вãÑ’µ!Ö«½Úã_ÿÕ?Ä,ƒ0’q7$ö`YŸ†AÈȵ3×_¤ý#ð½ºîµ‚n°Âxjæš+y •Y€‹pÜm³IØz·@à(šÄâÍ/ú EBQ«ß’$’Ÿïc((ù©5IˆˆD¸~¶x_\ñý†Ä*Ž«Q®gDc5Ì=I¦®g‡þƒ6÷þ¨‘Ö+Yõ ±@ "øýÍÔÃÅÕ·}§*|ÛDío˜(G:ÆQû² n›,ß;½V;ŸùðÖ‡ðA&’ë©Á¬NW“Â,T‹¥4 °)B뉺glŠ„ àúèJôÁ‡3/–®.¶Âà/_æÌ˜0 «=ûó©ë{{oFjŒ`åDYé-þ§Òß·ýÈ;OQÖ¢slDÑ®T)PDÄ–‹D·ÔÈ”m¢ ®šÕЉ¢ú†‰;¶®†~VñÒßè«paX”Âr#.ÔÜc]öiHØëós§A••|¸Õ'?êå{…\hfÍíú$½ÔìXý±ÈÐü˰ïå%BÚç¯ð¿‘:–1ì5¨ ëJ‚×féóá·Á[ÿ£|„HÁÙ¹ÓWz˨Qki‰‹Z ‚&b4€1hÁÀêjJ_ô± -Y EŽ\ ¿– oYZcÓ…ÂBSÚ|£\½NaÀ€d˜è`DYdu5€•81cPž= ’½ïÿ.e]ä8‹vH‰ïß›(÷t²y\)×…n!îFdzµTލ5[U×é=yMûõÛ„¹|ÙVÛ7e·»ã´ZZ]þþD›×„jÏA„]Ÿ¤ÑHq;‚"j «ßUjyI\¯Á‘¦Ÿ ©`hÜÑýV.*ÞLL“S¾m¾5K‹˜¿PÙÜ̪,÷¢bQÝ6Ý×ÈZþ´|ø­èî£UÿDz>Ãz^œ>v#ºÖb,¥C.BKø¶¿h†4ª'5˜˜‘nv¤újgz ŒBÖðïcF3bËË ¶øo&g‰Ä¬‘Gµ-T€ÔV{ƒA ƒ2H€¬®Bh0"=fãÆ-tðvÅ Îø5Äï÷éÒ‰¸C\T)'6ß2Hô8*ÙP>׌(¸r}ë“‹þžÏÆ;ÊO¼}~âÌßÔÄe)‰[ÏÒ9L&“3vO'–KlzFªVËÜ"µM$@ùJ*ewþÒ%ºÿÎuPzóŸã¾Kƒc¥àª7g%×ÌëèŽYZ'uþsw•˜Íf‹+,­a¾Û]• ŒW±³ OÌÇ¥ÖÏGÐhú5€ºíÆ„1+a¦ˆ›éai©2BP©§¹aF£CewC²3¯žÑ „,ÓdRȃðå…Âû¦O·È¡ä£i©9#WvDZ€“01Jí ñœ‹ ödïüþPHHÖšûï¤uâ»[zy³ÂǾE¤º;ùsOž{"U è[®ÆeˆŒ‹ÖÇçÕ%è=£“•ÏœÅ]]Ë+%vÆŸgF¹ 4èÒē٧c ­I"‰X*ÒKqµÍ¦“*J³ûr^ÞíÝÅÅ¥Ïr6®iÐ"këÍ^0 WL®ÐÙTÅ{óÕÉz=Ra^ö+¾m ¶N®¯g%ºÍŽ6oå0R9ªK(šÉ |›ÅÏ|xk½|9vøÔ©ÏFïÁ£”N­yð8õî‹#¨4ˆŽð ˆ%L#DíKO‹Í½aF& ¢„‘ˆ=G–ÿÛ#‰ž½tKLvV(i4÷D )x;ÕDµxê0@€B‰ˆÞ®¥aãQ1htgflZìWk`ä—¨±”¹ŸTˆ#Š!®-éÎé§qñ{îÈe(÷ßì—éSÒkDZfìÎ%!‚äîZær)ˆ{á5·JÜwÌ}IÙY2Ì4O¦ ¸¤&$¹#)æÁLË5Í?äü:Ou¢°§çõÓõ‚aæþÍwî™ûû¹®ïÅg*XL~Å쪲B Myû2ôŸ/RÖ 4rrgB µfÈ%X•Sv^r¶Ó²>4/s < ù‚ SªÑŽÈê€E$uÙ-_ŸÜQôöåž5þ¿Ü½N^›ùÖÇ¯î ««_¾¬äŒr«d†b¢*ÉL=Q&ªe¥Ê‰j–´Æ(Ò@Å|ÃíÕ× š´<Õò(FŒóñ^ÿ˜ÄûûÖÔ«Ôý(ð ëÔ€]Òî•k8üÊÕõæ§Ç]KÜ{ݲÝJÜÝŽ?ŵ8XC-›Ô*-V«z”ˆF#./>Ç‹fŒ‰Âüa$㡃CšT.®NOUN8,g?¸£ƒO<Ж&®Â˜[xGZ/>‹GüÐ}–Ža!ÛÛR.¥<ö“³ïŠD ß'ïÂèô'iã䃚»ÊÚ†êÚjÑü|µà@(á}أτ, —UŸ<àœónÎPíù¨;Öi¹0$”îv3µËŸ^Ò!1?¦«:F(ä°‰ ûËX¤0`B–0ÌŠC·W.ä9{žù"1ݵC@²ÒUÕ§t52´º0ÏdÏGCæç€5?Ú)}Í1TãÈʉҺ¡ fàðȱ5¦¤Á¨Ê±êñ’„_Ñ0€(⽟ÒÁ~ž_eX?âÞt9fò쎃mó!u‰²ïEÂÌoX`°ëêÖFÚq`o:~ŽÛÔ@sëNi"‰ôòlÄm^$@0Ko Ÿ£íÚÊ$ÁáÝ4ù‹‹9ç€Ä ¶´`i4—v×êpltøÆä#j3×ÃÁ÷v-G'-„gYÇû­™1"h¬Û~î¶—É1s_Î %ÌÅ‚`o:þ¬R$"w;“Ýñø¢çd¶†ø¤¤wÀ]ÿÍüXé§ei—{Ås3<Žf+·ƒ§a Ù2G 8àßåRûÓý.¦ÍÔ§¸»fç­t÷oMûšõd«ÔæFïÑ­0g'>OŠ¥røÑpùC"™”;dÌØJYEÅþÍJÄ£2¥b ÈY#ÇÄ|MMCí?ŠÃÆù8V)ŒËD¯?¢¶ â°ûB°‘FÍ/>~¢Žæb´Œ´±lyÐl÷ìmѦCA`(øiŒrì1¹yØ¢}êÔžeïú´Q·´H=C¹ì·{ïê¾Ä >møá1‡æ€Ù­,ÕŽ'l8DêZ°öZšVë‚SÙ?pX÷P·ª÷½‘Èëºð¹ÉuÛfÇÍÖh¤ù5/ã€,yL™áËBËIl‰Œ,é“›]šf¸eš0è·neê˻ʉ¦.·Ž¯à(¸âi}Hp±þ}ÑMß‹iÛyNSN4Ú­`Cå [n!…Î*—¬2ÂhIÖê/ãHY—)dIeã] .Âv2:Úß_>D%Îøã C‹œq;±ß#âòž,ª8XûbÚùšª~ WT#ô¸óßf®åëªáù‘ÕÛ UC""9ˆDbUªr†+ëx}¦Dæ§qc$¥U5TÔü€ñù¨ª¢nm•W~1Ykýí2ò‹Ÿ¨#ù@#0&èÖW¶6ž‡‡QIg_…[&``ðé`OUƒÛΩ=×mKíUííÇ=âÎÄ[¢(È%x¼ÂÊÄJA_>Ç~ Å ˆNVà›;çש­‡X»ÍŽçmNªÏy¨'ÏÚ€#LÐ>ÞM1;¸A‡ÒC°ÇF¼9U‡‚Âá°ï Ù¡å¸Ù9mÍô‘ê妦~ ±±î²ÞìÜüÞåe|q¯YF0H~©Ÿ ê” ùüšç/‹3è =^ŸŸ‘—㊣ï…eöôÚïBj˜Y»ŠæîZÐÏ#ƃ»Ä 1h4 <(€ÐßE˜+—ãUÎyÉs[D!›G2•w¥eOìýNïiŽõÈ]$IÉâ×^8˸ ¶TZS+®¨þOú÷üÎp5S0_¡T(«¥Är¦pž¥¹g X7R+ ê#ÉÆ?íF—A¯ºaxäß™TWUU#T05 °,ðøWwüÅÇOÔQ|  §©ÀôØ,}ápèØ‹f‚‰•~æÆHï7ÑÑÖ^ñ¿%µ86fÑmt¿: ·„¡n,m ºterÝÐÓMq ±3A/=ÒºØÛÚîF>£Nž¿š”EÙÿ3ü*ii‚¡P`ñ×îk³¦êvŸÁ,<_-ÁÌᔇMgPzŒ^`ñIáñ‡Hí4 L_v¥9k³²zèsoCB‹ßûùo™™e¼IÈb…@\ïÿ2¿,¿,—¢wmÄöè3ìV®\0ìf6¶çì⬯g1¥AAB/¤Ì¤@ééÁ©[Ý©Ýò>Ð^å®ËÌx7ÝÚN™ö½i&ïÓg懅ÌçÚÞ_„~iÒñ¨„|û+箉‰$^‘¨aWV® dá¶HT}çóùÈmÅâà€?¤—Ïp”Ç„Ù_ßQ=Ì.ï/çð”Ÿÿš]û”š>Ù|-W¹ðQ°êØÄ®]¬:EíÐl­p+ƒn—¤‹þã?[Gñqµ{ÖÞ¾qk¯Ê˜jŒ‚A|¡h€d¬Íf©c#®õÓèÒŸ¸v'­JëÒâh›@гF ÑÐÅÝ8ô7ýtÿÄʉ@ÝÄj“P4éu%Þëšîþn’‡ V«£-ÑÄÒþ¢wÓ~ì®—7 9Ýv>}Òœ’x¹-:Êúºæ³ÿÊ VÒǤ1›Ãa)D"±_fI^òž³«ó>½œØI »ÞÞ*ÙÓwkøu, #IÈ$ÐÍß ùÛ9´½ß›´¼«_ß¶]X’…ctL0.²5,1ßCsÃ=É(z7ýØÈVýrÈŸîì–£ßþ›ýrýJ:Ýâ¸ÊZöÊ\^Êœñ–]$dL»8¦†fj^Ê[†•7DE,#E«‚&¨©'gPÓT A¼p03a°Ì4Kì9€‘è×ys:k½ðuW9‹*ÀPBÕªsãpŒÃ³h}üÝ 0´l6¾ü%êüð¸Ãíø|BÅÊìûg0ñâBŒÃøŠ>j3ývÔ=¤Éi.[\OQQ¥[Ø[¸Úm«¤\>>Õ{ÐÀ2&›¦ì¬"RÈIãC&IÅ´tl²LÐßÖ3u_½ÕJR¦ú‘t™œ¤6Z`1 ”IlVÚ6›Óþ-®fÛCöì\ãjûrµzpµùÚ}Çn»ñ!B‡–Vƒª¡3 3Ç”)ÉÞn~îg¼<|N‡c `רB„F£Ã3ÓZOçi:€šÖ.XÙîÓže.Ã<úfùzŒ…ÛŸnJÆOy¹¹Én^Y^Wǒݳnt'8òLnÏY~•xøM€€÷›×¿=N¿ö±£ØúñÕµÔpàšïÉ ÑñcÊœöÌÌ+óy‰iV&¶´¥EZ#ed$dÌûJì ` ¼¸¬8ÎÔŠiB*…Îf³á…Ü>‹Ž¤Ñ¹T“É¡‡ÐS42RZV…+•D9ûØX~{?*~¹2´¢¨âéÆç¨ÊOEzTBµŠ'TÎæ¯>C -ßûÅþùââ“ Ã0$ŸÆ… ݹœÃ7™TȘüžÂž§zÔç‚¿àÃH¦!úT¤zz=cÛó:ù¶©º^&åÂ&…t&KÊ¢¨%k[ñ¹©ˆ5us‹d¤˜$68MÉ*’Ä@âO ›Ld­Ö‚ˆN&åÃø4 vÊeα7µE«V« µñïùøN&»îøÝù—«Ýç߇ÿc¶¥ P(v¦*:º4ÐÍ?Û=ûÌ›>§ßUTJ«C<@5þ~¿ Øñü~ð¾çÁmY‡ø™- éF·¯·wd~ëtý;ßí9åíîu:í¬‡›w÷É÷_ùZ«%ïÀpM‡KúÏæ¡¿ÎåÀ·iiKÛ”óëá"(ú÷# h$(ÕÓ×Ó+9ëÔü¦W†L«U7Ϥô¸=.R=XZ^TQœ?-‘×2´L2‹¬e‘M0x¬†˜ì›4çq¾_¡AЄx‹Eq [vó§ãêiSw>EÞ+x‰Y@7ô áBÀš »§ ‡/üªc ˜ü'Ÿ££WnŸwXѯÂéZvcc ™ÜÜt« Gˆ¬,º«×ïäCg`"§‘Tj³T\ÏØVtí0"©‰Ù×ÛÀgÔÖ²‚‡N[vmn¬ãª8 be’k°LY0øPãTm³â"Áa0˜Ö‰h+Ú$Öqs뢉m⥆EùÞø°\üֻߪ›ÛÓMy°{lÛ¶ ßvÚïØ›HýWm7>xh0=:æ’ûÆÃÍÑë§ÖTöý hD` ] à±Õ<^i)´´ :ŠV(Næþìmí¼R×=ü<’ ߚUÇ`tlÈôš?²4æî™Øéú˜àæçŸøAA—bºÖ³Í+½»]YËx;Öö!ø·À¥c3„2BE$®bdŸ2½;%%%³ýŒÕ!‹m³I5Èáø¢²PHñþÈðh×±.ŒB6wbK+«5¨µ,V CÛbÔ’¤l e|ùWl)O£GÞêŃJbÈgmñ¹ÃäZ‡Æï©Ð?¸5@ø,lâa…ÐêPfpFç°Laïàñã ,ª÷éÆÊ¹¨°É‹«+HR­±vQ¢[lŽs¸€zÿþ}aOùv>¥tä´‰M8?Žf~KO!ÆM Ms&t”ŠV®{n ðªÌ&1â9''Íd´ÎZ„|dŒj´ÉõÁ qNî¤3Z¨˜˜°w?a˜3ëÔ¤ÝùØo5çoÙoÍm˶ÑשÝĶÐù»|üõ—í…?Œí•ÐR<–wb_Øú£ôÔÄÇ­­Á=|æÁŸªòôÈh ƒC`"H4zâùhkÇýõÔ¶Ô}f1Ö®vŒ »XhGWBlb—Úž€êFõªŸ:’Žé¥ïÎGv¤uÝñðéýíßþm)|Ç}èV£±öƒ—bÎ}`Oá¯Ï ؇b—‹Rã’l4 ñS€gQÑ_îÿ~÷ùËg‡ŒtðüÌÍýMj?®ºÚ_M7&÷Æ«÷nlPÐ" 9th&ë_ƒŸ”gè´øÁÃåùÙ“Ç&@¡HGÐ `I„ÚÖcZ°U£“tRߢÊg‰ }´…{Ú#+Ü þÐà½O2ÔÃóüv=Ø"OŸ+d 1‘ƒ¿¬< f+Æ=\AHöA 8ïu{”nÏ8O*Û¼æÃå Ž6Ë«™ b{ß=¬OÌSH`·`ƒšvˆcqØ R–‹×ò^ÁaÿQæø  §e›O*³|`Ɉ`૸¿»æX%m ^™"-ë?]dË|l憷-ã³Wfò&MlòñÙ[qd“­ÍßÞÙñŒ[æã…¢v¥íƒ½ÂÞÔÕ7’ˆRw¢:§Kn­w©Q(jØÑMNr`H丧7:N  èêY>pyôÀÎ/¢>ŠM´‘⬥¶ CIîe©+{‹OŸmúöÙ³ýñÉô–Âd:ÔCU¬Ê áêªhþõ–#Ãw‡*!'¬Ÿ8S¾ûóô›‹ÖÞdc ýÚµl°9k<÷rEº‰VV?'"èÀ\]îõ+?NiA]³Pê%íB–Ì4‡?¼pW'àË$2)‹ß¶VK̬½F÷c¬ZæO6'ˆ9l–Ê,uªÜã×óòóŽhîeý6(çyæ•N•ÓÙ²Ø\1×íóyÙÞ1—r*F­1Ôç™ÚES‡³û©5uwäRžjœëqÏ;ƒ ¶µåäûã´ñæÌó}›ß] …‡«Èå­™çýZØàQÏeù}æ ·SÖÒ<Çå0e¾Egr޽UñQ>þtýåHø°¶ÌGiti鎋vDÍJ¯¨’ŒâQ‰¡4–‚òã¨FÄP²aM‰‰ŽŠµZÝݽ÷dt鮢ÑôÈ=a_G•¦¯À°°UcÉ×™ºt0&¢0eï¢âé„Ç뛚Rzž¯§tÆ‘­°A`éT?݈ú&}éæâ3%iO­É6r\÷ã¦ïŒ¸¼ˆ õ-,4f ‘Á)X#ÖVÐ*sŠ% N d “ ×Mà…³X¦Pqç2–™ËN62ɽý­Oêõ× °FÆFf­Ê€FP§‚€PÀs;M|8­4rVpý“m3å×5ø)¼F225Ih6Éaƒp*ÝJÏxóoÄ;3åÙWîM y<Óœ¥¿ŒŠ#NÊØq\œ—ÇO¯õóVèPhñÇÅ›Wf=(a{U2A3^#¿WìᎷs_„è½¥MùTl‹Ë÷VäVÚÝÿçã£Ú2/._¼lEÖ×1Hj˜–ÿäN~²¾ ‚HÌÀ1 Ö ª¨ô!RBLT°|ÇÒ-{çÙó£Ëaa{vFÞ¾ôpiiWXøÅt£™ÿ¸ËjUwOÿ|âtúç'o‘˜˜¦T5Ó€ Ãô`˜J=’¸º SèþdõÙôK%Ó÷_*ú®èÄú>”ºk}ÿí áÑ_D~õ,…0±Ìàû”­•åklÌ;¦Òµ_‚ÇmÈë…,×£TÈ4µM£§Â÷œ´l%©È\óû«®Ñˆù3««4µì®^šÌr¼V.õ³YwóËk³23K“ÂpIÚ[ZXfA3("L×LbÒ f7>ºr?˜¿Ñ°qx*·ÔN +«)tZFVN3_5.~éb®Ø,v¿{tß'ð÷µ}ú(œ8¶YTJóœ\ú,6[ÚÜ"~Ç% ml•Äù‘q Rÿ Ÿ×ã~]9fêåRÙkùïóñ?¢-ó±£4réö7=#…ÏOá»Réôk8­ªÆf ”•ÑTÔé¨ÍaìÓÑ‘…: Ÿ»t»¤“l¿ÿpïtèJþ‘‚âBßZqµ¤î<s0–aèìÂdô?¨Ø öW iuX¦ ŸZF-²’êˆjütj±äÆ´YWUeì))=i==)ð ÊŠ1ø8Û m•ø¤¥RÉàù©š1Éá@J®Ûëõyçy\¶Ïgñ¹çÁŠí¥¯Ûë¸o§ö×öõg]}D\Ä7ó‘{ñEº‡÷‹7A=^>^þKK ª« ärŒ[^ÅU\‹†~ˆ½^»væE…(åäàÅû÷Ñn¾ŽÅ˜Ê(Ä2w ‹{Õ{%+çÕƒ MNWeåB GFP‡ñcð18u•Hy—Š)ÃW.TŽ!©A‹ÒŸ½Ì¿¸¡ 8™Õ»x:'÷íù<ÿɧ_Ú¶JÄš„Ø„»IþŽÒlõä€ÅÂÔrƒDËÒ¶Ü¡ò>OoÏä58É½æÆ P˜ÕÍ+uS÷Àª ºyÓ¢fYrVäháJ‚’·R/H% Ã"Phµ-bGÁ²éÐ ”‚¶¢ƒÅÄÆ¤BÜ ë©…ñ+ñE%±©(1ËÅ3¶ÍT0@Ÿ$´Vl œçè”@:dý>;¾Žý7ûæ…kÒ¯ˆ\õÍãÓëÍr¥D­²°´  ²ŒF¥^©d?øpß̇æ@ÞY("úíb÷9«ìóI„2ɽœL"Q#^¾<ÐÛ›î@‡-öž¾ ©é¬<Òl”K$k¦àa÷*|åø _oïôôÌßNew•L]5ŠV ‡SÛ7B÷= ù#|„úy ¿€ŒhÊ=q8s²ãY¾¿Ÿ·ïO>>^^(êáa¿ÝÄÒÊë±+E؈;‘Ë,³\¥–Í›;3“*)ËF8¦÷þNäHÁ\3G • Ž7±ìEÝÈç7³Ô­ þš@6a—n¾þíÈÃÀ@ûÆëA6ÚÜï5òyb¢…-Ö*ÙܶÁ”w–bn`–u<žŒ&/T‘¨aÁû÷#‘¶`0iý`²ÜA‘è–Ø/ùB»€EÎ!þê_´»Û@›3–¶$Oo*Øz‰pÚ\¾`Ib0 X¥˜ÏÒ…|Y/)A43“”ôƒñÍ|äùZ}ß^ÙÐxB¡;jác8®Œúw‡Ÿ§ïýð0Í™m$ZMÕXAwù¹»¿^ö‹ÆÃ%??+ ‚Ê 1µf5Cʱ0˜L¦¸‹¦ÝÉòFxìÝN4ŸÃ½9ïíÞzjOÇb``mH¤;–2ªMNÍÞûûeø÷L¾È˜ôöÎz52~ídZž·§§ý™¹©Á£:â*aŽ#„T'ÍC ׊S *A5yã*¿^Ò,ÝÅ Y k…ä dd8ï+(ú-×ÙaW±çiB±¨®O¦p°°0Ìæþ×HRÌ»#ë1raB=¿^”:ZJ^-ßäÆÔŠ›¹ *º£x™)gçç·ÄS;¦ö1GaBÒ@#ßw»¯U å&¬wîÚƒ@ ¼4™ü‹¥€R ’d§2C“ÐþN¹DÛ4?ÏýÁ‡“Øö=| Üþ4+Úï\·&M kަÕ\æ‚7m¬Èôq‰áK‘ÃŒtn_ƒ@?ß$çAvÃÀ„YDÝg g=7;À—±ãüâ?+ʆ ©¢ÂåQÚ¿òþôöîÉÏÙž}!¯»+|G‚wnFõž¾j[]7%š˜-¤°CÑ8](lk¶Úr{Ûâ/µ;/Î`d£õ®Žh*‹Y] ><ÕÓaw>•ÏW¦ï~h<†ÛLd2f¹hâÈÒ¡:èxÄÇÝDSâÁ->`j‹  ¬F<Eœsûž_…ˆó•[d²ÝÚšeýñ:ÔÈ?þüôÒ«ú Ÿ¯•è…B¹µu1”Ÿ ÇdÂ~ðá$¾‹ññW÷{s³ízùGhàÅ®ö¯­Þd»¦œ\²@E´(ZÙ,µÀ„õV3ØdµF«}p&Ó%]‡kÒ ,îD*VWF¼Ó=y(¿÷ÀíšÀÎ øRûä寇¶µõõ "·ºø’ÂËî³t¯¯2 kãlŽ4ÑZ"PPT­ôXt#5«X¨í™ZÙ2;ñ뙓4{Ù5Éý×ûLÞ?Ð8Oÿ”uPë ºÍÅl×é»ìZ³ÑnA5f ]ž/KÆ(7»?öfçZE8ذ z—Á{ ä›4 ›[É ¦6ú”oôîÏã-¡¿òèl_z¸„K²­ á%aúHÌ]ÖÛë´5飽½íÒÍŠ……NŸøtR|vÅFtû@ö±Ï;¾@êÀÇù§7æ3{¿£Oà‚vl}1ÀçNpç''ç¡I1?àl•8[¥å2)õÆ|Ø`áþ˜yåx¶k€øŽî9\ jï‰u ²ÀF÷çVì=°nĨµhõú˜^§7-jÔ FCH„ˆPÐ$¥!}÷ló^„iò¦éš:\Ïäþ˜©d¤]½>èÿåo+wÿ4àÊŠ‘ê±ÒyY)!õŸ86ÃíµÚšôÁ-žf ñüŸol-X1I‚406ÎqÛð§M7s2Ž£I›•H¿‡ i¤qŒ[ä8Š‹ b1·¥âJ:J]ÍM| ©µ÷éºtfýSQ­}¤vEÊwäÁ†UˆÔ Y ¢ÈŸy{ÿcO2õ˜l&ûðHÌnÖº1­!´áˆÇb¤4,IÁ?ús|W|Ú´CD¦ÁBæ^æÉåÍY{ýHKøÔÝ?˜åS Mò×åËŠúÁyôáê”Ë+äŠë§o\/ÏÆ}`ë#íÑozD“>0Œ©Ô‰=Ñ›7åS Ø,§§°ñI8àh™Ÿœ'%‰ù|—K~ƒ h‹ø ‚°Õ‰†4f}-Ixh{>€þãÿ¶E+³onžÞ­ZÆú½“[¯×÷ŒÄbf£Ñ¤Õºõ1ÒDi!]ÿf.Olö®e6§>8ö™Žöät%úàñx/«¤½½úèl.… nàñ¦Pj©ø=µÈ¡{Š€²½ùýŸmø ½=£/Ž{cÃÕ½½#ÕJ•Á³CäŽÄñ¡—}Ȉù¥²Æ YgkTªˆ’ýUc]c‹„‚vV3]q>fŽÙéãŒÞž‘—ÉÛ¥¬œ3…|zGÙrÿƒ•f£ñaDµFp«Åý>¦ptDÊôŽçöWö'f£>”3@¸@ñ^î¤p?NYû«5ꃷâºRlίæ¨ÂUt–í~ÜyA4ZyXT%¼Hî,e¹4Wo<˜wÇó‡‚1.¦Ùûª»§L k…v R¹µ$ù¥ŽØ»0–7•“¥L–ÉÚËò.ÏÕUÈ(TÈŠ[­xäîåéˆ/.=ƒaX¥¶ßú€zKô¡ˆÕ—{ªî|aK#/† * ‹xÉj†Äùü…J |†4näÖFfêú>T•ãøAY¨Œ\Ìu¡`?Z¹ëGòÙJm$õÀK¹½]úˆ¶·—7ÉÂõ_­w6»¸~KÑ_—ãskNögž×tùK2YgÇ÷U …Âêîášî)áÝs_Ÿÿ„Õ7ÕÏá`? Ì¿ŸW&z,øBÑDy^[y{c^ØHÔ87¶§AÞì¢@VÂO¨ïÓ=µjÜf6ÅÜÃFL›‰µÀ<)Ú+ôª€³DvàÎd ‰[˜C‰xã?n£@ D$½À,æ·/¸¢Â8«²m ø ÆrhŒBåÖÇr•µ¿Jh$LÍþ‚æÈ¦Þ2{ª>Øôå ÖG‹ P*™˜<ù‡å²pñÌä¤KvIÛ¡#}œ*»#^¨ºráxXgŸªªbígíìŸu놧„û~ødÜÆAÜz§˜~ìÝ{µTÆÍ6s'\Îp§|¡ñb“ÓÙªp*:eÒ(…q+5›R?WwßOxÝ]±˜Ák°…TºÑæŒO÷¬B¤Uã+hÇ8«Öb@½Œ:c©Q+j ©BV ”@xƒiÔ¾ñãŒÄMÈjŠGÜÌ[@žè{S F}¼ ãå†dCÆõ±4so¸>šäåòŠ6Ù‘/m mym2§`"–K¯Õ²o*‚a謰òYí½ñûµ³1£Qk ù+«b·æ¾ŽpÐÛ½dŽ<æûsÑÞEÖâÞ›u òÎ&¹¢Uì€øI@0!@3!‚PYGÏZ0²$aˆZ«´ØˆPÍÓ;ùL¬%tVù'k+0¾cñ‰ þøÕŠ8J0£EiÐ(•fe¬‹Â$ˆ°ô‚¹ûkÖ‚K«UiNP|§Ê#@g ôZõ±j¤âÖ'b[Š‘“q{¶&}”¶F%¥òòë׋ËÜW $q‰':¢×Î05¾[ƨAüÃ_Þ?×£ñf[iëÝÑî"ÓªÔ¦±ÙÂmR¹³ÄÙÔ$—·:.E³¢4Ü\u:%P  z­¶ *44äV©Í›Gg°™-Akz/;çÆªµLVðP|›ÅAX…jAÄkRÚpzqƒU­¶éÜôgµÈÁ;Ù_þäàZDêA~4 t¦0¯W/gë×2¯ØÖ¤°T¦ˆ†¹üæNEùÅŠ@ ÙÛT,”ÉϾ ;ÝKƒ ëFö3õÐþ¹ևƵ3Z]6û 9^“*UÈ.æ5>¼4×ÐXѰ—'w:›¥ÂBp«W;b Ep‚i<¸ÚŠÁª¾ýŽì™]dK†A0oÓV‚þôߣQ+®Æ¥.ˆd!‹Âñjâó«ÿÏ~µ5qgqçÀO†#îâ£Ge­Hx$ÀÖ]k°(t­Š­µnÕ ­I ˆF&0 ¼±ö!¢ôºÙÄ "™¶qLj©ÒM¥þ!;LÈcòàœí©=Ç 'É|ïýÞï⦅ï÷sEˆ7 ·|ˆL´‡ÛôÁJŽß6i.nó²&|†òL ùY&Ó0êÝ6^ÞÝäΙø a:Nýä+9°…¾/˜qcuã-»Ë,:Ëò¯Ë/~ÛÓ&ÆL3ŸGã0fú à4òMMlA]Ý€[ v¹]Ñ*¥+f‹R‹Q¹F­V·Ç5¯#ò—6âMƒ®ÄÞù†ÛyÅXšu-Wµ ZØåDQ'¢‘«!Ü"ÜòÊÃþöŒ=‘QG¼áþ[‰«á&¯ñ(kÂG`ó.v_/讳98…´¼ü| •R°—°j&ºVWQÿb\}2Ó;ïwa™2z]¨XfÿöîˆÕ‡Ñµ,é£a(O?Ä^#PÈwè›ø$þ·7£ÑiÒMë4b³Åss­Zíø…>"Ø'òÛK[@麓ï)€ÉÎåîC$ÖˆPF`Xh1kÔ Ù]¸E˜,ˆFÞ%ð–oYs:[7E ðì׺,Üâ5>eMø ‹­¯%ßeÚøÕy£./w~Q©|ã·42yµåαÝ!3‹A߀1S 7aÃð rõaò‘Uذ¹Ž&à88l€Å˜™Ù·ÐÌæ5âz;´!£Æ ½¢RˆAØeR!vD2\ýa¨«Ô8ÿm€;úÁY$^ºÝåÇK=:aÍ–(ñ¥ÑZ ØÚÍ(¡Ûƒ…8Ë‚HÄûcŽ‘âëí±@›•½"ªŒÈñ¥ïš?·x%ñ‘”üûÉZðqq–LeRf³vfºz60XœÚgß$âÔ”ßÆ»Š²«¾x⫽‡É™ÔÚZ[¹Ú;‚&_Š›mW£ß²l¡0ê ëI$~á £¡þI5‰Oã9˜³7ô\\m’IµŠÖ¶ƒc*µYÂË$Ë@ò,ôúxOé_ÆŽsK+á¶H§µƒj ãä Q<]þQÔøÒxKBX÷±Ü{`— ˆ˜m]®'®Ì–×B<½ßhGìD<à‘“£Å—Þ7Önð*â#)Ò›ÿæ²|…¼¼Z뮞Ù:­~}c3ûú‚<|²êI*Ì̤T ž$*8½=ÔQ½:Û—ã}o¡ãýow|·÷Hdnï•­d.¯žEcóý$’ÛÍå±yîDf>›‡k]FµÉ œ.•iãHB§Ñ•€LqþâfƒÌoŒ&¥²Õî{2Ý*Õª4*mÛà´Ó;$-~¸øx¦1ÊáŒK*GjǦA $R‹£S-QÌ\Mœ™#Àÿ4¯)‰Øm¥ÑHö¿5¾m—tá|àúW¿ã표Lôúáð1*¨^˜9ßHµåºyãöw¾p‚ ®s}dÖV¼|ñc/ç9~¦ºŒÀd·u²—œ™Uð`>Qâ1ºrâzUÚŸSc¨>LªhÕÕ,Æ…Ç* Äg7ä%:8ú!\©RCB%q‹Ú‰-¹¼*¼wh•øá×Ô¹øüºrY˜;tʱ[Òéñ©áv€>ùºœÏw?‹%¾3å>TaL A ‹Ñe’Ø‘H÷‡¥øX°—#þ<ÈbŒÊ­ !jhWøOôøŽDa|àêWÑÞþ7”¤µÜ£‰”\À±q¹”LëE `=a¹‡æ } 47ºã.—7ïºv*þI:ä]n8—l½aíÍî;Û÷4C`Ä…Í´ºu/ΤÅR~ñ©µOH…<7Ï-à6ñØ|€Sw#‘;šS‡+UŠÖЂŠíöÖi¥É‰âP]JÜ8,]¥¨Ioê­…ôxX$Re—rpìÖØ•Áûe>Ž#2ÊGn.4!¾ôD­0Aè´£j§]€.ÑtIìªv ®%ÌóügAN¶ïÆ]¨§E³è:%1å4äGoó$=Ìt\ý²¦þƒ­Ÿµö¼|ðsÖË·>/`rf߬¬çÍÜÿªÚŒ}n=þæ—‡7nNïS¬,ü\Ñ“ý,ÃjíÍ&{Y}ôâÎÓ{NµP9ZÇÇwU.<âæ'Þɸ“W›+Àu FÖVšt™>t¯f\.û†áäwp×¥mh(ºü}lîh'´`Ëý¤±²ÒRzY›²m°Tê;¸U¦ƒ«+ëb¡€ßí“[ ¼IB°].‘•-‰ Wæ@Xóc ¤zó]J… ci¨V:€Æ’J—Æu%”I†È´9âù¸ö5>eMø Ì2snؘ¶|jöÄ›T ¢èyܽ¤wæ7†ÉĦ?|øù;k,«Ë=ÏLÞÝs—LÞ5KîéÛ•sË3ªè¾“qtý–Ã1T_|üúîLq‰R&APDVOµfd™¹ù\×Ú¦hï+Ä&íX\§vùø… ûHâDäíO'¸¿þòiM Ý¿ú\ÊC%eW¤ÒiÙíÒÁév>tKe y¤oªbˆoÃq¿ÞÁ¥m++»­h‘Gê?ÔIî³oû· Ûߨº~Óµî)'-Ä“B-•ˆøÑãK%C„óqmX|¤àâ7ø„àÿ’ô;%T‹{#žýÇÁÇh…š™“T”Ó²¨#fÔC`É`÷ì©à5ù«LGe´W©ÚµZe»Ø…1¢kuY´+©úË@Œì™§p+‹Š‡åû•t”é”ÒÛc%Ç +'­Y!-Y¬™bo# (H®õ«üüµVšåíÃuaóÏuðϦûyÙ˜s®Dê kO$X:dG¯Še"œŽ+Ãã#¨Ò Ê9Lyއà#Åç*,@þ0øúëê¥ólÖ§` øÞÉ€$œúìØ‹ª÷ü5´ûµ¯»›2›“K±öõý-Ëwrk²ndOT‰¡úâãÝ~ª³™BÕëó)@+®2 ‚j^î4ƒÎà7EX[W\¬?ù•þQåâ¹ÊæýÁ%ˆêt­²ö–%åàà¿W©ºé*+¯8C|ǯøûs.iÍ>Ôžò[qG”‹6Ê÷^©'˜7uf Árâ³Þ+P°'7z|{«‰o$\>GíOýÎÖÿQ_æOMdyǤ "b©X5Ê*`"qdtdtáÇq­equ‰‹!G“pÒM a€$‚Ê1Ž —‰À`¦c‚¶.á°ãnhÒ;ŠÔÀþ!Û$ Æuªø•<ºß÷½oÞû~¾ÇÝ»öúï¿Ù¯Z³Ÿ 8úkÝÑ£Aogf ãW'N_=”êçûtì/Ó}Ôº£ƒìJûíÊu eUµ¬å…ÙÅO}÷`ß¿ÀݧfÈ¢9'’K—®›&¯xßÒÒr¡“Áðv /ó2i$I'4aY[BEE9É™—‚v‡ûøœ|Ì9×2?TV¦+WŠ7ÕpÂ-ƒ·û³ÿ™ëÅ<äc5Ô»øÇᑯ·#S+_+¨x;Îs͇ýèv–Aù£dK|¤‡†õ;ìóÕãç6Ýv¯Þ±åðfÍ ¾ÿŸGgöûïù÷é_R¯|ýµÿnÿ}§"ž¯ ”ʨŸ{¨ A34²Ôá±8ý»Ëׯнûù9†g˜R[x¬®ÐkévuŠâêÞ¢®ç."¤9áÍYæHnNÖD~ôH.—-â òâ\‰y¾´­=6Ž!U8_žôìï§ÝøÖis¨&¶7¡Åì D«©í²ª“ZR¢”Í—W¯ /›ÊFB¡Ä@7æíH}âZÝ ËýÇ|x»xäÄÇZUïÕäáëíôႤíÀGÝëÆˆºÁ£…uL[Õ„â+¤d¿nð91ØØ8ù·_öìHûWáyõºçùÔ™GzÈB§2¤½'ùÝlPÐîÙ«pPÓÖÖ†vS¥Û/úg\|oEl<¼n[<¡¨Ãë¯®Ž¸ÞŽŽŒéh¡ÈÂÉaƺ*tämŒ C¥È©´A[/žgÄÆ>Mvkàq'½’ÒE±äŽÛYó5m¥ëªD·»í‘~|áZÓ +.lçd9øú~+²)¤mÁGzwßh(]ÛMît^E?BfSëNÌ44¬|–¦>åÑ•´€4ÿogX˜Y-qŽæ°ìÕæüÇg²ëWnÜ?2óð§ËnÝo_‡ƒ^<™J+ KIK·[¥TÊd ¹ZYµ¶lKteñ/í•°Õ,6µÆ0sµ–î4cmûa$­É@â˜(Ö¹!Æ“?¸ä Ý©&ªj›+I[僄K<Ê]w .EUµØ«à A¸oSûöpz]/àžG—^õsïÿ ¾ŸÛ•,Mîð]/J(ªQÐêû~>>Ú›ÏK¢°îßHÛxæ§—Èáãg'Z”*§›ÍÎo¼šºï¯¿ÞLyxzsï;਻}%èãÓ¡ý"KÆâÐöV !$EQD¼6˜õÒÖêò{2%‚[£ÎëK+ x-<ÕU¡ º–¦õâ˜)¸ëõ*1æ ë·ÍìóÌY¨tÐC%f¾b 'Wb£¼FÖn Ážb›ªKˆ1‚ràÊÆöùù|¨Á\¯°><é?6¤Â×ÛN mW>x‘07š9Þ Çå‹H5¡=Mt`N(Ÿ°ìlLNN¹uêZ»þÄ5ŸÇõä ó)cãZA}$â·['zÞ^ºü mãË=øÅäl]CHúÅå¨ß6¬áæÅ¡mŽ™ñE_qdMá)J+Ç ‚1E :.^Œaæ×µzÇtýÐ*Ñë7G¯ŽûÀìø¦´óé³á‚ƽØø1ü=#¾½L±úSAÈŠØóÉùcè"털‡wi+{LP™ZÏsÝ„^ ßä<àÃîӾ޸.]ö§÷ŽN¿<Í×5Nuڶ僒K!Œb%‰šú‡‹V $´-fDðòóFÆ£y,žoÑr»;+7²`04¬‰#¢‡ièš<ƒk°Œ,hîñµÉ䯨³É—Üpy¹i©—zèrÃÌàLðs»fi‡X7aq¨²ÍA…‰kÄ*‹ª’Ñ ƒL´M‚ðAmB0]1†ÀcÒªùlLA†j#™U?œûEãö³fVxʵÜõh6òM©“´3* è’&l"Öµ·ÈÇï{H@Ì&yÂí/Χx`ÿ5öt;´™úæ||‚¸özÏgn>,ÙÏX BC›æòãL‹+õ¯¦4‚\ÖÝ\rç’„mKD´#ìî>9›ÃLdNñ¸”$^¦Ø… 4àÎñµ4jÐÎÙYZÄ߯¥|ï¿çÁ^‡.ó ßÞï¥ÌކÒhÇúšræl)ÃÜIì×Ïæ.Ž¡—¶™j3ŽZ!•A?¦PT:”tˆ\ET]fƒ·ªˆ/5Zumñ:IµTBF±P3Qf­-ÊVÔ1¬ž/»pÁ˜óй3Åå'… ÜØèGÈ®/N%G°©F¹BzOWÚ.«T«– ›Ktjûøóó±*ªriå«‘w“&OFÐ"^–«Q7JŸÙ`Þ*¤?î—dK|EÙs|aVÔ\(;$œ’4|1#ãNs$?Š'ø>¯ùÃíD§`®?¤¶ŸFk ùr¦vT+Šš£yùÓ‰€¸nK“ÍÖDEñîÝÁ>©' ëíœý/µ‰|dÖçПn}û1åá—ATr¿à[ r¸YZºF˜ÅMBÑÒH6°°0ÎŒ'Vcߨ „!HãbRè†J7AX…á ‘È*1ºè!F“^¥ª)Š¥•C]Œ™[L+6ËpW¥ŒZmÒ`ÜhD” ]Í/[Z{ ï²JI5£k!júì']±m%†Ã†±1•XMä!Øj[N¥sîá”;1Iôr9fõ¬Bû|||¢ìüÏóŒ,œV¯ù8¥ÎÄG/¿¸»—1q6*JJ•Ô£ËÀÊdh4}°¹°9Bé¸\Y^—–n Ù%÷6ï,$ÑL59²²¼òÍÚ“uÿw÷çåx€qúÂO~ö/46³´°^ÄHŽ4“I,Ÿ>ÈäQСŀ h”‰I‰(2ùÑr é>…ó|øE=Þ`·³~¸¶ªËh¦TYž‡uZ-ÍÞomìltUM‡è@xŽ77ÔFkãî‡ {µa+Q8ø~3ŽÐU×UWß¿þ×O®Ú:L/ýýõ‰,‡J£1éì·V;¶ïÇó ÛÓò°îtÔvsÿ°¦žhÈÔ~‘þê¹ê5§Ô™ø *Åêò˜ˆybF Ê—ï ÁâÂÿDâÊ•ÂÒ媉²¬‰óà«\ b‹}|ç£ùü:Äò¸XXý¶ëzpÊq•)Å™…/¡•ÿ<ÏSA)•²™Ý¤`˜wldf³ÉPÁpÉâó¥ôŠ 1§Â&¾ûn®x¼A1¬OõÙÔÕ=Ûq§˜A"o}çWW›ž{²°ÒÕ}E† Á…1eýÚ½»×nu: ˆÎÀ…úñ?&=ìúpØ0šNÝpàí|Vnžëx3£Öì÷«‡ ÆÏs&¶2Ž­æË¾ëƒÐ˜uúû·ÕfSb±†/„i[ynyÍÇ)u&>DÔBc–«ÌIÖdøÔœcM“âÌMnŠ ~X]çŠA"T ÐÉ­-dá`Ë2,Š0ˆ…Ž=I¯Óë7‹y3¶z¥Þˆ|€¥ûë‹oÿî§‘]‘2)¼‡ Hr÷ã·î”Ð&Zydo+¦Ê÷ÇËÕâvŠ…Œ¦)ö_ãÝ W>Þ ­jªF® /vG‰êÅðüHQÔÆ†í*Ãhè&¦ƒÙ,ôlÛ™jM­Ñnî´Öµš6ÓT;¸u÷éör;Šîtû]Õ‹fÎdíƒ_Þ}ïñ¿ß_oÞžÌÐm6ׇ÷®Ý[µ»Ûé4[mÚ´ú‘}Œ|»¦†¯Ÿ¼kôbøB¾]÷ùƾº|œ¿ðòê,|TSÕ2'¤I¤Ê`-†óÜ£e’Ò™ÂBûÇ\5%‰™^v±Ä~€ ï~’Àq0.Tsãyã¿ÿÇ{ ”Nb{™äîˆ9x3 _ÿæÀcŒ3[±‰"—ö{&CCwÅã ÂS’˜ç‰å” ™0°ä8ÑÆ7sœ´_ÞõîÐ…:RÜ™áEÔ„º[×VÕ¦ïxŽebÚ«ÝZ¿ïE2Œ"®çMºò4Dõ#yŠ˜b†‘¬ëí~£µ£z·ÿ´æ4ßy|+’•‰6YmëŠÚÜoµÖ»Šg(†=ƒ23óe»3ƒ«Ãä ž/;_ýÅðqTÓé?sZ½²|œÿqÏçŒu>pÁ2Ë9À±$Ï[Hiao$GÇ9“!,ºx¥BbYƒËS,I–²–D²<1Î x 7n0Wž¬Û|TH²’[ºQx8§öÐüÞÏ/–ÏÿüVªBKnY…ZcRŲ8¢žeYœŠã`´…ÑhËgƒs‰Äú;\,ð!Gôn¨Cÿä´û;kjxÔ-CÏ‹4 º§PžÔ&ì\]׈H§_3äAºG¹göÝÑ@6Gý µZjgíoï÷›¿øôšir†cØÎÄS|oBIRµ£ïPÖ¡ä¨mÍP;Z§æ{IY—ë/.|?F=S½²|¼Dõ¸pá´×ÿ|€T1W8Š–+KǰKG#ÌX3ÀIi^Hh PÑ´è b¡\Ý.pfÀ0ųÜV¶DY1Q,NC˜ÊÁRwÓÙEÑè7-ñ;¯ìf˜Þ^<*!¥4ÊJ”YÊRxàåÜø«í2¨.?,¬¬ È™ØHDÍÏõë÷‚À7èµyéìÞÚÄè¶µ®ª4[²N‡3ÅMD¶­8†£ |8‘(ŽçþÌ´}ßQ¦‰ïøúºìÛ‡û Õ÷5û/ÆdßOD·-¯ÛÒÕþaÍÙ×oø²ãƒeâdèÔ­GЦÂPrÔ¬Co8¼8>ž³^]>^⡜?‹~`t¾wY4—ñ<’¥±˜²xlWÉ‹%‰#±-:¦™¦’­<†‘Åbo‰4VJÆxEz»ŸPÿCõBniie»°â0ÞÊ<ø=¢[èbyÌ0ä|\Ýž‹ìM†‚q'ÀhÞ„PÆ”$HXR q‰ø$áÝdÒ½žy¼AMëto¯ªš6…5tfM›è3:ŸúPvlÏŸE²ÖÖtÍSÝnw&Z(û¡æé† SC#ÿ|ôô A]±gÆê­sMEmµmuñkÞê¬zòt í˜ÞÝð|_ñœÉÄój†®ÏBWÖápꆃðø.÷Öº5åGãã9åáëæãå®ýìúSGp)ÑV/K‚y°G“ —ÃÙQÀ–W ËU ñ…\v‹1Ôb)É'“ƒÊ¼âQL³É¯?Kø~B~T•2P[Lq©œ€˜a%EžÇ´E‰(M€Eæâ›‹ L/Nq$Îò)PID$)%löƒ«Ûô4{¼Áÿ°_v¿m[gß$À¹Šu½aw͇]Y–Ò\ ¡‹ƒ$ëÜm]Q À6ÈY‘&iQT¬°â—c›J­ˆT²®vŠV©7TÙ5¨’M¸*kB;29€£Èeh°”›Ú?dGÊ—“z‰ Zì…DòPGGÐóãó¼€ ÏÔAö§©˜£=µ4~Z:Öi‹“,à cÒ¢fòË+ÔTËRÇ ^­‰šÆh ˉ‚Å­>Ð!Ð?­Z’£›/ºÄš«.sµFÃqcg%‹ãO/GÏ”@Ÿãy Õ—rW±øVMÓiÆ£­œVç¹Ü¶ñ¡lÇ"Ôÿùø/¿½i>@P’ñt<žA}–³Õþ™»^;~wO§ Á$AŒv÷ÜñË(NR Q¶\E}LöRrÊßõÆñSr“MÐÇÈõ ð»‚U±ž„d2–¸<Œvž†£ÐÒÞþ´ÖƒCC«/¯4‡šñ•Ñ”]6#¤Ö{ÑãÝÙÝÏ}\êlPrÖ25Í“D‹fkÅÒüÀ[WÏ;:‘iEaMhóâ8­¨*²g²œÀ‰+ BŽõÄÃÉüÁx [TÛÝ„ÄJùÆdÎó,Ås 4%ì² ë cqÞøÍ+Ç.uºœvµ­r‚¢™#JÅÙ"HtGß:Íoœ¶Å/0æ³çžÅG¨]›ThýÕF_­?…î­ûô•¿3| 2DÀ¶Œ#pr$=t¢·ÏðÜÚóK Iq NSƒÐ+o¼_ÏR) Æ¢Q´/\Î’ž©Ø8)Wäxfñ7Í€:Çn¤âB"ŒB)?ì…ƒv4ˆÊHºº6ÖûÚàj£ ¡GÇg­úჂd<î˲Á,£vlú… ûwüö«ýÓÙäÊJšòýÝ¿úÉ‘~LÆST¥ž¨–Ãá2*™tK&G2åWš†0¦(NÈ12ÛUÛFÊ‹år"ZGe ÷¾~»^©È~ðï|õÞÚb°®Û¶,ƒXgc”!DæäÇ'‰`x1hWw^ßwêõÎi؇Ȳ†A{?%©¹+}tì?kÍj´(ý^=ÖZ6 Ç¥%®PœÊç§ÖÔÍ¢áéš©L].u h!XËÓAÈ*ªª5Õšš*jœÀn~öÐ5N’X‘såà®¶J€·=ˆcâ3¿•Ò¤ÍÒ¶9>Býþc§¶Ü¿~x=ñiW×÷šÐz•D"édš¬`F…Ÿï}·çß^[{7³‰‘$>óûýz@ˆB¢6‚àXÌ'.úXŠ$¸?‹¢·Wf-`~yâäÅ¡ŒŒQT&âÝx$Ò‡C°í †#ÃÓ¯ÞNT#÷î^8µEp<á>“AXË¢6Lttã¶LbA‘‰Þ]=§îÜë?'*+xªÕQ‹nHHhŠB7<µVÈK’Ã:pÑ ]º°pø³VëìܧWÇs‚kz4ÁQ ©47;¦zÓt5FÓ¬|¡‘_.,ßœ¿t‰ßl¾bÄ"»emoGm®ÿX÷^§ôÐ7Ÿ„e{øèì²ë±Ïþaçµ]µ%>üJ½FÑz6‹‘$E€ž#!)˜ GÉêç3·¯¿ú÷×ö­½ß[õ)Æ"‰¨ŒUªe&š#é‚ô$û:0OE‘$…†¢ØH,± É$30^AË{¿yç§;ÏÏÜ Öû²¶lŸI®B1{iz©OÎdâƒC”Œ §üjui¦*Ǫ Šj±˜o4е†á8í§¸¦{Ž«x ¾8ųó×~ðóƒ/^]8t¦(ÒmŒj¬!å¦DZgÚSѱLW¼÷(·jãZ–ëÔZ°‘ϳ¬$šOq%aêl×Å¡Ésó“<Ç7TV>£\AŸÏIŠÎ€x¢™d¸´X,ŽÏç ¡¸9>@`¶¥ÿhä¶h!›ðû燬„ÖÖƒÚÈL¶‰‡‡uã®Ç'üÏøH¥3Ô=2º]=O¥‰4„§ÈÎÂ#D3Yþàú7áôP`³2:Ô$p8Ý—åHG˜œŠ§¡d¦âÝþ/FðQ¨ŒÕ£‘ó·0ˆ‚ñl=–øõeøÛ´™ÇñÒHáy¹§{3¡B)IŽñ‡Bl+Ür/NÚm»I§;m×8µS;ö’yqœ¤ C›Å{šDÑ Ã9H¡sf|MuÂÏfxŽ}œtw›¥È=NK»²–kY¥»ý¤¦©ýøyÕ¿Ïóý~›¨¦ 5òÎ /¾ñUdd0Écp;Ù?·oúÑ¿`¥²Ó$ˆhšÄò‰È\#ab‰We Æo/ÿøVTƒ‘Ç5¹Å¸cLŒ÷ë®â2†Ò«ª¢:Ž«,+I’£±’ªHEI^æ£èôJZ­´x~L“ÉiÕ¸j­Õ*µdÎvlff˜¸wòúâL½Z×Ùr¹V­œýøÜâ“ÿœ’A–‘$Ó6$–3mM¯V>®i¶klŽuë¾hƒ&ãŸ…ÞøX½µžŒ¬ë¯‚ÛÁÇJïûŸ]Yýîx2Àÿó¹Ù±R+koš(:ÒÌÆs÷BTtrzdºÿ~À¢)‘„;>òúû)‚àd'KÑd¦´…ˆu’ïç`j·2†Š˜•ƾý6å¿‹žD›ðP;p!ŒÑ KxÍ’ñ fbÊ[–þíƒK‡~q`çK»îixûí7O}ÒÿÁ¯_xxjˈiš&ÁTƒ‘öÈžhØ;ÚKw7¨s35Xï¢ËMœ™9se¬¬1*ËKŠßu’Öj1€Õd^‡jt{‘Q{ÙÊÇj²­?^ëvKµæò/ŒÝž*°ŽŸ% ãð­Zu¢¥Ë2[þå_Çoݸ}âÕ_Þ­ß{ïXÏù+Ÿ]#:=‹šÃš c˦V¯”fîδ&€½cx{³þê¿ÕfR”¥‘ÅâêcêÙÖÆl cȆad-ë\Ù¨–ùX¥`”O}ûþ…§}×fk [ã#”Œ# h:ÒlF›4ݶÐöd²b£x|!NÁ”GgS1„$)"7<Ú Á‚b’¶Ò•Æs}ÓßÉúïâä®û¤mGÚ™oCVÒS©l,ëEÓ^\Œ4÷üî‹ßÿæáÀà£ÈÎï>½ùÕüáܦp„D`¤FýûnîÅ!børû¡´X©ôc–d®6QnÉÊÒ¡©J*ï‹ cÛ>À}IŒ$q0eSrM­:6t»¼Ø¹<ã6oœ±y½V)6°k²Îñ@˜\`à ^7y‡«\­Ôî~þòƒfëw*'þ}íôõ£ wÊ,cº.cI’ BùʹÓgu³•¢º]|Ô„- VL®¼„D÷À>+Ùlžecµö×–~V>×Þ .Û±ÕÁÍò±Ü°ëðñƒ k†n¹¾ÇÖø `G5°ý0ŽÐ0E60¡bÂ껟'Â}ƒV':Éd. òN çèl.„ˆÔGvìyéÀ©Ÿÿ¬«É F8 çâq‚„9# 4AdS¢2ÀAYÈ»çÿöfäÒ'»÷—S‡¿þÃ<é+ x€iLÄòÍÞ߈æQ«»AWRÁ!oj&z4½-hš£*@N†Æªåja¨.;ªï:ŠÈSìuŒ¢ÊðÀ7•+'fï¾z»‡Õý –¦ÊBA—À!¬Ú¦҉亪 Vz3ÀŽ\^|e¼çåcU®ŸÿðOö,|óú±Yw Â6 ±¬^¹ÂYAoqò6ñQ\,líiÉ/>x×}ÖÀgóñ?¬ ôc©‹—µbûôãÉt«ko>ˆ“MÆ)*FÑHÚÃcÉáËD#H\øGÛ뛫ëY"Fou9§h˯p†ÉB¡Ft®¯ÿñ‹ÿ]LïÄR„Í[¡\ {hšÎ¹Üh(¢€%C C¢ÐÜÀ@D”Ýóóóú.\Œ@h¾E- !ó‘Hó, £(-åv¢fû šž1ù. ®\®V§Ž—ø©žw‡$@j€„à7ë²&Ë… “¬—nlèJðÞ+þVו×u DÆd$^0gIˆŠªŸaJ¶cꥱ×^«×Ïí9œšºZiq-Adƒ±[õJYã5^(p\©´mþŠs—û}›ëÿàÚü±žp¬òñÜptç\}zK|ˆðèÂ(‘%ò1 Q¢ÕÈ7óN¶Ó‹‡EÀ¹N“hIH ÉeÒéáXb:Å:8|óÓ}ƒoí÷ßÅ¿&çöZbTôHöˆ8ŽxFÒÔ=+M[Qàš0gÂý—.=îØõx΢(bá^–FÄ()ZétCÃÀœYyÀX™îYSÒ`*’^žÑŠÅ¢¤É°G¼k×Láê—·*FÑulN`lÐñ¾#wLÃæ%­ºXÕÜ¢+¾v®þîqƒìÄØ]×YÞæ^R%4ºÍ°­Ë˦#ëg9Y³¥^§pe|<85{+8&»ª[\J¬n³šmrWÐl]Ö #›ÛÃØ´büèYÖ­ŸÁåÆß|‡õüÕv­½i>b¾¿¡D[¤cÙŒˆZ4•í$‰ ŽÃÈž¦wˆN*•": NÆ“ñ$‘ÍÑvxó"»üã´ÿ.zÒ“}͆%¦I L–A†ã@DZ´ŠÊxP…)„ e³Ym†}…ðpˆÌçã4푤Í“8ަ°t:Ÿð<²»Á¢#1ŒÜªÖXGel­ÌÉŒ :ÊpT—*Õx·×U€g2 Æq%Gu ÿÌ‘kå –¯Ü8öù¯nûTÍêTMYÛÖJ¬É2½€›eXYR ‡o8×Ô¢¡(®P+kBYg¥–ÝÒUK1¼ ÂKË–|bXÓÔ«Ò=¯÷ó<¬ëÜgßýaoë·7Ÿ_á6JÖÍq`®,P"âäC³"²m¸ Í É•û'‰\ì¶áKRA"h'‚,(­ˆBC 9˲ö£ V7M_‹’¸6:5Y¯TŽ;žŸ €€pd:ÀˆX $®%è+(,ÁðÄȰkŽîû^IºÝ:àÔž÷Ç1ÊŽ"'1jQˆBá†~ù¡ã¤ÈZž_5c†Üð0® W£Dóà`Ø3ŠQVR›8Q™æ:å+dÔöUþÝõÿÁÇÿ`ïŽùXâ™RP‚ZXR`H³¤–m–åh AiP“ÈE”ˆ•f©)) K(BAà¶õÈÕËóŸ¼w²õ[Ø/~´íîö½Å,£ ê ”Žá ¬Ð+«Èp*Ks¶]¶d1ËXB•§9^°lQàX…ài0b x)X† stû€#.ðýD«DZÝæ¼¤V…VÓDCïÈ¥ZjšAŠ„ÒNïžïà©0Œ3žxùVŒíÝÝ÷é+OZŸ]¹~ööØ“[#éÊÇ“~ŠÕà NR3µœŸ`ÅÈuëFŒ%/õ´ ‚Ȩ¦ÀÉ÷ÂÔCˆ{¾›Ä‘³^ý#¯õh_|¬±wÇ|Fàè,#”dçÑ:X9‹–i–‘H&Q¼meï„¡EJb0Õ•BsA&cP(Šy;+w-lÝñàaë·õùìÂ^[–9‹gA+ˆ2¡‘Sež‡þ›0ŒcÏŸÿæŽó«eÁ.{nô.-ÙÝKK2#Á`h޳,¹¨0¢ÌÊB9ÿÔ? Æè©^ÝzÝ„u‰çÄŽƒYozzP5 Œ÷Pwà%ºE­A¬ëi¨Çn½R¯šµÑ‰ËwÝÖ'ûgv}qezÄc\ÓZV“Æ>žŽÜ`K^Ë0&ï½ÿö+cµÄ­Uf¦kÓÓÕáé‘X÷`0àÄ0â*$FÛ­­ÿ¸­“§ôN—Ûàc½;æ£ÈÛ7ò¶ ò²4ÈP‚œ±4K1ŒªÐHC,}r¨€€E‹|F xf°É3´2Hq< x䬸°°eU¬ärõ¥w><ÿËÙ²ó–,e–lÉ›ÑXE"„åy›³–ævÎyãèƒ E¹hó| —å{mUdU–­¥|žËxÜ)çÛ¬Õéz5‰Ü#ÜKbC! 4ô5D!Œ^=MÓ‡‚Š`{ëYE6øXcïŽùíF–ÉrƒçTÑ:ñÁ ¶(J Ê@‰”EÑŠ$Ò´Â6/–$•S•¡Z‚B•† R‰ë:ñüÍG4Øîíwç¶®^xôãWúÅ«óßêÉŽ ´Ðà"܈" F+±ÑÅòRž“8A(w[²ÊÃñ¬ÜB…#±ªj±4…’ñùLàíš®kšqìŽÔ<3~¦š¦è#𣇑ï߃^[T ˜D¸ x€`ñÂxôÖ½Óýã3:3vzvìtÿ¦ï üzWßÙ[õÊÄ$Œ¹i ч­‚æB§R©Äx›Ô†Ø­$l(vM¿•ÞŸ+³ŠÕk—A%+÷/Q$o‹‚ÀgZÛZ–f‰(Û6o+”`ÉD€¡Â¡žpí^Ýof4AÛ0¢$J!Ò4ôr©Ÿ€H6…<5ŽÐk9 šI+{xŽyfjìÊþã×잺<éÿðÎõÝ?ÝÔw}ןûgO¿¼çìé±™ r’ç'^NóZU× &ƒ`Vªi³SSsäð–ÆU7¨¦zbÄ!ú†U|ýÙùãÒð¥>Ózÿrmð±ÆÞóqð½£ïn;·Ý²T"Ñ.+ŒÊѲJˆDs´ÀP*'p4dLJVC¤V ìÕ­Ï=þäÐÇG_{çõ—þö»Ç/}ã×>ÿøàÞX~ð‡ÍsŸ›;µóÑ©Ís ¼lAꪪÁâeY¥ï4FÌŠ\I•”¬Xn¨,]P ME¥E»¨\YEô’E¸Nû€×^9põö¾Ÿ·“Uj‰§EN¬!ö8‘y9h7Žb'Ô0â7m©B¿¼¯ÿÓ‡Çß¼Ô÷›¯ü¾ÿ·_\zó/¯ýi`Óâ_÷Ïöï›ýÕÞþ=ûg'ÓÐ|_Ã_bq¬µ\(ôBǬ&°¡$ôÍJ-Ð4æüÄIQzœ$®%ˆ^±¯ûqû€@æ¿T/¼Hÿ²I80Å4Ò­þÎ~Ý?5qçï¦3ËO‘ÙÃCâµZœ¶^ëT1<%á! ᩎÊ“ç¥t:w×é]Ozwªˆ:s¶‚RÛ†Öv(Új+𹞂Ìù‡Üæa“MBà›l¢ßÏÛ‘%›¯ûø}ùÝE}´@*v}qÑ+ƽB¸c[ú–³ÛoT/™[ûû›ÌuæþÆæ–-öÿØKm9mæúº׎=ZÛ´ksæx_V¾¢d<Ó¤éêliúÊEmÞ¼¶·lªÛ¦UÛ¦ ò„[ªêëî÷ïÉ9P»Á¼Ôdîoin;p÷Á‰Úœ– ÌUƒ¦¾þþÀž†¥ÌSó»¹ÑœÓÆ|„fFsk«ãžlª=ñè«7ºòÖ¿þöç»f»:;çÚ‡f;''˜‡†‰¡™O˜[#æþgv‚¹»r¬­Ž¡Þûöú§®=:výÛÜÜcƒ¯ÝÎý݉#¯~òäðÕãÿ>xûíÿ½vûȆ£ÿ|ëã;“C7;?´ïí]Cí̃ˆã s“í“ó š›7ïÝù¤«cø»ŽŽááïfÛç†'g:ï0»K{—ÓÇ¿~¿3„¥ÛÑ9iÇ<<×aŸðfçP‡ ƒ™}˜9 †;³¸†‘˜õA®ÿï¶Ž‚ð=÷Å¢(îqq+ýõÁ¶Å¤hî°@œbÓGtçøðŸ|@l}Ä;Zq ůò*(V ìÃñÝŠ‹?ü"|–#ø€b$Îm$žtî&ÌW¯“öW>ï¹ß&í@k¯Ñh> nkûˆwâÙWñþ'½Þ#=o“!m6àŠ•Ö~þð^ëWñ!߈9}¤ç+7ÿ3á |@ÜVÝ?Ø{¤x +ž$Ý$X[븿Pô[ýþŠ»âI_ +žôº¿"=‡`×(×ó1ßöo]gHîyÂ5.ø©qåž|@lh>ï¯<Ïñ^`‚ÊLJké»°Ÿó!ûpñÌ > ¶Õ}ž›¤xÏ+¿“ž÷<÷Wœ?l.Î\‹Ø³C^[ çêwðyÐGˆ…âÁ·î¯"éÃu}ÏÜàb §øÐ¶ ¿Ü_‘‘òAzx€È«pïáÈ߇ÿþá÷\²¾sƒˆíðaÀnöL²ÿỾg_…mnð±Å®ÔŸãúçÛsã#<<ÀäÕ³ï#üsƒˆ |øÏ > 6ðá?7ø€ØÀ‡ÿÜàbþsƒˆ-&}qÑ |@œbÑ)ˆfàò“>¢ø€ØÀ‡àb[ÙæÈÕŠ> ïÀ¶„À¶„À¶„À¶„À¶„À¶„À¶ñé#nÍPÇqGóñÁÁ®ñêC°F¤mœ×h>>8øÀ5~}  XsâåÂøÀ6ð2øÀ5ð2øÀ5ð2øÀ5ð2øÀ5ð2øÀ5ð2øÀ5þ}8¦u!Üïžî…ïç´Òåø|`[|¸¿p[ÁÁùør|>°-z>Ç/û‚Ý*¼|8Y.#®­„p‚ájâッ\‹¢ÂëààåƒôñÎ0^>8øÀµè=ø¬yÏ€À>8¯HðñP”ö2HöHç|@üë>îŽÁ > Š]î›*¯A°@|3>ÒׇýnÊ=Ðõ-ûÄgüûX{âÂPÄ(3\(3\(3\(3\(3\(3\ãÕ·FÄqÜѼ|pði|ú k†:Ž;:òlãÕdzøÀ6ðøÀ6ðøÀ6ðøÀ6ðøÀ6ðøÀ6ðøÀ6ðøÀ6ðøÀ6ðøÀ6ðøÀ6ðøÀ6ðÐú}PÒÄ,“Õ`Ëäùg„"ø@h}>䛬%½#G„%‹ši*Rÿ”P…ìC–b],Ý\Ú—¹´¡&gàÆÃ¾eEe’ög&ðPh>äzµ¥²\Ÿ'<÷Îé—6o]°”-/jM…2î ‘rº¼§¼<±`:)YDû^ƒJ$K¤R#ŠNà¡P|ÈæK²™åž¸÷—¦»Í ;7[õzV£/±+–S *kÅÔ¢ºXgS˜¦LšŠ)«Ræ1BÓr±ÒZ÷4³j¬;_ꇊ|à¡ }0[‡ÑA+u;v¾©8«²X8¢«(%K”=•Zu_ÕBÙò¼fy1O¡³t÷Ú´V¥²0¥<íÂro·åBvŠÈ(“´,A_”U¤þõ—Õ·žfÚ*S€ß„‚ôAUöéÌQVn*4ZõØþ‘Êie–mäVú¶ÑúÚkGŽä>9üöo®|áõ¯“ß“_½ñèÚåZó¥OÇÊlêÒ‘}Bᘰta,CgRY–MŠîŒWššú8—i1$ï„‚ñ!SióShšRªÇ2ÔeÚâ±}6]‘U'|8ÚüÂggæ«61óÍ_?øé£CyýêñÜ–ÏŽ—juçÏwÛÔ/Õ5/í¹´w1kZ Dø | „ìC¤ZTX¥©†yE‘ʪÑÙ„™cÅS½gO4ž:tgu+4|æúå{{óMc#ݦÒíÍmK»¿Të 6ñ»H0| „èC¤Së¢%MÂÜ^e”œ¦¥Š}ÕjZÏt­ÃÙÍ÷\ÔVdiÇK’TZ[Í'?Õ¨ò­b¾ ¦„|Pu²1q¹´"™öœ³Æín®9~¨=DŽæ>ÿbkUajv·Z£Yˆ«ÞùÃ;çU’‚)Åß*Á7ð‚º§$_zÁ¶¨¤9',é 5ï}¸ŽÞÏݧ+”KM:‹®oäñ­‡Âå¹hZ/¦}?æÀBkúHUõYzæ{‹(îI¹ÄPrò·³ëÖÁÔq¥aë¸EFДÁÒ'¬ê-±iR™Y•Ö,kÇÀB«û %Åãê¼â=åõ“¥e© dž¡ÃÞÜàèË汆JÖ+ò,µ&…™Nž¨JQ°‹D.ðP`òËŽ/v~¹?cJì󃕋%Í3áÒaoæÕôÑ­ŠTû¥eý¼V«™f¸ÔF}¶ÄD"ø@(¼ÌsæwßmÛÞ—Fùþ\)É–+áÔaï›#é·ž.KåÌåå}!M_ 5´Qœ¤ÏNƒg‘ˆ> äãd]MÝ.­cÁ:r/Q¹Èr{"Ü<˜þ~yt{ú¾rû„”Lš¼q£!ÛP(MHHI2dgg'Š)¸× sà¡@>n¤?Mâ.H£ë(·\ë fÙϽùèð4O_Ÿ¨Þ½ç¥E©}ZJ$)Q¡JeÍ·V\PMiÒTEV}O"( [à¡@>˜…ÈYŠrç÷’ßÿw6¨]áûS :eimôŸÌ/oÈyq³Ê‘f¦¤)™!˪±”•ë´eÅU_Ú;^uÿ¥ô\> äƒ!ÁýY¦2¯UÛ®Þ ‡@ð}¶óRˆwdÃdÿîšÚÖ]:M¹Q,Mì±Î/TéÔÂ_ÓGë›^ám=ß„úàÞÇІ¬‘SŸµ‰C ˜Ñ¹. €úGÚ_N迤ãê¤)ñFÉ´^©ZV(–ûÎæiý<ï„ïî’…w?ê Ú†½Z÷5R!ÿ¡ÉÁþ>Î4É|>…|“Hšœœ"•ô¨#½p0 | ´¦*ã âÓƒ_wþÏ~ý?5q&p¿.3ÇOÛB4°HÄDË—$ì©gÕvzbó}’…ÝOë©ø¥žZí)ØëuÔ•Ö°h¾ =;=¯cÅ sâ NjÜlõ`KKKœ8ü!§2WoÀ'K’YŸ÷ïûüò|^³»uÏñô?×wlí¥lÑk/ôì‡$¯äE90aA½ÌÇøÕ1:äŸ3Î)þ8µg{Û]¿lÜZTü,CAÍíý¶_°Ù=ó6Ö¤þ|ëèãÕ+r­²,ïæU úh.š-½óÐ 3oc·ÀC²J…ŸTúhV…èÏBÿ;þ×w3oc‡ðsF‡>o pMÿ÷?›WÐ@³ùx÷‹‘yê@ 3oãʼŽê?´neK7_—_R’×$Êš¤ôÐl>æãI›yó>®ÿÚg—Wn¿U‘#Êš¤ôP&}œœùEôz:ND‘Ã÷ï‹3'É}”Iù3nãj:NœNœ9I.è Lúè#ž_†ìh:NœN¤=I-è Lú@ö=¿ŒÚÖ´œø,‘ö$µ €2êãÓ¦_.ã§´8Xƒ’XÐ@õʬgõ=^›VÐGz‚>Ê‚´'ò®¤ôôñÊ}}¼²AA¯lÐ@ÐÇ+ôм}ô·:uêhk=¼˜È»’JÐ@óóÑ{ñÁòÜáÃÀ²í_}yb$³,~Iä]I%è ùø»]ÆX£xXm¢p’fª¶É´ŒéDÞ•T‚>š‡£—’«)Zã¥y’ŽÓÎ0{©=ã6ž&ò®¤ôpÖË帊¤hŽc¸N¾NÅ)ˆß\˼è#MA ö1ÚÓÔTXP¢j,(TÇT²Âbù¼"ôO)}ä~[Çé>è#ûA õѺYS²€dYÖ¥”'ÊÕ 5ÖhË/ ï´¦°óÖÓÿX·aGYO—îÂÐaè#ÛA ôñð+Öj“slWùù„ÍT×T莄)…‚üxä#Ÿ~~kp¸Aã³:üaó÷·Þì€>²ô0'–{5aºSm¥Ù¯%ÅyrSB!3*¨- Ú")›Íß©´Ëò• 9f<{¹úÈfÐ@‚|œ Úíu¦,)p>Aø(ÜHQ\% ´NüwL±@eŠ’gWÔ©‹JòŠeñíG¡,}$Äǵ3¤ÚU‹†IÜj¢HÏ]s÷ž¥d"¸c? #ev…R‰ÙèD©>N…ý$©T*J¸]#ÐGö‚>âc«ÉŽá\8¢–%&,wÕÜI¹–‹€>þ:eâlu*5éªf'âxÒËbòÆÂòƒQè#kA ðÑ>¬’çËšz¬¨ˆ q÷’ ¦N(Õ6åù>@ßvb&›ª·Eã~Ô@ZýÕ¶F»<_á^9}d+è >.V‘jJaç;„ŸZˆÛŒ>Ίû“¤¢ñ6 äWÎqv®sÜab8¬ˆðÊâVŽD×yWR úH€/§œñ?c±S R]§TÉÍŸÃXÕ êãXÐÂ7ª”Ö .+Ì[´¨XYN4•$Ì&“ Ýüò‘w%• €ø8¹˜ÇÉPxåqüà¸Bn‹Wé†i:Ùp”Ò‰¡1:Y5i³ç©0“Ñ&/¢|X®;}d'è >¯ÔñlÚ¨Æ0ãv­‹¶laIÒÛüs+°ä‹A—­ÑXG&Ie|guÐL(©I†¼ÌpýKßB"ïJ*A ðÑúöy&Š“Ú˜EIævYlƒ¿—¤uŸ™áüÞçsú¼·˜'* šp'´îè#+A ð´mÒ'I¢úæº ㉹ Q^wgÏ;)èxÒÃmSÉDH‰E=^j¡š$›ßèaK#4ÁøÐMÐGV‚>âãÞ¥f´F[¹¸¬ÔàDkÉØÞz˜y+`¼FEóyÂ50ƒžN‡ÛŽuy´ÿyÙY"ïJ*A ðÑwuWÏDn—v\×µrÓyîï K§ªãÉKè¦Ó™0LJ°2Š‘þ[Óvk+þõ’/5‘w%• €R÷1öæ’³µ==SUz}Ï;ÎÝíyýòýÔy ÷[OÜ¥áH5Ïð†¨ 4D–ß …ˆîíÐG‚>JÝÇ;;JÏ–OvUÖTçÔNvé+Ž Ð G®ÄX_Xc5ZÑÝËИ^ëÇ-¼¶ÜÖ •ÿžû Kä]I%è ”}t\¨ÔçV–åêQóø‹wÝÄcä=ƒÆæ‚ôUnï¶oÝQŠyB9¸qm?ô‘ñ €Röqì÷º%—öê‡ híððTý˜ Hû/ï"øDù3ot¢Ôã$š]>’¤Ô¾jÃÍ9ˆ¼+©}”²¡õ—><ðõöžX"\¾ ä×ãiÇÏyÚ“)Pêr’–`³™åÃf_Ô§¡5^ÞÒ¼túÈtÐ@)û8}}Þ-‹'ªjPôìo{ò@>bTá(e'’I‡ÍÐÐÄ„[¨(›`œqgäÁ/‘w%• €RöÑÚqâúåU+öäté*W å x5å°¸'Ë>üΣ©Ž ““gœÆÈÖ%•1ÜÆu\}d8è ”}<%rôƦ;rÞ_ÿ‘pÈ¡%¸Š¬ñxß}?×ïíökþè Ñ hUŒ ­ÌÖÙ_M"ïJ*A ññ¤‘¶oŽº×7ÈZš3NÖбœ³Í‰Ò‹·®ÔÏ£ '[ðs¶©Ù_ "ïJ*A ô‘†îMÚÔ–ZÝ™ÊBã|ËR4Øìf“š€$LØÂ:LóúÈlÐ@âù@êÃb#ºÜœ†È€f\›ôùh‹%2Ç0Né\1}d4è }´UâѨ@=Á;ºàä8ZÍÒ~{W¢!ÂÇöÏúõ&ò®¤ôˆ>Ž} «5êtÅØØÁA³þ®™Å LÜá£);[=ës"ïJ*A‰ééýéŠÙë6óŽ€6DLN6#®ïYÚh ›H×®{ÐGfƒ>Õ‚Œ®ÞVŠ¢– Ô8‰æaY á>¿¹mö‡DÞ•T‚>Ù‚~{÷ÞÒ;Þ]]=Ø=xfã£úõ·ÿÒÑ:×#"ïJ*A‰îãÉWÖ7CÇoü—ýzËm¤Ã0 .½¤‘`3¬ pÅY ÄvûPßüÑ ãÃ÷<£¸e§ª«Gª7ÝþüËËç?ýíï¿þˆi¼ºñ¾zú¸ƒ>>ìÆûêYèc@µô1 ZúÐG-} 裖>ôQKú¨¥}ÔÒÇ€>jéc@µô1 ZúÐG-} 裖>ôQKú¨¥}ÔÒÇ€>jéc@µô1 ZúÐG-} 裖>ôQKú¨¥}ÔÒÇ€>jéc@µô1 ZúÐG-} 裖>ôQKú¨¥}ÔÒÇ€>jéc`ÕOOú¨¥}ÔÒÇ€>jéc@µô1 ZúÐG-} 裖>ôQKú¨¥}ÔÒÇ€>jéc@µô1 ZúÐG-} 裖>ôQKú¨¥}ÔÒÇÀ•>(¢LÝô‘飛>2}tÓG¦núÈôÑM™>ºé#ÓG7}dúè¦LÝô‘飛>2}tÓG¦núÈôÑM™>ºé#ÓG7}dúè¦LÝô‘飛>2}tÓG¦núÈôÑM™>ºé#ÓG7}dúè¦LÝô‘飛>2}tÓG¦núÈôÑM™>ºé#ÓG7}dúè¦LÝô‘飛>2}tÓG¦núÈôÑM™>ºé#ÓG7}dúè¦LÝô‘飛>2}tÓG¦núÈôÑM™>ºé#ÓG7}dúè¦LÝô‘飛>2}tÓG¦núÈôÑM™>ºé#ÓG7}dúè¦LÝô‘飛>2}tÓG¦núÈôÑM™>ºé#ÓG7}dúè¦LÝô‘飛>2}tÓG¦núÈôÑM™>ºé#ÓG7}dúè¦LÝô‘飛>2}tÓG¦núÈôÑM™>ºé#ÓG7}dúè¦LÝô‘飛>2}tÓG¦núÈôÑM™>ºé#ÓG7}dúè¦LÝô‘飛>2}tÓG¦núÈôÑM™>ºé#ÓG7}dúè¦LÝô‘飛>2}tÓG¦núÈôÑM™>ºé#ÓG7}dúè¦LÝô‘飛>2}tÓG¦núÈôÑM™>ºé#ÓG7}dúè¦LÝô‘飛>²ûïc÷ƒw»ùìãÈÝî#óŽã¤ý7¾}dOÖÇåÔéôÍæÞ}hÙÃÄ8ã#Á}OúÈ¢ÝëözÛb»ýám÷Ÿ|¸üþfÿÑËfôå»÷nV|9=ûj­××ýÛ×a»ãy×¼uoô‘=FûŸÃæ>~°Ýÿ'Ÿ_öqõpXå²/¬u2üåbÜÉ¥x¾zPÑÇËɾ¼ºÕ/E›ïa­ÍšW.ôìšõñ˜®·½{ø#ýþ0sò|µìãêÜí —Í¼/®u>\OèÑúXþ1?áeÿ”s1úÚà<–ó×Öº2\ÏæûØ.“8¼9½ïäç«k÷/¬umøÅbúxlÖÇûáxxÝwן¯Þ>?>”mFßÜ5¶Ïe“µÎ›úx ÷ßÇÒÿ°ã–§¼ÓÝýõô‘=hÛ¯ ßò´ßq­û ìAûàÑG¦núÈôÑM™>ºé#ÓG7}dúè¦LÝ~&;é8£X;ôqë[Ü£}·î‘>`M°¦XÓ¬íûø8÷éÐÇ'àÔ¶[ßÉàÞèÖôkú€5}Àš>`M°¦XÓ¬]ö±ûÏûow‡q»Ë©ðô®ôqxÙÒÖ}ì^ÿý÷²{½©Üò*á6B»“Ã-/ndýýãýgs€6‹ûÇOú}@¢X÷! ]öìéÖôkú€5}Àš>`M°¦XÓ¬múÎúø\Ø÷\£Xû·…€µß#! endstream endobj 370 0 obj << /Type /Page /Parent 679 0 R /Resources 373 0 R /Contents 374 0 R /Annots [ 371 0 R 372 0 R ] /MediaBox [ 0 0 595 842 ] /CropBox [ 0 0 595 842 ] /Rotate 0 >> endobj 371 0 obj << /Dest [ 422 0 R /FitB ] /Type /Annot /Subtype /Link /Rect [ 362 711 377 725 ] /C [ 0 0 0 ] /Border [ 0 0 1 ] /H /I >> endobj 372 0 obj << /Dest [ 422 0 R /FitB ] /Type /Annot /Subtype /Link /Rect [ 505 118 520 132 ] /C [ 0 0 0 ] /Border [ 0 0 1 ] /H /I >> endobj 373 0 obj << /ProcSet [ /PDF /Text /ImageC /ImageI ] /Font << /TT2 838 0 R /TT4 840 0 R /TT6 536 0 R >> /XObject << /Im122 375 0 R /Im123 376 0 R >> /ExtGState << /GS1 843 0 R >> /ColorSpace << /Cs31 583 0 R /Cs62 645 0 R >> >> endobj 374 0 obj << /Length 1574 /Filter /FlateDecode >> stream H‰¤WmoÛ6þ®_qÉafEê}(¬M7d@Ðõ°Ë>(¶ì¨“%U’t#ùÁ»ÊV’Ý00)êx|îî¹ãéÕ:x±^Ç`a½ S¤â'Yh qb\F°>!¿öÁ‹ŸÞ[ØAhÂ0†õ&XÑ UÜ¿« ™H]j\‹Ôkãÿ[^ºufRµéú "“šP¯l”å¨_­´µ&Sç°ÂÕ4Ƴú•·É®J;cÕWe{Ô6Te£ÿXÿLØ`·É ^f‚>KÒ3|Ä:‚RõÆX½þ@*R¯ÂÄÎZÔ°¾ ‘M À ø3B“DQîŒWƶG…UÖ-¼Õ‰‰U¯­ÉÕ¤c´¤ÆyªºvœA{‡['ˆÝ ×åÆº3\DCpq–û.µÑ-*´ ¦Ûz„¾Ä3 \Zå8TüÐÀµÒ$¸ãÿJöš#»“äZókÔ#Ûà ºÐˆ^Ô ²¿D@¡ë§­ /Îç³Ò¯ O 1v«ã*K“¬y`£&~TKéIÝ4ËE+ƒØÑ-AÉ‹r!»•þÔÍ19†í6²gùÕG(O(Ϋe,ñƒãÐí€hˆŽ;ð¤*{ïé½Q°ßØVó*±8Sí¶j'(Û­œº)[ôšŸw펰ñ÷šl=d3nÝbHÇJ¯2rëKíèãµ[?¢¼ ¢óþåÅL Úµ+Íô=é±êU‰qœnË ÚŽm_#™RœÈzîýE¾ÎTs¬xäÞ(S4gê<‹ðE?`æ3k2%fv-’<³sÍž3èbvêZÆzb&O®Æ±F‚Ìà™¯¹Û=Ïßé•öp´¢z©›ã4uíy×î,CâDE‡ôìKÖî…:’Â=tª_b¢1Íèß(~K—)ú¹å@5]¹­Û½.°@ ãÔ ”Íy­@¢u70 °º‘nÈeœ‡xœê¤Ì‰Z?¿Cú·U¥<ö}åg²iÄ곫÷’ôZŸƒ˜r1B¹\í:,õ3®~Á}touñS±Ç¼8tÛz÷IGöIq§ˆäÌǯFŸLäûLz; àìt±õ§‹ >t7PîýE'!j¡|*öè¾»¶ˆÐHXçHû£šJB>ùK”µ\¶ÿ¦Q±©3qü¥FÅýÏFÅÎÌ:5*?l·+®ÒˆIÑ– 7.–—D=~ùµÆÅF±‰RjžË‰?ÑÒÌw.õ¶ÄåäÔº´LÍ=FW^Ã,óe…žÐåÆòIv­¡$Ô5ce¦3õ×ç†DîÒ‘+HäµN|sVTXqÉ«È<¡óF7H/çfbÜxõ5kÿv.îMw÷ÙŠæ'›s±™’ Ýü ·ÝPÿiоœ}S·çµxÕ7ÔDˆ]Ø4°cr2AõU{zôÆt¡!H]êÔ@xÉæ-vžäE‡7‹,¼XmçVL…—ߎ ‹à¾Ò ÜóÕþ’™~Qí˜.Ò pAËÒNшÙûÜ1àË©t+Ïœ8XÏÚ>×fPGW¨ÿÜl¼Y[dÆåÌ×ûB.´<8ü° oƒÍ!xqy°ÎÁEü¼Z/2éñ'‘sXtIAnÒE²ºxN¯0çüXïÌ$ýK¶S÷陼*ò; î¼£Z;C´@?ü®²PC`óœàÆ6‡WdÃ*ŽŒƒ¡ v„í "º)Fiøä3?ÏßgñŒÓ|äêM(oüp¹ÂP$ȉRäZ{ ø¤Š,X¬Nð¶—‰¬v²> stream H‰ì–‰–ƒ EC5ÿÿËSƒdAJõŒÎ¸¼Û£R©\K@ƒ”J¡Õ–[M7#é S¬‹ˆ›‘‡–ò€åÙ¿Oó$ÈdJ”#G¦ûy f@>î4‘ PhÊ××å)THyà:ê¸N¢ ¹8•{ø)Žz.×´úâÔ³aÞʳ.«?·Í§¢!iäåY.ŠG 4Ð @ƒ ‚Ó0lÀeØÒíœTÆÕÐè4¬ïvN¦Á «çÐ0¶Ë—d€† h A€hÚøÅpÕ‡µ§Ï"õ\˜5‡läªCs¸ùsìOS7o­úþECî¾±U/†Vµùcü X‘¯} 9ÊJĬŭXâPY>ÓÉrs3Ý®Ó!XèhXÜ9Çaì¦ÃÅw±,ûkðËöËÞÐÒ@} %yµ7,’Ùrw©MŸk Á{âS~~S°þx(Q_…‚ oÏú ¡Î²·‚œÔ²v÷€Ê_hhï òUñ{õ5„ãHúÿšo Zõ¦p{Ãd+,VSÐö ¯ŽÁ¿Hh A€hj 4¬ÆkØÐíœD 4nÀÙÜÒíœD Õðpþõ!àrü0¶] endstream endobj 376 0 obj << /Type /XObject /Subtype /Image /Width 288 /Height 362 /BitsPerComponent 8 /ColorSpace 645 0 R /Length 3493 /Filter /FlateDecode >> stream H‰ì—‚´*†iŽ|÷ÉgKE0#û͆ww4É|PL¦ëšvTe´÷ýq5}t-ó}’ç5}ö –ϧ56Ú]<3Ÿ+xÆæ³çÎ%,¾àŠÿ¼.¾ØÿŸ¸XÕòy—ÿ·å?´˜»°6¹”¦ùúãëMþ³gtmûl|ŒñÑŒŒnô«|>ª4ûM}ý[ÆG—ñÑe|t][|‘5š¼Ê#µÁ¨ü0Øá3;Ñò™ý)ú”ð¬×+çã·»‘O¹€‹›é'k—¯¶ùÀ«Ýç>¯ÎHµ||– 埘“Þ«j>‹ÞL¢,ã£ëŸß“ñÑe|t]íøLã©-ŸÏhšY´äsדZi2>ªªù ¦CDÚ"Ü,¾™@‡ñ™Åù `<“ò«ï­ À-ÿáb‘oÑ•4bÝâv¼/ÖϸAÇù ¨üÐQ5ZÆ'Ý”óâFù=XÝ㟵ñ9½ñ¡üq@Χfð>ŽnHnù› —Ü¥ø¸k$ðô(ññà¾ÏljŠ%=å><äoá“úw•øÄ—Èòø¬úWvO_Æ=|¾î?°Á'Ê=¹™!¾Ê‡­_º›O9ÿÜ©ûçûùÈõëNuçÃòO0 ‰i‡ÈYrA»SvþÒe|t]ÆGWc>0¦¦|à3žšúÏx*Mÿ‹ùg4ågU¶~é:x>•§P¬<–ŠÑÆR=ŒEÒ18ð#|ÐSú+‘\h©æ~T™ >édJÒÚ}á¼yTâËÿ%žGêH=êh$Gkƒ4hÏÇ‘–æ>¹ÿ¤Ï–š»óïÄ pÑ`n¶F$ðœáƒˆù$ ÊeW¼#»/‹ã9é?p‰O»ÀgÕ!L[‰çÅ#ë{ Ç-þã_ÈÑ«õõ±Pç“Ö/L—òOÉqŸ¾KXÇý3­_G)¾ú©'Šs¶j9fÍC+—¿t]ÆG—ñÑÕ˜L£©)øŒ§¦þ3žJÓÿbþM`ùY•­_ºêϧt ]@ý-õdšFKõ|¨µÂ€ÅÞ­ÑÆÒQ>Ñ…_J}Ôë 7hmœO©CZû#j_ä?±/Õ¡· Hò¡‚µA´çãHKóPþä?‚Ï?•|hîο/ÀEƒ¹Ù‘Às:¾Vx/nXà“((—]ñŽ<î¾,Žç>(o(©Úó cø¬:„i+ñ¼ø->‡üÇ¿£Wëë?b¡¸%¾(ÿÔ¯_.óÈ=Ée.ÔI÷Ï´~I¥øê§ž|(ÎÙªåd˜5­\vþÒe|t]ÆGWc>0¦¦|à3žšúÏx*Mÿ‹ùg4Aëüüo(µ_¿þÝõ¬:ć:WÇOäW‡Sx7eæX¸*èÅ|ü¼ï@Ï =±¹BQäw“<ŸÍ3gïÃèJ§ø ‘hÅŽÂ]Ò| ÎúÏF> ññïà`©æÒQ'õI‹žK|1%gÚæã§¾ÌÝñ+pì_Z4ñ°„çªÿ@Uý„T7YY|_„çÔúµ_ÉH¯õìcH,\›‹Á çö?Ä9-ÿ¡RÞ%ã rï 7*ºVKõÙ?3 ÅøâùǵÏ?Lø„Hñ+ ¬Âúå-Z®_\cœ¿úm‹Œ®|†R{>ƒ©1˜FSS>ðOMýg<•¦ÿÅü3šÀò³*[¿tUóA çSGN<=0ÚXªç°ÍÁø\þ‚ØÂبN©¼CZ»žG‹ ã|"Š·Îð¡‚µA´çãHKópþ‰`ò k‚,ñ¡¹;ÿN¼ æfkDÏAÿ{ø$ ÊeW¼#»/‹ãéÂ'Œ]à³ê¦­Äóâm|ªÖ° ÿñ/äèÕúúX(Îò™*÷@åüSrœÄ§ïvßþù`ë—ÄQН~ºOÕqcÿÃV-'ìyhå²ó—.ã£Ëøè2>ºói45åŸñÔÔÆSiú_Ì?£ ,?«²õK×áó馟¿†ñÑu˜"ú†ëÐð×£A<úógï莎ò 0XÉ«šÑ.á¯$GZšgâ œ³|–× 0ãÏ©øz7àxNÆ×e>XOÌ? Ï>,)_çó@ÿ?Z= ‘Ey9®_@7vù8*ɇéìþ¹Æ[Ê£ÃóÀõ+ÓI>çðÄõ} ð~žÇÎ_;2>ºŒ.㣫1˜FSS>ðOMý§¤»þ5µÌ?…ßçñ9©/Ÿççl㣫’–N ÇoæƒpúØEz1f„¢è(û—ÔÂǽ˜Í0èŸUªf>îGø@Ïž¦Ù{~ކˆ³øZ‡“tœšøz)Ê/WóÏ[ùPüØúU³>µ2>º~ˆÏ)½xÿ|‹Œ.ã£Ëøèš`ZËø°'—tÛÓ¿¤†|†”ñѵÏçǵÇÇ$e|t]ÆG—ñÑe|tmðÁ?U|;·ÁXàòŒÏÚþÆÓµÅG™ fu~ Ùg}9˜4>ó¿üö‹øOìõîÁºã×6øÐ7ù7Ꜵ«Êûg Ù/s›oÄ«Ðdh*Ÿrñ¸ û.Ÿ4)ÿ[3×aÓâÓ|àyîs˜ÄvæDwøO²yŒŽò¡¼Á]ƒ3¥lB|¥#bK}Ù7˜~jùܮǑ(ËøèêÆg]ÆG—ñÑõt>SO•¦ÿ4>Ÿ~šYŸmMÆç>üÄiÕ¹e(zr+ÁÕ·Gç£bØì_ñ¡j>ÎX|hápÉZìØ¯éVDìèiì1Hf+>ιÏVõL>ñ“Zü×Ï ¹ÇÈoð/'>П™ƒÛ¨Ê'Ÿ°üõ׆…+ñº› æ?/჈gù^̧_ù +9÷yŸ}ÿ¡>Άx ¨ä“b¨_Q0”³ñ%>ˆë Ðñ<™ÏÂ}“’åD^Χ´›–β×yîþ§£†Ø?w”ñÑe|t]Lý4èè?Ÿøtôži*Mÿi|zzÏþÓ‘Ïùg>NŽ$ÙZz¶˜]ãúîúT:Ÿl¦…él®0odH½å' ÆÇÿÔˆ©1Wyùƒ¥ÄÂ#òÙ Îøø“hƒéU>é§.4XgJÿ¬"TÀíÊ|<G žÇ'æŸ >Pè|ò¯BrQø¸ÏãùÐ1ñAÄk|H*ŸÏ|ø”Ò<á>yþšOMþÙ¤‚Pà#@ËÇÏ 9‚´~A¶~‰IG3,óq:$Ÿ *ϺÞòí|ªmØ ±ÿé¨!öÏe|t]ÆG×S? À:úÏg>½gšJÓŸžÞ3‚ÿäïÓxlã£]w>ÅpÝò«ÒW蟫?y >U),\• 0•{OŠ.…ÿÁE5»B¸¦³»ïçÂf]al¥þÕ]x/ŒŽ À@‰øÀM|Ü,ÒÚ-ÿwé˜ÿ„šX!kqXr¦›øPÁÚ ºóI·JnTŒ/¸ƒÍ}.?J¸h07O#r$ûŸÍ4´™Œ$ŸBÏ–ŸD@¹ìŠwäqW+çŸõ+‘ ‹œX¿ˆ†ŒN¨å^¸ÀgÕ!L‹ãiÿœûŸEð•ûü'>.=ù§ä8‰Ï¥ÍÐŽÅØú%q”âë®±ÇâCÞÏV-'Ãì|hÇŠO‡±>¶ñÑÇ6>úØÆGÛøèc}ìÇó©ŸàŸžz>ŸŽÞ3M¥é?OOïÁ,?«‚.*>•ÖƒÏrUœüýD¤ããÝÁ{Ó_):çVvnÖî¿c/çƒ¡ÂØÂu§¸é6œr¶1øÄü#çZQáé@ô|¤’kÝs§ùOŒ\£(v!‰l/Ä×|ÄŒ!GQìñ©:úŽœsK9_;z€÷»`w|¨å!A4öq>Õñ•ò `‡”ñ Sb•õŸæÏ•õ‹Z«Ît/ÅûêQ>üµ™‡8áZ¬:x|œ¯ïŸïØâë›|€áù*ŸÍ ÷AmÄ|‹$<¿8Ÿµÿ¬òÒMëÚ€|¢—¬òúõ{|jå²úúدäsÓ¶ñ}|îÛøèc}lã£m|ô±Ï¦~€|zj>e|tíóùqíñ1I]ÆG—ñÑe|t]ÆGW#>û‡ŸZ;nÝ@­øì}>uvºšñ©3ص«|Üm2>ºŒ.ã£Ëøè2>ºŒ®¦|ܬÐãèžK4ñ`—ŒJk¡¶|¨à*ðqì³ý¸êÂÇ-s᢫>‹ Œ‚+9ŒÓl >|œ¨’à Qª3k¡.ù'›s2ØæÃZð^>¡uˆOdêœñ)ä·ú ü<¾~¥êgýgµ~‰ý­_ï÷Ÿ}ƒßÞ?ïÝÀøèÆG70>ºñÑ ~–L;úTÚqëj5ÐgWµvܺÁ{·hP]ÆG—ñÑe|t]ÆG—ñÑe|t]ÆG—ñÑe|t]ÆG—ñÑe|t]ÿo4|ðƒÑðÁFÃ?ÅÒ¼% endstream endobj 377 0 obj << /Type /Page /Parent 679 0 R /Resources 378 0 R /Contents 379 0 R /MediaBox [ 0 0 595 842 ] /CropBox [ 0 0 595 842 ] /Rotate 0 >> endobj 378 0 obj << /ProcSet [ /PDF /Text /ImageC /ImageI ] /Font << /TT2 838 0 R /TT4 840 0 R >> /XObject << /Im124 380 0 R >> /ExtGState << /GS1 843 0 R >> /ColorSpace << /Cs63 647 0 R >> >> endobj 379 0 obj << /Length 534 /Filter /FlateDecode >> stream H‰lSËnÛ0¼ó+öHMR”(õÖÄm‘FD==È2mµ%W’ô;œî’ë Èå>gÈÑMÃMcAC³eµ¬KPø%Ã)Y°…4JåЙJ±qÇŸ4ì&¦¤RšŽeÑÂÏì _Š\æüN /ç·¢Âõ>¹V“p²äÝpòËR*‘éÜUØŸgBké8Ø2ô–gþ9•Q•Fj>ªíÏB+ÞÄ׿Ó&aÂк +‚›@)ñ)©‹hE|ÍÞC;ÏcXŸg?ÁeÕŠ¬”5߉§õaAG×Îaè_ÞÀåé8 ó>ô»hû `\ñËíÐGaoÕž¯ç‘ )¯£î-rѼ'_{˜²ÖwƒYûöµõò)CÑí0&¶ 2L Y^ÉDެHηÝÂ1QÂVÖ±,øO¡kÜ`3œ×Ÿu‡Ð} 4²H#16ïýó0Ž"sèóÓiè7Èœ2Nׂ_ƒ?‚§AÏÌL™>=L¨ß7LCüP90][i!¯Œt% Y^ÂèÙ–Ý$Ašÿ Ò¨2VäE%•ýG’IŠÕo-Vt‚("Á³ˆØF…{ B~y'l¼àä§•RgÚðq£eO/ð0’ŸÜ3ÜŸÈø+{Bµ[-£fk~x½„ïÌhb“(Ètå¤Ü¡¾ãÖÙâåÀÙ/\qÙ endstream endobj 380 0 obj << /Type /XObject /Subtype /Image /Width 288 /Height 467 /BitsPerComponent 8 /ColorSpace 647 0 R /Length 3912 /Filter /FlateDecode >> stream H‰ì— ¢£ Ó–ì»ÿ· 1 ­(6óZ@¤‹Î†€a|ΣBS£ÚïÇ¥öüóýÇs?Þá@ðÒ™ü<>xɱ㧪gò󉞱ýÔõ¼ý|¤gh? z^ÏôŒìÇëq¯”Ê’÷ô8ú•‹YüqÔɰ?Ž’rüx?.zp<[“wôã|:}’/éÇùÜgï$^;ß&4òW¡“a¡ñåÿ^QÎlÇ•ü¸Y ÏâulÜÝÇÏ+ùyå~Ø;‹laDÌN¾“aÉý8çVý8çšý¤¶p'?îKñs»ñÅ>+~h±jõs¯ø‰JÜZüÄÅÜ…µÉ¥iš¯_4¾î?>Ü>›Ÿj'Ãb~tÌŽùÑx¶Ò«Ÿ«ñË÷Åüè˜ó£c~t„L)R–*qQwK¸î¡üÞI!òŠÛ²ð3GÆ”àœLåT‰ÂOh%ÉÈŸÉß"û—FÒ”2J Fù)'в!èÇ«ÂÅÏ"~ Ü'|~@l‰¸ÏŒ”ù ožæ`SK˜nÈOš¥ Ny™Èãg3·1QÆüè|ìçæ˜ó£c~tÌŽùÑ1?:æGÇüètñó¾~ž£1+éèçÀüæGEñƒ,]2Õ#æwqý¢·aÐü %+nirà¶~Bœ¼Ó9>|Ý\›ÎmR5)õæfX!^ûV.4JW.´Œ¿ì†:¾üŸcÿ¡oé³¼XŒ¶àBJoêäµcßwâD›£qöÄ úñLÁ o³hÉhö“œôöBO›D¬ú‰m¾èÇ_tö#ñ¶ñµî§8¾`ÅO}þ‰"Ø8Ëý0xúúž>"+Ï?›âG„C– ?ô°ýâgê4[ü@Z¨Š31_Üäú¥Œ//«~Ü"~>{ïlÜ?Wö7m½5ø¡¯×öƒËíò¾ÞRpÐünÓ.'”aéçJûŸ#{ó£c~tÌNg?ð®~à9=ýœ ; Gï4ÿŒØü¬bë—Žæ§v Àxk=wÜÊÆdÜ|^½¥„)Œ|(!˦ÄßK­ævëÒ„ŸÅY3?y²“ëiÔüD;!\D–êe©ÖÛ„‹ »Ù ¿™/æö]ú)”šâ'¾»óÏÄpÔ`ºì­Hè©®_x„Ÿd!ŠrY‰Wäãî`¸ž¶ùçË~Bß?‹ Ñ´|^<ÀO}þÉãÇ?‹vnüˆ…bÛü#Ö/ZªPZl[¿\?G’ËBè$ŽØ?o]¿¤ŽÒø:oûÑ÷Ü+û¶j99̺­;é˜ó£c~t:ûÇhtõÏñèéçì`Ø=z§ùg4Àæg[¿tT?峂z‚ £j¥·aÐü ”ÞU“S»}+?S1S6•}…Êœ…;ìvúI¡·‰t>òÙüõ\ª~ I@=ȯó"À²~ÑÛ„‹ »Ù ¿™/·ø‚€”ÁúíHòßÝùgâ 8j0]öV$ô|Ó"6úI¢(—•xE>î†ëišÚü(·#¾·ÐwÁÏ¢B4íŸ[Ö¯?¸Ô´3~ü¹øhçÆX(šö?´‰·ëT_Áæ?Yö&æŸRà$?ç.aŸìŸÕ­ŽÞÛD\¿¤ŽÒø:½~PßE×z›HÓ [µœf݇VŽ¿tÌŽùÑ1?:ýÀc4ºúçxôôsv0쀽Óü3`󳊭_:ŠDí¼ÔzÔ¸—–.ÁB©½·ahòÂHd!jp¾DV­[Coáøéè„:BÃQ•Ÿ[ÃØ,ÝèF‹\ÉD‰.ÔÑæ{s2y§þíC ¿í€‹K?9aO êüÃÄ@ÕìöC2¢¢Ÿn‚øÃZüЀB>‚¾âRéZ~€ë©Ž¯ì}ëã ê~ öƒÈÉO¬‰ó‘u0|škõÓ<ÿ@ƒŸù!R¦k“OÔËühØ*ðÉú~Üeë׿ù‡ +WŒÖºøY<1tÝ?/ÔM5à˜yCü®§œ/Äü#4ðýÏêžØùKÇüè˜ó£ÓÙŒp*#æ5»z ‡Oâ<åÜÙJƒ òŒŠ»z BRz!A.2_Öæfòâö‘æ{sÞGr1? ôl‰`ÅmCŒ/^p-?ÀõìôÃlBúñßËù¦g¿ŸÏã'®ç؂Ѳÿ¡Õ*ÔÉšM â‡qÎþùÚã‹s¢ÚøŒºÿ9²·a0?:æGÇüètöÑèêžãÑÓÏÙÁ°zôNóÏh€ÍÏ*¶~éÔΧÅ3(‹[zÍÏêÌÏÆ|Š¢9’¨.|ÂîR6ß]„ŸïÍ9$ÇÒP ó*¯;›?áíY¿A¦«Eod¸X¿çéq‘ù²aþ¡×”ïÞ\Þ‡¼Ù?1lDhõGèi_í~„Ñåü^÷#ïœ×óe?ËLÂæŸd!Èa~Nž{˜ž­~Ä4nJ?r¦j_ÒÖt}¾ XÜ:ÿø• Wü¤…K]¿BRŠŸóçɶýó†Oñ~ÉÏÂ˹ëWÆ^?ªžµ}w¾ÿa3a¸¦âeÙùKÇüè˜ó£ÓÙ?›ó£SÙÒúe~ì|QÄΧ:æGÇüè˜ó£c~tÌÎç~^7æ+~ž·Åü蘺ôÈ:ó£è0?Esaˆ(¡Èü„d„?æ‡Øà'ÌÒô5?Ëø‹_‚]ëØúµ óc~ÌOó£c~tÌŽùÑùŽŸó ?÷Æüè˜ó£c~tÌNÅO¶Úý5?+åŸa³Ÿ¿ VËÊ^7:ÛýÄ P¼‘š™}~¼Š)ŽRÂÌMUào5”ý~þb–JÌ}«âT? êÑŸ¨ÿ┽êçoàö­ñzü Ëþõ+Ÿ`þÄíß_ÿÙ¯ÃåFA(€Âþ»ïÿÆ;FP@8NÒ´YÃ9»µÉvò-Öº_-Û/:ÇMl›L‡Âg®û×dùüÅ]øLŸ>œ>œ>œ>œ>œ>œ>œ>œ>œ>œ>œÏ§Ü•ÏàëizÚ'ÖÒLìçbiŠþôízÞg?”'úën×Ë>ñø³ⱩÒa›ÍŸy:vµ¸Ûë>Q}Z²Gä++‹åÕÂ{ôòÏŸæíWÕ\µnŸ4:ûlpQžN×Wã7ºÀÞè³”çwŸfÓÄöÎÚ{}¦úgÔÔ×Wqÿ*–m×W³¾ûþ5Y>q>Ó§§§§§§§§§§§çó)wå3øzšžö‰ü÷Üi²»0–xTNE»lô-þ¼wúœ(Fs²óïý8ËO|"Öÿü¨FiG¬‡Èƒ|jLjþ²eøÊôsŸüqŒ »vaíÓ]6|åGzÃþiÞZ~+ƒ…ÛîÈ£¿lð->Ñ/ùl#Ÿ´h‰jÙ>h~ŸÏhc×Wo§-ûÜ÷û öϱwÚ×µƒ»û×P÷úJFiárò©Ïƒt—;¿ò3ùû3çówá3}úpúpúpúpúpúpúp‡uË>6NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNîŸÐÍ endstream endobj 381 0 obj << /Type /Page /Parent 679 0 R /Resources 382 0 R /Contents 383 0 R /MediaBox [ 0 0 595 842 ] /CropBox [ 0 0 595 842 ] /Rotate 0 >> endobj 382 0 obj << /ProcSet [ /PDF /Text ] /Font << /TT2 838 0 R /TT4 840 0 R >> /ExtGState << /GS1 843 0 R >> >> endobj 383 0 obj << /Length 5130 /Filter /FlateDecode >> stream H‰ŒWÛnÛH}÷Wôc°6ï xìÌlvb$ìÃf(©q—µ$÷7ìÞºt“”ÂÖ XdWuU±ëTõ©_–Wo–ËX(±Ü^~‘Šþè! ü"qâ‡A‰å·«€dí׫7¿}VâkwøA‹åújO`âéêŸò΋üH¾÷`-’·^ÿ?ÒÒCçe~*×ÍA‹ÈOýÀ[¨(ËÁ¾\xJù™I °šÆà;”¿Ó6Þ¥½ÐW²åþè©@–µ÷¯åß1öcW!E?w–~sà^X`¤yÓ÷må-°¹ò)ø>òOï°¦½Eå<ÝáwdRwk«˜*šµÆ[„~!÷ӻ啕¸J3ÂÈ”ä"ðã\,諯¶&Ks+Ìsü?‘ª$ñ³ÔµW%©ÆV¥°;žÊ“0öÃܵû²ÔÄø©©È?jN8Xþ2ŀ¥4Ò“ÉdœúQj ˆ‰ŒÈá#¦ó±­ö e¯[HIX`Vn9JÖµ(¿³°¬Ž±¬Ë¿×˜¶Djqàwتk¬µÄE`¡˶;ÈñY7¬½$²d¹1%ÊýÆ(¶ú›§ 0ÑC¢11êî‹g”ÊÖ+pEÔä³b+Ø€qp±3ÛÈ_«}³×ü,±Ü‘m·ü m×Ó¯8”_§FD³5ŠýNh(¡Ê 3¾JÂP,ïè¨Õ¤ºc>ê5}‘øï‘ŸôQ‹§ N;sàÿ‹Ý®´èÐUT€‡Ú“\ôÍèß<­-5‹Ö|·õR?óƒè4*‚q½æ‡ž½h{â6P'Æe+žvf'˜¤Ã`=Ý™Ø*¶³ÿj1½<“Fƒ ¿Ò‰tX±ŠìaAÉŒ fuì{/ÍÞ·] *ÔYó$s–üìN[ñ$t¼Ë+…FeXqç^çÄÃsb¨kG5™ŸÇc5«b„XÁg÷ 7_yüæ-â4¢«cXQ9"Ÿ0ŸKBF.á>©6Œ—\ö¨ˆð—º¥ü¦€œãáÀÒó J€™•Ù éæ-ÖG~jÛÁ7va¶60VŠÍA¶þyMA‘ Ÿ‡Ô¬š®«<ŒUkñûG m7BáàúÑã;ghºD.ßÂy€Žx}¼ñÀᣇ…ò×k‹Ù[xÏäý;Vb©øõ=]"ï@Q÷ë3P‚,v’dNPÎî´ $¡”.¯A‰ea‚;õ:/ Ï‹ Ló^& ÌGP朵_«šÐ€ù\ý:L¬²žæ¥ïo°ˆ“€(ÅRPC‘[’Ñ£n鹨"´2y84¼Ôí›qZ½–µÀî´ f¦ rªÔø©j PHƒhˆðDHÖ´ ®±£Oᩯ½Å. ñ½ð«Šßs¹~ ò{ „ñÉê˵xQÙŒÀ©þxÓ"ˆÅ9xYæïüN^:ÁëôÊ)7x]â‰á9±¼ï„à x?‡n¹ÇTšxHFÍù Üð“E§Ø-Œú¨8U¢•1å…¬‰öäòÍ¡y –Ÿ<¤ò7´öÞ ñ²X¾^;ª…N4âKÞ<áÙ¾àÊ{ l}¸û|{óøî•W!`úVhô~â‰áNóëÖ(™«z‹^úŸYÉ9ƒ{ê&,sÂ}v§…{z‘@8½r@Ѹ;ÄÃsb7Ü£`ìã#Ú‡a Áæ0AT“~†>]¤  kNF¯âØ œ ˜R@ê§õÓœx,¶¶VðP{)vJ9®YÅ0Š »›l“þ·‡#P*M,«±2x¸2?Rù†ÍÒ„ 扱[1]-¨Fð·¤ÈÆ*QÄVäô~ÚûdzSæðJ²¦  ¨–BvŒ±R“¸É°_þæaͨBþøòŠwD*¡¡?¼»óˆ‘¼Ü„‡¼ž!8V.ü‚ĉޙ]» r#wÞ†3ÁÜ:ăÙy±·ôŸ)ÇHÇÃOùðïKÂ_"›#ôæDH(¦‹sm—禄¹ilæ&Ž{‰Á-”_ù‘&#êÇwzËJ˜Uè»”äLnĶaÕVì %«TŒq@ëÆæžµJþûœ< mq3“£i°ÌÕ4æwš¦ÁBgÓpzå€"[öQ†…}îuN<1<'v78?NÔˆkéðr‰¦€¼íÿ)¯–·‘$x߯à‘Üm±øö­m7ÖÆØ†áñ`ϔĞVC ex¾ÃþàÍÈÈ"õ`É;èC—*+³ŠU‘‘‘3¹tâØ1cJűӆ)vçÒïðq6Í•^\<øšW7¢ TñN ¿j¹ŽûöºØBœDšÓÃq·ÛÂwÏ¥í*Zh¬hL‰åQ¤ UdÅöCRj§N˜«ÙÛ͹x/ýLÜ ÆÏã52*Þ´ª–°Ø\p¹AÉ’c\rÅIVÌGa27aÒÈAs¯ …Ê~|‘–§ˆ?x Ïã7úûAÔaŽ›©âǸéç‹èÇk5Ùº°ÙøÔb?Ò Ëø'>,‰ÅÿPÛkܵ‹Ïö’Ðm¿¼ÈŽb{BÅYv'SÔsvŽÓ\u¬‹ÉŠÕWÎ\Ç=¡óÀá¡#9Ý³ÊÆŠé®N4aõa§­á¼q©œïD|Žõ ±zðû_¼Þí¶ùÝ¥EŠ7¿œÖ:StgÙs­‰Ò^é%]?ù^ ?$£.f ÀÏå–ºÁyX;åÙš!8¿öv€ý(Òô>Ÿìh ƒ¤9íëY“Ö0mwæ©æ0„ÜÕÆSæ“ÈSæðû'šÎ×b+q5ŸÿͶ{òÊä¸÷’‡ÔÒÌ)]fÜóF2S ù/„/ïôßS)AÓˆ–AŽ‘T¼ô¹£wX6]´hý/SOÔp]b ˆµgÄÖK?ïfÒo”„ü}7GÞ Bc"Ó¾"´†!ÜoVœ4‘€ÙG˜ƒIëâ¾:…È(Žœ‰£/Òk¦úÒòmµ” ÙÁK ?t Œ3¿Xq°šùt>±>­µšåÚ2I5”:IûN„Uu¾RÞk­ä8àhÏU"Ý#sÜS@2|7óL9cŠë2¨_j’ø¾ÕUjVÛ¿õ ˜ZlPÔZ™Š¥Ò–ho1ÞuÊ–—©eîi÷ ~ÑLý>«Y9 øáÓÛ‡/oÂð‚öw³„E¥ïßï̤ôˆ²ÄèÔó €šÆ ¨§}=¨i ƒ:¸3NU`ƒP“2‘§ÍaP—É9ï]ëErZÒ9ÜsAMN¶ª!ê!¾ª¹–cê×™ˆSÌîï@¸Æí¹‚´e;VMßëï…Ê4Ó«íØ,uÃr2/:W·ÜÌŽÉU‹£/NU‘)¼z¦W“Š«º0ï.±»“žt….F‚Í[Š¯Î±˜VI˜`ÍÂbÀ×°hÖ Ã;ãTó‘"¯±2‘§Ía,f¢ÓN°˜ã}V„÷ÛÝn­–¹ G±˜±ÁL㓲—S¥Vör¯‰rEd©åòõò’Xºç‚m„Ý9Þ™ÐËH]×[\Óù¶ÖMC“+¤ÕmX³m-Ù‰ù‘¦“ÀÔ í?ëMÚ®.î•‚!#VÑÐFfé¾€(Ì QÌoØÅ\Tž½‚”Æ H§}=Hi ƒ4¸3O•ÜiÀ|yÊ) 6¿Ù(¼ÞîW"£îd ܦýP£·mgÚ~Ý{!ÿÿ7 r`Í×¶bË)Ô|‚ë¬=X­{à*ÔüÙ(ú2K‚‚I†«}€Ü¤ÚHn‹M+•]è­A¤R„YÙ(:øÒ¾oùé¯Èè|åò㪔ßÌüû …Zz×ÿáâwjÔÎV+Îû8l±ÈͱëOîŠz¯>=7X^À×ÕcKx_ƒðöõð¥5 ßàÎCSŠ*×O9hö‚æ7¶è×#[ù üZ1Kj`–%býæF­¹‘ÉJÍRr?~Ó±æÆ;jV”ÌŠ*~ ¯DÒb·ýq/Raž)8¦SÆ`*LûúT 5œ Áq*–7R!`"O›Ã© ›J?— ©0f_ëãº8⓸S¦KH-Uü·€®®ëø#+ê­…Ú°Dßø__¾âˤ¥)ã£ÂXR¸êâ…÷R¸2®€ˆUÐ)BE,~¯íwËà·i<¿2=§ñl ñ{#ò\‰PKë¹–p§¬éÈšîRK8á#Âo鈷„+o©âÍ]áM”=ˆCÁY6§ëOºZõOùåÅÚrî°ÌDÛ´¯G­a´wÆ©’[VÈ´kÎ|¢¦[¸½Ÿ¹y¼ÙmíÒ5úXÒy©õҾȻ¡B8\û“îºÑ#¶K;ê¶C.¦š‹ØssôÛÉEãjæz+9.ÀjI1¢§à­4Kö«ëolVåHÝŸÖ·ú¾WkËÑž‰]’¹r!¢nEËèµ|n—ÿåx±ýî×/˜³;r±mÌÛ®áÊÍæo ÔDÐŽ9¡gê±$]âÔÛ~}÷àY6]´°SÛB’mŽ·Òp6¿º﨨$ý]gا×R7óªf?S 9¼”mmßõ@}u¦ ^Õë¾éÇIy6KÀ'æ”ϼçvÈÁÞ¤¶€Ææ6mgŠ»¾ô÷)·|ØYnû¶ñ¶ó|²´Œìp&“{6¹c à¿ðpÁÊNè$ÈÊ4YyÚ׳2­aVîÌS%žWs]7“¢¾ÏÝ´cØ&ŸcÆ[Ÿ3µ©™¡íkÍzók§‚›9ü¶UªÌ˯_壣¯OÿªµÉŸ\&u'“çw'µÆäæ×YjŸYýw¯¢Ï{ag¡¾‡¾ß¯Ǿ=xŒüo ùÛÕ endstream endobj 384 0 obj << /Type /Page /Parent 680 0 R /Resources 385 0 R /Contents 386 0 R /MediaBox [ 0 0 595 842 ] /CropBox [ 0 0 595 842 ] /Rotate 0 >> endobj 385 0 obj << /ProcSet [ /PDF /Text /ImageC /ImageI ] /Font << /TT2 838 0 R /TT4 840 0 R /TT6 536 0 R >> /XObject << /Im125 387 0 R >> /ExtGState << /GS1 843 0 R >> /ColorSpace << /Cs64 649 0 R >> >> endobj 386 0 obj << /Length 1360 /Filter /FlateDecode >> stream H‰„VMsã6 ½ëWðHu*F¤¨¯“ìvÒf'i¢žv{P:vG–\InfÇæH[Nììd&²|tQgU¥™dÕ"(E™±þðG‹R1 Ç «ÖAŒ¶á98ûíA²ç1ˆEkV5Ad‹—à+¿ ‘ðëÖ~ðÿ—¾Œa.2Þôщ8Œd’àŸG¡”"ç,•,‚ÕLÃÝŠÿ…Çè” •|`_ênʘ×møwõ»Å®»,<wžj¡wÀcláñÏaõ=•Ñ©Xd2Ià\upælÊÛÒ"ËɆÆ9ú¡ m¨wC%"å}cèÇ8²›þÙ#sY•Š)L¥¢Ð™ˆ³8ó‰‹ ¡!sJÁãòòAZ4e̽¬»§•(¸qiZ’iên\„æjÀ¥~Á`o¼÷+_¶êÆ©îš0ʬ#È²â°ÆF³©rQãâdXÓ¯×ÛnÕÔÓªïØfè­K[E3ŽfjÌ")dºÏ“¦<ÉÒ'ªZ®FëjÓw¦›X 9*Á‰ î^ôÚ®ÔÓ/ÑÜ0Ä®{†Ø1¤CT¸ä¡i–«½/|ÿq7ôx†k(ÆPýâ°g®ÆÊ—år |à¹æ¯”4tù/V®(d–ûXUÌÓâ[è1wãjœFŒð¥gë P²j9‡ØYF%8£<¶æ•¹RõÝTCíØ³éÌA¡Úƒ²ú±ßNaI––.¬É2¶à6=6lt µ{n¨©›%Û 3>„–6}9Т¿0-íïÉыŮ¡¤´êœ±7· Æo XV²ºc?®;wÑ‚.ÖV!0ʲ‘N¸ƒ¾îwa”ÂfÚÒy4¯øJ;êÿjwÆiï£{36œÜí}Yº­ îYÒê“»Ùyˆ¤ÍÁ÷PÚÖ:A¡ØSèÉ@ÝZótP%,³ý;š]S7ì‚qïÞ“Ù{(«Ø‘Øw¯%M L±k¹#'õæ§*ø7Ð),hT¡$‡Fb¹&0U@÷Y!jÖÁÙõZª”]õÁŸÁE5SÁÙ Ž†“i±Ÿ V“ýH(æÏ«0åÏÛ0(Pî´8QRžä é%§ÿìfDÆûçWv À3bRÎ×[¾Áó}‡Cb¶L=0úEÚª€/Úi+Á)gÚ/ä¡úK‘dqI 3âÈ(µ³[gr&FÉw‹É§£'T_ ƒÛöÈü4‘©ýE*9+m‰¥•»Ò¾îT„4߬Þ$nc‡•»·¡öš€T*ù;ÒMõD=ŽžLM|j–GöC•wãpCÙpš¶qÂ;„Vºw¢ ñxù‘EµèÛ¶Yu‡ÚíºÏß |À£D’ûÚy}¡¿ò‡)La×ôØŽo&24 T4þƒ`nÿ`«b‚é‹b«Ql5ÇDºyÖÛ°ã¶Ù‡·Ø¶Ôήm3þ+ÅñéþþöžõàrxYfן’­Xåâ‚o–H-tÁ"ü?˜`ñ3[Vxc!ç&©‹™ííA©K³ÀY“<@Õ™=UZ¨“§?¶îòY‡êˆuæ÷ˆõ@˜Þ5˜*æŸUN†£¹ß…ø=5„ÚŽšTÔ¿ß7æ§‘ž"îC·B‚+¬2‡/4«[fÌKú ‘|ÖHƒÅq.ªdïõu=¸½ÍvêÊwS‹³ÐíÆm6ä~ž¿mPD™ï59÷mÑÛØ­Fؾ`—öÜÕøÞ=±÷;î<4~Ý;·ÞtÔí‡ÆÿµAÓ endstream endobj 387 0 obj << /Type /XObject /Subtype /Image /Width 730 /Height 600 /BitsPerComponent 8 /ColorSpace 649 0 R /Length 8331 /Filter /FlateDecode >> stream H‰ì—‚£ª†'vמÙ{÷Ú3­IVí4û»S[ô“¦8„>üqù6ûÕû³Of³àŠdö\›ü~ÿ¾¿ë3à”Ù¿Óë«3  ~’þœ÷Ðf?¶ëß0ü,U?ëÏycÏþÍöì!.>¥cljÌ/>/Àg´c˜MF³Ó–ÜÍÞÈf§1=fßßϯ™Ù1Pøã§ý6žĨ¦a6èÇ2{ùÀ÷ì»Ô½µÙß6? íá—,BÖÍNeJ< âSL1˜b´ÓhöǼ‡[fy5š=‹ÃèÒ! e1 6h¥Õì¥ ÉͲÎûw»Ùé\êb{¶ßPåÙ=û®ó°ìØC‹ÙiŸW¿åžÍS„Ù Ÿgë츧ÂYÙ-œ×5ÈZ5b¿`•aÙÃŽl›=·f‡â!y,JêÈ›~­ÿ‚T‘Ͼ<àm±Ìˆ:;îê…_¡Î~*˜ ö¨F”Ç«fÇ_…O‹ ³Án éÏy¬ÎEŠðƒ òºÎŽ?ð`6xs’Ùx"˜ €7f³G\³O’ÙØþÆñZÄ ÓÙ€£a{ö•ýסÀb¾¢³;Gë‘´cßU- °:»p4¢ÎŽ;6ÌïN±Î†Ùà­)×Ù…0¼¨³OÚêl" oëf,d œKSM?Ê"áìår¹‹}É8—ö:›`6x#êu6«B¨Íì¹ÙàÕTëlúgü‡f…:fƒWS­³iü\þµš}y¸ýçòQïÀÑTël b6›ýñçóÛìÏ?TíÀÑTëìÇžM‘Ô‘ª‘Ï»Ù>/ª€s©×Ùw±ÿ·ðÿSCF4ûrùü¼üùþ»Œ•îÍZ­Å^«F.ß›öÝÀ¹¬ÔÙ™Ø+fßÝ~ð§Ú€£©×ٹثf—o¹Ç êlðZªuö¿‰8`ÕìÆ¥Zg[ÀlðTël ˜ Þ‚jm³Á[P­³-`6x PgŸëìñZÀ6»¯;G#ªÎPÄŒÓÙ€ƒ)š À[³O`6ð Ì>ÙÀ'0øD›}Ý@ïÀ–þ›“y*ØÙW‡2{˽½vlé?÷ö¡7Aàiöuœú¹vléÿè3ì´Ææa¿#„ٛľûÐ5°¥ÿuG±Çæa¶#¸ÙÛÄþö¡o`KÿëŽbÍ ÂlG0³7Š=];¶ô¿î(öØœ ÌvD2{¾ýt§KÔi8ͯëƒÏøLiÐònûÑ¥g5vç(6ɹ´dÜ™]¼ù+¦³[ûf’fÇ—FêfÏÌþ;(™ý°à±©ÂçpˆÛ335t7ÇQôgÒ3͇4ƒ2›/óö^Ã< õ žk³å*æ3³Q4;ºÉî?swšb)‘™]—? l&Jcs³i‘–ýÏúÌ&±Š‰M ³aÖÙjÇMÛªÞœkfËql€ª³-ÅTÍþ¢Áé«A,Û£ÙùD0Û1åj$74|'÷¹©|s^:³å¾g¯˜½$™›”Ï«‘ŠÙâ™…ÙÎé2[ÈW1;}Ö{ý^f§ˆ}{64˜­ÿ ÕÈêØ½ÌÞXgSxÜPgÿ˜uv´”ˆ¹—>§¦Ù…qmfSÁìTyˆY5ÂúÌžH-&N ³¡ÍÞ@ïÀ–þ³ÙO¢ª‘–Ì€¼šMq‡Ù'^ÍæÀ쿘-2n€Ù"3à†`öðÓØq¯^ x×höŽ&ðr˜ÙWœ0Àlà‘Q›½W…³SœÍsVú‡âb¹‹¬ÍÞ©Â9©f?hž³Ò?‹ØÌ>7칸XÄF`ö¹aÏÅÅ"6Òj6}s?¤«‘uZb´BÔ4BÏÓ;MX‰s:»®L»9Êlb¯íƒÚîç^4šMËËSf7 ˇtÎÓ=͹f«©ÞÔl /ãöO¥HŸÙG.¾„MÜ~‹f?.c«qCæ?³ÆÂ<ÝÓ,wéD³ÓUK/‡p¼Ùæ5MW]éÑr?÷¢Çì1nÛ¤ÞYcÙlDÆááØ• Ò\E³[§¡Ø½šþ>ð)Çâšöâ¸j„–c,_Zy–që÷s/¶ÕÙ™*VäRÍþØÆc§!óKõ)*ÕÙÍÓ´…Ý b¯¾ÌÅ*Ê;ÕÚýÜ‹V³y¶¤¸žjddÃâ}.šÕˆ¼ùosÏî™æEf§ËxÜïªãÍ6¯i\š^^ËýÜ‹þ_¤ßc¦Å#r»ÙYŸê3¾2O÷4¯1[^ƃ8eώ粃è³r?÷b“ÙrÏ.|£4šm^ aö²Ãµ*Ø=ÍùfÇ «výöà8³k×”-mÃýÜ‹Þ:{N7$-¾ŠtäšÙé{K|à‡4d^~ÖX˜§{JË«¥¿éëW\ÆCæ:ÁlûšÎKK‡®û¹=uvgäÝ®jýÁ>èî%Å©¼|æm;p£f¼Ùñ üàyN {./]DéÇáÊýÜ‹70û5óÀì7Ç0ûûÿ.ìçEóœ•þ¡¸XÄVò={¦â¼hž³Ò?‹ØÈ³O {..±‘i„Ùg†=‹ØHaÏþþYû8 éµ;ò†j–ö4_<Ñ=ϦÛÂÊ[jH2ŸxŽÙ:eq̉—kIñØ´긦¤Ž²IŸ5N±ÁYÓÒ=O¦Ç̼i9¶ÙÄþ6Šý¸ªËðR„þ™ù&6tGRXyÒQ Cl”ùè"-”ĉ4Êœ8knXòć¬óɻ۲Wƒ˜ç;â”eØnvLâe’ÙÇ4ìÞñíÛå|?Çl–?XfÇ3¢‘Ÿ“7<™]Qwg³ãÖ/ŸÓå$»/´´’8°Ç:öNH>§yÓÜ= jˆ“]xDNÜ)cíkfo6fJcYzÙ-âÇw0[eKé:Y#+kqG:Í&Öe}b× }òCLŒDgõ?ÿ@r*Êšúã¨äX¨lˆµö³· #ëlu{Â5TuøÆ:û8³Y¾e³IÔÕÎU\ÎH³åw™qÍxYÓn6±‹¼ªtqvâýô)~ujslˆcªc&Ÿ­½nöjO:÷xȶ/íEï<ç›MÙ¾¾ÖÃx¹BãJßÔ¢ ÝfÇ”'­~.³›EÂ$öá¢Ù:PoœŒ3¾µöêl3ñ|Zh9É–y1›K$Ͳ²ÆÒ9nš§j¶è²¾ýäASRõÙ+fë{㬙]i±vËly7:S5;%/Ný0³mñÖÍVùXrñ7白܋Rl¶<ª×Ùm{¶>ôƱR•£˜àÙÚM³åwë6ixMÿ¾KÅHÚ¶Ôwyÿ<›r¬‡•_ղΆ¼!5ÊŸê\¶YË8ùŒê æ^_Dš)„ Ÿò©¹W>ŠŸJ,D Ä–2äÁ“ŽÔ‡Gã¡}Á¬µÛfïÀ´Þå'ϳCØÝŸ¶n ‹hJŒÄáý€ÙÇ…}½0fŸö\\,b#†ÙÈ;íôSœÕy¾á¬ôÅÅ"6âÁì#¢ÂìwfÛÀìw§`6=·ôÚyCµK{š/žè˜çksо&‘;°¹TCj”«ˆçè&[C§,Ž9±M•i¹¤—‡ÔQ6鳯)68kZºçÉT㘙7-Ç6›ØßVk¦4¼!†f¾»ÙÝÃ*_SÌHØ\ªáåÓ¬ˆ´P'Ò(sb;›:¸NÌ'ïnË^ bžïˆS–a»Ù1‰¶ëWˆE}<¦a÷Žoo±]ηÁlëVůNmŽ qLuÌä³µ×Í~BíIçÙö¥½è›çfS¶ïïB¹BãJßÔª„¢s‰§MyÒñ^ðÆî(&±ÍÖzãÜÈh1ã[k?¡Î.ÞÖÎßtÎs ÙÉdeöÍjÈKç¸iVœ½Íæ½ó0)©úìF‡³õŒ½qÖÌή´X»e6²ÙšªÙ)yqꇙm‹·n¶ZŠ%sžÙ˽¨)Tëì¶=[zãX©ÊQLðlí¦Ùò»u›6¼Î¦ÿ¾KÅHÚ¶ÔwyÏ<‡™-¿ªo|‹Q ©Qþ|Pç²ÍÚ¨ EàÚ¡ÿ™†OùÔÜ+ ÅO%"bK¹åÁ“ŽÔ‡Gã¡nú‚Yk·ÍÞi½Ë>ó|õk‡ôwܺ),¢)1êèûÙ60f#ïguž¯C8+ýCq±ˆfO8 7{À0øfŸÀlà˜ |³O`6ð Ì>ÙÀ'0øfŸÀlà˜ |³O`6ð Ì>ÙÀ'0øfŸÀlà˜ |³O`6ð Ì>ÙÀ'0øfŸÀlà˜ |³O`6ð Ì>ÙÀ'0øfŸÀlà˜ |³O`6ð Ì>ÙÀ'0øfŸÀlà˜ |³O`6ð Ì>ÙÀ'0øfŸÀlà˜ |³O`6ð Ìþý2Ûr‡à‘æþÿOo’m0$Ð JÕ ‹w÷LE‘Á'˜ >Álð fƒO0|‚ÙàÌŸ`6ø³Á'˜ >Álð fƒO0|‚ÙàÌŸ`6ø³Á'˜ >Álð fƒO0|‚ÙàÌŸ`6ø³Á'˜ >Álð fƒO0|‚ÙàÌŸ`6ø³Á'˜ >Álð fƒO0|‚ÙàÌŸ`6ø³Á'˜ >Álð fƒO0|20û€Z³ÿ >0fÿõfNØ àÌŸX³—ƒëE³ÿqq9¸^&ùëo×§W¤Ë³ÿúÛÆÅõéµÀ |‚Ùàeö?/`6xäu4füˆŒÙàÿ0\BÌŸ`6ø¤7[DÂëš³«ÀŸ0ˆÙ/a•³ú¾m6_ ¸š ³càÉA|)çÊÔK÷T×t©£L›ˆŒz¦"ÀÇŒÌ^þE¹Cޝé­TJ¨‰ôèºÄÊõ9mŎSØ0;ÇÐ¥ßXMcaUSK¥ñœ]Ï«ÿZø¶cö‹-³ÃÀì•X?œ3˜'ù7œÇÐlsˆŒn®¥ÍQó€Ù2ðœl΢7[š]>çõG@1'HÝ?¶Ô®‰nÎRgš~óï¯ bö»`$܈óÌæwâĘ p#0|‚ÙàÌŸ`6ø³Á'˜ >¹»Ù"é!ÝC$zÞ4û÷Œ’|“•Àˆ™Ù?QÑÆÉ¥xe¸l&^7;̆U¦1[ÄØ”³ƒëvtÄlĆ5æfkv­ý0Þ³Á'˜}‘V²ĆUväÙöiŠW`&ÎëÙUåúlžÎ®˜ ð8ff_›®d³ fƒO0|‚ÙàÌŸ`6ø³Á'ïš-¦ kÝ>ægꟑW)ÞÊCr—XÎ÷Ô¾˜£f˰t™E’Å]>’jÚ‡ÔRé{á¦à ÌÍ6APÇÎRÊ'Í$b^Z¥ÕÚúKÖÔÀW25ÛÚÔDiS:)NÚ¯Gþ¶ŒÌý…êÌFìïfWÌ®Éí¦ÙrMr+æVsi1½lE±˜‹õÙÅì+èÍî~ú "ö·óŽÙU+S:I&›gËØl“” Ò%N_Ͼl¤¦Áä&¶tN6Òœ õùµ,—·­nޏjÓð½ÌÍx"˜ >Álð fƒO0|‚ÙàÌŸ`6ø³Á''™-rò¾êÄR"mñ¢Uáùœ³/rLâei±úÐ13ûk˜ÌWn 9„iÚÞ§›CÚ‡ªÀlXa³iuÔT2I©9Í´ÆléÄ6'±×쬓‘iœ+œ”[]òÊõÀcö_™-m³a›Ï²‘И}zžÝJ,£J€ž'HI‡ÇòbK'u¢ü;EÎòJª’<6˜Æì- nË'f3á¾|³n fƒO0|‚ÙàÌŸ`6ø³Á'ïš-×n àCŽšÑð æf‹Èëöú,…X”¾-H®þ=‡žº-l15[ⵘjÌ–¾M7€±ÖN}îBàšÝf‡ ³óëù¡Ô®P'hÃŒ3Íç‡Ò±Ù'/yÇìbòлO±ÙÈh̆9;Oõt˜O¹6ÞÒu†sö)u SÂnØfnv“àYì4› coÌx˜ >Álð fƒO0|‚ÙàÌŸÌÌ–Èë™ÊAþ`›vKíËJ¾™©Ù꓊ît/+eøbvd#ÒÝ/Å~s–ߊå7£”B.å=å6̆ÊA³KVrf(òR'mIÝä&¿&pŽš~÷7?&ùÙÞ`KA]Ž˜-ºü;¨%¥}èfCÃA³E.÷§ËFfÃqæf§S[þÍÿÝ<;æùŠ»H[ ú©Š/vÄl€‚ÙàÌŸ`6ø³Á'˜ >Álð fƒO0|23["¯g*Ù9µ”TéMDo§úljðÉÔlõIÅ™H²QÚê¹ÙEF•ïN_ÀŽlDº{mŠ9ßëcŒ/¡Ú”ÚºTçlP!?Ыۅtqege™Ò3ÞðÞͶ&˲lbz†A© g)“óÞŽk¿z2ÛYYG÷Dm_5{ô&M(Ž3ɶ`BéxqÕu½¤'ÛÞY)¨ŸÌvƳ;?†*ï0»½«ty¶¬•ìOËæÎô&Jfûâ Ù*†VŽmoײ‘N¨>‘fø¨º™lsgÒî%`¶?æf›ÓžXñÌq­žöìAR· {6i2“v–T[‡ÙeC¿Ð KmJO‘ÍœžÇŽ˜}GNp}óP³?‡휯5œƒÙàÌŸ`6ø³Á'˜ >ÁlðÉÌl‰¼ž©¤¶mN†Èž¾3Ìðvª~êWLÍVŸTݸŽl÷"Ís}®yø&vd#ÒÝkKŒËË]Gö‚}¨59tO³áYšÈ× ª”;ˆÚËÖΖB0m³-Á9h¶U3…r±¯fXB×eˆußÌ¢ÓoíWO¶w&¦]j»ä¨Ùö­ —s³eGÐ,Þ†üa)×y»©=1Û'GÌ6yE|]aY‹ÙÇèòlY+ÙŸ–YÕ1Û)Í–6ú™z9Ãì>1i‡Œ«s±®6Ø™èY0Û7s³ËQ,ýv›„µ6.v˜Hû;²‘¦C;Kª­sÕCf]aeg5E µçñ žÀŽ˜½ŸßäèJ£p͉fß7ö™Ýv—p*§Æl€Û€ÙàÌŸ`6ø³Á'˜ >ÁlðÉÌl‰¼ž©D·ÅGi¸ S³Õ'¥i,À}Ø‘Hw×-Ò˜½ðø"ª¸”$G|ÙˆñD8ƒƒfÛ´#›mD±Á\tÏåßvÇl8ƒ£fwo¨UiQ ±”Ì&-‡Ë9b¶èr~[3Û&à6fÛY.à Ù"Äý r‡Ùd#p9s³óI0§:£.‡C•^ä¤;ŽQã›H̆Sس‚˜pN7›Ã!Ü‚óc6ÀÀlð fƒO0|‚ÙàÌŸ`6ødf¶D^ÏTbS—åJyºîŽ.«Ýw =6·<©Ù꓊2hÍ µ4c§FÒ<Œ= f{bG6"Ý]7 ÍÖ]bOq¼<Ö5²á9ÿH)ªBh¦®¥z/¿'u@PÃKÝÖ–à4;H›(³—¥­y¬ÿôÛ³E]¥çp; Œ³Sg£§[‚rÔlóVCctGŠ#2è¢Rr;Ë6)Ù¾­ËsÖRc¶‰õýßulKðŽ˜-ºÜ7©˜Ý)d‡¾mvPƶ?&£~qGãd³}sÐlMSÓlü1³ûlÄdJçÎl½¹ ³»ÀÙ™›mÓ #^sZ³'ºÒEÔSÌlCš“Å”Qz’ò•±è¡ ׇLmOìˆÙwaÂC͘€ÙàÌŸ`6ø³Á'˜ >Álð fƒOffKäõLå ¶5V6ƒ–û•ûØfj¶ú¤¢èÆ0”x&õ©Òó ‚;²éî¶åõÔõ1¬§ ¿„û Š"釠TÆ.å‡Áþ˜ža0NO†ãP8hv0ú Í.r–ô%”è.õU½™.Öl;®¥ýÎa6Žš=|kÍÖ)Jö;ÆãnJ%¤ Ô,ôð¥MB6hŽ˜mM iµ²7Û]1»WSë7°¶€ÃfëÀÛe¦rÕìz5f‡’™Ûµ‡ÙH7)Ùæf×óÙ"•/áL*»æö|—ûÙ“ ô‰¹]]ÍÊdu\.ôß<°#fÿ˜ çq³ ºp&÷1àL0|‚ÙàÌŸ`6ø³Á'˜ >™™-‘×3•ƒô³ˆ°gÙ]âêeÝêycqÉÚ×LâÞ—j±ƒƒúÛê$a×p¸;S³Õ''ÿüïŸwM K݉è6Õnj¸®l¤o¦ï¶´5nÎŽlDº{mJ±,ÇÓ耥VÒ[ĆÙ—íÚ‹[³¤éÒ6t]Ê4å>7{0ÁA³íϵ fY•ÆQ=›è'aÐ64»äB½Àù Qªm`.ÙLhÍŽÅ-³ÇÃá5{ü6°W¬qµÐ›=ÌëÄbœªSoÅì’}7qÙôZ7{Çp¸9GÌîÂÚ¦ÙmŸÍ˜ÝuVûRÕYú/[®oÍîgÚ7ç Ù"­[UÔ-³ÅÌ`k­¡]6¢Õ­>|ä.2j+[fz»óµáðæf›\S6ÒØzœ´ÅZé@)µ˜Ç›.zþ²ÀÊêÍ\m*®¶¤vråèoÉpx;bö^øŸ7â<³‰gÿ³_§Ëi#Q…ëjªä©ÒOl±(1ÄaN<3yÿgÐÚ- Ô‚š›ó•Ã"´øpÓ $g6ʆN” (:Q6t¢lèDÙÐi¨l)ìïËç‘4¯=µ ¼î"¿vd¼'Åï`°lã§|*拇9è¶KyñâÒ„ 7«éÜ6¯#´¬æD-ÆlTïUC726öM`{SUvyeÃÑȲíÕ@3M͇ÃÊ´£¢Pû ®Þ²­Ãac˶I5Ũ»s˜Ï$ª¦ut ìÖÅË)ãŒ)[ÌçÅ#17ØÙ)ûèÌ>pqódÀ ‘e‹ØeÛ±É ewJí¬Fš)Ά˶¾íY_áÄøi ï¨9À:\¤:õbûzý—öwTà‡™íŽè e óáð:³`P6t¢lèDÙЉ²¡eC'ʆNCeKa_>ÄÃe¥>»‡³]ƒe?åÓ¡žÜ{£L\ŒÃjD:·ÍKÅЭnóêEŒI\ûö.ÕÑ™ÿ#[­ DÆЧR~¼ÌmÑÙóÊŒ,ÛîG¢zœ—Ý{Û¥ói1Oj/öYÄ8Yu¼ôœ¿»±e÷=ª¦´´_š&í]ZŸ–#MVñŠ‘t»lëM¹1ewÊmmè+;’¨[t§ìÃI¶?‡Ë>x ü–F–-Ò.[zË6÷,»³´î»¸}=¡l7\vý%±¨ºUaýUÐXØË‚f±Ðœ¥}€}=ûõåͻ껤tvr3ûòÆI½p@Ù£†-ƒn(¸Ê†N” (:Q6t¢lèDÙЉ²¡eC'ʆN” (:Q6t¢lèDÙЉ²¡eC'ʆN” ºeï~€û×.;¾õg ðÄ*ûÖoðÆ*P„²¡eC'ʆN” (:Q6t¢lèDÙЉ²¡e{öp¦[¿5(Û³‡è,1¿O(Û³‡óþ!Ï<5ÊöŒ²AÙžQv (Û3Êe{FÙ lÏ(;”íe‚²=ëKSDò»Ç)(Û³ž4ÅøsÂá8 e{ÖMSªÛ¼îr|K‘z'vÊö…²=;TvÜÄÝÜu§8eûBÙž9•m<<§¡lÏÊ–r’ßQöQ¶gÇ×Ùͼff_e{Ö“¦Äv±Æ¦ì ¢lÏúÒ,V ±…™}a”íÙ™iR¶/”íe‚²=£ì@P¶g”ÊöŒ²AÙžQv (Û3Êe{ö?œ…߃'”í[t¦[¿-(:Q6t¢lèDÙЉ²¡eC'ʆNuÙ€*UÙ·þˆ~Q6t¢lèDÙЩSvÒyÜT’œRãÁ² aèïz°Ïž²“ü3RÜx}‹À ’òfŸdÕf’?©jíí´)ûC..¨>×·o³zT¬Fš›86*=ЩUvõ ±Ë®ïC}“Kì²ë]nI:C›²&³ì¤]vÒÙ=Ç+›u6nÄšÙIkR'ÕںܻÍlàöZ«‘½Q+ÊF˜zʵ‚ l„©¯ì‘ÇS6DÙЉ²¡eC'ʆN” (:eÿÙhï%{';ûGöñvÙI®÷Zý[K0Ëþ«ò©ö®æ§ç4N§³ùÓ@ÙùæÞˆ)×Ó_v;í]ÙÏébší|ž<9–]Žîú.NŠÍ—ý 9»ìO{ù¶È—Ù4{Y®öi?º•´ïÊÆõ˜Ù­´åkš½¬/¯ß–ëlâ¶Î6*6'l\ÅÁ²­´åïÍË÷ùv¾þþm•½ Îìj’”‹ÊÆÕõ®FrVÙÛÕëf²³~]eéðjÄž×Ìl\_ïÌî–=yý±/{¾\Íæîe× ì¸µ>.̱ìÉ·åv¾O{³žýtû‹‘ú‹cgõ \PÏj¤\’Ø«‘åúùy—övö>0³P5®Ãqfo7«ôíç?“y6}ûrFÙ„+q]L³tšmVëÍbþxÎÌ®Ãq52I§›,],‹Û'ÊFøgöãbúïæ-¥‹/"”ð9–-óé÷å4[½¿ e㸖-é&ËÞßÓ eã.t×Ù‡Ê^¯×ÿ¥éœ²qœgöd³ú¼˜N¶”»à\ö×·t1›lQ6î‚Yv‹±×>çÇùÿúJÙ¸ FÙ§OÙeC'ʆN” (:ù-FžçYÇ7ešP6tªÊ´¡lè´+û@!túÍn±R endstream endobj 388 0 obj << /Type /Page /Parent 680 0 R /Resources 389 0 R /Contents 390 0 R /MediaBox [ 0 0 595 842 ] /CropBox [ 0 0 595 842 ] /Rotate 0 >> endobj 389 0 obj << /ProcSet [ /PDF /Text ] /Font << /TT2 838 0 R /TT4 840 0 R /TT6 536 0 R >> /ExtGState << /GS1 843 0 R >> >> endobj 390 0 obj << /Length 2344 /Filter /FlateDecode >> stream H‰ÌWÙnãF}×WÔcq³YÜõh·”cÉé¦A`Ðe³!QŽ(ÅÈw¤?8w#EÉUîÓ3 X$ÏÝX÷Ü…WÅè]QÄʨb5ûãTðGYàC'~‘*6£€°ÝãèÝ¿?õØŽ?bU,Fx&^F?ë‰ù‘¾öàY¤ß{9üŸÓ£›ÖËüT/¶Ï•ŠüÔ¼ e9Ø×ž1~¦Uª xšÆà;Ôw¤ÆZ•úFïÔMÙ<èríýR|ÀØCŽÝ„üpÜY2ö㘧ð‚#í®0Ò[0väf ~?Ñ‹ªmÕõ¤³.'“úÙXn¨Š‰˜K{s)›»öLèǺÁ7Oõ¾ò.R?×ÕNýF¶S]‚§P¯ÕwêÐÔ¿*U/«f_¯jB½Úî”(–‹'~¶Øn6 ¾(÷õ¶QÏ»-†è+/×kµª(Ü@]ß$âÏzBåcÕª<¨åaW7Å£'£Õ¶©\ö9<Õ>•» <ˆn¥ÚrS©Û¡ù.þEÇb":9‰w ä“È´U«QšùžÌøAGçê‚þïªÑêkXšw`n†‰óv®hâ±oҲĖ ð$ŒýЩý6*ÃÙ?> ÊöVmàUñ±Mæ'逨¡Á3ד(W|v‘–˜š÷ÅŠ—T­¥3[ñGñ]³Tûz#^ ÷c -ß6&”(G¨H×øÉÛhÕCu¢ÒÊݾgŸ]Æ]¹&Ìžj«Z—i݉v¹Ähr?ë0ùçN­hoÖŠ¾Ì:B.íÓbŽ¢~ªo¸ŽUñûó[é0Aªï£wﯧP¹ÐÞ~¸›~Âc]ðƒûË[¾‡ƒ¿ÿVaƒÀ o“ò%¤Î†¡žNØù0Ö3ÂîÃÎ,Ød:côLç{öu´nȼÃòìî†ÌŽõÕôãykstßâ©n•4=U>?w]tשéråa{ÞC«ö~½õ=•Ð;÷ån_-ýa‹“SETíËz]-UÝ@ß°µòa{؃+Ëî&$7‹²QÔ] ”X„SpY·Ïëç ÍïžÁ3a=t±ÐÈ»Pr9,Lœ¨êÚVÒ4ê»ãÍÖƒó¯78¦à|Hšâ±zË÷ YŸ•ª‰‘³ŽZeÐ^¬vÅ®Zu—«Ó-‡Ç‚%ó+¿t`ׂB½«Ô$ÀûˆŸw 9w>r.¤P )„BÂùz+MŠTÇÓ&¦ã•ÇsûNÌø°˜]P°¯RÝ{PžR¼§ßGI?ßAðçJ‰°¯OUÏ® ºfª0méÁ€(Ϭ{ˆ¸VljÉM݈<³Œ±%Ù싉6¦(ÞxؤTPÏè¶¢ŸïßÂ’3Á’I:•÷óU¶ívAp^Æše1ÄVôv˜™L³1ÑPˆQ¢áÇ"³äPè $·BõRI §%‘–ÆŽ’ÐZE) A%áv‹!Awn#´·kEm%@?n!€œÌ°‡³Lq Ð ¨2BœøÑƒá4¹§ »þl:9Qþ p¬,]€dÌ¥‘wææ7÷ÝÎ=›ÊmÑû!ñ9Ø™6ðqßÀÇÎá‘A¶exà劾?¾:„a¼ †Ë¯!lÕâløÿ.8qKˆíÃ’îD‰f‚:yæÐ¿ÐBc×`q ½]+j#('Ÿæœh†‰ Ñ€ÂÄ"¡™é„`—öi›îè°e£kîhfŽ+Œ‚Eèœÿi4û/0q=ÇÙÍœ(óŒQ7ÏìÚâæü–s ½]+jáY”C«—o¹Á$šMßO1çÈ€0‚Ôÿèá€áƒ?÷Ü&xpD§ˆé„³cN7Ðá@Žo®¼ ð¨{÷ûâ±h¸Á¤œÕ²º}øL: /Òû³©µ«˜báb|šðhù‰scu¢”pA wh÷~ƒÜ5ÁèÀ®µ%<9ûr.¬4¯rúT‚Sœ<’rZc0µ ö Üôh• õÕYû¦ßp3­Wîå”S‹ò Ú>émicŠ1µ4û³ÔÂøv/¢N”S˨;µvíÎï«Ü0e®…Æ a¤„åÆþN Y-v¯Gà[oçäžÕì› ðò]Q%U$Ô«¤t•¸Œ…°^G'›Ö±3éïýÐ+>£TlÀw ´.@'(²i%âö¤q,x¿¶‘]˜óDÎëfµ…±‘êß\ÀÊ= Aé¶lª5ñìÅâ°/+ 7Mý0ÆEgs¶ýÄÝöSà¼FÿÁ+,;àU>ûvÞox ’Ï/jY·Ïk¨ “vÃ,Õ-W§ZVû²^ÃH«±/ ê°–ö4aÛjÝïP »Û¾ð®Z„ÿqKó°fbݶôª/&Ásuèòa]}ñ•ºkå3¥b‹ï×5é5é/êá°ßCL/O»\×í^mW8ée°/ 'TPÁÝœ‡ne9hV‡¶nûJþs¹±mE endstream endobj 391 0 obj << /Type /Page /Parent 680 0 R /Resources 393 0 R /Contents 394 0 R /Annots [ 392 0 R ] /MediaBox [ 0 0 595 842 ] /CropBox [ 0 0 595 842 ] /Rotate 0 >> endobj 392 0 obj << /Dest [ 391 0 R /FitB ] /Type /Annot /Subtype /Link /Rect [ 262 717 268 727 ] /C [ 0 0 0 ] /Border [ 0 0 1 ] /H /I >> endobj 393 0 obj << /ProcSet [ /PDF /Text /ImageC /ImageI ] /Font << /TT2 838 0 R /TT4 840 0 R /TT6 536 0 R >> /XObject << /Im126 395 0 R >> /ExtGState << /GS1 843 0 R >> /ColorSpace << /Cs65 651 0 R >> >> endobj 394 0 obj << /Length 1777 /Filter /FlateDecode >> stream H‰ÌWMsÛ6½ëWàHv"†?•[c§wÆ“éDé%é¦(‰)Mªüˆ'¿#ùÁ}» R’-ºÍôÒxBX`±»xûx½^¼\¯C¥Õz»Xy«XùøãFâ{+£ÂÈ3¾¨õýÂgY»[¼|û^«]·ð=ßÕ:_,©‹Îµxsãb,p®Üßw_-µ§£1lp_œ ÓTœ|“¹‘“ãÿÞ%×T_Þè)Vuñ Êºë©S³œf²¼ìTÕÐø†¢”òàFTÈ쥦á¯lEŠ 9üÜ01£xQüÛñ°LŒpBpÌ¿xZÑxZ*oê>+k„cSž…z.ÆäC¾/(Ì:³?±Ú]À¹¦N•âÌ D¡:v áé£ÈÆÇ¼‹Å"¨ß”ݡʾºFsÊDØbƒˆÒéqG}n)רX"ói8XB‘‘öäEìÀ‡4~-›Ò®iCGŽËÕ'‡'oùûH·Çº¿ÑJ–}ry¢àçÍzñ×"DIgã§”=Ú„^.JŒK~¿xys¯M¬®›Åo‹×ë“Ä='1XÄ!X ü2ž>±‡ï£óK Gg7¸t(m¡¢Õ+XgœoïyÄŠá,­y(“N?-‘™½K|—ÙáÎ¥Tþ®ˆ WV (‹~šÝÈ\3T"ƒø|cq‹Žz ”dÈÁ2Ïú²©éÜû²&à¥Î@‡b€†=²z‚Ó¶©ªæaœ£]jÛðñ«€8=ã !€T°l&,ðÅ«Gô‹Ä7^L|¹:¦ØïYUnÎÙ1!H¦šë'öýˆ§²“PWnê¼C÷–?´EÐ=·{þf¨Í)Ê"µ'€Æ…ø¾$ØÇS5Xqfká <„âijQØkº.Ðë•É&¯@r¯!b¢Êͽ=+(Æ]\Ci&£()(›e;ä´Ù´ 4]™F}‡¬¡µ¥ÙÒ•sO=õ\®üü [Óž£ AÏmòàÞ5æ¨ÂSk3[ôìôF~ ¦ª—& „:ãx¼ÙûàI=îܘãKª]]»è®BA¥^KOÁ˜G¤*S×7Wî2Âiœ&%• LTô÷¯‹> endstream endobj 395 0 obj << /Type /XObject /Subtype /Image /Width 500 /Height 300 /BitsPerComponent 8 /ColorSpace 651 0 R /Length 2867 /Filter /FlateDecode >> stream H‰ì—‰z£:F•LºïÍt<_èNëý_t Úª$—˜EüÿIÌ¢d%•ûÏÏžÿPÿ¯Ÿ–`ñãìü“@Açx8ç/†äÜÍôÏöùyØZ»õÈÈRdΟÓvë‘‘Ç¥o¯¹ó1ÄŸéüHØl%wÎ{çÏŒócQwž­ç~‚ñE/Súç^‹²'_¢œóé·…ó'Ïp`/jš©öUt¾lÐmL_:?»v9ûÓà_™ q›âßoÝÁøÊ_DÏØNµN ÉâŒÎ{c\¬—ÎmˆsïÜ&¥b7^ÉÏܱFU§ž/õÖÛ|}Hüz>FyÅù“Ïçåj=Ïœ‹ÕZZ´VzZÏk­i}5¬W^óar·>ʃ”šsíY‹{M´àܾ.6Dù(½’Ãù8²Ë:gJ·1oïeÞÞÇßjqrJSx6›« =ÏÇO&{õÖT¾~=÷Læpa=×}©©I.:ßèý»Î¯ì2¡2k`޿ܸ­qÇ.èϧ&•ǾÚ7W·Hp®h Wæ—?wU¹óG¡A8 qš,åÔ.\/uæ\ß;»ƒ?6j¼j4ê+æ›Ã8wÛÁx†)çîÑ ç1UÍÕÎu¯ÚJn´™r$êRõûׯûÃù)Ê8?U›ë« ]§ÃoÖy5Z§œòÔuÔQqÿò+ªûµâ¼ŸÊÛMúÈs£«F.8¯>Àê³L¡z«s£v¡ù„óêkbòK]t®GÙóü·šOÕƒhŸ°Ÿ„h£N²õÜgãéô=¤Å!*RÒ,že˜1Ç#U¿¿—³µ˜vq çy{’è“{5š4!ñuR—8¸½3áüÄzþÌdÍ¥[éžØÆúî¤3o¿o:ò1Ìô1³£ò];gœ_bT](Ÿr>Ðyã ²ò?¢tHàþº(äz~¾¾>?e¡sþoîÜ2o?¥ræãÜžI×ôý)§óÛ(•;ç.΋Ô}‡‹¹¥óÛøó'[ˇ23ðŸq«*Ê’@çxç=cÀ8ǃÎñ s<èœwîh®Õ¥‹¤kuÚÎ_¯VQ½äu÷YŸòö¤iî^z¾Úùe“MªvmåU¨îâ<èv®â¬v±Î•úã 7Ö%ó±gšEÒ‹5÷^t5tþ`ÂÃ^½TµÊ÷Á ÙÁœ0(vy­ÜËë•ã©Ñù#éttÊÃøÈÀÏκÐÎÊ©]µ-®$ïU §^Dç¥+<$Ÿ±‰-gÑ/ÊÊZÝw.= óuÐJsAV™V›ì¤”Jç;t^™°‹‰¹ú&H›r¦Ègþ”ã¹^}@õ":bJ&/é|"…s{múN‰¯•V³ü©Ôk„ó~ŸÎ­ü1%Öå¤.ˆxÕä jÕ{$›L:ožýÇù²Õët¾õևηÁú ;G„Îñh o'†qŽãAçxÐ9 8ﺭG èjã¹¾pÐùtþsgáØ¿óAùùãwcAÜûÒ5ߊc9ï÷ì<Žkûu†cä|×qÞŰöeˆKç·ÐŠsùé:á:ÆÿZñt¾8™syjEè¯6KçKS†¹ ù4·¯5KçK31µo•¹í…; 9ç"oëâޮꭳ{çÐóýç}[Î×M×D«qn©ünšuNî†Îñ s<èVóvr?Œs<èœw#·tÈO&{§+}æ†óÂÐŒóëŸj:Û/]ù†>¶òN\_¸öïܶçÛyM¡&XëBmläNdóÐ,]Ú•ä}âå‹áX:_é<:é⌯÷UµÉyÞL\ÚÖû„öùp,/N6§Øôµ6¾q6°±*›D³pítÙG\6Ž=’ó~ÏÎÝ‘M¯@·ÚR^š×Š‹gWNSJ}r?–óÝÆ¹:R¾:¡*LËY¡â¼Ò¯Þ©½¥ó¥É”+iBf)µrÒiåúÔÅÓùò”ÎEŽ•åZ1Ñ“[–ÂYé\7«žTTy}áhι ]Ú[Œüâ§šNá⋤û¨öGc÷ÎÉás<èá¼§s çxìÞyw¶~ˆšÝ;'‡Îñ s<˜·ãÁ8ǃÎñ s<è:ǃÎñ s<„óžÎ1`œãAçxÐ9tŽGÎ;,RÕk§VVEµp4é¼ÛÒyÕ®­¼ ÕÂ=ЀsŸ³3ߥÝ@yÍc³ÎûÝ:ÊχbÛ¹ºu½Éù~ãÜ9-Óù]4åÜ Å2ÎWM½ˆÎJŹp¿úhêEtþP’s·’[»Ñ´îFS/¢óG¢S8»q WõØÕÆP-Ü 9¿Îb2·a¬7M ÎÉcÎ{:Ç€qŽãAçxÐ9tŽãAçxç=cÀ8ǃÎñ s<è:ǃÎñ s<„óžÎ1`œãAçxÐ9tŽãAçxÐ9ÂyOç0Îñ s<è:ǃÎñ s<èá¼§s çxÐ9tŽãAçxÐ9tއpÞÓ9Œs<è:ǃÎñ s<è:ÇC8ïéÆ95ç§7rhJç§­ßC²4¥sr|èå|뵆¬ƒpNP÷çíÖÉYç[/3d=è:ǃÎñ s<œßþvë/ „ó[ÌœìÖC^”ÁyxçKwh Œ8_ºC[ :ÿoÉ|‡ƒé¼hAçGƒÎ5t^)¡óæ¡s ªscÌp8nNÏyçÜœÒç¼ÁsŽçfÜ›èÎÆ¼ss¢óã1ëܸ’Ùݹaœ®çLçÌÛŸ'u3Ž›“ÁsÞ:Ÿ-pŽç³%tÞ> endobj 397 0 obj << /ProcSet [ /PDF /Text /ImageC /ImageI ] /Font << /TT2 838 0 R /TT4 840 0 R /TT6 536 0 R >> /XObject << /Im127 399 0 R /Im128 400 0 R >> /ExtGState << /GS1 843 0 R >> /ColorSpace << /Cs66 653 0 R /Cs67 654 0 R >> >> endobj 398 0 obj << /Length 1518 /Filter /FlateDecode >> stream H‰¤WÍnã6¾û)x$‹5#R%õ˜M»Ø‹l÷Ôô X´­­,¥’£}ø;?”lï¶ØŠÉg†3ßGß®7«U"ŒXm….œˆàY¤ +’TÛ(ŠÅj¿ˆHÖo7ïŒØ‹HGQ"VëÅG`â¸øMÞ©XÇò½‚µX¾U9ü¿§¥ƒÊ´“ëîÙ‹X;©¥‰³ìË¥2FgR¤‰XªKàl+¥m¼Ë+«ìŇ²=(ɲQ¿¯~Bß-ûnÒÉy±÷Yêf÷ÉI›¡¿º*ßi£VŸÐ† 6tj] &Vw¨²^HÂ!‘Nlî‚Z;GŸÄþC½mËQ%àó¡÷â‡ÓÊ nË~òÛ\{á3Ágmó(²Úyѽø^-3ÈP yJeÓˆ¡ÞªòØròËñ4¼F˜ ¢Ûˆö®eTé{ߎZZ þRw‹¦+« ÷•¸SKð.ÔX¾½ÿ º§O^-ìXÓÉ£¨dUÏMɲ`Í“JÅòºå/ø@IˆÄÒh“†tZ,& ïõq²BHÈN"!ŸÇ Ó(%‹6PN†-Z¨8’ŽüOd¾ŠtÞˆÁ?“NöåÑ=Aì¨@Þ:Éîõþ¹ëGQ¶•¨÷A}ëÉð ýž"Ù» ,ä²뮥l{-ÞYÊ=|-2¾ú.”#߬I-G>VŽîä¶$`õ©kx0ˆr5ክ#Ov8ñâõA-SØ *—·*Ç ²Îu° Y'¬ÎÒAÜ¿x¼iPRF¾„cüQ- P?A²7—v5O±¥Å£˜FYö!ÜÇŽé릆C s½KÇŸ‚ôý•-ú*› FÓˆò9vD"/Ê ’9 ÅKÙÔÕqhÇþ0ŒG¸ûÝgeÑõ¢nIMÓ‰?¬.\¢£œz75ºT§N8“CCŸ®÷‹›÷{xs×-~^Ü®.`äg­Mw„‹"íò€´(éYSŽæÇZ!ZnÊol}/ /¡ah%ˆ!KÐr--•<ç-¬9ªˆnŸ—…?}6¥Y¬óèì¤ ÐÅyÆ>ÞR/d9k@Ä|2²©ùûGÝâõfà¤!14K×z’‰ŽE€J FÐrØÚµÃyí•>Pˈ[55y1ÙlKÂUeª^ÆJ( BOªfaÃÂîÚG†®+ˆ Ñy,ÅbB·c=îx´ïz âÒŠ'Áºáiu]Àé\ÀáÊëvÓõ{F•ò©;Œ‚œë/CO©°¡¤_Q:xŠ ˆp½èàðŠ1âzòMwÄPcÆÇTêo"Õ*¶ÿIªöÿ’ª=“ªùŒT“3©&rZÄ]]6Ýökµ f“áÕØ]ò*¾.e!¿Åb’I>±P…çÞH)&RÊd0ƒ¤”M¬K¾”uسî€8j¨ïÊ÷!줫ûòöñz«:h°ñz ¡k6-¾/ &T 3ÚšØv‡½Þ¿"eî_ê x<‰ç²½Â;dשY¹òÛÃþiïnÃg`à oš]÷Cø1‰¼ 'Óã4”tE±Æ”hÊS!yâÏæø3ŒÒ˧ûr½á.A§šû†™ {ÇópŽÐlnâÀ°óQi^aez5ÍG³¤¬ªšn”Æ<Ž¿Ž<µip„‘Oî0š˜c¶ò™NÎ1ù’¤P¾ uˆ“IÖ¡WÍéx%¯,¾/ –ö ÎŸHÓKn½~<÷ «»Xôþ\¿ÃgJwlçËçó›ëÜŒfŽc…^·˜ÂDžK¤÷çsÔkðÀÈ%œ=GlÅ=´ ò6·Gxj“ìlÔÓsC¸¹0.F(Ê.:ÿ*C›"×y"2({AПÿòzN6€ìѳ™éW‚ß---”8guÖçÇ;Mùç¾Î éÈ€Wð 3’^fô¤úˆ7š°A¶Í?˜š)ÿ °_9 endstream endobj 399 0 obj << /Type /XObject /Subtype /Image /Width 64 /Height 51 /BitsPerComponent 8 /ColorSpace 653 0 R /Length 525 /Filter /FlateDecode >> stream H‰ì”]‹«0†ƒP—%6p.†-OpŠ5TúÿÿÚN´Ö$Û²g/ö_M}æÉ‡D¿š¤5ŸßÀ7éçê9ç¡õô Ç¡{êÝí¨9ÿåBËÓr·©F>J!áïæ·½J æuÎëµÿ*õØ_g®z®ùÖCûþË0>?æ|i”Ÿæ_Ñ/ÿcxûyoù["è X‡ð´É÷p…Y/DUI€°ßLUàÉ.<‚Ïüª„ßäÙ¿Enóÿn­#BÐÔü‡¡ELK !÷äœ*ðÀä(ög}Æõ׎.F*ô)ûù_‡1¸!É[}‰ÌÃ6ïážÈá yó'Ì¡-åoçü§ñåIÅ„Rþ0 ]{j;n\Dê/¥ ØfßÎ~Èêwìûa”rÖÈGã¿U¿u`Cäõ³3ÿœú)TpâI€>æ @²*ðÇkäžù×`/΀¥ýóAIýÂØ Y‡á­PÚC©~Þ^ú (±·ÿÂäÍމ?o€ÿO>ó¥ý—ø'ùWBýC ¼†wýã©¿¨ ?”|ßáá ’ñ¯*Q+s¨ße>¨£Žq8)•çŽé¡ÄS—sôƒ¾ÿÿ‘_t[8žT°_OÝ«ê^{ÝŸù'õg¾ŸÃ¥ç;¯“s&º_ù[­þZᛢ/j¾ú( endstream endobj 400 0 obj << /Type /XObject /Subtype /Image /Width 512 /Height 635 /BitsPerComponent 8 /ColorSpace 654 0 R /Length 9188 /Filter /FlateDecode >> stream H‰ì—‰vã* †ÕÎäÜééiÈû?ímhCx ‰KÿL „>¶ü\~BnõïïOð÷«ïÿnüÿ„\êç§ò¿Üôyùü¼>/—½= =CŠÿ'=÷ö,4^©¿šÿméÿ£J^ôþkøöÁÿ šåOËÿÊ?§½©05EÚš1¡^@Wþ?åÙðÿ(º¾\f‘M—¢àÿbºTô·I ùÿrÏwÿë\ëz¦}¡<óËíÍÿÃj¢°&ÃÐS•÷€¼´ü/uýþÂË’[KewÇQL5ÿØÖû ß½ÊùŸñ·ü?Êï‚+~qþ+þìtçD/¶ÐùoYÇ ØEÓëÿz\Êꯀ,þ’¹|g}u,bÿßOÓç?n·´Ôxÿ¸ûÿ€ÚæÕŽ/ äY€÷C~Q´­ÿ.*çQ÷þWÏY7½½fùW}(Ú±b¡Ë¿ÿ~…öüÿÐçèHú«¤Ïÿr\b¹{ñyTår£où™ùÿ yÔù_BþÄù‡Ü)øûVð÷­àï[ÿÓ6ÝS÷¡]=Ñ1ìî]dðß8€[µÓS.­§Un®³v¦–ÿéûk“®>=ç 9­rsõÝz¯™Öðß©ÓÓð_ù¯psõÝzoþÛ#uzþ_'׸¹Îún½5ÿ;"uzþß»Ü7×Yß­wæ‘€î;%ÿoM¸&F_V+(u»ª…Å;‹ HÒÄ ¬áA§‹Ò0äݽ“lþ µ@™?”ÇþÓFß÷ò_X¥ƒUÀ‘ùCy–iP§{M¾JV%Ù\ð¿.äü/g]×uÎ+³£|ç"Í¿n!Õ ~ÕÝÜÌNåu 5!-þ@C’Im‹?@•²† µ>&œô- Zþ9…² €üo)þÒHU¹Šñ¯è e|!É_ØòÛaMéR¶ÚµaÃéݯIþ¶€T f}þãÚ7Ð~7¯ìüË–_*øú¨¦œ?;¶™Ñ—®"š2”çÿñùÛíë +Y-ÿ«`ÿL›ñ¯o²d1î&¿í©ÛB5e[»¬É›2ùY†ØßñøóUB1ù2ù³ûß‚õÿ­ù%Kù›«¸Ç¿)Ú1÷Ó»{'ÍÜÿõf©‚Ác9Ã,˜Íú%f•«züA$zÿWüÍ)º©Yþòöqþx›úóÄ'ñÇóh/ÿ.W¼ò# îxÿ×÷¿Îý/ŠÝý_&èXË¿sÿ' åàc-±¡âáÁ uÿß$vþtKæÜñuÏ 6(øÒ6þtï# ÛµAÁÿáZçfðŸPð­àÿpÿaâüïÕÓœ¾ÛÓPÑIðÀЋHñ?…Éà¿÷~z Nú3ø»’¾¡_Rücý;Sð÷­eüÏ¡C ù‡ªüÊþ®TøÔ ü])óÀ ü])î¾ü}+øûVð÷­Uüoˆg¸&;ƒÛÿ[3µ=(­ÖˆÆÅ'{ϯh­ÄWÖÕàý‚îÄj©xÎ °P´znr>tvݦœ% ’¶‰Þl­á@Mw˜ù3ÈÅãúFªÂ#ÏGÆbÌé£ Ôr4Ǫ¤z=ð.E«f™îC»j×mÊ•™9=„Ž~ùŸ„¦ùÏž.„3¦Å_zm±ÄäQØ0Fg+š ÿ†€öBÕ”­Š¶Ú9 –« Ãérb]fX.äÿ%4ÉŸ6¨ª¬™gùwV«–M.â¯>¨!µp›Ötfý3×dgz.Pˆõâî0sh\]Œ¡f¬_` éJþ«Îÿê)n:Íü•ej­J·züçŠäß¼6!´ø3 süÛv®KM´Ê#ÝiNÀ€¦«&ÇŠeF1cmë«Ñô´Š?yË]á¬ò-þg1Ë-þ,Úƒø×™:·þ­Ã³ÏŸ·j~1×@u¥s:C1̘r<œ?z£ùë¨r÷Blt”¶üíõoâïóWÑXÆßØ ¬I%¬Ä®­ÜÁ!ʹQs¨n³XÊøõ¤b^Ô&pè0 æ/áòà™K^óÁ‚¥-R»œùëþ|1lä/®Ô¦ÕÝ1Sþk˘ø4š6Lƒù3‡¤¢¤å$Ðm½&VzuÆxÕ3RöŒ[d-0"fÕ—~°'ï™2ÎêK5eòo|ànZÎ-á/ÿ¡¼ŸÿY^ýËå¾¾°nÑ  Ï2Ç}ƆDá™7k¼2Ä šVä'7¥qðJd&tæ2¡(Ë>XOêS¸ÊêjWÎçÆcÉߦAü0óÓ+ôâÚÊŸ=Co¬üϱü¡­üCÇPð÷­àï[Áß·–òO¡#êü]+øûVð÷­àï[Áß·‚¿oß þ¾5†?Lw3Sü,¡Ÿä0¨òÙ¡KƒÖÿTÌ^)žÄ¿SŽöm[CÞøWÂSüYað_É¿lŸ9¹=óƒòºkïâü«?Ü%À„ù®‡t¤#b0Œh 5”`b^}ÝGÌ7œŒÜ%L˜ïüv=Ž?f€•ì$RN:Ó¢dÝî‡Á_Ëæ´÷¿ ôÎäüÜÊIbã(Ê$üîüËáßîð)1Ç­Rþ=•[Uçü‡×âßÜN’ä‰y ÂŽ_¡1ü!+¿%LÊi ê2½ßý™®üÙ*ævu}OÚ"íú f°­ÿЛ*øûVŸÿ÷¿à|Åú÷­àï[Áß·‚¿oß þ¾ü}+øûVð÷­àï[Áß·‚¿oßÃÄ °|V7=j(‹´wÿ¯¦AëŸøç$a‚ñ†š¿'t"”5ŠE+zòÐï ø3=ž?™ˆ}a?¦aü ßJ¹Ýhƒÿ+j(HoÀ?ðs=„¹åÿ××8þyóvÉ{Éû_àÉ¿&Èbx‰ßä_è¦1üq¿ÜûÙM°t7íîÀ«iÐú½©‚¿oß þ¾ü}+øûVð÷­àï[Áß·‚¿oß þ¾ü}+øûVð÷­àï[cø€x–ÂЮ>U8RpSyÃ/(/|d™øpë!4hýSär’0Ñꇦ Ç Ä£¾`ÊFÁæ1€ª|  0Š ŽLè‰vÝžÖ þIºÏ×Ïà¯5Á¿Z@íºÙRÙz!QÖƒvƒ.ÿÆ}½æÉ»àß j`xˆ@°H“yE] •5Ztª þtmÁQ´ü…ûGÑPþ,ÿÇÚAß[;𽂿oß þ¾ü}+øûVð÷­àï[Áß·‚¿oß þ¾ü}k /ÀòÁ²ŸÌ°j}Ý!ò·í²´{ªSËJÞïçã5hýÿœ$L,ZMeÌÆ¬EÑ3[X ¥Q邜Ö¬^Ú͸¹»Fñ¯ñ =µy/c ÿ%ZÍÒ…eYFnð'zÖ7üÃo`¥×†ØÁRþÈÌ(,¹ íF›=•“O¸¸Ëa‰yX³Y ê65Þ¿úÆ¿¬!¾ššC‹ÑœVBÕWÕh 1ALM•¦‡lYmv\±F± 5nŒuìªÃ»åÞ{Zÿ2è6e›’ˆ¼9-ÄRÅ œ!«¬jbfKAN¬TÛ…^ƒâ»fÉ$:÷É¿® e‘R]6,éð—˜Eóu%ꥬ~´ë_óí6®42¿‚1zN½H5|oýó†eÿª‡éõÒl†¿µØÝ:åßDQâ“1ËŠ—€ ²œ(ÕÚ'°ru³üEG@öÊæ†í¡eýäðA4þÒÃ÷{À½Ÿ=…MÝkY¹;C=|ë]JÝÝù_°^@ر¾šk8/(?Ax‡ z“òëg‡öþ~DÕ õÿÚ3֯ι§ñßAðßYÍï¨÷;tþ¡M þ¾ü}+øûVð÷­àï[Áß·‚¿oß þ¾ü}+øûVð÷­1üᦙ®æÊ×VÚÔ^­ êÛ«­ÀûV&³Q^‡a¾½‰š¢òhÏÞI#ù³0Yå'®ÿ࿈ÿ-° %JÈËK.N:-šJ×%ËkÜÖð†á–ÊDt“gÒhþ^àÙ¥¨ÒÌ1–)I4ý\[!¥u’ÞmõìH¾þ“o¢L/QžÁfŒn ì[$ùoñìHzÄþ/V•{‘+ŠðC#%ƒ¿hb­ÄŠÞìÙ4úþ×Ýÿ—FYme"uj¬•¹ÿoñì0ýû Q~ö"5U’ÁnPñ[®c&ÿÕžIcøàf_ÎM¨o5“~ð?•Á©òb]#Ýqÿ¯ÚîÙ‘4hý?R¸·„Æ+øûÖðg?$B£õüCSð÷­àï[Áß·‚¿oß þ¾ü}+øûVð÷­àï[Áß·‚¿oâ Òõÿz™• _t®~6IíÌúj2¡-Kò«Ó‹Ýµ¬a÷ý@ ⟃2YÜ/Ë Æ³/=€NŠæ—Ìd³’•åBüêôbw-ý²û~¤òŸðuzÿ­{ÉáOk"}Íå`e.ã/f”ôäÝøWÏ!´SÞ¾!Ïîú†5ò¹A™åY²¨BJĭxà¥"÷ü‘®ˆÿÙ/,YUŠždþ³}ï* ùù©.í²+9«[B¤Øâ`m „®úáHÌøá yƒÿ¶ºÁ7Väoç >€åA”™èAw{C‰ë þÈ*ÍÎWK<éx|ÆOúþjÛê›ùyп’ûD³.šŒ×øsÆ¿Ãß.fý£Žoß²ÿyØcËoØ`èù‡|ÿt‚Sþflóß0)ÆYMŒ+Yžê¹÷•™|!áÿæ„@;ÚåïÖª] ÿÛKñ׉þ¸š‚õÆüšñ"‘ØÊÿïçÿ«í0²ÌŽÆóFƒÔ<ÃN¸÷?åŒÍºòü_¥7Mëéjþµu=[× ü[HÍ¿¶šm5ÿÚjþµÕük«ù×Vó¯­æ_[Í¿¶šm5ÿÚjþµu„X;šb˦Û÷b­/×À”í0OúOë*þë4†ªq3™Omfy±`^?K›j*°.âo§•L)›ÅMþ·Ks…©ŠÄ›ÿkü—',S Œ‡5ÆÎ(»VÛ0<Ë0Nh¸© g^”:¦8î“⿼oÖ»®æ¯8bœã>¦—Ì^3Øž0H¤ÓûÇ2|ÁŽIÒçÿOøËv7TÍÉnö¶·œÞåû…¿Á¿D¸cÿÓÌØnz›¤H²$ãu¹¤ƒÇ­½ÌåËtuþwÄ?n2Jøë‘yxCî=v0cÜÍÿgßò/óŽW)ÀM{8ÿuÌð~.¿†Ì«¹±ù¿Ì_’ù™?c&Ó6éÇHá“ü_G?ïá­üóEú…2Þa¥L¿]—ñ¿EjW¶nQó¯­gó¯…?§‡óoݬæ_[Í¿¶šm5ÿÚjþµÕük«ù×Vó¯­æ_[Í¿¶šm5ÿÚ*Çÿþå>jÍ' ³a¥*‡9÷R>†ãÃ7o¶é7¸:äÝwÝ¥.GùAù¯“`ª’ [ÉŸ1óùùï‹øy´¼Þ^rGzéX‡¦©A€BWÚ ´S¬ò½ýMw õvÎ]ºluϲümÝlBbæøÏ­Ië9°¬ )` r2¥iz‚ô/¯á(>«Îð—úÂüÁ¡š¨Í=#,¼¹š B ›‰,æ0™¦0£ÊEÑ¿q· …×s·û+©äu%™!0Œõ™Ë zN´^;ðýÈ÷KF^n‰»ÞÿVz¦ó­&fê!ìÞóÚÀÆÚ™;\½ ¤ßÑþO_v‚ÿίü§²üÃÎ0KƒÔŒfû߄ߔÿX"qÿ{Sä£ú w d¿²6ÿHZj5nÈu›¿!ƒuê¥0š¶Hé~„ð~7ªÑÁøGÖdãO¸v(ªÈŸÓr’ÒÌÓM„çdЛ“jù¿Jï%çËl×E¨W»q‘t6þíÇÁ¼¦û†CV-þ_®¸çÕü¿HÍ¿¸bÌ?Ró¯­æ_[Í¿¶šm5ÿÚjþµÕük«¬ZÖ"a©m¤[L~üßTFWÒ¾¤úkS£ÿÅÂÀ€5ŒÏ†Ÿ‡9möù'ëS9Œå¬êñŸÓ‰P{‚?YŠžÿ8Ì)3ýþîüMÔrõÍÿ¬æQº–ˆ ‘?8YÐç¯6Ê€±æ¥¬uù3þ¼ö^žjüÝþFD’íÿ9çš+%@’³ºrþÑëøëqžV=þñ!ç?÷?9T*ØšL~›?;…:šÿXmó§ÌT[Û#þbí_ Ö¿¶Ñ^¦qó?–å/óFšÝïºR±ÑO'ø'ä|HÙçŸ-SÒåÕâ/Ázäi˜›x¦†¤Bú,-Êê¥û,¯¹¢ü“1—Ø/çŠzöcoܶš¤ ?ðSz >iGÉÜZ·é)ü%„­¥ ð½®Ö“øÇýŸZµ.Ô£ø¤zÍÄQÁ¥­ëôþ$IÕÈdx ÌýGß7­}=†¿ú‚1_AköÛùàMzžùs‹ºµ.ÓSøsþ×üWáo"¾ã¯Ê½®ÕcøsrÏð³üŸ:ÿ¿ZOáŸëzÜ*™ü¥7>[ÅøŸ "¥–À“ùßí!—›*z2ÿ$lUV!ÿk|äËUŒ?Ç÷U!ù'æ·g8P?iB%‚jPóÿvþ“õÚÿJøão7ÿzüí‘/9 õÍÿùsZ¯òšyÿHüWË*Æÿ¼šiþEð7ÿT(rú7ÿêjþµÕük«ù×Vó¯­æ_[Í¿¶jñÇ¢#£Õðÿû0u]À×èØ|C´O= w)g¯8úUªÅ¥£Yç% –ðíDù*ÂÞ ÉSƒµÞ0Þñ7ÿ3‚ºn›ÌžØï0>ØÑqÿï †\Ÿ¥÷#•ä/!~ÄxŒ-ͳ‹i'|ÖAuZn˜½•cÝ6½`ÃÃì6šµÕø×Ëì)ÞüAuFeùËtr “íøSá³xšÁâ;Gk17kkð`»©u¦'ÉœOzh¯¨.ÿ¹(l6mî7®©fÚœ™7¦Ôƒ}ûëŽ+N$·^uùKù€?ÁîÞážžíªCv«ÞÿoóŸ9_²LϪ$„§Œÿ\$HœæP«æcþ¡> ß½ªŠüÕ$†)Ë‚ÈLlŸoÐíÇü9  àˆ»Èf–¿Y<ú0{EµøC‘#•–þ F¾êIiø<ÄÙlñΧýtDúµ4ŸåŸä[f@fÐcEtþÿ}Bx¸AÍÿ¹Š§Ïõjþ–?4nPó¯­æ_[Í¿¶šm5ÿÚjþµÕük«ù×Vó¯­æ_[Í¿¶šm5ÿÚ*Çÿþå>jÍ' ³a¥*Ùü—‡|§*ò_—€©J.l%Æü[T¿  @¡+¡×‚#Þüÿ°ðƒnBb¶Á9 –Sbü ý¡¢0ðÉ®øóándæ0àÿV~PŒ¿ òº’Ìþçkžñ7ëãO¨0ÿlÿ+3õ°»ÿ—TÊsó®RJ1ÿ“çíüÍÿï)ÉôI“íë&ø!]ˆ×ÅŸQEþdS´Öå LX’ÁĪ^-ÀY?]µø·¼šm5ÿÚjþµÕük«ù×Vó¯­æ_[Í¿¶šmUã€pÚ4XrÝhðí{ž‘º5X%w’j‚묯âBJk)kŸìz Åø¯SwÖ6â—á"Âܵ^:Öáô¬+æh}‹q£ÜrÉŸû"Ø-*ÈÿäþG4„oyaÿ§‚ÃÙ¨…íœó·KC¶,†*ò'’XH:Ø’­<â?bó06.xãqÄ5î¶ø›®`‘ë¼Áß x‹B1þ3œ E¾iJnÏÉ :Êò'+¦B9ÌÜ¥9±à£s´üóa™gÇf 2Õø›9ó“­»ÿhv‘V¶©‹ÄÝùýÏ£…7Ýñâ<ÚýGP¿Ýn|1ßÏùÖþÑú$ÿ« šÆŸìÿÀ?®bü’õØÞ/òwÇ€ñwÄ_G„Ãýo,¿™Eaþpz#9ÖÃdù=#ð$ûÒ0þŒC2­°£õ#JG¥×0ͣÿ^÷­ÆŸ·£ÄNÉÿ¥¤&’ŽqéN:ÿw_k“z“ì^çÎ:T÷ùU1yÁ63³SîàŠêkDôþab¢…¹Ý©K_÷ü£ôþ‡S$äî\ «ùŸÓáýÒþ?D¯;|.þ‡ñŸÕ8`gÕäoëÖ[zØ?û!#¹MÖ[oéiüÍUòUEÛ~iµÞÔ£øæUq¦„?¡ñ_¡gñW¼›ÿ¯èQüÝù?#?f^.K¡³¿+ôþ€0†œYþoBë]=…ÿëú!ÿ5¨ðšAk¦i ŠÃ€ª5M‡ü õQ ÷Ïòÿ)~’OHç³,Fá›ÆN™&#C2ÈG±ÿ§?Ê?ßY'úñ5">Ó„ä˜ ¤¦Ê;ÊY7ÿÏJ³ûXG„häøÃw"N`hœ"|Fè b$uŸObëòçO 9ØMƒ3RMèqçø+Fݧø:è—}F…ù»z“¿Ôð5å?×ì¿ ÈnŸTeþ„Sû?ðÏ⿲ÈùcÆþæÿ19„1”Ã!áŸ`?⟂oþ¿. ‡Ììc– A³"¬7UQ…d)€šÿ'¥²q2‘|dîÁ®8òxkºÞÙB 3éçA×Í.ŸS9þ-£æ_[Í¿¶šm5ÿÚjþµÕük«ù×Vó¯­æ_[õøã°"Va(w‡£šÐ':[ÊÙ+\½«âü—I?c†P7=É“#€­Bºp޽½§rüáç}‹ª}ÞÃ÷ÿÁ–Ýn²½¼šÿµZ§}¶#êŽM¶ߥ´¶`ZÈwöv©È6FðJºƒ±ÂxtOñFùÉs‰ªñ‡ý—µÀ5`NÞ“98Z3Ö™ð²²/pÝx³»·ÌXLÅma ù»Gg£Eñ0´Èô€¯à¥°ËߺSk¯ù_#žËSüe—O(!$„ýÿ6ÿ™ó…q½Šñ×ÛöMþ5_üãû]\qïRaþœ„oñç­Ýñ˜?ç.áŸdùâQAåÕâo“¸q•,ß\àB28G×ÿ÷ÕH»3!kc®3"5˜±":ÿÿ¬î˜w„‡ªùïéB0·Ïªùoë¶°ëªù×Vó¯­æ_[Í¿¶šm5ÿÚjþµÕük«ù×Vó¯­æÿûåÚå¦CQ}hÚÞ¦kèÿÿµw¿$YL0èì5“€maÛ>Æ7ðïø÷Í0þ‰h"YRmt¹N¾˜ÆñÿÐ1㤫ªp2š:÷ªÓ2’ÿ9%ýÇ?ü'†òÿÜxŒPšB„išR“8xßšà_0Šÿ4ˇxöJšXdÓÛîà_0Œÿ؈òB0wˆ<þá¿;ùçc=í¥AŸ á¿3£øÏÆùž˜ÿáÿ ã_Ø…ÿ½ÆZÖ?ãŸ(o„®Ø¬z¼C\ˆQüƒc€ßÀ¿oàß7ðïø÷ üûþ}ÿ¾ßÀ¿o¾Íþ”À¿'þÿ àßOÿ8ðï ø÷Mðÿèéþ=ÇÿÏ?ùß¡R»Dv3Z®–ÍJIÙU”ÏP ê&výs›XÑs?0ûûHóúwå??B]:ó(µOYYÕæþÂ'Þ‚ÊÕÈ*©ëÃ6±³¥6³þ—:FÎÿ48ô¯ÐüãJB—ÎFU‰."Q¯üNËþ‰¦ã²öÙ8˚،ZæPUšëBo¾Ø H ï|ªR2•ƒÂWšÔ·û÷bù·¦…¯ü§2[ò‘X—&ùrÊ^œ™£Ò%Ö”`Îö¬É*ÿ|þg~¦…³ü¯,/¥ôàDƒ²¶*¥óþ«í–}›þ©ªÐþId¾=þ[ý;Éÿeÿb¯øG‡Çæ]Ûî‹÷×þe?ìáßQþ¿í’sD“UCb«>Ë ÿ¥+¾=þäõ`¬yØò/òfÿÚñ£x“Yÿò"TÝÚâÏ´ð•ÿyÁWvÄÊÓWª"YÌ¿Õv}£$œŽŸuªn#7Q'#ÕB”7\ü™ƒä¿ø“š—æ/ h~T£ä¿M| ‰ °Hûc%ÿ•fš«}&ÿËš†/^â 7-EØÀ ùo,YãJ8oÉ¥5èÃ(ù¯^rõküˆQò?¿¥Æw$Ãÿâ{,ØÆ0ùí åðÿq†ÉÿìXú§¼œøk!èÄ0ùŸßô qýOq ˆôÿãäÿ úù7_$‰æëØÕK5ÉŠt$å3”‚º ¯`L?Eý'ÿ_ÓQ¿%Ú§¬¬jsa‡‹—ùN[—äØ9Ónñ/Ö@½(ÿ_Ðs̼JÖ£Q$+þ"<Õþ§Éò/{L*kÞOEß@ù¿ÇVšOãËf_Ö ”Ÿbx—¶¹D*,S·¡¹4™ý‹{ÙÃÿIòÿmÈú†í :œ¦cVbM ælÏš¬òϧOû?Eþ÷A»'ùôÉ”jí–}›þɨÐ}Œgþ>þÇÏÿ.¤iâV´aâ Ôl¿Åÿ$ï¯ýË~¸‡/ùoÍÿõÓßîßöX7Yç¿tÅ—ùOZqñ¹Í¿¶Uû‰—™‹P¹Ú§ç'ù?,îÃ~Yá{ÿ£ê]0-ëËT.J(œ­ÿó놺¾>©ꤪEWœå?PøÊ ñ•ÿ@ã,ÿùïä¿oÿ¾Aþûùïä¿oÿ¾Aþûùïä¿oÿ¾Aþûfü§'l?‘l×í2o2ÏYêËWi¥vÏÎ(ùOùã¹Aü‹µz÷±çË»Šu؆ò1Äk­ãÎÉ(ù/ýÏŽ²®þÓ‡î¢MÚTã¿Ã½ Á(ùŸTPba+@bOŸ(~¤ÿ —‘ýÇ; —n½Ñ$ÿóCOÖ)îiyöV×]†å¹°±Æ¨®™ýëÛº‚ÿò?Š‘¹Kú SJã´|kõ_-2^ú—PÞÙÉåOƒåÿôÚ‘6S÷ªËÈW/“éŸ5’þß_‘ÌPù?­ÿrfÞìŸçÆT74o¦úØÓ1TþOyWù¯F_¼[.“\á¿jÂïŒÿ`+|JÓr™wËä›–ü2Z/ó¼;O8­n#ÓÄ9Òg_þ“ÿÛèùðO.r#£äÿ& ÿmFÉÿ œ~îAòĹó¼Ë©ó¼Í‰ót`uþK²6ÿ¾OðÖæÿÑ÷ >ÃÚü?ú>Ág@þûùïä¿oÿ¾Aþû¦!ÿé›ð%O‘Ku«ž…ÊY)_ìFKþG7ÚPgº£¯þ‰ÄGunðašòÞÑŒäW:S¢Ô ¶þ °‘¦üÏŽòlçïô!çq£”õ¯Ê?ôïNCþÿÙ×C(½Tþtéï¶Dÿ´äpùõ%ýV¦cKÓ¿J 9þÑö§)ÿ‹¢EÿTÍ ð?&MùÏË=é~þ_ô°?Mù/üÏŽá»ZHÏêý`oÚò¿ X¹ÊW/< JUiÀ4dž¥zÀ®´å?¸ù.Fcþƒ‹Ñ˜ÿàb ÿ}ƒü÷ òß7kó\•uù®ÊºüWe]þƒ«‚ü÷ òß7Èß ÿ}æÿ ü;þ}ÿ¾ù)gÜþÀ¿3n÷›þ}qÓ»ðpü;þ}ÿ¾ßÀ¿oÂ)ÿþxŽÿ¬þ½æÿ¤þ½ó?ê‡o`ýçø÷ üûfÆÿý7ü»àv¿ Œñ¯Z€+Sû¿ÝEÁžÔþ/àß7ÂÿÑyö‡ùÉþ^Œ€cHþŽ"p ðïø÷ üûþ}ãÇÿ­™£ïxùo}5ºÿ;ú–wÀ“ÿOpFà¿ßgįÿ?5Ë\Çþ«ðeàßþgKàÿRÀ¿…oÿDôØ|~Ü þ¯Œáÿá=ýÀÿ•©ýÇaŸûü_™eÿt‡ÿk³èŸBÉâ—þþ ãÿò ÿ-<ûÇúß¹ÿï‰?ª~Âÿ•±ü/–Àÿ¥€ øŸ-ÿKÿŽý×,pIüúïÀÿ~œGþï·FàÿRükæè;ÞGþüûþ}ÿ¾ß$ÿÀ+ðï›_?î¿}óüðÇoöé“À7ÿº§Ò endstream endobj 401 0 obj << /Type /Page /Parent 680 0 R /Resources 403 0 R /Contents 404 0 R /Annots [ 402 0 R ] /MediaBox [ 0 0 595 842 ] /CropBox [ 0 0 595 842 ] /Rotate 0 >> endobj 402 0 obj << /Dest [ 354 0 R /FitB ] /Type /Annot /Subtype /Link /Rect [ 309 144 337 158 ] /C [ 0 0 0 ] /Border [ 0 0 1 ] /H /I >> endobj 403 0 obj << /ProcSet [ /PDF /Text ] /Font << /F2 581 0 R /TT2 838 0 R /TT4 840 0 R /TT6 536 0 R /TT10 582 0 R >> /ExtGState << /GS1 843 0 R >> >> endobj 404 0 obj << /Length 3116 /Filter /FlateDecode >> stream H‰¬WÛ’Û¸­¼ê+ðH¦V4^•·ÙïÆ©ØµÖúÅ•ÅÑ‘È IeâßÈî§o ¨àT.åòˆ@7ºôéÓï·«7Ûmª´Ú>®6Ñ&W1ü£"Ž6F¥Ydâ8QÛã*&Ùð´zóãG­žÆUÅqª¶õj_`âeõ9¸ “( Þ…0—·a ßÓÔýQÔýs£’(âp­“¢ûÁ:Ô:*•ej ³y ¾Mð -ãUMh" ê¾êN¡Žƒêþeû§•6´'øáÝ9,,e»¸'sÞžáýýöÒ 5xÂþª¦ ³ †ÿ{šU»6¡ƒ'Ü• Ú Å5¶2Ñ…ë2*œ@18±™ÆjÚÓLÇÁ#M³§Ã¡i;1 ÚÎÊȯ?¢-2ÚöjGØÆø|¨¾†F‹õÝèÐ0ËÕÚDI¡¶wrÆóAÿ\á)à|» Þl¾)¢,¸kÆzhŸÃu—:…(Ÿdüív¥U«VyÁu¦I”–*Æ?kú;4«Ç'ËK+4f]H ¸OKßZ”"ð΋ó yfÀxê[ým©Ý³t]méJt¶x%ú~™7W(ÔETÆßDáO¡¶Ð¨mÌ!>Yž ¶¡ H‡q9£¢gÜX˜ý@m;2BI´‰ôélFRL[¶_œ×ëÒÚ°xûþ^õ_À¦\jê)Rw­ŒžBˆ9î…7‚<&t5†fTu¸ÎA±‚ô΃N=ð.¶¿gÏ&µžñ =Âu š,h¿®&7;e?•üîY¥Q¿Þ#¹ Ë–%º³ÊÜz ´Â Dô ànúAÙelPUø__/÷:§[06;5]ÝDáö &ã l|)B2o†8WÚ™—ºóÃç7TF…•e@½¯œ:¥³Y§2á5þóÈÚ0þMsLc‰éýÍ-“$!*Gtøu ¹QÝéøÐ ê4Bˆ§^µ»¦›Úǯ€¥\¨ «î›q$†ƒ(#¢r‚– ¨Ïì8%nãæD™,Ø…H•S[Ó¨¢¿”r·ýŽ5lù 0RÚféÔðähBnŠ³Ç‚=~Dõ,°ÐoWÓT;ñÇ1²\LQË‹$Ê|8¡Hžµ‚¤Åb'”üžyWN–¥EW~Ò…]‡Ô…%Ì‘~“KKÄ|ÈqB}ËúÞN{¬­¦(õ‚Yí ïÄÝPJ¶zÂa×°†EÈ\Ó§=³-¿gPŒcõô Ž½Ê ‚#`8ÎBà¡Q@-Œñ¶\iû3öYÀ_œ)ýp¼À_v¾¬Œ]0Þ“›vžqÙ€™ƒúh§¨pPÙÁœ@Fj0>cbr@™Ô87P¸Ò Íê ]{l¡Nm‡‹E;“¹i\¢~ ×¼ÃTLƒ;)ƒ²pM:M'Ú5Q ÷,üOçïÕáYÿˆÍ Â¨-AJ©ÔÛCs:üêÃiÛXt–b|ŒˆÔÇÌH„(…–ʬÁ2;·´\_!Òç‹ãàÄ'«]t^ÌlKb{ߨ¥+øfÁâvƒë‡ÇO¢¼Øm‰&Æ€VJ€åF¾Ô‚/lÈP5VåùÀ3-ÿÔžÄDù¼!CiÇ&k1»¼Ðx3_(~ZÎNÑù§Ÿ¡láW·£êD“D­?ñ¯¦ƒL¿ív­(‡°s”2ØPå"xi‡×­¸ð9ñ1¢ð¢·ÍÅ_S"BÝxÖ Ý,;éÆï™w•Z**Mtí×!]ØuHD“)Ù¦„á8g––̺cÄäÄ*ð‚h|Á^êG¡Éõï¸Úì(XnpWüƒš)šnMM‰(ìí ÀpIΉ.|×ïÝ;VÙ‹—eî[w{Ãmäð´´ÏÐ$zíÎ):¥Ž˜Ž³`ãâÌ G.{úqƒ -'æ.áShkÖhši¢f–מØà¾gMáÝ _„26Qá{1ˆÐP÷ZÓóbwX½žyW&õFÖ-]ØuH]‘-røYD6=GV^ Ÿð.áÁÛîäþJŽc¹ÁÖæSȉkƒ;Ç.µ±3Ò5×ô}®¯©D1•(®¤Ø-#eJ‹/R"ôEʳV"µX쌔ß3î ú9o¤<ÒÙ®SêŠTŽ­}œR¤­À‡sñÈ©6Û$qp/8ŽK¨è7!¶›êæñ€¢fQE9sÛïÕtu¿›Û_lærf¤œá;ã÷bsÛó;ohyrâŸ=Ïy¤*¬â’F 4ÖfYZ‰<Ÿ¥“©èí7Tb§¡!³8Š`/ÙÚÐxú^d"ôǽÖç¼Ø ¯gÜUrn³Ïí0ËÒ Í»×yexúOãôi¥nËö¬gÓž³:m[©Ûö·¥o¶[£ }\iVÁ¬ /I xqÆËöÀsz?FI¸ý‚6r±%/OÀ„í¨‘XAœ€oƒ] ) á|fDc_CSM öÑÃ:¡ q`(O¯X,Õ²9-I”i°·{ȤÇÓmùnVà óCs ˜CÁ¬FVí))4¼þÕwµã6 ÃЫptÃv‚™›µfÌbË** • Q>Isàò'íÐÉ0?zm’3nØõÈ–E/LúæLú¾yE—óPÿ Ç# ùÓ§ ´ŽÀÐ¥ž‰¹Öh «Øÿ a6 n Ç hþ£À¦®fÓ¨¨k­àï)š8¯v!·Ù[îþt­n¯ ï‡Îf[öKÊ!E a «Ü›(Æ´ˆ©Rø’úLa±Ž{(1} Í"ÓnO3Œ}=ÒçÒ^ŠôôØ‚¦çúav–.Nã_ÕXdD;å9ëÂVÁdc•D;‹w7J…èþÚ6úë5g.‡‰zhˆ<‰Õéû­äÕñ)3\(Ìv›\î€DŸ9®ÿÄ€iŠx8µC»»=m}õÊ;mt endstream endobj 405 0 obj << /Type /Page /Parent 680 0 R /Resources 407 0 R /Contents 408 0 R /Annots [ 406 0 R ] /MediaBox [ 0 0 595 842 ] /CropBox [ 0 0 595 842 ] /Rotate 0 >> endobj 406 0 obj << /Dest [ 422 0 R /FitB ] /Type /Annot /Subtype /Link /Rect [ 326 510 341 524 ] /C [ 0 0 0 ] /Border [ 0 0 1 ] /H /I >> endobj 407 0 obj << /ProcSet [ /PDF /Text /ImageC /ImageI ] /Font << /TT2 838 0 R /TT4 840 0 R /TT6 536 0 R >> /XObject << /Im129 409 0 R /Im130 410 0 R >> /ExtGState << /GS1 843 0 R >> /ColorSpace << /Cs68 657 0 R /Cs69 658 0 R >> >> endobj 408 0 obj << /Length 1741 /Filter /FlateDecode >> stream H‰„WKsÛ6¾óWàt"„)>rLܤ´QNq´DIh(’%){Ò¿Oo÷R²C9£À>°»øv±x½ ^®V±0bµ r'"„ ÒPçVÄKmÃ0«C­Û/ß}4bסÃX¬ÖÁG â>ø,¯T¤#y­`-’oTÿïié÷^¥:‘ë¦-E¤ª…‰Ò ôË…2F§R,±€Õ$†½­üDb,U*«ìÄïE}T&”E¥þZýж[¶Ýdd|Øîtëx2l Ñ<ù‹ZýR K…:E¹ÕU …§Ø‘[¦s¡Eò};¸¦î=«›±¼5H«Á‡Ô.uû½92°¿66ç­ö®è…[«Xg²©yÖ‹‚æÄü¿/¾*k  kà6Ñï”ñ#Wñ÷¶*é+\-†½ŸI´må÷â9z!†¦©nyÞ©XjÐ*Xè5ü[I»‹i¬±ï]­¹ÜÁqIØ ¾=¨*è4Bv›å)h1;n#¡çWTÍNåp¢ärѶ¸¡†Š®÷{·Þ3¡ªš{ÒÐÐçÐlܘS`þªÌI…¨‡Û² P‘( öv‘KAžöm¹v[·??´võ“·2e+y„V²EWŠ»s›ra+†}‡;¤²,9LèH±³ðßÛ^?ÅärL(12“$ѱG`Ó3|jó¡F/m1 Çs@Íâwe]vðé ˆ )<o@˜ùä8Â\+@²•5fqæº+Á{òÙJ§™­ ÿ€Ï¶8‘KyøÝÈ­Ã<÷íÂÁ…2¡£Ï¤åÅ…Ðõ‘E?0ØØHVâÛoxÖ—h¾xp×ñ¶,«±ÆÍ‘µ·^Æ•ÍSþ{ì0?ÐìCÓ•/`Õb’ÌÂ7™€‘pXÚ®Ùºªô8]7‡fµ‚QœP,Ë?-·®ôT®ž#úĺ +{à2ÈuÎʪ\`ìh `ŠŽËÇYÇ R*,œb ‰C\P¦Œ«191 À¤Œ,"ækI Læu¯¥ ÏKð+ ~o½È«'ØfÓÑÆ±Æ…aî‹ÜõA™jv±ƒ’¡sYŠp„0èÀÝ-‚ÍÉ$¯y‚«64ÙÉsòßœUP,h ¨Fߌt丑Gô"'¿¹Jæ\í@ãpÿ–´¸QÈ-X¸¡ Ëw`1¯ÙÅ+Çè–l.¯OóYV,]oz6§­:Óuhj74¼ŸøÏ«À'‚$ÕV,3¸, ¥uœ‰ýwe°ý-ÉF¢‰cÚs²… Æ—d‘˜MÂÂ眼´±¶Ù%áç©lrš£qL³`è#›æ‰£ÚyêëÕy•}RÞ–q8[_ýáó±·”ƒÂ¥;òl=øA‡ù‹ñgÙò ÕXê[,Çø"O1T<<æŠ??Äw˜OøÏ;„vÊ”È'JŒMÒc §dÌ*Á\:¥˜¸oxð… ¼Äzè&‰¸&U6‘<2*—±mÐ;ã•{Ö~‚/õÒê0»„N&^Dç¼ìˆN¦^DçÅÑ(£GhBIz²émR:G||6<8µ~ÖNg‹C<Û7P±ÜbŒ]m"ñ®À^ª#ö‰¤+æYÌLíÂXI#^GÂ$œo|€2®触ë§ðØäAegA¼Ý˜š¦.röŖKÑcÕïžsíõ%»u6.ÌÉ—Ý©w¢ªŸ¹QxÏçò "¸û/áˆha4+9¢ˆˆAtiS¶'²ß"¦…9Z2/w‘†Ž0ñ9OföôÄyÅ£ŸL}ÎÑÍ#u^õóTÈŠ§¹g±Nâ±I°ÖL}&âeË•E X1#¹Çj —¥8öÐ×xº9lý/ß;òë ¥›º¨˜ã8êñ5ϿۆÔ|ƒ·¯{nH•1n:ªl(i $ nõâ;UÐ!zŽ-]¦{éRÑ3×/ö(ö®÷è™ZfÛŒÊo6µªß>aLÈâbö1,ÐpŽÏê˜N—‹ñ û¡ãÆiKî Sù@ÿÔ ¦9ƒ5¾9ðt€ç~yVa¿N>Yüâ3ñ<ÿ "x´ð»‡G)"JMXX‚—×csqÕ@Óƒ¿n˜ g^x."j£è\§’›*Ø0E6Póu—¨ ŽÓ“ÿþöëÀXîŽ _ˆðÊKì+x‘X„-áýÍ2q5|ÏÕDèá²äƒ¸R#pA\;ñ«x‡ âR–,@1dx8EÇF¿1ÙhóT°ã9ÔxŒNrtþæ¿ endstream endobj 409 0 obj << /Type /XObject /Subtype /Image /Width 42 /Height 42 /BitsPerComponent 8 /ColorSpace 657 0 R /Length 188 /Filter /FlateDecode >> stream H‰ÔÕÁà PÚšäÿÿxI M ø2mó¡R¥G0ÚRèdÎrœ\ÊÇä¶ãŸÊë-`%j.¡$?Óª”FYIî>);'ïn©C‘uÏ>X Š-Ò…4¥]ªEgwpK‘º˜ébÈšíî uÌt $R!óÌȳŒkò¡hÐ_7²÷@¶{\¼ÎINT=—úKll žgF ­B> stream H‰ì׉bª8@ѦÅúÿ?< $$¶k]{ïÌâp hÿý³Ã…í¿‹Ú³?¸÷K5R¯öeÕúóõ»ùþ¾.›æÙ{öÊMÔ¾Çå³÷ìuš|„©Z7;U+k&W´Ê\ûÎæZõŠGãmZµóÝçÆ[|8›jãT‹.³;åŽ;£¿CWµþ Ë™ZÚ,þËâêìɦµùæï¬ÖutSµ‹TÿýùUž˜Ûjã©›nšâÑt`Û?Ze«þ ¡Ÿosµx|_;ÕÒñ%úMíÕ¦7Mö:/Õp]ëÑæj¢ŸwûÕŠ“o†ÑìT+ßæ…ZŸkWªf˜i͵qfL¦T‰ñ5¸2)_mýº–æÏx¡Úø-úÖ3´ü^¨ïÐxBF;¯íú6¨½@Ü2ç|5´ßk_Ùñ}ݺï+ÿz.ëmª¥+üÍGöIjÿU~å×5ë “æQu›Uþ`´¼QÍöÕìX½ZkR¤I5ÒTí::½Ñs|êMÔȾì·oŽöìn•j§öçx§ƒ»í#¼î\ChW…COíuÕÚEáØÀA{Y5ˆös:8ðDÐ^U­?öpí Z?ð§_nŽh—7Ú³‡ÃF¯­6 0µÛ÷j¡M"«½“Z7iºi~Ò¿aö7iZ 'hÜægi\Ыõ]èû©—w»ÞC-÷xô¹K¿E]mi\TÎÔÚ4ç®Baú(>Ó¾ºÚpaËgÊð_œ[ÞšZ9.0ª… ÎŒêmÔ~~ò#/Ž>ži£k®–Oªaƒ¨V˜œ¡ÝÚl’¥Gmv÷ÕŠ9³¢6>žÎÑšZïͽñ\›þ[8C7Ç–j9Lý Í.oí««…ø…—ÎÈŸÙãq‹ªÚ¸‰Zú½6~U†âÑÕìMÔ@G¢? TSM5Õö¦)ª5 íéC÷p½SRûåOã£S¤I5’j¤ªÚù\ls¾ÖßK‹´.mQ>ÿÙÕÔÎIæÜVnkj×ÿw¨} ì‚ZÛM¸8Å:•s|¢vXjçaý°ú'iu>[¡ÖÿtŽ2Ÿ>Ñæ\YtkÒ:_=yþýñ:ÍÕæ¹¼TÅy•z˜TÏi›6_oûSmQm<ÀLm>kÚ™Zuuþà“ÕÆkÖêu-ÝÕòëÚ8ײiúþlkg¨-¥I5’j$ÕHª‘T#©FR¤I5’j$ÕHª‘T#©FRt‹ÚéÒ±w;>â–¡7¼ÛF\ítj.]–»ßëøˆ[†Þðn›aµË>]o.û5ìV(ׇ6GtCCõµfCCz`ÿ¶FèµÉrBíЫ#ŠÍÕÚþ˜Ç™³P·_b£jÙÄŸÿð°;ºÊ\X1ø^¶îî £§Cã ¦W ã› £ö¾Û°‡ñAmôV¿®6ìÍ|®­«uVÿÚкZ|³£ïÖY¥{•ób£§ªe×µùM9t]­=®ÖO²…Ñ[ý¾Z‹¦2"üßP[ü6oö}ì™k‹ßËj+ß=¯ªVk›jaUmrg뺶þnÕºåWn¿L§L<7Cv,ë#â²î›CÓà¥ïÐ…ýË=Gíú»û4ü–ü+»¾>´:ðøþíï–¿C¯±{·å›?Ü×ÞlaäñýÛÛ-j7ÕHª‘T#©FR¤I5’j$ÕHª‘T#©FR¤I5’j$ÕHª‘T#©FR¤I5’j$ÕHª‘T#©FR¤I5’j$ÕHª‘T#©FR¤I5’j$ÕHª‘T#©FR¤I5’j$ÕHª‘T#©FR¤I5’j$ÕHª‘T#©FR¤I5’j$ÕHª‘T#©FR¤I5’j$ÕHª‘T#©FR¤I5’j$ÕHª‘T#©FR¤I5’j$ÕHª‘T#©FR¤I5’j$ÕHª‘T#©FRTQ³ífj¶3ÕHª‘T#©FRTS;[œÛJý“çK[[~d·©Õžü -ªu³èº8§'.ÎÃÓ¹Z¾å©ò·Awô°HçìéîqRÏýÕþ˜æj§°ˆ×®n®•jÃÓçañ˜ú¹íU‰êjåâÓ[VëgO[»®õ'×µsšˆŸß¢š­¤I5’j$ÕHª‘T#©FR¤I5ÒÓÔN÷è1»þLµæ÷k›Çìû3ÕÞã5«©FR¤I5’j¤'«…v\.Ý;úšèÙj!.úT[oª®Ëq±O-¤²×|@ÏVþk¨âÞŽ ´¿¬Ö¶ÔÚíªõ?œ«ûÕÚ íªõÏ=CÛâ»äï¨Í®f¡‡ð;´ÖD-~söfª-äß$ÕHª‘T#©FR¤éÔž~¿Wk›{ô }žÚ;§I5’j$ÕHª‘T#©FR¤I5’j$ÕHª‘T#©FR¤I5’j$ÕHª‘T#©FR¤I5’j$ÕHª‘T#©FR¤I5’j$ÕHª‘T#©FR¤I5’j$ÕHª‘T#©FR¤I5’j$ÕHª‘T#©FR¤I5’j$ÕHª‘T#©FR¤I5’j$ÕHª‘T#©FR¤I5’j$ÕHª‘T#©FR¤I5’j$ÕHª‘T#©FR¤I5’j$ÕHª‘T#UÔl»™šíL5’j$ÕHª‘’ÚÉÕžýñ½Wª‘T#©FR¤I5’j$ÕHª‘T#©FR¤I5Ò½ÕN‹m­§ÛNGÝ£»«5 µÍúzºílÔ=º¿ÚúŠÅõtÛo}{ª‘T#©FR¤I5Ò£ÔBÝM—‰0:>5Ý6T¶ž}µý+Ž)­ŸC,©…¶Š<úöjiŠG\S»,Ë›¶2/Çéò­Ó2½ÅG©…|ÅDmØ"n¸¢Ö¦O m}*§ŠÙúP¹ •³¹89'PŸª–ØJ‰ÂqµÙ â…>I-=¸q®Õ¶N+?Dmã;4ñôº¶ôÍ1½¦}èu­]ÿ½–Ô&ß¡uµô{­?ÝÓ¦÷º¼¢XŠ›ñîŸýÛ`iźZõWÊÍo}{/¥¶ñ"ª©¶–j$ÕHª‘Níi¡fc=Ýv:êÝ[­mÛZO·ŽºCwWûÈT#©FR¤)ªÙ±T#]Ôþ³Ã#ý?[› endstream endobj 411 0 obj << /Type /Page /Parent 680 0 R /Resources 415 0 R /Contents 416 0 R /Annots [ 412 0 R 413 0 R 414 0 R ] /MediaBox [ 0 0 595 842 ] /CropBox [ 0 0 595 842 ] /Rotate 0 >> endobj 412 0 obj << /Dest [ 219 0 R /FitB ] /Type /Annot /Subtype /Link /Rect [ 486 656 523 670 ] /C [ 0 0 0 ] /Border [ 0 0 1 ] /H /I >> endobj 413 0 obj << /Dest [ 453 0 R /FitB ] /Type /Annot /Subtype /Link /Rect [ 71 628 86 642 ] /C [ 0 0 0 ] /Border [ 0 0 1 ] /H /I >> endobj 414 0 obj << /Dest [ 422 0 R /FitB ] /Type /Annot /Subtype /Link /Rect [ 303 573 318 587 ] /C [ 0 0 0 ] /Border [ 0 0 1 ] /H /I >> endobj 415 0 obj << /ProcSet [ /PDF /Text /ImageC /ImageI ] /Font << /TT2 838 0 R /TT4 840 0 R /TT6 536 0 R >> /XObject << /Im131 417 0 R >> /ExtGState << /GS1 843 0 R >> /ColorSpace << /Cs69 658 0 R >> >> endobj 416 0 obj << /Length 1404 /Filter /FlateDecode >> stream H‰lVË’ÛDÝë+zÙM4RËz˜a„"d¨ˆl¹=È’‘ì ÉoÄŇð…œÛ÷Jñ )WY­û<÷ÙzQ×UµR‰ª¶Á:Zç*ÆÏŠ8Z[µÊ"Ç©ªöAìyãCpýýÛD=LAÅñJUMÒ &ƒßôI£T¿2 ¥ú[Sâÿ'½žLåºN¥QÅ&LÒ¢„}š$‰ ­²B… æ+ø¶úW¯ÆZÎØ(Ñ£z]÷'“ĺîÌïÕ„Ý2ö$›Áó‰ÑY¾À÷ mAxc‚ªˆ¬©þ ¹Øˆ2›§0QÝHh%â$ŽV¶ÌYÀ›£ ý®u¾ŠJíÆ™d5± ËΘl%ö“Ïa%þD9|…toB­M¸iǤ–ß&¦H” KÐ|¾fQÞhȬ?Ô—âÎ$äèNo[ÆLPÉÁ¢·”‰wæ Àœ:tb¡nÜ^¼÷"¤1±e Ïu?½<‰€„Þˆ„„3ôgu‰ÚCî]'¦EdÎÙÿL¿kŸ¤âu ×`9ôFòÑ«{ç «0‰’ìs©×\¥ØÒ‰ªÔìjxC¥ÖÈÖíIMºÖ›H©j' 86aJJ¼§¦Ç³f꥞º‡†ÉnšÚþá|¥Ž;ø™º~ߊ2kÕÇvèÕmœ•Øë7¬r;:ô†*6ÞYü-žî¬Z`†Ï2¶³6í.Q^$Ãúëk¶> 2ñ±Äϯ'vé‰s,t–Z2=ˆ£ÃI ,bëÉ.-–]ZpΨˆÛ–¶i*[ûÏ¡íÂ5WŠö 6Cï?,¬\•*Ø+©\e[Lˆ¬œÜ_Jt×)q¦ô%â’;Ãíÿ]$Š~ø MT«‚d½ŠVʦh(e-¾‹T˜"(5º`¼¨.>ãž~çZt½U¥-ì³] 8³Ë®•~yÙb²ÉÉЋæÉÓ¯±¼­þôæàIGC·*K « &(——{Pÿ°‘wL¾siLryÁrÏð8ÏYø+°)¾qVt ^0Ë‚bJá­Ä'z³®_í“4Q7CðKðß¡Ó^ endstream endobj 417 0 obj << /Type /XObject /Subtype /Image /Width 310 /Height 421 /BitsPerComponent 8 /ColorSpace 658 0 R /Length 3798 /Filter /FlateDecode >> stream H‰ì—‰‚¤* E'¾nªùÿ~¥@PS‹ZuÏL»°ŽËÿÀnèßöòßÝÚÑ7îzÀš…`íì [ Ïëïôû;o§éèÈÎLeí7oŽìá¥ð·ìˆø|)£pœŠ …ÓpõàéðBÖØW¶–Ü庵¬¨8¢˜ˆÒÚ_1Õg©äôÖâÂ&3,þKñ—³éZ[tQqÈÖ¨’Ó¨ºŒµ¿"úÂZzd²WiM&U|D“5âGv¦zBËÛ$/®s]kÅÍXËçTœjkZSSr5kõ_ç ZÊ÷@ñNˆÍªwh÷ ËÛé­‘xs¥wf}.ßmеøÎdcü Ô¿×òpTNt•\3°óÓÀþµ{`ͬY€5 °f!Y›aß%ºÔ)¸±µ×Ü”ÏÖ,ÀšX³k4kþŽÒ´.Óšù\£ ñ)¨Ö”vJ™WJ}®Ù`í²b»ÖÂÌ—lòáÀ/GŽ3,µÍJk!s÷^ž8=¥¯@a-ü³Iù¢ofÒZU¦­®Êø9r ­µ`Rä›Ð¬%C2ëÊX· ¯¹ôí°¦çZÓ¬ªÑÄ×wárŒ­9‘á/•nd³*׊u-çšLÏ·Nø)t­°fÖ,ÀšX³k`ͬY€5 °fÖ,ÀšX³k`ͬY€5 ck·;ûÆÛßã‘®\í¡Þ#k·Ûtç¾ÝÇÞt}àjöX»:ïî#Ç©ìJT(=Š®¤ŽÕt%îÚE¿Ú¨Ç¸·—ÎÐZuPŽHÚÔ]|I×Z}°:=¾­ÚÚÞ;º÷­‰ÔM÷ߥñI¤QH*-zD¿÷òå(öÖç )_,öZé’ïQˆ0líM²7wÒò×`XD5ÜØ¹è«Óµ9ä{Ÿ{­Í;_MJØÚ›doh£íÅÖĺÖ¨¬µ±¯Z I¶§7u}Š5¢nÂ(¹–&kEkN9å5¼ òNY,”·Á–\ë¾ w¼ß6kzoÍšS0ZSsmðV£bu2XÛ{5õoCïGŸÐùw`Øò#“žMs)C©{¤-…ˆ¨Ð0ìÊ{ïÐN|¢ÓÐZ?ÖlBm,øF”oƒð„údOn\ÚäÒc¨@k-˜Lz„«˜f.l¤µoc³5Ïr8Ó`­k­ZÒxYca߸®u­m¹f±æ¾0Õž`í5 °fÖ,ÀšX³k`ͬY€5 ªµ›ààøÎ‰nmbÜtp€§¤cëã!mŒf6_Zk9¶FñÆÖh§µíMG#ì®z;Ck$­Ñ|êB&PÚ-sáô ÜT¶‘ÄŽÇäXM[½ô!Ñ·ðÝô¬%CÂZú“JrÎeiÝAíÎw£¶Få¤Ô’ƒkËDd®Q6\^•Ä_–A…“Á®.'Ñ\«y?}káîëÖB-ßw*3E±–l4Ohm­`ÕÚùžÐŽj­wÃûÖ\ÝFu°ßZ9öÛ­kKUÇ»JNÕ´o»Ï&ꆃ‘ÞÎößkåZîªÛ.õwh1žA.Žš‹ò ßT+ßO úÙ[Q­¹IÐï»ëK`ÄÓzº50Ö,ÀšX³k`ͬY€5 °fÖ,ÀšX³ Z» ŽïœèÖ&ÆMxJ:Ö¸>Ò̆áH©â@Eò¶{-¼‡­Öx3¦#£j@}k£ë\Ö-›Åî^‘jxCU­ˆÚÖÅuª~u~Í^k1MÚ¥³\ÞÔº<󺡬ÖFí>ñ‡°s]";š‰) ¹ªÈ›ÆšX×Ôtöäšã‡‡ÄCÎäüHK<9ç¦!»âFå¨ùìX¬åÞZÊ©O(w`Ù%SW]ã­u—·î"§Z+×­ò:úz Ö:ïÐ<Õø¢MO¡“Zx]“ «whh&u^ã*¾©ðm  Zs“àØøÎ‰n Œ5 °fÖ,ÀšX³k`ͬY€5 °fÖ,¨Ön‚ƒã;'ºµ‰qÓÁž’Ž5®‡$¶Luº4esñL/€nÅ™[#¶FátL§~Ø÷ó¬Q¶¶Ìnù£˜Q±ˆD©<™ë£¶VV¤³ Ò³,¸ÆšðO³Åü_–gke…ðr ¬-©×µ™®50Ö,ÀšX³k`ͬY€5 °fÖ,Àš…ìÝ^Â{b?ÐÚôÜôžà´v•A`ͬY€5 °fÖ,løœº-ëºAKXÀZ‚­‘£yË›yËeqQÇ#}='°FQÞ¢ƒrYYRÔe ißd͵fÒÎuêRÚwZ ó—Ö¸¤¬“ißi-ÔTi¥ÕˆGö[­‰uÍUËžþ„*ƒ¾žóXkß¡ùPÖ¬õýz3ú/çŽs-¥âï@ù6B¢«´‘Ç ÁZQ|ìoöwÑZ‹BRšIkKB­}}kNÍ5k®o×­`ƒ×µ¤'ÖçeO<Ý\Ûÿ²—çs¬}MŠ1O±öuÀšX³k`ͬY€5 °fÖ,œÝÚŸWG5oÎlm²k°¶X³k`MÁÇ¿²ÄyŸ aM¡±æçSQ k3**òK²¢.X«ñü_ìX ·Y⃵„ç-ûs9Ñ|nk‚¾µª ¬ Ö­ñ¬1Ò•4æEƒ¬1éêukÞó6X³k`ͬY€5 °fáÏÆ«£š7'¶vN`ͬY€5 °fÖ,ÀšÅX§±6k`ͬY€5 °fAµæý°¿ãdŸ‹›¶Ê‘vz-4k~eNM½çmÓÏ»O¡cÍ…„[’Ê‹“Tï—Ë_Y‹í¹Êç䔣ø|ä}l®fëQ¾ Ø‹‘'®’kR±(rÛQäQy±cú¯ÒZc™bâ!ß¼´ÆUÅçs{)t·µsÓµ¦Mщ)Ö¸ >¡iÖ<·XK™ã%ªÍ5έz]KK–-ÊGÚ}¢5ÐÖ,ÀšX³k`ͬY€5 °fÖ,Àš‹µÛ;9e&kÓûpÓ#8»µÛáÖ´`ͬY"€5K[­y±c&¢8*Q8!Ê…»wƒ˜ßAÈC¹æ9ä9fŠ1Š£"ôð·{7¼Óo‰  ä%ÖR˜EÌb¿{·ÛÚÓ#x¢µ{À1d=fwþ5ÖÞÁ3­qÈuÌq=¨b~Ž´2æ÷DðÌumåNÓt µçFðLk+« ¿ºž+mµ'EPòÚwh\‘Ÿ+m‹µçFÐòüßkÄGeÌñ¾ïÞí°ö¢Ú@ðmð¬`ͬY"€5K&kîö>tkG`±æÞx§'ÕÚј¬}=°fÖ,ÀšX³k`íöË@·A¢2“Âÿÿñª­1‰c'åPº‘Þ“JÚž]Ä#ŠàX#ckäEh Öh A­íäÙÚ_Ÿ¾{Ak´†@k´†@k´†@k´†@k´†@k´†@k´†0ÛÚ2ÊÑZÛ5ƒéÖ¶€´õs´¶éšÁ|ký ÌÑÚv}ZC 5ZC 5ZC 5„wY‘Ÿ!å­1!mëñ•­§ºm½¿5)^Õ1iÞŠˆ¬Ir%7­··¦Sì8bÏÚc[É™—Çt•²Z·º‹¥¬IkÏŠ\ر–ô huqV–³&UPäâ â\ÍÕÅiD­jMµÕ&Dä¼µ¦©ú¡•¬é‡‹sÍ«Öpkƒ54±½¯E+‡½§-z_Kýç5µfÖPßš>¯ý^îZºÜU.Õp¼ýØÿQзæ>¥\Þõuþ•µÁЭõ 5ZC 5„=íÛ Gkm× f[K[È(Gkmצ[[ZC 5ZC 5„lœƒÖÖ¾Èi„ | 0·RìÎ endstream endobj 418 0 obj << /Type /Page /Parent 680 0 R /Resources 419 0 R /Contents 420 0 R /MediaBox [ 0 0 595 842 ] /CropBox [ 0 0 595 842 ] /Rotate 0 >> endobj 419 0 obj << /ProcSet [ /PDF /Text /ImageC /ImageI ] /Font << /TT2 838 0 R /TT4 840 0 R /TT6 536 0 R >> /XObject << /Im132 421 0 R >> /ExtGState << /GS1 843 0 R >> /ColorSpace << /Cs69 658 0 R >> >> endobj 420 0 obj << /Length 1728 /Filter /FlateDecode >> stream H‰¤WÍ’ã4¾û)t¢dŠx,YþÛã†bX¨õžv8d'c*±ƒí!ÅsìÏKÿÈŽ3ke ¨T9¶ZÝjõ÷u«u[x7Ea„ÅÖ˃<!üè% ƒ\ : #Q¼díλùþ½»Î ƒ04¢X{ |'ï£\úQÉ;Æ"ù­ŸÁó Ýw~$rÝKIú ¥Ø— _© •"ÎÄFkkùÔX«ôu d+îWõ“¯B¹Úû¿?¢ïš}Wñà<¿±÷iœŒî““:ECtUþD~ñ;ÚH¬ ÖI&Š%NY{RØ v‘00:Kì°æ8룼mßÀN¸¥ “]ÙîÙÐ*;éÁ1JOcSðáòÎW¸ç#™KÑ?–âé à×±lÅð¾‚Ðä²íE³…IU'ÚÒ_¤ ¹ósxVþ"‚¿®¿P™L(I_ÿò5i>Z£'Þðaðk¡òÉ,’¡(F?("§ÇʺÊÒ /Ö³jß• Di‹Úmrhþ‡½c슯'T 9\›ª;îäò‡<ÉÉB*7o^¤ D^QŠ‘gR~ÈwKËü±4¤F "ç™±‰ÞpÕ¢Ù!]b¹:|3*ÀâX.›f»e× ÷=„¦à¢Bµ’ò½í`TÁ˃O¾~WxJTÂKÒ@‹$‹‚R)0P)èÙ–Þö5Y’ B…N¥*3A˜¹tQ'ƒ4Šrü›ÈcmíÔ¾.}ÖÆÊ°t|áÕŒtbwFz[L«â‹²“Äi]ÔÃlB›eÙ­[ {,H»Dö>Öa¶k¨lõ‹º6à 3òÂ\ð"!^l¨ÛH\ïØW«]ÿ´Á¡R9%Ð冞˜‡†¨ ‚j¿ª­­u9p)ôJÜ@,[¨ZL¼KörÔ¸¨ÂB'Uæuª°ÔMçÊèUFg˜ƒ óÒÑî¬ô:LÞ” #tÚB÷ œßXr{¨Pˆ€ÁàÖ]-{qgß¶\ žØ/˜·B T°ãÿ‚p#hà4¦”Æ6â Ät Pç š@L¨í± É%õ¡øÙó¨à/h“úê`‡zxU’ŸCû@c’£)hsÔ8a´Ô±–æW#wb¸Uàõ„¹ÃÔÕ,¢é/©£Œ±ƒ:,tRg^w KÝÔq®L^9y3#:[üŒ Cðô*c~.OXÿ¯;Àr‘éÒ½^Ò±"¤líý#¶áuyºiË5ærNÙøýYnqÈúoZÊ~Æ ®jìÖ0wÛZ¯Äçºd'nwòYT릾š g×H2'´³š²$tëZRç~ñKh祣ÙYéU€ã NðlRè§-á[_áQ[AæbwUÓÍQ#¼1 ÿ³äk" µ…êÕ¡´‹ÀuK¾–;RngÚ½ˆ/K¨÷"{ã<ÅmÎ#l….ˆºc+u‚ì^™½2ÎÎß!Ø‘^G9ÕöÔµ(§”Z}B|áæö: Ùhv¨Ý6öhpEÝ_œÞ %5qÙØµÛûŸ–6S_Vßî9‰«Y·B'~óº~,uãç\™½R_–R–A“9|· wÃÂk»™YsÎ[öÊÒ«{±=Hçm_—*¿vç)à^&´¦',²ˆ`-=CÚœî0ð£•k¼àB:¶,!IÁ$ÐdçVÃrñmh,wOÀæT¶%ôHoàò¨åçwGÂm,yÜJЮ&AG7g±´­NXíyÞNüÍFn[_j|‰ÁpêeV±lŸÒþáéHS~Â/‚: ñVI$ØI…p}ðnî*ÒbÙx¿zÿ ü€¼K endstream endobj 421 0 obj << /Type /XObject /Subtype /Image /Width 310 /Height 421 /BitsPerComponent 8 /ColorSpace 658 0 R /Length 2914 /Filter /FlateDecode >> stream H‰ì—‹‚£(E§˜2ùÿÞÈûQ½½=*¹§;*<)@ý"‡‘_†å÷ËÚÙ?Üý 5oí‹ [óãõùógÛsvÏ®LcíOޞݳëÐ,ÒZsiö‡ÖjL3£)¹ö§È5íU¥¼O¡ßÞÿ·øqÞZË©½tuÅû.Tçòج‰ü ÛÎZj?¥ .*MuÖÛ/¿³5'Ì©k­½Lùõó«˜ï­å¡›v¦*µ'ÆSc±jÿ¯­¼ÃPŸo½µx_;­¥ûÿJôvµvgŠë\Š0¯yi½µ(ÂçÝ~kÕàëd˜Ö꯹ó\ÛT™ifµœMJÕ2¾ú'Iy=móy-åOž¨Þ¬¡ÕMw„Ö¿Ã…x³†Æ•í|^Ûµhˆ-KW“öæyí«¸¿¯ïö}ró×ó2ç­µ4ÃûÎV²ö»ByÊ­æ5â†þÊ5S^II¶Fö­‘cxk–€Öh ÖZk€£'b_tŽÆÚÃÇÝÏ›:Úþ‚ÔÖ¸ÄÃ}þîæhû|Öe¨¬AÒ6k‡$mqk˜´—‚c޶¿¶5PÚk^?&áhûK[óÒdãØ%¼ùë·²ãþýþõE{tɬ¥Ínjk{²&5ÝÓüNÖÄmD|Mø„4ô;‰rk ³HŠ:ñRXË–SÔUmãá¬%_ÙZt—[8:kYQu$éþ«¬,¢Ò–bÍå­…‰­Ì°ðs«çXsºäowû…5iäômïb-l4kqhf¯Ž4»R*k’ô(#´ˆ6m«ÓîkÍÚ&å½µ\–ª¬[«jUºq®µŸÁ Rݲrûí:¡ÅôvykWH›×̶œ[ltÖâ“XZ«Å°{^ËQ©ÛŠÜ%׎>êC¯´Fk–Ö0h ჭ™à%ÌÇñHÖþ×ßbqh Öh ÖTkÏçë£4~>G‘¯ŽÇínfí9ºç§9s'VŸE`1Ö\^Ù˜uÑ¡·öôÕ>öôùÂÏPŽÿ øƒgºèý©¬ù‡ð4BŸ69«­•±œ]ÙrÛ ¨±Ð{Á•è­%™ÏwÖ¬bí™æ=ÅZN¸{3´ÖÝóÿ“k©Ñ­çZqïi*óõϲº0ds¹ÿ0Éùs⠸Ĵ6¡d­!Э!Э!Э!Э!Э!¨Ö'÷ïšèÖLš“;xIÖR<JÜnÿÿ¾§W±–+>ÔÚgk£5ZC 5ZCØiÍI ®¡»­ÙðŒÆçµ ÝZñNÅwÕš5çöïšèÖÈZC 5ZC 5ZC 5ZC 5ZC 5ZCP­= Nîß5Ñ­™„5'wð’ ¬¥x8”Ùu¤<š¶\¹5IÖÒæ-Ë+³o¬ImÍmCÎ¥«Ÿa[i äv¾n9FÖ¼ÛY“vÚ»ªÁšãubÍeÉÄZYÝ›¬êVclÍ­ÎZă´¬¹¸–k¡5m^s¡f Òæ5ûQÖ"Ý󚺆ڼ†Úf ý kÅ;ÕþwƒíŒP­YS°ûRoÌ¡5ZC 5ZC 5ZC 5ZC 5ZC 5ÕÚ£àäþ]ÝšIXsr/ÉÀZЇCÙÈg‰û¯‘bΙ~³v»0·&ÉZÚØúÈ6uó6}û{2µ&½5—rÛ&^G±Î† JåÔ UÚÙ5nÃÈZ¼ÇÆš¤]QÈ¥¦\6¨®q&Öܯ¯ÌkÝÛÆšÕ¤ÏøwalÍ[*sÍH‘J©pÌZu »˜5o¬u£Ë·¦ŽP»ˆ5ï­ò䈵Us-ÒÐp×a¨ÙjBïDHc,ÔŽ®qtkÅ;ß Tk֜ۿk¢[#sh Öh Öh Öh Öh Öh Aµö(8¹×D·fÖœÜÁK2°–âáPŠmDÊ#i£K3·&ÉšÄMFš#ZóAQ¬‰w÷Úæ’K4IÇë3²¶Ø>i„ú?›$ù¶žbiM|j­E?Ò‰[Ÿ±5?ßXóÍh-[sñ¹µf„ÒZ¸ýüä!]mèØÿ¼&iLZkÓŠ)…ÐÏyfÓ­ïTÇÞ >Ùš5G®ö!ÒÖÈZC 5ZC 5ZC 5ZC 5ZC 5ZCP­= Nîß5Ñ­™„5'wð’ ¬¥x8”â´òØ…mnö*4áåØk-m¬m}IôÈ¢±æ¶.çò&Ö×Ö\…ocmÙrŽZ“´“TmË!™¬ÅOÕrçšÕ¬µc·ÓZ¡ÁZZ ¤Ì6Íš¬6D¿7Bm *óZ•kkqt Õf+Ÿ‚áŽP«<¯ù§±f •œQеOYC‹w*¾(¨Ö¬)8·×D·FæÐ­!Э!Э!Э!Э!ЂjíQprÿ®‰nÍ$¬9¹ƒ—d`-ÅáÛÖenM’5ñE Z³•5ÉÖœ÷‘`)~¶˜« …$YVµ9²ï½µ&¶RhSmŒÇOÑ`=&Ö\¦äy­–þªX©jía;¶æ‡W±ˆÏ¥0D;kÒÝO¡þŽ;k6”µ\³µ5»l¾Íæ5*ž<º\²16¡f-Ò=¯I~)¬kèçŽÐâŠï ª5k Îíß5Ñ­‘9´†@k´†@k´†@k´†@k´†@k´† Z{œÜ¿k¢[3 kNîà%XKñp(¯û'{­¥ Z³G­…\sy÷:r»ªTÖ, bMÂQ_ªjæÀ¼f[k¶ËÁ.°(P®¥¥!Ž×Æš¬>DÑjÛÌjrmm¾3¯å ŽÐkh,5¹ö©khñNÅwÕš5çöïšèÖÈZC 5ZC 5ZC 5ZC 5ZC 5ZCP­= Nîß5Ñ­™„5'wð’ ¬¥x8”ê¤Yé#˜[ZS™Z“Κˆ¸’Û¥ÒÇ1²¶ùØ>µµ És霞ŸÉÄšK¤~„Öºh­¶æa?B ]¹ôaL¬¹¸>Bm™d´fËyÍ…ZkÂymÿóZâ=q U¬ïT|7PP­YSpnÿ®‰nÌ¡5ZC 5ZC 5ZC 5ZC 5ZC 5ZC 5ZC 5ZC 5ZC 5ZC 5ZC 5ZC 5ZC 5ZC 5ZC 5ZC 5ZC 5ZC 5ZC 5ZC 5ZC 5ZC 5ZC 5ZC 5ZC 5ZC 5ZC 5ZC 5ZC 5ZC 5ZC 5ZC 5ZC 5ZC 5ZC 5ZC 5ZC 5ZC 5ZC 5ZC 5ZC 5ZC 5ZC 5ZC 5ZC 5ZC 5ZC 5ZC 5ZC 5ZC 5ZC 5ÅyOgì„Öh Ö’µ9@´vöÏw/h Öh Öh Öh Öh Öh Öh Ö~ÚÚcÈ»8Ú¶=ë'øqkf€5ó8Ú¶;ë'øykóÀ0޶ÝñÕ߇Öh Öh Öh á_Y·³qÛ˜þÔ\Õ¶¥uêý­Iñ©î)Å{#kbUÉÝ©··–R,ß±fíµ­wVÉËœ®R¶NÛôKY“2ÐX -bÉ5›~ÔºøU–³&U ˆ‹²e4Wƒ³µªµ¤­6!"Ç­u'UZÉZ*|3×´Ö)¸ˆµ7kh¼ãv^­휶è¼fçÏkÉZ³†êÖÒóšî©érkè8PÅ¥ÚåÃ}7æÖÔ§”oõ÷¹”µ7¡5Z›Ak´†@kû`ÞÄѶíY?ÁO[³fÈ»8Ú¶=ëøqkKBk´†@k´†­‘cÐÂËÚor!ÿ ð‰*- endstream endobj 422 0 obj << /Type /Page /Parent 680 0 R /Resources 424 0 R /Contents 425 0 R /Annots [ 423 0 R ] /MediaBox [ 0 0 595 842 ] /CropBox [ 0 0 595 842 ] /Rotate 0 >> endobj 423 0 obj << /Dest [ 453 0 R /FitB ] /Type /Annot /Subtype /Link /Rect [ 312 109 324 121 ] /C [ 0 0 0 ] /Border [ 0 0 1 ] /H /I >> endobj 424 0 obj << /ProcSet [ /PDF /Text ] /Font << /F1 661 0 R /TT2 838 0 R /TT4 840 0 R /TT6 536 0 R >> /ExtGState << /GS1 843 0 R >> >> endobj 425 0 obj << /Length 4285 /Filter /FlateDecode >> stream H‰”WÛŽÛÈ}×Wô#X\vónÀ¶g¼pÖÀ«$ãEÀ‘(‰1E*$å‰ÿ>§ªº)j,É®î꺜º½Y-~Y­b¥Õj»(‚"U!~ü’…AaTœ& #µ:,B¦õ»Å/¿þ®ÕnX„AÆjµ^,é ,žÞ‘÷ÞÇZä½õsü楃Ÿ©·îޕЂ4ý¥Ž²ü½¥¯uy*)Ô«iŒ»÷7>&§*ßÚëÕDz=ù:ôÊÆÿcõW’݈ì:géð¹³$âIpÈ’xkõ/:•Ê)Ș§έîž²4ãh¹Ž"¡±‚aB|¼·]»­w§Þ_’|åXw- £g?y³‚„YÇ"ˆ°ÑÄÆ{èKYt cSÈ},ñ5Œ¥Ÿt2½IX9'‹¤ÞÕMeXÿòiHg¬hiVY:5„íã0o¾nU·Û®?Ó;™³{ ïíçÃÚ_¦ðyµ­*ùØ÷oPc§úS«Ž}w„_i­êØlêíÖ_fü]µ£ü¥ÑàûÃ׫àè„W¶y©[yÎÚg;²ýCµÔÑgE¢M˜ÓiSµßë¾k81¨zPÃØõÕ ªR u»óa¯Á5¤\ø%žZ“Qí’l8ñ½Öój 3«¯žÀñKC™<™¹RÀw÷ž SëíîÒ7yŸ]«S+y–Ç"ùW߯ñ¯ÔjéÇÊO‚Øû¹$öF²9hl¤-ï&ÐkÀe\FðoB¦ÒÙ3hãmr|_•0<Žu- ogÎ9vÕú½âÏÍ©¯[ëa2vûJ•ÇcSÛb­a,ûqy:$Ö-ÃðBÕòãЫUo!® ÝmÝIíËï<œÔ¡j8®li+v3l@‚î¯ÈrFˆNÎjgVm~#µEb‘pÞ‚+1`_±ôŒ…‚eÑÞ&pŒMùßBø®` ‡$:G‚i‹¤bŽ$lêðì¶e{:± >Z¤ˆ;k¹¢(pYϺFX®9Z²›$øï©©[@Jý&¬+ª-g ?ùTt ¶K5=RX7^GJn=jèô]—ƒÈ?TðØX¯^ˆ¬'Q 9(0 ø[Ý;¯Ùd63Á„ ÖÐX\äs\”vÉbQö‘ BD’+ˆ.—Uk:ùB18X¡Õ_¬"éÍT—ê %!õȬR±RG©¾Ù±^î(OœŠ4¸rø÷©$åõÈ¢¦^¹žŽŽÃË?Ä+ú‚.½G.½<5c}lœ[˜‘Ø›\+É›L–‘ÉØVˆîRlv/9á“6æS?È„®Tel ±Lâ–ÈÚ™fÓ›ëéGkç m›'²£µ ±€ÿÓ=ʺý§3àÿ¶àüzåç,…ÂQHôR Ñlš:/þ|Ò\ð},y«FÙ%¥AZ€“"””&¶k~à…=µ+¼"P—ÅÆî—ÏÎ?K@ Ç0:ú~‹O­®Å´Ü–¸Žß[æ'ʲ(x' ø†5 RŠq`¾ðocLðÛz’õjË¡‹ÉÞ%æ£ëZ+æÎÏÙ4êòyÛ÷ððëý§û/¯?<÷a¤³!ž¼gYò ·ÖA çˆØu¹x`Smy­–µ¶â}ƒ¨Ž7Ò•žãHu4Güî¨?Ùýè0:9~Þßtk¹«¡FŽ’[3¦>Ž×rÓ Å¹°Cjg\{²‘«„ÑHÈ{œ¯ D”QÐå?ë_~Êj›ºG t$ÍÓÚɦ³ii]6(#*ß7‘a½wY Y"FøÕüu¹^µ_T\›¦{²FÊ ™lR"ØÕ¦Øá1ð‘êÇŠí«6S2¥õ-ÊÓF¹½²&Yëy¾`›ó¬el»¬B#‚,á†#w‚7ºè—Ïg$OF~“) JÑD;)›O¹àw˜EZì¨×Šbòüo4ùu›ó&u€yTä°Ôßý”,ÇÅ:‰eThÚ|ÇëÕ°îAÄo}´|…—§ûÕB«Z- ËhrRa“» ÀßW šb² ŽoQ ù9¿I-°r‹˜ £˜›G߬f‘X¸I¯8zQ’i|¶ãÔ2„Æzë5ÙK{¨Ö„gû°í¦|š"MvùÀÞ.ï|!¥>¸¦EwDà"AL|–¢0¸×7‰…;y3æ¯u!ÏÄ[ý¤ x&ÞŒ÷«GEOƒ1·ÃýÙis‹,ß :©no…»Éì¡ o{)ÜÍ{"áNY£XˆðüîS-¯P5µŸÙVµL ¦ÁœSO€@¥Ú¡wñÞÕÍXõfwAæSØ9Ðîä“Ê[êµóÄšXɶsÖz’pJûvÁÍö7‚7ÖçÒm§^¥î¿@õØ“ÿÏý K“è_¡£§è¸øjê€)Ö>ª¾ïzÌkø¢9e·à²›ÙÿR–vr˜Ê3F‰Y{Çé4FÄ“›²È‰öÖ=Bó‘>Áœ9Eù+š R®ó)5q—м³™c–J æTZ ŽbjÕ‘eZ»y7™·’}Ô 9øí韪x^M}õ$QÔ"A»¶6–»ã©îÉn™}Í—Ïì`í}ùêÏgôlŒÐ8cDÆãý§wtbF{¯TÙÆÄ^A›^ÚÂæœ)­¾š¬t:Ðæq—›r—K[ ;1gtå<ɺ +fÍi?å@ÊPÙ^¶–•& '娸Z2ý—OV)—p£Ì©’fN•;¶Gä½ù/åÕ¶Û¸Cem 5¤‘F–Ûlwa´Ù òÔ¼¸ö$Ök’ t÷7Ú.IÝì™}±%!‡sá!ª¯'”­|ñ ûŽÅ óù¢·Æùòé¢F£TrÀþ’·ËëdN³d=d ž^Õ¢•Sã:ãøÈxŽËÜok6ôYâúøpµ¦± fšF¨wк²mh¨mƬäáBº0¯ü†]U€‡ì/uã«Åì|Öz>)Öõ*®ØÚýŽ.Äa^›låÀ‡‘âôZ ¶±ò1Öú¤h¤@Ål¥B)+Qc]oŽV\°¢ºZmÂ4Ö4„À¢E‰’1)ÇÔl—hVÜû–O\~·œ ÷’y5èw$ —Ð~Caž8ÐqºZŽºÌêJ{3ذ¢:ò¨ CfÜlâc½Ó)åE‹§6Ÿž6¯ÞEÔÃv·óç®ÝQtFTÈŠ(‰š×z™-ÔöÚ””C™VÊûÊ|æE¡rçZp“š£s-„•ÒŒ9(ZÕºRD3)›Å#—âr,ÅÇÁ@¦m'Mx*õÛö¿ðHsž}Ô!;ß¶¾å¶WC’X¶â÷"£À‰< Ȩ́©(Mª´Z1H;4/ròz”?,ž¤•™35é–àÕçå#X7^Ù[Fˆ£Õ`e„°qÏ‚Æ!b«Œ h”ÂÆÃzãMk,(Ú²FÀIHÿ£aMËt•än¨&åWïÏ TqùÝ.S¦TòÜJÖ¥ …›îj”¼.Ϊ%«•u™™µCëŒD]sY¢"…è¦ÐÝVÌQ,ÔÚ¡CȬ[l¤/8²ÅQQ­¥[ëeØŒzsåôC›Ù-ÑG¾M&kÌîP÷°ø”AæÜœvê³ álàYHÄ¢žX×Uýl2doº“ù"“ø3ï5cI™_oÚØ„Ù~'ÀdV7æÈOœŠ¥ÊUÊ-XE„‡NHS5Å=m啼ʡ‘—~_6ÎY\ë ÎÊ転:XÝïåã…ßšZ¾ŠWÓi„ºs˜‡¬Ž†… mÄ×›ö4ÌSJI/¬!DïÐ%“5dB–E?dÉT)£·Ê[¶™tL#,M>Qs¡lçç´–RNyŒÖÞA«Á6Fkc¥5E#´³ZS4Fkãa½CtËk1x²¤ <B'a…àn£=ÁîæÔ£Ú‘ÚÒ!¥RM©ûn6’4Vwú ¹¶. ï(£A€·"¼ší®óMÝ õuõŽž2[t]^˜ëƒçKÔ»ÝêÛ×þ®gEºü<6Áw–u‚¸2Ò¤s˜,N,²ª›àÍNãí#íÔT–‰Úéçp)!6:aï”g¨Õ°ëü^œÿ€„ Š“9¥°v•'´éWyj‡Òé,8@¹£“S9Áû/¿ý´Lq¼?›Z)Ÿƒ8ûæeÉxjˆTSfD´_{C±3‘ÑbŽ2úÒhLûM@º¾€•¼ë<¨]Mã§ß_Û\ÂôÞlVVô!×Cî|ñÖèë…aÓ½ñ?_.´½ŒÒ÷n[Z=rÇ÷¨`þÄ-’%ü·dN{έÖ6DÔ)èÈC"ŰmOŠ‚FI1lÜ“¢ 1RŒØ*) %ÅèŠ%fÛfîÉõ‚CðdIAx:„N Á±†¯ªh_ßÓ‚P.ªúDc©ª:@T]Xgqzþ˜W TŽ*¹zßaÀ› ~~V W¿Ê6Éq›)ãH¶4Þ«žkü|žKoP±|ëe‹:}>×OÄéAì‰Çžˆ‰õ~oXþõtT”J~ÿ usš„Òâ2‡Äfþîÿ½QÓnÕéÞ¥¶½;7Ü-§ ^š£ S"s$’¨™"¾{C þ;í¯+©Æ"w›:q´l£©6îSGÐXêDl5u¦NØX×[ŽÊf$F&`é¢}H"g‚Eé'2£ÂaǺÃÆ78ìYá°gÝ~£»qÌhį€ñ“ ;V8ìù]ð¿Xæ× endstream endobj 426 0 obj << /Type /Page /Parent 680 0 R /Resources 427 0 R /Contents 428 0 R /MediaBox [ 0 0 595 842 ] /CropBox [ 0 0 595 842 ] /Rotate 0 >> endobj 427 0 obj << /ProcSet [ /PDF /Text ] /Font << /TT4 840 0 R >> /ExtGState << /GS1 843 0 R >> >> endobj 428 0 obj << /Length 6240 /Filter /FlateDecode >> stream H‰¼WM㸽ûWðH±F¤¨¯Ü23‹`‚íì í9¥smµ­Àm²Ü;³cóƒS_¢¥nÑ{ hK|,²HÕ«zõqµø°Z9eÔêyQÅU®ø£‡"‰+«\Û$IÕêe‘ÖíþöhÔî²Hâ$qjµY,ñ –øuñ/ý9JãT‰`,ÕŸ¢þÿBC—¨ˆs½9•ÆyœDK“%¬¯—‘1q¡Už¨%Œæö¶ú™±UÙØèN=ÔÇkd]¢¯þ¾€U\iUaâÊd…Z}&Ÿ¬E§ð))Ù©ÇM×4GpÆêÇö·&Zº2)ô¯‘IãL·°v¥·}´¬`ýÓÓž&6ž Ýñ 6ËHiuzŽà’´êe®·ÑÃWzå/Ñ2÷/ëC£.Q—zCëzTÝ5µjåE–yy×JÇJ}c£f«xÇS´Lá½{·óïü¤à'îÖÁ ô*'Á»2yœæÆ©¥‰s¹¿,ã/«âË r»Ô¿5ÿUç®á!òØè¾îÛ~&ÍïjjàÏÙÞ61íÿÓjaT«yÃO'‰]©–ô¿kÏ„ååfU\äcÔØ"v.d‹håW®LœMŒ­©ð9`Œ(òQMØg Wð´°ô+Û4'¶™…¯Üø>*w•Ĺ@66¼¹YÔw•ó̂ޥYôãêM1)\]Z $‹pªà³q_™zÆvª›×¢©Áô… ~ä L]ë€îH^Œ÷v-3d§AVíñ ÁÚîð™»9Pý‘ØAFðâ· Ã|uÆ¡·>Ølðâ~ß8”u„i䢸¡ªp¯Ìßq+LŽ•>È”Kä Ã×ZK±_äb'Þ½£p–†ºEÈ!èAßtõ¦çý-$$kùåô0ÌSa7Ç9Å|Ìl4ƒ°Mô æ shŽdta´ò¶A Îd4DÁ€­PÑ çýy=gX€GGš…½ÓsèÈ­9øÓ¸Zõ³üF´´ôåy(…_»6Âï|„rR"5\R!Ÿ)‰ŸO§Á !7Bç;Ml6W1@´Ž Õ4ž Ä(mO_±â¥ºæI{2Pü1f±À¡F¡X0,2 †Ä‚ÑPu¦~âóPZP¸±¯êI£„ðÌÙ‚t Wö}ÇH°¿€¦à“Hì³½Ú$pÁSÎ%IásX*ãÓ·§HÕÈuð@~톫eF¹ §t#¯jÍ¿¸+^Í•`Ì0¶eì ñ0Í)VFƒ•qÞv %£AZδd4DË€­Ð’Ñ -ƒ'FŸS°†Š¡Ÿ"¬¼ ©™A¹–Ÿƒrb” ƒrfPÆ rÈ áOþ–? È,\a´ò¶A†Ì a4Ä€­0„Ñ CæýyÍy€GGš…½ÓsèÈ­98Èp8³7†úJÌë4O›žNÝøÎiUÁ§†/nœ»ÏɬÔa—8]æý4‹ô@ñVP¾†Nsà ¨Œæ°Ë†zÒýx7«R˜ ìÚ¸Œ¼ï£þÃÛ­y¶Âö xâ¨]¢o˜ Àl(fï •· ÅlÀXbVÐ@̆l9f ÅlÀXΛßâkº}sàyØ)‹Óó¨wkÆl–Mc6»mv‹Z̾oY×Bµô­ñù@ÿÝþŒ Å8ȳÐé¤à‹Øu”c¯ƒPAuê U0Ö¯Êë]† mSçB ïØVm†-^"›²TÁì98³D%×ÈÌ9ÎNnB­ï^Ì=u÷®'z–~×@Ý ù½„LQ_H¬. H( ¤žÞR· (ºB3(³ØµuiúØN+‚ÑÁ†[¬í¤±:OÞ¦3d¡^¶îPƒæôÁ±Ã|¡Ó&tNçnçô ÈJêÑ=jh›¾n¨> *ˆŸ!‹X>¿%oAP_úìVÃ9ÈëŒ|*¼˜·l«6Wzíº†Çûˆc…øÁ¦²Ïxƒ {½@ŠËøN°i{qGú0¹•à0·[íÊß‚H4RãɱØÓ~Ž>\7sfn¾ñ‘†!_7ÔšY“r ŽðM`VF³²0àË)IôãIÞ$hgâù–ÓU¬Ë`vž5’3¡Ü®E“Ul#j ³á4ŒÊ>“NÃQâµâ¨¬ºbÀ¡JÜæ^:¶n h’‹N:À<Ìt;ú9˜Ÿêáº).a=½7à?76jÛbûEÍæ“¯Š±–5,u%Ëmyº-ôÇ#¬þÄ1 %„ÝÝ¢,¨‚ÂrÏQK[Z“ö¡Ÿ²=«²[ËùŽîwÐÊÛ†0Æ  |È–9/hˆôc9/h¢R°Ô¡çÓÏÃþHXœžG½[ópõY2é”ãkGÅßú*‚Ñ_1ŸëNÞz %«ÿÙ\¨¶U”ï 5B„·2Œì³eŠÜ1X^¶<<ØïùõéiOfM»ãý°‹MüŒ¯TËî­X¿Pý¹²É —ÓîžG¦Ô¼ÈŠ‚éŠ3;Us¬° :d·S­y¸©Vz¯¡#k±²\wÊwÇ“¦§Tíý¶*óm•(ä3:™S˜ˆ¾“n  HMÊìË3É8Õz<³GJ)7_kYEõ'yɲ”¼Ã«/55r©ž’ó@å<`k'›ìivÍFÓÁ–_°s3úϪ…ó_æõœõz.=w!­¼©AÉ©+éì3êKÎL>”ýPr Võt5Ô‚ºoTËc}³£ß†Ä9µ$¨1yr*O¸ráÂ’Ê'*‹2b>øVy‘e0ØÒÓx!GxnEpwÊ?Â°Ú “ sB¢ÃcƒÞ·,|7<,蕼©ôñD?=cÉ›¬Â3xú¿£Ã²·ƒâݪ{É0Y&¨éž¿ù÷k4žÚ·Q{¬‰~m†ÊA1ë‹‘bWo6͹¯×‡FQ|8Íÿ) sÝ×@UêÓ+½a£ÈäiÝ0’€œýž~"²ž: ï Eœä†(öã+ÍåìÀ¶#çƒRº°Ršôy!ù\ŒÕ©üÏb÷ ^`Ö°ÜY‚ W‡;\º-G Å­ÇäUe `Û¨ø€»¸>x;)ðÙ¨Àsͱ‘Á’žýúªYr7¯Â#Uµ3!þîÍ彨åÄ.ç´s¡$އ»´4Eqû9’'ɦÿ‚ZW\•ä"l4л¿ïk¾ŸŠ:¢’´ÅŠß«l‘š—ü®[[ï«ò{ÜÙñ;[5~W|…ßÙªò{Ü™Ï[B7Vˆ­A]X1»#ifZ±º°³ÆïEÕþ¿w_£üŽ|÷‘;NPÚŽR…kWôžç$Õ!x &$øæ{žcª‚Þá¿Mô8ëÿ/ÑÝô™w'ÈùÔnkß^bkÁÜŽìܾÁ|‚ß#@rnAeåðae‰éñ-0}N ïé–ÌŽði•n“K—+Òsž>Ó~&M€4Mq gžÂTú„#f·à…X ïéË.—²ão)E×™3‚œ—–ó_ÏýtKd#eñTø µˆ<˜:°u+ðè~щ?³[žîúe›Žê¢eÎjS^†§Øgæ{’µYFItÙ¾òZ˜> T¡Ðõ…‹*¢n hËÿâ’ÌSÇç;ñòýä#}’£‡0hãVãÒ¢üJ"{^í€4Jiaˆí «ç„—çÉßÈŠï/àñ?A‹©^V]»­àjͨEÝ^aÔ+ÖÖûjŒª8 £ŠUaTÍ—U¬£*ÎrÞf¡µª=;mÄæ³I¬“%bS)4ƒ|( ½Ð„šÖ{3Ž¢¸^X†‰°cqÖ996ˆš#™Þ ~güâö¶â‡’JX÷îÆ– н;Ñ~ýnà8Xíõ§ÄíàDâ^&¢ÐŒ‡¼(îŠ 9O—3ð"šÕN+/ËŠórâŠYu™t­QaŒaFþ‰´ Ñ]žþóa#¸S îÔŒ •Çj`j ‘\hûtÊó@Z :[‡Î5¡3c³Elv×E0Ìølézt!QŠ<¢[Ù‰-ŸÙNÉ»`T´ž"k|À¦A>`“ŠX]ÒW´ò4Ð/‚:]/ÍqA¾ÛÀ§¶éý‘ìÝ8@ñ©ª÷ôòCòšôÄÈ«òVü{»T¦‰=løÈgîò1h/öœ±W(ÒŸi¨™3xË{ oºµõ¾*¼Å¼±Uƒ7ÅWà­*¼ÅýyIØf ŒüüÀ1sp¤¨Ù³aÅÌÚÙªDŒóh—{´Ë´k: }ùš ã#$’‘äGxÁ9c¿“1ÔüÅ~…j*Ã’ |+ɹ´Œf†ÐŒp¬¥d6„cÔr²Ð,¨PË”0« o2°–P©üj¹D ‡_ü^üÜ1²ô¢HH^}!ÄÛîlò˜/°*·—XõŽô!×?WþÃŒø'Xñ ¥Î¿ dý1š]([‚¦ÒŸ´±|Ò—Ó@]RÅÝ!"~<°_cׂ-g _fÂT¹×'/?é@âŽßºÅXy8ðßQv9x »üA„3ÐÞ½ÇÛ*y=ú¥h³èͯíÆÇðèvz‘鳜èg&¹ì™Éÿßl “4xÓ­óÔÀ-î*ØÆFÚOF66jÀwõçô’î×4spš¨ÙG³QÅÌ*®YHÑ&+®Axž\ ¶¥¼3€6ㆅ>ÏÁó‡iØ”ŽZ 1½…¤H[H\Ó€"sÓ&sÄXˆ{r¤Î“´ öŠÅÌ3Öàb‰CBÝ“çØÎÉoÈ´ÐÅmݲ<) wVéH¢¯F|ÁV3ÁÏÇ#;%{^bð£‡ãômc(øŽëTÖ ¯eº¦Û‚›–žj:îÕQžD#„0ðb ò l„HxJ¡!^©R†=ôïJøNAx÷۸ܖI7õ$´ /òeCÞÓ`Ÿ ìCØe¦Åúnë„ÙͪMÌK³b-UÐW§¶ºUÿdÕ©?à ÷Ù¨@¡[[ï«BEÜÙa[5°P|-تÂEÜÙŸ÷ \Ä­Át°ˆƒ¾*L[ú†?w.dÎ_údžÅ¬ø~Óòå63ÂÀ5T/d+±¦%%2»òãÙ¡oj\ÿWÒäH¸¨Ë'ÈMø´¨ Lú¹‹ÛÔ„3è Gê=«4³”š$æLmÇ„rA°ÈP¾[‡E9©$|1ÒTL|‡F6}µÉK‚)¤CƒÊ‡ œ–cd¼¯>ÏI8˜¨š O:°j9ðBÌãâÍÕrj› j.–edS±ËùØZ^ÛÁÏdh ßèJßðñ /vÌš ð2®Ô³Lz°‡´TCÐǧ/‰52FR€ÄÂ(@Çv#âö¦Ïx,¼D:Þß0öì@È´›úåæ|Lăgyµ‰Å²(lE›Ô…²ˆ³@…ÚÊçCVqôxÆÝ\’Çb#¦~“S·J m¦IO,´y°z×'Ýó3¯4ÐïNfñBGI ¹î{Èjá6Û¾ÈKJãÒëèRºç›hù&(‡ðšPÅ–X'$}ËôasK‚—”ð_‡YR ÿ”„Ë4`ÄŸ‚DÇíù“5Ü-”é–ÿNL”øÑžœWFçÄì?º@’qø «šÏjw0#²ùG;•R%%Q4Ôl0¢nƒEÆäÙ”S(â·uXDŸê!=õ}òK?ösÿ» 3ÿ· Z1oº@äµÜð^àB^È iÍsr`½ä· ¤c¡ò›nm½¯ÊoqgÇolÕøMñ~c«ÊoqgÞÜi岎8fŽ5û cÖ ¬˜ù‚äàNàv­Q['‡í™“4¤ì°NÍ-Ñ>o»dPDeÂ3šC°jVoÊ"ÃÂØ#4n& @V8ϵ!î ºœfp{Ti qUöÒ²b­=…í(Ü'ž7³z·È¶”¾È¹ŸÅ¸ïâç¥í§ž‡¼Ç^Fë¼7E¥h Nl,ÛÛºŠT…â+U!V­*g© ±*U¡ùrUˆU« ýij“_ÀÖ ™ÏϱŠY}ÄcRĪª>ÐraEù¢¥ò¥A,orfËU]Až~E ƒùúÂȃ )+“nG`Å4s ÀXµ”¤ù ޼z²²AJ¾¸ýܼ#¯™¼ ‡‚ÙŸ-@2§IÙúÌ/Ç &jê¸0jÒ²ÓîxÐ#m´©w㔨–ããµ¶/«<Ãro^¿ÿsòˆ²'‰r  H”ø˜)UìVCLi ±ËuÛÕøœt ¨s½©ºbm½¯Z^qgW^lÕÊKñ•òb«Z^qg^—çÆBçrqÞˆ58PÌê#Žƒ"Vµ¼2¼Ó¥¼.uõkøÚ…Ó³»Í ûß¡Pª6ó û«˜_XRwÛ‘ŠÊæ\TÜ"ÎQF;žì.V•)Ç1á•DÅ“úÞ+?vâõ õ¦9WÞT0ÌÆp½Ðdy'úþ´Rò|Ñ —•¢[[ï«VJÜÙU [µJQ|¥RتVJÜYΛ-U)Å줘%è¸Õ‡7+ò,¯˜²TKFmЯé;Ȫ6½Çv䟠¿ÈḽP|Q¶”¬ó›”5˜…TÜóûøÐ_˜'×ÖÉL¸A¤æ_ª¯œØŠ·Ø=±õyµDÂÚ°ð‚çnd“õjïî?Q÷C}õfX »9®Ñ®“9ojE—ý‹QÓ\Н¤ºXµTWœ%ÕŪ¤ºæË©.V-Õõs̾ .E—fŽ5û cÖ ¬˜YKõªZ¥º1†¹bøHÙøoÓçã˜gmŽƒ_@‘»Œ–n#çnómyÙm©»XM7¸D²¡”ÒsmÈ:HgËÍ­Cì¯ï8äïèc ï[Áûä Væó ýH[ÔL˜¶ÿÛd’á@Žû30Ρõüe£š¿q_—¿lUó7îìò—­Zþ*¾’¿lUóW=1Ç|-sp¤+ù«Xƒ°¾'Ëb Õ'sÃùû—žiºœÄ-RB=C.ÜjSÚRê2TÈZÊ=Ï"°Ëqr…i\¸_¹)%„ÿBõ$~Î ¢ÈÀÓÌlK²ç%³lžÈ‹>a­!àlÒõæSòÞ9Ÿ©Oî^ß?l’î™_Èß8ì–;ܳzŒ"ƒ» µTeán©ɳ¥B¢ãÕX˜/'yÚ‹áäjŸäîé(¯^*8òM׿æ%< äAúWYaÂ;v¾ÅŽÿŸh•Ž™óùb÷U±VöJ±²Q-ÖU_îHB1ÝŠ¥t|Y„ãl(,l*Çå›ä&rííÎ$y¿/ylÈ Je̓CVP&+‰uYA©¬tÆs1æx¯bx3¥—Agt3¬ ³6¤éÄÃvµµ)¶6íú·ÑVáñ|K—kúþ c­·hñÿFøW:“îâÒá䦛U¸UjñU†+¥ô€ç}A˜gÎY€'½WRFCó²¸x¯¨rh2úþ/•Û©ÖËj´©.z¶8J,•)™@™L$Öe¥2åÁ˜o7­¢mN4 l.in(Ò/’1úA"§‰c… Ò&™§™cù ²Õg‰Aó¼¾5éÎÄÓÌ?á½rkÊ endstream endobj 429 0 obj << /Type /Page /Parent 681 0 R /Resources 430 0 R /Contents 431 0 R /MediaBox [ 0 0 595 842 ] /CropBox [ 0 0 595 842 ] /Rotate 0 >> endobj 430 0 obj << /ProcSet [ /PDF /Text ] /Font << /TT4 840 0 R >> /ExtGState << /GS1 843 0 R >> >> endobj 431 0 obj << /Length 5863 /Filter /FlateDecode >> stream H‰ŒWÍr㸾ë)p ™²¸þgíÙŒ“õxkG“ËN ²ӖФ¼ëçH8ýGŠ”Hojjdn4Ý_øq³úa³±J«Ín•y¢BøGiäFÙ80a©Íó*$Yó°úáo_´zhWa†VmÊÕ¿ÀÄï«ß¼? "ïÖ‡¹È»ö3ø½§©»ÖOƒÄ+÷§¢ B­£4ûÞÚ×:H=•hµ†ÙÄÂÞÆûJj¬å|h¯QwÅËÑסWÔþ¿6_›•ê ×qª67äShÐ)ü2;õ7ˆ½þ: ¬×U°‰{]íüu%ìÖvMõâ¯ã óü5Xaèx^þÔUYtÕž/~ÊÊáa†aWu²Ã‹OµS­ãU[¶à%†Ø–ˆåÒµ­kèáѤÒú¸‰S¬QUo¤ßX¶Ù½Q|tD‰¶j sÖ& >6‡¦{ô1¼km½g°‘y­«ÉHä½¢¤ TïE#òzq N$žÏÈ/X»¥‰¢UôFƒÜÛÁ¦^Áƒ# êNü Ÿ!œ FCié³Z„a<nVZUj•¤ä:${˜©0°™ZÓoãV»?“%Y/Œó MÆRmÒÀÚ%]”æƒåªa¢ltŽß Ê(E$a)5ì3ç𽨠Âl°l"¸Š±8660‹¿/•X…A""9psYépÜy©œgV8¸4+ýq3‹¾©Žá~c‡×’àžŸ¡2¾„˜DKO8¸©Hå}ó©hL·-cÎhÞ¦@M “&¤ñ×pvHÿÓ\áw_#v>ŠHa’žï g¬‹Îm{µŸÃÖUíZ?xUßìšNv!>4 Ðâ5W½îmádôF#YBÅbL`Cà4˜x¨Á˜#×/Pp1F ‚?PÞì@РĨmÑWê¦Úíð Gˆc³Âñ'àn h˜ÁÇ3xmåp [V(f™³Î‡ë÷¤¾?\Wß|U4nÃ5÷]µÞc(¶ˆÅšïÖÀ¦ˆˆfåþ…¾:†a¨=¹ŽÈ‰>ZY^áÖàÜV®—î*†Hð§EøŠeåþHê­úîÔïåkïÐM|2’=%_èS¯ÚÒ=a8Ì‹ì”Åo+¡HÀ†U×_,D*žBhÀ›lH2pFV×…—-¦ëŠ’>ùÔA»½úÞ¸Gò¨pê}çCoíÙ„ým±É•xRë5E*Çía(ÔÀœÂb!ÞœßçwùÝA2µØÁ0 4…Ø£qåco ë±'4g@HìX³p¬çu{°fé"XÏ+÷`ÍÒ%°^аfé"X/ž˜}Ö=0ÆéÜçÄ£#ÍŠ§ç¤#·æÄ˜¬# Xf#P¦”âl"&‘2“@úSÍÃasŽðI Vô<1TT#´Þü\1q¤ÎÖ]dóväX×åéʱö+ÎgNË ˜§æˆ"UÉÙ®š3¢rTœÔä>‚[B5´X,]sD9 6 t˜Ù æ– ÌÍH$qÛ݉jb^'Tøp¤aG1EÄ‘¬lÒ«® تjˆò'@é ›Þo€÷pMŸ€MØú ßf kq°ÇÆGØÆ~`lUÊÞý„GèÅÞ˜]¾I#äz˜¬TeÄGûÅXŒnè™u{}×–¤qÀŸÞFQ×ÌÛ" ‘bKD›Ö*xÁ0wætڙтp¢½‚ÚçÊǺO{}V‚ç€÷9 Ž(—ˆfOBnªB1P "ñÚk~"4puÁʈÀ~cH‘ˆÀÑ,“=,Ù¦—>sgp<Ý*WA¹Òb¿JÔa¤ùˆOD@õÍû¯…¿[æ»Ç+-/J1ÿ¶ð:ºxP8fòôˤÒÈ+¢<¡¢¼ zWÈ;¢&òÿßoþùïiëÀk‡Žƒ&ÕÍG²˜{¿úx¿|oÅ*¿0øa1yÓ<éO%/‘ÇÑCg;F­ó\vxßœeÈ݉¹§”ð_õ‰I\»3tÌÞùì‡.õé,G%G)Ù\a*OÍýójím[9¢…I Öå[dÑnR Œäæ~ˆÑ‚–hG­,)•ÇýýÁ3gvEÚ\£·€aqwvvgvgΜ‘Žå4ªÿPdƒQ S]úìc2ítCç sÎjÝ+ŸC5;ɹoÑ·V–åãΤF·Åe¼[¯Oìû¢B}çóïÕ’—Të%Õ ¿°^8«¯£0Û[|GØ,ÁPÒ6+e/xY\u´9¡×b±»BHßiÄl4D[q¥"1ÈF·êçM˜&Ï`‹¹åÆßü©†éF÷ú1±¸öÉÒ6¾uÍskö2™*/õ¢å_ùÉÃÆïô:Zd®r€kÈ„ÞÝíÕˆÆoò€Õ7àH¿ žøK6é–Òó,p¶ðVøþÚL}?90/´±á9ÀËN\؉¦m{ß¹Ug;ÚVƒÏj@f›ÖÌ’—öîµö·×)SvPV‚m!r¶N3D æUP Mò C´`^Õû™¹úÜæ‹´|âéœxäͬØ[<'Y5'~B äBä^‹JiÌ ”~Ž|È 3d˜Øÿs¾Ì¤%µÞ÷ÃqÓSH'†IÿV6y4W•>Ç/ ñÃþWMuœ…XtÌ?9¿ßYÁ±úpÿÔˆ+_ â¿ ä&ÿ%ÞæUñèàǵâÿá2´;#Ym 嵯(ÒË+x¤À÷ƒ!ü—Q¡ˆû…¥»šÐw[qù=€ufQåáI‰™+av†Þ•‘6Oº¿¬õ¼'ã}|Å«·|õRYEžÆ¿ˆÃ‚öö´*ORoú‘JgŽ&”âÏI6!B*:n :Þª¼IÉE<#›*AÜ&…¦]Ôd;ì.©˜£‚¨kjÇ3<@‹¿½ßÐE+{ƒ>V·Ù]D×*c qïåÃøäå¾{%^\ nÙƒBž '{c_‚ŽJp;~nèŽr?8|Z‰àƒÕNóæUG§/“Kd ŸÛØm`%®m²'uœ"oQK&Îö0RõLXµ‹e=Ì]Cf“† 9 lØlÒ8‡t‰Î& ÁsØcØ\yè.+2õwVêš—šÅ³BoÒ¬4ÔµTiyÁf–­Rfk]—ˆ¹þÆ+U ùÛ-"¡‘½ŠX»ŠL@Dh4úªH?úHø¤€u¿M°ê:úz¶ %È‘fÿÒg?x6ÉþÚæÌ¡ø¿ýò^w>ðXža6Ü$ˆÏB»»ÇMÙ¸F¾sYÒÝÛ>B½(ôPñu-¤ü£ö¥v…êN¿P0âÍ=×D?)» ÖlYk–1…´™ÉÔ³RéOkÇzPSuÝz¯5²q:@Ö,Ú̦4»¼esi[$¯Üœ· Å­tãn>°‰í•œV÷º…!XpmTØj ˲èõƒgõFy4@N6ÜÛœt—¥MhÚ˜¡S¼ãQÿÔ É‹¢<Ì)Ÿu´5##îåŽûæFÐ=þ¯«<ÿʺVkŸt„ìäªê2Ä3Ÿ‘¶^7góÊÎ( ÁY@×àŒÒ œÍ+{³gð, ¹4+öFÏIGf͉C˜–×Å„oãÆ½H†’œ• ^V5:šl±¨«¤«¢IÕ ߨZ×yô$ØWó±‰oñ-¸´‡Àų0´R‹|ËF4ÓO¤NcÓ½8²ê7ßð™ ¯ÑVÒu–ü4Þq¤H@Ú%çëñ”ßJà5Ý'v•1ÿ÷+%|‚K›‘Óio9Š>YŸÉ¡Rã6þAÙaÛ joDê!iÙJÖè6SØ=Pç Ïsîê Ý>ºË¢î™;ÁŒ!)pù·VªGdâ%]:¡%è„èèoŸàI×—gŠU®Ù„=êWtÒjsHÝ3\¼‰ÇýžÒˆów‰növ¢<ˆª©ð ËõGœý9Êð 7¶÷™×'Jƒ‰™ˆš}Sß³‹ï™ódpPPív|Œuw\G¯lö€÷ýV§®i´!¦*¨Ñ-ŒNÉv––7IÄ#¾ØCŸù»M¬<`i¤ESç¹Xªæ*óe±ÈCH¶N3„“óª“P2 I¤0„‘óªæ§Ð˜<‘!±÷& 6‹ç¥Þªyq"¥#t´ïs|Ýýàû½Cê2v$õ«2§j²6×è” Ô…UQ +I—h¼ö™»@š†UôÎm«Q~Ž{†ážëV{U´î,ž%‹…XdíÜqHÂÛB”¢ßûh²í£ÈAs¥”ŽÁ¾ ¡¨f[åibS0ïv=]½ß+•++èÞ6üé(¬e²Ù­½O´¿Ü˜t§ÃUd¿ô€û®âËš‰êe±Îîœ9(2íkü²Ó‚•'Š®u!Þûl½ò@¬´í?ß“ÚMÙÏnž–űìæÊT‚PU¢¥´JHr˜.g°½¨È%A¹NôOQVMù^òú&öŒ´õºA„™WvCicº2”Qf^ÙûëéPQÂòÇωG.ÍŠ½ÑsÒ‘YsâÌd$[N˜Ñ0H3—J…•°—¨•yü…_JÙFC®ŒôLuQ# NÒîP·3I€«²É‘º¦wà¼ýl7«N)M­¡½T¯¦›ÁNøIñeb;Fì½IRåáúéN*»+µlëš[`v º‰NSsÖ\"Õ¶sˆÏ…ù”°žJYò¯í6Ú¬{Ò¸Áæî~’È FÎÔÏ:‘8n¹år;Å"@_µå•Ïúu8ôÇUwRl±–<±om®@ÔºÕZâ9MæLR±årXØ:ÍP&Ï«Z"SÈã€&Ó˜ÂPÏ«z?³<˜Ä!ñÈ›Y±·xN:²jNLâR¸B“–®Ê[…–à /Ábs„M…Œ•¦¥Š÷« ²QZ˜«<$¨­ÍB4]­2f,µŒÕR°f'ÙÀõN×MD· ÷ÒnDwS+¸ÀlÑ (`oRjo‚VŒ³BÇã£àùFÉ1ZuTtvP¥KœEkž±íŸËÞtéî-·bØ H¾Z‰É©ÓCÑQ.-Q‚SMËÑ´$àGôm1µ7§HþöðZʼNmMí§Ž¢î@¡ý'oí³Ÿ*FŸøëÎý1iAžôÃ6©Äù§[i×Ro]]^ûj¥'™pwÈ9i†bc«>ú;(¤¯¹Õ^ï¥!e«M-Zï{û²Õv0 ‰(1Öp`—¦û˜âÂ'6ÿ›Â0Ë‘ÓYåÞ _ c{¦J¼k”ïâ§;™%šO.U‹\\ø¢2­XÊ!ˆ ¸Ø‰ä™šõnŸ;‰u5´TŒl§St0NvÖ‰ã+ö“M!l%ë› Ä†¥­× ‚ì¼²CYJC0Ð5œ¥4´óÊÞßpSŽ ¶dáȤ?Ðe©”ZcJšiù¨l~ÔÒ\i‹ÓjN äzqeæUS#¦2Är/¹>zóq–~äE£>§ýÂÊjMëÏñ? БB6îÔμdŒì¤®KŽ–¶^‰E£mˆ˜g„’JM“@[†V“.G¢Ænb…œB¡g @R¶„Å«±În­?'ôºÞ'3åG7ýäiŸlÄ}tÙ;W^¶›ž9ØJsÂLˆÜ!¶ø«?Ê&PóÀµLÛ†/ôb¥×*šúq³”6¾<ä¼ÊÍé3w‡è–_Z)¶Ýñ^ ºAÒ2ÒĬ!¹ByG¿÷Ç=u8_ÊÉÛÇJ’+¿²ã–[¹ðÁ*LWðŒÑzrú€^åôÌÄí ehÔ Žj_æyfqò @ Æ®§åê¬ÐÕ×Z8àÊ<Ë¸Û Ôndíž Z Ñ¿þš 1x'pÿ’ Þè:B*ñ×¢œ›ÞYÏtáMò#Å$O‘žbdXÚzÝ FÎ+;Œ¤4„‘]ÃHJƒ9¯LÓöÒnŽ(¡ —@‹y½ 8¯²ª],ë¹; œhâùí†) ^p`gÏïl×OaèöC«4°/Ÿ†ÂàË66ñüÎÏ ÿ;‘‡Ð endstream endobj 432 0 obj << /Type /Page /Parent 681 0 R /Resources 433 0 R /Contents 434 0 R /MediaBox [ 0 0 595 842 ] /CropBox [ 0 0 595 842 ] /Rotate 0 >> endobj 433 0 obj << /ProcSet [ /PDF /Text ] /Font << /F1 661 0 R /F2 581 0 R /TT4 840 0 R >> /ExtGState << /GS1 843 0 R >> >> endobj 434 0 obj << /Length 5475 /Filter /FlateDecode >> stream H‰ìWÏwÛ¸~¯Gÿ8‚}1C€ Hî­‰oºÍnßZ95=Ð-«•%•¢vãýë;¿‘2ám/{é¾¼˜3˜æûfðnqõv±pʨÅÃUÖ^eð~”YZ[åŠÔfY®OWɺõÕÛÛ;£ÖÇ«,Í2§Ë«kü&~¾ú»¾Iò4טËõû¤‚¿?ÐÔ§cR¦^/÷‡Vå©O³äÚäeöõubLZjå­º†Yï`o«?“kµ‰MîÔ§fwJL¦›mòÅ_À¥Ò¤µ)Jµ¸/,:”±/·ŸÁgÁš×ßnÖÉu f—VúÇ6½{žÞžh¾ßÀØÔ°ñŽv?]n™Ô8çqÜÅV¸ lÐ5‡Gˆ±Òp¶ÐË#)Õ©-r5UÉJr •sö®ïN‰‡°Ñp@ÁÆìÛ%×p^\µQWÒA•P³JÁuUêšþvíÕïÉ|5‹:-ýXjYÎÅtQZË5 t¢l¡ º*¦ŒRì7X Åö‹køÕa,Ûôvl§…†­`eø11ã .óPm\”ËâÒ:èF¹l^yà2–Ƹ,¢+\ÆÒ(—Í+‡xϹ=¹ xN< iVœž“ŽÜšG¹,ƒPvæ2ª8§Î|0Bªa£}·ùR²ðuƒ Ï_û¬À×ëw½À+…ðJM¼ROà܆lüÒ"ÔÄ"ã5<·'X ’†=Å^h*™iWøÚA}\«šíVÝ~þD%ž‹(<ûˆ\ËFY›ÓæÞLJøÿqH»ç|  ãÏt‘Ì¡ÊjÀ›2u‚ôê"j¨€l5ÑhÄþ˜×QôG…õ Åþ¬ê}Æ?¯)À'a÷³ªg…N³,wèô4Òyqˆ&"ç¥Á«yq öEéÂk‚`Ÿ)Ÿ•#àS“œëï©vÃ¥?Q;.`½`³¦Ýf)ï*›soQЛð‰è#­bcS;à­æ¦âb1Mí©™¨ôÙ ±{æ‚t˜6µS6@OÜ$¦VÜÓl#Ê Y`ƒ1pCã°'"¸ãá†G순D·á•S8•{¥³EZÝ""Ê ‘F0ÓePˆ4†Šˆ²Ä›¿ÖÙÇÄ!¤ˆXœž—·æÅQX;{÷ßVýéJÝ~åb˜WЏÔ]Èß´6‡ï^®_ƒ".mhn«š¤•}i«¿·Ö¿Z+]õ¿×JA>{¥U~EZÝ(9Ì+äÀÒ9Dt…X%‡yåo Ž—53&…4+NÏIGn͉£ä€h°\3) 7 ¢~ ›†2† «¿çtÇõä>m7¨ Éð+R‡© XqÅ ™„F;1KE6Ï}DU–CÉÁCÞ/KH?Î>Z£v—û«ÁÏÈÏ<¦ö«€4‹Í1pÍQ֬ĭ¥_⸕Vvþ*ãÓàʖǪaCC„»Áެo&aÊq„S–¯DÿÛUp[œ»­— Kë é¼òR–Æ@Ѳ4 Òyå¯sñ Bš§ç¤#·æÄ1ºÚNß³£™7¶˜`9d2¿i!‹¼þ+Rv%}gIXË|N+çºËiIÝpAçr½7õ®Ž º.ç`Ó¼X$ÓÃVc‡Ô -P Öäà\‡%Œ•Ý~Ù)Kaûí~Mó¿?iÓ¶UÚž‹tI%×ブk4²AÃxê0 VhølpÓ\4^>háýÐÆ…õ ÿ¬ê€}Æ ?¯)È'aø³ª§yíA‡h"bñx^¼šGq˜œñÛ¤—K>=Gg†ÖÌuY‰ªéò©DÁ¾±Šý¼^‚¥1ç«î‰‚—‰ó¿æ‡jK¥Ÿòã N® ´Ór35yCHÀ7ËÒZ?}óÓQv³ë3Þ墌cR*˜/åp½4æÖ~Hõûbð »w“·îùá gï:Uq :EáÔ|j s^šõº³H4­l‘H¤sH4£«H$ÒY$šVîÏ;5ø<%iRÜ;=%¸5%žC¢0Ë–a HÄŒ™ Hø@àƒùÕE_œÂÕùq´Ò_˜,rq`Wí¢€KY†¤Qªö`ˆ9pá ¢M•å´ÆLûŒY÷ì‚̉RÌH&©ay=…Zÿ&âÉ þ“8‡/¨ñÁ±Ø³Z\¯CT¤ÄL²¬¯ÇXü쌊@4ßc\ÀLEˆs`õ¾Až]TŒc—5ïîx“9ŠÊŽ©Î•ÁÝIÄ¢RÈ@ÂcÊù­ýj.Ryi¿u0•îº4½V¢¦Îåªð¤êÓ°” `é×J>‚¹ƒU˦·d{ßJVÝ›Xf  ~Hz<¶ìÁêcñ‰â$çI®oКîiFKY½ s/Ÿ9ªEÝÔ‰t¿@ÃglWù©ãlˆî„ÚêGZÕ´Ò/ªrZ|ñõZ·có¿1Òz—¤È‹V}N¬ìx{ɵúøPŸHd¹D|O˜G)²†ËܧÜê‚ËÖŠî°¼Ò vöÓKÏCÚu㜗f½îlãœV¶S¤ssFW§Hgç´rÞÈ6U8'<%iRÜ;=%¸5%žmœyBDßRx€;èqÊ¥ªZØ™¼’EyàÕI˜`°ÏxœÍЫ)!V©G™Æœ>pî¹³öÄ>¸"ö“Mò¿¯Í ¼~†NÇ ´“ÊÊן†J‘òÚóŒÄMòxpd›¼yÅûŸ†vŽÂZ©A­œ@)‚xû$A°ôAN;Ú±Õèº/ÑèÀ(mÇ‹-hñU÷M)Ðwߘ‰Ž+7Òš\èØeíJø° ÐtßÀ™3§ÉÝJ5íà"J'Ù#²Bv2èú€Fy}aH^–²8`Êñ¥qóÞN¿>Ó{üĈ€P¬•#r‚Ó7ÐÀ‰ñnÏT~!Úsøÿæüfs^Œ*è*ƨ‚Ž,s¯ñ%r6²`ê8ÍÂå~cÖ5oíJ¹ ô*D¶+·²ŸgC …‘U=©U´{«Ì' 9£fÆÞSàÒ¬×kf3ÊÚÌT:ÓÌæt¥™©t®™Í(÷çíG±$»:í•lp˜kYïë•hàÊ•l®{+¹JdìcÐ l>yiߟ\`£.ÐÑB§fP)ùÿá#Æ“d•2^!©›“ˆÍ±1H«uh ¨Sæda;ïAöSwÁÔù¿“ÝžŒq †L'+Õ2/M©FÅ¥.× {r”·Föˆw”›ÖfA6UÓGYHT>íeŒŒyŠaK/ùèìœÝTøaâGCÉaìh@[€&÷8¸s’˜hèâÓnäɰK%ú+T¼¥­6CRËs¥cQÈ&±åÙ£¿“5Š?3r\”Aꟳæª(ßf½î\QÎ(kQªt¦(çt¥(U:W”3Êz^¶ ² \xZÜiF¬NOK{·¦Å³5¥`˜}&«kú’SaRÂÖà‚+糋FÎÛŠ®=ržtYò¾ít«„}ÜüŽš \t-ó©5 œK Äô6 ›cpP3]Ç¥®A* ÁÃ)Ïí&%¢$’’ ¥¤ ABöoÑcˆÀ´/²™’&öÊù“­µ&·‰MlÁסcVÍrpß‘ÿOük·?»+¥VÖZ}ùXÁ/cebÅœÄYqý[|0Æóûr++Cä‹ÿ´ÝØLQiãå $=ðF½¯NS¾Í_È!åPÙŒr P®:Ê_#‚Žn(´-€m)-ÜfþT~u)Çvhù!£Ý‚š)Ê­QA#!`3øÑUØèu{Þ_ޏ8œfŽæ‹Ó±,Ïi`œž ¶gäò¿âGë®8!^d_éâÛñlõÌ&QÒ—*& qe ±è¯„„$htƒMùÎ U‚} nD’Oä]ÏnÎoEåÀ.qɈbqiî@iVœg5oH³^w@§•-€Št@gt@E:  ÓÊýy{p’¥7RÊéŒâ¬,I­0Έ•Ì„qê£Vµ¢E·òÏSi¾UÝžêNR”ÊuSÝÃóØ9W?]3×&W;&ÉPW[¹ôHlaÇúöXhSpùš¾Òõ•~zÀˆ²)4kZ‹F{å KV4‚EuT,‹!Y>_ˆ/V¾’žúô¼AmÙô?Õ[¾bTVðEp:J±ÏUäBrÜš’¥\(ûµ;ÇoU ÃÄ›ov#¥`[¨‘j£•OÕÓT(AQ¦òy±·¬jŒÛžà¶3ª‹ï‘Älþ5á…eo endstream endobj 435 0 obj << /Type /Page /Parent 681 0 R /Resources 436 0 R /Contents 437 0 R /MediaBox [ 0 0 595 842 ] /CropBox [ 0 0 595 842 ] /Rotate 0 >> endobj 436 0 obj << /ProcSet [ /PDF /Text ] /Font << /TT2 838 0 R /TT4 840 0 R >> /ExtGState << /GS1 843 0 R >> >> endobj 437 0 obj << /Length 6199 /Filter /FlateDecode >> stream H‰”WKsÛ8¾ëWàn_sKl'«Ýxìµå¹Ìì–`™[²¨¥(§ü;’šß;ýM)Vf·\eÝ@¿ÐýuãÃ|òn>wʨùÃ¤Š«\%ðGEWV¹,¶I’ªùÓ$!^·š¼ûtkÔj7Iâ$qj¾˜Lñ D|™ü¦Ï£4Nõ,ZªÏ¢þ_érq®íÖ«4Îã$šš´(A¾žFÆÄ…Vyª¦@Íè¶úŽŽñ)ÙØèN]Ö›}d]¯£Ïÿ¶[¶€-h ±õEžÄ.˜6&š›°¥ÿô/¨7×_¢i;ÝvËhšºÔ‚Ö_£,Î@ËÞÉ–)Xwîw‹.ªâR7ÑÔ5ÛžLkÚ Ùr1ŸÕ¨I^Ä ¸+JÚK5¥ÿŸ<ü//³4c–qåˆw|и*6yàæ´|Ì¶ÆÆÙI­Ö¤•šòèh–¤œ8úc®¸šÄ¹°ÀŒÂùó&w0øMî õMÊçT3ÂrF`n¤œsÌKýÙ®z ÷ŸSÁý7K¿t.t÷öëHDH›ÒÔißES[¤9ÐYÀ#íõjåO>BiÝ3›…W=ËÔ¨¥ä‡uñ9–¡"ôÔ@ºâ§XÍâQÏ΢ŠÌê˰åm¥À4TQ$­î¼jE§üÈ¿T÷°kBìS}pgëÁSLwã⬂B›šØdy®æçŒé+ H@—k¸Ò ¨a§»&Êô=¨Àß ê[zø~äo$ó~Å?žŽ-¢)^nÄ-ØK9Gè—RÁ3x{æuQ‚ò§ú‚’ðJQ”(ÁXM~ ß"b»m;TÌ–,&ÿçãüqCþäìî-Ý?ÂÞ ˜Sè÷‘Aøø¡QêUÓ!ëŠh—êÌ#çR¸»¶«Wl¸ uëéòeŒ\-Ÿ\ÓÖzÙ‰÷©ƒæ^ó"FÞņ„ô]ãi/ߺќ„¥*è ž^ˆi Á w“¸0Iy|Ûi5ÜvR±û9¼L¨9º 7‹0¿!¢ªšP’âÎà×WÌj&yÙÀû—`“7jHðnE$ÏÞý èLà± z^±^aK²Ü’µ$K- ê…AÔ™î»V¬ ¶€Võ‰¶ßåÄJ½§µèôüË–uäTa¬$ÇÆ)óäHu5R™¯à€T0*0ê5´\üyÿÝóI¬Y)bavÊ× – Ù ®y²è¶ž"kð2D3Ÿ«ûÈ©e¯  ÃúV-[ ÚË{Öm½TíýX¨_ô;Î%J#ç†4‚Ä’ˆXËy€ó†1¹Ø 2€˜s<Å$Ë›<–ÓÕ%zç-ZtÒê-ÿ —˜ïK^Ö¼ìëûƒõΫ=IdhÙmEÿÕ¿0 š·!äƒÇxOkæ¸ñXidÕϼ•5@ÎÌ©$ªÁöïûfÃv¬FÚCäOâ5Œ£jL²!ŒÙX9œkvCc€Kh(8ìXÆp·g ª6Ú/y·*ßÉçú™.„Ó[fÈϺYÔÇ 8aÙ7|}%„Ø@X{ÕQ6ÍâôËš£]Q”2„))BŸl€áÒ±ë-¥+¤(êCTÜà=W@yBD¦Ü/¨ª„¼‰ –rL͸M\“Z0e+Œ–¶u¡Á(S)sEö½,E‡ìŽÉæéÛXjÓ vûG®/0wRBöa1ûõ‚™ÔNÖí¢^KSÉ©©ä¡©”X§¡¥¤¯-%=n)9¶n(Íé ‚ù×¼x…‹0BsN$UÕ‹…߆:ÛÏ!KÉÒfCI¾h¥žŒR„ #VÄU²|H…’e"ÃWF0õ]³ ¥âuOøÜv^Ø=Kx<8*Ê‚[bËÑ^ ñ²̨Yš§4øþFǰ6ܨ•½Æ<(áb±IÌ~™ d^0dߨ?›!% Ê¡ðóŒn´ì”‚¼rh2‚p#A&„ÕJ†A^‰@°µ <·hèÛ31Cθ“®#6¹=ý0aX´W}»ÿëâ¥CeÔ=ñ·ïÈ,ž?²0©Ø£ëhï“÷nýOP ã»ÙÖ] £¼å–Œo7Q¹íh@ȽS¿ãüaqضíÚwjÛµ Éþÿdþ© }œcu×jŽz¼n^€ã7=dK…È ßݨÁZJyàBs'n¡²žò°ˆ´Ëõ6ÂÛ Ú ŒxxŠØÜøÇ’ùÞQò ¬·±<ž€ñ 7œÁ<ìSÀÝ)ÚÝÉ„TK3tA_!ìCpÂ½Ç Wúó5•ÔâLºù/Ì€Rœ¨°T¹‚§¸Â‚ ,5‘³âœ·‡ÓgW¼¾äHñð›Ð)§˜æ½t=Ù-27ò»‚YÜö>6áÀ­ˆ=c³‚%üG/r¡&4ý)&¾ &íÅ¥Íë/n(ÀÔúJêÃÉ­ìùAPÿ#,&¾P!\ê™<5e¬ÃîZáÓÄ^bÁ9žÒù“&]«å`OVåØ˜r2ó ߸’Çh‘é †až´KÍR±¢C{°Ôn2¬°í0Q—ˆWUxÖ&á!™ ­#(jxñ?¾a¶•™òh€­Ç🆱°á1Ègн–=€Wj×3@‘,ë¸)¢fê0Y'·OAf>˜!½¬Ù½=mCÌf›ƒj>¸-ÓZMÆ9-?ÌŽúS®ÂLs2ÂKû~ôŒ:„èmÛÔ׈\…逴· Øùêšý¾ýp¼µÄŠïüÜ?D8QÖÁ{j¨ë^=ÓG ¯™>L«|ˆ¬úæ”0OxQIõnx׊;v³ûYÝÎ%q¯nx.xÑ þ # ó5ûp1ŸäElU‘• 1p†þw~ò€Œ¼$NiÆtãÊÀ8>b´ØœX9t±|̳`tö¶&kR¢§‡‡²Ô å„y(­@¡Ì³)DÝy‚?Xs‚?(>Áÿ0ŸTq•«þè£l´*ƒä+Kœ‡Ÿ†X iÉð÷vÇ/¿1!»¢ @$A Î1›1•Lûag×ÀûsJ+ȘٵbI{Lló~3\AQ¦/[¡ÖÕNt«`ÂH=£ø•"m'—~…ÚÃøÿ~Ó,j@3‘ 3i?VãA~†%ã⬂HWN1TNÊÁâ:O Ä šÖ èMð3,1’`ØZQöcƒàöàô»³&+ÅÛål_‰¡q?Æ}h@ ÄãѨ. eέ¬dPâwbTëç¨bì”—è´€ŠL„,VÝÈKI_Üp¹øà¤ñ.BTÊKkç¹¼qØá4Ààø"ºžöt£€cÄäÇš>‹rá>aã‰öŒ­àìîx"ç+±Zѱ`¦È^³ÈöÀ€oÌ‹1=ðIŧÍ8¬ñÀ…OSΉÀQg‚×bÂf){둨`ô‹›_pÌvØ}É$±i¿f¦£Dý“ïªmŽÛÆÁ…ßNê${Ö»”oÄ×óLRgœ8_ê¹Y+»š“w÷´Ú\Ò__<HI»¢§©µ$H$ä¶Òµ´Â ´a ?O! —H›ÅÀdlU¸Š·ž ¹*õ¡®g3€WE^ìõ;ÌjUfÁ3/e“;—²Éޥ̷iA“Îàö‚mÆ«'–A“ò´Á‹6›‘,h,­ˆQb•×Ò8âh³Îtp ëd«>,:ξ»Ô©€sâ>"Ù>VQ Ó6£ÎM ”Zà"Ò9<î€ô‘¦cXž§ýœ_¤½×Ó~}£M{‘zÓ~}3§½ˆüiïuXÔ^ÙÌL(Xò —×Ä3§ÖÄ3Ãkb_ÚƒÒÏz‡Ë ý5ä§¾¿ ´o<öAY\ %éñ¼6é‹à_úàƒÑ,ã3öó˜u{9lšý"¬5\›YòG¢Î<Üt"1o f¢àÔ¨²nÿvýÆ0ÑMHÑ„°],×Ý=„6ô©ÍµýíÆÏšÍ"Fv¼^.U—lÈk>½† dõ²›ºï3Ę9 9g¸ Р ; Iš£!!'¯Öð4HÄÐQèß“¨dŠËDza†m3"V‚ˆ‚‡ã!?¯tWEp¦\”±Þg›½ì)”Ä[–¼Û) ofºSMå¬ vGz|œO.­œþ½âÙoxÉ7D…›»;#ÝoEüžILJÁÃß™QŒˆ’ßeÚöV™˜{yaG][AÆ×WD…œÇõæü F}Ljr<똦ÛEUšárùž£Lnw¨’‡ý.äàÜv¡D3žåCAwèCILü¥x˜àǺ¬mq|7œ/á¥[û© ObºÝšíI¦5îÌe‰ZhDüšqÛ-ɰ Ñû¨6]9ß\³\ÝR}ºõ¬ÎPgæm”T¸^gÖ7Ú:#RoYßÌuFDþ:ãu˜Õz¥UÙ䎷QZ•yjK’ç‹Féìn8»R¨¢w±P×·œ%£Pï@îm\U o '5Á °&êžö¯zd[”£äºœ)£ÜW@‹ œ‚ aj=¶gÀÉh¬ÀçLÐ&xÐÆwÕ!îšowj¨ÝJƒnZ_s%bl'®}ÇAì`p¤jžˆ–Žq .²—ÿ'X“õ ÔTY|•H9wˆœkS+:Îçqþ; ï++mä£2x‘c»Ññiº–œ¼bb'kˆ”w„Ày`L´(—r+A+0n< *{çvëÙ,6YfÊïÓOâî©·ì]Õ­0ýØÒ?O‹Õg¯àgO¤Q[2܆!¾˜z'¹5y–ÉÏ$߈ìCû$7žˆ`q?¾3Qž”é2Òã2ñ³®Fºg£FºJ}‘îÙŒHW‘7ÒýCm<„˜×-]^;§ÖÅÎðºØõtU¬Q/Ï÷Uñ¸ã:ñÆ@-<Ñ^ßMIQ¡1P=Ê`³‰ùµrNnúDtXø›¥4 &9cçÁĈ÷.‹ŠbéÚF!÷€)@ÓIÄ~~eô/8âQ>c¸Dér} ©/¢äáÔJ(K¸»äÂ×ì1"XN™y¥.ª w8 j «z¦?û™2Œ¥…ȸTUüÛŒ²¤côÿÃîVì¨Lo¬5à@`ÙQŠïÈÇAFöõ;ín¥Ì*¤L6UR•œÆæX ó_íÀ5*. •ÌÛƒŒ¹ÇÀrÌ·h ´Ë؉è™EotçV&[Y •2ò+QÉŽæžO–¨â^h Z,@Z7¶ª‡^‡¯¯òîoœ3œ8Pó•¢M¥x:ÿI/S‹Š•:eÆŽY®î=éayíCx.Y…@õ€‹×Áe}£‘zÁe}3ƒ‹ˆüàâuXÔ:àYxæÔšxfxMì—˜€àjÊà(²qU—÷Çö+³›<øH _[ÊØ2RëRH‹°1ô’À£ÅÊB£DÜAḦ;™‚öÝq#.Ü"Yx¿±t+%Ì¢p©w4âGÍX)*nXØÎ`¾´JÄ»¡êÓJŒ)šÏ” +:,¬¨Í‘9©1¡£žEzJ뢑°&xÖ£áVwôP çXtêÙñˆ ]cºW zìéJ©nšý°efM;õ<Ü9vTJ€îéO^#= üûp£Ü|;ež‚„ó-F|‹¥½ÅŠ/1†ÇæšñLšî«Rµ äq nðïVµ¼ð5Ù‘¬̪ͭë¶Ä¥‡à‹=úW÷SþY¤øú‹öFQÄFsF;X­…æ+Œº¶€Wh_àë08‰ˆqô݆³½@œä>#É:|­l±ØE"/p­lcÔáöBÖº{ЖMX–¤à.K×ÅΗu±³º.öàUTa׌qLÜöJ¹í{z„ŒÙ‘”èŠyGE¯ƒ<ÒASÿÝwÕôDÑ¿Ò#=m‹íG£«—&²=ªx Ùˆ1úÿy3E–´œ }Ï2¯èl¯ºèÈb"í='"I½Aåzì«;WÓyßÙ8»Mv^ÔGÆ úeÒ`JÃÓô€Â̳­!xr" ÷ûǪ‚EŠsFžv-äÈ/ܱ|¡‘Œšé¹¤9ÎÑâ£ï‘¿y«ËŒ.°L%E—±e›¤oæ0©¸lƒ×4Â?ÍÍ£ì9Zæ ¡–ºçÒk¢T¨ÈñËBl4³féígúa•lüÅtÕþ£‘—†rBÜ¥7H—¶JûïÂq¡z½wm=. ÕŽ¬NŠëR¿C9nÅ×>6(DµûÑÖÜ[O³_ÝZIy0µ«TrÃï§GF±üÂo+>q’§ó¬’7LÄ"h‘[òÆ Ê SLXÜò¯Éšú}äáÏ–±}›Àbr.øÕ&)ºÕ¤œo… ¾¹‡ mö0çYá‚çmô¸ÖÌ endstream endobj 438 0 obj << /Type /Page /Parent 681 0 R /Resources 439 0 R /Contents 440 0 R /MediaBox [ 0 0 595 842 ] /CropBox [ 0 0 595 842 ] /Rotate 0 >> endobj 439 0 obj << /ProcSet [ /PDF /Text ] /Font << /TT4 840 0 R /TT10 582 0 R >> /ExtGState << /GS1 843 0 R >> >> endobj 440 0 obj << /Length 5978 /Filter /FlateDecode >> stream H‰ìWMÛȽëW4rj#šÍoú¶;ö.&‰c###²9p(ZõFR(ÊÎäo$ÈïM½ªjŠœe`/YD²«ººººêÕëoW‹W«UjœY}ZTa•›ˆ~üRDa›4 ã(JÌêa±¬ß,^}ëÌæ¸ˆÂ(JͪY,ñF&¾.þlßI˜Ø›€Æ{”ôÿž‡Þƒ"Ìm³?´& ó0 –.)J²o—saaMžš%æ)­ÛÙZ4n-Ö­Û'JžæºœfløßøÁcòòÁnäA®È‹LÏpˆÎ°”ì77}E2RùQ ?êQŠÝÓ“( E÷H±’EGãWFÖPK¼ãŒb[qhë uöž¿Z>rïÜ€ò›û;ÙÜôÜÝxv›"‰¤bz8Z ò– ®:«¬EæÓu>AŽÄáÀ)!X¥âtu¼ÕÁøc°Ìi´ÖEÚíĆ¿^³®_âQÑ5Tñ‘ÇèŸWw@·Bc^HSÚ=‚˜QG~­Ž=bc±5w³Ž. Š£ÚkZ ÑЩÕ5ú$ªé¤E¥ÖôàULËï¨û`õNv¾C*åV¼oyÂR§wTή×[~¶¦øEþÅv#uöY¦ Å¥Ðß®Îtf‘al ê^Ú¤Qš%ÿ÷íâÓOÉòÒ K7¹´œÈžNt)¥mî¥9%i>Ç´éìâª1Á‘ŠW>™š%#¦þg©n• BEe7æûyQ::ü¢t\õEé·«O^BS)Ï‹hÌ "•NAä‹`âÐþÖcñ#•fž!T·^2â'=0ð,®¢„´¿#Å À[³sOáûП}ðµôyÖ¸–¨x~5¶ô’²³•+T‹Yñ@º‹ŸàÑ|Òs¿9îèÀ„ù{sך«JÛоš @“ç½iFãžpšhìݱönF[*ö{~Ì:ÆÔŠaVm½$ÄAuRÜ)­Nçn!T€Q%SN–µ¶kù2wòÄ¢  ò…m{…NV3Þ;£‚. pÏ—tþŒ;¿#õãA 7ÒR«nñ´v²¼+˜D½Äs˜üR¬$LßÔ¡Þ ‚ý~òþ oî^qJ߯â8©]éçmàÀµÏ£¦Ö©Pk‡L'×nd=åÕ¹šÅ4Ùz1©åĪû,Ù´'måX‡±çÐÀáÐZ ±­×òlõiD‹yJ&4€Í;Šb† øO„šCp剄³Vp,ä/f¡Ò…Ìz;R~%ƒ#µÔ²O@1ÈF ú-FP^Ù¹*cïç¸â/œ?»AþŸš¿DÍŸ](Ÿ7¥Ã¤1ô‚Ýg OÈMNyYÚz8Ÿô³ú¹u(AŸt7îBÐ æ—XMdÝNæoøë5kNèù¤¥©â#¡~r­ËX»"ŸÙ±Q"”Éœ  L'líkÖ'ù^Îl¸S…ÿ^Î\4¯¢Ë´[…/Òî •v«ôí¾0´[Ei÷e‡Ah«‘þ:@a>wù‚Ø;uAì¾ ¾@®³< £ôL®£tB[>àT ©š ¼4Äój`Äã$HEƒY5ÕPL‡È—ôÿ5H¤ç¤\…YˆŽ‰¹Ä8JºyIǹ/éHñHKS#€}·ÛP·u1œú <mPú…Ë´û3¿µL—ÑŽKFX™ôpˆê™ èòt1ê5:ËZy6=o¿”&_o€*D<Ï(Byœ ”¹—°º.h~°ÄH6l*DŸ ¡äÍÛÛ‚+fQÔÉÒ× å\‚`}¡8tßLãsõ*)8ÔGÂ9bú1Aìñ…û5a×-íõ™r=;´¬¦Eï¢ÝË@kÞ8»¸êìõ{þz'¦›ý¡U+[á.Ìß×L6>²ö+±8|À^›Ö{X0Ç@W•w³ÞõHûF½ª‘š%ñ?ñqFrG– žÄ·”ŸT½¤bØE†¯«î6Äþ+ôGøé›1Øó´{Ñä9^íNšïÈê¶¿åzU{”YM½“8+h?FX24e.è1Îl™³9~¨û^®m•\rõN#§Î½L$ÜXN×›=¨µÜf½Û¦|ÏÌ™É"%·|·áË}7NÇ0çbu¥­œ ÛÙ{BT2¤#)9ê/ü]wÛúŽ[8ŸÎÃ)Úþõx°#,Ù«¯V+BœOäB×È/:=‘¥^Tá"]öy\üÐwêÙ0zòYd|޹T{†ƒÔÙC\ÞÍÔå« "…§Ô8Py‡æFg(ñÊŠ‡©©yóODòÁ ,fÃÌ1¾Ûˆ9ˆî=±£ )4œÛ5ùyá Ý”Jë…ï)¯Á÷.ïe‰$,% ¥2sN¢Jsí½‘a™&ú\v|“œQ-m ÍG]°—§W‘/1,VOüN»ijáÒ¥=m·bžãK•V¯”Q#êÿÓµ ×YÂEê¬~ˆ®$Jlzó¯^eë¦áú•;*AßmîÃ@ŽÃ¡Ìʸ&^gÉ&È(û( 8ñVnwdjz͵vãùlÙ‚…A*ºAöÊs.?úîð PK² ;ÝÙŽ•öÒ_†iœ’|lG¾Ô:1pæ€ì¡¶¸gR›eœ;¾dþdhçkß*+n•Ø/eס£öx÷ˆfJ™RïXzŠk¯ÒØ »Êw5$S%M]èþN¶D® ¯ð¨JÒ˜.šS0ýY@èy ýÑø³”#µòÊì$e¼bÕƒžN»¾šõ6:E]÷YvÖ>Ÿ—®dòFxûcî™ñ¼fÛÖtGò¾ýM²^’«›ª©+éज़ܘ8ö)ƒ»JÌW®’ïfèÈ8ÕŒÀ„E'1Eͬ¿;úÓ[]¦Ps£"r‰5»#·½2ƒ¾g9Ñž›ë÷︥| KGwòÀ¾Qm?»—Óë]fO¢{œ×—;×—^{ïÚ3} @W ÓÐRÈ1óOʾ­×F`+ç½á÷F—Y.«3 :íØR}â7¤˜Kˆðø\¿‚·¡ª"[à7ssleìÊçZžM¥fª\4E٬В–¤²›ýõÛýºA‘2™\÷" h Ñn…‚žÄGô‘‡òSÉ…U’Qð± R¯»œùõLeÒ<¤H­Uõ8ú4wûðet¸ %‡?ô€®öн³=Ýk–?¡}\Ú‹„ýnl5óåˆâúŠb/ÔEN|*rb=@_0ÁóMTÄ0Èj€™ŽBb¯³¯²œÞ5±{Ö¿¾‘ºdPoï#£ùjËëÝ‹êÀÖ-Ìüe™¯e|´8'ZH ºÔhe¡¶LR¾#C“8Ñ…÷û]-fº–m/ï~‹ˆHœ0& :¦Ä™ã·.~Û°-J¬11}“ ’žít¢ (•#kèÒ£¾Ù£ÃÉU=ã[“O>œú†{¦·´¸ØLLKE/bµ÷µ÷Öµ¿¹û8Œ‰uáàOLlê9~êé;z–Õ•|ž–|—%@:šT×+¦ž@L Îò‘[s/M¥àBUV¹a"!w`<Îú¬ªB·xÄܘےßP‹aì*„¸1-¢CªŠŒ;'Œ’‚Aúé <ɹè„îû¿¸•“Ÿ†Þ6v¡7=ø1 , ·[ÚŠÛƒôʶŽ+GÐᣠ·u6p¡ë>S#e¤F«)uw2F’že\ºN Ï 8¾}­Y'<í»Å0Ѭ˜S;‚/3vâ€YË“U‰N$>æZx]l$êmßßš4²(G(‹}¿å£‹õÏ "À¦†÷(cψ(W*ßq*‰:ú—{Ç'Ó‚OWÈ¿ûÙ½Q½bÑf˜jbj±áËN¹¦°©K^Ê'¸7mÝMîÅ• º°ˆ>?2–6\[¾Gµºç‰ÝÛ¶“Ð$N+íý=»7¤Â»‰×L^ÓÕRJ°ÁäË7ªä/µcu­©{ѧš0íââêGâãHöÄšäV°{%R§âY›L‚=Sï>K)3ßè÷^ºeèÉñ$ýã q<‘Ob'ÅCW{åxœ…b§^‹`¼÷e”NÐùÒæ•ŒÒ–ÚôÌB=³„ÎìâgòD“Šã×§º*P8r!IbX5þ%ïƒ@‡qß9kNé@ /€v‰ä•¦x *ƒÊ°¬ÕT(gL "jlõÓž3®’© ‚J ›úHÌm+„Ãø‡ñŠï×#C™-wSÕ:eóÜÄ8ðÏŒÞtà©p1Ãç^&}µzÃÏ:uíÜkÉãËçJ:—+í^ ÐÓR˜àÎË—oØ«¯ µ¬´×šŸÅPù ¢Œ á'¶QÝ7>MeŸ§TßøT}b™Ô|“¡ŠOì*Éþ©ä›´÷bµ÷–µOH>/IÎÉQò™´G‚ŸE›EÝãc|bÜRĺ9 ßb–w¤³dÒËÑ•Ís †?Ç-<'g&¡2ôWÐÙX¨Œ 5-CÕŠé©îp þ=P°TÝ”b´8ÚQy?@ê´¸ùCüœàžÌÊp¼¶S»p1Ó"®]¨.†ˆ¬>Û.:úßÇnñý,%=éäEÝ–D™dÉ;!’ZеžðéÑJÅw[z’$XDøðïhS:5©? 'û ÿ ˆØÉêâgÂÉ3v‘E*‹ÜΘ3—|Ò¡û?oí×V™}§5 Ê]Ï­ËÍ4=mÚî‘{|Egµ94D2uõ3Ñ61$y ‘Í#å·œyZè2¦b uídÖ¥ÅÕJYÓý/÷ŸK ý†ÑÔsß~}í8ðe½ŸïØA²è¾.tÕþr/ØÐë®n¡WwóÇÇO·(–Æz·ýµ9@HBŠƒ:…äq»“D“–À¾ËñM ˜Ž‰óŽžDe,QU ÂÐT 4e@S©¥)šIE2ç ÝJQš·KN›å¼p?Nje‰‰Jjâ‰ÉLjšd‚é€Å­Eê(}î©©Ì©©·Ø©i ö)àhу}Óƒý«r³‘·T\UÌâ2-Vù#xÑ«låò™e6#=kî:{f"+‚hë=¿ËõX‚à$uËJfŒ‡écun‘²C¥ Ná·4Œ´§ ig4Œß›Néý}Ä/éÔùh]“,ÅbŽà‰ï®wìþXH³YxO¹á¬-‹9ÿ¿Öz•"2uã° ìöŒd¾,ɇÁ1pµ; Þ‹¸c@_N¥.þ%2öqYÖÅZå-ߘˆO¤tu}~µZ9ð"{!tiYº¢ØNo…ç¿Ý‡¾gâirçlÑP¯­}›'k±zLE¶,Ûš!8®y‘´\ó÷ìÌqpaÉSY»Z’«#09RíÕ.Ç•»œm'Ä¥k:Œ¼ÝÕ@=ãâ’#.AˆEs°> ¸Héƒk§ü±üHp?E³L>¿ÃÅ\õ.¸D|Ñqu @y$€/ñ±£>Á˜¾öwe:T5J™å²·ÃߢØ`/Öà5”€/z2­»’† È»åÌÎK}À´|bwÓ> Óö‰¨# úûbÆ›!}A™|ŽIw:@úV犮–Ÿ9Ï—Þ±Dù rêÂN8ëosvÉ#$ þÃ)âe³`ê©·ÄÝʈGŒx%ú-ýà\<;ï ¦!…ˆg]ÆQTã‡‹Ë Ý9šô€ycE¥‹Ú/ŽØW]gÃt4z]¶¶V¬¡ñó¦…»JYañ>É̵f®óžÄ«¬#˪rrëù€|½ £Baѧ§à)‚‘/”ùž``'Y½E"Ê/=¾ã ¹‡Ïž kúî^æ0²¸:_q…Sâvè"ØtaA#ó-ºÄ,­w=g8<’êÁÞ½¤#°ìÛ8¹N³Üã$µN³Ã2MìS¡²Oµ)b³u±ŒØºåFlÜŽ{Gn_¤]z(„Þf[¨H<(ãJÃGîª`Nñ?ÒG) ûú¤R}F'3ü(‹WÊ<—Ò9l=âש³Á/b3 ÝŽvóX·ÍŽÇ @r0j½&%!y¦šPÇÐÁ‰`D]inrQ Ñµ^™Uå Ç6Å›–fÆz9œDËŸ9NíWB=E>èì~]µ=Ú£^à÷¤N@„FD­Lq>#ÔG0 @²%]©­¦Ôiâí•Óæ3Óaàªy-0hìŠ{fP'È&G;+-tb[6aÍîò :€ ^·2“»ÉòohÓ.„Kø±Q(3þ§ jdÏ™Ð1ÍB™¦™¡Ø öCÁ㹪:“I205ð©ˆY?lt\QCù…}Á­Ë\;E–‹G® ]™¶–aç¤GŠò;ºXÓNÛ¬~Ô¶L µÊ5ÿÖ[á\!ç|—ÕDâ~9á¹ï⨌Ù1ŽGµB³€ÔC‹/• N4Ú¬-u,­> endobj 442 0 obj << /ProcSet [ /PDF /Text ] /Font << /TT4 840 0 R /TT8 537 0 R >> /ExtGState << /GS1 843 0 R >> >> endobj 443 0 obj << /Length 7173 /Filter /FlateDecode >> stream H‰ÄW[oÛÈ~ׯô‰,"†Ã;÷m㸠§le_œ>0m³¡%ƒ¤“õïhpÏùÎ’’%‹Z¬9×9×oÞ­oW«ÄX³º[”A™™þðOed’4ˆÂ06«ÇEZw¿xûáÆšû~a˜˜Õz±äÿHÅÅ­÷ރػðé,öÎü‚>¯pô±÷ó óÖ»§ÚÄA„þÒÆyAú½¥om{&KÍ’N³„lGÞgˆ‰TíGõ:ó±Ú>û6ôªÖÿçêïì{!¾‡&·Aæ‘Y½‡cq?ƒñó‹ßίM…ÃíÆO„R†Í\Ì Ý3:«¦¬%Tg¹CWàgÛS¾¸Œ©“¢ŒÚæš Z×Í÷¹Ô¦*Ó¿T¾|lþB–œÿê/cªæf0OtQÖ‰hãÇÊ}/2(ë=úùìÑ-œ’€'õô…*Dè›äJz£Î(Q¾²µëê ÷®×´5‚˜IHi9ˆd„Qtëmš®^­¿,HÇ‹…\ðÔS™G‰®6Pų„< †}¥ä'.Qב— bg)fƒhùáGÜ;–I¼o`ÁýH§Yñ£›©ÂJ4°=µTwt¡eF¾üIw#J¥f~Çç‚­ ‡óSiÜ4¸C³© hZW-‡ièFóË™ýã#™ÍîDêªav_å^–pgæ¹÷ ¯F9ƒ@¢vFexR§ì\†À!¸»î› ‹ÆÎ'½*ÇZyàÊ,LwãB;e Œ¹PÛFÍ<e”+æuÉ3ŽJ̈{õKÄ©µj¡«íîœ/Þ¦ÖÿÕÝgáj!#’_|ÜçÍñ·®y#‰1µ“ ÆÙ+ÊLÌȃp²ŸNs^æ^;?úi ã º—À4#ó·ê˜‡A5N¬QOíŒy %„´ñ«ÖÝ¡Fys·lå§Û+nYˆ0¶ÿUüÂä Žs½-#pß—øÁÀ80ÎŒ OÎËèިēïµÛ„»ùÜ‹‹ žæÇ¸>çåˆgB®ÏwȯB…òJ¹ß YžOe`ƒ4›wˆ¹E&˜¬u§4œÏ©)à¶R³(Ø£j]ž¥&áJSjló}a-ÜÓ³â”N¡÷S䟢÷,‰ƒpVöéô<ŒôyxCçÉL#žyO»n ¼E%DSÊFïp0г¥MÇ·Ž»öã ‡ÇT 1 ‚¯«\¹eH¯›ñ09£O·N¦3 ‚kNKõæ ïÀÏ´*bÁbgD (3ȱêêÐ^•jèճț»*–vÀÊÍ­MåX`§3¿JÓž“¥†â–å—YÍÿSC *PÈÑ~ÛdD'‘L&€@zÌ0§¡*þÚ =@×ÛQ¾5ƒ¶¹Ü¿D¦6üV丆¸aŠWu™·6º æbS9nÎTÂöµ¹Pøö(Çw?×IÁáª/ÌÍÕ'Εå™Ïs›MTü.e©£*™F•-få˜ :r#d;Õl[Ê6j19^‹aœÙ©£1ò¢ÝTëuýD—Cþx=Fž9uŒ<3|ŒL»áØFHKÊD1ÛJ`Ú©Œ®ÌíJM?{âñLq­Ã•ŽQ6/éºÇÀ®·ØÞCEu´½d`zŸWPCçE˜›}Uò>rJÙ•¡{žAyÒÊ›ž&ä|ÐÏt¿°Ìþ—[æÈè…“xòù,³ƒ:J+e¤`TÁw)§é²Gr ‡GG³¢[8©š~­«B½§mϾXÛ‰ÓÊæÆÏ%Ÿ1²ÞêÕªq9çŠOeËÃÌœµUß›/äÞRܦJã1Ž–V‘ÅKµÀzæ[Æ!&b||ñeê% úwö$¡q0ÃTæ2½=œ M5Ô¦0ºàI'³-†=æ3Dúë¦Â`´ÞSẆ꼡¶d1§dß³‡w)‹_•ÐèÐæÓ©pnýðÿ¶¨ârí師Ê87 ~'¥WÉQM(cƒ¥þøœA!Ï‘Oê]#Ç`ÓBd9*ÄaHÐÓ‘7·´àx0¹ü °¶B–t]áð“á'!Q$Êåó'[0«5žoÁØmÁ[0—mímÁL¶`Œ-˜»-ËR‹°'÷,$Ý‚ÚO{4ÌÖ`˜ôp:±…x| tkP¨'×àqa¬A!^ƒ'fµ´î•”æ¯=>J]:J­¥žZqA*§({L;ö-3jÉå´¿n½† ÅzkZ¤—G>è ׊Ô?€Ùz8)°R‡É´gýÏíFBZ·À į˜IÒŠd‰£ÒýÀ—©7òOƒH1ï˜Í™3fP}æýÅÙÕGÓl8¹U ¼éô‡Yï)|"‡Ãžº7•±ÎÖ¬Dy'ÉoÓcìOF×úëŷ帷U8¨B»"†Ã§Òw«qßÔw~‰Ñô_Ú«¦¹m#‰Þý+¦|«$ñ ä9ήª²ŽÊ‡­õ"G¶`‘AEù÷ÛïuÒ¤]›Ý\$b>zzzº_¿—˜Ì©U‘/ë7ÔYÍÈèÄ#GîÐîͬL3‹ÐÇ`]¥ Е ty‹jT4"Q—Ò:­µçDµkêA–†³¤öíý^mÓW;Ͻ6Ðz?ÃYvß›Kyô³L/®ÆP$‡2‘$æur5Ÿéu*+þœ°†YCLÖwëèµéˆ+'z6z}Ûu{J¡BƒšGjƒš1ŽBˆR»‘*ø^¹0‚ËÅz¹<êürð+÷£Y¾7xÂ|tØýb'®u`4¾4ëηƒÎùþ뾡kÞ‹škB7ÜX;ÆÎÛÉê"ðB+Â4&¯æd ‚Ð>±=îØiAÒÄÏf¥ì±6ö³E™Ÿ9ý\°ûhwÆqZ£¦“ ª-e;­ˆ+býq¤¨HQMž?ãóç|~–¹#@°Fß>;ÿö‹´ˆoŸŒe¶ÈoãÎþw3ôFy}ʉÑ/Ù_}| £§âí ¹`CN­!gaÀWPÔo®Í®D º§×¯þÒ`ÅŒk8µ¥áexM^èä5ñ¨Èê€=A:ÆÕ¤r? Y*>Zjr/§Ül3-cv0|ŠŽiV:ïl݃‚ý NE_Ó4^ˆ¯ §GÛj3ñBÛst;P´_·:<»b¦»C’ñwkþ½2;æ§×mÍÞ¢î\»û!˜z,žìü´W!ÍÀÂ8Q.’³{Ô¬G2Sý–¿Ìz~–м8(›Õþ“™…Æhð½·oÛñ<±/”ùÐtKÊZè&L84®Ã9¶H?ô¸ôxw°kϧž9eÊwÀ¢„Dv.ø(½ýøª¤qyVÍG…;Vîš{ÿêsE&«x:ËàaîtcœI%a¶„/¦Ó âñÔ$NÃT* w¼5OcŒ\vfÅíÌæâ"ž 6û|a~tëÂüxö…ù›¯$ÜhM Ç¥¨¹DYšù¢5­Õ}йJ¥Š%ø[êC•Ka›GÂÏœø/@׬MiÝúõøÞëßä`ľÕù°ÎìŠ9¸Z”îpÈÌ(Œ›dƒâa÷c• KŠ ò‚~4è¸r§}Ì7AÛB§=Dˆ/‰, Ù_Njllh À;5r”ïµ21å@U¹RÆHèÉIèië®÷æËÑê«þVS¤YðÄÉ;¤d«uô‘ ÛäéÛO}Рx§ÆÌ•ÆŽPƒe)¸²×3¿Ì¨÷îõË8f1Ïu1}‚Z>vŠ ê´=?¨sþ‰–¶6’”*Ò1×@©ÔÊ'ñ&~V›HÈÛZ)À'ÞÕŒ½–ö†\èut‡‹ò,‘„[B£VúËVnõ D*±Åîø §–Â-¾b5k6CaöeêN N7“jšôÝìÐ-â±[HØñ:uT8Í™šyRð¡õÑ‘üšãy¤Ù¯Œê LÝë"Ýæ¶úõ¢¶°³Ó‰U£+ºrIþ?[ý™S?ÏÎ0¹¿–½§#{/ ŽÜô8QÞžo'%®kO•µ`n¤ÌR“$æ%¸j˜Ôй¡ôÕœ˜›‚$ctÉÁ7Œ„­@e«5=¬è80ƒd¡¬†²ä0êú}QµëUï•z#71@½g]Å,@¹1K5ÑRÍB©Ö¡TóÃBsð{H[”.ÅN£kVºÁ*‰xS‹ó¸æ"ïV»Â»f®ªªPUeì‰Ö8ݬ=ëöc÷·¶ZÝoÍy÷oÛcÆ,O´8 ÷èa@œØ‚mD/ÉF%`-jI~¯ô„/vµÞ«¾èmÅàýêÊm}OÉ KCÀðƱ¼.[© ß·*áttÍ¿À¬…`&p…J[³ÄÍU*ΊÈìÉÛ-ˆëltÔ 6eÎÛÐc6=LãŠ(6EôI]GŸ\Ã`fÔ¨-{þç€<žu·?½}§yG·Ì¥ðõÏÙ¸ÓsΛݬÌEíŒé(%ø‰;ƒ§{¹®Ùz×ÚJÓÒ&üá kT˜-²ŠÍ#½œ­9¯Åi»üËi:¡v&EK“¢%¥h @«Mˆ¦”„…âjÐ}%xo´Q¿”Ç™àNL±ƒ•¬Ô‹¯"oª#šï÷(ÒúÊë%w‰Â…x½ß<ãÈù·th\Édøÿ㌥×uú,©>K® ±ê*:H²1ª£<ùOôDó\¼}wý†òî=ÿ¾U%gG…EoÁ,oTvãHÏlgp`éþÖ7vú@‹Ú¦—Dâ–9W -€¬é“æ6@ùDZ#=}Ç ^ËÓçч·§Åµ‹+É&lËXŒ^1  œþ v­Ä` \pBac=k÷œíf0±Ò¡°ð™S-§lµ®kÌz׃ª`ÈŸÓÊ«Ý9*Ðö ‹wÞNœã=å`÷«Ýéä*îìÜÎkÇÖ,5Ék®¸#‚•j¬ä„BO®&KÃsù¢n`;ŠY€ÙXã†ù‘^M+9é‚\Õ¹³jõü6«:yI«žß ©ª3•êEWÕæ(bã¤8çîÙù‰Ogç'GŸ¿ T“\^+û¿ÕÐTœ’¼X÷—f!»{v¦TfÏKÛ´ÔÝЯ eO+m öÙÃ!¤ÆÖSõ*â“€u‰v1±Œ£˜Ú©‰±2nçOЉ°Å7ûInüüIÙ¸Qpö“„91Žœ³©¸¯ºJZ—ÓcÊÃ1Æ’[‚I?¿µkˆêuúIÃæ´×íö:ºÝnz#qr­æîu·N¢, Bg’ª‚BÃ_‡£t4‰ôG;oG d¾VôÓN‡¿jyCLýsaã ½[ÂMBsb8¾K§L›Ä„ÑÀmÉ)„JöÐnʺ/S(òA‘÷­SéÇù¸‘Óÿ†–›Ué KÛ¤ùÙñ&«sn÷þˆÊû~ôØ'}FõUiMÊR2[dg¨MÐ+!WË®%ø)n”Z'a¹š)+ù¼dG\˜0åÛ”Ñt­îyhÇßr[fa‡*^Ù÷ËvÇÓÃ+w<†aúñղܸ …G©ÊvD|íu7_|Xï°"ÚqÊ%)””JüÙº{@R  Êe+—]‹3 €žéž†—ÙšòÈmV—³°ÂæATM,å˜y‘T̼Ø8fNð|Þ›væùª^ðü³‡8^.GïGÔlßhwö^ž ‹ºÎC¼¦4­žß>†õ·ßG_úDêF5ba6Ø æ[©ŸÈ{ÀgÁ6 O•`XÐÏ>íÆ˜¦{qšC%2äU%*H¶Ýgfß_¬Ì–MàÏJô[‰´0Vìú ,„\¦œý½ÎÑ]¾¢ }ÃþýâœGñ³Ú#…qÑ¿†¬¤tTíö1|ç3˜R¹z StÆž¸æþtòáYBŽ a@wÄOGÐB`+I¾7º„a Âü/úʪY Cg4Ú_iB0Œ´þëŸÚáÉFL[-§-<úþa5=ÎÑ=·š S,:nÍûhØqù|½rIýUšþªãM—d95ÝrFçÆÐ™=¾ôÚ/ÿ÷A9Yâ h¾ 1ÙHRÒ¥ça s•m¸ËzýåeYÇÊ¢ŒÌÛ[0ö'.ÍôŸ¾Ií9‘KA¬:Àåʃe±£û~é”ɤ…g\¼€kð´xì¦G@¶EGAÝ„£CÖz¬æ¦£þW¹eò{[—„ê]@ðNf´ÎϺóߣ-ЯÝR VÛDÆlÆ0 ¡‡k¬üKýp¦vsü È4†‡†8hT͆˜’¨¨õÀ Tdº{Bîé–êÝÞ >Ù¨¶±´T_å½ Qýc lµ•„7:} žù×hZõë¼ÑȇqÐmuÛ"»I•óÀÿ$/ÂôY"jù¢ÙÓ½Š^ý0¬ù×Túmxâ_ì§ž··÷ßðm'ˆyi~•b”N'‘o3÷3±”:T¸‘ª ìØgz•جšrM‚5ç&xP5áç ×–¡­;Ët­š~.½RJ›""¡”dŒ+¥øÂ ”dM*¥øb*%™ÒJ)™°Âfj7Øè:ãˆu‘RĺØ5bM©$ÿnK•ä.DRåazUŠªŽ/k›OBé‘àzVU(Î%¬\©aìóˆ’ 9èUK>ñ‰òŠY-uTK´[á·á¤ÔÞéy´&+µTPõåÜžw“Vê ]B/ì¬VÒJmÐJ°ïÑ®Úà&³å´R'­Ô¡Õ0GÓJÝJ;Y ¸LZ è«F6½ù”Gñ…þEì‡ë¯ý‰x’Þz]pËíê'þÐIÆýá–drSC«u×T2%;H˜|À¿ÿ0þ(q•ã÷/96.È ­ºa. ëØÂœÅÚJy9\Þ}½ÒÂÃá}˜ôHhÏ)+›ÉßRR¾Y³N«©ÓmRiþ³³ˆý«’a¨Ñj¯Ñ §Q:{â¥Þ‹ÊT?ûíÝê7l‚†#äE8ÐÔÁV*ÿŸ kfA×\°sPkŽìì$è£çšy—“Ko¥*WÙ‚ ó˜<³ö¥XkJ®¦jk¤äœˆÞÙ· äœ”œX9,Ÿ”\)%§Ûœœ2™Î´ÌJ.D^lÒaÆ(A$A˜5E‰Å 3% "°Â†6îjߣ¶Æ=äE|YÒä÷‘-y‘ÝÌj×#ã­Û‰6k<0®N–›7 kÖx؛ƛ·çX endstream endobj 444 0 obj << /Type /Page /Parent 681 0 R /Resources 445 0 R /Contents 446 0 R /MediaBox [ 0 0 595 842 ] /CropBox [ 0 0 595 842 ] /Rotate 0 >> endobj 445 0 obj << /ProcSet [ /PDF /Text ] /Font << /TT4 840 0 R /TT8 537 0 R >> /ExtGState << /GS1 843 0 R >> >> endobj 446 0 obj << /Length 5971 /Filter /FlateDecode >> stream H‰œWÙnãÊ}×Wô[ÈÀâÍ}ÞìY‚ 2 FºOqh‰¶Ð’BRsÇ÷/²|pªêTS”,Ý ,vWum]Ëé»åìÍr™˜È,gePf&¤?ùÈà´&I†±Y>ÏB¡uO³7YD機…A&f¹šÍù‹Dü:û»÷ÞƒØûäÓ^ì½ó úÿU¶>÷~dÞj·¯MdAèÏ£8/H¾7÷£(È=“efN»YBº­÷‹éڷAäuæsµ=øQèU­ÿå_gQ¤%ÙGA¥¹Y¾£"ËVÉW«ºúŸþ< ï@â¬W÷C½Æ†ÑßzÕê´<û–°¹7ÔoVÝ{=ð À±ÊþCOæxzªóç1 ½1[h&%–¶¸ëL_ƒìŒÔHozS C×å6)N’" !i¡\î–9Nìõ×9Q äλ?Ž]AÖq­lrDy·Î{XZj.TâîYpÌTþ¨!*ðA•”*¶N¯kŠg_æ¯{ࢡÙáØ©LjÍ)¬ÅUו•î/$FTýÛcK™pL±ðƒM‚,¹•@¼ •.tP Ô«PéòaJ ]‡JW †ØÈa–¬|eï+ÚÄœW´‰¾W´+ (#œ”fArñI);Ï!¬×ïuзXód(hùòq7B!._†+4ãJfÈPá6Ê-žÉø¢°Œ¸ó1“±-÷÷òŒ @N²nÞïÌtlîvòŒÍ+äòŒ‘+\âÉX/ÙìòKVZ4Œõ OØaã“ìÞÔœìÞÐi9¾øšo+®ÒJ$ŸÇ^…Úˆ¥6äÙÀO#Ó6ý`„•“žl«ÚÖ•Á‚|ëËÉ/ÜÃr¾ii·X~wëûûw7ßUo{ ÅÏ|{ªðƽ^Å£SŒ&ÇÐE)Üë€<ù¡j9ú"W6ÝŘW€r å…X*Ô³JÙM8Òш°:€äà(†Næ­M¥ÜŸ$p¥SŒñÅPñ=7äXyu­l©9/¾µ¼Â2qvug²ayP_Ýщ¼qšÂG¿õÔ‚çqAóXà½=ê˜@;öÕPÑ(ûÝU eA×P.±GƒÏ¦4;¬ܳ1€ª(Ÿh*mÍoV\ üVÕ¾æ¡ÎîȘgŽÚ¬e ,{ð·•ø³ƒ,l‚åMÅ‚tù-+hˆ§F5@‚©:Yw͈cÖ'.棋Z+ÕÁçÉ9ì$ŸˆLÅé¨R†Ò+J¬Å²W‘J]Ɉ®ÊïJ‹i#«j,-^=Éÿb¶XQú¶ŠŠ.—q99³63Ž>›$)‡ù ð««”š3ФL>ú6œ÷+‡Aóc­å“>…'w:v*­eêTòœ“^%o14«’›ÕÊ÷{<¨êUóØÔ½ô"iBÜ”o¿¼×Çèíw÷Eša!÷æY U%Y“ÊèçJYC"š_1jhß‹ëKâÅ4^.–ßMÐcš›jµª÷C½6.Ã…ºÑ’øÆ#¥qå5Zs댂¡4s¢ÊüUŠ ûƒ:…éÊ«û’¹lA0"-«uÃòb.jdSÆë/ü~Jäg¢ù™H~Œ­•j®Z,”S«;—÷Ö\6†*8wœI@hò&iP¶¥”-óÑ»…Ó†¡*/ÕNã~+—p'b¶Â»†Õ°s;wju|Ãùuc@ݹ†4wÙ3bÉÈ`T¦.€&¿SA¢§h3KÓ#˜:G›J¼ˆ6¯T´©ÔkhóÊaF›JºŠ6¯Ìb6 ´ÒŸNM¾LºL_&_Aži §4F{lŒ à>Ê+ËÕg_€æbBù­þDý(NC+#—™òêqº}¢fQjT©qXòľ(ŸÞ°#;ÑbHMÌ/-l¬9á ¯ `Ue)¾  0ÖŒ:Â^p °GØ|Nnt,þâŽÅ²6`¬Í¾SO¦ qª3ªq£:êxö®‚VHX™œ¾Ûý; Àáëó6äºÞÑgê T4 5!jëµsòêJ^ ÌÁÅ“ë ›UEU*£=E‹¡ŽÝ‹š<ò”ˆ)„˜âÜë5ÓnŽ]ƒKœ¥v>R‹UÜUN‚IÅq°ÿëþþߊ 6llW­ºª` eÈ}çm¦³šÛœÌ~àÐìànȳã'÷ [ä©´uF‘O²C£ûëï)øÀñJAë˜ õ04ú¢$Ü OñLåÃ5Ž= ðuº ½õy¬ *㭬ܱÕxGCÿE6ЧôçÓ­ÊâØ“¬¾‘z¸1fw§sk:ÄDZ¥x·ã‰ëQ¬iÐðˆ¢åÀÜ} OgVÌÓ™aÑÿØ/·Ý6Ž$ ¿Jßí°NÏ‘{g;ÊBÀ*kXÎo(jb1H™öc$O¼Uÿ_ÝÓ$gä @à=0LMWwõ©ºþ¯ÐÛݰQ5ºÈ¬‡Ó!ª)¬Þ 9*³"óóô½–"÷Å^ýðõS…ûNz 3Ùâ<½†®zR­¾(lÂÎ  ZzL8.Ûç!4u}òa·×›~V \mv“Ëô wΫ4·ËÞ.ŒÇr´Ò—‘Æ:0¨)""¤sÌýÞ™‘=]+sýt´°Â¢ú¾ÊìÍ+~˽yÍOï®~ û»|w¬·U-1^Nè­Gõvb é­Y§ôvb°ê­™&õvzÁtµ¸jÆ–Îô¨8ÑÝúÀO Ü ÖkûS÷b`‹lQ›Ú¼´ÍjN,½•ŠHÒ±¥&¶4”`½=‚ÁxÄCŒšXÝÔHþÀ]…Xß0ÖùŽp[Ù[^SAµ>»'ß4yrO'ÜðÄýXÕ)Ú£Ú>'ѨÝÞ”|8çì\å9€óŸ K”ì°Âà0ü.Ã}a“ "éæmxí>·Ý>"´p~޳ÔuÉmù’'­*Ä ³ Zõv%™d_œ\g¡ýøÐ3ö8ÑÜyR¹i.ãš;>0h.­“š;>šKÓ´æN.˜n½™êÅÙrOMÉbNMÉd§¦)õrÙóDcËᔼØwÈ…ª Z¬¶”„šB²`UXâÑäxGyè°¡å ñöƒ*q³0ì½›Í㘠Æ~(w&þdótÃpî ˜\f…çéUJi0Ó—àh¼£±Û„Ýa¯´Awƒ—nìÖ MàË(ðÃ)ðUæØ|o{1}ϳMzˆdú×¹‹c¹2ê»­bõœ.ÏÛ˜[M¡~\³8ªäÑŠòÉcÍ ›}öYò¨ìçCø~âøÎ‚C³’[öÂÞ·4¬ëLѺc²öLÖ,ϪlmsÓ‹™¬£[³U£d‡m˜ß~è©Ë‡„Oï]Á¾ >ÌTFôœ»¦Kãu×IŠM÷cËc¿n/L}ë)›˜8Tžçm§êËD^°<.­RÝ]Â'(&Ú#zF]ôСv}Z‚P7ù)™Àµ¢É"¢ †~;>)"Ÿ4§|R@oJðI%Öá+JABi¡Ÿ4À†âˆOÚ”OÔ¥‰„"+Þu´liy8Ä5Èë~¡â ¾9‡´CŽm“;aÅP‘C/Ývûß\†fyhŸÈõz¤Û••#šÐ÷Öœtca]@âYHX­pOq¯Ãàî˜õÊ¢º˜O±žGYob ±žY§Xob°²ž™&YozÁêV‚ÎL !j}¼âQk\Ò¨5Î:jྡྷ(dÒɸÏrcæzùQÂBCMRœ¼Å_$ä„~LÛí‘"ær§”=_fEÕ^È´K{‘·’[ƒ5AMλŸ5ÄR“Ò?äBUâÈ…'ºÀE†ÏØOÔ#GžÒÕÌ[­;7olײ¬•i®ñê3\Iaè¢õ ±/Ž”tSûWÅÕ•:þ|¥ág/×`/‘ÑÄq›ÜsÀ.$N› ÝVÞk ÛØ¢ûjƯ.òg]_”óʲQà(óÙ׎¼¸ÐÐh¿^¹ì–’2õïWKa§+1i†~”ÅUG3ؘó M—’c¯ ÿƒa™·G\éöæèEÆ#U&üÕÀ+Z÷ýWyn‚ÆþC1ìTõ„Á6}ïðe¦–g‰«Ìª|§ìU³×€J^Ùp¸môÔ&)A¬–Hyz§< ‡:Ç |qf‰¸Ï1|m{„rJªŽ€œq[Ó¦åˆ@Z1”rspNig¢ú×þ ¯’š¨c.rÍûܶüðA{$v¬K³qÉTî5c¾Ìé³µV½l½ý/Nn·ðˆ+Ž =cc¢(J¯j;Nf%ЉFf"ЉÁJfš$ŠéÓ­7S;׉NWéžRð€ VC TV+À÷zû/NµÎ:IhyNc•’% Þ‹Ô@LÉ"æJ&æeèô­(˜dªkæZ)é@•tmbÝ" ìÑÙ§&î…èçrƒfUtò„LMEÇ·æ5áÉ>šÔ éÚžH:Öz`ó¾?sÔ™§% ål ]QJaò›Ì!1¥Óýž¢Ï6XiÝ’’¯§ÿí$¿‰å^q"ú–«[È~ƒ×/“}=A=‚Ò/ï©W¢ ¡×õŸÕjÔõõ¤2[ÐìUf¹ =Iy|÷hFXg6#+¿šŠßªâëV¹¶ç¤?nÒÛ&!öž¦Ø7ƒØ3ÆdÑ¿Pùq@§ïjÿ©½bãfJóÃYÚ¶í5l© ±Ÿ„Úñ»×,["Täi.˜l¤r¸ÒeU¨Rræ;À~/Oú…“˜kP{¼Õ0CxxµšKwÃæ73%Pë#!Þéäõ³rœ·Ó.‘ÕZ¦÷Áÿ²ïwë[šú™2ËéhëÝQú(ã#­¹ó]÷«N¿{ìådî§—ús¬­ÉÞáÿKœw‘½šáØßÛç¥Ûîbÿ›ËÐ,Òüé€ìÔ#Ý®JY¤jÌrÍI7ÌÚ†—YÚË\èݪ‡¸ÃapwLP¾Î§ ÊŒ£51ÐʬS51X ÊL“5½`º œ³ˆ)ÏV<„›eË7Ë‘·vÍÁÿr×=G1>ÂÛÜÎp¹ZuOò .Œ«°+o ‡ÂEß"EkhÑ2ÀÚ€ry–v%ʉï‚0nƒÓ5$8‡ä®mèZº<®„H·°'ÐÚ¨„좃÷ð»Ü ÙmëV•@Î9Þý¯ œ­éZAk˜@øëYÀû‹9.q. Üo4|áòÈ5ŽpfE¸‰†pfB¸‰ÁŠpfšD¸é«ÛvÀ»„´`lꋺ7ig´MÁøtf÷jDãôùŒ{6ó¸g==Zž9¼q¿f÷û¬ñߢ¸­ endstream endobj 447 0 obj << /Type /Page /Parent 681 0 R /Resources 448 0 R /Contents 449 0 R /MediaBox [ 0 0 595 842 ] /CropBox [ 0 0 595 842 ] /Rotate 0 >> endobj 448 0 obj << /ProcSet [ /PDF /Text ] /Font << /TT4 840 0 R /TT8 537 0 R >> /ExtGState << /GS1 843 0 R >> >> endobj 449 0 obj << /Length 5776 /Filter /FlateDecode >> stream H‰ìWËnÛHÝû+j7ä b³X|ö.q܃ àNÐVc^Ð-3%5E¥Ï˜ùâ¹çÞ[%SIc634 ÐdUÝGÝ×9z3¿ún>O5ó‡«*ªrÓ¿qT%&Í¢$Ž™?]ż׭®¾ûÛ5«ýUÅqjæ‹«ÞHÅïW¿oC¹à]Hk.¸Kz¾ç¥Û}XDy°Øîã¢<ŠÃ™uEIúƒYhmT&/ÌŒVó”l'ÁÏ,&RM˜D6èÌm½9„6êuøëüïäRa£Êf…™¿…;ü¶ evåæ)ti”»°"í}˜Fið%t.*Å¿"x “„ëÐbq&p£QÕ3Ù4ͽjë ´1{T‘ä&´;iÓ¨ Úþ Ë–‘-ãœÈÇ©;†Ê‰ƒ¸[EŽeA×Òc³úøúlEQ8sq•Ñû EÄ’)òÕÑç®g]ƒ7t‹È€_-N>„6a¹¦Íþ Gv»m‡cHO,ͽWŠÅGïÍ®c5#µr¾3¬y+Æ»S¡7µØ‚Ý…ù!Ì£D¼YãñÄqΣ4¦J=M qÁ/‰DùM8ËI?™É‚ç°(´I`nôºîÛ–×ùLŸ5ª¢‚v'š½YÔ¨TrŸ*ô§9fö,Û,Ú*ó‚¼ã.±øÊ ‰)hñ€µ}&Þ°¼íê^DåЗÐV$nþùñã¿X»Y°p³«=å"â Pÿ–Ò¿R²Y>D"*NCñ¡#]9bÊižYdÊﮩœµ\JOsØó±zÕ|ïMèˆ($Ò±·$>Øq)&Ìû]ßn7¤ ¡«!Œk³'#%Ý›Óß·›ï¾ÂÅËÀ,›2^!Tè% »ëþ{³Ünþ‚Ö¤æõñU84,Bÿ…O›F…Ÿè³â&Aø¨a“jœ?e³óÒæ3½ÑYä&šuÙ äëRûˆW_Qö%tØ•¢Ï¦j×µˆ >kV“繜ÿUü(~”£¦œÃŒsHwéùC²hƒ’Àt:±Ëí(ùÀTøîAœ6õ†ãGå±õKtcã#×GcZ¯}+z®åÑq¶5º©_›Ã[Óµ‹W¦W]:åD©×kŸqY9 ゼ—AÝ ÉäÛ%3qà ¹c½X4;ê·ÈäbŽÖ"… W ÆRŒ;Ê&´‘ÿ\v—]Û,idà8Š<Ą̊¸r!ßÊq¤ÿéh­+½7±” KÄTÇaÝ“C§ÎxUþ½áe³õ]vtⱕ¿±UX¦<1Öt¤˜ˆÌbZ ¤¼BØ1ŠÑ'=…ˆ3$%ýiLRÒmU£¹“åkÎ…ž¡ÖmöR”rl+è#‘Ì0ZOÀÇQÝ÷]{PPL¸Âê¡ °º4]ó ½LÉ_ôjàÇÙ$`ÇI:¤=— ÀÅ"ø‰Ÿ7f¼–3×Ï³í ‘ÊØw7~™ìþvàž¢kQ¹ãaœ€”|0×íFs†)ÃC.ÕŒ§|;Ù;åiý›ù•5­¹Ê‹(1Ѩ”×ÒÌøÙ5WßÚËK¿YÚñ–MËÑÞ¹ Mifä~7§Ûæã턟]´šÐtÔ-gË3ÑÌY¬\ýú®^•˜–nUIDêô>“»ƒÃ“»ƒÕÉÝ7óIœçù(,x6š(RU·(m&)UþóÛ†›„…µo{®¡œZnæ’|w6̈©fsLq4òJþÆ a–Ñçðï ÐÅù=Lò´:BE5‚ŠŒ¡"¨ÀÏ*üD?c¼0/ÃUÅñÓãWĸ­Ÿá1û[¾2N¡/¥¡_âš¹]Æd9«ýY>k–YËÁƒ¬5U®™z®‰Žá³žmfÌ6iùQ¥zyfptÇBB9és+{ݹ,hgˆüƒ Gà TÎYæ­§O näø4ï4·\<ÿÿdÖ·§4aàÔ_#¡í êÉ~üçÜSõ0ËK8]Vy^ÊHÉ/,säƒR)š6üÕƒª pÂB8!㢀¤ë˜–  ELYŽåE„aÐò,ÐIœE$[6­޲ʉEuµ¡›ù(Ìü凰”\7€Æœ0s™0oÉØóÿ¿{‚FQkÍÏ”ÓUÇ) Àƒ@`ËÕ1è[–‡^+*…=Æ®©—ÂTð£Pr9è’e¡?¹œ0ré—UBlˆ‰µÂç1³‰åß"ñ|‘ú¸cªØ<@:„޹ëqTâPΚÒ\íÞ (§Vâ=ù=dIÈ4,³aª—ÁøFP ݟFù†£›“ ç‚ 2ݽÄp.ƒáèÖE†sÙaQ;ð›2†¥s—§¶GNMm Om_à1YY<†’ju8xÃ?z¬ô¨E˽ yn6ú¹-J <ÆÑݬ,ô"‚©eò9_ñ“è “ž(m÷Ïo™l‹Éh*æ< žŠ< ‰Ž‰ŒS"“OF.ì#qÇÉ«“ÁÜ’zá-N¸Lδ!õk{ùƒSd]˜Œ;e2Ž™ O«BxŒ)tõ[™Œêö<&å‘QqžÆxÓÇóBa„ÀB`Ž2 /°ɾðÅÿ¤/ž¾$"–#ú’ŒéK)ô¥Ó—„ÑÈ)})™¾8¡/¨ &0‰ÐˆR užÂSÉ–œ0˜BL) ¦Tèedv£1_rJyS\ñ$¦ä~dÃcæ’ê#ÑHîOó?IbÔîæ‡ñXüÿÎaZöpsBaÒKW›$0æ„ÃŒ&]š«S‡]ÍC•ºh»ëi4¡·ðä‘Zº‰9NEÏ; -¼(Ç;ö=²!‡Æ¼{@éô–gd…ì:ÕÑY•oXõò•‘ÏGQCîäð‰1sG²Á5ÕOF]³Ü2œÐˆÑS굌IcxéÌHÝ«Cz)j|Ü‹¦ÃØzc|°–'CôEGvÍ')âfÑs?ü8“ò¿æÿÄÏŒ ^ËœëçÙvÃù»¿L-ø›v&·.«]hç÷܇õÐ92n¸7Wüq>ê¾ïÚûÃH¸9¥YU\¦º9I;/*íÔÝK´ó‚0h§n]¤—µ3¬’ˆÈÕ¹ËSÛ#§¦¶G†§¶/Ðδ¢ÁŸ´3Îìt^‡),Fò È¢¤c.Q`XM¹Jô½åçÖž¹<Çtˆe!ŠòLd.#Ú‰ä)- äF3av$¿±èz&°¨L®X–ØkL—øæ8™ólÊŽ-ê˜路¤qßóÒ­´îb»£zÜí᳨֣/"Bñígy•í¥lûIàõðˆ9:£i35t`©µî|T›,½‡Óó5qõì˜ÓRršIN3Ixsγi“÷–ŸÛ“ÃæÍöYßîȃ” ¸CIC™•ì÷Ì$"º4ÿx‘Æ+÷ÁÁÍØôÉÒJOn¿*Ò°·Xã0⬄q¬’—W'cÒ c²ÐÐl0ªî˰Vvé„9J×Ì …ï²µ’Ãk ãKâÄ®¹ •1÷*ÚÉY¯üÄ£ KÃ益3MÍ$Øq6½ùãÛûÈà§?d(§S°ÕkŽ~MTrÍ}Óÿ›ùªëm;¢…$àâ7¹@g M“E¼íK ,h‰²Ù*’KQIܱ»ýÁsf.II¤wÑE¶}±Ì;sgæÞ;çt ã‰HC’ÁÓ=eN2ãÖ k˜{¢,x•-muƒêíôƒÇ¯;³€…ON"âl<ƒ¿Fþ€ sí"©ÍòLiOax=féÆß¼Áüƒ ó€Ï_…`‹1r¨NÇÎ*…?–|¸ËþVv«U[{`!á}Žgà›{œÐ`©&¸Y ’픟„œŠ¥Ü…i*À MÑeCR¡´Žÿyñµ?þuNàÏÎìý¿€ŽŠý³iìÏ;°Úß‚u—ŽQ*çøD¼gïÛ,°v¦([9WJ쀃 pî2^¥½g‹– ”žTj¥ÂÒ†B½úÆ»FwÍl¡UõN1FÁÛLÚAxSðR¥¥íìB Ûóx'×µìïÏ”jþ$þ¾±ü"&–0.@ÌK¡ -?Äë …ÄXíãQ±þ5;”)7A¨e0ï½i´ˆWD 7$צØ}¨›’DJµ:“º¹ðöµ™€LÛª«WºâÝë/ S’ãÇ»»ŸØW.í\îC; á½ç|lûÞsB‹H4È2x]<±z—fà =)¦@:î1QÑCsÈ7DcÓyn“RoDi:þ±*ï5%wn÷Ír”êÚSÕ(T·— _ÈtŽëÏú­À®ƒ£ºKXwD1¡a¦Ô*/”áÉ¢K¦‹ŽŒ³/º4ê:9®:IðA9JbŒ%cÿàB§¥†™ûp›‹ÛåN Ià±3µU“l"±)Ik°J@9¡ݤºldóÃ"V)}féj§:­µ~&GýLF6’~ºBȇ–îÖõq'ÿ¢‹·ïY©2*®6Á+6çK—¿ óãrÈ>ß¼=¨Ûó8ö}àÇf¥_Z,¹&h¦ì2w•'Ü­³²Êç g£õªÍÆ«5va>:bs±¦°>Ÿ:|ðÜ®'ÔËA—@e>+²~‚}@y«·ïå§¿B½ˆÑ?j¿ýŽ1†þ‡«w*@ÛŽŒây? Þsÿ„ˆ-R§"¦Âi"6½Ñ1•αéÍ$b*š'b³Ãl‚ÐTFÙyÌ3ò>¬yï{F>CÆâLÜ.”Œñ½“1»­ÙÊöH}y(á,æmÁ½}Qk3Í ºªz (øÙ±‰ÈU¨ËÁVF¹8…ko×Jš—ì°øÞ i÷Îpzÿ6ˆÒdʆäjâZ1ÒÕ­np]–Í„b#t7l¸n6úù1àŒº•öô T»q`Õ{ ¸XH÷õÆ«ÌK%ñ´©–ˆ/ê£áà þ0-µû'(_È·ZÐ6®MÃÀgÈéŒ0Öú»µ0ï_ÍÆ±wƒ%¾§?› âôá€ÅP-/3žAÜà…síq€]œõ‘NËD»›ì°œ3l›–P±Ô 3"úX©ÄŒjæw;vgz^cû:ÕyTŒ÷„ã¡Ö­S“T²®§–ñÈ/a¼¤Ÿ;™ÞL…V1’S³tð(c Yï0Ý®‘BµðV²­Ô0Ð&(²"ñµÆñ%½ÂÛX•À$õïU£Ö/IØN†„-¸­£³Ú3[ëž?й‹ŒS1vVw®S™“y9êt’Ó:H¬ô‹`Ï&PHÿK´÷7¨Ø‘aý¿Âgç¹äÝ<™áwÃ(™ßº„"¬Î —²ËAs„LÖ¬ÿá(möÎf˜8I œdNúŒ‘WR“‘ÿ[z7G[Í\ËÊKµ8rßA¡ÐmêÌÃ#?«Î[*ãíîUµ&Ä¡ÖU´i©«ÎlXàÓ;G¨mª[ï865¥vôÌæ„ösÌžˆ³'³žžÈP RNi)Ow2ê¢Ô=!pžð5¼ð^c¹€/â9%’»D„ÊT€%:?S¼Ä”ý÷Æ>·\Ý ¼ )ùh¡@k¯¸²‘֙΃šÙÔ®—}â2`šå`>Ÿä2jÝе¼ñRÌ2Äe¥ëÞ}-ö3í-0Y/õ¿ò‹Ìk½Åe¥†U¿vsío“ÎÙyœ®‹òc€ ¯LæN¸Üm»ªqñTKÿcälÃ(ª#£v[ÔϪ­–„ÂÐp÷{çÿõC€§ÿC€#Ý~Ï»ˆü»@íŸj½’Ϭ (mWsÕöGäÔfßÂfßÏWÚó·ë€!4¬¾tÕH ­¹Õä&½ÂŽíÏ Â_x?|œ3{Ò¶A¥4´‰½ZÅËË wõŸƒ(çs²A¨áGnØ©aÝámøSW+s¾UÛÔñþU·;AcykÎ Â×Ç㋊ìFã?e{„Ý×x@Û…ÿ¤?Ö˜ öÍ'‰d£Ha«¢Š€ƒ ë+]¬™1aUéö¨©ÈIN§vÍIg½Kîí ¿juMóÚ²¾Ç”Öc–(HÅ)^dݰ'#T]9´l lm.½5úÓïóܾ­æÐÚIZâàÙ…ÞÊ FNŸ}Áà ö<_#ö|,ŠOߟ¯Ÿ¿~¬¯»×ùú†|££×ùú9Çhì_‚ç!(ÃnøÛt†úbïˆ4Ïüzßa¦$:”2JB¨¼[]–!웆g,¤ZƒÙÏCÞìp±zî­´h?‹WJ • –#ËOO»ÖVõç«r-ú¥ÙLb6…Ü¿?èb "º+A7WT/U¤ö½w’Ʊÿ M*÷¯>@¨ß² €A ¿·Ïoƒ/°=Þt`¢©Ð©Š»2ôZÝ8—£|þôË£'d²ko æ=íðTUgrÇcV´³RËl8ʩٷ½:yR{KÍË2µ,,ÌÚ± -øÖ»êÁŸµÕ‹Æ§«sÞ3#» fFš¹*Œ@Ý 8 Ü5Kp‡%ÀææjÉ•hðÇ©²o`aLó* Òö¢R¦Jj•„ýÏ{'Uo^mñcì%Ü<÷<ÌZÔ¼mMû¦N8Ê¢èQøE¡lš¡Lns…ÂY~2¹•ô„’yv2ªÚ #“… „:œ†;)Å4)¹ž”Ï–°˜-bGX&:ùµVª)èVy#Õ P1Qt€¤Ša2&„(·˜Š5éÃ, 9‡m°è5mf(›A¯˜Œ#Be¸¤úMñPæéêJ}×¶zdEpZÔoêä´piͯƒnÓvL5†$xZàodì(#n¡¢´™ÖzäP&N즥9ÞilÂq‚tlâuµM\a:'7õʼnóææúèh֙ĭ/„y 16C³ Ñg.3óÏþ³¡@33Í'–*QsÞ'*Wüب²î¯Õ‡RÅ…¡åÜøJ®C=âhRã„̉yªWå ­S£ûŽâÁˆFñ$¬¡E¥Ãø~¼»£à§ñŠB6Y›@í=ñ@CüEôuQ²âÈFHjl n‰åüÖîµÆ­—Lóè,ð ú»`¼â‡'/&’Aޝù¢T“LÅ=S´óôWR#Q"[r˜ŠÂc…¬’ª‚TR~ ¹F·º´Á¢®È–ÊdnPÿ«zm¹ [‡MgxÁEè ºßjÚáÃ"´G¡ù#çD´à".y¦MW;Ã;[:}{Æä¡ïö9Í^ãx †eŒ8=QM89Rg6ÚL5éÜPÙŒ©j¢Ù±:0ÌFMeY9–`D3»fe8¦ g®`“Mu×£Òùë™0ìdÓ†yu*záê&Ì:ٴٗ¥ÿJÎc endstream endobj 450 0 obj << /Type /Page /Parent 681 0 R /Resources 451 0 R /Contents 452 0 R /MediaBox [ 0 0 595 842 ] /CropBox [ 0 0 595 842 ] /Rotate 0 >> endobj 451 0 obj << /ProcSet [ /PDF /Text ] /Font << /F1 661 0 R /TT2 838 0 R /TT4 840 0 R /TT8 537 0 R /TT10 582 0 R >> /ExtGState << /GS1 843 0 R >> >> endobj 452 0 obj << /Length 5923 /Filter /FlateDecode >> stream H‰„WÛrÛ8}÷WàÜŠ8xß·;™ÊîÆvÙʼ$Ù-Š‚-nÉ”ÂK<ùûí(ÙCz+)‹D£»ݧ›¿­/~Y¯eÔúᢠËLEðò(,­JÒÐFQ¬ÖOɺNj_~¿7걿ˆÂ(JÔº¾Xá˜x¾ø¢¯‚8ŒõÇÖb}ð÷†–>õAfº>ŠÃ,Œ‚•‰óìëU`L˜k•j«Y¾­þLj¬åÝ©OU;&ÒÕ>ø¶þ@ÊMXš4Wë+FY1–t¡ŸS€‰f€7¦úþæž^V÷U¬pG/6W&4I’¡M4I¿èϯ>t„:O d`¦sÕàÎtÓlÒÍX÷. ŽüõA ÎŽ‡60V^X»Måʆqd¬·À&ŸjèFp›€Ò £S 6º`‡¥Vs£+î{Ü•ÙB¯á7 »º¿räX—U]=¸-ÛT«ïær&c S¯ ª†®Ù𾑆À ¾jzê(‚FÞ[òîÁ©†.¢”euõñÓý{u½"—wÁ*Àï¸@õçx1u0r Aʾ¾¸Ø‡¢J¡»?™¾‡k°úÍZ=Ë7Jàƒ@BdtS)€«)‹¥O.‹j3Òê øý@° 0SŠ Uï¯ÓòÞ öÚÛC\õOZW–+LÑÒo9vŽŸKk*µ¦;Hàq©‘­²ÜCƒFZ­êJloœbIJy;Ÿ°Q:¥[*éFW¹2¸~ Cám¥tÙì²Ô°”Ò+å Nôzih£X¡,-tHÞz ¦žõߘMÊ”ìþ¶Ôh„Óá‚kNÎK(ä ¼N5ö´±ztWÞº¤Q™#µy–ÈÎH¢A`±~lñ -”Z…ô(õ–_Ã]‰ÅWÁKŠüâ ~BðS†o ~*ð¾eä !ÿ ð(Î '«™¿“°}uåÀ ä0d ˜-‰}ñ¦í”àÏ@7p ]°J®ëݹB§yW·H‰t]v5lwP÷¼|I9${ûaM&Èßö[%ªõ~Ü:åW†òÀÆ?³%§> îÊó>&d&·=%à˜Ø Ë·ÔWÄ/1ñKÌü‚OpåÀ`5GÉ0J×TÀ JŠä#YÄÍ{LATÌ@¨¹º“½÷˜‰R npXE±Éô£“‡>šUÞæŽ€Â9`?p:ò*>´²‹û¡”Q4Ÿâëñ‚1Dµíô÷_€"¶Ï¹)dØ4s}®GÚ·+÷o1\âpÃgëŽËäýú¨F]dyhU :*0ôvúÛ¹‹‡ÿ'ƒA@„…9™¤8“½V4 ÔSæ¥LÙ¹ØÂ¥¤‹^­‰½(Æ«x¡šÆWTß–ÊQ£0Q!Œ“,+£E½e„A„ !šu(Ò³@‘.pÖ´HLcxEôFxg ‹tÁðÛÒß -Í­ðÃm–A»(d¤E&µ¾X áìõÎØïvMG­e«ŽU€\˜y¯ Tã7·"èž- ¸\qd±zìPJ¶U"Ý“–ùŸZêC#R\Úbc- SþĹääé‰ £½¦U=.ÕÞ6Ø9”mÉ`Ó é‡ w•È)‘¦25BýåËçû÷w÷ß¾ëÿžµ àDÞ M«8Ó„¸ùlèöÌœE™!îXuƒÚº‡¦u=âWûQ%0 P>6E ŸB·@uíVbè:CS#µÇÀÈ¡žwM½S~%À¡¯¥i¦§á Z™è>t‡'~B_`>ŽÇ}SW§ð þýá:ˆöÊ`kúy> q§5ÓA(lÁÊós5Úžß9¦Ô`C8ŸcÇ_”d óã·nÊ5$µ¿ä9Ï‘~d•‘Y(¬ÄÚÚïÏB#pì¡¢Ioƒô…´²å„ßúš~:Òn0§ ¸4á\y¶UñOK.Ñð[½{ÚÏ2ÙO£N¡k7  ï™FgË9 ˆ£„™Ÿž˜üaž„Þp"ü0œ¾þé~âA3•W8 :8`œÄ8XÿA3{µ!°±-p6ºr}ÝA‚xÚæ½ã@£®O2˜ƒ¨‡§yŽ]u¶¿/Ë K‹p¶¿/(JéR_PÆ-¢Å½ ú¶TŽš!p–áœl_h^^Nf¥“×Y)dâlþ%öEþ%æÄdžð:Vj0z”x«i^bšäxoòb×ÐOËÙ‡cü¦E†ÖiPœuФØs~ïåLѸ¬vã>A{ò+ôöj³'—bSLâŽ:²{¿g‰L†FÞu~šêÄ>Ÿå;opâæ+Ì2ê‘—Bèû1ÙÐ;NV)M¦eÄ£+´l€_ô±s=‘¶C¿¤‘“xCo$P5ž*!ø4ûm`î:üI¢ß!ʱþL?~ °Ò‚‚*Í|GðšMuX‹1¬çî8P82XKGzQt©}£èX8_tóоèXºXtóÊTt,Z.ºEÀhÖL¥acìÊ/ÏJ'H³ÒÉë¬t©è|™ŠÎžô#™ý®ºð”óg‚kºÍо9,,–0à,¥È”}Ñ(ƒ³Î}ÿ¦T Ã>Ê(†•ë“*Ùs@á:„Oݳ:Du6ÇeX„øHÃäÕÇKHV£oË'uËC›êXé {¯_C%w_µè\ÃÈ.®8ÔÂà&À¼Þ bßø,h¶ãs`3šÀHÏÉ~ñ[1 > ªZ*= {6…]FÏ?ð³ìg€“›€Þv³Aÿ–NÀÅ‚áüABˆÐ½û>òsK?µã åšßUEaËàô7ô%b!p÷w´ ¶‡zÄøÄrŠD”*âŒè½Š l™Jü  Ã}Uµnmq¬cá|ÕÎ+úªeébÕÎ+SÕ²h¹j³Ù©¢gÊvA|jN|æxN¼P¹I ƒy•KMrJ¡’3è¿*9M裓¾ŠJÝ68ÒÇÿc¿jš7Žè}Å$)‘"@|¹¹vµñ–%+%qSqy])ˆ„Dx)’A¯7?$¿7ý^÷€"tIù– ‰™žééî™~ý:ø·e6ürÎDköT+$l1@e[äÚâ³ÒŽÑhþ Çª^©F1«"ÏrªX’ Tko+tg×¼0g­ô©ø¨coÝ>C±vŽü¶ [8Sf’H™&ý”NŠ.ñvw:M…_gfÍN­£²ÕÓ…° îѱäÞ©ÏLá[&Nî¯êÙ*z¯Å•võäݸ=ø¯AË Dÿ$\œ8uûùhPœ@Ìzè„qtôÅOW”Ë7[ð³lÊY[ A_ú0”lBw½¡¨¨u@°1ƹ]Y ý‰c$] ’dO%ŸüÌÊäB•¹¥AóâÁ‚s/vŽmšÔED!ëW:"À¢I°1–j?„ ]oõ b,PØ06¶Rq ¨¥08Qâtµ?XOhÐìH¹L¢xÉÜX11$ÏÈ÷1Ÿô|ešòÉEìhUkwŒ®Þ˜Xž±=“Ègäb8ôB™“rÒœ³o ánuöƘûýw:>bÛ‘flj…9)Êv|½]ÝõÍŽ¼Þʶ"Bn,wTÖó&„§ää üD¹?¸OÞCÇ©¼ÂÉž<Š ß”øZ°,øra)aÂF¿ $¹ f¥Š$ÝÇE:R0ºµK/d³°"R—6zÙ=Š0.Fqðžµ÷xÎf½Ä>=¨¬µ¢ëÜÑà‰¿à19ùËØJŽ&‡=Š<¹oÂ(%ÛĬûg9dõL%gÕ‰¯Ît¾:›88Ý\<™Mø6kÍWuÈé¡f´®>މîÚq®©Üƾ6ksBÿ†¯ÑR°ÿY×à&•(NÈŸåFécý¨¶ŠOp‡ßËjO^äU‚¼$ŒTJàŽÉ$*·\ÏH2êõ‰óM5“ KÌJÉ9P‡ý¼y}L£`¿ïoW?\™ew B“àÛõüZßÅ%ô¶Ûäýå-M¼«±=Ú÷Wwß_ýHNŸwWo§Fîoï~ÚìG ‚pÅž :t\'Ö0'#¡æG`rB´)ШˆƒºO[œ6E¶`¥êUd á6f½Û0ãa,nàÛ5™Ä%תsæõõ¢¯GtóàêæýíÝ ã!ˆH¯axât½•A˜ò3¹PiÄFm3S….uÐþ bq®Ž·`zœeÃѤ©Mx¬{6^›´²{6µMÔ ÜýC­ÄÂDI =¶ø¬´3鬴;õ¬´³åm’=fÇãŽxäúúÙYNHƒ‚D¨­¾W¢œËU äDƒµž½ VºÔFBr ”A¢Þ#;´e¨)¶åàó‰¿ß‚ü|¬Ð‹§jìi~2—uVÚ§½>ÿ>ëÎÎà 8Ô‚ã4Áüg—;Ze‡xæn¾ãâ¦ööÈH´C5ÿЃ½­/©Þ¼~ÒÌoË¥ÃQ¹"^¬­Gê6ÐF#ÜŒÂ8V½C‚(}ж`¸ãàK§¾1V8÷aú2 u«ûN¦º¼Öv©0åÎ,ñG}Ö[óU×Ôz¼ÜͺP—°‘±%{[GÛV‡püòAjðñjÖV FÙÞ)`’Ïq­ÒFÝkÄæO¡&÷Y.õÃVÜo»v¥^q»8zötµÔ•>VºÔ?УfÁ<¨ÌÞR9ojÄ=“NäÐí¬s;Q·ïÛfÇ :kÑ×äŽÐ:ww‚ ,‡2ܬ›î±£'´wÈLÜÔZúÐÑŽ±ùx®…!(ÝŸ­îü#ŒèMýh²Z_QßÝ탞eê­¾Ú‘W5<òðÅ»?}·§)FÛã´§±„8fË{è`“SvÁéمשĢӺ²ƒ!ÛoÚs !¬V߲Ếô†“O¤ÿçŸð·;ënüËLj÷Ñ“hǦ„† €ìÞ°Û¶ }hr!O¿K#·_9’7“Eˆ,HHf¿Ê.ü骩ìßµ¦W^S§ÚxÁB'ûÌŠôl5Bá†|sËÝÑ Úœw´y¬¾ã%¸; Ÿ–0ÇïFnï1€ìfœ“i³ÛÝ­øµ Ñ'ðÉfRã0U¹wWò4ÑàȬËåaÁR' I°güîêžÌ zUÛÌóOilôtV1žëõ¨Zh!Úé¦ð+GLÂ<øÓa.D].DÙ>çs<2Lµ^{P}Ö$-9Ìh.Ye¢¬v§j5褊[?›³ÔÑÈè «}A#UxžFžßèi¤J{iäùͤ‘*ê§‘½«Z•E­Òì@Kz&=´_&®š°7 g4yb “I_ ÓYå&ïQŽ0šèÕ0žUmòÕ¯K…UG19µü)£Ž&’“ŽQ§£-ÓE\ÀKC<úõ®á»à䦴! ¶Ð…k]ÉïÖk˜ñoFÌ^Vc]&Ä1ÂäN'U]ÉÕHdg«–¦mÛ\¿WTÖÖ¶B'•L”GdâÞ„gÕZ¯Ü¶ší0± çÔY›…fšc2^¾œTƒÇ7cyr)Lb‚üôÓõÇéÏ?‡Ó_Þ\N§‰.M†±.”„Á`œSeÓ9f,6F›ÆÉÈÌB¼´è¶üb_¯ª­©Û°’ ’O«mµjIÞ…5¬?v×–K¬—e˜kîK}|œ ¤àË¢ž-äfô&âÿ4Ôc·­æºâ±Y?3€]©@Aô†û*Yx6Tn6KÐK±DJáûu£ZªRŽt‰ ÒÇäé…[¯*i” ¹«ªšoþÍ­ìWâe sïQ=ta!š‡'w Nd/ïF®æ_QßÝ Ž¨]áKþPÂ$Ìfa^áÕ´VßôoŠ÷HÒ ƒ8¹[ë"¶«Ðº¨Ê9ž©ì“„#×D±/›‡ºmJ\IÊZ›³8E\÷°kÝónÛòŽVõ¯ÿ­ºZvà¯x¬I=`BÒôzï b$©h@âïwvYH{2<–ag²ë.Xš0oºx>¬–…s, XÀäƒ3ðêÇ‘ÝÄ@óºM~0\)uÛj©=|ñØã4>ü*‡«ª®çQ…C>­Ií)B»rÂÁq |¸Ùžö9]Lwžò6¹2åVÂÌßæ6`©Š{ÑØÕH‡¡4AúhÈøDâtu‚æÒâò ""ŽÔ‰ÓÉÊÒ~s*衆?Y¤”<ŽàœØÑòf”†4¿˜ cŸ`¯ûêýûYkûegëH endstream endobj 453 0 obj << /Type /Page /Parent 681 0 R /Resources 455 0 R /Contents 456 0 R /Annots [ 454 0 R ] /MediaBox [ 0 0 595 842 ] /CropBox [ 0 0 595 842 ] /Rotate 0 >> endobj 454 0 obj << /Dest [ 453 0 R /FitB ] /Type /Annot /Subtype /Link /Rect [ 329 229 335 239 ] /C [ 0 0 0 ] /Border [ 0 0 1 ] /H /I >> endobj 455 0 obj << /ProcSet [ /PDF /Text ] /Font << /F1 661 0 R /TT2 838 0 R /TT4 840 0 R /TT6 536 0 R >> /ExtGState << /GS1 843 0 R >> >> endobj 456 0 obj << /Length 4874 /Filter /FlateDecode >> stream H‰¼WÛrãÆ}×WÌã %b1¸3^y]›X%—ÍuV[.Šp(@+ûñçt÷Kr1Ü<¥TEs¦{Ó§oß­nÞ¬V©2jµ¹Y†Ë\Eøã‡" —±J³0Ž¢D­^n"ƺç›7?übÔs…Q”ªU}³ '¨x½ù¨ï‚$Lôûk‰~”ø}à¥û>(Â\×ûƒUI˜‡Q°0IQB¿^Æ„…VùR-°š§8;ÖXL¤l‡Fwê¾j‰tµ >­þF¶Çb;À2PžÄú"Ât46F™‰¥·ŸéÜ\¿‹,Lõ¾[‹$Mbœúk…N9Z,Åeëîl_wÁ2,u,RXsØ´fß²-߯nŒjÔM^„8¸€¥Âé¥Zðogo6ßÂòrKs ™´<Á.Mº M>¢9.-?…c‡™÷ÔØ$#”˜òB4K ­xD¯£îS£0wÌ(â‹ï™E'ƒgÑéÔYô»oñ¹ÀѧŒˆG[òns &$zhöòÐ!–K¦aJ@×´‚<ƒ&ÎÀ†» ÒáœHíÞ6…T«ü†åzË U?~Xa%Óa° Þ)õ¡·k‘PÓ0Œ›øð^ NŸrÇu0‘¤·²{ø²= ›1º·;[Õ“ìßMë?‚ÌQi1A>‘ :›4Ì–¤… M–çju'TrÑÍÅrs|\‰ã*¶(Öîß®©+w1ßE©ÕQÞè¤TÛ.GÈ’yƒ"óEÄŒÈÙ•X˜ã@È®EÁ¼y¤­ ¥‚Å eŸsçáÉ–yx:uÑgé§aYž$¼åä.—Ÿß5;fÊRW”€Á€—aiš•X'¦"­í¬Ã=»c°4»¢Ï8ò§Ò‘?eò/õ""¨ATL‰*“·ª¸'å4ùe·–7ÜI߸g9¸›®áš€Š@‡qº9¤RêˆpûI ·ãù€Çà‚ÁIJ~òXÀyÏ ŽTÔËæya&´@~N{ fµc~5tÌ Ç~)/FŸ) ï ¾>nÄæ•Ž×#è•ëùZñˆÍ+æ«èÚÕ}­vÄæÕ^GÑ&–&vÑœ/ó0Ë¿D3Žf•¥Dójkƒ ,GK´AR©71î‘¢Mo;TØÕ}YU{ÙBµbQRö&-5~ö­Óó|ìH¼UniÇ»š^5kzj7Ð×8”–Ö qbHáç 6r ½®¦U=½Õ£Þ­Å2ÂiÍš¨´’è3ue•ï‘bžÀ½ÔàQšš8ýñã¯ï?} V¿ŸÔ}˜#QU,d)d­r·å.1.éI®_v¨ºA­í¦imO¶«×¦]ï_ÕŽóÝSÓþ°»7¯ÍzتzõºmÜŽšwlU]µ”|"ýä*¾ˆÊÚE^ž6”Û}Ðߢ}‘E:˜îèFRtÓ†à·÷=ÚçIÝO$zú.ã’ºt_®·!SÞí;e«z«~};§zDr¥¹÷å…ý†ÿ5í`ÉÖ™²|:D©ïnÕ¾µ”¥á7¬ÔìÛÖÚ5®p¯ž,%Zc¸‡/5]­ûöGÝM)ú§ðÜÙüUT±Î _ÿf|η&έ&r]S„¨·@8éz¤Þšg"næ–ÔgÁÿU÷Ô >ïÄš0ÂŸŽƒþrìÝÓ“sÔ±mþutϯͰmÚ OÖ,¡HæŽ;vt‰fß82 Ää&ôY猃?Jë¼Þ|ე+öÒKÅ6sñ"¿Š[Ð7N.VaÑÀ;Õ™K_q8Xò*œ\W½Uõ¶r¯U-ÞOq)tfËíñåÉv¸¶v­Ž-»›±Rïݳl'Un¡¢Û¥ï®A‡\Ø’ƒFYµÙïvûWö -<ÏÒ<žÚׄÒHå|ÚÓNÞ@Í 3ŸòóÉk0©-Ù³¾ã'£æáéàyØÇ§¸˜øÄ³Ë4–%¥Ðé’gš€²#ŸÒ2·ãÈŒ4f 1Ñ»½ s¨È©ïEËPåÁœ€nC®Ä)«£f½åN-Ñ =•v;ˆU”9Ï&¡- ]ð#)®ðCÀy~Ì ŽüÔËyaæ‡@~~x &µù¬ DÑö z1úR=·0âÏë/IPÿ%ÍëáyÝ|‡]¹ÃyÍ#<¯ù:Š01±Lñ"Q1D"]`¬¶6@òë›Sæ*™z«V»€FK^¡Ö^Кðþ?ûVÖšgjb} "EòÔø+·gÇb袚5=µI CiiM-÷gÜ$|9ë…t5­â¸ém=j–8¢-´aÍ©3$ÏXoÞ™}"ꂨ)¸£¦ÀuúãÇŸ¿ÿéáçÕ§OÁê÷“I‰ò vrer‘ÉŒÜWˆüiþYm©)¬ºA­í¦imO«~èpb8vbØÊÎöÝ@ÆxF&QÿìËaG©Ý&Ú¨þOõºmê­ì¯«V=Y5¢ZœRÿƒ}Õ"çž®˜l¤YŒŒ“qjÛtû¶‘,¢ÿÕá°kêŠîÍ}Á;n¹®@d4Z³Ô°]ÁŠŽ—X‰ñK¶ŸŒÂ÷ç­Ú·ø\ú$j=köIkíº§é Ö¯¹’4¶¸wº °UÛpÎKæÒKâ¤ß̼—ØIÎKi\º ƒ€Ú;¥1<…ª—ÿ5ÿ²µ[" ˜r£ð_Ê«n·mc ¿Ê^Rµ"þˆ{×c'Aиç|CQ”E„?*¹tÚçh¸ßü,E9¤c"¹³;;;;óÍ7ôKaäk¥Þ“Ð_Š[w¬u_ZyɨÐo1Î!‹‰ûÁšzè­u¯;óÇДÓo¥=¹°¦PŸ½[=YèküåȺ’"H‚¬C]É$Ïbè=XÛêg,õ)¥Ïß+·eÛ€4ŒVƒyËZ›Áá|¦F`‡èë5 6^~Êx$Ë-GÀö?‰¶f¨÷E×ËGÖÜ9¬UOkäxéFÆ{Ó3a—LÔçéhH¨z8‰"µªj¿•Í“±Ù¾Bdv;ß•{Í>¶ hÐ"bàØv:à´#°‘‰bÔ%¤õhßY×Ï“„¶AŸÄXÊo§ÑAüÐÕÊy~-þ¦¸‰A@ #¯íà‘0 b+¢‰ Ø4 @Tï®èó=ÍŽøEÕÙ‚€3´Í=ˆ¤ÖÌÍe*Ÿ g‹æÂB­Š*]ªŠ ‹©ì©h±ì-,}]:uãjÞ“à‡͉'&ω'ωQQ/È3GAÃ]z;¥ Ü‹RTð5—g ª|­¼4iŠ·ÐyˆÜF$Oõ²ÚâÎ/'²iôë¸ÚQ'cµû8±° ˜¹NëPD׿K_dÌ”ªÊºUï¿|«ô|µ²è ™mØ«/*”‚l/ó‘«ŸW7)âþ‡²Ö0… ¢(q uÎr0÷ Qç‚û0ß«WÔöq¾~§ c‰B¼Í¤¶ñˆÑõœpEwMµC¸<\ÊÎæËÂBÍ•.åËÂbÊ-æË²Á¤”Ç-о6y^<5/7ž/´baŒ¾išþ˜Zšß¡PQô z2—Hq³;ˆ÷h‹,B'†U¡ò…ÙAº¡«}EŸ?æFªJ9^‰(žx‡' Ä'Î=8¾ ߪ¥>1‚³h«Xæ6Ô™ßÍhùONW/QÍÙ!"é½:ˆø±/õÝ[ÊI 8ö;ñ³ØûôÀ<#öï>|z{ë>øÑl×»¥àfÙ|lÏ.s¡ÍÂÅÈž]ÊÍ’å¸^2UtŽ!ÿ²ƒ aÉÒº%‘e‹§ŸÛΉgµ:ç°ð5çÌivâYÍì;–¼ê»9½N<«÷UáLㆻ±°1# .­`ý[k‰¸„ˆbj~–"ÞŽnQ&t: ´Kg×òÊ›ø3HA¿# ¨ó§"$÷:Ö69±ê@pnÆžÆÊÝÀÃ7¦•Tx¨ÜS,·sß6¥¾%– ß•=ù-æòšzeN>Q uGP¦ó2‚g/èî/l¼Zn%ÏŤ]:òoË•ŒÔw€9mQ¥)zÿùîð3ôÞÜ2H“Ë}šý–ìõ½+üeu#Êþ»¢1ã1VÑð=EMâvÕ ¥ŸÑ6­¨Qô{ÚÝ+ƒI÷gÕJÑDÞáIyöùj«Ç)eâþeÛ8MzNm7§d6mIùÔ¾7u]ÙÛ2Ÿmõ|´ µ‹b¢3p ÒâÄ{æ÷‚ÇÙÕí‘Ç]$nyÒ ©Ô©âCÙƒka&(››+Qø\æÍ¯¬©m=‰8y\ñcÍ»PKWöF¬ òz1<£äÛzÙ»aQ€Þ>­ŒL69¦mk•–N ýVbµº›‰ñ{ªÁ8¤ûz¹¯Pî+¡( O?üG3PÇ¥ðyV•ûŽ™¦„nÛVüR•_ ~ùÒë#чØûÝÞ½g¸»ðâñî;n˜ðÏ/aÒ#À#Ø)P\ð-&ðº€J†€L×ÉUÆsÄ©V˜µ1 isŽˆŒ›k䣢 ½¾%<¸ñc.|vÏ9ðy?ó»ÕÅÍ÷2^Ÿo"»-¥¹»±‘ãx“˜u\Q“C{tÑ žï|ÁN4’Û p‹jIu5XÅqEÚx_P|„ÕÈÁ*§‘&]£à "¡q‡_­N‹¹Èk{ZÇs­:ȳª25{Òñ{ Ÿ¥]D¾j¨ËfŠÎbºzeˆLh¦GÆF¯töçŒÝ\ ?ûeƒHÄèñqAß ™˜óï‰%Å1žúøH©ð]ÑŠƒBÑûÌ JY-Cæ šËg9_,çƒÚÊ­„^Å—yk‡×œ×÷oþÏ? °z©¾þƧVÌ"âlñHÙbâo”Rü"sSƒ¤”dÝ‹f-"Úº‹‰ŠŒy¸¼cNB®7Ìovð&Ý.˜CÌÐÜ6üýÌ¿`}^'’²åÆ$ðD¬Ñ@ÍAfO1ÄÔlwtJEI[&;Ÿ«2g¤/r+X'QrI˜ º¸ø@ð‰°»Î¯<) 'DIÙâÈß0/¹!r!öS! ¨KS¶1‚wŒÈÀ(ÈýcbèýjÎYþ•çdO:õŠÈ(® ¿ Ð ¦p=!Käkt°Õµýú¿eýTomÞ¿q'YÛ¿^ :Hâ€d¼ºpz0Ê2±3ÇaEpÞÙ? îY;°›•y>ÊŒ}ä¿BLwJ endstream endobj 457 0 obj << /Type /Page /Parent 681 0 R /Resources 460 0 R /Contents 461 0 R /Annots [ 458 0 R 459 0 R ] /MediaBox [ 0 0 595 842 ] /CropBox [ 0 0 595 842 ] /Rotate 0 >> endobj 458 0 obj << /Dest [ 462 0 R /FitB ] /Type /Annot /Subtype /Link /Rect [ 244 668 251 682 ] /C [ 0 0 0 ] /Border [ 0 0 1 ] /H /I >> endobj 459 0 obj << /Dest [ 422 0 R /FitB ] /Type /Annot /Subtype /Link /Rect [ 273 378 288 392 ] /C [ 0 0 0 ] /Border [ 0 0 1 ] /H /I >> endobj 460 0 obj << /ProcSet [ /PDF /Text ] /Font << /F1 661 0 R /TT2 838 0 R /TT4 840 0 R /TT6 536 0 R >> /ExtGState << /GS1 843 0 R >> >> endobj 461 0 obj << /Length 2652 /Filter /FlateDecode >> stream H‰¤WÛnÛH}÷Wôc3ˆh±IIÔcÖž,2ˆcc¢Å<ŒФdf$R ©xòÉï©KS” ‹]Ø»ÙÍ꺜:UýÕÕõj•˜È¬¶WËp97Süñ`1 —Î$³ÐM§±Y®¦¼Öî®®ÿù12»îjN§‰YåWAÄÓÕö6ˆÃؾ ð.¶7AŠß{~u׋pnóæXš8œ‡Ó`Å‹òí$ˆ¢paq¤™àí<ÁÙÎþ‹?“¯ÊÀ…‘mÍ]VŸ‚hj³}ðïÕ¯¤»Ý£™W^F¢ýb6Ôg%IË–@Uû.ŒƒÕ'’1Wa”¸%D¬niK~enÐC¦a9]'a³Áx—ˆõ¿•»ªë˶ªwæNHÃÔÞÜßÖy¥ë³:/;SÕÁd¹éË`2Ǻ¹Íúl“u¥·N#çÂ4çíri¹‘]Ñœí ÝŒF‡É2LáqL¸ñçÏí!VÁ$f•&Þu½L3šÓ R¶­ýƃn S»Cd„…'ÝkslË_:zY{Yš³:Q)Mm†£ôYâsÿ®=å::µea qjÛòØ´úgЯMÙ|ð&×ÉI…X›MiZrøÜ+(Úª þ¬'°Ÿ:„~æÃ-Ô—Ó4_U$_³pfsþí á3»'ñüB~„Ù³5?(ª´“'éCCþVyt©H…‡¼›îkwÏ…{MϙݎÔjåd©T ÐjÌ GUwzr<1äb{66QiTjÁ@ÂYZñS[Œ¨WíÎo#M#ò·sCšI:VuQþ@…äœB&’q’¿©ÄFF›×¦ Mšº1Õ!ÛµMkhÙŠ ¹<†ÓKà£4ÍæˆmߑѼ\ ÞÀPUY„21ûöĶ¡£²Ò?VŒŽ§öØt¥]Ê7ys8dµ lBVÑñ²X ‰Ó…²¯jr[D1köæÒe ÌdDLâ±bÓ‚n»K‡%a:v˜?'™*˜ Ôî¿Ñ¡9V9ÏŒœD`Þs àxÙû£î3(WhøY¿Ît§Ab”9@‚}DdúY(äoÄïˆ\ªnX7½ *}æY-ƒ §S Åœ9¼Ø M–Y¯ ‹TJØŸ”ª?Dƶm¬o‘ú¿LלZâ ’mÍÚvå0ɳ#ó O[ó«rà:`B =K¸0>Ÿ§,1]L5€oºîtñd±õ `ò›´°m b4Ǭ¤ÜÌÄ91•ˆŽÏœI}n|QXjÞrÅ`‡²—Æ“y!¼ÈB8’½Õ$®ËÚ’“XèñtK¸ÖpMó„×0cBiM¯rþ%áÇW8 à¥$¤rîwwæÓ©ƒjl^ä·Ió¥}F .\ÎH¹xþ 錸õÚÞL>ƒ~¤Rj֯ׯÂW—‰0ñâ7D T¸ ¹Øº5p(g8”[ rVʈ„ð E+ãÁï²Æ…$±uÑ7Ívd ‘ܺ4ª#E½<=…‚n UòGǾ®û{ ¹,˜©ŽFdÁï”í Â¥`ëÔ•-|vÌö]cÀ CG€S=AÂd#z0Ôû”"Š˜hæ)Pà1°²60™tÛÞÌf_¨”6pç“êb¨rŠTj)Fûúaý9×\”£héËÑ!û«ü³Ø„xŸ †gþÈæð”IÜs)?¹øpÒ V–kÌ—à\»ž+HóDjÝŽ×Ù-3v RdFŽ|¹¢¦]y—¾J´"ulÕêÕ`ø¢Vž]¼P,u„9õî’UŽ/*Ìâ…³’¡v¿AAþò‹²ÓÚÝVǾEáÿ’ `Ètù¿u Ëáä¥v ÂÍ€ŽSÍ^žFyÕÞkæè¼¯¯‹&ï®é䉛…‹å¹'Ô û¿ŸqÓ"Ô;Ütqûþ/q²{qçÃu/ùÿ®{n¨“±:å}³3o¾Ý û~rg‹—¸ê&c½|k–úð~hz­7/1öz믣isÒéNq]ûy0|© *w‘€Ü1È™¹c\ #@ñ®ãÞÌçFGÿ¬E|’´‘Ô«zªg¦>6hA|Zjë·o.5Êâ ý>W,‡ìR+øQ‚©Ô%KÎý 2ýÅМj9ˆ¸ócêM—†³=¢Ž•eDß-%{'⺶D„»uð‚˹X¦žÓRí)V|GBáV–ò1~B@#òõ=0’Ò=.’°¦Þ[!Õ0 yíBm un$á’Z/6®€rš1îÑRÕçª`ÒG-Ò qÑG%é\¬** obå—ü䨅~\ H¤æ©D²x/;>ËŠL´Rñü‘§y&²¤ ÊNê%xP,-€èPíû±Hªñ¦9õÇS¬áÕ.˜Kºý§Ê³è^®s $~åÅ75‰Ì‰}Ô#‰7oVäÉÔêü^ÊíÞ 8ͪ —žo+JÂf8 ð6 ±IK˜”ÓÈ wšÔ_+yÜÔðáÛqr7' §­ã ˜üäè|ñ'¼48¤õ¤$-Xì©.—|Ü /¦CÇ m8×¾·dž;¶—éŽhpÂÁWº- éuv(öb^f¾Œr/Táê©7?öM}©&¿eòV1ë`èû¾{uTxG©‡÷¾ ™wàï£@‹ cí3ã¥Tà)Ä<*=¤Œ"ï îñRúª¾L6T@÷@]^¢+Q§î?Þ<üù×)¼ÄŒœì"ܧ™&®¢ÞEÞ‰ÀMÓ]h)“NÛ;A’‚b*[ÆXv¾Â¥©ø¯;B Ém{ľp2¤÷”ºNÈ`Õ<•ûC‰Óø,( :;ÞšrXÒÜ<狈xjnS²ãltöà )8eÆ,o lª¥(H ¨'!m‹Î62Þñßè|Í=ŒÈ2N95+’ yEtE"&”Í äEêqçÙ‰kâÊ ¸Ò=ŸÏ;ÚÁÛ Tñr%$Ëw*îš®«6{ÁPÞñw|÷È›Ã‘î¯æÍÍÇ_¸nÞÜÛ;¼CÑ꛼ٓÉ*{p ´ ärÈCoqôåŽ*µÝ…Ü;Æqnh¥ÿ€wfê9—&ÂL¿¬®þ3· ?÷ endstream endobj 462 0 obj << /Type /Page /Parent 682 0 R /Resources 475 0 R /Contents 476 0 R /Annots [ 463 0 R 464 0 R 465 0 R 466 0 R 467 0 R 468 0 R 469 0 R 470 0 R 471 0 R 472 0 R 473 0 R 474 0 R ] /MediaBox [ 0 0 595 842 ] /CropBox [ 0 0 595 842 ] /Rotate 0 >> endobj 463 0 obj << /A << /URI (http://www.winzip.com/)/S /URI >> /Type /Annot /Subtype /Link /Rect [ 375 378 494 392 ] /C [ 0 0 0 ] /Border [ 0 0 1 ] /H /I >> endobj 464 0 obj << /A << /URI (http://www.openssl.org/)/S /URI >> /Type /Annot /Subtype /Link /Rect [ 401 335 518 349 ] /C [ 0 0 0 ] /Border [ 0 0 1 ] /H /I >> endobj 465 0 obj << /A << /URI (http://java.sun.com/j2se/)/S /URI >> /Type /Annot /Subtype /Link /Rect [ 290 321 410 335 ] /C [ 0 0 0 ] /Border [ 0 0 1 ] /H /I >> endobj 466 0 obj << /A << /URI (http://www.openssl.org/)/S /URI >> /Type /Annot /Subtype /Link /Rect [ 369 306 492 320 ] /C [ 0 0 0 ] /Border [ 0 0 1 ] /H /I >> endobj 467 0 obj << /A << /URI (http://dev.scriptics.com/software/tcltk/)/S /URI >> /Type /Annot /Subtype /Link /Rect [ 179 235 372 249 ] /C [ 0 0 0 ] /Border [ 0 0 1 ] /H /I >> endobj 468 0 obj << /A << /URI (http://tcl.activestate.com/software/tcltk/)/S /URI >> /Type /Annot /Subtype /Link /Rect [ 179 235 372 249 ] /C [ 0 0 0 ] /Border [ 0 0 1 ] /H /I >> endobj 469 0 obj << /A << /URI (ftp://dicom.offis.de/pub/dicom/offis/software/dcmtk353.zip) /S /URI >> /Type /Annot /Subtype /Link /Rect [ 121 160 494 174 ] /C [ 0 0 0 ] /Border [ 0 0 1 ] /H /I >> endobj 470 0 obj << /A << /URI (http://www.microtherapy.de/...)/S /URI >> /Type /Annot /Subtype /Link /Rect [ 117 146 492 160 ] /C [ 0 0 0 ] /Border [ 0 0 1 ] /H /I >> endobj 471 0 obj << /A << /URI (ftp://dicom.offis.de/pub/dicom/offis/software/dscope/dsgui360.zip) /S /URI >> /Type /Annot /Subtype /Link /Rect [ 117 146 492 160 ] /C [ 0 0 0 ] /Border [ 0 0 1 ] /H /I >> endobj 472 0 obj << /Dest [ 503 0 R /FitB ] /Type /Annot /Subtype /Link /Rect [ 474 454 485 468 ] /C [ 0 0 0 ] /Border [ 0 0 1 ] /H /I >> endobj 473 0 obj << /Dest [ 108 0 R /FitB ] /Type /Annot /Subtype /Link /Rect [ 186 249 214 263 ] /C [ 0 0 0 ] /Border [ 0 0 1 ] /H /I >> endobj 474 0 obj << /Dest [ 118 0 R /FitB ] /Type /Annot /Subtype /Link /Rect [ 324 249 356 263 ] /C [ 0 0 0 ] /Border [ 0 0 1 ] /H /I >> endobj 475 0 obj << /ProcSet [ /PDF /Text ] /Font << /F2 581 0 R /TT2 838 0 R /TT4 840 0 R /TT6 536 0 R /TT10 582 0 R >> /ExtGState << /GS1 843 0 R >> >> endobj 476 0 obj << /Length 2926 /Filter /FlateDecode >> stream H‰¬WÛrÛÈ­¼ê+æq• `p÷[,gSëâ­ˆ‰«bç†",àâ"îú7¼œÓ=í”÷Rª†séééË9Ý/WW·«U(|±Ú\en Tmc7[»ùÊÜ­¦»U䦡¹›Mc¬ä¹¾¢Yiµ­zAéuAy\ê¾èªµ6+ÛöÀß¡åÏz¬êR¼rnR˜æ;ÇW°ÊÝ›ûö„É<7”Zlºv'†­};ÚÉΡ…ôÆ/µ+ß¾«0E‹N†ÿ[òX(±Ö¢Ý°u=qã»~4™ÁÌ+¼4MÌ+ªfÐNDŽqB¸ÊŒûA@å±?]éÅaÛŠCÕoim×–Õ—GðùÏŽò±´æý"çÏ~_WÌo¶ŽnX\5ØýJV¤vf¯6RJ‡„öxê[+öTâÝíÌ馄 {?yõgë±Ø¾Õ§½õgÇÏ`Ÿ–íËQTM?äu-r±®š¼Ã<ªÝ&ʪàË‘o7Æq¡q\ÈŽÃC·MÕ³±—zMîRžº¼F˜´œÃ›¶®ÛCÕ<ž{5µ ù4"…Š#rÍ~þ Såu§ó’¢‘ÃæRRìÙĈ¤}>J\ÚÁ8B枌]ló†Í–ÊG-ò†ÔÜêŽwÓ”l' ד²ÐUMvzc¥QìóâÉJËi–JIÄÿ{i…8t…ƒytEYÀGAе¢4v홑à!•Uûïq’Oygs q4iÖ 5qÒü|Þhb(ð¦YŠ! ÅI*fòÙÜb£éÌþ”aL’ŒW¶‡¦nóÒ=§À¡¥_32\ÅÙÌ%3“¼ óì|í:¦þ”£–Þ|WEQl‰Œ9ì‚æâ,S'L—Ìt®,îÝWE×öífo«ªãÝ¡4™à‡È[£1¬Æèdb^ª‚sEc –o? }¶§ÑÿÑ€©’pÉÌïä?õ#PkG”#ûIò(:BŒ¤é)EÛ,ö“)‹ç¬TSVÚŒ6ÉI˜l` QË?ßš`#ä$ÙÊyg”CŽñÏ@0†S81ñ¥¤:‡šE‡Á,‰-€j­ èæóÀtîƒîdp?…îÍs‹©c]3m$V‚­‡-¸`³10‹dn¬‚‰Q0±o´/éÝI‹S:˜‰4žˆôGMج‰|™ÊÅ÷‹S˜‚Yl!ÃÙÉ% ¨À²%!ÔXÖ¬›)K‘d%5Y(÷U‘ÓûNç&hÇÆò¤Š<3¸·Ôü’ƒÔÌ]–D&½ùmë_ÿ“è`Ä*ߎ, e¡¡‘ÔM± ¨á’„-9ô ¬ÝØ4Uc=¢zΤµÃf8P@fÀ:ÀÐJ%!sŠÍZìà ˜®÷ƒÝÓ‰ï/Ù›¼¤æD³Õ±ëÓßyŒÛ¾P$ûóʱ<”«¶­ûsο Qfã>•Ã"c3=òþ‘Ï%˜:æ- £°ù™mWZ¢ JèˆeÌ8¸bÒ&œù¨¡¡úÀ.ÜBüqÚ.`‘B3=¹&š+mSIîéª~ –Aœ²¼„Jl<†Ï™ŽnI#£PYW.ÜòãR§•?Rn†àX´vÔôØ:ÅG„|†Y =ÇT—0¡Ð‘|¿¯QcQùq-Öã PàBÌ,¢Ú˜fË"`;Z ÌQR‚ô(…?_^Í ûá\•SmB'kß¹…àsªîE»þÀ¸à-Î4èàfd'Hiªê>•zSÛÝ”‚á´Aóòas}ʼé¹Eåº[ô\P*zÕÝŸÿdËG÷¼„8BöÝ{²³?[FõíêéÂ…ä=[Ú]˜˜ÒÒdɯq`Bœ|7özŠ*fö…"ùÓ]§óÁÞýjÜíAV÷¶\5±¸C²gïÂÂOw[[ëâin‡° ÏsMüŠÏóžLjÍg}‡7ãTL,•{ Æzúh®TìQpYÕ ºÛ˜zš øeLòމëÛ¶ ºP‰5PAñŠjÖȰuæ@ˆ¿@"þ‚üèPÇÿ[‡Ë%0¡&U'õur LCá0Ú¸9ͯ¡zÖ<è‘™ÌÚ`æ\³$€–wÃ$‡¼ãÙ0Ëž–þ<«ìÜ‹Â.I‰T› Ä-©äØ;,¸Dˆ^u¦!Q¿¾!aÿÜd¼“&m[ÊÏTŽ6‰ ÝOMѲOI¾HÚ‹.ER}NF5ÌYÿ ö*„¸9MÿBO>A=IY"áê¡~}çÞ;µ¢ÀÝŠ;Û=û¼ÛàSöÂX6ÀoÈ¡ øD/fcAC{!OI°AèZO¥Áç3p>ü+eN6K¬½ôª8UhñÃ܆¾ '× Ÿ‚ÎPÏa­ KÊàÔ†zñ·*3D <n9!ÅTDÌɸý± "%7Ý—ÉPQ”%ïF0+C£×fTXçòÙ" €ÚUWŽ¢ н¦Œ°êÛϽ?]û è00ù §„Ö Ù[Ù4ÞN¸øÀC{"”ȃº‘‡öWž`¼†ËS0¾lOÞVÞ8òˆœËgp}Ÿ %5Ú²{0O…ýú¾T¾2” endstream endobj 477 0 obj << /Type /Page /Parent 682 0 R /Resources 479 0 R /Contents 480 0 R /Annots [ 478 0 R ] /MediaBox [ 0 0 595 842 ] /CropBox [ 0 0 595 842 ] /Rotate 0 >> endobj 478 0 obj << /Dest [ 422 0 R /FitB ] /Type /Annot /Subtype /Link /Rect [ 426 196 441 210 ] /C [ 0 0 0 ] /Border [ 0 0 1 ] /H /I >> endobj 479 0 obj << /ProcSet [ /PDF /Text ] /Font << /F1 661 0 R /F2 581 0 R /TT2 838 0 R /TT4 840 0 R /TT6 536 0 R /TT10 582 0 R >> /ExtGState << /GS1 843 0 R >> >> endobj 480 0 obj << /Length 3107 /Filter /FlateDecode >> stream H‰´WÛnÜÈE^õýØg¨iÞ™7¯„ äX1°šu¬ày`Ÿã>”ÃjW±}Õ‡óÄùGhFY£ÓÈa \ÐØapÀœOJ  %o†ÐÒ£’ hÓfÀÇ‚·þŠØa$ Àã‚Éÿƒê«6Ò™òÿêJ¯=$‰É›n³­›Ê„èœ~Úòt ÑÀºFžlõÏS¦ë§iŸú°å“­]õýZ¢ßßä"X-裣,¾¤qÝ®0z1ôH ¼“×w´ÎçÆºk5¬ë­\Yª—z\Oǃ©óõèå|ëFh5ÂðCä­0醺<¥~4ÄÚŽgúqMî ÉÛð­ÊjÌëfPŸÌiºUOÖ'XiÃeßmTY@0üKzg,Fùß ÆòÃÂÌ2øz‹!ïÃcáï ]¥–à ÁÁbáòtè┪iÄÙ:†l=wU‹J0ä“~ç™ÄYþ œÀ˜ú°=xj‚»Ñ ý$<‡e¢Òçzcl ¶léñë&ÑÂH×°!Ö]Kž×—8° þQ}5­‘$—OÚ%Ñš'µÜ 93šÐŒCˆ H;êªÄi ÌB/Reýô"ØÈå‚¿£O3½FßC,¶ ænpŠ^ªŸôÿ¾.únè$”——=ÒÊÇzØAÁ!jò¨ï>Þ((Ú”RùS·¯ 5JA£Øë)…T_Db=ŒÓ­Û¾ûŒuå€êh²^GÀ$sÂáŽÓeÉcJ. ù””!ßö£:Õ§ê˜23å6—ª]²;KNs|Ñð»Õßq…È—Ä©*”;PqE‹ÂK×?[Ê2VçŽ,kÞÖðOeˆ‰¾V ÎÎŽÏúRzåðrª\ä…Çõ/pºáu׺¼ÐóDŽj.X$*Å“”¤ãp1Hô£á³ ‡ç/®n Óµ™¼(S\ &â)¥ÅBHàFË  2þúSi}†AЉ h…|ý[í«~ÀtúÕz“~o·Zÿ7ÝJÆ¿â[ÿ›}]¸öó];Vý]ú7=ñ¯#w6päŽüK$ ÔAöu g%Ó¶–È´?ª“%ZÁý’O£Iè$G|îœ2":ðÓ†@ ï|ß!G¨5 )„¤ŒÙN×üÕð¾\Ì {!?½*#ddC!kÊñª_ÂÊ »œˆÓ 8!„*‚ƒÜt ޽¸­òãñ5J3ˆB-<Ä…äwx,(†©¾Té(ÎÏ-"˜ôÕ‹ª/“½c†¢œ¨q<7]M“N5ž,ä†]yA(0ŽOdi<1IÃ*á{ôÄR’²s#Ðé$E!W’niB7F‘v¨.ülž.iþZj^Úç‡>ý¸ý+ý¯¡¥gƒWå+‘\jS¯°_»G(<ÝV¼›?‡!?WJ^S õçÝ0¢¬GMÚó$f{xóŽæ›ñÏçe‹3—=¢)©ïg|v¸åÙ†>‹+Äžk^jeº€T–èÉ,p<Ï{4_Mgáçüþ^Ö%‰Ð%‰·ËCˆ«\:IlðŠjÎ1< \¯w'¬¨Ÿ¸­–N_ÍçlAS]{–Tn™-¾Çžö½É09Á”ÍÈO”/Z¹9ßLR l{q7§¤gŽ ™2óäúJR0ÿt¦«S8¹qÚîfºZòß·Rñ±ë$öÝ®)‘Âݶfö‚Õô–9òññ9o0ý¶>¾`¯h”o·M]äØ%¨e×”UïIæ$„ž”vÖZ+íìF†Õ”§3«¶£4aµãüE¶eÐ3¤´D7«{Y$Z¸tç>Ê,RB™ºÁßL¿ÁÚ?XÙ²X9!Û1“e-ò9Æên§Öùž|—É%v,C=›Qå²P¹kÞÁÉ–dSÅÉÖºd zŠV9É>½mùš’¼yÿz´ûw’*E (ÕÌA!6zå†/ˆ$,½ÛÜvA~¿l¤Rh¤|h£°¢ö)æö)žêp(ÐH•"™%QóiB©°÷@=ñ|Y"_<`ÚLÃMWîksÁàgñG®ÃT*´|³kÆzf³ŒëÞ0w‰èUñ?æN7ÃcÚ›œ%ߎª9>‚n× p6"$aÇ7©‚–:’HæÐ7ocjøHDè^dmEÒ“œØ`ñBǾÈvžnYÕMý…g±Q±<ÅöÊ›°ïÓ)Ö%eÂKTyY•Ú+ –x²Ä¥õ wAˆ mÕÓfhG*.…äÔT˹ ÷cDAÊÉK:Xrå•–‡N2ìǵzGxŽIú>—š1u˜€_H0É—ä6Õÿmj|hSc—ïóoìS/h>ñçSÇßoK„Z9¨›í¨^ê¶ì^þ¤ŠuÞÊêŠ[@êE¸ ±¬ 9I¸’dRñÇg|Y ?øŠ@ÚΩª¥n³»»:eã¾—E˜‚øœ‘ƒÙ…úO© X?ÞÞÝ|^Ö` §=Ü~ö@Nt8½Ð!ð¤5»[R0“®HLÖ‚+"‡ê\Ó(½èž`'·B©9n¹FÔ,à³â«fzjô~#ˆ‹nIOϨ‹¨ƒ¨Ë•¯³Õƒ‚J£¶y?âN—êñd‡ÏŸ ,þ¢ƒAÜPå|k8  >9ˆ5‚½¼¯Ð¡»Áeº5» ;)bF69ØMH‹Ø®ê ]i¬¬õÈIYJJ¡&a()I =¤ðÊ£-+ODðýDÖf{ÉÛ‹„íHKðSb<:;€»bðG¬o~Zã/ãæ¢qÅ 0®|'¦žDÄ-÷:T{B-NKdøÇ‘ñ¿„ÄWðÿ5ègSbÅÆ0Í•RØ=„¬Î\,ð[ñ4±$ñ7ñ¥Ž7³,|`BŒ|Àxü…ùÅ$  A{·"r}(«§Aã_„Ûe”ÃOÉ“Ü!V›üÒÄàöÖĨKüß¶«%¹A†î{ /aÄ0”r€v‘u/àšIpHsäÀÕÓ“™6+Û²õÁFÒ{Œƒ­–¼FšÛà)”¯«äaÞ6ÂFEÑÉs¾‚ä]©1®ôáÔIÈk!•y]I›i’·xÄFZ07=n\0·(V¦œüõö‘sú€Mj e$ú¬äK§C˜Ðוi:h³•š0«ÔëB^;šöžˆð¢Î¸H UÄdÖ ­È7(˜}—Âà)bë¿ÞÌ¢Î)àM2ÜÑâ_ü>Ù!%qc0¡`| †Rr&Bá“$߯(1Ãõ}0±^Û±©8éf…¬Uv^9ÚþäÆpu&¨2%t }oºÅT¥’Á³Øé­íÔo«¸¹AAôs7šÆOŒÉÝŠEÞîO}Ýib?“T1ÿ¸Ù€ª}ÅæâhÁ*72Ôt+º¤_–{„ÇÿðÏà{ª1:Ã_§èL÷Rê­ìŒ$ä§÷¡»œ”­‰ƒiUbÆG|ÿ|ùp€l endstream endobj 481 0 obj << /Type /Page /Parent 682 0 R /Resources 494 0 R /Contents 495 0 R /Annots [ 482 0 R 483 0 R 484 0 R 485 0 R 486 0 R 487 0 R 488 0 R 489 0 R 490 0 R 491 0 R 492 0 R 493 0 R ] /MediaBox [ 0 0 595 842 ] /CropBox [ 0 0 595 842 ] /Rotate 0 >> endobj 482 0 obj << /A << /URI (http://www.gzip.org/)/S /URI >> /Type /Annot /Subtype /Link /Rect [ 194 597 296 611 ] /C [ 0 0 0 ] /Border [ 0 0 1 ] /H /I >> endobj 483 0 obj << /A << /URI (http://www.info-zip.org/pub/infozip/)/S /URI >> /Type /Annot /Subtype /Link /Rect [ 386 583 530 597 ] /C [ 0 0 0 ] /Border [ 0 0 1 ] /H /I >> endobj 484 0 obj << /A << /URI (http://www.info-zip.org/pub/infozip/)/S /URI >> /Type /Annot /Subtype /Link /Rect [ 99 569 138 583 ] /C [ 0 0 0 ] /Border [ 0 0 1 ] /H /I >> endobj 485 0 obj << /A << /URI (http://www.openssl.org/)/S /URI >> /Type /Annot /Subtype /Link /Rect [ 397 555 515 569 ] /C [ 0 0 0 ] /Border [ 0 0 1 ] /H /I >> endobj 486 0 obj << /A << /URI (http://java.sun.com/j2se/)/S /URI >> /Type /Annot /Subtype /Link /Rect [ 290 541 410 555 ] /C [ 0 0 0 ] /Border [ 0 0 1 ] /H /I >> endobj 487 0 obj << /A << /URI (http://www.openssl.org/)/S /URI >> /Type /Annot /Subtype /Link /Rect [ 369 526 492 540 ] /C [ 0 0 0 ] /Border [ 0 0 1 ] /H /I >> endobj 488 0 obj << /A << /URI (http://tcl.activestate.com/software/tcltk/)/S /URI >> /Type /Annot /Subtype /Link /Rect [ 179 455 372 469 ] /C [ 0 0 0 ] /Border [ 0 0 1 ] /H /I >> endobj 489 0 obj << /A << /URI (ftp://dicom.offis.de/pub/dicom/offis/software/dcmtk353.tar.gz) /S /URI >> /Type /Annot /Subtype /Link /Rect [ 121 380 506 394 ] /C [ 0 0 0 ] /Border [ 0 0 1 ] /H /I >> endobj 490 0 obj << /A << /URI (http://www.microtherapy.de/...)/S /URI >> /Type /Annot /Subtype /Link /Rect [ 117 366 492 380 ] /C [ 0 0 0 ] /Border [ 0 0 1 ] /H /I >> endobj 491 0 obj << /A << /URI (ftp://dicom.offis.de/pub/dicom/offis/software/dscope/dsgui360.zip) /S /URI >> /Type /Annot /Subtype /Link /Rect [ 117 366 492 380 ] /C [ 0 0 0 ] /Border [ 0 0 1 ] /H /I >> endobj 492 0 obj << /Dest [ 108 0 R /FitB ] /Type /Annot /Subtype /Link /Rect [ 186 469 214 483 ] /C [ 0 0 0 ] /Border [ 0 0 1 ] /H /I >> endobj 493 0 obj << /Dest [ 118 0 R /FitB ] /Type /Annot /Subtype /Link /Rect [ 327 469 360 483 ] /C [ 0 0 0 ] /Border [ 0 0 1 ] /H /I >> endobj 494 0 obj << /ProcSet [ /PDF /Text ] /Font << /F1 661 0 R /F2 581 0 R /TT2 838 0 R /TT4 840 0 R /TT6 536 0 R /TT8 537 0 R /TT10 582 0 R >> /ExtGState << /GS1 843 0 R >> >> endobj 495 0 obj << /Length 3144 /Filter /FlateDecode >> stream H‰¼WÛrܸ­¼ê+ðÖz8x÷[VÚlEY¯·¢q¥+#Ñ¢È É‘¼ªü…÷ƒsºrÆËñÚJJU"š}=}úûÕÉrµŠ„«ÍIîç‰ðÇ‹4ðs-¢Ø×AŠÕÝIÀïºë“åJ\÷'‘X•' ZAÄÃÉ[yæ…~(ÿìa/”§^†ÿ¯yëUï¥~"ËvkDè'~à-T˜f/žR~*EŠv“ßÖò _³·Œ§}%;ñªhvž dQ{ÿ\“îÚê®âQy»²Ú§q²W:†©XMÏ}/ÆWõ()q’|Ç$juF'Ë)¼Õ»ƒO~’C¶=¡æSošê=T‘¯°&¼ršhRk¯IÒ%V"ñ#©íCÍtÑ8™ÅŸÑEù‘N£¹.oå_Í¿vUgî<¥a¢i†ž%+mÓN«$Ïè’ /É?÷áh_¹¯Lj¤N‰ãïo8Ø(¹jÛºçsrÇ‘‹…öÃdoÉœ$Œn’ÙG¢ñMêÜ͉äD?HhE‘ü£èLÑ· rfÉ⪦ÜBÂüê©q×®Ý;J¤\v8ýî;qÚÞm«Útâ¡nD¿ÛnÛn›ÖíøÐ`î¶u1˜Þ‚^È~c×¥·H!¾´?!8¶«¢Y³»±€/£Is¥¬æ*T®ZŠ«öÞø‚RZüP¸Pvu•:o‘A6é›Êæ™^´»)T(ÅxÍSdŸ¨«[û5ìϰ)švC+ÚîVüÍ^°¢ÅMqQjú–(ê¾…3ÊÒëûÍ®ÞKÜïC¢]HxE†•ÖµkëÚáÆˆ‹]C_¦4o ´ìnû›vk£ÀUNÁkÓõ"òßs´D<:qÑÖEWõ¾­)­ DFªèhÊ+.îgH®`L®UÑ ÔùÛ£|z´q¯¶âRÒ2Ÿí{ J¾í a·wÍþlq?Êb¸ô^ÎóäÀ†Å‘ aø” #HX¢É†ho|½«×âÊ8<"‹ªF­Ñ6zMUbPl(£™=%ª¦ð¾ª¶q!˜…;OˆR‚ú Œˆæ{9Br²¿ÞÕjô´+Á£RÓââì/âpIí¦1¦ûb—)´¦…{Èp{~¿k|tøå;Ý›¥KIÃi(ŠH1HA|ö…^ÒÙñ”ñ­,ñ¨ riƒdTW} αiØæ%]S¿.Ý0Öø.ùL£IH›YÎ@cY‘{¼Qû÷Ðv† 8¤[P¼oA1 ouSõs¤“Œã£‘â|¯i8ù|QÔvfay¹ۢ¼-¬ƒ¯©dÁâ¨uñìì,â±9K«ÆzýÂ1 P“í¶®Jf/ÄÕnÕ@b&ÕRt`‰}"ÛúP4Lp©’?IPÕ¤ðH.μEÎ]D“·O©D˜T‰?¼íÕ;ž 0x–±¹Dö`²vå6HijÞÖfS»ÓT‚ÑxÀðõoÂýfFÓôC½2aÊû{˜„þ`Ùz"w¾xÏ…É'Yoøl¬÷½We½\Ý…¢çº÷>„©ä–o«ä÷0¥Ž±ÛõN„KP>9D³F¬Ü¬ñáãßànŸíî¶¿¡´{c‰E>>EÅç—â‡Óv¬Fpoí%p BÐ×È yÆ·© Icøž pq³kÜ­’%’…‡H`5wJìì×íP6Ò“ªLÇœ–Eiüy¢²qûjV±µº¡ -·…§Á‡!)–ö‡%Ä¡#Ä!†&/âæJÿ‰]ÄrŽVéÄŠøké1Z ¥Çäü´¿†êÞð¢G­är°ï»çÛ3è }K¤rx(:^Ø“Ìávk±Ÿ½š‘ߟ˜J3jˆ µa´›xÞ`V«':LâܼËs_#¼Ú•Fb¯‚ŽÄ³¢…No8@¡#q¶˜[ªÚLî\i—Æ’ù}Íab. ~ª•¯@›¶®Û®,@C»c –$ˆ³[Þ¶ K´ûšØ±éÅMqo¨š®¹õº}hê¶X›õË¡„³/}a#Bë5ÅXÉ»áöå,çB?büVn8ÑÖàÄo7›ª÷×fIT›·–¼E¹Did–ë2íÿ0§…?·U4MGÙP3R˜!¼øõº'¹H˜ 0ž…ïë.é¯ bb¤ý¯æŽ¢äG#ÊïvO_¶[ÆNDÞþ2a¢°âÍ\ÚfGH¢d…Wþ4îLŽo x!¡ê ÓðsE‘[Ù^9†¦7ëLdFE.=Î}èŽv±J¦ò ‚qâ´@pT…‘N£½‹unÅþq¹ìÌ€£¨¹†¶ ŠýÇ©÷ GÆŒqÿ6ê©§nª' §BlÈóÐd(êZиùh™_E#f$·/E(“ã66Îm{D&j_4k16è ¾=Äé »ÕP©e$ïI¡Ÿ@ä“ɹ5ùMC”‰çp†óOÙü˧üK)D[±±LY™KóP;›ÔÎŽÕæªÉÐ÷By4n—lÑ)ôäQw«y n@"úâΈÚÜ»;’jQô‡^Iœ¤½J^kP¥’"™3—”­gfã©å {V_êY¾ÛäqE$‹/Ì(lUJôúáW/¤*ÙºbñÐd%šu½š:_Ê2Ô¾,ÁòÄÇü(þ-°ïï7bÁŽŸb§ý<æØ%–¯X Àó!X su½ŸVÖpÿlMàMãv•}µ@µ[ð\ÄÅZV÷Î»Ž ; ØVxó€G¢­³I®ŠüÜ4YŸ“u‰åÇtœˆ!w"D['»C¬Ë k/–9\‡ŠHÐ…ˆs®\c  É…’?º­ƒnn§é.øŒ endstream endobj 496 0 obj << /Type /Page /Parent 682 0 R /Resources 498 0 R /Contents 499 0 R /Annots [ 497 0 R ] /MediaBox [ 0 0 595 842 ] /CropBox [ 0 0 595 842 ] /Rotate 0 >> endobj 497 0 obj << /Dest [ 422 0 R /FitB ] /Type /Annot /Subtype /Link /Rect [ 436 91 451 105 ] /C [ 0 0 0 ] /Border [ 0 0 1 ] /H /I >> endobj 498 0 obj << /ProcSet [ /PDF /Text ] /Font << /F1 661 0 R /F2 581 0 R /TT2 838 0 R /TT4 840 0 R /TT6 536 0 R /TT8 537 0 R /TT10 582 0 R >> /ExtGState << /GS1 843 0 R >> >> endobj 499 0 obj << /Length 4013 /Filter /FlateDecode >> stream H‰´WÛnÜÈE^õýØÌŠ›—2@lÉ6´{“Õ,¼AÉÑPâ³$Grò±áïÍ©ª&ç¦MœEAþV×åÔíåâìb±ˆ”Q‹åYê¥3åãsßKÅ^àû¡Z¬Ï|ÞëîÎ.ÞÜuןùžïGj‘Ÿ¹4‰§³¿è+'ôB}í`-Ô—N‚ßïyémï̽™ÎÛM©BoæùŽkÂyúÚuŒñæZÍ#åbuáí@ÿÈ×äVéžÑz›5[Çø:«¿.¾=3ó„èø‰šÏp1v™)? þ|/ hDüUWæCÛá9ù»cR/ÑŠˆVKÕ”Ž;ó"—}ŸÉð褧|HhL—NÀ×ÝÀO´[U´ ­ê)k5¬JuuùvñÚ¶îñ«nKU5ýÕuY`ÄùÊ5^U^±vM°S¯åÿbÛwNÊu›;±Îð__Ûõ¹’ͳ5ÿÜÒ¯,Ò£Ûžæ`ÇqðÊ~ùâµ˜Ø (•X`åÑ»Úu7]¹¬>:‹û=ÄDž=)Êž‰²eD̪v3Tm£–m§r«“ë,ÒÕ“â³µ‹/–že&ÜÀxጔ1ôˉñå$l<^ l%ãÎ<ØçÒý²Så¡87³4Xã± µâJ hÀ²uŒínªºjî¾±ìÂμÏf~¨†s%ó‚ÏW 9°„M°RÛé‘"/:5T¸¬î.Þf0E]zE¹<|D;àV€Ô‚à}Qlý”QAó*çOëøI$Ësä‰GŒÊh§ÂHC#"¼¬32çL÷â]ùó¶‚çÌɦðãH ‚õ¶*wXuìg3ªßn6m7¨¬)Ô¦í+LÕå¦Ä\'o ÆÈHI^–å Ç:Ô]h¼Äœèîò§Ÿ^ÿáÅ››C…¹røH¼¹Õ[L#ï1ëªì·Îÿ6ƒ»Q›#*½yGÞëe—4ê—Ò:¢LÝŠ5B hР™OÖ0Sr‹‡ T†í`0…B Õ5ÔOÖîúãLÒûæþ¯2Eôl¦06Ÿ—Ž+¡ïÌôòs™U2«åC 2.5»ÑÈ1h”§Y}p^Ù啜¢bAÞ¢’a“åÓ±%¡@hcEž+t¡+Ÿ‘s#UËðÉ#_ÅZQBm÷ì 9xž@·Í÷ž\÷¹¦Œ4Hõ»:ÈDS*NšXKTk$ xˆ ‚ª¹Æ’á@ñˆbÁÁŒm e±w¨æ³1 %µYa¯ÈGqUEs¤¤ŒêÀ—àúÄ;çïh—¿?ñIJóX”kíÚ…ÏB ¡ž«=žÕ–™ÂŠÞL¹lOúx’ÞŒuU’Ú"–Iª‰£3#±*ªi,+œH?h>S‘Œ½0…0ZBCegÉÁm%¦\2.WBîQÖmé8#•ñc™Vùô¸UY:>¥n·U=¸Âåx—x™Z ‘ͦ®Žs¦°Uîí¬²Åom$I¦4]í*oÊÚ‘~ñ'¡ô´ªò•˜%¯·×àœÙ6äjZ<Žs9 % í«öIUG–¯ªò‘3:ù:Õ{«løàübPŠþWAiÐL^¶Ë7 uêZ]~ó°š×Yߟ<{*»›ÍçŽìS%Ùs ‚) qV”ÝþÝ\Ù«ti)¨ã×®÷ª0½ H¢¸­8_ÎŒì¡ û¼SŽ0´Ï:þX‰¥“1atxs‘ów½éy‰.î› Åä- h9'§8uƒÙŽ€h¡Ö¬ۣˆø3Üà©‚ÚšR.‘õdí½F[³ÞÇîÄšèΑذ[‘ñG¤{=Xb}5ÆÑéã]FŸIû¥U/{Ã`(Âúw,'låSyx”Äœ'€Ð„ʘõA§{"qhâà@æ©K „h Ò”\|Ÿ¢¾Ï3„–C%EÞ/ÛÊOýp¯Ã\“°›¶¢”Ær Qí2Ú®‚_Šõ9ÃëçR…‡äq†¾äŸ(C¿e¤R’Q>f*P7WßI*ªÑ–(K‘œSé[¨:=ìDQ¦£îâIR3£æ@tI¢`´·ñmí ù! Í*ùBüý½+ßë ‡»ºm/óîB¾»‹²oLñJ„¡=UaØÈ0ǰ–áñÍ"ª ÷ZÖ/N‘Sã#ž|#ËT5Ò®-“#U».ƒ¿uféZ!ûã¦k‚ˆ!úÐ…ÏB13¶}»¬³»þÆ®Uã+ç²¥m¸" ©@ æ´±9€xkîèxNù7–â'¦˜B—2r8ZäL]C{ˆQ±ž6¾Š(À¾‘a[l…€œ·—m‰Àã~•Ù«¨Yb{BJ—t0å\‰AÁTÉÛ~¶½½‡'±”Y¡Ú¥Ê\¢)ld§¢—ªj»?Ž?ßÙm ‡Q¯[»&­Õ]Ny1Òù9¤¥ª¢?néP ÍO{,Ò•Å¿‹c0fLçlF ƒDõ•íŠÔ š' 4klçåSϵ‹íwâ]çeñžô8ç®+>èºj´Z ¡ûD‚û3ò¼9îPÇÐéÑ5£i¼ëÿ3ð÷òˈü}‹Ú¶ êÛººíàWœÀ½Ýp1ê¯5™L›—u®~HTãy’„Hn´Œø(ðÆ&ÒÒup‰¡{Ö-mâfó@ƒÂÆpZ#[3 Þx6ãûÑXñÐh‡T0žH˜´Íü„<PìžÁ]Ü}vlÚn±Ü÷.†ŽauP(úùðÏ[$•¶gGoPî¹Ù6ê=§u_˜0r¾‡`::Þ|m_¥O/Nö¤¿Ô—ÇàIöÁ³+WÕˆ^bDÿúZ:ÃBذðrËåR$åR#¹T抟EâgÔˆ×*ØZ 2·GN½$ˆO¼°º¿n†²[fyé!—p í “¾eRÝRÞlNÔCݶi(äÒcŒ„±æü´ÎØÌ‘þŒ–·=N‘s Æå—„ ¢$Ž™÷¶ç´µÏw½ÆW’¿¶†ŒÚòZŸ3‰ê¨@Ó.¼êö_¬WËr›XÝÏW°S 6 Ê6ÎÂɤfa/½Á HÄ£9ùŽ©©ùÞ9}º/ É^¤j6Òî£owŸÓ§+à׋4r¥w§½ D@¼úøçסh»Î;S@Öº,.¨§"!øM6Ù« (dB¿gÏDc ÝZ-CT­µ.›sí9íwl‹|Äe|öCü[†éo4¶íq`øú¡èÞ¹Ñ #~•Ö‡ïú}‡É—¶y|54WüCñf¶ »ilRè«~\˜7™–wÝ`çàÄ`,ŽÞòó¸ÆìõhÆË—òTwBNvcòøû¯¯cÇë“+À™u9q­ nÜ€&̳º¡¬;XâS¢„«ÙæWöÉåb㣲4­¬jU5ÊÕ…[Ñ8³å…Ò{Õ8û—p5Ûe£°úëBMöZç¥Å]*z3p¬èà‡¿>\hS¤é’ ]¯¹6•|c¹[ä=ù@½#w‰„`ª¦TY5ˆ àÞK2SHnX ø2_äÀgûòr«¬€éõF2Ú¡áÙK½930¯'š¶‘¼«Äå20ßæáC»oKƒÐuOõ@x8'eŽŒ£láÜÉIÛ­îÎ’zzåÛõfIâ©­Ke4)ñgEŸu¢†õ~U“?{ü‡äbú”8-üw¿>~ù{X²„³Ñðe»'Ä AVýôÊJVìBíÁÞCûCtY¿{>UÇqŸÒY,fB.¢ç ‚8º¨æŸ¼ "ejr_||×È©šÍBÈjfLI"Ûå/9´w¹;¯P‰eWÒ@G,–‡¼qŒÃzO ßR³8Ÿ¬gŸÌB æw]y•‡ü!ÀzQ„%6¯s»]ô6&êãôÂ5ßp—Âû·ô‚àæîÞ•`˜R´5‡‹·L¾¸³Ûx½u—c× YÜïE Q¢… L“ KËø~ËàÂÎ3Å©6B<¼!;ÕÉ×;ʈÐužÜΞܨ‡;h%ŸÉ–Z8Ã"yw_T’^—÷£Ì¤é¶’êz#îå_`#î.×£ô¹8`íx8_x£*9¼H‘õ¨´ y4‰ÙÜu½ŸëIJ´üG9=VE5êA¦¤„¦ôJ1¯Ë• ÿÞi+œh `¾9 ýDÁ»‹9#7«Ù<ù ‘êøs¢¼uDéRzÍ”Ž¦”N)Ͱ&gÍ”f Z³áo.BºzÎïÌ-ê~%±_Oã·28›Zש†dVC`)8á–=f¸Ù1ʳ§¯; GúLÒmu²†1×Sàí y¢ãŸâŒíjÚ©²2ÛÙ–GÀ— AîGW¨¹+\<ÑZªÄ«üDøÞO‘ÊŸŠ-©jeþÙÓà'‚VûËõ%n'œ‰ÇBÑLEs·|âfŽz†ÇCZ?¹ÅÊDêüf:ÍM±ÝÁŽ)åá›~8ÉØ¬0‰ìH¢: `æ$Ff´+îN„n þµÍ.e©FªIÑ£p:õ|›sŽ–Mv´ÕÏ!*N<é·Ö—•½M,‘nDM“±åãþÞd†ÎbÒ\f;r<¯˜ {õãàK"jNTµÍããÓjš°[¾¿÷#y¨U¡þ=ùœLT> endobj 501 0 obj << /ProcSet [ /PDF /Text ] /Font << /TT4 840 0 R >> /ExtGState << /GS1 843 0 R >> >> endobj 502 0 obj << /Length 562 /Filter /FlateDecode >> stream H‰lSÛnÛ0 }÷WðQz°*ùîÇvÙ¥E‹ ÷0¬CáÚÎeK¬@vì;’E*}膦DòLJôU]4MšeT«º?:”ZÕ d¹J´N¡ÙEšbn]|üj`5EZiAÓE±?a‰CôC,dªRq-Ñ—Šw²ÂçgrÝM²T…èì~€TJËØ¤e…õE,Q¥€2‡½E†½ñ`Œd¢Œpp׎ÏÒhÑnåÏæ&2 qBÃlËU ë9¥žžêªdzOƒÌ±ø"#Ÿ;6ÓÔ’uÈ G6db°?eΖ 'ô=ûÖ¡TGia¶“=c_ã#f8Xþ¦ûf”q…9+ÿêØ¥ßptq¦jÁ5g¯b-ì[J‚r”¤Nd$ùS‰ï+½íæÉýÿÍöìž×XðV¯ðBÆ…ÊÅ#“»½–ƽ¢1Þ#Üéòþû#©¯!6ÊäÐ,XìœÄf¿\âôJÑ|"Cär¡Î°D¥E{“˜0#“„ú`´Ðc;Oi¾éÔ¹—&û™m¸Úð¿¶~+ã„Æ‚¯[{|kÓ ã w«[t³ô´„7Ô·ÆaûëK ­ëÖñræGõ‹]œz¸ÄÒÙGÃ8ø²ffGç5~¥ò÷| í¶8V­Dϰ£ê΄Ûi:±sù/%{;$þLÏrÓÉË}ÀáÚ•\xwHC2$,Co»çÿf}ƒqnçy ï›è¯râø÷ endstream endobj 503 0 obj << /Type /Page /Parent 682 0 R /Resources 504 0 R /Contents 505 0 R /MediaBox [ 0 0 595 842 ] /CropBox [ 0 0 595 842 ] /Rotate 0 >> endobj 504 0 obj << /ProcSet [ /PDF /Text ] /Font << /F2 581 0 R /TT2 838 0 R /TT4 840 0 R /TT6 536 0 R /TT8 537 0 R /TT10 582 0 R >> /ExtGState << /GS1 843 0 R >> >> endobj 505 0 obj << /Length 1246 /Filter /FlateDecode >> stream H‰ìWÛnÛFE_õó¸ ˜+ryï[}iJ ‹M D}`$Úb#rU^¬ª?ÚßéÌî’–¸- ÛmBI-÷2gæÌ™áq6™fYdדT¤¸øÓ±+R A(¤ëúUW¿kn&ÓWsnÚ‰+\7€l9qè ·ØM>°Sî Ÿ½æ8泞àõ­šµ<[ªm¾ˆ„ËÏÜŸ9ÜóDÌ ŽÀÁÑ(À³%û^/3« .…ǘåuÏ=—åþcvA¶Kc»—hëðfìŽÃ@£áh£Kæ±ïxö­ŠÌ*WÄ´.;0°oäð&æë=ð)40ç{î$"`mWp'!«¸#\Ù?÷e3¼°÷ºk›k³46ËÁfO 7°6ãQäRëÜÁ» 6+—jÕuè)—½çÒGÏ”x:Þê•Úµp\Öy³‡wÜIq¬@7¦¬iKUÓ@Ê|°ÃÆÝ\ìXML‡':uVÖeÕW0…¦Xªª*êU±‚ ð0N{î¥"ôD wbô 'àä®…kEÖâXëÜNZG¶Ëï-‚¼Æ­ߎ,Y®GïMböãpLÈj?ÝFà„‡"a WG¬nûŠ{‘&U¬·¦+Ì÷À¼øÚð­<ôO¤÷¿£ÒW–0ž;2&zÀ¥`d™åÒvy»²[Ã%º¥D—brzvþ+w"Ä °`ÃË×Ü£TÂËwÈ(‚™öcÂÎ1!$Ö¨*Õ@œ£1HC¬(Ž'0Eð*u¼ÿC9’D$ˆùžŒ 'ËÉó%|,»?‚®@W¯Œ¾47 ¹Ó„§ˆõÞd÷ˆ¼åj‚üpù.ùarî²ï0ù.´ïSMÉ˜Ýæ áªÇHUœÕ·e£j";B½¸:O–ü£º-SgÞ×`|„Xi›=—”Ž-¥AÊ:ÜY¦)³ª}~|þˆÏ7ø¢fÇ<"%® äZ£E:¿qlÁ<™à Ë6ÊHcnÈ,ñ¿B¼§ŒàÝ«o qn73›r$ß®K*5lÙB¾Ê·$Ø1ê¦_×ô,Õ!µýv«lv5EÏ•Áoq”À¶üÅŽ#Z¶Ê4nú¬Q‡9/ý®Ñ“N?Õ·…ÑgîâÛ›©œÚ:ª±ÅêùãòYýÈN.§šÞª™¤Û%ÕD®ºèvªù4Ö‘?$Þšé“ V潃ÖÞs^Þ¬©SOѪMßñÀh ÅEÕZhIçõ°™†ŠO¾¨øñxä.ÓœÃT{XHä…Ñz¡Õ¯àû>èºb1¡Ža|þ(þ/ðÿuÿ,‚2ŒŒÂ'‡ o;¸dl#þ…ÀÌåÔD®MOx¿Ô©Œí+˜9ö]N_ øwh?—ùF¡±©ºì”•x“r™o†•Xt1°=)Õ„Fƒv '©É£.\°CrÏKêoÛé©BŠm5«‡sÝmê#±!ÓÔtVtë¢oÿ¤-û—Vˆ'³í…*„eWߦ´¥®X >Á|›/õ—A¡¯ÏÖö?:HL6"c¯‘­ö{Ê|ñüúÐdM´ÛBÖ‘½D¿ŽBÀ³r§hT¢«F0Ä.ìºðþ–­fíRmmË´ÀEÌ–¼YAYããf“S~[ gÙä÷Üâó endstream endobj 506 0 obj << /Type /Page /Parent 682 0 R /Resources 513 0 R /Contents 514 0 R /Annots [ 507 0 R 508 0 R 509 0 R 510 0 R 511 0 R 512 0 R ] /MediaBox [ 0 0 595 842 ] /CropBox [ 0 0 595 842 ] /Rotate 0 >> endobj 507 0 obj << /A << /URI (http://dicom.offis.de/dscope)/S /URI >> /Type /Annot /Subtype /Link /Rect [ 86 614 222 628 ] /C [ 0 0 0 ] /Border [ 0 0 1 ] /H /I >> endobj 508 0 obj << /A << /URI (http://medical.nema.org/)/S /URI >> /Type /Annot /Subtype /Link /Rect [ 86 566 204 580 ] /C [ 0 0 0 ] /Border [ 0 0 1 ] /H /I >> endobj 509 0 obj << /A << /URI (http://www.nema.org/)/S /URI >> /Type /Annot /Subtype /Link /Rect [ 362 492 470 506 ] /C [ 0 0 0 ] /Border [ 0 0 1 ] /H /I >> endobj 510 0 obj << /A << /URI (http://www.ecr.org/)/S /URI >> /Type /Annot /Subtype /Link /Rect [ 287 477 384 491 ] /C [ 0 0 0 ] /Border [ 0 0 1 ] /H /I >> endobj 511 0 obj << /A << /URI (http://www.rsna.org/)/S /URI >> /Type /Annot /Subtype /Link /Rect [ 325 462 427 476 ] /C [ 0 0 0 ] /Border [ 0 0 1 ] /H /I >> endobj 512 0 obj << /A << /URI (http://www.rsna.org/IHE/)/S /URI >> /Type /Annot /Subtype /Link /Rect [ 229 198 353 212 ] /C [ 0 0 0 ] /Border [ 0 0 1 ] /H /I >> endobj 513 0 obj << /ProcSet [ /PDF /Text ] /Font << /F2 581 0 R /TT2 838 0 R /TT4 840 0 R /TT6 536 0 R /TT10 582 0 R >> /ExtGState << /GS1 843 0 R >> >> endobj 514 0 obj << /Length 2586 /Filter /FlateDecode >> stream H‰¼WÛrÛÈ­¼ò+æq°µ1ˆ‹òDK´¼Ù¥´±èMªVy‘ 8+\K¿‘oú2)R¶·)Å*˜kÏ™îsºßÍ£ù<JÌWƒÔM#áÁ^bÏM}Ž]ßó1/õÕ÷ƒÑå÷ÍÀs=/óÅ`ˆo°Änð»¼p7?9ÐÈs'ÿkjš5NìFrQm2¸‘ë9CÄ ¬/‡ŽRn,E‹!´F!ìíËO4geŽï*Y‹™.·Žò¤ÎÍÿ†¶ûl»JÈ:x°Ýñ8tÃÞp°ÑCóä/Îüœñ,Ï¢(†yó‹¶ÏïúÆApžÞq…É]µmE»ÎįuõG¶hí,‹¡òÙ¿³Cù®²#Ö½!bsXkÃk‰6s†œWbUÕ´)6yVde«[S•bQ•iÚFT«3Â@¹pè¡r£1ZÊ{$ý ïq=ÏkØzp5`’/Küp¹pÏUC ·µ3Œ¡M/ZØ\—K±±£jç°…îæj.ïº2'h$™ä¡=êÀÕÛc½äçm­a³-Äõû÷dR*oDæÒÊJþVÙÖÂúà›ºðå‹jE]@O #í„óë™h«*0­hªU»ÓuFfÍ T´÷و͙! ^:£lZÓná"Æn(ÅÊÁŽŠ:jz3³à· 6§Qµ¦ÇæÉñqÜ_é0’ðþTšG;Œf5¦…a¿Çà…ÿaZ»m9úp8eIÛg jzàž3qÙm»6Üß9†¬ö©q†|3û…zØŸ¶Í¸‹m€Å¯Ç¨ ÙÁúý}Žûûw>lšlïú‘@Kmr}—C[IwµÙÞåf!–U>§Û3ë02H-Ï™vHûèý]®Ûvs6-áÀ!FU¸€]wÎÿöDÊp—õ–¸á³Lç%Œë@dDjŒ!ª‚ÐûQu6X ÞÍOÂxœ¤nñ »PÏê ž/ûŸØ" A@5Ä ™‰ @°Ë%FzÖRnkÐÛ} øiÛ’ÛÁ¡¼³_ߤ¶+}E8È Šx†D(Çè9¸’n‰~»:†ñ gð娱G ‚¦ ðâoaç'nø"v§¼€Ø-³8®­)ÆÁ“Z1=ÿ(þ“¦?Š7W“ƒ7P&h ø¸È.# SÈG¨(…^‚ÏUMcÀ¹ 6V°Ü=9g¡½ïT‡Çäú$#ò/–ï•×ÉD HØõÄ>÷ Ù¾á†WÓÙD|WtP‹iŽrªˆRgÐBr‡q¤¼¥Ã¥2«1išjaìh¦Ã[ùÜ |èÚë×K´ÛíðÆ1DàÎñ·ŽŽúÅèÂ7éÄp¸uð´àývAž›ˆ0õÝ1è«7v“ð¹gô¨»HC´»Èÿõ‰_¡ƒ|Óm L Kq^•÷uÖ ˆŠziª¼²ÂsoŸOŽ‚,Hž`ª"7ñ@U/ƒJ2®€G‘–j %øN%A«Ž¡ÉM¿­ŸD SŒ4D€ÿ$²0OòzÈž0?âçELÆ’|÷Ü3C©óÁ­Î1J¸ª¬2ÔíZLŠ <Á‰¥>Ûf¤G÷z‚vÝ”ÚínÐZò‚á7œØýÔ t"‘Òþ_%·‚ì$Afc£ªè‹äfù*"¾Úo¶›MU·ÙRÜõI ‰Š'qþªÊójgJ<`h}Q]š¬AVYòÍZße-]FeS’šTdÙí çÇïop§Îßí3~¾ÆÉýJ/Q"ËA±JȬêµ2âÊýÍ}nK÷Zf©þ~º,ðr*fÙ’dòb󋸛Àtn„L²z'‡ò³yn%ÞšGêëû¯`ê>Åæ ™3Èlu°Œ*Å…±™9‰v(MË=9¤äFvBãx”úQgÁqYÜ}x+Ä\á¬ï Ç“m%¶ Ýä«¿8dµáäg±n çö€D¹.ÍÃבþn|™V†‡zñÎAÑLßÌÝÌå`Ülre*É„œC>Ïø>¢°bÍŠ>åF.ì]¸bž½mÞ ð}Ò7ì^ûBÇ—3°#d'Šä%,”SqS˜vÝtöú!‰˜úa5©á›ú93EÐ3EÀöBæ<¶Ü¹ª®5"ÀW\®ˆ.ÆrgÉ_Ó@(AìD;¬ÞT¶z¬áä1åÍ8ÍðÃŽ*ßô2Nƒ˜.#ÄŸ#•¹iÉUÔv޲Å[ˆÆâ¸†Ãµ$ÆŽ©êý\[²%nºÏsÙ³»:Eyvû[’ô7'¶Jµ„»ðûÁñ奀à”ŒP®K+ó•[¾Õ.à“ðÃÍã×rÏï5Õ:ôL׋ª4DÜ &EŒZ(›ÐSTȧÔÚ¬ø2S¿šÖ©ÞÀ.âÎÅ)^^(g“Qî°4&N°›"òúêG1?WKøÆ˜Ãr/’ÂNG÷Eª•‡ÛÂ×§·Ç>•Äæ ¨Ó÷N”‰y†9ÄØz™Ýub"ÒÑŠz‰ÖÀ{oJ!ò<7e‹áƒuT ^±  Áø ÐÀy/àõý!ìCÚ¢ôëÚäfÓ€;g¢Oމ–ð?GHI,\€°4-.¸ûmó yŽ©â¿>¶À2o PÇ9^bS¬¿oáŠLÞQÉLH2véHž%1Ü\¶â”/ÑáöCÞ¹/T–׳©0…æzÃtJÒU“TD6”˧]QI\Ä,›öC‰¼‚c•}í°Žû°ŽÙüÔIBÌn8§…gÙô©pÚ¥ÂÖsq8¥ÂM…÷Óþл˘œê¦-t‰Ô©È­uùô%O~ Ãm)ffQW%o«¤ “6ÝvG‡÷%k¥Ã%Ðаœ¤œÃÄ-‘ÀK U»í¾!Q¸Ç,€ÃRzS²¼Pì$T6R‡øñˆ¼]/èE£²pn‘H;zãÖ ¯Å†­nxˆ=6 cÆ‹c '¶&5¥iMgգ݀zªÏ¥˜IwÇ™ÝÜpë­tø¸¡5í%ãƒçÆcõ¸°å¼QEVñØ‚OÑÙe&ï(YR)ãïûø†øk(Ufº¤ZU‘Ì)ÊJS\¶ì¾JÊ,U*1‡ W4ªàg#(òbVvˆ1cûaœReAóg…Ë1È`ÄG—J;ûj¾`›ôÒ®a—ÌŸ}±ÉvÄ‚¡ƒqÒ Q­Ø˜«ª¶gZsäG¢>ÚæÖaWŸÿÀÞ½¯·”eÑå²"žD˜rå°íxxîÂÕÉfAi2ø=:û“óó.·kY÷¤Y¼„°wŽ‘_ß°2 N“L6lݶ›³Ñh·Û¹uSj섬Ç'fO䈔<äÀ¦èLätÔ/ïÑòàFÉýŽLç{|?qÃDøžç‘PPHú!æÍ‘¨³Ájðß»—̵ endstream endobj 515 0 obj << /Type /Page /Parent 682 0 R /Resources 519 0 R /Contents 520 0 R /Annots [ 516 0 R 517 0 R 518 0 R ] /MediaBox [ 0 0 595 842 ] /CropBox [ 0 0 595 842 ] /Rotate 0 >> endobj 516 0 obj << /A << /URI (http://www.microtherapy.de/)/S /URI >> /Type /Annot /Subtype /Link /Rect [ 71 619 212 633 ] /C [ 0 0 0 ] /Border [ 0 0 1 ] /H /I >> endobj 517 0 obj << /A << /URI (http://www.offis.de/)/S /URI >> /Type /Annot /Subtype /Link /Rect [ 71 522 170 536 ] /C [ 0 0 0 ] /Border [ 0 0 1 ] /H /I >> endobj 518 0 obj << /A << /URI (http://www.otechimg.com/)/S /URI >> /Type /Annot /Subtype /Link /Rect [ 71 426 199 440 ] /C [ 0 0 0 ] /Border [ 0 0 1 ] /H /I >> endobj 519 0 obj << /ProcSet [ /PDF /Text /ImageC /ImageI ] /Font << /TT2 838 0 R /TT4 840 0 R >> /XObject << /Im133 521 0 R /Im134 522 0 R /Im135 523 0 R >> /ExtGState << /GS1 843 0 R >> /ColorSpace << /Cs70 662 0 R /Cs71 663 0 R /Cs72 664 0 R >> >> endobj 520 0 obj << /Length 1017 /Filter /FlateDecode >> stream H‰„UM“ã4½ûWè(QX±dùkoÌdvf RÆÃRÅr0Ž21v6µ¿– ¿3OR23 [©rd©ÕýúõëöUÍêZAêuTñ*' ~~Q$¼’De\&IJê>Jü™}Šf·‚&ð§nÚƒº J kæŒ?°~tÚ°rÉ„Uãw_Êd¡W]ÛlIkú"X2ú B¦,¥Z}‰3_2Ò@æKY8 üå_§qœÂVãßÿ VD(ùLóX©¢ªÈËÁX(cIÛ;'ïém`í iß ¾`å‰Ý÷ì¨4‚kÔsŒÜÇî7Ó´{3›Þƒ73²cåóàHQ¾Ò3ïꦎéHš*wªÎ‰H+°p«£utU¿ê¿¬®òÅàpXdzæÐ-¢ï<3{ä”"³ Ï© :™ðÖ¡=EúKoøö-ÄáöˆövÐ[žò§ü9»Ù™Ý,»ÓÍvÚ´Ó<ˆÔA¹ð(qyðdgtmlßL|·\›¾ßЉßy€ò=ª2hS÷㳘â\Ñ“˜oÆ$\O»Q—hÊõ"Ï¥ Äùâi˜Æ2Råv¥‡ßöW‘¯»Œqâ;EØÞRO›tõļpÝŠBœEq© ³^w£¯?¦!Ê,§DÊ9© .ÿ¿îªT\¾¬{¨v~ÌN¸•ËnYkLPŸ@rƒŸHh¼|5ë¤C~ÓŒY6ÆÁðTÌ­kÅÏT?Œ{kÆÑšf5ºÄN íEAëŸñ½²@=>|Â`qÉ×EŸ¾ê!ãGzîçvN7̵c×?1ß´<ìšþÜMG–$‹F’ò—„þUPe t§h¶<—.zJÚ>šÝ÷"MÉÜD?À4SÞNA°9QŽD’)ÉKua¬NÆ"žà×ÝӲĻRÕsû,Øÿ#ÀO4é endstream endobj 521 0 obj << /Type /XObject /Subtype /Image /Width 129 /Height 48 /BitsPerComponent 8 /ColorSpace 662 0 R /Length 1194 /Filter /FlateDecode >> stream H‰ÌW‰’ë( ´°adñÿ»-o;“}•ì[UÍ$`5­3Ãð(äÆIÅ9zVúšøq ?‹„iäÿØüÔ-¥ (”¯B8qÌÍ|}ß'?Ãø5Ox„cÜO'T %õ>&<–c3Õ„›ÝÈx¸˜Ù4¿‚À¬™ýG3>|Á¸?Óið½0â?vÁÆáÕý Áôé\pÓn1ýfúññDz÷€:`:+xwd}ü°öNá\ð<@LÒgãwÝ]º‹WÜG‹²ÛÅ CÝ¿NS@Üí·é°ßÇ)3Ùß#€Ÿ÷`¾kžç¸­Ò<'ìäGõñç´Bv^bó€‚Ó 5Hï`¸Ÿ7‚ú¯$eÐEÊ™(GnXn.ë^œ¼ªk&„ËËD'ÕÆl´÷í4Ë-€5%T$eñ¶N‚,EO`(É,EYN}™ÆN¦"^È2ãqQ½‚s°[8ö ÀoÞ…ó€€;|m‚¨\NZ¡ÔŸŠTR±u6ÅÎgQÞICN–×cÓ‹ú²J< °AP:€ÌÑ¢×h“tWläVÇ•Šȉ°ãkEF¾ÇRRB®ªMœ¢Æã5›¶-J@:’Õ¬jFR­••‚ÜxQzhóþ.˜ÛÉ÷1÷.ýí ™7JÁÔ l®.‚•Üε-ItÀY_>àµüâ¿Å€ˆgygñúˆ-Ä oýÜfª°ú?ÇW_=ÃZÁ²¾ÐIÁÞÍn©.¨–5Û¹¤–ê€ÅJ}éMò–xG’—{NUæ~0ØF¦•Lh h-XK€ª|WÒ§¥ÌÅyI•+€ÁX2qkRh×4lw·Ã4üfé1À·i¨„Ž@ÓJ-Ù(¶C£þËL½Xã1I‹¹•«=i%ß*ʨXéj¯Üv%·¢„¾iµWÕö}ÏÓ®ÜÒ^É^f:®×å¢ùÔ–ß7G}EÁ/ãnøy§oþ©Ðd¿^@@„Å;]Å7Oü.øéÒl×~÷xI$kP=4HÒ-ñ>©9²\>Z)»ØóroÁéoX§› º^0qj@øTÕJ<%vA[Ôz°_ry¸# "„Ët<öLeˆEÈ 'txü¡ççuêÑd!‚ÅTŠR,˜ôQÒé3CÆ ©?=‹ÃÏ*ÇÇÜC@-ˆ/>g0]"3f$#£ÕÂ))£Þ`Aͨ1¢Âêæ/´§WÈ¡ƒ8N¡ãÚ²J½ƒÉh.¨Rp{¯]ˆ½ec IÆ,•‚®S´¥Pk µ=}p…wð­æ@ßH³]R]©S.Àɳ¨ × €9©+r¬ c>Gcq¥¶§÷îd#çÃ9@Òq'͹$@:$vÐÿñIR"f,³N•`ßÙž¾mßï> stream H‰ì”ÛrÄ †EFßÿ P›ìN÷¦ÓéÈß  !@t aúÂÚÕö§†ÌçpçpçpçrP꣯ fHƒ®NKZ8Ä" =š¸ôP5ŠUyƒ“Xªr_fj›RY3KSÒ8I=쪒'B¾2Ëu1NV+Î1Å7NÊêÓƒC†û28âàh®NËÒ`p4‘ìKñs1ú„”³Ìkç¨[&¥s¬#³˜õÀS=ɺ‰¼?œkv¤÷nœ:Lßqæ„ú¼ÒÓÆ,ï8EDhp² y¨‘r½æÐÜ`ëóTkˆ J_»Í ^ÍKÓŠœC•Ó:ò!ÇÎâ –¶ŒŸpÔ͉ò> stream H‰äWû_SÉ^CV’PQp)(³:s‘Z“µlyY[´Û íÒE«ì6¶Ý¾þÿzsonnæ&÷†Hâ§GÑ;3÷œï9ç{¾#Ä%llì2»?Ÿ˜¶ô©I)'¦†íÅðlº Á _ ÛaÙµI6s}Øž Ç®»ø¥œ¼1l_†a³Qü€Àܰ½¹z›+ʘ͔†íÏU[{üRËÃöèj-¿”óÃvéJ­TIÆ/eeØN]¡•ç;ã—òÿHW}ñK¹0l¿ú´Zmñ‹\$¾Tð ó^ J×ÇFà*Q×'æÇg3¢0–¿,ÜÌüÒòõ…[UT#p“¸ú?S½µÐ[Õ.N¦D?ײ¼py|¬©¨;—öÿÒv»-ŽÉêØÂl—Õ7' Yð~=Ñm+Øñ¥êLÛ®åÆÒ—wÆ23kܯïïί¬¬Ôj•ÊD2üZ¥¶²R]ID7¦’±Þ# ¢Wý%-ç§»íJN‚2`ª3v²âé×–ý®U»ªÛj¢ ªÝ_R^ñSç(È’79c=è9Y=bÁûš‘кãïZÿ¢ü¬ $‚KšGØUVónÊÊ{n"€Ëš€BnzW€oÜŒKÇzÊÚÜPö¾f„` òv×!»Jï[2IÇOm ^×d¥ûÌWs>¦»;È@úµ)¿or¾›JËW³Iá謘ëú©l6Yì‚@.fÓ.3ƒŽ¥/»›€,¦ßmòðeZüYfÇX)¥?Á ©äà€;©Ç†ôKÁ^d¯€.ñË¥OP^ã å¯Ó²OfÒâ/Œ…Êt¡Ðáaj dàž7úÉq®º…OT»¾Ü*‰å¢¯ ü5€UoüÕ9q.#!…ƒ(k({J/¾È€?ÿKø®»óð)}Ê\©ËÂ*/eE þü»kÆÜüˆA!¦'Ö¢Ï?ó¹ìé‚,øù/ºh–*£¡ƒ oÆ~YÍVðæ¿p½µ <"2 a7}q"©Š{àUØéÊj„ ”{'É{AO¼ú¿x㪂¸”-{}o¿¸õà†÷Œn÷ËQ²eßíµRŽ/éÀœO^Ï|.ñc x؆@w¼ñ6ùGóÖÀblAWJ•ø£õlï¼?@ÿ=è«·bt Ü¿ÜŒ=Rîçjì«ÖLJ¹7Ïúj 1]XkôHh£ ˜RÚA`4~€o4}«µµÚ*[—Õo„1œ­M?ååí‚HÆt`*ñÈ*k1L%”‡0fDÿwÿx<ˆ˜ÛM‹¯°¶¯Ý¾I‰ât’xü€$[Ì5Eà«9õá7àã“Dœ0 ¬ÏíËž©<€Øv ñ1æ=À4€Åʰ¡‹?úôå4_ú±gÂâÛðlñ,ÿ ¾ÛL•}L`®£lê å/¨0éXðVó'Íáàd£^¯=¸ð…x.èh¬gÿ²#|7£[ô$€R§Ø8b OAÇ+…ŸCU >~³ŒVêâQÛÜ_»pø¯èðœg,xj`Ìïí76 ’‹Ræ`ç(Õ:—'NTÄù€@‚˜T>ÑŽkýÅÛi ²èZñgòž±Ö‘¼'į_*Œ„è ^ Tð\½Ø¹¸ð[rEQÚÑÂ1tö||E[¦­ã]!^Ãáëxv%÷!Kž˜~÷­Â®FR3L3€ÁÖ|q“NùCÝf%€Ù¬!êöwL (ü~Aû~U«|sYBÖž"«kÌ©v ÆÔþGVk|ÊŸ\„Ç•€*À1%Œ’´4  –@@­öú2ÿ9å¯mÙHäHgš´]¨iÔëŽøWÜ!ß¹p2agñoÒ¦©ÀÅf°×Náðý¾Û«4Ÿgše,é˜pŒâ5¥6¸™)þüMþ€‚£åß»°œ$R›'~+œ?ÖÝ7Xv.Îú—¡ À Äûo§»8ü.7Ë1Ö¢¢§¤C ²¢Æ1ê¬-ÿ3í­‚3ѸëÓv|¹ûÿ/ïÚoiŸ´ßõ:•4r´Q¨ƒõã ö`+¯è¼!°h­\ÖÆ>#®A.Ô¦ €D½MÈCPçg&¦=^ˆVØÎ $oF_qâñé¹ Ù⤠Ööß;'„á&d>(×½¼;M‡1mû‘{Ð\8º^ƒÒáiž¨£Xüw=')ª¬K {ßÓÂ;mn XS{¡F ´Çßgt5!\¯Úï“ç‚Æ4´*IVá$º´ïÄ¶Æ ÚæÈ±ÞkÂæm8¨‘ô‡€;Þ“P‚ŠÄÙ-Œõ WsuOâ$Gv…hÚ sR~h©@±´÷j4ƒ"[ã®…†ëÔä ?†ÇÄ}ŠÔUlŠ5~¯5öGýÐÅ÷«`ü‰³ØÜ?*l/í"ã©Ùž±s:‚‹‘Z* ÁªÚk~Õî.ˆaqnf›$V=­4®~À¹‡¯Â,Åç×.s!úq6ï”, I"R¹Tb­cX’\ÛD.m§l‘žV|³ŠÃ_@ÜÀR®(^®€À¸»—1 !žÁpl† ˆ%¬ÿ£¶××B)`tPçI0ã=…ŠÿÕ)ΞÃàr²‚Y;–ª –±sâD‘øLà:&¡ÚFû ï`š(G›(`ÂßaÅËÕœš`^JVôj§bÞ¯»áàŠá˜mÒ{Ü á+è-­\mÁc((«[¸ C#ÿ8]r‘)D¸2Z‡M…á ñ×q^ö@7¦ñ§uèp,¢G²Úzu«Èu $x9¼Xs4/öÂzǢēVô¾ x"´PÌio˜ˆ-AõEðØ|AãTÐ$Nadáo¬v‰…µ™¤±ën[°N¨7òv‰ÑävÂB›uÒaÖº–¶ Ú°VÎ@M~TQˆ•ò¿1>Y.Dá¸ÝW·X4â2ôü,¾ðDf‰d€´Â;†Ï<턀ʪÌa8†„°ܲSAÆñ¡,Î Ò“éB=j2[S»°Ñõ&¤¯’ŠlPšqÜ)|sss/Àq 'é}l ¦ Ì]tA ŸÒXÃ6b׿Eª™˜Å¿ÓWÅâ¯×mÄšâX¸0ûLD ÇáqB¸–2؃˜€Å°Ë×?Ž2L ÙáR ¥¦q€2¬¡ÒMÚ;Ξ`YA‚ýmnxë¤4í.þR„"ÁRÑ {“6ïb þ!H‘V¥jCûiŸÇ,}¿ëZðFö 0ŠE f ð¾%úÞ,á‰u™õNòJ»û ¶AJÇînÂîc­cÑ"0¸åyF)D} uÂ}²ùÖí8u¡Ínƒ¸Õ lX+îÚÙÂÞF&nTX>D™/Ÿ‰¹„> ꡊa»Ø0¬ñ5±Ã™¿Ng ¹³÷*Î[€f£Ênn‡rn1àp‰ˆážòæ>ø%J#«D-(8â\µj¥~BÒÒ/þëΛÙÝÛ;ŸSD;ù%¹ÛìÞ¼yóØNfKa ÞV¬C¡D¸²…‡s<þ.žì©€Zrkâ[¾6[™™€jðˆJ˜/%A¡gð/™®-;ß+`G‰ZÆñK¶„N›— <ÞÄ(ê\°ë5^È^kfHpas¿fb›ŠV‹4¬×Öj›5©Ñ¾m"³ò4$ ¾ äT(©_‡œ:AK[Æ·’”Ѧ£¶$ÿe3ŠpB_j¸²W `¢³C•È•”è’Q¡‡ÜðwEÊ1Þáè|TC@9e°EòĬY×l¦a ãcó^l\‚ûä#´åb¢™8á¢Ð¦SëCX„©ŠÐbdy„ÍÞ“­…„qŸv©}ÿ÷2}òçŸCLqÿѲ´ôÛœ?s3ÝÅOŸ¬@‰Z±:Ð(®ë¬Ž˜¬˜h}/6NTMfwb¥Ì4‘×·Î!h4¬\ÏÄ4í/ Š3äJY¶ÖÚ3H¬ YŒ…öëËÈœæêÔ.è†KGt g:KÌÊ¼Ž¹¥Ìr2ztLÛÔÖ¶Ū†³‡¬Éhk/t Ýh«d„G7iàñÄühõóÓg²jAqþ|Áš1"Ì´È[}WŸÏþÂ7Äl¯Û|!Ì€•ÒƒÒ«'ÿAlÙ<Oµ–,µ\úé·Æ¯nsSìÏ´á@aïù v¸IPͶ¶çÏ©½xl6Â8áq±&QÒðÊÌÏ™ÞPK_ÂAf™†Øž[w:dªø™ãôÓ2•’ÖkÙ’â¸)Ùñþe2´A“ dz)°uÕ‚ñ¯Ç'Á%ŠkC„£øÅP[q¯¡.¸47…S\Úˆ *çÅÆ‰ª—ÝÝúi³ßñV+àjƒ5Û®¥àb•ÄÜ<×°XG“?Jy¢rù*¥Ç½ñk;ðä_ï=3´¹j¾– ±,1ÆãÀÙC0í§×9¨çÓO{þõ—q€f!ßž+®Y€JäöbèövFò7õu5 ›H e¥™F$`›2îbC·©Q\·•lL³1n½Ø¡ ¸Öß·éï÷ö:…·£LFs¸ ý²™f.PÞº9Døåš6dUKKáöÝ"ˆ›nþ(ÉôCÿ”¶c†‹o‚ÄÚµZ­äÅ@yg6…z|ð”ßæCoæ©ØffHC”ë­—ÚÿŸhÝò0gµ–½yÙ´ŠëÉa«YôbãDµ$Ë10(¾v-ãÄYÉš¥.Ï´8i»ÄR£[íܼåÅíõÌ,ª´bÅ=äÊ™0»?qùÚ*%04Ê*`D z¥>¶§¯Ž¡ŸéÜ•Mg좫«Å5«vW¦3­šÿûÝíØñð|+”TÀTöµ£dèʽBriÏèkÏ;>û£À²Y4Í£ýS÷ܯœì „.ý·ÜpõúôE3àޯ™-óëW|R·È¤zϾÅ5'O³+n9qfÎ.†íóÃh„ }öçóåûý;íêêù⢩¿þÆ¢ÍþA͡ӹEGÜQ9ÅuÖ>PÿCLfE2Z†^ªxõ4q¶­“¹º<7—{ξÈÏäcÓ7ÊäíÇä…™ê«Ê«JõÈ\Ù¼8uIUF-ÿ åuz endstream endobj 524 0 obj << /Type /Page /Parent 682 0 R /Resources 525 0 R /Contents 526 0 R /MediaBox [ 0 0 595 842 ] /CropBox [ 0 0 595 842 ] /Rotate 0 >> endobj 525 0 obj << /ProcSet [ /PDF /Text ] /Font << /F2 581 0 R /TT2 838 0 R /TT4 840 0 R /TT6 536 0 R /TT8 537 0 R /TT10 582 0 R >> /ExtGState << /GS1 843 0 R >> >> endobj 526 0 obj << /Length 3453 /Filter /FlateDecode >> stream H‰¼WË’Û6­ÙöW ²§Z4¾Û«¶ÛíW»ZšxÏ‚’ ‘iŠì");ögÌ"¿7CV^Ì}Ô£ÛYd’”Ë-À‹{Ï=÷Ü'ó³Góy$”˜¯Ïr?ODÿh~®Eû:B1ßžô®Ûœ=z>SbÓŸ~Db¾<›àŽøxö“¼òB?”/=˜ åS/ƒ¿ohjÚ{©ŸÈe{gDè'~àMT˜fp¾œxJù©i.&0›Dðm-ÿEÛx—ñ´¯d'¦E³óT ‹Úû÷üÚ®Ùv•‘uðÃv§qäG£á`c€æÉ©7ÿw%¼ –FI ûæWgRØwÚ½Óqò;º_ŠÇü$oÌÚt¦ñ"?–K/†¿lëzg’u§Òl’v&éØÏ"6Éyl‰GÇÖu—¢Ùm¦íZ¬Úån‹G˜fèEÛˆ¡4¢1ÅÌg~NÖ\æÑØç)â%Æýü³õ ȹ,QÍfWlŒ=÷z,d‡¢c÷Hþ‡E« \£äÈ‘{“j~s„ºÜ¢nê ñöÜ”õˆ¹sñ 1^ø ~e·ñr)n*ÓoMeºs1µo HÍLvËV<«–%ÁÌÔ€bo’IÜs.ÞšÁÊkÇ“ù¹é—å…pÎÌØjùI¾Ï¾†yž±ÝϪfýµìvÍFT äÅŽñ;áâhg ) ›«—8Äò‡ñŸNfh1!èCåMB ¾Áhgò¶æç¢ï;¿Š9Æ-"Ûµ´kí’  ˆðø¶3°~°{‘"iŸì&ð8­œ¹Eöל2 @4OBÄö:1Žð:çàƒ  U䆌øWk`¦§ä÷˜è!…K^6ù½!7+Ó Þ2¶3ëµ}jÄ®YY‡Ò׿Á c…w˜1‘l‘ø1mû²½Ã|æ7çüF¨<Ïýc„ãÙ¡<úÓPž±™R/Ó‚1 a—ŒStuŒVñš‰Œ| ñBä#`y^Ü d(|þ~K?a@ñÒâ-¢ƒ FÛNsœÝ©8E˜Ç÷÷puåÜgÊá~6@Âݪê! #®Š®€S!l¼è„ãÀªƒÇ¤9Žð˜­YUŸ«¦; â<©jÀ‚ØVƒ€Ìx3µÀl×ÔëOÐä4HoÄ5±¿Ão1ÜÇlîgG±˜Íhd1‹xOeƒ^Ž!yèI̘Ͳìž‚ððÍè̉t1µ'YKhU3táNatP;ÜÕUó¥ƒ;¾ãéò^YœŠ×ˆú³&„ÉÙ£ŠT¾Ÿx{ùtv.f˲nÿ+nŠº­lkü„,é¤b×#gþ.ºÃ? ÝEw¨‹ŠK qu^V¦väL•ÊQ3\L…í™ã生â-G# ŒüœÐÓÃì r#>@©röä¶Ò½œOfB«4€) h„×M±ªÚºÝTæT*…~”—ŒÇEä(¢7ôÈ$ŒÐ'àV#¹šFà/a!d,„„…ÂŒ`™µŽÑ³ È-DªùYòa+ ” @®Ô1ÝYªÛe"åÒøœiN1Íí‹<Ý:¤:—Êî ˆð0b¹ý~ædÅ…‡ª hÄÔ€XNeUó/hG;шbR—Ÿ¬|Çrˆ4’–ñyg_|çMªëªÞÖmo‚^ÇôÀ6=H|äÝ×]ÑÜš¦„È;èÆ }Öø\Nß\{ÏkrÉíPΰ¦TÑqn(X©t„JŽvâƒÀ£ýÿ—´(;.iØýåeí5ž£Î/P~ãDrÉ‹–öô˜sɾÒg 1®ø{4ßYóÅ S2“þA/˜Ës@™ÕÓÀ@Éß„C5 >ÃÄ'OäD€kZtîá-ø‡_á5ræ8„G¿%m¸G}˜Lê‹Ç6αWP«ÿlË$ ¥¿ÆêV+® 5ë±þÚ‰Ueàÿ¦ŠÚªZþêÃ",²"Lbÿ€¢ B5€ N¸>ybÖðŒ"ác*ñ“£ÊgF‡Òò ¤B"ù|L€ˆ"· > Y xx«lWgï1E¡Ì˜0ý&²¡ÆðÂ^Œ 8¹˜EºNÆòVs¡j¹€uÕPnA£NP,èÈ5pZµlm 9 v ^™,„,0ÍcˆJKºžJÛªßÑé=]SËIÆOÉÌÇâ²6¿Øe*f·ñ¸ÿü¸GÇrd•μl·®Ùý)Ë ðr[4xM+©ò®§ü Éœ’΋å{ïñA‡£\Âé5 º-`ìV·Ãd Ô¥»®j6˜3ŠZ‡­Sø k{¼Õ{ï//IÚ¢SÑèDû–¬°…"²ò-]a6^J½Íž¦T懲O)—}Xq0» ³ÈAŠ| Lœ$˜«$bŸ'ªb¢÷5n¼Ov˜o€+ F\Cuˆ¡:¼bÆ-¼þ–‡{€”– ä6žÀW·DK˜@ºÁŽu.€ð@äDƒë ºý‘ûCñ¢ÛÙ!PiÊ÷£«Ä@í(™À\Â¥ÂTŠh¼UŒ´KB›xå‰âÓà%cosL¡ Þ¦ÛÔDË¢è(z (š]=·/8c[TÓ¶©†¶#¼†(Ÿ¶&™…÷Õf ï«ÍfO…ÓÛâu©„ˆ%bÆ8PŠ8¨L“š°˜-Ëáï’†©%ÓLíKDBE;å¢ZJjÊr¬Ä4wQû –iAÚ"ðâ §5®€xÔL‹§pÄ0vM5öOâøÇ ?üÛ˜­ÌŠv5âr×oŠ…™0¡à,±-¨_Ó£(Aãr$ÌŽ9onj³å²Îx‘Íúk‰ýÔF™ûÆÝÕP1máÉä%•Õ]o›K®¹Ø¡. –Ze‹ì{ï\\Â]¶cúeykjW&!{zÞê»k÷îÙjõÌCzäš(™ÄHè8.ŸÕ3NCø:×MŽ8Ñ9ìSXýà¡á$¬*‚Q _ûVžŸ2üÏs+;´Rñaž‡œç1çyló<æŒN]žsš†ã,“þ˜ç1åy8æy:æyjóȲ&’fk}C{Y“™Ã,Ò=é^¸Í×ÅO²ëúC2¦à@–ß jP”èxfo¦Ì»ŒÐ) ¦sò y˜4¨þ|~1éúʺ¦jOn»*óMÀ¼ÒŠ¿Ñ…ðoñ þ'þøÝ¬=$ŠÔ3¨ÿ “0¢aCb’Fºú¤¹HìµÑ¾Ôhj£­Í' ¿ÎLW&9Ö M!e“«Ó‚\A ‹š·K‹Cçià zÊ‚Þw2íׇ!L¢9šØ½E짤©ZvX¶‘­ØÀõ̽(}:™aŸvS_Ji´K-¿+Þ„ÉzpÉ“@šêŒL°ÂœÏöô½è›Á¶R›¡ÙÄ&\p}Wë\UÈ]püÓ`Ça3.Ks×b……½1‹ùkFÃKUåÒ¼Ðã™Æú—ìhv×~ô¢Ý55§îâ–lj®-†(<‚;Ø.çz£˜û_6c<#ÒWÌ´›ÅÏ%6Pv5³ÜõM錀zÕHéÔÔš`ÉÀŠ\ÒÍæxônLïæ¯~ 0Ú„Àn endstream endobj 527 0 obj << /Type /Page /Parent 682 0 R /Resources 528 0 R /Contents 529 0 R /MediaBox [ 0 0 595 842 ] /CropBox [ 0 0 595 842 ] /Rotate 0 >> endobj 528 0 obj << /ProcSet [ /PDF /Text ] /Font << /F2 581 0 R /TT2 838 0 R /TT4 840 0 R /TT8 537 0 R /TT10 582 0 R >> /ExtGState << /GS1 843 0 R >> >> endobj 529 0 obj << /Length 3487 /Filter /FlateDecode >> stream H‰ÜWÉrÛH¹ê+ê6Àc' -ÉK»m)DÚîˆñ ²HV §Xm}HaCŸæ0¹@”={.‹@¡–̬—/_>_œ=[,"á‹Åú,s³Dx𦞛"ŠÝÀóB±(Ï<ú¦7gÏ^Î}±iÎ<×ó"±Xž9ø[<œýÓº´C7´^Û0Zv ¯ièmcOÝÄZÖ;)B7q=ÛñÃi û[ŽíûîÔ©'M"8;°ÞÓ2^%íÀõ--ÞæUgûž•ö¿?={°é~@ÆÁ›=37 z»ÁD­³þf/~E‡}—yn„/.Ï,a>Eý—iÀ_ȹ  M\?Â'ôóm®—µ¸R¶¹‘µÜ‚Ý- ¸“Úv2Ø€ý©uΣ‚­^,R>%¤#â>”Wª’b!›¶+7°=|‚8„¨»®ÚˆÇN‹Ë\7­, |/åJ=ªJ5Ë­Ôâ¹*V`‚9Î8Àbs$ÝXÒ;•F|âD¨ê\\¿xñÚö#ûœ6pB×9>ÌÜ›kó.þ lôÁÉl ¬­– A-·­yîá…áf´å4$s~Àù1[%øÔ[†þ„_7¶ôà[â/#¶àê0˜²)̓sÕøEOqp‘¸lI#|å8Â\ðÓ9÷kx:Ÿ57¶Ã(k6½}ü^ÁÍó„cœMÇX‰zW=ss—¯/®ßŠy«;B ²í´\‰[¹«u«8nýÎÊû Úo Ñßéü¾% £U“·åŸ›nñ^ªVV‡ÆgÉØ¬xÀD<Ô%†IÄêÌx¤Bšˆ­Y­Èlˆ¡nµ´‚°^ËJtÕJ|ä÷š'ëûf[ï&*ÿTzôAUýõPqŠ÷tàM{O³=Eùw—ªý£H»x8x_Wæ©…* ¤h³CŽ€ ï/€ŠJ¡ >ß:ï‘ «\ËbuDT‰Çc\…®Â\ù€+ÀóqE!ó¡žàû¬zàïHš±U­[¶3¥ÐàÈzmÞF0‹fá7a6E|ýP”y™¡bŸÆõ…* Ô4¨,TS¦ð¸±3pk"˜q§ˆDœ¡y\Ü*@ŸTX_Éû¿MĬZ™õ2oÄb«d@’­ÄAßÇ7@Ê8q©ô½¸*Kœ;+äoƘ¼ê«‹w\¢¾¨ôÔô*_±áÅ=B[ø¨À T ؼ¼—&©Ÿmb°½Š¬öï%±€ÜêmQæU5!,ö[Ô[’xn'$è„ʰ`®WªÆè$ÖùI@"%}@ñ5›·à#,oÄú?Z¬#ÂÊ Èx§eè{¼÷ݨ/òŒJ¸Ì!Iò®iáÿr  …4ÔôBê|¥ê¢Þ()òR<—ªÙÁ…ÐgÌ0‡ ùS„ÖXkù – ëýQÆ„PsýQ.÷eÓƒŒ‘v„wmê:-:òá$×n¥>À†øP®ˆñÉ‚Ô>ÙœCâvE0YDÑ-øë™û$ÞŸZóù;›†N¿|UD?,¥Œ@ ‚cBé’pº &MÊHÍØ"z&µJZ†ó|c–™Â»LÄûU-úxå›s¾Ø>Nj°bD–Êï'âe­WuÅzSÔ §"(\n•IuÜlÃŽ³í@–z ÏÈÇi'V‹´ÒMJÉä3þnmÔ©'iE/)>V'Ò"ïÖÜœ <ë#WyIê}CŒßèü7Õœ³¿W¨Zyö•^ç[ÝU#’¬8¤ŸíÁ°9Q nPßKè ËzÔãu"òñwbB¬*ø»R ‹µ›‹]¡ª?4|þÈõ‚›Ë€xƒ·1E$#¥ÎŸÝO7³‹ùDÌ—[¸C ±¼Cñ´­ ³ù–vì—ß C&?É䢸Ž9ê¹\yÐÝo‰æïW6^ð—S6mi8ÂEÔ{š%Ck…Ú–P”K¿j£Ú¼¦Ÿ«M•ȉú¹¯2øä¿Rñ1ÎM:R¶i‚äag®—œòµòõ;ÄF Y»«ŽÐC%Æ2?côâ0¢·1†dx+nˆ¦`"¦`$Ó\gö™,ýßEâø1Ÿd#_’/4¨„ÛãØ!v%Ôæôtit"M »EEÐG.ëò ÒÛùaIª °¼ý¨r’—}/+4DΠÒÒ½JK©0ÖX¬$\zR.=ÁAéAµ†¤9änå2hæ²Ò¥Âc•¹5õâMÁí ˆ¼“ƒ¬#^Õp­ªöß0­òiíúÅ0 ¦>æ(R:ܬØ;Èàõ ~©¸ÅVQ?(©å#wlñJjPlläuÝ´¦µãýÔ¯÷'uZ¸85‰a¬é ,¡íhuÞ*(œõZpEjêu»¬w_ÄNËF2ëV¶gµ<¤×Iîa¯²?P1Á«wÂä@Òí+ŠÓ?¢˜–W®w´dI†A¶¸Zpµ”‰y·Û²”U |²ü,Ë>Ù±sÅ\ÄIàŠ^)TUP)eaÊ»:Ó,‹¾ª—~\ ÒSPÖçôE]–ªm¥ëZ‹m¶úœWKNpö¯¡ïÂ|Ó…qÿð÷Y  HZò×—¼›¦®î yýrpº²âÕv¤*`:Øû4Àû$Ά$VK]ƒk:ßœS†3æí› VkÕ•”§×œ‚/@VEð× &ÜzÖ\H÷ƒË©~½ $Èý×ÌO•á†åqçÊ.zBsyiy÷\Ì{xC;Âν‚®„FèíFS^wÑ2æMƒB»?Ý „aß \ÔÕRA^VË/p–éy ÞªÃ ¿Ñûmñ®_—Àµ Ùr;îM H²•x]AàKžLÆ}V9³øÇ¡‡aÀ¢ÒôZ‡…Võ´B†Á¾BöÚnœ…SÎBèH¨Q üòíæ“=JAX07˜„ ÜŒ¨µâËqðÌ= iL¨a8™ÙÊÁéÔ*)ã42ú›IúýµÇjϦs Àg 6&ŽÜ\D€ìÆ‘Ž«@ûˆ&‹R?H|ÒÔÜŸ”Óã˜9%Œ[“¾‚`"ñuÌÝAê†ã+Kúî$3Âh&Ê®hU‰z&¶V6¶6*øõ¯­É]‡w;J`£ðC¿§c¤&ºƒµÌ  ö¤wyЄ !ž Þöl<îg>TƒD¦µ9*a„ ꉃ¡qEךùtöyAŸ}X^é>R«^JšL>¥~‘EPñ®kP5 ¦ìŠåÀ}ZHì•.Å4ã„Ó±ö›KnN‡%ž#.f·sd7ëï¸}–MÄUÑÈÏ ô‚0 °8ÑNŸà£EÁ7—ïÈ„lžÙX… ,Û+°Œõ­^úLYe¬¾ °#坨Td¨¾Æ`Ÿšá'áa›úcã¢Á8ƒ÷—:ÿÒÐF&€ú‹=¥îFÜ\ØÃþþ_ÚË¥7m ŠÂûþ ¯",Âø½ R6‰Ò’]W.uÉHÄ Û¤ÉïºçÜyø­R)Ý€±ÇƒÇósÏuýþâElaÝ ðªò§e»¬L_ SµÕÅûæ°=™*Dìiï´rZ½ë#âL-µKÅ^Ñ=æºzQõ¡z6´jÏU‘ÅcUÌìáX:’EàÖ8Y„Ü yõ}a²¥9…ÁôÖwfÓW~‚Ï5AÃ#¹KXER ”Zà¼T?*ƒ&9ˆ£h†ø}&þI+°u>L·í/6s1ÍðEG¢O*ÝäVsàs¬êÿ°MoÛÊjB «ë£oBFlïÑÃõ{6Ž¡¹Ö&÷ìóéß"=à’$Ò·³F¬ŸOÅ^µo°{XÔV¾U[ö©ì•Äy}åhê<%Ç•€kIß K.Bì´M'ž´Oß‚Q’D;“SC-4.øÀU¿«æ¸/Þ¼§jKIŽR r_žõh—5~ÕŒ‹#?èWSûtCïN)ÜÚ¤»¾[ù)N’ÚÔÊIA7tÔ¦jÍúäIFbyÐh'ä;íø¾ìÌч5‰ Ù‰ÞöûC Onõ M°qÿ“É«X2“² %‰øårK¸Ëæ"m “ÈNr1š,HÁâ¼ç¶ߨj‘µ« &‚†6hz̲~•:[Ö³ myi£I¾46GÝSÁáäÍ+_¢!Ô™Zé“¥ÏúBËÍ$¾\5Gƒâ⦷.©‰{˜{_ʧqîvîݞЮá䘓Ä~å§š¹åÂø$@,‚±vª¤¥ 'öŽõÐmÍðªÄ£¯èI¯ltŽ‚^vvÏ<ë[»2NSŸŸõi?™uþœ‘ßÜñkLÍfÔ±¹÷A´˜ÁS³ùwp[‚ãÌ–àkäñ²h¼Ç'Uî§.*žŠª7«²¶] mÆÿk¾ŽÀ뙻ƙq×¶@º'ŠŒ°v^+oÌîV;ŠUrÅ®Î-1$;Xv¯ì¹¨0–4|Añ<8ïÕà²éûXeíÉÑVEØÑ½w…’*V ¶º§Ûi[¨Igÿ ZÉ9kÕðºeT¦”÷0`0ƒ²r®àbç÷W8ã%àŒÃKpN6çP®?ý`‹û endstream endobj 530 0 obj << /Type /Page /Parent 683 0 R /Resources 531 0 R /Contents 532 0 R /MediaBox [ 0 0 595 842 ] /CropBox [ 0 0 595 842 ] /Rotate 0 >> endobj 531 0 obj << /ProcSet [ /PDF /Text ] /Font << /F2 581 0 R /TT4 840 0 R /TT8 537 0 R /TT10 582 0 R >> /ExtGState << /GS1 843 0 R >> >> endobj 532 0 obj << /Length 3714 /Filter /FlateDecode >> stream H‰ìWMsÛ8­½úWàHn‰ ÁozN[±“‰—¥™9${ )Xâ EªH*Ž÷‡ç¼ýP”l§23٪ݪ)W™к÷º\œ¼Z,B!Åâþ$s³XxðGÄs3_„‘ë{^ ›ÆÚÕɫ˹«îÄs=/‹âÄÁ,ñpòÁº°7°ÞØÐXçv ÿßS׬³7¶Šf«DàÆ®g;2HRXßrl)ÝÄ©ôÆ!ìí[?Ó4ž¥lß•V+fy½³¥gå•ý¯ÅÛ“W¯}v]úä|Øí$ÊÜÀ7~ƒ‹zgýÃ^ü†K§ynˆ/.N,¡‡B3’ø<ÂÁ%´ˆëØÂ8gy[4}™–¶¸™U¬ÁwŒCUÜq§ZÛI¡cEÇ0!ë·`仑õ¾0Ôò ÝÚN]z9Õmtƒb/ñ¸†_íDü¤wÉwµyöœˆ—öp`“«FÏëlmú£MðG=WªÕÛç5O|ßtƶ}І¿ñç÷‰¸±VãeÖlé¦<®ÈNQzép)¬·Ê–!\r ‡à¦àìVpך»N!€ ;_,R¾£À GWäé+ò©…ëž7uWv½ª‹GÑÜ‹ysßúE^/ÅUÞ.ñÇ©¸iUUnÊ:oÅÔvûÖg@ž´¶ª-U±Ãªe¿ýZñyÔêüqÐ .ÒÁ¥^¬©ðæüýLL?ƒ] ¾ˆû¦o6ùŠÖPóBe·­òGœ ŒÜDŽÃ“™aÚD”5¸v>ª+W6º^#ñ¤E1N?ÑFزË{ðàTLë²VW­GxZs,¼ë ïìóÎÒÇlUÖe‘W³ÈîûxoÝNu òKwÀ:ì§[8@ìûÑŽÁÖLÍÁž2­Ê¦ïlOÆÅ(|k„@L¢¥²>+Q•žµ,û¦í!@ ýh ¥–:BŸ"DL9p(´c‰nK4ŸÚ¸£ø¥©\d©7¡“XüSêc§HÈvëŠ(qâD|´jÞG›„Ã]Š˜‡ï¨=~z¨=ß®;/èÁŸ×Âí‘èPß‹Êã³ò°JÊÿuùáÍ&ÇBs €^}z¥êÛ²X‹+WüЍÊoð]¶_jµQ€™€—¨œ„Vg JDolèˆåÐ_wÅúôX®dâfŒŽ´g¶Ð³A¡ÚK–QŒTìŽ@Yô4ŠÊAUÕ Jš¿´Çc áøP˜.Ûü±#·CÛ¸’WJÌ{G¡eI¼ÞՊDZ>e ãÍOâ,6ò„Q Dá÷¯ Šÿ†fÀ¼J|ˆ À˜žß äÕHU4Þm·ÜIÝ ©c¤Ÿ×(náö}ƒ”Þm”½×»  Tø1ݵ‚°š¸nóeÙTÍJËÅ£-Q/&,3È.á@ “ß2ÿáSMx[‡„ ÝS¢{hÈžÙýì1S0e úšì©EKÕQR}¢9·4ÅÃ}Bjf_ñE‘MûD'ÆÙÌ@Ú}êƒ@GÁxÂÞlšôÍÒ² æ>¤ SþE‰¦Ú½•¤ç6åç wŽó­†ذáv×sØxÖuzzg:—dzÑ9x£lqLX¼~“ù…šÔ„•ÛGå– ›Ll0;?»“¶€TúT"¸ñ=ß ó¢3Ù¿Nó?On“L%þsužÜgzÃO"x†;;ErûDm"vdé©Lllй‡_†à(ôÅq”H~1÷lÓîè‡2ޏt±üL‹;2eåL÷;^qÚ°þ*ÍCsT”1_Êß°¸øËL†¢03ÙÜBjž‹kÍPÊ×urª(qåîGhˆ÷$“wxÏqa`rxzFÅÉ!^@¥ƒgDÇó½xœ÷Ï€z‚ Êb™˜ÇÞ7wº•Ó“¾®ÉóéN÷âÛ8Ù"e€rå˜rez‰1%@íšÁuKW§Ê¡5Ez샿œ]ÌùIüC&×GûÒä\g\\åÝ&79VÁzñ¯ SÃÌÒA$”ç›ÔÊX^ì–ªTܺPάtª†YWefµªX÷q©ß™KUÁ2W®ó³‹zý{ÓéÚM a‚­º^4¨n¿[–ºŠ)kŽGåÔ„Ø\Àž5è¹X+ý¥|œ6JMÑq&úθ³vÏEÑM†ß–3kŽj×±PIÄzDzC 2á—•*±ë&¢&žib]Ó:B:‡ñ™zRšz2Jc/p¼8p² à vŸ_“ë^æÇNžû’,†ß-û1‰¤<Ì}8ïDpƃ`µ 8H% "z —´Q\¿øT^"]7í¯Ðö|Îï¨4ij>óÙÖ(8½j‡µu7åôÇÊâCúïÒàÁûL+Ú›ºo›å®0éÀ\»¶ìµHðô£ŠE§ÒQÂ%çëµÊû]«¡×ókAbu*¦œ›}¦¼z«ÚR1ªBÊ+J@çE¹*{PŠy¹ªy£dœˆ’} R×%QœFcÅymc„êYÍFÜœÏEß qÀ#ê¡™ HµŒƒcµ÷¿”’{æõ+M^cß·9 ×ÚŠ0¹Ÿ{Ï~à³i§6¼OÃóv¨{NrpªYøÀ ¶î¸N™íª¾ÜðȲä%˜´ìÄR,¸d“J¯Ÿ&ô³ä%µÇ¦j 'nPØszÏQø@še—4€zŒQA.CÛ${Íýóõ­A\`xŒ]ŽÖfÔA–@P᫦ú7 ?8KÚ™‘v&Ó=ÛçædTõÚªf…ë%[¢.QÃOcÇ?,–èJ¥u¨Oë©Sê´êIÍJJ8i‚2É0„1ÒŽ¯ÉÏ_WžìRyž O?#<Ù7 Lÿ[xþžož'‰Ãÿµà ÑüQ¡ ¾‡ÐdèRj²¾³Sp-ç"ë¡%.aÖV(¬ï°²q1+Yh£ö®ù¬LY˜a……!–Hz*rÒ‡’Š´}/ý€ÛÐ…¨£+Q‰ƒÅš«P U¨Þ?TÂ}…?i¬*:ÔöP ¡)ÚhSíÏóÅ!–úföu!2уuáIŒ\é?WäŦÈIK!QýºYvâìS^Vù]¥@oD¿VT ¢ÔÏª¼céŠÜqÚ—è­¢,+×m¾,¡&XaÔ¨$YDþñ{gHåRýÒT®ðe‚ÅÚG[ÌwÛm¥6ªîaÕùõqMÌ Ý¾¼/ ,l˜8m¾bÁ(â#f|´_Ê܃kXËÄÀú\¢¼ýQl2î êÁG™-F5Pã9‡0#ےщ°¼0XW=Û´ÃÒP2Š_†{—í—ZmŒ=|qu¨ðÒ±¯ŒsõupK}ßÿ©½lzÓ‚0|ï¯Ø£‘yý…Í-J‘ÒFiQÒC¯Ù6®ÀF¶¡å÷Üygf‰D=å‚Íz?í™÷}&Jóâ4 –jËও'ÈvI"´ðõ™Ö·ÁENÐ;‰N’"Ó…g¸ã¤€Ÿ›jSþtæ©ê¶ëò gX5uWѦêÕÚœs¢‘$0¥é]×Wï«¶©7xÓ Éuž!1ù EüÂYÁp!‚xšÄäCù a.sçÈí(yµ2݈¯•búU­ú/‘#v.¼@I,§Òá5ÓâÅÆ·#<*{õm÷dxQéR²ð¬_›åGÓnJæ,2:w À„ôö6ÝÜ|t]¥sÊB:»ònêyUªûr½ã9Çf±®š#8Fá„U¼ùvޝ·ä¸;îZòˇcôWC*V:^œF úv ‹K†Ø‹•°.%qk¤où XÝÄkÞªw8U2›PL° Yñhÿ.ñ詸tB.m‰.M8Ém‘L’0,øÓf%Õû YêǦC!‹EÈR²t d)$ ñÁBÆ7£HÀìåO«Ä'bC«PõB{Š áN-õc=™áW Ž‚Æ«° ÝˆÙè0ÝMYË»†Êè–Úߺä/¹ÚÐ'H9Ò#&϶4û¦ÖmÑ=뢮¿ZŠEÍZë ×õmuTÒMËZj½–ºƒ“g­0ÆX»,Å"p’g*÷ÑâÈ·£8:×<Âe;Ô¼Ôï+ÔÏ97¢z}KU&*÷nÛ´=êœTŽÒ¤oúÃV‚z"³* :p<@”O$À{’½`˘nõŸÜ£z ê€súL*)eç–0+r®K|…ŒA( (“§/ Jä µuPJžëf³Ý¡œ¼êXÈŸ<øÞ|9@R"Ö"¦ÞÐÒŠê뤱ÁÆj³—Qcîi®¯îu(k®„Ç„u&ë’°Xwn_!pEIr–È„•‰fž¥‘OüÙ™tx¼K:ü8v­„˜> ó,›|ýxÁAÜyý@ý•B­Å©P»¯H/ŸžUuÞŠnq Zœ:nÕ.2z8Æ­ÍõšÄ€”¡ä/¤ä‹Á[rêGÖüâ|’¥Cˆp¯ÏGÉÁbȬ žˆãiœ Žeƒ ¤B”dÁW3 îxyÌ©V\ú{硜äÏÑ„ BD8<‰Ì«Ö”DÂDì·„ë+‚s†ìÃ9€DÓl žNQ2ª×,»Ù¨H*ù·¦À&‚¸Ñ6éÒ zQ_SKçµ+ÊaeÕÿÑ}ÍÕc×·ÓÙS]²%` —,ÒŒðР¨b"x¯ÈÃÃCÜ*÷L²,×ø^|ûððç» endstream endobj 533 0 obj << /Type /Page /Parent 683 0 R /Resources 534 0 R /Contents 535 0 R /MediaBox [ 0 0 595 842 ] /CropBox [ 0 0 595 842 ] /Rotate 0 >> endobj 534 0 obj << /ProcSet [ /PDF /Text ] /Font << /F2 581 0 R /TT4 840 0 R /TT8 537 0 R /TT10 582 0 R >> /ExtGState << /GS1 843 0 R >> >> endobj 535 0 obj << /Length 1473 /Filter /FlateDecode >> stream H‰ìVËrÛ6nõ˜¬ÈŽÈ Ň»rd5¶S'‹iM4Kt(RÃGÿxÖ½–<í2]uœv¼Hý@yCгs~r³G,XIÞ&ý+Î.fްKá¸k^áâRrâ«GXç5$ª!éïðõS§ÝB© ¼@rw®ÂT‰å˜no®:š¥í*j]/qA3XY‹bg*ÝC\³{ØœãÍÅ;k”y¿7àú¢ölÓN®Å¥/þGŽÏé‹·í÷ÚìG{ø¢÷'—>S®0-KÓÚ‚òšA p¡BìµJÙV©Ä¶êCÓõÆ )wÜ÷µ|ü<·ÚŸ(¬ÏÄíùrMiï¯]´èÍX3eò¢è1…#Lgë¢w@b {ó@©a¥ H%€ÿÏY"KjÖƒ‡±3`…mk‹8@zœì»3qaºÒšq$»’_}AÇ·ìS¤UU6= µt~sµ„½¾ÝÅ[N=šj„³Ïßw>ï½Ö€-çÔ˜ìg>™°Ú”}Óv€b¤‚†VhP©¦0ÐÞÒöô š©Ñ<`±h{K5knMä¬\4¿7•/Â(YÌÅ!ÇL#ëÀ@;a]ÇÒúõtœˆOžé'wÎY_¹}­­ë7.î¼I1í£•†^TäTCñÐ ïqðLªÿeó¿–ÍäG˦"_á8ÁÍrØFa1tšo=²î€u‘„¶lE~8TVm¹ØÒ~÷,XVZ(ð$-GÊB kG =ETàǧ*/“cI2òÖ Fö¡æ!ë$bµ¼#ñûɇ†¤jö Ãà½ouÃÞÀ»a‘¡…÷InÓ¿Ã' éYâlʦj¶4ýòbeÁ£ôþ厘ÞD_h­N8;Jcê¬×ï…LƒÄ‹Ó4üñ””#%•´8*ÈŸbGB„©€¨í)IÒ嚸D´•L[œw%ÐÔ _¼fÀŸ×»ßäÈv%ªí­ÌÂ$>ãFw¼»CÚµŸÅj¿GÛóÊ|³ÉÊ ™„áJ®DG#$.ó 'ž jb&ˆDÂ@¾Ågó<Ûìòº6@¹ÔH_¸Óê¼%<¡òõ?P(ñã踧Á”‰½ ×=ä ž:WžÈL@##Ê}¾µ—‹y¾‰ùÓý ®OIY<-RKÐMÙõmy?ákà¤7•isFéÓËç…òãtµ¶c­'.¡6…xÑj¬˜!»"à¶‚Ùubµu±Ó@5¸cí<±èÙpdžf<.ÚÝÖUbÔvn§m¤¦Î+›Ë_8fðŒñ\ <´PÕañJð€Ÿ¸+'ï§> šë&Q _ò7™ž;Wx†—¼êwb™·ôãÔ‚°ÔЮàfɇ>þuùÅ´] )耟9üȨ%¦ØÕpbÜøkÍæ"£8/lp©|ÌẒb¸»¬.Ö Df|¶x'¢ÖDêÚCH/†^ ‘#Òt±ðdêžÉ_oV¦U6û{F¼\H endstream endobj 536 0 obj << /Type /Font /Subtype /TrueType /FirstChar 32 /LastChar 116 /Widths [ 278 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 722 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 556 0 0 0 0 0 0 0 0 611 611 0 0 0 556 333 ] /Encoding /WinAnsiEncoding /BaseFont /Arial,Bold /FontDescriptor 668 0 R >> endobj 537 0 obj << /Type /Font /Subtype /TrueType /FirstChar 32 /LastChar 252 /Widths [ 250 0 420 0 0 0 0 0 333 333 0 0 250 333 250 0 0 0 0 0 0 0 0 0 0 0 333 0 0 0 0 0 0 611 611 667 722 611 611 722 722 333 0 667 556 833 667 722 611 722 611 500 556 722 611 833 0 0 0 0 0 0 0 0 0 500 500 444 500 444 278 500 500 278 0 444 278 722 500 500 500 500 389 389 278 500 444 667 444 444 389 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 500 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 722 0 0 0 0 0 0 0 500 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 500 0 0 0 0 0 500 ] /Encoding /WinAnsiEncoding /BaseFont /TimesNewRoman,Italic /FontDescriptor 669 0 R >> endobj 538 0 obj [ /Indexed /DeviceRGB 255 539 0 R ] endobj 539 0 obj << /Length 151 /Filter /FlateDecode >> stream H‰ìŒ¡†0Co<3œeˆZVˆDÖb*:ö,‹Æ!olee]è?Äïx"_ÄK®ë’)%‘ä3Ô[ÍÎóÌ9«=ÐÍhú s€tBÅ €«ÖZ„w«xé £¢WGŸ™=ÏCw¿ï{]×BŒqÛ¶yž§iRÕã8ö}_–¥”ÒZÇ‘lÃ0ÈÇÇxÁ_G endstream endobj 540 0 obj [ /Indexed /DeviceRGB 255 542 0 R ] endobj 541 0 obj [ /Indexed /DeviceRGB 255 543 0 R ] endobj 542 0 obj << /Length 168 /Filter /FlateDecode >> stream H‰ìÍÄ0 àд>,OëÕê°:,NO‹ÅÓj­:œkÅéð°–KzÏý‹½_¾'±€ž—otÁ϶ÀÒ&"&!ÄK˜ÝLä,¥\ˆZ”RZë@5Ú0DcVbWkíÆ¢snßiÈkðzÆ'„7‹‘†¥kŠ#)!5§œmÎùÈ9I9K)µÔ[mm\×u_÷ð!½wìvDDÅëñøû 0úozA endstream endobj 543 0 obj << /Length 45 /Filter /FlateDecode >> stream H‰úÿÿÿÁƒÄ†´´´s ðöìs £` k`ˆá endstream endobj 544 0 obj << /Type /XObject /Subtype /Image /Width 26 /Height 26 /BitsPerComponent 8 /ColorSpace 540 0 R /Length 131 /Filter /FlateDecode >> stream H‰¬’± À K´Á¥+JÄþÓÄ&„€&ÉQpüÛ„°UÞHB–µÂ{‰À‚PAYŽ˜åò0³ë5MËŽ¹ì-º4F?Á“¢ 'z |ÉÍfPË–Z±Ãd…;±ó$4ž„£ŠÇ>42F&ðåå~#²ûˆ§’Ù' endstream endobj 545 0 obj [ /Indexed /DeviceRGB 255 546 0 R ] endobj 546 0 obj << /Length 41 /Filter /FlateDecode >> stream H‰ìÁ0 °ªÅÒ0€%.äK’Ûlƒ’ÚrΞð à endstream endobj 547 0 obj [ /Indexed /DeviceRGB 255 548 0 R ] endobj 548 0 obj << /Length 50 /Filter /FlateDecode >> stream H‰ìÁ0±w„+|Tj0€¥;’îlKfUd„'WÕpΧžßs endstream endobj 549 0 obj [ /Indexed /DeviceRGB 255 550 0 R ] endobj 550 0 obj << /Length 54 /Filter /FlateDecode >> stream H‰ìÁ1 Á³þ}Z*ÄE> stream H‰:xð Ãÿÿÿÿ30<pyöÔÞÿ?^ýïí½rå Ã(ÃÓ_ endstream endobj 553 0 obj [ /Indexed /DeviceRGB 255 554 0 R ] endobj 554 0 obj << /Length 161 /Filter /FlateDecode >> stream H‰ìÍ‘†0€ñ£4ŽÓ> stream H‰ìÁ0 ±W‹tL j‰MÇ®I ­mpaf¤óHb­¯]r{ endstream endobj 557 0 obj [ /Indexed /DeviceRGB 255 559 0 R ] endobj 558 0 obj [ /Indexed /DeviceRGB 255 560 0 R ] endobj 559 0 obj << /Length 49 /Filter /FlateDecode >> stream H‰ìÁ0 ±w4Wø@GÕÔ–˜Ý’ÝÚÚ’hÄAÒLø¾w]‚âz endstream endobj 560 0 obj << /Length 145 /Filter /FlateDecode >> stream H‰ìÁ¡ƒ `•w0[éV+‘ê…Hý HÚýiwTÕ¦³‘8›‘jä¶¹í)Vü¾u]ÏóÌ9c!ãxÿÂ6M3 CÛ¶Ï÷k~Ì”R!„µÖ{ˆJ)ç\ŒÑ÷}¿m[JiYÆX)eß÷iš8ç!„ã8¤” ”÷Ak¨µØ®ëÈåòWŒ©Dq endstream endobj 561 0 obj [ /Indexed /DeviceRGB 255 563 0 R ] endobj 562 0 obj [ /Indexed /DeviceRGB 255 564 0 R ] endobj 563 0 obj << /Length 163 /Filter /FlateDecode >> stream H‰ì¡„ IT»‘lµ[­F*‘h½J4R·Ú¨F+‘f¤´½Ýõ1îæŸù–†RD* ?”Öºë:Õûž0½1fÈa|ÇŽ3Ó¦™YÈe±¤µŽuxç¼÷ëJ!ðOÏöŽÝ"£#€ÌPv±{’R²)¥ƒ=ˆ“ÈgfsÉEÀ«\—TÉZïzßÒó<­5lˆ¨G>~˜¯„€…f endstream endobj 564 0 obj << /Length 171 /Filter /FlateDecode >> stream H‰úÿÿÿ¹sçÒÒfAZZƒ¦¦&''§¸¸¸ºº:33³M||ô„ÞžÛ·¥%'Ø¿§¾¾ÞÕÕõùógû÷ï?väHfFÆ“'Ž;¶pá‚òò2žò²²ïß¿mܸñþý{Û·oîéî———OOI¹~ýêëׯ֬ZÕÚÒ¸bù²ö¶¶úºÚYÓ§N™2ÑÌÌtÊÄ ~~~ £`Ð ÿ]K+ endstream endobj 565 0 obj [ /Indexed /DeviceRGB 255 566 0 R ] endobj 566 0 obj << /Length 48 /Filter /FlateDecode >> stream H‰:xð Ãÿÿÿÿ30œ;w.-m6¤¨s £` _`@& endstream endobj 567 0 obj [ /Indexed /DeviceRGB 255 572 0 R ] endobj 568 0 obj [ /Indexed /DeviceRGB 255 573 0 R ] endobj 569 0 obj [ /Indexed /DeviceRGB 255 574 0 R ] endobj 570 0 obj [ /Indexed /DeviceRGB 255 575 0 R ] endobj 571 0 obj [ /Indexed /DeviceRGB 255 576 0 R ] endobj 572 0 obj << /Length 161 /Filter /FlateDecode >> stream H‰ìÁ¡„ `’A$SéV+‘bÐQ®¸Q¯Ý(¤Û¨c3]d4ôٌfçS\òûbŒR~nRÊœ3B¨mÛ¢(ÎóÄ—eÉœ[kûþ}£”c¼÷à†a „ìû®µDZ뺂b𼵿ë\JižgÆXsB)圫ëzY^Uv]×mÛ(%×u½šæ8ôxüËO€¾ýNß endstream endobj 573 0 obj << /Length 112 /Filter /FlateDecode >> stream H‰ìÁ!Ä @@¢cã±µÈXf0'±g‘ÈÚØ¸ØJlƒã9\Ÿq¢»9ç½÷Ãc­uÎ…bdæZ¿i­Qïý¾;ó齿T眈˜D¥UÇ!Âk-ÿIɼ^ÿê'Àe-Ô endstream endobj 574 0 obj << /Length 50 /Filter /FlateDecode >> stream H‰JKKûÿÿÿ¹sç¦Nºÿ~%%%66¶û÷ïëèè0Œ‚Q0¬@€Ýõ/ endstream endobj 575 0 obj << /Length 27 /Filter /FlateDecode >> stream H‰JKKûÿÿÿ¹sçFÁ(y À±š endstream endobj 576 0 obj << /Length 37 /Filter /FlateDecode >> stream H‰JKKûÿÿÿ¹sçRRRÞ½{Ç0 FÁˆWé endstream endobj 577 0 obj [ /Indexed /DeviceRGB 255 578 0 R ] endobj 578 0 obj << /Length 62 /Filter /FlateDecode >> stream H‰ìÁ± @@›êÔF±Š,  Ì ó{|ÜÑîº;ˆˆª2³™E"ffUÍLwÃ9ßy ßk endstream endobj 579 0 obj [ /Indexed /DeviceRGB 255 580 0 R ] endobj 580 0 obj << /Length 553 /Filter /FlateDecode >> stream H‰ìÁiOñðÿ7©kd½§lÞiKǪÕxa6[/¢k5±¡r䦒.+s•QÖ¤HQ®”Mfé2k{záÙó=žßïôô€Z­Æd2€YD"{zzÈdòàà …B©¯¯¯««Ÿ˜˜ ÓéT*urr’F£MMMµ´´ P¨™™™éééÙÙYƒ177Çb±æçç9ÎÒÒÇãr¹‹‹‹|>_ …ÂÞÞ^6›½°° ‹¥R©\.W(ËËËJ¥R£Ñ¨Õê••­V»ººªÓéÖÖÖÖ××766T*•L&“H$ýýý››› H$mmm‰DƒÁàpxcc£^¯ïèèØÞÞÞÙÙéëëÛÝÝmnn6 {{{F£±³³sßd2Ùíöƒƒ«Õêp8ŽŽŽ\.—Óé´X,f³ùäääøøøððÐf³y½^·Ûíñxº»»ý~¿ÏçÃãñ æì쬽½½««ëüü<D"‘`0FC¡ÐÅÅE8ŽÇãÉd2‘HÜÝÝ]^^^__ßÜÜÄb±«««ûûûL&“N§Ÿžž²Ùl*•zxxhjjº½½}yyÉårïïï¥RéÏïïççg¡Px{{{}}ýùùùþþÎçó___Åbñùù¹R©”ËåjµÚÚÚÚÐÐ…B ‰DƒÁX,Fãp¸¶¶¶4ÀðW€)­ endstream endobj 581 0 obj << /Type /Font /Subtype /Type1 /Encoding 671 0 R /BaseFont /Symbol /ToUnicode 672 0 R >> endobj 582 0 obj << /Type /Font /Subtype /TrueType /FirstChar 32 /LastChar 32 /Widths [ 278 ] /Encoding /WinAnsiEncoding /BaseFont /Arial /FontDescriptor 670 0 R >> endobj 583 0 obj [ /Indexed /DeviceRGB 255 584 0 R ] endobj 584 0 obj << /Length 32 /Filter /FlateDecode >> stream H‰:wî\ZÚl HKKûÿÿ?Ã(# /ô Ò endstream endobj 585 0 obj [ /Indexed /DeviceRGB 255 586 0 R ] endobj 586 0 obj << /Length 29 /Filter /FlateDecode >> stream H‰:wî\ZÚl øÿÿ?Ã(# ®£  endstream endobj 587 0 obj [ /Indexed /DeviceRGB 255 588 0 R ] endobj 588 0 obj << /Length 47 /Filter /FlateDecode >> stream H‰ìÁ 0 0ÔâbJ°,±ëxÖ&!õl © ¶gçükãÞ endstream endobj 589 0 obj [ /Indexed /DeviceRGB 255 595 0 R ] endobj 590 0 obj [ /Indexed /DeviceRGB 255 596 0 R ] endobj 591 0 obj [ /Indexed /DeviceRGB 255 597 0 R ] endobj 592 0 obj [ /Indexed /DeviceRGB 255 598 0 R ] endobj 593 0 obj [ /Indexed /DeviceRGB 255 599 0 R ] endobj 594 0 obj [ /Indexed /DeviceRGB 255 600 0 R ] endobj 595 0 obj << /Length 59 /Filter /FlateDecode >> stream H‰ìá0Áï5µ¼Db±8ê@Ò!mdعÏc ø¢ˆ¨ª™¹{DdfUu£çµ>r³³3 endstream endobj 596 0 obj << /Length 182 /Filter /FlateDecode >> stream H‰ìÏ!ƒ0 †á(,‰Æâ±X$Y‰ÛE"kcqµÈ‰Cb‘ÈŠmYRvûÛ“÷Ó½`døH’$MSÈL&ò,Ïó¢Šò:­¬T-WÕª‘š¦•Ú¶ÓºˆL×cú^·á(ïá ‡ë†ÁjÖÆYKD:¢‘h)ž6º8çZçܤMÂ{?ϳ_ü¢-ë²F¼­Û·Kû~ì‡8Ï3„À¯'30—Ì߯ÿý–·?t† endstream endobj 597 0 obj << /Length 165 /Filter /FlateDecode >> stream H‰ìÍ‘†0Æñ£4Çiž¦át8LÓa8=ͦa:œ…Ó0œ]wëÏxßïýžÏ²˜ Žäš¦iÛ:Û1Õ)¥úžë‡ï¤aß8‰™›gÍim$S¡5ÆZ»,[+þ8iuÎmßm›—¼¯óeˆ;bÚ±ž´‡ºtáv²xF)¦˜*ºÒuÕe.ç;ßìyžR "¢Až¿ßö 0kM€Ô endstream endobj 598 0 obj << /Length 38 /Filter /FlateDecode >> stream H‰JKKûÿÿÿ¹sçþü¢¿ ­ £`Œ `Áv  endstream endobj 599 0 obj << /Length 376 /Filter /FlateDecode >> stream H‰ìÐ1KaÆñ‚ÀÉQnq—¼ÁAp9¤å„KJ¸tèŽZÔ=ÒáÄ#ÅA:Èåuñp0Ý> stream H‰JKKûÿÿÿ¹sçŽ?#+#{pßÁ§¯Ÿv´w,Z¸höìÙ%å%ùyùÞ¾Þ?¿ÿÊI˹zóê¶ ÛFÁ( Àv ò endstream endobj 601 0 obj [ /Indexed /DeviceRGB 255 602 0 R ] endobj 602 0 obj << /Length 87 /Filter /FlateDecode >> stream H‰ìÁÁ À п˜ E$s(%Sx÷ŠÇlÓSmS×(øžª2—…™Í @ï=/È€•¢ª&‡ŒsÀÓ|Ÿ$"O­¶y_­Šs.¥„mû¡O€7'‡ endstream endobj 603 0 obj [ /Indexed /DeviceRGB 255 610 0 R ] endobj 604 0 obj [ /Indexed /DeviceRGB 255 611 0 R ] endobj 605 0 obj [ /Indexed /DeviceRGB 255 612 0 R ] endobj 606 0 obj [ /Indexed /DeviceRGB 255 613 0 R ] endobj 607 0 obj [ /Indexed /DeviceRGB 255 614 0 R ] endobj 608 0 obj [ /Indexed /DeviceRGB 255 615 0 R ] endobj 609 0 obj [ /Indexed /DeviceRGB 255 616 0 R ] endobj 610 0 obj << /Length 206 /Filter /FlateDecode >> stream H‰b`‚F†ÿ ÿ €ŸŸŸY6KIIIGGÇÔÔÔÖÖ–ÁÁÉÁˆ<==ƒ‚‚ÂÃ㢢R’œR’Z“““Ó@`vvvvq1A ´6444nllmfhmn‚ÞÞÞ©“§‚Á¼Ù pn,_¶¤uÙ’eË—/_·n݆uáÛ·oß¿ÿ¾ûüùýõÏ¿¿ÿÿ3üÿoòÿ?Ü£`£j endstream endobj 611 0 obj << /Length 201 /Filter /FlateDecode >> stream H‰b`‚Æÿ PÀÆÆÆÏÏÏ,›¥¤¤¤££cjjjkkËààäàÄNžžžAAAáááQQQ)IN)I­ÉÉÉi 0;;;»¸ˆ€  Z[›Z›[ ···¿¿êä©`0o6œ›Ë—-i]¶dÙòåË×­[·a]øöíÛ÷ïß¿ïÀ¾ƒ;rìĉç@àÿ… ®^> stream H‰úÿÿB\Bp@p??ÇÿÿùÏ0 FÁ|z  endstream endobj 613 0 obj << /Length 24 /Filter /FlateDecode >> stream H‰b``øÿÿ?Ã(#î„þ endstream endobj 614 0 obj << /Length 21 /Filter /FlateDecode >> stream H‰úÿÿ?Ã(#÷{þ endstream endobj 615 0 obj << /Length 49 /Filter /FlateDecode >> stream H‰b``HIjMIrrrpúÿÿksë±#Ç–-Yöç÷×eKZFÁ(Ö À´ endstream endobj 616 0 obj << /Length 202 /Filter /FlateDecode >> stream H‰b`‚Æÿ ’á/˜dccãççg–ÍRRRÒÑÑ155µµµuppprpòôô ŠŠJIrJIjMNNNÙÙÙÙÅÅ@5`ÐÚÐÐÐØÈÐØØØÚÌÐÚÜ ½½½S'Oƒy³AàÜ<X¾lIë²%Ë–/_¾nݺ ë·oß¾ÿþ}ö|øóûëŸÿÿgøÿßäÿˆ'FÁ( ˆÊhƒ endstream endobj 617 0 obj [ /Indexed /DeviceRGB 255 619 0 R ] endobj 618 0 obj [ /Indexed /DeviceRGB 255 620 0 R ] endobj 619 0 obj << /Length 48 /Filter /FlateDecode >> stream H‰:wîÜìÙ³ÓÒ€(íÿÿÿ ¶¶¶ d£`X€—êÏ endstream endobj 620 0 obj << /Length 61 /Filter /FlateDecode >> stream H‰úÿÿÿ¹sÿ[›[Ž9––6{öìs@’Ôš’äääà´lɲ?¿¿.[R0 FÁ07h endstream endobj 621 0 obj [ /Indexed /DeviceRGB 255 623 0 R ] endobj 622 0 obj [ /Indexed /DeviceRGB 255 624 0 R ] endobj 623 0 obj << /Length 35 /Filter /FlateDecode >> stream H‰:wî\ZÚl èïïÿÿÿZZÃ(#Q  endstream endobj 624 0 obj << /Length 172 /Filter /FlateDecode >> stream H‰ìÄ0 …CÓù°> stream H‰:wî\ZÚl HKKûÿÿ?Ccc£­­mCCÃÁƒFÁ(Ö À–¬Ï endstream endobj 628 0 obj << /Length 50 /Filter /FlateDecode >> stream H‰:wî\ZÚl HKKûÿÿ?Ccc£­­mCCÃÁƒûûûFÁ(¾ Àj| endstream endobj 629 0 obj [ /Indexed /DeviceRGB 255 631 0 R ] endobj 630 0 obj [ /Indexed /DeviceRGB 255 632 0 R ] endobj 631 0 obj << /Length 209 /Filter /FlateDecode >> stream H‰b`‚F†ÿ ÿ €ŸŸŸY6KIIIGGÇÔÔÔÖÖ–ÁÁÉÁˆ<==ƒ‚‚ÂÃ㢢R’œR’Z“““Ó@`vvvvq1A ´6444nllmfhmn‚ÞÞÞþþþ©“§‚Á¼Ù pn,_¶¤uÙ’eË—/_·n݆uáÛ·oß¿ÿ¾ûüùýõÏ¿¿ÿÿ3üÿoòÿ?Ü£`Îk¶ endstream endobj 632 0 obj << /Length 205 /Filter /FlateDecode >> stream H‰b`‚Æÿ ’á/˜dccãççg–ÍRRRÒÑÑ155µµµuppprpòôô ŠŠJIrJIjMNNNÙÙÙÙÅÅ@5`ÐÚÐÐÐØÈÐØØØÚÌÐÚÜ ½½½ýýýS'Oƒy³AàÜ<X¾lIë²%Ë–/_¾nݺ ë·oß¾ÿþ}ö|øóûëŸÿÿgøÿßäÿˆ?FÁ( j0 endstream endobj 633 0 obj [ /Indexed /DeviceRGB 255 634 0 R ] endobj 634 0 obj << /Length 190 /Filter /FlateDecode >> stream H‰b`‚F†ÿ ÿ €ŸŸŸY6KIIIGGÇÔÔÔÖÖ–ÁÁÉÁÁÁÓÓ3(((<<<***999 fgggÔ€AkCCC#ÐÄÆÆÖf†ÖæV èíííïïŸ:y*Ì› çæÀr X·n݆uáÛ·oß¿ÿ¾ûüù÷÷ÿ†ÿÿMþÿ‡»zŒ’@€Bçaô endstream endobj 635 0 obj [ /Indexed /DeviceRGB 255 637 0 R ] endobj 636 0 obj [ /Indexed /DeviceRGB 255 638 0 R ] endobj 637 0 obj << /Length 54 /Filter /FlateDecode >> stream H‰:wî\ZÚl HKKûÿÿÿìÙçmmm<ØßßÏ0 FÁ0>í€ endstream endobj 638 0 obj << /Length 184 /Filter /FlateDecode >> stream H‰b`‚Æÿ ’á/˜dccãççg–ÍRRRÒÑÑ155µµµuppðôô ŠŠJNNNÙÙÙÙÅÅ@5`ÐÚÐÐÐØÈÐØØØÚÌÐÚÜ ½½½ýýýS'Oƒy³AàÜ<XëÖ­Û°.|ûöíû÷ïßw`ßÁƒ9vâĉs ðÿÂ… W/žº~ýúýû÷_¼xñáÇ?ÿþþÿÏðÿ¿ÉÿÿW‚Q@>0ý`n endstream endobj 639 0 obj [ /Indexed /DeviceRGB 255 640 0 R ] endobj 640 0 obj << /Length 187 /Filter /FlateDecode >> stream H‰b`‚F†ÿ ÿ €ŸŸŸY6KIIIGGÇÔÔÔÖÖ–ÁÁÉÁÁÁÓÓ3(((<<<***999 fgggÔ€AkCCC#ÐÄÆÆÖf†ÖæV èíí:y*Ì› çæÀr X·n݆uáÛ·oß¿ÿ¾ûüù÷÷ÿ†ÿÿMþÿ‡;yŒr@€®¦`G endstream endobj 641 0 obj [ /Indexed /DeviceRGB 255 642 0 R ] endobj 642 0 obj << /Length 50 /Filter /FlateDecode >> stream H‰ìÂ0±W‹*@j0€¥2;rénÀ¶$!"f¦ê­Ì䜭zb endstream endobj 643 0 obj [ /Indexed /DeviceRGB 255 644 0 R ] endobj 644 0 obj << /Length 738 /Filter /FlateDecode >> stream H‰:xð Ãÿÿÿÿ30œ;w.--íÿ“ÿÿ€b­Í Ö…ÁìÙ³ÓÒ€Ä9NNNaaaqqqIIIYYYyyyQQQAAA%%%)))666fffGGÇØØØôôôÜÜÜ’’’²²²âââÌÌÌìì캺º¦¦¦êêêšššÖÖÖööö„„„°°°¨¨¨¤¤¤ÈÈH###mmmUUUƒÉ“'Ïš5kÅŠ7nܱcÇ¡C‡vïÞ½sçÎ\¼xñòåËçÏŸ¿~ýú7.]º´mÛ¶U«V­]»vþüù>>>¶¶¶ÆÆÆšššŠŠŠ¦¦¦ÖÖÖ®®®žžž~~~îîîúúújjjüüüZZZ666VVVfffÁÁÁ ,غuëÞ½{÷ïß¿}ûö%K–Ì;wÒ¤IýýýµµµÝÝÝ&L˜3gΔ)S¦OŸ>sæÌ¾¾¾©S§.[¶láÂ…mmm'N<þüêÕ«§OŸ~ñâÅË—/> stream H‰:wî\ZZÚÿÿÿgÏžÍÀÀ–¤Ï1Œ‚Q02@€¢ Ö endstream endobj 647 0 obj [ /Indexed /DeviceRGB 255 648 0 R ] endobj 648 0 obj << /Length 42 /Filter /FlateDecode >> stream H‰:wî\ZZÚÿÿÿgÏžÍÀÀ–¤Ïõ÷÷3Œ‚Q0@€û ƒ endstream endobj 649 0 obj [ /Indexed /DeviceRGB 255 650 0 R ] endobj 650 0 obj << /Length 171 /Filter /FlateDecode >> stream H‰ìÈ¡ƒ0@ѧ°üC5rxl-f –¤¦[Ó,•¨å©&µu͆C58$Él{c1ÇWÜq€ˆ´ÖšbŒB¢ ÏÜà®kmŒtD‹wdŒÕueÙëóîŸ}’$eYcœsˆ(¥lÛ6„€è8çó> stream H‰b`‚Æÿ ’Y6ËÖÖ6 f766ªõ«õ÷÷Oœ(5Î-Zdϰ„áܹs/^¼tñÒÕ‹§nÞ¼©WÿÑãGïß¿ÿÿŸáÿˆ1£` ` õ(• endstream endobj 653 0 obj [ /Indexed /DeviceRGB 255 655 0 R ] endobj 654 0 obj [ /Indexed /DeviceRGB 255 656 0 R ] endobj 655 0 obj << /Length 161 /Filter /FlateDecode >> stream H‰b`666~~~fÙ,%%%SSS[[[OOÏ   ðð𨨨äää4˜]\ D@P­ ­Í ­­­½½½S'Oƒy³AàÜ<XëÖ­Û°.|ûöíû÷ïßw`ßÁƒOœ8qþ_¸páêÅSׯ_¿ÿþ‹/>|øðçßßÿÿþñ(4ŠTµ endstream endobj 656 0 obj << /Length 61 /Filter /FlateDecode >> stream H‰b`‚Æÿ ̲Y¶¶¶i 0»±±±¿¿6œƒÿW/žòÿïñÿÅÿÿÿ3Œ‚Q0\@€Íg endstream endobj 657 0 obj [ /Indexed /DeviceRGB 255 659 0 R ] endobj 658 0 obj [ /Indexed /DeviceRGB 255 660 0 R ] endobj 659 0 obj << /Length 41 /Filter /FlateDecode >> stream H‰JKKûÿÿÿ¹sç<ØØØÈÀÀ$þÿg£`$€œ~ ` endstream endobj 660 0 obj << /Length 48 /Filter /FlateDecode >> stream H‰:xð Ãÿÿÿÿ30œ;w.--möìÙ@‚aŒ‚a  q= endstream endobj 661 0 obj << /Type /Font /Subtype /Type1 /Encoding /WinAnsiEncoding /BaseFont /Courier >> endobj 662 0 obj [ /Indexed /DeviceRGB 255 665 0 R ] endobj 663 0 obj [ /Indexed /DeviceRGB 255 666 0 R ] endobj 664 0 obj [ /Indexed /DeviceRGB 255 667 0 R ] endobj 665 0 obj << /Length 69 /Filter /FlateDecode >> stream H‰úÿÿÿ‡?æm¿Ü»Ý4{ùþ ÷Ù‚zL[¯_¿ÔÛÛºnݺ©ó¦ÖÔÔdgg> stream H‰úÿÿÿÔ©SçÍ›·|ù¼ââyQQóæµ¶Îc`˜ÇÏ?OI È£`Ø€EI[ endstream endobj 667 0 obj << /Length 449 /Filter /FlateDecode >> stream H‰ìÁÍkÓ`àx(âA‚±›ë%EۋÆ^–ÓêXŽŠ;Á¸nL¤X$à!"n%ƒé¡ÒQ§• /:©­,iQk¥L sÓnvbßWÿ o>c Ò0}<úú›Â_ñ4À᪅©ú}¸±ˆÌ;Ü"°šØ¹9%ŠÝ”°w?äqø | ‡dh†qXQEÂÀœ‹G¡š¿É,†Ïq#>Ÿ¯ÑhØ_™÷‹¦R©ß½Þâs6i±Xìt:žçµÛínw{«Çª?¨(ŠÓMÇÏÔ¾ïzì …Õ›-f†išÂóM²Á®ÍZŽãèwîŽ6Çq‘H„¼*ó<ŸH$‚ÁàÈ[ê¾ÿx¡Aõ+ù|^–eÛ¶O,¸Ÿ·©ô†ËÖü~¿Ñf•JeºüiôAiæÞ¼$Ib™Bš?©ªªæ6D6’ɤ ±X, ]ºž~F^꺮( Æô‹µodµ£iÚ¬e+©oÑ…– +¥é¹ùÓ¤é®wùÌrªX9n¿ʹõµNàQ}Ç“õèɳ¤ÞR3ÙÀ}¢P]^q¢—ÆîÆÓ€¹=Â>ü÷ý`ã—Ü@ endstream endobj 668 0 obj << /Type /FontDescriptor /Ascent 905 /CapHeight 0 /Descent -211 /Flags 32 /FontBBox [ -628 -376 2034 1010 ] /FontName /Arial,Bold /ItalicAngle 0 /StemV 133 >> endobj 669 0 obj << /Type /FontDescriptor /Ascent 891 /CapHeight 0 /Descent -216 /Flags 98 /FontBBox [ -498 -307 1120 1023 ] /FontName /TimesNewRoman,Italic /ItalicAngle -15 /StemV 0 >> endobj 670 0 obj << /Type /FontDescriptor /Ascent 905 /CapHeight 0 /Descent -211 /Flags 32 /FontBBox [ -665 -325 2028 1006 ] /FontName /Arial /ItalicAngle 0 /StemV 0 >> endobj 671 0 obj << /Type /Encoding /Differences [ 1 /bullet /multiply ] >> endobj 672 0 obj << /Filter /FlateDecode /Length 220 >> stream H‰TP=à Ýù[u€°Ü±´K†ûPÓÞNÀ‰Ê‡òï(­tƒŸd??ûÙô<\gПèÕˆ fãtÄÕoQ!L¸mTjYEeešÅã¾&´ƒ›=ô=¡×L®)îpw;ùlj~GѸ·îþ› ãÂ-º „3¡çO¾¤ÅL7i­wm¡×¸©0J· ô¬¸tú?GøS1ÍÏ´µàŒsAª¬»|’G¼šË´rÚÛŒÚbÌ>ëýÕb1e¾_|(J?’wl˜ endstream endobj 673 0 obj << /Producer (Acrobat Distiller 4.05 for Windows) /Creator () /ModDate (D:20040115103234+01'00') /Title (DICOMscope 3.6.0) /CreationDate (D:20040115103041) /Subject (User Manual) /Author (Eichelberg, Kleber, Riesmeier, Schröter, Thiel) /Keywords (DICOM, DICOMscope) >> endobj 674 0 obj << /Type /Pages /Kids [ 689 0 R 1 0 R 47 0 R 70 0 R 73 0 R 76 0 R 84 0 R 89 0 R 97 0 R 108 0 R ] /Count 10 /Parent 675 0 R >> endobj 675 0 obj << /Type /Pages /Kids [ 674 0 R 676 0 R 677 0 R 678 0 R 679 0 R 680 0 R 681 0 R 682 0 R 683 0 R ] /Count 82 >> endobj 676 0 obj << /Type /Pages /Kids [ 118 0 R 125 0 R 129 0 R 137 0 R 145 0 R 152 0 R 160 0 R 167 0 R 174 0 R 180 0 R ] /Count 10 /Parent 675 0 R >> endobj 677 0 obj << /Type /Pages /Kids [ 184 0 R 190 0 R 197 0 R 206 0 R 212 0 R 219 0 R 232 0 R 240 0 R 248 0 R 257 0 R ] /Count 10 /Parent 675 0 R >> endobj 678 0 obj << /Type /Pages /Kids [ 261 0 R 265 0 R 269 0 R 281 0 R 286 0 R 305 0 R 311 0 R 317 0 R 323 0 R 329 0 R ] /Count 10 /Parent 675 0 R >> endobj 679 0 obj << /Type /Pages /Kids [ 334 0 R 339 0 R 344 0 R 349 0 R 354 0 R 362 0 R 366 0 R 370 0 R 377 0 R 381 0 R ] /Count 10 /Parent 675 0 R >> endobj 680 0 obj << /Type /Pages /Kids [ 384 0 R 388 0 R 391 0 R 396 0 R 401 0 R 405 0 R 411 0 R 418 0 R 422 0 R 426 0 R ] /Count 10 /Parent 675 0 R >> endobj 681 0 obj << /Type /Pages /Kids [ 429 0 R 432 0 R 435 0 R 438 0 R 441 0 R 444 0 R 447 0 R 450 0 R 453 0 R 457 0 R ] /Count 10 /Parent 675 0 R >> endobj 682 0 obj << /Type /Pages /Kids [ 462 0 R 477 0 R 481 0 R 496 0 R 500 0 R 503 0 R 506 0 R 515 0 R 524 0 R 527 0 R ] /Count 10 /Parent 675 0 R >> endobj 683 0 obj << /Type /Pages /Kids [ 530 0 R 533 0 R ] /Count 2 /Parent 675 0 R >> endobj xref 0 684 0000000000 65535 f 0000086318 00000 n 0000086782 00000 n 0000086925 00000 n 0000087068 00000 n 0000087211 00000 n 0000087354 00000 n 0000087498 00000 n 0000087642 00000 n 0000087786 00000 n 0000087930 00000 n 0000088075 00000 n 0000088220 00000 n 0000088365 00000 n 0000088511 00000 n 0000088657 00000 n 0000088803 00000 n 0000088948 00000 n 0000089093 00000 n 0000089239 00000 n 0000089385 00000 n 0000089531 00000 n 0000089677 00000 n 0000089823 00000 n 0000089969 00000 n 0000090115 00000 n 0000090261 00000 n 0000090407 00000 n 0000090553 00000 n 0000090699 00000 n 0000090845 00000 n 0000090990 00000 n 0000091136 00000 n 0000091282 00000 n 0000091428 00000 n 0000091573 00000 n 0000091718 00000 n 0000091863 00000 n 0000092008 00000 n 0000092153 00000 n 0000092298 00000 n 0000092443 00000 n 0000092588 00000 n 0000092733 00000 n 0000092878 00000 n 0000093021 00000 n 0000093153 00000 n 0000094862 00000 n 0000095172 00000 n 0000095317 00000 n 0000095462 00000 n 0000095607 00000 n 0000095752 00000 n 0000095897 00000 n 0000096042 00000 n 0000096187 00000 n 0000096332 00000 n 0000096477 00000 n 0000096622 00000 n 0000096768 00000 n 0000096914 00000 n 0000097060 00000 n 0000097205 00000 n 0000097351 00000 n 0000097497 00000 n 0000097643 00000 n 0000097788 00000 n 0000097933 00000 n 0000098078 00000 n 0000098197 00000 n 0000099930 00000 n 0000100085 00000 n 0000100217 00000 n 0000103689 00000 n 0000103844 00000 n 0000103950 00000 n 0000105545 00000 n 0000105749 00000 n 0000105895 00000 n 0000106041 00000 n 0000106187 00000 n 0000106280 00000 n 0000106502 00000 n 0000109145 00000 n 0000111452 00000 n 0000111627 00000 n 0000111772 00000 n 0000111940 00000 n 0000114400 00000 n 0000132770 00000 n 0000132945 00000 n 0000133091 00000 n 0000133350 00000 n 0000136376 00000 n 0000136660 00000 n 0000138044 00000 n 0000139645 00000 n 0000139910 00000 n 0000140102 00000 n 0000140248 00000 n 0000140394 00000 n 0000140541 00000 n 0000140836 00000 n 0000143520 00000 n 0000143753 00000 n 0000144118 00000 n 0000144363 00000 n 0000144760 00000 n 0000146539 00000 n 0000146742 00000 n 0000146889 00000 n 0000147036 00000 n 0000147183 00000 n 0000147329 00000 n 0000147583 00000 n 0000149693 00000 n 0000151199 00000 n 0000151602 00000 n 0000151832 00000 n 0000152019 00000 n 0000152166 00000 n 0000152313 00000 n 0000152553 00000 n 0000153990 00000 n 0000176141 00000 n 0000176411 00000 n 0000176569 00000 n 0000176768 00000 n 0000177131 00000 n 0000189566 00000 n 0000189769 00000 n 0000189916 00000 n 0000190063 00000 n 0000190210 00000 n 0000190357 00000 n 0000190528 00000 n 0000192605 00000 n 0000311785 00000 n 0000311964 00000 n 0000312110 00000 n 0000312391 00000 n 0000315413 00000 n 0000316685 00000 n 0000316969 00000 n 0000317257 00000 n 0000317566 00000 n 0000317724 00000 n 0000317992 00000 n 0000319737 00000 n 0000321726 00000 n 0000324210 00000 n 0000324514 00000 n 0000324859 00000 n 0000325046 00000 n 0000325193 00000 n 0000325340 00000 n 0000325621 00000 n 0000328517 00000 n 0000329798 00000 n 0000330195 00000 n 0000331604 00000 n 0000331762 00000 n 0000332030 00000 n 0000334318 00000 n 0000335127 00000 n 0000335926 00000 n 0000336481 00000 n 0000337926 00000 n 0000338084 00000 n 0000338338 00000 n 0000341100 00000 n 0000341781 00000 n 0000341998 00000 n 0000342248 00000 n 0000342485 00000 n 0000342643 00000 n 0000342883 00000 n 0000344602 00000 n 0000344919 00000 n 0000345240 00000 n 0000345497 00000 n 0000345655 00000 n 0000345867 00000 n 0000347086 00000 n 0000350687 00000 n 0000350874 00000 n 0000351021 00000 n 0000351168 00000 n 0000351380 00000 n 0000353124 00000 n 0000355023 00000 n 0000355181 00000 n 0000355435 00000 n 0000357362 00000 n 0000358807 00000 n 0000359058 00000 n 0000359273 00000 n 0000359480 00000 n 0000359659 00000 n 0000359806 00000 n 0000360074 00000 n 0000362621 00000 n 0000362891 00000 n 0000363115 00000 n 0000363363 00000 n 0000363590 00000 n 0000363861 00000 n 0000364040 00000 n 0000364187 00000 n 0000364427 00000 n 0000366558 00000 n 0000370408 00000 n 0000370705 00000 n 0000370900 00000 n 0000371047 00000 n 0000371194 00000 n 0000371341 00000 n 0000371553 00000 n 0000373015 00000 n 0000375838 00000 n 0000376033 00000 n 0000376180 00000 n 0000376327 00000 n 0000376473 00000 n 0000376826 00000 n 0000379081 00000 n 0000379932 00000 n 0000380250 00000 n 0000380511 00000 n 0000380765 00000 n 0000381031 00000 n 0000381270 00000 n 0000381509 00000 n 0000381667 00000 n 0000381949 00000 n 0000384517 00000 n 0000384773 00000 n 0000385415 00000 n 0000385686 00000 n 0000385933 00000 n 0000386168 00000 n 0000386347 00000 n 0000386494 00000 n 0000386762 00000 n 0000388724 00000 n 0000388963 00000 n 0000416615 00000 n 0000417273 00000 n 0000417496 00000 n 0000417699 00000 n 0000417846 00000 n 0000417993 00000 n 0000418140 00000 n 0000418286 00000 n 0000418552 00000 n 0000421535 00000 n 0000422451 00000 n 0000423075 00000 n 0000423233 00000 n 0000423445 00000 n 0000424186 00000 n 0000425194 00000 n 0000425352 00000 n 0000425523 00000 n 0000427016 00000 n 0000623535 00000 n 0000623693 00000 n 0000623905 00000 n 0000626384 00000 n 0000632108 00000 n 0000632303 00000 n 0000632450 00000 n 0000632547 00000 n 0000632915 00000 n 0000635346 00000 n 0000636569 00000 n 0000636837 00000 n 0000637109 00000 n 0000637352 00000 n 0000637621 00000 n 0000637927 00000 n 0000638229 00000 n 0000638387 00000 n 0000638627 00000 n 0000640186 00000 n 0000640532 00000 n 0000645781 00000 n 0000645968 00000 n 0000646114 00000 n 0000646261 00000 n 0000646743 00000 n 0000649785 00000 n 0000649998 00000 n 0000650224 00000 n 0000650479 00000 n 0000650706 00000 n 0000650928 00000 n 0000651157 00000 n 0000651361 00000 n 0000651591 00000 n 0000651823 00000 n 0000652097 00000 n 0000652309 00000 n 0000652511 00000 n 0000652745 00000 n 0000652988 00000 n 0000653167 00000 n 0000653314 00000 n 0000653556 00000 n 0000656092 00000 n 0000656925 00000 n 0000658924 00000 n 0000659082 00000 n 0000659339 00000 n 0000660462 00000 n 0000664104 00000 n 0000664364 00000 n 0000664678 00000 n 0000664857 00000 n 0000665003 00000 n 0000665245 00000 n 0000666411 00000 n 0000669199 00000 n 0000671434 00000 n 0000671613 00000 n 0000671760 00000 n 0000672002 00000 n 0000673016 00000 n 0000681060 00000 n 0000683830 00000 n 0000683988 00000 n 0000684216 00000 n 0000685120 00000 n 0000688486 00000 n 0000691765 00000 n 0000691923 00000 n 0000692165 00000 n 0000693206 00000 n 0000694974 00000 n 0000699104 00000 n 0000699262 00000 n 0000699504 00000 n 0000701198 00000 n 0000704981 00000 n 0000708092 00000 n 0000708250 00000 n 0000708492 00000 n 0000709773 00000 n 0000712085 00000 n 0000714586 00000 n 0000714744 00000 n 0000714986 00000 n 0000716030 00000 n 0000723388 00000 n 0000728121 00000 n 0000728324 00000 n 0000728471 00000 n 0000728618 00000 n 0000728765 00000 n 0000728912 00000 n 0000729151 00000 n 0000732268 00000 n 0000734527 00000 n 0000734706 00000 n 0000734853 00000 n 0000734960 00000 n 0000735793 00000 n 0000735951 00000 n 0000736164 00000 n 0000737592 00000 n 0000777469 00000 n 0000777656 00000 n 0000777803 00000 n 0000777950 00000 n 0000778192 00000 n 0000779842 00000 n 0000780479 00000 n 0000784143 00000 n 0000784301 00000 n 0000784501 00000 n 0000785110 00000 n 0000789193 00000 n 0000789351 00000 n 0000789471 00000 n 0000794677 00000 n 0000794835 00000 n 0000795048 00000 n 0000796484 00000 n 0000804986 00000 n 0000805144 00000 n 0000805277 00000 n 0000807697 00000 n 0000807876 00000 n 0000808023 00000 n 0000808236 00000 n 0000810089 00000 n 0000813127 00000 n 0000813285 00000 n 0000813527 00000 n 0000815121 00000 n 0000815814 00000 n 0000825173 00000 n 0000825352 00000 n 0000825499 00000 n 0000825658 00000 n 0000828850 00000 n 0000829029 00000 n 0000829176 00000 n 0000829418 00000 n 0000831235 00000 n 0000831591 00000 n 0000834107 00000 n 0000834302 00000 n 0000834449 00000 n 0000834594 00000 n 0000834741 00000 n 0000834954 00000 n 0000836434 00000 n 0000840403 00000 n 0000840561 00000 n 0000840774 00000 n 0000842578 00000 n 0000845663 00000 n 0000845842 00000 n 0000845989 00000 n 0000846134 00000 n 0000850495 00000 n 0000850653 00000 n 0000850760 00000 n 0000857076 00000 n 0000857234 00000 n 0000857341 00000 n 0000863280 00000 n 0000863438 00000 n 0000863569 00000 n 0000869120 00000 n 0000869278 00000 n 0000869398 00000 n 0000875673 00000 n 0000875831 00000 n 0000875952 00000 n 0000882006 00000 n 0000882164 00000 n 0000882284 00000 n 0000889533 00000 n 0000889691 00000 n 0000889811 00000 n 0000895858 00000 n 0000896016 00000 n 0000896136 00000 n 0000901988 00000 n 0000902146 00000 n 0000902305 00000 n 0000908304 00000 n 0000908483 00000 n 0000908630 00000 n 0000908775 00000 n 0000913725 00000 n 0000913912 00000 n 0000914059 00000 n 0000914206 00000 n 0000914351 00000 n 0000917079 00000 n 0000917347 00000 n 0000917516 00000 n 0000917686 00000 n 0000917858 00000 n 0000918028 00000 n 0000918215 00000 n 0000918404 00000 n 0000918610 00000 n 0000918787 00000 n 0000919000 00000 n 0000919147 00000 n 0000919294 00000 n 0000919441 00000 n 0000919600 00000 n 0000922602 00000 n 0000922781 00000 n 0000922928 00000 n 0000923099 00000 n 0000926282 00000 n 0000926550 00000 n 0000926717 00000 n 0000926900 00000 n 0000927082 00000 n 0000927252 00000 n 0000927424 00000 n 0000927594 00000 n 0000927783 00000 n 0000927992 00000 n 0000928169 00000 n 0000928382 00000 n 0000928529 00000 n 0000928676 00000 n 0000928861 00000 n 0000932081 00000 n 0000932260 00000 n 0000932406 00000 n 0000932591 00000 n 0000936680 00000 n 0000936838 00000 n 0000936945 00000 n 0000937582 00000 n 0000937740 00000 n 0000937912 00000 n 0000939234 00000 n 0000939453 00000 n 0000939627 00000 n 0000939797 00000 n 0000939964 00000 n 0000940130 00000 n 0000940297 00000 n 0000940468 00000 n 0000940627 00000 n 0000943289 00000 n 0000943484 00000 n 0000943657 00000 n 0000943823 00000 n 0000943993 00000 n 0000944251 00000 n 0000945344 00000 n 0000946708 00000 n 0000947228 00000 n 0000952359 00000 n 0000952517 00000 n 0000952689 00000 n 0000956218 00000 n 0000956376 00000 n 0000956535 00000 n 0000960098 00000 n 0000960256 00000 n 0000960402 00000 n 0000964192 00000 n 0000964350 00000 n 0000964496 00000 n 0000966045 00000 n 0000966408 00000 n 0000967165 00000 n 0000967220 00000 n 0000967446 00000 n 0000967501 00000 n 0000967556 00000 n 0000967799 00000 n 0000967918 00000 n 0000968217 00000 n 0000968272 00000 n 0000968387 00000 n 0000968442 00000 n 0000968566 00000 n 0000968621 00000 n 0000968749 00000 n 0000968804 00000 n 0000968931 00000 n 0000968986 00000 n 0000969222 00000 n 0000969277 00000 n 0000969397 00000 n 0000969452 00000 n 0000969507 00000 n 0000969630 00000 n 0000969850 00000 n 0000969905 00000 n 0000969960 00000 n 0000970198 00000 n 0000970444 00000 n 0000970499 00000 n 0000970621 00000 n 0000970676 00000 n 0000970731 00000 n 0000970786 00000 n 0000970841 00000 n 0000970896 00000 n 0000971132 00000 n 0000971319 00000 n 0000971443 00000 n 0000971544 00000 n 0000971655 00000 n 0000971710 00000 n 0000971846 00000 n 0000971901 00000 n 0000972529 00000 n 0000972642 00000 n 0000972817 00000 n 0000972872 00000 n 0000972978 00000 n 0000973033 00000 n 0000973136 00000 n 0000973191 00000 n 0000973312 00000 n 0000973367 00000 n 0000973422 00000 n 0000973477 00000 n 0000973532 00000 n 0000973587 00000 n 0000973642 00000 n 0000973775 00000 n 0000974032 00000 n 0000974272 00000 n 0000974384 00000 n 0000974835 00000 n 0000974984 00000 n 0000975039 00000 n 0000975200 00000 n 0000975255 00000 n 0000975310 00000 n 0000975365 00000 n 0000975420 00000 n 0000975475 00000 n 0000975530 00000 n 0000975585 00000 n 0000975866 00000 n 0000976142 00000 n 0000976259 00000 n 0000976357 00000 n 0000976452 00000 n 0000976575 00000 n 0000976852 00000 n 0000976907 00000 n 0000976962 00000 n 0000977084 00000 n 0000977219 00000 n 0000977274 00000 n 0000977329 00000 n 0000977438 00000 n 0000977685 00000 n 0000977740 00000 n 0000977795 00000 n 0000977916 00000 n 0000978040 00000 n 0000978095 00000 n 0000978150 00000 n 0000978434 00000 n 0000978714 00000 n 0000978769 00000 n 0000979034 00000 n 0000979089 00000 n 0000979144 00000 n 0000979272 00000 n 0000979531 00000 n 0000979586 00000 n 0000979848 00000 n 0000979903 00000 n 0000980027 00000 n 0000980082 00000 n 0000980895 00000 n 0000980950 00000 n 0000981063 00000 n 0000981118 00000 n 0000981234 00000 n 0000981289 00000 n 0000981535 00000 n 0000981590 00000 n 0000981755 00000 n 0000981810 00000 n 0000981865 00000 n 0000982101 00000 n 0000982236 00000 n 0000982291 00000 n 0000982346 00000 n 0000982461 00000 n 0000982583 00000 n 0000982686 00000 n 0000982741 00000 n 0000982796 00000 n 0000982851 00000 n 0000982994 00000 n 0000983121 00000 n 0000983645 00000 n 0000983832 00000 n 0000984029 00000 n 0000984209 00000 n 0000984289 00000 n 0000984584 00000 n 0000984872 00000 n 0000985022 00000 n 0000985156 00000 n 0000985315 00000 n 0000985474 00000 n 0000985633 00000 n 0000985792 00000 n 0000985951 00000 n 0000986110 00000 n 0000986269 00000 n trailer << /Size 684 /ID[<318742d94ae381f5f02f6cc415eea4d7><318742d94ae381f5f02f6cc415eea4d7>] >> startxref 173 %%EOF dicomscope-3.6.0/DICOMscope/icons/0002755000265600020320000000000011262371102015766 5ustar tilleaadmindicomscope-3.6.0/DICOMscope/icons/1zu1.gif0000644000265600020320000000011307307374256017270 0ustar tilleaadminGIF89a€ÿÀÀÀ!ù,@"„™ ¼š‚®ÚË Íòèþ€×H–F6mͶë‰TdÖH;dicomscope-3.6.0/DICOMscope/icons/1zu132.gif0000644000265600020320000000020107307374256017433 0ustar tilleaadminGIF89a €ÿÀÀÀ!ù, @X„©ËZ‚±Qé Þ¼ûIiÀu„"C’Šúµî cæ6—W*†ã¹àÊ[-ØñˆL*—Kes¥SîdýE+>îU ËŠÛ* Ò¢Íba{ZaÊçtI;dicomscope-3.6.0/DICOMscope/icons/2themax.gif0000644000265600020320000000011607307374256020043 0ustar tilleaadminGIF89a€ÿÀÀÀ!ù,@%„©›aÞž„ÊÁ@f<žü` ^bu’ª¶"ÙØÅñUI$üá\;dicomscope-3.6.0/DICOMscope/icons/2themax32.gif0000644000265600020320000000021207307374256020205 0ustar tilleaadminGIF89a €ÿÀÀÀ!ù, @a„©«çƒŽÎ‹›ŒÙpPQa—D‰vcyN¦™½Ÿ'·LÝV³ªÛšO¦†Äáj÷CaFfñ ý½b5¥5µ€V—ÏÒ* Z©·pôŒN«‰HfÔNÒÆqWlîîpTÙzQ;dicomscope-3.6.0/DICOMscope/icons/about.html0000644000265600020320000000535411262371102017773 0ustar tilleaadmin

Disclaimer: This software is made available, as is, and OFFIS, the Institute for Microtherapy and OTech make no warranty regarding the software, its performance, its merchantability or fitness for any particular use, freedom from any computer diseases or its conformity to any specification. The entire risk as to quality and performance of the software is with the user. This software is intended for investigational use only. It has not been tested or approved for clinical application or production environments.
2001 East Oakshores Drive
Crossroads, TX 76227; USA
http://www.otechimg.com/
- Main contractor and project management -
KuratoriumOFFIS e.V.
Escherweg 2
D-26121 Oldenburg; Germany
http://www.offis.de/
- Implementation of the DICOM toolkit software -
Institute for Microtherapy
Universitaetsstr. 142
D-44799 Bochum; Germany
http://www.microtherapy.de/
- Graphical User Interface -
Feel free and have a look at our web pages:
 http://dicom.offis.de/dscope
dicomscope-3.6.0/DICOMscope/icons/back32a.gif0000644000265600020320000000015407307374256017703 0ustar tilleaadminGIF89a €ÿÀÀÀ!ù, @C„©Ë £„lÚk~8ì&Ýè}ä¦êÊXzJU<:ô«ÒíÎ÷þÜÕr1Ð-b;NfÊ墙Ñ@KÆ[ëä÷ÜT;dicomscope-3.6.0/DICOMscope/icons/backa.gif0000644000265600020320000000031207307374256017532 0ustar tilleaadminGIF89aÄÿÀÀÀööõææåÖÖÔÌÌÌÄÃý½½¶µ´¯¯¯¦¥¤˜•”“Œ‹„ƒ€~}|vuugdd__[WWW???... !ù,@G ŽdI^a € •y^U]rIÓy¯Ó“ÈA`(Äd4‹ÄñPX|Ð(t‡C#ŒCõDy-Äá8«@ BæKF[©¼;dicomscope-3.6.0/DICOMscope/icons/begin32a.gif0000644000265600020320000000017707307374256020074 0ustar tilleaadminGIF89a €ÿÀÀÀ!ù, @V„©›áqžœ¬½8³¦ï †¢åxÛIBƉŽî ‹ÝªÅ3ÀfÕ÷ïûÐJÃ\ìˆL*—Ìæ(A iðy)§¦-'‹óÖ¬ÛT—Š%†YRpÔ Ë;dicomscope-3.6.0/DICOMscope/icons/begina.gif0000644000265600020320000000032107307374256017716 0ustar tilleaadminGIF89aÄÿÀÀÀêêéããßÞÞÝÅÄľ½ºµµ±ª©©ŸŸž““Œ‹‹Š‡†……~~~vvuihhfccWWWOOOGGG::9---%%% !ù,@N Žd)jÚ Àp8Í‘èyUW6“5°§yÇCœi"ˆƒÒZ¯ÁfµD„“°+h‹Ó9*Œ‰îä”,¨@¬þ;dicomscope-3.6.0/DICOMscope/icons/bigdefault.gif0000644000265600020320000000102207307374256020576 0ustar tilleaadminGIF89a@@¢ÿÀÀÀ„‚„„„ÄÂÄüüþü!ù,@@@ÿºÜþ0ÊIßåŽÀÃÖ ÖCÕ\Eª®—'zk*ÌÅ,Äxž•èb©LGù#’5AÅ„À¤r55Ÿ¦ž®PUu©WfvìÜZ—*Þx-‹ÙðJh®‰SÜÁO'š¦ãwd9-s261afi.OCI:Š`hAc}…[_\”^žjq|‹TR–vv†:¡©®¯°±²ª…£#³ e/¶A#$t©«ƒÅ3«8M·™!އ67E¤¬­ |Æ"D¤œX?,£žfáoƉ§êêŒ&£î`’gfØkÑŸøï§Ä¹²–B‰%y—f)›„n. õ=„³pßDŠ .jÜȱףǎ¶üøö·Zš¶ó@ò¡7!!ÍZéA¡6˜‘T¬œ³âU;(®…ÐgB±m)sL#ا‡³<2Řv£ÓeûœuY†jjWçY('s‡¹-ˆZ+ª¯ch«.’ÇvK7ÝÂlH©®]:›‰ >{]€a‡´ÕvœØÐ_Û®’g•`DJ¬!œcž°ìc“ïëWç<Þéðnø‰/è‘›ãj_½‚‚B¸Ja+† ÃADU âšzª˜u« ‰Ç "iFRd„;dicomscope-3.6.0/DICOMscope/icons/bigseries.gif0000644000265600020320000000026007307374256020447 0ustar tilleaadminGIF89a &‘ÿüÂÀÀÀ!ù, &@”©»#dÍÉ‹ó\{Í A7Zäi¦Pq.Kµß½ô]’ø"ï þbÄ¢Ïc<—Ìž@·ãY¢µººbKZŒåkŠÉ²ùŒÿhÑTc¶\ƱÝņvkú=¤¿'ç·‘5ø‡g8R˜(8hňˆR(ÉU©¤v”Ù¤À¹T;dicomscope-3.6.0/DICOMscope/icons/bigstudy.gif0000644000265600020320000000047107307374256020331 0ustar tilleaadminGIF89a"(³ÿÀÀÀ„‚Ä„ÄÂÄÄÂüþÄüþ„üþüþü!ù,"(@æÈI«½X†Ãêßá$dw lKµ0! ’!†ˆ}ºÚæV‰AoÉl:™Âcî@Ùý'šÍ8Jn¯I¥ô:ÞÑÎè´ý-’¹@L`Ct\lV®Ÿû³lˆƒ‰‰v>%AwE’”e9gœpnšk¦§¨©ª«›o®™|"£ž&rC\6LV%s'ux8{¶*Ç€ÇÅ*ÅÐ3Z7Š00-fZo^à R:¡qß•=¤㢞éJ¯ž¥mñ$öÁôðŸ(sžlª Áƒ4";dicomscope-3.6.0/DICOMscope/icons/check.gif0000644000265600020320000000017407307374256017554 0ustar tilleaadminGIF89a¢ÿ€ÀÀÀÀÀÀ€€€ÿÿÿ!ù,@A(ºÜ %Æ@F Ê}³Ö†eåøp“¥ f ƒÒ §xé<é_¹ÎŠU^šM€†,g5Oa° I¢Í×H;dicomscope-3.6.0/DICOMscope/icons/check32.gif0000644000265600020320000000035207307374256017717 0ustar tilleaadminGIF89a ¢ÿ€ÀÀÀÀÀÀ€€€ÿÿÿ!ù, @¯(ºÜþ”I«¥¡…œY51\[÷]¬•ªDk²<5ÑyíE' 'B‘ŽAÖ h:ŸÐèî±¢,§Šj! M^Ú(ôe„}`¥¼ø3dr=¤ZŒê;+ï±€Y9:‚v@ˆ&uXZ„6^Œ`}z“f•iB*™cAghyœD=F&.—mc!Fis¡°o©J«|Eo¤(º?Ò;9Ñ62Ï//Î+ Ë!ù, @¿@€pH,ÅàÄ\ •N@ÀÚ$„ÍCP¡Cð³è%Od0þ&‰‚JITÂ(îww¸F WNLJ†MPgD&ec†„ˆCŽ# "’QO|mCl~…`®~F¦¶£Bxº  ·b£¢ $}”¯Q!«Bg#¢Î„}BØÄ" ÚozR À¡_°‡…E t% ±ÿE¨…$;dicomscope-3.6.0/DICOMscope/icons/code_unsign.gif0000644000265600020320000000020007307374256020762 0ustar tilleaadminGIF89a ‘ÿÀÀÀÄÂÄ!ù, @Q„©›ŸqvÕ-eõU²Á‰¦$Ìë@ñ•@h­s\{تiM^DšPf+]CKê¹l2o?ÎÎê[„®3©©ê…q‡-R‚L*×ìD;dicomscope-3.6.0/DICOMscope/icons/color.gif0000644000265600020320000000033707307374256017616 0ustar tilleaadminGIF89aÄÿÀÀÀæææÙÙÙÌÌÌ¿¿¿³³³¦¦¦™™™ŒŒŒ€€€sssfffYYYMMM@@@333&&&!ù,@\ Žd9 A…aÇ I¢(ËÂ0¤_£áp<H$BB©X.˜,ÈÉ%͆Óñ|@“xL.9W­Wl6ªÝr»Þj5"•ÌS ]oß^ra"BDvYye&!;dicomscope-3.6.0/DICOMscope/icons/color32.gif0000644000265600020320000000055207307374256017762 0ustar tilleaadminGIF89a ÄÿÀÀÀæææÙÙÙÌÌÌ¿¿¿³³³¦¦¦™™™ŒŒŒ€€€sssfffYYYMMM@@@333&&&!ù, @ç Ždižè¡H‹$p¢ÌÊb/LΠA@Á`8  …dÁÀ4 tŒ†´á¨:Ød ‰x#<_PH<"•Mç :¥Z³Zî|Z±\1í†Ó¡þ€‚ƒ>?ADEGJKM)+./1457PO:mVWY\]_a=c‰fŒi*‘y”|—k™S›pžs„¶·¸¹º%†£e‹hŽ'½ˆ¿F¦Â&vª“{–~uxÍ3­Ð&l±or ¯9šÛX´Þ&Ä@¤ÀI§ÃbÅC¥ÁL¨w-«Î6®ÊÒöÔ•ù×Jd“"‹Û–Zߢh«2«›—]#–;dicomscope-3.6.0/DICOMscope/icons/complete.gif0000644000265600020320000000021607307374256020304 0ustar tilleaadminGIF89a³ÿ$"$™™™ÔØÔ\^\À¼Àtvt´®´ùöù Ÿ LNLono‡†‡äêäÅÅÅlflÀÀÀ!ù,@;ðÉI+¥¬G\° Ä, >XsžJæÔ( s"N¹î|/Â.PˆQ ÄA²p¸@C`³;h¨¾,(;dicomscope-3.6.0/DICOMscope/icons/complete32.gif0000644000265600020320000000121207307374256020446 0ustar tilleaadminGIF89a ÕÿÀÀÀççç÷÷÷÷ÿ÷ïÿïçÿçÞÿÞ­÷µ¥÷­µ÷½s÷„k÷{1ïJÆÿνÿÆŒ÷œ„÷”{÷ŒJïcBïZ9ïRï9ï1ÎÿÖ”÷¥k÷„c÷{ZïsRïk1ïR)ïJ!ïBÖÿÞ¥÷µœ÷­{÷”s÷ŒJïkBïc9ïZï9­÷½„÷œRïsŒ÷¥Þÿç½ÿε÷Æçÿïïÿ÷÷ÿÿ!ù, @ÿÀ€@@‰Æ$rylШtB¤‰çÓÑ @!:¸ÚŽiI9D‹“‡¢ bTq>*‹]D& "a{‡ˆ‹0 x‰d- " 0R.& 2RŠ|—\ -ž{¬‹‰2º½¼½ÃQÂÄ °²# ccSªˆ ]ÅP#'/®)$'¤ÎÀPÐPD)* ä'&t@½UˆdHe–‡ ^–Ç"" 8hÐÂbcÇ ¹Ç#Ià`èÅä1W 0dЗ§‘‹T»†ÂB‡§œ*\A2 ¸ã¦-@\ÁRJ "4ÈêÀEJõÈ4´aÁ¹¾U[qô„‚-Àޫ₉(°IÂ@(BpÑ +XGp0Ak®é•R˜€o2˜Ü¡ó …äNq‰’€‹€+Tx8"ƒ/8¥s‰ÎDC|BaÇ&ƒÀ‘Ý'(℉'Í;dicomscope-3.6.0/DICOMscope/icons/composite.gif0000644000265600020320000000012307307374256020473 0ustar tilleaadminGIF89a€ÿÀÀÀ!ù,@*Œi€àËŽ›³IYÄûÝ~Á&Ž W£§š–˜½.ØÉ[†ëMyq{*;dicomscope-3.6.0/DICOMscope/icons/composite_sign.gif0000644000265600020320000000063307307374256021521 0ustar tilleaadminGIF89a ÕÿÀÀÀ÷ý÷îûíçùçÚöÚÔõÓÐôÏÎôÍÈòÇÆòÅÄÂĻﺷ쭨릧ꥡ韜蚚ç˜ä‹‰ã‡…ãƒ}ázyàwpÞmoÝlfÛcbÚ_VØSU×ROÖLIÕFFÔBAÓ>?Ò;9Ñ62Ï//Î+ Ë!ù, @¸@€pH,ÅñÄ6…Gh“4# A±dzŸÎ"—`p<‘A8V•’¨„QØíHœ,UzCnnkeD&ckK’BŒ# "}_†j}I|©~G¢ƒbw´ ‘…“Ÿ $„’††!§P #Ÿ±z«Ò¾" ÔFɆ ¹ž]¡»²B s%¬ú£¯HA;dicomscope-3.6.0/DICOMscope/icons/composite_unsign.gif0000644000265600020320000000017207307374256022062 0ustar tilleaadminGIF89a ‘ÿÀÀÀÄÂÄ!ù, @K„©›‚MLÕs~Ôò&”æÉˆ£š¶"¤'ñq)y«­®»ù _6Üéhù|€Ý¬öZ1›´f¢«“L'îÑ›(‡ä2¢;dicomscope-3.6.0/DICOMscope/icons/container.gif0000644000265600020320000000013307307374256020454 0ustar tilleaadminGIF89a‘ÿ„‚„ÀÀÀ!ù,@,”)¡° S¡Ú3Û‚Øfª9R¸}À‰¦'~Qã‹G_LœÕHê]íá°;dicomscope-3.6.0/DICOMscope/icons/containerSign.gif0000644000265600020320000000014707307374256021302 0ustar tilleaadminGIF89a‘ÿ„‚„ÀÀÀ!ù,@8”©{Á€poѲ®ìZÉYšv!yVZî »åL[Xmsì3öãTÛœÐ@ÄM|=òÉ(;dicomscope-3.6.0/DICOMscope/icons/container_sign.gif0000644000265600020320000000063507307374256021503 0ustar tilleaadminGIF89a ÕÿÀÀÀ÷ý÷îûíçùçÚöÚÔõÓÐôÏÎôÍÈòÇÆòÅÄÂĻﺷ쭨릧ꥡ韜蚚ç˜ä‹‰ã‡…ツ‚„}ázyàwpÞmoÝlfÛcbÚ_VØSU×ROÖLIÕFFÔBAÓ>?Ò;9Ñ62Ï//Î+ Ë!ù, @º@€pH,D RhA”‡ˆ“6¤ A‘‘ÁP¹lÓÈ”QØíFðwÉ/\:UO|LeD'c„m(lŠ$ #ŽC(Ÿ ¡ŸDjƒªªkElHw´ !|l %LzÈaJ"¨Be$޲H‘lÓ¾# ÖG‘Ð ! ºœ±ÉÈNC s&›««¯HA;dicomscope-3.6.0/DICOMscope/icons/container_unsign.gif0000644000265600020320000000017207307374256022042 0ustar tilleaadminGIF89a ‘ÿÀÀÀÄÂÄ„‚„!ù, @K„©‹Â&p'0{h¼#¬€Ð3IU€¦©ÒqäÛÀ ~ñÍu¥ þôÁ†DÙ†¤JŠf Ý%ÓŠzœ ³çâUo5´‘FMÅr¹;dicomscope-3.6.0/DICOMscope/icons/containsNew.gif0000644000265600020320000000015707307374256020770 0ustar tilleaadminGIF89a ‘ÿ°°°ÿò°ÀÀÀ!ù, @@”©ká瀔®V@€Zçoyb´5šiU'z¡å•_·}Ì#O³C}«£¼2ZˆÄ!u„ ‘Í5Œ©–µÞ"eÕ= ;dicomscope-3.6.0/DICOMscope/icons/containsNew32.gif0000644000265600020320000000033407307374256021132 0ustar tilleaadminGIF89a8‘ÿ«ª«þñ«ÀÀÀ!ù,8@­”©Ëí˜2Z*±Ýz_Àâˆ7¥jÉnFIºgKË3½Džò¢u¸|„(ÑãˆL"# [Ãy3=|ÌWæ£Ò슭Xç‡É²¾¿ëP4§{æÚ*ƒ±B“5Ý£ÌëïÀh?†a÷W%ÀSw†¦8óâ“VVBf¸YØbÉ'¸Â&f¨£iªéed5JY…uÅ&÷—UäZY¦1{Y‹%¹UãÛ›—¸7·§œW;dicomscope-3.6.0/DICOMscope/icons/copy.gif0000644000265600020320000000020207307374256017441 0ustar tilleaadminGIF89a¢ÿüþ„ÀÀÀüþü!ù,@G8ºÜH ˆ½D¼©øB :J…YtIŒ(Ýd¢çB™á\;dicomscope-3.6.0/DICOMscope/icons/cw32.gif0000644000265600020320000000016507307374256017255 0ustar tilleaadminGIF89a €ÿÀÀÀ!ù, @L„©Ëøš\¡FÏ»wú†ZÓ‰â6–æÊ¶nF¶jD'¥ÊÜéøêï ‡? Ž5 ËɲééÔ˜iÈJå\¨lãýˆä²ùS;dicomscope-3.6.0/DICOMscope/icons/date.gif0000644000265600020320000000012207307374256017405 0ustar tilleaadminGIF89a€ÿÀÀÀ!ù,@)Œip¼èœ‚oÒ²Þ»æ‹Uá-Üùaè)Zd£¦/#I¯—”.¾=R;dicomscope-3.6.0/DICOMscope/icons/datetime.gif0000644000265600020320000000012607307374256020270 0ustar tilleaadminGIF89a€ÿÀÀÀ!ù,@-Œià{®-Ee޼ÇËTÜ5!Õyê·­c‰’fÁò’7ÅÛzîÜb‰;dicomscope-3.6.0/DICOMscope/icons/datetime_sign.gif0000644000265600020320000000064007307374256021311 0ustar tilleaadminGIF89a ÕÿÀÀÀ÷ý÷îûíçùçÚöÚÔõÓÐôÏÎôÍÈòÇÆòÅÄÂĻﺷ쭨릧ꥡ韜蚚ç˜ä‹‰ã‡…ãƒ}ázyàwpÞmoÝlfÛcbÚ_VØSU×ROÖLIÕFFÔBAÓ>?Ò;9Ñ62Ï//Î+ Ë!ù, @½@€pH,ÅSR¨œ”Gh“4# AATz›Ë!—`p<‘óøl‚•’¨„QØíݶ~F UN„`mkeD&ck]IM# "‘N|¢DjH¢£~C’­}wµ  knlB  $C}¼…!¨¿ # Ên_BÕÀ" ×F†„ »Ÿ“­èB s%žõýCb! ;dicomscope-3.6.0/DICOMscope/icons/datetime_unsign.gif0000644000265600020320000000017407307374256021656 0ustar tilleaadminGIF89a ‘ÿÀÀÀÄÂÄ!ù, @M„©›Ò怈&0{œ¦ˆcõIËyÁ‰¢ɶ£h"4AHxwÏš/¡ |ÁVAÖ!ŒÝRL]iÔé2Ïeš¡I¬>lÖÆ•~‡É£ù¬(;dicomscope-3.6.0/DICOMscope/icons/date_sign.gif0000644000265600020320000000063107307374256020432 0ustar tilleaadminGIF89a ÕÿÀÀÀ÷ý÷îûíçùçÚöÚÔõÓÐôÏÎôÍÈòÇÆòÅÄÂĻﺷ쭨릧ꥡ韜蚚ç˜ä‹‰ã‡…ãƒ}ázyàwpÞmoÝlfÛcbÚ_VØSU×ROÖLIÕFFÔBAÓ>?Ò;9Ñ62Ï//Î+ Ë!ù, @¶@€pH,ÅÓP)d6Gh“4# AAt"^.1Ààx"ƒçW TJ¢FA§wOø¼>¿,U`M^NJdD&blL’jŒ# "`{¡xDiH¢¢}~l_au´ ‘ £jŸ $Kƒ†]!¨Bd#ŸÉƒÊÓ¾" Õ­L ¹žØk^ q%­øm°HA;dicomscope-3.6.0/DICOMscope/icons/date_unsign.gif0000644000265600020320000000017307307374256020776 0ustar tilleaadminGIF89a ‘ÿÀÀÀÄÂÄ!ù, @L„©›rn`DÕÇWu°1[@–¦&¤êªf”jØñQò⣅²~èzü|ÁP12)o¹ÕÌP£É’Ínñ©âžWdÃ2_ŲÙU;dicomscope-3.6.0/DICOMscope/icons/default.gif0000644000265600020320000000035507307374256020124 0ustar tilleaadminGIF89a ¢ÿÀÀÀ€€ÀÀÀ€€€ÿÿÿÿ!ù, @²ºÜþN”9Å–†P8ý#UHÓI©ôŒ`Áº´d]vW}‘ •"ÒLDÖpBk.`Î(@GH§K&«ûXÙŸö³)ÆZ Øvµ".ÑàµùývÂbîÙ5rÞûÿ€{71<_Q#7#<†pwZ?B ‡ ‘9?•g—6b“žtƒ“c¦m^|$#,JJ§`ƒ“²¬Yvs2¹!Mgo³—MwÃÆ­"ËÌÄÏ{ ;dicomscope-3.6.0/DICOMscope/icons/delete.gif0000644000265600020320000000016507307374256017741 0ustar tilleaadminGIF89a¢ÿÀÀÀÌÌ̦¦¦€€€333!ù,@:ºÜ[¡QÆ(„”çÜVDY˜öhª¦O4UWöî›]ž«Ý¬« ‹&‚•|¡IÆHÚŽM!O—K;dicomscope-3.6.0/DICOMscope/icons/delete32.gif0000644000265600020320000000032607307374256020105 0ustar tilleaadminGIF89a ¢ÿÀÀÀÌÌ̦¦¦€€€333!ù, @›ºÜþ®HŸŒ%)ºC8HDI\V¶ÞWˆcažS#Ýx®ï5#iHD2¡0@–ðE”{•¨TÊ›ŽÖ”Çí"W­a¨XÂn“aæØY†žÁK™éÚoÙ¼~o­Nï€x f|X„{†€_Ab13‡W*.rlt)hqM‘nƒ”JŽjOu¡i—ž§›£ª¦šp®°Š;|¹º ;dicomscope-3.6.0/DICOMscope/icons/down.gif0000644000265600020320000000031407307374256017442 0ustar tilleaadminGIF89aÄÿÀÀÀööõææåÖÖÔÌÌÌÄÃý½½¶µ´¯¯¯¦¥¤˜•”“Œ‹„ƒ€~}|vuugdd__[WWW???... !ù,@I ŽdY^W$ u™ÀUÅ ÊòÂ1ºó@J%"8\<ÔƒPùŸP’¯B­¸œ¢ …a¸%lvrñè2) j)­?C;dicomscope-3.6.0/DICOMscope/icons/down32.gif0000644000265600020320000000073607307374256017617 0ustar tilleaadminGIF89a ÕÿÀÀÀôôðððïïîîíìæåäãÛÛÚÛÚ×××ÖÑÐÍÏÏÏÁÀ¿º¹¹·²²³³¯­­¬«ª£©§¢§¦¥œ›šŠŒŒ‹‰‡‡‚~‚~}||zwsronjhdcgfe`\\^]\XWWSRPPPNOLLHHGHGFFFFCA>B?????663//.&&&!ù, @û@€pH,H!ì¥2u8›N”ª¦P¦ÔÊKa,PC`É× &OƦÒÙÔƒËé3E†¦Ô­UJqjwÜë÷íuÉç*М®Œ]oð;-;dicomscope-3.6.0/DICOMscope/icons/edit.gif0000644000265600020320000000017207307374256017422 0ustar tilleaadminGIF89a¢ÿÀÀÀ÷õõéééçååÙÙÙÁÁÁ!ù,@?º`ÆË2$¹X„§ý\‡]ÚÆHªž5Rè¾e(’&ä4Ej+ªOïǃyŽ­á,“[ÒrÅAC\R!·)4;dicomscope-3.6.0/DICOMscope/icons/edit32.gif0000644000265600020320000000036007307374256017566 0ustar tilleaadminGIF89a ¢ÿÀÀÀ÷õõéééçååÙÙÙÁÁÁ!ù, @µºÜþP™B*ÓbZyY5 g¨4™(º®­[´ÄÎFŽWlØ«1BÃ$aöê`'UÓ ºÑŒÔM¥‰Ô.±‘®ØT?Ò;9Ñ62Ï//Î+ Ë‚!ù, @É@€pH,Fà$ œå3àmƒf„!(ŠRh@‰¿Äƒã‰ šÒ“œé •’¨„Qøý`(‚ƒeMHEXuOsLB…O D&hCJOP˜# "Nœ‘„¯’Co‡¸¹ˆIRF  ¾‚i­ $DžGÀ!¶M #ΞsCcDà" âK Õi ÈòH€ a°§ÄQºt (Ð I;dicomscope-3.6.0/DICOMscope/icons/e_unsign.gif0000644000265600020320000000017307307374256020305 0ustar tilleaadminGIF89a ‘ÿÀÀÀÄÂÄ‚!ù, @L„©«²\ Œ"yFVu# "zÁ‰¢ÉÀ¶,GÆHj^µ>ò„_ ‡ÄCPs4¤–Ûªu[4µ Oš£Y9=£® —É¢Ù\;dicomscope-3.6.0/DICOMscope/icons/fliphorizontally.gif0000644000265600020320000000016607307374256022111 0ustar tilleaadminGIF89a¢ÿÀÀÀ)))111”””½½½ÞÞÞ!ù,@;ºpÌå„ðT8£0²œ"Z%ŽŒWÂÔ-‚d,§˜ÃKšäšïKÑꀉí@,‰ À§l,„7‡c$;dicomscope-3.6.0/DICOMscope/icons/fliphorizontally32.gif0000644000265600020320000000036307307374256022255 0ustar tilleaadminGIF89a ¢ÿÀÀÀ111kkk”””½½½ÞÞÞ!ù, @¸ºÜþP•bb3“²2Ž÷‘äDß! …Å|nìÀ2`ƒ€Õë9†Ž'0è)08‚QAÛèXµ¨´ÑœFª5ŽNÐòœ± @¥†âô'Í>ˆ6-ˆÌü]ÌåraØ»úVu_„…†X‡‰Q€Tv~|Eƒ 7•|r*t‹ x–';!$%')c©°lµ¶npa©{‰f*"9c—`(Åœ ¾•’1Œ†Ò…Ԋׅ ;dicomscope-3.6.0/DICOMscope/icons/forw32a.gif0000644000265600020320000000015407307374256017760 0ustar tilleaadminGIF89a €ÿÀÀÀ!ù, @C„©ËãkÈ‹/˳úÜx$¦êj¢,rFiLn´kŸïÎ÷þTx´Õ :jJ\¢¹T@K•ã¬ÆÊ·Ün;dicomscope-3.6.0/DICOMscope/icons/forwa.gif0000644000265600020320000000031407307374256017611 0ustar tilleaadminGIF89aÄÿÀÀÀêêéããßÞÞÝÅÄľ½ºµµ±ª©©ŸŸž““Œ‹‹Š‡†……~~~vvuihhfccWWWOOOGGG::9---%%% !ù,@I ŽdIjP ‡Óš©]Õ•Åæ¨íxîÿ"ÍC@@8&˜,‚H0(J t*ãMQ…ÆÄÖ+¡+Ã"bé#DÅ‚1¹É$ ¨™JÏ…;dicomscope-3.6.0/DICOMscope/icons/hc.gif0000644000265600020320000000022707307374256017070 0ustar tilleaadminGIF89a³ÿÀÀÀïïïßßßÏÏÏ¿¿¿ŸŸŸppp```PPP@@@000 !ù,@DÈI«$Ìheˆ²@0L‚0¨®ìõIÀ0âN±‚b·À`Ѓ3Œ…2pÉl ƒˆ3“ÀáV %ŽpL‰;dicomscope-3.6.0/DICOMscope/icons/hc32.gif0000644000265600020320000000037407307374256017240 0ustar tilleaadminGIF89a ³ÿÀÀÀïïïßßß¿¿¿¯¯¯ŸŸŸppp```PPP@@@000 !ù, @©ÈI«½wœqϱ²,IO2¬ìð<úatmßxÈ×;9¥À0QxŸÄåàL /¡nJ­ZuÈŠ`<„¥—aA-fZ@ðh\èŠJ–²•// NW…†‡ˆ‰Š‹4{} eo=r;y€FŽJ. n“©r£˜Irœnp|š’¡ )z®q‚^¸…+RŒÊËÌ9;dicomscope-3.6.0/DICOMscope/icons/header.gif0000644000265600020320000000021307307374256017721 0ustar tilleaadminGIF89a¢ÿ„‚„BDÄÂÄÀÀÀüþü!ù,@PHÚî@” Æœ¡@âAv×x% –Æy 2§Dµ˜Û vu™M—*–+Úãá"EÊÝÅ7Ò5 Ôœðšêv©ôÝ•xh´I‘Z:;dicomscope-3.6.0/DICOMscope/icons/image.gif0000644000265600020320000000024507307374256017560 0ustar tilleaadminGIF89a³ÿ„‚„ÄÂÄDBD¤¢„üúôdb„dbD¤¢¤üþü÷´wpÅ,@ZÈI+=È3B ÒAu8eðIz I2 i "p¼…‘Èõ"ÆRµ$.08Ì L"0U@…àXN:ÏÁ3pR4ªaýÓN­5áý_[WD;dicomscope-3.6.0/DICOMscope/icons/imageInvalidSignature.gif0000644000265600020320000000070607307374256022753 0ustar tilleaadminGIF89aÕÿÀÀÀ)))111999BBBJJJRRRZZZccckkkssksssss{{{{{{„„„„ŒŒŒ”””””œœœœœœ¥¥¥¥­­­µµµ½½½ÆÆÆÎÎÎÖÖÖÞÞÞçççïïïÿÿÿÿ!ù,@ã@€`(0Ž ÃP8Ƨ³h ’VÛ„'›°0*oË£&€0Ñx8hºÑ`ŸPÆä’ÑL²Zhf\B ‹ ]O  W ~‘P dƒ$hj !€¨‚[…ˆ ±\’C‡{ µ Š›‹É! U!›Õ rW Bµ“ VX#[]QŠ{Yh²ój‰ÈŽ^?Z…&ôÑ€Ÿ™~ª0e!z¨ì1ÐàA¨«…';dicomscope-3.6.0/DICOMscope/icons/imageNoSignature.gif0000644000265600020320000000071207307374256021736 0ustar tilleaadminGIF89aÕÿÀÀÀ)))111999BBBJJJRRRZZZccckkkssksssss{{{{{{„„„„ŒŒŒ”””””œœœœœœ¥¥¥¥­­­µµµ½½½ÆÆÆÎÎÎÖÖÖÞÞÞçççïïï!ù,@ç@€`(0Ž ÃP8Ƨ³h ™MÅÑ|„‚Éf,™LËî@˜h<Š4Ýhj(crÉh& y_C €Ž ‡^_  W ˆ   Ÿ !`®€ i”`‹| ‡Ÿ ŽŸ! U!·Ã sW ÓÊŸ  V¿ëà |¢ ׆ pAD^%`’k‚ 0L` Ì ,,üUq  8€€@G'A;dicomscope-3.6.0/DICOMscope/icons/imageUntrustedSignature.gif0000644000265600020320000000071507307374256023362 0ustar tilleaadminGIF89aÕÿÀÀÀ)))111999JJJRRRZZZccckkkssksssss{{{{{{„„„„ŒŒŒ”””””œœœœœœ¥¥¥¥­­­µµµ½½½ÆÆÆÎÎÎÖÖÖÞÞÞçççïïïÿÿ€€!ù,@ê@€`(,Ž ÃP8€…‡£`  `û„%šp *‹Ff‘ H2ͤó™j2‹f7*±`2d#hk^  zO W€•P   f¡B  Ždg‡e‰B·fhiLCŒ} ”¡lŽŸÏ U ŸÛ tW ÖÌÛ  V Á¯ Ž}¤ZÊ «ÀÀ !0üÊ'PÀ@Eþd¸LMš&¼°l¨PÑа2[ˆ`à À–“(…;dicomscope-3.6.0/DICOMscope/icons/imageValidSignature.gif0000644000265600020320000000070707307374256022425 0ustar tilleaadminGIF89aÕÿÀÀÀ)))111999JJJRRRZZZccckkkssksssss{{{{„„„ŒŒŒ”””””œœœœœœ¥¥¥¥­­­µµµ½½½ÆÆÆÎÎÎÖÖÖÞÞÞççç¢Ów!ù,@ä@€`(,Ž ÃP8€Eg£` —Ì¤Ñ „B ¡ ’É€Îh¨û"ŽFÂñL3˜ºˆT.j`h"PC  { W–˜  ‡gk ²±jO—Ci"D½¾Œ~ •£ £ U £ uW ×Î{!˜ V ï_hQ~0”ÊpAƒ]‰p„hB#„m†D$ b/1X4¤‘ÅĘ… àX¬W;dicomscope-3.6.0/DICOMscope/icons/image_sign.gif0000644000265600020320000000074707307374256020607 0ustar tilleaadminGIF89a ÕÿÀÀÀüúô÷ý÷îûíçùçÚöÚÔõÓÐôÏÎôÍÈòÇÆòÅÄÂĻﺷ쭨릧ꥤ¢¤¤¢„¡éŸœèššç˜ä‹‰ã‡…ツ‚„}ázyàwpÞmoÝlfÛcdb„dbDbÚ_VØSU×ROÖLIÕFFÔBDBDAÓ>?Ò;9Ñ62Ï//Î+ Ë!ù, @ÿ@—pH,ºÈ¤r ‚"ŸÀç” d„ —à )ŠSX$‡Táu&ÍJACD¢šDkæ³ÏdðH,), ˆˆgD 'H''ELK"_DWY. ~BrJ-px'Y}~®M¦* )ªFGJ‘n$w“¾ S’“J xEB k¿¼‰Û&!Ó.W âš‘ªH "+HDTËU'Ê.(ÆHäŒP¡—(.È}X¨¬Ê‘!ª£"ÝðYè*:LÀ0¢Dp¼¡yåç€`Iba_."¢d€i΂;dicomscope-3.6.0/DICOMscope/icons/image_unsign.gif0000644000265600020320000000034507307374256021144 0ustar tilleaadminGIF89a ³ÿÀÀÀüúôÄÂĤ¢¤¤¢„„‚„db„dbDDBD!ù, @’0ÉIk8ë æF` EPHÇ… ÜšM¤tN ”±-ÞQfaø…Âî&(/ÊA *­èN–(¤‡`ÀæÊ%)`PܹEuUæÉ•nÒ†Ãê~[„ÁL}ì£''[U'Of^$r%q|gI ! ‚šq%“‰S?šb‡]0cAluvOl°;dicomscope-3.6.0/DICOMscope/icons/info.gif0000644000265600020320000000012207307374256017423 0ustar tilleaadminGIF89a€ÿÀÀÀ!ù,@)„iÈÞVTï°*q¾Úûe¡˜pe*@÷aàúÆìѪ4ÚúfηZ;dicomscope-3.6.0/DICOMscope/icons/info32.gif0000644000265600020320000000022707307374256017576 0ustar tilleaadminGIF89a €ÿÀÀÀ!ù, @n„©»áØQV[žÔáIàx)]2¢%pªžûH,ÙÊ&ÚsÊñÖºÖ€½ØÍXÓ_†dÆ„âœJªR³¹þ¦Q$óI»M¢7ŒŠ‡Dq:d~c_ñ玡5B¿ëh)…È×cD±È˜Î¦¢Ûz7h6˜ô‰EÓJe½PÃb”± Ëç rL$wx¿kväò‘CÕ(Xã±÷¥¶å¦¸hÂÕõxXÕaWfy™¨¹i…¹'$ù€&ÊØp¸¢ÑDÄ B—´ô6{›P;dicomscope-3.6.0/DICOMscope/icons/layer.gif0000644000265600020320000000014007307374256017604 0ustar tilleaadminGIF89a‘ÿÀÀÀÚÚÚ!ù,@1„i¢ á cê¹*²ÖòÖF%Öx<Á‰FŠÎ¶ Æ‚Ý–RoûšÓ­t¨T°·);dicomscope-3.6.0/DICOMscope/icons/layer32.gif0000644000265600020320000000026507307374256017761 0ustar tilleaadminGIF89a ‘ÿÀÀÀîîîÚÚÚ!ù, @†„©›3¬œÆ1 ‘¤`××8âH’Ó‡f¦v`ë¹§ Áçù7³•†¤V*Xº¼T1â‘9èE9¢uÊ£.ŸAiPÆq×ë§\4[¶Ñ•$·•^ù»9Óµõõ>›â''Õ‡f§U#°ÈØÈˆ8&øGbx¨⨹˜õ†©a™öIZ;dicomscope-3.6.0/DICOMscope/icons/loadDB.gif0000644000265600020320000000017007307374256017620 0ustar tilleaadminGIF89a¢ÿ€€€€ÀÀÀ€€€ÀÀÀ!ù,@=hºÜ ¥€IhP–AH¼˜à#uÝçdÙ(…š ¨ŽAÝ¥‚ß5»ç¶O$õb°Fðè*šD. "Ð"Õ®Œ;dicomscope-3.6.0/DICOMscope/icons/loadDB32.gif0000644000265600020320000000033707307374256017772 0ustar tilleaadminGIF89a ¢ÿ€€€€€€ÀÀÀ€€€ÀÀÀ!ù, @¤xºÜþÐCͬ8Ûz»¨e@¤t•8¦æ1F!Ïr–Îa꺙"QÀ§k¹&AGÙi6Ð(#è¬ve+ˆ 0 ¼“µÄÅ€GEׇç#mÙfZ؈êÁÒ¼~ÿ@µCy*43i}w†k)rs‹!ƒOSˆm8cd™  E˜)œNIŠ¥“€@ˆ_e­ªS‚+·X­®Q§c|Q ;dicomscope-3.6.0/DICOMscope/icons/loadIMAG.gif0000644000265600020320000000025107307374256020050 0ustar tilleaadminGIF89a³ÿ @@@ÀÀÀRRRTTTŸŸŸ£££³³³ÏÏÏäääÿÿÿ!ù,@V€Ik%aŒÃ»×A60di‚âAD¢0ÂjfÍÌ£]â*Ã"¯oÕR(œn7Ñ–·¦u جvÈxy2©¦÷ë ÅbÂ`‚`#xw;dicomscope-3.6.0/DICOMscope/icons/loadPS.gif0000644000265600020320000000021207307374256017652 0ustar tilleaadminGIF89a¢ÿ€€€ÀÀÀ€€€ÀÀÀ!ù,@O´5þ ”BB˜8 kX ppq:m ,Ž2X¨GÞ85¦’zSª †Eq0­3‚ÅŽ£še:Å1e,±"IñHÛ¨•³õñ†¾W(„J;dicomscope-3.6.0/DICOMscope/icons/lut.gif0000644000265600020320000000010307307374256017273 0ustar tilleaadminGIF89a€ÿÀÀÀ!ù,@„™êÛ\|29_®¼ûÃlÊÅ‘•yŠÚÇ;dicomscope-3.6.0/DICOMscope/icons/lut32.gif0000644000265600020320000000015007307374256017442 0ustar tilleaadminGIF89a €ÿÀÀÀ!ù, @?„©ËšDoÚ¯ÞzqM%–æ‰2^†’éá¾F,wl=ãúί_é“ý^C!-Ò‰·Ú’ÉëD¥Ñæôú*;dicomscope-3.6.0/DICOMscope/icons/modcode.gif0000644000265600020320000000010607307374256020104 0ustar tilleaadminGIF89a€ÿÀÀÀ!ù,@Œ©ÀŠ £;pZ3Àíú?iÝ"ŽäöU©É¡ U;dicomscope-3.6.0/DICOMscope/icons/modecode.gif0000644000265600020320000000020307307374256020247 0ustar tilleaadminGIF89a¢ÿÀÀÀÀÀÀ€€€@@@!ù,@HªÕÞ«ŒIg 8”8‰'¶-À•)UÔ5®ì`¦OŽjíŒ@ø?„úx”K*™,g Zq”T@eh1o¼H;dicomscope-3.6.0/DICOMscope/icons/new.gif0000644000265600020320000000015707307374256017271 0ustar tilleaadminGIF89a ‘ÿÿÖÀÀÀ!ù, @@”©ká瀔®V@€Zçoyb´5šiU'z¡å•_·}Ì#O³C}«£¼2ZˆÄ!u„ ‘Í5Œ©–µÞ"eÕ= ;dicomscope-3.6.0/DICOMscope/icons/newcode.gif0000644000265600020320000000012207307374256020114 0ustar tilleaadminGIF89a€ÿÀÀÀ!ù,@%„i‘Áø@”³*Øæ²ËÜ(ΨeäUz¤=Õèµí ˆwz;Z;dicomscope-3.6.0/DICOMscope/icons/newsop.gif0000644000265600020320000000014107307374256020004 0ustar tilleaadminGIF89a‘ÿ‚ÀÀÀüþü!ù,@2”y01ïHìY6) QR†™RYæh0Ýù‰®Çå….¦j Ç"êíñ5,ÚìV‹) ;dicomscope-3.6.0/DICOMscope/icons/newsrsop.gif0000644000265600020320000000016007307374256020352 0ustar tilleaadminGIF89a‘ÿ‚ÀÀÀüþü!ù,@3”y01ïHìY6) QR†™RYæh0Ýù‰®Çå….¦j Ç"*Çóø–Nmv«Å; #šPî¶ËÕ ;dicomscope-3.6.0/DICOMscope/icons/newsrsop1.gif0000644000265600020320000000014107307374256020432 0ustar tilleaadminGIF89a‘ÿ‚ÀÀÀüþü!ù,@2”y01ïHìY6) QR†™RYæh0Ýù‰®Çå….¦j Ç"êíñ5,ÚìV‹) ;dicomscope-3.6.0/DICOMscope/icons/num.gif0000644000265600020320000000011107307374256017265 0ustar tilleaadminGIF89a€ÿÀÀÀ!ù,@ Œ‰pÜ £œÔæ°MúW…b•×ò¡ž®Ûu~íH;dicomscope-3.6.0/DICOMscope/icons/num_sign.gif0000644000265600020320000000061707307374256020320 0ustar tilleaadminGIF89a ÕÿÀÀÀ÷ý÷îûíçùçÚöÚÔõÓÐôÏÎôÍÈòÇÆòÅÄÂĻﺷ쭨릧ꥡ韜蚚ç˜ä‹‰ã‡…ãƒ}ázyàwpÞmoÝlfÛcbÚ_VØSU×ROÖLIÕFFÔBAÓ>?Ò;9Ñ62Ï//Î+ Ë!ù, @¬@€pH,ÇÓP¹¡MBxÐŒ0r[Ô Ž'2àn•’¨„Q¸Ýæø±`áL…'%S‚'D&^D|MLƒ# "‡rFe™ F¡Do¨  ˆxŒy_˜ $MŒ‹¯!ž~ #µ¾Ê¿Ç" Ézy{½ ®—¦E k%–çH¥HA;dicomscope-3.6.0/DICOMscope/icons/num_unsign.gif0000644000265600020320000000015507307374256020660 0ustar tilleaadminGIF89a ‘ÿÀÀÀÄÂÄ!ù, @>„©»rþT`“YTåÝ ør"'8i@G–°) Â/FöçÈ+§ZÒ,X¨ˆqUKœ|­$ÂTú §ºªQ;dicomscope-3.6.0/DICOMscope/icons/offis.gif0000644000265600020320000000140207307374256017600 0ustar tilleaadminGIF89aF2³ÿÀÀÀ”””œœœ¥¥œ„„œssœZZœBBœ))œœœ!ù,F2@ÿ€ ª½òê$ÝV7@r’w Ù*~仲æ)ªgkã1Oê Û(WÛ {Ç_1˜2Š„á P­¡šè&2‚ë5Ð>„êaP"@‡1| l:A«h«W!8c 0ais%€loM’“”‡••˜™›”Nž’‘+@LIaD.£ª«§©J®>¥¨´°¸¶B†µK¦¿¹¯»ÁÄTxzQ"~wQ]fƒd]¢C‰k%vUQy()]:½8ìfðÙSïÜäo÷¾¤ÇÄÃèäfD—^] <øO83bÝ*F‰Au .*‹]D& "a{‡ˆ‹0 x‰d- " 0R.& 2RŠ|—\ -ž{¬‹‰2º½¼½ÃQÂÄ °²# ccSªˆ ]ÅP#'/®)$'¤ÎÀPÐPD)* ä'&t@½UˆdHe–‡ ^–Ç"" 8hÐÂbcÇ ¹Ç#Ià`èÅä1W 0dЗ§‘‹T»†ÂB‡§œ*\A2 ¸ã¦-@\ÁRJ "4ÈêÀEJõÈ4´aÁ¹¾U[qô„‚-Àޫ₉(°IÂ@(BpÑ +XGp0Ak®é•R˜€o2˜Ü¡ó …äNq‰’€‹€+Tx8"ƒ/8¥s‰ÎDC|BaÇ&ƒÀ‘Ý'(℉'Í;dicomscope-3.6.0/DICOMscope/icons/oktext.gif0000644000265600020320000000011207307374256020005 0ustar tilleaadminGIF89a€ÿÀÀÀ!ù,@!Œy€ ¯ ”±Ú«Ø š' RØH–›‡f7”Sµ]gÖ;dicomscope-3.6.0/DICOMscope/icons/open.gif0000644000265600020320000000017407307374256017440 0ustar tilleaadminGIF89a¢ÿÀÀÀÿÿ„‚®­X!ù,@AºÜ $Ä)»X(Àøàa a2Z™ì¸@RÌ4­z!è’üåR’“o¦’7E†e" 4;­¢—Œª¨‡I;dicomscope-3.6.0/DICOMscope/icons/openIMAG.gif0000644000265600020320000000016707307374256020100 0ustar tilleaadminGIF89a¢ÿÀÀÀÿÿ8ÿÿ®­X„‚XXX!ù,@<ºÜ`Ä)»ÍXhˆÿÞP`Œf-Ff›Mø‰@aßøHîäùü Æô£P| ¬Å,ÆdZÒñ. ;dicomscope-3.6.0/DICOMscope/icons/openIMAG32.gif0000644000265600020320000000032407307374256020240 0ustar tilleaadminGIF89a ¢ÿÀÀÀÿÿ8ÿÿ®­X„‚XXX!ù, @™ºÜþ0ÊeªQU¥ù(TR6Dª®,1 E1Í€eAU(ºíû%CHSiU¯˜"Æl:ŸJšt:%5¬V °ºµ?_mÐãù™ÍbQñhLÊ(vö¦Úïø¼>òÛ§X~€7p6T}5:<g‰8‚a"dŠA“˜'c”jžZ_kr+niD(£¤t„§©ªQ„¢®¥P¶Pƒw ;dicomscope-3.6.0/DICOMscope/icons/openSP.gif0000644000265600020320000000020107307374256017672 0ustar tilleaadminGIF89a¢ÀÀÀÿÿ8ÿÿ®­X„‚XXX!ù,@FfÐÛ0š¨­LÂÛ`“`dIRÎÃUêmÜvS%.x®Œfé:Š`‡Ft]X¿ÈT 23›æ@0NbAkÏçmOÃð0;dicomscope-3.6.0/DICOMscope/icons/openSP32.gif0000644000265600020320000000035207307374256020046 0ustar tilleaadminGIF89a ¢ÿÀÀÀÿÿ8ÿÿ®­X„‚XXX!ù, @¯¶ ÎËÉIg¤ðV Ÿ‚Š!0š‚¶-àB¼p,ÃPkf(×ç€#¨+î6žSË0kÂj7ÇmJ­Z£H—ín³•–ëëx-¿‹²´#Õì”q~»œM(®ÌÄÏôg‚=:ƒ_\b‡Ð¤É¯,gé 0Ú€·¥"qlªÆÖH´±O‘Nwi äPg©‹#•pö•ÄBOŒÛ_zº‘€¨½ Jèß9%(àäh1¢Éó2A7ÜPH0ŸÛU”¨FD¸ˆ'|@{ ´ FÃ4¦iÝçÚ7½ÂG(e/}ÑÇxà€ù˜2'à€9–A»A _FpæHÇ:ÚñŽ (—)~â4It£'±ÊËì°!¢›)’OÖ%Cõd ;dicomscope-3.6.0/DICOMscope/icons/paintCIRC.gif0000644000265600020320000000020507307374256020246 0ustar tilleaadminGIF89a³ÿ  888FFF\\\rrrsssŒŒŒ¹¹¹ÇÇÇßßßóóóÀÀÀ!ù,@2ðÉIk¬K'ޤ¸lSŒ@"9RÎtÍ€Â@# èP 8PœFÀ”Ùž•;dicomscope-3.6.0/DICOMscope/icons/paintCIRC32.gif0000644000265600020320000000034407307374256020417 0ustar tilleaadminGIF89a ³ÿ  888FFF\\\rrrsssŒŒŒ¹¹¹ÇÇÇßßßóóóÀÀÀ!ù, @‘ðÉI«½Ø6€ÿÒd(¤dë¾p\@á`NòÓž‚‚ÁPè†QoÉl:—À q›8¢'0H €@¶è$0 @`Ñ\áÀ~Úïø¼~qÃåtN?ACEGI=egik2&(*,1]_ac1468:<2QSUWY[K!J|±²³´/;dicomscope-3.6.0/DICOMscope/icons/paintELIP.gif0000644000265600020320000000010307307374256020254 0ustar tilleaadminGIF89a€ÿÀÀÀ!ù,@Œi Ê £œéA»€Þ›úr"†]GYêj;dicomscope-3.6.0/DICOMscope/icons/paintELIP32.gif0000644000265600020320000000042607307374256020431 0ustar tilleaadminGIF89a Äÿ """(((666;;;<< =E {rnlqQ  pdTcˆr]_‘|›œr "ž !œC"¢s±DsH" ¿À VŠŒV†ÆV»YšHÄdÈVÍQ“•—^`DÔsÖžáeA;dicomscope-3.6.0/DICOMscope/icons/paintRECT.gif0000644000265600020320000000010607307374256020263 0ustar tilleaadminGIF89a€ÿÀÀÀ!ù,@Œy È ¢œ¯Ù‹kÓZu †bð9æÅeÅŽnR;dicomscope-3.6.0/DICOMscope/icons/paintRECT32.gif0000644000265600020320000000015407307374256020433 0ustar tilleaadminGIF89a €ÿÀÀÀ!ù, @CŒ©Ëà£| °{Þ¼{®}H¨b`žêʶIúÁ†ÜÑ4h-Óλþ ‡@ž1RaÙrª¥’ù‚Šœ«åñHÌj·ÜK;dicomscope-3.6.0/DICOMscope/icons/paintTEXT.gif0000644000265600020320000000016307307374256020315 0ustar tilleaadminGIF89a¢ÿÀÀÀBBBcccœœœ½½½ÞÞÞ!ù,@8ºÜJP¦9%Ç»ÿ €QBw-Ø$¥¾p¬”äwœ…0Ðù A@ûb(:lš²¨";dicomscope-3.6.0/DICOMscope/icons/paintTEXT32.gif0000644000265600020320000000034607307374256020465 0ustar tilleaadminGIF89a ¢ÿÀÀÀBBBcccœœœ½½½ÞÞÞ!ù, @«ºÜþ0Ê L8ˆ3T9W \‚BÇ ûQÀñìR8u¦ÌWæ‹`HDÍx j“:ŸÐ¨4b4¡Jgá‹^:•Kæè˜úÇØí„úP°¤ „ámÊïûÿ€‚ƒ CW]RF\HPhY.>r†=C‘m &œˆ(`d4W;D*%‰ Kt’ £°'l,v‡ $)‹ M¢( „ÈÉÊ ;dicomscope-3.6.0/DICOMscope/icons/pipette.gif0000644000265600020320000000013007307374256020141 0ustar tilleaadminGIF89a‘ÿÀÀÀXXX!ù,@)„›÷štB¬ÝÜ(T+eL"NÏÈ¥‹•‘W…’¼•-„›¹®©éQ;dicomscope-3.6.0/DICOMscope/icons/pipette32.GIF0000644000265600020320000000021007307374256020145 0ustar tilleaadminGIF89a ‘ÿÀÀÀXXX!ù, @Y„©Ë}ƒ˜T— Ò8ƒûÝH‘X>`…bœÙ¦òL׊TY6ľ©¯ñ€1Ñöø —̦³™D–¼\qˆ³ K’¸5¢8a×ø*Þ ±jjÛZÏäÏú²;dicomscope-3.6.0/DICOMscope/icons/pLUT.gif0000644000265600020320000000010407307374256017314 0ustar tilleaadminGIF89a€ÿÀÀÀ!ù,@„™k­‹´Ú¹ u»û¿a"„Œv•È&;dicomscope-3.6.0/DICOMscope/icons/pLUT32.gif0000644000265600020320000000015707307374256017471 0ustar tilleaadminGIF89a €ÿÀÀÀ!ù, @F„©Ëíbp²Î|¼ûmu^f¦êʶ I±f!³Ö8Š÷þ ‡°’é–ƒ1œbåÅ„ò0%Q+ºšú´Ã®÷ (;dicomscope-3.6.0/DICOMscope/icons/pname.gif0000644000265600020320000000012207307374256017570 0ustar tilleaadminGIF89a€ÿÀÀÀ!ù,@)Œ‰À¾ÚSFVšfjC=Ü2ehŠå]vŒ‘LªöY¢«¿'R;dicomscope-3.6.0/DICOMscope/icons/pname_sign.gif0000644000265600020320000000063207307374256020616 0ustar tilleaadminGIF89a ÕÿÀÀÀ÷ý÷îûíçùçÚöÚÔõÓÐôÏÎôÍÈòÇÆòÅÄÂĻﺷ쭨릧ꥡ韜蚚ç˜ä‹‰ã‡…ãƒ}ázyàwpÞmoÝlfÛcbÚ_VØSU×ROÖLIÕFFÔBAÓ>?Ò;9Ñ62Ï//Î+ Ë!ù, @·@€pH,Ç“òTd ŽÐ&!7.ïJä±`áP…xNLibD&`h^C‰# "€œjƒjEgz€§{C© _t² ®w¸E› $D¹vB!¥O #¾¨kyCм" ÒÆC ·šv‚ÓF p%™ªž¨H­HA;dicomscope-3.6.0/DICOMscope/icons/pname_unsign.gif0000644000265600020320000000017407307374256021162 0ustar tilleaadminGIF89a ‘ÿÀÀÀÄÂÄ!ù, @M„©»â’` Œ¢'OFVõëhU@–¥‚¥Ì©´ׄ—WE†ÂìÿJÅ€(×PfJ¶šãì0Ã4&¹âÆF[øD# "HXaàI£MœÜÀ0“†Ë#H$9ÒDN¢=z2ÁуH'V ,Q¦ ¦*sì¬aàAÅ‹:Xœ1ä ¨Bš¨¬È!PÀ0\héŽ$n£ ;dicomscope-3.6.0/DICOMscope/icons/print1.gif0000644000265600020320000000201507307374256017710 0ustar tilleaadminGIF89a÷ÿÀÀÀÿýÿýýýûöûõöõõõõóòóòóòòñòíìíëëëæææåáåäáäãäããáãâãââÞâßÝßÜÚÜÚÛÚÚØÚÖÕÖÕÒÕÔÑÔÓÔÓÓÒÓÓÐÓÓÏÓÒÏÒÐÌÐÎËÎÍËÍÌÊÌËÉËËÈËÊÈÊÊÇÊÈÆÈÇÄÇÆÄÆÅÇÅÅÆÅÅÃÅÄÂÄÃÅÃÁÀÁ¿À¿¾¼¾¼º¼»¼»»¸»¸º¸¶µ¶¶²¶³´³³³³²´²²³²²°²²¯²±±±±°±±¯±°­°¯®¯¯­¯­ª­«««ªªª©ª©©©©¨©¨¨¨¨§©§¥§¥¥¦¥¥¥¥¤¦¤¤¥¤¢¤¢¢¢¢¡£¡¡ ¡¡Ÿ¡ £  ¢ ŸœŸž¡žœžœœœ›››œ››››™œ™™š™™™™˜—˜•–•“‘“’“’‘“‘‘’‘ЋЉ‹‰‰Š‰‡ˆ‡…ƒ…„~~€~|}|pqpnondfdUXUTTTSRSPTPPQPKMKKLKGHGDBDAAAA@A<=<989777686555444343111///-,-++++*+*+****(*(((('(''''%$%$%$$#$#$##"#!!! !ù,@êå “'ŸHyÀ=ˆqbÊ%`º`ª2ÇŽÀY¸A‚Ä OmâäfE¨€áBHw$Ù(Ð €,µàƒO0̤á2Å$IŽ4‘“hžLkxPñâ†'F ¹ª&*<£È˜€Â„Û êŒáY†B8jÔ áÑ%p 󠀈ƒ Ô¦OžNbHØÐD‹4h¤„ç–KZÀ…%[¼±a)N¨†ùˆÐ DŠò´ˆŽ# ØTJÄÈ‘£I•*EúDi†À€;dicomscope-3.6.0/DICOMscope/icons/print32.gif0000644000265600020320000000105407307374256017776 0ustar tilleaadminGIF89a ÄÿÀÀÀ)))111999BBBRRRZZZccckkk„„„œœœ¥¥¥­­­µµµ½½½ÆÆÆÎÎÎçççïïï÷÷÷¥­¥Œ”Œœ¥œ„Œ„RZRÎÆÎÖÎÖÞÖÞ!ù, @ÿ Ždiž(Ùa0yp v4¨æ–UQ@OgØ‘%À!880D)‚õ~Àâ‘“ (6ƒCÊT‰`Ž´:Ýhd‰1ƒ± †~¿À  q#V>Att   ržŸ ¡c-’’ ‹ ž °¶·¶‹%tz gmÉÊÇ J ˜$0ØFG   K´"„îÀñô¾ 'Ú½“¯`¼›PŰ¡C9\˜H±â…•B=`Qɧ :ðÈ ,© XðI–$P@³f>¼ôÔáB'b‚ uÐÉÁ£ù $iÍ'˜¸ôA nÝ$@Ø Aèƒ50p À ¤Œ´§­[·ú)eS+XAtt   ržŸ ¡c-’’ ‹ ž °¶·¶‹%tz gmÉÊÇ J ˜$0ØFG   K´"„îÀñô¾ 'Ú½“¯`¼›PŰ¡C9\˜H±â…•B=`Qɧ :ðÈ ,© XðI–$P@³f>¼ôÔáB'b‚ uÐÉÁ£ù $iÍ'˜¸ôA nÝ$@Ø Aèƒ50p À ¤Œ´§­[·ú)eS+X<!ù,@ÉÀNÆÁv(Ír¹×%GÑù!qâÂ$ A2='_ ¦€Þ=Õ‰v’ï€ ôñ˜Ý B%1#/ˆ# 0:!+;55# #3o'§,GD- ;´-Cx+.¾.#(Z 3| ;   ×; ':"<Ù;´; 8%â9 & &/ÄĘPâ4X @Âa;dicomscope-3.6.0/DICOMscope/icons/printPlus32.gif0000644000265600020320000000066407307374256020650 0ustar tilleaadminGIF89a ³ÿ„†„ÆÈÆB@B¦«¦èêèa_a/-/¸º¸’™’TRTÀÀÀÜÖÜljlÔÎÔ!ù , @ÿÉI«½˜>õØk`2…2(X@dá6Oü´ð I „,ŠârÍj‚Æ`Xì,€¨tR*Ølöº0d$ EpÎhÊ©&E ¾>Ö@ñü–u_ƒ„Q…ˆ‡Wgazmucƒ—-E/  o ‚ma©=©©K8r* 314He9› oÈ Ë¢É¢ ÇM+É£ÐÌÌRš‰ß_‹àRSTZèZ|â=_8…‚022I …™<0à  Á Hè/*Ò­ 0 b´ JU¸RȉŽ~adIx «†._±88P‘¥ ŒÐÈœISÁ&m|À£QB‘ÐññcÆXO 9á{à‚Š,Uб£¢U–ØE;ðª< B¨¼°µ«Æ `À¾(±Ê¶­ÕpŒ›KQ;dicomscope-3.6.0/DICOMscope/icons/ps.gif0000644000265600020320000000017707307374256017124 0ustar tilleaadminGIF89a³ÀÀÀïïïßßßÏÏÏ¿¿¿¯¯¯ppp```!ù,@,ÈI+UÄ* ”ŸÞÆdyeÛ7*Á%šp,_F‘"D¦yƒD(=®S°ÍŽHJ;dicomscope-3.6.0/DICOMscope/icons/ps32.gif0000644000265600020320000000030707307374256017264 0ustar tilleaadminGIF89a ³ÿÀÀÀ!!!111BBBRRRcccsss{{{ŒŒŒ­­­½½½ÎÎÎÞÞÞïïï!ù, @tÈI«½8ëmßÚÇÓpdižš'5*@ (ÕVÆc J¬ï|OÚ¶ÂHâ¨ÝPÄBALƒÂ›e ŸvËíz¿à0ƱXPOÉå@0A>€¡©åhç*З$9hp0s„ "\ Œb•–—˜;dicomscope-3.6.0/DICOMscope/icons/quit.gif0000644000265600020320000000013407307374256017455 0ustar tilleaadminGIF89a‘ÿÀÀÀü!ù,@-„iÁ!â` ‡½y)š\ïÞ|Í“…KiIÊÊ.ëtP2Je…¡ ^Þ"{µ†€;dicomscope-3.6.0/DICOMscope/icons/quit32.gif0000644000265600020320000000046207307374256017626 0ustar tilleaadminGIF89a ÄÿÀÀÀ”Ìd<ì´,ܤLüÄ$œÔtDô¼4äŒ!ù, @¯` ŽdižhÀ¬ŒÐ°0 ðßL´^Û¾ +Uƈ*Ÿ¡raM MŸ wpXp Gâˆ$áºà/Øk ¦n ÀgPnSáDBXDŒÅ  » Rq,F Q ae+cŽ"‹Ž‹pH•b@,k>…?y11 ™#rwsˆ­IFe¤>9½fº0 1V– A¡£‚˜C—ÔŒ“‘ÛÜ]!;dicomscope-3.6.0/DICOMscope/icons/readme.txt0000644000265600020320000000047111262371102017764 0ustar tilleaadminIcons: used by class: -------------------------------------- default.gif StudyMan instance.gif StudyMan new.gif StudyMan ps.gif StudyMan series.gif StudyMan study.gif StudyMan bigdefault.gif StudyMan biginstance.gif StudyMan bignew.gif StudyMan bigps.gif StudyMan bigseries.gif StudyMan bigstudy.gif StudyMan dicomscope-3.6.0/DICOMscope/icons/refresh.gif0000644000265600020320000000030607307374256020132 0ustar tilleaadminGIF89a³ÿÀÀÀcccÿ¥¥ŒBBÿJJ{÷Öÿççï„„ŒJJÿcÿ11!ù,@sHANP¤%q–„ÒÂTJجÁ4Kb…IÛ™£p¤’Qbµâ@¡Eq0!,ÄYbL ¸$Ã!ùÀ`1Š,)Ž£‘8’V ¦ Áp“î&¬`0 ¨M' 2OT&]RS$‰! # ” T;dicomscope-3.6.0/DICOMscope/icons/refresh32.gif0000644000265600020320000000052607307374256020303 0ustar tilleaadminGIF89a ³ÿÀÀÀÿ÷÷ÿÖÖÿœœÿssÿRRÿÿççÿÆÆÿŒŒÿssÿZZÿ99ÿÿ!ù, @ÿÈIA¸5k)†Ø², €$ ÔPG¼Æ;€“¢ xO%Œ†Ôñ|=WáÖC4PG£HŒxÁÓ)`H´À")§CAEŠ[ÁñœéÄè8å|üŒ®OSY/w8€ ˆ ,&mZ{.`a…(o3r™{•lx' Š—£f©o®r©Y®\ ²¯²¸¶•«&À˜œM *ˆPeŸÆQ <@BƒbÒÓÌUC„o°°hçç(Í3wÏ’Ú¤:âíYñ” ÝÍ^|1£¿ ¾i¸€!ËA VþéRdÑDo*D¥:‘ £eE;dicomscope-3.6.0/DICOMscope/icons/ref_sign.gif0000644000265600020320000000061507307374256020273 0ustar tilleaadminGIF89a ÕÿÀÀÀ÷ý÷îûíçùçÚöÚÔõÓÐôÏÎôÍÈòÇÆòÅÄÂĻﺷ쭨릧ꥡ韜蚚ç˜ä‹‰ã‡…ãƒ}ázyàwpÞmoÝlfÛcbÚ_VØSU×ROÖLIÕFFÔBAÓ>?Ò;9Ñ62Ï//Î+ Ë!ù, @ª@€pH,Ç@¹2Gh“4# Aì¹Äƒã‰ ¼]A¥$*ap8z~,X8U§Pù|Š'D&`tEƒ# "‡ˆEg•œDCq¤  D'¬|¬K¯P” $E­®½!šBb#´MM­ÊBÇ" Ɉ ª“¢D m%’åG¡HA;dicomscope-3.6.0/DICOMscope/icons/ref_unsign.gif0000644000265600020320000000015307307374256020633 0ustar tilleaadminGIF89a ‘ÿÀÀÀÄÂÄ!ù, @<„©»þDU†©Í„†Ý8BÎ4—²’I«¹òL×á ?®Ÿ¼ºIìxÃ^Œ¥0S†\³\8¡ÔZ;dicomscope-3.6.0/DICOMscope/icons/reportInvalidSignature.gif0000644000265600020320000000023707307374256023203 0ustar tilleaadminGIF89a¢ÿüþü”’”ÿ¼¾¼ÀÀÀ!ù,@d(º,õŠ@k#g )ùDTÚUL–N„®X–jšzlÔkx·›eD)Q8£‘´I5›ÝÔ½V¸œušýTC€˜³ëFÐ(8ÅHÈ[LV¤ÝEø‰‹†®O cb ;dicomscope-3.6.0/DICOMscope/icons/reportNoSignature.gif0000644000265600020320000000015707307374256022172 0ustar tilleaadminGIF89a‘ÿüþü”’”¼¾¼ÀÀÀ!ù,@@Œ1Ë£”ÊAÅŒu½}ef¦Œˆp‚*(7+ÍÙø4Ó‚ûŠÁZ ’ÏÔÛAz'aRùÜEqSš*E4 ;dicomscope-3.6.0/DICOMscope/icons/reportUntrustedSignature.gif0000644000265600020320000000024007307374256023604 0ustar tilleaadminGIF89a¢ÿüþü”’”ÿÿ¼¾¼€€ÀÀÀ!ù,@e(º,öŠ@« ;I‰'Ø Å8ÆtU±qAû$P¢ºÆnË»WjW¡‰p9¢±`;&/ÆQÉЭz¾'‡X/2á—wdž(r¨M‘cʲyzB©T¶%Z› ‚ƒ ;dicomscope-3.6.0/DICOMscope/icons/reportValidSignature.gif0000644000265600020320000000023207307374256022647 0ustar tilleaadminGIF89a¢ÿüþü”’”¼¾¼¢ÓwÀÀÀ!ù,@_ºö@«µŽ1øC(àH—õ}'ê äúmbñtéÛF,ä;\®B „FJ‘ÄKJ”àгk¾V”UÕ ¼ø¤S „ÐóÉ”ÅnniÃÕˆO¥ÆWFI¯¡06" ;dicomscope-3.6.0/DICOMscope/icons/reset.gif0000644000265600020320000000035407307374256017621 0ustar tilleaadminGIF89aÄÿÀÀÀ!!!)))111999BBBZZZcccsss{{{ŒŒŒœœœ¥¥¥­­­½½½ÎÎÎÖÖÖ­¥¥µ­­kccZRRcZZRJJÆÆ½œœ”¥¥œ„„{99111)!ù,@i Žd) ‚‘\JE°óX¦ ‡ÕpKQB“ üH”‰C4HFÓ8˜‘3Ñ80ÇR0Œ „o‡Îa`Bë  †$ Š4™Lh#X P`5XC saAld%!;dicomscope-3.6.0/DICOMscope/icons/reset32.gif0000644000265600020320000000103607307374256017764 0ustar tilleaadminGIF89a ÄÿÀÀÀ!!!999JJJRRRcccsss„„„ŒŒŒ”””œœœ¥¥¥­­­µµµ½½½ÆÆÆÖÖÖÞÞÞçç甌ŒcZZ1))ÎÎÆŒ”ŒÎÆÎB9B!ù, @ÿ ŽdižhÊBàyP Kbñ"Fà „-ai@"Î$9‘<„@ÀH™&‘Ç¥÷Ê€‰C&°š” aàzt¥ÉíŠah ô4Š1UW nA GO egVM \o——ž$-nk0p(rªu2y  9"¡«µ ¸| QSƒM mvA ËPfX n^`6 ›–¦"Ê›>S0÷øPè“0! :  ^Ù'ÀÇ4|"88䣬3 0è€-Q0 »x‹ƒG›]H­Á‚ר”ÔØË+¡!#×`ƒ^2E˜D‰¨ÃF=øÖ̉ƒ‰‚vp¡ˆ› O0k–ÄY¹sƒ& ÐFWvs°ŒI“'¤%‘fÖ 8{ ‡HR(°Š6 ä½zU’*€„DzïN !JPCÇÎÈ(QA¨²ÿF›¨@”ªÏ„;dicomscope-3.6.0/DICOMscope/icons/revised.gif0000644000265600020320000000013707307374256020137 0ustar tilleaadminGIF89a‘ÿ‚ÀÀÀüþü!ù,@0”y01ýH,Ê1©ÝyvZ@rããD¢¶ŸÇ•õ*³ ž:–´ž’h6¼˜QP;dicomscope-3.6.0/DICOMscope/icons/rotate.gif0000644000265600020320000000011607307374256017771 0ustar tilleaadminGIF89a€ÿÀÀÀ!ù,@%„›Ê½‚œÎE:ß¡:§-]L¨•ub§A’à ¢¬;·ÞÙz;dicomscope-3.6.0/DICOMscope/icons/rotate32.gif0000644000265600020320000000021207307374256020133 0ustar tilleaadminGIF89a €ÿÀÀÀ!ù, @a„©Ë£lhÒ©„u‡ÛX`Ç9%°…Ù(²Þè~°æpŠŠÏÕæ ŽYÝlAáH«!g̦açä£ÏWTÙ“b§É“Žk2Ú–aðÏX– ¡gs[ý†3²E0ù¸½wkÔ¾ÿR;dicomscope-3.6.0/DICOMscope/icons/rotateR180.gif0000644000265600020320000000010707307374256020344 0ustar tilleaadminGIF89a€ÿÀÀÀ!ù,@„©±ØÚ‹ôAg™œgë ‚Uhx¡iE“3*&>;dicomscope-3.6.0/DICOMscope/icons/rotateR18032.gif0000644000265600020320000000016207307374256020512 0ustar tilleaadminGIF89a €ÿÀÀÀ!ù, @I„©Ë½¡›.R³¾3óÿXà(ÞˆèÊbšÔ6glÂ4©~ù6¾ö ‡=ÞðELå„K`“öŒEYÓNÉõÓ‰E_5;^“£;dicomscope-3.6.0/DICOMscope/icons/rotateR270.gif0000644000265600020320000000011407307374256020342 0ustar tilleaadminGIF89a€ÿÀÀÀ!ù,@#„yjìƒjÚN¶RíeâH·IÛ•>éäµçéÐ¥R;dicomscope-3.6.0/DICOMscope/icons/rotateR27032.gif0000644000265600020320000000017507307374256020516 0ustar tilleaadminGIF89a €ÿÀÀÀ!ù, @T„©Ë½¡qªj£ÞØ:í[HuÙ€äʶ-'yÁª&pœáúñv½óåF®¢ñˆ|“¢%³¤;ÍHB5zþ¦R–z妾PqXŽÊ²æ§ûm,;dicomscope-3.6.0/DICOMscope/icons/rotateR90.gif0000644000265600020320000000010207307374256020257 0ustar tilleaadminGIF89a€ÿÀÀÀ!ù,@„©ík\€´¶ºŽsûÏ]Ÿè‘–¦i;dicomscope-3.6.0/DICOMscope/icons/rotateR9032.gif0000644000265600020320000000014107307374256020427 0ustar tilleaadminGIF89a €ÿÀÀÀ!ù, @8„©Ë½¡›/Ú@³vvûÔ}&–æ©\Ú„,(½Ç%×ö皊ó·k[õb, e u̦ó‰+;dicomscope-3.6.0/DICOMscope/icons/rtodisplay.gif0000644000265600020320000000011307307374256020662 0ustar tilleaadminGIF89a€ÿÀÀÀ!ù,@"D€©{ëZSRjÒŸüe†hXŽfžQZ¶E²2‹Îf;dicomscope-3.6.0/DICOMscope/icons/rtodisplay32.gif0000644000265600020320000000017707307374256021041 0ustar tilleaadminGIF89a €ÿÀÀÀ!ù, @V¦ËíïÐ’ÐЊcÊ|vi^%Ré¶ZéÙÅeL›Ê\»0:6kŸ eÀ¡‘ƒ;ŠÇä­¥,9iR&u4}òv,4“UŠ—"W™2§Ç]ë0„³‡;dicomscope-3.6.0/DICOMscope/icons/rtoimage.gif0000644000265600020320000000011007307374256020274 0ustar tilleaadminGIF89a€ÿÀÀÀ!ù,@D€©{ë¯B‹ðÍxQÖYoHa³Ue…¦œsªîÛ¾O;dicomscope-3.6.0/DICOMscope/icons/rtoimage32.gif0000644000265600020320000000016407307374256020452 0ustar tilleaadminGIF89a €ÿÀÀÀ!ù, @K¦Ëí BQ¦ŠÍÜòyEŠàu¢§U*cG†ðL×LkÚúÎ?o„ü€Ã^Ñ *Iã$öyVŽ;ê’—bI³‡ÕU# Zmão­;dicomscope-3.6.0/DICOMscope/icons/save2.gif0000644000265600020320000000020407307374256017511 0ustar tilleaadminGIF89a¢ÿ€€€ÀÀÀ€€€ÀÀÀ!ù,@I´5þ ”BB˜8 kX ppeG Êâ(ƒ¥zdmS#š–mÎ,ÂÀ“uF®—p4³8¶#ìAÝHu+N‚¥ÌT]m!J–$;dicomscope-3.6.0/DICOMscope/icons/save232.gif0000644000265600020320000000041607307374256017663 0ustar tilleaadminGIF89a ¢ÿ€€€ÀÀÀ€€€ÀÀÀ!ù, @ÓXºÜþ€,#ëLÖ  Š]U =1–î»B_l)\-±YO%D¡ŽÈãhÉ\ÂP€ÝìQ“™FÒi£Z4MRÁš/ó"Œ/Ø´Ñ1'Qè íÙï’æÍ¤ÄûíNFsZ[y] V„ \{6{Šp6*@•x ”-‹mœ€h onfD_o-m£ˆ©0:¬œ¯©‡:;>–-¸IÁIzLtPÄÈMÆ@µÍbVqYŒt]Ó†Àƒ‘ÐÇ*ŠÔ8Xß„á|‰àØ0N½x Éñz ;dicomscope-3.6.0/DICOMscope/icons/save2DB.gif0000644000265600020320000000050207307374256017720 0ustar tilleaadminGIF89aÕÿÀÀÀ÷ööíììçççØ××ÓÓÓÏÎÍÄÄÄ¿¾¿´³´¬««¦¥¦œœ›Œˆ‡ˆƒ‚ƒ~}}lklede`_`[ZZUUUHHHGHHGGHGGF<<<878222$$$!ù,@_@€pH,HȤp€`L0ŸɈm(aJ …Ã5š‡Ha”¡4´éôQ(8,$–N¨|îûûIhhUZG‚SIR‹^v"Œƒ {frEA;dicomscope-3.6.0/DICOMscope/icons/save2DB32.gif0000644000265600020320000000032207307374256020065 0ustar tilleaadminGIF89a ¢ÿ€€€€€€ÀÀÀ€€€ÀÀÀ!ù, @—xºÜþðCͬ8Û¨.õZp’†ÕÈM„Q¼ðë~*)a'º­8è5`" ÃdÒÆl2@Êh20’ >Fwía¶¡à«ãòR™øÃZÊ&§|N¸ËlçI- ½x;v€1~gi‡)]h‚d•q‰RREb“x ŸZfƒ¡¢{(ªžT‘Bšµuu ;dicomscope-3.6.0/DICOMscope/icons/save2PS.gif0000644000265600020320000000021007307374256017751 0ustar tilleaadminGIF89a¢ÿ€€€ÀÀÀ€€€ÀÀÀ!ù,@M´5þ ”BB˜8 kX pp\F¥„ ,Ž2X,MÞ75N)Zþ* ËEÀd6Ýë$é,P[®"{X7ϹÊJ¶=l—÷ň}¡´8;dicomscope-3.6.0/DICOMscope/icons/saveDB32.gif0000644000265600020320000000074707307374256020016 0ustar tilleaadminGIF89a ÕÿÀÀÀ÷ööíììçççØ××ÓÓÓÏÎÍÄÄÄ¿¾¿´³´¬««¦¥¦œœ›Œˆ‡ˆƒ‚ƒ~}}lklede`_`[ZZUUUHHHGHHGGHGGF<<<878222$$$!ù, @ÿ@€pH,H$iI6 åñH$„¥Éí‚Á˜L0˜Ïg4ÒHJw P(X!)‡ÃLúÿE\D]M R VX‚oŽD !!n€¢£¤¥F„¨pªƒ]NRŒ[©ªZ¸¨m»‘s`•—f""n}­Bss {Ÿ¡~»„¦àáâãäå­ÞÍC¬«LNPRTµéé·\¯±³µ·õ¡„N‡-º’Ý/tKØ \F 3hÔ(ÄÅXa–;–lY.zÜ& 䉓'POi@5kØ´Ñ‹gN;y(ðáh¡¹Ÿá‚;dicomscope-3.6.0/DICOMscope/icons/saveDB32alt.gif0000644000265600020320000000033207307374256020505 0ustar tilleaadminGIF89a ¢ÿ€€€€€€ÀÀÀ€€€ÀÀÀ!ù, @ŸxºÜþ°Cͬ8[Àº¨e^tt•8¦æiF!Ïr–¦çQ ÷3¡‚N²Ãd¶žP`ªIíÉ–HÈ(?TÅ6ã%ÁI›ÆÐÊ!(JEbEïøü¥ŽßUo5kl<}~c4ƒˆmo_8‰†”a;!#œ E:[UUHg •}¥]’Ž…–{€+©W†‡r¢½zx ;dicomscope-3.6.0/DICOMscope/icons/saveIMAG.gif0000644000265600020320000000025107307374256020067 0ustar tilleaadminGIF89a³ÿ @@@ÀÀÀRRRTTTŸŸŸ£££³³³ÏÏÏäääÿÿÿ!ù,@V€Ik%aŒÃ»×A60di‚âAD¢0ÂjfÍÌ£]â*Ã"¯oÕR(œn7Ñ–·¦u جvÈxy2©¦÷ë ÅbÂ`‚`#xw;dicomscope-3.6.0/DICOMscope/icons/saveIMAG32.gif0000644000265600020320000000045507307374256020242 0ustar tilleaadminGIF89a ³ÿ @@@ÀÀÀRRRTTTŸŸŸ£££³³³ÏÏÏÿÿÿ!ù, @Ú@«½8ˆK(Ž$ù wlë¾ï™v;JR¢ï‚ÀÊ©Si8ª>ĤÈHóØD8¡P„z¿Ïlu¸áv<Á”)T&ÉH3íQ¯µÁOaN¯ÛíìÁÓ½„]P8S; Xy{ Q`:‡@=SS„ S=Q¢£‘e|#y¨&~M «}[i° ªµ¶­§°yw¾¾‰0Â0Á°ˆº5!QSU È€^šŽ>DzqÓ‚9ÑÚzÊ‹_ߨÅ݆b“•—™›œžŸ;dicomscope-3.6.0/DICOMscope/icons/savescreen.gif0000644000265600020320000000054507307374256020637 0ustar tilleaadminGIF89aÕÿÀÀÀôôôÚÚÚÕÕÕÌÌÌÈÈÈÅÅÅÀÀÀ¿¿¿µµµ²²²«««¦¦¦   žžž˜˜˜‰‰‰€€€€€~~~{{{zzzwwwuuupppnnnmmmlllkkkLLLKKK@@@>>>111 €!ù,@‚@–d8C Y­D%óq„R–²¹z½+í–µ:™ "JBÐÁj™áÐ(<8ß\±~Ï GF$ 'Ycr__xqsuw[astaxN››{”uG¡ˆ}, (£M,&$  ®xZ('%i$(*£žÇJA;dicomscope-3.6.0/DICOMscope/icons/savescreen32.gif0000644000265600020320000000114107307374256020775 0ustar tilleaadminGIF89a ÕÿÀÀÀóóóòòòåååÙÙÙÐÐÐÏÏÏÌÌÌÀÀÀ²²²¯¯¯¨¨¨¢¢¢ššš™™™‡‡‡€€€€€{{{wwwuuutttrrrooohhhdddcccaaa]]]ZZZWWWTTTSSSRRRNNNMMMKKKJJJIIIHHHGGGFFFEEEDDDCCCBBBAAA@@@???>>>===<<<:::999888777666555444333€!ù, @ÿ@€pH,E$Òó)ˆ¨4 " MŸV[`{Í.ò¨„l»æ3`RÒÕ^À€ñX<T©ö.ÁOeSNUWMY\B_`މ[‘’N‹`>=U<+DaU¶S³¹ZYh…‚ÊË“©ŒÉËÑ‚‘ÇÆB-:4 yß?Ò;9Ñ62Ï//Î+ Ë!ù, @«@€pH,ÄSQ¹¡MBxÐŒ0Éj‰ÇNè´ZMTJ¢FA§oïø‚…3Å ™aD&_gŠJŒŠŽ…# "‰~Gfœ£HgkªhEu®  £]› $MÁ!¡N #‰ÍŽ]Ê·" ¹x¶ ´š¤G q%™æw¨HA;dicomscope-3.6.0/DICOMscope/icons/send.gif0000644000265600020320000000010507307374256017422 0ustar tilleaadminGIF89a€ÿÀÀÀ!ù,@„©È £l²†±ÍœÚ‚Ýó‘W4j¥¶G;dicomscope-3.6.0/DICOMscope/icons/scoord_unsign.gif0000644000265600020320000000016107307374256021347 0ustar tilleaadminGIF89a ‘ÿÀÀÀÄÂÄ!ù, @B„©‹’þR`“-xªÒ¢ûÿIÁH’Ö‰¦ fhÒáÄ€ ±€‹àêÎ÷ ìˆJ¥žMׂE–Š’6‹J› ¤åèôi·©;dicomscope-3.6.0/DICOMscope/icons/selectlayer.gif0000644000265600020320000000014507307374256021011 0ustar tilleaadminGIF89a‘ÿÀÀÀÚÚÚ!ù,@6„i"Él-Ú8Û\ZæTÎryæ!êŠ]ˆ8vœò¡ÑöÚË„S¶™‘m&íäX)](!£;dicomscope-3.6.0/DICOMscope/icons/selectlayer32.gif0000644000265600020320000000031407307374256021154 0ustar tilleaadminGIF89a ‘ÿÀÀÀîîîÚÚÚ!ù, @„©›3mr"D©f@×ûuÛ¥•æ:WDZj{¼Ñ4 ©m‰Ùôþÿåd"L':)5ÇÕ B21ŒÈÚíäÅ„\äò‹ëR©-ÊP»ª}Î2ø}3›s7zñºK–ÓßzÖ·³s%Uõ4b&¶‡¡Õ&r³r7£˜$çq&Ù`#* ʉYÓ9¦‰bZô9ë*ˆzØÇZR«kP;dicomscope-3.6.0/DICOMscope/icons/send32.gif0000644000265600020320000000015607307374256017575 0ustar tilleaadminGIF89a €ÿÀÀÀ!ù, @E„©ËíÏ‚”kˆÏÌÚ^]–àˆ¦êª˜!‹|¤˜¹.¬Y¸¶÷þ +6§h4ÐF²ÙÒ“tR È“£jÅEµÏ¡÷[;dicomscope-3.6.0/DICOMscope/icons/sendto.gif0000644000265600020320000000017107307374256017770 0ustar tilleaadminGIF89a¢ÿÀÀÀÙÙÙfffFFF000!ù,@>ºÜj!Æsøxï—a›‘êæ@DE…æR¤¸{¾é®é¹`cuéÔ¤À`ö$%Q“á -¢¾S;dicomscope-3.6.0/DICOMscope/icons/sendto32.gif0000644000265600020320000000036007307374256020135 0ustar tilleaadminGIF89a ¢ÿÀÀÀÙÙÙfffFFF000!ù, @µºÜþ0BC)¨Ì„M„ž7 €0†¤hÁexÊÖÊ[ªÞQ¥g´lù”Ú舡Í&)ôžP&nêÒa¨9«TËíJ/¼^ɵ¨¡L@&Až´ŠØÙx^ìØ÷¡al >X‚ƒ„…]† Z‰+\‰V ‘P”@sPf (h{‡4 0‘jvqI&%&rD #ov­92F"³B—-F@bµA¡»-Ç—š2K7^^Œ„ ;dicomscope-3.6.0/DICOMscope/icons/series.gif0000644000265600020320000000014307307374256017765 0ustar tilleaadminGIF89a‘ÿÀÀÀÿÃ!ù,@4„ !íÿ¬Ò['”ŠÁßpK@Љnhêìv”òl*¶æÜôNâoø®X– åˆIx´;dicomscope-3.6.0/DICOMscope/icons/showcode.gif0000644000265600020320000000012207307374256020303 0ustar tilleaadminGIF89a€ÿÀÀÀ!ù,@%„i‘Áø@”³*Øæ²ËÜ(ΨeäUz¤=Õèµí ˆwz;Z;dicomscope-3.6.0/DICOMscope/icons/shutterCIRC.gif0000644000265600020320000000016407307374256020635 0ustar tilleaadminGIF89a³ÿÿÿÿóóóðððÇÇÇ£££ŒŒŒFFF ,@)0ÉIk k`éBÑd9[)`˜p,wDŠŒCËu…N"ÍkF¬D;dicomscope-3.6.0/DICOMscope/icons/shutterCIRC32.gif0000644000265600020320000000026507307374256021004 0ustar tilleaadminGIF89a ³ÿÿÿÿóóóðððÇÇÇ£££ŒŒŒFFF , @j0ÉI«½Ø"€ÿdÙð¨7lë¾pU¤4PÄ BÔ1âÀ p4ð>œàxÄfà <Á @%z¿à°xŒ±bµÜ¡îèÃA™€i̬`˺6«ßbFLI@Q'!?dŠ‹Œ.;dicomscope-3.6.0/DICOMscope/icons/shuttercolor_big.gif0000644000265600020320000000226107307374256022054 0ustar tilleaadminGIF89a ÷ÿ  !!!"""###$$$%%%&&&'''((()))***+++,,,---...///000111222333444555666777888999:::;;;<<<===>>>???@@@AAABBBCCCDDDEEEFFFGGGHHHIIIJJJKKKLLLMMMNNNOOOPPPQQQRRRSSSTTTUUUVVVWWWXXXYYYZZZ[[[\\\]]]^^^___```aaabbbcccdddeeefffggghhhiiijjjkkklllmmmnnnooopppqqqrrrssstttuuuvvvwwwxxxyyyzzz{{{|||}}}~~~€€€‚‚‚ƒƒƒ„„„………†††‡‡‡ˆˆˆ‰‰‰ŠŠŠ‹‹‹ŒŒŒŽŽŽ‘‘‘’’’“““”””•••–––———˜˜˜™™™ššš›››œœœžžžŸŸŸ   ¡¡¡¢¢¢£££¤¤¤¥¥¥¦¦¦§§§¨¨¨©©©ªªª«««¬¬¬­­­®®®¯¯¯°°°±±±²²²³³³´´´µµµ¶¶¶···¸¸¸¹¹¹ººº»»»¼¼¼½½½¾¾¾¿¿¿ÀÀÀÁÁÁÂÂÂÃÃÃÄÄÄÅÅÅÆÆÆÇÇÇÈÈÈÉÉÉÊÊÊËËËÌÌÌÍÍÍÎÎÎÏÏÏÐÐÐÑÑÑÒÒÒÓÓÓÔÔÔÕÕÕÖÖÖ×××ØØØÙÙÙÚÚÚÛÛÛÜÜÜÝÝÝÞÞÞßßßàààáááâââãããäääåååæææçççèèèéééêêêëëëìììíííîîîïïïðððñññòòòóóóôôôõõõööö÷÷÷øøøùùùúúúûûûüüüýýýþþþÿÿÿ, @ÿh€¡ 5† ¢Ì9x -šä‰”+[»’9³Î\¼xü4ˆpˆU¼^‰ª”ˆ›0Uda•qcÇ!DáÞ8kÉR®lù2æ!(¼áè¤È%‘Dñj¨Ë0b±Â¨‘)Χ$.lø0âÄŠkzuª“䳟AU²¼ji ›MsŽ<¸®Ð¹E‘ aï×¶Å2tQ"E‹\ ³ÝuqYÇh#¯Õ UqC: ¤(³Ú›“¡ÚØô/Q˜‚](9&™³Á<>[Ë}]7i¡Í`QHÉ×jàÁXGŒðI¯â€aï0«+jÛ‰Zn|òé¼Á+“–åþ8­uðÌ=36[^óõðê/w7_¾öñìMŸ?LYìÔªÑeµÕwüuæt¼ FÝ~©‘Ô—nÆI‡TaËí5œ_»Ñ[Rʽ‡XOFØ›Rî„[ˆÑø›‡”½aŠÞU"I«½˜àQ³Õ—žI(eØL6˜ÝX`€&iúéØß}ëaæƒØ‰×ä|î¡·$‘òµ$?;dicomscope-3.6.0/DICOMscope/icons/shuttercolor_big3.gif0000644000265600020320000000301207307374256022132 0ustar tilleaadminGIF89a ÷ÿ  !!!"""###$$$%%%'''((()))***+++,,,---///000111222333444555666888:::;;;<<<===>>>???@@@AAABBBCCCDDDEEEFFFGGGIIILLLNNNOOOPPPQQQSSSTTTUUUVVVWWWXXXYYYZZZ[[[\\\]]]^^^___```cccdddhhhjjjkkkmmmnnnoooqqqrrrtttvvvwwwxxxzzz{{{|||}}}~~~€€€‚‚‚………†††‡‡‡‰‰‰ŠŠŠ‹‹‹ŒŒŒŽŽŽ‘‘‘’’’“““”””•••–––˜˜˜™™™ššš›››œœœžžžŸŸŸ   ¡¡¡¢¢¢£££¥¥¥¦¦¦§§§¨¨¨©©©ªªª«««­­­®®®¯¯¯°°°±±±²²²´´´µµµ¶¶¶···¸¸¸¹¹¹ººº»»»¼¼¼½½½¾¾¾¿¿¿ÀÀÀÁÁÁÂÂÂÃÃÃÄÄÄÅÅÅÆÆÆÇÇÇÈÈÈÉÉÉÊÊÊËËËÌÌÌÍÍÍÎÎÎÏÏÏÐÐÐÑÑÑÒÒÒÓÓÓÔÔÔÕÕÕÖÖÖ×××ØØØÚÚÚÛÛÛÜÜÜÝÝÝÞÞÞßßßàààáááâââãããäääåååæææçççèèèéééêêêëëëìììíííîîîïïïðððñññòòòóóóôôôõõõööö÷÷÷øøøùùùúúúûûûüüüþþþÀÀÀ!ùÜ, @ÿ¹ H €ƒ *\Èí@ЉBE BsîÄÈQÏ9`ƒ L¸ð!ÅÅS³týV ™²fΈ) B /bÜè1$É-bÒÈÙC¨Ñ$MŸN¡Z5%C…Ûb鹨'Ö¶«³d ñó… @Œ@¹ØÇ£K›JM•E(KÁ* P:ˆ@áÂ*hÙG'U²põ &Œ˜±d­ª0ôta‡%R¬h3¦L9wþ J”'…'°`/¢»MO‡Q°XDèæŽ.*ô|›fCŒ³DD¹r1tSH™4ú’Fa#.`ЂD 9†\TTé*W´jáÿòÌL#‚/."0 ‚‹Ï¦Q«fÍÚµkذeB0W p0B ×ÙV€±F†D¢ )¨¼Þ-¼‘‹B½\Ð=D„]ŒqFvôÁ‘#•h ½¬¦ '¤DbŒ1Fl€ñ |h³Zjý($7ª ¹Ð2i  B9C i,3$4D@R\1ÛApÜ±Ç ƒ0Q4`ígÂ=aÄR`qQz ‚ˆ#‘d‡Ù,ÄË%¬ÃY>¡á!È"`¢É(¨œ"/EÁ„@ 1ä „ Òˆ%˜’ ,áÙBC4}¡@{UpA”çà‚Q" +³PȘ0ÃXòA0\À€À\Ì1Ê8 4ÑH#Í4Óð@ @’'©„ÁͲ‹0-ãÌ3è2“Az( AtŠ`B 5ÅmüñÈ&¦´B‹-2 #Ìz„ƒš€© >ña¨A ‹H¢I(§¨K-¡ø€U$À TšjY±Åh¼qG ‡8B‰&œ˜bH»)ôÉ94¬Yx1†mÐah!8âÈ Ÿ¬†Ë (4ѦaŒAF*ëá;àb$7ÚhÒE xàÁ6t¡‰W;dicomscope-3.6.0/DICOMscope/icons/shuttercolor_small.gif0000644000265600020320000000164707307374256022432 0ustar tilleaadminGIF89a÷ÿ  !!!"""###$$$%%%&&&'''((()))***+++,,,---...///000111222333444555666777888999:::;;;<<<===>>>???@@@AAABBBCCCDDDEEEFFFGGGHHHIIIJJJKKKLLLMMMNNNOOOPPPQQQRRRSSSTTTUUUVVVWWWXXXYYYZZZ[[[\\\]]]^^^___```aaabbbcccdddeeefffggghhhiiijjjkkklllmmmnnnooopppqqqrrrssstttuuuvvvwwwxxxyyyzzz{{{|||}}}~~~€€€‚‚‚ƒƒƒ„„„………†††‡‡‡ˆˆˆ‰‰‰ŠŠŠ‹‹‹ŒŒŒŽŽŽ‘‘‘’’’“““”””•••–––———˜˜˜™™™ššš›››œœœžžžŸŸŸ   ¡¡¡¢¢¢£££¤¤¤¥¥¥¦¦¦§§§¨¨¨©©©ªªª«««¬¬¬­­­®®®¯¯¯°°°±±±²²²³³³´´´µµµ¶¶¶···¸¸¸¹¹¹ººº»»»¼¼¼½½½¾¾¾¿¿¿ÀÀÀÁÁÁÂÂÂÃÃÃÄÄÄÅÅÅÆÆÆÇÇÇÈÈÈÉÉÉÊÊÊËËËÌÌÌÍÍÍÎÎÎÏÏÏÐÐÐÑÑÑÒÒÒÓÓÓÔÔÔÕÕÕÖÖÖ×××ØØØÙÙÙÚÚÚÛÛÛÜÜÜÝÝÝÞÞÞßßßàààáááâââãããäääåååæææçççèèèéééêêêëëëìììíííîîîïïïðððñññòòòóóóôôôõõõööö÷÷÷øøøùùùúúúûûûüüüýýýþþþÿÿÿ,@ŒH!£H•2uaJ…kÙ¶uöŠÐÅMªGu¶9qäaÄ2Ð캘1É%‡%ôbèО= zTi¡B†(?Š€T‘¤Æqf$"Í"F2t %X3áB™)A6½ UçÊ–/cæ”HÔhF!I—Rôú³cÔ=n z6äÈ£&·J=èçÒ‚t©æ ;dicomscope-3.6.0/DICOMscope/icons/shuttercolor_small3.gif0000644000265600020320000000115307307374256022505 0ustar tilleaadminGIF89aæÿ  %%%''')))+++...000222444555;;;<<<>>>???CCCGGGHHHJJJKKKLLLMMMPPPQQQRRRSSSTTTZZZ\\\]]]bbbcccdddhhhiiimmmooorrrtttuuuvvvwww|||€€€ƒƒƒ„„„†††ˆˆˆŠŠŠ‹‹‹ŽŽŽ’’’”””–––™™™›››¢¢¢£££¤¤¤¥¥¥§§§ªªª«««¬¬¬­­­®®®°°°±±±³³³¶¶¶···¸¸¸ººº»»»½½½ÂÂÂÅÅÅÉÉÉÊÊÊÌÌÌÍÍÍÏÏÏÐÐÐÒÒÒÔÔÔ×××ÚÚÚÛÛÛÞÞÞâââãããäääæææçççëëëìììîîîïïïòòòõõõöööúúúÀÀÀ!ùx,@È€x‚ƒx„„ †hnqstHƒa!*0†EJSIRZ^?pˆwO9†;PwˆI(†KX^c_M‚ .G\dikoG„Q+18;DI7Uˆˆ†â„c#)1†CC4c„v#-†HOY]:v‚% Tð`è ˜3jØÔ €r#‡N:Iq Á3‚8Ùò¥Œ™Œ‚¦`¡â… F˜P1bE\›+Hœ!¤ ¡@;dicomscope-3.6.0/DICOMscope/icons/shutterIMAG.gif0000644000265600020320000000025207307374256020630 0ustar tilleaadminGIF89a³ÿÿÿÿ111999BBBJJJRRRZZZccckkksss{{{„„„ŒŒŒ”””œœœ,@_ðÉIë,Ø”:5BCq‰B10ì4Œ¢ UŒä@hœ¥ä¤X¶¥¥H´µA`©Z¯–‰„R‡'#ÊtMF)ƒ†õ9PV+N+a (Š… ëX‚;dicomscope-3.6.0/DICOMscope/icons/shutterIMAG32.gif0000644000265600020320000000051107307374256020773 0ustar tilleaadminGIF89a ³ÿÿÿÿ111999BBBJJJRRRZZZccckkksss{{{„„„ŒŒŒ”””œœœ, @þðÉI«½˜ ÁEø7Da‚$Š’‘ÃX˜'j«¶¡c Óû‹£áh4|‰â`˜ažÐ¨dÄ4±X!µJ® W•Tu[Šž‚YÀJßð¸\Ò¦†:V™nÌZ`6xwx15),-ƒ$3Œ5+-I :M{(d Jelm‘AiiA HKus¬­®¯°­31x"W&7~Uƒ3'f}€v¶%…a€‚YWú`‰y0·Ã‡h ´V%4—†f6Œ{dJè67˜Þ ln͇IÞ¦À¤ê…M/_N A¢¤ #*t@шoK ÄÚȱ£„;dicomscope-3.6.0/DICOMscope/icons/shutterPOLY.gif0000644000265600020320000000011707307374256020676 0ustar tilleaadminGIF89a¢ÿÿÿÿ)))kkk¥¥¥ÞÞÞççç,@xºÜ 0Bçä¤8ëŽíÔ·d©‰ª˜d¾X;dicomscope-3.6.0/DICOMscope/icons/shutterPOLY32.gif0000644000265600020320000000016507307374256021046 0ustar tilleaadminGIF89a ¢ÿÿÿÿ)))kkk¥¥¥ÞÞÞççç, @BxºÜþ0ʹ€½8*5ÿà·)šÇ•e¨®lëF(&ÊñEÕæZ¿|ïÿÀ p¶cáF' —<"oN[(ú_¨¡vË %;dicomscope-3.6.0/DICOMscope/icons/shutterRECT.gif0000644000265600020320000000007307307374256020651 0ustar tilleaadminGIF89a€ÿÿÿÿ,@Œ‰ÀÝœ„´Ú$Ìïú.°%¦*R;dicomscope-3.6.0/DICOMscope/icons/shutterRECT32.gif0000644000265600020320000000013207307374256021012 0ustar tilleaadminGIF89a €ÿÿÿÿ, @9Œ©Ëퟀœ´Nˆ³ÞÌúš}"À•æ‰jã®VëRéL×öç:ƒX/û%0`±wŒ%]»¦ó 5;dicomscope-3.6.0/DICOMscope/icons/sp.gif0000644000265600020320000000023507307374256017117 0ustar tilleaadminGIF89a³ÿÀÀÀïïïßßßÏÏÏ¿¿¿ŸŸŸppp```PPP@@@000 !ù,@JÈIë FµN[‹cTH¡ Vë¾ÁHƒÓq€`KDCäÁ+®ÅÇQè|BˆKÃ0˜ Q;€Jh ‰UÅÐx4šW¤Ú;dicomscope-3.6.0/DICOMscope/icons/sp32.gif0000644000265600020320000000123607307374256017266 0ustar tilleaadminGIF89a Õÿ<><¤¢¤trtÔÒÔ\Z\¼º¼ŒŠŒìêìLNL¬®¬|~|ÜÞÜdfdÄÆÄ”–”ôöôDFD¬ª¬|z|ÜÚÜdbdÄÂÄ”’”ôòôTVT´¶´„†„äæälnlÌÎÌœžœÀÀÀDBD¤¦¤tvtÔÖÔ\^\¼¾¼ŒŽŒìîìTRT´²´„‚„äâäljlÌÊÌœšœüúüLJL!ù, @ÿÀpH,Ȥ2Y’ÀD…Õá²È*›ŠIaj¼„¯¤Ú_…ÀH$" +0(D†ÒeÉï'/w"o!-S)w„o _D+ -* .š*0"„*. ”~¯°±²³C''®+–ÀS»D-($.l (g+%ä&!X'Ñk..Ù$!ÞDá*!”#  4Š0bņaH.lhÁ‚ *,$èpàÁŠ%L¢Å±£Ç CÂzA’˜/ðZ’rÀ %2NØ€òÉ dÐY D‡»TY‚‚m `à€b$`ÀG  œ(Ò…‚ÀF¤@ÁÄ&R¥z  Ì cÓ NXpâ‚*ðm›Œ¸gn HáÁlò€; UaP0QAè% tÈu« j`ÁÀ@‚=î1Rb”ˆ&L( †‚ )4H0PÀ›É"YL°@š.„·Ê3K[¿ ÐõåÅ…ïÇEЇ;dicomscope-3.6.0/DICOMscope/icons/sr.gif0000644000265600020320000000031607307374256017121 0ustar tilleaadminGIF89aÄÿÀÀÀ÷÷÷íííçççÛÛÛÕÕÕÎÎÎÃÃþ¾¾···¬¬¬™™™———‚‚‚wwwoooeee___WWWKKKEEE!ù,@K Žd9 PÅ„D) ƒ‚¬ï|Tc0 " Óáñ@FC¢G­ZI‹, xs¥åaø9“i@A´ @€r¸Úï£;dicomscope-3.6.0/DICOMscope/icons/sr32.gif0000644000265600020320000000035307307374256017267 0ustar tilleaadminGIF89a ³ÿÀÀÀ!!!111BBBRRRcccsss{{{ŒŒŒœœœ­­­½½½ÎÎÎÞÞÞ!ù, @˜ÈI«½8ëÙ ƒD ƒ< §®l›áT"A9O¢:Çã?G­R]Ȥr©Z |Åä@¨V Gã!8¤(ՉÀâà”Å£K‚sN¯Ûïø¼~?QJ=:m…F*3Y_nh* X"??’Y km6l*d B 1[‚+%¡|¸¹º»;dicomscope-3.6.0/DICOMscope/icons/stern.gif0000644000265600020320000000011707307374256017627 0ustar tilleaadminGIF89a‘ÿ„‚„ÀÀÀ!ù,@ ”©a¾ ˜0Ú¤k¶ù †a6 ^Md·m"*ÆrT;dicomscope-3.6.0/DICOMscope/icons/study.gif0000644000265600020320000000021507307374256017643 0ustar tilleaadminGIF89a¢ÿÀÀÀÀÀÀ€€€€€ÿÿÿÿÿ!ù,@RºÜ;ƒ”@¥ª!¤/_6lh†Â@á j«ÛJ*$œ‘™Ö¹×¿¼Ž)›£²¸†j7KXSWAq ¼<\æÃý: e8¹T:Þ;dicomscope-3.6.0/DICOMscope/icons/tcoord.gif0000644000265600020320000000012707307374256017767 0ustar tilleaadminGIF89a‘ÿÀÀÀü!ù,@(Œi É÷Œ˜3"ð•UaJYÔ”&€¢çj(ˆ o¥ÛŒKª›I;dicomscope-3.6.0/DICOMscope/icons/tcoord_sign.gif0000644000265600020320000000063007307374256021006 0ustar tilleaadminGIF89a ÕÿÀÀÀü÷ý÷îûíçùçÚöÚÔõÓÐôÏÎôÍÈòÇÆòÅÄÂĻﺷ쭨릧ꥡ韜蚚ç˜ä‹‰ã‡…ãƒ}ázyàwpÞmoÝlfÛcbÚ_VØSU×ROÖLIÕFFÔBAÓ>?Ò;9Ñ62Ï//Î+ Ë!ù, @µ@€pH,Er¨"ŽBˆØ2…E’èv›D-QÐè|$„-LXL#SfA§›^örh¸t¦z^yBdD'bLKlŠ$ #Ž{Ki(¦z¤ kCƒ¨›u³!¯°cœ %¹º»"¢… $¾±BlÐ# ¾wE! ¸›H§¦K q&š©©­HA;dicomscope-3.6.0/DICOMscope/icons/tcoord_unsign.gif0000644000265600020320000000016607307374256021355 0ustar tilleaadminGIF89a ‘ÿÀÀÀüÄÂÄ!ù, @G„©›Ãç`Er¾§*o5”@–åiÜ󬚚€’Ȭ€Ü±ú޾ÍS\^@“QÆyl8È¥\5o4Ô‡"´^ÓŸ/? ;dicomscope-3.6.0/DICOMscope/icons/text.gif0000644000265600020320000000011507307374256017456 0ustar tilleaadminGIF89a€ÿÀÀÀ!ù,@$Œ‰ ÆùT?Ò;9Ñ62Ï//Î+ Ë!ù, @µ@€pH,ÇR) 8B›„ð a #SkÌ Ž'2 n‹g€ R•0Šxœ›D Žt˜æÁD&^fKƒ# "ˆ|'˜™™Fevš¤}v‰›~Er¯  «›Jg– $h£Ä˜ÄB! M #¼Å¤ÇBк" Ò¦Õ µ•tîC n%”¢öEªHA;dicomscope-3.6.0/DICOMscope/icons/text_unsign.gif0000644000265600020320000000016607307374256021047 0ustar tilleaadminGIF89a ‘ÿÀÀÀÄÂÄ!ù, @G„©»Âž“ *{¨Ò#âH^ƒVg4™ÍÖVÂLÓé Ô:ˆù싆¦ZîÈZp Žæ‰XfŠ:èTéÊ^aªWï f;dicomscope-3.6.0/DICOMscope/icons/time.gif0000644000265600020320000000012407307374256017430 0ustar tilleaadminGIF89a€ÿÀÀÀ!ù,@+Œi¼ÀœDÐya’µ{ ^ËH‰Í‡>¨G*eóÀ™ð]+á™™–Û* ;dicomscope-3.6.0/DICOMscope/icons/time_sign.gif0000644000265600020320000000064107307374256020454 0ustar tilleaadminGIF89a ÕÿÀÀÀ÷ý÷îûíçùçÚöÚÔõÓÐôÏÎôÍÈòÇÆòÅÄÂĻﺷ쭨릧ꥡ韜蚚ç˜ä‹‰ã‡…ãƒ}ázyàwpÞmoÝlfÛcbÚ_VØSU×ROÖLIÕFFÔBAÓ>?Ò;9Ñ62Ï//Î+ Ë!ù, @¾@€pH,Å@)<9—M@ÀÚ$„ÍCP™Íç—è%Od:Ám€ R•0Š|þûîûáHWP†L`JgD&em€‰B# "“K¤DlH¤¥HDq¯pz·  ”J¿–R¢ $n†Ìˆ!ªBg#¢¿GÎ×" ÙanÁ ½¡c¯´ v% ÷þE ÌB;dicomscope-3.6.0/DICOMscope/icons/time_unsign.gif0000644000265600020320000000020007307374256021006 0ustar tilleaadminGIF89a ‘ÿÀÀÀÄÂÄ!ù, @Q„©›n„|vŒm)!¥uš¤ªêIîû22 Õç1Z^µóFŽkÁ†Ÿ™3*Š‹Ïê9ª9¦'fW½YQRúj«Ù ·7c*×lD;dicomscope-3.6.0/DICOMscope/icons/tobegin.gif0000644000265600020320000000031607307374256020124 0ustar tilleaadminGIF89aÄÿÀÀÀêêéããßÞÞÝÅÄľ½ºµµ±ª©©ŸŸž““Œ‹‹Š‡†……~~~vvuihhfccWWWOOOGGG::9---%%% !ù,@K ŽdijŒ³L™é¾£¶ B E¥Zïû°ÌÁ²ƒ¡ƒ‚åú9‹¤çFåõªšI#‚ž(‹ƒÁqñÆ( ‚ˆÐ(Ÿ$‘ò€¸«®;dicomscope-3.6.0/DICOMscope/icons/tobegin32.gif0000644000265600020320000000072307307374256020273 0ustar tilleaadminGIF89a ÕÿÀÀÀöõõÝÜÜÚÙÖÓÓÒÑÎÍÆÅÅ¿½½¸¸¶²²°±±¯¥¤£ ŸŸ‹ˆˆƒ‚†…„„„~}{{ppnponoommig`\\\\[[ZWUTTONNIGGGGFBB?>;;997655.--&%%!ù, @ð@€pH,È$ ù˜”С Z„‚gôŒJ=!Æ5™å”ºJ“zÍn·½Å)(Ù¢áRªÕ8€Øá&…‰…$wHn’’x•–_\—FrVe›œžcXx£H ‘Qެ“¶jQ··¹º“œ¿^% "´¿&%¸ÀR% gÌÇ! ÒÅ^Ö Ü¢%×áBæ•ßEì Ó€èòFã ËPމ °ïH€þ&1±á‚(hx”+¶3 @`#³r‰ñÁƒÉRªTâ5/A;dicomscope-3.6.0/DICOMscope/icons/toend.gif0000644000265600020320000000031607307374256017606 0ustar tilleaadminGIF89aÄÿÀÀÀêêéããßÞÞÝÅÄľ½ºµµ±ª©©ŸŸž““Œ‹‹Š‡†……~~~vvuihhfccWWWOOOGGG::9---%%% !ù,@K ŽdijSaš)jTBˆDsµn~JQAÈÍ[ Ž¡NÃÄ›Pæ) =-‚€@P¨8I†b0@L2K†cqÖ‰2Ë×M§Vé®;dicomscope-3.6.0/DICOMscope/icons/toend32.gif0000644000265600020320000000072407307374256017756 0ustar tilleaadminGIF89a ÕÿÀÀÀöõõÝÜÜÚÙÖÓÓÒÑÎÍÆÅÅ¿½½¸¸¶²²°±±¯¥¤£ ŸŸ‹ˆˆƒ‚†…„„„~}{{ppnponoommig`\\\\[[ZWUTTONNIGGGGFBB?>;;997655.--&%%!ù, @ñ@€pH,H¡©$¢’Ãd2%Ë¥$.ž’õJ–¢qÙhÊP…¸¼@ Ð Š IMÎ:‹ bkX% a|†U‘’e&"!™œ!…}d {kYOF^SU†J%Z\BŒ³E~ »¼‡²Ãȳ’ËË”ÌÏÇWmÖÚÖzXeß”! W¡} ìGî#àI&óõF äÛ'ÍŸ=! LÖž=|ú’)1‘ ²y",”HÄ„"r,R‹#9Bƒæle³”†‚;dicomscope-3.6.0/DICOMscope/icons/uid.gif0000644000265600020320000000011507307374256017253 0ustar tilleaadminGIF89a€ÿÀÀÀ!ù,@$Œi°ü”œ´Zˆ| sÖm_H’K‰z–’…’Eò×ë[;dicomscope-3.6.0/DICOMscope/icons/uid_sign.gif0000644000265600020320000000062307307374256020277 0ustar tilleaadminGIF89a ÕÿÀÀÀ÷ý÷îûíçùçÚöÚÔõÓÐôÏÎôÍÈòÇÆòÅÄÂĻﺷ쭨릧ꥡ韜蚚ç˜ä‹‰ã‡…ãƒ}ázyàwpÞmoÝlfÛcbÚ_VØSU×ROÖLIÕFFÔBAÓ>?Ò;9Ñ62Ï//Î+ Ë!ù, @°@€pH,Å“P `:…Gh“4# Aì¹Äƒã‰ ¼]A¥$*ap8z~,X8Õær¯ï‹'D&`K'‰MЉLBƒ# "‡‹œDgH¦ttGq¯  |J¨¨Cš $CO}Å!£P #šÅÒCÏ»" ½­ µ™ßG m%˜ë^¬HA;dicomscope-3.6.0/DICOMscope/icons/uid_unsign.gif0000644000265600020320000000015707307374256020644 0ustar tilleaadminGIF89a ‘ÿÀÀÀÄÂÄ!ù, @@„©›b LU†ÑU;ㆢG–Sô¤š…®óF.ÇïÏe›÷û¿ ;“XŒRSN‡ÎʦŒ>i@d°ŠÍ– ;dicomscope-3.6.0/DICOMscope/icons/uniwh.gif0000644000265600020320000000250207307374256017626 0ustar tilleaadminGIF89a}2³ÿÀÀÀRRRkkk{{{­­­ÖÖÖŒŒ„”œ”RŒ½ÎÞœµÎcŒµ9k¥9„ïï÷!ù,}2@ÿÈI«µN-ƹRÎ%Ždižhµ(¥Ò¼›’ ’Ìx®«M¸ŸDƒñÛÁä` PH4`˜ ‡Yáµ°7‰€ ø:%†$š,q5¡´ -#ƒ|^à<>cHJcYˆŠe…XiP€; /o EBp¤;7¦( ”#gž? /D>·‹¬”¶!«º‚®>¾Ãº¹¹È¹¶¬e ¶ºÑ¼©˜  a°Þß§Ý$ B› & š6àíÞì#šoÎé›â"îúªC"_Îcª|ABpÒš*ä™òÊO€hî:ã !-B’¥PAJ’ÿhœRá‰/dHpàOš,Œ²ñã(aÊ•c.=)ÄLJ‹Ý9ÃÈ‘ƒˆ(%àY@¤3…jžZPn“Õ÷ü…2ÕQ‚ hZ`€^¸pål)—d9"r ¦  :0Àª”·KóJ+—À¨h[ç`ÁÍ}#§“gU[Ú6- '¹³ nŸ­vùáX¥çÓmhÅÛdú›ÔžÉ-NÍs‰L„°]˜¾ÐJT+£L‡‹Ö˜DÈ‚1_óEŸžÅgÁÒsÈí”Q „ÕH¾\‡”¦Ü²k¥ŽÃW MM_”试þ\¯°\5Î?,õÿv¯¤¡Äxl,R Œp4%±ô–?‘2€Z>@}ô%u‹z‹ Å C¼à@Yv°Èƒ"l,¶Q +·È~¸1wYX²Q^pÆY(†+MœPäeÜs[(¶A1×e(”˜åÊ*‡€a‚l×b\T$bÈ5/wd‹YJy‘gŽ5°b‹xÂb#yöyÒ/^•Ûf~ö‰Žp”Á(ã' PÅŸ…zRÀ$Ô9ËÊi‚i¤E4k°Ô°)§8€ò\ ‚£¤¤–°Â8æÌ€MV€ÖjAðÖ†f3¸aç èz+° Ć€°}aÒ$:¸ƒÿ ´‚ãë¨íÈÅJx˲¤K@æ§!±”RPÖšK¤"„ˆÔ !NLÛ#4ÅÖ"Pýq؃ðÕ„Wä„á^|¼{G½V†P2@ÀObeÎt§]#W8Kž–²Ó9B!Tä£+HÜpÀ¿Ô—×Ps–5"ÈeJ"²5a ~Ü‘aÆcx1Ƴ@DJ Tƒ¶—ÑœóÍ'ˆPåÔ ë¤ò…"Ø ½†Ï ¢ê0€Üá+e,¡_-’PÂ¡Ó j÷òÔT?6$G{7áÖQ° ·Ûux4Ê=žMaF:M÷$y´ÑËšàF ½1SJo¤T â(ÍE“Jï4 ‡yçò³yq3P¦›;åD;,c–r¢z Ë!0ÊaÜ)\A…dp! ^æ0éU›h#D¸•Êý¥• Ã\}áAÉÉDÃÃ]ÑK‘†õ¥(CÅ—ÝSÒ¯q’ŸÇë½eh?Ÿ"¡—€Ï‹•?ª}!__ѹÚ[ĘÒ®"Ýk<õ# t‚¨ˆ…atâÂï*}iB„àE#“$Då Dà† ¾½8fy "H˜B,¬~+l ×™L¼}«Ë!êD-’ªëÀ¡9•!0@ˆCdQ˜´€&Æ(‰¨‰;dicomscope-3.6.0/DICOMscope/icons/untrusted.gif0000644000265600020320000000022107307374256020525 0ustar tilleaadminGIF89a³ÿÀÀÀÿÿîîîáâáÑÐÑÐÏР A!!ù,@>ÈI+E!d2²’€yà˜m]|àD´Ò˜²•¹ª+U |ïÓ°à¤÷ š€ÁƒÊ•NÒD°p@[àŠ‚";dicomscope-3.6.0/DICOMscope/icons/up.gif0000644000265600020320000000031207307374256017115 0ustar tilleaadminGIF89aÄÿÀÀÀööõææåÖÖÔÌÌÌÄÃý½½¶µ´¯¯¯¦¥¤˜•”“Œ‹„ƒ€~}|vuugdd__[WWW???... !ù,@G ŽdY^RÇt™äQ/ \—Uí^ÛÀÄPpÙ.‘G00hÁ¨ôè‹^*„˜k ‘­)ç ˆÀâØBÁ<½©Ü;dicomscope-3.6.0/DICOMscope/icons/up32.gif0000644000265600020320000000073407307374256017272 0ustar tilleaadminGIF89a ÕÿÀÀÀôôðððïïîîíìæåäãÛÛÚÛÚ×××ÖÑÐÍÏÏÏÁÀ¿º¹¹·²²³³¯­­¬«ª£©§¢§¦¥œ›šŠŒŒ‹‰‡‡‚~‚~}||zwsronjhdcgfe`\\^]\XWWSRPPPNOLLHHGHGFFFFCA>B?????663//.&&&!ù, @ù@€pH,È# –Ú$ Ó2™\ª6 䓚R…ÌQÇÓáx<"S*¥6}¤°/rÙ ½âò*sƒ n»xy/%_ !.yŽJKŒFK)'^“C•}(šŽ•NF¢¤TVYI€r/& Á #‹›ÇÈÉÊ0*,’ÊLeÏË`*$ -Г0+# ÛÝß#‡ Ô›ß&D ðçU+ôFøô•ê'‰;r˜¤ P€Ê Åö y±ADö’0P$Œ‰lP¬Y¢C‡ l©¸“pÉ‹—0#É”Y­¦Í›A;dicomscope-3.6.0/DICOMscope/icons/valid.gif0000644000265600020320000000015507307374256017575 0ustar tilleaadminGIF89a¢ÿÀÀÀîîîØØØ3Ü3,Ž,¢!ù,@2ºÜP¬£»`P¨j•XÈ áf=‘Y‚#Q+ÎôD‰*¬Áä‹зóœ.P-”;dicomscope-3.6.0/DICOMscope/icons/verify.gif0000644000265600020320000000016407307374256020002 0ustar tilleaadminGIF89a¢ÿÀÀÀÿÿÆÃÆ„‚„„‚!ù,@9ºÜ0Â11Š$ض!wmE(vL(ABª®Ô÷ p,ÃŽ8’E&¹h5›ð™ÍZ‹³(—*—‘;dicomscope-3.6.0/DICOMscope/icons/verify32.gif0000644000265600020320000000151507307374256020150 0ustar tilleaadminGIF89a æÿÀÀÀÿÿ1ÿÿÿÿúòúô÷ôóîóòóêïëïìåìëëóéìçäççáææÿßßÿÝÞÝÝÖÝ×Ô×ÓÏÓÏÊÏÍÇÍÇÂÇÿÿ»¿¾¹/½½Î»¶»µ±µ²®²¯¬¯©¥©§£§ŸŸ•••“Ž“‹Š‹‹†0‹…‹‡…‡‡‚{y~€~wwwttsnsonogegdc`^`_\_ZYWUWSNSOPOONOGDGFE??:8:3232-2*&((''%' A -'!ù, @ÿ€ „…†‡ˆ‰ Ž(;4( )FF !!&ž¥¥¡@šŸ0,¦¯¥,<'F8¦šº»º¯„°8½ÀŸ$$ ÌÍÎÏ '0µ·.=65áâãäã35>0¿¥C¼¼C¦ƒ¦š Ž:Eº¦Ø½:ðH“b¿à)\¸kÈ#$NHpb† ,.jÌÈñ"‹'&LáBÅ 7DœðPÁ×bÊœ9ÓK*^lPa‹  J€Q£E]ZA… Âp@"0Ø+€ÄTõÔ.O êJð«'MDˆ9Ï—YH ª ÀQ€Lš‚lí$ÐT‰1R´ØaD°¾°¬BØHë+ »Þ:*@Ö! b3óaù‹ÊVMx¡ÉD*ÈèÎװcÇî!ãé DØŠˆ!£DÀ EHfO'NP`PÁB…çУKonš‚ ;wƒØºSì,zx‘cD‡˜ hª§Ù3†hs$"‡çø;ftÁßsŸÜ€Á-;dicomscope-3.6.0/DICOMscope/icons/voi.gif0000644000265600020320000000021607307374256017271 0ustar tilleaadminGIF89a³ÿÀÀÀïïïßßßÏÏÏ¿¿¿¯¯¯ŸŸŸppp!ù,@;ÈIë<½%!V(Žd)€1`âTHH2B’eïÿ^ °±át N7pŒh•$&(–\ Z'e’>”ª2o„…ˆ5Š—|¿ÀÁy;dicomscope-3.6.0/DICOMscope/icons/waveform.gif0000644000265600020320000000010707307374256020321 0ustar tilleaadminGIF89a€ÿÀÀÀ!ù,@ŒÀ°mšKSÙu³>lGì…âhUÙÔ=§š›K";dicomscope-3.6.0/DICOMscope/icons/waveform_sign.gif0000644000265600020320000000061307307374256021343 0ustar tilleaadminGIF89a ÕÿÀÀÀ÷ý÷îûíçùçÚöÚÔõÓÐôÏÎôÍÈòÇÆòÅÄÂĻﺷ쭨릧ꥡ韜蚚ç˜ä‹‰ã‡…ãƒ}ázyàwpÞmoÝlfÛcbÚ_VØSU×ROÖLIÕFFÔBAÓ>?Ò;9Ñ62Ï//Î+ Ë!ù, @¨@€pH,Ä“òX2›K@ÀÚ$„ÍCP ŸÈ¡—`p<‘ÁŒTJ¢FA§‡ïø‚…s-*ÃeD&c~Mw…# "‰xmj˜žwŸFu¦  FlG— $IBPE!œBe#²º¼HŰ" ÇC®E ¬–aÖF q%•¤x£HA;dicomscope-3.6.0/DICOMscope/icons/waveform_unsign.gif0000644000265600020320000000015007307374256021702 0ustar tilleaadminGIF89a ‘ÿÀÀÀÄÂÄ!ù, @9„©‹âŒv×d'+¯l\@–&‡¦¨£‚–µ˜J×ö}›º{ˆãÜ0°(Àlø[ðz2%LJ‹â ;dicomscope-3.6.0/DICOMscope/icons/zoom.gif0000644000265600020320000000013407307374256017457 0ustar tilleaadminGIF89a‘ÿÀÀÀ€€€ÀÀÀ!ù,@-œ0Ûœ^Z”†%Œ‹’G PÒ¦@Gj•è¡¡ù¬/¨~XÝp[jã(Ì;MV‘;dicomscope-3.6.0/DICOMscope/icons/zoom32.gif0000644000265600020320000000035307307374256017627 0ustar tilleaadminGIF89a ‘ÿÀÀÀ€€€ÀÀÀ!ù, @¼œ©Ë½cb€‚Þ¼‹p@…m“@&E¢®5J¡8»0¶"öuÛÁ™å(ˆŒO3$}׳;=7Ù¨a•(— \ £:j¤–‡hC+Ó ë,4Š#¥!IÌâWDF„“´4Ñ7U(QˆE†Hƒ#ÃØhE8•aÐu£UC%‡3‰‘¢WãEU¢Ö!TjÑ‘ÄâÚ3æÖb+¶ôAûczjæºÚ¦—2¶»GçÆg¬8·Ëy'm£w½P;dicomscope-3.6.0/DICOMscope/log/0002755000265600020320000000000011262371102015434 5ustar tilleaadmindicomscope-3.6.0/DICOMscope/log/empty.txt0000644000265600020320000000000011262371102017317 0ustar tilleaadmindicomscope-3.6.0/DICOMscope/lut/0002755000265600020320000000000011135621372015465 5ustar tilleaadmindicomscope-3.6.0/DICOMscope/lut/darken256us.lut0000644000265600020320000000167606772127216020305 0ustar tilleaadminDICMULÂOBUI1.2.276.0.7230010.3.1.0.1UI21.2.276.0.7230010.3.4.2139363186.4680.938003119.1UI1.2.840.10008.1.2.1UI1.2.276.0.7230010.3.0.3.4.0SHOFFIS_DCMTK_340 P SQÿÿÿÿþÿàÿÿÿÿ(0US (0LO*Presentation LUT with descriptor 256/0/12 (0US 000@@P``pp€ °°ÀÐàð!1AQaq‘¡±ÁÑáñ"2BRbr‚’¢²ÂÒâò#3CScsƒ“£³ÃÓãó$4DTdt„”¤´ÄÔäô%5EUeu…•¥µÅÕåõ&6FVfv†–¦¶ÆÖæö'7GWgw‡—§·Ç×ç÷(8HXhxˆ˜¨¸ÈØèø  ) 9 I Y i y ‰ ™ © ¹ É Ù é ù  * : J Z j z Š š ª º Ê Ú ê ú  + ; K [ k { ‹ › « » Ë Û ë û  , < L \ l | Œ œ ¬ ¼ Ì Ü ì ü  - = M ] m } ­ ½ Í Ý í ý .>N^~Žž®¾Þî/O_¯¿þÿ àþÿÝàdicomscope-3.6.0/DICOMscope/lut/darken4096us.lut0000644000265600020320000002067606775124112020367 0ustar tilleaadminDICMULÂOBUI1.2.276.0.7230010.3.1.0.1UI21.2.276.0.7230010.3.4.2139363186.4304.938787945.1UI1.2.840.10008.1.2.1UI1.2.276.0.7230010.3.0.3.4.0SHOFFIS_DCMTK_340 P SQÿÿÿÿþÿàÿÿÿÿ(0US (0LO*Presentation LUT with descriptor 4096/0/12(0US   !""#%&'()+,-./00111222221111000//....-----.../0012346789:;<=>?@@@@@@@@@@@?????@@@ABBCDEFHIJKMNPQRTUVWYZ[\]]^__``````______^___``abcdefgijklmnoppppqqpppppooooopppqrrstuvwxz{|}~€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œž ¡¢£¤¦§¨©ª«¬­®¯¯°°°°°°°°¯¯¯¯¯¯¯¯°°°±²³´µ¶·¸¹»¼½¾ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÐÑÒÓÔÕÖרÙÚÛÜÝÞààáâãäåæçèéêëìíîðñòóôõö÷øùúûüýþÿ     !"#$%&'()*+,-./01123456789:;<=>?ABCDEFGHIJKLMNOPQQRSTUVWXYZ[\]^_abcdefghijklmnopqqrstuvwxyz{|}~€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ¡¡¢£¤¥¦§¨©ª«¬­®¯±²³´µ¶·¸¹º»¼½¾¿ÀÁÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÑÒÓÔÕÖרÙÚÛÜÝÞßàááâãäåæçèéêëìíîïñòóôõö÷øùúûüýþÿ      "#$%&'()*+,-./01223456789:;<=>?@BBCDEFGHIJKLMNOPRSTUVWXYZ[\]^_`abbcdefghijklmnoprstuvwxyz{|}~€‚‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’’“”•–—˜™š›œžŸ ¢£¤¥¦§¨©ª«¬­®¯°±²²³´µ¶·¸¹º»¼½¾¿ÀÂÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÒÓÔÕÖרÙÚÛÜÝÞßàáââãäåæçèéêëìíîïðòóôõö÷øùúûüýþÿ      !#$%&'()*+,-./01233456789:;<=>?@ACDEFGHIJKLMNOPQRSSTUVWXYZ[\]^_`acdefghijklmnopqrsstuvwxyz{|}~€ƒ„…†‡ˆ‰Š‹ŒŽ‘’““”•–—˜™š›œžŸ ¡¢££¤¥¦§¨©ª«¬­®¯°±³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÓÔÕÖרÙÚÛÜÝÞßàáâããäåæçèéêëìíîïðñóôõö÷øùúûüýþÿ      !"$%&'()*+,-./01234456789:;<=>?@ABDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcddefghijklmnopqrtuvwxyz{|}~€‚ƒ„„…†‡ˆ‰Š‹ŒŽ‘’”•–—˜™š›œžŸ ¡¢£¤¤¥¦§¨©ª«¬­®¯°±²³´´µ¶·¸¹º»¼½¾¿ÀÁÂÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖרÙÚÛÜÝÞßàáâãääåæçèéêëìíîïðñòôõö÷øùúûüýþÿ      !"#%&'()*+,-./01234556789:;<=>?@ABCEFGHIJKLMNOPQRSTUUVWXYZ[\]^_`abcefghijklmnopqrstuuvwxyz{|}~€‚ƒ…†‡ˆ‰Š‹ŒŽ‘’“”••–—˜™š›œžŸ ¡¢£¥¦§¨©ª«¬­®¯°±²³´µµ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÕÖרÙÚÛÜÝÞßàáâãäååæçèéêëìíîïðñòóõö÷øùúûüýþÿ      !"#$&'()*+,-./01234566789:;<=>?@ABCDFGHIJKLMNOPQRSTUVVWXYZ[\]^_`abcdffghijklmnopqrstvwxyz{|}~€‚ƒ„…††‡ˆ‰Š‹ŒŽ‘’“”–—˜™š›œžŸ ¡¢£¤¥¦¦§¨©ª«¬­®¯°±²³´¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖÖרÙÚÛÜÝÞßàáâãäææçèéêëìíîïðñòóôö÷øùúûüýþÿ      !"#$%'()*+,-./01234567789:;<=>?@ABCDEGHIJKLMNOPQRSTUVWWXYZ[\]^_`abcdeghijklmnopqrstuvwwxyz{|}~€‚ƒ„…‡ˆ‰Š‹ŒŽ‘’“”•–——˜™š›œžŸ ¡¢£¤¥§¨©ª«¬­®¯°±²³´µ¶··¸¹º»¼½¾¿ÀÁÂÃÄÅÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×רÙÚÛÜÝÞßàáâãäåæççèéêëìíîïðñòóôõ÷øùúûüýþÿ      !"#$%&()*+,-./01234567889:;<=>?@ABCDEFHIJKLMNOPQRSTUVWXXYZ[\]^_`abcdefhijklmnopqrstuvvxyz{|}~€‚ƒ„…†‡ˆˆ‰Š‹ŒŽ‘’“”•–˜™š›œžŸ ¡¢£¤¥¦§¨¨©ª«¬­®¯°±²³´µ¶¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÈÉÊËÌÍÎÏÐÑÒÓÔÕÖØÙÚÛÜÝÞßàáâãäåæçèèéêëìíîïðñòóôõö÷øùúûüýþÿ                           ! " # $ % & ' ) * + , - . / 0 1 2 3 4 5 6 7 8 9 9 : ; < = > ? @ A B C D E F G I J K L M N O P Q R S T U V W X Y Y Z [ \ ] ^ _ ` a b c d e f g i j k l m n o p q r s t u v w x y y z { | } ~  € ‚ ƒ „ … † ‡ ‰ Š ‹ Œ Ž ‘ ’ “ ” • – — ˜ ™ ™ š › œ ž Ÿ   ¡ ¢ £ ¤ ¥ ¦ § © ª « ¬ ­ ® ¯ ° ± ² ³ ´ µ ¶ · ¸ ¹ ¹ º » ¼ ½ ¾ ¿ À Á Â Ã Ä Å Æ Ç É Ê Ë Ì Í Î Ï Ð Ñ Ò Ó Ô Õ Ö × Ø Ù Ù Ú Û Ü Ý Þ ß à á â ã ä å æ ç é ê ë ì í î ï ð ñ ò ó ô õ ö ÷ ø ù ù ú û ü ý þ ÿ                         ! " # $ % & ' ( ) * * + , - . / 0 1 2 3 4 5 6 7 8 : ; < = > ? @ A B C D E F G H I J J K L M N O P Q R S T U V W X Z [ \ ] ^ _ ` a b c d e f g h i j j k l m n o p q r s t u v w x z { | } ~  € ‚ ƒ „ … † ‡ ˆ ‰ Š Š ‹ Œ Ž ‘ ’ “ ” • – — ˜ š › œ ž Ÿ   ¡ ¢ £ ¤ ¥ ¦ § ¨ © ª ª « ¬ ­ ® ¯ ° ± ² ³ ´ µ ¶ · ¸ º » ¼ ½ ¾ ¿ À Á Â Ã Ä Å Æ Ç È É Ê Ê Ë Ì Í Î Ï Ð Ñ Ò Ó Ô Õ Ö × Ø Ú Û Ü Ý Þ ß à á â ã ä å æ ç è é ê ê ë ì í î ï ð ñ ò ó ô õ ö ÷ ø ú û ü ý þ ÿ                            ! " # $ % & ' ( ) + , - . / 0 1 2 3 4 5 6 7 8 9 : ; ; < = > ? @ A B C D E F G H I K L M N O P Q R S T U V W X Y Z [ [ \ ] ^ _ ` a b c d e f g h i k l m n o p q r s t u v w x y z { { | } ~  € ‚ ƒ „ … † ‡ ˆ ‰ ‹ Œ Œ Ž ‘ ’ “ ” • – — ˜ ™ › œ ž Ÿ   ¡ ¢ £ ¤ ¥ ¦ § ¨ © ª « « ¬ ­ ® ¯ ° ± ² ³ ´ µ ¶ · ¸ ¹ » ¼ ½ ¾ ¿ À Á Â Ã Ä Å Æ Ç È É Ê Ë Ë Ì Í Î Ï Ð Ñ Ò Ó Ô Õ Ö × Ø Ù Û Ü Ý Þ ß à á â ã ä å æ ç è é ê ë ë ì í î ï ð ñ ò ó ô õ ö ÷ ø ù û ü ý þ ÿ                            ! " # $ % & ' ( ) * + , , - . / 0 1 2 3 4 5 6 7 8 9 : < = > ? @ A B C D E F G H I J K L L M N O P Q R S T U V W X Y Z \ ] ^ _ ` a b c d e f g h i j k l l m n o p q r s t u v w x y z | } ~  € ‚ ƒ „ … † ‡ ˆ ‰ Š ‹ Œ Œ Ž ‘ ’ “ ” • – — ˜ ™ š œ ž Ÿ   ¡ ¢ £ ¤ ¥ ¦ § ¨ © ª « ¬ ¬ ­ ® ¯ ° ± ² ³ ´ µ ¶ · ¸ ¹ º ¼ ½ ¾ ¿ À Á Â Ã Ä Å Æ Ç È É Ê Ë Ì Ì Í Î Ï Ð Ñ Ò Ó Ô Õ Ö × Ø Ù Ú Ü Ý Þ ß à á â ã ä å æ ç è é ê ë ì ì í î ï ð ñ ò ó ô õ ö ÷ ø ù ú ü ý þ ÿ                           ! " # $ % & ' ( ) * + , - - . / 0 1 2 3 4 5 6 7 8 9 : ; < = = > ? @ A B C D E F G H I J K M N O P Q R S T U V W X Y Z [ \ ] ] ^ _ ` a b c d e f g h i j k m n o p q r s t u v w x y z { | } } ~  € ‚ ƒ „ … † ‡ ˆ ‰ Š ‹ Ž ‘ ’ “ ” • – — ˜ ™ š › œ ž Ÿ   ¡ ¢ £ ¤ ¥ ¦ § ¨ © ª « ¬ ­ ­ ® ¯ ° ± ² ³ ´ µ ¶ · ¸ ¹ º » ½ ¾ ¿ À Á Â Ã Ä Å Æ Ç È É Ê Ë Ì Í Í Î Ï Ð Ñ Ò Ó Ô Õ Ö × Ø Ù Ú Û Ý Þ ß à á â ã ä å æ ç è é ê ë ì í í î ï ð ñ ò ó ô õ ö ÷ ø ù ú û ý þ ÿ      !"#$%&'()*+,../0123456789:;<>?@ABCDEEFGHIJKLMNNOPQQRSTUVWXYZ\^_acegiknprtvxz|~‚ƒ„…†‡ˆ‰ŠŠ‹ŒŽŽ‘’“”•–—˜™š›œžŸ ¡¢£¤¥¦§¨©ª«¬­®®¯°±±²³´µ¶·¸¹º¼¾¿ÁÃÅÇÊÌÎÐÒÔÖØÚÜÞßàáâãäååæçèéêëìîïñóõ÷ùûý     !"##$%&')*+-/02468;=?ACFHIKMOPQRSTUVVWXYZ[\]_`bdfhjloqsuwy{}€‚ƒ„…†‡‡ˆ‰Š‹Œ’”•—šœž ¢¥§©«­¯°²³´¶·¸¹¹º»¼¼½½¾¿þÿ àþÿÝàdicomscope-3.6.0/DICOMscope/lut/lighten256us.lut0000644000265600020320000000167606772127274020477 0ustar tilleaadminDICMULÂOBUI1.2.276.0.7230010.3.1.0.1UI21.2.276.0.7230010.3.4.2139363186.4685.938003165.1UI1.2.840.10008.1.2.1UI1.2.276.0.7230010.3.0.3.4.0SHOFFIS_DCMTK_340 P SQÿÿÿÿþÿàÿÿÿÿ(0US (0LO*Presentation LUT with descriptor 256/0/12 (0US@Pp€ °Ðàð!AQaq¡±ÁÑáñ"2BRbr‚’¢²ÂÒâò#3CScsƒ“£³ÃÓãó$4DTdt„”¤´ÄÔäô%5EUeu…•¥µÅÕåõ&6FVfv†–¦¶ÆÖæö'7GWgw‡—§·Ç×ç÷(8HXhxˆ˜¨¸ÈØèø  ) 9 I Y i y ‰ ™ © ¹ É Ù é ù  * : J Z j z Š š ª º Ê Ú ê ú  + ; K [ k { ‹ › « » Ë Û ë û  , < L \ l | Œ œ ¬ ¼ Ì Ü ì ü  - = M ] m } ­ ½ Í Ý í ý .>N^n~Žž®¾ÎÞîþ/?OO_oŸŸ¯¿¿ÏÏÏßßïïïïïþÿ àþÿÝàdicomscope-3.6.0/DICOMscope/lut/lighten4096us.lut0000644000265600020320000002067606775124066020565 0ustar tilleaadminDICMULÂOBUI1.2.276.0.7230010.3.1.0.1UI21.2.276.0.7230010.3.4.2139363186.4302.938787926.1UI1.2.840.10008.1.2.1UI1.2.276.0.7230010.3.0.3.4.0SHOFFIS_DCMTK_340 P SQÿÿÿÿþÿàÿÿÿÿ(0US (0LO*Presentation LUT with descriptor 4096/0/12(0US @@AABCDDEFGHJKLNPQSUWY\^`bdgijlnpqrstuvwwxyz{|}~€ƒ…‡‰‹’”–˜šœž ¡¢£¤¥¦§¨¨©ª«¬­®°±³µ¶¸»½¿ÁÃÆÈÊÌÎÐÑÓÔÕרÙÚÛÛÜÝÞÞßààááâãääåæçèéëìîðñóõøúüþ   !"$&(*,.02479;=?ABDEFGHIJKLMMNOPQQRSTUVWXYZ[\]^_abcdefghijklmnopqqrsttuvwxyz{|}‚„†ˆŠŒŽ‘“•—™›Ÿ¡¢£¥¦§¨©ª««¬­®®¯°±±²³´µ¶·¸¹º»¼½¾¿ÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÑÒÓÔÕÖרÙÚÜÝÞßàááâãäåæçèéêëìíîïñòóôõö÷øùúûüýþÿ      "#$%&'()*+,-./01223456789:;<=>?@BCDEFGHIJKLMNOPQRRSTUVWXYZ[\]^_`bcdefghijklmnopqrrstuvwxyz{|}~€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’’“”•–—˜™š›œžŸ ¢£¤¥¦§¨©ª«¬­®¯°±²²³´µ¶·¸¹º»¼½¾¿ÀÁÂÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÒÓÔÕÖרÙÚÛÜÝÞßàáââãäåæçèéêëìíîïðòóôõö÷øùúûüýþÿ      !#$%&'()*+,-./01233456789:;<=>?@ACDEFGHIJKLMNOPQRSSTUVWXYZ[\]^_`accdefghijklmnopqstuvwxyz{|}~€‚ƒƒ„…†‡ˆ‰Š‹ŒŽ‘“”•–—˜™š›œžŸ ¡¢££¤¥¦§¨©ª«¬­®¯°±³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÓÔÕÖרÙÚÛÜÝÞßàáããäåæçèéêëìíîïðñóôõö÷øùúûüýþÿ      !"$%&'()*+,-./01234456789:;<=>?@ABDEFGHIJKLMNOPQRSTTUVWXYZ[\]^_`abdefghijklmnopqrsttuvwxyz{|}~€‚„…†‡ˆ‰Š‹ŒŽ‘’“””•–—˜™š›œžŸ ¡¢¤¥¦§¨©ª«¬­®¯°±²³´´µ¶·¸¹º»¼½¾¿ÀÁÂÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÔÕÖרÙÚÛÜÝÞßàáâãääåæçèéêëìíîïðñòôõö÷øùúûüýþÿ      !"#%&'()*+,-./01234556789:;<=>?@ABCEFGHIJKLMNOPQRSTUUVWXYZ[\]^_`abcefghijklmnopqrssuvwxyz{|}~€‚ƒ„……†‡ˆ‰Š‹ŒŽ‘’“•–—˜™š›œžŸ ¡¢£¤¥¥¦§¨©ª«¬­®¯°±²³µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÕÖרÙÚÛÜÝÞßàáâãäååæçèéêëìíîïðñòóôõö÷øùúûüýþÿ      !"#$&'()*+,-./01234566789:;<=>?@ABCDFGHIJKLMNOPQRSTUVVWXYZ[\]^_`abcdfghijklmnopqrstuvvwxyz{|}~€‚ƒ„†‡ˆ‰Š‹ŒŽ‘’“”•––—˜™š›œžŸ ¡¢£¤¦§¨©ª«¬­®¯°±²³´µ¶¶·¸¹º»¼½¾¿ÀÁÂÃÄÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖÖרÙÚÛÜÝÞßàáâãäæçèéêëìíîïðñòóôõöö÷øùúûüýÿ      !"#$%&''()*+,-./012345789:;<=>?@ABCDEFGGHIJKLMNOPQRSTUWXYZ[\]^_`abcdefgghijklmnopqrstuwxyz{|}~€‚ƒ„…†‡‡ˆ‰Š‹ŒŽ‘’“”•—˜™š›œžŸ ¡¢£¤¥¦§§¨©ª«¬­®¯°±²³´µ·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÇÈÉÊËÌÍÎÏÐÑÒÓÔÕרÙÚÛÜÝÞßàáâãäåæççèéêëìíîïðñòóôõ÷øùúûüýþÿ      !"#$%&()*+,-./01234567889:;<=>?@ABCDEFHIJKLMNOPQRSTUVWXXYZ[\]^_`abcdefhijklmnopqrstuvwxxyz{|}~€‚ƒ„…†ˆ‰‰Š‹ŒŽ‘’“”•–˜™š›œžŸ ¡¢£¤¥¦§¨¨©ª«¬­®¯°±²³´µ¶¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÈÉÊËÌÍÎÏÐÑÒÓÔÕÖØÙÚÛÜÝÞßàáâãäåæçèèéêëìíîïðñòóôõöøùúûüýþÿ                           ! " # $ % & ' ( ) ) * + , - . / 0 1 2 3 4 5 6 7 9 : ; < = > ? @ A B C D E F G H I I J K L M N O P Q R S T U V W Y Z [ \ ] ^ _ ` a b c d e f g h i i j k l m n o p q r s t u v w y z { | } ~  € ‚ ƒ „ … † ‡ ˆ ‰ ‰ Š ‹ Œ Ž ‘ ’ “ ” • – — ™ š › œ ž Ÿ   ¡ ¢ £ ¤ ¥ ¦ § ¨ © © ª « ¬ ­ ® ¯ ° ± ² ³ ´ µ ¶ · ¹ º » ¼ ½ ¾ ¿ À Á Â Ã Ä Å Æ Ç È É É Ê Ë Ì Í Î Ï Ð Ñ Ò Ó Ô Õ Ö × Ù Ú Û Ü Ý Þ ß à á â ã ä å æ ç è é é ê ë ì í î ï ð ñ ò ó ô õ ö ÷ ù ú û ü ý þ ÿ                           ! " # $ % & ' ( ) * * + , - . / 0 1 2 3 4 5 6 7 8 9 : : ; < = > ? @ A B C D E F G H J K L M N O P Q R S T U V W X Y Z Z [ \ ] ^ _ ` a b c d e f g h j k l m n o p q r s t u v w x y z z { | } ~  € ‚ ƒ „ … † ‡ ˆ Š ‹ Œ Ž ‘ ’ “ ” • – — ˜ ™ š › œ ž Ÿ   ¡ ¢ £ ¤ ¥ ¦ § ¨ © ª ª « ¬ ­ ® ¯ ° ± ² ³ ´ µ ¶ · ¸ º » ¼ ½ ¾ ¿ À Á Â Ã Ä Å Æ Ç È É Ê Ê Ë Ì Í Î Ï Ð Ñ Ò Ó Ô Õ Ö × Ø Ú Û Ü Ý Þ ß à á â ã ä å æ ç è é ê ê ë ì í î ï ð ñ ò ó ô õ ö ÷ ø ú û ü ý þ ÿ                            ! " # $ % & ' ( ) + , - . / 0 1 2 3 4 5 6 7 8 9 : ; ; < = > ? @ A B C D E F G H I J K K L M N O P Q R S T U V W X Y [ \ ] ^ _ ` a b c d e f g h i j k k l m n o p q r s t u v w x y { | } ~  € ‚ ƒ „ … † ‡ ˆ ‰ Š ‹ ‹ Œ Ž ‘ ’ “ ” • – — ˜ ™ › œ ž Ÿ   ¡ ¢ £ ¤ ¥ ¦ § ¨ © ª « « ¬ ­ ® ¯ ° ± ² ³ ´ µ ¶ · ¸ ¹ » ¼ ½ ¾ ¿ À Á Â Ã Ä Å Æ Ç È É Ê Ë Ë Ì Í Î Ï Ð Ñ Ò Ó Ô Õ Ö × Ø Ù Û Ü Ý Þ ß à á â ã ä å æ ç è é ê ë ë ì í î ï ð ñ ò ó ô õ ö ÷ ø ù û ü ý þ ÿ                            ! " # $ % & ' ( ) * , , - . / 0 1 2 3 4 5 6 7 8 9 : < = > ? @ A B C D E F G H I J K L L M N O P Q R S T U V W X Y Z [ \ \ ] ^ _ ` a b c d e f g h i j l m n o p q r s t u v w x y z { | | } ~  € ‚ ƒ „ … † ‡ ˆ ‰ Š Œ Ž ‘ ’ “ ” • – — ˜ ™ š › œ œ ž Ÿ   ¡ ¢ £ ¤ ¥ ¦ § ¨ © ª ¬ ¬ ­ ® ¯ ° ± ² ³ ´ µ ¶ · ¸ ¹ º ¼ ½ ¾ ¿ À Á Â Ã Ä Å Æ Ç È É Ê Ë Ì Ì Í Î Ï Ð Ñ Ò Ó Ô Õ Ö × Ø Ù Ú Ü Ý Þ ß à á â ã ä å æ ç è é ê ë ì ì í î ï ð ñ ò ó ô õ ö ÷ ø ù ú ü ý þ ÿ                            ! " # $ % & ' ( ) * + - . / 0 1 2 3 4 5 6 7 8 9 : ; < = = > ? @ A B C D E F G H I J K M N O P Q R S T U V W X Y Z [ \ ] ] ^ _ ` a b c d e f g h i j k l m m n o p q r s t u v w x y z { } ~  € ‚ ƒ „ … † ‡ ˆ ‰ Š ‹ Œ Ž ‘ ’ “ ” • – — ˜ ™ š › ž Ÿ   ¡ ¢ £ ¤ ¥ ¦ § ¨ © ª « ¬ ­ ­ ® ¯ ° ± ² ³ ´ µ ¶ · ¸ ¹ º » ½ ¾ ¿ À Á Â Ã Ä Å Æ Ç È É Ê Ë Ì Í Í Î Ï Ð Ñ Ò Ó Ô Õ Ö × Ø Ù Ú Û Ý Þ ß à á â ã ä å æ ç è é ê ë ì í í î ï ð ñ ò ó ô õ ö ÷ ø ù ú û ý þ ÿ      !"#$%&'()*+,./0123456789:;<=>?@ABCDEFGHIJKLMNNOPQRSTUVWXYZ[\^_`abcdefghijklmnnopqrstuvwxyz{|}~~€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžžŸ ¡¢£¤¥¦§¨©ª«¬®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÎÏÐÑÒÓÔÕÖרÙÚÛÜÞßàáâãäåæçèéêëìíîîïðñòóôõö÷øùúûüþÿ      !"#$%&'()*+,-.//0123456789:;<=?@ABCEFGHIJKLMNNOOOOOOOOONNNNNNNOOOPQRSTUVWXZ[\]_`abcdefghijklmnoopqrstuuvwxyz{|}€‚ƒ…†‡ˆ‰Š‹ŒŽŽŽŽŽŽŽŽŽŽŽ‘’“”•–˜™š›œžŸŸŸŸ  ŸŸŸŸŸžžžžžŸŸŸ ¡¡¢£¤¥§¨©ª¬­¯°±³´µ¶¸¹º»¼¼½¾¾¿¿¿¿¿¿¾¾¾¾¾¾¾¾¾¾¿¿ÀÁÂÃÄÅÆÇÈÊËÌÍÎÏÏÐÐÐÑÑÑÑÑÐÐÐÐÏÏÏÎÎÍÍÍÍÌÌÌÌÌÍÍÍÎÏÏÐÑÒÓÕÖרÙÛÜÜÝÞßßßßßßßßÞÞÞÞÞÞÞÞßßàáâãäåæçéêëìíîïïððððððððððïïïïïîîîîîîîîîîîîîîîïïïïïïïïïïïïïïïïïîîîîîîîîîîîîîîîîïþÿ àþÿÝàdicomscope-3.6.0/DICOMscope/lut/linear256us.lut0000644000265600020320000000166207021230270020265 0ustar tilleaadminDICMUL¸OBUI1.2.276.0.7230010.3.1.0.1UI(1.2.276.0.7230010.3.4.0.139.944083751.1UI1.2.840.10008.1.2.1UI1.2.276.0.7230010.3.0.3.4.0SHOFFIS_DCMTK_340 P SQÿÿÿÿþÿàÿÿÿÿ(0US (0LO(LUT with gamma 1.0, descriptor 256/0/12 (0US 0@P`p€ °ÀÐàð!1AQaq‘¡±ÁÑáñ"2BRbr‚’¢²ÂÒâò"3CScsƒ“£³ÃÓãó#3DTdt„”¤´ÄÔäô$4DUeu…•¥µÅÕåõ%5EUfv†–¦¶ÆÖæö&6FVfw‡—§·Ç×ç÷'7GWgwˆ˜¨¸ÈØèø  ( 8 H X h x ˆ ™ © ¹ É Ù é ù  ) 9 I Y i y ‰ ™ ª º Ê Ú ê ú  * : J Z j z Š š ª » Ë Û ë û  + ; K [ k { ‹ › « » Ì Ü ì ü  , < L \ l | Œ œ ¬ ¼ Ì Ý í ý -=M]m}­½ÍÝîþ.>N^n~Žž®¾ÎÞîÿþÿ àþÿÝàdicomscope-3.6.0/DICOMscope/lut/linear4096us.lut0000644000265600020320000002066207021230306020354 0ustar tilleaadminDICMUL¸OBUI1.2.276.0.7230010.3.1.0.1UI(1.2.276.0.7230010.3.4.0.149.944083764.1UI1.2.840.10008.1.2.1UI1.2.276.0.7230010.3.0.3.4.0SHOFFIS_DCMTK_340 P SQÿÿÿÿþÿàÿÿÿÿ(0US (0LO(LUT with gamma 1.0, descriptor 4096/0/12(0US   !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖרÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖרÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖרÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖרÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖרÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖרÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖרÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖרÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖרÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ                           ! " # $ % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? @ A B C D E F G H I J K L M N O P Q R S T U V W X Y Z [ \ ] ^ _ ` a b c d e f g h i j k l m n o p q r s t u v w x y z { | } ~  € ‚ ƒ „ … † ‡ ˆ ‰ Š ‹ Œ Ž ‘ ’ “ ” • – — ˜ ™ š › œ ž Ÿ   ¡ ¢ £ ¤ ¥ ¦ § ¨ © ª « ¬ ­ ® ¯ ° ± ² ³ ´ µ ¶ · ¸ ¹ º » ¼ ½ ¾ ¿ À Á Â Ã Ä Å Æ Ç È É Ê Ë Ì Í Î Ï Ð Ñ Ò Ó Ô Õ Ö × Ø Ù Ú Û Ü Ý Þ ß à á â ã ä å æ ç è é ê ë ì í î ï ð ñ ò ó ô õ ö ÷ ø ù ú û ü ý þ ÿ                           ! " # $ % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? @ A B C D E F G H I J K L M N O P Q R S T U V W X Y Z [ \ ] ^ _ ` a b c d e f g h i j k l m n o p q r s t u v w x y z { | } ~  € ‚ ƒ „ … † ‡ ˆ ‰ Š ‹ Œ Ž ‘ ’ “ ” • – — ˜ ™ š › œ ž Ÿ   ¡ ¢ £ ¤ ¥ ¦ § ¨ © ª « ¬ ­ ® ¯ ° ± ² ³ ´ µ ¶ · ¸ ¹ º » ¼ ½ ¾ ¿ À Á Â Ã Ä Å Æ Ç È É Ê Ë Ì Í Î Ï Ð Ñ Ò Ó Ô Õ Ö × Ø Ù Ú Û Ü Ý Þ ß à á â ã ä å æ ç è é ê ë ì í î ï ð ñ ò ó ô õ ö ÷ ø ù ú û ü ý þ ÿ                           ! " # $ % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? @ A B C D E F G H I J K L M N O P Q R S T U V W X Y Z [ \ ] ^ _ ` a b c d e f g h i j k l m n o p q r s t u v w x y z { | } ~  € ‚ ƒ „ … † ‡ ˆ ‰ Š ‹ Œ Ž ‘ ’ “ ” • – — ˜ ™ š › œ ž Ÿ   ¡ ¢ £ ¤ ¥ ¦ § ¨ © ª « ¬ ­ ® ¯ ° ± ² ³ ´ µ ¶ · ¸ ¹ º » ¼ ½ ¾ ¿ À Á Â Ã Ä Å Æ Ç È É Ê Ë Ì Í Î Ï Ð Ñ Ò Ó Ô Õ Ö × Ø Ù Ú Û Ü Ý Þ ß à á â ã ä å æ ç è é ê ë ì í î ï ð ñ ò ó ô õ ö ÷ ø ù ú û ü ý þ ÿ                           ! " # $ % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? @ A B C D E F G H I J K L M N O P Q R S T U V W X Y Z [ \ ] ^ _ ` a b c d e f g h i j k l m n o p q r s t u v w x y z { | } ~  € ‚ ƒ „ … † ‡ ˆ ‰ Š ‹ Œ Ž ‘ ’ “ ” • – — ˜ ™ š › œ ž Ÿ   ¡ ¢ £ ¤ ¥ ¦ § ¨ © ª « ¬ ­ ® ¯ ° ± ² ³ ´ µ ¶ · ¸ ¹ º » ¼ ½ ¾ ¿ À Á Â Ã Ä Å Æ Ç È É Ê Ë Ì Í Î Ï Ð Ñ Ò Ó Ô Õ Ö × Ø Ù Ú Û Ü Ý Þ ß à á â ã ä å æ ç è é ê ë ì í î ï ð ñ ò ó ô õ ö ÷ ø ù ú û ü ý þ ÿ                           ! " # $ % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? @ A B C D E F G H I J K L M N O P Q R S T U V W X Y Z [ \ ] ^ _ ` a b c d e f g h i j k l m n o p q r s t u v w x y z { | } ~  € ‚ ƒ „ … † ‡ ˆ ‰ Š ‹ Œ Ž ‘ ’ “ ” • – — ˜ ™ š › œ ž Ÿ   ¡ ¢ £ ¤ ¥ ¦ § ¨ © ª « ¬ ­ ® ¯ ° ± ² ³ ´ µ ¶ · ¸ ¹ º » ¼ ½ ¾ ¿ À Á Â Ã Ä Å Æ Ç È É Ê Ë Ì Í Î Ï Ð Ñ Ò Ó Ô Õ Ö × Ø Ù Ú Û Ü Ý Þ ß à á â ã ä å æ ç è é ê ë ì í î ï ð ñ ò ó ô õ ö ÷ ø ù ú û ü ý þ ÿ       !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖרÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖרÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿþÿ àþÿÝàdicomscope-3.6.0/DICOMscope/lut/midtone256us.lut0000644000265600020320000000167606772127246020503 0ustar tilleaadminDICMULÂOBUI1.2.276.0.7230010.3.1.0.1UI21.2.276.0.7230010.3.4.2139363186.4684.938003143.1UI1.2.840.10008.1.2.1UI1.2.276.0.7230010.3.0.3.4.0SHOFFIS_DCMTK_340 P SQÿÿÿÿþÿàÿÿÿÿ(0US (0LO*Presentation LUT with descriptor 256/0/12 (0US 000@@@PPP```ppp€€€   °°°ÀÀÀÐÐÐàààðð!!1AAQQaqq‘¡¡±ÁÑááñ""2BRbrr‚’¢²ÂÂÒâò#3CSsƒ“£³Óã$Ddt”¤Ää%5Uu•µÕõ6f†¦Ææ'Gg‡§Ç÷8Xx˜¸Øø 9 Y i ‰ © É é ù  : J j z š ª Ê Ú ú + ; K k { ‹ « » Ë Û û  , L \ l | Œ ¬ ¼ Ì Ü ü  - M ] m } ­ ½ Í Ý í ý .>N^^n~~Žžž®¾¾ÎÎÞÞîîþþ///??OO__ooŸŸ¯¯¿¿ÏÏßßþÿ àþÿÝàdicomscope-3.6.0/DICOMscope/lut/midtone4096us.lut0000644000265600020320000002067606775124100020557 0ustar tilleaadminDICMULÂOBUI1.2.276.0.7230010.3.1.0.1UI21.2.276.0.7230010.3.4.2139363186.4303.938787935.1UI1.2.840.10008.1.2.1UI1.2.276.0.7230010.3.0.3.4.0SHOFFIS_DCMTK_340 P SQÿÿÿÿþÿàÿÿÿÿ(0US (0LO*Presentation LUT with descriptor 4096/0/12(0US   !!!!""!!!!!  !"#$%&')*+,-./00111122211110000///....---..../0012345689:;<=>?@@AAAABBAAAAA@@@@???>>>>>==>>>>?@@ABCDEFGIJKLMNOPPQQQQRRRQQQQPPPPOOONNNNMMMNNNNOPPQRSTUVXYZ[\]^_``aaaabbaaaaa````___^^^^^^^^^^^_``abcdefghijklmnoppqqqqqqqqqqqppppooonnnnnmmnnnnoppqrstuvwyz{|}~€€‚‚‚€€€€~~~~}}}~~~~€€‚ƒ„…†ˆ‰Š‹ŒŽ‘‘‘‘’’‘‘‘‘‘ŽŽŽŽŽŽŽŽŽ‘’“”•–—™š›œžŸ  ¡¡¡¡¢¢¢¡¡¡¡    ŸŸŸžžžžžžžžŸ  ¡¢£¤¥¦¨©ª«¬­®¯°°±±±±²²±±±±±°°°°¯¯¯®®®®®­­®®®®¯°°±²³´µ¶·¹º»¼½¾¿ÀÀÁÁÁÁÂÂÂÁÁÁÁÀÀÀÀ¿¿¿¾¾¾¾½½½½½¾¾¾¿ÀÀÁÂÃÄÅÆÈÉÊËÌÍÎÏÐÐÑÑÑÑÒÒÑÑÑÑÑÐÐÐÐÏÏÏÎÎÎÎÎÍÍÎÎÎÎÏÐÐÑÒÓÔÕÖ×ÙÚÛÜÝÞßààááááâââááááààààßßÞÞÞÞÝÝÝÝÝÞÞÞßààáâãäæçèéêìííîïððððððððïïïïïïïïððñòóôõö÷ùúûüþÿÿÿÿÿþþþþþÿÿÿ     !!!!""!!!!!     !!!"##$%&()*+-./12346789:;<=>??@@AAAAA@@@@@????@@AABCDEFGIJKLMNOPQQQQRQQQQQQPPPPPQQQRSSTUVWYZ[\^_abcefghiklmmnoppqqqqqqqqppppppppqqrrstuvwxy{|}~‚ƒ„…†‡ˆˆ‰Š‹ŒŽ‘’“”•–˜™š›œžŸŸ ¡¡¡¡¡¡¡¡¡       ¡¡¡¢£¤¥¦§¨©ª¬­®¯±²³´µ¶·¸¹º»¼½¾¿ÀÁÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÑÒÓÔÕרÙÚÛÜÝÞßààáááááááááàààààààáááâãäåæçèéêìíîïñòóôõö÷øùúûüýþÿ      !!""""""""!!!!!!!!"""#$%&'()*+-./023456789:;<=>?@ABBCDEFGHJKLMNOPQRRSTUVWXYZ[\]^_`bcdefhijklmnopqqrrrrrrrrqqqqqqqqrrrstuvwxyz{}~€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’’“”•–—˜š›œžŸ ¡¢¢£¤¥¦§¨©ª«¬­®¯°²³´µ¶¸¹º»¼½¾¿ÀÁÁÂÂÂÂÂÂÂÂÁÁÁÁÁÁÁÁÂÂÃÃÄÅÆÇÈÉÊËÍÎÏÐÒÓÔÕÖרÙÚÛÛÜÝÞßàáââãäåæçèéêëìíîïðòóôõ÷øùúüýþÿ     !"##$%&'()*+,-./013456789:;<=>?@ABCCDEFFGHIJKLMNOQSTVXZ\^`begikmoqstvwxyz{|}~€‚ƒƒ„…†‡ˆ‰Š‹ŒŽ‘“”•–—˜™š›œžŸ ¡¢££¤¥¦¦§¨©ª«¬­®¯±³´¶¸º¼¿ÁÃÅÇÉËÍÏÑÓÔÕÖרÙÚÚÛÜÝÞßàáãäæèêìîðóõ÷ùüþ     !"$%'(*,.02468:=?ADFHJMOQSVXZ\]_abdefghiijklmnnpqrtuwy{}„†ˆŠŒŽ’”•–—˜™š›œžŸ ¡¢¤¥¦¨ª¬®°²´¶¸»½¿ÁÄÆÈÊÌÎÐÒÔÖØÚÜÞàâäåçéëíïñóöøúüþ    "#%&'()*+,,-./01235679;=?ACEGILNPRUWY[]_acegikmoqsuvxz|~€‚„†ˆŠŒŽ’•—™›œž ¢¤¦¨ª¬®°²µ·¹»½¿ÁÃÅÇÉËÍÏÑÓÕÖØÚÜÞàâãåçéëíïñóõ÷ùûýÿ   "$&(*,.1368;>ADGJMQTWZ]`cfhkmoqsuwy{}~€‚„†‡‰‹‘“•—™›Ÿ¡£¦¨ª¬®°²´¶¸º¼¾ÀÂÄÆÇÉËÍÏÑÓÕ×ÙÛÝßáãæèêìîðòôöøúüþ   !#%'(*,.02468:<>@BDGIKMOQSUWY[]_aceghjlnprtvxz|~€‚„‡‰‹‘“•—™›Ÿ¡£¥§¨ª¬®¯±³µ·¹»½¿ÂÄÇÉÌÏÒÕØÛÞâåèëîñô÷ùüþ   !"$&(*,.024689;=?ACEGIKMOQSUXZ\^`bdfhjlnprtvxy{}ƒ…‡‰‹‘“–˜™›Ÿ¡£¥§©«­¯±³µ¸º¼¾ÀÂÄÆÈÊÌÎÐÒÔÖØÙÛÝßáãåçéëíïñóõøúüþ              " $ & ( * , . 0 2 4 6 9 ; = ? A D F H J L N P R T U W Y Z [ \ ] ^ _ ` a a b c d e f g i j k m o q s u w y { } € ‚ „ † ‰ ‹ ‘ “ • — ™ › Ÿ ¡ £ ¥ § © ª ¬ ® ° ² ´ ¶ ¸ º ¼ ¾ À Â Ä Æ É Ë Í Ï Ñ Ô Ö Ø Ú Ü Þ à â ä æ ç é ê ë ì í î ï ð ð ñ ò ó ô õ ö ÷ ù ú ü ý ÿ             # % ' ) + - / 1 2 4 5 7 8 : ; < = = > ? @ A A B C D E G H J K M O Q S U W Z \ ^ ` b d f h j k l m n o p q q r s t u v w x z { }  ƒ … ‡ Š Œ Ž ’ ” – ˜ š › œ ž Ÿ   ¡ ¡ ¢ £ ¤ ¥ ¦ § ¨ ª « ­ ¯ ± ³ µ · ¹ ¼ ¾ À Â Ä Æ È Ê Ë Ì Í Î Ï Ð Ñ Ò Ò Ó Ô Õ Ö × Ø Ú Û Ý ß á ã å ç é ì î ð ò ô ö ø ú û ü ý ÿ                  ! # % ' ) + , . / 0 2 3 4 5 6 6 7 8 9 9 : ; ; < = = > ? @ @ A B D E F G I K L N P R T V X [ ] _ a c e g i k l n o p q s t u u v w x x y z { { | } } ~  € € ‚ „ … † ‡ ‰ ‹ Œ Ž ’ ” – ™ › Ÿ ¡ £ ¥ § © « ¬ ­ ¯ ° ± ² ³ ´ ´ µ ¶ · · ¸ ¹ º » » ¼ ½ ¾ ¿ À Á Â Ã Å Æ Ç È É Ê Ë Ë Ì Í Î Ï Ï Ð Ñ Ò Ó Ô Õ Ö Ø Ù Û Ü Þ à â ä æ è ê í ï ñ ó õ ÷ ù û ü þ ÿ                           ! " # $ % & ' ) * , - / 1 3 5 7 9 ; > @ B D F H J L M O P Q R S T U V W X X Y Z [ \ \ ] ^ _ ` a b c d e f g h i j l m n o p q r s t u v w x y z { | | } ~   € ‚ ƒ „ … † ‡ ˆ Š Œ ‘ “ • — ™ œ ž   ¢ ¤ ¦ ¨ ª ¬ ­ ® ° ± ² ³ ´ µ ¶ · · ¸ ¹ º » ¼ ¼ ½ ¾ ¿ À Á Â Ã Å Æ Ç È É Ê Ë Ì Ì Í Î Ï Ð Ð Ñ Ò Ó Ô Õ Ö × Ù Ú Ü Ý ß á ã å ç é ë î ð ò ô ö ø ú ü ý ÿ                            ! ! " # $ % & ' ( * + - . 0 2 4 6 8 : < ? A C E G I K M N P Q R S T U V W X Y Y Z [ \ ] ] ^ _ ` a b c d e f g h i j k m n o p q r s t u v w x y z { | } } ~  € € ‚ ƒ „ … † ‡ ˆ ‰ ‹ Ž ’ ” – ˜ š Ÿ ¡ £ ¥ § © « ­ ® ° ± ² ³ ´ µ ¶ · ¸ ¹ ¹ º » ¼ ½ ½ ¾ ¿ À Á Â Ã Ä Å Æ Ç È É Ê Ë Í Î Ï Ð Ñ Ò Ó Ô Õ Ö × Ø Ù Ú Û Ü Ý Ý Þ ß à á â ã ä å æ ç è é ê ë í î ï ð ñ ò ó ô õ ö ÷ ø ù ú û ü ý ý þ ÿ       !"#$%&()*+,./0123456789:;<=>>?@ABCDEFGHIJKLNOPQRTUVWXYZ[\\]^^^^^^^^^]]]]]]]^^^_`aabcefghjklnopqstuvxyzz{|}}~~~~~~~~}}}}}}}}~~~€‚„…†‡ˆŠ‹ŒŽ‘“”•–—™šš›œžžžžžžžžžžžžŸ ¡¡¢£¥¦§¨ª«¬®¯°²³´µ·¸¹º»»¼½½¾¾¾¾¾¾½½½½½¼¼½½½¾¾¿ÀÁÂÃÄÆÇÈÉÊËÌÍÎÎÎÎÎÎÎÎÍÍÍÍÍÍÍÍÎÎÏÐÑÒÓÔÕרÙÚÛÜÝÞÞÞÞÞÞÞÞÞÝÝÝÝÝÝÝÝÞÞßàáâãäæçèéêëìíîîîîîîîîííííííííîîïðñòóôö÷øùúûüýþþþþþþþþýýýýýýýýþþÿ      !!"$%&'(*+,-.//000111110000///..----,,,,,---.//012356789;<<=>????????>>>>>>>>??@ABCDEGHIJKLMNOOOOOOOOONNNNNNNOOPQRSTUVXYZ[\]^_________^^^^^^^^__`abcdeghijklmnooooooooonnnnnnnoopqqrtuvwxz{|}~€€€€€€€~~}}}}|||||}}}~€‚ƒ…†‡ˆ‰‹ŒŒŽŽŽŽŽŽŽŽŽ‘’“”•—˜™š›œžŸŸŸŸŸŸŸŸžžžžžžžžŸŸ ¡¢£¤¥§¨©ª«¬­®¯¯¯¯¯¯¯¯¯®®®®®®®¯¯°±²³´µ¶¸¹º»¼½¾¿¿¿¿¿¿¿¿¿¾¾¾¾¾¾¾¿¿ÀÁÂÃÄÅÆÈÉÊËÌÍÎÏÏÏÏÏÏÏÏÏÎÎÎÎÎÎÎÏÏÐÐÑÒÔÕÖרÙÛÜÝÞßßààáááááááààààßßßþÿ àþÿÝàdicomscope-3.6.0/DICOMscope/lut/philips256us.lut0000644000265600020320000000171607002633106020467 0ustar tilleaadminDICMULÂOBUI1.2.276.0.7230010.3.1.0.1UI21.2.276.0.7230010.3.4.2139363186.15432.940262485.1UI1.2.840.10008.1.2.1UI1.2.276.0.7230010.3.0.3.4.0SHOFFIS_DCMTK_340 P SQÿÿÿÿþÿàÿÿÿÿ(0US (0LO:Difference between GSDF and Philips Standard Display Curve(0US+AWmƒ˜®ÃÙî.DYnƒ˜­ÂÖë)>Rg{¤¸Ìàô0DXl“§ºÎáô.BUh{Ž¡´ÆÙìÿ$6I[n€“¥·ÉÛíÿ#5GYj|ŽŸ±ÃÔå÷+<M^o€‘¢³ÄÔåö(8IYjzŠ›«»ËÛëû  + ; K Z j z ‰ ™ © ¸ È × æ ö   $ 3 B Q ` o ~ œ « º É × æ õ   ! / > L Z i w … ” ¢ ° ¾ Ì Û é ÷   . < J X e s Ž œ © · Ä Ò ß í ú   " / < I V c p } Š — ¤ ± ¾ Ê × ä ð ý #/<HUamz†’ž«·ÃÏÛçóÿ #/:FR^iuŒ˜£¯ºÆÑÝèóÿþÿ àþÿÝàdicomscope-3.6.0/DICOMscope/lut/philips4096us.lut0000644000265600020320000002071607002633060020555 0ustar tilleaadminDICMULÂOBUI1.2.276.0.7230010.3.1.0.1UI21.2.276.0.7230010.3.4.2139363186.15431.940262463.1UI1.2.840.10008.1.2.1UI1.2.276.0.7230010.3.0.3.4.0SHOFFIS_DCMTK_340 P SQÿÿÿÿþÿàÿÿÿÿ(0US (0LO:Difference between GSDF and Philips Standard Display Curve(0US   "#$&')*+-./1235689:<=>@ABDEGHIKLMOPQSTUWXZ[\^_`bcdfghjkmnoqrsuvwyz{}~‚„…†ˆ‰ŠŒŽ‘’”•–˜™šœž ¡£¤¥§¨©«¬­¯°±³´µ·¸¹»¼½¿ÀÁÃÄÅÇÈÉËÌÍÏÐÑÓÔÕרÙÛÜÝßàâãäæçèêëìîïðòóôö÷øùûüýÿ     !#$%'()+,-/01345689:<=>@ABDEFHIJLMNPQRSUVWYZ[]^_abcefgijklnoprstvwxz{|~€ƒ„…‡ˆ‰‹Œ‘’”•–˜™šœžŸ¡¢£¥¦§©ª«­®¯°²³´¶·¸º»¼½¿ÀÁÃÄÅÇÈÉÊÌÍÎÐÑÒÓÕÖ×ÙÚÛÝÞßàâãäæçèéëìíïðñòôõöøùúüýþÿ    !"#%&'(*+,./01345789:<=>@ABCEFGHJKLNOPQSTUVXYZ\]^_abcdfghjklmopqrtuvxyz{}~€‚ƒ„…‡ˆ‰‹ŒŽ‘’“•–—˜š›œžŸ ¡£¤¥¦¨©ª«­®¯°²³´µ·¸¹º¼½¾ÀÁÂÃÅÆÇÈÊËÌÍÏÐÑÒÔÕÖ×ÙÚÛÜÞßàáãäåæèéêëíîïðòóôõ÷øùúüýþÿ     !"#%&'(*+,-/01245678:;<=?@ABDEFGIJKLMOPQRTUVWYZ[\]_`abdefgijklmopqrtuvwyz{|}€‚„…†‡ˆŠ‹Œ‘’“•–—˜š›œž ¡¢£¥¦§¨©«¬­®°±²³´¶·¸¹º¼½¾¿ÁÂÃÄÅÇÈÉÊËÍÎÏÐÒÓÔÕÖØÙÚÛÜÞßàáâäåæçéêëìíïðñòóõö÷øùûüýþÿ     !"#%&'()+,-./12345789:;=>?@ACDEFGIJKLMNPQRSTVWXYZ\]^_`bcdefgijklmopqrsuvwxyz|}~€‚ƒ„…†‡‰Š‹Œ‘’“”–—˜™šœžŸ ¡£¤¥¦§¨ª«¬­®°±²³´µ·¸¹º»¼¾¿ÀÁÂÄÅÆÇÈÉËÌÍÎÏÐÒÓÔÕÖ×ÙÚÛÜÝÞàáâãäåçèéêëìîïðñòóõö÷øùúüýþÿ     !"#$%&()*+,-/012345789:;<>?@ABCDFGHIJKMNOPQRSUVWXYZ[]^_`abcefghijkmnopqrtuvwxyz|}~€‚ƒ…†‡ˆ‰Š‹Ž‘’“•–—˜™š›žŸ ¡¢£¥¦§¨©ª«¬®¯°±²³´¶·¸¹º»¼½¿ÀÁÂÃÄÅÆÈÉÊËÌÍÎÐÑÒÓÔÕÖ×ÙÚÛÜÝÞßàâãäåæçèéëìíîïðñòôõö÷øùúûýþÿ      !#$%&'()*+-./012345789:;<=>?ABCDEFGHIKLMNOPQRSUVWXYZ[\]^`abcdefghjklmnopqrsuvwxyz{|}~€‚ƒ„…†‡ˆ‰‹ŒŽ‘’“”–—˜™š›œžŸ ¢£¤¥¦§¨©ª«¬®¯°±²³´µ¶·¹º»¼½¾¿ÀÁÂÃÄÆÇÈÉÊËÌÍÎÏÐÒÓÔÕÖרÙÚÛÜÝßàáâãäåæçèéêìíîïðñòóôõö÷ùúûüýþÿ      !#$%&'()*+,-./023456789:;<=>?@BCDEFGHIJKLMNOPRSTUVWXYZ[\]^_`bcdefghijklmnopqstuvwxyz{|}~€‚ƒ…†‡ˆ‰Š‹ŒŽ‘’“”•–˜™š›œžŸ ¡¢£¤¥¦§¨©ª¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðòóôõö÷øùúûüýþÿ     !"#$%&'()*+,./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~€‚ƒ„…†‡ˆ‰ŠŒŽ‘’“”•–—˜™š›œžŸ ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖרÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ                           ! " # $ % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 8 9 : ; < = > ? @ A B C D E F G H I J K L M N O P Q R S T U V W X Y Z [ \ ] ^ _ ` a b c d e f g h i j k l m m n o p q r s t u v w x y z { | } ~  € ‚ ƒ „ … † ‡ ˆ ‰ Š ‹ Œ Ž ‘ ’ “ “ ” • – — ˜ ™ š › œ ž Ÿ   ¡ ¢ £ ¤ ¥ ¦ § ¨ © ª « ¬ ­ ® ¯ ° ± ² ² ³ ´ µ ¶ · ¸ ¹ º » ¼ ½ ¾ ¿ À Á Â Ã Ä Å Æ Ç È É Ê Ë Ì Ì Í Î Ï Ð Ñ Ò Ó Ô Õ Ö × Ø Ù Ú Û Ü Ý Þ ß à á â ã ä ä å æ ç è é ê ë ì í î ï ð ñ ò ó ô õ ö ÷ ø ù ú ú û ü ý þ ÿ                            ! ! " # $ % & ' ( ) * + , - . / 0 1 2 2 3 4 5 6 7 8 9 : ; < = > ? @ A B C C D E F G H I J K L M N O P Q R S S T U V W X Y Z [ \ ] ^ _ ` a b b c d e f g h i j k l m n o p q q r s t u v w x y z { | } ~   € ‚ ƒ „ … † ‡ ˆ ‰ Š ‹ Œ Ž ‘ ’ “ ” • – — ˜ ™ š š › œ ž Ÿ   ¡ ¢ £ ¤ ¥ ¦ ¦ § ¨ © ª « ¬ ­ ® ¯ ° ± ² ³ ³ ´ µ ¶ · ¸ ¹ º » ¼ ½ ¾ ¿ ¿ À Á Â Ã Ä Å Æ Ç È É Ê Ê Ë Ì Í Î Ï Ð Ñ Ò Ó Ô Õ Ö Ö × Ø Ù Ú Û Ü Ý Þ ß à á á â ã ä å æ ç è é ê ë ì ì í î ï ð ñ ò ó ô õ ö ö ÷ ø ù ú û ü ý þ ÿ                              ! " # $ % & ' ( ( ) * + , - . / 0 1 2 2 3 4 5 6 7 8 9 : ; ; < = > ? @ A B C D D E F G H I J K L M M N O P Q R S T U V V W X Y Z [ \ ] ^ ^ _ ` a b c d e f g g h i j k l m n o o p q r s t u v w x x y z { | } ~  € € ‚ ƒ „ … † ‡ ˆ ˆ ‰ Š ‹ Œ Ž ‘ ’ “ ” • – — ˜ ˜ ™ š › œ ž Ÿ Ÿ   ¡ ¢ £ ¤ ¥ ¦ § § ¨ © ª « ¬ ­ ® ¯ ¯ ° ± ² ³ ´ µ ¶ ¶ · ¸ ¹ º » ¼ ½ ¾ ¾ ¿ À Á Â Ã Ä Å Å Æ Ç È É Ê Ë Ì Ì Í Î Ï Ð Ñ Ò Ó Ó Ô Õ Ö × Ø Ù Ú Ú Û Ü Ý Þ ß à á á â ã ä å æ ç è è é ê ë ì í î ï ï ð ñ ò ó ô õ ö ö ÷ ø ù ú û ü ý ý þ ÿ                               ! " # $ $ % & ' ( ) * * + , - . / 0 0 1 2 3 4 5 6 6 7 8 9 : ; < = = > ? @ A B C C D E F G H I I J K L M N O O P Q R S T U U V W X Y Z [ [ \ ] ^ _ ` ` a b c d e f f g h i j k l l m n o p q r r s t u v w w x y z { | } } ~  € ‚ ƒ ƒ „ … † ‡ ˆ ˆ ‰ Š ‹ Œ Ž Ž ‘ ’ “ “ ” • – — ˜ ™ ™ š › œ ž ž Ÿ   ¡ ¢ £ ¤ ¤ ¥ ¦ § ¨ © © ª « ¬ ­ ® ® ¯ ° ± ² ³ ³ ´ µ ¶ · ¸ ¹ ¹ º » ¼ ½ ¾ ¾ ¿ À Á Â Ã Ã Ä Å Æ Ç È È É Ê Ë Ì Í Í Î Ï Ð Ñ Ò Ò Ó Ô Õ Ö × × Ø Ù Ú Û Ü Ü Ý Þ ß à á á â ã ä å æ æ ç è é ê ë ë ì í î ï ð ð ñ ò ó ô õ õ ö ÷ ø ù ú ú û ü ý þ ÿ ÿ                                ! " # $ $ % & ' ( ) ) * + , - . . / 0 1 2 2 3 4 5 6 7 7 8 9 : ; ; < = > ? @ @ A B C D D E F G H I I J K L M M N O P Q Q R S T U V V W X Y Z Z [ \ ] ^ ^ _ ` a b c c d e f g g h i j k k l m n o p p q r s t t u v w x x y z { | | } ~  € € ‚ ƒ „ … … † ‡ ˆ ‰ ‰ Š ‹ Œ Ž ‘ ‘ ’ “ ” • • – — ˜ ™ ™ š › œ ž Ÿ   ¡ ¡ ¢ £ ¤ ¥ ¥ ¦ § ¨ © © ª « ¬ ­ ­ ® ¯ ° ± ± ² ³ ´ µ µ ¶ · ¸ ¹ ¹ º » ¼ ½ ½ ¾ ¿ À Á Á Â Ã Ä Å Å Æ Ç È É É Ê Ë Ì Í Í Î Ï Ð Ð Ñ Ò Ó Ô Ô Õ Ö × Ø Ø Ù Ú Û Ü Ü Ý Þ ß à à á â ã ä ä å æ ç ç è é ê ë ë ì í î ï ï ð ñ ò ò ó ô õ ö ö ÷ ø ù ú ú û ü ý þ þ ÿ         !""#$%%&'())*+,,-./0012334567789::;<=>>?@AABCDEEFGHHIJKKLMNOOPQRRSTUVVWXYYZ[\\]^_``abccdeffghijjklmmnoppqrsttuvwwxyzz{|}~~€‚ƒ„„…†‡‡ˆ‰ŠŠ‹ŒŽŽ‘‘’“””•–——˜™šš›œžžŸ ¡¡¢£¤¤¥¦§§¨©ªª«¬­­®¯°°±²³´´µ¶··¸¹ºº»¼½½¾¿ÀÀÁÂÃÃÄÅÆÆÇÈÉÉÊËÌÌÍÎÏÏÐÑÒÒÓÔÕÕÖרØÙÚÛÛÜÝÞÞßàááâãääåæççèéêêëìííîïððñòóóôõöö÷øùùúûüüýþÿÿ        !!"#$$%&''()**+,,-.//0122345567789::;<==>?@@ABBCDEEFGHHIJKKLMMNOPPQRSSTUVVWXXYZ[[\]^^_``abccdeffghhijkklmnnoppqrsstuvvwxxyz{{|}}~€€‚ƒƒ„……†‡ˆˆ‰ŠŠ‹ŒŽ‘’’“”••–——˜™šš›œœžŸŸ ¡¢¢£¤¤¥¦§§¨©©ª«¬¬­®®¯°±±²³³´µ¶¶·¸¸¹º»»¼½½¾¿ÀÀÁÂÂÃÄÅÅÆÇÇÈÉÊÊËÌÌÍÎÎÏÐÑÑÒÓÓÔÕÖÖרØÙÚÛÛÜÝÝÞßßàáââãääåæççèééêëëìíîîïððñòóóôõõö÷÷øùúúûüüýþÿþÿ àþÿÝàdicomscope-3.6.0/DICOMscope/monitor.lut0000644000265600020320000001173606716750664017124 0ustar tilleaadmin# Monitor characteristic file (converted from VeriLUM to DCMTK) # Computer Name: EINSTEIN Head: 0 Date: 03/09/1999 Time: 09:42:22 # maximum DDL value max 255 amb 1.0 # DDL LumVal 0 0.186260 1 0.199540 2 0.213000 3 0.226850 4 0.241260 5 0.256440 6 0.272560 7 0.289820 8 0.308410 9 0.328520 10 0.350340 11 0.374050 12 0.399850 13 0.427930 14 0.458480 15 0.491690 16 0.527740 17 0.566800 18 0.608900 19 0.654050 20 0.702250 21 0.753510 22 0.807840 23 0.865250 24 0.925730 25 0.989300 26 1.055950 27 1.125710 28 1.198560 29 1.274530 30 1.353610 31 1.435800 32 1.521130 33 1.609590 34 1.701190 35 1.795960 36 1.893890 37 1.995020 38 2.099340 39 2.206880 40 2.317650 41 2.431660 42 2.548930 43 2.669460 44 2.793280 45 2.920390 46 3.050810 47 3.184560 48 3.321650 49 3.462090 50 3.605910 51 3.753140 52 3.903820 53 4.057970 54 4.215620 55 4.376800 56 4.541540 57 4.709880 58 4.881840 59 5.057460 60 5.236750 61 5.419770 62 5.606520 63 5.797050 64 5.991380 65 6.189550 66 6.391550 67 6.597390 68 6.807060 69 7.020590 70 7.237950 71 7.459160 72 7.684220 73 7.913130 74 8.145890 75 8.382510 76 8.622980 77 8.867310 78 9.115500 79 9.367550 80 9.623470 81 9.883250 82 10.146910 83 10.414440 84 10.685870 85 10.961190 86 11.240410 87 11.523550 88 11.810600 89 12.101570 90 12.396480 91 12.695330 92 12.998130 93 13.304880 94 13.615600 95 13.930280 96 14.248940 97 14.571590 98 14.898230 99 15.228890 100 15.563570 101 15.902290 102 16.245070 103 16.591910 104 16.942840 105 17.297860 106 17.656990 107 18.020250 108 18.387640 109 18.759180 110 19.134890 111 19.514770 112 19.898850 113 20.287130 114 20.679590 115 21.076230 116 21.477030 117 21.881960 118 22.291010 119 22.704160 120 23.121390 121 23.542700 122 23.968050 123 24.397430 124 24.830830 125 25.268230 126 25.709610 127 26.154950 128 26.604230 129 27.057450 130 27.514600 131 27.975710 132 28.440770 133 28.909800 134 29.382810 135 29.859810 136 30.340810 137 30.825820 138 31.314850 139 31.807910 140 32.305020 141 32.806170 142 33.311390 143 33.820680 144 34.334050 145 34.851510 146 35.373040 147 35.898610 148 36.428200 149 36.961790 150 37.499360 151 38.040870 152 38.586320 153 39.135660 154 39.688880 155 40.245950 156 40.806860 157 41.371570 158 41.940060 159 42.512310 160 43.088300 161 43.668010 162 44.251470 163 44.838720 164 45.429800 165 46.024740 166 46.623600 167 47.226410 168 47.833210 169 48.444030 170 49.058920 171 49.677930 172 50.301070 173 50.928410 174 51.559970 175 52.195800 176 52.835940 177 53.480410 178 54.129180 179 54.782210 180 55.439460 181 56.100870 182 56.766410 183 57.436030 184 58.109700 185 58.787350 186 59.468950 187 60.154460 188 60.843840 189 61.537030 190 62.233990 191 62.934680 192 63.639060 193 64.347100 194 65.058820 195 65.774270 196 66.493510 197 67.216560 198 67.943490 199 68.674330 200 69.409130 201 70.147940 202 70.890790 203 71.637750 204 72.388850 205 73.144130 206 73.903650 207 74.667450 208 75.435570 209 76.208050 210 76.984850 211 77.765920 212 78.551230 213 79.340710 214 80.134330 215 80.932040 216 81.733790 217 82.539530 218 83.349220 219 84.162800 220 84.980240 221 85.801480 222 86.626480 223 87.455180 224 88.287560 225 89.123560 226 89.963230 227 90.806620 228 91.653780 229 92.504770 230 93.359640 231 94.218430 232 95.081200 233 95.948010 234 96.818900 235 97.693920 236 98.573140 237 99.456590 238 100.344340 239 101.236440 240 102.132930 241 103.033820 242 103.938850 243 104.847740 244 105.760200 245 106.675910 246 107.594590 247 108.515940 248 109.439670 249 110.365470 250 111.293050 251 112.222110 252 113.152360 253 114.083500 254 115.015230 255 115.947260 # eof of filedicomscope-3.6.0/DICOMscope/reports/0002755000265600020320000000000011135621372016357 5ustar tilleaadmindicomscope-3.6.0/DICOMscope/reports/reportki.dcm0000644000265600020320000000457607205217110020707 0ustar tilleaadminDICMULÈOBUI1.2.840.10008.5.1.4.1.1.88.11UI41.2.276.0.7230010.3.1.4.2139363186.8948.974458936.4UI1.2.840.10008.1.2.1UI1.2.276.0.7230010.3.0.3.4.1SHOFFIS_DCMTK_341 CS ISO_IR 100DA20001117TM120216UI1.2.276.0.7230010.3.0.3.4.1UI1.2.840.10008.5.1.4.1.1.88.11UI41.2.276.0.7230010.3.1.4.2139363186.8948.974458936.4 DA#DA200011170TM3TM120216PSH`CSSRpLOKuratorium OFFIS e.V. PNLast Name^First Name0LO$OFFIS Structured Reporting Templates>LOIHE Year 2 - Key Image Note SQPNLast Name^First Name LO0DA@CSO UI41.2.276.0.7230010.3.1.4.2139363186.8948.974458936.5 UI41.2.276.0.7230010.3.1.4.2139363186.8948.974458936.6 SH IS1 IS1 @@ CS CONTAINER @C SQbþÿàZSH0000SH99_OFFIS_DCMTKLODocument Title UI1.2.276.0.7230010.3.0.0.1@P CSSEPARATE@r£SQ@‘¤CSPARTIAL @“¤CS UNVERIFIED@0§SQþÿà@ CSHAS OBS CONTEXT @@ CSCODE@C SQlþÿàdSH1000SH99_OFFIS_DCMTKLOObservation Context Mode UI1.2.276.0.7230010.3.0.0.1@h¡SQZþÿàRSH1010SH99_OFFIS_DCMTKLODIRECT UI1.2.276.0.7230010.3.0.0.1þÿà²@ CSHAS OBS CONTEXT @@ CSPNAME @C SQnþÿàfSH1001SH99_OFFIS_DCMTKLORecording Observer's Name  UI1.2.276.0.7230010.3.0.0.1@#¡PN Enter textþÿàÀ@ CSHAS OBS CONTEXT @@ CSTEXT@C SQzþÿàrSH1002SH99_OFFIS_DCMTKLO&Recording Observer's Organization Name UI1.2.276.0.7230010.3.0.0.1@`¡UT Enter textþÿà@ CSHAS OBS CONTEXT @@ CSCODE@C SQlþÿàdSH1003SH99_OFFIS_DCMTKLOObservation Context Mode UI1.2.276.0.7230010.3.0.0.1@h¡SQ\þÿàTSH1030SH99_OFFIS_DCMTKLOPATIENT  UI1.2.276.0.7230010.3.0.0.1þÿà¨@ CSCONTAINS@@ CSTEXT@C SQjþÿàbSH1100SH99_OFFIS_DCMTKLOKey Image Description  UI1.2.276.0.7230010.3.0.0.1@`¡UT Enter textþÿà¶™SQþÿàPUI0UUI0@ CSCONTAINS@@ CSIMAGE @C SQdþÿà\SH1200SH99_OFFIS_DCMTKLOImage Reference  UI1.2.276.0.7230010.3.0.0.1dicomscope-3.6.0/DICOMscope/reports/reportsi.dcm0000644000265600020320000000537607205217110020716 0ustar tilleaadminDICMULÈOBUI1.2.840.10008.5.1.4.1.1.88.11UI41.2.276.0.7230010.3.1.4.2139363186.8948.974458936.10UI1.2.840.10008.1.2.1UI1.2.276.0.7230010.3.0.3.4.1SHOFFIS_DCMTK_341 CS ISO_IR 100DA20001117TM120216UI1.2.276.0.7230010.3.0.3.4.1UI1.2.840.10008.5.1.4.1.1.88.11UI41.2.276.0.7230010.3.1.4.2139363186.8948.974458936.10 DA#DA200011170TM3TM120216PSH`CSSRpLOKuratorium OFFIS e.V. PNLast Name^First Name0LO$OFFIS Structured Reporting Templates>LO IHE Year 2 - Simple Image ReportSQPNLast Name^First Name LO0DA@CSO UI41.2.276.0.7230010.3.1.4.2139363186.8948.974458936.5 UI41.2.276.0.7230010.3.1.4.2139363186.8948.974458936.11 SH IS1 IS1 @@ CS CONTAINER @C SQbþÿàZSH0000SH99_OFFIS_DCMTKLODocument Title UI1.2.276.0.7230010.3.0.0.1@P CSSEPARATE@r£SQ@‘¤CSPARTIAL @“¤CS UNVERIFIED@0§SQ‚þÿà@ CSHAS OBS CONTEXT @@ CSCODE@C SQlþÿàdSH1000SH99_OFFIS_DCMTKLOObservation Context Mode UI1.2.276.0.7230010.3.0.0.1@h¡SQZþÿàRSH1010SH99_OFFIS_DCMTKLODIRECT UI1.2.276.0.7230010.3.0.0.1þÿà²@ CSHAS OBS CONTEXT @@ CSPNAME @C SQnþÿàfSH1001SH99_OFFIS_DCMTKLORecording Observer's Name  UI1.2.276.0.7230010.3.0.0.1@#¡PN Enter textþÿàÀ@ CSHAS OBS CONTEXT @@ CSTEXT@C SQzþÿàrSH1002SH99_OFFIS_DCMTKLO&Recording Observer's Organization Name UI1.2.276.0.7230010.3.0.0.1@`¡UT Enter textþÿà@ CSHAS OBS CONTEXT @@ CSCODE@C SQlþÿàdSH1003SH99_OFFIS_DCMTKLOObservation Context Mode UI1.2.276.0.7230010.3.0.0.1@h¡SQ\þÿàTSH1030SH99_OFFIS_DCMTKLOPATIENT  UI1.2.276.0.7230010.3.0.0.1þÿàâ@ CSCONTAINS@@ CS CONTAINER @C SQdþÿà\SH1110SH99_OFFIS_DCMTKLOSection Heading  UI1.2.276.0.7230010.3.0.0.1@P CSSEPARATE@0§SQ4þÿàn@ CSCONTAINS@@ CSTEXT@C SQ`þÿàXSH1120SH99_OFFIS_DCMTKLO Report Text  UI1.2.276.0.7230010.3.0.0.1@`¡UT Enter text@0§SQÄþÿ༙SQþÿàPUI0UUI0@ CSINFERRED FROM @@ CSIMAGE @C SQdþÿà\SH1200SH99_OFFIS_DCMTKLOImage Reference  UI1.2.276.0.7230010.3.0.0.1þÿà¶™SQþÿàPUI0UUI0@ CSCONTAINS@@ CSIMAGE @C SQdþÿà\SH1200SH99_OFFIS_DCMTKLOImage Reference  UI1.2.276.0.7230010.3.0.0.1dicomscope-3.6.0/DICOMscope/spool/0002755000265600020320000000000011262371102016007 5ustar tilleaadmindicomscope-3.6.0/DICOMscope/spool/empty.txt0000644000265600020320000000000011262371102017672 0ustar tilleaadmindicomscope-3.6.0/DICOMscope/tls/0002755000265600020320000000000011135621372015463 5ustar tilleaadmindicomscope-3.6.0/DICOMscope/tls/iheprt1.rnd0000644000265600020320000000200007770347172017547 0ustar tilleaadmin¸Î[óø2Ñ÷¥³|àT!æÓ(olœnOˆ<&œú£±{Kõ œ(캢ˆFžbNL£'˜”ú»ƒÐNøÅí0í<ã)âü½d o6©âY¦ÒÒ®ôÏŠ9¸ô‰}H,Žªcèb.þÍYü|WEk\½ˆ£·Ãšaï ­7ÀLßÈgÃà=BBÜ–ïæV&6ZÃ,ͤÖò}š_Oíeç­ÞESWocôž®W?BV…L~¨+;€Áö+ED‰²³D9]’.%ÈǾð DÑeþÒµok à§ýFÍ_£ ð†y”üì¤Y‰lrXÝRMá•Ò옣 €¤«¼ú”üH†€*¥Ï”»âP¢—)ñ›% µAÉÑãZ’¹²izk<•ÑaüÀíy(…h%0ë¦H n×ÿÚ°¢«t‘­JLÇN5[•±nÐä+2åùkߟ5ñ¼45ÃÜ!©êȃägó&0ƒS=^òŒ7-jMGª¢*™¼ؤBðf6K}¹K»¹Jj ÿæì\^ùVníUX9=@ ‰º±GÃ/ãÄ"W1~;ò`WëÝ ¤àv2¤x~rÎdÂÞHaû´™&Z†>X ξX×'è¿ÓÌ;Ÿ¿!œqÖ[“ó4ê<aèS²‡H’ ¹T§`ÍÀvRÞ4ñ¢dÆùÑù¼5êù¿oxõßÀưÞ÷0D;¾š!3o£MšbE6É]9A˜¬úŒq$%²¬Û$÷t’=fÝ`‘h9´Qz»ÆÈÌÁ‰¼¦×rÆuj®ÛÁ(UjÙ—)Jé:z2OM‡íXÿºFþ©³ËfèÜÛrÿ´¤\¤ôKÆ)ÉÒKcÊBÊâç”LÃ?Ê 7IU¦bµÔu5±©±0V×8jÓ„Gœ¥êð WA`¨²ü«°Y×.ˆ«8Ì”µb¹‹®~&*¹6 ƒ©åŠöŸ=#.¿×ÀM€½ƒrr²©ê’ø ÷¬ÿ¶Õa‚žø­%É~Á š?û÷;-G_’{’§-/H§ôǶ|\“APË +y™z8¶ ùŽÍJ&9'èéQ bÝ|eLåX,µÄÒÎ-ÍÍ™¶94Ýg¹ò©ôN½S#=dòxØásˆ lýá•¡G V"îX ˜–FkXO×–02Ibâóbª9š¬2«’v9îÍ“Š’±ÑÞgEËwVìøÁßòéºá9k4ÜÓÑp¥ëöƒ»U›UÔ„õ(÷TNSP™PE#ý+LŠxêD$SÓW÷ñm=@ßž)´ùWÝÅŸUt†ž\i‹Üa-|áÅ‹¿…‡žá¯-hdicomscope-3.6.0/DICOMscope/tls/iheprt2.rnd0000644000265600020320000000200007770347174017552 0ustar tilleaadminÇghdžy}ÂðÓè_ø@©Û9MGÆ1ÒÔÊ]ŒBÚ Ç‹\_‡ZöŠLDÄ\K£[·§èéã¿c;×ɶ7qɬ1%o¤ˆ;Y>† ÿ h?ëL'»LWѬ¬d‰Õ4ÇÒ–:/*%MpRS¶›‘ží™cUÏ £îU¿=ªðƒdUy#¨D™kˆ±¹¨ŸÕ”ðê®^]1èiPüL@vps¢RD™“¸(=f3ÄÁxÌà‰|€CøͲÃ:Ü”Å\#xƒ[íC+K˜¶ üú­éáÁe²™k¤óþ3ª›7LÈjŒ‡$qä\ €†Çs;oõbØÅìWW¾9¤9Òæ;QÔêh8ý 8<¯Æ´Ö3ŽŠ•îίr·Í͸vÍ£w 4o…÷¤¢/UROÀSšCWmx*Ÿáž¶bÕ1Àø`«rkvÒ„thz˜gú'¦ `œñÎ`¨7Çe": _b¥hZD?g³eYý^ G×=ÅhlƒhAM—Ôqˆ[6â¶îaí†îv®Tgð‰ó¦Åò`“yÿü,¡²™µ;¦¼{³™î¤}3d»Õp‡ŒhIdo 6‘NŽÉ”*!i ^ß4_Í+#uÔ/ù4šhÈ”ãêîPS°—Ò¢#³/£äüF$ŽÒ9L¶œæÒ•€ìª-êGÛÕx`Ë÷žL‚ï´®³’ùSžCRæN‚õ‰¥c‚6Þ=©iN_îÇ|-¼O æBÚGÅ^g^KHôï”Û{·UŽP–gcŸ?¿íäCsêæ©´=ÍUôONÈ7"5n:™È(üM@v og̱ӫhÅ3I—ÃN(D«À¨È¿Ó.Ȫ¹A㌅Y¢ªŸs°W6¹"Ž &ºŠ019ËüülÃóö¹zí{0\èùջݎÄ-âêV¼o-BÊF¤ŒÃ R!²»   <¦-ätÄ”cÌ[FÏÖäÇ%3¡â]Äû{ÔKû®13É…ÁË¡*`e™X‹!N7UÚž9Þq2ŠœyZàæ¸§Ö·¡- Å®ƒ‚¥'ó€¶y¼~†8O£Ã®5¬'¬!B3Zµ:¯l01î’¹´`p©^™_<ÝñEP›R7s/¾+—ñÿV¸&Õô`ýC¯ Z2¾~&0ŒÐáç€ûqCòö])D£–m‡Óz‘UÉèêgP¤;¤Š–Ê@ ¦k”x¹vÒñÀy±Òlndcwä¿nƒ¬K»Übî/)îž|'„¿Ö€×ÒNðñ[°‰}…“•u¤z’´ÿш·á§²Õ™¤jIå,/JÅ‹y„M°*×Ô¨»¥à ¦~Pnä0<€ÈÇ0z  3QL rÑ­ý#ŽXdicomscope-3.6.0/DICOMscope/tls/receiver.rnd0000644000265600020320000000200007305733634017773 0ustar tilleaadminNѦÊY¼ ¿¦ùÿºH=xe|óÖé_¯]¢3J×Cç'\jV/ £ûƒË&ŠƒéæÁPn& õ^ÅÝ™UÇ—˜ûl•G5x­TÀ,F¶†K¾Ù4;qâµÿ’.« ÑV7œ(’„œ…>¥•bv$6X÷ݤ»õ¤ÒŸÉ•˜ÉBD ó[LYÒ¨O’Y^gÄóèš©„zô»Ðñ¹ƒãZ ýJ”š2§ ™HR´®öì%CÝͼâåSXšž&Óù›zߟ⾊Ûuä° Gϵ³°·Á˜:'üM D•ƒÁï^pìÆXÓ}Ì~9 Ÿ¡Q]ÄI–'9u ¹®LáGLŠn£†€ 5ô¹4ÝKns¾YNízå¹×E7o¢ {T<èÄÊBH®—,–½Gá†É‚[œÀÎBY`ì¿.¼añïÓ÷tÒÅÄP O*7ËÙ¹wùÈ%¾Jìb uÍŠ¾>e^uÙ³6¢±ÃsæoF²¹øòõÉì6a¼4Ã2%=d¹¯ßÝÑ |yZ¢jí«nêµ™š³wý²ƒº€eè+î¼:Laðv¬Äy¥­éÇ£•xÝôsRü/N°†‹4¶A¸(0Žg”«"P®ô£­¯ #XiÙ 1x¸IÊ¡ìç w×eÝdq¬®•á±¶3¾¿n™v‚r:|aëžÙ—¡aá&=ÑôÙ¨ÖßÌn–i®(XÁ±ÞæR9x.¹²v–è0ÒCèåð®*ƒ#âÒ; ¨é˜QE¨Œå;½Js›ýV„†%¡Ú½µvMÄžg»gtõó{Ð’›þËBW´hÞ‰ v•_Ö`À.åÒFFH!è,1;®.ƒÐ’ÿôi“£€îÙI†e3òÀÂÅ”ÔLn'»¢îW6`zý©NPkÀ»4n8¼O!•We¿>(Ý‘XôÂwßd€€âÞ'µ}éÖtÜRÄ—IO ’‹¯Mèõ„ž Kaj–l–C]gÔ‚KÐOÙ:ÞPíYÜÜ·kSj˜]@†<¯’àç4KZÁ¶ó°ÈN ߪ åÜ’cÌÔØ÷£'ón÷ÿ5·‘/gY–hA‰| ±dÅ´íq7q7«O\rÿŸj:}0¨Ê2|â®á¬úFF0­tU®|wM’wl>.‘E7.e°EÑ$×UÔÖîmîè‘‘hŠ(øÕá„—øtÞ~ŽÀû­Ïª$Ë5¢µ(7ˆÒ²@!%<Þ-#¡tMS)¢ˆIè™nLu-ÄC1e{õÑsS¯£9 ë=fÖ¬ªSV!“³1OƧ‰Ðd*2†Að$æCg–‰”' Ó Þ>LLÞÝÞ,[dicomscope-3.6.0/DICOMscope/tls/sitecert.pem0000644000265600020320000001350007770306530020013 0ustar tilleaadminCertificate: Data: Version: 3 (0x2) Serial Number: 8 (0x8) Signature Algorithm: md5WithRSAEncryption Issuer: C=DE, ST=Niedersachsen, L=Oldenburg, O=OFFIS, OU=Healthcare Information and Communication Systems, CN=DCMTK Certification Authority/Email=dicom@offis.de Validity Not Before: Sep 5 10:18:54 2003 GMT Not After : Sep 5 10:18:54 2006 GMT Subject: C=DE, ST=Niedersachsen, L=Oldenburg, O=OFFIS, OU=Healthcare Information and Communication Systems, CN=DICOMscope 3.6.0 Default Site Certificate/Email=dicom@offis.de Subject Public Key Info: Public Key Algorithm: rsaEncryption RSA Public Key: (1024 bit) Modulus (1024 bit): 00:b0:49:ff:02:09:58:00:a3:b9:9a:ea:ff:b8:ac: a5:a4:2c:c0:3f:c1:dc:95:3b:ad:48:fa:bb:1b:12: 16:de:18:2d:c5:62:85:38:13:88:81:ba:b9:9c:9e: 60:e1:1f:5f:da:5f:4f:e4:32:d2:12:40:ee:e7:12: 3c:69:1f:d4:aa:08:cf:d4:07:14:9a:e2:3c:58:5d: b7:69:71:d4:25:bd:e1:cb:81:b8:d1:56:80:94:ec: ad:b3:29:8f:67:b3:c4:c7:3a:34:c9:6c:d0:4e:45: e3:0a:fa:75:dd:e6:41:91:26:c8:0d:53:9c:6b:28: 25:32:84:e8:4e:9d:97:aa:67 Exponent: 65537 (0x10001) X509v3 extensions: X509v3 Basic Constraints: CA:FALSE Netscape Comment: OpenSSL Generated Certificate X509v3 Subject Key Identifier: BA:3D:8D:37:AB:83:45:3A:2B:E5:01:3A:2A:7D:7E:CA:C9:41:87:A7 X509v3 Authority Key Identifier: keyid:0B:78:42:72:95:51:24:6D:D0:E5:16:78:B1:71:88:BB:3F:A3:DF:D5 DirName:/C=DE/ST=Niedersachsen/L=Oldenburg/O=OFFIS/OU=Healthcare Information and Communication Systems/CN=DCMTK Certification Authority/Email=dicom@offis.de serial:00 Signature Algorithm: md5WithRSAEncryption 9c:22:35:9f:bb:70:a4:6f:f0:28:7e:d0:a9:2f:24:eb:27:c3: ed:44:c2:49:19:c2:68:c6:c0:ca:83:a8:ce:55:a6:b8:cb:e9: fa:44:1e:18:a8:b3:47:0d:c4:8b:90:13:ca:39:69:1c:1b:1b: b3:87:e9:8d:bf:75:27:c6:5b:17:3e:6f:20:ec:0d:fb:5d:11: b4:9d:a5:87:39:15:43:f6:8f:e1:fd:06:05:f3:6e:b0:66:5e: 66:27:75:15:63:d6:17:ba:9d:a3:9e:97:fc:03:c6:06:a1:15: 16:f0:6f:5a:8f:66:05:6c:fb:78:20:15:24:a3:0a:9d:77:f7: 76:1a:33:61:05:49:a9:82:77:0b:50:57:e6:7f:c4:12:74:57: 3a:70:a9:08:9e:d6:1d:2f:d2:a9:a8:fd:ba:6f:78:74:16:cd: 76:05:fd:56:05:4e:19:25:75:90:fb:97:23:9f:1c:a7:05:d5: ce:e5:0b:33:80:cf:82:9c:be:d1:50:9f:1e:13:cc:62:c2:13: 20:ff:02:1d:8e:05:df:e2:e0:e5:3b:99:0e:48:53:61:d2:5b: ea:be:fe:bf:82:bb:97:be:ac:e0:32:ab:d5:bd:10:00:f7:f2: bb:7f:61:d9:b6:6f:b1:db:d8:96:a3:1f:46:9e:29:e9:43:b9: 76:cc:04:90:50:67:ab:11:59:0d:6d:44:1f:ff:21:15:9f:3f: cb:f6:f2:dc:64:47:88:fc:68:c4:60:20:00:d1:b1:8d:f6:d0: 2a:1f:e8:b7:36:eb:fd:48:d6:c0:90:af:0a:93:7c:fc:b6:4b: 39:3b:87:7d:e3:10:d9:b9:c4:bb:33:f2:a2:8e:05:81:ec:25: 2c:cf:73:65:76:04:d5:67:e0:c0:de:a9:a1:16:eb:96:f3:de: 1d:db:df:cc:63:0a:38:96:d6:eb:d9:86:c6:b7:82:ff:d1:48: b8:f9:81:c4:f0:43:a2:39:54:c7:ad:8c:36:e9:8d:72:cc:c2: 60:ec:29:94:04:35:ff:58:14:02:65:63:89:a6:b9:ff:96:84: 04:f6:56:7f:7e:39:18:8c:44:95:b7:25:2a:2f:96:34:bb:cb: f3:b8:f7:db:eb:87:e6:74:a9:45:88:97:8f:32:07:a8:11:d3: e9:77:52:21:48:cc:43:e7:e5:c3:c3:06:53:7a:df:c1:1d:41: 2b:b5:57:b2:2b:35:52:0f:a1:e9:50:7f:73:98:aa:02:9c:b5: 91:89:69:94:c4:48:5c:ff:a3:6d:2e:f2:b8:9e:10:73:ca:73: 6d:d4:2f:54:6d:a2:4f:1b:a8:46:d6:50:c1:ed:94:3e:c1:c2: ea:52:c3:5e:11:11:bc:0b -----BEGIN CERTIFICATE----- MIIF9DCCA9ygAwIBAgIBCDANBgkqhkiG9w0BAQQFADCByzELMAkGA1UEBhMCREUx FjAUBgNVBAgTDU5pZWRlcnNhY2hzZW4xEjAQBgNVBAcTCU9sZGVuYnVyZzEOMAwG A1UEChMFT0ZGSVMxOTA3BgNVBAsTMEhlYWx0aGNhcmUgSW5mb3JtYXRpb24gYW5k IENvbW11bmljYXRpb24gU3lzdGVtczEmMCQGA1UEAxMdRENNVEsgQ2VydGlmaWNh dGlvbiBBdXRob3JpdHkxHTAbBgkqhkiG9w0BCQEWDmRpY29tQG9mZmlzLmRlMB4X DTAzMDkwNTEwMTg1NFoXDTA2MDkwNTEwMTg1NFowgdcxCzAJBgNVBAYTAkRFMRYw FAYDVQQIEw1OaWVkZXJzYWNoc2VuMRIwEAYDVQQHEwlPbGRlbmJ1cmcxDjAMBgNV BAoTBU9GRklTMTkwNwYDVQQLEzBIZWFsdGhjYXJlIEluZm9ybWF0aW9uIGFuZCBD b21tdW5pY2F0aW9uIFN5c3RlbXMxMjAwBgNVBAMTKURJQ09Nc2NvcGUgMy42LjAg RGVmYXVsdCBTaXRlIENlcnRpZmljYXRlMR0wGwYJKoZIhvcNAQkBFg5kaWNvbUBv ZmZpcy5kZTCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAsEn/AglYAKO5mur/ uKylpCzAP8HclTutSPq7GxIW3hgtxWKFOBOIgbq5nJ5g4R9f2l9P5DLSEkDu5xI8 aR/UqgjP1AcUmuI8WF23aXHUJb3hy4G40VaAlOytsymPZ7PExzo0yWzQTkXjCvp1 3eZBkSbIDVOcayglMoToTp2XqmcCAwEAAaOCAVcwggFTMAkGA1UdEwQCMAAwLAYJ YIZIAYb4QgENBB8WHU9wZW5TU0wgR2VuZXJhdGVkIENlcnRpZmljYXRlMB0GA1Ud DgQWBBS6PY03q4NFOivlAToqfX7KyUGHpzCB+AYDVR0jBIHwMIHtgBQLeEJylVEk bdDlFnixcYi7P6Pf1aGB0aSBzjCByzELMAkGA1UEBhMCREUxFjAUBgNVBAgTDU5p ZWRlcnNhY2hzZW4xEjAQBgNVBAcTCU9sZGVuYnVyZzEOMAwGA1UEChMFT0ZGSVMx OTA3BgNVBAsTMEhlYWx0aGNhcmUgSW5mb3JtYXRpb24gYW5kIENvbW11bmljYXRp b24gU3lzdGVtczEmMCQGA1UEAxMdRENNVEsgQ2VydGlmaWNhdGlvbiBBdXRob3Jp dHkxHTAbBgkqhkiG9w0BCQEWDmRpY29tQG9mZmlzLmRlggEAMA0GCSqGSIb3DQEB BAUAA4ICAQCcIjWfu3Ckb/AoftCpLyTrJ8PtRMJJGcJoxsDKg6jOVaa4y+n6RB4Y qLNHDcSLkBPKOWkcGxuzh+mNv3UnxlsXPm8g7A37XRG0naWHORVD9o/h/QYF826w Zl5mJ3UVY9YXup2jnpf8A8YGoRUW8G9aj2YFbPt4IBUkowqdd/d2GjNhBUmpgncL UFfmf8QSdFc6cKkIntYdL9KpqP26b3h0Fs12Bf1WBU4ZJXWQ+5cjnxynBdXO5Qsz gM+CnL7RUJ8eE8xiwhMg/wIdjgXf4uDlO5kOSFNh0lvqvv6/gruXvqzgMqvVvRAA 9/K7f2HZtm+x29iWox9GninpQ7l2zASQUGerEVkNbUQf/yEVnz/L9vLcZEeI/GjE YCAA0bGN9tAqH+i3Nuv9SNbAkK8Kk3z8tks5O4d94xDZucS7M/KijgWB7CUsz3Nl dgTVZ+DA3qmhFuuW894d29/MYwo4ltbr2YbGt4L/0Ui4+YHE8EOiOVTHrYw26Y1y zMJg7CmUBDX/WBQCZWOJprn/loQE9lZ/fjkYjESVtyUqL5Y0u8vzuPfb64fmdKlF iJePMgeoEdPpd1IhSMxD5+XDwwZTet/BHUErtVeyKzVSD6HpUH9zmKoCnLWRiWmU xEhc/6NtLvK4nhBzynNt1C9UbaJPG6hG1lDB7ZQ+wcLqUsNeERG8Cw== -----END CERTIFICATE----- dicomscope-3.6.0/DICOMscope/tls/sitekey.pem0000644000265600020320000000156707770306530017660 0ustar tilleaadmin-----BEGIN RSA PRIVATE KEY----- MIICXAIBAAKBgQCwSf8CCVgAo7ma6v+4rKWkLMA/wdyVO61I+rsbEhbeGC3FYoU4 E4iBurmcnmDhH1/aX0/kMtISQO7nEjxpH9SqCM/UBxSa4jxYXbdpcdQlveHLgbjR VoCU7K2zKY9ns8THOjTJbNBOReMK+nXd5kGRJsgNU5xrKCUyhOhOnZeqZwIDAQAB AoGADRuja3pYYcvKvDsnAotL0bZGITd/+FS0oM2L5gplSuRPWvLlZvME3miM7plU KMkVbn5RyW0B87uCSAoyFbr5K//FyqcoWA7PR4RYRq63MiqLzWVVfuExX+Ju2sY/ BFo8Um6DTDvJ0olvE8/yDI0rdyLqxvX3JMM9RtRvqmvbDhkCQQDlk6p/dGJyxgdd yvIEocIF//R5JER0Cd0DY6x8lD5a6vaCz8d1PvSeM0arQ14KAdVa0uT+CSkwzp7L pJP6sggjAkEAxJQ9cWdrYrsr+5L/wPFpJJPUWNvGlW9cCe09TmCt01NYQ4SYGxP8 chG7AnOrIx3wGdFwyu54vUkf5oXuCkJ27QJBAI7TI0tP2L+Wu5Z6X77J869P4YRM L9oRGNK2++Q1ReXCL8KKCYjDteOF+v0pWCPZqCZs9dGlWV7n7Jq8tONORwkCQHkZ bWSQNmpDLgwz+ZQt4/zhiN4YvhRO3t9KpArFqi/WVzh41Y9Q16KZ45/WC+Z9Se1N xfNtxzmsc5d6iDMP0N0CQHOiZs/nT5GYSFETaCAFg26OsGvgQicB+QvbGBYubbuL Sh3Mp4wX3Poa+Xs31q7YqS3WLt+TIXziOYT3plAYVr0= -----END RSA PRIVATE KEY----- dicomscope-3.6.0/DICOMscope/tls/store2.rnd0000644000265600020320000000200007305733666017412 0ustar tilleaadminÒÁý¬QÖ¢í':¾ÃTžN0eœë,g¼s^ú†jqê_OwôïÕxa\×",›˜€1LºA-ô›‘J¼ó8(Þ™‚F%.0£ÐÌyn?Éùɺ“U%j€<·áƒ„è6gõ56ˆ<@LÈ’&h ý˜ûæ—ß×Ë'ž Mí`.AvlE8‚Òµ8fH"='ó(gÄŽ´×ÏR\»âÖñC¯ß»3–‡Møó[žb@bk“WHd‡-jàÎüý[Q¢–ÙïÃÃVî* «o4'öë;¾‰>“ß×¼þÉT‰‘šûw ¤*1ËÐÁ—QNm"Ìñè”O‡ÁíÚYµ1Í_¿ô„îï«…/±™¾~±–Ó|h‹OÑZh \†úlq­S„ú7rß Ç}XR’Ÿ<û_W›€Í8‚à!ü"j‰2ѧ@S¢!¤q©Ôoò‡øÿoæÔÝ#ÄJüm‚·¾¯¸"åÉŲ̂öØ"SŸßU…ý‚S®}!±+:…º?eL{‚‘¶zn‚¡2‡+íÒÛÐÔ!\ä¬ÐyÛ¼¦Ú@ïC9M¢w(kTŠ¤Ëœf%Ü ¨rô3•BfŸž+“#Ä­AòØ,P[¥H¹¥!ßGC=>¡!ï›®4†œVçÓÆKÇØÔyǤQ:;¼·#÷ÜÎGE A;a$èjɰ[ÍT;Ô. j¬A—«Ψ;ªÊ‚‡ TtöRa?)Œc©bi]n‹z¶7ŸËÐW53Ÿ!ÈèÂDRwÑl»1vÁ10U\ÕŠò!$Š8ÅÀN©Ë˜ÚÊsnÂU8Ï‚fMQ(Ât ïN»ŸrHܘ8¤®áîù<•k%µ2Ë¢±œmð$Ø~ÓmE/ÈÄ6 möonÒŒcÅGd–ë{Ÿï“iC‰ãŒnÉ\>ö„žÅñN™Aµ iq«1…Ëã¾JéJ;×;æý`Ö0x˜ÆÍpj >WM?_Ÿ£íkž‰Fêì®&¬mLYŸ»Ë@o56n}jßÔÚ‡n®3SáúQEâŒ,m°oX9~~žpÑ·ÔÖ ©ÓEkçh ic„+˜z9H–ARɈß~FH[Ò¶“ryS0Šüíƒ!$ÈÇT`Éj“¸2ï["|A#_Íüf°Í×zÊÞûqpaî»·ˆ±)KJ„Ôpd©(†™zþSŠù±öOiz`A?ƒÔêhSÄÞ˜þ·1º>1h–¬äL@ã[“vŠ34,j…¡4,寒ò¦í ò EÎph Î7~h\íè¹Ûçs>ŽæPï³#„Íþ¨Ò¥mHùÑÐbÛµ/c»J:ëø…MA™ Ï-±¨€¸!¡dicomscope-3.6.0/DICOMscope/tls/store3.rnd0000644000265600020320000000200007305733676017414 0ustar tilleaadminØ‚_q¦=·m‘…Œ0soš/ËÕŸ»£uxX2?ÎÇ!•lÆ€@Zèý)¿ÖKN€¬”`ŠBs7]wña˜ãöüx%0Ùðlt5éxV{Ǩ1z‰Þ“´ÿŒŠÃ.˜º -c³Ð1aîÄ»êÙçòÅÀxÖª¹!‰ŸøŽï¦€›¸jÎ’6]`YVôÖF8û¥ë!y(훜( kwû]OÀQ÷w·—á'ŠV-®wrXuÈL<3…˜j¤fݺ£Ú(’½ÈCA†÷83ÎOs纴?zuØ0 s ç]Ý;Lòù²g¤çÞÚì¾ò•od“5Hiv<þ#‡Á#¥p°«âôÎ餜Ê;§c˜%>õlƒÈH½‡'Î!Ö½‘Ü{ò±'õêÔd·¹³ÎHÛš½ÇKÙÁKÊÐå]w7¯>´ú íƒÂÁ야}ëˆþ—ÿâ=Š]Ïx!OêÇäBƒ1î\gV¡¹AÝ›ÎåƒLß7¼“G¥iáéš-ʽ±>wM è¥$_)¹,Kµ˜Î›­2RƒÛLÃìð‘ót\t_B£`CÃçzn˜%ài‡pf€étensJö’($Ê6Tv:)²,ísÔ°©a‘¢¶^œ $gƒGµzükš3sÿƒüó†¢} ¼fWs ªÚ|Rë©Ì‹poðŸ-õ) ˆÎK,Kq+êÕö¿ò»œCñzÚ§ï½G{Z„ð‰¾·dÁï>ed€¥­»"P±[ìê“V GÄÎ"Ií©‚ aÞ„¢Þ ¾‹Jm°=¹GX³EaàáðüƒœÛtóþ%HÓ¶'ÁT³çg‚ßÛfUòæ~ø·2´ý³Áú7¨:s†´s](Òu"Ü~P:1[Iµó@Jx’Ü!³U€ÕZÐ#`¸CÐPŽ'Çåt„jõ ÅË,èy˯­W2…ñ"RÝÌxÅ™×= ôjZ¯ l¿Ü”1AÕÆ;×3áÞlÃÉäʪ™ãž:Mtt÷¯SuÆ(4¾EGħZ]¡Uãè½ëÙ̺òfò!÷üìİñ¤C¨ñ¿þxë ©d&mž*Ó5`"XÎouƒ=¢ä%æJæñª„Úú>Ú›‘lîÎzø^¬Ê‡d9…î.Àe1›Õ"J$çt#C&ô»c¨¦×⩹Œä¾5ÇŒÝMÏRùñ mŒ×´Mð[iVw¬¢± ý7cuâ3ý5Þ4ëuÖëà™ ÔVvü KQ“xuá%Ï¿'þñΖ¨k¼²¢ý‡´§È½‚Sܪþ¿øßØqÈ£›Ø¶–ýNš¼‚WdS“›$:µÄu7^dicomscope-3.6.0/DICOMscope/tools/0002755000265600020320000000000011135621372016021 5ustar tilleaadmindicomscope-3.6.0/DICOMscope/tools/make_db.bat0000644000265600020320000000017407207244424020077 0ustar tilleaadmin@echo off echo Registering images... cd .. del database\index.dat tools\dbregimg -v -n database database\*.* echo Done.dicomscope-3.6.0/DICOMscope/usrcerts/0002755000265600020320000000000011135621372016533 5ustar tilleaadmindicomscope-3.6.0/DICOMscope/usrcerts/usercert.pem0000644000265600020320000001350007770306522021076 0ustar tilleaadminCertificate: Data: Version: 3 (0x2) Serial Number: 9 (0x9) Signature Algorithm: md5WithRSAEncryption Issuer: C=DE, ST=Niedersachsen, L=Oldenburg, O=OFFIS, OU=Healthcare Information and Communication Systems, CN=DCMTK Certification Authority/Email=dicom@offis.de Validity Not Before: Sep 5 10:20:16 2003 GMT Not After : Sep 5 10:20:16 2006 GMT Subject: C=DE, ST=Niedersachsen, L=Oldenburg, O=OFFIS, OU=Healthcare Information and Communication Systems, CN=DICOMscope 3.6.0 Default User Certificate/Email=dicom@offis.de Subject Public Key Info: Public Key Algorithm: rsaEncryption RSA Public Key: (1024 bit) Modulus (1024 bit): 00:d5:19:d8:d9:bf:a0:61:48:29:37:ee:0f:d1:45: 28:42:10:bd:41:b7:04:50:46:11:bd:f0:8d:1f:3c: c1:50:77:51:5d:5c:f1:0a:bd:50:49:00:2e:22:19: e4:a6:14:6a:24:31:67:6d:b1:28:ae:76:60:37:c4: 9a:0f:5d:2f:9f:c0:99:f1:c5:31:9e:1a:0a:a3:18: 0e:8b:01:fc:ef:94:d5:7c:0b:26:28:3b:28:e1:69: 2e:62:f0:19:35:13:7a:f1:16:df:ae:0d:60:e4:99: 4b:dd:bc:ee:64:c1:5a:02:68:27:c8:64:98:03:b7: 4e:f8:99:97:3c:d8:d0:d5:c1 Exponent: 65537 (0x10001) X509v3 extensions: X509v3 Basic Constraints: CA:FALSE Netscape Comment: OpenSSL Generated Certificate X509v3 Subject Key Identifier: 7C:15:D6:6A:A2:EC:0F:56:BD:55:D2:82:16:B6:07:37:83:C2:5D:3A X509v3 Authority Key Identifier: keyid:0B:78:42:72:95:51:24:6D:D0:E5:16:78:B1:71:88:BB:3F:A3:DF:D5 DirName:/C=DE/ST=Niedersachsen/L=Oldenburg/O=OFFIS/OU=Healthcare Information and Communication Systems/CN=DCMTK Certification Authority/Email=dicom@offis.de serial:00 Signature Algorithm: md5WithRSAEncryption 75:ea:21:18:77:58:8a:5f:40:9c:88:e8:29:ae:57:5b:77:f1: 1b:d7:26:05:3d:03:14:0d:32:6c:ee:3a:ed:12:29:01:32:87: ac:36:43:3e:e2:05:c2:f3:d0:1b:fc:f5:5c:cf:0c:7f:56:64: 64:ee:f2:7d:37:3e:62:7d:57:f0:ea:91:7c:44:f9:55:46:6c: 31:5c:01:7c:2f:3d:e4:d7:9d:fe:7c:09:50:a4:42:9b:d7:cd: f1:07:9e:87:19:40:b2:d4:7e:ba:2e:f3:54:15:0b:ec:96:cb: 97:62:95:65:9d:28:e9:58:d3:8f:d2:0a:8b:94:a9:3a:56:c5: 33:2d:f7:91:f1:44:ce:0a:d1:95:5c:d5:52:b6:c6:1b:77:bc: 43:99:a3:b8:92:01:b0:76:b5:b2:4d:07:6d:36:e5:6d:a7:6a: c8:93:d4:70:66:2e:ad:41:7a:da:0a:1d:38:61:a8:60:c8:7e: a4:32:62:f2:a6:82:3d:e7:14:b4:f3:8e:13:71:a4:df:90:76: 21:69:50:ea:41:c3:16:7b:a5:90:a0:94:f9:5b:82:0e:ce:a2: ef:30:3e:1d:b6:50:97:db:37:b0:02:3a:cf:de:ca:35:2a:8c: ae:68:92:14:f7:e5:8c:b7:e1:7b:1f:5a:15:a8:62:02:e1:1c: 55:7a:7a:fb:a7:75:e0:4d:32:70:7c:ee:a8:3f:26:be:0c:3f: c3:5d:5c:bf:f3:d7:91:8b:ec:4e:d7:90:06:22:28:58:fb:4f: cd:ae:78:cd:36:e1:87:c1:3f:a9:47:57:e3:51:1a:10:bd:6f: 7f:33:52:ab:7b:44:10:a7:02:d3:e5:a7:99:e6:ff:20:62:e9: d8:52:4a:8a:7a:40:22:b3:a4:af:3f:36:49:97:bd:2d:74:4d: 7a:32:5d:b8:cf:6c:49:03:11:e1:b9:21:7a:ee:70:bb:cf:5c: 4a:bf:32:f0:bf:b9:61:84:ba:f9:a9:39:b2:7a:ac:e5:84:bd: fc:97:5e:06:f8:d2:40:0f:f6:02:3a:f4:80:82:08:78:7e:46: bb:f7:7b:5a:bb:e0:31:3b:c1:1e:43:c5:0c:e6:14:98:a8:e0: 89:8e:84:de:36:39:f8:dc:b1:be:07:3f:07:fb:e0:b5:45:64: 5e:a2:39:9a:66:19:9f:3b:46:44:51:b1:df:bf:1c:df:84:63: fe:c3:85:f1:ee:a4:9c:65:ee:04:72:c4:3c:14:3f:dd:ea:18: 3e:e7:ff:4b:d5:53:a8:5a:33:b5:ca:55:14:3a:f3:94:18:0a: ab:80:57:5c:25:4e:e1:47:f2:c3:e7:35:cd:1f:1a:b9:4a:b9: 50:d6:8a:5f:c8:2f:b4:96 -----BEGIN CERTIFICATE----- MIIF9DCCA9ygAwIBAgIBCTANBgkqhkiG9w0BAQQFADCByzELMAkGA1UEBhMCREUx FjAUBgNVBAgTDU5pZWRlcnNhY2hzZW4xEjAQBgNVBAcTCU9sZGVuYnVyZzEOMAwG A1UEChMFT0ZGSVMxOTA3BgNVBAsTMEhlYWx0aGNhcmUgSW5mb3JtYXRpb24gYW5k IENvbW11bmljYXRpb24gU3lzdGVtczEmMCQGA1UEAxMdRENNVEsgQ2VydGlmaWNh dGlvbiBBdXRob3JpdHkxHTAbBgkqhkiG9w0BCQEWDmRpY29tQG9mZmlzLmRlMB4X DTAzMDkwNTEwMjAxNloXDTA2MDkwNTEwMjAxNlowgdcxCzAJBgNVBAYTAkRFMRYw FAYDVQQIEw1OaWVkZXJzYWNoc2VuMRIwEAYDVQQHEwlPbGRlbmJ1cmcxDjAMBgNV BAoTBU9GRklTMTkwNwYDVQQLEzBIZWFsdGhjYXJlIEluZm9ybWF0aW9uIGFuZCBD b21tdW5pY2F0aW9uIFN5c3RlbXMxMjAwBgNVBAMTKURJQ09Nc2NvcGUgMy42LjAg RGVmYXVsdCBVc2VyIENlcnRpZmljYXRlMR0wGwYJKoZIhvcNAQkBFg5kaWNvbUBv ZmZpcy5kZTCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEA1RnY2b+gYUgpN+4P 0UUoQhC9QbcEUEYRvfCNHzzBUHdRXVzxCr1QSQAuIhnkphRqJDFnbbEornZgN8Sa D10vn8CZ8cUxnhoKoxgOiwH875TVfAsmKDso4WkuYvAZNRN68Rbfrg1g5JlL3bzu ZMFaAmgnyGSYA7dO+JmXPNjQ1cECAwEAAaOCAVcwggFTMAkGA1UdEwQCMAAwLAYJ YIZIAYb4QgENBB8WHU9wZW5TU0wgR2VuZXJhdGVkIENlcnRpZmljYXRlMB0GA1Ud DgQWBBR8FdZqouwPVr1V0oIWtgc3g8JdOjCB+AYDVR0jBIHwMIHtgBQLeEJylVEk bdDlFnixcYi7P6Pf1aGB0aSBzjCByzELMAkGA1UEBhMCREUxFjAUBgNVBAgTDU5p ZWRlcnNhY2hzZW4xEjAQBgNVBAcTCU9sZGVuYnVyZzEOMAwGA1UEChMFT0ZGSVMx OTA3BgNVBAsTMEhlYWx0aGNhcmUgSW5mb3JtYXRpb24gYW5kIENvbW11bmljYXRp b24gU3lzdGVtczEmMCQGA1UEAxMdRENNVEsgQ2VydGlmaWNhdGlvbiBBdXRob3Jp dHkxHTAbBgkqhkiG9w0BCQEWDmRpY29tQG9mZmlzLmRlggEAMA0GCSqGSIb3DQEB BAUAA4ICAQB16iEYd1iKX0CciOgprldbd/Eb1yYFPQMUDTJs7jrtEikBMoesNkM+ 4gXC89Ab/PVczwx/VmRk7vJ9Nz5ifVfw6pF8RPlVRmwxXAF8Lz3k153+fAlQpEKb 183xB56HGUCy1H66LvNUFQvslsuXYpVlnSjpWNOP0gqLlKk6VsUzLfeR8UTOCtGV XNVStsYbd7xDmaO4kgGwdrWyTQdtNuVtp2rIk9RwZi6tQXraCh04YahgyH6kMmLy poI95xS0844TcaTfkHYhaVDqQcMWe6WQoJT5W4IOzqLvMD4dtlCX2zewAjrP3so1 KoyuaJIU9+WMt+F7H1oVqGIC4RxVenr7p3XgTTJwfO6oPya+DD/DXVy/89eRi+xO 15AGIihY+0/NrnjNNuGHwT+pR1fjURoQvW9/M1Kre0QQpwLT5aeZ5v8gYunYUkqK ekAis6SvPzZJl70tdE16Ml24z2xJAxHhuSF67nC7z1xKvzLwv7lhhLr5qTmyeqzl hL38l14G+NJAD/YCOvSAggh4fka793tau+AxO8EeQ8UM5hSYqOCJjoTeNjn43LG+ Bz8H++C1RWReojmaZhmfO0ZEUbHfvxzfhGP+w4Xx7qScZe4EcsQ8FD/d6hg+5/9L 1VOoWjO1ylUUOvOUGAqrgFdcJU7hR/LD5zXNHxq5SrlQ1opfyC+0lg== -----END CERTIFICATE----- dicomscope-3.6.0/DICOMscope/usrcerts/userkey.pem0000644000265600020320000000156707770306522020743 0ustar tilleaadmin-----BEGIN RSA PRIVATE KEY----- MIICXQIBAAKBgQDVGdjZv6BhSCk37g/RRShCEL1BtwRQRhG98I0fPMFQd1FdXPEK vVBJAC4iGeSmFGokMWdtsSiudmA3xJoPXS+fwJnxxTGeGgqjGA6LAfzvlNV8CyYo OyjhaS5i8Bk1E3rxFt+uDWDkmUvdvO5kwVoCaCfIZJgDt074mZc82NDVwQIDAQAB AoGBAJv0MIka/mpzfwbZiGXksNO4oGjpYZTF0tIoq37C3c7fo4IqNJVhetIR+bEn Nfh9VDhsl37lehpDs6LclMrNrb1sOVWMRJoj1shwfZapx1HyJg6oig/YuRXZz7DG ZNhp9LHMQFLJE1XByvU70PI6+yZLdiAWuJYzClxqdRfWJAppAkEA7Avyx/P7iexe sKJHjTglTKRQqb+qZqIZTdc4NW04aeeR0c9i0aoJGN75uuFUho6JRC3bxYm+ZWYi dsS/kZDPLwJBAOcdWnojivf1+lKTAg2VRtTY72++bluVRoGOpHJJLzcqHeam+nJ6 HI977+Vds/cLDCI2burS+exwhSZ0UpT57g8CQDanFZFiVk064zm2eSajZ091hA+p hwS4Z290c1k7bqJmsYaIo/KzkeOmTOAOKAn3mqSkkYwNNn43xacGKuzDQJUCQGsI NhGgikhhm2dIe8fsnRwPx3t5tsQlMrznYZMn/3zNvYFHTW9czANLQ4N2zNSZQipK CT4pLONqDNANSP2DbdMCQQDMRRYaC02Ab+ZXp/SoMOkO1gEEX5rw8xFDWcV2Bof+ CeVF0MMFMNCuQ3W3VSVvnWM3ffisWP4kk4nzaPmbFMQ0 -----END RSA PRIVATE KEY----- dicomscope-3.6.0/interface/0002755000265600020320000000000011135621372014734 5ustar tilleaadmindicomscope-3.6.0/interface/include/0002755000265600020320000000000011262371102016351 5ustar tilleaadmindicomscope-3.6.0/interface/include/J2Ci_jDSRCodeValue.h0000644000265600020320000000342011262371102021720 0ustar tilleaadmin/* DO NOT EDIT THIS FILE - it is machine generated */ #include /* Header for class J2Ci_jDSRCodeValue */ #ifndef _Included_J2Ci_jDSRCodeValue #define _Included_J2Ci_jDSRCodeValue #ifdef __cplusplus extern "C" { #endif /* * Class: J2Ci_jDSRCodeValue * Method: clear * Signature: ()V */ JNIEXPORT void JNICALL Java_J2Ci_jDSRCodeValue_clear (JNIEnv *, jobject); /* * Class: J2Ci_jDSRCodeValue * Method: isValid * Signature: ()I */ JNIEXPORT jint JNICALL Java_J2Ci_jDSRCodeValue_isValid (JNIEnv *, jobject); /* * Class: J2Ci_jDSRCodeValue * Method: isEmpty * Signature: ()I */ JNIEXPORT jint JNICALL Java_J2Ci_jDSRCodeValue_isEmpty (JNIEnv *, jobject); /* * Class: J2Ci_jDSRCodeValue * Method: getCodeValue * Signature: ()Ljava/lang/String; */ JNIEXPORT jstring JNICALL Java_J2Ci_jDSRCodeValue_getCodeValue (JNIEnv *, jobject); /* * Class: J2Ci_jDSRCodeValue * Method: getCodingSchemeDesignator * Signature: ()Ljava/lang/String; */ JNIEXPORT jstring JNICALL Java_J2Ci_jDSRCodeValue_getCodingSchemeDesignator (JNIEnv *, jobject); /* * Class: J2Ci_jDSRCodeValue * Method: getCodingSchemeVersion * Signature: ()Ljava/lang/String; */ JNIEXPORT jstring JNICALL Java_J2Ci_jDSRCodeValue_getCodingSchemeVersion (JNIEnv *, jobject); /* * Class: J2Ci_jDSRCodeValue * Method: getCodeMeaning * Signature: ()Ljava/lang/String; */ JNIEXPORT jstring JNICALL Java_J2Ci_jDSRCodeValue_getCodeMeaning (JNIEnv *, jobject); /* * Class: J2Ci_jDSRCodeValue * Method: setCode * Signature: (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)I */ JNIEXPORT jint JNICALL Java_J2Ci_jDSRCodeValue_setCode (JNIEnv *, jobject, jstring, jstring, jstring, jstring); #ifdef __cplusplus } #endif #endif dicomscope-3.6.0/interface/include/J2Ci_jDSRCompositeValue.h0000644000265600020320000000214711262371102023015 0ustar tilleaadmin/* DO NOT EDIT THIS FILE - it is machine generated */ #include /* Header for class J2Ci_jDSRCompositeValue */ #ifndef _Included_J2Ci_jDSRCompositeValue #define _Included_J2Ci_jDSRCompositeValue #ifdef __cplusplus extern "C" { #endif /* * Class: J2Ci_jDSRCompositeValue * Method: getSOPClassUID * Signature: ()Ljava/lang/String; */ JNIEXPORT jstring JNICALL Java_J2Ci_jDSRCompositeValue_getSOPClassUID (JNIEnv *, jobject); /* * Class: J2Ci_jDSRCompositeValue * Method: getSOPClassName * Signature: ()Ljava/lang/String; */ JNIEXPORT jstring JNICALL Java_J2Ci_jDSRCompositeValue_getSOPClassName (JNIEnv *, jobject); /* * Class: J2Ci_jDSRCompositeValue * Method: getSOPInstanceUID * Signature: ()Ljava/lang/String; */ JNIEXPORT jstring JNICALL Java_J2Ci_jDSRCompositeValue_getSOPInstanceUID (JNIEnv *, jobject); /* * Class: J2Ci_jDSRCompositeValue * Method: setReference * Signature: (Ljava/lang/String;Ljava/lang/String;)I */ JNIEXPORT jint JNICALL Java_J2Ci_jDSRCompositeValue_setReference (JNIEnv *, jobject, jstring, jstring); #ifdef __cplusplus } #endif #endif dicomscope-3.6.0/interface/include/J2Ci_jDSRDocument.h0000644000265600020320000003270011262371102021632 0ustar tilleaadmin/* DO NOT EDIT THIS FILE - it is machine generated */ #include /* Header for class J2Ci_jDSRDocument */ #ifndef _Included_J2Ci_jDSRDocument #define _Included_J2Ci_jDSRDocument #ifdef __cplusplus extern "C" { #endif /* * Class: J2Ci_jDSRDocument * Method: isValid * Signature: ()Z */ JNIEXPORT jboolean JNICALL Java_J2Ci_jDSRDocument_isValid (JNIEnv *, jobject); /* * Class: J2Ci_jDSRDocument * Method: isFinalized * Signature: ()Z */ JNIEXPORT jboolean JNICALL Java_J2Ci_jDSRDocument_isFinalized (JNIEnv *, jobject); /* * Class: J2Ci_jDSRDocument * Method: renderHTML * Signature: (LJ2Ci/jStringByRef;I)I */ JNIEXPORT jint JNICALL Java_J2Ci_jDSRDocument_renderHTML (JNIEnv *, jobject, jobject, jint); /* * Class: J2Ci_jDSRDocument * Method: getDocumentType * Signature: ()I */ JNIEXPORT jint JNICALL Java_J2Ci_jDSRDocument_getDocumentType (JNIEnv *, jobject); /* * Class: J2Ci_jDSRDocument * Method: getTreeN * Signature: ()J */ JNIEXPORT jlong JNICALL Java_J2Ci_jDSRDocument_getTreeN (JNIEnv *, jobject); /* * Class: J2Ci_jDSRDocument * Method: getSpecificCharacterSetType * Signature: ()I */ JNIEXPORT jint JNICALL Java_J2Ci_jDSRDocument_getSpecificCharacterSetType (JNIEnv *, jobject); /* * Class: J2Ci_jDSRDocument * Method: setSpecificCharacterSetType * Signature: (I)I */ JNIEXPORT jint JNICALL Java_J2Ci_jDSRDocument_setSpecificCharacterSetType (JNIEnv *, jobject, jint); /* * Class: J2Ci_jDSRDocument * Method: getCompletionFlag * Signature: ()I */ JNIEXPORT jint JNICALL Java_J2Ci_jDSRDocument_getCompletionFlag (JNIEnv *, jobject); /* * Class: J2Ci_jDSRDocument * Method: getCompletionFlagDescription * Signature: ()Ljava/lang/String; */ JNIEXPORT jstring JNICALL Java_J2Ci_jDSRDocument_getCompletionFlagDescription (JNIEnv *, jobject); /* * Class: J2Ci_jDSRDocument * Method: getVerificationFlag * Signature: ()I */ JNIEXPORT jint JNICALL Java_J2Ci_jDSRDocument_getVerificationFlag (JNIEnv *, jobject); /* * Class: J2Ci_jDSRDocument * Method: getNumberOfVerifyingObservers * Signature: ()I */ JNIEXPORT jint JNICALL Java_J2Ci_jDSRDocument_getNumberOfVerifyingObservers (JNIEnv *, jobject); /* * Class: J2Ci_jDSRDocument * Method: getVerifyingObserver * Signature: (ILJ2Ci/jStringByRef;LJ2Ci/jStringByRef;LJ2Ci/jStringByRef;)I */ JNIEXPORT jint JNICALL Java_J2Ci_jDSRDocument_getVerifyingObserver__ILJ2Ci_jStringByRef_2LJ2Ci_jStringByRef_2LJ2Ci_jStringByRef_2 (JNIEnv *, jobject, jint, jobject, jobject, jobject); /* * Class: J2Ci_jDSRDocument * Method: getVerifyingObserver * Signature: (ILJ2Ci/jStringByRef;LJ2Ci/jStringByRef;LJ2Ci/jStringByRef;LJ2Ci/jStringByRef;LJ2Ci/jStringByRef;LJ2Ci/jStringByRef;LJ2Ci/jStringByRef;)I */ JNIEXPORT jint JNICALL Java_J2Ci_jDSRDocument_getVerifyingObserver__ILJ2Ci_jStringByRef_2LJ2Ci_jStringByRef_2LJ2Ci_jStringByRef_2LJ2Ci_jStringByRef_2LJ2Ci_jStringByRef_2LJ2Ci_jStringByRef_2LJ2Ci_jStringByRef_2 (JNIEnv *, jobject, jint, jobject, jobject, jobject, jobject, jobject, jobject, jobject); /* * Class: J2Ci_jDSRDocument * Method: getNumberOfPredecessorDocuments * Signature: ()I */ JNIEXPORT jint JNICALL Java_J2Ci_jDSRDocument_getNumberOfPredecessorDocuments (JNIEnv *, jobject); /* * Class: J2Ci_jDSRDocument * Method: getModality * Signature: ()Ljava/lang/String; */ JNIEXPORT jstring JNICALL Java_J2Ci_jDSRDocument_getModality (JNIEnv *, jobject); /* * Class: J2Ci_jDSRDocument * Method: getSOPClassUID * Signature: ()Ljava/lang/String; */ JNIEXPORT jstring JNICALL Java_J2Ci_jDSRDocument_getSOPClassUID (JNIEnv *, jobject); /* * Class: J2Ci_jDSRDocument * Method: getStudyInstanceUID * Signature: ()Ljava/lang/String; */ JNIEXPORT jstring JNICALL Java_J2Ci_jDSRDocument_getStudyInstanceUID (JNIEnv *, jobject); /* * Class: J2Ci_jDSRDocument * Method: getSeriesInstanceUID * Signature: ()Ljava/lang/String; */ JNIEXPORT jstring JNICALL Java_J2Ci_jDSRDocument_getSeriesInstanceUID (JNIEnv *, jobject); /* * Class: J2Ci_jDSRDocument * Method: getSOPInstanceUID * Signature: ()Ljava/lang/String; */ JNIEXPORT jstring JNICALL Java_J2Ci_jDSRDocument_getSOPInstanceUID (JNIEnv *, jobject); /* * Class: J2Ci_jDSRDocument * Method: getInstanceCreatorUID * Signature: ()Ljava/lang/String; */ JNIEXPORT jstring JNICALL Java_J2Ci_jDSRDocument_getInstanceCreatorUID (JNIEnv *, jobject); /* * Class: J2Ci_jDSRDocument * Method: getSpecificCharacterSet * Signature: ()Ljava/lang/String; */ JNIEXPORT jstring JNICALL Java_J2Ci_jDSRDocument_getSpecificCharacterSet (JNIEnv *, jobject); /* * Class: J2Ci_jDSRDocument * Method: getPatientsName * Signature: ()Ljava/lang/String; */ JNIEXPORT jstring JNICALL Java_J2Ci_jDSRDocument_getPatientsName (JNIEnv *, jobject); /* * Class: J2Ci_jDSRDocument * Method: getPatientsBirthDate * Signature: ()Ljava/lang/String; */ JNIEXPORT jstring JNICALL Java_J2Ci_jDSRDocument_getPatientsBirthDate (JNIEnv *, jobject); /* * Class: J2Ci_jDSRDocument * Method: getPatientsSex * Signature: ()Ljava/lang/String; */ JNIEXPORT jstring JNICALL Java_J2Ci_jDSRDocument_getPatientsSex (JNIEnv *, jobject); /* * Class: J2Ci_jDSRDocument * Method: getReferringPhysiciansName * Signature: ()Ljava/lang/String; */ JNIEXPORT jstring JNICALL Java_J2Ci_jDSRDocument_getReferringPhysiciansName (JNIEnv *, jobject); /* * Class: J2Ci_jDSRDocument * Method: getStudyDescription * Signature: ()Ljava/lang/String; */ JNIEXPORT jstring JNICALL Java_J2Ci_jDSRDocument_getStudyDescription (JNIEnv *, jobject); /* * Class: J2Ci_jDSRDocument * Method: getSeriesDescription * Signature: ()Ljava/lang/String; */ JNIEXPORT jstring JNICALL Java_J2Ci_jDSRDocument_getSeriesDescription (JNIEnv *, jobject); /* * Class: J2Ci_jDSRDocument * Method: getManufacturer * Signature: ()Ljava/lang/String; */ JNIEXPORT jstring JNICALL Java_J2Ci_jDSRDocument_getManufacturer (JNIEnv *, jobject); /* * Class: J2Ci_jDSRDocument * Method: getStudyDate * Signature: ()Ljava/lang/String; */ JNIEXPORT jstring JNICALL Java_J2Ci_jDSRDocument_getStudyDate (JNIEnv *, jobject); /* * Class: J2Ci_jDSRDocument * Method: getStudyTime * Signature: ()Ljava/lang/String; */ JNIEXPORT jstring JNICALL Java_J2Ci_jDSRDocument_getStudyTime (JNIEnv *, jobject); /* * Class: J2Ci_jDSRDocument * Method: getInstanceCreationDate * Signature: ()Ljava/lang/String; */ JNIEXPORT jstring JNICALL Java_J2Ci_jDSRDocument_getInstanceCreationDate (JNIEnv *, jobject); /* * Class: J2Ci_jDSRDocument * Method: getInstanceCreationTime * Signature: ()Ljava/lang/String; */ JNIEXPORT jstring JNICALL Java_J2Ci_jDSRDocument_getInstanceCreationTime (JNIEnv *, jobject); /* * Class: J2Ci_jDSRDocument * Method: getContentDate * Signature: ()Ljava/lang/String; */ JNIEXPORT jstring JNICALL Java_J2Ci_jDSRDocument_getContentDate (JNIEnv *, jobject); /* * Class: J2Ci_jDSRDocument * Method: getContentTime * Signature: ()Ljava/lang/String; */ JNIEXPORT jstring JNICALL Java_J2Ci_jDSRDocument_getContentTime (JNIEnv *, jobject); /* * Class: J2Ci_jDSRDocument * Method: getStudyID * Signature: ()Ljava/lang/String; */ JNIEXPORT jstring JNICALL Java_J2Ci_jDSRDocument_getStudyID (JNIEnv *, jobject); /* * Class: J2Ci_jDSRDocument * Method: getPatientID * Signature: ()Ljava/lang/String; */ JNIEXPORT jstring JNICALL Java_J2Ci_jDSRDocument_getPatientID (JNIEnv *, jobject); /* * Class: J2Ci_jDSRDocument * Method: getSeriesNumber * Signature: ()Ljava/lang/String; */ JNIEXPORT jstring JNICALL Java_J2Ci_jDSRDocument_getSeriesNumber (JNIEnv *, jobject); /* * Class: J2Ci_jDSRDocument * Method: getInstanceNumber * Signature: ()Ljava/lang/String; */ JNIEXPORT jstring JNICALL Java_J2Ci_jDSRDocument_getInstanceNumber (JNIEnv *, jobject); /* * Class: J2Ci_jDSRDocument * Method: getAccessionNumber * Signature: ()Ljava/lang/String; */ JNIEXPORT jstring JNICALL Java_J2Ci_jDSRDocument_getAccessionNumber (JNIEnv *, jobject); /* * Class: J2Ci_jDSRDocument * Method: setSpecificCharacterSet * Signature: (Ljava/lang/String;)I */ JNIEXPORT jint JNICALL Java_J2Ci_jDSRDocument_setSpecificCharacterSet (JNIEnv *, jobject, jstring); /* * Class: J2Ci_jDSRDocument * Method: setCompletionFlagDescription * Signature: (Ljava/lang/String;)I */ JNIEXPORT jint JNICALL Java_J2Ci_jDSRDocument_setCompletionFlagDescription (JNIEnv *, jobject, jstring); /* * Class: J2Ci_jDSRDocument * Method: setPatientsName * Signature: (Ljava/lang/String;)I */ JNIEXPORT jint JNICALL Java_J2Ci_jDSRDocument_setPatientsName (JNIEnv *, jobject, jstring); /* * Class: J2Ci_jDSRDocument * Method: setPatientsBirthDate * Signature: (Ljava/lang/String;)I */ JNIEXPORT jint JNICALL Java_J2Ci_jDSRDocument_setPatientsBirthDate (JNIEnv *, jobject, jstring); /* * Class: J2Ci_jDSRDocument * Method: setPatientsSex * Signature: (Ljava/lang/String;)I */ JNIEXPORT jint JNICALL Java_J2Ci_jDSRDocument_setPatientsSex (JNIEnv *, jobject, jstring); /* * Class: J2Ci_jDSRDocument * Method: setReferringPhysiciansName * Signature: (Ljava/lang/String;)I */ JNIEXPORT jint JNICALL Java_J2Ci_jDSRDocument_setReferringPhysiciansName (JNIEnv *, jobject, jstring); /* * Class: J2Ci_jDSRDocument * Method: setStudyDescription * Signature: (Ljava/lang/String;)I */ JNIEXPORT jint JNICALL Java_J2Ci_jDSRDocument_setStudyDescription (JNIEnv *, jobject, jstring); /* * Class: J2Ci_jDSRDocument * Method: setSeriesDescription * Signature: (Ljava/lang/String;)I */ JNIEXPORT jint JNICALL Java_J2Ci_jDSRDocument_setSeriesDescription (JNIEnv *, jobject, jstring); /* * Class: J2Ci_jDSRDocument * Method: setManufacturer * Signature: (Ljava/lang/String;)I */ JNIEXPORT jint JNICALL Java_J2Ci_jDSRDocument_setManufacturer (JNIEnv *, jobject, jstring); /* * Class: J2Ci_jDSRDocument * Method: setStudyID * Signature: (Ljava/lang/String;)I */ JNIEXPORT jint JNICALL Java_J2Ci_jDSRDocument_setStudyID (JNIEnv *, jobject, jstring); /* * Class: J2Ci_jDSRDocument * Method: setPatientID * Signature: (Ljava/lang/String;)I */ JNIEXPORT jint JNICALL Java_J2Ci_jDSRDocument_setPatientID (JNIEnv *, jobject, jstring); /* * Class: J2Ci_jDSRDocument * Method: setSeriesNumber * Signature: (Ljava/lang/String;)I */ JNIEXPORT jint JNICALL Java_J2Ci_jDSRDocument_setSeriesNumber (JNIEnv *, jobject, jstring); /* * Class: J2Ci_jDSRDocument * Method: setInstanceNumber * Signature: (Ljava/lang/String;)I */ JNIEXPORT jint JNICALL Java_J2Ci_jDSRDocument_setInstanceNumber (JNIEnv *, jobject, jstring); /* * Class: J2Ci_jDSRDocument * Method: setAccessionNumber * Signature: (Ljava/lang/String;)I */ JNIEXPORT jint JNICALL Java_J2Ci_jDSRDocument_setAccessionNumber (JNIEnv *, jobject, jstring); /* * Class: J2Ci_jDSRDocument * Method: createNewStudy * Signature: ()V */ JNIEXPORT void JNICALL Java_J2Ci_jDSRDocument_createNewStudy (JNIEnv *, jobject); /* * Class: J2Ci_jDSRDocument * Method: createNewSeries * Signature: ()V */ JNIEXPORT void JNICALL Java_J2Ci_jDSRDocument_createNewSeries (JNIEnv *, jobject); /* * Class: J2Ci_jDSRDocument * Method: createNewSeriesInStudy * Signature: (Ljava/lang/String;)I */ JNIEXPORT jint JNICALL Java_J2Ci_jDSRDocument_createNewSeriesInStudy (JNIEnv *, jobject, jstring); /* * Class: J2Ci_jDSRDocument * Method: createNewSOPInstance * Signature: ()V */ JNIEXPORT void JNICALL Java_J2Ci_jDSRDocument_createNewSOPInstance (JNIEnv *, jobject); /* * Class: J2Ci_jDSRDocument * Method: createNewDocument * Signature: ()I */ JNIEXPORT jint JNICALL Java_J2Ci_jDSRDocument_createNewDocument__ (JNIEnv *, jobject); /* * Class: J2Ci_jDSRDocument * Method: createNewDocument * Signature: (I)I */ JNIEXPORT jint JNICALL Java_J2Ci_jDSRDocument_createNewDocument__I (JNIEnv *, jobject, jint); /* * Class: J2Ci_jDSRDocument * Method: createRevisedVersion * Signature: ()I */ JNIEXPORT jint JNICALL Java_J2Ci_jDSRDocument_createRevisedVersion (JNIEnv *, jobject); /* * Class: J2Ci_jDSRDocument * Method: completeDocument * Signature: ()I */ JNIEXPORT jint JNICALL Java_J2Ci_jDSRDocument_completeDocument__ (JNIEnv *, jobject); /* * Class: J2Ci_jDSRDocument * Method: completeDocument * Signature: (Ljava/lang/String;)I */ JNIEXPORT jint JNICALL Java_J2Ci_jDSRDocument_completeDocument__Ljava_lang_String_2 (JNIEnv *, jobject, jstring); /* * Class: J2Ci_jDSRDocument * Method: verifyDocument * Signature: (Ljava/lang/String;Ljava/lang/String;)I */ JNIEXPORT jint JNICALL Java_J2Ci_jDSRDocument_verifyDocument__Ljava_lang_String_2Ljava_lang_String_2 (JNIEnv *, jobject, jstring, jstring); /* * Class: J2Ci_jDSRDocument * Method: verifyDocument * Signature: (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)I */ JNIEXPORT jint JNICALL Java_J2Ci_jDSRDocument_verifyDocument__Ljava_lang_String_2Ljava_lang_String_2Ljava_lang_String_2Ljava_lang_String_2Ljava_lang_String_2Ljava_lang_String_2 (JNIEnv *, jobject, jstring, jstring, jstring, jstring, jstring, jstring); /* * Class: J2Ci_jDSRDocument * Method: removeVerification * Signature: ()V */ JNIEXPORT void JNICALL Java_J2Ci_jDSRDocument_removeVerification (JNIEnv *, jobject); #ifdef __cplusplus } #endif #endif dicomscope-3.6.0/interface/include/J2Ci_jDSRDocumentTree.h0000644000265600020320000001544611262371102022462 0ustar tilleaadmin/* DO NOT EDIT THIS FILE - it is machine generated */ #include /* Header for class J2Ci_jDSRDocumentTree */ #ifndef _Included_J2Ci_jDSRDocumentTree #define _Included_J2Ci_jDSRDocumentTree #ifdef __cplusplus extern "C" { #endif /* * Class: J2Ci_jDSRDocumentTree * Method: canAddContentItem * Signature: (III)Z */ JNIEXPORT jboolean JNICALL Java_J2Ci_jDSRDocumentTree_canAddContentItem (JNIEnv *, jobject, jint, jint, jint); /* * Class: J2Ci_jDSRDocumentTree * Method: addContentItem * Signature: (III)I */ JNIEXPORT jint JNICALL Java_J2Ci_jDSRDocumentTree_addContentItem (JNIEnv *, jobject, jint, jint, jint); /* * Class: J2Ci_jDSRDocumentTree * Method: removeCurrentContentItem * Signature: ()I */ JNIEXPORT jint JNICALL Java_J2Ci_jDSRDocumentTree_removeCurrentContentItem (JNIEnv *, jobject); /* * Class: J2Ci_jDSRDocumentTree * Method: removeSignatures * Signature: ()V */ JNIEXPORT void JNICALL Java_J2Ci_jDSRDocumentTree_removeSignatures (JNIEnv *, jobject); /* * Class: J2Ci_jDSRDocumentTree * Method: unmarkAllContentItems * Signature: ()V */ JNIEXPORT void JNICALL Java_J2Ci_jDSRDocumentTree_unmarkAllContentItems (JNIEnv *, jobject); /* * Class: J2Ci_jDSRDocumentTree * Method: gotoRootNode * Signature: ()I */ JNIEXPORT jint JNICALL Java_J2Ci_jDSRDocumentTree_gotoRootNode (JNIEnv *, jobject); /* * Class: J2Ci_jDSRDocumentTree * Method: gotoPreviousNode * Signature: ()I */ JNIEXPORT jint JNICALL Java_J2Ci_jDSRDocumentTree_gotoPreviousNode (JNIEnv *, jobject); /* * Class: J2Ci_jDSRDocumentTree * Method: gotoNextNode * Signature: ()I */ JNIEXPORT jint JNICALL Java_J2Ci_jDSRDocumentTree_gotoNextNode (JNIEnv *, jobject); /* * Class: J2Ci_jDSRDocumentTree * Method: gotoParentNode * Signature: ()I */ JNIEXPORT jint JNICALL Java_J2Ci_jDSRDocumentTree_gotoParentNode (JNIEnv *, jobject); /* * Class: J2Ci_jDSRDocumentTree * Method: gotoFirstChildNode * Signature: ()I */ JNIEXPORT jint JNICALL Java_J2Ci_jDSRDocumentTree_gotoFirstChildNode (JNIEnv *, jobject); /* * Class: J2Ci_jDSRDocumentTree * Method: iterateNodes * Signature: ()I */ JNIEXPORT jint JNICALL Java_J2Ci_jDSRDocumentTree_iterateNodes (JNIEnv *, jobject); /* * Class: J2Ci_jDSRDocumentTree * Method: gotoNode * Signature: (I)I */ JNIEXPORT jint JNICALL Java_J2Ci_jDSRDocumentTree_gotoNode (JNIEnv *, jobject, jint); /* * Class: J2Ci_jDSRDocumentTree * Method: isCurrentItemValid * Signature: ()Z */ JNIEXPORT jboolean JNICALL Java_J2Ci_jDSRDocumentTree_isCurrentItemValid (JNIEnv *, jobject); /* * Class: J2Ci_jDSRDocumentTree * Method: isCurrentItemMarked * Signature: ()Z */ JNIEXPORT jboolean JNICALL Java_J2Ci_jDSRDocumentTree_isCurrentItemMarked (JNIEnv *, jobject); /* * Class: J2Ci_jDSRDocumentTree * Method: setCurrentItemMark * Signature: (Z)V */ JNIEXPORT void JNICALL Java_J2Ci_jDSRDocumentTree_setCurrentItemMark (JNIEnv *, jobject, jboolean); /* * Class: J2Ci_jDSRDocumentTree * Method: getCurrentValueType * Signature: ()I */ JNIEXPORT jint JNICALL Java_J2Ci_jDSRDocumentTree_getCurrentValueType (JNIEnv *, jobject); /* * Class: J2Ci_jDSRDocumentTree * Method: getCurrentRelationshipType * Signature: ()I */ JNIEXPORT jint JNICALL Java_J2Ci_jDSRDocumentTree_getCurrentRelationshipType (JNIEnv *, jobject); /* * Class: J2Ci_jDSRDocumentTree * Method: getCurrentNodeID * Signature: ()I */ JNIEXPORT jint JNICALL Java_J2Ci_jDSRDocumentTree_getCurrentNodeID (JNIEnv *, jobject); /* * Class: J2Ci_jDSRDocumentTree * Method: getCurrentReferencedNodeID * Signature: ()I */ JNIEXPORT jint JNICALL Java_J2Ci_jDSRDocumentTree_getCurrentReferencedNodeID (JNIEnv *, jobject); /* * Class: J2Ci_jDSRDocumentTree * Method: getCurrentLevel * Signature: ()I */ JNIEXPORT jint JNICALL Java_J2Ci_jDSRDocumentTree_getCurrentLevel (JNIEnv *, jobject); /* * Class: J2Ci_jDSRDocumentTree * Method: getCurrentStringValue * Signature: ()Ljava/lang/String; */ JNIEXPORT jstring JNICALL Java_J2Ci_jDSRDocumentTree_getCurrentStringValue (JNIEnv *, jobject); /* * Class: J2Ci_jDSRDocumentTree * Method: setCurrentStringValue * Signature: (Ljava/lang/String;)I */ JNIEXPORT jint JNICALL Java_J2Ci_jDSRDocumentTree_setCurrentStringValue (JNIEnv *, jobject, jstring); /* * Class: J2Ci_jDSRDocumentTree * Method: getCurrentCodeValueN * Signature: ()J */ JNIEXPORT jlong JNICALL Java_J2Ci_jDSRDocumentTree_getCurrentCodeValueN (JNIEnv *, jobject); /* * Class: J2Ci_jDSRDocumentTree * Method: getCurrentNumValueN * Signature: ()J */ JNIEXPORT jlong JNICALL Java_J2Ci_jDSRDocumentTree_getCurrentNumValueN (JNIEnv *, jobject); /* * Class: J2Ci_jDSRDocumentTree * Method: getCurrentSCoordValueN * Signature: ()J */ JNIEXPORT jlong JNICALL Java_J2Ci_jDSRDocumentTree_getCurrentSCoordValueN (JNIEnv *, jobject); /* * Class: J2Ci_jDSRDocumentTree * Method: getCurrentTCoordValueN * Signature: ()J */ JNIEXPORT jlong JNICALL Java_J2Ci_jDSRDocumentTree_getCurrentTCoordValueN (JNIEnv *, jobject); /* * Class: J2Ci_jDSRDocumentTree * Method: getCurrentCompositeValueN * Signature: ()J */ JNIEXPORT jlong JNICALL Java_J2Ci_jDSRDocumentTree_getCurrentCompositeValueN (JNIEnv *, jobject); /* * Class: J2Ci_jDSRDocumentTree * Method: getCurrentImageValueN * Signature: ()J */ JNIEXPORT jlong JNICALL Java_J2Ci_jDSRDocumentTree_getCurrentImageValueN (JNIEnv *, jobject); /* * Class: J2Ci_jDSRDocumentTree * Method: getCurrentWaveformValueN * Signature: ()J */ JNIEXPORT jlong JNICALL Java_J2Ci_jDSRDocumentTree_getCurrentWaveformValueN (JNIEnv *, jobject); /* * Class: J2Ci_jDSRDocumentTree * Method: getCurrentContinuityOfContentFlag * Signature: ()I */ JNIEXPORT jint JNICALL Java_J2Ci_jDSRDocumentTree_getCurrentContinuityOfContentFlag (JNIEnv *, jobject); /* * Class: J2Ci_jDSRDocumentTree * Method: setCurrentContinuityOfContentFlag * Signature: (I)I */ JNIEXPORT jint JNICALL Java_J2Ci_jDSRDocumentTree_setCurrentContinuityOfContentFlag (JNIEnv *, jobject, jint); /* * Class: J2Ci_jDSRDocumentTree * Method: getCurrentConceptNameN * Signature: ()J */ JNIEXPORT jlong JNICALL Java_J2Ci_jDSRDocumentTree_getCurrentConceptNameN (JNIEnv *, jobject); /* * Class: J2Ci_jDSRDocumentTree * Method: getCurrentObservationDateTime * Signature: ()Ljava/lang/String; */ JNIEXPORT jstring JNICALL Java_J2Ci_jDSRDocumentTree_getCurrentObservationDateTime (JNIEnv *, jobject); /* * Class: J2Ci_jDSRDocumentTree * Method: setCurrentObservationDateTime * Signature: (Ljava/lang/String;)I */ JNIEXPORT jint JNICALL Java_J2Ci_jDSRDocumentTree_setCurrentObservationDateTime (JNIEnv *, jobject, jstring); #ifdef __cplusplus } #endif #endif dicomscope-3.6.0/interface/include/J2Ci_jDSRImageValue.h0000644000265600020320000000600011262371102022065 0ustar tilleaadmin/* DO NOT EDIT THIS FILE - it is machine generated */ #include /* Header for class J2Ci_jDSRImageValue */ #ifndef _Included_J2Ci_jDSRImageValue #define _Included_J2Ci_jDSRImageValue #ifdef __cplusplus extern "C" { #endif /* * Class: J2Ci_jDSRImageValue * Method: getImageSOPClassUID * Signature: ()Ljava/lang/String; */ JNIEXPORT jstring JNICALL Java_J2Ci_jDSRImageValue_getImageSOPClassUID (JNIEnv *, jobject); /* * Class: J2Ci_jDSRImageValue * Method: getImageSOPClassName * Signature: ()Ljava/lang/String; */ JNIEXPORT jstring JNICALL Java_J2Ci_jDSRImageValue_getImageSOPClassName (JNIEnv *, jobject); /* * Class: J2Ci_jDSRImageValue * Method: getImageSOPInstanceUID * Signature: ()Ljava/lang/String; */ JNIEXPORT jstring JNICALL Java_J2Ci_jDSRImageValue_getImageSOPInstanceUID (JNIEnv *, jobject); /* * Class: J2Ci_jDSRImageValue * Method: setImageReference * Signature: (Ljava/lang/String;Ljava/lang/String;)I */ JNIEXPORT jint JNICALL Java_J2Ci_jDSRImageValue_setImageReference (JNIEnv *, jobject, jstring, jstring); /* * Class: J2Ci_jDSRImageValue * Method: getPStateSOPClassUID * Signature: ()Ljava/lang/String; */ JNIEXPORT jstring JNICALL Java_J2Ci_jDSRImageValue_getPStateSOPClassUID (JNIEnv *, jobject); /* * Class: J2Ci_jDSRImageValue * Method: getPStateSOPClassName * Signature: ()Ljava/lang/String; */ JNIEXPORT jstring JNICALL Java_J2Ci_jDSRImageValue_getPStateSOPClassName (JNIEnv *, jobject); /* * Class: J2Ci_jDSRImageValue * Method: getPStateSOPInstanceUID * Signature: ()Ljava/lang/String; */ JNIEXPORT jstring JNICALL Java_J2Ci_jDSRImageValue_getPStateSOPInstanceUID (JNIEnv *, jobject); /* * Class: J2Ci_jDSRImageValue * Method: setPStateReference * Signature: (Ljava/lang/String;Ljava/lang/String;)I */ JNIEXPORT jint JNICALL Java_J2Ci_jDSRImageValue_setPStateReference (JNIEnv *, jobject, jstring, jstring); /* * Class: J2Ci_jDSRImageValue * Method: clearFrameList * Signature: ()V */ JNIEXPORT void JNICALL Java_J2Ci_jDSRImageValue_clearFrameList (JNIEnv *, jobject); /* * Class: J2Ci_jDSRImageValue * Method: getNumberOfFrames * Signature: ()I */ JNIEXPORT jint JNICALL Java_J2Ci_jDSRImageValue_getNumberOfFrames (JNIEnv *, jobject); /* * Class: J2Ci_jDSRImageValue * Method: getFrame * Signature: (ILJ2Ci/jIntByRef;)I */ JNIEXPORT jint JNICALL Java_J2Ci_jDSRImageValue_getFrame (JNIEnv *, jobject, jint, jobject); /* * Class: J2Ci_jDSRImageValue * Method: addFrame * Signature: (I)V */ JNIEXPORT void JNICALL Java_J2Ci_jDSRImageValue_addFrame (JNIEnv *, jobject, jint); /* * Class: J2Ci_jDSRImageValue * Method: removeFrame * Signature: (I)I */ JNIEXPORT jint JNICALL Java_J2Ci_jDSRImageValue_removeFrame (JNIEnv *, jobject, jint); /* * Class: J2Ci_jDSRImageValue * Method: appliesToFrame * Signature: (I)Z */ JNIEXPORT jboolean JNICALL Java_J2Ci_jDSRImageValue_appliesToFrame (JNIEnv *, jobject, jint); #ifdef __cplusplus } #endif #endif dicomscope-3.6.0/interface/include/J2Ci_jDSRNumericValue.h0000644000265600020320000000360511262371102022455 0ustar tilleaadmin/* DO NOT EDIT THIS FILE - it is machine generated */ #include /* Header for class J2Ci_jDSRNumericValue */ #ifndef _Included_J2Ci_jDSRNumericValue #define _Included_J2Ci_jDSRNumericValue #ifdef __cplusplus extern "C" { #endif /* * Class: J2Ci_jDSRNumericValue * Method: getNumericValue * Signature: ()Ljava/lang/String; */ JNIEXPORT jstring JNICALL Java_J2Ci_jDSRNumericValue_getNumericValue (JNIEnv *, jobject); /* * Class: J2Ci_jDSRNumericValue * Method: getMeasurementUnitCodeValue * Signature: ()Ljava/lang/String; */ JNIEXPORT jstring JNICALL Java_J2Ci_jDSRNumericValue_getMeasurementUnitCodeValue (JNIEnv *, jobject); /* * Class: J2Ci_jDSRNumericValue * Method: getMeasurementUnitCodingSchemeDesignator * Signature: ()Ljava/lang/String; */ JNIEXPORT jstring JNICALL Java_J2Ci_jDSRNumericValue_getMeasurementUnitCodingSchemeDesignator (JNIEnv *, jobject); /* * Class: J2Ci_jDSRNumericValue * Method: getMeasurementUnitCodingSchemeVersion * Signature: ()Ljava/lang/String; */ JNIEXPORT jstring JNICALL Java_J2Ci_jDSRNumericValue_getMeasurementUnitCodingSchemeVersion (JNIEnv *, jobject); /* * Class: J2Ci_jDSRNumericValue * Method: getMeasurementUnitCodeMeaning * Signature: ()Ljava/lang/String; */ JNIEXPORT jstring JNICALL Java_J2Ci_jDSRNumericValue_getMeasurementUnitCodeMeaning (JNIEnv *, jobject); /* * Class: J2Ci_jDSRNumericValue * Method: setNumericValue * Signature: (Ljava/lang/String;)I */ JNIEXPORT jint JNICALL Java_J2Ci_jDSRNumericValue_setNumericValue (JNIEnv *, jobject, jstring); /* * Class: J2Ci_jDSRNumericValue * Method: setMeasurementUnit * Signature: (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)I */ JNIEXPORT jint JNICALL Java_J2Ci_jDSRNumericValue_setMeasurementUnit (JNIEnv *, jobject, jstring, jstring, jstring, jstring); #ifdef __cplusplus } #endif #endif dicomscope-3.6.0/interface/include/J2Ci_jDSRSCoordValue.h0000644000265600020320000000305411262371102022242 0ustar tilleaadmin/* DO NOT EDIT THIS FILE - it is machine generated */ #include /* Header for class J2Ci_jDSRSCoordValue */ #ifndef _Included_J2Ci_jDSRSCoordValue #define _Included_J2Ci_jDSRSCoordValue #ifdef __cplusplus extern "C" { #endif /* * Class: J2Ci_jDSRSCoordValue * Method: getGraphicType * Signature: ()I */ JNIEXPORT jint JNICALL Java_J2Ci_jDSRSCoordValue_getGraphicType (JNIEnv *, jobject); /* * Class: J2Ci_jDSRSCoordValue * Method: setGraphicType * Signature: (I)I */ JNIEXPORT jint JNICALL Java_J2Ci_jDSRSCoordValue_setGraphicType (JNIEnv *, jobject, jint); /* * Class: J2Ci_jDSRSCoordValue * Method: clearGraphicData * Signature: ()V */ JNIEXPORT void JNICALL Java_J2Ci_jDSRSCoordValue_clearGraphicData (JNIEnv *, jobject); /* * Class: J2Ci_jDSRSCoordValue * Method: getNumberOfPixels * Signature: ()I */ JNIEXPORT jint JNICALL Java_J2Ci_jDSRSCoordValue_getNumberOfPixels (JNIEnv *, jobject); /* * Class: J2Ci_jDSRSCoordValue * Method: getPixel * Signature: (ILJ2Ci/jFloatByRef;LJ2Ci/jFloatByRef;)I */ JNIEXPORT jint JNICALL Java_J2Ci_jDSRSCoordValue_getPixel (JNIEnv *, jobject, jint, jobject, jobject); /* * Class: J2Ci_jDSRSCoordValue * Method: addPixel * Signature: (FF)V */ JNIEXPORT void JNICALL Java_J2Ci_jDSRSCoordValue_addPixel (JNIEnv *, jobject, jfloat, jfloat); /* * Class: J2Ci_jDSRSCoordValue * Method: removePixel * Signature: (I)I */ JNIEXPORT jint JNICALL Java_J2Ci_jDSRSCoordValue_removePixel (JNIEnv *, jobject, jint); #ifdef __cplusplus } #endif #endif dicomscope-3.6.0/interface/include/J2Ci_jDSRTCoordValue.h0000644000265600020320000000121511262371102022240 0ustar tilleaadmin/* DO NOT EDIT THIS FILE - it is machine generated */ #include /* Header for class J2Ci_jDSRTCoordValue */ #ifndef _Included_J2Ci_jDSRTCoordValue #define _Included_J2Ci_jDSRTCoordValue #ifdef __cplusplus extern "C" { #endif /* * Class: J2Ci_jDSRTCoordValue * Method: getTemporalRangeType * Signature: ()I */ JNIEXPORT jint JNICALL Java_J2Ci_jDSRTCoordValue_getTemporalRangeType (JNIEnv *, jobject); /* * Class: J2Ci_jDSRTCoordValue * Method: setTemporalRangeType * Signature: (I)I */ JNIEXPORT jint JNICALL Java_J2Ci_jDSRTCoordValue_setTemporalRangeType (JNIEnv *, jobject, jint); #ifdef __cplusplus } #endif #endif dicomscope-3.6.0/interface/include/J2Ci_jDSRWaveformValue.h0000644000265600020320000000437211262371102022643 0ustar tilleaadmin/* DO NOT EDIT THIS FILE - it is machine generated */ #include /* Header for class J2Ci_jDSRWaveformValue */ #ifndef _Included_J2Ci_jDSRWaveformValue #define _Included_J2Ci_jDSRWaveformValue #ifdef __cplusplus extern "C" { #endif /* * Class: J2Ci_jDSRWaveformValue * Method: getSOPClassUID * Signature: ()Ljava/lang/String; */ JNIEXPORT jstring JNICALL Java_J2Ci_jDSRWaveformValue_getSOPClassUID (JNIEnv *, jobject); /* * Class: J2Ci_jDSRWaveformValue * Method: getSOPClassName * Signature: ()Ljava/lang/String; */ JNIEXPORT jstring JNICALL Java_J2Ci_jDSRWaveformValue_getSOPClassName (JNIEnv *, jobject); /* * Class: J2Ci_jDSRWaveformValue * Method: getSOPInstanceUID * Signature: ()Ljava/lang/String; */ JNIEXPORT jstring JNICALL Java_J2Ci_jDSRWaveformValue_getSOPInstanceUID (JNIEnv *, jobject); /* * Class: J2Ci_jDSRWaveformValue * Method: setReference * Signature: (Ljava/lang/String;Ljava/lang/String;)I */ JNIEXPORT jint JNICALL Java_J2Ci_jDSRWaveformValue_setReference (JNIEnv *, jobject, jstring, jstring); /* * Class: J2Ci_jDSRWaveformValue * Method: clearChannelList * Signature: ()V */ JNIEXPORT void JNICALL Java_J2Ci_jDSRWaveformValue_clearChannelList (JNIEnv *, jobject); /* * Class: J2Ci_jDSRWaveformValue * Method: getNumberOfChannels * Signature: ()I */ JNIEXPORT jint JNICALL Java_J2Ci_jDSRWaveformValue_getNumberOfChannels (JNIEnv *, jobject); /* * Class: J2Ci_jDSRWaveformValue * Method: getChannel * Signature: (ILJ2Ci/jIntByRef;LJ2Ci/jIntByRef;)I */ JNIEXPORT jint JNICALL Java_J2Ci_jDSRWaveformValue_getChannel (JNIEnv *, jobject, jint, jobject, jobject); /* * Class: J2Ci_jDSRWaveformValue * Method: addChannel * Signature: (II)V */ JNIEXPORT void JNICALL Java_J2Ci_jDSRWaveformValue_addChannel (JNIEnv *, jobject, jint, jint); /* * Class: J2Ci_jDSRWaveformValue * Method: removeChannel * Signature: (I)I */ JNIEXPORT jint JNICALL Java_J2Ci_jDSRWaveformValue_removeChannel (JNIEnv *, jobject, jint); /* * Class: J2Ci_jDSRWaveformValue * Method: appliesToChannel * Signature: (II)Z */ JNIEXPORT jboolean JNICALL Java_J2Ci_jDSRWaveformValue_appliesToChannel (JNIEnv *, jobject, jint, jint); #ifdef __cplusplus } #endif #endif dicomscope-3.6.0/interface/include/J2Ci_jDVInterface.h0000644000265600020320000014201311262371102021634 0ustar tilleaadmin/* DO NOT EDIT THIS FILE - it is machine generated */ #include /* Header for class J2Ci_jDVInterface */ #ifndef _Included_J2Ci_jDVInterface #define _Included_J2Ci_jDVInterface #ifdef __cplusplus extern "C" { #endif /* * Class: J2Ci_jDVInterface * Method: createObjOfDVInterface * Signature: (Ljava/lang/String;)V */ JNIEXPORT void JNICALL Java_J2Ci_jDVInterface_createObjOfDVInterface (JNIEnv *, jobject, jstring); /* * Class: J2Ci_jDVInterface * Method: removeObjOfDVInterface * Signature: ()V */ JNIEXPORT void JNICALL Java_J2Ci_jDVInterface_removeObjOfDVInterface (JNIEnv *, jobject); /* * Class: J2Ci_jDVInterface * Method: loadImage * Signature: (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Z)I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVInterface_loadImage__Ljava_lang_String_2Ljava_lang_String_2Ljava_lang_String_2Z (JNIEnv *, jobject, jstring, jstring, jstring, jboolean); /* * Class: J2Ci_jDVInterface * Method: loadImage * Signature: (Ljava/lang/String;)I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVInterface_loadImage__Ljava_lang_String_2 (JNIEnv *, jobject, jstring); /* * Class: J2Ci_jDVInterface * Method: loadReferencedImage * Signature: (IZ)I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVInterface_loadReferencedImage (JNIEnv *, jobject, jint, jboolean); /* * Class: J2Ci_jDVInterface * Method: loadPState * Signature: (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Z)I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVInterface_loadPState__Ljava_lang_String_2Ljava_lang_String_2Ljava_lang_String_2Z (JNIEnv *, jobject, jstring, jstring, jstring, jboolean); /* * Class: J2Ci_jDVInterface * Method: loadPState * Signature: (Ljava/lang/String;)I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVInterface_loadPState__Ljava_lang_String_2 (JNIEnv *, jobject, jstring); /* * Class: J2Ci_jDVInterface * Method: loadPState * Signature: (Ljava/lang/String;Ljava/lang/String;)I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVInterface_loadPState__Ljava_lang_String_2Ljava_lang_String_2 (JNIEnv *, jobject, jstring, jstring); /* * Class: J2Ci_jDVInterface * Method: loadStructuredReport * Signature: (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Z)I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVInterface_loadStructuredReport__Ljava_lang_String_2Ljava_lang_String_2Ljava_lang_String_2Z (JNIEnv *, jobject, jstring, jstring, jstring, jboolean); /* * Class: J2Ci_jDVInterface * Method: loadStructuredReport * Signature: (Ljava/lang/String;)I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVInterface_loadStructuredReport__Ljava_lang_String_2 (JNIEnv *, jobject, jstring); /* * Class: J2Ci_jDVInterface * Method: loadSRTemplate * Signature: (Ljava/lang/String;)I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVInterface_loadSRTemplate (JNIEnv *, jobject, jstring); /* * Class: J2Ci_jDVInterface * Method: savePState * Signature: (Z)I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVInterface_savePState__Z (JNIEnv *, jobject, jboolean); /* * Class: J2Ci_jDVInterface * Method: savePState * Signature: (Ljava/lang/String;ZZ)I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVInterface_savePState__Ljava_lang_String_2ZZ (JNIEnv *, jobject, jstring, jboolean, jboolean); /* * Class: J2Ci_jDVInterface * Method: saveCurrentImage * Signature: (Ljava/lang/String;Z)I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVInterface_saveCurrentImage (JNIEnv *, jobject, jstring, jboolean); /* * Class: J2Ci_jDVInterface * Method: saveStructuredReport * Signature: ()I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVInterface_saveStructuredReport__ (JNIEnv *, jobject); /* * Class: J2Ci_jDVInterface * Method: saveStructuredReport * Signature: (Ljava/lang/String;Z)I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVInterface_saveStructuredReport__Ljava_lang_String_2Z (JNIEnv *, jobject, jstring, jboolean); /* * Class: J2Ci_jDVInterface * Method: addImageReferenceToPState * Signature: (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVInterface_addImageReferenceToPState (JNIEnv *, jobject, jstring, jstring, jstring); /* * Class: J2Ci_jDVInterface * Method: getNumberOfImageReferences * Signature: ()I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVInterface_getNumberOfImageReferences (JNIEnv *, jobject); /* * Class: J2Ci_jDVInterface * Method: getCurrentPStateN * Signature: ()J */ JNIEXPORT jlong JNICALL Java_J2Ci_jDVInterface_getCurrentPStateN (JNIEnv *, jobject); /* * Class: J2Ci_jDVInterface * Method: getCurrentReportN * Signature: ()J */ JNIEXPORT jlong JNICALL Java_J2Ci_jDVInterface_getCurrentReportN (JNIEnv *, jobject); /* * Class: J2Ci_jDVInterface * Method: getPrintHandlerN * Signature: ()J */ JNIEXPORT jlong JNICALL Java_J2Ci_jDVInterface_getPrintHandlerN (JNIEnv *, jobject); /* * Class: J2Ci_jDVInterface * Method: resetPresentationState * Signature: ()I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVInterface_resetPresentationState (JNIEnv *, jobject); /* * Class: J2Ci_jDVInterface * Method: saveCurrentPStateForReset * Signature: ()I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVInterface_saveCurrentPStateForReset (JNIEnv *, jobject); /* * Class: J2Ci_jDVInterface * Method: releaseDatabase * Signature: ()I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVInterface_releaseDatabase (JNIEnv *, jobject); /* * Class: J2Ci_jDVInterface * Method: getFilename * Signature: (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String; */ JNIEXPORT jstring JNICALL Java_J2Ci_jDVInterface_getFilename__Ljava_lang_String_2Ljava_lang_String_2Ljava_lang_String_2 (JNIEnv *, jobject, jstring, jstring, jstring); /* * Class: J2Ci_jDVInterface * Method: getNumberOfStudies * Signature: ()I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVInterface_getNumberOfStudies (JNIEnv *, jobject); /* * Class: J2Ci_jDVInterface * Method: selectStudy * Signature: (I)I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVInterface_selectStudy__I (JNIEnv *, jobject, jint); /* * Class: J2Ci_jDVInterface * Method: selectStudy * Signature: (Ljava/lang/String;)I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVInterface_selectStudy__Ljava_lang_String_2 (JNIEnv *, jobject, jstring); /* * Class: J2Ci_jDVInterface * Method: getStudyStatus * Signature: ()I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVInterface_getStudyStatus (JNIEnv *, jobject); /* * Class: J2Ci_jDVInterface * Method: getStudyUID * Signature: ()Ljava/lang/String; */ JNIEXPORT jstring JNICALL Java_J2Ci_jDVInterface_getStudyUID (JNIEnv *, jobject); /* * Class: J2Ci_jDVInterface * Method: getStudyDescription * Signature: ()Ljava/lang/String; */ JNIEXPORT jstring JNICALL Java_J2Ci_jDVInterface_getStudyDescription (JNIEnv *, jobject); /* * Class: J2Ci_jDVInterface * Method: getStudyDate * Signature: ()Ljava/lang/String; */ JNIEXPORT jstring JNICALL Java_J2Ci_jDVInterface_getStudyDate (JNIEnv *, jobject); /* * Class: J2Ci_jDVInterface * Method: getStudyTime * Signature: ()Ljava/lang/String; */ JNIEXPORT jstring JNICALL Java_J2Ci_jDVInterface_getStudyTime (JNIEnv *, jobject); /* * Class: J2Ci_jDVInterface * Method: getReferringPhysiciansName * Signature: ()Ljava/lang/String; */ JNIEXPORT jstring JNICALL Java_J2Ci_jDVInterface_getReferringPhysiciansName (JNIEnv *, jobject); /* * Class: J2Ci_jDVInterface * Method: getAccessionNumber * Signature: ()Ljava/lang/String; */ JNIEXPORT jstring JNICALL Java_J2Ci_jDVInterface_getAccessionNumber (JNIEnv *, jobject); /* * Class: J2Ci_jDVInterface * Method: getNameOfPhysiciansReadingStudy * Signature: ()Ljava/lang/String; */ JNIEXPORT jstring JNICALL Java_J2Ci_jDVInterface_getNameOfPhysiciansReadingStudy (JNIEnv *, jobject); /* * Class: J2Ci_jDVInterface * Method: getPatientName * Signature: ()Ljava/lang/String; */ JNIEXPORT jstring JNICALL Java_J2Ci_jDVInterface_getPatientName (JNIEnv *, jobject); /* * Class: J2Ci_jDVInterface * Method: getPatientID * Signature: ()Ljava/lang/String; */ JNIEXPORT jstring JNICALL Java_J2Ci_jDVInterface_getPatientID (JNIEnv *, jobject); /* * Class: J2Ci_jDVInterface * Method: getPatientBirthDate * Signature: ()Ljava/lang/String; */ JNIEXPORT jstring JNICALL Java_J2Ci_jDVInterface_getPatientBirthDate (JNIEnv *, jobject); /* * Class: J2Ci_jDVInterface * Method: getPatientSex * Signature: ()Ljava/lang/String; */ JNIEXPORT jstring JNICALL Java_J2Ci_jDVInterface_getPatientSex (JNIEnv *, jobject); /* * Class: J2Ci_jDVInterface * Method: getPatientBirthTime * Signature: ()Ljava/lang/String; */ JNIEXPORT jstring JNICALL Java_J2Ci_jDVInterface_getPatientBirthTime (JNIEnv *, jobject); /* * Class: J2Ci_jDVInterface * Method: getOtherPatientNames * Signature: ()Ljava/lang/String; */ JNIEXPORT jstring JNICALL Java_J2Ci_jDVInterface_getOtherPatientNames (JNIEnv *, jobject); /* * Class: J2Ci_jDVInterface * Method: getOtherPatientID * Signature: ()Ljava/lang/String; */ JNIEXPORT jstring JNICALL Java_J2Ci_jDVInterface_getOtherPatientID (JNIEnv *, jobject); /* * Class: J2Ci_jDVInterface * Method: getEthnicGroup * Signature: ()Ljava/lang/String; */ JNIEXPORT jstring JNICALL Java_J2Ci_jDVInterface_getEthnicGroup (JNIEnv *, jobject); /* * Class: J2Ci_jDVInterface * Method: getNumberOfSeries * Signature: ()I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVInterface_getNumberOfSeries (JNIEnv *, jobject); /* * Class: J2Ci_jDVInterface * Method: selectSeries * Signature: (I)I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVInterface_selectSeries__I (JNIEnv *, jobject, jint); /* * Class: J2Ci_jDVInterface * Method: selectSeries * Signature: (Ljava/lang/String;)I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVInterface_selectSeries__Ljava_lang_String_2 (JNIEnv *, jobject, jstring); /* * Class: J2Ci_jDVInterface * Method: getSeriesUID * Signature: ()Ljava/lang/String; */ JNIEXPORT jstring JNICALL Java_J2Ci_jDVInterface_getSeriesUID (JNIEnv *, jobject); /* * Class: J2Ci_jDVInterface * Method: getSeriesStatus * Signature: ()I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVInterface_getSeriesStatus (JNIEnv *, jobject); /* * Class: J2Ci_jDVInterface * Method: getSeriesType * Signature: ()I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVInterface_getSeriesType (JNIEnv *, jobject); /* * Class: J2Ci_jDVInterface * Method: getInstanceType * Signature: ()I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVInterface_getInstanceType (JNIEnv *, jobject); /* * Class: J2Ci_jDVInterface * Method: getSeriesNumber * Signature: ()Ljava/lang/String; */ JNIEXPORT jstring JNICALL Java_J2Ci_jDVInterface_getSeriesNumber (JNIEnv *, jobject); /* * Class: J2Ci_jDVInterface * Method: getSeriesDate * Signature: ()Ljava/lang/String; */ JNIEXPORT jstring JNICALL Java_J2Ci_jDVInterface_getSeriesDate (JNIEnv *, jobject); /* * Class: J2Ci_jDVInterface * Method: getSeriesTime * Signature: ()Ljava/lang/String; */ JNIEXPORT jstring JNICALL Java_J2Ci_jDVInterface_getSeriesTime (JNIEnv *, jobject); /* * Class: J2Ci_jDVInterface * Method: getSeriesDescription * Signature: ()Ljava/lang/String; */ JNIEXPORT jstring JNICALL Java_J2Ci_jDVInterface_getSeriesDescription (JNIEnv *, jobject); /* * Class: J2Ci_jDVInterface * Method: getSeriesPerformingPhysiciansName * Signature: ()Ljava/lang/String; */ JNIEXPORT jstring JNICALL Java_J2Ci_jDVInterface_getSeriesPerformingPhysiciansName (JNIEnv *, jobject); /* * Class: J2Ci_jDVInterface * Method: getSeriesProtocolName * Signature: ()Ljava/lang/String; */ JNIEXPORT jstring JNICALL Java_J2Ci_jDVInterface_getSeriesProtocolName (JNIEnv *, jobject); /* * Class: J2Ci_jDVInterface * Method: getSeriesOperatorsName * Signature: ()Ljava/lang/String; */ JNIEXPORT jstring JNICALL Java_J2Ci_jDVInterface_getSeriesOperatorsName (JNIEnv *, jobject); /* * Class: J2Ci_jDVInterface * Method: getModality * Signature: ()Ljava/lang/String; */ JNIEXPORT jstring JNICALL Java_J2Ci_jDVInterface_getModality (JNIEnv *, jobject); /* * Class: J2Ci_jDVInterface * Method: getNumberOfInstances * Signature: ()I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVInterface_getNumberOfInstances (JNIEnv *, jobject); /* * Class: J2Ci_jDVInterface * Method: selectInstance * Signature: (I)I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVInterface_selectInstance__I (JNIEnv *, jobject, jint); /* * Class: J2Ci_jDVInterface * Method: selectInstance * Signature: (Ljava/lang/String;)I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVInterface_selectInstance__Ljava_lang_String_2 (JNIEnv *, jobject, jstring); /* * Class: J2Ci_jDVInterface * Method: selectInstance * Signature: (Ljava/lang/String;Ljava/lang/String;)I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVInterface_selectInstance__Ljava_lang_String_2Ljava_lang_String_2 (JNIEnv *, jobject, jstring, jstring); /* * Class: J2Ci_jDVInterface * Method: selectInstance * Signature: (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVInterface_selectInstance__Ljava_lang_String_2Ljava_lang_String_2Ljava_lang_String_2 (JNIEnv *, jobject, jstring, jstring, jstring); /* * Class: J2Ci_jDVInterface * Method: getInstanceUID * Signature: ()Ljava/lang/String; */ JNIEXPORT jstring JNICALL Java_J2Ci_jDVInterface_getInstanceUID (JNIEnv *, jobject); /* * Class: J2Ci_jDVInterface * Method: getImageNumber * Signature: ()Ljava/lang/String; */ JNIEXPORT jstring JNICALL Java_J2Ci_jDVInterface_getImageNumber (JNIEnv *, jobject); /* * Class: J2Ci_jDVInterface * Method: getFilename * Signature: ()Ljava/lang/String; */ JNIEXPORT jstring JNICALL Java_J2Ci_jDVInterface_getFilename__ (JNIEnv *, jobject); /* * Class: J2Ci_jDVInterface * Method: getInstanceStatus * Signature: ()I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVInterface_getInstanceStatus (JNIEnv *, jobject); /* * Class: J2Ci_jDVInterface * Method: getInstanceDescription * Signature: ()Ljava/lang/String; */ JNIEXPORT jstring JNICALL Java_J2Ci_jDVInterface_getInstanceDescription (JNIEnv *, jobject); /* * Class: J2Ci_jDVInterface * Method: getPresentationLabel * Signature: ()Ljava/lang/String; */ JNIEXPORT jstring JNICALL Java_J2Ci_jDVInterface_getPresentationLabel (JNIEnv *, jobject); /* * Class: J2Ci_jDVInterface * Method: instanceReviewed * Signature: (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVInterface_instanceReviewed (JNIEnv *, jobject, jstring, jstring, jstring); /* * Class: J2Ci_jDVInterface * Method: deleteInstance * Signature: (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVInterface_deleteInstance (JNIEnv *, jobject, jstring, jstring, jstring); /* * Class: J2Ci_jDVInterface * Method: deleteSeries * Signature: (Ljava/lang/String;Ljava/lang/String;)I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVInterface_deleteSeries (JNIEnv *, jobject, jstring, jstring); /* * Class: J2Ci_jDVInterface * Method: deleteStudy * Signature: (Ljava/lang/String;)I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVInterface_deleteStudy (JNIEnv *, jobject, jstring); /* * Class: J2Ci_jDVInterface * Method: startReceiver * Signature: ()I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVInterface_startReceiver (JNIEnv *, jobject); /* * Class: J2Ci_jDVInterface * Method: terminateReceiver * Signature: ()I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVInterface_terminateReceiver (JNIEnv *, jobject); /* * Class: J2Ci_jDVInterface * Method: startQueryRetrieveServer * Signature: ()I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVInterface_startQueryRetrieveServer (JNIEnv *, jobject); /* * Class: J2Ci_jDVInterface * Method: terminateQueryRetrieveServer * Signature: ()I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVInterface_terminateQueryRetrieveServer (JNIEnv *, jobject); /* * Class: J2Ci_jDVInterface * Method: newInstancesReceived * Signature: ()Z */ JNIEXPORT jboolean JNICALL Java_J2Ci_jDVInterface_newInstancesReceived (JNIEnv *, jobject); /* * Class: J2Ci_jDVInterface * Method: sendStudy * Signature: (Ljava/lang/String;Ljava/lang/String;)I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVInterface_sendStudy (JNIEnv *, jobject, jstring, jstring); /* * Class: J2Ci_jDVInterface * Method: sendSeries * Signature: (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVInterface_sendSeries (JNIEnv *, jobject, jstring, jstring, jstring); /* * Class: J2Ci_jDVInterface * Method: sendIOD * Signature: (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVInterface_sendIOD (JNIEnv *, jobject, jstring, jstring, jstring, jstring); /* * Class: J2Ci_jDVInterface * Method: dumpIOD * Signature: (Ljava/lang/String;)I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVInterface_dumpIOD__Ljava_lang_String_2 (JNIEnv *, jobject, jstring); /* * Class: J2Ci_jDVInterface * Method: dumpIOD * Signature: (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVInterface_dumpIOD__Ljava_lang_String_2Ljava_lang_String_2Ljava_lang_String_2 (JNIEnv *, jobject, jstring, jstring, jstring); /* * Class: J2Ci_jDVInterface * Method: checkIOD * Signature: (Ljava/lang/String;)I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVInterface_checkIOD__Ljava_lang_String_2 (JNIEnv *, jobject, jstring); /* * Class: J2Ci_jDVInterface * Method: checkIOD * Signature: (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVInterface_checkIOD__Ljava_lang_String_2Ljava_lang_String_2Ljava_lang_String_2 (JNIEnv *, jobject, jstring, jstring, jstring); /* * Class: J2Ci_jDVInterface * Method: saveDICOMImage * Signature: (Ljava/lang/String;[BJJD)I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVInterface_saveDICOMImage__Ljava_lang_String_2_3BJJD (JNIEnv *, jobject, jstring, jbyteArray, jlong, jlong, jdouble); /* * Class: J2Ci_jDVInterface * Method: saveDICOMImage * Signature: (Ljava/lang/String;[BJJDZLjava/lang/String;)I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVInterface_saveDICOMImage__Ljava_lang_String_2_3BJJDZLjava_lang_String_2 (JNIEnv *, jobject, jstring, jbyteArray, jlong, jlong, jdouble, jboolean, jstring); /* * Class: J2Ci_jDVInterface * Method: saveDICOMImage * Signature: ([BJJD)I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVInterface_saveDICOMImage___3BJJD (JNIEnv *, jobject, jbyteArray, jlong, jlong, jdouble); /* * Class: J2Ci_jDVInterface * Method: saveGrayscaleHardcopyImage * Signature: (Ljava/lang/String;[SJJDZLjava/lang/String;)I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVInterface_saveGrayscaleHardcopyImage__Ljava_lang_String_2_3SJJDZLjava_lang_String_2 (JNIEnv *, jobject, jstring, jshortArray, jlong, jlong, jdouble, jboolean, jstring); /* * Class: J2Ci_jDVInterface * Method: saveGrayscaleHardcopyImage * Signature: ([SJJD)I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVInterface_saveGrayscaleHardcopyImage___3SJJD (JNIEnv *, jobject, jshortArray, jlong, jlong, jdouble); /* * Class: J2Ci_jDVInterface * Method: loadStoredPrint * Signature: (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Z)I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVInterface_loadStoredPrint__Ljava_lang_String_2Ljava_lang_String_2Ljava_lang_String_2Z (JNIEnv *, jobject, jstring, jstring, jstring, jboolean); /* * Class: J2Ci_jDVInterface * Method: loadStoredPrint * Signature: (Ljava/lang/String;)I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVInterface_loadStoredPrint__Ljava_lang_String_2 (JNIEnv *, jobject, jstring); /* * Class: J2Ci_jDVInterface * Method: saveStoredPrint * Signature: (Ljava/lang/String;ZZLjava/lang/String;)I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVInterface_saveStoredPrint__Ljava_lang_String_2ZZLjava_lang_String_2 (JNIEnv *, jobject, jstring, jboolean, jboolean, jstring); /* * Class: J2Ci_jDVInterface * Method: saveStoredPrint * Signature: (Z)I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVInterface_saveStoredPrint__Z (JNIEnv *, jobject, jboolean); /* * Class: J2Ci_jDVInterface * Method: getNumberOfPrintPreviews * Signature: ()I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVInterface_getNumberOfPrintPreviews (JNIEnv *, jobject); /* * Class: J2Ci_jDVInterface * Method: loadPrintPreview * Signature: (IZZ)I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVInterface_loadPrintPreview (JNIEnv *, jobject, jint, jboolean, jboolean); /* * Class: J2Ci_jDVInterface * Method: unloadPrintPreview * Signature: ()V */ JNIEXPORT void JNICALL Java_J2Ci_jDVInterface_unloadPrintPreview (JNIEnv *, jobject); /* * Class: J2Ci_jDVInterface * Method: getPrintPreviewSize * Signature: ()J */ JNIEXPORT jlong JNICALL Java_J2Ci_jDVInterface_getPrintPreviewSize (JNIEnv *, jobject); /* * Class: J2Ci_jDVInterface * Method: setMaxPrintPreviewWidthHeight * Signature: (II)V */ JNIEXPORT void JNICALL Java_J2Ci_jDVInterface_setMaxPrintPreviewWidthHeight (JNIEnv *, jobject, jint, jint); /* * Class: J2Ci_jDVInterface * Method: getPrintPreviewWidthHeight * Signature: (LJ2Ci/jIntByRef;LJ2Ci/jIntByRef;)I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVInterface_getPrintPreviewWidthHeight (JNIEnv *, jobject, jobject, jobject); /* * Class: J2Ci_jDVInterface * Method: getPrintPreviewBitmap * Signature: ([BJ)I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVInterface_getPrintPreviewBitmap (JNIEnv *, jobject, jbyteArray, jlong); /* * Class: J2Ci_jDVInterface * Method: disablePState * Signature: ()I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVInterface_disablePState (JNIEnv *, jobject); /* * Class: J2Ci_jDVInterface * Method: enablePState * Signature: ()I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVInterface_enablePState (JNIEnv *, jobject); /* * Class: J2Ci_jDVInterface * Method: getNumberOfPStates * Signature: ()I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVInterface_getNumberOfPStates (JNIEnv *, jobject); /* * Class: J2Ci_jDVInterface * Method: selectPState * Signature: (IZ)I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVInterface_selectPState (JNIEnv *, jobject, jint, jboolean); /* * Class: J2Ci_jDVInterface * Method: getPStateDescription * Signature: (I)Ljava/lang/String; */ JNIEXPORT jstring JNICALL Java_J2Ci_jDVInterface_getPStateDescription (JNIEnv *, jobject, jint); /* * Class: J2Ci_jDVInterface * Method: getPStateLabel * Signature: (I)Ljava/lang/String; */ JNIEXPORT jstring JNICALL Java_J2Ci_jDVInterface_getPStateLabel (JNIEnv *, jobject, jint); /* * Class: J2Ci_jDVInterface * Method: isDisplayTransformPossible * Signature: (I)Z */ JNIEXPORT jboolean JNICALL Java_J2Ci_jDVInterface_isDisplayTransformPossible (JNIEnv *, jobject, jint); /* * Class: J2Ci_jDVInterface * Method: setAmbientLightValue * Signature: (D)I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVInterface_setAmbientLightValue (JNIEnv *, jobject, jdouble); /* * Class: J2Ci_jDVInterface * Method: getAmbientLightValue * Signature: (LJ2Ci/jDoubleByRef;)I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVInterface_getAmbientLightValue (JNIEnv *, jobject, jobject); /* * Class: J2Ci_jDVInterface * Method: setCurrentPrinter * Signature: (Ljava/lang/String;)I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVInterface_setCurrentPrinter (JNIEnv *, jobject, jstring); /* * Class: J2Ci_jDVInterface * Method: getCurrentPrinter * Signature: ()Ljava/lang/String; */ JNIEXPORT jstring JNICALL Java_J2Ci_jDVInterface_getCurrentPrinter (JNIEnv *, jobject); /* * Class: J2Ci_jDVInterface * Method: setPrinterMediumType * Signature: (Ljava/lang/String;)I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVInterface_setPrinterMediumType (JNIEnv *, jobject, jstring); /* * Class: J2Ci_jDVInterface * Method: getPrinterMediumType * Signature: ()Ljava/lang/String; */ JNIEXPORT jstring JNICALL Java_J2Ci_jDVInterface_getPrinterMediumType (JNIEnv *, jobject); /* * Class: J2Ci_jDVInterface * Method: setPrinterFilmDestination * Signature: (Ljava/lang/String;)I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVInterface_setPrinterFilmDestination (JNIEnv *, jobject, jstring); /* * Class: J2Ci_jDVInterface * Method: getPrinterFilmDestination * Signature: ()Ljava/lang/String; */ JNIEXPORT jstring JNICALL Java_J2Ci_jDVInterface_getPrinterFilmDestination (JNIEnv *, jobject); /* * Class: J2Ci_jDVInterface * Method: setPrinterFilmSessionLabel * Signature: (Ljava/lang/String;)I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVInterface_setPrinterFilmSessionLabel (JNIEnv *, jobject, jstring); /* * Class: J2Ci_jDVInterface * Method: getPrinterFilmSessionLabel * Signature: ()Ljava/lang/String; */ JNIEXPORT jstring JNICALL Java_J2Ci_jDVInterface_getPrinterFilmSessionLabel (JNIEnv *, jobject); /* * Class: J2Ci_jDVInterface * Method: setPrinterPriority * Signature: (Ljava/lang/String;)I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVInterface_setPrinterPriority (JNIEnv *, jobject, jstring); /* * Class: J2Ci_jDVInterface * Method: getPrinterPriority * Signature: ()Ljava/lang/String; */ JNIEXPORT jstring JNICALL Java_J2Ci_jDVInterface_getPrinterPriority (JNIEnv *, jobject); /* * Class: J2Ci_jDVInterface * Method: setPrinterOwnerID * Signature: (Ljava/lang/String;)I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVInterface_setPrinterOwnerID (JNIEnv *, jobject, jstring); /* * Class: J2Ci_jDVInterface * Method: getPrinterOwnerID * Signature: ()Ljava/lang/String; */ JNIEXPORT jstring JNICALL Java_J2Ci_jDVInterface_getPrinterOwnerID (JNIEnv *, jobject); /* * Class: J2Ci_jDVInterface * Method: setPrinterNumberOfCopies * Signature: (I)I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVInterface_setPrinterNumberOfCopies (JNIEnv *, jobject, jint); /* * Class: J2Ci_jDVInterface * Method: getPrinterNumberOfCopies * Signature: ()I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVInterface_getPrinterNumberOfCopies (JNIEnv *, jobject); /* * Class: J2Ci_jDVInterface * Method: clearFilmSessionSettings * Signature: ()V */ JNIEXPORT void JNICALL Java_J2Ci_jDVInterface_clearFilmSessionSettings (JNIEnv *, jobject); /* * Class: J2Ci_jDVInterface * Method: selectDisplayPresentationLUT * Signature: (Ljava/lang/String;)I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVInterface_selectDisplayPresentationLUT (JNIEnv *, jobject, jstring); /* * Class: J2Ci_jDVInterface * Method: getDisplayPresentationLUTID * Signature: ()Ljava/lang/String; */ JNIEXPORT jstring JNICALL Java_J2Ci_jDVInterface_getDisplayPresentationLUTID (JNIEnv *, jobject); /* * Class: J2Ci_jDVInterface * Method: selectPrintPresentationLUT * Signature: (Ljava/lang/String;)I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVInterface_selectPrintPresentationLUT (JNIEnv *, jobject, jstring); /* * Class: J2Ci_jDVInterface * Method: getPrintPresentationLUTID * Signature: ()Ljava/lang/String; */ JNIEXPORT jstring JNICALL Java_J2Ci_jDVInterface_getPrintPresentationLUTID (JNIEnv *, jobject); /* * Class: J2Ci_jDVInterface * Method: spoolPrintJob * Signature: (Z)I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVInterface_spoolPrintJob (JNIEnv *, jobject, jboolean); /* * Class: J2Ci_jDVInterface * Method: startPrintSpooler * Signature: ()I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVInterface_startPrintSpooler (JNIEnv *, jobject); /* * Class: J2Ci_jDVInterface * Method: terminatePrintSpooler * Signature: ()I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVInterface_terminatePrintSpooler (JNIEnv *, jobject); /* * Class: J2Ci_jDVInterface * Method: startPrintServer * Signature: ()I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVInterface_startPrintServer (JNIEnv *, jobject); /* * Class: J2Ci_jDVInterface * Method: terminatePrintServer * Signature: ()I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVInterface_terminatePrintServer (JNIEnv *, jobject); /* * Class: J2Ci_jDVInterface * Method: addToPrintHardcopyFromDB * Signature: (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVInterface_addToPrintHardcopyFromDB (JNIEnv *, jobject, jstring, jstring, jstring); /* * Class: J2Ci_jDVInterface * Method: spoolStoredPrintFromDB * Signature: (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVInterface_spoolStoredPrintFromDB (JNIEnv *, jobject, jstring, jstring, jstring); /* * Class: J2Ci_jDVInterface * Method: isActiveAnnotation * Signature: ()Z */ JNIEXPORT jboolean JNICALL Java_J2Ci_jDVInterface_isActiveAnnotation (JNIEnv *, jobject); /* * Class: J2Ci_jDVInterface * Method: getPrependDateTime * Signature: ()Z */ JNIEXPORT jboolean JNICALL Java_J2Ci_jDVInterface_getPrependDateTime (JNIEnv *, jobject); /* * Class: J2Ci_jDVInterface * Method: getPrependPrinterName * Signature: ()Z */ JNIEXPORT jboolean JNICALL Java_J2Ci_jDVInterface_getPrependPrinterName (JNIEnv *, jobject); /* * Class: J2Ci_jDVInterface * Method: getPrependLighting * Signature: ()Z */ JNIEXPORT jboolean JNICALL Java_J2Ci_jDVInterface_getPrependLighting (JNIEnv *, jobject); /* * Class: J2Ci_jDVInterface * Method: getAnnotationText * Signature: ()Ljava/lang/String; */ JNIEXPORT jstring JNICALL Java_J2Ci_jDVInterface_getAnnotationText (JNIEnv *, jobject); /* * Class: J2Ci_jDVInterface * Method: setActiveAnnotation * Signature: (Z)V */ JNIEXPORT void JNICALL Java_J2Ci_jDVInterface_setActiveAnnotation (JNIEnv *, jobject, jboolean); /* * Class: J2Ci_jDVInterface * Method: setPrependDateTime * Signature: (Z)V */ JNIEXPORT void JNICALL Java_J2Ci_jDVInterface_setPrependDateTime (JNIEnv *, jobject, jboolean); /* * Class: J2Ci_jDVInterface * Method: setPrependPrinterName * Signature: (Z)V */ JNIEXPORT void JNICALL Java_J2Ci_jDVInterface_setPrependPrinterName (JNIEnv *, jobject, jboolean); /* * Class: J2Ci_jDVInterface * Method: setPrependLighting * Signature: (Z)V */ JNIEXPORT void JNICALL Java_J2Ci_jDVInterface_setPrependLighting (JNIEnv *, jobject, jboolean); /* * Class: J2Ci_jDVInterface * Method: setAnnotationText * Signature: (Ljava/lang/String;)V */ JNIEXPORT void JNICALL Java_J2Ci_jDVInterface_setAnnotationText (JNIEnv *, jobject, jstring); /* * Class: J2Ci_jDVInterface * Method: verifyUserPassword * Signature: (Ljava/lang/String;Ljava/lang/String;)Z */ JNIEXPORT jboolean JNICALL Java_J2Ci_jDVInterface_verifyUserPassword (JNIEnv *, jobject, jstring, jstring); /* * Class: J2Ci_jDVInterface * Method: verifyAndSignStructuredReport * Signature: (Ljava/lang/String;Ljava/lang/String;I)I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVInterface_verifyAndSignStructuredReport (JNIEnv *, jobject, jstring, jstring, jint); /* * Class: J2Ci_jDVInterface * Method: setLogFilter * Signature: (I)V */ JNIEXPORT void JNICALL Java_J2Ci_jDVInterface_setLogFilter (JNIEnv *, jobject, jint); /* * Class: J2Ci_jDVInterface * Method: writeLogMessage * Signature: (ILjava/lang/String;Ljava/lang/String;)I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVInterface_writeLogMessage (JNIEnv *, jobject, jint, jstring, jstring); /* * Class: J2Ci_jDVInterface * Method: getCurrentSignatureValidationHTML * Signature: (I)Ljava/lang/String; */ JNIEXPORT jstring JNICALL Java_J2Ci_jDVInterface_getCurrentSignatureValidationHTML (JNIEnv *, jobject, jint); /* * Class: J2Ci_jDVInterface * Method: getCurrentSignatureValidationOverview * Signature: ()Ljava/lang/String; */ JNIEXPORT jstring JNICALL Java_J2Ci_jDVInterface_getCurrentSignatureValidationOverview (JNIEnv *, jobject); /* * Class: J2Ci_jDVInterface * Method: getCurrentSignatureStatus * Signature: (I)I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVInterface_getCurrentSignatureStatus (JNIEnv *, jobject, jint); /* * Class: J2Ci_jDVInterface * Method: getCombinedImagePStateSignatureStatus * Signature: ()I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVInterface_getCombinedImagePStateSignatureStatus (JNIEnv *, jobject); /* * Class: J2Ci_jDVInterface * Method: getNumberOfCorrectSignatures * Signature: (I)I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVInterface_getNumberOfCorrectSignatures (JNIEnv *, jobject, jint); /* * Class: J2Ci_jDVInterface * Method: getNumberOfUntrustworthySignatures * Signature: (I)I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVInterface_getNumberOfUntrustworthySignatures (JNIEnv *, jobject, jint); /* * Class: J2Ci_jDVInterface * Method: getNumberOfCorruptSignatures * Signature: (I)I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVInterface_getNumberOfCorruptSignatures (JNIEnv *, jobject, jint); /* * Class: J2Ci_jDVInterface * Method: disableImageAndPState * Signature: ()V */ JNIEXPORT void JNICALL Java_J2Ci_jDVInterface_disableImageAndPState (JNIEnv *, jobject); /* * Class: J2Ci_jDVInterface * Method: getNumberOfTargets * Signature: (I)I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVInterface_getNumberOfTargets (JNIEnv *, jobject, jint); /* * Class: J2Ci_jDVInterface * Method: getTargetID * Signature: (II)Ljava/lang/String; */ JNIEXPORT jstring JNICALL Java_J2Ci_jDVInterface_getTargetID (JNIEnv *, jobject, jint, jint); /* * Class: J2Ci_jDVInterface * Method: getTargetDescription * Signature: (Ljava/lang/String;)Ljava/lang/String; */ JNIEXPORT jstring JNICALL Java_J2Ci_jDVInterface_getTargetDescription (JNIEnv *, jobject, jstring); /* * Class: J2Ci_jDVInterface * Method: getTargetHostname * Signature: (Ljava/lang/String;)Ljava/lang/String; */ JNIEXPORT jstring JNICALL Java_J2Ci_jDVInterface_getTargetHostname (JNIEnv *, jobject, jstring); /* * Class: J2Ci_jDVInterface * Method: getTargetPort * Signature: (Ljava/lang/String;)I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVInterface_getTargetPort (JNIEnv *, jobject, jstring); /* * Class: J2Ci_jDVInterface * Method: getTargetType * Signature: (Ljava/lang/String;)I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVInterface_getTargetType (JNIEnv *, jobject, jstring); /* * Class: J2Ci_jDVInterface * Method: getTargetAETitle * Signature: (Ljava/lang/String;)Ljava/lang/String; */ JNIEXPORT jstring JNICALL Java_J2Ci_jDVInterface_getTargetAETitle (JNIEnv *, jobject, jstring); /* * Class: J2Ci_jDVInterface * Method: getTargetMaxPDU * Signature: (Ljava/lang/String;)I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVInterface_getTargetMaxPDU (JNIEnv *, jobject, jstring); /* * Class: J2Ci_jDVInterface * Method: getTargetImplicitOnly * Signature: (Ljava/lang/String;)Z */ JNIEXPORT jboolean JNICALL Java_J2Ci_jDVInterface_getTargetImplicitOnly (JNIEnv *, jobject, jstring); /* * Class: J2Ci_jDVInterface * Method: getTargetDisableNewVRs * Signature: (Ljava/lang/String;)Z */ JNIEXPORT jboolean JNICALL Java_J2Ci_jDVInterface_getTargetDisableNewVRs (JNIEnv *, jobject, jstring); /* * Class: J2Ci_jDVInterface * Method: getTargetBitPreservingMode * Signature: (Ljava/lang/String;)Z */ JNIEXPORT jboolean JNICALL Java_J2Ci_jDVInterface_getTargetBitPreservingMode (JNIEnv *, jobject, jstring); /* * Class: J2Ci_jDVInterface * Method: getTargetUseTLS * Signature: (Ljava/lang/String;)Z */ JNIEXPORT jboolean JNICALL Java_J2Ci_jDVInterface_getTargetUseTLS (JNIEnv *, jobject, jstring); /* * Class: J2Ci_jDVInterface * Method: getTargetNumberOfCipherSuites * Signature: (Ljava/lang/String;)I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVInterface_getTargetNumberOfCipherSuites (JNIEnv *, jobject, jstring); /* * Class: J2Ci_jDVInterface * Method: getTargetCipherSuite * Signature: (Ljava/lang/String;I)Ljava/lang/String; */ JNIEXPORT jstring JNICALL Java_J2Ci_jDVInterface_getTargetCipherSuite (JNIEnv *, jobject, jstring, jint); /* * Class: J2Ci_jDVInterface * Method: getTargetPeerAuthentication * Signature: (Ljava/lang/String;)I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVInterface_getTargetPeerAuthentication (JNIEnv *, jobject, jstring); /* * Class: J2Ci_jDVInterface * Method: getTargetPrinterSupportsPresentationLUT * Signature: (Ljava/lang/String;)Z */ JNIEXPORT jboolean JNICALL Java_J2Ci_jDVInterface_getTargetPrinterSupportsPresentationLUT (JNIEnv *, jobject, jstring); /* * Class: J2Ci_jDVInterface * Method: getTargetPrinterSupports12BitTransmission * Signature: (Ljava/lang/String;)Z */ JNIEXPORT jboolean JNICALL Java_J2Ci_jDVInterface_getTargetPrinterSupports12BitTransmission (JNIEnv *, jobject, jstring); /* * Class: J2Ci_jDVInterface * Method: getTargetPrinterSupportsRequestedImageSize * Signature: (Ljava/lang/String;)Z */ JNIEXPORT jboolean JNICALL Java_J2Ci_jDVInterface_getTargetPrinterSupportsRequestedImageSize (JNIEnv *, jobject, jstring); /* * Class: J2Ci_jDVInterface * Method: getTargetPrinterSupportsDecimateCrop * Signature: (Ljava/lang/String;)Z */ JNIEXPORT jboolean JNICALL Java_J2Ci_jDVInterface_getTargetPrinterSupportsDecimateCrop (JNIEnv *, jobject, jstring); /* * Class: J2Ci_jDVInterface * Method: getTargetPrinterSupportsTrim * Signature: (Ljava/lang/String;)Z */ JNIEXPORT jboolean JNICALL Java_J2Ci_jDVInterface_getTargetPrinterSupportsTrim (JNIEnv *, jobject, jstring); /* * Class: J2Ci_jDVInterface * Method: getTargetPrinterNumberOfBorderDensities * Signature: (Ljava/lang/String;)I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVInterface_getTargetPrinterNumberOfBorderDensities (JNIEnv *, jobject, jstring); /* * Class: J2Ci_jDVInterface * Method: getTargetPrinterBorderDensity * Signature: (Ljava/lang/String;I)Ljava/lang/String; */ JNIEXPORT jstring JNICALL Java_J2Ci_jDVInterface_getTargetPrinterBorderDensity (JNIEnv *, jobject, jstring, jint); /* * Class: J2Ci_jDVInterface * Method: getTargetPrinterNumberOfMaxDensities * Signature: (Ljava/lang/String;)I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVInterface_getTargetPrinterNumberOfMaxDensities (JNIEnv *, jobject, jstring); /* * Class: J2Ci_jDVInterface * Method: getTargetPrinterMaxDensity * Signature: (Ljava/lang/String;I)Ljava/lang/String; */ JNIEXPORT jstring JNICALL Java_J2Ci_jDVInterface_getTargetPrinterMaxDensity (JNIEnv *, jobject, jstring, jint); /* * Class: J2Ci_jDVInterface * Method: getTargetPrinterNumberOfMinDensities * Signature: (Ljava/lang/String;)I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVInterface_getTargetPrinterNumberOfMinDensities (JNIEnv *, jobject, jstring); /* * Class: J2Ci_jDVInterface * Method: getTargetPrinterMinDensity * Signature: (Ljava/lang/String;I)Ljava/lang/String; */ JNIEXPORT jstring JNICALL Java_J2Ci_jDVInterface_getTargetPrinterMinDensity (JNIEnv *, jobject, jstring, jint); /* * Class: J2Ci_jDVInterface * Method: getTargetPrinterNumberOfPortraitDisplayFormats * Signature: (Ljava/lang/String;)I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVInterface_getTargetPrinterNumberOfPortraitDisplayFormats (JNIEnv *, jobject, jstring); /* * Class: J2Ci_jDVInterface * Method: getTargetPrinterPortraitDisplayFormatRows * Signature: (Ljava/lang/String;I)I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVInterface_getTargetPrinterPortraitDisplayFormatRows (JNIEnv *, jobject, jstring, jint); /* * Class: J2Ci_jDVInterface * Method: getTargetPrinterPortraitDisplayFormatColumns * Signature: (Ljava/lang/String;I)I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVInterface_getTargetPrinterPortraitDisplayFormatColumns (JNIEnv *, jobject, jstring, jint); /* * Class: J2Ci_jDVInterface * Method: getTargetPrinterSupportsAnnotation * Signature: (Ljava/lang/String;)Z */ JNIEXPORT jboolean JNICALL Java_J2Ci_jDVInterface_getTargetPrinterSupportsAnnotation (JNIEnv *, jobject, jstring); /* * Class: J2Ci_jDVInterface * Method: getTargetPrinterNumberOfFilmSizeIDs * Signature: (Ljava/lang/String;)I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVInterface_getTargetPrinterNumberOfFilmSizeIDs (JNIEnv *, jobject, jstring); /* * Class: J2Ci_jDVInterface * Method: getTargetPrinterFilmSizeID * Signature: (Ljava/lang/String;I)Ljava/lang/String; */ JNIEXPORT jstring JNICALL Java_J2Ci_jDVInterface_getTargetPrinterFilmSizeID (JNIEnv *, jobject, jstring, jint); /* * Class: J2Ci_jDVInterface * Method: getTargetPrinterNumberOfMediumTypes * Signature: (Ljava/lang/String;)I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVInterface_getTargetPrinterNumberOfMediumTypes (JNIEnv *, jobject, jstring); /* * Class: J2Ci_jDVInterface * Method: getTargetPrinterMediumType * Signature: (Ljava/lang/String;I)Ljava/lang/String; */ JNIEXPORT jstring JNICALL Java_J2Ci_jDVInterface_getTargetPrinterMediumType (JNIEnv *, jobject, jstring, jint); /* * Class: J2Ci_jDVInterface * Method: getTargetPrinterNumberOfPrinterResolutionIDs * Signature: (Ljava/lang/String;)I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVInterface_getTargetPrinterNumberOfPrinterResolutionIDs (JNIEnv *, jobject, jstring); /* * Class: J2Ci_jDVInterface * Method: getTargetPrinterResolutionID * Signature: (Ljava/lang/String;I)Ljava/lang/String; */ JNIEXPORT jstring JNICALL Java_J2Ci_jDVInterface_getTargetPrinterResolutionID (JNIEnv *, jobject, jstring, jint); /* * Class: J2Ci_jDVInterface * Method: getTargetPrinterNumberOfMagnificationTypes * Signature: (Ljava/lang/String;)I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVInterface_getTargetPrinterNumberOfMagnificationTypes (JNIEnv *, jobject, jstring); /* * Class: J2Ci_jDVInterface * Method: getTargetPrinterMagnificationType * Signature: (Ljava/lang/String;I)Ljava/lang/String; */ JNIEXPORT jstring JNICALL Java_J2Ci_jDVInterface_getTargetPrinterMagnificationType (JNIEnv *, jobject, jstring, jint); /* * Class: J2Ci_jDVInterface * Method: getTargetPrinterNumberOfSmoothingTypes * Signature: (Ljava/lang/String;)I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVInterface_getTargetPrinterNumberOfSmoothingTypes (JNIEnv *, jobject, jstring); /* * Class: J2Ci_jDVInterface * Method: getTargetPrinterSmoothingType * Signature: (Ljava/lang/String;I)Ljava/lang/String; */ JNIEXPORT jstring JNICALL Java_J2Ci_jDVInterface_getTargetPrinterSmoothingType (JNIEnv *, jobject, jstring, jint); /* * Class: J2Ci_jDVInterface * Method: getTargetPrinterNumberOfConfigurationSettings * Signature: (Ljava/lang/String;)I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVInterface_getTargetPrinterNumberOfConfigurationSettings (JNIEnv *, jobject, jstring); /* * Class: J2Ci_jDVInterface * Method: getTargetPrinterConfigurationSetting * Signature: (Ljava/lang/String;I)Ljava/lang/String; */ JNIEXPORT jstring JNICALL Java_J2Ci_jDVInterface_getTargetPrinterConfigurationSetting (JNIEnv *, jobject, jstring, jint); /* * Class: J2Ci_jDVInterface * Method: getTargetPrinterNumberOfEmptyImageDensities * Signature: (Ljava/lang/String;)I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVInterface_getTargetPrinterNumberOfEmptyImageDensities (JNIEnv *, jobject, jstring); /* * Class: J2Ci_jDVInterface * Method: getTargetPrinterEmptyImageDensity * Signature: (Ljava/lang/String;I)Ljava/lang/String; */ JNIEXPORT jstring JNICALL Java_J2Ci_jDVInterface_getTargetPrinterEmptyImageDensity (JNIEnv *, jobject, jstring, jint); /* * Class: J2Ci_jDVInterface * Method: getMessagePort * Signature: ()I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVInterface_getMessagePort (JNIEnv *, jobject); /* * Class: J2Ci_jDVInterface * Method: getNetworkAETitle * Signature: ()Ljava/lang/String; */ JNIEXPORT jstring JNICALL Java_J2Ci_jDVInterface_getNetworkAETitle (JNIEnv *, jobject); /* * Class: J2Ci_jDVInterface * Method: getDatabaseFolder * Signature: ()Ljava/lang/String; */ JNIEXPORT jstring JNICALL Java_J2Ci_jDVInterface_getDatabaseFolder (JNIEnv *, jobject); /* * Class: J2Ci_jDVInterface * Method: getMonitorCharacteristicsFile * Signature: ()Ljava/lang/String; */ JNIEXPORT jstring JNICALL Java_J2Ci_jDVInterface_getMonitorCharacteristicsFile (JNIEnv *, jobject); /* * Class: J2Ci_jDVInterface * Method: getMonitorPixelWidth * Signature: ()D */ JNIEXPORT jdouble JNICALL Java_J2Ci_jDVInterface_getMonitorPixelWidth (JNIEnv *, jobject); /* * Class: J2Ci_jDVInterface * Method: getMonitorPixelHeight * Signature: ()D */ JNIEXPORT jdouble JNICALL Java_J2Ci_jDVInterface_getMonitorPixelHeight (JNIEnv *, jobject); /* * Class: J2Ci_jDVInterface * Method: getGUIConfigEntry * Signature: (Ljava/lang/String;)Ljava/lang/String; */ JNIEXPORT jstring JNICALL Java_J2Ci_jDVInterface_getGUIConfigEntry (JNIEnv *, jobject, jstring); /* * Class: J2Ci_jDVInterface * Method: getGUIConfigEntryBool * Signature: (Ljava/lang/String;Z)Z */ JNIEXPORT jboolean JNICALL Java_J2Ci_jDVInterface_getGUIConfigEntryBool (JNIEnv *, jobject, jstring, jboolean); /* * Class: J2Ci_jDVInterface * Method: getNumberOfLUTs * Signature: ()I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVInterface_getNumberOfLUTs (JNIEnv *, jobject); /* * Class: J2Ci_jDVInterface * Method: getLUTID * Signature: (I)Ljava/lang/String; */ JNIEXPORT jstring JNICALL Java_J2Ci_jDVInterface_getLUTID (JNIEnv *, jobject, jint); /* * Class: J2Ci_jDVInterface * Method: getLUTDescription * Signature: (Ljava/lang/String;)Ljava/lang/String; */ JNIEXPORT jstring JNICALL Java_J2Ci_jDVInterface_getLUTDescription (JNIEnv *, jobject, jstring); /* * Class: J2Ci_jDVInterface * Method: getNumberOfReports * Signature: ()I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVInterface_getNumberOfReports (JNIEnv *, jobject); /* * Class: J2Ci_jDVInterface * Method: getReportID * Signature: (I)Ljava/lang/String; */ JNIEXPORT jstring JNICALL Java_J2Ci_jDVInterface_getReportID (JNIEnv *, jobject, jint); /* * Class: J2Ci_jDVInterface * Method: getReportDescription * Signature: (Ljava/lang/String;)Ljava/lang/String; */ JNIEXPORT jstring JNICALL Java_J2Ci_jDVInterface_getReportDescription (JNIEnv *, jobject, jstring); /* * Class: J2Ci_jDVInterface * Method: getNumberOfVOIPresets * Signature: (Ljava/lang/String;)I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVInterface_getNumberOfVOIPresets (JNIEnv *, jobject, jstring); /* * Class: J2Ci_jDVInterface * Method: getVOIPresetDescription * Signature: (Ljava/lang/String;I)Ljava/lang/String; */ JNIEXPORT jstring JNICALL Java_J2Ci_jDVInterface_getVOIPresetDescription (JNIEnv *, jobject, jstring, jint); /* * Class: J2Ci_jDVInterface * Method: getVOIPresetWindowCenter * Signature: (Ljava/lang/String;I)D */ JNIEXPORT jdouble JNICALL Java_J2Ci_jDVInterface_getVOIPresetWindowCenter (JNIEnv *, jobject, jstring, jint); /* * Class: J2Ci_jDVInterface * Method: getVOIPresetWindowWidth * Signature: (Ljava/lang/String;I)D */ JNIEXPORT jdouble JNICALL Java_J2Ci_jDVInterface_getVOIPresetWindowWidth (JNIEnv *, jobject, jstring, jint); /* * Class: J2Ci_jDVInterface * Method: getNumberOfUsers * Signature: ()I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVInterface_getNumberOfUsers (JNIEnv *, jobject); /* * Class: J2Ci_jDVInterface * Method: getUserID * Signature: (I)Ljava/lang/String; */ JNIEXPORT jstring JNICALL Java_J2Ci_jDVInterface_getUserID (JNIEnv *, jobject, jint); /* * Class: J2Ci_jDVInterface * Method: getUserLogin * Signature: (Ljava/lang/String;)Ljava/lang/String; */ JNIEXPORT jstring JNICALL Java_J2Ci_jDVInterface_getUserLogin (JNIEnv *, jobject, jstring); /* * Class: J2Ci_jDVInterface * Method: getUserName * Signature: (Ljava/lang/String;)Ljava/lang/String; */ JNIEXPORT jstring JNICALL Java_J2Ci_jDVInterface_getUserName (JNIEnv *, jobject, jstring); /* * Class: J2Ci_jDVInterface * Method: getUserDICOMName * Signature: (Ljava/lang/String;)Ljava/lang/String; */ JNIEXPORT jstring JNICALL Java_J2Ci_jDVInterface_getUserDICOMName (JNIEnv *, jobject, jstring); /* * Class: J2Ci_jDVInterface * Method: getUserOrganization * Signature: (Ljava/lang/String;)Ljava/lang/String; */ JNIEXPORT jstring JNICALL Java_J2Ci_jDVInterface_getUserOrganization (JNIEnv *, jobject, jstring); /* * Class: J2Ci_jDVInterface * Method: getUserCodingSchemeDesignator * Signature: (Ljava/lang/String;)Ljava/lang/String; */ JNIEXPORT jstring JNICALL Java_J2Ci_jDVInterface_getUserCodingSchemeDesignator (JNIEnv *, jobject, jstring); /* * Class: J2Ci_jDVInterface * Method: getUserCodingSchemeVersion * Signature: (Ljava/lang/String;)Ljava/lang/String; */ JNIEXPORT jstring JNICALL Java_J2Ci_jDVInterface_getUserCodingSchemeVersion (JNIEnv *, jobject, jstring); /* * Class: J2Ci_jDVInterface * Method: getUserCodeValue * Signature: (Ljava/lang/String;)Ljava/lang/String; */ JNIEXPORT jstring JNICALL Java_J2Ci_jDVInterface_getUserCodeValue (JNIEnv *, jobject, jstring); /* * Class: J2Ci_jDVInterface * Method: getUserCodeMeaning * Signature: (Ljava/lang/String;)Ljava/lang/String; */ JNIEXPORT jstring JNICALL Java_J2Ci_jDVInterface_getUserCodeMeaning (JNIEnv *, jobject, jstring); #ifdef __cplusplus } #endif #endif dicomscope-3.6.0/interface/include/J2Ci_jDVPresentationState.h0000644000265600020320000011116211262371102023411 0ustar tilleaadmin/* DO NOT EDIT THIS FILE - it is machine generated */ #include /* Header for class J2Ci_jDVPresentationState */ #ifndef _Included_J2Ci_jDVPresentationState #define _Included_J2Ci_jDVPresentationState #ifdef __cplusplus extern "C" { #endif /* * Class: J2Ci_jDVPresentationState * Method: getInstanceUID * Signature: ()Ljava/lang/String; */ JNIEXPORT jstring JNICALL Java_J2Ci_jDVPresentationState_getInstanceUID (JNIEnv *, jobject); /* * Class: J2Ci_jDVPresentationState * Method: getSOPClassUID * Signature: ()Ljava/lang/String; */ JNIEXPORT jstring JNICALL Java_J2Ci_jDVPresentationState_getSOPClassUID (JNIEnv *, jobject); /* * Class: J2Ci_jDVPresentationState * Method: getAttachedImageSOPClassUID * Signature: ()Ljava/lang/String; */ JNIEXPORT jstring JNICALL Java_J2Ci_jDVPresentationState_getAttachedImageSOPClassUID (JNIEnv *, jobject); /* * Class: J2Ci_jDVPresentationState * Method: getAttachedImageSOPInstanceUID * Signature: ()Ljava/lang/String; */ JNIEXPORT jstring JNICALL Java_J2Ci_jDVPresentationState_getAttachedImageSOPInstanceUID (JNIEnv *, jobject); /* * Class: J2Ci_jDVPresentationState * Method: getPresentationLabel * Signature: ()Ljava/lang/String; */ JNIEXPORT jstring JNICALL Java_J2Ci_jDVPresentationState_getPresentationLabel (JNIEnv *, jobject); /* * Class: J2Ci_jDVPresentationState * Method: setPresentationLabel * Signature: (Ljava/lang/String;)I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVPresentationState_setPresentationLabel (JNIEnv *, jobject, jstring); /* * Class: J2Ci_jDVPresentationState * Method: getPresentationDescription * Signature: ()Ljava/lang/String; */ JNIEXPORT jstring JNICALL Java_J2Ci_jDVPresentationState_getPresentationDescription (JNIEnv *, jobject); /* * Class: J2Ci_jDVPresentationState * Method: setPresentationDescription * Signature: (Ljava/lang/String;)I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVPresentationState_setPresentationDescription (JNIEnv *, jobject, jstring); /* * Class: J2Ci_jDVPresentationState * Method: getPresentationCreatorsName * Signature: ()Ljava/lang/String; */ JNIEXPORT jstring JNICALL Java_J2Ci_jDVPresentationState_getPresentationCreatorsName (JNIEnv *, jobject); /* * Class: J2Ci_jDVPresentationState * Method: setPresentationCreatorsName * Signature: (Ljava/lang/String;)I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVPresentationState_setPresentationCreatorsName (JNIEnv *, jobject, jstring); /* * Class: J2Ci_jDVPresentationState * Method: getRotation * Signature: ()I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVPresentationState_getRotation (JNIEnv *, jobject); /* * Class: J2Ci_jDVPresentationState * Method: setRotation * Signature: (I)I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVPresentationState_setRotation (JNIEnv *, jobject, jint); /* * Class: J2Ci_jDVPresentationState * Method: getFlip * Signature: ()Z */ JNIEXPORT jboolean JNICALL Java_J2Ci_jDVPresentationState_getFlip (JNIEnv *, jobject); /* * Class: J2Ci_jDVPresentationState * Method: setFlip * Signature: (Z)I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVPresentationState_setFlip (JNIEnv *, jobject, jboolean); /* * Class: J2Ci_jDVPresentationState * Method: clear * Signature: ()V */ JNIEXPORT void JNICALL Java_J2Ci_jDVPresentationState_clear (JNIEnv *, jobject); /* * Class: J2Ci_jDVPresentationState * Method: getPixelData * Signature: (LJ2Ci/jDVPrStateParam_GetPixelData;)I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVPresentationState_getPixelData__LJ2Ci_jDVPrStateParam_1GetPixelData_2 (JNIEnv *, jobject, jobject); /* * Class: J2Ci_jDVPresentationState * Method: addImageReference * Signature: (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVPresentationState_addImageReference (JNIEnv *, jobject, jstring, jstring, jstring, jstring, jstring, jstring, jstring, jstring); /* * Class: J2Ci_jDVPresentationState * Method: addImageReferenceAttached * Signature: (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVPresentationState_addImageReferenceAttached (JNIEnv *, jobject, jstring, jstring, jstring); /* * Class: J2Ci_jDVPresentationState * Method: removeImageReference * Signature: (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVPresentationState_removeImageReference (JNIEnv *, jobject, jstring, jstring, jstring); /* * Class: J2Ci_jDVPresentationState * Method: removeImageReferenceAttached * Signature: ()I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVPresentationState_removeImageReferenceAttached (JNIEnv *, jobject); /* * Class: J2Ci_jDVPresentationState * Method: getImageNumberOfFrames * Signature: (LJ2Ci/jIntByRef;)I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVPresentationState_getImageNumberOfFrames (JNIEnv *, jobject, jobject); /* * Class: J2Ci_jDVPresentationState * Method: selectImageFrameNumber * Signature: (I)I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVPresentationState_selectImageFrameNumber (JNIEnv *, jobject, jint); /* * Class: J2Ci_jDVPresentationState * Method: getSelectedImageFrameNumber * Signature: ()I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVPresentationState_getSelectedImageFrameNumber (JNIEnv *, jobject); /* * Class: J2Ci_jDVPresentationState * Method: getPresentationLUT * Signature: ()I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVPresentationState_getPresentationLUT (JNIEnv *, jobject); /* * Class: J2Ci_jDVPresentationState * Method: havePresentationLookupTable * Signature: ()Z */ JNIEXPORT jboolean JNICALL Java_J2Ci_jDVPresentationState_havePresentationLookupTable (JNIEnv *, jobject); /* * Class: J2Ci_jDVPresentationState * Method: getDisplayedAreaPresentationSizeMode * Signature: ()I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVPresentationState_getDisplayedAreaPresentationSizeMode (JNIEnv *, jobject); /* * Class: J2Ci_jDVPresentationState * Method: getDisplayedAreaPresentationPixelAspectRatio * Signature: ()D */ JNIEXPORT jdouble JNICALL Java_J2Ci_jDVPresentationState_getDisplayedAreaPresentationPixelAspectRatio (JNIEnv *, jobject); /* * Class: J2Ci_jDVPresentationState * Method: getStandardDisplayedArea * Signature: (LJ2Ci/jIntByRef;LJ2Ci/jIntByRef;LJ2Ci/jIntByRef;LJ2Ci/jIntByRef;)I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVPresentationState_getStandardDisplayedArea (JNIEnv *, jobject, jobject, jobject, jobject, jobject); /* * Class: J2Ci_jDVPresentationState * Method: getImageRelativeDisplayedArea * Signature: (LJ2Ci/jIntByRef;LJ2Ci/jIntByRef;LJ2Ci/jIntByRef;LJ2Ci/jIntByRef;)I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVPresentationState_getImageRelativeDisplayedArea (JNIEnv *, jobject, jobject, jobject, jobject, jobject); /* * Class: J2Ci_jDVPresentationState * Method: getDisplayedAreaPresentationPixelSpacing * Signature: (LJ2Ci/jDoubleByRef;LJ2Ci/jDoubleByRef;)I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVPresentationState_getDisplayedAreaPresentationPixelSpacing (JNIEnv *, jobject, jobject, jobject); /* * Class: J2Ci_jDVPresentationState * Method: getDisplayedAreaPresentationPixelMagnificationRatio * Signature: (LJ2Ci/jDoubleByRef;)I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVPresentationState_getDisplayedAreaPresentationPixelMagnificationRatio (JNIEnv *, jobject, jobject); /* * Class: J2Ci_jDVPresentationState * Method: canUseDisplayedAreaTrueSize * Signature: ()Z */ JNIEXPORT jboolean JNICALL Java_J2Ci_jDVPresentationState_canUseDisplayedAreaTrueSize (JNIEnv *, jobject); /* * Class: J2Ci_jDVPresentationState * Method: setStandardDisplayedArea * Signature: (IIIIIDI)I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVPresentationState_setStandardDisplayedArea (JNIEnv *, jobject, jint, jint, jint, jint, jint, jdouble, jint); /* * Class: J2Ci_jDVPresentationState * Method: setImageRelativeDisplayedArea * Signature: (IIIIIDI)I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVPresentationState_setImageRelativeDisplayedArea (JNIEnv *, jobject, jint, jint, jint, jint, jint, jdouble, jint); /* * Class: J2Ci_jDVPresentationState * Method: getRectShutterLV * Signature: ()I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVPresentationState_getRectShutterLV (JNIEnv *, jobject); /* * Class: J2Ci_jDVPresentationState * Method: getRectShutterRV * Signature: ()I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVPresentationState_getRectShutterRV (JNIEnv *, jobject); /* * Class: J2Ci_jDVPresentationState * Method: getRectShutterUH * Signature: ()I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVPresentationState_getRectShutterUH (JNIEnv *, jobject); /* * Class: J2Ci_jDVPresentationState * Method: getRectShutterLH * Signature: ()I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVPresentationState_getRectShutterLH (JNIEnv *, jobject); /* * Class: J2Ci_jDVPresentationState * Method: setRectShutter * Signature: (IIII)I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVPresentationState_setRectShutter (JNIEnv *, jobject, jint, jint, jint, jint); /* * Class: J2Ci_jDVPresentationState * Method: haveShutter * Signature: (I)Z */ JNIEXPORT jboolean JNICALL Java_J2Ci_jDVPresentationState_haveShutter (JNIEnv *, jobject, jint); /* * Class: J2Ci_jDVPresentationState * Method: setCurrentPresentationLUT * Signature: (I)I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVPresentationState_setCurrentPresentationLUT (JNIEnv *, jobject, jint); /* * Class: J2Ci_jDVPresentationState * Method: getCurrentPresentationLUTExplanation * Signature: ()Ljava/lang/String; */ JNIEXPORT jstring JNICALL Java_J2Ci_jDVPresentationState_getCurrentPresentationLUTExplanation (JNIEnv *, jobject); /* * Class: J2Ci_jDVPresentationState * Method: getPresentationLUTExplanation * Signature: ()Ljava/lang/String; */ JNIEXPORT jstring JNICALL Java_J2Ci_jDVPresentationState_getPresentationLUTExplanation (JNIEnv *, jobject); /* * Class: J2Ci_jDVPresentationState * Method: getCenterOfCircularShutter_x * Signature: ()I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVPresentationState_getCenterOfCircularShutter_1x (JNIEnv *, jobject); /* * Class: J2Ci_jDVPresentationState * Method: getCenterOfCircularShutter_y * Signature: ()I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVPresentationState_getCenterOfCircularShutter_1y (JNIEnv *, jobject); /* * Class: J2Ci_jDVPresentationState * Method: getRadiusOfCircularShutter * Signature: ()I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVPresentationState_getRadiusOfCircularShutter (JNIEnv *, jobject); /* * Class: J2Ci_jDVPresentationState * Method: setCircularShutter * Signature: (III)I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVPresentationState_setCircularShutter (JNIEnv *, jobject, jint, jint, jint); /* * Class: J2Ci_jDVPresentationState * Method: getNumberOfPolyShutterVertices * Signature: ()I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVPresentationState_getNumberOfPolyShutterVertices (JNIEnv *, jobject); /* * Class: J2Ci_jDVPresentationState * Method: setPolyShutterOrigin * Signature: (II)I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVPresentationState_setPolyShutterOrigin (JNIEnv *, jobject, jint, jint); /* * Class: J2Ci_jDVPresentationState * Method: addPolyShutterVertex * Signature: (II)I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVPresentationState_addPolyShutterVertex (JNIEnv *, jobject, jint, jint); /* * Class: J2Ci_jDVPresentationState * Method: getPolyShutterVertex * Signature: (ILjava/awt/Point;)I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVPresentationState_getPolyShutterVertex (JNIEnv *, jobject, jint, jobject); /* * Class: J2Ci_jDVPresentationState * Method: getShutterPresentationValue * Signature: ()I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVPresentationState_getShutterPresentationValue (JNIEnv *, jobject); /* * Class: J2Ci_jDVPresentationState * Method: setShutterPresentationValue * Signature: (I)I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVPresentationState_setShutterPresentationValue (JNIEnv *, jobject, jint); /* * Class: J2Ci_jDVPresentationState * Method: sortGraphicLayers * Signature: ()V */ JNIEXPORT void JNICALL Java_J2Ci_jDVPresentationState_sortGraphicLayers (JNIEnv *, jobject); /* * Class: J2Ci_jDVPresentationState * Method: getNumberOfGraphicLayers * Signature: ()I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVPresentationState_getNumberOfGraphicLayers (JNIEnv *, jobject); /* * Class: J2Ci_jDVPresentationState * Method: getGraphicLayerName * Signature: (I)Ljava/lang/String; */ JNIEXPORT jstring JNICALL Java_J2Ci_jDVPresentationState_getGraphicLayerName (JNIEnv *, jobject, jint); /* * Class: J2Ci_jDVPresentationState * Method: getGraphicLayerIndex * Signature: (Ljava/lang/String;)I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVPresentationState_getGraphicLayerIndex (JNIEnv *, jobject, jstring); /* * Class: J2Ci_jDVPresentationState * Method: getGraphicLayerDescription * Signature: (I)Ljava/lang/String; */ JNIEXPORT jstring JNICALL Java_J2Ci_jDVPresentationState_getGraphicLayerDescription (JNIEnv *, jobject, jint); /* * Class: J2Ci_jDVPresentationState * Method: haveGraphicLayerRecommendedDisplayValue * Signature: (I)Z */ JNIEXPORT jboolean JNICALL Java_J2Ci_jDVPresentationState_haveGraphicLayerRecommendedDisplayValue (JNIEnv *, jobject, jint); /* * Class: J2Ci_jDVPresentationState * Method: getGraphicLayerRecommendedDisplayValueGray * Signature: (ILJ2Ci/jIntByRef;)I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVPresentationState_getGraphicLayerRecommendedDisplayValueGray (JNIEnv *, jobject, jint, jobject); /* * Class: J2Ci_jDVPresentationState * Method: getGraphicLayerRecommendedDisplayValueRGB * Signature: (ILJ2Ci/jIntByRef;LJ2Ci/jIntByRef;LJ2Ci/jIntByRef;)I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVPresentationState_getGraphicLayerRecommendedDisplayValueRGB (JNIEnv *, jobject, jint, jobject, jobject, jobject); /* * Class: J2Ci_jDVPresentationState * Method: setGraphicLayerRecommendedDisplayValueGray * Signature: (II)I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVPresentationState_setGraphicLayerRecommendedDisplayValueGray (JNIEnv *, jobject, jint, jint); /* * Class: J2Ci_jDVPresentationState * Method: setGraphicLayerRecommendedDisplayValueRGB * Signature: (IIII)I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVPresentationState_setGraphicLayerRecommendedDisplayValueRGB (JNIEnv *, jobject, jint, jint, jint, jint); /* * Class: J2Ci_jDVPresentationState * Method: removeGraphicLayerRecommendedDisplayValue * Signature: (IZZ)V */ JNIEXPORT void JNICALL Java_J2Ci_jDVPresentationState_removeGraphicLayerRecommendedDisplayValue (JNIEnv *, jobject, jint, jboolean, jboolean); /* * Class: J2Ci_jDVPresentationState * Method: setGraphicLayerName * Signature: (ILjava/lang/String;)I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVPresentationState_setGraphicLayerName (JNIEnv *, jobject, jint, jstring); /* * Class: J2Ci_jDVPresentationState * Method: setGraphicLayerDescription * Signature: (ILjava/lang/String;)I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVPresentationState_setGraphicLayerDescription (JNIEnv *, jobject, jint, jstring); /* * Class: J2Ci_jDVPresentationState * Method: toFrontGraphicLayer * Signature: (I)I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVPresentationState_toFrontGraphicLayer (JNIEnv *, jobject, jint); /* * Class: J2Ci_jDVPresentationState * Method: toBackGraphicLayer * Signature: (I)I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVPresentationState_toBackGraphicLayer (JNIEnv *, jobject, jint); /* * Class: J2Ci_jDVPresentationState * Method: addGraphicLayer * Signature: (Ljava/lang/String;Ljava/lang/String;)I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVPresentationState_addGraphicLayer (JNIEnv *, jobject, jstring, jstring); /* * Class: J2Ci_jDVPresentationState * Method: removeGraphicLayer * Signature: (I)I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVPresentationState_removeGraphicLayer (JNIEnv *, jobject, jint); /* * Class: J2Ci_jDVPresentationState * Method: removeShutter * Signature: (I)V */ JNIEXPORT void JNICALL Java_J2Ci_jDVPresentationState_removeShutter (JNIEnv *, jobject, jint); /* * Class: J2Ci_jDVPresentationState * Method: getNumberOfTextObjects * Signature: (I)I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVPresentationState_getNumberOfTextObjects (JNIEnv *, jobject, jint); /* * Class: J2Ci_jDVPresentationState * Method: getTextObjectN * Signature: (II)J */ JNIEXPORT jlong JNICALL Java_J2Ci_jDVPresentationState_getTextObjectN (JNIEnv *, jobject, jint, jint); /* * Class: J2Ci_jDVPresentationState * Method: addTextObjectN * Signature: (II)J */ JNIEXPORT jlong JNICALL Java_J2Ci_jDVPresentationState_addTextObjectN (JNIEnv *, jobject, jint, jint); /* * Class: J2Ci_jDVPresentationState * Method: removeTextObject * Signature: (II)I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVPresentationState_removeTextObject (JNIEnv *, jobject, jint, jint); /* * Class: J2Ci_jDVPresentationState * Method: moveTextObject * Signature: (IIII)I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVPresentationState_moveTextObject (JNIEnv *, jobject, jint, jint, jint, jint); /* * Class: J2Ci_jDVPresentationState * Method: getNumberOfGraphicObjects * Signature: (I)I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVPresentationState_getNumberOfGraphicObjects (JNIEnv *, jobject, jint); /* * Class: J2Ci_jDVPresentationState * Method: getGraphicObjectN * Signature: (II)J */ JNIEXPORT jlong JNICALL Java_J2Ci_jDVPresentationState_getGraphicObjectN (JNIEnv *, jobject, jint, jint); /* * Class: J2Ci_jDVPresentationState * Method: addGraphicObjectN * Signature: (II)J */ JNIEXPORT jlong JNICALL Java_J2Ci_jDVPresentationState_addGraphicObjectN (JNIEnv *, jobject, jint, jint); /* * Class: J2Ci_jDVPresentationState * Method: removeGraphicObject * Signature: (II)I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVPresentationState_removeGraphicObject (JNIEnv *, jobject, jint, jint); /* * Class: J2Ci_jDVPresentationState * Method: moveGraphicObject * Signature: (IIII)I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVPresentationState_moveGraphicObject (JNIEnv *, jobject, jint, jint, jint, jint); /* * Class: J2Ci_jDVPresentationState * Method: detachImage * Signature: ()V */ JNIEXPORT void JNICALL Java_J2Ci_jDVPresentationState_detachImage (JNIEnv *, jobject); /* * Class: J2Ci_jDVPresentationState * Method: setCharset * Signature: (I)I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVPresentationState_setCharset (JNIEnv *, jobject, jint); /* * Class: J2Ci_jDVPresentationState * Method: getCharset * Signature: ()I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVPresentationState_getCharset (JNIEnv *, jobject); /* * Class: J2Ci_jDVPresentationState * Method: getCharsetString * Signature: ()Ljava/lang/String; */ JNIEXPORT jstring JNICALL Java_J2Ci_jDVPresentationState_getCharsetString (JNIEnv *, jobject); /* * Class: J2Ci_jDVPresentationState * Method: getNumberOfCurves * Signature: (I)I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVPresentationState_getNumberOfCurves (JNIEnv *, jobject, jint); /* * Class: J2Ci_jDVPresentationState * Method: getCurveN * Signature: (II)J */ JNIEXPORT jlong JNICALL Java_J2Ci_jDVPresentationState_getCurveN (JNIEnv *, jobject, jint, jint); /* * Class: J2Ci_jDVPresentationState * Method: getNumberOfCurvesInImage * Signature: ()I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVPresentationState_getNumberOfCurvesInImage (JNIEnv *, jobject); /* * Class: J2Ci_jDVPresentationState * Method: getCurveInImageN * Signature: (I)J */ JNIEXPORT jlong JNICALL Java_J2Ci_jDVPresentationState_getCurveInImageN (JNIEnv *, jobject, jint); /* * Class: J2Ci_jDVPresentationState * Method: addCurve * Signature: (II)I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVPresentationState_addCurve (JNIEnv *, jobject, jint, jint); /* * Class: J2Ci_jDVPresentationState * Method: removeCurve * Signature: (II)I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVPresentationState_removeCurve (JNIEnv *, jobject, jint, jint); /* * Class: J2Ci_jDVPresentationState * Method: moveCurve * Signature: (III)I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVPresentationState_moveCurve (JNIEnv *, jobject, jint, jint, jint); /* * Class: J2Ci_jDVPresentationState * Method: haveActiveVOIWindow * Signature: ()Z */ JNIEXPORT jboolean JNICALL Java_J2Ci_jDVPresentationState_haveActiveVOIWindow (JNIEnv *, jobject); /* * Class: J2Ci_jDVPresentationState * Method: haveActiveVOILUT * Signature: ()Z */ JNIEXPORT jboolean JNICALL Java_J2Ci_jDVPresentationState_haveActiveVOILUT (JNIEnv *, jobject); /* * Class: J2Ci_jDVPresentationState * Method: getCurrentVOIDescription * Signature: ()Ljava/lang/String; */ JNIEXPORT jstring JNICALL Java_J2Ci_jDVPresentationState_getCurrentVOIDescription (JNIEnv *, jobject); /* * Class: J2Ci_jDVPresentationState * Method: getCurrentWindowWidth * Signature: (LJ2Ci/jDoubleByRef;)I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVPresentationState_getCurrentWindowWidth (JNIEnv *, jobject, jobject); /* * Class: J2Ci_jDVPresentationState * Method: getCurrentWindowCenter * Signature: (LJ2Ci/jDoubleByRef;)I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVPresentationState_getCurrentWindowCenter (JNIEnv *, jobject, jobject); /* * Class: J2Ci_jDVPresentationState * Method: getNumberOfVOILUTsInImage * Signature: ()I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVPresentationState_getNumberOfVOILUTsInImage (JNIEnv *, jobject); /* * Class: J2Ci_jDVPresentationState * Method: getNumberOfVOIWindowsInImage * Signature: ()I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVPresentationState_getNumberOfVOIWindowsInImage (JNIEnv *, jobject); /* * Class: J2Ci_jDVPresentationState * Method: getDescriptionOfVOILUTsInImage * Signature: (I)Ljava/lang/String; */ JNIEXPORT jstring JNICALL Java_J2Ci_jDVPresentationState_getDescriptionOfVOILUTsInImage (JNIEnv *, jobject, jint); /* * Class: J2Ci_jDVPresentationState * Method: getDescriptionOfVOIWindowsInImage * Signature: (I)Ljava/lang/String; */ JNIEXPORT jstring JNICALL Java_J2Ci_jDVPresentationState_getDescriptionOfVOIWindowsInImage (JNIEnv *, jobject, jint); /* * Class: J2Ci_jDVPresentationState * Method: setVOILUTFromImage * Signature: (II)I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVPresentationState_setVOILUTFromImage (JNIEnv *, jobject, jint, jint); /* * Class: J2Ci_jDVPresentationState * Method: setVOIWindowFromImage * Signature: (II)I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVPresentationState_setVOIWindowFromImage (JNIEnv *, jobject, jint, jint); /* * Class: J2Ci_jDVPresentationState * Method: setVOIWindow * Signature: (DDLjava/lang/String;I)I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVPresentationState_setVOIWindow (JNIEnv *, jobject, jdouble, jdouble, jstring, jint); /* * Class: J2Ci_jDVPresentationState * Method: deactivateVOI * Signature: (I)V */ JNIEXPORT void JNICALL Java_J2Ci_jDVPresentationState_deactivateVOI (JNIEnv *, jobject, jint); /* * Class: J2Ci_jDVPresentationState * Method: setGammaVOILUT * Signature: (DI)I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVPresentationState_setGammaVOILUT (JNIEnv *, jobject, jdouble, jint); /* * Class: J2Ci_jDVPresentationState * Method: getNumberOfActiveOverlays * Signature: (I)I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVPresentationState_getNumberOfActiveOverlays (JNIEnv *, jobject, jint); /* * Class: J2Ci_jDVPresentationState * Method: getActiveOverlayGroup * Signature: (II)I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVPresentationState_getActiveOverlayGroup (JNIEnv *, jobject, jint, jint); /* * Class: J2Ci_jDVPresentationState * Method: getActiveOverlayLabel * Signature: (II)Ljava/lang/String; */ JNIEXPORT jstring JNICALL Java_J2Ci_jDVPresentationState_getActiveOverlayLabel (JNIEnv *, jobject, jint, jint); /* * Class: J2Ci_jDVPresentationState * Method: getActiveOverlayDescription * Signature: (II)Ljava/lang/String; */ JNIEXPORT jstring JNICALL Java_J2Ci_jDVPresentationState_getActiveOverlayDescription (JNIEnv *, jobject, jint, jint); /* * Class: J2Ci_jDVPresentationState * Method: activeOverlayIsROI * Signature: (II)Z */ JNIEXPORT jboolean JNICALL Java_J2Ci_jDVPresentationState_activeOverlayIsROI (JNIEnv *, jobject, jint, jint); /* * Class: J2Ci_jDVPresentationState * Method: getOverlayData * Signature: (LJ2Ci/jDVPrStateParam_GetOverlayData;)I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVPresentationState_getOverlayData (JNIEnv *, jobject, jobject); /* * Class: J2Ci_jDVPresentationState * Method: getNumberOfOverlaysInImage * Signature: ()I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVPresentationState_getNumberOfOverlaysInImage (JNIEnv *, jobject); /* * Class: J2Ci_jDVPresentationState * Method: getOverlayInImageGroup * Signature: (I)I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVPresentationState_getOverlayInImageGroup (JNIEnv *, jobject, jint); /* * Class: J2Ci_jDVPresentationState * Method: getOverlayInImageLabel * Signature: (I)Ljava/lang/String; */ JNIEXPORT jstring JNICALL Java_J2Ci_jDVPresentationState_getOverlayInImageLabel (JNIEnv *, jobject, jint); /* * Class: J2Ci_jDVPresentationState * Method: getOverlayInImageDescription * Signature: (I)Ljava/lang/String; */ JNIEXPORT jstring JNICALL Java_J2Ci_jDVPresentationState_getOverlayInImageDescription (JNIEnv *, jobject, jint); /* * Class: J2Ci_jDVPresentationState * Method: getOverlayInImageActivationLayer * Signature: (I)I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVPresentationState_getOverlayInImageActivationLayer (JNIEnv *, jobject, jint); /* * Class: J2Ci_jDVPresentationState * Method: overlayInImageIsROI * Signature: (I)Z */ JNIEXPORT jboolean JNICALL Java_J2Ci_jDVPresentationState_overlayInImageIsROI (JNIEnv *, jobject, jint); /* * Class: J2Ci_jDVPresentationState * Method: getNumberOfOverlaysInPresentationState * Signature: ()I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVPresentationState_getNumberOfOverlaysInPresentationState (JNIEnv *, jobject); /* * Class: J2Ci_jDVPresentationState * Method: getOverlayInPresentationStateGroup * Signature: (I)I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVPresentationState_getOverlayInPresentationStateGroup (JNIEnv *, jobject, jint); /* * Class: J2Ci_jDVPresentationState * Method: getOverlayInPresentationStateLabel * Signature: (I)Ljava/lang/String; */ JNIEXPORT jstring JNICALL Java_J2Ci_jDVPresentationState_getOverlayInPresentationStateLabel (JNIEnv *, jobject, jint); /* * Class: J2Ci_jDVPresentationState * Method: getOverlayInPresentationStateDescription * Signature: (I)Ljava/lang/String; */ JNIEXPORT jstring JNICALL Java_J2Ci_jDVPresentationState_getOverlayInPresentationStateDescription (JNIEnv *, jobject, jint); /* * Class: J2Ci_jDVPresentationState * Method: getOverlayInPresentationStateActivationLayer * Signature: (I)I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVPresentationState_getOverlayInPresentationStateActivationLayer (JNIEnv *, jobject, jint); /* * Class: J2Ci_jDVPresentationState * Method: overlayIsBitmapShutter * Signature: (I)Z */ JNIEXPORT jboolean JNICALL Java_J2Ci_jDVPresentationState_overlayIsBitmapShutter (JNIEnv *, jobject, jint); /* * Class: J2Ci_jDVPresentationState * Method: overlayInPresentationStateIsROI * Signature: (I)Z */ JNIEXPORT jboolean JNICALL Java_J2Ci_jDVPresentationState_overlayInPresentationStateIsROI (JNIEnv *, jobject, jint); /* * Class: J2Ci_jDVPresentationState * Method: removeOverlayFromPresentationState * Signature: (I)I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVPresentationState_removeOverlayFromPresentationState (JNIEnv *, jobject, jint); /* * Class: J2Ci_jDVPresentationState * Method: changeOverlayGroupInPresentationState * Signature: (II)I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVPresentationState_changeOverlayGroupInPresentationState (JNIEnv *, jobject, jint, jint); /* * Class: J2Ci_jDVPresentationState * Method: overlayIsSuitableAsBitmapShutter * Signature: (I)Z */ JNIEXPORT jboolean JNICALL Java_J2Ci_jDVPresentationState_overlayIsSuitableAsBitmapShutter (JNIEnv *, jobject, jint); /* * Class: J2Ci_jDVPresentationState * Method: activateOverlayInImage * Signature: (II)I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVPresentationState_activateOverlayInImage (JNIEnv *, jobject, jint, jint); /* * Class: J2Ci_jDVPresentationState * Method: activateOverlayInPresentationState * Signature: (II)I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVPresentationState_activateOverlayInPresentationState (JNIEnv *, jobject, jint, jint); /* * Class: J2Ci_jDVPresentationState * Method: activateOverlayAsBitmapShutter * Signature: (I)I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVPresentationState_activateOverlayAsBitmapShutter (JNIEnv *, jobject, jint); /* * Class: J2Ci_jDVPresentationState * Method: deactivateOverlay * Signature: (II)I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVPresentationState_deactivateOverlay (JNIEnv *, jobject, jint, jint); /* * Class: J2Ci_jDVPresentationState * Method: moveOverlay * Signature: (III)I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVPresentationState_moveOverlay (JNIEnv *, jobject, jint, jint, jint); /* * Class: J2Ci_jDVPresentationState * Method: getImageMinMaxPixelRange * Signature: (LJ2Ci/jDoubleByRef;LJ2Ci/jDoubleByRef;)I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVPresentationState_getImageMinMaxPixelRange (JNIEnv *, jobject, jobject, jobject); /* * Class: J2Ci_jDVPresentationState * Method: getImageMinMaxPixelValue * Signature: (LJ2Ci/jDoubleByRef;LJ2Ci/jDoubleByRef;)I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVPresentationState_getImageMinMaxPixelValue (JNIEnv *, jobject, jobject, jobject); /* * Class: J2Ci_jDVPresentationState * Method: getImageWidth * Signature: (LJ2Ci/jIntByRef;)I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVPresentationState_getImageWidth (JNIEnv *, jobject, jobject); /* * Class: J2Ci_jDVPresentationState * Method: getImageHeight * Signature: (LJ2Ci/jIntByRef;)I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVPresentationState_getImageHeight (JNIEnv *, jobject, jobject); /* * Class: J2Ci_jDVPresentationState * Method: numberOfImageReferences * Signature: ()I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVPresentationState_numberOfImageReferences (JNIEnv *, jobject); /* * Class: J2Ci_jDVPresentationState * Method: getImageReference * Signature: (ILJ2Ci/jDVPrStateParam_GetImageReference;)I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVPresentationState_getImageReference (JNIEnv *, jobject, jint, jobject); /* * Class: J2Ci_jDVPresentationState * Method: exchangeGraphicLayers * Signature: (II)I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVPresentationState_exchangeGraphicLayers (JNIEnv *, jobject, jint, jint); /* * Class: J2Ci_jDVPresentationState * Method: convertPValueToDDL * Signature: (II)S */ JNIEXPORT jshort JNICALL Java_J2Ci_jDVPresentationState_convertPValueToDDL (JNIEnv *, jobject, jint, jint); /* * Class: J2Ci_jDVPresentationState * Method: createInstanceUID * Signature: ()Ljava/lang/String; */ JNIEXPORT jstring JNICALL Java_J2Ci_jDVPresentationState_createInstanceUID (JNIEnv *, jobject); /* * Class: J2Ci_jDVPresentationState * Method: getPixelData * Signature: ([BJ)I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVPresentationState_getPixelData___3BJ (JNIEnv *, jobject, jbyteArray, jlong); /* * Class: J2Ci_jDVPresentationState * Method: invertImage * Signature: ()I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVPresentationState_invertImage (JNIEnv *, jobject); /* * Class: J2Ci_jDVPresentationState * Method: isInverse * Signature: ()Z */ JNIEXPORT jboolean JNICALL Java_J2Ci_jDVPresentationState_isInverse (JNIEnv *, jobject); /* * Class: J2Ci_jDVPresentationState * Method: getPrintBitmapSize * Signature: ()J */ JNIEXPORT jlong JNICALL Java_J2Ci_jDVPresentationState_getPrintBitmapSize (JNIEnv *, jobject); /* * Class: J2Ci_jDVPresentationState * Method: setMinimumPrintBitmapWidthHeight * Signature: (JJ)I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVPresentationState_setMinimumPrintBitmapWidthHeight (JNIEnv *, jobject, jlong, jlong); /* * Class: J2Ci_jDVPresentationState * Method: setMaximumPrintBitmapWidthHeight * Signature: (JJ)I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVPresentationState_setMaximumPrintBitmapWidthHeight (JNIEnv *, jobject, jlong, jlong); /* * Class: J2Ci_jDVPresentationState * Method: getPrintBitmapWidthHeight * Signature: (LJ2Ci/jIntByRef;LJ2Ci/jIntByRef;)I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVPresentationState_getPrintBitmapWidthHeight (JNIEnv *, jobject, jobject, jobject); /* * Class: J2Ci_jDVPresentationState * Method: getPrintBitmapWidth * Signature: (LJ2Ci/jIntByRef;)I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVPresentationState_getPrintBitmapWidth (JNIEnv *, jobject, jobject); /* * Class: J2Ci_jDVPresentationState * Method: getPrintBitmapHeight * Signature: (LJ2Ci/jIntByRef;)I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVPresentationState_getPrintBitmapHeight (JNIEnv *, jobject, jobject); /* * Class: J2Ci_jDVPresentationState * Method: getPrintBitmapPixelAspectRatio * Signature: ()D */ JNIEXPORT jdouble JNICALL Java_J2Ci_jDVPresentationState_getPrintBitmapPixelAspectRatio (JNIEnv *, jobject); /* * Class: J2Ci_jDVPresentationState * Method: getPrintBitmapRequestedImageSize * Signature: (LJ2Ci/jStringByRef;)I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVPresentationState_getPrintBitmapRequestedImageSize (JNIEnv *, jobject, jobject); /* * Class: J2Ci_jDVPresentationState * Method: getPrintBitmap * Signature: ([SJ)I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVPresentationState_getPrintBitmap (JNIEnv *, jobject, jshortArray, jlong); /* * Class: J2Ci_jDVPresentationState * Method: getCurrentImageModality * Signature: ()Ljava/lang/String; */ JNIEXPORT jstring JNICALL Java_J2Ci_jDVPresentationState_getCurrentImageModality (JNIEnv *, jobject); /* * Class: J2Ci_jDVPresentationState * Method: setDefaultPresentationLUTShape * Signature: ()I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVPresentationState_setDefaultPresentationLUTShape (JNIEnv *, jobject); /* * Class: J2Ci_jDVPresentationState * Method: createPreviewImage * Signature: (IIZ)I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVPresentationState_createPreviewImage (JNIEnv *, jobject, jint, jint, jboolean); /* * Class: J2Ci_jDVPresentationState * Method: deletePreviewImage * Signature: ()V */ JNIEXPORT void JNICALL Java_J2Ci_jDVPresentationState_deletePreviewImage (JNIEnv *, jobject); /* * Class: J2Ci_jDVPresentationState * Method: getPreviewImageSize * Signature: ()J */ JNIEXPORT jlong JNICALL Java_J2Ci_jDVPresentationState_getPreviewImageSize (JNIEnv *, jobject); /* * Class: J2Ci_jDVPresentationState * Method: getPreviewImageWidthHeight * Signature: (LJ2Ci/jIntByRef;LJ2Ci/jIntByRef;)I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVPresentationState_getPreviewImageWidthHeight (JNIEnv *, jobject, jobject, jobject); /* * Class: J2Ci_jDVPresentationState * Method: getPreviewImageWidth * Signature: (LJ2Ci/jIntByRef;)I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVPresentationState_getPreviewImageWidth (JNIEnv *, jobject, jobject); /* * Class: J2Ci_jDVPresentationState * Method: getPreviewImageHeight * Signature: (LJ2Ci/jIntByRef;)I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVPresentationState_getPreviewImageHeight (JNIEnv *, jobject, jobject); /* * Class: J2Ci_jDVPresentationState * Method: getPreviewImageBitmap * Signature: ([BJ)I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVPresentationState_getPreviewImageBitmap (JNIEnv *, jobject, jbyteArray, jlong); /* * Class: J2Ci_jDVPresentationState * Method: getDisplayTransform * Signature: ()I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVPresentationState_getDisplayTransform (JNIEnv *, jobject); /* * Class: J2Ci_jDVPresentationState * Method: setDisplayTransform * Signature: (I)V */ JNIEXPORT void JNICALL Java_J2Ci_jDVPresentationState_setDisplayTransform (JNIEnv *, jobject, jint); /* * Class: J2Ci_jDVPresentationState * Method: getScreenData * Signature: (LJ2Ci/jDVPrStateParam_GetScreenData;)Z */ JNIEXPORT jboolean JNICALL Java_J2Ci_jDVPresentationState_getScreenData (JNIEnv *, jobject, jobject); #ifdef __cplusplus } #endif #endif dicomscope-3.6.0/interface/include/J2Ci_jDVPSCurve.h0000644000265600020320000000406711262371102021271 0ustar tilleaadmin/* DO NOT EDIT THIS FILE - it is machine generated */ #include /* Header for class J2Ci_jDVPSCurve */ #ifndef _Included_J2Ci_jDVPSCurve #define _Included_J2Ci_jDVPSCurve #ifdef __cplusplus extern "C" { #endif /* * Class: J2Ci_jDVPSCurve * Method: CopyConstructor * Signature: (J)V */ JNIEXPORT void JNICALL Java_J2Ci_jDVPSCurve_CopyConstructor (JNIEnv *, jobject, jlong); /* * Class: J2Ci_jDVPSCurve * Method: createObjOfDVPSCurve * Signature: ()V */ JNIEXPORT void JNICALL Java_J2Ci_jDVPSCurve_createObjOfDVPSCurve (JNIEnv *, jobject); /* * Class: J2Ci_jDVPSCurve * Method: getCurveGroup * Signature: ()B */ JNIEXPORT jbyte JNICALL Java_J2Ci_jDVPSCurve_getCurveGroup (JNIEnv *, jobject); /* * Class: J2Ci_jDVPSCurve * Method: getNumberOfPoints * Signature: ()I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVPSCurve_getNumberOfPoints (JNIEnv *, jobject); /* * Class: J2Ci_jDVPSCurve * Method: getTypeOfData * Signature: ()I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVPSCurve_getTypeOfData (JNIEnv *, jobject); /* * Class: J2Ci_jDVPSCurve * Method: getPoint * Signature: (ILJ2Ci/jDoubleByRef;LJ2Ci/jDoubleByRef;)I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVPSCurve_getPoint (JNIEnv *, jobject, jint, jobject, jobject); /* * Class: J2Ci_jDVPSCurve * Method: getCurveDescription * Signature: ()Ljava/lang/String; */ JNIEXPORT jstring JNICALL Java_J2Ci_jDVPSCurve_getCurveDescription (JNIEnv *, jobject); /* * Class: J2Ci_jDVPSCurve * Method: getCurveLabel * Signature: ()Ljava/lang/String; */ JNIEXPORT jstring JNICALL Java_J2Ci_jDVPSCurve_getCurveLabel (JNIEnv *, jobject); /* * Class: J2Ci_jDVPSCurve * Method: getCurveAxisUnitsX * Signature: ()Ljava/lang/String; */ JNIEXPORT jstring JNICALL Java_J2Ci_jDVPSCurve_getCurveAxisUnitsX (JNIEnv *, jobject); /* * Class: J2Ci_jDVPSCurve * Method: getCurveAxisUnitsY * Signature: ()Ljava/lang/String; */ JNIEXPORT jstring JNICALL Java_J2Ci_jDVPSCurve_getCurveAxisUnitsY (JNIEnv *, jobject); #ifdef __cplusplus } #endif #endif dicomscope-3.6.0/interface/include/J2Ci_jDVPSGraphicObject.h0000644000265600020320000000426111262371102022705 0ustar tilleaadmin/* DO NOT EDIT THIS FILE - it is machine generated */ #include /* Header for class J2Ci_jDVPSGraphicObject */ #ifndef _Included_J2Ci_jDVPSGraphicObject #define _Included_J2Ci_jDVPSGraphicObject #ifdef __cplusplus extern "C" { #endif /* * Class: J2Ci_jDVPSGraphicObject * Method: createObjOfDVPSGraphicObject * Signature: ()V */ JNIEXPORT void JNICALL Java_J2Ci_jDVPSGraphicObject_createObjOfDVPSGraphicObject (JNIEnv *, jobject); /* * Class: J2Ci_jDVPSGraphicObject * Method: CopyConstructor * Signature: (J)V */ JNIEXPORT void JNICALL Java_J2Ci_jDVPSGraphicObject_CopyConstructor (JNIEnv *, jobject, jlong); /* * Class: J2Ci_jDVPSGraphicObject * Method: getAnnotationUnits * Signature: ()I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVPSGraphicObject_getAnnotationUnits (JNIEnv *, jobject); /* * Class: J2Ci_jDVPSGraphicObject * Method: getNumberOfPoints * Signature: ()I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVPSGraphicObject_getNumberOfPoints (JNIEnv *, jobject); /* * Class: J2Ci_jDVPSGraphicObject * Method: getPoint * Signature: (ILJ2Ci/jDoubleByRef;LJ2Ci/jDoubleByRef;)I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVPSGraphicObject_getPoint (JNIEnv *, jobject, jint, jobject, jobject); /* * Class: J2Ci_jDVPSGraphicObject * Method: getGraphicType * Signature: ()I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVPSGraphicObject_getGraphicType (JNIEnv *, jobject); /* * Class: J2Ci_jDVPSGraphicObject * Method: isFilled * Signature: ()Z */ JNIEXPORT jboolean JNICALL Java_J2Ci_jDVPSGraphicObject_isFilled (JNIEnv *, jobject); /* * Class: J2Ci_jDVPSGraphicObject * Method: setData * Signature: (I[FI)I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVPSGraphicObject_setData (JNIEnv *, jobject, jint, jfloatArray, jint); /* * Class: J2Ci_jDVPSGraphicObject * Method: setGraphicType * Signature: (I)I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVPSGraphicObject_setGraphicType (JNIEnv *, jobject, jint); /* * Class: J2Ci_jDVPSGraphicObject * Method: setFilled * Signature: (Z)I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVPSGraphicObject_setFilled (JNIEnv *, jobject, jboolean); #ifdef __cplusplus } #endif #endif dicomscope-3.6.0/interface/include/J2Ci_jDVPSStoredPrint.h0000644000265600020320000002624411262371102022463 0ustar tilleaadmin/* DO NOT EDIT THIS FILE - it is machine generated */ #include /* Header for class J2Ci_jDVPSStoredPrint */ #ifndef _Included_J2Ci_jDVPSStoredPrint #define _Included_J2Ci_jDVPSStoredPrint #ifdef __cplusplus extern "C" { #endif /* * Class: J2Ci_jDVPSStoredPrint * Method: clear * Signature: ()V */ JNIEXPORT void JNICALL Java_J2Ci_jDVPSStoredPrint_clear (JNIEnv *, jobject); /* * Class: J2Ci_jDVPSStoredPrint * Method: setOriginator * Signature: (Ljava/lang/String;)I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVPSStoredPrint_setOriginator (JNIEnv *, jobject, jstring); /* * Class: J2Ci_jDVPSStoredPrint * Method: setDestination * Signature: (Ljava/lang/String;)I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVPSStoredPrint_setDestination (JNIEnv *, jobject, jstring); /* * Class: J2Ci_jDVPSStoredPrint * Method: setPrinterName * Signature: (Ljava/lang/String;)I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVPSStoredPrint_setPrinterName (JNIEnv *, jobject, jstring); /* * Class: J2Ci_jDVPSStoredPrint * Method: setImageDisplayFormat * Signature: (JJ)I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVPSStoredPrint_setImageDisplayFormat (JNIEnv *, jobject, jlong, jlong); /* * Class: J2Ci_jDVPSStoredPrint * Method: setFilmSizeID * Signature: (Ljava/lang/String;)I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVPSStoredPrint_setFilmSizeID (JNIEnv *, jobject, jstring); /* * Class: J2Ci_jDVPSStoredPrint * Method: setMagnificationType * Signature: (Ljava/lang/String;)I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVPSStoredPrint_setMagnificationType (JNIEnv *, jobject, jstring); /* * Class: J2Ci_jDVPSStoredPrint * Method: setSmoothingType * Signature: (Ljava/lang/String;)I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVPSStoredPrint_setSmoothingType (JNIEnv *, jobject, jstring); /* * Class: J2Ci_jDVPSStoredPrint * Method: setConfigurationInformation * Signature: (Ljava/lang/String;)I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVPSStoredPrint_setConfigurationInformation (JNIEnv *, jobject, jstring); /* * Class: J2Ci_jDVPSStoredPrint * Method: setResolutionID * Signature: (Ljava/lang/String;)I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVPSStoredPrint_setResolutionID (JNIEnv *, jobject, jstring); /* * Class: J2Ci_jDVPSStoredPrint * Method: setFilmOrientation * Signature: (I)I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVPSStoredPrint_setFilmOrientation (JNIEnv *, jobject, jint); /* * Class: J2Ci_jDVPSStoredPrint * Method: setTrim * Signature: (I)I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVPSStoredPrint_setTrim (JNIEnv *, jobject, jint); /* * Class: J2Ci_jDVPSStoredPrint * Method: setRequestedDecimateCropBehaviour * Signature: (I)I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVPSStoredPrint_setRequestedDecimateCropBehaviour (JNIEnv *, jobject, jint); /* * Class: J2Ci_jDVPSStoredPrint * Method: newPrinter * Signature: ()I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVPSStoredPrint_newPrinter (JNIEnv *, jobject); /* * Class: J2Ci_jDVPSStoredPrint * Method: getOriginator * Signature: ()Ljava/lang/String; */ JNIEXPORT jstring JNICALL Java_J2Ci_jDVPSStoredPrint_getOriginator (JNIEnv *, jobject); /* * Class: J2Ci_jDVPSStoredPrint * Method: getDestination * Signature: ()Ljava/lang/String; */ JNIEXPORT jstring JNICALL Java_J2Ci_jDVPSStoredPrint_getDestination (JNIEnv *, jobject); /* * Class: J2Ci_jDVPSStoredPrint * Method: getPrinterName * Signature: ()Ljava/lang/String; */ JNIEXPORT jstring JNICALL Java_J2Ci_jDVPSStoredPrint_getPrinterName (JNIEnv *, jobject); /* * Class: J2Ci_jDVPSStoredPrint * Method: getImageDisplayFormatColumns * Signature: ()J */ JNIEXPORT jlong JNICALL Java_J2Ci_jDVPSStoredPrint_getImageDisplayFormatColumns (JNIEnv *, jobject); /* * Class: J2Ci_jDVPSStoredPrint * Method: getImageDisplayFormatRows * Signature: ()J */ JNIEXPORT jlong JNICALL Java_J2Ci_jDVPSStoredPrint_getImageDisplayFormatRows (JNIEnv *, jobject); /* * Class: J2Ci_jDVPSStoredPrint * Method: getFilmOrientation * Signature: ()I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVPSStoredPrint_getFilmOrientation (JNIEnv *, jobject); /* * Class: J2Ci_jDVPSStoredPrint * Method: getTrim * Signature: ()I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVPSStoredPrint_getTrim (JNIEnv *, jobject); /* * Class: J2Ci_jDVPSStoredPrint * Method: getRequestedDecimateCropBehaviour * Signature: ()I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVPSStoredPrint_getRequestedDecimateCropBehaviour (JNIEnv *, jobject); /* * Class: J2Ci_jDVPSStoredPrint * Method: getFilmSizeID * Signature: ()Ljava/lang/String; */ JNIEXPORT jstring JNICALL Java_J2Ci_jDVPSStoredPrint_getFilmSizeID (JNIEnv *, jobject); /* * Class: J2Ci_jDVPSStoredPrint * Method: getMagnificationType * Signature: ()Ljava/lang/String; */ JNIEXPORT jstring JNICALL Java_J2Ci_jDVPSStoredPrint_getMagnificationType (JNIEnv *, jobject); /* * Class: J2Ci_jDVPSStoredPrint * Method: getSmoothingType * Signature: ()Ljava/lang/String; */ JNIEXPORT jstring JNICALL Java_J2Ci_jDVPSStoredPrint_getSmoothingType (JNIEnv *, jobject); /* * Class: J2Ci_jDVPSStoredPrint * Method: getConfigurationInformation * Signature: ()Ljava/lang/String; */ JNIEXPORT jstring JNICALL Java_J2Ci_jDVPSStoredPrint_getConfigurationInformation (JNIEnv *, jobject); /* * Class: J2Ci_jDVPSStoredPrint * Method: getResolutionID * Signature: ()Ljava/lang/String; */ JNIEXPORT jstring JNICALL Java_J2Ci_jDVPSStoredPrint_getResolutionID (JNIEnv *, jobject); /* * Class: J2Ci_jDVPSStoredPrint * Method: getNumberOfImages * Signature: ()I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVPSStoredPrint_getNumberOfImages (JNIEnv *, jobject); /* * Class: J2Ci_jDVPSStoredPrint * Method: deleteImage * Signature: (I)I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVPSStoredPrint_deleteImage (JNIEnv *, jobject, jint); /* * Class: J2Ci_jDVPSStoredPrint * Method: deleteMultipleImages * Signature: (I)I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVPSStoredPrint_deleteMultipleImages (JNIEnv *, jobject, jint); /* * Class: J2Ci_jDVPSStoredPrint * Method: addImageBox * Signature: (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVPSStoredPrint_addImageBox (JNIEnv *, jobject, jstring, jstring, jstring, jstring); /* * Class: J2Ci_jDVPSStoredPrint * Method: setInstanceUID * Signature: (Ljava/lang/String;)I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVPSStoredPrint_setInstanceUID (JNIEnv *, jobject, jstring); /* * Class: J2Ci_jDVPSStoredPrint * Method: imageHasAdditionalSettings * Signature: (I)Z */ JNIEXPORT jboolean JNICALL Java_J2Ci_jDVPSStoredPrint_imageHasAdditionalSettings (JNIEnv *, jobject, jint); /* * Class: J2Ci_jDVPSStoredPrint * Method: setImageMagnificationType * Signature: (ILjava/lang/String;)I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVPSStoredPrint_setImageMagnificationType (JNIEnv *, jobject, jint, jstring); /* * Class: J2Ci_jDVPSStoredPrint * Method: setImageSmoothingType * Signature: (ILjava/lang/String;)I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVPSStoredPrint_setImageSmoothingType (JNIEnv *, jobject, jint, jstring); /* * Class: J2Ci_jDVPSStoredPrint * Method: setImageConfigurationInformation * Signature: (ILjava/lang/String;)I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVPSStoredPrint_setImageConfigurationInformation (JNIEnv *, jobject, jint, jstring); /* * Class: J2Ci_jDVPSStoredPrint * Method: getImageMagnificationType * Signature: (I)Ljava/lang/String; */ JNIEXPORT jstring JNICALL Java_J2Ci_jDVPSStoredPrint_getImageMagnificationType (JNIEnv *, jobject, jint); /* * Class: J2Ci_jDVPSStoredPrint * Method: getImageSmoothingType * Signature: (I)Ljava/lang/String; */ JNIEXPORT jstring JNICALL Java_J2Ci_jDVPSStoredPrint_getImageSmoothingType (JNIEnv *, jobject, jint); /* * Class: J2Ci_jDVPSStoredPrint * Method: getImageConfigurationInformation * Signature: (I)Ljava/lang/String; */ JNIEXPORT jstring JNICALL Java_J2Ci_jDVPSStoredPrint_getImageConfigurationInformation (JNIEnv *, jobject, jint); /* * Class: J2Ci_jDVPSStoredPrint * Method: setDefaultPresentationLUT * Signature: ()I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVPSStoredPrint_setDefaultPresentationLUT (JNIEnv *, jobject); /* * Class: J2Ci_jDVPSStoredPrint * Method: setPresentationLUTShape * Signature: (I)I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVPSStoredPrint_setPresentationLUTShape (JNIEnv *, jobject, jint); /* * Class: J2Ci_jDVPSStoredPrint * Method: convertODtoPValue * Signature: (II)I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVPSStoredPrint_convertODtoPValue (JNIEnv *, jobject, jint, jint); /* * Class: J2Ci_jDVPSStoredPrint * Method: setBorderDensity * Signature: (Ljava/lang/String;)I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVPSStoredPrint_setBorderDensity (JNIEnv *, jobject, jstring); /* * Class: J2Ci_jDVPSStoredPrint * Method: setEmtpyImageDensity * Signature: (Ljava/lang/String;)I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVPSStoredPrint_setEmtpyImageDensity (JNIEnv *, jobject, jstring); /* * Class: J2Ci_jDVPSStoredPrint * Method: getBorderDensity * Signature: ()Ljava/lang/String; */ JNIEXPORT jstring JNICALL Java_J2Ci_jDVPSStoredPrint_getBorderDensity (JNIEnv *, jobject); /* * Class: J2Ci_jDVPSStoredPrint * Method: getEmtpyImageDensity * Signature: ()Ljava/lang/String; */ JNIEXPORT jstring JNICALL Java_J2Ci_jDVPSStoredPrint_getEmtpyImageDensity (JNIEnv *, jobject); /* * Class: J2Ci_jDVPSStoredPrint * Method: setMaxDensity * Signature: (Ljava/lang/String;)I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVPSStoredPrint_setMaxDensity (JNIEnv *, jobject, jstring); /* * Class: J2Ci_jDVPSStoredPrint * Method: setMinDensity * Signature: (Ljava/lang/String;)I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVPSStoredPrint_setMinDensity (JNIEnv *, jobject, jstring); /* * Class: J2Ci_jDVPSStoredPrint * Method: getMaxDensity * Signature: ()Ljava/lang/String; */ JNIEXPORT jstring JNICALL Java_J2Ci_jDVPSStoredPrint_getMaxDensity (JNIEnv *, jobject); /* * Class: J2Ci_jDVPSStoredPrint * Method: getMinDensity * Signature: ()Ljava/lang/String; */ JNIEXPORT jstring JNICALL Java_J2Ci_jDVPSStoredPrint_getMinDensity (JNIEnv *, jobject); /* * Class: J2Ci_jDVPSStoredPrint * Method: setPrintIllumination * Signature: (I)I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVPSStoredPrint_setPrintIllumination (JNIEnv *, jobject, jint); /* * Class: J2Ci_jDVPSStoredPrint * Method: getPrintIllumination * Signature: ()I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVPSStoredPrint_getPrintIllumination (JNIEnv *, jobject); /* * Class: J2Ci_jDVPSStoredPrint * Method: setPrintReflectedAmbientLight * Signature: (I)I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVPSStoredPrint_setPrintReflectedAmbientLight (JNIEnv *, jobject, jint); /* * Class: J2Ci_jDVPSStoredPrint * Method: getPrintReflectedAmbientLight * Signature: ()I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVPSStoredPrint_getPrintReflectedAmbientLight (JNIEnv *, jobject); #ifdef __cplusplus } #endif #endif dicomscope-3.6.0/interface/include/J2Ci_jDVPSTextObject.h0000644000265600020320000001012111262371102022244 0ustar tilleaadmin/* DO NOT EDIT THIS FILE - it is machine generated */ #include /* Header for class J2Ci_jDVPSTextObject */ #ifndef _Included_J2Ci_jDVPSTextObject #define _Included_J2Ci_jDVPSTextObject #ifdef __cplusplus extern "C" { #endif /* * Class: J2Ci_jDVPSTextObject * Method: createObjOfDVPSTextObject * Signature: ()V */ JNIEXPORT void JNICALL Java_J2Ci_jDVPSTextObject_createObjOfDVPSTextObject (JNIEnv *, jobject); /* * Class: J2Ci_jDVPSTextObject * Method: CopyConstructor * Signature: (J)V */ JNIEXPORT void JNICALL Java_J2Ci_jDVPSTextObject_CopyConstructor (JNIEnv *, jobject, jlong); /* * Class: J2Ci_jDVPSTextObject * Method: haveAnchorPoint * Signature: ()Z */ JNIEXPORT jboolean JNICALL Java_J2Ci_jDVPSTextObject_haveAnchorPoint (JNIEnv *, jobject); /* * Class: J2Ci_jDVPSTextObject * Method: haveBoundingBox * Signature: ()Z */ JNIEXPORT jboolean JNICALL Java_J2Ci_jDVPSTextObject_haveBoundingBox (JNIEnv *, jobject); /* * Class: J2Ci_jDVPSTextObject * Method: setAnchorPoint * Signature: (DDIZ)I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVPSTextObject_setAnchorPoint (JNIEnv *, jobject, jdouble, jdouble, jint, jboolean); /* * Class: J2Ci_jDVPSTextObject * Method: setBoundingBox * Signature: (DDDDII)I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVPSTextObject_setBoundingBox (JNIEnv *, jobject, jdouble, jdouble, jdouble, jdouble, jint, jint); /* * Class: J2Ci_jDVPSTextObject * Method: setText * Signature: (Ljava/lang/String;)I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVPSTextObject_setText (JNIEnv *, jobject, jstring); /* * Class: J2Ci_jDVPSTextObject * Method: removeAnchorPoint * Signature: ()V */ JNIEXPORT void JNICALL Java_J2Ci_jDVPSTextObject_removeAnchorPoint (JNIEnv *, jobject); /* * Class: J2Ci_jDVPSTextObject * Method: removeBoundingBox * Signature: ()V */ JNIEXPORT void JNICALL Java_J2Ci_jDVPSTextObject_removeBoundingBox (JNIEnv *, jobject); /* * Class: J2Ci_jDVPSTextObject * Method: getText * Signature: ()Ljava/lang/String; */ JNIEXPORT jstring JNICALL Java_J2Ci_jDVPSTextObject_getText (JNIEnv *, jobject); /* * Class: J2Ci_jDVPSTextObject * Method: getBoundingBoxTLHC_x * Signature: ()D */ JNIEXPORT jdouble JNICALL Java_J2Ci_jDVPSTextObject_getBoundingBoxTLHC_1x (JNIEnv *, jobject); /* * Class: J2Ci_jDVPSTextObject * Method: getBoundingBoxTLHC_y * Signature: ()D */ JNIEXPORT jdouble JNICALL Java_J2Ci_jDVPSTextObject_getBoundingBoxTLHC_1y (JNIEnv *, jobject); /* * Class: J2Ci_jDVPSTextObject * Method: getBoundingBoxBRHC_x * Signature: ()D */ JNIEXPORT jdouble JNICALL Java_J2Ci_jDVPSTextObject_getBoundingBoxBRHC_1x (JNIEnv *, jobject); /* * Class: J2Ci_jDVPSTextObject * Method: getBoundingBoxBRHC_y * Signature: ()D */ JNIEXPORT jdouble JNICALL Java_J2Ci_jDVPSTextObject_getBoundingBoxBRHC_1y (JNIEnv *, jobject); /* * Class: J2Ci_jDVPSTextObject * Method: getBoundingBoxAnnotationUnits * Signature: ()I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVPSTextObject_getBoundingBoxAnnotationUnits (JNIEnv *, jobject); /* * Class: J2Ci_jDVPSTextObject * Method: getAnchorPoint_x * Signature: ()D */ JNIEXPORT jdouble JNICALL Java_J2Ci_jDVPSTextObject_getAnchorPoint_1x (JNIEnv *, jobject); /* * Class: J2Ci_jDVPSTextObject * Method: getAnchorPoint_y * Signature: ()D */ JNIEXPORT jdouble JNICALL Java_J2Ci_jDVPSTextObject_getAnchorPoint_1y (JNIEnv *, jobject); /* * Class: J2Ci_jDVPSTextObject * Method: anchorPointIsVisible * Signature: ()Z */ JNIEXPORT jboolean JNICALL Java_J2Ci_jDVPSTextObject_anchorPointIsVisible (JNIEnv *, jobject); /* * Class: J2Ci_jDVPSTextObject * Method: getAnchorPointAnnotationUnits * Signature: ()I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVPSTextObject_getAnchorPointAnnotationUnits (JNIEnv *, jobject); /* * Class: J2Ci_jDVPSTextObject * Method: getBoundingBoxHorizontalJustification * Signature: ()I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVPSTextObject_getBoundingBoxHorizontalJustification (JNIEnv *, jobject); #ifdef __cplusplus } #endif #endif dicomscope-3.6.0/interface/include/jInterface.h0000644000265600020320000000310011262371102020564 0ustar tilleaadmin/* * * Copyright (C) 1999..2000, Institute for MicroTherapy and OFFIS * * This software and supporting documentation were developed by * * University of Witten/Herdecke * Department of Radiology and MicroTherapy * Institute for MicroTherapy * Medical computer science * * Universitaetsstrasse 142 * 44799 Bochum, Germany * * http://www.microtherapy.de/go/cs * mailto:computer.science@microtherapy.de * * and * * Kuratorium OFFIS e.V. * Healthcare Information and Communication Systems * Escherweg 2 * D-26121 Oldenburg, Germany * * THIS SOFTWARE IS MADE AVAILABLE, AS IS, AND THE INSTITUTE MAKES NO * WARRANTY REGARDING THE SOFTWARE, ITS PERFORMANCE, ITS MERCHANTABILITY * OR FITNESS FOR ANY PARTICULAR USE, FREEDOM FROM ANY COMPUTER DISEASES * OR ITS CONFORMITY TO ANY SPECIFICATION. THE ENTIRE RISK AS TO QUALITY * AND PERFORMANCE OF THE SOFTWARE IS WITH THE USER. * * Author : $Author: $ * Last update : $Date: $ * Revision : $Revision: $ * State: $State: $ */ // Common Header-File #include "errno.h" #include "osconfig.h" #include "dviface.h" // DVInterface, DVPresentationState #include "dcmimage.h" // DicomImage #include "dvpstx.h" // DVPSTextObject #include "dvpsgr.h" // DVPSGraphicObject #include "dvpscu.h" // DVPSCurve #include "dvpssp.h" // DVPSStoredPrint #include "dvpstyp.h" // DVPSStoredPrint #include "dsrdoc.h" // DSRDocument #include // Global Definitions #define JAVA_ENCODING_STRING "ISO8859_1" // Character set used for strings passed to C++ classes dicomscope-3.6.0/interface/jInterface.dsp0000644000265600020320000001703007770604060017522 0ustar tilleaadmin# Microsoft Developer Studio Project File - Name="jInterface" - Package Owner=<4> # Microsoft Developer Studio Generated Build File, Format Version 6.00 # ** NICHT BEARBEITEN ** # TARGTYPE "Win32 (x86) Dynamic-Link Library" 0x0102 CFG=jInterface - Win32 Debug !MESSAGE Dies ist kein gültiges Makefile. Zum Erstellen dieses Projekts mit NMAKE !MESSAGE verwenden Sie den Befehl "Makefile exportieren" und führen Sie den Befehl !MESSAGE !MESSAGE NMAKE /f "jInterface.mak". !MESSAGE !MESSAGE Sie können beim Ausführen von NMAKE eine Konfiguration angeben !MESSAGE durch Definieren des Makros CFG in der Befehlszeile. Zum Beispiel: !MESSAGE !MESSAGE NMAKE /f "jInterface.mak" CFG="jInterface - Win32 Debug" !MESSAGE !MESSAGE Für die Konfiguration stehen zur Auswahl: !MESSAGE !MESSAGE "jInterface - Win32 Release" (basierend auf "Win32 (x86) Dynamic-Link Library") !MESSAGE "jInterface - Win32 Debug" (basierend auf "Win32 (x86) Dynamic-Link Library") !MESSAGE # Begin Project # PROP AllowPerConfigDependencies 0 # PROP Scc_ProjName "" # PROP Scc_LocalPath "" CPP=cl.exe MTL=midl.exe RSC=rc.exe !IF "$(CFG)" == "jInterface - Win32 Release" # PROP BASE Use_MFC 0 # PROP BASE Use_Debug_Libraries 0 # PROP BASE Output_Dir "Release" # PROP BASE Intermediate_Dir "Release" # PROP BASE Target_Dir "" # PROP Use_MFC 0 # PROP Use_Debug_Libraries 0 # PROP Output_Dir "Release" # PROP Intermediate_Dir "Release" # PROP Ignore_Export_Lib 0 # PROP Target_Dir "" # ADD BASE CPP /nologo /MT /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /YX /FD /c # ADD CPP /nologo /MT /W3 /GX /O2 /I "\jdk142\include" /I "\jdk142\include\win32" /I "..\..\openssl-0.9.6i\lib" /I "include" /I "..\..\dcmtk\dcmpstat\include" /I "..\..\dcmtk\config\include" /I "..\..\dcmtk\ofstd\include" /I "..\..\dcmtk\dcmdata\include" /I "..\..\dcmtk\dcmimgle\include" /I "..\..\dcmtk\imagectn\include" /I "..\..\dcmtk\dcmnet\include" /I "..\..\dcmtk\dcmsr\include" /I "..\..\dcmtk\dcmsign\include" /I "..\..\dcmtk\dcmjpeg\include" /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /YX /FD /c # ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /o "NUL" /win32 # ADD MTL /nologo /D "NDEBUG" /mktyplib203 /o "NUL" /win32 # ADD BASE RSC /l 0x409 /d "NDEBUG" # ADD RSC /l 0x409 /d "NDEBUG" BSC32=bscmake.exe # ADD BASE BSC32 /nologo # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib wsock32.lib dcmpstat.lib dcmimgle.lib ofstd.lib dcmnet.lib dcmdata.lib imagedb.lib dcmsr.lib /nologo /subsystem:windows /dll /machine:I386 # ADD LINK32 zlib_o.lib libeay32_o.lib ssleay32_o.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib wsock32.lib netapi32.lib dcmpstat.lib dcmimgle.lib ofstd.lib dcmtls.lib dcmnet.lib dcmdata.lib imagedb.lib dcmsr.lib dcmdsig.lib dcmjpeg.lib ijg8.lib ijg12.lib ijg16.lib /nologo /subsystem:windows /dll /machine:I386 /libpath:"..\..\zlib-1.1.4\lib" /libpath:"..\..\openssl-0.9.6i\lib" /libpath:"..\..\dcmtk\dcmdata\libsrc\Release" /libpath:"..\..\dcmtk\ofstd\libsrc\Release" /libpath:"..\..\dcmtk\dcmimgle\libsrc\Release" /libpath:"..\..\dcmtk\dcmtls\libsrc\Release" /libpath:"..\..\dcmtk\dcmnet\libsrc\Release" /libpath:"..\..\dcmtk\dcmpstat\libsrc\Release" /libpath:"..\..\dcmtk\imagectn\libsrc\Release" /libpath:"..\..\dcmtk\dcmsr\libsrc\Release" /libpath:"..\..\dcmtk\dcmsign\libsrc\Release" /libpath:"..\..\dcmtk\dcmjpeg\libsrc\Release" /libpath:"..\..\dcmtk\dcmjpeg\libijg8\Release" /libpath:"..\..\dcmtk\dcmjpeg\libijg12\Release" /libpath:"..\..\dcmtk\dcmjpeg\libijg16\Release" # SUBTRACT LINK32 /pdb:none !ELSEIF "$(CFG)" == "jInterface - Win32 Debug" # PROP BASE Use_MFC 0 # PROP BASE Use_Debug_Libraries 1 # PROP BASE Output_Dir "Debug" # PROP BASE Intermediate_Dir "Debug" # PROP BASE Target_Dir "" # PROP Use_MFC 0 # PROP Use_Debug_Libraries 1 # PROP Output_Dir "Debug" # PROP Intermediate_Dir "Debug" # PROP Ignore_Export_Lib 0 # PROP Target_Dir "" # ADD BASE CPP /nologo /MTd /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /YX /FD /c # ADD CPP /nologo /MT /W3 /GX /O2 /I "\jdk142\include" /I "\jdk142\include\win32" /I "..\..\openssl-0.9.6i\lib" /I "include" /I "..\..\dcmtk\dcmpstat\include" /I "..\..\dcmtk\config\include" /I "..\..\dcmtk\ofstd\include" /I "..\..\dcmtk\dcmdata\include" /I "..\..\dcmtk\dcmimgle\include" /I "..\..\dcmtk\imagectn\include" /I "..\..\dcmtk\dcmnet\include" /I "..\..\dcmtk\dcmsr\include" /I "..\..\dcmtk\dcmsign\include" /I "..\..\dcmtk\dcmjpeg\include" /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /YX /FD /c # ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /o "NUL" /win32 # ADD MTL /nologo /D "_DEBUG" /mktyplib203 /o "NUL" /win32 # ADD BASE RSC /l 0x409 /d "_DEBUG" # ADD RSC /l 0x409 /d "_DEBUG" BSC32=bscmake.exe # ADD BASE BSC32 /nologo # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib wsock32.lib dcmpstat.lib dcmimgle.lib ofstd.lib dcmnet.lib dcmdata.lib imagedb.lib dcmsr.lib /nologo /subsystem:windows /dll /machine:I386 # ADD LINK32 zlib_d.lib libeay32_d.lib ssleay32_d.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib wsock32.lib netapi32.lib dcmpstat.lib dcmimgle.lib ofstd.lib dcmtls.lib dcmnet.lib dcmdata.lib imagedb.lib dcmsr.lib dcmdsig.lib dcmjpeg.lib ijg8.lib ijg12.lib ijg16.lib /nologo /subsystem:windows /dll /machine:I386 /libpath:"..\..\zlib-1.1.4\lib" /libpath:"..\..\openssl-0.9.6i\lib" /libpath:"..\..\dcmtk\dcmdata\libsrc\Debug" /libpath:"..\..\dcmtk\ofstd\libsrc\Debug" /libpath:"..\..\dcmtk\dcmimgle\libsrc\Debug" /libpath:"..\..\dcmtk\dcmtls\libsrc\Debug" /libpath:"..\..\dcmtk\dcmnet\libsrc\Debug" /libpath:"..\..\dcmtk\dcmpstat\libsrc\Debug" /libpath:"..\..\dcmtk\imagectn\libsrc\Debug" /libpath:"..\..\dcmtk\dcmsr\libsrc\Debug" /libpath:"..\..\dcmtk\dcmsign\libsrc\Debug" /libpath:"..\..\dcmtk\dcmjpeg\libsrc\Debug" /libpath:"..\..\dcmtk\dcmjpeg\libijg8\Debug" /libpath:"..\..\dcmtk\dcmjpeg\libijg12\Debug" /libpath:"..\..\dcmtk\dcmjpeg\libijg16\Debug" # SUBTRACT LINK32 /pdb:none !ENDIF # Begin Target # Name "jInterface - Win32 Release" # Name "jInterface - Win32 Debug" # Begin Source File SOURCE=.\libsrc\DSRCodeValue.cpp # End Source File # Begin Source File SOURCE=.\libsrc\DSRCompositeValue.cpp # End Source File # Begin Source File SOURCE=.\libsrc\DSRDocument.cpp # End Source File # Begin Source File SOURCE=.\libsrc\DSRDocumentTree.cpp # End Source File # Begin Source File SOURCE=.\libsrc\DSRImageValue.cpp # End Source File # Begin Source File SOURCE=.\libsrc\DSRNumericValue.cpp # End Source File # Begin Source File SOURCE=.\libsrc\DSRSCoordValue.cpp # End Source File # Begin Source File SOURCE=.\libsrc\DSRTCoordValue.cpp # End Source File # Begin Source File SOURCE=.\libsrc\DSRWaveformValue.cpp # End Source File # Begin Source File SOURCE=.\libsrc\DVInterface.cpp # End Source File # Begin Source File SOURCE=.\libsrc\DVPresentationState.cpp # End Source File # Begin Source File SOURCE=.\libsrc\DVPSCurve.cpp # End Source File # Begin Source File SOURCE=.\libsrc\DVPSGraphicObject.cpp # End Source File # Begin Source File SOURCE=.\libsrc\DVPSStoredPrint.cpp # End Source File # Begin Source File SOURCE=.\libsrc\DVPSTextObject.cpp # End Source File # End Target # End Project dicomscope-3.6.0/interface/jInterface.dsw0000644000265600020320000000107307575102162017530 0ustar tilleaadminMicrosoft Developer Studio Workspace File, Format Version 6.00 # WARNUNG: DIESE ARBEITSBEREICHSDATEI DARF NICHT BEARBEITET ODER GELÖSCHT WERDEN! ############################################################################### Project: "jInterface"=.\jInterface.dsp - Package Owner=<4> Package=<5> {{{ }}} Package=<4> {{{ }}} ############################################################################### Global: Package=<5> {{{ }}} Package=<3> {{{ }}} ############################################################################### dicomscope-3.6.0/interface/libsrc/0002755000265600020320000000000011262371102016204 5ustar tilleaadmindicomscope-3.6.0/interface/libsrc/DSRCodeValue.cpp0000644000265600020320000001433411262371102021133 0ustar tilleaadmin/* * * Copyright (C) 2000-2003, OFFIS and Institute for MicroTherapy * * This software and supporting documentation were developed by * * Kuratorium OFFIS e.V. * Healthcare Information and Communication Systems * Escherweg 2 * D-26121 Oldenburg, Germany * * and * * University of Witten/Herdecke * Department of Radiology and MicroTherapy * Institute for MicroTherapy * Medical computer science * * Universitaetsstrasse 142 * 44799 Bochum, Germany * * http://www.microtherapy.de/go/cs * mailto:computer.science@microtherapy.de * * THIS SOFTWARE IS MADE AVAILABLE, AS IS, AND THE INSTITUTE MAKES NO * WARRANTY REGARDING THE SOFTWARE, ITS PERFORMANCE, ITS MERCHANTABILITY * OR FITNESS FOR ANY PARTICULAR USE, FREEDOM FROM ANY COMPUTER DISEASES * OR ITS CONFORMITY TO ANY SPECIFICATION. THE ENTIRE RISK AS TO QUALITY * AND PERFORMANCE OF THE SOFTWARE IS WITH THE USER. * * Author : $Author: $ * Last update : $Date: $ * Revision : $Revision: $ * State: $State: $ */ #include "J2Ci_jDSRCodeValue.h" #include "jInterface.h" static inline DSRCodedEntryValue *getAddressOfDSRCodedEntryValue (JNIEnv *env, jobject obj) { jclass cls = env->GetObjectClass (obj); jfieldID fid = env->GetFieldID (cls, "cppClassAddress", "J"); if (fid == 0) exit (-1); return (DSRCodedEntryValue *) env->GetLongField (obj, fid); } static inline void setAddressOfDSRCodedEntryValue (JNIEnv *env, jobject obj, DSRCodedEntryValue *ptr) { jclass cls = env->GetObjectClass (obj); jfieldID fid = env->GetFieldID (cls, "cppClassAddress", "J"); if (fid == 0) exit (-1); env->SetLongField (obj, fid, (jlong) ptr); } // --------------------------- native methods ------------------------------ /* * Class: J2Ci_jDSRCodeValue * Method: clear * Signature: ()V */ JNIEXPORT void JNICALL Java_J2Ci_jDSRCodeValue_clear (JNIEnv *env, jobject obj) { DSRCodedEntryValue *cod = getAddressOfDSRCodedEntryValue (env, obj); cod->clear(); } /* * Class: J2Ci_jDSRCodeValue * Method: isValid * Signature: ()I */ JNIEXPORT jint JNICALL Java_J2Ci_jDSRCodeValue_isValid (JNIEnv *env, jobject obj) { DSRCodedEntryValue *cod = getAddressOfDSRCodedEntryValue (env, obj); return (jint) cod->isValid(); } /* * Class: J2Ci_jDSRCodeValue * Method: isEmpty * Signature: ()I */ JNIEXPORT jint JNICALL Java_J2Ci_jDSRCodeValue_isEmpty (JNIEnv *env, jobject obj) { DSRCodedEntryValue *cod = getAddressOfDSRCodedEntryValue (env, obj); return (jint) cod->isEmpty(); } /* * Class: J2Ci_jDSRCodeValue * Method: getCodeValue * Signature: ()Ljava/lang/String; */ JNIEXPORT jstring JNICALL Java_J2Ci_jDSRCodeValue_getCodeValue (JNIEnv *env, jobject obj) { DSRCodedEntryValue *cod = getAddressOfDSRCodedEntryValue (env, obj); const char *string = cod->getCodeValue().c_str(); if (string == NULL) return NULL; return env->NewStringUTF (string); } /* * Class: J2Ci_jDSRCodeValue * Method: getCodingSchemeDesignator * Signature: ()Ljava/lang/String; */ JNIEXPORT jstring JNICALL Java_J2Ci_jDSRCodeValue_getCodingSchemeDesignator (JNIEnv *env, jobject obj) { DSRCodedEntryValue *cod = getAddressOfDSRCodedEntryValue (env, obj); const char *string = cod->getCodingSchemeDesignator().c_str(); if (string == NULL) return NULL; return env->NewStringUTF (string); } /* * Class: J2Ci_jDSRCodeValue * Method: getCodingSchemeVersion * Signature: ()Ljava/lang/String; */ JNIEXPORT jstring JNICALL Java_J2Ci_jDSRCodeValue_getCodingSchemeVersion (JNIEnv *env, jobject obj) { DSRCodedEntryValue *cod = getAddressOfDSRCodedEntryValue (env, obj); const char *string = cod->getCodingSchemeVersion().c_str(); if (string == NULL) return NULL; return env->NewStringUTF (string); } /* * Class: J2Ci_jDSRCodeValue * Method: getCodeMeaning * Signature: ()Ljava/lang/String; */ JNIEXPORT jstring JNICALL Java_J2Ci_jDSRCodeValue_getCodeMeaning (JNIEnv *env, jobject obj) { DSRCodedEntryValue *cod = getAddressOfDSRCodedEntryValue (env, obj); const char *string = cod->getCodeMeaning().c_str(); if (string == NULL) return NULL; return env->NewStringUTF (string); } /* * Class: J2Ci_jDSRCodeValue * Method: setCode * Signature: (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)I */ JNIEXPORT jint JNICALL Java_J2Ci_jDSRCodeValue_setCode (JNIEnv *env, jobject obj, jstring codeValue, jstring codingSchemeDesignator, jstring codingSchemeVersion, jstring codeMeaning) { DSRCodedEntryValue *cod = getAddressOfDSRCodedEntryValue (env, obj); OFCondition res = EC_IllegalCall; jmethodID mid = env->GetMethodID(env->FindClass("java/lang/String"), "getBytes", "(Ljava/lang/String;)[B"); if (mid) { jstring encoding = env->NewStringUTF(JAVA_ENCODING_STRING); jbyteArray array1 = (jbyteArray) env->CallObjectMethod(codeValue, mid, encoding); jbyteArray array2 = (jbyteArray) env->CallObjectMethod(codingSchemeDesignator, mid, encoding); jbyteArray array3 = (jbyteArray) env->CallObjectMethod(codingSchemeVersion, mid, encoding); jbyteArray array4 = (jbyteArray) env->CallObjectMethod(codeMeaning, mid, encoding); if (array1 && array2 && array3 && array4) { jbyte *string1 = env->GetByteArrayElements(array1, 0); jbyte *string2 = env->GetByteArrayElements(array2, 0); jbyte *string3 = env->GetByteArrayElements(array3, 0); jbyte *string4 = env->GetByteArrayElements(array4, 0); res = cod->setCode(OFString((char *)string1, env->GetArrayLength(array1)), OFString((char *)string2, env->GetArrayLength(array2)), OFString((char *)string3, env->GetArrayLength(array3)), OFString((char *)string4, env->GetArrayLength(array4))); env->ReleaseByteArrayElements(array1, string1, 0); env->ReleaseByteArrayElements(array2, string2, 0); env->ReleaseByteArrayElements(array3, string3, 0); env->ReleaseByteArrayElements(array4, string4, 0); } } return (jint) res.status(); } /* * CVS Log * $Log: $ * */ dicomscope-3.6.0/interface/libsrc/DSRCompositeValue.cpp0000644000265600020320000001042111262371102022214 0ustar tilleaadmin/* * * Copyright (C) 2000-2003, OFFIS and Institute for MicroTherapy * * This software and supporting documentation were developed by * * Kuratorium OFFIS e.V. * Healthcare Information and Communication Systems * Escherweg 2 * D-26121 Oldenburg, Germany * * and * * University of Witten/Herdecke * Department of Radiology and MicroTherapy * Institute for MicroTherapy * Medical computer science * * Universitaetsstrasse 142 * 44799 Bochum, Germany * * http://www.microtherapy.de/go/cs * mailto:computer.science@microtherapy.de * * THIS SOFTWARE IS MADE AVAILABLE, AS IS, AND THE INSTITUTE MAKES NO * WARRANTY REGARDING THE SOFTWARE, ITS PERFORMANCE, ITS MERCHANTABILITY * OR FITNESS FOR ANY PARTICULAR USE, FREEDOM FROM ANY COMPUTER DISEASES * OR ITS CONFORMITY TO ANY SPECIFICATION. THE ENTIRE RISK AS TO QUALITY * AND PERFORMANCE OF THE SOFTWARE IS WITH THE USER. * * Author : $Author: $ * Last update : $Date: $ * Revision : $Revision: $ * State: $State: $ */ #include "J2Ci_jDSRCompositeValue.h" #include "jInterface.h" static inline DSRCompositeReferenceValue *getAddressOfDSRCompositeReferenceValue (JNIEnv *env, jobject obj) { jclass cls = env->GetObjectClass (obj); jfieldID fid = env->GetFieldID (cls, "cppClassAddress", "J"); if (fid == 0) exit (-1); return (DSRCompositeReferenceValue *) env->GetLongField (obj, fid); } static inline void setAddressOfDSRCompositeReferenceValue (JNIEnv *env, jobject obj, DSRCompositeReferenceValue *ptr) { jclass cls = env->GetObjectClass (obj); jfieldID fid = env->GetFieldID (cls, "cppClassAddress", "J"); if (fid == 0) exit (-1); env->SetLongField (obj, fid, (jlong) ptr); } // --------------------------- native methods ------------------------------ /* * Class: J2Ci_jDSRCompositeValue * Method: getSOPClassUID * Signature: ()Ljava/lang/String; */ JNIEXPORT jstring JNICALL Java_J2Ci_jDSRCompositeValue_getSOPClassUID (JNIEnv *env, jobject obj) { DSRCompositeReferenceValue *ref = getAddressOfDSRCompositeReferenceValue (env, obj); const char *string = ref->getSOPClassUID().c_str(); if (string == NULL) return NULL; return env->NewStringUTF (string); } /* * Class: J2Ci_jDSRCompositeValue * Method: getSOPClassName * Signature: ()Ljava/lang/String; */ JNIEXPORT jstring JNICALL Java_J2Ci_jDSRCompositeValue_getSOPClassName (JNIEnv *env, jobject obj) { DSRCompositeReferenceValue *ref = getAddressOfDSRCompositeReferenceValue (env, obj); const char *uid = ref->getSOPClassUID().c_str(); if ((uid != NULL) && (strlen(uid) > 0)) { const char *name = dcmFindNameOfUID(uid); if (name == NULL) { OFString string = "unknown SOP class"; if (uid != NULL) { string += " ("; string += uid; string += ")"; } return env->NewStringUTF (string.c_str()); return env->NewStringUTF (name); } } return env->NewStringUTF (""); } /* * Class: J2Ci_jDSRCompositeValue * Method: getSOPInstanceUID * Signature: ()Ljava/lang/String; */ JNIEXPORT jstring JNICALL Java_J2Ci_jDSRCompositeValue_getSOPInstanceUID (JNIEnv *env, jobject obj) { DSRCompositeReferenceValue *ref = getAddressOfDSRCompositeReferenceValue (env, obj); const char *string = ref->getSOPInstanceUID().c_str(); if (string == NULL) return NULL; return env->NewStringUTF (string); } /* * Class: J2Ci_jDSRCompositeValue * Method: setReference * Signature: (Ljava/lang/String;Ljava/lang/String;)I */ JNIEXPORT jint JNICALL Java_J2Ci_jDSRCompositeValue_setReference (JNIEnv *env, jobject obj, jstring sopClassUID, jstring sopInstanceUID) { DSRCompositeReferenceValue *ref = getAddressOfDSRCompositeReferenceValue (env, obj); char *string1 = (sopClassUID) ? (char *) env->GetStringUTFChars (sopClassUID, 0) : NULL; char *string2 = (sopInstanceUID) ? (char *) env->GetStringUTFChars (sopInstanceUID, 0) : NULL; OFCondition res = ref->setReference(string1, string2); env->ReleaseStringUTFChars (sopClassUID, string1); env->ReleaseStringUTFChars (sopInstanceUID, string2); return (jint) res.status(); } /* * CVS Log * $Log: $ * */ dicomscope-3.6.0/interface/libsrc/DSRDocument.cpp0000644000265600020320000011121711262371102021040 0ustar tilleaadmin/* * * Copyright (C) 2000-2003, OFFIS and Institute for MicroTherapy * * This software and supporting documentation were developed by * * Kuratorium OFFIS e.V. * Healthcare Information and Communication Systems * Escherweg 2 * D-26121 Oldenburg, Germany * * and * * University of Witten/Herdecke * Department of Radiology and MicroTherapy * Institute for MicroTherapy * Medical computer science * * Universitaetsstrasse 142 * 44799 Bochum, Germany * * http://www.microtherapy.de/go/cs * mailto:computer.science@microtherapy.de * * THIS SOFTWARE IS MADE AVAILABLE, AS IS, AND THE INSTITUTE MAKES NO * WARRANTY REGARDING THE SOFTWARE, ITS PERFORMANCE, ITS MERCHANTABILITY * OR FITNESS FOR ANY PARTICULAR USE, FREEDOM FROM ANY COMPUTER DISEASES * OR ITS CONFORMITY TO ANY SPECIFICATION. THE ENTIRE RISK AS TO QUALITY * AND PERFORMANCE OF THE SOFTWARE IS WITH THE USER. * * Author : $Author: $ * Last update : $Date: $ * Revision : $Revision: $ * State: $State: $ */ #include "J2Ci_jDSRDocument.h" #include "jInterface.h" #include "ofstream.h" static inline DSRDocument *getAddressOfDSRDocument (JNIEnv *env, jobject obj) { jclass cls = env->GetObjectClass (obj); jfieldID fid = env->GetFieldID (cls, "cppClassAddress", "J"); if (fid == 0) exit (-1); return (DSRDocument *) env->GetLongField (obj, fid); } static inline void setAddressOfDSRDocument (JNIEnv *env, jobject obj, DSRDocument *ptr) { jclass cls = env->GetObjectClass (obj); jfieldID fid = env->GetFieldID (cls, "cppClassAddress", "J"); if (fid == 0) exit (-1); env->SetLongField (obj, fid, (jlong) ptr); } // --------------------------- native methods ------------------------------ /* * Class: J2Ci_jDSRDocument * Method: isValid * Signature: ()Z */ JNIEXPORT jboolean JNICALL Java_J2Ci_jDSRDocument_isValid (JNIEnv *env, jobject obj) { DSRDocument *doc = getAddressOfDSRDocument (env, obj); return (jboolean) doc->isValid(); } /* * Class: J2Ci_jDSRDocument * Method: isFinalized * Signature: ()Z */ JNIEXPORT jboolean JNICALL Java_J2Ci_jDSRDocument_isFinalized (JNIEnv *env, jobject obj) { DSRDocument *doc = getAddressOfDSRDocument (env, obj); return (jboolean) doc->isFinalized(); } /* * Class: J2Ci_jDSRDocument * Method: renderHTML * Signature: (LJ2Ci/jStringByRef;I)I */ JNIEXPORT jint JNICALL Java_J2Ci_jDSRDocument_renderHTML (JNIEnv *env, jobject obj, jobject outputString, jint flags) { DSRDocument *doc = getAddressOfDSRDocument (env, obj); /* create local string stream */ OFOStringStream oss; OFCondition res = doc->renderHTML(oss, flags | DSRTypes::HF_version32Compatibility | DSRTypes::HF_renderFullData); OFSTRINGSTREAM_GETSTR(oss, tmpString) if (res == EC_Normal) { /* should never be NULL */ if (tmpString != NULL) { jfieldID value = env->GetFieldID (env->GetObjectClass (outputString), "value", "Ljava/lang/String;"); env->SetObjectField (outputString, value, env->NewStringUTF (tmpString)); } } OFSTRINGSTREAM_FREESTR(tmpString) return (jint) res.status(); } /* * Class: J2Ci_jDSRDocument * Method: getDocumentType * Signature: ()I */ JNIEXPORT jint JNICALL Java_J2Ci_jDSRDocument_getDocumentType (JNIEnv *env, jobject obj) { DSRDocument *doc = getAddressOfDSRDocument (env, obj); return (jint) doc->getDocumentType(); } /* * Class: J2Ci_jDSRDocument * Method: getTreeN * Signature: ()J */ JNIEXPORT jlong JNICALL Java_J2Ci_jDSRDocument_getTreeN (JNIEnv *env, jobject obj) { DSRDocument *doc = getAddressOfDSRDocument (env, obj); DSRDocumentTree *tree = &(doc->getTree ()); return (jlong) tree; } /* * Class: J2Ci_jDSRDocument * Method: getSpecificCharacterSetType * Signature: ()I */ JNIEXPORT jint JNICALL Java_J2Ci_jDSRDocument_getSpecificCharacterSetType (JNIEnv *env, jobject obj) { DSRDocument *doc = getAddressOfDSRDocument (env, obj); return (jint) doc->getSpecificCharacterSetType(); } /* * Class: J2Ci_jDSRDocument * Method: setSpecificCharacterSetType * Signature: (I)I */ JNIEXPORT jint JNICALL Java_J2Ci_jDSRDocument_setSpecificCharacterSetType (JNIEnv *env, jobject obj, jint characterSet) { DSRDocument *doc = getAddressOfDSRDocument (env, obj); return (jint) doc->setSpecificCharacterSetType((DSRTypes::E_CharacterSet)characterSet).status(); } /* * Class: J2Ci_jDSRDocument * Method: getCompletionFlag * Signature: ()I */ JNIEXPORT jint JNICALL Java_J2Ci_jDSRDocument_getCompletionFlag (JNIEnv *env, jobject obj) { DSRDocument *doc = getAddressOfDSRDocument (env, obj); return (jint) doc->getCompletionFlag(); } /* * Class: J2Ci_jDSRDocument * Method: getCompletionFlagDescription * Signature: ()Ljava/lang/String; */ JNIEXPORT jstring JNICALL Java_J2Ci_jDSRDocument_getCompletionFlagDescription (JNIEnv *env, jobject obj) { DSRDocument *doc = getAddressOfDSRDocument (env, obj); const char *string = doc->getCompletionFlagDescription(); if (string == NULL) return NULL; return env->NewStringUTF (string); } /* * Class: J2Ci_jDSRDocument * Method: getVerificationFlag * Signature: ()I */ JNIEXPORT jint JNICALL Java_J2Ci_jDSRDocument_getVerificationFlag (JNIEnv *env, jobject obj) { DSRDocument *doc = getAddressOfDSRDocument (env, obj); return (jint) doc->getVerificationFlag(); } /* * Class: J2Ci_jDSRDocument * Method: getNumberOfVerifyingObservers * Signature: ()I */ JNIEXPORT jint JNICALL Java_J2Ci_jDSRDocument_getNumberOfVerifyingObservers (JNIEnv *env, jobject obj) { DSRDocument *doc = getAddressOfDSRDocument (env, obj); return (jint) doc->getNumberOfVerifyingObservers(); } /* * Class: J2Ci_jDSRDocument * Method: getVerifyingObserver * Signature: (ILJ2Ci/jStringByRef;LJ2Ci/jStringByRef;LJ2Ci/jStringByRef;)I */ JNIEXPORT jint JNICALL Java_J2Ci_jDSRDocument_getVerifyingObserver__ILJ2Ci_jStringByRef_2LJ2Ci_jStringByRef_2LJ2Ci_jStringByRef_2 (JNIEnv *env, jobject obj, jint idx, jobject dateTime, jobject obsName, jobject obsOrganization) { DSRDocument *doc = getAddressOfDSRDocument (env, obj); OFString dtStr, onStr, ooStr; OFCondition res = doc->getVerifyingObserver((size_t)idx, dtStr, onStr, ooStr); jfieldID dtValue = env->GetFieldID (env->GetObjectClass(dateTime), "value", "Ljava/lang/String;"); jfieldID onValue = env->GetFieldID (env->GetObjectClass(obsName), "value", "Ljava/lang/String;"); jfieldID ooValue = env->GetFieldID (env->GetObjectClass(obsOrganization), "value", "Ljava/lang/String;"); env->SetObjectField (dateTime, dtValue, env->NewStringUTF (dtStr.c_str())); env->SetObjectField (obsName, onValue, env->NewStringUTF (onStr.c_str())); env->SetObjectField (obsOrganization, ooValue, env->NewStringUTF (ooStr.c_str())); return (jint) res.status(); } /* * Class: J2Ci_jDSRDocument * Method: getVerifyingObserver * Signature: (ILJ2Ci/jStringByRef;LJ2Ci/jStringByRef;LJ2Ci/jStringByRef;LJ2Ci/jStringByRef;LJ2Ci/jStringByRef;LJ2Ci/jStringByRef;LJ2Ci/jStringByRef;)I */ JNIEXPORT jint JNICALL Java_J2Ci_jDSRDocument_getVerifyingObserver__ILJ2Ci_jStringByRef_2LJ2Ci_jStringByRef_2LJ2Ci_jStringByRef_2LJ2Ci_jStringByRef_2LJ2Ci_jStringByRef_2LJ2Ci_jStringByRef_2LJ2Ci_jStringByRef_2 (JNIEnv *env, jobject obj, jint idx, jobject dateTime, jobject obsName, jobject obsCV, jobject obsCSD, jobject obsCSV, jobject obsCM, jobject obsOrganization) { DSRDocument *doc = getAddressOfDSRDocument (env, obj); OFString dtStr, onStr, ooStr; DSRCodedEntryValue code; OFCondition res = doc->getVerifyingObserver((size_t)idx, dtStr, onStr, code, ooStr); jfieldID dtValue = env->GetFieldID (env->GetObjectClass(dateTime), "value", "Ljava/lang/String;"); jfieldID onValue = env->GetFieldID (env->GetObjectClass(obsName), "value", "Ljava/lang/String;"); jfieldID cvValue = env->GetFieldID (env->GetObjectClass(obsCV), "value", "Ljava/lang/String;"); jfieldID csdValue = env->GetFieldID (env->GetObjectClass(obsCSD), "value", "Ljava/lang/String;"); jfieldID csvValue = env->GetFieldID (env->GetObjectClass(obsCSV), "value", "Ljava/lang/String;"); jfieldID cmValue = env->GetFieldID (env->GetObjectClass(obsCM), "value", "Ljava/lang/String;"); jfieldID ooValue = env->GetFieldID (env->GetObjectClass(obsOrganization), "value", "Ljava/lang/String;"); env->SetObjectField (dateTime, dtValue, env->NewStringUTF (dtStr.c_str())); env->SetObjectField (obsName, onValue, env->NewStringUTF (onStr.c_str())); env->SetObjectField (obsCV, cvValue, env->NewStringUTF (code.getCodeValue().c_str())); env->SetObjectField (obsCSD, csdValue, env->NewStringUTF (code.getCodingSchemeDesignator().c_str())); env->SetObjectField (obsCSV, csvValue, env->NewStringUTF (code.getCodingSchemeVersion().c_str())); env->SetObjectField (obsCM, cmValue, env->NewStringUTF (code.getCodeMeaning().c_str())); env->SetObjectField (obsOrganization, ooValue, env->NewStringUTF (ooStr.c_str())); return (jint) res.status(); } /* * Class: J2Ci_jDSRDocument * Method: getNumberOfPredecessorDocuments * Signature: ()I */ JNIEXPORT jint JNICALL Java_J2Ci_jDSRDocument_getNumberOfPredecessorDocuments (JNIEnv *env, jobject obj) { DSRDocument *doc = getAddressOfDSRDocument (env, obj); return (jint) doc->getPredecessorDocuments().getNumberOfInstances(); } /* * Class: J2Ci_jDSRDocument * Method: getModality * Signature: ()Ljava/lang/String; */ JNIEXPORT jstring JNICALL Java_J2Ci_jDSRDocument_getModality (JNIEnv *env, jobject obj) { DSRDocument *doc = getAddressOfDSRDocument (env, obj); const char *string = doc->getModality(); if (string == NULL) return NULL; return env->NewStringUTF (string); } /* * Class: J2Ci_jDSRDocument * Method: getSOPClassUID * Signature: ()Ljava/lang/String; */ JNIEXPORT jstring JNICALL Java_J2Ci_jDSRDocument_getSOPClassUID (JNIEnv *env, jobject obj) { DSRDocument *doc = getAddressOfDSRDocument (env, obj); const char *string = doc->getSOPClassUID(); if (string == NULL) return NULL; return env->NewStringUTF (string); } /* * Class: J2Ci_jDSRDocument * Method: getStudyInstanceUID * Signature: ()Ljava/lang/String; */ JNIEXPORT jstring JNICALL Java_J2Ci_jDSRDocument_getStudyInstanceUID (JNIEnv *env, jobject obj) { DSRDocument *doc = getAddressOfDSRDocument (env, obj); const char *string = doc->getStudyInstanceUID(); if (string == NULL) return NULL; return env->NewStringUTF (string); } /* * Class: J2Ci_jDSRDocument * Method: getSeriesInstanceUID * Signature: ()Ljava/lang/String; */ JNIEXPORT jstring JNICALL Java_J2Ci_jDSRDocument_getSeriesInstanceUID (JNIEnv *env, jobject obj) { DSRDocument *doc = getAddressOfDSRDocument (env, obj); const char *string = doc->getSeriesInstanceUID(); if (string == NULL) return NULL; return env->NewStringUTF (string); } /* * Class: J2Ci_jDSRDocument * Method: getSOPInstanceUID * Signature: ()Ljava/lang/String; */ JNIEXPORT jstring JNICALL Java_J2Ci_jDSRDocument_getSOPInstanceUID (JNIEnv *env, jobject obj) { DSRDocument *doc = getAddressOfDSRDocument (env, obj); const char *string = doc->getSOPInstanceUID(); if (string == NULL) return NULL; return env->NewStringUTF (string); } /* * Class: J2Ci_jDSRDocument * Method: getInstanceCreatorUID * Signature: ()Ljava/lang/String; */ JNIEXPORT jstring JNICALL Java_J2Ci_jDSRDocument_getInstanceCreatorUID (JNIEnv *env, jobject obj) { DSRDocument *doc = getAddressOfDSRDocument (env, obj); const char *string = doc->getInstanceCreatorUID(); if (string == NULL) return NULL; return env->NewStringUTF (string); } /* * Class: J2Ci_jDSRDocument * Method: getSpecificCharacterSet * Signature: ()Ljava/lang/String; */ JNIEXPORT jstring JNICALL Java_J2Ci_jDSRDocument_getSpecificCharacterSet (JNIEnv *env, jobject obj) { DSRDocument *doc = getAddressOfDSRDocument (env, obj); const char *string = doc->getSpecificCharacterSet(); if (string == NULL) return NULL; return env->NewStringUTF (string); } /* * Class: J2Ci_jDSRDocument * Method: getPatientsName * Signature: ()Ljava/lang/String; */ JNIEXPORT jstring JNICALL Java_J2Ci_jDSRDocument_getPatientsName (JNIEnv *env, jobject obj) { DSRDocument *doc = getAddressOfDSRDocument (env, obj); const char *string = doc->getPatientsName(); if (string == NULL) return NULL; return env->NewStringUTF (string); } /* * Class: J2Ci_jDSRDocument * Method: getPatientsBirthDate * Signature: ()Ljava/lang/String; */ JNIEXPORT jstring JNICALL Java_J2Ci_jDSRDocument_getPatientsBirthDate (JNIEnv *env, jobject obj) { DSRDocument *doc = getAddressOfDSRDocument (env, obj); const char *string = doc->getPatientsBirthDate(); if (string == NULL) return NULL; return env->NewStringUTF (string); } /* * Class: J2Ci_jDSRDocument * Method: getPatientsSex * Signature: ()Ljava/lang/String; */ JNIEXPORT jstring JNICALL Java_J2Ci_jDSRDocument_getPatientsSex (JNIEnv *env, jobject obj) { DSRDocument *doc = getAddressOfDSRDocument (env, obj); const char *string = doc->getPatientsSex(); if (string == NULL) return NULL; return env->NewStringUTF (string); } /* * Class: J2Ci_jDSRDocument * Method: getReferringPhysiciansName * Signature: ()Ljava/lang/String; */ JNIEXPORT jstring JNICALL Java_J2Ci_jDSRDocument_getReferringPhysiciansName (JNIEnv *env, jobject obj) { DSRDocument *doc = getAddressOfDSRDocument (env, obj); const char *string = doc->getReferringPhysiciansName(); if (string == NULL) return NULL; return env->NewStringUTF (string); } /* * Class: J2Ci_jDSRDocument * Method: getStudyDescription * Signature: ()Ljava/lang/String; */ JNIEXPORT jstring JNICALL Java_J2Ci_jDSRDocument_getStudyDescription (JNIEnv *env, jobject obj) { DSRDocument *doc = getAddressOfDSRDocument (env, obj); const char *string = doc->getStudyDescription(); if (string == NULL) return NULL; return env->NewStringUTF (string); } /* * Class: J2Ci_jDSRDocument * Method: getSeriesDescription * Signature: ()Ljava/lang/String; */ JNIEXPORT jstring JNICALL Java_J2Ci_jDSRDocument_getSeriesDescription (JNIEnv *env, jobject obj) { DSRDocument *doc = getAddressOfDSRDocument (env, obj); const char *string = doc->getSeriesDescription(); if (string == NULL) return NULL; return env->NewStringUTF (string); } /* * Class: J2Ci_jDSRDocument * Method: getManufacturer * Signature: ()Ljava/lang/String; */ JNIEXPORT jstring JNICALL Java_J2Ci_jDSRDocument_getManufacturer (JNIEnv *env, jobject obj) { DSRDocument *doc = getAddressOfDSRDocument (env, obj); const char *string = doc->getManufacturer(); if (string == NULL) return NULL; return env->NewStringUTF (string); } /* * Class: J2Ci_jDSRDocument * Method: getStudyDate * Signature: ()Ljava/lang/String; */ JNIEXPORT jstring JNICALL Java_J2Ci_jDSRDocument_getStudyDate (JNIEnv *env, jobject obj) { DSRDocument *doc = getAddressOfDSRDocument (env, obj); const char *string = doc->getStudyDate(); if (string == NULL) return NULL; return env->NewStringUTF (string); } /* * Class: J2Ci_jDSRDocument * Method: getStudyTime * Signature: ()Ljava/lang/String; */ JNIEXPORT jstring JNICALL Java_J2Ci_jDSRDocument_getStudyTime (JNIEnv *env, jobject obj) { DSRDocument *doc = getAddressOfDSRDocument (env, obj); const char *string = doc->getStudyTime(); if (string == NULL) return NULL; return env->NewStringUTF (string); } /* * Class: J2Ci_jDSRDocument * Method: getInstanceCreationDate * Signature: ()Ljava/lang/String; */ JNIEXPORT jstring JNICALL Java_J2Ci_jDSRDocument_getInstanceCreationDate (JNIEnv *env, jobject obj) { DSRDocument *doc = getAddressOfDSRDocument (env, obj); const char *string = doc->getInstanceCreationDate(); if (string == NULL) return NULL; return env->NewStringUTF (string); } /* * Class: J2Ci_jDSRDocument * Method: getInstanceCreationTime * Signature: ()Ljava/lang/String; */ JNIEXPORT jstring JNICALL Java_J2Ci_jDSRDocument_getInstanceCreationTime (JNIEnv *env, jobject obj) { DSRDocument *doc = getAddressOfDSRDocument (env, obj); const char *string = doc->getInstanceCreationTime(); if (string == NULL) return NULL; return env->NewStringUTF (string); } /* * Class: J2Ci_jDSRDocument * Method: getContentDate * Signature: ()Ljava/lang/String; */ JNIEXPORT jstring JNICALL Java_J2Ci_jDSRDocument_getContentDate (JNIEnv *env, jobject obj) { DSRDocument *doc = getAddressOfDSRDocument (env, obj); const char *string = doc->getContentDate(); if (string == NULL) return NULL; return env->NewStringUTF (string); } /* * Class: J2Ci_jDSRDocument * Method: getContentTime * Signature: ()Ljava/lang/String; */ JNIEXPORT jstring JNICALL Java_J2Ci_jDSRDocument_getContentTime (JNIEnv *env, jobject obj) { DSRDocument *doc = getAddressOfDSRDocument (env, obj); const char *string = doc->getContentTime(); if (string == NULL) return NULL; return env->NewStringUTF (string); } /* * Class: J2Ci_jDSRDocument * Method: getStudyID * Signature: ()Ljava/lang/String; */ JNIEXPORT jstring JNICALL Java_J2Ci_jDSRDocument_getStudyID (JNIEnv *env, jobject obj) { DSRDocument *doc = getAddressOfDSRDocument (env, obj); const char *string = doc->getStudyID(); if (string == NULL) return NULL; return env->NewStringUTF (string); } /* * Class: J2Ci_jDSRDocument * Method: getPatientID * Signature: ()Ljava/lang/String; */ JNIEXPORT jstring JNICALL Java_J2Ci_jDSRDocument_getPatientID (JNIEnv *env, jobject obj) { DSRDocument *doc = getAddressOfDSRDocument (env, obj); const char *string = doc->getPatientID(); if (string == NULL) return NULL; return env->NewStringUTF (string); } /* * Class: J2Ci_jDSRDocument * Method: getSeriesNumber * Signature: ()Ljava/lang/String; */ JNIEXPORT jstring JNICALL Java_J2Ci_jDSRDocument_getSeriesNumber (JNIEnv *env, jobject obj) { DSRDocument *doc = getAddressOfDSRDocument (env, obj); const char *string = doc->getSeriesNumber(); if (string == NULL) return NULL; return env->NewStringUTF (string); } /* * Class: J2Ci_jDSRDocument * Method: getInstanceNumber * Signature: ()Ljava/lang/String; */ JNIEXPORT jstring JNICALL Java_J2Ci_jDSRDocument_getInstanceNumber (JNIEnv *env, jobject obj) { DSRDocument *doc = getAddressOfDSRDocument (env, obj); const char *string = doc->getInstanceNumber(); if (string == NULL) return NULL; return env->NewStringUTF (string); } /* * Class: J2Ci_jDSRDocument * Method: getAccessionNumber * Signature: ()Ljava/lang/String; */ JNIEXPORT jstring JNICALL Java_J2Ci_jDSRDocument_getAccessionNumber (JNIEnv *env, jobject obj) { DSRDocument *doc = getAddressOfDSRDocument (env, obj); const char *string = doc->getAccessionNumber(); if (string == NULL) return NULL; return env->NewStringUTF (string); } /* * Class: J2Ci_jDSRDocument * Method: setSpecificCharacterSet * Signature: (Ljava/lang/String;)I */ JNIEXPORT jint JNICALL Java_J2Ci_jDSRDocument_setSpecificCharacterSet (JNIEnv *env, jobject obj, jstring value) { DSRDocument *doc = getAddressOfDSRDocument (env, obj); char *str = (value) ? (char *) env->GetStringUTFChars (value, 0) : NULL; OFCondition res = doc->setSpecificCharacterSet(str); env->ReleaseStringUTFChars (value, str); return (jint) res.status(); } /* * Class: J2Ci_jDSRDocument * Method: setCompletionFlagDescription * Signature: (Ljava/lang/String;)I */ JNIEXPORT jint JNICALL Java_J2Ci_jDSRDocument_setCompletionFlagDescription (JNIEnv *env, jobject obj, jstring value) { DSRDocument *doc = getAddressOfDSRDocument (env, obj); OFCondition res = EC_IllegalCall; jmethodID mid = env->GetMethodID(env->FindClass("java/lang/String"), "getBytes", "(Ljava/lang/String;)[B"); if (mid) { jbyteArray array = (jbyteArray) env->CallObjectMethod(value, mid, env->NewStringUTF(JAVA_ENCODING_STRING)); if (array) { jbyte *string = env->GetByteArrayElements(array, 0); res = doc->setCompletionFlagDescription(OFString((char *)string, env->GetArrayLength(array))); env->ReleaseByteArrayElements(array, string, 0); } } return (jint) res.status(); } /* * Class: J2Ci_jDSRDocument * Method: setPatientsName * Signature: (Ljava/lang/String;)I */ JNIEXPORT jint JNICALL Java_J2Ci_jDSRDocument_setPatientsName (JNIEnv *env, jobject obj, jstring value) { DSRDocument *doc = getAddressOfDSRDocument (env, obj); OFCondition res = EC_IllegalCall; jmethodID mid = env->GetMethodID(env->FindClass("java/lang/String"), "getBytes", "(Ljava/lang/String;)[B"); if (mid) { jbyteArray array = (jbyteArray) env->CallObjectMethod(value, mid, env->NewStringUTF(JAVA_ENCODING_STRING)); if (array) { jbyte *string = env->GetByteArrayElements(array, 0); res = doc->setPatientsName(OFString((char *)string, env->GetArrayLength(array))); env->ReleaseByteArrayElements(array, string, 0); } } return (jint) res.status(); } /* * Class: J2Ci_jDSRDocument * Method: setPatientsBirthDate * Signature: (Ljava/lang/String;)I */ JNIEXPORT jint JNICALL Java_J2Ci_jDSRDocument_setPatientsBirthDate (JNIEnv *env, jobject obj, jstring value) { DSRDocument *doc = getAddressOfDSRDocument (env, obj); char *str = (value) ? (char *) env->GetStringUTFChars (value, 0) : NULL; OFCondition res = doc->setPatientsBirthDate(str); env->ReleaseStringUTFChars (value, str); return (jint) res.status(); } /* * Class: J2Ci_jDSRDocument * Method: setPatientsSex * Signature: (Ljava/lang/String;)I */ JNIEXPORT jint JNICALL Java_J2Ci_jDSRDocument_setPatientsSex (JNIEnv *env, jobject obj, jstring value) { DSRDocument *doc = getAddressOfDSRDocument (env, obj); char *str = (value) ? (char *) env->GetStringUTFChars (value, 0) : NULL; OFCondition res = doc->setPatientsSex(str); env->ReleaseStringUTFChars (value, str); return (jint) res.status(); } /* * Class: J2Ci_jDSRDocument * Method: setReferringPhysiciansName * Signature: (Ljava/lang/String;)I */ JNIEXPORT jint JNICALL Java_J2Ci_jDSRDocument_setReferringPhysiciansName (JNIEnv *env, jobject obj, jstring value) { DSRDocument *doc = getAddressOfDSRDocument (env, obj); OFCondition res = EC_IllegalCall; jmethodID mid = env->GetMethodID(env->FindClass("java/lang/String"), "getBytes", "(Ljava/lang/String;)[B"); if (mid) { jbyteArray array = (jbyteArray) env->CallObjectMethod(value, mid, env->NewStringUTF(JAVA_ENCODING_STRING)); if (array) { jbyte *string = env->GetByteArrayElements(array, 0); res = doc->setReferringPhysiciansName(OFString((char *)string, env->GetArrayLength(array))); env->ReleaseByteArrayElements(array, string, 0); } } return (jint) res.status(); } /* * Class: J2Ci_jDSRDocument * Method: setStudyDescription * Signature: (Ljava/lang/String;)I */ JNIEXPORT jint JNICALL Java_J2Ci_jDSRDocument_setStudyDescription (JNIEnv *env, jobject obj, jstring value) { DSRDocument *doc = getAddressOfDSRDocument (env, obj); OFCondition res = EC_IllegalCall; jmethodID mid = env->GetMethodID(env->FindClass("java/lang/String"), "getBytes", "(Ljava/lang/String;)[B"); if (mid) { jbyteArray array = (jbyteArray) env->CallObjectMethod(value, mid, env->NewStringUTF(JAVA_ENCODING_STRING)); if (array) { jbyte *string = env->GetByteArrayElements(array, 0); res = doc->setStudyDescription(OFString((char *)string, env->GetArrayLength(array))); env->ReleaseByteArrayElements(array, string, 0); } } return (jint) res.status(); } /* * Class: J2Ci_jDSRDocument * Method: setSeriesDescription * Signature: (Ljava/lang/String;)I */ JNIEXPORT jint JNICALL Java_J2Ci_jDSRDocument_setSeriesDescription (JNIEnv *env, jobject obj, jstring value) { DSRDocument *doc = getAddressOfDSRDocument (env, obj); OFCondition res = EC_IllegalCall; jmethodID mid = env->GetMethodID(env->FindClass("java/lang/String"), "getBytes", "(Ljava/lang/String;)[B"); if (mid) { jbyteArray array = (jbyteArray) env->CallObjectMethod(value, mid, env->NewStringUTF(JAVA_ENCODING_STRING)); if (array) { jbyte *string = env->GetByteArrayElements(array, 0); res = doc->setSeriesDescription(OFString((char *)string, env->GetArrayLength(array))); env->ReleaseByteArrayElements(array, string, 0); } } return (jint) res.status(); } /* * Class: J2Ci_jDSRDocument * Method: setManufacturer * Signature: (Ljava/lang/String;)I */ JNIEXPORT jint JNICALL Java_J2Ci_jDSRDocument_setManufacturer (JNIEnv *env, jobject obj, jstring value) { DSRDocument *doc = getAddressOfDSRDocument (env, obj); OFCondition res = EC_IllegalCall; jmethodID mid = env->GetMethodID(env->FindClass("java/lang/String"), "getBytes", "(Ljava/lang/String;)[B"); if (mid) { jbyteArray array = (jbyteArray) env->CallObjectMethod(value, mid, env->NewStringUTF(JAVA_ENCODING_STRING)); if (array) { jbyte *string = env->GetByteArrayElements(array, 0); res = doc->setManufacturer(OFString((char *)string, env->GetArrayLength(array))); env->ReleaseByteArrayElements(array, string, 0); } } return (jint) res.status(); } /* * Class: J2Ci_jDSRDocument * Method: setStudyID * Signature: (Ljava/lang/String;)I */ JNIEXPORT jint JNICALL Java_J2Ci_jDSRDocument_setStudyID (JNIEnv *env, jobject obj, jstring value) { DSRDocument *doc = getAddressOfDSRDocument (env, obj); OFCondition res = EC_IllegalCall; jmethodID mid = env->GetMethodID(env->FindClass("java/lang/String"), "getBytes", "(Ljava/lang/String;)[B"); if (mid) { jbyteArray array = (jbyteArray) env->CallObjectMethod(value, mid, env->NewStringUTF(JAVA_ENCODING_STRING)); if (array) { jbyte *string = env->GetByteArrayElements(array, 0); res = doc->setStudyID(OFString((char *)string, env->GetArrayLength(array))); env->ReleaseByteArrayElements(array, string, 0); } } return (jint) res.status(); } /* * Class: J2Ci_jDSRDocument * Method: setPatientID * Signature: (Ljava/lang/String;)I */ JNIEXPORT jint JNICALL Java_J2Ci_jDSRDocument_setPatientID (JNIEnv *env, jobject obj, jstring value) { DSRDocument *doc = getAddressOfDSRDocument (env, obj); OFCondition res = EC_IllegalCall; jmethodID mid = env->GetMethodID(env->FindClass("java/lang/String"), "getBytes", "(Ljava/lang/String;)[B"); if (mid) { jbyteArray array = (jbyteArray) env->CallObjectMethod(value, mid, env->NewStringUTF(JAVA_ENCODING_STRING)); if (array) { jbyte *string = env->GetByteArrayElements(array, 0); res = doc->setPatientID(OFString((char *)string, env->GetArrayLength(array))); env->ReleaseByteArrayElements(array, string, 0); } } return (jint) res.status(); } /* * Class: J2Ci_jDSRDocument * Method: setSeriesNumber * Signature: (Ljava/lang/String;)I */ JNIEXPORT jint JNICALL Java_J2Ci_jDSRDocument_setSeriesNumber (JNIEnv *env, jobject obj, jstring value) { DSRDocument *doc = getAddressOfDSRDocument (env, obj); char *str = (value) ? (char *) env->GetStringUTFChars (value, 0) : NULL; OFCondition res = doc->setSeriesNumber(str); env->ReleaseStringUTFChars (value, str); return (jint) res.status(); } /* * Class: J2Ci_jDSRDocument * Method: setInstanceNumber * Signature: (Ljava/lang/String;)I */ JNIEXPORT jint JNICALL Java_J2Ci_jDSRDocument_setInstanceNumber (JNIEnv *env, jobject obj, jstring value) { DSRDocument *doc = getAddressOfDSRDocument (env, obj); char *str = (value) ? (char *) env->GetStringUTFChars (value, 0) : NULL; OFCondition res = doc->setInstanceNumber(str); env->ReleaseStringUTFChars (value, str); return (jint) res.status(); } /* * Class: J2Ci_jDSRDocument * Method: setAccessionNumber * Signature: (Ljava/lang/String;)I */ JNIEXPORT jint JNICALL Java_J2Ci_jDSRDocument_setAccessionNumber (JNIEnv *env, jobject obj, jstring value) { DSRDocument *doc = getAddressOfDSRDocument (env, obj); char *str = (value) ? (char *) env->GetStringUTFChars (value, 0) : NULL; OFCondition res = doc->setAccessionNumber(str); env->ReleaseStringUTFChars (value, str); return (jint) res.status(); } /* * Class: J2Ci_jDSRDocument * Method: createNewStudy * Signature: ()V */ JNIEXPORT void JNICALL Java_J2Ci_jDSRDocument_createNewStudy (JNIEnv *env, jobject obj) { DSRDocument *doc = getAddressOfDSRDocument (env, obj); doc->createNewStudy(); } /* * Class: J2Ci_jDSRDocument * Method: createNewSeries * Signature: ()V */ JNIEXPORT void JNICALL Java_J2Ci_jDSRDocument_createNewSeries (JNIEnv *env, jobject obj) { DSRDocument *doc = getAddressOfDSRDocument (env, obj); doc->createNewSeries(); } /* * Class: J2Ci_jDSRDocument * Method: createNewSeriesInStudy * Signature: (Ljava/lang/String;)I */ JNIEXPORT jint JNICALL Java_J2Ci_jDSRDocument_createNewSeriesInStudy (JNIEnv *env, jobject obj, jstring studyUID) { DSRDocument *doc = getAddressOfDSRDocument (env, obj); char *str = (studyUID) ? (char *) env->GetStringUTFChars (studyUID, 0) : NULL; OFCondition res = doc->createNewSeriesInStudy(str); env->ReleaseStringUTFChars (studyUID, str); return (jint) res.status(); } /* * Class: J2Ci_jDSRDocument * Method: createNewSOPInstance * Signature: ()V */ JNIEXPORT void JNICALL Java_J2Ci_jDSRDocument_createNewSOPInstance (JNIEnv *env, jobject obj) { DSRDocument *doc = getAddressOfDSRDocument (env, obj); doc->createNewSOPInstance(); } /* * Class: J2Ci_jDSRDocument * Method: createNewDocument * Signature: ()I */ JNIEXPORT jint JNICALL Java_J2Ci_jDSRDocument_createNewDocument__ (JNIEnv *env, jobject obj) { DSRDocument *doc = getAddressOfDSRDocument (env, obj); OFCondition res = doc->createNewDocument(); return (jint) res.status(); } /* * Class: J2Ci_jDSRDocument * Method: createNewDocument * Signature: (I)I */ JNIEXPORT jint JNICALL Java_J2Ci_jDSRDocument_createNewDocument__I (JNIEnv *env, jobject obj, jint type) { DSRDocument *doc = getAddressOfDSRDocument (env, obj); OFCondition res = doc->createNewDocument((DSRTypes::E_DocumentType)type); return (jint) res.status(); } /* * Class: J2Ci_jDSRDocument * Method: createRevisedVersion * Signature: ()I */ JNIEXPORT jint JNICALL Java_J2Ci_jDSRDocument_createRevisedVersion (JNIEnv *env, jobject obj) { DSRDocument *doc = getAddressOfDSRDocument (env, obj); OFCondition res = doc->createRevisedVersion(); return (jint) res.status(); } /* * Class: J2Ci_jDSRDocument * Method: completeDocument * Signature: ()I */ JNIEXPORT jint JNICALL Java_J2Ci_jDSRDocument_completeDocument__ (JNIEnv *env, jobject obj) { DSRDocument *doc = getAddressOfDSRDocument (env, obj); OFCondition res = doc->completeDocument(); return (jint) res.status(); } /* * Class: J2Ci_jDSRDocument * Method: completeDocument * Signature: (Ljava/lang/String;)I */ JNIEXPORT jint JNICALL Java_J2Ci_jDSRDocument_completeDocument__Ljava_lang_String_2 (JNIEnv *env, jobject obj, jstring description) { DSRDocument *doc = getAddressOfDSRDocument (env, obj); OFCondition res = EC_IllegalCall; jmethodID mid = env->GetMethodID(env->FindClass("java/lang/String"), "getBytes", "(Ljava/lang/String;)[B"); if (mid) { jbyteArray array = (jbyteArray) env->CallObjectMethod(description, mid, env->NewStringUTF(JAVA_ENCODING_STRING)); if (array) { jbyte *string = env->GetByteArrayElements(array, 0); res = doc->completeDocument(OFString((char *)string, env->GetArrayLength(array))); env->ReleaseByteArrayElements(array, string, 0); } } return (jint) res.status(); } /* * Class: J2Ci_jDSRDocument * Method: verifyDocument * Signature: (Ljava/lang/String;Ljava/lang/String;)I */ JNIEXPORT jint JNICALL Java_J2Ci_jDSRDocument_verifyDocument__Ljava_lang_String_2Ljava_lang_String_2 (JNIEnv *env, jobject obj, jstring obsName, jstring obsOrganization) { DSRDocument *doc = getAddressOfDSRDocument (env, obj); OFCondition res = EC_IllegalCall; jmethodID mid = env->GetMethodID(env->FindClass("java/lang/String"), "getBytes", "(Ljava/lang/String;)[B"); if (mid) { jstring encoding = env->NewStringUTF(JAVA_ENCODING_STRING); jbyteArray array1 = (jbyteArray) env->CallObjectMethod(obsName, mid, encoding); jbyteArray array2 = (jbyteArray) env->CallObjectMethod(obsOrganization, mid, encoding); if (array1 && array2) { jbyte *string1 = env->GetByteArrayElements(array1, 0); jbyte *string2 = env->GetByteArrayElements(array2, 0); res = doc->verifyDocument(OFString((char *)string1, env->GetArrayLength(array1)), OFString((char *)string2, env->GetArrayLength(array2))); env->ReleaseByteArrayElements(array1, string1, 0); env->ReleaseByteArrayElements(array2, string2, 0); } } return (jint) res.status(); } /* * Class: J2Ci_jDSRDocument * Method: verifyDocument * Signature: (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)I */ JNIEXPORT jint JNICALL Java_J2Ci_jDSRDocument_verifyDocument__Ljava_lang_String_2Ljava_lang_String_2Ljava_lang_String_2Ljava_lang_String_2Ljava_lang_String_2Ljava_lang_String_2 (JNIEnv *env, jobject obj, jstring obsName, jstring obsCV, jstring obsCSD, jstring obsCSV, jstring obsCM, jstring obsOrganization) { DSRDocument *doc = getAddressOfDSRDocument (env, obj); OFCondition res = EC_IllegalCall; jmethodID mid = env->GetMethodID(env->FindClass("java/lang/String"), "getBytes", "(Ljava/lang/String;)[B"); if (mid) { jstring encoding = env->NewStringUTF(JAVA_ENCODING_STRING); jbyteArray array1 = (jbyteArray) env->CallObjectMethod(obsName, mid, encoding); jbyteArray array2 = (jbyteArray) env->CallObjectMethod(obsCV, mid, encoding); jbyteArray array3 = (jbyteArray) env->CallObjectMethod(obsCSD, mid, encoding); jbyteArray array4 = (jbyteArray) env->CallObjectMethod(obsCSV, mid, encoding); jbyteArray array5 = (jbyteArray) env->CallObjectMethod(obsCM, mid, encoding); jbyteArray array6 = (jbyteArray) env->CallObjectMethod(obsOrganization, mid, encoding); if (array1 && array2 && array3 && array4 && array5 && array6) { jbyte *string1 = env->GetByteArrayElements(array1, 0); jbyte *string2 = env->GetByteArrayElements(array2, 0); jbyte *string3 = env->GetByteArrayElements(array3, 0); jbyte *string4 = env->GetByteArrayElements(array4, 0); jbyte *string5 = env->GetByteArrayElements(array5, 0); jbyte *string6 = env->GetByteArrayElements(array6, 0); DSRCodedEntryValue code(OFString((char *)string2, env->GetArrayLength(array2)), OFString((char *)string3, env->GetArrayLength(array3)), OFString((char *)string4, env->GetArrayLength(array4)), OFString((char *)string5, env->GetArrayLength(array5))); res = doc->verifyDocument(OFString((char *)string1, env->GetArrayLength(array1)), code, OFString((char *)string6, env->GetArrayLength(array6))); env->ReleaseByteArrayElements(array1, string1, 0); env->ReleaseByteArrayElements(array2, string2, 0); env->ReleaseByteArrayElements(array3, string3, 0); env->ReleaseByteArrayElements(array4, string4, 0); env->ReleaseByteArrayElements(array5, string5, 0); env->ReleaseByteArrayElements(array6, string6, 0); } } return (jint) res.status(); } /* * Class: J2Ci_jDSRDocument * Method: removeVerification * Signature: ()V */ JNIEXPORT void JNICALL Java_J2Ci_jDSRDocument_removeVerification (JNIEnv *env, jobject obj) { DSRDocument *doc = getAddressOfDSRDocument (env, obj); doc->removeVerification(); } /* * CVS Log * $Log: $ * */ dicomscope-3.6.0/interface/libsrc/DSRDocumentTree.cpp0000644000265600020320000003470411262371102021665 0ustar tilleaadmin/* * * Copyright (C) 2000-2003, OFFIS and Institute for MicroTherapy * * This software and supporting documentation were developed by * * Kuratorium OFFIS e.V. * Healthcare Information and Communication Systems * Escherweg 2 * D-26121 Oldenburg, Germany * * and * * University of Witten/Herdecke * Department of Radiology and MicroTherapy * Institute for MicroTherapy * Medical computer science * * Universitaetsstrasse 142 * 44799 Bochum, Germany * * http://www.microtherapy.de/go/cs * mailto:computer.science@microtherapy.de * * THIS SOFTWARE IS MADE AVAILABLE, AS IS, AND THE INSTITUTE MAKES NO * WARRANTY REGARDING THE SOFTWARE, ITS PERFORMANCE, ITS MERCHANTABILITY * OR FITNESS FOR ANY PARTICULAR USE, FREEDOM FROM ANY COMPUTER DISEASES * OR ITS CONFORMITY TO ANY SPECIFICATION. THE ENTIRE RISK AS TO QUALITY * AND PERFORMANCE OF THE SOFTWARE IS WITH THE USER. * * Author : $Author: $ * Last update : $Date: $ * Revision : $Revision: $ * State: $State: $ */ #include "J2Ci_jDSRDocumentTree.h" #include "jInterface.h" static inline DSRDocumentTree *getAddressOfDSRDocumentTree (JNIEnv *env, jobject obj) { jclass cls = env->GetObjectClass (obj); jfieldID fid = env->GetFieldID (cls, "cppClassAddress", "J"); if (fid == 0) exit (-1); return (DSRDocumentTree *) env->GetLongField (obj, fid); } static inline void setAddressOfDSRDocumentTree (JNIEnv *env, jobject obj, DSRDocumentTree *ptr) { jclass cls = env->GetObjectClass (obj); jfieldID fid = env->GetFieldID (cls, "cppClassAddress", "J"); if (fid == 0) exit (-1); env->SetLongField (obj, fid, (jlong) ptr); } // --------------------------- native methods ------------------------------ /* * Class: J2Ci_jDSRDocumentTree * Method: canAddContentItem * Signature: (III)Z */ JNIEXPORT jboolean JNICALL Java_J2Ci_jDSRDocumentTree_canAddContentItem (JNIEnv *env, jobject obj, jint relationshipType, jint valueType, jint addMode) { DSRDocumentTree *tree = getAddressOfDSRDocumentTree (env, obj); return (jboolean) tree->canAddContentItem((DSRTypes::E_RelationshipType)relationshipType, (DSRTypes::E_ValueType)valueType, (DSRTypes::E_AddMode)addMode); } /* * Class: J2Ci_jDSRDocumentTree * Method: addContentItem * Signature: (III)I */ JNIEXPORT jint JNICALL Java_J2Ci_jDSRDocumentTree_addContentItem (JNIEnv *env, jobject obj, jint relationshipType, jint valueType, jint addMode) { DSRDocumentTree *tree = getAddressOfDSRDocumentTree (env, obj); return (jint) tree->addContentItem((DSRTypes::E_RelationshipType)relationshipType, (DSRTypes::E_ValueType)valueType, (DSRTypes::E_AddMode)addMode); } /* * Class: J2Ci_jDSRDocumentTree * Method: removeCurrentContentItem * Signature: ()I */ JNIEXPORT jint JNICALL Java_J2Ci_jDSRDocumentTree_removeCurrentContentItem (JNIEnv *env, jobject obj) { DSRDocumentTree *tree = getAddressOfDSRDocumentTree (env, obj); return (jint) tree->removeCurrentContentItem(); } /* * Class: J2Ci_jDSRDocumentTree * Method: removeSignatures * Signature: ()V */ JNIEXPORT void JNICALL Java_J2Ci_jDSRDocumentTree_removeSignatures (JNIEnv *env, jobject obj) { DSRDocumentTree *tree = getAddressOfDSRDocumentTree (env, obj); tree->removeSignatures(); } /* * Class: J2Ci_jDSRDocumentTree * Method: unmarkAllContentItems * Signature: ()V */ JNIEXPORT void JNICALL Java_J2Ci_jDSRDocumentTree_unmarkAllContentItems (JNIEnv *env, jobject obj) { DSRDocumentTree *tree = getAddressOfDSRDocumentTree (env, obj); tree->unmarkAllContentItems(); } /* * Class: J2Ci_jDSRDocumentTree * Method: gotoRootNode * Signature: ()I */ JNIEXPORT jint JNICALL Java_J2Ci_jDSRDocumentTree_gotoRootNode (JNIEnv *env, jobject obj) { DSRDocumentTree *tree = getAddressOfDSRDocumentTree (env, obj); return (jint) tree->gotoRoot(); } /* * Class: J2Ci_jDSRDocumentTree * Method: gotoPreviousNode * Signature: ()I */ JNIEXPORT jint JNICALL Java_J2Ci_jDSRDocumentTree_gotoPreviousNode (JNIEnv *env, jobject obj) { DSRDocumentTree *tree = getAddressOfDSRDocumentTree (env, obj); return (jint) tree->gotoPrevious(); } /* * Class: J2Ci_jDSRDocumentTree * Method: gotoNextNode * Signature: ()I */ JNIEXPORT jint JNICALL Java_J2Ci_jDSRDocumentTree_gotoNextNode (JNIEnv *env, jobject obj) { DSRDocumentTree *tree = getAddressOfDSRDocumentTree (env, obj); return (jint) tree->gotoNext(); } /* * Class: J2Ci_jDSRDocumentTree * Method: gotoParentNode * Signature: ()I */ JNIEXPORT jint JNICALL Java_J2Ci_jDSRDocumentTree_gotoParentNode (JNIEnv *env, jobject obj) { DSRDocumentTree *tree = getAddressOfDSRDocumentTree (env, obj); return (jint) tree->goUp(); } /* * Class: J2Ci_jDSRDocumentTree * Method: gotoFirstChildNode * Signature: ()I */ JNIEXPORT jint JNICALL Java_J2Ci_jDSRDocumentTree_gotoFirstChildNode (JNIEnv *env, jobject obj) { DSRDocumentTree *tree = getAddressOfDSRDocumentTree (env, obj); return (jint) tree->goDown(); } /* * Class: J2Ci_jDSRDocumentTree * Method: iterateNodes * Signature: ()I */ JNIEXPORT jint JNICALL Java_J2Ci_jDSRDocumentTree_iterateNodes (JNIEnv *env, jobject obj) { DSRDocumentTree *tree = getAddressOfDSRDocumentTree (env, obj); return (jint) tree->iterate(); } /* * Class: J2Ci_jDSRDocumentTree * Method: gotoNode * Signature: (I)I */ JNIEXPORT jint JNICALL Java_J2Ci_jDSRDocumentTree_gotoNode (JNIEnv *env, jobject obj, jint searchID) { DSRDocumentTree *tree = getAddressOfDSRDocumentTree (env, obj); return (jint) tree->gotoNode((size_t)searchID); } /* * Class: J2Ci_jDSRDocumentTree * Method: isCurrentItemValid * Signature: ()Z */ JNIEXPORT jboolean JNICALL Java_J2Ci_jDSRDocumentTree_isCurrentItemValid (JNIEnv *env, jobject obj) { DSRDocumentTree *tree = getAddressOfDSRDocumentTree (env, obj); return (jboolean) tree->getCurrentContentItem().isValid(); } /* * Class: J2Ci_jDSRDocumentTree * Method: isCurrentItemMarked * Signature: ()Z */ JNIEXPORT jboolean JNICALL Java_J2Ci_jDSRDocumentTree_isCurrentItemMarked (JNIEnv *env, jobject obj) { DSRDocumentTree *tree = getAddressOfDSRDocumentTree (env, obj); return (jboolean) tree->getCurrentContentItem().isMarked(); } /* * Class: J2Ci_jDSRDocumentTree * Method: setCurrentItemMark * Signature: (Z)V */ JNIEXPORT void JNICALL Java_J2Ci_jDSRDocumentTree_setCurrentItemMark (JNIEnv *env, jobject obj, jboolean flag) { DSRDocumentTree *tree = getAddressOfDSRDocumentTree (env, obj); tree->getCurrentContentItem().setMark(flag == JNI_TRUE ? OFTrue : OFFalse); } /* * Class: J2Ci_jDSRDocumentTree * Method: getCurrentValueType * Signature: ()I */ JNIEXPORT jint JNICALL Java_J2Ci_jDSRDocumentTree_getCurrentValueType (JNIEnv *env, jobject obj) { DSRDocumentTree *tree = getAddressOfDSRDocumentTree (env, obj); return (jint) tree->getCurrentContentItem().getValueType(); } /* * Class: J2Ci_jDSRDocumentTree * Method: getCurrentRelationshipType * Signature: ()I */ JNIEXPORT jint JNICALL Java_J2Ci_jDSRDocumentTree_getCurrentRelationshipType (JNIEnv *env, jobject obj) { DSRDocumentTree *tree = getAddressOfDSRDocumentTree (env, obj); return (jint) tree->getCurrentContentItem().getRelationshipType(); } /* * Class: J2Ci_jDSRDocumentTree * Method: getCurrentNodeID * Signature: ()I */ JNIEXPORT jint JNICALL Java_J2Ci_jDSRDocumentTree_getCurrentNodeID (JNIEnv *env, jobject obj) { DSRDocumentTree *tree = getAddressOfDSRDocumentTree (env, obj); return (jint) tree->getNodeID(); } /* * Class: J2Ci_jDSRDocumentTree * Method: getCurrentReferencedNodeID * Signature: ()I */ JNIEXPORT jint JNICALL Java_J2Ci_jDSRDocumentTree_getCurrentReferencedNodeID (JNIEnv *env, jobject obj) { DSRDocumentTree *tree = getAddressOfDSRDocumentTree (env, obj); return (jint) tree->getCurrentContentItem().getReferencedNodeID(); } /* * Class: J2Ci_jDSRDocumentTree * Method: getCurrentLevel * Signature: ()I */ JNIEXPORT jint JNICALL Java_J2Ci_jDSRDocumentTree_getCurrentLevel (JNIEnv *env, jobject obj) { DSRDocumentTree *tree = getAddressOfDSRDocumentTree (env, obj); return (jint) tree->getLevel(); } /* * Class: J2Ci_jDSRDocumentTree * Method: getCurrentStringValue * Signature: ()Ljava/lang/String; */ JNIEXPORT jstring JNICALL Java_J2Ci_jDSRDocumentTree_getCurrentStringValue (JNIEnv *env, jobject obj) { DSRDocumentTree *tree = getAddressOfDSRDocumentTree (env, obj); const char *str = tree->getCurrentContentItem().getStringValue().c_str(); if (str == NULL) return NULL; return env->NewStringUTF (str); } /* * Class: J2Ci_jDSRDocumentTree * Method: setCurrentStringValue * Signature: (Ljava/lang/String;)I */ JNIEXPORT jint JNICALL Java_J2Ci_jDSRDocumentTree_setCurrentStringValue (JNIEnv *env, jobject obj, jstring value) { DSRDocumentTree *tree = getAddressOfDSRDocumentTree (env, obj); OFCondition res = EC_IllegalCall; jmethodID mid = env->GetMethodID(env->FindClass("java/lang/String"), "getBytes", "(Ljava/lang/String;)[B"); if (mid) { jbyteArray array = (jbyteArray) env->CallObjectMethod(value, mid, env->NewStringUTF(JAVA_ENCODING_STRING)); if (array) { jbyte *string = env->GetByteArrayElements(array, 0); res = tree->getCurrentContentItem().setStringValue(OFString((char *)string, env->GetArrayLength(array))); env->ReleaseByteArrayElements(array, string, 0); } } return (jint) res.status(); } /* * Class: J2Ci_jDSRDocumentTree * Method: getCurrentCodeValueN * Signature: ()J */ JNIEXPORT jlong JNICALL Java_J2Ci_jDSRDocumentTree_getCurrentCodeValueN (JNIEnv *env, jobject obj) { DSRDocumentTree *tree = getAddressOfDSRDocumentTree (env, obj); DSRCodedEntryValue *ptr = tree->getCurrentContentItem().getCodeValuePtr(); return (jlong) ptr; } /* * Class: J2Ci_jDSRDocumentTree * Method: getCurrentNumValueN * Signature: ()J */ JNIEXPORT jlong JNICALL Java_J2Ci_jDSRDocumentTree_getCurrentNumValueN (JNIEnv *env, jobject obj) { DSRDocumentTree *tree = getAddressOfDSRDocumentTree (env, obj); DSRNumericMeasurementValue *ptr = tree->getCurrentContentItem().getNumericValuePtr(); return (jlong) ptr; } /* * Class: J2Ci_jDSRDocumentTree * Method: getCurrentSCoordValueN * Signature: ()J */ JNIEXPORT jlong JNICALL Java_J2Ci_jDSRDocumentTree_getCurrentSCoordValueN (JNIEnv *env, jobject obj) { DSRDocumentTree *tree = getAddressOfDSRDocumentTree (env, obj); DSRSpatialCoordinatesValue *ptr = tree->getCurrentContentItem().getSpatialCoordinatesPtr(); return (jlong) ptr; } /* * Class: J2Ci_jDSRDocumentTree * Method: getCurrentTCoordValueN * Signature: ()J */ JNIEXPORT jlong JNICALL Java_J2Ci_jDSRDocumentTree_getCurrentTCoordValueN (JNIEnv *env, jobject obj) { DSRDocumentTree *tree = getAddressOfDSRDocumentTree (env, obj); DSRTemporalCoordinatesValue *ptr = tree->getCurrentContentItem().getTemporalCoordinatesPtr(); return (jlong) ptr; } /* * Class: J2Ci_jDSRDocumentTree * Method: getCurrentCompositeValueN * Signature: ()J */ JNIEXPORT jlong JNICALL Java_J2Ci_jDSRDocumentTree_getCurrentCompositeValueN (JNIEnv *env, jobject obj) { DSRDocumentTree *tree = getAddressOfDSRDocumentTree (env, obj); DSRCompositeReferenceValue *ptr = tree->getCurrentContentItem().getCompositeReferencePtr(); return (jlong) ptr; } /* * Class: J2Ci_jDSRDocumentTree * Method: getCurrentImageValueN * Signature: ()J */ JNIEXPORT jlong JNICALL Java_J2Ci_jDSRDocumentTree_getCurrentImageValueN (JNIEnv *env, jobject obj) { DSRDocumentTree *tree = getAddressOfDSRDocumentTree (env, obj); DSRImageReferenceValue *ptr = tree->getCurrentContentItem().getImageReferencePtr(); return (jlong) ptr; } /* * Class: J2Ci_jDSRDocumentTree * Method: getCurrentWaveformValueN * Signature: ()J */ JNIEXPORT jlong JNICALL Java_J2Ci_jDSRDocumentTree_getCurrentWaveformValueN (JNIEnv *env, jobject obj) { DSRDocumentTree *tree = getAddressOfDSRDocumentTree (env, obj); DSRWaveformReferenceValue *ptr = tree->getCurrentContentItem().getWaveformReferencePtr(); return (jlong) ptr; } /* * Class: J2Ci_jDSRDocumentTree * Method: getCurrentContinuityOfContentFlag * Signature: ()I */ JNIEXPORT jint JNICALL Java_J2Ci_jDSRDocumentTree_getCurrentContinuityOfContentFlag (JNIEnv *env, jobject obj) { DSRDocumentTree *tree = getAddressOfDSRDocumentTree (env, obj); return (jint) tree->getCurrentContentItem().getContinuityOfContent(); } /* * Class: J2Ci_jDSRDocumentTree * Method: setCurrentContinuityOfContentFlag * Signature: (I)I */ JNIEXPORT jint JNICALL Java_J2Ci_jDSRDocumentTree_setCurrentContinuityOfContentFlag (JNIEnv *env, jobject obj, jint flag) { DSRDocumentTree *tree = getAddressOfDSRDocumentTree (env, obj); return (jint) tree->getCurrentContentItem().setContinuityOfContent((DSRTypes::E_ContinuityOfContent)flag).status(); } /* * Class: J2Ci_jDSRDocumentTree * Method: getCurrentConceptNameN * Signature: ()J */ JNIEXPORT jlong JNICALL Java_J2Ci_jDSRDocumentTree_getCurrentConceptNameN (JNIEnv *env, jobject obj) { DSRDocumentTree *tree = getAddressOfDSRDocumentTree (env, obj); DSRCodedEntryValue *ptr = tree->getCurrentContentItem().getConceptNamePtr(); return (jlong) ptr; } /* * Class: J2Ci_jDSRDocumentTree * Method: getCurrentObservationDateTime * Signature: ()Ljava/lang/String; */ JNIEXPORT jstring JNICALL Java_J2Ci_jDSRDocumentTree_getCurrentObservationDateTime (JNIEnv *env, jobject obj) { DSRDocumentTree *tree = getAddressOfDSRDocumentTree (env, obj); const char *str = tree->getCurrentContentItem().getObservationDateTime().c_str(); if (str == NULL) return NULL; return env->NewStringUTF (str); } /* * Class: J2Ci_jDSRDocumentTree * Method: setCurrentObservationDateTime * Signature: (Ljava/lang/String;)I */ JNIEXPORT jint JNICALL Java_J2Ci_jDSRDocumentTree_setCurrentObservationDateTime (JNIEnv *env, jobject obj, jstring value) { DSRDocumentTree *tree = getAddressOfDSRDocumentTree (env, obj); char *str = (value) ? (char *) env->GetStringUTFChars (value, 0) : NULL; OFCondition res = tree->getCurrentContentItem().setObservationDateTime(str); env->ReleaseStringUTFChars (value, str); return (jint) res.status(); } /* * CVS Log * $Log: $ * */ dicomscope-3.6.0/interface/libsrc/DSRImageValue.cpp0000644000265600020320000002162211262371102021301 0ustar tilleaadmin/* * * Copyright (C) 2000-2003, OFFIS and Institute for MicroTherapy * * This software and supporting documentation were developed by * * Kuratorium OFFIS e.V. * Healthcare Information and Communication Systems * Escherweg 2 * D-26121 Oldenburg, Germany * * and * * University of Witten/Herdecke * Department of Radiology and MicroTherapy * Institute for MicroTherapy * Medical computer science * * Universitaetsstrasse 142 * 44799 Bochum, Germany * * http://www.microtherapy.de/go/cs * mailto:computer.science@microtherapy.de * * THIS SOFTWARE IS MADE AVAILABLE, AS IS, AND THE INSTITUTE MAKES NO * WARRANTY REGARDING THE SOFTWARE, ITS PERFORMANCE, ITS MERCHANTABILITY * OR FITNESS FOR ANY PARTICULAR USE, FREEDOM FROM ANY COMPUTER DISEASES * OR ITS CONFORMITY TO ANY SPECIFICATION. THE ENTIRE RISK AS TO QUALITY * AND PERFORMANCE OF THE SOFTWARE IS WITH THE USER. * * Author : $Author: $ * Last update : $Date: $ * Revision : $Revision: $ * State: $State: $ */ #include "J2Ci_jDSRImageValue.h" #include "jInterface.h" static inline DSRImageReferenceValue *getAddressOfDSRImageReferenceValue (JNIEnv *env, jobject obj) { jclass cls = env->GetObjectClass (obj); jfieldID fid = env->GetFieldID (cls, "cppClassAddress", "J"); if (fid == 0) exit (-1); return (DSRImageReferenceValue *) env->GetLongField (obj, fid); } static inline void setAddressOfDSRImageReferenceValue (JNIEnv *env, jobject obj, DSRImageReferenceValue *ptr) { jclass cls = env->GetObjectClass (obj); jfieldID fid = env->GetFieldID (cls, "cppClassAddress", "J"); if (fid == 0) exit (-1); env->SetLongField (obj, fid, (jlong) ptr); } // --------------------------- native methods ------------------------------ /* * Class: J2Ci_jDSRImageValue * Method: getImageSOPClassUID * Signature: ()Ljava/lang/String; */ JNIEXPORT jstring JNICALL Java_J2Ci_jDSRImageValue_getImageSOPClassUID (JNIEnv *env, jobject obj) { DSRImageReferenceValue *ref = getAddressOfDSRImageReferenceValue (env, obj); const char *string = ref->getSOPClassUID().c_str(); if (string == NULL) return NULL; return env->NewStringUTF (string); } /* * Class: J2Ci_jDSRImageValue * Method: getImageSOPClassName * Signature: ()Ljava/lang/String; */ JNIEXPORT jstring JNICALL Java_J2Ci_jDSRImageValue_getImageSOPClassName (JNIEnv *env, jobject obj) { DSRImageReferenceValue *ref = getAddressOfDSRImageReferenceValue (env, obj); const char *uid = ref->getSOPClassUID().c_str(); if ((uid != NULL) && (strlen(uid) > 0)) { const char *name = dcmFindNameOfUID(uid); if (name == NULL) { OFString string = "unknown SOP class"; if (uid != NULL) { string += " ("; string += uid; string += ")"; } return env->NewStringUTF (string.c_str()); } return env->NewStringUTF (name); } return env->NewStringUTF (""); } /* * Class: J2Ci_jDSRImageValue * Method: getImageSOPInstanceUID * Signature: ()Ljava/lang/String; */ JNIEXPORT jstring JNICALL Java_J2Ci_jDSRImageValue_getImageSOPInstanceUID (JNIEnv *env, jobject obj) { DSRImageReferenceValue *ref = getAddressOfDSRImageReferenceValue (env, obj); const char *string = ref->getSOPInstanceUID().c_str(); if (string == NULL) return NULL; return env->NewStringUTF (string); } /* * Class: J2Ci_jDSRImageValue * Method: setImageReference * Signature: (Ljava/lang/String;Ljava/lang/String;)I */ JNIEXPORT jint JNICALL Java_J2Ci_jDSRImageValue_setImageReference (JNIEnv *env, jobject obj, jstring sopClassUID, jstring sopInstanceUID) { DSRImageReferenceValue *ref = getAddressOfDSRImageReferenceValue (env, obj); char *string1 = (sopClassUID) ? (char *) env->GetStringUTFChars (sopClassUID, 0) : NULL; char *string2 = (sopInstanceUID) ? (char *) env->GetStringUTFChars (sopInstanceUID, 0) : NULL; OFCondition res = ref->setReference(string1, string2); env->ReleaseStringUTFChars (sopClassUID, string1); env->ReleaseStringUTFChars (sopInstanceUID, string2); return (jint) res.status(); } /* * Class: J2Ci_jDSRImageValue * Method: getPStateSOPClassUID * Signature: ()Ljava/lang/String; */ JNIEXPORT jstring JNICALL Java_J2Ci_jDSRImageValue_getPStateSOPClassUID (JNIEnv *env, jobject obj) { DSRImageReferenceValue *ref = getAddressOfDSRImageReferenceValue (env, obj); const char *string = ref->getPresentationState().getSOPClassUID().c_str(); if (string == NULL) return NULL; return env->NewStringUTF (string); } /* * Class: J2Ci_jDSRImageValue * Method: getPStateSOPClassName * Signature: ()Ljava/lang/String; */ JNIEXPORT jstring JNICALL Java_J2Ci_jDSRImageValue_getPStateSOPClassName (JNIEnv *env, jobject obj) { DSRImageReferenceValue *ref = getAddressOfDSRImageReferenceValue (env, obj); const char *uid = ref->getPresentationState().getSOPClassUID().c_str(); if ((uid != NULL) && (strlen(uid) > 0)) { const char *name = dcmFindNameOfUID(uid); if (name == NULL) { OFString string = "unknown SOP class"; if (uid != NULL) { string += " ("; string += uid; string += ")"; } return env->NewStringUTF (string.c_str()); } return env->NewStringUTF (name); } return env->NewStringUTF (""); } /* * Class: J2Ci_jDSRImageValue * Method: getPStateSOPInstanceUID * Signature: ()Ljava/lang/String; */ JNIEXPORT jstring JNICALL Java_J2Ci_jDSRImageValue_getPStateSOPInstanceUID (JNIEnv *env, jobject obj) { DSRImageReferenceValue *ref = getAddressOfDSRImageReferenceValue (env, obj); const char *string = ref->getPresentationState().getSOPInstanceUID().c_str(); if (string == NULL) return NULL; return env->NewStringUTF (string); } /* * Class: J2Ci_jDSRImageValue * Method: setPStateReference * Signature: (Ljava/lang/String;Ljava/lang/String;)I */ JNIEXPORT jint JNICALL Java_J2Ci_jDSRImageValue_setPStateReference (JNIEnv *env, jobject obj, jstring sopClassUID, jstring sopInstanceUID) { DSRImageReferenceValue *ref = getAddressOfDSRImageReferenceValue (env, obj); char *string1 = (sopClassUID) ? (char *) env->GetStringUTFChars (sopClassUID, 0) : NULL; char *string2 = (sopInstanceUID) ? (char *) env->GetStringUTFChars (sopInstanceUID, 0) : NULL; OFCondition res = ref->setPresentationState(DSRCompositeReferenceValue(string1, string2)); env->ReleaseStringUTFChars (sopClassUID, string1); env->ReleaseStringUTFChars (sopInstanceUID, string2); return (jint) res.status(); } /* * Class: J2Ci_jDSRImageValue * Method: clearFrameList * Signature: ()V */ JNIEXPORT void JNICALL Java_J2Ci_jDSRImageValue_clearFrameList (JNIEnv *env, jobject obj) { DSRImageReferenceValue *ref = getAddressOfDSRImageReferenceValue (env, obj); ref->getFrameList().clear(); } /* * Class: J2Ci_jDSRImageValue * Method: getNumberOfFrames * Signature: ()I */ JNIEXPORT jint JNICALL Java_J2Ci_jDSRImageValue_getNumberOfFrames (JNIEnv *env, jobject obj) { DSRImageReferenceValue *ref = getAddressOfDSRImageReferenceValue (env, obj); return (jint) ref->getFrameList().getNumberOfItems(); } /* * Class: J2Ci_jDSRImageValue * Method: getFrame * Signature: (ILJ2Ci/jIntByRef;)I */ JNIEXPORT jint JNICALL Java_J2Ci_jDSRImageValue_getFrame (JNIEnv *env, jobject obj, jint idx, jobject frameNumber) { DSRImageReferenceValue *ref = getAddressOfDSRImageReferenceValue (env, obj); Sint32 fnValue; OFCondition res = ref->getFrameList().getItem((size_t)idx, fnValue); env->SetIntField (frameNumber, env->GetFieldID (env->GetObjectClass (frameNumber), "value", "I"), fnValue); return (jint) res.status(); } /* * Class: J2Ci_jDSRImageValue * Method: addFrame * Signature: (I)V */ JNIEXPORT void JNICALL Java_J2Ci_jDSRImageValue_addFrame (JNIEnv *env, jobject obj, jint frameNumber) { DSRImageReferenceValue *ref = getAddressOfDSRImageReferenceValue (env, obj); ref->getFrameList().addOnlyNewItem((Sint32)frameNumber); } /* * Class: J2Ci_jDSRImageValue * Method: removeFrame * Signature: (I)I */ JNIEXPORT jint JNICALL Java_J2Ci_jDSRImageValue_removeFrame (JNIEnv *env, jobject obj, jint idx) { DSRImageReferenceValue *ref = getAddressOfDSRImageReferenceValue (env, obj); return (jint) ref->getFrameList().removeItem((size_t)idx).status(); } /* * Class: J2Ci_jDSRImageValue * Method: appliesToFrame * Signature: (I)Z */ JNIEXPORT jboolean JNICALL Java_J2Ci_jDSRImageValue_appliesToFrame (JNIEnv *env, jobject obj, jint frameNumber) { DSRImageReferenceValue *ref = getAddressOfDSRImageReferenceValue (env, obj); return (jboolean) ref->appliesToFrame((Sint32)frameNumber); } /* * CVS Log * $Log: $ * */ dicomscope-3.6.0/interface/libsrc/DSRNumericValue.cpp0000644000265600020320000001552111262371102021662 0ustar tilleaadmin/* * * Copyright (C) 2000-2003, OFFIS and Institute for MicroTherapy * * This software and supporting documentation were developed by * * Kuratorium OFFIS e.V. * Healthcare Information and Communication Systems * Escherweg 2 * D-26121 Oldenburg, Germany * * and * * University of Witten/Herdecke * Department of Radiology and MicroTherapy * Institute for MicroTherapy * Medical computer science * * Universitaetsstrasse 142 * 44799 Bochum, Germany * * http://www.microtherapy.de/go/cs * mailto:computer.science@microtherapy.de * * THIS SOFTWARE IS MADE AVAILABLE, AS IS, AND THE INSTITUTE MAKES NO * WARRANTY REGARDING THE SOFTWARE, ITS PERFORMANCE, ITS MERCHANTABILITY * OR FITNESS FOR ANY PARTICULAR USE, FREEDOM FROM ANY COMPUTER DISEASES * OR ITS CONFORMITY TO ANY SPECIFICATION. THE ENTIRE RISK AS TO QUALITY * AND PERFORMANCE OF THE SOFTWARE IS WITH THE USER. * * Author : $Author: $ * Last update : $Date: $ * Revision : $Revision: $ * State: $State: $ */ #include "J2Ci_jDSRNumericValue.h" #include "jInterface.h" static inline DSRNumericMeasurementValue *getAddressOfDSRNumericMeasurementValue (JNIEnv *env, jobject obj) { jclass cls = env->GetObjectClass (obj); jfieldID fid = env->GetFieldID (cls, "cppClassAddress", "J"); if (fid == 0) exit (-1); return (DSRNumericMeasurementValue *) env->GetLongField (obj, fid); } static inline void setAddressOfDSRNumericMeasurementValue (JNIEnv *env, jobject obj, DSRNumericMeasurementValue *ptr) { jclass cls = env->GetObjectClass (obj); jfieldID fid = env->GetFieldID (cls, "cppClassAddress", "J"); if (fid == 0) exit (-1); env->SetLongField (obj, fid, (jlong) ptr); } // --------------------------- native methods ------------------------------ /* * Class: J2Ci_jDSRNumericValue * Method: getNumericValue * Signature: ()Ljava/lang/String; */ JNIEXPORT jstring JNICALL Java_J2Ci_jDSRNumericValue_getNumericValue (JNIEnv *env, jobject obj) { DSRNumericMeasurementValue *num = getAddressOfDSRNumericMeasurementValue (env, obj); const char *string = num->getNumericValue().c_str(); if (string == NULL) return NULL; return env->NewStringUTF (string); } /* * Class: J2Ci_jDSRNumericValue * Method: getMeasurementUnitCodeValue * Signature: ()Ljava/lang/String; */ JNIEXPORT jstring JNICALL Java_J2Ci_jDSRNumericValue_getMeasurementUnitCodeValue (JNIEnv *env, jobject obj) { DSRNumericMeasurementValue *num = getAddressOfDSRNumericMeasurementValue (env, obj); const char *string = num->getMeasurementUnit().getCodeValue().c_str(); if (string == NULL) return NULL; return env->NewStringUTF (string); } /* * Class: J2Ci_jDSRNumericValue * Method: getMeasurementUnitCodingSchemeDesignator * Signature: ()Ljava/lang/String; */ JNIEXPORT jstring JNICALL Java_J2Ci_jDSRNumericValue_getMeasurementUnitCodingSchemeDesignator (JNIEnv *env, jobject obj) { DSRNumericMeasurementValue *num = getAddressOfDSRNumericMeasurementValue (env, obj); const char *string = num->getMeasurementUnit().getCodingSchemeDesignator().c_str(); if (string == NULL) return NULL; return env->NewStringUTF (string); } /* * Class: J2Ci_jDSRNumericValue * Method: getMeasurementUnitCodingSchemeVersion * Signature: ()Ljava/lang/String; */ JNIEXPORT jstring JNICALL Java_J2Ci_jDSRNumericValue_getMeasurementUnitCodingSchemeVersion (JNIEnv *env, jobject obj) { DSRNumericMeasurementValue *num = getAddressOfDSRNumericMeasurementValue (env, obj); const char *string = num->getMeasurementUnit().getCodingSchemeVersion().c_str(); if (string == NULL) return NULL; return env->NewStringUTF (string); } /* * Class: J2Ci_jDSRNumericValue * Method: getMeasurementUnitCodeMeaning * Signature: ()Ljava/lang/String; */ JNIEXPORT jstring JNICALL Java_J2Ci_jDSRNumericValue_getMeasurementUnitCodeMeaning (JNIEnv *env, jobject obj) { DSRNumericMeasurementValue *num = getAddressOfDSRNumericMeasurementValue (env, obj); const char *string = num->getMeasurementUnit().getCodeMeaning().c_str(); if (string == NULL) return NULL; return env->NewStringUTF (string); } /* * Class: J2Ci_jDSRNumericValue * Method: setNumericValue * Signature: (Ljava/lang/String;)I */ JNIEXPORT jint JNICALL Java_J2Ci_jDSRNumericValue_setNumericValue (JNIEnv *env, jobject obj, jstring numericValue) { DSRNumericMeasurementValue *num = getAddressOfDSRNumericMeasurementValue (env, obj); char *string = (numericValue) ? (char *) env->GetStringUTFChars (numericValue, 0) : NULL; OFCondition res = num->setNumericValue(string); env->ReleaseStringUTFChars (numericValue, string); return (jint) res.status(); } /* * Class: J2Ci_jDSRNumericValue * Method: setMeasurementUnit * Signature: (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)I */ JNIEXPORT jint JNICALL Java_J2Ci_jDSRNumericValue_setMeasurementUnit (JNIEnv *env, jobject obj, jstring codeValue, jstring codingSchemeDesignator, jstring codingSchemeVersion, jstring codeMeaning) { DSRNumericMeasurementValue *num = getAddressOfDSRNumericMeasurementValue (env, obj); OFCondition res = EC_IllegalCall; jmethodID mid = env->GetMethodID(env->FindClass("java/lang/String"), "getBytes", "(Ljava/lang/String;)[B"); if (mid) { jstring encoding = env->NewStringUTF(JAVA_ENCODING_STRING); jbyteArray array1 = (jbyteArray) env->CallObjectMethod(codeValue, mid, encoding); jbyteArray array2 = (jbyteArray) env->CallObjectMethod(codingSchemeDesignator, mid, encoding); jbyteArray array3 = (jbyteArray) env->CallObjectMethod(codingSchemeVersion, mid, encoding); jbyteArray array4 = (jbyteArray) env->CallObjectMethod(codeMeaning, mid, encoding); if (array1 && array2 && array3 && array4) { jbyte *string1 = env->GetByteArrayElements(array1, 0); jbyte *string2 = env->GetByteArrayElements(array2, 0); jbyte *string3 = env->GetByteArrayElements(array3, 0); jbyte *string4 = env->GetByteArrayElements(array4, 0); DSRCodedEntryValue code(OFString((char *)string1, env->GetArrayLength(array1)), OFString((char *)string2, env->GetArrayLength(array2)), OFString((char *)string3, env->GetArrayLength(array3)), OFString((char *)string4, env->GetArrayLength(array4))); res = num->setMeasurementUnit(code); env->ReleaseByteArrayElements(array1, string1, 0); env->ReleaseByteArrayElements(array2, string2, 0); env->ReleaseByteArrayElements(array3, string3, 0); env->ReleaseByteArrayElements(array4, string4, 0); } } return (jint) res.status(); } /* * CVS Log * $Log: $ * */ dicomscope-3.6.0/interface/libsrc/DSRSCoordValue.cpp0000644000265600020320000001111411262371102021443 0ustar tilleaadmin/* * * Copyright (C) 2000-2003, OFFIS and Institute for MicroTherapy * * This software and supporting documentation were developed by * * Kuratorium OFFIS e.V. * Healthcare Information and Communication Systems * Escherweg 2 * D-26121 Oldenburg, Germany * * and * * University of Witten/Herdecke * Department of Radiology and MicroTherapy * Institute for MicroTherapy * Medical computer science * * Universitaetsstrasse 142 * 44799 Bochum, Germany * * http://www.microtherapy.de/go/cs * mailto:computer.science@microtherapy.de * * THIS SOFTWARE IS MADE AVAILABLE, AS IS, AND THE INSTITUTE MAKES NO * WARRANTY REGARDING THE SOFTWARE, ITS PERFORMANCE, ITS MERCHANTABILITY * OR FITNESS FOR ANY PARTICULAR USE, FREEDOM FROM ANY COMPUTER DISEASES * OR ITS CONFORMITY TO ANY SPECIFICATION. THE ENTIRE RISK AS TO QUALITY * AND PERFORMANCE OF THE SOFTWARE IS WITH THE USER. * * Author : $Author: $ * Last update : $Date: $ * Revision : $Revision: $ * State: $State: $ */ #include "J2Ci_jDSRSCoordValue.h" #include "jInterface.h" static inline DSRSpatialCoordinatesValue *getAddressOfDSRSpatialCoordinatesValue (JNIEnv *env, jobject obj) { jclass cls = env->GetObjectClass (obj); jfieldID fid = env->GetFieldID (cls, "cppClassAddress", "J"); if (fid == 0) exit (-1); return (DSRSpatialCoordinatesValue *) env->GetLongField (obj, fid); } static inline void setAddressOfDSRSpatialCoordinatesValue (JNIEnv *env, jobject obj, DSRSpatialCoordinatesValue *ptr) { jclass cls = env->GetObjectClass (obj); jfieldID fid = env->GetFieldID (cls, "cppClassAddress", "J"); if (fid == 0) exit (-1); env->SetLongField (obj, fid, (jlong) ptr); } // --------------------------- native methods ------------------------------ /* * Class: J2Ci_jDSRSCoordValue * Method: getGraphicType * Signature: ()I */ JNIEXPORT jint JNICALL Java_J2Ci_jDSRSCoordValue_getGraphicType (JNIEnv *env, jobject obj) { DSRSpatialCoordinatesValue *sco = getAddressOfDSRSpatialCoordinatesValue (env, obj); return (jint) sco->getGraphicType(); } /* * Class: J2Ci_jDSRSCoordValue * Method: setGraphicType * Signature: (I)I */ JNIEXPORT jint JNICALL Java_J2Ci_jDSRSCoordValue_setGraphicType (JNIEnv *env, jobject obj, jint graphicType) { DSRSpatialCoordinatesValue *sco = getAddressOfDSRSpatialCoordinatesValue (env, obj); return (jint) sco->setGraphicType((DSRTypes::E_GraphicType)graphicType).status(); } /* * Class: J2Ci_jDSRSCoordValue * Method: clearGraphicData * Signature: ()V */ JNIEXPORT void JNICALL Java_J2Ci_jDSRSCoordValue_clearGraphicData (JNIEnv *env, jobject obj) { DSRSpatialCoordinatesValue *sco = getAddressOfDSRSpatialCoordinatesValue (env, obj); sco->getGraphicDataList().clear(); } /* * Class: J2Ci_jDSRSCoordValue * Method: getNumberOfPixels * Signature: ()I */ JNIEXPORT jint JNICALL Java_J2Ci_jDSRSCoordValue_getNumberOfPixels (JNIEnv *env, jobject obj) { DSRSpatialCoordinatesValue *sco = getAddressOfDSRSpatialCoordinatesValue (env, obj); return (jint) sco->getGraphicDataList().getNumberOfItems(); } /* * Class: J2Ci_jDSRSCoordValue * Method: getPixel * Signature: (ILJ2Ci/jFloatByRef;LJ2Ci/jFloatByRef;)I */ JNIEXPORT jint JNICALL Java_J2Ci_jDSRSCoordValue_getPixel (JNIEnv *env, jobject obj, jint idx, jobject column, jobject row) { DSRSpatialCoordinatesValue *sco = getAddressOfDSRSpatialCoordinatesValue (env, obj); Float32 columnValue, rowValue; OFCondition res = sco->getGraphicDataList().getItem((size_t)idx, columnValue, rowValue); env->SetFloatField (column, env->GetFieldID (env->GetObjectClass (column), "value", "F"), columnValue); env->SetFloatField (row, env->GetFieldID (env->GetObjectClass (row), "value", "F"), rowValue); return (jint) res.status(); } /* * Class: J2Ci_jDSRSCoordValue * Method: addPixel * Signature: (FF)V */ JNIEXPORT void JNICALL Java_J2Ci_jDSRSCoordValue_addPixel (JNIEnv *env, jobject obj, jfloat column, jfloat row) { DSRSpatialCoordinatesValue *sco = getAddressOfDSRSpatialCoordinatesValue (env, obj); sco->getGraphicDataList().addItem((Float32)column, (Float32)row); } /* * Class: J2Ci_jDSRSCoordValue * Method: removePixel * Signature: (I)I */ JNIEXPORT jint JNICALL Java_J2Ci_jDSRSCoordValue_removePixel (JNIEnv *env, jobject obj, jint idx) { DSRSpatialCoordinatesValue *sco = getAddressOfDSRSpatialCoordinatesValue (env, obj); return (jint) sco->getGraphicDataList().removeItem((size_t)idx).status(); } /* * CVS Log * $Log: $ * */ dicomscope-3.6.0/interface/libsrc/DSRTCoordValue.cpp0000644000265600020320000000512011262371102021444 0ustar tilleaadmin/* * * Copyright (C) 2000-2003, OFFIS and Institute for MicroTherapy * * This software and supporting documentation were developed by * * Kuratorium OFFIS e.V. * Healthcare Information and Communication Systems * Escherweg 2 * D-26121 Oldenburg, Germany * * and * * University of Witten/Herdecke * Department of Radiology and MicroTherapy * Institute for MicroTherapy * Medical computer science * * Universitaetsstrasse 142 * 44799 Bochum, Germany * * http://www.microtherapy.de/go/cs * mailto:computer.science@microtherapy.de * * THIS SOFTWARE IS MADE AVAILABLE, AS IS, AND THE INSTITUTE MAKES NO * WARRANTY REGARDING THE SOFTWARE, ITS PERFORMANCE, ITS MERCHANTABILITY * OR FITNESS FOR ANY PARTICULAR USE, FREEDOM FROM ANY COMPUTER DISEASES * OR ITS CONFORMITY TO ANY SPECIFICATION. THE ENTIRE RISK AS TO QUALITY * AND PERFORMANCE OF THE SOFTWARE IS WITH THE USER. * * Author : $Author: $ * Last update : $Date: $ * Revision : $Revision: $ * State: $State: $ */ #include "J2Ci_jDSRTCoordValue.h" #include "jInterface.h" static inline DSRTemporalCoordinatesValue *getAddressOfDSRTemporalCoordinatesValue (JNIEnv *env, jobject obj) { jclass cls = env->GetObjectClass (obj); jfieldID fid = env->GetFieldID (cls, "cppClassAddress", "J"); if (fid == 0) exit (-1); return (DSRTemporalCoordinatesValue *) env->GetLongField (obj, fid); } static inline void setAddressOfDSRTemporalCoordinatesValue (JNIEnv *env, jobject obj, DSRTemporalCoordinatesValue *ptr) { jclass cls = env->GetObjectClass (obj); jfieldID fid = env->GetFieldID (cls, "cppClassAddress", "J"); if (fid == 0) exit (-1); env->SetLongField (obj, fid, (jlong) ptr); } // --------------------------- native methods ------------------------------ /* * Class: J2Ci_jDSRTCoordValue * Method: getTemporalRangeType * Signature: ()I */ JNIEXPORT jint JNICALL Java_J2Ci_jDSRTCoordValue_getTemporalRangeType (JNIEnv *env, jobject obj) { DSRTemporalCoordinatesValue *tco = getAddressOfDSRTemporalCoordinatesValue (env, obj); return (jint) tco->getTemporalRangeType(); } /* * Class: J2Ci_jDSRTCoordValue * Method: setTemporalRangeType * Signature: (I)I */ JNIEXPORT jint JNICALL Java_J2Ci_jDSRTCoordValue_setTemporalRangeType (JNIEnv *env, jobject obj, jint temporalRangeType) { DSRTemporalCoordinatesValue *tco = getAddressOfDSRTemporalCoordinatesValue (env, obj); return (jint) tco->setTemporalRangeType((DSRTypes::E_TemporalRangeType)temporalRangeType).status(); } /* * CVS Log * $Log: $ * */ dicomscope-3.6.0/interface/libsrc/DSRWaveformValue.cpp0000644000265600020320000001553011262371102022046 0ustar tilleaadmin/* * * Copyright (C) 2000-2003, OFFIS and Institute for MicroTherapy * * This software and supporting documentation were developed by * * Kuratorium OFFIS e.V. * Healthcare Information and Communication Systems * Escherweg 2 * D-26121 Oldenburg, Germany * * and * * University of Witten/Herdecke * Department of Radiology and MicroTherapy * Institute for MicroTherapy * Medical computer science * * Universitaetsstrasse 142 * 44799 Bochum, Germany * * http://www.microtherapy.de/go/cs * mailto:computer.science@microtherapy.de * * THIS SOFTWARE IS MADE AVAILABLE, AS IS, AND THE INSTITUTE MAKES NO * WARRANTY REGARDING THE SOFTWARE, ITS PERFORMANCE, ITS MERCHANTABILITY * OR FITNESS FOR ANY PARTICULAR USE, FREEDOM FROM ANY COMPUTER DISEASES * OR ITS CONFORMITY TO ANY SPECIFICATION. THE ENTIRE RISK AS TO QUALITY * AND PERFORMANCE OF THE SOFTWARE IS WITH THE USER. * * Author : $Author: $ * Last update : $Date: $ * Revision : $Revision: $ * State: $State: $ */ #include "J2Ci_jDSRWaveformValue.h" #include "jInterface.h" static inline DSRWaveformReferenceValue *getAddressOfDSRWaveformReferenceValue (JNIEnv *env, jobject obj) { jclass cls = env->GetObjectClass (obj); jfieldID fid = env->GetFieldID (cls, "cppClassAddress", "J"); if (fid == 0) exit (-1); return (DSRWaveformReferenceValue *) env->GetLongField (obj, fid); } static inline void setAddressOfDSRWaveformReferenceValue (JNIEnv *env, jobject obj, DSRWaveformReferenceValue *ptr) { jclass cls = env->GetObjectClass (obj); jfieldID fid = env->GetFieldID (cls, "cppClassAddress", "J"); if (fid == 0) exit (-1); env->SetLongField (obj, fid, (jlong) ptr); } // --------------------------- native methods ------------------------------ /* * Class: J2Ci_jDSRWaveformValue * Method: getSOPClassUID * Signature: ()Ljava/lang/String; */ JNIEXPORT jstring JNICALL Java_J2Ci_jDSRWaveformValue_getSOPClassUID (JNIEnv *env, jobject obj) { DSRWaveformReferenceValue *ref = getAddressOfDSRWaveformReferenceValue (env, obj); const char *string = ref->getSOPClassUID().c_str(); if (string == NULL) return NULL; return env->NewStringUTF (string); } /* * Class: J2Ci_jDSRWaveformValue * Method: getSOPClassName * Signature: ()Ljava/lang/String; */ JNIEXPORT jstring JNICALL Java_J2Ci_jDSRWaveformValue_getSOPClassName (JNIEnv *env, jobject obj) { DSRWaveformReferenceValue *ref = getAddressOfDSRWaveformReferenceValue (env, obj); const char *uid = ref->getSOPClassUID().c_str(); if ((uid != NULL) && (strlen(uid) > 0)) { const char *name = dcmFindNameOfUID(uid); if (name == NULL) { OFString string = "unknown SOP class"; if (uid != NULL) { string += " ("; string += uid; string += ")"; } return env->NewStringUTF (string.c_str()); } return env->NewStringUTF (name); } return env->NewStringUTF (""); } /* * Class: J2Ci_jDSRWaveformValue * Method: getSOPInstanceUID * Signature: ()Ljava/lang/String; */ JNIEXPORT jstring JNICALL Java_J2Ci_jDSRWaveformValue_getSOPInstanceUID (JNIEnv *env, jobject obj) { DSRWaveformReferenceValue *ref = getAddressOfDSRWaveformReferenceValue (env, obj); const char *string = ref->getSOPInstanceUID().c_str(); if (string == NULL) return NULL; return env->NewStringUTF (string); } /* * Class: J2Ci_jDSRWaveformValue * Method: setReference * Signature: (Ljava/lang/String;Ljava/lang/String;)I */ JNIEXPORT jint JNICALL Java_J2Ci_jDSRWaveformValue_setReference (JNIEnv *env, jobject obj, jstring sopClassUID, jstring sopInstanceUID) { DSRWaveformReferenceValue *ref = getAddressOfDSRWaveformReferenceValue (env, obj); char *string1 = (char *) env->GetStringUTFChars (sopClassUID, 0); char *string2 = (char *) env->GetStringUTFChars (sopInstanceUID, 0); OFCondition res = ref->setReference((string1) ? string1 : "", (string2) ? string2 : ""); env->ReleaseStringUTFChars (sopClassUID, string1); env->ReleaseStringUTFChars (sopInstanceUID, string2); return (jint) res.status(); } /* * Class: J2Ci_jDSRWaveformValue * Method: clearChannelList * Signature: ()V */ JNIEXPORT void JNICALL Java_J2Ci_jDSRWaveformValue_clearChannelList (JNIEnv *env, jobject obj) { DSRWaveformReferenceValue *ref = getAddressOfDSRWaveformReferenceValue (env, obj); ref->getChannelList().clear(); } /* * Class: J2Ci_jDSRWaveformValue * Method: getNumberOfChannels * Signature: ()I */ JNIEXPORT jint JNICALL Java_J2Ci_jDSRWaveformValue_getNumberOfChannels (JNIEnv *env, jobject obj) { DSRWaveformReferenceValue *ref = getAddressOfDSRWaveformReferenceValue (env, obj); return (jint) ref->getChannelList().getNumberOfItems(); } /* * Class: J2Ci_jDSRWaveformValue * Method: getChannel * Signature: (ILJ2Ci/jIntByRef;LJ2Ci/jIntByRef;)I */ JNIEXPORT jint JNICALL Java_J2Ci_jDSRWaveformValue_getChannel (JNIEnv *env, jobject obj, jint idx, jobject multiplexGroupNumber, jobject channelNumber) { DSRWaveformReferenceValue *ref = getAddressOfDSRWaveformReferenceValue (env, obj); Uint16 mgnValue, cnValue; OFCondition res = ref->getChannelList().getItem((size_t)idx, mgnValue, cnValue); env->SetIntField (multiplexGroupNumber, env->GetFieldID (env->GetObjectClass (multiplexGroupNumber), "value", "I"), mgnValue); env->SetIntField (channelNumber, env->GetFieldID (env->GetObjectClass (channelNumber), "value", "I"), cnValue); return (jint) res.status(); } /* * Class: J2Ci_jDSRWaveformValue * Method: addChannel * Signature: (II)V */ JNIEXPORT void JNICALL Java_J2Ci_jDSRWaveformValue_addChannel (JNIEnv *env, jobject obj, jint multiplexGroupNumber, jint channelNumber) { DSRWaveformReferenceValue *ref = getAddressOfDSRWaveformReferenceValue (env, obj); ref->getChannelList().addOnlyNewItem(DSRWaveformChannelItem((Uint16)multiplexGroupNumber, (Uint16)channelNumber)); } /* * Class: J2Ci_jDSRWaveformValue * Method: removeChannel * Signature: (I)I */ JNIEXPORT jint JNICALL Java_J2Ci_jDSRWaveformValue_removeChannel (JNIEnv *env, jobject obj, jint idx) { DSRWaveformReferenceValue *ref = getAddressOfDSRWaveformReferenceValue (env, obj); return (jint) ref->getChannelList().removeItem((size_t)idx).status(); } /* * Class: J2Ci_jDSRWaveformValue * Method: appliesToChannel * Signature: (II)Z */ JNIEXPORT jboolean JNICALL Java_J2Ci_jDSRWaveformValue_appliesToChannel (JNIEnv *env, jobject obj, jint multiplexGroupNumber, jint channelNumber) { DSRWaveformReferenceValue *ref = getAddressOfDSRWaveformReferenceValue (env, obj); return (jboolean) ref->appliesToChannel((Uint16)multiplexGroupNumber, (Uint16)channelNumber); } /* * CVS Log * $Log: $ * */ dicomscope-3.6.0/interface/libsrc/DVInterface.cpp0000644000265600020320000033540211262371102021047 0ustar tilleaadmin/* * * Copyright (C) 1999-2003, Institute for MicroTherapy and OFFIS * * This software and supporting documentation were developed by * * University of Witten/Herdecke * Department of Radiology and MicroTherapy * Institute for MicroTherapy * Medical computer science * * Universitaetsstrasse 142 * 44799 Bochum, Germany * * http://www.microtherapy.de/go/cs * mailto:computer.science@microtherapy.de * * and * * Kuratorium OFFIS e.V. * Healthcare Information and Communication Systems * Escherweg 2 * D-26121 Oldenburg, Germany * * THIS SOFTWARE IS MADE AVAILABLE, AS IS, AND THE INSTITUTE MAKES NO * WARRANTY REGARDING THE SOFTWARE, ITS PERFORMANCE, ITS MERCHANTABILITY * OR FITNESS FOR ANY PARTICULAR USE, FREEDOM FROM ANY COMPUTER DISEASES * OR ITS CONFORMITY TO ANY SPECIFICATION. THE ENTIRE RISK AS TO QUALITY * AND PERFORMANCE OF THE SOFTWARE IS WITH THE USER. * * Author : $Author: Schroeter $ * Last update : $Date: 1999/05/14 10:02:31 $ * Revision : $Revision: 1.2 $ * State : $State: Exp $ */ #include "J2Ci_jDVInterface.h" #include "J2Ci_jDVPresentationState.h" #include "J2Ci_jDSRDocument.h" #include "jInterface.h" #include "dcrledrg.h" /* for DcmRLEDecoderRegistration */ #include "djdecode.h" /* for dcmjpeg decoders */ // ------------------- accessing C++-Objects inline DVInterface* getAddressOfDVInterface (JNIEnv *env, jobject obj) { jclass cls = env->GetObjectClass (obj); jfieldID fid = env->GetFieldID (cls, "cppClassAddress", "J"); if (fid == 0) exit (-1); return (DVInterface*) env->GetLongField (obj, fid); } inline void setAddressOfDVInterface (JNIEnv *env, jobject obj, DVInterface* dvi) { jclass cls = env->GetObjectClass (obj); jfieldID fid = env->GetFieldID (cls, "cppClassAddress", "J"); if (fid == 0) exit (-1); env->SetLongField (obj, fid, (jlong) dvi); } /* * Class: J2Ci_jDVInterface * Method: createObjOfDVInterface * Signature: (Ljava/lang/String;)V */ JNIEXPORT void JNICALL Java_J2Ci_jDVInterface_createObjOfDVInterface (JNIEnv *env, jobject obj, jstring configfile) { char *fn = (char*) env->GetStringUTFChars (configfile, 0); DVInterface *dvi = new DVInterface (fn, OFTrue); env->ReleaseStringUTFChars (configfile, fn); setAddressOfDVInterface (env, obj, dvi); // register RLE decompression codec DcmRLEDecoderRegistration::registerCodecs(); // register JPEG decompression codecs DJDecoderRegistration::registerCodecs(); } /* * Class: J2Ci_jDVInterface * Method: removeObjOfDVInterface * Signature: ()V */ JNIEXPORT void JNICALL Java_J2Ci_jDVInterface_removeObjOfDVInterface (JNIEnv *env, jobject obj) { DVInterface *dvi = getAddressOfDVInterface (env, obj); delete dvi; // deregister RLE decompression codecs DcmRLEDecoderRegistration::cleanup(); // deregister JPEG decompression codecs DJDecoderRegistration::cleanup(); } // ---------------------------------------------------------------------------- // native Methods // ---------------------------------------------------------------------------- /* * Class: J2Ci_jDVInterface * Method: loadImage * Signature: (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Z)I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVInterface_loadImage__Ljava_lang_String_2Ljava_lang_String_2Ljava_lang_String_2Z (JNIEnv *env, jobject obj, jstring studyUID, jstring seriesUID, jstring instanceUID, jboolean changeStatus) { DVInterface *dvi = getAddressOfDVInterface (env, obj); char *stu = (char*) env->GetStringUTFChars (studyUID, 0); char *ser = (char*) env->GetStringUTFChars (seriesUID, 0); char *ins = (char*) env->GetStringUTFChars (instanceUID, 0); OFCondition res = dvi->loadImage (stu, ser, ins, changeStatus == JNI_TRUE ? OFTrue : OFFalse); env->ReleaseStringUTFChars (studyUID, stu); env->ReleaseStringUTFChars (seriesUID, ser); env->ReleaseStringUTFChars (instanceUID, ins); return (jint) res.status(); } /* * Class: J2Ci_jDVInterface * Method: loadImage * Signature: (Ljava/lang/String;)I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVInterface_loadImage__Ljava_lang_String_2 (JNIEnv *env, jobject obj, jstring filename) { DVInterface *dvi = getAddressOfDVInterface (env, obj); char *fn = (char*) env->GetStringUTFChars (filename, 0); OFCondition res = dvi->loadImage (fn); env->ReleaseStringUTFChars (filename, fn); return (jint) res.status(); } /* * Class: J2Ci_jDVInterface * Method: loadReferencedImage * Signature: (IZ)I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVInterface_loadReferencedImage (JNIEnv *env, jobject obj, jint idx, jboolean changeStatus) { DVInterface *dvi = getAddressOfDVInterface (env, obj); OFCondition res = dvi->loadReferencedImage (idx, changeStatus == JNI_TRUE ? OFTrue : OFFalse); return (jint) res.status(); } /* * Class: J2Ci_jDVInterface * Method: loadPState * Signature: (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Z)I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVInterface_loadPState__Ljava_lang_String_2Ljava_lang_String_2Ljava_lang_String_2Z (JNIEnv *env, jobject obj, jstring studyUID, jstring seriesUID, jstring instanceUID, jboolean changeStatus) { DVInterface *dvi = getAddressOfDVInterface (env, obj); char *stu = (char*) env->GetStringUTFChars (studyUID, 0); char *ser = (char*) env->GetStringUTFChars (seriesUID, 0); char *ins = (char*) env->GetStringUTFChars (instanceUID, 0); OFCondition res = dvi->loadPState (stu, ser, ins, changeStatus == JNI_TRUE ? OFTrue : OFFalse); env->ReleaseStringUTFChars (studyUID, stu); env->ReleaseStringUTFChars (seriesUID, ser); env->ReleaseStringUTFChars (instanceUID, ins); return (jint) res.status(); } /* * Class: J2Ci_jDVInterface * Method: loadPState * Signature: (Ljava/lang/String;)I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVInterface_loadPState__Ljava_lang_String_2 (JNIEnv *env, jobject obj, jstring pstName) { DVInterface *dvi = getAddressOfDVInterface (env, obj); char *psn = (char*) env->GetStringUTFChars (pstName, 0); OFCondition res = dvi->loadPState (psn); env->ReleaseStringUTFChars (pstName, psn); return (jint) res.status(); } /* * Class: J2Ci_jDVInterface * Method: loadPState * Signature: (Ljava/lang/String;Ljava/lang/String;)I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVInterface_loadPState__Ljava_lang_String_2Ljava_lang_String_2 (JNIEnv *env, jobject obj, jstring pstName, jstring imgName) { DVInterface *dvi = getAddressOfDVInterface (env, obj); char *psn = (char*) env->GetStringUTFChars (pstName, 0); char *imn = (char*) env->GetStringUTFChars (imgName, 0); OFCondition res = dvi->loadPState (psn, imn); env->ReleaseStringUTFChars (pstName, psn); env->ReleaseStringUTFChars (imgName, imn); return (jint) res.status(); } /* * Class: J2Ci_jDVInterface * Method: loadStructuredReport * Signature: (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Z)I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVInterface_loadStructuredReport__Ljava_lang_String_2Ljava_lang_String_2Ljava_lang_String_2Z (JNIEnv *env, jobject obj, jstring studyUID, jstring seriesUID, jstring instanceUID, jboolean changeStatus) { DVInterface *dvi = getAddressOfDVInterface (env, obj); char *stu = (char*) env->GetStringUTFChars (studyUID, 0); char *ser = (char*) env->GetStringUTFChars (seriesUID, 0); char *ins = (char*) env->GetStringUTFChars (instanceUID, 0); OFCondition res = dvi->loadStructuredReport(stu, ser, ins, changeStatus == JNI_TRUE ? OFTrue : OFFalse); env->ReleaseStringUTFChars (studyUID, stu); env->ReleaseStringUTFChars (seriesUID, ser); env->ReleaseStringUTFChars (instanceUID, ins); return (jint) res.status(); } /* * Class: J2Ci_jDVInterface * Method: loadStructuredReport * Signature: (Ljava/lang/String;)I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVInterface_loadStructuredReport__Ljava_lang_String_2 (JNIEnv *env, jobject obj, jstring filename) { DVInterface *dvi = getAddressOfDVInterface (env, obj); char *fn = (char*) env->GetStringUTFChars (filename, 0); OFCondition res = dvi->loadStructuredReport(fn); env->ReleaseStringUTFChars (filename, fn); return (jint) res.status(); } /* * Class: J2Ci_jDVInterface * Method: loadSRTemplate * Signature: (Ljava/lang/String;)I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVInterface_loadSRTemplate (JNIEnv *env, jobject obj, jstring reportID) { DVInterface *dvi = getAddressOfDVInterface (env, obj); char *id = (char*) env->GetStringUTFChars (reportID, 0); OFCondition res = dvi->loadSRTemplate(id); env->ReleaseStringUTFChars (reportID, id); return (jint) res.status(); } /* * Class: J2Ci_jDVInterface * Method: savePState * Signature: (Z)I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVInterface_savePState__Z (JNIEnv *env, jobject obj, jboolean replaceSOPInstanceUID) { DVInterface *dvi = getAddressOfDVInterface (env, obj); OFCondition res = dvi->savePState(replaceSOPInstanceUID == JNI_TRUE ? OFTrue : OFFalse); return (jint) res.status(); } /* * Class: J2Ci_jDVInterface * Method: savePState * Signature: (Ljava/lang/String;ZZ)I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVInterface_savePState__Ljava_lang_String_2ZZ (JNIEnv *env, jobject obj, jstring filename, jboolean replaceSOPInstanceUID, jboolean explicitVR) { DVInterface *dvi = getAddressOfDVInterface (env, obj); char *fn = (char *) env->GetStringUTFChars (filename, 0); OFBool explVR = (explicitVR == JNI_TRUE) ? OFTrue : OFFalse; OFBool replUID = (replaceSOPInstanceUID == JNI_TRUE) ? OFTrue : OFFalse; OFCondition res = dvi->savePState(fn, replUID, explVR); env->ReleaseStringUTFChars (filename, fn); return (jint) res.status(); } /* * Class: J2Ci_jDVInterface * Method: saveCurrentImage * Signature: (Ljava/lang/String;Z)I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVInterface_saveCurrentImage (JNIEnv *env, jobject obj, jstring filename, jboolean explicitVR) { DVInterface *dvi = getAddressOfDVInterface (env, obj); char *fn = (char*) env->GetStringUTFChars (filename, 0); OFBool expVR = explicitVR == JNI_TRUE ? OFTrue : OFFalse; OFCondition res = dvi->saveCurrentImage(fn, expVR); env->ReleaseStringUTFChars (filename, fn); return (jint) res.status(); } /* * Class: J2Ci_jDVInterface * Method: saveStructuredReport * Signature: ()I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVInterface_saveStructuredReport__ (JNIEnv *env, jobject obj) { DVInterface *dvi = getAddressOfDVInterface (env, obj); OFCondition res = dvi->saveStructuredReport(); return (jint) res.status(); } /* * Class: J2Ci_jDVInterface * Method: saveStructuredReport * Signature: (Ljava/lang/String;Z)I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVInterface_saveStructuredReport__Ljava_lang_String_2Z (JNIEnv *env, jobject obj, jstring filename, jboolean explicitVR) { DVInterface *dvi = getAddressOfDVInterface (env, obj); char *fn = (char *) env->GetStringUTFChars (filename, 0); OFBool expVR = (explicitVR == JNI_TRUE) ? OFTrue : OFFalse; OFCondition res = dvi->saveStructuredReport(fn, expVR); env->ReleaseStringUTFChars (filename, fn); return (jint) res.status(); } /* * Class: J2Ci_jDVInterface * Method: addImageReferenceToPState * Signature: (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVInterface_addImageReferenceToPState (JNIEnv *env, jobject obj, jstring studyUID, jstring seriesUID, jstring instanceUID) { DVInterface *dvi = getAddressOfDVInterface (env, obj); char *stu = (char*) env->GetStringUTFChars (studyUID, 0); char *ser = (char*) env->GetStringUTFChars (seriesUID, 0); char *ins = (char*) env->GetStringUTFChars (instanceUID, 0); OFCondition res = dvi->addImageReferenceToPState (stu, ser, ins); env->ReleaseStringUTFChars (studyUID, stu); env->ReleaseStringUTFChars (seriesUID, ser); env->ReleaseStringUTFChars (instanceUID, ins); return (jint) res.status(); } /* * Class: J2Ci_jDVInterface * Method: getNumberOfImageReferences * Signature: ()I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVInterface_getNumberOfImageReferences (JNIEnv *env, jobject obj) { DVInterface *dvi = getAddressOfDVInterface (env, obj); return (jint) dvi->getNumberOfImageReferences (); } /* * Class: J2Ci_jDVInterface * Method: getCurrentPStateN * Signature: ()J */ JNIEXPORT jlong JNICALL Java_J2Ci_jDVInterface_getCurrentPStateN (JNIEnv *env, jobject obj) { DVInterface *dvi = getAddressOfDVInterface (env, obj); DVPresentationState *ps = &(dvi->getCurrentPState ()); return (jlong) ps; } /* * Class: J2Ci_jDVInterface * Method: getCurrentReportN * Signature: ()J */ JNIEXPORT jlong JNICALL Java_J2Ci_jDVInterface_getCurrentReportN (JNIEnv *env, jobject obj) { DVInterface *dvi = getAddressOfDVInterface (env, obj); DSRDocument *doc = &(dvi->getCurrentReport()); return (jlong) doc; } /* * Class: J2Ci_jDVInterface * Method: getPrintHandlerN * Signature: ()J */ JNIEXPORT jlong JNICALL Java_J2Ci_jDVInterface_getPrintHandlerN (JNIEnv *env, jobject obj) { DVInterface *dvi = getAddressOfDVInterface (env, obj); DVPSStoredPrint *ps = &(dvi->getPrintHandler ()); return (jlong) ps; } /* * Class: J2Ci_jDVInterface * Method: resetPresentationState * Signature: ()I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVInterface_resetPresentationState (JNIEnv *env, jobject obj) { DVInterface *dvi = getAddressOfDVInterface (env, obj); OFCondition res = dvi->resetPresentationState(); return (jint) res.status(); } /* * Class: J2Ci_jDVInterface * Method: saveCurrentPStateForReset * Signature: ()I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVInterface_saveCurrentPStateForReset (JNIEnv *env, jobject obj) { DVInterface *dvi = getAddressOfDVInterface (env, obj); OFCondition res = dvi->saveCurrentPStateForReset(); return (jint) res.status(); } /* * Class: J2Ci_jDVInterface * Method: releaseDatabase * Signature: ()I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVInterface_releaseDatabase (JNIEnv *env, jobject obj) { DVInterface *dvi = getAddressOfDVInterface (env, obj); OFCondition res = dvi->releaseDatabase(); return (jint) res.status(); } /* * Class: J2Ci_jDVInterface * Method: getFilename * Signature: (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String; */ JNIEXPORT jstring JNICALL Java_J2Ci_jDVInterface_getFilename__Ljava_lang_String_2Ljava_lang_String_2Ljava_lang_String_2 (JNIEnv *env, jobject obj, jstring studyUID, jstring seriesUID, jstring instanceUID) { DVInterface *dvi = getAddressOfDVInterface (env, obj); char *stu = (char*) env->GetStringUTFChars (studyUID, 0); char *ser = (char*) env->GetStringUTFChars (seriesUID, 0); char *ins = (char*) env->GetStringUTFChars (instanceUID, 0); const char* res = dvi->getFilename (stu, ser, ins); env->ReleaseStringUTFChars (studyUID, stu); env->ReleaseStringUTFChars (seriesUID, ser); env->ReleaseStringUTFChars (instanceUID, ins); if (res == NULL) return NULL; return env->NewStringUTF (res); } /* * Class: J2Ci_jDVInterface * Method: getNumberOfStudies * Signature: ()I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVInterface_getNumberOfStudies (JNIEnv *env, jobject obj) { DVInterface *dvi = getAddressOfDVInterface (env, obj); return (jint) dvi->getNumberOfStudies(); } /* * Class: J2Ci_jDVInterface * Method: selectStudy * Signature: (I)I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVInterface_selectStudy__I (JNIEnv *env, jobject obj, jint idx) { DVInterface *dvi = getAddressOfDVInterface (env, obj); OFCondition res = dvi->selectStudy(idx); return (jint) res.status(); } /* * Class: J2Ci_jDVInterface * Method: selectStudy * Signature: (Ljava/lang/String;)I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVInterface_selectStudy__Ljava_lang_String_2 (JNIEnv *env, jobject obj, jstring studyUID) { DVInterface *dvi = getAddressOfDVInterface (env, obj); char *stu = (char*) env->GetStringUTFChars (studyUID, 0); OFCondition res = dvi->selectStudy (stu); env->ReleaseStringUTFChars (studyUID, stu); return (jint) res.status(); } /* * Class: J2Ci_jDVInterface * Method: getStudyStatus * Signature: ()I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVInterface_getStudyStatus (JNIEnv *env, jobject obj) { DVInterface *dvi = getAddressOfDVInterface (env, obj); return (jint) dvi->getStudyStatus(); } /* * Class: J2Ci_jDVInterface * Method: getStudyUID * Signature: ()Ljava/lang/String; */ JNIEXPORT jstring JNICALL Java_J2Ci_jDVInterface_getStudyUID (JNIEnv *env, jobject obj) { DVInterface *dvi = getAddressOfDVInterface (env, obj); const char* res = dvi->getStudyUID(); if (res == NULL) return NULL; return env->NewStringUTF (res); } /* * Class: J2Ci_jDVInterface * Method: getStudyDescription * Signature: ()Ljava/lang/String; */ JNIEXPORT jstring JNICALL Java_J2Ci_jDVInterface_getStudyDescription (JNIEnv *env, jobject obj) { DVInterface *dvi = getAddressOfDVInterface (env, obj); const char* res = dvi->getStudyDescription(); if (res == NULL) return NULL; return env->NewStringUTF (res); } /* * Class: J2Ci_jDVInterface * Method: getStudyDate * Signature: ()Ljava/lang/String; */ JNIEXPORT jstring JNICALL Java_J2Ci_jDVInterface_getStudyDate (JNIEnv *env, jobject obj) { DVInterface *dvi = getAddressOfDVInterface (env, obj); const char* res = dvi->getStudyDate(); if (res == NULL) return NULL; return env->NewStringUTF (res); } /* * Class: J2Ci_jDVInterface * Method: getStudyTime * Signature: ()Ljava/lang/String; */ JNIEXPORT jstring JNICALL Java_J2Ci_jDVInterface_getStudyTime (JNIEnv *env, jobject obj) { DVInterface *dvi = getAddressOfDVInterface (env, obj); const char* res = dvi->getStudyTime(); if (res == NULL) return NULL; return env->NewStringUTF (res); } /* * Class: J2Ci_jDVInterface * Method: getReferringPhysiciansName * Signature: ()Ljava/lang/String; */ JNIEXPORT jstring JNICALL Java_J2Ci_jDVInterface_getReferringPhysiciansName (JNIEnv *env, jobject obj) { DVInterface *dvi = getAddressOfDVInterface (env, obj); const char* res = dvi->getReferringPhysiciansName(); if (res == NULL) return NULL; return env->NewStringUTF (res); } /* * Class: J2Ci_jDVInterface * Method: getAccessionNumber * Signature: ()Ljava/lang/String; */ JNIEXPORT jstring JNICALL Java_J2Ci_jDVInterface_getAccessionNumber (JNIEnv *env, jobject obj) { DVInterface *dvi = getAddressOfDVInterface (env, obj); const char* res = dvi->getAccessionNumber(); if (res == NULL) return NULL; return env->NewStringUTF (res); } /* * Class: J2Ci_jDVInterface * Method: getNameOfPhysiciansReadingStudy * Signature: ()Ljava/lang/String; */ JNIEXPORT jstring JNICALL Java_J2Ci_jDVInterface_getNameOfPhysiciansReadingStudy (JNIEnv *env, jobject obj) { DVInterface *dvi = getAddressOfDVInterface (env, obj); const char* res = dvi->getNameOfPhysiciansReadingStudy(); if (res == NULL) return NULL; return env->NewStringUTF (res); } /* * Class: J2Ci_jDVInterface * Method: getPatientName * Signature: ()Ljava/lang/String; */ JNIEXPORT jstring JNICALL Java_J2Ci_jDVInterface_getPatientName (JNIEnv *env, jobject obj) { DVInterface *dvi = getAddressOfDVInterface (env, obj); const char* res = dvi->getPatientName(); if (res == NULL) return NULL; return env->NewStringUTF (res); } /* * Class: J2Ci_jDVInterface * Method: getPatientID * Signature: ()Ljava/lang/String; */ JNIEXPORT jstring JNICALL Java_J2Ci_jDVInterface_getPatientID (JNIEnv *env, jobject obj) { DVInterface *dvi = getAddressOfDVInterface (env, obj); const char* res = dvi->getPatientID(); if (res == NULL) return NULL; return env->NewStringUTF (res); } /* * Class: J2Ci_jDVInterface * Method: getPatientBirthDate * Signature: ()Ljava/lang/String; */ JNIEXPORT jstring JNICALL Java_J2Ci_jDVInterface_getPatientBirthDate (JNIEnv *env, jobject obj) { DVInterface *dvi = getAddressOfDVInterface (env, obj); const char* res = dvi->getPatientBirthDate(); if (res == NULL) return NULL; return env->NewStringUTF (res); } /* * Class: J2Ci_jDVInterface * Method: getPatientSex * Signature: ()Ljava/lang/String; */ JNIEXPORT jstring JNICALL Java_J2Ci_jDVInterface_getPatientSex (JNIEnv *env, jobject obj) { DVInterface *dvi = getAddressOfDVInterface (env, obj); const char* res = dvi->getPatientSex(); if (res == NULL) return NULL; return env->NewStringUTF (res); } /* * Class: J2Ci_jDVInterface * Method: getPatientBirthTime * Signature: ()Ljava/lang/String; */ JNIEXPORT jstring JNICALL Java_J2Ci_jDVInterface_getPatientBirthTime (JNIEnv *env, jobject obj) { DVInterface *dvi = getAddressOfDVInterface (env, obj); const char* res = dvi->getPatientBirthTime(); if (res == NULL) return NULL; return env->NewStringUTF (res); } /* * Class: J2Ci_jDVInterface * Method: getOtherPatientNames * Signature: ()Ljava/lang/String; */ JNIEXPORT jstring JNICALL Java_J2Ci_jDVInterface_getOtherPatientNames (JNIEnv *env, jobject obj) { DVInterface *dvi = getAddressOfDVInterface (env, obj); const char* res = dvi->getOtherPatientNames(); if (res == NULL) return NULL; return env->NewStringUTF (res); } /* * Class: J2Ci_jDVInterface * Method: getOtherPatientID * Signature: ()Ljava/lang/String; */ JNIEXPORT jstring JNICALL Java_J2Ci_jDVInterface_getOtherPatientID (JNIEnv *env, jobject obj) { DVInterface *dvi = getAddressOfDVInterface (env, obj); const char* res = dvi->getOtherPatientID(); if (res == NULL) return NULL; return env->NewStringUTF (res); } /* * Class: J2Ci_jDVInterface * Method: getEthnicGroup * Signature: ()Ljava/lang/String; */ JNIEXPORT jstring JNICALL Java_J2Ci_jDVInterface_getEthnicGroup (JNIEnv *env, jobject obj) { DVInterface *dvi = getAddressOfDVInterface (env, obj); const char* res = dvi->getEthnicGroup(); if (res == NULL) return NULL; return env->NewStringUTF (res); } /* * Class: J2Ci_jDVInterface * Method: getNumberOfSeries * Signature: ()I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVInterface_getNumberOfSeries (JNIEnv *env, jobject obj) { DVInterface *dvi = getAddressOfDVInterface (env, obj); return (jint) dvi->getNumberOfSeries(); } /* * Class: J2Ci_jDVInterface * Method: selectSeries * Signature: (I)I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVInterface_selectSeries__I (JNIEnv *env, jobject obj, jint idx) { DVInterface *dvi = getAddressOfDVInterface (env, obj); OFCondition res = dvi->selectSeries(idx); return (jint) res.status(); } /* * Class: J2Ci_jDVInterface * Method: selectSeries * Signature: (Ljava/lang/String;)I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVInterface_selectSeries__Ljava_lang_String_2 (JNIEnv *env, jobject obj, jstring seriesUID) { DVInterface *dvi = getAddressOfDVInterface (env, obj); char *ser = (char*) env->GetStringUTFChars (seriesUID, 0); OFCondition res = dvi->selectSeries (ser); env->ReleaseStringUTFChars (seriesUID, ser); return (jint) res.status(); } /* * Class: J2Ci_jDVInterface * Method: getSeriesUID * Signature: ()Ljava/lang/String; */ JNIEXPORT jstring JNICALL Java_J2Ci_jDVInterface_getSeriesUID (JNIEnv *env, jobject obj) { DVInterface *dvi = getAddressOfDVInterface (env, obj); const char* res = dvi->getSeriesUID(); if (res == NULL) return NULL; return env->NewStringUTF (res); } /* * Class: J2Ci_jDVInterface * Method: getSeriesStatus * Signature: ()I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVInterface_getSeriesStatus (JNIEnv *env, jobject obj) { DVInterface *dvi = getAddressOfDVInterface (env, obj); return (jint) dvi->getSeriesStatus(); } /* * Class: J2Ci_jDVInterface * Method: getSeriesType * Signature: ()I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVInterface_getSeriesType (JNIEnv *env, jobject obj) { DVInterface *dvi = getAddressOfDVInterface (env, obj); return (jint) dvi->getSeriesType(); } /* * Class: J2Ci_jDVInterface * Method: getInstanceType * Signature: ()I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVInterface_getInstanceType (JNIEnv *env, jobject obj) { DVInterface *dvi = getAddressOfDVInterface (env, obj); return (jint) dvi->getInstanceType(); } /* * Class: J2Ci_jDVInterface * Method: getSeriesNumber * Signature: ()Ljava/lang/String; */ JNIEXPORT jstring JNICALL Java_J2Ci_jDVInterface_getSeriesNumber (JNIEnv *env, jobject obj) { DVInterface *dvi = getAddressOfDVInterface (env, obj); const char* res = dvi->getSeriesNumber(); if (res == NULL) return NULL; return env->NewStringUTF (res); } /* * Class: J2Ci_jDVInterface * Method: getSeriesDate * Signature: ()Ljava/lang/String; */ JNIEXPORT jstring JNICALL Java_J2Ci_jDVInterface_getSeriesDate (JNIEnv *env, jobject obj) { DVInterface *dvi = getAddressOfDVInterface (env, obj); const char* res = dvi->getSeriesDate(); if (res == NULL) return NULL; return env->NewStringUTF (res); } /* * Class: J2Ci_jDVInterface * Method: getSeriesTime * Signature: ()Ljava/lang/String; */ JNIEXPORT jstring JNICALL Java_J2Ci_jDVInterface_getSeriesTime (JNIEnv *env, jobject obj) { DVInterface *dvi = getAddressOfDVInterface (env, obj); const char* res = dvi->getSeriesTime(); if (res == NULL) return NULL; return env->NewStringUTF (res); } /* * Class: J2Ci_jDVInterface * Method: getSeriesDescription * Signature: ()Ljava/lang/String; */ JNIEXPORT jstring JNICALL Java_J2Ci_jDVInterface_getSeriesDescription (JNIEnv *env, jobject obj) { DVInterface *dvi = getAddressOfDVInterface (env, obj); const char* res = dvi->getSeriesDescription(); if (res == NULL) return NULL; return env->NewStringUTF (res); } /* * Class: J2Ci_jDVInterface * Method: getSeriesPerformingPhysiciansName * Signature: ()Ljava/lang/String; */ JNIEXPORT jstring JNICALL Java_J2Ci_jDVInterface_getSeriesPerformingPhysiciansName (JNIEnv *env, jobject obj) { DVInterface *dvi = getAddressOfDVInterface (env, obj); const char* res = dvi->getSeriesPerformingPhysiciansName(); if (res == NULL) return NULL; return env->NewStringUTF (res); } /* * Class: J2Ci_jDVInterface * Method: getSeriesProtocolName * Signature: ()Ljava/lang/String; */ JNIEXPORT jstring JNICALL Java_J2Ci_jDVInterface_getSeriesProtocolName (JNIEnv *env, jobject obj) { DVInterface *dvi = getAddressOfDVInterface (env, obj); const char* res = dvi->getSeriesProtocolName(); if (res == NULL) return NULL; return env->NewStringUTF (res); } /* * Class: J2Ci_jDVInterface * Method: getSeriesOperatorsName * Signature: ()Ljava/lang/String; */ JNIEXPORT jstring JNICALL Java_J2Ci_jDVInterface_getSeriesOperatorsName (JNIEnv *env, jobject obj) { DVInterface *dvi = getAddressOfDVInterface (env, obj); const char* res = dvi->getSeriesOperatorsName(); if (res == NULL) return NULL; return env->NewStringUTF (res); } /* * Class: J2Ci_jDVInterface * Method: getModality * Signature: ()Ljava/lang/String; */ JNIEXPORT jstring JNICALL Java_J2Ci_jDVInterface_getModality (JNIEnv *env, jobject obj) { DVInterface *dvi = getAddressOfDVInterface (env, obj); const char* res = dvi->getModality(); if (res == NULL) return NULL; return env->NewStringUTF (res); } /* * Class: J2Ci_jDVInterface * Method: getNumberOfInstances * Signature: ()I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVInterface_getNumberOfInstances (JNIEnv *env, jobject obj) { DVInterface *dvi = getAddressOfDVInterface (env, obj); return (jint) dvi->getNumberOfInstances(); } /* * Class: J2Ci_jDVInterface * Method: selectInstance * Signature: (I)I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVInterface_selectInstance__I (JNIEnv *env, jobject obj, jint idx) { DVInterface *dvi = getAddressOfDVInterface (env, obj); OFCondition res = dvi->selectInstance(idx); return (jint) res.status(); } /* * Class: J2Ci_jDVInterface * Method: selectInstance * Signature: (Ljava/lang/String;)I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVInterface_selectInstance__Ljava_lang_String_2 (JNIEnv *env, jobject obj, jstring instanceUID) { DVInterface *dvi = getAddressOfDVInterface (env, obj); char *ins = (char*) env->GetStringUTFChars (instanceUID, 0); OFCondition res = dvi->selectInstance (ins); env->ReleaseStringUTFChars (instanceUID, ins); return (jint) res.status(); } /* * Class: J2Ci_jDVInterface * Method: selectInstance * Signature: (Ljava/lang/String;Ljava/lang/String;)I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVInterface_selectInstance__Ljava_lang_String_2Ljava_lang_String_2 (JNIEnv *env, jobject obj, jstring instanceUID, jstring sopClassUID) { DVInterface *dvi = getAddressOfDVInterface (env, obj); char *ins = (char*) env->GetStringUTFChars (instanceUID, 0); char *sop = (char*) env->GetStringUTFChars (sopClassUID, 0); OFCondition res = dvi->selectInstance (ins, sop); env->ReleaseStringUTFChars (instanceUID, ins); env->ReleaseStringUTFChars (sopClassUID, sop); return (jint) res.status(); } /* * Class: J2Ci_jDVInterface * Method: selectInstance * Signature: (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVInterface_selectInstance__Ljava_lang_String_2Ljava_lang_String_2Ljava_lang_String_2 (JNIEnv *env, jobject obj, jstring studyUID, jstring seriesUID, jstring instanceUID) { DVInterface *dvi = getAddressOfDVInterface (env, obj); char *stu = (char*) env->GetStringUTFChars (studyUID, 0); char *ser = (char*) env->GetStringUTFChars (seriesUID, 0); char *ins = (char*) env->GetStringUTFChars (instanceUID, 0); OFCondition res = dvi->selectInstance (stu, ser, ins); env->ReleaseStringUTFChars (studyUID, stu); env->ReleaseStringUTFChars (seriesUID, ser); env->ReleaseStringUTFChars (instanceUID, ins); return (jint) res.status(); } /* * Class: J2Ci_jDVInterface * Method: getInstanceUID * Signature: ()Ljava/lang/String; */ JNIEXPORT jstring JNICALL Java_J2Ci_jDVInterface_getInstanceUID (JNIEnv *env, jobject obj) { DVInterface *dvi = getAddressOfDVInterface (env, obj); const char* res = dvi->getInstanceUID(); if (res == NULL) return NULL; return env->NewStringUTF (res); } /* * Class: J2Ci_jDVInterface * Method: getImageNumber * Signature: ()Ljava/lang/String; */ JNIEXPORT jstring JNICALL Java_J2Ci_jDVInterface_getImageNumber (JNIEnv *env, jobject obj) { DVInterface *dvi = getAddressOfDVInterface (env, obj); const char* res = dvi->getImageNumber(); if (res == NULL) return NULL; return env->NewStringUTF (res); } /* * Class: J2Ci_jDVInterface * Method: getFilename * Signature: ()Ljava/lang/String; */ JNIEXPORT jstring JNICALL Java_J2Ci_jDVInterface_getFilename__ (JNIEnv *env, jobject obj) { DVInterface *dvi = getAddressOfDVInterface (env, obj); const char* res = dvi->getFilename(); if (res == NULL) return NULL; return env->NewStringUTF (res); } /* * Class: J2Ci_jDVInterface * Method: getInstanceStatus * Signature: ()I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVInterface_getInstanceStatus (JNIEnv *env, jobject obj) { DVInterface *dvi = getAddressOfDVInterface (env, obj); return (jint) dvi->getInstanceStatus(); } /* * Class: J2Ci_jDVInterface * Method: getInstanceDescription * Signature: ()Ljava/lang/String; */ JNIEXPORT jstring JNICALL Java_J2Ci_jDVInterface_getInstanceDescription (JNIEnv *env, jobject obj) { DVInterface *dvi = getAddressOfDVInterface (env, obj); const char* res = dvi->getInstanceDescription(); if (res == NULL) return NULL; return env->NewStringUTF (res); } /* * Class: J2Ci_jDVInterface * Method: getPresentationLabel * Signature: ()Ljava/lang/String; */ JNIEXPORT jstring JNICALL Java_J2Ci_jDVInterface_getPresentationLabel (JNIEnv *env, jobject obj) { DVInterface *dvi = getAddressOfDVInterface (env, obj); const char* res = dvi->getPresentationLabel(); if (res == NULL) return NULL; return env->NewStringUTF (res); } /* * Class: J2Ci_jDVInterface * Method: instanceReviewed * Signature: (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVInterface_instanceReviewed (JNIEnv *env, jobject obj, jstring studyUID, jstring seriesUID, jstring instanceUID) { DVInterface *dvi = getAddressOfDVInterface (env, obj); char *stu = (char*) env->GetStringUTFChars (studyUID, 0); char *ser = (char*) env->GetStringUTFChars (seriesUID, 0); char *ins = (char*) env->GetStringUTFChars (instanceUID, 0); OFCondition res = dvi->instanceReviewed(stu, ser, ins); env->ReleaseStringUTFChars (studyUID, stu); env->ReleaseStringUTFChars (seriesUID, ser); env->ReleaseStringUTFChars (instanceUID, ins); return (jint) res.status(); } /* * Class: J2Ci_jDVInterface * Method: deleteInstance * Signature: (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVInterface_deleteInstance (JNIEnv *env, jobject obj, jstring studyUID, jstring seriesUID, jstring instanceUID) { DVInterface *dvi = getAddressOfDVInterface (env, obj); char *stu = (char*) env->GetStringUTFChars (studyUID, 0); char *ser = (char*) env->GetStringUTFChars (seriesUID, 0); char *ins = (char*) env->GetStringUTFChars (instanceUID, 0); OFCondition res = dvi->deleteInstance(stu, ser, ins); env->ReleaseStringUTFChars (studyUID, stu); env->ReleaseStringUTFChars (seriesUID, ser); env->ReleaseStringUTFChars (instanceUID, ins); return (jint) res.status(); } /* * Class: J2Ci_jDVInterface * Method: deleteSeries * Signature: (Ljava/lang/String;Ljava/lang/String;)I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVInterface_deleteSeries (JNIEnv *env, jobject obj, jstring studyUID, jstring seriesUID) { DVInterface *dvi = getAddressOfDVInterface (env, obj); char *stu = (char*) env->GetStringUTFChars (studyUID, 0); char *ser = (char*) env->GetStringUTFChars (seriesUID, 0); OFCondition res = dvi->deleteSeries(stu, ser); env->ReleaseStringUTFChars (studyUID, stu); env->ReleaseStringUTFChars (seriesUID, ser); return (jint) res.status(); } /* * Class: J2Ci_jDVInterface * Method: deleteStudy * Signature: (Ljava/lang/String;)I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVInterface_deleteStudy (JNIEnv *env, jobject obj, jstring studyUID) { DVInterface *dvi = getAddressOfDVInterface (env, obj); char *stu = (char*) env->GetStringUTFChars (studyUID, 0); OFCondition res = dvi->deleteStudy(stu); env->ReleaseStringUTFChars (studyUID, stu); return (jint) res.status(); } /* * Class: J2Ci_jDVInterface * Method: startReceiver * Signature: ()I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVInterface_startReceiver (JNIEnv *env, jobject obj) { DVInterface *dvi = getAddressOfDVInterface (env, obj); OFCondition res = dvi->startReceiver(); return (jint) res.status(); } /* * Class: J2Ci_jDVInterface * Method: terminateReceiver * Signature: ()I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVInterface_terminateReceiver (JNIEnv *env, jobject obj) { DVInterface *dvi = getAddressOfDVInterface (env, obj); OFCondition res = dvi->terminateReceiver(); return (jint) res.status(); } /* * Class: J2Ci_jDVInterface * Method: startQueryRetrieveServer * Signature: ()I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVInterface_startQueryRetrieveServer (JNIEnv *env, jobject obj) { DVInterface *dvi = getAddressOfDVInterface (env, obj); OFCondition res = dvi->startQueryRetrieveServer(); return (jint) res.status(); } /* * Class: J2Ci_jDVInterface * Method: terminateQueryRetrieveServer * Signature: ()I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVInterface_terminateQueryRetrieveServer (JNIEnv *env, jobject obj) { DVInterface *dvi = getAddressOfDVInterface (env, obj); OFCondition res = dvi->terminateQueryRetrieveServer(); return (jint) res.status(); } /* * Class: J2Ci_jDVInterface * Method: newInstancesReceived * Signature: ()Z */ JNIEXPORT jboolean JNICALL Java_J2Ci_jDVInterface_newInstancesReceived (JNIEnv *env, jobject obj) { DVInterface *dvi = getAddressOfDVInterface (env, obj); OFBool res = dvi->newInstancesReceived(); if (res == OFTrue) return JNI_TRUE; else return JNI_FALSE; } /* * Class: J2Ci_jDVInterface * Method: sendStudy * Signature: (Ljava/lang/String;Ljava/lang/String;)I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVInterface_sendStudy (JNIEnv *env, jobject obj, jstring targetID, jstring studyUID) { DVInterface *dvi = getAddressOfDVInterface (env, obj); char *stu = (char*) env->GetStringUTFChars (studyUID, 0); char *tid = (char*) env->GetStringUTFChars (targetID, 0); OFCondition res = dvi->sendStudy(tid, stu); env->ReleaseStringUTFChars (studyUID, stu); env->ReleaseStringUTFChars (targetID, tid); return (jint) res.status(); } /* * Class: J2Ci_jDVInterface * Method: sendSeries * Signature: (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVInterface_sendSeries (JNIEnv *env, jobject obj, jstring targetID, jstring studyUID, jstring seriesUID) { DVInterface *dvi = getAddressOfDVInterface (env, obj); char *tid = (char*) env->GetStringUTFChars (targetID, 0); char *stu = (char*) env->GetStringUTFChars (studyUID, 0); char *ser = (char*) env->GetStringUTFChars (seriesUID, 0); OFCondition res = dvi->sendSeries(tid, stu, ser); env->ReleaseStringUTFChars (targetID, tid); env->ReleaseStringUTFChars (studyUID, stu); env->ReleaseStringUTFChars (seriesUID, ser); return (jint) res.status(); } /* * Class: J2Ci_jDVInterface * Method: sendIOD * Signature: (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVInterface_sendIOD (JNIEnv *env, jobject obj, jstring targetID, jstring studyUID, jstring seriesUID, jstring instanceUID) { DVInterface *dvi = getAddressOfDVInterface (env, obj); char *tid = (char*) env->GetStringUTFChars (targetID, 0); char *stu = (char*) env->GetStringUTFChars (studyUID, 0); char *ser = (char*) env->GetStringUTFChars (seriesUID, 0); char *ins = (char*) env->GetStringUTFChars (instanceUID, 0); OFCondition res = dvi->sendIOD(tid, stu, ser, ins); env->ReleaseStringUTFChars (targetID, tid); env->ReleaseStringUTFChars (studyUID, stu); env->ReleaseStringUTFChars (seriesUID, ser); env->ReleaseStringUTFChars (instanceUID, ins); return (jint) res.status(); } /* * Class: J2Ci_jDVInterface * Method: dumpIOD * Signature: (Ljava/lang/String;)I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVInterface_dumpIOD__Ljava_lang_String_2 (JNIEnv *env, jobject obj, jstring filename) { DVInterface *dvi = getAddressOfDVInterface (env, obj); char *fn = (char*) env->GetStringUTFChars (filename, 0); OFCondition res = dvi->dumpIOD (fn); env->ReleaseStringUTFChars (filename, fn); return (jint) res.status(); } /* * Class: J2Ci_jDVInterface * Method: dumpIOD * Signature: (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVInterface_dumpIOD__Ljava_lang_String_2Ljava_lang_String_2Ljava_lang_String_2 (JNIEnv *env, jobject obj, jstring studyUID, jstring seriesUID, jstring instanceUID) { DVInterface *dvi = getAddressOfDVInterface (env, obj); char *stu = (char*) env->GetStringUTFChars (studyUID, 0); char *ser = (char*) env->GetStringUTFChars (seriesUID, 0); char *ins = (char*) env->GetStringUTFChars (instanceUID, 0); OFCondition res = dvi->dumpIOD (stu, ser, ins); env->ReleaseStringUTFChars (studyUID, stu); env->ReleaseStringUTFChars (seriesUID, ser); env->ReleaseStringUTFChars (instanceUID, ins); return (jint) res.status(); } /* * Class: J2Ci_jDVInterface * Method: checkIOD * Signature: (Ljava/lang/String;)I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVInterface_checkIOD__Ljava_lang_String_2 (JNIEnv *env, jobject obj, jstring filename) { DVInterface *dvi = getAddressOfDVInterface (env, obj); char *fn = (char*) env->GetStringUTFChars (filename, 0); OFCondition res = dvi->checkIOD (fn); env->ReleaseStringUTFChars (filename, fn); return (jint) res.status(); } /* * Class: J2Ci_jDVInterface * Method: checkIOD * Signature: (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVInterface_checkIOD__Ljava_lang_String_2Ljava_lang_String_2Ljava_lang_String_2 (JNIEnv *env, jobject obj, jstring studyUID, jstring seriesUID, jstring instanceUID) { DVInterface *dvi = getAddressOfDVInterface (env, obj); char *stu = (char*) env->GetStringUTFChars (studyUID, 0); char *ser = (char*) env->GetStringUTFChars (seriesUID, 0); char *ins = (char*) env->GetStringUTFChars (instanceUID, 0); OFCondition res = dvi->checkIOD (stu, ser, ins); env->ReleaseStringUTFChars (studyUID, stu); env->ReleaseStringUTFChars (seriesUID, ser); env->ReleaseStringUTFChars (instanceUID, ins); return (jint) res.status(); } /* * Class: J2Ci_jDVInterface * Method: saveDICOMImage * Signature: (Ljava/lang/String;[BJJD)I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVInterface_saveDICOMImage__Ljava_lang_String_2_3BJJD (JNIEnv *env, jobject obj, jstring filename, jbyteArray pixelData, jlong width, jlong height, jdouble aspectRatio) { DVInterface *dvi = getAddressOfDVInterface (env, obj); char *fname = (char*) env->GetStringUTFChars (filename, 0); const void *array; jboolean isCopy; array = (const void*) env->GetByteArrayElements (pixelData, &isCopy); OFCondition res = dvi->saveDICOMImage (fname, array, (long) width, (long) height, aspectRatio); env->ReleaseStringUTFChars (filename, fname); env->ReleaseByteArrayElements (pixelData, (jbyte *) array, JNI_ABORT); return (jint) res.status(); } /* * Class: J2Ci_jDVInterface * Method: saveDICOMImage * Signature: (Ljava/lang/String;[BJJDZLjava/lang/String;)I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVInterface_saveDICOMImage__Ljava_lang_String_2_3BJJDZLjava_lang_String_2 (JNIEnv *env, jobject obj, jstring filename, jbyteArray pixelData, jlong width, jlong height, jdouble aspectRatio, jboolean explicitVR, jstring instanceUID) { DVInterface *dvi = getAddressOfDVInterface (env, obj); char *fname = (char*) env->GetStringUTFChars (filename, 0); char *iUID = (char*) env->GetStringUTFChars (instanceUID, 0); OFBool expVR = explicitVR == JNI_TRUE ? OFTrue : OFFalse; const void *array; jboolean isCopy; array = (const void*) env->GetByteArrayElements (pixelData, &isCopy); OFCondition res = dvi->saveDICOMImage (fname, array, (long) width, (long) height, aspectRatio, expVR, iUID); env->ReleaseStringUTFChars (filename, fname); env->ReleaseStringUTFChars (instanceUID, iUID); env->ReleaseByteArrayElements (pixelData, (jbyte *) array, JNI_ABORT); return (jint) res.status(); } /* * Class: J2Ci_jDVInterface * Method: saveDICOMImage * Signature: ([BJJD)I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVInterface_saveDICOMImage___3BJJD (JNIEnv *env, jobject obj, jbyteArray pixelData, jlong width, jlong height, jdouble aspectRatio) { DVInterface *dvi = getAddressOfDVInterface (env, obj); const void *array; jboolean isCopy; array = (const void*) env->GetByteArrayElements (pixelData, &isCopy); OFCondition res = dvi->saveDICOMImage (array, (long) width, (long) height, aspectRatio); env->ReleaseByteArrayElements (pixelData, (jbyte *) array, JNI_ABORT); return (jint) res.status(); } /* * Class: J2Ci_jDVInterface * Method: saveGrayscaleHardcopyImage * Signature: (Ljava/lang/String;[SJJDZLjava/lang/String;)I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVInterface_saveGrayscaleHardcopyImage__Ljava_lang_String_2_3SJJDZLjava_lang_String_2 (JNIEnv *env, jobject obj, jstring filename, jshortArray pixelData, jlong width, jlong height, jdouble aspectRatio, jboolean explicitVR, jstring instanceUID) { DVInterface *dvi = getAddressOfDVInterface (env, obj); char *fn = (char*) env->GetStringUTFChars (filename, 0); char *ui = (char*) env->GetStringUTFChars (instanceUID, 0); void *array; jboolean isCopy; array = (void*) env->GetShortArrayElements (pixelData, &isCopy); OFBool explVR = (explicitVR == JNI_TRUE) ? OFTrue : OFFalse; OFCondition res = dvi->saveHardcopyGrayscaleImage (fn, array, (unsigned long) width, (unsigned long) height, aspectRatio, explVR, ui); env->ReleaseStringUTFChars (filename, fn); env->ReleaseStringUTFChars (instanceUID, ui); env->ReleaseShortArrayElements (pixelData, (jshort *) array, 0); return res.status(); } /* * Class: J2Ci_jDVInterface * Method: saveGrayscaleHardcopyImage * Signature: ([SJJD)I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVInterface_saveGrayscaleHardcopyImage___3SJJD (JNIEnv *env, jobject obj, jshortArray pixelData, jlong width, jlong height, jdouble aspectRatio) { DVInterface *dvi = getAddressOfDVInterface (env, obj); void *array; jboolean isCopy; array = (void*) env->GetShortArrayElements (pixelData, &isCopy); OFCondition res = dvi->saveHardcopyGrayscaleImage (array, (unsigned long) width, (unsigned long) height, aspectRatio); env->ReleaseShortArrayElements (pixelData, (jshort *) array, 0); return res.status(); } /* * Class: J2Ci_jDVInterface * Method: loadStoredPrint * Signature: (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Z)I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVInterface_loadStoredPrint__Ljava_lang_String_2Ljava_lang_String_2Ljava_lang_String_2Z (JNIEnv *env, jobject obj, jstring studyUID, jstring seriesUID, jstring instanceUID, jboolean changeStatus) { DVInterface *dvi = getAddressOfDVInterface (env, obj); char *stu = (char*) env->GetStringUTFChars (studyUID, 0); char *ser = (char*) env->GetStringUTFChars (seriesUID, 0); char *ins = (char*) env->GetStringUTFChars (instanceUID, 0); OFCondition res = dvi->loadStoredPrint (stu, ser, ins, changeStatus == JNI_TRUE ? OFTrue : OFFalse); env->ReleaseStringUTFChars (studyUID, stu); env->ReleaseStringUTFChars (seriesUID, ser); env->ReleaseStringUTFChars (instanceUID, ins); return (jint) res.status(); } /* * Class: J2Ci_jDVInterface * Method: loadStoredPrint * Signature: (Ljava/lang/String;)I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVInterface_loadStoredPrint__Ljava_lang_String_2 (JNIEnv *env, jobject obj, jstring filename) { DVInterface *dvi = getAddressOfDVInterface (env, obj); char *fn = (char*) env->GetStringUTFChars (filename, 0); OFCondition res = dvi->loadStoredPrint (fn); env->ReleaseStringUTFChars (filename, fn); return (jint) res.status(); } /* * Class: J2Ci_jDVInterface * Method: saveStoredPrint * Signature: (Ljava/lang/String;ZZLjava/lang/String;)I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVInterface_saveStoredPrint__Ljava_lang_String_2ZZLjava_lang_String_2 (JNIEnv *env, jobject obj, jstring filename, jboolean writeRequestedImageSize, jboolean explicitVR, jstring instanceUID) { DVInterface *dvi = getAddressOfDVInterface (env, obj); char *fn = (char*) env->GetStringUTFChars (filename, 0); char *ui = (char*) env->GetStringUTFChars (instanceUID, 0); OFBool explVR = (explicitVR == JNI_TRUE) ? OFTrue : OFFalse; OFBool wrRqImgS = (writeRequestedImageSize == JNI_TRUE) ? OFTrue : OFFalse; OFCondition res = dvi->saveStoredPrint (fn, wrRqImgS, explVR, ui); env->ReleaseStringUTFChars (filename, fn); env->ReleaseStringUTFChars (instanceUID, ui); return (jint) res.status(); } /* * Class: J2Ci_jDVInterface * Method: saveStoredPrint * Signature: (Z)I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVInterface_saveStoredPrint__Z (JNIEnv *env, jobject obj, jboolean writeRequestedImageSize) { DVInterface *dvi = getAddressOfDVInterface (env, obj); OFBool wrRqImgS = (writeRequestedImageSize == JNI_TRUE) ? OFTrue : OFFalse; OFCondition res = dvi->saveStoredPrint (wrRqImgS); return (jint) res.status(); } /* * Class: J2Ci_jDVInterface * Method: getNumberOfPrintPreviews * Signature: ()I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVInterface_getNumberOfPrintPreviews (JNIEnv *env, jobject obj) { DVInterface *dvi = getAddressOfDVInterface (env, obj); return (jint) dvi->getNumberOfPrintPreviews(); } /* * Class: J2Ci_jDVInterface * Method: loadPrintPreview * Signature: (IZZ)I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVInterface_loadPrintPreview (JNIEnv *env, jobject obj, jint idx, jboolean printLUT, jboolean changeStatus) { DVInterface *dvi = getAddressOfDVInterface (env, obj); OFCondition res = dvi->loadPrintPreview(idx, printLUT == JNI_TRUE ? OFTrue : OFFalse, changeStatus == JNI_TRUE ? OFTrue : OFFalse); return (jint) res.status(); } /* * Class: J2Ci_jDVInterface * Method: unloadPrintPreview * Signature: ()V */ JNIEXPORT void JNICALL Java_J2Ci_jDVInterface_unloadPrintPreview (JNIEnv *env, jobject obj) { DVInterface *dvi = getAddressOfDVInterface (env, obj); dvi->unloadPrintPreview(); } /* * Class: J2Ci_jDVInterface * Method: getPrintPreviewSize * Signature: ()J */ JNIEXPORT jlong JNICALL Java_J2Ci_jDVInterface_getPrintPreviewSize (JNIEnv *env, jobject obj) { DVInterface *dvi = getAddressOfDVInterface (env, obj); return (jlong) dvi->getPrintPreviewSize(); } /* * Class: J2Ci_jDVInterface * Method: setMaxPrintPreviewWidthHeight * Signature: (II)V */ JNIEXPORT void JNICALL Java_J2Ci_jDVInterface_setMaxPrintPreviewWidthHeight (JNIEnv *env, jobject obj, jint width, jint height) { DVInterface *dvi = getAddressOfDVInterface (env, obj); dvi->setMaxPrintPreviewWidthHeight(width, height); } /* * Class: J2Ci_jDVInterface * Method: getPrintPreviewWidthHeight * Signature: (LJ2Ci/jIntByRef;LJ2Ci/jIntByRef;)I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVInterface_getPrintPreviewWidthHeight (JNIEnv *env, jobject obj, jobject width, jobject height) { DVInterface *dvi = getAddressOfDVInterface (env, obj); unsigned long w, h; OFCondition res = dvi->getPrintPreviewWidthHeight (w, h); if (res != EC_Normal) return (jint) res.status(); jclass wIntByRefcls = env->GetObjectClass (width); jclass hIntByRefcls = env->GetObjectClass (height); jfieldID wvalue = env->GetFieldID (wIntByRefcls, "value", "I"); jfieldID hvalue = env->GetFieldID (hIntByRefcls, "value", "I"); env->SetIntField (width, wvalue, (jint) w); env->SetIntField (height, hvalue, (jint) h); return (jint) EC_Normal.status(); } /* * Class: J2Ci_jDVInterface * Method: getPrintPreviewBitmap * Signature: ([BJ)I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVInterface_getPrintPreviewBitmap (JNIEnv *env, jobject obj, jbyteArray bitmap, jlong size) { DVInterface *dvi = getAddressOfDVInterface (env, obj); void *array; jboolean isCopy; array = (void*) env->GetByteArrayElements (bitmap, &isCopy); OFCondition res = dvi->getPrintPreviewBitmap (array, (unsigned long) size); env->ReleaseByteArrayElements (bitmap, (jbyte *) array, 0); return (jint) res.status(); } /* * Class: J2Ci_jDVInterface * Method: disablePState * Signature: ()I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVInterface_disablePState (JNIEnv *env, jobject obj) { DVInterface *dvi = getAddressOfDVInterface (env, obj); OFCondition res = dvi->disablePState(); return (jint) res.status(); } /* * Class: J2Ci_jDVInterface * Method: enablePState * Signature: ()I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVInterface_enablePState (JNIEnv *env, jobject obj) { DVInterface *dvi = getAddressOfDVInterface (env, obj); OFCondition res = dvi->enablePState(); return (jint) res.status(); } /* * Class: J2Ci_jDVInterface * Method: getNumberOfPStates * Signature: ()I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVInterface_getNumberOfPStates (JNIEnv *env, jobject obj) { DVInterface *dvi = getAddressOfDVInterface (env, obj); return (jint) dvi->getNumberOfPStates(); } /* * Class: J2Ci_jDVInterface * Method: selectPState * Signature: (IZ)I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVInterface_selectPState (JNIEnv *env, jobject obj, jint idx, jboolean changeStatus) { DVInterface *dvi = getAddressOfDVInterface (env, obj); OFCondition res = dvi->selectPState(idx, changeStatus == JNI_TRUE ? OFTrue : OFFalse); return (jint) res.status(); } /* * Class: J2Ci_jDVInterface * Method: getPStateDescription * Signature: (I)Ljava/lang/String; */ JNIEXPORT jstring JNICALL Java_J2Ci_jDVInterface_getPStateDescription (JNIEnv *env, jobject obj, jint idx) { DVInterface *dvi = getAddressOfDVInterface (env, obj); const char* res = dvi->getPStateDescription(idx); if (res == NULL) return NULL; return env->NewStringUTF (res); } /* * Class: J2Ci_jDVInterface * Method: getPStateLabel * Signature: (I)Ljava/lang/String; */ JNIEXPORT jstring JNICALL Java_J2Ci_jDVInterface_getPStateLabel (JNIEnv *env, jobject obj, jint idx) { DVInterface *dvi = getAddressOfDVInterface (env, obj); const char* res = dvi->getPStateLabel(idx); if (res == NULL) return NULL; return env->NewStringUTF (res); } /* * Class: J2Ci_jDVInterface * Method: isDisplayTransformPossible * Signature: (I)Z */ JNIEXPORT jboolean JNICALL Java_J2Ci_jDVInterface_isDisplayTransformPossible (JNIEnv *env, jobject obj, jint transform) { DVInterface *dvi = getAddressOfDVInterface (env, obj); OFBool res = dvi->isDisplayTransformPossible ((DVPSDisplayTransform)transform); if (res == OFTrue) return JNI_TRUE; else return JNI_FALSE; } /* * Class: J2Ci_jDVInterface * Method: setAmbientLightValue * Signature: (D)I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVInterface_setAmbientLightValue (JNIEnv *env, jobject obj, jdouble alv) { DVInterface *dvi = getAddressOfDVInterface (env, obj); OFCondition res = dvi->setAmbientLightValue(alv); return (jint) res.status(); } /* * Class: J2Ci_jDVInterface * Method: getAmbientLightValue * Signature: (LJ2Ci/jDoubleByRef;)I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVInterface_getAmbientLightValue (JNIEnv *env, jobject obj, jobject alv) { DVInterface *dvi = getAddressOfDVInterface (env, obj); double _alv = 0.0; OFCondition res = dvi->getAmbientLightValue(_alv); if (res != EC_Normal) return (jint) res.status(); jclass DoubleByRefcls = env->GetObjectClass (alv); jfieldID value = env->GetFieldID (DoubleByRefcls, "value", "D"); env->SetDoubleField (alv, value, _alv); return (jint) EC_Normal.status(); } /* * Class: J2Ci_jDVInterface * Method: setCurrentPrinter * Signature: (Ljava/lang/String;)I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVInterface_setCurrentPrinter (JNIEnv *env, jobject obj, jstring targetID) { DVInterface *dvi = getAddressOfDVInterface (env, obj); char *tid = (char*) env->GetStringUTFChars (targetID, 0); OFCondition res = dvi->setCurrentPrinter(tid); env->ReleaseStringUTFChars (targetID, tid); return (jint) res.status(); } /* * Class: J2Ci_jDVInterface * Method: getCurrentPrinter * Signature: ()Ljava/lang/String; */ JNIEXPORT jstring JNICALL Java_J2Ci_jDVInterface_getCurrentPrinter (JNIEnv *env, jobject obj) { DVInterface *dvi = getAddressOfDVInterface (env, obj); const char* res = dvi->getCurrentPrinter(); if (res == NULL) return NULL; return env->NewStringUTF (res); } /* * Class: J2Ci_jDVInterface * Method: setPrinterMediumType * Signature: (Ljava/lang/String;)I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVInterface_setPrinterMediumType (JNIEnv *env, jobject obj, jstring value) { DVInterface *dvi = getAddressOfDVInterface (env, obj); char *val = (char *) env->GetStringUTFChars (value, 0); OFCondition res = dvi->setPrinterMediumType(val); env->ReleaseStringUTFChars (value, val); return (jint) res.status(); } /* * Class: J2Ci_jDVInterface * Method: getPrinterMediumType * Signature: ()Ljava/lang/String; */ JNIEXPORT jstring JNICALL Java_J2Ci_jDVInterface_getPrinterMediumType (JNIEnv *env, jobject obj) { DVInterface *dvi = getAddressOfDVInterface (env, obj); const char* res = dvi->getPrinterMediumType(); if (res == NULL) return NULL; return env->NewStringUTF (res); } /* * Class: J2Ci_jDVInterface * Method: setPrinterFilmDestination * Signature: (Ljava/lang/String;)I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVInterface_setPrinterFilmDestination (JNIEnv *env, jobject obj, jstring value) { DVInterface *dvi = getAddressOfDVInterface (env, obj); char *val = (char *) env->GetStringUTFChars (value, 0); OFCondition res = dvi->setPrinterFilmDestination(val); env->ReleaseStringUTFChars (value, val); return (jint) res.status(); } /* * Class: J2Ci_jDVInterface * Method: getPrinterFilmDestination * Signature: ()Ljava/lang/String; */ JNIEXPORT jstring JNICALL Java_J2Ci_jDVInterface_getPrinterFilmDestination (JNIEnv *env, jobject obj) { DVInterface *dvi = getAddressOfDVInterface (env, obj); const char* res = dvi->getPrinterFilmDestination(); if (res == NULL) return NULL; return env->NewStringUTF (res); } /* * Class: J2Ci_jDVInterface * Method: setPrinterFilmSessionLabel * Signature: (Ljava/lang/String;)I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVInterface_setPrinterFilmSessionLabel (JNIEnv *env, jobject obj, jstring value) { DVInterface *dvi = getAddressOfDVInterface (env, obj); char *val = (char *) env->GetStringUTFChars (value, 0); OFCondition res = dvi->setPrinterFilmSessionLabel(val); env->ReleaseStringUTFChars (value, val); return (jint) res.status(); } /* * Class: J2Ci_jDVInterface * Method: getPrinterFilmSessionLabel * Signature: ()Ljava/lang/String; */ JNIEXPORT jstring JNICALL Java_J2Ci_jDVInterface_getPrinterFilmSessionLabel (JNIEnv *env, jobject obj) { DVInterface *dvi = getAddressOfDVInterface (env, obj); const char* res = dvi->getPrinterFilmSessionLabel(); if (res == NULL) return NULL; return env->NewStringUTF (res); } /* * Class: J2Ci_jDVInterface * Method: setPrinterPriority * Signature: (Ljava/lang/String;)I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVInterface_setPrinterPriority (JNIEnv *env, jobject obj, jstring value) { DVInterface *dvi = getAddressOfDVInterface (env, obj); char *val = (char*) env->GetStringUTFChars (value, 0); OFCondition res = dvi->setPrinterPriority(val); env->ReleaseStringUTFChars (value, val); return (jint) res.status(); } /* * Class: J2Ci_jDVInterface * Method: getPrinterPriority * Signature: ()Ljava/lang/String; */ JNIEXPORT jstring JNICALL Java_J2Ci_jDVInterface_getPrinterPriority (JNIEnv *env, jobject obj) { DVInterface *dvi = getAddressOfDVInterface (env, obj); const char* res = dvi->getPrinterPriority(); if (res == NULL) return NULL; return env->NewStringUTF (res); } /* * Class: J2Ci_jDVInterface * Method: setPrinterOwnerID * Signature: (Ljava/lang/String;)I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVInterface_setPrinterOwnerID (JNIEnv *env, jobject obj, jstring value) { DVInterface *dvi = getAddressOfDVInterface (env, obj); char *val = (char*) env->GetStringUTFChars (value, 0); OFCondition res = dvi->setPrinterOwnerID(val); env->ReleaseStringUTFChars (value, val); return (jint) res.status(); } /* * Class: J2Ci_jDVInterface * Method: getPrinterOwnerID * Signature: ()Ljava/lang/String; */ JNIEXPORT jstring JNICALL Java_J2Ci_jDVInterface_getPrinterOwnerID (JNIEnv *env, jobject obj) { DVInterface *dvi = getAddressOfDVInterface (env, obj); const char* res = dvi->getPrinterOwnerID(); if (res == NULL) return NULL; return env->NewStringUTF (res); } /* * Class: J2Ci_jDVInterface * Method: setPrinterNumberOfCopies * Signature: (I)I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVInterface_setPrinterNumberOfCopies (JNIEnv *env, jobject obj, jint value) { DVInterface *dvi = getAddressOfDVInterface (env, obj); return (jint) dvi->setPrinterNumberOfCopies((long) value).status(); } /* * Class: J2Ci_jDVInterface * Method: getPrinterNumberOfCopies * Signature: ()I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVInterface_getPrinterNumberOfCopies (JNIEnv *env, jobject obj) { DVInterface *dvi = getAddressOfDVInterface (env, obj); return (jint) dvi->getPrinterNumberOfCopies(); } /* * Class: J2Ci_jDVInterface * Method: clearFilmSessionSettings * Signature: ()V */ JNIEXPORT void JNICALL Java_J2Ci_jDVInterface_clearFilmSessionSettings (JNIEnv *env, jobject obj) { DVInterface *dvi = getAddressOfDVInterface (env, obj); dvi->clearFilmSessionSettings(); } /* * Class: J2Ci_jDVInterface * Method: selectDisplayPresentationLUT * Signature: (Ljava/lang/String;)I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVInterface_selectDisplayPresentationLUT (JNIEnv *env, jobject obj, jstring lutID) { DVInterface *dvi = getAddressOfDVInterface (env, obj); char *lid = (char*) env->GetStringUTFChars (lutID, 0); OFCondition res = dvi->selectDisplayPresentationLUT(lid); env->ReleaseStringUTFChars (lutID, lid); return (jint) res.status(); } /* * Class: J2Ci_jDVInterface * Method: getDisplayPresentationLUTID * Signature: ()Ljava/lang/String; */ JNIEXPORT jstring JNICALL Java_J2Ci_jDVInterface_getDisplayPresentationLUTID (JNIEnv *env, jobject obj) { DVInterface *dvi = getAddressOfDVInterface (env, obj); const char* res = dvi->getDisplayPresentationLUTID(); if (res == NULL) return NULL; return env->NewStringUTF (res); } /* * Class: J2Ci_jDVInterface * Method: selectPrintPresentationLUT * Signature: (Ljava/lang/String;)I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVInterface_selectPrintPresentationLUT (JNIEnv *env, jobject obj, jstring lutID) { DVInterface *dvi = getAddressOfDVInterface (env, obj); char *lid = (char*) env->GetStringUTFChars (lutID, 0); OFCondition res = dvi->selectPrintPresentationLUT(lid); env->ReleaseStringUTFChars (lutID, lid); return (jint) res.status(); } /* * Class: J2Ci_jDVInterface * Method: getPrintPresentationLUTID * Signature: ()Ljava/lang/String; */ JNIEXPORT jstring JNICALL Java_J2Ci_jDVInterface_getPrintPresentationLUTID (JNIEnv *env, jobject obj) { DVInterface *dvi = getAddressOfDVInterface (env, obj); const char* res = dvi->getPrintPresentationLUTID(); if (res == NULL) return NULL; return env->NewStringUTF (res); } /* * Class: J2Ci_jDVInterface * Method: spoolPrintJob * Signature: (Z)I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVInterface_spoolPrintJob (JNIEnv *env, jobject obj, jboolean deletePrintedImages) { DVInterface *dvi = getAddressOfDVInterface (env, obj); return (jint) dvi->spoolPrintJob((deletePrintedImages == JNI_TRUE) ? OFTrue : OFFalse).status(); } /* * Class: J2Ci_jDVInterface * Method: startPrintSpooler * Signature: ()I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVInterface_startPrintSpooler (JNIEnv *env, jobject obj) { DVInterface *dvi = getAddressOfDVInterface (env, obj); return (jint) dvi->startPrintSpooler().status(); } /* * Class: J2Ci_jDVInterface * Method: terminatePrintSpooler * Signature: ()I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVInterface_terminatePrintSpooler (JNIEnv *env, jobject obj) { DVInterface *dvi = getAddressOfDVInterface (env, obj); return (jint) dvi->terminatePrintSpooler().status(); } /* * Class: J2Ci_jDVInterface * Method: startPrintServer * Signature: ()I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVInterface_startPrintServer (JNIEnv *env, jobject obj) { DVInterface *dvi = getAddressOfDVInterface (env, obj); return (jint) dvi->startPrintServer().status(); } /* * Class: J2Ci_jDVInterface * Method: terminatePrintServer * Signature: ()I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVInterface_terminatePrintServer (JNIEnv *env, jobject obj) { DVInterface *dvi = getAddressOfDVInterface (env, obj); return (jint) dvi->terminatePrintServer().status(); } /* * Class: J2Ci_jDVInterface * Method: addToPrintHardcopyFromDB * Signature: (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVInterface_addToPrintHardcopyFromDB (JNIEnv *env, jobject obj, jstring studyUID, jstring seriesUID, jstring instanceUID) { DVInterface *dvi = getAddressOfDVInterface (env, obj); char *stu = (char*) env->GetStringUTFChars (studyUID, 0); char *ser = (char*) env->GetStringUTFChars (seriesUID, 0); char *ins = (char*) env->GetStringUTFChars (instanceUID, 0); OFCondition res = dvi->addToPrintHardcopyFromDB (stu, ser, ins); env->ReleaseStringUTFChars (studyUID, stu); env->ReleaseStringUTFChars (seriesUID, ser); env->ReleaseStringUTFChars (instanceUID, ins); return (jint) res.status(); } /* * Class: J2Ci_jDVInterface * Method: spoolStoredPrintFromDB * Signature: (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVInterface_spoolStoredPrintFromDB (JNIEnv *env, jobject obj, jstring studyUID, jstring seriesUID, jstring instanceUID) { DVInterface *dvi = getAddressOfDVInterface (env, obj); char *stu = (char*) env->GetStringUTFChars (studyUID, 0); char *ser = (char*) env->GetStringUTFChars (seriesUID, 0); char *ins = (char*) env->GetStringUTFChars (instanceUID, 0); OFCondition res = dvi->spoolStoredPrintFromDB (stu, ser, ins); env->ReleaseStringUTFChars (studyUID, stu); env->ReleaseStringUTFChars (seriesUID, ser); env->ReleaseStringUTFChars (instanceUID, ins); return (jint) res.status(); } /* * Class: J2Ci_jDVInterface * Method: isActiveAnnotation * Signature: ()Z */ JNIEXPORT jboolean JNICALL Java_J2Ci_jDVInterface_isActiveAnnotation (JNIEnv *env, jobject obj) { DVInterface *dvi = getAddressOfDVInterface (env, obj); OFBool res = dvi->isActiveAnnotation (); if (res == OFTrue) return JNI_TRUE; else return JNI_FALSE; } /* * Class: J2Ci_jDVInterface * Method: getPrependDateTime * Signature: ()Z */ JNIEXPORT jboolean JNICALL Java_J2Ci_jDVInterface_getPrependDateTime (JNIEnv *env, jobject obj) { DVInterface *dvi = getAddressOfDVInterface (env, obj); OFBool res = dvi->getPrependDateTime (); if (res == OFTrue) return JNI_TRUE; else return JNI_FALSE; } /* * Class: J2Ci_jDVInterface * Method: getPrependPrinterName * Signature: ()Z */ JNIEXPORT jboolean JNICALL Java_J2Ci_jDVInterface_getPrependPrinterName (JNIEnv *env, jobject obj) { DVInterface *dvi = getAddressOfDVInterface (env, obj); OFBool res = dvi->getPrependPrinterName (); if (res == OFTrue) return JNI_TRUE; else return JNI_FALSE; } /* * Class: J2Ci_jDVInterface * Method: getPrependLighting * Signature: ()Z */ JNIEXPORT jboolean JNICALL Java_J2Ci_jDVInterface_getPrependLighting (JNIEnv *env, jobject obj) { DVInterface *dvi = getAddressOfDVInterface (env, obj); OFBool res = dvi->getPrependLighting (); if (res == OFTrue) return JNI_TRUE; else return JNI_FALSE; } /* * Class: J2Ci_jDVInterface * Method: getAnnotationText * Signature: ()Ljava/lang/String; */ JNIEXPORT jstring JNICALL Java_J2Ci_jDVInterface_getAnnotationText (JNIEnv *env, jobject obj) { DVInterface *dvi = getAddressOfDVInterface (env, obj); const char* res = dvi->getAnnotationText(); if (res == NULL) return NULL; return env->NewStringUTF (res); } /* * Class: J2Ci_jDVInterface * Method: setActiveAnnotation * Signature: (Z)V */ JNIEXPORT void JNICALL Java_J2Ci_jDVInterface_setActiveAnnotation (JNIEnv *env, jobject obj, jboolean value) { DVInterface *dvi = getAddressOfDVInterface (env, obj); dvi->setActiveAnnotation(value == JNI_TRUE ? OFTrue : OFFalse); } /* * Class: J2Ci_jDVInterface * Method: setPrependDateTime * Signature: (Z)V */ JNIEXPORT void JNICALL Java_J2Ci_jDVInterface_setPrependDateTime (JNIEnv *env, jobject obj, jboolean value) { DVInterface *dvi = getAddressOfDVInterface (env, obj); dvi->setPrependDateTime(value == JNI_TRUE ? OFTrue : OFFalse); } /* * Class: J2Ci_jDVInterface * Method: setPrependPrinterName * Signature: (Z)V */ JNIEXPORT void JNICALL Java_J2Ci_jDVInterface_setPrependPrinterName (JNIEnv *env, jobject obj, jboolean value) { DVInterface *dvi = getAddressOfDVInterface (env, obj); dvi->setPrependPrinterName(value == JNI_TRUE ? OFTrue : OFFalse); } /* * Class: J2Ci_jDVInterface * Method: setPrependLighting * Signature: (Z)V */ JNIEXPORT void JNICALL Java_J2Ci_jDVInterface_setPrependLighting (JNIEnv *env, jobject obj, jboolean value) { DVInterface *dvi = getAddressOfDVInterface (env, obj); dvi->setPrependLighting(value == JNI_TRUE ? OFTrue : OFFalse); } /* * Class: J2Ci_jDVInterface * Method: setAnnotationText * Signature: (Ljava/lang/String;)V */ JNIEXPORT void JNICALL Java_J2Ci_jDVInterface_setAnnotationText (JNIEnv *env, jobject obj, jstring value) { DVInterface *dvi = getAddressOfDVInterface (env, obj); jmethodID mid = env->GetMethodID(env->FindClass("java/lang/String"), "getBytes", "(Ljava/lang/String;)[B"); if (mid) { jbyteArray array = (jbyteArray) env->CallObjectMethod(value, mid, env->NewStringUTF(JAVA_ENCODING_STRING)); if (array) { jbyte *string = env->GetByteArrayElements(array, 0); dvi->setAnnotationText(OFString((char *)string, env->GetArrayLength(array)).c_str()); env->ReleaseByteArrayElements(array, string, 0); } } } /* * Class: J2Ci_jDVInterface * Method: verifyUserPassword * Signature: (Ljava/lang/String;Ljava/lang/String;)Z */ JNIEXPORT jboolean JNICALL Java_J2Ci_jDVInterface_verifyUserPassword (JNIEnv *env, jobject obj, jstring userID, jstring passwd) { DVInterface *dvi = getAddressOfDVInterface (env, obj); char *str1 = (char*) env->GetStringUTFChars (userID, 0); char *str2 = (char*) env->GetStringUTFChars (passwd, 0); OFBool res = dvi->verifyUserPassword (str1, str2); env->ReleaseStringUTFChars (userID, str1); env->ReleaseStringUTFChars (passwd, str2); return (jboolean) res; } /* * Class: J2Ci_jDVInterface * Method: verifyAndSignStructuredReport * Signature: (Ljava/lang/String;Ljava/lang/String;I)I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVInterface_verifyAndSignStructuredReport (JNIEnv *env, jobject obj, jstring userID, jstring passwd, jint mode) { DVInterface *dvi = getAddressOfDVInterface (env, obj); char *str1 = (char*) env->GetStringUTFChars (userID, 0); char *str2 = (char*) env->GetStringUTFChars (passwd, 0); OFCondition res = dvi->verifyAndSignStructuredReport (str1, str2, (DVPSVerifyAndSignMode) mode); env->ReleaseStringUTFChars (userID, str1); env->ReleaseStringUTFChars (passwd, str2); return (jint) res.status(); } /* * Class: J2Ci_jDVInterface * Method: setLogFilter * Signature: (I)V */ JNIEXPORT void JNICALL Java_J2Ci_jDVInterface_setLogFilter (JNIEnv *env, jobject obj, jint level) { DVInterface *dvi = getAddressOfDVInterface (env, obj); dvi->setLogFilter ((DVPSLogMessageLevel)level); } /* * Class: J2Ci_jDVInterface * Method: writeLogMessage * Signature: (ILjava/lang/String;Ljava/lang/String;)I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVInterface_writeLogMessage (JNIEnv *env, jobject obj, jint level, jstring module, jstring message) { DVInterface *dvi = getAddressOfDVInterface (env, obj); char *mod = (char*) env->GetStringUTFChars (module, 0); char *msg = (char*) env->GetStringUTFChars (message, 0); OFCondition res = dvi->writeLogMessage ((DVPSLogMessageLevel)level, mod, msg); env->ReleaseStringUTFChars (module, mod); env->ReleaseStringUTFChars (message, msg); return (jint) res.status(); } /* * Class: J2Ci_jDVInterface * Method: getCurrentSignatureValidationHTML * Signature: (I)Ljava/lang/String; */ JNIEXPORT jstring JNICALL Java_J2Ci_jDVInterface_getCurrentSignatureValidationHTML (JNIEnv *env, jobject obj, jint objtype) { DVInterface *dvi = getAddressOfDVInterface (env, obj); const char* res = dvi->getCurrentSignatureValidationHTML ((DVPSObjectType) objtype); if (res == NULL) return NULL; return env->NewStringUTF (res); } /* * Class: J2Ci_jDVInterface * Method: getCurrentSignatureValidationOverview * Signature: ()Ljava/lang/String; */ JNIEXPORT jstring JNICALL Java_J2Ci_jDVInterface_getCurrentSignatureValidationOverview (JNIEnv *env, jobject obj) { DVInterface *dvi = getAddressOfDVInterface (env, obj); const char* res = dvi->getCurrentSignatureValidationOverview (); if (res == NULL) return NULL; return env->NewStringUTF (res); } /* * Class: J2Ci_jDVInterface * Method: getCurrentSignatureStatus * Signature: (I)I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVInterface_getCurrentSignatureStatus (JNIEnv *env, jobject obj, jint objtype) { DVInterface *dvi = getAddressOfDVInterface (env, obj); return (jint) dvi->getCurrentSignatureStatus((DVPSObjectType) objtype); } /* * Class: J2Ci_jDVInterface * Method: getCombinedImagePStateSignatureStatus * Signature: ()I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVInterface_getCombinedImagePStateSignatureStatus (JNIEnv *env, jobject obj) { DVInterface *dvi = getAddressOfDVInterface (env, obj); return (jint) dvi->getCombinedImagePStateSignatureStatus(); } /* * Class: J2Ci_jDVInterface * Method: getNumberOfCorrectSignatures * Signature: (I)I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVInterface_getNumberOfCorrectSignatures (JNIEnv *env, jobject obj, jint objtype) { DVInterface *dvi = getAddressOfDVInterface (env, obj); return (jint) dvi->getNumberOfCorrectSignatures((DVPSObjectType) objtype); } /* * Class: J2Ci_jDVInterface * Method: getNumberOfUntrustworthySignatures * Signature: (I)I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVInterface_getNumberOfUntrustworthySignatures (JNIEnv *env, jobject obj, jint objtype) { DVInterface *dvi = getAddressOfDVInterface (env, obj); return (jint) dvi->getNumberOfUntrustworthySignatures((DVPSObjectType) objtype); } /* * Class: J2Ci_jDVInterface * Method: getNumberOfCorruptSignatures * Signature: (I)I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVInterface_getNumberOfCorruptSignatures (JNIEnv *env, jobject obj, jint objtype) { DVInterface *dvi = getAddressOfDVInterface (env, obj); return (jint) dvi->getNumberOfCorruptSignatures((DVPSObjectType) objtype); } /* * Class: J2Ci_jDVInterface * Method: disableImageAndPState * Signature: ()V */ JNIEXPORT void JNICALL Java_J2Ci_jDVInterface_disableImageAndPState (JNIEnv *env, jobject obj) { DVInterface *dvi = getAddressOfDVInterface (env, obj); dvi->disableImageAndPState(); } /* * Class: J2Ci_jDVInterface * Method: getNumberOfTargets * Signature: (I)I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVInterface_getNumberOfTargets (JNIEnv *env, jobject obj, jint peerType) { DVInterface *dvi = getAddressOfDVInterface (env, obj); int res = dvi->getNumberOfTargets((DVPSPeerType) peerType); return (jint) res; } /* * Class: J2Ci_jDVInterface * Method: getTargetID * Signature: (II)Ljava/lang/String; */ JNIEXPORT jstring JNICALL Java_J2Ci_jDVInterface_getTargetID (JNIEnv *env, jobject obj, jint idx, jint peerType) { DVInterface *dvi = getAddressOfDVInterface (env, obj); const char* res = dvi->getTargetID(idx, (DVPSPeerType) peerType); if (res == NULL) return NULL; return env->NewStringUTF (res); } /* * Class: J2Ci_jDVInterface * Method: getTargetDescription * Signature: (Ljava/lang/String;)Ljava/lang/String; */ JNIEXPORT jstring JNICALL Java_J2Ci_jDVInterface_getTargetDescription (JNIEnv *env , jobject obj, jstring targetID) { DVInterface *dvi = getAddressOfDVInterface (env, obj); char *tid = (char*) env->GetStringUTFChars (targetID, 0); const char *res = dvi->getTargetDescription (tid); env->ReleaseStringUTFChars (targetID, tid); if (res == NULL) return NULL; return env->NewStringUTF (res); } /* * Class: J2Ci_jDVInterface * Method: getTargetHostname * Signature: (Ljava/lang/String;)Ljava/lang/String; */ JNIEXPORT jstring JNICALL Java_J2Ci_jDVInterface_getTargetHostname (JNIEnv *env, jobject obj, jstring targetID) { DVInterface *dvi = getAddressOfDVInterface (env, obj); char *tid = (char*) env->GetStringUTFChars (targetID, 0); const char* res = dvi->getTargetHostname(tid); env->ReleaseStringUTFChars (targetID, tid); if (res == NULL) return NULL; return env->NewStringUTF (res); } /* * Class: J2Ci_jDVInterface * Method: getTargetPort * Signature: (Ljava/lang/String;)I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVInterface_getTargetPort (JNIEnv *env, jobject obj, jstring targetID) { DVInterface *dvi = getAddressOfDVInterface (env, obj); char *tid = (char*) env->GetStringUTFChars (targetID, 0); int res = dvi->getTargetPort(tid); env->ReleaseStringUTFChars (targetID, tid); return (jint) res; } /* * Class: J2Ci_jDVInterface * Method: getTargetType * Signature: (Ljava/lang/String;)I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVInterface_getTargetType (JNIEnv *env, jobject obj, jstring targetID) { DVInterface *dvi = getAddressOfDVInterface (env, obj); char *tid = (char*) env->GetStringUTFChars (targetID, 0); DVPSPeerType res = dvi->getTargetType(tid); env->ReleaseStringUTFChars (targetID, tid); return (jint) res; } /* * Class: J2Ci_jDVInterface * Method: getTargetAETitle * Signature: (Ljava/lang/String;)Ljava/lang/String; */ JNIEXPORT jstring JNICALL Java_J2Ci_jDVInterface_getTargetAETitle (JNIEnv *env, jobject obj, jstring targetID) { DVInterface *dvi = getAddressOfDVInterface (env, obj); char *tid = (char*) env->GetStringUTFChars (targetID, 0); const char* res = dvi->getTargetAETitle (tid); env->ReleaseStringUTFChars (targetID, tid); if (res == NULL) return NULL; return env->NewStringUTF (res); } /* * Class: J2Ci_jDVInterface * Method: getTargetMaxPDU * Signature: (Ljava/lang/String;)I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVInterface_getTargetMaxPDU (JNIEnv *env, jobject obj, jstring targetID) { DVInterface *dvi = getAddressOfDVInterface (env, obj); char *tid = (char*) env->GetStringUTFChars (targetID, 0); int res = dvi->getTargetMaxPDU (tid); env->ReleaseStringUTFChars (targetID, tid); return (jint) res; } /* * Class: J2Ci_jDVInterface * Method: getTargetImplicitOnly * Signature: (Ljava/lang/String;)Z */ JNIEXPORT jboolean JNICALL Java_J2Ci_jDVInterface_getTargetImplicitOnly (JNIEnv *env, jobject obj, jstring targetID) { DVInterface *dvi = getAddressOfDVInterface (env, obj); char *tid = (char*) env->GetStringUTFChars (targetID, 0); OFBool res = dvi->getTargetImplicitOnly (tid); env->ReleaseStringUTFChars (targetID, tid); if (res == OFTrue) return JNI_TRUE; else return JNI_FALSE; } /* * Class: J2Ci_jDVInterface * Method: getTargetDisableNewVRs * Signature: (Ljava/lang/String;)Z */ JNIEXPORT jboolean JNICALL Java_J2Ci_jDVInterface_getTargetDisableNewVRs (JNIEnv *env, jobject obj, jstring targetID) { DVInterface *dvi = getAddressOfDVInterface (env, obj); char *tid = (char*) env->GetStringUTFChars (targetID, 0); OFBool res = dvi->getTargetDisableNewVRs(tid); env->ReleaseStringUTFChars (targetID, tid); if (res == OFTrue) return JNI_TRUE; else return JNI_FALSE; } /* * Class: J2Ci_jDVInterface * Method: getTargetBitPreservingMode * Signature: (Ljava/lang/String;)Z */ JNIEXPORT jboolean JNICALL Java_J2Ci_jDVInterface_getTargetBitPreservingMode (JNIEnv *env, jobject obj, jstring targetID) { DVInterface *dvi = getAddressOfDVInterface (env, obj); char *tid = (char*) env->GetStringUTFChars (targetID, 0); OFBool res = dvi->getTargetBitPreservingMode(tid); env->ReleaseStringUTFChars (targetID, tid); if (res == OFTrue) return JNI_TRUE; else return JNI_FALSE; } /* * Class: J2Ci_jDVInterface * Method: getTargetUseTLS * Signature: (Ljava/lang/String;)Z */ JNIEXPORT jboolean JNICALL Java_J2Ci_jDVInterface_getTargetUseTLS (JNIEnv *env, jobject obj, jstring targetID) { DVInterface *dvi = getAddressOfDVInterface (env, obj); char *tid = (char*) env->GetStringUTFChars (targetID, 0); OFBool res = dvi->getTargetUseTLS(tid); env->ReleaseStringUTFChars (targetID, tid); if (res == OFTrue) return JNI_TRUE; else return JNI_FALSE; } /* * Class: J2Ci_jDVInterface * Method: getTargetNumberOfCipherSuites * Signature: (Ljava/lang/String;)I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVInterface_getTargetNumberOfCipherSuites (JNIEnv *env, jobject obj, jstring targetID) { DVInterface *dvi = getAddressOfDVInterface (env, obj); char *tid = (char*) env->GetStringUTFChars (targetID, 0); jint res = (jint) dvi->getTargetNumberOfCipherSuites(tid); env->ReleaseStringUTFChars (targetID, tid); return res; } /* * Class: J2Ci_jDVInterface * Method: getTargetCipherSuite * Signature: (Ljava/lang/String;I)Ljava/lang/String; */ JNIEXPORT jstring JNICALL Java_J2Ci_jDVInterface_getTargetCipherSuite (JNIEnv *env, jobject obj, jstring targetID, jint idx) { DVInterface *dvi = getAddressOfDVInterface (env, obj); char *tid = (char*) env->GetStringUTFChars (targetID, 0); OFString param; const char* res = dvi->getTargetCipherSuite (tid, idx, param); env->ReleaseStringUTFChars (targetID, tid); if (res == NULL) return NULL; return env->NewStringUTF (res); } /* * Class: J2Ci_jDVInterface * Method: getTargetPeerAuthentication * Signature: (Ljava/lang/String;)I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVInterface_getTargetPeerAuthentication (JNIEnv *env, jobject obj, jstring targetID) { DVInterface *dvi = getAddressOfDVInterface (env, obj); char *tid = (char*) env->GetStringUTFChars (targetID, 0); DVPSCertificateVerificationType res = dvi->getTargetPeerAuthentication(tid); env->ReleaseStringUTFChars (targetID, tid); return (jint) res; } /* * Class: J2Ci_jDVInterface * Method: getTargetPrinterSupportsPresentationLUT * Signature: (Ljava/lang/String;)Z */ JNIEXPORT jboolean JNICALL Java_J2Ci_jDVInterface_getTargetPrinterSupportsPresentationLUT (JNIEnv *env, jobject obj, jstring targetID) { DVInterface *dvi = getAddressOfDVInterface (env, obj); char *tid = (char*) env->GetStringUTFChars (targetID, 0); OFBool res = dvi->getTargetPrinterSupportsPresentationLUT (tid); env->ReleaseStringUTFChars (targetID, tid); if (res == OFTrue) return JNI_TRUE; else return JNI_FALSE; } /* * Class: J2Ci_jDVInterface * Method: getTargetPrinterSupports12BitTransmission * Signature: (Ljava/lang/String;)Z */ JNIEXPORT jboolean JNICALL Java_J2Ci_jDVInterface_getTargetPrinterSupports12BitTransmission (JNIEnv *env, jobject obj, jstring targetID) { DVInterface *dvi = getAddressOfDVInterface (env, obj); char *tid = (char*) env->GetStringUTFChars (targetID, 0); OFBool res = dvi->getTargetPrinterSupports12BitTransmission (tid); env->ReleaseStringUTFChars (targetID, tid); if (res == OFTrue) return JNI_TRUE; else return JNI_FALSE; } /* * Class: J2Ci_jDVInterface * Method: getTargetPrinterSupportsRequestedImageSize * Signature: (Ljava/lang/String;)Z */ JNIEXPORT jboolean JNICALL Java_J2Ci_jDVInterface_getTargetPrinterSupportsRequestedImageSize (JNIEnv *env, jobject obj, jstring targetID) { DVInterface *dvi = getAddressOfDVInterface (env, obj); char *tid = (char*) env->GetStringUTFChars (targetID, 0); OFBool res = dvi->getTargetPrinterSupportsRequestedImageSize (tid); env->ReleaseStringUTFChars (targetID, tid); if (res == OFTrue) return JNI_TRUE; else return JNI_FALSE; } /* * Class: J2Ci_jDVInterface * Method: getTargetPrinterSupportsDecimateCrop * Signature: (Ljava/lang/String;)Z */ JNIEXPORT jboolean JNICALL Java_J2Ci_jDVInterface_getTargetPrinterSupportsDecimateCrop (JNIEnv *env, jobject obj, jstring targetID) { DVInterface *dvi = getAddressOfDVInterface (env, obj); char *tid = (char*) env->GetStringUTFChars (targetID, 0); OFBool res = dvi->getTargetPrinterSupportsDecimateCrop (tid); env->ReleaseStringUTFChars (targetID, tid); if (res == OFTrue) return JNI_TRUE; else return JNI_FALSE; } /* * Class: J2Ci_jDVInterface * Method: getTargetPrinterSupportsTrim * Signature: (Ljava/lang/String;)Z */ JNIEXPORT jboolean JNICALL Java_J2Ci_jDVInterface_getTargetPrinterSupportsTrim (JNIEnv *env, jobject obj, jstring targetID) { DVInterface *dvi = getAddressOfDVInterface (env, obj); char *tid = (char*) env->GetStringUTFChars (targetID, 0); OFBool res = dvi->getTargetPrinterSupportsTrim (tid); env->ReleaseStringUTFChars (targetID, tid); if (res == OFTrue) return JNI_TRUE; else return JNI_FALSE; } /* * Class: J2Ci_jDVInterface * Method: getTargetPrinterNumberOfBorderDensities * Signature: (Ljava/lang/String;)I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVInterface_getTargetPrinterNumberOfBorderDensities (JNIEnv *env, jobject obj, jstring targetID) { DVInterface *dvi = getAddressOfDVInterface (env, obj); char *tid = (char*) env->GetStringUTFChars (targetID, 0); int res = dvi->getTargetPrinterNumberOfBorderDensities (tid); env->ReleaseStringUTFChars (targetID, tid); return res; } /* * Class: J2Ci_jDVInterface * Method: getTargetPrinterBorderDensity * Signature: (Ljava/lang/String;I)Ljava/lang/String; */ JNIEXPORT jstring JNICALL Java_J2Ci_jDVInterface_getTargetPrinterBorderDensity (JNIEnv *env, jobject obj, jstring targetID, jint idx) { DVInterface *dvi = getAddressOfDVInterface (env, obj); char *tid = (char*) env->GetStringUTFChars (targetID, 0); OFString st; dvi->getTargetPrinterBorderDensity (tid, idx, st); env->ReleaseStringUTFChars (targetID, tid); return env->NewStringUTF (st.c_str()); } /* * Class: J2Ci_jDVInterface * Method: getTargetPrinterNumberOfMaxDensities * Signature: (Ljava/lang/String;)I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVInterface_getTargetPrinterNumberOfMaxDensities (JNIEnv *env, jobject obj, jstring targetID) { DVInterface *dvi = getAddressOfDVInterface (env, obj); char *tid = (char*) env->GetStringUTFChars (targetID, 0); Uint32 res = dvi->getTargetPrinterNumberOfMaxDensities(tid); env->ReleaseStringUTFChars (targetID, tid); return (jint) res; } /* * Class: J2Ci_jDVInterface * Method: getTargetPrinterMaxDensity * Signature: (Ljava/lang/String;I)Ljava/lang/String; */ JNIEXPORT jstring JNICALL Java_J2Ci_jDVInterface_getTargetPrinterMaxDensity (JNIEnv *env, jobject obj, jstring targetID, jint idx) { DVInterface *dvi = getAddressOfDVInterface (env, obj); char *tid = (char*) env->GetStringUTFChars (targetID, 0); OFString param; const char* res = dvi->getTargetPrinterMaxDensity (tid, idx, param); env->ReleaseStringUTFChars (targetID, tid); if (res == NULL) return NULL; return env->NewStringUTF (res); } /* * Class: J2Ci_jDVInterface * Method: getTargetPrinterNumberOfMinDensities * Signature: (Ljava/lang/String;)I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVInterface_getTargetPrinterNumberOfMinDensities (JNIEnv *env, jobject obj, jstring targetID) { DVInterface *dvi = getAddressOfDVInterface (env, obj); char *tid = (char*) env->GetStringUTFChars (targetID, 0); Uint32 res = dvi->getTargetPrinterNumberOfMinDensities(tid); env->ReleaseStringUTFChars (targetID, tid); return (jint) res; } /* * Class: J2Ci_jDVInterface * Method: getTargetPrinterMinDensity * Signature: (Ljava/lang/String;I)Ljava/lang/String; */ JNIEXPORT jstring JNICALL Java_J2Ci_jDVInterface_getTargetPrinterMinDensity (JNIEnv *env, jobject obj, jstring targetID, jint idx) { DVInterface *dvi = getAddressOfDVInterface (env, obj); char *tid = (char*) env->GetStringUTFChars (targetID, 0); OFString param; const char* res = dvi->getTargetPrinterMinDensity (tid, idx, param); env->ReleaseStringUTFChars (targetID, tid); if (res == NULL) return NULL; return env->NewStringUTF (res); } /* * Class: J2Ci_jDVInterface * Method: getTargetPrinterNumberOfPortraitDisplayFormats * Signature: (Ljava/lang/String;)I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVInterface_getTargetPrinterNumberOfPortraitDisplayFormats (JNIEnv *env, jobject obj, jstring targetID) { DVInterface *dvi = getAddressOfDVInterface (env, obj); char *tid = (char*) env->GetStringUTFChars (targetID, 0); Uint32 res = dvi->getTargetPrinterNumberOfPortraitDisplayFormats(tid); env->ReleaseStringUTFChars (targetID, tid); return (jint) res; } /* * Class: J2Ci_jDVInterface * Method: getTargetPrinterPortraitDisplayFormatRows * Signature: (Ljava/lang/String;I)I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVInterface_getTargetPrinterPortraitDisplayFormatRows (JNIEnv *env, jobject obj, jstring targetID, jint idx) { DVInterface *dvi = getAddressOfDVInterface (env, obj); char *tid = (char*) env->GetStringUTFChars (targetID, 0); Uint32 res = dvi->getTargetPrinterPortraitDisplayFormatRows(tid, idx); env->ReleaseStringUTFChars (targetID, tid); return (jint) res; } /* * Class: J2Ci_jDVInterface * Method: getTargetPrinterPortraitDisplayFormatColumns * Signature: (Ljava/lang/String;I)I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVInterface_getTargetPrinterPortraitDisplayFormatColumns (JNIEnv *env, jobject obj, jstring targetID, jint idx) { DVInterface *dvi = getAddressOfDVInterface (env, obj); char *tid = (char*) env->GetStringUTFChars (targetID, 0); Uint32 res = dvi->getTargetPrinterPortraitDisplayFormatColumns(tid, idx); env->ReleaseStringUTFChars (targetID, tid); return (jint) res; } /* * Class: J2Ci_jDVInterface * Method: getTargetPrinterSupportsAnnotation * Signature: (Ljava/lang/String;)Z */ JNIEXPORT jboolean JNICALL Java_J2Ci_jDVInterface_getTargetPrinterSupportsAnnotation (JNIEnv *env, jobject obj, jstring targetID) { DVInterface *dvi = getAddressOfDVInterface (env, obj); char *tid = (char*) env->GetStringUTFChars (targetID, 0); OFBool res = dvi->getTargetPrinterSupportsAnnotation (tid); env->ReleaseStringUTFChars (targetID, tid); if (res == OFTrue) return JNI_TRUE; else return JNI_FALSE; } /* * Class: J2Ci_jDVInterface * Method: getTargetPrinterNumberOfFilmSizeIDs * Signature: (Ljava/lang/String;)I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVInterface_getTargetPrinterNumberOfFilmSizeIDs (JNIEnv *env, jobject obj, jstring targetID) { DVInterface *dvi = getAddressOfDVInterface (env, obj); char *tid = (char*) env->GetStringUTFChars (targetID, 0); int res = dvi->getTargetPrinterNumberOfFilmSizeIDs (tid); env->ReleaseStringUTFChars (targetID, tid); return res; } /* * Class: J2Ci_jDVInterface * Method: getTargetPrinterFilmSizeID * Signature: (Ljava/lang/String;I)Ljava/lang/String; */ JNIEXPORT jstring JNICALL Java_J2Ci_jDVInterface_getTargetPrinterFilmSizeID (JNIEnv *env, jobject obj, jstring targetID, jint idx) { DVInterface *dvi = getAddressOfDVInterface (env, obj); char *tid = (char*) env->GetStringUTFChars (targetID, 0); OFString st; dvi->getTargetPrinterFilmSizeID (tid, idx, st); env->ReleaseStringUTFChars (targetID, tid); return env->NewStringUTF (st.c_str()); } /* * Class: J2Ci_jDVInterface * Method: getTargetPrinterNumberOfMediumTypes * Signature: (Ljava/lang/String;)I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVInterface_getTargetPrinterNumberOfMediumTypes (JNIEnv *env, jobject obj, jstring targetID) { DVInterface *dvi = getAddressOfDVInterface (env, obj); char *tid = (char*) env->GetStringUTFChars (targetID, 0); int res = dvi->getTargetPrinterNumberOfMediumTypes (tid); env->ReleaseStringUTFChars (targetID, tid); return res; } /* * Class: J2Ci_jDVInterface * Method: getTargetPrinterMediumType * Signature: (Ljava/lang/String;I)Ljava/lang/String; */ JNIEXPORT jstring JNICALL Java_J2Ci_jDVInterface_getTargetPrinterMediumType (JNIEnv *env, jobject obj, jstring targetID, jint idx) { DVInterface *dvi = getAddressOfDVInterface (env, obj); char *tid = (char*) env->GetStringUTFChars (targetID, 0); OFString st; dvi->getTargetPrinterMediumType (tid, idx, st); env->ReleaseStringUTFChars (targetID, tid); return env->NewStringUTF (st.c_str()); } /* * Class: J2Ci_jDVInterface * Method: getTargetPrinterNumberOfPrinterResolutionIDs * Signature: (Ljava/lang/String;)I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVInterface_getTargetPrinterNumberOfPrinterResolutionIDs (JNIEnv *env, jobject obj, jstring targetID) { DVInterface *dvi = getAddressOfDVInterface (env, obj); char *tid = (char*) env->GetStringUTFChars (targetID, 0); int res = dvi->getTargetPrinterNumberOfPrinterResolutionIDs (tid); env->ReleaseStringUTFChars (targetID, tid); return res; } /* * Class: J2Ci_jDVInterface * Method: getTargetPrinterResolutionID * Signature: (Ljava/lang/String;I)Ljava/lang/String; */ JNIEXPORT jstring JNICALL Java_J2Ci_jDVInterface_getTargetPrinterResolutionID (JNIEnv *env, jobject obj, jstring targetID, jint idx) { DVInterface *dvi = getAddressOfDVInterface (env, obj); char *tid = (char*) env->GetStringUTFChars (targetID, 0); OFString st; dvi->getTargetPrinterResolutionID (tid, idx, st); env->ReleaseStringUTFChars (targetID, tid); return env->NewStringUTF (st.c_str());; } /* * Class: J2Ci_jDVInterface * Method: getTargetPrinterNumberOfMagnificationTypes * Signature: (Ljava/lang/String;)I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVInterface_getTargetPrinterNumberOfMagnificationTypes (JNIEnv *env, jobject obj, jstring targetID) { DVInterface *dvi = getAddressOfDVInterface (env, obj); char *tid = (char*) env->GetStringUTFChars (targetID, 0); int res = dvi->getTargetPrinterNumberOfMagnificationTypes (tid); env->ReleaseStringUTFChars (targetID, tid); return res; } /* * Class: J2Ci_jDVInterface * Method: getTargetPrinterMagnificationType * Signature: (Ljava/lang/String;I)Ljava/lang/String; */ JNIEXPORT jstring JNICALL Java_J2Ci_jDVInterface_getTargetPrinterMagnificationType (JNIEnv *env, jobject obj, jstring targetID, jint idx) { DVInterface *dvi = getAddressOfDVInterface (env, obj); char *tid = (char*) env->GetStringUTFChars (targetID, 0); OFString st; dvi->getTargetPrinterMagnificationType (tid, idx, st); env->ReleaseStringUTFChars (targetID, tid); return env->NewStringUTF (st.c_str()); } /* * Class: J2Ci_jDVInterface * Method: getTargetPrinterNumberOfSmoothingTypes * Signature: (Ljava/lang/String;)I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVInterface_getTargetPrinterNumberOfSmoothingTypes (JNIEnv *env, jobject obj, jstring targetID) { DVInterface *dvi = getAddressOfDVInterface (env, obj); char *tid = (char*) env->GetStringUTFChars (targetID, 0); int res = dvi->getTargetPrinterNumberOfSmoothingTypes (tid); env->ReleaseStringUTFChars (targetID, tid); return res; } /* * Class: J2Ci_jDVInterface * Method: getTargetPrinterSmoothingType * Signature: (Ljava/lang/String;I)Ljava/lang/String; */ JNIEXPORT jstring JNICALL Java_J2Ci_jDVInterface_getTargetPrinterSmoothingType (JNIEnv *env, jobject obj, jstring targetID, jint idx) { DVInterface *dvi = getAddressOfDVInterface (env, obj); char *tid = (char*) env->GetStringUTFChars (targetID, 0); OFString st; dvi->getTargetPrinterSmoothingType (tid, idx, st); env->ReleaseStringUTFChars (targetID, tid); return env->NewStringUTF (st.c_str()); } /* * Class: J2Ci_jDVInterface * Method: getTargetPrinterNumberOfConfigurationSettings * Signature: (Ljava/lang/String;)I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVInterface_getTargetPrinterNumberOfConfigurationSettings (JNIEnv *env, jobject obj, jstring targetID) { DVInterface *dvi = getAddressOfDVInterface (env, obj); char *tid = (char*) env->GetStringUTFChars (targetID, 0); int res = dvi->getTargetPrinterNumberOfConfigurationSettings (tid); env->ReleaseStringUTFChars (targetID, tid); return res; } /* * Class: J2Ci_jDVInterface * Method: getTargetPrinterConfigurationSetting * Signature: (Ljava/lang/String;I)Ljava/lang/String; */ JNIEXPORT jstring JNICALL Java_J2Ci_jDVInterface_getTargetPrinterConfigurationSetting (JNIEnv *env, jobject obj, jstring targetID, jint idx) { DVInterface *dvi = getAddressOfDVInterface (env, obj); char *tid = (char*) env->GetStringUTFChars (targetID, 0); const char *res = dvi->getTargetPrinterConfigurationSetting (tid, idx); env->ReleaseStringUTFChars (targetID, tid); if (res == NULL) return NULL; return env->NewStringUTF (res); } /* * Class: J2Ci_jDVInterface * Method: getTargetPrinterNumberOfEmptyImageDensities * Signature: (Ljava/lang/String;)I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVInterface_getTargetPrinterNumberOfEmptyImageDensities (JNIEnv *env, jobject obj, jstring targetID) { DVInterface *dvi = getAddressOfDVInterface (env, obj); char *tid = (char*) env->GetStringUTFChars (targetID, 0); int res = dvi->getTargetPrinterNumberOfEmptyImageDensities (tid); env->ReleaseStringUTFChars (targetID, tid); return res; } /* * Class: J2Ci_jDVInterface * Method: getTargetPrinterEmptyImageDensity * Signature: (Ljava/lang/String;I)Ljava/lang/String; */ JNIEXPORT jstring JNICALL Java_J2Ci_jDVInterface_getTargetPrinterEmptyImageDensity (JNIEnv *env, jobject obj, jstring targetID, jint idx) { DVInterface *dvi = getAddressOfDVInterface (env, obj); char *tid = (char*) env->GetStringUTFChars (targetID, 0); OFString st; dvi->getTargetPrinterEmptyImageDensity (tid, idx, st); env->ReleaseStringUTFChars (targetID, tid); return env->NewStringUTF (st.c_str()); } /* * Class: J2Ci_jDVInterface * Method: getMessagePort * Signature: ()I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVInterface_getMessagePort (JNIEnv *env, jobject obj) { DVInterface *dvi = getAddressOfDVInterface (env, obj); return (jint) dvi->getMessagePort(); } /* * Class: J2Ci_jDVInterface * Method: getNetworkAETitle * Signature: ()Ljava/lang/String; */ JNIEXPORT jstring JNICALL Java_J2Ci_jDVInterface_getNetworkAETitle (JNIEnv *env, jobject obj) { DVInterface *dvi = getAddressOfDVInterface (env, obj); const char* res = dvi->getNetworkAETitle(); if (res == NULL) return NULL; return env->NewStringUTF (res); } /* * Class: J2Ci_jDVInterface * Method: getDatabaseFolder * Signature: ()Ljava/lang/String; */ JNIEXPORT jstring JNICALL Java_J2Ci_jDVInterface_getDatabaseFolder (JNIEnv *env, jobject obj) { DVInterface *dvi = getAddressOfDVInterface (env, obj); const char* res = dvi->getDatabaseFolder(); if (res == NULL) return NULL; return env->NewStringUTF (res); } /* * Class: J2Ci_jDVInterface * Method: getMonitorCharacteristicsFile * Signature: ()Ljava/lang/String; */ JNIEXPORT jstring JNICALL Java_J2Ci_jDVInterface_getMonitorCharacteristicsFile (JNIEnv *env, jobject obj) { DVInterface *dvi = getAddressOfDVInterface (env, obj); const char* res = dvi->getMonitorCharacteristicsFile(); if (res == NULL) return NULL; return env->NewStringUTF (res); } /* * Class: J2Ci_jDVInterface * Method: getMonitorPixelWidth * Signature: ()D */ JNIEXPORT jdouble JNICALL Java_J2Ci_jDVInterface_getMonitorPixelWidth (JNIEnv *env, jobject obj) { DVInterface *dvi = getAddressOfDVInterface (env, obj); return (jdouble) dvi->getMonitorPixelWidth(); } /* * Class: J2Ci_jDVInterface * Method: getMonitorPixelHeight * Signature: ()D */ JNIEXPORT jdouble JNICALL Java_J2Ci_jDVInterface_getMonitorPixelHeight (JNIEnv *env, jobject obj) { DVInterface *dvi = getAddressOfDVInterface (env, obj); return (jdouble) dvi->getMonitorPixelHeight(); } /* * Class: J2Ci_jDVInterface * Method: getGUIConfigEntry * Signature: (Ljava/lang/String;)Ljava/lang/String; */ JNIEXPORT jstring JNICALL Java_J2Ci_jDVInterface_getGUIConfigEntry (JNIEnv *env, jobject obj, jstring key) { DVInterface *dvi = getAddressOfDVInterface (env, obj); char *ckey = (char*) env->GetStringUTFChars (key, 0); const char* res = dvi->getGUIConfigEntry(ckey); env->ReleaseStringUTFChars (key, ckey); if (res == NULL) return NULL; return env->NewStringUTF (res); } /* * Class: J2Ci_jDVInterface * Method: getGUIConfigEntryBool * Signature: (Ljava/lang/String;Z)Z */ JNIEXPORT jboolean JNICALL Java_J2Ci_jDVInterface_getGUIConfigEntryBool (JNIEnv *env, jobject obj, jstring key, jboolean dfl) { DVInterface *dvi = getAddressOfDVInterface (env, obj); char *ckey = (char*) env->GetStringUTFChars (key, 0); OFBool cdfl = dfl == JNI_TRUE ? OFTrue : OFFalse; OFBool res = dvi->getGUIConfigEntryBool(ckey, cdfl); env->ReleaseStringUTFChars (key, ckey); if (res == OFTrue) return JNI_TRUE; else return JNI_FALSE; } /* * Class: J2Ci_jDVInterface * Method: getNumberOfLUTs * Signature: ()I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVInterface_getNumberOfLUTs (JNIEnv *env, jobject obj) { DVInterface *dvi = getAddressOfDVInterface (env, obj); return (jint) dvi->getNumberOfLUTs(); } /* * Class: J2Ci_jDVInterface * Method: getLUTID * Signature: (I)Ljava/lang/String; */ JNIEXPORT jstring JNICALL Java_J2Ci_jDVInterface_getLUTID (JNIEnv *env, jobject obj, jint idx) { DVInterface *dvi = getAddressOfDVInterface (env, obj); const char* res = dvi->getLUTID(idx); if (res == NULL) return NULL; return env->NewStringUTF (res); } /* * Class: J2Ci_jDVInterface * Method: getLUTDescription * Signature: (Ljava/lang/String;)Ljava/lang/String; */ JNIEXPORT jstring JNICALL Java_J2Ci_jDVInterface_getLUTDescription (JNIEnv *env, jobject obj, jstring lutID) { DVInterface *dvi = getAddressOfDVInterface (env, obj); char *lid = (char*) env->GetStringUTFChars (lutID, 0); const char* res = dvi->getLUTDescription(lid); env->ReleaseStringUTFChars (lutID, lid); if (res == NULL) return NULL; return env->NewStringUTF (res); } /* * Class: J2Ci_jDVInterface * Method: getNumberOfReports * Signature: ()I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVInterface_getNumberOfReports (JNIEnv *env, jobject obj) { DVInterface *dvi = getAddressOfDVInterface (env, obj); return (jint) dvi->getNumberOfReports(); } /* * Class: J2Ci_jDVInterface * Method: getReportID * Signature: (I)Ljava/lang/String; */ JNIEXPORT jstring JNICALL Java_J2Ci_jDVInterface_getReportID (JNIEnv *env, jobject obj, jint idx) { DVInterface *dvi = getAddressOfDVInterface (env, obj); const char* res = dvi->getReportID(idx); if (res == NULL) return NULL; return env->NewStringUTF (res); } /* * Class: J2Ci_jDVInterface * Method: getReportDescription * Signature: (Ljava/lang/String;)Ljava/lang/String; */ JNIEXPORT jstring JNICALL Java_J2Ci_jDVInterface_getReportDescription (JNIEnv *env, jobject obj, jstring reportID) { DVInterface *dvi = getAddressOfDVInterface (env, obj); char *id = (char*) env->GetStringUTFChars (reportID, 0); const char* res = dvi->getReportDescription(id); env->ReleaseStringUTFChars (reportID, id); if (res == NULL) return NULL; return env->NewStringUTF (res); } /* * Class: J2Ci_jDVInterface * Method: getNumberOfVOIPresets * Signature: (Ljava/lang/String;)I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVInterface_getNumberOfVOIPresets (JNIEnv *env, jobject obj, jstring modality) { DVInterface *dvi = getAddressOfDVInterface (env, obj); char *mod = (char*) env->GetStringUTFChars (modality, 0); Uint32 res = dvi->getNumberOfVOIPresets(mod); env->ReleaseStringUTFChars (modality, mod); return (jint) res; } /* * Class: J2Ci_jDVInterface * Method: getVOIPresetDescription * Signature: (Ljava/lang/String;I)Ljava/lang/String; */ JNIEXPORT jstring JNICALL Java_J2Ci_jDVInterface_getVOIPresetDescription (JNIEnv *env, jobject obj, jstring modality, jint idx) { DVInterface *dvi = getAddressOfDVInterface (env, obj); char *mod = (char*) env->GetStringUTFChars (modality, 0); const char* res = dvi->getVOIPresetDescription(mod, idx); env->ReleaseStringUTFChars (modality, mod); if (res == NULL) return NULL; return env->NewStringUTF (res); } /* * Class: J2Ci_jDVInterface * Method: getVOIPresetWindowCenter * Signature: (Ljava/lang/String;I)D */ JNIEXPORT jdouble JNICALL Java_J2Ci_jDVInterface_getVOIPresetWindowCenter (JNIEnv *env, jobject obj, jstring modality, jint idx) { DVInterface *dvi = getAddressOfDVInterface (env, obj); char *mod = (char*) env->GetStringUTFChars (modality, 0); double res = dvi->getVOIPresetWindowCenter(mod, idx); env->ReleaseStringUTFChars (modality, mod); return (jdouble) res; } /* * Class: J2Ci_jDVInterface * Method: getVOIPresetWindowWidth * Signature: (Ljava/lang/String;I)D */ JNIEXPORT jdouble JNICALL Java_J2Ci_jDVInterface_getVOIPresetWindowWidth (JNIEnv *env, jobject obj, jstring modality, jint idx) { DVInterface *dvi = getAddressOfDVInterface (env, obj); char *mod = (char*) env->GetStringUTFChars (modality, 0); double res = dvi->getVOIPresetWindowWidth(mod, idx); env->ReleaseStringUTFChars (modality, mod); return (jdouble) res; } /* * Class: J2Ci_jDVInterface * Method: getNumberOfUsers * Signature: ()I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVInterface_getNumberOfUsers (JNIEnv *env, jobject obj) { DVInterface *dvi = getAddressOfDVInterface (env, obj); return (jint) dvi->getNumberOfUsers(); } /* * Class: J2Ci_jDVInterface * Method: getUserID * Signature: (I)Ljava/lang/String; */ JNIEXPORT jstring JNICALL Java_J2Ci_jDVInterface_getUserID (JNIEnv *env, jobject obj, jint idx) { DVInterface *dvi = getAddressOfDVInterface (env, obj); const char* res = dvi->getUserID(idx); if (res == NULL) return NULL; return env->NewStringUTF (res); } /* * Class: J2Ci_jDVInterface * Method: getUserLogin * Signature: (Ljava/lang/String;)Ljava/lang/String; */ JNIEXPORT jstring JNICALL Java_J2Ci_jDVInterface_getUserLogin (JNIEnv *env, jobject obj, jstring userID) { DVInterface *dvi = getAddressOfDVInterface (env, obj); char *id = (char*) env->GetStringUTFChars (userID, 0); const char* res = dvi->getUserLogin(id); env->ReleaseStringUTFChars (userID, id); if (res == NULL) return NULL; return env->NewStringUTF (res); } /* * Class: J2Ci_jDVInterface * Method: getUserName * Signature: (Ljava/lang/String;)Ljava/lang/String; */ JNIEXPORT jstring JNICALL Java_J2Ci_jDVInterface_getUserName (JNIEnv *env, jobject obj, jstring userID) { DVInterface *dvi = getAddressOfDVInterface (env, obj); char *id = (char*) env->GetStringUTFChars (userID, 0); const char* res = dvi->getUserName(id); env->ReleaseStringUTFChars (userID, id); if (res == NULL) return NULL; return env->NewStringUTF (res); } /* * Class: J2Ci_jDVInterface * Method: getUserDICOMName * Signature: (Ljava/lang/String;)Ljava/lang/String; */ JNIEXPORT jstring JNICALL Java_J2Ci_jDVInterface_getUserDICOMName (JNIEnv *env, jobject obj, jstring userID) { DVInterface *dvi = getAddressOfDVInterface (env, obj); char *id = (char*) env->GetStringUTFChars (userID, 0); const char* res = dvi->getUserDICOMName(id); env->ReleaseStringUTFChars (userID, id); if (res == NULL) return NULL; return env->NewStringUTF (res); } /* * Class: J2Ci_jDVInterface * Method: getUserOrganization * Signature: (Ljava/lang/String;)Ljava/lang/String; */ JNIEXPORT jstring JNICALL Java_J2Ci_jDVInterface_getUserOrganization (JNIEnv *env, jobject obj, jstring userID) { DVInterface *dvi = getAddressOfDVInterface (env, obj); char *id = (char*) env->GetStringUTFChars (userID, 0); const char* res = dvi->getUserOrganization(id); env->ReleaseStringUTFChars (userID, id); if (res == NULL) return NULL; return env->NewStringUTF (res); } /* * Class: J2Ci_jDVInterface * Method: getUserCodingSchemeDesignator * Signature: (Ljava/lang/String;)Ljava/lang/String; */ JNIEXPORT jstring JNICALL Java_J2Ci_jDVInterface_getUserCodingSchemeDesignator (JNIEnv *env, jobject obj, jstring userID) { DVInterface *dvi = getAddressOfDVInterface (env, obj); char *id = (char*) env->GetStringUTFChars (userID, 0); OFString string; const char* res = dvi->getUserCodingSchemeDesignator(id, string); env->ReleaseStringUTFChars (userID, id); if (res == NULL) return NULL; return env->NewStringUTF (res); } /* * Class: J2Ci_jDVInterface * Method: getUserCodingSchemeVersion * Signature: (Ljava/lang/String;)Ljava/lang/String; */ JNIEXPORT jstring JNICALL Java_J2Ci_jDVInterface_getUserCodingSchemeVersion (JNIEnv *env, jobject obj, jstring userID) { DVInterface *dvi = getAddressOfDVInterface (env, obj); char *id = (char*) env->GetStringUTFChars (userID, 0); OFString string; const char* res = dvi->getUserCodingSchemeVersion(id, string); env->ReleaseStringUTFChars (userID, id); if (res == NULL) return NULL; return env->NewStringUTF (res); } /* * Class: J2Ci_jDVInterface * Method: getUserCodeValue * Signature: (Ljava/lang/String;)Ljava/lang/String; */ JNIEXPORT jstring JNICALL Java_J2Ci_jDVInterface_getUserCodeValue (JNIEnv *env, jobject obj, jstring userID) { DVInterface *dvi = getAddressOfDVInterface (env, obj); char *id = (char*) env->GetStringUTFChars (userID, 0); OFString string; const char* res = dvi->getUserCodeValue(id, string); env->ReleaseStringUTFChars (userID, id); if (res == NULL) return NULL; return env->NewStringUTF (res); } /* * Class: J2Ci_jDVInterface * Method: getUserCodeMeaning * Signature: (Ljava/lang/String;)Ljava/lang/String; */ JNIEXPORT jstring JNICALL Java_J2Ci_jDVInterface_getUserCodeMeaning (JNIEnv *env, jobject obj, jstring userID) { DVInterface *dvi = getAddressOfDVInterface (env, obj); char *id = (char*) env->GetStringUTFChars (userID, 0); OFString string; const char* res = dvi->getUserCodeMeaning(id, string); env->ReleaseStringUTFChars (userID, id); if (res == NULL) return NULL; return env->NewStringUTF (res); } /* * CVS Log * $Log: DVInterface.cpp,v $ * Revision 1.2 1999/05/14 10:02:31 Schroeter * Log-Tags for CVS corrected * * Revision 1.1.1.1 1999/05/14 09:33:11 Schroeter * initial commit of release 1.0 * */ dicomscope-3.6.0/interface/libsrc/DVPresentationState.cpp0000644000265600020320000026664211262371102022634 0ustar tilleaadmin/* * * Copyright (C) 1999-2003, Institute for MicroTherapy and OFFIS * * This software and supporting documentation were developed by * * University of Witten/Herdecke * Department of Radiology and MicroTherapy * Institute for MicroTherapy * Medical computer science * * Universitaetsstrasse 142 * 44799 Bochum, Germany * * http://www.microtherapy.de/go/cs * mailto:computer.science@microtherapy.de * * and * * Kuratorium OFFIS e.V. * Healthcare Information and Communication Systems * Escherweg 2 * D-26121 Oldenburg, Germany * * THIS SOFTWARE IS MADE AVAILABLE, AS IS, AND THE INSTITUTE MAKES NO * WARRANTY REGARDING THE SOFTWARE, ITS PERFORMANCE, ITS MERCHANTABILITY * OR FITNESS FOR ANY PARTICULAR USE, FREEDOM FROM ANY COMPUTER DISEASES * OR ITS CONFORMITY TO ANY SPECIFICATION. THE ENTIRE RISK AS TO QUALITY * AND PERFORMANCE OF THE SOFTWARE IS WITH THE USER. * * Author : $Author: Schroeter $ * Last update : $Date: 1999/05/14 10:02:31 $ * Revision : $Revision: 1.2 $ * State : $State: Exp $ */ #include "J2Ci_jDVPresentationState.h" #include "jInterface.h" inline DVPresentationState* getAddressOfDVPresentationState (JNIEnv *env, jobject obj) { jclass cls = env->GetObjectClass (obj); jfieldID fid = env->GetFieldID (cls, "cppClassAddress", "J"); if (fid == 0) exit (-1); return (DVPresentationState*) env->GetLongField (obj, fid); } inline void setAddressOfDVPresentationState (JNIEnv *env, jobject obj, DVPresentationState* dvi) { jclass cls = env->GetObjectClass (obj); jfieldID fid = env->GetFieldID (cls, "cppClassAddress", "J"); if (fid == 0) exit (-1); env->SetLongField (obj, fid, (jlong) dvi); } /* * Class: J2Ci_jDVPresentationState * Method: getInstanceUID * Signature: ()Ljava/lang/String; */ JNIEXPORT jstring JNICALL Java_J2Ci_jDVPresentationState_getInstanceUID (JNIEnv *env, jobject obj) { DVPresentationState *ps = getAddressOfDVPresentationState (env, obj); const char* res = ps->getInstanceUID(); if (res == NULL) return NULL; return env->NewStringUTF (res); } /* * Class: J2Ci_jDVPresentationState * Method: getSOPClassUID * Signature: ()Ljava/lang/String; */ JNIEXPORT jstring JNICALL Java_J2Ci_jDVPresentationState_getSOPClassUID (JNIEnv *env, jobject obj) { DVPresentationState *ps = getAddressOfDVPresentationState (env, obj); const char* res = ps->getSOPClassUID(); if (res == NULL) return NULL; return env->NewStringUTF (res); } /* * Class: J2Ci_jDVPresentationState * Method: getAttachedImageSOPClassUID * Signature: ()Ljava/lang/String; */ JNIEXPORT jstring JNICALL Java_J2Ci_jDVPresentationState_getAttachedImageSOPClassUID (JNIEnv *env, jobject obj) { DVPresentationState *ps = getAddressOfDVPresentationState (env, obj); const char* res = ps->getAttachedImageSOPClassUID(); if (res == NULL) return NULL; return env->NewStringUTF (res); } /* * Class: J2Ci_jDVPresentationState * Method: getAttachedImageSOPInstanceUID * Signature: ()Ljava/lang/String; */ JNIEXPORT jstring JNICALL Java_J2Ci_jDVPresentationState_getAttachedImageSOPInstanceUID (JNIEnv *env, jobject obj) { DVPresentationState *ps = getAddressOfDVPresentationState (env, obj); const char* res = ps->getAttachedImageSOPInstanceUID(); if (res == NULL) return NULL; return env->NewStringUTF (res); } /* * Class: J2Ci_jDVPresentationState * Method: getPresentationLabel * Signature: ()Ljava/lang/String; */ JNIEXPORT jstring JNICALL Java_J2Ci_jDVPresentationState_getPresentationLabel (JNIEnv *env, jobject obj) { DVPresentationState *ps = getAddressOfDVPresentationState (env, obj); const char* res = ps->getPresentationLabel(); if (res == NULL) return NULL; return env->NewStringUTF (res); } /* * Class: J2Ci_jDVPresentationState * Method: setPresentationLabel * Signature: (Ljava/lang/String;)I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVPresentationState_setPresentationLabel (JNIEnv *env, jobject obj, jstring newLabel) { DVPresentationState *ps = getAddressOfDVPresentationState (env, obj); OFCondition res = EC_IllegalCall; jmethodID mid = env->GetMethodID(env->FindClass("java/lang/String"), "getBytes", "(Ljava/lang/String;)[B"); if (mid) { jbyteArray array = (jbyteArray) env->CallObjectMethod(newLabel, mid, env->NewStringUTF(JAVA_ENCODING_STRING)); if (array) { jbyte *string = env->GetByteArrayElements(array, 0); res = ps->setPresentationLabel(OFString((char *)string, env->GetArrayLength(array)).c_str()); env->ReleaseByteArrayElements(array, string, 0); } } return (jint) res.status(); } /* * Class: J2Ci_jDVPresentationState * Method: getPresentationDescription * Signature: ()Ljava/lang/String; */ JNIEXPORT jstring JNICALL Java_J2Ci_jDVPresentationState_getPresentationDescription (JNIEnv *env, jobject obj) { DVPresentationState *ps = getAddressOfDVPresentationState (env, obj); const char* res = ps->getPresentationDescription(); if (res == NULL) return NULL; return env->NewStringUTF (res); } /* * Class: J2Ci_jDVPresentationState * Method: setPresentationDescription * Signature: (Ljava/lang/String;)I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVPresentationState_setPresentationDescription (JNIEnv *env, jobject obj, jstring newDescr) { DVPresentationState *ps = getAddressOfDVPresentationState (env, obj); OFCondition res = EC_IllegalCall; jmethodID mid = env->GetMethodID(env->FindClass("java/lang/String"), "getBytes", "(Ljava/lang/String;)[B"); if (mid) { jbyteArray array = (jbyteArray) env->CallObjectMethod(newDescr, mid, env->NewStringUTF(JAVA_ENCODING_STRING)); if (array) { jbyte *string = env->GetByteArrayElements(array, 0); res = ps->setPresentationDescription(OFString((char *)string, env->GetArrayLength(array)).c_str()); env->ReleaseByteArrayElements(array, string, 0); } } return (jint) res.status(); } /* * Class: J2Ci_jDVPresentationState * Method: getPresentationCreatorsName * Signature: ()Ljava/lang/String; */ JNIEXPORT jstring JNICALL Java_J2Ci_jDVPresentationState_getPresentationCreatorsName (JNIEnv *env, jobject obj) { DVPresentationState *ps = getAddressOfDVPresentationState (env, obj); const char* res = ps->getPresentationCreatorsName(); if (res == NULL) return NULL; return env->NewStringUTF (res); } /* * Class: J2Ci_jDVPresentationState * Method: setPresentationCreatorsName * Signature: (Ljava/lang/String;)I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVPresentationState_setPresentationCreatorsName (JNIEnv *env, jobject obj, jstring newName) { DVPresentationState *ps = getAddressOfDVPresentationState (env, obj); OFCondition res = EC_IllegalCall; jmethodID mid = env->GetMethodID(env->FindClass("java/lang/String"), "getBytes", "(Ljava/lang/String;)[B"); if (mid) { jbyteArray array = (jbyteArray) env->CallObjectMethod(newName, mid, env->NewStringUTF(JAVA_ENCODING_STRING)); if (array) { jbyte *string = env->GetByteArrayElements(array, 0); res = ps->setPresentationCreatorsName(OFString((char *)string, env->GetArrayLength(array)).c_str()); env->ReleaseByteArrayElements(array, string, 0); } } return (jint) res.status(); } /* * Class: J2Ci_jDVPresentationState * Method: getPixelData * Signature: (LJ2Ci/jDVPrStateParam_GetPixelData;)I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVPresentationState_getPixelData__LJ2Ci_jDVPrStateParam_1GetPixelData_2 (JNIEnv *env, jobject obj, jobject pixel) { DVPresentationState *ps = getAddressOfDVPresentationState (env, obj); const void *pixelData = NULL; unsigned long width = 0; unsigned long height = 0; OFCondition res = ps->getPixelData (pixelData, width, height); jclass pixelcls = env->GetObjectClass (pixel); jfieldID widthfid = env->GetFieldID (pixelcls, "width", "J"); jfieldID heightfid = env->GetFieldID (pixelcls, "height", "J"); jfieldID datafid = env->GetFieldID (pixelcls, "pixelData", "[B"); env->SetLongField (pixel, widthfid, (jlong) width); env->SetLongField (pixel, heightfid, (jlong) height); jbyteArray array = env->NewByteArray ((jsize) (width*height)); // !!! env->SetByteArrayRegion (array, 0, width*height, (jbyte*) pixelData); env->SetObjectField (pixel, datafid, array); return (jint) res.status(); } /* * Class: J2Ci_jDVPresentationState * Method: getRotation * Signature: ()I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVPresentationState_getRotation (JNIEnv *env, jobject obj) { DVPresentationState *ps = getAddressOfDVPresentationState (env, obj); return (jint) ps->getRotation(); } /* * Class: J2Ci_jDVPresentationState * Method: setRotation * Signature: (I)I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVPresentationState_setRotation (JNIEnv *env, jobject obj, jint rotation) { DVPresentationState *ps = getAddressOfDVPresentationState (env, obj); return (jint) ps->setRotation ((DVPSRotationType) rotation).status(); } /* * Class: J2Ci_jDVPresentationState * Method: getFlip * Signature: ()Z */ JNIEXPORT jboolean JNICALL Java_J2Ci_jDVPresentationState_getFlip (JNIEnv *env, jobject obj) { DVPresentationState *ps = getAddressOfDVPresentationState (env, obj); if (ps->getFlip()) return JNI_TRUE; else return JNI_FALSE; } /* * Class: J2Ci_jDVPresentationState * Method: clear * Signature: ()V */ JNIEXPORT void JNICALL Java_J2Ci_jDVPresentationState_clear (JNIEnv *env, jobject obj) { DVPresentationState *ps = getAddressOfDVPresentationState (env, obj); ps->clear(); } /* * Class: J2Ci_jDVPresentationState * Method: setFlip * Signature: (Z)I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVPresentationState_setFlip (JNIEnv *env, jobject obj, jboolean isFlipped) { DVPresentationState *ps = getAddressOfDVPresentationState (env, obj); return (jint) ps->setFlip (isFlipped == JNI_TRUE ? OFTrue : OFFalse).status(); } /* * Class: J2Ci_jDVPresentationState * Method: addImageReference * Signature: (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVPresentationState_addImageReference (JNIEnv *env, jobject obj, jstring studyUID, jstring seriesUID, jstring sopClassUID, jstring instanceUID, jstring frames, jstring aetitle, jstring filesetID, jstring filesetUID) { DVPresentationState *ps = getAddressOfDVPresentationState (env, obj); char *stu = (char*) env->GetStringUTFChars (studyUID, 0); char *ser = (char*) env->GetStringUTFChars (seriesUID, 0); char *sop = (char*) env->GetStringUTFChars (sopClassUID, 0); char *ins = (char*) env->GetStringUTFChars (instanceUID, 0); char *fra = (char*) env->GetStringUTFChars (frames, 0); char *aet = (char*) env->GetStringUTFChars (aetitle, 0); char *fid = (char*) env->GetStringUTFChars (filesetID, 0); char *fui = (char*) env->GetStringUTFChars (filesetUID, 0); OFCondition res = ps->addImageReference (stu, ser, sop, ins, fra, aet, fid, fui); env->ReleaseStringUTFChars (studyUID, stu); env->ReleaseStringUTFChars (seriesUID, ser); env->ReleaseStringUTFChars (sopClassUID, sop); env->ReleaseStringUTFChars (instanceUID, ins); env->ReleaseStringUTFChars (frames, fra); env->ReleaseStringUTFChars (aetitle, aet); env->ReleaseStringUTFChars (filesetID, fid); env->ReleaseStringUTFChars (filesetUID, fui); return (jint) res.status(); } /* * Class: J2Ci_jDVPresentationState * Method: addImageReferenceAttached * Signature: (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVPresentationState_addImageReferenceAttached (JNIEnv *env, jobject obj, jstring aetitle, jstring filesetID, jstring filesetUID) { DVPresentationState *ps = getAddressOfDVPresentationState (env, obj); char *aet = (char*) env->GetStringUTFChars (aetitle, 0); char *fid = (char*) env->GetStringUTFChars (filesetID, 0); char *fui = (char*) env->GetStringUTFChars (filesetUID, 0); OFCondition res = ps->addImageReferenceAttached (aet, fid, fui); env->ReleaseStringUTFChars (aetitle, aet); env->ReleaseStringUTFChars (filesetID, fid); env->ReleaseStringUTFChars (filesetUID, fui); return (jint) res.status(); } /* * Class: J2Ci_jDVPresentationState * Method: removeImageReference * Signature: (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVPresentationState_removeImageReference (JNIEnv *env, jobject obj, jstring studyUID, jstring seriesUID, jstring instanceUID) { DVPresentationState *ps = getAddressOfDVPresentationState (env, obj); char *stu = (char*) env->GetStringUTFChars (studyUID, 0); char *ser = (char*) env->GetStringUTFChars (seriesUID, 0); char *ins = (char*) env->GetStringUTFChars (instanceUID, 0); OFCondition res = ps->removeImageReference (stu, ser, ins); env->ReleaseStringUTFChars (studyUID, stu); env->ReleaseStringUTFChars (seriesUID, ser); env->ReleaseStringUTFChars (instanceUID, ins); return (jint) res.status(); } /* * Class: J2Ci_jDVPresentationState * Method: removeImageReferenceAttached * Signature: ()I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVPresentationState_removeImageReferenceAttached (JNIEnv *env, jobject obj) { DVPresentationState *ps = getAddressOfDVPresentationState (env, obj); return (jint) ps->removeImageReferenceAttached ().status(); } /* * Class: J2Ci_jDVPresentationState * Method: getImageNumberOfFrames * Signature: (LJ2Ci/jIntByRef;)I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVPresentationState_getImageNumberOfFrames (JNIEnv *env, jobject obj, jobject frame) { DVPresentationState *ps = getAddressOfDVPresentationState (env, obj); unsigned long fr; OFCondition res = ps->getImageNumberOfFrames (fr); if (res != EC_Normal) return (jint) res.status(); jclass IntByRefcls = env->GetObjectClass (frame); jfieldID value = env->GetFieldID (IntByRefcls, "value", "I"); env->SetIntField (frame, value, (jint) fr); return (jint) EC_Normal.status(); } /* * Class: J2Ci_jDVPresentationState * Method: selectImageFrameNumber * Signature: (I)I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVPresentationState_selectImageFrameNumber (JNIEnv *env, jobject obj, jint frame) { DVPresentationState *ps = getAddressOfDVPresentationState (env, obj); return (jint) ps->selectImageFrameNumber (frame).status(); } /* * Class: J2Ci_jDVPresentationState * Method: getSelectedImageFrameNumber * Signature: ()I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVPresentationState_getSelectedImageFrameNumber (JNIEnv *env, jobject obj) { DVPresentationState *ps = getAddressOfDVPresentationState (env, obj); return (jint) ps->getSelectedImageFrameNumber(); } /* * Class: J2Ci_jDVPresentationState * Method: getPresentationLUT * Signature: ()I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVPresentationState_getPresentationLUT (JNIEnv *env, jobject obj) { DVPresentationState *ps = getAddressOfDVPresentationState (env, obj); return (jint) ps->getPresentationLUT (); } /* * Class: J2Ci_jDVPresentationState * Method: havePresentationLookupTable * Signature: ()Z */ JNIEXPORT jboolean JNICALL Java_J2Ci_jDVPresentationState_havePresentationLookupTable (JNIEnv *env, jobject obj) { DVPresentationState *ps = getAddressOfDVPresentationState (env, obj); return (ps->havePresentationLookupTable () != 0) ? JNI_TRUE : JNI_FALSE; } /* * Class: J2Ci_jDVPresentationState * Method: getRectShutterLV * Signature: ()I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVPresentationState_getRectShutterLV (JNIEnv *env, jobject obj) { DVPresentationState *ps = getAddressOfDVPresentationState (env, obj); return (jint) ps->getRectShutterLV (); } /* * Class: J2Ci_jDVPresentationState * Method: getRectShutterRV * Signature: ()I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVPresentationState_getRectShutterRV (JNIEnv *env, jobject obj) { DVPresentationState *ps = getAddressOfDVPresentationState (env, obj); return (jint) ps->getRectShutterRV (); } /* * Class: J2Ci_jDVPresentationState * Method: getRectShutterUH * Signature: ()I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVPresentationState_getRectShutterUH (JNIEnv *env, jobject obj) { DVPresentationState *ps = getAddressOfDVPresentationState (env, obj); return (jint) ps->getRectShutterUH (); } /* * Class: J2Ci_jDVPresentationState * Method: getRectShutterLH * Signature: ()I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVPresentationState_getRectShutterLH (JNIEnv *env, jobject obj) { DVPresentationState *ps = getAddressOfDVPresentationState (env, obj); return (jint) ps->getRectShutterLH (); } /* * Class: J2Ci_jDVPresentationState * Method: setRectShutter * Signature: (IIII)I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVPresentationState_setRectShutter (JNIEnv *env, jobject obj, jint lv, jint rv, jint uh, jint lh) { DVPresentationState *ps = getAddressOfDVPresentationState (env, obj); return (jint) ps->setRectShutter (lv, rv, uh, lh).status(); } /* * Class: J2Ci_jDVPresentationState * Method: haveShutter * Signature: (I)Z */ JNIEXPORT jboolean JNICALL Java_J2Ci_jDVPresentationState_haveShutter (JNIEnv *env, jobject obj, jint type) { DVPresentationState *ps = getAddressOfDVPresentationState (env, obj); OFBool res = ps->haveShutter ((DVPSShutterType) type); return (res == OFTrue) ? JNI_TRUE : JNI_FALSE; } /* * Class: J2Ci_jDVPresentationState * Method: setCurrentPresentationLUT * Signature: (I)Z */ JNIEXPORT jint JNICALL Java_J2Ci_jDVPresentationState_setCurrentPresentationLUT (JNIEnv *env, jobject obj, jint type) { DVPresentationState *ps = getAddressOfDVPresentationState (env, obj); return (jint) ps->setCurrentPresentationLUT ((DVPSPresentationLUTType) type).status(); } /* * Class: J2Ci_jDVPresentationState * Method: getCurrentPresentationLUTExplanation * Signature: ()Ljava/lang/String; */ JNIEXPORT jstring JNICALL Java_J2Ci_jDVPresentationState_getCurrentPresentationLUTExplanation (JNIEnv *env, jobject obj) { DVPresentationState *ps = getAddressOfDVPresentationState (env, obj); const char* res = ps->getCurrentPresentationLUTExplanation(); if (res == NULL) return NULL; return env->NewStringUTF (res); } /* * Class: J2Ci_jDVPresentationState * Method: getPresentationLUTExplanation * Signature: ()Ljava/lang/String; */ JNIEXPORT jstring JNICALL Java_J2Ci_jDVPresentationState_getPresentationLUTExplanation (JNIEnv *env, jobject obj) { DVPresentationState *ps = getAddressOfDVPresentationState (env, obj); const char* res = ps->getPresentationLUTExplanation(); if (res == NULL) return NULL; return env->NewStringUTF (res); } /* * Class: J2Ci_jDVPresentationState * Method: getCenterOfCircularShutter_x * Signature: ()I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVPresentationState_getCenterOfCircularShutter_1x (JNIEnv *env, jobject obj) { DVPresentationState *ps = getAddressOfDVPresentationState (env, obj); return (jint) ps->getCenterOfCircularShutter_x (); } /* * Class: J2Ci_jDVPresentationState * Method: getCenterOfCircularShutter_y * Signature: ()I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVPresentationState_getCenterOfCircularShutter_1y (JNIEnv *env, jobject obj) { DVPresentationState *ps = getAddressOfDVPresentationState (env, obj); return (jint) ps->getCenterOfCircularShutter_y (); } /* * Class: J2Ci_jDVPresentationState * Method: getRadiusOfCircularShutter * Signature: ()I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVPresentationState_getRadiusOfCircularShutter (JNIEnv *env, jobject obj) { DVPresentationState *ps = getAddressOfDVPresentationState (env, obj); return (jint) ps->getRadiusOfCircularShutter (); } /* * Class: J2Ci_jDVPresentationState * Method: setCircularShutter * Signature: (III)I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVPresentationState_setCircularShutter (JNIEnv *env, jobject obj, jint centerX, jint centerY, jint radius) { DVPresentationState *ps = getAddressOfDVPresentationState (env, obj); return (jint) ps->setCircularShutter (centerX, centerY, radius).status(); } /* * Class: J2Ci_jDVPresentationState * Method: getNumberOfPolyShutterVertices * Signature: ()I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVPresentationState_getNumberOfPolyShutterVertices (JNIEnv *env, jobject obj) { DVPresentationState *ps = getAddressOfDVPresentationState (env, obj); return (jint) ps->getNumberOfPolyShutterVertices (); } /* * Class: J2Ci_jDVPresentationState * Method: setPolyShutterOrigin * Signature: (II)I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVPresentationState_setPolyShutterOrigin (JNIEnv *env, jobject obj, jint x, jint y) { DVPresentationState *ps = getAddressOfDVPresentationState (env, obj); return (jint) ps->setPolyShutterOrigin (x, y).status(); } /* * Class: J2Ci_jDVPresentationState * Method: addPolyShutterVertex * Signature: (II)I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVPresentationState_addPolyShutterVertex (JNIEnv *env, jobject obj, jint x, jint y) { DVPresentationState *ps = getAddressOfDVPresentationState (env, obj); return (jint) ps->addPolyShutterVertex (x, y).status(); } /* * Class: J2Ci_jDVPresentationState * Method: getPolyShutterVertex * Signature: (ILjava/awt/Point;)I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVPresentationState_getPolyShutterVertex (JNIEnv *env, jobject obj, jint idx, jobject pointXY) { DVPresentationState *ps = getAddressOfDVPresentationState (env, obj); Sint32 x, y; OFCondition res = ps->getPolyShutterVertex (idx, x, y); if (res != EC_Normal) return (jint) res.status(); jclass pointcls = env->GetObjectClass (pointXY); jfieldID xfid = env->GetFieldID (pointcls, "x", "I"); jfieldID yfid = env->GetFieldID (pointcls, "y", "I"); env->SetIntField (pointXY, xfid, (jint) x); env->SetIntField (pointXY, yfid, (jint) y); return (jint) EC_Normal.status(); } /* * Class: J2Ci_jDVPresentationState * Method: getShutterPresentationValue * Signature: ()I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVPresentationState_getShutterPresentationValue (JNIEnv *env, jobject obj) { DVPresentationState *ps = getAddressOfDVPresentationState (env, obj); return (jint) ps->getShutterPresentationValue (); } /* * Class: J2Ci_jDVPresentationState * Method: setShutterPresentationValue * Signature: (I)I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVPresentationState_setShutterPresentationValue (JNIEnv *env, jobject obj, jint pvalue) { DVPresentationState *ps = getAddressOfDVPresentationState (env, obj); return (jint) ps->setShutterPresentationValue ((Uint16) pvalue).status(); } /* * Class: J2Ci_jDVPresentationState * Method: sortGraphicLayers * Signature: ()V */ JNIEXPORT void JNICALL Java_J2Ci_jDVPresentationState_sortGraphicLayers (JNIEnv *env, jobject obj) { DVPresentationState *ps = getAddressOfDVPresentationState (env, obj); ps->sortGraphicLayers (); } /* * Class: J2Ci_jDVPresentationState * Method: getNumberOfGraphicLayers * Signature: ()I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVPresentationState_getNumberOfGraphicLayers (JNIEnv *env, jobject obj) { DVPresentationState *ps = getAddressOfDVPresentationState (env, obj); return (jint) ps->getNumberOfGraphicLayers (); } /* * Class: J2Ci_jDVPresentationState * Method: getGraphicLayerName * Signature: (I)Ljava/lang/String; */ JNIEXPORT jstring JNICALL Java_J2Ci_jDVPresentationState_getGraphicLayerName (JNIEnv *env, jobject obj, jint idx) { DVPresentationState *ps = getAddressOfDVPresentationState (env, obj); const char* res = ps->getGraphicLayerName(idx); if (res == NULL) return NULL; return env->NewStringUTF (res); } /* * Class: J2Ci_jDVPresentationState * Method: getGraphicLayerIndex * Signature: (Ljava/lang/String;)I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVPresentationState_getGraphicLayerIndex (JNIEnv *env, jobject obj, jstring name) { DVPresentationState *ps = getAddressOfDVPresentationState (env, obj); char *nam = (char*) env->GetStringUTFChars (name, 0); int res = ps->getGraphicLayerIndex (nam); env->ReleaseStringUTFChars (name, nam); return (jint) res; } /* * Class: J2Ci_jDVPresentationState * Method: getGraphicLayerDescription * Signature: (I)Ljava/lang/String; */ JNIEXPORT jstring JNICALL Java_J2Ci_jDVPresentationState_getGraphicLayerDescription (JNIEnv *env, jobject obj, jint idx) { DVPresentationState *ps = getAddressOfDVPresentationState (env, obj); const char* res = ps->getGraphicLayerDescription(idx); if (res == NULL) return NULL; return env->NewStringUTF (res); } /* * Class: J2Ci_jDVPresentationState * Method: getDisplayedAreaPresentationSizeMode * Signature: ()I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVPresentationState_getDisplayedAreaPresentationSizeMode (JNIEnv *env, jobject obj) { DVPresentationState *ps = getAddressOfDVPresentationState (env, obj); return (jint) ps->getDisplayedAreaPresentationSizeMode (); } /* * Class: J2Ci_jDVPresentationState * Method: getDisplayedAreaPresentationPixelAspectRatio * Signature: ()D */ JNIEXPORT jdouble JNICALL Java_J2Ci_jDVPresentationState_getDisplayedAreaPresentationPixelAspectRatio (JNIEnv *env, jobject obj) { DVPresentationState *ps = getAddressOfDVPresentationState (env, obj); return (jdouble) ps->getDisplayedAreaPresentationPixelAspectRatio (); } /* * Class: J2Ci_jDVPresentationState * Method: getStandardDisplayedArea * Signature: (LJ2Ci/jIntByRef;LJ2Ci/jIntByRef;LJ2Ci/jIntByRef;LJ2Ci/jIntByRef;)I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVPresentationState_getStandardDisplayedArea (JNIEnv *env, jobject obj, jobject tlhcX, jobject tlhcY, jobject brhcX, jobject brhcY) { DVPresentationState *ps = getAddressOfDVPresentationState (env, obj); long tx, ty, bx, by; OFCondition res = ps->getStandardDisplayedArea (tx, ty, bx, by); if (res != EC_Normal) return (jint) res.status(); jclass txIntByRefcls = env->GetObjectClass (tlhcX); jclass tyIntByRefcls = env->GetObjectClass (tlhcY); jclass bxIntByRefcls = env->GetObjectClass (brhcX); jclass byIntByRefcls = env->GetObjectClass (brhcY); jfieldID txvalue = env->GetFieldID (txIntByRefcls, "value", "I"); jfieldID tyvalue = env->GetFieldID (tyIntByRefcls, "value", "I"); jfieldID bxvalue = env->GetFieldID (bxIntByRefcls, "value", "I"); jfieldID byvalue = env->GetFieldID (byIntByRefcls, "value", "I"); env->SetIntField (tlhcX, txvalue, (jint) tx); env->SetIntField (tlhcY, tyvalue, (jint) ty); env->SetIntField (brhcX, bxvalue, (jint) bx); env->SetIntField (brhcY, byvalue, (jint) by); return (jint) EC_Normal.status(); } /* * Class: J2Ci_jDVPresentationState * Method: getImageRelativeDisplayedArea * Signature: (LJ2Ci/jIntByRef;LJ2Ci/jIntByRef;LJ2Ci/jIntByRef;LJ2Ci/jIntByRef;)I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVPresentationState_getImageRelativeDisplayedArea (JNIEnv *env, jobject obj, jobject tlhcX, jobject tlhcY, jobject brhcX, jobject brhcY) { DVPresentationState *ps = getAddressOfDVPresentationState (env, obj); long tx, ty, bx, by; OFCondition res = ps->getImageRelativeDisplayedArea (tx, ty, bx, by); if (res != EC_Normal) return (jint) res.status(); jclass txIntByRefcls = env->GetObjectClass (tlhcX); jclass tyIntByRefcls = env->GetObjectClass (tlhcY); jclass bxIntByRefcls = env->GetObjectClass (brhcX); jclass byIntByRefcls = env->GetObjectClass (brhcY); jfieldID txvalue = env->GetFieldID (txIntByRefcls, "value", "I"); jfieldID tyvalue = env->GetFieldID (tyIntByRefcls, "value", "I"); jfieldID bxvalue = env->GetFieldID (bxIntByRefcls, "value", "I"); jfieldID byvalue = env->GetFieldID (byIntByRefcls, "value", "I"); env->SetIntField (tlhcX, txvalue, (jint) tx); env->SetIntField (tlhcY, tyvalue, (jint) ty); env->SetIntField (brhcX, bxvalue, (jint) bx); env->SetIntField (brhcY, byvalue, (jint) by); return (jint) EC_Normal.status(); } /* * Class: J2Ci_jDVPresentationState * Method: getDisplayedAreaPresentationPixelSpacing * Signature: (LJ2Ci/jDoubleByRef;LJ2Ci/jDoubleByRef;)I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVPresentationState_getDisplayedAreaPresentationPixelSpacing (JNIEnv *env, jobject obj, jobject x, jobject y) { DVPresentationState *ps = getAddressOfDVPresentationState (env, obj); double xx, yy; OFCondition res = ps->getDisplayedAreaPresentationPixelSpacing (xx, yy); if (res != EC_Normal) return (jint) res.status(); jclass xDoubleByRefcls = env->GetObjectClass (x); jclass yDoubleByRefcls = env->GetObjectClass (y); jfieldID xvalue = env->GetFieldID (xDoubleByRefcls, "value", "D"); jfieldID yvalue = env->GetFieldID (yDoubleByRefcls, "value", "D"); env->SetDoubleField (x, xvalue, xx); env->SetDoubleField (y, yvalue, yy); return (jint) EC_Normal.status(); } /* * Class: J2Ci_jDVPresentationState * Method: getDisplayedAreaPresentationPixelMagnificationRatio * Signature: (LJ2Ci/jDoubleByRef;)I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVPresentationState_getDisplayedAreaPresentationPixelMagnificationRatio (JNIEnv *env, jobject obj, jobject magnification) { DVPresentationState *ps = getAddressOfDVPresentationState (env, obj); double m; OFCondition res = ps->getDisplayedAreaPresentationPixelMagnificationRatio (m); if (res != EC_Normal) return (jint) res.status(); jclass mDoubleByRefcls = env->GetObjectClass (magnification); jfieldID mvalue = env->GetFieldID (mDoubleByRefcls, "value", "D"); env->SetDoubleField (magnification, mvalue, m); return (jint) EC_Normal.status(); } /* * Class: J2Ci_jDVPresentationState * Method: canUseDisplayedAreaTrueSize * Signature: ()Z */ JNIEXPORT jboolean JNICALL Java_J2Ci_jDVPresentationState_canUseDisplayedAreaTrueSize (JNIEnv *env, jobject obj) { DVPresentationState *ps = getAddressOfDVPresentationState (env, obj); if (ps->canUseDisplayedAreaTrueSize()) return JNI_TRUE; else return JNI_FALSE; } /* * Class: J2Ci_jDVPresentationState * Method: setStandardDisplayedArea * Signature: (IIIIIDI)I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVPresentationState_setStandardDisplayedArea (JNIEnv *env, jobject obj, jint sizeMode, jint tlhcX, jint tlhcY, jint brhcX, jint brhcY, jdouble magnification, jint applicability) { DVPresentationState *ps = getAddressOfDVPresentationState (env, obj); return (jint) ps->setStandardDisplayedArea ((DVPSPresentationSizeMode) sizeMode, tlhcX, tlhcY, brhcX, brhcY, magnification, (DVPSObjectApplicability) applicability).status(); } /* * Class: J2Ci_jDVPresentationState * Method: setImageRelativeDisplayedArea * Signature: (IIIIIDI)I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVPresentationState_setImageRelativeDisplayedArea (JNIEnv *env, jobject obj, jint sizeMode, jint tlhcX, jint tlhcY, jint brhcX, jint brhcY, jdouble magnification, jint applicability) { DVPresentationState *ps = getAddressOfDVPresentationState (env, obj); return (jint) ps->setImageRelativeDisplayedArea ((DVPSPresentationSizeMode) sizeMode, tlhcX, tlhcY, brhcX, brhcY, magnification, (DVPSObjectApplicability) applicability).status(); } /* * Class: J2Ci_jDVPresentationState * Method: haveGraphicLayerRecommendedDisplayValue * Signature: (I)Z */ JNIEXPORT jboolean JNICALL Java_J2Ci_jDVPresentationState_haveGraphicLayerRecommendedDisplayValue (JNIEnv *env, jobject obj, jint idx) { DVPresentationState *ps = getAddressOfDVPresentationState (env, obj); return (ps->haveGraphicLayerRecommendedDisplayValue (idx) != 0) ? JNI_TRUE : JNI_FALSE; } /* * Class: J2Ci_jDVPresentationState * Method: removeGraphicLayerRecommendedDisplayValue * Signature: (IZZ)V */ JNIEXPORT void JNICALL Java_J2Ci_jDVPresentationState_removeGraphicLayerRecommendedDisplayValue (JNIEnv *env, jobject obj, jint idx, jboolean rgb, jboolean monochrome) { DVPresentationState *ps = getAddressOfDVPresentationState (env, obj); OFBool ofrgb, ofmono; ofrgb = (rgb == JNI_TRUE) ? OFTrue : OFFalse; ofmono = (monochrome == JNI_TRUE) ? OFTrue : OFFalse; ps->removeGraphicLayerRecommendedDisplayValue (idx, ofrgb, ofmono); } /* * Class: J2Ci_jDVPresentationState * Method: getGraphicLayerRecommendedDisplayValueGray * Signature: (ILJ2Ci/jIntByRef;)I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVPresentationState_getGraphicLayerRecommendedDisplayValueGray (JNIEnv *env, jobject obj, jint idx, jobject gray) { DVPresentationState *ps = getAddressOfDVPresentationState (env, obj); Uint16 gr; OFCondition res = ps->getGraphicLayerRecommendedDisplayValueGray (idx, gr); if (res != EC_Normal) return (jint) res.status(); jclass IntByRefcls = env->GetObjectClass (gray); jfieldID value = env->GetFieldID (IntByRefcls, "value", "I"); env->SetIntField (gray, value, (jint) gr); return (jint) EC_Normal.status(); } /* * Class: J2Ci_jDVPresentationState * Method: getGraphicLayerRecommendedDisplayValueRGB * Signature: (ILJ2Ci/jIntByRef;LJ2Ci/jIntByRef;LJ2Ci/jIntByRef;)I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVPresentationState_getGraphicLayerRecommendedDisplayValueRGB (JNIEnv *env, jobject obj, jint idx, jobject r, jobject g, jobject b) { DVPresentationState *ps = getAddressOfDVPresentationState (env, obj); Uint16 rr, gg, bb; OFCondition res = ps->getGraphicLayerRecommendedDisplayValueRGB (idx, rr, gg, bb); if (res != EC_Normal) return (jint) res.status(); jclass rIntByRefcls = env->GetObjectClass (r); jclass gIntByRefcls = env->GetObjectClass (g); jclass bIntByRefcls = env->GetObjectClass (b); jfieldID rvalue = env->GetFieldID (rIntByRefcls, "value", "I"); jfieldID gvalue = env->GetFieldID (gIntByRefcls, "value", "I"); jfieldID bvalue = env->GetFieldID (bIntByRefcls, "value", "I"); env->SetIntField (r, rvalue, (jint) rr); env->SetIntField (g, gvalue, (jint) gg); env->SetIntField (b, bvalue, (jint) bb); return (jint) EC_Normal.status(); } /* * Class: J2Ci_jDVPresentationState * Method: setGraphicLayerRecommendedDisplayValueGray * Signature: (II)I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVPresentationState_setGraphicLayerRecommendedDisplayValueGray (JNIEnv *env, jobject obj, jint idx, jint gray) { DVPresentationState *ps = getAddressOfDVPresentationState (env, obj); return (jint) ps->setGraphicLayerRecommendedDisplayValueGray (idx, (Uint16) gray).status(); } /* * Class: J2Ci_jDVPresentationState * Method: setGraphicLayerRecommendedDisplayValueRGB * Signature: (IIII)I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVPresentationState_setGraphicLayerRecommendedDisplayValueRGB (JNIEnv *env, jobject obj, jint idx, jint r, jint g, jint b) { DVPresentationState *ps = getAddressOfDVPresentationState (env, obj); return (jint) ps->setGraphicLayerRecommendedDisplayValueRGB (idx, (Uint16) r, (Uint16) g, (Uint16) b).status(); } /* * Class: J2Ci_jDVPresentationState * Method: setGraphicLayerName * Signature: (ILjava/lang/String;)I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVPresentationState_setGraphicLayerName (JNIEnv *env, jobject obj, jint idx, jstring name) { DVPresentationState *ps = getAddressOfDVPresentationState (env, obj); char *nam = (char *) env->GetStringUTFChars (name, 0); OFCondition res = ps->setGraphicLayerName (idx, nam); env->ReleaseStringUTFChars (name, nam); return (jint) res.status(); } /* * Class: J2Ci_jDVPresentationState * Method: setGraphicLayerDescription * Signature: (ILjava/lang/String;)I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVPresentationState_setGraphicLayerDescription (JNIEnv *env, jobject obj, jint idx, jstring descr) { DVPresentationState *ps = getAddressOfDVPresentationState (env, obj); OFCondition res = EC_IllegalCall; jmethodID mid = env->GetMethodID(env->FindClass("java/lang/String"), "getBytes", "(Ljava/lang/String;)[B"); if (mid) { jbyteArray array = (jbyteArray) env->CallObjectMethod(descr, mid, env->NewStringUTF(JAVA_ENCODING_STRING)); if (array) { jbyte *string = env->GetByteArrayElements(array, 0); res = ps->setGraphicLayerDescription(idx, OFString((char *)string, env->GetArrayLength(array)).c_str()); env->ReleaseByteArrayElements(array, string, 0); } } return (jint) res.status(); } /* * Class: J2Ci_jDVPresentationState * Method: toFrontGraphicLayer * Signature: (I)I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVPresentationState_toFrontGraphicLayer (JNIEnv *env, jobject obj, jint idx) { DVPresentationState *ps = getAddressOfDVPresentationState (env, obj); return (jint) ps->toFrontGraphicLayer (idx).status(); } /* * Class: J2Ci_jDVPresentationState * Method: toBackGraphicLayer * Signature: (I)I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVPresentationState_toBackGraphicLayer (JNIEnv *env, jobject obj, jint idx) { DVPresentationState *ps = getAddressOfDVPresentationState (env, obj); return (jint) ps->toBackGraphicLayer (idx).status(); } /* * Class: J2Ci_jDVPresentationState * Method: addGraphicLayer * Signature: (Ljava/lang/String;Ljava/lang/String;)I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVPresentationState_addGraphicLayer (JNIEnv *env, jobject obj, jstring gLayer, jstring gLayerDescr) { DVPresentationState *ps = getAddressOfDVPresentationState (env, obj); OFCondition res = EC_IllegalCall; jmethodID mid = env->GetMethodID(env->FindClass("java/lang/String"), "getBytes", "(Ljava/lang/String;)[B"); if (mid) { jbyteArray array = (jbyteArray) env->CallObjectMethod(gLayerDescr, mid, env->NewStringUTF(JAVA_ENCODING_STRING)); if (array) { char *lay = (char*) env->GetStringUTFChars (gLayer, 0); jbyte *string = env->GetByteArrayElements(array, 0); res = ps->addGraphicLayer (lay, OFString((char *)string, env->GetArrayLength(array)).c_str()); env->ReleaseStringUTFChars (gLayer, lay); env->ReleaseByteArrayElements(array, string, 0); } } return (jint) res.status(); } /* * Class: J2Ci_jDVPresentationState * Method: removeGraphicLayer * Signature: (I)I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVPresentationState_removeGraphicLayer (JNIEnv *env, jobject obj, jint idx) { DVPresentationState *ps = getAddressOfDVPresentationState (env, obj); return (jint) ps->removeGraphicLayer (idx).status(); } /* * Class: J2Ci_jDVPresentationState * Method: removeShutter * Signature: (I)V */ JNIEXPORT void JNICALL Java_J2Ci_jDVPresentationState_removeShutter (JNIEnv *env, jobject obj, jint type) { DVPresentationState *ps = getAddressOfDVPresentationState (env, obj); ps->removeShutter ((DVPSShutterType) type); } /* * Class: J2Ci_jDVPresentationState * Method: getNumberOfTextObjects * Signature: (I)I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVPresentationState_getNumberOfTextObjects (JNIEnv *env, jobject obj, jint layer) { DVPresentationState *ps = getAddressOfDVPresentationState (env, obj); return (jint) ps->getNumberOfTextObjects (layer); } /* * Class: J2Ci_jDVPresentationState * Method: getTextObjectN * Signature: (II)J */ JNIEXPORT jlong JNICALL Java_J2Ci_jDVPresentationState_getTextObjectN (JNIEnv *env, jobject obj, jint layer, jint idx) { DVPresentationState *ps = getAddressOfDVPresentationState (env, obj); return (jlong) ps->getTextObject (layer, idx); } /* * Class: J2Ci_jDVPresentationState * Method: addTextObjectN * Signature: (II)J */ JNIEXPORT jlong JNICALL Java_J2Ci_jDVPresentationState_addTextObjectN (JNIEnv *env, jobject obj, jint layer, jint applicability) { DVPresentationState *ps = getAddressOfDVPresentationState (env, obj); return (jlong) ps->addTextObject (layer, (DVPSObjectApplicability) applicability); } /* * Class: J2Ci_jDVPresentationState * Method: removeTextObject * Signature: (II)I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVPresentationState_removeTextObject (JNIEnv *env, jobject obj, jint layer, jint idx) { DVPresentationState *ps = getAddressOfDVPresentationState (env, obj); return (jint) ps->removeTextObject (layer, idx).status(); } /* * Class: J2Ci_jDVPresentationState * Method: moveTextObject * Signature: (IIII)I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVPresentationState_moveTextObject (JNIEnv *env, jobject obj, jint old_layer, jint idx, jint new_layer, jint applicability) { DVPresentationState *ps = getAddressOfDVPresentationState (env, obj); return (jint) ps->moveTextObject (old_layer, idx, new_layer, (DVPSObjectApplicability) applicability).status(); } /* * Class: J2Ci_jDVPresentationState * Method: getNumberOfGraphicObjects * Signature: (I)I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVPresentationState_getNumberOfGraphicObjects (JNIEnv *env, jobject obj, jint layer) { DVPresentationState *ps = getAddressOfDVPresentationState (env, obj); return (jint) ps->getNumberOfGraphicObjects (layer); } /* * Class: J2Ci_jDVPresentationState * Method: getGraphicObjectN * Signature: (II)J */ JNIEXPORT jlong JNICALL Java_J2Ci_jDVPresentationState_getGraphicObjectN (JNIEnv *env, jobject obj, jint layer, jint idx) { DVPresentationState *ps = getAddressOfDVPresentationState (env, obj); return (jlong) ps->getGraphicObject (layer, idx); } /* * Class: J2Ci_jDVPresentationState * Method: addGraphicObjectN * Signature: (II)J */ JNIEXPORT jlong JNICALL Java_J2Ci_jDVPresentationState_addGraphicObjectN (JNIEnv *env, jobject obj, jint layer, jint applicability) { DVPresentationState *ps = getAddressOfDVPresentationState (env, obj); return (jlong) ps->addGraphicObject (layer, (DVPSObjectApplicability) applicability); } /* * Class: J2Ci_jDVPresentationState * Method: removeGraphicObject * Signature: (II)I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVPresentationState_removeGraphicObject (JNIEnv *env, jobject obj, jint layer, jint idx) { DVPresentationState *ps = getAddressOfDVPresentationState (env, obj); return (jint) ps->removeGraphicObject (layer, idx).status(); } /* * Class: J2Ci_jDVPresentationState * Method: moveGraphicObject * Signature: (IIII)I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVPresentationState_moveGraphicObject (JNIEnv *env, jobject obj, jint old_layer, jint idx, jint new_layer, jint applicability) { DVPresentationState *ps = getAddressOfDVPresentationState (env, obj); return (jint) ps->moveGraphicObject (old_layer, idx, new_layer, (DVPSObjectApplicability) applicability).status(); } /* * Class: J2Ci_jDVPresentationState * Method: detachImage * Signature: ()V */ JNIEXPORT void JNICALL Java_J2Ci_jDVPresentationState_detachImage (JNIEnv *env, jobject obj) { DVPresentationState *ps = getAddressOfDVPresentationState (env, obj); ps->detachImage (); } /* * Class: J2Ci_jDVPresentationState * Method: setCharset * Signature: (I)I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVPresentationState_setCharset (JNIEnv *env, jobject obj, jint charset) { DVPresentationState *ps = getAddressOfDVPresentationState (env, obj); return (jint) ps->setCharset ((DVPScharacterSet) charset).status(); } /* * Class: J2Ci_jDVPresentationState * Method: getCharset * Signature: ()I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVPresentationState_getCharset (JNIEnv *env, jobject obj) { DVPresentationState *ps = getAddressOfDVPresentationState (env, obj); return (jint) ps->getCharset (); } /* * Class: J2Ci_jDVPresentationState * Method: getCharsetString * Signature: ()Ljava/lang/String; */ JNIEXPORT jstring JNICALL Java_J2Ci_jDVPresentationState_getCharsetString (JNIEnv *env, jobject obj) { DVPresentationState *ps = getAddressOfDVPresentationState (env, obj); const char* res = ps->getCharsetString(); if (res == NULL) return NULL; return env->NewStringUTF (res); } /* * Class: J2Ci_jDVPresentationState * Method: getNumberOfCurves * Signature: (I)I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVPresentationState_getNumberOfCurves (JNIEnv *env, jobject obj, jint layer) { DVPresentationState *ps = getAddressOfDVPresentationState (env, obj); return (jint) ps->getNumberOfCurves (layer); } /* * Class: J2Ci_jDVPresentationState * Method: getCurveN * Signature: (II)J */ JNIEXPORT jlong JNICALL Java_J2Ci_jDVPresentationState_getCurveN (JNIEnv *env, jobject obj, jint layer, jint idx) { DVPresentationState *ps = getAddressOfDVPresentationState (env, obj); return (jlong) ps->getCurve (layer, idx); } /* * Class: J2Ci_jDVPresentationState * Method: getNumberOfCurvesInImage * Signature: ()I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVPresentationState_getNumberOfCurvesInImage (JNIEnv *env, jobject obj) { DVPresentationState *ps = getAddressOfDVPresentationState (env, obj); return (jint) ps->getNumberOfCurvesInImage (); } /* * Class: J2Ci_jDVPresentationState * Method: getCurveInImageN * Signature: (I)J */ JNIEXPORT jlong JNICALL Java_J2Ci_jDVPresentationState_getCurveInImageN (JNIEnv *env, jobject obj, jint idx) { DVPresentationState *ps = getAddressOfDVPresentationState (env, obj); return (jlong) ps->getCurveInImage (idx); } /* * Class: J2Ci_jDVPresentationState * Method: addCurve * Signature: (II)I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVPresentationState_addCurve (JNIEnv *env, jobject obj, jint layer, jint curveidxinimage) { DVPresentationState *ps = getAddressOfDVPresentationState (env, obj); return (jint) ps->addCurve (layer, curveidxinimage).status(); } /* * Class: J2Ci_jDVPresentationState * Method: removeCurve * Signature: (II)I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVPresentationState_removeCurve (JNIEnv *env, jobject obj, jint layer, jint idx) { DVPresentationState *ps = getAddressOfDVPresentationState (env, obj); return (jint) ps->removeCurve (layer, idx).status(); } /* * Class: J2Ci_jDVPresentationState * Method: moveCurve * Signature: (III)I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVPresentationState_moveCurve (JNIEnv *env, jobject obj, jint old_layer, jint idx, jint new_layer) { DVPresentationState *ps = getAddressOfDVPresentationState (env, obj); return (jint) ps->moveCurve (old_layer, idx, new_layer).status(); } /* * Class: J2Ci_jDVPresentationState * Method: getCurrentWindowWidth * Signature: (LJ2Ci/jDoubleByRef;)I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVPresentationState_getCurrentWindowWidth (JNIEnv *env, jobject obj, jobject w) { DVPresentationState *ps = getAddressOfDVPresentationState (env, obj); double ww; OFCondition res = ps->getCurrentWindowWidth (ww); if (res != EC_Normal) return (jint) res.status(); jclass wDoubleByRefcls = env->GetObjectClass (w); jfieldID wvalue = env->GetFieldID (wDoubleByRefcls, "value", "D"); env->SetDoubleField (w, wvalue, ww); return (jint) EC_Normal.status(); } /* * Class: J2Ci_jDVPresentationState * Method: getCurrentWindowCenter * Signature: (LJ2Ci/jDoubleByRef;)I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVPresentationState_getCurrentWindowCenter (JNIEnv *env, jobject obj, jobject c) { DVPresentationState *ps = getAddressOfDVPresentationState (env, obj); double cc; OFCondition res = ps->getCurrentWindowCenter (cc); if (res != EC_Normal) return (jint) res.status(); jclass cDoubleByRefcls = env->GetObjectClass (c); jfieldID cvalue = env->GetFieldID (cDoubleByRefcls, "value", "D"); env->SetDoubleField (c, cvalue, (jdouble) cc); return (jint) EC_Normal.status(); } /* * Class: J2Ci_jDVPresentationState * Method: haveActiveVOIWindow * Signature: ()Z */ JNIEXPORT jboolean JNICALL Java_J2Ci_jDVPresentationState_haveActiveVOIWindow (JNIEnv *env, jobject obj) { DVPresentationState *ps = getAddressOfDVPresentationState (env, obj); return (ps->haveActiveVOIWindow () != 0) ? JNI_TRUE : JNI_FALSE; } /* * Class: J2Ci_jDVPresentationState * Method: haveActiveVOILUT * Signature: ()Z */ JNIEXPORT jboolean JNICALL Java_J2Ci_jDVPresentationState_haveActiveVOILUT (JNIEnv *env, jobject obj) { DVPresentationState *ps = getAddressOfDVPresentationState (env, obj); return (ps->haveActiveVOILUT () != 0) ? JNI_TRUE : JNI_FALSE; } /* * Class: J2Ci_jDVPresentationState * Method: getCurrentVOIDescription * Signature: ()Ljava/lang/String; */ JNIEXPORT jstring JNICALL Java_J2Ci_jDVPresentationState_getCurrentVOIDescription (JNIEnv *env, jobject obj) { DVPresentationState *ps = getAddressOfDVPresentationState (env, obj); const char* res = ps->getCurrentVOIDescription(); if (res == NULL) return NULL; return env->NewStringUTF (res); } /* * Class: J2Ci_jDVPresentationState * Method: getNumberOfVOILUTsInImage * Signature: ()I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVPresentationState_getNumberOfVOILUTsInImage (JNIEnv *env, jobject obj) { DVPresentationState *ps = getAddressOfDVPresentationState (env, obj); return (jint) ps->getNumberOfVOILUTsInImage (); } /* * Class: J2Ci_jDVPresentationState * Method: getNumberOfVOIWindowsInImage * Signature: ()I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVPresentationState_getNumberOfVOIWindowsInImage (JNIEnv *env, jobject obj) { DVPresentationState *ps = getAddressOfDVPresentationState (env, obj); return (jint) ps->getNumberOfVOIWindowsInImage (); } /* * Class: J2Ci_jDVPresentationState * Method: getDescriptionOfVOILUTsInImage * Signature: (I)Ljava/lang/String; */ JNIEXPORT jstring JNICALL Java_J2Ci_jDVPresentationState_getDescriptionOfVOILUTsInImage (JNIEnv *env, jobject obj, jint idx) { DVPresentationState *ps = getAddressOfDVPresentationState (env, obj); const char* res = ps->getDescriptionOfVOILUTsInImage(idx); if (res == NULL) return NULL; return env->NewStringUTF (res); } /* * Class: J2Ci_jDVPresentationState * Method: getDescriptionOfVOIWindowsInImage * Signature: (I)Ljava/lang/String; */ JNIEXPORT jstring JNICALL Java_J2Ci_jDVPresentationState_getDescriptionOfVOIWindowsInImage (JNIEnv *env, jobject obj, jint idx) { DVPresentationState *ps = getAddressOfDVPresentationState (env, obj); const char* res = ps->getDescriptionOfVOIWindowsInImage(idx); if (res == NULL) return NULL; return env->NewStringUTF (res); } /* * Class: J2Ci_jDVPresentationState * Method: setVOILUTFromImage * Signature: (II)I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVPresentationState_setVOILUTFromImage (JNIEnv *env, jobject obj, jint idx, jint applicability) { DVPresentationState *ps = getAddressOfDVPresentationState (env, obj); return (jint) ps->setVOILUTFromImage (idx, (DVPSObjectApplicability) applicability).status(); } /* * Class: J2Ci_jDVPresentationState * Method: setVOIWindowFromImage * Signature: (II)I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVPresentationState_setVOIWindowFromImage (JNIEnv *env, jobject obj, jint idx, jint applicability) { DVPresentationState *ps = getAddressOfDVPresentationState (env, obj); return (jint) ps->setVOIWindowFromImage (idx, (DVPSObjectApplicability) applicability).status(); } /* * Class: J2Ci_jDVPresentationState * Method: setVOIWindow * Signature: (DDLjava/lang/String;I)I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVPresentationState_setVOIWindow (JNIEnv *env, jobject obj, jdouble wCenter, jdouble wWidth, jstring descr, jint applicability) { DVPresentationState *ps = getAddressOfDVPresentationState (env, obj); OFCondition res = EC_IllegalCall; jmethodID mid = env->GetMethodID(env->FindClass("java/lang/String"), "getBytes", "(Ljava/lang/String;)[B"); if (mid) { jbyteArray array = (jbyteArray) env->CallObjectMethod(descr, mid, env->NewStringUTF(JAVA_ENCODING_STRING)); if (array) { jbyte *string = env->GetByteArrayElements(array, 0); res = ps->setVOIWindow (wCenter, wWidth, OFString((char *)string, env->GetArrayLength(array)).c_str(), (DVPSObjectApplicability) applicability); env->ReleaseByteArrayElements(array, string, 0); } } return (jint) res.status(); } /* * Class: J2Ci_jDVPresentationState * Method: deactivateVOI * Signature: (I)V */ JNIEXPORT void JNICALL Java_J2Ci_jDVPresentationState_deactivateVOI (JNIEnv *env, jobject obj, jint applicability) { DVPresentationState *ps = getAddressOfDVPresentationState (env, obj); ps->deactivateVOI ((DVPSObjectApplicability) applicability); } /* * Class: J2Ci_jDVPresentationState * Method: setGammaVOILUT * Signature: (DI)I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVPresentationState_setGammaVOILUT (JNIEnv *env, jobject obj, jdouble gammaValue, jint applicability) { DVPresentationState *ps = getAddressOfDVPresentationState (env, obj); return (jint) ps->setGammaVOILUT (gammaValue, (DVPSObjectApplicability) applicability).status(); } /* * Class: J2Ci_jDVPresentationState * Method: getNumberOfActiveOverlays * Signature: (I)I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVPresentationState_getNumberOfActiveOverlays (JNIEnv *env, jobject obj, jint layer) { DVPresentationState *ps = getAddressOfDVPresentationState (env, obj); return (jint) ps->getNumberOfActiveOverlays (layer); } /* * Class: J2Ci_jDVPresentationState * Method: getActiveOverlayGroup * Signature: (II)I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVPresentationState_getActiveOverlayGroup (JNIEnv *env, jobject obj, jint layer, jint idx) { DVPresentationState *ps = getAddressOfDVPresentationState (env, obj); return (jint) ps->getActiveOverlayGroup (layer, idx); } /* * Class: J2Ci_jDVPresentationState * Method: getActiveOverlayLabel * Signature: (II)Ljava/lang/String; */ JNIEXPORT jstring JNICALL Java_J2Ci_jDVPresentationState_getActiveOverlayLabel (JNIEnv *env, jobject obj, jint layer, jint idx) { DVPresentationState *ps = getAddressOfDVPresentationState (env, obj); const char* res = ps->getActiveOverlayLabel(layer, idx); if (res == NULL) return NULL; return env->NewStringUTF (res); } /* * Class: J2Ci_jDVPresentationState * Method: getActiveOverlayDescription * Signature: (II)Ljava/lang/String; */ JNIEXPORT jstring JNICALL Java_J2Ci_jDVPresentationState_getActiveOverlayDescription (JNIEnv *env, jobject obj, jint layer, jint idx) { DVPresentationState *ps = getAddressOfDVPresentationState (env, obj); const char* res = ps->getActiveOverlayDescription(layer, idx); if (res == NULL) return NULL; return env->NewStringUTF (res); } /* * Class: J2Ci_jDVPresentationState * Method: activeOverlayIsROI * Signature: (II)Z */ JNIEXPORT jboolean JNICALL Java_J2Ci_jDVPresentationState_activeOverlayIsROI (JNIEnv *env, jobject obj, jint layer, jint idx) { DVPresentationState *ps = getAddressOfDVPresentationState (env, obj); return (ps->activeOverlayIsROI (layer, idx) != 0) ? JNI_TRUE : JNI_FALSE; } /* * Class: J2Ci_jDVPresentationState * Method: getOverlayData * Signature: (LJ2Ci/jDVPrStateParam_GetOverlayData;)I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVPresentationState_getOverlayData (JNIEnv *env, jobject obj, jobject od) { DVPresentationState *ps = getAddressOfDVPresentationState (env, obj); int layer; int idx; const void *overlayData; unsigned int width; unsigned int height; unsigned int left_pos; unsigned int top_pos; unsigned short foreground; unsigned short bits; OFBool isROI; jclass ovdatcls = env->GetObjectClass (od); jfieldID layerfid = env->GetFieldID (ovdatcls, "layer", "I"); jfieldID idxfid = env->GetFieldID (ovdatcls, "idx", "I"); jfieldID bitsfid = env->GetFieldID (ovdatcls, "bits", "I"); layer = env->GetIntField (od, layerfid); idx = env->GetIntField (od, idxfid); bits = (unsigned short) env->GetIntField (od, bitsfid); OFCondition res = ps->getOverlayData (layer, idx, overlayData, width, height, left_pos, top_pos, isROI, foreground, bits); if (res != EC_Normal) return res.status(); // error?? jfieldID datafid = env->GetFieldID (ovdatcls, "overlayData", "[B"); jfieldID data12fid = env->GetFieldID (ovdatcls, "overlayData12", "[S"); jfieldID widthfid = env->GetFieldID (ovdatcls, "width", "I"); jfieldID heightfid = env->GetFieldID (ovdatcls, "height", "I"); jfieldID leftfid = env->GetFieldID (ovdatcls, "left", "I"); jfieldID topfid = env->GetFieldID (ovdatcls, "top", "I"); jfieldID isroifid = env->GetFieldID (ovdatcls, "isROI", "Z"); jfieldID foregroundfid = env->GetFieldID (ovdatcls, "foreground", "S"); env->SetIntField (od, widthfid, (jint) width); env->SetIntField (od, heightfid, (jint) height); env->SetIntField (od, leftfid, (jint) left_pos); env->SetIntField (od, topfid, (jint) top_pos); env->SetShortField (od, foregroundfid, (jshort) foreground); env->SetBooleanField (od, isroifid, (jboolean) (isROI == OFTrue) ? JNI_TRUE : JNI_FALSE); if (bits == 8) { jbyteArray array = env->NewByteArray ((jsize) (width*height)); env->SetByteArrayRegion (array, 0, width*height, (jbyte*) overlayData); env->SetObjectField (od, datafid, array); } else // bits == 12 { jshortArray array = env->NewShortArray ((jsize) (width*height)); env->SetShortArrayRegion (array, 0, width*height, (jshort*) overlayData); env->SetObjectField (od, data12fid, array); } return (jint) res.status(); } /* * Class: J2Ci_jDVPresentationState * Method: getNumberOfOverlaysInImage * Signature: ()I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVPresentationState_getNumberOfOverlaysInImage (JNIEnv *env, jobject obj) { DVPresentationState *ps = getAddressOfDVPresentationState (env, obj); return (jint) ps->getNumberOfOverlaysInImage (); } /* * Class: J2Ci_jDVPresentationState * Method: getOverlayInImageGroup * Signature: (I)I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVPresentationState_getOverlayInImageGroup (JNIEnv *env, jobject obj, jint idx) { DVPresentationState *ps = getAddressOfDVPresentationState (env, obj); return (jint) ps->getOverlayInImageGroup (idx); } /* * Class: J2Ci_jDVPresentationState * Method: getOverlayInImageLabel * Signature: (I)Ljava/lang/String; */ JNIEXPORT jstring JNICALL Java_J2Ci_jDVPresentationState_getOverlayInImageLabel (JNIEnv *env, jobject obj, jint idx) { DVPresentationState *ps = getAddressOfDVPresentationState (env, obj); const char* res = ps->getOverlayInImageLabel(idx); if (res == NULL) return NULL; return env->NewStringUTF (res); } /* * Class: J2Ci_jDVPresentationState * Method: getOverlayInImageDescription * Signature: (I)Ljava/lang/String; */ JNIEXPORT jstring JNICALL Java_J2Ci_jDVPresentationState_getOverlayInImageDescription (JNIEnv *env, jobject obj, jint idx) { DVPresentationState *ps = getAddressOfDVPresentationState (env, obj); const char* res = ps->getOverlayInImageDescription(idx); if (res == NULL) return NULL; return env->NewStringUTF (res); } /* * Class: J2Ci_jDVPresentationState * Method: getOverlayInImageActivationLayer * Signature: (I)I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVPresentationState_getOverlayInImageActivationLayer (JNIEnv *env, jobject obj, jint idx) { DVPresentationState *ps = getAddressOfDVPresentationState (env, obj); return (jint) ps->getOverlayInImageActivationLayer (idx); } /* * Class: J2Ci_jDVPresentationState * Method: overlayInImageIsROI * Signature: (I)Z */ JNIEXPORT jboolean JNICALL Java_J2Ci_jDVPresentationState_overlayInImageIsROI (JNIEnv *env, jobject obj, jint idx) { DVPresentationState *ps = getAddressOfDVPresentationState (env, obj); return (ps->overlayInImageIsROI (idx) != 0) ? JNI_TRUE : JNI_FALSE; } /* * Class: J2Ci_jDVPresentationState * Method: getNumberOfOverlaysInPresentationState * Signature: ()I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVPresentationState_getNumberOfOverlaysInPresentationState (JNIEnv *env, jobject obj) { DVPresentationState *ps = getAddressOfDVPresentationState (env, obj); return (jint) ps->getNumberOfOverlaysInPresentationState (); } /* * Class: J2Ci_jDVPresentationState * Method: getOverlayInPresentationStateGroup * Signature: (I)I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVPresentationState_getOverlayInPresentationStateGroup (JNIEnv *env, jobject obj, jint idx) { DVPresentationState *ps = getAddressOfDVPresentationState (env, obj); return (jint) ps->getOverlayInPresentationStateGroup (idx); } /* * Class: J2Ci_jDVPresentationState * Method: getOverlayInPresentationStateLabel * Signature: (I)Ljava/lang/String; */ JNIEXPORT jstring JNICALL Java_J2Ci_jDVPresentationState_getOverlayInPresentationStateLabel (JNIEnv *env, jobject obj, jint idx) { DVPresentationState *ps = getAddressOfDVPresentationState (env, obj); const char* res = ps->getOverlayInPresentationStateLabel(idx); if (res == NULL) return NULL; return env->NewStringUTF (res); } /* * Class: J2Ci_jDVPresentationState * Method: getOverlayInPresentationStateDescription * Signature: (I)Ljava/lang/String; */ JNIEXPORT jstring JNICALL Java_J2Ci_jDVPresentationState_getOverlayInPresentationStateDescription (JNIEnv *env, jobject obj, jint idx) { DVPresentationState *ps = getAddressOfDVPresentationState (env, obj); const char* res = ps->getOverlayInPresentationStateDescription(idx); if (res == NULL) return NULL; return env->NewStringUTF (res); } /* * Class: J2Ci_jDVPresentationState * Method: getOverlayInPresentationStateActivationLayer * Signature: (I)I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVPresentationState_getOverlayInPresentationStateActivationLayer (JNIEnv *env, jobject obj, jint idx) { DVPresentationState *ps = getAddressOfDVPresentationState (env, obj); return (jint) ps->getOverlayInPresentationStateActivationLayer (idx); } /* * Class: J2Ci_jDVPresentationState * Method: overlayIsBitmapShutter * Signature: (I)Z */ JNIEXPORT jboolean JNICALL Java_J2Ci_jDVPresentationState_overlayIsBitmapShutter (JNIEnv *env, jobject obj, jint idx) { DVPresentationState *ps = getAddressOfDVPresentationState (env, obj); return (ps->overlayIsBitmapShutter (idx) != 0) ? JNI_TRUE : JNI_FALSE; } /* * Class: J2Ci_jDVPresentationState * Method: overlayInPresentationStateIsROI * Signature: (I)Z */ JNIEXPORT jboolean JNICALL Java_J2Ci_jDVPresentationState_overlayInPresentationStateIsROI (JNIEnv *env, jobject obj, jint idx) { DVPresentationState *ps = getAddressOfDVPresentationState (env, obj); return (ps->overlayInPresentationStateIsROI (idx) != 0) ? JNI_TRUE : JNI_FALSE; } /* * Class: J2Ci_jDVPresentationState * Method: removeOverlayFromPresentationState * Signature: (I)I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVPresentationState_removeOverlayFromPresentationState (JNIEnv *env, jobject obj, jint idx) { DVPresentationState *ps = getAddressOfDVPresentationState (env, obj); return (jint) ps->removeOverlayFromPresentationState (idx).status(); } /* * Class: J2Ci_jDVPresentationState * Method: changeOverlayGroupInPresentationState * Signature: (II)I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVPresentationState_changeOverlayGroupInPresentationState (JNIEnv *env, jobject obj, jint idx, jint newGroup) { DVPresentationState *ps = getAddressOfDVPresentationState (env, obj); return (jint) ps->changeOverlayGroupInPresentationState (idx, (short) newGroup).status(); } /* * Class: J2Ci_jDVPresentationState * Method: overlayIsSuitableAsBitmapShutter * Signature: (I)Z */ JNIEXPORT jboolean JNICALL Java_J2Ci_jDVPresentationState_overlayIsSuitableAsBitmapShutter (JNIEnv *env, jobject obj, jint idx) { DVPresentationState *ps = getAddressOfDVPresentationState (env, obj); return (ps->overlayIsSuitableAsBitmapShutter (idx) != 0) ? JNI_TRUE : JNI_FALSE; } /* * Class: J2Ci_jDVPresentationState * Method: activateOverlayInImage * Signature: (II)I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVPresentationState_activateOverlayInImage (JNIEnv *env, jobject obj, jint layer, jint idx) { DVPresentationState *ps = getAddressOfDVPresentationState (env, obj); return (jint) ps->activateOverlayInImage (layer, idx).status(); } /* * Class: J2Ci_jDVPresentationState * Method: activateOverlayInPresentationState * Signature: (II)I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVPresentationState_activateOverlayInPresentationState (JNIEnv *env, jobject obj, jint layer, jint idx) { DVPresentationState *ps = getAddressOfDVPresentationState (env, obj); return (jint) ps->activateOverlayInPresentationState (layer, idx).status(); } /* * Class: J2Ci_jDVPresentationState * Method: activateOverlayAsBitmapShutter * Signature: (I)I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVPresentationState_activateOverlayAsBitmapShutter (JNIEnv *env, jobject obj, jint idx) { DVPresentationState *ps = getAddressOfDVPresentationState (env, obj); return (jint) ps->activateOverlayAsBitmapShutter (idx).status(); } /* * Class: J2Ci_jDVPresentationState * Method: deactivateOverlay * Signature: (II)I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVPresentationState_deactivateOverlay (JNIEnv *env, jobject obj, jint layer, jint idx) { DVPresentationState *ps = getAddressOfDVPresentationState (env, obj); return (jint) ps->deactivateOverlay (layer, idx).status(); } /* * Class: J2Ci_jDVPresentationState * Method: moveOverlay * Signature: (III)I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVPresentationState_moveOverlay (JNIEnv *env, jobject obj, jint old_layer, jint idx, jint new_layer) { DVPresentationState *ps = getAddressOfDVPresentationState (env, obj); return (jint) ps->moveOverlay (old_layer, idx, new_layer).status(); } /* * Class: J2Ci_jDVPresentationState * Method: getImageMinMaxPixelRange * Signature: (LJ2Ci/jDoubleByRef;LJ2Ci/jDoubleByRef;)I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVPresentationState_getImageMinMaxPixelRange (JNIEnv *env, jobject obj, jobject minValue, jobject maxValue) { DVPresentationState *ps = getAddressOfDVPresentationState (env, obj); double min, max; max = min = -123.45; OFCondition res = ps->getImageMinMaxPixelRange (min, max); if (res != EC_Normal) return (jint) res.status(); jclass minDoubleByRefcls = env->GetObjectClass (minValue); jclass maxDoubleByRefcls = env->GetObjectClass (maxValue); jfieldID minvalue = env->GetFieldID (minDoubleByRefcls, "value", "D"); jfieldID maxvalue = env->GetFieldID (maxDoubleByRefcls, "value", "D"); env->SetDoubleField (minValue, minvalue, min); env->SetDoubleField (maxValue, maxvalue, max); return (jint) EC_Normal.status(); } /* * Class: J2Ci_jDVPresentationState * Method: getImageMinMaxPixelValue * Signature: (LJ2Ci/jDoubleByRef;LJ2Ci/jDoubleByRef;)I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVPresentationState_getImageMinMaxPixelValue (JNIEnv *env, jobject obj, jobject minValue, jobject maxValue) { DVPresentationState *ps = getAddressOfDVPresentationState (env, obj); double min, max; max = min = -123.45; OFCondition res = ps->getImageMinMaxPixelValue (min, max); if (res != EC_Normal) return (jint) res.status(); jclass minDoubleByRefcls = env->GetObjectClass (minValue); jclass maxDoubleByRefcls = env->GetObjectClass (maxValue); jfieldID minvalue = env->GetFieldID (minDoubleByRefcls, "value", "D"); jfieldID maxvalue = env->GetFieldID (maxDoubleByRefcls, "value", "D"); env->SetDoubleField (minValue, minvalue, min); env->SetDoubleField (maxValue, maxvalue, max); return (jint) EC_Normal.status(); } /* * Class: J2Ci_jDVPresentationState * Method: getImageWidth * Signature: (LJ2Ci/jIntByRef;)I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVPresentationState_getImageWidth (JNIEnv *env, jobject obj, jobject width) { DVPresentationState *ps = getAddressOfDVPresentationState (env, obj); unsigned long w; OFCondition res = ps->getImageWidth (w); if (res != EC_Normal) return (jint) res.status(); jclass wIntByRefcls = env->GetObjectClass (width); jfieldID wvalue = env->GetFieldID (wIntByRefcls, "value", "I"); env->SetIntField (width, wvalue, w); return (jint) EC_Normal.status(); } /* * Class: J2Ci_jDVPresentationState * Method: getImageHeight * Signature: (LJ2Ci/jIntByRef;)I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVPresentationState_getImageHeight (JNIEnv *env, jobject obj, jobject height) { DVPresentationState *ps = getAddressOfDVPresentationState (env, obj); unsigned long h; OFCondition res = ps->getImageHeight (h); if (res != EC_Normal) return (jint) res.status(); jclass hIntByRefcls = env->GetObjectClass (height); jfieldID hvalue = env->GetFieldID (hIntByRefcls, "value", "I"); env->SetIntField (height, hvalue, h); return (jint) EC_Normal.status(); } /* * Class: J2Ci_jDVPresentationState * Method: numberOfImageReferences * Signature: ()I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVPresentationState_numberOfImageReferences (JNIEnv *env, jobject obj) { DVPresentationState *ps = getAddressOfDVPresentationState (env, obj); return (jint) ps->numberOfImageReferences (); } /* * Class: J2Ci_jDVPresentationState * Method: getImageReference * Signature: (ILJ2Ci/jDVPrStateParam_GetImageReference;)I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVPresentationState_getImageReference (JNIEnv *env, jobject obj, jint idx, jobject param) { DVPresentationState *ps = getAddressOfDVPresentationState (env, obj); OFString st, se, so, in, fr, ae, fid, fuid; OFCondition res = ps->getImageReference (idx, st, se, so, in, fr, ae, fid, fuid); if (res != EC_Normal) return res.status(); jclass paramcls = env->GetObjectClass (param); jfieldID stfid = env->GetFieldID (paramcls, "studyUID", "Ljava/lang/String;"); jfieldID sefid = env->GetFieldID (paramcls, "seriesUID", "Ljava/lang/String;"); jfieldID sofid = env->GetFieldID (paramcls, "sopclassUID", "Ljava/lang/String;"); jfieldID infid = env->GetFieldID (paramcls, "instanceUID", "Ljava/lang/String;"); jfieldID frfid = env->GetFieldID (paramcls, "frames", "Ljava/lang/String;"); jfieldID aefid = env->GetFieldID (paramcls, "aetitle", "Ljava/lang/String;"); jfieldID fifid = env->GetFieldID (paramcls, "filesetID", "Ljava/lang/String;"); jfieldID fufid = env->GetFieldID (paramcls, "filesetUID", "Ljava/lang/String;"); jclass strcls = env->FindClass ("Ljava/lang/String;"); // string class jmethodID constr= env->GetMethodID (strcls, "", "()V"); // constructor ID // create strings ... jobject stobj = env->NewObject (strcls, constr, env->NewStringUTF (st.c_str())); jobject seobj = env->NewObject (strcls, constr, env->NewStringUTF (se.c_str())); jobject soobj = env->NewObject (strcls, constr, env->NewStringUTF (so.c_str())); jobject inobj = env->NewObject (strcls, constr, env->NewStringUTF (in.c_str())); jobject frobj = env->NewObject (strcls, constr, env->NewStringUTF (fr.c_str())); jobject aeobj = env->NewObject (strcls, constr, env->NewStringUTF (ae.c_str())); jobject fiobj = env->NewObject (strcls, constr, env->NewStringUTF (fid.c_str())); jobject fuobj = env->NewObject (strcls, constr, env->NewStringUTF (fuid.c_str())); // ... and set parameter env->SetObjectField (param, stfid, stobj); env->SetObjectField (param, sefid, seobj); env->SetObjectField (param, sofid, soobj); env->SetObjectField (param, infid, inobj); env->SetObjectField (param, frfid, frobj); env->SetObjectField (param, aefid, aeobj); env->SetObjectField (param, fifid, fiobj); env->SetObjectField (param, fufid, fuobj); return (jint) res.status(); } /* * Class: J2Ci_jDVPresentationState * Method: exchangeGraphicLayers * Signature: (II)I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVPresentationState_exchangeGraphicLayers (JNIEnv *env, jobject obj, jint idx1, jint idx2) { DVPresentationState *ps = getAddressOfDVPresentationState (env, obj); return (jint) ps->exchangeGraphicLayers (idx1, idx2).status(); } /* * Class: J2Ci_jDVPresentationState * Method: convertPValueToDDL * Signature: (II)S */ JNIEXPORT jshort JNICALL Java_J2Ci_jDVPresentationState_convertPValueToDDL (JNIEnv *env, jobject obj, jint pvalue, jint bits) { DVPresentationState *ps = getAddressOfDVPresentationState (env, obj); return (jshort) ps->convertPValueToDDL ((unsigned short) pvalue, bits); } /* * Class: J2Ci_jDVPresentationState * Method: createInstanceUID * Signature: ()Ljava/lang/String; */ JNIEXPORT jstring JNICALL Java_J2Ci_jDVPresentationState_createInstanceUID (JNIEnv *env, jobject obj) { DVPresentationState *ps = getAddressOfDVPresentationState (env, obj); const char* res = ps->createInstanceUID(); if (res == NULL) return NULL; return env->NewStringUTF (res); } /* * Class: J2Ci_jDVPresentationState * Method: getPixelData * Signature: ([BJ)I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVPresentationState_getPixelData___3BJ (JNIEnv *env, jobject obj, jbyteArray pixelData, jlong size) { DVPresentationState *ps = getAddressOfDVPresentationState (env, obj); void *array; jboolean isCopy; array = (void*) env->GetByteArrayElements (pixelData, &isCopy); OFCondition res = ps->getPixelData (array, (unsigned long) size); env->ReleaseByteArrayElements (pixelData, (jbyte *) array, 0); return (jint) res.status(); } /* * Class: J2Ci_jDVPresentationState * Method: invertImage * Signature: ()I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVPresentationState_invertImage (JNIEnv *env, jobject obj) { DVPresentationState *ps = getAddressOfDVPresentationState (env, obj); OFCondition res = ps->invertImage(); return (jint) res.status(); } /* * Class: J2Ci_jDVPresentationState * Method: isInverse * Signature: ()Z */ JNIEXPORT jboolean JNICALL Java_J2Ci_jDVPresentationState_isInverse (JNIEnv *env, jobject obj) { DVPresentationState *ps = getAddressOfDVPresentationState (env, obj); if (ps->isInverse()) return JNI_TRUE; else return JNI_FALSE; } /* * Class: J2Ci_jDVPresentationState * Method: getPrintBitmapSize * Signature: ()J */ JNIEXPORT jlong JNICALL Java_J2Ci_jDVPresentationState_getPrintBitmapSize (JNIEnv *env, jobject obj) { DVPresentationState *ps = getAddressOfDVPresentationState (env, obj); return ps->getPrintBitmapSize(); } /* * Class: J2Ci_jDVPresentationState * Method: setMinimumPrintBitmapWidthHeight * Signature: (JJ)I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVPresentationState_setMinimumPrintBitmapWidthHeight (JNIEnv *env, jobject obj, jlong width, jlong height) { DVPresentationState *ps = getAddressOfDVPresentationState (env, obj); OFCondition res = ps->setMinimumPrintBitmapWidthHeight((unsigned long) width, (unsigned long) height); return (jint) res.status(); } /* * Class: J2Ci_jDVPresentationState * Method: setMaximumPrintBitmapWidthHeight * Signature: (JJ)I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVPresentationState_setMaximumPrintBitmapWidthHeight (JNIEnv *env, jobject obj, jlong width, jlong height) { DVPresentationState *ps = getAddressOfDVPresentationState (env, obj); OFCondition res = ps->setMaximumPrintBitmapWidthHeight((unsigned long) width, (unsigned long) height); return (jint) res.status(); } /* * Class: J2Ci_jDVPresentationState * Method: getPrintBitmapWidthHeight * Signature: (LJ2Ci/jIntByRef;LJ2Ci/jIntByRef;)I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVPresentationState_getPrintBitmapWidthHeight (JNIEnv *env, jobject obj, jobject width, jobject height) { DVPresentationState *ps = getAddressOfDVPresentationState (env, obj); unsigned long w, h; OFCondition res = ps->getPrintBitmapWidthHeight (w, h); if (res != EC_Normal) return (jint) res.status(); jclass widthCls = env->GetObjectClass (width); jclass heightCls = env->GetObjectClass (height); jfieldID wvalue = env->GetFieldID (widthCls, "value", "I"); jfieldID hvalue = env->GetFieldID (heightCls, "value", "I"); env->SetIntField (width, wvalue, (jint) w); env->SetIntField (height, hvalue, (jint) h); return (jint) EC_Normal.status(); } /* * Class: J2Ci_jDVPresentationState * Method: getPrintBitmapWidth * Signature: (LJ2Ci/jIntByRef;)I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVPresentationState_getPrintBitmapWidth (JNIEnv *env, jobject obj, jobject width) { DVPresentationState *ps = getAddressOfDVPresentationState (env, obj); unsigned long w; OFCondition res = ps->getPrintBitmapWidth (w); if (res != EC_Normal) return (jint) res.status(); jclass widthCls = env->GetObjectClass (width); jfieldID wvalue = env->GetFieldID (widthCls, "value", "I"); env->SetIntField (width, wvalue, (jint) w); return (jint) EC_Normal.status(); } /* * Class: J2Ci_jDVPresentationState * Method: getPrintBitmapHeight * Signature: (LJ2Ci/jIntByRef;)I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVPresentationState_getPrintBitmapHeight (JNIEnv *env, jobject obj, jobject height) { DVPresentationState *ps = getAddressOfDVPresentationState (env, obj); unsigned long h; OFCondition res = ps->getPrintBitmapHeight (h); if (res != EC_Normal) return (jint) res.status(); jclass heightCls = env->GetObjectClass (height); jfieldID hvalue = env->GetFieldID (heightCls, "value", "I"); env->SetIntField (height, hvalue, (jint) h); return (jint) EC_Normal.status(); } /* * Class: J2Ci_jDVPresentationState * Method: getPrintBitmapPixelAspectRatio * Signature: ()D */ JNIEXPORT jdouble JNICALL Java_J2Ci_jDVPresentationState_getPrintBitmapPixelAspectRatio (JNIEnv *env, jobject obj) { DVPresentationState *ps = getAddressOfDVPresentationState (env, obj); return (jdouble) ps->getPrintBitmapPixelAspectRatio();; } /* * Class: J2Ci_jDVPresentationState * Method: getPrintBitmapRequestedImageSize * Signature: (LJ2Ci/jStringByRef;)I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVPresentationState_getPrintBitmapRequestedImageSize (JNIEnv *env, jobject obj, jobject requestedImageSize) { DVPresentationState *ps = getAddressOfDVPresentationState (env, obj); OFString ris; OFCondition res = ps->getPrintBitmapRequestedImageSize (ris); if (res == EC_Normal) { jfieldID value = env->GetFieldID (env->GetObjectClass (requestedImageSize), "value", "Ljava/lang/String;"); env->SetObjectField (requestedImageSize, value, env->NewStringUTF (ris.c_str())); } return (jint) res.status(); } /* * Class: J2Ci_jDVPresentationState * Method: getPrintBitmap * Signature: ([SJ)I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVPresentationState_getPrintBitmap (JNIEnv *env, jobject obj, jshortArray bitmap, jlong size) { DVPresentationState *ps = getAddressOfDVPresentationState (env, obj); void *array; jboolean isCopy; array = (void*) env->GetShortArrayElements (bitmap, &isCopy); OFCondition res = ps->getPrintBitmap (array, (unsigned long) size); env->ReleaseShortArrayElements (bitmap, (jshort *) array, 0); return (jint) res.status(); } /* * Class: J2Ci_jDVPresentationState * Method: getCurrentImageModality * Signature: ()Ljava/lang/String; */ JNIEXPORT jstring JNICALL Java_J2Ci_jDVPresentationState_getCurrentImageModality (JNIEnv *env, jobject obj) { DVPresentationState *ps = getAddressOfDVPresentationState (env, obj); const char* res = ps->getCurrentImageModality(); if (res == NULL) return NULL; return env->NewStringUTF (res); } /* * Class: J2Ci_jDVPresentationState * Method: setDefaultPresentationLUTShape * Signature: ()I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVPresentationState_setDefaultPresentationLUTShape (JNIEnv *env, jobject obj) { DVPresentationState *ps = getAddressOfDVPresentationState (env, obj); OFCondition res = ps->setDefaultPresentationLUTShape (); return (jint) res.status(); } /* * Class: J2Ci_jDVPresentationState * Method: createPreviewImage * Signature: (IIZ)I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVPresentationState_createPreviewImage (JNIEnv *env, jobject obj, jint maxWidth, jint maxHeight, jboolean clipMode) { DVPresentationState *ps = getAddressOfDVPresentationState (env, obj); OFBool cm = clipMode == JNI_TRUE ? OFTrue : OFFalse; OFCondition res = ps->createPreviewImage (maxWidth, maxHeight, cm); return (jint) res.status(); } /* * Class: J2Ci_jDVPresentationState * Method: deletePreviewImage * Signature: ()V */ JNIEXPORT void JNICALL Java_J2Ci_jDVPresentationState_deletePreviewImage (JNIEnv *env, jobject obj) { DVPresentationState *ps = getAddressOfDVPresentationState (env, obj); ps->deletePreviewImage (); } /* * Class: J2Ci_jDVPresentationState * Method: getPreviewImageSize * Signature: ()J */ JNIEXPORT jlong JNICALL Java_J2Ci_jDVPresentationState_getPreviewImageSize (JNIEnv *env, jobject obj) { DVPresentationState *ps = getAddressOfDVPresentationState (env, obj); return (jlong) ps->getPreviewImageSize (); } /* * Class: J2Ci_jDVPresentationState * Method: getPreviewImageWidthHeight * Signature: (LJ2Ci/jIntByRef;LJ2Ci/jIntByRef;)I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVPresentationState_getPreviewImageWidthHeight (JNIEnv *env, jobject obj, jobject width, jobject height) { DVPresentationState *ps = getAddressOfDVPresentationState (env, obj); unsigned long ww, hh; OFCondition res = ps->getPreviewImageWidthHeight (ww, hh); if (res != EC_Normal) return (jint) res.status(); jclass wIntByRefcls = env->GetObjectClass (width); jclass hIntByRefcls = env->GetObjectClass (height); jfieldID wvalue = env->GetFieldID (wIntByRefcls, "value", "I"); jfieldID hvalue = env->GetFieldID (hIntByRefcls, "value", "I"); env->SetIntField (width, wvalue, (jint) ww); env->SetIntField (height, hvalue, (jint) hh); return (jint) EC_Normal.status(); } /* * Class: J2Ci_jDVPresentationState * Method: getPreviewImageWidth * Signature: (LJ2Ci/jIntByRef;)I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVPresentationState_getPreviewImageWidth (JNIEnv *env, jobject obj, jobject width) { DVPresentationState *ps = getAddressOfDVPresentationState (env, obj); unsigned long ww; OFCondition res = ps->getPreviewImageWidth (ww); if (res != EC_Normal) return (jint) res.status(); jclass wIntByRefcls = env->GetObjectClass (width); jfieldID wvalue = env->GetFieldID (wIntByRefcls, "value", "I"); env->SetIntField (width, wvalue, (jint) ww); return (jint) EC_Normal.status(); } /* * Class: J2Ci_jDVPresentationState * Method: getPreviewImageHeight * Signature: (LJ2Ci/jIntByRef;)I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVPresentationState_getPreviewImageHeight (JNIEnv *env, jobject obj, jobject height) { DVPresentationState *ps = getAddressOfDVPresentationState (env, obj); unsigned long hh; OFCondition res = ps->getPreviewImageHeight (hh); if (res != EC_Normal) return (jint) res.status(); jclass hIntByRefcls = env->GetObjectClass (height); jfieldID hvalue = env->GetFieldID (hIntByRefcls, "value", "I"); env->SetIntField (height, hvalue, (jint) hh); return (jint) EC_Normal.status(); } /* * Class: J2Ci_jDVPresentationState * Method: getPreviewImageBitmap * Signature: ([BJ)I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVPresentationState_getPreviewImageBitmap (JNIEnv *env, jobject obj, jbyteArray bitmap, jlong size) { DVPresentationState *ps = getAddressOfDVPresentationState (env, obj); void *array; jboolean isCopy; array = (void*) env->GetByteArrayElements (bitmap, &isCopy); OFCondition res = ps->getPreviewImageBitmap (array, (unsigned long) size); env->ReleaseByteArrayElements (bitmap, (jbyte *) array, 0); return (jint) res.status(); } /* * Class: J2Ci_jDVPresentationState * Method: getDisplayTransform * Signature: ()I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVPresentationState_getDisplayTransform (JNIEnv *env, jobject obj) { DVPresentationState *ps = getAddressOfDVPresentationState (env, obj); return (jint) ps->getDisplayTransform (); } /* * Class: J2Ci_jDVPresentationState * Method: setDisplayTransform * Signature: (I)V */ JNIEXPORT void JNICALL Java_J2Ci_jDVPresentationState_setDisplayTransform (JNIEnv *env, jobject obj, jint transform) { DVPresentationState *ps = getAddressOfDVPresentationState (env, obj); ps->setDisplayTransform ((DVPSDisplayTransform)transform); } // ---------------------------------------------------------------------------------- /* * Class: J2Ci_jDVPresentationState * Method: getScreenData * Signature: (LJ2Ci/jDVPrStateParam_GetScreenData;)Z */ JNIEXPORT jboolean JNICALL Java_J2Ci_jDVPresentationState_getScreenData (JNIEnv *env, jobject obj, jobject info) { DVPresentationState *ps = getAddressOfDVPresentationState (env, obj); jclass infocls = env->GetObjectClass (info); jfieldID pixarrayfid = env->GetFieldID (infocls, "pixelArray", "[B"); jfieldID widthfid = env->GetFieldID (infocls, "width", "I"); jfieldID heightfid = env->GetFieldID (infocls, "height", "I"); jfieldID offsetxfid = env->GetFieldID (infocls, "offsetX", "I"); jfieldID offsetyfid = env->GetFieldID (infocls, "offsetY", "I"); jfieldID tlhcxfid = env->GetFieldID (infocls, "TLHC_x", "I"); jfieldID tlhcyfid = env->GetFieldID (infocls, "TLHC_y", "I"); jfieldID brhcxfid = env->GetFieldID (infocls, "BRHC_x", "I"); jfieldID brhcyfid = env->GetFieldID (infocls, "BRHC_y", "I"); jfieldID zoomfid = env->GetFieldID (infocls, "zoomfactor", "D"); jfieldID scalexfid = env->GetFieldID (infocls, "scale_x", "D"); jfieldID scaleyfid = env->GetFieldID (infocls, "scale_y", "D"); jfieldID interpolfid = env->GetFieldID (infocls, "interpolate", "Z"); int width, height, offx, offy, tlhcx, tlhcy; int brhcx=0, brhcy=0; double zoom, scalex, scaley; int interpolate; unsigned char *array; width = env->GetIntField (info, widthfid); height = env->GetIntField (info, heightfid); offx = env->GetIntField (info, offsetxfid); offy = env->GetIntField (info, offsetyfid); tlhcx = env->GetIntField (info, tlhcxfid); tlhcy = env->GetIntField (info, tlhcyfid); zoom = env->GetDoubleField (info, zoomfid); scalex = env->GetDoubleField (info, scalexfid); scaley = env->GetDoubleField (info, scaleyfid); jbyteArray parr = (jbyteArray) env->GetObjectField (info, pixarrayfid); jboolean isCopy; array = (unsigned char*) env->GetByteArrayElements (parr, &isCopy); interpolate = (env->GetBooleanField (info, interpolfid) != 0) ? -1 : 0; // ------------------------------ Werte sind in C++-Typen drin if (width == 0 || height == 0 || offx < 0 || offy < 0 || zoom <= 0 || scalex <= 0 || scaley <= 0) return JNI_FALSE; // Fehler in Eingabewerten OFCondition res; const char *orgPixData; unsigned long oWidth; unsigned long oHeight; res = ps->getPixelData ((const void *&) orgPixData, oWidth, oHeight); if (res != EC_Normal) return JNI_FALSE; int px, py, xr, yr; double scx = zoom * scalex; double scy = zoom * scaley; double ipolx, ipoly; int m; // Für Gleichung zur Interpolation X/Y-Richtung int e1, e2, e3; // Ergebnisse für 3 Gleichungen int thisPoint; int arrPt, dstPt, dstPtnL; double xrscx, yrscy; for (int y = 0; y < height; y++) { yr = y - offy; yrscy = yr / scy; py = tlhcy + (int) yrscy; for (int x = 0; x < width; x++) { xr = x - offx; arrPt = y*width+x; if (xr >= 0 && yr >= 0) // Out of border ? { xrscx = xr / scx; px = tlhcx + (int) xrscx; // Point dstPt = py*oWidth+px; if ((px < (int) oWidth && py < (int) oHeight) && (px >= 0 && py >= 0)) { if (interpolate == 0) { array[arrPt] = orgPixData[dstPt]; } else { ipolx = xrscx - (int) xrscx; ipoly = yrscy - (int) yrscy; dstPtnL = (py+1)*oWidth+px; // Für die 2D-interpolation brauchen wir 4 Punkte, zwischen // denen interpoliert werden soll (2 Punkte pro Richtung). // Wenn die Werte außerhab des zulässigen Bereiches liegen, // dann werden die aktuellen Werte stattdessen benutzt. // Davon wird pro Richtung jeweils eine Gleichung ermittelt. thisPoint = ((int) orgPixData[dstPt]) & 0xff; if (px+1 >= (int) oWidth || py+1 >= (int) oHeight) { e3 = thisPoint; // Randbezirk } else { if (ipolx != 0 && ipoly != 0) { m = (orgPixData[dstPt+1] & 0xff) - thisPoint; // 1. e1 = (int) (m*ipolx) + thisPoint; m = (orgPixData[dstPtnL+1] & 0xff) - (orgPixData[dstPtnL] & 0xff); e2 = (int) (m*ipolx) + (orgPixData[dstPtnL] & 0xff); e3 = (int) ((e2-e1)*ipoly) + e1; } else if (ipolx != 0 && ipoly == 0) { m = (orgPixData[dstPt+1] & 0xff) - (orgPixData[dstPt] & 0xff); e3 = (int) (m*ipolx) + (orgPixData[dstPt] & 0xff); } else if (ipolx == 0 && ipoly != 0) { m = (orgPixData[dstPtnL] & 0xff) - (orgPixData[dstPt] & 0xff); e3 = (int) (m*ipoly) + (orgPixData[dstPt] & 0xff); } else // beide gleich 0 { e3 = thisPoint; } } array[arrPt] = (unsigned char) e3; } brhcx = px; // maximale sichtbare untere rechte Eckpos merken brhcy = py; } else { array[arrPt] = 0; // schwarz } } else { array[arrPt] = 0; // schwarz } } } env->SetIntField (info, brhcxfid, brhcx); env->SetIntField (info, brhcyfid, brhcy); // ------------------------------- Array zurückschreiben env->ReleaseByteArrayElements (parr, (jbyte *) array, 0); return JNI_TRUE; } /* * CVS Log * $Log: DVPresentationState.cpp,v $ * Revision 1.2 1999/05/14 10:02:31 Schroeter * Log-Tags for CVS corrected * * Revision 1.1.1.1 1999/05/14 09:33:11 Schroeter * initial commit of release 1.0 * */ dicomscope-3.6.0/interface/libsrc/DVPSCurve.cpp0000644000265600020320000001311211262371102020465 0ustar tilleaadmin/* * * Copyright (C) 1999-2003, Institute for MicroTherapy and OFFIS * * This software and supporting documentation were developed by * * University of Witten/Herdecke * Department of Radiology and MicroTherapy * Institute for MicroTherapy * Medical computer science * * Universitaetsstrasse 142 * 44799 Bochum, Germany * * http://www.microtherapy.de/go/cs * mailto:computer.science@microtherapy.de * * and * * Kuratorium OFFIS e.V. * Healthcare Information and Communication Systems * Escherweg 2 * D-26121 Oldenburg, Germany * * THIS SOFTWARE IS MADE AVAILABLE, AS IS, AND THE INSTITUTE MAKES NO * WARRANTY REGARDING THE SOFTWARE, ITS PERFORMANCE, ITS MERCHANTABILITY * OR FITNESS FOR ANY PARTICULAR USE, FREEDOM FROM ANY COMPUTER DISEASES * OR ITS CONFORMITY TO ANY SPECIFICATION. THE ENTIRE RISK AS TO QUALITY * AND PERFORMANCE OF THE SOFTWARE IS WITH THE USER. * * Author : $Author: Schroeter $ * Last update : $Date: 1999/05/14 10:02:31 $ * Revision : $Revision: 1.2 $ * State : $State: Exp $ */ #include "J2Ci_jDVPSCurve.h" #include "jInterface.h" inline DVPSCurve* getAddressOfDVPSCurve (JNIEnv *env, jobject obj) { jclass cls = env->GetObjectClass (obj); jfieldID fid = env->GetFieldID (cls, "cppClassAddress", "J"); if (fid == 0) exit (-1); return (DVPSCurve*) env->GetLongField (obj, fid); } inline void setAddressOfDVPSCurve (JNIEnv *env, jobject obj, DVPSCurve* dvi) { jclass cls = env->GetObjectClass (obj); jfieldID fid = env->GetFieldID (cls, "cppClassAddress", "J"); if (fid == 0) exit (-1); env->SetLongField (obj, fid, (jlong) dvi); } /* * Class: J2Ci_jDVPSCurve * Method: createObjOfDVPSCurve * Signature: ()V */ JNIEXPORT void JNICALL Java_J2Ci_jDVPSCurve_createObjOfDVPSCurve (JNIEnv *env, jobject obj) { DVPSCurve *cur = new DVPSCurve; setAddressOfDVPSCurve (env, obj, cur); } /* * Class: J2Ci_jDVPSCurve * Method: CopyConstructor * Signature: (J)V */ JNIEXPORT void JNICALL Java_J2Ci_jDVPSCurve_CopyConstructor (JNIEnv *env, jobject obj, jlong fromCppObj) { const DVPSCurve *cur = (DVPSCurve *) fromCppObj; DVPSCurve *clone = new DVPSCurve (*cur); setAddressOfDVPSCurve (env, obj, clone); } /* * Class: J2Ci_jDVPSCurve * Method: getCurveGroup * Signature: ()B */ JNIEXPORT jbyte JNICALL Java_J2Ci_jDVPSCurve_getCurveGroup (JNIEnv *env, jobject obj) { DVPSCurve *cur = getAddressOfDVPSCurve (env, obj); return (jbyte) cur->getCurveGroup (); } /* * Class: J2Ci_jDVPSCurve * Method: getNumberOfPoints * Signature: ()I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVPSCurve_getNumberOfPoints (JNIEnv *env, jobject obj) { DVPSCurve *cur = getAddressOfDVPSCurve (env, obj); return (jint) cur->getNumberOfPoints (); } /* * Class: J2Ci_jDVPSCurve * Method: getTypeOfData * Signature: ()I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVPSCurve_getTypeOfData (JNIEnv *env, jobject obj) { DVPSCurve *cur = getAddressOfDVPSCurve (env, obj); return (jint) cur->getTypeOfData (); } /* * Class: J2Ci_jDVPSCurve * Method: getPoint * Signature: (ILJ2Ci/jDoubleByRef;LJ2Ci/jDoubleByRef;)I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVPSCurve_getPoint (JNIEnv *env, jobject obj, jint idx, jobject x, jobject y) { DVPSCurve *cur = getAddressOfDVPSCurve (env, obj); double xx, yy; E_Condition res = cur->getPoint (idx, xx, yy); if (res != EC_Normal) return (jint) res.status(); jclass xDoubleByRefcls = env->GetObjectClass (x); jclass yDoubleByRefcls = env->GetObjectClass (y); jfieldID xvalue = env->GetFieldID (xDoubleByRefcls, "value", "D"); jfieldID yvalue = env->GetFieldID (yDoubleByRefcls, "value", "D"); env->SetDoubleField (x, xvalue, (jdouble) xx); env->SetDoubleField (y, yvalue, (jdouble) yy); return (jint) EC_Normal.status(); } /* * Class: J2Ci_jDVPSCurve * Method: getCurveDescription * Signature: ()Ljava/lang/String; */ JNIEXPORT jstring JNICALL Java_J2Ci_jDVPSCurve_getCurveDescription (JNIEnv *env, jobject obj) { DVPSCurve *cur = getAddressOfDVPSCurve (env, obj); const char* res = cur->getCurveDescription (); if (res == NULL) return NULL; return env->NewStringUTF (res); } /* * Class: J2Ci_jDVPSCurve * Method: getCurveLabel * Signature: ()Ljava/lang/String; */ JNIEXPORT jstring JNICALL Java_J2Ci_jDVPSCurve_getCurveLabel (JNIEnv *env, jobject obj) { DVPSCurve *cur = getAddressOfDVPSCurve (env, obj); const char* res = cur->getCurveLabel (); if (res == NULL) return NULL; return env->NewStringUTF (res); } /* * Class: J2Ci_jDVPSCurve * Method: getCurveAxisUnitsX * Signature: ()Ljava/lang/String; */ JNIEXPORT jstring JNICALL Java_J2Ci_jDVPSCurve_getCurveAxisUnitsX (JNIEnv *env, jobject obj) { DVPSCurve *cur = getAddressOfDVPSCurve (env, obj); const char* res = cur->getCurveAxisUnitsX (); if (res == NULL) return NULL; return env->NewStringUTF (res); } /* * Class: J2Ci_jDVPSCurve * Method: getCurveAxisUnitsY * Signature: ()Ljava/lang/String; */ JNIEXPORT jstring JNICALL Java_J2Ci_jDVPSCurve_getCurveAxisUnitsY (JNIEnv *env, jobject obj) { DVPSCurve *cur = getAddressOfDVPSCurve (env, obj); const char* res = cur->getCurveAxisUnitsY (); if (res == NULL) return NULL; return env->NewStringUTF (res); } /* * CVS Log * $Log: DVPSCurve.cpp,v $ * Revision 1.2 1999/05/14 10:02:31 Schroeter * Log-Tags for CVS corrected * * Revision 1.1.1.1 1999/05/14 09:33:11 Schroeter * initial commit of release 1.0 * */ dicomscope-3.6.0/interface/libsrc/DVPSGraphicObject.cpp0000644000265600020320000001345111262371102022113 0ustar tilleaadmin/* * * Copyright (C) 1999-2003, Institute for MicroTherapy and OFFIS * * This software and supporting documentation were developed by * * University of Witten/Herdecke * Department of Radiology and MicroTherapy * Institute for MicroTherapy * Medical computer science * * Universitaetsstrasse 142 * 44799 Bochum, Germany * * http://www.microtherapy.de/go/cs * mailto:computer.science@microtherapy.de * * and * * Kuratorium OFFIS e.V. * Healthcare Information and Communication Systems * Escherweg 2 * D-26121 Oldenburg, Germany * * THIS SOFTWARE IS MADE AVAILABLE, AS IS, AND THE INSTITUTE MAKES NO * WARRANTY REGARDING THE SOFTWARE, ITS PERFORMANCE, ITS MERCHANTABILITY * OR FITNESS FOR ANY PARTICULAR USE, FREEDOM FROM ANY COMPUTER DISEASES * OR ITS CONFORMITY TO ANY SPECIFICATION. THE ENTIRE RISK AS TO QUALITY * AND PERFORMANCE OF THE SOFTWARE IS WITH THE USER. * * Author : $Author: Schroeter $ * Last update : $Date: 1999/05/14 10:02:31 $ * Revision : $Revision: 1.2 $ * State : $State: Exp $ */ #include "J2Ci_jDVPSGraphicObject.h" #include "jInterface.h" inline DVPSGraphicObject* getAddressOfDVPSGraphicObject (JNIEnv *env, jobject obj) { jclass cls = env->GetObjectClass (obj); jfieldID fid = env->GetFieldID (cls, "cppClassAddress", "J"); if (fid == 0) exit (-1); return (DVPSGraphicObject*) env->GetLongField (obj, fid); } inline void setAddressOfDVPSGraphicObject (JNIEnv *env, jobject obj, DVPSGraphicObject* dvi) { jclass cls = env->GetObjectClass (obj); jfieldID fid = env->GetFieldID (cls, "cppClassAddress", "J"); if (fid == 0) exit (-1); env->SetLongField (obj, fid, (jlong) dvi); } /* * Class: J2Ci_jDVPSGraphicObject * Method: createObjOfDVPSGraphicObject * Signature: ()V */ JNIEXPORT void JNICALL Java_J2Ci_jDVPSGraphicObject_createObjOfDVPSGraphicObject (JNIEnv *env, jobject obj) { DVPSGraphicObject *go = new DVPSGraphicObject; setAddressOfDVPSGraphicObject (env, obj, go); } /* * Class: J2Ci_jDVPSGraphicObject * Method: CopyConstructor * Signature: (J)V */ JNIEXPORT void JNICALL Java_J2Ci_jDVPSGraphicObject_CopyConstructor (JNIEnv *env, jobject obj, jlong fromCppObj) { const DVPSGraphicObject *go = (DVPSGraphicObject *) fromCppObj; DVPSGraphicObject *clone = new DVPSGraphicObject (*go); setAddressOfDVPSGraphicObject (env, obj, clone); } /* * Class: J2Ci_jDVPSGraphicObject * Method: getAnnotationUnits * Signature: ()I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVPSGraphicObject_getAnnotationUnits (JNIEnv *env, jobject obj) { DVPSGraphicObject *go = getAddressOfDVPSGraphicObject (env, obj); return (jint) go->getAnnotationUnits (); } /* * Class: J2Ci_jDVPSGraphicObject * Method: getNumberOfPoints * Signature: ()I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVPSGraphicObject_getNumberOfPoints (JNIEnv *env, jobject obj) { DVPSGraphicObject *go = getAddressOfDVPSGraphicObject (env, obj); return (jint) go->getNumberOfPoints (); } /* * Class: J2Ci_jDVPSGraphicObject * Method: getPoint * Signature: (ILJ2Ci/jDoubleByRef;LJ2Ci/jDoubleByRef;)I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVPSGraphicObject_getPoint (JNIEnv *env, jobject obj, jint idx, jobject x, jobject y) { DVPSGraphicObject *go = getAddressOfDVPSGraphicObject (env, obj); Float32 xx, yy; E_Condition res = go->getPoint (idx, xx, yy); if (res != EC_Normal) return (jint) res.status(); jclass xDoubleByRefcls = env->GetObjectClass (x); jclass yDoubleByRefcls = env->GetObjectClass (y); jfieldID xvalue = env->GetFieldID (xDoubleByRefcls, "value", "D"); jfieldID yvalue = env->GetFieldID (yDoubleByRefcls, "value", "D"); env->SetDoubleField (x, xvalue, (jdouble) xx); env->SetDoubleField (y, yvalue, (jdouble) yy); return (jint) EC_Normal.status(); } /* * Class: J2Ci_jDVPSGraphicObject * Method: getGraphicType * Signature: ()I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVPSGraphicObject_getGraphicType (JNIEnv *env, jobject obj) { DVPSGraphicObject *go = getAddressOfDVPSGraphicObject (env, obj); return (jint) go->getGraphicType (); } /* * Class: J2Ci_jDVPSGraphicObject * Method: isFilled * Signature: ()Z */ JNIEXPORT jboolean JNICALL Java_J2Ci_jDVPSGraphicObject_isFilled (JNIEnv *env, jobject obj) { DVPSGraphicObject *go = getAddressOfDVPSGraphicObject (env, obj); return (go->isFilled () != 0) ? JNI_TRUE : JNI_FALSE; } /* * Class: J2Ci_jDVPSGraphicObject * Method: setData * Signature: (I[FI)I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVPSGraphicObject_setData (JNIEnv *env, jobject obj, jint number, jfloatArray data, jint unit) { DVPSGraphicObject *go = getAddressOfDVPSGraphicObject (env, obj); float *ddata; jboolean isCopy; ddata = env->GetFloatArrayElements(data, &isCopy); OFCondition res = go->setData (number, ddata, (DVPSannotationUnit) unit); env->ReleaseFloatArrayElements (data, ddata, 0); return (jint) res.status(); } /* * Class: J2Ci_jDVPSGraphicObject * Method: setGraphicType * Signature: (I)I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVPSGraphicObject_setGraphicType (JNIEnv *env, jobject obj, jint gtype) { DVPSGraphicObject *go = getAddressOfDVPSGraphicObject (env, obj); return (jint) go->setGraphicType ((DVPSGraphicType) gtype).status(); } /* * Class: J2Ci_jDVPSGraphicObject * Method: setFilled * Signature: (Z)I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVPSGraphicObject_setFilled (JNIEnv *env, jobject obj, jboolean filled) { DVPSGraphicObject *go = getAddressOfDVPSGraphicObject (env, obj); return (jint) go->setFilled ((filled != 0) ? OFTrue : OFFalse).status(); } /* * CVS Log * $Log: DVPSGraphicObject.cpp,v $ * Revision 1.2 1999/05/14 10:02:31 Schroeter * Log-Tags for CVS corrected * * Revision 1.1.1.1 1999/05/14 09:33:11 Schroeter * initial commit of release 1.0 * */ dicomscope-3.6.0/interface/libsrc/DVPSStoredPrint.cpp0000644000265600020320000005745211262371102021675 0ustar tilleaadmin/* * * Copyright (C) 1999-2003, Institute for MicroTherapy and OFFIS * * This software and supporting documentation were developed by * * University of Witten/Herdecke * Department of Radiology and MicroTherapy * Institute for MicroTherapy * Medical computer science * * Universitaetsstrasse 142 * 44799 Bochum, Germany * * http://www.microtherapy.de/go/cs * mailto:computer.science@microtherapy.de * * and * * Kuratorium OFFIS e.V. * Healthcare Information and Communication Systems * Escherweg 2 * D-26121 Oldenburg, Germany * * THIS SOFTWARE IS MADE AVAILABLE, AS IS, AND THE INSTITUTE MAKES NO * WARRANTY REGARDING THE SOFTWARE, ITS PERFORMANCE, ITS MERCHANTABILITY * OR FITNESS FOR ANY PARTICULAR USE, FREEDOM FROM ANY COMPUTER DISEASES * OR ITS CONFORMITY TO ANY SPECIFICATION. THE ENTIRE RISK AS TO QUALITY * AND PERFORMANCE OF THE SOFTWARE IS WITH THE USER. * * Author : $Author: Schroeter $ * Last update : $Date: 1999/05/14 10:02:31 $ * Revision : $Revision: 1.2 $ * State : $State: Exp $ */ #include "J2Ci_jDVPSStoredPrint.h" #include "jInterface.h" inline DVPSStoredPrint* getAddressOfDVPSStoredPrint (JNIEnv *env, jobject obj) { jclass cls = env->GetObjectClass (obj); jfieldID fid = env->GetFieldID (cls, "cppClassAddress", "J"); if (fid == 0) exit (-1); return (DVPSStoredPrint*) env->GetLongField (obj, fid); } inline void setAddressOfDVPSStoredPrint (JNIEnv *env, jobject obj, DVPSStoredPrint* dvi) { jclass cls = env->GetObjectClass (obj); jfieldID fid = env->GetFieldID (cls, "cppClassAddress", "J"); if (fid == 0) exit (-1); env->SetLongField (obj, fid, (jlong) dvi); } /* * Class: J2Ci_jDVPSStoredPrint * Method: clear * Signature: ()V */ JNIEXPORT void JNICALL Java_J2Ci_jDVPSStoredPrint_clear (JNIEnv *env, jobject obj) { DVPSStoredPrint *sp = getAddressOfDVPSStoredPrint (env, obj); sp->clear(); } /* * Class: J2Ci_jDVPSStoredPrint * Method: setOriginator * Signature: (Ljava/lang/String;)I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVPSStoredPrint_setOriginator (JNIEnv *env, jobject obj, jstring value) { DVPSStoredPrint *sp = getAddressOfDVPSStoredPrint (env, obj); char *val = (char*) env->GetStringUTFChars (value, 0); OFCondition res = sp->setOriginator (val); env->ReleaseStringUTFChars (value, val); return (jint) res.status(); } /* * Class: J2Ci_jDVPSStoredPrint * Method: setDestination * Signature: (Ljava/lang/String;)I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVPSStoredPrint_setDestination (JNIEnv *env, jobject obj, jstring value) { DVPSStoredPrint *sp = getAddressOfDVPSStoredPrint (env, obj); char *val = (char*) env->GetStringUTFChars (value, 0); OFCondition res = sp->setDestination (val); env->ReleaseStringUTFChars (value, val); return (jint) res.status(); } /* * Class: J2Ci_jDVPSStoredPrint * Method: setPrinterName * Signature: (Ljava/lang/String;)I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVPSStoredPrint_setPrinterName (JNIEnv *env, jobject obj, jstring value) { DVPSStoredPrint *sp = getAddressOfDVPSStoredPrint (env, obj); char *val = (char*) env->GetStringUTFChars (value, 0); OFCondition res = sp->setPrinterName (val); env->ReleaseStringUTFChars (value, val); return (jint) res.status(); } /* * Class: J2Ci_jDVPSStoredPrint * Method: setImageDisplayFormat * Signature: (JJ)I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVPSStoredPrint_setImageDisplayFormat (JNIEnv *env, jobject obj, jlong columns, jlong rows) { DVPSStoredPrint *sp = getAddressOfDVPSStoredPrint (env, obj); return (jint) sp->setImageDisplayFormat((unsigned long)columns, (unsigned long)rows).status(); } /* * Class: J2Ci_jDVPSStoredPrint * Method: setFilmSizeID * Signature: (Ljava/lang/String;)I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVPSStoredPrint_setFilmSizeID (JNIEnv *env, jobject obj, jstring value) { DVPSStoredPrint *sp = getAddressOfDVPSStoredPrint (env, obj); char *val = (char*) env->GetStringUTFChars (value, 0); OFCondition res = sp->setFilmSizeID (val); env->ReleaseStringUTFChars (value, val); return (jint) res.status(); } /* * Class: J2Ci_jDVPSStoredPrint * Method: setMagnificationType * Signature: (Ljava/lang/String;)I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVPSStoredPrint_setMagnificationType (JNIEnv *env, jobject obj, jstring value) { DVPSStoredPrint *sp = getAddressOfDVPSStoredPrint (env, obj); char *val = (char*) env->GetStringUTFChars (value, 0); OFCondition res = sp->setMagnificationType (val); env->ReleaseStringUTFChars (value, val); return (jint) res.status(); } /* * Class: J2Ci_jDVPSStoredPrint * Method: setSmoothingType * Signature: (Ljava/lang/String;)I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVPSStoredPrint_setSmoothingType (JNIEnv *env, jobject obj, jstring value) { DVPSStoredPrint *sp = getAddressOfDVPSStoredPrint (env, obj); char *val = (char*) env->GetStringUTFChars (value, 0); OFCondition res = sp->setSmoothingType (val); env->ReleaseStringUTFChars (value, val); return (jint) res.status(); } /* * Class: J2Ci_jDVPSStoredPrint * Method: setConfigurationInformation * Signature: (Ljava/lang/String;)I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVPSStoredPrint_setConfigurationInformation (JNIEnv *env, jobject obj, jstring value) { DVPSStoredPrint *sp = getAddressOfDVPSStoredPrint (env, obj); char *val = (char*) env->GetStringUTFChars (value, 0); OFCondition res = sp->setConfigurationInformation (val); env->ReleaseStringUTFChars (value, val); return (jint) res.status(); } /* * Class: J2Ci_jDVPSStoredPrint * Method: setResolutionID * Signature: (Ljava/lang/String;)I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVPSStoredPrint_setResolutionID (JNIEnv *env, jobject obj, jstring value) { DVPSStoredPrint *sp = getAddressOfDVPSStoredPrint (env, obj); char *val = (char*) env->GetStringUTFChars (value, 0); OFCondition res = sp->setResolutionID (val); env->ReleaseStringUTFChars (value, val); return (jint) res.status(); } /* * Class: J2Ci_jDVPSStoredPrint * Method: setFilmOrientation * Signature: (I)I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVPSStoredPrint_setFilmOrientation (JNIEnv *env, jobject obj, jint value) { DVPSStoredPrint *sp = getAddressOfDVPSStoredPrint (env, obj); OFCondition res = sp->setFilmOrientation ((DVPSFilmOrientation) value); return (jint) res.status(); } /* * Class: J2Ci_jDVPSStoredPrint * Method: setTrim * Signature: (I)I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVPSStoredPrint_setTrim (JNIEnv *env, jobject obj, jint value) { DVPSStoredPrint *sp = getAddressOfDVPSStoredPrint (env, obj); OFCondition res = sp->setTrim ((DVPSTrimMode) value); return (jint) res.status(); } /* * Class: J2Ci_jDVPSStoredPrint * Method: setRequestedDecimateCropBehaviour * Signature: (I)I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVPSStoredPrint_setRequestedDecimateCropBehaviour (JNIEnv *env, jobject obj, jint value) { DVPSStoredPrint *sp = getAddressOfDVPSStoredPrint (env, obj); OFCondition res = sp->setRequestedDecimateCropBehaviour ((DVPSDecimateCropBehaviour) value); return (jint) res.status(); } /* * Class: J2Ci_jDVPSStoredPrint * Method: newPrinter * Signature: ()I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVPSStoredPrint_newPrinter (JNIEnv *env, jobject obj) { DVPSStoredPrint *sp = getAddressOfDVPSStoredPrint (env, obj); OFCondition res = sp->newPrinter (); return (jint) res.status(); } /* * Class: J2Ci_jDVPSStoredPrint * Method: getOriginator * Signature: ()Ljava/lang/String; */ JNIEXPORT jstring JNICALL Java_J2Ci_jDVPSStoredPrint_getOriginator (JNIEnv *env, jobject obj) { DVPSStoredPrint *sp = getAddressOfDVPSStoredPrint (env, obj); const char* res = sp->getOriginator(); if (res == NULL) return NULL; return env->NewStringUTF (res); } /* * Class: J2Ci_jDVPSStoredPrint * Method: getDestination * Signature: ()Ljava/lang/String; */ JNIEXPORT jstring JNICALL Java_J2Ci_jDVPSStoredPrint_getDestination (JNIEnv *env, jobject obj) { DVPSStoredPrint *sp = getAddressOfDVPSStoredPrint (env, obj); const char* res = sp->getDestination(); if (res == NULL) return NULL; return env->NewStringUTF (res); } /* * Class: J2Ci_jDVPSStoredPrint * Method: getPrinterName * Signature: ()Ljava/lang/String; */ JNIEXPORT jstring JNICALL Java_J2Ci_jDVPSStoredPrint_getPrinterName (JNIEnv *env, jobject obj) { DVPSStoredPrint *sp = getAddressOfDVPSStoredPrint (env, obj); const char* res = sp->getPrinterName(); if (res == NULL) return NULL; return env->NewStringUTF (res); } /* * Class: J2Ci_jDVPSStoredPrint * Method: getImageDisplayFormatColumns * Signature: ()J */ JNIEXPORT jlong JNICALL Java_J2Ci_jDVPSStoredPrint_getImageDisplayFormatColumns (JNIEnv *env, jobject obj) { DVPSStoredPrint *sp = getAddressOfDVPSStoredPrint (env, obj); return (jlong) sp->getImageDisplayFormatColumns (); } /* * Class: J2Ci_jDVPSStoredPrint * Method: getImageDisplayFormatRows * Signature: ()J */ JNIEXPORT jlong JNICALL Java_J2Ci_jDVPSStoredPrint_getImageDisplayFormatRows (JNIEnv *env, jobject obj) { DVPSStoredPrint *sp = getAddressOfDVPSStoredPrint (env, obj); return (jlong) sp->getImageDisplayFormatRows (); } /* * Class: J2Ci_jDVPSStoredPrint * Method: getFilmOrientation * Signature: ()I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVPSStoredPrint_getFilmOrientation (JNIEnv *env, jobject obj) { DVPSStoredPrint *sp = getAddressOfDVPSStoredPrint (env, obj); return (jint) sp->getFilmOrientation (); } /* * Class: J2Ci_jDVPSStoredPrint * Method: getTrim * Signature: ()I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVPSStoredPrint_getTrim (JNIEnv *env, jobject obj) { DVPSStoredPrint *sp = getAddressOfDVPSStoredPrint (env, obj); return (jint) sp->getTrim (); } /* * Class: J2Ci_jDVPSStoredPrint * Method: getRequestedDecimateCropBehaviour * Signature: ()I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVPSStoredPrint_getRequestedDecimateCropBehaviour (JNIEnv *env, jobject obj) { DVPSStoredPrint *sp = getAddressOfDVPSStoredPrint (env, obj); return (jint) sp->getRequestedDecimateCropBehaviour (); } /* * Class: J2Ci_jDVPSStoredPrint * Method: getFilmSizeID * Signature: ()Ljava/lang/String; */ JNIEXPORT jstring JNICALL Java_J2Ci_jDVPSStoredPrint_getFilmSizeID (JNIEnv *env, jobject obj) { DVPSStoredPrint *sp = getAddressOfDVPSStoredPrint (env, obj); const char* res = sp->getFilmSizeID(); if (res == NULL) return NULL; return env->NewStringUTF (res); } /* * Class: J2Ci_jDVPSStoredPrint * Method: getMagnificationType * Signature: ()Ljava/lang/String; */ JNIEXPORT jstring JNICALL Java_J2Ci_jDVPSStoredPrint_getMagnificationType (JNIEnv *env, jobject obj) { DVPSStoredPrint *sp = getAddressOfDVPSStoredPrint (env, obj); const char* res = sp->getMagnificationType(); if (res == NULL) return NULL; return env->NewStringUTF (res); } /* * Class: J2Ci_jDVPSStoredPrint * Method: getSmoothingType * Signature: ()Ljava/lang/String; */ JNIEXPORT jstring JNICALL Java_J2Ci_jDVPSStoredPrint_getSmoothingType (JNIEnv *env, jobject obj) { DVPSStoredPrint *sp = getAddressOfDVPSStoredPrint (env, obj); const char* res = sp->getSmoothingType(); if (res == NULL) return NULL; return env->NewStringUTF (res); } /* * Class: J2Ci_jDVPSStoredPrint * Method: getConfigurationInformation * Signature: ()Ljava/lang/String; */ JNIEXPORT jstring JNICALL Java_J2Ci_jDVPSStoredPrint_getConfigurationInformation (JNIEnv *env, jobject obj) { DVPSStoredPrint *sp = getAddressOfDVPSStoredPrint (env, obj); const char* res = sp->getConfigurationInformation(); if (res == NULL) return NULL; return env->NewStringUTF (res); } /* * Class: J2Ci_jDVPSStoredPrint * Method: getResolutionID * Signature: ()Ljava/lang/String; */ JNIEXPORT jstring JNICALL Java_J2Ci_jDVPSStoredPrint_getResolutionID (JNIEnv *env, jobject obj) { DVPSStoredPrint *sp = getAddressOfDVPSStoredPrint (env, obj); const char* res = sp->getResolutionID(); if (res == NULL) return NULL; return env->NewStringUTF (res); } /* * Class: J2Ci_jDVPSStoredPrint * Method: getNumberOfImages * Signature: ()I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVPSStoredPrint_getNumberOfImages (JNIEnv *env, jobject obj) { DVPSStoredPrint *sp = getAddressOfDVPSStoredPrint (env, obj); return (jint) sp->getNumberOfImages(); } /* * Class: J2Ci_jDVPSStoredPrint * Method: deleteImage * Signature: (I)I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVPSStoredPrint_deleteImage (JNIEnv *env, jobject obj, jint index) { DVPSStoredPrint *sp = getAddressOfDVPSStoredPrint (env, obj); return (jint) sp->deleteImage(index).status(); } /* * Class: J2Ci_jDVPSStoredPrint * Method: deleteMultipleImages * Signature: (I)I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVPSStoredPrint_deleteMultipleImages (JNIEnv *env, jobject obj, jint number) { DVPSStoredPrint *sp = getAddressOfDVPSStoredPrint (env, obj); return (jint) sp->deleteMultipleImages(number).status(); } /* * Class: J2Ci_jDVPSStoredPrint * Method: addImageBox * Signature: (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVPSStoredPrint_addImageBox (JNIEnv *env, jobject obj, jstring retrieveaetitle, jstring refsopinstanceuid, jstring requestedimagesize, jstring patientid) { DVPSStoredPrint *sp = getAddressOfDVPSStoredPrint (env, obj); char *ra = (char*) env->GetStringUTFChars (retrieveaetitle, 0); char *rs = (char*) env->GetStringUTFChars (refsopinstanceuid, 0); char *ri = (char*) env->GetStringUTFChars (requestedimagesize, 0); char *pi = (char*) env->GetStringUTFChars (patientid, 0); OFCondition res = sp->addImageBox (ra, rs, ri, pi); env->ReleaseStringUTFChars (retrieveaetitle, ra); env->ReleaseStringUTFChars (refsopinstanceuid, rs); env->ReleaseStringUTFChars (requestedimagesize, ri); env->ReleaseStringUTFChars (patientid, pi); return (jint) res.status(); } /* * Class: J2Ci_jDVPSStoredPrint * Method: setInstanceUID * Signature: (Ljava/lang/String;)I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVPSStoredPrint_setInstanceUID (JNIEnv *env, jobject obj, jstring uid) { DVPSStoredPrint *sp = getAddressOfDVPSStoredPrint (env, obj); char *val = (char*) env->GetStringUTFChars (uid, 0); OFCondition res = sp->setInstanceUID (val); env->ReleaseStringUTFChars (uid, val); return (jint) res.status(); } /* * Class: J2Ci_jDVPSStoredPrint * Method: imageHasAdditionalSettings * Signature: (I)Z */ JNIEXPORT jboolean JNICALL Java_J2Ci_jDVPSStoredPrint_imageHasAdditionalSettings (JNIEnv *env, jobject obj, jint index) { DVPSStoredPrint *sp = getAddressOfDVPSStoredPrint (env, obj); OFBool res = sp->imageHasAdditionalSettings(index); if (res == OFTrue) return JNI_TRUE; else return JNI_FALSE; } /* * Class: J2Ci_jDVPSStoredPrint * Method: setImageMagnificationType * Signature: (ILjava/lang/String;)I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVPSStoredPrint_setImageMagnificationType (JNIEnv *env, jobject obj, jint index, jstring value) { DVPSStoredPrint *sp = getAddressOfDVPSStoredPrint (env, obj); char *val = (char*) env->GetStringUTFChars (value, 0); OFCondition res = sp->setImageMagnificationType (index, val); env->ReleaseStringUTFChars (value, val); return (jint) res.status(); } /* * Class: J2Ci_jDVPSStoredPrint * Method: setImageSmoothingType * Signature: (ILjava/lang/String;)I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVPSStoredPrint_setImageSmoothingType (JNIEnv *env, jobject obj, jint index, jstring value) { DVPSStoredPrint *sp = getAddressOfDVPSStoredPrint (env, obj); char *val = (char*) env->GetStringUTFChars (value, 0); OFCondition res = sp->setImageSmoothingType (index, val); env->ReleaseStringUTFChars (value, val); return (jint) res.status(); } /* * Class: J2Ci_jDVPSStoredPrint * Method: setImageConfigurationInformation * Signature: (ILjava/lang/String;)I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVPSStoredPrint_setImageConfigurationInformation (JNIEnv *env, jobject obj, jint index, jstring value) { DVPSStoredPrint *sp = getAddressOfDVPSStoredPrint (env, obj); char *val = (char*) env->GetStringUTFChars (value, 0); OFCondition res = sp->setImageConfigurationInformation (index, val); env->ReleaseStringUTFChars (value, val); return (jint) res.status(); } /* * Class: J2Ci_jDVPSStoredPrint * Method: getImageMagnificationType * Signature: (I)Ljava/lang/String; */ JNIEXPORT jstring JNICALL Java_J2Ci_jDVPSStoredPrint_getImageMagnificationType (JNIEnv *env, jobject obj, jint index) { DVPSStoredPrint *sp = getAddressOfDVPSStoredPrint (env, obj); const char* res = sp->getImageMagnificationType(index); if (res == NULL) return NULL; return env->NewStringUTF (res); } /* * Class: J2Ci_jDVPSStoredPrint * Method: getImageSmoothingType * Signature: (I)Ljava/lang/String; */ JNIEXPORT jstring JNICALL Java_J2Ci_jDVPSStoredPrint_getImageSmoothingType (JNIEnv *env, jobject obj, jint index) { DVPSStoredPrint *sp = getAddressOfDVPSStoredPrint (env, obj); const char* res = sp->getImageSmoothingType(index); if (res == NULL) return NULL; return env->NewStringUTF (res); } /* * Class: J2Ci_jDVPSStoredPrint * Method: getImageConfigurationInformation * Signature: (I)Ljava/lang/String; */ JNIEXPORT jstring JNICALL Java_J2Ci_jDVPSStoredPrint_getImageConfigurationInformation (JNIEnv *env, jobject obj, jint index) { DVPSStoredPrint *sp = getAddressOfDVPSStoredPrint (env, obj); const char* res = sp->getImageConfigurationInformation(index); if (res == NULL) return NULL; return env->NewStringUTF (res); } /* * Class: J2Ci_jDVPSStoredPrint * Method: setDefaultPresentationLUT * Signature: ()I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVPSStoredPrint_setDefaultPresentationLUT (JNIEnv *env, jobject obj) { DVPSStoredPrint *sp = getAddressOfDVPSStoredPrint (env, obj); return (jint) sp->setDefaultPresentationLUT().status(); } /* * Class: J2Ci_jDVPSStoredPrint * Method: setPresentationLUTShape * Signature: (I)I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVPSStoredPrint_setPresentationLUTShape (JNIEnv *env, jobject obj, jint type) { DVPSStoredPrint *sp = getAddressOfDVPSStoredPrint (env, obj); return (jint) sp->setPresentationLUTShape ((DVPSPresentationLUTType) type).status(); } /* * Class: J2Ci_jDVPSStoredPrint * Method: convertODtoPValue * Signature: (II)I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVPSStoredPrint_convertODtoPValue (JNIEnv *env, jobject obj, jint density, jint bits) { DVPSStoredPrint *sp = getAddressOfDVPSStoredPrint (env, obj); return sp->convertODtoPValue ((Uint16)density, bits); } /* * Class: J2Ci_jDVPSStoredPrint * Method: setBorderDensity * Signature: (Ljava/lang/String;)I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVPSStoredPrint_setBorderDensity (JNIEnv *env, jobject obj, jstring value) { DVPSStoredPrint *sp = getAddressOfDVPSStoredPrint (env, obj); char *val = (char*) env->GetStringUTFChars (value, 0); OFCondition res = sp->setBorderDensity (val); env->ReleaseStringUTFChars (value, val); return (jint) res.status(); } /* * Class: J2Ci_jDVPSStoredPrint * Method: setEmtpyImageDensity * Signature: (Ljava/lang/String;)I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVPSStoredPrint_setEmtpyImageDensity (JNIEnv *env, jobject obj, jstring value) { DVPSStoredPrint *sp = getAddressOfDVPSStoredPrint (env, obj); char *val = (char*) env->GetStringUTFChars (value, 0); OFCondition res = sp->setEmtpyImageDensity (val); env->ReleaseStringUTFChars (value, val); return (jint) res.status(); } /* * Class: J2Ci_jDVPSStoredPrint * Method: getBorderDensity * Signature: ()Ljava/lang/String; */ JNIEXPORT jstring JNICALL Java_J2Ci_jDVPSStoredPrint_getBorderDensity (JNIEnv *env, jobject obj) { DVPSStoredPrint *sp = getAddressOfDVPSStoredPrint (env, obj); const char* res = sp->getBorderDensity(); if (res == NULL) return NULL; return env->NewStringUTF (res); } /* * Class: J2Ci_jDVPSStoredPrint * Method: getEmtpyImageDensity * Signature: ()Ljava/lang/String; */ JNIEXPORT jstring JNICALL Java_J2Ci_jDVPSStoredPrint_getEmtpyImageDensity (JNIEnv *env, jobject obj) { DVPSStoredPrint *sp = getAddressOfDVPSStoredPrint (env, obj); const char* res = sp->getEmtpyImageDensity(); if (res == NULL) return NULL; return env->NewStringUTF (res); } /* * Class: J2Ci_jDVPSStoredPrint * Method: setMaxDensity * Signature: (Ljava/lang/String;)I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVPSStoredPrint_setMaxDensity (JNIEnv *env, jobject obj, jstring value) { DVPSStoredPrint *sp = getAddressOfDVPSStoredPrint (env, obj); char *val = (char*) env->GetStringUTFChars (value, 0); OFCondition res = sp->setMaxDensity (val); env->ReleaseStringUTFChars (value, val); return (jint) res.status(); } /* * Class: J2Ci_jDVPSStoredPrint * Method: setMinDensity * Signature: (Ljava/lang/String;)I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVPSStoredPrint_setMinDensity (JNIEnv *env, jobject obj, jstring value) { DVPSStoredPrint *sp = getAddressOfDVPSStoredPrint (env, obj); char *val = (char*) env->GetStringUTFChars (value, 0); OFCondition res = sp->setMinDensity (val); env->ReleaseStringUTFChars (value, val); return (jint) res.status(); } /* * Class: J2Ci_jDVPSStoredPrint * Method: getMaxDensity * Signature: ()Ljava/lang/String; */ JNIEXPORT jstring JNICALL Java_J2Ci_jDVPSStoredPrint_getMaxDensity (JNIEnv *env, jobject obj) { DVPSStoredPrint *sp = getAddressOfDVPSStoredPrint (env, obj); const char* res = sp->getMaxDensity(); if (res == NULL) return NULL; return env->NewStringUTF (res); } /* * Class: J2Ci_jDVPSStoredPrint * Method: getMinDensity * Signature: ()Ljava/lang/String; */ JNIEXPORT jstring JNICALL Java_J2Ci_jDVPSStoredPrint_getMinDensity (JNIEnv *env, jobject obj) { DVPSStoredPrint *sp = getAddressOfDVPSStoredPrint (env, obj); const char* res = sp->getMinDensity(); if (res == NULL) return NULL; return env->NewStringUTF (res); } /* * Class: J2Ci_jDVPSStoredPrint * Method: setPrintIllumination * Signature: (I)I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVPSStoredPrint_setPrintIllumination (JNIEnv *env, jobject obj, jint value) { DVPSStoredPrint *sp = getAddressOfDVPSStoredPrint (env, obj); return (jint) sp->setPrintIllumination((short)value).status(); } /* * Class: J2Ci_jDVPSStoredPrint * Method: getPrintIllumination * Signature: ()I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVPSStoredPrint_getPrintIllumination (JNIEnv *env, jobject obj) { DVPSStoredPrint *sp = getAddressOfDVPSStoredPrint (env, obj); return (jint) sp->getPrintIllumination(); } /* * Class: J2Ci_jDVPSStoredPrint * Method: setPrintReflectedAmbientLight * Signature: (I)I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVPSStoredPrint_setPrintReflectedAmbientLight (JNIEnv *env, jobject obj, jint value) { DVPSStoredPrint *sp = getAddressOfDVPSStoredPrint (env, obj); return (jint) sp->setPrintReflectedAmbientLight((short)value).status(); } /* * Class: J2Ci_jDVPSStoredPrint * Method: getPrintReflectedAmbientLight * Signature: ()I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVPSStoredPrint_getPrintReflectedAmbientLight (JNIEnv *env, jobject obj) { DVPSStoredPrint *sp = getAddressOfDVPSStoredPrint (env, obj); return (jint) sp->getPrintReflectedAmbientLight(); } /* * CVS Log * $Log$ * */ dicomscope-3.6.0/interface/libsrc/DVPSTextObject.cpp0000644000265600020320000002167211262371102021466 0ustar tilleaadmin/* * * Copyright (C) 1999-2003, Institute for MicroTherapy and OFFIS * * This software and supporting documentation were developed by * * University of Witten/Herdecke * Department of Radiology and MicroTherapy * Institute for MicroTherapy * Medical computer science * * Universitaetsstrasse 142 * 44799 Bochum, Germany * * http://www.microtherapy.de/go/cs * mailto:computer.science@microtherapy.de * * and * * Kuratorium OFFIS e.V. * Healthcare Information and Communication Systems * Escherweg 2 * D-26121 Oldenburg, Germany * * THIS SOFTWARE IS MADE AVAILABLE, AS IS, AND THE INSTITUTE MAKES NO * WARRANTY REGARDING THE SOFTWARE, ITS PERFORMANCE, ITS MERCHANTABILITY * OR FITNESS FOR ANY PARTICULAR USE, FREEDOM FROM ANY COMPUTER DISEASES * OR ITS CONFORMITY TO ANY SPECIFICATION. THE ENTIRE RISK AS TO QUALITY * AND PERFORMANCE OF THE SOFTWARE IS WITH THE USER. * * Author : $Author: Schroeter $ * Last update : $Date: 1999/05/14 10:02:31 $ * Revision : $Revision: 1.2 $ * State : $State: Exp $ */ #include "J2Ci_jDVPSTextObject.h" #include "jInterface.h" inline DVPSTextObject* getAddressOfDVPSTextObject (JNIEnv *env, jobject obj) { jclass cls = env->GetObjectClass (obj); jfieldID fid = env->GetFieldID (cls, "cppClassAddress", "J"); if (fid == 0) exit (-1); return (DVPSTextObject*) env->GetLongField (obj, fid); } inline void setAddressOfDVPSTextObject (JNIEnv *env, jobject obj, DVPSTextObject* dvi) { jclass cls = env->GetObjectClass (obj); jfieldID fid = env->GetFieldID (cls, "cppClassAddress", "J"); if (fid == 0) exit (-1); env->SetLongField (obj, fid, (jlong) dvi); } /* * Class: J2Ci_jDVPSTextObject * Method: createObjOfDVPSTextObject * Signature: ()V */ JNIEXPORT void JNICALL Java_J2Ci_jDVPSTextObject_createObjOfDVPSTextObject (JNIEnv *env, jobject obj) { DVPSTextObject *to = new DVPSTextObject; setAddressOfDVPSTextObject (env, obj, to); } /* * Class: J2Ci_jDVPSTextObject * Method: CopyConstructor * Signature: (J)V */ JNIEXPORT void JNICALL Java_J2Ci_jDVPSTextObject_CopyConstructor (JNIEnv *env, jobject obj, jlong fromCppObj) { const DVPSTextObject *to = (DVPSTextObject *) fromCppObj; DVPSTextObject *clone = new DVPSTextObject (*to); setAddressOfDVPSTextObject (env, obj, clone); } /* * Class: J2Ci_jDVPSTextObject * Method: haveAnchorPoint * Signature: ()Z */ JNIEXPORT jboolean JNICALL Java_J2Ci_jDVPSTextObject_haveAnchorPoint (JNIEnv *env, jobject obj) { DVPSTextObject *to = getAddressOfDVPSTextObject (env, obj); return (to->haveAnchorPoint () != 0) ? JNI_TRUE : JNI_FALSE; } /* * Class: J2Ci_jDVPSTextObject * Method: haveBoundingBox * Signature: ()Z */ JNIEXPORT jboolean JNICALL Java_J2Ci_jDVPSTextObject_haveBoundingBox (JNIEnv *env, jobject obj) { DVPSTextObject *to = getAddressOfDVPSTextObject (env, obj); return (to->haveBoundingBox () != 0) ? JNI_TRUE : JNI_FALSE; } /* * Class: J2Ci_jDVPSTextObject * Method: setAnchorPoint * Signature: (DDIZ)I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVPSTextObject_setAnchorPoint (JNIEnv *env, jobject obj, jdouble x, jdouble y, jint unit, jboolean isVisible) { DVPSTextObject *to = getAddressOfDVPSTextObject (env, obj); return (jint) to->setAnchorPoint (x, y, (DVPSannotationUnit) unit, (isVisible != 0) ? OFTrue : OFFalse).status(); } /* * Class: J2Ci_jDVPSTextObject * Method: setBoundingBox * Signature: (DDDDII)I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVPSTextObject_setBoundingBox (JNIEnv *env, jobject obj, jdouble TLHC_x, jdouble TLHC_y, jdouble BRHC_x, jdouble BRHC_y, jint unit, jint justification) { DVPSTextObject *to = getAddressOfDVPSTextObject (env, obj); return (jint) to->setBoundingBox (TLHC_x, TLHC_y, BRHC_x, BRHC_y, (DVPSannotationUnit) unit, (DVPSTextJustification) justification).status(); } /* * Class: J2Ci_jDVPSTextObject * Method: setText * Signature: (Ljava/lang/String;)I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVPSTextObject_setText (JNIEnv *env, jobject obj, jstring text) { DVPSTextObject *to = getAddressOfDVPSTextObject (env, obj); OFCondition res = EC_IllegalCall; jmethodID mid = env->GetMethodID(env->FindClass("java/lang/String"), "getBytes", "(Ljava/lang/String;)[B"); if (mid) { jbyteArray array = (jbyteArray) env->CallObjectMethod(text, mid, env->NewStringUTF(JAVA_ENCODING_STRING)); if (array) { jbyte *string = env->GetByteArrayElements(array, 0); res = to->setText(OFString((char *)string, env->GetArrayLength(array)).c_str()); env->ReleaseByteArrayElements(array, string, 0); } } return (jint) res.status(); } /* * Class: J2Ci_jDVPSTextObject * Method: removeAnchorPoint * Signature: ()V */ JNIEXPORT void JNICALL Java_J2Ci_jDVPSTextObject_removeAnchorPoint (JNIEnv *env, jobject obj) { DVPSTextObject *to = getAddressOfDVPSTextObject (env, obj); to->removeAnchorPoint (); } /* * Class: J2Ci_jDVPSTextObject * Method: removeBoundingBox * Signature: ()V */ JNIEXPORT void JNICALL Java_J2Ci_jDVPSTextObject_removeBoundingBox (JNIEnv *env, jobject obj) { DVPSTextObject *to = getAddressOfDVPSTextObject (env, obj); to->removeBoundingBox (); } /* * Class: J2Ci_jDVPSTextObject * Method: getText * Signature: ()Ljava/lang/String; */ JNIEXPORT jstring JNICALL Java_J2Ci_jDVPSTextObject_getText (JNIEnv *env, jobject obj) { DVPSTextObject *to = getAddressOfDVPSTextObject (env, obj); const char* res = to->getText(); if (res == NULL) return NULL; return env->NewStringUTF (res); } /* * Class: J2Ci_jDVPSTextObject * Method: getBoundingBoxTLHC_x * Signature: ()D */ JNIEXPORT jdouble JNICALL Java_J2Ci_jDVPSTextObject_getBoundingBoxTLHC_1x (JNIEnv *env, jobject obj) { DVPSTextObject *to = getAddressOfDVPSTextObject (env, obj); return (jdouble) to->getBoundingBoxTLHC_x (); } /* * Class: J2Ci_jDVPSTextObject * Method: getBoundingBoxTLHC_y * Signature: ()D */ JNIEXPORT jdouble JNICALL Java_J2Ci_jDVPSTextObject_getBoundingBoxTLHC_1y (JNIEnv *env, jobject obj) { DVPSTextObject *to = getAddressOfDVPSTextObject (env, obj); return (jdouble) to->getBoundingBoxTLHC_y (); } /* * Class: J2Ci_jDVPSTextObject * Method: getBoundingBoxBRHC_x * Signature: ()D */ JNIEXPORT jdouble JNICALL Java_J2Ci_jDVPSTextObject_getBoundingBoxBRHC_1x (JNIEnv *env, jobject obj) { DVPSTextObject *to = getAddressOfDVPSTextObject (env, obj); return (jdouble) to->getBoundingBoxBRHC_x (); } /* * Class: J2Ci_jDVPSTextObject * Method: getBoundingBoxBRHC_y * Signature: ()D */ JNIEXPORT jdouble JNICALL Java_J2Ci_jDVPSTextObject_getBoundingBoxBRHC_1y (JNIEnv *env, jobject obj) { DVPSTextObject *to = getAddressOfDVPSTextObject (env, obj); return (jdouble) to->getBoundingBoxBRHC_y (); } /* * Class: J2Ci_jDVPSTextObject * Method: getBoundingBoxAnnotationUnits * Signature: ()I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVPSTextObject_getBoundingBoxAnnotationUnits (JNIEnv *env, jobject obj) { DVPSTextObject *to = getAddressOfDVPSTextObject (env, obj); return (jint) to->getBoundingBoxAnnotationUnits (); } /* * Class: J2Ci_jDVPSTextObject * Method: getAnchorPoint_x * Signature: ()D */ JNIEXPORT jdouble JNICALL Java_J2Ci_jDVPSTextObject_getAnchorPoint_1x (JNIEnv *env, jobject obj) { DVPSTextObject *to = getAddressOfDVPSTextObject (env, obj); return (jdouble) to->getAnchorPoint_x (); } /* * Class: J2Ci_jDVPSTextObject * Method: getAnchorPoint_y * Signature: ()D */ JNIEXPORT jdouble JNICALL Java_J2Ci_jDVPSTextObject_getAnchorPoint_1y (JNIEnv *env, jobject obj) { DVPSTextObject *to = getAddressOfDVPSTextObject (env, obj); return (jdouble) to->getAnchorPoint_y (); } /* * Class: J2Ci_jDVPSTextObject * Method: anchorPointIsVisible * Signature: ()Z */ JNIEXPORT jboolean JNICALL Java_J2Ci_jDVPSTextObject_anchorPointIsVisible (JNIEnv *env, jobject obj) { DVPSTextObject *to = getAddressOfDVPSTextObject (env, obj); return (to->anchorPointIsVisible () != 0) ? JNI_TRUE : JNI_FALSE; } /* * Class: J2Ci_jDVPSTextObject * Method: getAnchorPointAnnotationUnits * Signature: ()I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVPSTextObject_getAnchorPointAnnotationUnits (JNIEnv *env, jobject obj) { DVPSTextObject *to = getAddressOfDVPSTextObject (env, obj); return (jint) to->getAnchorPointAnnotationUnits (); } /* * Class: J2Ci_jDVPSTextObject * Method: getBoundingBoxHorizontalJustification * Signature: ()I */ JNIEXPORT jint JNICALL Java_J2Ci_jDVPSTextObject_getBoundingBoxHorizontalJustification (JNIEnv *env, jobject obj) { DVPSTextObject *to = getAddressOfDVPSTextObject (env, obj); return (jint) to->getBoundingBoxHorizontalJustification (); } /* * CVS Log * $Log: DVPSTextObject.cpp,v $ * Revision 1.2 1999/05/14 10:02:31 Schroeter * Log-Tags for CVS corrected * * Revision 1.1.1.1 1999/05/14 09:33:11 Schroeter * initial commit of release 1.0 * */ dicomscope-3.6.0/MANIFEST.MF0000644000265600020320000000007011262371102014413 0ustar tilleaadminManifest-Version: 1.0 Main-Class: DICOMscope/DICOMscope dicomscope-3.6.0/readme.txt0000644000265600020320000000060111262371102014757 0ustar tilleaadminThis is the Java part of the source code for DICOMscope 3.6.0 (DICOM toolkit dcmtk 3.5.3 also required for compilation). Directories: DICOMscope Application folder interface Interface between C++ and Java tkgui Java GUI source code A detailed description on how to compile this code on different platforms is available in the user manual (see DICOMscope/docs/dsum360.pdf). dicomscope-3.6.0/tkgui/0002755000265600020320000000000011262371100014107 5ustar tilleaadmindicomscope-3.6.0/tkgui/about/0002755000265600020320000000000011262371077015236 5ustar tilleaadmindicomscope-3.6.0/tkgui/about/AboutBox.java0000644000265600020320000000647611262371077017637 0ustar tilleaadmin/* * * Copyright (C) 1999, Institute for MicroTherapy * * This software and supporting documentation were developed by * * University of Witten/Herdecke * Department of Radiology and MicroTherapy * Institute for MicroTherapy * Medical computer science * * Universitaetsstrasse 142 * 44799 Bochum, Germany * * http://www.microtherapy.de/go/cs * mailto:computer.science@microtherapy.de * * THIS SOFTWARE IS MADE AVAILABLE, AS IS, AND THE INSTITUTE MAKES NO * WARRANTY REGARDING THE SOFTWARE, ITS PERFORMANCE, ITS MERCHANTABILITY * OR FITNESS FOR ANY PARTICULAR USE, FREEDOM FROM ANY COMPUTER DISEASES * OR ITS CONFORMITY TO ANY SPECIFICATION. THE ENTIRE RISK AS TO QUALITY * AND PERFORMANCE OF THE SOFTWARE IS WITH THE USER. * * * Author : $Author: kleber $ * Last update : $Date: 2003/09/08 08:59:30 $ * Revision : $Revision: 1.2 $ * State: $State: Exp $ */ package about; import java.awt.*; import java.io.*; import java.awt.event.*; import javax.swing.*; import javax.swing.event.*; import javax.swing.text.*; import java.net.*; import jToolkit.gui.*; import java.util.*; /** * Displays an about box in a panel. The content will be get from a html-page * in the Aboutbox-folder. Hyperlinks in the content will open * the default web browser with the relating site. * * @author Andreas Schroeter * @since 30.04.1999 */ public class AboutBox extends JPanel implements HyperlinkListener { private JEditorPane html; private boolean iconsOnTop = true; // false = right side /** * Constructor. Sets up the panel. * * @param config Configuration for the AboutBox * @since 30.04.1999 */ public AboutBox(Hashtable config) { super(); setLayout(new BorderLayout(10,10)); setBackground (Color.white); html = new JEditorPane (); html.setBackground (Color.white); html.setContentType ("text/html"); html.setEditable (false); html.addHyperlinkListener(this); try { Class c = getClass(); ClassLoader cl = c.getClassLoader(); URL url = cl.getResource ("icons/about.html"); html.setPage (url); if ( html.getScrollableTracksViewportWidth() ) { this.setMinimumSize( html.getPreferredScrollableViewportSize() ); } add ("Center", html); } catch (Exception e) { add ("Center", new JLabel ("Error in Aboutbox!")); e.printStackTrace(); } } /** * Handler for hyperlink clicks * * @param e Hyperlink to the WWW * @since 30.04.1999 */ public void hyperlinkUpdate (HyperlinkEvent e) { if (e.getEventType() == HyperlinkEvent.EventType.ACTIVATED) { BrowserControl.displayURL (e.getURL().toExternalForm()); } } } /* * CVS Log * $Log: AboutBox.java,v $ * Revision 1.2 2003/09/08 08:59:30 kleber * move DICOMscope to folder dicomscope. * * Revision 1.1.1.1 2001/06/06 10:32:29 kleber * Init commit for DICOMscope 3.5 * Create new CVS * */ dicomscope-3.6.0/tkgui/about/BrowserControl.java0000644000265600020320000001127611262371077021072 0ustar tilleaadmin/* * * Copyright (C) 1999, Institute for MicroTherapy * * This software and supporting documentation were developed by * * University of Witten/Herdecke * Department of Radiology and MicroTherapy * Institute for MicroTherapy * Medical computer science * * Universitaetsstrasse 142 * 44799 Bochum, Germany * * http://www.microtherapy.de/go/cs * mailto:computer.science@microtherapy.de * * THIS SOFTWARE IS MADE AVAILABLE, AS IS, AND THE INSTITUTE MAKES NO * WARRANTY REGARDING THE SOFTWARE, ITS PERFORMANCE, ITS MERCHANTABILITY * OR FITNESS FOR ANY PARTICULAR USE, FREEDOM FROM ANY COMPUTER DISEASES * OR ITS CONFORMITY TO ANY SPECIFICATION. THE ENTIRE RISK AS TO QUALITY * AND PERFORMANCE OF THE SOFTWARE IS WITH THE USER. * * Author : $Author: kleber $ * Last update : $Date: 2001/06/06 10:32:29 $ * Revision : $Revision: 1.1.1.1 $ * State: $State: Exp $ */ package about; import java.io.*; /** * Display a file in the system browser. If you want to display a * file, you must include the absolute path name. * @param url the file's url (the url must start with either "http://" or * "file://"). * * Examples: * * BrowserControl.displayURL("http://www.javaworld.com") * BrowserControl.displayURL("file://c:\\docs\\index.html") * BrowserContorl.displayURL("file:///user/joe/index.html"); * * @author Andreas Schroeter * @since 30.03 */ public class BrowserControl { /** * calls the default web browser with the given url. * * @param url call browser with this url * @since 30.03 */ public static void displayURL(String url) { boolean windows = isWindowsPlatform(); String cmd = null; try { if (windows) { // cmd = 'rundll32 url.dll,FileProtocolHandler http://...' cmd = WIN_PATH + " " + WIN_FLAG + " " + url; Process p = Runtime.getRuntime().exec(cmd); } else { // Under Unix, Netscape has to be running for the "-remote" // command to work. So, we try sending the command and // check for an exit value. If the exit command is 0, // it worked, otherwise we need to start the browser. // cmd = 'netscape -remote openURL(http://www.javaworld.com)' cmd = UNIX_PATH + " " + UNIX_FLAG + "(" + url + ")"; Process p = Runtime.getRuntime().exec(cmd); try { // wait for exit code -- if it's 0, command worked, // otherwise we need to start the browser up. int exitCode = p.waitFor(); if (exitCode != 0) { // Command failed, start up the browser // cmd = 'netscape http://www.javaworld.com' cmd = UNIX_PATH + " " + url; p = Runtime.getRuntime().exec(cmd); } } catch(InterruptedException x) { System.err.println("Error Bringing up Browser, cmd='" + cmd + "'"); System.err.println("Caught: " + x); } } } catch(IOException x) { // couldn't exec browser System.err.println("Could not invoke browser, command=" + cmd); System.err.println("Caught: " + x); } } /** * Try to determine whether this application is running under Windows * or some other platform by examing the "os.name" property. * * @return true if this application is running under a Windows OS * @since 30.03 */ public static boolean isWindowsPlatform() { String os = System.getProperty("os.name"); if ( os != null && os.startsWith(WIN_ID)) return true; else return false; } // Used to identify the windows platform. private static final String WIN_ID = "Windows"; // The default system browser under windows. private static final String WIN_PATH = "rundll32"; // The flag to display a url. private static final String WIN_FLAG = "url.dll,FileProtocolHandler"; // The default browser under unix. private static final String UNIX_PATH = "netscape"; // The flag to display a url. private static final String UNIX_FLAG = "-remote openURL"; } /* * CVS Log * $Log: BrowserControl.java,v $ * Revision 1.1.1.1 2001/06/06 10:32:29 kleber * Init commit for DICOMscope 3.5 * Create new CVS * */ dicomscope-3.6.0/tkgui/browser/0002755000265600020320000000000011262371077015607 5ustar tilleaadmindicomscope-3.6.0/tkgui/browser/MyTreeCellRenderer.java0000644000265600020320000003077311262371077022156 0ustar tilleaadmin/* * * Copyright (C) 1999, Institute for MicroTherapy * * This software and supporting documentation were developed by * * University of Witten/Herdecke * Department of Radiology and MicroTherapy * Institute for MicroTherapy * Medical computer science * * Universitaetsstrasse 142 * 44799 Bochum, Germany * * http://www.microtherapy.de/go/cs * mailto:computer.science@microtherapy.de * * THIS SOFTWARE IS MADE AVAILABLE, AS IS, AND THE INSTITUTE MAKES NO * WARRANTY REGARDING THE SOFTWARE, ITS PERFORMANCE, ITS MERCHANTABILITY * OR FITNESS FOR ANY PARTICULAR USE, FREEDOM FROM ANY COMPUTER DISEASES * OR ITS CONFORMITY TO ANY SPECIFICATION. THE ENTIRE RISK AS TO QUALITY * AND PERFORMANCE OF THE SOFTWARE IS WITH THE USER. * * Author : $Author: kleber $ * Last update : $Date: 2001/06/06 10:32:29 $ * Revision : $Revision: 1.1.1.1 $ * State: $State: Exp $ */ package browser; import java.lang.*; import javax.swing.tree.*; import javax.swing.*; import java.awt.*; import jToolkit.io.*; import main.MainContext; import J2Ci.*; /** * Draws a tree element with the correct icon in the tree * * @author Andreas Schroeter * @since 30.04.1999 */ public class MyTreeCellRenderer implements TreeCellRenderer { // Icons /** * Icon used to show nodes as Presentation State. */ transient protected Icon pSIcon; /** * Icon used to show nodes as Structure Report . */ transient protected Icon srIcon; /** * Icon used to show nodes as Study. */ transient protected Icon studyIcon; /** * Icon used to show nodes as Series. */ transient protected Icon seriesIcon; /** * Icon used to show nodes as Instance. */ transient protected Icon instanceIcon; /** * Icon used to show nodes as default. */ transient protected Icon defaultIcon; /** * Icon used to show nodes as new Entry. */ transient protected Icon newIcon; /** * Icon used to show nodes as new Entry. */ transient protected Icon containsNewIcon; /** * Icon used to show nodes as new Entry. */ transient protected Icon hcIcon; /** * Icon used to show nodes as new Entry. */ transient protected Icon spIcon; // ---------------- /** Icon used to show non-leaf nodes that aren't expanded. */ transient protected Icon closedIcon; /** Icon used to show leaf nodes. */ transient protected Icon leafIcon; /** Icon used to show non-leaf nodes that are expanded. */ transient protected Icon openIcon; // Colors /** Color to use for the foreground for selected nodes. */ protected Color textSelectionColor; /** Color to use for the foreground for non-selected nodes. */ protected Color textNonSelectionColor; /** Color to use for the background when a node is selected. */ protected Color backgroundSelectionColor; /** Color to use for the background when the node isn't selected. */ protected Color backgroundNonSelectionColor; /** Color to use for the background when the node isn't selected. */ protected Color borderSelectionColor; protected JLabel label=new JLabel(); protected Font textSelectionFont; protected Font textNonSelectionFont; public MyTreeCellRenderer() { label.setOpaque(true); Font f=label.getFont(); IconRetriever ir = new IconRetriever(); if (MainContext.instance().highQualitySystem) { textSelectionFont=new Font(f.getName(), f.getStyle() | Font.ITALIC, f.getSize()); textNonSelectionFont=new Font(f.getName(), f.getStyle(), f.getSize()); pSIcon = ir.getIcon (MainContext.iconPath + "bigps.gif"); srIcon = ir.getIcon (MainContext.iconPath + "sr32.gif"); //new ImageIcon (MainContext.iconPath + "bigps.gif"); instanceIcon = ir.getIcon (MainContext.iconPath + "biginstance.gif"); seriesIcon = ir.getIcon (MainContext.iconPath + "bigseries.gif"); studyIcon = ir.getIcon (MainContext.iconPath + "bigstudy.gif"); defaultIcon = ir.getIcon (MainContext.iconPath + "bigdefault.gif"); newIcon = ir.getIcon (MainContext.iconPath + "bignew.gif"); hcIcon = ir.getIcon (MainContext.iconPath + "hc32.gif"); spIcon = ir.getIcon (MainContext.iconPath + "sp32.gif"); containsNewIcon = ir.getIcon (MainContext.iconPath + "containsNew32.gif"); /* InstanceIcon = new ImageIcon (MainContext.iconPath + "biginstance.gif"); SeriesIcon = new ImageIcon (MainContext.iconPath + "bigseries.gif"); StudyIcon = new ImageIcon (MainContext.iconPath + "bigstudy.gif"); defaultIcon = new ImageIcon (MainContext.iconPath + "bigdefault.gif"); newIcon = new ImageIcon (MainContext.iconPath + "bignew.gif"); hcIcon = new ImageIcon (MainContext.iconPath + "hc32.gif"); spIcon = new ImageIcon (MainContext.iconPath + "sp32.gif"); */ } else { textSelectionFont=new Font(f.getName(),f.getStyle()|Font.ITALIC,f.getSize()); textNonSelectionFont=f; pSIcon = ir.getIcon (MainContext.iconPath + "ps.gif"); instanceIcon = ir.getIcon(MainContext.iconPath + "instance.gif"); seriesIcon = ir.getIcon (MainContext.iconPath + "series.gif"); studyIcon = ir.getIcon (MainContext.iconPath + "study.gif"); defaultIcon = ir.getIcon(MainContext.iconPath + "default.gif"); newIcon = ir.getIcon (MainContext.iconPath + "new.gif"); containsNewIcon = ir.getIcon (MainContext.iconPath + "containsNew.gif"); hcIcon = ir.getIcon (MainContext.iconPath + "hc.gif"); spIcon = ir.getIcon (MainContext.iconPath + "sp.gif"); srIcon = ir.getIcon (MainContext.iconPath + "sr.gif"); /* PSIcon = new ImageIcon (MainContext.iconPath + "ps.gif"); InstanceIcon = new ImageIcon (MainContext.iconPath + "instance.gif"); SeriesIcon = new ImageIcon (MainContext.iconPath + "series.gif"); StudyIcon = new ImageIcon (MainContext.iconPath + "study.gif"); defaultIcon = new ImageIcon (MainContext.iconPath + "default.gif"); newIcon = new ImageIcon (MainContext.iconPath + "new.gif"); hcIcon = new ImageIcon (MainContext.iconPath + "hc.gif"); spIcon = new ImageIcon (MainContext.iconPath + "sp.gif"); */ } setTextSelectionColor(UIManager.getColor("Tree.textSelectionColor")); setTextNonSelectionColor(UIManager.getColor("Tree.textNonSelectionColor")); setBackgroundSelectionColor(UIManager.getColor("Tree.selectionBackground")); setBackgroundNonSelectionColor(UIManager.getColor("Tree.backgroundNonSelectionColor")); setBorderSelectionColor(UIManager.getColor("Tree.borderSelectionColor")); } /** * Returns the default icon used to represent non-leaf nodes that are expanded. */ public Icon getDefaultOpenIcon() { return openIcon; } /** * Returns the default icon used to represent non-leaf nodes that are not * expanded. */ public Icon getDefaultClosedIcon() { return closedIcon; } /** * Returns the default icon used to represent leaf nodes. */ public Icon getDefaultLeafIcon() { return leafIcon; } /** * Sets the icon used to represent non-leaf nodes that are expanded. */ public void setOpenIcon(Icon newIcon) { openIcon = newIcon; } /** * Returns the icon used to represent non-leaf nodes that are expanded. public Icon getOpenIcon() { return openIcon; } */ /** * Sets the icon used to represent non-leaf nodes that are not expanded. */ public void setClosedIcon(Icon newIcon) { closedIcon = newIcon; } /** * Returns the icon used to represent non-leaf nodes that are not * expanded. */ public Icon getClosedIcon() { return closedIcon; } /** * Sets the icon used to represent leaf nodes. */ public void setLeafIcon(Icon newIcon) { leafIcon = newIcon; } /** * Returns the icon used to represent leaf nodes. */ public Icon getLeafIcon() { return leafIcon; } /** * Sets the color the text is drawn with when the node is selected. */ public void setTextSelectionColor(Color newColor) { textSelectionColor = newColor; } /** * Returns the color the text is drawn with when the node is selected. */ public Color getTextSelectionColor() { return textSelectionColor; } /** * Sets the color the text is drawn with when the node isn't selected. */ public void setTextNonSelectionColor(Color newColor) { textNonSelectionColor = newColor; } /** * Returns the color the text is drawn with when the node isn't selected. */ public Color getTextNonSelectionColor() { return textNonSelectionColor; } /** * Sets the color to use for the background if node is selected. */ public void setBackgroundSelectionColor(Color newColor) { backgroundSelectionColor = newColor; } /** * Returns the color to use for the background if node is selected. */ public Color getBackgroundSelectionColor() { return backgroundSelectionColor; } /** * Sets the background color to be used for non selected nodes. */ public void setBackgroundNonSelectionColor(Color newColor) { backgroundNonSelectionColor = newColor; } /** * Returns the background color to be used for non selected nodes. */ public Color getBackgroundNonSelectionColor() { return backgroundNonSelectionColor; } /** * Sets the color to use for the border. */ public void setBorderSelectionColor(Color newColor) { borderSelectionColor = newColor; } /** * Returns the color the border is drawn. */ public Color getBorderSelectionColor() { return borderSelectionColor; } /** * Renders the Component. */ public Component getTreeCellRendererComponent(JTree tree, Object value, boolean selected, boolean expanded, boolean leaf, int row, boolean hasFocus) { DefaultMutableTreeNode node=(DefaultMutableTreeNode)value; Object userObject=node.getUserObject(); TreeElement te = (TreeElement) userObject; if(selected) { label.setForeground(getTextSelectionColor()); label.setBackground(getBackgroundSelectionColor()); label.setFont(textSelectionFont); } else { label.setForeground(getTextNonSelectionColor()); label.setBackground(getBackgroundNonSelectionColor()); label.setFont(textNonSelectionFont); } if (te == null) { label.setText("no Value"); label.setToolTipText(" no tip"); label.setIcon (defaultIcon); return label; } label.setText(te.toString()); label.setToolTipText(te.toString()); if (TreeElement.showNewWithIcon && (te.getStatus()>jDVIFhierarchyStatus.DVIF_objectIsNotNew) && !te.isRoot()) { if (te.getStatus() ==jDVIFhierarchyStatus.DVIF_objectIsNew)label.setIcon (newIcon); else label.setIcon(containsNewIcon); } else if (te.isPS()) label.setIcon (pSIcon); else if (te.isHC()&&te.isInstance()) label.setIcon(hcIcon); else if (te.isST()&&te.isInstance()) label.setIcon(spIcon); else if (te.isSR()&&te.isInstance()) label.setIcon(srIcon); else if (te.isInstance()) label.setIcon (instanceIcon); else if (te.isSeries()) label.setIcon (seriesIcon); else if (te.isStudy()) label.setIcon (studyIcon); else label.setIcon (defaultIcon); Dimension di=label.getMinimumSize(); di.width+=16; di.height+=1; label.setPreferredSize(di); return label; } } /* * CVS Log * $Log: MyTreeCellRenderer.java,v $ * Revision 1.1.1.1 2001/06/06 10:32:29 kleber * Init commit for DICOMscope 3.5 * Create new CVS * */ dicomscope-3.6.0/tkgui/browser/SavePresentationStateDialog.java0000644000265600020320000001346411262371077024073 0ustar tilleaadmin/* * * Copyright (C) 1999, Institute for MicroTherapy * * This software and supporting documentation were developed by * * University of Witten/Herdecke * Department of Radiology and MicroTherapy * Institute for MicroTherapy * Medical computer science * * Universitaetsstrasse 142 * 44799 Bochum, Germany * * http://www.microtherapy.de/go/cs * mailto:computer.science@microtherapy.de * * THIS SOFTWARE IS MADE AVAILABLE, AS IS, AND THE INSTITUTE MAKES NO * WARRANTY REGARDING THE SOFTWARE, ITS PERFORMANCE, ITS MERCHANTABILITY * OR FITNESS FOR ANY PARTICULAR USE, FREEDOM FROM ANY COMPUTER DISEASES * OR ITS CONFORMITY TO ANY SPECIFICATION. THE ENTIRE RISK AS TO QUALITY * AND PERFORMANCE OF THE SOFTWARE IS WITH THE USER. * * Author : $Author: kleber $ * Last update : $Date: 2001/06/06 10:32:29 $ * Revision : $Revision: 1.1.1.1 $ * State: $State: Exp $ */ package browser; import javax.swing.*; import javax.swing.border.*; import java.awt.*; import jToolkit.gui.*; import main.*; /** * This class contains the diaog for saving a presentation state. * @autor Klaus Kleber * @since 01.06.2000 */ public class SavePresentationStateDialog extends javax.swing.JDialog implements jToolkit.gui.CommandButtonListener { /** * Action for pressing the OK-Button */ public static final int ID_OK = 0; /** * Action for pressing the Cancel-Button */ public static final int ID_CANCEL = 1; private CommandJButton okButton = new CommandJButton("OK", this, ID_OK); private CommandJButton cancelButton = new CommandJButton("CANCEL", this,ID_CANCEL); private int actionValue; private JTextField nameTextField; private JTextField creatorTextField; private JRadioButton implicitButton = new JRadioButton("Implicit VR Little Endian", false); private JRadioButton explicitButton= new JRadioButton("Explicit VR Little Endian", true); private JCheckBox displayAreaCheckBox = new JCheckBox("Set Displayed Area to Image Size", true); /** * Constructor. * @param parent Parent Frame. * @param chooseTransferSyntax If true the transfer syntax of the image is selectable. */ public SavePresentationStateDialog(JFrame parent, boolean chooseTransferSyntax, String title, boolean savePS) { super(parent,title , true); setLocationRelativeTo(parent); getContentPane().setSize(400,300); JPanel paintPanel = new JPanel(); paintPanel.setLayout(new BoxLayout(paintPanel,BoxLayout.Y_AXIS)); getContentPane().add(paintPanel); GuiComponents gui = GuiComponents.getInstance(); nameTextField = gui.nameTextField; creatorTextField = gui.creatorTextField; JPanel psPanel = new JPanel(new BorderLayout()); psPanel.setBorder(new TitledBorder("Presentation State")); JPanel nPanel = new JPanel(new GridLayout(2,2)); nPanel.add(new JLabel("Label: ")); nPanel.add(nameTextField); nPanel.add(new JLabel("Creator: ")); nPanel.add(creatorTextField); psPanel.add(nPanel, BorderLayout.NORTH); paintPanel.add(psPanel); JPanel daPanel = new JPanel(); daPanel.setBorder(new TitledBorder("Displayed Area")); daPanel.add(displayAreaCheckBox); paintPanel.add(daPanel); if (chooseTransferSyntax) { JPanel trPanel = new JPanel(); trPanel.setBorder(new TitledBorder("Transfer Syntax")); trPanel.setLayout(new GridLayout(1,2)); trPanel.add(implicitButton); trPanel.add(explicitButton); ButtonGroup bg = new ButtonGroup(); bg.add(implicitButton); bg.add(explicitButton); paintPanel.add(trPanel); } JPanel southPanel = new JPanel(); southPanel.add(okButton); if (savePS) southPanel.add(cancelButton); paintPanel.add(southPanel); pack(); } /** * Action handling. * @param id the id of the pressed JButton. */ public void buttonClicked (int id) { if (id == ID_OK) { actionValue = ID_OK; setVisible (false); } if (id == ID_CANCEL) { actionValue = ID_CANCEL; setVisible (false); } } /** * Returns the Action applied to this JDialog. The following values are possible: * ID_OK for pressing the OK Button and ID_CANCEL for pressing the Cancel Button. * returns the Action applied to this JDialog. */ public int getActionValue() { return actionValue; } /** * Returns the name of the presentation state. * @return the name of the presentation state. */ public String getPresentationStateName() { if (nameTextField != null) return nameTextField.getText(); else return new String(""); } /** * Returns true if the display Area of the mage should be set to the image size * @return true if the display Area of the mage should be set to the image size */ public boolean saveImageSize() { return displayAreaCheckBox.isSelected(); } /** * Returns true if image and presentation state should be save in Explicit VR Little Endian * @return true if image and presentation state should be saved in Explicit VR Little Endian, * if false Implicit Little VR Endian */ public boolean saveAsExplicit() { return explicitButton.isSelected(); } } /* * CVS Log * $Log: SavePresentationStateDialog.java,v $ * Revision 1.1.1.1 2001/06/06 10:32:29 kleber * Init commit for DICOMscope 3.5 * Create new CVS * */ dicomscope-3.6.0/tkgui/browser/SendToDlg.java0000644000265600020320000001772111262371077020303 0ustar tilleaadmin/* * * Copyright (C) 1999, Institute for MicroTherapy * * This software and supporting documentation were developed by * * University of Witten/Herdecke * Department of Radiology and MicroTherapy * Institute for MicroTherapy * Medical computer science * * Universitaetsstrasse 142 * 44799 Bochum, Germany * * http://www.microtherapy.de/go/cs * mailto:computer.science@microtherapy.de * * THIS SOFTWARE IS MADE AVAILABLE, AS IS, AND THE INSTITUTE MAKES NO * WARRANTY REGARDING THE SOFTWARE, ITS PERFORMANCE, ITS MERCHANTABILITY * OR FITNESS FOR ANY PARTICULAR USE, FREEDOM FROM ANY COMPUTER DISEASES * OR ITS CONFORMITY TO ANY SPECIFICATION. THE ENTIRE RISK AS TO QUALITY * AND PERFORMANCE OF THE SOFTWARE IS WITH THE USER. * * Author : $Author: kleber $ * Last update : $Date: 2001/06/06 10:32:29 $ * Revision : $Revision: 1.1.1.1 $ * State: $State: Exp $ */ package browser; /* A basic extension of the java.awt.Dialog class */ import java.awt.*; import java.awt.event.*; import javax.swing.*; import J2Ci.*; import jToolkit.gui.*; import main.MainContext; /** * Opens a Send-To-Dialog for sending IODs, series and studies to another DICOM-application. * After choosing a target and clicking on OK the targetID is returned in selectedItem. * Element okClicked indicates whether the SendTo-Button is clicked or not. * * @author Andreas Schroeter * @since 30.04.1999 */ public class SendToDlg extends JDialog { JList list; /** * Indicated whether the SentTo button was clicked to close the dialog frame. */ public boolean okClicked = false; /** * Contains a targetID after dialog closing (if OK-Button is clicked). */ public String selectedItem = null; private jDVInterface dvi; JFrame parent; boolean highQualityScreen = false; public SendToDlg(JFrame parent, jDVInterface dvi) { super(parent); this.parent = parent; // This code is automatically generated by Visual Cafe when you add // components to the visual environment. It instantiates and initializes // the components. To modify the code, only use code syntax that matches // what Visual Cafe can generate, or Visual Cafe may be unable to back // parse your Java file into its visual environment. //{{INIT_CONTROLS getContentPane().setLayout(new BorderLayout (5, 5)); setVisible(false); setLocation (300, 200); //}} setModal (true); setTitle("Send IOD to..."); //{{REGISTER_LISTENERS SymWindow aSymWindow = new SymWindow(); this.addWindowListener(aSymWindow); //}} this.dvi = dvi; DefaultListModel lm = new DefaultListModel(); list = new JList (lm); getContentPane().add("Center", new JScrollPane(list)); JPanel p = new JPanel (); p.setBackground(java.awt.Color.lightGray); sendBt.setText("Send to"); p.add(sendBt); infoBt.setText("Details..."); p.add(infoBt); cancelBt.setText("Cancel"); p.add(cancelBt); getContentPane().add ("South", p); LoadAll (); SymAction lSymAction = new SymAction(); infoBt.addActionListener(lSymAction); sendBt.addActionListener(lSymAction); cancelBt.addActionListener(lSymAction); infoBt.addKeyListener(lSymAction); sendBt.addKeyListener(lSymAction); cancelBt.addKeyListener(lSymAction); cancelBt.grabFocus(); pack(); } /** * Shows or hides the component depending on the boolean flag b. * @param b if true, show the component; otherwise, hide the component. * @see java.awt.Component#isVisible */ public void setVisible(boolean b) { if(b) { Rectangle bounds = getParent().getBounds(); Rectangle abounds = getBounds(); setLocation(bounds.x + (bounds.width - abounds.width)/ 2, bounds.y + (bounds.height - abounds.height)/2); } super.setVisible(b); } //{{DECLARE_CONTROLS JButton sendBt = new JButton (); JButton cancelBt = new JButton (); JButton infoBt = new JButton (); //}} class SymWindow extends java.awt.event.WindowAdapter { public void windowClosing(java.awt.event.WindowEvent event) { Object object = event.getSource(); if (object == SendToDlg.this) SendToDlg_WindowClosing(event); } } void SendToDlg_WindowClosing(java.awt.event.WindowEvent event) { setVisible(false); } class SymAction extends KeyAdapter implements java.awt.event.ActionListener { public void actionPerformed(java.awt.event.ActionEvent event) { handle( event.getSource()); } public void keyPressed(KeyEvent e) { if (e.getKeyCode() == KeyEvent.VK_ENTER) handle(e.getSource()); } private void handle(Object source) { if (source == infoBt) OnDetails (); if (source == sendBt) OnSend (); if (source == cancelBt) SendToDlg_WindowClosing (null); } } protected void LoadAll() { DefaultListModel lm = (DefaultListModel) list.getModel(); int nrOfTargets = dvi.getNumberOfTargets(jDVPSPeerType.DVPSE_storage); for (int i = 0; i < nrOfTargets; i++) { String tid = dvi.getTargetID(i,jDVPSPeerType.DVPSE_storage); lm.addElement (dvi.getTargetDescription(tid)); } } protected void OnSend() { DefaultListModel lm = (DefaultListModel) list.getModel(); int si = list.getSelectedIndex(); if (si == -1) return; okClicked = true; selectedItem = dvi.getTargetID(si,jDVPSPeerType.DVPSE_storage); SendToDlg_WindowClosing (null); } public void OnDetails () { int si = list.getSelectedIndex(); if (si == -1) return; JDialog detailDlg = new JDialog (this, "Details", true); detailDlg.getContentPane().setLayout (new BorderLayout (5, 5)); JTextArea info = new JTextArea(); info.setTabSize(15); info.setEditable(false); CommandJButton okBt = new CommandJButton (new DisposeCommand(detailDlg), 0); okBt.setText(" Ok "); okBt.setBackground(java.awt.Color.lightGray); JPanel p = new JPanel (); p.add (okBt); String tid = dvi.getTargetID(si,jDVPSPeerType.DVPSE_storage); String desc, hostn, aet; info.append("Description:\t" + dvi.getTargetDescription(tid)); info.append("\nID:\t" + tid); info.append("\nHostname:\t" + dvi.getTargetHostname(tid)); info.append("\nPort:\t" + dvi.getTargetPort(tid)); info.append("\nAE Title:\t" + dvi.getTargetAETitle(tid)); info.append("\nMax. PDU:\t" + dvi.getTargetMaxPDU(tid)); info.append("\nImplicit Only:\t" + dvi.getTargetImplicitOnly(tid) ); info.append("\nDisable new VRs:\t" + dvi.getTargetDisableNewVRs(tid)); info.append("\nUse TLS:\t" + (dvi.getTargetUseTLS(tid) ? "yes" : "no")); info.append("\nBit Preserving Mode:\t" + (dvi.getTargetBitPreservingMode(tid))); int peerAuthentication = dvi.getTargetPeerAuthentication(tid); String peerAuthenticationDescription = ""; if (peerAuthentication == 0)peerAuthenticationDescription = "Verify peer certificate, refuse transmission if absent"; if (peerAuthentication == 1)peerAuthenticationDescription = "Verify peer certificate if present"; if (peerAuthentication == 2)peerAuthenticationDescription = "Don't verify peer certificate"; info.append("\nPeer Authentication:\t" + peerAuthenticationDescription); int numberOfCipherSuites = dvi.getTargetNumberOfCipherSuites(tid); if (numberOfCipherSuites> 0) { info.append("\nCipher Suites"); for (int i = 0; i < numberOfCipherSuites; i++) info.append("\n NR: " + i +"\t" + dvi.getTargetCipherSuite(tid, i)); } detailDlg.getContentPane().add ("South", p); detailDlg.getContentPane().add ("Center", new JScrollPane(info)); detailDlg.pack(); detailDlg.setLocationRelativeTo(this); detailDlg.show(); } } /* * CVS Log * $Log: SendToDlg.java,v $ * Revision 1.1.1.1 2001/06/06 10:32:29 kleber * Init commit for DICOMscope 3.5 * Create new CVS * */ dicomscope-3.6.0/tkgui/browser/StudyMan.java0000644000265600020320000023116411262371077020223 0ustar tilleaadmin/* * * Copyright (C) 1999, Institute for MicroTherapy * * This software and supporting documentation were developed by * * University of Witten/Herdecke * Department of Radiology and MicroTherapy * Institute for MicroTherapy * Medical computer science * * Universitaetsstrasse 142 * 44799 Bochum, Germany * * http://www.microtherapy.de/go/cs * mailto:computer.science@microtherapy.de * * THIS SOFTWARE IS MADE AVAILABLE, AS IS, AND THE INSTITUTE MAKES NO * WARRANTY REGARDING THE SOFTWARE, ITS PERFORMANCE, ITS MERCHANTABILITY * OR FITNESS FOR ANY PARTICULAR USE, FREEDOM FROM ANY COMPUTER DISEASES * OR ITS CONFORMITY TO ANY SPECIFICATION. THE ENTIRE RISK AS TO QUALITY * AND PERFORMANCE OF THE SOFTWARE IS WITH THE USER. * * Author : $Author: kleber $ * Last update : $Date: 2003/09/08 09:00:23 $ * Revision : $Revision: 1.2 $ * State: $State: Exp $ */ package browser; import java.awt.*; import java.awt.event.*; import java.io.*; import java.util.*; import javax.swing.border.*; import javax.swing.*; import javax.swing.tree.*; import J2Ci.*; import dicomscope.*; import viewer.main.*; import jToolkit.gui.*; import main.*; /** * This class contains the study browser. * A tree shows the study/series/instance * information hierarchically. * * @author Andreas Schroeter * @since 30.04.1999 */ public class StudyMan extends JPanel implements MainListener { /** * The Interface class */ private jDVInterface dvi; /** * The main tree containing all data */ private JTree tree; /** * Root element of the tree */ private DefaultMutableTreeNode root; /** * Instance of the Frame class */ private DICOMscope parent; /** * Thread to update the tree after recieving instances */ private UpdateThread ut; /** * Folder where an image was loaded from */ private File oldLoadFileDir = null; //private String fileN; private boolean warnUnsignedSrDouments = false; /** * Constructor. * @param dvi Interface to the DICOMtoolkit * @param parent DICOMscope frame * @param config Configuation of the StudyMan * @since 30.03 */ public StudyMan(jDVInterface dvi, DICOMscope parent,Hashtable config) { super(); this.dvi = dvi; this.parent = parent; Controller.instance().addMainListener(this); setLayout(new BorderLayout(5,5)); //init Tree root = new DefaultMutableTreeNode (new TreeElement ("All Studies")); tree = new JTree (root); tree.setRootVisible(true); tree.setShowsRootHandles(true); tree.getSelectionModel().setSelectionMode (TreeSelectionModel.DISCONTIGUOUS_TREE_SELECTION); tree.putClientProperty("JTree.lineStyle", "Angled"); // Linien zwischen Knoten tree.setCellRenderer(new MyTreeCellRenderer()); //Init MouseListener MouseListener ml = new MouseAdapter() // load Image on double-click! { public void mouseClicked(MouseEvent e) { int selRow = tree.getRowForLocation(e.getX(), e.getY()); TreePath selPath = tree.getPathForLocation(e.getX(), e.getY()); if(selRow != -1) { if(e.getClickCount() == 2) { DefaultMutableTreeNode dm = (DefaultMutableTreeNode) selPath.getLastPathComponent(); if (dm.isLeaf())onLoad (); } } } }; tree.addMouseListener(ml); add("Center", new JScrollPane(tree)); loadAll(); setConfiguaration (config, true); dvi.newInstancesReceived(); tree.expandRow (0); } /** * If the tree has changed this functions updates the tree. * @since 30.03 */ private synchronized void treeChanged () { DefaultTreeModel treemodel = (DefaultTreeModel) tree.getModel(); int n = tree.getRowCount(); for (int i = 0; i < n; i++) { TreePath tp = tree.getPathForRow(i); DefaultMutableTreeNode dm = (DefaultMutableTreeNode) tp.getLastPathComponent(); treemodel.nodeChanged(dm); } } /** * Rereshs the TreeElements from dvi and updates the tree * @since 30.03.99 */ synchronized void refreshTree () { String studyUID; String seriesUID; String instanceUID; //TreeElemt TreeElement helpTreeElement= null; //Default DefaultMutableTreeNode studyNode = null; DefaultMutableTreeNode seriesNode = null; DefaultMutableTreeNode instanceNode = null; boolean hasStudyNode = false; boolean hasSeriesNode = false; boolean hasInstanceNode = false; //Treemodel init DefaultTreeModel treemodel = (DefaultTreeModel) tree.getModel(); int nrOfStudies = dvi.getNumberOfStudies (); //For all Studies for (int st = 0; st < nrOfStudies; st++) { int status = dvi.selectStudy (st); if (status != jE_Condition.EC_Normal)continue; //if the tree should not be reloaded and if the study contains no new object //this study must not updated. int stStatus = dvi.getStudyStatus(); studyUID = dvi.getStudyUID(); // Search in the tree for the Study int cc = root.getChildCount (); hasStudyNode = false; for (int i = 0; i < cc; i++) { studyNode = (DefaultMutableTreeNode) root.getChildAt (i); helpTreeElement = (TreeElement) studyNode.getUserObject(); if (helpTreeElement.studyUID.equals (studyUID)) { helpTreeElement.setStatus(stStatus); treemodel.nodeChanged(studyNode); hasStudyNode = true; break; } } if (!hasStudyNode) { //Build treeElement for Study String dateTimeTest = dvi.getStudyDate (); if (dateTimeTest == null) dateTimeTest = toReadableTime(dvi.getStudyTime()); else if (toReadableTime(dvi.getStudyTime()) != null) dateTimeTest = dateTimeTest + ", " + toReadableTime(dvi.getStudyTime()); String patientInfo; patientInfo = dvi.getPatientName(); if (toReadableDate(dvi.getPatientBirthDate()) != null) patientInfo = patientInfo+ ", " + toReadableDate(dvi.getPatientBirthDate()); studyNode = new DefaultMutableTreeNode(); studyNode.setUserObject( new TreeElement ("Study", dvi.getStudyUID(), null, dvi.getStudyDescription(), patientInfo, dateTimeTest, null, null, stStatus)); root.add(studyNode); } // --- //For all Series int nrOfSeries = dvi.getNumberOfSeries (); for ( int se = 0; se < nrOfSeries; se++) { status= dvi.selectSeries (se); if (status != jE_Condition.EC_Normal)continue; //if the tree should not be reloaded and if the series contains no new object //this instance must not updated. int seStatus = dvi.getSeriesStatus(); seriesUID = dvi.getSeriesUID(); //BuildTreeElement // --- hasSeriesNode = false; // Search in the tree for the Series cc = studyNode.getChildCount (); for (int i = 0; i < cc; i++) { seriesNode = (DefaultMutableTreeNode) studyNode.getChildAt (i); helpTreeElement = (TreeElement) seriesNode.getUserObject(); if (helpTreeElement.seriesUID.equals (seriesUID)) { helpTreeElement.setStatus(seStatus); treemodel.nodeChanged(seriesNode); hasSeriesNode= true; break; } } if (!hasSeriesNode) { String dateTimeTese = toReadableDate(dvi.getSeriesDate()); if (dateTimeTese == null) dateTimeTese = toReadableTime(dvi.getSeriesTime()); else if (toReadableTime(dvi.getSeriesTime()) != null) dateTimeTese = dateTimeTese + ", " + toReadableTime(dvi.getSeriesTime()); seriesNode = new DefaultMutableTreeNode(); seriesNode.setUserObject( new TreeElement ("Series", dvi.getStudyUID(), dvi.getSeriesUID(), dvi.getModality(), dvi.getSeriesDescription(), null, dateTimeTese, null, null, seStatus)); studyNode.add (seriesNode); } // for all Instances int nrOfInstances = dvi.getNumberOfInstances (); for (int in = 0; in < nrOfInstances; in++) { status = dvi.selectInstance (in); if (status != jE_Condition.EC_Normal)continue; int instStatus = dvi.getInstanceStatus(); instanceUID = dvi.getInstanceUID(); // Search in the tree for the Instance hasInstanceNode = false; cc = seriesNode.getChildCount (); for (int i = 0; i < cc; i++) { instanceNode = (DefaultMutableTreeNode) seriesNode.getChildAt (i); helpTreeElement = (TreeElement) instanceNode.getUserObject(); if (helpTreeElement.instanceUID.equals (instanceUID)) { helpTreeElement.setStatus(instStatus); treemodel.nodeChanged(instanceNode); hasInstanceNode = true; break; } } if (!hasInstanceNode) { //Build TreeElement instanceNode = new DefaultMutableTreeNode (); instanceNode.setUserObject(new TreeElement (null, dvi.getSeriesType(), dvi.getStudyUID(), dvi.getSeriesUID(), dvi.getInstanceUID(), dvi.getModality(), dvi.getInstanceDescription(), null, null, dvi.getFilename(studyUID, seriesUID, instanceUID), dvi.getPresentationLabel(), instStatus)); seriesNode.add (instanceNode); if (hasSeriesNode) treemodel.reload(seriesNode); else if (hasStudyNode) { hasSeriesNode = true; treemodel.reload(studyNode); } else { hasStudyNode = true; hasSeriesNode =true; treemodel.reload(root); } } } } } dvi.releaseDatabase(); } /** * Loads the TreeElements from dvi and creates the tree * @since 30.03.99 */ synchronized void loadAll () { //number of studies, series, instances int nrOfStudies, nrOfSeries, nrOfInstances; //TreeElemt TreeElement teSt, teSe, teInst; //Default DefaultMutableTreeNode currStudyNode; DefaultMutableTreeNode currSeriesNode; DefaultMutableTreeNode currInstanceNode; //Treemodel init DefaultTreeModel treemodel = (DefaultTreeModel) tree.getModel(); root.removeAllChildren(); nrOfStudies = dvi.getNumberOfStudies (); //For all Studies for (int st = 0; st < nrOfStudies; st++) { int status = dvi.selectStudy (st); if (status != jE_Condition.EC_Normal) { dvi.writeLogMessage(jDVPSLogMessageLevel.DVPSM_warning,"GUI-Browser","Select study with index: " +st + " results in status: " + status); continue; } int percent = (((st+1) * 100) / nrOfStudies); Controller.instance().fireStatus(new StatusLineEvent(this,StatusLineEvent.SET_DES,DSComponentType.BROWSER,("Loading " + percent + "%"))); //Build treeElement for Study String dateTimeTest = dvi.getStudyDate (); if (dateTimeTest == null) dateTimeTest = toReadableTime(dvi.getStudyTime()); else if (toReadableTime(dvi.getStudyTime()) != null) dateTimeTest = dateTimeTest + ", " + toReadableTime(dvi.getStudyTime()); String patientInfo; patientInfo = dvi.getPatientName(); if (toReadableDate(dvi.getPatientBirthDate()) != null) patientInfo = patientInfo+ ", " + toReadableDate(dvi.getPatientBirthDate()); teSt = new TreeElement ("Study", dvi.getStudyUID(), null, dvi.getStudyDescription(), patientInfo, dateTimeTest, null, null, dvi.getStudyStatus()); currStudyNode = new DefaultMutableTreeNode (teSt); //For all Series nrOfSeries = dvi.getNumberOfSeries (); for ( int se = 0; se < nrOfSeries; se++) { status= dvi.selectSeries (se); if (status != jE_Condition.EC_Normal) { dvi.writeLogMessage(jDVPSLogMessageLevel.DVPSM_warning,"GUI-Browser","Select series with index: " +se + " results in status: " + status); continue; } //if the tree should not be reloaded and if the series contains no new object //this instance must not updated. int seStatus = dvi.getSeriesStatus(); //BuildTreeElement String dateTimeTese = toReadableDate(dvi.getSeriesDate()); if (dateTimeTese == null) dateTimeTese = toReadableTime(dvi.getSeriesTime()); else if (toReadableTime(dvi.getSeriesTime()) != null) dateTimeTese = dateTimeTese + ", " + toReadableTime(dvi.getSeriesTime()); teSe = new TreeElement ("Series", dvi.getStudyUID(), dvi.getSeriesUID(), null, dvi.getSeriesDescription(), null, dateTimeTese, null, null, seStatus); currSeriesNode = new DefaultMutableTreeNode (teSe); currStudyNode.add(currSeriesNode); // for all Instances nrOfInstances = dvi.getNumberOfInstances (); for (int in = 0; in < nrOfInstances; in++) { status = dvi.selectInstance (in); if (status != jE_Condition.EC_Normal) continue; //if the tree should not be reloaded and if the series contains no new object //this instance must not updated. int instStatus = dvi.getInstanceStatus(); //Modality for the series teSe.modality = dvi.getModality(); //Build TreeElement teInst = new TreeElement (null, dvi.getSeriesType(), dvi.getStudyUID(), dvi.getSeriesUID(), dvi.getInstanceUID(), dvi.getModality(), dvi.getInstanceDescription(), null, null, dvi.getFilename(teSt.studyUID, teSe.seriesUID, dvi.getInstanceUID()), dvi.getPresentationLabel(), instStatus); currInstanceNode = new DefaultMutableTreeNode (teInst); currSeriesNode.add(currInstanceNode); } } treemodel.insertNodeInto(currStudyNode, root, root.getChildCount()); } treemodel.reload(); dvi.releaseDatabase(); } /** * Called if the load-file button was clicked. * A File-Open-Dialog wil appear and * ask for a filename. The image will be loaded. * @since 30.03 */ private synchronized void onLoadFile () { //Load Dicom File JFileChooser openDlg = new JFileChooser (); openDlg.setDialogTitle( "Open DICOM File"); //Opens the Dialog if (oldLoadFileDir != null) openDlg.setCurrentDirectory (oldLoadFileDir); openDlg.showOpenDialog(null); oldLoadFileDir = openDlg.getCurrentDirectory(); if (openDlg.getSelectedFile() == null) return; String filename = openDlg.getSelectedFile().getPath(); int status = dvi.loadImage (filename); if (status != jE_Condition.EC_Normal) { dvi.writeLogMessage(jDVPSLogMessageLevel.DVPSM_warning,"GUI-Browser","Load of image failed: " + filename+ " result in status: " + status); Controller.instance().fireStatus(new StatusLineEvent(this,StatusLineEvent.SET_DES,DSComponentType.BROWSER,"Load Failed.")); (Toolkit.getDefaultToolkit()).beep(); setCursor (new Cursor (Cursor.DEFAULT_CURSOR)); return; } Controller.instance().fireEvent(new ImageActionEvent(this, ImageActionEvent.ACTION_SETNEWIMAGE, getNumberOfImages(dvi), getNumberOfFrames(dvi))); parent.switchToViewer(); setCursor (new Cursor (Cursor.DEFAULT_CURSOR)); Controller.instance().fireStatus(new SignedStatusEvent(this, SignedStatusEvent.LOADIMAGE, dvi.getCurrentSignatureStatus(jDVPSObjectType.DVPSS_image), dvi.getCurrentSignatureStatus(jDVPSObjectType.DVPSS_structuredReport))); } /** * Called if the load-file button was clicked. * A File-Open-Dialog wil appear and * ask for a filename. The image will be loaded. * @since 30.03 */ private synchronized void onLoadSRFile () { //Load Dicom File JFileChooser openDlg = new JFileChooser (); openDlg.setDialogTitle( "Open Structured Report File"); //Opens the Dialog if (oldLoadFileDir != null) openDlg.setCurrentDirectory (oldLoadFileDir); openDlg.showOpenDialog(null); oldLoadFileDir = openDlg.getCurrentDirectory(); if (openDlg.getSelectedFile() == null) return; String filename = openDlg.getSelectedFile().getPath(); int status = dvi.loadStructuredReport (filename); if (status != jE_Condition.EC_Normal) { dvi.writeLogMessage(jDVPSLogMessageLevel.DVPSM_warning,"GUI-Browser","Load of SR failed: " + filename+ " result in status: " + status); Controller.instance().fireStatus(new StatusLineEvent(this,StatusLineEvent.SET_DES,DSComponentType.BROWSER,"Load Failed.")); (Toolkit.getDefaultToolkit()).beep(); setCursor (new Cursor (Cursor.DEFAULT_CURSOR)); return; } dvi.disableImageAndPState(); Controller.instance().fireEvent(new ImageActionEvent(this,ImageActionEvent.ACTION_SETNEW_SR,null,null)); setCursor (new Cursor (Cursor.DEFAULT_CURSOR)); Controller.instance().fireStatus(new SignedStatusEvent(this, SignedStatusEvent.LOADSR, dvi.getCombinedImagePStateSignatureStatus(), dvi.getCurrentSignatureStatus(jDVPSObjectType.DVPSS_structuredReport))); parent.switchToViewer(); setCursor (new Cursor (Cursor.DEFAULT_CURSOR)); Controller.instance().fireStatus(new StatusLineEvent(this,StatusLineEvent.SET_DES,DSComponentType.BROWSER,"Ready.")); } /** * Loads a presentation state from file * @since 30.03 */ private synchronized void onLoadPSFile () { setCursor (new Cursor (Cursor.WAIT_CURSOR)); //Load Dicom File JFileChooser openDlg = new JFileChooser (); if (oldLoadFileDir != null) openDlg.setCurrentDirectory (oldLoadFileDir); openDlg.setDialogTitle ("Open Presentation State"); openDlg.showOpenDialog(null); oldLoadFileDir = openDlg.getCurrentDirectory(); String presstate = null; if (openDlg.getSelectedFile() == null) { setCursor (new Cursor (Cursor.DEFAULT_CURSOR)); return; } presstate = openDlg.getSelectedFile().getPath(); int status = dvi.loadPState (presstate); if (status != jE_Condition.EC_Normal) { dvi.writeLogMessage(jDVPSLogMessageLevel.DVPSM_warning,"GUI-Browser","Load of Presentation State failed: " + presstate+ " result in status: " + status); Controller.instance().fireStatus(new StatusLineEvent(this,StatusLineEvent.SET_DES,DSComponentType.BROWSER,"Load Failed.")); (Toolkit.getDefaultToolkit()).beep(); setCursor (new Cursor (Cursor.DEFAULT_CURSOR)); return; } Controller.instance().fireEvent(new ImageActionEvent(this, ImageActionEvent.ACTION_SETNEWIMAGE, getNumberOfImages(dvi), getNumberOfFrames(dvi))); parent.switchToViewer(); setCursor (new Cursor (Cursor.DEFAULT_CURSOR)); Controller.instance().fireStatus(new SignedStatusEvent(this, SignedStatusEvent.LOADPS, dvi.getCombinedImagePStateSignatureStatus(), dvi.getCurrentSignatureStatus(jDVPSObjectType.DVPSS_structuredReport))); } /** * called after the load button was clicked. This method loads the selected instance * or presentation state. If an instance was selected that have at least one * presentation state, a dialog box will appear. In this box you may select a * presentation state or the default state. Then the viewer will be shown with * the loaded instance / presentation state. * * @since 30.03 */ public synchronized void onLoad() { DefaultTreeModel treemodel = (DefaultTreeModel) tree.getModel(); if (tree.isSelectionEmpty()) { Controller.instance().fireStatus(new StatusLineEvent(this,StatusLineEvent.SET_DES,DSComponentType.BROWSER,"Can't Load - No Selection!")); return; } TreePath[] tps = tree.getSelectionPaths(); String instanceUID=null ; int status = 0; boolean selectedFirstImage = false; boolean imagesLoaded = false; boolean loadSR = false; for (int i = 0; i < tps.length; i++) { DefaultMutableTreeNode dm = (DefaultMutableTreeNode) tps[i].getLastPathComponent(); if (!dm.isLeaf()) continue; TreeElement te = (TreeElement) dm.getUserObject(); Controller.instance().fireStatus(new StatusLineEvent(this,StatusLineEvent.SET_DES,DSComponentType.BROWSER,"Loading")); instanceUID = te.instanceUID; setCursor (new Cursor (Cursor.WAIT_CURSOR)); if (!te.isInstance()) continue; if (te.isST()) continue; if (te.isSR()) { if (i != 0) continue; status = dvi.selectInstance(te.studyUID, te.seriesUID, te.instanceUID); if (status != 0 ) System.err.println("Error while selecting instance: " + te.instanceUID + ", status: " + status); if (status == 0)status = dvi.loadStructuredReport(te.studyUID, te.seriesUID, te.instanceUID,true); if (status != 0) // Fehler { Controller.instance().fireStatus(new StatusLineEvent(this,StatusLineEvent.SET_DES,DSComponentType.BROWSER,"Load Failed.")); setCursor (new Cursor (Cursor.DEFAULT_CURSOR)); (Toolkit.getDefaultToolkit()).beep(); status = dvi.releaseDatabase(); return; } loadSR = true; break; } imagesLoaded = true; if (!te.isPS ()) { if (!selectedFirstImage) { if (tps.length == 1) { status = dvi.selectInstance(te.studyUID, te.seriesUID, te.instanceUID); if (status != jE_Condition.EC_Normal) { setCursor (new Cursor (Cursor.DEFAULT_CURSOR)); Controller.instance().fireStatus(new StatusLineEvent(this,StatusLineEvent.SET_DES,DSComponentType.BROWSER,"Loading failed")); return; } int nps = dvi.getNumberOfPStates(); if (nps == 0) { status = dvi.loadImage(te.studyUID, te.seriesUID, te.instanceUID,true); } else status = selectPState(te, te.instanceUID, te.seriesUID, te.studyUID); if (status != jE_Condition.EC_Normal) { setCursor (new Cursor (Cursor.DEFAULT_CURSOR)); Controller.instance().fireStatus(new StatusLineEvent(this,StatusLineEvent.SET_DES,DSComponentType.BROWSER,"Loading failed")); return; } } else { status = dvi.loadImage(te.studyUID, te.seriesUID, te.instanceUID,true); } selectedFirstImage = true; } else { status = dvi.addImageReferenceToPState(te.studyUID, te.seriesUID,te.instanceUID ); } if (status == -1) { setCursor (new Cursor (Cursor.DEFAULT_CURSOR)); return; } } else { if (i == 0) status = dvi.loadPState(te.studyUID, te.seriesUID, te.instanceUID,true); } if (status != 0) // Fehler { Controller.instance().fireStatus(new StatusLineEvent(this,StatusLineEvent.SET_DES,DSComponentType.BROWSER,"Load Failed.")); setCursor (new Cursor (Cursor.DEFAULT_CURSOR)); (Toolkit.getDefaultToolkit()).beep(); status = dvi.releaseDatabase(); return; } } dvi.saveCurrentPStateForReset(); status = dvi.releaseDatabase(); refreshTree(); if (loadSR) { dvi.disableImageAndPState(); Controller.instance().fireEvent(new ImageActionEvent(this,ImageActionEvent.ACTION_SETNEW_SR,null,instanceUID)); setCursor (new Cursor (Cursor.DEFAULT_CURSOR)); Controller.instance().fireStatus(new SignedStatusEvent(this, SignedStatusEvent.LOADSR, dvi.getCombinedImagePStateSignatureStatus(), dvi.getCurrentSignatureStatus(jDVPSObjectType.DVPSS_structuredReport))); parent.switchToViewer(); } else { parent.switchToViewer(); setCursor (new Cursor (Cursor.DEFAULT_CURSOR)); Controller.instance().fireEvent(new ImageActionEvent(this, ImageActionEvent.ACTION_SETNEWIMAGE, getNumberOfImages(dvi), getNumberOfFrames(dvi))); if (imagesLoaded) { Controller.instance().fireStatus(new SignedStatusEvent(this, SignedStatusEvent.LOADIMAGE, dvi.getCurrentSignatureStatus(jDVPSObjectType.DVPSS_image), dvi.getCurrentSignatureStatus(jDVPSObjectType.DVPSS_structuredReport))); } else { Controller.instance().fireStatus(new SignedStatusEvent(this, SignedStatusEvent.LOADIMAGE, dvi.getCombinedImagePStateSignatureStatus(), dvi.getCurrentSignatureStatus(jDVPSObjectType.DVPSS_structuredReport))); } } setCursor (new Cursor (Cursor.DEFAULT_CURSOR)); Controller.instance().fireStatus(new StatusLineEvent(this,StatusLineEvent.SET_DES,DSComponentType.BROWSER,"Ready.")); } /** * called after the load button was clicked. This method loads the selected image * with the specified presentation state. */ public synchronized void onLoadImageForSR( String sopClassUID, String sopInstanceUID, String psSOPClassUid, String psSOPInstanceUid, int[] frames) { //sopInstanceUID = "1.2.276.0.7230010.3.200.13.2.1"; /*sopClassUID = "1.2.840.10008.5.1.4.1.1.7"; System.err.println("Imnage SOP Class UID: " + sopClassUID); System.err.println("Image SOP Instance UID: " + sopInstanceUID); System.err.println("PS SOP Class UID: " + psSOPClassUid); System.err.println("PS SOP Instance UID: " + psSOPInstanceUid); */ DefaultTreeModel treemodel = (DefaultTreeModel) tree.getModel(); Controller.instance().fireStatus(new StatusLineEvent(this,StatusLineEvent.SET_DES,DSComponentType.BROWSER,"Loading Image / Presentation State")); setCursor (new Cursor (Cursor.WAIT_CURSOR)); int status = dvi.selectInstance(sopInstanceUID,sopClassUID); if (status != jE_Condition.EC_Normal) { System.err.println("Status: " + status); setCursor (new Cursor (Cursor.DEFAULT_CURSOR)); Controller.instance().fireStatus(new StatusLineEvent(this,StatusLineEvent.SET_DES,DSComponentType.BROWSER,"Loading failed, image maybe not in database")); (Toolkit.getDefaultToolkit()).beep(); status = dvi.releaseDatabase(); return; } //Load only the image if (psSOPInstanceUid == null) { status = dvi.loadImage(dvi.getStudyUID(), dvi.getSeriesUID(), dvi.getInstanceUID(),true); if (status != jE_Condition.EC_Normal) { System.err.println("Status: " + status); setCursor (new Cursor (Cursor.DEFAULT_CURSOR)); Controller.instance().fireStatus(new StatusLineEvent(this,StatusLineEvent.SET_DES,DSComponentType.BROWSER,"Loading failed")); (Toolkit.getDefaultToolkit()).beep(); status = dvi.releaseDatabase(); return; } } //Load the image and the presentation state else { String imageFileName = dvi.getFilename(); status = dvi.selectInstance(psSOPInstanceUid,psSOPClassUid); if (status != jE_Condition.EC_Normal) { System.err.println("Status: " + status); setCursor (new Cursor (Cursor.DEFAULT_CURSOR)); Controller.instance().fireStatus(new StatusLineEvent(this,StatusLineEvent.SET_DES,DSComponentType.BROWSER,"Loading failed, image maybe not in database")); (Toolkit.getDefaultToolkit()).beep(); status = dvi.releaseDatabase(); return; } String psFileName =dvi.getFilename(); status = dvi.loadPState(psFileName, imageFileName); if (status != jE_Condition.EC_Normal) { System.err.println("Status: " + status); setCursor (new Cursor (Cursor.DEFAULT_CURSOR)); Controller.instance().fireStatus(new StatusLineEvent(this,StatusLineEvent.SET_DES,DSComponentType.BROWSER,"Loading failed, image maybe not in database")); (Toolkit.getDefaultToolkit()).beep(); status = dvi.releaseDatabase(); return; } } status = dvi.releaseDatabase(); refreshTree(); Controller.instance().fireEvent(new ImageActionEvent(this, ImageActionEvent.ACTION_SETNEWIMAGE, getNumberOfImages(dvi), getNumberOfFrames(dvi))); setCursor (new Cursor (Cursor.DEFAULT_CURSOR)); Controller.instance().fireStatus(new SignedStatusEvent(this, SignedStatusEvent.LOADIMAGE, dvi.getCurrentSignatureStatus(jDVPSObjectType.DVPSS_image), dvi.getCurrentSignatureStatus(jDVPSObjectType.DVPSS_structuredReport))); if (warnUnsignedSrDouments) { if (dvi.getCurrentSignatureStatus(jDVPSObjectType.DVPSS_structuredReport) == jDVPSSignatureStatus.DVPSW_signed_OK || dvi.getCurrentSignatureStatus(jDVPSObjectType.DVPSS_structuredReport) == jDVPSSignatureStatus.DVPSW_signed_unknownCA ) { if (dvi.getCurrentSignatureStatus(jDVPSObjectType.DVPSS_image) == jDVPSSignatureStatus.DVPSW_unsigned) { JOptionPane.showMessageDialog ( this, "Report is signed, but image is not", "Warning", JOptionPane.WARNING_MESSAGE); } } } Controller.instance().fireStatus(new StatusLineEvent(this,StatusLineEvent.SET_DES,DSComponentType.BROWSER,"Ready.")); } /** * called after the load button was clicked. This method loads the selected instance * or presentation state. If an instance was selected that have at least one * presentation state, a dialog box will appear. In this box you may select a * presentation state or the default state. Then the viewer will be shown with * the loaded instance / presentation state. * * @since 30.03 */ public synchronized void onLoadPSForSR(String sopClassUID, String sopInstanceUID) { //sopInstanceUID = "1.2.276.0.7230010.3.200.13.0.2"; //sopClassUID = "1.2.840.10008.5.1.4.1.1.11.1"; //System.err.println("PS SOP Class UID: " + sopClassUID); //System.err.println("SOP Instance UID: " + sopInstanceUID); DefaultTreeModel treemodel = (DefaultTreeModel) tree.getModel(); Controller.instance().fireStatus(new StatusLineEvent(this,StatusLineEvent.SET_DES,DSComponentType.BROWSER,"Presentation State")); setCursor (new Cursor (Cursor.WAIT_CURSOR)); int status = dvi.selectInstance(sopInstanceUID,sopClassUID); if (status != jE_Condition.EC_Normal) { System.err.println("Status: " + status); setCursor (new Cursor (Cursor.DEFAULT_CURSOR)); Controller.instance().fireStatus(new StatusLineEvent(this,StatusLineEvent.SET_DES,DSComponentType.BROWSER,"Loading failed, ps maybe not in database")); (Toolkit.getDefaultToolkit()).beep(); status = dvi.releaseDatabase(); return; } status = dvi.loadPState(dvi.getStudyUID(), dvi.getSeriesUID(), dvi.getInstanceUID(),true); if (status != jE_Condition.EC_Normal) { setCursor (new Cursor (Cursor.DEFAULT_CURSOR)); Controller.instance().fireStatus(new StatusLineEvent(this,StatusLineEvent.SET_DES,DSComponentType.BROWSER,"Loading failed")); (Toolkit.getDefaultToolkit()).beep(); status = dvi.releaseDatabase(); return; } status = dvi.releaseDatabase(); refreshTree(); Controller.instance().fireEvent(new ImageActionEvent(this, ImageActionEvent.ACTION_SETNEWIMAGE, getNumberOfImages(dvi), getNumberOfFrames(dvi))); setCursor (new Cursor (Cursor.DEFAULT_CURSOR)); Controller.instance().fireStatus(new SignedStatusEvent(this, SignedStatusEvent.LOADPS, dvi.getCombinedImagePStateSignatureStatus(), dvi.getCurrentSignatureStatus(jDVPSObjectType.DVPSS_structuredReport))); //((parent.switchToViewer(); if (warnUnsignedSrDouments) { if (dvi.getCurrentSignatureStatus(jDVPSObjectType.DVPSS_structuredReport) == jDVPSSignatureStatus.DVPSW_signed_OK || dvi.getCurrentSignatureStatus(jDVPSObjectType.DVPSS_structuredReport) == jDVPSSignatureStatus.DVPSW_signed_unknownCA ) { if (dvi.getCurrentSignatureStatus(jDVPSObjectType.DVPSS_image) == jDVPSSignatureStatus.DVPSW_unsigned) { JOptionPane.showMessageDialog ( this, "Report is signed, but image is not", "Warning", JOptionPane.WARNING_MESSAGE); } if (dvi.getCurrentSignatureStatus(jDVPSObjectType.DVPSS_presentationState) == jDVPSSignatureStatus.DVPSW_unsigned) { JOptionPane.showMessageDialog ( this, "Report is signed, but Presentation State is not", "Warning", JOptionPane.WARNING_MESSAGE); } } } Controller.instance().fireStatus(new StatusLineEvent(this,StatusLineEvent.SET_DES,DSComponentType.BROWSER,"Ready.")); } /** * called after the load button was clicked. This method loads the selected instance * or presentation state. If an instance was selected that have at least one * presentation state, a dialog box will appear. In this box you may select a * presentation state or the default state. Then the viewer will be shown with * the loaded instance / presentation state. * * @since 30.03 */ public synchronized void onLoadSRForSR(String sopClassUID, String sopInstanceUID) { //System.err.println("SR For SR: " ); // System.err.println("SR SOP Class UID: " + sopClassUID); //System.err.println("SOP Instance UID: " + sopInstanceUID); DefaultTreeModel treemodel = (DefaultTreeModel) tree.getModel(); boolean signed = false; if (dvi.getCurrentSignatureStatus(jDVPSObjectType.DVPSS_structuredReport) == jDVPSSignatureStatus.DVPSW_signed_OK || dvi.getCurrentSignatureStatus(jDVPSObjectType.DVPSS_structuredReport) == jDVPSSignatureStatus.DVPSW_signed_unknownCA ) signed= true; Controller.instance().fireStatus(new StatusLineEvent(this,StatusLineEvent.SET_DES,DSComponentType.BROWSER,"Load Composite")); setCursor (new Cursor (Cursor.WAIT_CURSOR)); int status = dvi.selectInstance(sopInstanceUID,sopClassUID); if (status != jE_Condition.EC_Normal) { System.err.println("Status: " + status); setCursor (new Cursor (Cursor.DEFAULT_CURSOR)); Controller.instance().fireStatus(new StatusLineEvent(this,StatusLineEvent.SET_DES,DSComponentType.BROWSER,"Loading failed, SR maybe not in database")); (Toolkit.getDefaultToolkit()).beep(); status = dvi.releaseDatabase(); return; } status = dvi.selectInstance(sopInstanceUID,sopClassUID); if (status != jE_Condition.EC_Normal) { setCursor (new Cursor (Cursor.DEFAULT_CURSOR)); Controller.instance().fireStatus(new StatusLineEvent(this,StatusLineEvent.SET_DES,DSComponentType.BROWSER,"Loading failed, SR maybe not in database")); (Toolkit.getDefaultToolkit()).beep(); status = dvi.releaseDatabase(); return; } status = dvi.loadStructuredReport(dvi.getStudyUID(), dvi.getSeriesUID(), dvi.getInstanceUID(),true); if (status != jE_Condition.EC_Normal) { setCursor (new Cursor (Cursor.DEFAULT_CURSOR)); Controller.instance().fireStatus(new StatusLineEvent(this,StatusLineEvent.SET_DES,DSComponentType.BROWSER,"Loading failed")); (Toolkit.getDefaultToolkit()).beep(); status = dvi.releaseDatabase(); return; } status = dvi.releaseDatabase(); refreshTree(); dvi.disableImageAndPState(); Controller.instance().fireEvent(new ImageActionEvent(this,ImageActionEvent.ACTION_COMPOSITE_SR,sopClassUID, sopInstanceUID)); //((parent.switchToViewer(); setCursor (new Cursor (Cursor.DEFAULT_CURSOR)); Controller.instance().fireStatus(new SignedStatusEvent(this, SignedStatusEvent.LOADSR, dvi.getCombinedImagePStateSignatureStatus(), dvi.getCurrentSignatureStatus(jDVPSObjectType.DVPSS_structuredReport))); if (warnUnsignedSrDouments&&signed) { if (dvi.getCurrentSignatureStatus(jDVPSObjectType.DVPSS_structuredReport) != jDVPSSignatureStatus.DVPSW_signed_OK && dvi.getCurrentSignatureStatus(jDVPSObjectType.DVPSS_structuredReport) != jDVPSSignatureStatus.DVPSW_signed_unknownCA ) { JOptionPane.showMessageDialog ( this, "Current Report is signed, but referenced report is not", "Warning", JOptionPane.WARNING_MESSAGE); } } Controller.instance().fireStatus(new StatusLineEvent(this,StatusLineEvent.SET_DES,DSComponentType.BROWSER,"Ready.")); } /** * Sends the selected Stored Print Objects to a Printer */ public synchronized void onPrintStToPrinter() { DefaultTreeModel treemodel = (DefaultTreeModel) tree.getModel(); if (tree.isSelectionEmpty()) { Controller.instance().fireStatus(new StatusLineEvent(this,StatusLineEvent.SET_DES,DSComponentType.BROWSER,"Can't Print - No Selection!")); return; } TreePath[] tps = tree.getSelectionPaths(); int status = 0; boolean selectedFirstImage = false; for (int i = 0; i < tps.length; i++) { DefaultMutableTreeNode dm = (DefaultMutableTreeNode) tps[i].getLastPathComponent(); if (!dm.isLeaf()) continue; TreeElement te = (TreeElement) dm.getUserObject(); Controller.instance().fireStatus(new StatusLineEvent(this,StatusLineEvent.SET_DES,DSComponentType.BROWSER,"Printing Stored Print")); setCursor (new Cursor (Cursor.WAIT_CURSOR)); if (te.isST ()) { if (i == 0) { status = dvi.spoolStoredPrintFromDB(te.studyUID, te.seriesUID, te.instanceUID); } } else { Controller.instance().fireStatus(new StatusLineEvent(this,StatusLineEvent.SET_DES,DSComponentType.BROWSER,"Error: Please select only Stored Print Objects")); } if (status != 0) // Fehler { Controller.instance().fireStatus(new StatusLineEvent(this,StatusLineEvent.SET_DES,DSComponentType.BROWSER,"Print Failed.")); setCursor (new Cursor (Cursor.DEFAULT_CURSOR)); (Toolkit.getDefaultToolkit()).beep(); status = dvi.releaseDatabase(); return; } } status = dvi.releaseDatabase(); setCursor (new Cursor (Cursor.DEFAULT_CURSOR)); Controller.instance().fireStatus(new StatusLineEvent(this,StatusLineEvent.SET_DES,DSComponentType.BROWSER,"Ready.")); } /** * Adds the selected Objects to the current Print Job. A number of Hardcopy Images can be * Selected or one Stored Print Object */ private synchronized void onAddtoPrintJob() { DefaultTreeModel treemodel = (DefaultTreeModel) tree.getModel(); TreePath tp = tree.getLeadSelectionPath(); if (tp == null) { Controller.instance().fireStatus(new StatusLineEvent(this,StatusLineEvent.SET_DES,DSComponentType.BROWSER,"Can't Add to Print - No Selection!")); return; } DefaultMutableTreeNode dm = (DefaultMutableTreeNode) tp.getLastPathComponent(); TreeElement te= (TreeElement) dm.getUserObject(); if ((!te.isInstance())||(!te.isHC() && !te.isST())) { Controller.instance().fireStatus(new StatusLineEvent(this,StatusLineEvent.SET_DES,DSComponentType.BROWSER,"Error: Add only Hardcopy Images or Stored Print Objects to Print Job")); return ; } if (te.isST()) { int respond = JOptionPane.showConfirmDialog(parent,"Replace current Print Job?","Load Stored Print Object", JOptionPane.OK_CANCEL_OPTION, JOptionPane.WARNING_MESSAGE ); if (respond!=JOptionPane.YES_OPTION) return; } Controller.instance().fireStatus(new StatusLineEvent(this,StatusLineEvent.SET_DES,DSComponentType.BROWSER,"Add to Print")); int status; setCursor (new Cursor (Cursor.WAIT_CURSOR)); if (te.isHC()) { status = dvi.addToPrintHardcopyFromDB(te.studyUID, te.seriesUID, te.instanceUID); dvi.instanceReviewed(te.studyUID, te.seriesUID, te.instanceUID); } else { status = dvi.loadStoredPrint(te.studyUID, te.seriesUID, te.instanceUID,true); } if (status != 0) // Fehler { Controller.instance().fireStatus(new StatusLineEvent(this,StatusLineEvent.SET_DES,DSComponentType.BROWSER,"Load Failed.")); (Toolkit.getDefaultToolkit()).beep(); setCursor (new Cursor (Cursor.DEFAULT_CURSOR)); status = dvi.releaseDatabase(); refreshTree(); return; } status = dvi.releaseDatabase(); refreshTree(); if (te.isHC())Controller.instance().firePrint(new PrintEvent(this,PrintEvent.ID_HC)); else { Controller.instance().firePrint(new PrintEvent(this,PrintEvent.ID_ST)); parent.switchToPrinter(); } setCursor (new Cursor (Cursor.DEFAULT_CURSOR)); Controller.instance().fireStatus(new StatusLineEvent(this,StatusLineEvent.SET_DES,DSComponentType.BROWSER,"Ready")); } /** * Sends the selected Objects with the DICOM C-Store * @since 30.03 */ public void onSend() { // Dialog SendToDlg sdlg = new SendToDlg (parent, dvi); sdlg.show(); if (!sdlg.okClicked) return; if (tree.isSelectionEmpty()) return; DefaultTreeModel treemodel= (DefaultTreeModel) tree.getModel(); String lastSendedSeriesUid =""; String lastSendedStudyUid = ""; while (true) { if (tree.isSelectionEmpty()) return; TreePath tps = tree.getPathForRow(tree.getMinSelectionRow()); DefaultMutableTreeNode dm = (DefaultMutableTreeNode) tps.getLastPathComponent(); MutableTreeNode parent = (MutableTreeNode) dm.getParent(); if (parent == null) return; // root element ? -> abort TreeElement te = (TreeElement)dm.getUserObject(); Controller.instance().fireStatus(new StatusLineEvent(this,StatusLineEvent.SET_DES,DSComponentType.BROWSER,"Network - Sending IOD")); if (te.studyUID != null && te.seriesUID == null) { Controller.instance().fireStatus(new StatusLineEvent(this,StatusLineEvent.SET_DES,DSComponentType.BROWSER,"Network - Sending Study IOD: "+ te.toString())); dvi.sendStudy (sdlg.selectedItem, te.studyUID); lastSendedStudyUid = te.studyUID; } else if (te.instanceUID == null) { if (!lastSendedStudyUid.equals(te.studyUID)) { Controller.instance().fireStatus(new StatusLineEvent(this,StatusLineEvent.SET_DES,DSComponentType.BROWSER,"Network - Sending Series IOD: "+ te.toString())); dvi.sendSeries (sdlg.selectedItem, te.studyUID, te.seriesUID); lastSendedSeriesUid = te.seriesUID; } } else if (te.instanceUID != null) { if ((!lastSendedStudyUid.equals(te.studyUID))&&(!lastSendedSeriesUid.equals( te.seriesUID))) { Controller.instance().fireStatus(new StatusLineEvent(this,StatusLineEvent.SET_DES,DSComponentType.BROWSER,"Network - Sending Instance IOD: "+ te.toString())); dvi.sendIOD (sdlg.selectedItem, te.studyUID, te.seriesUID, te.instanceUID); } } tree.removeSelectionRow(tree.getMinSelectionRow()); } } /** * Called after the Dump button was clicked. A list box will appear to select the * destination workstation to send the selected study/series/instance/presentation * state to. Details can be requested with the Detail button. * @since 30.03 */ public void onDump() { if (tree.isSelectionEmpty() ) return ; TreePath tp = tree.getLeadSelectionPath(); DefaultMutableTreeNode dm = (DefaultMutableTreeNode) tp.getLastPathComponent(); TreeElement te= (TreeElement) dm.getUserObject(); if (te.isInstance())dvi.dumpIOD(te.studyUID, te.seriesUID, te.instanceUID); } /** * Checks the Selected Instance */ public void onCheckIOD() { if (tree.isSelectionEmpty() ) return ; TreePath tp = tree.getLeadSelectionPath(); DefaultMutableTreeNode dm = (DefaultMutableTreeNode) tp.getLastPathComponent(); TreeElement te= (TreeElement) dm.getUserObject(); if (te.isInstance())dvi.checkIOD(te.studyUID, te.seriesUID, te.instanceUID); } /** * Delete the selected TreeElements. * @since 30.03 */ public synchronized void onDelete() { TreePath[] tps = tree.getSelectionPaths(); if ((tps == null)||(tps.length == 0)) return; TreeElement te; //TreePath tp = tree.getLeadSelectionPath(); DefaultTreeModel treemodel= (DefaultTreeModel) tree.getModel(); if ( tree.getMinSelectionRow()== 0) { int respond = JOptionPane.showConfirmDialog(parent,"Do you really want to delete all studies?","Delete Objects", JOptionPane.OK_OPTION, JOptionPane.WARNING_MESSAGE ); if (respond==JOptionPane.NO_OPTION) return; root.removeAllChildren(); treemodel.reload(); // delete all from the database... String studyUID; while (dvi.getNumberOfStudies() > 0) { dvi.selectStudy(0); studyUID = dvi.getStudyUID(); dvi.deleteStudy(studyUID); } return; } int respond = JOptionPane.showConfirmDialog(parent,"Are you sure?","Delete Objects", JOptionPane.OK_OPTION, JOptionPane.WARNING_MESSAGE ); if (respond==JOptionPane.NO_OPTION) return; String lastSendedSeriesUid =null; String lastSendedStudyUid = null; TreeElement oldElement = null; while (true) { if (tree.isSelectionEmpty()) break; TreePath tp = tree.getPathForRow(tree.getMinSelectionRow()); DefaultMutableTreeNode dm = (DefaultMutableTreeNode) tp.getLastPathComponent(); MutableTreeNode parent = (MutableTreeNode) dm.getParent(); te = (TreeElement)dm.getUserObject(); if (te.isInstance()) { dvi.deleteInstance(te.studyUID, te.seriesUID, te.instanceUID); DefaultMutableTreeNode dmse = (DefaultMutableTreeNode) dm.getParent(); if (dmse == null) continue; DefaultMutableTreeNode dmst = (DefaultMutableTreeNode) dmse.getParent(); if (dmst == null) continue; treemodel.removeNodeFromParent(dm); TreeElement teSe = (TreeElement) dmse.getUserObject(); if (dmse.getChildCount() == 0) treemodel.removeNodeFromParent(dmse); else treemodel.nodeChanged(dmse); if (dmst.getChildCount() == 0) treemodel.removeNodeFromParent(dmst); else treemodel.nodeChanged(dmst); } else if (te.isSeries()) { dvi.deleteSeries(te.studyUID, te.seriesUID); DefaultMutableTreeNode dmst = (DefaultMutableTreeNode) dm.getParent(); if (dmst == null) continue; treemodel.removeNodeFromParent(dm); if (dmst.getChildCount() == 0) treemodel.removeNodeFromParent(dmst); else treemodel.nodeChanged(dmst); } else { dvi.deleteStudy(te.studyUID); treemodel.removeNodeFromParent(dm); } } dvi.releaseDatabase(); refreshTree(); } /** * Corrects the given date (yyyymmdd) to a "readable" date (mm/dd/yyyy). * if the year is 2 digits long, the output will be "mm/dd/yy". * * @param ddate a date to correct * @return the corrected date * @since 30.03 */ protected String toReadableDate (String ddate) { if (ddate.length () == 8) // long format { return ddate.substring (4, 6) + "/" + ddate.substring (6, 8) + "/" + ddate.substring (0, 4); } else if (ddate.length () == 6) // short format { return ddate.substring (2, 4) + "/" + ddate.substring (4, 6) + "/" + ddate.substring (0, 2); } else return null; } /** * Corrects the given time (hhmmss) to a "readable" time (hh:mm). * * @param dtime a time to correct. * @return the corrected time * @since 30.03 */ protected String toReadableTime (String dtime) { if (dtime.length () == 6) // short format { return dtime.substring (0, 2) + ":" + dtime.substring (2, 4); } else return null; } /** * Starts the Thread * * @since 30.03 */ public void startThread() { ut = new UpdateThread (this, dvi); ut.start(); dvi.writeLogMessage(jDVPSLogMessageLevel.DVPSM_informational,"GUI","Started update Thread" ); } /** * Selects a PState for a loaded image. * @param te the selected Tree element * @param instanceUID the instance UID * @param seriesUID series UID * @param studyUID study UID * @since 30.03 */ public int selectPState(TreeElement te, String instanceUID, String seriesUID, String studyUID) { int status; JDialog selPStatDlg = new JDialog (parent, "Select Presentation State", true); DefaultListModel lm = new DefaultListModel(); JList info = new JList(lm); selPStatDlg.getContentPane().setLayout (new BorderLayout (5, 5)); selPStatDlg.setLocation (200, 150); DisposeCommand okDC, cancelDC; CommandJButton okBt = new CommandJButton (okDC = new DisposeCommand(selPStatDlg), 0); okBt.setText(" Ok "); okBt.setBackground(java.awt.Color.lightGray); JPanel p = new JPanel (); p.add (okBt); CommandJButton cancelBt = new CommandJButton (cancelDC = new DisposeCommand(selPStatDlg), 1); cancelBt.setText(" Cancel "); cancelBt.setBackground(java.awt.Color.lightGray); p.add (cancelBt); lm.addElement (""); status = dvi.selectInstance(te.studyUID,te.seriesUID,te.instanceUID); if (status != jE_Condition.EC_Normal) { Controller.instance().fireStatus(new StatusLineEvent(this,StatusLineEvent.SET_DES,DSComponentType.BROWSER,"PS Load Failed")); return 0; } int nps = dvi.getNumberOfPStates(); for (int i = 0; i < nps; i++) { String descr = dvi.getPStateDescription(i); String label = dvi.getPStateLabel(i); if (descr == null) descr = new String (""); else if (descr.length() == 0) descr = new String (""); if (label == null) label = new String (""); else if (label.length() == 0) label = new String (""); lm.addElement (label + " * " + descr); } info.setSelectedIndex(0); selPStatDlg.getContentPane().add ("South", p); selPStatDlg.getContentPane().add ("Center", new JScrollPane(info)); selPStatDlg.pack(); selPStatDlg.setVisible(true); if (cancelDC.wasClicked()) { setCursor (new Cursor (Cursor.DEFAULT_CURSOR)); return -1; } int sidx = info.getSelectedIndex() - 1; status = dvi.loadImage(studyUID, seriesUID, instanceUID,true); if (status != jE_Condition.EC_Normal) { Controller.instance().fireStatus(new StatusLineEvent(this,StatusLineEvent.SET_DES,DSComponentType.BROWSER,"PS Load Failed")); return 0; } if (sidx >= 0) { status = dvi.selectInstance(studyUID, seriesUID, instanceUID); status = dvi.selectPState (sidx, true); refreshTree(); if (status != jE_Condition.EC_Normal) Controller.instance().fireStatus(new StatusLineEvent(this,StatusLineEvent.SET_DES,DSComponentType.BROWSER,"PS Load Failed")); } return status; } /** * */ public boolean processEvent (DSEvent e) { if (e instanceof DbActionEvent) { DbActionEvent de = (DbActionEvent)e; switch (de.type) { case DbActionEvent.LOAD_IM: Controller.instance().fireStatus(new StatusLineEvent(this,StatusLineEvent.SET_DES,DSComponentType.BROWSER,"Loading Image from File")); onLoadFile(); break; case DbActionEvent.LOAD_PS: Controller.instance().fireStatus(new StatusLineEvent(this,StatusLineEvent.SET_DES,DSComponentType.BROWSER,"Loading Presentation State from File")); onLoadPSFile(); break; case DbActionEvent.LOAD_SR: Controller.instance().fireStatus(new StatusLineEvent(this,StatusLineEvent.SET_DES,DSComponentType.BROWSER,"Loading Structured Report from File")); onLoadSRFile(); break; case DbActionEvent.LOAD_DB: Controller.instance().fireStatus(new StatusLineEvent(this,StatusLineEvent.SET_DES,DSComponentType.BROWSER,"Loading Image")); onLoad(); break; case DbActionEvent.SAVE_DB: onSave(de.savePS); break; case DbActionEvent.SAVE_AS: OnSaveFile(); break; case DbActionEvent.SAVE_SCREEN: Controller.instance().fireEvent(new RequestEvent(this,RequestEvent.REQUEST_SCREEN)); break; case DbActionEvent.REFRESH: Controller.instance().fireStatus(new StatusLineEvent(this,StatusLineEvent.SET_DES,DSComponentType.BROWSER,"Refreshing Browser")); //root.removeAllChildren(); loadAll(); tree.expandRow (0); break; case DbActionEvent.DELETE: Controller.instance().fireStatus(new StatusLineEvent(this,StatusLineEvent.SET_DES,DSComponentType.BROWSER,"Delete IOD(s)")); onDelete(); break; case DbActionEvent.SENDTO: Controller.instance().fireStatus(new StatusLineEvent(this,StatusLineEvent.SET_DES,DSComponentType.BROWSER,"Send IOD to Network")); onSend(); break; case DbActionEvent.PRINTHC: Controller.instance().fireStatus(new StatusLineEvent(this,StatusLineEvent.SET_DES,DSComponentType.BROWSER,"Add Hardcopy Image to Print")); onAddtoPrintJob(); break; case DbActionEvent.PRINTSTTOPRINTER: Controller.instance().fireStatus(new StatusLineEvent(this,StatusLineEvent.SET_DES,DSComponentType.BROWSER,"Print Stored Print Object")); onPrintStToPrinter(); break; case DbActionEvent.PRINTST: Controller.instance().fireStatus(new StatusLineEvent(this,StatusLineEvent.SET_DES,DSComponentType.BROWSER,"Add Stored Pint Object to Print Job")); onAddtoPrintJob(); break; case DbActionEvent.DUMP: Controller.instance().fireStatus(new StatusLineEvent(this,StatusLineEvent.SET_DES,DSComponentType.BROWSER,"Create Dump")); onDump(); break; case DbActionEvent.CHECKIOD: Controller.instance().fireStatus(new StatusLineEvent(this,StatusLineEvent.SET_DES,DSComponentType.BROWSER,"Check IOD")); onCheckIOD(); break; case DbActionEvent.LOAD_IMAGE_FOR_SR: onLoadImageForSR(de.sopClassUid, de.instanceUid, de.psSOPClassUid, de.psInstanceUid, de.frames); break; case DbActionEvent.LOAD_PS_FOR_SR: onLoadPSForSR(de.sopClassUid, de.instanceUid); break; case DbActionEvent.LOAD_SR_FOR_SR: onLoadSRForSR(de.sopClassUid, de.instanceUid); break; case DbActionEvent.SAVE_DB_SR: onSaveSR(); break; } } if (e instanceof SendScreenEvent) { OnSaveScreen((SendScreenEvent) e); } if (e instanceof ChangeOptionsEvent) { setConfiguaration (((ChangeOptionsEvent)e).getConfig(), false); } if (e instanceof UpdateBrowserEvent) { refreshTree(); } return false; } /** * Konfiguriert. */ public void setConfiguaration(Hashtable config, boolean init) { if (config.containsKey("WarnUnsignedSrDouments"))warnUnsignedSrDouments=(((Boolean)config.get("WarnUnsignedSrDouments")).booleanValue()); if (config.containsKey("UID"))TreeElement.showUID=(((Boolean)config.get("UID")).booleanValue()); if (config.containsKey("Description"))TreeElement.showDescription=(((Boolean)config.get("Description")).booleanValue()); if (config.containsKey("PatientInfo"))TreeElement.showPatientInfo=(((Boolean)config.get("PatientInfo")).booleanValue()); if (config.containsKey("Modality"))TreeElement.showModality=(((Boolean)config.get("Modality")).booleanValue()); if (config.containsKey("DateTime"))TreeElement.showDateTime=(((Boolean)config.get("DateTime")).booleanValue()); if (config.containsKey("NewItems"))TreeElement.showNewWithIcon=(((Boolean)config.get("NewItems")).booleanValue()); if (config.containsKey("Filename"))TreeElement.showFilename=(((Boolean)config.get("Filename")).booleanValue()); if (config.containsKey("Label"))TreeElement.showLabel=(((Boolean)config.get("Label")).booleanValue()); treeChanged (); if (config.containsKey("BrowserBackgroundColor")) { Color color = (Color)config.get("BrowserBackgroundColor"); if (color != getBackground()) { tree.setBackground(color); updateUI(); } } if (init) { if (config.containsKey("AutoUpdateStudyBrowser")) { boolean on = ((Boolean)config.get("AutoUpdateStudyBrowser")).booleanValue(); if (on) { startThread(); } } } } /** * Saves the current screen as a DICOM SC file. * You can save the files in different transfer syntax * * @since 30.03.1999 */ public void OnSaveScreen(SendScreenEvent e) { JFileChooser saveDlg = new JFileChooser (); saveDlg.setDialogTitle( "Save Current Screen as DICOM File"); //Opens the Dialog if (oldLoadFileDir != null) saveDlg.setCurrentDirectory (oldLoadFileDir); saveDlg.showSaveDialog(null); oldLoadFileDir = saveDlg.getCurrentDirectory(); if (saveDlg.getSelectedFile() == null)return; String filename = saveDlg.getSelectedFile().getPath(); boolean explicitVR = chooseExplicitVR (); dvi.saveDICOMImage (filename, e.data, e.width, e.height, 1.0, explicitVR, e.instanceUID); } public synchronized void onSave(boolean savePS) { if (saveDisplayArea( false, savePS)) { refreshTree (); Controller.instance().fireStatus(new SignedStatusEvent(this, SignedStatusEvent.LOADPS, dvi.getCombinedImagePStateSignatureStatus(), dvi.getCurrentSignatureStatus(jDVPSObjectType.DVPSS_structuredReport))); } } public synchronized void onSaveSR() { int status = dvi.saveStructuredReport(); if (status != 0) { Controller.instance().fireStatus(new StatusLineEvent(this,StatusLineEvent.SET_DES,DSComponentType.ALL,"Can't save SR document.")); } else { Controller.instance().fireStatus(new SignedStatusEvent(this, SignedStatusEvent.LOADPS, dvi.getCombinedImagePStateSignatureStatus(), dvi.getCurrentSignatureStatus(jDVPSObjectType.DVPSS_structuredReport))); Controller.instance().fireStatus(new StatusLineEvent(this,StatusLineEvent.SET_DES,DSComponentType.ALL,"Save SR document.")); } refreshTree (); } /** * Creates and shows a Dialog where you can choose the transfer syntax * of the saving presentation state. * * @since 30.03.1999 */ public boolean chooseExplicitVR () { JRadioButton e, i; JButton ok; JDialog expDlg = new JDialog (parent, "Choose VR", true); expDlg.setLocation (200, 200); expDlg.getContentPane().setLayout(new GridLayout(3, 1)); ButtonGroup group1 = new ButtonGroup(); e = new JRadioButton("Explicit VR Little Endian", true); i = new JRadioButton("Implicit VR Little Endian", false); group1.add(e); group1.add(i); expDlg.getContentPane().add(e); expDlg.getContentPane().add(i); JPanel p = new JPanel (); p.add (ok = new CommandJButton ("OK", new DisposeCommand (expDlg), 0)); expDlg.getContentPane().add(p); expDlg.pack(); expDlg.show(); return e.isSelected(); } /** * Saves the current presentation state and the dicom image as file. * You can save the files in different transfer syntax * * @since 30.03.1999 */ public void OnSaveFile() { saveDisplayArea( true,true); } /** * Saves the current presentation state. * @param saveAsFile if true, the current presentation state and the * referred images will be saved as a file. If false, the current presentation * and the reffered images will be stred in the database. */ public boolean saveDisplayArea(boolean saveAsFile, boolean savePS) { String fileName = null; //Open the fileOpendialog if (saveAsFile) { JFileChooser saveDlg = new JFileChooser (); saveDlg.setDialogTitle( "Save DICOM File"); //Opens the Dialog if (oldLoadFileDir != null) saveDlg.setCurrentDirectory (oldLoadFileDir); saveDlg.showSaveDialog(null); oldLoadFileDir = saveDlg.getCurrentDirectory(); if (saveDlg.getSelectedFile() == null)return false; fileName = saveDlg.getSelectedFile().getPath(); } String title = "Save Presentation State to Database"; if (saveAsFile) title = "Save Presentation State to File"; SavePresentationStateDialog p =new SavePresentationStateDialog(parent, saveAsFile, title, savePS); p.setVisible(true); //return if (p.getActionValue() == SavePresentationStateDialog.ID_CANCEL) return false; jDVPresentationState ps = dvi.getCurrentPState(); jIntByRef tlhcX = new jIntByRef(); jIntByRef tlhcY = new jIntByRef(); jIntByRef brhcY = new jIntByRef(); jIntByRef brhcX = new jIntByRef(); jIntByRef height = new jIntByRef(); jIntByRef width = new jIntByRef(); double magnifactionRatio= 1d; int sizeMode; String dcmFilename; int numImages = ps.numberOfImageReferences(); for (int i = 0; i< numImages; i++) { if (p.saveImageSize()) { dvi.selectInstance(i); magnifactionRatio = 1d; ps.getImageWidth(width); ps.getImageHeight(height); sizeMode = ps.getDisplayedAreaPresentationSizeMode(); if (sizeMode == jDVPSPresentationSizeMode.DVPSD_magnify) { jDoubleByRef magnification = new jDoubleByRef(); ps.getDisplayedAreaPresentationPixelMagnificationRatio(magnification); magnifactionRatio = magnification.value; } ps.getImageRelativeDisplayedArea( tlhcX, tlhcY, brhcX, brhcY); ps.setImageRelativeDisplayedArea(sizeMode, 1, 1,width.value , height.value,magnifactionRatio, jDVPSObjectApplicability.DVPSB_currentImage); } if (saveAsFile) { if (numImages == 1)dcmFilename =fileName + ".dcm"; else dcmFilename =fileName + i+".dcm"; dvi.saveCurrentImage (dcmFilename, p.saveAsExplicit()); } } if (saveAsFile) { String PSfilename = fileName + ".pre"; dvi.savePState (PSfilename, true,p.saveAsExplicit()); } else dvi.savePState (true); return true; } public int getNumberOfImages(jDVInterface dvi) { return dvi.getNumberOfImageReferences(); } public int getNumberOfFrames(jDVInterface dvi) { jDVPresentationState ps = dvi.getCurrentPState(); dvi.loadReferencedImage(0,false); jIntByRef value = new jIntByRef(); int status= ps.getImageNumberOfFrames(value); if (status != jE_Condition.EC_Normal)return -1; dvi.releaseDatabase(); return value.value; } } /* * CVS Log * $Log: StudyMan.java,v $ * Revision 1.2 2003/09/08 09:00:23 kleber * move DICOMscope to folder dicomscope. * * Revision 1.1.1.1 2001/06/06 10:32:29 kleber * Init commit for DICOMscope 3.5 * Create new CVS * */ dicomscope-3.6.0/tkgui/browser/TreeElement.java0000644000265600020320000002253411262371077020667 0ustar tilleaadmin/* * * Copyright (C) 1999, Institute for MicroTherapy * * This software and supporting documentation were developed by * * University of Witten/Herdecke * Department of Radiology and MicroTherapy * Institute for MicroTherapy * Medical computer science * * Universitaetsstrasse 142 * 44799 Bochum, Germany * * http://www.microtherapy.de/go/cs * mailto:computer.science@microtherapy.de * * THIS SOFTWARE IS MADE AVAILABLE, AS IS, AND THE INSTITUTE MAKES NO * WARRANTY REGARDING THE SOFTWARE, ITS PERFORMANCE, ITS MERCHANTABILITY * OR FITNESS FOR ANY PARTICULAR USE, FREEDOM FROM ANY COMPUTER DISEASES * OR ITS CONFORMITY TO ANY SPECIFICATION. THE ENTIRE RISK AS TO QUALITY * AND PERFORMANCE OF THE SOFTWARE IS WITH THE USER. * * Author : $Author: kleber $ * Last update : $Date: 2001/06/06 10:32:29 $ * Revision : $Revision: 1.1.1.1 $ * State: $State: Exp $ */ package browser; import J2Ci.*; /** * This class represents a tree element with all possible contents. * * @author Andreas Schroeter * @since 30.04.1999 */ public class TreeElement { private String text; public String studyUID = null; public String seriesUID =null; public String instanceUID = null; public int instanceType = -1; /** * Contains the status of the TreeElement. * Object isn't new {@link jDVIFhierarchyStatus.DVIF_objectIsNotNew} * Object is new {@link jDVIFhierarchyStatus.DVIF_objectIsNotNew} * Object contains new subjects {@link jDVIFhierarchyStatus.DVIF_objectContainsNewSubobjects} */ private int status = jDVIFhierarchyStatus.DVIF_objectIsNew; public static boolean showUID = false; public static boolean showModality = false; public static boolean showDescription = false; public static boolean showPatientInfo = false; public static boolean showDateTime = false; public static boolean showFilename = false; public static boolean showLabel = false; public static boolean showNewWithIcon = false; public String modality; private String description; private String patientInfo; private String dateTime; private String fileName; private String label; public TreeElement (String text, int instanceType, String studyUID, String seriesUID, String instanceUID, String modality, String description, String patientInfo, String dateTime, String fileName, String label, int status) { this.instanceType = instanceType; this.status = status; this.text = text; this.studyUID = studyUID; this.seriesUID = seriesUID; this.instanceUID = instanceUID; this.modality = modality; this.description = description; this.patientInfo = patientInfo; this.dateTime = dateTime; this.fileName = fileName; this.label = label; if (description == null) description = new String (""); if (modality == null) modality = new String (""); if (patientInfo == null) patientInfo = new String (""); if (dateTime == null) dateTime = new String (""); if (fileName == null) fileName = new String (""); if (label == null) label = new String (""); if (instanceType != -1) text = new String(modality); } public TreeElement (int instanceType, String studyUID, String seriesUID, String instanceUID, String modality, String description, String dateTime, String fileName, String label, int status) { this( null, instanceType, studyUID, seriesUID, instanceUID, modality, description, null, dateTime, fileName, label, status); } public TreeElement (String text, String studyUID, String seriesUID, String modality, String description, String patientInfo, String dateTime, String fileName, String label, int status) { this( text, -1, studyUID, seriesUID, null,modality,description,patientInfo,dateTime,fileName,label,status); } public TreeElement (String text, String studyUID, String modality, String description, String patientInfo, String dateTime, String fileName, String label, int status) { this( text, -1, studyUID ,null,null ,modality,description,patientInfo,dateTime,fileName,label,status); } public TreeElement (String text) { this( text, -1,null, null, null,null,null,null,null,null,null,0); } public boolean isST() { if (instanceType ==jDVPSInstanceType.DVPSI_storedPrint) return true; else return false; } public boolean isHC() { if (instanceType ==jDVPSInstanceType.DVPSI_hardcopyGrayscale) return true; else return false; } public boolean isSR() { if (instanceType ==jDVPSInstanceType.DVPSI_structuredReport) return true; else return false; } public boolean isRoot() { return !(isInstance()||isSeries()||isStudy()); } public boolean isInstance() { return !(instanceUID == null); } public boolean isSeries() { return (!isInstance() && !(seriesUID == null)); } public boolean isStudy() { return (!isSeries() && !(studyUID==null)); } public boolean isPS () { if (instanceType ==jDVPSInstanceType.DVPSI_presentationState) return true; else return false; } public int getStatus() { return status; } public void setToOld () { status = jDVIFhierarchyStatus.DVIF_objectIsNotNew; } public void setStatus (int status) { this.status = status; } public boolean isOld () { if (status == jDVIFhierarchyStatus.DVIF_objectIsNotNew) return true; else return false; } public String toString () { String temp= null; if (isInstance()) // Bild { //temp = appendStr(temp, "index: " + instanceIdx+ ", UID: " + instanceUID); temp = new String (modality + " "); if (TreeElement.showLabel) temp = appendStr (temp, label); if (TreeElement.showDescription) temp = appendStr (temp, description); if (TreeElement.showUID) temp = appendStr (temp, instanceUID); if (TreeElement.showFilename) temp = appendStr (temp, "[" + fileName + "]"); if (!TreeElement.showLabel && !TreeElement.showDescription && !TreeElement.showUID && !showFilename) temp += " #instance#"; } else if (isSeries()) // Serie { temp = new String (text + " "); if (TreeElement.showModality) temp = appendStr (temp, modality); if (TreeElement.showDateTime) temp = appendStr (temp, dateTime); if (TreeElement.showDescription) temp = appendStr (temp, description); if (TreeElement.showUID) temp = appendStr (temp, seriesUID); if (!TreeElement.showDateTime && !TreeElement.showModality && !TreeElement.showDescription && !TreeElement.showUID) temp += " #series#"; } else if (isStudy()) // Studie { //temp=appendStr(temp, "index: " + studyIdx+ ", UID: " + studyUID); temp = new String (text + " "); if (TreeElement.showPatientInfo) temp = appendStr (temp, patientInfo); if (TreeElement.showDateTime) temp = appendStr (temp, dateTime); if (TreeElement.showDescription) temp = appendStr (temp, description); if (TreeElement.showUID) temp = appendStr (temp, studyUID); if (!TreeElement.showDateTime && !TreeElement.showPatientInfo && !TreeElement.showDescription && !TreeElement.showUID) temp += " #study#"; } if (temp == null) return text; return temp; } private String appendStr (String dest, String what) { if (what == null) return dest; if (what.equals ("")) return dest; if (dest.charAt(dest.length()-1) == ' ') return dest + what; else return dest + " * " + what; } } /* * CVS Log * $Log: TreeElement.java,v $ * Revision 1.1.1.1 2001/06/06 10:32:29 kleber * Init commit for DICOMscope 3.5 * Create new CVS * */ dicomscope-3.6.0/tkgui/browser/UpdateThread.java0000644000265600020320000000443411262371077021027 0ustar tilleaadmin/* * * Copyright (C) 1999, Institute for MicroTherapy * * This software and supporting documentation were developed by * * University of Witten/Herdecke * Department of Radiology and MicroTherapy * Institute for MicroTherapy * Medical computer science * * Universitaetsstrasse 142 * 44799 Bochum, Germany * * http://www.microtherapy.de/go/cs * mailto:computer.science@microtherapy.de * * THIS SOFTWARE IS MADE AVAILABLE, AS IS, AND THE INSTITUTE MAKES NO * WARRANTY REGARDING THE SOFTWARE, ITS PERFORMANCE, ITS MERCHANTABILITY * OR FITNESS FOR ANY PARTICULAR USE, FREEDOM FROM ANY COMPUTER DISEASES * OR ITS CONFORMITY TO ANY SPECIFICATION. THE ENTIRE RISK AS TO QUALITY * AND PERFORMANCE OF THE SOFTWARE IS WITH THE USER. * * Author : $Author: kleber $ * Last update : $Date: 2001/06/06 10:32:29 $ * Revision : $Revision: 1.1.1.1 $ * State: $State: Exp $ */ package browser; import J2Ci.*; import java.awt.*; import main.*; import javax.swing.*; /** * This Thread class asks the database for new instances. If an instance was received * the tree will be updated. * * @author Andreas Schroeter * @since 30.04.1999 */ public class UpdateThread extends Thread { StudyMan client; jDVInterface dvi; public UpdateThread (StudyMan sm, jDVInterface dvi) { client = sm; this.dvi = dvi; } /** * The Thread-Method for checking for new instances in the database */ public void run() { while (true) { try { Thread.sleep (2000); // wait 2 secs / idle SwingUtilities.invokeLater(new UpdateRun()); } catch(Exception e) { } } } public class UpdateRun implements Runnable { public UpdateRun() { } public void run() { if (dvi.newInstancesReceived()) { client.refreshTree(); Controller.instance().fireStatus(new StatusLineEvent(this,StatusLineEvent.SET_DES,DSComponentType.BROWSER,"New Instances Arrived!")); Toolkit.getDefaultToolkit().beep(); } } } } /* * CVS Log * $Log: UpdateThread.java,v $ * Revision 1.1.1.1 2001/06/06 10:32:29 kleber * Init commit for DICOMscope 3.5 * Create new CVS * */ dicomscope-3.6.0/tkgui/de/0002755000265600020320000000000011135621372014507 5ustar tilleaadmindicomscope-3.6.0/tkgui/de/microtherapy/0002755000265600020320000000000011135621372017215 5ustar tilleaadmindicomscope-3.6.0/tkgui/de/microtherapy/tools/0002755000265600020320000000000011135621372020355 5ustar tilleaadmindicomscope-3.6.0/tkgui/de/microtherapy/tools/text/0002755000265600020320000000000011135621372021341 5ustar tilleaadmindicomscope-3.6.0/tkgui/de/microtherapy/tools/text/document/0002755000265600020320000000000011135621372023157 5ustar tilleaadmindicomscope-3.6.0/tkgui/de/microtherapy/tools/text/document/dicom/0002755000265600020320000000000011262371077024257 5ustar tilleaadmindicomscope-3.6.0/tkgui/de/microtherapy/tools/text/document/dicom/CSDocument.java0000644000265600020320000001105411262371077027125 0ustar tilleaadmin/* * * Copyright (C) 1999, Institute for MicroTherapy * * This software and supporting documentation were developed by * * University of Witten/Herdecke * Department of Radiology and MicroTherapy * Institute for MicroTherapy * Medical computer science * * Universitaetsstrasse 142 * 44799 Bochum, Germany * * http://www.microtherapy.de/go/cs * mailto:computer.science@microtherapy.de * * THIS SOFTWARE IS MADE AVAILABLE, AS IS, AND THE INSTITUTE MAKES NO * WARRANTY REGARDING THE SOFTWARE, ITS PERFORMANCE, ITS MERCHANTABILITY * OR FITNESS FOR ANY PARTICULAR USE, FREEDOM FROM ANY COMPUTER DISEASES * OR ITS CONFORMITY TO ANY SPECIFICATION. THE ENTIRE RISK AS TO QUALITY * AND PERFORMANCE OF THE SOFTWARE IS WITH THE USER. * * Author : $Author: kleber $ * Last update : $Date: 2001/06/06 10:32:29 $ * Revision : $Revision: 1.1.1.1 $ * State: $State: Exp $ */ package de.microtherapy.tools.text.document.dicom; import javax.swing.text.*; import javax.swing.*; import javax.swing.event.*; import java.awt.*; /** * Contains a document for DICOM Code String (CS) values. *

* A string of characters with leading or trailing * spaces (20H) being non-significant. *

* Character Repertoire: Uppercase characters, “0”-”9”, the SPACE * character, and underscore “_”, of the Default Character Repertoire *

* Max size: 16 * * @author Klaus Kleber * @since 01.01.2001 */ public class CSDocument extends PlainDocument { /** * Max size */ private int maxSize = 16; /** * if true all lowercase characters will be converted * into uppercase characters */ private boolean autoConvert = true; /** * Contstructor. All lowercase characters will be converted * into uppercase characters. */ public CSDocument() { this(true); } /** * Contstructor. All lowercase characters will be converted * into uppercase characters if specified. * @param autoConvert if true all lowercase characters will be converted * into uppercase characters */ public CSDocument(boolean autoConvert) { super(); } /** * Inserts some content into the document. *

* The content will be checked. All uppercase characters, “0”-”9”, the SPACE * character, and underscore “_”, of the Default Character Repertoire will be accepted * lowercase characters will be converted into uppercase *

* Inserting content causes a write lock to be held while the actual changes are taking place, * followed by notification to the observers on the thread that grabbed the write lock. *

* This method is thread safe, although most Swing methods are not. * Please see Threads and Swing for more information. * @param offs The starting offset >= 0 * @param str The string to insert; does nothing with null/empty strings * @param a The attributes for the inserted content * @exception BadLocationException The given insert position is not a valid position within the document */ public void insertString(int offset, String s, AttributeSet attributeSet) throws BadLocationException { if (s == null) return; int size = s.length(); int pos = offset; for (int j = 0; j < size; j++) { if (pos >= maxSize) { Toolkit.getDefaultToolkit().beep(); return; } char c = s.charAt(j); try { if ( (c != '_') && (c != ' ') && !DICOMDocumentUtils.isDigit(c)&& !DICOMDocumentUtils.isUpperCase(c)) { if (DICOMDocumentUtils.isLowerCase(c) && autoConvert) { c = Character.toUpperCase(c); } else { Toolkit.getDefaultToolkit().beep(); return; } } } catch(Exception e) { Toolkit.getDefaultToolkit().beep(); return; } super.insertString(pos, new Character(c).toString(), attributeSet); pos++; } } } /* * CVS Log * $Log: CSDocument.java,v $ * Revision 1.1.1.1 2001/06/06 10:32:29 kleber * Init commit for DICOMscope 3.5 * Create new CVS * */ dicomscope-3.6.0/tkgui/de/microtherapy/tools/text/document/dicom/DADocument.java0000644000265600020320000001072411262371077027107 0ustar tilleaadmin/* * * Copyright (C) 1999, Institute for MicroTherapy * * This software and supporting documentation were developed by * * University of Witten/Herdecke * Department of Radiology and MicroTherapy * Institute for MicroTherapy * Medical computer science * * Universitaetsstrasse 142 * 44799 Bochum, Germany * * http://www.microtherapy.de/go/cs * mailto:computer.science@microtherapy.de * * THIS SOFTWARE IS MADE AVAILABLE, AS IS, AND THE INSTITUTE MAKES NO * WARRANTY REGARDING THE SOFTWARE, ITS PERFORMANCE, ITS MERCHANTABILITY * OR FITNESS FOR ANY PARTICULAR USE, FREEDOM FROM ANY COMPUTER DISEASES * OR ITS CONFORMITY TO ANY SPECIFICATION. THE ENTIRE RISK AS TO QUALITY * AND PERFORMANCE OF THE SOFTWARE IS WITH THE USER. * * Author : $Author: kleber $ * Last update : $Date: 2001/06/06 10:32:29 $ * Revision : $Revision: 1.1.1.1 $ * State: $State: Exp $ */ package de.microtherapy.tools.text.document.dicom; import javax.swing.text.*; import javax.swing.*; import javax.swing.event.*; import java.awt.*; import java.text.*; /** * Contains a document for DICOM Date (DA) values: *

* A string of characters of the format yyyymmdd; * where yyyy shall contain year, mm shall * contain the month, and dd shall contain the * day. This conforms to the ANSI HISPP MSDSDate common data type. *

* Example:“19930822” would represent August 22,1993. *

* Notes: 1. For reasons of backward * compatibility with versions of this * standard prior to V3.0, it is * recommended that implementations * also support a string of characters of * the format yyyy.mm.dd for this VR. *

* This document is able to handle inputs * with a length of 8. If the char '." is inserted it will be ignored * @author Klaus Kleber */ public class DADocument extends PlainDocument { private static final SimpleDateFormat dateFormat = new SimpleDateFormat("yyyyMMdd"); private int maxSize = 8; /** * Contstructor. */ public DADocument() { super(); } /** * Insert a String and checks if the String is a valid input. */ public void insertString(int offset, String s, AttributeSet attributeSet) throws BadLocationException { char c; if (s == null) return; int size = s.length(); int pos = offset; for (int j = 0; j < size; j++) { if (pos >= maxSize) { Toolkit.getDefaultToolkit().beep(); return; } c = s.charAt(j); //Ignores seperator if (c == '.') { if (isSeperatorPosition(pos)) continue; else { Toolkit.getDefaultToolkit().beep(); return; } } if (!isValid(c,pos)){ Toolkit.getDefaultToolkit().beep(); return; } super.insertString(pos, new Character(c).toString(), attributeSet); pos++; } } /** * Checks if the specified position is a place where a * seperator can be placed. * @param pos The position * @return True a seperator can be placed on the specified postion */ private boolean isSeperatorPosition(int pos) { if (pos == 4 || pos == 7) return true; else return false; } private boolean isValid(char c, int pos) { //Only digits allowed if (! Character.isDigit(c)) return false; //Checks Month if (pos == 4 && c >'1') return false; //Checks Day if (pos == 6 && c >'3') return false; return true; } /** * Checks if the value if a valid date * @return True if the value is a valid date. */ public boolean check () { //if (getLength()<8) return false; try { dateFormat.setLenient(false); java.util.Date d =dateFormat.parse(getText(0,getLength()), new ParsePosition(0)); if (d == null) return false; else return true; } catch(Exception e) { return false; } } } /* * CVS Log * $Log: DADocument.java,v $ * Revision 1.1.1.1 2001/06/06 10:32:29 kleber * Init commit for DICOMscope 3.5 * Create new CVS * */ dicomscope-3.6.0/tkgui/de/microtherapy/tools/text/document/dicom/DICOMDocumentUtils.java0000644000265600020320000001700011262371077030471 0ustar tilleaadmin/* * * Copyright (C) 1999, Institute for MicroTherapy * * This software and supporting documentation were developed by * * University of Witten/Herdecke * Department of Radiology and MicroTherapy * Institute for MicroTherapy * Medical computer science * * Universitaetsstrasse 142 * 44799 Bochum, Germany * * http://www.microtherapy.de/go/cs * mailto:computer.science@microtherapy.de * * THIS SOFTWARE IS MADE AVAILABLE, AS IS, AND THE INSTITUTE MAKES NO * WARRANTY REGARDING THE SOFTWARE, ITS PERFORMANCE, ITS MERCHANTABILITY * OR FITNESS FOR ANY PARTICULAR USE, FREEDOM FROM ANY COMPUTER DISEASES * OR ITS CONFORMITY TO ANY SPECIFICATION. THE ENTIRE RISK AS TO QUALITY * AND PERFORMANCE OF THE SOFTWARE IS WITH THE USER. * * Author : $Author: kleber $ * Last update : $Date: 2001/06/06 10:32:29 $ * Revision : $Revision: 1.1.1.1 $ * State: $State: Exp $ */ package de.microtherapy.tools.text.document.dicom; /** * This class contains some utils the DICOM documents * @author Klaus Kleber * @since 01.01.2001 */ public class DICOMDocumentUtils { /** * Checks if the specified char is a uppercase * character of the default DICOM character repertoire * @param ch Specifies the char to be checked * @return True if the specified char is a uppercase character * of the default DICOM character repertoire */ public static final boolean isUpperCase(char ch) { if (ch >= 'A' && ch <= 'Z') return true; else return false; } /** * Checks if the specified char is a lowercase * character of the default DICOM character repertoire * @param ch Specifies the char to be checked * @return True if the specified char is a lowercase character * of the default DICOM character repertoire */ public static final boolean isLowerCase(char ch) { if (ch >= 'a' && ch <= 'z') return true; else return false; } /** * Checks if the specified char is a letter * character of the default DICOM character repertoire * @param ch Specifies the char to be checked * @return True if the specified char is a letter character * of the default DICOM character repertoire */ public static final boolean isDigit(char ch) { if (ch >= '0' && ch <= '9') return true; else return false; } /** * Checks if the specified char is a letter * character of the default DICOM character repertoire * @param ch Specifies the char to be checked * @return True if the specified char is a letter character * of the default DICOM character repertoire */ public static final boolean isLetter(char ch) { if (isLowerCase(ch )||isUpperCase(ch)) return true; else return false; } /** * Checks if the specified char is a letter or a digit * character of the default DICOM character repertoire * @param ch Specifies the char to be checked * @return True if the specified char is a letter or digt character * of the default DICOM character repertoire */ public static final boolean isLetterOrDigit(char ch) { if (isLetter(ch )||isDigit(ch)) return true; else return false; } /** * Checks if the specified char is a Line Feed * in the DICOM default character repertoire * @param ch The char to be checked * @return True if the checked char is the * Line Feed in the DICOM default character repertoire */ public static final boolean isLineFeed(char ch) { if (ch == '\n') return true; else return false; } /** * Checks if the specified char is a Form Feed * in the DICOM default character repertoire * @param ch The char to be checked * @return True if the checked char is the * Form Feed in the DICOM default character repertoire */ public static final boolean isFormFeed(char ch) { if (ch == '\f') return true; else return false; } /** * Checks if the specified char is a Carriage Return * in the DICOM default character repertoire * @param ch The char to be checked * @return True if the checked char is the * Carriage Return in the DICOM default character repertoire */ public static final boolean isCarriageReturn(char ch) { if (ch == '\r') return true; else return false; } /** * Checks if the specified char is a Escape * in the DICOM default character repertoire * @param ch The char to be checked * @return True if the checked char is the * Escape in the DICOM default character repertoire */ public static final boolean isEscape(char ch) { if (ch == '\u001B') return true; else return false; } /** * Checks if the specified char is a Backslash * in the DICOM default character repertoire * @param ch The char to be checked * @return True if the checked char is the * Backslash in the DICOM default character repertoire */ public static final boolean isBackslash(char ch) { if (ch == '\\') return true; else return false; } /** * Checks if the specified char is a DICOM Control Character * The DICOM Control Characters are *

    *
  • Line Feed
  • *
  • Form Feed
  • *
  • Carriage Return
  • *
  • Escape
  • *
* @param ch The char th be checked * @return True if the checked char is a DICOM Control Character */ public static final boolean isDICOMControlCharacter(char ch) { if ( isLineFeed(ch) || isFormFeed(ch) || isCarriageReturn(ch)|| isEscape(ch)) return true; else return false; } /** * Checks if the specified char is a DICOM Default Character * The default repertoire for character strings in DICOM is the Basic G0 Set of the International Reference * Version of ISO 646:1990 (ISO IR-6). In addition, the four Control Characters LF, FF, CR, and ESC are * supported. These control characters are a subset of the C0 set defined in ISO 646:1990 and ISO * 6429:1990. *

* The chars are in the range '\u0020' (space) to '\u007D' (~). * @param ch The char th be checked * @return True if the checked char is a DICOM Control Character */ public static final boolean isDefaultCharacter(char ch) { if (ch >= '\u0020' && ch <= '\u007D' ) return true; else return false; } /** * Checks if the specified char is in the DICOM Default Character Repertoire. * This is the case if the char is a valid DICOM Control Character {@link isDICOMControlCharacter} * or if the char is a valid DICOM Default Character {@link isDefaultCharacter} *

* The DICOM Default Character are in the range '\u0020' (space) to '\u007D' (~). *
* The DICOM Control Characters are *

    *
  • Line Feed
  • *
  • Form Feed
  • *
  • Carriage Return
  • *
  • Escape
  • *
* @param ch The char th be checked * @return True if the checked char is in the DICOM Default Character Repertoire. */ public static final boolean isInDICOMDefaultCharacterRepertoire(char ch) { if (isDICOMControlCharacter(ch) ||isDefaultCharacter(ch)) return true; else return false; } } /* * CVS Log * $Log: DICOMDocumentUtils.java,v $ * Revision 1.1.1.1 2001/06/06 10:32:29 kleber * Init commit for DICOMscope 3.5 * Create new CVS * */ dicomscope-3.6.0/tkgui/de/microtherapy/tools/text/document/dicom/DSDocument.java0000644000265600020320000000775211262371077027140 0ustar tilleaadmin/* * * Copyright (C) 1999, Institute for MicroTherapy * * This software and supporting documentation were developed by * * University of Witten/Herdecke * Department of Radiology and MicroTherapy * Institute for MicroTherapy * Medical computer science * * Universitaetsstrasse 142 * 44799 Bochum, Germany * * http://www.microtherapy.de/go/cs * mailto:computer.science@microtherapy.de * * THIS SOFTWARE IS MADE AVAILABLE, AS IS, AND THE INSTITUTE MAKES NO * WARRANTY REGARDING THE SOFTWARE, ITS PERFORMANCE, ITS MERCHANTABILITY * OR FITNESS FOR ANY PARTICULAR USE, FREEDOM FROM ANY COMPUTER DISEASES * OR ITS CONFORMITY TO ANY SPECIFICATION. THE ENTIRE RISK AS TO QUALITY * AND PERFORMANCE OF THE SOFTWARE IS WITH THE USER. * * Author : $Author: kleber $ * Last update : $Date: 2001/06/06 10:32:29 $ * Revision : $Revision: 1.1.1.1 $ * State: $State: Exp $ */ package de.microtherapy.tools.text.document.dicom; import javax.swing.text.*; import javax.swing.*; import javax.swing.event.*; import java.awt.*; /** * Contains a document for DICOM Decimal String (DS) values. *

* A string of characters representing either a * fixed point number or a floating point number. * A fixed point number shall contain only the * characters 0-9 with an optional leading "+" or "-" * and an optional "." to mark the decimal point. * A floating point number shall be conveyed as * defined in ANSI X3.9, with an "E" or "e" to * indicate the start of the exponent. Decimal * Strings may be padded with leading or trailing * spaces. Embedded spaces are not allowed. *

* “0”-”9”, “+”, “-”,“E”, “e”, “." of Default Character Repertoire *

* Max size: 16 * @author Klaus Kleber */ public class DSDocument extends PlainDocument { /** * Max size */ private int maxSize = 16; /** * Contstructor. */ public DSDocument() { super(); } /** * Inserts some content into the document. *

*

* Inserting content causes a write lock to be held while the actual changes are taking place, * followed by notification to the observers on the thread that grabbed the write lock. *

* This method is thread safe, although most Swing methods are not. * Please see Threads and Swing for more information. * @param offs The starting offset >= 0 * @param str The string to insert; does nothing with null/empty strings * @param a The attributes for the inserted content * @exception BadLocationException The given insert position is not a valid position within the document */ public void insertString(int offset, String s, AttributeSet attributeSet) throws BadLocationException { if (s == null) return; int size = s.length(); int pos = offset; for (int j = 0; j < size; j++) { if (pos >= maxSize) { Toolkit.getDefaultToolkit().beep(); return; } char c = s.charAt(j); try { if ( (c != '+') && (c != '-') && (c != 'E') && (c != ' ') && (c != 'e') && (c != '.') && !DICOMDocumentUtils.isDigit(c)) { Toolkit.getDefaultToolkit().beep(); return; } } catch(Exception e) { Toolkit.getDefaultToolkit().beep(); return; } super.insertString(pos, new Character(c).toString(), attributeSet); pos++; } } } /* * CVS Log * $Log: DSDocument.java,v $ * Revision 1.1.1.1 2001/06/06 10:32:29 kleber * Init commit for DICOMscope 3.5 * Create new CVS * */ dicomscope-3.6.0/tkgui/de/microtherapy/tools/text/document/dicom/ISDocument.java0000644000265600020320000000751411262371077027141 0ustar tilleaadmin/* * * Copyright (C) 1999, Institute for MicroTherapy * * This software and supporting documentation were developed by * * University of Witten/Herdecke * Department of Radiology and MicroTherapy * Institute for MicroTherapy * Medical computer science * * Universitaetsstrasse 142 * 44799 Bochum, Germany * * http://www.microtherapy.de/go/cs * mailto:computer.science@microtherapy.de * * THIS SOFTWARE IS MADE AVAILABLE, AS IS, AND THE INSTITUTE MAKES NO * WARRANTY REGARDING THE SOFTWARE, ITS PERFORMANCE, ITS MERCHANTABILITY * OR FITNESS FOR ANY PARTICULAR USE, FREEDOM FROM ANY COMPUTER DISEASES * OR ITS CONFORMITY TO ANY SPECIFICATION. THE ENTIRE RISK AS TO QUALITY * AND PERFORMANCE OF THE SOFTWARE IS WITH THE USER. * * Author : $Author: kleber $ * Last update : $Date: 2001/06/06 10:32:29 $ * Revision : $Revision: 1.1.1.1 $ * State: $State: Exp $ */ package de.microtherapy.tools.text.document.dicom; import javax.swing.text.*; import javax.swing.*; import javax.swing.event.*; import java.awt.*; /** * Contains a document for DICOM Integer String (IS) values. *

* A string of characters representing an Integer * in base-10 (decimal), shall contain only the * characters 0 - 9, with an optional leading "+" or * "-". It may be padded with leading and/or * trailing spaces. Embedded spaces are not allowed. *

* The integer, n, represented shall be in the range: * -2^31 <= n <= (2^31 - 1). “0”-”9”, “+”, “-" of * Default Character Repertoire can be used * * 12 bytes maximum */ public class ISDocument extends PlainDocument { /** * Max Size */ private int maxSize = 12; /** * Constructor. */ public ISDocument( ) { super(); } /** * Inserts some content into the document. *

* The content will be checked. All uppercase characters, “0”-”9”, the SPACE * character, and underscore “_”, of the Default Character Repertoire will be accepted * lowercase characters will be converted into uppercase *

* Inserting content causes a write lock to be held while the actual changes are taking place, * followed by notification to the observers on the thread that grabbed the write lock. *

* This method is thread safe, although most Swing methods are not. * Please see Threads and Swing for more information. * @param offs The starting offset >= 0 * @param str The string to insert; does nothing with null/empty strings * @param a The attributes for the inserted content * @exception BadLocationException The given insert position is not a valid position within the document */ public void insertString(int offset, String s, AttributeSet attributeSet) throws BadLocationException { int size = s.length(); int pos = offset; for (int j = 0; j < size; j++) { if (pos >= maxSize) { Toolkit.getDefaultToolkit().beep(); return; } char c = s.charAt(j); if(pos==0) { if (c== ' ') continue; else if (c != '+' && c!= '-' && !DICOMDocumentUtils.isDigit(c)) { Toolkit.getDefaultToolkit().beep(); return; } } if (!DICOMDocumentUtils.isDigit(c)) { Toolkit.getDefaultToolkit().beep(); return; } super.insertString(pos, new Character(c).toString(), attributeSet); pos++; } } } /* * CVS Log * $Log: ISDocument.java,v $ * Revision 1.1.1.1 2001/06/06 10:32:29 kleber * Init commit for DICOMscope 3.5 * Create new CVS * */ dicomscope-3.6.0/tkgui/de/microtherapy/tools/text/document/dicom/LODocument.java0000644000265600020320000000534511262371077027140 0ustar tilleaadmin/* * * Copyright (C) 1999, Institute for MicroTherapy * * This software and supporting documentation were developed by * * University of Witten/Herdecke * Department of Radiology and MicroTherapy * Institute for MicroTherapy * Medical computer science * * Universitaetsstrasse 142 * 44799 Bochum, Germany * * http://www.microtherapy.de/go/cs * mailto:computer.science@microtherapy.de * * THIS SOFTWARE IS MADE AVAILABLE, AS IS, AND THE INSTITUTE MAKES NO * WARRANTY REGARDING THE SOFTWARE, ITS PERFORMANCE, ITS MERCHANTABILITY * OR FITNESS FOR ANY PARTICULAR USE, FREEDOM FROM ANY COMPUTER DISEASES * OR ITS CONFORMITY TO ANY SPECIFICATION. THE ENTIRE RISK AS TO QUALITY * AND PERFORMANCE OF THE SOFTWARE IS WITH THE USER. * * Author : $Author: kleber $ * Last update : $Date: 2001/06/06 10:32:29 $ * Revision : $Revision: 1.1.1.1 $ * State: $State: Exp $ */ package de.microtherapy.tools.text.document.dicom; import javax.swing.text.*; import javax.swing.*; import javax.swing.event.*; import java.awt.*; /** * Contains a document for DICOM Long String (LO) values. * A CS contains all characters without FF, CR, LF and has * a limited size of 64. * @author Klaus Kleber */ public class LODocument extends PlainDocument { private int maxSize = 64; /** * Contstructor. */ public LODocument() { super(); } /** * Insert a String and checks if the String is a valid input. */ public void insertString(int offset, String s, AttributeSet attributeSet) throws BadLocationException { char c; if (s == null) return; int size = s.length(); for (int j = 0; j < size; j++) { if (offset+j >= maxSize) { Toolkit.getDefaultToolkit().beep(); return; } try { c = s.charAt(j); if ((c== '\n')|| (c=='\r')|| (c=='\f')|| (c=='\\')) { Toolkit.getDefaultToolkit().beep(); return; } } catch(Exception e) { Toolkit.getDefaultToolkit().beep(); return; } super.insertString(offset+j, new Character(c).toString(), attributeSet); } } } /* * CVS Log * $Log: LODocument.java,v $ * Revision 1.1.1.1 2001/06/06 10:32:29 kleber * Init commit for DICOMscope 3.5 * Create new CVS * */ dicomscope-3.6.0/tkgui/de/microtherapy/tools/text/document/dicom/PNDocument.java0000644000265600020320000000653611262371077027146 0ustar tilleaadmin/* * * Copyright (C) 1999, Institute for MicroTherapy * * This software and supporting documentation were developed by * * University of Witten/Herdecke * Department of Radiology and MicroTherapy * Institute for MicroTherapy * Medical computer science * * Universitaetsstrasse 142 * 44799 Bochum, Germany * * http://www.microtherapy.de/go/cs * mailto:computer.science@microtherapy.de * * THIS SOFTWARE IS MADE AVAILABLE, AS IS, AND THE INSTITUTE MAKES NO * WARRANTY REGARDING THE SOFTWARE, ITS PERFORMANCE, ITS MERCHANTABILITY * OR FITNESS FOR ANY PARTICULAR USE, FREEDOM FROM ANY COMPUTER DISEASES * OR ITS CONFORMITY TO ANY SPECIFICATION. THE ENTIRE RISK AS TO QUALITY * AND PERFORMANCE OF THE SOFTWARE IS WITH THE USER. * * Author : $Author: kleber $ * Last update : $Date: 2001/06/06 10:32:29 $ * Revision : $Revision: 1.1.1.1 $ * State: $State: Exp $ */ package de.microtherapy.tools.text.document.dicom; import javax.swing.text.*; import javax.swing.*; import javax.swing.event.*; import java.awt.*; /** * Contains a document for DICOM Person Name (PN) values. * @author Klaus Kleber */ public class PNDocument extends PlainDocument { private int maxSize = 64; private int maxNumberOfSeps = 4; private int numSep = 0; private String sep= "^"; /** * Contstructor. */ public PNDocument() { super(); } /** * Insert a String and checks if the String is a valid input. */ public void insertString(int offset, String s, AttributeSet attributeSet) throws BadLocationException { char c; if (s == null) return; int size = s.length(); for (int j = 0; j < size; j++) { if (offset+j >= maxSize) { Toolkit.getDefaultToolkit().beep(); return; } try { c = s.charAt(j); if ((c== '\n')|| (c=='\r')|| (c=='\f')|| (c=='\\')) { Toolkit.getDefaultToolkit().beep(); return; } if (s.equals(sep)) { if (numSep>=maxNumberOfSeps) { Toolkit.getDefaultToolkit().beep(); return; } else numSep ++; } } catch(Exception e) { Toolkit.getDefaultToolkit().beep(); return; } super.insertString(offset+j, new Character(c).toString(), attributeSet); } } public void remove(int offs, int len) throws BadLocationException { String s = getText(offs, len); int num = s.indexOf(sep); while (num >= 0) { numSep--; num = s.indexOf(sep,num+1); } super.remove(offs, len); } } /* * CVS Log * $Log: PNDocument.java,v $ * Revision 1.1.1.1 2001/06/06 10:32:29 kleber * Init commit for DICOMscope 3.5 * Create new CVS * */ dicomscope-3.6.0/tkgui/de/microtherapy/tools/text/document/dicom/SHDocument.java0000644000265600020320000001051011262371077027126 0ustar tilleaadmin/* * * Copyright (C) 1999, Institute for MicroTherapy * * This software and supporting documentation were developed by * * University of Witten/Herdecke * Department of Radiology and MicroTherapy * Institute for MicroTherapy * Medical computer science * * Universitaetsstrasse 142 * 44799 Bochum, Germany * * http://www.microtherapy.de/go/cs * mailto:computer.science@microtherapy.de * * THIS SOFTWARE IS MADE AVAILABLE, AS IS, AND THE INSTITUTE MAKES NO * WARRANTY REGARDING THE SOFTWARE, ITS PERFORMANCE, ITS MERCHANTABILITY * OR FITNESS FOR ANY PARTICULAR USE, FREEDOM FROM ANY COMPUTER DISEASES * OR ITS CONFORMITY TO ANY SPECIFICATION. THE ENTIRE RISK AS TO QUALITY * AND PERFORMANCE OF THE SOFTWARE IS WITH THE USER. * * Author : $Author: kleber $ * Last update : $Date: 2001/06/06 10:32:29 $ * Revision : $Revision: 1.1.1.1 $ * State: $State: Exp $ */ package de.microtherapy.tools.text.document.dicom; import javax.swing.text.*; import javax.swing.*; import javax.swing.event.*; import java.awt.*; /** * Contains a document for DICOM Long String (SH) values. * A character string that may be padded with * leading and/or trailing spaces. The character * code 05CH (the BACKSLASH “\” in ISO-IR 6) * shall not be present, as it is used as the * delimiter between values for multiple data * elements. The string shall not have Control * Characters except ESC. *

* Default Character Repertoire and/or * as defined by (0008,0005). *

* At this time only the DICOM Character Repertoire can be used. * @author Klaus Kleber * @since 01.01.2001 */ public class SHDocument extends PlainDocument { /** * Size of the Document */ private int maxSize = 16; /** * If true only the DICOM Character Repertoire will be used */ private boolean onlyDICOMCharacterRepertoire = false; /** * Contstructor. */ public SHDocument() { this(true); } /** * Contstructor. * @param onlyDICOMCharacterRepertoire If true only the DICOM Character Repertoire will be used. * false is not supported at this time. */ public SHDocument(boolean onlyDICOMCharacterRepertoire) { super(); } /** * Inserts some content into the document. *

* The content will be checked. *

* Inserting content causes a write lock to be held while the actual changes are taking place, * followed by notification to the observers on the thread that grabbed the write lock. *

* This method is thread safe, although most Swing methods are not. * Please see Threads and Swing for more information. * @param offs The starting offset >= 0 * @param str The string to insert; does nothing with null/empty strings * @param a The attributes for the inserted content * @exception BadLocationException The given insert position is not a valid position within the document */ public void insertString(int offset, String s, AttributeSet attributeSet) throws BadLocationException { char c; if (s == null) return; int size = s.length(); for (int j = 0; j < size; j++) { if (offset+j >= maxSize) { Toolkit.getDefaultToolkit().beep(); return; } try { c = s.charAt(j); if (!(DICOMDocumentUtils.isLineFeed(c)|| DICOMDocumentUtils.isFormFeed(c)|| DICOMDocumentUtils.isCarriageReturn(c)|| DICOMDocumentUtils.isBackslash(c)|| DICOMDocumentUtils.isDefaultCharacter(c))) { Toolkit.getDefaultToolkit().beep(); return; } } catch(Exception e) { Toolkit.getDefaultToolkit().beep(); return; } super.insertString(offset+j, new Character(c).toString(), attributeSet); } } } /* * CVS Log * $Log: SHDocument.java,v $ * Revision 1.1.1.1 2001/06/06 10:32:29 kleber * Init commit for DICOMscope 3.5 * Create new CVS * */ dicomscope-3.6.0/tkgui/de/microtherapy/tools/text/document/dicom/TMDocument.java0000644000265600020320000001350111262371077027137 0ustar tilleaadmin/* * * Copyright (C) 1999, Institute for MicroTherapy * * This software and supporting documentation were developed by * * University of Witten/Herdecke * Department of Radiology and MicroTherapy * Institute for MicroTherapy * Medical computer science * * Universitaetsstrasse 142 * 44799 Bochum, Germany * * http://www.microtherapy.de/go/cs * mailto:computer.science@microtherapy.de * * THIS SOFTWARE IS MADE AVAILABLE, AS IS, AND THE INSTITUTE MAKES NO * WARRANTY REGARDING THE SOFTWARE, ITS PERFORMANCE, ITS MERCHANTABILITY * OR FITNESS FOR ANY PARTICULAR USE, FREEDOM FROM ANY COMPUTER DISEASES * OR ITS CONFORMITY TO ANY SPECIFICATION. THE ENTIRE RISK AS TO QUALITY * AND PERFORMANCE OF THE SOFTWARE IS WITH THE USER. * * Author : $Author: kleber $ * Last update : $Date: 2001/06/06 10:32:29 $ * Revision : $Revision: 1.1.1.1 $ * State: $State: Exp $ */ package de.microtherapy.tools.text.document.dicom; import javax.swing.text.*; import javax.swing.*; import javax.swing.event.*; import java.awt.*; import java.text.*; /** * Contains a document for DICOM Date (TM) values: *

* A string of characters of the format * hhmmss.frac; where hh contains hours (range * "00" - "23"), mm contains minutes (range "00" - * "59"), ss contains seconds (range "00" - * "59"), and frac contains a fractional part of a * second as small as 1 millionth of a second * (range “000000” - “999999”). A 24 hour clock * is assumed. Midnight can be represented by * only “0000“ since “2400“ would violate the hour * range. The string may be padded with trailing * spaces. Leading and embedded spaces are * not allowed. One or more of the components * mm, ss, or frac may be unspecified as long as * every component to the right of an unspecified * component is also unspecified. If frac is * unspecified the preceding “.” may not be * included. Frac shall be held to six decimal * places or less to ensure its format conforms to * the ANSI HISPP MSDS Time common data * type. * Examples: * 1. “070907.0705 ” represents a time of * 7 hours, 9 minutes and 7.0705 seconds. *
* 2. “1010” represents a time of 10 hours,and 10 minutes. *
* 3. “021 ” is an invalid value. *

* Notes: 1. For reasons of backward * compatibility with versions of this * standard prior to V3.0, it is * recommended that implementations * also support a string of characters of * the format hh:mm:ss.frac for this VR. * @author Klaus Kleber */ public class TMDocument extends PlainDocument { private static final SimpleDateFormat timeFormat = new SimpleDateFormat("HHmmss.SSSSSS"); private static final SimpleDateFormat timeFormatShort = new SimpleDateFormat("HHmmss"); private int maxSize = 13; /** * Contstructor. */ public TMDocument() { super(); } /** * Insert a String and checks if the String is a valid input. */ public void insertString(int offset, String s, AttributeSet attributeSet) throws BadLocationException { //Deleting the leading and trailing spaces s = s.trim(); char c; if (s == null) return; int size = s.length(); int pos = offset; for (int j = 0; j < size; j++) { if (pos >= maxSize) { Toolkit.getDefaultToolkit().beep(); return; } c = s.charAt(j); //Ignores : if (c == ':') { if (isSeperatorPosition(pos)) continue; else { Toolkit.getDefaultToolkit().beep(); return; } } //seperator if (c == '.') { if (pos != 6){ Toolkit.getDefaultToolkit().beep(); return; } } else if (!isValid(c,pos)){ Toolkit.getDefaultToolkit().beep(); return; } super.insertString(pos, new Character(c).toString(), attributeSet); pos++; } } /** * Checks if the specified position is a place where a * seperator can be placed. * @param pos The position * @return True a seperator can be placed on the specified postion */ private boolean isSeperatorPosition(int pos) { if (pos == 2 || pos == 5) return true; else return false; } private boolean isValid(char c, int pos) { //Only digits allowed if (! Character.isDigit(c)) return false; //Checks Hour if (pos == 0 && c >'2') return false; //Checks Minuts if (pos == 2 && c >'5') return false; //Checks Secounds if (pos == 4 && c >'5') return false; return true; } /** * Checks if the value if a valid date * @return True if the value is a valid date. */ public boolean check () { try { java.util.Date d; if (getLength()==6) { timeFormatShort.setLenient(false); d =timeFormatShort.parse(getText(0,getLength()), new ParsePosition(0)); } else { timeFormat.setLenient(false); d =timeFormat.parse(getText(0,getLength()), new ParsePosition(0)); } if (d == null) return false; else return true; } catch(Exception e) { return false; } } } /* * CVS Log * $Log: TMDocument.java,v $ * Revision 1.1.1.1 2001/06/06 10:32:29 kleber * Init commit for DICOMscope 3.5 * Create new CVS * */ dicomscope-3.6.0/tkgui/de/microtherapy/tools/text/document/dicom/UIDocument.java0000644000265600020320000000654611262371077027147 0ustar tilleaadmin/* * * Copyright (C) 1999, Institute for MicroTherapy * * This software and supporting documentation were developed by * * University of Witten/Herdecke * Department of Radiology and MicroTherapy * Institute for MicroTherapy * Medical computer science * * Universitaetsstrasse 142 * 44799 Bochum, Germany * * http://www.microtherapy.de/go/cs * mailto:computer.science@microtherapy.de * * THIS SOFTWARE IS MADE AVAILABLE, AS IS, AND THE INSTITUTE MAKES NO * WARRANTY REGARDING THE SOFTWARE, ITS PERFORMANCE, ITS MERCHANTABILITY * OR FITNESS FOR ANY PARTICULAR USE, FREEDOM FROM ANY COMPUTER DISEASES * OR ITS CONFORMITY TO ANY SPECIFICATION. THE ENTIRE RISK AS TO QUALITY * AND PERFORMANCE OF THE SOFTWARE IS WITH THE USER. * * Author : $Author: kleber $ * Last update : $Date: 2001/06/06 10:32:29 $ * Revision : $Revision: 1.1.1.1 $ * State: $State: Exp $ */ package de.microtherapy.tools.text.document.dicom; import javax.swing.text.*; import javax.swing.*; import javax.swing.event.*; import java.awt.*; /** * Contains a document for DICOM Unique Identifies (UI) values. * A UI contains all digits and the character '.' and has * a limited size of 64. * @author Klaus Kleber */ public class UIDocument extends PlainDocument { private int maxSize = 64; /** * Contstructor. */ public UIDocument() { super(); } /** * Inserts some content into the document. *

* The content will be checked. Only digits and * '.' will be accepted with a linited maximum size of 64. *

* Inserting content causes a write lock to be held while the actual changes are taking place, * followed by notification to the observers on the thread that grabbed the write lock. *

* This method is thread safe, although most Swing methods are not. * Please see Threads and Swing for more information. * @param offs The starting offset >= 0 * @param str The string to insert; does nothing with null/empty strings * @param a The attributes for the inserted content * @exception BadLocationException The given insert position is not a valid position within the document */ public void insertString(int offset, String s, AttributeSet attributeSet) throws BadLocationException { char c; if (s == null) return; int size = s.length(); for (int j = 0; j < size; j++) { //Check limited Size if (offset+j >= maxSize) { Toolkit.getDefaultToolkit().beep(); return; } try { c = s.charAt(j); if (c!= '.'&&!Character.isDigit(c)) { Toolkit.getDefaultToolkit().beep(); return; } } catch(Exception e) { Toolkit.getDefaultToolkit().beep(); return; } super.insertString(offset+j, new Character(c).toString(), attributeSet); } } } /* * CVS Log * $Log: UIDocument.java,v $ * Revision 1.1.1.1 2001/06/06 10:32:29 kleber * Init commit for DICOMscope 3.5 * Create new CVS * */ dicomscope-3.6.0/tkgui/de/microtherapy/tools/text/document/general/0002755000265600020320000000000011262371100024564 5ustar tilleaadmindicomscope-3.6.0/tkgui/de/microtherapy/tools/text/document/general/DateDocument.java0000644000265600020320000000452711262371077030026 0ustar tilleaadmin/* * * Copyright (C) 1999, Institute for MicroTherapy * * This software and supporting documentation were developed by * * University of Witten/Herdecke * Department of Radiology and MicroTherapy * Institute for MicroTherapy * Medical computer science * * Universitaetsstrasse 142 * 44799 Bochum, Germany * * http://www.microtherapy.de/go/cs * mailto:computer.science@microtherapy.de * * THIS SOFTWARE IS MADE AVAILABLE, AS IS, AND THE INSTITUTE MAKES NO * WARRANTY REGARDING THE SOFTWARE, ITS PERFORMANCE, ITS MERCHANTABILITY * OR FITNESS FOR ANY PARTICULAR USE, FREEDOM FROM ANY COMPUTER DISEASES * OR ITS CONFORMITY TO ANY SPECIFICATION. THE ENTIRE RISK AS TO QUALITY * AND PERFORMANCE OF THE SOFTWARE IS WITH THE USER. * * Author : $Author: kleber $ * Last update : $Date: 2001/06/06 10:32:29 $ * Revision : $Revision: 1.1.1.1 $ * State: $State: Exp $ */ package de.microtherapy.tools.text.document.general; import javax.swing.text.*; import javax.swing.*; import javax.swing.event.*; import java.awt.*; /** * @author Klaus Kleber */ public class DateDocument extends PlainDocument { /** * Contstructor. */ public DateDocument() { super(); } /** * Insert a String and checks if the String is a valid input. */ public void insertString( int offset, String s, AttributeSet attributeSet) throws BadLocationException { if (s != null) { s = s.replace(' ', '0'); if (s.length()==10) { for (int i = 0; i < 10; i++) { if (i != 4 || i!=7) insertString(offset+i, s.substring(i,i+1), attributeSet); } return; } try { Integer.parseInt(s); } catch(Exception e) { Toolkit.getDefaultToolkit().beep(); return; } } super.insertString(offset, s, attributeSet); } } /* * CVS Log * $Log: DateDocument.java,v $ * Revision 1.1.1.1 2001/06/06 10:32:29 kleber * Init commit for DICOMscope 3.5 * Create new CVS * */ dicomscope-3.6.0/tkgui/de/microtherapy/tools/text/document/general/DoubleDocument.java0000644000265600020320000000437211262371077030361 0ustar tilleaadmin/* * * Copyright (C) 1999, Institute for MicroTherapy * * This software and supporting documentation were developed by * * University of Witten/Herdecke * Department of Radiology and MicroTherapy * Institute for MicroTherapy * Medical computer science * * Universitaetsstrasse 142 * 44799 Bochum, Germany * * http://www.microtherapy.de/go/cs * mailto:computer.science@microtherapy.de * * THIS SOFTWARE IS MADE AVAILABLE, AS IS, AND THE INSTITUTE MAKES NO * WARRANTY REGARDING THE SOFTWARE, ITS PERFORMANCE, ITS MERCHANTABILITY * OR FITNESS FOR ANY PARTICULAR USE, FREEDOM FROM ANY COMPUTER DISEASES * OR ITS CONFORMITY TO ANY SPECIFICATION. THE ENTIRE RISK AS TO QUALITY * AND PERFORMANCE OF THE SOFTWARE IS WITH THE USER. * * Author : $Author: kleber $ * Last update : $Date: 2001/06/06 10:32:29 $ * Revision : $Revision: 1.1.1.1 $ * State: $State: Exp $ */ package de.microtherapy.tools.text.document.general; import javax.swing.text.*; import javax.swing.*; import javax.swing.event.*; import java.awt.*; /** * Contains a document for double values */ public class DoubleDocument extends PlainDocument { int posSep = -1; boolean haveSign = false; public void insertString(int offset, String s, AttributeSet attributeSet) throws BadLocationException { if (s== null) return; if (s.equals("")) return; if ((posSep ==-1)&&(s.equals(".") )) posSep = offset; else if((offset == 0) && (s.equals("+") ||s.equals("-"))) haveSign = true; else try { Double.valueOf(s); } catch(Exception e) { //Toolkit.getDefaultToolkit().beep(); return; } super.insertString(offset, s, attributeSet); } public void remove(int offset, int length) throws BadLocationException { if((offset <= posSep)&& (offset +length >= posSep))posSep =-1; if(haveSign && offset == 0) haveSign = false; super.remove(offset, length); } } /* * CVS Log * $Log: DoubleDocument.java,v $ * Revision 1.1.1.1 2001/06/06 10:32:29 kleber * Init commit for DICOMscope 3.5 * Create new CVS * */ dicomscope-3.6.0/tkgui/de/microtherapy/tools/text/document/general/DoubleUnsignedDocument.java0000644000265600020320000000407011262371100032034 0ustar tilleaadmin/* * * Copyright (C) 1999, Institute for MicroTherapy * * This software and supporting documentation were developed by * * University of Witten/Herdecke * Department of Radiology and MicroTherapy * Institute for MicroTherapy * Medical computer science * * Universitaetsstrasse 142 * 44799 Bochum, Germany * * http://www.microtherapy.de/go/cs * mailto:computer.science@microtherapy.de * * THIS SOFTWARE IS MADE AVAILABLE, AS IS, AND THE INSTITUTE MAKES NO * WARRANTY REGARDING THE SOFTWARE, ITS PERFORMANCE, ITS MERCHANTABILITY * OR FITNESS FOR ANY PARTICULAR USE, FREEDOM FROM ANY COMPUTER DISEASES * OR ITS CONFORMITY TO ANY SPECIFICATION. THE ENTIRE RISK AS TO QUALITY * AND PERFORMANCE OF THE SOFTWARE IS WITH THE USER. * * Author : $Author: kleber $ * Last update : $Date: 2001/06/06 10:32:29 $ * Revision : $Revision: 1.1.1.1 $ * State: $State: Exp $ */ package de.microtherapy.tools.text.document.general; import javax.swing.text.*; import javax.swing.*; import javax.swing.event.*; import java.awt.*; /** * Contains a document for unsigned double vaules */ public class DoubleUnsignedDocument extends PlainDocument { int posSep = -1; public void insertString(int offset, String s, AttributeSet attributeSet) throws BadLocationException { if ((posSep ==-1)&&(s.equals(".") ||s.equals(","))) posSep = offset; else try { Double.valueOf(s); } catch(Exception e) { //Toolkit.getDefaultToolkit().beep(); return; } super.insertString(offset, s, attributeSet); } public void remove(int offset, int length) throws BadLocationException { if((offset <= posSep)&& (offset +length >= posSep))posSep =-1; super.remove(offset, length); } } /* * CVS Log * $Log: DoubleUnsignedDocument.java,v $ * Revision 1.1.1.1 2001/06/06 10:32:29 kleber * Init commit for DICOMscope 3.5 * Create new CVS * */ dicomscope-3.6.0/tkgui/de/microtherapy/tools/text/document/general/FloatDocument.java0000644000265600020320000000430211262371100030170 0ustar tilleaadmin/* * * Copyright (C) 1999, Institute for MicroTherapy * * This software and supporting documentation were developed by * * University of Witten/Herdecke * Department of Radiology and MicroTherapy * Institute for MicroTherapy * Medical computer science * * Universitaetsstrasse 142 * 44799 Bochum, Germany * * http://www.microtherapy.de/go/cs * mailto:computer.science@microtherapy.de * * THIS SOFTWARE IS MADE AVAILABLE, AS IS, AND THE INSTITUTE MAKES NO * WARRANTY REGARDING THE SOFTWARE, ITS PERFORMANCE, ITS MERCHANTABILITY * OR FITNESS FOR ANY PARTICULAR USE, FREEDOM FROM ANY COMPUTER DISEASES * OR ITS CONFORMITY TO ANY SPECIFICATION. THE ENTIRE RISK AS TO QUALITY * AND PERFORMANCE OF THE SOFTWARE IS WITH THE USER. * * Author : $Author: kleber $ * Last update : $Date: 2001/06/06 10:32:29 $ * Revision : $Revision: 1.1.1.1 $ * State: $State: Exp $ */ package de.microtherapy.tools.text.document.general; import javax.swing.text.*; import javax.swing.*; import javax.swing.event.*; import java.awt.*; /** * Contains a document for float vaules */ public class FloatDocument extends PlainDocument { int posSep = -1; boolean haveSign = false; public void insertString(int offset, String s, AttributeSet attributeSet) throws BadLocationException { if ((posSep ==-1)&&(s.equals(".") ||s.equals(","))) posSep = offset; else if((offset == 0) && (s.equals("+") ||s.equals("-"))) haveSign = true; else try { Float.valueOf(s); } catch(Exception e) { Toolkit.getDefaultToolkit().beep(); return; } super.insertString(offset, s, attributeSet); } public void remove(int offset, int length) throws BadLocationException { if((offset <= posSep)&& (offset +length >= posSep))posSep =-1; if(haveSign && offset == 0) haveSign = false; super.remove(offset, length); } } /* * CVS Log * $Log: FloatDocument.java,v $ * Revision 1.1.1.1 2001/06/06 10:32:29 kleber * Init commit for DICOMscope 3.5 * Create new CVS * */ dicomscope-3.6.0/tkgui/de/microtherapy/tools/text/document/general/IntegerDocument.java0000644000265600020320000000375011262371100030526 0ustar tilleaadmin/* * * Copyright (C) 1999, Institute for MicroTherapy * * This software and supporting documentation were developed by * * University of Witten/Herdecke * Department of Radiology and MicroTherapy * Institute for MicroTherapy * Medical computer science * * Universitaetsstrasse 142 * 44799 Bochum, Germany * * http://www.microtherapy.de/go/cs * mailto:computer.science@microtherapy.de * * THIS SOFTWARE IS MADE AVAILABLE, AS IS, AND THE INSTITUTE MAKES NO * WARRANTY REGARDING THE SOFTWARE, ITS PERFORMANCE, ITS MERCHANTABILITY * OR FITNESS FOR ANY PARTICULAR USE, FREEDOM FROM ANY COMPUTER DISEASES * OR ITS CONFORMITY TO ANY SPECIFICATION. THE ENTIRE RISK AS TO QUALITY * AND PERFORMANCE OF THE SOFTWARE IS WITH THE USER. * * Author : $Author: kleber $ * Last update : $Date: 2001/06/06 10:32:29 $ * Revision : $Revision: 1.1.1.1 $ * State: $State: Exp $ */ package de.microtherapy.tools.text.document.general; import javax.swing.text.*; import javax.swing.*; import javax.swing.event.*; import java.awt.*; /** * Contains a document for integer values */ public class IntegerDocument extends PlainDocument { int maxSize; public IntegerDocument( int maxSize) { super(); this.maxSize = maxSize; } public void insertString(int offset, String s, AttributeSet attributeSet) throws BadLocationException { if (offset >= maxSize) { Toolkit.getDefaultToolkit().beep(); return; } try { Integer.valueOf(s); } catch(Exception e) { Toolkit.getDefaultToolkit().beep(); return; } super.insertString(offset, s, attributeSet); } } /* * CVS Log * $Log: IntegerDocument.java,v $ * Revision 1.1.1.1 2001/06/06 10:32:29 kleber * Init commit for DICOMscope 3.5 * Create new CVS * */ dicomscope-3.6.0/tkgui/de/microtherapy/tools/text/document/general/LimitedSizeDocument.java0000644000265600020320000000406711262371100031355 0ustar tilleaadmin/* * * Copyright (C) 1999, Institute for MicroTherapy * * This software and supporting documentation were developed by * * University of Witten/Herdecke * Department of Radiology and MicroTherapy * Institute for MicroTherapy * Medical computer science * * Universitaetsstrasse 142 * 44799 Bochum, Germany * * http://www.microtherapy.de/go/cs * mailto:computer.science@microtherapy.de * * THIS SOFTWARE IS MADE AVAILABLE, AS IS, AND THE INSTITUTE MAKES NO * WARRANTY REGARDING THE SOFTWARE, ITS PERFORMANCE, ITS MERCHANTABILITY * OR FITNESS FOR ANY PARTICULAR USE, FREEDOM FROM ANY COMPUTER DISEASES * OR ITS CONFORMITY TO ANY SPECIFICATION. THE ENTIRE RISK AS TO QUALITY * AND PERFORMANCE OF THE SOFTWARE IS WITH THE USER. * * Author : $Author: kleber $ * Last update : $Date: 2001/06/06 10:32:29 $ * Revision : $Revision: 1.1.1.1 $ * State: $State: Exp $ */ package de.microtherapy.tools.text.document.general; import javax.swing.text.*; import javax.swing.*; import javax.swing.event.*; import java.awt.*; /** * Contains a document for Strings with limited Size * @author Klaus Kleber */ public class LimitedSizeDocument extends PlainDocument { private int maxSize = 64; /** * Contstructor. */ public LimitedSizeDocument(int maxSize) { super(); this.maxSize = maxSize; } /** * Insert a String and checks if the String is a valid input. */ public void insertString(int offset, String s, AttributeSet attributeSet) throws BadLocationException { if (s == null) return; int size = s.length(); if (offset+size >= maxSize) { Toolkit.getDefaultToolkit().beep(); return; } super.insertString(offset, s, attributeSet); } } /* * CVS Log * $Log: LimitedSizeDocument.java,v $ * Revision 1.1.1.1 2001/06/06 10:32:29 kleber * Init commit for DICOMscope 3.5 * Create new CVS * */ dicomscope-3.6.0/tkgui/dicomPrint/0002755000265600020320000000000011262371100016217 5ustar tilleaadmindicomscope-3.6.0/tkgui/dicomPrint/ImageSettingDialog.java0000644000265600020320000003057411262371100022571 0ustar tilleaadmin/* * * Copyright (C) 1999, Institute for MicroTherapy * * This software and supporting documentation were developed by * * University of Witten/Herdecke * Department of Radiology and MicroTherapy * Institute for MicroTherapy * Medical computer science * * Universitaetsstrasse 142 * 44799 Bochum, Germany * * http://www.microtherapy.de/go/cs * mailto:computer.science@microtherapy.de * * THIS SOFTWARE IS MADE AVAILABLE, AS IS, AND THE INSTITUTE MAKES NO * WARRANTY REGARDING THE SOFTWARE, ITS PERFORMANCE, ITS MERCHANTABILITY * OR FITNESS FOR ANY PARTICULAR USE, FREEDOM FROM ANY COMPUTER DISEASES * OR ITS CONFORMITY TO ANY SPECIFICATION. THE ENTIRE RISK AS TO QUALITY * AND PERFORMANCE OF THE SOFTWARE IS WITH THE USER. * * * Author : $Author: kleber $ * Last update : $Date: 2001/06/06 10:32:29 $ * Revision : $Revision: 1.1.1.1 $ * State: $State: Exp $ */ package dicomPrint; import java.util.*; import java.awt.*; import javax.swing.*; import javax.swing.border.*; import jToolkit.gui.*; import viewer.gui.*; import J2Ci.*; /** * This class contains the dialog for * setting the image print options. * * @author Klaus Kleber * @since 01.10.99 */ public class ImageSettingDialog extends JDialog implements CommandButtonListener { //Ids for handling the action Events static final int ID_OK =0; static final int ID_DEFAULT =1; static final int ID_DELETE =2; static final int ID_IMAGEMAGNIFICATION = 200; static final int ID_IMAGESMOOTHING = 201; static final int ID_IMAGECONFIGURATION = 202; /** * Contains the delete Button */ CommandJButton deleteButton; /** * Contains the ob Button */ CommandJButton okButton; /** * Contains the default Button */ CommandJButton defaultButton; /** * Contains current jDVPSStoredPrint object with informations about the print settings of the print job */ jDVPSStoredPrint storedPrint; /** * Contains the DVInterface. */ jDVInterface dvi ; /** * Contains the ComboBox for changing the magnification type */ CommandJComboBox imageMagnificationCombo; /** * Contains the ComboBox for changing the smoothing type */ CommandJComboBox imageSmoothingCombo; /** * Contains the ComboBox for changing the configuration */ CommandJComboBox imageConfigurationCombo; /** * Contains the printImagePreview of the changing image. */ PrintImagePreview printImagePreview; /** * Contains the current PrintPanel */ PrintPanel printPanel; /** * Index oft the changing image. */ int index; boolean activeListener = false; /** * Constructor * * @param printImagePreview Contains the printImagePreview of the changing image. * @param printPanel Contains the current PrintPanel */ public ImageSettingDialog(PrintImagePreview printImagePreview,PrintPanel printPanel) { super(); setLocationRelativeTo(printImagePreview); setModal(true); getContentPane().setLayout(new BorderLayout(10,10)); //Init this.printImagePreview = printImagePreview; this.printPanel = printPanel; dvi = printPanel.getDvi(); storedPrint = printPanel.getStored(); index = printImagePreview.getIndex(); setTitle("Print Layout Options for Image " +(int)(index +1)); //Buttons okButton = new CommandJButton("OK",this,ID_OK); defaultButton = new CommandJButton("Default",this,ID_DEFAULT); deleteButton = new CommandJButton("Delete",this,ID_DELETE); JPanel buttonPanel = new JPanel(); buttonPanel.add(okButton); //buttonPanel.add(defaultButton); buttonPanel.add(deleteButton); JPanel addLeftPanel = new JPanel(new GridBagLayout()); addLeftPanel.setBorder(new TitledBorder("Print Settings")); GridBagConstraints gbc = new GridBagConstraints(); //Magnification gbc.fill = GridBagConstraints.NONE; gbc.weightx = 0.0; gbc.gridwidth = 1; addLeftPanel.add(new JLabel("Magnification"),gbc); addLeftPanel.add(Box.createHorizontalStrut(10),gbc); gbc.fill = GridBagConstraints.BOTH; gbc.gridwidth = GridBagConstraints.REMAINDER; gbc.weightx = 1.0; imageMagnificationCombo = new CommandJComboBox(this, ID_IMAGEMAGNIFICATION); addLeftPanel.add(imageMagnificationCombo,gbc); //Smoothing gbc.fill = GridBagConstraints.NONE; gbc.weightx = 0.0; gbc.gridwidth = 1; addLeftPanel.add(new JLabel("Smoothing"),gbc); addLeftPanel.add(Box.createHorizontalStrut(10),gbc); gbc.fill = GridBagConstraints.BOTH; gbc.gridwidth = GridBagConstraints.REMAINDER; gbc.weightx = 1.0; imageSmoothingCombo = new CommandJComboBox(this, ID_IMAGESMOOTHING); addLeftPanel.add(imageSmoothingCombo,gbc); //Configuration gbc.fill = GridBagConstraints.NONE; gbc.weightx = 0.0; gbc.gridwidth = 1; addLeftPanel.add(new JLabel("Configuration"),gbc); addLeftPanel.add(Box.createHorizontalStrut(10),gbc); gbc.fill = GridBagConstraints.BOTH; gbc.gridwidth = GridBagConstraints.REMAINDER; gbc.weightx = 1.0; imageConfigurationCombo = new CommandJComboBox(this, ID_IMAGECONFIGURATION); addLeftPanel.add(imageConfigurationCombo,gbc); getContentPane().add(addLeftPanel, BorderLayout.CENTER); getContentPane().add(buttonPanel,BorderLayout.SOUTH); pack(); init(); activeListener = true; } /** * Initializes the widgets with values form the jDVIInterface */ public void init() { /////////////////////////////////////7 //Magnification //////////////////////////////// Vector magnificationList = new Vector(); int sizeFor = dvi.getTargetPrinterNumberOfMagnificationTypes(dvi.getCurrentPrinter()); for (int i = 0; i < sizeFor;i++) { String t = dvi.getTargetPrinterMagnificationType(dvi.getCurrentPrinter(), i ); magnificationList.addElement(t); } magnificationList.addElement(new String("Default")); imageMagnificationCombo.setModel(new DefaultComboBoxModel(magnificationList)); if (storedPrint.getImageMagnificationType(printImagePreview.getIndex()) != null) imageMagnificationCombo.setSelectedItem(storedPrint.getImageMagnificationType(printImagePreview.getIndex())); else imageMagnificationCombo.setSelectedIndex(imageMagnificationCombo.getItemCount()-1); insertSmoothing(); /////////////////////////////// //Configuration ///////////////////////////////// Vector configurationList = new Vector(); sizeFor = dvi.getTargetPrinterNumberOfConfigurationSettings(dvi.getCurrentPrinter()); for (int i = 0; i < sizeFor;i++) { String t = dvi.getTargetPrinterConfigurationSetting(dvi.getCurrentPrinter(), i ); configurationList.addElement(t); } configurationList.addElement(new String("Default")); imageConfigurationCombo.setModel(new DefaultComboBoxModel(configurationList)); if (storedPrint.getImageConfigurationInformation(printImagePreview.getIndex()) != null) imageConfigurationCombo.setSelectedItem(storedPrint.getImageConfigurationInformation(printImagePreview.getIndex())); else imageConfigurationCombo.setSelectedIndex(imageConfigurationCombo.getItemCount()-1); } /** * Initialize the imageSmoothing. */ public void insertSmoothing() { Vector smoothingList = new Vector(); if (((storedPrint.getImageMagnificationType(printImagePreview.getIndex()) != null) &&(storedPrint.getImageMagnificationType(printImagePreview.getIndex()).equals("CUBIC")))) { int sizeFor = dvi.getTargetPrinterNumberOfSmoothingTypes(dvi.getCurrentPrinter()); for (int i = 0; i < sizeFor;i++) { String t = dvi.getTargetPrinterSmoothingType(dvi.getCurrentPrinter(), i ); smoothingList.addElement(t); } } smoothingList.addElement(new String("Default")); imageSmoothingCombo.setModel(new DefaultComboBoxModel(smoothingList)); if (storedPrint.getImageSmoothingType(printImagePreview.getIndex()) != null) imageSmoothingCombo.setSelectedItem(storedPrint.getImageSmoothingType(printImagePreview.getIndex())); else imageSmoothingCombo.setSelectedIndex(imageSmoothingCombo.getItemCount()-1); } /** * Handle the ActionEvents * * @param id ID of the fireing Component */ public void buttonClicked (int id) { if (activeListener) { switch (id) { case ID_DELETE: setVisible (false); printPanel.deleteImage(printImagePreview.getIndex()); break; case ID_OK: if ( (storedPrint.getImageConfigurationInformation(index) ==null)&& (storedPrint.getImageSmoothingType(index)== null)&& (storedPrint.getImageMagnificationType(index)== null)) printImagePreview.setParameter(false); else printImagePreview.setParameter(true); setVisible (false); break; case ID_DEFAULT: //Changing the values in the ComboBoxes results in calling the ActionEvents //This results in calling buttonClicked(id); imageMagnificationCombo.setSelectedIndex(imageMagnificationCombo.getItemCount()-1); imageSmoothingCombo.setSelectedIndex(imageSmoothingCombo.getItemCount()-1); imageConfigurationCombo.setSelectedIndex(imageConfigurationCombo.getItemCount()-1); //setVisible (false); printImagePreview.setParameter(false); break; case ID_IMAGEMAGNIFICATION: if ( imageMagnificationCombo.getSelectedIndex() >= dvi.getTargetPrinterNumberOfMagnificationTypes(dvi.getCurrentPrinter())) storedPrint.setImageMagnificationType(index,new String("")); else storedPrint.setImageMagnificationType(index, (String)imageMagnificationCombo.getSelectedItem()); insertSmoothing(); break; case ID_IMAGESMOOTHING: if ( imageSmoothingCombo.getSelectedIndex() >= dvi.getTargetPrinterNumberOfSmoothingTypes(dvi.getCurrentPrinter())) storedPrint.setImageSmoothingType(index,new String("")); else storedPrint.setImageSmoothingType(index,(String)imageSmoothingCombo.getSelectedItem()); break; case ID_IMAGECONFIGURATION: if ( imageConfigurationCombo.getSelectedIndex() >= dvi.getTargetPrinterNumberOfConfigurationSettings(dvi.getCurrentPrinter())) storedPrint.setImageConfigurationInformation(index,new String("")); else storedPrint.setImageConfigurationInformation(index,(String)imageConfigurationCombo.getSelectedItem()); break; } } } } /* * CVS Log * $Log: ImageSettingDialog.java,v $ * Revision 1.1.1.1 2001/06/06 10:32:29 kleber * Init commit for DICOMscope 3.5 * Create new CVS * */ dicomscope-3.6.0/tkgui/dicomPrint/PreviewMouseHandler.java0000644000265600020320000000476311262371100023022 0ustar tilleaadmin/* * * Copyright (C) 1999, Institute for MicroTherapy * * This software and supporting documentation were developed by * * University of Witten/Herdecke * Department of Radiology and MicroTherapy * Institute for MicroTherapy * Medical computer science * * Universitaetsstrasse 142 * 44799 Bochum, Germany * * http://www.microtherapy.de/go/cs * mailto:computer.science@microtherapy.de * * THIS SOFTWARE IS MADE AVAILABLE, AS IS, AND THE INSTITUTE MAKES NO * WARRANTY REGARDING THE SOFTWARE, ITS PERFORMANCE, ITS MERCHANTABILITY * OR FITNESS FOR ANY PARTICULAR USE, FREEDOM FROM ANY COMPUTER DISEASES * OR ITS CONFORMITY TO ANY SPECIFICATION. THE ENTIRE RISK AS TO QUALITY * AND PERFORMANCE OF THE SOFTWARE IS WITH THE USER. * * * Author : $Author: kleber $ * Last update : $Date: 2001/06/06 10:32:29 $ * Revision : $Revision: 1.1.1.1 $ * State: $State: Exp $ */ package dicomPrint; import java.awt.event.*; import java.awt.*; import javax.swing.*; /** * Handles the MouseEvents of the PrintPanel * * @author Klaus Kleber */ public class PreviewMouseHandler extends MouseAdapter { /** * Contains the current PrintPanel */ PrintPanel printPanel; /** * Contains the current marked PrintImagePreview * */ PrintImagePreview currentMarkedPreview; /** * Constructor * * @param printPanel Contains the current PrintPanel */ public PreviewMouseHandler (PrintPanel printPanel) { this.printPanel = printPanel; } /** * Handles the MouseClick Events. DoubleClick on a PrintImagePreview results in opening an ImageSettingDialog and * a normal click results in marking the clicked PrintImagePreview. * * @param e MuseEvent */ public void mouseClicked(MouseEvent e) { PrintImagePreview nextPreview = (PrintImagePreview)e.getSource(); if (currentMarkedPreview != null) currentMarkedPreview.setMarked(false); nextPreview.setMarked(true); currentMarkedPreview = nextPreview; //handles the doubleClick if (e.getClickCount() == 2) { if (nextPreview.getReferToImage())(new ImageSettingDialog(nextPreview,printPanel )).setVisible(true); } } } /* * CVS Log * $Log: PreviewMouseHandler.java,v $ * Revision 1.1.1.1 2001/06/06 10:32:29 kleber * Init commit for DICOMscope 3.5 * Create new CVS * */ dicomscope-3.6.0/tkgui/dicomPrint/PreviewPanel.java0000644000265600020320000003371111262371100021466 0ustar tilleaadmin/* * * Copyright (C) 1999, Institute for MicroTherapy * * This software and supporting documentation were developed by * * University of Witten/Herdecke * Department of Radiology and MicroTherapy * Institute for MicroTherapy * Medical computer science * * Universitaetsstrasse 142 * 44799 Bochum, Germany * * http://www.microtherapy.de/go/cs * mailto:computer.science@microtherapy.de * * THIS SOFTWARE IS MADE AVAILABLE, AS IS, AND THE INSTITUTE MAKES NO * WARRANTY REGARDING THE SOFTWARE, ITS PERFORMANCE, ITS MERCHANTABILITY * OR FITNESS FOR ANY PARTICULAR USE, FREEDOM FROM ANY COMPUTER DISEASES * OR ITS CONFORMITY TO ANY SPECIFICATION. THE ENTIRE RISK AS TO QUALITY * AND PERFORMANCE OF THE SOFTWARE IS WITH THE USER. * * * Author : $Author: kleber $ * Last update : $Date: 2001/06/06 10:32:29 $ * Revision : $Revision: 1.1.1.1 $ * State: $State: Exp $ */ package dicomPrint; import javax.swing.*; import java.awt.*; import java.awt.image.*; import main.*; import javax.swing.border.*; import J2Ci.*; /** * This class contains the GUI for a page of a print job. * This page can have the orientation portrait ( portrait = true) * or landscape (portrait = false) and will be drawn in a JPanel. * The page have a table of PrintImagePreviews. * @author Klaus Kleber */ public class PreviewPanel extends JPanel { /** * Contains the PrintImagePreview of this page */ private PrintImagePreview[] printImagePreviewList; /** * Contains the current jDVPSStoredPrint */ private jDVPSStoredPrint storedPrint; /** * Contains the x -coordiante for the page */ private int x; /** * Contains the y - coordinate for the page */ private int y; /** * Contains the height of the page */ private int h; /** * Contains the width of the page */ private int w; /** * Width of a film box */ private double filmBoxWidth ; /** * Height of a film box */ private double filmBoxHeight; /** * Default width of a film box */ private double defaultFilmBoxWidth = 11; /** * Default height of a film box */ private double defaultFilmBoxHeight = 14; /** * DVI Interface */ private jDVInterface dvi; /** * Contains the current page */ private JPanel page = new JPanel(); /** * if true the page will be portrait, esle landscape */ private boolean portrait = true; /** * Contains the minimum border size */ private int border = 10; /** * Conatins the distance between the PrintImagePreview */ private int gaps = 5; /** * Contains the current number of cols */ private int cols = 1; /** * Contains the current number of rows */ private int rows = 1; /** * Contains the current MouseHandler. */ private PreviewMouseHandler previewMouseHandler; /** * Contains the current size for the PreviewPanel */ private Dimension size = new Dimension(); /** * Default value for the empty image */ private Color defaultEmptyImageColor = Color.black; /** * Contains the color of the film */ private Color emptyImageColor = defaultEmptyImageColor; /** * Default value for the film */ private Color defaultFilmColor = Color.black; /** * Contains the color of the film */ private Color filmColor = defaultFilmColor; /** * true, if last page should be displayed, else the first page will be displayed; */ private boolean showLastPage = false; /** * True if the PrintImagePreview should displayed as Hardcopy. * If false the PrintImagePreview will displayed as Softcopy */ private boolean printLUT = true; private boolean notifyBrowser = false; /** * Constructor. * @param previewMouseHandler Contains the current MouseHandler. * @param cols Contains the number of cols. * @param rows Contains the number of rows. * @param storedPrint Contains the current jDVPSStoredPrint Object. * @param dvi Contains the current jDVInterface Object. */ public PreviewPanel(PreviewMouseHandler previewMouseHandler, int cols, int rows,jDVPSStoredPrint storedPrint, jDVInterface dvi) { this.storedPrint = storedPrint; this.dvi = dvi; setLayout(null); //setBackground(backgroundColor); this.previewMouseHandler= previewMouseHandler; this.cols = cols; this.rows = rows; filmBoxWidth = defaultFilmBoxWidth; filmBoxHeight = defaultFilmBoxHeight; } /** * Paints the component in the specified Graphics object * @param g Graphics */ public synchronized void paintComponent(Graphics g) { if (! size.equals(getSize())) { size = getSize(); calculatePage(); } page.validate(); super.paintComponent(g); } /** * Calculates the the page */ private void calculatePage() { //Removes all obejcts removeAll(); page.removeAll(); //Calculates the sizes for portrait if (portrait) { h = size.height-border; w = (int)(h*(filmBoxWidth/filmBoxHeight)); if (w > size.width-border) { double scaling = (double)w/(double)(size.width-border); h = (int)(h/scaling); w = size.width-border; } } //Calculates the size for landscape else { w = size.width-border; h = (int)(w*(filmBoxWidth/filmBoxHeight)); if (h > size.height-border) { double scaling = (double)h/(double)(size.height-border); w = (int)(w/scaling); h= size.height-border; } } //Sets the size of the page page.setSize(new Dimension(w, h)); //Sets the location of the page x = (size.width-w)/2; y = (size.height-h)/2; page.setLocation(x,y); page.setBackground(filmColor); page.setBorder(new EmptyBorder(gaps, gaps,gaps,gaps)); page.setLayout(new GridLayout(rows,cols,gaps,gaps)); printImagePreviewList = new PrintImagePreview[rows*cols]; int numberOfVisible = Math.min(rows*cols, storedPrint.getNumberOfImages()); int pagesInJob = storedPrint.getNumberOfImages()/printImagePreviewList.length; if (storedPrint.getNumberOfImages()%printImagePreviewList.length>0)pagesInJob++; int offset = 0; for (int i = 0; i 0)) { //Zero ist the last printed Componenet //Bad hack printImagePreviewList[0].notifyBrowser = true; } notifyBrowser = false; } add(page); } /** * Sets the orentation of the page. If portrait = true the page will be displayed in * portrait else in landscape. * * @param portrait If portrait = true the page will be displayed in * portrait else in landscape. */ public synchronized void setOrientation(boolean portrait) { if (this.portrait != portrait) { this.portrait = portrait; calculatePage(); repaint(); page.updateUI(); } } /** * Sets rows and cols of the page * @param rows Number of cols of the page * @param cols Number of cols of the page */ public synchronized void setRowsCols(int rows, int cols) { this.cols = cols; this.rows = rows; calculatePage(); repaint(); page.updateUI(); } /** * Updates the Print Preview */ public synchronized void updatePrintPreview() { calculatePage(); repaint(); page.updateUI(); } /** * Updates the Print Preview */ public synchronized void instertPrint() { if (printImagePreviewList== null) { calculatePage(); } else { int index = storedPrint.getNumberOfImages(); if (index<= rows*cols) { PrintImagePreview im = printImagePreviewList[index-1]; im.setReferToImage(); im.setParameter(havePrintSettings(index-1)); } } repaint(); page.updateUI(); } /** * True if the PrintImagePreview should displayed as Hardcopy. * If false the PrintImagePreview will displayed as Softcopy */ public void setPrintLUT(boolean printLUT) { this.printLUT = printLUT; } /** * Updates the Print Preview. *@param storedPrint * @param portrait * @param rows Number of cols of the page * @param cols Number of cols of the page */ public synchronized void updatePrintPreview( jDVPSStoredPrint storedPrint, boolean portrait, int rows, int cols) { this.storedPrint = storedPrint; this.portrait = portrait; this.rows = rows; this.cols = cols; notifyBrowser = true; calculatePage(); repaint(); page.updateUI(); } /** * Sets the film size. * @param filmBoxWidth width of the film box. * @param filmBoxHeight height of the film box. */ public void setFilmSize(double filmBoxWidth, double filmBoxHeight) { this.filmBoxHeight = filmBoxHeight; this.filmBoxWidth = filmBoxWidth; updatePrintPreview(); } /** * Sets the film size of the default value. */ public void setDefaultFilmSize() { filmBoxWidth = defaultFilmBoxWidth; filmBoxHeight = defaultFilmBoxHeight; updatePrintPreview(); } /** * Sets the color of the film */ public void setFilmColor(int grayValue) { if (grayValue == -1) filmColor = defaultFilmColor; else filmColor = new Color(grayValue, grayValue, grayValue); updatePrintPreview(); } /** * Sets the film box color and the empty image color without any update. Only gray colors can be set by a single * gray color value. * @param fc Gray color value of the film box. * @param eic Gray color value of empfy image boxes */ public void setFilmAndEmptyImageColorWithoutUpdate(int fc, int eic) { if (fc == -1) filmColor = defaultFilmColor; else filmColor = new Color(fc, fc, fc); if (eic == -1) emptyImageColor = defaultEmptyImageColor; else emptyImageColor = new Color(eic, eic, eic); } /** * Sets the film box color and the empty image color. Only gray colors can be set by a single * gray color value. * @param fc Gray color value of the film box. * @param eic Gray color value of empfy image boxes */ public void setFilmAndEmptyImageColor(int fc, int eic) { if (fc == -1) filmColor = defaultFilmColor; else filmColor = new Color(fc, fc, fc); if (eic == -1) emptyImageColor = defaultEmptyImageColor; else emptyImageColor = new Color(eic, eic, eic); updatePrintPreview(); } /** * Sets the color of the film to the default value (black). */ public void setDefaultFilmColor() { filmColor = defaultFilmColor; updatePrintPreview(); } /** * Sets the color of the film. Only gray colors can be set by a single * gray color value. * @param grayValue */ public void setEmptyImageColor(int grayValue) { if (grayValue == -1) emptyImageColor = defaultEmptyImageColor; else emptyImageColor = new Color(grayValue, grayValue, grayValue); updatePrintPreview(); } /** * Sets the color of the film to the default value (black) */ public void setDefaultEmptyImageColor() { emptyImageColor = defaultEmptyImageColor; updatePrintPreview(); } /** * Sets a new jDVPSStoredPrint * @param storedPrint New jDVPSStoredPrint. */ public void setStoredPrint(jDVPSStoredPrint storedPrint) { this.storedPrint = storedPrint; } /** * Check if the image with the specified index have his own print settings * @param index Index of the image * @return true if the image has his own print settings */ public boolean havePrintSettings(int index) { if (index <= storedPrint.getNumberOfImages()) { if ( (storedPrint.getImageConfigurationInformation(index) ==null)&& (storedPrint.getImageSmoothingType(index)== null)&& (storedPrint.getImageMagnificationType(index)== null)) return false; else return true; } return false; } } /* * CVS Log * $Log: PreviewPanel.java,v $ * Revision 1.1.1.1 2001/06/06 10:32:29 kleber * Init commit for DICOMscope 3.5 * Create new CVS * */ dicomscope-3.6.0/tkgui/dicomPrint/PrintImagePreview.java0000644000265600020320000001651611262371100022472 0ustar tilleaadmin/* * * Copyright (C) 1999, Institute for MicroTherapy * * This software and supporting documentation were developed by * * University of Witten/Herdecke * Department of Radiology and MicroTherapy * Institute for MicroTherapy * Medical computer science * * Universitaetsstrasse 142 * 44799 Bochum, Germany * * http://www.microtherapy.de/go/cs * mailto:computer.science@microtherapy.de * * THIS SOFTWARE IS MADE AVAILABLE, AS IS, AND THE INSTITUTE MAKES NO * WARRANTY REGARDING THE SOFTWARE, ITS PERFORMANCE, ITS MERCHANTABILITY * OR FITNESS FOR ANY PARTICULAR USE, FREEDOM FROM ANY COMPUTER DISEASES * OR ITS CONFORMITY TO ANY SPECIFICATION. THE ENTIRE RISK AS TO QUALITY * AND PERFORMANCE OF THE SOFTWARE IS WITH THE USER. * * * Author : $Author: kleber $ * Last update : $Date: 2001/06/06 10:32:29 $ * Revision : $Revision: 1.1.1.1 $ * State: $State: Exp $ */ package dicomPrint; import java.awt.*; import javax.swing.*; import javax.swing.border.*; import java.awt.*; import java.awt.image.*; import J2Ci.*; import main.*; /** * Objects of this class represent a preview for one place on the current page * in the current print job. A PrintImagePreview have a border (with size = gaps) * and a inlinePanel containig the ImagePreview. * @author Klaus Kleber */ public class PrintImagePreview extends JPanel { /** * Contains the Preview */ private BufferedImage previewImage; /** * Contains the size of the gaps on each side. */ private int gaps = 2; /** * Contains index of the image if exits. */ private int index; /** * Contains the GUI of the PrintImagePreview without the border */ private JPanel inlinePanel; /** * if true the image have his own print settings */ private boolean haveParameter = false; /** * if true the PrintImagePreview refers to an image */ private boolean referToImage = false; /** * Contains the color of the selecting border. */ private Color markedColor= Color.red; /** * Contains the background color if the PrintImagePreview does not reffer to an image. */ private Color emptyImageColor; /** * Contains the background color for PrintImagePreviews refering to an image. */ private Color referColor ; /** * Contains the jDVInterface */ private jDVInterface dvi; boolean printLUT = true; public boolean notifyBrowser = false; /** * Constructor * * @param index a */ public PrintImagePreview(int index,Color emptyImageColor, Color referColor, jDVInterface dvi, boolean printLUT) { this.dvi = dvi; this.index = index; this.referColor = referColor; this.emptyImageColor = emptyImageColor; this.printLUT = printLUT; setLayout(new BorderLayout()); inlinePanel = new JPanel(); setBackground(emptyImageColor); inlinePanel.setBackground(emptyImageColor); EmptyBorder eb = new EmptyBorder(gaps, gaps, gaps, gaps); setBorder(eb); add(inlinePanel, BorderLayout.CENTER); } /** * Paints the PrintImagePreview. * If the PrintImagePreview refers to an image the a preview will be created. * @param g Contains the curren Graphics object */ public void paint(Graphics g) { super.paint(g); //Current Size int sizeWidth = this.getSize().width-2*gaps; int sizeHeight = this.getSize().height-2*gaps; //if the PrintImagePreview refer to an image the preview will be // calculated if (referToImage) { //only the previewImage does not exits if (previewImage == null) { //Loads the preview dvi.setMaxPrintPreviewWidthHeight(sizeWidth, sizeHeight); int status = dvi.loadPrintPreview(index, printLUT,true); jIntByRef widthP = new jIntByRef(); jIntByRef widthH = new jIntByRef(); status = dvi.getPrintPreviewWidthHeight(widthP, widthH); DataBufferByte dbb = new DataBufferByte(new byte[(int)dvi.getPrintPreviewSize()], (int)dvi.getPrintPreviewSize()); status = dvi.getPrintPreviewBitmap(dbb.getData(), (long) dbb.getSize()); dvi.unloadPrintPreview(); //Create new Image if (status == jE_Condition.EC_Normal) { int bandOffsets[] = {0}; WritableRaster wr = Raster.createInterleavedRaster(dbb, widthP.value, widthH.value, widthP.value, 1, bandOffsets,null); previewImage = new BufferedImage(MainContext.instance().getIndexColorModel(), wr, MainContext.instance().getIndexColorModel().isAlphaPremultiplied(), null); } } //Drwas the image if (previewImage != null) { Graphics2D g2 = (Graphics2D)g; int h = (sizeHeight-previewImage.getHeight())/2; int w = (sizeWidth-previewImage.getWidth())/2; g2.drawImage(previewImage,w+gaps,h+gaps, this); } } //Draw the if (haveParameter) { g.setColor(Color.red); g.drawString("OPTIONS", sizeWidth/2-2*gaps, sizeHeight/2); } if (notifyBrowser) { Controller.instance().fireEvent(new UpdateBrowserEvent(this)); notifyBrowser = false; } } /** * Marked/unmarked the image with a border if a preview exits. * @param marked true sets the border */ public void setMarked(boolean marked) { if (referToImage) { if (marked) setBackground(markedColor); else setBackground(referColor); } } /** * Sets/resets referToImage. * @param referToImage */ public void setReferToImage() { referToImage = true; setBackground(emptyImageColor); inlinePanel.setBackground(emptyImageColor); } /** * Gets index of the image. * @return The index */ public int getIndex() { return index; } /** * Return true if the PrintImagePreview refers to an image. * * @return a */ public boolean getReferToImage() { return referToImage; } /** * Set haveParameter. This value inicates that the image of the PrintImagePreview * has his own print settings. * @param haveParameter a */ public void setParameter(boolean haveParameter) { this.haveParameter = haveParameter; repaint(); } } /* * CVS Log * $Log: PrintImagePreview.java,v $ * Revision 1.1.1.1 2001/06/06 10:32:29 kleber * Init commit for DICOMscope 3.5 * Create new CVS * */ dicomscope-3.6.0/tkgui/dicomPrint/PrintPanel.java0000644000265600020320000023025511262371100021143 0ustar tilleaadmin/* * * Copyright (C) 1999, Institute for MicroTherapy * * This software and supporting documentation were developed by * * University of Witten/Herdecke * Department of Radiology and MicroTherapy * Institute for MicroTherapy * Medical computer science * * Universitaetsstrasse 142 * 44799 Bochum, Germany * * http://www.microtherapy.de/go/cs * mailto:computer.science@microtherapy.de * * THIS SOFTWARE IS MADE AVAILABLE, AS IS, AND THE INSTITUTE MAKES NO * WARRANTY REGARDING THE SOFTWARE, ITS PERFORMANCE, ITS MERCHANTABILITY * OR FITNESS FOR ANY PARTICULAR USE, FREEDOM FROM ANY COMPUTER DISEASES * OR ITS CONFORMITY TO ANY SPECIFICATION. THE ENTIRE RISK AS TO QUALITY * AND PERFORMANCE OF THE SOFTWARE IS WITH THE USER. * * * Author : $Author: kleber $ * Last update : $Date: 2001/06/06 10:32:30 $ * Revision : $Revision: 1.1.1.1 $ * State: $State: Exp $ */ package dicomPrint; import java.awt.*; import java.util.*; import de.microtherapy.tools.text.document.general.*; import javax.swing.*; import javax.swing.border.*; import J2Ci.*; import jToolkit.gui.*; import main.*; /** * This class contains the GUI and with the interactions * for the Print - Panel of DICOMscope. * * @author Klaus Kleber * @since 01.10.99 */ public class PrintPanel extends JPanel implements CommandButtonListener, CommandTextListener, PrintListener, CommandToggleButtonListener { private boolean diplayStoredPrintObjectMode = false; /** * Contains the print Button */ private CommandJButton printButton; /** * Contains the remove-Button */ private CommandJButton removeButton; /** * Contains the ComboBox for changing the printer */ private CommandJComboBox printerCombo; /** * Contains the ComboBox for changing the printer */ private CommandJComboBox storedPrintPrinterCombo; /** * Contains the ComboBox for changing the medium */ private CommandJComboBox mediumCombo;; /** * Contains the ComboBox for changing the film size */ private CommandJComboBox filmSizeCombo; /** * Contains the ComboBox for changing the orientation */ private CommandJComboBox orientationCombo; /** * Contains the ComboBox for changing the priority */ private CommandJComboBox priorityCombo; /** * Contains the ComboBox for changing the priority */ private CommandJTextField copiesText; /** * Contains the ComboBox for changing the magnification type */ private CommandJComboBox magnificationCombo; /** * Contains the ComboBox for changing the smoothing type */ private CommandJComboBox smoothingCombo; /** * Contains the ComboBox for changing the configuration */ private CommandJComboBox configurationCombo; /** * Contains the ComboBox for changing the resolution */ private CommandJComboBox resolutionCombo; /** * Contains the ComboBox for changing the trim setting */ private CommandJComboBox trimCombo; /** * Contains the ComboBox for changing the cropping setting */ private CommandJComboBox croppingCombo; /** * Contains the ComboBox for changing the border setting */ private CommandJComboBox borderCombo; /** * Contains the ComboBox for changing the empty image setting */ private CommandJComboBox emptyImageCombo; /** * Contains the ComboBox for changing the min density setting */ private CommandJComboBox minDensityCombo; /** * Contains the ComboBox for changing the max density setting */ private CommandJComboBox maxDensityCombo; /** * Contains the TextField for illumination */ private CommandJTextField illuminationText; /** * Contains the TextField for reflection */ private CommandJTextField reflectionText; /** * Contains the TextField for annatation text */ private JTextField annotationText; /** * Contains the Checkbox for annatation date */ private JCheckBox annDateCheckBox; /** * Contains the Checkbox for annatation date */ private JCheckBox annPrinterNameCheckBox; /** * Contains the Checkbox for Illumination/Light date */ private JCheckBox annIllCheckBox; private CommandJRadioButton annOnRadioButton; private CommandJRadioButton annOffRadioButton; /** * Contains the ComboBox for rows/cols */ private CommandJComboBox layoutCombo; /** * Contains the ComboBox for presentation Lut */ private CommandJComboBox presentationLutCombo; /** * Contains the ComboBox for the rendering mode */ private CommandJComboBox renderingCombo; private boolean activeListener = false; //Ids for handling the action Events static final int ID_PRINTER = 0; static final int ID_MEDIUM = 1; static final int ID_FILMSIZE = 2; static final int ID_ORIENTATION = 3; static final int ID_LAYOUT = 200; static final int ID_MAGNIFICATION = 4; static final int ID_SMOOTHING = 5; static final int ID_CONFIGURATION = 6; static final int ID_RESOLUTION = 7; static final int ID_TRIM = 8; static final int ID_CROPPING = 9; static final int ID_BORDER = 10; static final int ID_EMPTYIMAGE = 11; static final int ID_MAXDENSITY = 12; static final int ID_MINDENSITY = 13; static final int ID_PRIORITY = 14; static final int ID_COPIES = 15; static final int ID_PRESENTATIONLUT = 50; static final int ID_ILLUMINATION = 51; static final int ID_REFLECTION = 52; static final int ID_RENDERING = 53; static final int ID_PRINT = 100; static final int ID_REMOVE = 101; static final int ID_ANNON = 200; static final int ID_ANNOFF = 201; static final int ID_STOREDPRINTER = 300; static final int ID_SELECTSTOREDPRINTER = 301; static final int ID_CLEARSTOREDPRINT = 302; /** * Default value for the max density */ private int defaultMaxDensityValue = 300; /** * Default value for the max density */ private int defaultMinDensityValue = 20; /** * Contains information about the number of images and pages in the current print job */ private JLabel imageLabel = new JLabel(); /** * Contains the current rows settings. */ private long printerCurrentRows = 1; /** * Contains the current cols settings. */ private long printerCurrentCols = 1; /** * Contains the target printer of the print job */ private String target; /** * Contains current jDVPSStoredPrint object with informations about the print settings of the print job */ private jDVPSStoredPrint storedPrint; /** * Contains the DVInterface. */ private jDVInterface dvi ; /** * This object contains the GUI for the print preview */ private PreviewPanel previewPanel; /** * Contains the mouse handler for all objects of this PrintPanel */ private PreviewMouseHandler previewMouseHandler; /** * Contains the Color for the imageLabel */ private Color labelColor = Color.white; /** * Contains the current Presentation State */ private jDVPresentationState ps; /** * If true cols and rows will be changed if orientation will be changed. */ private boolean currentOrientationIsPortrait = true; /** * */ JTabbedPane tabpane = new JTabbedPane(); private JPanel mainPanel = new JPanel(); private JPanel additionalPanel = new JPanel(); private JPanel buttonPanel = new JPanel(); private JPanel annPanel = new JPanel(); private JPanel storedPrintPanel = new JPanel(); private JPanel pLutPanel = new JPanel(); private GridBagConstraints fGbc = new GridBagConstraints(); /** * Constructor. Builds the GUI and initializes the widgets. * @param dvi Contains the current jDVInterface. * @param config Configuration. */ public PrintPanel(jDVInterface dvi, Hashtable config ) { this.dvi = dvi; this.ps = ps; setLayout(new BorderLayout()); //init MouseHandler previewMouseHandler = new PreviewMouseHandler(this); Controller.instance().addPrintListener(this); storedPrint = dvi.getPrintHandler(); //builds the GUI build(); //Init printerCombo initPrinterCombo(); init(); reset(); activeListener = true; //reset max density orientationCombo.setSelectedItem("Portrait"); storedPrint.setFilmOrientation(jDVPSFilmOrientation.DVPSF_portrait); } /** * Initializes the printerCombo from the jDVInterface */ public void initPrinterCombo() { //////////////////////////////////////////////// //fill printerCombo /////////////////////////////////////////////////// int sizeFor = dvi.getNumberOfTargets(jDVPSPeerType.DVPSE_printAny); printerCombo.removeAllItems(); storedPrintPrinterCombo.removeAllItems(); for (int i = 0; i < sizeFor; i++) { target = dvi.getTargetID(i, jDVPSPeerType.DVPSE_printAny); printerCombo.addItem(dvi.getTargetDescription(target)); storedPrintPrinterCombo.addItem(dvi.getTargetDescription(target)); } //Hier muß normalerweise Targetfestgelegt werden. if (dvi.getCurrentPrinter() == null ) { target = dvi.getTargetID(0, jDVPSPeerType.DVPSE_printAny); dvi.setCurrentPrinter(target); } else target = dvi.getCurrentPrinter(); } /** * Build the GUI of the PrintPanel. * */ public void build() { //Contains the PreviewPanel. JPanel centerPanel = new JPanel(); centerPanel.setLayout(new BorderLayout()); //Contains the buttonPanel and the labelPanel. JPanel downPanel = new JPanel(new GridLayout(1,1)); //Contains information about the print job JPanel labelPanel = new JPanel(); labelPanel.add(imageLabel); //labelPanel.setBackground(Color.lightGray); downPanel.add(labelPanel); //Contains the button bar printButton = new CommandJButton("Print", this, ID_PRINT); removeButton = new CommandJButton("Clear", this, ID_REMOVE); buttonPanel.add(printButton); buttonPanel.add(removeButton); centerPanel.add(downPanel, BorderLayout.SOUTH); //Init previewPanel previewPanel = new PreviewPanel(previewMouseHandler,1,1,storedPrint, dvi); centerPanel.add(previewPanel,BorderLayout.CENTER); add(centerPanel, BorderLayout.CENTER); GridBagConstraints gbc = new GridBagConstraints(); gbc.anchor = GridBagConstraints.NORTHWEST; ///////////////////////////////////////////////////////////// //Print job settings //////////////////////////////////////////////////////////// //Contains the settings for the print job JLabel sizeLabel = new JLabel("MMMMMMMMMMMMMMMMMMMM"); Dimension prefSize = new Dimension(sizeLabel.getPreferredSize().width, sizeLabel.getPreferredSize().height+sizeLabel.getPreferredSize().height/4) ; //mainPanel.setPreferredSize(prefSize); // //Contains the layout settings JPanel layoutPanel = new JPanel(); layoutPanel.setLayout(new GridBagLayout()); layoutPanel.setBorder(new TitledBorder("Options")); //Printer gbc.fill = GridBagConstraints.NONE; gbc.weightx = 0.0; gbc.gridwidth = 1; layoutPanel.add(new JLabel("Printer"),gbc); layoutPanel.add(Box.createHorizontalStrut(10),gbc); gbc.fill = GridBagConstraints.BOTH; gbc.gridwidth = GridBagConstraints.REMAINDER; gbc.weightx = 1.0; printerCombo = new CommandJComboBox(this, ID_PRINTER); printerCombo.setPreferredSize(prefSize); layoutPanel.add(printerCombo,gbc); //Medium gbc.fill = GridBagConstraints.NONE; gbc.weightx = 0.0; gbc.gridwidth = 1; layoutPanel.add(new JLabel("Medium"),gbc); layoutPanel.add(Box.createHorizontalStrut(10),gbc); gbc.fill = GridBagConstraints.BOTH; gbc.gridwidth = GridBagConstraints.REMAINDER; gbc.weightx = 1.0; mediumCombo = new CommandJComboBox(this, ID_MEDIUM); mediumCombo.setPreferredSize(prefSize); layoutPanel.add(mediumCombo,gbc); //film Size gbc.fill = GridBagConstraints.NONE; gbc.weightx = 0.0; gbc.gridwidth = 1; layoutPanel.add(new JLabel("Film Size"),gbc); layoutPanel.add(Box.createHorizontalStrut(10),gbc); gbc.fill = GridBagConstraints.BOTH; gbc.gridwidth = GridBagConstraints.REMAINDER; gbc.weightx = 1.0; filmSizeCombo = new CommandJComboBox(this, ID_FILMSIZE); filmSizeCombo.setPreferredSize(prefSize); layoutPanel.add(filmSizeCombo,gbc); //Orientation gbc.fill = GridBagConstraints.NONE; gbc.weightx = 0.0; gbc.gridwidth = 1; layoutPanel.add(new JLabel("Orientation"),gbc); layoutPanel.add(Box.createHorizontalStrut(10),gbc); gbc.fill = GridBagConstraints.BOTH; gbc.gridwidth = GridBagConstraints.REMAINDER; gbc.weightx = 1.0; orientationCombo = new CommandJComboBox(this, ID_ORIENTATION); orientationCombo.setPreferredSize(prefSize); layoutPanel.add(orientationCombo,gbc); //Priority gbc.fill = GridBagConstraints.NONE; gbc.weightx = 0.0; gbc.gridwidth = 1; layoutPanel.add(new JLabel("Priority"),gbc); layoutPanel.add(Box.createHorizontalStrut(10),gbc); gbc.fill = GridBagConstraints.BOTH; gbc.gridwidth = GridBagConstraints.REMAINDER; gbc.weightx = 1.0; priorityCombo = new CommandJComboBox(this, ID_PRIORITY); priorityCombo.setPreferredSize(prefSize); layoutPanel.add(priorityCombo,gbc); //Layout gbc.fill = GridBagConstraints.NONE; gbc.weightx = 0.0; gbc.gridwidth = 1; layoutPanel.add(new JLabel("Layout"),gbc); layoutPanel.add(Box.createHorizontalStrut(10),gbc); gbc.fill = GridBagConstraints.BOTH; gbc.gridwidth = GridBagConstraints.REMAINDER; gbc.weightx = 1.0; layoutCombo = new CommandJComboBox(this, ID_LAYOUT); layoutCombo.setPreferredSize(prefSize); layoutPanel.add(layoutCombo,gbc); //Copies gbc.fill = GridBagConstraints.NONE; gbc.weightx = 0.0; gbc.gridwidth = 1; layoutPanel.add(new JLabel("Copies"),gbc); layoutPanel.add(Box.createHorizontalStrut(10),gbc); gbc.gridwidth = GridBagConstraints.REMAINDER; gbc.weightx = 1.0; copiesText = new CommandJTextField(2,this, ID_COPIES); copiesText.setDocument(new IntegerDocument(1)); layoutPanel.add(copiesText,gbc); ///////////////////////////////// //Contains the additional layout settings ////////////////////////////////// JPanel addPanel = new JPanel(); addPanel.setBorder(new TitledBorder("Additional Options")); JPanel addLeftPanel = new JPanel(new GridBagLayout()); //Magnification gbc.fill = GridBagConstraints.NONE; gbc.weightx = 0.0; gbc.gridwidth = 1; addLeftPanel.add(new JLabel("Magnification"),gbc); addLeftPanel.add(Box.createHorizontalStrut(10),gbc); gbc.fill = GridBagConstraints.BOTH; gbc.gridwidth = GridBagConstraints.REMAINDER; gbc.weightx = 1.0; magnificationCombo = new CommandJComboBox(this, ID_MAGNIFICATION); magnificationCombo.setPreferredSize(prefSize); addLeftPanel.add(magnificationCombo,gbc); //Smoothing gbc.fill = GridBagConstraints.NONE; gbc.weightx = 0.0; gbc.gridwidth = 1; addLeftPanel.add(new JLabel("Smoothing"),gbc); addLeftPanel.add(Box.createHorizontalStrut(10),gbc); gbc.fill = GridBagConstraints.BOTH; gbc.gridwidth = GridBagConstraints.REMAINDER; gbc.weightx = 1.0; smoothingCombo = new CommandJComboBox(this, ID_SMOOTHING); smoothingCombo.setPreferredSize(prefSize); addLeftPanel.add(smoothingCombo,gbc); //Configuration gbc.fill = GridBagConstraints.NONE; gbc.weightx = 0.0; gbc.gridwidth = 1; addLeftPanel.add(new JLabel("Configuration"),gbc); addLeftPanel.add(Box.createHorizontalStrut(10),gbc); gbc.fill = GridBagConstraints.BOTH; gbc.gridwidth = GridBagConstraints.REMAINDER; gbc.weightx = 1.0; configurationCombo = new CommandJComboBox(this, ID_CONFIGURATION); configurationCombo.setPreferredSize(prefSize); addLeftPanel.add(configurationCombo,gbc); //Resolution gbc.fill = GridBagConstraints.NONE; gbc.weightx = 0.0; gbc.gridwidth = 1; addLeftPanel.add(new JLabel("Resolution"),gbc); addLeftPanel.add(Box.createHorizontalStrut(10),gbc); gbc.fill = GridBagConstraints.BOTH; gbc.gridwidth = GridBagConstraints.REMAINDER; gbc.weightx = 1.0; resolutionCombo = new CommandJComboBox(this, ID_RESOLUTION); resolutionCombo.setPreferredSize(prefSize); addLeftPanel.add(resolutionCombo,gbc); JPanel addRightPanel = new JPanel(new GridBagLayout()); //Trim gbc.fill = GridBagConstraints.NONE; gbc.weightx = 0.0; gbc.gridwidth = 1; addLeftPanel.add(new JLabel("Trim"),gbc); addLeftPanel.add(Box.createHorizontalStrut(10),gbc); gbc.fill = GridBagConstraints.BOTH; gbc.gridwidth = GridBagConstraints.REMAINDER; gbc.weightx = 1.0; trimCombo = new CommandJComboBox(this, ID_TRIM); trimCombo.setPreferredSize(prefSize); addLeftPanel.add(trimCombo,gbc); //Cropping gbc.fill = GridBagConstraints.NONE; gbc.weightx = 0.0; gbc.gridwidth = 1; addLeftPanel.add(new JLabel("Cropping"),gbc); addLeftPanel.add(Box.createHorizontalStrut(10),gbc); gbc.fill = GridBagConstraints.BOTH; gbc.gridwidth = GridBagConstraints.REMAINDER; gbc.weightx = 1.0; croppingCombo = new CommandJComboBox(this, ID_CROPPING); croppingCombo.setPreferredSize(prefSize); addLeftPanel.add(croppingCombo,gbc); //Border gbc.fill = GridBagConstraints.NONE; gbc.weightx = 0.0; gbc.gridwidth = 1; addLeftPanel.add(new JLabel("Border"),gbc); addLeftPanel.add(Box.createHorizontalStrut(10),gbc); gbc.fill = GridBagConstraints.BOTH; gbc.gridwidth = GridBagConstraints.REMAINDER; gbc.weightx = 1.0; borderCombo = new CommandJComboBox(this, ID_BORDER); borderCombo.setPreferredSize(prefSize); addLeftPanel.add(borderCombo,gbc); //Empty Image gbc.fill = GridBagConstraints.NONE; gbc.weightx = 0.0; gbc.gridwidth = 1; addLeftPanel.add(new JLabel("Empty Image"),gbc); addLeftPanel.add(Box.createHorizontalStrut(10),gbc); gbc.fill = GridBagConstraints.BOTH; gbc.gridwidth = GridBagConstraints.REMAINDER; gbc.weightx = 1.0; emptyImageCombo = new CommandJComboBox(this, ID_EMPTYIMAGE); emptyImageCombo.setPreferredSize(prefSize); addLeftPanel.add(emptyImageCombo,gbc); //MinDesity gbc.fill = GridBagConstraints.NONE; gbc.weightx = 0.0; gbc.gridwidth = 1; addLeftPanel.add(new JLabel("Min Density"),gbc); addLeftPanel.add(Box.createHorizontalStrut(10),gbc); gbc.fill = GridBagConstraints.BOTH; gbc.gridwidth = GridBagConstraints.REMAINDER; gbc.weightx = 1.0; minDensityCombo = new CommandJComboBox(this, ID_MINDENSITY); minDensityCombo.setPreferredSize(prefSize); addLeftPanel.add(minDensityCombo,gbc); //MaxDesity gbc.fill = GridBagConstraints.NONE; gbc.weightx = 0.0; gbc.gridwidth = 1; addLeftPanel.add(new JLabel("Max Density"),gbc); addLeftPanel.add(Box.createHorizontalStrut(10),gbc); gbc.fill = GridBagConstraints.BOTH; gbc.gridwidth = GridBagConstraints.REMAINDER; gbc.weightx = 1.0; maxDensityCombo = new CommandJComboBox(this, ID_MAXDENSITY); maxDensityCombo.setPreferredSize(prefSize); addLeftPanel.add(maxDensityCombo,gbc); addPanel.add(addLeftPanel); ////////////////////////////////////////////// //Contains the presentation lut settings //////////////////////////////////////// pLutPanel.setLayout(new GridBagLayout()); pLutPanel.setBorder(new TitledBorder("Presentation LUT Options")); //Illumination gbc.fill = GridBagConstraints.NONE; gbc.weightx = 0.0; gbc.gridwidth = 1; pLutPanel.add(new JLabel("Illumination (cd/m^2)"),gbc); pLutPanel.add(Box.createHorizontalStrut(10),gbc); gbc.fill = GridBagConstraints.BOTH; gbc.gridwidth = GridBagConstraints.REMAINDER; gbc.weightx = 1.0; illuminationText = new CommandJTextField(10,this, ID_ILLUMINATION); illuminationText.setDocument(new IntegerDocument(10)); pLutPanel.add(illuminationText,gbc); //Illumination gbc.fill = GridBagConstraints.NONE; gbc.weightx = 0.0; gbc.gridwidth = 1; pLutPanel.add(new JLabel("Reflection (cd/m^2)"),gbc); pLutPanel.add(Box.createHorizontalStrut(10),gbc); gbc.fill = GridBagConstraints.BOTH; gbc.gridwidth = GridBagConstraints.REMAINDER; gbc.weightx = 1.0; reflectionText = new CommandJTextField(10,this, ID_REFLECTION); reflectionText.setDocument(new IntegerDocument(10)); pLutPanel.add(reflectionText,gbc); //Presentation LUT gbc.fill = GridBagConstraints.NONE; gbc.weightx = 0.0; gbc.gridwidth = 1; pLutPanel.add(new JLabel("Presentation LUT"),gbc); pLutPanel.add(Box.createHorizontalStrut(10),gbc); gbc.fill = GridBagConstraints.BOTH; gbc.gridwidth = GridBagConstraints.REMAINDER; gbc.weightx = 1.0; presentationLutCombo = new CommandJComboBox(this, ID_PRESENTATIONLUT); presentationLutCombo.setPreferredSize(prefSize); pLutPanel.add(presentationLutCombo,gbc); //Reendering as gbc.fill = GridBagConstraints.NONE; gbc.weightx = 0.0; gbc.gridwidth = 1; pLutPanel.add(new JLabel("Rendering as"),gbc); pLutPanel.add(Box.createHorizontalStrut(10),gbc); gbc.fill = GridBagConstraints.BOTH; gbc.gridwidth = GridBagConstraints.REMAINDER; gbc.weightx = 1.0; renderingCombo = new CommandJComboBox(this, ID_RENDERING); renderingCombo.setPreferredSize(prefSize); pLutPanel.add(renderingCombo,gbc); /////////////////////////////// // ///////////////////////////////////////////////////// annPanel.setLayout(new GridBagLayout()); annPanel.setBorder(new TitledBorder("Annotation")); annOnRadioButton = new CommandJRadioButton("on", false, this, ID_ANNON); annOffRadioButton = new CommandJRadioButton("off", true, this, ID_ANNOFF); ButtonGroup bg = new ButtonGroup(); bg.add(annOnRadioButton); bg.add(annOffRadioButton); gbc.fill = GridBagConstraints.BOTH; gbc.gridwidth = GridBagConstraints.REMAINDER; gbc.weightx = 1.0; annPanel.add(annOffRadioButton,gbc); gbc.fill = GridBagConstraints.BOTH; gbc.gridwidth = GridBagConstraints.REMAINDER; gbc.weightx = 1.0; annPanel.add(annOnRadioButton,gbc); gbc.fill = GridBagConstraints.NONE; gbc.weightx = 0.0; gbc.gridwidth = 1; annPanel.add(new JLabel(" "),gbc); annPanel.add(Box.createHorizontalStrut(10),gbc); gbc.fill = GridBagConstraints.NONE; gbc.weightx = 0.0; gbc.gridwidth = 1; annPanel.add(new JLabel("Text:"),gbc); annPanel.add(Box.createHorizontalStrut(10),gbc); gbc.fill = GridBagConstraints.BOTH; gbc.gridwidth = GridBagConstraints.REMAINDER; gbc.weightx = 1.0; annotationText = new JTextField(); annPanel.add(annotationText,gbc); gbc.fill = GridBagConstraints.NONE; gbc.weightx = 0.0; gbc.gridwidth = 1; annPanel.add(new JLabel(" "),gbc); annPanel.add(Box.createHorizontalStrut(10),gbc); gbc.fill = GridBagConstraints.BOTH; gbc.gridwidth = GridBagConstraints.REMAINDER; annDateCheckBox = new JCheckBox("Date/Time"); annPanel.add(annDateCheckBox,gbc); gbc.fill = GridBagConstraints.NONE; gbc.weightx = 0.0; gbc.gridwidth = 1; annPanel.add(new JLabel(" "),gbc); annPanel.add(Box.createHorizontalStrut(10),gbc); gbc.fill = GridBagConstraints.BOTH; gbc.gridwidth = GridBagConstraints.REMAINDER; annPrinterNameCheckBox = new JCheckBox("Printer Name"); annPanel.add(annPrinterNameCheckBox,gbc); gbc.fill = GridBagConstraints.NONE; gbc.weightx = 0.0; gbc.gridwidth = 1; annPanel.add(new JLabel(" "),gbc); annPanel.add(Box.createHorizontalStrut(10),gbc); gbc.fill = GridBagConstraints.BOTH; gbc.gridwidth = GridBagConstraints.REMAINDER; annIllCheckBox = new JCheckBox("Illumination/Reflection"); annPanel.add(annIllCheckBox,gbc); //Contains the layout settings storedPrintPanel = new JPanel(); storedPrintPanel.setLayout(new GridBagLayout()); storedPrintPanel.setBorder(new TitledBorder("Select Printer")); //Printer gbc.fill = GridBagConstraints.NONE; gbc.weightx = 0.0; gbc.gridwidth = 1; storedPrintPanel.add(new CommandJButton("Clear",this,ID_CLEARSTOREDPRINT),gbc); storedPrintPanel.add(Box.createHorizontalStrut(10),gbc); gbc.weightx = 1.0; storedPrintPanel.add(new CommandJButton("Select",this,ID_SELECTSTOREDPRINTER),gbc); storedPrintPanel.add(Box.createHorizontalStrut(10),gbc); gbc.fill = GridBagConstraints.BOTH; gbc.gridwidth = GridBagConstraints.REMAINDER; gbc.weightx = 2.0; storedPrintPrinterCombo = new CommandJComboBox(this, ID_STOREDPRINTER); storedPrintPrinterCombo.setPreferredSize(prefSize); storedPrintPanel.add(storedPrintPrinterCombo,gbc); mainPanel.setLayout(new GridBagLayout()); fGbc.anchor = GridBagConstraints.NORTH; // fGbc.gridwidth = 1; //fGbc.gridheight = 1; fGbc.gridx = GridBagConstraints.REMAINDER; fGbc.fill = GridBagConstraints.HORIZONTAL; mainPanel.add(layoutPanel,fGbc); mainPanel.add(pLutPanel,fGbc); mainPanel.add(buttonPanel,fGbc); additionalPanel.setLayout(new GridBagLayout()); additionalPanel.add(addPanel,fGbc); additionalPanel.add(annPanel,fGbc); JPanel t1 = new JPanel(); t1.setLayout(new BorderLayout()); t1.add(mainPanel,BorderLayout.NORTH); tabpane.add(t1, "Main"); JPanel t2 = new JPanel(); t2.setLayout(new BorderLayout()); t2.add(additionalPanel,BorderLayout.NORTH); tabpane.add(t2, "Additional"); add(tabpane, BorderLayout.EAST); } private void initStoredPrint() { activeListener = false; String value= null; String name = storedPrint.getPrinterName(); if (name != null)value = dvi.getTargetDescription(storedPrint.getPrinterName()); if(value == null) value = name; if(value == null) value = ""; printerCombo.removeAllItems(); printerCombo.addItem(value); mediumCombo.removeAllItems(); mediumCombo.addItem(""); filmSizeCombo.removeAllItems(); value = storedPrint.getFilmSizeID(); if(value == null) value = ""; filmSizeCombo.addItem(value); orientationCombo.removeAllItems(); int or = storedPrint.getFilmOrientation(); switch (or) { case jDVPSFilmOrientation.DVPSF_portrait: value = "PORTRAIT"; break; case jDVPSFilmOrientation.DVPSF_landscape : value = "LANDSCAPE"; break; case jDVPSFilmOrientation.DVPSF_default: value = ""; break; } orientationCombo.addItem(value); priorityCombo.removeAllItems(); priorityCombo.addItem(""); layoutCombo.removeAllItems(); printerCurrentRows= storedPrint.getImageDisplayFormatRows(); printerCurrentCols= storedPrint.getImageDisplayFormatColumns(); value = "" + printerCurrentRows + "/" + printerCurrentCols; layoutCombo.addItem(value); copiesText.setText("1"); magnificationCombo.removeAllItems(); value = storedPrint.getMagnificationType(); if(value == null) value = ""; magnificationCombo.addItem(value); smoothingCombo.removeAllItems(); value = storedPrint.getSmoothingType(); if(value == null) value = ""; smoothingCombo.addItem(value); configurationCombo.removeAllItems(); value = storedPrint.getConfigurationInformation(); if(value == null) value = ""; configurationCombo.addItem(value); resolutionCombo.removeAllItems(); value = storedPrint.getResolutionID(); if(value == null) value = ""; resolutionCombo.addItem(value); trimCombo.removeAllItems(); int tr = storedPrint.getTrim(); switch (tr) { case jDVPSTrimMode.DVPSH_trim_on: value = "On"; break; case jDVPSTrimMode.DVPSH_trim_off : value = "Off"; break; case jDVPSTrimMode.DVPSH_default: value = ""; break; } trimCombo.addItem(value); croppingCombo.removeAllItems(); int cr = storedPrint.getRequestedDecimateCropBehaviour(); switch (cr) { case jDVPSDecimateCropBehaviour.DVPSI_decimate: value = "DECIMATE"; break; case jDVPSDecimateCropBehaviour.DVPSI_crop : value = "CROP"; break; case jDVPSDecimateCropBehaviour.DVPSI_fail : value = "FAIL"; break; case jDVPSDecimateCropBehaviour.DVPSI_default: value = ""; break; } croppingCombo.addItem(value); borderCombo.removeAllItems(); value = storedPrint.getBorderDensity(); if(value == null) value = ""; borderCombo.addItem(value); emptyImageCombo.removeAllItems(); value = storedPrint.getEmtpyImageDensity(); if(value == null) value = ""; emptyImageCombo.addItem(value); minDensityCombo.removeAllItems(); value = storedPrint.getMinDensity(); if(value == null) value = ""; minDensityCombo.addItem(value); maxDensityCombo.removeAllItems(); value = storedPrint.getMaxDensity(); if(value == null) value = ""; maxDensityCombo.addItem(value); try { illuminationText.setText(new Integer(storedPrint.getPrintIllumination()).toString()); } catch (Exception e) { illuminationText.setText(new String("-1")); } try { reflectionText.setText(new Integer(storedPrint.getPrintReflectedAmbientLight()).toString()); } catch (Exception e) { reflectionText.setText(new String("-1")); } } /** * Initializes the widgets with values form the DVIInterface */ public void init() { /////////////////////////////// //Fill medium for current Printer ///////////////////////////////// int forSize = dvi.getNumberOfLUTs();; presentationLutCombo.removeAllItems(); for (int i = 0; i < forSize;i++) { //dvi.getTargetDescription(String) presentationLutCombo.addItem( dvi.getLUTDescription(dvi.getLUTID(i))); } presentationLutCombo.addItem(new String("IDENTITY")); presentationLutCombo.addItem(new String("LIN OD")); presentationLutCombo.addItem(new String("")); renderingCombo.removeAllItems(); renderingCombo.addItem("Hardcopy"); renderingCombo.addItem("Softcopy"); /////////////////////////////// //Fill medium for current Printer ///////////////////////////////// mediumCombo.removeAllItems(); int s = dvi.getTargetPrinterNumberOfMediumTypes(target); for (int i = 0; i < s;i++) { mediumCombo.addItem(dvi.getTargetPrinterMediumType(target, i )); } mediumCombo.addItem(new String("")); /////////////////////////////// //Fill Film size for current Printer ///////////////////////////////// filmSizeCombo.removeAllItems(); forSize = dvi.getTargetPrinterNumberOfFilmSizeIDs(target); for (int i = 0; i < forSize;i++) { filmSizeCombo.addItem(dvi.getTargetPrinterFilmSizeID(target, i )); } filmSizeCombo.addItem(new String("")); /////////////////////////////// //Orietation ///////////////////////////////// orientationCombo.removeAllItems(); orientationCombo.addItem(new String("Portrait")); orientationCombo.addItem(new String("Landscape")); orientationCombo.addItem(new String("")); priorityCombo.removeAllItems(); priorityCombo.addItem(new String("HIGH")); priorityCombo.addItem(new String("MED")); priorityCombo.addItem(new String("LOW")); priorityCombo.addItem(new String("")); /////////////////////////////// //Fill Magnification for current Printer ///////////////////////////////// magnificationCombo.removeAllItems(); forSize = dvi.getTargetPrinterNumberOfMagnificationTypes(target); for (int i = 0; i < forSize;i++) { magnificationCombo.addItem( dvi.getTargetPrinterMagnificationType(target, i )); } magnificationCombo.addItem(new String("")); /////////////////////////////// //Fehler getTargetPrinterConfigurationSetting ///////////////////////////////// configurationCombo.removeAllItems(); forSize = dvi.getTargetPrinterNumberOfConfigurationSettings(target); for (int i = 0; i < forSize;i++) { configurationCombo.addItem(dvi.getTargetPrinterConfigurationSetting(target, i )); } configurationCombo.addItem(new String("")); /////////////////////////////// //Resolution ///////////////////////////////// resolutionCombo.removeAllItems(); forSize = dvi.getTargetPrinterNumberOfPrinterResolutionIDs(target); for (int i = 0; i < forSize;i++) { resolutionCombo.addItem( dvi.getTargetPrinterResolutionID(target, i )); } resolutionCombo.addItem(new String("")); /////////////////////////////// //Trim ///////////////////////////////// trimCombo.removeAllItems(); if (dvi.getTargetPrinterSupportsTrim(target)) { trimCombo.addItem(new String("On")); trimCombo.addItem(new String("Off")); } trimCombo.addItem(new String("")); /////////////////////////////// //crop ///////////////////////////////// croppingCombo.removeAllItems(); if (dvi.getTargetPrinterSupportsDecimateCrop(target)) { croppingCombo.addItem(new String("DECIMATE")); croppingCombo.addItem(new String("CROP")); croppingCombo.addItem(new String("FAIL")); } croppingCombo.addItem(new String("")); /////////////////////////////// //Border Error ///////////////////////////////// borderCombo.removeAllItems(); forSize = dvi.getTargetPrinterNumberOfBorderDensities(target); for (int i = 0; i < forSize;i++) { borderCombo.addItem(dvi.getTargetPrinterBorderDensity(target, i )); } borderCombo.addItem(new String("")); /////////////////////////////// //EmptyImages ///////////////////////////////// emptyImageCombo.removeAllItems(); forSize = dvi.getTargetPrinterNumberOfEmptyImageDensities(target); for (int i = 0; i < forSize;i++) { emptyImageCombo.addItem(dvi.getTargetPrinterEmptyImageDensity(target, i) ); } emptyImageCombo.addItem(new String("")); /////////////////////////////// //Min Density ///////////////////////////////// minDensityCombo.removeAllItems(); forSize = dvi.getTargetPrinterNumberOfMinDensities(target); for (int i = 0; i < forSize;i++) { minDensityCombo.addItem(dvi.getTargetPrinterMinDensity(target, i )); } minDensityCombo.addItem(new String("")); /////////////////////////////// //Min Density ///////////////////////////////// maxDensityCombo.removeAllItems(); forSize = dvi.getTargetPrinterNumberOfMaxDensities(target); for (int i = 0; i < forSize;i++) { maxDensityCombo.addItem(dvi.getTargetPrinterMaxDensity(target, i )); } maxDensityCombo.addItem(new String("")); /////////////////////////////// //Illumination/Reflection Light ///////////////////////////////// illuminationText.setText(new Integer(storedPrint.getPrintIllumination()).toString()); reflectionText.setText(new Integer(storedPrint.getPrintReflectedAmbientLight()).toString()); } /** * Initialize the smoothingCombo. */ public void initSmoothing() { smoothingCombo.removeAllItems(); if ((storedPrint.getMagnificationType() != null) &&storedPrint.getMagnificationType().equals("CUBIC")) { int forSize = dvi.getTargetPrinterNumberOfSmoothingTypes(target); for (int i = 0; i < forSize;i++) { smoothingCombo.addItem(dvi.getTargetPrinterSmoothingType(target, i )); } } smoothingCombo.addItem(new String("")); smoothingCombo.setSelectedIndex(smoothingCombo.getItemCount()-1); storedPrint.setSmoothingType(new String("")); } /** * Handles the action events from Buttons and ComboBoxes * * @param ID ID of the clicked widget */ public void buttonClicked (int ID) { if (activeListener) { activeListener = false; switch (ID) { case ID_PRINT: if (annOffRadioButton.isSelected()) { dvi.setActiveAnnotation(false); } else { dvi.setActiveAnnotation(true); dvi.setPrependDateTime(annDateCheckBox.isSelected()); dvi.setAnnotationText(annotationText.getText()); dvi.setPrependLighting(annIllCheckBox.isSelected()); dvi.setPrependPrinterName(annPrinterNameCheckBox.isSelected()); } int status = dvi.spoolPrintJob(true); previewPanel.updatePrintPreview(); setLabel(); break; case ID_RENDERING: if (renderingCombo.getSelectedIndex() == 0) { previewPanel.setPrintLUT(true); previewPanel.updatePrintPreview(); } else { previewPanel.setPrintLUT(false); previewPanel.updatePrintPreview(); } break; case ID_PRESENTATIONLUT: int num = presentationLutCombo.getItemCount(); if (presentationLutCombo.getSelectedIndex() == num-1)storedPrint.setDefaultPresentationLUT(); else if(presentationLutCombo.getSelectedIndex() == num-2) storedPrint.setPresentationLUTShape(jDVPSPresentationLUTType.DVPSP_lin_od); else if(presentationLutCombo.getSelectedIndex() == num-3) storedPrint.setPresentationLUTShape(jDVPSPresentationLUTType.DVPSP_identity); else { int i = presentationLutCombo.getSelectedIndex(); status = dvi.selectPrintPresentationLUT(dvi.getLUTID(i)); } previewPanel.updatePrintPreview(); break; case ID_PRINTER: target = dvi.getTargetID(printerCombo.getSelectedIndex(), jDVPSPeerType.DVPSE_printAny); dvi.setCurrentPrinter(target); activeListener = false; init(); reset(); activeListener = true; //previewPanel.updatePrintPreview(); break; case ID_REMOVE: storedPrint.deleteMultipleImages(storedPrint.getNumberOfImages()); previewPanel.updatePrintPreview(); setLabel(); break; case ID_MEDIUM: if ( mediumCombo.getSelectedIndex() >= dvi.getTargetPrinterNumberOfMediumTypes(target)) dvi.setPrinterMediumType(new String("")); else dvi.setPrinterMediumType((String)mediumCombo.getSelectedItem()); break; case ID_FILMSIZE: if ( filmSizeCombo.getSelectedIndex() >= dvi.getTargetPrinterNumberOfFilmSizeIDs(target)) { previewPanel.setDefaultFilmSize(); storedPrint.setFilmSizeID(new String("")); } else { storedPrint.setFilmSizeID((String)filmSizeCombo.getSelectedItem()); String s = (String)filmSizeCombo.getSelectedItem(); try { int startFirstDigit = 0; int endFirstDigit = 0; int startSecondDigit = 0; int endSecondDigit = 0; for (;;startFirstDigit++)if (Character.isDigit(s.charAt(startFirstDigit)))break; endFirstDigit = startFirstDigit; for (;;endFirstDigit++)if (!Character.isDigit(s.charAt(endFirstDigit)))break; startSecondDigit = endFirstDigit+1; for (;;startSecondDigit++)if (Character.isDigit(s.charAt(startSecondDigit)))break; endSecondDigit = startSecondDigit; for (;;endSecondDigit++)if (!Character.isDigit(s.charAt(endSecondDigit)))break; int scaleW = new Integer(s.substring(startFirstDigit,endFirstDigit)).intValue(); int scaleH = new Integer(s.substring(startSecondDigit,endSecondDigit)).intValue(); previewPanel.setFilmSize(scaleW,scaleH); } catch(Exception e) { dvi.writeLogMessage(jDVPSLogMessageLevel.DVPSM_warning,"GUI - PRINT","Unable to parse String for FILM SIZE: " + s + ", printer: " + storedPrint.getPrinterName()); previewPanel.setDefaultFilmSize(); } } break; case ID_PRIORITY: if ( priorityCombo.getSelectedItem().equals("")) dvi.setPrinterPriority(new String("")); else dvi.setPrinterPriority((String)priorityCombo.getSelectedItem()); break; case ID_ORIENTATION: activeListener = false; boolean hasChanged = false; if ( orientationCombo.getSelectedItem().equals("")) { storedPrint.setFilmOrientation(jDVPSFilmOrientation.DVPSF_default); if (!currentOrientationIsPortrait ) { currentOrientationIsPortrait = true; hasChanged = true; } } else if ( orientationCombo.getSelectedItem().equals("Landscape")) { storedPrint.setFilmOrientation(jDVPSFilmOrientation.DVPSF_landscape); if (currentOrientationIsPortrait ) { currentOrientationIsPortrait = false; hasChanged = true; } } else if ( orientationCombo.getSelectedItem().equals("Portrait")) { storedPrint.setFilmOrientation(jDVPSFilmOrientation.DVPSF_portrait); if (!currentOrientationIsPortrait ) { currentOrientationIsPortrait = true; hasChanged = true; } } if (hasChanged) { if (orientationCombo.getSelectedIndex()== 1) previewPanel.setOrientation(false); else previewPanel.setOrientation(true); long help = printerCurrentRows; printerCurrentRows= printerCurrentCols ; printerCurrentCols = help; setLayoutCombo(); } break; case ID_MAGNIFICATION: if ( magnificationCombo.getSelectedIndex() >= dvi.getTargetPrinterNumberOfMagnificationTypes(target)) storedPrint.setMagnificationType(new String("")); else storedPrint.setMagnificationType((String)magnificationCombo.getSelectedItem()); initSmoothing(); break; case ID_SMOOTHING: if ( smoothingCombo.getSelectedIndex() >= dvi.getTargetPrinterNumberOfSmoothingTypes(target)) storedPrint.setSmoothingType(new String("")); else storedPrint.setSmoothingType((String)smoothingCombo.getSelectedItem()); break; case ID_RESOLUTION: if ( resolutionCombo.getSelectedIndex() >= dvi.getTargetPrinterNumberOfPrinterResolutionIDs(target)) storedPrint.setResolutionID(new String("")); else storedPrint.setResolutionID((String)resolutionCombo.getSelectedItem()); break; case ID_CONFIGURATION: if ( configurationCombo.getSelectedIndex() >= dvi.getTargetPrinterNumberOfConfigurationSettings(target)) storedPrint.setConfigurationInformation(new String("")); else storedPrint.setConfigurationInformation((String)configurationCombo.getSelectedItem()); break; case ID_TRIM: if (dvi.getTargetPrinterSupportsTrim(target)) { if (trimCombo.getSelectedIndex() == 0) storedPrint.setTrim(jDVPSTrimMode.DVPSH_trim_on); if (trimCombo.getSelectedIndex() == 1) storedPrint.setTrim(jDVPSTrimMode.DVPSH_trim_off); if (trimCombo.getSelectedIndex() == 2) storedPrint.setTrim(jDVPSTrimMode.DVPSH_default); } break; case ID_CROPPING: if (dvi.getTargetPrinterSupportsDecimateCrop(target)) { if (croppingCombo.getSelectedIndex() == 0) storedPrint.setRequestedDecimateCropBehaviour(jDVPSDecimateCropBehaviour.DVPSI_decimate); if (croppingCombo.getSelectedIndex() == 1) storedPrint.setRequestedDecimateCropBehaviour(jDVPSDecimateCropBehaviour.DVPSI_crop); if (croppingCombo.getSelectedIndex() == 2) storedPrint.setRequestedDecimateCropBehaviour(jDVPSDecimateCropBehaviour.DVPSI_fail); if (croppingCombo.getSelectedIndex() == 3) storedPrint.setRequestedDecimateCropBehaviour(jDVPSDecimateCropBehaviour.DVPSI_default); } break; case ID_BORDER: if ( borderCombo.getSelectedIndex() >= dvi.getTargetPrinterNumberOfBorderDensities(target)) { storedPrint.setBorderDensity(new String("")); } else storedPrint.setBorderDensity((String)borderCombo.getSelectedItem()); previewPanel.setFilmColor(getBorderColor()); break; case ID_EMPTYIMAGE: if ( emptyImageCombo.getSelectedIndex() >= dvi.getTargetPrinterNumberOfEmptyImageDensities(target)) { storedPrint.setEmtpyImageDensity(new String("")); previewPanel.setDefaultEmptyImageColor(); } else storedPrint.setEmtpyImageDensity((String)emptyImageCombo.getSelectedItem()); previewPanel.setEmptyImageColor(getEmptyImageColor()); break; case ID_MINDENSITY: if ( minDensityCombo.getSelectedIndex() >= dvi.getTargetPrinterNumberOfMinDensities(target)) storedPrint.setMinDensity(new String("")); else storedPrint.setMinDensity((String)minDensityCombo.getSelectedItem()); //previewPanel.setFilmAndEmptyImageColor(getBorderColor(),getEmptyImageColor()); break; case ID_MAXDENSITY: if ( maxDensityCombo.getSelectedIndex() >= dvi.getTargetPrinterNumberOfMaxDensities(target)) storedPrint.setMaxDensity(new String("")); else storedPrint.setMaxDensity((String)maxDensityCombo.getSelectedItem()); //previewPanel.setFilmAndEmptyImageColor(getBorderColor(),getEmptyImageColor()); break; case ID_LAYOUT: int index = layoutCombo.getSelectedIndex(); printerCurrentRows = dvi.getTargetPrinterPortraitDisplayFormatRows(target, index ); printerCurrentCols = dvi.getTargetPrinterPortraitDisplayFormatColumns(target, index ); if (!currentOrientationIsPortrait) { long help = printerCurrentRows; printerCurrentRows = printerCurrentCols; printerCurrentCols = help; } //set value storedPrint.setImageDisplayFormat(printerCurrentCols, printerCurrentRows); //change previewPanel previewPanel.setRowsCols((int) printerCurrentRows,(int)printerCurrentCols); setLabel(); break; } activeListener = true; } if (ID == ID_SELECTSTOREDPRINTER) { activeListener = false; String medium =(String) mediumCombo.getItemAt(0); String filmSize =(String) filmSizeCombo.getItemAt(0); String orientation =(String) orientationCombo.getItemAt(0); String magnification =(String) magnificationCombo.getItemAt(0); //Pririty Defualt String smoothing =(String) smoothingCombo.getItemAt(0); String configuration =(String) configurationCombo.getItemAt(0); String resolution =(String) resolutionCombo.getItemAt(0); String trim =(String) trimCombo.getItemAt(0); String cropping =(String) croppingCombo.getItemAt(0); String border =(String) borderCombo.getItemAt(0); String emptyImage =(String) emptyImageCombo.getItemAt(0); String minDensity =(String) minDensityCombo.getItemAt(0); String maxDensity =(String) maxDensityCombo.getItemAt(0); target = dvi.getTargetID(storedPrintPrinterCombo.getSelectedIndex(), jDVPSPeerType.DVPSE_printAny); dvi.setCurrentPrinter(target); initPrinterCombo(); init(); reset(); mainPanel.remove(storedPrintPanel); additionalPanel.add(annPanel,fGbc); mainPanel.add(buttonPanel,fGbc); pLutPanel.setEnabled(true); presentationLutCombo.setEnabled(true); renderingCombo.setEnabled(true); illuminationText.setEnabled(true); reflectionText.setEnabled(true); copiesText.setEnabled(true); activeListener = true; return; } if (ID == ID_CLEARSTOREDPRINT) { activeListener = false; initPrinterCombo(); init(); reset(); storedPrint.deleteMultipleImages(storedPrint.getNumberOfImages()); previewPanel.updatePrintPreview(); setLabel(); mainPanel.remove(storedPrintPanel); additionalPanel.add(annPanel,fGbc); mainPanel.add(buttonPanel,fGbc); presentationLutCombo.setEnabled(true); renderingCombo.setEnabled(true); illuminationText.setEnabled(true); reflectionText.setEnabled(true); copiesText.setEnabled(true); activeListener = true; } } public void buttonClicked (int ID, boolean selected) { if (activeListener) { switch (ID) { case ID_ANNOFF: annotationText.setEnabled(false); annDateCheckBox.setEnabled(false); annPrinterNameCheckBox.setEnabled(false); annIllCheckBox.setEnabled(false); break; case ID_ANNON: annotationText.setEnabled(true); annDateCheckBox.setEnabled(true); annPrinterNameCheckBox.setEnabled(true); annIllCheckBox.setEnabled(true); break; } } } public int getBorderColor() { if ( borderCombo.getSelectedIndex() >= dvi.getTargetPrinterNumberOfBorderDensities(target)) { return -1; } else { String s = (String)borderCombo.getSelectedItem(); if (s.equals("BLACK"))return 0; else if (s.equals("WHITE"))return 255; else { int minD = defaultMinDensityValue; int maxD= defaultMaxDensityValue; /* if ( minDensityCombo.getSelectedIndex() >= dvi.getTargetPrinterNumberOfMinDensities(target)) { minD = defaultMinDensityValue; } else { String sD = (String)minDensityCombo.getSelectedItem(); try { minD = new Integer(sD).intValue(); } catch(Exception e) { minD = defaultMinDensityValue; } } if ( maxDensityCombo.getSelectedIndex() >= dvi.getTargetPrinterNumberOfMaxDensities(target)) { maxD = defaultMaxDensityValue; } else { String sD = (String)maxDensityCombo.getSelectedItem(); try { maxD = new Integer(sD).intValue(); } catch(Exception e) { maxD = defaultMaxDensityValue; } } */ try { int density = new Integer(s).intValue(); int colorValue = storedPrint.convertODtoPValue(density, 8); if (colorValue < 0) return -1; else return colorValue; } catch(Exception e) { // System.err.println("Hallo Err: " + e); return -1; } } //dvi.convertODtoLum(int density, int min, int max, int bits); } } public int getEmptyImageColor() { if ( emptyImageCombo.getSelectedIndex() >= dvi.getTargetPrinterNumberOfEmptyImageDensities(target)) { return -1; } else { String s = (String)emptyImageCombo.getSelectedItem(); if (s.equals("BLACK"))return 0; else if (s.equals("WHITE"))return 255; else { int minD; if ( minDensityCombo.getSelectedIndex() >= dvi.getTargetPrinterNumberOfMinDensities(target)) { minD = defaultMinDensityValue; } else { String sD = (String)minDensityCombo.getSelectedItem(); try { minD = new Integer(sD).intValue(); } catch(Exception e) { minD = defaultMinDensityValue; } } int maxD; if ( maxDensityCombo.getSelectedIndex() >= dvi.getTargetPrinterNumberOfMaxDensities(target)) { maxD = defaultMaxDensityValue; } else { String sD = (String)maxDensityCombo.getSelectedItem(); try { maxD = new Integer(sD).intValue(); } catch(Exception e) { maxD = defaultMaxDensityValue; } } try { int density = new Integer(s).intValue(); int colorValue = storedPrint.convertODtoPValue(density, 8); /*System.err.println("Color: " + colorValue); System.err.println("minD: " + minD); System.err.println("maxD: " + maxD); System.err.println("density: " + density);*/ if (colorValue < 0) return -1; else return colorValue; } catch(Exception e) { ///System.err.println("Hallo Err: " + e); return -1; } } //dvi.convertODtoLum(int density, int min, int max, int bits); } } /** * Handles the ActionEvents and FocusLostEvents from TextFields * * @param ID ID of the fired widget * @param text The new text */ public void setText(int ID, String text) { if (activeListener) { switch (ID) { case ID_ILLUMINATION: if (text.trim().equals("")) { JOptionPane.showMessageDialog(null,"Value must be => 0"); illuminationText.setText("0"); } storedPrint.setPrintIllumination(new Integer(text).intValue()); previewPanel.updatePrintPreview(); break; case ID_REFLECTION: if (text.trim().equals("")) { JOptionPane.showMessageDialog(null,"Value must be >= 0"); reflectionText.setText("0"); } storedPrint.setPrintReflectedAmbientLight(new Integer(text).intValue()); previewPanel.updatePrintPreview(); break; case ID_COPIES: if (text.equals(""))dvi.setPrinterNumberOfCopies(0); else { int copies = (new Integer(text)).intValue(); if (copies < 1) { JOptionPane.showMessageDialog(null,"Value must be > 1"); copiesText.setText("1"); dvi.setPrinterNumberOfCopies(1); } else { if (copies > 9) { JOptionPane.showMessageDialog(null,"Value must be <= 9"); copiesText.setText("9"); dvi.setPrinterNumberOfCopies(9); } else { dvi.setPrinterNumberOfCopies(copies); } } } break; } } } /** * resets the settings for the print job. * Necessary if changing the current printer. */ public void reset() { storedPrint = dvi.getPrintHandler(); previewPanel.setStoredPrint(storedPrint); storedPrint.newPrinter(); renderingCombo.setSelectedIndex(0); storedPrint.setDefaultPresentationLUT(); presentationLutCombo.setSelectedIndex(presentationLutCombo.getItemCount()-1); if (!dvi.getTargetPrinterSupportsAnnotation(dvi.getCurrentPrinter())) { annOffRadioButton.setSelected(true); annOnRadioButton.setEnabled(false); annotationText.setEnabled(false); annDateCheckBox.setEnabled(false); annPrinterNameCheckBox.setEnabled(false); annIllCheckBox.setEnabled(false); } else annOnRadioButton.setEnabled(true); copiesText.setText("1"); dvi.setPrinterNumberOfCopies(new Integer(copiesText.getText()).intValue()); //reset medium type dvi.setPrinterMediumType(new String("")); mediumCombo.setSelectedIndex(mediumCombo.getItemCount()-1); //reset filmSize //storedPrint.setFilmSizeID(new String("")); filmSizeCombo.setSelectedIndex(filmSizeCombo.getItemCount()-1); //reset magnification type //storedPrint.setMagnificationType(new String("")); magnificationCombo.setSelectedIndex(magnificationCombo.getItemCount()-1); //reset smoothing initSmoothing(); //reset filmSize //storedPrint.setFilmSizeID(new String("")); priorityCombo.setSelectedIndex(priorityCombo.getItemCount()-1); //reset configuration //storedPrint.setConfigurationInformation(new String("")); configurationCombo.setSelectedIndex(configurationCombo.getItemCount()-1); //reset resolution resolutionCombo.setSelectedIndex(resolutionCombo.getItemCount()-1); storedPrint.setResolutionID(new String("")); //reset trim //storedPrint.setTrim(jDVPSTrimMode.DVPSH_default); trimCombo.setSelectedIndex(trimCombo.getItemCount()-1); //reset requested decimate crop behaviour //storedPrint.setRequestedDecimateCropBehaviour(jDVPSDecimateCropBehaviour.DVPSI_default); croppingCombo.setSelectedIndex(croppingCombo.getItemCount()-1); //reset border borderCombo.setSelectedIndex(borderCombo.getItemCount()-1); storedPrint.setBorderDensity(new String("")); //reset empty image emptyImageCombo.setSelectedIndex(emptyImageCombo.getItemCount()-1); storedPrint.setEmtpyImageDensity(new String("")); //reset min density minDensityCombo.setSelectedIndex(minDensityCombo.getItemCount()-1); storedPrint.setMinDensity(new String("")); //reset max density maxDensityCombo.setSelectedIndex(maxDensityCombo.getItemCount()-1); storedPrint.setMaxDensity(new String("")); previewPanel.setFilmAndEmptyImageColorWithoutUpdate(getBorderColor(), getEmptyImageColor()); setLayoutCombo(); } /** * Handle DSEvents from other components. * * @param e */ public boolean processPrint(DSEvent e) { //Notification about receiveing and new print hardcopy. if (e instanceof PrintEvent) { PrintEvent pe = (PrintEvent)e; if (pe.type == pe.ID_HC) { activeListener = false; previewPanel.instertPrint(); setLabel(); activeListener = true; } else { activeListener = false; storedPrint = dvi.getPrintHandler(); diplayStoredPrintObjectMode = true; //inset a new image preview into the PreviewPanel. additionalPanel.remove(annPanel); mainPanel.remove(buttonPanel); mainPanel.add(storedPrintPanel,fGbc); initStoredPrint(); boolean portrait = true; if (storedPrint.getFilmOrientation()== jDVPSFilmOrientation.DVPSF_landscape) portrait = false; previewPanel.updatePrintPreview(storedPrint,portrait, (int)storedPrint.getImageDisplayFormatRows(),(int)storedPrint.getImageDisplayFormatColumns()); setLabel(); presentationLutCombo.setEnabled(false); renderingCombo.setEnabled(false); illuminationText.setEnabled(false); reflectionText.setEnabled(false); copiesText.setEnabled(false); activeListener = true; } // } return false; } /** * Fills the imageLabel. */ public void setLabel() { int pagesInJob = Math.max(storedPrint.getNumberOfImages()/(int)(printerCurrentRows*printerCurrentCols),1); //if (storedPrint.getNumberOfImages()%(int)(printerCurrentRows*printerCurrentCols)>0)pagesInJob++; imageLabel.setText("Images in Queue: " + storedPrint.getNumberOfImages()+ ", Pages: " + 1 + " out of " + pagesInJob); } /** * Gets the current jDVPSStoredPrint * * @return The current jDVPSStoredPrint */ public jDVPSStoredPrint getStored() { return storedPrint; } /** * Gets the current jDVInterface * * @return The current jDVInterface */ public jDVInterface getDvi() { return dvi; } private void setLayoutCombo() { //target = dvi.getCurrentPrinter(); boolean portrait = true; if (orientationCombo.getSelectedItem().equals("Landscape"))portrait = false; /////////////////////////////// //Fill Film size for current Printer ///////////////////////////////// layoutCombo.removeAllItems(); int forSize = dvi.getTargetPrinterNumberOfPortraitDisplayFormats(target); String t = null; if (forSize == 0 ) { JOptionPane.showMessageDialog(null,"Missing Printer Layout in Configuration for Printer: " +dvi.getTargetDescription(target)); System.exit(0); } else { for (int i = 0; i < forSize;i++) { if (portrait) t = dvi.getTargetPrinterPortraitDisplayFormatRows(target, i )+ "/" + dvi.getTargetPrinterPortraitDisplayFormatColumns(target, i ); else t = dvi.getTargetPrinterPortraitDisplayFormatColumns(target, i )+ "/" + dvi.getTargetPrinterPortraitDisplayFormatRows(target, i ); layoutCombo.addItem(t); } } int cols = 1; int rows = 1;; int bestIndex= 0; int nextCols=1; int nextRows=1; for (int i = 0; i < forSize;i++) { nextCols = dvi.getTargetPrinterPortraitDisplayFormatColumns(target, i ); nextRows = dvi.getTargetPrinterPortraitDisplayFormatRows(target, i ); if (portrait) { if ((nextCols <= printerCurrentCols) &&(nextRows <= printerCurrentRows) &&(nextCols >= cols)&&(nextRows >= rows)) { bestIndex = i; cols = nextCols; rows = nextRows; } } else { if ((nextCols <= printerCurrentRows) &&(nextRows <= printerCurrentCols) &&(nextCols >= rows)&&(nextRows >= cols)) { bestIndex = i; cols = nextRows; rows = nextCols; } } } printerCurrentCols = cols ; printerCurrentRows = rows; layoutCombo.setSelectedIndex(bestIndex); storedPrint.setImageDisplayFormat(printerCurrentCols, printerCurrentRows); //change previewPanel previewPanel.setRowsCols((int) printerCurrentRows,(int)printerCurrentCols); setLabel(); } /** * Deletes the image with the specified index form the print job * @param index Index of the specified image */ public void deleteImage(int index) { storedPrint.deleteImage(index); previewPanel.updatePrintPreview(); setLabel(); } } /* * CVS Log * $Log: PrintPanel.java,v $ * Revision 1.1.1.1 2001/06/06 10:32:30 kleber * Init commit for DICOMscope 3.5 * Create new CVS * */ dicomscope-3.6.0/tkgui/dicomscope/0002755000265600020320000000000011262371100016234 5ustar tilleaadmindicomscope-3.6.0/tkgui/dicomscope/DICOMscope.java0000644000265600020320000002453711262371100020775 0ustar tilleaadmin/* * * Copyright (C) 1999, Institute for MicroTherapy * * This software and supporting documentation were developed by * * University of Witten/Herdecke * Department of Radiology and MicroTherapy * Institute for MicroTherapy * Medical computer science * * Universitaetsstrasse 142 * 44799 Bochum, Germany * * http://www.microtherapy.de/go/cs * mailto:computer.science@microtherapy.de * * THIS SOFTWARE IS MADE AVAILABLE, AS IS, AND THE INSTITUTE MAKES NO * WARRANTY REGARDING THE SOFTWARE, ITS PERFORMANCE, ITS MERCHANTABILITY * OR FITNESS FOR ANY PARTICULAR USE, FREEDOM FROM ANY COMPUTER DISEASES * OR ITS CONFORMITY TO ANY SPECIFICATION. THE ENTIRE RISK AS TO QUALITY * AND PERFORMANCE OF THE SOFTWARE IS WITH THE USER. * * * Author : $Author: kleber $ * Last update : $Date: 2003/09/08 08:57:47 $ * Revision : $Revision: 1.1 $ * State: $State: Exp $ */ package dicomscope; import java.io.*; import java.awt.*; import java.awt.event.*; import javax.swing.*; import java.util.*; // Import all packages of the project: import J2Ci.*; import browser.*; import main.MainContext; import viewer.main.*; import viewer.presentation.*; import jToolkit.gui.*; import jToolkit.io.*; import about.*; import main.*; import viewer.gui.*; import javax.swing.event.*; import dicomPrint.*; import processCommunication.*; /** * This is the main class. This class initializes the study * browser, the viewer, the print panel and the about box. * @author Andreas Schroeter * @since 30.03. */ public class DICOMscope extends JFrame implements MainListener { /** * The interface to the Dicom Toolkit */ private jDVInterface dvi = null; /** * Contains the current PrintPanel */ private PrintPanel printPanel; /** * Contains the main TabbedPane */ private JTabbedPane tabpane ; /** * Main Method. Initializes this class. * @param args Will be ignored */ public static void main(String[] args) { System.out.println("starting DICOMscope"); System.out.println("please wait..."); System.out.flush(); // force output right now! MainContext mc = MainContext.instance(); // create context DICOMscope sup = new DICOMscope(); sup.setVisible(true); } /** * Constructor. */ public DICOMscope() { Controller.instance().addMainListener(this); dvi = new jDVInterface("DICOMscope.cfg"); // change with configfile tabpane = new JTabbedPane(JTabbedPane.TOP); MainContext.instance().initConfiguration(dvi); // create context Hashtable config = MainContext.instance().getConfiguration(); setConfiguration(config, true); getContentPane().setLayout(new BorderLayout(0,0)); //getRoontPane().setFont java.awt.Dimension screen = java.awt.Toolkit.getDefaultToolkit().getScreenSize(); setSize(screen.width, screen.height); //setSize(300,300); SymWindow aSymWindow = new SymWindow(); this.addWindowListener(aSymWindow); addComponentListener(new CmpAdapter()); //Init toolbar DicomScopeToolBar toolbar; boolean print = false; if (dvi.getNumberOfTargets(jDVPSPeerType.DVPSE_printAny)>0 ) print = true; toolbar = new DicomScopeToolBar(config, print); getContentPane().add(toolbar,BorderLayout.NORTH); boolean signWarning=true; if (config.containsKey("SignWarning"))signWarning=((Boolean)config.get("SignWarning")).booleanValue(); StatusLine sl = new StatusLine(DSComponentType.BROWSER,dvi,signWarning); getContentPane().add( sl, BorderLayout.SOUTH); StudyMan studyMan = new StudyMan(dvi, this,config); MainImageViewerPanel mImage = new MainImageViewerPanel(new PresentationStateGraphicsHandler(dvi),config,this); AboutBox about = new AboutBox(config); tabpane.add(DSComponentType.BROWSER, studyMan); tabpane.add(DSComponentType.VIEWER, mImage); if (print) { printPanel = new PrintPanel(dvi,config); tabpane.add(DSComponentType.PRINT,printPanel ); } tabpane.add(DSComponentType.PROCESS,new ProcessComponent(this, MainContext.instance().logFont)); tabpane.add(DSComponentType.ABOUT,about); getContentPane().add(tabpane, BorderLayout.CENTER); tabpane.addChangeListener(new ChangeToComponentListener() ); Controller.instance().fireStatus(new StatusLineEvent(this,StatusLineEvent.SET_DES,DSComponentType.BROWSER,"Ready")); Controller.instance().fireEvent(new TabbedChangeEvent(DICOMscope.this,DSComponentType.BROWSER)); ProcessCommunicationService pcs= new ProcessCommunicationService(dvi.getMessagePort(), true); dvi.startReceiver(); dvi.startPrintSpooler(); dvi.startPrintServer(); dvi.startQueryRetrieveServer(); System.setOut(new NullPrintStream()); } /** * Closes the application and terminates the network receiver. */ class SymWindow extends java.awt.event.WindowAdapter { public void windowClosing(java.awt.event.WindowEvent event) { Object object = event.getSource(); if (object == DICOMscope.this)closing(event); { } } } /** * Closes the application and terminates the network receiver. * @param event The calling event. ignored. */ public void closing(java.awt.event.WindowEvent event) { dvi.terminateReceiver(); dvi.terminatePrintSpooler(); dvi.terminatePrintServer(); dvi.terminateQueryRetrieveServer(); dvi.finalize(); //setVisible(false); // hide the Frame System.exit(0); } /** * Handles the ChangeEvents. */ private class ChangeToComponentListener implements ChangeListener { public void stateChanged(ChangeEvent e) { JTabbedPane tb = (JTabbedPane)e.getSource(); int index = tb.getSelectedIndex(); String s = tb.getTitleAt(index); Controller.instance().fireEvent(new TabbedChangeEvent(DICOMscope.this,s)); } } /** * Handles the ComponentEvents. */ private class CmpAdapter extends ComponentAdapter { public void componentResized(ComponentEvent evt) { MainContext mc = MainContext.instance(); // create context Dimension d = getSize(); if (mc.highQualitySystem) // doppelte Größe als Minimum { if (d.width < 1500) d.width = 1500; if (d.height < 1500) d.height = 1500; } else { if (d.width < 700) d.width =700; if (d.height < 600) d.height = 600; } setSize(d); } } /** * Toggles tabpane to the viewer. * * @since 30.03 */ public void switchToViewer() { tabpane.setSelectedIndex(1); tabpane.repaint(); } /** * Toggles the tabpane to the PrintPanel. * * @since 30.03 */ public void switchToPrinter() { if (printPanel != null) { tabpane.setSelectedComponent(printPanel); tabpane.repaint(); } } /** * Handels the DSEvent fired by any Object of DICOMScope */ public boolean processEvent(DSEvent e) { if (e instanceof ChangeOptionsEvent) { setConfiguration(((ChangeOptionsEvent)e).getConfig(), false); } return false; } /** * Sets the configuration of DICOMscope. * @param config Contains the configuration. * @param init should be true if this function is called the first time. */ private void setConfiguration(Hashtable config, boolean init) { if (config.containsKey("Title"))setTitle((String)(config.get("Title"))); if (config.containsKey("TabbedPlacement"))tabpane.setTabPlacement((new Integer((String)(config.get("TabbedPlacement"))).intValue())); if (config.containsKey("UI")) { try { UIManager.setLookAndFeel((String) config.get("UI") ); // update the complete application's look & feel SwingUtilities.updateComponentTreeUI( DICOMscope.this); } catch( Exception f ) { System.err.println( " unable to set UI " + f.getMessage() ); } } if (!init)tabpane.updateUI(); if (init) { Font f = (Font) config.get("GUIFont"); Font titledBorderFont = new Font(f.getName(), f.getStyle(),f.getSize()-f.getSize()/4); UIDefaults uiDefaults = UIManager.getDefaults(); uiDefaults.put("MenuItem.font",f); uiDefaults.put("Label.font", f); uiDefaults.put("ComboBox.font",f); uiDefaults.put("Button.font", f); uiDefaults.put("CheckBox.font", f); uiDefaults.put("CheckBoxMenuItem.font", f); uiDefaults.put("RadioButtonMenuItem.font", f); uiDefaults.put("RadioButton.font", f); uiDefaults.put("TitledBorder.font", titledBorderFont); uiDefaults.put("TextField.font", f); uiDefaults.put("Dialog.font", f); uiDefaults.put("TabbedPane.font",f); uiDefaults.put("Frame.font", f); uiDefaults.put("Scrollbar.font", f); uiDefaults.put("Tree.font", f); uiDefaults.put("EditorPane.font", f); uiDefaults.put("TextArea.font", f); uiDefaults.put("List.font", f); uiDefaults.put("AbstractButton.font", f); uiDefaults.put("ToolTip.font", f); uiDefaults.put("Button", f); tabpane.updateUI(); } } } /* * CVS Log * $Log: DICOMscope.java,v $ * Revision 1.1 2003/09/08 08:57:47 kleber * move DICOMscope to folder dicomscope. * * Revision 1.1.1.1 2001/06/06 10:32:29 kleber * Init commit for DICOMscope 3.5 * Create new CVS * */ dicomscope-3.6.0/tkgui/DICOMscope.java0000644000265600020320000002331011262371100016634 0ustar tilleaadmin/* * * Copyright (C) 1999, Institute for MicroTherapy * * This software and supporting documentation were developed by * * University of Witten/Herdecke * Department of Radiology and MicroTherapy * Institute for MicroTherapy * Medical computer science * * Universitaetsstrasse 142 * 44799 Bochum, Germany * * http://www.microtherapy.de/go/cs * mailto:computer.science@microtherapy.de * * THIS SOFTWARE IS MADE AVAILABLE, AS IS, AND THE INSTITUTE MAKES NO * WARRANTY REGARDING THE SOFTWARE, ITS PERFORMANCE, ITS MERCHANTABILITY * OR FITNESS FOR ANY PARTICULAR USE, FREEDOM FROM ANY COMPUTER DISEASES * OR ITS CONFORMITY TO ANY SPECIFICATION. THE ENTIRE RISK AS TO QUALITY * AND PERFORMANCE OF THE SOFTWARE IS WITH THE USER. * * * Author : $Author: kleber $ * Last update : $Date: 2001/06/06 10:32:29 $ * Revision : $Revision: 1.1.1.1 $ * State: $State: Exp $ */ package DICOMscope; import java.io.*; import java.awt.*; import java.awt.event.*; import javax.swing.*; import java.util.*; // Import all packages of the project: import J2Ci.*; import browser.*; import main.MainContext; import viewer.main.*; import viewer.presentation.*; import jToolkit.gui.*; import jToolkit.io.*; import about.*; import main.*; import viewer.gui.*; import javax.swing.event.*; import dicomPrint.*; import processCommunication.*; /** * This is the main class. This class initializes the study * browser, the viewer, the print panel and the about box. * @author Andreas Schroeter * @since 30.03. */ public class DICOMscope extends JFrame implements MainListener { /** * The interface to the Dicom Toolkit */ private jDVInterface dvi = null; /** * Contains the current PrintPanel */ private PrintPanel printPanel; /** * Contains the main TabbedPane */ private JTabbedPane tabpane ; /** * Main Method. Initializes this class. * @param args Will be ignored */ public static void main (String[] args) { System.out.println ("starting DICOMscope"); System.out.println ("please wait..."); System.out.flush(); // force output right now! MainContext mc = MainContext.instance(); // create context DICOMscope sup = new DICOMscope(); sup.setVisible(true); } /** * Constructor. */ public DICOMscope() { Controller.instance().addMainListener(this); dvi = new jDVInterface ("DICOMscope.cfg"); // change with configfile tabpane = new JTabbedPane(JTabbedPane.TOP); MainContext.instance().initConfiguration(dvi); // create context Hashtable config = MainContext.instance().getConfiguration(); setConfiguration(config, true); getContentPane().setLayout(new BorderLayout(0,0)); //getRoontPane().setFont java.awt.Dimension screen = java.awt.Toolkit.getDefaultToolkit().getScreenSize(); setSize (screen.width, screen.height); //setSize(300,300); SymWindow aSymWindow = new SymWindow(); this.addWindowListener(aSymWindow); addComponentListener(new CmpAdapter()); //Init toolbar DicomScopeToolBar toolbar; boolean print = false; if (dvi.getNumberOfTargets(jDVPSPeerType.DVPSE_printAny)>0 ) print = true; toolbar = new DicomScopeToolBar(config, print); getContentPane().add(toolbar,BorderLayout.NORTH); boolean signWarning=true; if (config.containsKey("SignWarning"))signWarning=((Boolean)config.get("SignWarning")).booleanValue(); StatusLine sl = new StatusLine(DSComponentType.BROWSER,dvi,signWarning); getContentPane().add ( sl, BorderLayout.SOUTH); StudyMan studyMan = new StudyMan (dvi, this,config); MainImageViewerPanel mImage = new MainImageViewerPanel(new PresentationStateGraphicsHandler(dvi),config,this); AboutBox about = new AboutBox (config); tabpane.add (DSComponentType.BROWSER, studyMan); tabpane.add (DSComponentType.VIEWER, mImage); if (print) { printPanel = new PrintPanel(dvi,config); tabpane.add (DSComponentType.PRINT,printPanel ); } tabpane.add (DSComponentType.PROCESS,new ProcessComponent(this, MainContext.instance().logFont)); tabpane.add (DSComponentType.ABOUT,about); getContentPane().add (tabpane, BorderLayout.CENTER); tabpane.addChangeListener(new ChangeToComponentListener() ); Controller.instance().fireStatus(new StatusLineEvent(this,StatusLineEvent.SET_DES,DSComponentType.BROWSER,"Ready")); Controller.instance().fireEvent(new TabbedChangeEvent(DICOMscope.this,DSComponentType.BROWSER)); ProcessCommunicationService pcs= new ProcessCommunicationService(dvi.getMessagePort(), true); dvi.startReceiver (); dvi.startPrintSpooler(); dvi.startPrintServer(); dvi.startQueryRetrieveServer(); System.setOut(new NullPrintStream()); } /** * Closes the application and terminates the network receiver. */ class SymWindow extends java.awt.event.WindowAdapter { public void windowClosing(java.awt.event.WindowEvent event) { Object object = event.getSource(); if (object == DICOMscope.this)closing(event); { } } } /** * Closes the application and terminates the network receiver. * @param event The calling event. ignored. */ public void closing(java.awt.event.WindowEvent event) { dvi.terminateReceiver(); dvi.terminatePrintSpooler(); dvi.terminatePrintServer(); dvi.terminateQueryRetrieveServer(); dvi.finalize(); //setVisible(false); // hide the Frame System.exit (0); } /** * Handles the ChangeEvents. */ private class ChangeToComponentListener implements ChangeListener { public void stateChanged(ChangeEvent e) { JTabbedPane tb = (JTabbedPane)e.getSource(); int index = tb.getSelectedIndex(); String s = tb.getTitleAt(index); Controller.instance().fireEvent(new TabbedChangeEvent(DICOMscope.this,s)); } } /** * Handles the ComponentEvents. */ private class CmpAdapter extends ComponentAdapter { public void componentResized(ComponentEvent evt) { MainContext mc = MainContext.instance(); // create context Dimension d = getSize(); if (mc.highQualitySystem) // doppelte Größe als Minimum { if (d.width < 1500) d.width = 1500; if (d.height < 1500) d.height = 1500; } else { if (d.width < 700) d.width =700; if (d.height < 600) d.height = 600; } setSize (d); } } /** * Toggles tabpane to the viewer. * * @since 30.03 */ public void switchToViewer () { tabpane.setSelectedIndex(1); tabpane.repaint(); } /** * Toggles the tabpane to the PrintPanel. * * @since 30.03 */ public void switchToPrinter () { if (printPanel != null) { tabpane.setSelectedComponent(printPanel); tabpane.repaint(); } } /** * Handels the DSEvent fired by any Object of DICOMScope */ public boolean processEvent (DSEvent e) { if (e instanceof ChangeOptionsEvent) { setConfiguration(((ChangeOptionsEvent)e).getConfig(), false); } return false; } /** * Sets the configuration of DICOMscope. * @param config Contains the configuration. * @param init should be true if this function is called the first time. */ private void setConfiguration(Hashtable config, boolean init) { if (config.containsKey("Title"))setTitle((String)(config.get("Title"))); if (config.containsKey("TabbedPlacement"))tabpane.setTabPlacement((new Integer((String)(config.get("TabbedPlacement"))).intValue())); if (config.containsKey("UI")) { try { UIManager.setLookAndFeel((String) config.get("UI") ); // update the complete application's look & feel SwingUtilities.updateComponentTreeUI( DICOMscope.this); } catch( Exception f ) { System.err.println( " unable to set UI " + f.getMessage() ); } } if (!init)tabpane.updateUI(); if (init) { Font f = (Font) config.get("GUIFont"); Font titledBorderFont = new Font(f.getName(), f.getStyle(),f.getSize()-f.getSize()/4); UIDefaults uiDefaults = UIManager.getDefaults(); uiDefaults.put("MenuItem.font",f); uiDefaults.put("Label.font", f); uiDefaults.put("ComboBox.font",f); uiDefaults.put("Button.font", f); uiDefaults.put("CheckBox.font", f); uiDefaults.put("CheckBoxMenuItem.font", f); uiDefaults.put("RadioButtonMenuItem.font", f); uiDefaults.put("RadioButton.font", f); uiDefaults.put("TitledBorder.font", titledBorderFont); uiDefaults.put("TextField.font", f); uiDefaults.put("Dialog.font", f); uiDefaults.put("TabbedPane.font",f); uiDefaults.put("Frame.font", f); uiDefaults.put("Scrollbar.font", f); uiDefaults.put("Tree.font", f); uiDefaults.put("EditorPane.font", f); uiDefaults.put("TextArea.font", f); uiDefaults.put("List.font", f); uiDefaults.put("AbstractButton.font", f); uiDefaults.put("ToolTip.font", f); uiDefaults.put("Button", f); tabpane.updateUI(); } } } /* * CVS Log * $Log: DICOMscope.java,v $ * Revision 1.1.1.1 2001/06/06 10:32:29 kleber * Init commit for DICOMscope 3.5 * Create new CVS * */ dicomscope-3.6.0/tkgui/J2Ci/0002755000265600020320000000000011262371100014636 5ustar tilleaadmindicomscope-3.6.0/tkgui/J2Ci/jBooleanByRef.java0000644000265600020320000000243211262371100020161 0ustar tilleaadmin/* * * Copyright (C) 1999-2003, Institute for MicroTherapy * * This software and supporting documentation were developed by * * University of Witten/Herdecke * Department of Radiology and MicroTherapy * Institute for MicroTherapy * Medical computer science * * Universitaetsstrasse 142 * 44799 Bochum, Germany * * http://www.microtherapy.de/go/cs * mailto:computer.science@microtherapy.de * * THIS SOFTWARE IS MADE AVAILABLE, AS IS, AND THE INSTITUTE MAKES NO * WARRANTY REGARDING THE SOFTWARE, ITS PERFORMANCE, ITS MERCHANTABILITY * OR FITNESS FOR ANY PARTICULAR USE, FREEDOM FROM ANY COMPUTER DISEASES * OR ITS CONFORMITY TO ANY SPECIFICATION. THE ENTIRE RISK AS TO QUALITY * AND PERFORMANCE OF THE SOFTWARE IS WITH THE USER. * * Author : $Author: kleber $ * Last update : $Date: 2001/06/06 10:32:30 $ * Revision : $Revision: 1.1.1.1 $ * State: $State: Exp $ */ package J2Ci; /** * The class jBooleanByRef manages the "variable-by-reference". * * @author Andreas Schröter */ public class jBooleanByRef { public boolean value = false; } /* * CVS Log * $Log: jBooleanByRef.java,v $ * Revision 1.1.1.1 2001/06/06 10:32:30 kleber * Init commit for DICOMscope 3.5 * Create new CVS * */ dicomscope-3.6.0/tkgui/J2Ci/jDoubleByRef.java0000644000265600020320000000245611262371100020022 0ustar tilleaadmin/* * * Copyright (C) 1999-2003, Institute for MicroTherapy * * This software and supporting documentation were developed by * * University of Witten/Herdecke * Department of Radiology and MicroTherapy * Institute for MicroTherapy * Medical computer science * * Universitaetsstrasse 142 * 44799 Bochum, Germany * * http://www.microtherapy.de/go/cs * mailto:computer.science@microtherapy.de * * THIS SOFTWARE IS MADE AVAILABLE, AS IS, AND THE INSTITUTE MAKES NO * WARRANTY REGARDING THE SOFTWARE, ITS PERFORMANCE, ITS MERCHANTABILITY * OR FITNESS FOR ANY PARTICULAR USE, FREEDOM FROM ANY COMPUTER DISEASES * OR ITS CONFORMITY TO ANY SPECIFICATION. THE ENTIRE RISK AS TO QUALITY * AND PERFORMANCE OF THE SOFTWARE IS WITH THE USER. * * Author : $Author: kleber $ * Last update : $Date: 2001/06/06 10:32:30 $ * Revision : $Revision: 1.1.1.1 $ * State: $State: Exp $ */ package J2Ci; /** * The class jDoublebyRef manages the "variable-by-reference". * * @version 1.0, 28.12.98 * @author Andreas Schröter */ public class jDoubleByRef { public double value = -1; } /* * CVS Log * $Log: jDoubleByRef.java,v $ * Revision 1.1.1.1 2001/06/06 10:32:30 kleber * Init commit for DICOMscope 3.5 * Create new CVS * */ dicomscope-3.6.0/tkgui/J2Ci/jDSRCodeValue.java0000644000265600020320000001207611262371100020077 0ustar tilleaadmin/* * * Copyright (C) 2000-2003, OFFIS and Institute for MicroTherapy * * This software and supporting documentation were developed by * * Kuratorium OFFIS e.V. * Healthcare Information and Communication Systems * Escherweg 2 * D-26121 Oldenburg, Germany * * and * * University of Witten/Herdecke * Department of Radiology and MicroTherapy * Institute for MicroTherapy * Medical computer science * * Universitaetsstrasse 142 * 44799 Bochum, Germany * * http://www.microtherapy.de/go/cs * mailto:computer.science@microtherapy.de * * THIS SOFTWARE IS MADE AVAILABLE, AS IS, AND THE INSTITUTE MAKES NO * WARRANTY REGARDING THE SOFTWARE, ITS PERFORMANCE, ITS MERCHANTABILITY * OR FITNESS FOR ANY PARTICULAR USE, FREEDOM FROM ANY COMPUTER DISEASES * OR ITS CONFORMITY TO ANY SPECIFICATION. THE ENTIRE RISK AS TO QUALITY * AND PERFORMANCE OF THE SOFTWARE IS WITH THE USER. * * Author : $Author: kleber $ * Last update : $Date: 2001/06/06 10:32:30 $ * Revision : $Revision: 1.1.1.1 $ * State: $State: Exp $ */ package J2Ci; /** * jDSRCodeValue represents the relating C++ class * DSRCodedEntryValue in Java. * * @author Joerg Riesmeier */ public class jDSRCodeValue { /** * Constructor is disabled !!! */ private jDSRCodeValue() { // emtpy } /** * Constructor for attaching an existing C++ object. FOR INTERNAL USE ONLY! * @param attachAdr address of C++ object */ public jDSRCodeValue(long attachAdr) { cppClassAddress = attachAdr; } // --------------------- methods for C++ class binding --------------------- /** * Address of relating C++ object [for access to the DLL]. * Never change manually! */ private long cppClassAddress = (long) 0; // never change! // --------------------------- native methods ------------------------------ /* --- Coded Entry Value --- */ /** check whether the current code belongs to the private "dcmtk" coding scheme. * This check is performed by comparing the coding scheme designator and the private * coding scheme creator UID - a coding scheme version is currently not used. ** @return OFTrue if code belongs to the private "dcmtk" coding scheme, OFFalse otherwise */ public native boolean isPrivateDcmtkCodingScheme(); /** get code value. * This is a identifier of the code that is unambiguous within the coding scheme. ** @return current code value (might be invalid or an empty string) */ public native String getCodeValue(); /** get coding scheme designator. * This is a textual identifier of the table where the code value is linked to its * code meaning. ** @return current coding scheme designator (might be invalid or an empty string) */ public native String getCodingSchemeDesignator(); /** get coding scheme version. * Optional - Used when a coding scheme has multiple versions and the coding scheme * designator does not explicitly (or adequately) specify the version number. ** @return current coding scheme version (might be invalid or an empty string) */ public native String getCodingSchemeVersion(); /** get code meaning. * Human-readable translation of the code value. Used for display when code dictionary * is not available. ** @return current code meaning (might be invalid or an empty string) */ public native String getCodeMeaning(); /** set code value. * Before setting the specified code it is checked (see checkCode()). If the code is * invalid the current code is not replaced and remains unchanged. ** @param codeValue identifier of the code to be set that is unambiguous * within the coding scheme. (VR=SH, mandatory) * @param codingSchemeDesignator textual identifier of the table where the 'codeValue' * is linked to its 'codeMeaning'. (VR=SH, mandatory) * @param codingSchemeVersion version of the coding scheme. Used when a coding * scheme has multiple versions and the 'codingScheme * Designator' does not explicitly (or adequately) * specify the version number. (VR=SH, optional) * @param codeMeaning human-readable translation of the 'codeValue'. Used * for display when code dictionary is not available. * (VR=LO, mandatory) ** @return status, EC_Normal if successful, an error code otherwise */ public native int setCode(String codeValue, String codingSchemeDesignator, String codingSchemeVersion, String codeMeaning); } /* * CVS Log * $Log: jDSRCodeValue.java,v $ * Revision 1.1.1.1 2001/06/06 10:32:30 kleber * Init commit for DICOMscope 3.5 * Create new CVS * * */ dicomscope-3.6.0/tkgui/J2Ci/jDSRCompositeValue.java0000644000265600020320000000651311262371100021166 0ustar tilleaadmin/* * * Copyright (C) 2000-2003, OFFIS and Institute for MicroTherapy * * This software and supporting documentation were developed by * * Kuratorium OFFIS e.V. * Healthcare Information and Communication Systems * Escherweg 2 * D-26121 Oldenburg, Germany * * and * * University of Witten/Herdecke * Department of Radiology and MicroTherapy * Institute for MicroTherapy * Medical computer science * * Universitaetsstrasse 142 * 44799 Bochum, Germany * * http://www.microtherapy.de/go/cs * mailto:computer.science@microtherapy.de * * THIS SOFTWARE IS MADE AVAILABLE, AS IS, AND THE INSTITUTE MAKES NO * WARRANTY REGARDING THE SOFTWARE, ITS PERFORMANCE, ITS MERCHANTABILITY * OR FITNESS FOR ANY PARTICULAR USE, FREEDOM FROM ANY COMPUTER DISEASES * OR ITS CONFORMITY TO ANY SPECIFICATION. THE ENTIRE RISK AS TO QUALITY * AND PERFORMANCE OF THE SOFTWARE IS WITH THE USER. * * Author : $Author: kleber $ * Last update : $Date: 2001/06/06 10:32:30 $ * Revision : $Revision: 1.1.1.1 $ * State: $State: Exp $ */ package J2Ci; /** * jDSRCompositeValue represents the relating C++ class * DSRReferenceValue in Java. * * @author Joerg Riesmeier */ public class jDSRCompositeValue { /** * Constructor is disabled !!! */ private jDSRCompositeValue() { // emtpy } /** * Constructor for attaching an existing C++ object. FOR INTERNAL USE ONLY! * @param attachAdr address of C++ object */ public jDSRCompositeValue(long attachAdr) { cppClassAddress = attachAdr; } // --------------------- methods for C++ class binding --------------------- /** * Address of relating C++ object [for access to the DLL]. * Never change manually! */ private long cppClassAddress = (long) 0; // never change! // --------------------------- native methods ------------------------------ /* --- Composite Value --- */ /** get SOP class UID ** @return current SOP class UID (might be invalid or an empty string) */ public native String getSOPClassUID(); /** get SOP class name. * The SOP class name as defined in the OFFIS dcmtk is used if available, * an empty string if the SOP class UID is also empty, the static string * "unknown SOP class" plus the SOP class UID otherwise. ** @return name of the current SOP class (should never be null) */ public native String getSOPClassName(); /** get SOP instance UID ** @return current SOP instance UID (might be invalid or an empty string) */ public native String getSOPInstanceUID(); /** set SOP class UID and SOP instance UID value. * Before setting the values they are checked (non-empty UIDs). If the value * pair is invalid the current value pair is not replaced and remains unchanged. ** @param sopClassUID SOP class UID to be set * @param sopInstanceUID SOP instance UID to be set ** @return status, EC_Normal if successful, an error code otherwise */ public native int setReference(String sopClassUID, String sopInstanceUID); } /* * CVS Log * $Log: jDSRCompositeValue.java,v $ * Revision 1.1.1.1 2001/06/06 10:32:30 kleber * Init commit for DICOMscope 3.5 * Create new CVS * * */ dicomscope-3.6.0/tkgui/J2Ci/jDSRDocument.java0000644000265600020320000006454211262371100020013 0ustar tilleaadmin/* * * Copyright (C) 2000-2003, OFFIS and Institute for MicroTherapy * * This software and supporting documentation were developed by * * Kuratorium OFFIS e.V. * Healthcare Information and Communication Systems * Escherweg 2 * D-26121 Oldenburg, Germany * * and * * University of Witten/Herdecke * Department of Radiology and MicroTherapy * Institute for MicroTherapy * Medical computer science * * Universitaetsstrasse 142 * 44799 Bochum, Germany * * http://www.microtherapy.de/go/cs * mailto:computer.science@microtherapy.de * * THIS SOFTWARE IS MADE AVAILABLE, AS IS, AND THE INSTITUTE MAKES NO * WARRANTY REGARDING THE SOFTWARE, ITS PERFORMANCE, ITS MERCHANTABILITY * OR FITNESS FOR ANY PARTICULAR USE, FREEDOM FROM ANY COMPUTER DISEASES * OR ITS CONFORMITY TO ANY SPECIFICATION. THE ENTIRE RISK AS TO QUALITY * AND PERFORMANCE OF THE SOFTWARE IS WITH THE USER. * * Author : $Author: kleber $ * Last update : $Date: 2001/06/06 10:32:30 $ * Revision : $Revision: 1.1.1.1 $ * State: $State: Exp $ */ package J2Ci; /** * jDSRDocument represents the relating C++ class DSRDocument in Java. * * This class supports reading, writing, creation, printing and rendering of * DICOM Structured Reporting documents (according to supplement 23 final text). * * @author Joerg Riesmeier */ public class jDSRDocument { /** * Constructor is disabled !!! */ private jDSRDocument() { // emtpy } /** * Constructor for attaching an existing C++ object. FOR INTERNAL USE ONLY! * @param attachAdr address of C++ object */ public jDSRDocument(long attachAdr) { cppClassAddress = attachAdr; } // --------------------- methods for C++ class binding --------------------- /** * Address of relating C++ object [for access to the DLL]. * Never change manually! */ private long cppClassAddress = (long) 0; // never change! // --------------------------- native methods ------------------------------ /* --- DSRDocument --- */ // --- misc routines --- /** check whether the current internal state is valid. * The SR document is valid if the corresponding document tree is valid and * the SOP instance UID as well as the SOP class UID are not "empty". ** @return OFTrue if valid, OFFalse otherwise */ public native boolean isValid(); /** check whether the document is finalized. * A new document is originally not finalized but can be finalized using the method * finalizeDocument(). This flag is e.g. used to indicate whether the entire document * is digitally signed and, therefore, each newly added verifying observer would corrupt * all previous signatures. ** @return OFTrue if finalized, OFFalse otherwise */ public native boolean isFinalized(); // --- input and output --- /** render current SR document in HTML format ** @param outputString output string to which the HTML document is written * @param flags flag used to customize the output (see DSRTypes::HF_xxx). * The flag 'HF_version32Compatibility' is implicitly set. ** @return status, EC_Normal if successful, an error code otherwise */ public native int renderHTML(jStringByRef outputString, int flags); // --- get misc attributes --- /** get the current SR document type ** @return document type (might be DT_invalid if read from dataset) */ public native int getDocumentType(); /** get document tree ** @return reference to the document tree */ public jDSRDocumentTree getTree() { return new jDSRDocumentTree (getTreeN()); } private native long getTreeN(); /** get specific character set type. * If the type is unknown the original DICOM defined term can be retrieved * with the method getSpecificCharacterSet(). ** @return character set (might be CS_invalid/unknown if not supported) */ public native int getSpecificCharacterSetType(); /** set specific character set type. * The DICOM defined term (see SpecificCharacterSet) is set accordingly. ** @return status, EC_Normal if successful, an error code otherwise */ public native int setSpecificCharacterSetType(int characterSet); /** get document completion flag ** @return completion flag (might be CF_invalid if read from dataset) */ public native int getCompletionFlag(); /** get document completion flag description ** @return string value (might be NULL) */ public native String getCompletionFlagDescription(); /** get document verification flag ** @return verification flag (might be VF_invalid if read from dataset) */ public native int getVerificationFlag(); /** get number of verifying observers. * A document can be verified more than once. The verification flag should be VERIFIED * if any verifying observer is specified. The details on the observer can be retrieved * using the getVerifyingObserver() methods. ** @return number of verifying observers (if any), 0 otherwise */ public native int getNumberOfVerifyingObservers(); /** get information about a verifying observer. * All reference variables are cleared before the information is retrieved, i.e. if an error * occurs (return value != EC_Normal) non-empty variables do contain correct data. ** @param idx index of the verifying observer to be retrieved (starting with 1). * Use getNumberOfVerifyingObservers() to get the maximum value. * @param dateTime reference to variable where the date and time when this document * has been verified should be stored (required) * @param observerName reference to variable where the name of the person who has verified * this document should be stored (required) * @param organization reference to variable where the name of the organization to which * the observer belongs should be stored (required) ** @return status, EC_Normal if successful, an error code otherwise */ public native int getVerifyingObserver(int idx, jStringByRef dateTime, jStringByRef observerName, jStringByRef organization); /** get information about a verifying observer. * All reference variables are cleared before the information is retrieved, i.e. if an error * occurs (return value != EC_Normal) non-empty variables do contain correct data. ** @param idx index of the verifying observer to be retrieved * (starting with 1). Use getNumberOfVerifyingObservers() * to get the maximum value. * @param dateTime reference to variable where the date and time when this * document has been verified should be stored (required) * @param observerName reference to variable where the name of the person who * has verified this document should be stored (required) * @param observerCodeValue reference to variable where the code value of the code * identifying the verifying observer should be stored. * (optional, see previous method) * @param observerCodingSchemeDesignator reference to variable where the coding scheme designator * of the code identifying the verifying observer should be * stored. (optional, see previous method) * @param observerCodingSchemeVersion reference to variable where the coding scheme version * of the code identifying the verifying observer should be * stored. (optional, see previous method) * @param observerCodeMeaning reference to variable where the code meaning of the code * identifying the verifying observer should be stored. * (optional, see previous method) * @param organization reference to variable where the name of the organization to which * the observer belongs should be stored (required) ** @return status, EC_Normal if successful, an error code otherwise */ public native int getVerifyingObserver(int idx, jStringByRef dateTime, jStringByRef observerName, jStringByRef observerCodeValue, jStringByRef observerCodingSchemeDesignator, jStringByRef observerCodingSchemeVersion, jStringByRef observerCodeMeaning, jStringByRef organization); /** get number of predecessor documents. * A document can have more than one (direct) predecessor document. This is the case * when two or more documents have been merged to created it. The corresponding method * createRevisedVersion() creates only one reference to the current document (and * replaces any existing referenced). ** @return number of predecessor documents (if any), 0 otherwise */ public native int getNumberOfPredecessorDocuments(); // --- get DICOM string attributes (C string) --- /** get modality ** @return string value (might be NULL) */ public native String getModality(); /** get SOP class UID ** @return string value (might be NULL) */ public native String getSOPClassUID(); /** get study instance UID ** @return string value (might be NULL) */ public native String getStudyInstanceUID(); /** get series instance UID ** @return string value (might be NULL) */ public native String getSeriesInstanceUID(); /** get SOP instance UID ** @return string value (might be NULL) */ public native String getSOPInstanceUID(); /** get instance creator UID ** @return string value (might be NULL) */ public native String getInstanceCreatorUID(); /** get specific character set ** @return string value (might be NULL) */ public native String getSpecificCharacterSet(); /** get patient's name ** @return string value (might be NULL) */ public native String getPatientsName(); /** get patient's birth date ** @return string value (might be NULL) */ public native String getPatientsBirthDate(); /** get patient's sex ** @return string value (might be NULL) */ public native String getPatientsSex(); /** get referring physicians name ** @return string value (might be NULL) */ public native String getReferringPhysiciansName(); /** get study description ** @return string value (might be NULL) */ public native String getStudyDescription(); /** get series description ** @return string value (might be NULL) */ public native String getSeriesDescription(); /** get manufacturer ** @return string value (might be NULL) */ public native String getManufacturer(); /** get study date ** @return string value (might be NULL) */ public native String getStudyDate(); /** get study time ** @return string value (might be NULL) */ public native String getStudyTime(); /** get instance creation date ** @return string value (might be NULL) */ public native String getInstanceCreationDate(); /** get instance creation time ** @return string value (might be NULL) */ public native String getInstanceCreationTime(); /** get content date ** @return string value (might be NULL) */ public native String getContentDate(); /** get content time ** @return string value (might be NULL) */ public native String getContentTime(); /** get study ID ** @return string value (might be NULL) */ public native String getStudyID(); /** get patient ID ** @return string value (might be NULL) */ public native String getPatientID(); /** get series number ** @return string value (might be NULL) */ public native String getSeriesNumber(); /** get instance number ** @return string value (might be NULL) */ public native String getInstanceNumber(); /** get accession number ** @return string value (might be NULL) */ public native String getAccessionNumber(); // --- set DICOM string attributes --- /** set specific character set. * The passed string must be a valid DICOM Code String (CS). ** @param string character string specifying the value to be set ** @return status, EC_Normal if successful, an error code otherwise */ public native int setSpecificCharacterSet(String string); /** set document completion flag description. * The description can be removed from the DICOM dataset (type 3) by setting an empty string. ** @param string explanation of the value set for completion flag (optional, VR=LO) ** @return status, EC_Normal if successful, an error code otherwise */ public native int setCompletionFlagDescription(String String); /** set patient's name. * The passed string must be a valid DICOM Person Name (PN). ** @param string character string specifying the value to be set ** @return status, EC_Normal if successful, an error code otherwise */ public native int setPatientsName(String string); /** set patient's birth date. * The passed string must be a valid DICOM Date (DA). ** @param string character string specifying the value to be set ** @return status, EC_Normal if successful, an error code otherwise */ public native int setPatientsBirthDate(String string); /** set patient's sex. * The passed string must be a valid DICOM Code String (CS). ** @param string character string specifying the value to be set ** @return status, EC_Normal if successful, an error code otherwise */ public native int setPatientsSex(String string); /** set referring physicians name. * The passed string must be a valid DICOM Person Name (PN). ** @param string character string specifying the value to be set ** @return status, EC_Normal if successful, an error code otherwise */ public native int setReferringPhysiciansName(String string); /** set study description. * The passed string must be a valid DICOM Long String (LO). ** @param string character string specifying the value to be set ** @return status, EC_Normal if successful, an error code otherwise */ public native int setStudyDescription(String string); /** set series description. * The passed string must be a valid DICOM Long String (LO). ** @param string character string specifying the value to be set ** @return status, EC_Normal if successful, an error code otherwise */ public native int setSeriesDescription(String string); /** set manufacturer. * The passed string must be a valid DICOM Long String (LO). ** @param string character string specifying the value to be set ** @return status, EC_Normal if successful, an error code otherwise */ public native int setManufacturer(String string); /* NOT USED IN JNI E_Condition setContentDate(const OFString &string); E_Condition setContentTime(const OFString &string); */ /** set study ID. * The passed string must be a valid DICOM Short String (SH). ** @param string character string specifying the value to be set ** @return status, EC_Normal if successful, an error code otherwise */ public native int setStudyID(String string); /** set patient ID. * The passed string must be a valid DICOM Long String (LO). ** @param string character string specifying the value to be set ** @return status, EC_Normal if successful, an error code otherwise */ public native int setPatientID(String string); /** set series number. * The passed string must be a valid DICOM Short String (SH). ** @param string character string specifying the value to be set ** @return status, EC_Normal if successful, an error code otherwise */ public native int setSeriesNumber(String string); /** set instance number. * The passed string must be a valid DICOM Integer String (IS). ** @param string character string specifying the value to be set ** @return status, EC_Normal if successful, an error code otherwise */ public native int setInstanceNumber(String string); /** set accession number. * The passed string must be a valid DICOM Short String (SH). ** @param string character string specifying the value to be set ** @return status, EC_Normal if successful, an error code otherwise */ public native int setAccessionNumber(String string); // --- document management functions --- /** create new study. * After generating a new study instance UID the method createNewSeries() is called, * i.e. also a new series instance UID and SOP instance UID are generated. This is * a requirement according to DICOM Supplement 23. */ public native void createNewStudy(); /** create a new series. * After generating a new series instance UID the method createNewSOPInstance() is * called, i.e. also a SOP instance UID is generated. This is a requirement according * to DICOM Supplement 23. */ public native void createNewSeries(); /** create a new series within a given study. * After generating a new series instance UID within the given study the method * createNewSOPInstance() is called, i.e. also a SOP instance UID is generated. * This is a requirement according to DICOM Supplement 23. ** @param studyUID study instance UID to be set (should be a valid UID) ** @return status, EC_Normal if successful, an error code otherwise */ public native int createNewSeriesInStudy(String studyUID); /** create a new SOP instance. * Generate a new SOP instance UID, set the instance creation date/time and reset the * finalized flag (OFFalse). * This method is used internally for createNewDocument(), createRevisedVersion() * and during object initialization. * It could also be used explicitly from the calling application if a new UID should * be created (this is the case if the study instance UID or series instance UID has * changed as well as any other attribute within the SR Document General Module or * SR Document Content Module, see DICOM Supplement 23). * This method also updates the other DICOM header attributes (calling updateAttributes()). */ public native void createNewSOPInstance(); /** create a new document. * A new SOP instance is only created if the current document type was valid/supported. * Please note that the current document is deleted. ** @return status, EC_Normal if successful, an error code otherwise */ public native int createNewDocument(); /** create a new document of the specified type. * A new SOP instance is only created if the current document type was valid/supported. * Please note that the current document is deleted. ** @param documentType type of the SR document (BasicText, Enhanced, Comprehensive) ** @return status, EC_Normal if successful, an error code otherwise */ public native int createNewDocument(int documentType); /** create a revised version of the current document. * A revised version can only be created if the current document is already completed * (see completion flag). If so a reference to the current document is included in the * predecessor documents sequence (possible existing references are automatically * replaced, i.e. there is never more than one reference in this sequence). If all * revised versions of a SR document are stored (written to datasets/files) it is * possible to trace back the full chain of previous versions. * A new SOP instance is created and the content date/time are set automatically. * Furthermore the verifying observer sequence is deleted, the verifcation flag is set * to UNVERIFIED, the completion flag is set to PARTIAL (i.e. not complete), the * completion flag description is deleted, all digital signatures contained in the * document tree are deleted and the finalized flag is reset (OFFalse). ** @return status, EC_Normal if successful, an error code otherwise */ public native int createRevisedVersion(); /** complete the current document. * Sets the completion flag to COMPLETE if not already done (fails otherwise). * The completion flag description is set to an empty string (i.e. absent in DICOM * dataset). ** @return status, EC_Normal if successful, an error code otherwise */ public native int completeDocument(); /** complete the current document and set completion description. * Sets the completion flag to COMPLETE if not already done (fails otherwise). * The completion flag description can be modified independently from the flag by means * of the method setCompletionFlagDescription() - see above. ** @param description explanation of the value set for completion flag (optional, see * previous method, VR=LO) ** @return status, EC_Normal if successful, an error code otherwise */ public native int completeDocument(String description); /** verify the current document by a specific observer. * A document can be verified more than once. The observer information is added to a * sequence stored in the dataset. The verification flag is automatically set to * VERIFIED (if not already done) and the finalized flag is reset (OFFalse). * Please note that only completed documents (see completion flag) can be verified and that * a new SOP instance UID has to be generated (manually) according to the DICOM standard when * creating a dataset/file from this document. ** @param observerName name of the person who has verified this document (required, VR=PN) * @param organization name of the organization to which the observer belongs (required, VR=LO) ** @return status, EC_Normal if successful, an error code otherwise */ public native int verifyDocument(String observerName, String organization); /** verify the current document by a specific observer. * A document can be verified more than once. The observer information is added to a * sequence stored in the dataset. The verification flag is automatically set to * VERIFIED (if not already done) and the finalized flag is reset (OFFalse). * Please note that only completed documents (see completion flag) can be verified and that * a new SOP instance UID has to be generated (manually) according to the DICOM standard when * creating a dataset/file from this document. ** @param observerName name of the person who has verified this document * (required, VR=PN) * @param observerCodeValue code value of the code identifying the observer * @param observerCodingSchemeDesignator coding scheme designator of the code identifying the * observer * @param observerCodingSchemeVersion coding scheme version of the code identifying the * observer * @param observerCodeMeaning code meaning of the code identifying the observer * @param organization name of the organization to which the observer belongs * (required, VR=LO) ** @return status, EC_Normal if successful, an error code otherwise */ public native int verifyDocument(String observerName, String observerCodeValue, String observerCodingSchemeDesignator, String observerCodingSchemeVersion, String observerCodeMeaning, String organization); /** remove verification information. * The list of verifying observers is cleared, the verification flag is set to UNVERIFIED and * the finalized flag is reset (OFFalse). * Normally, there should be no need to use this method. On the other hand it is useful to * guarantee a consistent state when processing documents which have not been created with this * toolkit. */ public native void removeVerification(); /** finalize the current state of the document. * A new document is originally not finalized but can be finalized using the method * finalizeDocument(). This flag is e.g. used to indicate whether the entire document * is digitally signed and, therefore, each newly added verifying observer would corrupt * all previous signatures. * NB: A document needs to be completed first in order to be finalized. Some of the above * document management functions do reset the flag (i.e. set the FinalizedFlag to OFFalse), * other methods (e.g. the setXXX) do not change the flag though the state of the document * is not finalized any more after they have been called. ** @return status, EC_Normal if successful, an error code otherwise */ // public native int finalizeDocument(); } /* * CVS Log * $Log: jDSRDocument.java,v $ * Revision 1.1.1.1 2001/06/06 10:32:30 kleber * Init commit for DICOMscope 3.5 * Create new CVS * * */ dicomscope-3.6.0/tkgui/J2Ci/jDSRDocumentTree.java0000644000265600020320000003663711262371100020637 0ustar tilleaadmin/* * * Copyright (C) 2000-2003, OFFIS and Institute for MicroTherapy * * This software and supporting documentation were developed by * * Kuratorium OFFIS e.V. * Healthcare Information and Communication Systems * Escherweg 2 * D-26121 Oldenburg, Germany * * and * * University of Witten/Herdecke * Department of Radiology and MicroTherapy * Institute for MicroTherapy * Medical computer science * * Universitaetsstrasse 142 * 44799 Bochum, Germany * * http://www.microtherapy.de/go/cs * mailto:computer.science@microtherapy.de * * THIS SOFTWARE IS MADE AVAILABLE, AS IS, AND THE INSTITUTE MAKES NO * WARRANTY REGARDING THE SOFTWARE, ITS PERFORMANCE, ITS MERCHANTABILITY * OR FITNESS FOR ANY PARTICULAR USE, FREEDOM FROM ANY COMPUTER DISEASES * OR ITS CONFORMITY TO ANY SPECIFICATION. THE ENTIRE RISK AS TO QUALITY * AND PERFORMANCE OF THE SOFTWARE IS WITH THE USER. * * Author : $Author: kleber $ * Last update : $Date: 2001/06/06 10:32:30 $ * Revision : $Revision: 1.1.1.1 $ * State: $State: Exp $ */ package J2Ci; /** * jDSRDocumentTree represents the relating C++ class * DSRDocumentTree in Java. * * @author Joerg Riesmeier */ public class jDSRDocumentTree { /** * Constructor is disabled !!! */ private jDSRDocumentTree() { // emtpy } /** * Constructor for attaching an existing C++ object. FOR INTERNAL USE ONLY! * @param attachAdr address of C++ object */ public jDSRDocumentTree(long attachAdr) { cppClassAddress = attachAdr; } // --------------------- methods for C++ class binding --------------------- /** * Address of relating C++ object [for access to the DLL]. * Never change manually! */ private long cppClassAddress = (long) 0; // never change! // --------------------------- native methods ------------------------------ /* --- Document Tree --- */ /** check whether specified content item can be added to the current one. * If the tree is currently empty only a CONTAINER with the internal relationship * type RT_isRoot is allowed (as the new root node). This method can be used * to decide which type of content items can be added prior to really do so. ** @param relationshipType relationship type of node to be checked with regard * to the current one * @param valueType value type of node to be checked * @param addMode flag specifying at which position the new node would * be added. * (AM_afterCurrent, AM_beforeCurrent, AM_belowCurrent) ** @return OFTrue if specified node can be added, OFFalse otherwise */ public native boolean canAddContentItem(int relationshipType, int valueType, int addMode); /** add specified content item to the current one. * If possible this method creates a new node as specified and adds it to the current * one. The method canAddContentItem() is called internally to check parameters first. ** @param relationshipType relationship type of node to be added with regard * to the current one * @param valueType value type of node to be added * @param addMode flag specifying at which position to add the new node. * (AM_afterCurrent, AM_beforeCurrent, AM_belowCurrent) ** @return ID of new node if successful, 0 otherwise */ public native int addContentItem(int relationshipType, int valueType, int addMode); /** remove current content item from tree. * Please note that not only the specified node but also all of his child nodes are * removed from the tree and then deleted. The internal cursor is set automatically * to a new valid position. ** @return ID of the node which became the current one after deletion, 0 if an error * occured or the tree is now empty. */ public native int removeCurrentContentItem(); /** remove digital signatures from the document tree. * This method clears the MACParametersSequence and the DigitalSignaturesSequence for all * content items which have been filled during reading. */ public native void removeSignatures(); /** unmark all content items in the document tree. * Use method 'setCurrentItemMark' to mark and unmark a single content item. * Pointers to the DICOM dataset/item of marked content items are added to the optional * stack when calling the 'write' method. This mechanism can e.g. be used to digitally * sign particular content items. */ public native void unmarkAllContentItems(); /** goto root node of the tree ** @return ID of the root node if successful, 0 otherwise */ public native int gotoRootNode(); /** goto previous node on the same level ** @return ID of the previous node if successful, 0 otherwise */ public native int gotoPreviousNode(); /** goto next node on the same level ** @return ID of the next node if successful, 0 otherwise */ public native int gotoNextNode(); /** goto parent node (one level up) ** @return ID of the parent node if successful, 0 otherwise */ public native int gotoParentNode(); /** goto first child node (one level down) ** @return ID of the first child node if successful, 0 otherwise */ public native int gotoFirstChildNode(); /** iterate over all nodes. * This method visits first the children (if any) and then the siblings ("deep search"). ** @return ID of the next node if successful, 0 otherwise */ public native int iterateNodes(); /** set cursor to specified node ** @param searchID ID of the node to set the cursor to ** @return ID of the new current node if successful, 0 otherwise */ public native int gotoNode(int searchID); /* --- Current Content Item --- */ /** check whether current item is valid (complete) * Applicable to all content items. ** @return OFTrue if current item is valid, OFFalse otherwise */ public native boolean isCurrentItemValid(); /** check for mark flag. * Applicable to all content items. ** @return OFTrue if current content item is marked, OFFalse otherwise */ public native boolean isCurrentItemMarked(); /** mark/unmark item. Used to digitally sign particular content items. * Applicable to all content items. ** @param flag mark item if OFTrue, unmark otherwise */ public native void setCurrentItemMark(boolean flag); /** get value type of the current content item. * Applicable to all content items. ** @return value type of current content item if valid, VT_invalid otherwise */ public native int getCurrentValueType(); /** get relationship type of the current content item. * Applicable to all content items. ** @return relationship type of current content item if valid, RT_invalid otherwise */ public native int getCurrentRelationshipType(); /** get current node ID. * The node ID uniquely identifies a content item in the document tree. Most of the * navigation methods above do return this ID too. * Applicable to all content items. ** @return ID of the current node if valid, 0 otherwise */ public native int getCurrentNodeID(); /** get ID of the referenced node. * Applicable to: byReference relationships ** @return ID of the referenced node if valid, 0 otherwise */ public native int getCurrentReferencedNodeID(); /** get current level. * The level starts with 1 for the root node, then 2 for its child nodes, etc. ** @return number of the current level if valid, 0 otherwise */ public native int getCurrentLevel(); /** get string value of current content item. * Applicable to: TEXT, DATETIME, DATE, TIME, UIDREF, PNAME ** @return string value of current content item if valid, EmptyString otherwise */ public native String getCurrentStringValue(); /** set string value of current content item. * Please use the correct format for the string value depending on the corresponding * content item (value type). * Applicable to: TEXT, DATETIME, DATE, TIME, UIDREF, PNAME ** @param stringValue value to be set ** @return status, EC_Normal if successful, an error code otherwise */ public native int setCurrentStringValue(String stringValue); /** get reference to current code value. * If the current content item is not a code value or the cursor is not valid NULL * is returned. * Applicable to: CODE ** @return reference to CODE value if successful, NULL otherwise */ public jDSRCodeValue getCurrentCodeValue() { long addr = getCurrentCodeValueN(); if (addr == 0) return null; return new jDSRCodeValue (addr); } private native long getCurrentCodeValueN(); /** get reference to current numeric measurement value. * If the current content item is not a numeric measurement value or the cursor * is not valid NULL is returned. * Applicable to: NUM ** @return reference to NUM value if successful, NULL otherwise */ public jDSRNumericValue getCurrentNumValue() { long addr = getCurrentNumValueN(); if (addr == 0) return null; return new jDSRNumericValue (addr); } private native long getCurrentNumValueN(); /** get reference to current spatial coordinates value. * If the current content item is not a spatial coordinates value or the cursor is * not valid NULL is returned. * Applicable to: SCOORD ** @return reference to SCOORD value if successful, NULL otherwise */ public jDSRSCoordValue getCurrentSCoordValue() { long addr = getCurrentSCoordValueN(); if (addr == 0) return null; return new jDSRSCoordValue (addr); } private native long getCurrentSCoordValueN(); /** get reference to current temporal coordinates value. * If the current content item is not a temporal coordinates value or the cursor is * not valid NULL is returned. * Applicable to: TCOORD ** @return reference to TCOORD value if successful, NULL otherwise */ public jDSRTCoordValue getCurrentTCoordValue() { long addr = getCurrentTCoordValueN(); if (addr == 0) return null; return new jDSRTCoordValue (addr); } private native long getCurrentTCoordValueN(); /** get reference to current composite reference value. * If the current content item is not a composite reference value or the cursor is * not valid NULL is returned. * Applicable to: COMPOSITE ** @return reference to COMPOSITE value if successful, NULL otherwise */ public jDSRCompositeValue getCurrentCompositeValue() { long addr = getCurrentCompositeValueN(); if (addr == 0) return null; return new jDSRCompositeValue (addr); } private native long getCurrentCompositeValueN(); /** get reference to current image reference value. * If the current content item is not an image reference value or the cursor is * not valid NULL is returned. * Applicable to: IMAGE ** @return reference to IMAGE value if successful, NULL otherwise */ public jDSRImageValue getCurrentImageValue() { long addr = getCurrentImageValueN(); if (addr == 0) return null; return new jDSRImageValue (addr); } private native long getCurrentImageValueN(); /** get reference to current waveform reference value. * If the current content item is not a waveform reference value or the cursor is * not valid NULL is returned. * Applicable to: WAVEFORM ** @return reference to WAVEFORM value if successful, NULL otherwise */ public jDSRWaveformValue getCurrentWaveformValue() { long addr = getCurrentWaveformValueN(); if (addr == 0) return null; return new jDSRWaveformValue (addr); } private native long getCurrentWaveformValueN(); /** get continuity of content flag of current content item. * This flag specifies whether or not its contained content items (child nodes) are * logically linked in a continuous textual flow, or are sparate items. * Applicable to: CONTAINER ** @return continuity of content flag if successful, COC_invalid otherwise */ public native int getCurrentContinuityOfContentFlag(); /** set continuity of content flag. * This flag specifies whether or not its contained content items (child nodes) are * logically linked in a continuous textual flow, or are sparate items. * Applicable to: CONTAINER ** @param continuityOfContent value to be set ** @return status, EC_Normal if successful, an error code otherwise */ public native int setCurrentContinuityOfContentFlag(int continuityOfContent); /** get reference to current concept name value. * Code describing the concept represented by this content item. Also conveys the value * of document title and section headings in documents. * Applicable to all content items (by-value only, optional/conditional for some value types). ** @return reference to concept name value if successful, NULL otherwise */ public jDSRCodeValue getCurrentConceptName() { long addr = getCurrentConceptNameN(); if (addr == 0) return null; return new jDSRCodeValue (addr); } private native long getCurrentConceptNameN(); /** check whether the current content item requires a non-empty concept name. * The following value types require a concept name: TEXT, NUM, CODE, DATETIME, DATE, TIME, * UIDREF, PNAME, CONTAINER (only required for root node). * @return OFTrue if current conten items requires a concept name, OFFalse otherwise */ // public native int currentItemRequiresConceptName(); /** get observation date and time of current content item. * This is the date and time on which this content item was completed. Might be empty * if the date and time do not differ from the content date and time, see DSRDocument. * Applicable to all content items (by-value only, optional attribute). ** @return observation date and time if valid, EmptyString otherwise */ public native String getCurrentObservationDateTime(); /** set observation date time of current content item. * This is the date and time on which this content item was completed. Might be empty * if the date and time do not differ from the content date and time, see DSRDocument. * Please use the correct DICOM format (VR=DT). * Applicable to all content items (by-value only). ** @param observationDateTime value to be set (might be an empty string) ** @return status, EC_Normal if successful, an error code otherwise */ public native int setCurrentObservationDateTime(String observationDateTime); } /* * CVS Log * $Log: jDSRDocumentTree.java,v $ * Revision 1.1.1.1 2001/06/06 10:32:30 kleber * Init commit for DICOMscope 3.5 * Create new CVS * * */ dicomscope-3.6.0/tkgui/J2Ci/jDSRE_AddMode.java0000644000265600020320000000452711262371100017773 0ustar tilleaadmin/* * * Copyright (C) 2000-2003, OFFIS and Institute for MicroTherapy * * This software and supporting documentation were developed by * * Kuratorium OFFIS e.V. * Healthcare Information and Communication Systems * Escherweg 2 * D-26121 Oldenburg, Germany * * and * * University of Witten/Herdecke * Department of Radiology and MicroTherapy * Institute for MicroTherapy * Medical computer science * * Universitaetsstrasse 142 * 44799 Bochum, Germany * * http://www.microtherapy.de/go/cs * mailto:computer.science@microtherapy.de * * THIS SOFTWARE IS MADE AVAILABLE, AS IS, AND THE INSTITUTE MAKES NO * WARRANTY REGARDING THE SOFTWARE, ITS PERFORMANCE, ITS MERCHANTABILITY * OR FITNESS FOR ANY PARTICULAR USE, FREEDOM FROM ANY COMPUTER DISEASES * OR ITS CONFORMITY TO ANY SPECIFICATION. THE ENTIRE RISK AS TO QUALITY * AND PERFORMANCE OF THE SOFTWARE IS WITH THE USER. * * Author : $Author: kleber $ * Last update : $Date: 2001/06/06 10:32:30 $ * Revision : $Revision: 1.1.1.1 $ * State: $State: Exp $ */ package J2Ci; import java.util.*; /** * The class jDSRE_AddMode represents the C++ enumeration * DSRTypes::E_AddMode. * * @author Joerg Riesmeier */ public class jDSRE_AddMode { /** add new node after current one (sibling) */ public static final int AM_afterCurrent = 0; /** add new node before current one (sibling) */ public static final int AM_beforeCurrent = 1; /** add new node below current one (child) */ public static final int AM_belowCurrent = 2; /** * Contains for each ID the name. */ public static Hashtable names; static { names = new Hashtable(); names.put(new Integer(AM_afterCurrent), "After"); names.put(new Integer(AM_beforeCurrent), "Before"); names.put(new Integer(AM_belowCurrent), "Below"); }; /** * Returns the name of the specified message * @param id Id specifieying the message * @return The name of the specified message */ public static final String getName(int id) { return (String) names.get(new Integer(id)); } } /* * CVS Log * $Log: jDSRE_AddMode.java,v $ * Revision 1.1.1.1 2001/06/06 10:32:30 kleber * Init commit for DICOMscope 3.5 * Create new CVS * * */ dicomscope-3.6.0/tkgui/J2Ci/jDSRE_CharacterSet.java0000644000265600020320000000516111262371100021041 0ustar tilleaadmin/* * * Copyright (C) 2000-2003, OFFIS and Institute for MicroTherapy * * This software and supporting documentation were developed by * * Kuratorium OFFIS e.V. * Healthcare Information and Communication Systems * Escherweg 2 * D-26121 Oldenburg, Germany * * and * * University of Witten/Herdecke * Department of Radiology and MicroTherapy * Institute for MicroTherapy * Medical computer science * * Universitaetsstrasse 142 * 44799 Bochum, Germany * * http://www.microtherapy.de/go/cs * mailto:computer.science@microtherapy.de * * THIS SOFTWARE IS MADE AVAILABLE, AS IS, AND THE INSTITUTE MAKES NO * WARRANTY REGARDING THE SOFTWARE, ITS PERFORMANCE, ITS MERCHANTABILITY * OR FITNESS FOR ANY PARTICULAR USE, FREEDOM FROM ANY COMPUTER DISEASES * OR ITS CONFORMITY TO ANY SPECIFICATION. THE ENTIRE RISK AS TO QUALITY * AND PERFORMANCE OF THE SOFTWARE IS WITH THE USER. * * Author : $Author: kleber $ * Last update : $Date: 2001/06/06 10:32:30 $ * Revision : $Revision: 1.1.1.1 $ * State: $State: Exp $ */ package J2Ci; /** * The class jDSRE_CharacterSet represents the C++ enumeration * DSRTypes::E_CharacterSet. * * @author Joerg Riesmeier */ public class jDSRE_CharacterSet { /** internal type used to indicate an error/unknown CS */ public static final int CS_invalid = 0; /** ISO 646 (ISO-IR 6): ASCII */ public static final int CS_ASCII = 1; /** ISO-IR 100: Latin alphabet No. 1 */ public static final int CS_Latin1 = 2; /** ISO-IR 101: Latin alphabet No. 2 */ public static final int CS_Latin2 = 3; /** ISO-IR 109: Latin alphabet No. 3 */ public static final int CS_Latin3 = 4; /** ISO-IR 110: Latin alphabet No. 4 */ public static final int CS_Latin4 = 5; /** ISO-IR 148: Latin alphabet No. 5 */ public static final int CS_Latin5 = 6; /** ISO-IR 144: Cyrillic */ public static final int CS_Cyrillic = 7; /** ISO-IR 127: Arabic */ public static final int CS_Arabic = 8; /** ISO-IR 126: Greek */ public static final int CS_Greek = 9; /** ISO-IR 138: Hebrew */ public static final int CS_Hebrew = 10; /** ISO-IR 166: Thai */ public static final int CS_Thai = 11; /** ISO-IR 13: Japanese (Katakana/Romaji) */ public static final int CS_Japanese = 12; } /* * CVS Log * $Log: jDSRE_CharacterSet.java,v $ * Revision 1.1.1.1 2001/06/06 10:32:30 kleber * Init commit for DICOMscope 3.5 * Create new CVS * * */ dicomscope-3.6.0/tkgui/J2Ci/jDSRE_CompletionFlag.java0000644000265600020320000000332711262371100021376 0ustar tilleaadmin/* * * Copyright (C) 2000-2003, OFFIS and Institute for MicroTherapy * * This software and supporting documentation were developed by * * Kuratorium OFFIS e.V. * Healthcare Information and Communication Systems * Escherweg 2 * D-26121 Oldenburg, Germany * * and * * University of Witten/Herdecke * Department of Radiology and MicroTherapy * Institute for MicroTherapy * Medical computer science * * Universitaetsstrasse 142 * 44799 Bochum, Germany * * http://www.microtherapy.de/go/cs * mailto:computer.science@microtherapy.de * * THIS SOFTWARE IS MADE AVAILABLE, AS IS, AND THE INSTITUTE MAKES NO * WARRANTY REGARDING THE SOFTWARE, ITS PERFORMANCE, ITS MERCHANTABILITY * OR FITNESS FOR ANY PARTICULAR USE, FREEDOM FROM ANY COMPUTER DISEASES * OR ITS CONFORMITY TO ANY SPECIFICATION. THE ENTIRE RISK AS TO QUALITY * AND PERFORMANCE OF THE SOFTWARE IS WITH THE USER. * * Author : $Author: kleber $ * Last update : $Date: 2001/06/06 10:32:30 $ * Revision : $Revision: 1.1.1.1 $ * State: $State: Exp $ */ package J2Ci; /** * The class jDSRE_CompletionFlag represents the C++ enumeration * DSRTypes::E_CompletionFlag. * * @author Joerg Riesmeier */ public class jDSRE_CompletionFlag { /** internal type used to indicate an error */ public static final int CF_invalid = 0; /** DICOM defined term: PARTIAL */ public static final int CF_Partial = 1; /** DICOM defined term: COMPLETE */ public static final int CF_Complete = 2; } /* * CVS Log * $Log: jDSRE_CompletionFlag.java,v $ * Revision 1.1.1.1 2001/06/06 10:32:30 kleber * Init commit for DICOMscope 3.5 * Create new CVS * * */ dicomscope-3.6.0/tkgui/J2Ci/jDSRE_ContinuityOfContent.java0000644000265600020320000000463711262371100022465 0ustar tilleaadmin/* * * Copyright (C) 2000-2003, OFFIS and Institute for MicroTherapy * * This software and supporting documentation were developed by * * Kuratorium OFFIS e.V. * Healthcare Information and Communication Systems * Escherweg 2 * D-26121 Oldenburg, Germany * * and * * University of Witten/Herdecke * Department of Radiology and MicroTherapy * Institute for MicroTherapy * Medical computer science * * Universitaetsstrasse 142 * 44799 Bochum, Germany * * http://www.microtherapy.de/go/cs * mailto:computer.science@microtherapy.de * * THIS SOFTWARE IS MADE AVAILABLE, AS IS, AND THE INSTITUTE MAKES NO * WARRANTY REGARDING THE SOFTWARE, ITS PERFORMANCE, ITS MERCHANTABILITY * OR FITNESS FOR ANY PARTICULAR USE, FREEDOM FROM ANY COMPUTER DISEASES * OR ITS CONFORMITY TO ANY SPECIFICATION. THE ENTIRE RISK AS TO QUALITY * AND PERFORMANCE OF THE SOFTWARE IS WITH THE USER. * * Author : $Author: kleber $ * Last update : $Date: 2001/06/06 10:32:30 $ * Revision : $Revision: 1.1.1.1 $ * State: $State: Exp $ */ package J2Ci; import java.util.*; /** * The class jDSRE_ContinuityOfContent represents the C++ enumeration * DSRTypes::E_ContinuityOfContent. * * @author Joerg Riesmeier */ public class jDSRE_ContinuityOfContent { /** internal type used to indicate an error */ public static final int COC_invalid = 0; /** DICOM defined term: SEPARATE */ public static final int COC_Separate = 1; /** DICOM defined term: CONTINUOUS */ public static final int COC_Continuous = 2; /** * Contains for each ID the name. */ public static Hashtable names; static { names = new Hashtable(); names.put(new Integer(COC_invalid), ""); names.put(new Integer(COC_Separate), "Separate"); names.put(new Integer(COC_Continuous), "Continuous"); }; /** * Returns the name of the specified jDSRE_ContinuityOfContent * @param id Id specifieying the djDSRE_ContinuityOfContent * @return The name of the specified jDSRE_ContinuityOfContent */ public static final String getName(int id) { return (String) names.get(new Integer(id)); } } /* * CVS Log * $Log: jDSRE_ContinuityOfContent.java,v $ * Revision 1.1.1.1 2001/06/06 10:32:30 kleber * Init commit for DICOMscope 3.5 * Create new CVS * * */ dicomscope-3.6.0/tkgui/J2Ci/jDSRE_DocumentType.java0000644000265600020320000000507711262371100021117 0ustar tilleaadmin/* * * Copyright (C) 2000-2003, OFFIS and Institute for MicroTherapy * * This software and supporting documentation were developed by * * Kuratorium OFFIS e.V. * Healthcare Information and Communication Systems * Escherweg 2 * D-26121 Oldenburg, Germany * * and * * University of Witten/Herdecke * Department of Radiology and MicroTherapy * Institute for MicroTherapy * Medical computer science * * Universitaetsstrasse 142 * 44799 Bochum, Germany * * http://www.microtherapy.de/go/cs * mailto:computer.science@microtherapy.de * * THIS SOFTWARE IS MADE AVAILABLE, AS IS, AND THE INSTITUTE MAKES NO * WARRANTY REGARDING THE SOFTWARE, ITS PERFORMANCE, ITS MERCHANTABILITY * OR FITNESS FOR ANY PARTICULAR USE, FREEDOM FROM ANY COMPUTER DISEASES * OR ITS CONFORMITY TO ANY SPECIFICATION. THE ENTIRE RISK AS TO QUALITY * AND PERFORMANCE OF THE SOFTWARE IS WITH THE USER. * * Author : $Author: kleber $ * Last update : $Date: 2001/06/06 10:32:30 $ * Revision : $Revision: 1.1.1.1 $ * State: $State: Exp $ */ package J2Ci; import java.util.*; /** * The class jDSRE_DocumentType represents the C++ enumeration * DSRTypes::E_DocumentType. * * @author Joerg Riesmeier, Klaus Kleber */ public class jDSRE_DocumentType { /** internal type used to indicate an error */ public static final int DT_invalid = 0; /** DICOM SOP Class: Basic Text SR */ public static final int DT_BasicTextSR = 1; /** DICOM SOP Class: Enhanced SR */ public static final int DT_EnhancedSR = 2; /** DICOM SOP Class: Comprehensive SR */ public static final int DT_ComprehensiveSR = 3; /** * Contains for each ID the name. */ public static Hashtable vtNames; static { vtNames = new Hashtable(); vtNames.put(new Integer(DT_invalid), ""); vtNames.put(new Integer(DT_BasicTextSR), "Basic Text SR"); vtNames.put(new Integer(DT_EnhancedSR), "Enhanced SR"); vtNames.put(new Integer(DT_ComprehensiveSR), "Comprehensive SR"); }; /** * Returns the name of the specified document type * @param id Id specifieying the document type * @return The name of the specified document type */ public static final String getDocumentTypeName(int id) { return (String) vtNames.get(new Integer(id)); } } /* * CVS Log * $Log: jDSRE_DocumentType.java,v $ * Revision 1.1.1.1 2001/06/06 10:32:30 kleber * Init commit for DICOMscope 3.5 * Create new CVS * * */ dicomscope-3.6.0/tkgui/J2Ci/jDSRE_GraphicType.java0000644000265600020320000000537111262371100020713 0ustar tilleaadmin/* * * Copyright (C) 2000-2003, OFFIS and Institute for MicroTherapy * * This software and supporting documentation were developed by * * Kuratorium OFFIS e.V. * Healthcare Information and Communication Systems * Escherweg 2 * D-26121 Oldenburg, Germany * * and * * University of Witten/Herdecke * Department of Radiology and MicroTherapy * Institute for MicroTherapy * Medical computer science * * Universitaetsstrasse 142 * 44799 Bochum, Germany * * http://www.microtherapy.de/go/cs * mailto:computer.science@microtherapy.de * * THIS SOFTWARE IS MADE AVAILABLE, AS IS, AND THE INSTITUTE MAKES NO * WARRANTY REGARDING THE SOFTWARE, ITS PERFORMANCE, ITS MERCHANTABILITY * OR FITNESS FOR ANY PARTICULAR USE, FREEDOM FROM ANY COMPUTER DISEASES * OR ITS CONFORMITY TO ANY SPECIFICATION. THE ENTIRE RISK AS TO QUALITY * AND PERFORMANCE OF THE SOFTWARE IS WITH THE USER. * * Author : $Author: kleber $ * Last update : $Date: 2001/06/06 10:32:30 $ * Revision : $Revision: 1.1.1.1 $ * State: $State: Exp $ */ package J2Ci; import java.util.*; /** * The class jDSRE_GraphicType represents the C++ enumeration * DSRTypes::E_GraphicType. * * @author Joerg Riesmeier */ public class jDSRE_GraphicType { /** internal type used to indicate an error */ public static final int GT_invalid = 0; /** DICOM Graphic Type: POINT */ public static final int GT_Point = 1; /** DICOM Graphic Type: MULTIPOINT */ public static final int GT_Multipoint = 2; /** DICOM Graphic Type: POLYLINE */ public static final int GT_Polyline = 3; /** DICOM Graphic Type: CIRCLE */ public static final int GT_Circle = 4; /** DICOM Graphic Type: ELLIPSE */ public static final int GT_Ellipse = 5; /** * Contains the name for each ID. */ public static Hashtable names; static { names = new Hashtable(); names.put(new Integer(GT_invalid), ""); names.put(new Integer(GT_Point), "Point"); names.put(new Integer(GT_Multipoint), "Multipoint"); names.put(new Integer(GT_Polyline), "Polyline"); names.put(new Integer(GT_Circle), "Circle"); names.put(new Integer(GT_Ellipse), "Ellipse"); }; /** * Returns the name of the specified message * @param id Id specifying the message * @return The name of the specified message */ public static final String getName(int id) { return (String) names.get(new Integer(id)); } } /* * CVS Log * $Log: jDSRE_GraphicType.java,v $ * Revision 1.1.1.1 2001/06/06 10:32:30 kleber * Init commit for DICOMscope 3.5 * Create new CVS * * */ dicomscope-3.6.0/tkgui/J2Ci/jDSRE_RelationshipType.java0000644000265600020320000001060511262371100021773 0ustar tilleaadmin/* * * Copyright (C) 2000-2003, OFFIS and Institute for MicroTherapy * * This software and supporting documentation were developed by * * Kuratorium OFFIS e.V. * Healthcare Information and Communication Systems * Escherweg 2 * D-26121 Oldenburg, Germany * * and * * University of Witten/Herdecke * Department of Radiology and MicroTherapy * Institute for MicroTherapy * Medical computer science * * Universitaetsstrasse 142 * 44799 Bochum, Germany * * http://www.microtherapy.de/go/cs * mailto:computer.science@microtherapy.de * * THIS SOFTWARE IS MADE AVAILABLE, AS IS, AND THE INSTITUTE MAKES NO * WARRANTY REGARDING THE SOFTWARE, ITS PERFORMANCE, ITS MERCHANTABILITY * OR FITNESS FOR ANY PARTICULAR USE, FREEDOM FROM ANY COMPUTER DISEASES * OR ITS CONFORMITY TO ANY SPECIFICATION. THE ENTIRE RISK AS TO QUALITY * AND PERFORMANCE OF THE SOFTWARE IS WITH THE USER. * * Author : $Author: kleber $ * Last update : $Date: 2001/06/06 10:32:30 $ * Revision : $Revision: 1.1.1.1 $ * State: $State: Exp $ */ package J2Ci; import java.util.*; /** * The class jDSRE_RelationshipType represents the C++ enumeration * DSRTypes::E_RelationshipType. * * @author Joerg Riesmeier */ public class jDSRE_RelationshipType { /** internal type used to indicate an error */ public static final int RT_invalid = 0; /** internal type used for the document root */ public static final int RT_isRoot = 1; /** DICOM Relationship Type: CONTAINS */ public static final int RT_contains = 2; /** DICOM Relationship Type: HAS OBS CONTEXT */ public static final int RT_hasObsContext = 3; /** DICOM Relationship Type: HAS ACQ CONTEXT */ public static final int RT_hasAcqContext = 4; /** DICOM Relationship Type: HAS CONCEPT MOD */ public static final int RT_hasConceptMod = 5; /** DICOM Relationship Type: HAS PROPERTIES */ public static final int RT_hasProperties = 6; /** DICOM Relationship Type: INFERRED FROM */ public static final int RT_inferredFrom = 7; /** DICOM Relationship Type: SELECTED FROM */ public static final int RT_selectedFrom = 8; /** * Contains the name for each ID. */ public static Hashtable names; static { names = new Hashtable(); names.put(new Integer(RT_invalid), ""); names.put(new Integer(RT_isRoot), ""); names.put(new Integer(RT_contains), "contains"); names.put(new Integer(RT_hasObsContext), "has Obs Context"); names.put(new Integer(RT_hasAcqContext), "has Acq Context"); names.put(new Integer(RT_hasConceptMod), "has Concept Mod"); names.put(new Integer(RT_hasProperties), "has Properties"); names.put(new Integer(RT_inferredFrom), "inferred from"); names.put(new Integer(RT_selectedFrom), "selected from"); }; /** * Contains the name for each ID. */ public static Hashtable treNames; static { treNames = new Hashtable(); treNames.put(new Integer(RT_invalid), ""); treNames.put(new Integer(RT_isRoot), ""); treNames.put(new Integer(RT_contains), ""); treNames.put(new Integer(RT_hasObsContext), "Observation Context"); treNames.put(new Integer(RT_hasAcqContext), "Acquisition Context"); treNames.put(new Integer(RT_hasConceptMod), "Concept Modifier"); treNames.put(new Integer(RT_hasProperties), "Properties"); treNames.put(new Integer(RT_inferredFrom), "Inferred"); treNames.put(new Integer(RT_selectedFrom), "Selected"); }; /** * Returns the name of the specified message * @param id Id specifying the message * @return The name of the specified message */ public static final String getName(int id) { return (String) names.get(new Integer(id)); } /** * Returns the name of the specified message * @param id Id specifying the message * @return The name of the specified message */ public static final String getTreeName(int id) { return (String) treNames.get(new Integer(id)); } } /* * CVS Log * $Log: jDSRE_RelationshipType.java,v $ * Revision 1.1.1.1 2001/06/06 10:32:30 kleber * Init commit for DICOMscope 3.5 * Create new CVS * * */ dicomscope-3.6.0/tkgui/J2Ci/jDSRE_TemporalRangeType.java0000644000265600020320000000572111262371100022075 0ustar tilleaadmin/* * * Copyright (C) 2000-2003, OFFIS and Institute for MicroTherapy * * This software and supporting documentation were developed by * * Kuratorium OFFIS e.V. * Healthcare Information and Communication Systems * Escherweg 2 * D-26121 Oldenburg, Germany * * and * * University of Witten/Herdecke * Department of Radiology and MicroTherapy * Institute for MicroTherapy * Medical computer science * * Universitaetsstrasse 142 * 44799 Bochum, Germany * * http://www.microtherapy.de/go/cs * mailto:computer.science@microtherapy.de * * THIS SOFTWARE IS MADE AVAILABLE, AS IS, AND THE INSTITUTE MAKES NO * WARRANTY REGARDING THE SOFTWARE, ITS PERFORMANCE, ITS MERCHANTABILITY * OR FITNESS FOR ANY PARTICULAR USE, FREEDOM FROM ANY COMPUTER DISEASES * OR ITS CONFORMITY TO ANY SPECIFICATION. THE ENTIRE RISK AS TO QUALITY * AND PERFORMANCE OF THE SOFTWARE IS WITH THE USER. * * Author : $Author: kleber $ * Last update : $Date: 2001/06/06 10:32:30 $ * Revision : $Revision: 1.1.1.1 $ * State: $State: Exp $ */ package J2Ci; import java.util.*; /** * The class jDSRE_TemporalRangeType represents the C++ enumeration * DSRTypes::E_TemporalRangeType. * * @author Joerg Riesmeier */ public class jDSRE_TemporalRangeType { /** internal type used to indicate an error */ public static final int TRT_invalid = 0; /** DICOM Temporal Range Type: POINT */ public static final int TRT_Point = 1; /** DICOM Temporal Range Type: MULTIPOINT */ public static final int TRT_Multipoint = 2; /** DICOM Temporal Range Type: SEGMENT */ public static final int TRT_Segment = 3; /** DICOM Temporal Range Type: MULTISEGMENT */ public static final int TRT_Multisegment = 4; /** DICOM Temporal Range Type: BEGIN */ public static final int TRT_Begin = 5; /** DICOM Temporal Range Type: END */ public static final int TRT_End = 6; /** * Contains the name for each ID. */ public static Hashtable names; static { names = new Hashtable(); names.put(new Integer(TRT_invalid), ""); names.put(new Integer(TRT_Point), "Point"); names.put(new Integer(TRT_Multipoint), "Multipoint"); names.put(new Integer(TRT_Segment), "Segment"); names.put(new Integer(TRT_Multisegment), "Multisegment"); names.put(new Integer(TRT_Begin), "Begin"); names.put(new Integer(TRT_End), "End"); }; /** * Returns the name of the specified message * @param id Id specifying the message * @return The name of the specified message */ public static final String getName(int id) { return (String) names.get(new Integer(id)); } } /* * CVS Log * $Log: jDSRE_TemporalRangeType.java,v $ * Revision 1.1.1.1 2001/06/06 10:32:30 kleber * Init commit for DICOMscope 3.5 * Create new CVS * * */ dicomscope-3.6.0/tkgui/J2Ci/jDSRE_ValueType.java0000644000265600020320000001035011262371100020403 0ustar tilleaadmin/* * * Copyright (C) 2000-2003, OFFIS and Institute for MicroTherapy * * This software and supporting documentation were developed by * * Kuratorium OFFIS e.V. * Healthcare Information and Communication Systems * Escherweg 2 * D-26121 Oldenburg, Germany * * and * * University of Witten/Herdecke * Department of Radiology and MicroTherapy * Institute for MicroTherapy * Medical computer science * * Universitaetsstrasse 142 * 44799 Bochum, Germany * * http://www.microtherapy.de/go/cs * mailto:computer.science@microtherapy.de * * THIS SOFTWARE IS MADE AVAILABLE, AS IS, AND THE INSTITUTE MAKES NO * WARRANTY REGARDING THE SOFTWARE, ITS PERFORMANCE, ITS MERCHANTABILITY * OR FITNESS FOR ANY PARTICULAR USE, FREEDOM FROM ANY COMPUTER DISEASES * OR ITS CONFORMITY TO ANY SPECIFICATION. THE ENTIRE RISK AS TO QUALITY * AND PERFORMANCE OF THE SOFTWARE IS WITH THE USER. * * Author : $Author: kleber $ * Last update : $Date: 2001/06/06 10:32:30 $ * Revision : $Revision: 1.1.1.1 $ * State: $State: Exp $ */ package J2Ci; import java.util.*; /** * The class jDSRE_ValueType represents the C++ enumeration * DSRTypes::E_ValueType. * * @author Joerg Riesmeier */ public class jDSRE_ValueType { /** internal type used to indicate an error */ public static final int VT_invalid = 0; /** DICOM Value Type: TEXT */ public static final int VT_Text = 1; /** DICOM Value Type: CODE */ public static final int VT_Code = 2; /** DICOM Value Type: NUM */ public static final int VT_Num = 3; /** DICOM Value Type: DATETIME */ public static final int VT_DateTime = 4; /** DICOM Value Type: DATE */ public static final int VT_Date = 5; /** DICOM Value Type: TIME */ public static final int VT_Time = 6; /** DICOM Value Type: UIDREF */ public static final int VT_UIDRef = 7; /** DICOM Value Type: PNAME */ public static final int VT_PName = 8; /** DICOM Value Type: SCOORD */ public static final int VT_SCoord = 9; /** DICOM Value Type: TCOORD */ public static final int VT_TCoord = 10; /** DICOM Value Type: COMPOSITE */ public static final int VT_Composite = 11; /** DICOM Value Type: IMAGE */ public static final int VT_Image = 12; /** DICOM Value Type: WAVEFORM */ public static final int VT_Waveform = 13; /** DICOM Value Type: CONTAINER */ public static final int VT_Container = 14; /** type used to indicate by-reference relationships */ public static final int VT_byReference = 15; /** * Contains for each ID the name. */ public static Hashtable vtNames; static { vtNames = new Hashtable(); vtNames.put(new Integer(VT_invalid), ""); vtNames.put(new Integer(VT_Text), "Text"); vtNames.put(new Integer(VT_Code), "Code"); vtNames.put(new Integer(VT_Num), "Numeric Value"); vtNames.put(new Integer(VT_DateTime), "Datetime"); vtNames.put(new Integer(VT_Date), "Date"); vtNames.put(new Integer(VT_Time), "Time"); vtNames.put(new Integer(VT_UIDRef), "UID Reference"); vtNames.put(new Integer(VT_PName), "Person Name"); vtNames.put(new Integer(VT_SCoord), "Spatial Coordinates"); vtNames.put(new Integer(VT_TCoord), "Temporal Coordinates"); vtNames.put(new Integer(VT_Composite), "Composite"); vtNames.put(new Integer(VT_Image), "Image"); vtNames.put(new Integer(VT_Waveform), "Waveform"); vtNames.put(new Integer(VT_Container), "Container"); vtNames.put(new Integer(VT_byReference), "by-reference"); }; /** * Returns the name of the specified message * @param id Id specifieying the message * @return The name of the specified message */ public static final String getVTName(int id) { return (String) vtNames.get(new Integer(id)); } } /* * CVS Log * $Log: jDSRE_ValueType.java,v $ * Revision 1.1.1.1 2001/06/06 10:32:30 kleber * Init commit for DICOMscope 3.5 * Create new CVS * * */ dicomscope-3.6.0/tkgui/J2Ci/jDSRE_VerificationFlag.java0000644000265600020320000000335111262371100021704 0ustar tilleaadmin/* * * Copyright (C) 2000-2003, OFFIS and Institute for MicroTherapy * * This software and supporting documentation were developed by * * Kuratorium OFFIS e.V. * Healthcare Information and Communication Systems * Escherweg 2 * D-26121 Oldenburg, Germany * * and * * University of Witten/Herdecke * Department of Radiology and MicroTherapy * Institute for MicroTherapy * Medical computer science * * Universitaetsstrasse 142 * 44799 Bochum, Germany * * http://www.microtherapy.de/go/cs * mailto:computer.science@microtherapy.de * * THIS SOFTWARE IS MADE AVAILABLE, AS IS, AND THE INSTITUTE MAKES NO * WARRANTY REGARDING THE SOFTWARE, ITS PERFORMANCE, ITS MERCHANTABILITY * OR FITNESS FOR ANY PARTICULAR USE, FREEDOM FROM ANY COMPUTER DISEASES * OR ITS CONFORMITY TO ANY SPECIFICATION. THE ENTIRE RISK AS TO QUALITY * AND PERFORMANCE OF THE SOFTWARE IS WITH THE USER. * * Author : $Author: kleber $ * Last update : $Date: 2001/06/06 10:32:30 $ * Revision : $Revision: 1.1.1.1 $ * State: $State: Exp $ */ package J2Ci; /** * The class jDSRE_VerificationFlag represents the C++ enumeration * DSRTypes::E_VerificationFlag. * * @author Joerg Riesmeier */ public class jDSRE_VerificationFlag { /** internal type used to indicate an error */ public static final int VF_invalid = 0; /** DICOM defined term: UNVERIFIED */ public static final int VF_Unverified = 1; /** DICOM defined term: VERIFIED */ public static final int VF_Verified = 2; } /* * CVS Log * $Log: jDSRE_VerificationFlag.java,v $ * Revision 1.1.1.1 2001/06/06 10:32:30 kleber * Init commit for DICOMscope 3.5 * Create new CVS * * */ dicomscope-3.6.0/tkgui/J2Ci/jDSRImageValue.java0000644000265600020320000001501711262371100020245 0ustar tilleaadmin/* * * Copyright (C) 2000-2003, OFFIS and Institute for MicroTherapy * * This software and supporting documentation were developed by * * Kuratorium OFFIS e.V. * Healthcare Information and Communication Systems * Escherweg 2 * D-26121 Oldenburg, Germany * * and * * University of Witten/Herdecke * Department of Radiology and MicroTherapy * Institute for MicroTherapy * Medical computer science * * Universitaetsstrasse 142 * 44799 Bochum, Germany * * http://www.microtherapy.de/go/cs * mailto:computer.science@microtherapy.de * * THIS SOFTWARE IS MADE AVAILABLE, AS IS, AND THE INSTITUTE MAKES NO * WARRANTY REGARDING THE SOFTWARE, ITS PERFORMANCE, ITS MERCHANTABILITY * OR FITNESS FOR ANY PARTICULAR USE, FREEDOM FROM ANY COMPUTER DISEASES * OR ITS CONFORMITY TO ANY SPECIFICATION. THE ENTIRE RISK AS TO QUALITY * AND PERFORMANCE OF THE SOFTWARE IS WITH THE USER. * * Author : $Author: kleber $ * Last update : $Date: 2001/06/06 10:32:30 $ * Revision : $Revision: 1.1.1.1 $ * State: $State: Exp $ */ package J2Ci; /** * jDSRImageValue represents the relating C++ class * DSRImageReferenceValue in Java. * * @author Joerg Riesmeier */ public class jDSRImageValue { /** * Constructor is disabled !!! */ private jDSRImageValue() { // emtpy } /** * Constructor for attaching an existing C++ object. FOR INTERNAL USE ONLY! * @param attachAdr address of C++ object */ public jDSRImageValue(long attachAdr) { cppClassAddress = attachAdr; } // --------------------- methods for C++ class binding --------------------- /** * Address of relating C++ object [for access to the DLL]. * Never change manually! */ private long cppClassAddress = (long) 0; // never change! // --------------------------- native methods ------------------------------ /* --- Image Value --- */ /** get image SOP class UID ** @return current image SOP class UID (might be invalid or an empty string) */ public native String getImageSOPClassUID(); /** get image SOP class name. * The SOP class name as defined in the OFFIS dcmtk is used if available, * an empty string if the SOP class UID is also empty, the static string * "unknown SOP class" plus the SOP class UID otherwise. ** @return name of the current image SOP class (should never be null or empty) */ public native String getImageSOPClassName(); /** get image SOP instance UID ** @return current image SOP instance UID (might be invalid or an empty string) */ public native String getImageSOPInstanceUID(); /** set image SOP class UID and SOP instance UID value. * Before setting the values they are checked (non-empty UIDs). If the value * pair is invalid the current value pair is not replaced and remains unchanged. ** @param sopClassUID SOP class UID of the image to be set * @param sopInstanceUID SOP instance UID of the image to be set ** @return status, EC_Normal if successful, an error code otherwise */ public native int setImageReference(String sopClassUID, String sopInstanceUID); /** get presentation state SOP class UID ** @return current pstate SOP class UID (might be invalid or an empty string) */ public native String getPStateSOPClassUID(); /** get presentation state SOP class name. * The SOP class name as defined in the OFFIS dcmtk is used if available, * an empty string if the SOP class UID is also empty, the static string * "unknown SOP class" plus the SOP class UID otherwise. ** @return name of the current pstate SOP class (should never be null or empty) */ public native String getPStateSOPClassName(); /** get presentation state SOP instance UID ** @return current pstate SOP instance UID (might be invalid or an empty string) */ public native String getPStateSOPInstanceUID(); /** set presentation state SOP class UID and SOP instance UID value. * Before setting the values they are checked. The presentation state object is * "valid" if both UIDs are empty or both are not empty and SOP class UID equals * to "GrayscaleSoftcopyPresentationStateStorage". If the value pair is invalid * the current value pair is not replaced and remains unchanged. ** @param sopClassUID SOP class UID of the pstate to be set * @param sopInstanceUID SOP instance UID of the pstate to be set ** @return status, EC_Normal if successful, an error code otherwise */ public native int setPStateReference(String sopClassUID, String sopInstanceUID); /** clear the referenced frame list */ public native void clearFrameList(); /** get number of entries contained in the referenced frame list ** @return number of frames if any, 0 otherwise */ public native int getNumberOfFrames(); /** get copy of the specified entry from the referenced frame list ** @param idx index of the entry to be returned (starting from 1) * @param frameNumber reference to variable where the frame number should be stored ** @return status, EC_Normal if successful, an error code otherwise */ public native int getFrame(int idx, jIntByRef frameNumber); /** add entry to the referenced frame list. * Please note that only frames are added that are not already contained in the list. ** @param frameNumber frame number to be added */ public native void addFrame(int frameNumber); /** remove entry from the referenced frame list ** @param idx index of the entry to be removed (starting from 1) ** @return status, EC_Normal if successful, an error code otherwise */ public native int removeFrame(int idx); /** check whether the image reference applies to a specific frame. * The image reference applies to a frame (of multiframe images) if the list of * referenced frame numbers is empty or the frame number is part of the list. ** @param frameNumber number of the frame to be checked ** @return OFTrue if reference applies to the specified frame, OFFalse otherwise */ public native boolean appliesToFrame(int frameNumber); } /* * CVS Log * $Log: jDSRImageValue.java,v $ * Revision 1.1.1.1 2001/06/06 10:32:30 kleber * Init commit for DICOMscope 3.5 * Create new CVS * * */ dicomscope-3.6.0/tkgui/J2Ci/jDSRNumericValue.java0000644000265600020320000001220711262371100020623 0ustar tilleaadmin/* * * Copyright (C) 2000-2003, OFFIS and Institute for MicroTherapy * * This software and supporting documentation were developed by * * Kuratorium OFFIS e.V. * Healthcare Information and Communication Systems * Escherweg 2 * D-26121 Oldenburg, Germany * * and * * University of Witten/Herdecke * Department of Radiology and MicroTherapy * Institute for MicroTherapy * Medical computer science * * Universitaetsstrasse 142 * 44799 Bochum, Germany * * http://www.microtherapy.de/go/cs * mailto:computer.science@microtherapy.de * * THIS SOFTWARE IS MADE AVAILABLE, AS IS, AND THE INSTITUTE MAKES NO * WARRANTY REGARDING THE SOFTWARE, ITS PERFORMANCE, ITS MERCHANTABILITY * OR FITNESS FOR ANY PARTICULAR USE, FREEDOM FROM ANY COMPUTER DISEASES * OR ITS CONFORMITY TO ANY SPECIFICATION. THE ENTIRE RISK AS TO QUALITY * AND PERFORMANCE OF THE SOFTWARE IS WITH THE USER. * * Author : $Author: kleber $ * Last update : $Date: 2001/06/06 10:32:30 $ * Revision : $Revision: 1.1.1.1 $ * State: $State: Exp $ */ package J2Ci; /** * jDSRNumericValue represents the relating C++ class * DSRNumericMeasurementValue in Java. * * @author Joerg Riesmeier */ public class jDSRNumericValue { /** * Constructor is disabled !!! */ private jDSRNumericValue() { // emtpy } /** * Constructor for attaching an existing C++ object. FOR INTERNAL USE ONLY! * @param attachAdr address of C++ object */ public jDSRNumericValue(long attachAdr) { cppClassAddress = attachAdr; } // --------------------- methods for C++ class binding --------------------- /** * Address of relating C++ object [for access to the DLL]. * Never change manually! */ private long cppClassAddress = (long) 0; // never change! // --------------------------- native methods ------------------------------ /* --- Numeric Value --- */ /** get numeric value ** @return current numeric value (might be invalid or an empty string) */ public native String getNumericValue(); /** get measurement unit code value. * This is a computer readable and computer searchable identifier of the code. * This value contains the measurement unit. ** @return current code value (might be invalid or an empty string) */ public native String getMeasurementUnitCodeValue(); /** get measurement unit coding scheme designator. * This is a textual identifier of the table where the code value is linked to its * code meaning. ** @return current coding scheme designator (might be invalid or an empty string) */ public native String getMeasurementUnitCodingSchemeDesignator(); /** get measurement unit coding scheme version. * Optional - Used when a coding scheme has multiple versions and the coding scheme * designator does not explicitly (or adequately) specify the version number. ** @return current coding scheme version (might be invalid or an empty string) */ public native String getMeasurementUnitCodingSchemeVersion(); /** get measurement unit code meaning. * This value contains the measurement name. ** @return current code meaning (might be invalid or an empty string) */ public native String getMeasurementUnitCodeMeaning(); /** set numeric value. * Before setting the value it is checked (see checkNumericValue()). If the value is * invalid the current value is not replaced and remains unchanged. ** @param numericValue numeric value to be set (VR=DS) ** @return status, EC_Normal if successful, an error code otherwise */ public native int setNumericValue(String numericValue); /** set measurement unit. * Before setting the specified code it is checked (see checkCode()). If the code is * invalid the current code is not replaced and remains unchanged. ** @param codeValue corresponds to measurement unit. (VR=SH, mandatory) * @param codingSchemeDesignator textual identifier of the table where the 'codeValue' * is linked to its 'codeMeaning'. (VR=SH, mandatory) * @param codingSchemeVersion version of the coding scheme. Used when a coding * scheme has multiple versions and the 'codingScheme * Designator' does not explicitly (or adequately) * specify the version number. (VR=SH, optional) * @param codeMeaning corresponds to measurement name. (VR=LO, mandatory) ** @return status, EC_Normal if successful, an error code otherwise */ public native int setMeasurementUnit(String codeValue, String codingSchemeDesignator, String codingSchemeVersion, String codeMeaning); } /* * CVS Log * $Log: jDSRNumericValue.java,v $ * Revision 1.1.1.1 2001/06/06 10:32:30 kleber * Init commit for DICOMscope 3.5 * Create new CVS * * */ dicomscope-3.6.0/tkgui/J2Ci/jDSRSCoordValue.java0000644000265600020320000000765611262371100020426 0ustar tilleaadmin/* * * Copyright (C) 2000-2003, OFFIS and Institute for MicroTherapy * * This software and supporting documentation were developed by * * Kuratorium OFFIS e.V. * Healthcare Information and Communication Systems * Escherweg 2 * D-26121 Oldenburg, Germany * * and * * University of Witten/Herdecke * Department of Radiology and MicroTherapy * Institute for MicroTherapy * Medical computer science * * Universitaetsstrasse 142 * 44799 Bochum, Germany * * http://www.microtherapy.de/go/cs * mailto:computer.science@microtherapy.de * * THIS SOFTWARE IS MADE AVAILABLE, AS IS, AND THE INSTITUTE MAKES NO * WARRANTY REGARDING THE SOFTWARE, ITS PERFORMANCE, ITS MERCHANTABILITY * OR FITNESS FOR ANY PARTICULAR USE, FREEDOM FROM ANY COMPUTER DISEASES * OR ITS CONFORMITY TO ANY SPECIFICATION. THE ENTIRE RISK AS TO QUALITY * AND PERFORMANCE OF THE SOFTWARE IS WITH THE USER. * * Author : $Author: kleber $ * Last update : $Date: 2001/06/06 10:32:30 $ * Revision : $Revision: 1.1.1.1 $ * State: $State: Exp $ */ package J2Ci; /** * jDSRSCoordValue represents the relating C++ class * DSRSpatialCoordinatesValue in Java. * * @author Joerg Riesmeier */ public class jDSRSCoordValue { /** * Constructor is disabled !!! */ private jDSRSCoordValue() { // emtpy } /** * Constructor for attaching an existing C++ object. FOR INTERNAL USE ONLY! * @param attachAdr address of C++ object */ public jDSRSCoordValue(long attachAdr) { cppClassAddress = attachAdr; } // --------------------- methods for C++ class binding --------------------- /** * Address of relating C++ object [for access to the DLL]. * Never change manually! */ private long cppClassAddress = (long) 0; // never change! // --------------------------- native methods ------------------------------ /* --- SCoord Value --- */ /** get current graphic type. * The graphic type specifies the geometry of the coordinates stored in the graphic data * list. ** @return graphic type (might be GT_invalid) */ public native int getGraphicType(); /** set current graphic type. * The graphic type specifies the geometry of the coordinates stored in the graphic data * list. ** @param graphicType graphic type to be set (GT_invalid is not allowed) ** @return status, EC_Normal if successful, an error code otherwise */ public native int setGraphicType(int graphicType); /** clear the graphic data list */ public native void clearGraphicData(); /** get number of pixels contained in the graphic data list ** @return number of pixels if any, 0 otherwise */ public native int getNumberOfPixels(); /** get copy of the specified pixel ** @param idx index of the value pair to be returned (starting from 1) * @param column reference to variable where the column value should be stored * @param row reference to variable where the row value should be stored ** @return status, EC_Normal if successful, an error code otherwise */ public native int getPixel(int idx, jFloatByRef column, jFloatByRef row); /** add pixel to the graphic data list ** @param column column value to be added * @param row row value to be added */ public native void addPixel(float column, float row); /** remove pixel from the list ** @param idx index of the pixel to be removed (starting from 1) ** @return status, EC_Normal if successful, an error code otherwise */ public native int removePixel(int idx); } /* * CVS Log * $Log: jDSRSCoordValue.java,v $ * Revision 1.1.1.1 2001/06/06 10:32:30 kleber * Init commit for DICOMscope 3.5 * Create new CVS * * */ dicomscope-3.6.0/tkgui/J2Ci/jDSRTCoordValue.java0000644000265600020320000000544711262371100020423 0ustar tilleaadmin/* * * Copyright (C) 2000-2003, OFFIS and Institute for MicroTherapy * * This software and supporting documentation were developed by * * Kuratorium OFFIS e.V. * Healthcare Information and Communication Systems * Escherweg 2 * D-26121 Oldenburg, Germany * * and * * University of Witten/Herdecke * Department of Radiology and MicroTherapy * Institute for MicroTherapy * Medical computer science * * Universitaetsstrasse 142 * 44799 Bochum, Germany * * http://www.microtherapy.de/go/cs * mailto:computer.science@microtherapy.de * * THIS SOFTWARE IS MADE AVAILABLE, AS IS, AND THE INSTITUTE MAKES NO * WARRANTY REGARDING THE SOFTWARE, ITS PERFORMANCE, ITS MERCHANTABILITY * OR FITNESS FOR ANY PARTICULAR USE, FREEDOM FROM ANY COMPUTER DISEASES * OR ITS CONFORMITY TO ANY SPECIFICATION. THE ENTIRE RISK AS TO QUALITY * AND PERFORMANCE OF THE SOFTWARE IS WITH THE USER. * * Author : $Author: kleber $ * Last update : $Date: 2001/06/06 10:32:30 $ * Revision : $Revision: 1.1.1.1 $ * State: $State: Exp $ */ package J2Ci; /** * jDSRTCoordValue represents the relating C++ class * DSRTemporalCoordinatesValue in Java. * * @author Joerg Riesmeier */ public class jDSRTCoordValue { /** * Constructor is disabled !!! */ private jDSRTCoordValue() { // emtpy } /** * Constructor for attaching an existing C++ object. FOR INTERNAL USE ONLY! * @param attachAdr address of C++ object */ public jDSRTCoordValue(long attachAdr) { cppClassAddress = attachAdr; } // --------------------- methods for C++ class binding --------------------- /** * Address of relating C++ object [for access to the DLL]. * Never change manually! */ private long cppClassAddress = (long) 0; // never change! // --------------------------- native methods ------------------------------ /* --- TCoord Value --- */ /** get current temporal range type. * This value represents the type of temporal extent of the region of interest. ** @return region type (might be TRT_invalid) */ public native int getTemporalRangeType(); /** set current temporal range type. * This value represents the type of temporal extent of the region of interest. ** @param temporalRangeType temporal range type to be set (TRT_invalid is not allowed) ** @return status, EC_Normal if successful, an error code otherwise */ public native int setTemporalRangeType(int graphicType); /* Missing: - DatetimeList - SamplePositionList - TimeOffsetList */ } /* * CVS Log * $Log: jDSRTCoordValue.java,v $ * Revision 1.1.1.1 2001/06/06 10:32:30 kleber * Init commit for DICOMscope 3.5 * Create new CVS * * */ dicomscope-3.6.0/tkgui/J2Ci/jDSRWaveformValue.java0000644000265600020320000001321611262371100021010 0ustar tilleaadmin/* * * Copyright (C) 2000-2003, OFFIS and Institute for MicroTherapy * * This software and supporting documentation were developed by * * Kuratorium OFFIS e.V. * Healthcare Information and Communication Systems * Escherweg 2 * D-26121 Oldenburg, Germany * * and * * University of Witten/Herdecke * Department of Radiology and MicroTherapy * Institute for MicroTherapy * Medical computer science * * Universitaetsstrasse 142 * 44799 Bochum, Germany * * http://www.microtherapy.de/go/cs * mailto:computer.science@microtherapy.de * * THIS SOFTWARE IS MADE AVAILABLE, AS IS, AND THE INSTITUTE MAKES NO * WARRANTY REGARDING THE SOFTWARE, ITS PERFORMANCE, ITS MERCHANTABILITY * OR FITNESS FOR ANY PARTICULAR USE, FREEDOM FROM ANY COMPUTER DISEASES * OR ITS CONFORMITY TO ANY SPECIFICATION. THE ENTIRE RISK AS TO QUALITY * AND PERFORMANCE OF THE SOFTWARE IS WITH THE USER. * * Author : $Author: kleber $ * Last update : $Date: 2001/06/06 10:32:30 $ * Revision : $Revision: 1.1.1.1 $ * State: $State: Exp $ */ package J2Ci; /** * jDSRWaveformValue represents the relating C++ class * DSRWaveformReferenceValue in Java. * * @author Joerg Riesmeier */ public class jDSRWaveformValue { /** * Constructor is disabled !!! */ private jDSRWaveformValue() { // emtpy } /** * Constructor for attaching an existing C++ object. FOR INTERNAL USE ONLY! * @param attachAdr address of C++ object */ public jDSRWaveformValue(long attachAdr) { cppClassAddress = attachAdr; } // --------------------- methods for C++ class binding --------------------- /** * Address of relating C++ object [for access to the DLL]. * Never change manually! */ private long cppClassAddress = (long) 0; // never change! // --------------------------- native methods ------------------------------ /* --- Waveform Value --- */ /** get SOP class UID ** @return current SOP class UID (might be invalid or an empty string) */ public native String getSOPClassUID(); /** get SOP class name. * The SOP class name as defined in the OFFIS dcmtk is used if available, * an empty string if the SOP class UID is also empty, the static string * "unknown SOP class" plus the SOP class UID otherwise. ** @return name of the current SOP class (should never be null or empty) */ public native String getSOPClassName(); /** get SOP instance UID ** @return current SOP instance UID (might be invalid or an empty string) */ public native String getSOPInstanceUID(); /** set SOP class UID and SOP instance UID value. * Before setting the values they are checked (non-empty UIDs). Currently * all waveform SOP classes that are defined in supplement 30 are allowed. * If the value pair is invalid the current value pair is not replaced and * remains unchanged. ** @param sopClassUID SOP class UID to be set * @param sopInstanceUID SOP instance UID to be set ** @return status, EC_Normal if successful, an error code otherwise */ public native int setReference(String sopClassUID, String sopInstanceUID); /** clear the referenced channel list */ public native void clearChannelList(); /** get number of entries contained in the referenced channel list ** @return number of channels if any, 0 otherwise */ public native int getNumberOfChannels(); /** get copy of the specified entry from the referenced channel list ** @param idx index of the entry to be returned (starting from 1) * @param multiplexGroupNumber reference to variable where the multiplex group number * should be stored * @param channelNumber reference to variable where the channel number should be * stored ** @return status, EC_Normal if successful, an error code otherwise */ public native int getChannel(int idx, jIntByRef multiplexGroupNumber, jIntByRef channelNumber); /** add entry to the referenced channel list. * Please note that only channels are added that are not already contained in the list. ** @param multiplexGroupNumber multiplex group number to be added * @param channelNumber channel number to be added */ public native void addChannel(int multiplexGroupNumber, int channelNumber); /** remove entry from the referenced channel list ** @param idx index of the entry to be removed (starting from 1) ** @return status, EC_Normal if successful, an error code otherwise */ public native int removeChannel(int idx); /** check whether the waveform reference applies to a specific channel. * The waveform reference applies to a channel if the list of referenced waveform * channels is empty or the group/channel pair is part of the list. ** @param multiplexGroupNumber multiplex group number of the referenced channel * @param channelNumber channel number of the referenced channel ** @return OFTrue if reference applies to the specified channel, OFFalse otherwise */ public native boolean appliesToChannel(int multiplexGroupNumber, int channelNumber); } /* * CVS Log * $Log: jDSRWaveformValue.java,v $ * Revision 1.1.1.1 2001/06/06 10:32:30 kleber * Init commit for DICOMscope 3.5 * Create new CVS * * */ dicomscope-3.6.0/tkgui/J2Ci/jDVIFhierarchyStatus.java0000644000265600020320000000316211262371100021506 0ustar tilleaadmin/* * * Copyright (C) 1999-2003, Institute for MicroTherapy * * This software and supporting documentation were developed by * * University of Witten/Herdecke * Department of Radiology and MicroTherapy * Institute for MicroTherapy * Medical computer science * * Universitaetsstrasse 142 * 44799 Bochum, Germany * * http://www.microtherapy.de/go/cs * mailto:computer.science@microtherapy.de * * THIS SOFTWARE IS MADE AVAILABLE, AS IS, AND THE INSTITUTE MAKES NO * WARRANTY REGARDING THE SOFTWARE, ITS PERFORMANCE, ITS MERCHANTABILITY * OR FITNESS FOR ANY PARTICULAR USE, FREEDOM FROM ANY COMPUTER DISEASES * OR ITS CONFORMITY TO ANY SPECIFICATION. THE ENTIRE RISK AS TO QUALITY * AND PERFORMANCE OF THE SOFTWARE IS WITH THE USER. * * Author : $Author: kleber $ * Last update : $Date: 2001/06/06 10:32:30 $ * Revision : $Revision: 1.1.1.1 $ * State: $State: Exp $ */ package J2Ci; /** * The class jDVIFhierarchyStatus represents the C++-enumeration * DVIFhierarchyStatus. * * @author Andreas Schröter */ public class jDVIFhierarchyStatus { /** * Constant; Object isn't new. */ public static final int DVIF_objectIsNotNew = 0; /** * Constant; Object is new. */ public static final int DVIF_objectIsNew = 1; /** * Constant; Object contains new subjects. */ public static final int DVIF_objectContainsNewSubobjects = 2; } /* * CVS Log * $Log: jDVIFhierarchyStatus.java,v $ * Revision 1.1.1.1 2001/06/06 10:32:30 kleber * Init commit for DICOMscope 3.5 * Create new CVS * */ dicomscope-3.6.0/tkgui/J2Ci/jDVInterface.java0000644000265600020320000034360011262371100020011 0ustar tilleaadmin/* * * Copyright (C) 1999-2003, Institute for MicroTherapy and OFFIS * * This software and supporting documentation were developed by * * University of Witten/Herdecke * Department of Radiology and MicroTherapy * Institute for MicroTherapy * Medical computer science * * Universitaetsstrasse 142 * 44799 Bochum, Germany * * http://www.microtherapy.de/go/cs * mailto:computer.science@microtherapy.de * * and * * Kuratorium OFFIS e.V. * Healthcare Information and Communication Systems * Escherweg 2 * D-26121 Oldenburg, Germany * * THIS SOFTWARE IS MADE AVAILABLE, AS IS, AND THE INSTITUTE MAKES NO * WARRANTY REGARDING THE SOFTWARE, ITS PERFORMANCE, ITS MERCHANTABILITY * OR FITNESS FOR ANY PARTICULAR USE, FREEDOM FROM ANY COMPUTER DISEASES * OR ITS CONFORMITY TO ANY SPECIFICATION. THE ENTIRE RISK AS TO QUALITY * AND PERFORMANCE OF THE SOFTWARE IS WITH THE USER. * * Author : $Author: kleber $ * Last update : $Date: 2001/06/06 10:32:30 $ * Revision : $Revision: 1.1.1.1 $ * State: $State: Exp $ */ package J2Ci; /** * A jDVInterface represents the relating C++-Class DVInterface * in Java. * * @author Andreas Schroeter, Joerg Riesmeier, Marco Eichelberg */ public class jDVInterface { /** * Constructor, creates a relating C++-Object. * @param configfile s String defining the name of the config file. */ public jDVInterface(String configfile) { createObjOfDVInterface (configfile); } /** * Destructor, removes *this* relating C++-Object out of memory */ public void finalize () { removeObjOfDVInterface (); } // -------------------------------- Methods for C++-Class Binding /** * Address of relating C++-Object [for access to the DLL]. * Never change manually! */ private long cppClassAddress = (long) 0; // never change! /** * Creates a C++-Object and write its address in field "cppClassAddress" * * @see J2Ci.jDVInterface#cppClassAddress */ private native void createObjOfDVInterface (String indexfolder); /** * Removes a C++-Object with the address of field cppClassAddress out of memory. * @see J2Ci.jDVInterface#cppClassAddress */ private native void removeObjOfDVInterface (); // --------------------------- native Methods ------------------------------ /* --- DVInterface --- */ /* load images and presentation states */ /** loads an image which is contained in the database * and creates a default presentation state for the image. * This method acquires a database lock which must be explicitly freed by the user. * @param studyUID study instance UID of the image * @param seriesUID series instance UID of the image * @param instanceUID SOP instance UID of the image * @param changeStatus if true the image file is marked 'reviewed' (not new) * @return EC_Normal upon success, an error code otherwise (from jE_Condition). */ public native int loadImage(String studyUID, String seriesUID, String instanceUID, boolean changeStatus); /** loads an image (which need not be contained in the database) * and creates a default presentation state for the image. * This method does not acquire a database lock. * @param filename path and filename of the image to be loaded * @return EC_Normal upon success, an error code otherwise. */ public native int loadImage(String filename); /** loads an image which referenced by the current presentation * state and needs to be contained in the database. * This method acquires a database lock which must be explicitly freed by the user. * @param idx index of the image to be loaded (< getNumberOfImageReferences()) * @param changeStatus if true the image file is marked 'reviewed' (not new) * @return EC_Normal upon success, an error code otherwise. */ public native int loadReferencedImage(int idx, boolean changeStatus); /** loads a presentation state which is contained in the database. * The first image referenced in presentation state is also looked up in the * database, loaded, and attached to the presentation state. * This method acquires a database lock which must be explicitly freed by the user. * @param studyUID study instance UID of the presentation state * @param seriesUID series instance UID of the presentation state * @param instanceUID SOP instance UID of the presentation state * @param changeStatus if true the pstate and (first) image file is marked 'reviewed' (not new) * @return EC_Normal upon success, an error code otherwise. */ public native int loadPState(String studyUID, String seriesUID, String instanceUID, boolean changeStatus); /** loads a presentation state (which need not be contained in the database) and * attaches the current image to the presentation state. * This method does not acquire a database lock. * @param pstName path and filename of the presentation state to be loaded * @return EC_Normal upon success, an error code otherwise. */ public native int loadPState(String pstName); /** loads a presentation state and an image (which need not be contained in the database) * and attaches the image to the presentation state (if specified, otherwise the current * image will be used). * This method does not acquire a database lock. * @param pstName path and filename of the presentation state to be loaded * @param imgName path and filename of the image to be loaded * @return EC_Normal upon success, an error code otherwise. */ public native int loadPState(String pstName, String imgName); /** loads a structured report which is contained in the database. * This method acquires a database lock which must be explicitly freed by the user. * @param studyUID study instance UID of the structured report * @param seriesUID series instance UID of the structured report * @param instanceUID SOP instance UID of the structured report * @param changeStatus if true the structured report file is marked 'reviewed' (not new) * @return EC_Normal upon success, an error code otherwise. */ public native int loadStructuredReport(String studyUID, String seriesUID, String instanceUID, boolean changeStatus); /** loads a structured report (which need not be contained in the database). * This method does not acquire a database lock. * @param filename path and filename of the structured report to be loaded * @return EC_Normal upon success, an error code otherwise. */ public native int loadStructuredReport(String filename); /** loads a structured reporting "template". * This "template" is just a DICOM Structured Reporting file which resides in a * special sub-folder and is referenced by the configuration file. This meachanism * should facilitate the creation of new reports since one does not have to start * with a completely empty report. * Please note that the current structured report is replaced by the specified * "template". New study/series/instance UIDs are generated automatically for the * new report. * This method does not acquire a database lock. * @param reportID report identifier, as returned by getReportID(). * @return EC_Normal upon success, an error code otherwise. */ public native int loadSRTemplate(String reportID); /** saves the current presentation state in the same directory * in which the database index file resides. The filename is generated automatically. * A new SOP Instance UID is assigned whenever a presentation state is saved. * After successfully storing the presentation state, the database index is updated * to include the new object. * This method releases under any circumstances the database lock if it exists. * @param replaceSOPInstanceUID flag indicating whether the * SOP Instance UID should be replaced by a new UID. * If true, a new UID is always generated. If false, a new * UID is generated only if no UID has been assigned before. * @return EC_Normal upon success, an error code otherwise. */ public native int savePState(boolean replaceSOPInstanceUID); /** saves the current presentation state in a file with the given path and filename. * A new SOP Instance UID is assigned whenever a presentation state is saved. * This method does not acquire a database lock and does not register * the saved presentation state in the database. * @param filename path and filename under which the presentation state is to be saved * @param replaceSOPInstanceUID flag indicating whether the * SOP Instance UID should be replaced by a new UID. * If true, a new UID is always generated. If false, a new * UID is generated only if no UID has been assigned before. * @param explicitVR selects the transfer syntax to be written. True (the default) selects * Explicit VR Little Endian, False selects Implicit VR Little Endian. * @return EC_Normal upon success, an error code otherwise. */ public native int savePState(String filename, boolean replaceSOPInstanceUID, boolean explicitVR); /** saves the DICOM image that is currently attached to the presentation state * in a file with the given path and filename. * This method does not acquire a database lock and does not register * the saved presentation state in the database. * @param filename path and filename under which the image is to be saved * @param explicitVR selects the transfer syntax to be written. True (the default) selects * Explicit VR Little Endian, False selects Implicit VR Little Endian. * @return EC_Normal upon success, an error code otherwise. */ public native int saveCurrentImage(String filename, boolean explicitVR); /** saves the current structured report in the same directory in which the database index * file resides. The filename is generated automatically. A new SOP Instance UID is not * assigned automatically unless the method getStructuredReport().createRevisedVersion() * is called (see documentation in file dcmsr/dsrdoc.h). This is not required for the * first version of a document (i.e. directly after program start or calling the method * getStructuredReport().createNewDocument()). * After successfully storing the structured report, the database index is updated * to include the new object. * This method releases under any circumstances the database lock if it exists. * @return EC_Normal upon success, an error code otherwise. */ public native int saveStructuredReport(); /** saves the current structured report in a file with the given path and filename. * A new SOP Instance UID is not assigned automatically unless the method * getStructuredReport().createRevisedVersion() is called (see documentation in file * dcmsr/dsrdoc.h). This is not required for the first version of a document (i.e. * directly after program start or calling the method getStructuredReport().createNewDocument()). * This method does not acquire a database lock and does not register the saved structured * report in the database. * @param filename path and filename under which the structured report is to be saved * @param explicitVR selects the transfer syntax to be written. True (the default) selects * Explicit VR Little Endian, False selects Implicit VR Little Endian. * @return EC_Normal upon success, an error code otherwise. */ public native int saveStructuredReport(String filename, boolean explicitVR); /** adds an image which is contained in the database * to the list of referenced images of the current presentation state. * This method acquires a database lock which must be explicitly freed by the user. * @param studyUID study instance UID of the image * @param seriesUID series instance UID of the image * @param instanceUID SOP instance UID of the image * @return EC_Normal upon success, an error code otherwise. */ public native int addImageReferenceToPState(String studyUID, String seriesUID, String instanceUID); /** gets the number of image references contained in the current presentation state. * @return number of image references, 0 if an error occurred. */ public native int getNumberOfImageReferences(); /** returns a reference to the current presentation state. * This reference will become invalid when the DVInterface object is deleted, * a different image or presentation state is loaded * (using loadPState or loadImage) or when resetPresentationState() is called. * @return reference to the current presentation state */ public jDVPresentationState getCurrentPState() { return new jDVPresentationState (getCurrentPStateN()); } private native long getCurrentPStateN(); /** returns a reference to the current structured report. * This reference will become invalid when the DVInterface object is deleted or * a different structured report is loaded (using loadStructuredReport). * @return reference to the current structured report */ public jDSRDocument getCurrentReport() { return new jDSRDocument (getCurrentReportN()); } private native long getCurrentReportN(); /** returns a reference to the print handler. * This reference remains valid as long as the DVInterface object exists. * @return reference to the current print handler */ public jDVPSStoredPrint getPrintHandler() { return new jDVPSStoredPrint (getPrintHandlerN()); } private native long getPrintHandlerN(); /** resets the presentation state object to the status it had immediately after the * last successful operation of "loadImage" or "loadPState". A state can also explicitly * specified as such a "reset state" by using the method saveCurrentPStateForReset(). * Attention: The last reference returned by getCurrentPState() becomes invalid * when this method is called. * @return EC_Normal upon success, an error code otherwise. */ public native int resetPresentationState(); /** saves the current state of the presentation state object to be used for * resetPresentationState(). This is e.g. useful after registration of additional images * directly after a new images has been loaded. * @return EC_Normal upon success, an error code otherwise. */ public native int saveCurrentPStateForReset(); /** removes any shared or exclusive lock on the database. * This method should be called when a database transaction * (i.e. reading all studies, series, instances etc.) is finished. * As long as a lock exists on the database, no other application * (i.e. the network receiver) can add new images to the database. * This method also clears the index cache. * @return EC_Normal upon success, an error code otherwise. */ public native int releaseDatabase(); /** searches in the database for a DICOM instance with the given * study, series and instance UIDs and returns its pathname if found. * If the given instance is not found in the database, NULL is returned. * This method acquires a database lock which must be explicitly freed by the user. * @param studyUID the DICOM study instance UID * @param seriesUID the DICOM series instance UID * @param instanceUID the DICOM SOP instance UID * @return filename (path) if found, empty string otherwise */ public native String getFilename(String studyUID, String seriesUID, String instanceUID); /** returns the number of studies currently contained in the database. * This method acquires a database lock which must be explicitly freed by the user. * The number reported (returned) by this method remains valid as long * as the database lock remains active and no function modifying the database is called. * Functions that modify the database are: Storing new presentation states, * deleting data, modifying the 'reviewed' status flag of IODs. * @return number of studies in the database. */ public native int getNumberOfStudies(); /** selects the study with the given index in the database. * This method acquires a database lock which must be explicitly freed by the user. * The selection remains valid until the database lock is removed or the database * is modified (see comments for getNumberOfStudies). * Implicitly the first series and first instance within this study is selected, too. * @param idx index to be selected, must be < getNumberOfStudies() * @return EC_Normal upon success, an error code otherwise. */ public native int selectStudy(int idx); /** selects the study with the given UID in the database. * This method acquires a database lock which must be explicitly freed by the user. * The selection remains valid until the database lock is removed or the database * is modified (see comments for getNumberOfStudies). * Implicitly the first series and first instance within this study is selected, too. * @param studyUID the DICOM study instance UID * @return EC_Normal upon success, an error code otherwise. */ public native int selectStudy(String studyUID); /** returns the review status of the currently selected study. * May be called only if a valid study selection exists - see selectStudy(). * This method acquires a database lock which must be explicitly freed by the user. * Implicitly the first instance within this series is selected, too. * @return study review status */ public native int getStudyStatus(); /** returns the Study Instance UID of the currently selected study. * May be called only if a valid study selection exists - see selectStudy(). * This method acquires a database lock which must be explicitly freed by the user. * @return Study Instance UID or empty string if absent or not selected. */ public native String getStudyUID(); /** returns the Study Description of the currently selected study. * May be called only if a valid study selection exists - see selectStudy(). * This method acquires a database lock which must be explicitly freed by the user. * @return Study Description or empty string if absent or not selected. */ public native String getStudyDescription(); /** returns the Study Date of the currently selected study. * May be called only if a valid study selection exists - see selectStudy(). * This method acquires a database lock which must be explicitly freed by the user. * @return Study Date or empty string if absent or not selected. */ public native String getStudyDate (); /** returns the Study Time of the currently selected study. * May be called only if a valid study selection exists - see selectStudy(). * This method acquires a database lock which must be explicitly freed by the user. * @return Study Time or empty string if absent or not selected. */ public native String getStudyTime (); /** returns the Referring Physicians Name of the currently selected study. * May be called only if a valid study selection exists - see selectStudy(). * This method acquires a database lock which must be explicitly freed by the user. * @return Referring Physicians Name or empty string if absent or not selected. */ public native String getReferringPhysiciansName (); /** returns the Accession Number of the currently selected study. * May be called only if a valid study selection exists - see selectStudy(). * This method acquires a database lock which must be explicitly freed by the user. * @return Accession Number or empty string if absent or not selected. */ public native String getAccessionNumber (); /** returns the Name Of Physicians Reading Study of the currently selected study. * May be called only if a valid study selection exists - see selectStudy(). * This method acquires a database lock which must be explicitly freed by the user. * @return Name Of Physicians Reading Study or empty string if absent or not selected. */ public native String getNameOfPhysiciansReadingStudy (); /** returns the Patient Name of the currently selected study. * May be called only if a valid study selection exists - see selectStudy(). * Note: Since the database uses the Study Root model, patient data appears * on the study level. * This method acquires a database lock which must be explicitly freed by the user. * @return Patient Name or empty string if absent or not selected. */ public native String getPatientName(); /** returns the Patient ID of the currently selected study. * May be called only if a valid study selection exists - see selectStudy(). * Note: Since the database uses the Study Root model, patient data appears * on the study level. * This method acquires a database lock which must be explicitly freed by the user. * @return Patient ID or empty string if absent or not selected. */ public native String getPatientID(); /** returns the Patient Birth Date of the currently selected study. * May be called only if a valid study selection exists - see selectStudy(). * Note: Since the database uses the Study Root model, patient data appears * on the study level. * This method acquires a database lock which must be explicitly freed by the user. * @return Patient Birth Date or empty string if absent or not selected. */ public native String getPatientBirthDate(); /** returns the Patient Sex of the currently selected study. * May be called only if a valid study selection exists - see selectStudy(). * Note: Since the database uses the Study Root model, patient data appears * on the study level. * This method acquires a database lock which must be explicitly freed by the user. * @return Patient Sex or empty string if absent or not selected. */ public native String getPatientSex(); /** returns the Patient Birth Time of the currently selected study. * May be called only if a valid study selection exists - see selectStudy(). * Note: Since the database uses the Study Root model, patient data appears * on the study level. * This method acquires a database lock which must be explicitly freed by the user. * @return Patient Birth Time or empty string if absent or not selected. */ public native String getPatientBirthTime(); /** returns the Other Patient Names of the currently selected study. * May be called only if a valid study selection exists - see selectStudy(). * Note: Since the database uses the Study Root model, patient data appears * on the study level. * This method acquires a database lock which must be explicitly freed by the user. * @return Other Patient Names or empty string if absent or not selected. */ public native String getOtherPatientNames(); /** returns the Other Patient ID of the currently selected study. * May be called only if a valid study selection exists - see selectStudy(). * Note: Since the database uses the Study Root model, patient data appears * on the study level. * This method acquires a database lock which must be explicitly freed by the user. * @return Other Patient ID or empty string if absent or not selected. */ public native String getOtherPatientID(); /** returns the Patient Ethnic Group of the currently selected study. * May be called only if a valid study selection exists - see selectStudy(). * Note: Since the database uses the Study Root model, patient data appears * on the study level. * This method acquires a database lock which must be explicitly freed by the user. * @return Patient Ethnic Group or empty string if absent or not selected. */ public native String getEthnicGroup(); /** returns the number of series within the currently selected study. * May be called only if a valid study selection exists - see selectStudy(). * This method acquires a database lock which must be explicitly freed by the user. * See the comments for getNumberOfStudies() about the validity period * of the returned number. * @return number of series in the current study. */ public native int getNumberOfSeries(); /** selects the series with the given index within the currently selected study. * This method acquires a database lock which must be explicitly freed by the user. * The selection remains valid until the database lock is removed or the database * is modified (see comments for getNumberOfStudies). * @param idx index to be selected, must be < getNumberOfSeries() * @return EC_Normal upon success, an error code otherwise. */ public native int selectSeries(int idx); /** selects the series with the given UID within the currently selected study. * This method acquires a database lock which must be explicitly freed by the user. * The selection remains valid until the database lock is removed or the database * is modified (see comments for getNumberOfStudies). * @param seriesUID series instance UID of the image * @return EC_Normal upon success, an error code otherwise. */ public native int selectSeries(String seriesUID); /** returns the Series Instance UID of the currently selected series. * May be called only if a valid series selection exists - see selectSeries(). * This method acquires a database lock which must be explicitly freed by the user. * @return Series Instance UID or empty string if absent or not selected. */ public native String getSeriesUID(); /** returns the review status of the currently selected series. * May be called only if a valid series selection exists - see selectSeries(). * This method acquires a database lock which must be explicitly freed by the user. * @return series review status */ public native int getSeriesStatus(); /** returns the type of all instances within the currently selected series. * DICOM series always contain a single modality only, if not the modality of * the first examined instance (which is no image) is used (e.g. PresentationState). * May be called only if a valid series selection exists - see selectSeries(). * This method acquires a database lock which must be explicitly freed by the user. * @return instance type */ public native int getSeriesType(); /** returns the type of the currently selected instance. * May be called only if a valid instance selection exists - see selectInstance(). * This method acquires a database lock which must be explicitly freed by the user. * @return instance type */ public native int getInstanceType(); /** returns the Series Number of the currently selected series. * May be called only if a valid series selection exists - see selectSeries(). * This method acquires a database lock which must be explicitly freed by the user. * @return Series Number or empty string if absent or not selected. */ public native String getSeriesNumber (); /** returns the Series Date of the currently selected series. * May be called only if a valid series selection exists - see selectSeries(). * This method acquires a database lock which must be explicitly freed by the user. * @return Series Date or empty string if absent or not selected. */ public native String getSeriesDate(); /** returns the Series Time of the currently selected series. * May be called only if a valid series selection exists - see selectSeries(). * This method acquires a database lock which must be explicitly freed by the user. * @return Series Time or empty string if absent or not selected. */ public native String getSeriesTime (); /** returns the Series Description of the currently selected series. * May be called only if a valid series selection exists - see selectSeries(). * This method acquires a database lock which must be explicitly freed by the user. * @return Series Description or empty string if absent or not selected. */ public native String getSeriesDescription (); /** returns the Series Performing Physicians Name of the currently selected series. * May be called only if a valid series selection exists - see selectSeries(). * This method acquires a database lock which must be explicitly freed by the user. * @return Series Performing Physicians Name or empty string if absent or not selected. */ public native String getSeriesPerformingPhysiciansName (); /** returns the Series Protocol Name of the currently selected series. * May be called only if a valid series selection exists - see selectSeries(). * This method acquires a database lock which must be explicitly freed by the user. * @return Series Protocol Name or empty string if absent or not selected. */ public native String getSeriesProtocolName (); /** returns the Series Operators Name of the currently selected series. * May be called only if a valid series selection exists - see selectSeries(). * This method acquires a database lock which must be explicitly freed by the user. * @return Series Operators Name or empty string if absent or not selected. */ public native String getSeriesOperatorsName (); /** returns the Modality of the currently selected series. * May be called only if a valid series selection exists - see selectSeries(). * This method acquires a database lock which must be explicitly freed by the user. * @return Modality or empty string if absent or not selected. */ public native String getModality(); /** returns the number of instances (IODs) within the currently selected series. * May be called only if a valid series selection exists - see selectSeries(). * This method acquires a database lock which must be explicitly freed by the user. * See the comments for getNumberOfStudies() about the validity period * of the returned number. * @return number of instances in the current series. */ public native int getNumberOfInstances(); /** selects the instance with the given index within the currently selected series. * This method acquires a database lock which must be explicitly freed by the user. * The selection remains valid until the database lock is removed or the database * is modified (see comments for getNumberOfStudies). * @param idx index to be selected, must be < getNumberOfInstances() * @return EC_Normal upon success, an error code otherwise. */ public native int selectInstance(int idx); /** selects the instance with the given UID within the currently selected series. * This method acquires a database lock which must be explicitly freed by the user. * The selection remains valid until the database lock is removed or the database * is modified (see comments for getNumberOfStudies). * @param instanceUID SOP instance UID of the image * @return EC_Normal upon success, an error code otherwise. */ public native int selectInstance(String instanceUID); /** selects the instance with the given UID and SOP class over all studies and series. * Please note that in worst case all studies, series and instances are examined. * This method acquires a database lock which must be explicitly freed by the user. * The selection remains valid until the database lock is removed or the database * is modified (see comments for getNumberOfStudies). * @param instanceUID SOP instance UID of the instance * @param sopClassUID SOP class UID of the instance (might be NULL to be not compared) * @return EC_Normal upon success, an error code otherwise. */ public native int selectInstance(String instanceUID, String sopClassUID); /** selects the instance with the given UIDs. * This method acquires a database lock which must be explicitly freed by the user. * The selection remains valid until the database lock is removed or the database * is modified (see comments for getNumberOfStudies). * @param studyUID study instance UID of the image * @param seriesUID series instance UID of the image * @param instanceUID SOP instance UID of the image * @return EC_Normal upon success, an error code otherwise. */ public native int selectInstance(String studyUID, String seriesUID, String instanceUID); /** returns the SOP Instance UID of the currently selected instance. * May be called only if a valid instance selection exists - see selectInstance(). * This method acquires a database lock which must be explicitly freed by the user. * @return SOP Instance UID or empty string if absent or not selected. */ public native String getInstanceUID(); /** returns the Image Number of the currently selected instance. * May be called only if a valid instance selection exists - see selectInstance(). * This method acquires a database lock which must be explicitly freed by the user. * @return Image Number or empty string if absent or not selected. */ public native String getImageNumber(); /** returns the Filename of the currently selected instance. * May be called only if a valid instance selection exists - see selectInstance(). * This method acquires a database lock which must be explicitly freed by the user. * @return Filename or empty string if absent or not selected. */ public native String getFilename(); /** returns the review status of the currently selected instance. * May be called only if a valid instance selection exists - see selectInstance(). * This method acquires a database lock which must be explicitly freed by the user. * @return instance review status */ public native int getInstanceStatus(); /** returns the Instance Description of the currently selected instance. * May be called only if a valid instance selection exists - see selectInstance(). * This method acquires a database lock which must be explicitly freed by the user. * @return Instance Description or empty string if absent or not selected. */ public native String getInstanceDescription(); /** returns the Presentation Label of the currently selected instance. * May be called only if a valid instance selection exists - see selectInstance(). * This method acquires a database lock which must be explicitly freed by the user. * @return Presentation Label or empty string if absent or not selected. */ public native String getPresentationLabel(); /* methods modifying the database */ /** modifies the review flag for one instance in the database, which is set to * 'reviewed' state (DVIF_objectIsNotNew). The status of the corresponding series * and study is updated automatically. * This method acquires a database lock which must be explicitly freed by the user. * The database is modified - any study, series or instance selection * and the number of studies, series and instances reported will become invalid since * other processes may modify the database before the exclusive lock is granted to this method. * @param studyUID study instance UID of the reviewed instance * @param seriesUID series instance UID of the reviewed instance * @param instanceUID SOP instance UID of the reviewed instance * @return EC_Normal upon success, an error code otherwise. */ public native int instanceReviewed(String studyUID, String seriesUID, String instanceUID); /** deletes the given instance from the database. If the corresponding DICOM file * resides in the same directory as the index file, it is also removed. * This method acquires a database lock which must be explicitly freed by the user. * The database is modified - any study, series or instance selection * and the number of studies, series and instances reported will become invalid since * other processes may modify the database before the exclusive lock is granted to this method. * @param studyUID study instance UID of the instance to be deleted * @param seriesUID series instance UID of the instance to be deleted * @param instanceUID SOP instance UID of the instance to be deleted * @return EC_Normal upon success, an error code otherwise. */ public native int deleteInstance(String studyUID, String seriesUID, String instanceUID); /** deletes the given series from the database. Any of the corresponding DICOM files * residing in the same directory as the index file are also removed. * This method acquires a database lock which must be explicitly freed by the user. * The database is modified - any study, series or instance selection * and the number of studies, series and instances reported will become invalid since * other processes may modify the database before the exclusive lock is granted to this method. * @param studyUID study instance UID of the series to be deleted * @param seriesUID series instance UID of the series to be deleted * @return EC_Normal upon success, an error code otherwise. */ public native int deleteSeries(String studyUID, String seriesUID); /** deletes the given study from the database. Any of the corresponding DICOM files * residing in the same directory as the index file are also removed. * This method acquires a database lock which must be explicitly freed by the user. * The database is modified - any study, series or instance selection * and the number of studies, series and instances reported will become invalid since * other processes may modify the database before the exclusive lock is granted to this method. * @param studyUID study instance UID of the study to be deleted * @return EC_Normal upon success, an error code otherwise. */ public native int deleteStudy(String studyUID); /* here follow the Network interface methods */ /** starts the network receiver process (Storage Service Class SCP). * The receiver process will wait for incoming DICOM associations, receive images * and presentation states. Data will be stored in file and registered in the * database index file. Attention: Successful return of this method is no guarantee * that the network receiver has successfully started, because certain errors * (i.e. incorrect settings in the config file) will only be noted in the network * receiver process when running. On Unix platform, successful return of this method * means that the fork() used to start the receiver was successful. * On Win32 platforms, it means that the CreateProcess() call was successful. * @return EC_Normal if the receiver process could be started, an error code otherwise. */ public native int startReceiver(); /** terminates the network receiver process (Storage Service Class SCP). * This method attempts to terminate the network receiver process by * requesting a DICOM association with it and delivering a special "shutdown" command. * If for some reason the network receiver cannot be found (i.e. because it has * terminated abnormally), a TCP/IP timeout (several seconds) may occur before this method returns. * @return EC_Normal if the receiver process could be terminated, an error code otherwise. */ public native int terminateReceiver(); /** starts the query/retrieve server process (Query/Retrieve Service Class SCP). * The query/retrieve process will wait for incoming DICOM associations, serve queries and * send the requested instances to the specified destination. Data will be taken from the * same local database used to store received instances and created presentation states, * stored print objects and hardcopy grayscale images. * The configuration file which is required for the query/retrieve process will be created * automatically from the 'global' configuration file each time this method is called, unless * this automatical creation is disabled (entry: [QUERYRETIUEVE] AutoCreateConfigFile = false). * Attention: Successful return of this method is no guarantee that the query/retrieve server * has successfully started, because certain errors (i.e. incorrect settings in the config file) * will only be noted in the query/retrieve process when running. On Unix platform, successful * return of this method means that the fork() used to start the receiver was successful. * On Win32 platforms, it means that the CreateProcess() call was successful. * @return EC_Normal if the query/retrieve process could be started, an error code otherwise. */ public native int startQueryRetrieveServer(); /** terminates the query/retrieve server process (Query/Retrieve Service Class SCP). * This method attempts to terminate the query/retrieve process by requesting a * DICOM association with it and delivering a special "shutdown" command. * If for some reason the query/retrieve server cannot be found (i.e. because it has * terminated abnormally), a TCP/IP timeout (several seconds) may occur before this * method returns. * @return EC_Normal if the query/retrieve process could be terminated, * an error code otherwise. */ public native int terminateQueryRetrieveServer(); /** tests whether the database has been modified in any way since the last * call to this method. Any write access to the database (adding, deleting, changing) * is reported. This method works by modifying and checking the "modification date/time" * of the database index file. This method is not affected by database locks and can be * called at any time. * Always returns OFTrue for the first call after construction of the interface. * Also returns OFTrue if something goes wrong (i.e. if the method cannot make sure * that nothing has changed). * @return true if the database has been modified since the last call to this method. */ public native boolean newInstancesReceived(); /** sends a complete study over network to a different DICOM peer. * A separate application or process is launched to handle the send operation. * This call returns when the send operation has successfully been launched. * No information about the status or success of the transfer itself is being made * available. * @param targetID symbolic identifier of the send target, must be one of the * strings returned by getTargetID(). * @param studyUID Study Instance UID of the study to be sent. Must be a study * contained in the database. * @return EC_Normal when the send process has successfully been launched, * an error condition otherwise. */ public native int sendStudy(String targetID, String studyUID); /** sends a complete series over network to a different DICOM peer. * A separate application or process is launched to handle the send operation. * This call returns when the send operation has successfully been launched. * No information about the status or success of the transfer itself is being made * available. * @param targetID symbolic identifier of the send target, must be one of the * strings returned by getTargetID(). * @param studyUID Study Instance UID of the series to be sent. Must be a series * contained in the database. * @param seriesUID Series Instance UID of the series to be sent. Must be a series * contained in the database. * @return EC_Normal when the send process has successfully been launched, * an error condition otherwise. */ public native int sendSeries(String targetID, String studyUID, String seriesUID); /** sends a single instance (image or presentation state) * over network to a different DICOM peer. * A separate application or process is launched to handle the send operation. * This call returns when the send operation has successfully been launched. * No information about the status or success of the transfer itself is being made * available. * @param targetID symbolic identifier of the send target, must be one of the * strings returned by getTargetID(). * @param studyUID Study Instance UID of the IOD to be sent. Must be an IOD * contained in the database. * @param seriesUID Series Instance UID of the IOD to be sent. Must be an IOD * contained in the database. * @param instanceUID SOP Instance UID of the IOD to be sent. Must be an IOD * contained in the database. * @return EC_Normal when the send process has successfully been launched, * an error condition otherwise. */ public native int sendIOD(String targetID, String studyUID, String seriesUID, String instanceUID); /** creates a dump of the contents of a DICOM file and displays it on-screen. * A separate application or process is launched to handle the dump and display. * This call returns when the dump operation has successfully been launched. * No information about the status or success of the process itself is being made * available. * This method does not acquire a database lock. * @param filename path of file to be displayed. * @return EC_Normal when the process has successfully been launched, * an error condition otherwise. */ public native int dumpIOD(String filename); /** creates a dump of the contents of a DICOM file and displays it on-screen. * A separate application or process is launched to handle the dump and display. * This call returns when the dump operation has successfully been launched. * No information about the status or success of the process itself is being made * available. * This method acquires a database lock which must be explicitly freed by the user. * @param studyUID Study Instance UID of the IOD to be dumped. Must be an IOD * contained in the database. * @param seriesUID Series Instance UID of the IOD to be dumped. Must be an IOD * contained in the database. * @param instanceUID SOP Instance UID of the IOD to be dumped. Must be an IOD * contained in the database. * @return EC_Normal when the process has successfully been launched, * an error condition otherwise. */ public native int dumpIOD(String studyUID, String seriesUID, String instanceUID); /** checks the contents of a DICOM file and displays an evaluation report on the screen. * A separate application or process is launched to handle the evaluation and display. * This call returns when the check operation has successfully been launched. * No information about the status or success of the process itself is being made * available. * This method does not acquire a database lock. * @param filename path of file to be checked. * @return EC_Normal when the process has successfully been launched, * an error condition otherwise. */ public native int checkIOD(String filename); /** checks the contents of a DICOM file and displays an evaluation report on the screen. * A separate application or process is launched to handle the evaluation and display. * This call returns when the check operation has successfully been launched. * No information about the status or success of the process itself is being made * available. * This method acquires a database lock which must be explicitly freed by the user. * @param studyUID Study Instance UID of the IOD to be checked. Must be an IOD * contained in the database. * @param seriesUID Series Instance UID of the IOD to be checked. Must be an IOD * contained in the database. * @param instanceUID SOP Instance UID of the IOD to be checked. Must be an IOD * contained in the database. * @return EC_Normal when the process has successfully been launched, * an error condition otherwise. */ public native int checkIOD(String studyUID, String seriesUID, String instanceUID); /** saves a monochrome bitmap as a DICOM Secondary Capture image. * The bitmap must use one byte per pixel, left to right, top to bottom * order of the pixels. 0 is interpreted as black, 255 as white. * @param filename the file name or path under which the image is saved. * @param pixelData a pointer to the image data. Must contain at least * width*height bytes of data. * @param width the width of the image, must be <= 0xFFFF * @param height the height of the image, must be <= 0xFFFF * @aspectRatio the pixel aspect ratio as width/height. If omitted, a pixel * aspect ratio of 1/1 is assumed. * @return EC_Normal upon success, an error code otherwise. */ public native int saveDICOMImage(String filename, byte[] pixelData, long width, long height, double aspectRatio); /** saves a monochrome bitmap as a DICOM Secondary Capture image. * The bitmap must use one byte per pixel, left to right, top to bottom * order of the pixels. 0 is interpreted as black, 255 as white. * @param filename the file name or path under which the image is saved. * @param pixelData a pointer to the image data. Must contain at least * width*height bytes of data. * @param width the width of the image, must be <= 0xFFFF * @param height the height of the image, must be <= 0xFFFF * @aspectRatio the pixel aspect ratio as width/height. If omitted, a pixel * aspect ratio of 1/1 is assumed. * @param explicitVR selects the transfer syntax to be written. * True selects Explicit VR Little Endian, False selects Implicit VR Little Endian. * @param instanceUID parameter containing the SOP Instance UID to be written. * This parameter should be omitted unless the SOP Instance UID needs to be controlled * externally. * @return EC_Normal upon success, an error code otherwise. */ public native int saveDICOMImage(String filename, byte[] pixelData, long width, long height, double aspectRatio, boolean explicitVR, String instanceUID); /** saves a monochrome bitmap as a DICOM Secondary Capture image * in the same directory in which the database index file resides. * The filename is generated automatically. * When the image is stored successfully, the database index is updated * to include the new object. * This method releases under any circumstances the database lock if it exists. * @param pixelData a pointer to the image data. Must contain at least * width*height bytes of data. * @param width the width of the image, must be <= 0xFFFF * @param height the height of the image, must be <= 0xFFFF * @aspectRatio the pixel aspect ratio as width/height. If omitted, a pixel * aspect ratio of 1/1 is assumed. * @return EC_Normal upon success, an error code otherwise. */ public native int saveDICOMImage(byte[] pixelData, long width, long height, double aspectRatio); /** saves a monochrome bitmap as a DICOM Hardcopy Grayscale image. * The bitmap must use 16 bits per pixel, left to right, top to bottom * order of the pixels. It is assumed that only values 0..4095 are used. * @param filename the file name or path under which the image is saved. * @param pixelData a pointer to the image data. Must contain at least * width*height*2 bytes of data. * @param width the width of the image, must be <= 0xFFFF * @param height the height of the image, must be <= 0xFFFF * @aspectRatio the pixel aspect ratio as width/height. If omitted, a pixel * aspect ratio of 1/1 is assumed. * @param explicitVR selects the transfer syntax to be written. * True selects Explicit VR Little Endian, False selects Implicit VR Little Endian. * @param instanceUID parameter containing the SOP Instance UID to be written. * This parameter should be omitted unless the SOP Instance UID needs to be controlled * externally. * @return EC_Normal upon success, an error code otherwise. */ public native int saveGrayscaleHardcopyImage(String filename, short[] pixelData, long width, long height, double aspectRatio, boolean explicitVR, String instanceUID); /** saves a monochrome bitmap as a DICOM Hardcopy Grayscale image * in the same directory in which the database index file resides. * The filename is generated automatically. * When the image is stored successfully, the database index is updated * to include the new object. * This method releases under any circumstances the database lock if it exists. * @param pixelData a pointer to the image data. Must contain at least * width*height*2 bytes of data. * @param width the width of the image, must be <= 0xFFFF * @param height the height of the image, must be <= 0xFFFF * @aspectRatio the pixel aspect ratio as width/height. If omitted, a pixel * aspect ratio of 1/1 is assumed. * @return EC_Normal upon success, an error code otherwise. */ public native int saveGrayscaleHardcopyImage(short[] pixelData, long width, long height, double aspectRatio); /** loads a Stored Print object which is contained in the database into memory. * Attention: The current print job (Stored Print object) will be deleted by doing this. * This method acquires a database lock which must be explicitly freed by the user. * @param studyUID study instance UID of the Stored Print object * @param seriesUID series instance UID of the Stored Print object * @param instanceUID SOP instance UID of the Stored Print object * @param changeStatus if true the stored print object is marked 'reviewed' (not new) * @return EC_Normal upon success, an error code otherwise. */ public native int loadStoredPrint(String studyUID, String seriesUID, String instanceUID, boolean changeStatus); /** loads a Stored Print object (which need not be contained in the database) into memory. * Attention: The current print job (Stored Print object) will be deleted by doing this. * This method does not acquire a database lock. * @param filename path and filename of the Stored Print object to be loaded * @return EC_Normal upon success, an error code otherwise. */ public native int loadStoredPrint(String filename); /** saves the current print job as a Stored Print object. * @param filename the file name or path under which the image is saved. * @param writeRequestedImageSize if false, the Requested Image Size attributes are not written, * e. g. because they are not supported by the target printer. * @param explicitVR selects the transfer syntax to be written. * True selects Explicit VR Little Endian, False selects Implicit VR Little Endian. * @param instanceUID parameter containing the SOP Instance UID to be written. * This parameter should be omitted unless the SOP Instance UID needs to be controlled * externally. * @return EC_Normal upon success, an error code otherwise. */ public native int saveStoredPrint(String filename, boolean writeRequestedImageSize, boolean explicitVR, String instanceUID); /** saves the current print job as a Stored Print object * in the same directory in which the database index file resides. * The filename is generated automatically. * When the image is stored successfully, the database index is updated * to include the new object. * This method releases under any circumstances the database lock if it exists. * @param writeRequestedImageSize if false, the Requested Image Size attributes are not written, * e. g. because they are not supported by the target printer. * @return EC_Normal upon success, an error code otherwise. */ public native int saveStoredPrint(boolean writeRequestedImageSize); /** gets the number of Hardcopy Grayscaleimages currently registered by the stored print object. * @return number of images. */ public native int getNumberOfPrintPreviews(); /** loads a Hardcopy Grayscale image registered by the stored print object and creates a preview. * The preview bitmap is implicitly scaled to fit into the rectangle specified by * setMaxPrintPreviewWidthHeight(). * @param idx index of the image, must be < getNumberOfPrintPreviews() * @param printLUT OFTrue if presentation LUT should be interpreted as a print presentation LUT * (default, in this case there is no implicit scaling of the input width of the LUT and, * therefore, the VOI transformation - which is absent for print - is used), * OFFalse otherwise (softcopy interpretation of a presentation LUT) * @param changeStatus if true the hardcopy grayscale image file is marked 'reviewed' (not new) * @return EC_Normal if successful, an error code otherwise. */ public native int loadPrintPreview(int idx, boolean printLUT, boolean changeStatus); /** removes a currently loaded Hardcopy Grayscale image from memory. */ public native void unloadPrintPreview(); /** gets number of bytes used for the print preview bitmap. * (depends on width, height and depth) * @return number of bytes used for the preview bitmap */ public native long getPrintPreviewSize(); /** sets the maximum print preview bitmap width and height. * Larger images are scaled down (according to the pixel aspect ratio) to fit into * the specified rectangle. * Attention: If the values differ from the the previous ones the currently loaded * hardcopy grayscale image (preview) is automatically detroyed and has to be re-loaded. * @param width maximum width of preview bitmap (in pixels) * @param height maximum height of preview bitmap (in pixels) */ public native void setMaxPrintPreviewWidthHeight(int width, int height); /** gets width and height of print preview bitmap. * The return values depend on the current maximum preview bitmap width/height values! * The object of class jIntByRef must be created before passing to this method! * @param width upon success, the bitmap width (in pixels) is returned in this parameter * @param height upon success, the bitmap height (in pixels) is returned in this parameter * @return EC_Normal upon success, an error code otherwise */ public native int getPrintPreviewWidthHeight(jIntByRef width, jIntByRef height); /** writes the bitmap data of the print preview image into the given buffer. * The storage area must be allocated and deleted from the calling method. * @param bitmap pointer to storage area where the pixel data is copied to (array of 8 bit values) * @param size specifies size of the storage area in bytes * @return EC_Normal upon success, an error code otherwise */ public native int getPrintPreviewBitmap(byte[] bitmap, long size); /** stores the current presentation state in a temporary place * and creates a new presentation state that corresponds with an * image displayed "without" presentation state. * If called twice, an error code is returned. * @return EC_Normal upon success, an error code otherwise. */ public native int disablePState(); /** restores the stored presentation state (see disablePresentationState) * and deletes the temporary presentation state. * If no stored presentation state exists, returns an error. * @return EC_Normal upon success, an error code otherwise. */ public native int enablePState(); /** returns number of presentation states referencing the currently selected image. * If no instance is currently selected or the selected instance is a presentation * state, returns an error. * @return number of presentation states, 0 if none available or an error occurred */ public native int getNumberOfPStates(); /** selects and loads specified presentation state referencing the currently selected * image. * @param idx index to be selected, must be < getNumberOfPStates() * @param changeStatus if true the presentation state is marked 'reviewed' (not new) * @return EC_Normal upon success, an error code otherwise. */ public native int selectPState(int idx, boolean changeStatus); /** returns description of specified presentation state referencing the currently * selected image. * @param idx index to be selected, must be < getNumberOfPStates() * @return presentation state description or empty string if idx is invalid */ public native String getPStateDescription(int idx); /** returns label of specified presentation state referencing the currently * selected image. * @param idx index to be selected, must be < getNumberOfPStates() * @return presentation state label or empty string if idx is invalid */ public native String getPStateLabel(int idx); /** checks whether display correction is possible (in principle), * i.e. a valid monitor characteristics description exists * and current system is a low-cost system (without built-in * calibration). * @param transform display transform to be checked (default: GSDF) * @return OFTrue if display transform is possible, OFFalse otherwise */ public native boolean isDisplayTransformPossible(int transform); /** sets ambient light value for the display transformation. * @param value ambient light value to be set * @return EC_Normal upon success, an error code otherwise. */ public native int setAmbientLightValue(double value); /** returns ambient light value for the display transformation. * @param value returned ambient light value. The object of class * jDoubleByRef must be created before passing to this method! * @return EC_Normal upon success, an error code otherwise. */ public native int getAmbientLightValue(jDoubleByRef value); /* print related methods */ /** selects the current printer. Also adjusts the destination AE title and the * printer name attribute within the Stored Print object. * @param targetID one of the printer target IDs returned by getTargetID(). * @return EC_Normal if successful, an error code otherwise. */ public native int setCurrentPrinter(String targetID); /** gets the current printer's target ID. * @return printer target ID, can be empty string if no printer is defined * in the configuration file. */ public native String getCurrentPrinter(); /** sets the (optional) print medium type. * @param value new attribute value, may be empty string. * The caller is responsible for making sure * that the value is valid for the selected printer. * @return EC_Normal if successful, an error code otherwise. */ public native int setPrinterMediumType(String value); /** gets the (optional) print medium type. * @return medium type, may be empty string. */ public native String getPrinterMediumType(); /** sets the (optional) printer film destination. * @param value new attribute value, may be empty string. * The caller is responsible for making sure * that the value is valid for the selected printer. * @return EC_Normal if successful, an error code otherwise. */ public native int setPrinterFilmDestination(String value); /** gets the (optional) printer film destination. * @return printer film destination, may be NULL or empty string. */ public native String getPrinterFilmDestination(); /** sets the (optional) printer film session label. * @param value new attribute value, may be empty string. * The caller is responsible for making sure * that the value is valid for the selected printer. * @return EC_Normal if successful, an error code otherwise. */ public native int setPrinterFilmSessionLabel(String value); /** gets the (optional) printer film session label. * @return printer film session label, may be NULL or empty string. */ public native String getPrinterFilmSessionLabel(); /** sets the (optional) print priority. * @param value new attribute value, may be NULL. * The caller is responsible for making sure * that the value is valid for the selected printer. * @return EC_Normal if successful, an error code otherwise. */ public native int setPrinterPriority(String value); /** gets the (optional) print priority. * @return print priority, may be NULL or empty string. */ public native String getPrinterPriority(); /** sets the (optional) print session owner ID. * @param value new attribute value, may be empty string. * The caller is responsible for making sure * that the value is valid for the selected printer. * @return EC_Normal if successful, an error code otherwise. */ public native int setPrinterOwnerID(String value); /** gets the (optional) print session owner ID. * @return print session owner ID, may be empty string. */ public native String getPrinterOwnerID(); /** sets the (optional) print number of copies. * @param value new attribute value, may be 0. * The caller is responsible for making sure * that the value is valid for the selected printer. * @return EC_Normal if successful, an error code otherwise. */ public native int setPrinterNumberOfCopies(int value); /** gets the (optional) print number of copies. * @return print number of copies, 0 if absent. */ public native int getPrinterNumberOfCopies(); /** resets the settings for basic film session (everything that * is not managed by the Stored Print object) to initial state. * Affects medium type, film destination, film session label, * priority, owner ID, and number of copies. */ public native void clearFilmSessionSettings(); /** sets the LUT with the given identifier * in the Presentation State as current Presentation LUT. * @param lutID LUT identifier, as returned by getLUTID(). * @return EC_Normal if successful, an error code otherwise. */ public native int selectDisplayPresentationLUT(String lutID); /** if the Presentation State contains an active * Presentation LUT that was set with selectDisplayPresentationLUT(), * return the corresponding LUT identifier. * @return lutID if found, empty string otherwise. */ public native String getDisplayPresentationLUTID(); /** sets the LUT with the given identifier in the Stored Print object * as current Presentation LUT. This LUT overrides the settings made * for the separate image boxes, it can be deactivated using the method * DVPSStoredPrint::setDefaultPresentationLUT(). * @param lutID LUT identifier, as returned by getLUTID(). * @return EC_Normal if successful, an error code otherwise. */ public native int selectPrintPresentationLUT(String lutID); /** if the Stored Print object contains an active * Presentation LUT that was set with selectPrintPresentationLUT(), * return the corresponding LUT identifier. * @return lutID if found, NULL or empty string otherwise. */ public native String getPrintPresentationLUTID(); /** start spooling of print job with current settings. * @param deletePrintedImages if true, delete printed images from queue. * @return EC_Normal if successful, an error code otherwise. */ public native int spoolPrintJob(boolean deletePrintedImages); /** starts the print spooler process. * The print spooler will wait for print jobs created with spoolPrintJob() * and communicate them to the printer using the DICOM Print Management Service Class. * Attention: Successful return of this method is no guarantee * that the spooler has successfully started, because certain errors * (i.e. incorrect settings in the config file) will only be noted in the spooler * process when running. On Unix platform, successful return of this method * means that the fork() used to start the spooler was successful. * On Win32 platforms, it means that the CreateProcess() call was successful. * @return EC_Normal if the spooler process could be started, an error code otherwise. */ public native int startPrintSpooler(); /** terminates the print spooler process. This method creates a "dummy" * print job that request the print spooler to shutdown as soon as all other pending * print jobs are finished. * @return EC_Normal if the spooler process dummy print job could be written, * an error code otherwise. */ public native int terminatePrintSpooler(); /** starts the print server process (Basic Grayscale Print Management SCP). * The print server process will wait for incoming DICOM associations, handle the * DICOM print protcol, store data in file and register stored print and grayscale * image objects in the database index file. * Attention: Successful return of this method is no guarantee that the print * server has successfully started, because certain errors (i.e. incorrect settings * in the config file) will only be noted in the print server process when running. * On Unix platform, successful return of this method means that the fork() used to * start the server was successful. * On Win32 platforms, it means that the CreateProcess() call was successful. * @return EC_Normal if the server process could be started, an error code otherwise. */ public native int startPrintServer(); /** terminates the print server process (Basic Grayscale Print Management SCP). * This method attempts to terminate the print server process by requesting a DICOM * association with it and delivering a special "shutdown" command. * If for some reason the print server cannot be found (i.e. because it has terminated * abnormally), a TCP/IP timeout (several seconds) may occur before this method returns. * @return EC_Normal if the server process could be terminated, an error code otherwise. */ public native int terminatePrintServer(); /** adds an existing DICOM image (should be Hardcopy Grayscale) * that is already present in the image database to the current print image queue * without rendering it again. * The "requested image size" option is not used - the bitmap is treated as if the * presentation mode was "SCALE TO FIT". * @param studyUID study instance UID of the image, as reported by getStudyUID() * @param seriesUID series instance UID of the image, as reported by getSeriesUID() * @param instanceUID SOP instance UID of the image, as reported by getInstanceUID() * @return EC_Normal upon success, an error code otherwise. */ public native int addToPrintHardcopyFromDB(String studyUID, String seriesUID, String instanceUID); /** requests the spooler process to print an old print job that is stored * in the database as a "stored print" object. The Stored Print that is printed * does not contain all parameters of a print job. The following parameters are taken from the * current settings in this object: Target printer, medium type, * illumination and reflected ambient light. * @param studyUID study instance UID of the Stored Print, as reported by getStudyUID() * @param seriesUID series instance UID of the Stored Print, as reported by getSeriesUID() * @param instanceUID SOP instance UID of the Stored Print, as reported by getInstanceUID() * @return EC_Normal upon success, an error code otherwise. */ public native int spoolStoredPrintFromDB(String studyUID, String seriesUID, String instanceUID); /* annotation interface */ /** gets the current setting of the annotation activity annotation flag. * @return OFTrue if annotation is on, OFFalse otherwise. */ public native boolean isActiveAnnotation(); /** gets the current setting of the Prepend Date/Time annotation flag. * @return OFTrue if Prepend Date/Time is on, OFFalse otherwise. */ public native boolean getPrependDateTime(); /** gets the current setting of the Prepend Printer Name annotation flag. * @return OFTrue if Prepend Printer Name is on, OFFalse otherwise. */ public native boolean getPrependPrinterName(); /** gets the current setting of the Prepend Lighting annotation flag. * @return OFTrue if Prepend Lighting is on, OFFalse otherwise. */ public native boolean getPrependLighting(); /** gets the current annotation text. * @return annotation text, may be empty string. */ public native String getAnnotationText(); /** switches annotation printing on/off * @param value OFTrue if annotation is switched on, OFFalse otherwise. */ public native void setActiveAnnotation(boolean value); /** sets the Prepend Date/Time annotation flag. * @param value OFTrue if Prepend Date/Time is switched on, OFFalse otherwise. */ public native void setPrependDateTime(boolean value); /** sets the Prepend Printer Name annotation flag. * @param value OFTrue if Prepend Printer Name is switched on, OFFalse otherwise. */ public native void setPrependPrinterName(boolean value); /** sets the Prepend Lighting annotation flag. * @param value OFTrue if Prepend Lighting is switched on, OFFalse otherwise. */ public native void setPrependLighting(boolean value); /** sets the current annotation text. * @param value new text, may be empty. */ public native void setAnnotationText(String value); /* user management interface */ /** verifies the given password for the given user ID. This method tries * to load and decrypt the private key for the given user with the * given password. If this fails, the password verification fails, * otherwise the password verification succeeds. * This method requires that DCMTK be configured and compiled with * the WITH_OPENSSL flag, otherwise always returns false. * @param userID symbolic user ID for given user, as returned by * DVConfiguration::getUserID() * @param password for user as entered in some GUI control * @return true if password verification succeeds, false otherwise. */ public native boolean verifyUserPassword(String userID, String passwd); /** verifies and digitally signs the current structured report. * If the user ID is known (i.e. specified in the configuration file) the current * structured report is verified (a verifying observer is added). If the 'mode' * parameter is set accordingly and the password is correct (see verifyUserPassword) * the report is also digitally signed. * Please note that after signing the report it should not be modified anymore before * stored in the database or a file. Otherwise the digital signature would be corrupted. * Therefore, the SOP instance UID should be generated before calling this method. * To digitally sign the report it is required that DCMTK is configured and compiled * with the WITH_OPENSSL flag, otherwise only verification is available (returns an * error code if mode differs from DVPSY_verify). * NB: Internally a new structured report object is created when the current report is * successfully signed, i.e. the method getCurrentReport() should be used afterwards * to access this new report. * @param userID symbolic user ID for given user, as returned by * DVConfiguration::getUserID() * @param password for user as entered in some GUI control * @param mode flag specifying whether to verify only, verify and sign or verify and * sign and finalize the document (see jDVPSVerifyAndSignMode). The difference between * the second and the third mode is that "finalize" always signs the entire document * whereas the other mode only signs the marked items (if any, all items otherwise) * and leaves out certain header attributes (e.g. the SOP instance UID and the verifying * observer sequence). * @return status, EC_Normal if successful, an error code otherwise. */ public native int verifyAndSignStructuredReport(String userID, String passwd, int mode); /* log file interface */ /** sets a filter to specify which messages are actually written to the application * wide log file. * There are five different levels (in ascending order): none, informational, warning, * error, debug. All messages which belong to a 'lower' level are included in the * higher levels, i.e. the level debug includes all messages (see jDVPSLogMessageLevel). * @param level status level specifying the filter */ public native void setLogFilter(int level); /** writes a message into the application wide log file. * @param level status level of the message (also used to filter the messages), * DVPSM_none should only be used for setLogFilter() and not to write a log message * since it has no meaning for this method (see jDVPSLogMessageLevel). * @param module name of the module which writes the message * @param message (free) text of the log message ('\n' for newline) * @return EC_Normal upon success, an error code otherwise. */ public native int writeLogMessage(int level, String module, String message); /* digital signatures */ /** returns a string containing a complete HTML page with the * signature validation results for the last object of the * given type. * @param objtype object type (see jDVPSObjectType) * @return string with HTML page (might be empty) */ public native String getCurrentSignatureValidationHTML(int objtype); /** returns a string containing a complete HTML page with the * signature validation overview. * @return string with HTML page (might be empty) */ public native String getCurrentSignatureValidationOverview(); /** returns the status flag for the current object of given type. * @param objtype object type (see jDVPSObjectType) * @return digital signature status for object (see jDVPSSignatureStatus) */ public native int getCurrentSignatureStatus(int objtype); /** returns the combined status flag for the current image and presentation state. * @return digital signature status for image and presentation state (see jDVPSSignatureStatus) */ public native int getCombinedImagePStateSignatureStatus(); /** returns number of correct signatures for given object type. * @param objtype object type (see jDVPSObjectType) * @return number of digital signatures */ public native int getNumberOfCorrectSignatures(int objtype); /** returns number of untrustworthy signatures for given object type. * @param objtype object type (see jDVPSObjectType) * @return number of digital signatures */ public native int getNumberOfUntrustworthySignatures(int objtype); /** returns number of corrupt signatures for given object type. * @param objtype object type (see jDVPSObjectType) * @return number of digital signatures */ public native int getNumberOfCorruptSignatures(int objtype); /** disables internal settings for image and presentation state. * Called when a new SR object is loaded and the current * image/presentation state are hidden consequently. */ public native void disableImageAndPState(); /* --- DVConfiguration --- */ /* access to communication partner data */ /** returns the number of communication partners (send targets) * in the configuration file. * @param peerType defines a filter for the peer service type. Default: handle only storage peers. * (from jDVPSPeerType) * @return number of communication partners */ public native int getNumberOfTargets(int peerType); /** returns the target identifier of the communication partner * with the given index. The target identifier is unique within the configuration file * @param idx index, must be < getNumberOfTargets() * @param peerType defines a filter for the peer service type. Default: handle only storage peers. * (from jDVPSPeerType) * @return target identifier if found, NULL otherwise. */ public native String getTargetID (int idx, int peerType); /** returns the DESCRIPTION entry for the communication partner with the given * target ID from the configuration file. * @param targetID communication target ID, must be one of the target * identifiers returned by getTargetID(). * @return entry if present in the config file, NULL otherwise. */ public native String getTargetDescription (String targetID); /** returns the HOSTNAME entry for the communication partner with the given * target ID from the configuration file. * @param targetID communication target ID, must be one of the target * identifiers returned by getTargetID(). * @return entry if present in the config file, NULL otherwise. */ public native String getTargetHostname(String targetID); /** returns the PORT entry for the communication partner with the given * target ID from the configuration file. * @param targetID communication target ID, must be one of the target * identifiers returned by getTargetID(). * @return entry if present and parsable in the config file, 0 otherwise. */ public native int getTargetPort(String targetID); /** returns the TYPE entry for the communication partner with the given * target ID from the configuration file. * @param targetID communication target ID, must be one of the target * identifiers returned by getTargetID(). * @return entry if present and parsable in the config file, DVPSE_storage otherwise. * (from jDVPSPeerType) */ public native int getTargetType(String targetID); /** returns the AETitle entry for the communication partner with the given * target ID from the configuration file. * @param targetID communication target ID, must be one of the target * identifiers returned by getTargetID(). * @return entry if present in the config file, empty string otherwise. */ public native String getTargetAETitle(String targetID); /** returns the MAXPDU entry for the communication partner with the given * target ID from the configuration file. * @param targetID communication target ID, must be one of the target * identifiers returned by getTargetID(). * @return entry if present and parsable in the config file, 0 otherwise. */ public native int getTargetMaxPDU(String targetID); /** returns the IMPLICITONLY entry for the communication partner with the given * target ID from the configuration file. * @param targetID communication target ID, must be one of the target * identifiers returned by getTargetID(). * @return entry if present in the config file, OFFalse otherwise. */ public native boolean getTargetImplicitOnly(String targetID); /** returns the DISABLENEWVRS entry for the communication partner with the given * target ID from the configuration file. * @param targetID communication target ID, must be one of the target * identifiers returned by getTargetID(). * @return entry if present in the config file, OFFalse otherwise. */ public native boolean getTargetDisableNewVRs(String targetID); /** returns the BITPRESERVINGMODE entry for the storage peer with the given * target ID from the configuration file. * @param targetID communication target ID, must be one of the target * identifiers returned by getTargetID(). * @return entry if present in the config file, OFFalse otherwise. */ public native boolean getTargetBitPreservingMode(String targetID); /** returns the USETLS entry for the storage peer with the given * target ID from the configuration file. * @param targetID communication target ID, must be one of the target * identifiers returned by getTargetID(). * @return entry if present in the config file, OFFalse otherwise. */ public native boolean getTargetUseTLS(String targetID); /* NOT USED IN JNI public native String getTargetCertificate(String targetID); public native String getTargetPrivateKey(String targetID); public native String getTargetPrivateKeyPassword(String targetID); */ /** returns the number of distinct values (separated by backslash characters) * in the CIPHERSUITES entry for the storage peer with the given * target ID from the configuration file. * @param targetID communication target ID, must be one of the target * identifiers returned by getTargetID(). * @return number of values if entry present in the config file, 0 otherwise. */ public native int getTargetNumberOfCipherSuites(String targetID); /** returns one value from the CIPHERSUITES entry for the storage peer * with the given target ID from the configuration file. * @param targetID communication target ID, must be one of the target * identifiers returned by getTargetID(). * @param idx index of the value, must be < getTargetNumberOfCipherSuites(targetID) * @return value if present, NULL otherwise. */ public native String getTargetCipherSuite(String targetID, int idx); /** returns the PEERAUTHENTICATION entry for the communication partner with the given * target ID from the configuration file. * See definition of jDVPSCertificateVerificationType for return values. * Current return values are: * 0 == DVPSQ_require: verify peer certificate, refuse transmission if absent * 1 == DVPSQ_verify : verify peer certificate if present * 2 == DVPSQ_ignore : don't verify peer certificate * @param targetID communication target ID, must be one of the target * identifiers returned by getTargetID(). * @return entry if present and parsable in the config file, DVPSQ_require otherwise. */ public native int getTargetPeerAuthentication(String targetID); /* NOT USED IN JNI public native String getTargetDiffieHellmanParameters(String targetID); public native String getTargetRandomSeed(String targetID); */ /** returns the SUPPORTSPRESENTATIONLUT entry for the printer with the given * target ID from the configuration file. * @param targetID communication target ID, must be one of the target * identifiers returned by getTargetID() for peer type DVPSE_printer. * @return entry if present in the config file, OFFalse otherwise. */ public native boolean getTargetPrinterSupportsPresentationLUT(String targetID); /* NOT USED IN JNI OFBool getTargetPrinterPresentationLUTMatchRequired(const char *targetID); OFBool getTargetPrinterPresentationLUTPreferSCPRendering(const char *targetID); OFBool getTargetPrinterPresentationLUTinFilmSession(const char *targetID); */ /** returns the SUPPORTS12BIT entry for the printer with the given * target ID from the configuration file. * @param targetID communication target ID, must be one of the target * identifiers returned by getTargetID() for peer type DVPSE_printer. * @return entry if present in the config file, OFTrue otherwise * (default is 12 bit supported). */ public native boolean getTargetPrinterSupports12BitTransmission(String targetID); /** returns the SUPPORTSIMAGESIZE entry for the printer with the given * target ID from the configuration file. * @param targetID communication target ID, must be one of the target * identifiers returned by getTargetID() for peer type DVPSE_printer. * @return entry if present in the config file, OFFalse otherwise. */ public native boolean getTargetPrinterSupportsRequestedImageSize(String targetID); /** returns the SUPPORTSDECIMATECROP entry for the printer with the given * target ID from the configuration file. * @param targetID communication target ID, must be one of the target * identifiers returned by getTargetID() for peer type DVPSE_printer. * @return entry if present in the config file, OFFalse otherwise. */ public native boolean getTargetPrinterSupportsDecimateCrop(String targetID); /** returns the SUPPORTSTRIM entry for the printer with the given * target ID from the configuration file. * @param targetID communication target ID, must be one of the target * identifiers returned by getTargetID() for peer type DVPSE_printer. * @return entry if present in the config file, OFFalse otherwise. */ public native boolean getTargetPrinterSupportsTrim(String targetID); /** returns the number of distinct values (separated by backslash characters) * in the BORDERDENSITY entry for the printer with the given * target ID from the configuration file. * @param targetID communication target ID, must be one of the target * identifiers returned by getTargetID() for peer type DVPSE_printer. * @return number of values if entry present in the config file, 0 otherwise. */ public native int getTargetPrinterNumberOfBorderDensities(String targetID); /** returns one value from the BORDERDENSITY entry for the printer * with the given target ID from the configuration file. * @param targetID communication target ID, must be one of the target * identifiers returned by getTargetID() for peer type DVPSE_printer. * @param idx index of the value, must be < getTargetPrinterNumberOfBorderDensities(targetID) * @param value the result is both stored in this object and returned as return value. * @return value if present, NULL otherwise. */ public native String getTargetPrinterBorderDensity(String targetID, int index); /** returns the number of distinct values (separated by backslash characters) * in the MAXDENSITY entry for the printer with the given * target ID from the configuration file. * @param targetID communication target ID, must be one of the target * identifiers returned by getTargetID() for peer type DVPSE_printer. * @return number of values if entry present in the config file, 0 otherwise. */ public native int getTargetPrinterNumberOfMaxDensities(String targetID); /** returns one value from the MAXDENSITY entry for the printer * with the given target ID from the configuration file. * @param targetID communication target ID, must be one of the target * identifiers returned by getTargetID() for peer type DVPSE_printer. * @param idx index of the value, must be < getTargetPrinterNumberOfMaxDensities(targetID) * @param value the result is both stored in this object and returned as return value. * @return value if present, NULL otherwise. */ public native String getTargetPrinterMaxDensity (String targetID, int idx); /** returns the number of distinct values (separated by backslash characters) * in the MINDENSITY entry for the printer with the given * target ID from the configuration file. * @param targetID communication target ID, must be one of the target * identifiers returned by getTargetID() for peer type DVPSE_printer. * @return number of values if entry present in the config file, 0 otherwise. */ public native int getTargetPrinterNumberOfMinDensities(String targetID); /** returns one value from the MINDENSITY entry for the printer * with the given target ID from the configuration file. * @param targetID communication target ID, must be one of the target * identifiers returned by getTargetID() for peer type DVPSE_printer. * @param idx index of the value, must be < getTargetPrinterNumberOfMinDensities(targetID) * @param value the result is both stored in this object and returned as return value. * @return value if present, NULL otherwise. */ public native String getTargetPrinterMinDensity(String targetID, int idx); /** returns the number of distinct values (separated by backslash characters) * in the DISPLAYFORMAT entry for the printer with the given * target ID from the configuration file. * @param targetID communication target ID, must be one of the target * identifiers returned by getTargetID() for peer type DVPSE_printer. * @return number of values if entry present in the config file, 0 otherwise. */ public native int getTargetPrinterNumberOfPortraitDisplayFormats(String targetID); /** returns one row value from the DISPLAYFORMAT entry for the printer * with the given target ID from the configuration file. * @param targetID communication target ID, must be one of the target * identifiers returned by getTargetID() for peer type DVPSE_printer. * @param idx index of the value, must be < getTargetPrinterNumberOfPortraitDisplayFormats(targetID) * @return number of rows for this display format if present, 0 otherwise */ public native int getTargetPrinterPortraitDisplayFormatRows(String targetID, int idx); /** returns one columns value from the DISPLAYFORMAT entry for the printer * with the given target ID from the configuration file. * @param targetID communication target ID, must be one of the target * identifiers returned by getTargetID() for peer type DVPSE_printer. * @param idx index of the value, must be < getTargetPrinterNumberOfPortraitDisplayFormats(targetID) * @return number of columns for this display format if present, 0 otherwise */ public native int getTargetPrinterPortraitDisplayFormatColumns(String targetID, int idx); /** returns OFTrue if an ANNOTATION entry for the printer with the given * target ID from the configuration file exists or if the * SESSIONLABELANNOTATION flag is true for the printer. * @param targetID communication target ID, must be one of the target * identifiers returned by getTargetID() for peer type DVPSE_printer. * @return OFTrue if printer supports annotation, OFFalse otherwise. */ public native boolean getTargetPrinterSupportsAnnotation(String targetID); /* NOT USED IN JNI OFBool getTargetPrinterSupportsAnnotationBoxSOPClass(const char *targetID); OFBool getTargetPrinterSessionLabelAnnotation(const char *targetID); const char *getTargetPrinterAnnotationDisplayFormatID(const char *targetID, OFString& value); Uint16 getTargetPrinterAnnotationPosition(const char *targetID); */ /** returns the number of distinct values (separated by backslash characters) * in the FILMSIZEID entry for the printer with the given * target ID from the configuration file. * @param targetID communication target ID, must be one of the target * identifiers returned by getTargetID() for peer type DVPSE_printer. * @return number of values if entry present in the config file, 0 otherwise. */ public native int getTargetPrinterNumberOfFilmSizeIDs(String targetID); /** returns one value from the FILMSIZEID entry for the printer * with the given target ID from the configuration file. * @param targetID communication target ID, must be one of the target * identifiers returned by getTargetID() for peer type DVPSE_printer. * @param idx index of the value, must be < getTargetPrinterNumberOfFilmSizeIDs(targetID) * @param value the result is both stored in this object and returned as return value. * @return value if present, empty string otherwise. */ public native String getTargetPrinterFilmSizeID(String targetID, int idx); /** returns the number of distinct values (separated by backslash characters) * in the MEDIUMTYPE entry for the printer with the given * target ID from the configuration file. * @param targetID communication target ID, must be one of the target * identifiers returned by getTargetID() for peer type DVPSE_printer. * @return number of values if entry present in the config file, 0 otherwise. */ public native int getTargetPrinterNumberOfMediumTypes(String targetID); /** returns one value from the MEDIUMTYPE entry for the printer * with the given target ID from the configuration file. * @param targetID communication target ID, must be one of the target * identifiers returned by getTargetID() for peer type DVPSE_printer. * @param idx index of the value, must be < getTargetPrinterNumberOfMediumTypes(targetID) * @param value the result is both stored in this object and returned as return value. * @return value if present, empty string otherwise. */ public native String getTargetPrinterMediumType(String targetID, int idx); /* NOT USED IN JNI Uint32 getTargetPrinterNumberOfFilmDestinations(const char *targetID); const char *getTargetPrinterFilmDestination(const char *targetID, Uint32 idx, OFString& value); */ /** returns the number of distinct values (separated by backslash characters) * in the RESOLUTIONID entry for the printer with the given * target ID from the configuration file. * @param targetID communication target ID, must be one of the target * identifiers returned by getTargetID() for peer type DVPSE_printer. * @return number of values if entry present in the config file, 0 otherwise. */ public native int getTargetPrinterNumberOfPrinterResolutionIDs(String targetID); /** returns one value from the RESOLUTIONID entry for the printer * with the given target ID from the configuration file. * @param targetID communication target ID, must be one of the target * identifiers returned by getTargetID() for peer type DVPSE_printer. * @param idx index of the value, must be < getTargetPrinterNumberOfPrinterResolutionIDs(targetID) * @param value the result is both stored in this object and returned as return value. * @return value if present, empty string otherwise. */ public native String getTargetPrinterResolutionID(String targetID, int idx); /** returns the number of distinct values (separated by backslash characters) * in the MAGNIFICATIONTYPE entry for the printer with the given * target ID from the configuration file. * @param targetID communication target ID, must be one of the target * identifiers returned by getTargetID() for peer type DVPSE_printer. * @return number of values if entry present in the config file, 0 otherwise. */ public native int getTargetPrinterNumberOfMagnificationTypes(String targetID); /** returns one value from the MAGNIFICATIONTYPE entry for the printer * with the given target ID from the configuration file. * @param targetID communication target ID, must be one of the target * identifiers returned by getTargetID() for peer type DVPSE_printer. * @param idx index of the value, must be < getTargetPrinterNumberOfMagnificationTypes(targetID) * @param value the result is both stored in this object and returned as return value. * @return value if present, empty string otherwise. */ public native String getTargetPrinterMagnificationType(String targetID, int idx); /** returns the number of distinct values (separated by backslash characters) * in the SMOOTHINGTYPE entry for the printer with the given * target ID from the configuration file. * @param targetID communication target ID, must be one of the target * identifiers returned by getTargetID() for peer type DVPSE_printer. * @return number of values if entry present in the config file, 0 otherwise. */ public native int getTargetPrinterNumberOfSmoothingTypes(String targetID); /** returns one value from the SMOOTHINGTYPE entry for the printer * with the given target ID from the configuration file. * @param targetID communication target ID, must be one of the target * identifiers returned by getTargetID() for peer type DVPSE_printer. * @param idx index of the value, must be < getTargetPrinterNumberOfSmoothingTypes(targetID) * @param value the result is both stored in this object and returned as return value. * @return value if present, empty string otherwise. */ public native String getTargetPrinterSmoothingType(String targetID, int idx); /** returns the number of distinct values in the CONFIGURATION_x entries * for the printer with the given target ID from the configuration file. * @param targetID communication target ID, must be one of the target * identifiers returned by getTargetID() for peer type DVPSE_printer. * @return number of values if entry present in the config file, 0 otherwise. */ public native int getTargetPrinterNumberOfConfigurationSettings(String targetID); /** returns the value from one of the CONFIGURATION_x entries for the printer * with the given target ID from the configuration file. * @param targetID communication target ID, must be one of the target * identifiers returned by getTargetID() for peer type DVPSE_printer. * @param idx index of the value, must be < getTargetPrinterNumberOfConfigurationSettings(targetID) * @return value if present, empty string otherwise. */ public native String getTargetPrinterConfigurationSetting(String targetID, int index); /** returns the value from one of the CONFIGURATION_x entries for the printer * with the given target ID from the configuration file. * @param targetID communication target ID, must be one of the target * identifiers returned by getTargetID() for peer type DVPSE_printer. * @param idx index of the value, must be < getTargetPrinterNumberOfConfigurationSettings(targetID) * @return value if present, NULL otherwise. */ public native int getTargetPrinterNumberOfEmptyImageDensities(String targetID); /** returns one value from the EMPTYIMAGEDENSITY entry for the printer * with the given target ID from the configuration file. * @param targetID communication target ID, must be one of the target * identifiers returned by getTargetID() for peer type DVPSE_printer. * @param idx index of the value, must be < getTargetPrinterNumberOfEmptyImageDensities(targetID) * @param value the result is both stored in this object and returned as return value. * @return value if present, NULL otherwise. */ public native String getTargetPrinterEmptyImageDensity(String targetID, int index); /* NOT USED IN JNI OFBool getTargetPrintSCPOmitSOPClassUIDFromCreateResponse(const char *targetID); */ /* general settings */ /* NOT USED IN JNI const char *getLogFolder(); const char *getLogFile(); DVPSLogMessageLevel getLogLevel(); OFBool getMessagePortKeepOpen(); */ /** returns the port on which the GUI application accepts notification * messages from the network processes. * Value is taken from the section GENERAL/APPLICATION/MESSAGEPORT * in the config file. * @return message port, default: 0 (no message exchange). */ public native int getMessagePort(); /** returns the AETitle with which this application should identify itself. * The AETitle is taken from the section GENERAL/NETWORK in the * config file. If absent, a default value is returned. * @return AETitle for this application. Never returns NULL. */ public native String getNetworkAETitle(); /* NOT USED IN JNI OFBool getQueryRetrieveAutoCreateConfigFile(); const char *getQueryRetrieveAETitle(); unsigned short getQueryRetrievePort(); unsigned long getQueryRetrieveMaxPDU(); unsigned long getQueryRetrieveMaxAssociations(); */ /** returns the database folder to be used for sending/receiving/browsing. * Value is taken from the section GENERAL/DATABASE/DIRECTORY * in the config file. If absent, a default value is returned. * @return database folder path. */ public native String getDatabaseFolder(); /* NOT USED IN JNI const char *getSpoolFolder(); OFBool getDetailedLog(); OFBool getBinaryLog(); const char *getSenderName(); const char *getReceiverName(); const char *getQueryRetrieveServerName(); const char *getSpoolerName(); const char *getPrintServerName(); const char *getDumpToolName(); const char *getCheckToolName(); unsigned long getSpoolerSleep(); OFBool getSpoolerDeletePrintJobs(); OFBool getSpoolerAlwaysDeleteTerminateJobs(); */ /** returns the filename (path) of the monitor characteristics file * used to implement that Barten transform, as configured in section * GENERAL/MONITOR/CHARACTERISTICS in the config file. * @return monitor characteristics path name or empty string if absent. */ public native String getMonitorCharacteristicsFile(); /** returns the width (in mm) of one pixel on the current monitor * @return pixel width, 0 if unknown */ public native double getMonitorPixelWidth(); /** returns the height (in mm) of one pixel on the current monitor * @return pixel height, 0 if unknown */ public native double getMonitorPixelHeight(); /* NOT USED IN JNI Uint32 getMaxPreviewResolutionX(); Uint32 getMaxPreviewResolutionY(); */ /** returns the value of configuration file entry key=value * in the section GENERAL/GUI of the config file. * Specified key must be upper case. * If the entry is absent, empty string is returned. * @param key the entry key * @return entry value or empty string. */ public native String getGUIConfigEntry(String key); /** returns the value of configuration file entry key=value * in the section GENERAL/GUI of the config file. * Specified key must be upper case. * If the entry is absent or cannot be parsed, the default dfl * is returned. * @param key the entry key * @param dfl the default to be used if the value is absent or incorrect * @return entry value or default. */ public native boolean getGUIConfigEntryBool(String key, boolean dfl); /* Presentation Look Up Tables (LUTs) */ /* NOT USED IN JNI const char *getLUTFolder(); */ /** returns the number of Presentation LUTs in the configuration file. * @return number of LUTs */ public native int getNumberOfLUTs(); /** returns the identifier of the Presentation LUT * with the given index. The identifier is unique within the configuration file * @param idx index, must be < getNumberOfLUTs() * @return identifier if found, NULL otherwise. */ public native String getLUTID(int index); /** returns the DESCRIPTION entry for the LUT with the given * ID from the configuration file. * @param lutID LUT ID, must be one of the identifiers returned by getLUTID(). * @return entry if present in the config file, empty string otherwise. */ public native String getLUTDescription(String lutID); /* NOT USED IN JNI const char *getLUTFilename(const char *lutID); */ /* Structured Reporting (SR) "templates" */ /* NOT USED IN JNI const char *getReportFolder(); */ /** returns the number of SR "templates" in the configuration file. * @return number of SR "templates" */ public native int getNumberOfReports(); /** returns the identifier of the SR "template" * with the given index. The identifier is unique within the configuration file * @param idx index, must be < getNumberOfReports() * @return identifier if found, NULL otherwise. */ public native String getReportID(int index); /** returns the DESCRIPTION entry for the SR "template" with the given * ID from the configuration file. * @param reportID SR "template" ID, must be one of the identifiers returned by * getReportID(). * @return entry if present in the config file, NULL otherwise. */ public native String getReportDescription(String reportID); /* NOT USED IN JNI const char *getReportFilename(const char *reportID); */ /* general print settings */ /* NOT USED IN JNI Uint32 getMinPrintResolutionX(); Uint32 getMinPrintResolutionY(); Uint32 getMaxPrintResolutionX(); Uint32 getMaxPrintResolutionY(); Uint16 getDefaultPrintIllumination(); Uint16 getDefaultPrintReflection(); */ /* VOI settings */ /** returns the number of VOI Presets defined for the given modality * @param modality Modality, e.g. "CT", "MR", "DX" etc. * @return number of VOI Presets */ public native int getNumberOfVOIPresets(String modality); /** returns the description string for the given VOI Preset * @param modality Modality, e.g. "CT", "MR", "DX" etc. * @param idx index of the value, must be < getNumberOfVOIPresets(modality) * @return description if present, NULL otherwise. */ public native String getVOIPresetDescription(String modality, int idx); /** returns the window center for the given VOI Preset * @param modality Modality, e.g. "CT", "MR", "DX" etc. * @param idx index of the value, must be < getNumberOfVOIPresets(modality) * @return window center if present, 0.0 otherwise. */ public native double getVOIPresetWindowCenter(String modality, int idx); /** returns the window width for the given VOI Preset * @param modality Modality, e.g. "CT", "MR", "DX" etc. * @param idx index of the value, must be < getNumberOfVOIPresets(modality) * @return window width if present, 1.0 otherwise. */ public native double getVOIPresetWindowWidth(String modality, int idx); /* TLS settings */ /* NOT USED IN JNI const char *getTLSFolder(); const char *getTLSCACertificateFolder(); OFBool getTLSPEMFormat(); */ /* User login settings */ /* NOT USED IN JNI const char *getUserCertificateFolder(); */ /** returns the number of configured users in the USERS section. * @return number of configured users */ public native int getNumberOfUsers(); /** returns the symbolic identifier of the user with the given index. * The symbolic identifier is unique within the configuration file. * @param idx index, must be < getNumberOfUsers() * @return identifier if found, NULL otherwise. */ public native String getUserID(int idx); /** returns the login for the given user. If absent in the config file, * returns NULL. * @param userID user ID as returned by getUserID() * @return login for the given user */ public native String getUserLogin(String userID); /** returns the human readable name for the given user. * If absent in the config file, returns NULL. * @param userID user ID as returned by getUserID() * @return name for the given user */ public native String getUserName(String userID); /** returns the name for the given user in DICOM Person Name (PN) format. * If absent in the config file, returns NULL. * @param userID user ID as returned by getUserID() * @return DICOM PN name for the given user */ public native String getUserDICOMName(String userID); /** returns the organization for the given user. * If absent in the config file, returns NULL. * @param userID user ID as returned by getUserID() * @return organization for the given user */ public native String getUserOrganization(String userID); /** returns the coding scheme designator of the user code for the given user if present. * @param userID user ID as returned by getUserID() * @return value if present, NULL otherwise. */ public native String getUserCodingSchemeDesignator(String userID); /** returns the coding scheme version of the user code for the given user if present. * @param userID user ID as returned by getUserID() * @return value if present, NULL otherwise. */ public native String getUserCodingSchemeVersion(String userID); /** returns the code value of the user code for the given user if present. * @param userID user ID as returned by getUserID() * @return value if present, NULL otherwise. */ public native String getUserCodeValue(String userID); /** returns the code meaning of the user code for the given user if present. * @param userID user ID as returned by getUserID() * @return value if present, NULL otherwise. */ public native String getUserCodeMeaning(String userID); /* NOT USED IN JNI const char *getUserCertificate(const char *userID); const char *getUserPrivateKey(const char *userID); */ /* log settings */ /* NOT USED IN JNI virtual void setLog(OFConsole *stream, OFBool verbMode, OFBool dbgMode); */ } /* * CVS Log * $Log: jDVInterface.java,v $ * Revision 1.1.1.1 2001/06/06 10:32:30 kleber * Init commit for DICOMscope 3.5 * Create new CVS * */ dicomscope-3.6.0/tkgui/J2Ci/jDVPresentationState.java0000644000265600020320000023210611262371100021563 0ustar tilleaadmin/* * * Copyright (C) 1999-2003, Institute for MicroTherapy and OFFIS * * This software and supporting documentation were developed by * * University of Witten/Herdecke * Department of Radiology and MicroTherapy * Institute for MicroTherapy * Medical computer science * * Universitaetsstrasse 142 * 44799 Bochum, Germany * * http://www.microtherapy.de/go/cs * mailto:computer.science@microtherapy.de * * and * * Kuratorium OFFIS e.V. * Healthcare Information and Communication Systems * Escherweg 2 * D-26121 Oldenburg, Germany * * THIS SOFTWARE IS MADE AVAILABLE, AS IS, AND THE INSTITUTE MAKES NO * WARRANTY REGARDING THE SOFTWARE, ITS PERFORMANCE, ITS MERCHANTABILITY * OR FITNESS FOR ANY PARTICULAR USE, FREEDOM FROM ANY COMPUTER DISEASES * OR ITS CONFORMITY TO ANY SPECIFICATION. THE ENTIRE RISK AS TO QUALITY * AND PERFORMANCE OF THE SOFTWARE IS WITH THE USER. * * Author : $Author: kleber $ * Last update : $Date: 2001/06/06 10:32:30 $ * Revision : $Revision: 1.1.1.1 $ * State: $State: Exp $ */ package J2Ci; import java.awt.Point; /** * A jDVPresentationState is the Java-sided class for the C++-Class * DVPresentationState. The Constructor is disabled !. * * @author Andreas Schroeter, Joerg Riesmeier */ public class jDVPresentationState { /** * Constructor is disabled !!! */ protected jDVPresentationState() { // emtpy } /** * Constructor for attaching an existing C++-Object. FOR INTERNAL USE ONLY! * @param attachAdr Address of C++-Object */ public jDVPresentationState (long attachAdr) { cppClassAddress = attachAdr; } // -------------------------------- Methods for C++-Class Binding /** * Address of C++-Object for access in the DLL. Never change manually!! */ private long cppClassAddress = (long) 0; // never change! // ----------------------------------- Methods of Class jDVPresentationState /** returns the current SOP Instance UID for the Presentation State. * @return SOP Instance UID if present, NULL otherwise. */ public native String getInstanceUID(); /** returns the (currently hard-coded) SOP Class UID of the Presentation State. * @return SOP Class UID of the presentation state */ public native String getSOPClassUID(); /** returns the SOP Class UID of the currently attached image. * @return SOP class UID of current image, NULL if absent */ public native String getAttachedImageSOPClassUID(); /** returns the SOP Instance UID of the currently attached image. * @return SOP instance UID of current image, NULL if absent */ public native String getAttachedImageSOPInstanceUID(); /** * Returns a label for the presentation state. * If no label is available, null is returned. * @return a pointer to a string or null. */ public native String getPresentationLabel (); /** * Sets the presentation state label. * The passed string must be a valid DICOM Code String * (i.e. max 16 characters, only uppercase and numbers). * @param label the new presentation state label * @return EC_Normal upon success, an error code otherwise (from jE_Condition). */ public native int setPresentationLabel (String newLabel); /** * Returns a description for the presentation state. * If no description is available, NULL is returned. * @return a pointer to a string or NULL. */ public native String getPresentationDescription (); /** * Sets the presentation state description. * The passed string must be a valid DICOM Long String * (i.e. max 64 characters, no backslash or control chars). * @param descr the new presentation state description * @return EC_Normal upon success, an error code otherwise (from jE_Condition). */ public native int setPresentationDescription (String descr); /** * Returns the creator's name for the presentation state. * If no name is available, NULL is returned. * @return a pointer to a string or NULL. */ public native String getPresentationCreatorsName (); /** * Sets the presentation state creator's name. * The passed string must be a valid DICOM Person Name String * (see NEMA PS3.5:1998). * @param name the new creator's name * @return EC_Normal upon success, an error code otherwise (from jE_Condition). */ public native int setPresentationCreatorsName (String newName); /** * Gets the current rotation status of the presentation state. * @return the current rotation status (from jDVPSRotationType). */ public native int getRotation (); /** * Sets rotation status of the presentation state. * @param rotation the rotation to be set (from jDVPSRotationType). * @return EC_Normal if successful, an error code otherwise (from jE_Condition). */ public native int setRotation (int rotation); /** * Gets the current horizontal flip status of the presentation state. * @return true if flip is on, false if flip is off. */ public native boolean getFlip (); /** * Sets horizontal flip status of the presentation state. * @param isFlipped the flip status, true for on, false for off. * @return EC_Normal if successful, an error code otherwise (from jE_Condition). */ public native int setFlip (boolean isFlipped); /** * Resets the object to initial state. * After this call, the object is in the same state as after * creation with the default constructor. */ public native void clear(); /** * Apply presentation state to attached image and return image bitmap. * This method sets all parameter required to correctly render the pixel data * in the image attached to the presentation state and then creates the * required pixel data which contains all grayscale transformations but none * of the none-grayscale transformations of the presentation state "burned in" * into the pixel data. The pixel data returned is already corrected by a * Barten transform for the current display device and can be mapped directly * to digital driving levels of the graphics board. The pointer to the pixel * data remains valid until the next call to this function, or until the * image is detached or the presentation state is deleted. * @param pixel this object contains a reference to the pixeldata and the height * and width of the image. This object must be created before passed as param. * @return EC_Normal upon success, an error code otherwise (from jE_Condition). */ public native int getPixelData (jDVPrStateParam_GetPixelData pixel); /** * Adds a reference to an image to this presentation state. * This method checks if the given SOP class and Study UID match * for this presentation state and returns an error code otherwise. * @param studyUID the Study Instance UID of the image reference to be added. * @param seriesUID the Series Instance UID of the image reference to be added. * @param sopclassUID the SOP class UID of the image reference to be added. * @param instanceUID the SOP instance UID of the image reference to be added. * @param frames a list of frame numbers in DICOM IS format * (integer numbers separated by '\' characters). Default: frame numbers absent. * The frame numbers are required if the referenced image is a multiframe image. * @param aetitle the series retrieveAETitle. Must be a valid DICOM 'AE' value. * Default: value absent. * @param filesetID the series storageMediaFileSetID. Must be a valid DICOM 'SH' value. * Default: value absent. * @param filesetUID the series storageMediaFileSetUID. Must be a valid DICOM UID. * Default: value absent. * @return EC_Normal if successful, an error code otherwise (from jE_Condition). */ public native int addImageReference (String studyUID, String seriesUID, String sopClassUID, String instanceUID, String frames, String aetitle, String filesetID, String filesetUID); /** * adds a reference to the currently attached image to this * presentation state. This method checks if the given image * is not yet referenced and if its Study UID and SOP class * match for this presentation state and returns an error code otherwise. * @param aetitle the series retrieveAETitle. Must be a valid DICOM 'AE' value. * Default: value absent. * @param filesetID the series storageMediaFileSetID. Must be a valid DICOM 'SH' value. * Default: value absent. * @param filesetUID the series storageMediaFileSetUID. Must be a valid DICOM UID. * Default: value absent. * @return EC_Normal if successful, an error code otherwise (from jE_Condition). */ public native int addImageReferenceAttached (String aetitle, String filesetID, String filesetUID); /** * Removes a reference to an image from this presentation state. * @param studyUID the Study Instance UID of the image reference to be removed. * @param seriesUID the Series Instance UID of the image reference to be removed. * @param instanceUID the SOP instance UID of the image reference to be removed. * @return EC_Normal if successful, an error code otherwise (from jE_Condition). */ public native int removeImageReference (String studyUID, String seriesUID, String instanceUID); /** * Removes a reference to the currently attached image from this presentation state. * @return EC_Normal if successful, an error code otherwise (from jE_Condition). */ public native int removeImageReferenceAttached (); /** * Gets the number of frames of the current (attached) image. * This method may only be called when an image is attached to the * presentation state. * @param frames upon success, the number of frames is returned in this parameter. * Param frames must be created before passing to this method! * @return EC_Normal upon success, an error code otherwise (from jE_Condition). */ public native int getImageNumberOfFrames(jIntByRef frames); /** * Selects one frame of a multiframe image. This affects the image bitmap * that is rendered, the overlay bitmaps and the visibility of graphic and text * objects. This method may only be called when an image is attached to the * presentation state. * @param frame frame number in the range [1..getImageNumberOfFrames()] * @return EC_Normal upon success, an error code otherwise (from jE_Condition). */ public native int selectImageFrameNumber(int frame); /** gets the index of the currently selected frame in a multi-frame image. * @return index of the currently selected frame, 0 if an error occurred */ public native int getSelectedImageFrameNumber(); /** * Gets the current Presentation LUT type. * @return the current presentation LUT type (from jDVPSPresentationLUTType). */ public native int getPresentationLUT(); /** * Checks if a real Presentation LUT (not shape) * is available in the presentation state. * @return OFTrue if the presentation state contains * a presentation LUT, no matter if it is activated or not. * Returns OFFalse otherwise. */ public native boolean havePresentationLookupTable(); /** * Gets the presentation size mode for the current image and frame. * This method may only be called when an image is attached to the presentation state. * @return presentation size mode (from jDVPSPresentationSizeMode) */ public native int getDisplayedAreaPresentationSizeMode(); /** * Gets the presentation pixel aspect ratio for for the current image and frame. * Pixel aspect ratio is defined here as the width of a pixel divided * by the height of a pixel (x/y). * This method may only be called when an image is attached to the presentation state. * @return pixel aspect ratio */ public native double getDisplayedAreaPresentationPixelAspectRatio(); /** * Gets the displayed area top lefthand corner and * bottom righthand corner for the current potentially rotated and flipped image and frame. * This method may only be called when an image is attached to the presentation state. * The params tlhcXY and brhcXY must be created before passing to this method. * @param tlhcX the displayed area top lefthand corner X value is returned in this parameter * @param tlhcY the displayed area top lefthand corner Y value is returned in this parameter * @param brhcX the displayed area bottom righthand corner X value is returned in this parameter * @param brhcY the displayed area bottom righthand corner Y value is returned in this parameter * @return EC_Normal if successful, an error code otherwise (from jE_Condition). */ public native int getStandardDisplayedArea(jIntByRef tlhcX, jIntByRef tlhcY, jIntByRef brhcX, jIntByRef brhcY); /** * Gets the displayed area top lefthand corner and * bottom righthand corner for the current image and frame, as if the image was unrotated * This method may only be called when an image is attached to the presentation state. * The params tlhcXY and brhcXY must be created before passing to this method. * @param tlhcX the displayed area top lefthand corner X value is returned in this parameter * @param tlhcY the displayed area top lefthand corner Y value is returned in this parameter * @param brhcX the displayed area bottom righthand corner X value is returned in this parameter * @param brhcY the displayed area bottom righthand corner Y value is returned in this parameter * @return EC_Normal if successful, an error code otherwise (from jE_Condition). */ public native int getImageRelativeDisplayedArea(jIntByRef tlhcX, jIntByRef tlhcY, jIntByRef brhcX, jIntByRef brhcY); /** * Gets the presentation pixel spacing for the current image and frame if it is known. * @param x the horizontal pixel spacing (mm) is returned in this parameter upon success * @param y the vertical pixel spacing (mm) is returned in this parameter upon success * @return EC_Normal if successful, an error code if no presentation pixel spacing is available (from jE_Condition). */ public native int getDisplayedAreaPresentationPixelSpacing(jDoubleByRef x, jDoubleByRef y); /** * Gets the presentation pixel magnification ratio for the current image and frame if it is present. * @param magnification the magnification ratio is returned in this parameter upon success * @return EC_Normal if successful, an error code if no magnification ratio is available (from jE_Condition). */ public native int getDisplayedAreaPresentationPixelMagnificationRatio(jDoubleByRef magnification); /** * Checks if "TRUE SIZE" can be used as presentation size mode for the current image and frame * (i.e. pixel spacing is known). * @return true if TRUE SIZE mode is available, false otherwise. */ public native boolean canUseDisplayedAreaTrueSize(); /** * Sets the displayed area and size mode (for the current frame, the current image * or all images referenced by the presentation state object). * @param sizeMode presentation size mode (from jDVPSPresentationSizeMode) * @param tlhcX displayed area top lefthand corner X * @param tlhcY displayed area top lefthand corner Y * @param brhcX displayed area bottom righthand corner X * @param brhcY displayed area bottom righthand corner Y * @param magnification magnification factor - ignored unless sizeMode==DVPSD_magnify. * @param applicability defines the applicability of the new displayed area definition. * Possible choices are: DVPSB_currentFrame - current frame only, * DVPSB_currentImage - all frames of current image (default), * and DVPSB_allImages - all images referenced by this presentation state. * The last choice should be used with care * because it will also cause the pixel spacing or pixel aspect ratio of the current image * to be applied to all images referenced by the presentation state. * (from jDVPSObjectApplicability) * @return EC_Normal if successful, an error code otherwise (from jE_Condition). */ public native int setStandardDisplayedArea(int sizeMode, int tlhcX, int tlhcY, int brhcX, int brhcY, double magnification, int applicability); /** * Sets the displayed area and size mode (for the current frame, the current image * or all images referenced by the presentation state object). * Treats the image as if it was neither rotated nor flipped. * @param sizeMode presentation size mode (from jDVPSPresentationSizeMode) * @param tlhcX displayed area top lefthand corner X * @param tlhcY displayed area top lefthand corner Y * @param brhcX displayed area bottom righthand corner X * @param brhcY displayed area bottom righthand corner Y * @param magnification magnification factor - ignored unless sizeMode==DVPSD_magnify. * @param applicability defines the applicability of the new displayed area definition. * Possible choices are: DVPSB_currentFrame - current frame only, * DVPSB_currentImage - all frames of current image (default), * and DVPSB_allImages - all images referenced by this presentation state. * The last choice should be used with care * because it will also cause the pixel spacing or pixel aspect ratio of the current image * to be applied to all images referenced by the presentation state. * (from jDVPSObjectApplicability) * @return EC_Normal if successful, an error code otherwise (from jE_Condition). */ public native int setImageRelativeDisplayedArea(int sizeMode, int tlhcX, int tlhcY, int brhcX, int brhcY, double magnification, int applicability); /** * Gets rectangular shutter left vertical edge. * May only be called if a rectangular shutter is active. * @return the rect shutter LV edge. */ public native int getRectShutterLV (); /** * Gets rectangular shutter right vertical edge. * May only be called if a rectangular shutter is active. * @return the rect shutter RV edge. */ public native int getRectShutterRV (); /** * Gets rectangular shutter upper horitontal edge. * May only be called if a rectangular shutter is active. * @return the rect shutter UH edge. */ public native int getRectShutterUH (); /** * Gets rectangular shutter lower horiztonal edge. * May only be called if a rectangular shutter is active. * @return the rect shutter LH edge. */ public native int getRectShutterLH (); /** * Sets and activates rectangular display shutter. * If a bitmap shutter is exists, it is deactivated if this * method returns successfully. If no shutter display value exists, * a default of 0 (black) is set. * @param lv the left vertical edge * @param rv the right vertical edge * @param uh the upper horizontal edge * @param lh the lower horizontal edge * @return EC_Normal upon success, an error code otherwise (from jE_Condition). */ public native int setRectShutter (int lv, int rv, int uh, int lh); /** * Checks if a display shutter of given type is active. * @param type the shutter type (from jDVPSShutterType) * @return true if this type of shutter is currently active. */ public native boolean haveShutter (int type); /** * Sets the current Presentation LUT type. * DVPSP_table can only be used if the presentation state * contains a lookup table, i.e. if havePresentationLookupTable() returns OFTrue. * @param newType the new presentation LUT type (from jDVPSPresentationLUTType). * @return EC_Normal if successful, an error code otherwise (from jE_Condition). */ public native int setCurrentPresentationLUT (int type); /** * Gets a description of the current presentation LUT. * For well-known presentation LUT shapes, a standard text * is returned. For presentation LUTs, the LUT explanation * is returned if it exists and a standard text otherwise. * This method never returns (null). * @return A string describing the current presentation LUT. */ public native String getCurrentPresentationLUTExplanation(); /** * Returns the LUT explanation of the presentation LUT * if it exists and is non-empty. * Otherwise returns (null). * @return A string with the explanation. */ public native String getPresentationLUTExplanation(); /** * Gets circular shutter center x component. * May only be called if a circular shutter is active. * @return the circ shutter center x component */ public native int getCenterOfCircularShutter_x(); /** * Gets circular shutter center y component. * May only be called if a circular shutter is active. * @return the circ shutter center y component */ public native int getCenterOfCircularShutter_y(); /** * Gets circular shutter radius. * May only be called if a circular shutter is active. * Note: In DICOM, a circular shutter must be rendered * with consideration of the image pixel aspect ratio. * The radius returned by this method is the number * of pixels describing a horizontal line from the * center of the circle to its border. See sample figures * in NEMA PS3.3:1998. * @return the circ shutter radius */ public native int getRadiusOfCircularShutter(); /** * Sets and activates circular display shutter. * If a bitmap shutter is exists, it is deactivated if this * method returns successfully. If no shutter display value exists, * a default of 0 (black) is set. * @param centerX the X component of the shutter center * @param centerY the Y component of the shutter center * @param radius the (horizontal) radius of the shutter * @return EC_Normal upon success, an error code otherwise (from jE_Condition). */ public native int setCircularShutter(int centerX, int centerY, int radius); /** * Gets polygonal shutter number of points. * May only be called if a polygonal shutter is active. * @return the number of points describing the poly shutter */ public native int getNumberOfPolyShutterVertices(); /** * Sets polygonal display shutter origin. * This method creates a * polygonal shutter consisting only of a single point. * The polygonal display shutter is deactivated after this method. * @param x the x component of the shutter origin * @param y the x component of the shutter origin * @return EC_Normal upon success, an error code otherwise (from jE_Condition). */ public native int setPolyShutterOrigin(int x, int y); /** * Sets polygonal display shutter point. * This method adds a point to the polygonal display shutter, * which must already have at least an origin. * If the point set with this method is identical to the * origin of the shutter, the shutter is activated and * a possible bitmap shutter is deactivated. If no shutter display value exists, * a default of 0 (black) is set. * @param x the x component of the shutter origin * @param y the x component of the shutter origin * @return EC_Normal upon success, an error code otherwise (from jE_Condition). */ public native int addPolyShutterVertex(int x, int y); /** * Get polygonal shutter point. * May only be called if a polygonal shutter is active. * Shutter points are relative to the origin 1\1 which is * the left upper edge of the image. Param xy must be an existing object before passing * it to this method! * @param idx the index of the shutter point, must be < getNumberOfPolyShutterVertices() * @param xy returns the x and y component of the point. xy must be created before passing to this method! * @return EC_Normal upon success, an error code otherwise (from jE_Condition). */ public native int getPolyShutterVertex(int idx, Point xy); /** * Gets the shutter presentation value. If no shutter display * value exists, a default of 0 (black) is set. * @return the shutter presentation value as 16bit unsigned P-value */ public native int getShutterPresentationValue(); /** * Sets the shutter presentation value to the given P-value. * @param pvalue the shutter presentation value. * @return EC_Normal upon success, an error code otherwise (from jE_Condition). */ public native int setShutterPresentationValue(int pvalue); /** * Sorts the graphic layers according to * the graphic layer order. Layers with lower order have lower * indices after sorting which means that the layers can be * drawn to the screen in ascending index order. * Calling this routine may result in a re-numbering * of the graphic layer orders in a way that does not affect * their sequence. */ public native void sortGraphicLayers(); /** * Returns the number of graphic layers. * @return number of graphic layers */ public native int getNumberOfGraphicLayers(); /** * Gets the unique name of the graphic * layer with the given index. If no layer for the given * index exists, NULL is returned. * @param idx index of the graphic layer, must be < getNumberOfGraphicLayers() * @return name of the graphic layer */ public native String getGraphicLayerName(int idx); /** * Gets the index of the graphic * layer with the given unique name. If no matching layer * is found, (-1) is returned. * @param name name of the graphic layer * @return index of the graphic layer */ public native int getGraphicLayerIndex(String name); /** * Gets a description string for the graphic * layer with the given index. If no layer for the given * index exists, or if the description is empty, NULL is returned. * @param idx index of the graphic layer, must be < getNumberOfGraphicLayers() * @return description of the graphic layer */ public native String getGraphicLayerDescription(int idx); /** * Checks whether a recommended display value (grayscale, color or both) for * the given graphic layer exists. * @param idx index of the graphic layer, must be < getNumberOfGraphicLayers() * @return true if a recommended display value exists */ public native boolean haveGraphicLayerRecommendedDisplayValue(int idx); /** * Gets the recommended grayscale display value for the given graphic layer. * If the graphic layer contains an RGB display value but no grayscale * display value, the RGB value is implicitly converted to grayscale. * Param gray must be created before passing to this method! * @param idx index of the graphic layer, must be < getNumberOfGraphicLayers() * @param gray the recommended display value as an unsigned 16-bit P-value * is returned in this parameter. gray must be created before passing to this * method! * @return EC_Normal upon success, an error code otherwise (from jE_Condition). */ public native int getGraphicLayerRecommendedDisplayValueGray(int idx, jIntByRef gray); /** * Gets the recommended RGB display value for the given graphic layer. * If the graphic layer contains a grayscale display value but no RGB * display value, the grayscale value is implicitly converted to RGB. The objects * r, g, b must be created before passing to this method! * @param idx index of the graphic layer, must be < getNumberOfGraphicLayers() * @param r returns the R component of the recommended display value as unsigned 16-bit P-value. * Must be created before passing to this method! * @param g returns the G component of the recommended display value as unsigned 16-bit P-value * Must be created before passing to this method! * @param b returns the B component of the recommended display value as unsigned 16-bit P-value * Must be created before passing to this method! * @return EC_Normal upon success, an error code otherwise (from jE_Condition). */ public native int getGraphicLayerRecommendedDisplayValueRGB(int idx, jIntByRef r, jIntByRef g, jIntByRef b); /** * Set graphic layer recommended grayscale display value for the given graphic layer. * This method does not affect (set or modify) the recommended RGB display value * which should be set separately. * @param idx index of the graphic layer, must be < getNumberOfGraphicLayers() * @param gray the recommended display value as an unsigned 16-bit P-value * @return EC_Normal upon success, an error code otherwise (from jE_Condition). */ public native int setGraphicLayerRecommendedDisplayValueGray(int idx, int gray); /** * Set graphic layer recommended RGB display value for the given graphic layer. * This method does not affect (set or modify) the recommended grayscale display value * which should be set separately. * @param idx index of the graphic layer, must be < getNumberOfGraphicLayers() * @param r the R component of the recommended display value as unsigned 16-bit P-value * @param g the G component of the recommended display value as unsigned 16-bit P-value * @param b the B component of the recommended display value as unsigned 16-bit P-value * @return EC_Normal upon success, an error code otherwise (from jE_Condition). */ public native int setGraphicLayerRecommendedDisplayValueRGB(int idx, int r, int g, int b); /** * Removes recommended display values for the given graphic layer. * @param rgb if true, the RGB recommended display value is removed * @param monochrome if true the monochrome recommended display value is removed */ public native void removeGraphicLayerRecommendedDisplayValue(int idx, boolean rgb, boolean monochrome); /** * Assigns a new unique name to the given graphic layer. * The new name must be unique, otherwise an error code is returned. * Upon success, all references (for graphic annotations, curves and overlays) to the given * graphic layer are also renamed so that the presentation state remains * consistent. * @param idx index of the graphic layer, must be < getNumberOfGraphicLayers() * @param name the new name of the graphic layer. Must be a valid DICOM Code String. * @return EC_Normal upon success, an error code otherwise (from jE_Condition). */ public native int setGraphicLayerName(int idx, String name); /** * Sets a new description to the given graphic layer. * @param idx index of the graphic layer, must be < getNumberOfGraphicLayers() * @param descr description of the graphic layer. Must be a valid DICOM Long String. * @return EC_Normal upon success, an error code otherwise (from jE_Condition). */ public native int setGraphicLayerDescription(int idx, String descr); /** * Makes a graphic layer the highest layer for display. * This method assigns a graphic layer order higher than all * existing graphic layer orders to the given graphic layer, * sorts and renumbers the list of graphic layers. Upon success, * the given graphic layer is guaranteed to have the new index * (getNumberOfGraphicLayers()-1). * @param idx index of the graphic layer, must be < getNumberOfGraphicLayers() * @return EC_Normal upon success, an error code otherwise (from jE_Condition). */ public native int toFrontGraphicLayer(int idx); /** * Makes a graphic layer the lowest layer for display. * This method assigns a graphic layer order lower than all * existing graphic layer orders to the given graphic layer, * sorts and renumbers the list of graphic layers. Upon success, * the given graphic layer is guaranteed to have the new index 0. * @param idx index of the graphic layer, must be < getNumberOfGraphicLayers() * @return EC_Normal upon success, an error code otherwise (from jE_Condition). */ public native int toBackGraphicLayer(int idx); /** * Creates a new graphic layer with the given * name and optional description. * The new name must be unique, otherwise an error code is returned. * The toFrontGraphicLayer() method is implicitly called for the new layer. * @param gLayer the name of the graphic layer. Must be a valid DICOM Code String. * @param gLayerDescription the optional description of the graphic layer. * Must be a valid DICOM Long String. * @return EC_Normal upon success, an error code otherwise (from jE_Condition). */ public native int addGraphicLayer(String gLayer, String gLayerDescription); /** * Removes and deletes a graphic layer. All text, graphic, curve * and overlay objects on this graphic layer are also deleted or deactivated, respectively. * @param idx index of the graphic layer, must be < getNumberOfGraphicLayers() * @return EC_Normal upon success, an error code otherwise (from jE_Condition). */ public native int removeGraphicLayer(int idx); /** * Deactivates display shutter of given type. * After a call to this method haveShutter(type) will return OFFalse. * @param type the shutter type (from jDVPSShutterType). */ public native void removeShutter(int type); /** * Returns the number of text objects for the given * graphic layer. * Only the objects that are applicable to the current (attached) image * and the selected frame number are used by this method. * @param idx index of the graphic layer, must be < getNumberOfGraphicLayers() * @return number of text objects */ public native int getNumberOfTextObjects(int layer); /** * Gets the text object with the given index * on the given layer. If the text object or the graphic layer does * not exist, NULL is returned. * Only the objects that are applicable to the current (attached) image * and the selected frame number are used by this method. * @param layer index of the graphic layer, must be < getNumberOfGraphicLayers() * @param idx index of the text object, must be < getNumberOfTextObjects(layer) * @return the text object. */ public jDVPSTextObject getTextObject(int layer, int idx) { long addr = getTextObjectN(layer, idx); if (addr == 0) return null; return new jDVPSTextObject (addr); } private native long getTextObjectN(int layer, int idx); /** * Creates a new text object on the given layer. * returns a pointer to the new text object. If the graphic layer * does not exist or if the creation of the text object fails, NULL is returned. * @param layer index of the graphic layer, must be < getNumberOfGraphicLayers() * @param applicability defines to which images/frames the new object applies. * Default: all images referenced by the presentation state. (from jDVPSObjectApplicability) * @return a pointer to the new text object */ public jDVPSTextObject addTextObject(int layer, int applicability) { long addr = addTextObjectN(layer, applicability); if (addr == 0) return null; return new jDVPSTextObject (addr); } private native long addTextObjectN (int layer, int applicability); /** * Deletes the text object with the given index * on the given layer. * Only the objects that are applicable to the current (attached) image * and the selected frame number are used by this method. * @param layer index of the graphic layer, must be < getNumberOfGraphicLayers() * @param idx index of the text object, must be < getNumberOfTextObjects(layer) * @return EC_Normal upon success, an error code otherwise (from jE_Condition). */ public native int removeTextObject(int layer, int idx); /** * Moves the text object with the given index on the given * layer to a different layer. * @param old_layer index of the graphic layer on which the text object is, * must be < getNumberOfGraphicLayers() * @param idx index of the text object, must be < getNumberOfTextObjects(layer) * @param new_layer index of the graphic layer to which the text object is moved, * must be < getNumberOfGraphicLayers() * @param applicability defines to which images/frames the new object applies from * now on. Default: all images referenced by the presentation state. (from jDVPSObjectApplicability) * @return EC_Normal upon success, an error code otherwise (from jE_Condition). */ public native int moveTextObject(int old_layer, int idx, int new_layer, int applicability); /** * Returns the number of graphic objects for the given * graphic layer. * Only the objects that are applicable to the current (attached) image * and the selected frame number are used by this method. * @param idx index of the graphic layer, must be < getNumberOfGraphicLayers() * @return number of graphic objects */ public native int getNumberOfGraphicObjects(int layer); /** * Gets the graphic object with the given index * on the given layer. If the graphic object or the graphic layer does * not exist, NULL is returned. * Only the objects that are applicable to the current (attached) image * and the selected frame number are used by this method. * @param layer index of the graphic layer, must be < getNumberOfGraphicLayers() * @param idx index of the graphic object, must be < getNumberOfGraphicObjects(layer) * @return the graphic object. */ public jDVPSGraphicObject getGraphicObject(int layer, int idx) { long addr = getGraphicObjectN(layer, idx); if (addr == 0) return null; return new jDVPSGraphicObject (addr); } private native long getGraphicObjectN(int layer, int idx); /** * Creates a new graphic object on the given layer. * Returns a pointer to the new graphic object. If the graphic layer * does not exist or if the creation of the graphic object fails, NULL is returned. * @param layer index of the graphic layer, must be < getNumberOfGraphicLayers() * @param applicability defines to which images/frames the new object applies from * now on. Default: all images referenced by the presentation state. (from jDVPSObjectApplicability) * @return a pointer to the new graphic object */ public jDVPSGraphicObject addGraphicObject(int layer, int applicability) { long addr = addGraphicObjectN(layer, applicability); if (addr == 0) return null; return new jDVPSGraphicObject (addr); } private native long addGraphicObjectN(int layer, int applicability); /** * Deletes the graphic object with the given index * on the given layer. * Only the objects that are applicable to the current (attached) image * and the selected frame number are used by this method. * @param layer index of the graphic layer, must be < getNumberOfGraphicLayers() * @param idx index of the graphic object, must be < getNumberOfGraphicObjects(layer) * @return EC_Normal upon success, an error code otherwise (from jE_Condition). */ public native int removeGraphicObject(int layer, int idx); /** * Moves the graphic object with the given index on the given * layer to a different layer. * @param old_layer index of the graphic layer on which the graphic object is, * must be < getNumberOfGraphicLayers() * @param idx index of the graphic object, must be < getNumberOfGraphicObjects(layer) * @param new_layer index of the graphic layer to which the graphic object is moved, * must be < getNumberOfGraphicLayers() * @param applicability defines to which images/frames the new object applies from * now on. Default: all images referenced by the presentation state. (from jDVPSObjectApplicability) * @return EC_Normal upon success, an error code otherwise (from jE_Condition). */ public native int moveGraphicObject(int old_layer, int idx, int new_layer, int applicability); /** * Detaches and frees the image attached to the presentation state. */ public native void detachImage(); /** * Sets the specific character set for this presentation state. * @param charset the new character set for this text object (from jDVPScharacterSet). * @return EC_Normal if successful, an error code otherwise (from jE_Condition). */ public native int setCharset(int charset); /** * Gets the specific character set for this presentation state. * @return character set identifier (from jDVPScharacterSet). */ public native int getCharset(); /** * Gets the specific character set string for this presentation state. * @return character set if present, NULL otherwise */ public native String getCharsetString(); /** * Returns the number of curve activations for the given * graphic layer. * @param idx index of the graphic layer, must be < getNumberOfGraphicLayers() * @return number of curves */ public native int getNumberOfCurves(int layer); /** * Gets the curve with the given index * on the given layer. If the curve or the graphic layer does * not exist, NULL is returned. * @param layer index of the graphic layer, must be < getNumberOfGraphicLayers() * @param idx index of the curve, must be < getNumberOfCurves(layer) * @return a pointer to the curve */ public jDVPSCurve getCurve(int layer, int idx) { long addr = getCurveN(layer, idx); if (addr == 0) return null; return new jDVPSCurve (addr); } private native long getCurveN (int layer, int idx); /** * Returns the number of curves in the attached image * that could be activated in the presentation state. * @return number of available curves */ public native int getNumberOfCurvesInImage(); /** * Gets the curve with the given index * from the attached image. If the curve does * not exist, NULL is returned. * @param idx index of the curve, must be < getNumberOfCurvesInImage() * @return the curve */ public jDVPSCurve getCurveInImage(int idx) { long addr = getCurveInImageN(idx); if (addr == 0) return null; return new jDVPSCurve (addr); } private native long getCurveInImageN (int idx); /** * Activates curve in presentation state. * This method adds an activation for the given curve from the * attached image to the given graphic layer in the presentation state. * @param layer index of the graphic layer, must be < getNumberOfGraphicLayers() * @param curveidxinimage index of the curve in the attached image, * must be < getNumberOfCurvesInImage() * @return EC_Normal upon success, an error code otherwise (from jE_Condition). */ public native int addCurve(int layer, int curveidxinimage); /** * Deletes the curve activation with the given index * on the given layer. * @param layer index of the graphic layer, must be < getNumberOfGraphicLayers() * @param idx index of the curve activation, must be < getNumberOfCurves(layer) * @return EC_Normal upon success, an error code otherwise (from jE_Condition). */ public native int removeCurve(int layer, int idx); /** * Moves the curve activation with the given index on the given * layer to a different layer. * @param old_layer index of the graphic layer on which the curve is, * must be < getNumberOfGraphicLayers() * @param idx index of the curve activation, must be < getNumberOfCurves(layer) * @param new_layer index of the graphic layer to which the curve is moved, * must be < getNumberOfGraphicLayers() * @return EC_Normal upon success, an error code otherwise (from jE_Condition). */ public native int moveCurve(int old_layer, int idx, int new_layer); /** * Check if a VOI window is currently active. * @return true if a VOI window is active */ public native boolean haveActiveVOIWindow(); /** * Check if a VOI LUT is currently active. * @return OFTrue if a VOI LUT is active */ public native boolean haveActiveVOILUT(); /** * Returns a description string for a currently active VOI transform. * If no description is available, NULL is returned. * @return a pointer to a string or NULL. */ public native String getCurrentVOIDescription(); /** * Gets the width of the current VOI window. * May only be called if haveActiveVOIWindow() is OFTrue. * @param w the window width is returned in this parameter * @return EC_Normal upon success, an error code otherwise (from jE_Condition). */ public native int getCurrentWindowWidth(jDoubleByRef w); /** * Get the center of the current VOI window. * May only be called if haveActiveVOIWindow() is OFTrue. * @param c the window center is returned in this parameter * @return EC_Normal upon success, an error code otherwise (from jE_Condition). */ public native int getCurrentWindowCenter(jDoubleByRef c); /** * Gets the number of VOI LUTs available in the attached image. * @return number of VOI LUTs. */ public native int getNumberOfVOILUTsInImage(); /** * Gets the number of VOI Windows available in the attached image. * @return number of VOI Windows. */ public native int getNumberOfVOIWindowsInImage(); /** * Returns a description string for the given VOI LUT in the attached * image. * If no description for the given index is available, NULL is returned. * @param idx index, must be < getNumberOfVOILUTsInImage() * @return a pointer to a string or NULL. */ public native String getDescriptionOfVOILUTsInImage(int idx); /** * Returns a description string for the given VOI Window * in the attached image. * If no description for the given index is available, NULL is returned. * @param idx index, must be < getNumberOfVOIWindowsInImage() * @return a pointer to a string or NULL. */ public native String getDescriptionOfVOIWindowsInImage(int idx); /** * Activates one of the VOI LUTs from the attached image. * @param idx index of the VOI transform, must be < getNumberOfVOILUTsInImage(). * @param applicability defines the applicability of the new VOI transform (from jDVPSObjectApplicability) * @return EC_Normal upon success, an error code otherwise (from jE_Condition). */ public native int setVOILUTFromImage(int idx, int applicability); /** * Activates one of the VOI Windows from the attached image. * @param idx index of the VOI transform, must be < getNumberOfVOIWindowsInImage(). * @param applicability defines the applicability of the new VOI transform (from jDVPSObjectApplicability) * @return EC_Normal upon success, an error code otherwise (from jE_Condition). */ public native int setVOIWindowFromImage(int idx, int applicability); /** * Sets a user defined VOI window center and width. * @param wCenter the window center * @param wWidth the window width * @param description an optional description. Default: absent. * @param applicability defines the applicability of the new VOI transform (from jDVPSObjectApplicability) * @return EC_Normal upon success, an error code otherwise (from jE_Condition). */ public native int setVOIWindow(double wCenter, double wWidth, String description, int applicability); /** * Deactivates the current VOI transformation. * @param applicability defines the applicability of the new VOI transform (from jDVPSObjectApplicability) * After a call to this method, no VOI transform is active. */ public native void deactivateVOI(int applicability); /** stores VOI lookup table with a gamma curve shape in the presentation state. * If a VOI window is currently active the center and width values are used to specify * the number of LUT entries and the first value mapped, otherwise the full pixel range * is used. The output range of the LUT is always 16 bit (data is stored as OW). * This method stores a VOI lookup table in the presentation state and activates it. * The LUT is copied to the presentation state. * If the method returns an error code, an old LUT is left unchanged. * The applicability of the VOI LUT is controlled by the applicability parameter. * @param gammaValue gamma value used to create the VOI LUT data * @param applicability defines the applicability of the new VOI transform. * @return EC_Normal if successful, an error code otherwise. */ public native int setGammaVOILUT(double gammaValue, int applicability); /** * Gets the number of overlays that are currently activated * on the given graphic layer. * @param layer index of the graphic layer, must be < getNumberOfGraphicLayers() * @return number of active overlays */ public native int getNumberOfActiveOverlays(int layer); /** * Gets the repeating group number of the given activated overlay. * @param layer index of the graphic layer, must be < getNumberOfGraphicLayers() * @param idx index of the overlay, must be < getNumberOfActiveOverlays(). * @return repeating group number if found, 0 otherwise. */ public native int getActiveOverlayGroup(int layer, int idx); /** * Gets the overlay label of the given activated overlay. * @param layer index of the graphic layer, must be < getNumberOfGraphicLayers() * @param idx index of the overlay, must be < getNumberOfActiveOverlays(). * @return label string if it exists, NULL otherwise. */ public native String getActiveOverlayLabel(int layer, int idx); /** * Gets the overlay description of the given activated overlay. * @param layer index of the graphic layer, must be < getNumberOfGraphicLayers() * @param idx index of the overlay, must be < getNumberOfActiveOverlays(). * @return description string if it exists, NULL otherwise. */ public native String getActiveOverlayDescription(int layer, int idx); /** * Checks whether the given activated overlay is a ROI * (region of interest) overlay. * @param layer index of the graphic layer, must be < getNumberOfGraphicLayers() * @param idx index of the overlay, must be < getNumberOfActiveOverlays(). * @return true if overlay exists and is ROI, false otherwise. */ public native boolean activeOverlayIsROI(int layer, int idx); /** * Gets one overlay bitmap. * This method may only be called if has beed called before * for the current presentation state settings. * The parameter is an object from class jDVPrStateParam_GetOverlayData. * It must be created and set with the IN-params before passing to this * method! OUT-params will be set by this method. * @param od.layer index of the graphic layer on which this overlay is * activated, must be < getNumberOfGraphicLayers(). * @param od.idx index of the overlay activation on the given layer, * must be < getNumberOfActiveOverlays(layer). * @param od.overlayData upon success a pointer to the overlay plane is passed back * in this parameter. The overlay plane is organized as one byte per pixel. * The byte values are already transformed from pvalues to DDLs. * @param od.width upon success the width of the overlay bitmap in pixels is returned in this parameter. * @param od.height upon success the height of the overlay bitmap in pixels is returned in this parameter. * @param od.left upon success the horizontal position of the overlay relative to the image * is returned. 0 means that the overlay is left aligned with the image. * Since the overlay is cropped at the borders of the image, values < 0 are impossible. * @param od.top upon success the vertical position of the overlay relative to the image * is returned. * @param od.isROI returns OFTrue if the overlay is ROI, OFFalse if the overlay is Graphic. * @param od.frame frame number of the image. Since overlays can differ for different image frames, * the image frame also selects the overlays. Default: first frame. * @return EC_Normal upon success, an error code otherwise (from jE_Condition). */ public native int getOverlayData(jDVPrStateParam_GetOverlayData od); /** * Gets the number of overlays which are embedded in the * image currently attached to the presentation state. Overlays in the image are counted only * if they are not shadowed by overlays that are embedded in the presentation state * and use the same repeating group number. * @return number of overlays in attached image */ public native int getNumberOfOverlaysInImage(); /** * Gets the repeating group number of the given overlay in the attached image. * @param idx index of the overlay, must be < getNumberOfOverlaysInImage(). * @return repeating group number if found, 0 otherwise. */ public native int getOverlayInImageGroup(int idx); /** * Gets the overlay label of the given overlay in the attached image. * @param idx index of the overlay, must be < getNumberOfOverlaysInImage(). * @return label string if it exists, NULL otherwise. */ public native String getOverlayInImageLabel(int idx); /** * Gets the overlay description of the given overlay in the attached image. * @param idx index of the overlay, must be < getNumberOfOverlaysInImage(). * @return description string if it exists, NULL otherwise. */ public native String getOverlayInImageDescription(int idx); /** * Gets the index of the activation layer on which the given * overlay from the attached image is activated. * @param idx index of the overlay, must be < getNumberOfOverlaysInImage(). * @return layer index (which is < getNumberOfGraphicLayers()) if overlay exists * and is activated, (-1) otherwise. */ public native int getOverlayInImageActivationLayer(int idx); /** * Checks whether the given overlay in the attached image is a ROI * (region of interest) overlay. * @param idx index of the overlay, must be < getNumberOfOverlaysInImage(). * @return true if overlay exists and is ROI, false otherwise. */ public native boolean overlayInImageIsROI(int idx); /** * Gets the number of overlays which are embedded in the * presentation state. * @return number of overlays in presentation state */ public native int getNumberOfOverlaysInPresentationState(); /** * Gets the repeating group number of the given overlay in the presentation state. * @param idx index of the overlay, must be < getNumberOfOverlaysInPresentationState(). * @return repeating group number if found, 0 otherwise. */ public native int getOverlayInPresentationStateGroup(int idx); /** * Gets the overlay label of the given overlay in the presentation state. * @param idx index of the overlay, must be < getNumberOfOverlaysInPresentationState(). * @return label string if it exists, NULL otherwise. */ public native String getOverlayInPresentationStateLabel(int idx); /** * Gets the overlay description of the given overlay in the presentation state. * @param idx index of the overlay, must be < getNumberOfOverlaysInPresentationState(). * @return description string if it exists, NULL otherwise. */ public native String getOverlayInPresentationStateDescription(int idx); /** * Gets the index of the activation layer on which the given * overlay from the presentation state is activated. If an overlay is used * as a bitmap shutter, it is reported as being not activated by this method. * @param idx index of the overlay, must be < getNumberOfOverlaysInPresentationState(). * @return layer index (which is < getNumberOfGraphicLayers()) if overlay exists * and is activated, DVPS_IDX_NONE otherwise. */ public native int getOverlayInPresentationStateActivationLayer(int idx); /** * Checks if the given overlay in the presentation state * is currently activated as a bitmap shutter. * @param idx index of the overlay, must be < getNumberOfOverlaysInPresentationState(). * @return true if overlay exists and is activated as bitmap shutter, false otherwise. */ public native boolean overlayIsBitmapShutter(int idx); /** * Checks whether the given overlay in the presentation state is a ROI * (region of interest) overlay. * @param idx index of the overlay, must be < getNumberOfOverlaysInPresentationState(). * @return true if overlay exists and is ROI, false otherwise. */ public native boolean overlayInPresentationStateIsROI(int idx); /** * Removes an overlay from the presentation state. * If the overlay is activated, the activation is also removed. * Since overlays in the presentation state can shadow overlays in the attached image, * execution of this method may change the number of overlays reported in the attached image. * @param idx index of the overlay, must be < getNumberOfOverlaysInPresentationState(). * @return EC_Normal upon success, an error code otherwise (from jE_Condition). */ public native int removeOverlayFromPresentationState(int idx); /** * Changes the repeating group used for an overlay in the presentation state. * Since overlays in the presentation state can shadow overlays in the attached image, * execution of this method may change the number of overlays reported in the attached image. * @param idx index of the overlay, must be < getNumberOfOverlaysInPresentationState(). * @param newGroup new repeating group number 0x6000-0x601F (even). If this optional parameter is omitted, * the method attemps to automatically determine a new group number so that no overlay in the * attached image is shadowed any more. If this is impossible, the method fails and leaves * the overlay repeating group unchanged. * @return EC_Normal upon success, an error code otherwise (from jE_Condition). */ public native int changeOverlayGroupInPresentationState(int idx, int newGroup); /** * Checks if an overlay from the presentation state is suitable * for use as a bitmap shutter. An overlay is suitable if it is a graphic overlay * with the same size as the attached image and with the origin 1\1. * This method does not check wether the overlay is already activated as overlay * or bitmap shutter. * @param idx index of the overlay, must be < getNumberOfOverlaysInPresentationState(). * @return true if overlay can be used as display shutter. */ public native boolean overlayIsSuitableAsBitmapShutter(int idx); /** * Activates the given overlay from the attached image * on the given graphic layer. * If the overlay is already activated (i.e. * getOverlayInImageActivationLayer(idx) != DVPS_IDX_NONE) this method fails. * @param layer index of the graphic layer, must be < getNumberOfGraphicLayers() * @param idx index of the overlay, must be < getNumberOfOverlaysInImage(). * @return EC_Normal upon success, an error code otherwise (from jE_Condition). */ public native int activateOverlayInImage(int layer, int idx); /** * Activates the given overlay from the presentation state * on the given graphic layer. * If the overlay is already activated or used as a bitmap overlay (i.e. * getOverlayInPresentationStateActivationLayer(idx) != DVPS_IDX_NONE or * overlayIsBitmapShutter(idx) == OFTrue) this method fails. * @param layer index of the graphic layer, must be < getNumberOfGraphicLayers() * @param idx index of the overlay, must be < getNumberOfOverlaysInPresentationState(). * @return EC_Normal upon success, an error code otherwise (from jE_Condition). */ public native int activateOverlayInPresentationState(int layer, int idx); /** * Activates an overlay as bitmap shutter. * The overlay must not be activated on a graphic layer (i.e. * getOverlayInPresentationStateActivationLayer(idx) != DVPS_IDX_NONE, * otherwise this method fails. * @param idx index of the overlay, must be < getNumberOfOverlaysInPresentationState(). * @return EC_Normal upon success, an error code otherwise (from jE_Condition). */ public native int activateOverlayAsBitmapShutter(int idx); /** * Removes activation for an overlay which may be * embedded in the attached image or part of the presentation state. * @param layer index of the graphic layer on which this overlay is * activated, must be < getNumberOfGraphicLayers(). * @param idx index of the overlay activation on the given layer, * must be < getNumberOfActiveOverlays(layer). * @return EC_Normal upon success, an error code otherwise (from jE_Condition). */ public native int deactivateOverlay(int layer, int idx); /** * Moves the overlay activation with the given index on the given * layer to a different layer. * @param old_layer index of the graphic layer on which the curve is, * must be < getNumberOfGraphicLayers() * @param idx index of the overlay activation, must be < getNumberOfActiveOverlays(layer) * @param new_layer index of the graphic layer to which the curve is moved, * must be < getNumberOfGraphicLayers() * @return EC_Normal upon success, an error code otherwise (from jE_Condition). */ public native int moveOverlay(int old_layer, int idx, int new_layer); /** * Gets smallest and biggest possible pixel value in the attached image. * These values are defined as the smallest and biggest number that * could possibly be contained in the image after application of the Modality transform, * but before any VOI, Presentation or Barten transform. * This method may only be called when an image is attached to the * presentation state. * @param minValue upon success, the smallest value is returned in this parameter. * @param maxValue upon success, the biggest value is returned in this parameter. * @return EC_Normal upon success, an error code otherwise (from jE_Condition). */ public native int getImageMinMaxPixelRange(jDoubleByRef minValue, jDoubleByRef maxValue); /** * Gets smallest and biggest occuring pixel value in the attached image. * These values are defined as the smallest and biggest number that * are actually contained in the image after application of the Modality transform, * but before any VOI, Presentation or Barten transform. * This method may only be called when an image is attached to the * presentation state. * @param minValue upon success, the smallest value is returned in this parameter. * @param maxValue upon success, the biggest value is returned in this parameter. * @return EC_Normal upon success, an error code otherwise (from jE_Condition). */ public native int getImageMinMaxPixelValue(jDoubleByRef minValue, jDoubleByRef maxValue); /** * Gets the width of the attached image. * The rotation status of the presentation state is not taken * into account, i.e. the width of an unrotated image is returned. * This method may only be called when an image is attached to the * presentation state. Param width must be created before passing to * this method. * @param width upon success, the image width (pixels) is returned in this parameter. * @return EC_Normal upon success, an error code otherwise (from jE_Condition). */ public native int getImageWidth(jIntByRef width); /** * Gets the height of the attached image. * The rotation status of the presentation state is not taken * into account, i.e. the height of an unrotated image is returned. * This method may only be called when an image is attached to the * presentation state. Param height must be created before passing to * this method. * @param height upon success, the image height (pixels) is returned in this parameter. * @return EC_Normal upon success, an error code otherwise */ public native int getImageHeight(jIntByRef height); /** * Gets the number of image references in all series managed by this list. * @return number of image references */ public native int numberOfImageReferences(); /** * Gets an image reference with the given index. * @param idx index, must be < numberOfImageReferences(). * @param param.studyUID the Study Instance UID is returned in this string * @param param.seriesUID the Series Instance UID is returned in this string * @param param.sopclassUID the SOP Class UID is returned in this string * @param param.instanceUID the SOP Instance UID is returned in this string * @param param.frames the list of frames is returned in this string * @param param.aetitle the aetitle * @param param.filesetID the fileset ID * @param param.filesetUID the fileset UID * @return EC_Normal if successful, an error code otherwise (from jE_Condition). */ public native int getImageReference(int idx, jDVPrStateParam_GetImageReference param); /** * Exchanges the layer order of the two graphic layers with * the given indices. This method does not sort or renumber * the graphic layers. * @param idx1 index of the first graphic layer, must be < getNumberOfGraphicLayers() * @param idx2 index of the second graphic layer, must be < getNumberOfGraphicLayers() * @return EC_Normal upon success, an error code otherwise (from jE_Confition). */ public native int exchangeGraphicLayers(int idx1, int idx2); /** * Converts a 16-bit P-Value to an 8-bit DDL value for on-sceen display. * If a display function is set and enabled (see setDisplayTransform()), * the DDL is corrected for the nonlinearity of the display, otherwise * a simple linear mapping is performed. * @param pvalue P-Value 0..0xFFFF * @param bits bits used(8 or 12). Default is 8. * @return display driving level (DDL), 0..0xFF */ public native short convertPValueToDDL (int pvalue, int bits); /** * Generates a new SOP Instance UID which is used when writing the * Presentation State to file. * @return new SOP Instance UID if successfully set */ public native String createInstanceUID(); /** * Same as method above apart from the fact that the storage area is handled * externally. * @param pixelData pointer to storage area where the pixel data is copied to. * The storage area must be allocated and deleted from the calling method. * @param size specifies size of the storage area in bytes. * @return EC_Normal upon success, an error code otherwise (from jE_Condition). */ public native int getPixelData(byte[] pixelData, long size); /** * Inverts image by changing presentation state LUT or presentation state LUT * shape. Pixel data has to be re-get after this transformation. * @return EC_Normal upon success, an error code otherwise (from jE_Condition). */ public native int invertImage(); /** * Checks whether image is inverse (shape, plut or mono1). * @return OFTrue if image is inverse, OFFalse otherwise. */ public native boolean isInverse(); /** * Gets number of bytes used for the print bitmap. * (depends on width, height and depth) * @return number of bytes used for the print bitmap */ public native long getPrintBitmapSize(); /** * Sets the minimum print bitmap width and height. * Smaller images are scaled up by an appropriate integer factor. Both maximum * values need to be twice greater than the maximum of the minimum values. * @param width minimum width of print bitmap (in pixels) * @param height minimum height of print bitmap (in pixels) * @return EC_Normal upon success, an error code otherwise (from jE_Condition) */ public native int setMinimumPrintBitmapWidthHeight(long width, long height); /** * Sets the maximum print bitmap width and height. * Larger images are scaled down by an appropriate integer factor. Both maximum * values need to be twice greater than the maximum of the minimum values. * @param width maximum width of print bitmap (in pixels) * @param height maximum height of print bitmap (in pixels) * @return EC_Normal upon success, an error code otherwise (from jE_Condition) */ public native int setMaximumPrintBitmapWidthHeight(long width, long height); /** * Gets width and height of print bitmap. * Bitmap size depends on implicit scaling, a heuristic is used for very small images * The return values depend on the current minimum/maximum print bitmaps width/height values! * @param width upon success, the image width (in pixels) is returned in this parameter * @param height upon success, the image height (in pixels) is returned in this parameter * @return EC_Normal upon success, an error code otherwise (from jE_Condition) */ public native int getPrintBitmapWidthHeight(jIntByRef width, jIntByRef height); /** * Gets width of print bitmap. * Bitmap size depends on implicit scaling, a heuristic is used for very small images. * The return value depends on the current minimum/maximum print bitmaps width/height values! * @param width upon success, the image width (in pixels) is returned in this parameter * @return EC_Normal upon success, an error code otherwise (from jE_Condition) */ public native int getPrintBitmapWidth(jIntByRef width); /** * Gets height of print bitmap. * bitmap size depends on implicit scaling, a heuristic is used for very small images * The return value depends on the current minimum/maximum print bitmaps width/height values! * @param height upon success, the image height (in pixels) is returned in this parameter * @return EC_Normal upon success, an error code otherwise (from jE_Condition) */ public native int getPrintBitmapHeight(jIntByRef height); /** * Gets the presentation pixel aspect ratio for the print bitmap. * Pixel aspect ratio is defined here as the width of a pixel divided * by the height of a pixel (x/y). * @return pixel aspect ratio */ public native double getPrintBitmapPixelAspectRatio(); /** * Gets requested image size for print bitmap. * If the presentation state mode is DVPSD_trueSize, this method computes * the true physical width (in mm) of the print image (under consideration of the * rotation status) and writes it to the requestedImageSize string. * @param requestedImageSize requested image size is written to this parameter upon * successful return. Otherwise string is empty upon return. * @return EC_Normal upon success, an error code otherwise(from jE_Condition) */ public native int getPrintBitmapRequestedImageSize(jStringByRef requestedImageSize); /** * Writes the bitmap data into the given buffer. * The bitmap has the format: 12 bits stored and 16 bits allocated. This method is used * to create the preformatted bitmap where the annotations are later burned in. * Implicit scaling is performed if the bitmap is too small (see minimum bitmap size). * The storage area must be allocated and deleted from the calling method. * @param bitmap pointer to storage area where the pixel data is copied to. * @param size specifies size of the storage area in bytes * @return EC_Normal upon success, an error code otherwise(from jE_Condition) */ public native int getPrintBitmap(short[] bitmap, long size); /** * Gets the modality of the attached image. * @return modality string if it exists, NULL or empty string otherwise. */ public native String getCurrentImageModality(); /** * Resets the Presentation LUT to the default LUT shape * which is DVPSP_identity for MONOCHROME2 images and DVPSP_inverse for MONOCHROME1. * DVPSP_table can only be used if the presentation state * @return EC_Normal if successful, an error code otherwise. */ public native int setDefaultPresentationLUTShape(); /** * Creates a new preview image based on the current image and pstate. * The maximum size of this image is specified by the two parameters maxWidth and maxHeight. * The actual size should be determined using one of the following appropriate methods (e.g. * getPreviewImageWidthHeight) since the original pixel aspect ratio is alsways considered. * The preview image includes all grayscale and spatial transformations performed on the * current image so far. The method renderPixelData also renders the preview image (if existing). * Therefore the preview image is always held consistent with the current image. * Overlays, bitmapped shutters and any other annotations are not rendered into the preview image. * @param width the maximum width used to create the preview image * @param height the maximum height used to create the preview image * @param clipMode specifies whether to clip the preview image to the displayed area (not implemented!) * @return EC_Normal upon success, an error code otherwise */ public native int createPreviewImage(int maxWidth, int maxHeight, boolean clipMode); /** * Deletes and disables the current preview image. */ public native void deletePreviewImage(); /** * Gets number of bytes used for the preview image bitmap. * (depends on width and height) * @return number of bytes used for the preview image bitmap */ public native long getPreviewImageSize(); /** * Gets current width and height of the preview image. * @param width upon success, the image width (in pixels) is returned in this parameter * @param height upon success, the image height (in pixels) is returned in this parameter * @return EC_Normal upon success, an error code otherwise */ public native int getPreviewImageWidthHeight(jIntByRef width, jIntByRef height); /** * Gets current width of the preview image. * @param width upon success, the image width (in pixels) is returned in this parameter * @return EC_Normal upon success, an error code otherwise */ public native int getPreviewImageWidth(jIntByRef width); /** * Gets current height of the preview image. * @param height upon success, the image height (in pixels) is returned in this parameter * @return EC_Normal upon success, an error code otherwise */ public native int getPreviewImageHeight(jIntByRef height); /** * Writes the bitmap data of the preview image into the given buffer. * The storage area must be allocated and deleted from the calling method. * @param bitmap pointer to storage area where the pixel data is copied to * @param size specifies size of the storage area in bytes * @return EC_Normal upon success, an error code otherwise */ public native int getPreviewImageBitmap(byte[] bitmap, long size); /** * Gets the currently selected display transform. * Display transform will only be performed if switched on _and_ * a valid monitor characteristics description exists. * Default after creation of a presentation state is "on". * @return current display transform if on, DVPSD_none if off (of class jDVPSDisplayTransform). */ public native int getDisplayTransform(); /** * Activates or deactivates display correction. * Display transform will only be performed if switched on * _and_ a valid display function object exists. * @param transform display transform to be set, DVPSD_none to switch off.(of class jDVPSDisplayTransform). */ public native void setDisplayTransform(int transform); // ------------------------------------------------------------- // -- Method for transformations of the image // // The following methods are not part of the relating c++-class DVPresentationState !!! // /** * Gets the pixel data and perfom zooming and scaling with all existing layers. * A part of the original data is chosen by point TLHC, a zoom factor and a scaling for * x and y. The output size is defined by the array size passed to this method. * @return true on success, false otherwise. */ public native boolean getScreenData (jDVPrStateParam_GetScreenData info); } /* * CVS Log * $Log: jDVPresentationState.java,v $ * Revision 1.1.1.1 2001/06/06 10:32:30 kleber * Init commit for DICOMscope 3.5 * Create new CVS * */ dicomscope-3.6.0/tkgui/J2Ci/jDVPrStateParam_GetImageReference.java0000644000265600020320000000450511262371100024033 0ustar tilleaadmin/* * * Copyright (C) 1999-2003, Institute for MicroTherapy * * This software and supporting documentation were developed by * * University of Witten/Herdecke * Department of Radiology and MicroTherapy * Institute for MicroTherapy * Medical computer science * * Universitaetsstrasse 142 * 44799 Bochum, Germany * * http://www.microtherapy.de/go/cs * mailto:computer.science@microtherapy.de * * THIS SOFTWARE IS MADE AVAILABLE, AS IS, AND THE INSTITUTE MAKES NO * WARRANTY REGARDING THE SOFTWARE, ITS PERFORMANCE, ITS MERCHANTABILITY * OR FITNESS FOR ANY PARTICULAR USE, FREEDOM FROM ANY COMPUTER DISEASES * OR ITS CONFORMITY TO ANY SPECIFICATION. THE ENTIRE RISK AS TO QUALITY * AND PERFORMANCE OF THE SOFTWARE IS WITH THE USER. * * Author : $Author: kleber $ * Last update : $Date: 2001/06/06 10:32:30 $ * Revision : $Revision: 1.1.1.1 $ * State: $State: Exp $ */ package J2Ci; /** * The class jDVPrStateParam_GetImageReference is responsible for parameters * passed to the method getImageReference() of class DVPresentationState. This method * has some parameters (primitive types and array types) passed by reference (changed in this method), * and what Java can't manage. So an extra class had to be constructed - this class. * Create an object of this class before passing it to that method! * * @author Andreas Schröter */ public class jDVPrStateParam_GetImageReference { /** * The Study UID */ public String studyUID = null; /** * Series UID */ public String seriesUID = null; /** * SOP Class UID */ public String sopclassUID = null; /** * Instance UID */ public String instanceUID = null; /** * List of Frames */ public String frames = null; /** * AETitle */ public String aetitle = null; /** * the series storageMediaFileSetID is returned in this string */ public String filesetID = null; /** * the series storageMediaFileSetUID is returned in this string */ public String filesetUID = null; } /* * CVS Log * $Log: jDVPrStateParam_GetImageReference.java,v $ * Revision 1.1.1.1 2001/06/06 10:32:30 kleber * Init commit for DICOMscope 3.5 * Create new CVS * */ dicomscope-3.6.0/tkgui/J2Ci/jDVPrStateParam_GetOverlayData.java0000644000265600020320000000511511262371100023403 0ustar tilleaadmin/* * * Copyright (C) 1999-2003, Institute for MicroTherapy * * This software and supporting documentation were developed by * * University of Witten/Herdecke * Department of Radiology and MicroTherapy * Institute for MicroTherapy * Medical computer science * * Universitaetsstrasse 142 * 44799 Bochum, Germany * * http://www.microtherapy.de/go/cs * mailto:computer.science@microtherapy.de * * THIS SOFTWARE IS MADE AVAILABLE, AS IS, AND THE INSTITUTE MAKES NO * WARRANTY REGARDING THE SOFTWARE, ITS PERFORMANCE, ITS MERCHANTABILITY * OR FITNESS FOR ANY PARTICULAR USE, FREEDOM FROM ANY COMPUTER DISEASES * OR ITS CONFORMITY TO ANY SPECIFICATION. THE ENTIRE RISK AS TO QUALITY * AND PERFORMANCE OF THE SOFTWARE IS WITH THE USER. * * Author : $Author: kleber $ * Last update : $Date: 2001/06/06 10:32:30 $ * Revision : $Revision: 1.1.1.1 $ * State: $State: Exp $ */ package J2Ci; /** * The class jDVPrStateParam_GetOverlayData is responsible for parameters * passed to the method getOverlayData() of class DVPresentationState. This method * has some parameters (primitive types and array types) passed by reference (changed in this method), * and what Java can't manage. So an extra class had to be constructed - this class. * Create an object of this class before passing it to that method! * IN and OUT specifies the type of param (input param or output param). * * @author Andreas Schröter */ public class jDVPrStateParam_GetOverlayData { /** * layer : IN */ public int layer; /** * index : IN */ public int idx; /** * Pixel Data in the case of 8 bits of data * overlayData : OUT */ public byte[] overlayData = null; /** * Pixel Data in the case of 12 bits of data * overlayData : OUT */ public short[] overlayData12 = null; /** * width : OUT */ public int width = 0; /** * height : OUT */ public int height = 0; /** * left : OUT */ public int left = 0; /** * top : OUT */ public int top = 0; /** * is ROI : OUT */ public boolean isROI; /** * transp : OUT */ public short foreground = 0; /** * used bits: IN * Defautlt = 8, possible values : 8 or 12 */ public int bits = 8; } /* * CVS Log * $Log: jDVPrStateParam_GetOverlayData.java,v $ * Revision 1.1.1.1 2001/06/06 10:32:30 kleber * Init commit for DICOMscope 3.5 * Create new CVS * */ dicomscope-3.6.0/tkgui/J2Ci/jDVPrStateParam_GetPixelData.java0000644000265600020320000000347111262371100023046 0ustar tilleaadmin/* * * Copyright (C) 1999-2003, Institute for MicroTherapy * * This software and supporting documentation were developed by * * University of Witten/Herdecke * Department of Radiology and MicroTherapy * Institute for MicroTherapy * Medical computer science * * Universitaetsstrasse 142 * 44799 Bochum, Germany * * http://www.microtherapy.de/go/cs * mailto:computer.science@microtherapy.de * * THIS SOFTWARE IS MADE AVAILABLE, AS IS, AND THE INSTITUTE MAKES NO * WARRANTY REGARDING THE SOFTWARE, ITS PERFORMANCE, ITS MERCHANTABILITY * OR FITNESS FOR ANY PARTICULAR USE, FREEDOM FROM ANY COMPUTER DISEASES * OR ITS CONFORMITY TO ANY SPECIFICATION. THE ENTIRE RISK AS TO QUALITY * AND PERFORMANCE OF THE SOFTWARE IS WITH THE USER. * * Author : $Author: kleber $ * Last update : $Date: 2001/06/06 10:32:30 $ * Revision : $Revision: 1.1.1.1 $ * State: $State: Exp $ */ package J2Ci; /** * The class jDVPrStateParam_GetPixelData is responsible for parameters * passed to the method getPixelData() of class DVPresentationState. This method * has three parameters (primitive types) passed by reference (changed in this method), * and what Java can't manage. So an extra class had to be constructed - this class. * Create an object of this class before passing it to that method! * * @author Andreas Schröter */ public class jDVPrStateParam_GetPixelData { /** * Pixeldata as byte-Array. */ public byte[] pixelData = null; /** * Width of image. */ public long width = -1; /** * Height of image. */ public long height = -1; } /* * CVS Log * $Log: jDVPrStateParam_GetPixelData.java,v $ * Revision 1.1.1.1 2001/06/06 10:32:30 kleber * Init commit for DICOMscope 3.5 * Create new CVS * */ dicomscope-3.6.0/tkgui/J2Ci/jDVPrStateParam_GetScreenData.java0000644000265600020320000000657411262371100023213 0ustar tilleaadmin/* * * Copyright (C) 1999-2003, Institute for MicroTherapy * * This software and supporting documentation were developed by * * University of Witten/Herdecke * Department of Radiology and MicroTherapy * Institute for MicroTherapy * Medical computer science * * Universitaetsstrasse 142 * 44799 Bochum, Germany * * http://www.microtherapy.de/go/cs * mailto:computer.science@microtherapy.de * * THIS SOFTWARE IS MADE AVAILABLE, AS IS, AND THE INSTITUTE MAKES NO * WARRANTY REGARDING THE SOFTWARE, ITS PERFORMANCE, ITS MERCHANTABILITY * OR FITNESS FOR ANY PARTICULAR USE, FREEDOM FROM ANY COMPUTER DISEASES * OR ITS CONFORMITY TO ANY SPECIFICATION. THE ENTIRE RISK AS TO QUALITY * AND PERFORMANCE OF THE SOFTWARE IS WITH THE USER. * * Author : $Author: kleber $ * Last update : $Date: 2001/06/06 10:32:30 $ * Revision : $Revision: 1.1.1.1 $ * State: $State: Exp $ */ package J2Ci; /** * The class jDVPrStateParam_GetScreenData is responsible for parameters * passed to the method getScreenData(). * * @author Andreas Schröter */ public class jDVPrStateParam_GetScreenData { /** * IN/OUT: Pixeldata as byte-Array. Pixel output will be put in this array. * The array must be created before passing an object of this class to that * method getScreenData(). */ public byte[] pixelArray = null; /** * IN: Width of array / window width. */ public int width = 0; /** * IN: Height of array / window height. */ public int height = 0; /** * IN: Offset for X to fill array. From this point the array will be filled. All before * this point will be set to black. MUST be positive. */ public int offsetX = 0; /** * IN: Offset for Y to fill array. From this point the array will be filled. All before * this point will be set to black. MUST be positive. */ public int offsetY = 0; // ------------------------------------------- /** * IN: Top left hand corner, x-coordinate of image. */ public int TLHC_x = 0; /** * IN: Top left hand corner, y-coordinate. */ public int TLHC_y = 0; /** * OUT: Bottom right hand corner, x-coordinate. This element is set to the coordinate * of the lower right pixel shown in this returned array of the original image data. */ public int BRHC_x = 0; /** * OUT: Bottom right hand corner, y-coordinate. This element is set to the coordinate * of the lower right pixel shown in this returned array of the original image data. */ public int BRHC_y = 0; // -------------------------------------------- /** * IN: Zoom factor. (1.0) means no maximizing or minimizing. The value MUST NOT be 0. */ public double zoomfactor = 1.0; /** * IN: scale factor for x. (1.0) means no maximizing or minimizing. The value MUST NOT be 0. */ public double scale_x = 1.0; /** * IN: scale factor for y. (1.0) means no maximizing or minimizing. The value MUST NOT be 0. */ public double scale_y = 1.0; /** * IN: interpolate pixel for maximizing the image. Set to false if pixels should be doubled. */ public boolean interpolate = true; } /* * CVS Log * $Log: jDVPrStateParam_GetScreenData.java,v $ * Revision 1.1.1.1 2001/06/06 10:32:30 kleber * Init commit for DICOMscope 3.5 * Create new CVS * */ dicomscope-3.6.0/tkgui/J2Ci/jDVPSannotationUnit.java0000644000265600020320000000271111262371100021361 0ustar tilleaadmin/* * * Copyright (C) 1999-2003, Institute for MicroTherapy * * This software and supporting documentation were developed by * * University of Witten/Herdecke * Department of Radiology and MicroTherapy * Institute for MicroTherapy * Medical computer science * * Universitaetsstrasse 142 * 44799 Bochum, Germany * * http://www.microtherapy.de/go/cs * mailto:computer.science@microtherapy.de * * THIS SOFTWARE IS MADE AVAILABLE, AS IS, AND THE INSTITUTE MAKES NO * WARRANTY REGARDING THE SOFTWARE, ITS PERFORMANCE, ITS MERCHANTABILITY * OR FITNESS FOR ANY PARTICULAR USE, FREEDOM FROM ANY COMPUTER DISEASES * OR ITS CONFORMITY TO ANY SPECIFICATION. THE ENTIRE RISK AS TO QUALITY * AND PERFORMANCE OF THE SOFTWARE IS WITH THE USER. * * Author : $Author: kleber $ * Last update : $Date: 2001/06/06 10:32:30 $ * Revision : $Revision: 1.1.1.1 $ * State: $State: Exp $ */ package J2Ci; /** * The class jDVPSannotationUnit represents the C++-enumeration * DVPSannotationUnit. * * @author Andreas Schröter */ public class jDVPSannotationUnit { /** * Pixels. */ public static final int DVPSA_pixels = 0; /** * Fraction of specified display area. */ public static final int DVPSA_display = 1; } /* * CVS Log * $Log: jDVPSannotationUnit.java,v $ * Revision 1.1.1.1 2001/06/06 10:32:30 kleber * Init commit for DICOMscope 3.5 * Create new CVS * */ dicomscope-3.6.0/tkgui/J2Ci/jDVPScharacterSet.java0000644000265600020320000000450411262371100020761 0ustar tilleaadmin/* * * Copyright (C) 1999-2003, Institute for MicroTherapy * * This software and supporting documentation were developed by * * University of Witten/Herdecke * Department of Radiology and MicroTherapy * Institute for MicroTherapy * Medical computer science * * Universitaetsstrasse 142 * 44799 Bochum, Germany * * http://www.microtherapy.de/go/cs * mailto:computer.science@microtherapy.de * * THIS SOFTWARE IS MADE AVAILABLE, AS IS, AND THE INSTITUTE MAKES NO * WARRANTY REGARDING THE SOFTWARE, ITS PERFORMANCE, ITS MERCHANTABILITY * OR FITNESS FOR ANY PARTICULAR USE, FREEDOM FROM ANY COMPUTER DISEASES * OR ITS CONFORMITY TO ANY SPECIFICATION. THE ENTIRE RISK AS TO QUALITY * AND PERFORMANCE OF THE SOFTWARE IS WITH THE USER. * * Author : $Author: kleber $ * Last update : $Date: 2001/06/06 10:32:30 $ * Revision : $Revision: 1.1.1.1 $ * State: $State: Exp $ */ package J2Ci; /** * The class jE_Condition represents the C++-enumeration * E_Condition. * * @author Andreas Schröter */ public class jDVPScharacterSet { /** ISO 646 (ISO-IR 6): ASCII */ public static final int DVPSC_ascii = 0; /** ISO-IR 100: Latin alphabet No. 1 */ public static final int DVPSC_latin1 = 1; /** ISO-IR 101: Latin alphabet No. 2 */ public static final int DVPSC_latin2 = 2; /** ISO-IR 109: Latin alphabet No. 3 */ public static final int DVPSC_latin3 = 3; /** ISO-IR 110: Latin alphabet No. 4 */ public static final int DVPSC_latin4 = 4; /** ISO-IR 148: Latin alphabet No. 5 */ public static final int DVPSC_latin5 = 5; /** ISO-IR 144: Cyrillic */ public static final int DVPSC_cyrillic = 6; /** ISO-IR 127: Arabic */ public static final int DVPSC_arabic = 7; /** ISO-IR 126: Greek */ public static final int DVPSC_greek = 8; /** ISO-IR 138: Hebrew */ public static final int DVPSC_hebrew = 9; /** ISO-IR 13: Japanese (Katakana/Romaji) */ public static final int DVPSC_japanese = 10; /** unrecognized term or code extension */ public static final int DVPSC_other = 11; } /* * CVS Log * $Log: jDVPScharacterSet.java,v $ * Revision 1.1.1.1 2001/06/06 10:32:30 kleber * Init commit for DICOMscope 3.5 * Create new CVS * */ dicomscope-3.6.0/tkgui/J2Ci/jDVPSCurve.java0000644000265600020320000001072511262371100017437 0ustar tilleaadmin/* * * Copyright (C) 1999-2003, Institute for MicroTherapy * * This software and supporting documentation were developed by * * University of Witten/Herdecke * Department of Radiology and MicroTherapy * Institute for MicroTherapy * Medical computer science * * Universitaetsstrasse 142 * 44799 Bochum, Germany * * http://www.microtherapy.de/go/cs * mailto:computer.science@microtherapy.de * * THIS SOFTWARE IS MADE AVAILABLE, AS IS, AND THE INSTITUTE MAKES NO * WARRANTY REGARDING THE SOFTWARE, ITS PERFORMANCE, ITS MERCHANTABILITY * OR FITNESS FOR ANY PARTICULAR USE, FREEDOM FROM ANY COMPUTER DISEASES * OR ITS CONFORMITY TO ANY SPECIFICATION. THE ENTIRE RISK AS TO QUALITY * AND PERFORMANCE OF THE SOFTWARE IS WITH THE USER. * * Author : $Author: kleber $ * Last update : $Date: 2001/06/06 10:32:30 $ * Revision : $Revision: 1.1.1.1 $ * State: $State: Exp $ */ package J2Ci; /** * A jDVPSCurve is the Java-sided class for the C++-Class * DVPSCurve. * * @author Andreas Schröter */ public class jDVPSCurve { /** * Constructor */ protected jDVPSCurve() { createObjOfDVPSCurve (); } /** * Constructor for attaching an existing C++-Object. FOR INTERNAL USE ONLY! * @param attachAdr Address of C++-Object */ public jDVPSCurve (long attachAdr) { cppClassAddress = attachAdr; } /** * Copy-Constructor * @param copy Curve-Object to copy */ public jDVPSCurve (jDVPSCurve copy) { CopyConstructor (copy.cppClassAddress); } private native void CopyConstructor (long fromCppObj); // -------------------------------- Methods for C++-Class Binding /** * Address of C++-Object for access in the DLL. Never change manually!! */ private long cppClassAddress = (long) 0; // never change! /** * Creates a C++-Object of class DVPSCurve and attached it to this * current object. The address of the C++-object will be put into field * cppClassAddress. * * @see J2Ci.jDVPSCurveObject#cppClassAddress */ private native void createObjOfDVPSCurve (); // ----------------------------------- Methods of Class jDVPSCurve /** * Get group number of curve repeating group managed by this object. * @return the lower byte of the curve group */ public native byte getCurveGroup(); /** * Gets the number of points in the curve. * @return number of points */ public native int getNumberOfPoints(); /** * Gets the type of data in the curve (ROI or POLY). * @return type of data in curve (from jDVPSCurveType). */ public native int getTypeOfData(); /** * Gets one point from the curve data. * @param idx index of the curve point, must be < getNumberOfPoints(); * @param x upon success the x value of the point is returned in this parameter. * Must be created before passing to this method! * @param y upon success the y value of the point is returned in this parameter * Must be created before passing to this method! * @return EC_Normal if successful, an error code otherwise (from jE_Condition). */ public native int getPoint(int idx, jDoubleByRef x, jDoubleByRef y); /** * Gets the curve description string if present. * If the description string is absent, this method returns NULL or an empty string. * @return curve description */ public native String getCurveDescription(); /** * Gets the curve label string if present. * If the label string is absent, this method returns NULL or an empty string. * @return curve label */ public native String getCurveLabel(); /** * Gets the curve axis units string for the X dimension if present. * If the string is absent, this method returns NULL or an empty string. * @return curve description */ public native String getCurveAxisUnitsX(); /** * Gets the curve axis units string for the Y dimension if present. * If the string is absent, this method returns NULL or an empty string. * @return curve description */ public native String getCurveAxisUnitsY(); } /* * CVS Log * $Log: jDVPSCurve.java,v $ * Revision 1.1.1.1 2001/06/06 10:32:30 kleber * Init commit for DICOMscope 3.5 * Create new CVS * */ dicomscope-3.6.0/tkgui/J2Ci/jDVPSCurveType.java0000644000265600020320000000274611262371100020305 0ustar tilleaadmin/* * * Copyright (C) 1999-2003, Institute for MicroTherapy * * This software and supporting documentation were developed by * * University of Witten/Herdecke * Department of Radiology and MicroTherapy * Institute for MicroTherapy * Medical computer science * * Universitaetsstrasse 142 * 44799 Bochum, Germany * * http://www.microtherapy.de/go/cs * mailto:computer.science@microtherapy.de * * THIS SOFTWARE IS MADE AVAILABLE, AS IS, AND THE INSTITUTE MAKES NO * WARRANTY REGARDING THE SOFTWARE, ITS PERFORMANCE, ITS MERCHANTABILITY * OR FITNESS FOR ANY PARTICULAR USE, FREEDOM FROM ANY COMPUTER DISEASES * OR ITS CONFORMITY TO ANY SPECIFICATION. THE ENTIRE RISK AS TO QUALITY * AND PERFORMANCE OF THE SOFTWARE IS WITH THE USER. * * Author : $Author: kleber $ * Last update : $Date: 2001/06/06 10:32:30 $ * Revision : $Revision: 1.1.1.1 $ * State: $State: Exp $ */ package J2Ci; /** * The class jDVPSCurveType represents the C++-enumeration * DVPSCurveType. * * @author Andreas Schröter */ public class jDVPSCurveType { /** * region of interest (ROI) - a closed polygonal line */ public static final int DVPSL_roiCurve = 0; /** * polyline - an open polygonal line */ public static final int DVPSL_polylineCurve = 1; } /* * CVS Log * $Log: jDVPSCurveType.java,v $ * Revision 1.1.1.1 2001/06/06 10:32:30 kleber * Init commit for DICOMscope 3.5 * Create new CVS * */ dicomscope-3.6.0/tkgui/J2Ci/jDVPSDecimateCropBehaviour.java0000644000265600020320000000336311262371100022557 0ustar tilleaadmin/* * * Copyright (C) 1999-2003, Institute for MicroTherapy * * This software and supporting documentation were developed by * * University of Witten/Herdecke * Department of Radiology and MicroTherapy * Institute for MicroTherapy * Medical computer science * * Universitaetsstrasse 142 * 44799 Bochum, Germany * * http://www.microtherapy.de/go/cs * mailto:computer.science@microtherapy.de * * THIS SOFTWARE IS MADE AVAILABLE, AS IS, AND THE INSTITUTE MAKES NO * WARRANTY REGARDING THE SOFTWARE, ITS PERFORMANCE, ITS MERCHANTABILITY * OR FITNESS FOR ANY PARTICULAR USE, FREEDOM FROM ANY COMPUTER DISEASES * OR ITS CONFORMITY TO ANY SPECIFICATION. THE ENTIRE RISK AS TO QUALITY * AND PERFORMANCE OF THE SOFTWARE IS WITH THE USER. * * Author : $Author: kleber $ * Last update : $Date: 2001/06/06 10:32:30 $ * Revision : $Revision: 1.1.1.1 $ * State: $State: Exp $ */ package J2Ci; /** * The class jDVPSDecimateCropBehaviour represents the C++-enumeration * DVPSDecimateCropBehaviour. * * @author Andreas Schröter */ public class jDVPSDecimateCropBehaviour { /** * a magnification factor less than one to be applied to the image. */ public static final int DVPSI_decimate = 0; /** * some image rows and/or columns are to be deleted before printing. */ public static final int DVPSI_crop = 1; /** * the SCP shall not crop or decimate */ public static final int DVPSI_fail = 2; /** * printer default */ public static final int DVPSI_default = 3; } /* * CVS Log * $Log: jDVPSDecimateCropBehaviour.java,v $ * Revision 1.1.1.1 2001/06/06 10:32:30 kleber * Init commit for DICOMscope 3.5 * Create new CVS * */ dicomscope-3.6.0/tkgui/J2Ci/jDVPSDisplayTransform.java0000644000265600020320000000342711262371100021655 0ustar tilleaadmin/* * * Copyright (C) 1999-2003, Institute for MicroTherapy * * This software and supporting documentation were developed by * * University of Witten/Herdecke * Department of Radiology and MicroTherapy * Institute for MicroTherapy * Medical computer science * * Universitaetsstrasse 142 * 44799 Bochum, Germany * * http://www.microtherapy.de/go/cs * mailto:computer.science@microtherapy.de * * THIS SOFTWARE IS MADE AVAILABLE, AS IS, AND THE INSTITUTE MAKES NO * WARRANTY REGARDING THE SOFTWARE, ITS PERFORMANCE, ITS MERCHANTABILITY * OR FITNESS FOR ANY PARTICULAR USE, FREEDOM FROM ANY COMPUTER DISEASES * OR ITS CONFORMITY TO ANY SPECIFICATION. THE ENTIRE RISK AS TO QUALITY * AND PERFORMANCE OF THE SOFTWARE IS WITH THE USER. * * Author : $Author: kleber $ * Last update : $Date: 2001/06/06 10:32:30 $ * Revision : $Revision: 1.1.1.1 $ * State: $State: Exp $ */ package J2Ci; /** * The class jDVPSDisplayTransform represents the C++-enumeration * DVPSDisplayTransform. * * @author Andreas Schröter */ public class jDVPSDisplayTransform { /** * first entry */ public static final int DVPSD_first = 0; /** * Grayscale Standard Display Function (defined in DICOM part 14) */ public static final int DVPSD_GSDF=DVPSD_first; /** * CIE Lab */ public static final int DVPSD_CIELAB = 1; /** * no display transform */ public static final int DVPSD_none = 2; /** * number of display transforms */ public static final int DVPSD_max=DVPSD_none; } /* * CVS Log * $Log: jDVPSDisplayTransform.java,v $ * Revision 1.1.1.1 2001/06/06 10:32:30 kleber * Init commit for DICOMscope 3.5 * Create new CVS * */ dicomscope-3.6.0/tkgui/J2Ci/jDVPSFilmOrientation.java0000644000265600020320000000304411262371100021452 0ustar tilleaadmin/* * * Copyright (C) 1999-2003, Institute for MicroTherapy * * This software and supporting documentation were developed by * * University of Witten/Herdecke * Department of Radiology and MicroTherapy * Institute for MicroTherapy * Medical computer science * * Universitaetsstrasse 142 * 44799 Bochum, Germany * * http://www.microtherapy.de/go/cs * mailto:computer.science@microtherapy.de * * THIS SOFTWARE IS MADE AVAILABLE, AS IS, AND THE INSTITUTE MAKES NO * WARRANTY REGARDING THE SOFTWARE, ITS PERFORMANCE, ITS MERCHANTABILITY * OR FITNESS FOR ANY PARTICULAR USE, FREEDOM FROM ANY COMPUTER DISEASES * OR ITS CONFORMITY TO ANY SPECIFICATION. THE ENTIRE RISK AS TO QUALITY * AND PERFORMANCE OF THE SOFTWARE IS WITH THE USER. * * Author : $Author: kleber $ * Last update : $Date: 2001/06/06 10:32:30 $ * Revision : $Revision: 1.1.1.1 $ * State: $State: Exp $ */ package J2Ci; /** * The class jDVPSFilmOrientation represents the C++-enumeration * DVPSFilmOrientation. * * @author Andreas Schröter */ public class jDVPSFilmOrientation { /** * portrait orientation */ public static final int DVPSF_portrait = 0; /** * landscape orientation */ public static final int DVPSF_landscape = 1; /** * printer default */ public static final int DVPSF_default = 2; } /* * CVS Log * $Log: jDVPSFilmOrientation.java,v $ * Revision 1.1.1.1 2001/06/06 10:32:30 kleber * Init commit for DICOMscope 3.5 * Create new CVS * */ dicomscope-3.6.0/tkgui/J2Ci/jDVPSGraphicObject.java0000644000265600020320000001151411262371100021054 0ustar tilleaadmin/* * * Copyright (C) 1999-2003, Institute for MicroTherapy * * This software and supporting documentation were developed by * * University of Witten/Herdecke * Department of Radiology and MicroTherapy * Institute for MicroTherapy * Medical computer science * * Universitaetsstrasse 142 * 44799 Bochum, Germany * * http://www.microtherapy.de/go/cs * mailto:computer.science@microtherapy.de * * THIS SOFTWARE IS MADE AVAILABLE, AS IS, AND THE INSTITUTE MAKES NO * WARRANTY REGARDING THE SOFTWARE, ITS PERFORMANCE, ITS MERCHANTABILITY * OR FITNESS FOR ANY PARTICULAR USE, FREEDOM FROM ANY COMPUTER DISEASES * OR ITS CONFORMITY TO ANY SPECIFICATION. THE ENTIRE RISK AS TO QUALITY * AND PERFORMANCE OF THE SOFTWARE IS WITH THE USER. * * Author : $Author: kleber $ * Last update : $Date: 2001/06/06 10:32:30 $ * Revision : $Revision: 1.1.1.1 $ * State: $State: Exp $ */ package J2Ci; /** * A jDVPSGraphicObject is the Java-sided class for the C++-Class * DVPSGraphicObject. * * @author Andreas Schröter */ public class jDVPSGraphicObject { /** * Constructor */ protected jDVPSGraphicObject() { createObjOfDVPSGraphicObject (); } /** * Constructor for attaching an existing C++-Object. FOR INTERNAL USE ONLY! * @param attachAdr Address of C++-Object */ public jDVPSGraphicObject (long attachAdr) { cppClassAddress = attachAdr; } // -------------------------------- Methods for C++-Class Binding /** * Address of C++-Object for access in the DLL. Never change manually!! */ private long cppClassAddress = (long) 0; // never change! /** * Creates a C++-Object of class DVPSGraphicObject and attached it to this * current object. The address of the C++-object will be put into field * cppClassAddress. * * @see J2Ci.jDVPSGraphicObject#cppClassAddress */ private native void createObjOfDVPSGraphicObject (); // ----------------------------------- Methods of Class jDVPSGraphicObject /** * Copy-Constructor * @param copy DVPSGraphicObject-Object to copy */ public jDVPSGraphicObject (jDVPSGraphicObject copy) { CopyConstructor (copy.cppClassAddress); } private native void CopyConstructor (long fromCppObj); /** * Gets the graphic annotation units. * @return annotation units (from jDVPSannotationUnit). */ public native int getAnnotationUnits(); /** * Gets the number of graphic points. * @return number of graphic points */ public native int getNumberOfPoints(); /** * Gets one point from the graphic data. * @param idx index of the graphic point, must be < getNumberOfPoints(); * @param x upon success the x value of the point is returned in this parameter. * Must be created before passing to this method! * @param y upon success the y value of the point is returned in this parameter * Must be created before passing to this method! * @return EC_Normal if successful, an error code otherwise (from jE_Condition). */ public native int getPoint(int idx, jDoubleByRef x, jDoubleByRef y); /** * Gets the graphic type of this graphic object. * @return graphic type (from jDVPSGraphicType). */ public native int getGraphicType(); /** * Checks if the graphic is filled. * @return true if graphic is filled. */ public native boolean isFilled(); /** * Sets the graphic data for this graphic object. * @param number number of graphic points in parameter "data" * @param data pointer to an array of Float32 values with a size of (at least) * 2*number. The values are copied into the graphic object. * @param unit the graphic annotation units for this data (from jDVPSannotationUnit). * @return EC_Normal if successful, an error code otherwise (from jE_Condition). */ public native int setData(int number, float[] data, int unit); /** * Sets the graphic type for the graphic object * @param gtype the graphic type (from jDVPSGraphicType). * @return EC_Normal if successful, an error code otherwise (from jE_Condition). */ public native int setGraphicType(int gtype); /** * Sets the graphic filled status for the graphic object. * @param isFilled true if graphic is filled, false otherwise. * @return EC_Normal if successful, an error code otherwise (from jE_Condition). */ public native int setFilled(boolean filled); } /* * CVS Log * $Log: jDVPSGraphicObject.java,v $ * Revision 1.1.1.1 2001/06/06 10:32:30 kleber * Init commit for DICOMscope 3.5 * Create new CVS * */ dicomscope-3.6.0/tkgui/J2Ci/jDVPSGraphicType.java0000644000265600020320000000330011262371100020561 0ustar tilleaadmin/* * * Copyright (C) 1999-2003, Institute for MicroTherapy * * This software and supporting documentation were developed by * * University of Witten/Herdecke * Department of Radiology and MicroTherapy * Institute for MicroTherapy * Medical computer science * * Universitaetsstrasse 142 * 44799 Bochum, Germany * * http://www.microtherapy.de/go/cs * mailto:computer.science@microtherapy.de * * THIS SOFTWARE IS MADE AVAILABLE, AS IS, AND THE INSTITUTE MAKES NO * WARRANTY REGARDING THE SOFTWARE, ITS PERFORMANCE, ITS MERCHANTABILITY * OR FITNESS FOR ANY PARTICULAR USE, FREEDOM FROM ANY COMPUTER DISEASES * OR ITS CONFORMITY TO ANY SPECIFICATION. THE ENTIRE RISK AS TO QUALITY * AND PERFORMANCE OF THE SOFTWARE IS WITH THE USER. * * Author : $Author: kleber $ * Last update : $Date: 2001/06/06 10:32:30 $ * Revision : $Revision: 1.1.1.1 $ * State: $State: Exp $ */ package J2Ci; /** * The class jDVPSGraphicType represents the C++-enumeration * DVPSGraphicType. * * @author Andreas Schröter */ public class jDVPSGraphicType { /** * single point */ public static final int DVPST_point = 0; /** * non-interpolated polygonal line */ public static final int DVPST_polyline = 1; /** * interpolated polygonal line */ public static final int DVPST_interpolated = 2; /** * circle */ public static final int DVPST_circle = 3; /** * ellipse */ public static final int DVPST_ellipse = 4; } /* * CVS Log * $Log: jDVPSGraphicType.java,v $ * Revision 1.1.1.1 2001/06/06 10:32:30 kleber * Init commit for DICOMscope 3.5 * Create new CVS * */ dicomscope-3.6.0/tkgui/J2Ci/jDVPSInstanceType.java0000644000265600020320000000363011262371100020756 0ustar tilleaadmin/* * * Copyright (C) 1999-2003, OFFIS and Institute for MicroTherapy * * This software and supporting documentation were developed by * * Kuratorium OFFIS e.V. * Healthcare Information and Communication Systems * Escherweg 2 * D-26121 Oldenburg, Germany * * and * * University of Witten/Herdecke * Department of Radiology and MicroTherapy * Institute for MicroTherapy * Medical computer science * * Universitaetsstrasse 142 * 44799 Bochum, Germany * * http://www.microtherapy.de/go/cs * mailto:computer.science@microtherapy.de * * THIS SOFTWARE IS MADE AVAILABLE, AS IS, AND THE INSTITUTE MAKES NO * WARRANTY REGARDING THE SOFTWARE, ITS PERFORMANCE, ITS MERCHANTABILITY * OR FITNESS FOR ANY PARTICULAR USE, FREEDOM FROM ANY COMPUTER DISEASES * OR ITS CONFORMITY TO ANY SPECIFICATION. THE ENTIRE RISK AS TO QUALITY * AND PERFORMANCE OF THE SOFTWARE IS WITH THE USER. * * Author : $Author: kleber $ * Last update : $Date: 2001/06/06 10:32:30 $ * Revision : $Revision: 1.1.1.1 $ * State: $State: Exp $ */ package J2Ci; /** * The class jDVPSInstanceType represents the C++ enumeration * DVPSInstanceType. * * @author Joerg Riesmeier */ public class jDVPSInstanceType { /* describes the different types of instances stored in the database */ /// image object public static final int DVPSI_image = 0; /// presentation state object public static final int DVPSI_presentationState = 1; /// structured reporting document public static final int DVPSI_structuredReport = 2; /// stored print object public static final int DVPSI_storedPrint = 3; /// hardcopy grayscale object public static final int DVPSI_hardcopyGrayscale = 4; } /* * CVS Log * $Log: jDVPSInstanceType.java,v $ * Revision 1.1.1.1 2001/06/06 10:32:30 kleber * Init commit for DICOMscope 3.5 * Create new CVS * */ dicomscope-3.6.0/tkgui/J2Ci/jDVPSLogMessageLevel.java0000644000265600020320000000340711262371100021370 0ustar tilleaadmin/* * * Copyright (C) 1999-2003, Institute for MicroTherapy * * This software and supporting documentation were developed by * * University of Witten/Herdecke * Department of Radiology and MicroTherapy * Institute for MicroTherapy * Medical computer science * * Universitaetsstrasse 142 * 44799 Bochum, Germany * * http://www.microtherapy.de/go/cs * mailto:computer.science@microtherapy.de * * THIS SOFTWARE IS MADE AVAILABLE, AS IS, AND THE INSTITUTE MAKES NO * WARRANTY REGARDING THE SOFTWARE, ITS PERFORMANCE, ITS MERCHANTABILITY * OR FITNESS FOR ANY PARTICULAR USE, FREEDOM FROM ANY COMPUTER DISEASES * OR ITS CONFORMITY TO ANY SPECIFICATION. THE ENTIRE RISK AS TO QUALITY * AND PERFORMANCE OF THE SOFTWARE IS WITH THE USER. * * Author : $Author: kleber $ * Last update : $Date: 2001/06/06 10:32:30 $ * Revision : $Revision: 1.1.1.1 $ * State: $State: Exp $ */ package J2Ci; /** * The class jDVPSLogMessageLevel represents the C++-enumeration * DVPSLogMessageLevel. * * @author Joerg Riesmeier */ public class jDVPSLogMessageLevel { /** no log messages (only used as a filter) */ public static final int DVPSM_none = 0; /** only error messages */ public static final int DVPSM_error = 1; /** warning messages (includes DVPSM_error) */ public static final int DVPSM_warning = 2; /** informational messages (includes DVPSM_warning) */ public static final int DVPSM_informational = 3; /** debug messages (includes DVPSM_informational) */ public static final int DVPSM_debug = 4; } /* * CVS Log * $Log: jDVPSLogMessageLevel.java,v $ * Revision 1.1.1.1 2001/06/06 10:32:30 kleber * Init commit for DICOMscope 3.5 * Create new CVS * */ dicomscope-3.6.0/tkgui/J2Ci/jDVPSObjectApplicability.java0000644000265600020320000000332311262371100022264 0ustar tilleaadmin/* * * Copyright (C) 1999-2003, Institute for MicroTherapy * * This software and supporting documentation were developed by * * University of Witten/Herdecke * Department of Radiology and MicroTherapy * Institute for MicroTherapy * Medical computer science * * Universitaetsstrasse 142 * 44799 Bochum, Germany * * http://www.microtherapy.de/go/cs * mailto:computer.science@microtherapy.de * * THIS SOFTWARE IS MADE AVAILABLE, AS IS, AND THE INSTITUTE MAKES NO * WARRANTY REGARDING THE SOFTWARE, ITS PERFORMANCE, ITS MERCHANTABILITY * OR FITNESS FOR ANY PARTICULAR USE, FREEDOM FROM ANY COMPUTER DISEASES * OR ITS CONFORMITY TO ANY SPECIFICATION. THE ENTIRE RISK AS TO QUALITY * AND PERFORMANCE OF THE SOFTWARE IS WITH THE USER. * * Author : $Author: kleber $ * Last update : $Date: 2001/06/06 10:32:30 $ * Revision : $Revision: 1.1.1.1 $ * State: $State: Exp $ */ package J2Ci; /** * The class jDVPSObjectApplicability represents the C++-enumeration * DVPSObjectApplicability. * * @author Andreas Schröter */ public class jDVPSObjectApplicability { /** * the object only applies to the current (selected) frame of the current (attached) image */ public static final int DVPSB_currentFrame = 0; /** * the object applies to all frames of the current (attached) image */ public static final int DVPSB_currentImage = 1; /** * the object applies to all frames of all referenced images */ public static final int DVPSB_allImages = 2; } /* * CVS Log * $Log: jDVPSObjectApplicability.java,v $ * Revision 1.1.1.1 2001/06/06 10:32:30 kleber * Init commit for DICOMscope 3.5 * Create new CVS * */ dicomscope-3.6.0/tkgui/J2Ci/jDVPSObjectType.java0000644000265600020320000000326111262371100020420 0ustar tilleaadmin/* * * Copyright (C) 2001-2003, OFFIS and Institute for MicroTherapy * * This software and supporting documentation were developed by * * Kuratorium OFFIS e.V. * Healthcare Information and Communication Systems * Escherweg 2 * D-26121 Oldenburg, Germany * * and * * University of Witten/Herdecke * Department of Radiology and MicroTherapy * Institute for MicroTherapy * Medical computer science * * Universitaetsstrasse 142 * 44799 Bochum, Germany * * http://www.microtherapy.de/go/cs * mailto:computer.science@microtherapy.de * * THIS SOFTWARE IS MADE AVAILABLE, AS IS, AND THE INSTITUTE MAKES NO * WARRANTY REGARDING THE SOFTWARE, ITS PERFORMANCE, ITS MERCHANTABILITY * OR FITNESS FOR ANY PARTICULAR USE, FREEDOM FROM ANY COMPUTER DISEASES * OR ITS CONFORMITY TO ANY SPECIFICATION. THE ENTIRE RISK AS TO QUALITY * AND PERFORMANCE OF THE SOFTWARE IS WITH THE USER. * * Author : $Author: kleber $ * Last update : $Date: 2001/06/06 10:32:30 $ * Revision : $Revision: 1.1.1.1 $ * State: $State: Exp $ */ package J2Ci; /** * The class jDVPSObjectType represents the C++ enumeration * DVPSObjectType. * * @author Joerg Riesmeier */ public class jDVPSObjectType { /** structured report */ public static final int DVPSS_structuredReport = 0; /** image */ public static final int DVPSS_image = 1; /** grayscale softcopy presentation state */ public static final int DVPSS_presentationState = 2; } /* * CVS Log * $Log: jDVPSObjectType.java,v $ * Revision 1.1.1.1 2001/06/06 10:32:30 kleber * Init commit for DICOMscope 3.5 * Create new CVS * * */ dicomscope-3.6.0/tkgui/J2Ci/jDVPSPeerType.java0000644000265600020320000000345611262371100020113 0ustar tilleaadmin/* * * Copyright (C) 1999-2003, Institute for MicroTherapy * * This software and supporting documentation were developed by * * University of Witten/Herdecke * Department of Radiology and MicroTherapy * Institute for MicroTherapy * Medical computer science * * Universitaetsstrasse 142 * 44799 Bochum, Germany * * http://www.microtherapy.de/go/cs * mailto:computer.science@microtherapy.de * * THIS SOFTWARE IS MADE AVAILABLE, AS IS, AND THE INSTITUTE MAKES NO * WARRANTY REGARDING THE SOFTWARE, ITS PERFORMANCE, ITS MERCHANTABILITY * OR FITNESS FOR ANY PARTICULAR USE, FREEDOM FROM ANY COMPUTER DISEASES * OR ITS CONFORMITY TO ANY SPECIFICATION. THE ENTIRE RISK AS TO QUALITY * AND PERFORMANCE OF THE SOFTWARE IS WITH THE USER. * * Author : $Author: kleber $ * Last update : $Date: 2001/06/06 10:32:30 $ * Revision : $Revision: 1.1.1.1 $ * State: $State: Exp $ */ package J2Ci; /** * The class jDVPSPeerType represents the C++-enumeration * DVPSPeerType. * * @author Andreas Schroeter, Joerg Riesmeier */ public class jDVPSPeerType { /** * Storage SCP peer */ public static final int DVPSE_storage = 0; /** * local Storage SCP */ public static final int DVPSE_receiver = 1; /** * remote Print Management SCP */ public static final int DVPSE_printRemote = 2; /** * local Print Management SCP */ public static final int DVPSE_printLocal = 3; /** * local or remote Print Management SCP */ public static final int DVPSE_printAny = 4; /** * any type of peer */ public static final int DVPSE_any = 5; } /* * CVS Log * $Log: jDVPSPeerType.java,v $ * Revision 1.1.1.1 2001/06/06 10:32:30 kleber * Init commit for DICOMscope 3.5 * Create new CVS * */ dicomscope-3.6.0/tkgui/J2Ci/jDVPSPresentationLUTType.java0000644000265600020320000000335411262371100022255 0ustar tilleaadmin/* * * Copyright (C) 1999-2003, Institute for MicroTherapy * * This software and supporting documentation were developed by * * University of Witten/Herdecke * Department of Radiology and MicroTherapy * Institute for MicroTherapy * Medical computer science * * Universitaetsstrasse 142 * 44799 Bochum, Germany * * http://www.microtherapy.de/go/cs * mailto:computer.science@microtherapy.de * * THIS SOFTWARE IS MADE AVAILABLE, AS IS, AND THE INSTITUTE MAKES NO * WARRANTY REGARDING THE SOFTWARE, ITS PERFORMANCE, ITS MERCHANTABILITY * OR FITNESS FOR ANY PARTICULAR USE, FREEDOM FROM ANY COMPUTER DISEASES * OR ITS CONFORMITY TO ANY SPECIFICATION. THE ENTIRE RISK AS TO QUALITY * AND PERFORMANCE OF THE SOFTWARE IS WITH THE USER. * * Author : $Author: kleber $ * Last update : $Date: 2001/06/06 10:32:30 $ * Revision : $Revision: 1.1.1.1 $ * State: $State: Exp $ */ package J2Ci; /** * The class jDVPSPresentationLUTType represents the C++-enumeration * DVPSPresentationLUTType. * * @author Andreas Schroeter, Joerg Riesmeier */ public class jDVPSPresentationLUTType { /** * Presentation LUT Shape with value 'IDENTITY' */ public static final int DVPSP_identity = 0; /** * Presentation LUT Shape with value 'INVERSE' */ public static final int DVPSP_inverse = 1; /** * Presentation LUT look up table */ public static final int DVPSP_table = 2; /** * Presentation LUT Shape with value 'LIN OD' */ public static final int DVPSP_lin_od = 3; } /* * CVS Log * $Log: jDVPSPresentationLUTType.java,v $ * Revision 1.1.1.1 2001/06/06 10:32:30 kleber * Init commit for DICOMscope 3.5 * Create new CVS * */ dicomscope-3.6.0/tkgui/J2Ci/jDVPSPresentationSizeMode.java0000644000265600020320000000325711262371100022470 0ustar tilleaadmin/* * * Copyright (C) 1999-2003, Institute for MicroTherapy * * This software and supporting documentation were developed by * * University of Witten/Herdecke * Department of Radiology and MicroTherapy * Institute for MicroTherapy * Medical computer science * * Universitaetsstrasse 142 * 44799 Bochum, Germany * * http://www.microtherapy.de/go/cs * mailto:computer.science@microtherapy.de * * THIS SOFTWARE IS MADE AVAILABLE, AS IS, AND THE INSTITUTE MAKES NO * WARRANTY REGARDING THE SOFTWARE, ITS PERFORMANCE, ITS MERCHANTABILITY * OR FITNESS FOR ANY PARTICULAR USE, FREEDOM FROM ANY COMPUTER DISEASES * OR ITS CONFORMITY TO ANY SPECIFICATION. THE ENTIRE RISK AS TO QUALITY * AND PERFORMANCE OF THE SOFTWARE IS WITH THE USER. * * Author : $Author: kleber $ * Last update : $Date: 2001/06/06 10:32:30 $ * Revision : $Revision: 1.1.1.1 $ * State: $State: Exp $ */ package J2Ci; /** * The class jDVPSPresentationSizeMode represents the C++-enumeration * DVPSPresentationSizeMode. * * @author Andreas Schröter */ public class jDVPSPresentationSizeMode { /** * the displayed area should be scaled to fill the screen */ public static final int DVPSD_scaleToFit = 0; /** * the displayed area should be scaled to its true physical size */ public static final int DVPSD_trueSize = 1; /** * the displayed area should be scaled to a fixed scaling factor */ public static final int DVPSD_magnify = 2; } /* * CVS Log * $Log: jDVPSPresentationSizeMode.java,v $ * Revision 1.1.1.1 2001/06/06 10:32:30 kleber * Init commit for DICOMscope 3.5 * Create new CVS * */ dicomscope-3.6.0/tkgui/J2Ci/jDVPSPrintPresentationLUTType.java0000644000265600020320000000317211262371100023270 0ustar tilleaadmin/* * * Copyright (C) 1999-2003, Institute for MicroTherapy * * This software and supporting documentation were developed by * * University of Witten/Herdecke * Department of Radiology and MicroTherapy * Institute for MicroTherapy * Medical computer science * * Universitaetsstrasse 142 * 44799 Bochum, Germany * * http://www.microtherapy.de/go/cs * mailto:computer.science@microtherapy.de * * THIS SOFTWARE IS MADE AVAILABLE, AS IS, AND THE INSTITUTE MAKES NO * WARRANTY REGARDING THE SOFTWARE, ITS PERFORMANCE, ITS MERCHANTABILITY * OR FITNESS FOR ANY PARTICULAR USE, FREEDOM FROM ANY COMPUTER DISEASES * OR ITS CONFORMITY TO ANY SPECIFICATION. THE ENTIRE RISK AS TO QUALITY * AND PERFORMANCE OF THE SOFTWARE IS WITH THE USER. * * Author : $Author: kleber $ * Last update : $Date: 2001/06/06 10:32:30 $ * Revision : $Revision: 1.1.1.1 $ * State: $State: Exp $ */ package J2Ci; /** * The class jDVPSPrintPresentationLUTType represents the C++-enumeration * jDVPSPrintPresentationLUTType. * * @author Andreas Schröter */ public class jDVPSPrintPresentationLUTType { /** * Presentation LUT Shape with value 'IDENTITY' */ public static final int DVPSQ_identity = 0; /** * Presentation LUT look up table */ public static final int DVPSQ_table = 1; /** * Presentation LUT SOP Class not used */ public static final int DVPSQ_none = 2; } /* * CVS Log * $Log: jDVPSPrintPresentationLUTType.java,v $ * Revision 1.1.1.1 2001/06/06 10:32:30 kleber * Init commit for DICOMscope 3.5 * Create new CVS * */ dicomscope-3.6.0/tkgui/J2Ci/jDVPSRotationType.java0000644000265600020320000000315611262371100021014 0ustar tilleaadmin/* * * Copyright (C) 1999-2003, Institute for MicroTherapy * * This software and supporting documentation were developed by * * University of Witten/Herdecke * Department of Radiology and MicroTherapy * Institute for MicroTherapy * Medical computer science * * Universitaetsstrasse 142 * 44799 Bochum, Germany * * http://www.microtherapy.de/go/cs * mailto:computer.science@microtherapy.de * * THIS SOFTWARE IS MADE AVAILABLE, AS IS, AND THE INSTITUTE MAKES NO * WARRANTY REGARDING THE SOFTWARE, ITS PERFORMANCE, ITS MERCHANTABILITY * OR FITNESS FOR ANY PARTICULAR USE, FREEDOM FROM ANY COMPUTER DISEASES * OR ITS CONFORMITY TO ANY SPECIFICATION. THE ENTIRE RISK AS TO QUALITY * AND PERFORMANCE OF THE SOFTWARE IS WITH THE USER. * * Author : $Author: kleber $ * Last update : $Date: 2001/06/06 10:32:30 $ * Revision : $Revision: 1.1.1.1 $ * State: $State: Exp $ */ package J2Ci; /** * The class jDVPSRotationType represents the C++-enumeration * DVPSRotationType. * * @author Andreas Schröter */ public class jDVPSRotationType { /** * No rotation */ public static final int DVPSR_0_deg = 0; /** * Rotation of 90 degrees. */ public static final int DVPSR_90_deg = 1; /** * Rotation of 180 degrees. */ public static final int DVPSR_180_deg = 2; /** * Rotation of 270 degrees. */ public static final int DVPSR_270_deg = 3; } /* * CVS Log * $Log: jDVPSRotationType.java,v $ * Revision 1.1.1.1 2001/06/06 10:32:30 kleber * Init commit for DICOMscope 3.5 * Create new CVS * */ dicomscope-3.6.0/tkgui/J2Ci/jDVPSShutterType.java0000644000265600020320000000313011262371100020643 0ustar tilleaadmin/* * * Copyright (C) 1999-2003, Institute for MicroTherapy * * This software and supporting documentation were developed by * * University of Witten/Herdecke * Department of Radiology and MicroTherapy * Institute for MicroTherapy * Medical computer science * * Universitaetsstrasse 142 * 44799 Bochum, Germany * * http://www.microtherapy.de/go/cs * mailto:computer.science@microtherapy.de * * THIS SOFTWARE IS MADE AVAILABLE, AS IS, AND THE INSTITUTE MAKES NO * WARRANTY REGARDING THE SOFTWARE, ITS PERFORMANCE, ITS MERCHANTABILITY * OR FITNESS FOR ANY PARTICULAR USE, FREEDOM FROM ANY COMPUTER DISEASES * OR ITS CONFORMITY TO ANY SPECIFICATION. THE ENTIRE RISK AS TO QUALITY * AND PERFORMANCE OF THE SOFTWARE IS WITH THE USER. * * Author : $Author: kleber $ * Last update : $Date: 2001/06/06 10:32:30 $ * Revision : $Revision: 1.1.1.1 $ * State: $State: Exp $ */ package J2Ci; /** * The class jDVPSShutterType represents the C++-enumeration * DVPSShutterType. * * @author Andreas Schröter */ public class jDVPSShutterType { /** * Box shutter */ public static final int DVPSU_rectangular = 0; /** * Circle shutter */ public static final int DVPSU_circular = 1; /** * Polygonal shutter */ public static final int DVPSU_polygonal = 2; /** * Bitmap shutter */ public static final int DVPSU_bitmap = 3; } /* * CVS Log * $Log: jDVPSShutterType.java,v $ * Revision 1.1.1.1 2001/06/06 10:32:30 kleber * Init commit for DICOMscope 3.5 * Create new CVS * */ dicomscope-3.6.0/tkgui/J2Ci/jDVPSSignatureStatus.java0000644000265600020320000000425411262371100021520 0ustar tilleaadmin/* * * Copyright (C) 2001-2003, OFFIS and Institute for MicroTherapy * * This software and supporting documentation were developed by * * Kuratorium OFFIS e.V. * Healthcare Information and Communication Systems * Escherweg 2 * D-26121 Oldenburg, Germany * * and * * University of Witten/Herdecke * Department of Radiology and MicroTherapy * Institute for MicroTherapy * Medical computer science * * Universitaetsstrasse 142 * 44799 Bochum, Germany * * http://www.microtherapy.de/go/cs * mailto:computer.science@microtherapy.de * * THIS SOFTWARE IS MADE AVAILABLE, AS IS, AND THE INSTITUTE MAKES NO * WARRANTY REGARDING THE SOFTWARE, ITS PERFORMANCE, ITS MERCHANTABILITY * OR FITNESS FOR ANY PARTICULAR USE, FREEDOM FROM ANY COMPUTER DISEASES * OR ITS CONFORMITY TO ANY SPECIFICATION. THE ENTIRE RISK AS TO QUALITY * AND PERFORMANCE OF THE SOFTWARE IS WITH THE USER. * * Author : $Author: kleber $ * Last update : $Date: 2001/06/06 10:32:30 $ * Revision : $Revision: 1.1.1.1 $ * State: $State: Exp $ */ package J2Ci; /** * The class jDVPSSignatureStatus represents the C++ enumeration * DVPSSignatureStatus. * * @author Joerg Riesmeier */ public class jDVPSSignatureStatus { /** no digital signatures are present */ public static final int DVPSW_unsigned = 0; /** one or more digital signatures are present and have been successfully verified */ public static final int DVPSW_signed_OK = 1; /** one or more digital signatures are present, and all of them are valid. * However, at least one of them was created * with a certificate issued by an unknown CA. */ public static final int DVPSW_signed_unknownCA = 2; /** one or more digital signatures are present and at least one of them * could not be successfully verified because it was corrupt or created * with a certificate issued by an unknown CA. */ public static final int DVPSW_signed_corrupt = 3; } /* * CVS Log * $Log: jDVPSSignatureStatus.java,v $ * Revision 1.1.1.1 2001/06/06 10:32:30 kleber * Init commit for DICOMscope 3.5 * Create new CVS * * */ dicomscope-3.6.0/tkgui/J2Ci/jDVPSStoredPrint.java0000644000265600020320000004304611262371100020632 0ustar tilleaadmin/* * * Copyright (C) 1999-2003, Institute for MicroTherapy * * This software and supporting documentation were developed by * * University of Witten/Herdecke * Department of Radiology and MicroTherapy * Institute for MicroTherapy * Medical computer science * * Universitaetsstrasse 142 * 44799 Bochum, Germany * * http://www.microtherapy.de/go/cs * mailto:computer.science@microtherapy.de * * THIS SOFTWARE IS MADE AVAILABLE, AS IS, AND THE INSTITUTE MAKES NO * WARRANTY REGARDING THE SOFTWARE, ITS PERFORMANCE, ITS MERCHANTABILITY * OR FITNESS FOR ANY PARTICULAR USE, FREEDOM FROM ANY COMPUTER DISEASES * OR ITS CONFORMITY TO ANY SPECIFICATION. THE ENTIRE RISK AS TO QUALITY * AND PERFORMANCE OF THE SOFTWARE IS WITH THE USER. * * Author : $Author: kleber $ * Last update : $Date: 2001/06/06 10:32:30 $ * Revision : $Revision: 1.1.1.1 $ * State: $State: Exp $ */ package J2Ci; /** * A jDVPSStoredPrint represents the relating C++-Class DVPSStoredPrint * in Java. * * @author Andreas Schroeter, Joerg Riesmeier */ public class jDVPSStoredPrint { /** * Constructor is disabled !!! */ protected jDVPSStoredPrint() { // emtpy } /** * Constructor for attaching an existing C++-Object. FOR INTERNAL USE ONLY! * @param attachAdr Address of C++-Object */ public jDVPSStoredPrint (long attachAdr) { cppClassAddress = attachAdr; } // -------------------------------- Methods for C++-Class Binding /** * Address of C++-Object for access in the DLL. Never change manually!! */ private long cppClassAddress = (long) 0; // never change! // --------------------------- native Methods ------------------------------ /** * Reset the object to initial state. * After this call, the object is in the same state as after * creation with the default constructor. */ public native void clear(); /** sets the name of the current printer. * This name is identical to the unique entry used in the configuration file. * @return name of the current printer */ public native int setOriginator(String aetitle); /** sets the application entity title of the print SCU. * @return application entity title of the print SCU */ public native int setDestination(String aetitle); /** sets the application entity title of the print SCP. * @return application entity title of the print SCP */ public native int setPrinterName(String name); /** * Sets the image display format to 'STANDARD\columns,rows'. * The caller must make sure that the column and row values are * valid for the selected printer. * @param columns number of columns * @param rows number of rows * @return EC_Normal if successful, an error code otherwise (from jE_Condition). */ public native int setImageDisplayFormat(long columns, long rows); /** * Sets the (optional) film size ID. * @param value new attribute value, may be NULL. * The caller is responsible for making sure * that the value is valid for the selected printer. * @return EC_Normal if successful, an error code otherwise (from jE_Condition). */ public native int setFilmSizeID(String value); /** * Sets the (optional) magnification type. * @param value new attribute value, may be NULL. * The caller is responsible for making sure * that the value is valid for the selected printer. * @return EC_Normal if successful, an error code otherwise (from jE_Condition). */ public native int setMagnificationType(String value); /** * Sets the (optional) smoothing type. * @param value new attribute value, may be NULL. * The caller is responsible for making sure * that the value is valid for the selected printer. * @return EC_Normal if successful, an error code otherwise (from jE_Condition). */ public native int setSmoothingType(String value); /** * Sets the (optional) configuration information. * @param value new attribute value, may be NULL. * The caller is responsible for making sure * that the value is valid for the selected printer. * @return EC_Normal if successful, an error code otherwise (from jE_Condition). */ public native int setConfigurationInformation(String value); /** * Sets the (optional) requested resolution ID. * @param value new attribute value, may be NULL. * The caller is responsible for making sure * that the value is valid for the selected printer. * @return EC_Normal if successful, an error code otherwise (from jE_Condition). */ public native int setResolutionID(String value); /** * Sets the (optional) film orientation. * @param value new enumerated value. The caller is responsible for * making sure that the selected printer supports film orientation * if a non-default value is set (from jDVPSFilmOrientation). * @return EC_Normal if successful, an error code otherwise (from jE_Condition). */ public native int setFilmOrientation(int value); /** * Sets the (optional) trim (printing of borders). * @param value new enumerated value. The caller is responsible for * making sure that the selected printer supports trim * if a non-default value is set (from jDVPSTrimMode) * @return EC_Normal if successful, an error code otherwise (from jE_Condition). */ public native int setTrim(int value); /** * Sets the (optional) requested decimate/crop behaviour * for all image boxes managed by this stored print object. * @param value new enumerated value. The caller is responsible for * making sure that the selected printer supports decimate/crop * if a non-default value is set (from jDVPSDecimateCropBehaviour). * @return EC_Normal if successful, an error code otherwise (from jE_Condition). */ public native int setRequestedDecimateCropBehaviour(int value); /** * Deletes all optional attribute values that might not be * supported by all printers. Film size ID, magnification and smoothing type, * configuration information, requested resolution ID, film orientation, * trim and requested decimate/crop behaviour are reset to default. * @return EC_Normal if successful, an error code otherwise (from jE_Condition). */ public native int newPrinter(); // short cut, delete all optional settings /** gets the the application entity title of the print SCU. * @return application entity title of the print SCP */ public native String getOriginator(); /** gets the the application entity title of the print SCP. * @return application entity title of the print SCP */ public native String getDestination(); /** gets the name of the current printer. * @return name of the current printer */ public native String getPrinterName(); /** * Gets the number of columns of the current image display format. * @return number of columns. */ public native long getImageDisplayFormatColumns(); /** * Gets the number of rows of the current image display format. * @return number of rows. */ public native long getImageDisplayFormatRows(); /** * Gets the current film orientation. * @return film orientation (from jDVPSFilmOrientation). */ public native int getFilmOrientation(); /** * Gets the current trim mode. * @return trim mode (from jDVPSTrimMode). */ public native int getTrim(); /** * Gets the current requested decimate/crop behaviour setting * that is used for all image boxes managed by this object. * @return requested decimate/crop behaviour (from jDVPSDecimateCropBehaviour) */ public native int getRequestedDecimateCropBehaviour(); /** * Gets the (optional) film size ID. * @return film size ID, may be NULL. */ public native String getFilmSizeID(); /** * Gets the (optional) magnification type. * @return magnification type, may be NULL. */ public native String getMagnificationType(); /** * Gets the (optional) smoothing type. * @return smoothing type, may be NULL. */ public native String getSmoothingType(); /** * Gets the (optional) configuration information. * @return configuration information, may be NULL. */ public native String getConfigurationInformation(); /** * Gets the (optional) requestes resolution ID * @return requested resolution ID, may be NULL. */ public native String getResolutionID(); /** * Gets the number of images currently registered in this object. * @return number of images. */ public native int getNumberOfImages(); /** * Deletes one of the registered images. * @param idx index, must be < getNumberOfImages() * @return EC_Normal if successful, an error code otherwise (from jE_Condition). */ public native int deleteImage(int idx); /** * Deletes multiple of the registered * images, starting with the first one. * @param number number of images to delete, must be <= getNumberOfImages() * @return EC_Normal if successful, an error code otherwise (from jE_Condition). */ public native int deleteMultipleImages(int number); /** * Creates a new image box object and sets the content of this image box object. * @param retrieveaetitle retrieve AETITLE of the referenced image * @param refsopinstanceuid SOP instance UID of the referenced image * @param requestedimagesize requested images size for this image, default: absent * @param patientid patient ID for the referenced image, default: absent * @return EC_Normal if successful, an error code otherwise (from jE_Condition). */ public native int addImageBox(String retrieveaetitle, String refsopinstanceuid, String requestedimagesize, String patientid); /** * Sets a new SOP Instance UID for the Stored Print object. * @param uid new SOP Instance UID * @return EC_Normal if successful, an error code otherwise (from jE_Condition). */ public native int setInstanceUID(String uid); /** * Checks if one of the registered images has additional settings that are not * default values on the image box level. * @param idx index, must be < getNumberOfImages() * @return true if yes. */ public native boolean imageHasAdditionalSettings(int idx); /** * Sets the (optional) magnification type for the given registered image box. * @param idx index, must be < getNumberOfImages() * @param value new attribute value, may be NULL. * The caller is responsible for making sure * that the value is valid for the selected printer. * @return EC_Normal if successful, an error code otherwise (from jE_Condition). */ public native int setImageMagnificationType(int idx, String value); /** * Sets the (optional) smoothing type for the given registered image box. * @param idx index, must be < getNumberOfImages() * @param value new attribute value, may be NULL. * The caller is responsible for making sure * that the value is valid for the selected printer. * @return EC_Normal if successful, an error code otherwise (from jE_Condition). */ public native int setImageSmoothingType(int idx, String value); /** * Sets the (optional) configuration information for the given registered image box. * @param idx index, must be < getNumberOfImages() * @param value new attribute value, may be NULL. * The caller is responsible for making sure * that the value is valid for the selected printer. * @return EC_Normal if successful, an error code otherwise (from jE_Condition). */ public native int setImageConfigurationInformation(int idx, String value); /** * Gets the (optional) magnification type for the given registered image box. * @param idx index, must be < getNumberOfImages() * @return magnification type, may be NULL. */ public native String getImageMagnificationType(int idx); /** * Gets the (optional) smoothing type for the given registered image box. * @param idx index, must be < getNumberOfImages() * @return smoothing type, may be NULL. */ public native String getImageSmoothingType(int idx); /** * Gets the (optional) configuration information for the given registered image box. * @param idx index, must be < getNumberOfImages() * @return configuration information, may be NULL. */ public native String getImageConfigurationInformation(int idx); /** * Resets the Presentation LUT to the default setting. i.e. the presentation LUT * which is specified separately for each image box is used. * @return EC_Normal if successful, an error code otherwise. */ public native int setDefaultPresentationLUT(); /** * Sets the current Presentation LUT shape (overrides the image box settings). * Only DVPSP_identity and DVPSP_lin_od are allowed. * @param shape the new presentation LUT shape (from jDVPSPresentationLUTType). * @return EC_Normal if successful, an error code otherwise. */ public native int setPresentationLUTShape(int shape); /** converts an optical density (OD) value to an 8/12/16-bit P-value which is linear to luminance. * The output is not calibrated according to the GSDF. This can be done by convertPValueToDDL() in * class DVPSPresentationState. The attributes illumination, reflected ambient light and min/max * density (default 20/300) from this stored print object are used for the calculation. * @param density in hundreds of OD (e.g. 150 corressponds to 1.5 OD) * @param bits number of bits used for the output value (8, 12, 16) * @return P-Value, 0..0xFF, 0..0xFFF, 0..0xFFFF, < 0 if an error occurred. */ public native int convertODtoPValue(int density, int bits); /** * Sets the (optional) border density. * @param value new attribute value, may be NULL. * The caller is responsible for making sure * that the value is valid for the selected printer. * @return EC_Normal if successful, an error code otherwise (from jE_Condition). */ public native int setBorderDensity(String value); /** * Sets the (optional) empty image density. * @param value new attribute value, may be NULL. * The caller is responsible for making sure * that the value is valid for the selected printer. * @return EC_Normal if successful, an error code otherwise (from jE_Condition). */ public native int setEmtpyImageDensity(String value); /** * Gets the (optional) border density. * @return border density, may be NULL. */ public native String getBorderDensity(); /** * Gets the (optional) empty image density. * @return empty image density, may be NULL. */ public native String getEmtpyImageDensity(); /** * Sets the (optional) max density. * @param value new attribute value, may be NULL. * The caller is responsible for making sure * that the value is valid for the selected printer. * @return EC_Normal if successful, an error code otherwise. */ public native int setMaxDensity(String value); /** * Sets the (optional) min density. * @param value new attribute value, may be NULL. * The caller is responsible for making sure * that the value is valid for the selected printer. * @return EC_Normal if successful, an error code otherwise. */ public native int setMinDensity(String value); /** * Gets the (optional) max density. * The string returned becomes invalid after the next * call to getMaxDensity or getMinDensity. * @return max density, may be NULL. */ public native String getMaxDensity(); /** * Gets the (optional) min density. * The string returned becomes invalid after the next * call to getMaxDensity or getMinDensity. * @return min density, may be NULL. */ public native String getMinDensity(); /** sets the illumination to be used * with the print Presentation LUT SOP Class. * @param value new attribute value, in cd/m2. * The caller is responsible for making sure * that the value is valid for the selected printer. * @return EC_Normal if successful, an error code otherwise. */ public native int setPrintIllumination(int value); /** gets the current illumination setting * used with the print Presentation LUT SOP Class. * @return illumination in cd/m2 */ public native int getPrintIllumination(); /** sets the reflected ambient light to be used * with the print Presentation LUT SOP Class. * @param value new attribute value, in cd/m2. * The caller is responsible for making sure * that the value is valid for the selected printer. * @return EC_Normal if successful, an error code otherwise. */ public native int setPrintReflectedAmbientLight(int value); /** gets the current reflected ambient light setting * used with the print Presentation LUT SOP Class. * @return reflected ambient light in cd/m2 */ public native int getPrintReflectedAmbientLight(); } /* * CVS Log * $Log: jDVPSStoredPrint.java,v $ * Revision 1.1.1.1 2001/06/06 10:32:30 kleber * Init commit for DICOMscope 3.5 * Create new CVS * */ dicomscope-3.6.0/tkgui/J2Ci/jDVPSTextJustification.java0000644000265600020320000000277511262371100022041 0ustar tilleaadmin/* * * Copyright (C) 1999-2003, Institute for MicroTherapy * * This software and supporting documentation were developed by * * University of Witten/Herdecke * Department of Radiology and MicroTherapy * Institute for MicroTherapy * Medical computer science * * Universitaetsstrasse 142 * 44799 Bochum, Germany * * http://www.microtherapy.de/go/cs * mailto:computer.science@microtherapy.de * * THIS SOFTWARE IS MADE AVAILABLE, AS IS, AND THE INSTITUTE MAKES NO * WARRANTY REGARDING THE SOFTWARE, ITS PERFORMANCE, ITS MERCHANTABILITY * OR FITNESS FOR ANY PARTICULAR USE, FREEDOM FROM ANY COMPUTER DISEASES * OR ITS CONFORMITY TO ANY SPECIFICATION. THE ENTIRE RISK AS TO QUALITY * AND PERFORMANCE OF THE SOFTWARE IS WITH THE USER. * * Author : $Author: kleber $ * Last update : $Date: 2001/06/06 10:32:30 $ * Revision : $Revision: 1.1.1.1 $ * State: $State: Exp $ */ package J2Ci; /** * The class jDVPSTextJustification represents the C++-enumeration * DVPSTextJustification. * * @author Andreas Schröter */ public class jDVPSTextJustification { /** * left. */ public static final int DVPSX_left = 0; /** * right */ public static final int DVPSX_right = 1; /** * centered */ public static final int DVPSX_center = 2; } /* * CVS Log * $Log: jDVPSTextJustification.java,v $ * Revision 1.1.1.1 2001/06/06 10:32:30 kleber * Init commit for DICOMscope 3.5 * Create new CVS * */ dicomscope-3.6.0/tkgui/J2Ci/jDVPSTextObject.java0000644000265600020320000001704511262371100020430 0ustar tilleaadmin/* * * Copyright (C) 1999-2003, Institute for MicroTherapy * * This software and supporting documentation were developed by * * University of Witten/Herdecke * Department of Radiology and MicroTherapy * Institute for MicroTherapy * Medical computer science * * Universitaetsstrasse 142 * 44799 Bochum, Germany * * http://www.microtherapy.de/go/cs * mailto:computer.science@microtherapy.de * * THIS SOFTWARE IS MADE AVAILABLE, AS IS, AND THE INSTITUTE MAKES NO * WARRANTY REGARDING THE SOFTWARE, ITS PERFORMANCE, ITS MERCHANTABILITY * OR FITNESS FOR ANY PARTICULAR USE, FREEDOM FROM ANY COMPUTER DISEASES * OR ITS CONFORMITY TO ANY SPECIFICATION. THE ENTIRE RISK AS TO QUALITY * AND PERFORMANCE OF THE SOFTWARE IS WITH THE USER. * * Author : $Author: kleber $ * Last update : $Date: 2001/06/06 10:32:30 $ * Revision : $Revision: 1.1.1.1 $ * State: $State: Exp $ */ package J2Ci; /** * A jDVPSTextObject is the Java-sided class for the C++-Class * DVPSTextObject. * * @author Andreas Schröter */ public class jDVPSTextObject { /** * Constructor - not allowed! */ protected jDVPSTextObject() { createObjOfDVPSTextObject (); } /** * Constructor for attaching an existing C++-Object. FOR INTERNAL USE ONLY! * @param attachAdr Address of C++-Object */ public jDVPSTextObject (long attachAdr) { cppClassAddress = attachAdr; } // -------------------------------- Methods for C++-Class Binding /** * Address of C++-Object for access in the DLL. Never change manually!! */ private long cppClassAddress = (long) 0; // never change! /** * Creates a C++-Object of class DVPSTextObject and attached it to this * current object. The address of the C++-object will be put into field * cppClassAddress. * * @see J2Ci.jDVPSTextObject#cppClassAddress */ private native void createObjOfDVPSTextObject (); // ----------------------------------- Methods of Class jDVPSTextObject /** * Copy-Constructor * @param copy TextObject-Object to copy */ public jDVPSTextObject (jDVPSTextObject copy) { CopyConstructor (copy.cppClassAddress); } private native void CopyConstructor (long fromCppObj); // ------------------------------------------------------------ /** * Checks if this text object contains an anchor point. * @return true if anchor point present. */ public native boolean haveAnchorPoint(); /** * Checks if this text object contains bounding box. * @return true if bounding box present. */ public native boolean haveBoundingBox(); /** * Sets an anchor point for this text object. * @param x anchor point X value * @param y anchor point Y value * @param unit anchor point annotation units (pixel/display) (from jDVPSannotationUnit). * @param isVisible anchor point visibility * @return EC_Normal if successful, an error code otherwise (from jE_Condition). */ public native int setAnchorPoint(double x, double y, int unit, boolean isVisible); /** * Sets bounding box for this text object. * @param TLHC_x bounding box top-lefthand corner X value * @param TLHC_y bounding box top-lefthand corner Y value * @param BRHC_x bounding box bottom-righthand corner X value * @param BRHC_y bounding box bottom-righthand corner Y value * @param unit bounding box annotation units (pixel/display) (from jDVPSannotationUnit) * @param justification bounding box horizontal justification (left/right/center) (from jDVPSTextJustification) * @return EC_Normal if successful, an error code otherwise (from jE_Condition). */ public native int setBoundingBox(double TLHC_x, double TLHC_y, double BRHC_x, double BRHC_y, int unit, int justification); /** * Assigns a new "unformatted text value" for this text object. * @param text unformatted text value. Must not be NULL or empty string. * @return EC_Normal if successful, an error code otherwise (from jE_Condition). */ public native int setText(String text); /** * Removes any anchor point from the text object. * Attention: A text object must always contain either anchor point, bounding box * or both. This property is not asserted by the text object itself. */ public native void removeAnchorPoint(); /** * Removes any bounding box from the text object. * Attention: A text object must always contain either anchor point, bounding box * or both. This property is not asserted by the text object itself. */ public native void removeBoundingBox(); /** * Gets the unformatted text value for this text object. * @return unformatted text value */ public native String getText(); /** * Gets the bounding box TLHC x value. * May only be called when a bounding box is present (haveBoundingBox()==OFTrue) * @return bounding box TLHC x value */ public native double getBoundingBoxTLHC_x(); /** * Gets the bounding box TLHC y value. * May only be called when a bounding box is present (haveBoundingBox()==OFTrue) * @return bounding box TLHC y value */ public native double getBoundingBoxTLHC_y(); /** * Gets the bounding box BRHC x value. * May only be called when a bounding box is present (haveBoundingBox()==OFTrue) * @return bounding box BRHC x value */ public native double getBoundingBoxBRHC_x(); /** * Gets the bounding box BRHC y value. * May only be called when a bounding box is present (haveBoundingBox()==OFTrue) * @return bounding box BRHC y value */ public native double getBoundingBoxBRHC_y(); /** * Gets the bounding box annotation units. * May only be called when a bounding box is present (haveBoundingBox()==OFTrue) * @return bounding box annotation units (from jDVPSannotationUnit). */ public native int getBoundingBoxAnnotationUnits(); /** * Gets the anchor point x value. * May only be called when an anchor point is present (haveAnchorPoint()==OFTrue) * @return anchor point x value */ public native double getAnchorPoint_x(); /** * Gets the anchor point y value. * May only be called when an anchor point is present (haveAnchorPoint()==OFTrue) * @return anchor point y value */ public native double getAnchorPoint_y(); /** * Gets the anchor point visibility * May only be called when an anchor point is present (haveAnchorPoint()==OFTrue) * @return true if anchor point is visible */ public native boolean anchorPointIsVisible(); /** * Gets the anchor point annotation units. * May only be called when an anchor point is present (haveAnchorPoint()==OFTrue) * @return anchor point annotation units (from jDVPSannotationUnit). */ public native int getAnchorPointAnnotationUnits(); /** * Gets the bounding box horizontal justification. * May only be called when a bounding box is present (haveBoundingBox()==OFTrue) * @return bounding box horizontal justification (from jDVPSTextJustification) */ public native int getBoundingBoxHorizontalJustification(); } /* * CVS Log * $Log: jDVPSTextObject.java,v $ * Revision 1.1.1.1 2001/06/06 10:32:30 kleber * Init commit for DICOMscope 3.5 * Create new CVS * */ dicomscope-3.6.0/tkgui/J2Ci/jDVPSTrimMode.java0000644000265600020320000000302411262371100020065 0ustar tilleaadmin/* * * Copyright (C) 1999-2003, Institute for MicroTherapy * * This software and supporting documentation were developed by * * University of Witten/Herdecke * Department of Radiology and MicroTherapy * Institute for MicroTherapy * Medical computer science * * Universitaetsstrasse 142 * 44799 Bochum, Germany * * http://www.microtherapy.de/go/cs * mailto:computer.science@microtherapy.de * * THIS SOFTWARE IS MADE AVAILABLE, AS IS, AND THE INSTITUTE MAKES NO * WARRANTY REGARDING THE SOFTWARE, ITS PERFORMANCE, ITS MERCHANTABILITY * OR FITNESS FOR ANY PARTICULAR USE, FREEDOM FROM ANY COMPUTER DISEASES * OR ITS CONFORMITY TO ANY SPECIFICATION. THE ENTIRE RISK AS TO QUALITY * AND PERFORMANCE OF THE SOFTWARE IS WITH THE USER. * * Author : $Author: kleber $ * Last update : $Date: 2001/06/06 10:32:30 $ * Revision : $Revision: 1.1.1.1 $ * State: $State: Exp $ */ package J2Ci; /** * The class jDVPSTrimMode represents the C++-enumeration * DVPSTrimMode. * * @author Andreas Schröter */ public class jDVPSTrimMode { /** * print with trims (borders) */ public static final int DVPSH_trim_on = 0; /** * print without trims (borders) */ public static final int DVPSH_trim_off = 1; /** * printer default */ public static final int DVPSH_default = 2; } /* * CVS Log * $Log: jDVPSTrimMode.java,v $ * Revision 1.1.1.1 2001/06/06 10:32:30 kleber * Init commit for DICOMscope 3.5 * Create new CVS * */ dicomscope-3.6.0/tkgui/J2Ci/jDVPSVerifyAndSignMode.java0000644000265600020320000000350011262371100021661 0ustar tilleaadmin/* * * Copyright (C) 2001-2003, OFFIS and Institute for MicroTherapy * * This software and supporting documentation were developed by * * Kuratorium OFFIS e.V. * Healthcare Information and Communication Systems * Escherweg 2 * D-26121 Oldenburg, Germany * * and * * University of Witten/Herdecke * Department of Radiology and MicroTherapy * Institute for MicroTherapy * Medical computer science * * Universitaetsstrasse 142 * 44799 Bochum, Germany * * http://www.microtherapy.de/go/cs * mailto:computer.science@microtherapy.de * * THIS SOFTWARE IS MADE AVAILABLE, AS IS, AND THE INSTITUTE MAKES NO * WARRANTY REGARDING THE SOFTWARE, ITS PERFORMANCE, ITS MERCHANTABILITY * OR FITNESS FOR ANY PARTICULAR USE, FREEDOM FROM ANY COMPUTER DISEASES * OR ITS CONFORMITY TO ANY SPECIFICATION. THE ENTIRE RISK AS TO QUALITY * AND PERFORMANCE OF THE SOFTWARE IS WITH THE USER. * * Author : $Author: kleber $ * Last update : $Date: 2001/06/06 10:32:30 $ * Revision : $Revision: 1.1.1.1 $ * State: $State: Exp $ */ package J2Ci; /** * The class jDVPSVerifyAndSignMode represents the C++ enumeration * DVPSVerifyAndSignMode. * * @author Joerg Riesmeier */ public class jDVPSVerifyAndSignMode { /** verify the document only */ public static final int DVPSY_verify = 0; /** verify and digitally sign the document (apart from VerifyingObserver and SOPInstanceUID) */ public static final int DVPSY_verifyAndSign = 1; /** verify and digitally sign the entire document (finalize it) */ public static final int DVPSY_verifyAndSign_finalize = 2; } /* * CVS Log * $Log: jDVPSVerifyAndSignMode.java,v $ * Revision 1.1.1.1 2001/06/06 10:32:30 kleber * Init commit for DICOMscope 3.5 * Create new CVS * * */ dicomscope-3.6.0/tkgui/J2Ci/jE_Condition.java0000644000265600020320000000323211262371100020043 0ustar tilleaadmin/* * * Copyright (C) 1999-2003..2002, Institute for MicroTherapy and OFFIS * * This software and supporting documentation were developed by * * University of Witten/Herdecke * Department of Radiology and MicroTherapy * Institute for MicroTherapy * Medical computer science * * Universitaetsstrasse 142 * 44799 Bochum, Germany * * http://www.microtherapy.de/go/cs * mailto:computer.science@microtherapy.de * * and * * Kuratorium OFFIS e.V. * Healthcare Information and Communication Systems * Escherweg 2 * D-26121 Oldenburg, Germany * * THIS SOFTWARE IS MADE AVAILABLE, AS IS, AND THE INSTITUTE MAKES NO * WARRANTY REGARDING THE SOFTWARE, ITS PERFORMANCE, ITS MERCHANTABILITY * OR FITNESS FOR ANY PARTICULAR USE, FREEDOM FROM ANY COMPUTER DISEASES * OR ITS CONFORMITY TO ANY SPECIFICATION. THE ENTIRE RISK AS TO QUALITY * AND PERFORMANCE OF THE SOFTWARE IS WITH THE USER. * * Author : $Author: kleber $ * Last update : $Date: 2001/06/06 10:32:30 $ * Revision : $Revision: 1.1.1.1 $ * State: $State: Exp $ */ package J2Ci; /** * The class jE_Condition represents the C++-enumeration * E_Condition. To be more precisely, this class represents the * return value of OFCondition::status() which might be OF_ok, * OF_error or OF_failure. * * @author Andreas Schröter */ public class jE_Condition { /** * Constant; Method was successful. Equivilent to OF_ok. */ public static final int EC_Normal = 0; } /* * CVS Log * $Log: jE_Condition.java,v $ * Revision 1.1.1.1 2001/06/06 10:32:30 kleber * Init commit for DICOMscope 3.5 * Create new CVS * */ dicomscope-3.6.0/tkgui/J2Ci/jFloatByRef.java0000644000265600020320000000264711262371100017657 0ustar tilleaadmin/* * * Copyright (C) 2000-2003, OFFIS and Institute for MicroTherapy * * This software and supporting documentation were developed by * * Kuratorium OFFIS e.V. * Healthcare Information and Communication Systems * Escherweg 2 * D-26121 Oldenburg, Germany * * and * * University of Witten/Herdecke * Department of Radiology and MicroTherapy * Institute for MicroTherapy * Medical computer science * * Universitaetsstrasse 142 * 44799 Bochum, Germany * * http://www.microtherapy.de/go/cs * mailto:computer.science@microtherapy.de * * THIS SOFTWARE IS MADE AVAILABLE, AS IS, AND THE INSTITUTE MAKES NO * WARRANTY REGARDING THE SOFTWARE, ITS PERFORMANCE, ITS MERCHANTABILITY * OR FITNESS FOR ANY PARTICULAR USE, FREEDOM FROM ANY COMPUTER DISEASES * OR ITS CONFORMITY TO ANY SPECIFICATION. THE ENTIRE RISK AS TO QUALITY * AND PERFORMANCE OF THE SOFTWARE IS WITH THE USER. * * Author : $Author: kleber $ * Last update : $Date: 2001/06/06 10:32:30 $ * Revision : $Revision: 1.1.1.1 $ * State: $State: Exp $ */ package J2Ci; /** * The class jFloatbyRef manages the "variable-by-reference". * * @author Joerg Riesmeier */ public class jFloatByRef { public float value = -1; } /* * CVS Log * $Log: jFloatByRef.java,v $ * Revision 1.1.1.1 2001/06/06 10:32:30 kleber * Init commit for DICOMscope 3.5 * Create new CVS * * */ dicomscope-3.6.0/tkgui/J2Ci/jIntByRef.java0000644000265600020320000000241011262371100017330 0ustar tilleaadmin/* * * Copyright (C) 1999-2003, Institute for MicroTherapy * * This software and supporting documentation were developed by * * University of Witten/Herdecke * Department of Radiology and MicroTherapy * Institute for MicroTherapy * Medical computer science * * Universitaetsstrasse 142 * 44799 Bochum, Germany * * http://www.microtherapy.de/go/cs * mailto:computer.science@microtherapy.de * * THIS SOFTWARE IS MADE AVAILABLE, AS IS, AND THE INSTITUTE MAKES NO * WARRANTY REGARDING THE SOFTWARE, ITS PERFORMANCE, ITS MERCHANTABILITY * OR FITNESS FOR ANY PARTICULAR USE, FREEDOM FROM ANY COMPUTER DISEASES * OR ITS CONFORMITY TO ANY SPECIFICATION. THE ENTIRE RISK AS TO QUALITY * AND PERFORMANCE OF THE SOFTWARE IS WITH THE USER. * * Author : $Author: kleber $ * Last update : $Date: 2001/06/06 10:32:30 $ * Revision : $Revision: 1.1.1.1 $ * State: $State: Exp $ */ package J2Ci; /** * The class jIntbyRef manages the "variable-by-reference". * * @author Andreas Schröter */ public class jIntByRef { public int value = -1; } /* * CVS Log * $Log: jIntByRef.java,v $ * Revision 1.1.1.1 2001/06/06 10:32:30 kleber * Init commit for DICOMscope 3.5 * Create new CVS * */ dicomscope-3.6.0/tkgui/J2Ci/jRGB.java0000644000265600020320000000360111262371100016263 0ustar tilleaadmin/* * * Copyright (C) 1999-2003, Institute for MicroTherapy * * This software and supporting documentation were developed by * * University of Witten/Herdecke * Department of Radiology and MicroTherapy * Institute for MicroTherapy * Medical computer science * * Universitaetsstrasse 142 * 44799 Bochum, Germany * * http://www.microtherapy.de/go/cs * mailto:computer.science@microtherapy.de * * THIS SOFTWARE IS MADE AVAILABLE, AS IS, AND THE INSTITUTE MAKES NO * WARRANTY REGARDING THE SOFTWARE, ITS PERFORMANCE, ITS MERCHANTABILITY * OR FITNESS FOR ANY PARTICULAR USE, FREEDOM FROM ANY COMPUTER DISEASES * OR ITS CONFORMITY TO ANY SPECIFICATION. THE ENTIRE RISK AS TO QUALITY * AND PERFORMANCE OF THE SOFTWARE IS WITH THE USER. * * Author : $Author: kleber $ * Last update : $Date: 2001/06/06 10:32:30 $ * Revision : $Revision: 1.1.1.1 $ * State: $State: Exp $ */ package J2Ci; /** * The class jRGB represents a RGB-color value. * * @author Andreas Schröter */ public class jRGB { /** * The red part of color. */ public int red; /** * The green part of color. */ public int green; /** * The blue part of color. */ public int blue; /** * Constructor; sets the values of r, g, b to the specified values. * @param r red value. * @param g green value. * @param b blue value. */ public jRGB (int r, int g, int b) { red = r; green = g; blue = b; } /** * Constructor; sets the values to black (0, 0, 0) */ public jRGB () { red = 0; green = 0; blue = 0; } } /* * CVS Log * $Log: jRGB.java,v $ * Revision 1.1.1.1 2001/06/06 10:32:30 kleber * Init commit for DICOMscope 3.5 * Create new CVS * */ dicomscope-3.6.0/tkgui/J2Ci/jStringByRef.java0000644000265600020320000000246011262371100020051 0ustar tilleaadmin/* * * Copyright (C) 1999-2003, Institute for MicroTherapy * * This software and supporting documentation were developed by * * University of Witten/Herdecke * Department of Radiology and MicroTherapy * Institute for MicroTherapy * Medical computer science * * Universitaetsstrasse 142 * 44799 Bochum, Germany * * http://www.microtherapy.de/go/cs * mailto:computer.science@microtherapy.de * * THIS SOFTWARE IS MADE AVAILABLE, AS IS, AND THE INSTITUTE MAKES NO * WARRANTY REGARDING THE SOFTWARE, ITS PERFORMANCE, ITS MERCHANTABILITY * OR FITNESS FOR ANY PARTICULAR USE, FREEDOM FROM ANY COMPUTER DISEASES * OR ITS CONFORMITY TO ANY SPECIFICATION. THE ENTIRE RISK AS TO QUALITY * AND PERFORMANCE OF THE SOFTWARE IS WITH THE USER. * * Author : $Author: kleber $ * Last update : $Date: 2001/06/06 10:32:30 $ * Revision : $Revision: 1.1.1.1 $ * State: $State: Exp $ */ package J2Ci; /** * The class jStringByRef manages the "variable-by-reference". * * @version 1.0, 28.12.98 * @author Andreas Schröter */ public class jStringByRef { public String value = null; } /* * CVS Log * $Log: jStringByRef.java,v $ * Revision 1.1.1.1 2001/06/06 10:32:30 kleber * Init commit for DICOMscope 3.5 * Create new CVS * */ dicomscope-3.6.0/tkgui/jToolkit/0002755000265600020320000000000011135621372015716 5ustar tilleaadmindicomscope-3.6.0/tkgui/jToolkit/gui/0002755000265600020320000000000011262371100016472 5ustar tilleaadmindicomscope-3.6.0/tkgui/jToolkit/gui/CommandButtonListener.java0000644000265600020320000000272311262371100023617 0ustar tilleaadmin/* * * Copyright (C) 1999, Institute for MicroTherapy * * This software and supporting documentation were developed by * * University of Witten/Herdecke * Department of Radiology and MicroTherapy * Institute for MicroTherapy * Medical computer science * * Universitaetsstrasse 142 * 44799 Bochum, Germany * * http://www.microtherapy.de/go/cs * mailto:computer.science@microtherapy.de * * THIS SOFTWARE IS MADE AVAILABLE, AS IS, AND THE INSTITUTE MAKES NO * WARRANTY REGARDING THE SOFTWARE, ITS PERFORMANCE, ITS MERCHANTABILITY * OR FITNESS FOR ANY PARTICULAR USE, FREEDOM FROM ANY COMPUTER DISEASES * OR ITS CONFORMITY TO ANY SPECIFICATION. THE ENTIRE RISK AS TO QUALITY * AND PERFORMANCE OF THE SOFTWARE IS WITH THE USER. * * Author : $Author: kleber $ * Last update : $Date: 2001/06/06 10:32:30 $ * Revision : $Revision: 1.1.1.1 $ * State: $State: Exp $ */ package jToolkit.gui; /** * Implementations can handle events from the CommandButton (AWT and Swing). * * @author Andreas Schroeter * @since 30.03. */ public interface CommandButtonListener { /** * Called when a registered CommandButton with an ID is called. * @param ID ID of the CommandButton. */ abstract public void buttonClicked (int ID); } /* * CVS Log * $Log: CommandButtonListener.java,v $ * Revision 1.1.1.1 2001/06/06 10:32:30 kleber * Init commit for DICOMscope 3.5 * Create new CVS * */ dicomscope-3.6.0/tkgui/jToolkit/gui/CommandJButton.java0000644000265600020320000001046411262371100022224 0ustar tilleaadmin/* * * Copyright (C) 1999, Institute for MicroTherapy * * This software and supporting documentation were developed by * * University of Witten/Herdecke * Department of Radiology and MicroTherapy * Institute for MicroTherapy * Medical computer science * * Universitaetsstrasse 142 * 44799 Bochum, Germany * * http://www.microtherapy.de/go/cs * mailto:computer.science@microtherapy.de * * THIS SOFTWARE IS MADE AVAILABLE, AS IS, AND THE INSTITUTE MAKES NO * WARRANTY REGARDING THE SOFTWARE, ITS PERFORMANCE, ITS MERCHANTABILITY * OR FITNESS FOR ANY PARTICULAR USE, FREEDOM FROM ANY COMPUTER DISEASES * OR ITS CONFORMITY TO ANY SPECIFICATION. THE ENTIRE RISK AS TO QUALITY * AND PERFORMANCE OF THE SOFTWARE IS WITH THE USER. * * Author : $Author: kleber $ * Last update : $Date: 2001/06/06 10:32:30 $ * Revision : $Revision: 1.1.1.1 $ * State: $State: Exp $ */ package jToolkit.gui; import javax.swing.*; import java.awt.event.*; import java.awt.*; /** * The CommandJButton extends the normal (Swing-)JButton with an automatic command * call when the button is pressed. * * Usage: * * class FooClass extends JPanel implements CommandJButton * { * final int IDOK = 1; * final int IDCANCEL = 2; * * void Constructor () * { * CommandJButton ok = new CommandJButton ("OK", this, IDOK); * CommandJButton cancel = new CommandJButton ("Cancel", this, IDCANCEL); * add (ok); * add (cancel); * } * * void ButtonClicked (int ID); * { * if (ID == IDOK) doOK(); // OK pressed * if (ID == IDCANCEL) doCancel(); // Cancel pres * } * } * * @author Andreas Schroeter * @since 30.03. */ public class CommandJButton extends JButton implements ActionListener { private int ID; static int gaps = 2; private CommandButtonListener cbl; public int getID(){ return ID;} public CommandButtonListener getCommandButtonListener(){ return cbl;} public CommandJButton(CommandJButton b) { super(); this.ID = b.getID(); this.cbl = b.getCommandButtonListener(); this.setMargin(new Insets(gaps,gaps,gaps,gaps)); this.setIcon(b.getIcon()); this.setText(b.getText()); this.setBorderPainted(b.isBorderPainted()); this.setSelected(b.isSelected()); this.setAlignmentX(b.getAlignmentX()); this.setAlignmentY(b.getAlignmentY()); this.setToolTipText(b.getToolTipText()); addActionListener (this); } public static final void setButton(JButton b) { b.setAlignmentX(0.5f); b.setAlignmentY(0.5f); b.setMargin(new Insets(gaps,gaps,gaps,gaps)); //b.setBorderPainted(false); } public CommandJButton (String label, CommandButtonListener cbl, int ID) { super (label); this.ID = ID; this.cbl = cbl; this.setMargin(new Insets(gaps,gaps,gaps,gaps)); setAlignmentX(0.5f); setAlignmentY(0.5f); addActionListener (this); } public CommandJButton (CommandButtonListener cbl, int ID) { super (); this.ID = ID; this.cbl = cbl; this.setMargin(new Insets(gaps,gaps,gaps,gaps)); setAlignmentX(0.5f); setAlignmentY(0.5f); addActionListener (this); } public CommandJButton(String text, Icon icon, CommandButtonListener cbl, int ID) { super (text, icon); this.ID = ID; this.cbl = cbl; this.setMargin(new Insets(gaps,gaps,gaps,gaps)); setAlignmentX(0.5f); //setBorderPainted(false); setAlignmentY(0.5f); addActionListener (this); } public CommandJButton(Icon icon, CommandButtonListener cbl, int ID) { super (icon); this.ID = ID; this.cbl = cbl; addActionListener (this); this.setMargin(new Insets(gaps,gaps,gaps,gaps)); setAlignmentX(0.5f); setAlignmentY(0.5f); //setBorderPainted(false); } public void actionPerformed(ActionEvent e) { if (e.getSource() == this) cbl.buttonClicked (ID); } } /* * CVS Log * $Log: CommandJButton.java,v $ * Revision 1.1.1.1 2001/06/06 10:32:30 kleber * Init commit for DICOMscope 3.5 * Create new CVS * */ dicomscope-3.6.0/tkgui/jToolkit/gui/CommandJCheckBox.java0000644000265600020320000000752711262371100022445 0ustar tilleaadmin/* * * Copyright (C) 1999, Institute for MicroTherapy * * This software and supporting documentation were developed by * * University of Witten/Herdecke * Department of Radiology and MicroTherapy * Institute for MicroTherapy * Medical computer science * * Universitaetsstrasse 142 * 44799 Bochum, Germany * * http://www.microtherapy.de/go/cs * mailto:computer.science@microtherapy.de * * THIS SOFTWARE IS MADE AVAILABLE, AS IS, AND THE INSTITUTE MAKES NO * WARRANTY REGARDING THE SOFTWARE, ITS PERFORMANCE, ITS MERCHANTABILITY * OR FITNESS FOR ANY PARTICULAR USE, FREEDOM FROM ANY COMPUTER DISEASES * OR ITS CONFORMITY TO ANY SPECIFICATION. THE ENTIRE RISK AS TO QUALITY * AND PERFORMANCE OF THE SOFTWARE IS WITH THE USER. * * Author : $Author: kleber $ * Last update : $Date: 2001/06/06 10:32:30 $ * Revision : $Revision: 1.1.1.1 $ * State: $State: Exp $ */ package jToolkit.gui; import javax.swing.*; import java.awt.event.*; import java.awt.*; /** * The CommandJCheckBox extends the normal (Swing-)JCheckBox with an automatic command * call when the ActionEvent is fired. * * @author Andreas Schroeter * @since 30.03. */ public class CommandJCheckBox extends JCheckBox implements ActionListener { private int insetSize = 2; private int ID; private CommandToggleButtonListener cbl; public int getID(){ return ID;} public CommandToggleButtonListener getCommandToggleButtonListener(){ return cbl;} public CommandJCheckBox (String label, boolean selected, CommandToggleButtonListener cbl, int ID) { super (label,selected); this.ID = ID; this.cbl = cbl; this.setMargin(new Insets(insetSize,insetSize,insetSize,insetSize)); setAlignmentX(0.5f); setAlignmentY(0.5f); addActionListener (this); } public CommandJCheckBox (CommandToggleButtonListener cbl, int ID) { super (); this.ID = ID; this.cbl = cbl; this.setMargin(new Insets(insetSize,insetSize,insetSize,insetSize)); setAlignmentX(0.5f); setAlignmentY(0.5f); addActionListener (this); } public CommandJCheckBox(CommandJToggleButton b) { super(); this.ID = b.getID(); this.cbl = b.getCommandToggleButtonListener(); this.setMargin(b.getMargin()); this.setIcon(b.getIcon()); this.setText(b.getText()); this.setSelected(b.isSelected()); this.setAlignmentX(b.getAlignmentX()); this.setAlignmentY(b.getAlignmentY()); this.setToolTipText(b.getToolTipText()); addActionListener (this); } public CommandJCheckBox(String text, Icon icon,boolean selected, CommandToggleButtonListener cbl, int ID) { super (text, icon,selected); this.ID = ID; this.cbl = cbl; this.setMargin(new Insets(insetSize,insetSize,insetSize,insetSize)); setAlignmentX(0.5f); setAlignmentY(0.5f); addActionListener (this); } public CommandJCheckBox(Icon icon, boolean selected,CommandToggleButtonListener cbl, int ID) { super (icon,selected); this.ID = ID; this.cbl = cbl; this.setMargin(new Insets(insetSize,insetSize,insetSize,insetSize)); setAlignmentX(0.5f); setAlignmentY(0.5f); addActionListener (this); } public void actionPerformed(ActionEvent e) { JCheckBox tb = (JCheckBox)e.getSource(); //if (tb.isSelected()) tb.setBackground(new Color(Color.red)); //else tb.setBackground(new Color(Color.blue)); if (e.getSource() == this) cbl.buttonClicked (ID,((JCheckBox)(e.getSource())).isSelected()); } } /* * CVS Log * $Log: CommandJCheckBox.java,v $ * Revision 1.1.1.1 2001/06/06 10:32:30 kleber * Init commit for DICOMscope 3.5 * Create new CVS * */ dicomscope-3.6.0/tkgui/jToolkit/gui/CommandJComboBox.java0000644000265600020320000000371611262371100022463 0ustar tilleaadmin/* * * Copyright (C) 1999, Institute for MicroTherapy * * This software and supporting documentation were developed by * * University of Witten/Herdecke * Department of Radiology and MicroTherapy * Institute for MicroTherapy * Medical computer science * * Universitaetsstrasse 142 * 44799 Bochum, Germany * * http://www.microtherapy.de/go/cs * mailto:computer.science@microtherapy.de * * THIS SOFTWARE IS MADE AVAILABLE, AS IS, AND THE INSTITUTE MAKES NO * WARRANTY REGARDING THE SOFTWARE, ITS PERFORMANCE, ITS MERCHANTABILITY * OR FITNESS FOR ANY PARTICULAR USE, FREEDOM FROM ANY COMPUTER DISEASES * OR ITS CONFORMITY TO ANY SPECIFICATION. THE ENTIRE RISK AS TO QUALITY * AND PERFORMANCE OF THE SOFTWARE IS WITH THE USER. * * Author : $Author: kleber $ * Last update : $Date: 2001/06/06 10:32:30 $ * Revision : $Revision: 1.1.1.1 $ * State: $State: Exp $ */ package jToolkit.gui; import javax.swing.*; import java.awt.event.*; import java.awt.*; /** * The CommandJComboBox extends the normal (Swing-)JComboBox with an automatic command * call when the ActionEvent is fired. * * * @author Andreas Schroeter * @since 30.03. */ public class CommandJComboBox extends JComboBox implements ActionListener { private int ID; private CommandButtonListener cbl; public int getID(){ return ID;} public CommandButtonListener getCommandButtonListener(){ return cbl;} public CommandJComboBox (CommandButtonListener cbl, int ID) { super (); this.ID = ID; this.cbl = cbl; setAlignmentX(0.5f); setAlignmentY(0.5f); addActionListener (this); } public void actionPerformed(ActionEvent e) { if (e.getSource() == this) cbl.buttonClicked (ID); } } /* * CVS Log * $Log: CommandJComboBox.java,v $ * Revision 1.1.1.1 2001/06/06 10:32:30 kleber * Init commit for DICOMscope 3.5 * Create new CVS * */ dicomscope-3.6.0/tkgui/jToolkit/gui/CommandJList.java0000644000265600020320000000366411262371100021670 0ustar tilleaadmin/* * * Copyright (C) 1999, Institute for MicroTherapy * * This software and supporting documentation were developed by * * University of Witten/Herdecke * Department of Radiology and MicroTherapy * Institute for MicroTherapy * Medical computer science * * Universitaetsstrasse 142 * 44799 Bochum, Germany * * http://www.microtherapy.de/go/cs * mailto:computer.science@microtherapy.de * * THIS SOFTWARE IS MADE AVAILABLE, AS IS, AND THE INSTITUTE MAKES NO * WARRANTY REGARDING THE SOFTWARE, ITS PERFORMANCE, ITS MERCHANTABILITY * OR FITNESS FOR ANY PARTICULAR USE, FREEDOM FROM ANY COMPUTER DISEASES * OR ITS CONFORMITY TO ANY SPECIFICATION. THE ENTIRE RISK AS TO QUALITY * AND PERFORMANCE OF THE SOFTWARE IS WITH THE USER. * * Author : $Author: kleber $ * Last update : $Date: 2001/06/06 10:32:30 $ * Revision : $Revision: 1.1.1.1 $ * State: $State: Exp $ */ package jToolkit.gui; import javax.swing.*; import java.awt.event.*; import java.awt.*; /** * The CommandJList extends the normal (Swing-)JButton with an automatic command * call when the button is pressed. * * @author Andreas Schroeter * @since 30.03. */ public class CommandJList extends JList //implements ItemListener { private int ID; private CommandButtonListener cbl; public int getID(){ return ID;} public CommandButtonListener getCommandButtonListener(){ return cbl;} public CommandJList (CommandButtonListener cbl, int ID) { super (); this.ID = ID; this.cbl = cbl; setAlignmentX(0.5f); setAlignmentY(0.5f); //addActionListener (this); } public void actionPerformed(ActionEvent e) { if (e.getSource() == this) cbl.buttonClicked (ID); } } /* * CVS Log * $Log: CommandJList.java,v $ * Revision 1.1.1.1 2001/06/06 10:32:30 kleber * Init commit for DICOMscope 3.5 * Create new CVS * */ dicomscope-3.6.0/tkgui/jToolkit/gui/CommandJRadioButton.java0000644000265600020320000000435211262371100023202 0ustar tilleaadmin/* * * Copyright (C) 1999, Institute for MicroTherapy * * This software and supporting documentation were developed by * * University of Witten/Herdecke * Department of Radiology and MicroTherapy * Institute for MicroTherapy * Medical computer science * * Universitaetsstrasse 142 * 44799 Bochum, Germany * * http://www.microtherapy.de/go/cs * mailto:computer.science@microtherapy.de * * THIS SOFTWARE IS MADE AVAILABLE, AS IS, AND THE INSTITUTE MAKES NO * WARRANTY REGARDING THE SOFTWARE, ITS PERFORMANCE, ITS MERCHANTABILITY * OR FITNESS FOR ANY PARTICULAR USE, FREEDOM FROM ANY COMPUTER DISEASES * OR ITS CONFORMITY TO ANY SPECIFICATION. THE ENTIRE RISK AS TO QUALITY * AND PERFORMANCE OF THE SOFTWARE IS WITH THE USER. * * Author : $Author: kleber $ * Last update : $Date: 2001/06/06 10:32:30 $ * Revision : $Revision: 1.1.1.1 $ * State: $State: Exp $ */ package jToolkit.gui; import javax.swing.*; import java.awt.event.*; import java.awt.*; /** * The CommandJRadioButton extends the normal (Swing-)JRadioButton with an automatic command * call when the ActionEvent is fired. * * * @author Andreas Schroeter * @since 30.03. */ public class CommandJRadioButton extends JRadioButton implements ActionListener { private int insetSize = 2; private int ID; private CommandToggleButtonListener cbl; public int getID(){ return ID;} public CommandToggleButtonListener getCommandToggleButtonListener(){ return cbl;} public CommandJRadioButton (String label, boolean selected, CommandToggleButtonListener cbl, int ID) { super (label,selected); this.ID = ID; this.cbl = cbl; this.setMargin(new Insets(insetSize,insetSize,insetSize,insetSize)); setAlignmentX(0.5f); setAlignmentY(0.5f); addActionListener (this); } public void actionPerformed(ActionEvent e) { JRadioButton tb = (JRadioButton)e.getSource(); if (e.getSource() == this) cbl.buttonClicked (ID,((JRadioButton)(e.getSource())).isSelected()); } } /* * CVS Log * $Log: CommandJRadioButton.java,v $ * Revision 1.1.1.1 2001/06/06 10:32:30 kleber * Init commit for DICOMscope 3.5 * Create new CVS * */ dicomscope-3.6.0/tkgui/jToolkit/gui/CommandJTextField.java0000644000265600020320000000424511262371100022641 0ustar tilleaadmin/* * * Copyright (C) 1999, Institute for MicroTherapy * * This software and supporting documentation were developed by * * University of Witten/Herdecke * Department of Radiology and MicroTherapy * Institute for MicroTherapy * Medical computer science * * Universitaetsstrasse 142 * 44799 Bochum, Germany * * http://www.microtherapy.de/go/cs * mailto:computer.science@microtherapy.de * * THIS SOFTWARE IS MADE AVAILABLE, AS IS, AND THE INSTITUTE MAKES NO * WARRANTY REGARDING THE SOFTWARE, ITS PERFORMANCE, ITS MERCHANTABILITY * OR FITNESS FOR ANY PARTICULAR USE, FREEDOM FROM ANY COMPUTER DISEASES * OR ITS CONFORMITY TO ANY SPECIFICATION. THE ENTIRE RISK AS TO QUALITY * AND PERFORMANCE OF THE SOFTWARE IS WITH THE USER. * * Author : $Author: kleber $ * Last update : $Date: 2001/06/06 10:32:30 $ * Revision : $Revision: 1.1.1.1 $ * State: $State: Exp $ */ package jToolkit.gui; import javax.swing.*; import java.awt.event.*; import java.awt.*; /** * The CommandJTextField extends the normal (Swing-)JTextField with an automatic command * call when the ActionEvent or the FocusEventis fired. * @author Andreas Schroeter * @since 30.03. */ public class CommandJTextField extends JTextField implements ActionListener, FocusListener { private int ID; private CommandTextListener ctl; public int getID(){ return ID;} public CommandJTextField(int col, CommandTextListener ctl, int ID) { super (col); this.ID = ID; this.ctl = ctl; addActionListener (this); addFocusListener(this); this.setMargin(new Insets(0,0,0,0)); setAlignmentX(0.5f); setAlignmentY(0.5f); } public void actionPerformed(ActionEvent e) { if (e.getSource() == this) ctl.setText (ID, getText()); } public void focusGained(FocusEvent e) { } public void focusLost(FocusEvent e) { if (e.getSource() == this) ctl.setText (ID, getText()); } } /* * CVS Log * $Log: CommandJTextField.java,v $ * Revision 1.1.1.1 2001/06/06 10:32:30 kleber * Init commit for DICOMscope 3.5 * Create new CVS * */ dicomscope-3.6.0/tkgui/jToolkit/gui/CommandJToggleButton.java0000644000265600020320000000761611262371100023373 0ustar tilleaadmin/* * * Copyright (C) 1999, Institute for MicroTherapy * * This software and supporting documentation were developed by * * University of Witten/Herdecke * Department of Radiology and MicroTherapy * Institute for MicroTherapy * Medical computer science * * Universitaetsstrasse 142 * 44799 Bochum, Germany * * http://www.microtherapy.de/go/cs * mailto:computer.science@microtherapy.de * * THIS SOFTWARE IS MADE AVAILABLE, AS IS, AND THE INSTITUTE MAKES NO * WARRANTY REGARDING THE SOFTWARE, ITS PERFORMANCE, ITS MERCHANTABILITY * OR FITNESS FOR ANY PARTICULAR USE, FREEDOM FROM ANY COMPUTER DISEASES * OR ITS CONFORMITY TO ANY SPECIFICATION. THE ENTIRE RISK AS TO QUALITY * AND PERFORMANCE OF THE SOFTWARE IS WITH THE USER. * * Author : $Author: kleber $ * Last update : $Date: 2001/06/06 10:32:30 $ * Revision : $Revision: 1.1.1.1 $ * State: $State: Exp $ */ package jToolkit.gui; import javax.swing.*; import java.awt.event.*; import java.awt.*; /** * The CommandJToggleButton extends the normal (Swing-)JToggleButton with an automatic command * call when the ActionEvent is fired. * * * @author Andreas Schroeter * @since 30.03. */ public class CommandJToggleButton extends JToggleButton implements ActionListener { private int insetSize = 2; private int ID; private CommandToggleButtonListener cbl; public int getID(){ return ID;} public CommandToggleButtonListener getCommandToggleButtonListener(){ return cbl;} public CommandJToggleButton (String label, boolean selected, CommandToggleButtonListener cbl, int ID) { super (label,selected); this.ID = ID; this.cbl = cbl; this.setMargin(new Insets(insetSize,insetSize,insetSize,insetSize)); setAlignmentX(0.5f); setAlignmentY(0.5f); addActionListener (this); } public CommandJToggleButton (CommandToggleButtonListener cbl, int ID) { super (); this.ID = ID; this.cbl = cbl; this.setMargin(new Insets(insetSize,insetSize,insetSize,insetSize)); setAlignmentX(0.5f); setAlignmentY(0.5f); addActionListener (this); } public CommandJToggleButton(CommandJToggleButton b) { super(); this.ID = b.getID(); this.cbl = b.getCommandToggleButtonListener(); this.setMargin(b.getMargin()); this.setIcon(b.getIcon()); this.setText(b.getText()); this.setSelected(b.isSelected()); this.setAlignmentX(b.getAlignmentX()); this.setAlignmentY(b.getAlignmentY()); this.setToolTipText(b.getToolTipText()); addActionListener (this); } public CommandJToggleButton(String text, Icon icon,boolean selected, CommandToggleButtonListener cbl, int ID) { super (text, icon,selected); this.ID = ID; this.cbl = cbl; this.setMargin(new Insets(insetSize,insetSize,insetSize,insetSize)); setAlignmentX(0.5f); setAlignmentY(0.5f); addActionListener (this); } public CommandJToggleButton(Icon icon, boolean selected,CommandToggleButtonListener cbl, int ID) { super (icon,selected); this.ID = ID; this.cbl = cbl; this.setMargin(new Insets(insetSize,insetSize,insetSize,insetSize)); setAlignmentX(0.5f); setAlignmentY(0.5f); addActionListener (this); } public void actionPerformed(ActionEvent e) { JToggleButton tb = (JToggleButton)e.getSource(); //if (tb.isSelected()) tb.setBackground(new Color(Color.red)); //else tb.setBackground(new Color(Color.blue)); if (e.getSource() == this) cbl.buttonClicked (ID,((JToggleButton)(e.getSource())).isSelected()); } } /* * CVS Log * $Log: CommandJToggleButton.java,v $ * Revision 1.1.1.1 2001/06/06 10:32:30 kleber * Init commit for DICOMscope 3.5 * Create new CVS * */ dicomscope-3.6.0/tkgui/jToolkit/gui/CommandScrollbarListener.java0000644000265600020320000000301711262371100024264 0ustar tilleaadmin/* * * Copyright (C) 1999, Institute for MicroTherapy * * This software and supporting documentation were developed by * * University of Witten/Herdecke * Department of Radiology and MicroTherapy * Institute for MicroTherapy * Medical computer science * * Universitaetsstrasse 142 * 44799 Bochum, Germany * * http://www.microtherapy.de/go/cs * mailto:computer.science@microtherapy.de * * THIS SOFTWARE IS MADE AVAILABLE, AS IS, AND THE INSTITUTE MAKES NO * WARRANTY REGARDING THE SOFTWARE, ITS PERFORMANCE, ITS MERCHANTABILITY * OR FITNESS FOR ANY PARTICULAR USE, FREEDOM FROM ANY COMPUTER DISEASES * OR ITS CONFORMITY TO ANY SPECIFICATION. THE ENTIRE RISK AS TO QUALITY * AND PERFORMANCE OF THE SOFTWARE IS WITH THE USER. * * Author : $Author: kleber $ * Last update : $Date: 2001/06/06 10:32:30 $ * Revision : $Revision: 1.1.1.1 $ * State: $State: Exp $ */ package jToolkit.gui; /** * Interface CommandScrollbarListener; Implementations can handle events from * CommandScrollbars (AWT and Swing). * * @author Andreas Schroeter * @since 30.03. */ public interface CommandScrollbarListener { /** * Called when a registered CommandScrollbar with an ID is called. * @param ID ID of the Scrollbar. */ abstract public void ScrollbarChanged (int ID, int toValue); } /* * CVS Log * $Log: CommandScrollbarListener.java,v $ * Revision 1.1.1.1 2001/06/06 10:32:30 kleber * Init commit for DICOMscope 3.5 * Create new CVS * */ dicomscope-3.6.0/tkgui/jToolkit/gui/CommandTextListener.java0000644000265600020320000000274711262371100023276 0ustar tilleaadmin/* * * Copyright (C) 1999, Institute for MicroTherapy * * This software and supporting documentation were developed by * * University of Witten/Herdecke * Department of Radiology and MicroTherapy * Institute for MicroTherapy * Medical computer science * * Universitaetsstrasse 142 * 44799 Bochum, Germany * * http://www.microtherapy.de/go/cs * mailto:computer.science@microtherapy.de * * THIS SOFTWARE IS MADE AVAILABLE, AS IS, AND THE INSTITUTE MAKES NO * WARRANTY REGARDING THE SOFTWARE, ITS PERFORMANCE, ITS MERCHANTABILITY * OR FITNESS FOR ANY PARTICULAR USE, FREEDOM FROM ANY COMPUTER DISEASES * OR ITS CONFORMITY TO ANY SPECIFICATION. THE ENTIRE RISK AS TO QUALITY * AND PERFORMANCE OF THE SOFTWARE IS WITH THE USER. * * Author : $Author: kleber $ * Last update : $Date: 2001/06/06 10:32:30 $ * Revision : $Revision: 1.1.1.1 $ * State: $State: Exp $ */ package jToolkit.gui; /** * Implementations can handle events from the JTextField (Swing). * * @author Andreas Schroeter * @since 30.03. */ public interface CommandTextListener { /** * Called when a registered JTextField with an ID is called. * @param ID ID of the JTextField. * @param text text to be set */ abstract public void setText (int ID, String text); } /* * CVS Log * $Log: CommandTextListener.java,v $ * Revision 1.1.1.1 2001/06/06 10:32:30 kleber * Init commit for DICOMscope 3.5 * Create new CVS * */ dicomscope-3.6.0/tkgui/jToolkit/gui/CommandToggleButtonListener.java0000644000265600020320000000304611262371100024760 0ustar tilleaadmin/* * * Copyright (C) 1999, Institute for MicroTherapy * * This software and supporting documentation were developed by * * University of Witten/Herdecke * Department of Radiology and MicroTherapy * Institute for MicroTherapy * Medical computer science * * Universitaetsstrasse 142 * 44799 Bochum, Germany * * http://www.microtherapy.de/go/cs * mailto:computer.science@microtherapy.de * * THIS SOFTWARE IS MADE AVAILABLE, AS IS, AND THE INSTITUTE MAKES NO * WARRANTY REGARDING THE SOFTWARE, ITS PERFORMANCE, ITS MERCHANTABILITY * OR FITNESS FOR ANY PARTICULAR USE, FREEDOM FROM ANY COMPUTER DISEASES * OR ITS CONFORMITY TO ANY SPECIFICATION. THE ENTIRE RISK AS TO QUALITY * AND PERFORMANCE OF THE SOFTWARE IS WITH THE USER. * * Author : $Author: kleber $ * Last update : $Date: 2001/06/06 10:32:30 $ * Revision : $Revision: 1.1.1.1 $ * State: $State: Exp $ */ package jToolkit.gui; /** * Implementations can handle events from the JToggleButton (Swing). * * @author Andreas Schroeter * @since 30.03. */ public interface CommandToggleButtonListener { /** * Called when a registered ToggleButton with an ID is called. * @param ID ID of the ToggleButton. * @param selected true if ToggleButton should be selected */ abstract public void buttonClicked (int ID, boolean selected); } /* * CVS Log * $Log: CommandToggleButtonListener.java,v $ * Revision 1.1.1.1 2001/06/06 10:32:30 kleber * Init commit for DICOMscope 3.5 * Create new CVS * */ dicomscope-3.6.0/tkgui/jToolkit/gui/DisposeCommand.java0000644000265600020320000000325111262371100022241 0ustar tilleaadmin/* * * Copyright (C) 1999, Institute for MicroTherapy * * This software and supporting documentation were developed by * * University of Witten/Herdecke * Department of Radiology and MicroTherapy * Institute for MicroTherapy * Medical computer science * * Universitaetsstrasse 142 * 44799 Bochum, Germany * * http://www.microtherapy.de/go/cs * mailto:computer.science@microtherapy.de * * THIS SOFTWARE IS MADE AVAILABLE, AS IS, AND THE INSTITUTE MAKES NO * WARRANTY REGARDING THE SOFTWARE, ITS PERFORMANCE, ITS MERCHANTABILITY * OR FITNESS FOR ANY PARTICULAR USE, FREEDOM FROM ANY COMPUTER DISEASES * OR ITS CONFORMITY TO ANY SPECIFICATION. THE ENTIRE RISK AS TO QUALITY * AND PERFORMANCE OF THE SOFTWARE IS WITH THE USER. * * Author : $Author: kleber $ * Last update : $Date: 2001/06/06 10:32:30 $ * Revision : $Revision: 1.1.1.1 $ * State: $State: Exp $ */ package jToolkit.gui; import javax.swing.*; /** * Command-Class for i.e. CommandJButton, CommandAWTButton. * The exit-code will be the button-ID. * * @author Andreas Schroeter * @since 30.03. */ public class DisposeCommand implements CommandButtonListener { private JDialog dlg; private boolean wasClicked = false; public DisposeCommand (JDialog dlg) { this.dlg = dlg; } public void buttonClicked (int ID) { dlg.setVisible(false); wasClicked = true; } public boolean wasClicked() { return wasClicked; } } /* * CVS Log * $Log: DisposeCommand.java,v $ * Revision 1.1.1.1 2001/06/06 10:32:30 kleber * Init commit for DICOMscope 3.5 * Create new CVS * */ dicomscope-3.6.0/tkgui/jToolkit/gui/jFontTools.java0000644000265600020320000000273711262371100021445 0ustar tilleaadmin/* * * Copyright (C) 1999, Institute for MicroTherapy * * This software and supporting documentation were developed by * * University of Witten/Herdecke * Department of Radiology and MicroTherapy * Institute for MicroTherapy * Medical computer science * * Universitaetsstrasse 142 * 44799 Bochum, Germany * * http://www.microtherapy.de/go/cs * mailto:computer.science@microtherapy.de * * THIS SOFTWARE IS MADE AVAILABLE, AS IS, AND THE INSTITUTE MAKES NO * WARRANTY REGARDING THE SOFTWARE, ITS PERFORMANCE, ITS MERCHANTABILITY * OR FITNESS FOR ANY PARTICULAR USE, FREEDOM FROM ANY COMPUTER DISEASES * OR ITS CONFORMITY TO ANY SPECIFICATION. THE ENTIRE RISK AS TO QUALITY * AND PERFORMANCE OF THE SOFTWARE IS WITH THE USER. * * Author : $Author: kleber $ * Last update : $Date: 2001/06/06 10:32:30 $ * Revision : $Revision: 1.1.1.1 $ * State: $State: Exp $ */ package jToolkit.gui; import java.awt.*; /** * Class to change the font size of a given Component. * * @author Andreas Schroeter * @since 30.03. */ public class jFontTools { public static void setFontSize (Component c, int newSize) { Font f = c.getFont(); Font nf = new Font (f.getName(), f.getStyle(), newSize); c.setFont (nf); } } /* * CVS Log * $Log: jFontTools.java,v $ * Revision 1.1.1.1 2001/06/06 10:32:30 kleber * Init commit for DICOMscope 3.5 * Create new CVS * */ dicomscope-3.6.0/tkgui/jToolkit/gui/TabPanel.java0000644000265600020320000002423011262371100021022 0ustar tilleaadmin/* * * Copyright (C) 1999, Institute for MicroTherapy * * This software and supporting documentation were developed by * * University of Witten/Herdecke * Department of Radiology and MicroTherapy * Institute for MicroTherapy * Medical computer science * * Universitaetsstrasse 142 * 44799 Bochum, Germany * * http://www.microtherapy.de/go/cs * mailto:computer.science@microtherapy.de * * THIS SOFTWARE IS MADE AVAILABLE, AS IS, AND THE INSTITUTE MAKES NO * WARRANTY REGARDING THE SOFTWARE, ITS PERFORMANCE, ITS MERCHANTABILITY * OR FITNESS FOR ANY PARTICULAR USE, FREEDOM FROM ANY COMPUTER DISEASES * OR ITS CONFORMITY TO ANY SPECIFICATION. THE ENTIRE RISK AS TO QUALITY * AND PERFORMANCE OF THE SOFTWARE IS WITH THE USER. * * Author : $Author: kleber $ * Last update : $Date: 2001/06/06 10:32:30 $ * Revision : $Revision: 1.1.1.1 $ * State: $State: Exp $ */ package jToolkit.gui; import java.awt.*; import java.awt.event.MouseEvent; import java.awt.event.MouseListener; import java.util.Vector; import main.MainContext; /** * TabPanel is a container for a set of tabbed cards, lying atop each other, * but with the labelled tabs exposed at the top. That is, the classic Tab * Folder. Each card is an awt.component of whatever design you wish. The * topmost card can be selected programmatically (Using first(), last(), * next(), previous(), or show(name)), or by clicking on the tab with the mouse. *

* Components should be added using add(name,component)); the name is used * to label the tab. If you set the layout manager, it should be a subclass * of CardLayout. * You probably want to setBackground() to a color contrasting that of * the parent and the components. * * @author Andreas Schroeter * @since 30.03. */ public class TabPanel extends Panel implements MouseListener { private int dummy = 0; public TabPanel() { margin = 3; names = new Vector(10, 10); tabN = 12; tabLeft = new int[2][tabN]; tabRight = new int[2][tabN]; setLayout(new CardLayout()); setTabFont(new Font("Helvetica", 1, 12)); addMouseListener(this); } int findComponent(Component c) { for(int i = 0; i < nCards; i++) if(getComponent(i) == c) return i; return -1; } public Component add(String name, Component component) { name = name.intern(); super.add(name, component); if(!names.contains(name)) { names.addElement(name); nCards++; if(isShowing()) { computeTabs(); repaint(); } } return component; } public void remove(Component component) { int i = findComponent(component); super.remove(component); names.removeElementAt(i); nCards--; if(i < selected) setSelected(selected - 1, true); else if(i == selected && nCards > 0) setSelected(selected % nCards, true); if(isShowing()) { computeTabs(); repaint(); } } public void remove(String name) { int i = names.indexOf(name.intern()); if(i != -1) remove(getComponent(i)); } public void removeAll() { super.removeAll(); names.removeAllElements(); repaint(); } void setSelected(int i, boolean force) { if(force || i != selected && i >= 0 && i < nCards) { if(nCards > 0) selected = i % nCards; ((CardLayout)getLayout()).show(this, (String)names.elementAt(i)); repaint(); Component component = getComponent(i); } } public void first() { setSelected(0, false); } public void last() { setSelected(nCards - 1, false); } public void next() { setSelected((selected + 1) % nCards, false); } public void previous() { setSelected(((selected - 1) + nCards) % nCards, false); } public void show(String name) { setSelected(names.indexOf(name.intern()), false); } public void show(Component component) { setSelected(findComponent(component), false); } int cardAt(int x, int y) { if(y <= tabH) { x += offset; for(int i = 0; i < nCards; i++) if(pos[i] <= x && x < pos[i + 1]) return i; } return -1; } public String documentCard(String name) { return "Select Tab Card " + name; } public void mouseClicked(MouseEvent e) { int i = cardAt(e.getX(), e.getY()); if(i != -1) setSelected(i, false); } public void mouseEntered(MouseEvent mouseevent) { // empty } public void mouseExited(MouseEvent mouseevent) { // empty } public void mousePressed(MouseEvent mouseevent) { // empty } public void mouseReleased(MouseEvent e) { int i = cardAt(e.getX(), e.getY()); if(i != -1) setSelected(i, false); } public Insets getInsets() { return new Insets(tabH + margin, margin, margin, margin); } public void setTabFont(Font font) { tabFont = font; metric = getFontMetrics(font); int r = (metric.getHeight() + 1) / 2; tabH = 2 * r; int nn = (tabN - 2) / 2; for(int i = 0; i <= nn; i++) { int c = r - (i*r)/nn; int s = (i*r)/nn; tabLeft[0][i] = s; tabLeft[1][i] = r + c; tabLeft[0][i + nn] = tabH - c; tabLeft[1][i + nn] = r - s; } tabLeft[0][2 * nn + 1] = tabH; tabLeft[1][2 * nn + 1] = tabH; for(int i = 0; i < tabN; i++) { tabRight[0][i] = -tabLeft[0][i]; tabRight[1][i] = tabLeft[1][i]; } } void computeTabs() { if(pos == null || pos.length <= nCards) { width = new int[nCards + 1]; pos = new int[nCards + 1]; } int x = tabH / 2; for(int i = 0; i < nCards; i++) { pos[i] = x; width[i] = tabH + metric.stringWidth((String)names.elementAt(i)); x += width[i]; } pos[nCards] = x; } public void doLayout() { super.doLayout(); computeTabs(); } void paintTabEdge(Graphics g, int x, int edges[][]) { g.translate(x, 0); g.setColor(getBackground()); g.fillPolygon(edges[0], edges[1], tabN); g.setColor(getForeground()); g.drawPolygon(edges[0], edges[1], tabN - 1); g.translate(-x, 0); } void paintTab(Graphics g, int x, int p) { int r = tabH / 2; int w = width[p]; paintTabEdge(g, x - r, tabLeft); paintTabEdge(g, x + w + r, tabRight); g.setColor(getBackground()); g.fillRect(x + r, 0, w - tabH, tabH); g.setColor(getForeground()); g.drawLine(x + r, 0, (x + w) - r, 0); g.setFont(tabFont); g.drawString((String)names.elementAt(p), x + r, tabH - metric.getDescent()); } public void paint(Graphics g) { Dimension sz = getSize(); int w = sz.width - 1; int h = sz.height - 1; int r = tabH / 2; int s = selected; int shadow = 4; int nShadows = 3; g.setColor(getParent().getBackground()); g.fillRect(0, 0, w + 1, tabH); g.setColor(getForeground()); if(nCards == 0) { g.drawLine(0, tabH, w, tabH); } else { int offmax = pos[s] - r - Math.min(nShadows, s) * shadow; int offmin = (pos[s + 1] - w) + r + Math.min(nCards - s, nShadows) * shadow; if(offset < offmin || offset > offmax) offset = Math.min(Math.max(0, (offmin + offmax) / 2), (pos[nCards] + r) - w); int j = 0; for(int x = offset + r; j < s && pos[j] <= x; j++) dummy = 1; if(j > 0) { int x = 0; for(int i = Math.max(0, j - nShadows); i < j - 1;) { paintTabEdge(g, x, tabLeft); i++; x += shadow; } paintTab(g, x + r, j - 1); } for(int i = j; i < s; i++) paintTab(g, pos[i] - offset, i); j = nCards - 1; for(int x = (offset + w) - r; j > s && pos[j + 1] >= x; j--) dummy = 2; if(j < nCards - 1) { int x = w; for(int i = Math.min(nCards - 1, j + nShadows); i > j + 1;) { //paintTabEdge(g, x, tabRight); i--; x -= shadow; } paintTab(g, x - r - width[j + 1], j + 1); } for(int i = j; i > s; i--) paintTab(g, pos[i] - offset, i); paintTab(g, pos[s] - offset, s); g.drawLine(0, tabH, pos[s] - r - offset, tabH); g.clearRect(pos[s] - r - offset, tabH, width[s] + tabH, 1); g.drawLine((pos[s + 1] + r) - offset, tabH, w, tabH); g.drawLine(w, tabH, w, h); g.drawLine(w, h, 0, h); g.drawLine(0, h, 0, tabH); } } public Font getFont () { return tabFont; } public void setFont (Font f) { setTabFont (f); } public int margin; Font tabFont; FontMetrics metric; int nCards; Vector names; int pos[]; int width[]; int selected; int offset; int tabH; int tabN; int tabLeft[][]; int tabRight[][]; } /* * CVS Log * $Log: TabPanel.java,v $ * Revision 1.1.1.1 2001/06/06 10:32:30 kleber * Init commit for DICOMscope 3.5 * Create new CVS * */ dicomscope-3.6.0/tkgui/jToolkit/io/0002755000265600020320000000000011262371101016316 5ustar tilleaadmindicomscope-3.6.0/tkgui/jToolkit/io/IconRetriever.java0000644000265600020320000000465511262371101021751 0ustar tilleaadmin/* * * Copyright (C) 1999, Institute for MicroTherapy * * This software and supporting documentation were developed by * * University of Witten/Herdecke * Department of Radiology and MicroTherapy * Institute for MicroTherapy * Medical computer science * * Universitaetsstrasse 142 * 44799 Bochum, Germany * * http://www.microtherapy.de/go/cs * mailto:computer.science@microtherapy.de * * THIS SOFTWARE IS MADE AVAILABLE, AS IS, AND THE INSTITUTE MAKES NO * WARRANTY REGARDING THE SOFTWARE, ITS PERFORMANCE, ITS MERCHANTABILITY * OR FITNESS FOR ANY PARTICULAR USE, FREEDOM FROM ANY COMPUTER DISEASES * OR ITS CONFORMITY TO ANY SPECIFICATION. THE ENTIRE RISK AS TO QUALITY * AND PERFORMANCE OF THE SOFTWARE IS WITH THE USER. * * Author : $Author: kleber $ * Last update : $Date: 2001/06/06 10:32:30 $ * Revision : $Revision: 1.1.1.1 $ * State: $State: Exp $ */ package jToolkit.io; import javax.swing.*; import java.io.*; import java.net.*; /** * This class handles the loading of icons */ public class IconRetriever { public ImageIcon getIcon (String filename) { byte[] imgStream = null; try { Class c = getClass(); ClassLoader cl = c.getClassLoader(); URL u = cl.getResource (filename); if (u != null) { InputStream is = u.openStream(); ByteArrayOutputStream bas = new ByteArrayOutputStream(); int data; while ((data = is.read()) != -1) { bas.write (data); } imgStream = bas.toByteArray(); } else // try normal way { FileInputStream pf = new FileInputStream (filename); imgStream = new byte[pf.available()]; pf.read (imgStream); } } catch (Exception e) { System.out.println ("error!! " + e); } if (imgStream != null) { return new ImageIcon (imgStream); } else System.out.println ("Can't retrieve Icon"); return null; } } /* * CVS Log * $Log: IconRetriever.java,v $ * Revision 1.1.1.1 2001/06/06 10:32:30 kleber * Init commit for DICOMscope 3.5 * Create new CVS * */ dicomscope-3.6.0/tkgui/jToolkit/io/NullPrintStream.java0000644000265600020320000000472411262371101022271 0ustar tilleaadmin/* * * Copyright (C) 1999, Institute for MicroTherapy * * This software and supporting documentation were developed by * * University of Witten/Herdecke * Department of Radiology and MicroTherapy * Institute for MicroTherapy * Medical computer science * * Universitaetsstrasse 142 * 44799 Bochum, Germany * * http://www.microtherapy.de/go/cs * mailto:computer.science@microtherapy.de * * THIS SOFTWARE IS MADE AVAILABLE, AS IS, AND THE INSTITUTE MAKES NO * WARRANTY REGARDING THE SOFTWARE, ITS PERFORMANCE, ITS MERCHANTABILITY * OR FITNESS FOR ANY PARTICULAR USE, FREEDOM FROM ANY COMPUTER DISEASES * OR ITS CONFORMITY TO ANY SPECIFICATION. THE ENTIRE RISK AS TO QUALITY * AND PERFORMANCE OF THE SOFTWARE IS WITH THE USER. * * Author : $Author: kleber $ * Last update : $Date: 2001/06/06 10:32:30 $ * Revision : $Revision: 1.1.1.1 $ * State: $State: Exp $ */ package jToolkit.io; import java.io.*; /** * Creates a PrintStream to null-device. This class can be used to avoid console * output (System.setOut (new NullPrintStream()); ). * * @author Andreas Schroeter * @since 30.03. */ public class NullPrintStream extends PrintStream { public NullPrintStream() {super (new ByteArrayOutputStream());} public NullPrintStream(OutputStream out) {super (out); } public NullPrintStream(OutputStream out, boolean autoFlush) {super (out,autoFlush);} public void flush() {} public void close() {} public boolean checkError() { return false; } protected void setError() {} public void write(int b) {} public void write(byte buf[], int off, int len) {} public void print(boolean b) {} public void print(char c) {} public void print(int i) {} public void print(long l) {} public void print(float f) {} public void print(double d) {} public void print(char s[]) {} public void print(String s) {} public void print(Object obj) {} public void println() {} public void println(boolean x) {} public void println(char x) {} public void println(int x) {} public void println(long x) {} public void println(float x) {} public void println(double x) {} public void println(char x[]) {} public void println(String x) {} public void println(Object x) {} } /* * CVS Log * $Log: NullPrintStream.java,v $ * Revision 1.1.1.1 2001/06/06 10:32:30 kleber * Init commit for DICOMscope 3.5 * Create new CVS * */ dicomscope-3.6.0/tkgui/main/0002755000265600020320000000000011262371101015034 5ustar tilleaadmindicomscope-3.6.0/tkgui/main/ChangeOptionsEvent.java0000644000265600020320000000277411262371101021452 0ustar tilleaadmin/* * * Copyright (C) 1999, Institute for MicroTherapy * * This software and supporting documentation were developed by * * University of Witten/Herdecke * Department of Radiology and MicroTherapy * Institute for MicroTherapy * Medical computer science * * Universitaetsstrasse 142 * 44799 Bochum, Germany * * http://www.microtherapy.de/go/cs * mailto:computer.science@microtherapy.de * * THIS SOFTWARE IS MADE AVAILABLE, AS IS, AND THE INSTITUTE MAKES NO * WARRANTY REGARDING THE SOFTWARE, ITS PERFORMANCE, ITS MERCHANTABILITY * OR FITNESS FOR ANY PARTICULAR USE, FREEDOM FROM ANY COMPUTER DISEASES * OR ITS CONFORMITY TO ANY SPECIFICATION. THE ENTIRE RISK AS TO QUALITY * AND PERFORMANCE OF THE SOFTWARE IS WITH THE USER. * * Author : $Author: kleber $ * Last update : $Date: 2001/06/06 10:32:30 $ * Revision : $Revision: 1.1.1.1 $ * State: $State: Exp $ */ package main; import java.util.*; /** * Event for changing the configuration of DICOMscope. You can change the * configuration in the OptionDialog */ public class ChangeOptionsEvent extends DSEvent { public Hashtable config; public ChangeOptionsEvent(Object o, Hashtable config) { super(o); this.config = config; } public Hashtable getConfig() { return config; } } /* * CVS Log * $Log: ChangeOptionsEvent.java,v $ * Revision 1.1.1.1 2001/06/06 10:32:30 kleber * Init commit for DICOMscope 3.5 * Create new CVS * */ dicomscope-3.6.0/tkgui/main/Controller.java0000644000265600020320000001521211262371101020021 0ustar tilleaadmin/* * * Copyright (C) 1999, Institute for MicroTherapy * * This software and supporting documentation were developed by * * University of Witten/Herdecke * Department of Radiology and MicroTherapy * Institute for MicroTherapy * Medical computer science * * Universitaetsstrasse 142 * 44799 Bochum, Germany * * http://www.microtherapy.de/go/cs * mailto:computer.science@microtherapy.de * * THIS SOFTWARE IS MADE AVAILABLE, AS IS, AND THE INSTITUTE MAKES NO * WARRANTY REGARDING THE SOFTWARE, ITS PERFORMANCE, ITS MERCHANTABILITY * OR FITNESS FOR ANY PARTICULAR USE, FREEDOM FROM ANY COMPUTER DISEASES * OR ITS CONFORMITY TO ANY SPECIFICATION. THE ENTIRE RISK AS TO QUALITY * AND PERFORMANCE OF THE SOFTWARE IS WITH THE USER. * * Author : $Author: kleber $ * Last update : $Date: 2001/06/06 10:32:30 $ * Revision : $Revision: 1.1.1.1 $ * State: $State: Exp $ */ package main; import java.util.*; import javax.swing.event.*; /** * The class Controller provides an event-based communication in * an application. Parts of the application can add itself to this * server to recieve incoming events. Those parts must implement the * "Listener"-interface. * Do add a listener you may use the following commands: * * class SomeListener implements Listener * { * public SomeListener() * { * Controller es = Controller.instance().addMainListener(this); * } * * public boolean processEvent (JiveEvent e) * { * if (e instanceof MySpecialEvent) doSomething(); * return true; * } * } */ public class Controller { // Singleton Pattern: /** The one and only instance is stored here. */ private static Controller theInstance = null; protected EventListenerList listenrList ; /** * The Constructor of this class. The one-and-only object of * this class can be created (or retrieved) with this method. * * @return an instance of this class. */ public static Controller instance() { if (theInstance == null) theInstance = new Controller(); return theInstance; } /** * The internal constructor of this class. Don't call direct. */ protected Controller () { // do not instanciate this way! listenrList = new EventListenerList(); } public void addMainListener(MainListener l) { listenrList.add(MainListener.class, l); } public void addGuiComponentListener(GuiComponentListener l) { listenrList.add(GuiComponentListener.class, l); } public void removeGuiComponentListener(GuiComponentListener l) { listenrList.remove(GuiComponentListener.class, l); } public void addStatusListener(StatusListener l) { listenrList.add(StatusListener.class, l); } public void removeStatusListener(StatusListener l) { listenrList.remove(StatusListener.class, l); } public void addPrintListener(PrintListener l) { listenrList.add(PrintListener.class, l); } public void removePrintListener(PrintListener l) { listenrList.remove(PrintListener.class, l); } // Notify all listeners that have registered interest for // notification on this event type. The event instance // is lazily created using the parameters passed into // the fire method. public void fireEvent(DSEvent e) { // Guaranteed to return a non-null array Object[] listeners = listenrList.getListenerList(); // Process the listeners last to first, notifying // those that are interested in this event for (int i = listeners.length-2; i>=0; i-=2) { if (listeners[i]==MainListener.class) { // Lazily create the event: //if (jiveMessage == null) fooEvent = new FooEvent(this); ((MainListener)listeners[i+1]).processEvent(e); } } } // Notify all listeners that have registered interest for // notification on this event type. The event instance // is lazily created using the parameters passed into // the fire method. public void fireNotification(DSEvent e) { // Guaranteed to return a non-null array Object[] listeners = listenrList.getListenerList(); // Process the listeners last to first, notifying // those that are interested in this event for (int i = listeners.length-2; i>=0; i-=2) { if (listeners[i]==GuiComponentListener.class) { // Lazily create the event: //if (jiveMessage == null) fooEvent = new FooEvent(this); ((GuiComponentListener)listeners[i+1]).processComponents(e); } } } // Notify all listeners that have registered interest for // notification on this event type. The event instance // is lazily created using the parameters passed into // the fire method. public void fireStatus(DSEvent e) { // Guaranteed to return a non-null array Object[] listeners = listenrList.getListenerList(); // Process the listeners last to first, notifying // those that are interested in this event for (int i = listeners.length-2; i>=0; i-=2) { if (listeners[i]==StatusListener.class) { // Lazily create the event: //if (jiveMessage == null) fooEvent = new FooEvent(this); ((StatusListener)listeners[i+1]).processStatus(e); } } } // Notify all listeners that have registered interest for // notification on this event type. The event instance // is lazily created using the parameters passed into // the fire method. public void firePrint(DSEvent e) { // Guaranteed to return a non-null array Object[] listeners = listenrList.getListenerList(); // Process the listeners last to first, notifying // those that are interested in this event for (int i = listeners.length-2; i>=0; i-=2) { if (listeners[i]==PrintListener.class) { // Lazily create the event: //if (jiveMessage == null) fooEvent = new FooEvent(this); ((PrintListener)listeners[i+1]).processPrint(e); } } } } /* * CVS Log * $Log: Controller.java,v $ * Revision 1.1.1.1 2001/06/06 10:32:30 kleber * Init commit for DICOMscope 3.5 * Create new CVS * */ dicomscope-3.6.0/tkgui/main/DbActionEvent.java0000644000265600020320000000617411262371101020372 0ustar tilleaadmin/* * * Copyright (C) 1999, Institute for MicroTherapy * * This software and supporting documentation were developed by * * University of Witten/Herdecke * Department of Radiology and MicroTherapy * Institute for MicroTherapy * Medical computer science * * Universitaetsstrasse 142 * 44799 Bochum, Germany * * http://www.microtherapy.de/go/cs * mailto:computer.science@microtherapy.de * * THIS SOFTWARE IS MADE AVAILABLE, AS IS, AND THE INSTITUTE MAKES NO * WARRANTY REGARDING THE SOFTWARE, ITS PERFORMANCE, ITS MERCHANTABILITY * OR FITNESS FOR ANY PARTICULAR USE, FREEDOM FROM ANY COMPUTER DISEASES * OR ITS CONFORMITY TO ANY SPECIFICATION. THE ENTIRE RISK AS TO QUALITY * AND PERFORMANCE OF THE SOFTWARE IS WITH THE USER. * * Author : $Author: kleber $ * Last update : $Date: 2001/06/06 10:32:30 $ * Revision : $Revision: 1.1.1.1 $ * State: $State: Exp $ */ package main; import java.io.*; /** * DSEvents for Actions */ public class DbActionEvent extends DSEvent { public static final int LOAD_DB = 0; public static final int LOAD_PS = 1; public static final int LOAD_IM = 2; public static final int SAVE_DB = 3; public static final int SAVE_AS = 4; public static final int SAVE_SCREEN = 5; public static final int DELETE = 6; public static final int REFRESH = 7; public static final int SENDTO = 8; public static final int LOAD_SR = 9; public static final int PRINTHC = 100; public static final int DUMP = 101; public static final int CHECKIOD = 102; public static final int PRINTSTTOPRINTER = 103; public static final int PRINTST = 104; public int type; public static final int LOAD_PS_FOR_SR = 300; public static final int LOAD_IMAGE_FOR_SR = 301; public static final int LOAD_SR_FOR_SR = 302; public static final int SAVE_DB_SR = 303; public String instanceUid; public String sopClassUid; public String psInstanceUid; public String psSOPClassUid; public int[] frames = null; public boolean savePS = true; public DbActionEvent(Object o, int type) { super(o); this.type = type; } public DbActionEvent(Object o, int type, boolean savePS) { super(o); this.type = type; this.savePS = savePS; } public DbActionEvent(Object o, int type, String sopClassUid,String instanceUid,int[] frames ) { super(o); this.type = type; this.sopClassUid = sopClassUid; this.instanceUid = instanceUid; this.frames = frames; } public DbActionEvent(Object o, int type, String sopClassUid,String instanceUid, String psSOPClassUid, String psInstanceUid, int[] frames) { super(o); this.type = type; this.sopClassUid = sopClassUid; this.instanceUid = instanceUid; this.psInstanceUid = psInstanceUid; this.psSOPClassUid = psSOPClassUid; this.frames = frames; } } /* * CVS Log * $Log: DbActionEvent.java,v $ * Revision 1.1.1.1 2001/06/06 10:32:30 kleber * Init commit for DICOMscope 3.5 * Create new CVS * */ dicomscope-3.6.0/tkgui/main/DICOMInstance.java0000644000265600020320000000307311262371101020220 0ustar tilleaadmin/* * * Copyright (C) 1999, Institute for MicroTherapy * * This software and supporting documentation were developed by * * University of Witten/Herdecke * Department of Radiology and MicroTherapy * Institute for MicroTherapy * Medical computer science * * Universitaetsstrasse 142 * 44799 Bochum, Germany * * http://www.microtherapy.de/go/cs * mailto:computer.science@microtherapy.de * * THIS SOFTWARE IS MADE AVAILABLE, AS IS, AND THE INSTITUTE MAKES NO * WARRANTY REGARDING THE SOFTWARE, ITS PERFORMANCE, ITS MERCHANTABILITY * OR FITNESS FOR ANY PARTICULAR USE, FREEDOM FROM ANY COMPUTER DISEASES * OR ITS CONFORMITY TO ANY SPECIFICATION. THE ENTIRE RISK AS TO QUALITY * AND PERFORMANCE OF THE SOFTWARE IS WITH THE USER. * * Author : $Author: kleber $ * Last update : $Date: 2001/06/06 10:32:30 $ * Revision : $Revision: 1.1.1.1 $ * State: $State: Exp $ */ package main; /** * @author Klaus Kleber */ public class DICOMInstance { public String sopClassUid= null; public String sopInstanceUid = null; public DICOMInstance(String sopClassUid,String sopInstanceUid ) { this.sopClassUid = sopClassUid; this.sopInstanceUid = sopInstanceUid; } public String toString() { return new String("SOP Class Uid: " + sopClassUid + ", SOP Instance Uid: " + sopInstanceUid); } } /* * CVS Log * $Log: DICOMInstance.java,v $ * Revision 1.1.1.1 2001/06/06 10:32:30 kleber * Init commit for DICOMscope 3.5 * Create new CVS * */ dicomscope-3.6.0/tkgui/main/DicomScopeToolBar.java0000644000265600020320000001223711262371101021212 0ustar tilleaadmin/* * * Copyright (C) 1999, Institute for MicroTherapy * * This software and supporting documentation were developed by * * University of Witten/Herdecke * Department of Radiology and MicroTherapy * Institute for MicroTherapy * Medical computer science * * Universitaetsstrasse 142 * 44799 Bochum, Germany * * http://www.microtherapy.de/go/cs * mailto:computer.science@microtherapy.de * * THIS SOFTWARE IS MADE AVAILABLE, AS IS, AND THE INSTITUTE MAKES NO * WARRANTY REGARDING THE SOFTWARE, ITS PERFORMANCE, ITS MERCHANTABILITY * OR FITNESS FOR ANY PARTICULAR USE, FREEDOM FROM ANY COMPUTER DISEASES * OR ITS CONFORMITY TO ANY SPECIFICATION. THE ENTIRE RISK AS TO QUALITY * AND PERFORMANCE OF THE SOFTWARE IS WITH THE USER. * * Author : $Author: kleber $ * Last update : $Date: 2001/06/06 10:32:30 $ * Revision : $Revision: 1.1.1.1 $ * State: $State: Exp $ */ package main; import javax.swing.*; import javax.swing.event.*; import jToolkit.gui.*; import J2Ci.*; import java.awt.*; import java.util.*; /** * Contains the GUI for Toolbar */ public class DicomScopeToolBar extends JToolBar implements MainListener { private String view; private boolean imageSet = false; private GuiComponents gui; private boolean imageFunktionsOn = true; boolean print; public DicomScopeToolBar(Hashtable config, boolean print) { Controller.instance().addMainListener(this); gui = GuiComponents.getInstance(); setConfiguration(config, true); this.print = print; } private void changeToolbar(String view) { this.view = view; removeAll(); this.add(gui.loadImageButton); if (view.equals("Browser")) { this.add(gui.loadButton); this.add(gui.loadSRButton); this.add(gui.sendToButton); this.add(gui.refreshButton); this.add(gui.deleteButton); if ( print)this.add(gui.printHcButton); this.add(gui.printStToPrinterButton); this.add(gui.dumpButton); this.add(gui.checkIODButton); } this.addSeparator(); if (view.equals("Viewer")) { this.addSeparator(); this.add(gui.loadSRButton); if (imageSet) { this.add(gui.loadPSButton); this.add(gui.saveButton); this.add(gui.saveAsButton); this.add(gui.saveScreenButton); if ( print)this.add(gui.printButton); } if (imageSet&&imageFunktionsOn) { this.addSeparator(); this.add(gui.presentationLutButton); this.add(gui.lutButton); this.add(gui.psButton); this.add(gui.resetButton); this.addSeparator(); this.add(gui.invertButton); this.add(gui.flipButton); this.add(gui.rotButton); this.add(gui.zoomButton); this.add(gui.zoom1to1Button); this.add(gui.zoomFitButton); this.add(gui.voiButton); this.addSeparator(); this.add(gui.pointButton); this.add(gui.lineButton); this.add(gui.rectButton); this.add(gui.polyButton); // this.add(gui.interpolatedButton); this.add(gui.circleButton); this.add(gui.ellipseButton); this.add(gui.textButton); this.add(gui.editButton); this.add(gui.editLayerButton); this.add(gui.filledButton); this.add(gui.imageDisplayButton); this.addSeparator(); this.add(gui.rectShButton); this.add(gui.circleShButton); this.add(gui.polyShButton); this.add(gui.bmpShButton); this.add(gui.optShButton); } } if (view.equals("About")) { } this.addSeparator(); this.add(gui.optionButton); } public boolean processEvent (DSEvent e) { if (e instanceof TabbedChangeEvent) { changeToolbar(((TabbedChangeEvent)e).getTabbedTitle()); } if (e instanceof ImageActionEvent) { ImageActionEvent iae = (ImageActionEvent)e; if (iae.type == ImageActionEvent.ACTION_SETNEWIMAGE) { imageSet = true; changeToolbar(view); return true; } } if (e instanceof ChangeOptionsEvent) { setConfiguration(((ChangeOptionsEvent)e).getConfig(), false); } return false; } public void setConfiguration(Hashtable config, boolean init) { if (config.containsKey("PaintPanelPlacement")) { if (((String)config.get("PaintPanelPlacement")).equals("Toolbar")) { imageFunktionsOn = true; } else imageFunktionsOn =false; } if (!init) changeToolbar(view); } } /* * CVS Log * $Log: DicomScopeToolBar.java,v $ * Revision 1.1.1.1 2001/06/06 10:32:30 kleber * Init commit for DICOMscope 3.5 * Create new CVS * */ dicomscope-3.6.0/tkgui/main/DICOMSOPClassUID.java0000644000265600020320000000540211262371101020443 0ustar tilleaadmin/* * * Copyright (C) 1999, Institute for MicroTherapy * * This software and supporting documentation were developed by * * University of Witten/Herdecke * Department of Radiology and MicroTherapy * Institute for MicroTherapy * Medical computer science * * Universitaetsstrasse 142 * 44799 Bochum, Germany * * http://www.microtherapy.de/go/cs * mailto:computer.science@microtherapy.de * * THIS SOFTWARE IS MADE AVAILABLE, AS IS, AND THE INSTITUTE MAKES NO * WARRANTY REGARDING THE SOFTWARE, ITS PERFORMANCE, ITS MERCHANTABILITY * OR FITNESS FOR ANY PARTICULAR USE, FREEDOM FROM ANY COMPUTER DISEASES * OR ITS CONFORMITY TO ANY SPECIFICATION. THE ENTIRE RISK AS TO QUALITY * AND PERFORMANCE OF THE SOFTWARE IS WITH THE USER. * * Author : $Author: kleber $ * Last update : $Date: 2001/06/06 10:32:30 $ * Revision : $Revision: 1.1.1.1 $ * State: $State: Exp $ */ package main; import java.util.*; /** * This class contains the names and the uids of DICOM class UIDs * @author Klaus Kleber * @since 08.11.2000 */ public class DICOMSOPClassUID { /** * PS UID */ public static final String PS_UID = "1.2.840.10008.5.1.4.1.1.11.1"; /** * PS Name */ public static final String PS_UID_NAME = "Presentation State Storage Service Class"; /** * UID Basic Text SR */ public static final String BASIC_TEXT_SR_UID = "1.2.840.10008.5.1.4.1.1.88.11"; /** * UID Enhanced SR */ public static final String ENHANCED_SR_UID = "1.2.840.10008.5.1.4.1.1.88.22"; /** * UID Comprehensive SR */ public static final String COMPREHENSIVE_SR_UID = "1.2.840.10008.5.1.4.1.1.88.33"; /** * Name Basic Text SR */ public static final String BASIC_TEXT_SR_NAME= "Basic Text SR"; /** * Name Enhanced SR */ public static final String ENHANCED_SR_UID_NAME = "Enhanced SR"; /** * Name Comprehensive SR */ public static final String COMPREHENSIVE_SR_UID_NAME = "Comprehensive SR"; /** *Contains a dictionary form DICOM Uids to names */ private static Hashtable uids = null; static { uids = new Hashtable(); uids.put(PS_UID,PS_UID_NAME); uids.put(BASIC_TEXT_SR_UID,BASIC_TEXT_SR_NAME); uids.put(ENHANCED_SR_UID,ENHANCED_SR_UID_NAME); uids.put(COMPREHENSIVE_SR_UID,COMPREHENSIVE_SR_UID_NAME); } /** * Returns a name of a given UID */ private String getName(String uid) { return (String)uids.get(uid); } } /* * CVS Log * $Log: DICOMSOPClassUID.java,v $ * Revision 1.1.1.1 2001/06/06 10:32:30 kleber * Init commit for DICOMscope 3.5 * Create new CVS * */ dicomscope-3.6.0/tkgui/main/DSComponentType.java0000644000265600020320000000273711262371101020741 0ustar tilleaadmin/* * * Copyright (C) 1999, Institute for MicroTherapy * * This software and supporting documentation were developed by * * University of Witten/Herdecke * Department of Radiology and MicroTherapy * Institute for MicroTherapy * Medical computer science * * Universitaetsstrasse 142 * 44799 Bochum, Germany * * http://www.microtherapy.de/go/cs * mailto:computer.science@microtherapy.de * * THIS SOFTWARE IS MADE AVAILABLE, AS IS, AND THE INSTITUTE MAKES NO * WARRANTY REGARDING THE SOFTWARE, ITS PERFORMANCE, ITS MERCHANTABILITY * OR FITNESS FOR ANY PARTICULAR USE, FREEDOM FROM ANY COMPUTER DISEASES * OR ITS CONFORMITY TO ANY SPECIFICATION. THE ENTIRE RISK AS TO QUALITY * AND PERFORMANCE OF THE SOFTWARE IS WITH THE USER. * * Author : $Author: kleber $ * Last update : $Date: 2001/06/06 10:32:30 $ * Revision : $Revision: 1.1.1.1 $ * State: $State: Exp $ */ package main; /** * Contains DICOMScope component IDs */ public class DSComponentType { public static final String VIEWER = "Viewer"; public static final String BROWSER = "Browser"; public static final String PRINT = "Print"; public static final String PROCESS = "Process log"; public static final String ABOUT = "About"; public static final String ALL = "All"; } /* * CVS Log * $Log: DSComponentType.java,v $ * Revision 1.1.1.1 2001/06/06 10:32:30 kleber * Init commit for DICOMscope 3.5 * Create new CVS * */ dicomscope-3.6.0/tkgui/main/DSEvent.java0000644000265600020320000000241011262371101017202 0ustar tilleaadmin/* * * Copyright (C) 1999, Institute for MicroTherapy * * This software and supporting documentation were developed by * * University of Witten/Herdecke * Department of Radiology and MicroTherapy * Institute for MicroTherapy * Medical computer science * * Universitaetsstrasse 142 * 44799 Bochum, Germany * * http://www.microtherapy.de/go/cs * mailto:computer.science@microtherapy.de * * THIS SOFTWARE IS MADE AVAILABLE, AS IS, AND THE INSTITUTE MAKES NO * WARRANTY REGARDING THE SOFTWARE, ITS PERFORMANCE, ITS MERCHANTABILITY * OR FITNESS FOR ANY PARTICULAR USE, FREEDOM FROM ANY COMPUTER DISEASES * OR ITS CONFORMITY TO ANY SPECIFICATION. THE ENTIRE RISK AS TO QUALITY * AND PERFORMANCE OF THE SOFTWARE IS WITH THE USER. * * Author : $Author: kleber $ * Last update : $Date: 2001/06/06 10:32:30 $ * Revision : $Revision: 1.1.1.1 $ * State: $State: Exp $ */ package main; import java.util.*; /** * Superclass for all DICOMScope Events */ public class DSEvent extends EventObject { public DSEvent(Object o) { super(o); } } /* * CVS Log * $Log: DSEvent.java,v $ * Revision 1.1.1.1 2001/06/06 10:32:30 kleber * Init commit for DICOMscope 3.5 * Create new CVS * */ dicomscope-3.6.0/tkgui/main/GrayColorIndex.java0000644000265600020320000001673011262371101020575 0ustar tilleaadmin/* * * Copyright (C) 1999, Institute for MicroTherapy * * This software and supporting documentation were developed by * * University of Witten/Herdecke * Department of Radiology and MicroTherapy * Institute for MicroTherapy * Medical computer science * * Universitaetsstrasse 142 * 44799 Bochum, Germany * * http://www.microtherapy.de/go/cs * mailto:computer.science@microtherapy.de * * THIS SOFTWARE IS MADE AVAILABLE, AS IS, AND THE INSTITUTE MAKES NO * WARRANTY REGARDING THE SOFTWARE, ITS PERFORMANCE, ITS MERCHANTABILITY * OR FITNESS FOR ANY PARTICULAR USE, FREEDOM FROM ANY COMPUTER DISEASES * OR ITS CONFORMITY TO ANY SPECIFICATION. THE ENTIRE RISK AS TO QUALITY * AND PERFORMANCE OF THE SOFTWARE IS WITH THE USER. * * Author : $Author: kleber $ * Last update : $Date: 2001/06/06 10:32:30 $ * Revision : $Revision: 1.1.1.1 $ * State: $State: Exp $ */ package main; import java.awt.image.*; import java.awt.*; /** * This class creates color models for this programm * * @author Klaus Kleber * @since 30.04.99 */ public class GrayColorIndex extends java.lang.Object { /** * IndexColorModel for image data which contains 1 byte per pixel. * Every pixel will be interpreted as gray color. * * @since 30.04.1999 */ private static IndexColorModel gray12BitColorModel; /** * IndexColorModel for image data which contains 12 bits per pixel. * Every value will be interpreted as a gray color. * * @since 30.04.1999 */ private static IndexColorModel grayColorModel; private static IndexColorModel overlayGrayColorModel; private static IndexColorModel overlayGray12ColorModel; private static int overlayColorBit = 255; private static int overlay12ColorBit = 4095; public static void fillGrayColorModel() { int bits = 8; int size = 256; byte[] r = new byte[size]; byte[] g = new byte[size]; byte[] b = new byte[size]; byte[] a = new byte[size]; for (int i = 0; i < size; i++) { r[i] = (byte)i; g[i] = (byte)i; b[i]= (byte)i; a[i]= (byte)0xFF; } //Transparent Color grayColorModel = new IndexColorModel(bits, size, r, g, b); } public static void fillGray12BitColorModel() { int bits = 16; int size = 4096; //(12**8) byte[] r = new byte[size]; byte[] g = new byte[size]; byte[] b = new byte[size]; byte[] a = new byte[size]; int x = 0; int y = 0; for (int i = 0; i < size; i++) { x++; if ( x ==256) { x = 0; y++; } r[i] = (byte)(x & 0xff); g[i] = (byte)(y &0xff); b[i]= (byte)0; a[i]= (byte)0xFF; } //Transparent Color gray12BitColorModel = new IndexColorModel(bits, size, r, g, b); } public static void fillIndexColorModel() { fillGrayColorModel(); fillGray12BitColorModel(); fillOverlayGrayColorModel(overlayColorBit); fillOverlay12BitColorModel(overlay12ColorBit); } /** * Returns the IndexColorModel for gray image data. * * @return IndexColorModel for image data. * @since 30.04.1999 */ public static IndexColorModel getGrayColorModel() { return grayColorModel; } /** * Returns a IndexColorModel for overlay data.This ColorModel contains the same Colors as the grayColorModel. * There are only one difference: One Color is transparent. This Color has an alpha-value of 0x00. * * * @return IndexColorModel for image data. * @since 30.04.1999 */ public static void fillOverlayGrayColorModel(int colorBit) { overlayColorBit = colorBit; int bits = 8; int size = 256; byte[] r = new byte[size]; byte[] g = new byte[size]; byte[] b = new byte[size]; byte[] a = new byte[size]; for (int i = 0; i < size; i++) { r[i] = (byte)(i&0xff); g[i] = (byte)(i&0xff); b[i]= (byte)(i&0xff); a[i]= (byte)0x00; } a[colorBit] = (byte)0xFF; //Transparent Color overlayGrayColorModel = new IndexColorModel(bits, size, r, g, b,a); } public static void fillOverlay12BitColorModel(int colorBit) { overlay12ColorBit = colorBit; int bits = 16; int size = 4096; //(12**8) byte[] r = new byte[size]; byte[] g = new byte[size]; byte[] b = new byte[size]; byte[] a = new byte[size]; int x = 0; int y = 0; for (int i = 0; i < size; i++) { x++; if ( x ==256) { x = 0; y++; } r[i] = (byte)(x&0xff); g[i] = (byte)(y&0xff); b[i]= (byte)0x00; a[i]= (byte)0x00; } //Transparent Color a[colorBit] = (byte)0xFF; //Transparent Color overlayGray12ColorModel = new IndexColorModel(bits, size, r, g, b,a); } public static IndexColorModel getOverlayGrayColorModel(int colorBit) { if (colorBit != overlayColorBit) fillOverlayGrayColorModel(colorBit); return overlayGrayColorModel; } public static IndexColorModel getOverlayGray12ColorModel(int colorBit) { if (colorBit != overlay12ColorBit) fillOverlay12BitColorModel(colorBit); return overlayGray12ColorModel; } public static IndexColorModel getGray12BitColorModel() { return gray12BitColorModel; } public static Color getColor(int grayIndex) { return new Color(grayIndex, grayIndex,grayIndex); } public static Color get12Color(int grayIndex) { int r = grayIndex%256; int g = grayIndex/256; int b = 0; return new Color (r,g,b); } /** * Conts the values of the specified array. * * @param colorArray Specifies the array. * @return The number of values in the array. * @since 30.04.1999 */ public static int[] countValues(byte[] colorArray) { int[] returnArray = new int [256]; for (int i = 0; i < colorArray.length; i++) { returnArray[colorArray[i]&0xff] = 1; } for (int i = 0; i < 256; i++) { System.out.println(" das ist der Wert i: " + i + " wert: " + returnArray[i]); } return returnArray; } /** * Conts the values of the specified array. * * @param colorArray Specifies the array. * @return The number of values in the array. * @since 30.04.1999 */ public static int[] countValues(short[] colorArray) { int[] returnArray = new int [256*256]; for (int i = 0; i < colorArray.length; i++) { returnArray[colorArray[i]] = 1; } for (int i = 0; i < returnArray.length; i++) { if (returnArray[i] != 0)System.out.println(" das ist der Wert i: " + i + " wert: " + returnArray[i]); } return returnArray; } } /* * CVS Log * $Log: GrayColorIndex.java,v $ * Revision 1.1.1.1 2001/06/06 10:32:30 kleber * Init commit for DICOMscope 3.5 * Create new CVS * */ dicomscope-3.6.0/tkgui/main/GuiComponentListener.java0000644000265600020320000000313011262371101022007 0ustar tilleaadmin/* * * Copyright (C) 1999, Institute for MicroTherapy * * This software and supporting documentation were developed by * * University of Witten/Herdecke * Department of Radiology and MicroTherapy * Institute for MicroTherapy * Medical computer science * * Universitaetsstrasse 142 * 44799 Bochum, Germany * * http://www.microtherapy.de/go/cs * mailto:computer.science@microtherapy.de * * THIS SOFTWARE IS MADE AVAILABLE, AS IS, AND THE INSTITUTE MAKES NO * WARRANTY REGARDING THE SOFTWARE, ITS PERFORMANCE, ITS MERCHANTABILITY * OR FITNESS FOR ANY PARTICULAR USE, FREEDOM FROM ANY COMPUTER DISEASES * OR ITS CONFORMITY TO ANY SPECIFICATION. THE ENTIRE RISK AS TO QUALITY * AND PERFORMANCE OF THE SOFTWARE IS WITH THE USER. * * Author : $Author: kleber $ * Last update : $Date: 2001/06/06 10:32:30 $ * Revision : $Revision: 1.1.1.1 $ * State: $State: Exp $ */ package main; import java.util.*; /** * Base interface for classes which wants to be a listener of JiveEvents. */ public interface GuiComponentListener extends EventListener { /** * Processes an event. Implementing classes should check for the * exact subclass of JiveEvent (via instanceof) to get full information * of the event. * * @param e the event * @return true if the event was accepted. */ public abstract boolean processComponents (DSEvent e); } /* * CVS Log * $Log: GuiComponentListener.java,v $ * Revision 1.1.1.1 2001/06/06 10:32:30 kleber * Init commit for DICOMscope 3.5 * Create new CVS * */ dicomscope-3.6.0/tkgui/main/GuiComponents.java0000644000265600020320000015512711262371101020502 0ustar tilleaadmin/* * * Copyright (C) 1999, Institute for MicroTherapy * * This software and supporting documentation were developed by * * University of Witten/Herdecke * Department of Radiology and MicroTherapy * Institute for MicroTherapy * Medical computer science * * Universitaetsstrasse 142 * 44799 Bochum, Germany * * http://www.microtherapy.de/go/cs * mailto:computer.science@microtherapy.de * * THIS SOFTWARE IS MADE AVAILABLE, AS IS, AND THE INSTITUTE MAKES NO * WARRANTY REGARDING THE SOFTWARE, ITS PERFORMANCE, ITS MERCHANTABILITY * OR FITNESS FOR ANY PARTICULAR USE, FREEDOM FROM ANY COMPUTER DISEASES * OR ITS CONFORMITY TO ANY SPECIFICATION. THE ENTIRE RISK AS TO QUALITY * AND PERFORMANCE OF THE SOFTWARE IS WITH THE USER. * * Author : $Author: kleber $ * Last update : $Date: 2001/06/06 10:32:30 $ * Revision : $Revision: 1.1.1.1 $ * State: $State: Exp $ */ package main; import de.microtherapy.tools.text.document.dicom.*; import de.microtherapy.tools.text.document.general.*; import javax.swing.*; import javax.swing.event.*; import jToolkit.gui.*; import jToolkit.io.*; import J2Ci.*; import java.awt.*; import viewer.gui.*; import java.io.*; /** * This class handles all GUI componentes which can be on different places */ public class GuiComponents implements CommandButtonListener, CommandToggleButtonListener,MainListener,GuiComponentListener, CommandTextListener { public static final int ID_QUIT=0; public static final int ID_OPTIONS = 1; public static final int ID_LOAD = 10; public static final int ID_LOAD_PS = 11; public static final int ID_LOAD_IMAGE = 12; public static final int ID_LOAD_SR = 13; public static final int ID_SAVE = 20; public static final int ID_SAVEAS = 21; public static final int ID_SAVESCREEN = 22; public static final int ID_DELETE = 30; public static final int ID_SENDTO = 31; public static final int ID_REFRESH = 32; public static final int ID_CHECKIOD = 33; public static final int ID_ROT = 40; public static final int ID_ROT0 = 41; public static final int ID_ROT90 = 42; public static final int ID_ROT180 = 43; public static final int ID_ROT270 = 44; public static final int ID_INVERT = 50; public static final int ID_FLIP = 51; public static final int ID_RESET = 52; public static final int ID_PS = 60; public static final int ID_PRESENTATIONLUT = 61; public static final int ID_VOI = 62; public static final int ID_LUT = 63; public static final int ID_WININFRAME = 64; public static final int ID_WINDOW = 70; public static final int ID_CENTER = 71; public static final int ID_VOILUT = 72; public static final int ID_ZOOM = 80; public static final int ID_ZOOMINPUT = 81; public static final int ID_ZOOMFIT = 82; public static final int ID_ZOOM1TO1 = 83; public static final int ID_TRUESIZE = 90; public static final int ID_SCALETOFIT = 91; public static final int ID_MAGNIFY = 92; public static final int ID_IMAGERELATIVE = 100; public static final int ID_FILLEDBUTTON = 101; public static final int ID_IMAGERELATIVEBUTTON = 102; public static final int ID_FILLED = 103; public static final int ID_EDIT_LAYER = 110; public static final int ID_EDIT = 111; public static final int ID_LAYERLIST = 112; public static final int ID_SELECTLAYER = 113; public static final int ID_RECT = 200; public static final int ID_CIRCLE = 201; public static final int ID_ELLIPSE = 202; public static final int ID_LINE = 203; public static final int ID_POINT = 204; public static final int ID_POLY = 205; public static final int ID_TEXT = 206; public static final int ID_INTERPOLATED = 207; public static final int ID_SET_RECTSHUTTER = 210; public static final int ID_SET_POLYSHUTTER = 211; public static final int ID_SET_CIRCLESHUTTER = 212; public static final int ID_SET_BMPSHUTTER = 213; public static final int ID_SET_OPTSHUTTER = 214; public static final int ID_NAME = 400; public static final int ID_CREATOR = 401; public static final int ID_DESCRIPTION = 402; public static final int ID_PRINT = 1000; public static final int ID_PRINTHC = 1001; public static final int ID_PRINTSTTOPRINT = 1002; public static final int ID_PRINTST = 1003; //public static final int = 1003; public static final int ID_INFO = 2000; public static final int ID_DUMP = 2001; public static final int ID_STACKIMAGE_LEFT = 5000; public static final int ID_STACKIMAGE_RIGHT = 5001; public static final int ID_STACKIMAGE_FIRST = 5002; public static final int ID_STACKIMAGE_LAST = 5003; public static final int ID_STACKMAXIMAGE = 5004; public static final int ID_STACKCURRENTIMAGE = 5005; public static final int ID_STACKFRAME_LEFT = 5010; public static final int ID_STACKFRAME_RIGHT = 5011; public static final int ID_STACKFRAME_FIRST = 5012; public static final int ID_STACKFRAME_LAST = 5013; public static final int ID_STACKMAXFRAME = 5014; public static final int ID_STACKCURRENTFRAME = 5015; public static final int ID_APPLYFRAME = 5020; public static final int ID_APPLYIMAGE = 5021; public static final int ID_APPLYALL = 5022; private boolean fireEvent = true; public CommandJButton stackImageLeftButton; public CommandJButton stackImageRightButton; public CommandJButton stackLastImageButton; public CommandJButton stackFirstImageButton; public CommandJButton stackFrameLeftButton; public CommandJButton stackFrameRightButton; public CommandJButton stackLastFrameButton; public CommandJButton stackFirstFrameButton; public CommandJRadioButton applyFrameRadio; public CommandJRadioButton applyImageRadio; public CommandJRadioButton applyAllRadio; public CommandJTextField maxImageTextField; public CommandJTextField currentImageTextField; public CommandJTextField maxFrameTextField; public CommandJTextField currentFrameTextField; //General public CommandJButton printButton; public CommandJButton printHcButton; public CommandJButton printStToPrinterButton; public CommandJButton printStButton; public CommandJButton dumpButton; public CommandJButton quitButton; public CommandJButton optionButton; public CommandJButton infoButton; public JButton srEditButton; public JButton srRevisedButton; public JButton srCodeEditButton; public JButton srCodeNewButton; public JButton srOkButton; public JButton srViewUpButton; public JButton srCompleteButton; public JButton srSaveButton; public JButton srResetButton; public JButton srVerificationButton; public JButton srViewDownButton; public JButton srViewBeginButton; public JButton srViewEndButton; public JButton srViewCopyButton; /** * Contains the ComboBox for changing the presentation lut */ public CommandJToggleButton presentationLutButton; //DB public CommandJButton loadImageButton; public CommandJButton loadSRButton; public CommandJButton loadPSButton; public CommandJButton loadButton; public CommandJButton deleteButton; public CommandJButton sendToButton; public CommandJButton refreshButton; public CommandJButton checkIODButton; public CommandJButton saveButton; public CommandJButton saveAsButton; public CommandJButton saveScreenButton; //image processing public CommandJToggleButton psButton; public CommandJToggleButton lutButton; public CommandJButton resetButton; public CommandJToggleButton invertButton; public CommandJToggleButton flipButton; public CommandJButton rotButton; public CommandJButton zoomButton; public CommandJButton zoomFitButton; public CommandJButton zoom1to1Button; public CommandJButton voiButton; public CommandJButton winInFrameButton; //Paint public CommandJButton lineButton; public CommandJButton rectButton; public CommandJButton pointButton; public CommandJButton circleButton; public CommandJButton ellipseButton; public CommandJButton polyButton; public CommandJButton textButton; public CommandJButton interpolatedButton; public CommandJButton editButton; public CommandJButton editLayerButton; public CommandJButton selectLayerButton; Icon imageRelative; Icon displayRelative; public CommandJButton imageDisplayButton; public CommandJToggleButton filledButton; public CommandJToggleButton setLayerButton; //Shutter public CommandJToggleButton rectShButton; public CommandJToggleButton circleShButton; public CommandJToggleButton polyShButton; public CommandJToggleButton bmpShButton; public CommandJButton optShButton; Icon rotIcon; Icon rotIcon0; Icon rotIcon90; Icon rotIcon180; Icon rotIcon270; public CommandJComboBox layerComboBox; public JCheckBox filledCheckBox; public JCheckBox imageRelCheckBox; public CommandJTextField zoomTextField; public CommandJTextField windowTextField; public CommandJTextField centerTextField; public JTextField nameTextField; public JTextField creatorTextField; public JTextArea descrTextArea; public JTextArea infoTextArea; public CommandJRadioButton magnifyRadio; public CommandJRadioButton scaleRadio; public CommandJRadioButton trueSizeRadio; public static GuiComponents instance; public static GuiComponents getInstance() { if (instance == null) instance = new GuiComponents(); return instance; } private GuiComponents () { Controller.instance().addGuiComponentListener(this); Controller.instance().addMainListener(this); filledCheckBox = new CommandJCheckBox("Filled",false,this,ID_FILLED); filledCheckBox.setAlignmentX(0.5f); filledCheckBox.setAlignmentY(0.5f); zoomTextField = new CommandJTextField(5,this, ID_ZOOMINPUT); zoomTextField.setDocument(new DoubleUnsignedDocument()); centerTextField = new CommandJTextField(5,this, ID_CENTER); centerTextField.setDocument(new DoubleDocument()); windowTextField = new CommandJTextField(5,this,ID_WINDOW); windowTextField.setDocument(new DoubleDocument()); nameTextField = new CommandJTextField(15,this,ID_NAME); nameTextField.setDocument(new CSDocument()); nameTextField.setColumns(5); nameTextField.setScrollOffset(0); creatorTextField = new CommandJTextField(15,this,ID_CREATOR); creatorTextField.setDocument(new PNDocument()); descrTextArea= new JTextArea(); imageRelCheckBox = new CommandJCheckBox("Image Relative",true,this,ID_IMAGERELATIVE); imageRelCheckBox.setAlignmentX(0.5f); imageRelCheckBox.setAlignmentY(0.5f); layerComboBox = new CommandJComboBox(this,ID_LAYERLIST); infoTextArea = new JTextArea(); ButtonGroup presentationMode = new ButtonGroup(); magnifyRadio = new CommandJRadioButton("Magnify", false, this, ID_MAGNIFY); scaleRadio = new CommandJRadioButton("Scale", false, this, ID_SCALETOFIT); trueSizeRadio = new CommandJRadioButton("True Size", false, this, ID_TRUESIZE); presentationMode.add(magnifyRadio); presentationMode.add(scaleRadio); presentationMode.add(trueSizeRadio); ButtonGroup applyMode = new ButtonGroup(); applyFrameRadio = new CommandJRadioButton("Frame", false, this, ID_APPLYFRAME); applyImageRadio = new CommandJRadioButton("Image", false, this, ID_APPLYIMAGE); applyAllRadio = new CommandJRadioButton("All", true, this, ID_APPLYALL); applyMode.add(applyFrameRadio); applyMode.add(applyImageRadio); applyMode.add(applyAllRadio); maxImageTextField = new CommandJTextField(3,this,ID_STACKMAXIMAGE); maxImageTextField.setEnabled(false); currentImageTextField = new CommandJTextField(3,this,ID_STACKCURRENTIMAGE); currentImageTextField.setDocument(new IntegerDocument(4)); maxFrameTextField = new CommandJTextField(3,this,ID_STACKMAXFRAME); maxFrameTextField.setEnabled(false); currentFrameTextField = new CommandJTextField(3,this,ID_STACKCURRENTFRAME); currentFrameTextField.setDocument(new IntegerDocument(4)); IconRetriever ir = new IconRetriever (); if (MainContext.instance().highQualitySystem) { srEditButton = new JButton(ir.getIcon(MainContext.iconPath + "newsrsop32.gif")); srCodeEditButton = new JButton(ir.getIcon(MainContext.iconPath + "modcode32.gif")); srCodeNewButton = new JButton(ir.getIcon(MainContext.iconPath + "newcode32.gif")); srViewUpButton= new JButton(ir.getIcon(MainContext.iconPath + "up32.gif")); srSaveButton= new JButton(ir.getIcon(MainContext.iconPath + "saveDB32.gif")); srResetButton= new JButton(ir.getIcon(MainContext.iconPath + "reset32.gif")); srViewDownButton = new JButton(ir.getIcon(MainContext.iconPath + "down32.gif")); srViewBeginButton=new JButton(ir.getIcon(MainContext.iconPath + "tobegin32.gif")); srViewEndButton= new JButton(ir.getIcon(MainContext.iconPath + "toend32.gif")); srViewCopyButton=new JButton(ir.getIcon(MainContext.iconPath + "copy32.gif")); srCompleteButton=new JButton(ir.getIcon(MainContext.iconPath + "complete32.gif")); srOkButton=new JButton(ir.getIcon(MainContext.iconPath + "ok32.gif")); srVerificationButton=new JButton(ir.getIcon(MainContext.iconPath + "verify32.gif")); srRevisedButton = new JButton(ir.getIcon(MainContext.iconPath + "revised32.gif")); presentationLutButton = new CommandJToggleButton(ir.getIcon(MainContext.iconPath + "pLUT32.gif"),false,this,ID_PRESENTATIONLUT); checkIODButton = new CommandJButton(ir.getIcon(MainContext.iconPath + "check32.gif"),this,ID_CHECKIOD); dumpButton = new CommandJButton(ir.getIcon(MainContext.iconPath + "dump32.gif"),this,ID_DUMP); printButton = new CommandJButton(ir.getIcon(MainContext.iconPath + "printPlus32.gif"),this,ID_PRINT); printHcButton = new CommandJButton(ir.getIcon(MainContext.iconPath + "printPlus32.gif"),this,ID_PRINTHC); printStButton = new CommandJButton(ir.getIcon(MainContext.iconPath + "printPlus32.gif"),this,ID_PRINTST); printStToPrinterButton = new CommandJButton(ir.getIcon(MainContext.iconPath + "print32.gif"),this,ID_PRINTSTTOPRINT); quitButton = new CommandJButton(ir.getIcon(MainContext.iconPath + "quit32.gif"),this,ID_QUIT); loadImageButton = new CommandJButton(ir.getIcon(MainContext.iconPath + "openIMAG32.gif"),this,ID_LOAD_IMAGE); loadSRButton = new CommandJButton(ir.getIcon(MainContext.iconPath + "openSr32.gif"),this,ID_LOAD_SR); loadPSButton = new CommandJButton(ir.getIcon(MainContext.iconPath +"openSP32.gif"),this,ID_LOAD_PS); loadButton = new CommandJButton(ir.getIcon(MainContext.iconPath + "loadDB32.gif"),this,ID_LOAD); deleteButton = new CommandJButton(ir.getIcon(MainContext.iconPath +"delete32.gif"),this,ID_DELETE); sendToButton = new CommandJButton(ir.getIcon(MainContext.iconPath +"send32.gif"),this,ID_SENDTO); refreshButton = new CommandJButton(ir.getIcon(MainContext.iconPath +"refresh32.gif"),this,ID_REFRESH); lineButton = new CommandJButton(ir.getIcon(MainContext.iconPath +"paintLINE32.gif"),this,ID_LINE); rectButton = new CommandJButton(ir.getIcon(MainContext.iconPath +"paintRECT32.gif"),this,ID_RECT); polyButton = new CommandJButton(ir.getIcon(MainContext.iconPath +"paintPOLY32.gif"),this,ID_POLY); textButton = new CommandJButton(ir.getIcon(MainContext.iconPath +"paintTEXT32.gif"),this,ID_TEXT); circleButton = new CommandJButton(ir.getIcon(MainContext.iconPath +"paintCIRC32.gif"),this,ID_CIRCLE); ellipseButton = new CommandJButton(ir.getIcon(MainContext.iconPath +"paintELIP32.gif"),this,ID_ELLIPSE); pointButton = new CommandJButton(ir.getIcon(MainContext.iconPath +"paintPOIN32.gif"),this,ID_POINT); interpolatedButton = new CommandJButton(ir.getIcon(MainContext.iconPath +"paintINTE32.gif"),this,ID_INTERPOLATED); editButton = new CommandJButton(ir.getIcon(MainContext.iconPath +"edit32.gif"),this,ID_EDIT); rectShButton = new CommandJToggleButton(ir.getIcon(MainContext.iconPath +"shutterRECT32.gif"),false,this,ID_SET_RECTSHUTTER); circleShButton = new CommandJToggleButton(ir.getIcon( MainContext.iconPath +"shutterCIRC32.gif"),false,this,ID_SET_CIRCLESHUTTER); polyShButton = new CommandJToggleButton(ir.getIcon( MainContext.iconPath +"shutterPOLY32.gif"),false,this,ID_SET_POLYSHUTTER); bmpShButton = new CommandJToggleButton(ir.getIcon(MainContext.iconPath +"shutterIMAG32.gif"),false,this,ID_SET_BMPSHUTTER); optShButton = new CommandJButton(ir.getIcon(MainContext.iconPath +"shuttercolor_big.gif"),this,ID_SET_OPTSHUTTER); imageRelative = ir.getIcon(MainContext.iconPath +"rtoimage32.gif"); displayRelative = ir.getIcon(MainContext.iconPath +"rtodisplay32.gif"); imageDisplayButton = new CommandJButton(imageRelative,this,ID_IMAGERELATIVEBUTTON); filledButton = new CommandJToggleButton( ir.getIcon(MainContext.iconPath +"pipette32.GIF"),false,this,ID_FILLEDBUTTON); selectLayerButton = new CommandJButton(ir.getIcon(MainContext.iconPath +"selectlayer32.gif"),this,ID_SELECTLAYER); editLayerButton = new CommandJButton(ir.getIcon(MainContext.iconPath +"layer32.gif"),this,ID_EDIT_LAYER); invertButton = new CommandJToggleButton(ir.getIcon( MainContext.iconPath +"invert32.gif"),false,this,ID_INVERT); flipButton= new CommandJToggleButton(ir.getIcon( MainContext.iconPath +"fliphorizontally32.gif"),false,this,ID_FLIP); rotIcon0 = ir.getIcon(MainContext.iconPath +"rotate32.gif"); rotIcon90 = ir.getIcon(MainContext.iconPath +"rotateR9032.gif"); rotIcon180 = ir.getIcon(MainContext.iconPath +"rotateR18032.gif"); rotIcon270 = ir.getIcon(MainContext.iconPath +"rotateR27032.gif"); rotButton = new CommandJButton(rotIcon0,this,ID_ROT); zoomButton = new CommandJButton( ir.getIcon(MainContext.iconPath +"zoom32.gif"),this,ID_ZOOM); zoomFitButton = new CommandJButton( ir.getIcon(MainContext.iconPath +"2themax32.gif"),this,ID_ZOOMFIT); zoom1to1Button = new CommandJButton( ir.getIcon(MainContext.iconPath +"1zu132.gif"),this,ID_ZOOM1TO1); voiButton = new CommandJButton(ir.getIcon(MainContext.iconPath +"voi132.gif"),this,ID_VOI); winInFrameButton = new CommandJButton(ir.getIcon(MainContext.iconPath +"cw32.gif"),this,ID_WININFRAME); saveButton = new CommandJButton(ir.getIcon(MainContext.iconPath +"saveDB32.gif"),this,ID_SAVE); saveAsButton = new CommandJButton(ir.getIcon(MainContext.iconPath +"saveIMAG32.gif"),this,ID_SAVEAS); saveScreenButton = new CommandJButton( ir.getIcon(MainContext.iconPath +"savescreen32.gif"),this,ID_SAVESCREEN); psButton = new CommandJToggleButton(ir.getIcon(MainContext.iconPath +"ps32.gif"),false,this,ID_PS); lutButton = new CommandJToggleButton( ir.getIcon(MainContext.iconPath +"lut32.gif"),false,this,ID_LUT); resetButton = new CommandJButton( ir.getIcon(MainContext.iconPath +"reset32.gif"),this,ID_RESET); optionButton = new CommandJButton( ir.getIcon(MainContext.iconPath +"options32.gif"),this,ID_OPTIONS); stackImageLeftButton = new CommandJButton( ir.getIcon(MainContext.iconPath +"forw32a.gif"),this,ID_STACKIMAGE_LEFT); stackImageRightButton = new CommandJButton( ir.getIcon(MainContext.iconPath +"back32a.gif"),this,ID_STACKIMAGE_RIGHT); stackLastImageButton = new CommandJButton( ir.getIcon(MainContext.iconPath +"end32a.gif"),this,ID_STACKIMAGE_FIRST); stackFirstImageButton = new CommandJButton( ir.getIcon(MainContext.iconPath +"begin32a.gif"),this,ID_STACKIMAGE_LAST); stackFrameLeftButton = new CommandJButton( ir.getIcon(MainContext.iconPath +"forw32a.gif"),this,ID_STACKFRAME_LEFT); stackFrameRightButton = new CommandJButton( ir.getIcon(MainContext.iconPath +"back32a.gif"),this,ID_STACKFRAME_RIGHT); stackLastFrameButton = new CommandJButton( ir.getIcon(MainContext.iconPath +"end32a.gif"),this,ID_STACKFRAME_FIRST); stackFirstFrameButton = new CommandJButton( ir.getIcon(MainContext.iconPath +"begin32a.gif"),this,ID_STACKFRAME_LAST); } else { presentationLutButton = new CommandJToggleButton(ir.getIcon(MainContext.iconPath + "pLUT.gif"),false,this,ID_PRESENTATIONLUT); srEditButton = new JButton(ir.getIcon(MainContext.iconPath + "newsrsop.gif")); srCodeEditButton = new JButton(ir.getIcon(MainContext.iconPath + "modcode.gif")); srCodeNewButton = new JButton(ir.getIcon(MainContext.iconPath + "newcode.gif")); srViewUpButton= new JButton(ir.getIcon(MainContext.iconPath + "up.gif")); srResetButton= new JButton(ir.getIcon(MainContext.iconPath + "reset.gif")); srViewDownButton = new JButton(ir.getIcon(MainContext.iconPath + "down.gif")); srViewBeginButton=new JButton(ir.getIcon(MainContext.iconPath + "tobegin.gif")); srViewEndButton= new JButton(ir.getIcon(MainContext.iconPath + "toend.gif")); srViewCopyButton=new JButton(ir.getIcon(MainContext.iconPath + "copy.gif")); srOkButton=new JButton(ir.getIcon(MainContext.iconPath + "ok.gif")); srRevisedButton = new JButton(ir.getIcon(MainContext.iconPath + "revised.gif")); srCompleteButton=new JButton(ir.getIcon(MainContext.iconPath + "complete.gif")); srVerificationButton=new JButton(ir.getIcon(MainContext.iconPath + "verify.gif")); srSaveButton= new JButton(ir.getIcon(MainContext.iconPath + "save2DB.gif")); checkIODButton = new CommandJButton(ir.getIcon(MainContext.iconPath + "check.gif"),this,ID_CHECKIOD); dumpButton = new CommandJButton(ir.getIcon(MainContext.iconPath + "dump.gif"),this,ID_DUMP); printButton = new CommandJButton(ir.getIcon(MainContext.iconPath + "printPlus.gif"),this,ID_PRINT); printStToPrinterButton = new CommandJButton(ir.getIcon(MainContext.iconPath + "print.gif"),this,ID_PRINTSTTOPRINT); printHcButton = new CommandJButton(ir.getIcon(MainContext.iconPath + "printPlus.gif"),this,ID_PRINTHC); printStButton = new CommandJButton(ir.getIcon(MainContext.iconPath + "printPlus.gif"),this,ID_PRINTST); quitButton = new CommandJButton(ir.getIcon(MainContext.iconPath +"quit.gif"),this,ID_QUIT); loadImageButton = new CommandJButton(ir.getIcon(MainContext.iconPath +"openIMAG.gif"),this,ID_LOAD_IMAGE); loadSRButton = new CommandJButton(ir.getIcon(MainContext.iconPath + "openSr.gif"),this,ID_LOAD_SR); loadPSButton = new CommandJButton(ir.getIcon(MainContext.iconPath +"openSP.gif"),this,ID_LOAD_PS); loadButton = new CommandJButton(ir.getIcon(MainContext.iconPath +"loadDB.gif"),this,ID_LOAD); deleteButton = new CommandJButton(ir.getIcon(MainContext.iconPath +"delete.gif"),this,ID_DELETE); sendToButton = new CommandJButton(ir.getIcon(MainContext.iconPath +"send.gif"),this,ID_SENDTO); refreshButton = new CommandJButton(ir.getIcon(MainContext.iconPath +"refresh.gif"),this,ID_REFRESH); lineButton = new CommandJButton(ir.getIcon(MainContext.iconPath +"paintLINE.gif"),this,ID_LINE); rectButton = new CommandJButton(ir.getIcon(MainContext.iconPath +"paintRECT.gif"),this,ID_RECT); polyButton = new CommandJButton(ir.getIcon(MainContext.iconPath +"paintPOLY.gif"),this,ID_POLY); textButton = new CommandJButton(ir.getIcon(MainContext.iconPath +"paintTEXT.gif"),this,ID_TEXT); circleButton = new CommandJButton(ir.getIcon(MainContext.iconPath +"paintCIRC.gif"),this,ID_CIRCLE); ellipseButton = new CommandJButton(ir.getIcon(MainContext.iconPath +"paintELIP.gif"),this,ID_ELLIPSE); pointButton = new CommandJButton(ir.getIcon(MainContext.iconPath +"paintPOIN.gif"),this,ID_POINT); interpolatedButton = new CommandJButton(ir.getIcon(MainContext.iconPath +"paintINTE.gif"),this,ID_INTERPOLATED); editButton = new CommandJButton(ir.getIcon(MainContext.iconPath +"edit.gif"),this,ID_EDIT); imageRelative = ir.getIcon(MainContext.iconPath +"rtoimage.gif"); displayRelative = ir.getIcon(MainContext.iconPath +"rtodisplay.gif"); imageDisplayButton = new CommandJButton(imageRelative,this,ID_IMAGERELATIVEBUTTON); rectShButton = new CommandJToggleButton(ir.getIcon(MainContext.iconPath +"shutterRECT.gif"),false,this,ID_SET_RECTSHUTTER); circleShButton = new CommandJToggleButton(ir.getIcon(MainContext.iconPath +"shutterCIRC.gif"),false,this,ID_SET_CIRCLESHUTTER); polyShButton = new CommandJToggleButton(ir.getIcon(MainContext.iconPath +"shutterPOLY.gif"),false,this,ID_SET_POLYSHUTTER); bmpShButton = new CommandJToggleButton(ir.getIcon(MainContext.iconPath +"shutterIMAG.gif"),false,this,ID_SET_BMPSHUTTER); optShButton = new CommandJButton(ir.getIcon(MainContext.iconPath +"shuttercolor_small.gif"),this,ID_SET_OPTSHUTTER); selectLayerButton = new CommandJButton(ir.getIcon(MainContext.iconPath +"selectlayer.gif"),this,ID_SELECTLAYER); editLayerButton = new CommandJButton(ir.getIcon(MainContext.iconPath +"layer.gif"),this,ID_EDIT_LAYER); invertButton = new CommandJToggleButton(ir.getIcon( MainContext.iconPath +"invert.gif"),false,this,ID_INVERT); flipButton= new CommandJToggleButton(ir.getIcon( MainContext.iconPath +"fliphorizontally.gif"),false,this,ID_FLIP); rotIcon0 = ir.getIcon(MainContext.iconPath +"rotate.gif"); rotIcon90 = ir.getIcon(MainContext.iconPath +"rotateR90.gif"); rotIcon180 = ir.getIcon(MainContext.iconPath +"rotateR180.gif"); rotIcon270 = ir.getIcon(MainContext.iconPath +"rotateR270.gif"); rotButton = new CommandJButton(rotIcon0,this,ID_ROT); imageRelative = ir.getIcon(MainContext.iconPath +"rtoimage.gif"); displayRelative = ir.getIcon(MainContext.iconPath +"rtodisplay.gif"); imageDisplayButton = new CommandJButton(imageRelative,this,ID_IMAGERELATIVEBUTTON); zoomButton = new CommandJButton(ir.getIcon(MainContext.iconPath +"zoom.gif"),this,ID_ZOOM); zoomFitButton = new CommandJButton( ir.getIcon(MainContext.iconPath +"2themax.gif"),this,ID_ZOOMFIT); zoom1to1Button = new CommandJButton( ir.getIcon(MainContext.iconPath +"1zu1.gif"),this,ID_ZOOM1TO1); voiButton = new CommandJButton( ir.getIcon(MainContext.iconPath +"voi1.gif"),this,ID_VOI); winInFrameButton = new CommandJButton( ir.getIcon(MainContext.iconPath +"cw.gif"),this,ID_WININFRAME); saveButton = new CommandJButton( ir.getIcon(MainContext.iconPath +"save2DB.gif"),this,ID_SAVE); saveAsButton = new CommandJButton( ir.getIcon(MainContext.iconPath +"saveIMAG.gif"),this,ID_SAVEAS); saveScreenButton = new CommandJButton(ir.getIcon(MainContext.iconPath +"savescreen.gif"),this,ID_SAVESCREEN); psButton = new CommandJToggleButton( ir.getIcon(MainContext.iconPath +"ps.gif"),false,this,ID_PS); lutButton = new CommandJToggleButton(ir.getIcon(MainContext.iconPath +"lut.gif"),false,this,ID_LUT); resetButton = new CommandJButton(ir.getIcon(MainContext.iconPath +"reset.gif"),this,ID_RESET); optionButton = new CommandJButton( ir.getIcon(MainContext.iconPath +"options.gif"),this,ID_OPTIONS); filledButton = new CommandJToggleButton( ir.getIcon(MainContext.iconPath +"pipette.gif"),false,this,ID_FILLEDBUTTON); stackImageLeftButton = new CommandJButton( ir.getIcon(MainContext.iconPath +"forwa.gif"),this,ID_STACKIMAGE_LEFT); stackImageRightButton = new CommandJButton( ir.getIcon(MainContext.iconPath +"backa.gif"),this,ID_STACKIMAGE_RIGHT); stackLastImageButton = new CommandJButton( ir.getIcon(MainContext.iconPath +"enda.gif"),this,ID_STACKIMAGE_FIRST); stackFirstImageButton = new CommandJButton( ir.getIcon(MainContext.iconPath +"begina.gif"),this,ID_STACKIMAGE_LAST); stackFrameLeftButton = new CommandJButton( ir.getIcon(MainContext.iconPath +"forwa.gif"),this,ID_STACKFRAME_LEFT); stackFrameRightButton = new CommandJButton( ir.getIcon(MainContext.iconPath +"backa.gif"),this,ID_STACKFRAME_RIGHT); stackLastFrameButton = new CommandJButton( ir.getIcon(MainContext.iconPath +"enda.gif"),this,ID_STACKFRAME_FIRST); stackFirstFrameButton = new CommandJButton( ir.getIcon(MainContext.iconPath +"begina.gif"),this,ID_STACKFRAME_LAST); } rotIcon = rotIcon90; CommandJButton.setButton(srEditButton); CommandJButton.setButton(srCodeNewButton); CommandJButton.setButton(srViewUpButton); CommandJButton.setButton(srViewDownButton); CommandJButton.setButton(srViewBeginButton); CommandJButton.setButton(srViewEndButton); CommandJButton.setButton(srViewCopyButton); CommandJButton.setButton(srCompleteButton); CommandJButton.setButton(srVerificationButton); CommandJButton.setButton(srSaveButton); CommandJButton.setButton(srResetButton); CommandJButton.setButton(srOkButton); CommandJButton.setButton(srCodeEditButton); CommandJButton.setButton(srRevisedButton); stackImageLeftButton.setToolTipText("Next Image"); stackImageRightButton.setToolTipText("Previous Image"); stackLastImageButton.setToolTipText("First Image"); stackFirstImageButton.setToolTipText("Last Image"); stackFrameLeftButton.setToolTipText("Next Frame"); stackFrameRightButton.setToolTipText("Previous Frame"); stackLastFrameButton.setToolTipText("First Frame"); stackFirstFrameButton.setToolTipText("Last Frame"); checkIODButton.setToolTipText("Check IOD"); dumpButton.setToolTipText("Create Dump"); presentationLutButton.setToolTipText("Presentation LUT"); quitButton.setToolTipText("Exit"); loadImageButton.setToolTipText( "Load Image File" ); loadSRButton.setToolTipText( "Load SR File" ); loadPSButton.setToolTipText( "Apply Presentation State File" ); loadButton.setToolTipText( "Open" ); deleteButton.setToolTipText( "Delete" ); sendToButton.setToolTipText( "Send" ); refreshButton.setToolTipText( "Refresh" ); imageDisplayButton.setToolTipText("Annotation Unit"); rectShButton.setToolTipText( "Rectangular Shutter" ); circleShButton.setToolTipText( "Circular Shutter" ); polyShButton.setToolTipText( "Polygonal Shutter" ); bmpShButton.setToolTipText( "Bitmapped Shutter" ); optShButton.setToolTipText( "Shutter Color" ); editLayerButton.setToolTipText( "Layer" ); invertButton.setToolTipText( "Invert" ); flipButton.setToolTipText( "Flip" ); rotButton.setToolTipText( "Rotate" ); zoomButton.setToolTipText( "Zoom" ); zoomFitButton.setToolTipText( "Fit Image" ); zoom1to1Button.setToolTipText( "Zoom Image 1:1" ); voiButton.setToolTipText( "Presets" ); winInFrameButton.setToolTipText( "Interactive" ); saveButton.setToolTipText( "Save to Database" ); saveAsButton.setToolTipText( "Save to File" ); saveScreenButton.setToolTipText( "Save Screen to File" ); lutButton.setToolTipText( "GSDF/CIE-lab" ); psButton.setToolTipText( "Presentation State" ); resetButton.setToolTipText( "Reset" ); optionButton.setToolTipText( "Options" ); pointButton.setToolTipText( "Point" ); lineButton.setToolTipText( "Line" ); rectButton.setToolTipText( "Rectangle" ); polyButton.setToolTipText( "Polyline" ); circleButton.setToolTipText( "Circle" ); ellipseButton.setToolTipText( "Ellipse" ); textButton.setToolTipText( "Text" ); interpolatedButton.setToolTipText( "Interpolated Line" ); editButton.setToolTipText( "Edit" ); printButton.setToolTipText( "Add to Print" ); printStToPrinterButton.setToolTipText( "Print Stored Print Object" ); printHcButton.setToolTipText( "Add to Print" ); printStButton.setToolTipText( "Add to Print" ); filledButton.setToolTipText( "Filled" ); selectLayerButton.setToolTipText( "Select Layer" ); } public static JLabel getSeperator() { return new JLabel (" ");} public void buttonClicked (int ID) { if (fireEvent) { if (ID == ID_QUIT) System.exit(0); if (ID == ID_LOAD_IMAGE) Controller.instance().fireEvent(new DbActionEvent(this,DbActionEvent.LOAD_IM)); if (ID == ID_LOAD_SR) Controller.instance().fireEvent(new DbActionEvent(this,DbActionEvent.LOAD_SR)); if (ID == ID_LOAD) Controller.instance().fireEvent(new DbActionEvent(this,DbActionEvent.LOAD_DB)); if (ID == ID_LOAD_PS) Controller.instance().fireEvent(new DbActionEvent(this,DbActionEvent.LOAD_PS)); if (ID == ID_SAVE) Controller.instance().fireEvent(new DbActionEvent(this,DbActionEvent.SAVE_DB)); if (ID == ID_SAVEAS) Controller.instance().fireEvent(new DbActionEvent(this,DbActionEvent.SAVE_AS)); if (ID == ID_SAVESCREEN) Controller.instance().fireEvent(new DbActionEvent(this,DbActionEvent.SAVE_SCREEN)); if (ID == ID_REFRESH) Controller.instance().fireEvent(new DbActionEvent(this,DbActionEvent.REFRESH)); if (ID == ID_DELETE) Controller.instance().fireEvent(new DbActionEvent(this,DbActionEvent.DELETE)); if (ID == ID_SENDTO) Controller.instance().fireEvent(new DbActionEvent(this,DbActionEvent.SENDTO)); if (ID == ID_DUMP) Controller.instance().fireEvent(new DbActionEvent(this,DbActionEvent.DUMP)); if (ID == ID_CHECKIOD) Controller.instance().fireEvent(new DbActionEvent(this,DbActionEvent.CHECKIOD)); if (ID == ID_PRINTHC) Controller.instance().fireEvent(new DbActionEvent(this,DbActionEvent.PRINTHC)); if (ID == ID_PRINTST) Controller.instance().fireEvent(new DbActionEvent(this,DbActionEvent.PRINTST)); if (ID == ID_PRINTSTTOPRINT) Controller.instance().fireEvent(new DbActionEvent(this,DbActionEvent.PRINTSTTOPRINTER)); if (ID == ID_SET_OPTSHUTTER) Controller.instance().fireEvent(new ImageActionEvent(this,ImageActionEvent.ACTION_EDITSHUTTER)); if (ID == ID_ROT) Controller.instance().fireEvent(new ImageActionEvent(this,ImageActionEvent.ACTION_ROT)); if (ID == ID_RESET) Controller.instance().fireEvent(new ImageActionEvent(this,ImageActionEvent.ACTION_RESET)); if (ID == ID_OPTIONS) (new OptionDialog(optionButton,MainContext.instance().getConfiguration())).setVisible(true); if (ID == ID_ZOOM) Controller.instance().fireEvent(new ImageActionEvent(this,ImageActionEvent.ACTION_ZOOM)); if (ID == ID_ZOOMFIT) Controller.instance().fireEvent(new ImageActionEvent(this,ImageActionEvent.ACTION_ZOOMFIT)); if (ID == ID_ZOOM1TO1) Controller.instance().fireEvent(new ImageActionEvent(this,ImageActionEvent.ACTION_ZOOM1TO1)); if (ID == ID_VOI) Controller.instance().fireEvent(new ImageActionEvent(voiButton,ImageActionEvent.ACTION_VOI)); if (ID == ID_WININFRAME) Controller.instance().fireEvent(new ImageActionEvent(winInFrameButton,ImageActionEvent.ACTION_WININFRAME)); if (ID == ID_RECT) Controller.instance().fireEvent(new ImageActionEvent(this,ImageActionEvent.PAINT_RECT)); if (ID == ID_TEXT) Controller.instance().fireEvent(new ImageActionEvent(this,ImageActionEvent.PAINT_TEXT)); if (ID == ID_CIRCLE) Controller.instance().fireEvent(new ImageActionEvent(this,ImageActionEvent.PAINT_CIRCLE)); if (ID == ID_LINE) Controller.instance().fireEvent(new ImageActionEvent(this,ImageActionEvent.PAINT_LINE)); if (ID == ID_ELLIPSE) Controller.instance().fireEvent(new ImageActionEvent(this,ImageActionEvent.PAINT_ELLIPSE)); if (ID == ID_INTERPOLATED) Controller.instance().fireEvent(new ImageActionEvent(this,ImageActionEvent.PAINT_INTERPOLATED)); if (ID == ID_POLY) Controller.instance().fireEvent(new ImageActionEvent(this,ImageActionEvent.PAINT_POLYLINE)); if (ID == ID_POINT) Controller.instance().fireEvent(new ImageActionEvent(this,ImageActionEvent.PAINT_POINT)); if (ID == ID_EDIT) Controller.instance().fireEvent(new ImageActionEvent(this,ImageActionEvent.PAINT_EDIT)); if (ID == ID_PRINT) Controller.instance().fireEvent(new ImageActionEvent(this,ImageActionEvent.PRINT)); if (ID == ID_LAYERLIST) Controller.instance().fireEvent(new ImageChangeEvent(this,ID_LAYERLIST,layerComboBox.getSelectedIndex())); if (ID == ID_EDIT_LAYER) Controller.instance().fireEvent(new ImageActionEvent(editLayerButton,ImageActionEvent.ACTION_EDITLAYER)); if (ID == ID_SELECTLAYER) Controller.instance().fireEvent(new ImageActionEvent(selectLayerButton,ImageActionEvent.ACTION_SELECTLAYER)); if (ID == ID_IMAGERELATIVE) { Controller.instance().fireEvent(new ImageActionEvent(this,ImageActionEvent.SET_IMAGERELATIVE)); } if (ID == ID_STACKIMAGE_LEFT) Controller.instance().fireEvent(new MoveImageEvent(this,MoveImageEvent.IMAGE_NEXT)); if (ID == ID_STACKIMAGE_RIGHT) Controller.instance().fireEvent(new MoveImageEvent(this,MoveImageEvent.IMAGE_PREVIOUS)); if (ID == ID_STACKIMAGE_FIRST) Controller.instance().fireEvent(new MoveImageEvent(this,MoveImageEvent.IMAGE_FIRST)); if (ID == ID_STACKIMAGE_LAST) Controller.instance().fireEvent(new MoveImageEvent(this,MoveImageEvent.IMAGE_LAST)); if (ID == ID_STACKFRAME_LEFT) Controller.instance().fireEvent(new MoveImageEvent(this,MoveImageEvent.FRAME_NEXT)); if (ID == ID_STACKFRAME_RIGHT) Controller.instance().fireEvent(new MoveImageEvent(this,MoveImageEvent.FRAME_PREVIOUS)); if (ID == ID_STACKFRAME_FIRST) Controller.instance().fireEvent(new MoveImageEvent(this,MoveImageEvent.FRAME_FIRST)); if (ID == ID_STACKFRAME_LAST) Controller.instance().fireEvent(new MoveImageEvent(this,MoveImageEvent.FRAME_LAST)); if (ID == ID_IMAGERELATIVEBUTTON) { Controller.instance().fireEvent(new ImageActionEvent(this,ImageActionEvent.SET_IMAGERELATIVE)); imageRelCheckBox.setSelected(!imageRelCheckBox.isSelected()); if (imageRelCheckBox.isSelected()) imageDisplayButton.setIcon(imageRelative); else imageDisplayButton.setIcon(displayRelative); } } } public void setText(int ID, String text) { if ( ID==ID_WINDOW) Controller.instance().fireEvent(new ImageChangeEvent(this, ID_WINDOW, new Double(text))); if ( ID==ID_CENTER) Controller.instance().fireEvent(new ImageChangeEvent(this, ID_CENTER, new Double(text))); if ( ID==ID_ZOOMINPUT) Controller.instance().fireEvent(new ImageChangeEvent(this, ID_ZOOM, new Double(text))); if ( ID==ID_NAME) Controller.instance().fireEvent(new ImageChangeEvent(this, ID_NAME, text)); if ( ID==ID_CREATOR) Controller.instance().fireEvent(new ImageChangeEvent(this, ID_CREATOR, text)); if ( ID==ID_DESCRIPTION) Controller.instance().fireEvent(new ImageChangeEvent(this, ID_DESCRIPTION, text)); if (ID == ID_STACKCURRENTIMAGE) { Controller.instance().fireEvent(new MoveImageEvent(this,MoveImageEvent.IMAGE_SET, new Integer(text).intValue())); } if (ID == ID_STACKCURRENTFRAME) { Controller.instance().fireEvent(new MoveImageEvent(this,MoveImageEvent.FRAME_SET, new Integer(text).intValue())); } } public void buttonClicked (int ID, boolean state) { if (ID == ID_PRESENTATIONLUT) { presentationLutButton.setSelected(!presentationLutButton.isSelected()); Controller.instance().fireEvent(new ImageActionEvent(presentationLutButton,ImageActionEvent.ACTION_PRESENTATIONLUT)); } if (ID == ID_LUT) { lutButton.setSelected(!lutButton.isSelected()); Controller.instance().fireEvent(new ImageActionEvent(lutButton,ImageActionEvent.ACTION_BARTEN)); } if (ID == ID_SET_RECTSHUTTER) { if (rectShButton.isSelected())rectShButton.setSelected(false); Controller.instance().fireEvent(new SetShutterEvent(this,SetShutterEvent.RECT, state)); } if (ID == ID_SET_POLYSHUTTER) { if (polyShButton.isSelected())polyShButton.setSelected(false); Controller.instance().fireEvent(new SetShutterEvent(this,SetShutterEvent.POLY, state)); } if (ID == ID_SET_CIRCLESHUTTER) { if (circleShButton.isSelected())circleShButton.setSelected(false); Controller.instance().fireEvent(new SetShutterEvent(this,SetShutterEvent.CIRCLE, state)); } if (ID == ID_SET_BMPSHUTTER) Controller.instance().fireEvent(new SetShutterEvent(bmpShButton,SetShutterEvent.BMP, state)); if (ID == ID_INVERT) Controller.instance().fireEvent(new ImageActionEvent(this,ImageActionEvent.ACTION_INVERT)); if (ID == ID_FLIP) Controller.instance().fireEvent(new ImageActionEvent(this,ImageActionEvent.ACTION_FLIP)); if (ID == ID_PS) Controller.instance().fireEvent(new ImageActionEvent(this,ImageActionEvent.ACTION_PS)); if (ID == ID_FILLED) { Controller.instance().fireEvent(new ImageActionEvent(this,ImageActionEvent.SET_FILLED)); filledButton.setSelected(filledCheckBox.isSelected()); } if (ID == ID_FILLEDBUTTON) { Controller.instance().fireEvent(new ImageActionEvent(this,ImageActionEvent.SET_FILLED)); filledCheckBox.setSelected(filledButton.isSelected()); } if (ID == ID_IMAGERELATIVE) { Controller.instance().fireEvent(new ImageActionEvent(this,ImageActionEvent.SET_IMAGERELATIVE)); if (imageRelCheckBox.isSelected()) imageDisplayButton.setIcon(imageRelative); else imageDisplayButton.setIcon(displayRelative); } if (ID == ID_MAGNIFY) Controller.instance().fireEvent(new ImageActionEvent(this,ImageActionEvent.MODE_MAGNIFY)); if (ID == ID_SCALETOFIT) Controller.instance().fireEvent(new ImageActionEvent(this,ImageActionEvent.MODE_SCALE)); if (ID == ID_TRUESIZE) Controller.instance().fireEvent(new ImageActionEvent(this,ImageActionEvent.MODE_TRUESIZE)); if (ID == ID_PRINT) Controller.instance().fireEvent(new ImageActionEvent(this,ImageActionEvent.PRINT)); if (ID == ID_APPLYFRAME) Controller.instance().fireEvent(new MoveImageEvent(this,MoveImageEvent.APPLYFRAME)); if (ID == ID_APPLYIMAGE)Controller.instance().fireEvent(new MoveImageEvent(this,MoveImageEvent.APPLYIMAGE)); if (ID == ID_APPLYALL)Controller.instance().fireEvent(new MoveImageEvent(this,MoveImageEvent.APPLYALL)); } public void itemStateChanged (int ID, boolean state,Object o) { if (fireEvent) { } } /* public void setSelected (int ID, int index) { //if (ID == ID_LIST); }*/ public boolean processEvent (DSEvent e) { if (e instanceof ImageActionEvent) { ImageActionEvent ae = (ImageActionEvent)e; { switch (ae.type) { case ImageActionEvent.MODE_MAGNIFY: zoomButton.setEnabled(true); zoomFitButton.setEnabled(true); zoomTextField.setEnabled(true); zoom1to1Button.setEnabled(true); return true; case ImageActionEvent.MODE_SCALE: zoomButton.setEnabled(true); zoomFitButton.setEnabled(true); zoomTextField.setEnabled(true); zoom1to1Button.setEnabled(true); return true; case ImageActionEvent.MODE_TRUESIZE: zoomButton.setEnabled(false); zoomFitButton.setEnabled(false); zoomTextField.setText(""); zoomTextField.setEnabled(false); zoom1to1Button.setEnabled(false); return true; } } } return false; } public boolean processComponents (DSEvent e) { fireEvent = false; if (e instanceof PresentationStateFixInfoEvent) { PresentationStateFixInfoEvent sp = (PresentationStateFixInfoEvent)e; rectShButton.setSelected(sp.haveRectShutter); circleShButton.setSelected(sp.haveCircShutter); polyShButton.setSelected(sp.havePolyShutter); bmpShButton.setSelected(sp.haveBmpShutter); invertButton.setSelected(sp.isInvert); flipButton.setSelected(sp.isFlip); if (sp.rot == 0) rotButton.setIcon(rotIcon0); if (sp.rot == 1) rotButton.setIcon(rotIcon90); if (sp.rot == 2) rotButton.setIcon(rotIcon180); if (sp.rot == 3) rotButton.setIcon(rotIcon270); psButton.setSelected(sp.psOn); if (sp.lutOn); else { centerTextField.setText(sp.lev.toString()); windowTextField.setText(sp.win.toString()); } double newValue = sp.zoom.doubleValue(); newValue = (Math.round(newValue*100d)/100d); zoomTextField.setText(new Double (newValue).toString()); fireEvent = true; nameTextField.setText(sp.name); creatorTextField.setText(sp.creator); descrTextArea.setText(sp.description); String mode = null; trueSizeRadio.setEnabled(sp.canUseDisplayedAreaTrueSize); if (sp.presentationSizeMode == jDVPSPresentationSizeMode.DVPSD_magnify) { mode = "magnify"; magnifyRadio.setSelected(true); } if (sp.presentationSizeMode == jDVPSPresentationSizeMode.DVPSD_scaleToFit) { mode = "scale to fit"; scaleRadio.setSelected(true); } if (sp.presentationSizeMode == jDVPSPresentationSizeMode.DVPSD_trueSize) { mode = "true size"; zoomButton.setEnabled(false); zoomTextField.setEnabled(false); trueSizeRadio.setSelected(true); } String d = new String("rows = " + sp.rows + ", cols = " + sp.cols+ "\nmode = " + mode+ "\n" + sp.displayArea); if (sp.presentationSizeMode == jDVPSPresentationSizeMode.DVPSD_magnify) d = d.concat("\nmangn. ratio" + sp.presentationPixelMagnificationRatio); if (sp.haveDisplayedAreaPresentationPixelSpacing )d = d.concat("\npixel spacing: (" + sp.presentationPixelSpacing_x + "/" + sp.presentationPixelSpacing_y+ ")"); else d = d.concat("\naspect ratio: " + sp.presentationPixelAspectRatio); infoTextArea.setLineWrap(true); infoTextArea.setText(d); maxImageTextField.setText(new Integer(sp.maxNumberOfImages).toString()); currentImageTextField.setText(new Integer(sp.currentImageNumber).toString()); maxFrameTextField.setText(new Integer(sp.maxNumberOfFramesInCurrentImage).toString()); currentFrameTextField.setText(new Integer(sp.currentNumberOfFrames).toString()); //applyAllRadio.setSelected(true); if (sp.applyTo == jDVPSObjectApplicability.DVPSB_allImages) applyAllRadio.setSelected(true); else if (sp.applyTo == jDVPSObjectApplicability.DVPSB_currentFrame)applyFrameRadio.setSelected(true); else if (sp.applyTo == jDVPSObjectApplicability.DVPSB_currentImage) applyImageRadio.setSelected(true); } if (e instanceof SetPresentationStateEvent) { SetPresentationStateEvent sp = (SetPresentationStateEvent)e; rectShButton.setSelected(sp.haveRectShutter); circleShButton.setSelected(sp.haveCircShutter); polyShButton.setSelected(sp.havePolyShutter); bmpShButton.setSelected(sp.haveBmpShutter); invertButton.setSelected(sp.isInvert); flipButton.setSelected(sp.isFlip); if (sp.rot == 0) rotButton.setIcon(rotIcon0); if (sp.rot == 1) rotButton.setIcon(rotIcon90); if (sp.rot == 2) rotButton.setIcon(rotIcon180); if (sp.rot == 3) rotButton.setIcon(rotIcon270); psButton.setSelected(sp.psOn); if (sp.curve == jDVPSDisplayTransform.DVPSD_none)lutButton.setSelected(false); else lutButton.setSelected(true); if (sp.psLut ==0)presentationLutButton.setSelected(false); else presentationLutButton.setSelected(true); } fireEvent = true; if (e instanceof ImageChangeEvent) { ImageChangeEvent ie = (ImageChangeEvent)e; switch (ie.type) { case ID_INVERT: invertButton.setSelected(ie.selected); break; case ID_FLIP: flipButton.setSelected(ie.selected); break; case ID_PS: psButton.setSelected(ie.selected); break; case ID_LUT: lutButton.setSelected(ie.selected); break; case ID_ROT0: rotButton.setIcon(rotIcon0); break; case ID_ROT90: rotButton.setIcon(rotIcon90); break; case ID_ROT180: rotButton.setIcon(rotIcon180); break; case ID_ROT270: rotButton.setIcon(rotIcon270); break; case ID_ZOOMINPUT: double newValue = ie.newDouble.doubleValue(); newValue = (Math.round(newValue*100d)/100d); zoomTextField.setText(new Double (newValue).toString()); break; case ID_WINDOW: windowTextField.setText(ie.newDouble.toString()); centerTextField.setText(ie.newDouble1.toString()); break; case ID_MAGNIFY: zoomButton.setEnabled(true); zoomFitButton.setEnabled(true); zoomTextField.setEnabled(true); zoom1to1Button.setEnabled(true); magnifyRadio.setSelected(true); break; case ID_SCALETOFIT: zoomButton.setEnabled(true); zoomFitButton.setEnabled(true); zoom1to1Button.setEnabled(true); zoomTextField.setEnabled(true); scaleRadio.setSelected(true); break; case ID_TRUESIZE: zoomFitButton.setEnabled(false); zoom1to1Button.setEnabled(false); zoomButton.setEnabled(false); zoomTextField.setEnabled(false); trueSizeRadio.setSelected(true); break; case ID_VOILUT: windowTextField.setText(""); centerTextField.setText(""); break; /* case ID_STACKCURRENTFRAME: currentFrameTextField.setText(new Integer(ie.intValue).toString()); break; case ID_STACKCURRENTIMAGE: currentImageTextField.setText(new Integer(ie.intValue).toString()); break; */ } } if (e instanceof SendLayerEvent) { SendLayerEvent sle = (SendLayerEvent)e; DefaultComboBoxModel m = new DefaultComboBoxModel(sle.layers); layerComboBox.setModel(m); layerComboBox.setSelectedIndex(sle.selectedIndex); } return false; } } /* * CVS Log * $Log: GuiComponents.java,v $ * Revision 1.1.1.1 2001/06/06 10:32:30 kleber * Init commit for DICOMscope 3.5 * Create new CVS * */ dicomscope-3.6.0/tkgui/main/ImageActionEvent.java0000644000265600020320000000701111262371101021056 0ustar tilleaadmin/* * * Copyright (C) 1999, Institute for MicroTherapy * * This software and supporting documentation were developed by * * University of Witten/Herdecke * Department of Radiology and MicroTherapy * Institute for MicroTherapy * Medical computer science * * Universitaetsstrasse 142 * 44799 Bochum, Germany * * http://www.microtherapy.de/go/cs * mailto:computer.science@microtherapy.de * * THIS SOFTWARE IS MADE AVAILABLE, AS IS, AND THE INSTITUTE MAKES NO * WARRANTY REGARDING THE SOFTWARE, ITS PERFORMANCE, ITS MERCHANTABILITY * OR FITNESS FOR ANY PARTICULAR USE, FREEDOM FROM ANY COMPUTER DISEASES * OR ITS CONFORMITY TO ANY SPECIFICATION. THE ENTIRE RISK AS TO QUALITY * AND PERFORMANCE OF THE SOFTWARE IS WITH THE USER. * * Author : $Author: kleber $ * Last update : $Date: 2001/06/06 10:32:30 $ * Revision : $Revision: 1.1.1.1 $ * State: $State: Exp $ */ package main; import java.util.*; /** * This class contains image action events . */ public class ImageActionEvent extends DSEvent { public final static int ACTION_SETNEWIMAGE = 0; public final static int ACTION_FLIP = 1; public final static int ACTION_ROT = 2; public final static int ACTION_INVERT = 3; public final static int ACTION_PS = 4; public final static int ACTION_BARTEN = 5; public final static int ACTION_RESET = 6; public final static int ACTION_SELECTLAYER = 7; public final static int ACTION_EDITLAYER = 8; public final static int ACTION_EDITSHUTTER = 9; public final static int ACTION_VOI = 10; public final static int ACTION_PRESENTATIONLUT = 11; public final static int ACTION_WININFRAME = 12; public final static int SET_FILLED = 20; public final static int SET_IMAGERELATIVE = 21; public final static int PAINT_RECT = 100; public final static int PAINT_CIRCLE = 101; public final static int PAINT_LINE = 102; public final static int PAINT_POINT = 103; public final static int PAINT_INTERPOLATED = 104; public final static int PAINT_ELLIPSE = 105; public final static int PAINT_POLYLINE = 106; public final static int PAINT_TEXT = 107; public final static int PAINT_EDIT = 108; public final static int MODE_MAGNIFY = 300; public final static int MODE_SCALE = 301; public final static int MODE_TRUESIZE = 302; public final static int PRINT = 1000; public final static int ACTION_ZOOM = 500; public final static int ACTION_ZOOMFIT = 501; public final static int ACTION_ZOOM1TO1 = 502; public final static int ACTION_SETNEW_SR = 600; public final static int ACTION_COMPOSITE_SR = 601; public int type; public String sopClassUid; public String sopInstanceUid; public int numberOfImages; public int numberOfFrames; public ImageActionEvent(Object o, int type) { super(o); this.type = type; } public ImageActionEvent(Object o, int type, int numberOfImages, int numberOfFrames) { super(o); this.type = type; this.numberOfFrames = numberOfFrames; this.numberOfImages = numberOfImages; } public ImageActionEvent(Object o, int type, String sopClassUid, String sopInstanceUid) { super(o); this.type = type; this.sopClassUid = sopClassUid; this.sopInstanceUid = sopInstanceUid; } } /* * CVS Log * $Log: ImageActionEvent.java,v $ * Revision 1.1.1.1 2001/06/06 10:32:30 kleber * Init commit for DICOMscope 3.5 * Create new CVS * */ dicomscope-3.6.0/tkgui/main/ImageChangeEvent.java0000644000265600020320000000444211262371101021033 0ustar tilleaadmin/* * * Copyright (C) 1999, Institute for MicroTherapy * * This software and supporting documentation were developed by * * University of Witten/Herdecke * Department of Radiology and MicroTherapy * Institute for MicroTherapy * Medical computer science * * Universitaetsstrasse 142 * 44799 Bochum, Germany * * http://www.microtherapy.de/go/cs * mailto:computer.science@microtherapy.de * * THIS SOFTWARE IS MADE AVAILABLE, AS IS, AND THE INSTITUTE MAKES NO * WARRANTY REGARDING THE SOFTWARE, ITS PERFORMANCE, ITS MERCHANTABILITY * OR FITNESS FOR ANY PARTICULAR USE, FREEDOM FROM ANY COMPUTER DISEASES * OR ITS CONFORMITY TO ANY SPECIFICATION. THE ENTIRE RISK AS TO QUALITY * AND PERFORMANCE OF THE SOFTWARE IS WITH THE USER. * * Author : $Author: kleber $ * Last update : $Date: 2001/06/06 10:32:30 $ * Revision : $Revision: 1.1.1.1 $ * State: $State: Exp $ */ package main; import java.util.*; /** * Event for changing the zoomValue */ public class ImageChangeEvent extends DSEvent { public int type; public boolean selected; public Double newDouble; public Double newDouble1; public String s; public int intValue; public ImageChangeEvent( Object o, int type) { super(o); this.type = type; } public ImageChangeEvent( Object o, int type, boolean selected) { super(o); this.type = type; this.selected = selected; } public ImageChangeEvent( Object o, int type, Double newDouble,Double newDouble1 ) { super(o); this.type = type; this.newDouble = newDouble; this.newDouble1 = newDouble1; } public ImageChangeEvent( Object o, int type, Double newDouble ) { super(o); this.type = type; this.newDouble = newDouble; } public ImageChangeEvent( Object o, int type,String s ) { super(o); this.type = type; this.s = s; } public ImageChangeEvent( Object o, int type,int intValue ) { super(o); this.type = type; this.intValue = intValue; } } /* * CVS Log * $Log: ImageChangeEvent.java,v $ * Revision 1.1.1.1 2001/06/06 10:32:30 kleber * Init commit for DICOMscope 3.5 * Create new CVS * */ dicomscope-3.6.0/tkgui/main/MainContext.java0000644000265600020320000003247011262371101020134 0ustar tilleaadmin/* * * Copyright (C) 1999, Institute for MicroTherapy * * This software and supporting documentation were developed by * * University of Witten/Herdecke * Department of Radiology and MicroTherapy * Institute for MicroTherapy * Medical computer science * * Universitaetsstrasse 142 * 44799 Bochum, Germany * * http://www.microtherapy.de/go/cs * mailto:computer.science@microtherapy.de * * THIS SOFTWARE IS MADE AVAILABLE, AS IS, AND THE INSTITUTE MAKES NO * WARRANTY REGARDING THE SOFTWARE, ITS PERFORMANCE, ITS MERCHANTABILITY * OR FITNESS FOR ANY PARTICULAR USE, FREEDOM FROM ANY COMPUTER DISEASES * OR ITS CONFORMITY TO ANY SPECIFICATION. THE ENTIRE RISK AS TO QUALITY * AND PERFORMANCE OF THE SOFTWARE IS WITH THE USER. * * Author : $Author: kleber $ * Last update : $Date: 2003/09/08 10:08:20 $ * Revision : $Revision: 1.2 $ * State: $State: Exp $ */ package main; import J2Ci.*; import java.io.*; import java.awt.*; import java.util.*; import java.awt.image.*; import java.awt.geom.*; import java.awt.font.*; import java.awt.color.*; /** * This class manages the context of DICOMscope. * Some global variables of the programm are available by * methods of this class. * It implements the singleton pattern. * * @author Klaus Kleber * @author Andreas Schroeter * @since 30.04.1999 */ public class MainContext extends java.lang.Object { //import static library static { System.loadLibrary ("jInterface"); } /** * The only instance of this class. * * @since 30.04.1999 */ private static MainContext theInstance = null; public static Hashtable profiles = new Hashtable(); /** * True if the hight quality monitor with the dome board is used. * * @since 30.04.1999 */ public boolean highQualitySystem = false; /** * Application Name * * @since 30.04.1999 */ //String title = new String ("DICOMscope 3.0"); String title = new String ("DICOMscope 3.6.0"); public static final String iconPath = "icons/"; public static Font logFont; /** * Contains the ColorModel for drawing the images. The ColorModel depends * from the display system. If the display system the low quality system then * a 8 bit IndexColorModel will used. If the display system is the high * quality system 8 Bit ColorModel loaded from de GraphicsConfiguration will be * used. * * @since 30.04.1999 */ ColorModel usedColorModel; //static Dimension screenSize; /** * Outputstream for log file * * @since 30.04.1999 */ public static Hashtable configurationProps; jDVInterface dvi; /** * Return the only instance of a MainContext object. If there is no instance * this methode create this instance. *
* status: tested * * @return The only intance of this class. * @since 30.04.1999 */ public static MainContext instance() { if (theInstance == null) theInstance = new MainContext(); return theInstance; } public static SRCodeList codeList; /** * Constructor. This class implements the singleton pattern. * This constructor should only called from the * instance() methode of this class. * * @since 30.04.1999 * @see MainContext.instance() */ private MainContext() { //System.out.println("MainContext.iconPath " +MainContext.iconPath ); //Load deviceColorModell loadDeviceInformation(); codeList = new SRCodeList("codes.dic"); } /** * Loads and constructs the color model from the device. * * @since 30.04.1999 */ private void loadDeviceInformation() { // GraphicsEnvironment gr; GraphicsDevice gd; ColorModel cm; GraphicsConfiguration gc; gr = GraphicsEnvironment.getLocalGraphicsEnvironment(); gd = gr.getDefaultScreenDevice(); gc = gd.getDefaultConfiguration(); cm = gc.getColorModel(); usedColorModel = cm; GrayColorIndex.fillIndexColorModel(); } /** * Returns a 8 Bit IndexColorModel * * @param A 8 Bit IndexColorModel * @since 30.04.1999 */ public ColorModel getIndexColorModel() { return GrayColorIndex.getGrayColorModel(); } /** * Returns the ColorModel used for displaying images. Depends * from the system. * * @return The ColorModel used for displaying images. * @since 30.04.1999 */ public ColorModel getUsedColorModel() { if (highQualitySystem)return usedColorModel; else return GrayColorIndex.getGrayColorModel(); } /** * Returns the font for displaying PresentationStateTextObjects. * Depends from the system. * * @return The font for displaying PresentationStateTextObjects. * @since 30.04.1999 */ public Font getFontTextAnnotations() { return (Font) configurationProps.get("TextFont"); } public void initConfiguration(jDVInterface dvi) { //Browser this.dvi = dvi; //highQualitySystem = true; configurationProps= new Hashtable(); String fontNameLog = dvi.getGUIConfigEntry("FONTNAMELOG"); String fontSizeLog = dvi.getGUIConfigEntry("FONTSIZELOG"); //Fonts String fontSize = dvi.getGUIConfigEntry("FONTSIZE"); String fontName = dvi.getGUIConfigEntry("FONTNAME"); String fontNameText = dvi.getGUIConfigEntry("FONTNAMETEXT"); String fontSizeText = dvi.getGUIConfigEntry("FONTSIZETEXT"); String functionPanelPlacement = dvi.getGUIConfigEntry("FUNCTIONPANELPLACEMENT"); String paintPanelPlacement = dvi.getGUIConfigEntry("PAINTPANELPLACEMENT"); String navigationPanelOn = dvi.getGUIConfigEntry("NAVIGATIONPANELON"); if (navigationPanelOn == null)configurationProps.put("NavigationPanelOn", new Boolean(true)); else configurationProps.put("NavigationPanelOn", new Boolean(navigationPanelOn)); String signWarning = dvi.getGUIConfigEntry("SIGNWARNING"); if (signWarning == null)signWarning = "true"; configurationProps.put("SignWarning",new Boolean(signWarning)); String autoUpdateStudyBrowser = dvi.getGUIConfigEntry("AUTOUPDATESTUDYBROWSER"); if (autoUpdateStudyBrowser == null)autoUpdateStudyBrowser = "true"; configurationProps.put("AutoUpdateStudyBrowser",new Boolean(autoUpdateStudyBrowser)); String backgroundColor = dvi.getGUIConfigEntry("BACKGROUNDCOLOR"); if (backgroundColor!= null) { try { StringTokenizer st = new StringTokenizer(backgroundColor, "\\"); Color color = new Color(new Integer(st.nextToken()).intValue(), new Integer(st.nextToken()).intValue(), new Integer(st.nextToken()).intValue()); configurationProps.put("BrowserBackgroundColor",color); } catch (NoSuchElementException e) { System.out.println("colorn: "); } } if (fontName == null) fontName = "SansSerif"; if (fontNameText == null) fontNameText = "SansSerif"; if (fontNameLog == null) fontNameLog = "Monospaced"; if (dvi.getGUIConfigEntryBool("HIGHRESOLUTIONGRAPHICS", false) == false) { //Default settings fpr font if (fontSize == null) fontSize = "12"; if (fontSizeText == null) fontSizeText = "16"; if (fontSizeLog == null) fontSizeLog = "12"; //Default settings for function panel if (functionPanelPlacement == null)configurationProps.put("FunctionPanelPlacement", "East"); else configurationProps.put("FunctionPanelPlacement", functionPanelPlacement); if (paintPanelPlacement == null)configurationProps.put("PaintPanelPlacement", "Integrated"); else configurationProps.put("PaintPanelPlacement", paintPanelPlacement); configurationProps.put("ProcessingPanelOn", new Boolean(true)); configurationProps.put("PSPanelOn", new Boolean(false)); configurationProps.put("HighEndSystem", new Boolean(false)); } else { if (fontSize == null) fontSize = "30"; if (fontSizeText == null) fontSizeText = "48"; if (fontSizeLog == null) fontSizeLog = "20"; //Default settings for function panel if (functionPanelPlacement == null)configurationProps.put("FunctionPanelPlacement", "North"); else configurationProps.put("FunctionPanelPlacement", functionPanelPlacement); if (paintPanelPlacement == null)configurationProps.put("PaintPanelPlacement", "Integrated"); else configurationProps.put("PaintPanelPlacement", paintPanelPlacement); configurationProps.put("ProcessingPanelOn", new Boolean(true)); configurationProps.put("PSPanelOn", new Boolean(false)); configurationProps.put("HighEndSystem", new Boolean(true)); highQualitySystem = true; } configurationProps.put("GUIFont", new Font(fontName,0,new Integer(fontSize).intValue())); configurationProps.put("TextFont", new Font(fontNameText,0,new Integer(fontSizeText).intValue())); configurationProps.put("LogFont", new Font(fontNameLog,0,new Integer(fontSizeLog).intValue())); logFont = new Font(fontNameLog,0,new Integer(fontSizeLog).intValue()); //StudyBrowser configurationProps.put("UID", new Boolean(false)); configurationProps.put("Description", new Boolean(true)); configurationProps.put("PatientInfo", new Boolean(true)); configurationProps.put("Modality", new Boolean(true)); configurationProps.put("DateTime", new Boolean(false)); configurationProps.put("NewItems", new Boolean(true)); configurationProps.put("Filename", new Boolean(false)); configurationProps.put("Label", new Boolean(true)); configurationProps.put("ButtonOn", new Boolean(false)); configurationProps.put("WarnUnsignedSrDouments", new Boolean(false)); //Viewer String warnUnsignedSrDouments = dvi.getGUIConfigEntry("WARNUNSIGNEDOBJECTSINSR"); if (warnUnsignedSrDouments == null)warnUnsignedSrDouments = "true"; configurationProps.put("WarnUnsignedSrDouments",new Boolean(warnUnsignedSrDouments)); //Settings for TabbedPanel String tabPlacement = dvi.getGUIConfigEntry("TABPLACEMENT"); if (tabPlacement == null)configurationProps.put("TabbedPlacement", "1"); else { if (tabPlacement.equals("North") ) configurationProps.put("TabbedPlacement", "1"); if (tabPlacement.equals("East") ) configurationProps.put("TabbedPlacement", "2"); if (tabPlacement.equals("South") ) configurationProps.put("TabbedPlacement", "3"); if (tabPlacement.equals("West") ) configurationProps.put("TabbedPlacement", "4"); } jDoubleByRef ambientValue = new jDoubleByRef(); if (dvi.getAmbientLightValue(ambientValue) == 0)configurationProps.put("AmbientLight", new Double(ambientValue.value).toString()); double monitorHeight = dvi.getMonitorPixelHeight(); double monitorWidth = dvi.getMonitorPixelWidth(); if ( monitorHeight == 0d) monitorHeight = 1d; if ( monitorWidth == 0d) monitorWidth = 1d; configurationProps.put("PixelSizeX", new Double(monitorWidth).toString()); configurationProps.put("PixelSizeY", new Double(monitorHeight).toString()); configurationProps.put("Title", title); if (highQualitySystem)dvi.writeLogMessage(jDVPSLogMessageLevel.DVPSM_informational,"GUI","Very High Resolution Graphics" ); else dvi.writeLogMessage(jDVPSLogMessageLevel.DVPSM_informational,"GUI","Standard Resolution Graphics" ); Hashtable srProfile = (Hashtable)configurationProps.clone(); srProfile.put("FunctionPanelPlacement", "None"); srProfile.put("PaintPanelPlacement", "Toolbar"); srProfile.put("ProcessingPanelOn", new Boolean(true)); srProfile.put("PSPanelOn", new Boolean(false)); Hashtable imageProfile = (Hashtable)configurationProps.clone(); imageProfile.put("FunctionPanelPlacement", "East"); imageProfile.put("PaintPanelPlacement", "Integrated"); imageProfile.put("ProcessingPanelOn", new Boolean(true)); imageProfile.put("PSPanelOn", new Boolean(true)); profiles.put("Configuration Profile",(Hashtable)configurationProps.clone()); profiles.put("Image Profile",imageProfile); profiles.put("Structured Report Profile",srProfile); } public Hashtable getConfiguration() { return configurationProps; } }//FontRenderContext /* * CVS Log * $Log: MainContext.java,v $ * Revision 1.2 2003/09/08 10:08:20 kleber * New version number * * Revision 1.1.1.1 2001/06/06 10:32:30 kleber * Init commit for DICOMscope 3.5 * Create new CVS * */ dicomscope-3.6.0/tkgui/main/MainListener.java0000644000265600020320000000310311262371101020264 0ustar tilleaadmin/* * * Copyright (C) 1999, Institute for MicroTherapy * * This software and supporting documentation were developed by * * University of Witten/Herdecke * Department of Radiology and MicroTherapy * Institute for MicroTherapy * Medical computer science * * Universitaetsstrasse 142 * 44799 Bochum, Germany * * http://www.microtherapy.de/go/cs * mailto:computer.science@microtherapy.de * * THIS SOFTWARE IS MADE AVAILABLE, AS IS, AND THE INSTITUTE MAKES NO * WARRANTY REGARDING THE SOFTWARE, ITS PERFORMANCE, ITS MERCHANTABILITY * OR FITNESS FOR ANY PARTICULAR USE, FREEDOM FROM ANY COMPUTER DISEASES * OR ITS CONFORMITY TO ANY SPECIFICATION. THE ENTIRE RISK AS TO QUALITY * AND PERFORMANCE OF THE SOFTWARE IS WITH THE USER. * * Author : $Author: kleber $ * Last update : $Date: 2001/06/06 10:32:30 $ * Revision : $Revision: 1.1.1.1 $ * State: $State: Exp $ */ package main; import java.util.*; /** * Base interface for classes which wants to be a Listener of JiveEvents. */ public interface MainListener extends EventListener { /** * Processes an event. Implementing classes should check for the * exact subclass of JiveEvent (via instanceof) to get full information * of the event. * * @param e the event * @return true if the event was accepted. */ public abstract boolean processEvent (DSEvent e); } /* * CVS Log * $Log: MainListener.java,v $ * Revision 1.1.1.1 2001/06/06 10:32:30 kleber * Init commit for DICOMscope 3.5 * Create new CVS * */ dicomscope-3.6.0/tkgui/main/MoveImageEvent.java0000644000265600020320000000412311262371101020550 0ustar tilleaadmin/* * * Copyright (C) 1999, Institute for MicroTherapy * * This software and supporting documentation were developed by * * University of Witten/Herdecke * Department of Radiology and MicroTherapy * Institute for MicroTherapy * Medical computer science * * Universitaetsstrasse 142 * 44799 Bochum, Germany * * http://www.microtherapy.de/go/cs * mailto:computer.science@microtherapy.de * * THIS SOFTWARE IS MADE AVAILABLE, AS IS, AND THE INSTITUTE MAKES NO * WARRANTY REGARDING THE SOFTWARE, ITS PERFORMANCE, ITS MERCHANTABILITY * OR FITNESS FOR ANY PARTICULAR USE, FREEDOM FROM ANY COMPUTER DISEASES * OR ITS CONFORMITY TO ANY SPECIFICATION. THE ENTIRE RISK AS TO QUALITY * AND PERFORMANCE OF THE SOFTWARE IS WITH THE USER. * * Author : $Author: kleber $ * Last update : $Date: 2001/06/06 10:32:30 $ * Revision : $Revision: 1.1.1.1 $ * State: $State: Exp $ */ package main; import java.util.*; /** * This class contains image move events . */ public class MoveImageEvent extends DSEvent { public static final int IMAGE_FIRST = 0; public static final int IMAGE_LAST = 1; public static final int IMAGE_NEXT= 2; public static final int IMAGE_PREVIOUS=3; public static final int IMAGE_SET = 4; public static final int FRAME_FIRST = 10; public static final int FRAME_LAST = 11; public static final int FRAME_NEXT= 12; public static final int FRAME_PREVIOUS=13; public static final int FRAME_SET = 14; public static final int APPLYALL = 20; public static final int APPLYIMAGE = 21; public static final int APPLYFRAME = 22; public int value; public int type; public MoveImageEvent(Object o, int type) { super(o); this.type = type; } public MoveImageEvent(Object o, int type, int value) { super(o); this.type = type; this.value = value; } } /* * CVS Log * $Log: MoveImageEvent.java,v $ * Revision 1.1.1.1 2001/06/06 10:32:30 kleber * Init commit for DICOMscope 3.5 * Create new CVS * */ dicomscope-3.6.0/tkgui/main/OptionDialog.java0000644000265600020320000004521611262371101020275 0ustar tilleaadmin/* * * Copyright (C) 1999, Institute for MicroTherapy * * This software and supporting documentation were developed by * * University of Witten/Herdecke * Department of Radiology and MicroTherapy * Institute for MicroTherapy * Medical computer science * * Universitaetsstrasse 142 * 44799 Bochum, Germany * * http://www.microtherapy.de/go/cs * mailto:computer.science@microtherapy.de * * THIS SOFTWARE IS MADE AVAILABLE, AS IS, AND THE INSTITUTE MAKES NO * WARRANTY REGARDING THE SOFTWARE, ITS PERFORMANCE, ITS MERCHANTABILITY * OR FITNESS FOR ANY PARTICULAR USE, FREEDOM FROM ANY COMPUTER DISEASES * OR ITS CONFORMITY TO ANY SPECIFICATION. THE ENTIRE RISK AS TO QUALITY * AND PERFORMANCE OF THE SOFTWARE IS WITH THE USER. * * Author : $Author: kleber $ * Last update : $Date: 2001/06/06 10:32:30 $ * Revision : $Revision: 1.1.1.1 $ * State: $State: Exp $ */ package main; import de.microtherapy.tools.text.document.general.*; import javax.swing.*; import jToolkit.gui.*; import java.awt.*; import javax.swing.border.*; import java.util.*; import viewer.gui.*; import java.awt.event.*; /** * This class contains the GUI for the OptionDialog. * * @author Klaus Kleber */ public class OptionDialog extends JDialog implements CommandButtonListener { public static final int ID_OK =0; public static final int ID_CANCEL =1; public static final int ID_APPLY =2; private boolean changeListenerOn= true; /** * Contains the okButton */ CommandJButton okButton; /** * Contains the applyButton */ CommandJButton applyButton; /** * Contains the cancelButton */ CommandJButton cancelButton; /** * Contains the Tabpanel of the OptionPanel */ JTabbedPane tb = new JTabbedPane(); /** * GUI of the Series Browser */ JCheckBox uidCb = new JCheckBox("UID", false); JCheckBox descCb = new JCheckBox("Description", false); JCheckBox patiCb = new JCheckBox("Patient Information", false); JCheckBox modaCb = new JCheckBox("Modality", false); JCheckBox timeCb = new JCheckBox("Date & Time", false); JCheckBox newiCb = new JCheckBox("New Items", false); JCheckBox fileCb = new JCheckBox("Filename", false); JCheckBox lablCb = new JCheckBox("Label", false); JCheckBox studyButtonOn = new JCheckBox("Buttons on", false); /** * General GUI Elements */ JRadioButton fLeft = new JRadioButton("Left"); JRadioButton fRight = new JRadioButton("Right"); JRadioButton fTop = new JRadioButton("Top"); JRadioButton fDown = new JRadioButton("Down"); JRadioButton fNone = new JRadioButton("None"); JTextField ambientLight = new JTextField(5); JTextField pixelSizeX = new JTextField(10); JTextField pixelSizeY = new JTextField(10); JComboBox uiComboBox; JComboBox profilesComboBox = new JComboBox(); /** * GUI of the Viewer */ JComboBox paintCombo = new JComboBox(); JCheckBox processingPanelOn = new JCheckBox("Image Processing Functions", false); JCheckBox psPanelOn = new JCheckBox("Presentation State Panel", false); JCheckBox navigationPanelOn = new JCheckBox("Navigation Panel ", true); JRadioButton pLeft = new JRadioButton("Left"); JRadioButton pRight = new JRadioButton("Right"); JRadioButton pTop = new JRadioButton("Top"); JRadioButton pDown = new JRadioButton("Down"); /** * Contains the configuaration of DICOMscope */ Hashtable configurationProperties; Font font ; /** * Constructor. Builds the GUI. * * @param parent Parent Component of the Dialog * @param configurationProperties Contains the configuaration of DICOMscope. */ public OptionDialog(JComponent parent, Hashtable configurationProperties) { super(); ActionListener l = new ChangedActionListener(); this.configurationProperties = configurationProperties; if (configurationProperties.containsKey("GUIFont"))font = (Font)configurationProperties.get("GUIFont"); getContentPane().setFont(font); //Inits setModal(true); setSize(300,400); setLocationRelativeTo(parent); setTitle("DICOMscope Options"); getContentPane().setLayout(new BorderLayout(10,10)); getRootPane().setFont(font); getRootPane().getContentPane().setFont(font); //GetFont //Buttons okButton = new CommandJButton("OK",this,ID_OK); cancelButton = new CommandJButton("Cancel",this,ID_CANCEL); applyButton = new CommandJButton("Apply",this,ID_APPLY); JPanel buttonPanel = new JPanel(); buttonPanel.add(okButton); buttonPanel.add(applyButton); buttonPanel.add(cancelButton); getContentPane().add(buttonPanel,BorderLayout.SOUTH); //TabbedPane JPanel studyOptions = new JPanel(); JPanel viewerOptions = new JPanel(); JPanel printOptions = new JPanel(); JPanel generalOptions = new JPanel(); tb.add("Browser",studyOptions); tb.add("Viewer",viewerOptions); // tb.add("Print",printOptions); tb.add("General",generalOptions); getContentPane().add(tb,BorderLayout.CENTER); /////////////////////////////////////////////// //General /////////////////////////////////////////////////// generalOptions.setLayout(new BoxLayout(generalOptions,BoxLayout.Y_AXIS)); JPanel pPanel = new JPanel(); pPanel.setBorder(new TitledBorder("Set Tabbed Placement")); ButtonGroup pGroup = new ButtonGroup(); pPanel.add(pLeft); pPanel.add(pRight); pPanel.add(pTop); pPanel.add(pDown); pGroup.add(pLeft); pGroup.add(pRight); pGroup.add(pTop); pGroup.add(pDown); pLeft.setSelected(true); //generalOptions.add(pPanel); JPanel profilesPanel = new JPanel(); profilesPanel.setBorder(new TitledBorder("Profiles")); profilesComboBox = new JComboBox(); Hashtable profiles = MainContext.profiles; profilesComboBox.addItem( "User defined" ); for (Enumeration e = profiles.keys() ; e.hasMoreElements() ;) { profilesComboBox.addItem( e.nextElement() ); } profilesPanel.add(profilesComboBox); profilesComboBox.addActionListener(new ProfilesActionListener()); generalOptions.add(profilesPanel); JPanel guiPanel = new JPanel(); guiPanel.setBorder(new TitledBorder("Look and Feel")); uiComboBox = new JComboBox(); // Menu for the look and feels (lnfs). UIManager.LookAndFeelInfo[] lnfs = UIManager.getInstalledLookAndFeels(); for( int i = 0; i < lnfs.length; i++ ) { uiComboBox.addItem( lnfs[i].getName() ); if ( UIManager.getLookAndFeel().getName().equals( lnfs[i].getName() ) ) uiComboBox.setSelectedIndex(i); } guiPanel.add(uiComboBox); generalOptions.add(guiPanel); /////////////////////////////////////////////// //Viewer /////////////////////////////////////////////////// viewerOptions.setLayout(new BoxLayout(viewerOptions,BoxLayout.Y_AXIS)); JPanel fPanel = new JPanel(); fPanel.setBorder(new TitledBorder("Function Panel Placement")); ButtonGroup fGroup = new ButtonGroup(); fPanel.add(fLeft); fPanel.add(fRight); fPanel.add(fTop); fPanel.add(fDown); fPanel.add(fNone); fGroup.add(fLeft); fGroup.add(fRight); fGroup.add(fTop); fGroup.add(fDown); fGroup.add(fNone); fLeft.setSelected(true); viewerOptions.add(fPanel); JPanel iPanel = new JPanel(); iPanel.setBorder(new TitledBorder("Processing")); iPanel.setLayout(new GridLayout(3,1)); iPanel.add(processingPanelOn); iPanel.add(psPanelOn); iPanel.add(navigationPanelOn); viewerOptions.add(iPanel); JPanel paintPanel = new JPanel(); paintPanel.setBorder(new TitledBorder("Paint Functions")); paintCombo.addItem("North"); paintCombo.addItem("South"); paintCombo.addItem("West"); paintCombo.addItem("East"); paintCombo.addItem("Toolbar"); paintCombo.addItem("Integrated"); paintCombo.addItem("None"); paintPanel.add(paintCombo); viewerOptions.add(paintPanel); JPanel aPanel = new JPanel(); aPanel.setBorder(new TitledBorder("Ambient Light")); aPanel.add(new JLabel(" cd/m^2")); ambientLight.setDocument(new DoubleDocument()); aPanel.add(ambientLight); viewerOptions.add(aPanel); JPanel sizePanel = new JPanel(); sizePanel.setBorder(new TitledBorder("Screen Pixel Resolution in mm")); sizePanel.add(new JLabel(" X")); pixelSizeX.setDocument(new DoubleDocument()); sizePanel.add(pixelSizeX); sizePanel.add(new JLabel(" Y")); pixelSizeY.setDocument(new DoubleDocument()); sizePanel.add(pixelSizeY); viewerOptions.add(sizePanel); /////////////////////////////////////////////// //StudyMan /////////////////////////////////////////////////// studyOptions.setLayout(new BoxLayout(studyOptions,BoxLayout.Y_AXIS)); //ViewOptions JPanel viewOptions = new JPanel(); viewOptions.setBorder(new TitledBorder("Show Dicom Attributes")); viewOptions.setLayout(new GridLayout(1,1)); JPanel centerPanel = new JPanel(); centerPanel.setLayout(new BoxLayout(centerPanel, BoxLayout.Y_AXIS)); centerPanel.add(uidCb); centerPanel.add(descCb); centerPanel.add(patiCb); centerPanel.add(modaCb); centerPanel.add(timeCb); centerPanel.add(newiCb); centerPanel.add(fileCb); centerPanel.add(lablCb); viewOptions.add(centerPanel); studyOptions.add(viewOptions); setProperties(configurationProperties); uidCb.addActionListener(l); descCb.addActionListener(l); patiCb.addActionListener(l); modaCb.addActionListener(l); timeCb.addActionListener(l); newiCb.addActionListener(l); fileCb.addActionListener(l); lablCb.addActionListener(l); studyButtonOn.addActionListener(l); /** * General GUI Elements */ fLeft.addActionListener(l); fRight.addActionListener(l); fTop.addActionListener(l); fDown.addActionListener(l); fNone.addActionListener(l); ambientLight.addActionListener(l); pixelSizeX.addActionListener(l); pixelSizeY.addActionListener(l); uiComboBox.addActionListener(l); /** * GUI of the Viewer */ paintCombo.addActionListener(l); processingPanelOn.addActionListener(l); psPanelOn.addActionListener(l); navigationPanelOn.addActionListener(l); pLeft.addActionListener(l); pRight.addActionListener(l); pTop.addActionListener(l); pDown.addActionListener(l); pack(); } /** * Sets the value of the widgets from the specified Hashtable * * @param prop Contains the values of the widgets */ public void setProperties(Hashtable prop) { if (prop == null) return; //Series Browser if (prop.containsKey("UID"))uidCb.setSelected(((Boolean)(prop.get("UID"))).booleanValue()); if (prop.containsKey("Description"))descCb.setSelected(((Boolean)(prop.get("Description"))).booleanValue()); if (prop.containsKey("PatientInfo"))patiCb.setSelected(((Boolean)(prop.get("PatientInfo"))).booleanValue()); if (prop.containsKey("Modality"))modaCb.setSelected(((Boolean)(prop.get("Modality"))).booleanValue()); if (prop.containsKey("DateTime"))timeCb.setSelected(((Boolean)(prop.get("DateTime"))).booleanValue()); if (prop.containsKey("NewItems"))newiCb.setSelected(((Boolean)(prop.get("NewItems"))).booleanValue()); if (prop.containsKey("Filename"))fileCb.setSelected(((Boolean)(prop.get("Filename"))).booleanValue()); if (prop.containsKey("Label"))lablCb.setSelected(((Boolean)(prop.get("Label"))).booleanValue()); if (prop.containsKey("ButtonOn"))studyButtonOn.setSelected(((Boolean)(prop.get("ButtonOn"))).booleanValue()); //Viewer if (prop.containsKey("PaintPanelPlacement"))paintCombo.setSelectedItem((String)(prop.get("PaintPanelPlacement"))); if (prop.containsKey("NavigationPanelOn"))navigationPanelOn.setSelected(((Boolean)(prop.get("NavigationPanelOn"))).booleanValue()); if (prop.containsKey("ProcessingPanelOn"))processingPanelOn.setSelected(((Boolean)(prop.get("ProcessingPanelOn"))).booleanValue()); if (prop.containsKey("PSPanelOn"))psPanelOn.setSelected(((Boolean)(prop.get("PSPanelOn"))).booleanValue()); if (prop.containsKey("AmbientLight")) ambientLight.setText((String)(prop.get("AmbientLight"))); else ambientLight.setEnabled(false); if (prop.containsKey("PixelSizeX"))pixelSizeX.setText((String)(prop.get("PixelSizeX"))); if (prop.containsKey("PixelSizeY"))pixelSizeY.setText((String)(prop.get("PixelSizeY"))); if (prop.containsKey("TabbedPlacement")) { String placement = (String)prop.get("TabbedPlacement"); if (placement.equals("1")) pTop.setSelected(true); if (placement.equals("2")) pLeft.setSelected(true); if (placement.equals("3")) pDown.setSelected(true); if (placement.equals("4")) pRight.setSelected(true); } if (prop.containsKey("FunctionPanelPlacement")) { String orient = (String)prop.get("FunctionPanelPlacement"); if (orient.equals("North")) fTop.setSelected(true); if (orient.equals("West")) fLeft.setSelected(true); if (orient.equals("South")) fDown.setSelected(true); if (orient.equals("East")) fRight.setSelected(true); if (orient.equals("None")) fNone.setSelected(true); } } /** * q * * @param ID q */ public void buttonClicked (int ID) { if (ID == ID_OK || ID == ID_APPLY) { applyChanges(); } if ((ID == ID_OK || ID == ID_CANCEL)) { setVisible (false); } } /** * q */ public void applyChanges() { //Study Man configurationProperties.put("UID", new Boolean(uidCb.isSelected())); configurationProperties.put("Description", new Boolean(descCb.isSelected())); configurationProperties.put("PatientInfo", new Boolean(patiCb.isSelected())); configurationProperties.put("Modality", new Boolean(modaCb.isSelected())); configurationProperties.put("DateTime", new Boolean(timeCb.isSelected())); configurationProperties.put("NewItems", new Boolean(newiCb.isSelected())); configurationProperties.put("Filename", new Boolean(fileCb.isSelected())); configurationProperties.put("Label", new Boolean(lablCb.isSelected())); configurationProperties.put("ButtonOn", new Boolean(studyButtonOn.isSelected())); //Viewer configurationProperties.put("PaintPanelPlacement", paintCombo.getSelectedItem()); configurationProperties.put("ProcessingPanelOn", new Boolean(processingPanelOn.isSelected())); configurationProperties.put("NavigationPanelOn", new Boolean(navigationPanelOn.isSelected())); configurationProperties.put("PSPanelOn", new Boolean(psPanelOn.isSelected())); configurationProperties.put("AmbientLight", ambientLight.getText()); configurationProperties.put("PixelSizeX", pixelSizeX.getText()); configurationProperties.put("PixelSizeY", pixelSizeY.getText()); int placement =0; if (pTop.isSelected()) placement = 1; if (pLeft.isSelected()) placement = 2; if (pDown.isSelected()) placement = 3; if (pRight.isSelected()) placement = 4; configurationProperties.put("TabbedPlacement", new Integer(placement).toString()); //General String orient = null; if (fTop.isSelected()) orient = "North"; if (fLeft.isSelected()) orient = "West"; if (fDown.isSelected()) orient = "South"; if (fRight.isSelected()) orient = "East"; if (fNone.isSelected()) orient = "None"; configurationProperties.put("FunctionPanelPlacement", orient); UIManager.LookAndFeelInfo[] lnfs = UIManager.getInstalledLookAndFeels(); UIManager.LookAndFeelInfo info =(UIManager.LookAndFeelInfo) lnfs[uiComboBox.getSelectedIndex()]; configurationProperties.put("UI", new String(info.getClassName())); Controller.instance().fireEvent(new ChangeOptionsEvent(this,configurationProperties)); } public class ProfilesActionListener implements ActionListener { public void actionPerformed(ActionEvent e) { changeListenerOn= false; String item = (String) profilesComboBox.getSelectedItem(); if (!item.equals("User defined")) { setProperties((Hashtable)MainContext.profiles.get(item)); } changeListenerOn= true; } } public class ChangedActionListener implements ActionListener { public void actionPerformed(ActionEvent e) { if (changeListenerOn)profilesComboBox.setSelectedIndex(0); } } } /* * CVS Log * $Log: OptionDialog.java,v $ * Revision 1.1.1.1 2001/06/06 10:32:30 kleber * Init commit for DICOMscope 3.5 * Create new CVS * */ dicomscope-3.6.0/tkgui/main/PresentationStateFixInfoEvent.java0000644000265600020320000001337211262371101023644 0ustar tilleaadmin/* * * Copyright (C) 1999, Institute for MicroTherapy * * This software and supporting documentation were developed by * * University of Witten/Herdecke * Department of Radiology and MicroTherapy * Institute for MicroTherapy * Medical computer science * * Universitaetsstrasse 142 * 44799 Bochum, Germany * * http://www.microtherapy.de/go/cs * mailto:computer.science@microtherapy.de * * THIS SOFTWARE IS MADE AVAILABLE, AS IS, AND THE INSTITUTE MAKES NO * WARRANTY REGARDING THE SOFTWARE, ITS PERFORMANCE, ITS MERCHANTABILITY * OR FITNESS FOR ANY PARTICULAR USE, FREEDOM FROM ANY COMPUTER DISEASES * OR ITS CONFORMITY TO ANY SPECIFICATION. THE ENTIRE RISK AS TO QUALITY * AND PERFORMANCE OF THE SOFTWARE IS WITH THE USER. * * Author : $Author: kleber $ * Last update : $Date: 2001/06/06 10:32:30 $ * Revision : $Revision: 1.1.1.1 $ * State: $State: Exp $ */ package main; import java.util.*; import viewer.presentation.*; /** * Contains all relevant information about a presentation state. */ public class PresentationStateFixInfoEvent extends DSEvent { public boolean haveRectShutter; public boolean haveCircShutter; public boolean havePolyShutter; public boolean haveBmpShutter; public boolean isFlip; public boolean isInvert; public int rot; public boolean psOn; public Double win; public Double lev; boolean lutOn = false; public Double zoom; public String name; public String creator; public String description; public int cols; public int rows; public DisplayArea displayArea; public boolean haveDisplayedAreaPresentationPixelSpacing; public boolean canUseDisplayedAreaTrueSize; public int presentationSizeMode; public double presentationPixelSpacing_x; public double presentationPixelSpacing_y; public double presentationPixelAspectRatio; public double presentationPixelMagnificationRatio; public int maxNumberOfImages = 1; public int currentImageNumber = 1; public int maxNumberOfFramesInCurrentImage = 1; public int currentNumberOfFrames= 1; public int applyTo; public PresentationStateFixInfoEvent( Object o, boolean haveRectShutter, boolean haveCircShutter, boolean havePolyShutter, boolean haveBmpShutter, boolean isFlip, boolean isInvert, int rot, boolean psOn, Double win, Double lev, boolean lutOn, Double zoom, String name, String creator, String description, int cols, int rows, DisplayArea displayArea, boolean haveDisplayedAreaPresentationPixelSpacing, boolean canUseDisplayedAreaTrueSize, int presentationSizeMode, double presentationPixelSpacing_x, double presentationPixelSpacing_y, double presentationPixelAspectRatio, double presentationPixelMagnificationRatio, int maxNumberOfImages, int currentImageNumber , int maxNumberOfFramesInCurrentImage, int currentNumberOfFrames, int applyTo ) { super(o); this.applyTo = applyTo; this.havePolyShutter = havePolyShutter; this.haveRectShutter = haveRectShutter; this.haveCircShutter = haveCircShutter; this.haveBmpShutter = haveBmpShutter; this.isFlip = isFlip; this.isInvert = isInvert; this.rot = rot; this.psOn = psOn; this.win = win; this.lev = lev; this.lutOn = lutOn; this.zoom = zoom; this.name = name; this.creator = creator; this.description = description; this.cols = cols; this.rows = rows; this.displayArea = displayArea; this.presentationPixelAspectRatio = presentationPixelAspectRatio; this.presentationPixelMagnificationRatio = presentationPixelMagnificationRatio; this.presentationPixelAspectRatio = presentationPixelAspectRatio; this.presentationSizeMode = this.presentationSizeMode; this.presentationPixelSpacing_x = presentationPixelSpacing_x; this.presentationPixelSpacing_y = presentationPixelSpacing_y; this.haveDisplayedAreaPresentationPixelSpacing = haveDisplayedAreaPresentationPixelSpacing; this.canUseDisplayedAreaTrueSize = canUseDisplayedAreaTrueSize; this.maxNumberOfImages = maxNumberOfImages; this.currentImageNumber = currentImageNumber; this.maxNumberOfFramesInCurrentImage= maxNumberOfFramesInCurrentImage; this.currentNumberOfFrames = currentNumberOfFrames; } } /* * CVS Log * $Log: PresentationStateFixInfoEvent.java,v $ * Revision 1.1.1.1 2001/06/06 10:32:30 kleber * Init commit for DICOMscope 3.5 * Create new CVS * */ dicomscope-3.6.0/tkgui/main/PrintEvent.java0000644000265600020320000000254611262371101020002 0ustar tilleaadmin/* * * Copyright (C) 1999, Institute for MicroTherapy * * This software and supporting documentation were developed by * * University of Witten/Herdecke * Department of Radiology and MicroTherapy * Institute for MicroTherapy * Medical computer science * * Universitaetsstrasse 142 * 44799 Bochum, Germany * * http://www.microtherapy.de/go/cs * mailto:computer.science@microtherapy.de * * THIS SOFTWARE IS MADE AVAILABLE, AS IS, AND THE INSTITUTE MAKES NO * WARRANTY REGARDING THE SOFTWARE, ITS PERFORMANCE, ITS MERCHANTABILITY * OR FITNESS FOR ANY PARTICULAR USE, FREEDOM FROM ANY COMPUTER DISEASES * OR ITS CONFORMITY TO ANY SPECIFICATION. THE ENTIRE RISK AS TO QUALITY * AND PERFORMANCE OF THE SOFTWARE IS WITH THE USER. * * Author : $Author: kleber $ * Last update : $Date: 2001/06/06 10:32:30 $ * Revision : $Revision: 1.1.1.1 $ * State: $State: Exp $ */ package main; import java.util.*; public class PrintEvent extends DSEvent { public static final int ID_HC = 0; public static final int ID_ST =1; public int type=0; public PrintEvent(Object o, int type) { super(o); this.type = type; } } /* * CVS Log * $Log: PrintEvent.java,v $ * Revision 1.1.1.1 2001/06/06 10:32:30 kleber * Init commit for DICOMscope 3.5 * Create new CVS * */ dicomscope-3.6.0/tkgui/main/PrintListener.java0000644000265600020320000000310611262371101020477 0ustar tilleaadmin/* * * Copyright (C) 1999, Institute for MicroTherapy * * This software and supporting documentation were developed by * * University of Witten/Herdecke * Department of Radiology and MicroTherapy * Institute for MicroTherapy * Medical computer science * * Universitaetsstrasse 142 * 44799 Bochum, Germany * * http://www.microtherapy.de/go/cs * mailto:computer.science@microtherapy.de * * THIS SOFTWARE IS MADE AVAILABLE, AS IS, AND THE INSTITUTE MAKES NO * WARRANTY REGARDING THE SOFTWARE, ITS PERFORMANCE, ITS MERCHANTABILITY * OR FITNESS FOR ANY PARTICULAR USE, FREEDOM FROM ANY COMPUTER DISEASES * OR ITS CONFORMITY TO ANY SPECIFICATION. THE ENTIRE RISK AS TO QUALITY * AND PERFORMANCE OF THE SOFTWARE IS WITH THE USER. * * Author : $Author: kleber $ * Last update : $Date: 2001/06/06 10:32:30 $ * Revision : $Revision: 1.1.1.1 $ * State: $State: Exp $ */ package main; import java.util.*; /** * Basic interface for classes which want to be a listener of PrintEvents. */ public interface PrintListener extends EventListener { /** * Processes an event. Implementing classes should check for the * exact subclass of JiveEvent (via instanceof) to get full information * of the event. * * @param e the event * @return true if the event was accepted. */ public abstract boolean processPrint (DSEvent e); } /* * CVS Log * $Log: PrintListener.java,v $ * Revision 1.1.1.1 2001/06/06 10:32:30 kleber * Init commit for DICOMscope 3.5 * Create new CVS * */ dicomscope-3.6.0/tkgui/main/RequestEvent.java0000644000265600020320000000257611262371101020341 0ustar tilleaadmin/* * * Copyright (C) 1999, Institute for MicroTherapy * * This software and supporting documentation were developed by * * University of Witten/Herdecke * Department of Radiology and MicroTherapy * Institute for MicroTherapy * Medical computer science * * Universitaetsstrasse 142 * 44799 Bochum, Germany * * http://www.microtherapy.de/go/cs * mailto:computer.science@microtherapy.de * * THIS SOFTWARE IS MADE AVAILABLE, AS IS, AND THE INSTITUTE MAKES NO * WARRANTY REGARDING THE SOFTWARE, ITS PERFORMANCE, ITS MERCHANTABILITY * OR FITNESS FOR ANY PARTICULAR USE, FREEDOM FROM ANY COMPUTER DISEASES * OR ITS CONFORMITY TO ANY SPECIFICATION. THE ENTIRE RISK AS TO QUALITY * AND PERFORMANCE OF THE SOFTWARE IS WITH THE USER. * * Author : $Author: kleber $ * Last update : $Date: 2001/06/06 10:32:30 $ * Revision : $Revision: 1.1.1.1 $ * State: $State: Exp $ */ package main; import java.util.*; public class RequestEvent extends DSEvent { public int type; public static final int REQUEST_OPTIONS = 0; public static final int REQUEST_SCREEN = 1; public RequestEvent(Object o, int type) { super(o); this.type = type; } } /* * CVS Log * $Log: RequestEvent.java,v $ * Revision 1.1.1.1 2001/06/06 10:32:30 kleber * Init commit for DICOMscope 3.5 * Create new CVS * */ dicomscope-3.6.0/tkgui/main/SendLayerEvent.java0000644000265600020320000000275011262371101020571 0ustar tilleaadmin/* * * Copyright (C) 1999, Institute for MicroTherapy * * This software and supporting documentation were developed by * * University of Witten/Herdecke * Department of Radiology and MicroTherapy * Institute for MicroTherapy * Medical computer science * * Universitaetsstrasse 142 * 44799 Bochum, Germany * * http://www.microtherapy.de/go/cs * mailto:computer.science@microtherapy.de * * THIS SOFTWARE IS MADE AVAILABLE, AS IS, AND THE INSTITUTE MAKES NO * WARRANTY REGARDING THE SOFTWARE, ITS PERFORMANCE, ITS MERCHANTABILITY * OR FITNESS FOR ANY PARTICULAR USE, FREEDOM FROM ANY COMPUTER DISEASES * OR ITS CONFORMITY TO ANY SPECIFICATION. THE ENTIRE RISK AS TO QUALITY * AND PERFORMANCE OF THE SOFTWARE IS WITH THE USER. * * Author : $Author: kleber $ * Last update : $Date: 2001/06/06 10:32:30 $ * Revision : $Revision: 1.1.1.1 $ * State: $State: Exp $ */ package main; import java.util.*; /** * Contains the name of all layers and the index of the currently selected layer */ public class SendLayerEvent extends DSEvent { public String[] layers; public int selectedIndex; public SendLayerEvent(Object o, String[] layers, int selectedIndex) { super(o); this.layers = layers; this.selectedIndex = selectedIndex; } } /* * CVS Log * $Log: SendLayerEvent.java,v $ * Revision 1.1.1.1 2001/06/06 10:32:30 kleber * Init commit for DICOMscope 3.5 * Create new CVS * */ dicomscope-3.6.0/tkgui/main/SendOptionsEvent.java0000644000265600020320000000256711262371101021156 0ustar tilleaadmin/* * * Copyright (C) 1999, Institute for MicroTherapy * * This software and supporting documentation were developed by * * University of Witten/Herdecke * Department of Radiology and MicroTherapy * Institute for MicroTherapy * Medical computer science * * Universitaetsstrasse 142 * 44799 Bochum, Germany * * http://www.microtherapy.de/go/cs * mailto:computer.science@microtherapy.de * * THIS SOFTWARE IS MADE AVAILABLE, AS IS, AND THE INSTITUTE MAKES NO * WARRANTY REGARDING THE SOFTWARE, ITS PERFORMANCE, ITS MERCHANTABILITY * OR FITNESS FOR ANY PARTICULAR USE, FREEDOM FROM ANY COMPUTER DISEASES * OR ITS CONFORMITY TO ANY SPECIFICATION. THE ENTIRE RISK AS TO QUALITY * AND PERFORMANCE OF THE SOFTWARE IS WITH THE USER. * * Author : $Author: kleber $ * Last update : $Date: 2001/06/06 10:32:30 $ * Revision : $Revision: 1.1.1.1 $ * State: $State: Exp $ */ package main; import java.util.*; /** * Contains all attributs whcih can be changed in the OptionPanel */ public class SendOptionsEvent extends DSEvent { Properties prop; public SendOptionsEvent(Object o, Properties prop) { super(o); this.prop = prop; } } /* * CVS Log * $Log: SendOptionsEvent.java,v $ * Revision 1.1.1.1 2001/06/06 10:32:30 kleber * Init commit for DICOMscope 3.5 * Create new CVS * */ dicomscope-3.6.0/tkgui/main/SendScreenEvent.java0000644000265600020320000000300411262371101020725 0ustar tilleaadmin/* * * Copyright (C) 1999, Institute for MicroTherapy * * This software and supporting documentation were developed by * * University of Witten/Herdecke * Department of Radiology and MicroTherapy * Institute for MicroTherapy * Medical computer science * * Universitaetsstrasse 142 * 44799 Bochum, Germany * * http://www.microtherapy.de/go/cs * mailto:computer.science@microtherapy.de * * THIS SOFTWARE IS MADE AVAILABLE, AS IS, AND THE INSTITUTE MAKES NO * WARRANTY REGARDING THE SOFTWARE, ITS PERFORMANCE, ITS MERCHANTABILITY * OR FITNESS FOR ANY PARTICULAR USE, FREEDOM FROM ANY COMPUTER DISEASES * OR ITS CONFORMITY TO ANY SPECIFICATION. THE ENTIRE RISK AS TO QUALITY * AND PERFORMANCE OF THE SOFTWARE IS WITH THE USER. * * Author : $Author: kleber $ * Last update : $Date: 2001/06/06 10:32:30 $ * Revision : $Revision: 1.1.1.1 $ * State: $State: Exp $ */ package main; import java.util.*; public class SendScreenEvent extends DSEvent { public byte[] data; public int width; public int height; public String instanceUID; public SendScreenEvent(Object o, byte[] data, int width, int height, String instanceUID) { super(o); this.data = data; this.width = width; this.height = height; this.instanceUID = instanceUID; } } /* * CVS Log * $Log: SendScreenEvent.java,v $ * Revision 1.1.1.1 2001/06/06 10:32:30 kleber * Init commit for DICOMscope 3.5 * Create new CVS * */ dicomscope-3.6.0/tkgui/main/SetPresentationStateEvent.java0000644000265600020320000000507611262371101023037 0ustar tilleaadmin/* * * Copyright (C) 1999, Institute for MicroTherapy * * This software and supporting documentation were developed by * * University of Witten/Herdecke * Department of Radiology and MicroTherapy * Institute for MicroTherapy * Medical computer science * * Universitaetsstrasse 142 * 44799 Bochum, Germany * * http://www.microtherapy.de/go/cs * mailto:computer.science@microtherapy.de * * THIS SOFTWARE IS MADE AVAILABLE, AS IS, AND THE INSTITUTE MAKES NO * WARRANTY REGARDING THE SOFTWARE, ITS PERFORMANCE, ITS MERCHANTABILITY * OR FITNESS FOR ANY PARTICULAR USE, FREEDOM FROM ANY COMPUTER DISEASES * OR ITS CONFORMITY TO ANY SPECIFICATION. THE ENTIRE RISK AS TO QUALITY * AND PERFORMANCE OF THE SOFTWARE IS WITH THE USER. * * Author : $Author: kleber $ * Last update : $Date: 2001/06/06 10:32:30 $ * Revision : $Revision: 1.1.1.1 $ * State: $State: Exp $ */ package main; import java.util.*; import viewer.presentation.*; public class SetPresentationStateEvent extends DSEvent { public boolean haveRectShutter; public boolean haveCircShutter; public boolean havePolyShutter; public boolean haveBmpShutter; public boolean isFlip; public boolean isInvert; public int rot; public boolean psOn; public int curve; public int psLut; public SetPresentationStateEvent( Object o, boolean haveRectShutter, boolean haveCircShutter, boolean havePolyShutter, boolean haveBmpShutter, boolean isFlip, boolean isInvert, int rot, boolean psOn, int curve, int psLut) { super(o); this.havePolyShutter = havePolyShutter; this.haveRectShutter = haveRectShutter; this.haveCircShutter = haveCircShutter; this.haveBmpShutter = haveBmpShutter; this.isFlip = isFlip; this.isInvert = isInvert; this.rot = rot; this.psOn = psOn; this.curve = curve; this.psLut = psLut; } } /* * CVS Log * $Log: SetPresentationStateEvent.java,v $ * Revision 1.1.1.1 2001/06/06 10:32:30 kleber * Init commit for DICOMscope 3.5 * Create new CVS * */ dicomscope-3.6.0/tkgui/main/SetShutterEvent.java0000644000265600020320000000347111262371101021016 0ustar tilleaadmin/* * * Copyright (C) 1999, Institute for MicroTherapy * * This software and supporting documentation were developed by * * University of Witten/Herdecke * Department of Radiology and MicroTherapy * Institute for MicroTherapy * Medical computer science * * Universitaetsstrasse 142 * 44799 Bochum, Germany * * http://www.microtherapy.de/go/cs * mailto:computer.science@microtherapy.de * * THIS SOFTWARE IS MADE AVAILABLE, AS IS, AND THE INSTITUTE MAKES NO * WARRANTY REGARDING THE SOFTWARE, ITS PERFORMANCE, ITS MERCHANTABILITY * OR FITNESS FOR ANY PARTICULAR USE, FREEDOM FROM ANY COMPUTER DISEASES * OR ITS CONFORMITY TO ANY SPECIFICATION. THE ENTIRE RISK AS TO QUALITY * AND PERFORMANCE OF THE SOFTWARE IS WITH THE USER. * * Author : $Author: kleber $ * Last update : $Date: 2001/06/06 10:32:30 $ * Revision : $Revision: 1.1.1.1 $ * State: $State: Exp $ */ package main; import java.io.*; public class SetShutterEvent extends DSEvent { public static final int RECT = 0; public static final int CIRCLE = 1; public static final int POLY = 2; public static final int BMP = 3; public static final int EDIT = 10; int type; boolean selected; public SetShutterEvent(Object o,int type, boolean selected) { super(o); this.type = type; this.selected = selected; } public String toString() { return new String("SetShutterEvent: " + type + ", selected: " + selected); } public int getType() { return type; } public boolean getSelected() { return selected; } } /* * CVS Log * $Log: SetShutterEvent.java,v $ * Revision 1.1.1.1 2001/06/06 10:32:30 kleber * Init commit for DICOMscope 3.5 * Create new CVS * */ dicomscope-3.6.0/tkgui/main/SignAction.java0000644000265600020320000001042711262371101017737 0ustar tilleaadmin/* * * Copyright (C) 1999, Institute for MicroTherapy * * This software and supporting documentation were developed by * * University of Witten/Herdecke * Department of Radiology and MicroTherapy * Institute for MicroTherapy * Medical computer science * * Universitaetsstrasse 142 * 44799 Bochum, Germany * * http://www.microtherapy.de/go/cs * mailto:computer.science@microtherapy.de * * THIS SOFTWARE IS MADE AVAILABLE, AS IS, AND THE INSTITUTE MAKES NO * WARRANTY REGARDING THE SOFTWARE, ITS PERFORMANCE, ITS MERCHANTABILITY * OR FITNESS FOR ANY PARTICULAR USE, FREEDOM FROM ANY COMPUTER DISEASES * OR ITS CONFORMITY TO ANY SPECIFICATION. THE ENTIRE RISK AS TO QUALITY * AND PERFORMANCE OF THE SOFTWARE IS WITH THE USER. * * Author : $Author: kleber $ * Last update : $Date: 2001/06/06 10:32:30 $ * Revision : $Revision: 1.1.1.1 $ * State: $State: Exp $ */ package main; import javax.swing.*; import java.awt.*; import javax.swing.border.*; import java.util.*; import J2Ci.*; /** * Contains the GUI for the status line. * The is context sensitve. For each DSComponentType * There is a seperate view. */ public class SignAction extends AbstractAction { public static final String REPORT="Report"; public static final String IMAGE="Image"; public static final String PRESENTATIONSTATE="Presentation State"; public static final String COMBINATION="Combination"; /** * Contains the current status. * The possible values are defined in jDVPSSignatureStatus */ private int status = 0; /** no digital signatures are present */ private Icon unsignedIcon; /** one or more digital signatures are present and have been successfully verified */ private Icon signed_OKIcon; /** one or more digital signatures are present and at least one of them * could not be successfully verified because it was corrupt or created * with a certificate issued by an unknown CA. */ private Icon signed_corruptIcon; /** one or more digital signatures are present and at least one of them * could not be successfully verified because it was corrupt or created * with a certificate issued by an unknown CA. */ private Icon signed_unknownCAIcon; /** * Contains the type of the String */ private String type; viewer.gui.SignatureOverview signatureOverview; public SignAction( viewer.gui.SignatureOverview signatureOverview , String type, Icon unsignedIcon, Icon signed_corruptIcon, Icon signed_OKIcon, Icon signed_unknownCAIcon) { super(); this.signatureOverview = signatureOverview; this.type = type; putValue(Action.SMALL_ICON, unsignedIcon); this.signed_corruptIcon=signed_corruptIcon; this.unsignedIcon = unsignedIcon; this.signed_OKIcon = signed_OKIcon; this.signed_unknownCAIcon = signed_unknownCAIcon; } public void actionPerformed(java.awt.event.ActionEvent e) { signatureOverview.setVisible(true, type); } public void changeStatus(int status) { switch (status) { case jDVPSSignatureStatus.DVPSW_unsigned: putValue(Action.SMALL_ICON, unsignedIcon); break; case jDVPSSignatureStatus.DVPSW_signed_OK: putValue(Action.SMALL_ICON, signed_OKIcon); break; case jDVPSSignatureStatus.DVPSW_signed_corrupt: putValue(Action.SMALL_ICON, signed_corruptIcon); break; case jDVPSSignatureStatus.DVPSW_signed_unknownCA: putValue(Action.SMALL_ICON, signed_unknownCAIcon); break; default: throw new IllegalArgumentException("Invalid value for status: "+ status); } this.status = status; } } /* * CVS Log * $Log: SignAction.java,v $ * Revision 1.1.1.1 2001/06/06 10:32:30 kleber * Init commit for DICOMscope 3.5 * Create new CVS * */ dicomscope-3.6.0/tkgui/main/SignedStatus.java0000644000265600020320000000664111262371101020321 0ustar tilleaadmin/* * * Copyright (C) 1999, Institute for MicroTherapy * * This software and supporting documentation were developed by * * University of Witten/Herdecke * Department of Radiology and MicroTherapy * Institute for MicroTherapy * Medical computer science * * Universitaetsstrasse 142 * 44799 Bochum, Germany * * http://www.microtherapy.de/go/cs * mailto:computer.science@microtherapy.de * * THIS SOFTWARE IS MADE AVAILABLE, AS IS, AND THE INSTITUTE MAKES NO * WARRANTY REGARDING THE SOFTWARE, ITS PERFORMANCE, ITS MERCHANTABILITY * OR FITNESS FOR ANY PARTICULAR USE, FREEDOM FROM ANY COMPUTER DISEASES * OR ITS CONFORMITY TO ANY SPECIFICATION. THE ENTIRE RISK AS TO QUALITY * AND PERFORMANCE OF THE SOFTWARE IS WITH THE USER. * * Author : $Author: kleber $ * Last update : $Date: 2001/06/06 10:32:30 $ * Revision : $Revision: 1.1.1.1 $ * State: $State: Exp $ */ package main; import javax.swing.*; import java.awt.*; import javax.swing.border.*; import java.util.*; import jToolkit.gui.CommandJButton; import J2Ci.jDVPSSignatureStatus; /** * Contains the GUI for the status line. * The is context sensitve. For each DSComponentType * There is a seperate view. */ public class SignedStatus extends JPanel { /** * Contains the current status. * The possible values are defined in jDVPSSignatureStatus */ private int status = 0; /** no digital signatures are present */ private Icon unsignedIcon; /** one or more digital signatures are present and have been successfully verified */ private Icon signed_OKIcon; /** one or more digital signatures are present and at least one of them * could not be successfully verified because it was corrupt or created * with a certificate issued by an unknown CA. */ private Icon signed_corruptIcon; /** one or more digital signatures are present and at least one of them * could not be successfully verified because it was corrupt or created * with a certificate issued by an unknown CA. */ private Icon signed_Icon; /** * Contains the type of the String */ private String type; private JButton button; Action action; /** * */ public SignedStatus( String type, Icon unsignedIcon, Icon signed_corruptIcon, Icon signed_OKIcon, Icon signed_Icon, Action action) { super(); if (action == null) throw new IllegalArgumentException ("Action shouldn't be null"); this.type = type; this.signed_corruptIcon=signed_corruptIcon; this.signed_Icon = signed_Icon; this.signed_OKIcon = signed_OKIcon; this.unsignedIcon = unsignedIcon; this.action = action; setLayout(new FlowLayout(0,0,0)); button = new JButton(unsignedIcon); CommandJButton.setButton(button); button.setMargin(new Insets(0,0,0,0)); button.setBorderPainted(false); button.setAction(action); action.putValue(Action.SMALL_ICON, unsignedIcon); add(button); } } /* * CVS Log * $Log: SignedStatus.java,v $ * Revision 1.1.1.1 2001/06/06 10:32:30 kleber * Init commit for DICOMscope 3.5 * Create new CVS * */ dicomscope-3.6.0/tkgui/main/SignedStatusEvent.java0000644000265600020320000000454011262371101021317 0ustar tilleaadmin/* * * Copyright (C) 1999, Institute for MicroTherapy * * This software and supporting documentation were developed by * * University of Witten/Herdecke * Department of Radiology and MicroTherapy * Institute for MicroTherapy * Medical computer science * * Universitaetsstrasse 142 * 44799 Bochum, Germany * * http://www.microtherapy.de/go/cs * mailto:computer.science@microtherapy.de * * THIS SOFTWARE IS MADE AVAILABLE, AS IS, AND THE INSTITUTE MAKES NO * WARRANTY REGARDING THE SOFTWARE, ITS PERFORMANCE, ITS MERCHANTABILITY * OR FITNESS FOR ANY PARTICULAR USE, FREEDOM FROM ANY COMPUTER DISEASES * OR ITS CONFORMITY TO ANY SPECIFICATION. THE ENTIRE RISK AS TO QUALITY * AND PERFORMANCE OF THE SOFTWARE IS WITH THE USER. * * Author : $Author: kleber $ * Last update : $Date: 2001/06/06 10:32:30 $ * Revision : $Revision: 1.1.1.1 $ * State: $State: Exp $ */ package main; import java.util.*; /** * Event for the status line */ public class SignedStatusEvent extends DSEvent { public int combinedImagePStateSignatureStatus; public int reportSignatureStatus; public int actionType = 0; public static final int LOADSR = 0; public static final int LOADIMAGE = 1; public static final int LOADPS = 2; public boolean notifyUser = true; public SignedStatusEvent(Object o, int actionType,int combinedImagePStateSignatureStatus, int reportSignatureStatus) { super(o); this.actionType = actionType; this.combinedImagePStateSignatureStatus = combinedImagePStateSignatureStatus; this.reportSignatureStatus = reportSignatureStatus; } public SignedStatusEvent( Object o, int actionType, int combinedImagePStateSignatureStatus, int reportSignatureStatus, boolean notifyUser) { super(o); this.actionType = actionType; this.combinedImagePStateSignatureStatus = combinedImagePStateSignatureStatus; this.reportSignatureStatus = reportSignatureStatus; this.notifyUser = notifyUser; } } /* * CVS Log * $Log: SignedStatusEvent.java,v $ * Revision 1.1.1.1 2001/06/06 10:32:30 kleber * Init commit for DICOMscope 3.5 * Create new CVS * */ dicomscope-3.6.0/tkgui/main/SRCode.java0000644000265600020320000001653411262371101017025 0ustar tilleaadmin/* * * Copyright (C) 1999, Institute for MicroTherapy * * This software and supporting documentation were developed by * * University of Witten/Herdecke * Department of Radiology and MicroTherapy * Institute for MicroTherapy * Medical computer science * * Universitaetsstrasse 142 * 44799 Bochum, Germany * * http://www.microtherapy.de/go/cs * mailto:computer.science@microtherapy.de * * THIS SOFTWARE IS MADE AVAILABLE, AS IS, AND THE INSTITUTE MAKES NO * WARRANTY REGARDING THE SOFTWARE, ITS PERFORMANCE, ITS MERCHANTABILITY * OR FITNESS FOR ANY PARTICULAR USE, FREEDOM FROM ANY COMPUTER DISEASES * OR ITS CONFORMITY TO ANY SPECIFICATION. THE ENTIRE RISK AS TO QUALITY * AND PERFORMANCE OF THE SOFTWARE IS WITH THE USER. * * Author : $Author: kleber $ * Last update : $Date: 2001/06/06 10:32:30 $ * Revision : $Revision: 1.1.1.1 $ * State: $State: Exp $ */ package main; import J2Ci.*; /** * This class contains all attributes of codes structured report code. * Furthermore an attriute is inseted calling Context Group. * A Context Group groups the codes so that they can be used * in a special context. For example there can be a Context Group * for all measurements. * * @author Klaus Kleber */ public class SRCode { public static final String CONTEXT_GROUP_NAME_DOCUMENT_TITLE = "Document Title"; public static final String CONTEXT_GROUP_NAME_SECTION_HEADING = "Section Heading"; public static final String CONTEXT_GROUP_NAME_REPORT_ELEMENT = "Report Element"; public static final String CONTEXT_GROUP_NAME_IMAGE_REFERENCE = "Image Reference"; public static final String CONTEXT_GROUP_NAME_TEMPORALCOORD = "Temporal coordinate"; public static final String CONTEXT_GROUP_NAME_SPATIALCOORD = "Spatial coordinate"; public static final String CONTEXT_GROUP_NAME_DATE = "Date"; public static final String CONTEXT_GROUP_NAME_TIME = "Time"; public static final String CONTEXT_GROUP_NAME_DATETIME = "Date/Time"; public static final String CONTEXT_GROUP_NAME_ORGANIZATIONAL_ROLE = "Organizational Role"; public static final String CONTEXT_GROUP_NAME_NUMERIC_MEASUREMENTS = "Numeric Measurement"; public static final String CONTEXT_GROUP_NAME_MEASUREMENT_UNIT = "Measurement Unit"; public static final String CONTEXT_GROUP_NAME_UID_REFERENCE = "UID Reference"; public static final String CONTEXT_GROUP_NAME_CODE = "Code"; public static final String CONTEXT_GROUP_NAME_WAVEFORM = "Waveform"; public static final String CONTEXT_GROUP_NAME_COMPOSITE = "Composite"; /** * Contains the Context Group */ private String contextGroup; /** * Contains the Coding Scheme Designator */ private String codingSchemeDesignator; /** * Contains the Coding Scheme Version */ private String codingSchemeVersion; /** * Contains the Code Value */ private String codeValue; /** * Contains the Code Meaning */ private String codeMeaning; /** * Contains the name of the Context Group */ private String identifier; /** * If the code is not a default code. * A code is not a default code if the user * inserted the code manually or if a SR report * contains a code which is unknown. */ private boolean isDefault = true; public SRCode() {} public SRCode( String contextGroup, String codingSchemeDesignator, String codingSchemeVersion, String codeValue, String codeMeaning) { this.codeMeaning = codeMeaning; this.codeValue = codeValue; if(codeValue==null) codeValue=""; this.codingSchemeDesignator = codingSchemeDesignator; if(codingSchemeDesignator==null) codingSchemeDesignator=""; this.codingSchemeVersion = codingSchemeVersion; if(codingSchemeVersion==null) codingSchemeVersion=""; this.contextGroup = contextGroup; } public String toValueString() { return new String("Context Group: " + contextGroup+ "\nCoding Scheme Designator: " + codingSchemeDesignator+ "\nCoding Scheme Version: " + codingSchemeVersion+ "\nCode Value: " + codeValue+ "\nCode Meaning: " + codeMeaning); } /** * Sets the isDefault value. * A code is not a default code if the user * inserted the code manually or if a SR report * contains a code which is unknown. */ public void setDefault(boolean isDefault) { this.isDefault = isDefault; } public String getIdentifier() { return codeValue+"/" + codingSchemeDesignator+"/"+codingSchemeVersion; } public String toString() { if (!isDefault) return "* " + codeMeaning; else return codeMeaning; } /** * Returns the Code Value * @return The Code Value */ public String getCodeValue() { return codeValue; } /** * Returns the Code Meaning * @return The Code Meaning */ public String getCodeMeaning() { return codeMeaning; } /** * Returns the Context Group * @return The Context Group */ public String getContextGroup() { return contextGroup; } /** * Returns the Coding Scheme Designator * @return The Coding Scheme Designator */ public String getCodingSchemeDesignator() { return codingSchemeDesignator; } /** * Returns the Coding Scheme Version * @return The Coding Scheme Version */ public String getCodingSchemeVersion() { return codingSchemeVersion; } /** * Sets the Coding Scheme Designator * @param codingSchemeDesignator Coding Scheme Designator */ public void setCodingSchemeDesignator(String codingSchemeDesignator) { this.codingSchemeDesignator= codingSchemeDesignator; if (this.codingSchemeDesignator == null) codingSchemeDesignator = ""; } /** * Sets the Coding Scheme Version * @param codingSchemeVersion Coding Scheme Version */ public void setCodingSchemeVersion(String codingSchemeVersion) { this.codingSchemeVersion= codingSchemeVersion; if (this.codingSchemeVersion == null) codingSchemeVersion = ""; } /** * Sets the Context Group * @param contextGroup Context Group */ public void setContextGroup(String contextGroup) { this.contextGroup= contextGroup; if (this.contextGroup == null) contextGroup = ""; } /** * Sets the Code Value * @param codeValue Code Value */ public void setCodeValue(String codeValue) { this.codeValue= codeValue; if (this.codeValue == null) codeValue = ""; } /** * Sets the Code Meaning * @param codeMeaning Code Meaning */ public void setCodeMeaning(String codeMeaning) { this.codeMeaning= codeMeaning; if (this.codeMeaning == null) codeMeaning = ""; } } /* * CVS Log * $Log: SRCode.java,v $ * Revision 1.1.1.1 2001/06/06 10:32:30 kleber * Init commit for DICOMscope 3.5 * Create new CVS * */ dicomscope-3.6.0/tkgui/main/SRCodeList.java0000644000265600020320000001421311262371101017651 0ustar tilleaadmin/* * * Copyright (C) 1999, Institute for MicroTherapy * * This software and supporting documentation were developed by * * University of Witten/Herdecke * Department of Radiology and MicroTherapy * Institute for MicroTherapy * Medical computer science * * Universitaetsstrasse 142 * 44799 Bochum, Germany * * http://www.microtherapy.de/go/cs * mailto:computer.science@microtherapy.de * * THIS SOFTWARE IS MADE AVAILABLE, AS IS, AND THE INSTITUTE MAKES NO * WARRANTY REGARDING THE SOFTWARE, ITS PERFORMANCE, ITS MERCHANTABILITY * OR FITNESS FOR ANY PARTICULAR USE, FREEDOM FROM ANY COMPUTER DISEASES * OR ITS CONFORMITY TO ANY SPECIFICATION. THE ENTIRE RISK AS TO QUALITY * AND PERFORMANCE OF THE SOFTWARE IS WITH THE USER. * * Author : $Author: kleber $ * Last update : $Date: 2001/06/06 10:32:30 $ * Revision : $Revision: 1.1.1.1 $ * State: $State: Exp $ */ package main; import java.util.*; import java.io.*; /** * This class contains functions for the administration of a list of{@link SRCode} * objects * @author Klaus Kleber */ public class SRCodeList { /** * Contains a map of {@link SRCode} objects * The keys are the identifies of the {@link SRCode} * the values are the {@link SRCode}. */ private Hashtable listSRCode = new Hashtable(); /** * Contains a dictionary with all Context Groups. * The keys are the Context Group Name and the * values are a Vector containing a list of all * known {@link SRCode} objects in the Context Group */ private Hashtable contextGroupTable = new Hashtable(); /** * Constructor. A number of {@link SRcodes] will read from the specified * text file. This text file contains a dictionary specifying all codes which can be * selected from the DICOMscope 3.x application. Many codes (at least the * code meanings) are directly taken from the current "public comment" draft * of Supplement 57 "DICOM Content Mapping Resource (DCMR)". *

* Each line represents an entry in the code dictionary. Each line has 5 * fields (Context Group, Coding Scheme Designator, Coding Scheme Version, * Code Value, Code Meaning). Each field must be separated by a comma and * surrounded by quotation marks. *

* Comments have a '#' at the beginning of the line. * @param fileName The name of the text file. */ public SRCodeList(String fileName) { contextGroupTable.put(SRCode.CONTEXT_GROUP_NAME_CODE, new Vector()); BufferedReader in = null; try { in= new BufferedReader(new FileReader(new File(fileName))); } catch(IOException e) { System.err.println("Code table not found: " + e); return; } try { String nextLine ; nextLine = in.readLine().trim(); SRCode code = null; while(nextLine!=null) { if (!nextLine.startsWith("#")) { code = getSRCode(nextLine); instertCode(code); } nextLine = in.readLine(); } } catch(Exception e) { System.err.println(e); } } /** * Inserts a code in {@link listSRCode} and in the * correct {@link contextGroupTable}. If the Context Group of the * {@link SRCode} is not specified a new Context Group * will be inseted in the {@link contextGroupTable}. * @param code New code. */ public void instertCode(SRCode code) { listSRCode.put(code.getIdentifier(), code); Object o = contextGroupTable.get(code.getContextGroup()); if (o == null) { Vector v = new Vector(); v.add(code); contextGroupTable.put(code.getContextGroup(), v); } else { Vector v = (Vector)o; v.add(code); } } /** * Searchs for the index of a {@link SRCode} object in the s * specified Vector of SRCodes. * @param v The Vector containing a list of {@link SRCode} * @param id The identifier of a {@link SRCode} * @return The index of the {@link SRCode} or -1 if not found. */ public static int getIndexCode(Vector v, String id) { if (v== null ||id == null) return -1; for (int i = 0; i 0)&& (b[lastIndex-1] == 0x00)) lastIndex--; return new String(b, 0,lastIndex); } /** * Removes the process specified by the Id. * @param processId Specifies the process to be removed. */ private void removeProcess(int processId) { processList.remove(new Integer(processId)); } /** * Insert a process * @param processId Unique ID identifying a process. * @param processType Id for the process type */ private static synchronized void insertProcess(int processId,int processType) { processList.put(new Integer(processId),new Integer(processType) ); } /** * Gets the type of a process with the specified Id. * @param processId Id of the process * @return The type of the process. */ private static synchronized int getProcessType(int processId) { return ((Integer) processList.get(new Integer(processId))).intValue(); } /** * Gets the name of a process with the specified Id. * @param processId Id of the process * @return The name of the process. */ private static synchronized String getProcessName(int processId) { return ProcessTypeIDs.getProcessName(getProcessType(processId)); } /** * Calculates a new unique process id: * @return Returns the new process id */ public synchronized static int giveNewProcessID() { return processIDCounter++; } /** * Returns a String with the current date in ISO format. * (Date/Time format: YYYY-MM-Dd:HH-mm-ss:SSSSSS ) * @return String with the current date in ISO format. */ public String getCurrentDateString() { Calendar calendar = new GregorianCalendar (); return dateTimeFormaterString.format(calendar.getTime()); } } /* * CVS Log * $Log: ProcessCommunicationHandler.java,v $ * Revision 1.1.1.1 2001/06/06 10:32:30 kleber * Init commit for DICOMscope 3.5 * Create new CVS * */ dicomscope-3.6.0/tkgui/processCommunication/ProcessCommunicationService.java0000644000265600020320000000716211262371101026650 0ustar tilleaadmin/* * * Copyright (C) 1999, Institute for MicroTherapy * * This software and supporting documentation were developed by * * University of Witten/Herdecke * Department of Radiology and MicroTherapy * Institute for MicroTherapy * Medical computer science * * Universitaetsstrasse 142 * 44799 Bochum, Germany * * http://www.microtherapy.de/go/cs * mailto:computer.science@microtherapy.de * * THIS SOFTWARE IS MADE AVAILABLE, AS IS, AND THE INSTITUTE MAKES NO * WARRANTY REGARDING THE SOFTWARE, ITS PERFORMANCE, ITS MERCHANTABILITY * OR FITNESS FOR ANY PARTICULAR USE, FREEDOM FROM ANY COMPUTER DISEASES * OR ITS CONFORMITY TO ANY SPECIFICATION. THE ENTIRE RISK AS TO QUALITY * AND PERFORMANCE OF THE SOFTWARE IS WITH THE USER. * * Author : $Author: kleber $ * Last update : $Date: 2001/06/06 10:32:30 $ * Revision : $Revision: 1.1.1.1 $ * State: $State: Exp $ */ package processCommunication; import java.io.*; import java.net.*; import java.util.*; /** * This class receives connection from any DICOMscope process and * start for each connection ProcessCommunicationService in his own Thread * @author Klaus Kleber * @since 15.10.2000 */ public class ProcessCommunicationService implements Runnable { /** * Port */ private int messagePort = 11000; private boolean keepMessagePortOpen=false; /** * Received Socket */ private Socket cSocket; private boolean isReady = false; /** * Constuctor. Start the Receiver in his own Thread */ public ProcessCommunicationService(int messagePort , boolean keepMessagePortOpen) { if(messagePort != 0 ) { new Thread(this).start(); messagePort = messagePort; keepMessagePortOpen = keepMessagePortOpen; waitForServerSocket(); } // else isReady = true; } private synchronized void waitForServerSocket() { if (isReady == false) { try { wait(); } catch (InterruptedException e) { System.err.println(e); } } } public synchronized void serverSocketisReady() { isReady= true; notify(); } /** * Run */ public void run() { Thread.currentThread().setPriority(Thread.NORM_PRIORITY-1); ServerSocket sSocket= null; try { sSocket = new ServerSocket(messagePort); while(true) { if (sSocket != null) { //System.err.println("wait on port: " + messagePort); serverSocketisReady(); while ((cSocket = sSocket.accept()) != null) { //System.err.println("Receive new connection " ); new ProcessCommunicationHandler(cSocket).start(); } } } } //Anmeldung an Socket nicht gelungen catch (IOException e) { System.err.println(e); } finally { try { sSocket.close(); } catch(Exception t){} } } } /* * CVS Log * $Log: ProcessCommunicationService.java,v $ * Revision 1.1.1.1 2001/06/06 10:32:30 kleber * Init commit for DICOMscope 3.5 * Create new CVS * */ dicomscope-3.6.0/tkgui/processCommunication/ProcessComponent.java0000644000265600020320000001562311262371101024465 0ustar tilleaadmin/* * * Copyright (C) 1999, Institute for MicroTherapy * * This software and supporting documentation were developed by * * University of Witten/Herdecke * Department of Radiology and MicroTherapy * Institute for MicroTherapy * Medical computer science * * Universitaetsstrasse 142 * 44799 Bochum, Germany * * http://www.microtherapy.de/go/cs * mailto:computer.science@microtherapy.de * * THIS SOFTWARE IS MADE AVAILABLE, AS IS, AND THE INSTITUTE MAKES NO * WARRANTY REGARDING THE SOFTWARE, ITS PERFORMANCE, ITS MERCHANTABILITY * OR FITNESS FOR ANY PARTICULAR USE, FREEDOM FROM ANY COMPUTER DISEASES * OR ITS CONFORMITY TO ANY SPECIFICATION. THE ENTIRE RISK AS TO QUALITY * AND PERFORMANCE OF THE SOFTWARE IS WITH THE USER. * * Author : $Author: kleber $ * Last update : $Date: 2001/06/06 10:32:30 $ * Revision : $Revision: 1.1.1.1 $ * State: $State: Exp $ */ package processCommunication; import de.microtherapy.tools.text.document.general.*; import javax.swing.*; import java.awt.event.*; import java.awt.*; import java.util.*; import main.*; import javax.swing.table.*; import java.awt.*; /** * This class logs all received DicomScopeMessage. * @author Klaus Kleber * @since 16.10.2000 */ public class ProcessComponent extends JPanel implements ProcessLogListener, ActionListener { /** * TextArea for display the DicomScopeMessage */ private JTextArea textArea = new JTextArea(5,5); /** * List containing the DicomScopeMessage. */ private Vector messageList = new Vector(); /** * Max lenght of messageList. */ private int maxLength= 1500; /** * Number of DicomScopeMessages to be deleted if maxLenght is reached */ private int deleteNumberOfMessage = 500; /** * ParentFrame */ private JFrame parent; /** * If selected for each new application id a new ProcesIDDisplay will be initialized */ private JCheckBox openBox = new JCheckBox("Open Log Window for new Process"); /** * Highest application id. This value will be used to identify new application ids */ private int highestApplicationID = -1; ProcessTable table; /** * Constructor * @param parent Parent frame */ public ProcessComponent(JFrame parent, Font f) { this.parent = parent; ProcessController.instance().addProcessLogListener(this); setLayout(new BorderLayout(5,5)); //Text textArea.setWrapStyleWord(true); textArea.setEditable(false); JSplitPane splitPane = new JSplitPane(JSplitPane.VERTICAL_SPLIT); table= new ProcessTable(textArea,messageList, f); splitPane.setTopComponent(new JScrollPane(table)); splitPane.setBottomComponent(new JScrollPane(textArea)); add(splitPane, BorderLayout.CENTER); splitPane.setDividerLocation(250); //Buttons JPanel buttonPanel = new JPanel(); JButton clearButton = new JButton("Clear"); clearButton.addActionListener(this); clearButton.setToolTipText("clear the message display"); clearButton.setActionCommand("clear"); buttonPanel.add(clearButton); /* JButton selectButton = new JButton("Filter"); selectButton.setToolTipText("Show process related messages "); selectButton.addActionListener(this); selectButton.setActionCommand("select"); buttonPanel.add(selectButton); buttonPanel.add(openBox); */ add(buttonPanel, BorderLayout.SOUTH); } /** * Received DicomScopeMessages */ public synchronized void logProcess (DicomScopeMessage e) { if (maxLength < messageList.size()) { for (int i = 0 ; i highestApplicationID) { highestApplicationID = e.getProcessId(); if (openBox.isSelected())openFrame(highestApplicationID); } SwingUtilities.invokeLater(new InsertInTable(table, e)); } public class InsertInTable implements Runnable { ProcessTable t; DicomScopeMessage m; public InsertInTable(ProcessTable t,DicomScopeMessage m) { this.t = t; this.m = m; } public void run() { t.insertData(m); } } public class DeleteInTable implements Runnable { ProcessTable t; public DeleteInTable(ProcessTable t) { this.t = t; } public void run() { t.deleteAll(); } } /** * Handle Button Events Button Evebts */ public synchronized void actionPerformed(ActionEvent e) { String command = e.getActionCommand(); if (command.equals("clear")) { messageList = new Vector(); textArea.setText(""); SwingUtilities.invokeLater(new DeleteInTable(table)); } else if (command.equals("select")) { JPanel p = new JPanel(); JTextField t = new JTextField(2); t.setDocument(new IntegerDocument(Integer.MAX_VALUE)); p.add(t); int result = JOptionPane.showConfirmDialog (parent,p, "Select Process ID", JOptionPane.OK_CANCEL_OPTION, JOptionPane.PLAIN_MESSAGE); if (result == JOptionPane.OK_OPTION) { try { int id = new Integer (t.getText()).intValue(); openFrame(id); } catch (Exception ex) { JOptionPane.showMessageDialog (parent, "Invalid ID!", "Invalid", JOptionPane.ERROR_MESSAGE); } } } } /** * Opens a ProcessIDDisplay with a copy of the DicomScopeMessage related to * the specified */ private void openFrame(int applicationID) { Vector init = new Vector(); DicomScopeMessage dsm; for (int i = 0; i < messageList.size(); i++) { dsm = (DicomScopeMessage)messageList.elementAt(i); if (dsm.getProcessId() == applicationID) init.addElement(dsm); } new ProcessIDDisplay(init, applicationID).show(); } } /* * CVS Log * $Log: ProcessComponent.java,v $ * Revision 1.1.1.1 2001/06/06 10:32:30 kleber * Init commit for DICOMscope 3.5 * Create new CVS * */ dicomscope-3.6.0/tkgui/processCommunication/ProcessController.java0000644000265600020320000001001111262371101024630 0ustar tilleaadmin/* * * Copyright (C) 1999, Institute for MicroTherapy * * This software and supporting documentation were developed by * * University of Witten/Herdecke * Department of Radiology and MicroTherapy * Institute for MicroTherapy * Medical computer science * * Universitaetsstrasse 142 * 44799 Bochum, Germany * * http://www.microtherapy.de/go/cs * mailto:computer.science@microtherapy.de * * THIS SOFTWARE IS MADE AVAILABLE, AS IS, AND THE INSTITUTE MAKES NO * WARRANTY REGARDING THE SOFTWARE, ITS PERFORMANCE, ITS MERCHANTABILITY * OR FITNESS FOR ANY PARTICULAR USE, FREEDOM FROM ANY COMPUTER DISEASES * OR ITS CONFORMITY TO ANY SPECIFICATION. THE ENTIRE RISK AS TO QUALITY * AND PERFORMANCE OF THE SOFTWARE IS WITH THE USER. * * Author : $Author: kleber $ * Last update : $Date: 2001/06/06 10:32:30 $ * Revision : $Revision: 1.1.1.1 $ * State: $State: Exp $ */ package processCommunication; import main.*; import java.util.*; import javax.swing.event.*; /** * This class provides an event-based communication in * an application. Parts of the application can add itself to this * server to recieve incoming events. Those parts must implement the * "ProcessLogListener"-interface. * Do add a ProcessLogListener you may use the following commands: * * class SomeListener implements ProcessLogListener * { * public SomeListener() * { * ProcessController es = ProcessController.instance().addMainListener(this); * } * * public boolean logProcess (DicomScopeMessage e) * { * doSomething(); * return true; * } * } * */ public class ProcessController { // Singleton Pattern: /** * The one and only instance is stored here. */ private static ProcessController theInstance = null; /** * EventListenerList */ protected EventListenerList listenrList ; /** * The Constructor of this class. The one-and-only object of * this class can be created (or retrieved) with this method. * * @return an instance of this class. */ public static ProcessController instance() { if (theInstance == null) theInstance = new ProcessController(); return theInstance; } /** * The internal constructor of this class. Don't call direct. */ protected ProcessController () { // do not instanciate this way! listenrList = new EventListenerList(); } /** * Adds a ProcessLogListener. * @param l The ProcessLogListener to be added */ public void addProcessLogListener(ProcessLogListener l) { listenrList.add(ProcessLogListener.class, l); } /** * Removes the specified ProcessLogListener * @param l The ProcessLogListener to be removed */ public void removeProcessLogListener(ProcessLogListener l) { listenrList.remove(ProcessLogListener.class, l); } /** * Notify all listeners that have registered interest for * notification on this event type. The event instance * is lazily created using the parameters passed into * the fire method. * @param e The DicomScopeMessage to be fired */ public void fireProcessLog(DicomScopeMessage e) { // Guaranteed to return a non-null array Object[] listeners = listenrList.getListenerList(); // Process the listeners last to first, notifying // those that are interested in this event for (int i = listeners.length-2; i>=0; i-=2) { if (listeners[i]==ProcessLogListener.class) { // Lazily create the event: //if (jiveMessage == null) fooEvent = new FooEvent(this); ((ProcessLogListener)listeners[i+1]).logProcess(e); } } } } /* * CVS Log * $Log: ProcessController.java,v $ * Revision 1.1.1.1 2001/06/06 10:32:30 kleber * Init commit for DICOMscope 3.5 * Create new CVS * */ dicomscope-3.6.0/tkgui/processCommunication/ProcessIDDisplay.java0000644000265600020320000001072511262371101024343 0ustar tilleaadmin/* * * Copyright (C) 1999, Institute for MicroTherapy * * This software and supporting documentation were developed by * * University of Witten/Herdecke * Department of Radiology and MicroTherapy * Institute for MicroTherapy * Medical computer science * * Universitaetsstrasse 142 * 44799 Bochum, Germany * * http://www.microtherapy.de/go/cs * mailto:computer.science@microtherapy.de * * THIS SOFTWARE IS MADE AVAILABLE, AS IS, AND THE INSTITUTE MAKES NO * WARRANTY REGARDING THE SOFTWARE, ITS PERFORMANCE, ITS MERCHANTABILITY * OR FITNESS FOR ANY PARTICULAR USE, FREEDOM FROM ANY COMPUTER DISEASES * OR ITS CONFORMITY TO ANY SPECIFICATION. THE ENTIRE RISK AS TO QUALITY * AND PERFORMANCE OF THE SOFTWARE IS WITH THE USER. * * Author : $Author: kleber $ * Last update : $Date: 2001/06/06 10:32:30 $ * Revision : $Revision: 1.1.1.1 $ * State: $State: Exp $ */ package processCommunication; import javax.swing.*; import java.awt.event.*; import java.awt.*; import java.util.*; import main.*; /** * This class logs all received DicomScopeMessage. * @author Klaus Kleber * @since 16.10.2000 */ public class ProcessIDDisplay extends JFrame implements ProcessLogListener, ActionListener { /** * TextArea for display the DicomScopeMessage */ private JTextArea textArea = new JTextArea(); /** * List containing the DicomScopeMessage. */ private Vector messageList = new Vector(); /** * Max lenght of messageList. */ private int maxLength= 1500; /** * Number of DicomScopeMessages to be deleted if maxLenght is reached */ private int deleteNumberOfMessage = 500; /** * ParentFrame */ private JFrame parent; /** * Process ID of the message */ int processID; public ProcessIDDisplay( Vector messageList, int processID) { super(new String ("Process: " + processID )); this.processID =processID; textArea.setWrapStyleWord(true); textArea.setEditable(false); initMessages(messageList); ProcessController.instance().addProcessLogListener(this); setSize(400,300); SymWindow aSymWindow = new SymWindow(); this.addWindowListener(aSymWindow); getContentPane().setLayout(new BorderLayout(5,5)); getContentPane().add(new JScrollPane(textArea), BorderLayout.CENTER); JButton closeButton = new JButton ("Close"); closeButton.setActionCommand("close"); closeButton.addActionListener(this); JPanel buttonPanel = new JPanel(); buttonPanel.add(closeButton, BorderLayout.SOUTH); getContentPane().add(buttonPanel, BorderLayout.SOUTH); } /** * Initialized the textArea with the DicomScopeMessages contained in the * specified messageList */ private synchronized void initMessages(Vector messageList) { this.messageList = messageList; for (int i = 0; i< messageList.size(); i++) textArea.append(messageList.elementAt(i).toString()+"\n"); textArea.setCaretPosition(textArea.getText().length()-1); } /** * Received DicomScopeMessage */ public synchronized void logProcess (DicomScopeMessage e) { if (maxLength < messageList.size()) messageList.removeElementAt(0); if (e.getProcessId()== processID) { messageList.add(e); textArea.append(e.toString()+"\n"); textArea.setCaretPosition(textArea.getText().length()-1); } } /** * Handles Action Events */ public void actionPerformed(ActionEvent e) { String command = e.getActionCommand(); if (command.equals("close")) close(this); } /** * Closes the application and terminates the network receiver. */ class SymWindow extends java.awt.event.WindowAdapter { public void windowClosing(java.awt.event.WindowEvent event) { close( (ProcessLogListener)event.getSource()); } } /** * Close. */ private void close(ProcessLogListener procLogList) { ProcessController.instance().removeProcessLogListener(procLogList); setVisible(false); dispose(); } } /* * CVS Log * $Log: ProcessIDDisplay.java,v $ * Revision 1.1.1.1 2001/06/06 10:32:30 kleber * Init commit for DICOMscope 3.5 * Create new CVS * */ dicomscope-3.6.0/tkgui/processCommunication/ProcessLogListener.java0000644000265600020320000000315211262371101024744 0ustar tilleaadmin/* * * Copyright (C) 1999, Institute for MicroTherapy * * This software and supporting documentation were developed by * * University of Witten/Herdecke * Department of Radiology and MicroTherapy * Institute for MicroTherapy * Medical computer science * * Universitaetsstrasse 142 * 44799 Bochum, Germany * * http://www.microtherapy.de/go/cs * mailto:computer.science@microtherapy.de * * THIS SOFTWARE IS MADE AVAILABLE, AS IS, AND THE INSTITUTE MAKES NO * WARRANTY REGARDING THE SOFTWARE, ITS PERFORMANCE, ITS MERCHANTABILITY * OR FITNESS FOR ANY PARTICULAR USE, FREEDOM FROM ANY COMPUTER DISEASES * OR ITS CONFORMITY TO ANY SPECIFICATION. THE ENTIRE RISK AS TO QUALITY * AND PERFORMANCE OF THE SOFTWARE IS WITH THE USER. * * Author : $Author: kleber $ * Last update : $Date: 2001/06/06 10:32:30 $ * Revision : $Revision: 1.1.1.1 $ * State: $State: Exp $ */ package processCommunication; import java.util.*; import main.*; /** * Base interface for classes which wants to be a listener of DicomScopeMessage. */ public interface ProcessLogListener extends EventListener { /** * Processes an DicomScopeMessage. Implementing classes should check for the * exact subclass of DicomScopeMessage (via instanceof) to get full information * of the event. * * @param e the DicomScopeMessage */ public abstract void logProcess (DicomScopeMessage e); } /* * CVS Log * $Log: ProcessLogListener.java,v $ * Revision 1.1.1.1 2001/06/06 10:32:30 kleber * Init commit for DICOMscope 3.5 * Create new CVS * */ dicomscope-3.6.0/tkgui/processCommunication/ProcessMessageIDs.java0000644000265600020320000001077111262371101024506 0ustar tilleaadmin/* * * Copyright (C) 1999, Institute for MicroTherapy * * This software and supporting documentation were developed by * * University of Witten/Herdecke * Department of Radiology and MicroTherapy * Institute for MicroTherapy * Medical computer science * * Universitaetsstrasse 142 * 44799 Bochum, Germany * * http://www.microtherapy.de/go/cs * mailto:computer.science@microtherapy.de * * THIS SOFTWARE IS MADE AVAILABLE, AS IS, AND THE INSTITUTE MAKES NO * WARRANTY REGARDING THE SOFTWARE, ITS PERFORMANCE, ITS MERCHANTABILITY * OR FITNESS FOR ANY PARTICULAR USE, FREEDOM FROM ANY COMPUTER DISEASES * OR ITS CONFORMITY TO ANY SPECIFICATION. THE ENTIRE RISK AS TO QUALITY * AND PERFORMANCE OF THE SOFTWARE IS WITH THE USER. * * Author : $Author: kleber $ * Last update : $Date: 2001/06/06 10:32:30 $ * Revision : $Revision: 1.1.1.1 $ * State: $State: Exp $ */ package processCommunication; import J2Ci.*; import java.io.*; import java.net.*; import java.util.*; /** * This class contains the names and the IDs of all messages to be * exchanged between DICOMscope processes. * The name of each ID can be requested by {@link #getIdName} * * @author Klaus Kleber * @since 16.10.2000 */ public class ProcessMessageIDs { /** * ID for Respond Ok message */ public static final int RESPOND_OK = 0; /** * ID for Assign Application Identification Number */ public static final int ASSIGN_APPLICATION_IDENTIFICATION_NUMBER = 2; /** * ID for Request Application Identification Number */ public static final int REQUEST_APPLICATION_IDENTIFICATIONNUMBER = 1; /** * ID for Application terminates */ public static final int APPLICATION_TERMINATES = 3; /** * ID for Received unencrypted DICOM connection */ public static final int RECEIVED_UNENCRYPTED_DICOM_CONNECTION = 5; /** * ID for Received encrypted DICOM connection */ public static final int RECEIVED_ENCRYPTED_DICOM_CONNECTION = 7; /** * ID for DICOM connection closed */ public static final int DICOM_CONNECTION_CLOSED = 9; /** * ID for DICOM connection aborded */ public static final int DICOM_CONNECTION_ABORDED = 11; /** * ID for Requested unencrypted DICOM connection */ public static final int REQUESTED_UNENCRYPTED_DICOM_CONNECTION = 13; /** * ID for Requested encrypted DICOM connection */ public static final int REQUESTED_ENCRYPTED_DICOM_CONNECTION = 15; /** * ID for Received DICOM object */ public static final int RECEIVED_DICOM_OBJECT = 17; /** * ID for SENT DICOM object */ public static final int SENT_DICOM_OBJECT = 19; /** * Contains for each ID the name of the Message */ public static Hashtable names; static { names = new Hashtable(); names.put(new Integer(RESPOND_OK), "Respond ok"); names.put(new Integer(ASSIGN_APPLICATION_IDENTIFICATION_NUMBER), "Assign Application Identification Number"); names.put(new Integer(REQUEST_APPLICATION_IDENTIFICATIONNUMBER), "Request Application Identification Number"); names.put(new Integer(APPLICATION_TERMINATES), "Application terminates"); names.put(new Integer(RECEIVED_UNENCRYPTED_DICOM_CONNECTION), "Received unencrypted DICOM connection"); names.put(new Integer(RECEIVED_ENCRYPTED_DICOM_CONNECTION), "Received encrypted DICOM connection"); names.put(new Integer(DICOM_CONNECTION_CLOSED), "DICOM connection closed"); names.put(new Integer(DICOM_CONNECTION_ABORDED), "DICOM connection aborted"); names.put(new Integer(REQUESTED_UNENCRYPTED_DICOM_CONNECTION), "Requested unencrypted DICOM connection"); names.put(new Integer(REQUESTED_ENCRYPTED_DICOM_CONNECTION), "Requested encrypted DICOM connection"); names.put(new Integer(RECEIVED_DICOM_OBJECT), "Received DICOM object"); names.put(new Integer(SENT_DICOM_OBJECT), "Sent DICOM object"); }; /** * Returns the name of the specified message * @param id Id specifieying the message * @return The name of the specified message */ public static String getMessageName(int id) { return (String) names.get(new Integer(id)); } } /* * CVS Log * $Log: ProcessMessageIDs.java,v $ * Revision 1.1.1.1 2001/06/06 10:32:30 kleber * Init commit for DICOMscope 3.5 * Create new CVS * */ dicomscope-3.6.0/tkgui/processCommunication/ProcessStatusIDs.java0000644000265600020320000000451311262371101024402 0ustar tilleaadmin/* * * Copyright (C) 1999, Institute for MicroTherapy * * This software and supporting documentation were developed by * * University of Witten/Herdecke * Department of Radiology and MicroTherapy * Institute for MicroTherapy * Medical computer science * * Universitaetsstrasse 142 * 44799 Bochum, Germany * * http://www.microtherapy.de/go/cs * mailto:computer.science@microtherapy.de * * THIS SOFTWARE IS MADE AVAILABLE, AS IS, AND THE INSTITUTE MAKES NO * WARRANTY REGARDING THE SOFTWARE, ITS PERFORMANCE, ITS MERCHANTABILITY * OR FITNESS FOR ANY PARTICULAR USE, FREEDOM FROM ANY COMPUTER DISEASES * OR ITS CONFORMITY TO ANY SPECIFICATION. THE ENTIRE RISK AS TO QUALITY * AND PERFORMANCE OF THE SOFTWARE IS WITH THE USER. * * Author : $Author: kleber $ * Last update : $Date: 2001/06/06 10:32:30 $ * Revision : $Revision: 1.1.1.1 $ * State: $State: Exp $ */ package processCommunication; import J2Ci.*; import java.io.*; import java.net.*; import java.util.*; /** * This class contains the names and the IDs of all possible status * The name of each status ID can be requested by {@link #getStatusName} * * @author Klaus Kleber * @since 16.10.2000 */ public class ProcessStatusIDs { /** * Operation was successful */ public static final int STATUS_OK = 0; /** * Operation could be performed, but some unusual conditions were detected */ public static final int STATUS_WARN= 1; /** * Operation has failed */ public static final int STATUS_ERROR=2; /** * Contains for each status ID the name. */ private static Hashtable names; static { names = new Hashtable(); names.put(new Integer(STATUS_OK), "OK"); names.put(new Integer(STATUS_WARN), "warning"); names.put(new Integer(STATUS_ERROR), "error"); } /** * Returns the name of the specified status * @param id Id specifieying the status * @return The name of the specified status */ public static String getStatusName(int id) { return (String) names.get(new Integer(id)); } } /* * CVS Log * $Log: ProcessStatusIDs.java,v $ * Revision 1.1.1.1 2001/06/06 10:32:30 kleber * Init commit for DICOMscope 3.5 * Create new CVS * */ dicomscope-3.6.0/tkgui/processCommunication/ProcessTable.java0000644000265600020320000002127511262371101023552 0ustar tilleaadmin/* * * Copyright (C) 1999, Institute for MicroTherapy * * This software and supporting documentation were developed by * * University of Witten/Herdecke * Department of Radiology and MicroTherapy * Institute for MicroTherapy * Medical computer science * * Universitaetsstrasse 142 * 44799 Bochum, Germany * * http://www.microtherapy.de/go/cs * mailto:computer.science@microtherapy.de * * THIS SOFTWARE IS MADE AVAILABLE, AS IS, AND THE INSTITUTE MAKES NO * WARRANTY REGARDING THE SOFTWARE, ITS PERFORMANCE, ITS MERCHANTABILITY * OR FITNESS FOR ANY PARTICULAR USE, FREEDOM FROM ANY COMPUTER DISEASES * OR ITS CONFORMITY TO ANY SPECIFICATION. THE ENTIRE RISK AS TO QUALITY * AND PERFORMANCE OF THE SOFTWARE IS WITH THE USER. * * Author : $Author: kleber $ * Last update : $Date: 2001/06/06 10:32:30 $ * Revision : $Revision: 1.1.1.1 $ * State: $State: Exp $ */ package processCommunication; import java.awt.BorderLayout; import java.awt.event.*; import java.util.*; import javax.swing.*; import javax.swing.table.*; import javax.swing.event.*; import javax.swing.text.*; /** * */ public final class ProcessTable extends JTable { private TableData tableData; // die Tabellendaten private JTextArea textArea; private boolean sortUp = false; Object[] columnIdentifiers = {"Status","Process Type","Process Id","Date","Message Type","Text"}; // Konstruktion des Tabellen-Dialogs public ProcessTable(JTextArea textArea, Vector messageList, java.awt.Font f) { super(); this.textArea =textArea; textArea.setFont(f); //init model tableData = new TableData(columnIdentifiers); setModel(tableData); // Konstruktion der sichtbaren Tabelle // init table getColumnModel().removeColumn(getColumn("Text")); getColumnModel ().getColumn (0).setPreferredWidth (80); getColumnModel ().getColumn (1).setPreferredWidth (80); getColumnModel ().getColumn (2).setPreferredWidth (80); getColumnModel ().getColumn (3).setPreferredWidth (200); setAutoResizeMode (AUTO_RESIZE_LAST_COLUMN); // init selection setSelectionMode(ListSelectionModel.SINGLE_SELECTION); // immer nur eine Zeile auswählbar getSelectionModel().addListSelectionListener(new SelectRowListener(textArea)); // init Mouse Listener getTableHeader().addMouseListener(new TableMouseListener()); // Mausaktion im Header abfangen } /** * Sort the table. * @param index Specifies the colum to be sorted */ private void sort (int index) { if (sortUp) {// Bubblesort for(int i = 0; i < tableData.getRowCount(); i++) { for(int j = i + 1; j < tableData.getRowCount(); j++) { if (tableData.compareTo(index, i, j) > 0) { tableData.swapRows(i, j); } } } sortUp = false; } else { for(int i = 0; i < tableData.getRowCount(); i++) { for(int j = i + 1; j < tableData.getRowCount(); j++) { if (tableData.compareTo(index, i, j) < 0) { tableData.swapRows(i, j); } } } sortUp = true; } repaint(); // Tabelle neuzeichnen } /** * Inserts the specified DicomScopeMessage as a row */ public void insertData(DicomScopeMessage m) { Object[] o = {m.statusName,m.processTypeName,new Integer(m.processId),m.date,m.messageName,m.text}; tableData.addRow(o); } /** * Deletes all Rows */ public void deleteAll() { tableData.setRowCount(0); } /** * This class extends the DefaultTableModel do that the needed * columnIdentifiers * */ private class TableData extends DefaultTableModel { int[][] sortMatrix = { { 3, 2, 3, 3, 3 }, /* second column: second sort criterion */ { 3, 3, 3, 3, 3 } /* third column: third sort criterion */ }; /** * Checks if row1< row2. The type of comparison is defined by cols. * @return 0 if equals, -1 if row1 < row2, 1 if row1>row2. */ public int compareTo(int col, int row1, int row2) { int secondCriterion=sortMatrix[0][col]; int thirdCriterion=sortMatrix[1][col]; int result = ((Comparable)tableData.getValueAt(row1, col)).compareTo((tableData.getValueAt(row2, col))); if (result == 0) result = ((Comparable)tableData.getValueAt(row1, secondCriterion)).compareTo((tableData.getValueAt(row2, secondCriterion))); if (result == 0) result = ((Comparable)tableData.getValueAt(row1, thirdCriterion)).compareTo((tableData.getValueAt(row2, thirdCriterion))); return result; } /** * Constructor. Sets the colum identifiers. * @param columnIdentifiers column identifiers */ public TableData(Object[] columnIdentifiers) { super(columnIdentifiers,0); } /** * Sets an editable */ public boolean isCellEditable(int row, int cols) { return false; } /** * Returns the index of the invislibe cols */ public int[] getInvisibleColumns() { //Number of cols in the model int cols = getColumnCount(); // Anzahl der Spalten merken //init array with size of invisible cols //( cols of the modle - cols of the table int[] invisible = new int[cols - getColumnCount()]; //Fills array for(int i = 0, j = 0; i < cols; i++) // { if(convertColumnIndexToView(i) < 0) { invisible[j++] = i; } } return invisible; } public void setRowCount(int index) { super.setRowCount(index); } /** * Swaps the rows. * @param row1 First row * @param row2 Secound row */ public void swapRows(int row1, int row2) { Object dummy = dataVector.elementAt(row1); dataVector.setElementAt(dataVector.elementAt(row2), row1); dataVector.setElementAt(dummy, row2); } } /** * Testet auf Klicks in den Tabellenheader */ private class TableMouseListener extends MouseAdapter { public void mouseClicked(MouseEvent e) { if(SwingUtilities.isRightMouseButton(e)) // nur mit der rechten Maustaste zulassen { TableColumnModel tcm = getTableHeader().getColumnModel(); // schon mal das Spaltenmodell holen int index = tcm.getColumnIndexAtX(e.getX()); // Index der angeklickten Spalte ermitteln if(index >= 0) // wurde tatsächlich eine Spalte angeklickt... { int modelIndex = convertColumnIndexToModel(index); // ...hole Spaltenindex des Modells sort(modelIndex); } } } } /** * This class listens for the selelction of rows and set the * text of the specified row (which presents a DicomScopeMessage) * to a TextField */ private class SelectRowListener implements ListSelectionListener { /** * Displays the text */ private JTextComponent textField; /** * Constructor */ public SelectRowListener(JTextComponent textField) { this.textField = textField; } public void valueChanged(ListSelectionEvent e) { if (e == null) return; int index = getSelectedRow(); if (index != -1&& e.getValueIsAdjusting()) { textField.setText((String)tableData.getValueAt(index, tableData. getColumnCount()-1)); textField.select(0,0); } } } } /* * CVS Log * $Log: ProcessTable.java,v $ * Revision 1.1.1.1 2001/06/06 10:32:30 kleber * Init commit for DICOMscope 3.5 * Create new CVS * */ dicomscope-3.6.0/tkgui/processCommunication/ProcessTypeIDs.java0000644000265600020320000000576411262371101024051 0ustar tilleaadmin/* * * Copyright (C) 1999, Institute for MicroTherapy * * This software and supporting documentation were developed by * * University of Witten/Herdecke * Department of Radiology and MicroTherapy * Institute for MicroTherapy * Medical computer science * * Universitaetsstrasse 142 * 44799 Bochum, Germany * * http://www.microtherapy.de/go/cs * mailto:computer.science@microtherapy.de * * THIS SOFTWARE IS MADE AVAILABLE, AS IS, AND THE INSTITUTE MAKES NO * WARRANTY REGARDING THE SOFTWARE, ITS PERFORMANCE, ITS MERCHANTABILITY * OR FITNESS FOR ANY PARTICULAR USE, FREEDOM FROM ANY COMPUTER DISEASES * OR ITS CONFORMITY TO ANY SPECIFICATION. THE ENTIRE RISK AS TO QUALITY * AND PERFORMANCE OF THE SOFTWARE IS WITH THE USER. * * Author : $Author: kleber $ * Last update : $Date: 2001/06/06 10:32:30 $ * Revision : $Revision: 1.1.1.1 $ * State: $State: Exp $ */ package processCommunication; import J2Ci.*; import java.io.*; import java.net.*; import java.util.*; /** * This class contains the names and the IDs of all possible DICOMscope process * The name of each process ID can be requested by {@link #getProcessName} * * @author Klaus Kleber * @since 16.10.2000 */ public class ProcessTypeIDs { /** * Process is none of the other types described below */ public static final int CLIENT_OTHER = 0; /** * Process is a DICOM Storage Service Class Provider. */ public static final int CLIENT_STORE_SCP = 1; /** * Process is a DICOM Storage Service Class User. */ public static final int CLIENT_STORE_SCU = 2; /** * Process is a DICOM Print Service Class Provider. */ public static final int CLIENT_PRINT_SCP = 3; /** * Process is a DICOM Print Service Class User. */ public static final int CLIENT_PRINT_SCU = 4; /** * Process is a DICOM Query/Retrieve Service Class User. */ public static final int CLIENT_QUERY_RETRIEVE_SCU = 5; /** * Contains for each process ID the name. */ private static Hashtable names; static { names = new Hashtable(); names.put(new Integer(CLIENT_OTHER), "Other"); names.put(new Integer(CLIENT_STORE_SCP), "Store SCP"); names.put(new Integer(CLIENT_STORE_SCU), "Store SCU"); names.put(new Integer(CLIENT_PRINT_SCP), "Print SCP"); names.put(new Integer(CLIENT_PRINT_SCU), "Print SCU"); names.put(new Integer(CLIENT_QUERY_RETRIEVE_SCU), "Q/R SCU"); } /** * Returns the name of the specified process * @param id Id specifying the process * @return The name of the specified process */ public static String getProcessName(int id) { return (String) names.get(new Integer(id)); } } /* * CVS Log * $Log: ProcessTypeIDs.java,v $ * Revision 1.1.1.1 2001/06/06 10:32:30 kleber * Init commit for DICOMscope 3.5 * Create new CVS * */ dicomscope-3.6.0/tkgui/viewer/0002755000265600020320000000000011135621372015420 5ustar tilleaadmindicomscope-3.6.0/tkgui/viewer/controller/0002755000265600020320000000000011262371101017574 5ustar tilleaadmindicomscope-3.6.0/tkgui/viewer/controller/ImageCanvasEditListener.java0000644000265600020320000001655111262371101025137 0ustar tilleaadmin/* * * Copyright (C) 1999, Institute for MicroTherapy * * This software and supporting documentation were developed by * * University of Witten/Herdecke * Department of Radiology and MicroTherapy * Institute for MicroTherapy * Medical computer science * * Universitaetsstrasse 142 * 44799 Bochum, Germany * * http://www.microtherapy.de/go/cs * mailto:computer.science@microtherapy.de * * THIS SOFTWARE IS MADE AVAILABLE, AS IS, AND THE INSTITUTE MAKES NO * WARRANTY REGARDING THE SOFTWARE, ITS PERFORMANCE, ITS MERCHANTABILITY * OR FITNESS FOR ANY PARTICULAR USE, FREEDOM FROM ANY COMPUTER DISEASES * OR ITS CONFORMITY TO ANY SPECIFICATION. THE ENTIRE RISK AS TO QUALITY * AND PERFORMANCE OF THE SOFTWARE IS WITH THE USER. * * Author : $Author: kleber $ * Last update : $Date: 2001/06/06 10:32:30 $ * Revision : $Revision: 1.1.1.1 $ * State: $State: Exp $ */ package viewer.controller; import java.awt.event.*; import java.awt.*; import java.awt.geom.*; import viewer.gui.*; import viewer.main.*; import viewer.presentation.*; import javax.swing.*; /** * This class handles the MouseEvents for editing a PresentationStateLayerObject. * * @author Klaus Kleber * @since 30.04.1999 * @see GUI.ImageCanvas * @see ImageCanvasMouseEventListener */ public class ImageCanvasEditListener extends ImageCanvasMouseEventListener { /** * Construct a ImageCanvasEditListener. * * @param screenImageHandler Contains the current ScreenImageHandler. * @since 30.04.1999 */ public ImageCanvasEditListener(ScreenImageHandler screenImageHandler) { super(screenImageHandler); screenImageHandler.imageCanvas.setCursor(Cursor.getPredefinedCursor(Cursor.HAND_CURSOR)); } /** * Handles the mouse pressed action. If one PresentationStateLayerObject * contains the pressed point, these object will be marked. * * @param e MouseEvent. * @since 30.04.1999 */ public void mousePressed(MouseEvent e) { screenImageHandler.setClick(new Point2D.Float((float)(e.getX()),(float)( e.getY()))); //PopUpTrigger showPopup(e); } /** * Shows the PopupMenu for editing a PresentationStateGraphicObject. * * @param e MouseEvent. * @since 30.04.1999 */ void handlePopup(MouseEvent e) { JPopupMenu m= new JPopupMenu(); PresentationStateLayerObject handleObject = screenImageHandler.presentationStateGraphicsHandler.getCurrentLayerObject(); if (handleObject!= null) { if (handleObject instanceof PresentationStateGraphicObject) { PresentationStateGraphicObject grObject = (PresentationStateGraphicObject)handleObject; m.add(screenImageHandler.getAction("delete")); m.add(screenImageHandler.getAction("move")); JCheckBoxMenuItem filled = new JCheckBoxMenuItem("Filled"); JCheckBoxMenuItem imageRelative = new JCheckBoxMenuItem("Image Relative"); filled.addActionListener(screenImageHandler.getAction("filled")); imageRelative.addActionListener(screenImageHandler.getAction("image relative")); if (grObject.getAnnotationUnits()== 0)imageRelative.setSelected(true); filled.setSelected(grObject.isfilled()); m.add(filled); m.add(imageRelative); } if (handleObject instanceof PresentationStateTextObject) { PresentationStateTextObject clickedText= (PresentationStateTextObject)handleObject; m.add(screenImageHandler.getAction("delete")); m.add(screenImageHandler.getAction("editText")); m.addSeparator(); if (!clickedText.haveBoundingBox() &&clickedText.haveAnchorPoint()) { m.add(screenImageHandler.getAction("insert bounding box display relative")); m.add(screenImageHandler.getAction("insert bounding box image relative")); } if (clickedText.haveBoundingBox()) { m.add(screenImageHandler.getAction("move bounding box")); } if (clickedText.haveBoundingBox() &&clickedText.haveAnchorPoint()) { m.add(screenImageHandler.getAction("remove bounding box")); } //change type of bounding box form if (clickedText.haveBoundingBox() &&(clickedText.getBoundingBoxAnnotationUnits() ==0)) { m.add(screenImageHandler.getAction("set bounding box display relative")); } else if (clickedText.haveBoundingBox() &&(clickedText.getBoundingBoxAnnotationUnits() ==1)) { m.add(screenImageHandler.getAction("set bounding box image relative")); } m.addSeparator(); //insert anchor point if (clickedText.haveBoundingBox() &&!clickedText.haveAnchorPoint()) { m.add(screenImageHandler.getAction("insert anchor point display relative")); m.add(screenImageHandler.getAction("insert anchor point image relative")); } //remove boungin box if (clickedText.haveBoundingBox() &&clickedText.haveAnchorPoint()) { m.add(screenImageHandler.getAction("remove anchor point")); } //move bounding box if (clickedText.haveAnchorPoint()) { m.add(screenImageHandler.getAction("move anchor point")); } //Change type of anchor point if (clickedText.haveAnchorPoint() &&(clickedText.getAnchorPointAnnotationUnits() ==0)) { m.add(screenImageHandler.getAction("set anchor point display relative")); } else if (clickedText.haveAnchorPoint() &&(clickedText.getAnchorPointAnnotationUnits() ==1)) { m.add(screenImageHandler.getAction("set anchor point image relative")); } //Set anchor poiunt visible/unvisible if (clickedText.haveAnchorPoint() ) { if (clickedText.anchorPointIsVisible()) { m.add(screenImageHandler.getAction("set anchor point invisible")); } else { m.add(screenImageHandler.getAction("set anchor point visible")); } } } screenImageHandler.popup = m; screenImageHandler.popup.show( screenImageHandler.getImageCanvas(),e.getX(),e.getY()); } } } /* * CVS Log * $Log: ImageCanvasEditListener.java,v $ * Revision 1.1.1.1 2001/06/06 10:32:30 kleber * Init commit for DICOMscope 3.5 * Create new CVS * */ dicomscope-3.6.0/tkgui/viewer/controller/ImageCanvasMouseEventListener.java0000644000265600020320000000765111262371101026345 0ustar tilleaadmin/* * * Copyright (C) 1999, Institute for MicroTherapy * * This software and supporting documentation were developed by * * University of Witten/Herdecke * Department of Radiology and MicroTherapy * Institute for MicroTherapy * Medical computer science * * Universitaetsstrasse 142 * 44799 Bochum, Germany * * http://www.microtherapy.de/go/cs * mailto:computer.science@microtherapy.de * * THIS SOFTWARE IS MADE AVAILABLE, AS IS, AND THE INSTITUTE MAKES NO * WARRANTY REGARDING THE SOFTWARE, ITS PERFORMANCE, ITS MERCHANTABILITY * OR FITNESS FOR ANY PARTICULAR USE, FREEDOM FROM ANY COMPUTER DISEASES * OR ITS CONFORMITY TO ANY SPECIFICATION. THE ENTIRE RISK AS TO QUALITY * AND PERFORMANCE OF THE SOFTWARE IS WITH THE USER. * * Author : $Author: kleber $ * Last update : $Date: 2001/06/06 10:32:30 $ * Revision : $Revision: 1.1.1.1 $ * State: $State: Exp $ */ package viewer.controller; import java.awt.event.*; import java.awt.*; import java.awt.geom.*; import viewer.main.*; /** * This class ist the super class for all MouseEventListners and MouseMotionListeners of * the ImageCanvas. * * @author Klaus Kleber * @since 30.04.1999 */ public class ImageCanvasMouseEventListener implements MouseHandleListener { Point windowPoint; public static int numb = 0; /** * Contains the current ScreenImageHandler * * @since 30.04.1999 */ protected ScreenImageHandler screenImageHandler; /** * Construct an EventImageCanvas. * * @param screenImageHandler Contains the current ScreenImageHandler * @since 30.04.1999 */ public ImageCanvasMouseEventListener(ScreenImageHandler screenImageHandler) { this.screenImageHandler = screenImageHandler; numb++; } public void mouseEntered(MouseEvent e) {} public void mouseExited(MouseEvent e) {} /** * Handles the mouse pressed action and triggers a PopupMenu. * * @param e MouseEvent * @since 30.04.1999 */ public void mousePressed(MouseEvent e) { //PopUpTrigger showPopup(e); } /** * Handles the MouseEvent in the same way as the mouseMove action. * * @param e MouseEvent * @since 30.04.1999 */ public void mouseDragged(MouseEvent e) { if ((e.getModifiers() & InputEvent.BUTTON3_MASK) ==InputEvent.BUTTON3_MASK) { screenImageHandler.setNewWindow(windowPoint, e.getPoint(),true); windowPoint = e.getPoint(); } //mouseMoved(e); } /** * Empty action. Should be overwritten form a derived class * * @param e MouseEvent * @since 30.04.1999 */ public void mouseMoved(MouseEvent e) { } /** * Handles the mouse released action and triggers a PopupMenu. * * @param e MouseEvent * @since 30.04.1999 */ public void mouseReleased(MouseEvent e) { //Popuptrigger showPopup(e); } /** * Handles the mouse clicekd action and triggers a PopupMenu. * * @param e MouseEvent * @since 30.04.1999 */ public void mouseClicked(MouseEvent e) { showPopup(e); } /** * Calls a PopupMenu if the specified MouseEvent is a PopupTrigger. * * @param e MouseEvent * @since 30.04.1999 */ void showPopup(MouseEvent e) { if(e.isPopupTrigger()) { handlePopup(e); } if ((e.getModifiers() & InputEvent.BUTTON3_MASK) ==InputEvent.BUTTON3_MASK) { windowPoint = e.getPoint(); } } /** * Shows a PopupMenu depending form the derived class. * * @param e MouseEvent * @since 30.04.1999 */ void handlePopup(MouseEvent e) {} } /* * CVS Log * $Log: ImageCanvasMouseEventListener.java,v $ * Revision 1.1.1.1 2001/06/06 10:32:30 kleber * Init commit for DICOMscope 3.5 * Create new CVS * */ dicomscope-3.6.0/tkgui/viewer/controller/ImageCanvasMoveListener.java0000644000265600020320000000650111262371101025152 0ustar tilleaadmin/* * * Copyright (C) 1999, Institute for MicroTherapy * * This software and supporting documentation were developed by * * University of Witten/Herdecke * Department of Radiology and MicroTherapy * Institute for MicroTherapy * Medical computer science * * Universitaetsstrasse 142 * 44799 Bochum, Germany * * http://www.microtherapy.de/go/cs * mailto:computer.science@microtherapy.de * * THIS SOFTWARE IS MADE AVAILABLE, AS IS, AND THE INSTITUTE MAKES NO * WARRANTY REGARDING THE SOFTWARE, ITS PERFORMANCE, ITS MERCHANTABILITY * OR FITNESS FOR ANY PARTICULAR USE, FREEDOM FROM ANY COMPUTER DISEASES * OR ITS CONFORMITY TO ANY SPECIFICATION. THE ENTIRE RISK AS TO QUALITY * AND PERFORMANCE OF THE SOFTWARE IS WITH THE USER. * * Author : $Author: kleber $ * Last update : $Date: 2001/06/06 10:32:30 $ * Revision : $Revision: 1.1.1.1 $ * State: $State: Exp $ */ package viewer.controller; import java.awt.event.*; import java.awt.*; import java.awt.geom.*; import main.*; import viewer.gui.*; import viewer.main.*; import viewer.presentation.*; /** * This class handles the MouseEvents for moving a PresentationStateGraphicObject. * * @author Klaus Kleber * @since 30.04.1999 * @see GUI.ImageCanvas * @see ImageCanvasMouseEventListener */ public class ImageCanvasMoveListener extends ImageCanvasMouseEventListener { public static int number = 0; /** * Construct an EventImageCanvas. * * @param screenImageHandler Contains the cruuent ScreenImageHandler * @since 30.04.1999 */ public ImageCanvasMoveListener(ScreenImageHandler screenImageHandler) { super(screenImageHandler); number++; screenImageHandler.imageCanvas.setCursor(Cursor.getPredefinedCursor(Cursor.MOVE_CURSOR)); Controller.instance().fireStatus(new StatusLineEvent(this,StatusLineEvent.SET_DES,DSComponentType.VIEWER,"Move Graphic Annotation")); } /** * Moves the PresentationStateGraphicObject. * * @param e MouseEvent * @since 30.04.1999 */ public void mouseMoved(MouseEvent e) { screenImageHandler.paintStructure.movePresentationStateGraphicObject(new Point2D.Float((float)(e.getX()),(float)( e.getY()))); } /** * Overwrites the function form the superclass. * * @param e MouseEvent * @since 30.04.1999 */ public void mouseDragged(MouseEvent e) { System.out.println("ImageCanvasMoveListener: mouseDragged"); if ((e.getModifiers() & InputEvent.BUTTON3_MASK) ==InputEvent.BUTTON3_MASK) { Point newPoint = e.getPoint(); screenImageHandler.setNewWindow(windowPoint, newPoint,true); windowPoint = newPoint; } } /** * Stops moving the PresentationStateGraphicObject. * * @param e MouseEvent * @since 30.04.1999 */ public void mousePressed(MouseEvent e) { screenImageHandler.stopMoveAnnotation(); } /** * Overwrites the function from the superclass. * * @param e MouseEvent * @since 30.04.1999 */ void handlePopup(MouseEvent e) { } } /* * CVS Log * $Log: ImageCanvasMoveListener.java,v $ * Revision 1.1.1.1 2001/06/06 10:32:30 kleber * Init commit for DICOMscope 3.5 * Create new CVS * */ dicomscope-3.6.0/tkgui/viewer/controller/ImageCanvasMoveTextListener.java0000644000265600020320000000575611262371101026032 0ustar tilleaadmin/* * * Copyright (C) 1999, Institute for MicroTherapy * * This software and supporting documentation were developed by * * University of Witten/Herdecke * Department of Radiology and MicroTherapy * Institute for MicroTherapy * Medical computer science * * Universitaetsstrasse 142 * 44799 Bochum, Germany * * http://www.microtherapy.de/go/cs * mailto:computer.science@microtherapy.de * * THIS SOFTWARE IS MADE AVAILABLE, AS IS, AND THE INSTITUTE MAKES NO * WARRANTY REGARDING THE SOFTWARE, ITS PERFORMANCE, ITS MERCHANTABILITY * OR FITNESS FOR ANY PARTICULAR USE, FREEDOM FROM ANY COMPUTER DISEASES * OR ITS CONFORMITY TO ANY SPECIFICATION. THE ENTIRE RISK AS TO QUALITY * AND PERFORMANCE OF THE SOFTWARE IS WITH THE USER. * * Author : $Author: kleber $ * Last update : $Date: 2001/06/06 10:32:30 $ * Revision : $Revision: 1.1.1.1 $ * State: $State: Exp $ */ package viewer.controller; import java.awt.event.*; import java.awt.*; import java.awt.geom.*; import viewer.main.*; import viewer.gui.*; import viewer.presentation.*; /** * This class handles the MouseEvents for moving a PresentationStateTextObject. * * @author Klaus Kleber * @since 30.04.1999 * @see GUI.ImageCanvas * @see ImageCanvasMouseEventListener */ public class ImageCanvasMoveTextListener extends ImageCanvasMouseEventListener { /** * Construct an EventImageCanvas. * * @param screenImageHandler Contains the current ScreenImageHandler * @since 30.04.1999 */ public ImageCanvasMoveTextListener(ScreenImageHandler screenImageHandler) { super(screenImageHandler); screenImageHandler.imageCanvas.setCursor(Cursor.getPredefinedCursor(Cursor.MOVE_CURSOR)); } /** * Moves the PresentationStateTextObject. * * @param e MouseEvent * @since 30.04.1999 */ public void mouseMoved(MouseEvent e) { screenImageHandler.paintStructure.movePresentationStateTextObject(new Point2D.Float((float)(e.getX()),(float)( e.getY()))); } /** * Overwrites the function form the superclass. * * @param e MouseEvent * @since 30.04.1999 */ public void mouseDragged(MouseEvent e) { if ((e.getModifiers() & InputEvent.BUTTON3_MASK) ==InputEvent.BUTTON3_MASK) { screenImageHandler.setNewWindow(windowPoint, e.getPoint(),true); windowPoint = e.getPoint(); } } /** * Stops moving the PresentationStateTextObject. * * @param e MouseEvent * @since 30.04.1999 */ public void mousePressed(MouseEvent e) { screenImageHandler.stopMoveText(); } /** * Overwrites the function form the superclass. * * @param e MouseEvent * @since 30.04.1999 */ void handlePopup(MouseEvent e) { } } /* * CVS Log * $Log: ImageCanvasMoveTextListener.java,v $ * Revision 1.1.1.1 2001/06/06 10:32:30 kleber * Init commit for DICOMscope 3.5 * Create new CVS * */ dicomscope-3.6.0/tkgui/viewer/controller/ImageCanvasNewListener.java0000644000265600020320000001011611262371101024772 0ustar tilleaadmin/* * * Copyright (C) 1999, Institute for MicroTherapy * * This software and supporting documentation were developed by * * University of Witten/Herdecke * Department of Radiology and MicroTherapy * Institute for MicroTherapy * Medical computer science * * Universitaetsstrasse 142 * 44799 Bochum, Germany * * http://www.microtherapy.de/go/cs * mailto:computer.science@microtherapy.de * * THIS SOFTWARE IS MADE AVAILABLE, AS IS, AND THE INSTITUTE MAKES NO * WARRANTY REGARDING THE SOFTWARE, ITS PERFORMANCE, ITS MERCHANTABILITY * OR FITNESS FOR ANY PARTICULAR USE, FREEDOM FROM ANY COMPUTER DISEASES * OR ITS CONFORMITY TO ANY SPECIFICATION. THE ENTIRE RISK AS TO QUALITY * AND PERFORMANCE OF THE SOFTWARE IS WITH THE USER. * * Author : $Author: kleber $ * Last update : $Date: 2001/06/06 10:32:30 $ * Revision : $Revision: 1.1.1.1 $ * State: $State: Exp $ */ package viewer.controller; import java.awt.event.*; import java.awt.*; import java.awt.geom.*; import viewer.gui.*; import viewer.presentation.*; import viewer.paint.*; import viewer.main.*; import javax.swing.*; /** * This class handles the MouseEvents for creating a new Annotation * * @author Klaus Kleber * @since 30.04.1999 * @see GUI.ImageCanvas * @see ImageCanvasMouseEventListener */ public class ImageCanvasNewListener extends ImageCanvasMouseEventListener { /** * Construct an EventImageCanvas. * * @param screenImageHandler Contains the current ScreenImageHandler. * @since 30.04.1999 */ public ImageCanvasNewListener(ScreenImageHandler screenImageHandler) { super(screenImageHandler); screenImageHandler.imageCanvas.setCursor(Cursor.getPredefinedCursor(Cursor.CROSSHAIR_CURSOR)); } /** * Handles the mouse move action. If the mouse is moving the new Annotation must be paint. * * @param e MouseEvent * @since 30.04.1999 */ public void mouseMoved(MouseEvent e) { System.out.println("mouseMoved"); screenImageHandler.paintStructure.setPaintPoint(new Point2D.Float((float)(e.getX()),(float)( e.getY()))); } /** * Handles the mouse released action. If the mouse will be released the new Annotation gets a new point. * * @param e MouseEvent * @since 30.04.1999 */ public void mouseReleased(MouseEvent e) { System.out.println("mouseReleased"); //Popuptrigger showPopup(e); if (e.getModifiers() == MouseEvent.BUTTON1_MASK) { screenImageHandler.setNewPoint(new Point2D.Float(e.getX(), e.getY())); } } /** * Shows the PopupMenu for creating a new Anotation. * * @param e * @since 30.04.1999 */ void handlePopup(MouseEvent e) { JPopupMenu m= new JPopupMenu(); //create the itemes for a PolylineObject if (screenImageHandler.paintStructure.getCurrentPaintObject() instanceof PolylineObject) { m.add(screenImageHandler.getAction("deleteNew")); m.add(screenImageHandler.getAction("close")); m.add(screenImageHandler.getAction("stop")); } //create the itemes for a Line2DObject else if (screenImageHandler.paintStructure.getCurrentPaintObject() instanceof Line2DObject) { m.add(screenImageHandler.getAction("deleteNew")); } //create the itemes for a InterpolatedObject if (screenImageHandler.paintStructure.getCurrentPaintObject() instanceof InterpolatedObject) { m.add(screenImageHandler.getAction("deleteNew")); //m.add(screenImageHandler.getAction("close")); m.add(screenImageHandler.getAction("stop")); } screenImageHandler.popup = m; screenImageHandler.popup.show( screenImageHandler.getImageCanvas(),e.getX(),e.getY()); } } /* * CVS Log * $Log: ImageCanvasNewListener.java,v $ * Revision 1.1.1.1 2001/06/06 10:32:30 kleber * Init commit for DICOMscope 3.5 * Create new CVS * */ dicomscope-3.6.0/tkgui/viewer/controller/MouseHandleListener.java0000644000265600020320000000271211262371101024351 0ustar tilleaadmin/* * * Copyright (C) 1999, Institute for MicroTherapy * * This software and supporting documentation were developed by * * University of Witten/Herdecke * Department of Radiology and MicroTherapy * Institute for MicroTherapy * Medical computer science * * Universitaetsstrasse 142 * 44799 Bochum, Germany * * http://www.microtherapy.de/go/cs * mailto:computer.science@microtherapy.de * * THIS SOFTWARE IS MADE AVAILABLE, AS IS, AND THE INSTITUTE MAKES NO * WARRANTY REGARDING THE SOFTWARE, ITS PERFORMANCE, ITS MERCHANTABILITY * OR FITNESS FOR ANY PARTICULAR USE, FREEDOM FROM ANY COMPUTER DISEASES * OR ITS CONFORMITY TO ANY SPECIFICATION. THE ENTIRE RISK AS TO QUALITY * AND PERFORMANCE OF THE SOFTWARE IS WITH THE USER. * * Author : $Author: kleber $ * Last update : $Date: 2001/06/06 10:32:30 $ * Revision : $Revision: 1.1.1.1 $ * State: $State: Exp $ */ package viewer.controller; import java.awt.event.*; import java.awt.*; import java.awt.geom.*; import viewer.main.*; /** * Combines the interfaces MouseListener and MouseMotionListener * * @author Klaus Kleber * @since 30.04.1999 */ public interface MouseHandleListener extends MouseListener,MouseMotionListener { } /* * CVS Log * $Log: MouseHandleListener.java,v $ * Revision 1.1.1.1 2001/06/06 10:32:30 kleber * Init commit for DICOMscope 3.5 * Create new CVS * */ dicomscope-3.6.0/tkgui/viewer/controller/MouseZoomListener.java0000644000265600020320000000715011262371101024103 0ustar tilleaadmin/* * * Copyright (C) 1999, Institute for MicroTherapy * * This software and supporting documentation were developed by * * University of Witten/Herdecke * Department of Radiology and MicroTherapy * Institute for MicroTherapy * Medical computer science * * Universitaetsstrasse 142 * 44799 Bochum, Germany * * http://www.microtherapy.de/go/cs * mailto:computer.science@microtherapy.de * * THIS SOFTWARE IS MADE AVAILABLE, AS IS, AND THE INSTITUTE MAKES NO * WARRANTY REGARDING THE SOFTWARE, ITS PERFORMANCE, ITS MERCHANTABILITY * OR FITNESS FOR ANY PARTICULAR USE, FREEDOM FROM ANY COMPUTER DISEASES * OR ITS CONFORMITY TO ANY SPECIFICATION. THE ENTIRE RISK AS TO QUALITY * AND PERFORMANCE OF THE SOFTWARE IS WITH THE USER. * * Author : $Author: kleber $ * Last update : $Date: 2001/06/06 10:32:30 $ * Revision : $Revision: 1.1.1.1 $ * State: $State: Exp $ */ package viewer.controller; import java.awt.event.*; import java.awt.*; import java.awt.geom.*; import viewer.gui.*; import viewer.presentation.*; import viewer.paint.*; import viewer.main.*; /** * Listener for handling mouse based zooming function * * @author Klaus Kleber * @since 30.04.1999 * @see GUI.ImageCanvas * @see ImageCanvasMouseEventListener */ public class MouseZoomListener implements MouseHandleListener { /** * Contains the current ScreenImageHandler * * @since 30.04.1999 */ protected ScreenImageHandler screenImageHandler; Rectangle2DObject rect; boolean moved = false; /** * Construct an EventImageCanvas. * * @param screenImageHandler Contains the current ScreenImageHandler. * @since 30.04.1999 */ public MouseZoomListener(ScreenImageHandler screenImageHandler) { this.screenImageHandler = screenImageHandler; screenImageHandler.imageCanvas.setCursor(Cursor.getPredefinedCursor(Cursor.CROSSHAIR_CURSOR)); } public void mouseEntered(MouseEvent e) {} public void mouseExited(MouseEvent e) {} public void mouseClicked(MouseEvent e) {} public void mouseDragged(MouseEvent e) { } public void mousePressed(MouseEvent e) { } /** * Handles the mouse move action. If the mouse is moving the new Annotation must be paint. * * @param e MouseEvent * @since 30.04.1999 */ public void mouseMoved(MouseEvent e) { if (moved == true) screenImageHandler.paintStructure.setPaintPoint(new Point2D.Float(e.getPoint().x,e.getPoint().y)); } /** * Handles the mouse released action. If the mouse will be released the new Annotation gets a new point. * * @param e MouseEvent * @since 30.04.1999 */ public void mouseReleased(MouseEvent e) { if (!moved) { rect = new Rectangle2DObject(); screenImageHandler.paintStructure.setCurrentObject(null,true); screenImageHandler.paintStructure.deleteCurrentPaintObject(); screenImageHandler.paintStructure.oldPaintObject = null; screenImageHandler.paintStructure.setCurrentPaintObject(rect); screenImageHandler.setNewPoint(new Point2D.Float(e.getPoint().x,e.getPoint().y)); moved = true; } else { rect.setNewPoint(screenImageHandler.paintStructure.getInverseTransformedPoint(new Point2D.Float(e.getPoint().x,e.getPoint().y))); screenImageHandler.setNewDisplayArea(rect); moved = false; } } } /* * CVS Log * $Log: MouseZoomListener.java,v $ * Revision 1.1.1.1 2001/06/06 10:32:30 kleber * Init commit for DICOMscope 3.5 * Create new CVS * */ dicomscope-3.6.0/tkgui/viewer/gui/0002755000265600020320000000000011262371101016175 5ustar tilleaadmindicomscope-3.6.0/tkgui/viewer/gui/CreateGammaVOILUTDialog.java0000644000265600020320000000731311262371101023273 0ustar tilleaadmin/* * * Copyright (C) 1999, Institute for MicroTherapy * * This software and supporting documentation were developed by * * University of Witten/Herdecke * Department of Radiology and MicroTherapy * Institute for MicroTherapy * Medical computer science * * Universitaetsstrasse 142 * 44799 Bochum, Germany * * http://www.microtherapy.de/go/cs * mailto:computer.science@microtherapy.de * * THIS SOFTWARE IS MADE AVAILABLE, AS IS, AND THE INSTITUTE MAKES NO * WARRANTY REGARDING THE SOFTWARE, ITS PERFORMANCE, ITS MERCHANTABILITY * OR FITNESS FOR ANY PARTICULAR USE, FREEDOM FROM ANY COMPUTER DISEASES * OR ITS CONFORMITY TO ANY SPECIFICATION. THE ENTIRE RISK AS TO QUALITY * AND PERFORMANCE OF THE SOFTWARE IS WITH THE USER. * * Author : $Author: kleber $ * Last update : $Date: 2001/06/06 10:32:30 $ * Revision : $Revision: 1.1.1.1 $ * State: $State: Exp $ */ package viewer.gui; import de.microtherapy.tools.text.document.general.*; import javax.swing.*; import javax.swing.border.*; import java.awt.*; import jToolkit.gui.*; import main.*; /** * This class contains the dialog creating a VOI LUT with a Gamma * @autor Klaus Kleber * @since 01.06.2000 */ public class CreateGammaVOILUTDialog extends javax.swing.JDialog implements jToolkit.gui.CommandButtonListener { /** * Action for pressing the OK-Button */ public static final int ID_OK = 0; /** * Action for pressing the Cancel-Button */ public static final int ID_CANCEL = 1; private CommandJButton okButton = new CommandJButton("OK", this, ID_OK); private CommandJButton cancelButton = new CommandJButton("CANCEL", this,ID_CANCEL); private int actionValue; private JTextField gammaTextField; /** * Constructor. * @param parent Parent Frame. */ public CreateGammaVOILUTDialog(JFrame parent) { super(parent, "Create VOI LUT Dialog", true); setLocationRelativeTo(parent); getContentPane().setSize(400,300); JPanel paintPanel = new JPanel(); paintPanel.setLayout(new BorderLayout()); getContentPane().add(paintPanel); paintPanel.setBorder(new TitledBorder("Select Gamma")); gammaTextField = new JTextField(10); gammaTextField.setDocument(new DoubleDocument()); JPanel p = new JPanel(); p.add(gammaTextField); paintPanel.add(p,BorderLayout.CENTER); JPanel southPanel = new JPanel(); southPanel.add(okButton); southPanel.add(cancelButton); paintPanel.add(southPanel, BorderLayout.SOUTH); pack(); } /** * Action handling. * @param id the id of the pressed JButton. */ public void buttonClicked (int id) { if (id == ID_OK) { actionValue = ID_OK; setVisible (false); } if (id == ID_CANCEL) { actionValue = ID_CANCEL; setVisible (false); } } /** * Returns the Action applied to this JDialog. The following values are possible: * ID_OK for pressing the OK Button and ID_CANCEL for pressing the Cancel Button. * returns the Action applied to this JDialog. */ public int getActionValue() { return actionValue; } /** * Returns the gamma value * @return the gamma value */ public double getGamma() { return (new Double(gammaTextField.getText()).doubleValue()); } } /* * CVS Log * $Log: CreateGammaVOILUTDialog.java,v $ * Revision 1.1.1.1 2001/06/06 10:32:30 kleber * Init commit for DICOMscope 3.5 * Create new CVS * */ dicomscope-3.6.0/tkgui/viewer/gui/EditLayerPanel.java0000644000265600020320000003062011262371101021701 0ustar tilleaadmin/* * * Copyright (C) 1999, Institute for MicroTherapy * * This software and supporting documentation were developed by * * University of Witten/Herdecke * Department of Radiology and MicroTherapy * Institute for MicroTherapy * Medical computer science * * Universitaetsstrasse 142 * 44799 Bochum, Germany * * http://www.microtherapy.de/go/cs * mailto:computer.science@microtherapy.de * * THIS SOFTWARE IS MADE AVAILABLE, AS IS, AND THE INSTITUTE MAKES NO * WARRANTY REGARDING THE SOFTWARE, ITS PERFORMANCE, ITS MERCHANTABILITY * OR FITNESS FOR ANY PARTICULAR USE, FREEDOM FROM ANY COMPUTER DISEASES * OR ITS CONFORMITY TO ANY SPECIFICATION. THE ENTIRE RISK AS TO QUALITY * AND PERFORMANCE OF THE SOFTWARE IS WITH THE USER. * * Author : $Author: kleber $ * Last update : $Date: 2001/06/06 10:32:30 $ * Revision : $Revision: 1.1.1.1 $ * State: $State: Exp $ */ package viewer.gui; import javax.swing.*; import javax.swing.border.*; import viewer.main.*; import java.awt.*; import jToolkit.gui.*; import de.microtherapy.tools.text.document.dicom.*; /** * Contains the GUI for the lediting the layer */ public class EditLayerPanel extends JDialog implements CommandButtonListener { public static final int ID_OK = 0; public static final int ID_CANCEL = 1; CommandJButton okButton = new CommandJButton("OK", this, ID_OK); CommandJButton cancelButton = new CommandJButton("CANCEL", this,ID_CANCEL); ScreenImageHandler screenImageHandler; JTextField txtName; JTextField txtColor; JTextField txtR = new JTextField(); JTextField txtG= new JTextField(); JTextField txtB= new JTextField(); JTextArea txtArea; boolean edit; /** * true if layer has a gray color value, false if layer has a rgb color. * * @since 30.04.1999 */ public boolean isMonochrome = true; JFrame parent = null; public EditLayerPanel(Component parent,ScreenImageHandler screenImageHandler, boolean edit) { super((JFrame)null, "Layer Properties", true); setLocationRelativeTo(parent); getContentPane().setSize(400,300); this.screenImageHandler = screenImageHandler; this.edit = edit; getContentPane().setLayout(new BorderLayout(10,10)); JPanel centerPanel = new JPanel(); GridBagLayout gbl = new GridBagLayout(); GridBagConstraints gbc = new GridBagConstraints(); centerPanel.setBorder(new TitledBorder("Layer Settings")); centerPanel.setLayout(gbl); gbc.anchor = GridBagConstraints.NORTHWEST; centerPanel.add(new JLabel("Layer Name:")); centerPanel.add(Box.createHorizontalStrut(10),gbc); txtName= new JTextField(); txtName.setDocument(new CSDocument()); gbc.fill = GridBagConstraints.BOTH; gbc.gridwidth = GridBagConstraints.REMAINDER; gbc.weightx = 1.0; centerPanel.add(txtName,gbc); // row 2 gbc.fill = GridBagConstraints.NONE; gbc.weightx = 0.0; centerPanel.add(Box.createVerticalStrut(3),gbc); gbc.gridwidth = 1; centerPanel.add(new JLabel("Color"),gbc); centerPanel.add(Box.createHorizontalStrut(10),gbc); gbc.gridwidth = GridBagConstraints.REMAINDER; gbc.weightx = 1.0; txtColor = new JTextField(4); //txtArea.setRows(10); centerPanel.add(txtColor,gbc); // row 3 gbc.fill = GridBagConstraints.NONE; gbc.weightx = 0.0; centerPanel.add(Box.createVerticalStrut(3),gbc); gbc.gridwidth = 1; centerPanel.add(new JLabel("Description"),gbc); centerPanel.add(Box.createHorizontalStrut(10),gbc); gbc.gridwidth = GridBagConstraints.REMAINDER; gbc.weightx = 1.0; txtArea = new JTextArea(10,20); txtArea.setDocument(new LODocument()); txtArea.setLineWrap(true); gbc.fill = GridBagConstraints.BOTH; //txtArea.setRows(10); JScrollPane sp = new JScrollPane(txtArea,ScrollPaneConstants.VERTICAL_SCROLLBAR_AS_NEEDED,ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER); centerPanel.add(sp,gbc); getContentPane().add(centerPanel, BorderLayout.CENTER); JPanel buttonPanel = new JPanel(); buttonPanel.add(okButton); buttonPanel.add(cancelButton); getContentPane().add(buttonPanel,BorderLayout.SOUTH); pack(); if (edit) { txtName.setText(screenImageHandler.presentationStateGraphicsHandler.getCurrentLayer().getName()); txtArea.setText(screenImageHandler.presentationStateGraphicsHandler.getCurrentLayer().getDescription()); if (screenImageHandler.presentationStateGraphicsHandler.getCurrentLayer().haveGraphicLayerRecommendedDisplayValue()) { if (screenImageHandler.presentationStateGraphicsHandler.getCurrentLayer().isGray()) { txtColor.setText(new Float(screenImageHandler.presentationStateGraphicsHandler.getCurrentLayer().getFloatGrayColorValue()).toString()); } else { isMonochrome = false; //rgbCheckbox.setState(true); //txtR.setText(new Integer(screenImageHandler.presentationStateGraphicsHandler.getCurrentLayer().getRed()).toString()); //txtG.setText(new Integer(screenImageHandler.presentationStateGraphicsHandler.getCurrentLayer().getBlue()).toString()); //txtB.setText(new Integer(screenImageHandler.presentationStateGraphicsHandler.getCurrentLayer().getGreen()).toString()); txtColor.setText(""); } } else txtColor.setText(new Float(screenImageHandler.presentationStateGraphicsHandler.getCurrentLayer().getFloatGrayColorValue()).toString()); } else { txtName.setText("new layer "); txtColor.setText("1"); } } public void buttonClicked (int ID) { if (ID == ID_OK) editLayer(); if (ID == ID_CANCEL) setVisible (false); } public void editLayer() { int rValue; int gValue; int bValue; float mValue; //is layer name not null if (txtName.getText().trim().equals("")||txtName.getText()== null) JOptionPane.showMessageDialog(null,"Please insert layer name"); else { //handle monochome layer if (isMonochrome) { mValue = getIntValue(txtColor.getText()); try { //change in int value mValue = (new Float(txtColor.getText().trim())).floatValue(); if (((mValue <0.0f) || (mValue > 1f)))JOptionPane.showMessageDialog(null,"Please insert value 0.000 - 1.00 in field gray value"); else { //insert new PresentationStateGraphicLayer with monochrome color if (!edit) { screenImageHandler.presentationStateGraphicsHandler.insertNewMonochromeLayer(txtName.getText(),txtArea.getText(),mValue); screenImageHandler.presentationStateGraphicsHandler.setCurrentLayerIndex( screenImageHandler.presentationStateGraphicsHandler.listPresentationStateGraphicLayer.size()-1); setVisible(false); } else { //edit PresentationStateGraphicLayer if (!screenImageHandler.presentationStateGraphicsHandler.getCurrentLayer().setNewName(txtName.getText()))JOptionPane.showMessageDialog(null,"Layer name must be unique"); else { screenImageHandler.presentationStateGraphicsHandler.getCurrentLayer().setDescription(txtArea.getText()); screenImageHandler.presentationStateGraphicsHandler.getCurrentLayer().setFloatColorValue(mValue); screenImageHandler.buildImageBuffer(false,false, false,true, true); setVisible(false); } } } } catch(NumberFormatException t) { JOptionPane.showMessageDialog(null,"Please insert value 0.000 - 1.00 in field gray value"); } } //handle color PresentationStateGraphicLayer else { rValue = getIntValue(txtR.getText()); gValue = getIntValue(txtG.getText()); bValue = getIntValue(txtB.getText()); if ((rValue ==Integer.MAX_VALUE) ||(rValue >= 256)||(rValue < 0)) JOptionPane.showMessageDialog(null,"Please insert value 0 -255 in field r"); else if ((gValue ==Integer.MAX_VALUE) ||(gValue >= 256)||(gValue < 0)) JOptionPane.showMessageDialog(null,"Please insert value 0 -255 in field g"); else if ((bValue ==Integer.MAX_VALUE) ||(bValue >= 256)||(bValue < 0)) JOptionPane.showMessageDialog(null,"Please insert value 0 -255 in field b"); else { // insert new PresentationStateGraphicLayer if (!edit) { screenImageHandler.presentationStateGraphicsHandler.insertNewColorLayer( txtName.getText(), txtArea.getText(), (new Integer(txtR.getText())).intValue(), (new Integer(txtG.getText())).intValue(), (new Integer(txtB.getText())).intValue()); screenImageHandler.presentationStateGraphicsHandler.setCurrentLayerIndex( screenImageHandler.presentationStateGraphicsHandler.listPresentationStateGraphicLayer.size()-1); } //edit old PresentationStateGraphicLayer else { if (!screenImageHandler.presentationStateGraphicsHandler.getCurrentLayer().setNewName(txtName.getText()))JOptionPane.showMessageDialog(null,"Layer name must be unique"); else { screenImageHandler.presentationStateGraphicsHandler.getCurrentLayer().setDescription(txtArea.getText()); screenImageHandler.presentationStateGraphicsHandler.getCurrentLayer().setGraphicLayerRecommendedDisplayValueRGB(rValue, gValue, bValue); screenImageHandler.buildImageBuffer(false,false, false,true, true); } } } } } } /** * Convert a String to an int value. * * @param textValue Contains the String which should be converted to an int-value. * @since 30.04.1999 */ public int getIntValue(String textValue) { try { //Umwandelung der Eingabe in einen intWert return (new Integer(textValue.trim())).intValue(); } catch(NumberFormatException t) { System.out.println("Number Format Exception" + t); return Integer.MIN_VALUE; } } } /* * CVS Log * $Log: EditLayerPanel.java,v $ * Revision 1.1.1.1 2001/06/06 10:32:30 kleber * Init commit for DICOMscope 3.5 * Create new CVS * */ dicomscope-3.6.0/tkgui/viewer/gui/FunctionPanel.java0000644000265600020320000004470711262371101021617 0ustar tilleaadmin/* * * Copyright (C) 1999, Institute for MicroTherapy * * This software and supporting documentation were developed by * * University of Witten/Herdecke * Department of Radiology and MicroTherapy * Institute for MicroTherapy * Medical computer science * * Universitaetsstrasse 142 * 44799 Bochum, Germany * * http://www.microtherapy.de/go/cs * mailto:computer.science@microtherapy.de * * THIS SOFTWARE IS MADE AVAILABLE, AS IS, AND THE INSTITUTE MAKES NO * WARRANTY REGARDING THE SOFTWARE, ITS PERFORMANCE, ITS MERCHANTABILITY * OR FITNESS FOR ANY PARTICULAR USE, FREEDOM FROM ANY COMPUTER DISEASES * OR ITS CONFORMITY TO ANY SPECIFICATION. THE ENTIRE RISK AS TO QUALITY * AND PERFORMANCE OF THE SOFTWARE IS WITH THE USER. * * Author : $Author: kleber $ * Last update : $Date: 2001/06/06 10:32:30 $ * Revision : $Revision: 1.1.1.1 $ * State: $State: Exp $ */ package viewer.gui; import javax.swing.*; import javax.swing.border.*; import java.awt.*; import main.*; import java.util.*; /** * This class contains the GUI for the function panel * * @author Klaus Kleber * @since 20.08.1999 */ public class FunctionPanel extends JPanel { public String imagePanelOrientation ="None"; boolean integratedPaintFunctions = false; public JPanel paintPanel; JPanel processingPanel; JPanel psPanel; JPanel infoPanel; JPanel mainPanel ; JPanel radioPanel; boolean visiblePaint = true; boolean visiblePS = true; boolean visibleProcessing = true; boolean visibleInfo = true; boolean visibleTitledBorder = true; public int orientation = -1; public int paintPanelOrientation = BoxLayout.Y_AXIS; GuiComponents gui; /** * Constructor * * @param orientation */ public FunctionPanel() { gui = GuiComponents.getInstance(); } /** * Builds the panel vertical */ public void buildY() { removeAll(); GridBagConstraints gbc = new GridBagConstraints(); gbc.anchor = GridBagConstraints.NORTHWEST; setLayout(new BorderLayout()); mainPanel = new JPanel(); mainPanel.setLayout(new BoxLayout(mainPanel,BoxLayout.Y_AXIS)); ///////////////////////// // Paint ////////////////////////// if (visiblePaint&&integratedPaintFunctions) { paintPanel = new JPanel(); paintPanel.setLayout(new BoxLayout(paintPanel,BoxLayout.Y_AXIS)); //Shutter JPanel shutterPanel = new JPanel(); //shutterPanel.setLayout(new BoxLayout(shutterPanel,BoxLayout.X_AXIS)); TitledBorder tb = new TitledBorder("Shutter"); shutterPanel.setBorder(tb); shutterPanel.add(gui.rectShButton); shutterPanel.add(gui.circleShButton); shutterPanel.add(gui.polyShButton); shutterPanel.add(gui.bmpShButton); shutterPanel.add(gui.optShButton); paintPanel.add(shutterPanel); JPanel paintFkt = new JPanel(); paintFkt.setLayout(new BoxLayout(paintFkt,BoxLayout.Y_AXIS)); paintFkt.setBorder(new TitledBorder("Paint")); JPanel fFkt = new JPanel(); fFkt.add(gui.lineButton); fFkt.add(gui.rectButton); fFkt.add(gui.pointButton); fFkt.add(gui.circleButton); fFkt.add(gui.ellipseButton); paintFkt.add(fFkt); JPanel sFkt = new JPanel(); sFkt.add(gui.polyButton); sFkt.add(gui.textButton); sFkt.add(gui.interpolatedButton); sFkt.add(gui.editButton); sFkt.add(gui.editLayerButton); paintFkt.add(sFkt); JPanel p1 = new JPanel(); p1.add(gui.filledCheckBox); p1.add(gui.imageRelCheckBox); paintFkt.add(p1); JPanel p2 = new JPanel(); p2.add(new JLabel("Layer: ")); p2.add(gui.layerComboBox); paintFkt.add(p2); paintPanel.add(paintFkt); mainPanel.add(paintPanel); } else buildPaint(); ////////////////////////////// //Processing ///////////////////////////// if (visibleProcessing) { processingPanel = new JPanel(); processingPanel.setLayout(new BoxLayout(processingPanel,BoxLayout.Y_AXIS)); JPanel proPanel = new JPanel(); //proPanel.setLayout(new BoxLayout(proPanel,BoxLayout.X_AXIS)); proPanel.setBorder(new TitledBorder("Processing")); proPanel.add(gui.resetButton); proPanel.add(gui.flipButton); proPanel.add(gui.rotButton); proPanel.add(gui.invertButton); proPanel.add(gui.presentationLutButton); proPanel.add(gui.psButton); if (!MainContext.instance().highQualitySystem)proPanel.add(gui.lutButton); processingPanel.add(proPanel,gbc); //zoomPanel JPanel zoomPanel = new JPanel(); zoomPanel.setBorder(new TitledBorder("Zoom")); zoomPanel.setLayout(new GridBagLayout()); zoomPanel.add(gui.zoomButton,gbc); zoomPanel.add(Box.createHorizontalStrut(10),gbc); zoomPanel.add(gui.zoomFitButton,gbc); zoomPanel.add(Box.createHorizontalStrut(10),gbc); zoomPanel.add(gui.zoom1to1Button,gbc); zoomPanel.add(Box.createHorizontalStrut(10),gbc); zoomPanel.add(new JLabel(" Factor: "),gbc); zoomPanel.add(gui.zoomTextField,gbc); processingPanel.add(zoomPanel,gbc); //windowPanel JPanel wlPanel = new JPanel(); wlPanel.setBorder(new TitledBorder("Window Settings")); wlPanel.setLayout(new GridBagLayout()); wlPanel.add(gui.winInFrameButton,gbc); wlPanel.add(Box.createHorizontalStrut(10),gbc); wlPanel.add(gui.voiButton,gbc); wlPanel.add(Box.createHorizontalStrut(10),gbc); wlPanel.add(new JLabel("c: "),gbc); wlPanel.add(gui.centerTextField,gbc); wlPanel.add(Box.createHorizontalStrut(5),gbc); wlPanel.add(new JLabel("w: "),gbc); wlPanel.add(gui.windowTextField,gbc); processingPanel.add(wlPanel,gbc); mainPanel.add(processingPanel,gbc); radioPanel = new JPanel(); radioPanel.setBorder(new TitledBorder("Presentation Size Mode")); radioPanel.add(gui.scaleRadio); radioPanel.add(gui.magnifyRadio); radioPanel.add(gui.trueSizeRadio); mainPanel.add(radioPanel); } ////////////////////////////// //Presentation State ///////////////////////////// if (visiblePS) { psPanel = new JPanel(); psPanel.setLayout(new BoxLayout(psPanel,BoxLayout.Y_AXIS)); psPanel.setBorder(new TitledBorder("Presentation State")); JPanel namePanel = new JPanel(); namePanel.setLayout(new GridBagLayout()); gbc.weightx = 0.0; gbc.gridwidth = 1; namePanel.add(new JLabel("Label"),gbc); //namePanel.add(Box.createHorizontalStrut(10),gbc); gbc.fill = GridBagConstraints.BOTH; gbc.gridwidth = GridBagConstraints.REMAINDER; gbc.weightx = 1.0; namePanel.add(gui.nameTextField,gbc); // row 2 gbc.fill = GridBagConstraints.NONE; gbc.weightx = 0.0; gbc.gridwidth = 1; namePanel.add(new JLabel("Creator"),gbc); gbc.fill = GridBagConstraints.BOTH; gbc.gridwidth = GridBagConstraints.REMAINDER; gbc.weightx = 1.0; namePanel.add(gui.creatorTextField,gbc); psPanel.add(namePanel); /* JPanel descrPanel = new JPanel(new BorderLayout()); descrPanel.add(new JLabel("Description"), BorderLayout.WEST); descrPanel.add(gui.descrTextArea, BorderLayout.CENTER); psPanel.add(descrPanel); */ mainPanel.add(psPanel); } /////////////////////////////# //Rado //////////////////////////////////////////// add(mainPanel, BorderLayout.NORTH); if(visibleInfo) { JPanel infoPanel = new JPanel(new BorderLayout()); infoPanel.setBorder(new TitledBorder("Information")); gui.infoTextArea.setRows(10); infoPanel.add(new JScrollBar(JScrollBar.HORIZONTAL).add(gui.infoTextArea),BorderLayout.CENTER); add(infoPanel, BorderLayout.CENTER); } } /** * Builds the panel horizontal */ public void buildX() { GridBagConstraints gbc = new GridBagConstraints(); gbc.anchor = GridBagConstraints.NORTHWEST; removeAll(); mainPanel = new JPanel(); mainPanel.setLayout(new BoxLayout(mainPanel,BoxLayout.Y_AXIS)); buildPaint(); ////////////////////////////// //Processing ///////////////////////////// if(visibleProcessing) { processingPanel = new JPanel(); processingPanel.setLayout(new BoxLayout(processingPanel,BoxLayout.X_AXIS)); JPanel proPanel = new JPanel(); if (visibleTitledBorder) proPanel.setBorder(new TitledBorder("Processing")); proPanel.add(gui.resetButton); proPanel.add(gui.flipButton); proPanel.add(gui.invertButton); proPanel.add(gui.rotButton); proPanel.add(gui.presentationLutButton); proPanel.add(gui.psButton); if (!MainContext.instance().highQualitySystem)proPanel.add(gui.lutButton); processingPanel.add(proPanel); JPanel zoomPanel = new JPanel(); if (visibleTitledBorder) zoomPanel.setBorder(new TitledBorder("Zoom")); zoomPanel.add(gui.zoomButton); zoomPanel.add(gui.zoomFitButton); zoomPanel.add(gui.zoom1to1Button); zoomPanel.add(new JLabel(" Factor: ")); zoomPanel.add(gui.zoomTextField); processingPanel.add(zoomPanel); //windowPanel JPanel wlPanel = new JPanel(); if (visibleTitledBorder) wlPanel.setBorder(new TitledBorder("Window Settings")); wlPanel.add(gui.winInFrameButton); wlPanel.add(gui.voiButton); wlPanel.add(new JLabel("Center: ")); wlPanel.add(gui.centerTextField); wlPanel.add(new JLabel("Width: ")); wlPanel.add(gui.windowTextField); processingPanel.add(wlPanel); radioPanel = new JPanel(); if (visibleTitledBorder) radioPanel.setBorder(new TitledBorder("Presentation Size Mode")); radioPanel.add(gui.scaleRadio); radioPanel.add(gui.magnifyRadio); radioPanel.add(gui.trueSizeRadio); processingPanel.add(radioPanel); mainPanel.add(processingPanel,gbc); } ////////////////////////////// //Presentation State ///////////////////////////// if (visiblePS) { psPanel = new JPanel(); psPanel.setLayout(new BoxLayout(psPanel,BoxLayout.X_AXIS)); if (visibleTitledBorder) psPanel.setBorder(new TitledBorder("Presentation State")); JPanel namePanel = new JPanel(); namePanel.setLayout(new GridLayout(2,2)); namePanel.add(new JLabel("Label")); namePanel.add(gui.nameTextField); namePanel.add(new JLabel("Creator")); namePanel.add(gui.creatorTextField); psPanel.add(namePanel); add(gui.getSeperator()); JPanel descrPanel = new JPanel(new BorderLayout()); descrPanel.add(new JLabel(" PS Description"), BorderLayout.WEST); descrPanel.add(gui.descrTextArea, BorderLayout.CENTER); psPanel.add(descrPanel); mainPanel.add(psPanel); } add(mainPanel); } public void buildPaint() { ///////////////////////// // Paint ////////////////////////// if(visiblePaint) { //init paint JPanel paintFkt = new JPanel(); paintFkt.add(gui.lineButton); paintFkt.add(gui.rectButton); paintFkt.add(gui.pointButton); paintFkt.add(gui.circleButton); paintFkt.add(gui.ellipseButton); paintFkt.add(gui.polyButton); paintFkt.add(gui.textButton); paintFkt.add(gui.interpolatedButton); paintFkt.add(gui.editButton); paintFkt.add(gui.editLayerButton); if (!integratedPaintFunctions) { paintFkt.add(gui.selectLayerButton); paintFkt.add(gui.filledButton); paintFkt.add(gui.imageDisplayButton); } JPanel shutterPanel = new JPanel(); shutterPanel.add(gui.rectShButton); shutterPanel.add(gui.circleShButton); shutterPanel.add(gui.polyShButton); shutterPanel.add(gui.bmpShButton); shutterPanel.add(gui.optShButton); if (visibleTitledBorder) { paintFkt.setBorder(new TitledBorder("Paint")); shutterPanel.setBorder(new TitledBorder("Shutter")); } paintPanel = new JPanel(); if (integratedPaintFunctions) { paintFkt.add(gui.filledCheckBox); paintFkt.add(gui.getSeperator()); paintFkt.add(gui.imageRelCheckBox); paintFkt.add(gui.getSeperator()); paintFkt.add(new JLabel("Layer: ")); paintFkt.add(gui.layerComboBox); paintPanel.add(paintFkt); paintPanel.add(shutterPanel); paintPanel.setLayout(new BoxLayout(paintPanel,BoxLayout.X_AXIS)); mainPanel.add(paintPanel); } else { if (paintPanelOrientation == BoxLayout.X_AXIS)paintPanel.setLayout(new BoxLayout(paintPanel,BoxLayout.X_AXIS)); else { shutterPanel.setLayout(new BoxLayout(shutterPanel,BoxLayout.Y_AXIS)); paintFkt.setLayout(new BoxLayout(paintFkt,BoxLayout.Y_AXIS)); paintPanel.setLayout(new BoxLayout(paintPanel,BoxLayout.Y_AXIS)); } paintPanel.add(paintFkt); paintPanel.add(shutterPanel); } } } public void setConfiguration(Hashtable config, String orient) { imagePanelOrientation ="None"; if (config.containsKey("PSPanelOn")) { if(((Boolean)config.get("PSPanelOn")).booleanValue()) visiblePS = true; else visiblePS = false; } if (config.containsKey("ProcessingPanelOn")) { if(((Boolean)config.get("ProcessingPanelOn")).booleanValue()) visibleProcessing = true; else visibleProcessing = false; } if (config.containsKey("PaintPanelPlacement")) { String value = (String)config.get("PaintPanelPlacement"); if (value.equals("None") ) visiblePaint = false; else if (value.equals("Toolbar") ) visiblePaint = false; else { visiblePaint = true; if (value.equals("Integrated")||(value.equals(orient))) { integratedPaintFunctions = true; } else { integratedPaintFunctions = false; imagePanelOrientation = value; if (value.equals("West")||value.equals("East"))paintPanelOrientation = BoxLayout.Y_AXIS; else paintPanelOrientation = BoxLayout.X_AXIS; } } } if (orient.equals("West") ||orient.equals("East")) orientation =BoxLayout.Y_AXIS; else orientation =BoxLayout.X_AXIS; if (orientation == BoxLayout.X_AXIS) buildX(); else buildY(); this.orientation = orientation; } } /* * CVS Log * $Log: FunctionPanel.java,v $ * Revision 1.1.1.1 2001/06/06 10:32:30 kleber * Init commit for DICOMscope 3.5 * Create new CVS * */ dicomscope-3.6.0/tkgui/viewer/gui/ImageCanvas.java0000644000265600020320000000625711262371101021226 0ustar tilleaadmin/* * * Copyright (C) 1999, Institute for MicroTherapy * * This software and supporting documentation were developed by * * University of Witten/Herdecke * Department of Radiology and MicroTherapy * Institute for MicroTherapy * Medical computer science * * Universitaetsstrasse 142 * 44799 Bochum, Germany * * http://www.microtherapy.de/go/cs * mailto:computer.science@microtherapy.de * * THIS SOFTWARE IS MADE AVAILABLE, AS IS, AND THE INSTITUTE MAKES NO * WARRANTY REGARDING THE SOFTWARE, ITS PERFORMANCE, ITS MERCHANTABILITY * OR FITNESS FOR ANY PARTICULAR USE, FREEDOM FROM ANY COMPUTER DISEASES * OR ITS CONFORMITY TO ANY SPECIFICATION. THE ENTIRE RISK AS TO QUALITY * AND PERFORMANCE OF THE SOFTWARE IS WITH THE USER. * * Author : $Author: kleber $ * Last update : $Date: 2001/06/06 10:32:30 $ * Revision : $Revision: 1.1.1.1 $ * State: $State: Exp $ */ package viewer.gui; import java.awt.*; import viewer.main.*; import viewer.presentation.*; import javax.swing.*; /** * This class contains the GUI in which the image will be drawn. * * @author Klaus Kleber * @since 30.04.1999 */ public class ImageCanvas extends JPanel { /** * Contains the current ScreenImageHandler. * * @since 30.04.99 */ public ScreenImageHandler screenImageHandler; /** * Constructs an ImagaCanvas * * @param screenImageHandler Contains the current ScreenImageHandler * @since 30.04.99 */ public ImageCanvas(ScreenImageHandler screenImageHandler) { super(); this.screenImageHandler = screenImageHandler; setBackground(Color.black); screenImageHandler.setImageCanvas(this); setDoubleBuffered(false); //{{REGISTER_LISTENERS //}} } /** * Standard paint * * @param g graphic context * @since 30.04.99 */ /*public void paint(Graphics g) { update(g); }*/ /** * Draws the image on the GUI. * * @param g graphic context * @since 30.04.99 */ /* public void update(Graphics g) { Graphics2D g1 = null; //Erstellen des Graphic System.out.println("''''''''''ImageCanvas.update"); try { g1 = (Graphics2D) g; if (g1 != null) { g1.setColor(Color.black); screenImageHandler.drawScreenImage(g1); } } finally { g1.dispose() ; } } */ public void paintComponent(Graphics g) { Graphics2D g1 = null; //Erstellen des Graphic System.out.println("''''''''''ImageCanvas.update: " + getSize()); try { g1 = (Graphics2D) g; if (g1 != null) { g1.setColor(Color.black); screenImageHandler.drawScreenImage(g1); } } finally { g1.dispose() ; } } } /* * CVS Log * $Log: ImageCanvas.java,v $ * Revision 1.1.1.1 2001/06/06 10:32:30 kleber * Init commit for DICOMscope 3.5 * Create new CVS * */ dicomscope-3.6.0/tkgui/viewer/gui/JReferenceEditorPane.java0000644000265600020320000000310111262371101023014 0ustar tilleaadmin/* * * Copyright (C) 1999, Institute for MicroTherapy * * This software and supporting documentation were developed by * * University of Witten/Herdecke * Department of Radiology and MicroTherapy * Institute for MicroTherapy * Medical computer science * * Universitaetsstrasse 142 * 44799 Bochum, Germany * * http://www.microtherapy.de/go/cs * mailto:computer.science@microtherapy.de * * THIS SOFTWARE IS MADE AVAILABLE, AS IS, AND THE INSTITUTE MAKES NO * WARRANTY REGARDING THE SOFTWARE, ITS PERFORMANCE, ITS MERCHANTABILITY * OR FITNESS FOR ANY PARTICULAR USE, FREEDOM FROM ANY COMPUTER DISEASES * OR ITS CONFORMITY TO ANY SPECIFICATION. THE ENTIRE RISK AS TO QUALITY * AND PERFORMANCE OF THE SOFTWARE IS WITH THE USER. * * Author : $Author: kleber $ * Last update : $Date: 2001/06/06 10:32:30 $ * Revision : $Revision: 1.1.1.1 $ * State: $State: Exp $ */ package viewer.gui; import javax.swing.*; /** * This class extends the JEditorPane and makes the * scrollToReference() function available. You can use * function for HTML anchors, if the HTML code is contained in an * String and can't accessed by link. * @author Klaus Kleber * @since 20.08.1999 */ public class JReferenceEditorPane extends JEditorPane { public void scrollToReference(String reference) { super.scrollToReference(reference); } } /* * CVS Log * $Log: JReferenceEditorPane.java,v $ * Revision 1.1.1.1 2001/06/06 10:32:30 kleber * Init commit for DICOMscope 3.5 * Create new CVS * */ dicomscope-3.6.0/tkgui/viewer/gui/LayerJPanel.java0000644000265600020320000004527711262371101021223 0ustar tilleaadmin/* * * Copyright (C) 1999, Institute for MicroTherapy * * This software and supporting documentation were developed by * * University of Witten/Herdecke * Department of Radiology and MicroTherapy * Institute for MicroTherapy * Medical computer science * * Universitaetsstrasse 142 * 44799 Bochum, Germany * * http://www.microtherapy.de/go/cs * mailto:computer.science@microtherapy.de * * THIS SOFTWARE IS MADE AVAILABLE, AS IS, AND THE INSTITUTE MAKES NO * WARRANTY REGARDING THE SOFTWARE, ITS PERFORMANCE, ITS MERCHANTABILITY * OR FITNESS FOR ANY PARTICULAR USE, FREEDOM FROM ANY COMPUTER DISEASES * OR ITS CONFORMITY TO ANY SPECIFICATION. THE ENTIRE RISK AS TO QUALITY * AND PERFORMANCE OF THE SOFTWARE IS WITH THE USER. * * Author : $Author: kleber $ * Last update : $Date: 2001/06/06 10:32:30 $ * Revision : $Revision: 1.1.1.1 $ * State: $State: Exp $ */ package viewer.gui; import javax.swing.*; import javax.swing.border.*; import java.awt.*; import jToolkit.gui.*; import viewer.main.*; import main.*; import java.util.*; import viewer.presentation.*; import java.awt.event.*; /** * Contains the layer manager */ public class LayerJPanel extends JDialog implements CommandButtonListener { public static final int EDIT =0; public static final int DEL =1; public static final int NEW =2; public static final int MOVETO= 3; public static final int DELAN= 4; public static final int DEACTIVATE= 5; public static final int ACTIVATE= 6; public static final int CLOSE = 10; CommandJButton moveButton; CommandJButton delAnButton; CommandJButton editButton; CommandJButton delButton; CommandJButton newButton; CommandJButton closeButton; JComboBox layerCombo; JTextArea txtArea; DefaultListModel model; JComboBox moveToCombo; JList list; ScreenImageHandler screenImageHandler; LayerNameItemListener layerNameItemListener = new LayerNameItemListener(); /** * if true the deaktivate list will be visbile. * * @since 30.03.1999 */ public boolean deactiveAnnotationListisVisible = false; public LayerJPanel(ScreenImageHandler screenImageHandler, JFrame parent, Component relativeLocation) { super(parent, "Layer Manager" , true); setLocation(350,350); GridBagLayout gbl = new GridBagLayout(); GridBagConstraints gbc = new GridBagConstraints(); this.screenImageHandler = screenImageHandler; //setLayout(new BoxLayout(this,BoxLayout.Y_AXIS)); getContentPane().setLayout(new BorderLayout(5,5)); // row 1 JPanel layerPanel = new JPanel(); layerPanel.setBorder(new TitledBorder("Layer Settings")); layerPanel.setLayout(gbl); gbc.anchor = GridBagConstraints.NORTHWEST; layerPanel.add(new JLabel("Graphic Layer")); layerPanel.add(Box.createHorizontalStrut(10),gbc); layerCombo= new JComboBox(); layerCombo.addItemListener(layerNameItemListener); gbc.fill = GridBagConstraints.BOTH; gbc.gridwidth = GridBagConstraints.REMAINDER; gbc.weightx = 1.0; layerPanel.add(layerCombo,gbc); // row 2 gbc.fill = GridBagConstraints.NONE; gbc.weightx = 0.0; layerPanel.add(Box.createVerticalStrut(3),gbc); gbc.gridwidth = 1; layerPanel.add(new JLabel("Description"),gbc); layerPanel.add(Box.createHorizontalStrut(10),gbc); gbc.gridwidth = GridBagConstraints.REMAINDER; gbc.weightx = 1.0; txtArea = new JTextArea(10,20); txtArea.setEditable(false); gbc.fill = GridBagConstraints.BOTH; //txtArea.setRows(10); JScrollPane sp = new JScrollPane(txtArea,ScrollPaneConstants.VERTICAL_SCROLLBAR_AS_NEEDED,ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER); layerPanel.add(sp,gbc); //row 3 gbc.fill = GridBagConstraints.NONE; gbc.weightx = 0.0; layerPanel.add(Box.createVerticalStrut(3),gbc); gbc.gridwidth = 1; layerPanel.add(new JLabel(""),gbc); JPanel buttonPanel = new JPanel(); editButton = new CommandJButton( "Edit",null,this,EDIT); delButton = new CommandJButton( "Del",null,this,DEL); newButton = new CommandJButton( "New",null,this,NEW); buttonPanel.add(editButton); buttonPanel.add(newButton); buttonPanel.add(delButton); gbc.weightx = 1.0; layerPanel.add(Box.createVerticalStrut(3),gbc); gbc.fill = GridBagConstraints.BOTH; layerPanel.add(buttonPanel,gbc); //add getContentPane().add(layerPanel,BorderLayout.NORTH); //Annotation JPanel annPanel = new JPanel(new BorderLayout(5,5)); annPanel.setBorder(new TitledBorder("Annotation")); layerPanel.setLayout(gbl); //Object[] o = {"Klaus","Heiz"}; model = new DefaultListModel(); list = new JList(model); JScrollPane spList = new JScrollPane(list); list.setVisibleRowCount(10); list.setSelectionMode(ListSelectionModel.SINGLE_SELECTION ); annPanel.add(spList,BorderLayout.CENTER); moveButton = new CommandJButton( "Move to",null,this,MOVETO); delAnButton = new CommandJButton( "Del",null,this,DELAN); JPanel downPanel = new JPanel(new GridBagLayout()); GridBagConstraints gbcPanel = new GridBagConstraints(); gbcPanel.anchor = GridBagConstraints.NORTHWEST; downPanel.add(delAnButton,gbcPanel); gbcPanel.weightx = 0.0; downPanel.add(moveButton,gbcPanel); gbcPanel.gridwidth = GridBagConstraints.REMAINDER; gbcPanel.weightx = 1.0; gbcPanel.fill = GridBagConstraints.BOTH; moveToCombo= new JComboBox(); downPanel.add(moveToCombo,gbcPanel); annPanel.add(downPanel,BorderLayout.SOUTH); getContentPane().add(annPanel,BorderLayout.CENTER); closeButton = new CommandJButton( "Close",null,this,CLOSE); JPanel closePanel = new JPanel(); closePanel.add(closeButton); getContentPane().add(closePanel,BorderLayout.SOUTH); pack(); setValue(); } public void buttonClicked (int ID) { if (ID == CLOSE) { setVisible(false); dispose(); return; } if (ID == DEL) { if ((layerCombo.getSelectedIndex()>=0)&&((layerCombo.getSelectedIndex()!=screenImageHandler.presentationStateGraphicsHandler.getListPresentationStateGraphicLayer().size()))) { screenImageHandler.presentationStateGraphicsHandler.deleteLayer(layerCombo.getSelectedIndex()); screenImageHandler.buildImageBuffer(false,false,false,true, true); Controller.instance().fireNotification(new SendLayerEvent(this,screenImageHandler.getLayers(),screenImageHandler.presentationStateGraphicsHandler.getCurrentLayerIndex())); setValue(); } return; } if (ID == DELAN) { System.out.println("Delete"); if ((list.getSelectedIndex()>=0)&&(list.getSelectedIndex() < screenImageHandler.presentationStateGraphicsHandler.getPresentationStateGraphicLayer(layerCombo.getSelectedIndex()).listPresentationStateObject.size())) { screenImageHandler.presentationStateGraphicsHandler.getPresentationStateGraphicLayer(layerCombo.getSelectedIndex()).deleteObjectAt(list.getSelectedIndex()); screenImageHandler.buildImageBuffer(false,false,false,true, true); setValue(); } //deletes overlay else { if ((list.getSelectedIndex()>=0)|| !deactiveAnnotationListisVisible) { int index = list.getSelectedIndex()- screenImageHandler.presentationStateGraphicsHandler.getCurrentLayer().listPresentationStateObject.size(); screenImageHandler.presentationStateGraphicsHandler.ps.deactivateOverlay(layerCombo.getSelectedIndex(),index); screenImageHandler.buildImageBuffer(false,false,false,true, true); setValue(); } } } if (ID == EDIT) { if ((layerCombo.getSelectedIndex()>=0)&&((layerCombo.getSelectedIndex()!=screenImageHandler.presentationStateGraphicsHandler.getListPresentationStateGraphicLayer().size()))) { (new EditLayerPanel(this, screenImageHandler ,true)).show(); Controller.instance().fireNotification(new SendLayerEvent(this,screenImageHandler.getLayers(),screenImageHandler.presentationStateGraphicsHandler.getCurrentLayerIndex())); setValue(); } } if (ID == NEW) { (new EditLayerPanel(this,screenImageHandler ,false)).show(); Controller.instance().fireNotification(new SendLayerEvent(this,screenImageHandler.getLayers(),screenImageHandler.presentationStateGraphicsHandler.getCurrentLayerIndex())); setValue(); } if (ID == MOVETO) { moveLayer(); } } /* * Updates the content of this panel. * * @since 30.03.1999 */ public void setValue() { Vector listGraphicLayer = screenImageHandler.presentationStateGraphicsHandler.getListPresentationStateGraphicLayer(); PresentationStateGraphicLayer nextLayer = null; int nextLayerIndex = -1; model.removeAllElements(); layerCombo.removeItemListener(layerNameItemListener); if (layerCombo.getItemCount() > 0)layerCombo.removeAllItems(); if (moveToCombo.getItemCount() > 0)moveToCombo.removeAllItems(); //if a presentation state is available then fill the widgets if (screenImageHandler.presentationStateGraphicsHandler.havePresentationState) { //fill the layerNameChoice and the moveToChoce with the GraphicLayers of the presentation state for (int i = 0; i < listGraphicLayer.size(); i++) { nextLayer = (PresentationStateGraphicLayer) (listGraphicLayer.elementAt(i)); layerCombo.addItem(new String(i + " " +nextLayer.getName())); moveToCombo.addItem(new String(i + " " +nextLayer.getName())); } //Adds an abstract layer in the layerNameChoice which contains the deactive layers if (screenImageHandler.presentationStateGraphicsHandler.overlayList.haveOverlays()) layerCombo.addItem(new String("inactive")); //if there is no current layer active then activate the first layer if (screenImageHandler.presentationStateGraphicsHandler.getCurrentLayerIndex() == -1) screenImageHandler.presentationStateGraphicsHandler.setCurrentLayerIndex(nextLayerIndex); //Fill the Annotation list if (listGraphicLayer.size() != 0) { if (!deactiveAnnotationListisVisible) { layerCombo.setSelectedIndex(screenImageHandler.presentationStateGraphicsHandler.getCurrentLayerIndex()); txtArea.setText(screenImageHandler.presentationStateGraphicsHandler.getCurrentLayer().getDescription()); for (int i = 0 ; i < screenImageHandler.presentationStateGraphicsHandler.getCurrentLayer().listPresentationStateObject.size(); i++) { model.addElement(((PresentationStateLayerObject) screenImageHandler.presentationStateGraphicsHandler.getCurrentLayer().listPresentationStateObject.elementAt(i)).getListText()); } for (int i = 0; i < screenImageHandler.presentationStateGraphicsHandler.ps.getNumberOfActiveOverlays(screenImageHandler.presentationStateGraphicsHandler.getCurrentLayerIndex()); i++) { model.addElement(screenImageHandler.presentationStateGraphicsHandler.overlayList.getListText(screenImageHandler.presentationStateGraphicsHandler.getCurrentLayerIndex(),i)); } } else { layerCombo.setSelectedIndex(listGraphicLayer.size()); txtArea.setText("inactive overlays"); for (int i = 0; i < screenImageHandler.presentationStateGraphicsHandler.ps.getNumberOfOverlaysInImage(); i++) { if (screenImageHandler.presentationStateGraphicsHandler.ps.getOverlayInImageActivationLayer(i) == -1) model.addElement(screenImageHandler.presentationStateGraphicsHandler.overlayList.getImageListText(i)); } for (int i = 0; i < screenImageHandler.presentationStateGraphicsHandler.ps.getNumberOfOverlaysInPresentationState(); i++) { if (screenImageHandler.presentationStateGraphicsHandler.ps.getOverlayInPresentationStateActivationLayer(i) == -1) model.addElement(screenImageHandler.presentationStateGraphicsHandler.overlayList.getPresentationStateListText(i)); } } } list.setSelectedIndex(screenImageHandler.presentationStateGraphicsHandler.getCurrentLayerObjectIndex()); } else this.setEnabled(false); layerCombo.addItemListener(layerNameItemListener); } class LayerNameItemListener implements ItemListener { public void itemStateChanged(ItemEvent e) { changeLayer( e); } } public void changeLayer(ItemEvent e) { if (layerCombo.getItemCount() >0) { //if selecteds item is a layer if (layerCombo.getSelectedIndex() != screenImageHandler.presentationStateGraphicsHandler.listPresentationStateGraphicLayer.size()) { deactiveAnnotationListisVisible = false; screenImageHandler.presentationStateGraphicsHandler.setCurrentLayerIndex(layerCombo.getSelectedIndex()); setValue(); } //if selected Item is the deactive List else { deactiveAnnotationListisVisible = true; setValue(); } } } public void moveLayer() { if ((moveToCombo.getSelectedIndex() >-1)&&(layerCombo.getSelectedIndex() >-1)&&(list.getSelectedIndex() >-1)) { if (moveToCombo.getSelectedIndex() 1 || ima.numberOfImages > 1) { if (!stackPanelOn) { main.add(stackFunctionPanel, BorderLayout.NORTH); stackPanelOn = true; } } else { if (stackPanelOn) { main.remove(stackFunctionPanel); stackPanelOn = false; } } } if (ima.type == ImageActionEvent.ACTION_SETNEW_SR) { setSRPanel(true); removeEditSR(); screenImageHandler.clear(); srViewPanel.setNewSR(); } if (ima.type == ImageActionEvent.ACTION_COMPOSITE_SR) { removeEditSR(); screenImageHandler.clear(); srViewPanel.setNewCompositeSR(); } return false; } return false; } public void setConfiguration(Hashtable config, boolean init) { String paintPanelPlacement=null; if (config.containsKey("PaintPanelPlacement")) paintPanelPlacement = (String)config.get("SeparateImagePanelPlacement"); if (!functionPanel.imagePanelOrientation.equals("None")) remove (functionPanel.paintPanel); if (config.containsKey("FunctionPanelPlacement")) { if (!init) { main.remove(functionPanel); } String orient = (String)config.get("FunctionPanelPlacement"); if (!orient.equals("None")) { functionPanel.setConfiguration(config,orient); if (orient.equals(BorderLayout.EAST)) { main.add(functionPanel,BorderLayout.EAST); } else add(functionPanel,orient); } if (!functionPanel.imagePanelOrientation.equals("None"))add(functionPanel.paintPanel,functionPanel.imagePanelOrientation); } //config.put("NavigationPanelOn", new Boolean(true)); /* if (config.containsKey("NavigationPanelOn")) { if (((Boolean)(config.get("NavigationPanelOn"))).booleanValue()) { if (!stackPanelOn) { main.add(stackFunctionPanel, BorderLayout.NORTH); stackPanelOn = true; } } else { if (stackPanelOn) { main.remove(stackFunctionPanel); stackPanelOn = false; } } } */ updateUI(); } public class ScrollListener implements AdjustmentListener { public void adjustmentValueChanged(AdjustmentEvent e) { JScrollBar sb = (JScrollBar)e.getSource(); if (sb.getName().equals("width"))screenImageHandler.setNewImagePartWidth(e.getValue()); else screenImageHandler.setNewImagePartHeight(e.getValue()); } } public static void setEnabled(boolean flag, Container container) { if (container!= null) { container.setEnabled(flag); int count = container.getComponentCount(); for (int i = 0; i < count ; i++) { Component c = container.getComponent(i); if (c instanceof Container) setEnabled(flag, (Container) c); else c.setEnabled(flag); } } } public void enabledImageView(boolean flag) { setEnabled(flag, functionPanel); setEnabled(flag, stackFunctionPanel); setEnabled(flag, scroll); } public void addEditSR(boolean hackerMode) { if (splitPane.getRightComponent() != srEditPanel) { int dividerLocation = splitPane.getDividerLocation(); splitPane.remove(splitPane.getRightComponent()); splitPane.setRightComponent(srEditPanel); splitPane.setDividerLocation(dividerLocation); srEditPanel.update(hackerMode); } } public void editSRClose() { removeEditSR(); srViewPanel.setChangedSR(); } public void removeEditSR() { if (splitPane.getRightComponent() == srEditPanel) { int dividerLocation = splitPane.getDividerLocation(); splitPane.remove(srEditPanel); splitPane.setRightComponent(srViewPanel); splitPane.setDividerLocation(dividerLocation); } } public void setSRPanel (boolean enabled) { if (enabled) { if(srPanelOn)return; else { remove(main); splitPane.setLeftComponent(main); add(splitPane, BorderLayout.CENTER); splitPane.setRightComponent(srViewPanel); int width = parent.getSize().width; splitPane.setDividerLocation(width/2); } } else { if (!srPanelOn) return; else { splitPane.remove(main); remove(splitPane); add(main, BorderLayout.CENTER); } } updateUI(); } } /* * CVS Log * $Log: MainImageViewerPanel.java,v $ * Revision 1.1.1.1 2001/06/06 10:32:30 kleber * Init commit for DICOMscope 3.5 * Create new CVS * */ dicomscope-3.6.0/tkgui/viewer/gui/SignatureOverview.java0000644000265600020320000003477011262371101022541 0ustar tilleaadmin/* * * Copyright (C) 1999, Institute for MicroTherapy * * This software and supporting documentation were developed by * * University of Witten/Herdecke * Department of Radiology and MicroTherapy * Institute for MicroTherapy * Medical computer science * * Universitaetsstrasse 142 * 44799 Bochum, Germany * * http://www.microtherapy.de/go/cs * mailto:computer.science@microtherapy.de * * THIS SOFTWARE IS MADE AVAILABLE, AS IS, AND THE INSTITUTE MAKES NO * WARRANTY REGARDING THE SOFTWARE, ITS PERFORMANCE, ITS MERCHANTABILITY * OR FITNESS FOR ANY PARTICULAR USE, FREEDOM FROM ANY COMPUTER DISEASES * OR ITS CONFORMITY TO ANY SPECIFICATION. THE ENTIRE RISK AS TO QUALITY * AND PERFORMANCE OF THE SOFTWARE IS WITH THE USER. * * Author : $Author: kleber $ * Last update : $Date: 2001/06/06 10:32:30 $ * Revision : $Revision: 1.1.1.1 $ * State: $State: Exp $ */ package viewer.gui; import javax.swing.*; import java.awt.*; import javax.swing.border.*; import java.util.*; import javax.swing.text.*; import javax.swing.text.html.*; import java.net.*; import jToolkit.io.IconRetriever; import J2Ci.*; /** * Contains the GUI for the status line. * The is context sensitve. For each DSComponentType * There is a seperate view. */ public class SignatureOverview extends JDialog { private JTabbedPane tab = new JTabbedPane(); private jDVInterface dvi; private int numberOfValidPSSignatures; private int numberOfUntrustedPSSignatures; private int numberOfInvalidPSSignatures; private int numberOfValidImageSignatures; private int numberOfUntrustedImageSignatures; private int numberOfInvalidImageSignatures; private int numberOfValidSRSignatures; private int numberOfUntrustedSRSignatures; private int numberOfInvalidSRSignatures; private InfoPanel imagePanel; private InfoPanel psPanel; private InfoPanel srPanel; private OverviewPanel overViewPanel; /** * Contains a virtual URL. If the JEditorPane * will be initialized with a String anchor in the * HTML side cannot be resolved. Futhermore there HyperlinksEvents * doesn't contain any URL. For this reason we set this ULR as base for * the HTMLDocument in the JEditorPane */ private String helpCodeBase = "file://help/text.html"; public SignatureOverview(jDVInterface dvi) { super(); setTitle("Signature Status"); setModal(true); this.dvi = dvi; setLocation(200,200); setSize(500,300); JPanel centerPanel = new JPanel (new BorderLayout()); centerPanel.setBorder(new EtchedBorder()); getContentPane().setLayout(new BorderLayout()); getContentPane().add(centerPanel, BorderLayout.CENTER); overViewPanel= new OverviewPanel(); imagePanel = new InfoPanel(jDVPSObjectType.DVPSS_image); psPanel = new InfoPanel(jDVPSObjectType.DVPSS_presentationState); srPanel = new InfoPanel(jDVPSObjectType.DVPSS_structuredReport); tab.add("Overview",overViewPanel); tab.add("Structured Report", srPanel); tab.add("Image",imagePanel); tab.add("Presentation State", psPanel); centerPanel.add(tab); JPanel buttonPanel = new JPanel(); JButton okButton = new JButton("OK"); okButton.setToolTipText("Close"); okButton.addActionListener(new CloseAction()); buttonPanel.add(okButton); getContentPane().add(buttonPanel, BorderLayout.SOUTH); setLocation(200,200); } public void setVisible(boolean flag, String type) { if (type.equals("Report"))tab.setSelectedComponent(srPanel); else tab.setSelectedComponent(overViewPanel); this.setVisible(flag); } public void setVisible(boolean flag) { if (flag) { imagePanel.updateHTML(); psPanel.updateHTML(); srPanel.updateHTML(); overViewPanel.updateValues(); } super.setVisible(flag); } /** * CloseAction */ public class CloseAction extends AbstractAction { public CloseAction() { super("Close"); } public void actionPerformed(java.awt.event.ActionEvent e) { setVisible(false); } } public class OverviewPanel extends JScrollPane { JLabel numberOfValidPSSignatureLabel = new JLabel(); JLabel numberOfUntrustedPSSignatureLabel= new JLabel(); JLabel numberOfInvalidPSSignatureLabel= new JLabel(); JLabel numberOfValidImageSignatureLabel= new JLabel(); JLabel numberOfUntrustedImageSignatureLabel= new JLabel(); JLabel numberOfInvalidImageSignatureLabel= new JLabel(); JLabel numberOfValidSRSignatureLabel= new JLabel(); JLabel numberOfUntrustedSRSignatureLabel= new JLabel(); JLabel numberOfInvalidSRSignatureLabel= new JLabel(); JLabel totalNumberOfValidSignatureLabel= new JLabel(); JLabel totalNumberOfUntrustedSignatureLabel= new JLabel(); JLabel totalNumberOfInvalidSignatureLabel= new JLabel(); int strutSize =5; public OverviewPanel() { super(); JPanel p = new JPanel(); p.setBackground(Color.white); GridBagLayout gbl = new GridBagLayout(); GridBagConstraints gbc = new GridBagConstraints(); p.setLayout(gbl); //First line : header gbc.anchor = GridBagConstraints.WEST; gbc.fill = GridBagConstraints.NONE; gbc.gridwidth = 1; gbc.weightx = 0; gbc.insets = new Insets(0,0,0,0); p.add(Box.createVerticalStrut(strutSize)); p.add(new JLabel(""), gbc); gbc.anchor = GridBagConstraints.CENTER; jToolkit.io.IconRetriever ir = new jToolkit.io.IconRetriever (); p.add(Box.createHorizontalStrut(strutSize)); p.add(new JLabel(ir.getIcon(main.MainContext.iconPath+"valid.gif")), gbc); p.add(Box.createHorizontalStrut(strutSize)); p.add(new JLabel(ir.getIcon(main.MainContext.iconPath+"untrusted.gif")), gbc); gbc.gridwidth = GridBagConstraints.REMAINDER; p.add(Box.createHorizontalStrut(strutSize)); p.add(new JLabel(ir.getIcon(main.MainContext.iconPath+"invalid.gif")), gbc); //Second line gbc.anchor = GridBagConstraints.WEST; gbc.fill = GridBagConstraints.NONE; gbc.gridwidth = 1; gbc.weightx = 0; gbc.insets = new Insets(0,0,0,0); p.add(Box.createVerticalStrut(strutSize)); JLabel nl = new JLabel("Structured Report: "); Font f = nl.getFont(); Font headerFont = new Font(f.getName(), f.BOLD+f.ITALIC, ( f.getSize()+(int)( f.getSize()*0.2f))); nl.setFont(headerFont); p.add(nl, gbc); gbc.anchor = GridBagConstraints.CENTER; p.add(Box.createHorizontalStrut(strutSize)); p.add(numberOfValidSRSignatureLabel, gbc); p.add(Box.createHorizontalStrut(strutSize)); p.add(numberOfUntrustedSRSignatureLabel, gbc); gbc.gridwidth = GridBagConstraints.REMAINDER; p.add(Box.createHorizontalStrut(strutSize)); p.add(numberOfInvalidSRSignatureLabel, gbc); p.add(Box.createVerticalStrut(strutSize)); //line 3: image gbc.anchor = GridBagConstraints.WEST; gbc.fill = GridBagConstraints.NONE; gbc.gridwidth = 1; gbc.weightx = 0; gbc.insets = new Insets(0,0,0,0); nl = new JLabel("Image: "); nl.setFont(headerFont); p.add(nl, gbc); gbc.anchor = GridBagConstraints.CENTER; p.add(Box.createHorizontalStrut(strutSize)); p.add(numberOfValidImageSignatureLabel, gbc); p.add(Box.createHorizontalStrut(strutSize)); p.add(numberOfUntrustedImageSignatureLabel, gbc); gbc.gridwidth = GridBagConstraints.REMAINDER; p.add(Box.createHorizontalStrut(strutSize)); p.add(numberOfInvalidImageSignatureLabel, gbc); p.add(Box.createVerticalStrut(strutSize)); gbc.anchor = GridBagConstraints.WEST; gbc.fill = GridBagConstraints.NONE; gbc.gridwidth = 1; gbc.weightx = 0; gbc.insets = new Insets(0,0,0,0); nl = new JLabel("Presentation State: "); nl.setFont(headerFont); p.add(nl, gbc); gbc.anchor = GridBagConstraints.CENTER; p.add(Box.createHorizontalStrut(strutSize)); p.add(numberOfValidPSSignatureLabel, gbc); p.add(Box.createHorizontalStrut(strutSize)); p.add(numberOfUntrustedPSSignatureLabel, gbc); gbc.gridwidth = GridBagConstraints.REMAINDER; p.add(Box.createHorizontalStrut(strutSize)); p.add(numberOfInvalidPSSignatureLabel, gbc); gbc.anchor= GridBagConstraints.NORTH; gbc.fill = GridBagConstraints.HORIZONTAL; gbc.insets = new Insets(0,0,10,0); p.add(new JSeparator(), gbc); p.add(Box.createVerticalStrut(strutSize)); gbc.anchor = GridBagConstraints.WEST; gbc.fill = GridBagConstraints.NONE; gbc.gridwidth = 1; gbc.weightx = 0; gbc.insets = new Insets(0,0,0,0); nl = new JLabel("Total: "); nl.setFont(headerFont); p.add(nl, gbc); gbc.anchor = GridBagConstraints.CENTER; p.add(Box.createHorizontalStrut(strutSize)); p.add(totalNumberOfValidSignatureLabel, gbc); p.add(Box.createHorizontalStrut(strutSize)); p.add(totalNumberOfUntrustedSignatureLabel, gbc); gbc.gridwidth = GridBagConstraints.REMAINDER; p.add(Box.createHorizontalStrut(strutSize)); p.add(totalNumberOfInvalidSignatureLabel, gbc); setViewportView(p); } public void updateValues() { int type; type = jDVPSObjectType.DVPSS_presentationState; int numberOfValidPSSignatures = dvi.getNumberOfCorrectSignatures(type); int numberOfUntrustedPSSignatures = dvi.getNumberOfUntrustworthySignatures(type); int numberOfInvalidPSSignatures= dvi.getNumberOfCorruptSignatures(type); numberOfValidPSSignatureLabel.setText(new Integer(numberOfValidPSSignatures).toString()); numberOfUntrustedPSSignatureLabel.setText(new Integer(numberOfUntrustedPSSignatures).toString()); numberOfInvalidPSSignatureLabel.setText(new Integer(numberOfInvalidPSSignatures).toString()); type = jDVPSObjectType.DVPSS_image; int numberOfValidImageSignatures= dvi.getNumberOfCorrectSignatures(type); int numberOfUntrustedImageSignatures= dvi.getNumberOfUntrustworthySignatures(type); int numberOfInvalidImageSignatures= dvi.getNumberOfCorruptSignatures(type); numberOfValidImageSignatureLabel.setText(new Integer(numberOfValidImageSignatures).toString()); numberOfUntrustedImageSignatureLabel.setText(new Integer(numberOfUntrustedImageSignatures).toString()); numberOfInvalidImageSignatureLabel.setText(new Integer(numberOfInvalidImageSignatures).toString()); type = jDVPSObjectType.DVPSS_structuredReport; int numberOfValidSRSignatures= dvi.getNumberOfCorrectSignatures(type); int numberOfUntrustedSRSignatures= dvi.getNumberOfUntrustworthySignatures(type); int numberOfInvalidSRSignatures = dvi.getNumberOfCorruptSignatures(type); numberOfValidSRSignatureLabel.setText(new Integer(numberOfValidSRSignatures).toString()); numberOfUntrustedSRSignatureLabel.setText(new Integer(numberOfUntrustedSRSignatures).toString()); numberOfInvalidSRSignatureLabel.setText(new Integer(numberOfInvalidSRSignatures).toString()); int totalNumberOfValidSignatures= numberOfValidPSSignatures+numberOfValidImageSignatures+numberOfValidSRSignatures; int totalNumberOfUntrustedSignatures=numberOfUntrustedPSSignatures+numberOfUntrustedImageSignatures+numberOfUntrustedSRSignatures; int totalNumberOfInvalidSignatures = numberOfInvalidPSSignatures+numberOfInvalidImageSignatures+numberOfInvalidSRSignatures; totalNumberOfValidSignatureLabel.setText(new Integer(totalNumberOfValidSignatures).toString()); totalNumberOfUntrustedSignatureLabel.setText(new Integer(totalNumberOfUntrustedSignatures).toString()); totalNumberOfInvalidSignatureLabel.setText(new Integer(totalNumberOfInvalidSignatures).toString()); repaint(); } } private class InfoPanel extends JScrollPane { int type; boolean overview; JReferenceEditorPane editorPane = new JReferenceEditorPane(); public InfoPanel() { this(-1, true); } public InfoPanel(int type) { this(type, false); } private InfoPanel(int type, boolean overview) { super(); this.type = type; this.overview = overview; HTMLEditorKit eKit; HTMLDocument doc ; //JEditorPane editorPane.setEditable(false); editorPane.setContentType("text/html"); editorPane.setEditable(false); eKit = new HTMLEditorKit(); editorPane.setEditorKit(eKit); setViewportView(editorPane); } public void updateHTML() { String s= ""; if (overview)s= dvi.getCurrentSignatureValidationOverview(); else s= dvi.getCurrentSignatureValidationHTML(type); editorPane.setText(s); } } } /* * CVS Log * $Log: SignatureOverview.java,v $ * Revision 1.1.1.1 2001/06/06 10:32:30 kleber * Init commit for DICOMscope 3.5 * Create new CVS * */ dicomscope-3.6.0/tkgui/viewer/gui/StackFunctionPanel.java0000644000265600020320000001153711262371101022600 0ustar tilleaadmin/* * * Copyright (C) 1999, Institute for MicroTherapy * * This software and supporting documentation were developed by * * University of Witten/Herdecke * Department of Radiology and MicroTherapy * Institute for MicroTherapy * Medical computer science * * Universitaetsstrasse 142 * 44799 Bochum, Germany * * http://www.microtherapy.de/go/cs * mailto:computer.science@microtherapy.de * * THIS SOFTWARE IS MADE AVAILABLE, AS IS, AND THE INSTITUTE MAKES NO * WARRANTY REGARDING THE SOFTWARE, ITS PERFORMANCE, ITS MERCHANTABILITY * OR FITNESS FOR ANY PARTICULAR USE, FREEDOM FROM ANY COMPUTER DISEASES * OR ITS CONFORMITY TO ANY SPECIFICATION. THE ENTIRE RISK AS TO QUALITY * AND PERFORMANCE OF THE SOFTWARE IS WITH THE USER. * * Author : $Author: kleber $ * Last update : $Date: 2001/06/06 10:32:30 $ * Revision : $Revision: 1.1.1.1 $ * State: $State: Exp $ */ package viewer.gui; import javax.swing.*; import javax.swing.border.*; import java.awt.*; import main.*; import java.util.*; /** * This class contains the GUI for the stack function panel * * @author Klaus Kleber * @since 20.08.1999 */ public class StackFunctionPanel extends JPanel { public static final int SINGLE_IMAGE_MODE = 0; public static final int MULIT_MODE = 1; public static final int MULIT_FRAME_MODE = 2; public static final int MULIT_IMAGE_MODE = 3; private JPanel mainPanel = new JPanel(); private int mode = 0; private GuiComponents gui; private JPanel framePanel = new JPanel(); private JPanel applyPanel = new JPanel(); private JPanel imagePanel = new JPanel(); /** * Constructor * * @param orientation */ public StackFunctionPanel() { gui = GuiComponents.getInstance(); setBorder(BorderFactory.createEtchedBorder()); setLayout(new BorderLayout()); mainPanel.setLayout(new BoxLayout(mainPanel,BoxLayout.X_AXIS)); add(mainPanel, BorderLayout.WEST); //setLayout(new FlowLayout(FlowLayout.LEFT)); imagePanel.setBorder(BorderFactory.createTitledBorder("Move in Image Stack")); imagePanel.setLayout(new BoxLayout(imagePanel,BoxLayout.X_AXIS)); imagePanel.add(gui.stackLastImageButton); imagePanel.add(gui.stackImageRightButton); imagePanel.add(gui.currentImageTextField); imagePanel.add(new JLabel(" out of ")); imagePanel.add(gui.maxImageTextField); imagePanel.add(gui.stackImageLeftButton); imagePanel.add(gui.stackFirstImageButton); framePanel.setBorder(BorderFactory.createTitledBorder("Move in Frame Stack")); framePanel.setLayout(new BoxLayout(framePanel,BoxLayout.X_AXIS)); framePanel.add(gui.stackLastFrameButton); framePanel.add(gui.stackFrameRightButton); framePanel.add(gui.currentFrameTextField); framePanel.add(new JLabel(" out of ")); framePanel.add(gui.maxFrameTextField); framePanel.add(gui.stackFrameLeftButton); framePanel.add(gui.stackFirstFrameButton); applyPanel.setBorder(BorderFactory.createTitledBorder("Apply Mode")); applyPanel.setLayout(new BoxLayout(applyPanel,BoxLayout.X_AXIS)); setMode(MULIT_MODE); } public void setMode(int newMode) { mainPanel.removeAll(); applyPanel.removeAll(); this.mode = newMode; switch(newMode) { case MULIT_MODE: mainPanel.add(imagePanel); mainPanel.add(framePanel); applyPanel.add(gui.applyFrameRadio); applyPanel.add(gui.applyImageRadio); applyPanel.add(gui.applyAllRadio); mainPanel.add(applyPanel); break; case MULIT_FRAME_MODE: mainPanel.add(framePanel); applyPanel.add(gui.applyFrameRadio); applyPanel.add(gui.applyAllRadio); mainPanel.add(applyPanel); break; case MULIT_IMAGE_MODE: mainPanel.add(imagePanel); applyPanel.add(gui.applyImageRadio); applyPanel.add(gui.applyAllRadio); mainPanel.add(applyPanel); break; } } public Dimension getMinimumSize() { return new Dimension (10,10); } //getPreferredSize() public void setConfiguration(Hashtable config, String orient) { } } /* * CVS Log * $Log: StackFunctionPanel.java,v $ * Revision 1.1.1.1 2001/06/06 10:32:30 kleber * Init commit for DICOMscope 3.5 * Create new CVS * */ dicomscope-3.6.0/tkgui/viewer/gui/TextAnnotationDialog.java0000644000265600020320000002105711262371101023142 0ustar tilleaadmin/* * * Copyright (C) 1999, Institute for MicroTherapy * * This software and supporting documentation were developed by * * University of Witten/Herdecke * Department of Radiology and MicroTherapy * Institute for MicroTherapy * Medical computer science * * Universitaetsstrasse 142 * 44799 Bochum, Germany * * http://www.microtherapy.de/go/cs * mailto:computer.science@microtherapy.de * * THIS SOFTWARE IS MADE AVAILABLE, AS IS, AND THE INSTITUTE MAKES NO * WARRANTY REGARDING THE SOFTWARE, ITS PERFORMANCE, ITS MERCHANTABILITY * OR FITNESS FOR ANY PARTICULAR USE, FREEDOM FROM ANY COMPUTER DISEASES * OR ITS CONFORMITY TO ANY SPECIFICATION. THE ENTIRE RISK AS TO QUALITY * AND PERFORMANCE OF THE SOFTWARE IS WITH THE USER. * * Author : $Author: kleber $ * Last update : $Date: 2001/06/06 10:32:30 $ * Revision : $Revision: 1.1.1.1 $ * State: $State: Exp $ */ package viewer.gui; import javax.swing.*; import javax.swing.*; import javax.swing.border.*; import java.awt.*; import jToolkit.gui.*; import viewer.main.*; import main.*; import java.util.*; import viewer.presentation.*; import java.awt.event.*; import J2Ci.*; import de.microtherapy.tools.text.document.general.*; /** * Contains GUI for creating textual annotations */ public class TextAnnotationDialog extends JDialog { JCheckBox anchorUnitCheckBox = new JCheckBox("Image Relative",true); JCheckBox boundingBoxUnitCheckBox = new JCheckBox("Image Relative",true); JCheckBox anchorVisibleCheckBox = new JCheckBox("Anchor Point Visible", true); JCheckBox boundingBox = new JCheckBox("Have Bounding Box",true); JCheckBox anchorBox = new JCheckBox("Have Anchor Point"); JTextArea textArea = new JTextArea(new LimitedSizeDocument(1024),null,80,5); JRadioButton rot0 = new JRadioButton("0 degree",true); JRadioButton rot90 = new JRadioButton("90 degree"); JRadioButton rot180 = new JRadioButton("180 degree"); JRadioButton rot270 = new JRadioButton("270 degree"); JButton okButton = new JButton("OK"); JButton cancelButton = new JButton("Cancel"); JRadioButton left = new JRadioButton("Left",true); JRadioButton right = new JRadioButton("Right"); JRadioButton center = new JRadioButton("Center"); boolean edit; ScreenImageHandler screenImageHandler; public TextAnnotationDialog(Frame parent, ScreenImageHandler screenImageHandler, boolean edit, PresentationStateTextObject textObject) { super(parent,true); this.edit = edit; setLocation(100,100); this.screenImageHandler = screenImageHandler; if (!edit)setTitle("Create Textual Annotation"); else setTitle("Edit Textual Annotation"); getContentPane().setLayout(new BorderLayout()); JPanel textPanel = new JPanel(new BorderLayout()); textPanel.setBorder(new TitledBorder("Text")); ScrollPane scroll = new ScrollPane(); scroll.add(textArea); textPanel.add(scroll,BorderLayout.CENTER); JPanel orientationPanel = new JPanel(); orientationPanel.add(new JLabel("Orientation")); ButtonGroup obg = new ButtonGroup(); obg.add(left); orientationPanel.add(left); obg.add(center); orientationPanel.add(center); obg.add(right); orientationPanel.add(right); textPanel.add(orientationPanel,BorderLayout.SOUTH); getContentPane().add(textPanel, BorderLayout.CENTER); JPanel settingPanel = new JPanel(); settingPanel.setLayout(new BoxLayout(settingPanel,BoxLayout.Y_AXIS)); JPanel boxPanel = new JPanel(new GridLayout(2,1)); boxPanel.setBorder(new TitledBorder("Bounding Box")); ButtonGroup bg = new ButtonGroup(); bg.add(rot0); bg.add(rot90); bg.add(rot180); bg.add(rot270); JPanel rotPanel = new JPanel(); rotPanel.add(new JLabel("Rotation: ")); rotPanel.add(rot0); rotPanel.add(rot90); rotPanel.add(rot180); rotPanel.add(rot270); boxPanel.add(rotPanel); JPanel anchorPanel = new JPanel(); anchorPanel.setBorder(new TitledBorder("Anchor Point")); anchorPanel.add(anchorBox); anchorPanel.add(anchorUnitCheckBox); anchorPanel.add(anchorVisibleCheckBox); if (!edit) { JPanel hPanel = new JPanel(); hPanel.add(boundingBox); hPanel.add(boundingBoxUnitCheckBox); boxPanel.add(hPanel); settingPanel.add(boxPanel); settingPanel.add(anchorPanel); } else { if (textObject.haveBoundingBox()) settingPanel.add(boxPanel); int rot = textObject.getRot(); if (rot == 1) rot90.setSelected(true); if (rot == 2) rot180.setSelected(true); if (rot == 3) rot270.setSelected(true); int just = textObject.getJust(); if (just == 2) center.setSelected(true); if (just == 1) right.setSelected(true); textArea.setText(textObject.getTextValue()); } JPanel buttonPanel = new JPanel(); buttonPanel.add(okButton); okButton.addActionListener(new OKAction()); buttonPanel.add(cancelButton); cancelButton.addActionListener(new CancelAction()); settingPanel.add(buttonPanel); getContentPane().add(settingPanel, BorderLayout.SOUTH); pack(); } public void insertText() { if (! boundingBox.isSelected() && !anchorBox.isSelected())JOptionPane.showMessageDialog(null,"Please select anchor point or bounding box"); else { if (textArea.getText().equals(""))JOptionPane.showMessageDialog(null,"Please insert text"); else { int just = jDVPSTextJustification.DVPSX_left; if (right.isSelected()) just = jDVPSTextJustification.DVPSX_right; if (center.isSelected()) just = jDVPSTextJustification.DVPSX_center; int rotation = 0; if (rot90.isSelected()) rotation = 1; if (rot180.isSelected()) rotation = 2; if (rot270.isSelected()) rotation = 3; screenImageHandler.setNewText(textArea.getText(), boundingBox.isSelected(), anchorBox.isSelected(), !anchorUnitCheckBox.isSelected(), !boundingBoxUnitCheckBox.isSelected(), anchorVisibleCheckBox.isSelected(), just, rotation); setVisible(false); } } } public void editText() { if (textArea.getText().equals(""))JOptionPane.showMessageDialog(null,"Please insert text"); else { int just = jDVPSTextJustification.DVPSX_left; if (right.isSelected()) just = jDVPSTextJustification.DVPSX_right; if (center.isSelected()) just = jDVPSTextJustification.DVPSX_center; int rotation = 0; if (rot90.isSelected()) rotation = 1; if (rot180.isSelected()) rotation = 2; if (rot270.isSelected()) rotation = 3; screenImageHandler.setNewTextValue(textArea.getText(), just, rotation); setVisible(false); } } class OKAction extends AbstractAction { public OKAction() { super(); } public void actionPerformed(ActionEvent e) { if (!edit) insertText(); else editText(); } } class CancelAction extends AbstractAction { public CancelAction() { super(); } public void actionPerformed(ActionEvent e) { setVisible(false); } } } /* * CVS Log * $Log: TextAnnotationDialog.java,v $ * Revision 1.1.1.1 2001/06/06 10:32:30 kleber * Init commit for DICOMscope 3.5 * Create new CVS * */ dicomscope-3.6.0/tkgui/viewer/gui/WindowingPreviewDialog.java0000644000265600020320000001570311262371101023473 0ustar tilleaadmin/* * * Copyright (C) 1999, Institute for MicroTherapy * * This software and supporting documentation were developed by * * University of Witten/Herdecke * Department of Radiology and MicroTherapy * Institute for MicroTherapy * Medical computer science * * Universitaetsstrasse 142 * 44799 Bochum, Germany * * http://www.microtherapy.de/go/cs * mailto:computer.science@microtherapy.de * * THIS SOFTWARE IS MADE AVAILABLE, AS IS, AND THE INSTITUTE MAKES NO * WARRANTY REGARDING THE SOFTWARE, ITS PERFORMANCE, ITS MERCHANTABILITY * OR FITNESS FOR ANY PARTICULAR USE, FREEDOM FROM ANY COMPUTER DISEASES * OR ITS CONFORMITY TO ANY SPECIFICATION. THE ENTIRE RISK AS TO QUALITY * AND PERFORMANCE OF THE SOFTWARE IS WITH THE USER. * * Author : $Author: kleber $ * Last update : $Date: 2001/06/06 10:32:30 $ * Revision : $Revision: 1.1.1.1 $ * State: $State: Exp $ */ package viewer.gui; import de.microtherapy.tools.text.document.general.*; import javax.swing.*; import java.awt.*; import java.awt.event.*; import jToolkit.gui.*; import viewer.main.*; import J2Ci.*; public class WindowingPreviewDialog extends JDialog implements CommandTextListener,MouseMotionListener, MouseListener { JButton okButton = new JButton("Ok"); JButton cancelButton = new JButton("Cancel"); JButton applyButton = new JButton("Apply"); WindowPreviewPanel previewPanel; CommandJTextField winTextField; CommandJTextField cenTextField; Point windowPoint; public static final int ID_WIN =0; public static final int ID_CEN = 1; double oldWin; double oldCen; double width; double center; public int previewHeight; public int previewWidth; ScreenImageHandler screenImageHandler; public jDVPresentationState ps; public WindowingPreviewDialog(Frame parent,ScreenImageHandler screenImageHandler) { super(parent,"Preview Window",true); this.screenImageHandler = screenImageHandler; this.setLocation(450,450); ps = screenImageHandler.presentationStateGraphicsHandler.ps; previewPanel = new WindowPreviewPanel(this); getContentPane().setLayout(new BorderLayout()); addMouseMotionListener(this); addMouseListener(this); jIntByRef pWidth = new jIntByRef(); jIntByRef pHeight = new jIntByRef(); ps.getPreviewImageWidthHeight(pWidth, pHeight); previewHeight = pHeight.value; previewWidth = pWidth.value; previewPanel.setPreferredSize(new Dimension(previewWidth, previewHeight)); getContentPane().add(previewPanel, BorderLayout.CENTER); JPanel buttonPanel = new JPanel(); buttonPanel.add(okButton); okButton.addActionListener(new OkAction()); buttonPanel.add(cancelButton); cancelButton.addActionListener(new CancelAction()); buttonPanel.add(applyButton); applyButton.addActionListener(new ApplyAction()); JPanel textPanel = new JPanel(); cenTextField = new CommandJTextField(5,this, ID_CEN); cenTextField.setDocument(new DoubleDocument()); textPanel.add(new JLabel("c: ")); textPanel.add(cenTextField); winTextField = new CommandJTextField(5,this,ID_WIN); winTextField.setDocument(new DoubleDocument()); textPanel.add(new JLabel("w: ")); textPanel.add(winTextField); JPanel downPanel = new JPanel(new GridLayout(2,1)); downPanel.add(textPanel); downPanel.add(buttonPanel); set(); getContentPane().add(downPanel, BorderLayout.SOUTH); pack(); } public void setText (int ID, String text) { if ((cenTextField.getText()==null)||(cenTextField.getText().equals(""))) cenTextField.setText("0"); if ((winTextField.getText()==null)||(winTextField.getText().equals(""))) winTextField.setText("1"); center = new Double(cenTextField.getText()).doubleValue(); width = new Double(winTextField.getText()).doubleValue(); screenImageHandler.setNewWindow( center,width,false ); set(); repaint(); } public void apply() { screenImageHandler.setNewWindow( new Double(cenTextField.getText()).doubleValue(),new Double(winTextField.getText()).doubleValue(),true ); set(); } public void set() { jDoubleByRef oWin = new jDoubleByRef(); jDoubleByRef oCen = new jDoubleByRef(); ps.getCurrentWindowCenter(oCen); ps.getCurrentWindowWidth(oWin); oldWin = oWin.value; oldCen = oCen.value; if ( new Double(oldWin).doubleValue() != -1d) { winTextField.setText(new Double(oldWin).toString()); cenTextField.setText(new Double(oldCen).toString()); } else { winTextField.setText(""); cenTextField.setText(""); } } class CancelAction extends AbstractAction { public CancelAction() { super(); } public void actionPerformed(ActionEvent e) { ps.setVOIWindow(oldCen, oldWin, "", screenImageHandler.getApplyTo()); setVisible(false); } } class OkAction extends AbstractAction { public OkAction() { super(); } public void actionPerformed(ActionEvent e) { setVisible(false); apply(); } } class ApplyAction extends AbstractAction { public ApplyAction() { super(); } public void actionPerformed(ActionEvent e) { apply(); } } /** * Handles the MouseEvent in the same way as the mouseMove action. * * @param e MouseEvent * @since 30.04.1999 */ public void mouseDragged(MouseEvent e) { if ((e.getModifiers() & InputEvent.BUTTON3_MASK) ==InputEvent.BUTTON3_MASK) { if(windowPoint != null) { screenImageHandler.setNewWindow(windowPoint, e.getPoint(),false); repaint(); } windowPoint = e.getPoint(); set(); } //mouseMoved(e); } public void mouseMoved(MouseEvent e) { } public void mouseClicked(MouseEvent e){} public void mouseEntered(MouseEvent e){} public void mouseExited(MouseEvent e){} public void mousePressed(MouseEvent e){windowPoint = e.getPoint();} public void mouseReleased(MouseEvent e){windowPoint = null;} } /* * CVS Log * $Log: WindowingPreviewDialog.java,v $ * Revision 1.1.1.1 2001/06/06 10:32:30 kleber * Init commit for DICOMscope 3.5 * Create new CVS * */ dicomscope-3.6.0/tkgui/viewer/gui/WindowPreviewPanel.java0000644000265600020320000000670211262371101022634 0ustar tilleaadmin/* * * Copyright (C) 1999, Institute for MicroTherapy * * This software and supporting documentation were developed by * * University of Witten/Herdecke * Department of Radiology and MicroTherapy * Institute for MicroTherapy * Medical computer science * * Universitaetsstrasse 142 * 44799 Bochum, Germany * * http://www.microtherapy.de/go/cs * mailto:computer.science@microtherapy.de * * THIS SOFTWARE IS MADE AVAILABLE, AS IS, AND THE INSTITUTE MAKES NO * WARRANTY REGARDING THE SOFTWARE, ITS PERFORMANCE, ITS MERCHANTABILITY * OR FITNESS FOR ANY PARTICULAR USE, FREEDOM FROM ANY COMPUTER DISEASES * OR ITS CONFORMITY TO ANY SPECIFICATION. THE ENTIRE RISK AS TO QUALITY * AND PERFORMANCE OF THE SOFTWARE IS WITH THE USER. * * Author : $Author: kleber $ * Last update : $Date: 2001/06/06 10:32:30 $ * Revision : $Revision: 1.1.1.1 $ * State: $State: Exp $ */ package viewer.gui; import javax.swing.*; import java.awt.*; import java.awt.event.*; import jToolkit.gui.*; import viewer.main.*; import J2Ci.*; import java.awt.geom.*; import java.util.*; import java.awt.*; import java.awt.image.*; import main.*; /** * This class contains the preview image changing th window-level settings * on a preview image. */ public class WindowPreviewPanel extends JPanel { DataBufferByte dbb; WindowingPreviewDialog windowingPreviewDialog; BufferedImage previewImage; public WindowPreviewPanel(WindowingPreviewDialog windowingPreviewDialog) { super(); this.windowingPreviewDialog = windowingPreviewDialog; } public void paintComponent(Graphics g) { if (g != null) { Graphics2D g2 = (Graphics2D)g; WritableRaster wr ; int bandOffsets[] = {0}; if (dbb == null) { dbb = new DataBufferByte(new byte[windowingPreviewDialog.previewWidth*windowingPreviewDialog.previewHeight], windowingPreviewDialog.previewWidth*windowingPreviewDialog.previewHeight); } System.out.println(" dbb.getSize() "+ dbb.getSize()); int status = windowingPreviewDialog.ps.getPreviewImageBitmap(dbb.getData(), (long) dbb.getSize()); if (status != jE_Condition.EC_Normal) System.out.println("Fehler bei ps.getPreviewImageBitmap " + status); else { //Create new Image wr = Raster.createInterleavedRaster(dbb, windowingPreviewDialog.previewWidth, windowingPreviewDialog.previewHeight, windowingPreviewDialog.previewWidth, 1, bandOffsets,null); previewImage = new BufferedImage(MainContext.instance().getIndexColorModel(), wr, MainContext.instance().getIndexColorModel().isAlphaPremultiplied(), null); int h = (this.getSize().height-windowingPreviewDialog.previewHeight)/2; int w = (this.getSize().width-windowingPreviewDialog.previewWidth)/2; g2.drawImage(previewImage,w,h, this); } } } } /* * CVS Log * $Log: WindowPreviewPanel.java,v $ * Revision 1.1.1.1 2001/06/06 10:32:30 kleber * Init commit for DICOMscope 3.5 * Create new CVS * */ dicomscope-3.6.0/tkgui/viewer/main/0002755000265600020320000000000011262371101016335 5ustar tilleaadmindicomscope-3.6.0/tkgui/viewer/main/ScreenImageHandler.java0000644000265600020320000033372611262371101022674 0ustar tilleaadmin/* * * Copyright (C) 1999, Institute for MicroTherapy * * This software and supporting documentation were developed by * * University of Witten/Herdecke * Department of Radiology and MicroTherapy * Institute for MicroTherapy * Medical computer science * * Universitaetsstrasse 142 * 44799 Bochum, Germany * * http://www.microtherapy.de/go/cs * mailto:computer.science@microtherapy.de * * THIS SOFTWARE IS MADE AVAILABLE, AS IS, AND THE INSTITUTE MAKES NO * WARRANTY REGARDING THE SOFTWARE, ITS PERFORMANCE, ITS MERCHANTABILITY * OR FITNESS FOR ANY PARTICULAR USE, FREEDOM FROM ANY COMPUTER DISEASES * OR ITS CONFORMITY TO ANY SPECIFICATION. THE ENTIRE RISK AS TO QUALITY * AND PERFORMANCE OF THE SOFTWARE IS WITH THE USER. * * Author : $Author: kleber $ * Last update : $Date: 2003/09/08 10:17:26 $ * Revision : $Revision: 1.2 $ * State: $State: Exp $ */ package viewer.main; import viewer.gui.*; import main.*; import viewer.controller.*; import viewer.paint.*; import viewer.presentation.*; import J2Ci.*; import java.awt.font.*; import java.awt.*; import java.awt.event.*; import java.awt.image.*; import java.awt.geom.*; import java.util.*; import javax.swing.*; import javax.swing.border.*; /** * This class manages the the image viewing and processing part of * DICOMScope. This class contains all important objects of the GUI * and the data level. *
* * @author Klaus Kleber * @since 30.04.1999 */ public class ScreenImageHandler implements MainListener { private int applyTo = jDVPSObjectApplicability.DVPSB_currentFrame; private Hashtable actionTable; boolean convertAnnotationScreenRelative = false; public StatusInformation statusInformation= new StatusInformation(); /** * Contains the current PresentationStateGraphicsHandler. * * @since 30.04.1999 */ public PresentationStateGraphicsHandler presentationStateGraphicsHandler; /** * Contains the current ImageCanvas. This is the image drawing part of the GUI. * * @since 30.04.1999 */ public ImageCanvas imageCanvas; public JPopupMenu popup; /** * Contains the main GUI object. * * @since 30.04.1999 */ public MainImageViewerPanel mainImageViewerPanel; /** * MouseListener and MouseMotionListener which handles the MouseEvents. * * @since 30.04.1999 */ public MouseHandleListener mouseHandleListener = null; private double scaling= 3; /** * Object which transforms the visible part of the image to device space * * @since 30.04.1999 */ public TransformationConverter transformationConverter; /** * Contains the visible part of the image in device space. * * @since 30.04.1999 */ BufferedImage bufferedScreenImage = null; /** * Contains the size of the display. * * @since 30.04.1999 */ Dimension screenSize; /** * Contains the current PaintStructure * * @since 30.04.1999 */ public PaintStructure paintStructure ; boolean clear = true; /** * Builds the screenImageHandler. * * @param mainImageViewerPanel Contains the main GUI object * @param presentationStateGraphicsHandler Contains the current ScreenImageHandler. * @since 30.04.1999 */ public ScreenImageHandler(MainImageViewerPanel mainImageViewerPanel, PresentationStateGraphicsHandler presentationStateGraphicsHandler, Hashtable config) { this.mainImageViewerPanel = mainImageViewerPanel; this.presentationStateGraphicsHandler= presentationStateGraphicsHandler; Controller.instance().addMainListener(this); //Builds the new image in User Space. screenSize = new Dimension(0,0); createActionTable(); setConfiguration(config, true); } /** * This function draws the visible part of the image in the * specified Graphics2D object. * * @param g2 Specifies the Graphics object. * @since 30.04.1999 */ public void drawScreenImage(Graphics2D g2) { g2.setBackground(Color.black); g2.setColor(Color.black); //imageCanvas.setColor(Color.black); imageCanvas.setBackground(Color.black); if (clear) { g2.clearRect(0,0,(int)imageCanvas.getSize().getWidth(),(int)imageCanvas.getSize().getHeight()); if ((presentationStateGraphicsHandler.havePresentationState)) { if (!(screenSize.getSize().equals(imageCanvas.getSize()))) { presentationStateGraphicsHandler.setScreenSize(imageCanvas.getSize()); } } } else { if ((presentationStateGraphicsHandler.havePresentationState)) { if (!(screenSize.getSize().equals(imageCanvas.getSize()))) { presentationStateGraphicsHandler.setScreenSize(imageCanvas.getSize()); if (!clear)setNewImage(); } //Drawing the bufferedImage if (bufferedScreenImage != null) { g2.drawImage(bufferedScreenImage,0,0, imageCanvas); paintStructure.aff = transformationConverter.getTransformation(); paintStructure.drawState(g2); } else { g2.clearRect(0,0,(int)screenSize.getSize().getWidth(),(int)screenSize.getSize().getHeight()); } } } }//drawScreenImage /** * Resets the all objects of the ScreenImageHandler. * * @since 30.04.1999 */ public void resetState() { //removes the active event listeners if (mouseHandleListener != null) { imageCanvas.removeMouseListener(mouseHandleListener); imageCanvas.removeMouseMotionListener(mouseHandleListener); } mouseHandleListener = new ImageCanvasMouseEventListener(this); imageCanvas.addMouseListener(mouseHandleListener); imageCanvas.addMouseMotionListener(mouseHandleListener); popup = null; //set cursor to default imageCanvas.setCursor(Cursor.getPredefinedCursor(Cursor.DEFAULT_CURSOR)); //resets the state of the paintStructure if (paintStructure!=null)paintStructure.reset(); //reset the state of the presentationStateGraphicsHandler if (presentationStateGraphicsHandler!=null)presentationStateGraphicsHandler.reset(); Controller.instance().fireStatus(new StatusLineEvent(this,StatusLineEvent.SET_DES,DSComponentType.VIEWER,"Image Viewer")); //mainImageViewerPanel.annotationPanel.setActiveButton(null); } /** * Builds the visible part of the image in the bufferedScreenImage. * * @param first if true builds the bufferedScreenImage at first time. * @param loadNewPixels if ture - load the pixels form the c++ part * @param newScrollbarValue if true sets the scrollbar properties of the PanleScollImage. * @param resetState if true resets all objects to their initial state. * @since 30.04.1999 */ public void buildImageBuffer(boolean first,boolean loadNewPixels,boolean newScrollbarValue, boolean resetState, boolean newBackground) { if (resetState)resetState(); if (!imageCanvas.getSize().equals(new Dimension(0,0))) { if (! first) { transformationConverter.drawInDeviceSpace( bufferedScreenImage, presentationStateGraphicsHandler.getZoomValue(), loadNewPixels, newBackground, applyTo); } else { DisplayArea imageArea = presentationStateGraphicsHandler.getDisplayArea(); transformationConverter.drawInDeviceSpaceFirst( bufferedScreenImage, presentationStateGraphicsHandler.getZoomValue(), loadNewPixels, applyTo); DisplayArea newArea = presentationStateGraphicsHandler.getDisplayArea(); if (convertAnnotationScreenRelative )presentationStateGraphicsHandler.convertDisplayedAreas(imageArea,newArea); convertAnnotationScreenRelative = false; } presentationStateGraphicsHandler.drawPaintStructure(bufferedScreenImage,transformationConverter.getTransformation(), transformationConverter.getOverlayTransformation(),false,8, false); mainImageViewerPanel.setNewScrollbarValues( transformationConverter.getScollValueWidth(), transformationConverter.getScollValueHeight(), transformationConverter.getScrollbarValue()); imageCanvas.repaint(); } } /** * Sets the ImageCanvas. * * @param imageCanvas New ImageCanas. * @since 30.04.1999 */ public void setImageCanvas(ImageCanvas imageCanvas) { this.imageCanvas = imageCanvas; } /** * Sets a MouseEventListenerEditAnnotation the the imageCanvas. * * @since 30.04.1999 */ public void setEditAction() { resetState(); Controller.instance().fireStatus(new StatusLineEvent(this,StatusLineEvent.SET_DES,DSComponentType.VIEWER,"Select Annotation with Mouse")); mouseHandleListener = new ImageCanvasEditListener(this); imageCanvas.addMouseListener(mouseHandleListener); imageCanvas.addMouseMotionListener(mouseHandleListener); } /** * Initialize objects for drawing a new Annotation. The paintStructure will be reset and * the ImageCanvasNewListener will be set. * * @param theAnnotation The new Annotation. * @since 30.04.1999 */ public void setNewPaintObjectAction(PaintObject thePaintObject) { paintStructure.setCurrentObject(null,true); paintStructure.deleteCurrentPaintObject(); if (mouseHandleListener != null) { imageCanvas.removeMouseListener(mouseHandleListener); imageCanvas.removeMouseMotionListener(mouseHandleListener); } paintStructure.oldPaintObject = null; paintStructure.setCurrentPaintObject(thePaintObject); mouseHandleListener = new ImageCanvasNewListener(this); imageCanvas.addMouseListener(mouseHandleListener); imageCanvas.addMouseMotionListener(mouseHandleListener); }//setNewAnnotationAction public void setNewDisplayArea(int tlhcX,int tlhcY,int brhcX,int brhcY) { presentationStateGraphicsHandler.ps.setImageRelativeDisplayedArea(presentationStateGraphicsHandler.ps.getDisplayedAreaPresentationSizeMode(), tlhcX, tlhcY, brhcX, brhcY, presentationStateGraphicsHandler.calculateZoomValue(new DisplayArea(tlhcX, tlhcY, brhcX, brhcY)), applyTo); presentationStateGraphicsHandler.calculateFirstZoomValue(); Controller.instance().fireNotification(new ImageChangeEvent(this, GuiComponents.ID_ZOOMINPUT, new Double(presentationStateGraphicsHandler.getZoomValue()))); buildImageBuffer(true,false,true,true, true); statusInformation.setStandardDisplayedArea(presentationStateGraphicsHandler.getStandardDisplayedArea()); Controller.instance().fireStatus(new StatusLineEvent(this,StatusLineEvent.SET_TEXT2,DSComponentType.VIEWER,statusInformation.getPresentationInfo())); } public void setNewDisplayArea(Rectangle2DObject rect) { Point.Float point0 = rect.getPoint(0); Point.Float point1 = rect.getPoint(1); if ((Math.abs(point0.x-point1.x)>2 )&&(Math.abs(point0.y-point1.y)>2 )) { setNewDisplayArea((int)point0.x, (int)point0.y,(int)point1.x,(int)point1.y); } else buildImageBuffer(true,false,true,true, true); } /** * Sets the image on a new position of the display. * * @param newHeight Specifies the new virtualTLHC.y of the image. * @since 30.04.1999 * @see TransformationConverter */ public void setNewImagePartHeight(int newHeight) { if (transformationConverter != null) { resetState(); transformationConverter.setVirtualTHLCHeight(newHeight); transformationConverter.drawInDeviceSpace(bufferedScreenImage,false,true, applyTo); presentationStateGraphicsHandler.drawPaintStructure(bufferedScreenImage,transformationConverter.getTransformation(),transformationConverter.getOverlayTransformation(),false,8, false); //mainImageViewerPanel.funktionBasisTabPanel.presentationStatePanel.setValue(); imageCanvas.repaint(); statusInformation.setStandardDisplayedArea(presentationStateGraphicsHandler.getStandardDisplayedArea()); Controller.instance().fireStatus(new StatusLineEvent(this,StatusLineEvent.SET_TEXT2,DSComponentType.VIEWER,statusInformation.getPresentationInfo())); } } /** * Sets the image on a new position of the display. * * @param newWidth Specifies the new virtualTLHC.x of the image. * @since 30.04.1999 * @see TransformationConverter */ public void setNewImagePartWidth(int newWidth) { if (transformationConverter != null) { resetState(); transformationConverter.setVirtualTHLCWidth(newWidth); transformationConverter.drawInDeviceSpace(bufferedScreenImage,false,true,applyTo); presentationStateGraphicsHandler.drawPaintStructure(bufferedScreenImage,transformationConverter.getTransformation(),transformationConverter.getOverlayTransformation(),false,8, false); //mainImageViewerPanel.funktionBasisTabPanel.presentationStatePanel.setValue(); imageCanvas.repaint(); statusInformation.setStandardDisplayedArea(presentationStateGraphicsHandler.getStandardDisplayedArea()); Controller.instance().fireStatus(new StatusLineEvent(this,StatusLineEvent.SET_TEXT2,DSComponentType.VIEWER,statusInformation.getPresentationInfo())); } } ///////////////////////////////////////////////////////////////////////// //windowing //////////////////////////////////////////////////////////////////////// /** * Sets a new center value for the image and draws the image. * * @param center the new center value. * @since 30.04.1999 */ public void setNewCenter(double center) { double actualWidth = 0; //System.out.println("Screen bin ich im center *: " +center); if (presentationStateGraphicsHandler.ps.haveActiveVOIWindow()) { jDoubleByRef widthValue = new jDoubleByRef(); presentationStateGraphicsHandler.ps.getCurrentWindowWidth(widthValue); actualWidth = (widthValue.value); } else if (!presentationStateGraphicsHandler.ps.haveActiveVOILUT()) { jDoubleByRef minValue = new jDoubleByRef(); jDoubleByRef maxValue = new jDoubleByRef(); presentationStateGraphicsHandler.ps.getImageMinMaxPixelRange(minValue,maxValue); actualWidth = ((maxValue.value-minValue.value+1)); } setNewWindow(center,actualWidth,true ); } /** * Sets a new widht value for the image and draws the image. * * @param width the new width value. * @since 30.04.1999 */ public void setNewWidth(double width) { double actualCenter =0; //System.out.println("Screen bin ich im Width *: " +width); if (presentationStateGraphicsHandler.ps.haveActiveVOIWindow()) { jDoubleByRef centerValue = new jDoubleByRef(); presentationStateGraphicsHandler.ps.getCurrentWindowCenter(centerValue); actualCenter = (centerValue.value); } else if (!presentationStateGraphicsHandler.ps.haveActiveVOILUT()) { jDoubleByRef minValue = new jDoubleByRef(); jDoubleByRef maxValue = new jDoubleByRef(); presentationStateGraphicsHandler.ps.getImageMinMaxPixelRange(minValue,maxValue); actualCenter = ((minValue.value+(maxValue.value-minValue.value+1)/2)); } setNewWindow(actualCenter, width,true); } public void initVOI() { double width = getAutoWidth(); double center = getAutoCenter(); //gets the maximum pixel range scaling = (center+width/2)/500; if (presentationStateGraphicsHandler.ps.haveActiveVOILUT()) { String name = presentationStateGraphicsHandler.ps.getCurrentVOIDescription(); if (name == null) name = new String("VOI/LUT " ); statusInformation.setLUT(name); Controller.instance().fireStatus(new StatusLineEvent(this,StatusLineEvent.SET_TEXT1,DSComponentType.VIEWER,statusInformation.getWinInfo())); Controller.instance().fireNotification(new ImageChangeEvent(this, GuiComponents.ID_VOILUT)); } else { if (presentationStateGraphicsHandler.ps.haveActiveVOIWindow()) { jDoubleByRef centerValue = new jDoubleByRef(); jDoubleByRef widthValue = new jDoubleByRef(); presentationStateGraphicsHandler.ps.getCurrentWindowCenter(centerValue); presentationStateGraphicsHandler.ps.getCurrentWindowWidth(widthValue); center = centerValue.value; width = widthValue.value; presentationStateGraphicsHandler.ps.setVOIWindow( center, width ,"",applyTo); } else { presentationStateGraphicsHandler.ps.setVOIWindow( center, width ,"",applyTo); } statusInformation.setWindow(center, width); Controller.instance().fireStatus(new StatusLineEvent(this,StatusLineEvent.SET_TEXT1,DSComponentType.VIEWER,statusInformation.getWinInfo())); Controller.instance().fireNotification(new ImageChangeEvent(this, GuiComponents.ID_WINDOW, new Double(width), new Double(center))); } } /** * Changes the window after a mouse moving action. * * @param op Start moving point. * @param np End moving point. * @since 30.08.1999 */ public void setNewWindow(Point op, Point np, boolean viewImage) { double width = Math.ceil((presentationStateGraphicsHandler.getCurrentWindowWidth())+(double)((np.x-op.x)*scaling)); double center = Math.ceil((presentationStateGraphicsHandler.getCurrentWindowCenter())-(double)((np.y-op.y)*scaling)); setNewWindow( center,width,viewImage); } /** * Gets the width of the pixel range in the image * * @since 30.08.1999 */ public double getAutoWidth() { jDoubleByRef minValue = new jDoubleByRef(); jDoubleByRef maxValue = new jDoubleByRef(); presentationStateGraphicsHandler.ps.getImageMinMaxPixelValue(minValue, maxValue); return (maxValue.value-minValue.value+1); } /** * Gets the center of the pixel range in the image * * @since 30.08.1999 */ public double getAutoCenter() { jDoubleByRef minValue = new jDoubleByRef(); jDoubleByRef maxValue = new jDoubleByRef(); presentationStateGraphicsHandler.ps.getImageMinMaxPixelValue(minValue, maxValue); return (minValue.value+(maxValue.value-minValue.value+1)/2); } public void setVOILUT(int index) { presentationStateGraphicsHandler.ps.setVOILUTFromImage(index,applyTo); String name = presentationStateGraphicsHandler.ps.getDescriptionOfVOILUTsInImage(index); if (name == null) name = new String("VOI/LUT " + index); statusInformation.setLUT(name); Controller.instance().fireStatus(new StatusLineEvent(this,StatusLineEvent.SET_TEXT1,DSComponentType.VIEWER,statusInformation.getWinInfo())); Controller.instance().fireNotification(new ImageChangeEvent(this, GuiComponents.ID_VOILUT)); buildImageBuffer(false,true, false,false, false); } /** * Sets the VOI window with the specified Index * * @since 30.08.1999 */ public void setVOIWin(int index) { presentationStateGraphicsHandler.ps.setVOIWindowFromImage(index,applyTo); jDoubleByRef centerValue = new jDoubleByRef(); jDoubleByRef widthValue = new jDoubleByRef(); presentationStateGraphicsHandler.ps.getCurrentWindowCenter(centerValue); presentationStateGraphicsHandler.ps.getCurrentWindowWidth(widthValue); setNewWindow(centerValue.value, widthValue.value, true); } /** * Sets a automatical window. * * @since 30.08.1999 */ public void setAutoWindow() { jDoubleByRef minValue = new jDoubleByRef(); jDoubleByRef maxValue = new jDoubleByRef(); presentationStateGraphicsHandler.ps.getImageMinMaxPixelValue(minValue, maxValue); setNewWindow( (minValue.value+(maxValue.value-minValue.value+1)/2), (maxValue.value-minValue.value+1),true); } /** * Sets a automatical window. * * @since 30.08.1999 */ public void setMaxWindow() { jDoubleByRef minValue = new jDoubleByRef(); jDoubleByRef maxValue = new jDoubleByRef(); presentationStateGraphicsHandler.ps.getImageMinMaxPixelRange(minValue, maxValue); setNewWindow( (minValue.value+(maxValue.value-minValue.value+1)/2), (maxValue.value-minValue.value+1),true); } public void handleVOI(DSEvent e) { JPopupMenu m= new JPopupMenu("VOI LUT/WIN Settings"); m.add( new AutoWindowAction()); m.add( new MaxRangeWindowAction()); popup = m; //popup.setVisible(true); if (presentationStateGraphicsHandler.ps.getNumberOfVOIWindowsInImage()>0) m.addSeparator(); for (int i = 0; i < presentationStateGraphicsHandler.ps.getNumberOfVOIWindowsInImage(); i++) { if (presentationStateGraphicsHandler.ps.getDescriptionOfVOIWindowsInImage(i)!= null) m.add(new SetWindowingInImageAction("VOI/WIN: " +presentationStateGraphicsHandler.ps.getDescriptionOfVOIWindowsInImage(i),i)); else m.add(new SetWindowingInImageAction("VOI/WIN: " +i,i)); } if (presentationStateGraphicsHandler.ps.getNumberOfVOILUTsInImage()>0) m.addSeparator(); for (int i = 0; i < presentationStateGraphicsHandler.ps.getNumberOfVOILUTsInImage(); i++) { if (presentationStateGraphicsHandler.ps.getDescriptionOfVOILUTsInImage(i)!= null) m.add(new SetVOILUTAction("VOI/LUT: " +presentationStateGraphicsHandler.ps.getDescriptionOfVOILUTsInImage(i),i)); else m.add(new SetVOILUTAction("VOI/LUT: " +i,i)); } String mod = presentationStateGraphicsHandler.ps.getCurrentImageModality(); int number = presentationStateGraphicsHandler.dvi.getNumberOfVOIPresets(mod); if (number != 0) m.addSeparator(); double center; double width; for (int i = 0; i < number; i++) { center = presentationStateGraphicsHandler.dvi.getVOIPresetWindowCenter(mod, i); width = presentationStateGraphicsHandler.dvi.getVOIPresetWindowWidth(mod,i); m.add(new SetWindowingAction((presentationStateGraphicsHandler.dvi.getVOIPresetDescription(mod, i)+ "(c/w) " + center + "/" + width), center, width)); } m.addSeparator(); m.add(new InsertGammaVOILUTAction()); popup.pack(); popup.show((Component)e.getSource(),0,30); } public void handlePresentationLUT(DSEvent e) { JPopupMenu m= new JPopupMenu("Presentation LUT"); popup = m; int numberOfLUTs = presentationStateGraphicsHandler.dvi.getNumberOfLUTs(); ButtonGroup bGroup = new ButtonGroup(); for (int i = 0; i< numberOfLUTs; i++) { String lutName = presentationStateGraphicsHandler.dvi.getLUTID(i); JRadioButtonMenuItem rb = new JRadioButtonMenuItem(presentationStateGraphicsHandler.dvi.getLUTDescription(lutName)); rb.addActionListener(new SetPresentationLutAction(lutName, i, m)); bGroup.add(rb); m.add(rb); if (presentationStateGraphicsHandler.selectedLutIndex == i) rb.setSelected(true); } if (numberOfLUTs>0)m.addSeparator(); JMenuItem identityButton = new JMenuItem("IDENTITY"); identityButton.addActionListener(new SetPresentationLUTIdentityAction(m)); m.add(identityButton); popup.pack(); popup.show((Component)e.getSource(),0,30); } /** * Set a new window. * * @param width The new window with. * @param center The new window center. * @since 30.04.1999 */ public void setNewWindow(double center, double width, boolean viewImage) { if (width <1d) width =1d; int status = presentationStateGraphicsHandler.ps.setVOIWindow( center, width ,"",applyTo); /* jDoubleByRef centerValue = new jDoubleByRef(); presentationStateGraphicsHandler.ps.getCurrentWindowCenter(centerValue); double actualCenter = (centerValue.value); System.out.println("actualCenter: " + actualCenter); jDoubleByRef widthValue = new jDoubleByRef(); presentationStateGraphicsHandler.ps.getCurrentWindowWidth(widthValue); double actualWidth = (widthValue.value); System.out.println("actualWidth: " + actualWidth); */ //Send notifications if (viewImage) { statusInformation.setWindow(center, width); Controller.instance().fireStatus(new StatusLineEvent(this,StatusLineEvent.SET_TEXT1,DSComponentType.VIEWER,statusInformation.getWinInfo())); Controller.instance().fireNotification(new ImageChangeEvent(this, GuiComponents.ID_WINDOW, new Double(width), new Double(center))); buildImageBuffer(false,true,false,false,false); } } //////////////////////////////////////////////////////////////////////////// // //////////////////////////////////////////////////////////////////////////// /** * If a new jDVPresentationState object is available, this methode updates all object. * * @since 30.04.1999 */ public void setNewPresentationState() { if (!imageCanvas.getSize().equals(new Dimension(0,0))) { //applyTo = jDVPSObjectApplicability.DVPSB_currentFrame; presentationStateGraphicsHandler.setNewPresentationState(imageCanvas.getSize()); boolean haveLut = true; Double win = null; Double lev = null; Controller.instance().fireNotification(new PresentationStateFixInfoEvent(this, presentationStateGraphicsHandler.ps.haveShutter(jDVPSShutterType.DVPSU_rectangular), presentationStateGraphicsHandler.ps.haveShutter(jDVPSShutterType.DVPSU_circular), presentationStateGraphicsHandler.ps.haveShutter(jDVPSShutterType.DVPSU_polygonal), presentationStateGraphicsHandler.ps.haveShutter(jDVPSShutterType.DVPSU_bitmap), presentationStateGraphicsHandler.ps.getFlip(), presentationStateGraphicsHandler.ps.isInverse(), presentationStateGraphicsHandler.ps.getRotation(), presentationStateGraphicsHandler.enablePresentationState, win, lev, haveLut, new Double(presentationStateGraphicsHandler.getZoomValue()), presentationStateGraphicsHandler.ps.getPresentationLabel(), presentationStateGraphicsHandler.ps.getPresentationCreatorsName(), presentationStateGraphicsHandler.ps.getPresentationDescription(), presentationStateGraphicsHandler.getImageWidth(), presentationStateGraphicsHandler.getImageHeight(), presentationStateGraphicsHandler.getStandardDisplayedArea(), presentationStateGraphicsHandler.haveDisplayedAreaPresentationPixelSpacing(), presentationStateGraphicsHandler.ps.canUseDisplayedAreaTrueSize(), presentationStateGraphicsHandler.ps.getDisplayedAreaPresentationSizeMode(), presentationStateGraphicsHandler.getDisplayedAreaPresentationPixelSpacingX(), presentationStateGraphicsHandler.getDisplayedAreaPresentationPixelSpacingY(), presentationStateGraphicsHandler.getDisplayedAreaPresentationPixelAspectRatio(), presentationStateGraphicsHandler.getDisplayedAreaPresentationPixelMagnificationRatio(), presentationStateGraphicsHandler.getNumberOfImages(), presentationStateGraphicsHandler.getSelectedImageNumber(), presentationStateGraphicsHandler.getImageNumberOfFrames(), presentationStateGraphicsHandler.getSelectedImageFrameNumber(), applyTo)); Controller.instance().fireNotification(new SendLayerEvent(this,getLayers(),presentationStateGraphicsHandler.getCurrentLayerIndex())); transformationConverter = new JavaTransformationConverter(presentationStateGraphicsHandler); paintStructure = new PaintStructure(presentationStateGraphicsHandler); paintStructure.setImageCanvas(imageCanvas); setNewImage(); } } /** * Initialize the image data struture for new image. Called if a new image width other * dimensions than the old image should be displayed. * * @since 30.04.1999 */ public boolean setNewImage() { DataBuffer dbb; int bandOffsets[] = {0}; WritableRaster wr ; //initial immagebuffer if (!screenSize.equals(imageCanvas.getSize()) || bufferedScreenImage == null) { bufferedScreenImage = null; wr= null; dbb= null; System.gc(); dbb = new DataBufferByte( new byte[imageCanvas.getSize().height*imageCanvas.getSize().width],imageCanvas.getSize().height*imageCanvas.getSize().width); wr = Raster.createInterleavedRaster(dbb,imageCanvas.getSize().width,imageCanvas.getSize().height,imageCanvas.getSize().width,1, bandOffsets,null); // bufferedScreenImage = new BufferedImage(MainContext.instance().getUsedColorModel(), wr, MainContext.instance().getUsedColorModel().isAlphaPremultiplied(), null); bufferedScreenImage = new BufferedImage(MainContext.instance().getIndexColorModel(), wr, MainContext.instance().getIndexColorModel().isAlphaPremultiplied(), null); screenSize = new Dimension(imageCanvas.getSize()); } resetState(); initVOI(); convertAnnotationScreenRelative = true; buildImageBuffer(true,true,true,true, true); Controller.instance().fireNotification(new ImageChangeEvent(this, GuiComponents.ID_ZOOMINPUT, new Double(presentationStateGraphicsHandler.getZoomValue()))); if (presentationStateGraphicsHandler.ps.getDisplayedAreaPresentationSizeMode() == jDVPSPresentationSizeMode.DVPSD_magnify) { Controller.instance().fireNotification(new ImageChangeEvent(this, GuiComponents.ID_MAGNIFY, true)); } if (presentationStateGraphicsHandler.ps.getDisplayedAreaPresentationSizeMode() == jDVPSPresentationSizeMode.DVPSD_scaleToFit) { Controller.instance().fireNotification(new ImageChangeEvent(this, GuiComponents.ID_SCALETOFIT, true)); } if (presentationStateGraphicsHandler.ps.getDisplayedAreaPresentationSizeMode() == jDVPSPresentationSizeMode.DVPSD_trueSize) { Controller.instance().fireNotification(new ImageChangeEvent(this, GuiComponents.ID_TRUESIZE, true)); } int curve = jDVPSDisplayTransform.DVPSD_none; if (presentationStateGraphicsHandler.dvi.isDisplayTransformPossible(presentationStateGraphicsHandler.ps.getDisplayTransform()))curve=presentationStateGraphicsHandler.ps.getDisplayTransform(); Controller.instance().fireNotification(new SetPresentationStateEvent(this, presentationStateGraphicsHandler.ps.haveShutter(jDVPSShutterType.DVPSU_rectangular), presentationStateGraphicsHandler.ps.haveShutter(jDVPSShutterType.DVPSU_circular), presentationStateGraphicsHandler.ps.haveShutter(jDVPSShutterType.DVPSU_polygonal), presentationStateGraphicsHandler.ps.haveShutter(jDVPSShutterType.DVPSU_bitmap), presentationStateGraphicsHandler.ps.getFlip(), presentationStateGraphicsHandler.ps.isInverse(), presentationStateGraphicsHandler.ps.getRotation(), presentationStateGraphicsHandler.enablePresentationState, curve, presentationStateGraphicsHandler.ps.getPresentationLUT())); Controller.instance().fireNotification(new SendLayerEvent(this,getLayers(),presentationStateGraphicsHandler.getCurrentLayerIndex())); statusInformation.setStandardDisplayedArea(presentationStateGraphicsHandler.getStandardDisplayedArea()); Controller.instance().fireStatus(new StatusLineEvent(this,StatusLineEvent.SET_TEXT2,DSComponentType.VIEWER,statusInformation.getPresentationInfo())); //Paints the image return true; }//setNewImage /** * Stops creating a new Annoatation and * transforms the Annotation to a PresentationStateGraphicObject. * * @since 30.04.1999 * @see Controller.PopupMenuController */ public void setStopNew() { if (paintStructure.getCurrentPaintObject().getStatus() >=PaintObject.STATUS_WORK) { paintStructure.setWorkingShape(null); paintStructure.setCurrentStatus(PaintObject.STATUS_STOP, applyTo); paintStructure.setCurrentPaintObject( paintStructure.getCurrentPaintObject().getNewPaintObject()); buildImageBuffer(false,false,false,true, true); } else paintStructure.deleteCurrentPaintObject(); } /** * Closes a new Annoatation and * transforms the Annotation to a PresentationStateGraphicObject. * * @since 30.04.1999 * @see Controller.PopupMenuController */ public void setCloseNew() { if (paintStructure.getCurrentPaintObject().getStatus() >=PaintObject.STATUS_WORK) { paintStructure.setWorkingShape(null); paintStructure.getCurrentPaintObject().setNewPoint(paintStructure.getCurrentPaintObject().getCopyPointAt(0)); paintStructure.setCurrentStatus(PaintObject.STATUS_STOP, applyTo); if (!paintStructure.getCurrentPaintObject().isShutter) { paintStructure.setCurrentPaintObject(paintStructure.getCurrentPaintObject().getNewPaintObject()); buildImageBuffer(false,false,false,true, true); setEditAction(); //mainImageViewerPanel.funktionBasisTabPanel.layerPanel.setValue(); } else { boolean repaint = false ; paintStructure.setCurrentPaintObject(paintStructure.getCurrentPaintObject().getNewPaintObject()); Controller.instance().fireNotification(new SetPresentationStateEvent(this, presentationStateGraphicsHandler.ps.haveShutter(jDVPSShutterType.DVPSU_rectangular), presentationStateGraphicsHandler.ps.haveShutter(jDVPSShutterType.DVPSU_circular), presentationStateGraphicsHandler.ps.haveShutter(jDVPSShutterType.DVPSU_polygonal), presentationStateGraphicsHandler.ps.haveShutter(jDVPSShutterType.DVPSU_bitmap), presentationStateGraphicsHandler.ps.getFlip(), presentationStateGraphicsHandler.ps.isInverse(), presentationStateGraphicsHandler.ps.getRotation(), presentationStateGraphicsHandler.enablePresentationState, presentationStateGraphicsHandler.ps.getDisplayTransform(), presentationStateGraphicsHandler.ps.getPresentationLUT())); buildImageBuffer(false,false, false,true, true); //mainImageViewerPanel.funktionBasisTabPanel.shutterPanel.setValue(); } } } /** * Sets the specified PresentationStateLayerObject to the active PresentationStateLayerObject. * * @param index The index of the PresentationStateLayerObject * @since 30.04.1999 */ public void setCurrentLayerObject(int index) { presentationStateGraphicsHandler.setCurrentLayerObjectIndex(index); paintStructure.setCurrentObject(presentationStateGraphicsHandler.getCurrentLayerObject(),true); } /** * Deletes the active PresentationStateGraphicObject in the presentationStateGraphicsHandler. * * @since 30.04.1999 * @see Controller.PopupMenuController * @see PresentationStateGraphicsHandler */ public void deleteActivePresentationStateGraphicObject() { if (presentationStateGraphicsHandler.getCurrentLayerObjectIndex() != -1) { presentationStateGraphicsHandler.deleteCurrentObject(); buildImageBuffer(false,false,false,true, true); } else { paintStructure.deleteCurrentPaintObject(); buildImageBuffer(false,false,false,true, true); } setEditAction(); } /** * This function search for the first PresentationStateLayerObject which contains the specified point. * * @param clickedPoint The specified point. * @since 30.04.1999 */ public void setClick(Point2D.Float clickedPoint) { // paintStructure.setMoveAnn( clickedPoint); presentationStateGraphicsHandler.containsObject(clickedPoint); paintStructure.setCurrentObject(presentationStateGraphicsHandler.getCurrentLayerObject(),true); //mainImageViewerPanel.funktionBasisTabPanel.layerPanel.setValue(); //mainImageViewerPanel.annotationPanel.setActiveButton(); } /** * Sets a new Point to the current Annotation in the paintStructure. * * @param newPoint Contains the new Point. * @since 30.04.1999 */ public void setNewPoint(Point2D.Float newPoint) { if (!paintStructure.getCurrentPaintObject().isShutter) { paintStructure.setNewPoint(newPoint, applyTo); if (paintStructure.getCurrentPaintObject().status == PaintObject.STATUS_NULL) { buildImageBuffer(false,false,false,true, true); } } else { paintStructure.setNewPoint(newPoint, applyTo); if (paintStructure.getCurrentPaintObject().status == PaintObject.STATUS_NULL) { paintStructure.setCurrentPaintObject(null); Controller.instance().fireNotification(new SetPresentationStateEvent(this, presentationStateGraphicsHandler.ps.haveShutter(jDVPSShutterType.DVPSU_rectangular), presentationStateGraphicsHandler.ps.haveShutter(jDVPSShutterType.DVPSU_circular), presentationStateGraphicsHandler.ps.haveShutter(jDVPSShutterType.DVPSU_polygonal), presentationStateGraphicsHandler.ps.haveShutter(jDVPSShutterType.DVPSU_bitmap), presentationStateGraphicsHandler.ps.getFlip(), presentationStateGraphicsHandler.ps.isInverse(), presentationStateGraphicsHandler.ps.getRotation(), presentationStateGraphicsHandler.enablePresentationState, presentationStateGraphicsHandler.ps.getDisplayTransform(), presentationStateGraphicsHandler.ps.getPresentationLUT())); buildImageBuffer(false,false, false,true, true); } } } /** * Sets an new presentationStateTextObject form the specified parameters. * * @param text Contains the text of the new presentationStateTextObject. * @param isBoundingBox Contains true if the new presentationStateTextObject have only a bounding box and no anchor point. * @param isAnchor Contains true if the new presentationStateTextObject have only an anchor point and no bounding box . * @param isboth Contains true if the new presentationStateTextObject have an achor point and a bounding box . * @param isAnchorDisplay Contains true if the anchor point is display relative. * @param isBoxDisplay Contains true if the bounding box is display relative. * @param isAnchorVisible Contains ture if the anchor point is visible. * @since 30.04.1999 */ public void setNewText( String text, boolean isBoundingBox, boolean isAnchor, boolean isAnchorDisplay, boolean isBoxDisplay, boolean isAnchorVisible, int just, int rot) { resetState(); //creates a new presentationStateTextObject. presentationStateGraphicsHandler.setNewText(text,isBoundingBox,isAnchor,isAnchorDisplay,isBoxDisplay,isAnchorVisible, just, rot, applyTo); //set the new current Object paintStructure.currentObject = presentationStateGraphicsHandler.getCurrentLayerObject(); if (isBoundingBox) Controller.instance().fireStatus(new StatusLineEvent(this,StatusLineEvent.SET_DES,DSComponentType.VIEWER,"Move Text")); else Controller.instance().fireStatus(new StatusLineEvent(this,StatusLineEvent.SET_DES,DSComponentType.VIEWER,"Insert Anchor Point")); // mouseHandleListener = new ImageCanvasMoveTextListener(this); imageCanvas.addMouseListener(mouseHandleListener); imageCanvas.addMouseMotionListener(mouseHandleListener); } /** * Sets either an new anchor or a new bounding box to an existing PresentationStateTextObject and * deletes the old if exist. * * @param anchor If true insert anchor point, if false insert bounding box. * @param isDisplayRelative If true the anchor point is display relative. * @since 30.04.1999 */ public void setNewTextPart(boolean anchor, boolean isDisplayRelative) { PresentationStateTextObject currentText =(PresentationStateTextObject) paintStructure.currentObject; int layerIndex = presentationStateGraphicsHandler.getCurrentLayerIndex(); int textIndex =presentationStateGraphicsHandler.getCurrentLayerObjectIndex(); currentText.firstDraw = false; if (anchor) { Controller.instance().fireStatus(new StatusLineEvent(this,StatusLineEvent.SET_DES,DSComponentType.VIEWER,"Move Anchor Point")); currentText.needAnchorPoint= true; currentText.neededAnchorVisible = true; currentText.needBox= false; if ((currentText.getAnchorPointAnnotationUnits() == 1)||(isDisplayRelative))currentText.neededAnchorIsDisplayRelative = true; else currentText.neededAnchorIsDisplayRelative = false; //removes the anchor point currentText.removeAnchorPoint(); } else { Controller.instance().fireStatus(new StatusLineEvent(this,StatusLineEvent.SET_DES,DSComponentType.VIEWER,"Move Text")); currentText.needAnchorPoint= false; currentText.needBox= true; if ((currentText.getBoundingBoxAnnotationUnits() == 1)||(isDisplayRelative))currentText.neededBoxIsDisplayRelative = true; else currentText.neededBoxIsDisplayRelative = false; //removes hte actual bounding box currentText.removeBoundingBox(); } currentText.setActive ( false); //builds the new screen buildImageBuffer(false,false, false,true, true); //sets the actual state presentationStateGraphicsHandler.setCurrentLayerObjectIndex(textIndex); presentationStateGraphicsHandler.setCurrentLayerIndex(layerIndex); paintStructure.currentObject= currentText; if (mouseHandleListener != null) { imageCanvas.removeMouseListener(mouseHandleListener); imageCanvas.removeMouseMotionListener(mouseHandleListener); } mouseHandleListener = new ImageCanvasMoveTextListener(this); imageCanvas.addMouseListener(mouseHandleListener); imageCanvas.addMouseMotionListener(mouseHandleListener); } /** * Initializes the active PresentationStateGraphicObject in the * presentationStateGraphicsHandler for moving. Sets the ImageCanvasMoveListener. * * @since 30.04.1999 * @see Controller.PopupMenuController */ public void startMoveAnnotation() { presentationStateGraphicsHandler.getCurrentLayerObject().setActive ( false); int layerIndex = presentationStateGraphicsHandler.getCurrentLayerIndex(); int graphicIndex =presentationStateGraphicsHandler.getCurrentLayerObjectIndex(); //removes hte actual bounding box //builds the new screen buildImageBuffer(false,false, false,true, true); //sets the actual state presentationStateGraphicsHandler.setCurrentLayerIndex(layerIndex); presentationStateGraphicsHandler.setCurrentLayerObjectIndex( graphicIndex) ; paintStructure.currentObject=presentationStateGraphicsHandler.getCurrentLayerObject(); if (mouseHandleListener != null) { imageCanvas.removeMouseListener(mouseHandleListener); imageCanvas.removeMouseMotionListener(mouseHandleListener); } mouseHandleListener = new ImageCanvasMoveListener(this); imageCanvas.addMouseListener(mouseHandleListener); imageCanvas.addMouseMotionListener(mouseHandleListener); } /** * Stop moving the active PresentationStateGraphicObject in the * presentationStateGraphicsHandler. * * @since 30.04.1999 * @see Controller.PopupMenuController */ public void stopMoveAnnotation() { presentationStateGraphicsHandler.getCurrentLayerObject().setActive ( true); buildImageBuffer(false,false,false,true, true); setEditAction(); } /** * Sets an new text value to an existing PresentationStateTextObject. * * @param text The new text value. * @since 30.04.1999 */ public void setNewTextValue( String text , int just, int rot) { PresentationStateTextObject editText = (PresentationStateTextObject)presentationStateGraphicsHandler.getCurrentLayerObject(); editText.setNewValues(text, just,rot); buildImageBuffer(false,false, false,true, true); setEditAction(); } /** * Stop moving the active PresentationStateTextObject in the * presentationStateGraphicsHandler. * * @since 30.04.1999 * @see Controller.PopupMenuController */ public void stopMoveText() { PresentationStateTextObject textObject =(PresentationStateTextObject)paintStructure.currentObject; if (textObject.needBox &&textObject.needAnchorPoint) { textObject.needBox = false; Controller.instance().fireStatus(new StatusLineEvent(this,StatusLineEvent.SET_DES,DSComponentType.VIEWER,"Insert Anchor Point")); } else { if (mouseHandleListener != null) { imageCanvas.removeMouseListener(mouseHandleListener); imageCanvas.removeMouseMotionListener(mouseHandleListener); } textObject.setActive ( true); buildImageBuffer(false,false, false, true, true); //mainImageViewerPanel.funktionBasisTabPanel.layerPanel.setValue(); setEditAction(); } } /** * Returns the current ImageCanvas. * * @return The current ImageCanvas. * @since 30.04.1999 */ public ImageCanvas getImageCanvas() { return imageCanvas; } /** * Handles the received MoveImageEvents. */ public void handleMoveImage(MoveImageEvent e) { switch(e.type) { case MoveImageEvent.IMAGE_FIRST: presentationStateGraphicsHandler.selectImageNumber(1); setNewPresentationState(); break; case MoveImageEvent.IMAGE_LAST: presentationStateGraphicsHandler.selectImageNumber(presentationStateGraphicsHandler.getNumberOfImages()); setNewPresentationState(); break; case MoveImageEvent.IMAGE_NEXT: presentationStateGraphicsHandler.selectNextImage(); setNewPresentationState(); break; case MoveImageEvent.IMAGE_PREVIOUS: presentationStateGraphicsHandler.selectPreviousImage(); setNewPresentationState(); break; case MoveImageEvent.IMAGE_SET: presentationStateGraphicsHandler.selectImageNumber(e.value); setNewPresentationState(); break; case MoveImageEvent.FRAME_FIRST: presentationStateGraphicsHandler.selectImageFrameNumber(1); setNewPresentationState(); break; case MoveImageEvent.FRAME_LAST: presentationStateGraphicsHandler.selectImageFrameNumber(presentationStateGraphicsHandler.getImageNumberOfFrames()); setNewPresentationState(); break; case MoveImageEvent.FRAME_NEXT: presentationStateGraphicsHandler.selectNextFrame(); setNewPresentationState(); break; case MoveImageEvent.FRAME_PREVIOUS: presentationStateGraphicsHandler.selectPreviousFrame(); setNewPresentationState(); break; case MoveImageEvent.FRAME_SET: presentationStateGraphicsHandler.selectImageFrameNumber(e.value); setNewPresentationState(); case MoveImageEvent.APPLYFRAME: System.err.println(applyTo); applyTo = jDVPSObjectApplicability.DVPSB_currentFrame; System.err.println(applyTo); break; case MoveImageEvent.APPLYIMAGE: System.err.println(applyTo); applyTo = jDVPSObjectApplicability.DVPSB_currentImage; System.err.println(applyTo); break; case MoveImageEvent.APPLYALL: System.err.println(applyTo); applyTo = jDVPSObjectApplicability.DVPSB_allImages; System.err.println(applyTo); break; } } /** * Returns the content of the Image Canvas. * * @return Returns the content of the Image Canvas. * @since 30.04.1999 */ public BufferedImage getBufferedScreenImage() { return bufferedScreenImage; } public boolean processEvent (DSEvent e) { if (e instanceof MoveImageEvent) { handleMoveImage((MoveImageEvent)e); return true; } if (e instanceof SetShutterEvent) { handleShutter((SetShutterEvent) e); return true; } if (e instanceof ImageActionEvent) { ImageActionEvent ae = (ImageActionEvent)e; switch (ae.type) { case ImageActionEvent.ACTION_SETNEW_SR: //clear(); return true; case ImageActionEvent.ACTION_COMPOSITE_SR: //clear(); return true; case ImageActionEvent.ACTION_SELECTLAYER: handleSelectLayer((Component)ae.getSource()); return true; case ImageActionEvent.PAINT_EDIT: setEditAction(); return true; case ImageActionEvent.PAINT_CIRCLE: handleNewAnnotation(ae.type); return true; case ImageActionEvent.PAINT_TEXT: handleNewAnnotation(ae.type); return true; case ImageActionEvent.PAINT_RECT: handleNewAnnotation(ae.type); return true; case ImageActionEvent.PAINT_LINE: handleNewAnnotation(ae.type); return true; case ImageActionEvent.PAINT_INTERPOLATED: handleNewAnnotation(ae.type); return true; case ImageActionEvent.PAINT_ELLIPSE: handleNewAnnotation(ae.type); return true; case ImageActionEvent.PAINT_POINT: handleNewAnnotation(ae.type); return true; case ImageActionEvent.PAINT_POLYLINE: handleNewAnnotation(ae.type); return true; case ImageActionEvent.SET_IMAGERELATIVE: paintStructure.setImageRelative(); break; case ImageActionEvent.SET_FILLED: paintStructure.setFilled(); break; case ImageActionEvent.ACTION_SETNEWIMAGE: clear = false; presentationStateGraphicsHandler.selectedImageNumber = 1; setNewPresentationState(); return true; case ImageActionEvent.ACTION_EDITSHUTTER: editShutterColor(); break; case ImageActionEvent.ACTION_EDITLAYER: editLayer((Component)ae.getSource()); break; case ImageActionEvent.ACTION_INVERT: presentationStateGraphicsHandler.ps.invertImage(); Controller.instance().fireNotification(new ImageChangeEvent(this, GuiComponents.ID_INVERT, presentationStateGraphicsHandler.ps.isInverse())); break; case ImageActionEvent.ACTION_FLIP: presentationStateGraphicsHandler.setFlip(); Controller.instance().fireNotification(new ImageChangeEvent(this, GuiComponents.ID_FLIP, presentationStateGraphicsHandler.ps.getFlip())); break; case ImageActionEvent.ACTION_ROT: presentationStateGraphicsHandler.setRotation(); Controller.instance().fireNotification(new ImageChangeEvent(this, GuiComponents.ID_FLIP, presentationStateGraphicsHandler.ps.getFlip())); if (presentationStateGraphicsHandler.ps.getRotation() == 0)Controller.instance().fireNotification(new ImageChangeEvent(this, GuiComponents.ID_ROT0, false)); if (presentationStateGraphicsHandler.ps.getRotation() == 1)Controller.instance().fireNotification(new ImageChangeEvent(this, GuiComponents.ID_ROT90, false)); if (presentationStateGraphicsHandler.ps.getRotation() == 2)Controller.instance().fireNotification(new ImageChangeEvent(this, GuiComponents.ID_ROT180, false)); if (presentationStateGraphicsHandler.ps.getRotation() == 3)Controller.instance().fireNotification(new ImageChangeEvent(this, GuiComponents.ID_ROT270, false)); break; case ImageActionEvent.ACTION_RESET: presentationStateGraphicsHandler.resetPresentationState(); setNewPresentationState(); break; case ImageActionEvent.ACTION_PS: if (presentationStateGraphicsHandler.enablePresentationState) { presentationStateGraphicsHandler.psSelectedLUTIndex =presentationStateGraphicsHandler.selectedLutIndex; presentationStateGraphicsHandler.dvi.disablePState(); presentationStateGraphicsHandler.enablePresentationState = false; presentationStateGraphicsHandler.updatePresentationState(); setNewImage(); } else { presentationStateGraphicsHandler.dvi.enablePState(); presentationStateGraphicsHandler.enablePresentationState = true; presentationStateGraphicsHandler.updatePresentationState(); setNewImage(); presentationStateGraphicsHandler.selectedLutIndex =presentationStateGraphicsHandler.psSelectedLUTIndex; } Controller.instance().fireNotification(new ImageChangeEvent(this, GuiComponents.ID_PS, presentationStateGraphicsHandler.enablePresentationState)); break; case ImageActionEvent.ACTION_BARTEN: handleDisplayCurve((Component)ae.getSource()); return true; case ImageActionEvent.ACTION_ZOOM: resetState(); if (mouseHandleListener != null) { imageCanvas.removeMouseListener(mouseHandleListener); imageCanvas.removeMouseMotionListener(mouseHandleListener); } Controller.instance().fireStatus(new StatusLineEvent(this,StatusLineEvent.SET_DES,DSComponentType.VIEWER,"Selecet new Display Area")); mouseHandleListener = new MouseZoomListener(this); imageCanvas.addMouseListener(mouseHandleListener); imageCanvas.addMouseMotionListener(mouseHandleListener); popup = null; return true; case ImageActionEvent.ACTION_ZOOMFIT: setNewDisplayArea(1,1,presentationStateGraphicsHandler.getImageWidth(),presentationStateGraphicsHandler.getImageHeight() ); return true; case ImageActionEvent.ACTION_ZOOM1TO1: handleZoom(1d); Controller.instance().fireNotification(new ImageChangeEvent(this, GuiComponents.ID_ZOOMINPUT, new Double(presentationStateGraphicsHandler.getZoomValue()))); return true; case ImageActionEvent.ACTION_VOI: handleVOI(ae); return true; case ImageActionEvent.ACTION_WININFRAME: WindowingPreviewDialog windowingPreviewDialog = new WindowingPreviewDialog(mainImageViewerPanel.parent, this); if ((windowingPreviewDialog.previewHeight >0) &&(windowingPreviewDialog.previewWidth >0)) windowingPreviewDialog.setVisible(true); return true; case ImageActionEvent.ACTION_PRESENTATIONLUT: handlePresentationLUT(ae); return true; case ImageActionEvent.MODE_MAGNIFY: //Caluclates the dipslay Area DisplayArea displayAreaM = presentationStateGraphicsHandler.getDisplayArea(); int lastPresentationSizeModeM = presentationStateGraphicsHandler.ps.getDisplayedAreaPresentationSizeMode(); //Sets a new Presentation Size Mode presentationStateGraphicsHandler.ps.setImageRelativeDisplayedArea(jDVPSPresentationSizeMode.DVPSD_magnify, displayAreaM.getTlhcX(), displayAreaM.getTlhcY(), displayAreaM.getBrhcX(), displayAreaM.getBrhcY(), presentationStateGraphicsHandler.getZoomValue(), applyTo); //build a new Presntation State presentationStateGraphicsHandler.buildPresentationState(); //Calcaultes the zoom value if (lastPresentationSizeModeM == jDVPSPresentationSizeMode.DVPSD_trueSize)presentationStateGraphicsHandler.setZoomValue(presentationStateGraphicsHandler.calculateZoomValue(displayAreaM)); else presentationStateGraphicsHandler.calculateFirstZoomValue(); //Notification, drawing Controller.instance().fireNotification(new ImageChangeEvent(this, GuiComponents.ID_ZOOMINPUT, new Double(presentationStateGraphicsHandler.getZoomValue()))); buildImageBuffer(false,true,true,false, true); statusInformation.setStandardDisplayedArea(presentationStateGraphicsHandler.getStandardDisplayedArea()); statusInformation.presentationSizeMode = "mgn"; Controller.instance().fireStatus(new StatusLineEvent(this,StatusLineEvent.SET_TEXT2,DSComponentType.VIEWER,statusInformation.getPresentationInfo())); return true; case ImageActionEvent.MODE_SCALE: DisplayArea displayAreaS = presentationStateGraphicsHandler.getDisplayArea(); int lastPresentationSizeMode = presentationStateGraphicsHandler.ps.getDisplayedAreaPresentationSizeMode(); double lastZoom = presentationStateGraphicsHandler.getZoomValue(); presentationStateGraphicsHandler.ps.setImageRelativeDisplayedArea(jDVPSPresentationSizeMode.DVPSD_scaleToFit, displayAreaS.getTlhcX(), displayAreaS.getTlhcY(), displayAreaS.getBrhcX(), displayAreaS.getBrhcY(), presentationStateGraphicsHandler.getZoomValue(), applyTo); presentationStateGraphicsHandler.buildPresentationState(); if (lastPresentationSizeMode == jDVPSPresentationSizeMode.DVPSD_magnify)presentationStateGraphicsHandler.setZoomValue(lastZoom); else presentationStateGraphicsHandler.calculateFirstZoomValue(); Controller.instance().fireNotification(new ImageChangeEvent(this, GuiComponents.ID_ZOOMINPUT, new Double(presentationStateGraphicsHandler.getZoomValue()))); buildImageBuffer(false,true,true,false, true); statusInformation.setStandardDisplayedArea(presentationStateGraphicsHandler.getStandardDisplayedArea()); statusInformation.presentationSizeMode = "fit"; Controller.instance().fireStatus(new StatusLineEvent(this,StatusLineEvent.SET_TEXT2,DSComponentType.VIEWER,statusInformation.getPresentationInfo())); return true; case ImageActionEvent.MODE_TRUESIZE: DisplayArea displayAreaT = presentationStateGraphicsHandler.getDisplayArea(); presentationStateGraphicsHandler.ps.setImageRelativeDisplayedArea(jDVPSPresentationSizeMode.DVPSD_trueSize, displayAreaT.getTlhcX(), displayAreaT.getTlhcY(), displayAreaT.getBrhcX(), displayAreaT.getBrhcY(), presentationStateGraphicsHandler.getZoomValue(), applyTo); presentationStateGraphicsHandler.buildPresentationState(); presentationStateGraphicsHandler.calculateFirstZoomValue(); buildImageBuffer(false,true,true,false, true); statusInformation.setStandardDisplayedArea(presentationStateGraphicsHandler.getStandardDisplayedArea()); statusInformation.presentationSizeMode = "true"; Controller.instance().fireStatus(new StatusLineEvent(this,StatusLineEvent.SET_TEXT2,DSComponentType.VIEWER,statusInformation.getPresentationInfo())); return true; case ImageActionEvent.PRINT: print(); return true; } buildImageBuffer(false,true,true,false, true); statusInformation.setStandardDisplayedArea(presentationStateGraphicsHandler.getStandardDisplayedArea()); Controller.instance().fireStatus(new StatusLineEvent(this,StatusLineEvent.SET_TEXT2,DSComponentType.VIEWER,statusInformation.getPresentationInfo())); } if (e instanceof RequestEvent) { if (((RequestEvent) e).type == RequestEvent.REQUEST_SCREEN) { Controller.instance().fireEvent(new SendScreenEvent(this, ((DataBufferByte) (getBufferedScreenImage().getRaster().getDataBuffer())).getData(), imageCanvas.getSize().width, imageCanvas.getSize().height, presentationStateGraphicsHandler.ps.createInstanceUID())); } return false; } if (e instanceof ImageChangeEvent) { ImageChangeEvent ice = (ImageChangeEvent)e; if(ice.type == GuiComponents.ID_WINDOW) this.setNewWidth(ice.newDouble.doubleValue()); if(ice.type == GuiComponents.ID_CENTER) this.setNewCenter(ice.newDouble.doubleValue()); if(ice.type == GuiComponents.ID_ZOOM) handleZoom(ice.newDouble.doubleValue()); if(ice.type == GuiComponents.ID_NAME) presentationStateGraphicsHandler.ps.setPresentationLabel(ice.s); if(ice.type == GuiComponents.ID_CREATOR) presentationStateGraphicsHandler.ps.setPresentationCreatorsName(ice.s); if(ice.type == GuiComponents.ID_DESCRIPTION) presentationStateGraphicsHandler.ps.setPresentationDescription(ice.s); if(ice.type == GuiComponents.ID_LAYERLIST) presentationStateGraphicsHandler.setCurrentLayerIndex(ice.intValue); return false; } if (e instanceof ChangeOptionsEvent) { setConfiguration(((ChangeOptionsEvent)e).getConfig(), false); } return false; } public void handleDisplayCurve(Component source) { JPopupMenu m= new JPopupMenu("Selecte Display Curve"); ButtonGroup bGroup = new ButtonGroup(); JRadioButtonMenuItem rb; rb = new JRadioButtonMenuItem("None", true); rb.addActionListener(new SetDisplayTransformAction("None", jDVPSDisplayTransform.DVPSD_none)); bGroup.add(rb); m.add(rb); if (presentationStateGraphicsHandler.dvi.isDisplayTransformPossible(jDVPSDisplayTransform.DVPSD_CIELAB)||presentationStateGraphicsHandler.dvi.isDisplayTransformPossible(jDVPSDisplayTransform.DVPSD_GSDF)) { int selectedDisplayCurve = presentationStateGraphicsHandler.ps.getDisplayTransform(); rb = new JRadioButtonMenuItem("Barten"); rb.addActionListener(new SetDisplayTransformAction("Barten", jDVPSDisplayTransform.DVPSD_GSDF)); bGroup.add(rb); m.add(rb); if (selectedDisplayCurve ==jDVPSDisplayTransform.DVPSD_GSDF) rb.setSelected(true); rb = new JRadioButtonMenuItem("CIE-lab"); rb.addActionListener(new SetDisplayTransformAction("CIE-lab", jDVPSDisplayTransform.DVPSD_CIELAB)); bGroup.add(rb); m.add(rb); if (selectedDisplayCurve ==jDVPSDisplayTransform.DVPSD_CIELAB) rb.setSelected(true); } m.pack(); m.show(source,0,30); } public void handleSelectLayer(Component source) { JPopupMenu m= new JPopupMenu("Selecte Active Layer"); ButtonGroup bGroup = new ButtonGroup(); int numberOfLayers = presentationStateGraphicsHandler.getListPresentationStateGraphicLayer().size(); PresentationStateGraphicLayer layer; JRadioButtonMenuItem rb; for (int i = 0; i< numberOfLayers; i++) { layer = presentationStateGraphicsHandler.getLayerAtIndex(i); rb = new JRadioButtonMenuItem(layer.getName()); rb.addActionListener(new SetCurrentLayer(layer.getName(), i, m)); bGroup.add(rb); m.add(rb); if (presentationStateGraphicsHandler.getCurrentLayerIndex() == i) rb.setSelected(true); } m.pack(); m.show(source,0,30); } public void setConfiguration(Hashtable config, boolean init) { if (config.containsKey("AmbientLight")) { //update ambientLightTextField String amb = (String)config.get("AmbientLight"); if ((amb != null) && (!amb.equals(""))) { presentationStateGraphicsHandler.dvi.setAmbientLightValue((new Double((String)config.get("AmbientLight"))).doubleValue()); if (presentationStateGraphicsHandler.havePresentationState)buildImageBuffer(false,true, false, true, false); } } if (config.containsKey("PixelSizeY")&&config.containsKey("PixelSizeX")) { presentationStateGraphicsHandler.trueSizeX = (new Double((String)config.get("PixelSizeX"))).doubleValue(); presentationStateGraphicsHandler.trueSizeY= (new Double((String)config.get("PixelSizeY"))).doubleValue(); //System.out.println("PixelSizeY: " + presentationStateGraphicsHandler.trueSizeY); //System.out.println("PixelSizeX: " + presentationStateGraphicsHandler.trueSizeX); if (presentationStateGraphicsHandler.havePresentationState) { presentationStateGraphicsHandler.buildPresentationState(); buildImageBuffer(false,true, false, true, true); } } if (config.containsKey("TextFont")) { Hashtable attributeMap = new Hashtable(); attributeMap.put(TextAttribute.FONT,config.get("TextFont")); PresentationStateTextObject.setTextAttributeMap(attributeMap); } } public void handleZoom(double newZoom) { double oldZoom = presentationStateGraphicsHandler.getZoomValue(); presentationStateGraphicsHandler.setZoomValue(newZoom); transformationConverter.setNewZoom(oldZoom); buildImageBuffer(false,false,true,true, true); statusInformation.setStandardDisplayedArea(presentationStateGraphicsHandler.getStandardDisplayedArea()); statusInformation.zoomValue = newZoom; Controller.instance().fireStatus(new StatusLineEvent(this,StatusLineEvent.SET_TEXT2,DSComponentType.VIEWER,statusInformation.getPresentationInfo())); } public void handleShutter(SetShutterEvent e) { //Button events if (e.getType()== SetShutterEvent.POLY) { //create polyline if (e.getSelected()) { Controller.instance().fireStatus(new StatusLineEvent(this,StatusLineEvent.SET_DES,DSComponentType.VIEWER,"Insert Polygonal Shutter")); PaintObject ann = new PolylineObject(); ann.isShutter = true; setNewPaintObjectAction(ann); } else { presentationStateGraphicsHandler.shutterList.deletePolygonal(); buildImageBuffer(false,false,false,true, true); } } if (e.getType()== SetShutterEvent.CIRCLE) { if (e.getSelected()) { Controller.instance().fireStatus(new StatusLineEvent(this,StatusLineEvent.SET_DES,DSComponentType.VIEWER,"Insert Circular Shutter")); PaintObject ann = new Circle2DObject((float)presentationStateGraphicsHandler.getCurrentScalingX(),(float)presentationStateGraphicsHandler.getCurrentScalingY()); ann.isShutter = true; setNewPaintObjectAction(ann); } else { presentationStateGraphicsHandler.shutterList.deleteCircular(); buildImageBuffer(false,false,false,true, true); } } if (e.getType()== SetShutterEvent.RECT) { if (e.getSelected()) { Controller.instance().fireStatus(new StatusLineEvent(this,StatusLineEvent.SET_DES,DSComponentType.VIEWER,"Insert Rectangular Shutter")); PaintObject ann = new Rectangle2DObject(); ann.isShutter = true; setNewPaintObjectAction(ann); } else { presentationStateGraphicsHandler.shutterList.deleteRectangular(); buildImageBuffer(false,false,false,true, true); } } if (e.getType()== SetShutterEvent.BMP) { editBmpShutter(e); } } public void editShutterColor() { JPanel shPanel = new JPanel(); shPanel.setBorder(new TitledBorder("Set Shutter Color")); JTextField txtValue = new JTextField(new Float(presentationStateGraphicsHandler.shutterList.getShutterColorValue()).toString()); txtValue.setColumns(4); shPanel.add(new JLabel("Color")); shPanel.add(txtValue); while (true) { int ret = JOptionPane.showOptionDialog(null, shPanel, "Shutter Presentation Value", JOptionPane.OK_CANCEL_OPTION, JOptionPane.PLAIN_MESSAGE,null,null,null); if (ret == JOptionPane.CANCEL_OPTION) return; try { float value = (new Float(txtValue.getText().trim())).floatValue(); if (!((value <0.0f) || (value > 1f))) { presentationStateGraphicsHandler.shutterList.setShutterColor(value); buildImageBuffer(false,true,false,true, true); return; } } catch(NumberFormatException t) { } JOptionPane.showMessageDialog(null,"Value must be between 0 und 1"); } } public void editBmpShutter(SetShutterEvent e) { ShutterList shutterList = presentationStateGraphicsHandler.shutterList; if (shutterList.numberOfSuitableBitmapShutter ==0) { JOptionPane.showMessageDialog(null,"No bitmap display shutter available"); ((JToggleButton) e.getSource()).setSelected(false); return; } else { JPanel shPanel = new JPanel(); shPanel.setBorder(new TitledBorder("Bitmap Display Shutter")); JComboBox bitmapShutterChoice = new JComboBox(); shPanel.add(bitmapShutterChoice); bitmapShutterChoice.addItem("no bitmap activated"); for (int i = 0; i < shutterList.numberOfSuitableBitmapShutter; i++) { bitmapShutterChoice.addItem(shutterList.overlayIsShutterLabelList[i]); } if (shutterList.haveBitmapShutter()) { bitmapShutterChoice.setSelectedIndex(shutterList.activeBitmapShutterIndex+1); } else { bitmapShutterChoice.setSelectedIndex(0); } int ret = JOptionPane.showOptionDialog(null, shPanel, "Bitmap Display Shutter", JOptionPane.OK_CANCEL_OPTION, JOptionPane.PLAIN_MESSAGE,null,null,null); if (ret == JOptionPane.CANCEL_OPTION) { ((JToggleButton) e.getSource()).setSelected(false); return; } presentationStateGraphicsHandler.shutterList.activateBitmapShutter(bitmapShutterChoice.getSelectedIndex()-1); Controller.instance().fireNotification(new SetPresentationStateEvent(this, presentationStateGraphicsHandler.ps.haveShutter(jDVPSShutterType.DVPSU_rectangular), presentationStateGraphicsHandler.ps.haveShutter(jDVPSShutterType.DVPSU_circular), presentationStateGraphicsHandler.ps.haveShutter(jDVPSShutterType.DVPSU_polygonal), presentationStateGraphicsHandler.ps.haveShutter(jDVPSShutterType.DVPSU_bitmap), presentationStateGraphicsHandler.ps.getFlip(), presentationStateGraphicsHandler.ps.isInverse(), presentationStateGraphicsHandler.ps.getRotation(), presentationStateGraphicsHandler.enablePresentationState, presentationStateGraphicsHandler.ps.getDisplayTransform(), presentationStateGraphicsHandler.ps.getPresentationLUT())); buildImageBuffer(false,true, false,true, true); } } public void editLayer(Component source) { (new LayerJPanel(this, this.mainImageViewerPanel.parent, source)).setVisible(true); } public void handleNewAnnotation(int type) { buildImageBuffer(false,true,true,false, true); //If there is no layer you have to insert one layer before you can create a new Annotation if (presentationStateGraphicsHandler.listPresentationStateGraphicLayer.size()<= 0) { (new EditLayerPanel(this.mainImageViewerPanel.parent, this ,false)).show(); Controller.instance().fireNotification(new SendLayerEvent(this,getLayers(),presentationStateGraphicsHandler.getCurrentLayerIndex())); } if (presentationStateGraphicsHandler.listPresentationStateGraphicLayer.size()> 0) { PaintObject ann = null; switch (type) { case ImageActionEvent.PAINT_RECT: Controller.instance().fireStatus(new StatusLineEvent(this,StatusLineEvent.SET_DES,DSComponentType.VIEWER,"Insert Rectangle")); ann = new Rectangle2DObject(); ann.setFilled(paintStructure.filled); ann.isDisplayRelative = !paintStructure.imageRelative; setNewPaintObjectAction(ann); break; case ImageActionEvent.PAINT_CIRCLE: Controller.instance().fireStatus(new StatusLineEvent(this,StatusLineEvent.SET_DES,DSComponentType.VIEWER,"Insert Circle")); ann = new Circle2DObject((float)presentationStateGraphicsHandler.getCurrentScalingX(),(float)presentationStateGraphicsHandler.getCurrentScalingY()); ann.setFilled(paintStructure.filled); ann.isDisplayRelative = !paintStructure.imageRelative; setNewPaintObjectAction(ann); break; case ImageActionEvent.PAINT_LINE: Controller.instance().fireStatus(new StatusLineEvent(this,StatusLineEvent.SET_DES,DSComponentType.VIEWER,"Insert Line")); ann = new Line2DObject(); ann.isDisplayRelative = !paintStructure.imageRelative; setNewPaintObjectAction(ann); break; case ImageActionEvent.PAINT_POLYLINE: Controller.instance().fireStatus(new StatusLineEvent(this,StatusLineEvent.SET_DES,DSComponentType.VIEWER,"Insert Polyline")); ann = new PolylineObject(); ann.setFilled(paintStructure.filled); ann.isDisplayRelative = !paintStructure.imageRelative; setNewPaintObjectAction(ann); break; case ImageActionEvent.PAINT_ELLIPSE: Controller.instance().fireStatus(new StatusLineEvent(this,StatusLineEvent.SET_DES,DSComponentType.VIEWER,"Insert Ellipse")); ann = new Ellipse2DObject(); ann.setFilled(paintStructure.filled); ann.isDisplayRelative = !paintStructure.imageRelative; setNewPaintObjectAction(ann); break; case ImageActionEvent.PAINT_INTERPOLATED: Controller.instance().fireStatus(new StatusLineEvent(this,StatusLineEvent.SET_DES,DSComponentType.VIEWER,"Insert Interpolated")); ann = new InterpolatedObject(); ann.isDisplayRelative = !paintStructure.imageRelative; setNewPaintObjectAction(ann); break; case ImageActionEvent.PAINT_POINT: Controller.instance().fireStatus(new StatusLineEvent(this,StatusLineEvent.SET_DES,DSComponentType.VIEWER,"Insert Point")); ann = new Point2DObject(); ann.isDisplayRelative = !paintStructure.imageRelative; setNewPaintObjectAction(ann); break; case ImageActionEvent.PAINT_TEXT: TextAnnotationDialog dialog = new TextAnnotationDialog(mainImageViewerPanel.parent,this, false,null); dialog.setVisible(true); break; } } } public String [] getLayers() { String[] layers = new String[presentationStateGraphicsHandler.listPresentationStateGraphicLayer.size()]; //Fill layerChoice. for (int i = 0; i < presentationStateGraphicsHandler.listPresentationStateGraphicLayer.size(); i++) { layers[i] = new String(i + " " +((PresentationStateGraphicLayer) (presentationStateGraphicsHandler.listPresentationStateGraphicLayer.elementAt(i))).getName()); } return layers; } public AbstractAction getAction(String key) { return (AbstractAction) actionTable.get(key); } public void createActionTable() { actionTable = new Hashtable(); actionTable.put("delete", new DeleteAnnotationAction()); actionTable.put("deleteNew", new DeleteNewAnnotationAction()); actionTable.put("stop", new StopAction()); actionTable.put("close", new CloseAction()); actionTable.put("filled", new FilledAction()); actionTable.put("image relative", new ImageRelativeAction()); actionTable.put("move", new MoveAction()); actionTable.put("editText", new EditTextAction()); actionTable.put("insert anchor point display relative", new SetNewTextPartAction("Insert Display Relative Anchor Point",true,true)); actionTable.put("insert anchor point image relative", new SetNewTextPartAction("Insert Image Relative Anchor Point",true,false)); actionTable.put("move anchor point", new SetNewTextPartAction("Move Anchor Point",true,false)); actionTable.put("move bounding box", new SetNewTextPartAction("Move Bounding Box",false,false)); actionTable.put("insert bounding box display relative", new SetNewTextPartAction("Insert Display Relative Bounding Box",false,true)); actionTable.put("insert bounding box image relative", new SetNewTextPartAction("Insert Image Relative Bounding Box",false,false)); actionTable.put("remove bounding box", new RemoveTextPartAction("Remove Bounding Box",false)); actionTable.put("remove anchor point", new RemoveTextPartAction("Remove Anchor Point",true)); actionTable.put("set bounding box display relative", new ConvertAnnotationUnitAction("Set Display Relative Bounding Box",false)); actionTable.put("set bounding box image relative", new ConvertAnnotationUnitAction("Set Image Relative Bounding Box ",false)); actionTable.put("set anchor point image relative", new ConvertAnnotationUnitAction("Set Image Relative Anchor Point",true)); actionTable.put("set anchor point display relative", new ConvertAnnotationUnitAction("Set Display Relative Anchor Point",true)); actionTable.put("set anchor point invisible", new VisibleAnchorAction("Set Anchor Point Invisible",false)); actionTable.put("set anchor point visible", new VisibleAnchorAction("Set Anchor Point Visible",true)); } class DeleteAnnotationAction extends AbstractAction { public DeleteAnnotationAction() { super("Delete"); } public void actionPerformed(ActionEvent e) { if (mouseHandleListener != null) { imageCanvas.removeMouseListener(mouseHandleListener); imageCanvas.removeMouseMotionListener(mouseHandleListener); } deleteActivePresentationStateGraphicObject(); } } class AutoWindowAction extends AbstractAction { public AutoWindowAction() { super("Min - Max"); } public void actionPerformed(ActionEvent e) { setAutoWindow(); } } class MaxRangeWindowAction extends AbstractAction { public MaxRangeWindowAction() { super("Max Range"); } public void actionPerformed(ActionEvent e) { setMaxWindow(); } } class SetWindowingAction extends AbstractAction { double width; double center; public SetWindowingAction(String name, double center, double width) { super(name); this.width = width; this.center = center; } public void actionPerformed(ActionEvent e) { setNewWindow( center,width,true ); } } class SetWindowingInImageAction extends AbstractAction { int index; public SetWindowingInImageAction(String name, int index) { super(name); this.index = index; } public void actionPerformed(ActionEvent e) { setVOIWin(index); } } class SetPresentationLutAction extends AbstractAction { int index; String n; JPopupMenu m; public SetPresentationLutAction(String name, int index, JPopupMenu m) { super(name); this.index = index; n = name; this.m = m; } public void actionPerformed(ActionEvent e) { m.setVisible(false); presentationStateGraphicsHandler.selectedLutIndex = index; presentationStateGraphicsHandler.dvi.selectDisplayPresentationLUT(n); buildImageBuffer(false,true, false,false, false); Controller.instance().fireNotification(new SetPresentationStateEvent(this, presentationStateGraphicsHandler.ps.haveShutter(jDVPSShutterType.DVPSU_rectangular), presentationStateGraphicsHandler.ps.haveShutter(jDVPSShutterType.DVPSU_circular), presentationStateGraphicsHandler.ps.haveShutter(jDVPSShutterType.DVPSU_polygonal), presentationStateGraphicsHandler.ps.haveShutter(jDVPSShutterType.DVPSU_bitmap), presentationStateGraphicsHandler.ps.getFlip(), presentationStateGraphicsHandler.ps.isInverse(), presentationStateGraphicsHandler.ps.getRotation(), presentationStateGraphicsHandler.enablePresentationState, presentationStateGraphicsHandler.ps.getDisplayTransform(), presentationStateGraphicsHandler.ps.getPresentationLUT())); } } class SetCurrentLayer extends AbstractAction { int index; String n; JPopupMenu m; public SetCurrentLayer(String name, int index, JPopupMenu m) { super(name); this.index = index; n = name; this.m = m; } public void actionPerformed(ActionEvent e) { m.setVisible(false); presentationStateGraphicsHandler.setCurrentLayerIndex(index); buildImageBuffer(false,false, false,false, false); } } class SetPresentationLUTIdentityAction extends AbstractAction { JPopupMenu m; public SetPresentationLUTIdentityAction( JPopupMenu m) { super(); this.m = m; } public void actionPerformed(ActionEvent e) { m.setVisible(false); presentationStateGraphicsHandler.ps.setCurrentPresentationLUT(jDVPSPresentationLUTType.DVPSP_identity); presentationStateGraphicsHandler.ps.setDefaultPresentationLUTShape(); presentationStateGraphicsHandler.selectedLutIndex = -1; buildImageBuffer(false,true, false,false, false); Controller.instance().fireNotification(new SetPresentationStateEvent(this, presentationStateGraphicsHandler.ps.haveShutter(jDVPSShutterType.DVPSU_rectangular), presentationStateGraphicsHandler.ps.haveShutter(jDVPSShutterType.DVPSU_circular), presentationStateGraphicsHandler.ps.haveShutter(jDVPSShutterType.DVPSU_polygonal), presentationStateGraphicsHandler.ps.haveShutter(jDVPSShutterType.DVPSU_bitmap), presentationStateGraphicsHandler.ps.getFlip(), presentationStateGraphicsHandler.ps.isInverse(), presentationStateGraphicsHandler.ps.getRotation(), presentationStateGraphicsHandler.enablePresentationState, presentationStateGraphicsHandler.ps.getDisplayTransform(), presentationStateGraphicsHandler.ps.getPresentationLUT())); } } class SetVOILUTAction extends AbstractAction { int index; public SetVOILUTAction(String name, int index) { super(name); this.index = index; } public void actionPerformed(ActionEvent e) { setVOILUT(index); } } class DeleteNewAnnotationAction extends AbstractAction { public DeleteNewAnnotationAction() { super("Delete"); } public void actionPerformed(ActionEvent e) { if (mouseHandleListener != null) { imageCanvas.removeMouseListener(mouseHandleListener); imageCanvas.removeMouseMotionListener(mouseHandleListener); } paintStructure.deleteCurrentPaintObject(); buildImageBuffer(false,false,false,true, true); setEditAction(); } } class StopAction extends AbstractAction { public StopAction() { super("Stop"); } public void actionPerformed(ActionEvent e) { if (mouseHandleListener != null) { imageCanvas.removeMouseListener(mouseHandleListener); imageCanvas.removeMouseMotionListener(mouseHandleListener); } setStopNew(); setEditAction(); } } class CloseAction extends AbstractAction { public CloseAction() { super("Close"); } public void actionPerformed(ActionEvent e) { if (mouseHandleListener != null) { imageCanvas.removeMouseListener(mouseHandleListener); imageCanvas.removeMouseMotionListener(mouseHandleListener); } setCloseNew(); } } class MoveAction extends AbstractAction { public MoveAction() { super("Move"); } public void actionPerformed(ActionEvent e) { if (mouseHandleListener != null) { imageCanvas.removeMouseListener(mouseHandleListener); imageCanvas.removeMouseMotionListener(mouseHandleListener); } startMoveAnnotation(); } } class FilledAction extends AbstractAction { public FilledAction() { super("Filled"); } public void actionPerformed(ActionEvent e) { if (mouseHandleListener != null) { imageCanvas.removeMouseListener(mouseHandleListener); imageCanvas.removeMouseMotionListener(mouseHandleListener); } if (popup.isVisible()) popup.setVisible(false); PresentationStateGraphicObject filledObject = ((PresentationStateGraphicObject)presentationStateGraphicsHandler.getCurrentLayerObject()); if (filledObject != null) { if (filledObject.isfilled() == false)filledObject.setFilled(true); else filledObject.setFilled(false); buildImageBuffer(false,false,false,true, true); } setEditAction(); } } class ImageRelativeAction extends AbstractAction { public ImageRelativeAction() { super("Image Relative"); } public void actionPerformed(ActionEvent e) { if (mouseHandleListener != null) { imageCanvas.removeMouseListener(mouseHandleListener); imageCanvas.removeMouseMotionListener(mouseHandleListener); } if (popup.isVisible()) popup.setVisible(false); ((PresentationStateGraphicObject)presentationStateGraphicsHandler.getCurrentLayerObject()).convert(); buildImageBuffer(false,false,false,true, true); setEditAction(); } } public void convert(int units) { ((PresentationStateTextObject)presentationStateGraphicsHandler.getCurrentLayerObject()).convert(units); setEditAction(); } public void clear() { //reset(); MainImageViewerPanel.setEnabled(false, mainImageViewerPanel.getImageCanvas() ); bufferedScreenImage = null; //screenSize = new Dimension(0,0); clear = true; } public void print() { resetState(); int status = JOptionPane.showConfirmDialog(mainImageViewerPanel,"Reset Displayed Area to Image Size?","Add Image to Print Job", OptionDialog.ID_OK); DisplayArea oldDisplaydArea = presentationStateGraphicsHandler.getDisplayArea(); if (status == 1) presentationStateGraphicsHandler.getPrintImageBuffer(transformationConverter); else { double zoomValue = presentationStateGraphicsHandler.getZoomValue(); presentationStateGraphicsHandler.ps.setImageRelativeDisplayedArea(presentationStateGraphicsHandler.ps.getDisplayedAreaPresentationSizeMode(), 1, 1, presentationStateGraphicsHandler.getImageWidth(), presentationStateGraphicsHandler.getImageHeight(),zoomValue , applyTo); presentationStateGraphicsHandler.setScreenSize(new Dimension(presentationStateGraphicsHandler.getImageWidth(),presentationStateGraphicsHandler.getImageHeight())); presentationStateGraphicsHandler.getPrintImageBuffer(transformationConverter); presentationStateGraphicsHandler.ps.setImageRelativeDisplayedArea(presentationStateGraphicsHandler.ps.getDisplayedAreaPresentationSizeMode(), oldDisplaydArea.getTlhcX(), oldDisplaydArea.getTlhcY(), oldDisplaydArea.getBrhcX(), oldDisplaydArea.getBrhcY(), zoomValue, applyTo); } presentationStateGraphicsHandler.setScreenSize(screenSize); } class EditTextAction extends AbstractAction { public EditTextAction() { super("Edit"); } public void actionPerformed(ActionEvent e) { TextAnnotationDialog dialog = new TextAnnotationDialog(mainImageViewerPanel.parent,ScreenImageHandler.this, true,(PresentationStateTextObject)presentationStateGraphicsHandler.getCurrentLayerObject()); dialog.setVisible(true); } } class SetDisplayTransformAction extends AbstractAction { int index =0; public SetDisplayTransformAction(String name,int index) { super(name); this.index = index; } public void actionPerformed(ActionEvent e) { presentationStateGraphicsHandler.ps.setDisplayTransform(index); buildImageBuffer(false,true, false, true, true); Controller.instance().fireNotification(new SetPresentationStateEvent(this, presentationStateGraphicsHandler.ps.haveShutter(jDVPSShutterType.DVPSU_rectangular), presentationStateGraphicsHandler.ps.haveShutter(jDVPSShutterType.DVPSU_circular), presentationStateGraphicsHandler.ps.haveShutter(jDVPSShutterType.DVPSU_polygonal), presentationStateGraphicsHandler.ps.haveShutter(jDVPSShutterType.DVPSU_bitmap), presentationStateGraphicsHandler.ps.getFlip(), presentationStateGraphicsHandler.ps.isInverse(), presentationStateGraphicsHandler.ps.getRotation(), presentationStateGraphicsHandler.enablePresentationState, presentationStateGraphicsHandler.ps.getDisplayTransform(), presentationStateGraphicsHandler.ps.getPresentationLUT())); } } class InsertAnchorPointAction extends AbstractAction { boolean imageRel; public InsertAnchorPointAction(boolean imageRel, String name) { super(name); this.imageRel = imageRel; } public void actionPerformed(ActionEvent e) { setNewTextPart(true,imageRel); } } class SetNewTextPartAction extends AbstractAction { boolean anchor; boolean isDisplayRelative; public SetNewTextPartAction( String name, boolean anchor, boolean isDisplayRelative) { super(name); this.anchor = anchor; this.isDisplayRelative = isDisplayRelative; } public void actionPerformed(ActionEvent e) { setNewTextPart(anchor,isDisplayRelative); if (anchor) Controller.instance().fireStatus(new StatusLineEvent(this,StatusLineEvent.SET_DES,DSComponentType.VIEWER,"Move Anchor Point")); else Controller.instance().fireStatus(new StatusLineEvent(this,StatusLineEvent.SET_DES,DSComponentType.VIEWER,"Move Bounding Box")); } } class RemoveTextPartAction extends AbstractAction { boolean anchor; public RemoveTextPartAction( String name, boolean anchor) { super(name); this.anchor = anchor; } public void actionPerformed(ActionEvent e) { if (anchor)((PresentationStateTextObject)presentationStateGraphicsHandler.getCurrentLayerObject()).removeAnchorPoint(); else((PresentationStateTextObject)presentationStateGraphicsHandler.getCurrentLayerObject()).removeBoundingBox(); buildImageBuffer(false,false,false, false,true); setEditAction(); } } class VisibleAnchorAction extends AbstractAction { boolean isVisible; public VisibleAnchorAction( String name, boolean isVisible) { super(name); this.isVisible = isVisible; } public void actionPerformed(ActionEvent e) { ((PresentationStateTextObject)presentationStateGraphicsHandler.getCurrentLayerObject()).setAnchorPointVisible(isVisible); buildImageBuffer(false,false,false, false,true); setEditAction(); } } class ConvertAnnotationUnitAction extends AbstractAction { boolean anchor; public ConvertAnnotationUnitAction( String name, boolean anchor) { super(name); this.anchor = anchor; } public void actionPerformed(ActionEvent e) { if (anchor)((PresentationStateTextObject)presentationStateGraphicsHandler.getCurrentLayerObject()).convert(1); else ((PresentationStateTextObject)presentationStateGraphicsHandler.getCurrentLayerObject()).convert(0); setEditAction(); } } class InsertGammaVOILUTAction extends AbstractAction { public InsertGammaVOILUTAction() { super("Create VOI LUT with Gamma"); } public void actionPerformed(ActionEvent e) { CreateGammaVOILUTDialog d = new CreateGammaVOILUTDialog(mainImageViewerPanel.parent); d.setVisible(true); if (d.getActionValue() == d.ID_OK) { int status = presentationStateGraphicsHandler.ps.setGammaVOILUT(d.getGamma(),applyTo); statusInformation.setLUT("Gamma: "+ d.getGamma()); Controller.instance().fireStatus(new StatusLineEvent(this,StatusLineEvent.SET_TEXT1,DSComponentType.VIEWER,statusInformation.getWinInfo())); Controller.instance().fireNotification(new ImageChangeEvent(this, GuiComponents.ID_VOILUT)); buildImageBuffer(false,true, false,false, false); } } } public int getApplyTo() { return applyTo; } } /* * CVS Log * $Log: ScreenImageHandler.java,v $ * Revision 1.2 2003/09/08 10:17:26 kleber * Bugfix: The Displayed Area is defined after the spatial transformation. * * Revision 1.1.1.1 2001/06/06 10:32:30 kleber * Init commit for DICOMscope 3.5 * Create new CVS * */ dicomscope-3.6.0/tkgui/viewer/main/StatusInformation.java0000644000265600020320000000576411262371101022703 0ustar tilleaadmin/* * * Copyright (C) 1999, Institute for MicroTherapy * * This software and supporting documentation were developed by * * University of Witten/Herdecke * Department of Radiology and MicroTherapy * Institute for MicroTherapy * Medical computer science * * Universitaetsstrasse 142 * 44799 Bochum, Germany * * http://www.microtherapy.de/go/cs * mailto:computer.science@microtherapy.de * * THIS SOFTWARE IS MADE AVAILABLE, AS IS, AND THE INSTITUTE MAKES NO * WARRANTY REGARDING THE SOFTWARE, ITS PERFORMANCE, ITS MERCHANTABILITY * OR FITNESS FOR ANY PARTICULAR USE, FREEDOM FROM ANY COMPUTER DISEASES * OR ITS CONFORMITY TO ANY SPECIFICATION. THE ENTIRE RISK AS TO QUALITY * AND PERFORMANCE OF THE SOFTWARE IS WITH THE USER. * * Author : $Author: kleber $ * Last update : $Date: 2003/09/08 10:13:44 $ * Revision : $Revision: 1.2 $ * State: $State: Exp $ */ package viewer.main; import viewer.presentation.*; /** * This class contains status information about the image */ public class StatusInformation { public double width; public double center; public boolean haveLut= false; public String voiLut ; public DisplayArea displayArea; public double zoomValue; public String presentationSizeMode; public String info; public String layerName; public StatusInformation() { } public String toString() { String returnString = new String(); if (displayArea != null) returnString = returnString.concat(displayArea.toString()); if (haveLut) returnString = returnString.concat("LUT: " + voiLut); else returnString = returnString.concat(" c: = " + center + ", w: = " + width ); return returnString; } public void setWindow(double center, double width) { this.center = center; this.width = width; haveLut = false; } public void setStandardDisplayedArea(DisplayArea displayArea) { this.displayArea = displayArea; } public void setLUT(String voiLut) { haveLut = true; this.voiLut = voiLut; } public String getWinInfo() { if (haveLut) return("LUT: = " + voiLut); else return new String("c/w: " + center + "/" + width); } public String getLayer() { return layerName; } public String getPresentationInfo() { //return new String(presentationSizeMode + ", z: " + zoomValue + ", da: (" + displayArea.getTlhcX()+ "/" + displayArea.tlhc_y+ "),("+displayArea.getBrhcX()+"/"+displayArea.getTlhcY()+")"); return new String("da: (" + displayArea.getTlhcX()+ "/" + displayArea.getTlhcY()+ "),("+displayArea.getBrhcX()+"/"+displayArea.getBrhcY()+")"); } } /* * CVS Log * $Log: StatusInformation.java,v $ * Revision 1.2 2003/09/08 10:13:44 kleber * Rename setDisplayedArea to setStandardDisplayedArea * * Revision 1.1.1.1 2001/06/06 10:32:30 kleber * Init commit for DICOMscope 3.5 * Create new CVS * */ dicomscope-3.6.0/tkgui/viewer/paint/0002755000265600020320000000000011262371101016524 5ustar tilleaadmindicomscope-3.6.0/tkgui/viewer/paint/Circle2DObject.java0000644000265600020320000001463411262371101022113 0ustar tilleaadmin/* * * Copyright (C) 1999, Institute for MicroTherapy * * This software and supporting documentation were developed by * * University of Witten/Herdecke * Department of Radiology and MicroTherapy * Institute for MicroTherapy * Medical computer science * * Universitaetsstrasse 142 * 44799 Bochum, Germany * * http://www.microtherapy.de/go/cs * mailto:computer.science@microtherapy.de * * THIS SOFTWARE IS MADE AVAILABLE, AS IS, AND THE INSTITUTE MAKES NO * WARRANTY REGARDING THE SOFTWARE, ITS PERFORMANCE, ITS MERCHANTABILITY * OR FITNESS FOR ANY PARTICULAR USE, FREEDOM FROM ANY COMPUTER DISEASES * OR ITS CONFORMITY TO ANY SPECIFICATION. THE ENTIRE RISK AS TO QUALITY * AND PERFORMANCE OF THE SOFTWARE IS WITH THE USER. * * Author : $Author: kleber $ * Last update : $Date: 2001/06/06 10:32:30 $ * Revision : $Revision: 1.1.1.1 $ * State: $State: Exp $ */ package viewer.paint; import java.awt.*; import java.awt.geom.*; /** * This class contains methods for creating a circle. *
* These objects can be display or image relative. *
* These objects can be a shutter. * * @author Klaus Kleber * @since 30.04.1999 * @see PaintObject */ public class Circle2DObject extends PaintObject { float scaleX = 1f; float scaleY = 1f; /** * Contains the geometic form of the circle. * * @since 30.04.1999 */ public Ellipse2D.Float thisShape = null; /** * Contructs an new Circle2DObject form the specified parameters. * * @param center Center of the circle * @param point Point of the border. * @since 30.04.1999 */ public Circle2DObject(Point2D.Float center, Point2D.Float point, float scaleX, float scaleY) { super(); setNewPoint(center); setNewPoint(point); this.scaleX = scaleX; this.scaleY = scaleY; thisShape = build(center,point,scaleX, scaleX); } /** * Contructs an new Circle2DObject form the specified parameters. * * @param center Center of the circle * @param point Point of the border. * @since 30.04.1999 */ public Circle2DObject( float scaleX, float scaleY) { super(); this.scaleX = scaleX; this.scaleY = scaleY; } /** * Constructs a new object. * * @since 30.04.1999 */ private Circle2DObject() { super(); } /** * Constucts a new object with the specified parameter. * * @param filled true if the object should be filled * @param isDisplayRelative true if the object should be display relative. * @param isShutter true if the object should be a shutter. * @since 30.04.1999 */ public Circle2DObject(boolean filled , boolean isDisplayRelative,boolean isShutter, float scaleX, float scaleY) { super(); this.filled = filled; this.isShutter = isShutter; this.scaleX = scaleX; this.scaleY = scaleY; this.isDisplayRelative = isDisplayRelative; } /** * Gets the Shape of the Circle2DObject. * * @return The Shape of the Circle2DObject. * @since 30.04.1999 */ public Shape getShape() { return thisShape; } /** * Insert a new point to the objectPoints. You can only insert 2 points. * * @param The new point of the circle * @since 30.04.1999 */ public void setNewPoint(Point2D.Float newPoint) { objectPoints.add(newPoint); if (objectPoints.size() == 1) { status = STATUS_BEGIN; } else { status = STATUS_STOP; thisShape = build(((Point2D.Float)objectPoints.elementAt(0)),((Point2D.Float)objectPoints.elementAt(1)),scaleX, scaleY); } } /** * Returns the part of the Circle2DObject which should be redraw if the Circle2DObject will be created. * * @param nextPoint The next drawing Point. * @return The part of the PaintObject which should be redraw. * @see PaintObject#getMovePaintObject */ public PaintObject getMovePaintObject(Point2D.Float nextPoint) { return new Circle2DObject(getCopyPointAt(0), nextPoint, scaleX, scaleY); } /** * Returns a real copy of the Circle2DObject. * * @return a real copy of this Circle2DObject. * @since 30.04.1999 */ public PaintObject copy() { Circle2DObject returnObject = new Circle2DObject(scaleX, scaleY); for (int i = 0; i< objectPoints.size(); i++) { returnObject.setNewPoint(((Point2D.Float)objectPoints.elementAt(i))); } returnObject.setStatus(this.getStatus()); returnObject.setFilled(filled); returnObject.isDisplayRelative = isDisplayRelative; returnObject.thisShape=build(((Point2D.Float)objectPoints.elementAt(0)),((Point2D.Float)objectPoints.elementAt(1)),scaleX, scaleY); return returnObject; } /** * Draws the Shape of the Circle2DObject in the specified Graphics context. * * @param g The Graphics context in which the Shape should be drawn. * @since 30.04.1999 */ public void drawShape(Graphics2D g) { if ((g!=null) && (thisShape!= null)) { g.draw(thisShape); if (filled) g.fill(thisShape); } } /** * Contructs a cirular Ellipse2D form the specified parameters. * * @param center Center of the circle * @param point Point of the border. * @since 30.04.1999 */ public Ellipse2D.Float build(Point2D.Float center, Point2D.Float point, float scaleX, float scaleY) { float radius = (float)center.distance(point); float x = center.x-radius; float y = center.y-radius; float w = 2*radius; float h = 2*radius; return new Ellipse2D.Float(x,y,w,h); } /** * Returns new Circle2DObject with the same properties as the current object. * * @return A new Circle2DObject with the same properties. * @since 30.04.1999 */ public PaintObject getNewPaintObject() { return new Circle2DObject(filled,isDisplayRelative,isShutter, scaleX, scaleY); } } /* * CVS Log * $Log: Circle2DObject.java,v $ * Revision 1.1.1.1 2001/06/06 10:32:30 kleber * Init commit for DICOMscope 3.5 * Create new CVS * */ dicomscope-3.6.0/tkgui/viewer/paint/CurveObject.java0000644000265600020320000001161211262371101021601 0ustar tilleaadmin/* * * Copyright (C) 1999, Institute for MicroTherapy * * This software and supporting documentation were developed by * * University of Witten/Herdecke * Department of Radiology and MicroTherapy * Institute for MicroTherapy * Medical computer science * * Universitaetsstrasse 142 * 44799 Bochum, Germany * * http://www.microtherapy.de/go/cs * mailto:computer.science@microtherapy.de * * THIS SOFTWARE IS MADE AVAILABLE, AS IS, AND THE INSTITUTE MAKES NO * WARRANTY REGARDING THE SOFTWARE, ITS PERFORMANCE, ITS MERCHANTABILITY * OR FITNESS FOR ANY PARTICULAR USE, FREEDOM FROM ANY COMPUTER DISEASES * OR ITS CONFORMITY TO ANY SPECIFICATION. THE ENTIRE RISK AS TO QUALITY * AND PERFORMANCE OF THE SOFTWARE IS WITH THE USER. * * Author : $Author: kleber $ * Last update : $Date: 2001/06/06 10:32:30 $ * Revision : $Revision: 1.1.1.1 $ * State: $State: Exp $ */ package viewer.paint; import java.awt.*; import java.util.*; import java.awt.geom.*; /** * This class contains methods for creating a bezier curve. *
* These objects can be display or image relative. *
* These objects can be a shutter. * * @author Klaus Kleber * @since 30.04.1999 * @see PaintObject */ public class CurveObject extends PaintObject { /** * Contains the geometic form of the circle. * * @since 30.04.1999 */ CubicCurve2D.Float thisShape = null; public int count = 0; Point2D.Float point1; Point2D.Float point2; Point2D.Float firstPoint; Point2D.Float nextPoint; /** * Constucts a new object. * * @since 30.04.1999 */ public CurveObject() { super(); System.out.println("CurveObject"); } public CurveObject(boolean isDisplayRelative, int count,Point2D.Float startPoint,Point2D.Float point1,Point2D.Float point2,Point2D.Float nextPoint) { super(); System.out.println("CurveObject"); this.isDisplayRelative = isDisplayRelative; this.count = count; this.point1 = point1; this.point2 = point2; this.firstPoint = startPoint; this.nextPoint = nextPoint; thisShape = new CubicCurve2D.Float(); thisShape.setCurve(startPoint.x,startPoint.y,startPoint.x,startPoint.y,startPoint.x,startPoint.y,startPoint.x,startPoint.y); if (count == 1) { thisShape.setCurve( startPoint.x,startPoint.y,nextPoint.x, nextPoint.y, nextPoint.x, nextPoint.y, nextPoint.x, nextPoint.y); } if (count == 2) { thisShape.setCurve( startPoint.x,startPoint.y,point1.x, point1.y, nextPoint.x, nextPoint.y, nextPoint.x, nextPoint.y); } if (count == 3) { thisShape.setCurve( startPoint.x,startPoint.y,point1.x, point1.y, point2.x, point2.y, nextPoint.x, nextPoint.y); } } /** * Not implemented yet * * @since 30.04.1999 */ public PaintObject getMovePaintObject(Point2D.Float nextPoint) { return null; } /** * Not implemented yet * * @since 30.04.1999 */ public void setNewPoint(Point2D.Float newPoint) { } /** * Gets the Shape of the Circle2DObject. * * @return The Shape of the Circle2DObject. * @since 30.04.1999 */ public Shape getShape() { return thisShape; } /** * Draws the Shape of the CurveObject in the specified Graphics context. * * @param g The Graphics context in which the Shape should be drawn. * @since 30.04.1999 */ public void drawShape(Graphics2D g) { if ((g!=null) && (thisShape!= null)) { g.draw(thisShape); } } /** * Returns a real copy of the CurveObject. * * @return A real copy of this CurveObject. * @since 30.04.1999 */ public PaintObject copy() { return new CurveObject(isDisplayRelative, count, firstPoint, point1, point2, nextPoint); } /** * Not implemented yet * * @since 30.04.1999 */ public PaintObject getNewPaintObject() { return null; } } /* * CVS Log * $Log: CurveObject.java,v $ * Revision 1.1.1.1 2001/06/06 10:32:30 kleber * Init commit for DICOMscope 3.5 * Create new CVS * */ dicomscope-3.6.0/tkgui/viewer/paint/Ellipse2DObject.java0000644000265600020320000001407311262371101022304 0ustar tilleaadmin/* * * Copyright (C) 1999, Institute for MicroTherapy * * This software and supporting documentation were developed by * * University of Witten/Herdecke * Department of Radiology and MicroTherapy * Institute for MicroTherapy * Medical computer science * * Universitaetsstrasse 142 * 44799 Bochum, Germany * * http://www.microtherapy.de/go/cs * mailto:computer.science@microtherapy.de * * THIS SOFTWARE IS MADE AVAILABLE, AS IS, AND THE INSTITUTE MAKES NO * WARRANTY REGARDING THE SOFTWARE, ITS PERFORMANCE, ITS MERCHANTABILITY * OR FITNESS FOR ANY PARTICULAR USE, FREEDOM FROM ANY COMPUTER DISEASES * OR ITS CONFORMITY TO ANY SPECIFICATION. THE ENTIRE RISK AS TO QUALITY * AND PERFORMANCE OF THE SOFTWARE IS WITH THE USER. * * * Author : $Author: kleber $ * Last update : $Date: 2001/06/06 10:32:30 $ * Revision : $Revision: 1.1.1.1 $ * State: $State: Exp $ */ package viewer.paint; import java.awt.*; import java.awt.geom.*; /** * This class contains methods for creating an ellipse. *
* These objects can be display or image relative. *
* These objects can be a shutter. * * @author Klaus Kleber * @version 1.0 * @since 30.04.1999 * @see PaintObject */ public class Ellipse2DObject extends PaintObject { /** * Contains the geometic form of the ellipse. * * @since 30.04.1999 */ public Ellipse2D.Float thisShape = null; /** * Contructs an new Circle2DObject form the specified parameters. * * @param tlhc Top left hand coner of the bounding rectangle * @param brhc Bottom right hand coner of the bounding rectangle. * @since 30.04.1999 */ public Ellipse2DObject(Point2D.Float tlhc, Point2D.Float brhc) { super(); setNewPoint(tlhc); setNewPoint(brhc); thisShape = build(tlhc,brhc); } /** * Constructs a new object. * * @since 30.04.1999 */ public Ellipse2DObject() { super(); } /** * Constucts a new object with the specified parameter. * * @param filled true if the object should be filled * @param isDisplayRelative true if the object should be display relative. * @param isShutter true if the object should be a shutter. * @since 30.04.1999 */ public Ellipse2DObject(boolean filled , boolean isDisplayRelative,boolean isShutter) { super(); this.filled = filled; this.isShutter = isShutter; this.isDisplayRelative = isDisplayRelative; } /** * Gets the Shape of the Ellipse2DObject. * * @return The Shape of the Ellipse2DObject. * @since 30.04.1999 */ public Shape getShape() { return thisShape; } /** * Insert a new point to the objectPoints. You can only insert 2 points. * * @param The new point of the circle * @since 30.04.1999 */ public void setNewPoint(Point2D.Float newPoint) { objectPoints.add(newPoint); if (objectPoints.size() == 1) { status = STATUS_BEGIN; } else { status = STATUS_STOP; thisShape = build(((Point2D.Float)objectPoints.elementAt(0)),((Point2D.Float)objectPoints.elementAt(1))); } } /** * Returns the part of the Ellipse2DObject which should be redraw if the Ellipse2DObject will be created. * * @param nextPoint The next drawing Point. * @return The part of the PaintObject which should be redraw. * @see PaintObject#getMovePaintObject */ public PaintObject getMovePaintObject(Point2D.Float nextPoint) { return new Ellipse2DObject(getCopyPointAt(0), nextPoint); } /** * Returns a real copy of the Ellipse. * * @return a real copy of this Ellipse2DObject. * @since 30.04.1999 */ public PaintObject copy() { Ellipse2DObject returnAnnotation = new Ellipse2DObject(); for (int i = 0; i< objectPoints.size(); i++) { returnAnnotation.setNewPoint(((Point2D.Float)objectPoints.elementAt(i))); } returnAnnotation.setStatus(this.getStatus()); returnAnnotation.setFilled(filled); returnAnnotation.isDisplayRelative = isDisplayRelative; returnAnnotation.thisShape=build(((Point2D.Float)objectPoints.elementAt(0)),((Point2D.Float)objectPoints.elementAt(1))); return returnAnnotation; } /** * Draws the Shape of the Ellipse2DObject in the specified Graphics context. * * @param g The Graphics context in which the Shape should be drawn. * @since 30.04.1999 */ public void drawShape(Graphics2D g) { if ((g!=null) && (thisShape!= null)) { g.draw(thisShape); if (filled) g.fill(thisShape); } } /** * Contructs a cirular Ellipse2D form the specified parameters. * * @param tlhc Top left hand coner of the bounding rectangle * @param brhc Bottom right hand coner of the bounding rectangle. * @since 30.04.1999 */ public Ellipse2D.Float build(Point2D.Float tlhc, Point2D.Float brhc) { if (tlhc.x >brhc.x) { float change = tlhc.x; tlhc.x = brhc.x; brhc.x = change; } if (tlhc.y >brhc.y) { float change = tlhc.y; tlhc.y = brhc.y; brhc.y = change; } float x = tlhc.x; float y = tlhc.y; float w = brhc.x-x; float h = brhc.y-y; return new Ellipse2D.Float(x,y,w,h); } /** * Returns new Ellipse2DObject with the same properties as the current object. * * @return A new Ellipse2DObject with the same properties. * @since 30.04.1999 */ public PaintObject getNewPaintObject() { return new Ellipse2DObject(filled,isDisplayRelative,isShutter); } } /* * CVS Log * $Log: Ellipse2DObject.java,v $ * Revision 1.1.1.1 2001/06/06 10:32:30 kleber * Init commit for DICOMscope 3.5 * Create new CVS * */ dicomscope-3.6.0/tkgui/viewer/paint/GeometryTool.java0000644000265600020320000001453211262371101022023 0ustar tilleaadmin/* * Copyright (C) 2000, Institute for MicroTherapy * * This software and supporting documentation were developed by * * University of Witten/Herdecke * Department of Radiology and MicroTherapy * Institute for MicroTherapy * Medical computer science * * Universitaetsstrasse 142 * 44799 Bochum, Germany * * http://www.microtherapy.de/go/cs * mailto:computer.science@microtherapy.de * * THIS SOFTWARE IS MADE AVAILABLE, AS IS, AND THE INSTITUTE MAKES NO * WARRANTY REGARDING THE SOFTWARE, ITS PERFORMANCE, ITS MERCHANTABILITY * OR FITNESS FOR ANY PARTICULAR USE, FREEDOM FROM ANY COMPUTER DISEASES * OR ITS CONFORMITY TO ANY SPECIFICATION. THE ENTIRE RISK AS TO QUALITY * AND PERFORMANCE OF THE SOFTWARE IS WITH THE USER. * * $Author: kleber $ * $Date: 2001/06/06 10:32:30 $ * $Revision: 1.1.1.1 $ * $State: Exp $ */ package viewer.paint; import java.awt.geom.*; /** * The GeometryTool class is a collection * of geometrical utilities.

* * @author Annacker * @version $Id: GeometryTool.java,v 1.1.1.1 2001/06/06 10:32:30 kleber Exp $ */ public final class GeometryTool { /** * The constructor was implemented only to prevent * the GeometryTool from being instantiated. */ private GeometryTool() { // intentionally left blank } /** * Returns a cubic spline following the given coordinates. * The precision is given as ratio of lines to draw between * two coordinates to the distance between them.

* * @param coords the coordinates to follow. * @param precision the precision/smoothness (see above). * * @return the path of the spline. */ public static GeneralPath getCubicSpline(Point2D.Double[] coords, double precision) { // generate resulting path GeneralPath path = new GeneralPath(); // do we have enough points for a spline? int n = coords.length; if(n > 2) { // yes, get cubic polynomials, separately for x- and y-coordinates double[] x = new double[n]; double[] y = new double[n]; for(int i = 0; i < n; i++) { x[i] = coords[i].getX(); y[i] = coords[i].getY(); } CubicPolynomial[] xPoly = calculateCubicPolynomials(x); CubicPolynomial[] yPoly = calculateCubicPolynomials(y); // interpolate path point by point path.moveTo(xPoly[0].calculate(0.0), yPoly[0].calculate(0.0)); for(int i = 0; i < xPoly.length; i++) { double step = 1.0 / (coords[0].distance(coords[1]) * precision); for(double j = step; j <= 1.0; j += step) { path.lineTo(xPoly[i].calculate(j), yPoly[i].calculate(j)); } } } else { // no, can we create a straight path? if(n > 1) { // yes, do it path.moveTo((float)coords[0].getX(), (float)coords[0].getY()); path.lineTo((float)coords[1].getX(), (float)coords[1].getY()); } } // return the spline path return path; } /** * Calculates the cubic polynomials that interpolate * the given values. There are given as many polynomials * as coordinates minus one.

* * @param y the values to interpolate. * * @return the cubic polynomials. */ private static CubicPolynomial[] calculateCubicPolynomials(double[] y) { // calculate the derivatives at the given points. int n = y.length - 1; double[] gamma = new double[n + 1]; double[] delta = new double[n + 1]; double[] derivative = new double[n + 1]; gamma[0] = 1.0 / 2.0; for(int i = 1; i < n; i++) { gamma[i] = 1.0 / (4.0 - gamma[i - 1]); } gamma[n] = 1.0 / (2.0 - gamma[n - 1]); delta[0] = 3.0 * (y[1] - y[0]) * gamma[0]; for(int i = 1; i < n; i++) { delta[i] = (3.0 * (y[i + 1] - y[i - 1]) - delta[i - 1]) * gamma[i]; } delta[n] = (3.0 * (y[n] - y[n - 1]) - delta[n - 1]) * gamma[n]; derivative[n] = delta[n]; for(int i = n - 1; i >= 0; i--) { derivative[i] = delta[i] - gamma[i] * derivative[i + 1]; } // calculate the coefficients of the cubic polynomials CubicPolynomial[] poly = new CubicPolynomial[n]; for(int i = 0; i < n; i++) { poly[i] = new CubicPolynomial(y[i], derivative[i], 3.0 * (y[i + 1] - y[i]) - 2.0 * derivative[i] - derivative[i + 1], 2.0 * (y[i] - y[i + 1]) + derivative[i] + derivative[i + 1]); } // return the polynomials return poly; } } /** * The CubicPolynomial class only holds and calculates * cubic polynomials as a helper for {@link GeometryTool#getCubicSpline}.

* * @author Kai Annacker * @version $Id: GeometryTool.java,v 1.1.1.1 2001/06/06 10:32:30 kleber Exp $ */ class CubicPolynomial { /** * The constant coefficient. */ private double a; /** * The linear coefficient. */ private double b; /** * The quadratic coefficient. */ private double c; /** * The cubic coefficient. */ private double d; /** * Creates a new cubic polynomial with the given coefficients.

* * @param a constant coefficient. * @param b linear coefficient. * @param c quadratic coefficient. * @param d cubic coefficient. */ protected CubicPolynomial(double a,double b,double c,double d) { // copy the coefficients this.a = a; this.b = b; this.c = c; this.d = d; } /** * Calculates the cubic polynomial for the given value.

* * @param x the value to calculate for. * * @return the polynomial value. */ protected float calculate(double x) { return (float)((((d * x) + c) * x + b) * x + a); } } /* * CVS Log * $Log: GeometryTool.java,v $ * Revision 1.1.1.1 2001/06/06 10:32:30 kleber * Init commit for DICOMscope 3.5 * Create new CVS * */ dicomscope-3.6.0/tkgui/viewer/paint/InterpolatedObject.java0000644000265600020320000001271611262371101023155 0ustar tilleaadmin/* * * Copyright (C) 1999, Institute for MicroTherapy * * This software and supporting documentation were developed by * * University of Witten/Herdecke * Department of Radiology and MicroTherapy * Institute for MicroTherapy * Medical computer science * * Universitaetsstrasse 142 * 44799 Bochum, Germany * * http://www.microtherapy.de/go/cs * mailto:computer.science@microtherapy.de * * THIS SOFTWARE IS MADE AVAILABLE, AS IS, AND THE INSTITUTE MAKES NO * WARRANTY REGARDING THE SOFTWARE, ITS PERFORMANCE, ITS MERCHANTABILITY * OR FITNESS FOR ANY PARTICULAR USE, FREEDOM FROM ANY COMPUTER DISEASES * OR ITS CONFORMITY TO ANY SPECIFICATION. THE ENTIRE RISK AS TO QUALITY * AND PERFORMANCE OF THE SOFTWARE IS WITH THE USER. * * Author : $Author: kleber $ * Last update : $Date: 2001/06/06 10:32:30 $ * Revision : $Revision: 1.1.1.1 $ * State: $State: Exp $ */ package viewer.paint; import J2Ci.*; import java.awt.*; import java.util.*; import java.awt.geom.*; /** * This class contains methods for creating a polyline. *
* These objects can be display or image relative. *
* These objects can be a shutter. * * @author Klaus Kleber * @since 30.04.1999 * @see PaintObject */ public class InterpolatedObject extends PaintObject { /** * Contains the geometic form of the polyline. * * @since 30.04.1999 */ GeneralPath thisShape = null; /** * Constructs a new object. * * @since 30.04.1999 */ public InterpolatedObject() { super(); } /** * Constucts a new object with the specified parameter. * * @param filled true if the object should be filled * @param isDisplayRelative true if the object should be display relative. * @param isShutter true if the object should be a shutter. * @since 30.04.1999 */ public InterpolatedObject(boolean filled, boolean isDisplayRelative,boolean isShutter) { super(); this.filled = filled; this.isShutter = isShutter; this.isDisplayRelative = isDisplayRelative; } /** * Constucts a new object form the specified parameter * * @param anPolylineObject Constructor copies the specified object. * @param isDisplayRelative true if the object should be display relative. * @param isShutter true if the object should be a shutter. * @since 30.04.1999 */ public InterpolatedObject(InterpolatedObject anPolylineObject) { super(); for (int i = 0; i < anPolylineObject.getObjectPoints().size(); i++) { setNewPoint((Point2D.Float) (anPolylineObject.getObjectPoints().elementAt(i))); } this.setStatus( anPolylineObject.getStatus()); this.setFilled(anPolylineObject.filled); } /** * Returns the part of the PolylineObject which should be redraw if the Circle2DObject will be created. * * @param nextPoint The next drawing Point. * @return The part of the PaintObject which should be redraw. * @see PaintObject#getMovePaintObject */ public PaintObject getMovePaintObject(Point2D.Float nextPoint) { InterpolatedObject il = new InterpolatedObject (this); il.setNewPoint(nextPoint); //return new Line2DObject(getCopyPointAt(objectPoints.size()-1), nextPoint); return il; } /** * Insert a new point to the objectPoints. * * @param The new point of the circle * @since 30.04.1999 */ public void setNewPoint(Point2D.Float newPoint) { if (objectPoints.size() == 0) { status = STATUS_BEGIN; } if (objectPoints.size() == 1) status = STATUS_WORK; objectPoints.add(newPoint); int size = objectPoints.size(); Point2D.Double[] pts = new Point2D.Double[size]; for (int i = 0; i < size; i++) { Point2D.Float p = (Point2D.Float)objectPoints.elementAt(i); pts[i] = new Point2D.Double(p.x,p.y); } thisShape = GeometryTool.getCubicSpline(pts, 1d); } /** * Gets the Shape of the PolylineObject. * * @return The Shape of the Circle2DObject. * @since 30.04.1999 */ public Shape getShape() { return thisShape; } /** * Draws the Shape of the Circle2DObject in the specified Graphics context. * * @param g The Graphics context in which the Shape should be drawn. * @since 30.04.1999 */ public void drawShape(Graphics2D g) { if ((g!=null) && (thisShape!= null)) { g.draw(thisShape); if ((filled) && isClosed() && (status == PaintObject.STATUS_STOP)) g.fill(thisShape); } } /** * Returns a real copy of the PolylineObject. * * @return A real copy of this PolylineObject. * @since 30.04.1999 */ public PaintObject copy() { return new InterpolatedObject(this); } /** * Returns new PolylineObject with the same properties as the current object. * * @return A new PolylineObject with the same properties. * @since 30.04.1999 */ public PaintObject getNewPaintObject() { return new InterpolatedObject(filled,isDisplayRelative,isShutter); } } /* * CVS Log * $Log: InterpolatedObject.java,v $ * Revision 1.1.1.1 2001/06/06 10:32:30 kleber * Init commit for DICOMscope 3.5 * Create new CVS * */ dicomscope-3.6.0/tkgui/viewer/paint/Line2DObject.java0000644000265600020320000001110111262371101021563 0ustar tilleaadmin/* * * Copyright (C) 1999, Institute for MicroTherapy * * This software and supporting documentation were developed by * * University of Witten/Herdecke * Department of Radiology and MicroTherapy * Institute for MicroTherapy * Medical computer science * * Universitaetsstrasse 142 * 44799 Bochum, Germany * * http://www.microtherapy.de/go/cs * mailto:computer.science@microtherapy.de * * THIS SOFTWARE IS MADE AVAILABLE, AS IS, AND THE INSTITUTE MAKES NO * WARRANTY REGARDING THE SOFTWARE, ITS PERFORMANCE, ITS MERCHANTABILITY * OR FITNESS FOR ANY PARTICULAR USE, FREEDOM FROM ANY COMPUTER DISEASES * OR ITS CONFORMITY TO ANY SPECIFICATION. THE ENTIRE RISK AS TO QUALITY * AND PERFORMANCE OF THE SOFTWARE IS WITH THE USER. * * Author : $Author: kleber $ * Last update : $Date: 2001/06/06 10:32:30 $ * Revision : $Revision: 1.1.1.1 $ * State: $State: Exp $ */ package viewer.paint; import java.awt.*; import java.awt.geom.*; /** * This class contains methods for creating a line. *
* These objects can be display or image relative. * * @author Klaus Kleber * @since 30.04.1999 * @see PaintObject */ public class Line2DObject extends PaintObject { /** * Contains the geometic form of the line. * * @since 30.04.1999 */ Line2D thisShape = null; /** * Contructs an new line. * * @param start Startpoint of the line. * @param end Endpoint of the line. * @since 30.04.1999 */ public Line2DObject(Point2D.Float start, Point2D.Float end) { super(); setNewPoint(start); setNewPoint(end); } /** * Constucts a new object with the specified parameter. * * @param isDisplayRelative true if the object should be display relative. * @since 30.04.1999 */ public Line2DObject( boolean isDisplayRelative) { super(); this.isDisplayRelative = isDisplayRelative; } /** * Constructs a new object. * * @since 30.04.1999 */ public Line2DObject() { super(); } /** * Gets the Shape of the Circle2DObject. * * @return The Shape of the Circle2DObject. * @since 30.04.1999 */ public Shape getShape() { return thisShape; } /** * Insert a new point to the objectPoints. You can only insert 2 points. * * @param The new point of the line * @since 30.04.1999 */ public void setNewPoint(Point2D.Float newPoint) { if (objectPoints.size() == 0) { status = STATUS_BEGIN; } else { status = STATUS_STOP; thisShape = new Line2D.Float((Point2D.Float)objectPoints.elementAt(0),(Point2D.Float) newPoint); } objectPoints.add(newPoint); } /** * Returns the part of the Line2DObject which should be redraw if the Line2DObject will be created. * * @param nextPoint The next drawing Point. * @return The part of the PaintObject which should be redraw. * @see PaintObject#getMovePaintObject */ public PaintObject getMovePaintObject(Point2D.Float nextPoint) { return new Line2DObject(getCopyPointAt(0), nextPoint); } /** * Returns a real copy of the Line2DObject. * * @return a real copy of this Line2DObject. * @since 30.04.1999 */ public PaintObject copy() { Line2DObject returnAnnotation = new Line2DObject(); for (int i = 0; i< objectPoints.size(); i++) { returnAnnotation.setNewPoint(((Point2D.Float)objectPoints.elementAt(i))); } returnAnnotation.setStatus(this.getStatus()); returnAnnotation.setFilled(filled); return returnAnnotation; } /** * Draws the Shape of the Line2DObject in the specified Graphics context. * * @param g The Graphics context in which the Shape should be drawn. * @since 30.04.1999 */ public void drawShape(Graphics2D g) { if ((g!=null) && (thisShape!= null)) { g.draw(thisShape); g.fill(thisShape); } } /** * Returns new Line2DObject with the same properties as the current object. * * @return A new Line2DObject with the same properties. * @since 30.04.1999 */ public PaintObject getNewPaintObject() { return new Line2DObject(isDisplayRelative); } } /* * CVS Log * $Log: Line2DObject.java,v $ * Revision 1.1.1.1 2001/06/06 10:32:30 kleber * Init commit for DICOMscope 3.5 * Create new CVS * */ dicomscope-3.6.0/tkgui/viewer/paint/PaintObject.java0000644000265600020320000002256111262371101021575 0ustar tilleaadmin/* * * Copyright (C) 1999, Institute for MicroTherapy * * This software and supporting documentation were developed by * * University of Witten/Herdecke * Department of Radiology and MicroTherapy * Institute for MicroTherapy * Medical computer science * * Universitaetsstrasse 142 * 44799 Bochum, Germany * * http://www.microtherapy.de/go/cs * mailto:computer.science@microtherapy.de * * THIS SOFTWARE IS MADE AVAILABLE, AS IS, AND THE INSTITUTE MAKES NO * WARRANTY REGARDING THE SOFTWARE, ITS PERFORMANCE, ITS MERCHANTABILITY * OR FITNESS FOR ANY PARTICULAR USE, FREEDOM FROM ANY COMPUTER DISEASES * OR ITS CONFORMITY TO ANY SPECIFICATION. THE ENTIRE RISK AS TO QUALITY * AND PERFORMANCE OF THE SOFTWARE IS WITH THE USER. * * Author : $Author: kleber $ * Last update : $Date: 2003/09/08 10:12:24 $ * Revision : $Revision: 1.2 $ * State: $State: Exp $ */ package viewer.paint; import java.awt.*; import java.util.*; import java.awt.geom.*; /** * This class ist the superclass of all drawing objects. These objects consits of * a vector of point represention the outline and a shape containing the geographic form. *
* These objects can be display or image relative. *
* These objects can be a shutter. *
* These objects can be filled and unfilled. * * * @author Klaus Kleber * @since 30.04.1999 * @see Circle2DObject * @see CurveObject * @see Ellipse2DObject * @see InterpolatedObject * @see Line2DObject * @see PolylineObject * @see Rectangle2DObject */ public abstract class PaintObject extends Object { /** * if true the PaintObject is display relative if false the PaintObject ist imageRelative. * * @since 30.04.1999 */ public boolean isDisplayRelative; /** * True, if the PaintObject is a shutter. * * @since 30.04.1999 */ public boolean isShutter; /** * True, if the PaintObject is a shutter. * * @since 30.04.1999 */ public boolean isZoom; /** * The PaintObject is created. * * @since 30.04.1999 */ public static int STATUS_STOP = 8; /** * The PaintObject is empty * * @since 30.04.1999 */ public static int STATUS_WORK = 4; /** * The PaintObject is empty * * @since 30.04.1999 */ public static int STATUS_NULL = 0; /** * The creation of the PaintObject has started. * * @since 30.04.1999 */ public static int STATUS_BEGIN = 2; /** * Specified if the PaintObject is filled. */ public boolean filled = false; /** * Vector which contains the points of the PaintObject. */ public Vector objectPoints; /** * Creation status of the PaintObject. */ public int status = STATUS_NULL; /** * Constructs an empty PaintObject. * * @since 30.04.1999 */ public PaintObject() { objectPoints = new Vector(); status =STATUS_NULL; //{{INIT_CONTROLS //}} } /** * Constructs a new filled PaintObject . * * @param filled true if the PainObject should be filled * @since 30.04.1999 */ public PaintObject(boolean filled) { objectPoints = new Vector(); status =STATUS_NULL; this.filled = filled; } /** * Returns true if the PaintObject is closed. A PaintObject is closed if the first Point in * objectPoints is equal the last Point and the Vector objectPoints contains more than 2 Points. * * @return ture if the PaintObject is closed * @since 30.04.1999 */ public boolean isClosed() { if (objectPoints.size() < 3) return false; else return getPoint(0).equals(getPoint(objectPoints.size()-1)); } /** * Return the Point on the specified index in the objectPoints. * * @return The Point on the specified index in the objectPoints. * @since 30.04.1999 */ public Point2D.Float getPoint(int index) { if (index >= objectPoints.size()) return null; else { return (Point2D.Float) objectPoints.elementAt(index); } } /** * Return the type of the PaintObject. If type = 1 the PaintObject is display relative, * if type = 0 the PaintObject is image relative. * * @return The yype of the PaintObject. * @since 30.04.1999 */ public int getType() { if (isDisplayRelative) return 1; else return 0; } /** * Returns the Shape of the PaintObject build form the Points in the PaintObject * * @return The Point on the specified index in the objectPoints. * @since 30.04.1999 */ public abstract Shape getShape(); /** * Returns a real copy of the PaintObject. * * @return a real copy of this PaintObject. * @since 30.04.1999 */ public abstract PaintObject copy(); /** * Tests if the specified Point is inside the boundary of the Shape. * * @return true if the specified Point is inside the boundary of the Shape. * @since 30.04.1999 */ public boolean contains(Point2D.Float p) { return getShape().getBounds2D().contains(p); } /** * Insert a new Point to the PaintObject. * * @param newPoint The new Point for the PaintObject. * @since 30.04.1999 */ public abstract void setNewPoint(Point2D.Float newPoint); /** * Gets a copy of the Point at the specified index. * * @param index The point at the specified index. * @return A copy of the Point at the specified index. * @since 30.04.1999 */ public Point2D.Float getCopyPointAt(int index) { Point2D.Float returnPoint = null; if (index >= objectPoints.size()) return returnPoint; { returnPoint = new Point2D.Float(((Point2D.Float) objectPoints.elementAt(index)).x, ((Point2D.Float) objectPoints.elementAt(index)).y); return returnPoint; } } /** * Gets the status of the PaintObject. * * @return The status of the PaintObject. * @since 30.04.1999 */ public int getStatus() { return status; } /** * Sets the status of the PaintObject. * * @param status The new status of the PaintObject. * @since 30.04.1999 */ public void setStatus(int status) { this.status = status; } /** * Gets the ObjectPoints . * * @return The ObjectPoints. * @since 30.04.1999 */ public Vector getObjectPoints() { return objectPoints; } /** * Returns a String representing this PaintObject * * @return A String representing this PaintObject * @since 30.04.1999 */ public String getInfo() { String returnString = null; if (getShape()!= null)returnString = new String(" " + getShape().toString()+ "\n"); for (int i = 0; i < objectPoints.size(); i++) { returnString = returnString.concat("Index: " + i + " " + objectPoints.elementAt(i).toString()+"\n"); } return returnString; }//getInfo /** * Fills/Unfills the PaintObject * * @param filled true - the PaintObject should be filled. * @since 30.04.1999 */ public void setFilled(boolean filled) { this.filled = filled; } /** * Draws the Shape of the PaintObject in the specified Graphics context. * * @param g The Graphics context iin which the Shape should be drawn. * @since 30.04.1999 */ abstract void drawShape(Graphics2D g); /** * Draws the Shape of the PaintObject with the specified transformations in the specified Graphics context. * * @param g The Graphics context iin which the Shape should be drawn. * @param aff Contains the transformation appling to the Shpae before drawing. * @since 30.04.1999 */ public void drawTransformedShape(Graphics2D g,AffineTransform aff) { g.setTransform(aff); drawShape(g); } /** * Returns new PaintObject with the same properties as the current object. * * @return A new PaintObject with the same properties. * @since 30.04.1999 */ public abstract PaintObject getNewPaintObject(); /** * Returns the part of the PaintObject which should be redraw if the PaintObejct will be creating. * For example if you create a PolylineObject you have to add points. The points will be connect wiht a line. * If you add a new Point with the mouse, the last point of the PolylineObject will be connected with * the Point of the mouse cursor. These line you have to dedraw many times. These Method should give you these part of the * PaintObject which should be redraw in such cases. * * @param nextPoint The next drawing Point. * @return The part of the PaintObject which should be redraw. * @since 30.04.1999 */ public abstract PaintObject getMovePaintObject(Point2D.Float nextPoint); //{{DECLARE_CONTROLS //}} } /* * CVS Log * $Log: PaintObject.java,v $ * Revision 1.2 2003/09/08 10:12:24 kleber * Reformate Code * * Revision 1.1.1.1 2001/06/06 10:32:30 kleber * Init commit for DICOMscope 3.5 * Create new CVS * */ dicomscope-3.6.0/tkgui/viewer/paint/Point2DObject.java0000644000265600020320000001155711262371101022004 0ustar tilleaadmin/* * * Copyright (C) 1999, Institute for MicroTherapy * * This software and supporting documentation were developed by * * University of Witten/Herdecke * Department of Radiology and MicroTherapy * Institute for MicroTherapy * Medical computer science * * Universitaetsstrasse 142 * 44799 Bochum, Germany * * http://www.microtherapy.de/go/cs * mailto:computer.science@microtherapy.de * * THIS SOFTWARE IS MADE AVAILABLE, AS IS, AND THE INSTITUTE MAKES NO * WARRANTY REGARDING THE SOFTWARE, ITS PERFORMANCE, ITS MERCHANTABILITY * OR FITNESS FOR ANY PARTICULAR USE, FREEDOM FROM ANY COMPUTER DISEASES * OR ITS CONFORMITY TO ANY SPECIFICATION. THE ENTIRE RISK AS TO QUALITY * AND PERFORMANCE OF THE SOFTWARE IS WITH THE USER. * * Author : $Author: kleber $ * Last update : $Date: 2001/06/06 10:32:30 $ * Revision : $Revision: 1.1.1.1 $ * State: $State: Exp $ */ package viewer.paint; import java.awt.*; import java.awt.geom.*; /** * This class contains methods for creating a line. *
* These objects can be display or image relative. * * @author Klaus Kleber * @since 30.04.1999 * @see PaintObject */ public class Point2DObject extends PaintObject { /** * Contains the geometic form of the line. * * @since 30.04.1999 */ public Ellipse2D.Float thisShape = null; /** * Contructs an new line. * * @param start Startpoint of the line. * @param end Endpoint of the line. * @since 30.04.1999 */ public Point2DObject(Point2D.Float point) { super(); setNewPoint(point); thisShape = build(point); } /** * Constucts a new object with the specified parameter. * * @param isDisplayRelative true if the object should be display relative. * @since 30.04.1999 */ public Point2DObject( boolean isDisplayRelative) { super(); this.isDisplayRelative = isDisplayRelative; } /** * Constructs a new object. * * @since 30.04.1999 */ public Point2DObject() { super(); } /** * Gets the Shape of the Circle2DObject. * * @return The Shape of the Circle2DObject. * @since 30.04.1999 */ public Shape getShape() { return thisShape; } /** * Insert a new point to the objectPoints. You can only insert 2 points. * * @param The new point of the line * @since 30.04.1999 */ public void setNewPoint(Point2D.Float newPoint) { status = STATUS_STOP; thisShape = build(newPoint); objectPoints.add(newPoint); } /** * Returns the part of the Line2DObject which should be redraw if the Line2DObject will be created. * * @param nextPoint The next drawing Point. * @return The part of the PaintObject which should be redraw. * @see PaintObject#getMovePaintObject */ public PaintObject getMovePaintObject(Point2D.Float nextPoint) { return new Point2DObject(nextPoint); } /** * Returns a real copy of the Line2DObject. * * @return a real copy of this Line2DObject. * @since 30.04.1999 */ public PaintObject copy() { Point2DObject returnAnnotation = new Point2DObject(); for (int i = 0; i< objectPoints.size(); i++) { returnAnnotation.setNewPoint(((Point2D.Float)objectPoints.elementAt(i))); } returnAnnotation.setStatus(this.getStatus()); returnAnnotation.setFilled(filled); return returnAnnotation; } /** * Draws the Shape of the Line2DObject in the specified Graphics context. * * @param g The Graphics context in which the Shape should be drawn. * @since 30.04.1999 */ public void drawShape(Graphics2D g) { if ((g!=null) && (thisShape!= null)) { g.draw(thisShape); g.fill(thisShape); } } /** * Returns new Line2DObject with the same properties as the current object. * * @return A new Line2DObject with the same properties. * @since 30.04.1999 */ public PaintObject getNewPaintObject() { return new Point2DObject(isDisplayRelative); } /** * Contructs a cirular Ellipse2D form the specified parameters. * * @param center Center of the circle * @param point Point of the border. * @since 30.04.1999 */ public Ellipse2D.Float build(Point2D.Float center) { float radius = 5; float x = center.x-radius; float y = center.y-radius; float w = 2*radius; float h = 2*radius; return new Ellipse2D.Float(x,y,w,h); } } /* * CVS Log * $Log: Point2DObject.java,v $ * Revision 1.1.1.1 2001/06/06 10:32:30 kleber * Init commit for DICOMscope 3.5 * Create new CVS * */ dicomscope-3.6.0/tkgui/viewer/paint/PolylineObject.java0000644000265600020320000001233411262371101022312 0ustar tilleaadmin/* * * Copyright (C) 1999, Institute for MicroTherapy * * This software and supporting documentation were developed by * * University of Witten/Herdecke * Department of Radiology and MicroTherapy * Institute for MicroTherapy * Medical computer science * * Universitaetsstrasse 142 * 44799 Bochum, Germany * * http://www.microtherapy.de/go/cs * mailto:computer.science@microtherapy.de * * THIS SOFTWARE IS MADE AVAILABLE, AS IS, AND THE INSTITUTE MAKES NO * WARRANTY REGARDING THE SOFTWARE, ITS PERFORMANCE, ITS MERCHANTABILITY * OR FITNESS FOR ANY PARTICULAR USE, FREEDOM FROM ANY COMPUTER DISEASES * OR ITS CONFORMITY TO ANY SPECIFICATION. THE ENTIRE RISK AS TO QUALITY * AND PERFORMANCE OF THE SOFTWARE IS WITH THE USER. * * Author : $Author: kleber $ * Last update : $Date: 2001/06/06 10:32:30 $ * Revision : $Revision: 1.1.1.1 $ * State: $State: Exp $ */ package viewer.paint; import J2Ci.*; import java.awt.*; import java.util.*; import java.awt.geom.*; /** * This class contains methods for creating a polyline. *
* These objects can be display or image relative. *
* These objects can be a shutter. * * @author Klaus Kleber * @since 30.04.1999 * @see PaintObject */ public class PolylineObject extends PaintObject { /** * Contains the geometic form of the polyline. * * @since 30.04.1999 */ GeneralPath thisShape = null; /** * Constructs a new object. * * @since 30.04.1999 */ public PolylineObject() { super(); } /** * Constucts a new object with the specified parameter. * * @param filled true if the object should be filled * @param isDisplayRelative true if the object should be display relative. * @param isShutter true if the object should be a shutter. * @since 30.04.1999 */ public PolylineObject(boolean filled, boolean isDisplayRelative,boolean isShutter) { super(); this.filled = filled; this.isShutter = isShutter; this.isDisplayRelative = isDisplayRelative; } /** * Constucts a new object form the specified parameter * * @param anPolylineObject Constructor copies the specified object. * @param isDisplayRelative true if the object should be display relative. * @param isShutter true if the object should be a shutter. * @since 30.04.1999 */ public PolylineObject(PolylineObject anPolylineObject) { super(); for (int i = 0; i < anPolylineObject.getObjectPoints().size(); i++) { setNewPoint((Point2D.Float) (anPolylineObject.getObjectPoints().elementAt(i))); } this.setStatus( anPolylineObject.getStatus()); this.setFilled(anPolylineObject.filled); } /** * Returns the part of the PolylineObject which should be redraw if the Circle2DObject will be created. * * @param nextPoint The next drawing Point. * @return The part of the PaintObject which should be redraw. * @see PaintObject#getMovePaintObject */ public PaintObject getMovePaintObject(Point2D.Float nextPoint) { return new Line2DObject(getCopyPointAt(objectPoints.size()-1), nextPoint); } /** * Insert a new point to the objectPoints. * * @param The new point of the circle * @since 30.04.1999 */ public void setNewPoint(Point2D.Float newPoint) { if (objectPoints.size() == 0) { status = STATUS_BEGIN; thisShape = new GeneralPath(); thisShape.moveTo(newPoint.x,newPoint.y); } else { thisShape.lineTo(newPoint.x,newPoint.y); } if (objectPoints.size() == 1) status = STATUS_WORK; objectPoints.add(newPoint); System.out.println("point: " + newPoint.toString()); } /** * Gets the Shape of the PolylineObject. * * @return The Shape of the Circle2DObject. * @since 30.04.1999 */ public Shape getShape() { return thisShape; } /** * Draws the Shape of the Circle2DObject in the specified Graphics context. * * @param g The Graphics context in which the Shape should be drawn. * @since 30.04.1999 */ public void drawShape(Graphics2D g) { if ((g!=null) && (thisShape!= null)) { g.draw(thisShape); if ((filled) && isClosed() && (status == PaintObject.STATUS_STOP)) g.fill(thisShape); } } /** * Returns a real copy of the PolylineObject. * * @return A real copy of this PolylineObject. * @since 30.04.1999 */ public PaintObject copy() { return new PolylineObject(this); } /** * Returns new PolylineObject with the same properties as the current object. * * @return A new PolylineObject with the same properties. * @since 30.04.1999 */ public PaintObject getNewPaintObject() { return new PolylineObject(filled,isDisplayRelative,isShutter); } } /* * CVS Log * $Log: PolylineObject.java,v $ * Revision 1.1.1.1 2001/06/06 10:32:30 kleber * Init commit for DICOMscope 3.5 * Create new CVS * */ dicomscope-3.6.0/tkgui/viewer/paint/Rectangle2DObject.java0000644000265600020320000001411211262371101022605 0ustar tilleaadmin/* * * Copyright (C) 1999, Institute for MicroTherapy * * This software and supporting documentation were developed by * * University of Witten/Herdecke * Department of Radiology and MicroTherapy * Institute for MicroTherapy * Medical computer science * * Universitaetsstrasse 142 * 44799 Bochum, Germany * * http://www.microtherapy.de/go/cs * mailto:computer.science@microtherapy.de * * THIS SOFTWARE IS MADE AVAILABLE, AS IS, AND THE INSTITUTE MAKES NO * WARRANTY REGARDING THE SOFTWARE, ITS PERFORMANCE, ITS MERCHANTABILITY * OR FITNESS FOR ANY PARTICULAR USE, FREEDOM FROM ANY COMPUTER DISEASES * OR ITS CONFORMITY TO ANY SPECIFICATION. THE ENTIRE RISK AS TO QUALITY * AND PERFORMANCE OF THE SOFTWARE IS WITH THE USER. * * Author : $Author: kleber $ * Last update : $Date: 2001/06/06 10:32:30 $ * Revision : $Revision: 1.1.1.1 $ * State: $State: Exp $ */ package viewer.paint; import java.awt.*; import java.awt.geom.*; /** * This class contains methods for creating a rectangle. *
* These objects can be display or image relative. *
* These objects can be a shutter. * * @author Klaus Kleber * @since 30.04.1999 * @see PaintObject */ public class Rectangle2DObject extends PaintObject { /** * Contains the geometic form of the circle. * * @since 30.04.1999 */ public Rectangle2D.Float thisShape = null; /** * Contructs an new Rectangle2DObject form the specified parameters. * * @param tlhc Top left hand coner of the rectangle * @param brhc Bottom right hand coner of the rectangle * @since 30.04.1999 */ public Rectangle2DObject(Point2D.Float tlhc , Point2D.Float brhc) { super(); setNewPoint(tlhc); setNewPoint(brhc); thisShape = buildRectangle(tlhc,brhc); } /** * Gets the Shape of the Rectangle2DObject. * * @return The Shape of the Rectangle2DObject. * @since 30.04.1999 */ public Shape getShape() { return thisShape; } /** * Constructs a new object. * * @since 30.04.1999 */ public Rectangle2DObject() { super(); } /** * Constucts a new object with the specified parameter. * * @param filled true if the object should be filled * @param isDisplayRelative true if the object should be display relative. * @param isShutter true if the object should be a shutter. * @since 30.04.1999 */ public Rectangle2DObject(boolean filled , boolean isDisplayRelative,boolean isShutter) { super(); this.filled = filled; this.isShutter = isShutter; this.isDisplayRelative = isDisplayRelative; } /** * Insert a new point to the objectPoints. You can only insert 2 points. * * @param The new point of the circle * @since 30.04.1999 */ public void setNewPoint(Point2D.Float newPoint) { objectPoints.add(newPoint); if (objectPoints.size() == 1) { status = STATUS_BEGIN; } else { status = STATUS_STOP; thisShape = buildRectangle(((Point2D.Float)objectPoints.elementAt(0)),((Point2D.Float)objectPoints.elementAt(1))); } } /** * Returns the part of the Rectangle2DObject which should be redraw if the Rectangle2DObject will be created. * * @param nextPoint The next drawing Point. * @return The part of the PaintObject which should be redraw. * @see PaintObject#getMovePaintObject */ public PaintObject getMovePaintObject(Point2D.Float nextPoint) { return new Rectangle2DObject(getCopyPointAt(0), nextPoint); } /** * Returns a real copy of the Rectangle2DObject. * * @return a real copy of this Rectangle2DObject. * @since 30.04.1999 */ public PaintObject copy() { Rectangle2DObject returnAnnotation = new Rectangle2DObject(); for (int i = 0; i< objectPoints.size(); i++) { returnAnnotation.setNewPoint(((Point2D.Float)objectPoints.elementAt(i))); } returnAnnotation.setStatus(this.getStatus()); returnAnnotation.setFilled(filled); returnAnnotation.isDisplayRelative = isDisplayRelative; returnAnnotation.thisShape=buildRectangle(((Point2D.Float)objectPoints.elementAt(0)),((Point2D.Float)objectPoints.elementAt(1))); return returnAnnotation; } /** * Draws the Shape of the Rectangle2DObject in the specified Graphics context. * * @param g The Graphics context in which the Shape should be drawn. * @since 30.04.1999 */ public void drawShape(Graphics2D g) { if ((g!=null) && (thisShape!= null)) { g.draw(thisShape); if (filled) g.fill(thisShape); } } /** * Contructs a Rectangle2D form the specified parameters. * * @param tlhc Top left hand coner of the rectangle * @param brhc Bottom right hand coner of the rectangle * @since 30.04.1999 */ public Rectangle2D.Float buildRectangle(Point2D.Float tlhc, Point2D.Float brhc) { if (tlhc.x >brhc.x) { float change = tlhc.x; tlhc.x = brhc.x; brhc.x = change; } if (tlhc.y >brhc.y) { float change = tlhc.y; tlhc.y = brhc.y; brhc.y = change; } float x = tlhc.x; float y = tlhc.y; float w = brhc.x-x; float h = brhc.y-y; return new Rectangle2D.Float(x,y,w,h); } /** * Returns new Rectangle2DObject with the same properties as the current object. * * @return A new Rectangle2DObject with the same properties. * @since 30.04.1999 */ public PaintObject getNewPaintObject() { return new Rectangle2DObject(filled,isDisplayRelative,isShutter); } } /* * CVS Log * $Log: Rectangle2DObject.java,v $ * Revision 1.1.1.1 2001/06/06 10:32:30 kleber * Init commit for DICOMscope 3.5 * Create new CVS * */ dicomscope-3.6.0/tkgui/viewer/presentation/0002755000265600020320000000000011262371101020124 5ustar tilleaadmindicomscope-3.6.0/tkgui/viewer/presentation/DisplayArea.java0000644000265600020320000000566511262371101023177 0ustar tilleaadmin/* * * Copyright (C) 1999, Institute for MicroTherapy * * This software and supporting documentation were developed by * * University of Witten/Herdecke * Department of Radiology and MicroTherapy * Institute for MicroTherapy * Medical computer science * * Universitaetsstrasse 142 * 44799 Bochum, Germany * * http://www.microtherapy.de/go/cs * mailto:computer.science@microtherapy.de * * THIS SOFTWARE IS MADE AVAILABLE, AS IS, AND THE INSTITUTE MAKES NO * WARRANTY REGARDING THE SOFTWARE, ITS PERFORMANCE, ITS MERCHANTABILITY * OR FITNESS FOR ANY PARTICULAR USE, FREEDOM FROM ANY COMPUTER DISEASES * OR ITS CONFORMITY TO ANY SPECIFICATION. THE ENTIRE RISK AS TO QUALITY * AND PERFORMANCE OF THE SOFTWARE IS WITH THE USER. * * Author : $Author: kleber $ * Last update : $Date: 2003/09/08 10:17:26 $ * Revision : $Revision: 1.2 $ * State: $State: Exp $ */ package viewer.presentation; /** * Contains a DICOM display area. */ public class DisplayArea{ public int tlhc_x; public int tlhc_y; public int brhc_x; public int brhc_y; /** * @param tlhc_x * @param tlhc_y * @param brhc_x * @param brhc_y * @param rotation * @param flipped */ public DisplayArea( int tlhc_x, int tlhc_y, int brhc_x, int brhc_y) { this.tlhc_x = tlhc_x; this.tlhc_y = tlhc_y; this.brhc_x = brhc_x; this.brhc_y = brhc_y; } public String toString() { return new String("TLHC: = " + tlhc_x + "/" + tlhc_y+ ", BRHC: = " + brhc_x + "/" + brhc_y); } /** * @param zoom */ public void setZoom(double zoom) { tlhc_x = (int)(zoom*tlhc_x); tlhc_y = (int)(zoom*tlhc_y); brhc_y = (int)(zoom*brhc_y); brhc_x = (int)(zoom*brhc_x); } public int getDimensionX() { return brhc_x-tlhc_x; } public int getDimensionY() { return brhc_y-tlhc_y; } public boolean equals(Object o) { if ( o instanceof DisplayArea) { DisplayArea displayedArea=(DisplayArea) o; if (displayedArea.tlhc_x==tlhc_x &&displayedArea.tlhc_y==tlhc_y &&displayedArea.brhc_x==brhc_x&&displayedArea.brhc_y==brhc_y){ return true; } else { return false; } } else { throw new ClassCastException(); } } public int getTlhcX() { return tlhc_x; } public int getTlhcY() { return tlhc_y; } public int getBrhcX() { return brhc_x; } public int getBrhcY() { return brhc_y; } } /* * CVS Log * $Log: DisplayArea.java,v $ * Revision 1.2 2003/09/08 10:17:26 kleber * Bugfix: The Displayed Area is defined after the spatial transformation. * * Revision 1.1.1.1 2001/06/06 10:32:30 kleber * Init commit for DICOMscope 3.5 * Create new CVS * */ dicomscope-3.6.0/tkgui/viewer/presentation/DisplayAreaTest.java0000644000265600020320000000527711262371101024036 0ustar tilleaadmin/* * * Copyright (C) 1999, Institute for MicroTherapy * * This software and supporting documentation were developed by * * University of Witten/Herdecke * Department of Radiology and MicroTherapy * Institute for MicroTherapy * Medical computer science * * Universitaetsstrasse 142 * 44799 Bochum, Germany * * http://www.microtherapy.de/go/cs * mailto:computer.science@microtherapy.de * * THIS SOFTWARE IS MADE AVAILABLE, AS IS, AND THE INSTITUTE MAKES NO * WARRANTY REGARDING THE SOFTWARE, ITS PERFORMANCE, ITS MERCHANTABILITY * OR FITNESS FOR ANY PARTICULAR USE, FREEDOM FROM ANY COMPUTER DISEASES * OR ITS CONFORMITY TO ANY SPECIFICATION. THE ENTIRE RISK AS TO QUALITY * AND PERFORMANCE OF THE SOFTWARE IS WITH THE USER. * * * Author : $Author: kleber $ * Last update : $Date: 2001/06/06 10:32:30 $ * Revision : $Revision: 1.1.1.1 $ * State: $State: Exp $ */ package viewer.presentation; import junit.framework.*; import java.awt.*; // list of common used packages import java.awt.event.*; import java.io.*; import java.io.ByteArrayInputStream; import java.util.*; import javax.swing.*; /** * JUnit TestSuite for SimpleTest *
* Start main to run testcases or * execute junit.swingui.TestRunner.run( SimpleTest.class ) * to execute visual test. * * *

*
Revision:
*
$Revision: 1.2 $
*
Date:
*
$Date: 2002/11/29 17:31:40 $
*
* * @author NAME * @version $Revision: 1.2 $ */ public class DisplayAreaTest extends TestCase { ////////////////////////////////////////// // F I X T U T R E T E S T S E T S // defines the test-sets // used by every TestCase ////////////////////////////////////////// // TestSet-Data // TestObject my_test_object_a = null; // TestObject my_test_object_b = null; public DisplayAreaTest(java.lang.String testName) { super(testName); } /** * initializes the testset. * This method is being executed before * any TestCase (testMethod) is being called. */ public void setUp() { } /** * Deinitializes the testset. * This method is being executed before * any TestCase (testMethod) is being called. */ public void tearDown() { // my_test_object_a.dispose(); // my_test_object_b.dispose(); } public static void main(java.lang.String[] args) { junit.textui.TestRunner.run(suite()); } public static Test suite() { TestSuite suite = new TestSuite(DisplayAreaTest.class); return suite; } } /* * $Log: $ */ dicomscope-3.6.0/tkgui/viewer/presentation/JavaTransformationConverter.java0000644000265600020320000001640711262371101026475 0ustar tilleaadmin/* * * Copyright (C) 1999, Institute for MicroTherapy * * This software and supporting documentation were developed by * * University of Witten/Herdecke * Department of Radiology and MicroTherapy * Institute for MicroTherapy * Medical computer science * * Universitaetsstrasse 142 * 44799 Bochum, Germany * * http://www.microtherapy.de/go/cs * mailto:computer.science@microtherapy.de * * THIS SOFTWARE IS MADE AVAILABLE, AS IS, AND THE INSTITUTE MAKES NO * WARRANTY REGARDING THE SOFTWARE, ITS PERFORMANCE, ITS MERCHANTABILITY * OR FITNESS FOR ANY PARTICULAR USE, FREEDOM FROM ANY COMPUTER DISEASES * OR ITS CONFORMITY TO ANY SPECIFICATION. THE ENTIRE RISK AS TO QUALITY * AND PERFORMANCE OF THE SOFTWARE IS WITH THE USER. * * Author : $Author: kleber $ * Last update : $Date: 2001/06/06 10:32:30 $ * Revision : $Revision: 1.1.1.1 $ * State: $State: Exp $ */ package viewer.presentation; import java.awt.geom.*; import java.util.*; import java.awt.*; import java.awt.image.*; import main.*; import J2Ci.*; /** * This class contains and gets the current image pixels from * the C++ interface. The visible part of the image and the * shutter can be drawn in a BufferedImage. The visible part of the * image will be zoomed with java functions on the specified size. * * @author Klaus Kleber. * @since 30.04.1999 * @see TransformationConverter */ public class JavaTransformationConverter extends TransformationConverter { /** * Contains the current image. * * @since 30.04.1999 */ BufferedImage dicomImage; /** * Contains the current image pixels. * * @since 30.04.1999 */ DataBufferByte dbb; /** * Constructs an new Object whit an copy of the image data. * * @param presentationStateGraphicsHandler Contains the current PresentationStateGraphicsHandler * @since 30.04.1999 */ public JavaTransformationConverter(PresentationStateGraphicsHandler presentationStateGraphicsHandler) { super(presentationStateGraphicsHandler); } /** * Gets the pixel data form the c++ part if newPixels = ture, draws the * image into the specified BufferedImage which will be drawn on the screenand calculates the transformations for the * Annotations, Shutters, Overlays usw. The Shutter will be cilpped to the * BufferedImage. * * @param bufferedImage Contains the BufferedImage which will be drawn on the screen. * @param newPixels true if the pixel should be request form the c++ part. * @since 30.04.1999 */ public void draw(BufferedImage bufferedImage, boolean newPixels, boolean newBackground) { //Load pixeldata if changed if (newPixels) getNewPixels(); //Clearing Background of image whit the specified ShutterColor byte colorback = presentationStateGraphicsHandler.shutterList.getGreyColorByte(); byte[] byteArray = ((DataBufferByte)(bufferedImage.getRaster().getDataBuffer())).getData(); int size = displayDimension.width*displayDimension.height; // cost a lost of time // we have to optimize it. if (newBackground) { for (int i=0; i< size; i++) byteArray[i] = colorback; } //Paint in Screen BufferedImage subBufferedImage = null; subBufferedImage = bufferedImage.getSubimage(displayPixelTLHC.x,displayPixelTLHC.y,bufferedImage.getWidth()-displayPixelTLHC.x,bufferedImage.getHeight()-displayPixelTLHC.y); BufferedImage subDicomImage = null; subDicomImage = dicomImage.getSubimage(sourcePixelTLHC.x,sourcePixelTLHC.y,dicomImage.getWidth()-sourcePixelTLHC.x,dicomImage.getHeight()-sourcePixelTLHC.y); Graphics2D g2 = (Graphics2D)subBufferedImage.getGraphics(); if (g2!= null) { try { //Sets the vector shutters as a clipping area. AffineTransform shutterAff = new AffineTransform(); shutterAff.translate(-displayPixelTLHC.x, -displayPixelTLHC.y); shutterAff.concatenate(aff); //Sets the clipping area presentationStateGraphicsHandler.shutterList.setClip(g2,shutterAff); g2.setTransform(new AffineTransform()); AffineTransform zoomAff = new AffineTransform(); zoomAff.scale(zoomValue*presentationStateGraphicsHandler.getCurrentScalingX(), zoomValue*presentationStateGraphicsHandler.getCurrentScalingY()); //Draws and zooms the image //int gray = (int)(colorback & 0xff); //g2.setColor(new Color(gray,gray,gray)); // g2.setBackground(new Color(gray,gray,gray)); g2.drawRenderedImage(subDicomImage, zoomAff); //removes any clipping Area g2.setClip(null); } finally { g2.dispose(); } } } public void printImage() { } /** * Gets the image pixel data from the C++ part of the code. * * @since 30.04.1999 */ public void getNewPixels() { WritableRaster wr ; int bandOffsets[] = {0}; //System.out.println("setPixels"); int status = jE_Condition.EC_Normal; if ((dbb == null) || (dbb.getSize() !=presentationStateGraphicsHandler.getImageWidth()*presentationStateGraphicsHandler.getImageHeight())) { if (dbb != null) { dbb = null; System.gc(); } dbb = new DataBufferByte(new byte[presentationStateGraphicsHandler.getImageWidth()*presentationStateGraphicsHandler.getImageHeight()], presentationStateGraphicsHandler.getImageWidth()*presentationStateGraphicsHandler.getImageHeight()); } //gets the pixel status = presentationStateGraphicsHandler.ps.getPixelData(dbb.getData(), (long) dbb.getSize()); if (status != jE_Condition.EC_Normal) System.out.println("Fehler bei ps.getPixelData"); //Create new Image wr = Raster.createInterleavedRaster(dbb, presentationStateGraphicsHandler.getCurrentImageWidth(), presentationStateGraphicsHandler.getCurrentImageHeight(), presentationStateGraphicsHandler.getCurrentImageWidth(), 1, bandOffsets,null); dicomImage = new BufferedImage(MainContext.instance().getIndexColorModel(), wr, MainContext.instance().getIndexColorModel().isAlphaPremultiplied(), null); /* byte[] help = dbb.getData(); for (int i = 0; i= 0 )||(ps.getNumberOfOverlaysInPresentationState()>= 0)) return true; else return false; } /** * Draws all activeate overlay off one layer in the specified Graphics2D context. * The layer is specified with his index in the current jDVPresentationState. * Before drawing the overlay the specified transformations will be applied. * * @param g2 Contains the Graphics2D context. * @param aff Contains the applying transformation. * @param layerIndex Contains the index of the layers in the jDVPresentationState object. * @since 30.04.1999 */ public void draw(Graphics2D g2, AffineTransform aff, int layerIndex, int bits) { for (int i = 0; i < ps.getNumberOfActiveOverlays(layerIndex); i++) { PresentationStateOverlayObject overlayObject = new PresentationStateOverlayObject(ps,layerIndex, i, bits); overlayObject.draw(g2,aff); } } /** * Gets a textual representation of an image overlay. * * @param imageIndex Contains index off the image overlay in the jDVPresentationState. * @since 30.04.1999 * @see J2Ci.jDVPresentationState#getOverlayInImageGroup */ public String getImageListText(int imageIndex) { return new String("image overlay: " +getRepeatingGroup(ps.getOverlayInImageGroup(imageIndex)) + ", " +ps.getOverlayInImageLabel(imageIndex)); } /** * Gets a textual representation of an overlay in the presentation state. * * @param imageIndex Contains index off the image overlay in the jDVPresentationState. * @since 30.04.1999 * @see J2Ci.jDVPresentationState#getOverlayInPresentationStateGroup */ public String getPresentationStateListText(int imageIndex) { return new String("prs. overlay: " +getRepeatingGroup(ps.getOverlayInPresentationStateGroup(imageIndex)) + ", " +ps.getOverlayInImageLabel(imageIndex)); } /** * Gets a textual representation of an overlay * in the specified layer * * @param layerIndex Contains the index off the layer in the jDVPresentationState * @param imageIndex Contains index off the image overlay in specified layer. * @since 30.04.1999 * @see J2Ci.jDVPresentationState#getActiveOverlayGroup */ public String getListText(int layerIndex, int imageIndex) { String returnString = new String ("Overlay: "+ getRepeatingGroup(ps.getActiveOverlayGroup(layerIndex,imageIndex)) + ", " + ps.getActiveOverlayLabel(layerIndex,imageIndex)); return returnString; } /** * Gets a textual representation of repeating group. * * @param repeatingGroupNumber Value of the reapeating group. * @since 30.04.1999 */ public String getRepeatingGroup(int repeatingGroupNumber) { if (repeatingGroupNumber == 24576) return new String("6000"); if (repeatingGroupNumber == 24578) return new String("6002"); if (repeatingGroupNumber == 24580) return new String("6004"); if (repeatingGroupNumber == 24582) return new String("6006"); if (repeatingGroupNumber == 24584) return new String("6008"); if (repeatingGroupNumber == 24586) return new String("600A"); return new Integer(repeatingGroupNumber).toString(); } /** * Activates an daektivated overlay in the specified layer. The * imageIndex is the index off the deactivated overlay. * * @param layerIndex Contains the index off the layer in the jDVPresentationState * @param imageIndex Contains index off the deaktivated overlay. * @since 30.04.1999 * @see J2Ci.jDVPresentationState#activateOverlayInImage * @see J2Ci.jDVPresentationState#activateOverlayInPresentationState */ public void activateOverlay(int imageIndex, int layerIndex) { int searchIndex = -1; for (int i = 0; i < ps.getNumberOfOverlaysInImage(); i++) { if (ps.getOverlayInImageActivationLayer(i) == -1) { searchIndex++; if (searchIndex == imageIndex) { int status = ps.activateOverlayInImage(layerIndex,i); return; } } } //overlay is overlay in presentation state for (int i = 0; i < ps.getNumberOfOverlaysInPresentationState(); i++) { if (ps.getOverlayInPresentationStateActivationLayer(i) == -1) { searchIndex++; if (searchIndex == imageIndex) { int status = ps.activateOverlayInPresentationState(layerIndex,i); return; } } } } } /* * CVS Log * $Log: OverlayList.java,v $ * Revision 1.1.1.1 2001/06/06 10:32:30 kleber * Init commit for DICOMscope 3.5 * Create new CVS * */ dicomscope-3.6.0/tkgui/viewer/presentation/PaintStructure.java0000644000265600020320000004000511262371101023760 0ustar tilleaadmin/* * * Copyright (C) 1999, Institute for MicroTherapy * * This software and supporting documentation were developed by * * University of Witten/Herdecke * Department of Radiology and MicroTherapy * Institute for MicroTherapy * Medical computer science * * Universitaetsstrasse 142 * 44799 Bochum, Germany * * http://www.microtherapy.de/go/cs * mailto:computer.science@microtherapy.de * * THIS SOFTWARE IS MADE AVAILABLE, AS IS, AND THE INSTITUTE MAKES NO * WARRANTY REGARDING THE SOFTWARE, ITS PERFORMANCE, ITS MERCHANTABILITY * OR FITNESS FOR ANY PARTICULAR USE, FREEDOM FROM ANY COMPUTER DISEASES * OR ITS CONFORMITY TO ANY SPECIFICATION. THE ENTIRE RISK AS TO QUALITY * AND PERFORMANCE OF THE SOFTWARE IS WITH THE USER. * * Author : $Author: kleber $ * Last update : $Date: 2001/06/06 10:32:30 $ * Revision : $Revision: 1.1.1.1 $ * State: $State: Exp $ */ package viewer.presentation; import java.util.*; import java.awt.geom.*; import java.awt.*; import java.awt.image.*; import J2Ci.*; import viewer.paint.*; import viewer.gui.*; import main.*; import javax.swing.*; /** * This class manages the drawing and manipulating of * the currently active objects on the display. * * @author Klaus Kleber * @since 30.04.1999 */ public class PaintStructure { /** * Contains the Point where a moving opations of a PresentationStateLayerObject * starts. * * @since 30.04.1999 */ Point2D.Float moveAnn= new Point2D.Float(); /** * Contains the currently painted Paintobject. This * Object is painted in the xorMode because it saves speed. * * @since 30.04.1999 */ PaintObject currentPaintObject = null; /** * Contains the a help value . This * Object is painted in the xorMode because it saves speed. * * @since 30.04.1999 */ public PaintObject oldPaintObject = null; /** * Contains the xorColor for displaying the active object. * The xorMode will be used for drawing the active object. * * @since 30.04.1999 */ Color xorColor = Color.gray; /** * Contains the image displaying Canvas * * @since 30.04.1999 * @see PresentationStateGraphicsHandler */ JPanel imageCanvas; /** * Contains the current PresentationStateGraphicsHandler. * * @since 30.04.1999 * @see PresentationStateGraphicsHandler */ PresentationStateGraphicsHandler presentationStateGraphicsHandler; /** * Contains the currently active PresentationStateLayerObject on the * display if exist. If a PresentationStateLayerObject is active * you can manipulate this object in the Canvas. * * @since 30.04.1999 * @see PresentationStateLayerObject */ public PresentationStateLayerObject currentObject = null; /** * Contains the current transformation for drawing objects. * * @since 30.04.1999 */ public AffineTransform aff; public boolean filled = false; public boolean imageRelative = true; /** * Constructs a new object. * * @param presentationStateGraphicsHandler Contains the current PresentationStateGraphicsHandler * @since 30.04.1999 */ public PaintStructure(PresentationStateGraphicsHandler presentationStateGraphicsHandler) { currentPaintObject =null; oldPaintObject = null; aff = new AffineTransform(); this.presentationStateGraphicsHandler = presentationStateGraphicsHandler; } /** * Fills/unfills the currentPaintObject. * * @param filled Fills/unfills the currentPaintObject. * @since 30.04.1999 */ public void setFilled() { filled = !filled; if (currentPaintObject != null) currentPaintObject.setFilled(filled); } /** * Sets the currentPaintObject to image relative or display relative. * * @param isDisplayRelative True sets the currentPaintObject to display relative, false sets the currentPaintObject to imageRelative. * @since 30.04.1999 */ public void setImageRelative() { imageRelative = !imageRelative; if (currentPaintObject != null) currentPaintObject.isDisplayRelative= !imageRelative; } /** * Insert a new point to the currentPaintObject. * If the status of the PaintObejct becomes STATUS_STOP, * the PointObject will be transformed to a PresentationStateGraphicObject. * * @param newPoint Specifies the new point of the PaintObject. * @since 30.04.1999 */ public void setNewPoint(Point2D.Float newPoint, int applyTo) { System.out.println("setNewPoint"); if (currentPaintObject.getStatus() == PaintObject.STATUS_STOP) { } //First point if (currentPaintObject.getStatus() == PaintObject.STATUS_NULL) { //setNewGraphicPaintObject(currentPaintObject); } currentPaintObject.setNewPoint(getInverseTransformedPoint(newPoint)); if (currentPaintObject.getStatus() == PaintObject.STATUS_STOP) { paintInImageCanvas(currentPaintObject, presentationStateGraphicsHandler.getCurrentColor()); presentationStateGraphicsHandler.newPaintObject(currentPaintObject,aff, applyTo); currentPaintObject = currentPaintObject.getNewPaintObject(); } if ((oldPaintObject != null) && (oldPaintObject instanceof InterpolatedObject)) { setWorkingShape(null); } oldPaintObject = null; } /** * Deletes the currentPaintObject. * * @since 30.04.1999 */ public void deleteCurrentPaintObject() { //Creating the graphics2D Graphics2D g2 = (Graphics2D)imageCanvas.getGraphics(); if (g2!= null) { try { //Painting the new shape g2.setXORMode(xorColor); if (oldPaintObject != null) oldPaintObject.drawTransformedShape(g2,aff); if (currentPaintObject != null)currentPaintObject.drawTransformedShape(g2,aff); } finally { g2.dispose(); } } if (currentPaintObject!= null) currentPaintObject = currentPaintObject.getNewPaintObject(); } /** * Paints a new Point to the currentPaintObject, removes the last Point and * draws the currentPaintObject with the xorMode in the imageCanvas. * * @param newPoint Specifies the new point of the currentPaintObject. * @since 30.04.1999 */ public void setPaintPoint(Point2D.Float nextPoint) { System.out.println("setPaintPoint"); if ((currentPaintObject.getStatus() == PaintObject.STATUS_BEGIN)|| (currentPaintObject.getStatus() == PaintObject.STATUS_WORK)) { setWorkingShape(currentPaintObject.getMovePaintObject(getInverseTransformedPoint(nextPoint))); } } /** * Draws the current state of the paintStructure in the xorMode. * * @since 30.04.1999 */ public void drawState(Graphics2D g2) { g2.setXORMode(xorColor); if (oldPaintObject != null) oldPaintObject.drawTransformedShape(g2,aff); if (currentPaintObject != null) currentPaintObject.drawTransformedShape(g2,aff); } /** * Resets the paintStructure. * * @since 30.04.1999 */ public void reset() { currentObject = null; currentPaintObject = null; oldPaintObject = null; } /** * Gets the currentPaintObject * * @return The currentPaintObject. * @since 30.04.1999 */ public PaintObject getCurrentPaintObject() { return currentPaintObject; } /** * Sets the currentPaintObject * * @param The new PaintObject. * @since 30.04.1999 */ public void setCurrentPaintObject(PaintObject newPaintObject) { currentPaintObject = newPaintObject; } /** * Sets a new Point for moveAnn * * @param The new value * @since 30.04.1999 */ public void setMoveAnn(Point2D.Float newPoint) { moveAnn = newPoint; } /** * Sets the Canvas in which the you can draw. * * @param imageCanvas The new Canvas. * @since 30.04.1999 */ public void setImageCanvas(JPanel imageCanvas) { this.imageCanvas = imageCanvas; } /** * Returns the inverse transformed point form the AffineTransformation aff. * * @param displayPoint The transforming point. * @return The inverse transformed point * @since 30.04.1999 */ public Point2D.Float getInverseTransformedPoint(Point2D.Float displayPoint) { Point2D.Float dstPoint = new Point2D.Float(); try { aff.inverseTransform(displayPoint,dstPoint); } catch(NoninvertibleTransformException e) { System.out.println("NoninvertibleTransformException: " + e); } return dstPoint; } /** * Moves the currentObject if this object is a PresentationStateGraphicObject. * The moving size and the direction depends form the Point moveAnn (defined in this * class) and the specified point. * * @param point The next point where the currentObject have to moved. * @since 30.04.1999 */ public void movePresentationStateGraphicObject(Point2D.Float point) { //Creating the graphics2D Graphics2D g2 = (Graphics2D)imageCanvas.getGraphics(); if (g2!= null) { try { g2.setXORMode(xorColor); if (this.currentObject != null) { //Overwrites the old currentObject currentObject.drawMarked(g2,aff); currentObject.moveTo(moveAnn, point); //writes the new currentObject currentObject.drawMarked(g2,aff); } } finally { g2.dispose(); } moveAnn = point; } } /** * Moves the currentObject if this object is a PresentationStateTextObject * to the specified point. There are two types of moving: First you can move * the bounding box of the PresentationStateTextObject. Secoundly you can move * the anchor point of the PresentationStateTextObject. Which type of moving * is used depends from the properties of the PresentationStateTextObject. * * @param point The next point where the PresentationStateTextObject have to moved. * @since 30.04.1999 */ public void movePresentationStateTextObject(Point2D.Float point) { if (currentObject instanceof PresentationStateTextObject) { PresentationStateTextObject clickedText =(PresentationStateTextObject)currentObject; //Creating the graphics2D Graphics2D g2 = (Graphics2D)imageCanvas.getGraphics(); if (g2!= null) { try { g2.setXORMode(xorColor); //clears the old text if ((clickedText!= null)&&(clickedText.firstDraw == true))clickedText.draw(g2,aff, false); clickedText.firstDraw = true; //Draws the bunding box if needed if (clickedText.needBox) { clickedText.setNewBoundingBox(g2,point,aff); } //draws the anchor point if needed else if (clickedText.needAnchorPoint) { clickedText.setNewAnchor(g2,point,aff); //Draws the new box } if (clickedText!= null)clickedText.draw(g2,aff, false); } finally { g2.dispose(); } } } } /** * Draws the specified paintObject with the specified Color in * the Graphics2D context of the imageCanvas. * * @param paintObject Specifies the drawing PaintObject * @param color Specifies the drawing Color. * @since 30.04.1999 */ private void paintInImageCanvas(PaintObject paintObject, Color color) { //Creating the graphics2D Graphics2D g2 = (Graphics2D)imageCanvas.getGraphics(); if (g2!= null) { try { //Overpainting the last shape g2.setPaint(color); if (paintObject != null) paintObject.drawTransformedShape(g2,aff); } finally { g2.dispose(); } } } /** * Sets the specified status to the currentPaintObject. * * @param status Specifies the new status of the current PaintObject * @since 30.04.1999 */ public void setCurrentStatus(int status, int applyTo) { getCurrentPaintObject().setStatus(status); paintInImageCanvas(currentPaintObject, presentationStateGraphicsHandler.getCurrentColor()); presentationStateGraphicsHandler.newPaintObject(currentPaintObject,aff, applyTo); } /** * Deletes the currentPaintobject, overwites the geometic representation * in the imageCanvas in the xorMode, sets the specified * PaintObject as the new PaintObejct and draws this object in the imageCanvas * with the xorMode. * * @param thePaintObject Specifies the new PaintObject * @since 30.04.1999 */ public void setWorkingShape(PaintObject thePaintObject) { //Creating the graphics2D Graphics2D g2 = (Graphics2D)imageCanvas.getGraphics(); if (g2!= null) { try { //Overpainting the last shape g2.setXORMode(xorColor); if (oldPaintObject != null) oldPaintObject.drawTransformedShape(g2,aff); //Painting the new shape if (thePaintObject != null) thePaintObject.drawTransformedShape(g2,aff); } finally { g2.dispose(); } } if (thePaintObject != null) { oldPaintObject= thePaintObject.copy(); } else oldPaintObject = null; }//setAktualShape /** * Sets a new currentObject and draws it with the xorMode in the imageCanvas * * @param newCurrentObject The new currentObject. * @param redrawOld If true drwas the old currentObject with the xorMode in the imageCanvas. * @since 30.04.1999 */ public void setCurrentObject(PresentationStateLayerObject newCurrentObject,boolean redrawOld) { //Creating the graphics2D Graphics2D g2 = (Graphics2D)imageCanvas.getGraphics(); if (g2!= null) { try { g2.setXORMode(xorColor); if ((this.currentObject != null) && redrawOld)currentObject.drawMarked(g2,aff); //Painting the new shape if (newCurrentObject != null) newCurrentObject.drawMarked(g2,aff); currentObject = newCurrentObject; } finally { g2.dispose(); } } } } /* * CVS Log * $Log: PaintStructure.java,v $ * Revision 1.1.1.1 2001/06/06 10:32:30 kleber * Init commit for DICOMscope 3.5 * Create new CVS * */ dicomscope-3.6.0/tkgui/viewer/presentation/PresentationStateAnnotationObject.java0000644000265600020320000000514311262371101027626 0ustar tilleaadmin/* * * Copyright (C) 1999, Institute for MicroTherapy * * This software and supporting documentation were developed by * * University of Witten/Herdecke * Department of Radiology and MicroTherapy * Institute for MicroTherapy * Medical computer science * * Universitaetsstrasse 142 * 44799 Bochum, Germany * * http://www.microtherapy.de/go/cs * mailto:computer.science@microtherapy.de * * THIS SOFTWARE IS MADE AVAILABLE, AS IS, AND THE INSTITUTE MAKES NO * WARRANTY REGARDING THE SOFTWARE, ITS PERFORMANCE, ITS MERCHANTABILITY * OR FITNESS FOR ANY PARTICULAR USE, FREEDOM FROM ANY COMPUTER DISEASES * OR ITS CONFORMITY TO ANY SPECIFICATION. THE ENTIRE RISK AS TO QUALITY * AND PERFORMANCE OF THE SOFTWARE IS WITH THE USER. * * Author : $Author: kleber $ * Last update : $Date: 2001/06/06 10:32:30 $ * Revision : $Revision: 1.1.1.1 $ * State: $State: Exp $ */ package viewer.presentation; import J2Ci.*; import java.awt.*; import java.util.*; import java.awt.geom.*; /** * This class is the superclass for all objects which handles * the GUI based functions of annotations. There are two types of annotations: * text annotations and graphic annotations. Both can have image and display relative * parts. * * The data are stored in objects of the c++ interface. * * @author Klaus Kleber * @since 30.04.1999 * @see PresentationStateLayerObject * @see PresentationStateGraphicObject * @see PresentationStateTextObject */ public abstract class PresentationStateAnnotationObject extends PresentationStateLayerObject { /** * Contains size for drawing the image.This is important for calculating * the display relative annotations * * @since 30.04.1999 */ Dimension screenSize; /** * Creates a new object. * * @since 30.04.1999 */ public PresentationStateAnnotationObject() { super(); screenSize = new Dimension(); } /** * Handles the changing of the display size of the image. * If the size for displaying the image is changing the display relative annotations must be * rebuild. * * @param The new size for displaying the image. * @since 30.04.1999 */ public abstract void setScreenSize(Dimension screenSize); public abstract void convertDisplayedAreas(float offsetX, float offsetY,float transX, float transY); } /* * CVS Log * $Log: PresentationStateAnnotationObject.java,v $ * Revision 1.1.1.1 2001/06/06 10:32:30 kleber * Init commit for DICOMscope 3.5 * Create new CVS * */ dicomscope-3.6.0/tkgui/viewer/presentation/PresentationStateGraphicLayer.java0000644000265600020320000005540211262371101026742 0ustar tilleaadmin/* * * Copyright (C) 1999, Institute for MicroTherapy * * This software and supporting documentation were developed by * * University of Witten/Herdecke * Department of Radiology and MicroTherapy * Institute for MicroTherapy * Medical computer science * * Universitaetsstrasse 142 * 44799 Bochum, Germany * * http://www.microtherapy.de/go/cs * mailto:computer.science@microtherapy.de * * THIS SOFTWARE IS MADE AVAILABLE, AS IS, AND THE INSTITUTE MAKES NO * WARRANTY REGARDING THE SOFTWARE, ITS PERFORMANCE, ITS MERCHANTABILITY * OR FITNESS FOR ANY PARTICULAR USE, FREEDOM FROM ANY COMPUTER DISEASES * OR ITS CONFORMITY TO ANY SPECIFICATION. THE ENTIRE RISK AS TO QUALITY * AND PERFORMANCE OF THE SOFTWARE IS WITH THE USER. * * Author : $Author: kleber $ * Last update : $Date: 2001/06/06 10:32:30 $ * Revision : $Revision: 1.1.1.1 $ * State: $State: Exp $ */ package viewer.presentation; import java.util.*; import java.awt.geom.*; import java.awt.*; import J2Ci.*; import main.*; /** * This class manages the layer of a presentation state. * * @author Klaus Kleber * @since 30.04.1999 */ public class PresentationStateGraphicLayer extends java.lang.Object { /** * Contains the current jDVPresentationState * * @since 30.04.1999 */ jDVPresentationState ps; /** * Contains index of this PresentationStateGraphicLayer * in the jDVPresentationState. * * @since 30.04.1999 */ int index; /** * Contains the number of PresentationStateTextObjects of * this PresentationStateGraphicLayer * * @since 30.04.1999 */ int numberOfTexts = 0; /** * Contains the number of PresentationStateGraphicObjects of * this PresentationStateGraphicLayer * * @since 30.04.1999 */ int numberOfGraphics = 0; /** * Handles the overlays. * * @since 30.04.1999 */ OverlayList overlayList; /** * Contains a list of all PresentationStateLayerObjects. * * @since 30.04.1999 */ public Vector listPresentationStateObject; /** * Constructs a new object * * @since 30.04.1999 */ PresentationStateGraphicLayer() { listPresentationStateObject = new Vector(); } /** * Constructs a new object form the specified jDVPresentationState. The * specified index is the index of the building graphic layer in the jDVPresentationState. * listPresentationStateObject will be filled with the annotations in the layer. * * @param index Contains the index of the new object. * @param ps Contains the current jDVPresentationState. * @param scalingX Contains the vertical scaling value. * @param scalingY Contains the horizontal scaling value. * @param overlayList Contains all overlays. * @since 30.04.1999 */ public PresentationStateGraphicLayer(int index, jDVPresentationState ps,DisplayArea da, OverlayList overlayList) { this.ps = ps; this.index = index; this.overlayList = overlayList; numberOfTexts = 0; numberOfGraphics = 0; listPresentationStateObject = new Vector(); jDVPSTextObject textObject; jDVPSGraphicObject graphicObject; //Init graphic annotations for (int i =0; i < ps.getNumberOfGraphicObjects(index); i++) { graphicObject = ps.getGraphicObject(index, i); add(new PresentationStateGraphicObject(graphicObject,da,i)); } //Init text annotations for (int i =0; i < ps.getNumberOfTextObjects(index); i++) { textObject = ps.getTextObject(index, i); add(new PresentationStateTextObject(textObject,i)); } } /** * Constructs a object form the specified parameters * and insert a new layer with monochome Colors to the jDVPresentationState. * * @param index The new index of the new Object and the index of the new layer in the jDVPresentationState. * @param ps Contains the current jDVPresentationState. * @param name Contains the name of the new layer * @param description Contains the description of the new layer. * @param monochrome Contains the gray color value of the new layer * @param overlayList Contains all overlays. * @since 30.04.1999 */ public PresentationStateGraphicLayer(int index, jDVPresentationState ps, String name, String description, float monochrome,OverlayList overlayList) { this.ps = ps; this.index = index; this.overlayList = overlayList; numberOfTexts = 0; numberOfGraphics = 0; int intVar = index; while (ps.addGraphicLayer(new String (name +" " + intVar),description)!=0) intVar++; setFloatColorValue(monochrome); listPresentationStateObject = new Vector(); } /** * Constructs a object form the specified parameters * and insert a new layer with rgb Colors to the jDVPresentationState. * * @param index The new index of the new Object and the index of the new layer in the jDVPresentationState. * @param ps Contains the current jDVPresentationState. * @param name Contains the name of the new layer * @param description Contains the description of the new layer. * @param r Contains the red color value of the new layer * @param g Contains the green color value of the new layer * @param b Contains the blue color value of the new layer * @param overlayList Contains all overlays. * @since 30.04.1999 */ public PresentationStateGraphicLayer(int index, jDVPresentationState ps, String name, String description, int r, int g, int b,OverlayList overlayList) { this.ps = ps; this.index = index; this.overlayList = overlayList; numberOfTexts = 0; numberOfGraphics = 0; int intVar = index; while (ps.addGraphicLayer(new String (name +" " +intVar),description)!=0) intVar++; ps.setGraphicLayerRecommendedDisplayValueRGB(index, r,g,b); listPresentationStateObject = new Vector(); } /** * Sets the size for displaying the image in all PresentationStateLayerObjects * of the PresentationStateGraphicLayer. This vlaue will be used for calulating the * display relative annotations. * * @param screenSize The size for displaying the image * @since 30.04.1999 */ public void setScreenSize(Dimension screenSize) { for (int i =0; i < listPresentationStateObject.size(); i++) { ((PresentationStateAnnotationObject ) listPresentationStateObject.elementAt(i)).setScreenSize(screenSize); } } public void convertDisplayedAreas(float offsetX, float offsetY,float transX, float transY) { for (int i =0; i < listPresentationStateObject.size(); i++) { ((PresentationStateAnnotationObject ) listPresentationStateObject.elementAt(i)).convertDisplayedAreas( offsetX, offsetY, transX, transY); } } /** * Text objects have to be notyfied if the image have fliped. The reason is that the * Bounding boxes are stored relative to the displayed area. The text values should be displayed * from the TLHC to the BRHC. If the image is flipped the bounding box and the text flipped too. * If the text should be readable the bounding boxes have to be flipped. * * @since 30.04.1999 */ public void setFlip(int rot) { for (int i =0; i < listPresentationStateObject.size(); i++) { if (listPresentationStateObject.elementAt(i) instanceof PresentationStateTextObject) ((PresentationStateTextObject ) listPresentationStateObject.elementAt(i)).setImageFlip(rot); } } /** * Text objects have to be notyfied if the image have rotated. The reason is that the * Bounding boxes are stored relative to the displayed area. The text values should be displayed * from the TLHC to the BRHC. If the image will be rotated the bounding box and the text will be * rotated too. If the text should be readable the bounding boxes have to be rotated. * * * @since 30.04.1999 */ public void setRotation() { for (int i =0; i < listPresentationStateObject.size(); i++) { if (listPresentationStateObject.elementAt(i) instanceof PresentationStateTextObject) ((PresentationStateTextObject ) listPresentationStateObject.elementAt(i)).setImageRot(); } } /** * Draws all PresentationStateLayerObject and all overlays after the specified transformation aff * in the specified Graphics2 context. * * @param g The context in wich the image will be drawn. * @param aff The transformation which will be applied befor drawing. * @param aff Specifies the transformation which will be used for PresentationStateOverlayObjects. * @since 30.04.1999 */ public void draw(Graphics2D g, AffineTransform aff, AffineTransform overlayAff, int bits, boolean scale) { //System.out.println("**********drawLayer*************************"); g.setColor(getColor(bits)); overlayList.draw(g,overlayAff,index, bits); for (int i = 0; i < listPresentationStateObject.size(); i++) { ((PresentationStateLayerObject)listPresentationStateObject.elementAt(i)).drawActive(g,aff, scale); } } /** * Returns a String representing this object. * * @return A String representing this object * @since 30.04.1999 */ public String getInfo() { String returnString; returnString = new String(" GraphicLayer" + "\n"+"\n"+ " Color: "+ getColor(8) + "\n" + " Name : " + getName()+"\n" ); for (int i = 0; i < listPresentationStateObject.size(); i++) { returnString = returnString.concat(" Index Object: " + i + "\n" + ((PresentationStateLayerObject)listPresentationStateObject.elementAt(i)).getInfo()); } return returnString; } /** * Gets the unique name of the graphic layer. * * @return Unique name of the graphic layer. * @since 30.04.1999 * @see J2Ci.jDVPresentationState#getGraphicLayerName */ public String getName() { return ps.getGraphicLayerName(index); } /** * Gets the description of the graphic layer. * * @return Description of the graphic layer. * @since 30.04.1999 * @see J2Ci.jDVPresentationState#getGraphicLayerDescription */ public String getDescription() { return ps.getGraphicLayerDescription(index); } /** * Gets the color for the recommended display value of the layer. * * @return Color for the recommended display value of the layer. * @since 30.04.1999 * @see J2Ci.jDVPresentationState */ public Color getColor(int bits) { int pValue = 0x0000; jIntByRef gColorValue = new jIntByRef(); ps.getGraphicLayerRecommendedDisplayValueGray(index, gColorValue); pValue = gColorValue.value; if (bits == 8) return GrayColorIndex.getColor(ps.convertPValueToDDL(pValue, 8)); else return GrayColorIndex.get12Color(ps.convertPValueToDDL(pValue, 12)); } /** * Gets a transformed grey color value between 0 and 1 of the * recommended display value. The recommended display value * have values between 0 and 0xffff. This function returns this value divide * to 0xffff. * * @return Gets a grey color value between 0 and 1. * @since 30.04.1999 * @see J2Ci.jDVPresentationState#getGraphicLayerRecommendedDisplayValueGray */ public float getFloatGrayColorValue() { jIntByRef grayColorValue = new jIntByRef(); ps.getGraphicLayerRecommendedDisplayValueGray(index, grayColorValue); float floatValue =(float)grayColorValue.value/(float)0xffff; float newValue = (float) Math.round(floatValue*1000d); return newValue/1000f; } /** * Sets the recommended display value as a value between 0 and 1. * The recommended display value have values between 0 and 0xffff. * This function mulipies the specified value with 0xffff and sets * these value as recommeded display value of the gaphic layer. * * @param colorValue Contains the recommended display value as a value between 0 and 1. * @since 30.04.1999 * @see J2Ci.jDVPresentationState#setGraphicLayerRecommendedDisplayValueGray */ public void setFloatColorValue (float colorValue) { ps.setGraphicLayerRecommendedDisplayValueGray(index,(int) (colorValue*(int)0xffff)); } /** * Checks if the recommended display value is a gray value. * * @return Returns true, if the recommended display value is a gray value. * @since 30.04.1999 * @see J2Ci.jDVPresentationState#isGrayGraphicLayerRecommendedDisplayValue */ public boolean isGray() { //??????????????? return true; } /** * Checks whether a recommended display value * for the given graphic layer exists. * * @param idx index of the graphic layer, must be < getNumberOfGraphicLayers() * @return true if a recommended display value exists * @since 30.04.1999 * @see J2Ci.jDVPresentationState#haveGraphicLayerRecommendedDisplayValue */ public boolean haveGraphicLayerRecommendedDisplayValue() { return ps.haveGraphicLayerRecommendedDisplayValue(index); } /** * Deletes all objects of the PresentationStateGraphicLayer. * * @since 30.04.1999 */ public void deleteAll() { for (int i = 0; i < listPresentationStateObject.size(); i++) { ((PresentationStateLayerObject)listPresentationStateObject.elementAt(0)).deleteAll(); listPresentationStateObject.removeElementAt(0); } listPresentationStateObject = null; } /** * Deletes the PresentationStateLayerObject with the specified * index form the jDVPresentationState object and the PresentationStateGraphicLayer * * @param deleteIndex The index of the PresentationStateLayerObject in the listPresentationStateObject. * @since 30.04.1999 * @see J2Ci.jDVPresentationState#removeGraphicObject * @see J2Ci.jDVPresentationState#removeTextObject */ public void deleteObjectAt(int deleteIndex) { PresentationStateLayerObject delLayerObject = ((PresentationStateLayerObject)listPresentationStateObject.elementAt(deleteIndex)); System.out.println("deleteIndex: " + deleteIndex); System.out.println("delLayerObject.getIndex(): " + delLayerObject.getIndex()); System.out.println(" löschendes Object: " + delLayerObject.getInfo()); //Delete C++ delLayerObject.deleteAll(); if (delLayerObject instanceof PresentationStateGraphicObject) { ps.removeGraphicObject(index, delLayerObject.getIndex()); } if (delLayerObject instanceof PresentationStateTextObject) { System.out.println( "delete the following Object " + " ist " + ps.getTextObject(index,delLayerObject.getIndex()).getText()); ps.removeTextObject(index, delLayerObject.getIndex()); } //Removes form java removeObjectAt(deleteIndex); } /** * Removes the PresentationStateLayerObject with the specified * index form this PresentationStateGraphicLayer. * * @param deleteIndex The index of the PresentationStateLayerObject in the listPresentationStateObject. * @since 30.04.1999 */ public void removeObjectAt(int deleteIndex) { PresentationStateLayerObject removePresentationStateLayerObject = (PresentationStateLayerObject)listPresentationStateObject.elementAt(deleteIndex); listPresentationStateObject.removeElementAt(deleteIndex); if (removePresentationStateLayerObject instanceof PresentationStateTextObject) { setNewTextIndex(removePresentationStateLayerObject.getIndex()); numberOfTexts--; } else if (removePresentationStateLayerObject instanceof PresentationStateGraphicObject) { setNewGraphicIndex(removePresentationStateLayerObject.getIndex()); numberOfGraphics--; } } /** * Adds the specified PresentationStateLayerObject to * this PresentationStateGraphicLayer * * @param addPresentationStateLayerObject The new PresentationStateLayerObject. * @since 30.04.1999 */ public void add( PresentationStateLayerObject addPresentationStateLayerObject) { listPresentationStateObject.add(addPresentationStateLayerObject); if (addPresentationStateLayerObject instanceof PresentationStateTextObject) { addPresentationStateLayerObject.setIndex(numberOfTexts); numberOfTexts++; } if (addPresentationStateLayerObject instanceof PresentationStateGraphicObject) { addPresentationStateLayerObject.setIndex(numberOfGraphics); numberOfGraphics++; } } /** * Search and returns the first PresentationStateLayerObject that * contains the specified point. Returns null if there is no such * PresentationStateLayerObject. * * @param point The specified point. * @return The first PresentationStateLayerObject that contains the specified point. Returns null * @since 30.04.1999 */ public int containsLayerObject(Point2D.Float point) { for (int i = listPresentationStateObject.size()-1; i >= 0; i--) { if (((PresentationStateLayerObject)listPresentationStateObject.elementAt(i)).contains(point)) { return i; } } return -1; } /** * Returns the PresentationStateLayerObject at the specified index. * Returns null if there is no such PresentationStateLayerObject. * * @param index The index specified the PresentationStateLayerObject * @return The PresentationStateLayerObject at the specified index. * @since 30.04.1999 */ public PresentationStateLayerObject layerObjectAt(int index) { if ((index < 0 )|| (index >=listPresentationStateObject.size())) return null; else return (PresentationStateLayerObject)listPresentationStateObject.elementAt(index); } /** * Sets the description of the layer. * The value is stored in the c++ interface * and is available in the jDVPresententationState object ps. * * @param newDescription The description of the layer. * @since 30.04.1999 * @see J2Ci.jDVPresentationState#setGraphicLayerDescription */ public void setDescription(String newDescription) { ps.setGraphicLayerDescription(index,newDescription); } /** * Sets the name of the layer. * The value is stored in the c++ interface * and is available in the jDVPresententationState object ps. * * @param newName The name of the layer. * @since 30.04.1999 * @see J2Ci.jDVPresentationState#setGraphicLayerName */ public boolean setNewName(String newName) { if ( newName.trim().equals(getName())) return true; int status = ps.setGraphicLayerName(index,newName); if(status == 0) return true; else return false; } /** * Sets the monochrome recommended display value of the layer. * The value is stored in the c++ interface * and is available in the jDVPresententationState object ps. * * @param color The monchrome color of the layer. * @since 30.04.1999 * @see J2Ci.jDVPresentationState#setGraphicLayerRecommendedDisplayValueGray */ public void setGraphicLayerRecommendedDisplayValueGray(int color) { ps.setGraphicLayerRecommendedDisplayValueGray(index,color); } /** * Sets the RGB recommended display value of the layer. * The value is stored in the c++ interface * and is available in the jDVPresententationState object ps. * * @param color The RGB color of the layer. * @since 30.04.1999 * @see J2Ci.jDVPresentationState#setGraphicLayerRecommendedDisplayValueRGB */ public void setGraphicLayerRecommendedDisplayValueRGB(int r,int g,int b) { ps.setGraphicLayerRecommendedDisplayValueRGB(index,r,g,b); } /** * Reduces the attribut index of all PresentationStateTextObject where the index in * the listPresentationStateObject is greather than the specified delIndex. * * @param delIndex Specifies the deleted index * @since 30.04.1999 */ public void setNewTextIndex(int delIndex) { PresentationStateLayerObject presentationStateLayerObject; for (int i = 0; i < listPresentationStateObject.size(); i++) { presentationStateLayerObject = (PresentationStateLayerObject)listPresentationStateObject.elementAt(i); if ((presentationStateLayerObject instanceof PresentationStateTextObject)&&(presentationStateLayerObject.getIndex() >= delIndex)) presentationStateLayerObject.setIndex(presentationStateLayerObject.getIndex()-1); } } /** * Reduces the index of all PresentationStateGraphicObject where the index in * the listPresentationStateObject is greather than the specified delIndex. * * @param delIndex Specified the deleted index. * @since 30.04.1999 */ public void setNewGraphicIndex(int delIndex) { PresentationStateLayerObject presentationStateLayerObject; for (int i = 0; i < listPresentationStateObject.size(); i++) { presentationStateLayerObject = (PresentationStateLayerObject)listPresentationStateObject.elementAt(i); if ((presentationStateLayerObject instanceof PresentationStateGraphicObject)&&(presentationStateLayerObject.getIndex() >= delIndex)) presentationStateLayerObject.setIndex(presentationStateLayerObject.getIndex()-1); } } } /* * CVS Log * $Log: PresentationStateGraphicLayer.java,v $ * Revision 1.1.1.1 2001/06/06 10:32:30 kleber * Init commit for DICOMscope 3.5 * Create new CVS * */ dicomscope-3.6.0/tkgui/viewer/presentation/PresentationStateGraphicObject.java0000644000265600020320000006554311262371101027103 0ustar tilleaadmin/* * * Copyright (C) 1999, Institute for MicroTherapy * * This software and supporting documentation were developed by * * University of Witten/Herdecke * Department of Radiology and MicroTherapy * Institute for MicroTherapy * Medical computer science * * Universitaetsstrasse 142 * 44799 Bochum, Germany * * http://www.microtherapy.de/go/cs * mailto:computer.science@microtherapy.de * * THIS SOFTWARE IS MADE AVAILABLE, AS IS, AND THE INSTITUTE MAKES NO * WARRANTY REGARDING THE SOFTWARE, ITS PERFORMANCE, ITS MERCHANTABILITY * OR FITNESS FOR ANY PARTICULAR USE, FREEDOM FROM ANY COMPUTER DISEASES * OR ITS CONFORMITY TO ANY SPECIFICATION. THE ENTIRE RISK AS TO QUALITY * AND PERFORMANCE OF THE SOFTWARE IS WITH THE USER. * * Author : $Author: kleber $ * Last update : $Date: 2003/09/08 10:15:38 $ * Revision : $Revision: 1.2 $ * State: $State: Exp $ */ package viewer.presentation; import J2Ci.*; import java.awt.*; import java.util.*; import java.awt.geom.*; /** * This class handles the graphic annoations. * This class implementing only the GUI-based methods, * the data are stored in the c++ interface jDVPSGraphicObject. Every * PresentationStateGraphicObject must have one jDVPSGraphicObject which stores * the data of a graphic annotation. *
* Each jDVPSGraphicObject has an index in the jDVPresentationState, * this index must be the same as the index in this class ( defined * in the super class PresentationStateLayerObject). * * @author Klaus Kleber * @since 30.04.1999 * @see PresentationStateAnnotatonObject * @see PresentationStateLayerObject * @see J2Ci.jDVPSGraphicObject */ public class PresentationStateGraphicObject extends PresentationStateAnnotationObject { /** * Contains the geometric representation of a * PresentationStateGraphicObject as a Shape, which can be drawn in any * Graphics2D object. If the PresentationStateGraphicObject is display relative, the Shape * can be drawn without transformations. If the PresentationStateGraphicObject is * image relative the shape must be transform. * * @since 30.04.1999 */ Shape thisShape = null; /** * Contains the data of a graphic annotation in a c++ interface. * * @since 30.04.1999 */ jDVPSGraphicObject graphicObject; DisplayArea da; /** * Constructs a new object. * * @since 30.04.1999 */ private PresentationStateGraphicObject() { super(); } /** * Constructs a new PresentationStateGraphicObject and sets the specified attributs * in the jDVPSGraphicObject. * * @param graphicObject Contains the data of a graphic annotation in a c++ interface. * @param index Contains the index of the PresentationStateGraphicObject. * @param type Contains the new graphic type of the jDVPSGraphicObject. * @param pointList Contains the new points of the jDVPSGraphicObject. * @param annotationUnits Contains the new annotation units. * @param isFilled True if the jDVPSGraphicObject shuold be set to filled. * @param screenSize Contains the size for displaying. * @param aff Contains the applying transformations. * @since 30.04.1999 */ public PresentationStateGraphicObject( jDVPSGraphicObject graphicObject, int index, int type, float[] pointList, int annotationUnits, boolean isFilled, Dimension screenSize, AffineTransform aff) { this(); this.index = index; this.graphicObject = graphicObject; this.screenSize= screenSize; this.aff = aff; graphicObject.setFilled(isFilled); graphicObject.setGraphicType(type); if (annotationUnits == 1) { Point2D.Float point = new Point2D.Float(); for (int i = 0; i < pointList.length/2;i++) { aff.transform( new Point2D.Float(pointList[2*i]-1,pointList[2*i+1]-1),point); pointList[2*i] = point.x/screenSize.width; pointList[2*i+1] = point.y/screenSize.height; } } graphicObject.setData(pointList.length/2, pointList, annotationUnits); buildShape(); } /** * Constructs a PresentationStateGraphicObject form the specified jDVPSGraphicObject * with the specified index * * @param graphicObject Contains the data of a graphic annotation in a c++ interface. * @param index Contains the index of the PresentationStateGraphicObject. * @since 30.04.1999 */ public PresentationStateGraphicObject(jDVPSGraphicObject graphicObject, DisplayArea da,int index) { this(); this.da = da; this.index = index; this.graphicObject = graphicObject; //Builds the shape, if pixel relative if (getAnnotationUnits() ==0) buildShape(); } /** * Checks if the PresentationStateGraphicObject is closed. An PresentationStateGraphicObject is cloed if the fist and the last * point are equal and the PresentationStateGraphicObject has more than 2 points. * * @return True if the annotation is closed. * @since 30.04.1999 */ public boolean isClosed() { if (getGraphicType() == jDVPSGraphicType.DVPST_ellipse) return true; if (getGraphicType() == jDVPSGraphicType.DVPST_circle) return true; //if (getGraphicType() == jDVPSGraphicType.DVPST_interpolated) return false; if (getNumberOfPoints() < 3) return false; else return getPoint(0).equals(getPoint(getNumberOfPoints()-1)); } /** * Moves the PresentationStateGraphicObject analog to the specified points. * The first point is the start point and the secound point is the point where the * first point is moved to. The PresentationStateGraphicObject will be moved * analog to the result vector. * * @param moveAnn Start moving point. * @param point Stop moving point. * @since 30.04.1999 */ public void moveTo(Point2D.Float moveAnn,Point2D.Float point ) { float[] newPixels = new float[getNumberOfPoints()*2]; Point2D.Float translatedPoint1 = new Point2D.Float(); Point2D.Float translatedPoint2 = new Point2D.Float(); Point2D.Float translatedPoint = new Point2D.Float(); //image relative if (getAnnotationUnits() == 0) { translatedPoint1 = getInverseTransformedPoint(moveAnn,aff); translatedPoint2 = getInverseTransformedPoint(point,aff); translatedPoint.x = translatedPoint2.x-translatedPoint1.x; translatedPoint.y = translatedPoint2.y-translatedPoint1.y; for (int i = 0; i < getNumberOfPoints(); i++) { newPixels[2*i] = getPoint(i).x+translatedPoint.x; newPixels[2*i+1] = getPoint(i).y +translatedPoint.y; } graphicObject.setData(newPixels.length/2, newPixels,0); } //Display relative else { Point2D.Float diff = new Point2D.Float(); diff.x = point.x-moveAnn.x; diff.y = point.y-moveAnn.y; for (int i = 0; i < getNumberOfPoints(); i++) { newPixels[2*i] = getPoint(i).x+diff.x/screenSize.width; newPixels[2*i+1] =getPoint(i).y+ diff.y/screenSize.height; } graphicObject.setData(getNumberOfPoints(), newPixels, 1); } buildShape(); } /** * Rebuilds the display relative annotations if the size for displaying the image * has changed. * * @param The new screensize of the annotation. * @since 30.04.1999 */ public void setScreenSize(Dimension screenSize) { this.screenSize = screenSize; if (getAnnotationUnits() ==jDVPSannotationUnit.DVPSA_display) if (screenSize!= null)buildShape(); } /* * Builds the shape form the jDVPSGraphicObject * * @since 30.04.1999 */ public void buildShape() { //Contructs Polyline if (getGraphicType() == jDVPSGraphicType.DVPST_polyline) thisShape = buildPolyline(); //Contructs Interpolated?? else if (getGraphicType() == jDVPSGraphicType.DVPST_interpolated)thisShape = buildInterpolated(); //Contructs Circle else if (getGraphicType() == jDVPSGraphicType.DVPST_circle)thisShape = buildCircle(); else if (getGraphicType() == jDVPSGraphicType.DVPST_ellipse)thisShape = buildEllipse(); else if (getGraphicType() == jDVPSGraphicType.DVPST_point)thisShape = buildPoint(); } /** * Draws the shape of the graphics annotation with the specified * transformation in the specified Graphics2d object * * @param g2 The context in which this object will be drawn. * @param aff Contains the applying transformation. * @since 30.04.1999 */ public void draw(Graphics2D g2,AffineTransform aff, boolean scale) { System.out.println(getInfo()); this.aff = aff; if ((g2!=null) && (thisShape!= null)) { //System.out.println("**********draw Image Rel*************************"); if (getAnnotationUnits() ==0) { g2.setTransform(aff); g2.draw((thisShape)); if ((isfilled()&& isClosed())||getGraphicType() == jDVPSGraphicType.DVPST_point) g2.fill(thisShape); if (!isActive()) drawBounding(g2,aff); } else { //System.out.println("**********draw Display rel*************************"); g2.setTransform(new AffineTransform()); // g2.setStroke(graphicStroke); g2.draw(thisShape); if ((isfilled()&& isClosed())||getGraphicType() == jDVPSGraphicType.DVPST_point) g2.fill(thisShape); } } } public void convertDisplayedAreas(float offsetX, float offsetY,float transX, float transY) { System.out.println("transY: "+transY); System.out.println("transX: "+transX); System.out.println("offsetY: "+offsetY); System.out.println("offsetX: "+offsetX); if (getAnnotationUnits() ==jDVPSannotationUnit.DVPSA_display) { int number = getNumberOfPoints(); float[] points = new float[number*2]; Point2D.Float p = new Point2D.Float(); for (int i = 0; i< number; i++) { p = getPoint(i); System.out.println("p: "+p); points[2*i] = offsetX + p.x*transX; points[2*i+1] = offsetY + p.y*transY; } graphicObject.setData(number, points, jDVPSannotationUnit.DVPSA_display); buildShape(); } } /** * Marked the PresentationStateGraphicObject with Rectangles in the specified * Graphics2D context. * * @param g2 The context in which this object will be merked. * @param aff Contains the applying transformation. * @since 30.04.1999 */ public void drawBounding(Graphics2D g2,AffineTransform aff) { Rectangle2D boundingRect; if (getAnnotationUnits()==0) { boundingRect = aff.createTransformedShape(thisShape.getBounds2D()).getBounds2D(); } else { boundingRect = thisShape.getBounds2D(); } g2.setTransform(new AffineTransform()); g2.draw(new Rectangle2D.Double(boundingRect.getX()- 6,boundingRect.getY()-6,5,5)); g2.draw(new Rectangle2D.Double(boundingRect.getX()+boundingRect.getWidth()+1,boundingRect.getY()-6,5,5)); g2.draw(new Rectangle2D.Double(boundingRect.getX()-6,boundingRect.getY()+boundingRect.getHeight()+1,5,5)); g2.draw(new Rectangle2D.Double(boundingRect.getX()+boundingRect.getWidth()+1,boundingRect.getY()+boundingRect.getHeight()+1,5,5)); } /** * Checks if the graphic annotation is filled. * * @return True if graphic is filled. * @since 30.04.1999 * @see J2Ci.jDVPSGraphicObject#isFilled */ public boolean isfilled() { return graphicObject.isFilled(); } /** * Gets the graphic annotation units. * * @return graphic annotation units. * @since 30.04.1999 * @see J2Ci.jDVPSGraphicObject#getAnnotationUnits */ public int getAnnotationUnits() { return graphicObject.getAnnotationUnits(); } /** * Gets the graphic type of the graphic object. * * @return graphic type of the graphic object. * @since 30.04.1999 * @see J2Ci.jDVPSGraphicObject#getGraphicType */ int getGraphicType() { return graphicObject.getGraphicType(); } /** * Gets the point at the specified index. * * @param index Specifies the index. * @return The point at the specified index. * @since 30.04.1999 * @see J2Ci.jDVPSGraphicObject#getPoint */ Point2D.Float getPoint(int index) { jDoubleByRef x = new jDoubleByRef(); jDoubleByRef y = new jDoubleByRef(); graphicObject.getPoint(index,x,y); return new Point2D.Float((float)x.value, (float) y.value); } /** * Gets the point at the specified index. * * @param index Specifies the index. * @return The point at the specified index. * @since 30.04.1999 * @see J2Ci.jDVPSGraphicObject#getPoint */ Point2D.Double getPointDouble(int index) { jDoubleByRef x = new jDoubleByRef(); jDoubleByRef y = new jDoubleByRef(); graphicObject.getPoint(index,x,y); return new Point2D.Double(x.value, y.value); } /** * Gets the number of points in the annotation. * * @return The number of points in the annotation. * @since 30.04.1999 * @see J2Ci.jDVPSGraphicObject#getNumberOfPoints */ int getNumberOfPoints() { return graphicObject.getNumberOfPoints(); } /** * Caluclates an new shape form a polyline graphic annotation. * * @return The shape of the annotation. * @since 30.04.1999 */ Shape buildPolyline() { //Shape object GeneralPath generalPath= new GeneralPath(); //Image realtive annotation if ( getAnnotationUnits() == 0) { generalPath.moveTo((getPoint(0).x-1), (getPoint(0).y-1)); for (int i = 1; i< getNumberOfPoints(); i++) generalPath.lineTo(getPoint(i).x-1, getPoint(i).y-1); } //Display realtive annotation else { generalPath.moveTo(((getPoint(0).x)*(screenSize.width)),(getPoint(0).y*screenSize.height)); for (int i = 1; i< getNumberOfPoints(); i++) generalPath.lineTo(getPoint(i).x*screenSize.width, getPoint(i).y*screenSize.height); } return generalPath; } /** * Caluclates an new shape form a interpolated graphic annotation. * * @return The shape of the annotation. * @since 30.04.1999 */ Shape buildInterpolated() { GeneralPath generalPath= null; //Image realtive annotation if ( getAnnotationUnits() == 0) { int size = getNumberOfPoints(); Point2D.Double[] pts = new Point2D.Double[size]; Point2D.Double p; for (int i = 0; i< size; i++) { p = getPointDouble(i); pts[i] = new Point2D.Double(p.x-1,p.y-1); } generalPath = viewer.paint.GeometryTool.getCubicSpline(pts, 1d); } //Display realtive annotation else { int size = getNumberOfPoints(); Point2D.Double[] pts = new Point2D.Double[size]; Point2D.Double p; for (int i = 0; i< size; i++) { p = getPointDouble(i); pts[i] = new Point2D.Double(p.x*screenSize.width,p.y*screenSize.height); } generalPath = viewer.paint.GeometryTool.getCubicSpline(pts, 1d); } return generalPath; } /** * Caluclates an new shape form a ellipse graphic annotation. * * @return The shape of the annotation. * @since 30.04.1999 */ Shape buildEllipse() { System.out.println("zzzzz"); //Shape object Ellipse2D.Float ellipse; //TLHC of the circle float majMinX; float majMinY; float minMinX; float minMinY; //Calculates letfx if (getPoint(0).x< getPoint(1).x) { majMinX = getPoint(0).x ; } else { majMinX = getPoint(1).x ; } //calculates lefty if (getPoint(0).y< getPoint(1).y) { majMinY = getPoint(0).y; } else { majMinY = getPoint(1).y; } //Calculates letfx if (getPoint(2).x< getPoint(3).x) { minMinX = getPoint(2).x ; } else { minMinX = getPoint(3).x ; } //calculates lefty if (getPoint(2).y< getPoint(3).y) { minMinY = getPoint(2).y; } else { minMinY = getPoint(3).y; } float leftx; float lefty; float height; float width; if (minMinYjDVInterface represents the relating C++-Class DVInterface * in Java. * * @since 30.04.1999 * @see J2Ci.jDVInterface */ public jDVInterface dvi; /** * Contains the currently available size of the imageCanvas. * * @since 30.04.1999 * @see GUI.ImageCanvas */ Dimension screenSize; public double trueSizeX =1d; public double trueSizeY =1d; double monitorScalingX = 1d; double monitorScalingY =1d; public int selectedImageNumber = 1; public int selectedLutIndex = -1; public int psSelectedLUTIndex = -1; /** * Contains the vertical scaling factor of the image. * * @since 30.04.1999 */ private double scalingValueY = 1d; /** * Contains the horizontal scaling factor of the image. * * @since 30.04.1999 */ private double scalingValueX = 1d; /** * Contains the zoom factor of the displaying image. * * @since 30.04.1999 */ private double zoomValue=-1; /** * Contains true if the PresentationStateGraphicsHandler have a jDVPresentationState. * * @since 30.04.1999 */ public boolean havePresentationState = false; /** * Constructs the paintStructure from the specified jDVInterface. * * @param dvi Contains the current jDCInterface * @since 30.04.1999 * @see J2Ci.jDVInterface */ public PresentationStateGraphicsHandler(jDVInterface dvi) { this.dvi = dvi; } /** * Gets the current active PresentationStateLayerObject. This PresentationStateLayerObject * is specified form the currentLayerObjectIndex and the currentLayerIndex. * * @return The current active PresentationStateLayerObject. * @since 30.04.1999 */ public PresentationStateLayerObject getCurrentLayerObject() { return ((PresentationStateLayerObject) ((PresentationStateGraphicLayer) listPresentationStateGraphicLayer.elementAt(currentLayerIndex)).layerObjectAt(currentLayerObjectIndex)); } /** * Sets the currentLayerObjectIndex. * * @param newIndex New currentLayerObjectIndex. * @since 30.04.1999 */ public void setCurrentLayerObjectIndex(int newIndex) { this.currentLayerObjectIndex = newIndex; } /** * Gets the currentLayerObjectIndex. * * @return The currentLayerObjectIndex. * @since 30.04.1999 */ public int getCurrentLayerObjectIndex() { return currentLayerObjectIndex; } /** * Gets the current active PresentationStateGraphicLayer. This PresentationStateGraphicLayer * is specified form the.currentLayerIndex. * * @return The current active PresentationStateGraphicLayer. * @since 30.04.1999 */ public PresentationStateGraphicLayer getCurrentLayer() { return getLayerAtIndex(currentLayerIndex); } /** * Sets the currentLayerIndex. * * @param newIndex New currentLayerIndex. * @since 30.04.1999 */ public void setCurrentLayerIndex( int newIndex) { currentLayerIndex = newIndex; currentLayerObjectIndex= -1; } /** * Gets the currentLayerObjectIndex. * * @return The currentLayerObjectIndex. * @since 30.04.1999 */ public int getCurrentLayerIndex() { return currentLayerIndex; } /** * Gets the horizontal scaling factor of the image. * * @return Horizontal scaling factor of the image. * @since 30.04.1999 */ public double getScalingX() { return scalingValueX*monitorScalingX; } /** * Gets the vertical scaling factor of the image. * * @return Vertical scaling factor of the image. * @since 30.04.1999 */ public double getScalingY() { return scalingValueY*monitorScalingY; } /** * Gets the horizontal scaling factor of the image. * * @return Horizontal scaling factor of the image. * @since 30.04.1999 */ public double getScX() { return scalingValueX; } /** * Gets the vertical scaling factor of the image. * * @return Vertical scaling factor of the image. * @since 30.04.1999 */ public double getScY() { return scalingValueY; } public double getMonitorScalingX() { return monitorScalingX; } public double getMonitorScalingY() { return monitorScalingY; } /** * Gets the horizontal scaling factor after the rotation. If rotation == 90-deg or 270 deg * scalingValueX and scalingValueY will be exchanged. * * @return Horizontal scaling factor after the rotation. * @since 30.04.1999 */ public double getCurrentScalingX() { if ((getRotation() == 0) ||(getRotation() ==2))return scalingValueX*monitorScalingX; else return scalingValueY*monitorScalingX; } /** * Gets the vertical scaling factor after rotation. If rotation == 90-deg or 270 deg * scalingValueX and scalingValueY will be exchanged. * * @return Vertical scaling factor after rotation. * @since 30.04.1999 */ public double getCurrentScalingY() { if ((getRotation() == 0) ||(getRotation() ==2))return scalingValueY*monitorScalingY; else return scalingValueX*monitorScalingY; } /** * Gets the height of the image. * * @return Heigth of the image. * @since 30.04.1999 * @see J2Ci.jDVPresentationState */ public int getImageHeight() { jIntByRef height = new jIntByRef(); ps.getImageHeight(height); return height.value; } /** * Gets the height of the image. * * @return Heigth of the image. * @since 30.04.1999 * @see J2Ci.jDVPresentationState */ public double getDisplayedAreaPresentationPixelMagnificationRatio() { jDoubleByRef ratio = new jDoubleByRef(); ps.getDisplayedAreaPresentationPixelMagnificationRatio(ratio); return ratio.value; } /** * Gets the height of the image. * * @return Heigth of the image. * @since 30.04.1999 * @see J2Ci.jDVPresentationState */ public double getDisplayedAreaPresentationPixelAspectRatio() { double i = ps.getDisplayedAreaPresentationPixelAspectRatio(); if (i<=0) i = 1; return i; } /** * Gets the height of the image. * * @return Heigth of the image. * @since 30.04.1999 * @see J2Ci.jDVPresentationState */ public double getDisplayedAreaPresentationPixelSpacingX() { jDoubleByRef x = new jDoubleByRef(); jDoubleByRef y = new jDoubleByRef(); ps.getDisplayedAreaPresentationPixelSpacing(x, y); double i = x.value; if (i<=0) i = 1; return i; } public boolean haveDisplayedAreaPresentationPixelSpacing() { jDoubleByRef x = new jDoubleByRef(); jDoubleByRef y = new jDoubleByRef(); int status = ps.getDisplayedAreaPresentationPixelSpacing(x, y); if (status == jE_Condition.EC_Normal) return true; else return false; } /** * Gets the height of the image. * * @return Heigth of the image. * @since 30.04.1999 * @see J2Ci.jDVPresentationState */ public double getDisplayedAreaPresentationPixelSpacingY() { jDoubleByRef x = new jDoubleByRef(); jDoubleByRef y = new jDoubleByRef(); ps.getDisplayedAreaPresentationPixelSpacing(x, y); double i = y.value; if (i<=0) i = 1; return i; } /** * Gets the width of the image. * * @return Width of the image. * @since 30.04.1999 * @see J2Ci.jDVPresentationState */ public int getImageWidth() { jIntByRef width = new jIntByRef(); ps.getImageWidth(width); return width.value; } /** * Gets the height of the image after rotation.If rotation == 90-deg or 270 deg * height and width of the image will be exchanged. * * @return Heigth of the image after rotation.. * @since 30.04.1999 * @see J2Ci.jDVPresentationState */ public int getCurrentImageHeight() { if ((getRotation() == 0) ||(getRotation() ==2))return getImageHeight(); else return getImageWidth(); } /** * Gets the height of the image after rotation.If rotation == 90-deg or 270 deg * height and width of the image will be exchanged. * * @return Heigth of the image after rotation.. * @since 30.04.1999 * @see J2Ci.jDVPresentationState */ public int getCurrentImageWidth() { if ((getRotation() == 0) ||(getRotation() ==2))return getImageWidth(); else return getImageHeight(); } /** * Calculates the horizontal and vertical scaling values. There are two parameters which can * influcene these values. First, the Presentation Pixel Spacing value or * the Presentation Pixel Aspect Ratio value contains implicit or explicit sacling values. * Secoundly the pixel size of the monitor will influence the scale. * * @return Heigth of the image after rotation.. * @since 30.04.1999 * @see J2Ci.jDVPresentationState */ public void buildScaling() { jDoubleByRef xValue = new jDoubleByRef(); jDoubleByRef yValue = new jDoubleByRef(); monitorScalingX = 1d; monitorScalingY = 1d; scalingValueY = 1d; scalingValueX = 1d; //Calculates the scale values resulting of the monitor characteristics. if (trueSizeX > trueSizeY)monitorScalingX = trueSizeY/trueSizeX; else monitorScalingY = trueSizeX/trueSizeY; int status = ps.getDisplayedAreaPresentationPixelSpacing(xValue, yValue); if (xValue.value <= 0) xValue.value = 1; if (yValue.value <= 0) yValue.value = 1; if (status ==jE_Condition.EC_Normal) { if (ps.getDisplayedAreaPresentationSizeMode() == jDVPSPresentationSizeMode.DVPSD_trueSize) { monitorScalingX= xValue.value/trueSizeX; monitorScalingY = yValue.value/trueSizeY; } else { if (xValue.value > yValue.value) { scalingValueX = yValue.value/xValue.value; scalingValueY = 1d; } else { scalingValueY = xValue.value/yValue.value; scalingValueX = 1d; } } } else { double aspectRatio = ps.getDisplayedAreaPresentationPixelAspectRatio(); if (aspectRatio >= 1d) { scalingValueX = aspectRatio; scalingValueY =1d; } else { scalingValueY = (1d/aspectRatio); scalingValueX = 1d; } } //Gets the scalingValues } /** * Builds the internal structure of the PresentationStateGraphicsHandler if a new jDVPresentationState will be received. * The overlayList, the shutterList and the listPresentationStateGraphicLayer will be create from the * jDVPresentationState obejct. * * @since 30.04.1999 * @see J2Ci.jDVPresentationState */ public void buildPresentationState() { selectedLutIndex = -1; enablePresentationState = true; this.ps = dvi.getCurrentPState(); buildScaling(); havePresentationState = true; listPresentationStateGraphicLayer = new Vector(); overlayList = new OverlayList(ps); //builds the ShutterList shutterList = new ShutterList(ps); //builds the layer list. ps.sortGraphicLayers(); DisplayArea da = getDisplayArea(); int numLayer = ps.getNumberOfGraphicLayers()-1; for (int i = 0; i <= numLayer; i++) { listPresentationStateGraphicLayer.add(new PresentationStateGraphicLayer(i,ps,da,overlayList)); } if (listPresentationStateGraphicLayer.size() !=0) currentLayerIndex = ps.getNumberOfGraphicLayers()-1; else currentLayerIndex = -1; //Init size in layer. Calculates dispaly relative annotation. for (int i = 0; i < listPresentationStateGraphicLayer.size(); i++) { ((PresentationStateGraphicLayer)listPresentationStateGraphicLayer.elementAt(i)).setScreenSize(screenSize); } } /** * Gets the pixel aspect ratio of the attached image. * Pixel aspect ratio is defined here as the width of a pixel divided * by the height of a pixel (x/y). * * @since 30.04.1999 * @see J2Ci.jDVPresentationState */ public double getPixelAspectRatio() { /*//Gets the scalingValues jDoubleByRef aspectRatio = new jDoubleByRef(); ps.getImageAspectRatio(aspectRatio); return aspectRatio.value; */ return 1; } /** * Resets the currentLayerObjectIndex. * * @since 30.04.1999 */ public void reset() { currentLayerObjectIndex = -1; selectedLutIndex = -1; } /** * Draws the all PresentationStateGraphicLayer in listPresentationStateGraphicLayer and all * Overlays defined in OverlayList after the sprecified transformation aff in the specified BufferedImage. * All PresntationStateLayerObjects in each PresentationStateGraphicLayer will be drawn. * * @param bufferedImage Specifies the BufferedImage in which you can draw. * @param aff Specifies the transformation which will be used for PresentationStateAnnotationObjects. * @param aff Specifies the transformation which will be used for PresentationStateOverlayObjects. * @since 30.04.1999 * @see Viewer.Main.ScreenImageHandler#buildImageBuffer */ public void drawPaintStructure( BufferedImage bufferedImage,AffineTransform aff,AffineTransform overlayAff, boolean trueSize, int bits,boolean scale) { if (bufferedImage== null) return; //Creating the graphics2D Graphics2D g2 = (Graphics2D)bufferedImage.getGraphics(); if (g2!= null) { try { for (int i = 0; i < listPresentationStateGraphicLayer.size(); i++) { ((PresentationStateGraphicLayer) listPresentationStateGraphicLayer.elementAt(i)).draw(g2, aff, overlayAff,bits, scale); } } finally { g2.dispose(); } } } /** * Searched for the PresentationStateLayerObject containing the specified point. * The result is a new active PresentationStateLayerObject (specified with a new * currentLayerObjectIndex) and a new active PresentationStateGraphicLayer (specified with a new * currentLayerIndex. * * @param point Contains the searched point. * @since 30.04.1999 * @see Viewer.Main.ScreenImageHandler#buildImageBuffer */ public void containsObject(Point2D.Float point) { for (int i = listPresentationStateGraphicLayer.size()-1; i >= 0; i--) { currentLayerObjectIndex = ((PresentationStateGraphicLayer) listPresentationStateGraphicLayer.elementAt(i)).containsLayerObject(point); if (currentLayerObjectIndex != -1) { currentLayerIndex = i; return; } } } /** * Returns a String representing this object. * * @return A String representing this object * @since 30.04.1999 */ public String getInfo() { String returnString; returnString = new String( "PresentationStateGraphicHandler" + "\n" ); for(int i = 0; i point2.x) { float change = point1.x; point1.x = point2.x; point2.x = change; } if (point1.y >point2.y) { float change = point1.y; point1.y = point2.y; point2.y = change; } //Converts points float x = point1.x; float y = point1.y; float w = point2.x-x; float h = point2.y-y; float thePoints[] = new float[10]; thePoints[0] = x+1f; thePoints[1] = y+1f; thePoints[2] = x+w+1f; thePoints[3] = y+1f; thePoints[4] = x+w+1f; thePoints[5] = y+h+1f; thePoints[6] = x+1f; thePoints[7] = y+h+1f; thePoints[8] = x+1f; thePoints[9] = y+1f; //Insert polyline/ shutter if (!newPaintObject.isShutter)getCurrentLayer().add(new PresentationStateGraphicObject(ps.addGraphicObject(currentLayerIndex,applyTo),0,jDVPSGraphicType.DVPST_polyline,thePoints,newPaintObject.getType(),newPaintObject.filled,screenSize,aff)); else { shutterList.addRectangularShutter((int)(point1.x+1f),(int)(point2.x+1f),(int)(point1.y+1f),(int)(point2.y+1f)); } } //Ellipse else if (newPaintObject instanceof Ellipse2DObject) { //System.out.println("###"); float[] thePoints = new float[8]; Point2D.Float point1 = newPaintObject.getPoint(0); Point2D.Float point2 = newPaintObject.getPoint(1); if (point1.x >point2.x) { float change = point1.x; point1.x = point2.x; point2.x = change; } if (point1.y >point2.y) { float change = point1.y; point1.y = point2.y; point2.y = change; } float x = point1.x; float y = point1.y; float w = point2.x-x; float h = point2.y-y; //The first two points must be the end points oft the major axis. int index=0; if (w0 ) currentLayerIndex = 0; else currentLayerIndex = -1; } /** * Insert a new PresentationStateGraphicLayer with a RGB -Color. * * @param label Label of the layer. * @param description Decription of the layer. * @param r Red color value. * @param g Green color value. * @param b Blue color value. * @see PresentationStateGraphicLayer * @since 30.04.1999 */ public void insertNewColorLayer(String label, String description, int r,int g, int b) { listPresentationStateGraphicLayer.add(new PresentationStateGraphicLayer(listPresentationStateGraphicLayer.size(),ps,label, description, r,g,b,overlayList)); } /** * Insert a new PresentationStateGraphicLayer with a Gray -Color. * * @param label Label of the layer. * @param description Decription of the layer. * @param monochome Gray color value. * @see PresentationStateGraphicLayer * @since 30.04.1999 */ public void insertNewMonochromeLayer(String label, String description, float monochome) { listPresentationStateGraphicLayer.add(new PresentationStateGraphicLayer(listPresentationStateGraphicLayer.size(),ps,label, description, monochome,overlayList)); } /** * Gets the PresentationStateGraphicLayer with the specified index. * Returns null if no object with the specified index exist. * * @param index Specifies the PresentationStateGraphicLayer. * @return The PresentationStateGraphicLayer with the specified index. * @see PresentationStateGraphicLayer * @since 30.04.1999 */ public PresentationStateGraphicLayer getLayerAtIndex(int index) { if (index == -1) return null; else return ((PresentationStateGraphicLayer) listPresentationStateGraphicLayer.elementAt(index)); } /** * Gets the Color of the currently active PresentationStateGraphicLayer. * Returns null if no PresentationStateGraphicLayer is active. * * @return The color of the currently active PresentationStateGraphicLayer. * @see PresentationStateGraphicLayer * @since 30.04.1999 */ public Color getCurrentColor() { if (getCurrentLayer() == null) return Color.white; else return getCurrentLayer().getColor(8); } /** * Sets a new PresentationStateTextObject to the currently active * PresentationStateGraphicLayer. * * @param text The text of the new PresentationStateTextObject. * @param isBoundingBox If true the PresentationStateTextObject has a bounding box. * @param isAnchor If ture the PresentationStateTextObject has an anchor point. * @param isboth If true the PresentationStateTextObject has an anchor point and a bounding box. * @param isAnchorDisplay If true the exitsting anchor point is display relative. * @param isBoxDisplay If true the existing bounding box is display realtive. * @param isAnchorVisible If true the existing anchor point have a visible anchor point. * @since 30.04.1999 * @see PresentationStateGraphicLayer * @see PresentationStateTextObject */ public void setNewText( String text, boolean isBoundingBox, boolean isAnchor, boolean isAnchorDisplay, boolean isBoxDisplay, boolean isAnchorVisible, int just, int rot, int applyTo) { jDVPSTextObject newText =ps.addTextObject(currentLayerIndex,applyTo); newText.setText(text); getCurrentLayer().add(new PresentationStateTextObject(newText,0,screenSize,isAnchor,isBoundingBox,isAnchorDisplay,isBoxDisplay,isAnchorVisible, just, rot)); currentLayerObjectIndex = getCurrentLayer().listPresentationStateObject.size()-1; } /** * Moves a PresentationStateLayerObject form one * PresentationStateGraphicLayer to an other. * * @param newLayer The index of the new PresentationStateGraphicLayer. * @param oldLayer The index of the current PresentationStateGraphicLayer. * @param objectIndex The index of the moving PresentationStateLayerObject in the current PresentationStateGraphicLayer. * @see PresentationStateGraphicLayer * @see PresentationStateTextObject * @since 30.04.1999 */ public void moveToLayer( int newLayer, int oldLayer, int objectIndex, int applyTo) { PresentationStateGraphicLayer oldPresentationStateGraphicLayer =((PresentationStateGraphicLayer) listPresentationStateGraphicLayer.elementAt(oldLayer)); PresentationStateGraphicLayer newPresentationStateGraphicLayer =((PresentationStateGraphicLayer) listPresentationStateGraphicLayer.elementAt(newLayer)); PresentationStateLayerObject moveObject = oldPresentationStateGraphicLayer.layerObjectAt(objectIndex); //move in c++ if (moveObject instanceof PresentationStateTextObject) { ps.moveGraphicObject( oldLayer, moveObject.getIndex(), newLayer, applyTo); } if (moveObject instanceof PresentationStateGraphicObject) { ps.moveGraphicObject( oldLayer, moveObject.getIndex(), newLayer,applyTo); } //move in java oldPresentationStateGraphicLayer.removeObjectAt(objectIndex); newPresentationStateGraphicLayer.add(moveObject); } /** * Returns the zoom value. * * @return The zoom value. * @since 30.04.1999 */ public double getZoomValue() { return zoomValue; } /** * Sets the zoom value. * * @param zoomValue The new zoom value. * @since 30.04.1999 */ public void setZoomValue(double zoomValue) { this.zoomValue = zoomValue; } /** * Updates the PresentationStateGraphicsHandler without changing the enablePresentationState status. * * @since 30.04.1999 */ public void updatePresentationState() { deleteAll(); boolean temp = enablePresentationState; // enable... wird in build..() überschrieben buildPresentationState(); enablePresentationState = temp; setScreenSize(screenSize); } public void getPrintImageBuffer(TransformationConverter transConv) { //Loads Size of the bitmap jIntByRef h = new jIntByRef(); jIntByRef w = new jIntByRef(); if ( ps.getPrintBitmapWidthHeight(w,h)!= jE_Condition.EC_Normal) { JOptionPane.showMessageDialog(null,"Error: Can not determine bitmap size"); return ; } //Init shortArray short[] pix = new short[(int)ps.getPrintBitmapSize()/2]; //Loads the print bitmap if (ps.getPrintBitmap(pix, ps.getPrintBitmapSize()) == jE_Condition.EC_Normal) { BufferedImage printImage; WritableRaster wr; DataBufferUShort dbs;; int bandOffsets[] = {0}; //Aspect ration double asRatio = ps.getPrintBitmapPixelAspectRatio(); //Init BurreredImage with print bitmap dbs = new DataBufferUShort( pix,pix.length); wr = Raster.createInterleavedRaster(dbs,w.value,h.value,w.value,1, bandOffsets,null); printImage = new BufferedImage(GrayColorIndex.getGray12BitColorModel(), wr, GrayColorIndex.getGray12BitColorModel().isAlphaPremultiplied(), null); DisplayArea da = getDisplayArea(); //Saves the current screenSize Dimension saveScreen = screenSize; int width = da.getBrhcX()-da.getTlhcX(); int height = da.getBrhcY()-da.getTlhcY(); double printZoom ; int rot = ps.getRotation(); if ((rot ==1) ||(rot== 3)) { printZoom= (double)(h.value /width); setScreenSize(new Dimension(h.value, w.value)); } else { printZoom= (double)(w.value /width); setScreenSize(new Dimension(w.value, h.value)); } System.err.println("printZoom: "+printZoom); //Loads transformations AffineTransform aff = transConv.getPrintTransformation(printZoom); AffineTransform overlayAff = transConv.getPrintOverlayTransformation(); Graphics2D g2 = (Graphics2D) printImage.createGraphics(); shutterList.drawShutter(g2, aff, w.value,h.value, 12); drawPaintStructure(printImage,aff,overlayAff,true,12, true); //drawPaintStructure(printImage,aff,new AffineTransform(),true,12, true); setScreenSize(saveScreen); if (dvi.saveGrayscaleHardcopyImage(pix, w.value, h.value, asRatio)== jE_Condition.EC_Normal) { Controller.instance().firePrint(new PrintEvent(this,PrintEvent.ID_HC)); } else { JOptionPane.showMessageDialog(null,"Error: Can not print image"); } } else { JOptionPane.showMessageDialog(null,"Error: Can not create print display"); } pix = null; System.gc(); System.err.println("end-print"); } /** * Selects one frame of a multiframe image. This affects the image bitmap * that is rendered, the overlay bitmaps and the visibility of graphic and text * objects. This method may only be called when an image is attached to the * presentation state. * @param idx frame number in the range [1..getImageNumberOfFrames()] */ public void selectImageFrameNumber(int idx) { if ((idx >= 1)&&(idx <= getImageNumberOfFrames())) ps.selectImageFrameNumber(idx); } /** * Selects the next frame of a multiframe image. This affects the image bitmap * that is rendered, the overlay bitmaps and the visibility of graphic and text * objects. This method may only be called when an image is attached to the * presentation state. * @param idx frame number in the range [1..getImageNumberOfFrames()] */ public int getSelectedImageFrameNumber() { return ps.getSelectedImageFrameNumber(); } /** * Selects the next frame of a multiframe image. * @return Number of the selected frame */ public int selectNextFrame() { if (getSelectedImageFrameNumber() < getImageNumberOfFrames()) { selectImageFrameNumber(getSelectedImageFrameNumber()+1); return getSelectedImageFrameNumber()+1; } else return getSelectedImageFrameNumber(); } /** * Selects the next frame of a multiframe image. * @return Number of the selected frame */ public int selectPreviousFrame() { if (getSelectedImageFrameNumber() > 1) { selectImageFrameNumber(getSelectedImageFrameNumber()-1); return getSelectedImageFrameNumber()-1; } else return 1; } /** * Returns the number of frames of the current image. */ public int getImageNumberOfFrames() { jIntByRef num = new jIntByRef(); ps.getImageNumberOfFrames(num); return num.value; } /** * Gets the number of image references contained in the current presentation state. * @return number of image references, 0 if an error occurred. */ public int getNumberOfImages() { return dvi.getNumberOfImageReferences(); } /** * Loads an image which referenced by the current presentation * state and needs to be contained in the database. * This method acquires a database lock which must be explicitly freed by the user. * @param idx index of the image to be loaded getNumberOfImage(); */ public void selectImageNumber(int idx) { if ((idx >= 1)&&(idx <= getNumberOfImages())) { dvi.loadReferencedImage(idx-1,true); dvi.releaseDatabase(); Controller.instance().fireEvent(new UpdateBrowserEvent(this)); selectedImageNumber = idx; Controller.instance().fireStatus(new SignedStatusEvent(this, SignedStatusEvent.LOADIMAGE, dvi.getCurrentSignatureStatus(jDVPSObjectType.DVPSS_image), dvi.getCurrentSignatureStatus(jDVPSObjectType.DVPSS_structuredReport))); } } /** * Gets the index of the currently selected image. * @return index of the currently selected image, 0 if an error occurred */ public int getSelectedImageNumber() { return selectedImageNumber; } /** * Selects the next frame of a multiframe image. * @return Number of the selected frame */ public int selectNextImage() { if (getSelectedImageNumber() < getNumberOfImages()) { selectImageNumber(getSelectedImageNumber()+1); return getSelectedImageNumber()+1; } else return getNumberOfImages(); } /** * Selects the next frame of a multiframe image. * @return Number of the selected frame */ public int selectPreviousImage() { if (getSelectedImageNumber() > 1) { selectImageNumber(getSelectedImageNumber()-1); return getSelectedImageNumber()-1; } else return 1; } } /* * CVS Log * $Log: PresentationStateGraphicsHandler.java,v $ * Revision 1.2 2003/09/08 10:17:26 kleber * Bugfix: The Displayed Area is defined after the spatial transformation. * * Revision 1.1.1.1 2001/06/06 10:32:30 kleber * Init commit for DICOMscope 3.5 * Create new CVS * */ dicomscope-3.6.0/tkgui/viewer/presentation/PresentationStateLayerObject.java0000644000265600020320000001724711262371101026600 0ustar tilleaadmin/* * * Copyright (C) 1999, Institute for MicroTherapy * * This software and supporting documentation were developed by * * University of Witten/Herdecke * Department of Radiology and MicroTherapy * Institute for MicroTherapy * Medical computer science * * Universitaetsstrasse 142 * 44799 Bochum, Germany * * http://www.microtherapy.de/go/cs * mailto:computer.science@microtherapy.de * * THIS SOFTWARE IS MADE AVAILABLE, AS IS, AND THE INSTITUTE MAKES NO * WARRANTY REGARDING THE SOFTWARE, ITS PERFORMANCE, ITS MERCHANTABILITY * OR FITNESS FOR ANY PARTICULAR USE, FREEDOM FROM ANY COMPUTER DISEASES * OR ITS CONFORMITY TO ANY SPECIFICATION. THE ENTIRE RISK AS TO QUALITY * AND PERFORMANCE OF THE SOFTWARE IS WITH THE USER. * * Author : $Author: kleber $ * Last update : $Date: 2001/06/06 10:32:30 $ * Revision : $Revision: 1.1.1.1 $ * State: $State: Exp $ */ package viewer.presentation; import J2Ci.*; import java.awt.*; import java.util.*; import java.awt.geom.*; /** * This class is the superclass for all objects which can be in * a PresentationStateGraphicLayer. This Class in not ready yet. Especially * the overlays and the curves (not yet implemented) are not based on this class. * maybe a next version will implement this. * This class and the derived classes implementing only the GUI-based methods. * The data are in the c++ interface jDVPresentationState abvailable. * * @author Klaus Kleber * @since 30.04.1999 * @see PresentationStateAnnotatonObject * @see PresentationStateGraphicObject * @see PresentationStateTextObject */ public abstract class PresentationStateLayerObject { /** * Contains the index of the object in the jDVPersentationState object. * * @since 30.04.1999 */ int index; /** * Contains the current transformation which must be applies if you * draw the object. * * @since 30.04.1999 */ AffineTransform aff = null; /** * If true means that the obejct should be drawn in every case. If false * there will not be drawn in the drawActive() methode. * * @since 30.04.1999 */ boolean active = true; /** * Constructs a new object. * * @since 30.04.1999 */ public PresentationStateLayerObject() { } /** * Check if this object contains the specified point. * * @return true if this object contains the specified point. * @since 30.04.1999 */ public abstract boolean contains(Point2D.Float point); /** * Deletes the object. This method must be called for deleting. * * @since 30.04.1999 */ public abstract void deleteAll(); /** * Returns a String representing this object. * * @return A String representing this object. * @since 30.04.1999 */ public abstract String getListText(); /** * Moves this object analog to the specified points. * The first point is the start point and the secound point is the point where the * first point is moved to. The PresentationStateGraphicObject will be moved * analog to the result vector. * * @param moveTo Start moving point. * @param point Stop moving point. * @since 30.04.1999 */ public abstract void moveTo(Point2D.Float moveTo,Point2D.Float point); /** * Draws this object after the transformation aff in the specified * Graphics2D context. * * @param g2 The context in which this object will be drawn. * @param aff Contains the appling transformation. * @since 30.04.1999 */ public abstract void draw(Graphics2D g2,AffineTransform aff, boolean scale); /** * Marked the object with bounding Rectangles and draws * the rectangles in the specified Graphics2D context. * * @param g2 The context in which this object will be merked. * @param aff Contains the applying transformation. * @since 30.04.1999 */ public abstract void drawBounding(Graphics2D g2,AffineTransform aff); /** * Draws the object with the specified * transformation in the specified Graphics2d context if the object is * active. * @param g2 The Graphics2D object in which the object will be drawn. * @param aff Contains the transformations which should be applied to the object before drawing.. */ public void drawActive(Graphics2D g2,AffineTransform aff, boolean scale) { if (isActive()) draw(g2,aff, scale); } /** * Marked the object with Rectangles and draws Rectangles and * this object in the specified Graphics2D context. * * @param g2 The context in which this object will be merked. * @param aff Contains the applying transformation. * @since 30.04.1999 */ public void drawMarked(Graphics2D g2,AffineTransform aff) { if ((g2!=null) ) { draw(g2,aff, false); drawBounding(g2,aff); } } /** * Returns a String representing this object * * @return A String representing this object * @since 30.04.1999 */ public abstract String getInfo(); /** * Sets the active value. * * @return true if active. * @since 30.04.1999 */ public boolean isActive() { return active; } /** * Sets the active value. * * @param active The new active value. * @since 30.04.1999 */ public void setActive(boolean active) { this.active = active; } /** * Transforms the specified displayPoint with the inverse * transformation of aff. * * @param displayPoint Contains the transforming point. * @param aff Specifies the inverse transformation. * @return The inverse transformation of the displayPoint with the transformation aff. * @since 30.04.1999 */ public Point2D.Float getInverseTransformedPoint(Point2D.Float displayPoint,AffineTransform transAff) { Point2D.Float dstPoint = new Point2D.Float(); try { transAff.inverseTransform(displayPoint,dstPoint); } catch(NoninvertibleTransformException e) { System.out.println("NoninvertibleTransformException: " + e); } return dstPoint; } /** * Transforms the specified displayPoint with the inverse * transformation of aff. * * @param displayPoint Contains the transforming point. * @param aff Specifies the inverse transformation. * @return The inverse transformation of the displayPoint with the transformation aff. * @since 30.04.1999 */ public Point2D.Double getInverseTransformedPoint(Point2D.Double displayPoint,AffineTransform transAff) { Point2D.Double dstPoint = new Point2D.Double(); try { transAff.inverseTransform(displayPoint,dstPoint); } catch(NoninvertibleTransformException e) { System.out.println("NoninvertibleTransformException: " + e); } return dstPoint; } /** * Gets the index of this object. * * @return The index of this object. * @since 30.04.1999 */ public int getIndex() { return index; } /** * Sets the index of this object. The index of the object must be the same as the * index in the jDVPresentationState object. * * @since 30.04.1999 */ public void setIndex(int index) { this.index = index; } } /* * CVS Log * $Log: PresentationStateLayerObject.java,v $ * Revision 1.1.1.1 2001/06/06 10:32:30 kleber * Init commit for DICOMscope 3.5 * Create new CVS * */ dicomscope-3.6.0/tkgui/viewer/presentation/PresentationStateOverlayObject.java0000644000265600020320000001376311262371101027144 0ustar tilleaadmin/* * * Copyright (C) 1999, Institute for MicroTherapy * * This software and supporting documentation were developed by * * University of Witten/Herdecke * Department of Radiology and MicroTherapy * Institute for MicroTherapy * Medical computer science * * Universitaetsstrasse 142 * 44799 Bochum, Germany * * http://www.microtherapy.de/go/cs * mailto:computer.science@microtherapy.de * * THIS SOFTWARE IS MADE AVAILABLE, AS IS, AND THE INSTITUTE MAKES NO * WARRANTY REGARDING THE SOFTWARE, ITS PERFORMANCE, ITS MERCHANTABILITY * OR FITNESS FOR ANY PARTICULAR USE, FREEDOM FROM ANY COMPUTER DISEASES * OR ITS CONFORMITY TO ANY SPECIFICATION. THE ENTIRE RISK AS TO QUALITY * AND PERFORMANCE OF THE SOFTWARE IS WITH THE USER. * * Author : $Author: kleber $ * Last update : $Date: 2001/06/06 10:32:30 $ * Revision : $Revision: 1.1.1.1 $ * State: $State: Exp $ */ package viewer.presentation; import J2Ci.*; import main.*; import java.awt.*; import java.util.*; import java.awt.geom.*; import java.awt.image.*; /** * This class manages the overlay data of one overlay. The data * structure is encapsulate in the jDVPrStateParam_GetOverlayData. *
* The handling of the overlays is inconsistent with the handling of the * annotations. First the overlays will be rotated and flipped in the interface, * the annoations not. Therefore they need an other transformation. Secondly the * overlays have less functionality than the annotations. Especially this * programm can only show overlays, if exist. This programm can not create overlays. * * * @author Klaus Kleber * @since 30.04.1999 * @see J2Ci.jDVPrStateParam_GetOverlayData * @see PresentationStateOverlayObject */ public class PresentationStateOverlayObject { /** * Contains the index layer of the overlay. * * @since 30.04.1999 */ int layerIndex; /** * Contains the index of the overlay in the layer with the index layerIndex. * * @since 30.04.1999 */ int index; /** * Contains data structure of the presentation state in the c++ interface. * * @since 30.04.1999 * @see J2Ci.jDVPresentationState */ public jDVPresentationState ps; /** * Contains data structure of the overlay in the c++ interface. * * @since 30.04.1999 * @see J2Ci.jDVPrStateParam_GetOverlayData */ jDVPrStateParam_GetOverlayData overlayData; /** * Contains the number of bits used for printing the overlay */ public int bits; /** * Contains the geometric representation of the overlay. * * @since 30.04.1999 */ BufferedImage overlayImage; /** * Constructs a new object form the specified parameters. * * @param ps Contains the current jDVPresentationState * @param layerIndex Contains the layer index of the overlay * @param imageIndex Contains the index of the overlay in the specified layer. * @since 30.04.1999 */ public PresentationStateOverlayObject(jDVPresentationState ps, int layerIndex, int imageIndex, int bits) { this.ps = ps; this.bits = bits; this.layerIndex = layerIndex; this.index = imageIndex; getData(); } /** * Draws the overlay in the specified Graphics2D context. * * @param g2 Contains the Graphics2D object * @param aff Contains applying transformations * @param imageIndex Contains the index of the overlay in the specified layer. * @since 30.04.1999 */ public void draw(Graphics2D g2, AffineTransform aff) { //System.out.println("Aff: "+ aff); g2.setTransform(aff); g2.drawImage(overlayImage,overlayData.left,overlayData.top ,null); //g2.drawImage(overlayImage, new AffineTransform(1f,0f,0f,1f,overlayData.left,overlayData.top), null); } /** * Gets the overlay data from the c++ interface and create the * geometric representation. * * @since 30.04.1999 * @see J2Ci.jDVPrStateParam_GetOverlayData */ public void getData() { //Contains the DataBuffer DataBuffer overlayBuffer = null; //Contains the WritableRaster WritableRaster wr ; //Contains the offset int bandOffsets[] = {0}; overlayData = new jDVPrStateParam_GetOverlayData(); overlayData.layer = layerIndex; overlayData.idx = index; overlayData.bits = bits; int status = ps.getOverlayData(overlayData); IndexColorModel overlayColorModel = null; //Creates the BufferedImage if (bits == 8) { overlayBuffer = new DataBufferByte(overlayData.overlayData,overlayData.width* overlayData.height); System.out.println("overlay trans: " + overlayData.foreground); overlayColorModel = GrayColorIndex.getOverlayGrayColorModel(overlayData.foreground); //GrayColorIndex.countValues(overlayData.overlayData); } else { overlayBuffer = new DataBufferUShort(overlayData.overlayData12,overlayData.width* overlayData.height); overlayColorModel = GrayColorIndex.getOverlayGray12ColorModel(overlayData.foreground); //GrayColorIndex.countValues(overlayData.overlayData12); } wr = Raster.createInterleavedRaster(overlayBuffer, overlayData.width, overlayData.height, overlayData.width, 1, bandOffsets,null); overlayImage = new BufferedImage(overlayColorModel, wr, overlayColorModel.isAlphaPremultiplied(), null); } } /* * CVS Log * $Log: PresentationStateOverlayObject.java,v $ * Revision 1.1.1.1 2001/06/06 10:32:30 kleber * Init commit for DICOMscope 3.5 * Create new CVS * */ dicomscope-3.6.0/tkgui/viewer/presentation/PresentationStateTextObject.java0000644000265600020320000011757711262371101026457 0ustar tilleaadmin/* * * Copyright (C) 1999, Institute for MicroTherapy * * This software and supporting documentation were developed by * * University of Witten/Herdecke * Department of Radiology and MicroTherapy * Institute for MicroTherapy * Medical computer science * * Universitaetsstrasse 142 * 44799 Bochum, Germany * * http://www.microtherapy.de/go/cs * mailto:computer.science@microtherapy.de * * THIS SOFTWARE IS MADE AVAILABLE, AS IS, AND THE INSTITUTE MAKES NO * WARRANTY REGARDING THE SOFTWARE, ITS PERFORMANCE, ITS MERCHANTABILITY * OR FITNESS FOR ANY PARTICULAR USE, FREEDOM FROM ANY COMPUTER DISEASES * OR ITS CONFORMITY TO ANY SPECIFICATION. THE ENTIRE RISK AS TO QUALITY * AND PERFORMANCE OF THE SOFTWARE IS WITH THE USER. * * Author : $Author: kleber $ * Last update : $Date: 2001/06/06 10:32:30 $ * Revision : $Revision: 1.1.1.1 $ * State: $State: Exp $ */ package viewer.presentation; import J2Ci.*; import main.*; import java.awt.*; import java.util.*; import java.awt.font.*; import java.awt.geom.*; /** * This class handles the text annoations. * This class implementing only the GUI-based methods, * the data are stored in the c++ interface jDVPSTextObject. Every * PresentationStateTextObject must have one jDVPSTextObject which stores * the data of a text annotation. *
* Each jDVPSTextObject has an index in the jDVPresentationState, * this index must be the same as the index in this class ( defined * in the super class PresentationStateLayerObject). * * @author Klaus Kleber * @since 30.04.1999 * @see PresentationStateAnnotatonObject * @see PresentationStateLayerObject * @see J2Ci.jDVPSTextObject */ public class PresentationStateTextObject extends PresentationStateAnnotationObject { public boolean drawTLHC = false; public boolean drawBoundingBox = false; public boolean drawNewBoundingBox = false; /** * Contains the Attributes * * @since 30.04.1999 */ jDVPSTextObject textObject; int needRot = -1; int rot = 0; int just = 0; //Gibt die Göße der Größten Zeile an private float maxLength; //Transformationen der BoundingBox AffineTransform affBox = new AffineTransform(); //Transformationen des Textes AffineTransform affText= new AffineTransform(); //Enthält die einzelen Zeilen TextLayout[] layoutSegment; //Enthalt die Offsets für jedes Zeile Point2D.Float[] offsets; /** * Contains the geometric representation of the bounding rectangel of the text. * the bounding rectangel is differnt form the bounding box. The bounding box is the value * in the presentation state and is available form the jDVPSTextObject. The bounding rectangel * is the exact bounding rectangle on the display, indepentent form the bounding box.But if this program * creates a text annotation with a bounding box the bounding box will be calculate from the * bounding rectangle. * * @since 30.04.1999 */ Rectangle2D.Double boundingRect = null; /** * Indicates that the PresentationStateTextObject must redraw. * * @since 30.04.1999 */ //public boolean mustRedraw = false; /** * If true the PresentationStateTextObject has not been drawn.. * * @since 30.04.1999 */ public boolean firstDraw = false; /** * If true the PresentationStateTextObject need a anchor point. * * @since 30.04.1999 */ public boolean needAnchorPoint = false; /** * If true the PresentationStateTextObject need a bounding box. * * @since 30.04.1999 */ public boolean needBox= false; /** * If true the needed bounding box is display relative. * * @since 30.04.1999 */ public boolean neededBoxIsDisplayRelative= false; /** * If true the needed anchor point is display relative. * * @since 30.04.1999 */ public boolean neededAnchorIsDisplayRelative= false; /** * If true the needed anchor point is visible. * * @since 30.04.1999 */ public boolean neededAnchorVisible= true; private static Hashtable map = new Hashtable(); static { map.put(TextAttribute.SIZE, new Float(18.0)); } public static void setTextAttributeMap(Hashtable newMap) { map = newMap; } /** * Constructs a new PresentationStateTextObject. * * @since 30.04.1999 */ public PresentationStateTextObject() { super(); } /** * Constructs an PresentationStateTextObject form the specified jDVPSTextObject. * * @param textObject Contains the data of the text annotation in a c++ interface. * @param index Contains the index of the PresentationStateTextObject * @since 30.04.1999 */ public PresentationStateTextObject(jDVPSTextObject textObject, int index) { this(); this.index = index; this.textObject = textObject; just = textObject.getBoundingBoxHorizontalJustification(); } /** * Constructs a new PresentationStateTextObject and sets the specified attributs * in the jDVPSTextObject. * * @param textObject Contains the text annotation in a c++ interface. * @param index Contains the index of the PresentationStateTextObject. * @param screenSize Contains the size of the display for displaying the image. * @param needAnchorPoint True if the new PresentationStateTextObject need an anchor point. * @param needBox True if the new PresentationStateTextObject need a bounding box * @param neededAnchorIsDisplayRelative True if the needed anchor point is display relative. * @param neededBoxIsDisplayRelative True if the needed bounding box is display relative. * @param neededAnchorVisible True if the needed anchor point is visible. * @since 30.04.1999 */ public PresentationStateTextObject( jDVPSTextObject textObject, int index, Dimension screenSize, boolean needAnchorPoint, boolean needBox, boolean neededAnchorIsDisplayRelative, boolean neededBoxIsDisplayRelative, boolean neededAnchorVisible, int just, int needRot) { this(); this.index = index; this.screenSize = screenSize; this.textObject = textObject; this.needAnchorPoint = needAnchorPoint; this.needBox = needBox; this.neededAnchorIsDisplayRelative =neededAnchorIsDisplayRelative ; this.neededBoxIsDisplayRelative = neededBoxIsDisplayRelative; this.neededAnchorVisible = neededAnchorVisible; this.just = just; this.rot = needRot; calc(); } public int getRot(){ return rot;} public int getJust(){ return just;} /** * Sets a new text value to the PresentationStateTextObject. * * @param newText Specifies the new Text. * @since 30.04.1999 * @see J2Ci.jDVPSTextObject#setText */ public void setNewValues( String newText, int just, int rot) { this.just = just; while (this.rot != rot) { if (this.rot == 3) this.rot = 0; else this.rot++; setRot(); } textObject.setText(newText); } /** * Not implemented yet. * * @param point Not implemented yet * @param point1 Not implemented yet * @since 30.04.1999 */ public void moveTo(Point2D.Float point,Point2D.Float point1) { } public void convertDisplayedAreas(float offsetX, float offsetY,float transX, float transY) { if (haveBoundingBox() && getBoundingBoxAnnotationUnits()==jDVPSannotationUnit.DVPSA_display) { textObject.setBoundingBox(offsetX+getBoundingBoxTLHC_x()*transX, offsetY+getBoundingBoxTLHC_y()*transY, offsetX+getBoundingBoxBRHC_x()*transX,offsetY+getBoundingBoxBRHC_y()*transY, 1,just); } if (haveAnchorPoint() && getAnchorPointAnnotationUnits() ==jDVPSannotationUnit.DVPSA_display) { textObject.setAnchorPoint(offsetX+getAnchorPoint_x()*transX, offsetY+getAnchorPoint_y()*transY, 1, textObject.anchorPointIsVisible()); } } /** * Converts an image relative bounding box to display relative. * * @since 30.04.1999 */ public void convertBoxToDisplayRelative() { Point2D.Float translatedPointTLHC = new Point2D.Float(); Point2D.Float translatedPointBRHC = new Point2D.Float(); aff.transform(new Point2D.Float((float)(getBoundingBoxTLHC_x()-1) ,(float)(getBoundingBoxTLHC_y()-1)),translatedPointTLHC); aff.transform(new Point2D.Float((float)(getBoundingBoxBRHC_x()-1) ,(float)(getBoundingBoxBRHC_y()-1)),translatedPointBRHC); textObject.setBoundingBox( translatedPointTLHC.x/(screenSize.width-1), translatedPointTLHC.y/(screenSize.height-1), translatedPointBRHC.x/(screenSize.width-1),translatedPointBRHC.y/(screenSize.height-1), 1,just); } /** * Converts a display relative bounding box to image relative. * * @since 30.04.1999 */ public void convertBoxToImageRelative() { Point2D.Float translatedPointTLHC = new Point2D.Float(); Point2D.Float translatedPointBRHC = new Point2D.Float(); try { aff.inverseTransform(new Point2D.Float((float)getBoundingBoxTLHC_x()*(screenSize.width-1),(float)getBoundingBoxTLHC_y()*(screenSize.height-1)),translatedPointTLHC); aff.inverseTransform(new Point2D.Float((float)getBoundingBoxBRHC_x()*(screenSize.width-1),(float)getBoundingBoxBRHC_y()*(screenSize.height-1)),translatedPointBRHC); } catch(NoninvertibleTransformException e) {} textObject.setBoundingBox( translatedPointTLHC.x+1, translatedPointTLHC.y+1, translatedPointBRHC.x+1,translatedPointBRHC.y+1, 0,just); } /** * Sets the anchor point visible /unvisible * * @param isVisible True if the anchor point must be visible. * @see J2Ci.jDVPSTextObject#setAnchorPoint * @since 30.04.1999 */ public void setAnchorPointVisible(boolean isVisible) { textObject.setAnchorPoint( getAnchorPoint_x(), getAnchorPoint_y(),getAnchorPointAnnotationUnits() , isVisible); } /** * Converts an image relative anchor point to display relative. * * @since 30.04.1999 */ public void convertAnchorToDisplayRelative() { Point2D.Float translatedPoint = new Point2D.Float(); aff.transform(new Point2D.Float((float)(getAnchorPoint_x()-1) ,(float)(getAnchorPoint_y()-1)),translatedPoint); textObject.setAnchorPoint( translatedPoint.x/(screenSize.width-1), translatedPoint.y/(screenSize.height-1),1 , anchorPointIsVisible()); } /** * Converts a display relative anchor point to an image relative. * * @since 30.04.1999 */ public void convertAnchorToImageRelative() { Point2D.Float translatedPoint = new Point2D.Float(); try { aff.inverseTransform(new Point2D.Float((float)getAnchorPoint_x()*(screenSize.width-1),(float)getAnchorPoint_y()*(screenSize.height-1)),translatedPoint); } catch(NoninvertibleTransformException e) {} textObject.setAnchorPoint( translatedPoint.x+1, translatedPoint.y+1,0 , anchorPointIsVisible()); } /** * Removes the bounding box form the PresentationStateTextObject. * * @since 30.04.1999 * @see J2Ci.jDVPSTextObject#removeBoundingBox */ public void removeBoundingBox() { textObject.removeBoundingBox(); } /** * Removes the anchor point form the PresentationStateTextObject. * * @since 30.04.1999 * @see J2Ci.jDVPSTextObject#removeBoundingBox */ public void removeAnchorPoint() { textObject.removeAnchorPoint(); } /** * Sets an exact new bounding box for an existing PresentationStateTextObject with * the specified point on the top left hand coner and draw the PresentationStateTextObject * in the specified Graphics2D context. * * @param g2 Contains Graphics2D context. * @param point Contains the top left hand coner of the new bonding box. * @param aff Contains the applying transformation * @since 30.04.1999 * @see J2Ci.jDVPSTextObject#setBoundingBox */ public void setNewBoundingBox(Graphics2D g2, Point2D.Float point, AffineTransform aff) { this.aff = aff; Point2D.Float transPoint = new Point2D.Float(); if (!neededBoxIsDisplayRelative) { transPoint = getInverseTransformedPoint(point,aff); transPoint.x++; transPoint.y++; } else { transPoint.x = point.x/(screenSize.width-1); transPoint.y = point.y/(screenSize.height-1); } Point2D.Float brhcText = new Point2D.Float(point.x +maxLength, point.y+offsets[offsets.length-1].y); brhcText = getInverseTransformedPoint(brhcText,aff); if (!neededBoxIsDisplayRelative) { setBoundingBox(transPoint.x,transPoint.y ,brhcText.x,brhcText.y,0); } else setBoundingBox(transPoint.x, transPoint.y,transPoint.x+maxLength/(screenSize.width-1),transPoint.y+offsets[offsets.length-1].y/(screenSize.height-1),1); for (int i = 0; i < rot; i++)setRot(); } /** * Sets a new bounding box. * * @param tlhc_x X value of the top left hand coner of the box * @param tlhc_y y value of the top left hand coner of the box. * @param brhc_x X value of the botton right hand coner of the box. * @param brhc_y Y value of the botton right hand coner of the box. * @param ann Contains the annotation units of the bounding box. * @since 30.04.1999 * @see J2Ci.jDVPSTextObject#setBoundingBox */ public void setBoundingBox(double tlhc_x, double tlhc_y,double brhc_x,double brhc_y,int ann) { textObject.setBoundingBox( tlhc_x, tlhc_y, brhc_x,brhc_y, ann,just); } public void setImageFlip(int rot) { if (haveBoundingBox() && (getBoundingBoxAnnotationUnits() == jDVPSannotationUnit.DVPSA_pixels)) if (rot == 0) setBoundingBox(getBoundingBoxBRHC_x(), getBoundingBoxTLHC_y(), getBoundingBoxTLHC_x(), getBoundingBoxBRHC_y(),getBoundingBoxAnnotationUnits()); else if (rot == 1) setBoundingBox(getBoundingBoxTLHC_x(), getBoundingBoxBRHC_y(), getBoundingBoxBRHC_x(), getBoundingBoxTLHC_y(),getBoundingBoxAnnotationUnits()); else if (rot == 2) setBoundingBox(getBoundingBoxBRHC_x(), getBoundingBoxTLHC_y(), getBoundingBoxTLHC_x(), getBoundingBoxBRHC_y(),getBoundingBoxAnnotationUnits()); else if (rot == 3) setBoundingBox(getBoundingBoxTLHC_x(), getBoundingBoxBRHC_y(), getBoundingBoxBRHC_x(), getBoundingBoxTLHC_y(),getBoundingBoxAnnotationUnits()); System.out.println("rot: " + rot); } public void setImageRot() { if (haveBoundingBox() && (getBoundingBoxAnnotationUnits() == jDVPSannotationUnit.DVPSA_pixels)) { setBoundingBox(getBoundingBoxTLHC_x(), getBoundingBoxTLHC_y(),getBoundingBoxTLHC_x()+ (getBoundingBoxBRHC_y()-getBoundingBoxTLHC_y()),getBoundingBoxTLHC_y()-(getBoundingBoxBRHC_x()-getBoundingBoxTLHC_x()),getBoundingBoxAnnotationUnits()); System.out.println(" rot: " + getInfo()); } } public void setRot() { if (haveBoundingBox() ) setBoundingBox(getBoundingBoxTLHC_x(), getBoundingBoxTLHC_y(),getBoundingBoxTLHC_x()- (getBoundingBoxBRHC_y()-getBoundingBoxTLHC_y()),getBoundingBoxTLHC_y()+(getBoundingBoxBRHC_x()-getBoundingBoxTLHC_x()),getBoundingBoxAnnotationUnits()); } /** * Sets a new anchor point for an existing PresentationStateTextObject with * the specified point and draw the PresentationStateTextObject * in the specified Graphics2D context. * * @param g2 Contains Graphics2D context. * @param point Contains point of the anchor point. * @param aff Contains the applying transformation * @since 30.04.1999 * @see J2Ci.jDVPSTextObject#setAnchorPoint */ public void setNewAnchor(Graphics2D g2, Point2D.Float point, AffineTransform aff) { this.aff = aff; Point2D.Float transPoint = new Point2D.Float(); if (!neededAnchorIsDisplayRelative) { transPoint = getInverseTransformedPoint(point,aff); transPoint.x++; transPoint.y++; } else { transPoint.x = point.x/(screenSize.width-1); transPoint.y = point.y/(screenSize.height-1); } if (g2!= null) { setAnchorPoint((double)transPoint.x, (double)transPoint.y); } } /** * Sets a new anchor point. * * @param tlhc_x X value of the anchor point. * @param tlhc_y Y value of the anchor point. * @since 30.04.1999 * @see J2Ci.jDVPSTextObject#setBoundingBox */ public void setAnchorPoint(double tlhc_x, double tlhc_y) { if (neededAnchorIsDisplayRelative)textObject.setAnchorPoint( tlhc_x, tlhc_y,1 , neededAnchorVisible); else textObject.setAnchorPoint( tlhc_x, tlhc_y, 0 ,neededAnchorVisible); } /** * Sets a new size for displaying the image. * * @param screenSize The new size for displaying the image. * @since 30.04.1999 */ public void setScreenSize(Dimension screenSize) { this.screenSize = screenSize; } public void calculateTextRotation(AffineTransform spatialTransformation) { AffineTransform rotTransform = new AffineTransform(); affText = new AffineTransform(); //Draw bounding Box if (haveBoundingBox()) { Point2D.Double spatialTransformedTLHC = new Point2D.Double(getBoundingBoxTLHC_x()-1,getBoundingBoxTLHC_y()-1); Point2D.Double spatialTransformedBRHC= new Point2D.Double(getBoundingBoxBRHC_x()-1,getBoundingBoxBRHC_y()-1); if (getBoundingBoxAnnotationUnits()==jDVPSannotationUnit.DVPSA_pixels) rotTransform = spatialTransformation; rotTransform.transform(spatialTransformedTLHC,spatialTransformedTLHC); rotTransform.transform(spatialTransformedBRHC,spatialTransformedBRHC); int textRotation = 0; if ((spatialTransformedTLHC.x>spatialTransformedBRHC.x)&&(spatialTransformedTLHC.yspatialTransformedBRHC.x)&&(spatialTransformedTLHC.y>spatialTransformedBRHC.y))textRotation = 2; if ((spatialTransformedTLHC.xspatialTransformedBRHC.y))textRotation = 3; //text transformations affText.rotate(textRotation*0.5*Math.PI,0,0); rot = textRotation; } } public void calc() { maxLength = 0; FontRenderContext fontRenderContext = new FontRenderContext(affText,true,true); //FontRenderContext for calculating the length of the rows FontRenderContext helpFontRenderContext = new FontRenderContext(new AffineTransform(),true,true); StringTokenizer stringtoken = new StringTokenizer(getTextValue(),"\n"); int numberOfLines = stringtoken.countTokens(); layoutSegment = new TextLayout[numberOfLines]; offsets = new Point2D.Float[numberOfLines]; float offsetY = 0; String token; TextLayout helpLayout; float[] textLength = new float[numberOfLines]; for(int i =0; i< numberOfLines; i++) { token = stringtoken.nextToken(); layoutSegment[i] = new TextLayout(token,map,fontRenderContext); helpLayout = new TextLayout(token, map, helpFontRenderContext); offsetY =offsetY+ layoutSegment[i].getAscent(); offsets[i] = new Point2D.Float(0,offsetY); textLength[i] = helpLayout.getAdvance(); maxLength = Math.max(maxLength, helpLayout.getAdvance()); } float scale = 0; if (just ==2) scale = 0.5f; if (just ==1) scale = 1; for(int i =0; i< numberOfLines; i++) { offsets[i].x= scale*(maxLength-textLength[i]); } } /** * Draws the PresentationStateTextObject with the specified * transformation in the specified Graphics2d object. The geometric * representation of this obejct will be calculate. * * @param g2 The context in which this object will be drawn. * @param aff Contains the applying transformation. * @since 30.04.1999 */ public void draw(Graphics2D g2,AffineTransform aff, boolean scale) { this.aff = aff; System.out.println(getInfo()); if(g2!=null) { g2.setTransform(new AffineTransform()); calculateTextRotation(aff); Point2D.Double rectBRHC = new Point2D.Double(); Point2D.Double anchorPoint = new Point2D.Double(); Point2D.Double tlhcDst = new Point2D.Double(); Point2D.Double brhcDst = new Point2D.Double(); Rectangle2D.Double oldBoundingBox; Font mapFont = null; if (haveBoundingBox()) { if (getBoundingBoxAnnotationUnits() ==0) { tlhcDst = new Point2D.Double(getBoundingBoxTLHC_x()-1,getBoundingBoxTLHC_y()-1); brhcDst = new Point2D.Double(getBoundingBoxBRHC_x()-1,getBoundingBoxBRHC_y()-1); aff.transform(tlhcDst,tlhcDst); aff.transform(brhcDst,brhcDst); } else { tlhcDst = new Point2D.Double((getBoundingBoxTLHC_x())*(screenSize.width-1),(getBoundingBoxTLHC_y())*(screenSize.height-1)); brhcDst = new Point2D.Double((getBoundingBoxBRHC_x())*(screenSize.width-1),(getBoundingBoxBRHC_y())*(screenSize.height-1)); } //Berechnen der alten BoundingBox double btx = tlhcDst.x; double bty = tlhcDst.y; double bby = brhcDst.y; double bbx = brhcDst.x; if (btx>bbx) { double help = bbx; bbx = btx; btx = help; } if (bty>bby) { double help = bby; bby = bty; bty = help; } oldBoundingBox = new Rectangle2D.Double(btx,bty,bbx-btx,bby-bty); // if (drawBoundingBox) g2.draw(oldBoundingBox); System.out.println("Hier1"); if (scale) { float scaleX; if ((rot == 1) ||(rot == 3)) { scaleX = (float)oldBoundingBox.getHeight()/(float)maxLength; } else { scaleX = (float)oldBoundingBox.getWidth()/(float)maxLength; } mapFont = (Font)(map.get(TextAttribute.FONT)); int newFontSize = (int)((float) mapFont.getSize()* scaleX); map.put(TextAttribute.FONT, new Font( mapFont.getName(), mapFont.getStyle(),(int)((float) mapFont.getSize()* scaleX))); System.out.println("newFontSize :"+newFontSize); } } System.out.println("maxLength: " + maxLength); calc(); System.out.println("maxLength: " + maxLength); System.out.println("hier: "); if ((scale)&&(haveBoundingBox())) map.put(TextAttribute.FONT, mapFont); System.out.println("hier: -ende "); //Construct Anchorpoint if (haveAnchorPoint()) { if (getAnchorPointAnnotationUnits() == 0) { aff.transform(new Point2D.Double( textObject.getAnchorPoint_x()-1, textObject.getAnchorPoint_y()-1), anchorPoint); } else { anchorPoint = new Point2D.Double( textObject.getAnchorPoint_x()*(screenSize.width-1), textObject.getAnchorPoint_y()*(screenSize.height-1)); } } System.out.println("hier:1 "); //Anchor point only if (!haveBoundingBox()&& haveAnchorPoint()) { if((anchorPoint.getX() < 0)||(anchorPoint.getX()> screenSize.width-1 )) return; if((anchorPoint.getY() < 0)||(anchorPoint.getY()> screenSize.height-1)) return; if (anchorPoint.getX() > screenSize.width-100) { tlhcDst.x = anchorPoint.getX()-maxLength-50; } else { tlhcDst.x = anchorPoint.getX()+50; } if (anchorPoint.getY() > 100) { tlhcDst.y = anchorPoint.getY()-offsets[offsets.length-1].y -50; } else { tlhcDst.y = anchorPoint.getY()+50; } } if(haveAnchorPoint() || haveBoundingBox()) { if (layoutSegment!= null) { //Point for drawing one line of the text Point2D.Double blhc; //Number of Lines int numberOfLines = layoutSegment.length; //Draw lines for(int i =0; i< numberOfLines; i++) { blhc = new Point2D.Double(offsets[i].x,offsets[i].y); affText.transform(blhc, blhc); layoutSegment[i].draw(g2,(float)(tlhcDst.x+blhc.x),(float)(tlhcDst.y+blhc.y)); } affBox = new AffineTransform(); affBox.rotate(rot*0.5*Math.PI,tlhcDst.x,tlhcDst.y); rectBRHC = new Point2D.Double(tlhcDst.x+maxLength,tlhcDst.y+offsets[offsets.length-1].y); affBox.transform(rectBRHC,rectBRHC); boundingRect = new Rectangle2D.Double(Math.min(tlhcDst.x,rectBRHC.x),Math.min(tlhcDst.y,rectBRHC.y) ,Math.abs(tlhcDst.x-rectBRHC.x),Math.abs(tlhcDst.y-rectBRHC.y)); if (drawNewBoundingBox) { g2.draw(boundingRect); } //g2.setTransform(affBox); if(drawTLHC) { //Tlhc Rectangle2D.Double tlhcBox = new Rectangle2D.Double(tlhcDst.x,tlhcDst.y,5,5); g2.draw( tlhcBox); } } } if (haveBoundingBox()) { if (getBoundingBoxAnnotationUnits() ==0) { Point2D.Double newBRHC =new Point2D.Double(); newBRHC = getInverseTransformedPoint(rectBRHC,aff); setBoundingBox(getBoundingBoxTLHC_x(),getBoundingBoxTLHC_y() ,newBRHC.x,newBRHC.y,0); } else { setBoundingBox(getBoundingBoxTLHC_x(),getBoundingBoxTLHC_y() ,rectBRHC.x/(screenSize.width-1),rectBRHC.y/(screenSize.height-1),1); } System.out.println(getInfo()); } //Display only if anchorpoint ist visible if (haveAnchorPoint()&& textObject.anchorPointIsVisible()) { Point2D.Double rectPoint = getBestPoint(boundingRect, anchorPoint); g2.draw( new Line2D.Double(rectPoint.getX(),rectPoint.getY(),anchorPoint.getX(),anchorPoint.getY())); //g2.draw(new Rectangle2D.Double(rectPoint.getX(),rectPoint.getY(),5,5)); //g2.draw(new Rectangle2D.Double(anchorPoint.getX(),anchorPoint.getY(),5,5)); } }//g2!=null }//drawShape /** * Returns the location of the nearest corner from the specified Rectangle2D * * @param rectangle The specified Rectangle * @param point Specifies the point. * @returns The location of the nearest corner from the specified Rectangle2D * @since 30.04.1999 */ Point2D.Double getBestPoint( Rectangle2D rectangle, Point2D.Double point) { Point2D.Double returnPoint = new Point2D.Double(); if (point.getX() > rectangle.getX() +rectangle.getWidth()/2) returnPoint.x = rectangle.getX() +rectangle.getWidth(); else returnPoint.x = rectangle.getX(); if (point.getY() > rectangle.getY() +rectangle.getHeight()/2) returnPoint.y = rectangle.getY() +rectangle.getHeight(); else returnPoint.y = rectangle.getY(); return returnPoint; } /** * Checks if the anchor point is visible. * * @return True if the anchor point is visible. * @since 30.04.1999 * @see J2Ci.jDVPSTextObject#anchorPointIsVisible */ public boolean anchorPointIsVisible() { return textObject.anchorPointIsVisible(); } /** * Returns the annotation units of the anchor point. * * @return The annotation units of the anchor point. * @since 30.04.1999 * @see J2Ci.jDVPSTextObject#getAnchorPointAnnotationUnits */ public int getAnchorPointAnnotationUnits() { return textObject.getAnchorPointAnnotationUnits(); } /** * Returns the annotation units of the bounding box * * @return The annotation units of the bounding box * @since 30.04.1999 * @see J2Ci.jDVPSTextObject#getBoundingBoxAnnotationUnits */ public int getBoundingBoxAnnotationUnits() { return textObject.getBoundingBoxAnnotationUnits(); } /** * Checks if the annotation has an anchor point. * * @return True if the annotation has an anchor point. * @since 30.04.1999 * @see J2Ci.jDVPSTextObject#haveAnchorPoint */ public boolean haveAnchorPoint() { return textObject.haveAnchorPoint(); } /** * Checks if the annotation has bounding box * * @return True if the annotation has bounding box * @since 30.04.1999 * @see J2Ci.jDVPSTextObject#haveBoundingBox */ public boolean haveBoundingBox() { return textObject.haveBoundingBox(); } /** * Checks if the annotation has an anchor point. * * @return True if the annotation has an anchor point. * @since 30.04.1999 * @see J2Ci.jDVPSTextObject#haveAnchorPoint */ public String getTextValue() { return textObject.getText(); } /** * Returns the x value of the bottom right hand corner of the bounding box. * * @return The x value of the bottom right hand corner of the bounding box. * @since 30.04.1999 * @see J2Ci.jDVPSTextObject#getBoundingBoxBRHC_x */ public double getBoundingBoxBRHC_x() { return textObject.getBoundingBoxBRHC_x(); } /** * Returns the x value of the top left hand corner of the bounding box. * * @return The x value of the top left hand corner of the bounding box. * @since 30.04.1999 * @see J2Ci.jDVPSTextObject#getBoundingBoxTLHC_x */ public double getBoundingBoxTLHC_x() { return textObject.getBoundingBoxTLHC_x(); } /** * Returns the y value of the bottom right hand corner of the bounding box. * * @return The y value of the bottom right hand corner of the bounding box. * @since 30.04.1999 * @see J2Ci.jDVPSTextObject#getBoundingBoxBRHC_y */ public double getBoundingBoxBRHC_y() { return textObject.getBoundingBoxBRHC_y(); } /** * Returns the x value of the top left hand corner of the bounding box. * * @return The x value of the top left hand corner of the bounding box. * @since 30.04.1999 * @see J2Ci.jDVPSTextObject#getBoundingBoxTLHC_x */ public double getBoundingBoxTLHC_y() { return textObject.getBoundingBoxTLHC_y(); } /** * Returns the bottom right hand corner of the bounding box. * * @return The bottom right hand corner of the bounding box. * @since 30.04.1999 */ public Point2D getBoundingBoxBRHC() { return new Point2D.Double(getBoundingBoxBRHC_x(),getBoundingBoxBRHC_y()); } /** * Returns the the top left hand corner of the bounding box. * * @return The the top left hand corner of the bounding box. * @since 30.04.1999 */ public Point2D getBoundingBoxTLHC() { return new Point2D.Double(getBoundingBoxTLHC_x(),getBoundingBoxTLHC_y()); } /** * Returns the x value of the anchor point. * * @return The x value of the anchor point. * @since 30.04.1999 * @see J2Ci.jDVPSTextObject#getAnchorPoint_x */ public double getAnchorPoint_x() { return textObject.getAnchorPoint_x(); } /** * Returns the y value of the anchor point. * * @return The y value of the anchor point. * @since 30.04.1999 * @see J2Ci.jDVPSTextObject#getAnchorPoint_y */ public double getAnchorPoint_y() { return textObject.getAnchorPoint_y(); } /** * Returns a String representing this object. * * @return A String representing this object * @since 30.04.1999 */ public String getInfo() { String returnString = new String(); //fill attributes returnString = new String( " PresenationStateTextObject" + "\n"+"\n"+ " getTextValue: "+ getTextValue() + "\n" ); //fill points if (haveBoundingBox()) { returnString = returnString.concat(" haveBoundingBox: " +haveBoundingBox() + "\n"+ " getBoundingBoxAnnotationUnits: " + getBoundingBoxAnnotationUnits() + "\n" + " TLHC x = " + getBoundingBoxTLHC_x() + " y = " + getBoundingBoxTLHC_y() + "\n"+ " BRHC x = " + getBoundingBoxBRHC_x() + " y = " + getBoundingBoxBRHC_y() +"\n"); } //fill points if (haveAnchorPoint()) { returnString = returnString.concat(" haveAnchorPoint: " +haveAnchorPoint() + "\n"+ " getAnchorPointAnnotationUnits: " + getAnchorPointAnnotationUnits() + "\n" + " anchorPointIsVisible: " + anchorPointIsVisible() + "\n" + " x = " + getAnchorPoint_x() + " y = " + getAnchorPoint_y() + "\n"); } return returnString; } /** * Deltes the object. * * @since 30.04.1999 */ public void deleteAll() { textObject = null; } /** * Returns a String representing this object. * * @return A String representing this object. * @since 30.04.1999 */ public String getListText() { String returnString = new String("Text: " + getTextValue()); return returnString; } /** * Check if this object contains the specified point. * * @return true if this object contains the specified point. * @since 30.04.1999 */ public boolean contains(Point2D.Float point) { return boundingRect.contains(point); } /** * Converts the bounding box or the anchor point form image relative to * display relative or vice versa.If units = 0, convert the bounding box, * else convert the anchor point. * * @param units If units = 0, convert the bounding box, else convert the anchor point. * @since 30.04.1999 */ public void convert( int units) { if (units == 0) { if (getBoundingBoxAnnotationUnits() ==0)convertBoxToDisplayRelative(); else convertBoxToImageRelative(); } else { if (getAnchorPointAnnotationUnits() ==0)convertAnchorToDisplayRelative(); else convertAnchorToImageRelative(); } } /** * Marked the PresentationStateTextObject with Rectangles and draws * them in the specified Graphics2D context. * * @param g2 The context in which this object will be merked. * @param aff Contains the applying transformation. * @since 30.04.1999 */ public void drawBounding(Graphics2D g2,AffineTransform aff) { g2.setTransform(new AffineTransform()); g2.draw(new Rectangle2D.Double(boundingRect.getX()- 6,boundingRect.getY()-6,5,5)); g2.draw(new Rectangle2D.Double(boundingRect.getX()+boundingRect.getWidth()+1,boundingRect.getY()-6,5,5)); g2.draw(new Rectangle2D.Double(boundingRect.getX()-6,boundingRect.getY()+boundingRect.getHeight()+1,5,5)); g2.draw(new Rectangle2D.Double(boundingRect.getX()+boundingRect.getWidth()+1,boundingRect.getY()+boundingRect.getHeight()+1,5,5)); } /** * Marked the PresentationStateTextObject with Rectangles and draws * them in the specified Graphics2D context. This function must be redesigned. * * @param g2 The graphics2d object in which the shape will be drawn. * @param aff Contains the transformations which should be applied to the shape. * @since 30.04.1999 */ public void drawMarked(Graphics2D g2,AffineTransform aff) { if ((g2!=null) ) { drawBounding(g2,this.aff); } } } /* * CVS Log * $Log: PresentationStateTextObject.java,v $ * Revision 1.1.1.1 2001/06/06 10:32:30 kleber * Init commit for DICOMscope 3.5 * Create new CVS * */ dicomscope-3.6.0/tkgui/viewer/presentation/ShutterList.java0000644000265600020320000004055511262371101023270 0ustar tilleaadmin/* * * Copyright (C) 1999, Institute for MicroTherapy * * This software and supporting documentation were developed by * * University of Witten/Herdecke * Department of Radiology and MicroTherapy * Institute for MicroTherapy * Medical computer science * * Universitaetsstrasse 142 * 44799 Bochum, Germany * * http://www.microtherapy.de/go/cs * mailto:computer.science@microtherapy.de * * THIS SOFTWARE IS MADE AVAILABLE, AS IS, AND THE INSTITUTE MAKES NO * WARRANTY REGARDING THE SOFTWARE, ITS PERFORMANCE, ITS MERCHANTABILITY * OR FITNESS FOR ANY PARTICULAR USE, FREEDOM FROM ANY COMPUTER DISEASES * OR ITS CONFORMITY TO ANY SPECIFICATION. THE ENTIRE RISK AS TO QUALITY * AND PERFORMANCE OF THE SOFTWARE IS WITH THE USER. * * Author : $Author: kleber $ * Last update : $Date: 2001/06/06 10:32:30 $ * Revision : $Revision: 1.1.1.1 $ * State: $State: Exp $ */ package viewer.presentation; import J2Ci.*; import java.util.*; import java.awt.*; import java.awt.geom.*; import main.*; /** * This class manages the shutters of a presentation state. The data of the shutters are * capsulated in a jDVPresentationState object. This class makes methods available for drawing the * for handling shutters in a graphic context . * * @author Klaus Kleber * @since 30.04.1999 */ public class ShutterList { /** * Contains the current presentation state with the shutter data. * * @since 30.04.1999 */ private jDVPresentationState ps; /** * Contains all active vector shutters. * * @since 30.04.1999 */ private Area shutterArea; /** * Contains the index of every overlay which is suitable * for use as a bitmap shutter. * * @since 30.04.1999 */ private int overlayIsShutterIndexList[]; /** * Contains the labels of every overlay which is suitable * for use as a bitmap shutter. The index of the label is the * same as the index in the overlayIsShutterIndexList. * * @since 30.04.1999 */ public String overlayIsShutterLabelList[]; /** * Contains the number of suitable bitmap shutters. * * @since 30.04.1999 */ public int numberOfSuitableBitmapShutter = 0; /** * Specifies the index of the current active bitmap shutter in * the overlayIsShutterIndexList. * If no bitmap shutter is active the value is -1. * * @since 30.04.1999 */ public int activeBitmapShutterIndex; /** * Constructs the ShutterList form the specified jDVPresentationState object. * * @param ps Contains the current jDVPresentationState object with the shutter data. * @since 30.04.1999 */ public ShutterList (jDVPresentationState ps) { this.ps = ps; //Builds the index an the label List for the bitmap shutter. overlayIsShutterIndexList = new int[16]; overlayIsShutterLabelList = new String[16]; activeBitmapShutterIndex = -1; numberOfSuitableBitmapShutter = 0; for (int i = 0; i 0) { int status = ps.setPolyShutterOrigin((int)thePoints[0],(int)thePoints[1]); } for (int i = 1; i < numberOfPoints;i++) { int status = ps.addPolyShutterVertex((int)thePoints[2*i],(int)thePoints[2*i+1]); } buildShape(); } /** * Sets and activates rectangular display shutter. * If a bitmap shutter is exists, it is deactivated * * @param lv the left vertical edge * @param rv the right vertical edge * @param uh the upper horizontal edge * @param lh the lower horizontal edge * @since 30.04.1999 */ public void addRectangularShutter(int lv, int rv, int uh, int lh) { decativateBitmapShutter(); // ps.setRectShutter(lv, rv-2, uh, lh-2); buildShape(); } /** * Sets and activates circular display shutter. * If a bitmap shutter is exists, it is deactivated * * @param circX the X component of the shutter center * @param circY the Y component of the shutter center * @param radius the (horizontal) radius of the shutter * @since 30.04.1999 */ public void addCircularShutter(int circX, int circY, int radius) { decativateBitmapShutter(); ps.setCircularShutter(circX, circY, radius-1); buildShape(); } /** * Deletes a polygonal shutter if exist. * * @since 30.04.1999 */ public void deletePolygonal() { delete(jDVPSShutterType.DVPSU_polygonal); } /** * Deletes a circular shutter if exist. * * @since 30.04.1999 */ public void deleteCircular() { delete(jDVPSShutterType.DVPSU_circular); } /** * Deletes a rectangular shutter if exist. * * @since 30.04.1999 */ public void deleteRectangular() { delete(jDVPSShutterType.DVPSU_rectangular); } /** * Deactivates display shutter of given type. * * @param shutterValue the shutter type (from jDVPSShutterType). * @since 30.04.1999 */ public void delete(int shutterValue) { if (ps.haveShutter(shutterValue)) { ps.removeShutter(shutterValue); } buildShape(); } /** * Checks if a rectangular shutter of given type is active. * * @return true if this type of shutter is currently active. * @since 30.04.1999 */ public boolean haveRectangularShutter() { return ps.haveShutter(jDVPSShutterType.DVPSU_rectangular); } /** * Checks if a circular shutter of given type is active. * * @return true if this type of shutter is currently active. * @since 30.04.1999 */ public boolean haveCircularShutter() { return ps.haveShutter(jDVPSShutterType.DVPSU_circular); } /** * Checks if a polygonal shutter of given type is active. * * @return true if this type of shutter is currently active. * @since 30.04.1999 */ public boolean havePolygonalShutter() { return ps.haveShutter(jDVPSShutterType.DVPSU_polygonal); } /** * Checks if a bitmapped shutter of given type is active. * * @return true if this type of shutter is currently active. * @since 30.04.1999 */ public boolean haveBitmapShutter() { return ps.haveShutter(jDVPSShutterType.DVPSU_bitmap); } public boolean haveGeomShutter() { if (haveCircularShutter()) return true; if (havePolygonalShutter()) return true; if (haveRectangularShutter()) return true; return false; } /** * Builds the shutterArea which is a combined Area of the vector shutters. * * @since 30.04.1999 */ public void buildShape() { //Constructs an new Area shutterArea =new Area(); if (haveRectangularShutter()) { Rectangle2D.Double rect = new Rectangle2D.Double( (ps.getRectShutterLV()), (ps.getRectShutterUH()), (ps.getRectShutterRV()-ps.getRectShutterLV()+1), (ps.getRectShutterLH()-ps.getRectShutterUH()+1)); if (shutterArea.isEmpty()) shutterArea.add(new Area(rect)); else shutterArea.intersect(new Area(rect)); } //Circle shutter if ( haveCircularShutter()) { Ellipse2D.Double ellipse = new Ellipse2D.Double( (ps.getCenterOfCircularShutter_x()-ps.getRadiusOfCircularShutter()), (ps.getCenterOfCircularShutter_y()-ps.getRadiusOfCircularShutter()), 2*(ps.getRadiusOfCircularShutter()), 2*(ps.getRadiusOfCircularShutter())); if (shutterArea.isEmpty()) shutterArea.add(new Area(ellipse)); else { shutterArea.intersect(new Area(ellipse)); } } //Polygonal shutter if (havePolygonalShutter()) { GeneralPath generalPath = new GeneralPath(); if (ps.getNumberOfPolyShutterVertices() > 1) { Point point = new Point(); ps.getPolyShutterVertex(0, point); //System.out.println("Point: " + point.toString()); generalPath.moveTo((float)(point.getX()), (float) (point.getY())); for (int i = 1; i * The virtualTLHC contains a value for * positioning the the image on the display. The maximum value of virtualTLHC.x is * (width of the image + width of the display), the maximum value of virtualTLHC.y is * (height of the image+ height of the display). * If (virtualTLHC.x < width of the display) and (virtualTLHC.y< height of the display) * the TLHC of the image will drawn on the point virtualTLHC on the display. * If (virtualTLHC.x > width of the display) and (virtualTLHC.y > height of the display) * the point (width of the display - virtualTLHC.x, height of the display -virtualTLHC.y) * of the image will be drawn on the top left hand coner of the display. *
* * @author Klaus Kleber * @since 30.04.1999 * @see JavaTransformationConverter * @see C_TransformationConverter */ public abstract class TransformationConverter { public static int number = 0; /** * Contains the transfomations of the PresentationStateLayerObjects * and the SutterList. * * @since 30.04.1999 */ AffineTransform aff; AffineTransform printAff; AffineTransform printOverlayTransform; /** * Contains the transfomations of the PresentationStateOverlayObjects * * @since 30.04.1999 */ AffineTransform overlayTransform; /** * Zoom value. * * @since 30.04.1999 */ double zoomValue; /** * Contains the dimension of the display. * * @since 30.04.1999 */ Dimension displayDimension; /** * Contains the displaying top left hand coner of the image. * * @since 30.04.1999 */ protected Point sourcePixelBRHC; /** * Contains the displaying bottom right hand coner of the image. * * @since 30.04.1999 */ protected Point sourcePixelTLHC; /** * Contains the top left hand coner of the display where the sourcePixelBRHC * of the image must be displayed. * * @since 30.04.1999 */ protected Point displayPixelTLHC; /** * Contains the botton right hand coner of the display where the sourcePixelTLHC * of the image must be displayed. * * @since 30.04.1999 */ protected Point displayPixelBRHC; /** * Contains the virtual top left hand corner(TLHC). The virtualTLHC contains a value for * positioning the the image on the display. The maximum value of virtualTLHC.x is * (width of the image + width of the display), the maximum value of virtualTLHC.y is * (height of the image+ height of the display). * If (virtualTLHC.x < width of the display) and (virtualTLHC.y< height of the display) * the TLHC of the image will drawn on the virtualTLHC. * If (virtualTLHC.x > width of the display) and (virtualTLHC.y > height of the display) * the point (width of the display - virtualTLHC.x, height of the display -virtualTLHC.y) * of the image will be drawn on the top left hand coner of the display. * * * @since 30.04.1999 */ Point virtualTLHC; /** * Contains the current PresentationStateGraphicsHandler. * * @since 30.04.1999 */ PresentationStateGraphicsHandler presentationStateGraphicsHandler; /** * Constructs the object with the specified PresentationStateGraphicsHandler. * * @param presentationStateGraphicsHandler Conatins the current PresentationStateGraphicsHandler. * @see PresentationStateGraphicsHandler * @since 30.04.1999 */ public TransformationConverter(PresentationStateGraphicsHandler presentationStateGraphicsHandler) { //init var this.presentationStateGraphicsHandler = presentationStateGraphicsHandler; //gets the part of the image which should be visible. //Default ist the full image sourcePixelTLHC = new Point(0,0); sourcePixelBRHC = new Point(presentationStateGraphicsHandler.getCurrentImageWidth(),presentationStateGraphicsHandler.getCurrentImageHeight()); //Sets the TLHC of the display in which the image should be paint. //Default ist the top left hand coner of the image; displayPixelTLHC = new Point(0,0); //init var displayDimension = new Dimension(0,0); // virtualTLHC = new Point(0,0); } /** * Returns the maximum y-value for the virtualTLHC. * * @return The maximum y-value for the virtualTLHC. * @since 30.04.1999 */ public int getScollValueHeight() { return (presentationStateGraphicsHandler.getCurrentImageHeight()+displayDimension.height); } /** * Returns the maximum x-value for the virtualTLHC. * * @return The maximum x-value for the virtualTLHC. * @since 30.04.1999 */ public int getScollValueWidth() { return(presentationStateGraphicsHandler.getCurrentImageWidth()+displayDimension.width); } /** * Returns the current virtualTLHC. * * @return The current virtualTLHC * @since 30.04.1999 */ public Point getScrollbarValue() { return virtualTLHC; } /** * Sets a new x-value for the virtualTLHC * * @param newWidth New x-value for the virtualTLHC * @since 30.04.1999 */ public void setVirtualTHLCWidth(int newWidth) { virtualTLHC.x = newWidth; } /** * Sets a new y-value for the virtualTLHC * * @param newHeight New y-value for the virtualTLHC * @since 30.04.1999 */ public void setVirtualTHLCHeight(int newHeight) { virtualTLHC.y = newHeight; } public void setNewZoom(double oldZoom) { } /** * Draws the specified display area of the image after the zooming, scaling, rotation and flipping * in the specified BufferedImage. * * @param bufferedImage Specifies the BufferedImage in which the image will be drawn. * @param zoomValue Specifies the zoom value of the image. * @param newPixels false if the pixels must get from the c++ part of the code. * @since 30.04.1999 */ public void drawInDeviceSpaceFirst (BufferedImage bufferedImage,double zoomValue,boolean newPixels,int applyTo) { //System.out.println("*******************************drawInDeviceSpaceFirst"); this.zoomValue = zoomValue; //gets the dimension of the screen displayDimension.height = bufferedImage.getRaster().getHeight(); displayDimension.width = bufferedImage.getRaster().getWidth(); //Maps the display area. The display area specified in the DICOM Supp 33 //is relative to the image pixel without ratiotion and flipping. //In the code the display area is relative to the image after ratation and flipping. //get display area values DisplayArea da = presentationStateGraphicsHandler.getDisplayArea(); int xTLHC = da.tlhc_x-1; int yTLHC =da.tlhc_y-1; int xBRHC =da.brhc_x-1 ; int yBRHC =da.brhc_y-1; //converts to points Point2D.Float tlhc = new Point2D.Float(xTLHC,yTLHC); Point2D.Float brhc = new Point2D.Float(xBRHC,yBRHC); //Converts the points TLHC and BRHC of the display area AffineTransform affDisplay = calculateSpatialTransfomation(); //Calculate transformation for Annotations, Shutter usw. affDisplay.transform(tlhc,tlhc); affDisplay.transform(brhc,brhc); //rotation of the image int rot = presentationStateGraphicsHandler.getRotation(); //help value float change; //changes x values if image is flipped if (rot == 0) { if (presentationStateGraphicsHandler.ps.getFlip()) { change = tlhc.x; tlhc.x = brhc.x; brhc.x = change; } } //changes x values if image is rotated 90 degree //if the image is rotated 90 degree and flipped //the transfomation eliminates each other. else if (rot == 1) { if (!presentationStateGraphicsHandler.ps.getFlip()) { change = tlhc.x; tlhc.x = brhc.x; brhc.x = change; } } //changes x and y values if image is rotated 180 degree //if the image is rotated 180 degree and flipped only //the y values must be changed else if (rot == 2) { if (!presentationStateGraphicsHandler.ps.getFlip()) { change = tlhc.x; tlhc.x = brhc.x; brhc.x = change; change = tlhc.y; tlhc.y = brhc.y; brhc.y = change; } else { change = tlhc.y; tlhc.y = brhc.y; brhc.y = change; } } //changes y values if image is rotated 270 degree //if the image is rotated 180 degree and flipped //the x an the y values must be changed else if (rot == 3) { if (!presentationStateGraphicsHandler.ps.getFlip()) { change = tlhc.y; tlhc.y = brhc.y; brhc.y = change; } else { change = tlhc.x; tlhc.x = brhc.x; brhc.x = change; change = tlhc.y; tlhc.y = brhc.y; brhc.y = change; } } //calculates the virtualTLHC if (tlhc.x >=0) virtualTLHC.x =displayDimension.width+(int)tlhc.x; else { virtualTLHC.x =displayDimension.width+(int)Math.round(tlhc.x*(zoomValue*presentationStateGraphicsHandler.getScalingX())); } if (tlhc.y >=0) virtualTLHC.y =displayDimension.height +(int)tlhc.y; else { virtualTLHC.y =displayDimension.height+(int)Math.round(tlhc.y*(zoomValue*presentationStateGraphicsHandler.getScalingY())); } //virtualTLHC.x =displayDimension.width+(int)tlhc.x; //virtualTLHC.y =displayDimension.height +(int)tlhc.y; //draws the image in the bufferedImage drawInDeviceSpace(bufferedImage,newPixels, true,applyTo); } /** * Draws the image in the specified ImageBuffer with the specified zoom value * * @param bufferedImage Specifies the BufferedImage in which the image will be drawn. * @param zoomValue Specifies the zoom value of the image. * @param newPixels false if the pixels must get from the c++ part of the code. * @since 30.04.1999 */ public void drawInDeviceSpace (BufferedImage bufferedImage,double zoomValue,boolean newPixels,boolean newBackground, int applyTo) { this.zoomValue = zoomValue; if (bufferedImage==null) return; displayDimension.height = bufferedImage.getRaster().getHeight(); displayDimension.width = bufferedImage.getRaster().getWidth(); drawInDeviceSpace(bufferedImage,newPixels, newBackground,applyTo); } /** * Draws the image in the specified ImageBuffer. * * @param bufferedImage Specifies the BufferedImage in which the image will be drawn. * @param newPixels false if the pixels must get from the c++ part of the code. * @since 30.04.1999 */ public void drawInDeviceSpace(BufferedImage bufferedImage,boolean newPixels,boolean newBackground, int applyTo) { System.out.println("--------------------------drawInDeviceSpace: " + number++); int yTLHC; int xTLHC; int yBRHC; int xBRHC; System.out.println("zoomValue: " + zoomValue); //Sets new screenRows ???? if ((displayDimension.height!= bufferedImage.getRaster().getHeight())|| (displayDimension.width!= bufferedImage.getRaster().getWidth())) { if (!displayDimension.equals(new Dimension(0,0))) { virtualTLHC.y = bufferedImage.getRaster().getHeight(); virtualTLHC.x = bufferedImage.getRaster().getWidth(); } displayDimension.height = bufferedImage.getRaster().getHeight(); displayDimension.width = bufferedImage.getRaster().getWidth(); } // if ((virtualTLHC.x - displayDimension.width) >= 0) { sourcePixelTLHC.x = virtualTLHC.x - displayDimension.width; displayPixelTLHC.x = 0; xTLHC = sourcePixelTLHC.x; } else { sourcePixelTLHC.x = 0; displayPixelTLHC.x = displayDimension.width-virtualTLHC.x; xTLHC = -(int)Math.round(displayPixelTLHC.x/(zoomValue*presentationStateGraphicsHandler.getCurrentScalingX())); } if((virtualTLHC.y - displayDimension.height)>=0) { sourcePixelTLHC.y = virtualTLHC.y - displayDimension.height; displayPixelTLHC.y = 0; yTLHC =sourcePixelTLHC.y; } else { sourcePixelTLHC.y = 0; displayPixelTLHC.y = displayDimension.height-virtualTLHC.y; yTLHC = -(int)Math.round(displayPixelTLHC.y/(zoomValue*presentationStateGraphicsHandler.getCurrentScalingY())); } //System.out.println(" sourcePixelTLHC.width: " +sourcePixelTLHC.x); //System.out.println(" screenDimension.width: " +screenDimension.width); //System.out.println(" displayPixelTLHC.width: " +displayPixelTLHC.x); //Calculates new visible BRHC of the image. sourcePixelBRHC = new Point ( (int)Math.round( sourcePixelTLHC.x + ((displayDimension.width-displayPixelTLHC.x)/(zoomValue*presentationStateGraphicsHandler.getCurrentScalingX()))), (int) Math.round(sourcePixelTLHC.y + ((displayDimension.height-displayPixelTLHC.y)/(zoomValue*presentationStateGraphicsHandler.getCurrentScalingY())))); //Calculates the new dispaly BRHC displayPixelBRHC = new Point(displayDimension.width,displayDimension.height); yBRHC = yTLHC +(int)Math.round(displayDimension.height/(zoomValue*presentationStateGraphicsHandler.getCurrentScalingY())); xBRHC = xTLHC +(int)Math.round(displayDimension.width/(zoomValue*presentationStateGraphicsHandler.getCurrentScalingX())); //transforms the display area AffineTransform affDisplay = calculateSpatialTransfomation(); Point2D.Float brhcPoint = new Point2D.Float(xBRHC,yBRHC); brhcPoint = getInverseTransformedPoint(brhcPoint,affDisplay); Point2D.Float tlhcPoint = new Point2D.Float(xTLHC,yTLHC); tlhcPoint = getInverseTransformedPoint(tlhcPoint,affDisplay); /* System.out.println("Hallo calculate TLHC "); System.out.println(" yBRHC " +yBRHC); System.out.println(" xBRHC " +xBRHC); System.out.println(" xTLHC " +xTLHC); System.out.println(" yTLHC " +yTLHC); System.out.println(" brhcPoint " +brhcPoint); System.out.println(" tlhcPoint " +tlhcPoint); */ // float change; //changes x values if image is flipped int rot = presentationStateGraphicsHandler.getRotation(); if (rot ==0) { if (presentationStateGraphicsHandler.ps.getFlip()) { change=tlhcPoint.x; tlhcPoint.x = brhcPoint.x; brhcPoint.x = change; } } //changes y values if image is rotated 90 degree //if the image is rotated 90 degree and flipped //the transfomation eliminates each other. else if (rot == 1) { if (!presentationStateGraphicsHandler.ps.getFlip()) { change = tlhcPoint.y; tlhcPoint.y = brhcPoint.y; brhcPoint.y = change; } } //changes x and y values if image is rotated 180 degree //if the image is rotated 180 degree and flipped only //the y values must be changed else if (rot == 2) { if (!presentationStateGraphicsHandler.ps.getFlip()) { change = tlhcPoint.y; tlhcPoint.y = brhcPoint.y; brhcPoint.y = change; change = tlhcPoint.x; tlhcPoint.x = brhcPoint.x; brhcPoint.x = change; } else { change = tlhcPoint.y; tlhcPoint.y = brhcPoint.y; brhcPoint.y = change; } } //changes x values if image is rotated 270 degree //if the image is rotated 180 degree and flipped //the x an the y values must be changed else if (rot == 3) { if (!presentationStateGraphicsHandler.ps.getFlip()) { change = tlhcPoint.x; tlhcPoint.x = brhcPoint.x; brhcPoint.x = change; } else { change = tlhcPoint.y; tlhcPoint.y = brhcPoint.y; brhcPoint.y = change; change = tlhcPoint.x; tlhcPoint.x = brhcPoint.x; brhcPoint.x = change; } } xBRHC = (int)brhcPoint.x; yBRHC = (int)brhcPoint.y; xTLHC = (int)tlhcPoint.x+1; yTLHC = (int)tlhcPoint.y+1; /* System.out.println(" yBRHC " +yBRHC); System.out.println(" yTLHC " +yTLHC); System.out.println(" xBRHC " +xBRHC); System.out.println(" xTLHC " +xTLHC); System.out.println(" virtualTLHC : " + virtualTLHC); System.out.println("Dispaly Mode: " + presentationStateGraphicsHandler.getDisplayArea()); */ //sets the new display area to the c++ part. System.out.println("drawInDeviceSpace -End1: " + applyTo); presentationStateGraphicsHandler.ps.setImageRelativeDisplayedArea(presentationStateGraphicsHandler.ps.getDisplayedAreaPresentationSizeMode(), xTLHC, yTLHC, xBRHC, yBRHC, zoomValue, applyTo); System.out.println("drawInDeviceSpace -End: " ); //Calculates the transformations calculateTransformation(zoomValue,sourcePixelTLHC, displayPixelTLHC); draw(bufferedImage,newPixels,newBackground); } /** * Draws the image in the specified ImageBuffer. * * @param bufferedImage Specifies the BufferedImage in which the image will be drawn. * @param newPixels false if the pixels must get from the c++ part of the code. */ public abstract void draw(BufferedImage bufferedImage,boolean newPixels, boolean newBackground); /** * Calculates the applying transformation * * @since 30.04.1999 */ public void calculatePrint(double zoom) { int rot = presentationStateGraphicsHandler.ps.getRotation(); boolean flip =presentationStateGraphicsHandler.ps.getFlip(); printAff = new AffineTransform(); printOverlayTransform = new AffineTransform(); DisplayArea da = presentationStateGraphicsHandler.getDisplayArea(); float x1 =0; float y1=0; if (rot == 0) { x1 = (-da.tlhc_x+1); y1 = (-da.tlhc_y+1); if (flip) x1=(da.brhc_x -presentationStateGraphicsHandler.getImageWidth()); } else if (rot ==1) { x1 = (da.brhc_y -presentationStateGraphicsHandler.getImageHeight()); y1= (-da.tlhc_x+1); if (flip) x1=(-da.tlhc_y+1); } else if (rot ==2) { y1 = ((da.brhc_y -presentationStateGraphicsHandler.getImageHeight())); x1= ((da.brhc_x -presentationStateGraphicsHandler.getImageWidth())); if (flip) x1=(-da.tlhc_x+1); } else { x1= -da.tlhc_y+1; y1= (da.brhc_x -presentationStateGraphicsHandler.getImageWidth()); if (flip) x1=(da.brhc_y -presentationStateGraphicsHandler.getImageHeight()); } printAff.scale(zoom,zoom); printAff.translate(x1,y1); printOverlayTransform.scale(zoom,zoom); printOverlayTransform.translate(x1,y1); //flipping if (flip) { printAff.scale(-1d,1d); printAff.translate(-presentationStateGraphicsHandler.getCurrentImageWidth(),0); } //rotation //if image height an image width are diffenent, there must set an offset. double diff =(presentationStateGraphicsHandler.getImageWidth()-presentationStateGraphicsHandler.getImageHeight())/2; if (rot ==1) { printAff.translate(-diff,-diff); } else if (rot == 3) { printAff.translate(diff,diff); } printAff.rotate( (rot*0.5)*Math.PI, (presentationStateGraphicsHandler.getCurrentImageWidth()/2d), (presentationStateGraphicsHandler.getCurrentImageHeight()/2d)); } void calculateTransformation(double zoom, Point transSourceTLHC, Point transDisplayTLHC) { System.out.println("zoom: " + zoom); System.out.println("presentationStateGraphicsHandler.getCurrentScalingX(): " + presentationStateGraphicsHandler.getCurrentScalingX()); System.out.println("presentationStateGraphicsHandler.getCurrentScalingY(): " + presentationStateGraphicsHandler.getCurrentScalingY()); //Calculate transformation for Annotations, Shutter usw. aff = new AffineTransform(); overlayTransform = new AffineTransform(); //Offsets //horizontal offset double x; //Vertical offset double y ; if (transSourceTLHC.x >0) x=(-transSourceTLHC.x)*zoom*presentationStateGraphicsHandler.getCurrentScalingX(); else x=transDisplayTLHC.x-zoom*presentationStateGraphicsHandler.getCurrentScalingX(); if (transSourceTLHC.y >0) y= (-transSourceTLHC.y)*zoom*presentationStateGraphicsHandler.getCurrentScalingY(); else y=transDisplayTLHC.y-zoom*presentationStateGraphicsHandler.getCurrentScalingY(); aff.translate(x,y); overlayTransform.translate(x,y); //zooming aff.scale(zoom*presentationStateGraphicsHandler.getCurrentScalingX(),zoom*presentationStateGraphicsHandler.getCurrentScalingY()); overlayTransform.scale(zoom*presentationStateGraphicsHandler.getCurrentScalingX(),zoom*presentationStateGraphicsHandler.getCurrentScalingY()); //flipping if (presentationStateGraphicsHandler.ps.getFlip()) { aff.scale(-1d,1d); if (presentationStateGraphicsHandler.ps.getDisplayedAreaPresentationSizeMode()==jDVPSPresentationSizeMode.DVPSD_trueSize) { aff.translate(-presentationStateGraphicsHandler.getCurrentImageWidth(),0); } else { aff.translate(-presentationStateGraphicsHandler.getCurrentImageWidth()*presentationStateGraphicsHandler.getCurrentScalingX(),0); } } //rotation int rot = presentationStateGraphicsHandler.ps.getRotation(); //if image height an image width are diffenent, there must set an offset. double diff =(presentationStateGraphicsHandler.getImageWidth()*presentationStateGraphicsHandler.getScX()-presentationStateGraphicsHandler.getImageHeight()*presentationStateGraphicsHandler.getScY())/2; System.out.println("diff: "+diff); if (rot ==1) { aff.translate(-diff,-diff); } else if (rot == 3) { aff.translate(diff,diff); } if (presentationStateGraphicsHandler.ps.getDisplayedAreaPresentationSizeMode()==jDVPSPresentationSizeMode.DVPSD_trueSize) { aff.rotate( (rot*0.5)*Math.PI, (presentationStateGraphicsHandler.getCurrentImageWidth()/2d), (presentationStateGraphicsHandler.getCurrentImageHeight()/2d)); } else { aff.rotate( (rot*0.5)*Math.PI, (presentationStateGraphicsHandler.getCurrentImageWidth()*presentationStateGraphicsHandler.getCurrentScalingX()/2d), (presentationStateGraphicsHandler.getCurrentImageHeight()*presentationStateGraphicsHandler.getCurrentScalingY()/2d)); } } /** * Builds the AffineTransfomation which rotate and flip points. * * @since 30.04.1999 */ AffineTransform calculateSpatialTransfomation() { AffineTransform returnTransform = new AffineTransform(); //rotation int rot = presentationStateGraphicsHandler.ps.getRotation(); //if image height an image width are diffenent, there must set an offset. double diff =(presentationStateGraphicsHandler.getImageWidth()-presentationStateGraphicsHandler.getImageHeight())/2; if (rot ==1) returnTransform.translate(-diff,diff); else if (rot == 3)returnTransform.translate(-diff,diff); //Rotates 90*rot degree returnTransform.rotate( (presentationStateGraphicsHandler.ps.getRotation()*0.5)*Math.PI, ((presentationStateGraphicsHandler.getImageWidth()-1)/2d), ((presentationStateGraphicsHandler.getImageHeight()-1)/2d)); //flipping if (presentationStateGraphicsHandler.ps.getFlip()) { if ((rot == 0)||(rot == 2)) { returnTransform.scale(-1d,1d); returnTransform.translate(-presentationStateGraphicsHandler.getImageWidth()+1,0); } else if ((rot== 1)||(rot == 3)) { returnTransform.scale(1d,-1d); returnTransform.translate(0,-presentationStateGraphicsHandler.getImageHeight()+1); } } return returnTransform; } /** * Gets the inverse transfomation of an specified point * and an specified AffineTransformation. * * @param displayPoint The point which should be transformed. * @param transAff The transformation which will be applied. * @return The inverse transfomation of the displayPoint. * @since 30.04.1999 */ public Point2D.Float getInverseTransformedPoint(Point2D.Float displayPoint,AffineTransform transAff) { Point2D.Float dstPoint = new Point2D.Float(); try { transAff.inverseTransform(displayPoint,dstPoint); } catch(NoninvertibleTransformException e) { System.out.println("NoninvertibleTransformException: " + e); } return dstPoint; } /** * Returns the transformation for the PresentationStateAnnotationObject * * @return The transformation for the PresentationStateAnnotationObject. * @since 30.04.1999 */ public AffineTransform getTransformation() { return aff; } public AffineTransform getPrintTransformation(double zoom) { calculatePrint(zoom); return printAff; } /** * Returns the transformation for the PresentationStateOverlayObject * * @return The transformation for the PresentationStateOverlayObject. * @since 30.04.1999 */ public AffineTransform getOverlayTransformation() { return overlayTransform; } public AffineTransform getPrintOverlayTransformation() { return printOverlayTransform; } } /* /* * CVS Log * $Log: TransformationConverter.java,v $ * Revision 1.2 2003/09/08 10:17:26 kleber * Bugfix: The Displayed Area is defined after the spatial transformation. * * Revision 1.1.1.1 2001/06/06 10:32:30 kleber * Init commit for DICOMscope 3.5 * Create new CVS * */ dicomscope-3.6.0/tkgui/viewer/sr/0002755000265600020320000000000011262371102016036 5ustar tilleaadmindicomscope-3.6.0/tkgui/viewer/sr/SRCodeChangePanel.java0000644000265600020320000004117411262371101022112 0ustar tilleaadmin/* * * Copyright (C) 1999, Institute for MicroTherapy * * This software and supporting documentation were developed by * * University of Witten/Herdecke * Department of Radiology and MicroTherapy * Institute for MicroTherapy * Medical computer science * * Universitaetsstrasse 142 * 44799 Bochum, Germany * * http://www.microtherapy.de/go/cs * mailto:computer.science@microtherapy.de * * THIS SOFTWARE IS MADE AVAILABLE, AS IS, AND THE INSTITUTE MAKES NO * WARRANTY REGARDING THE SOFTWARE, ITS PERFORMANCE, ITS MERCHANTABILITY * OR FITNESS FOR ANY PARTICULAR USE, FREEDOM FROM ANY COMPUTER DISEASES * OR ITS CONFORMITY TO ANY SPECIFICATION. THE ENTIRE RISK AS TO QUALITY * AND PERFORMANCE OF THE SOFTWARE IS WITH THE USER. * * Author : $Author: kleber $ * Last update : $Date: 2001/06/06 10:32:30 $ * Revision : $Revision: 1.1.1.1 $ * State: $State: Exp $ */ package viewer.sr; import java.util.*; import java.net.*; import de.microtherapy.tools.text.document.dicom.*; import java.awt.*; import java.awt.event.*; import javax.swing.*; import javax.swing.border.*; import javax.swing.event.*; import javax.swing.text.*; import javax.swing.text.html.*; import javax.swing.tree.*; import main.*; import J2Ci.*; /** * This class contains an abstract class * for editing a Content Item in a SR. * Each Content Item contains of a Concept Name * and an optional ObservationDateTime. * This class is a JPanel with a BorderLayout. * In the north the GUI for visualising and changing the * Concept Name is placed. In the south the * field for the Observation Date Time is placed *

* In the constructor the JPanel is build. Each extending class * have to implement the {@link initContentItemGUI} method. This method is used * for placing the returned component in the center of this panel. * * @author Klaus Kleber * @since 20.08.1999 */ public class SRCodeChangePanel extends JPanel { /** * Enable/disable the Listener */ protected boolean isListenerEnabled = false; /** * Contains the documentTree. */ protected jDSRDocumentTree documentTree; /** * Contains box with the available codes */ private JComboBox codeValueBox; /** * The identification of the Content Item type. */ protected int type; /** * The name of the context group */ private String contextGroupName; int nodeId; public static final int CONCEPT_NAME = 0; public static final int NUMERIC_CODE = 1; public static final int CODE = 2; int codeType = 0; /** * Constructor. Be aware that initContentItemGUI() * will be called for placing the returned JComponent * in the center of this panel * @param documentTree jDSRDocumentTree * @param nodeId Contains id of the node * @param type The identification of the Content Item type. * @param contextGroupName The name of the context group */ public SRCodeChangePanel( jDSRDocumentTree documentTree, int nodeId, int type, String contextGroupName, int codeType) { this.documentTree = documentTree; this.nodeId = nodeId; this.type = type; this.contextGroupName = contextGroupName; this.codeType = codeType; setLayout(new BorderLayout(5,5)); add(getCodePanel(), BorderLayout.CENTER); updateCode(); codeValueBox.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { changeCode(); } }); } /** * Change the code. The value in the codeValueBox will be * inserted in the jDSRDocumentTree. */ private void changeCode() { isListenerEnabled= false; //codeValueBox.removeAllItems(); //If the selected Index is "no value" if (!isLastValueValidSRCode()) { int index = codeValueBox.getItemCount()-1; //If the selected Index is "no value" if (codeValueBox.getSelectedIndex() == index) { isListenerEnabled= false; return; } codeValueBox.removeItemAt(index); } documentTree.gotoNode(getNodeId()); SRCode code = (SRCode)codeValueBox.getSelectedItem(); if (code != null) setCodeValue(code.getCodeValue(), code.getCodingSchemeDesignator(), code.getCodingSchemeVersion(), code.getCodeMeaning()); isListenerEnabled= true; } /** * Returns the node id oft the Content Item. This * value will be used for changing the value in node of the * jDSRDocumentTree * @return Returns the node id of the Content Item. */ public int getNodeId() { return nodeId; } /** * Return the name of the Context Group. * @Return the name of the Context Group. */ public String getContextGroupName() { return contextGroupName; } /** * Sets the name of the Context Group. * @param the name of the Context Group. */ public void setContextGroupName(String contextGroupName) { this.contextGroupName = contextGroupName; changeCode(); } private SRCode getCodeValue() { switch (codeType) { case NUMERIC_CODE: jDSRNumericValue numValue = documentTree.getCurrentNumValue(); if( numValue != null&& numValue.getMeasurementUnitCodeValue()!= null && !numValue.getMeasurementUnitCodeValue().equals("")) return new SRCode("", numValue.getMeasurementUnitCodingSchemeDesignator(), numValue.getMeasurementUnitCodingSchemeVersion(), numValue.getMeasurementUnitCodeValue(), numValue.getMeasurementUnitCodeMeaning()); else return null; case CODE: jDSRCodeValue codeValue = documentTree.getCurrentCodeValue(); if( codeValue != null&& codeValue.getCodeValue()!= null && !codeValue.getCodeValue().equals("")) return new SRCode("", codeValue.getCodingSchemeDesignator(), codeValue.getCodingSchemeVersion(), codeValue.getCodeValue(), codeValue.getCodeMeaning()); else return null; default: jDSRCodeValue code = documentTree.getCurrentConceptName(); if( code != null&& code.getCodeValue()!= null && !code.getCodeValue().equals("")) return new SRCode("", code.getCodingSchemeDesignator(), code.getCodingSchemeVersion(), code.getCodeValue(), code.getCodeMeaning()); else return null; } } private int setCodeValue(String codeValue, String codingSchemeDesignator, String codingSchemeVersion, String codeMeaning) { switch (codeType) { case NUMERIC_CODE: jDSRNumericValue numValue = documentTree.getCurrentNumValue(); return numValue.setMeasurementUnit( codeValue, codingSchemeDesignator, codingSchemeVersion, codeMeaning); case CODE: jDSRCodeValue code = documentTree.getCurrentCodeValue(); return code.setCode( codeValue, codingSchemeDesignator, codingSchemeVersion, codeMeaning); default: jDSRCodeValue conceptCode = documentTree.getCurrentConceptName(); return conceptCode.setCode( codeValue, codingSchemeDesignator, codingSchemeVersion, codeMeaning); } } /** * Updates the codeValueBox and the observationLabelthe srEditComponent with * values from the node *

* For updating the srEditComponet the update() * method of this object will be called */ public void updateCode() { //diable the listeners isListenerEnabled = false; documentTree.gotoNode(getNodeId()); //Gets the current node SRCode codeValue = getCodeValue(); if(codeValue != null) { //Gtes the index in the Context Group int index = SRCodeList.getIndexCode(MainContext.instance().codeList.getContextGroup(getContextGroupName()), codeValue.getIdentifier()); //If not avilable in the Context Group //insert it in the Context Group of the Content Item if (index == -1) { codeValue.setContextGroup(getContextGroupName()); codeValue.setDefault(false); codeValueBox.addItem( codeValue); MainContext.instance().codeList.instertCode(codeValue); codeValueBox.setSelectedIndex(codeValueBox.getItemCount()-1); } else codeValueBox.setSelectedIndex(index); } else { if (codeValueBox.getItemCount()==0) codeValueBox.addItem(new String("no value")); else { if (isLastValueValidSRCode()) { codeValueBox.addItem(new String("no value")); codeValueBox.setSelectedItem("no value"); } } } isListenerEnabled= true; } /** * Checks if last item in the codeValueBox is * not a valid SRCode. In this case the last * value is a String value representing that * no code is choosen in the Content Item. * @return true if the last item is a SRCode, else false */ private boolean isLastValueValidSRCode() { int index = codeValueBox.getItemCount()-1; if (index >= 0 && codeValueBox.getItemAt(index) instanceof String) return false; else return true; } /** * Opens a Dialog in which the user can inserted a new SRCode */ private void insertCode() { isListenerEnabled = false; //SRCode c = (SRCode)codeValueBox.getSelectedItem(); SRCodeEditDialog d = new SRCodeEditDialog( this, getContextGroupName()); d.setVisible(true); if (!d.cancelAction) { int status= setCodeValue(d.getCodeValue(), d.getSchemeDesignator(), d.getSchemeVersion(), d.getCodeMeaning()); if (status != 0) { System.err.println("Error while setting code. Status: " + status); return ; } if (!isLastValueValidSRCode()) { //I do'nt know why, but there will be an exception //if i try to delete the last element of the codeValueBox //with removeItemAt if (codeValueBox.getItemCount()<= 1) codeValueBox.removeAllItems(); else codeValueBox.removeItemAt(codeValueBox.getItemCount()-1); } SRCode cNew = new SRCode(getContextGroupName(), d.getSchemeDesignator(), d.getSchemeVersion(), d.getCodeValue(), d.getCodeMeaning()); cNew.setDefault(false); codeValueBox.addItem( cNew); codeValueBox.setSelectedItem(cNew); MainContext.instance().codeList.instertCode(cNew); } isListenerEnabled = true; } /** * Displays all Code Information */ private void showCodeInfo() { if (isLastValueValidSRCode()) { SRCode c = (SRCode)codeValueBox.getSelectedItem(); SRCodeEditDialog d = new SRCodeEditDialog( this, false, getContextGroupName(), c.getCodeValue(), c.getCodeMeaning(), c.getCodingSchemeDesignator(), c.getCodingSchemeVersion()); d.setVisible(true); } } /*** * Creates and returns the GUI for the code handling * @return GUI for the code handling */ private JPanel getCodePanel() { //Adds the code JPanel codePanel = new JPanel(new BorderLayout(5,5)); if (codeType == CONCEPT_NAME) { codePanel.setBorder(new TitledBorder("Concept Name")); } // Vector v = (Vector)MainContext.instance().codeList.getContextGroup(getContextGroupName()); if (v== null) v= new Vector(); else v=(Vector)v.clone(); //Be carful with the next two lines: //If you change the next two lines in //codeValueBox = new JComboBox(v) //be aware that some methods of the JComobBox does //not work any more. //{@link JComboBox.removeElementAt} codeValueBox = new JComboBox(); for(int i = 0; i < v.size(); i++) codeValueBox.addItem(v.elementAt(i)); codePanel.add(codeValueBox, BorderLayout.CENTER); JPanel buttonPanel = new JPanel(); jToolkit.io.IconRetriever ir = new jToolkit.io.IconRetriever (); JButton showCodeButton = new JButton(ir.getIcon(main.MainContext.iconPath+"showcode.gif")); showCodeButton.setMargin(new Insets(0,0,0,0)); showCodeButton.setToolTipText("Show Code"); showCodeButton.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { showCodeInfo(); } }); buttonPanel.add(showCodeButton); JButton insertCodeButton = new JButton(ir.getIcon(main.MainContext.iconPath+"insertcode.gif")); insertCodeButton.setMargin(new Insets(0,0,0,0)); insertCodeButton.setToolTipText("Insert Code"); insertCodeButton.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { insertCode(); } }); buttonPanel.add(insertCodeButton); codePanel.add(buttonPanel, BorderLayout.EAST); return codePanel; } } /* * CVS Log * $Log: SRCodeChangePanel.java,v $ * Revision 1.1.1.1 2001/06/06 10:32:30 kleber * Init commit for DICOMscope 3.5 * Create new CVS * */ dicomscope-3.6.0/tkgui/viewer/sr/SRCodeContentItemEditPanel.java0000644000265600020320000001200611262371101023754 0ustar tilleaadmin/* * * Copyright (C) 1999, Institute for MicroTherapy * * This software and supporting documentation were developed by * * University of Witten/Herdecke * Department of Radiology and MicroTherapy * Institute for MicroTherapy * Medical computer science * * Universitaetsstrasse 142 * 44799 Bochum, Germany * * http://www.microtherapy.de/go/cs * mailto:computer.science@microtherapy.de * * THIS SOFTWARE IS MADE AVAILABLE, AS IS, AND THE INSTITUTE MAKES NO * WARRANTY REGARDING THE SOFTWARE, ITS PERFORMANCE, ITS MERCHANTABILITY * OR FITNESS FOR ANY PARTICULAR USE, FREEDOM FROM ANY COMPUTER DISEASES * OR ITS CONFORMITY TO ANY SPECIFICATION. THE ENTIRE RISK AS TO QUALITY * AND PERFORMANCE OF THE SOFTWARE IS WITH THE USER. * * Author : $Author: kleber $ * Last update : $Date: 2001/06/06 10:32:30 $ * Revision : $Revision: 1.1.1.1 $ * State: $State: Exp $ */ package viewer.sr; import java.awt.*; import java.awt.event.*; import de.microtherapy.tools.text.document.dicom.*; import javax.swing.*; import javax.swing.event.*; import javax.swing.text.*; import javax.swing.text.html.*; import javax.swing.border.*; import main.*; import J2Ci.*; /** * This class contains a class * for editing Code Content Item in a SR. * @see SRGeneralContentItemEditPanel * @author Klaus Kleber * @since 20.08.1999 */ public class SRCodeContentItemEditPanel extends SRGeneralContentItemEditPanel { /** * Content */ public SRCodeContentItemEditPanel(jDSRDocumentTree documentTree,int nodeId) { super(documentTree,nodeId,jDSRE_ValueType.VT_Code,SRCode.CONTEXT_GROUP_NAME_CODE); updateContentItem(); } /** * Updates the value from the jDSRDocumentTree. */ private void updateContentItem() { isListenerEnabled= false; documentTree.gotoNode(getNodeId()); //jDSRNumericValue v = documentTree.getCurrentNumValue(); //numText.setText(v.getNumericValue()); isListenerEnabled= true; } /** * Changes the value in the jDSRDocumentTree */ private void changeContentItem() { isListenerEnabled= false; documentTree.gotoNode(getNodeId()); jDSRNumericValue v = documentTree.getCurrentNumValue(); //v.setNumericValue(numText.getText()); isListenerEnabled= true; } /** * Initialise and returns a JComponent containting a GUI for editing the * value of the Content Item. * @return JScrollbar with JTextArea containing the * value of the Content Item. */ public JComponent initContentItemGUI() { /* numText = new JTextField(); dsDocument = new DSDocument(); numText.setDocument(dsDocument); JPanel p = new JPanel(new BorderLayout()); p.setBackground(Color.lightGray); JPanel textPanel = new JPanel(new BorderLayout(10,10)); textPanel.setBorder(new EtchedBorder()); textPanel.add(new JLabel(" "), BorderLayout.NORTH); textPanel.add(new JLabel(" "), BorderLayout.SOUTH); JPanel centerPanel = new JPanel (new GridBagLayout()); GridBagConstraints gbc = new GridBagConstraints(); //Description Label //Pateint Name gbc.anchor = GridBagConstraints.WEST; gbc.fill = GridBagConstraints.NONE; gbc.gridwidth = 1; gbc.weightx = 0; gbc.insets = new Insets(0,0,0,0); centerPanel.add(new JLabel("Value: " ), gbc); centerPanel.add(Box.createHorizontalStrut(5)); gbc.fill = GridBagConstraints.HORIZONTAL; gbc.gridwidth = GridBagConstraints.REMAINDER; gbc.weightx = 1; centerPanel.add(numText, gbc); gbc.fill = GridBagConstraints.NONE; gbc.gridwidth = 1; gbc.weightx = 0; gbc.insets = new Insets(0,0,0,0); centerPanel.add(new JLabel("Code for Unit: " ), gbc); centerPanel.add(Box.createHorizontalStrut(5)); gbc.fill = GridBagConstraints.HORIZONTAL; gbc.gridwidth = GridBagConstraints.REMAINDER; gbc.weightx = 1; centerPanel.add(new JLabel("??"), gbc); textPanel.add(centerPanel,BorderLayout.CENTER); p.add(textPanel, BorderLayout.NORTH); numText.addFocusListener(new FocusListener() { public void focusGained(FocusEvent e) {} public void focusLost(FocusEvent e) { changeContentItem(); } }); numText.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { changeContentItem(); } }); return p; */ return null; } } /* * CVS Log * $Log: SRCodeContentItemEditPanel.java,v $ * Revision 1.1.1.1 2001/06/06 10:32:30 kleber * Init commit for DICOMscope 3.5 * Create new CVS * */ dicomscope-3.6.0/tkgui/viewer/sr/SRCodeEditDialog.java0000644000265600020320000001657111262371101021755 0ustar tilleaadmin/* * * Copyright (C) 1999, Institute for MicroTherapy * * This software and supporting documentation were developed by * * University of Witten/Herdecke * Department of Radiology and MicroTherapy * Institute for MicroTherapy * Medical computer science * * Universitaetsstrasse 142 * 44799 Bochum, Germany * * http://www.microtherapy.de/go/cs * mailto:computer.science@microtherapy.de * * THIS SOFTWARE IS MADE AVAILABLE, AS IS, AND THE INSTITUTE MAKES NO * WARRANTY REGARDING THE SOFTWARE, ITS PERFORMANCE, ITS MERCHANTABILITY * OR FITNESS FOR ANY PARTICULAR USE, FREEDOM FROM ANY COMPUTER DISEASES * OR ITS CONFORMITY TO ANY SPECIFICATION. THE ENTIRE RISK AS TO QUALITY * AND PERFORMANCE OF THE SOFTWARE IS WITH THE USER. * * Author : $Author: kleber $ * Last update : $Date: 2001/06/06 10:32:30 $ * Revision : $Revision: 1.1.1.1 $ * State: $State: Exp $ */ package viewer.sr; import java.util.*; import java.net.*; import de.microtherapy.tools.text.document.dicom.*; import java.awt.*; import java.awt.event.*; import javax.swing.*; import javax.swing.border.*; import javax.swing.event.*; import javax.swing.text.*; import javax.swing.text.html.*; import javax.swing.tree.*; import main.*; import J2Ci.*; /** * * @author Klaus Kleber * @since 20.08.1999 */ public class SRCodeEditDialog extends JDialog { /** * If true the SRCode should inserted */ private boolean insertMode = true; /** * Text for the Code Value */ private JTextField codeValueText = new JTextField(); /** * Text for the Code Meaning */ private JTextField codeMeaningText= new JTextField(); /** * Text for the Coding Scheme Designator */ private JTextField codingSchemeDesignatorText= new JTextField(); /** * Text for the Coding Scheme Version */ private JTextField codingSchemeVersionText= new JTextField(); /** * Text for the Code Value */ private JLabel contextGroupLabel ; private Component parent; public boolean cancelAction = true; public SRCodeEditDialog( Component parent, String contextName ) { this(parent, true, contextName, null,null,null,null); } public SRCodeEditDialog( Component parent, boolean insertMode, String contextName, String codeValue, String codeMeaning, String codingSchemeDesignator, String codingSchemeVersion) { super(); setModal(true); this.parent = parent; this.insertMode = insertMode; setLocationRelativeTo(parent); codeMeaningText.setDocument(new LODocument()); codeValueText.setDocument(new SHDocument()); codingSchemeDesignatorText.setDocument(new SHDocument()); codingSchemeVersionText.setDocument(new SHDocument()); if (insertMode == false) { setTitle("Code Info"); codeMeaningText.setEditable(false); codeValueText.setEditable(false); codingSchemeDesignatorText.setEditable(false); codingSchemeVersionText.setEditable(false); } else setTitle("Insert Code"); codeMeaningText.setText(codeMeaning); codeValueText.setText(codeValue); codingSchemeDesignatorText.setText(codingSchemeDesignator); codingSchemeVersionText.setText(codingSchemeVersion); if(contextName == null) contextName =""; getContentPane().setLayout(new BorderLayout(5,5)); JButton okButton = new JButton("Ok"); okButton.setToolTipText ("OK"); okButton.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { okAction(); } }); JButton cancelButton = new JButton("Cancel"); cancelButton.setToolTipText ("Cancel"); cancelButton.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { setVisible(false); } }); JPanel centerPanel = new JPanel(new GridLayout(4,2)); centerPanel.setBorder(new TitledBorder(contextName)); centerPanel.add(new JLabel("Code Value")); centerPanel.add(codeValueText); centerPanel.add(new JLabel("Code Meaning")); centerPanel.add(codeMeaningText); centerPanel.add(new JLabel("Scheme Designator")); centerPanel.add(codingSchemeDesignatorText); centerPanel.add(new JLabel("Scheme Version")); centerPanel.add(codingSchemeVersionText); getContentPane().add(centerPanel, BorderLayout.CENTER); JPanel bPanel = new JPanel(); bPanel.add(okButton); if (insertMode)bPanel.add(cancelButton); getContentPane().add(bPanel, BorderLayout.SOUTH); pack(); } private void okAction() { if (!insertMode) setVisible(false); else if (check()) { cancelAction = false; setVisible(false); } } private boolean check() { if (codeValueText.getText() == null||codeValueText.getText().equals("")) { JOptionPane.showMessageDialog(this,"Please insert Code Value"); return false; } if (codeMeaningText.getText() == null|codeMeaningText.getText().equals("")) { JOptionPane.showMessageDialog(this,"Please insert Code Meaning"); return false; } if (codingSchemeDesignatorText.getText() == null||codingSchemeDesignatorText.getText().equals("")) { JOptionPane.showMessageDialog(this,"Please insert Scheme Designator"); return false; } if (codingSchemeVersionText.getText() == null)codingSchemeVersionText.setText(""); return true; } public void setVisible(boolean flag) { if (flag == true) { Point p =parent.getLocationOnScreen(); setLocation(new Point(p.x-100, p.y+50)); } super.setVisible(flag); } public String getCodeValue() { return codeValueText.getText(); } public String getCodeMeaning() { return codeMeaningText.getText(); } public String getSchemeDesignator() { return codingSchemeDesignatorText.getText(); } public String getSchemeVersion() { return codingSchemeVersionText.getText(); } } /* * CVS Log * $Log: SRCodeEditDialog.java,v $ * Revision 1.1.1.1 2001/06/06 10:32:30 kleber * Init commit for DICOMscope 3.5 * Create new CVS * */ dicomscope-3.6.0/tkgui/viewer/sr/SRCodeValueContentItemEditPanel.java0000644000265600020320000001030511262371101024751 0ustar tilleaadmin/* * * Copyright (C) 1999, Institute for MicroTherapy * * This software and supporting documentation were developed by * * University of Witten/Herdecke * Department of Radiology and MicroTherapy * Institute for MicroTherapy * Medical computer science * * Universitaetsstrasse 142 * 44799 Bochum, Germany * * http://www.microtherapy.de/go/cs * mailto:computer.science@microtherapy.de * * THIS SOFTWARE IS MADE AVAILABLE, AS IS, AND THE INSTITUTE MAKES NO * WARRANTY REGARDING THE SOFTWARE, ITS PERFORMANCE, ITS MERCHANTABILITY * OR FITNESS FOR ANY PARTICULAR USE, FREEDOM FROM ANY COMPUTER DISEASES * OR ITS CONFORMITY TO ANY SPECIFICATION. THE ENTIRE RISK AS TO QUALITY * AND PERFORMANCE OF THE SOFTWARE IS WITH THE USER. * * Author : $Author: kleber $ * Last update : $Date: 2001/06/06 10:32:30 $ * Revision : $Revision: 1.1.1.1 $ * State: $State: Exp $ */ package viewer.sr; import java.awt.*; import java.awt.event.*; import de.microtherapy.tools.text.document.dicom.*; import javax.swing.*; import javax.swing.event.*; import javax.swing.text.*; import javax.swing.text.html.*; import javax.swing.border.*; import main.*; import J2Ci.*; /** * This class contains a class * for editing Code Value Content Item in a SR. * @see SRGeneralContentItemEditPanel * @author Klaus Kleber * @since 20.08.1999 */ public class SRCodeValueContentItemEditPanel extends SRGeneralContentItemEditPanel { /** * Content */ SRCodeChangePanel srUnitCodeChangePanel; public SRCodeValueContentItemEditPanel(jDSRDocumentTree documentTree,int nodeId) { super(documentTree,nodeId,jDSRE_ValueType.VT_Code,SRCode.CONTEXT_GROUP_NAME_CODE); updateContentItem(); } /** * Updates the value from the jDSRDocumentTree. */ private void updateContentItem() { isListenerEnabled= false; documentTree.gotoNode(getNodeId()); isListenerEnabled= true; } /** * Changes the value in the jDSRDocumentTree */ private void changeContentItem() { isListenerEnabled= false; documentTree.gotoNode(getNodeId()); isListenerEnabled= true; } /** * Initialise and returns a JComponent containting a GUI for editing the * value of the Content Item. * @return JScrollbar with JTextArea containing the * value of the Content Item. */ public JComponent initContentItemGUI() { srUnitCodeChangePanel = new SRCodeChangePanel(documentTree, nodeId, jDSRE_ValueType.VT_Num, SRCode.CONTEXT_GROUP_NAME_CODE, SRCodeChangePanel.CODE); JPanel p = new JPanel(new BorderLayout()); p.setBackground(Color.lightGray); JPanel textPanel = new JPanel(new BorderLayout(10,10)); textPanel.setBorder(new EtchedBorder()); textPanel.add(new JLabel(" "), BorderLayout.NORTH); textPanel.add(new JLabel(" "), BorderLayout.SOUTH); JPanel centerPanel = new JPanel (new GridBagLayout()); GridBagConstraints gbc = new GridBagConstraints(); //Description Label //Pateint Name gbc.anchor = GridBagConstraints.WEST; gbc.fill = GridBagConstraints.NONE; gbc.gridwidth = 1; gbc.weightx = 0; gbc.insets = new Insets(0,0,0,0); centerPanel.add(new JLabel("Code: " ), gbc); centerPanel.add(Box.createHorizontalStrut(5)); gbc.fill = GridBagConstraints.HORIZONTAL; gbc.gridwidth = GridBagConstraints.REMAINDER; gbc.weightx = 1; centerPanel.add(srUnitCodeChangePanel, gbc); textPanel.add(centerPanel,BorderLayout.CENTER); p.add(textPanel, BorderLayout.NORTH); return p; } } /* * CVS Log * $Log: SRCodeValueContentItemEditPanel.java,v $ * Revision 1.1.1.1 2001/06/06 10:32:30 kleber * Init commit for DICOMscope 3.5 * Create new CVS * */ dicomscope-3.6.0/tkgui/viewer/sr/SRCompositeContentItemEditPanel.java0000644000265600020320000001155611262371101025055 0ustar tilleaadmin/* * * Copyright (C) 1999, Institute for MicroTherapy * * This software and supporting documentation were developed by * * University of Witten/Herdecke * Department of Radiology and MicroTherapy * Institute for MicroTherapy * Medical computer science * * Universitaetsstrasse 142 * 44799 Bochum, Germany * * http://www.microtherapy.de/go/cs * mailto:computer.science@microtherapy.de * * THIS SOFTWARE IS MADE AVAILABLE, AS IS, AND THE INSTITUTE MAKES NO * WARRANTY REGARDING THE SOFTWARE, ITS PERFORMANCE, ITS MERCHANTABILITY * OR FITNESS FOR ANY PARTICULAR USE, FREEDOM FROM ANY COMPUTER DISEASES * OR ITS CONFORMITY TO ANY SPECIFICATION. THE ENTIRE RISK AS TO QUALITY * AND PERFORMANCE OF THE SOFTWARE IS WITH THE USER. * * Author : $Author: kleber $ * Last update : $Date: 2001/06/06 10:32:30 $ * Revision : $Revision: 1.1.1.1 $ * State: $State: Exp $ */ package viewer.sr; import java.awt.*; import java.awt.event.*; import de.microtherapy.tools.text.document.dicom.*; import javax.swing.*; import javax.swing.event.*; import javax.swing.text.*; import javax.swing.text.html.*; import javax.swing.border.*; import main.*; import J2Ci.*; /** * This class contains a class * for editing a Composite Content Item in a SR. * @see SRGeneralContentItemEditPanel * @author Klaus Kleber * @since 20.08.1999 */ public class SRCompositeContentItemEditPanel extends SRGeneralContentItemEditPanel { /** * Content */ JTextField sOPClassUid; JTextField sOPInstanceUid; public SRCompositeContentItemEditPanel(jDSRDocumentTree documentTree,int nodeId) { super(documentTree,nodeId,jDSRE_ValueType.VT_Composite,SRCode.CONTEXT_GROUP_NAME_COMPOSITE); updateContentItem(); } /** * Updates the value from the jDSRDocumentTree. */ private void updateContentItem() { isListenerEnabled= false; documentTree.gotoNode(getNodeId()); jDSRCompositeValue ref = documentTree.getCurrentCompositeValue(); if (ref != null) { String name = ref.getSOPClassName(); if (name == null||name.equals(""))name = ref.getSOPInstanceUID()+ " unknown SOP Name"; sOPClassUid.setText(name); sOPInstanceUid.setText(ref.getSOPInstanceUID()); } isListenerEnabled= true; } /** * Changes the value in the jDSRDocumentTree */ private void changeContentItem() { isListenerEnabled= false; documentTree.gotoNode(getNodeId()); isListenerEnabled= true; } /** * Initialise and returns a JComponent containting a GUI for editing the * value of the Content Item. * @return JScrollbar with JTextArea containing the * value of the Content Item. */ public JComponent initContentItemGUI() { sOPClassUid= new JTextField(); sOPInstanceUid= new JTextField(); sOPClassUid.setEditable(false); sOPInstanceUid.setEditable(false); JPanel p = new JPanel(new BorderLayout()); p.setBackground(Color.lightGray); JPanel textPanel = new JPanel(new BorderLayout(10,10)); textPanel.setBorder(new EtchedBorder()); textPanel.add(new JLabel(" "), BorderLayout.NORTH); textPanel.add(new JLabel(" "), BorderLayout.SOUTH); JPanel centerPanel = new JPanel (new GridBagLayout()); GridBagConstraints gbc = new GridBagConstraints(); //Description Label //Pateint Name gbc.anchor = GridBagConstraints.WEST; gbc.fill = GridBagConstraints.NONE; gbc.gridwidth = 1; gbc.weightx = 0; gbc.insets = new Insets(0,0,0,0); centerPanel.add(new JLabel("SOP Class Name: " ), gbc); centerPanel.add(Box.createHorizontalStrut(5)); gbc.fill = GridBagConstraints.HORIZONTAL; gbc.gridwidth = GridBagConstraints.REMAINDER; gbc.weightx = 1; centerPanel.add(sOPClassUid, gbc); gbc.fill = GridBagConstraints.NONE; gbc.gridwidth = 1; gbc.weightx = 0; gbc.insets = new Insets(0,0,0,0); centerPanel.add(new JLabel("SOP Instance UID: " ), gbc); centerPanel.add(Box.createHorizontalStrut(5)); gbc.fill = GridBagConstraints.HORIZONTAL; gbc.gridwidth = GridBagConstraints.REMAINDER; gbc.weightx = 1; centerPanel.add(sOPInstanceUid, gbc); textPanel.add(centerPanel,BorderLayout.CENTER); p.add(textPanel, BorderLayout.NORTH); return p; } } /* * CVS Log * $Log: SRCompositeContentItemEditPanel.java,v $ * Revision 1.1.1.1 2001/06/06 10:32:30 kleber * Init commit for DICOMscope 3.5 * Create new CVS * */ dicomscope-3.6.0/tkgui/viewer/sr/SRContainerContentItemEditPanel.java0000644000265600020320000001120211262371101025021 0ustar tilleaadmin/* * * Copyright (C) 1999, Institute for MicroTherapy * * This software and supporting documentation were developed by * * University of Witten/Herdecke * Department of Radiology and MicroTherapy * Institute for MicroTherapy * Medical computer science * * Universitaetsstrasse 142 * 44799 Bochum, Germany * * http://www.microtherapy.de/go/cs * mailto:computer.science@microtherapy.de * * THIS SOFTWARE IS MADE AVAILABLE, AS IS, AND THE INSTITUTE MAKES NO * WARRANTY REGARDING THE SOFTWARE, ITS PERFORMANCE, ITS MERCHANTABILITY * OR FITNESS FOR ANY PARTICULAR USE, FREEDOM FROM ANY COMPUTER DISEASES * OR ITS CONFORMITY TO ANY SPECIFICATION. THE ENTIRE RISK AS TO QUALITY * AND PERFORMANCE OF THE SOFTWARE IS WITH THE USER. * * Author : $Author: kleber $ * Last update : $Date: 2001/06/06 10:32:30 $ * Revision : $Revision: 1.1.1.1 $ * State: $State: Exp $ */ package viewer.sr; import java.awt.*; import java.awt.event.*; import javax.swing.*; import javax.swing.event.*; import javax.swing.text.*; import javax.swing.text.html.*; import javax.swing.border.*; import main.*; import J2Ci.*; /** * This class contains a class * for editing a Text Content Item in a SR. * @see SRGeneralContentItemEditPanel * @author Klaus Kleber * @since 20.08.1999 */ public class SRContainerContentItemEditPanel extends SRGeneralContentItemEditPanel { /** * Content */ private JRadioButton separateRadioButton; private JRadioButton continuousRadioButton; boolean isRoot = false; public SRContainerContentItemEditPanel(jDSRDocumentTree documentTree,int nodeId) { super(documentTree,nodeId,jDSRE_ValueType.VT_Container,SRCode.CONTEXT_GROUP_NAME_SECTION_HEADING); documentTree.gotoNode(nodeId); if (documentTree.getCurrentLevel()==1) { setContextGroupName(SRCode.CONTEXT_GROUP_NAME_DOCUMENT_TITLE); } updateContentItem(); } /** * Updates the value from the jDSRDocumentTree. */ private void updateContentItem() { isListenerEnabled= false; documentTree.gotoNode(getNodeId()); int result = documentTree.getCurrentContinuityOfContentFlag(); if (result == jDSRE_ContinuityOfContent.COC_Continuous) { continuousRadioButton.setSelected(true); } else if (result == jDSRE_ContinuityOfContent.COC_Separate) { separateRadioButton.setSelected(true); } else System.err.println("invalid Continuity Of Content: " + jDSRE_ContinuityOfContent.getName(result)); isListenerEnabled= true; } /** * Changes the value in the jDSRDocumentTree */ private void changeContentItem() { isListenerEnabled= false; documentTree.gotoNode(getNodeId()); if (separateRadioButton.isSelected())documentTree.setCurrentContinuityOfContentFlag(jDSRE_ContinuityOfContent.COC_Separate); else if (continuousRadioButton.isSelected())documentTree.setCurrentContinuityOfContentFlag(jDSRE_ContinuityOfContent.COC_Continuous); isListenerEnabled= true; } /** * Initialise and returns a JComponent containting a GUI for editing the * value of the Content Item. * @return JScrollbar with JTextArea containing the * value of the Content Item. */ public JComponent initContentItemGUI() { ButtonGroup bg= new ButtonGroup(); separateRadioButton = new JRadioButton("Separate"); continuousRadioButton = new JRadioButton("Continuous"); bg.add(separateRadioButton); bg.add(continuousRadioButton); JPanel p = new JPanel(new BorderLayout()); p.setBackground(Color.lightGray); JPanel radioPanel = new JPanel(new GridLayout(2,1)); radioPanel.setBorder(new TitledBorder("Continuity of content" )); radioPanel.add(separateRadioButton); radioPanel.add(continuousRadioButton); p.add(radioPanel, BorderLayout.NORTH); separateRadioButton.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { changeContentItem(); } }); continuousRadioButton.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { changeContentItem(); } }); return p; } } /* * CVS Log * $Log: SRContainerContentItemEditPanel.java,v $ * Revision 1.1.1.1 2001/06/06 10:32:30 kleber * Init commit for DICOMscope 3.5 * Create new CVS * */ dicomscope-3.6.0/tkgui/viewer/sr/SRDateContentItemEditPanel.java0000644000265600020320000000777311262371101023776 0ustar tilleaadmin/* * * Copyright (C) 1999, Institute for MicroTherapy * * This software and supporting documentation were developed by * * University of Witten/Herdecke * Department of Radiology and MicroTherapy * Institute for MicroTherapy * Medical computer science * * Universitaetsstrasse 142 * 44799 Bochum, Germany * * http://www.microtherapy.de/go/cs * mailto:computer.science@microtherapy.de * * THIS SOFTWARE IS MADE AVAILABLE, AS IS, AND THE INSTITUTE MAKES NO * WARRANTY REGARDING THE SOFTWARE, ITS PERFORMANCE, ITS MERCHANTABILITY * OR FITNESS FOR ANY PARTICULAR USE, FREEDOM FROM ANY COMPUTER DISEASES * OR ITS CONFORMITY TO ANY SPECIFICATION. THE ENTIRE RISK AS TO QUALITY * AND PERFORMANCE OF THE SOFTWARE IS WITH THE USER. * * Author : $Author: kleber $ * Last update : $Date: 2001/06/06 10:32:30 $ * Revision : $Revision: 1.1.1.1 $ * State: $State: Exp $ */ package viewer.sr; import java.awt.*; import java.awt.event.*; import de.microtherapy.tools.text.document.dicom.*; import javax.swing.*; import javax.swing.event.*; import javax.swing.text.*; import javax.swing.text.html.*; import javax.swing.border.*; import main.*; import J2Ci.*; /** * This class contains a class * for editing Date Content Item in a SR. * @see SRGeneralContentItemEditPanel * @author Klaus Kleber * @since 20.08.1999 */ public class SRDateContentItemEditPanel extends SRGeneralContentItemEditPanel { /** * Content */ JTextField text; DADocument daDocument; public SRDateContentItemEditPanel(jDSRDocumentTree documentTree,int nodeId) { super(documentTree,nodeId,jDSRE_ValueType.VT_Date,SRCode.CONTEXT_GROUP_NAME_DATE); updateContentItem(); } /** * Updates the value from the jDSRDocumentTree. */ private void updateContentItem() { isListenerEnabled= false; documentTree.gotoNode(getNodeId()); text.setText(documentTree.getCurrentStringValue()); isListenerEnabled= true; } /** * Changes the value in the jDSRDocumentTree */ private void changeContentItem() { isListenerEnabled= false; if (daDocument.check()){ documentTree.gotoNode(getNodeId()); documentTree.setCurrentStringValue(text.getText()); } else { text.selectAll(); text.repaint(); Toolkit.getDefaultToolkit().beep(); } isListenerEnabled= true; } /** * Initialise and returns a JComponent containting a GUI for editing the * value of the Content Item. * @return JScrollbar with JTextArea containing the * value of the Content Item. */ public JComponent initContentItemGUI() { text = new JTextField(); daDocument = new DADocument(); text.setDocument(daDocument); JPanel p = new JPanel(new BorderLayout()); p.setBackground(Color.lightGray); JPanel textPanel = new JPanel(new BorderLayout(10,10)); textPanel.setBorder(new EtchedBorder()); textPanel.add(new JLabel(" "), BorderLayout.NORTH); textPanel.add(new JLabel(" "), BorderLayout.SOUTH); textPanel.add(new JLabel("Date: "),BorderLayout.WEST); textPanel.add(text,BorderLayout.CENTER); p.add(textPanel, BorderLayout.NORTH); text.addFocusListener(new FocusListener() { public void focusGained(FocusEvent e) {} public void focusLost(FocusEvent e) { changeContentItem(); } }); text.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { changeContentItem(); } }); return p; } } /* * CVS Log * $Log: SRDateContentItemEditPanel.java,v $ * Revision 1.1.1.1 2001/06/06 10:32:30 kleber * Init commit for DICOMscope 3.5 * Create new CVS * */ dicomscope-3.6.0/tkgui/viewer/sr/SRDateTimeContentItemEditPanel.java0000644000265600020320000001351611262371101024605 0ustar tilleaadmin/* * * Copyright (C) 1999, Institute for MicroTherapy * * This software and supporting documentation were developed by * * University of Witten/Herdecke * Department of Radiology and MicroTherapy * Institute for MicroTherapy * Medical computer science * * Universitaetsstrasse 142 * 44799 Bochum, Germany * * http://www.microtherapy.de/go/cs * mailto:computer.science@microtherapy.de * * THIS SOFTWARE IS MADE AVAILABLE, AS IS, AND THE INSTITUTE MAKES NO * WARRANTY REGARDING THE SOFTWARE, ITS PERFORMANCE, ITS MERCHANTABILITY * OR FITNESS FOR ANY PARTICULAR USE, FREEDOM FROM ANY COMPUTER DISEASES * OR ITS CONFORMITY TO ANY SPECIFICATION. THE ENTIRE RISK AS TO QUALITY * AND PERFORMANCE OF THE SOFTWARE IS WITH THE USER. * * Author : $Author: kleber $ * Last update : $Date: 2001/06/06 10:32:30 $ * Revision : $Revision: 1.1.1.1 $ * State: $State: Exp $ */ package viewer.sr; import java.awt.*; import java.awt.event.*; import de.microtherapy.tools.text.document.dicom.*; import javax.swing.*; import javax.swing.event.*; import javax.swing.text.*; import javax.swing.text.html.*; import javax.swing.border.*; import main.*; import J2Ci.*; /** * This class contains a class * for editing DateTime Content Item in a SR. * @see SRGeneralContentItemEditPanel * @author Klaus Kleber * @since 20.08.1999 */ public class SRDateTimeContentItemEditPanel extends SRGeneralContentItemEditPanel { /** * Content */ JTextField daText; JTextField tmText; DADocument daDocument; TMDocument tmDocument; public SRDateTimeContentItemEditPanel(jDSRDocumentTree documentTree,int nodeId) { super(documentTree,nodeId,jDSRE_ValueType.VT_DateTime,SRCode.CONTEXT_GROUP_NAME_DATETIME); updateContentItem(); } /** * Updates the value from the jDSRDocumentTree. */ private void updateContentItem() { isListenerEnabled= false; documentTree.gotoNode(getNodeId()); String s = documentTree.getCurrentStringValue(); daText.setText(s.substring(0,8)); tmText.setText(s.substring(8)); isListenerEnabled= true; } /** * Changes the value in the jDSRDocumentTree */ private void changeContentItem() { isListenerEnabled= false; if (!daDocument.check()){ Toolkit.getDefaultToolkit().beep(); return; } if (tmDocument.check()){ documentTree.gotoNode(getNodeId()); documentTree.setCurrentStringValue(daText.getText()+tmText.getText()); } else { Toolkit.getDefaultToolkit().beep(); } isListenerEnabled= true; } /** * Initialise and returns a JComponent containting a GUI for editing the * value of the Content Item. * @return JScrollbar with JTextArea containing the * value of the Content Item. */ public JComponent initContentItemGUI() { daText = new JTextField(); tmText = new JTextField(); daDocument = new DADocument(); tmDocument = new TMDocument(); tmText.setDocument(tmDocument); JPanel p = new JPanel(new BorderLayout()); p.setBackground(Color.lightGray); JPanel textPanel = new JPanel(new BorderLayout(10,10)); textPanel.setBorder(new EtchedBorder()); textPanel.add(new JLabel(" "), BorderLayout.NORTH); textPanel.add(new JLabel(" "), BorderLayout.SOUTH); JPanel centerPanel = new JPanel (new GridBagLayout()); GridBagConstraints gbc = new GridBagConstraints(); //Description Label //Pateint Name gbc.anchor = GridBagConstraints.WEST; gbc.fill = GridBagConstraints.NONE; gbc.gridwidth = 1; gbc.weightx = 0; gbc.insets = new Insets(0,0,0,0); centerPanel.add(new JLabel("Date: " ), gbc); centerPanel.add(Box.createHorizontalStrut(5)); gbc.fill = GridBagConstraints.HORIZONTAL; gbc.gridwidth = GridBagConstraints.REMAINDER; gbc.weightx = 1; centerPanel.add(daText, gbc); gbc.fill = GridBagConstraints.NONE; gbc.gridwidth = 1; gbc.weightx = 0; gbc.insets = new Insets(0,0,0,0); centerPanel.add(new JLabel("Time: " ), gbc); centerPanel.add(Box.createHorizontalStrut(5)); gbc.fill = GridBagConstraints.HORIZONTAL; gbc.gridwidth = GridBagConstraints.REMAINDER; gbc.weightx = 1; centerPanel.add(tmText, gbc); textPanel.add(centerPanel,BorderLayout.CENTER); p.add(textPanel, BorderLayout.NORTH); daText.addFocusListener(new FocusListener() { public void focusGained(FocusEvent e) {} public void focusLost(FocusEvent e) { changeContentItem(); } }); daText.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { changeContentItem(); } }); tmText.addFocusListener(new FocusListener() { public void focusGained(FocusEvent e) {} public void focusLost(FocusEvent e) { changeContentItem(); } }); tmText.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { changeContentItem(); } }); return p; } } /* * CVS Log * $Log: SRDateTimeContentItemEditPanel.java,v $ * Revision 1.1.1.1 2001/06/06 10:32:30 kleber * Init commit for DICOMscope 3.5 * Create new CVS * */ dicomscope-3.6.0/tkgui/viewer/sr/SREditHeaderPanel.java0000644000265600020320000006733411262371101022136 0ustar tilleaadmin/* * * Copyright (C) 1999, Institute for MicroTherapy * * This software and supporting documentation were developed by * * University of Witten/Herdecke * Department of Radiology and MicroTherapy * Institute for MicroTherapy * Medical computer science * * Universitaetsstrasse 142 * 44799 Bochum, Germany * * http://www.microtherapy.de/go/cs * mailto:computer.science@microtherapy.de * * THIS SOFTWARE IS MADE AVAILABLE, AS IS, AND THE INSTITUTE MAKES NO * WARRANTY REGARDING THE SOFTWARE, ITS PERFORMANCE, ITS MERCHANTABILITY * OR FITNESS FOR ANY PARTICULAR USE, FREEDOM FROM ANY COMPUTER DISEASES * OR ITS CONFORMITY TO ANY SPECIFICATION. THE ENTIRE RISK AS TO QUALITY * AND PERFORMANCE OF THE SOFTWARE IS WITH THE USER. * * Author : $Author: kleber $ * Last update : $Date: 2001/06/06 10:32:30 $ * Revision : $Revision: 1.1.1.1 $ * State: $State: Exp $ */ package viewer.sr; import de.microtherapy.tools.text.document.dicom.*; import de.microtherapy.tools.text.document.general.*; import java.util.*; import java.net.*; import java.awt.*; import java.awt.event.*; import javax.swing.*; import javax.swing.border.*; import javax.swing.event.*; import javax.swing.text.*; import javax.swing.text.html.*; import javax.swing.tree.*; import main.*; import J2Ci.*; /** * This class contains the GUI vizualizing a Dicom Structured Report * as an HTML document. * * @author Klaus Kleber * @since 20.08.1999 */ public class SREditHeaderPanel extends JPanel { //Patient private JSizedTextField patientBirthDateText; private JTextField patientIdText; private JTextField nameTextField; private JComboBox patientSexCombo ; //Study private JTextField studyDescriptionText ; private JSizedTextField studyIdText ; private JSizedTextField accessionText ; private JTextField referringText; //Series private JSizedTextField seriesNumberText; private JTextField seriesDescriptionText ; //Report private JSizedTextField instanceNumberText; boolean isListenerEnabled = false; /** * Title */ private TitledBorder titledBorder = new TitledBorder("Header Information"); /** * Current jDVInterface */ private jDVInterface dvi; /** * Size for the Struts */ private int strutSize = 5; /** * Fonts for the header */ private Font headerFont; /** * Dimension for the label */ private Dimension labelDimension; /** * Constructor * * @param dvi jDVInterface */ public SREditHeaderPanel(jDVInterface dvi) { this.dvi = dvi; setBorder(titledBorder); setLayout(new BorderLayout(5,5)); EditListener editListener = new EditListener(); //Patient Name nameTextField = new JTextField(30); nameTextField.setDocument(new PNDocument()); nameTextField.addActionListener(editListener); nameTextField.addFocusListener(editListener); //Patient ID patientIdText = new JTextField(30); patientIdText.setDocument(new LODocument()); patientIdText.addActionListener(editListener); patientIdText.addFocusListener(editListener); //Patient Birth Date patientBirthDateText = new JSizedTextField(10); patientBirthDateText.setDocument(new DateDocument()); patientBirthDateText.addActionListener(editListener); patientBirthDateText.addFocusListener(editListener); //Patient Sex String v[] = {"M", "F", "O"}; patientSexCombo = new JComboBox(v); patientSexCombo.addActionListener(editListener); patientSexCombo.addFocusListener(editListener); //Study Description studyDescriptionText = new JTextField(30); studyDescriptionText.setDocument(new LODocument()); studyDescriptionText.addActionListener(editListener); studyDescriptionText.addFocusListener(editListener); //Stud ID studyIdText = new JSizedTextField(10); studyIdText.setDocument(new SHDocument()); studyIdText.addActionListener(editListener); studyIdText.addFocusListener(editListener); //Referring Physicains Name referringText = new JTextField(30); referringText.setDocument(new PNDocument()); referringText.addActionListener(editListener); referringText.addFocusListener(editListener); //Accession Number accessionText = new JSizedTextField(10); accessionText.setDocument(new SHDocument()); accessionText.addActionListener(editListener); accessionText.addFocusListener(editListener); //Series Description seriesDescriptionText = new JTextField(30); seriesDescriptionText.setDocument(new LODocument()); seriesDescriptionText.addActionListener(editListener); seriesDescriptionText.addFocusListener(editListener); //Series Number seriesNumberText = new JSizedTextField(10); seriesNumberText.setDocument(new SHDocument()); seriesNumberText.addActionListener(editListener); seriesNumberText.addFocusListener(editListener); //Instance Number instanceNumberText = new JSizedTextField(10); instanceNumberText.setDocument(new ISDocument()); instanceNumberText.addActionListener(editListener); instanceNumberText.addFocusListener(editListener); labelDimension = (new JLabel("Referring Physician ")).getPreferredSize(); Box box = new Box(BoxLayout.Y_AXIS); add(box, BorderLayout.NORTH); box.add(getPatientPanel()); box.add(getStudyPanel()); box.add(getSeriesPanel()); box.add(getReportPanel()); update(); } /** * Updates alle fields from the interface */ private void update() { //System.err.println("update"); isListenerEnabled = false; jDSRDocument sr = dvi.getCurrentReport(); nameTextField.setText(sr.getPatientsName()); patientIdText.setText(sr.getPatientID()); patientSexCombo.setSelectedItem(sr.getPatientsSex()); patientBirthDateText.setText(sr.getPatientsBirthDate()); referringText.setText(sr.getReferringPhysiciansName()); accessionText.setText(sr.getAccessionNumber()); seriesDescriptionText.setText(sr.getSeriesDescription()); seriesNumberText.setText(sr.getSeriesNumber()); studyDescriptionText.setText(sr.getStudyDescription()); studyIdText.setText(sr.getStudyID()); instanceNumberText.setText( sr.getInstanceNumber()); isListenerEnabled = true; } /** * Changes the values in the interface */ private void changeInterface() { jDSRDocument sr = dvi.getCurrentReport(); sr.setSpecificCharacterSetType(jDSRE_CharacterSet.CS_Latin1); //Patient Name int status = sr.setPatientsName(nameTextField.getText()); if (status != 0) System.err.println("Error while setting patients name. Value: " + nameTextField.getText()+ ", Status: " + status); //Patient Birth date status = sr.setPatientsBirthDate(patientBirthDateText.getText()); if (status != 0) System.err.println("Error while setting patients birth date. Value: " + patientBirthDateText.getText()+ ", Status: " + status); //Patient ID sr.setPatientID(patientIdText.getText()); if (status != 0) System.err.println("Error while setting patients id. Value: " + patientIdText.getText()+ ", Status: " + status); //Patient Sex sr.setPatientsSex((String)patientSexCombo.getSelectedItem()); if (status != 0) System.err.println("Error while setting patients Sex. Value: " + (String)patientSexCombo.getSelectedItem()+ ", Status: " + status); //Study description sr.setStudyDescription(studyDescriptionText.getText()); if (status != 0) System.err.println("Error while setting study description. Value: " + studyDescriptionText.getText()+ ", Status: " + status); //Study Id sr.setStudyID(studyIdText.getText()); if (status != 0) System.err.println("Error while setting study Id. Value: " + studyIdText.getText()+ ", Status: " + status); //Referring Physician sr.setReferringPhysiciansName(referringText.getText()); if (status != 0) System.err.println("Error while setting referring physicians name. Value: " + referringText.getText()+ ", Status: " + status); //Accession number sr.setAccessionNumber(accessionText.getText()); if (status != 0) System.err.println("Error while setting accession number. Value: " + accessionText.getText()+ ", Status: " + status); //Series Description sr.setSeriesDescription(seriesDescriptionText.getText()); if (status != 0) System.err.println("Error while setting series description. Value: " + seriesDescriptionText.getText()+ ", Status: " + status); //Series Id sr.setSeriesNumber(seriesNumberText.getText()); if (status != 0) System.err.println("Error while setting series number. Value: " + seriesNumberText.getText()+ ", Status: " + status); //Instance Number sr.setInstanceNumber(instanceNumberText.getText()); if (status != 0) System.err.println("Error while setting instance number. Value: " + instanceNumberText.getText()+ ", Status: " + status); } public JPanel getPatientPanel() { JPanel namePanel = new JPanel(); GridBagLayout gbl = new GridBagLayout(); namePanel.setBorder(new EtchedBorder()); GridBagConstraints gbc = new GridBagConstraints(); namePanel.setLayout(gbl); gbc.anchor = GridBagConstraints.NORTHWEST; gbc.gridwidth = GridBagConstraints.REMAINDER; JLabel patientLabel = new JLabel("Patient"); Font f = patientLabel.getFont(); headerFont = new Font(f.getName(), f.BOLD+f.ITALIC, ( f.getSize()+(int)( f.getSize()*0.2f))); patientLabel.setFont(headerFont); namePanel.add(patientLabel, gbc); gbc.anchor= GridBagConstraints.NORTH; gbc.fill = GridBagConstraints.HORIZONTAL; gbc.insets = new Insets(0,0,10,0); namePanel.add(new JSeparator(), gbc); //Pateint Name gbc.anchor = GridBagConstraints.WEST; gbc.fill = GridBagConstraints.NONE; gbc.gridwidth = 1; gbc.weightx = 0; gbc.insets = new Insets(0,0,0,0); JLabel nl = new JLabel("Name"); nl.setPreferredSize(labelDimension); nl.setMinimumSize(labelDimension); namePanel.add(nl, gbc); namePanel.add(Box.createHorizontalStrut(strutSize)); gbc.fill = GridBagConstraints.HORIZONTAL; gbc.gridwidth = GridBagConstraints.REMAINDER; gbc.weightx = 1; namePanel.add(nameTextField, gbc); //namePanel.add(Box.createHorizontalStrut(strutSize)); //add(Box.createVerticalStrut(vStrut)); gbc.fill = GridBagConstraints.NONE; gbc.anchor = GridBagConstraints.WEST; gbc.gridwidth=1; gbc.weightx = 0; JLabel idl = new JLabel("Identification"); idl.setPreferredSize(labelDimension); namePanel.add(idl, gbc); //namePanel.add(new JLabel("")); namePanel.add(Box.createHorizontalStrut(strutSize)); gbc.weightx = 1; gbc.fill = GridBagConstraints.HORIZONTAL; gbc.gridwidth = GridBagConstraints.REMAINDER; namePanel.add(patientIdText, gbc); gbc.fill = GridBagConstraints.NONE; gbc.gridwidth = 1; gbc.weightx = 0; namePanel.add(new JLabel("Birth Date"), gbc); namePanel.add(Box.createHorizontalStrut(strutSize)); gbc.gridwidth = 1; //gbc.fill = GridBagConstraints.NONE; namePanel.add(patientBirthDateText, gbc); namePanel.add(Box.createHorizontalStrut(2*strutSize)); gbc.anchor = GridBagConstraints.WEST; gbc.fill = GridBagConstraints.NONE; gbc.gridwidth = 1; gbc.weightx = 0; namePanel.add(new JLabel("Sex"), gbc); namePanel.add(Box.createHorizontalStrut(strutSize)); namePanel.add(Box.createHorizontalStrut(strutSize)); gbc.gridwidth = GridBagConstraints.REMAINDER; namePanel.add(patientSexCombo, gbc); return namePanel; } public JPanel getReportPanel() { JPanel generalPanel = new JPanel(); GridBagLayout gbl = new GridBagLayout(); generalPanel.setBorder(new EtchedBorder()); GridBagConstraints gbc = new GridBagConstraints(); generalPanel.setLayout(gbl); gbc.anchor = GridBagConstraints.NORTHWEST; gbc.gridwidth = GridBagConstraints.REMAINDER; JLabel patientLabel = new JLabel("Report"); Font f = patientLabel.getFont(); headerFont = new Font(f.getName(), f.BOLD+f.ITALIC, ( f.getSize()+(int)( f.getSize()*0.2f))); patientLabel.setFont(headerFont); generalPanel.add(patientLabel, gbc); gbc.anchor= GridBagConstraints.NORTH; gbc.fill = GridBagConstraints.HORIZONTAL; gbc.insets = new Insets(0,0,10,0); generalPanel.add(new JSeparator(), gbc); //Instance Number Label gbc.anchor = GridBagConstraints.WEST; gbc.fill = GridBagConstraints.NONE; gbc.gridwidth = 1; gbc.weightx = 0; gbc.insets = new Insets(0,0,0,0); JLabel l = new JLabel("Number"); l.setPreferredSize(labelDimension); l.setMinimumSize(labelDimension); generalPanel.add(l, gbc); generalPanel.add(Box.createHorizontalStrut(strutSize)); //Instance Number //gbc.fill = GridBagConstraints.HORIZONTAL; gbc.gridwidth=1; gbc.weightx = 1; generalPanel.add(instanceNumberText, gbc); //Instance Number Label generalPanel.add(Box.createHorizontalStrut(strutSize)); gbc.anchor = GridBagConstraints.WEST; gbc.fill = GridBagConstraints.BOTH; gbc.gridwidth = GridBagConstraints.REMAINDER; gbc.weightx = 0; generalPanel.add(new JLabel(" "), gbc); return generalPanel; } public JPanel getSeriesPanel() { JPanel returnPanel = new JPanel(); GridBagLayout gbl = new GridBagLayout(); returnPanel.setBorder(new EtchedBorder()); GridBagConstraints gbc = new GridBagConstraints(); returnPanel.setLayout(gbl); gbc.anchor = GridBagConstraints.NORTHWEST; gbc.gridwidth = GridBagConstraints.REMAINDER; JLabel headerLabel = new JLabel("Series"); Font f = headerLabel.getFont(); f = new Font(f.getName(), f.BOLD+f.ITALIC, ( f.getSize()+(int)( f.getSize()*0.2f))); headerLabel.setFont(headerFont); returnPanel.add(headerLabel, gbc); gbc.anchor= GridBagConstraints.NORTH; gbc.fill = GridBagConstraints.HORIZONTAL; gbc.insets = new Insets(0,0,10,0); returnPanel.add(new JSeparator(), gbc); //Pateint Name gbc.anchor = GridBagConstraints.WEST; gbc.fill = GridBagConstraints.NONE; gbc.gridwidth = 1; gbc.weightx = 0; gbc.insets = new Insets(0,0,0,0); JLabel desLabel = new JLabel("Description"); desLabel.setPreferredSize(labelDimension); desLabel.setMinimumSize(labelDimension); returnPanel.add(desLabel, gbc); returnPanel.add(Box.createHorizontalStrut(strutSize)); gbc.fill = GridBagConstraints.HORIZONTAL; gbc.gridwidth=GridBagConstraints.REMAINDER; gbc.weightx = 1; returnPanel.add(seriesDescriptionText, gbc); gbc.fill = GridBagConstraints.NONE; gbc.gridwidth = 1; gbc.weightx = 0; returnPanel.add(new JLabel("Number"), gbc); returnPanel.add(Box.createHorizontalStrut(strutSize)); gbc.gridwidth = GridBagConstraints.REMAINDER; //gbc.fill = GridBagConstraints.NONE; returnPanel.add(seriesNumberText, gbc); return returnPanel; } public JPanel getStudyPanel() { JPanel returnPanel = new JPanel(); GridBagLayout gbl = new GridBagLayout(); returnPanel.setBorder(new EtchedBorder()); GridBagConstraints gbc = new GridBagConstraints(); returnPanel.setLayout(gbl); gbc.anchor = GridBagConstraints.NORTHWEST; gbc.gridwidth = GridBagConstraints.REMAINDER; JLabel headerLabel = new JLabel("Study"); Font f = headerLabel.getFont(); f = new Font(f.getName(), f.BOLD+f.ITALIC, ( f.getSize()+(int)( f.getSize()*0.2f))); headerLabel.setFont(headerFont); returnPanel.add(headerLabel, gbc); gbc.anchor= GridBagConstraints.NORTH; gbc.fill = GridBagConstraints.HORIZONTAL; gbc.insets = new Insets(0,0,10,0); returnPanel.add(new JSeparator(), gbc); //Description Label gbc.anchor = GridBagConstraints.WEST; gbc.fill = GridBagConstraints.NONE; gbc.gridwidth = 1; gbc.weightx = 0; gbc.insets = new Insets(0,0,0,0); JLabel desLabel = new JLabel("Description"); desLabel.setPreferredSize(labelDimension); desLabel.setMinimumSize(labelDimension); returnPanel.add(desLabel, gbc); returnPanel.add(Box.createHorizontalStrut(strutSize)); //Description gbc.fill = GridBagConstraints.HORIZONTAL; gbc.gridwidth=GridBagConstraints.REMAINDER; gbc.weightx = 1; returnPanel.add(studyDescriptionText, gbc); //Id Label gbc.fill = GridBagConstraints.NONE; gbc.gridwidth = 1; gbc.weightx = 0; returnPanel.add(new JLabel("Identification"), gbc); returnPanel.add(Box.createHorizontalStrut(strutSize)); //Id gbc.gridwidth = GridBagConstraints.REMAINDER; returnPanel.add(studyIdText, gbc); gbc.fill = GridBagConstraints.NONE; gbc.gridwidth = 1; gbc.weightx = 0; gbc.insets = new Insets(0,0,0,0); returnPanel.add(new JLabel("Referring Physician "), gbc); returnPanel.add(Box.createHorizontalStrut(strutSize)); gbc.fill = GridBagConstraints.HORIZONTAL; gbc.gridwidth=GridBagConstraints.REMAINDER; gbc.weightx = 1; returnPanel.add(referringText, gbc); gbc.fill = GridBagConstraints.NONE; gbc.gridwidth = 1; gbc.weightx = 0; returnPanel.add(new JLabel("Accession Number"), gbc); returnPanel.add(Box.createHorizontalStrut(strutSize)); gbc.gridwidth = GridBagConstraints.REMAINDER; //gbc.fill = GridBagConstraints.NONE; returnPanel.add(accessionText, gbc); return returnPanel; } public class EditListener implements ActionListener, FocusListener { public void actionPerformed(ActionEvent e) { if (isListenerEnabled)changeInterface(); } public void focusGained(FocusEvent e) { } public void focusLost(FocusEvent e) { if (isListenerEnabled)changeInterface(); } } /* public JPanel getGeneralPanel() { JPanel generalPanel = new JPanel(); GridBagLayout gbl = new GridBagLayout(); generalPanel.setBorder(new EtchedBorder()); GridBagConstraints gbc = new GridBagConstraints(); generalPanel.setLayout(gbl); gbc.anchor = GridBagConstraints.NORTHWEST; gbc.gridwidth = GridBagConstraints.REMAINDER; JLabel patientLabel = new JLabel("General"); Font f = patientLabel.getFont(); headerFont = new Font(f.getName(), f.BOLD+f.ITALIC, ( f.getSize()+(int)( f.getSize()*0.2f))); patientLabel.setFont(headerFont); generalPanel.add(patientLabel, gbc); gbc.anchor= GridBagConstraints.NORTH; gbc.fill = GridBagConstraints.HORIZONTAL; gbc.insets = new Insets(0,0,10,0); generalPanel.add(new JSeparator(), gbc); //Pateint Name gbc.anchor = GridBagConstraints.WEST; gbc.fill = GridBagConstraints.NONE; gbc.gridwidth = 1; gbc.weightx = 0; gbc.insets = new Insets(0,0,0,0); generalPanel.add(new JLabel("Referring Physician"), gbc); generalPanel.add(Box.createHorizontalStrut(strutSize)); gbc.fill = GridBagConstraints.HORIZONTAL; gbc.gridwidth=1; gbc.weightx = 1; TextField referringTextField = new TextField(30); referringTextField.setText(sr.getReferringPhysiciansName()); generalPanel.add(referringTextField, gbc); generalPanel.add(Box.createHorizontalStrut(strutSize)); gbc.fill = GridBagConstraints.NONE; gbc.gridwidth = 1; gbc.weightx = 0; generalPanel.add(new JLabel("Accession Number"), gbc); generalPanel.add(Box.createHorizontalStrut(strutSize)); gbc.gridwidth = GridBagConstraints.REMAINDER; //gbc.fill = GridBagConstraints.NONE; TextField accessionField = new TextField(10); accessionField.setText(sr.getAccessionNumber()); generalPanel.add(accessionField, gbc); //add(Box.createVerticalStrut(vStrut)); gbc.anchor = GridBagConstraints.WEST; gbc.gridwidth=1; generalPanel.add(new JLabel("Series description")); generalPanel.add(Box.createHorizontalStrut(strutSize)); gbc.gridwidth=1; gbc.weightx = 1; TextField seriesDescrptionTextField = new TextField(30); seriesDescrptionTextField.setText(sr.getSeriesDescription()); gbc.fill = GridBagConstraints.HORIZONTAL; generalPanel.add(seriesDescrptionTextField, gbc); generalPanel.add(Box.createHorizontalStrut(strutSize)); gbc.anchor = GridBagConstraints.WEST; gbc.fill = GridBagConstraints.NONE; gbc.gridwidth = 1; gbc.weightx = 0; generalPanel.add(new JLabel("Series ID"), gbc); generalPanel.add(Box.createHorizontalStrut(strutSize)); gbc.gridwidth = GridBagConstraints.REMAINDER; TextField seriesIDTextField = new TextField(10); generalPanel.add(seriesIDTextField, gbc); return generalPanel; } public JPanel getPatientPanel() { JPanel namePanel = new JPanel(); GridBagLayout gbl = new GridBagLayout(); namePanel.setBorder(new EtchedBorder()); GridBagConstraints gbc = new GridBagConstraints(); namePanel.setLayout(gbl); gbc.anchor = GridBagConstraints.NORTHWEST; gbc.gridwidth = GridBagConstraints.REMAINDER; JLabel patientLabel = new JLabel("Patient"); Font f = patientLabel.getFont(); headerFont = new Font(f.getName(), f.BOLD+f.ITALIC, ( f.getSize()+(int)( f.getSize()*0.2f))); patientLabel.setFont(headerFont); namePanel.add(patientLabel, gbc); gbc.anchor= GridBagConstraints.NORTH; gbc.fill = GridBagConstraints.HORIZONTAL; gbc.insets = new Insets(0,0,10,0); namePanel.add(new JSeparator(), gbc); //Pateint Name gbc.anchor = GridBagConstraints.WEST; gbc.fill = GridBagConstraints.NONE; gbc.gridwidth = 1; gbc.weightx = 0; gbc.insets = new Insets(0,0,0,0); namePanel.add(new JLabel("Name"), gbc); namePanel.add(Box.createHorizontalStrut(strutSize)); gbc.fill = GridBagConstraints.HORIZONTAL; gbc.gridwidth=1; gbc.weightx = 1; TextField nameTextField = new TextField(30); nameTextField.setText(sr.getPatientsName()); namePanel.add(nameTextField, gbc); namePanel.add(Box.createHorizontalStrut(strutSize)); gbc.fill = GridBagConstraints.NONE; gbc.gridwidth = 1; gbc.weightx = 0; namePanel.add(new JLabel("Birth Date"), gbc); namePanel.add(Box.createHorizontalStrut(strutSize)); gbc.gridwidth = GridBagConstraints.REMAINDER; //gbc.fill = GridBagConstraints.NONE; TextField dateField = new TextField(10); namePanel.add(dateField, gbc); //add(Box.createVerticalStrut(vStrut)); gbc.anchor = GridBagConstraints.WEST; gbc.gridwidth=1; namePanel.add(new JLabel("Identification")); namePanel.add(Box.createHorizontalStrut(strutSize)); gbc.gridwidth=1; gbc.weightx = 1; TextField idTextField = new TextField(30); idTextField.setText(sr.getPatientID()); gbc.fill = GridBagConstraints.HORIZONTAL; namePanel.add(idTextField, gbc); namePanel.add(Box.createHorizontalStrut(strutSize)); gbc.anchor = GridBagConstraints.WEST; gbc.fill = GridBagConstraints.NONE; gbc.gridwidth = 1; gbc.weightx = 0; namePanel.add(new JLabel("Sex"), gbc); namePanel.add(Box.createHorizontalStrut(strutSize)); gbc.gridwidth = GridBagConstraints.REMAINDER; String v[] = {"M", "F"}; JComboBox sexField = new JComboBox(v); namePanel.add(sexField, gbc); return namePanel; } */ public class JSizedTextField extends JTextField { public JSizedTextField(int length) { super(length); } public Dimension getMinimumSize() { Dimension d = super.getMinimumSize(); return new Dimension(100,(int)d.getHeight()); } public Dimension getMaximumSize() { Dimension d = super.getMaximumSize(); return new Dimension(100,(int)d.getHeight()); } } } /* * CVS Log * $Log: SREditHeaderPanel.java,v $ * Revision 1.1.1.1 2001/06/06 10:32:30 kleber * Init commit for DICOMscope 3.5 * Create new CVS * */ dicomscope-3.6.0/tkgui/viewer/sr/SREditPanel.java0000644000265600020320000002243211262371101021013 0ustar tilleaadmin/* * * Copyright (C) 1999, Institute for MicroTherapy * * This software and supporting documentation were developed by * * University of Witten/Herdecke * Department of Radiology and MicroTherapy * Institute for MicroTherapy * Medical computer science * * Universitaetsstrasse 142 * 44799 Bochum, Germany * * http://www.microtherapy.de/go/cs * mailto:computer.science@microtherapy.de * * THIS SOFTWARE IS MADE AVAILABLE, AS IS, AND THE INSTITUTE MAKES NO * WARRANTY REGARDING THE SOFTWARE, ITS PERFORMANCE, ITS MERCHANTABILITY * OR FITNESS FOR ANY PARTICULAR USE, FREEDOM FROM ANY COMPUTER DISEASES * OR ITS CONFORMITY TO ANY SPECIFICATION. THE ENTIRE RISK AS TO QUALITY * AND PERFORMANCE OF THE SOFTWARE IS WITH THE USER. * * Author : $Author: kleber $ * Last update : $Date: 2001/06/06 10:32:30 $ * Revision : $Revision: 1.1.1.1 $ * State: $State: Exp $ */ package viewer.sr; import java.util.*; import viewer.gui.*; import java.net.*; import viewer.sr.*; import java.awt.*; import java.awt.event.*; import javax.swing.*; import javax.swing.border.*; import javax.swing.event.*; import javax.swing.text.*; import javax.swing.text.html.*; import javax.swing.tree.*; import main.*; import J2Ci.*; /** * This class contains the GUI vizualizing a Dicom Structured Report * as an HTML document. * * @author Klaus Kleber * @since 20.08.1999 */ public class SREditPanel extends JPanel { /** * Tilted Boder containing the name of the SR Object */ //private TitledBorder titledBorder = new TitledBorder("Structured Report"); /** * Current DVI Interface */ private jDVInterface dvi; JSplitPane split ; SRTreeElement srTreeElement; SREditTreePanel treePanel; MainImageViewerPanel mainView; String mode = ""; public static final String HACKER_MODE = "Hacker Mode"; /** * Constructor * * @param dvi jDVInterface */ public SREditPanel(jDVInterface dvi, MainImageViewerPanel mainView ) { this.dvi = dvi; this.mainView = mainView; setBorder(new TitledBorder("Structured Report Editor " + mode)); setLayout(new BorderLayout()); JPanel buttonPanel = new JPanel(); //buttonPanel.setBorder(new EtchedBorder()); add(buttonPanel, BorderLayout.NORTH); GuiComponents gui = GuiComponents.getInstance(); JButton okButton = gui.srOkButton; okButton.setToolTipText("Back to Viewer"); okButton.addActionListener(new CloseAction()); buttonPanel.add(okButton); } public void update(boolean hackermode) { if (hackermode) { mode = HACKER_MODE; } else { mode = ""; Controller.instance().fireStatus(new SignedStatusEvent(this, SignedStatusEvent.LOADSR, dvi.getCombinedImagePStateSignatureStatus(), dvi.getCurrentSignatureStatus(jDVPSObjectType.DVPSS_structuredReport), false)); } setBorder(new TitledBorder("Structured Report Editor " + mode)); if (split != null) remove(split); //CenterPanel jDSRDocument sr = dvi.getCurrentReport(); String name = jDSRE_DocumentType.getDocumentTypeName(sr.getDocumentType()); split = new JSplitPane(JSplitPane.VERTICAL_SPLIT); split.setOneTouchExpandable(true); treePanel = new SREditTreePanel(dvi,name, new SRTreeSelectionListener()); split.setTopComponent(new JScrollPane(treePanel)); split.setDividerLocation(300); add(split, BorderLayout.CENTER); split.setBottomComponent(new SREditHeaderPanel(dvi)); } public class SRTreeSelectionListener implements TreeSelectionListener { public void valueChanged(TreeSelectionEvent e) { srTreeElement =(SRTreeElement) ((DefaultMutableTreeNode)e.getPath().getLastPathComponent()).getUserObject(); int div = split.getDividerLocation(); jDSRDocument sr = dvi.getCurrentReport(); jDSRDocumentTree documentTree = sr.getTree(); if (srTreeElement.name.equals("Header")) { split.setBottomComponent(new SREditHeaderPanel(dvi)); } else if(srTreeElement.name.equals("Text")) { split.setBottomComponent(new SRTextContentItemEditPanel(documentTree,srTreeElement.srNodeId)); } else if(srTreeElement.name.equals("Person Name")) { split.setBottomComponent(new SRPNameContentItemEditPanel(documentTree,srTreeElement.srNodeId)); } else if(srTreeElement.name.equals("UID Reference")) { split.setBottomComponent(new SRUIDRefContentItemEditPanel(documentTree,srTreeElement.srNodeId)); } else if(srTreeElement.name.equals("Date")) { split.setBottomComponent(new SRDateContentItemEditPanel(documentTree,srTreeElement.srNodeId)); } else if(srTreeElement.name.equals("Time")) { split.setBottomComponent(new SRTimeContentItemEditPanel(documentTree,srTreeElement.srNodeId)); } else if(srTreeElement.name.equals("Datetime")) { split.setBottomComponent(new SRDateTimeContentItemEditPanel(documentTree,srTreeElement.srNodeId)); } else if(srTreeElement.name.equals("Container")) { split.setBottomComponent(new SRContainerContentItemEditPanel(documentTree,srTreeElement.srNodeId)); } else if(srTreeElement.name.equals("Numeric Value")) { split.setBottomComponent(new SRNumericValueContentItemEditPanel(documentTree,srTreeElement.srNodeId)); } else if(srTreeElement.name.equals("Code")) { split.setBottomComponent(new SRCodeValueContentItemEditPanel(documentTree,srTreeElement.srNodeId)); } else if(srTreeElement.name.equals("Temporal Coordinates")) { split.setBottomComponent(new SRTemporalCoordinateContentItemEditPanel(documentTree,srTreeElement.srNodeId)); } else if(srTreeElement.name.equals("Image")) { split.setBottomComponent(new SRImageContentItemEditPanel(documentTree,srTreeElement.srNodeId,dvi)); } else if(srTreeElement.name.equals("Waveform")) { split.setBottomComponent(new SRWaveformContentItemEditPanel(documentTree,srTreeElement.srNodeId)); } else if(srTreeElement.name.equals("Composite")) { split.setBottomComponent(new SRCompositeContentItemEditPanel(documentTree,srTreeElement.srNodeId)); } else if(srTreeElement.name.equals("Spatial Coordinates")) { split.setBottomComponent(new SRSpatialCoordinateContentItemEditPanel(documentTree,srTreeElement.srNodeId)); } else if ( srTreeElement.name.equals("by-reference")) { JPanel p = new JPanel(new BorderLayout()); p.setBorder (new TitledBorder("by-reference")); JPanel buttonPanel = new JPanel(); JButton b = new JButton(new GotoAction(srTreeElement.srNodeId)); buttonPanel.add(b); p.add(buttonPanel, BorderLayout.CENTER); split.setBottomComponent(p); } else split.setBottomComponent(new JPanel()); split.setDividerLocation(div); } } /** * CloseAction */ public class GotoAction extends AbstractAction { int nodeId; public GotoAction(int nodeId) { super("Show Target"); this.nodeId = nodeId; } public void actionPerformed(ActionEvent e) { jDSRDocument sr = dvi.getCurrentReport(); jDSRDocumentTree documentTree = sr.getTree(); documentTree.gotoNode(nodeId); int nextNode = documentTree.getCurrentReferencedNodeID(); treePanel.gotoSRNode (nextNode); } } /** * CloseAction */ public class CloseAction extends AbstractAction { public CloseAction() { super("Close"); } public void actionPerformed(ActionEvent e) { mainView.editSRClose(); // if ( mode.equals(HACKER_MODE)) Controller.instance().fireStatus(new SignedStatusEvent(this, SignedStatusEvent.LOADSR, dvi.getCombinedImagePStateSignatureStatus(), dvi.getCurrentSignatureStatus(jDVPSObjectType.DVPSS_structuredReport),false)); } } } /* * CVS Log * $Log: SREditPanel.java,v $ * Revision 1.1.1.1 2001/06/06 10:32:30 kleber * Init commit for DICOMscope 3.5 * Create new CVS * */ dicomscope-3.6.0/tkgui/viewer/sr/SREditTreeCellRenderer.java0000644000265600020320000003536511262371101023153 0ustar tilleaadmin/* * * Copyright (C) 1999, Institute for MicroTherapy * * This software and supporting documentation were developed by * * University of Witten/Herdecke * Department of Radiology and MicroTherapy * Institute for MicroTherapy * Medical computer science * * Universitaetsstrasse 142 * 44799 Bochum, Germany * * http://www.microtherapy.de/go/cs * mailto:computer.science@microtherapy.de * * THIS SOFTWARE IS MADE AVAILABLE, AS IS, AND THE INSTITUTE MAKES NO * WARRANTY REGARDING THE SOFTWARE, ITS PERFORMANCE, ITS MERCHANTABILITY * OR FITNESS FOR ANY PARTICULAR USE, FREEDOM FROM ANY COMPUTER DISEASES * OR ITS CONFORMITY TO ANY SPECIFICATION. THE ENTIRE RISK AS TO QUALITY * AND PERFORMANCE OF THE SOFTWARE IS WITH THE USER. * * Author : $Author: kleber $ * Last update : $Date: 2001/06/06 10:32:30 $ * Revision : $Revision: 1.1.1.1 $ * State: $State: Exp $ */ package viewer.sr; import java.lang.*; import javax.swing.tree.*; import javax.swing.*; import java.awt.*; import jToolkit.io.*; import main.MainContext; import J2Ci.*; /** * Draws a tree element with the correct icon in the tree * * @author Andreas Schroeter * @since 30.04.1999 */ public class SREditTreeCellRenderer implements TreeCellRenderer { // Icons protected static Icon rootIcon; protected static Icon headerIcon; protected static Icon textUnSignIcon; protected static Icon textSignIcon; protected static Icon codeSignIcon; protected static Icon codeUnSignIcon; protected static Icon numSignIcon; protected static Icon numUnSignIcon; protected static Icon dateTimeSignIcon; protected static Icon dateTimeUnSignIcon; protected static Icon dateSignIcon; protected static Icon dateUnSignIcon; protected static Icon timeSignIcon; protected static Icon timeUnSignIcon; protected static Icon uidRefSignIcon; protected static Icon uidRefUnSignIcon; protected static Icon pnSignIcon; protected static Icon pnUnSignIcon; protected static Icon scSignIcon; protected static Icon scUnSignIcon; protected static Icon tcSignIcon; protected static Icon tcUnSignIcon; protected static Icon compositeSignIcon; protected static Icon compositeUnSignIcon; protected static Icon imageSignIcon; protected static Icon imageUnSignIcon; protected static Icon waveformSignIcon; protected static Icon waveformUnSignIcon; protected static Icon containerSignIcon; protected static Icon containerUnSignIcon; protected static Icon refSignIcon; protected static Icon refUnSignIcon; // Colors /** Color to use for the foreground for selected nodes. */ protected Color textSelectionColor; /** Color to use for the foreground for non-selected nodes. */ protected Color textNonSelectionColor; /** Color to use for the background when a node is selected. */ protected Color backgroundSelectionColor; /** Color to use for the background when the node isn't selected. */ protected Color backgroundNonSelectionColor; /** Color to use for the background when the node isn't selected. */ protected Color borderSelectionColor; protected Font textSelectionFont; protected Font textNonSelectionFont; static { IconRetriever ir = new IconRetriever(); rootIcon = ir.getIcon(MainContext.iconPath + "default.gif"); headerIcon = ir.getIcon(MainContext.iconPath + "header.gif"); textUnSignIcon= ir.getIcon(MainContext.iconPath + "text_unsign.gif"); textSignIcon= ir.getIcon(MainContext.iconPath + "text_sign.gif"); codeSignIcon= ir.getIcon(MainContext.iconPath + "code_sign.gif"); codeUnSignIcon= ir.getIcon(MainContext.iconPath + "code_unsign.gif"); numSignIcon= ir.getIcon(MainContext.iconPath + "num_sign.gif"); numUnSignIcon= ir.getIcon(MainContext.iconPath + "num_unsign.gif"); dateTimeSignIcon= ir.getIcon(MainContext.iconPath + "datetime_sign.gif"); dateTimeUnSignIcon= ir.getIcon(MainContext.iconPath + "datetime_unsign.gif"); dateSignIcon= ir.getIcon(MainContext.iconPath + "date_sign.gif"); dateUnSignIcon= ir.getIcon(MainContext.iconPath + "date_unsign.gif"); timeSignIcon= ir.getIcon(MainContext.iconPath + "time_sign.gif"); timeUnSignIcon= ir.getIcon(MainContext.iconPath + "time_unsign.gif"); pnSignIcon= ir.getIcon(MainContext.iconPath + "pname_sign.gif"); pnUnSignIcon= ir.getIcon(MainContext.iconPath + "pname_unsign.gif"); scSignIcon= ir.getIcon(MainContext.iconPath + "scoord_sign.gif"); scUnSignIcon= ir.getIcon(MainContext.iconPath + "scoord_unsign.gif"); tcSignIcon= ir.getIcon(MainContext.iconPath + "tcoord_sign.gif"); tcUnSignIcon= ir.getIcon(MainContext.iconPath + "tcoord_unsign.gif"); compositeSignIcon= ir.getIcon(MainContext.iconPath + "composite_sign.gif"); compositeUnSignIcon= ir.getIcon(MainContext.iconPath + "composite_unsign.gif"); imageSignIcon= ir.getIcon(MainContext.iconPath + "image_sign.gif"); imageUnSignIcon= ir.getIcon(MainContext.iconPath + "image_unsign.gif"); waveformSignIcon= ir.getIcon(MainContext.iconPath + "waveform_sign.gif"); waveformUnSignIcon= ir.getIcon(MainContext.iconPath + "waveform_unsign.gif"); containerSignIcon= ir.getIcon(MainContext.iconPath + "container_sign.gif"); containerUnSignIcon= ir.getIcon(MainContext.iconPath + "container_unsign.gif"); uidRefSignIcon= ir.getIcon(MainContext.iconPath + "uid_sign.gif"); uidRefUnSignIcon= ir.getIcon(MainContext.iconPath + "uid_unsign.gif"); refSignIcon= ir.getIcon(MainContext.iconPath + "ref_sign.gif"); refUnSignIcon= ir.getIcon(MainContext.iconPath + "ref_unsign.gif"); } public SREditTreeCellRenderer() { Font f=(new JLabel()).getFont(); if (MainContext.instance().highQualitySystem) { textSelectionFont=new Font(f.getName(), f.getStyle() | Font.ITALIC, f.getSize()); textNonSelectionFont=new Font(f.getName(), f.getStyle(), f.getSize()); /* pSIcon = ir.getIcon (MainContext.iconPath + "bigps.gif"); srIcon = ir.getIcon (MainContext.iconPath + "sr32.gif"); //new ImageIcon (MainContext.iconPath + "bigps.gif"); instanceIcon = ir.getIcon (MainContext.iconPath + "biginstance.gif"); seriesIcon = ir.getIcon (MainContext.iconPath + "bigseries.gif"); studyIcon = ir.getIcon (MainContext.iconPath + "bigstudy.gif"); defaultIcon = ir.getIcon (MainContext.iconPath + "bigdefault.gif"); newIcon = ir.getIcon (MainContext.iconPath + "bignew.gif"); hcIcon = ir.getIcon (MainContext.iconPath + "hc32.gif"); spIcon = ir.getIcon (MainContext.iconPath + "sp32.gif"); containsNewIcon = ir.getIcon (MainContext.iconPath + "containsNew32.gif"); */ } else { textSelectionFont=new Font(f.getName(),f.getStyle()|Font.ITALIC,f.getSize()); textNonSelectionFont=f; } setTextSelectionColor(UIManager.getColor("Tree.textSelectionColor")); setTextNonSelectionColor(UIManager.getColor("Tree.textNonSelectionColor")); setBackgroundSelectionColor(UIManager.getColor("Tree.selectionBackground")); setBackgroundNonSelectionColor(UIManager.getColor("Tree.backgroundNonSelectionColor")); setBorderSelectionColor(UIManager.getColor("Tree.borderSelectionColor")); } /** * Sets the color the text is drawn with when the node is selected. */ public void setTextSelectionColor(Color newColor) { textSelectionColor = newColor; } /** * Returns the color the text is drawn with when the node is selected. */ public Color getTextSelectionColor() { return textSelectionColor; } /** * Sets the color the text is drawn with when the node isn't selected. */ public void setTextNonSelectionColor(Color newColor) { textNonSelectionColor = newColor; } /** * Returns the color the text is drawn with when the node isn't selected. */ public Color getTextNonSelectionColor() { return textNonSelectionColor; } /** * Sets the color to use for the background if node is selected. */ public void setBackgroundSelectionColor(Color newColor) { backgroundSelectionColor = newColor; } /** * Returns the color to use for the background if node is selected. */ public Color getBackgroundSelectionColor() { return backgroundSelectionColor; } /** * Sets the background color to be used for non selected nodes. */ public void setBackgroundNonSelectionColor(Color newColor) { backgroundNonSelectionColor = newColor; } /** * Returns the background color to be used for non selected nodes. */ public Color getBackgroundNonSelectionColor() { return backgroundNonSelectionColor; } /** * Sets the color to use for the border. */ public void setBorderSelectionColor(Color newColor) { borderSelectionColor = newColor; } /** * Returns the color the border is drawn. */ public Color getBorderSelectionColor() { return borderSelectionColor; } /** * Renders the Component. */ public Component getTreeCellRendererComponent(JTree tree, Object value, boolean selected, boolean expanded, boolean leaf, int row, boolean hasFocus) { DefaultMutableTreeNode node=(DefaultMutableTreeNode)value; Object userObject=node.getUserObject(); SRTreeElement te = (SRTreeElement) userObject; JLabel label = new JLabel(); label.setOpaque(true); if(selected) { label.setForeground(getTextSelectionColor()); label.setBackground(getBackgroundSelectionColor()); label.setFont(textSelectionFont); } else { label.setForeground(getTextNonSelectionColor()); label.setBackground(getBackgroundNonSelectionColor()); label.setFont(textNonSelectionFont); } label.setToolTipText(te.getToolTipText()); label.setText(te.getText()); int signedStatus = te.getSignStatus(); if (row ==0)label.setIcon(rootIcon); else if (row ==1)label.setIcon(headerIcon); else { switch(te.getSRType()) { case jDSRE_ValueType.VT_invalid: break; case jDSRE_ValueType.VT_Text: if (signedStatus == 1)label.setIcon(textSignIcon); if (signedStatus == 0)label.setIcon(textUnSignIcon); break; case jDSRE_ValueType.VT_Code: if (signedStatus == 1)label.setIcon(codeSignIcon); if (signedStatus == 0)label.setIcon(codeUnSignIcon); break; case jDSRE_ValueType.VT_Num: if (signedStatus == 1)label.setIcon(numSignIcon); if (signedStatus == 0)label.setIcon(numUnSignIcon); break; case jDSRE_ValueType.VT_DateTime: if (signedStatus == 1)label.setIcon(dateTimeSignIcon); if (signedStatus == 0)label.setIcon(dateTimeUnSignIcon); break; case jDSRE_ValueType.VT_Date: if (signedStatus == 1)label.setIcon(dateSignIcon); if (signedStatus == 0)label.setIcon(dateUnSignIcon); break; case jDSRE_ValueType.VT_Time: if (signedStatus == 1)label.setIcon(timeSignIcon); if (signedStatus == 0)label.setIcon(timeUnSignIcon); break; case jDSRE_ValueType.VT_PName: if (signedStatus == 1)label.setIcon(pnSignIcon); if (signedStatus == 0)label.setIcon(pnUnSignIcon); break; case jDSRE_ValueType.VT_SCoord: if (signedStatus == 1)label.setIcon(scSignIcon); if (signedStatus == 0)label.setIcon(scUnSignIcon); break; case jDSRE_ValueType.VT_TCoord: if (signedStatus == 1)label.setIcon(tcSignIcon); if (signedStatus == 0)label.setIcon(tcUnSignIcon); break; case jDSRE_ValueType.VT_Composite: if (signedStatus == 1)label.setIcon(compositeSignIcon); if (signedStatus == 0)label.setIcon(compositeUnSignIcon); break; case jDSRE_ValueType.VT_Image: if (signedStatus == 1)label.setIcon(imageSignIcon); if (signedStatus == 0)label.setIcon(imageUnSignIcon); break; case jDSRE_ValueType.VT_Waveform: if (signedStatus == 1)label.setIcon(waveformSignIcon); if (signedStatus == 0)label.setIcon(waveformUnSignIcon); break; case jDSRE_ValueType.VT_Container: if (signedStatus == 1)label.setIcon(containerSignIcon); if (signedStatus == 0)label.setIcon(containerUnSignIcon); break; case jDSRE_ValueType.VT_UIDRef: if (signedStatus == 1)label.setIcon(uidRefSignIcon); if (signedStatus == 0)label.setIcon(uidRefUnSignIcon); break; case jDSRE_ValueType.VT_byReference: if (signedStatus == 1)label.setIcon(refSignIcon); if (signedStatus == 0)label.setIcon(refUnSignIcon); break; } } Dimension di=label.getMinimumSize(); di.width+=16; di.height+=1; label.setPreferredSize(di); return label; } } /* * CVS Log * $Log: SREditTreeCellRenderer.java,v $ * Revision 1.1.1.1 2001/06/06 10:32:30 kleber * Init commit for DICOMscope 3.5 * Create new CVS * */ dicomscope-3.6.0/tkgui/viewer/sr/SREditTreePanel.java0000644000265600020320000004433411262371101021640 0ustar tilleaadmin/* * * Copyright (C) 1999, Institute for MicroTherapy * * This software and supporting documentation were developed by * * University of Witten/Herdecke * Department of Radiology and MicroTherapy * Institute for MicroTherapy * Medical computer science * * Universitaetsstrasse 142 * 44799 Bochum, Germany * * http://www.microtherapy.de/go/cs * mailto:computer.science@microtherapy.de * * THIS SOFTWARE IS MADE AVAILABLE, AS IS, AND THE INSTITUTE MAKES NO * WARRANTY REGARDING THE SOFTWARE, ITS PERFORMANCE, ITS MERCHANTABILITY * OR FITNESS FOR ANY PARTICULAR USE, FREEDOM FROM ANY COMPUTER DISEASES * OR ITS CONFORMITY TO ANY SPECIFICATION. THE ENTIRE RISK AS TO QUALITY * AND PERFORMANCE OF THE SOFTWARE IS WITH THE USER. * * Author : $Author: kleber $ * Last update : $Date: 2001/06/06 10:32:30 $ * Revision : $Revision: 1.1.1.1 $ * State: $State: Exp $ */ package viewer.sr; import java.util.*; import java.net.*; import java.awt.*; import java.awt.event.*; import javax.swing.*; import javax.swing.border.*; import javax.swing.event.*; import javax.swing.text.*; import javax.swing.text.html.*; import javax.swing.tree.*; import main.*; import J2Ci.*; /** * This class contains the GUI vizualizing a Dicom Structured Report * as an HTML document. * * @author Klaus Kleber * @since 20.08.1999 */ public class SREditTreePanel extends JPanel { /** * The main tree containing all data */ private JTree tree; /** * Tilted Boder containing the name of the SR Object */ private TitledBorder titledBorder = new TitledBorder("Structured Report"); /** * Current DVI Interface */ private jDVInterface dvi; SRTreeModel srTreeModel; /** * Constructor * * @param dvi jDVInterface */ public SREditTreePanel( jDVInterface dvi, String name , TreeSelectionListener srTreeSelectionListener ) { this.dvi = dvi; setLayout(new BorderLayout()); srTreeModel= new SRTreeModel(new DefaultMutableTreeNode(new SRTreeElement(name,name))); tree = new JTree (srTreeModel); tree.setRootVisible(true); tree.setCellRenderer(new SREditTreeCellRenderer()); tree.setShowsRootHandles(true); tree.getSelectionModel().setSelectionMode (TreeSelectionModel.SINGLE_TREE_SELECTION); tree.putClientProperty("JTree.lineStyle", "Angled"); // Linien zwischen Knoten tree.addTreeSelectionListener(srTreeSelectionListener); //Init MouseListener MouseListener ml = new MouseAdapter() // load Image on double-click! { public void mouseClicked(MouseEvent e) { int selRow = tree.getRowForLocation(e.getX(), e.getY()); if(selRow != -1&&selRow >1) { TreePath selPath = tree.getPathForLocation(e.getX(), e.getY()); int nodeId = ((SRTreeElement) ((DefaultMutableTreeNode)selPath.getLastPathComponent()).getUserObject()).srNodeId; if(SwingUtilities.isRightMouseButton(e)) tree.setSelectionRow(selRow); if(SwingUtilities.isRightMouseButton(e)) displayMenu( selPath,selRow, e.getX(), e.getY(),nodeId); } } }; tree.addMouseListener(ml); add("Center", new JScrollPane(tree)); tree.expandRow (0); tree.setSelectionRow(1); } /** * */ public void displayMenu( TreePath selPath, int selRow, int x, int y, int nodeId) { JPopupMenu popup = new JPopupMenu(); if (selRow>2) popup.add(new DeleteAction()); createMenu( selPath,popup,nodeId); popup.addSeparator(); jDSRDocument sr = dvi.getCurrentReport(); jDSRDocumentTree documentTree = sr.getTree(); documentTree.gotoNode(nodeId); if (documentTree.isCurrentItemMarked()) popup.add(new JMenuItem(new UnSignAction( selPath, nodeId))); else popup.add(new JMenuItem(new SignAction( selPath, nodeId))); popup.show(tree, x,y); } public void createMenu( TreePath selPath, JPopupMenu menu, int nodeId) { jDSRDocument sr = dvi.getCurrentReport(); jDSRDocumentTree documentTree = sr.getTree(); documentTree.gotoNode( nodeId); Hashtable modes = jDSRE_AddMode.names; for (Enumeration modeKeys = modes.keys() ; modeKeys.hasMoreElements() ;) { int mode = ((Integer)modeKeys.nextElement()).intValue(); JMenu modeMenu = null; Hashtable relations = jDSRE_RelationshipType.names; for (Enumeration relationKeys = relations.keys() ; relationKeys.hasMoreElements() ;) { int relation = ((Integer)relationKeys.nextElement()).intValue(); Hashtable types = jDSRE_ValueType.vtNames; JMenu relationMenu = null; for (Enumeration typeKeys = types.keys() ; typeKeys.hasMoreElements() ;) { int type = ((Integer)typeKeys.nextElement()).intValue(); if (documentTree.canAddContentItem(relation,type,mode)) { if (modeMenu == null) { modeMenu = new JMenu(jDSRE_AddMode.getName(mode)); menu.add(modeMenu); } if (relationMenu == null) { relationMenu = new JMenu(jDSRE_RelationshipType.getName(relation)); modeMenu.add(relationMenu); } relationMenu.add(new JMenuItem(new InsertAction(selPath, relation, type, mode))) ; } } } } } /** * Deletes the seleected row in the tree and in the * and the jDSRDocumentTree. The first two rows * in the tree are not deletable. *

* After deletion the row above the deletet row * will be selected. * @param srTree jDSRDocumentTree */ public void deleteSelectedElement( jDSRDocumentTree srTree) { int row = tree.getMaxSelectionRow(); if(row>=2) { DefaultMutableTreeNode node = (DefaultMutableTreeNode)tree.getSelectionPath().getLastPathComponent(); srTreeModel.removeNodeFromParent(node); SRTreeElement srTreeElement =(SRTreeElement)node.getUserObject(); srTree.gotoNode(srTreeElement.srNodeId); srTree.removeCurrentContentItem(); int[] nextSelection = new int[1]; nextSelection[0] = row-1; tree.setSelectionRows(nextSelection); } } public class SRTreeModel extends DefaultTreeModel { public SRTreeModel(DefaultMutableTreeNode root) { super(root); jDSRDocument sr = dvi.getCurrentReport(); DefaultMutableTreeNode srDocument =new DefaultMutableTreeNode( new SRTreeElement("Header","Header")); root.add(srDocument); jDSRDocumentTree srTree = sr.getTree(); int status; status = srTree.gotoRootNode(); if (status == 0) { System.err.println("Empty sr tree."); return; } int valueType =srTree.getCurrentValueType(); String valueTypeName = valueTypeName= jDSRE_ValueType.getVTName(srTree.getCurrentValueType()); //System.err.println("Value type : " + valueType+ ", Name: " + valueTypeName); int signStatus = 0; if (srTree.isCurrentItemMarked()) signStatus = 1; DefaultMutableTreeNode srRoot =new DefaultMutableTreeNode( new SRTreeElement( valueTypeName, srTree.getCurrentNodeID(), valueType, signStatus)); root.add(srRoot); createDefaultMutableTreeNodeFromSRTree(srRoot, srTree); } } /** * Creates and returns a DefaultMutableTreeNode from the current node in the * specified jDSRDocumentTree. Returns NULL if the node in the jDSRDocumentTree * in invalid. * @param srTree The jDSRDocumentTree which refers to a node. * @return DefaultMutableTreeNode from the current node in the * specified jDSRDocumentTree. Returns NULL if the node in the jDSRDocumentTree * in invalid. */ public DefaultMutableTreeNode createNode( jDSRDocumentTree srTree) { int valueType= srTree.getCurrentValueType(); if (valueType == jDSRE_ValueType.VT_invalid) { System.err.println("Node " + srTree.getCurrentNodeID() + " is invaild"); return null; } String valueTypeName = valueTypeName= jDSRE_ValueType.getVTName(srTree.getCurrentValueType()); //System.err.println("Value type : " + valueType+ ", Name: " + valueTypeName); int signStatus = 0; if (srTree.isCurrentItemMarked()) signStatus = 1; return new DefaultMutableTreeNode( new SRTreeElement( valueTypeName, srTree.getCurrentNodeID(), jDSRE_RelationshipType.getTreeName( srTree.getCurrentRelationshipType()), valueType,signStatus) ); } /** * Creates the DefaultMutableTreeNode of all childs of the current node in the * specified jDSRDocumentTree and a appends them in the specified root. * @param root The root in which all created DefaultMutableTreeNode will be inserted. * @param srTree The jDSRDocumentTree which refers to a node. */ public void createDefaultMutableTreeNodeFromSRTree(DefaultMutableTreeNode root, jDSRDocumentTree srTree ) { //Gets the node of the first child int nodeId= srTree.gotoFirstChildNode(); if ( nodeId == 0) return; DefaultMutableTreeNode currentRootNode =createNode(srTree); if (currentRootNode != null) { root.add(currentRootNode); createDefaultMutableTreeNodeFromSRTree(currentRootNode, srTree); } srTree.gotoNode(nodeId); nodeId =srTree.gotoNextNode(); while (nodeId != 0) { // System.err.println("nextNodeId: " + nodeId); currentRootNode =createNode(srTree); if (currentRootNode != null) { root.add(currentRootNode); createDefaultMutableTreeNodeFromSRTree(currentRootNode, srTree); } srTree.gotoNode(nodeId); nodeId= srTree.gotoNextNode(); } //System.err.println("nodeId: " + nodeId); } public void gotoSRNode(int nodeId) { DefaultMutableTreeNode root = (DefaultMutableTreeNode)srTreeModel.getRoot(); if (((SRTreeElement)root.getUserObject()).srNodeId == nodeId) { TreePath path = new TreePath(root); tree.setSelectionPath(path); tree.expandPath(path); tree.scrollPathToVisible(path); } else { for (Enumeration bf = root.breadthFirstEnumeration() ; bf.hasMoreElements() ;) { DefaultMutableTreeNode node = (DefaultMutableTreeNode)bf.nextElement(); if (((SRTreeElement)node.getUserObject()).srNodeId == nodeId) { TreePath path = new TreePath(node.getPath()); tree.expandPath(path); tree.scrollPathToVisible(path); tree.setSelectionPath(path); return; } } } } /** * CloseAction */ public class DeleteAction extends AbstractAction { public DeleteAction() { super("Delete"); } public void actionPerformed(ActionEvent e) { jDSRDocument sr = dvi.getCurrentReport(); jDSRDocumentTree documentTree = sr.getTree(); deleteSelectedElement(documentTree); } } /** * CloseAction */ public class SignAction extends AbstractAction { TreePath selTree; int nodeId; public SignAction(TreePath selTree, int nodeId) { super("Sign"); this.nodeId= nodeId; this.selTree = selTree; } public void actionPerformed(ActionEvent e) { jDSRDocument sr = dvi.getCurrentReport(); jDSRDocumentTree documentTree = sr.getTree(); documentTree.gotoNode(nodeId); documentTree.setCurrentItemMark(true); DefaultMutableTreeNode selectedNode = (DefaultMutableTreeNode)selTree.getLastPathComponent(); SRTreeElement treeElement =(SRTreeElement) selectedNode.getUserObject(); treeElement.setSignStatus(1); tree.repaint(); } } /** * CloseAction */ public class UnSignAction extends AbstractAction { TreePath selTree; int nodeId; public UnSignAction(TreePath selTree, int nodeId) { super("UnSign"); this.nodeId= nodeId; this.selTree = selTree; } public void actionPerformed(ActionEvent e) { jDSRDocument sr = dvi.getCurrentReport(); jDSRDocumentTree documentTree = sr.getTree(); documentTree.gotoNode(nodeId); documentTree.setCurrentItemMark(false); DefaultMutableTreeNode selectedNode = (DefaultMutableTreeNode)selTree.getLastPathComponent(); SRTreeElement treeElement =(SRTreeElement) selectedNode.getUserObject(); treeElement.setSignStatus(0); tree.repaint(); } } /** * CloseAction */ public class InsertAction extends AbstractAction { int relation; int valueType; int mode; TreePath selPath; public InsertAction(TreePath selPath, int relation, int valueType, int mode) { super(jDSRE_ValueType.getVTName(valueType)); this.mode = mode; this.relation = relation; this.valueType= valueType; this.selPath = selPath; } public void actionPerformed(ActionEvent e) { jDSRDocument sr = dvi.getCurrentReport(); jDSRDocumentTree documentTree = sr.getTree(); int nodeId = documentTree.addContentItem(relation, valueType, mode); if (nodeId >=1) { int signStatus = 0; if (documentTree.isCurrentItemMarked()) signStatus = 1; SRTreeElement te = new SRTreeElement(jDSRE_ValueType.getVTName(valueType), nodeId, jDSRE_RelationshipType.getTreeName( relation), valueType, signStatus); DefaultMutableTreeNode node = new DefaultMutableTreeNode (te); DefaultMutableTreeNode selectedNode = (DefaultMutableTreeNode)selPath.getLastPathComponent(); if (mode == jDSRE_AddMode.AM_afterCurrent) { srTreeModel.insertNodeInto( node,(DefaultMutableTreeNode)selectedNode.getParent(),selectedNode.getParent().getIndex(selectedNode)+1); //tree.setSelectionRow(tree.getMaxSelectionRow()+1); } else if (mode == jDSRE_AddMode.AM_beforeCurrent) { srTreeModel.insertNodeInto( node,(DefaultMutableTreeNode)selectedNode.getParent(),selectedNode.getParent().getIndex(selectedNode)); //tree.setSelectionRow(tree.getMaxSelectionRow()-1); } else if (mode == jDSRE_AddMode.AM_belowCurrent) { srTreeModel.insertNodeInto( node,selectedNode,0); //tree.expandRow(tree.getMaxSelectionRow()); //tree.setSelectionRow(tree.getMaxSelectionRow()+1); } gotoSRNode(nodeId); } //tree.repaint(); } } } /* * CVS Log * $Log: SREditTreePanel.java,v $ * Revision 1.1.1.1 2001/06/06 10:32:30 kleber * Init commit for DICOMscope 3.5 * Create new CVS * */ dicomscope-3.6.0/tkgui/viewer/sr/SRGeneralContentItemEditPanel.java0000644000265600020320000001520611262371101024464 0ustar tilleaadmin/* * * Copyright (C) 1999, Institute for MicroTherapy * * This software and supporting documentation were developed by * * University of Witten/Herdecke * Department of Radiology and MicroTherapy * Institute for MicroTherapy * Medical computer science * * Universitaetsstrasse 142 * 44799 Bochum, Germany * * http://www.microtherapy.de/go/cs * mailto:computer.science@microtherapy.de * * THIS SOFTWARE IS MADE AVAILABLE, AS IS, AND THE INSTITUTE MAKES NO * WARRANTY REGARDING THE SOFTWARE, ITS PERFORMANCE, ITS MERCHANTABILITY * OR FITNESS FOR ANY PARTICULAR USE, FREEDOM FROM ANY COMPUTER DISEASES * OR ITS CONFORMITY TO ANY SPECIFICATION. THE ENTIRE RISK AS TO QUALITY * AND PERFORMANCE OF THE SOFTWARE IS WITH THE USER. * * Author : $Author: kleber $ * Last update : $Date: 2001/06/06 10:32:30 $ * Revision : $Revision: 1.1.1.1 $ * State: $State: Exp $ */ package viewer.sr; import java.util.*; import java.net.*; import de.microtherapy.tools.text.document.dicom.*; import java.awt.*; import java.awt.event.*; import javax.swing.*; import javax.swing.border.*; import javax.swing.event.*; import javax.swing.text.*; import javax.swing.text.html.*; import javax.swing.tree.*; import main.*; import J2Ci.*; /** * This class contains an abstract class * for editing a Content Item in a SR. * Each Content Item contains of a Concept Name * and an optional ObservationDateTime. * This class is a JPanel with a BorderLayout. * In the north the GUI for visualising and changing the * Concept Name is placed. In the south the * field for the Observation Date Time is placed *

* In the constructor the JPanel is build. Each extending class * have to implement the {@link initContentItemGUI} method. This method is used * for placing the returned component in the center of this panel. * * @author Klaus Kleber * @since 20.08.1999 */ public abstract class SRGeneralContentItemEditPanel extends JPanel { /** * Enable/disable the Listener */ protected boolean isListenerEnabled = false; /** * Contains the documentTree. */ protected jDSRDocumentTree documentTree; SRCodeChangePanel srConceptNamePanel; /** * Contains the Observation Date Time */ private JLabel observationDateTimeLabel= new JLabel(); /** * The node id oft the Content Item. This * value will be used for changing the value in node of the * jDSRDocumentTree */ protected int nodeId; /** * The identification of the Content Item type. */ protected int type; /** * The name of the context group */ private String contextGroupName; /** * Constructor. Be aware that initContentItemGUI() * will be called for placing the returned JComponent * in the center of this panel * @param documentTree jDSRDocumentTree * @param nodeId Contains id of the node * @param type The identification of the Content Item type. * @param contextGroupName The name of the context group */ public SRGeneralContentItemEditPanel( jDSRDocumentTree documentTree, int nodeId, int type, String contextGroupName) { this.documentTree = documentTree; this.nodeId = nodeId; this.type = type; this.contextGroupName = contextGroupName; srConceptNamePanel = new SRCodeChangePanel(documentTree, nodeId, type, contextGroupName, SRCodeChangePanel.CONCEPT_NAME); //Sets the type name of the Content Item setBorder(new TitledBorder(jDSRE_ValueType.getVTName(type))); setLayout(new BorderLayout(5,5)); add(srConceptNamePanel, BorderLayout.NORTH); JPanel mainPanel = new JPanel(new BorderLayout()); mainPanel.setBorder(new TitledBorder("Value")); mainPanel.add(initContentItemGUI()); add(mainPanel, BorderLayout.CENTER); add(getObservationDateTimePanel(), BorderLayout.SOUTH); update(); } /** * Returns the node id oft the Content Item. This * value will be used for changing the value in node of the * jDSRDocumentTree * @return Returns the node id of the Content Item. */ public int getNodeId() { return nodeId; } /** * Return The identification of the Content Item type. * @return The identification of the Content Item type. */ public int getType() { return type; } /** * Return the name of the Context Group. * @Return the name of the Context Group. */ public String getContextGroupName() { return contextGroupName; } /** * Sets the name of the Context Group. * @param the name of the Context Group. */ public void setContextGroupName(String contextGroupName) { this.contextGroupName = contextGroupName; srConceptNamePanel.setContextGroupName(contextGroupName); } /** * Initialise and returns a Component containting a GUI for editing the * value of a Content Item. Each Content Type has to * build his own GUI. * @return Component containting a GUI for editing the * value of a Content Item. */ public abstract JComponent initContentItemGUI(); /** * Updates the codeValueBox and the observationLabelthe srEditComponent with * values from the node *

* For updating the srEditComponet the update() * method of this object will be called */ private void update() { //diable the listeners isListenerEnabled = false; srConceptNamePanel.updateCode(); String observationDateTime = documentTree.getCurrentObservationDateTime(); if (observationDateTimeLabel != null) observationDateTimeLabel.setText(observationDateTime); isListenerEnabled= true; } /*** * Creates and returns the GUI for the observation date and time * @return the GUI for the observation date and time */ private JPanel getObservationDateTimePanel() { JPanel p = new JPanel(new FlowLayout(FlowLayout.LEFT)); p.add(new JLabel("Observation Date Time: ")); p.add(observationDateTimeLabel); return p; } } /* * CVS Log * $Log: SRGeneralContentItemEditPanel.java,v $ * Revision 1.1.1.1 2001/06/06 10:32:30 kleber * Init commit for DICOMscope 3.5 * Create new CVS * */ dicomscope-3.6.0/tkgui/viewer/sr/SRImageContentItemEditPanel.java0000644000265600020320000002635511262371102024141 0ustar tilleaadmin/* * * Copyright (C) 1999, Institute for MicroTherapy * * This software and supporting documentation were developed by * * University of Witten/Herdecke * Department of Radiology and MicroTherapy * Institute for MicroTherapy * Medical computer science * * Universitaetsstrasse 142 * 44799 Bochum, Germany * * http://www.microtherapy.de/go/cs * mailto:computer.science@microtherapy.de * * THIS SOFTWARE IS MADE AVAILABLE, AS IS, AND THE INSTITUTE MAKES NO * WARRANTY REGARDING THE SOFTWARE, ITS PERFORMANCE, ITS MERCHANTABILITY * OR FITNESS FOR ANY PARTICULAR USE, FREEDOM FROM ANY COMPUTER DISEASES * OR ITS CONFORMITY TO ANY SPECIFICATION. THE ENTIRE RISK AS TO QUALITY * AND PERFORMANCE OF THE SOFTWARE IS WITH THE USER. * * Author : $Author: kleber $ * Last update : $Date: 2001/06/06 10:32:30 $ * Revision : $Revision: 1.1.1.1 $ * State: $State: Exp $ */ package viewer.sr; import java.awt.*; import java.awt.event.*; import de.microtherapy.tools.text.document.dicom.*; import javax.swing.*; import javax.swing.event.*; import javax.swing.text.*; import javax.swing.text.html.*; import javax.swing.border.*; import main.*; import J2Ci.*; /** * This class contains a class * for editing an Image Content Item in a SR. * @see SRGeneralContentItemEditPanel * @author Klaus Kleber * @since 20.08.1999 */ public class SRImageContentItemEditPanel extends SRGeneralContentItemEditPanel { /** * Content */ /** * Current DVI Interface */ private jDVInterface dvi; JTextField imageSOPClassUid; JTextField imageSOPInstanceUid; JTextField psSOPClassUid; JTextField psSOPInstanceUid; JPanel buttonPanel; JButton showButton ; JButton applyImage; JButton applyPs ; public SRImageContentItemEditPanel(jDSRDocumentTree documentTree,int nodeId,jDVInterface dvi) { super(documentTree,nodeId,jDSRE_ValueType.VT_Image,SRCode.CONTEXT_GROUP_NAME_IMAGE_REFERENCE); this.dvi = dvi; updateContentItem(); } /** * Updates the value from the jDSRDocumentTree. */ private void updateContentItem() { isListenerEnabled= false; documentTree.gotoNode(getNodeId()); jDSRImageValue imageRef = documentTree.getCurrentImageValue(); buttonPanel.removeAll(); if (imageRef != null) { imageSOPClassUid.setText(imageRef.getImageSOPClassName()); imageSOPInstanceUid.setText(imageRef.getImageSOPInstanceUID()); psSOPClassUid.setText(imageRef.getPStateSOPClassUID()); psSOPInstanceUid.setText(imageRef.getPStateSOPInstanceUID()); buttonPanel.add(showButton); } buttonPanel.add(applyImage); buttonPanel.add(applyPs); isListenerEnabled= true; } /** * Changes the value in the jDSRDocumentTree */ private void changeContentItem() { isListenerEnabled= false; documentTree.gotoNode(getNodeId()); isListenerEnabled= true; } /** * Initialise and returns a JComponent containting a GUI for editing the * value of the Content Item. * @return JScrollbar with JTextArea containing the * value of the Content Item. */ public JComponent initContentItemGUI() { imageSOPClassUid= new JTextField(); imageSOPInstanceUid= new JTextField(); psSOPClassUid= new JTextField(); psSOPInstanceUid= new JTextField(); imageSOPClassUid.setEditable(false); imageSOPInstanceUid.setEditable(false); psSOPClassUid.setEditable(false); psSOPInstanceUid.setEditable(false); JPanel p = new JPanel(new BorderLayout()); p.setBackground(Color.lightGray); JPanel textPanel = new JPanel(new BorderLayout(10,10)); textPanel.setBorder(new EtchedBorder()); textPanel.add(new JLabel(" "), BorderLayout.NORTH); textPanel.add(new JLabel(" "), BorderLayout.SOUTH); JPanel centerPanel = new JPanel (new GridBagLayout()); GridBagConstraints gbc = new GridBagConstraints(); //Description Label //Pateint Name gbc.anchor = GridBagConstraints.WEST; gbc.fill = GridBagConstraints.NONE; gbc.gridwidth = 1; gbc.weightx = 0; gbc.insets = new Insets(0,0,0,0); centerPanel.add(new JLabel("Image SOP Class Name: " ), gbc); centerPanel.add(Box.createHorizontalStrut(5)); gbc.fill = GridBagConstraints.HORIZONTAL; gbc.gridwidth = GridBagConstraints.REMAINDER; gbc.weightx = 1; centerPanel.add(imageSOPClassUid, gbc); gbc.fill = GridBagConstraints.NONE; gbc.gridwidth = 1; gbc.weightx = 0; centerPanel.add(new JLabel("Image SOP Instance UID: " ), gbc); centerPanel.add(Box.createHorizontalStrut(5)); gbc.fill = GridBagConstraints.HORIZONTAL; gbc.gridwidth = GridBagConstraints.REMAINDER; gbc.weightx = 1; centerPanel.add(imageSOPInstanceUid, gbc); gbc.fill = GridBagConstraints.NONE; gbc.gridwidth = 1; gbc.weightx = 0; centerPanel.add(new JLabel("PS SOP Instance UID: " ), gbc); centerPanel.add(Box.createHorizontalStrut(5)); gbc.fill = GridBagConstraints.HORIZONTAL; gbc.gridwidth = GridBagConstraints.REMAINDER; gbc.weightx = 1; centerPanel.add(psSOPInstanceUid, gbc); gbc.fill = GridBagConstraints.NONE; gbc.gridwidth = 1; gbc.weightx = 0; showButton = new JButton(new ShowAction()); applyImage = new JButton(new ApplyImageAction()); applyPs = new JButton(new ApplyPSAction()); buttonPanel = new JPanel(); textPanel.add(centerPanel,BorderLayout.CENTER); p.add(textPanel, BorderLayout.NORTH); p.add(buttonPanel, BorderLayout.SOUTH); return p; } public class ShowAction extends AbstractAction { public ShowAction() { super("Show"); putValue(AbstractAction.SHORT_DESCRIPTION, "Show"); } public void actionPerformed(ActionEvent e) { documentTree.gotoNode(getNodeId()); jDSRImageValue imageRef = documentTree.getCurrentImageValue(); if (imageRef != null) { int frames[] = new int[imageRef.getNumberOfFrames()]; for (int i = 0; i < frames.length; i++) { jIntByRef value = new jIntByRef(); imageRef.getFrame(i, value); frames[i] = value.value; } if (psSOPInstanceUid.getText() == null||psSOPInstanceUid.getText().trim().equals("")) { Controller.instance().fireEvent(new DbActionEvent( this, DbActionEvent.LOAD_IMAGE_FOR_SR, imageRef.getImageSOPClassUID(), imageRef.getImageSOPInstanceUID(), frames)); } else { Controller.instance().fireEvent(new DbActionEvent( this, DbActionEvent.LOAD_IMAGE_FOR_SR, imageRef.getImageSOPClassUID(), imageRef.getImageSOPInstanceUID(), imageRef.getPStateSOPClassUID(), imageRef.getPStateSOPInstanceUID(),frames)); } } } } public class ApplyImageAction extends AbstractAction { public ApplyImageAction() { super("Set Image"); putValue(AbstractAction.SHORT_DESCRIPTION, "Set Reference to current Image"); } public void actionPerformed(ActionEvent e) { jDVPresentationState ps = dvi.getCurrentPState(); if (ps != null) { String instanceSOP = ps.getAttachedImageSOPInstanceUID(); String imageSOP = ps.getAttachedImageSOPClassUID(); if (instanceSOP != null &&imageSOP != null) { documentTree.gotoNode(getNodeId()); jDSRImageValue imageRef = documentTree.getCurrentImageValue(); imageRef.clearFrameList(); imageRef.setPStateReference(null, null); imageRef.setImageReference(imageSOP, instanceSOP); updateContentItem(); } else JOptionPane.showMessageDialog(null,"Please load Image"); } else JOptionPane.showMessageDialog(null,"Please load Image"); } } public class ApplyPSAction extends AbstractAction { public ApplyPSAction() { super("Set PState"); putValue(AbstractAction.SHORT_DESCRIPTION, "Set Reference to current Presentation State"); } public void actionPerformed(ActionEvent e) { jDVPresentationState ps = dvi.getCurrentPState(); if (ps != null) { String instanceSOP = ps.getAttachedImageSOPInstanceUID(); String imageSOP = ps.getAttachedImageSOPClassUID(); String instancePSSOP = ps.getInstanceUID(); String psSOP = ps.getSOPClassUID(); if (instanceSOP != null &&imageSOP != null && instancePSSOP!= null &&psSOP != null) { Controller.instance().fireEvent(new DbActionEvent(this,DbActionEvent.SAVE_DB,false)); documentTree.gotoNode(getNodeId()); jDSRImageValue imageRef = documentTree.getCurrentImageValue(); ps = dvi.getCurrentPState(); instancePSSOP = ps.getInstanceUID(); psSOP = ps.getSOPClassUID(); imageRef.clearFrameList(); imageRef.setImageReference(imageSOP, instanceSOP); imageRef.setPStateReference(psSOP, instancePSSOP); updateContentItem(); } else JOptionPane.showMessageDialog(null,"Please load Presentation State"); } else JOptionPane.showMessageDialog(null,"Please load Presentation State"); } } } /* * CVS Log * $Log: SRImageContentItemEditPanel.java,v $ * Revision 1.1.1.1 2001/06/06 10:32:30 kleber * Init commit for DICOMscope 3.5 * Create new CVS * */ dicomscope-3.6.0/tkgui/viewer/sr/SRNumericValueContentItemEditPanel.java0000644000265600020320000001302211262371102025501 0ustar tilleaadmin/* * * Copyright (C) 1999, Institute for MicroTherapy * * This software and supporting documentation were developed by * * University of Witten/Herdecke * Department of Radiology and MicroTherapy * Institute for MicroTherapy * Medical computer science * * Universitaetsstrasse 142 * 44799 Bochum, Germany * * http://www.microtherapy.de/go/cs * mailto:computer.science@microtherapy.de * * THIS SOFTWARE IS MADE AVAILABLE, AS IS, AND THE INSTITUTE MAKES NO * WARRANTY REGARDING THE SOFTWARE, ITS PERFORMANCE, ITS MERCHANTABILITY * OR FITNESS FOR ANY PARTICULAR USE, FREEDOM FROM ANY COMPUTER DISEASES * OR ITS CONFORMITY TO ANY SPECIFICATION. THE ENTIRE RISK AS TO QUALITY * AND PERFORMANCE OF THE SOFTWARE IS WITH THE USER. * * Author : $Author: kleber $ * Last update : $Date: 2001/06/06 10:32:30 $ * Revision : $Revision: 1.1.1.1 $ * State: $State: Exp $ */ package viewer.sr; import java.awt.*; import java.awt.event.*; import de.microtherapy.tools.text.document.dicom.*; import javax.swing.*; import javax.swing.event.*; import javax.swing.text.*; import javax.swing.text.html.*; import javax.swing.border.*; import main.*; import J2Ci.*; /** * This class contains a class * for editing Numeric Value Content Item in a SR. * @see SRGeneralContentItemEditPanel * @author Klaus Kleber * @since 20.08.1999 */ public class SRNumericValueContentItemEditPanel extends SRGeneralContentItemEditPanel { /** * Content */ JTextField numText; DSDocument dsDocument; SRCodeChangePanel srUnitCodeChangePanel; public SRNumericValueContentItemEditPanel(jDSRDocumentTree documentTree,int nodeId) { super(documentTree,nodeId,jDSRE_ValueType.VT_Num,SRCode.CONTEXT_GROUP_NAME_NUMERIC_MEASUREMENTS); updateContentItem(); } /** * Updates the value from the jDSRDocumentTree. */ private void updateContentItem() { isListenerEnabled= false; documentTree.gotoNode(getNodeId()); jDSRNumericValue v = documentTree.getCurrentNumValue(); numText.setText(v.getNumericValue()); isListenerEnabled= true; } /** * Changes the value in the jDSRDocumentTree */ private void changeContentItem() { isListenerEnabled= false; documentTree.gotoNode(getNodeId()); jDSRNumericValue v = documentTree.getCurrentNumValue(); v.setNumericValue(numText.getText()); isListenerEnabled= true; } /** * Initialise and returns a JComponent containting a GUI for editing the * value of the Content Item. * @return JScrollbar with JTextArea containing the * value of the Content Item. */ public JComponent initContentItemGUI() { srUnitCodeChangePanel = new SRCodeChangePanel(documentTree, nodeId, jDSRE_ValueType.VT_Num, SRCode.CONTEXT_GROUP_NAME_MEASUREMENT_UNIT, SRCodeChangePanel.NUMERIC_CODE); numText = new JTextField(); dsDocument = new DSDocument(); numText.setDocument(dsDocument); JPanel p = new JPanel(new BorderLayout()); p.setBackground(Color.lightGray); JPanel textPanel = new JPanel(new BorderLayout(10,10)); textPanel.setBorder(new EtchedBorder()); textPanel.add(new JLabel(" "), BorderLayout.NORTH); textPanel.add(new JLabel(" "), BorderLayout.SOUTH); JPanel centerPanel = new JPanel (new GridBagLayout()); GridBagConstraints gbc = new GridBagConstraints(); //Description Label //Pateint Name gbc.anchor = GridBagConstraints.WEST; gbc.fill = GridBagConstraints.NONE; gbc.gridwidth = 1; gbc.weightx = 0; gbc.insets = new Insets(0,0,0,0); centerPanel.add(new JLabel("Numeric Value: " ), gbc); centerPanel.add(Box.createHorizontalStrut(5)); gbc.fill = GridBagConstraints.HORIZONTAL; gbc.gridwidth = GridBagConstraints.REMAINDER; gbc.weightx = 1; centerPanel.add(numText, gbc); gbc.fill = GridBagConstraints.NONE; gbc.gridwidth = 1; gbc.weightx = 0; gbc.insets = new Insets(0,0,0,0); centerPanel.add(new JLabel("Measurement Unit: " ), gbc); centerPanel.add(Box.createHorizontalStrut(5)); gbc.fill = GridBagConstraints.HORIZONTAL; gbc.gridwidth = GridBagConstraints.REMAINDER; gbc.weightx = 1; centerPanel.add(srUnitCodeChangePanel, gbc); textPanel.add(centerPanel,BorderLayout.CENTER); p.add(textPanel, BorderLayout.NORTH); numText.addFocusListener(new FocusListener() { public void focusGained(FocusEvent e) {} public void focusLost(FocusEvent e) { changeContentItem(); } }); numText.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { changeContentItem(); } }); return p; } } /* * CVS Log * $Log: SRNumericValueContentItemEditPanel.java,v $ * Revision 1.1.1.1 2001/06/06 10:32:30 kleber * Init commit for DICOMscope 3.5 * Create new CVS * */ dicomscope-3.6.0/tkgui/viewer/sr/SRPNameContentItemEditPanel.java0000644000265600020320000001011711262371102024104 0ustar tilleaadmin/* * * Copyright (C) 1999, Institute for MicroTherapy * * This software and supporting documentation were developed by * * University of Witten/Herdecke * Department of Radiology and MicroTherapy * Institute for MicroTherapy * Medical computer science * * Universitaetsstrasse 142 * 44799 Bochum, Germany * * http://www.microtherapy.de/go/cs * mailto:computer.science@microtherapy.de * * THIS SOFTWARE IS MADE AVAILABLE, AS IS, AND THE INSTITUTE MAKES NO * WARRANTY REGARDING THE SOFTWARE, ITS PERFORMANCE, ITS MERCHANTABILITY * OR FITNESS FOR ANY PARTICULAR USE, FREEDOM FROM ANY COMPUTER DISEASES * OR ITS CONFORMITY TO ANY SPECIFICATION. THE ENTIRE RISK AS TO QUALITY * AND PERFORMANCE OF THE SOFTWARE IS WITH THE USER. * * Author : $Author: kleber $ * Last update : $Date: 2001/06/06 10:32:30 $ * Revision : $Revision: 1.1.1.1 $ * State: $State: Exp $ */ package viewer.sr; import java.awt.*; import java.awt.event.*; import de.microtherapy.tools.text.document.dicom.*; import javax.swing.*; import javax.swing.event.*; import javax.swing.text.*; import javax.swing.text.html.*; import javax.swing.border.*; import main.*; import J2Ci.*; /** * This class contains a class * for editing a Person Name Content Item in a SR. * @see SRGeneralContentItemEditPanel * @author Klaus Kleber * @since 20.08.1999 */ public class SRPNameContentItemEditPanel extends SRGeneralContentItemEditPanel { /** * Content */ JTextField text; public SRPNameContentItemEditPanel(jDSRDocumentTree documentTree,int nodeId) { super(documentTree,nodeId,jDSRE_ValueType.VT_PName,SRCode.CONTEXT_GROUP_NAME_ORGANIZATIONAL_ROLE); updateContentItem(); } /** * Updates the value from the jDSRDocumentTree. */ private void updateContentItem() { isListenerEnabled= false; documentTree.gotoNode(getNodeId()); text.setText(documentTree.getCurrentStringValue()); isListenerEnabled= true; } /** * Changes the value in the jDSRDocumentTree */ private void changeContentItem() { isListenerEnabled= false; documentTree.gotoNode(getNodeId()); String t = text.getText(); try { //documentTree.setCurrentStringValue(StringUtil.convertToISOLatin1(t)); documentTree.setCurrentStringValue(t); } catch(Exception e) { documentTree.setCurrentStringValue(t); System.err.println(e); } isListenerEnabled= true; } /** * Initialise and returns a JComponent containting a GUI for editing the * value of the Content Item. * @return JScrollbar with JTextArea containing the * value of the Content Item. */ public JComponent initContentItemGUI() { text = new JTextField(); text.setDocument(new PNDocument()); JPanel p = new JPanel(new BorderLayout()); p.setBackground(Color.lightGray); JPanel textPanel = new JPanel(new BorderLayout(10,10)); textPanel.setBorder(new EtchedBorder()); textPanel.add(new JLabel(" "), BorderLayout.NORTH); textPanel.add(new JLabel(" "), BorderLayout.SOUTH); textPanel.add(new JLabel("Name: "),BorderLayout.WEST); textPanel.add(text,BorderLayout.CENTER); p.add(textPanel, BorderLayout.NORTH); text.addFocusListener(new FocusListener() { public void focusGained(FocusEvent e) {} public void focusLost(FocusEvent e) { changeContentItem(); } }); text.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { changeContentItem(); } }); return p; } } /* * CVS Log * $Log: SRPNameContentItemEditPanel.java,v $ * Revision 1.1.1.1 2001/06/06 10:32:30 kleber * Init commit for DICOMscope 3.5 * Create new CVS * */ dicomscope-3.6.0/tkgui/viewer/sr/SRSpatialCoordinateContentItemEditPanel.java0000644000265600020320000001151111262371102026510 0ustar tilleaadmin/* * * Copyright (C) 1999, Institute for MicroTherapy * * This software and supporting documentation were developed by * * University of Witten/Herdecke * Department of Radiology and MicroTherapy * Institute for MicroTherapy * Medical computer science * * Universitaetsstrasse 142 * 44799 Bochum, Germany * * http://www.microtherapy.de/go/cs * mailto:computer.science@microtherapy.de * * THIS SOFTWARE IS MADE AVAILABLE, AS IS, AND THE INSTITUTE MAKES NO * WARRANTY REGARDING THE SOFTWARE, ITS PERFORMANCE, ITS MERCHANTABILITY * OR FITNESS FOR ANY PARTICULAR USE, FREEDOM FROM ANY COMPUTER DISEASES * OR ITS CONFORMITY TO ANY SPECIFICATION. THE ENTIRE RISK AS TO QUALITY * AND PERFORMANCE OF THE SOFTWARE IS WITH THE USER. * * Author : $Author: kleber $ * Last update : $Date: 2001/06/06 10:32:30 $ * Revision : $Revision: 1.1.1.1 $ * State: $State: Exp $ */ package viewer.sr; import java.awt.*; import java.awt.event.*; import de.microtherapy.tools.text.document.dicom.*; import java.util.*; import javax.swing.*; import javax.swing.event.*; import javax.swing.text.*; import javax.swing.text.html.*; import javax.swing.border.*; import main.*; import J2Ci.*; /** * This class contains a class * for editing an Spatial Coordinate Content Item in a SR. * @see SRGeneralContentItemEditPanel * @author Klaus Kleber * @since 20.08.1999 */ public class SRSpatialCoordinateContentItemEditPanel extends SRGeneralContentItemEditPanel { /** * Content */ JComboBox coord; DefaultListModel listModel ; public SRSpatialCoordinateContentItemEditPanel(jDSRDocumentTree documentTree,int nodeId) { super(documentTree,nodeId,jDSRE_ValueType.VT_SCoord,SRCode.CONTEXT_GROUP_NAME_SPATIALCOORD); updateContentItem(); } /** * Updates the value from the jDSRDocumentTree. */ private void updateContentItem() { isListenerEnabled= false; documentTree.gotoNode(getNodeId()); jDSRSCoordValue ref = documentTree.getCurrentSCoordValue(); int v = ref.getGraphicType(); listModel.removeAllElements(); for (int i = 1; i<= ref.getNumberOfPixels(); i++) { jFloatByRef x = new jFloatByRef(); jFloatByRef y = new jFloatByRef(); ref.getPixel(i, x, y); listModel.addElement(new String(x.value + " / " + y.value)); } coord.setSelectedIndex(v-1); isListenerEnabled= true; } /** * Changes the value in the jDSRDocumentTree */ private void changeContentItem() { isListenerEnabled= false; documentTree.gotoNode(getNodeId()); int v = coord.getSelectedIndex(); jDSRSCoordValue ref = documentTree.getCurrentSCoordValue(); ref.setGraphicType(v+1); isListenerEnabled= true; } /** * Initialise and returns a JComponent containting a GUI for editing the * value of the Content Item. * @return JScrollbar with JTextArea containing the * value of the Content Item. */ public JComponent initContentItemGUI() { coord= new JComboBox(); Iterator i = (new TreeSet(jDSRE_GraphicType.names.keySet())).iterator(); while(i.hasNext()) { int v= ((Integer)i.next()).intValue(); if (v != jDSRE_GraphicType.GT_invalid) coord.addItem(jDSRE_GraphicType.getName(v)); } JPanel p = new JPanel(new BorderLayout()); p.setBackground(Color.lightGray); JPanel textPanel = new JPanel(new BorderLayout(10,10)); textPanel.setBorder(new EtchedBorder()); textPanel.add(new JLabel(" "), BorderLayout.NORTH); textPanel.add(new JLabel(" "), BorderLayout.SOUTH); textPanel.add(new JLabel("Graphic Type: "),BorderLayout.WEST); textPanel.add(coord,BorderLayout.CENTER); p.add(textPanel, BorderLayout.NORTH); listModel = new DefaultListModel(); JList list = new JList(listModel); Font f = list.getFont(); list.setFont(new Font("Monospaced",f.getStyle(),f.getSize())); JPanel centerPanel = new JPanel(new BorderLayout()); centerPanel.setBorder(new TitledBorder("Graphic Points")); centerPanel.add(new JScrollPane(list)); p.add(centerPanel, BorderLayout.CENTER); coord.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { changeContentItem(); } }); return p; } } /* * CVS Log * $Log: SRSpatialCoordinateContentItemEditPanel.java,v $ * Revision 1.1.1.1 2001/06/06 10:32:30 kleber * Init commit for DICOMscope 3.5 * Create new CVS * */ dicomscope-3.6.0/tkgui/viewer/sr/SRTemporalCoordinateContentItemEditPanel.java0000644000265600020320000001016211262371102026677 0ustar tilleaadmin/* * * Copyright (C) 1999, Institute for MicroTherapy * * This software and supporting documentation were developed by * * University of Witten/Herdecke * Department of Radiology and MicroTherapy * Institute for MicroTherapy * Medical computer science * * Universitaetsstrasse 142 * 44799 Bochum, Germany * * http://www.microtherapy.de/go/cs * mailto:computer.science@microtherapy.de * * THIS SOFTWARE IS MADE AVAILABLE, AS IS, AND THE INSTITUTE MAKES NO * WARRANTY REGARDING THE SOFTWARE, ITS PERFORMANCE, ITS MERCHANTABILITY * OR FITNESS FOR ANY PARTICULAR USE, FREEDOM FROM ANY COMPUTER DISEASES * OR ITS CONFORMITY TO ANY SPECIFICATION. THE ENTIRE RISK AS TO QUALITY * AND PERFORMANCE OF THE SOFTWARE IS WITH THE USER. * * Author : $Author: kleber $ * Last update : $Date: 2001/06/06 10:32:30 $ * Revision : $Revision: 1.1.1.1 $ * State: $State: Exp $ */ package viewer.sr; import java.awt.*; import java.awt.event.*; import de.microtherapy.tools.text.document.dicom.*; import java.util.*; import javax.swing.*; import javax.swing.event.*; import javax.swing.text.*; import javax.swing.text.html.*; import javax.swing.border.*; import main.*; import J2Ci.*; /** * This class contains a class * for editing an Temporal Coordinate Content Item in a SR. * @see SRGeneralContentItemEditPanel * @author Klaus Kleber * @since 20.08.1999 */ public class SRTemporalCoordinateContentItemEditPanel extends SRGeneralContentItemEditPanel { /** * Content */ JComboBox coord; DefaultListModel listModel ; public SRTemporalCoordinateContentItemEditPanel(jDSRDocumentTree documentTree,int nodeId) { super(documentTree,nodeId,jDSRE_ValueType.VT_TCoord,SRCode.CONTEXT_GROUP_NAME_TEMPORALCOORD); updateContentItem(); } /** * Updates the value from the jDSRDocumentTree. */ private void updateContentItem() { isListenerEnabled= false; documentTree.gotoNode(getNodeId()); jDSRTCoordValue ref = documentTree.getCurrentTCoordValue(); int v = ref.getTemporalRangeType(); coord.setSelectedIndex(v-1); isListenerEnabled= true; } /** * Changes the value in the jDSRDocumentTree */ private void changeContentItem() { isListenerEnabled= false; documentTree.gotoNode(getNodeId()); int v = coord.getSelectedIndex(); documentTree.getCurrentTCoordValue().setTemporalRangeType(v+1); isListenerEnabled= true; } /** * Initialise and returns a JComponent containting a GUI for editing the * value of the Content Item. * @return JScrollbar with JTextArea containing the * value of the Content Item. */ public JComponent initContentItemGUI() { coord= new JComboBox(); Iterator i = (new TreeSet(jDSRE_TemporalRangeType.names.keySet())).iterator(); while(i.hasNext()) { int v= ((Integer)i.next()).intValue(); if (v != jDSRE_TemporalRangeType.TRT_invalid) coord.addItem(jDSRE_TemporalRangeType.getName(v)); } JPanel p = new JPanel(new BorderLayout()); p.setBackground(Color.lightGray); JPanel textPanel = new JPanel(new BorderLayout(10,10)); textPanel.setBorder(new EtchedBorder()); textPanel.add(new JLabel(" "), BorderLayout.NORTH); textPanel.add(new JLabel(" "), BorderLayout.SOUTH); textPanel.add(new JLabel("Temporal Range Type: "),BorderLayout.WEST); textPanel.add(coord,BorderLayout.CENTER); p.add(textPanel, BorderLayout.NORTH); coord.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { changeContentItem(); } }); return p; } } /* * CVS Log * $Log: SRTemporalCoordinateContentItemEditPanel.java,v $ * Revision 1.1.1.1 2001/06/06 10:32:30 kleber * Init commit for DICOMscope 3.5 * Create new CVS * */ dicomscope-3.6.0/tkgui/viewer/sr/SRTextContentItemEditPanel.java0000644000265600020320000000653211262371102024036 0ustar tilleaadmin/* * * Copyright (C) 1999, Institute for MicroTherapy * * This software and supporting documentation were developed by * * University of Witten/Herdecke * Department of Radiology and MicroTherapy * Institute for MicroTherapy * Medical computer science * * Universitaetsstrasse 142 * 44799 Bochum, Germany * * http://www.microtherapy.de/go/cs * mailto:computer.science@microtherapy.de * * THIS SOFTWARE IS MADE AVAILABLE, AS IS, AND THE INSTITUTE MAKES NO * WARRANTY REGARDING THE SOFTWARE, ITS PERFORMANCE, ITS MERCHANTABILITY * OR FITNESS FOR ANY PARTICULAR USE, FREEDOM FROM ANY COMPUTER DISEASES * OR ITS CONFORMITY TO ANY SPECIFICATION. THE ENTIRE RISK AS TO QUALITY * AND PERFORMANCE OF THE SOFTWARE IS WITH THE USER. * * Author : $Author: kleber $ * Last update : $Date: 2001/06/06 10:32:30 $ * Revision : $Revision: 1.1.1.1 $ * State: $State: Exp $ */ package viewer.sr; import java.awt.*; import java.awt.event.*; import javax.swing.*; import javax.swing.event.*; import javax.swing.text.*; import javax.swing.text.html.*; import main.*; import J2Ci.*; /** * This class contains a class * for editing a Text Content Item in a SR. * @see SRGeneralContentItemEditPanel * @author Klaus Kleber * @since 20.08.1999 */ public class SRTextContentItemEditPanel extends SRGeneralContentItemEditPanel { /** * Content */ private JTextArea text; public SRTextContentItemEditPanel(jDSRDocumentTree documentTree,int nodeId) { super(documentTree,nodeId,jDSRE_ValueType.VT_Text,SRCode.CONTEXT_GROUP_NAME_REPORT_ELEMENT); updateContentItem(); } /** * Updates the value from the jDSRDocumentTree. */ private void updateContentItem() { isListenerEnabled= false; documentTree.gotoNode(getNodeId()); text.setText(documentTree.getCurrentStringValue()); isListenerEnabled= true; } /** * Changes the value in the jDSRDocumentTree */ private void changeContentItem() { isListenerEnabled= false; documentTree.gotoNode(getNodeId()); String t = text.getText(); try { //documentTree.setCurrentStringValue(StringUtil.convertToISOLatin1(t)); documentTree.setCurrentStringValue(t); } catch(Exception e) { documentTree.setCurrentStringValue(t); System.err.println(e); } isListenerEnabled= true; } /** * Initialise and returns a JComponent containting a GUI for editing the * value of the Content Item. * @return JScrollbar with JTextArea containing the * value of the Content Item. */ public JComponent initContentItemGUI() { text = new JTextArea(); text.setLineWrap(true); text.setWrapStyleWord(true); text.addFocusListener(new FocusListener() { public void focusGained(FocusEvent e) {} public void focusLost(FocusEvent e) { changeContentItem(); } }); return new JScrollPane(text); } } /* * CVS Log * $Log: SRTextContentItemEditPanel.java,v $ * Revision 1.1.1.1 2001/06/06 10:32:30 kleber * Init commit for DICOMscope 3.5 * Create new CVS * */ dicomscope-3.6.0/tkgui/viewer/sr/SRTimeContentItemEditPanel.java0000644000265600020320000000777311262371102024020 0ustar tilleaadmin/* * * Copyright (C) 1999, Institute for MicroTherapy * * This software and supporting documentation were developed by * * University of Witten/Herdecke * Department of Radiology and MicroTherapy * Institute for MicroTherapy * Medical computer science * * Universitaetsstrasse 142 * 44799 Bochum, Germany * * http://www.microtherapy.de/go/cs * mailto:computer.science@microtherapy.de * * THIS SOFTWARE IS MADE AVAILABLE, AS IS, AND THE INSTITUTE MAKES NO * WARRANTY REGARDING THE SOFTWARE, ITS PERFORMANCE, ITS MERCHANTABILITY * OR FITNESS FOR ANY PARTICULAR USE, FREEDOM FROM ANY COMPUTER DISEASES * OR ITS CONFORMITY TO ANY SPECIFICATION. THE ENTIRE RISK AS TO QUALITY * AND PERFORMANCE OF THE SOFTWARE IS WITH THE USER. * * Author : $Author: kleber $ * Last update : $Date: 2001/06/06 10:32:30 $ * Revision : $Revision: 1.1.1.1 $ * State: $State: Exp $ */ package viewer.sr; import java.awt.*; import java.awt.event.*; import de.microtherapy.tools.text.document.dicom.*; import javax.swing.*; import javax.swing.event.*; import javax.swing.text.*; import javax.swing.text.html.*; import javax.swing.border.*; import main.*; import J2Ci.*; /** * This class contains a class * for editing Time Content Item in a SR. * @see SRGeneralContentItemEditPanel * @author Klaus Kleber * @since 20.08.1999 */ public class SRTimeContentItemEditPanel extends SRGeneralContentItemEditPanel { /** * Content */ JTextField text; TMDocument tmDocument; public SRTimeContentItemEditPanel(jDSRDocumentTree documentTree,int nodeId) { super(documentTree,nodeId,jDSRE_ValueType.VT_Time,SRCode.CONTEXT_GROUP_NAME_TIME); updateContentItem(); } /** * Updates the value from the jDSRDocumentTree. */ private void updateContentItem() { isListenerEnabled= false; documentTree.gotoNode(getNodeId()); text.setText(documentTree.getCurrentStringValue()); isListenerEnabled= true; } /** * Changes the value in the jDSRDocumentTree */ private void changeContentItem() { isListenerEnabled= false; if (tmDocument.check()){ documentTree.gotoNode(getNodeId()); documentTree.setCurrentStringValue(text.getText()); } else { text.selectAll(); text.repaint(); Toolkit.getDefaultToolkit().beep(); } isListenerEnabled= true; } /** * Initialise and returns a JComponent containting a GUI for editing the * value of the Content Item. * @return JScrollbar with JTextArea containing the * value of the Content Item. */ public JComponent initContentItemGUI() { text = new JTextField(); tmDocument = new TMDocument(); text.setDocument(tmDocument); JPanel p = new JPanel(new BorderLayout()); p.setBackground(Color.lightGray); JPanel textPanel = new JPanel(new BorderLayout(10,10)); textPanel.setBorder(new EtchedBorder()); textPanel.add(new JLabel(" "), BorderLayout.NORTH); textPanel.add(new JLabel(" "), BorderLayout.SOUTH); textPanel.add(new JLabel("Time: "),BorderLayout.WEST); textPanel.add(text,BorderLayout.CENTER); p.add(textPanel, BorderLayout.NORTH); text.addFocusListener(new FocusListener() { public void focusGained(FocusEvent e) {} public void focusLost(FocusEvent e) { changeContentItem(); } }); text.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { changeContentItem(); } }); return p; } } /* * CVS Log * $Log: SRTimeContentItemEditPanel.java,v $ * Revision 1.1.1.1 2001/06/06 10:32:30 kleber * Init commit for DICOMscope 3.5 * Create new CVS * */ dicomscope-3.6.0/tkgui/viewer/sr/SRTreeElement.java0000644000265600020320000000606411262371102021363 0ustar tilleaadmin/* * * Copyright (C) 1999, Institute for MicroTherapy * * This software and supporting documentation were developed by * * University of Witten/Herdecke * Department of Radiology and MicroTherapy * Institute for MicroTherapy * Medical computer science * * Universitaetsstrasse 142 * 44799 Bochum, Germany * * http://www.microtherapy.de/go/cs * mailto:computer.science@microtherapy.de * * THIS SOFTWARE IS MADE AVAILABLE, AS IS, AND THE INSTITUTE MAKES NO * WARRANTY REGARDING THE SOFTWARE, ITS PERFORMANCE, ITS MERCHANTABILITY * OR FITNESS FOR ANY PARTICULAR USE, FREEDOM FROM ANY COMPUTER DISEASES * OR ITS CONFORMITY TO ANY SPECIFICATION. THE ENTIRE RISK AS TO QUALITY * AND PERFORMANCE OF THE SOFTWARE IS WITH THE USER. * * Author : $Author: kleber $ * Last update : $Date: 2001/06/06 10:32:30 $ * Revision : $Revision: 1.1.1.1 $ * State: $State: Exp $ */ package viewer.sr; import J2Ci.*; /** * This class represents a tree element with all possible contents. * * @author Andreas Schroeter * @since 30.04.1999 */ public class SRTreeElement { /** * SR Root Id; */ public int srNodeId; String description=""; public int srType; public int signStatus = 0; /** * */ public String relationShip = null; public int getSignStatus() { return signStatus; } public void setSignStatus(int signStatus) { this.signStatus=signStatus; } public int getNodeId() { return srNodeId; } public int getSRType() { return srType; } public String name = ""; public SRTreeElement(String name, String description) { this.name = name; this.description = description; this.signStatus = signStatus; } public SRTreeElement( String name, int srNodeId, int srType, int signStatus) { this.name = name; this.srType = srType; this.srNodeId = srNodeId; relationShip = "SR Tree"; this.signStatus = signStatus; } public SRTreeElement( String name, int srNodeId, String relationShip, int srType, int signStatus) { this.name = name; this.srType = srType; this.srNodeId = srNodeId; this.relationShip = relationShip; this.signStatus = signStatus; } public String getToolTipText() { if (relationShip != null) return relationShip + " " + name; return name; } public String getText() { if (relationShip != null) return description + relationShip; else return description; } public String toString() { if (relationShip != null) return relationShip + " " + name; return name; } } /* * CVS Log * $Log: SRTreeElement.java,v $ * Revision 1.1.1.1 2001/06/06 10:32:30 kleber * Init commit for DICOMscope 3.5 * Create new CVS * */ dicomscope-3.6.0/tkgui/viewer/sr/SRUIDRefContentItemEditPanel.java0000644000265600020320000001011711262371102024162 0ustar tilleaadmin/* * * Copyright (C) 1999, Institute for MicroTherapy * * This software and supporting documentation were developed by * * University of Witten/Herdecke * Department of Radiology and MicroTherapy * Institute for MicroTherapy * Medical computer science * * Universitaetsstrasse 142 * 44799 Bochum, Germany * * http://www.microtherapy.de/go/cs * mailto:computer.science@microtherapy.de * * THIS SOFTWARE IS MADE AVAILABLE, AS IS, AND THE INSTITUTE MAKES NO * WARRANTY REGARDING THE SOFTWARE, ITS PERFORMANCE, ITS MERCHANTABILITY * OR FITNESS FOR ANY PARTICULAR USE, FREEDOM FROM ANY COMPUTER DISEASES * OR ITS CONFORMITY TO ANY SPECIFICATION. THE ENTIRE RISK AS TO QUALITY * AND PERFORMANCE OF THE SOFTWARE IS WITH THE USER. * * Author : $Author: kleber $ * Last update : $Date: 2001/06/06 10:32:30 $ * Revision : $Revision: 1.1.1.1 $ * State: $State: Exp $ */ package viewer.sr; import java.awt.*; import java.awt.event.*; import de.microtherapy.tools.text.document.dicom.*; import javax.swing.*; import javax.swing.event.*; import javax.swing.text.*; import javax.swing.text.html.*; import javax.swing.border.*; import main.*; import J2Ci.*; /** * This class contains a class * for editing an UID Reference Content Item in a SR. * @see SRGeneralContentItemEditPanel * @author Klaus Kleber * @since 20.08.1999 */ public class SRUIDRefContentItemEditPanel extends SRGeneralContentItemEditPanel { /** * Content */ JTextField text; public SRUIDRefContentItemEditPanel(jDSRDocumentTree documentTree,int nodeId) { super(documentTree,nodeId,jDSRE_ValueType.VT_UIDRef,SRCode.CONTEXT_GROUP_NAME_UID_REFERENCE); updateContentItem(); } /** * Updates the value from the jDSRDocumentTree. */ private void updateContentItem() { isListenerEnabled= false; documentTree.gotoNode(getNodeId()); text.setText(documentTree.getCurrentStringValue()); isListenerEnabled= true; } /** * Changes the value in the jDSRDocumentTree */ private void changeContentItem() { isListenerEnabled= false; documentTree.gotoNode(getNodeId()); String t = text.getText(); try { //documentTree.setCurrentStringValue(StringUtil.convertToISOLatin1(t)); documentTree.setCurrentStringValue(t); } catch(Exception e) { documentTree.setCurrentStringValue(t); System.err.println(e); } isListenerEnabled= true; } /** * Initialise and returns a JComponent containting a GUI for editing the * value of the Content Item. * @return JScrollbar with JTextArea containing the * value of the Content Item. */ public JComponent initContentItemGUI() { text = new JTextField(); text.setDocument(new UIDocument()); JPanel p = new JPanel(new BorderLayout()); p.setBackground(Color.lightGray); JPanel textPanel = new JPanel(new BorderLayout(10,10)); textPanel.setBorder(new EtchedBorder()); textPanel.add(new JLabel(" "), BorderLayout.NORTH); textPanel.add(new JLabel(" "), BorderLayout.SOUTH); textPanel.add(new JLabel("UID: "),BorderLayout.WEST); textPanel.add(text,BorderLayout.CENTER); p.add(textPanel, BorderLayout.NORTH); text.addFocusListener(new FocusListener() { public void focusGained(FocusEvent e) {} public void focusLost(FocusEvent e) { changeContentItem(); } }); text.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { changeContentItem(); } }); return p; } } /* * CVS Log * $Log: SRUIDRefContentItemEditPanel.java,v $ * Revision 1.1.1.1 2001/06/06 10:32:30 kleber * Init commit for DICOMscope 3.5 * Create new CVS * */ dicomscope-3.6.0/tkgui/viewer/sr/SRViewPanel.java0000644000265600020320000007660611262371102021055 0ustar tilleaadmin/* * * Copyright (C) 1999, Institute for MicroTherapy * * This software and supporting documentation were developed by * * University of Witten/Herdecke * Department of Radiology and MicroTherapy * Institute for MicroTherapy * Medical computer science * * Universitaetsstrasse 142 * 44799 Bochum, Germany * * http://www.microtherapy.de/go/cs * mailto:computer.science@microtherapy.de * * THIS SOFTWARE IS MADE AVAILABLE, AS IS, AND THE INSTITUTE MAKES NO * WARRANTY REGARDING THE SOFTWARE, ITS PERFORMANCE, ITS MERCHANTABILITY * OR FITNESS FOR ANY PARTICULAR USE, FREEDOM FROM ANY COMPUTER DISEASES * OR ITS CONFORMITY TO ANY SPECIFICATION. THE ENTIRE RISK AS TO QUALITY * AND PERFORMANCE OF THE SOFTWARE IS WITH THE USER. * * Author : $Author: kleber $ * Last update : $Date: 2001/06/06 10:32:30 $ * Revision : $Revision: 1.1.1.1 $ * State: $State: Exp $ */ package viewer.sr; import viewer.gui.*; import java.util.*; import java.net.*; import java.awt.*; import java.awt.event.*; import javax.swing.*; import javax.swing.border.*; import javax.swing.event.*; import javax.swing.text.*; import javax.swing.text.html.*; import de.microtherapy.tools.text.document.dicom.*; import main.*; import J2Ci.*; /** * This class contains the GUI vizualizing a Dicom Structured Report * as an HTML document. * * @author Klaus Kleber * @since 08.11.2000 */ public class SRViewPanel extends JPanel implements HyperlinkListener { /** * Contains the names of the loaded SR Objects. */ private JComboBox loadedSRNamesBox; /** * ActionListener for the loadedSRNamesBox */ private NameBoxActionListener nameBoxActionListener= new NameBoxActionListener(); /** * The loaded SR Objects will be cached in this object */ private Vector cachedObjects = new Vector(); /** * Contains the SOP Instance UIDs of the loaded SR objects */ private Vector cachedInstances = new Vector(); /** *Contains the current loded DICOMinstance */ DICOMInstance currentDicomInstance = null; /** *Contains the current loded DICOMinstance */ DICOMInstance changedDicomInstance = null; /** * Contains the JSrcollPane for the JEditorPane. */ private JScrollPane scroll; /** * Property name for the sr-type. This property can be part of a link in a HTML-Side */ private static final String SR_TYPE = "srtype"; /** * Property name for the SOP Class UID. This property can be part of a link in a HTML-Side */ private static final String SOP_CLASS_UID = "SOP Class UID"; /** * Property name for the SOP Instance UID. This property can be part of a link in a HTML-Side */ private static final String SOP_INSTANCE_UID = "SOP Instance UID"; /** * Property name for the Haost. This property can be part of a link in a HTML-Side */ public static final String TYPE_IMAGE = "image"; public static final String TYPE_FRAME = "frame"; public static final String TYPE_COMPOSITE = "composite"; public static final String TYPE_PSTATE = "pstate"; public static final String TYPE_WAVEFORM = "waveform"; private static final String HOST = "host"; /** * Contains a virtual URL. If the JEditorPane * will be initialized with a String anchor in the * HTML side cannot be resolved. Futhermore there HyperlinksEvents * doesn't contain any URL. For this reason we set this ULR as base for * the HTMLDocument in the JEditorPane */ private String helpCodeBase = "file://help/text.html"; JButton verificationButton; JButton completeButton; JButton saveButton; JButton resetButton; JButton editButton; JButton hackerEditButton; JButton revisedButton; JPanel buttonPanel; /** * JEditorPane displaying the HTML document */ private JReferenceEditorPane editorPane = new JReferenceEditorPane(); /** * HTMLEditorKit in editorPane */ private HTMLEditorKit eKit; /** * HTMLDocument in editorPane */ private HTMLDocument doc ; /** * Tilted Boder containing the name of the SR Object */ private TitledBorder titledBorder = new TitledBorder("Structured Report"); /** * Current DVI Interface */ private jDVInterface dvi; public MainImageViewerPanel mainView; /** * Constructor * * @param dvi jDVInterface */ public SRViewPanel(jDVInterface dvi, MainImageViewerPanel mainView ) { this.dvi = dvi; this.mainView = mainView; setLayout(new BorderLayout()); setBorder(new TitledBorder("Structured Report Viewer")); //CenterPanel JPanel centerPanel = new JPanel(new BorderLayout()); centerPanel.setBorder(titledBorder); add (centerPanel, BorderLayout.CENTER); buttonPanel = new JPanel(); //JEditorPane editorPane.setEditable(false); scroll = new JScrollPane(editorPane); centerPanel.add (scroll, BorderLayout.CENTER); editorPane.setContentType("text/html"); editorPane.addHyperlinkListener(this); editorPane.setEditable(false); eKit = new HTMLEditorKit(); editorPane.setEditorKit(eKit); //Set Base doc = (HTMLDocument)editorPane.getDocument(); try { doc.setBase(new URL(helpCodeBase)); } catch (Exception e) { System.err.println("Er: " + e); } //North JPanel northPanel = new JPanel(new BorderLayout(5,5)); add(northPanel, BorderLayout.NORTH); Action[] act = editorPane.getActions(); Hashtable actions; actions = new Hashtable(); for (int i = 0; i < act.length; i++) { actions.put(act[i].getValue(Action.NAME), act[i]); //System.err.println("name: " + act[i].getValue(Action.NAME)); } northPanel.add(buttonPanel,BorderLayout.EAST); GuiComponents gui = GuiComponents.getInstance(); JButton beginButton = gui.srViewBeginButton; beginButton.setToolTipText("Goto Begin"); //buttonPanel.add(beginButton); beginButton.addActionListener(new BeginAction()); JButton endButton =gui.srViewEndButton; endButton.setToolTipText("Goto End"); // buttonPanel.add(endButton); endButton.addActionListener((Action)actions.get("selection-end")); JButton pageUpButton =gui.srViewUpButton; pageUpButton.setToolTipText("Page Up"); //buttonPanel.add(pageUpButton); pageUpButton.addActionListener((Action)actions.get("page-up")); JButton pageDownButton= gui.srViewDownButton; pageDownButton.setToolTipText("Page Down"); //buttonPanel.add(pageDownButton); pageDownButton.addActionListener((Action)actions.get("page-down")); buttonPanel.add(Box.createHorizontalStrut(5)); JButton copyButton = gui.srViewCopyButton; copyButton.setToolTipText("Copy to Clipboard"); buttonPanel.add(copyButton); copyButton.addActionListener((Action)actions.get("copy-to-clipboard")); editButton = gui.srEditButton; editButton.setToolTipText("Edit"); buttonPanel.add(editButton); editButton.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { editSR(false); } }); ActionListener a = new ActionListener() { public void actionPerformed(ActionEvent e) { editSR(true); } }; registerKeyboardAction(a, KeyStroke.getKeyStroke(KeyEvent.VK_H, InputEvent.ALT_MASK, false), JComponent.WHEN_IN_FOCUSED_WINDOW); revisedButton = gui.srRevisedButton; revisedButton.setToolTipText("Revise"); //buttonPanel.add(revisedButton); revisedButton.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { revised(false); } }); buttonPanel.add(Box.createHorizontalStrut(5)); completeButton= gui.srCompleteButton; completeButton.setToolTipText("Complete Document"); buttonPanel.add(completeButton); completeButton.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { setComplete(); } }); completeButton.setEnabled(false); verificationButton= gui.srVerificationButton; verificationButton.setToolTipText("Verify Document"); verificationButton.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { setVerification(); } }); buttonPanel.add(verificationButton); verificationButton.setEnabled(false); saveButton= gui.srSaveButton; saveButton.setToolTipText("Save Document to database"); saveButton.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { save(); } }); buttonPanel.add(saveButton); resetButton= gui.srResetButton; resetButton.setToolTipText("Reset Document"); resetButton.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { reset(); } }); buttonPanel.add(resetButton); saveButton.setEnabled(false); resetButton.setEnabled(false); Box box = new Box(BoxLayout.X_AXIS ); box.add(new JLabel("Loaded SR Objects: ")); box.add(box.createHorizontalStrut(5)); loadedSRNamesBox = new JComboBox(); loadedSRNamesBox.addActionListener(nameBoxActionListener); //box.add(loadedSRNamesBox); loadedSRNamesBox.setAlignmentX(0.5f); loadedSRNamesBox.setAlignmentY(0.5f); northPanel.add(loadedSRNamesBox,BorderLayout.CENTER); } private void setVerification() { VerificationDialog vd = new VerificationDialog( dvi, mainView,saveButton.isEnabled()); vd.setVisible(true); if (vd.isVerified()) { setChangedSR(); } } public void revised(boolean hackerMode) { jDSRDocument sr = dvi.getCurrentReport(); if (!saveButton.isEnabled()) { sr.createRevisedVersion(); sr.setSpecificCharacterSetType(jDSRE_CharacterSet.CS_Latin1); } else { int res= JOptionPane.showConfirmDialog(loadedSRNamesBox, "Only saved documents can be revised.\nDo you want to save this document?", "Message", JOptionPane.YES_NO_OPTION ); if (res == JOptionPane.NO_OPTION) return; save(); } mainView.addEditSR(hackerMode); } public void setComplete() { CompleteDialog cd = new CompleteDialog(mainView.parent); cd.setVisible(true); if (cd.cancelAction == false) { //setComplete(); jDSRDocument sr = dvi.getCurrentReport(); if (!saveButton.isEnabled()) { sr.createNewSOPInstance(); sr.setSpecificCharacterSetType(jDSRE_CharacterSet.CS_Latin1); //System.err.println("Revised: "); } int status = sr.completeDocument(cd.descriptionText.getText()); if (status != 0) System.err.println("Can't complete document. Status: " + status); setChangedSR(); } } public void setRevisedButton() { Component[] c = buttonPanel.getComponents(); for (int i = 0; i < c.length; i++) { if (c[i] == editButton) { buttonPanel.remove(editButton); buttonPanel.add(revisedButton, i); buttonPanel.revalidate(); buttonPanel.repaint(); return; } } } public void setEditButton() { Component[] c = buttonPanel.getComponents(); for (int i = 0; i < c.length; i++) { if (c[i] == revisedButton) { buttonPanel.remove(revisedButton); buttonPanel.add(editButton, i); buttonPanel.revalidate(); buttonPanel.repaint(); return; } } } public void save() { Controller.instance().fireEvent(new DbActionEvent(this,DbActionEvent.SAVE_DB_SR)); saveButton.setEnabled(false); resetButton.setEnabled(false); } public void reset() { saveButton.setEnabled(false); resetButton.setEnabled(false); loadedSRNamesBox.removeActionListener(nameBoxActionListener); int index = loadedSRNamesBox.getSelectedIndex(); loadedSRNamesBox.removeItemAt(index); cachedInstances.removeElementAt(index); cachedObjects.removeElementAt(index); loadedSRNamesBox.addActionListener(nameBoxActionListener); int instanceIndex = isInstanceInCache(changedDicomInstance.sopInstanceUid); loadedSRNamesBox.setSelectedIndex(instanceIndex); loadObject((Properties)cachedObjects.elementAt(instanceIndex)); } public void delete() { //Controller.instance().fireEvent(new DbActionEvent(this,DbActionEvent.SAVE_DB_SR)); saveButton.setEnabled(false); resetButton.setEnabled(false); loadedSRNamesBox.removeActionListener(nameBoxActionListener); int index = isInstanceInCache(currentDicomInstance.sopInstanceUid); loadedSRNamesBox.removeItemAt(index); cachedInstances.removeElementAt(index); cachedObjects.removeElementAt(index); loadedSRNamesBox.addActionListener(nameBoxActionListener); } public void editSR(boolean hackerMode) { jDSRDocument sr = dvi.getCurrentReport(); if (!saveButton.isEnabled()) { if (!hackerMode) { sr.createNewSOPInstance(); } sr.setSpecificCharacterSetType(jDSRE_CharacterSet.CS_Latin1); } mainView.addEditSR(hackerMode); } /** * Sets the specified instance visible. * @param Specifies the index of the instance in cacheHTML and loadedSRNamesBox. */ private void setInstanceVisible(int index) { //setString((String)cacheHTML.elementAt(index)); // System.err.println("setInstanceVisible index "+index); loadObject((Properties)cachedObjects.elementAt(index) ); } /** * Not used yet */ public void setConfiguration(Hashtable config, String orient) { } /** * Handles the received HyperlinkEvents. * */ public void hyperlinkUpdate(HyperlinkEvent e) { //System.err.println(e.getEventType() ); if (e.getEventType() == HyperlinkEvent.EventType.ACTIVATED) { //Gets the selected URL URL url = e.getURL(); //System.err.println("url: " + url); if (url != null) { //Check if URL in contains an anchor int index = url.toString().indexOf("#"); if (index!= -1) { //Switch to anchor editorPane.scrollToReference(url.toString().substring(index+1)); } //Load referenced object else { Properties currentProperties = getTokens(url.toString()); if (currentProperties != null) { loadObject(currentProperties); } } } } else if(e.getEventType() ==HyperlinkEvent.EventType.ENTERED) { Cursor c = new Cursor (Cursor.HAND_CURSOR); editorPane.setCursor(c); } else if(e.getEventType() == HyperlinkEvent.EventType.EXITED) { Cursor c = new Cursor(Cursor.DEFAULT_CURSOR); editorPane.setCursor(c); } } public void loadObject(Properties prop) { //Gets Properties form URL String srtype = prop.getProperty(SR_TYPE); //Request Image //Request Image if (srtype.equals(TYPE_WAVEFORM)) { JOptionPane.showMessageDialog(this, "References to Waveform objects not supported."); } //Request PS else if (srtype.equals(TYPE_PSTATE)) { DICOMInstance instance = (DICOMInstance)prop.get(TYPE_PSTATE); DICOMInstance instanceImage = (DICOMInstance)prop.get(TYPE_IMAGE); Controller.instance().fireEvent(new DbActionEvent( this, DbActionEvent.LOAD_IMAGE_FOR_SR, instanceImage.sopClassUid, instanceImage.sopInstanceUid, instance.sopClassUid, instance.sopInstanceUid, (int[])prop.get(TYPE_FRAME))); } else if (srtype.equals(TYPE_IMAGE)) { DICOMInstance instance = (DICOMInstance)prop.get(TYPE_IMAGE); Controller.instance().fireEvent(new DbActionEvent( this, DbActionEvent.LOAD_IMAGE_FOR_SR, instance.sopClassUid, instance.sopInstanceUid, (int[])prop.get(TYPE_FRAME))); } else if (srtype.equals(TYPE_COMPOSITE)) { DICOMInstance instance = (DICOMInstance)prop.get(TYPE_COMPOSITE); if ( instance.sopClassUid.equals(DICOMSOPClassUID.BASIC_TEXT_SR_UID)|| instance.sopClassUid.equals(DICOMSOPClassUID.ENHANCED_SR_UID)|| instance.sopClassUid.equals(DICOMSOPClassUID.COMPREHENSIVE_SR_UID)) { if (saveButton.isEnabled()==true) { int res= JOptionPane.showConfirmDialog(loadedSRNamesBox, "The current report is not yet saved. Save it now?", "Warning", JOptionPane.YES_NO_OPTION ); if (res ==JOptionPane.OK_OPTION) save(); else delete(); } Controller.instance().fireEvent(new DbActionEvent(this,DbActionEvent.LOAD_SR_FOR_SR,instance.sopClassUid,instance.sopInstanceUid, null )); } else if(instance.sopClassUid.equals(DICOMSOPClassUID.PS_UID)) { Controller.instance().fireEvent(new DbActionEvent(this,DbActionEvent.LOAD_PS_FOR_SR,instance.sopClassUid,instance.sopInstanceUid ,null)); } else JOptionPane.showMessageDialog(this, "References to " + instance.sopClassUid +" objects not supported."); } else JOptionPane.showMessageDialog(this, "SOP Class " + srtype + " not supported"); } /** * Checks if the specified SOP Instance UID is cached * and returns the index in the cache. * @param sopInstanceUID The SOP Instance UID. * @return The index of the SOP Instance UID in the cache or -1 in not available */ private int isInstanceInCache(String sopInstanceUID) { if (sopInstanceUID == null ||cachedInstances == null) return -1; for (int i = 0; i "host", "srtype", "SOP Class UID", "SOP Instance UID". * @param s String containing the URL * @return The comonets of the URL. NULL if error; */ public Properties getTokens(String s) { Properties returnValue = new Properties(); int index = s.indexOf("?")+1; if (index >= s.length()) { System.err.println("Error in link: " + s); return null; } String parse = s.substring(index); StringTokenizer st = new StringTokenizer (parse, "&"); while (st.hasMoreTokens()) { String token = st.nextToken(); String type =null; if (token.startsWith(TYPE_IMAGE)) type = TYPE_IMAGE; else if (token.startsWith(TYPE_FRAME)) type = TYPE_IMAGE; else if (token.startsWith(TYPE_COMPOSITE)) type = TYPE_COMPOSITE; else if (token.startsWith(TYPE_PSTATE)) type = TYPE_PSTATE; else if (token.startsWith(TYPE_WAVEFORM)) type = TYPE_WAVEFORM; if (type == null) { System.err.println("Error in link: " + s); return null; } returnValue.put(SR_TYPE,type); if (type != TYPE_FRAME) { int index1 = token.indexOf("+"); String classUID = token.substring(type.length()+1,index1); String instanceUID = token.substring(index1+1); //System.err.println("Type: " + type +" SOP Class UID" + classUID + " SOP Instance UID:" + instanceUID); returnValue.put(type,new DICOMInstance(classUID,instanceUID)); } else { StringTokenizer fTokenizer = new StringTokenizer(token.substring(type.length()+1), "+"); try { int[] frameIds = new int[fTokenizer.countTokens()]; int i = 0; while (fTokenizer.hasMoreTokens()) { String fToken = fTokenizer.nextToken(); frameIds[i] = new Integer(fToken).intValue(); i++; } returnValue.put(type,frameIds); } catch (Exception e) { System.err.println("Error in link: " + s+ "\n" +e); return null; } } } return returnValue; } /** * Return the position of an anchor or -1 if the anchor is not in the HTML code * @param anchor HTML Anchor name * @return GetStartOffset of the HTML anchor or -1 if not found */ public int getAnchorPositon(String anchor) { HTMLDocument.Iterator it = doc.getIterator(HTML.Tag.A); while (it.isValid()) { AttributeSet as =it.getAttributes(); String thisref = (String) as.getAttribute(HTML.Attribute.NAME); if (thisref != null &&thisref.equals(anchor)) { return it.getStartOffset(); } it.next(); } return -1; } /** * Go to the begin of the HTMLDocument */ private class BeginAction extends AbstractAction { public void actionPerformed(ActionEvent e) { editorPane.select(0,0); JScrollBar v = scroll.getVerticalScrollBar(); v.setValue(0); v.repaint(); } } public class CompleteDialog extends JDialog { public JTextArea descriptionText = new JTextArea(4,16); public boolean cancelAction = true; public CompleteDialog(Component parent) { super((JFrame)(null), "Complete Document", true); getContentPane().setLayout(new BorderLayout(5,5)); Point p = completeButton.getLocationOnScreen(); //System.err.println(p); setLocation(new Point(p.x-100, p.y+100)); JButton okButton = new JButton("Complete"); okButton.setToolTipText ("Set Completion Flag"); okButton.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { setVisible(false); cancelAction = false; dispose(); } }); JButton cancelButton = new JButton("Cancel"); cancelButton.setToolTipText ("Cancel"); cancelButton.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { setVisible(false); dispose(); } }); JPanel centerPanel = new JPanel(new BorderLayout(5,5)); centerPanel.setBorder(new TitledBorder("Description")); descriptionText.setDocument(new LODocument()); descriptionText.setLineWrap(true); descriptionText.setWrapStyleWord(true); centerPanel.add(descriptionText, BorderLayout.CENTER); getContentPane().add(centerPanel, BorderLayout.CENTER); JPanel bPanel = new JPanel(); bPanel.add(okButton); bPanel.add(cancelButton); getContentPane().add(bPanel, BorderLayout.SOUTH); pack(); } } public class NameBoxActionListener implements java.awt.event.ActionListener { public void actionPerformed(java.awt.event.ActionEvent e) { //System.err.println("actionPerformed"); if (loadedSRNamesBox.getItemCount() > 1) { setInstanceVisible(loadedSRNamesBox.getSelectedIndex()); } } } public Dimension getPreferredSize() { return new Dimension (10,10); } public Dimension getMinimumSize() { return new Dimension (10,10); } public Dimension getMaximumSize() { return new Dimension (10,10); } } /* * CVS Log * $Log: SRViewPanel.java,v $ * Revision 1.1.1.1 2001/06/06 10:32:30 kleber * Init commit for DICOMscope 3.5 * Create new CVS * */ dicomscope-3.6.0/tkgui/viewer/sr/SRWaveformContentItemEditPanel.java0000644000265600020320000001165111262371102024676 0ustar tilleaadmin/* * * Copyright (C) 1999, Institute for MicroTherapy * * This software and supporting documentation were developed by * * University of Witten/Herdecke * Department of Radiology and MicroTherapy * Institute for MicroTherapy * Medical computer science * * Universitaetsstrasse 142 * 44799 Bochum, Germany * * http://www.microtherapy.de/go/cs * mailto:computer.science@microtherapy.de * * THIS SOFTWARE IS MADE AVAILABLE, AS IS, AND THE INSTITUTE MAKES NO * WARRANTY REGARDING THE SOFTWARE, ITS PERFORMANCE, ITS MERCHANTABILITY * OR FITNESS FOR ANY PARTICULAR USE, FREEDOM FROM ANY COMPUTER DISEASES * OR ITS CONFORMITY TO ANY SPECIFICATION. THE ENTIRE RISK AS TO QUALITY * AND PERFORMANCE OF THE SOFTWARE IS WITH THE USER. * * Author : $Author: kleber $ * Last update : $Date: 2001/06/06 10:32:30 $ * Revision : $Revision: 1.1.1.1 $ * State: $State: Exp $ */ package viewer.sr; import java.awt.*; import java.awt.event.*; import de.microtherapy.tools.text.document.dicom.*; import javax.swing.*; import javax.swing.event.*; import javax.swing.text.*; import javax.swing.text.html.*; import javax.swing.border.*; import main.*; import J2Ci.*; /** * This class contains a class * for editing a Waveform Content Item in a SR. * @see SRGeneralContentItemEditPanel * @author Klaus Kleber * @since 20.08.1999 */ public class SRWaveformContentItemEditPanel extends SRGeneralContentItemEditPanel { /** * Content */ JTextField sOPClassUid; JTextField sOPInstanceUid; public SRWaveformContentItemEditPanel(jDSRDocumentTree documentTree,int nodeId) { super(documentTree,nodeId,jDSRE_ValueType.VT_Waveform,SRCode.CONTEXT_GROUP_NAME_WAVEFORM); updateContentItem(); } /** * Updates the value from the jDSRDocumentTree. */ private void updateContentItem() { isListenerEnabled= false; documentTree.gotoNode(getNodeId()); jDSRWaveformValue waveformRef = documentTree.getCurrentWaveformValue(); if (waveformRef != null) { String name = waveformRef.getSOPClassName(); if (name == null||name.equals(""))name = waveformRef.getSOPInstanceUID()+ " unknown SOP Name"; sOPClassUid.setText(waveformRef.getSOPClassName()); sOPInstanceUid.setText(waveformRef.getSOPInstanceUID()); } isListenerEnabled= true; } /** * Changes the value in the jDSRDocumentTree */ private void changeContentItem() { isListenerEnabled= false; documentTree.gotoNode(getNodeId()); isListenerEnabled= true; } /** * Initialise and returns a JComponent containting a GUI for editing the * value of the Content Item. * @return JScrollbar with JTextArea containing the * value of the Content Item. */ public JComponent initContentItemGUI() { sOPClassUid= new JTextField(); sOPInstanceUid= new JTextField(); sOPClassUid.setEditable(false); sOPInstanceUid.setEditable(false); JPanel p = new JPanel(new BorderLayout()); p.setBackground(Color.lightGray); JPanel textPanel = new JPanel(new BorderLayout(10,10)); textPanel.setBorder(new EtchedBorder()); textPanel.add(new JLabel(" "), BorderLayout.NORTH); textPanel.add(new JLabel(" "), BorderLayout.SOUTH); JPanel centerPanel = new JPanel (new GridBagLayout()); GridBagConstraints gbc = new GridBagConstraints(); //Description Label //Pateint Name gbc.anchor = GridBagConstraints.WEST; gbc.fill = GridBagConstraints.NONE; gbc.gridwidth = 1; gbc.weightx = 0; gbc.insets = new Insets(0,0,0,0); centerPanel.add(new JLabel("SOP Class Name: " ), gbc); centerPanel.add(Box.createHorizontalStrut(5)); gbc.fill = GridBagConstraints.HORIZONTAL; gbc.gridwidth = GridBagConstraints.REMAINDER; gbc.weightx = 1; centerPanel.add(sOPClassUid, gbc); gbc.fill = GridBagConstraints.NONE; gbc.gridwidth = 1; gbc.weightx = 0; gbc.insets = new Insets(0,0,0,0); centerPanel.add(new JLabel("SOP Instance UID: " ), gbc); centerPanel.add(Box.createHorizontalStrut(5)); gbc.fill = GridBagConstraints.HORIZONTAL; gbc.gridwidth = GridBagConstraints.REMAINDER; gbc.weightx = 1; centerPanel.add(sOPInstanceUid, gbc); textPanel.add(centerPanel,BorderLayout.CENTER); p.add(textPanel, BorderLayout.NORTH); return p; } } /* * CVS Log * $Log: SRWaveformContentItemEditPanel.java,v $ * Revision 1.1.1.1 2001/06/06 10:32:30 kleber * Init commit for DICOMscope 3.5 * Create new CVS * */ dicomscope-3.6.0/tkgui/viewer/sr/VerificationDialog.java0000644000265600020320000004556611262371102022461 0ustar tilleaadmin/* * * Copyright (C) 1999, Institute for MicroTherapy * * This software and supporting documentation were developed by * * University of Witten/Herdecke * Department of Radiology and MicroTherapy * Institute for MicroTherapy * Medical computer science * * Universitaetsstrasse 142 * 44799 Bochum, Germany * * http://www.microtherapy.de/go/cs * mailto:computer.science@microtherapy.de * * THIS SOFTWARE IS MADE AVAILABLE, AS IS, AND THE INSTITUTE MAKES NO * WARRANTY REGARDING THE SOFTWARE, ITS PERFORMANCE, ITS MERCHANTABILITY * OR FITNESS FOR ANY PARTICULAR USE, FREEDOM FROM ANY COMPUTER DISEASES * OR ITS CONFORMITY TO ANY SPECIFICATION. THE ENTIRE RISK AS TO QUALITY * AND PERFORMANCE OF THE SOFTWARE IS WITH THE USER. * * Author : $Author: kleber $ * Last update : $Date: 2001/06/06 10:32:30 $ * Revision : $Revision: 1.1.1.1 $ * State: $State: Exp $ */ package viewer.sr; import viewer.gui.*; import java.util.*; import java.net.*; import java.awt.*; import java.awt.event.*; import javax.swing.*; import javax.swing.border.*; import javax.swing.event.*; import javax.swing.text.*; import javax.swing.text.html.*; import javax.swing.table.*; import main.*; import J2Ci.*; /** * This class contains the GUI the verification of a * a Dicom Structured Report * @author Klaus Kleber * @since 11.11.200 */ public class VerificationDialog extends JDialog { boolean holdVerifyingObserver = true; boolean holdPreDocuments = true; /** * Current DVI Interface */ private jDVInterface dvi; /** * Parent */ private MainImageViewerPanel mainView; /** * Table for seleting an user */ private JTable table; /** *Model for the Tabel */ private TableData tableData; // die Tabellendaten /** * If true at least one user has verified the document */ private boolean verified = false; private boolean sortUp = false; /** * column identifies */ private static Vector columnIdentifiers; private JRadioButton verifyRadioButton = new JRadioButton("Verify",true); private JRadioButton signContentRadioButton = new JRadioButton("Verify and Sign"); private JRadioButton signAllRadioButton = new JRadioButton("Verify and Sign (finalize)"); private boolean isRevised = false; static { columnIdentifiers = new Vector(); columnIdentifiers.add("Login"); columnIdentifiers.add("Name"); columnIdentifiers.add("Organization"); columnIdentifiers.add("Code Value"); columnIdentifiers.add("Code Meaning"); columnIdentifiers.add("Coding Scheme Designator"); columnIdentifiers.add("Coding Scheme Version"); columnIdentifiers.add("DICOM Name"); columnIdentifiers.add("Id"); } /** * Constructor * @param dvi Current jDVInterface. * @param mainView Parent component. */ public VerificationDialog(jDVInterface dvi, MainImageViewerPanel mainView,boolean isRevised) { super(mainView.parent, "Verify Document", true); this.dvi = dvi; this.mainView = mainView; this.isRevised = isRevised; getContentPane().setLayout(new BorderLayout(5,5)); setLocationRelativeTo(mainView.parent); //Verify Button JButton okButton = new JButton("Verify"); okButton.setToolTipText ("Verification"); okButton.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { verify(); } }); //Close JButton closeButton = new JButton("Close"); closeButton.setToolTipText ("Close"); closeButton.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { setVisible(false); dispose(); } }); JPanel centerPanel = new JPanel(new BorderLayout(5,5)); //init model tableData = new TableData( getUserData(),columnIdentifiers); // Konstruktion der zufälligen Tabellendaten // init table table = new JTable(tableData); // Konstruktion der sichtbaren Tabelle table.getTableHeader().getColumnModel().removeColumn(table.getColumn("Login")); table.getTableHeader().getColumnModel().removeColumn(table.getColumn("Code Value")); table.getTableHeader().getColumnModel().removeColumn(table.getColumn("Code Meaning")); table.getTableHeader().getColumnModel().removeColumn(table.getColumn("Coding Scheme Designator")); table.getTableHeader().getColumnModel().removeColumn(table.getColumn("Coding Scheme Version")); table.getTableHeader().getColumnModel().removeColumn(table.getColumn("Id")); table.getTableHeader().getColumnModel().removeColumn(table.getColumn("DICOM Name")); table.setAutoResizeMode (table.AUTO_RESIZE_LAST_COLUMN); table.setAutoCreateColumnsFromModel (false); //table.getColumnModel ().getColumn (0).setPreferredWidth (150); table.getColumnModel ().getColumn (0).setPreferredWidth (200); table.getColumnModel ().getColumn (1).setPreferredWidth (300); //table.getColumnModel ().getColumn (3).setPreferredWidth (100); //table.getColumnModel ().getColumn (4).setPreferredWidth (100); //table.getColumnModel ().getColumn (5).setPreferredWidth (100); //table.getColumnModel ().getColumn (6).setPreferredWidth (50); // init selection table.setSelectionMode(ListSelectionModel.SINGLE_SELECTION); // immer nur eine Zeile auswählbar table.addMouseListener(new VerifyMouseAdapter()); // init Mouse Listener table.getTableHeader().addMouseListener(new TableMouseListener()); // Mausaktion im Header abfangen centerPanel.add(new JScrollPane(table), BorderLayout.CENTER); JPanel typePanel = new JPanel(); typePanel.setLayout(new FlowLayout(FlowLayout.CENTER)); typePanel.setBorder(new EtchedBorder()); ButtonGroup bg = new ButtonGroup(); bg.add(verifyRadioButton); bg.add(signContentRadioButton); bg.add(signAllRadioButton); JPanel gridPanel = new JPanel (new GridLayout(3,1)); gridPanel.add(verifyRadioButton); gridPanel.add(signContentRadioButton); gridPanel.add(signAllRadioButton); typePanel.add(gridPanel, BorderLayout.CENTER); centerPanel.add(typePanel, BorderLayout.SOUTH); getContentPane().add(centerPanel, BorderLayout.CENTER); JPanel bPanel = new JPanel(); bPanel.add(okButton); bPanel.add(closeButton); getContentPane().add(bPanel, BorderLayout.SOUTH); setSize(450,300); } /** * This class extends the DefaultTableModel do that the needed * columnIdentifiers * */ private class TableData extends DefaultTableModel { int[][] sortMatrix = { { 0, 0, 0, 0, 0,0,0,0,0 } /* second column: second sort criterion */ }; /** * Checks if row1< row2. The type of comparison is defined by cols. * @return 0 if equals, -1 if row1 < row2, 1 if row1>row2. */ public int compareTo(int col, int row1, int row2) { int secondCriterion=sortMatrix[0][col]; int result = ((Comparable)tableData.getValueAt(row1, col)).compareTo((tableData.getValueAt(row2, col))); if (result == 0) result = ((Comparable)tableData.getValueAt(row1, secondCriterion)).compareTo((tableData.getValueAt(row2, secondCriterion))); return result; } /** * Constructor. Sets the colum identifiers. * @param columnIdentifiers column identifiers */ public TableData(Vector dataValues,Vector columnIdentifiers) { super(dataValues, columnIdentifiers); } /** * Sets an editable */ public boolean isCellEditable(int row, int cols) { return false; } /** * Returns the index of the invislibe cols */ public int[] getInvisibleColumns() { //Number of cols in the model int cols = getColumnCount(); // Anzahl der Spalten merken //init array with size of invisible cols //( cols of the modle - cols of the table int[] invisible = new int[cols - table.getColumnCount()]; //Fills array for(int i = 0, j = 0; i < cols; i++) // { if(table.convertColumnIndexToView(i) < 0) { invisible[j++] = i; } } return invisible; } public void setRowCount(int index) { super.setRowCount(index); } /** * Swaps the rows. * @param row1 First row * @param row2 Secound row */ public void swapRows(int row1, int row2) { Object dummy = dataVector.elementAt(row1); dataVector.setElementAt(dataVector.elementAt(row2), row1); dataVector.setElementAt(dummy, row2); } } /** * Gets the User Data form the interface */ private Vector getUserData() { //jDSRDocument sr = dvi.getCurrentReport(); int numberOfUsers = dvi.getNumberOfUsers(); Vector list = new Vector(); for (int i = 0; i< numberOfUsers; i++) { //Load ID String id = dvi.getUserID(i); //Init User Data Vector user = new Vector(); user.add(dvi.getUserLogin(id)); user.add(dvi.getUserName(id)); user.add(dvi.getUserOrganization(id)); user.add(dvi.getUserCodeValue(id)); user.add(dvi.getUserCodeMeaning(id)); user.add(dvi.getUserCodingSchemeDesignator(id)); user.add(dvi.getUserCodingSchemeVersion(id)); user.add(dvi.getUserDICOMName(id)); user.add(id); list.add(user); } return list; } public void verify() { int index = table.getSelectedRow(); if (index == -1) JOptionPane.showMessageDialog ( this, "Please select User", "ERROR", JOptionPane.ERROR_MESSAGE); else { String pwd = login((String)tableData.getValueAt(index, tableData. getColumnCount()-1),(String)tableData.getValueAt(index, 0)); if (pwd!=null) { jDSRDocument sr = dvi.getCurrentReport(); String name = (String)tableData.getValueAt(index,7); if (name == null) name = ""; String organisation = (String)tableData.getValueAt(index,2); if (organisation == null) organisation = ""; String codeValue = (String)tableData.getValueAt(index,3); if (codeValue == null) codeValue = ""; String codeMeaning = (String)tableData.getValueAt(index,4); if (codeMeaning == null) codeMeaning = ""; String codingSchemeDesignator = (String)tableData.getValueAt(index,5); if (codingSchemeDesignator == null) codingSchemeDesignator = ""; String codingSchemeVersion = (String)tableData.getValueAt(index,6); if (codingSchemeVersion == null) codingSchemeVersion = ""; int status=0; //verifyRadioButton //signContentRadioButton //signAllRadioButton /*status = sr.verifyDocument(name, codeValue, codingSchemeDesignator, codingSchemeVersion, codeMeaning, organisation); */ int mode = 0;; if (verifyRadioButton.isSelected())mode = jDVPSVerifyAndSignMode.DVPSY_verify; else if (signContentRadioButton.isSelected())mode = jDVPSVerifyAndSignMode.DVPSY_verifyAndSign; else if (signAllRadioButton.isSelected())mode = jDVPSVerifyAndSignMode.DVPSY_verifyAndSign_finalize; System.err.println("isFinalized (before): " + sr.isFinalized()); if (sr.isFinalized()) { int result = JOptionPane.showConfirmDialog (this,"This operation destroys all current digital signatures. \n Do you really want this?", "Warning", JOptionPane.OK_CANCEL_OPTION, JOptionPane.WARNING_MESSAGE); if (result != JOptionPane.OK_OPTION)return; } if (!isRevised) { sr.createNewSOPInstance(); sr.setSpecificCharacterSetType(jDSRE_CharacterSet.CS_Latin1); } //System.err.println("UID: " +sr.getSOPInstanceUID()); status = dvi.verifyAndSignStructuredReport((String)tableData.getValueAt(index, tableData. getColumnCount()-1), pwd, mode); // NB: a new sr object has been created internally sr = dvi.getCurrentReport(); System.err.println("isFinalized (after): " + sr.isFinalized()); Controller.instance().fireStatus(new SignedStatusEvent(this, SignedStatusEvent.LOADSR, dvi.getCombinedImagePStateSignatureStatus(), dvi.getCurrentSignatureStatus(jDVPSObjectType.DVPSS_structuredReport))); System.err.println("signed: " + dvi.getCurrentSignatureStatus(jDVPSObjectType.DVPSS_structuredReport)); if (status != 0) System.err.println("Can't verify document. Status: " +status); else { verified = true; setVisible(false); dispose(); } } } } /** * This class listens for the selelction of rows and set the * text of the specified row (which presents a DicomScopeMessage) * to a TextField */ private class VerifyMouseAdapter extends MouseAdapter { public void mouseClicked(MouseEvent e) { if (e.getClickCount()== 2) { verify(); } } } /** * Opens a password dialog and verifies the given password for the given user ID. * Returns true if the user was verified. This function returns false only if the user has * select the cancel button */ public String login(String login, String name) { String pwd; while (true) { JPanel p = new JPanel (new BorderLayout ()); JPanel westPanel = new JPanel (new GridLayout (2, 1)); JPanel centerPanel = new JPanel (new GridLayout (2, 1)); westPanel.add (new JLabel("Login: ")); westPanel.add (new JLabel("Password: ")); JLabel loginTxt = new JLabel(name); JPasswordField pw = new JPasswordField (); centerPanel.add (loginTxt); centerPanel.add (pw); p.add ("West", westPanel); p.add ("Center", centerPanel); int res = JOptionPane.showConfirmDialog (this, p, "Login", JOptionPane.OK_CANCEL_OPTION, JOptionPane.PLAIN_MESSAGE); if (res == JOptionPane.CANCEL_OPTION) return null; // if (( pw == null) || (pw.getPassword ().length ==0)) // JOptionPane.showMessageDialog (this, "Please type your password"); // else { pwd =new String(pw.getPassword()); if (!dvi.verifyUserPassword(login, pwd))JOptionPane.showMessageDialog (this, "Wrong Password"); else return pwd; } } } public boolean isVerified() { return verified; } /** * Testet auf Klicks in den Tabellenheader */ private class TableMouseListener extends MouseAdapter { public void mouseClicked(MouseEvent e) { if(SwingUtilities.isRightMouseButton(e)) // nur mit der rechten Maustaste zulassen { TableColumnModel tcm = table.getTableHeader().getColumnModel(); // schon mal das Spaltenmodell holen int index = tcm.getColumnIndexAtX(e.getX()); // Index der angeklickten Spalte ermitteln if(index >= 0) // wurde tatsächlich eine Spalte angeklickt... { int modelIndex = table.convertColumnIndexToModel(index); // ...hole Spaltenindex des Modells sort(modelIndex); } } } } /** * Sort the table. * @param index Specifies the colum to be sorted */ private void sort (int index) { if (sortUp) {// Bubblesort for(int i = 0; i < tableData.getRowCount(); i++) { for(int j = i + 1; j < tableData.getRowCount(); j++) { if (tableData.compareTo(index, i, j) > 0) { tableData.swapRows(i, j); } } } sortUp = false; } else { for(int i = 0; i < tableData.getRowCount(); i++) { for(int j = i + 1; j < tableData.getRowCount(); j++) { if (tableData.compareTo(index, i, j) < 0) { tableData.swapRows(i, j); } } } sortUp = true; } repaint(); // Tabelle neuzeichnen } } /* * CVS Log * $Log: VerificationDialog.java,v $ * Revision 1.1.1.1 2001/06/06 10:32:30 kleber * Init commit for DICOMscope 3.5 * Create new CVS * */