/[H9]/trunk/docs/Websoftware documentation.doc
ViewVC logotype

Contents of /trunk/docs/Websoftware documentation.doc

Parent Directory Parent Directory | Revision Log Revision Log


Revision 218 - (show annotations) (download) (as text)
Mon Dec 10 20:11:14 2007 UTC (16 years, 5 months ago) by torben
File MIME type: application/octet-stream
File size: 116224 byte(s)
Added my first revision of the web documentation
1 ࡱ> SURX3 Nbjbj .bbNJlXXXl <lM|(8888MMMMMMM$O 9QzBMX]"BM88%WM88X8MM.K"\IX@XM8 pyh;lPJ&MmM0MJBQQMllBeskrivelse af webinterface TNTnet Da vi har valgt en ret ukendt platform til at basere vores webinterface p, vil vi bruge lidt plads p at beskrive hvad det er og hvordan det virker. TNTnet er en http applikationsserver hvor at man programmerer sine sider og moduler i c++. C++ er er ikke just et sprog man normalt forbinder med udvikling af web-sider da man inden for dette felt har haft en prference for fortolkede sprog s som perl, php eller visual basic eksekveret under ASP containeren og seneste har pyton og ruby meldt sig p banen. Dermed ikke sagt at (semi-) kompilerede sprog ikke har vrt brugt fleks er Java ret udbredt i form af JSP & servlets. TNTnet bestr af flere forskellige komponenter. Frst og fremmest bestr det af en selvstndig http server som har til opgave at modtage foresprgsler fra brugeres klient (browser) og udlevere det nskede dokument, hvad enten det er i form at noget statisk indhold ssom et billede / html dokument, eller om det er en dynamisk side der skal eksekveres for at genere outputtet til brugeren. En dynamisk sider kaldes i tntnet termer for et modul, og disse moduler ligger som kompileret c++ i dynamiske biblioteker (dynamic shared libraries). Disse libraries indlses i hukommelsen og fjernes igen alt efter behovet, dog er levetiden af en ikke lngere brugt klasse konfigurrbar. De indkomne foresprgsler bliver dispatched sledes at de hver isr bliver varetaget i en separat trd, dette er selvflgelig den mest effektive model, men medvirker samtidig at hvis man i sit modul skal vre sikker p at det kode man nu laver er trdsikkert. TNTnet serveren kan afvikles p en bred vifte af unix-ligende operativsystemer. Dernst er TNTnet ogs en samling software biblioteker og klasser som varetager mange af de funktioner man har brug for i forbindelse med udvikling til web, ssom parsning af input, generering af output, hndtering af HTTP headere, cookies og sessions. Dette bibliotek indeholder ogs de klasser og interfaces der er ndvendige for at lave et side-modul som http-serveren kan indlse og eksekvere. Desuden er der et database bibliotek som implementerer et database abstraktionslag, sledes at man ikke selv skal hndtere de enkelte database-APIer ssom libmysqlclient(MySQL) eller libpq (PostgreSQL). Dette bibliotek implementerer ogs en ensartet tilgang til database metodikker ssom transactions og prepared statements. For at programmere til tntnet skal man implementere hver modul som en klasse der nedarver fra tntnet::Component. Men for at undg at man skal kende alle detaljerne omkring denne klasse og metoden til at registrere sine klasser med hoved applikationen , men ogs fordi at mange web-udviklere kan lide at blande deres HTML kode med deres eksekverbare kode. For at hndtere dette har tntnet udviklerne lavet et srligt format kaldet ecpp. En ecpp fil er basalt set en almindelig html fil, hvor at man opbygger sit modul med almindelige html koder, disse formaterings koder kaldes ogs for tags. Denne html-tilstand kan brydes med nogle specielle tags som ecpp formatet specificere hvormed at man kan skifte mellem html og c++ kode tilstand, p samme mde som php og asp har deres egne specielle tags til disse tilstandskift. Dette illustreres bedst med et lille eksempel: Dette format kan selvsagt ikke fortolkes direkte af en c++ compiler da det ikke lngere er et standard c++ format. Derfor skal ecpp filen frst igennem en ecpp compiler. Denne compiler tager ecpp filen og ud fra indholdet genererer den en klasse der nedarver fra tntnet::EcppComponent, der igen er nedarvede fra tntnet::Component og dermed passer ind i tntnet serverens eksekveringsmnster. Outputtet fra ecpp compileren er standart c++ og kan dermed kompileres til objekt filer der kan linkes sammen til et shared library, der kan indlses af tntnet serveren. Relationen mellem .ecpp og .cpp filerne er den samme som relationen mellem .jsp og en servlet komponent for dem der er bekendte med denne type java-udvikling.  EMBED Visio.Drawing.11  Design Opbygningen af web-delen er splittet ud p mange separate moduler for at gre kodningen af det enkelte modul simplere. Datatilgngeligheden er lavet sledes at alle medarbejdere hos Serren AB kan g p sitet og aflse de indsamlede data og aflse kontakt informationer omkring de enkelte kunder. Hvis at det er ndvendigt at ndre informationer vedrrende en kunde eller kundens installationer skal man logge p systemet. Dette system har sit eget modul til brugergodkendelse og kan derfor ikke godkende brugere op imod andre systemer. Godkendelse op imod f.eks. en LDAP server kunne komme p tale p lngere sigt. De brugere der kan logge p systemet kan opdeles i 2 kategorier Almindelige administrations brugere. Brugere med denne profil kan oprette,ndre og slette brugere og deres tilhrende installationer. Udsende konfigurationer til n eller alle installationer. ndre serverkonfigurations parametre. Superbrugere, der ud over at kunne det samme som den almindelige bruger ogs kan administrere bruger accounts. Af sikkerhedshensyn br passwords aldrig sendes i klartekst og det gr de selvflgelig heller ikke her, da de alle kodes til en MD5 hash i browseren og da md5 er en envejs algoritme har hverken web-server eller databasen nogen id om hvordan at passwordet ser ud i klartekst-form. Hvis at man har brug for mere sikkerhed vil det vre et oplagt valg at kre web-applikationen via Secure Sockets Layer (SSL). Webapplikationer er forskellige fra traditionelle programmer, idet at da data i princippet kun sker i de millisekunder at eksekveringen finder sted s kan der ikke gemmes tilstanddata internt i programmet. Derfor er den slags data ndt til at blive leveret fra request til request via browseren, som s sender dataene tilbage i form af request variable eller cookies. Login data br iflge vores mening ikke sendes frem og tilbage i denne form s derfor bruges der en metode kaldet session data, hvor at web-serveren genererer en unik id som sendes til browseren som en cookie og derved returneres ved hver efterflgende request. Nu kan session afhngige data gemmes i server softwaren i et dertil indrettet omrde som laver en mapning imellem session-iden og de gemte data. Levetiden af disse sessionsdata kan konfigureres i tntnet serveren, og er fra vores side sat til 10 minutter. Dette medvirker at en bruger automatisk logges af administrationsdelen nr at denne periode udlber. Layout. Layoutet er lavet i et simpelt, nrmest klassisk design, med en navigationsmenu i venstre side og selve indholdet i hjre side. Da vi ikke har kendskab til Serren AB og ikke har haft adgang til brevpapir eller lignende materiale fra firmaet har vi ikke kunnet afkode firmaets grafiske profil og har vret ndsaget til selv at fastlgge farvevalg mm. For at ge lsbarheden er der til selve indholdet valgt sort tekst p hvid baggrund, imens at menuen er hvis p rd baggrund som ligeledes str i skarp kontrast til hinanden. Vi har valgt at bruge en almindelig serif font til indholdet, p nr teksten i temperatur grafen hvor at vi bruger billed-generatorens standard font. Al html koden er lavet sledes at det opfylder html 4.01 transitional standarden, og kan succesfuldt valideres med www konsortiets html valideringsmaskine ( HYPERLINK "http://validator.w3.org/" http://validator.w3.org/). For at vre sikker p resultatet er det desuden blevet afprvet i en rkke forskellige browsere: Mozilla Firefox 2.0, Internet Explorer 6 & Opera 9.20 Software dokumentation Ecpp moduler Se ogs bilag XX for en grafisk reprsentation. header.ecpp & footer.ecpp Disse to filer har til opgave at generere alt indledende og afsluttende html der skal bruges i alle de vrige moduler. Header opbygger hele menuen og ud fra om den aktuelle bruger er logget p genereres de relevante menupunkter til administrationen. Header srger ogs for at stte to http headers som tvinger browseren og eventuelle proxy-servere til altid at hente en ny udgave af et givent dokument fra webserveren, sledes at vi ikke risikerer at brugeren ser gamle data. Det er op til det enkelte modul at srge for at disse to bliver kaldt p det rigtige tidspunkt. index.ecpp Et modul som ikke har andre opgaver ud over at vise en velkomstside samt at prsentere menuen for brugerne. critical.ecpp Viser alle installationer som enten har en kommunikations-fejl eller hvor at en eller flere parametre i den seneste indkomne sms er inden for det kritiske omrde. Dette gres ved frst at finde alle installationer og itererer over denne liste hvor efter at seneste sms udtrkkes for den enkelte installation. Hvis at dataene er kritiske skrives de kritiske vrdier og der linkes til installationdetails. customerlist.ecpp Laver en liste over alle kunder registreret i systemet. For hver kunde udskrives kontakt informationer og en liste over de tilhrende installationer. Hver installation linker til installationdetails. installationdetails.ecpp Modtager et installations id som argument, og ud fra dette id vises frst alle de essentielle data vedrrende den pgldende installation, de fleste data vises direkte i deres tekstform men indikationen af hvorvidt at der er kommunikationsfejl vises vha. bullet grafik komponenten. Dernst vises en temperatur kurve via et billed-link til temperaturegraph komponenten. Nederst p siden udskrives alle de indsamlede logdata i omvendt kronologisk orden, med grafisk fremhvning af parametrene sfremt nogle af disse er i kritisk tilstand. temperaturegraph.ecpp Dette modul fr ligeledes et installations id med som argument og bruger dette id til at finde de seneste 20 temperaturmlinger fra den pgldende installation og plottes i en kurve. For at f dataene til at st i en hensigtsmssig rkkeflge nr at de skal behandles udtrkkes de frst i en indre subquery hvorefter at min ydre query bare har til opgave at vende rkkeflgen. Dataene plottes i et billede via et 3 parts. bibliotek kaldet libgd som er et general purpose grafik bibliotek. Med dette bibliotek kan man oprette et billede fra bunden af eller indlse et eksisterende billede i hukommelsen. Nr at man har et billede i hukommelsen, kan man s bruge funktionskald til bibliotek for at f tegnet forskellige grafik elementer ssom prikker, streger, cirkler, skrive tekster osv. Nr at billedet er frdigt beder man biblioteket om at generere et billede til et specifikt output format (gdlib kan generere til bl.a. jpeg, png og gif) og angive hvorvidt at dataene skal skrives direkte til en fil eller til et omrde i hukommelsen. Temperaturegraph har 3 forskellige faser / stadier. I frste fase oprettes billedet som et blankt billede og der skrives overskrift og der tegnes markerings linier for hver 10. temperaturgrad. I anden fase trkkes dataene ud fra databasen og hvert punkt plottes i form af en firkant p 3x3 pixels. Hvis at det nuvrende punkt ikke er den frste, tegnes der en linie fra det forrige punkt til det nuvrende. Sidste fase er at generere et billede i png-format ud fra libgds interne bitmap-buffer. Png billedet laves med en kompressionsgrad p 1, hvilket giver det bedste forhold imellem tiden det tager at lave billedet og billedets strrelse mlt i bytes. Dette billede der genereres til en ram-buffer udskrives direkte til TNTnets output stream. login.ecpp Dette modul virker p sin vis p samme mde som mange af de vrige komponenter i administrationsdelen i det at modulet har til opgave bde at generere en formular til indtastning af data men den skal ogs tage imod de indtastede data nr at disse indsendes og behandle dataene. Formularen bestr af felter til hhv. brugernavn og password. Nr at brugeren trykker p submit knappen krypteres passwordet med en md5 hash algoritme og dataene sendes tilbage til login komponenten. Nr at login-dataene modtages verificeres disse i databasen og hvis at de var valide sttes session data der beskriver brugeren og browseren omdirigeres til index. logout.ecpp Dette script ryder alle sessionsdata omkring brugeren s brugeren fremstr som vrende ikke-godkendt og omdirigerer til index. adm_customer_list.ecpp Dette er den frste komponent i administrationsdelen. I denne komponent, ligesom alle de vrige administrationskomponenter, undersges frst de tilhrende sessionsdata for at undersge om for at se om browseren der foresprger siden har en gyldig login-session. Hvis ikke omdirigeres til index. Dernst trkkes en liste af kunder fra databasen og udskriver disse til brugeren. For hvert kunde laves der link til hhv. formularen til ndring af kunde data og en liste over kundens installationer. adm_customer_edit.ecpp Denne side bruges bde til at oprette nye kunder men ogs til at ndre i eksisterende kunders stam-data. Om der skal laves det ene eller andet afgres ud fra det kundeid der overfres sammen med det frste kald til siden. Hvis at idet er 1 s er det en ny kunde, ellers er det en eksisterende. Der opbygges en formular til indtastning af felterne navn, adresse, telefonnummer og kontakt person. Inden at dataene indsendes valideres de med et JavaScript der undersger om kundenavn er p 3 karakterer eller mere. Grunden til at der ikke krves flere data end dette ene felt er at vi gr ud fra at disse stamdata ndvendigvis ogs m optrde andre steder i Serren ABs systemer, f.eks. i deres bogholderi-system. Hvis at det er en eksisterende kunde vises en knap til at slette en kunde via adm_customer_delete, men brugeren sprges frst for at undg fejl-sletninger. Nr dataene bliver indsendt kigges frst p om det er en ny eller eksisterende kunde og fra dette enten oprettes en ny kunde profil i databasen eller den eksisterende tilrettes med de indsendte data. Sfremt at det var en nyoprettelse omdirigeres til kunde-oversigten. adm_customer_delete.ecpp Denne komponent fr et kunde id og sletter den tilhrende kunde-profil i databasen og der omdirigeres til kunde oversigten. adm_installation_list.ecpp Denne komponent fr overfrt et kunde id via request URLen. Ud fra denne kunde id findes alle kundens installationer og disse vises i en liste hvorfra der linkses over til adm_installation_edit. adm_installation_edit.ecpp Dette er en kombineret oprettelses-/ndringsformular og databehandler p samme mde som adm_customer_edit. De relevante data trkkes ud fra databasen og vises i formularen (medmindre at det er en nyoprettelse). Nr at dataene skal sendes tilbage til serveren via formularen verificeres de i et JavaScript ud fra flgende kriterier: Den generelle beskrivelse af installationen skal vre p 3 karakterer eller mere. Telefonnummeret skal vre et tal og hvis det ikke er 8 cifre langt sprges brugeren om det er det korrekte nummer. IMEI nummeret skal vre et tal og skal vre p 15 cifre. Opdateringsintervallet skal vre et tal og skal vre mellem 5 og 250. Ogs ved dette modul er der mulighed for at slette en installation via en knap (udfres i adm_installation_delete) Hvis at det var en nyoprettelse omdirigeres til adm_installation_list. adm_installation_delete.ecpp Sletter den angivne installation fra databasen og omdirigerer til adm_installation_list. adm_user_list.ecpp Frst kigges p om at sessionsdataene beskriver en bruger der er logget ind med privilegier der omfatter brugeradministration. Dette tjek udfres ligeledes i adm_user_edit og adm_user_delete. Derefter vises en liste med alle brugere oprettet i systemet, og for hver bruger linkes til adm_user_edit. adm_user_edit.ecpp Dette er en multi-funktions komponent p samme mde som adm_customer_edit og adm_installation_edit. Hvis at der skal vises data for en eksisterende bruger hentes disse fra databasen dog ikke passwordet og vises i formularen. Inden at formular-dataene sendes valideres de ud fra flgende kriterier Brugernavn m ikke vre blankt Hvis at det er en ny bruger, m frste password felt ikke vre tomt Hvis at frste password felt indeholder en tekst-streng skal andet felt indeholde den samme streng dette er for at undg et fejltastet password. Hvis dataene gr igennem valideringen og der er data i frste password felt, s krypteres disse med MD5 og andet password felt ryddes. adm_user_delete.ecpp Sletter den angivne bruger og omdirigerer til adm_user_list. adm_send_config.ecpp Denne side har to formularer der giver mulighed for at udsende konfigurationssmser til henholdsvis alle til koblede installationer eller en enkelt installation som brugeren vlger i en drop-down boks den sidstnvne drop-down boks genereres i funktionen createInstallationSelector() i starten af filen. I bunden af siden vises hele kommando-historikken fra command tabellen sledes at brugeren kan se hvornr at der sidst er udsendt smser og hvilke der er i k til afsendelse. Begge formularer indsender dataene til adm_send_config og i begge tilflde vil dataene blive indsat som en ny rkke i command tabellen. adm_server_config.ecpp I dette modul har brugeren mulighed for at ndre de server parameter der er almindeligt tilgngelige hvilket p nuvrende tidspunkt kun er serverens telefonnummer. bullet.ecpp Dette er en billed generator der genererer den farvede kommunikations indikator lampe der bruges i installationdetails. Komponenten modtager den nskede farve og strrelse og genererer et billede vha. libgd og returneres som et png billede. template.ecpp og adm_template.ecpp Disse to filer er skabeloner der kan bruges sfremt at det skulle blive ndvendige at oprette enten en almindelig/offentlig komponent eller en administrations komponent. vrige filer dynamic/common.h Denne fil er hjemsted for nogle generelle udvidelser til C++ std::string da denne klasse fra naturens side ikke er udstyret med funktioner til at borttrimme mellemrum og andre fyld-tegn. bool iswhitespace(unsigned char ch) angiver hvorvidt en given char er et blanktegn (whitespace) string ltrim(string input) fjerner alle blanktegn fra starten af strengen. string rtrim(string input) fjerner alle blanktegn fra slutningen af strengen. string trim(string input) fjerner blanktegn fra starten og slutningen af strengen. string nl2br(string input) erstatter alle linieskift i en tekst streng med html taget for et tvunget linieskift (<br>). Dette gr at tekststrenge der i databasen ligger som en streng fordelt p flere linier bliver vist som flere linier bliver static/trim.js Indeholder en JavaScript implementation af trim() som fjerner blanktegn fra starten og slutningen af filen. static/md5.js Indeholder en JavaScript implementation af MD5 algoritmen. Denne implementation er kodet af Paul Johnston og er hjemmehrende p http://pajhome.org.uk/crypt/md5 static/stylesheet.css Layoutet p siden er defineret i dette Cascading StyleSheet (CSS) dokument. dynamic/gd-cpp/* Her ligger en C++ wrapper som indkapsler grafikbiblioteket libgd, som er lavet i rent C, i nogle relevante C++ klasser. Disse filer er lavet af Kevin Shepherd med en del input fra Torben H. Nielsen. Ecpp eksempel: <html> // starter i html tilstand <body> <{ //Nu er vi i C++ tilstand //her kan laves C++ kode }> /afslut c++ tilstand og g tilbage til html </body> </html>  u!!!!~3355:+:::@@CCFFuMMNN]NNNN OJQJ^J6OJQJ]OJQJmH sH OJQJmH sH  0JOJQJjOJQJUjK
2 OJQJUVjOJQJU$jCJOJQJUmHnHsH uOJQJ'$%G
3
4
5 & l m "$a$NNN>?AgopKLTct!u!!!!!!
6 & F
7 
8 & F
9 !!#%$&$1$$$$@&A&S&''5'(O)P)f)*u--8./d0e0p01M22222}3~3345556h89::+::::;;;v<<A===3>>
10 & F>>> ?d?e?x?@@@AABGBBaCbCwCCCCE2F3FJFFFFG
11 & FGGHHHHHHHIIJJJJKKKaLbLpLMM(MtMuMMMNNN]N
12 & F ]NNNNNNNNNNN
13 ,1h. A!"#$% Dd 0
14 
15 # A2Q~HDZja[F-D}`!%~HDZja[F wk1xYqLTG曷 oH΅"aI޶z[[=Қz1ibN{Wrjbr g-A9KkR XKδ/ڽyo+²J{ͼߛ||YD1?Cd.8VVkk*#~E?ρh/LM 2otMf; l=.^o!C_
16 Y<fЇgF; <Qg6<
17 ["`0Kfa`Cn$ ><id1}wBEN3<~\ 1Pɰob=rg~<–;d q;+2/l|e`K<Ù, ZF5cQGDs60.qF{wtw` (>SJ:;85sS4*y+8鱋Kח;E~9NNܧD]y(3+dNrwwqFۂ0=} n7qX͛ Yeh<s2"0fuVڡ
18 " r0j$< ʳ!M4|U}l
19 y6VX-/
20 ee;<";@.n/)!"l$<I>4|2-;)Qi!"R, ?frLC'V-v OV,{REE,Q\ 20SaaH¨wOPF4,F<TudU4γ~A |9=bMgA>;੶멦qzu1[]{yz<
21 N2.u'jd~Ҳ`oȞUg.Ǭ8vZ qj-G+ƢՏanBgxnNpQnWGM*ۋC:آh3u"[Fsdf
22 {9 ]H|=LjoR F J[yy# TOP?N)<G])]j:5S%-XO%@lqu̟(Eϋ{I!LCs@#1$A irM)ȑ!W|9e˗74>c9+Y<²;,Sv&X|MO3[1:ʙZiCUGVuB1I ~W'wd~MmZψ1#:;!&m]]V^.V+jEVX4:AIq!?OQjP㰮W]*q(OjYOO*-JJ^"!k%ݤz$1YK$#[ENJ(M)]L #(W||'-@)1_֊\y@="[VLE&"U.aLA2U_ Zc:xl2nGXǎ=o1oQ3y~1?c#o1C4L }o:vyм,/{R8p:+ּy(S؉j6\Bjٳ^ŘuW{cɺt:L˘V{\Orn0J7&X]K;x{#`uuc4}QwNifrrēO
23 
24 RL^|g*_D\tڅ⺝->vb`^1'%{yf~n*]vev?3M"Ju>uŘZ,`S3U5S{%x\m1URgRc7W3OuS]WZjϫc|ǟUJMq+D䏩%Qs>Oe,§>5䡪#[F)s 6/nVVZRu#,}N폓.]:' .?1:Fscɳ <{DyK http://validator.w3.org/yK 2http://validator.w3.org/
25  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIKLMNOPQTWZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~Root Entry  F0h;VData
26 JWordDocument .ObjectPoolfh;0h;_1258720542Ffh;fh;Ole
27 CompObjsObjInfo
28 
29 FMicrosoft Visio DrawingVisio 11.0 ShapesVisio.Drawing.119q՜.+,D՜.+,@ `ht  VisioDocument
30 YAcVisioInformation"SummaryInformation( SDocumentSummaryInformation8Visio (TM) Drawing
31 AcHiahR8 !fffMMM333IyFwͩ|oݡHxUJ:DT5I[1hXT@.
32 /UbW##_b0zGz? L\&B1r&b%U& !oM $d ) P?;H$,Q,
33 & #&J , 5& ?D#//?M?\.? CA 
34 ~,,,'q/%P6$Y6 (}k?l)?"U   U%A3# o >S@#B:_a_ReUUeUeUeUeUeUePONODN`_ReUUeUeUeUeUUeUeUU/b SR%;5OM%>Qiq;RRRRgg Rqh>Qj /A^F' %p3:|bFpT#| |
35 | vi?=Os<34x,,,/RQmeY q]U@QvovL__q____OO_OOTYA`,X@L&/d2?ɖQ3YҨsUΡ̦xΟ@$"Jʼ& ͥ*@d2A??ϟJ[D! f:45ŧ5ŷ5@ 0 0D$#  
36  Q#b ;
37 Chߠ
38 Y ,00JDNrq(NN㊮NN(NN&&uc7D)KXXFNvvK&KD#KD#-D#NHGDB$KzzDKq%iz4
39 }1T\,Eu9fdhT,W'0΢Uܮ5E0 fI$[OmOC%ߑE##HZߪ  E,3Y&4JY&5&6<s9FaBaj+h8 8?&!3"DE=T;ܯ?w?@??8&t,'5UR^LY  Y7akKt//BJhuizpsĝa.1DTcAcpvOpM KKuhdX(G:iX IT[EEh.D#E,ah-50zG#zpvb
40 aHGmc/QP K{\Hp_ hd? pA?%?7?I?[;<t5j!
41 OO*FQ///F/K]SEn%cO@OOlE$g\Ey[EO_!_3_E_W_i_{_____VB506,HM.`e^MIa,>PbQaƒ2q? a%oXIoQfdoooSEX_O-OF6EDpE66Oҟm2Hg;pbӏ_
42 ,X7R[,<WbӤ69sc Rb"a2T^<C="ACoor<G5C+=Oaﲶ2TIR`zI6;]ї@<ұwr1r / Ma&3@MZ)gQ#zƎҨVB;Z`Яܯ@u[/lsx0aq&Iy$6ḢUxzb?btb}m8~{FwƿK $ub{+ߴPXEU 5GPH]!\$j-OOOO>asuYq3~Q?WTf<6S$F_x<?5z$P !1w7dR D6c 6^5O0'^8ExEE@($'n/jR-VfuOOdo{o_0 }G9kO5oZk__((]Tq?Q$6H/~ ? qBHE?d+|=P<#qjb(Ogoyo_:_L_^_'/ӸooS;ao-W,'H=xWWCN/r?=*C8Qҵ2%N7MH:R<Wb`lmXO#o|O2u!` EܕsD"Iw_#_k_}X:Loo$6HZԁ-CC U)2b@bGqb\n¿Կڏ.@"ҡnπϒϤ϶"4FXj|v !;rWbGV -?QcuW -?Qcuv2 *<N!sGC
43 .@c Yk} //1/C/U/g/y/y"#Р///G.bLb/ ??-???Q?c?u????????OO*O<ONO`OrOOOOOOOO$ͩ_)_;_M1rn_________o"o4oGoYoko}oooooooo 1CUg)%&{p?b=~Eb -?QcuKԏ
44 .@RdvଟП⟏%'((bdk\wsb\nȯگ"5GYk}ſ׿ 1CUJqZ)砂}Ϗϡj0Aq"4@FXj|ߎ߲*<N`r)*|+MkbjbQcu*<N`r&8yy,-_qqb<{ub/"/4/F/X/j/|//////// ??1?C?U?g?y????yy.{??>@N;OMO_OqOOOOOOOos __/_A_S_e_w_______q=8\1 oqN=b;bh1oU/0Mo_oqo:-b@bG3bDbפooooojm yt 2DV rb ;0} 1CxUgd3<Ib娏8i2Џȡ1 L-?Qcuϟ
45 .@RdvЯ⯀dXw7:g4="\nT9/2 ſ׿ 1CUgϴsϬ*<N`r߄ߖߨ U56 H@RdvA$6HZl~<dFw+&C{Orq_##Yh(v'
46 Rdv_H ////A/S/e/w///d
47 o:1/(7CHx/?!?}n|E?W?i?{???/A? ???`T/L?Od'Am[YE
48 +A GkOyJUO@AQOOEY3qO贁Nk*_(Bv__ooE1o'2q7Mo_oqor6Uj(DbH{7_V03WX@SO>a@HkDvH74jooږ YDo~OOOODVhzxC(>aRM7?S?\.?pPA,6{٣*٢bbbl~ 86HZl~ÿƏ؏ B Vdvπqџ YD$6HZl~ P Э!#5GYj2225Gҿ,>Pq ϘϳϏX!"0BXj>aSzUFDfP h>$/T 6D
49 UUF~@x<?F
50 BP(?43P? J+1:{
51 bj/b::I!H? ?^  0$1!`Document,daW aY rS a[ ,pS oo lS ,sO cPn!ri*U"ek"oO to !W,b] s cY ]fw ow"ae X!!fK rQ ^!iK n(#L!e} sN",jK !ee !!sK"i(!bO !1!-,S xY 6E4g",IG0OY 90Hi2|e^ {5kU o??)!)!2)%$`S F.| <`!.kbs{kWbsFzFzkF ABB
52 HOZB K?$6߈kdz:<
53 Drag thuesapWonodwipeK.a0r)Utd upU:N:b~߿\.??a߿,h??4DH D
54   =hj8>T ]]9 AUF~? ?F\.?QR6 
55 ijYA >HTIA zz
56 Illu}`l?LJTTlvu
57 Vb3%<& <!J
58 |>bX#S?P6 "rl*5"7b%HX"rbk"%TX"*31=&S"rU5 W@S"և3145 `?Copy0igTtk(c)k20@3kM0c0oKs0f21r0#Aa0i0n.k Al>@ 8sBBe@e0vT@d6@3 /`V0s_SFB6@cTm_!#5B0`S"7- iC0r5K9M3 7?:6" b4$J<&P%&?Lh7]L@ls4>Uh 3 @)W120D,@S"JSqSF?< %3"M{8Q o.o3=`oe5ekaoqcEA3o(oc@lHzs%„'&/@l/B95#<& QOuhSqouq?@brA
59 L`@dV#%tdTAQeE9 G]pv@OS?l lA]
60 ]hhC"Q6 @b#e7b 3lqX(b\U‰Y`!S"g?**2VQ<! -S"MR6HScu~5⢯Ms'2cy51+` 0@@heҿ+RT Mll~2!!IJ2Jl15P>  PB`1s03 B`QS"1~5AAWPP`iGDu*JȲ5ABaQ2` RTBocTBQ$H6!e
61 |ȿH~5A"
62 MJk?GZG#iC %:&BpXB/A/@bb 5BeYFuc-gZc5ߜֈ{8O&@PGR_ Q);M_>m w =_H'+Zu׾ _@tBeQBZ&Fi?w/#<][n?
63 $\]ZaĬ@OD?q`SB}F<@lPD[ op?+$J% UFDfP h>$/T 6D
64 UUF~@x<?F
65 BP(?43P? J+1:{
66 bj/b::I!H? ?  0$`pProcesS ,funO tuiM nW taS UkW Bm"iO ,UlM wO hm ra X!#,dm l!,pK,jM i] e*K ,m"sM"i"d%Ab[ z!!T#-Sc uxW 6$gm"uI0OW 90#2$|e^ d55kUo9?K?B)!)!2)%$` /| <`!kbs{kbs>F4Fzk%>F >A2
67 OBu D(2OVhz~ Drag thuesapWonodwipe+.cs*Wfuci: oObl-=l)cka!dh-1
68 H D  # =ih#4>T#3 A5AUF~? ?F\.?P6 Tuv` ??uJ
69 bkrr r.AšJYMJU5 !LK@#I;!@$5 `?CopyrigTt (c])r 20~ 3r uMj ch osb Ifp"a!rd !ap ib n r AUl h(s"e eh v d/`Vj s_SFBcTm!#5N~"06!5' #%0 5K)M6G# G'? *lW btrr&/Lh=L@l>61Uhh7PY!"  *#"JT3FFFr\F
70 BM)(aOAO#"A5N_IQEEFR_Ov[R52O;EBrA
71 RS#")(le
72 @j 7heGoj@8=ook8too q(b5@MCW?0v0v H"SFAr@K\/SqMRB_<NhCFi{z,%)t@@r uGj5q5{#5"C#"mZon+EBT MKK,"!"2JK\3;%Vq>#  @!2`a!sp s.2`A#"2,%q1BXVqajGDu*5AଚbA"` R"o͒c"4ڑAEDɏ,%A"MJa?)E[4C/G## %(p&"p"!0~Rb  %BevmHY bg|4G5nX)(S&@Vq2b~߿\.??a߿,h??4D_ Q);M_>m w =_Hu+fs k}bk_J?3U}FClQ#RL!M?
73 .X]{~a<@"D,Dlfr`~&@BT[ĥpUFDf h-TYYU?~@x<?F
74 ?BP(?h P?k " <ou]ofu2/u w` C&}nect&r`D
75 e-?{
76 H
77  ^   -}|5 p`I`V?}`xa833ސ]3σ3u 33?, ?Gxpx^& This coUnetrWaumtUcl#yrebtwe h *hp3is.HDD @# =hZ#<T$#3 2 U@bX?\.uP6
78 u
79 `u bA@Wu  ):/*P mu` W?ht~SuZaJU }@-?Dt7'2"sA-tBk'2"u( 2rq?@[I ?$%ۿ?
80 @h[r&Z  "#8*AL2- br>#@L'} V6lX-1u. Bj2u2Z2j2#u9r#ULH/MB#AD5 60`Vis_SE.cTm!#20AD%`;Copy<0igTt ?D1f@M)@c<0o+@ofdBUArX@Aad@iV@n3@ f@Al@ \HsBe*+@e<0v@d3@J@=#x#
81 A G{?9#n"E!0144 M70#AHB
82 53_lj#PSV6U8l>(UhnE qJ$&9"(Fn_g5Fe#pheo'T !! Jcxo)vR2'"U75a%O3W_74b5-6R `F2 5au\@|Q:0b)`R@As)@E T@xd@Di ei=G]U6Tg'2"qV!DHAn 6SWaHw+* O`EW
83 )FtGl'#[(7F
84 \)e?fYDHlPU !"#t4b (6@Tn@ Z.}C-L@7"AU !"#$t4b (6@Tn@ Z+/}C-D@B7"A%&t4b (6@Tn@ \_/
85 A-%$37X@$X.IR@XD/IR@X/CRH<(H<(H<(XE\XL0 REXY0 RE|Xf0 R(~i"S4gf8B!Bl?4'/"Gl=./?<X/dP5Dtos0t4( U`, LSFDTyB uh$T UFb (6@FTn@Fx<?8F
86 BP(?J_P ?a/<e @?\s nu ` """u ) ( @L&d2?r-(\.,(s.sU!&/ o!! &f O1O1 ` Fl wcartm0p2
87 v?285\H?Z?l9C n0e0tB r?2?4eT>A>A uk 4
88
89 A
90 A#HA\D K DKDuKD}AK}AHAKAHAKAH1K5DAKAH
91 AKAHAK
92 AHKDAKAHAKED>AGCP>Auu -au%a}Ac.aA/aA0
93 q113qA1$qƑA21q
94 A4>q5KqAc6XqA7eq>A/Aie}uc\Ap1}cKEZeAc}AU 5yIExH?@^@@~?@֘"?ߒ?QbIaC Kqf"*<"b}Acbz*b7Bt0 
95 qQ"OXaц\M
96  V~2pXq|>כbXܛ ?smhퟨe+T "\!! 3!<n~Dߟqq"\AU%Sid01t`1pѠ
97 g4Tfx## (0X\CiX䯣qDu3a q mI
98 qTFŋ'9 WˣqσIdϙ!B &8@OS?!&!&l8DA>qU` AEmOqWA1
99 WQo勎pib!RU
100 璅×!$b!0sU_?mr7A d $6HZlDjF4@ɏۍAcb(:L^pʟݯ$6H
101 ơ2˯3//W/i/%7N`R=/?οL^ OOϦSOeOϛO4_N`r߄ߖ&8J?no"F?oj|!t!1;?:YUUCs0?R:k}HFSFB< l1Ɇl1 5 5%7If35t?v2dj8e2dkQ/// //-"/&/z/6(E&cop
102 g0l r$l1{/
103 <{SFP50?B?R5H1:Q??_??OO%O7O mOO_gɏ40SOO϶"SD)"UET?_o%o7o)Tol߇ooogoykeZqÿN`BTfxBÃ56);M͟˟Q,7I[mI[mǯٯEWiM]/ϿϞp;MW?i?ϟ?MUO?M\r߄ߨߺߜ?:_8J\n%_7_NNMSNчN!&m75Ae5%C"ObA!`!5 @@L&d2?@@ пdeQ!fAPmQ!u`u%S`sQy82 @8p
104 /@)Q"pTArw%@z3DqlrrrpSsv~15A]&A2D1LQQR.C]-T:%WApMSsxr tNL p5Azsqr Qhpfd2rqǿ?@IQϕ?GOTpJTMQP/JMUw/&ɔ5Ay8/@Ned5Ns.D")5<H2 ?FeA!#B!IuM_B_4BI_4d.A_LTAoP>oPobotoooouoooo"4wPvxb~EqϰϿsrqB0BTfxFGOяMQ!*<N`r̟ޟ&I>P%Anȯگ>@ !-#dՒ!{@ !QAA,QIdEE׹ZGvV<h3@_MM?UHMUS5BB`H!! % &!"`р5l1ZU- h|3 SNEZ6|>5PbX5b#̖m#F|5+*$5B,!,!MR !$BnD///B"O45Bn3?5SiE@e1*cpΰg ??0?#4MRKQ0 5UWEni̸?YOhdKLDjzUMQ8Z@_ %5A E\OOAd@-.'_9XR_ZӺAOT_Al_~_S ozQzk4HAI(988@tV@OS?,$#o8yn4k1 n I HHN!$"QMYxOlu%ZwBSze_P#>{',$q^eI~t?F5-Ugv:*s.`@RdvwE yѸՖyѻ//'/9/K/]/o///֯?////ίG?n{OOoOOO_O _A__e_NUUϽ_r_T՟e*8c?HZl??TOO ݃Rk?}228<AhfT>oPobotooooooo(:L^p$6HZO1<1!ԏ:)69-?` (6?@8|`R`rksA'`0f0f*ϜD ţ%&е-\?Q"\T#o2q ?/L&k?KAu;BY$F0a(,5)O!XT#0e.M#'$&դ)W ;  9xk1kw4 ??=?g5w4`?OO?Bj¨|ؕر&
105 _!3&R 76Z!IuJ<6L>!k"OO0%8cdk_#5`soo߂C+`+]cop&l*r*]&]l&nPa
106 [foxoo߬=pջ~5*ӿo>- ctZb%/<ďVɌ Ϭ.T"# -9?Q:
107 }:C5I[m 2 9u
108 w?aEB!r;%%bac@xH@@L&d2?@wnk˿W q0@ qu` `MuB `O!mꜽ٭@("G@) rp9%VB @z3PVhp%ũƕϱϺνquC%%S/e 1i%գ!4)#l lrq!ՍWVD갖!8/' tN9zs %Ӣ ќoǶѴ2r"?@IV5?+3快pt 23Ev&?a/Dsѓru<oㇵ3#$}qW07??Q?U7#%r-辵B!~B!4"4FXj|DjF4@Ͽ4FbaB!&'&8J\_q⃘&5"Ә&ߥܑba 2DVh?
109 "4u_qRdvOt ~A*`_N`sd1|QI]w rN9?@$4<@B?@H?@`^ݿde(u@`up7(:q 2` (6?@fLHFń?NؑŹboonqevoA/Q!v "r\xXvxw@/R/d/v/\w>l////د(?:9#f@-dW?i?{?1szVu??????0 O2MMROdOJA~OOOOOOOrfq9_ TqV_z_______wpZW hPcg٧2oDoVohozlonqeDCU<%I|q\yƁtג}>syy#5GY$7k}=6ŏ׏ ]CUgy&2M>՟矆> 1CUgyYP̬ S-}p`'),)|v>5*m??@~?@u%.?Q N15\"r$1C0Gե-jycߞ >59|>%bX7:F#[mvH+$"!!!$3Bn {///"34S) #5S&ared lOibc0b1ymAgP/??#4M 0p'0pCSi?GOqoM:D 8
110 B 5AyeE'OOAd$-0_'XyREK?Z_%^BQ@xu>:DIힴ88V@OS?$#\o8>)3> I JN$QMx&u'wQ z?e_4#._'$՛q?e~Xt?F5̡ȯm p:D=M|rZzaA ?@L?@Vjտń½
111 <b#(=Tn@:Ż@ȟS ς Z!߷EWiݙV~W_߰߀S '18J`/;O?z0>PWfxK@ou( zHUZU !"#U$%&,U-./0U1234567t4b (6@TnC@ TaJKC-TmBU7
112 A@XJORH<(EX7K R\_i1_PJ@?`iK.PDDaiDK.PU1( UO"D&aUAUNj )h"T}
113 +U- \ |ɉ&Q-
114 -H*=(XiwPE!Q//,/fGArial UncodeMSj (  R$fSymbol$67fWingds*7
115 fEArial"z@D/ R$fGSwimunj (  R$fGPMingLUj (  R$fGMS PGothiqcj (  R$fGDotum"j (  R$fGSylaeqnj (  R$fGEstrangelWo dsaj (  R$fGVrindqaj (  R$fGShrutqij (  R$fGM_anglj (  R$fGTunga"j (  R$fGSendyqaj (  R$fGRavi"j (  R$fGDhenu"j (  R$fGLath#j (  R$fGawutmij (  R$fGCordia Neqwj (  R$fGMS Farsiwj ( _ R$fGulim"j (  R$fETimes NwRoanz@D$CLLBCL.BCM%B$C%M5BCZM9B4CM=BCMCBDCN9B̨CLN;BTCNMBܧCN:BCO:BCHO9B<CO9BԂCO;B4CO8BăC-P9BCfP8BCP:BdCPCBDCQ>B$CYQ8BCQGBGuideTheDocPage-1"Gestur Fom aDocumentViso 90Flow NrmaVi}so 0Co}nectrViso 01Viso 02Viso 03Viso 10Vi}so 1Viso 12Viso 13Viso 20Viso 21Vi}so 2Viso 23Viso 50Viso 51Viso 52Viso 53Viso 70Viso 80Flow MarkeFlow GrayBasicCostDurationResour cRow_1visVerionProces(Dynamic onetrTextPoWsiinDocument.2Proces.4,Dynamic onetr.6Document.7Document.8.Dynamic onetr10.Dynamic onUetr1Proces.9.Dynamic onetr12.Dynamic onetr13Document.14.Dynamic onetr15883|_SE3d_SG3L_SG3DKS%G3$k TG3T@%TE3dk)TG3kBTG3kaTG3kzTG3kTG3kTG3$kTG3DkTG3dkTG3kUG3k*UG3kCUG3k\UG3kuUG3$kUG3DkUG3dkUG3kUG3kUG3k VG3k$VG3 k=V!G3$ k^VG3ļ_zVE3ܼ_VE3\@VE3d kVG3 kVG3_VE3 kVG3 _VG3DLW)G3<K>W G3@^WE3,@bWE3<@fWE34@jWE3,@nWE3ĴlrWG3dlWG3TbfW.G3DlWG3$lWG3jlX/G3klDX/G3lsXG3klX/G3klX/G3mX!G3lll Y/G
116  !"#$%&'()*+,-./01234567UfU
117 U UUUt4b (6@TnC@ O0^RC-tpB*7
118 A%t4 dpB_^
119 A-@7AJ@X^NR@dX^6RH<(H<(JE XJ` REXW` RUPT/_a C{N
120 } w"4FX,h(j5@@(;6#\y
121 K_,eBdYiUX P Q|/A<k/w
122 FC_D\9oy^i0uR$_iP1S+!Lp) 'vKhaitciQwP2ͬ <YT?g _*'"Ddidu`H%ei`.g a6Oh+'0tS `ht Grundfos A/SGrundfos A/SMicrosoft Visio@Cr:GtRAg2 EMFlRlx@VISIODrawingLQAgBh ??d(@Q(Bh@Q׏=>>EFFMNN#%%[dbfqnfqnV][^^^mnn7;:݀UVVfgg=>>݆033=>>￿oooHOM=>>ݚfqn7;:*,,7;:OWUs|ϳ=>>ݳ=>>ݳ=>>ݳ=>>ݳ=>>ݳ=>>ݳ=>>ݳ=>>ݳ=>>ݳ=>>ݳNOO .//î۳ɌbzKתת߻߻߻߻߻߻߻߻{b{b=>>MUSfqnfqnfqnfqnfqnfqnfqnfqnfqnfqnlqkqrifqnfqnfqnfqnfqnfqnfqnfqnfqnfqnZca=>>ݳ=>>ݳ=>>ݳ=>>ݳ=>>ݳ=>>ݳ=>>ݳ=>>ݳ=>>ݳ=>>ݳ=>>ݳ=>>ݳ=>>ݳEFF),+7;:7;:7;:7;:7;:7;:7;:7;:7;:D@<YJ=UH<HC<7;:7;:7;:7;:7;:7;:7;:7;:7;:033&'&翿rwFxwFaٯ͔nɎeΗrϙtўzdzLj]dzɌcݷ͕oٯῨLj]ת͕oӢўzîɌc̹Ɍcݷˑi۳ῨɌcпզϙuզϙuῨɌcпɌc۳UVV=>>=>>=>>Ɍcݷwxx=>>=>>=>>iTxOӸEFF*,,fqnfqnOWUӢўz~~~V][mxunqkU7rL),+ݳ\ebd>r&''hroݎ{a<TPMMNN~~~fqnݺbkiooofgg\ebݍ033=>>566033MUS^^^fqns|fqn=BA7;:=BAfqnyݚfqnV][7;:7;:V][fqn݀^^^fqn݀^^^fqn݀^^^fqn݀^^^fqn݀^^^fqn݀^^^fqn݀^^^fqn݀^^^fqn݀^^^fqn݀^^^fqn݀^^^$  ~~~ńWӢҟ|wFܿwFɎeLj]ϙuLj]ϙu~xxMyU}q397fqnfqnfqnfqnfqnfqnfqnfqnfqnfqnfqnqrifqnfqnfqnfqnfqnfqnfqnfqnfqnfqnfqnfqnfqnfqnfqnfqnfqnfqnfqnfqnfqnfqnqrifqnfqnfqnfqnfqnfqnfqnfqnfqnfqnfqn@GE^^^fqn݀^^^fqn݀^^^fqn݀^^^fqn݀^^^fqn݀^^^fqn݀^^^fqn݀^^^fqn݀^^^fqn݀^^^fqn݀^^^fqn݀^^^fqn݀^^^fqn݀^^^7;:7;:7;:7;:7;:7;:7;:7;:7;:7;:7;:@>:7;:7;:7;:7;:7;:7;:7;:7;:7;:7;:7;:7;:7;:7;:7;:7;:7;:7;:7;:7;:7;:7;:;=:7;:7;:7;:7;:7;:7;:7;:7;:7;:7;:7;:"%$fgga׿{ڱwFzKҟ|ńXˑjį׿Lj]ϙuMNN#%%7;:7;:7;:Lj]7;:7;:7;:^^^ϙu=>>033ݳOWU1)#zO\eb݀qM˹Zcaݺuj[~~~~~~ݎ{//-EFFEFF^^^fqnhro566=>>566hroݓ7;:=>>=>>=BA^^^fqnݠݺȚ݀^^^fqn݀^^^fqn݀^^^fqn݀^^^fqn݀^^^fqn݀^^^fqn݀^^^fqn݀^^^fqn݀^^^fqn݀^^^397fqnfqnfqnfqnfqnfqnfqnfqnfqnfqnfqnfqnfqnfqnfqnfqnfqnfqnfqnfqnfqnfqnfqnfqnfqnfqnfqnfqnfqnfqnfqnfqnfqnfqnfqnfqnfqnfqnfqnfqnfqnfqnfqnfqnfqnfqn@GE^^^Grundfos A/S Page-1n DocumentfosProcessDynamic connector PagesMasters(`ht_PID_LINKBASE_VPID_ALTERNATENAMESAOh+'0 $1TableQSummaryInformation(DocumentSummaryInformation8CompObjj0
123 L X d p|Torben Hrup Nielsen Normal.dotTorben Hrup Nielsen32Microsoft Word 9.0@dqz@#@o:@Yh;
124 D=՜.+,D՜.+,4 hp   Grundfos=K"  Title 8@ _PID_HLINKSAlWhttp://validator.w3.org/
125  FMicrosoft Word Document
126 MSWordDocWord.Document.89q
127 i@@@ Normal CJOJQJ_HaJmHsHtH L@L Heading 1$dh<@&5CJKH \aJ H@H Heading 2$dh<@& 5\]aJB@B Heading 3$<@& 5>*\aJ<A@< Default Paragraph Font2O2 Nummerliste 
128 & FDOD Nummerliste2
129 & F/6^/`6*O* Page No.$a$B>@"B Title$<@&a$5CJ0KH\aJ @O2@ Hanging Indent$^`$$OB$ BottomCJ.U@Q. Hyperlink >*B*phJJ$%G&l m " >?AgopKLTctu% & 1 @"A"S"##5#$O%P%f%&u))8*+d,e,p,-M....}/~//01112h4566+6666777v88A9993:::: ;d;e;x;<<<==>G>>a?b?w????A2B3BJBBBBCCDDDDDDDEEJFFFGGGaHbHpHII(ItIuIIMJNJ]JJJJJJJJJK000000000000000000000000000000000
130 0
131 0
132 0
133 0
134 00000000000000000000000000000000000000000000000000000000000000000000000 0 0 0 0000000000000 0 0 000000000000000000000000 0 0 0 0 00000000000000000@0@0@0@0000N@!2>G]NNACDEFGHNBJ:X8@z( 
135 B
136 
137   B
138 S  ? J#pT~4A|'<6<<<<<<===b?v????? @@@@@@@@@@1A8A}AAAA B'B3BIBBB CC`CsCCCCCCCDDNJK#%FG%&k m ! " =?~@AfgnpJLSTbcs$ & 0 1 ?"A"R"S"##4#5#$$N%P%e%f%&&t)u)))7*8*++c,e,o,p,--L.M.....|//001122g4h4556+6667777u8v888@9A999992:3:::::
139 ; ;c;e;w;x;<<<<====>>F>G>>>`?b?v?w?????AA1B3BIBJBBBBBCCDDDDDDDDEEEEIFJFFFFFGGGG`HbHoHpHII'I(IsIILJNJ\J]J~JJJJJJJJJJJJJK333$AfLTu#4#e,o,BBGGNJJJKTorben Hrup Nielsen'G:\trunk\docs\Beskrivelse af webdel.docTorben Hrup Nielsen+G:\trunk\docs\Websoftware documentation.docTorben Hrup Nielsen+G:\trunk\docs\Websoftware documentation.docTorben Hrup Nielsen+G:\trunk\docs\Websoftware documentation.docTorben Hrup Nielsen+G:\trunk\docs\Websoftware documentation.docTorben Hrup Nielsen+G:\trunk\docs\Websoftware documentation.docTorben Hrup NielsenrC:\Documents and Settings\20495\Application Data\Microsoft\Word\AutoRecovery save of Websoftware documentation.asdTorben Hrup Nielsen+G:\trunk\docs\Websoftware documentation.docTorben Hrup NielsenrC:\Documents and Settings\20495\Application Data\Microsoft\Word\AutoRecovery save of Websoftware documentation.asdTorben Hrup Nielsen+G:\trunk\docs\Websoftware documentation.docC Pޞ_H}uP dW;G IĐ;5~D4d4MLG ,h"v,U)7p.8^7!`I4#ELIĐm*/]p`R@3pjW6rsoXtNJh ^`OJQJo(h ^`OJQJo(oh pp^p`OJQJo(h @ @ ^@ `OJQJo(h ^`OJQJo(oh ^`OJQJo(h ^`OJQJo(h ^`OJQJo(oh PP^P`OJQJo( Vh^`VOJQJo( ^`OJQJo(o pp^p`OJQJo( @ @ ^@ `OJQJo( ^`OJQJo(o ^`OJQJo( ^`OJQJo( ^`OJQJo(o PP^P`OJQJo( Vh^`VOJQJo( ^`OJQJo(o pp^p`OJQJo( @ @ ^@ `OJQJo( ^`OJQJo(o ^`OJQJo( ^`OJQJo( ^`OJQJo(o PP^P`OJQJo(hh^h`. ^`OJQJo(o pp^p`OJQJo( @ @ ^@ `OJQJo( ^`OJQJo(o ^`OJQJo( ^`OJQJo( ^`OJQJo(o PP^P`OJQJo(h ^`OJQJo(h ^`OJQJo(oh pp^p`OJQJo(h @ @ ^@ `OJQJo(h ^`OJQJo(oh ^`OJQJo(h ^`OJQJo(h ^`OJQJo(oh PP^P`OJQJo(h ^`OJQJo(h ^`OJQJo(oh pp^p`OJQJo(h @ @ ^@ `OJQJo(h ^`OJQJo(oh ^`OJQJo(h ^`OJQJo(h ^`OJQJo(oh PP^P`OJQJo( Th^T`OJQJo( ^`OJQJo(o pp^p`OJQJo( @ @ ^@ `OJQJo( ^`OJQJo(o ^`OJQJo( ^`OJQJo( ^`OJQJo(o PP^P`OJQJo(eh^e`o(.e5^e`o(.0^`0o(..^`o(... ((^(`o( .... ^`o( ..... H H ^H `o( ......  ` ^ ``o(....... h
140 h
141 ^h
142 `o(........h^`.h^`.hpLp^p`L.h@ @ ^@ `.h^`.hL^`L.h^`.h^`.hPLP^P`L.h^`.h^`.hpLp^p`L.h@ @ ^@ `.h^`.hL^`L.h^`.h^`.hPLP^P`L. Th^T`OJQJo( ^`OJQJo(o pp^p`OJQJo( @ @ ^@ `OJQJo( ^`OJQJo(o ^`OJQJo( ^`OJQJo( ^`OJQJo(o PP^P`OJQJo(h ^`OJQJo(h ^`OJQJo(oh pp^p`OJQJo(h @ @ ^@ `OJQJo(h ^`OJQJo(oh ^`OJQJo(h ^`OJQJo(h ^`OJQJo(oh PP^P`OJQJo( Vh^`VOJQJo( ^`OJQJo(o pp^p`OJQJo( @ @ ^@ `OJQJo( ^`OJQJo(o ^`OJQJo( ^`OJQJo( ^`OJQJo(o PP^P`OJQJo( Vh^`VOJQJo( ^`OJQJo(o pp^p`OJQJo( @ @ ^@ `OJQJo( ^`OJQJo(o ^`OJQJo( ^`OJQJo( ^`OJQJo(o PP^P`OJQJo(h ^`OJQJo(h ^`OJQJo(oh pp^p`OJQJo(h @ @ ^@ `OJQJo(h ^`OJQJo(oh ^`OJQJo(h ^`OJQJo(h ^`OJQJo(oh PP^P`OJQJo(h ^`OJQJo(h ^`OJQJo(oh pp^p`OJQJo(h @ @ ^@ `OJQJo(h ^`OJQJo(oh ^`OJQJo(h ^`OJQJo(h ^`OJQJo(oh PP^P`OJQJo(U)7U)73puP _p`EL;G ,h"!`Id4MC ;5~8oXtm*/]6rs         1R;        1R;                                   q                          q                 1R;        1R;                          @tItI3tItIJ`@UnknownGz Times New Roman5Symbol3& z Arial?5 z Courier NewI& @Grundfos TheSans;Wingdings"qhKJU&ff 
143 D=!x20d=K2QTorben Hrup NielsenTorben Hrup Nielsen

Properties

Name Value
svn:mime-type application/octet-stream

  ViewVC Help
Powered by ViewVC 1.1.20