From a3abd430ec21d462a243acc730c00e17fd72428e Mon Sep 17 00:00:00 2001
From: Anton Kudryashov <qubabox@mail.ru>
Date: Wed, 14 Sep 2016 16:48:02 +0300
Subject: [PATCH] tmp

---
 MES_Wind.suo             | Bin 44032 -> 0 bytes
 MES_Wind/frmMain.cs      |  18 +++++------
 PRMLibrary/PRMLibrary.cs |  66 ++++++++++++++++++++++-----------------
 3 files changed, 46 insertions(+), 38 deletions(-)
 delete mode 100644 MES_Wind.suo

diff --git a/MES_Wind.suo b/MES_Wind.suo
deleted file mode 100644
index a3c467cbace9bd729edf0bc9503bc7e7313298a4..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 44032
zcmca`Uhu)fjZzO8(10BSGsD0CoD6J8;*1Oo3?K{^5@29pVu0X(|Ns97i!m@T{2v8F
zDg^%i|Nozbfq_Aafq{XQfq{XGfdL%n><kPH91IK$oD2*M+zbp1JPZsBybKHsd<+Z>
z{0s~Xf(#4{0t^fcLJSNHVhjun!VC-yA`A=+q6`cS;tUK7k_-$C5)2Fs(hLj?vJ4Ci
zpfn=Gz`$U~z`$V7z`)?iz`&ruz`&r$z`&ryz`&r)z`)?nz`&r&z`&r!z`&r+z`&rv
zz`&r%z`&rzz`&r*z`&rxz`&r(z`&r#z`&r-z`$U@z`$V0z`$U{z`$V4z`$U_z`$V2
zz`$U}z`$V6z`$U^z`$V1z`$U|z`$V5z`$U`z`$V3z`)?hz`)?Zz`!8Kz`!8Sz`)?d
zz`)?lz`)?bz`)?jz`)?fz`)?ez`)?az`zi~z`zj9z`)?mz`)?cz`)?kz`)?gz`)?o
zz`zi|z`zg)^&2SCL4E{b5PPWLAclN~e1;MR1qN4!Jcbg6B8Ey>RwjxTV_=2nc~E(P
zPg8)OU0@sEB}QhDB2WZ@!?1`UpCOCElOc~GjUk`Gm7xM8OEeZ^V1nBZ3UgvLg3>NX
ztv^F4LkU9;LncEW7^gD?Gn6nSGL$f+g53g2Um$h3unGecBPcC`@(Z!{gUZk~Py-3s
z4@%QerC2GD{h<5{vKxf4Dnb(ksc(jgfzm4|-av5zVuQ*6P?-;6gTe@u|3PH}h>u<d
zfW$!M0Eh-*SpEl<2cR+lBnB!6KxGSv4Z@)O4a;}v`CkQ^m+<9(kQpEh3Ud$*!pQj_
z#3z*hL1hp~9jFWd(J+jh|3PIDDF1`XDNtE}FaHNY%Lq_e5z4^85XQj35YE8B5W&E}
zu#AC$A&P;4A)0}KA%=m0A(nxGA&!B8A)bMOA%TH`A(4TBA&G&3A(?@JA%%f~VJ$Qa
z(is>SG8h;bG8q^cvKSZ`vKbf{au^sGav2yH@)#Hx@);NyHZw3V6f!U{Y-3<xC}v<_
zC}Ch=C}m(^C}Ut?C}&^*=Oj>Wu3}(dsAgbbs9|7WsAXVasAFJYsAphcXaJR|&S%$8
z=8SfoD4Y0iYVCHAGoUGhII4}&nZb%7h9Q)pm?4#+h@qGvhQXa7l_8&@fFXmSlA)L(
zhar(6i9r`k7ci87Wnvgy81fmC8A=&)8B)RJ4oIIbgDXQYLp(z`I47ns7%{{!po_&Y
zq%jmR<TAK36fq=%?a*ULW+-Mz=dM>Mm=PoXSAhHOt;87zL1`S6AMjz2596>o-<83i
zA%MYyA(Ekv!H^+_!I7bWp@6{!Tr4Cq#4z}P9iPaM!w|y|!jQ_4%TT}&!%)Xi#!$>)
z$zZ}@%;3xban|00sb3ps^oO6bV0Sn^IiVDk)zF;;E_L%6au|vk^cYeYau{+LR2a$_
zOc?YS3>fqnj2R3Vj2R3WEE!Z7{21~XTo@`D@)!~sav3rik{Qadxu1mKCsh7`>QzuU
z;le6pl)s>M#V)9UgzN|9WvEiD6gl>T+A3C{LKs|+<1ha~?Fp<FLj^(QFR1JUm7Ac5
zg$m=PK<y!L<CzHiq17Z#^Fa24%4krVj9B|Yb=7RBi7f+^e|;Ge!MPlgO-{eMR+c5d
z-@s9C(PGK%d?#SO0r^OeiGcxBss=DKFx+8A^e{jrND0FmGTl#HmNsUvWH4ngV^9H?
zS0xO=3<cmqAd>-<`SsvM0_ph{QUc;LF^C}<+$u_8NM)#i7AG76tb5<juIZ|NztEF!
z>gh&M$^(TF2!kSY3Q`ZOT9<)g9}*uVj|Jl|enHJLP*bRgA&nuCA(<f+>X5C>9tJLR
zcFifib;7n^X^R1}LqLuJVO9o)%M1(*>)99>W`b%Qb_RxYMg|5IP6mdh3=9k}I2jmj
zGJbFdrCw01VsRT0LOo366@bLWzbS(;gE@l{&iHp`$OqS6pf)Ud<u|T$fN8QP11QfF
zFa$9qG8BW`r$r1t42cYt;CdI5k0j<W$qPz<xu5mo^_1o>9P!AtASf{Bpri*-OS^;2
z`~%8;<kjD}lGNru!oAVW4XhzgSJZdTdaHmfNii@?5`?ssoP;3lB9O0kGB7Y45@uj<
zV`N~k7lrgMIV2evoERAxs-+khdKnoQtYjD%dKeiPKFcyN1Tr!(6v{*TcHjXGP-=zN
z2Mj!*DmpH#*d;ZoG(DgwwKz4eB(WqjKQACLIXf{uRYxH#wWv5VKhM_CK+iz0i>B$%
zgu#@-g24c1`U_^LWXNSmV#sI6VaR7lXQ(8j1%WFCVl&$lZ|Y-Rc9>bu^W5&I=4all
zvA5L$)pMYr1z}J;&1GO<_{hM(FqMIUp^6F8rWIj^w2fyoL)xvTEReSBX%>ilEGwjq
ze2*2<jt*mEVBlb6VCZINU}#}vU@+r^w5PXmGBAM5FX3WfSO6La;AUW$%)r3#mK$Pz
zIu8RwBm)D(eI5uunitYOzsL*Wd-Fls#((%A_LT86Fw`<KFjxpOFnnQTV3;h-z;Km;
zfuU6dQi_561i}V-209APr8y;~MX9!Vsih@Fi8(q70i{VfnaSR%l_B}rsd=_Z2F7Wo
zY36B$hAE~7iN=ZS;KT+d7#J8>N_{hvi}H)}(@ONhGK)(SbAn4sQ!?}Qz)3JYwFu4#
z$<NOT&&*57FE7?}Ni0bW$t)<=3&_mNOH9g11#?_0N>cNRGm|oNGD|A;0zfIXxFj_%
zIaS*y6U0a@0_h7b$uCL;rE_jdlRsJBX9f8@k9wX)@+Qp7&;W7H&&f$m2IXFml`Nnj
zVg>n|6I8eefCx~!<i^>gCzStOz~Kin0~r(3ZinSMkh?(rK=NuaVoPC|>p(rnel`Y%
zOYnMtQ2QG+h6dA(jRv(pLHPiNv8h291C0x=g9;L|AJn&pD#c2{><5imfZTvp5t<-q
zOy>wxECgJeW;6IOWP)o|SU(mf4(eA!m13np_JhVZU}YUvMQDPcF;h?<2qYZFP|Oel
z9)rsPm*W)-!QlG54BWd*1u4Ocl^B@7<E$XRgD_sjP)X33EU0Aw;=*VK2Gn$c7|{o*
z!i}fVz5M{`|AX2>pfNj88$6Yvm?4uPogoh#a*&qL>X^QN_h$aQ`eb$WuU~(DKL>?3
zD11P84if{zDg#iP6T~Cdr?|raBm)XZ(0EERcr+w{0n{Q)2ai$YGAJ;(F=R62Fo4{t
zz@WiU!C=8)#-Irv-2nCBL28Q`@)^>=<FH}ilvoPxVJLt{BTE@l7&001859@{!6O0&
z3^5F049*NO49N^d3?&RP48;sZ49Vc}r9SXj5@<w*I5&haWHJ;m1b{;h6pE0RWgfVx
z5AqiwEXTma2pY!&jn{)hlaP9lJZK&OTnvN9+*28n7)lw^8PdUS2nYACk{L1>K%oUv
zjUOv8FfoG0B|&zBFn-k#S<oB;Xsi;%b74TW--)4!A(bJKA)BFqAs^gBEdh_Mfz)Ed
z8VpQ~pm9skxF)gogXS+lV|gI+(Cr6}e}lSNppi0Aoaf=S9W+<M1fCZG&6N;qKWN?r
zlpjF$gGSgWOM{@X@*IX-hBR;rgr!6npMinY6iF)=LEH%%gB@rWfy%99h8zY^zD@<_
zT2M@YFlZizwEPd!1!~cNXk<*R7<&2xl~j2QDGb33`3$AtQU!k<q{hI+2ugRLc>oZN
z>;_zH(3qMZ)PcC|NAzrPnFA76BV+s#G~N%=3&QC3`+|pa^TG3AuyN>ohH{*_P=|qu
z5tN@m^Bu(cA2k07nk&F&Klbtm*(D%d2yDW@#0Z*m1<julYd>iI6PEv>(SR@zJTFUp
z8U(dpL7HLtoz(o#YN%(R2WpU!Su1iesIoIKurO?3bg?q9GO((4G&V4Hv~)AowJ@|W
z)HN}4GS#&(H*?l?F?4dav~)Ihb8~a4t?_jYjtBLmVqgrt<l=&&{H&T}tC-T_)S}{;
z^wj)<jLPDi#3bFE#DbFif|!*2<kH;KyprOW+|=Uu^31#xBRDIjpeR4RC^1(rxwxjL
z+R@C}+{DDuLf636#8KD8&Dl)X!oti^*TBrg$impb)Wpo(q;{ZPoK}>Zo0yqLf{S;;
z!r0W((#h1-(n;6I(%4bg#KO!>*U{9#P1nrH$=t=+*v!$w(7CoIAjsDzGpQ)Cs4@n@
zBr}`~igI(HW+9m5IDLSU2Q08tQj0Uw^HPgQa5^IcBP^3;I#4~)fZ7|70bbCYQVvo}
z71DmpVn}63W+-8RjYq<Ui$QrFgsm8u7(w$Xpfw!CmOrTFFX}uXa!D7!kPmLzmw;Qp
z*jqvd3`~rm_8e$VnOOTlYdy3<lOW*sCvN*;eL>j7AIQJxSdW2;5!9ap*$u+z^4R#u
z{s+~wpq2p4kC1Rq1NUb@^)IN^0%-?gGYPaNhV=ChpmDG|P=|$qfq~}591DXB)e|kv
z9gQB=5)6!J6(wla0+j9t+;gy!h4_kxu;)OH15k&;1zzIgEH**yK3|4Xh8zY^3Wltm
z0rg2s!M#dQ&la?L!Il9s)@BV}qgBn|2%Xh-WUyp#V=!gVWw2l{1Y=zW69zK|C#aY?
zgBgP}gD!&$gCT<xgENCAgC&DAgE4~}7`iajg2%hd!M)@}a9<c?uRjB*_XJw&1+x`2
zpNQRUkkSpLmIJ)*jGAt<2Cp=uripqCK@6$jkp$2jP%1+WgCj#8LnVU(gEK<_LnwnD
zLmGn<ya(;XkON**f(U(3%agk9LA0Mqbqi=^Q#FGzgA;=rgENCGgBgP{gA0Q$gBgPh
zgENB>11KecSSAd*42}$r3{DJ|47%XiI9CQ|1~&#H21l?uS8!?}HYGr8H3g?6P%3j}
zuw-yz&}A@Uuw*c1a0J^58l5o%+iJ>Sz~BaUlM{mzgE`n`#tdc*j^MQF3|>uxJ8cpZ
z|A7ji^@P+62gn-TG6u*<R4LNB9MA|0p>;Va;H537>vBMAbcz|`8Op)qA&_-B1>jXU
zpmlRe;88Bnx<OFi8rD<+jYok-p=f14x|?8jchK11nD&A~0u-vC)lZ-@5HxNDat)}M
zT{1{q0~*r;jWB{*6rj<iVg^0%I9D-)KSL5j7K1MXXsi;__5ig8K`TLv8N$FTXhHtK
zjg=Uf7(wHCpfP1)+drTY1z2_J3|<#j%mA`2lOdI%9A`@tyBk2`@1XU`pmn^&+K=4+
zg0*r%?cf6NEGj6hil8+LC@iqs3ljy|53(1uju}M5#PQK-3=9k>AXO7XC_^6D)<g!-
zI*$|vn0p}g5~0}#(AsIz+keRZXJlaD`nr;Nabx3FxAvTiduAT~{}<$TP(Gd=H#^cw
zGtFZufA;n}W-DZDpZ&2ulzYT?)y|?fpVsJY1*rpJbafyxY#7}hkUmfws*8cPvtO8N
z2yv}JfUJ4vBXdq;c&;gd><9QqW*iY0CIh?93e=VY<@6#3C-A5zX#BGny!yKYy4(q}
z2Vw)6VL<FGEut(0%|;^XRnQVtNV!k|o+CljGL8(Ok`uH5HHjgIp%T1a477?KG6x3P
zsnLPg)gBC)3@PBUCyybRA%`K4!415c1XLP<R`X)Z$H-!!`A1N>2gAs6xY)?$52&@8
z%#aPPe?TM7ps)umuLYHd`1;*2v&k9%Enr|^0Ih@qnE?q`*eFK`LlFb0#Zm$fNzhtj
ze0^{O3df)E&40TvWHJ<i9Ek^$v;GxiW*BJFjDdlnk%57siGhIuv>%`aw7!LbfuW6o
zfuWs&fuVzefuWOufuW0mfuWm$fuV<ifng$aeL5%(CqUVg7$9qHK&uZyYkQ_KFfdGK
zU|^WR09pAri-CawwBB?(17wZPJg7d<I-P}3_F@JGh9wM;m4P6$moqRhtYBbZSjoV^
zu!@0!VKoB-18C0#NDj1iU_Ao^!v+QhhK&pi44a^4Y++zv098t$RgWNbI~W)kKx@N5
zYmIj^Ffi<4U|`tGz`$^jfq`K^0|UbWsJ=rCkQEW2H33H%7#NN*Ffbg4%AI6jU^vCV
zz;K#@f#D2P>>L9F!+8b<h6@Y~3>Tqdpp}j{7$9qet}!q$T!)H-+;NM6f#Eik56dTm
zg|4LA3Vlewqz`XtM7eA5m7xeZLwLCk+Rs)*H#Z^d1+5paps~HUTREV?&jhTtQ*Y}7
zXjX=S;T=|62yajr3hf5a`fL?&n<1Yen<1A0Gy;{)P|Tpf5XNA@V88&1Z4im4_-2SW
z587RYPX&HCCttS^P~S_B!H>a}A%wvV+#3h=Qp*`YvzXZoIt*dpRs(2t2WYjjEqreY
zsErS5@gTb%GD-$&4dJ&JCM(0h1fHINm1i(<d~`2#Zzo6%Y@HRT#RFP<63mbRc6SMQ
zcM$%y7a;xQ)PJD)f6x#oNWU9{BZDi00fPwxXjI9NK^HtSX$T(mF=Q}gaA7cJh==#e
zFhj?RjQSt6Uc}EIWIJfDDKYkg;?<YI8NA~OwNGe9hW-7}y{#Y@;A?+?`oy3WM<8{$
zFlhcCv`-MUo(7Z#aH&HU2ldybK#7lt{V$+6K-P=S2H6j?7lzU0vGEUs_7oFszcDr=
z;9}(1e*(0}nP~g*uYd%#e_?y1L16%Q7#_x1&|Yb%{h*QpGTH-LcZ0eA4pC=<awuw_
z1R)11=|H>i{u=09{Aau1lk?u(XY(p$K7s~0K(0c@@cDGdf&!Psb!7In2dYoCbo08-
zXVHr+if6O^Qtyj>3<^eM-+|bqEHt3)ssz~N5E;|X=;;SC1qRCM5E-ol{EU#T^N3lZ
zp|>so;ui!7@#SlT00W2(n&d(ff+&IrfOdWno__+ZxT$8K-mC+4=7Ff`9`fgbK<yt#
z@EU_mhBAg!24{ve2GH(jTLupBi4(X@wr0o!?{Nmj#Hv9u(hk}MT>_p9&0|Oh@90Gr
z0l5~`$A-+$Adjy?WDq25j{xpnhe34PZ;e=Q4Jzju!1KBIN0un>%LOn5G5CU4<|FEz
z7zWH*2XYcg8<{-~Vrvr2QDn&25oqQFv>O{X<_0P(W)STb&}b8A<_NU^otpD=pnAO+
zY0eI|ZywZ30j)oUxfYh%AgPgb*W`fPq}1Bgk4R;pTo3B8q@%3rhnzPw3n_H}klB71
z3jIsM<I<(dJR4iK3dJ`!9ZLFjcBvg`Q4gpE0>Yq}1&zpo*dPo#aRPIm#mPB10DWF2
z!j^%--6`1F1AHzHXciZ?5(<<`X?wZ@dM<;cQ^*`^7Q+Yg>lUCBWI(MhkpDo~$vM~=
zG>QXCF_4`E=qnLGsz4Yt=8^_ptC9mg&&Y)Vw00nr!JWaHA%r0ayq>@nq!4`Kku`%M
zgE_bt4`V@E;{X4HMo%Cv0v-HN0!fr$eGmd951A_m?c4^<c0$De|A(B7ln<VB1(oiw
zy$6_WZ$0p??^FhmS&rZ}9*`9tAd^61sOE#>9V7$8pp#4>agDs54itO7;C)4)bvdB<
zV9<^e*vLT)ma&5v_*en*ITSJA`2x^}aLBqJJ?P2+V+JGeC<y2zoiy<N4bX`sptR)U
z2|5b};v)K`B}n;<K4${jUxivjgHjG=S>x{H;|V(XX>hn2|4a|at)Nwn^mZ%yUMx`C
zV4&OriEY%{7~~f0<sLDm7;$w3EdP))@}|dt9-od3pfp*;kO|%m1sZ<?t<ivmCuqec
zz2g=Vp6Iy;wEhfKav-lH!JU6VC#KQc-RNl&yX#zBeLO*_gZ6uG(Q7nNxeq#V4YgH|
zT~rUe8U|F$K;|Hm!21X@8A_0L`h)615C)a~ARmEFl%jW-gWAyOXPMygkuO6&xc&gG
z9Ru}|^uRODpm|nMiiezk1o96E!~6s~Aq(OsNUDV8a@;#BLFp7!2Z2`eKz1`KpyfHx
zY9s75BKDdPcRokdk}(XRQxibr*q}LiJ%$K|T!tL*8dcD#P9PtFFw9q=bHE_JqF<dz
zN=!k*8a6i$S%r=}jzDYP2D5KKF@ycA3{aeaFf3kZU+ZJ<*@AL+9s?-fAlil4RD#Bw
zVCf08@0OY)ORz8iof`*<O-L#jDmf0ch7nX=f@ZoPdsPtS4Wcwf-B*Gfp2+C{v`2R+
zh5>4upP2F$Q40?C*v@4rW=ICl5Q6HDB%Ea{XasR6#vQE20L`}KF%;tTALu+ui2nv>
z-2pn&0<?o3{ahkY{sLiGIRiRy65@}+p7KET2cl*Nl{28W1+KDVu*VO`{h)b2&`1FC
z$z`Cp0byADAWDY8na)7Hc~Gw@5qySk6?pFpq@{u@W<V#Z4#gA)>c<p-*NTI7#zX2h
zTz&+dBn$E5;EXl&ot>Z&>2wBSYAVqAxr5nfur;g1_+{|7|54jXuvo(0M+2Q!42hY+
zUXo)Q19fHqtvmv);3~jb=MMf{1uD%k`)i;T-T3?0L$wx0<TmVSa<JFJppku0%>|k(
z1)V>Jt2_stCJxD4gR?v*6c2;l{h&T#9z#CPoDZ7A8O-62t3Cy_8DKLTxY8D4Y;AC+
zEl|4~ecXm{i3ZwZ2Z^!4UK@e@hv-+hfY<LrX7@lXBJAbbU~dJ1R*r(^FhFN^Kw9It
z#|=R@77Wdp0*%QhGJsAXgs?z;krL>>F;M#)l=DF2P`Le$XaNqbREn7@Ve=_NwZ;Xl
zU&b~z4w|WhoQwmjqd`66q0~bL_4Gj_qM$Sinq35)M2R|s1iGUIyWer^MGu9+9`7KZ
zU>oni9q;Hm(0x4E+cfBHGSJdp?6C|}iSEO}UdzDTjjgW@x`PP6Z;^EkHJ{_FUvc{!
zn=W*p4~N-f(0R<*;~vz`2kmSI%^jf6J)?)jV9(zmzaaNnaOZEBN^~C%r(O-{{5R}z
zPE6kjJ!BB=vccIW!sRDOy9{&|DJfxr?)$+%&V_wk60=tbI+dN2kib_b4E{8Mee{oT
zn!u)S=%op4zCeyo*!Ty&G(pG=^iUc4vtzj1{-EA0_L(*GP#C%^e?TWEV=o^-qcW(Y
zPUyZK9^+=9z2n4&0CH|Z4~@az|HHK&0eAloT?e|4hu?e`Xy+24xiQ$t2PiZ^t4)W>
zS~<|3b8KtrK>mRF3FM!Vw(bq&cUNCG*m3lr;2;Tu&T9hga)IpAf!rU?F>Lo_d4ktt
zgT|2{w^t(H#Rob`qm%&@9-#4F(8_(tt?9pzcB{d5`cZH90i`FW!Oq_(hTggh8ubF5
zN1e-%2R{P~UxI+0e*n6(8MMm`pIVq4=u9LS8{K};y}qDxzzV=24RZ-hH72b=#`zcc
z><6944LZLVIUF!;MTmgTUjX?Vh7mHjS;+Q-QcXVeL|@PeY^mUVAdr<7s3(13H&1~K
z|AX$k2kp8BnTY#lVbD5c%zX-o*$zDh)Y||-K0#0ayx>#BAhSF4>q$e(dBl0Ou(Ans
zW;gmSVfx=+joo!uc$rSGU!9@;n^`SQ@}cxa(49)KG{qqZxuX!q&jDZlr|0RMpI6dD
zW?2hr^MUT~%wfo30G-_rYVRUuAwj7hG-m*sy#mc-l`w$DkRT&xxK>evY7$V20%1^1
zI#kz`fc%cUvJ-Sr9%kr(RG|BKB+X=k#@kRs1u+^AV}W{**ylshLvE<16_`(9V+)vR
z1*QVs$HQ?ID(D^z^fZymfWBrGJtPq0YC~}j9JCi3+0W>{8(!;BAonPMX2L<MJ95Em
zABq?fq5HqnQEo#8)d9nI2MuWC2sz&MpzUYS`T6DGb6*gn(dcOcF>*AtQao&L3S>kX
z)T2fX0f;=hZ-?7X9MC))Hh=4ZPpSd!*+C8g(7G4|4t55ew*fl$9QoXzLxP|)5`vv+
zzgrs8_5|%MLOxLkn<%8s3_0Z@i=ph1|GfsjOW>0pLG3#b9(?C+fX;LT&Fmul2686|
zgHGN6jdWu>c>}xeA!!_>7lg5yjDF?@NF4}+%01ejoPy2OF$~y5Au$PZ6}FQQevsLJ
zAnt4gN=GMX**neMnzY7Su|NFjw&xKG`Yf)2;uF@x0>vZp**PFScHG89Uhj4&gdeCU
zMC@4CyPC(_KA$~RQSn`AN|x&L^T;PZf<g{gXp%A_2J5qe&b9)%3$lA3^UO-j6Bi(7
zLV(7W5*Z2@GQjN?&^;}g3^T|~|Fm!m>RDGD=iaSld9!QUBCV4`<(4}#L1hpuea>ZK
zV7SRijT@{9o&RbHiab0RbpHv+WuWmSkn8X$g-e0X-Upr44iX?_zajX>Fpx^@7&QK<
z&A`9_TJ=P%{qvz`#)C{GY(MC>T98WY7-T=lUeFb$AR4<WRMABY3=CJGLXZ|9Y|jqz
zdVNsNfGWa6f$qNsjk1AiH)8Ea9)FBspx#(C?h`U_pFs^;UyFK&1^$z8LTP>`8MZnU
zRI`HC2B4pYgMNw+=)`rz{TrZmAE@3P9_@Wls}_Voi4o*0#M%c)8XmkSM2wyp0P0`(
zcn;N3Hc&eRG~NmuWdo%`5Qe41;WrZx@*N1nd^l8N4mSFUE9OShh&d=eK^PXNLwnp4
z<P#7E`36?c4ZnOy&Wf0!npe?FS<JZ%m<m|DgW?|45*SIjcy!(iGU^Z7O$OTgn8E;>
zLB>ogu#z7=tqko_kI-z-@M!6ej_ku`w;(eb#EtB`ItK@U)=Gfx*BywnCLuX-G=+j{
zB@hPHOrvv8ptczV2RnmOC@5r*G2!tq3uNUOY|!|Z9s>gd=md6R$DcrBU!Xe{L52~w
z-yEb2Cnjh8-A(A7k~j?|Q3B*|7$#9GRg}Z*2GOJ%h&txXzyMmqL5dkIbRR!Q9c_Zl
rZi!F&ta9>ARi0V88S}izsB55;{z0LEjIsL)G#`uY{sZi)ho2|_+bo8A

diff --git a/MES_Wind/frmMain.cs b/MES_Wind/frmMain.cs
index 45420cb..0337f1f 100644
--- a/MES_Wind/frmMain.cs
+++ b/MES_Wind/frmMain.cs
@@ -268,17 +268,17 @@ namespace MES_Wind
                 }
                 //Create a PRM_wind class and add all the properties from above
                 PRMLibrary.Module prmwind = new PRMLibrary.Module();
-                prmwind.powerLines = powerlinesToPRM;
-                prmwind.powerStations = powerpointsToPRM;
-                prmwind.prognosticCells = prog_wind;
-                prmwind.prognosticCellSize = prog_cell;
-                prmwind.prognosticAffineCoefficients = prog_aff;
-                prmwind.climateCells = clim_wind;
-                prmwind.climateCellSize = clim_cell;
-                prmwind.climateAffineCoefficients = clim_aff;
+                prmwind.input.powerLines = powerlinesToPRM;
+                prmwind.input.powerStations = powerpointsToPRM;
+                prmwind.input.prognosticCells = prog_wind;
+                prmwind.input.prognosticCellSize = prog_cell;
+                prmwind.input.prognosticAffineCoefficients = prog_aff;
+                prmwind.input.climateCells = clim_wind;
+                prmwind.input.climateCellSize = clim_cell;
+                prmwind.input.climateAffineCoefficients = clim_aff;
                 //Calculate which lines are broken
                 List<PRMLibrary.Powerline> prmBrokenLines = prmwind.brokenPowerLinesAfterCheck();
-                prmwind.checkPower();
+                prmwind.CheckPower();
                 // new FeatureSet for resulting broken powerlines
                 //IFeatureSet brklineSet = new FeatureSet(FeatureType.Line);
                 //DataTable dt = pwlineSet.DataTable;
diff --git a/PRMLibrary/PRMLibrary.cs b/PRMLibrary/PRMLibrary.cs
index aebeb3e..04ea64d 100644
--- a/PRMLibrary/PRMLibrary.cs
+++ b/PRMLibrary/PRMLibrary.cs
@@ -125,7 +125,7 @@ namespace PRMLibrary
         FunctionClimate15 = 4
     }
 
-    public class Module
+    public class InputDTO
     {
         //prognistic raster info
         public List<List<PrognosticCell>> prognosticCells;
@@ -141,35 +141,44 @@ namespace PRMLibrary
         public List<Powerline> powerLines;
         //station collection
         public List<PowerStation> powerStations;
+
+        public double dist_threshold = 500;
+    }
+
+    public class OutputDTO
+    {
         //broken stations and lines
         public List<PowerStation> disabledStations = new List<PowerStation>();
         public List<Powerline> disabledLines = new List<Powerline>();
-       
-        public double dist_threshold = 500;
+    }
+
+    public class Module
+    {
+        public InputDTO input;
+        public OutputDTO output;
 
         //Main function for power graph algorithm
-        public void checkPower()
+        public void CheckPower()
         {
             //get the graph
             PreparingPowerItems();
             //start from source points
-            foreach (PowerStation pwstation in powerStations)
+            foreach (PowerStation pwstation in input.powerStations)
             {
                 if (pwstation.issource) { 
                     CheckPowerPointsForStation(pwstation); 
                 }
-
             }
-            foreach (Powerline line in powerLines)
+            foreach (Powerline line in input.powerLines)
             {
                 if (line.isbroken) { 
-                    disabledLines.Add(line); 
+                    output.disabledLines.Add(line); 
                 }
             }
-            foreach (PowerStation powerStation in powerStations)
+            foreach (PowerStation powerStation in input.powerStations)
             {
                 if (!powerStation.ison && !(powerStation.type.ToUpperInvariant().Trim() == "POLE")){
-                    disabledStations.Add(powerStation);
+                    output.disabledStations.Add(powerStation);
                 }
             }
             return;
@@ -180,7 +189,6 @@ namespace PRMLibrary
             if (!sourcepoint.ison)
             {
                 throw new Exception("CheckPowerPointsForStation is called from disabled sourcepoint");
-                return;
             }
             // if the point is not a pole  - i.e. we know 
             // it can redistribute power within connected lines
@@ -190,7 +198,7 @@ namespace PRMLibrary
                 if (!line.isbroken && !line.ison)
                 {
                     line.ison = true;
-                    foreach (PowerStation powerStation in powerStations)
+                    foreach (PowerStation powerStation in input.powerStations)
                     {
                         if (powerStation.identifier != sourcepoint.identifier && (powerStation.identifier == line.pointFromID || powerStation.identifier == line.pointToID))
                         {
@@ -226,7 +234,7 @@ namespace PRMLibrary
         {
             //First we make sure that all the sources are ON
             //and all non sources are OFF
-            foreach (PowerStation powerStation in powerStations)
+            foreach (PowerStation powerStation in input.powerStations)
             {
                 if (powerStation.issource == true) {
                     powerStation.ison = true; 
@@ -237,7 +245,7 @@ namespace PRMLibrary
                 // for each power station we create a list of powerlines it is attached to
                 List<Powerline> lines = new List<Powerline>();
 
-                foreach (Powerline line in powerLines)
+                foreach (Powerline line in input.powerLines)
                 {
                     //we also switch OFF all lines
                     line.ison = false;
@@ -252,7 +260,7 @@ namespace PRMLibrary
         {
             List<Powerline> brklines = new List<Powerline>();
             // actually there are curves in powerLines
-            foreach (Powerline powerCurve in powerLines)
+            foreach (Powerline powerCurve in input.powerLines)
             {
                 // get coordinates list
                 List<Coordinate> points = powerCurve.coords;
@@ -287,7 +295,7 @@ namespace PRMLibrary
         private bool linearLineIsBroken(Coordinate coord1, Coordinate coord2, double heightLine, int power)
         {
             double distance = Math.Sqrt((coord2.X - coord1.X) * (coord2.X - coord1.X) + (coord2.Y - coord1.Y) * (coord2.Y - coord1.Y));
-            double distpropD = distance / dist_threshold;
+            double distpropD = distance / input.dist_threshold;
             List<Coordinate> pointlist = new List<Coordinate>();
             Coordinate midpoint = new Coordinate();
             int distpropI = Convert.ToInt32(distpropD);
@@ -388,13 +396,13 @@ namespace PRMLibrary
                 case FunctionType.FunctionVelocityX:
                 case FunctionType.FunctionVelocityY:
                     {
-                        return prognosticAffineCoefficients;
+                        return input.prognosticAffineCoefficients;
                     }
                 case FunctionType.FunctionClimate5:
                 case FunctionType.FunctionClimate10:
                 case FunctionType.FunctionClimate15:
                     {
-                        return climateAffineCoefficients;
+                        return input.climateAffineCoefficients;
                     }
                 default:
                     break;
@@ -445,13 +453,13 @@ namespace PRMLibrary
                 case FunctionType.FunctionVelocityX:
                 case FunctionType.FunctionVelocityY:
                     {
-                        return prognosticCells[index.Row][index.Col].coords;
+                        return input.prognosticCells[index.Row][index.Col].coords;
                     }
                 case FunctionType.FunctionClimate5:
                 case FunctionType.FunctionClimate10:
                 case FunctionType.FunctionClimate15:
                     {
-                        return climateCells[index.Row][index.Col].coords;
+                        return input.climateCells[index.Row][index.Col].coords;
                     }
                 default:
                     break;
@@ -466,13 +474,13 @@ namespace PRMLibrary
                 case FunctionType.FunctionVelocityX:
                 case FunctionType.FunctionVelocityY:
                     {
-                        return forRows ? prognosticCells.Count : prognosticCells[0].Count;
+                        return forRows ? input.prognosticCells.Count : input.prognosticCells[0].Count;
                     }
                 case FunctionType.FunctionClimate5:
                 case FunctionType.FunctionClimate10:
                 case FunctionType.FunctionClimate15:
                     {
-                        return forRows ? climateCells.Count : climateCells[0].Count;
+                        return forRows ? input.climateCells.Count : input.climateCells[0].Count;
                     }
                 default:
                     break;
@@ -486,23 +494,23 @@ namespace PRMLibrary
             {
                 case FunctionType.FunctionVelocityX:
                     {
-                        return prognosticCells[index.Row][index.Col].velocityX;
+                        return input.prognosticCells[index.Row][index.Col].velocityX;
                     }
                 case FunctionType.FunctionVelocityY:
                     {
-                        return prognosticCells[index.Row][index.Col].velocityY;
+                        return input.prognosticCells[index.Row][index.Col].velocityY;
                     }
                 case FunctionType.FunctionClimate5:
                     {
-                        return climateCells[index.Row][index.Col].wind5;
+                        return input.climateCells[index.Row][index.Col].wind5;
                     }
                 case FunctionType.FunctionClimate10:
                     {
-                        return climateCells[index.Row][index.Col].wind10;
+                        return input.climateCells[index.Row][index.Col].wind10;
                     }
                 case FunctionType.FunctionClimate15:
                     {
-                        return climateCells[index.Row][index.Col].wind15;
+                        return input.climateCells[index.Row][index.Col].wind15;
                     }
                 default:
                     break;
@@ -517,13 +525,13 @@ namespace PRMLibrary
                 case FunctionType.FunctionVelocityX:
                 case FunctionType.FunctionVelocityY:
                     {
-                        return prognosticCellSize;
+                        return input.prognosticCellSize;
                     }
                 case FunctionType.FunctionClimate5:
                 case FunctionType.FunctionClimate10:
                 case FunctionType.FunctionClimate15:
                     {
-                        return climateCellSize;
+                        return input.climateCellSize;
                     }
                 default:
                     break;
-- 
GitLab