<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>CQ-CSER &#187; GOOGLE</title>
	<atom:link href="http://cq-cser.cn/category/google/feed/" rel="self" type="application/rss+xml" />
	<link>http://cq-cser.cn</link>
	<description>计算机爱好者</description>
	<lastBuildDate>Sun, 15 Jan 2012 08:17:54 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
		<item>
		<title>Google Font Directory-Google Font API</title>
		<link>http://cq-cser.cn/2010/05/google-font-directory-google-font-api/</link>
		<comments>http://cq-cser.cn/2010/05/google-font-directory-google-font-api/#comments</comments>
		<pubDate>Sat, 29 May 2010 08:10:44 +0000</pubDate>
		<dc:creator>cq</dc:creator>
				<category><![CDATA[GOOGLE]]></category>
		<category><![CDATA[api]]></category>
		<category><![CDATA[Font]]></category>

		<guid isPermaLink="false">http://cq-cser.cn/?p=1209</guid>
		<description><![CDATA[Google在5月20日宣布推出Google Font Directory和Google Font API两项服务。在 Google Font Directory中，Google联合了众多的字体设计者为用户提供了多种漂亮的字体，但现在全部是英文字体，相信今后会有中文字体。Google Font API 和Google Font Directory是相辅相成的，用户正是通过Google Font API来使用Google Font Directory中的字体。 下面让我们看看如何使用Google Font API 。 1.在 Google Font Directory查找字体 进入Google Font Directory选择合适的字体。点击选择的字体可以查看它在各种大小下的显示效果。 2.引用字体文件 由于这些字体在本地系统中不存在，所以必须在页面中引用它们的字体文件。这些文件托管在Google的云中，引用它们通过下面的方式。 &#60;link href='http://fonts.googleapis.com/css?family=Reenie+Beanie' rel='stylesheet' type='text/css'&#62; 3.使用字体 使用字体通过将html节点的font-family样式设置为上面引用的字体。 h1 { font-family: 'Reenie Beanie', arial, serif; } 最终效果 很炫吧，去尝试一下！ Related posts:Change Font/-size google api ajaxfeeds 微软的22道数据结构算法面试题


Related posts:<ol><li><a href='http://cq-cser.cn/2010/02/change-font-size/' rel='bookmark' title='Permanent Link: Change Font/-size'>Change Font/-size</a></li>
<li><a href='http://cq-cser.cn/2010/02/google-api-ajaxfeeds/' rel='bookmark' title='Permanent Link: google api ajaxfeeds'>google api ajaxfeeds</a></li>
<li><a href='http://cq-cser.cn/2010/02/%e5%be%ae%e8%bd%af%e7%9a%8422%e9%81%93%e6%95%b0%e6%8d%ae%e7%bb%93%e6%9e%84%e7%ae%97%e6%b3%95%e9%9d%a2%e8%af%95%e9%a2%98/' rel='bookmark' title='Permanent Link: 微软的22道数据结构算法面试题'>微软的22道数据结构算法面试题</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p>Google在5月20日宣布推出<a title="Google Font Directory" href="http://code.google.com/webfonts" target="_blank">Google Font Directory</a>和<a title="Google Font API" href="http://code.google.com/apis/webfonts/" target="_blank">Google Font API</a>两项服务。在 Google Font  Directory中，Google联合了众多的字体设计者为用户提供了多种漂亮的字体，但现在全部是英文字体，相信今后会有中文字体。Google  Font API 和Google Font Directory是相辅相成的，用户正是通过Google Font API来使用Google  Font Directory中的字体。</p>
<p>下面让我们看看如何使用Google Font API 。</p>
<h4>1.在 Google Font Directory查找字体</h4>
<p>进入<a title="Google  Font Directory" href="http://code.google.com/webfonts" target="_blank">Google Font  Directory</a>选择合适的字体。点击选择的字体可以查看它在各种大小下的显示效果。</p>
<p><a href="http://images.cnblogs.com/cnblogs_com/lloydsheng/WindowsLiveWriter/GoogleFontAPI_FB93/image_2.png" target="_blank"><img style="border-width: 0px;" src="http://images.cnblogs.com/cnblogs_com/lloydsheng/WindowsLiveWriter/GoogleFontAPI_FB93/image_thumb.png" border="0" alt="" width="448" height="310" /></a></p>
<h4>2.引用字体文件</h4>
<p>由于这些字体在本地系统中不存在，所以必须在页面中引用它们的字体文件。这些文件托管在Google的云中，引用它们通过下面的方式。</p>
<pre>
&lt;link href='http://fonts.googleapis.com/css?family=<strong>Reenie+Beanie</strong>' rel='stylesheet' type='text/css'&gt;
</pre>
<h4>3.使用字体</h4>
<p>使用字体通过将html节点的font-family样式设置为上面引用的字体。</p>
<pre>h1 { font-family: '<strong>Reenie Beanie</strong>', arial, serif; }</pre>
<h4>最终效果</h4>
<p><a href="http://lloydsheng.com/wp-content/uploads/2010/05/welcome.png" target="_blank"><img src="http://lloydsheng.com/wp-content/uploads/2010/05/welcome.png" alt="" width="286" height="70" /></a></p>
<p>很炫吧，去尝试一下！</p>


<p>Related posts:<ol><li><a href='http://cq-cser.cn/2010/02/change-font-size/' rel='bookmark' title='Permanent Link: Change Font/-size'>Change Font/-size</a></li>
<li><a href='http://cq-cser.cn/2010/02/google-api-ajaxfeeds/' rel='bookmark' title='Permanent Link: google api ajaxfeeds'>google api ajaxfeeds</a></li>
<li><a href='http://cq-cser.cn/2010/02/%e5%be%ae%e8%bd%af%e7%9a%8422%e9%81%93%e6%95%b0%e6%8d%ae%e7%bb%93%e6%9e%84%e7%ae%97%e6%b3%95%e9%9d%a2%e8%af%95%e9%a2%98/' rel='bookmark' title='Permanent Link: 微软的22道数据结构算法面试题'>微软的22道数据结构算法面试题</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://cq-cser.cn/2010/05/google-font-directory-google-font-api/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>PAC-MAN+30th+Anniversary</title>
		<link>http://cq-cser.cn/2010/05/pac-man30thanniversary/</link>
		<comments>http://cq-cser.cn/2010/05/pac-man30thanniversary/#comments</comments>
		<pubDate>Fri, 21 May 2010 17:32:06 +0000</pubDate>
		<dc:creator>cq</dc:creator>
				<category><![CDATA[GOOGLE]]></category>

		<guid isPermaLink="false">http://cq-cser.cn/?p=1196</guid>
		<description><![CDATA[很犀利啊，执行后代码大致如下 [pre]&#60;/p&#62; &#60;div&#62;&#60;code&#62;....loading....&#60;/p&#62; &#60;p&#62;&#60;script type=&#34;text/javascript&#34;&#62;// &#60;![CDATA[ window.google={kEI:&#34;mrT2S6uQJJHs7APuqsT3BQ&#34;,kEXPI:&#34;17259,24660,24745,24807&#34;,kCSI:{e:&#34;17259,24660,24745,24807&#34;,ei:&#34;mrT2S6uQJJHs7APuqsT3BQ&#34;,expi:&#34;17259,24660,24745,24807&#34;},ml:function(){},kHL:&#34;zh-CN&#34;,time:function(){return(new Date).getTime()},log:function(b,d,c){var a=new Image,e=google,g=e.lc,f=e.li;a.onerror=(a.onload=(a.onabort=function(){delete g[f]}));g[f]=a;c=c&#124;&#124;&#34;/gen_204?atyp=i&#38;ct=&#34;+b+&#34;&#38;cad=&#34;+d+&#34;&#38;zx=&#34;+google.time();a.src=c;e.li=f+1},lc:[],li:0,Toolbelt:{}}; window.google.sn=&#34;webhp&#34;;window.google.timers={load:{t:{start:(new Date).getTime()}}};try{window.google.pt=window.gtbExternal&#38;&#38;window.gtbExternal.pageT();}catch(u){}window.google.jsrt_kill=1; var _gjwl=location;function _gjuc(){var b=_gjwl.href.indexOf(&#34;#&#34;);if(b&#62;=0){var a=_gjwl.href.substring(b+1);if(/(^&#124;&#38;)q=/.test(a)&#38;&#38;a.indexOf(&#34;#&#34;)==-1&#38;&#38;!/(^&#124;&#38;)cad=h($&#124;&#38;)/.test(a)){_gjwl.replace(&#34;/search?&#34;+a.replace(/(^&#124;&#38;)fp=[^&#38;]*/g,&#34;&#34;)+&#34;&#38;cad=h&#34;);return 1}}return 0}function _gjp(){!(window._gjwl.hash&#38;&#38;window._gjuc())&#38;&#38;setTimeout(_gjp,500)}; window._gjp &#38;&#38; _gjp() // ]]&#62;&#60;/script&#62;&#60;br /&#62; &#60;!-- body{margin:0}#gog{padding:3px 8px 0}td{line-height:.8em;}.gac_m td{line-height:17px;}form{margin-bottom:20px;}body,td,a,p,.h{font-family:arial,sans-serif}.h{color:#36c;font-size:20px}.q{color:#00c}.ts td{padding:0}.ts{border-collapse:collapse}em{color:#c03;font-style:normal;font-weight:normal}a em{text-decoration:underline}.lst{width:496px}input{font-family:inherit}a.gb1,a.gb2,a.gb3,a.gb4{color:#11c !important}#gog{background:#fff;}#gbar,#guser{font-size:13px;padding-top:1px !important}#gbar{float:left;height:22px}#guser{padding-bottom:7px !important;text-align:right}.gbh,.gbd{border-top:1px solid #c9d7f1;font-size:1px}.gbh{height:0;position:absolute;top:24px;width:100%}#gbs,.gbm{background:#fff;left:0;position:absolute;text-align:left;visibility:hidden;z-index:1000}.gbm{border:1px solid;border-color:#c9d7f1 #36c #36c #a2bae7;z-index:1001}.gb1{margin-right:.5em}.gb1,.gb3{zoom:1}.gb2{display:block;padding:.2em .5em;}.gb2,.gb3{text-decoration:none;border-bottom:none}a.gb1,a.gb2,a.gb3,a.gb4{color:#00c !important}a.gb2:hover{background:#36c;color:#fff !important}body{background:#fff;color:black}input{-moz-box-sizing:content-box}a{color:#11c;text-decoration:none}a:hover,a:active{text-decoration:underline}.fl a{color:#4272db}a:visited{color:#551a8b}a.gb1,a.gb4{text-decoration:underline}a.gb3:hover{text-decoration:none}#ghead a.gb2:hover{color:#fff!important}.ds{display:-moz-inline-box}.ds{border-bottom:solid 1px #e7e7e7;border-right:solid 1px #e7e7e7;display:inline-block;margin:3px 0 4px;margin-left:4px;margin-right:3px:height:32px}.sblc{padding-top:5px}.sblc a{display:block;margin:2px [...]


Related posts:<ol><li><a href='http://cq-cser.cn/2010/01/%e7%a6%81%e6%ad%a2%e5%8f%b3%e9%94%ae%e4%bb%a3%e7%a0%81/' rel='bookmark' title='Permanent Link: 禁止右键代码'>禁止右键代码</a></li>
<li><a href='http://cq-cser.cn/2010/02/%e4%bc%a0%e8%af%b4%e4%b8%ad%e7%9a%84brainfuck/' rel='bookmark' title='Permanent Link: 传说中的Brainfuck'>传说中的Brainfuck</a></li>
<li><a href='http://cq-cser.cn/2009/11/%e9%93%be%e6%8e%a5%e5%8f%aa%e8%83%bd%e8%a2%ab%e7%82%b9%e5%87%bb%e4%b8%80%e6%ac%a1/' rel='bookmark' title='Permanent Link: 链接只能被点击一次'>链接只能被点击一次</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p><a href="http://cq-cser.cn/wp-content/uploads/2010/05/未命名.jpg"><img class="alignnone size-full wp-image-1195" title="未命名" src="http://cq-cser.cn/wp-content/uploads/2010/05/未命名.jpg" alt="未命名" width="765" height="299" /></a><span id="more-1196"></span></p>
<p>很犀利啊，执行后代码大致如下</p>
<pre class="brush: plain;">
[pre]&lt;/p&gt;
&lt;div&gt;&lt;code&gt;....loading....&lt;/p&gt;
&lt;p&gt;&lt;script type=&quot;text/javascript&quot;&gt;// &lt;![CDATA[ window.google={kEI:&quot;mrT2S6uQJJHs7APuqsT3BQ&quot;,kEXPI:&quot;17259,24660,24745,24807&quot;,kCSI:{e:&quot;17259,24660,24745,24807&quot;,ei:&quot;mrT2S6uQJJHs7APuqsT3BQ&quot;,expi:&quot;17259,24660,24745,24807&quot;},ml:function(){},kHL:&quot;zh-CN&quot;,time:function(){return(new Date).getTime()},log:function(b,d,c){var a=new Image,e=google,g=e.lc,f=e.li;a.onerror=(a.onload=(a.onabort=function(){delete g[f]}));g[f]=a;c=c||&quot;/gen_204?atyp=i&amp;ct=&quot;+b+&quot;&amp;cad=&quot;+d+&quot;&amp;zx=&quot;+google.time();a.src=c;e.li=f+1},lc:[],li:0,Toolbelt:{}}; window.google.sn=&quot;webhp&quot;;window.google.timers={load:{t:{start:(new Date).getTime()}}};try{window.google.pt=window.gtbExternal&amp;&amp;window.gtbExternal.pageT();}catch(u){}window.google.jsrt_kill=1; var _gjwl=location;function _gjuc(){var b=_gjwl.href.indexOf(&quot;#&quot;);if(b&gt;=0){var a=_gjwl.href.substring(b+1);if(/(^|&amp;)q=/.test(a)&amp;&amp;a.indexOf(&quot;#&quot;)==-1&amp;&amp;!/(^|&amp;)cad=h($|&amp;)/.test(a)){_gjwl.replace(&quot;/search?&quot;+a.replace(/(^|&amp;)fp=[^&amp;]*/g,&quot;&quot;)+&quot;&amp;cad=h&quot;);return 1}}return 0}function _gjp(){!(window._gjwl.hash&amp;&amp;window._gjuc())&amp;&amp;setTimeout(_gjp,500)};
window._gjp &amp;&amp; _gjp()
// ]]&gt;&lt;/script&gt;&lt;br /&gt;
&lt;!-- body{margin:0}#gog{padding:3px 8px 0}td{line-height:.8em;}.gac_m td{line-height:17px;}form{margin-bottom:20px;}body,td,a,p,.h{font-family:arial,sans-serif}.h{color:#36c;font-size:20px}.q{color:#00c}.ts td{padding:0}.ts{border-collapse:collapse}em{color:#c03;font-style:normal;font-weight:normal}a em{text-decoration:underline}.lst{width:496px}input{font-family:inherit}a.gb1,a.gb2,a.gb3,a.gb4{color:#11c !important}#gog{background:#fff;}#gbar,#guser{font-size:13px;padding-top:1px !important}#gbar{float:left;height:22px}#guser{padding-bottom:7px !important;text-align:right}.gbh,.gbd{border-top:1px solid #c9d7f1;font-size:1px}.gbh{height:0;position:absolute;top:24px;width:100%}#gbs,.gbm{background:#fff;left:0;position:absolute;text-align:left;visibility:hidden;z-index:1000}.gbm{border:1px solid;border-color:#c9d7f1 #36c #36c #a2bae7;z-index:1001}.gb1{margin-right:.5em}.gb1,.gb3{zoom:1}.gb2{display:block;padding:.2em .5em;}.gb2,.gb3{text-decoration:none;border-bottom:none}a.gb1,a.gb2,a.gb3,a.gb4{color:#00c !important}a.gb2:hover{background:#36c;color:#fff !important}body{background:#fff;color:black}input{-moz-box-sizing:content-box}a{color:#11c;text-decoration:none}a:hover,a:active{text-decoration:underline}.fl a{color:#4272db}a:visited{color:#551a8b}a.gb1,a.gb4{text-decoration:underline}a.gb3:hover{text-decoration:none}#ghead a.gb2:hover{color:#fff!important}.ds{display:-moz-inline-box}.ds{border-bottom:solid 1px #e7e7e7;border-right:solid 1px #e7e7e7;display:inline-block;margin:3px 0 4px;margin-left:4px;margin-right:3px:height:32px}.sblc{padding-top:5px}.sblc a{display:block;margin:2px 0;margin-left:13px;font-size:11px;}.lsbb{background:#eee;border:solid 1px;border-color:#ccc #999 #999 #ccc;height:30px;display:block}.lsb{background:url(/images/srpr/nav_logo13.png) bottom;font:15px arial,sans-serif;border:none;cursor:pointer;height:30px;margin:0;outline:0;vertical-align:top}.lsb:active{background:#ccc}.lst:focus{outline:none}.ftl,#fll a{margin:0 12px}#addlang a{padding:0 3px}.gac_v div{display:none}.gac_v .gac_v2,.gac_bt{display:block!important} --&gt;&lt;br /&gt;
&lt;script type=&quot;text/javascript&quot;&gt;// &lt;![CDATA[ google.y={};google.x=function(e,g){google.y[e.id]=[e,g];return false};if(!window.google)window.google={};window.google.crm={};window.google.cri=0;window.clk=function(e,f,g,k,l,b,m){if(document.images){var a=encodeURIComponent||escape,c=new Image,h=window.google.cri++;window.google.crm[h]=c;c.onerror=(c.onload=(c.onabort=function(){delete window.google.crm[h]}));if(b&amp;&amp;b.substring(0,6)!=&quot;&amp;sig2=&quot;)b=&quot;&amp;sig2=&quot;+b;c.src=[&quot;/url?sa=T&quot;,&quot;&quot;,f?&quot;&amp;oi=&quot;+a(f):&quot;&quot;,g?&quot;&amp;cad=&quot;+a(g):&quot;&quot;,&quot;&amp;ct=&quot;,a(k||&quot;res&quot;),&quot;&amp;cd=&quot;,a(l),&quot;&amp;ved=&quot;,a(m),e?&quot;&amp;url=&quot;+a(e.replace(/#.*/,&quot;&quot;)).replace(/\+/g,&quot;%2B&quot;):&quot;&quot;,&quot;&amp;ei=&quot;,&quot;mrT2S6uQJJHs7APuqsT3BQ&quot;,b].join(&quot;&quot;)}return true}; window.gbar={qs:function(){},tg:function(e){var o={id:'gbar'};for(i in e)o[i]=e[i];google.x(o,function(){gbar.tg(o)})}}; // ]]&gt;&lt;/script&gt;&lt;br /&gt;
&lt;!-- .gac_od{background:white;margin:0;z-index:99;border-top:0;border-left:0;border-right:1px solid #e7e7e7;border-bottom:1px solid #e7e7e7;padding:0!important;position:absolute}.gac_id{background:white;margin:0;z-index:99;border-top:1px solid #a2bff0;border-left:1px solid #a2bff0;border-right:1px solid #558be3;border-bottom:1px solid #558be3;display:block;position:relative}.gac_m{background:white;margin:0;z-index:99;border:0;cursor:default;display:block;font-size:17px;line-height:117%;padding:0;position:relative}.gac_wd{background:#999;height:1px;position:absolute;right:-1px;top:0;width:1px;z-index:100}.gac_m td{line-height:22px}.gac_n{padding-top:1px;padding-bottom:1px}.gac_b td.gac_c{background:#d5e2ff}.gac_b{background:#d5e2ff}.gac_a td.gac_f{background:#fff8dd}.gac_p{padding:1px 4px 2px 3px}.gac_u{padding:0 0 1px 0;line-height:117%;text-align:left}.gac_t{width:100%;text-align:left;font-size:17px}.gac_za{position:absolute;bottom:0;right:0;text-align:right;font-size:12px;padding-right:5px}.gac_bt{width:510px;text-align:center;padding:8px 0 7px;position:relative}.gac_sb{font-size:15px;height:28px;margin:0.2em}.gac_z{white-space:nowrap;color:#c00}.gac_s{height:3px;font-size:1px}.gac_c{white-space:nowrap;overflow:hidden;text-align:left;padding-left:7px;padding-right:3px}.gac_e{text-align:right;padding:0 3px}.gac_d{font-size:11px}.gac_h{color:green}.gac_j{display:block}.gac_l{line-height:18px}.gac_x{display:block;line-height:16px}.gac_y{font-size:13px}.gac_i{color:#666}.gac_w img{width:40px;height:40px}.gac_w{width:1px}.gac_r{color:red}.gac_v{padding-bottom:5px} --&gt;&lt;br /&gt;
&lt;!-- #pcm-c { width: 554px; border-top: 25px solid black; padding-bottom: 25px; height: 136px; position: relative; background: black; outline: 0; overflow: hidden; -webkit-tap-highlight-color: rgba(0, 0, 0, 0);}#pcm-c * { position: absolute; overflow: hidden;}#pcm-p,#pcm-cc { left: 45px; width: 464px; height: 136px; z-index: 99; overflow: hidden;}#pcm-p .pcm-d { width: 2px; height: 2px; margin-left: 3px; margin-top: 3px; background: #f8b090; z-index: 100;}#pcm-p .pcm-e { width: 8px; height: 8px; z-index: 101;}#pcm-sc-1 { left: 18px; top: 16px; width: 8px; height: 56px; position: absolute; overflow: hidden;}#pcm-sc-2 { left: 18px; top: 80px; width: 8px; height: 56px; position: absolute; overflow: hidden;}#pcm-le { position: absolute; left: 515px; top: 74px; height: 64px; width: 32px;} #pcm-le div { position: relative;}#pcm-sc-1-l { left: -2px; top: 0; width: 48px; height: 8px;}#pcm-sc-2-l { left: -2px; top: 64px; width: 48px; height: 8px;}#pcm-so { left: 7px; top: 116px; width: 12px; height: 12px; border: 8px solid black; cursor: pointer;}#pcm-li { position: absolute; left: 523px; top: 0; height: 80px; width: 16px;}#pcm-li .pcm-lif { position: relative; width: 16px; height: 12px; margin-bottom: 3px;}#pcm-p.blk .pcm-e { visibility: hidden;}#pcm-c .pcm-ac { width: 16px; height: 16px; margin-left: -4px; margin-top: -4px; z-index: 110;}#pcm-c .pcm-n { z-index: 111;}#pcm-c #pcm-stck { z-index: 109;}#pcm-c #pcm-gbug { width: 32px;}#pcm-c #pcm-bpcm { width: 32px; height: 32px; margin-left: -20px; margin-top: -20px;}#pcm-f,#pcm-le div { width: 32px; height: 16px; z-index: 105;}#pcm-f { margin-left: -8px; margin-top: -4px;}#pcm-do { width: 19px; height: 2px; left: 279px; top: 46px; overflow: hidden; position: absolute; background: #ffaaa5;}#pcm-re { width: 48px; height: 8px; z-index: 120; left: 264px; top: 80px;}#pcm-go { width: 80px; height: 8px; z-index: 120; left: 248px; top: 80px;} --&gt;&lt;/p&gt;
&lt;p&gt;&lt;textarea id=&quot;csi&quot; style=&quot;display: none;&quot;&gt;&lt;/textarea&gt;&lt;/code&gt;&lt;/div&gt;
&lt;table border=&quot;0&quot; cellspacing=&quot;0&quot; cellpadding=&quot;0&quot;&gt;
&lt;tbody&gt;
&lt;tr valign=&quot;top&quot;&gt;
&lt;td width=&quot;25%&quot;&gt; &lt;/td&gt;
&lt;td align=&quot;center&quot;&gt;&lt;input name=&quot;hl&quot; type=&quot;hidden&quot; value=&quot;zh-CN&quot; /&gt;&lt;br /&gt;
&lt;input name=&quot;source&quot; type=&quot;hidden&quot; value=&quot;hp&quot; /&gt;&lt;br style=&quot;line-height: 0pt;&quot; /&gt;&lt;br /&gt;
&lt;span class=&quot;ds&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;ds&quot;&gt;&lt;br /&gt;
&lt;span class=&quot;lsbb&quot;&gt;&lt;br /&gt;
&lt;input class=&quot;lsb&quot; name=&quot;btnI&quot; type=&quot;submit&quot; value=&quot;Insert Coin&quot; /&gt;&lt;br /&gt;
&lt;/span&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/td&gt;
&lt;td class=&quot;sblc&quot; width=&quot;25%&quot; align=&quot;left&quot;&gt;&lt;a href=&quot;/advanced_search?hl=zh-CN&quot;&gt;高级&lt;/a&gt;&lt;br /&gt;
&lt;a href=&quot;/language_tools?hl=zh-CN&quot;&gt;语言&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;code&gt;&lt;br /&gt;
&lt;form action=&quot;/search&quot; enctype=&quot;application/x-www-form-urlencoded&quot; method=&quot;get&quot;&gt;&lt;input name=&quot;aq&quot; type=&quot;hidden&quot; value=&quot;f&quot; /&gt;&lt;br /&gt;
&lt;input name=&quot;aqi&quot; type=&quot;hidden&quot; /&gt;&lt;br /&gt;
&lt;input name=&quot;aql&quot; type=&quot;hidden&quot; /&gt;&lt;br /&gt;
&lt;input name=&quot;oq&quot; type=&quot;hidden&quot; /&gt;&lt;br /&gt;
&lt;input name=&quot;gs_rfai&quot; type=&quot;hidden&quot; /&gt;&lt;br /&gt;
&lt;span id=&quot;footer&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;script type=&quot;text/javascript&quot;&gt;// &lt;![CDATA[
(function(){
var b,d,e,f;function g(a,c){if(a.removeEventListener){a.removeEventListener(&quot;load&quot;,c,false);a.removeEventListener(&quot;error&quot;,c,false)}else{a.detachEvent(&quot;onload&quot;,c);a.detachEvent(&quot;onerror&quot;,c)}}function h(a){f=(new Date).getTime();++d;a=a||window.event;var c=a.target||a.srcElement;g(c,h)}var i=document.getElementsByTagName(&quot;img&quot;);b=i.length;d=0;for(var j=0,k;j&lt;b;++j){k=i[j];if(k.complete||typeof k.src!=&quot;string&quot;||!k.src)++d;else if(k.addEventListener){k.addEventListener(&quot;load&quot;,h,false);k.addEventListener(&quot;error&quot;, h,false)}else{k.attachEvent(&quot;onload&quot;,h);k.attachEvent(&quot;onerror&quot;,h)}}e=b-d;function l(){google.timers.load.t.ol=(new Date).getTime();google.timers.load.t.iml=f;google.kCSI.imc=d;google.kCSI.imn=b;google.kCSI.imp=e;google.report&amp;&amp;google.report(google.timers.load,google.kCSI)}if(window.addEventListener)window.addEventListener(&quot;load&quot;,l,false);else if(window.attachEvent)window.attachEvent(&quot;onload&quot;,l);google.timers.load.t.prt=(f=(new Date).getTime()); })(); // ]]&gt;&lt;/script&gt;&lt;/p&gt;
&lt;div id=&quot;livemargins_control&quot; style=&quot;position: absolute; display: none; z-index: 9999;&quot;&gt;&lt;img style=&quot;position: absolute; top: -5px; left: -77px;&quot; src=&quot;chrome://livemargins/skin/monitor-background-horizontal.png&quot; alt=&quot;&quot; width=&quot;77&quot; height=&quot;5&quot; /&gt;&lt;br /&gt;
&lt;img style=&quot;position: absolute; top: -5px; left: 0pt;&quot; src=&quot;chrome://livemargins/skin/monitor-background-vertical.png&quot; alt=&quot;&quot; /&gt;&lt;br /&gt;
&lt;img id=&quot;monitor-play-button&quot; style=&quot;position: absolute; top: 0pt; cursor: pointer; left: 1px; opacity: 0.5;&quot; onmouseover=&quot;this.style.opacity=1&quot; onmouseout=&quot;this.style.opacity=0.5&quot; src=&quot;chrome://livemargins/skin/monitor-play-button.png&quot; alt=&quot;&quot; /&gt;&lt;/div&gt;
&lt;/form&gt;
&lt;p&gt;&lt;/code&gt;&lt;/p&gt;
&lt;table class=&quot;gac_m&quot; border=&quot;0&quot; cellspacing=&quot;0&quot; cellpadding=&quot;0&quot;&gt;
&lt;tbody&gt;&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;code&gt;&lt;br /&gt;
&lt;form action=&quot;/search&quot; enctype=&quot;application/x-www-form-urlencoded&quot; method=&quot;get&quot;&gt;
&lt;div&gt;
&lt;div style=&quot;z-index: 2; position: absolute; display: none; background: #ffffff; top: 0pt; cursor: pointer; left: 0pt;&quot;&gt;&lt;a style=&quot;color: #444444; text-decoration: none;&quot; href=&quot;/url?ct=pro&amp;amp;cd=6&amp;amp;source=cwh&amp;amp;q=http%3A%2F%2Fwww.265.com%2F&quot; target=&quot;_blank&quot;&gt;&lt;br /&gt;
&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;&lt;script src=&quot;logos/js/pacman10-hp.2.js&quot; type=&quot;text/javascript&quot;&gt;&lt;/script&gt;&lt;script type=&quot;text/javascript&quot;&gt;// &lt;![CDATA[ google.pacman||function(){ var a=true,e=false,g={},i=[1,4,2,8],l={0:{axis:0,increment:0},1:{axis:0,increment:-1},2:{axis:0,increment:+1},4:{axis:1,increment:-1},8:{axis:1,increment:+1}},m=[0,7,17,32],n=[{x:5,y:1,w:56},{x:5,y:4,w:5},{x:5,y:1,h:4},{x:9,y:1,h:12},{x:5,y:12,h:4},{x:10,y:12,h:4},{x:5,y:15,w:16},{x:5,y:12,w:31},{x:60,y:1,h:4},{x:54,y:1,h:4},{x:19,y:1,h:12},{x:19,y:4,w:26},{x:13,y:5,w:7},{x:13,y:5,h:4},{x:13,y:8,w:3},{x:56,y:4,h:9},{x:48,y:4,w:13},{x:48,y:1,h:12},{x:60,y:12,h:4},{x:44,y:15,w:17},{x:54,y:12,h:4},{x:44, y:12,w:17},{x:44,y:1,h:15},{x:41,y:13,w:4},{x:41,y:13,h:3},{x:38,y:13,h:3},{x:38,y:15,w:4},{x:35,y:10,w:10},{x:35,y:1,h:15},{x:35,y:13,w:4},{x:21,y:12,h:4},{x:24,y:12,h:4},{x:24,y:15,w:12},{x:27,y:4,h:9},{x:52,y:9,w:5},{x:56,y:8,w:10,type:1},{x:1,y:8,w:9,type:1}],o=[{x:1,y:8,w:8},{x:57,y:8,w:9},{x:44,y:2,h:10},{x:35,y:5,h:7},{x:36,y:4,w:8},{x:36,y:10,w:8},{x:39,y:15,w:2}],p=[{x:5,y:15},{x:5,y:3},{x:15,y:8},{x:60,y:3},{x:60,y:15}],q=[{x:2,y:8},{x:63,y:8}],r={1:[{x:39.5,y:15,dir:4},{x:39.5,y:4,dir:4, scatterX:57,scatterY:-4},{x:39.5,y:7,dir:2,scatterX:0,scatterY:-4},{x:37.625,y:7,dir:1,scatterX:57,scatterY:20},{x:41.375,y:7,dir:1,scatterX:0,scatterY:20}],2:[{x:40.25,y:15,dir:8},{x:38.75,y:15,dir:4},{x:39.5,y:4,dir:4,scatterX:57,scatterY:-4},{x:39.5,y:7,dir:2,scatterX:0,scatterY:-4},{x:37.625,y:7,dir:1,scatterX:57,scatterY:20},{x:41.375,y:7,dir:1,scatterX:0,scatterY:20}]},s=[32,312],v=[80,312],w={0:0.16,1:0.23,2:1,3:1,4:2.23,5:0.3,6:1.9,7:2.23,8:1.9,9:5,10:1.9,11:1.18,12:0.3,13:0.5,14:1.9,15:9, 16:10,17:0.26},y=0.8*0.4,z=[{},{ghostSpeed:0.75,ghostTunnelSpeed:0.4,playerSpeed:0.8,dotEatingSpeed:0.71,ghostFrightSpeed:0.5,playerFrightSpeed:0.9,dotEatingFrightSpeed:0.79,elroyDotsLeftPart1:20,elroySpeedPart1:0.8,elroyDotsLeftPart2:10,elroySpeedPart2:0.85,frightTime:6,frightBlinkCount:5,fruit:1,fruitScore:100,ghostModeSwitchTimes:[7,20,7,20,5,20,5,1],penForceTime:4,penLeavingLimits:[0,0,30,60]},{ghostSpeed:0.85,ghostTunnelSpeed:0.45,playerSpeed:0.9,dotEatingSpeed:0.79,ghostFrightSpeed:0.55,playerFrightSpeed:0.95, dotEatingFrightSpeed:0.83,elroyDotsLeftPart1:30,elroySpeedPart1:0.9,elroyDotsLeftPart2:15,elroySpeedPart2:0.95,frightTime:5,frightBlinkCount:5,fruit:2,fruitScore:300,ghostModeSwitchTimes:[7,20,7,20,5,1033,1/60,1],penForceTime:4,penLeavingLimits:[0,0,0,50],cutsceneId:1},{ghostSpeed:0.85,ghostTunnelSpeed:0.45,playerSpeed:0.9,dotEatingSpeed:0.79,ghostFrightSpeed:0.55,playerFrightSpeed:0.95,dotEatingFrightSpeed:0.83,elroyDotsLeftPart1:40,elroySpeedPart1:0.9,elroyDotsLeftPart2:20,elroySpeedPart2:0.95, frightTime:4,frightBlinkCount:5,fruit:3,fruitScore:500,ghostModeSwitchTimes:[7,20,7,20,5,1033,1/60,1],penForceTime:4,penLeavingLimits:[0,0,0,0]},{ghostSpeed:0.85,ghostTunnelSpeed:0.45,playerSpeed:0.9,dotEatingSpeed:0.79,ghostFrightSpeed:0.55,playerFrightSpeed:0.95,dotEatingFrightSpeed:0.83,elroyDotsLeftPart1:40,elroySpeedPart1:0.9,elroyDotsLeftPart2:20,elroySpeedPart2:0.95,frightTime:3,frightBlinkCount:5,fruit:3,fruitScore:500,ghostModeSwitchTimes:[7,20,7,20,5,1033,1/60,1],penForceTime:4,penLeavingLimits:[0, 0,0,0]},{ghostSpeed:0.95,ghostTunnelSpeed:0.5,playerSpeed:1,dotEatingSpeed:0.87,ghostFrightSpeed:0.6,playerFrightSpeed:1,dotEatingFrightSpeed:0.87,elroyDotsLeftPart1:40,elroySpeedPart1:1,elroyDotsLeftPart2:20,elroySpeedPart2:1.05,frightTime:2,frightBlinkCount:5,fruit:4,fruitScore:700,ghostModeSwitchTimes:[5,20,5,20,5,1037,1/60,1],penForceTime:3,penLeavingLimits:[0,0,0,0],cutsceneId:2},{ghostSpeed:0.95,ghostTunnelSpeed:0.5,playerSpeed:1,dotEatingSpeed:0.87,ghostFrightSpeed:0.6,playerFrightSpeed:1, dotEatingFrightSpeed:0.87,elroyDotsLeftPart1:50,elroySpeedPart1:1,elroyDotsLeftPart2:25,elroySpeedPart2:1.05,frightTime:5,frightBlinkCount:5,fruit:4,fruitScore:700,ghostModeSwitchTimes:[5,20,5,20,5,1037,1/60,1],penForceTime:3,penLeavingLimits:[0,0,0,0]},{ghostSpeed:0.95,ghostTunnelSpeed:0.5,playerSpeed:1,dotEatingSpeed:0.87,ghostFrightSpeed:0.6,playerFrightSpeed:1,dotEatingFrightSpeed:0.87,elroyDotsLeftPart1:50,elroySpeedPart1:1,elroyDotsLeftPart2:25,elroySpeedPart2:1.05,frightTime:2,frightBlinkCount:5, fruit:5,fruitScore:1E3,ghostModeSwitchTimes:[5,20,5,20,5,1037,1/60,1],penForceTime:3,penLeavingLimits:[0,0,0,0]},{ghostSpeed:0.95,ghostTunnelSpeed:0.5,playerSpeed:1,dotEatingSpeed:0.87,ghostFrightSpeed:0.6,playerFrightSpeed:1,dotEatingFrightSpeed:0.87,elroyDotsLeftPart1:50,elroySpeedPart1:1,elroyDotsLeftPart2:25,elroySpeedPart2:1.05,frightTime:2,frightBlinkCount:5,fruit:5,fruitScore:1E3,ghostModeSwitchTimes:[5,20,5,20,5,1037,1/60,1],penForceTime:3,penLeavingLimits:[0,0,0,0]},{ghostSpeed:0.95,ghostTunnelSpeed:0.5, playerSpeed:1,dotEatingSpeed:0.87,ghostFrightSpeed:0.6,playerFrightSpeed:1,dotEatingFrightSpeed:0.87,elroyDotsLeftPart1:60,elroySpeedPart1:1,elroyDotsLeftPart2:30,elroySpeedPart2:1.05,frightTime:1,frightBlinkCount:3,fruit:6,fruitScore:2E3,ghostModeSwitchTimes:[5,20,5,20,5,1037,1/60,1],penForceTime:3,penLeavingLimits:[0,0,0,0],cutsceneId:3},{ghostSpeed:0.95,ghostTunnelSpeed:0.5,playerSpeed:1,dotEatingSpeed:0.87,ghostFrightSpeed:0.6,playerFrightSpeed:1,dotEatingFrightSpeed:0.87,elroyDotsLeftPart1:60, elroySpeedPart1:1,elroyDotsLeftPart2:30,elroySpeedPart2:1.05,frightTime:5,frightBlinkCount:5,fruit:6,fruitScore:2E3,ghostModeSwitchTimes:[5,20,5,20,5,1037,1/60,1],penForceTime:3,penLeavingLimits:[0,0,0,0]},{ghostSpeed:0.95,ghostTunnelSpeed:0.5,playerSpeed:1,dotEatingSpeed:0.87,ghostFrightSpeed:0.6,playerFrightSpeed:1,dotEatingFrightSpeed:0.87,elroyDotsLeftPart1:60,elroySpeedPart1:1,elroyDotsLeftPart2:30,elroySpeedPart2:1.05,frightTime:2,frightBlinkCount:5,fruit:7,fruitScore:3E3,ghostModeSwitchTimes:[5, 20,5,20,5,1037,1/60,1],penForceTime:3,penLeavingLimits:[0,0,0,0]},{ghostSpeed:0.95,ghostTunnelSpeed:0.5,playerSpeed:1,dotEatingSpeed:0.87,ghostFrightSpeed:0.6,playerFrightSpeed:1,dotEatingFrightSpeed:0.87,elroyDotsLeftPart1:80,elroySpeedPart1:1,elroyDotsLeftPart2:40,elroySpeedPart2:1.05,frightTime:1,frightBlinkCount:3,fruit:7,fruitScore:3E3,ghostModeSwitchTimes:[5,20,5,20,5,1037,1/60,1],penForceTime:3,penLeavingLimits:[0,0,0,0]},{ghostSpeed:0.95,ghostTunnelSpeed:0.5,playerSpeed:1,dotEatingSpeed:0.87, ghostFrightSpeed:0.6,playerFrightSpeed:1,dotEatingFrightSpeed:0.87,elroyDotsLeftPart1:80,elroySpeedPart1:1,elroyDotsLeftPart2:40,elroySpeedPart2:1.05,frightTime:1,frightBlinkCount:3,fruit:8,fruitScore:5E3,ghostModeSwitchTimes:[5,20,5,20,5,1037,1/60,1],penForceTime:3,penLeavingLimits:[0,0,0,0],cutsceneId:3},{ghostSpeed:0.95,ghostTunnelSpeed:0.5,playerSpeed:1,dotEatingSpeed:0.87,ghostFrightSpeed:0.6,playerFrightSpeed:1,dotEatingFrightSpeed:0.87,elroyDotsLeftPart1:80,elroySpeedPart1:1,elroyDotsLeftPart2:40, elroySpeedPart2:1.05,frightTime:3,frightBlinkCount:5,fruit:8,fruitScore:5E3,ghostModeSwitchTimes:[5,20,5,20,5,1037,1/60,1],penForceTime:3,penLeavingLimits:[0,0,0,0]},{ghostSpeed:0.95,ghostTunnelSpeed:0.5,playerSpeed:1,dotEatingSpeed:0.87,ghostFrightSpeed:0.6,playerFrightSpeed:1,dotEatingFrightSpeed:0.87,elroyDotsLeftPart1:100,elroySpeedPart1:1,elroyDotsLeftPart2:50,elroySpeedPart2:1.05,frightTime:1,frightBlinkCount:3,fruit:8,fruitScore:5E3,ghostModeSwitchTimes:[5,20,5,20,5,1037,1/60,1],penForceTime:3, penLeavingLimits:[0,0,0,0]},{ghostSpeed:0.95,ghostTunnelSpeed:0.5,playerSpeed:1,dotEatingSpeed:0.87,ghostFrightSpeed:0.6,playerFrightSpeed:1,dotEatingFrightSpeed:0.87,elroyDotsLeftPart1:100,elroySpeedPart1:1,elroyDotsLeftPart2:50,elroySpeedPart2:1.05,frightTime:1,frightBlinkCount:3,fruit:8,fruitScore:5E3,ghostModeSwitchTimes:[5,20,5,20,5,1037,1/60,1],penForceTime:3,penLeavingLimits:[0,0,0,0]},{ghostSpeed:0.95,ghostTunnelSpeed:0.5,playerSpeed:1,dotEatingSpeed:0.87,ghostFrightSpeed:0.6,playerFrightSpeed:1, dotEatingFrightSpeed:0.87,elroyDotsLeftPart1:100,elroySpeedPart1:1,elroyDotsLeftPart2:50,elroySpeedPart2:1.05,frightTime:0,frightBlinkCount:0,fruit:8,fruitScore:5E3,ghostModeSwitchTimes:[5,20,5,20,5,1037,1/60,1],penForceTime:3,penLeavingLimits:[0,0,0,0],cutsceneId:3},{ghostSpeed:0.95,ghostTunnelSpeed:0.5,playerSpeed:1,dotEatingSpeed:0.87,ghostFrightSpeed:0.6,playerFrightSpeed:1,dotEatingFrightSpeed:0.87,elroyDotsLeftPart1:100,elroySpeedPart1:1,elroyDotsLeftPart2:50,elroySpeedPart2:1.05,frightTime:1, frightBlinkCount:3,fruit:8,fruitScore:5E3,ghostModeSwitchTimes:[5,20,5,20,5,1037,1/60,1],penForceTime:3,penLeavingLimits:[0,0,0,0]},{ghostSpeed:0.95,ghostTunnelSpeed:0.5,playerSpeed:1,dotEatingSpeed:0.87,ghostFrightSpeed:0.6,playerFrightSpeed:1,dotEatingFrightSpeed:0.87,elroyDotsLeftPart1:120,elroySpeedPart1:1,elroyDotsLeftPart2:60,elroySpeedPart2:1.05,frightTime:0,frightBlinkCount:0,fruit:8,fruitScore:5E3,ghostModeSwitchTimes:[5,20,5,20,5,1037,1/60,1],penForceTime:3,penLeavingLimits:[0,0,0,0]},{ghostSpeed:0.95, ghostTunnelSpeed:0.5,playerSpeed:1,dotEatingSpeed:0.87,ghostFrightSpeed:0.6,playerFrightSpeed:1,dotEatingFrightSpeed:0.87,elroyDotsLeftPart1:120,elroySpeedPart1:1,elroyDotsLeftPart2:60,elroySpeedPart2:1.05,frightTime:0,frightBlinkCount:0,fruit:8,fruitScore:5E3,ghostModeSwitchTimes:[5,20,5,20,5,1037,1/60,1],penForceTime:3,penLeavingLimits:[0,0,0,0]},{ghostSpeed:0.95,ghostTunnelSpeed:0.5,playerSpeed:0.9,dotEatingSpeed:0.79,ghostFrightSpeed:0.75,playerFrightSpeed:0.9,dotEatingFrightSpeed:0.79,elroyDotsLeftPart1:120, elroySpeedPart1:1,elroyDotsLeftPart2:60,elroySpeedPart2:1.05,frightTime:0,frightBlinkCount:0,fruit:8,fruitScore:5E3,ghostModeSwitchTimes:[5,20,5,20,5,1037,1/60,1],penForceTime:3,penLeavingLimits:[0,0,0,0]}],A={1:[{x:37.6,y:7,dir:1,dest:6.375,speed:0.48},{x:37.6,y:6.375,dir:2,dest:7.625,speed:0.48},{x:37.6,y:7.625,dir:1,dest:7,speed:0.48}],2:[{x:39.5,y:7,dir:2,dest:7.625,speed:0.48},{x:39.5,y:7.625,dir:1,dest:6.375,speed:0.48},{x:39.5,y:6.375,dir:2,dest:7,speed:0.48}],3:[{x:41.4,y:7,dir:1,dest:6.375, speed:0.48},{x:41.4,y:6.375,dir:2,dest:7.625,speed:0.48},{x:41.4,y:7.625,dir:1,dest:7,speed:0.48}],4:[{x:37.6,y:7,dir:8,dest:39.5,speed:y},{x:39.5,y:7,dir:1,dest:4,speed:y}],5:[{x:39.5,y:7,dir:1,dest:4,speed:y}],6:[{x:41.4,y:7,dir:4,dest:39.5,speed:y},{x:39.5,y:7,dir:1,dest:4,speed:y}],7:[{x:39.5,y:4,dir:2,dest:7,speed:1.6},{x:39.5,y:7,dir:4,dest:37.625,speed:1.6}],8:[{x:39.5,y:4,dir:2,dest:7,speed:1.6}],9:[{x:39.5,y:4,dir:2,dest:7,speed:1.6},{x:39.5,y:7,dir:8,dest:41.375,speed:1.6}],10:[{x:37.6, y:7,dir:8,dest:39.5,speed:y},{x:39.5,y:7,dir:1,dest:4,speed:y}],11:[{x:39.5,y:7,dir:1,dest:4,speed:y}],12:[{x:41.4,y:7,dir:4,dest:39.5,speed:y},{x:39.5,y:7,dir:1,dest:4,speed:y}]},B={1:{actors:[{ghost:e,x:64,y:9,id:0},{ghost:a,x:68.2,y:9,id:1}],sequence:[{time:5.5,moves:[{dir:4,speed:0.75*0.8*2},{dir:4,speed:0.78*0.8*2}]},{time:0.1,moves:[{dir:4,speed:32},{dir:4,speed:0}]},{time:9,moves:[{dir:8,speed:0.75*0.8*2,elId:&quot;pcm-bpcm&quot;},{dir:8,speed:0.8,mode:4}]}]},2:{actors:[{ghost:e,x:64,y:9,id:0},{ghost:a, x:70.2,y:9,id:1},{ghost:a,x:32,y:9.5,id:2}],sequence:[{time:2.7,moves:[{dir:4,speed:0.75*0.8*2},{dir:4,speed:0.78*0.8*2},{dir:0,speed:0,elId:&quot;pcm-stck&quot;}]},{time:1,moves:[{dir:4,speed:0.75*0.8*2},{dir:4,speed:0.1*0.8},{dir:0,speed:0,elId:&quot;pcm-stck&quot;}]},{time:1.3,moves:[{dir:4,speed:0.75*0.8*2},{dir:4,speed:0},{dir:0,speed:0,elId:&quot;pcm-stck&quot;}]},{time:1,moves:[{dir:4,speed:0.75*0.8*2},{dir:4,speed:0,elId:&quot;pcm-ghfa&quot;},{dir:0,speed:0,elId:&quot;pcm-stck&quot;}]},{time:2.5,moves:[{dir:4,speed:0.75*0.8*2},{dir:4,speed:0, elId:&quot;pcm-ghfa&quot;},{dir:0,speed:0,elId:&quot;pcm-stck&quot;}]}]},3:{actors:[{ghost:e,x:64,y:9,id:0},{ghost:a,x:70.2,y:9,id:2}],sequence:[{time:5.3,moves:[{dir:4,speed:0.75*0.8*2},{dir:4,speed:0.78*0.8*2,elId:&quot;pcm-ghin&quot;}]},{time:5.3,moves:[{dir:4,speed:0},{dir:8,speed:0.78*0.8*2,elId:&quot;pcm-gbug&quot;}]}]}},C=[90,45,30],D=C[0];function E(b){this.id=b} E.prototype.A=function(){var b=r[g.playerCount][this.id];this.pos=[b.y*8,b.x*8];this.posDelta=[0,0];this.tilePos=[b.y*8,b.x*8];this.targetPos=[b.scatterY*8,b.scatterX*8];this.scatterPos=[b.scatterY*8,b.scatterX*8];this.lastActiveDir=this.dir=b.dir;this.physicalSpeed=this.requestedDir=this.nextDir=0;this.c(0);this.reverseDirectionsNext=this.freeToLeavePen=this.modeChangedWhileInPen=this.eatenInThisFrightMode=e;this.l()}; E.prototype.createElement=function(){this.el=document.createElement(&quot;div&quot;);this.el.className=&quot;pcm-ac&quot;;this.el.id=&quot;actor&quot;+this.id;g.prepareElement(this.el,0,0);g.playfieldEl.appendChild(this.el);this.elPos=[0,0];this.elBackgroundPos=[0,0]}; E.prototype.a=function(b){var c=this.mode;this.mode=b;if(this.id==g.playerCount+3&amp;&amp;(b==16||c==16))g.updateCruiseElroySpeed();switch(c){case 32:g.ghostExitingPenNow=e;break;case 8:g.ghostEyesCount&gt;0&amp;&amp;g.ghostEyesCount--;g.ghostEyesCount==0&amp;&amp;g.playAmbientSound();break}switch(b){case 4:this.fullSpeed=g.levels.ghostFrightSpeed*0.8;this.tunnelSpeed=g.levels.ghostTunnelSpeed*0.8;this.followingRoutine=e;break;case 1:this.fullSpeed=g.levels.ghostSpeed*0.8;this.tunnelSpeed=g.levels.ghostTunnelSpeed*0.8;this.followingRoutine=
e;break;case 2:this.targetPos=this.scatterPos;this.fullSpeed=g.levels.ghostSpeed*0.8;this.tunnelSpeed=g.levels.ghostTunnelSpeed*0.8;this.followingRoutine=e;break;case 8:this.tunnelSpeed=this.fullSpeed=1.6;this.targetPos=[s[0],s[1]];this.freeToLeavePen=this.followingRoutine=e;break;case 16:this.l();this.followingRoutine=a;this.routineMoveId=-1;switch(this.id){case g.playerCount+1:this.routineToFollow=2;break;case g.playerCount+2:this.routineToFollow=1;break;case g.playerCount+3:this.routineToFollow=
3;break}break;case 32:this.followingRoutine=a;this.routineMoveId=-1;switch(this.id){case g.playerCount+1:this.routineToFollow=5;break;case g.playerCount+2:this.routineToFollow=4;break;case g.playerCount+3:this.routineToFollow=6;break}g.ghostExitingPenNow=a;break;case 64:this.followingRoutine=a;this.routineMoveId=-1;switch(this.id){case g.playerCount:case g.playerCount+1:this.routineToFollow=8;break;case g.playerCount+2:this.routineToFollow=7;break;case g.playerCount+3:this.routineToFollow=9;break}break;
case 128:this.followingRoutine=a;this.routineMoveId=-1;switch(this.id){case g.playerCount:case g.playerCount+1:this.routineToFollow=11;break;case g.playerCount+2:this.routineToFollow=10;break;case g.playerCount+3:this.routineToFollow=12;break}break}this.d()};E.prototype.l=function(){if(this.id&gt;=g.playerCount)this.targetPlayerId=Math.floor(g.rand()*g.playerCount)};
E.prototype.z=function(b){if(this.dir==g.oppositeDirections[b]){this.dir=b;this.posDelta=[0,0];this.currentSpeed!=2&amp;&amp;this.c(0);if(this.dir!=0)this.lastActiveDir=this.dir;this.nextDir=0}else if(this.dir!=b)if(this.dir==0){if(g.playfield[this.pos[0]][this.pos[1]].allowedDir&amp;b)this.dir=b}else{var c=g.playfield[this.tilePos[0]][this.tilePos[1]];if(c&amp;&amp;c.allowedDir&amp;b){c=l[this.dir];var d=[this.pos[0],this.pos[1]];d[c language=&quot;.axis&quot;][/c]-=c.increment;var f=0;if(d[0]==this.tilePos[0]&amp;&amp;d[1]==this.tilePos[1])f=1;else{d[c language=&quot;.axis&quot;][/c]-=
c.increment;if(d[0]==this.tilePos[0]&amp;&amp;d[1]==this.tilePos[1])f=2}if(f){this.dir=b;this.pos[0]=this.tilePos[0];this.pos[1]=this.tilePos[1];c=l[this.dir];this.pos[c language=&quot;.axis&quot;][/c]+=c.increment*f;return}}this.nextDir=b;this.posDelta=[0,0]}};
E.prototype.i=function(b){var c=this.tilePos,d=l[this.dir],f=[c language=&quot;[0&quot;][/c],c[1]];f[d.axis]+=d.increment*8;var h=g.playfield[f[0]][f[1]];if(b&amp;&amp;!h.intersection)h=g.playfield[c language=&quot;[0&quot;][/c]][c language=&quot;[1&quot;][/c]];if(h.intersection)switch(this.mode){case 2:case 1:case 8:if((this.dir&amp;h.allowedDir)==0&amp;&amp;h.allowedDir==g.oppositeDirections[this.dir])this.nextDir=g.oppositeDirections[this.dir];else{b=99999999999;c=0;for(var j in i){var k=i[j];if(h.allowedDir&amp;k&amp;&amp;this.dir!=g.oppositeDirections[k]){d=l[k];var x=[f[0],f[1]];x[d.axis]+=d.increment;
d=g.getDistance(x,[this.targetPos[0],this.targetPos[1]]);if(d&lt;b){b=d;c=k}}}if(c)this.nextDir=c}break;case 4:if((this.dir&amp;h.allowedDir)==0&amp;&amp;h.allowedDir==g.oppositeDirections[this.dir])this.nextDir=g.oppositeDirections[this.dir];else{do f=i[Math.floor(g.rand()*4)];while((f&amp;h.allowedDir)==0||f==g.oppositeDirections[this.dir]);this.nextDir=f}break}}; E.prototype.p=function(b){g.tilesChanged=a;if(this.reverseDirectionsNext){this.dir=g.oppositeDirections[this.dir];this.nextDir=0;this.reverseDirectionsNext=e;this.i(a)}if(!this.ghost&amp;&amp;!g.playfield[b[0]][b[1]].path){this.pos[0]=this.lastGoodTilePos[0];this.pos[1]=this.lastGoodTilePos[1];b[0]=this.lastGoodTilePos[0];b[1]=this.lastGoodTilePos[1];this.dir=0}else this.lastGoodTilePos=[b[0],b[1]];g.playfield[b[0]][b[1]].type==1&amp;&amp;this.mode!=8?this.c(2):this.c(0);!this.ghost&amp;&amp;g.playfield[b[0]][b[1]].dot&amp;&amp; g.dotEaten(this.id,b);this.tilePos[0]=b[0];this.tilePos[1]=b[1]};E.prototype.t=function(){var b=this.tilePos;switch(this.dir){case 1:var c=[b[0],b[1]],d=[b[0]+3.6,b[1]];break;case 2:c=[b[0]-4,b[1]];d=[b[0],b[1]];break;case 4:c=[b[0],b[1]];d=[b[0],b[1]+3.6];break;case 8:c=[b[0],b[1]-4];d=[b[0],b[1]];break}if(this.pos[0]&gt;=c[0]&amp;&amp;this.pos[0]&lt;=d[0]&amp;&amp;this.pos[1]&gt;=c[1]&amp;&amp;this.pos[1]&lt;=d[1]){b=l[this.nextDir];this.posDelta[b.axis]+=b.increment}};
E.prototype.n=function(){if(this.pos[0]==q[0].y*8&amp;&amp;this.pos[1]==q[0].x*8){this.pos[0]=q[1].y*8;this.pos[1]=(q[1].x-1)*8}else if(this.pos[0]==q[1].y*8&amp;&amp;this.pos[1]==q[1].x*8){this.pos[0]=q[0].y*8;this.pos[1]=(q[0].x+1)*8}this.mode==8&amp;&amp;this.pos[0]==s[0]&amp;&amp;this.pos[1]==s[1]&amp;&amp;this.a(64);if(!this.ghost&amp;&amp;this.pos[0]==v[0]&amp;&amp;(this.pos[1]==v[1]||this.pos[1]==v[1]+8))g.eatFruit(this.id)};
E.prototype.u=function(){this.n();this.ghost&amp;&amp;this.i(e);var b=g.playfield[this.pos[0]][this.pos[1]];if(b.intersection)if(this.nextDir&amp;&amp;this.nextDir&amp;b.allowedDir){if(this.dir!=0)this.lastActiveDir=this.dir;this.dir=this.nextDir;this.nextDir=0;if(!this.ghost){this.pos[0]+=this.posDelta[0];this.pos[1]+=this.posDelta[1];this.posDelta=[0,0]}}else if((this.dir&amp;b.allowedDir)==0){if(this.dir!=0)this.lastActiveDir=this.dir;this.nextDir=this.dir=0;this.c(0)}};
E.prototype.o=function(){var b=this.pos[0]/8,c=this.pos[1]/8,d=[Math.round(b)*8,Math.round(c)*8];if(d[0]!=this.tilePos[0]||d[1]!=this.tilePos[1])this.p(d);else{b=[Math.floor(b)*8,Math.floor(c)*8];this.pos[1]==b[1]&amp;&amp;this.pos[0]==b[0]&amp;&amp;this.u()}!this.ghost&amp;&amp;this.nextDir&amp;&amp;g.playfield[d[0]][d[1]].intersection&amp;&amp;this.nextDir&amp;g.playfield[d[0]][d[1]].allowedDir&amp;&amp;this.t()};
E.prototype.B=function(){if(this.id==g.playerCount&amp;&amp;g.dotsRemaining&lt;g.levels.elroyDotsLeftPart1&amp;&amp;this.mode==2&amp;&amp;(!g.lostLifeOnThisLevel||g.actors[g.playerCount+3].mode!=16)){var b=g.actors[this.targetPlayerId];this.targetPos=[b.tilePos[0],b.tilePos[1]]}else if(this.ghost&amp;&amp;this.mode==1){b=g.actors[this.targetPlayerId];switch(this.id){case g.playerCount:this.targetPos=[b.tilePos[0],b.tilePos[1]];break;case g.playerCount+1:this.targetPos=[b.tilePos[0],b.tilePos[1]];var c=l[b.dir];this.targetPos[c language=&quot;.axis&quot;][/c]+= 32*c.increment;if(b.dir==1)this.targetPos[1]-=32;break;case g.playerCount+2:var d=g.actors[g.playerCount],f=[b.tilePos[0],b.tilePos[1]];c=l[b.dir];f[c language=&quot;.axis&quot;][/c]+=16*c.increment;if(b.dir==1)f[1]-=16;this.targetPos[0]=f[0]*2-d.tilePos[0];this.targetPos[1]=f[1]*2-d.tilePos[1];break;case g.playerCount+3:c=g.getDistance(b.tilePos,this.tilePos);this.targetPos=c&gt;64?[b.tilePos[0],b.tilePos[1]]:this.scatterPos;break}}};
E.prototype.v=function(){this.routineMoveId++;if(this.routineMoveId==A[this.routineToFollow].length)if(this.mode==16&amp;&amp;this.freeToLeavePen&amp;&amp;!g.ghostExitingPenNow){this.eatenInThisFrightMode?this.a(128):this.a(32);return}else if(this.mode==32||this.mode==128){this.pos=[s[0],s[1]+4];this.dir=this.modeChangedWhileInPen?8:4;var b=g.mainGhostMode;if(this.mode==128&amp;&amp;b==4)b=g.lastMainGhostMode;this.a(b);return}else if(this.mode==64){if(this.id==g.playerCount||this.freeToLeavePen)this.a(128);else{this.eatenInThisFrightMode=
a;this.a(16)}return}else this.routineMoveId=0;b=A[this.routineToFollow][this.routineMoveId];this.pos[0]=b.y*8;this.pos[1]=b.x*8;this.dir=b.dir;this.physicalSpeed=0;this.speedIntervals=g.getSpeedIntervals(b.speed);this.proceedToNextRoutineMove=e;this.b()};
E.prototype.m=function(){var b=A[this.routineToFollow][this.routineMoveId];if(b)if(this.speedIntervals[g.intervalTime]){var c=l[this.dir];this.pos[c language=&quot;.axis&quot;][/c]+=c.increment;switch(this.dir){case 1:case 4:if(this.pos[c language=&quot;.axis&quot;][/c]&lt;b.dest*8){this.pos[c language=&quot;.axis&quot;][/c]=b.dest*8;this.proceedToNextRoutineMove=a}break;case 2:case 8:if(this.pos[c language=&quot;.axis&quot;][/c]&gt;b.dest*8){this.pos[c language=&quot;.axis&quot;][/c]=b.dest*8;this.proceedToNextRoutineMove=a}break}this.b()}};
E.prototype.j=function(){if(this.routineMoveId==-1||this.proceedToNextRoutineMove)this.v();this.m()};E.prototype.d=function(){switch(this.currentSpeed){case 0:var b=this.id==g.playerCount&amp;&amp;(this.mode==2||this.mode==1)?g.cruiseElroySpeed:this.fullSpeed;break;case 1:b=this.dotEatingSpeed;break;case 2:b=this.tunnelSpeed;break}if(this.physicalSpeed!=b){this.physicalSpeed=b;this.speedIntervals=g.getSpeedIntervals(this.physicalSpeed)}};E.prototype.c=function(b){this.currentSpeed=b;this.d()};
E.prototype.e=function(){if(this.dir)if(this.speedIntervals[g.intervalTime]){var b=l[this.dir];this.pos[b.axis]+=b.increment;this.o();this.b()}};E.prototype.move=function(){if(g.gameplayMode==0||this.ghost&amp;&amp;g.gameplayMode==1&amp;&amp;(this.mode==8||this.mode==64)){if(this.requestedDir!=0){this.z(this.requestedDir);this.requestedDir=0}if(this.followingRoutine){this.j();this.mode==64&amp;&amp;this.j()}else{this.e();this.mode==8&amp;&amp;this.e()}}};
E.prototype.k=function(){var b=g.getPlayfieldX(this.pos[1]+this.posDelta[1]),c=g.getPlayfieldY(this.pos[0]+this.posDelta[0]);if(this.elPos[0]!=c||this.elPos[1]!=b){this.elPos[0]=c;this.elPos[1]=b;this.el.style.left=b+&quot;px&quot;;this.el.style.top=c+&quot;px&quot;}};
E.prototype.s=function(){var b=0,c=0,d=this.dir;if(d==0)d=this.lastActiveDir;if(g.gameplayMode==1&amp;&amp;this.id==g.playerEatingGhostId){b=3;c=0}else if((g.gameplayMode==9||g.gameplayMode==10)&amp;&amp;this.id==0){b=2;c=0}else if(g.gameplayMode==4||g.gameplayMode==5||g.gameplayMode==7){b=this.id==0?2:4;c=0}else if(g.gameplayMode==3)if(this.id==g.playerDyingId){d=20-Math.floor(g.gameplayModeTime/g.timing[4]*21);if(this.id==0){b=d-1;switch(b){case -1:b=0;break;case 11:b=10;break;case 12:case 13:case 14:case 15:case 16:case 17:case 18:case 19:case 20:b=
11;break}c=12}else switch(d){case 0:case 1:case 2:case 6:case 10:b=4;c=3;break;case 3:case 7:case 11:b=4;c=0;break;case 4:case 8:case 12:case 13:case 14:case 15:case 16:case 17:case 18:case 19:case 20:b=4;c=2;break;case 5:case 9:b=4;c=1;break}}else{b=3;c=0}else if(this.el.id==&quot;pcm-bpcm&quot;){b=14;c=0;d=Math.floor(g.globalTime*0.2)%4;if(d==3)d=1;c+=2*d}else{switch(d){case 4:c=0;break;case 8:c=1;break;case 1:c=2;break;case 2:c=3;break}if(g.gameplayMode!=2)b=Math.floor(g.globalTime*0.3)%4;if(b==3&amp;&amp;this.dir==
0)b=0;if(b==2&amp;&amp;this.id==0)b=0;if(b==3){b=2;if(this.id==0)c=0}if(this.id==1)b+=4}return[c language=&quot;,b&quot;][/c]};
E.prototype.r=function(){var b=0,c=0;if(g.gameplayMode==10||g.gameplayMode==4||g.gameplayMode==3){b=3;c=0}else if(g.gameplayMode==1&amp;&amp;this.id==g.ghostBeingEatenId){switch(g.modeScoreMultiplier){case 2:b=0;break;case 4:b=1;break;case 8:b=2;break;case 16:b=3;break}c=11;this.el.className=&quot;pcm-ac pcm-n&quot;}else if(this.mode==4||(this.mode==16||this.mode==32)&amp;&amp;g.mainGhostMode==4&amp;&amp;!this.eatenInThisFrightMode){b=0;c=8;if(g.frightModeTime&lt;g.levels.frightTotalTime-g.levels.frightTime&amp;&amp;Math.floor(g.frightModeTime/ g.timing[1])%2==0)b+=2;b+=Math.floor(g.globalTime/16)%2}else if(this.mode==8||this.mode==64){c=this.nextDir;if(!c)c=this.dir;switch(c){case 4:b=2;break;case 8:b=3;break;case 1:b=0;break;case 2:b=1;break}c=10}else if(this.el.id==&quot;pcm-ghin&quot;){b=6;c=8;b+=Math.floor(g.globalTime/16)%2}else if(this.el.id==&quot;pcm-gbug&quot;){b=6;c=9;c+=Math.floor(g.globalTime/16)%2}else if(this.el.id==&quot;pcm-ghfa&quot;){b=g.cutsceneSequenceId==3?6:7;c=11}else if(this.el.id==&quot;pcm-stck&quot;){b=g.cutsceneSequenceId==1?g.cutsceneTime&gt;60?1:g.cutsceneTime&gt;
45?2:3:g.cutsceneSequenceId==2?3:g.cutsceneSequenceId==3||g.cutsceneSequenceId==4?4:0;c=13}else{c=this.nextDir;if(!c||g.playfield[this.tilePos[0]][this.tilePos[1]].type==1)c=this.dir;switch(c){case 4:b=4;break;case 8:b=6;break;case 1:b=0;break;case 2:b=2;break}c=4+this.id-g.playerCount;if(this.speed&gt;0||g.gameplayMode!=13)b+=Math.floor(g.globalTime/16)%2}return[c language=&quot;,b&quot;][/c]};
E.prototype.b=function(){this.k();var b=[0,0];b=g.gameplayMode==8||g.gameplayMode==14?[0,3]:this.ghost?this.r():this.s();if(this.elBackgroundPos[0]!=b[0]||this.elBackgroundPos[1]!=b[1]){this.elBackgroundPos[0]=b[0];this.elBackgroundPos[1]=b[1];b[0]*=16;b[1]*=16;g.changeElementBkPos(this.el,b[1],b[0],a)}};g.rand=function(){var b=4294967296,c=134775813;c=c*g.randSeed+1;return(g.randSeed=c%b)/b};g.seed=function(b){g.randSeed=b};
g.getDistance=function(b,c){return Math.sqrt((c[1]-b[1])*(c[1]-b[1])+(c[0]-b[0])*(c[0]-b[0]))};g.getPlayfieldX=function(b){return b+-32};g.getPlayfieldY=function(b){return b+0};g.getCorrectedSpritePos=function(b){return b/8*10+2};g.getDotElementId=function(b,c){return&quot;pcm-d&quot;+b+&quot;-&quot;+c};g.showElementById=function(b,c){var d=document.getElementById(b);if(d)d.style.visibility=c?&quot;visible&quot;:&quot;hidden&quot;};
g.getAbsoluteElPos=function(b){var c=[0,0];do{c[0]+=b.offsetTop;c[1]+=b.offsetLeft}while(b=b.offsetParent);return c};
g.prepareElement=function(b,c,d){c=g.getCorrectedSpritePos(parseInt(c,10));d=g.getCorrectedSpritePos(parseInt(d,10));if(g.useCss){b.style.backgroundImage=&quot;url(/logos/pacman10-hp-sprite.png)&quot;;b.style.backgroundPosition=-c+&quot;px &quot;+-d+&quot;px&quot;;b.style.backgroundRepeat=&quot;no-repeat&quot;}else{b.style.overflow=&quot;hidden&quot;;c=&quot;display: block; position: relative; left: &quot;+-c+&quot;px; top: &quot;+-d+&quot;px&quot;;b.innerHTML='&lt;img style=&quot;'+c+'&quot; mce_style=&quot;'+c+'&quot; src=&quot;/logos/pacman10-hp-sprite.png&quot; mce_src=&quot;/logos/pacman10-hp-sprite.png&quot;&gt;'}};
g.changeElementBkPos=function(b,c,d,f){if(f){c=g.getCorrectedSpritePos(c);d=g.getCorrectedSpritePos(d)}if(g.useCss)b.style.backgroundPosition=-c+&quot;px &quot;+-d+&quot;px&quot;;else if(b.childNodes[0]){b.childNodes[0].style.left=-c+&quot;px&quot;;b.childNodes[0].style.top=-d+&quot;px&quot;}};g.determinePlayfieldDimensions=function(){g.playfieldWidth=0;g.playfieldHeight=0;for(var b in n){var c=n[b];if(c.w){c=c.x+c.w-1;if(c&gt;g.playfieldWidth)g.playfieldWidth=c}else{c=c.y+c.h-1;if(c&gt;g.playfieldHeight)g.playfieldHeight=c}}};
g.preparePlayfield=function(){g.playfield=[];for(var b=0;b&lt;=g.playfieldHeight+1;b++){g.playfield[b*8]=[];for(var c=-2;c&lt;=g.playfieldWidth+1;c++)g.playfield[b*8][c language=&quot;*8&quot;][/c]={path:0,dot:0,intersection:0}}};
g.preparePaths=function(){for(var b in n){var c=n[b],d=c.type;if(c.w){for(var f=c.y*8,h=c.x*8;h&lt;=(c.x+c.w-1)*8;h+=8){g.playfield[f][h].path=a;if(g.playfield[f][h].dot==0){g.playfield[f][h].dot=1;g.dotsRemaining++}g.playfield[f][h].type=!d||h!=c.x*8&amp;&amp;h!=(c.x+c.w-1)*8?d:0}g.playfield[f][c language=&quot;.x*8&quot;][/c].intersection=a;g.playfield[f][(c.x+c.w-1)*8].intersection=a}else{h=c.x*8;for(f=c.y*8;f&lt;=(c.y+c.h-1)*8;f+=8){if(g.playfield[f][h].path)g.playfield[f][h].intersection=a;g.playfield[f][h].path=a;if(g.playfield[f][h].dot==
0){g.playfield[f][h].dot=1;g.dotsRemaining++}g.playfield[f][h].type=!d||f!=c.y*8&amp;&amp;f!=(c.y+c.h-1)*8?d:0}g.playfield[c language=&quot;.y*8&quot;][/c][h].intersection=a;g.playfield[(c.y+c.h-1)*8][h].intersection=a}}for(b in o)if(o[b].w)for(h=o[b].x*8;h&lt;=(o[b].x+o[b].w-1)*8;h+=8){g.playfield[o[b].y*8][h].dot=0;g.dotsRemaining--}else for(f=o[b].y*8;f&lt;=(o[b].y+o[b].h-1)*8;f+=8){g.playfield[f][o[b].x*8].dot=0;g.dotsRemaining--}};
g.prepareAllowedDirections=function(){for(var b=8;b&lt;=g.playfieldHeight*8;b+=8)for(var c=8;c&lt;=g.playfieldWidth*8;c+=8){g.playfield[b][c][/c].allowedDir=0;if(g.playfield[b-8][c][/c].path)g.playfield[b][c][/c].allowedDir+=1;if(g.playfield[b+8][c][/c].path)g.playfield[b][c][/c].allowedDir+=2;if(g.playfield[b][c language=&quot;-8&quot;][/c].path)g.playfield[b][c][/c].allowedDir+=4;if(g.playfield[b][c language=&quot;+8&quot;][/c].path)g.playfield[b][c][/c].allowedDir+=8}};
g.createDotElements=function(){for(var b=8;b&lt;=g.playfieldHeight*8;b+=8)for(var c=8;c&lt;=g.playfieldWidth*8;c+=8)if(g.playfield[b][c][/c].dot){var d=document.createElement(&quot;div&quot;);d.className=&quot;pcm-d&quot;;d.id=g.getDotElementId(b,c);d.style.left=c+-32+&quot;px&quot;;d.style.top=b+0+&quot;px&quot;;g.playfieldEl.appendChild(d)}};
g.createEnergizerElements=function(){for(var b in p){var c=p[b],d=g.getDotElementId(c.y*8,c.x*8);document.getElementById(d).className=&quot;pcm-e&quot;;g.prepareElement(document.getElementById(d),0,144);g.playfield[c language=&quot;.y*8&quot;][/c][c.x*8].dot=2}};g.createFruitElement=function(){g.fruitEl=document.createElement(&quot;div&quot;);g.fruitEl.id=&quot;pcm-f&quot;;g.fruitEl.style.left=g.getPlayfieldX(v[1])+&quot;px&quot;;g.fruitEl.style.top=g.getPlayfieldY(v[0])+&quot;px&quot;;g.prepareElement(g.fruitEl,-32,-16);g.playfieldEl.appendChild(g.fruitEl)};
g.createPlayfieldElements=function(){g.doorEl=document.createElement(&quot;div&quot;);g.doorEl.id=&quot;pcm-do&quot;;g.doorEl.style.display=&quot;none&quot;;g.playfieldEl.appendChild(g.doorEl);g.createDotElements();g.createEnergizerElements();g.createFruitElement()};g.createActors=function(){g.actors=[];for(var b=0;b&lt;g.playerCount+4;b++){g.actors[b]=new E(b);if(b&lt;g.playerCount){g.actors[b].ghost=e;g.actors[b].mode=1}else g.actors[b].ghost=a}};g.restartActors=function(){for(var b in g.actors)g.actors[b].A()}; g.createActorElements=function(){for(var b in g.actors)g.actors[b].createElement()};g.createPlayfield=function(){g.playfieldEl=document.createElement(&quot;div&quot;);g.playfieldEl.id=&quot;pcm-p&quot;;g.canvasEl.appendChild(g.playfieldEl)};g.resetPlayfield=function(){g.dotsRemaining=0;g.dotsEaten=0;g.playfieldEl.innerHTML=&quot;&quot;;g.prepareElement(g.playfieldEl,256,0);g.determinePlayfieldDimensions();g.preparePlayfield();g.preparePaths();g.prepareAllowedDirections();g.createPlayfieldElements();g.createActorElements()}; g.keyPressed=function(b){var c=e;switch(b){case 37:g.actors[0].requestedDir=4;c=a;break;case 38:g.actors[0].requestedDir=1;c=a;break;case 39:g.actors[0].requestedDir=8;c=a;break;case 40:g.actors[0].requestedDir=2;c=a;break;case 65:if(g.playerCount==2){g.actors[1].requestedDir=4;c=a}break;case 83:if(g.playerCount==2){g.actors[1].requestedDir=2;c=a}break;case 68:if(g.playerCount==2){g.actors[1].requestedDir=8;c=a}break;case 87:if(g.playerCount==2){g.actors[1].requestedDir=1;c=a}break}return c}; g.handleKeyDown=function(b){if(!b)b=window.event;if(g.keyPressed(b.keyCode))if(b.preventDefault)b.preventDefault();else b.returnValue=e};g.canvasClicked=function(b,c){var d=g.getAbsoluteElPos(g.canvasEl);b-=d[1]- -32;c-=d[0]-0;d=g.actors[0];var f=g.getPlayfieldX(d.pos[1]+d.posDelta[1])+16,h=g.getPlayfieldY(d.pos[0]+d.posDelta[0])+32,j=Math.abs(b-f),k=Math.abs(c-h);if(j&gt;8&amp;&amp;k&lt;j)d.requestedDir=b&gt;f?8:4;else if(k&gt;8&amp;&amp;j&lt;k)d.requestedDir=c&gt;h?2:1};
g.handleClick=function(b){if(!b)b=window.event;g.canvasClicked(b.clientX,b.clientY)};g.registerTouch=function(){document.body.addEventListener(&quot;touchstart&quot;,g.handleTouchStart,a);g.canvasEl.addEventListener(&quot;touchstart&quot;,g.handleTouchStart,a);document.f&amp;&amp;document.f.q&amp;&amp;document.f.q.addEventListener(&quot;touchstart&quot;,g.handleTouchStart,a)};
g.handleTouchStart=function(b){g.touchDX=0;g.touchDY=0;if(b.touches.length==1){g.touchStartX=b.touches[0].pageX;g.touchStartY=b.touches[0].pageY;document.body.addEventListener(&quot;touchmove&quot;,g.handleTouchMove,a);document.body.addEventListener(&quot;touchend&quot;,g.handleTouchEnd,a)}b.preventDefault();b.stopPropagation()};g.handleTouchMove=function(b){if(b.touches.length&gt;1)g.cancelTouch();else{g.touchDX=b.touches[0].pageX-g.touchStartX;g.touchDY=b.touches[0].pageY-g.touchStartY}b.preventDefault();b.stopPropagation()};
g.handleTouchEnd=function(b){if(g.touchDX==0&amp;&amp;g.touchDY==0)g.canvasClicked(g.touchStartX,g.touchStartY);else{var c=Math.abs(g.touchDX),d=Math.abs(g.touchDY);if(c&lt;8&amp;&amp;d&lt;8)g.canvasClicked(g.touchStartX,g.touchStartY);else if(c&gt;15&amp;&amp;d&lt;c*2/3)g.actors[0].requestedDir=g.touchDX&gt;0?8:4;else if(d&gt;15&amp;&amp;c&lt;d*2/3)g.actors[0].requestedDir=g.touchDY&gt;0?2:1}b.preventDefault();b.stopPropagation();g.cancelTouch()};
g.cancelTouch=function(){document.body.removeEventListener(&quot;touchmove&quot;,g.handleTouchMove,a);document.body.removeEventListener(&quot;touchend&quot;,g.handleTouchEnd,a);g.touchStartX=null;g.touchStartY=null};g.addEventListeners=function(){if(window.addEventListener){window.addEventListener(&quot;keydown&quot;,g.handleKeyDown,e);g.canvasEl.addEventListener(&quot;click&quot;,g.handleClick,e);g.registerTouch()}else{document.body.attachEvent(&quot;onkeydown&quot;,g.handleKeyDown);g.canvasEl.attachEvent(&quot;onclick&quot;,g.handleClick)}};
g.startGameplay=function(){g.score=[0,0];g.extraLifeAwarded=[e,e];g.lives=3;g.level=0;g.paused=e;g.globalTime=0;g.newLevel(a)};
g.restartGameplay=function(b){g.seed(0);g.frightModeTime=0;g.intervalTime=0;g.gameplayModeTime=0;g.fruitTime=0;g.ghostModeSwitchPos=0;g.ghostModeTime=g.levels.ghostModeSwitchTimes[0]*D;g.ghostExitingPenNow=e;g.ghostEyesCount=0;g.tilesChanged=e;g.updateCruiseElroySpeed();g.hideFruit();g.resetForcePenLeaveTime();g.restartActors();g.updateActorPositions();g.switchMainGhostMode(2,a);for(var c=g.playerCount+1;c&lt;g.playerCount+4;c++)g.actors[c][/c].a(16);g.dotEatingChannel=[0,0];g.dotEatingSoundPart=[1,1];g.clearDotEatingNow();
b?g.changeGameplayMode(4):g.changeGameplayMode(6)};g.initiateDoubleMode=function(){if(g.playerCount!=2){g.stopAllAudio();g.changeGameplayMode(12)}};g.newGame=function(){g.playerCount=1;g.createChrome();g.createPlayfield();g.createActors();g.startGameplay()};g.switchToDoubleMode=function(){g.playerCount=2;g.createChrome();g.createPlayfield();g.createActors();g.startGameplay()};g.insertCoin=function(){g.gameplayMode==8||g.gameplayMode==14?g.newGame():g.initiateDoubleMode()};
g.createKillScreenElement=function(b,c,d,f,h){var j=document.createElement(&quot;div&quot;);j.style.left=b+&quot;px&quot;;j.style.top=c+&quot;px&quot;;j.style.width=d+&quot;px&quot;;j.style.height=f+&quot;px&quot;;j.style.zIndex=119;if(h){j.style.background=&quot;url(/logos/pacman10-hp-sprite.png) -&quot;+g.killScreenTileX+&quot;px -&quot;+g.killScreenTileY+&quot;px no-repeat&quot;;g.killScreenTileY+=8}else j.style.background=&quot;black&quot;;g.playfieldEl.appendChild(j)};
g.killScreen=function(){g.seed(0);g.canvasEl.style.visibility=&quot;&quot;;g.createKillScreenElement(272,0,200,80,e);g.createKillScreenElement(280,80,192,56,e);g.killScreenTileX=80;g.killScreenTileY=0;for(var b=280;b&lt;=472;b+=8)for(var c=0;c&lt;=136;c+=8){if(g.rand()&lt;0.03){g.killScreenTileX=Math.floor(g.rand()*25)*10;g.killScreenTileY=Math.floor(g.rand()*2)*10}g.createKillScreenElement(b,c,8,8,a)}g.changeGameplayMode(14)}; g.newLevel=function(b){g.level++;g.levels=g.level&gt;=z.length?z[z.length-1]:z[g.level];g.levels.frightTime=Math.round(g.levels.frightTime*D);g.levels.frightTotalTime=g.levels.frightTime+g.timing[1]*(g.levels.frightBlinkCount*2-1);for(var c in g.actors)g.actors[c][/c].dotCount=0;g.alternatePenLeavingScheme=e;g.lostLifeOnThisLevel=e;g.updateChrome();g.resetPlayfield();g.restartGameplay(b);g.level==256&amp;&amp;g.killScreen()};
g.newLife=function(){g.lostLifeOnThisLevel=a;g.alternatePenLeavingScheme=a;g.alternateDotCount=0;g.lives--;g.updateChromeLives();g.lives==-1?g.changeGameplayMode(8):g.restartGameplay(e)};
g.switchMainGhostMode=function(b,c){if(b==4&amp;&amp;g.levels.frightTime==0)for(var d in g.actors){var f=g.actors[d];if(f.ghost)f.reverseDirectionsNext=a}else{f=g.mainGhostMode;if(b==4&amp;&amp;g.mainGhostMode!=4)g.lastMainGhostMode=g.mainGhostMode;g.mainGhostMode=b;if(b==4||f==4)g.playAmbientSound();switch(b){case 1:case 2:g.currentPlayerSpeed=g.levels.playerSpeed*0.8;g.currentDotEatingSpeed=g.levels.dotEatingSpeed*0.8;break;case 4:g.currentPlayerSpeed=g.levels.playerFrightSpeed*0.8;g.currentDotEatingSpeed=g.levels.dotEatingFrightSpeed*
0.8;g.frightModeTime=g.levels.frightTotalTime;g.modeScoreMultiplier=1;break}for(d in g.actors){f=g.actors[d];if(f.ghost){if(b!=64&amp;&amp;!c)f.modeChangedWhileInPen=a;if(b==4)f.eatenInThisFrightMode=e;if(f.mode!=8&amp;&amp;f.mode!=16&amp;&amp;f.mode!=32&amp;&amp;f.mode!=128&amp;&amp;f.mode!=64||c){if(!c&amp;&amp;f.mode!=4&amp;&amp;f.mode!=b)f.reverseDirectionsNext=a;f.a(b)}}else{f.fullSpeed=g.currentPlayerSpeed;f.dotEatingSpeed=g.currentDotEatingSpeed;f.tunnelSpeed=g.currentPlayerSpeed;f.d()}}}};
g.figureOutPenLeaving=function(){if(g.alternatePenLeavingScheme){g.alternateDotCount++;switch(g.alternateDotCount){case m[1]:g.actors[g.playerCount+1].freeToLeavePen=a;break;case m[2]:g.actors[g.playerCount+2].freeToLeavePen=a;break;case m[3]:if(g.actors[g.playerCount+3].mode==16)g.alternatePenLeavingScheme=e;break}}else if(g.actors[g.playerCount+1].mode==16||g.actors[g.playerCount+1].mode==8){g.actors[g.playerCount+1].dotCount++;if(g.actors[g.playerCount+1].dotCount&gt;=g.levels.penLeavingLimits[1])g.actors[g.playerCount+
1].freeToLeavePen=a}else if(g.actors[g.playerCount+2].mode==16||g.actors[g.playerCount+2].mode==8){g.actors[g.playerCount+2].dotCount++;if(g.actors[g.playerCount+2].dotCount&gt;=g.levels.penLeavingLimits[2])g.actors[g.playerCount+2].freeToLeavePen=a}else if(g.actors[g.playerCount+3].mode==16||g.actors[g.playerCount+3].mode==8){g.actors[g.playerCount+3].dotCount++;if(g.actors[g.playerCount+3].dotCount&gt;=g.levels.penLeavingLimits[3])g.actors[g.playerCount+3].freeToLeavePen=a}};
g.resetForcePenLeaveTime=function(){g.forcePenLeaveTime=g.levels.penForceTime*D};
g.dotEaten=function(b,c){g.dotsRemaining--;g.dotsEaten++;g.actors[b].c(1);g.playDotEatingSound(b);if(g.playfield[c language=&quot;[0&quot;][/c]][c language=&quot;[1&quot;][/c]].dot==2){g.switchMainGhostMode(4,e);g.addToScore(50,b)}else g.addToScore(10,b);var d=document.getElementById(g.getDotElementId(c[0],c[1]));d.style.display=&quot;none&quot;;g.playfield[c language=&quot;[0&quot;][/c]][c language=&quot;[1&quot;][/c]].dot=0;g.updateCruiseElroySpeed();g.resetForcePenLeaveTime();g.figureOutPenLeaving();if(g.dotsEaten==70||g.dotsEaten==170)g.showFruit();g.dotsRemaining==0&amp;&amp;g.finishLevel();g.playAmbientSound()};
g.getFruitSprite=function(b){var c=b&lt;=4?128:160;b=128+16*((b-1)%4);return[c language=&quot;,b&quot;][/c]};g.getFruitScoreSprite=function(b){var c=128;b=16*(b-1);return[c language=&quot;,b&quot;][/c]};g.hideFruit=function(){g.fruitShown=e;g.changeElementBkPos(g.fruitEl,32,16,a)};g.showFruit=function(){g.fruitShown=a;var b=g.getFruitSprite(g.levels.fruit);g.changeElementBkPos(g.fruitEl,b[0],b[1],a);g.fruitTime=g.timing[15]+(g.timing[16]-g.timing[15])*g.rand()};
g.eatFruit=function(b){if(g.fruitShown){g.playSound(&quot;fruit&quot;,0);g.fruitShown=e;var c=g.getFruitScoreSprite(g.levels.fruit);g.changeElementBkPos(g.fruitEl,c[0],c[1],a);g.fruitTime=g.timing[14];g.addToScore(g.levels.fruitScore,b)}};g.updateActorTargetPositions=function(){for(var b=g.playerCount;b&lt;g.playerCount+4;b++)g.actors[b].B()};g.moveActors=function(){for(var b in g.actors)g.actors[b].move()};
g.ghostDies=function(b,c){g.playSound(&quot;eating-ghost&quot;,0);g.addToScore(200*g.modeScoreMultiplier,c);g.modeScoreMultiplier*=2;g.ghostBeingEatenId=b;g.playerEatingGhostId=c;g.changeGameplayMode(1)};g.playerDies=function(b){g.playerDyingId=b;g.changeGameplayMode(2)};
g.detectCollisions=function(){g.tilesChanged=e;for(var b=g.playerCount;b&lt;g.playerCount+4;b++)for(var c=0;c&lt;g.playerCount;c++)if(g.actors[b].tilePos[0]==g.actors[c][/c].tilePos[0]&amp;&amp;g.actors[b].tilePos[1]==g.actors[c][/c].tilePos[1])if(g.actors[b].mode==4){g.ghostDies(b,c);return}else g.actors[b].mode!=8&amp;&amp;g.actors[b].mode!=16&amp;&amp;g.actors[b].mode!=32&amp;&amp;g.actors[b].mode!=128&amp;&amp;g.actors[b].mode!=64&amp;&amp;g.playerDies(c)};
g.updateCruiseElroySpeed=function(){var b=g.levels.ghostSpeed*0.8;if(!g.lostLifeOnThisLevel||g.actors[g.playerCount+3].mode!=16){var c=g.levels;if(g.dotsRemaining&lt;c.elroyDotsLeftPart2)b=c.elroySpeedPart2*0.8;else if(g.dotsRemaining&lt;c.elroyDotsLeftPart1)b=c.elroySpeedPart1*0.8}if(b!=g.cruiseElroySpeed){g.cruiseElroySpeed=b;g.actors[g.playerCount].d()}};
g.getSpeedIntervals=function(b){if(!g.speedIntervals[b]){var c=0,d=0;g.speedIntervals[b]=[];for(var f=0;f&lt;D;f++){c+=b;if(Math.floor(c)&gt;d){g.speedIntervals[b].push(a);d=Math.floor(c)}else g.speedIntervals[b].push(e)}}return g.speedIntervals[b]};g.finishLevel=function(){g.changeGameplayMode(9)};
g.changeGameplayMode=function(b){g.gameplayMode=b;if(b!=13)for(var c=0;c&lt;g.playerCount+4;c++)g.actors[c][/c].b();switch(b){case 0:g.playAmbientSound();break;case 2:g.stopAllAudio();g.gameplayModeTime=g.timing[3];break;case 3:g.playerDyingId==0?g.playSound(&quot;death&quot;,0):g.playSound(&quot;death-double&quot;,0);g.gameplayModeTime=g.timing[4];break;case 6:g.canvasEl.style.visibility=&quot;hidden&quot;;g.gameplayModeTime=g.timing[5];break;case 7:g.stopAllAudio();g.canvasEl.style.visibility=&quot;&quot;;g.doorEl.style.display=&quot;block&quot;;b=document.createElement(&quot;div&quot;); b.id=&quot;pcm-re&quot;;g.prepareElement(b,160,0);g.playfieldEl.appendChild(b);g.gameplayModeTime=g.timing[6];break;case 4:g.doorEl.style.display=&quot;block&quot;;b=document.createElement(&quot;div&quot;);b.id=&quot;pcm-re&quot;;g.prepareElement(b,160,0);g.playfieldEl.appendChild(b);g.gameplayModeTime=g.timing[7];g.stopAllAudio();g.playerCount==2?g.playSound(&quot;start-music-double&quot;,0,a):g.playSound(&quot;start-music&quot;,0,a);break;case 5:g.lives--;g.updateChromeLives();g.gameplayModeTime=g.timing[8];break;case 8:case 14:b=document.getElementById(&quot;pcm-re&quot;); google.dom.remove(b);g.stopAllAudio();b=document.createElement(&quot;div&quot;);b.id=&quot;pcm-go&quot;;g.prepareElement(b,8,152);g.playfieldEl.appendChild(b);g.gameplayModeTime=g.timing[9];break;case 9:g.stopAllAudio();g.gameplayModeTime=g.timing[10];break;case 10:g.doorEl.style.display=&quot;none&quot;;g.gameplayModeTime=g.timing[11];break;case 11:g.canvasEl.style.visibility=&quot;hidden&quot;;g.gameplayModeTime=g.timing[12];break;case 12:g.playfieldEl.style.visibility=&quot;hidden&quot;;g.gameplayModeTime=g.timing[13];break;case 1:g.gameplayModeTime= g.timing[2];break;case 13:g.startCutscene();break}};g.showChrome=function(b){g.showElementById(&quot;pcm-sc-1-l&quot;,b);g.showElementById(&quot;pcm-sc-2-l&quot;,b);g.showElementById(&quot;pcm-sc-1&quot;,b);g.showElementById(&quot;pcm-sc-2&quot;,b);g.showElementById(&quot;pcm-li&quot;,b);g.showElementById(&quot;pcm-so&quot;,b)}; g.startCutscene=function(){g.playfieldEl.style.visibility=&quot;hidden&quot;;g.canvasEl.style.visibility=&quot;&quot;;g.showChrome(e);g.cutsceneCanvasEl=document.createElement(&quot;div&quot;);g.cutsceneCanvasEl.id=&quot;pcm-cc&quot;;g.canvasEl.appendChild(g.cutsceneCanvasEl);g.cutscene=B[g.cutsceneId];g.cutsceneSequenceId=-1;g.frightModeTime=g.levels.frightTotalTime;g.cutsceneActors=[];for(var b in g.cutscene.actors){var c=g.cutscene.actors[b].id;if(c&gt;0)c+=g.playerCount-1;var d=document.createElement(&quot;div&quot;);d.className=&quot;pcm-ac&quot;;d.id=&quot;actor&quot;+
c;g.prepareElement(d,0,0);c=new E(c);c.el=d;c.elBackgroundPos=[0,0];c.elPos=[0,0];c.pos=[g.cutscene.actors[b].y*8,g.cutscene.actors[b].x*8];c.posDelta=[0,0];c.ghost=g.cutscene.actors[b].ghost;g.cutsceneCanvasEl.appendChild(d);g.cutsceneActors.push(c)}g.cutsceneNextSequence();g.stopAllAudio();g.playAmbientSound()};g.stopCutscene=function(){g.playfieldEl.style.visibility=&quot;&quot;;google.dom.remove(g.cutsceneCanvasEl);g.showChrome(a);g.newLevel(e)};
g.cutsceneNextSequence=function(){g.cutsceneSequenceId++;if(g.cutscene.sequence.length==g.cutsceneSequenceId)g.stopCutscene();else{var b=g.cutscene.sequence[g.cutsceneSequenceId];g.cutsceneTime=b.time*D;for(var c in g.cutsceneActors){var d=g.cutsceneActors[c][/c];d.dir=b.moves[c][/c].dir;d.speed=b.moves[c][/c].speed;if(b.moves[c][/c].elId)d.el.id=b.moves[c][/c].elId;if(b.moves[c][/c].mode)d.mode=b.moves[c][/c].mode;d.b()}}};g.checkCutscene=function(){g.cutsceneTime&lt;=0&amp;&amp;g.cutsceneNextSequence()};
g.advanceCutscene=function(){for(var b in g.cutsceneActors){var c=g.cutsceneActors[b],d=l[c language=&quot;.dir&quot;][/c];c.pos[d.axis]+=d.increment*c.speed;c.b()}g.cutsceneTime--};g.updateActorPositions=function(){for(var b in g.actors)g.actors[b].k()};
g.blinkEnergizers=function(){switch(g.gameplayMode){case 4:case 5:case 6:case 7:case 9:case 10:case 11:case 12:g.playfieldEl.className=&quot;&quot;;break;case 8:case 14:g.playfieldEl.className=&quot;blk&quot;;break;default:if(g.globalTime%(g.timing[0]*2)==0)g.playfieldEl.className=&quot;&quot;;else if(g.globalTime%(g.timing[0]*2)==g.timing[0])g.playfieldEl.className=&quot;blk&quot;;break}};
g.blinkScoreLabels=function(){if(g.gameplayMode!=13){var b=&quot;&quot;;if(g.globalTime%(g.timing[17]*2)==0)b=&quot;visible&quot;;else if(g.globalTime%(g.timing[17]*2)==g.timing[17])b=&quot;hidden&quot;;if(b)for(var c=0;c&lt;g.playerCount;c++)g.scoreLabelEl[c][/c].style.visibility=b}};g.finishFrightMode=function(){g.switchMainGhostMode(g.lastMainGhostMode,e)};
g.handleGameplayModeTimer=function(){if(g.gameplayModeTime){g.gameplayModeTime--;switch(g.gameplayMode){case 2:case 3:for(var b=0;b&lt;g.playerCount+4;b++)g.actors[b].b();break;case 10:Math.floor(g.gameplayModeTime/(g.timing[11]/8))%2==0?g.changeElementBkPos(g.playfieldEl,322,2,e):g.changeElementBkPos(g.playfieldEl,322,138,e)}if(g.gameplayModeTime&lt;=0){g.gameplayModeTime=0;switch(g.gameplayMode){case 1:g.changeGameplayMode(0);g.ghostEyesCount++;g.playAmbientSound();g.actors[g.ghostBeingEatenId].el.className=
&quot;pcm-ac&quot;;g.actors[g.ghostBeingEatenId].a(8);var c=e;for(b=g.playerCount;b&lt;g.playerCount+4;b++)if(g.actors[b].mode==4||(g.actors[b].mode==16||g.actors[b].mode==128)&amp;&amp;!g.actors[b].eatenInThisFrightMode){c=a;break}c||g.finishFrightMode();break;case 2:g.changeGameplayMode(3);break;case 3:g.newLife();break;case 4:g.changeGameplayMode(5);break;case 6:g.changeGameplayMode(7);break;case 7:case 5:b=document.getElementById(&quot;pcm-re&quot;);google.dom.remove(b);g.changeGameplayMode(0);break;case 8:b=document.getElementById(&quot;pcm-go&quot;);
google.dom.remove(b);google.pacManQuery&amp;&amp;google.pacManQuery();break;case 9:g.changeGameplayMode(10);break;case 10:g.changeGameplayMode(11);break;case 11:if(g.levels.cutsceneId){g.cutsceneId=g.levels.cutsceneId;g.changeGameplayMode(13)}else{g.canvasEl.style.visibility=&quot;&quot;;g.newLevel(e)}break;case 12:g.playfieldEl.style.visibility=&quot;&quot;;g.canvasEl.style.visibility=&quot;&quot;;g.switchToDoubleMode();break}}}};g.handleFruitTimer=function(){if(g.fruitTime){g.fruitTime--;g.fruitTime&lt;=0&amp;&amp;g.hideFruit()}};
g.handleGhostModeTimer=function(){if(g.frightModeTime){g.frightModeTime--;if(g.frightModeTime&lt;=0){g.frightModeTime=0;g.finishFrightMode()}}else if(g.ghostModeTime&gt;0){g.ghostModeTime--;if(g.ghostModeTime&lt;=0){g.ghostModeTime=0;g.ghostModeSwitchPos++;if(g.levels.ghostModeSwitchTimes[g.ghostModeSwitchPos]){g.ghostModeTime=g.levels.ghostModeSwitchTimes[g.ghostModeSwitchPos]*D;switch(g.mainGhostMode){case 2:g.switchMainGhostMode(1,e);break;case 1:g.switchMainGhostMode(2,e);break}}}}};
g.handleForcePenLeaveTimer=function(){if(g.forcePenLeaveTime){g.forcePenLeaveTime--;if(g.forcePenLeaveTime&lt;=0){for(var b=1;b&lt;=3;b++)if(g.actors[g.playerCount+b].mode==16){g.actors[g.playerCount+b].freeToLeavePen=a;break}g.resetForcePenLeaveTime()}}};g.handleTimers=function(){if(g.gameplayMode==0){g.handleForcePenLeaveTimer();g.handleFruitTimer();g.handleGhostModeTimer()}g.handleGameplayModeTimer()}; g.tick=function(){var b=(new Date).getTime();g.lastTimeDelta+=b-g.lastTime-g.tickInterval;if(g.lastTimeDelta&gt;100)g.lastTimeDelta=100;if(g.canDecreaseFps&amp;&amp;g.lastTimeDelta&gt;50){g.lastTimeSlownessCount++;g.lastTimeSlownessCount==20&amp;&amp;g.decreaseFps()}var c=0;if(g.lastTimeDelta&gt;g.tickInterval){c=Math.floor(g.lastTimeDelta/g.tickInterval);g.lastTimeDelta-=g.tickInterval*c}g.lastTime=b;if(g.gameplayMode==13){for(b=0;b&lt;g.tickMultiplier+c;b++){g.advanceCutscene();g.intervalTime=(g.intervalTime+1)%D;g.globalTime++}g.checkCutscene();
g.blinkScoreLabels()}else for(b=0;b&lt;g.tickMultiplier+c;b++){g.moveActors();if(g.gameplayMode==0)if(g.tilesChanged){g.detectCollisions();g.updateActorTargetPositions()}g.globalTime++;g.intervalTime=(g.intervalTime+1)%D;g.blinkEnergizers();g.blinkScoreLabels();g.handleTimers()}};g.extraLife=function(b){g.playSound(&quot;extra-life&quot;,0);g.extraLifeAwarded[b]=a;g.lives++;if(g.lives&gt;5)g.lives=5;g.updateChromeLives()};
g.addToScore=function(b,c){g.score[c][/c]+=b;!g.extraLifeAwarded[c][/c]&amp;&amp;g.score[c][/c]&gt;1E4&amp;&amp;g.extraLife(c);g.updateChromeScore(c)};g.updateChrome=function(){g.updateChromeLevel();g.updateChromeLives();for(var b=0;b&lt;g.playerCount;b++)g.updateChromeScore(b)}; g.updateChromeScore=function(b){var c=g.score[b].toString();if(c.length&gt;g.scoreDigits)c=c.substr(c.length-g.scoreDigits,g.scoreDigits);for(var d=0;d&lt;g.scoreDigits;d++){var f=document.getElementById(&quot;pcm-sc-&quot;+(b+1)+&quot;-&quot;+d),h=c.substr(d,1);h?g.changeElementBkPos(f,8+8*parseInt(h,10),144,a):g.changeElementBkPos(f,48,0,a)}};g.updateChromeLives=function(){g.livesEl.innerHTML=&quot;&quot;;for(var b=0;b&lt;g.lives;b++){var c=document.createElement(&quot;div&quot;);c.className=&quot;pcm-lif&quot;;g.prepareElement(c,64,129);g.livesEl.appendChild(c)}}; g.updateChromeLevel=function(){g.levelEl.innerHTML=&quot;&quot;;for(var b=g.level;b&gt;=Math.max(g.level-4+1,1);b--){var c=b&gt;=z.length?z[z.length-1].fruit:z[b].fruit,d=document.createElement(&quot;div&quot;);c=g.getFruitSprite(c);g.prepareElement(d,c[0],c[1]);g.levelEl.appendChild(d)}g.levelEl.style.marginTop=(4-Math.min(g.level,4))*16+&quot;px&quot;};
g.createChrome=function(){g.canvasEl.innerHTML=&quot;&quot;;g.scoreDigits=g.playerCount==1?10:5;g.scoreLabelEl=[];g.scoreLabelEl[0]=document.createElement(&quot;div&quot;);g.scoreLabelEl[0].id=&quot;pcm-sc-1-l&quot;;g.prepareElement(g.scoreLabelEl[0],160,56);g.canvasEl.appendChild(g.scoreLabelEl[0]);g.scoreEl=[];g.scoreEl[0]=document.createElement(&quot;div&quot;);g.scoreEl[0].id=&quot;pcm-sc-1&quot;;for(var b=0;b&lt;g.scoreDigits;b++){var c=document.createElement(&quot;div&quot;);c.id=&quot;pcm-sc-1-&quot;+b;c.style.top=b*8+&quot;px&quot;;c.style.left=0;c.style.position=&quot;absolute&quot;;
c.style.width=&quot;8px&quot;;c.style.height=&quot;8px&quot;;g.prepareElement(c,48,0);g.scoreEl[0].appendChild(c)}g.canvasEl.appendChild(g.scoreEl[0]);g.livesEl=document.createElement(&quot;div&quot;);g.livesEl.id=&quot;pcm-li&quot;;g.canvasEl.appendChild(g.livesEl);g.levelEl=document.createElement(&quot;div&quot;);g.levelEl.id=&quot;pcm-le&quot;;g.canvasEl.appendChild(g.levelEl);if(g.playerCount==2){g.scoreLabelEl[1]=document.createElement(&quot;div&quot;);g.scoreLabelEl[1].id=&quot;pcm-sc-2-l&quot;;g.prepareElement(g.scoreLabelEl[1],160,64);g.canvasEl.appendChild(g.scoreLabelEl[1]);
g.scoreEl[1]=document.createElement(&quot;div&quot;);g.scoreEl[1].id=&quot;pcm-sc-2&quot;;for(b=0;b&lt;g.scoreDigits;b++){c=document.createElement(&quot;div&quot;);c.id=&quot;pcm-sc-2-&quot;+b;c.style.top=b*8+&quot;px&quot;;c.style.left=0;c.style.position=&quot;absolute&quot;;c.style.width=&quot;8px&quot;;c.style.height=&quot;8px&quot;;g.prepareElement(c,48,0);g.scoreEl[1].appendChild(c)}g.canvasEl.appendChild(g.scoreEl[1])}};g.clearDotEatingNow=function(){g.dotEatingNow=[e,e];g.dotEatingNext=[e,e]};
g.playSound=function(b,c,d){if(!(!g.soundAvailable||!g.soundEnabled||g.paused)){d||g.stopSoundChannel(c);try{g.flashSoundPlayer.playTrack(b,c)}catch(f){g.soundAvailable=e}}};g.stopSoundChannel=function(b){if(g.soundAvailable&amp;&amp;g.soundEnabled)try{g.flashSoundPlayer.stopChannel(b)}catch(c){g.soundAvailable=e}};g.stopAllAudio=function(){if(g.soundAvailable&amp;&amp;g.soundEnabled){try{g.flashSoundPlayer.stopAmbientTrack()}catch(b){g.soundAvailable=e}for(var c=0;c&lt;5;c++)g.stopSoundChannel(c)}}; g.playDotEatingSound=function(b){if(g.soundAvailable&amp;&amp;g.soundEnabled)if(g.gameplayMode==0)if(g.dotEatingNow[b])g.dotEatingNext[b]=a;else{if(b==0){var c=g.dotEatingSoundPart[b]==1?&quot;eating-dot-1&quot;:&quot;eating-dot-2&quot;;g.playSound(c,1+g.dotEatingChannel[b],a);g.dotTimer=window.setInterval(g.repeatDotEatingSoundPacMan,150)}else{g.playSound(&quot;eating-dot-double&quot;,3+g.dotEatingChannel[b],a);g.dotTimerMs=window.setInterval(g.repeatDotEatingSoundMsPacMan,150)}g.dotEatingChannel[b]=(g.dotEatingChannel[b]+1)%2;g.dotEatingSoundPart[b]= 3-g.dotEatingSoundPart[b]}};g.repeatDotEatingSound=function(b){g.dotEatingNow[b]=e;if(g.dotEatingNext[b]){g.dotEatingNext[b]=e;g.playDotEatingSound(b)}};g.repeatDotEatingSoundPacMan=function(){g.repeatDotEatingSound(0)};g.repeatDotEatingSoundMsPacMan=function(){g.repeatDotEatingSound(1)}; g.playAmbientSound=function(){if(g.soundAvailable&amp;&amp;g.soundEnabled){var b=0;if(g.gameplayMode==0||g.gameplayMode==1)b=g.ghostEyesCount?&quot;ambient-eyes&quot;:g.mainGhostMode==4?&quot;ambient-fright&quot;:g.dotsEaten&gt;241?&quot;ambient-4&quot;:g.dotsEaten&gt;207?&quot;ambient-3&quot;:g.dotsEaten&gt;138?&quot;ambient-2&quot;:&quot;ambient-1&quot;;else if(g.gameplayMode==13)b=&quot;cutscene&quot;;if(b)try{g.flashSoundPlayer.playAmbientTrack(b)}catch(c){g.soundAvailable=e}}};
g.initializeTickTimer=function(){window.clearInterval(g.tickTimer);g.fps=C[g.fpsChoice];g.tickInterval=1E3/g.fps;g.tickMultiplier=D/g.fps;g.timing={};for(var b in w){var c=!g.soundEnabled&amp;&amp;(b==7||b==8)?1:w[b];g.timing[b]=Math.round(c*D)}g.lastTime=(new Date).getTime();g.lastTimeDelta=0;g.lastTimeSlownessCount=0;g.tickTimer=window.setInterval(g.tick,g.tickInterval)};
g.decreaseFps=function(){if(g.fpsChoice&lt;C.length-1){g.fpsChoice++;g.initializeTickTimer();if(g.fpsChoice==C.length-1)g.canDecreaseFps=e}};
g.addCss=function(){var b=&quot;#pcm-c {  width: 554px;  border-top: 25px solid black;  padding-bottom: 25px;  height: 136px;  position: relative;  background: black;  outline: 0;  overflow: hidden;  -webkit-tap-highlight-color: rgba(0, 0, 0, 0);}#pcm-c * {  position: absolute;  overflow: hidden;}#pcm-p,#pcm-cc {  left: 45px;  width: 464px;  height: 136px;  z-index: 99;  overflow: hidden;}#pcm-p .pcm-d {  width: 2px;  height: 2px;  margin-left: 3px;  margin-top: 3px;  background: #f8b090;  z-index: 100;}#pcm-p .pcm-e {  width: 8px;  height: 8px;  z-index: 101;}#pcm-sc-1 {  left: 18px;  top: 16px;  width: 8px;  height: 56px;  position: absolute;  overflow: hidden;}#pcm-sc-2 {  left: 18px;  top: 80px;  width: 8px;  height: 56px;  position: absolute;  overflow: hidden;}#pcm-le {  position: absolute;  left: 515px;  top: 74px;  height: 64px;  width: 32px;} #pcm-le div {  position: relative;}#pcm-sc-1-l {    left: -2px;  top: 0;  width: 48px;  height: 8px;}#pcm-sc-2-l {    left: -2px;  top: 64px;  width: 48px;  height: 8px;}#pcm-so {  left: 7px;  top: 116px;  width: 12px;  height: 12px;  border: 8px solid black;  cursor: pointer;}#pcm-li {  position: absolute;  left: 523px;  top: 0;  height: 80px;  width: 16px;}#pcm-li .pcm-lif {  position: relative;  width: 16px;  height: 12px;  margin-bottom: 3px;}#pcm-p.blk .pcm-e {  visibility: hidden;}#pcm-c .pcm-ac {  width: 16px;  height: 16px;  margin-left: -4px;  margin-top: -4px;  z-index: 110;}#pcm-c .pcm-n {  z-index: 111;}#pcm-c #pcm-stck {  z-index: 109;}#pcm-c #pcm-gbug {  width: 32px;}#pcm-c #pcm-bpcm {  width: 32px;  height: 32px;  margin-left: -20px;  margin-top: -20px;}#pcm-f,#pcm-le div {  width: 32px;  height: 16px;  z-index: 105;}#pcm-f {  margin-left: -8px;  margin-top: -4px;}#pcm-do {  width: 19px;  height: 2px;  left: 279px;  top: 46px;  overflow: hidden;  position: absolute;  background: #ffaaa5;}#pcm-re {  width: 48px;  height: 8px;  z-index: 120;  left: 264px;  top: 80px;}#pcm-go {  width: 80px;  height: 8px;  z-index: 120;  left: 248px;  top: 80px;}&quot;;g.styleElement=
document.createElement(&quot;style&quot;);g.styleElement.type=&quot;text/css&quot;;if(g.styleElement.styleSheet)g.styleElement.styleSheet.cssText=b;else g.styleElement.appendChild(document.createTextNode(b));document.getElementsByTagName(&quot;head&quot;)[0].appendChild(g.styleElement)};g.createCanvasElement=function(){g.canvasEl=document.createElement(&quot;div&quot;);g.canvasEl.id=&quot;pcm-c&quot;;g.canvasEl.hideFocus=a;document.getElementById(&quot;logo&quot;).appendChild(g.canvasEl);g.canvasEl.tabIndex=0;g.canvasEl.focus()};
g.everythingIsReady=function(){if(!g.ready){g.ready=a;var b=document.getElementById(&quot;logo-l&quot;);google.dom.remove(b);document.getElementById(&quot;logo&quot;).style.background=&quot;black&quot;;g.addCss();g.createCanvasElement();g.speedIntervals=[];g.oppositeDirections=[];g.oppositeDirections[1]=2;g.oppositeDirections[2]=1;g.oppositeDirections[4]=8;g.oppositeDirections[8]=4;g.addEventListeners();g.fpsChoice=0;g.canDecreaseFps=a;g.initializeTickTimer();g.newGame()}};
g.checkIfEverythingIsReady=function(){if(g.soundReady||g.graphicsReady)g.updateLoadingProgress(0.67);if(g.soundReady&amp;&amp;g.graphicsReady){g.updateLoadingProgress(1);g.everythingIsReady()}};g.preloadImage=function(b){var c=new Image,d=google.browser.engine.IE;if(!d)c.onload=g.imageLoaded;c.src=b;d&amp;&amp;g.imageLoaded()};g.imageLoaded=function(){g.graphicsReady=a;g.checkIfEverythingIsReady()};g.prepareGraphics=function(){g.graphicsReady=e;g.preloadImage(&quot;/logos/pacman10-hp-sprite.png&quot;)};
g.trimString=function(b){return b.replace(/^[\s\xa0]+|[\s\xa0]+$/g,&quot;&quot;)};g.g=function(b,c){if(b&lt;c)return-1;else if(b&gt;c)return 1;return 0};
g.compareVersions=function(b,c){for(var d=0,f=g.trimString(String(b)).split(&quot;.&quot;),h=g.trimString(String(c)).split(&quot;.&quot;),j=Math.max(f.length,h.length),k=0;d==0&amp;&amp;k&lt;j;k++){var x=f[k]||&quot;&quot;,F=h[k]||&quot;&quot;,G=new RegExp(&quot;(\\d*)(\\D*)&quot;,&quot;g&quot;),H=new RegExp(&quot;(\\d*)(\\D*)&quot;,&quot;g&quot;);do{var t=G.exec(x)||[&quot;&quot;,&quot;&quot;,&quot;&quot;],u=H.exec(F)||[&quot;&quot;,&quot;&quot;,&quot;&quot;];if(t[0].length==0&amp;&amp;u[0].length==0)break;d=t[1].length==0?0:parseInt(t[1],10);var I=u[1].length==0?0:parseInt(u[1],10);d=g.g(d,I)||g.g(t[2].length==0,u[2].length==0)||g.g(t[2],u[2])}while(d== 0)}return d};g.getFlashVersion=function(b){b=b.match(/[\d]+/g);b.length=3;return b.join(&quot;.&quot;)}; g.detectFlash=function(){var b=e,c=&quot;&quot;;if(navigator.plugins&amp;&amp;navigator.plugins.length){var d=navigator.plugins[&quot;Shockwave Flash&quot;];if(d){b=a;if(d.description)c=g.getFlashVersion(d.description)}if(navigator.plugins[&quot;Shockwave Flash 2.0&quot;]){b=a;c=&quot;2.0.0.11&quot;}}else if(navigator.mimeTypes&amp;&amp;navigator.mimeTypes.length){if(b=(d=navigator.mimeTypes[&quot;application/x-shockwave-flash&quot;])&amp;&amp;d.enabledPlugin){c=d.enabledPlugin.description;c=g.getFlashVersion(c)}}else try{d=new ActiveXObject(&quot;ShockwaveFlash.ShockwaveFlash.7&quot;); b=a;c=g.getFlashVersion(d.GetVariable(&quot;$version&quot;))}catch(f){try{d=new ActiveXObject(&quot;ShockwaveFlash.ShockwaveFlash.6&quot;);b=a;c=&quot;6.0.21&quot;}catch(h){try{d=new ActiveXObject(&quot;ShockwaveFlash.ShockwaveFlash&quot;);b=a;c=g.getFlashVersion(d.GetVariable(&quot;$version&quot;))}catch(j){}}}g.hasFlash=b;g.flashVersion=c};g.isFlashVersion=function(b){return g.compareVersions(g.flashVersion,b)&gt;=0};
g.prepareSound=function(){g.soundAvailable=e;g.soundEnabled=e;g.soundReady=e;g.detectFlash();if(!g.hasFlash||!g.isFlashVersion(&quot;9.0.0.0&quot;)){g.soundReady=a;g.checkIfEverythingIsReady()}else{g.flashIframe=document.createElement(&quot;iframe&quot;);g.flashIframe.name=&quot;pm-sound&quot;;g.flashIframe.style.position=&quot;absolute&quot;;g.flashIframe.style.top=&quot;-150px&quot;;g.flashIframe.style.border=0;g.flashIframe.style.width=&quot;100px&quot;;g.flashIframe.style.height=&quot;100px&quot;;google.dom.append(g.flashIframe);g.flashIframeDoc=g.flashIframe.contentDocument;
if(g.flashIframeDoc==undefined||g.flashIframeDoc==null)g.flashIframeDoc=g.flashIframe.contentWindow.document;g.flashIframeDoc.open();g.flashIframeDoc.write('&lt;head&gt;&lt;/head&gt;&lt;body&gt;&lt;span class=&quot;mceItemObject&quot;  classid=&quot;clsid:d27cdb6e-ae6d-11cf-96b8-444553540000&quot; codebase=&quot;http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=9,0,0,0&quot; width=&quot;0&quot; height=&quot;0&quot; id=&quot;pacman-sound-player&quot; type=&quot;application/x-shockwave-flash&quot;&gt;
&lt;span  name=&quot;movie&quot; value=&quot;logos/swf/pacman10-hp-sound.swf&quot; class=&quot;mceItemParam&quot;&gt;&lt;/span&gt;
&lt;span  name=&quot;allowScriptAccess&quot; value=&quot;always&quot; class=&quot;mceItemParam&quot;&gt;&lt;/span&gt; &lt;span class=&quot;mceItemObject&quot;  id=&quot;pacman-sound-player-2&quot;  type=&quot;application/x-shockwave-flash&quot; data=&quot;logos/swf/pacman10-hp-sound.swf&quot; width=&quot;0&quot; height=&quot;0&quot;&gt;
&lt;span  name=&quot;allowScriptAccess&quot; value=&quot;always&quot; class=&quot;mceItemParam&quot;&gt;&lt;/span&gt; &lt;/span&gt;&lt;/span&gt;&lt;/body&gt;');
g.flashIframeDoc.close();window.setTimeout(g.flashNotReady,3E3)}};g.flashNotReady=function(){if(!g.ready){g.soundAvailable=e;g.soundEnabled=e;g.soundReady=a;g.checkIfEverythingIsReady()}};g.flashReady=function(b){g.flashSoundPlayer=b;g.soundAvailable=a;g.soundEnabled=a;g.soundReady=a;g.checkIfEverythingIsReady()};
g.flashLoaded=function(){if(g.flashIframeDoc){var b=g.flashIframeDoc.getElementById(&quot;pacman-sound-player&quot;);if(b&amp;&amp;b.playTrack){g.flashReady(b);return}else if((b=g.flashIframeDoc.getElementById(&quot;pacman-sound-player-2&quot;))&amp;&amp;b.playTrack){g.flashReady(b);return}}g.flashNotReady()};
g.destroy=function(){if(google.pacman){g.stopAllAudio();window.clearInterval(g.tickTimer);window.clearInterval(g.dotTimer);window.clearInterval(g.dotTimerMs);google.dom.remove(g.styleElement);google.dom.remove(g.flashIframe);google.dom.remove(g.canvasEl);google.pacman=undefined}};g.exportFunctionCalls=function(){google.pacman={};google.pacman.insertCoin=g.insertCoin;google.pacman.flashLoaded=g.flashLoaded;google.pacman.destroy=g.destroy};
g.updateLoadingProgress=function(b){b=Math.round(b*200);document.getElementById(&quot;logo-b&quot;).style.width=b+&quot;px&quot;};g.init=function(){g.ready=e;document.getElementById(&quot;logo&quot;).title=&quot;&quot;;g.updateLoadingProgress(0.33);g.exportFunctionCalls();g.useCss=navigator.userAgent.indexOf(&quot;MSIE 5.&quot;)!=-1||navigator.userAgent.indexOf(&quot;MSIE 6.&quot;)!=-1||navigator.userAgent.indexOf(&quot;MSIE 7.&quot;)!=-1?e:a;g.prepareGraphics();g.prepareSound()};g.init();
}();
// ]]&gt;&lt;/script&gt;&lt;br /&gt;
&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;[/pre]&lt;/p&gt;
&lt;p&gt;实际上初始代码是这个：&lt;br /&gt;
[pre]&lt;code&gt;&lt;br /&gt;
&lt;!doctype html&gt;&lt;html&gt;&lt;head&gt;&lt;meta http-equiv=&quot;content-type&quot; content=&quot;text/html; charset=UTF-8&quot;&gt;&lt;title&gt;Google&lt;/title&gt;&lt;br /&gt;
&lt;script&gt;window.google=
{	kEI:&quot;D732S6iBJcqOkQWN2sTECA&quot;,kEXPI:&quot;24660,24745&quot;,kCSI:{e:&quot;24660,24745&quot;,ei:&quot;D732S6iBJcqOkQWN2sTECA&quot;,expi:&quot;24660,24745&quot;},ml:function(){},kHL:&quot;zh-CN&quot;,
	time:function()
	{return(new Date).getTime()},
	log:function(b,d,c)
	{var a=new Image,e=google,g=e.lc,f=e.li;a.onerror=(a.onload=(a.onabort=function(){delete g[f]}));g[f]=a;c=c||&quot;/gen_204?atyp=i&amp;ct=&quot;+b+&quot;&amp;cad=&quot;+d+&quot;&amp;zx=&quot;+google.time();a.src=c;e.li=f+1},lc:[],li:0,Toolbelt:{}
};
window.google.sn=&quot;webhp&quot;;window.google.timers={load:{t:{start:(new Date).getTime()}}};try{window.google.pt=window.external&amp;&amp;window.external.pageT;}catch(u){}window.google.jsrt_kill=1;
var _gjwl=location;
function _gjuc()
{var b=_gjwl.href.indexOf(&quot;#&quot;);
if(b&gt;=0)
	{var a=_gjwl.href.substring(b+1);if(/(^|&amp;)q=/.test(a)&amp;&amp;a.indexOf(&quot;#&quot;)==-1&amp;&amp;!/(^|&amp;)cad=h($|&amp;)/.test(a))
	{_gjwl.replace(&quot;/search?&quot;+a.replace(/(^|&amp;)fp=[^&amp;]*/g,&quot;&quot;)+&quot;&amp;cad=h&quot;);return 1}
	}
return 0
}
function _gjp(){!(window._gjwl.hash&amp;&amp;window._gjuc())&amp;&amp;setTimeout(_gjp,500)};
window._gjp &amp;&amp; _gjp()&lt;/script&gt;&lt;br /&gt;
&lt;style&gt;body{margin:0}#gog{padding:3px 10px 0}td{line-height:.8em;}.gac_m td{line-height:17px;}form{margin-bottom:20px;}body,td,a,p,.h{font-family:arial,sans-serif}&lt;br /&gt;
.h{color:#36c;font-size:20px}.q{color:#00c}.ts td{padding:0}.ts{border-collapse:collapse}&lt;br /&gt;
em{color:#c03;font-style:normal;font-weight:normal}a em{text-decoration:underline}.lst{font:17px arial,sans-serif;margin-bottom:.2em;vertical-align:bottom;}input{font-family:inherit}&lt;br /&gt;
.lsb,.gac_sb{font-size:15px;height:1.85em!important;margin:.2em;padding:0 6px;width:auto;overflow:visible;}#gog{background:#fff;}#gbar,#guser{font-size:13px;padding-top:1px !important}&lt;br /&gt;
#gbar{float:left;height:22px}#guser{padding-bottom:7px !important;text-align:right}.gbh,.gbd{border-top:1px solid #c9d7f1;font-size:1px}.gbh{height:0;position:absolute;top:24px;width:100%}&lt;br /&gt;
#gbs,.gbm{background:#fff;left:0;position:absolute;text-align:left;visibility:hidden;z-index:1000}.gbm{border:1px solid;border-color:#c9d7f1 #36c #36c #a2bae7;z-index:1001}.gb1{margin-right:.5em}.gb1,.gb3{zoom:1}&lt;br /&gt;
.gb2{display:block;padding:.2em .5em;}.gb2,.gb3{text-decoration:none;border-bottom:none}a.gb1,a.gb2,a.gb3,a.gb4{color:#00c !important}a.gb2:hover{background:#36c;color:#fff !important}&lt;br /&gt;
&lt;/style&gt;&lt;br /&gt;
&lt;script&gt;
google.y={};google.x=function(e,g)
{google.y[e.id]=[e,g];return false};
if(!window.google)window.google={};window.google.crm={};window.google.cri=0;
window.clk=function(e,f,g,k,l,b,m)
{if(document.images)
	{
	var a=encodeURIComponent||escape,c=new Image,h=window.google.cri++;window.google.crm[h]=c;
	c.onerror=(c.onload=(c.onabort=function(){delete window.google.crm[h]}));
	if(b&amp;&amp;b.substring(0,6)!=&quot;&amp;sig2=&quot;)
	b=&quot;&amp;sig2=&quot;+b;c.src=[&quot;/url?sa=T&quot;,&quot;&quot;,f?&quot;&amp;oi=&quot;+a(f):&quot;&quot;,g?&quot;&amp;cad=&quot;+a(g):&quot;&quot;,&quot;&amp;ct=&quot;,a(k||&quot;res&quot;),&quot;&amp;cd=&quot;,a(l),&quot;&amp;ved=&quot;,a(m),e?&quot;&amp;url=&quot;+a(e.replace(/#.*/,&quot;&quot;)).replace(/\+/g,&quot;%2B&quot;):&quot;&quot;,&quot;&amp;ei=&quot;,&quot;D732S6iBJcqOkQWN2sTECA&quot;,b].join(&quot;&quot;)
	}
return true
};
window.gbar={qs:function(){},tg:function(e){var o={id:'gbar'};for(i in e)o[i]=e[i];google.x(o,function(){gbar.tg(o)})}};
&lt;/script&gt;&lt;br /&gt;
&lt;/head&gt;&lt;body bgcolor=#ffffff text=#000000 link=#0000cc vlink=#551a8b alink=#ff0000 onload=&quot;document.f.q.focus();if(document.images)new Image().src='/images/nav_logo8.png'&quot; &gt;&lt;br /&gt;
&lt;textarea id=csi style=display:none&gt;&lt;/textarea&gt;&lt;br /&gt;
&lt;div id=xjsc&gt;&lt;/div&gt;
&lt;div id=ghead&gt;
&lt;div id=gog&gt;
&lt;div id=gbar&gt;&lt;nobr&gt;&lt;br /&gt;
&lt;b class=gb1&gt;网页&lt;/b&gt; &lt;a href=&quot;http://www.google.com.hk/imghp?hl=zh-CN&amp;tab=wi&quot; onclick=gbar.qs(this) class=gb1&gt;图片&lt;/a&gt; &lt;a href=&quot;http://www.google.com.hk/videohp?hl=zh-CN&amp;tab=wv&quot; onclick=gbar.qs(this) class=gb1&gt;视频&lt;/a&gt; &lt;a href=&quot;http://ditu.google.cn/maps?hl=zh-CN&amp;tab=wl&quot; onclick=gbar.qs(this) class=gb1&gt;地图&lt;/a&gt; &lt;a href=&quot;http://news.google.com.hk/nwshp?hl=zh-CN&amp;tab=wn&quot; onclick=gbar.qs(this) class=gb1&gt;资讯&lt;/a&gt; &lt;a href=&quot;http://www.google.cn/music?hl=zh-CN&amp;tab=wU&quot; onclick=gbar.qs(this) class=gb1&gt;音乐&lt;/a&gt; &lt;a onclick=gbar.qs(this) href=&quot;http://wenda.tianya.cn/wenda/?hl=zh-CN&amp;tab=wH&quot; class=gb1 style=&quot;text-decoration:none;color:green !important&quot;&gt;&lt;u style=&quot;cursor:hand&quot;&gt;问答&lt;/u&gt;&amp;raquo;&lt;/a&gt; &lt;a onclick=gbar.qs(this) href=&quot;http://laiba.tianya.cn/laiba/Top?hl=zh-CN&amp;tab=wG&quot; class=gb1 style=&quot;text-decoration:none;color:green !important&quot;&gt;&lt;u style=&quot;cursor:hand&quot;&gt;来吧&lt;/u&gt;&amp;raquo;&lt;/a&gt; &lt;a href=&quot;http://www.google.com.hk/intl/zh-CN/options/&quot; onclick=&quot;this.blur();gbar.tg(event);return !1&quot; aria-haspopup=true class=gb3&gt;&lt;u&gt;更多&lt;/u&gt; &lt;small&gt;&amp;#9660;&lt;/small&gt;&lt;/a&gt;&lt;br /&gt;
&lt;div class=gbm id=gbi&gt;&lt;a href=&quot;http://www.google.cn/prdhp?hl=zh-CN&amp;tab=wf&quot; onclick=gbar.qs(this) class=gb2&gt;购物&lt;/a&gt; &lt;a href=&quot;http://www.google.cn/finance?hl=zh-CN&amp;tab=we&quot; onclick=gbar.qs(this) class=gb2&gt;财经&lt;/a&gt; &lt;a href=&quot;http://translate.google.cn/?hl=zh-CN&amp;tab=wT&quot; onclick=gbar.qs(this) class=gb2&gt;翻译&lt;/a&gt; &lt;a href=&quot;http://blogsearch.google.com.hk/?hl=zh-CN&amp;tab=wb&quot; onclick=gbar.qs(this) class=gb2&gt;博客&lt;/a&gt; &lt;a href=&quot;http://www.265.com/?hl=zh-CN&amp;tab=wA&quot; onclick=gbar.qs(this) class=gb2&gt;265导航&lt;/a&gt;&lt;br /&gt;
&lt;div class=gb2&gt;
&lt;div class=gbd&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;&lt;a href=&quot;http://www.google.com/calendar/render?hl=zh-CN&amp;tab=wc&quot; class=gb2&gt;日历&lt;/a&gt; &lt;a href=&quot;http://picasaweb.google.com.hk/home?hl=zh-CN&amp;tab=wq&quot; onclick=gbar.qs(this) class=gb2&gt;照片&lt;/a&gt; &lt;a href=&quot;http://docs.google.com/?hl=zh-CN&amp;tab=wo&quot; class=gb2&gt;文档&lt;/a&gt;&lt;br /&gt;
&lt;div class=gb2&gt;
&lt;div class=gbd&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;&lt;a href=&quot;http://tools.google.com/pinyin/?hl=zh-CN&amp;tab=wI&quot; class=gb2&gt;输入法&lt;/a&gt; &lt;a href=&quot;http://toolbar.google.com/?hl=zh-CN&amp;tab=wO&quot; class=gb2&gt;工具栏&lt;/a&gt; &lt;a href=&quot;http://pack.google.cn/?hl=zh-CN&amp;tab=wP&quot; class=gb2&gt;软件精选&lt;/a&gt;&lt;br /&gt;
&lt;div class=gb2&gt;
&lt;div class=gbd&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;&lt;a href=&quot;http://www.google.com.hk/intl/zh-CN/options/&quot; class=gb2&gt;更多 &amp;raquo;&lt;/a&gt; &lt;/div&gt;
&lt;p&gt;&lt;/nobr&gt;&lt;/div&gt;
&lt;div id=guser width=100%&gt;&lt;nobr&gt;&lt;span id=gbn class=gbi&gt;&lt;/span&gt;&lt;span id=gbf class=gbf&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span id=gbe&gt;&lt;a href=&quot;/url?sa=p&amp;pref=ig&amp;pval=3&amp;q=http://www.google.com.hk/ig/cn_migration%3Fhl%3Dzh-CN%26source%3Diglk&amp;usg=AFQjCNEZKGcz-r8bOBwZFxAeX4NFRXWSOA&quot; class=gb4&gt;iGoogle 个性化首页&lt;/a&gt; | &lt;/span&gt;&lt;a href=&quot;/preferences?hl=zh-CN&quot; class=gb4&gt;搜索设置&lt;/a&gt; | &lt;a href=&quot;https://www.google.com/accounts/Login?hl=zh-CN&amp;continue=http://www.google.com.hk/&quot; class=gb4&gt;登录&lt;/a&gt;&lt;/nobr&gt;&lt;/div&gt;
&lt;div class=gbh style=left:0&gt;&lt;/div&gt;
&lt;div class=gbh style=right:0&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;&lt;center&gt;&lt;br clear=all id=lgpd&gt;&lt;br /&gt;
&lt;div id=lga&gt;&lt;a href=&quot;/search?q=PAC-MAN+30th+Anniversary&amp;ct=pacman10-hp&amp;oi=ddle&quot; id=&quot;dlink&quot;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;div id=logo style=&quot;width:554px;height:186px;background:black url(logos/pacman10-hp.png) 0 0 no-repeat;position:relative;margin-bottom:9px&quot; title=&quot;PAC-MAN's 30th Birthday! Doodle with PAC-MAN™ &amp; ©1980 NAMCO BANDAI Games Inc.&quot;&gt;
&lt;div id=&quot;logo-l&quot; style=&quot;width:200px;height:2px;left:177px;top:157px;background:#990;position:absolute;display:none;overflow:hidden&quot;&gt;
&lt;div id=&quot;logo-b&quot; style=&quot;position:absolute;left:0;background:#ff0;height:8px;width:0&quot;&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;&lt;script&gt;google.pml=function(){function d(a){if(!google.pml_installed){google.pml_installed=true;if(!a){document.getElementById(&quot;logo&quot;).style.background=&quot;black&quot;;window.setTimeout(function(){var b=document.getElementById(&quot;logo-l&quot;);if(b)b.style.display=&quot;block&quot;},400)}a=document.createElement(&quot;script&quot;);a.type=&quot;text/javascript&quot;;a.src=&quot;logos/js/pacman10-hp.2.js&quot;;google.dom.append(a)}}function e(){if(document.f&amp;&amp;document.f.btnI)document.f.btnI.onclick=function(){typeof google.pacman!=&quot;undefined&quot;?google.pacman.insertCoin():d(false);return false}}if(!google.pml_loaded){google.pml_loaded=true;window.setTimeout(function(){document.f&amp;&amp;document.f.q&amp;&amp;document.f.q.value==&quot;&quot;&amp;&amp;d(true)},1E4);e();google.rein&amp;&amp;google.rein.push(e);google.dstr&amp;&amp;google.dstr.push(function(){google.pacman&amp;&amp;google.pacman.destroy();if(google.pml_installed){for(var a=(document.getElementById(&quot;xjsc&quot;)||document.body).getElementsByTagName(&quot;script&quot;),b=0,c;c=a[b++];)c.src.indexOf(&quot;/logos/js&quot;)!=-1&amp;&amp;google.dom.remove(c);google.pml_installed=false}});google.pacManQuery=function(){google.nav(document.getElementById(&quot;dlink&quot;).href)}}};&lt;/script&gt;&lt;/div&gt;
&lt;form action=&quot;/search&quot; name=f&gt;
&lt;table cellpadding=0 cellspacing=0&gt;
&lt;tr valign=top&gt;
&lt;td width=25%&gt;&amp;nbsp;&lt;/td&gt;
&lt;td align=center nowrap&gt;&lt;input name=hl type=hidden value=zh-CN&gt;&lt;input name=source type=hidden value=hp&gt;&lt;input autocomplete=&quot;off&quot; maxlength=2048 name=q size=55 class=lst title=&quot;Google 搜索&quot; value=&quot;&quot;&gt;&lt;br&gt;&lt;input name=btnG type=submit value=&quot;Google 搜索&quot; class=lsb&gt;&lt;input name=btnI type=submit value=&quot;Insert Coin&quot; class=lsb&gt;&lt;/td&gt;
&lt;td nowrap width=25% align=left&gt;&lt;span style=&quot;font-size:13px&quot;&gt;&amp;nbsp;&amp;nbsp;&lt;a href=&quot;/advanced_search?hl=zh-CN&quot;&gt;高级&lt;/a&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&lt;a href=&quot;/language_tools?hl=zh-CN&quot;&gt;语言&lt;/a&gt;&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td align=center colspan=3&gt;&lt;font size=-1&gt;&lt;span style=&quot;text-align:left&quot;&gt;&lt;input id=all type=radio name=meta value=&quot;&quot; checked&gt;&lt;label for=all&gt;所有网页&amp;nbsp;&lt;/label&gt; &lt;input id=ch type=radio name=meta value=&quot;lr=lang_zh-CN|lang_zh-TW&quot;&gt;&lt;label for=ch&gt;中文网页&amp;nbsp;&lt;/label&gt; &lt;input id=lgr type=radio name=meta value=&quot;lr=lang_zh-CN&quot;&gt;&lt;label for=lgr&gt;简体中文网页&amp;nbsp;&lt;/label&gt; &lt;/span&gt;&lt;/font&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/table&gt;
&lt;div id=&quot;tb&quot;&gt;&lt;/div&gt;
&lt;/form&gt;
&lt;p&gt;&lt;br&gt;&lt;br /&gt;
&lt;p id=shp0 style=display:none;behavior:url(#default#homePage)&gt;&lt;font size=-1&gt;&lt;a href=&quot;/aclk?sa=L&amp;ai=CfnCXibj2S8ztJIfhkAXOhpHpAp_5n3yDiujGDMHZnNkTEAEgwVRQvpyhyfj_____AWCdAaoESU_QOoQe7GwxAj-b0XxQKA4O3_Uj8S7t2dkaj3QdOG7KuKWvbbiUk-uOHVCKk1NbBmf2MhRuCx2IaiEtU15o1wPnB64aBRv97hM&amp;num=1&amp;sig=AGiWqtyW9njb_SRnP0Giw8bL74XrmpAr0g&amp;adurl=/mgyhp.html&quot; onclick=xz()&gt;&lt;img src=&quot;http://www.google.com/images/mgyhp_sm.png&quot; width=14 height=14 style=vertical-align:middle;margin-right:5px border=0&gt;把 Google 设为主页&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;script&gt;(function(){var a=document.getElementById(&quot;shp0&quot;),b=&quot;http://www.google.com.hk/&quot;;try{a.isHomePage(b)||(a.style.display=&quot;block&quot;)}catch(z){}window.xz=function(){try{a.setHomePage(b);var c=new Image;c.src=&quot;/gen_204?mgmhp=shp0&amp;ct=c&amp;cd=&quot;+a.isHomePage(b);window.wy=c}catch(z){}}})();&lt;/script&gt;&lt;font size=-1&gt;Google.com.hk 使用下列语言： &lt;a href=&quot;http://www.google.com.hk/setprefs?sig=0_glghl7DFvf6HtRd2Ib5Wajec9Ig=&amp;amp;hl=zh-TW&quot;&gt;中文（繁體）&lt;/a&gt; &lt;a href=&quot;http://www.google.com.hk/setprefs?sig=0_glghl7DFvf6HtRd2Ib5Wajec9Ig=&amp;amp;hl=en&quot;&gt;English&lt;/a&gt;&lt;/font&gt;&lt;br&gt;&lt;br&gt;&lt;span id=footer&gt;&lt;center id=fctr&gt;&lt;br&gt;&lt;font size=-1&gt;&lt;a href=&quot;/intl/zh-CN/ads/&quot;&gt;加入营销计划&lt;/a&gt; - &lt;a href=&quot;/intl/zh-CN/about.html&quot;&gt;Google 大全&lt;/a&gt; - &lt;a href=&quot;http://www.google.com/ncr&quot;&gt;Google.com in English&lt;/a&gt;&lt;/font&gt;
&lt;p&gt;&lt;span style=&quot;font-size:13px&quot;&gt;&amp;copy;2010 - &lt;a href=&quot;/intl/zh-CN/privacy.html&quot;&gt;隐私权政策&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;/center&gt;&lt;/span&gt;&lt;br /&gt;
&lt;div id=xjsd&gt;&lt;/div&gt;
&lt;div id=xjsi&gt;&lt;script&gt;if(google.y)google.y.first=[];if(google.y)google.y.first=[];google.dstr=[];google.rein=[];window.setTimeout(function(){var a=document.createElement(&quot;script&quot;);a.src=&quot;/extern_js/f/CgV6aC1DThICaGsrMAo4aEACLCswDjgPLCswETgYLCswFjgXLCswFzgHLCswGDgFLCswGTghLCswJTjKiAEsKzAmOAssKzAnOAQsKzA8OAIsKzBAOBAsKzBFOAEsKzBOOAUsKzBROAIsgAIN/aEqFfPLyem0.js&quot;;(document.getElementById(&quot;xjsd&quot;)||document.body).appendChild(a);if(google.timers&amp;&amp;google.timers.load.t)google.timers.load.t.xjsls=(new Date).getTime();},0);
;google.neegg=1;google.y.first.push(function(){(function(){
function b(a){document.cookie=a}function c(){if(!document.cookie.match(/GZ=Z=[0,1]/)){b(&quot;GZ=Z=0&quot;);var a=document.createElement(&quot;iframe&quot;);a.src=&quot;/compressiontest/gzip.html&quot;;a.style.display=&quot;none&quot;;(document.getElementById(&quot;xjsd&quot;)||document.body).appendChild(a)}}c();
})()
;google.ac.i(document.f,document.f.q,'','','',{a:0,o:0});google.History&amp;&amp;google.History.initialize('/')});if(google.j&amp;&amp;google.j.en&amp;&amp;google.j.xi){window.setTimeout(google.j.xi,0);google.fade=null;}google.pml &amp;&amp; google.pml();&lt;/script&gt;&lt;/div&gt;
&lt;p&gt;&lt;script&gt;(function(){
var b,d,e,f;function g(a,c){if(a.removeEventListener){a.removeEventListener(&quot;load&quot;,c,false);a.removeEventListener(&quot;error&quot;,c,false)}else{a.detachEvent(&quot;onload&quot;,c);a.detachEvent(&quot;onerror&quot;,c)}}function h(a){f=(new Date).getTime();++d;a=a||window.event;var c=a.target||a.srcElement;g(c,h)}var i=document.getElementsByTagName(&quot;img&quot;);b=i.length;d=0;for(var j=0,k;j&lt;b;++j){k=i[j];if(k.complete||typeof k.src!=&quot;string&quot;||!k.src)++d;else if(k.addEventListener){k.addEventListener(&quot;load&quot;,h,false);k.addEventListener(&quot;error&quot;,
h,false)}else{k.attachEvent(&quot;onload&quot;,h);k.attachEvent(&quot;onerror&quot;,h)}}e=b-d;function l(){google.timers.load.t.ol=(new Date).getTime();google.timers.load.t.iml=f;google.kCSI.imc=d;google.kCSI.imn=b;google.kCSI.imp=e;google.report&amp;&amp;google.report(google.timers.load,google.kCSI)}if(window.addEventListener)window.addEventListener(&quot;load&quot;,l,false);else if(window.attachEvent)window.attachEvent(&quot;onload&quot;,l);google.timers.load.t.prt=(f=(new Date).getTime());
})();
&lt;/script&gt;&lt;br /&gt;
 &lt;/code&gt;[/pre]&lt;/p&gt;
&lt;p&gt;可以发现有这么一段&lt;/p&gt;
[pre]&lt;script&gt;google.pml=function(){function d(a){if(!google.pml_installed){google.pml_installed=true;if(!a){document.getElementById(&quot;logo&quot;).style.background=&quot;black&quot;;window.setTimeout(function(){var b=document.getElementById(&quot;logo-l&quot;);if(b)b.style.display=&quot;block&quot;},400)}a=document.createElement(&quot;script&quot;);a.type=&quot;text/javascript&quot;;a.src=&quot;logos/js/pacman10-hp.2.js&quot;;google.dom.append(a)}}function e(){if(document.f&amp;&amp;document.f.btnI)document.f.btnI.onclick=function(){typeof google.pacman!=&quot;undefined&quot;?google.pacman.insertCoin():d(false);return false}}if(!google.pml_loaded){google.pml_loaded=true;window.setTimeout(function(){document.f&amp;&amp;document.f.q&amp;&amp;document.f.q.value==&quot;&quot;&amp;&amp;d(true)},1E4);e();google.rein&amp;&amp;google.rein.push(e);google.dstr&amp;&amp;google.dstr.push(function(){google.pacman&amp;&amp;google.pacman.destroy();if(google.pml_installed){for(var a=(document.getElementById(&quot;xjsc&quot;)||document.body).getElementsByTagName(&quot;script&quot;),b=0,c;c=a[b++];)c.src.indexOf(&quot;/logos/js&quot;)!=-1&amp;&amp;google.dom.remove(c);google.pml_installed=false}});google.pacManQuery=function(){google.nav(document.getElementById(&quot;dlink&quot;).href)}}};&lt;/script&gt;[/pre]
没有加载WINDOW.GOOGLE则背景色为黑色，修改下应该就能单机了吧</pre>


<p>Related posts:<ol><li><a href='http://cq-cser.cn/2010/01/%e7%a6%81%e6%ad%a2%e5%8f%b3%e9%94%ae%e4%bb%a3%e7%a0%81/' rel='bookmark' title='Permanent Link: 禁止右键代码'>禁止右键代码</a></li>
<li><a href='http://cq-cser.cn/2010/02/%e4%bc%a0%e8%af%b4%e4%b8%ad%e7%9a%84brainfuck/' rel='bookmark' title='Permanent Link: 传说中的Brainfuck'>传说中的Brainfuck</a></li>
<li><a href='http://cq-cser.cn/2009/11/%e9%93%be%e6%8e%a5%e5%8f%aa%e8%83%bd%e8%a2%ab%e7%82%b9%e5%87%bb%e4%b8%80%e6%ac%a1/' rel='bookmark' title='Permanent Link: 链接只能被点击一次'>链接只能被点击一次</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://cq-cser.cn/2010/05/pac-man30thanniversary/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>google hack</title>
		<link>http://cq-cser.cn/2010/03/google-hack/</link>
		<comments>http://cq-cser.cn/2010/03/google-hack/#comments</comments>
		<pubDate>Sun, 28 Mar 2010 07:47:19 +0000</pubDate>
		<dc:creator>cq</dc:creator>
				<category><![CDATA[GOOGLE]]></category>

		<guid isPermaLink="false">http://cq-cser.cn/?p=1106</guid>
		<description><![CDATA[google hack的简单实现 使用google中的一些语法可以提供给我们更多的信息(当然也提供给那些习惯攻击的人更多他们所想要的.),下面就来介绍一些常用的语法. intext: 这个就是把网页中的正文内容中的某个字符做为搜索条件.例如在google里输入:intext:动网.将返回所有在网页正文部分包含&#8221;动网&#8221;的网页.allintext:使用方法和intext类似. intitle: 和上面那个intext差不多,搜索网页标题中是否有我们所要找的字符.例如搜索:intitle:安全天使.将返回所有网页标题中包含&#8221;安全天使&#8221;的网 页.同理allintitle:也同intitle类似. cache: 搜索google里关于某些内容的缓存,有时候也许能找到一些好东西哦. define: 搜索某个词语的定义,搜索:define:hacker,将返回关于hacker的定义. filetype: 这个我要重点推荐一下,无论是撒网式攻击还是我们后面要说的对特定目标进行信息收集都需要用到这个.搜索指定类型的文件.例如输入 :filetype:doc.将返回所有以doc结尾的文件URL.当然如果你找.bak、.mdb或.inc也是可以的,获得的信息也许会更丰富:) inf 查找指定站点的一些基本信息. inurl: 搜索我们指定的字符是否存在于URL中.例如输入:inurl:admin,将返回N个类似于这样的连接http://www.xxx.com/xxx/admin,用来找管理员登陆的URL不错.allinurl也同inurl类似,可指定多个字符. link: 例如搜索:inurl:www.4ngel.net可以返回所有和www.4ngel.net做了链接的URL. site: 这个也很有用,例如:site:www.4ngel.net.将返回所有和4ngel.net这个站有关的URL. 对了还有一些*作符也是很有用的: + 把google可能忽略的字列如查询范围 - 把某个字忽略 ~ 同意词 . 单一的通配符 * 通配符，可代表多个字母 &#8220;&#8221; 精确查询 下面开始说说实际应用 以下内容均在google上搜索,对于一个居心叵测的攻击者来说,可能他最感兴趣的就是密码文件了.而google正因为其强大的搜索能力往往会 把一些敏感信息透露给他们.用google搜索以下内容: intitle:&#8221;index of&#8221; etc intitle:&#8221;Index of&#8221; .sh_history intitle:&#8221;Index of&#8221; .bash_history intitle:&#8221;index of&#8221; passwd intitle:&#8221;index of&#8221; people.lst intitle:&#8221;index [...]


Related posts:<ol><li><a href='http://cq-cser.cn/2010/02/google-api-ajaxfeeds/' rel='bookmark' title='Permanent Link: google api ajaxfeeds'>google api ajaxfeeds</a></li>
<li><a href='http://cq-cser.cn/2009/12/%e8%a8%80%e8%ae%ba-2-google%e7%94%a8%e6%b3%95/' rel='bookmark' title='Permanent Link: 言论-2 GOOGLE用法'>言论-2 GOOGLE用法</a></li>
<li><a href='http://cq-cser.cn/2011/01/linux-passwd/' rel='bookmark' title='Permanent Link: LINUX本地密码遗忘'>LINUX本地密码遗忘</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p>google hack的简单实现<br />
使用google中的一些语法可以提供给我们更多的信息(当然也提供给那些习惯攻击的人更多他们所想要的.),下面就来介绍一些常用的语法. <span id="more-1106"></span><br />
intext:<br />
这个就是把网页中的正文内容中的某个字符做为搜索条件.例如在google里输入:intext:动网.将返回所有在网页正文部分包含&#8221;动网&#8221;的网页.allintext:使用方法和intext类似.</p>
<p>intitle:<br />
和上面那个intext差不多,搜索网页标题中是否有我们所要找的字符.例如搜索:intitle:安全天使.将返回所有网页标题中包含&#8221;安全天使&#8221;的网<br />
页.同理allintitle:也同intitle类似.<br />
cache:<br />
搜索google里关于某些内容的缓存,有时候也许能找到一些好东西哦.<br />
define:<br />
搜索某个词语的定义,搜索:define:hacker,将返回关于hacker的定义.<br />
filetype:<br />
这个我要重点推荐一下,无论是撒网式攻击还是我们后面要说的对特定目标进行信息收集都需要用到这个.搜索指定类型的文件.例如输入<br />
:filetype:doc.将返回所有以doc结尾的文件URL.当然如果你找.bak、.mdb或.inc也是可以的,获得的信息也许会更丰富:)<br />
inf<br />
查找指定站点的一些基本信息.<br />
inurl:<br />
搜索我们指定的字符是否存在于URL中.例如输入:inurl:admin,将返回N个类似于这样的连接http://www.xxx.com/xxx/admin,用来找管理员登陆的URL不错.allinurl也同inurl类似,可指定多个字符.<br />
link:<br />
例如搜索:inurl:www.4ngel.net可以返回所有和www.4ngel.net做了链接的URL.<br />
site:<br />
这个也很有用,例如:site:www.4ngel.net.将返回所有和4ngel.net这个站有关的URL.<br />
对了还有一些*作符也是很有用的:<br />
+ 把google可能忽略的字列如查询范围<br />
- 把某个字忽略<br />
~ 同意词<br />
. 单一的通配符<br />
* 通配符，可代表多个字母<br />
&#8220;&#8221; 精确查询<br />
下面开始说说实际应用<br />
以下内容均在google上搜索,对于一个居心叵测的攻击者来说,可能他最感兴趣的就是密码文件了.而google正因为其强大的搜索能力往往会<br />
把一些敏感信息透露给他们.用google搜索以下内容:<br />
intitle:&#8221;index of&#8221; etc<br />
intitle:&#8221;Index of&#8221; .sh_history<br />
intitle:&#8221;Index of&#8221; .bash_history<br />
intitle:&#8221;index of&#8221; passwd<br />
intitle:&#8221;index of&#8221; people.lst<br />
intitle:&#8221;index of&#8221; pwd.db<br />
intitle:&#8221;index of&#8221; etc/shadow<br />
intitle:&#8221;index of&#8221; spwd<br />
intitle:&#8221;index of&#8221; master.passwd<br />
intitle:&#8221;index of&#8221; htpasswd<br />
&#8220;# -FrontPage-&#8221; inurl:service.pwd 有时候因为各种各样的原因一些重要的密码文件被毫无保护的暴露在网络上,如果被别有用心的人获得,那么危害是很大的</p>
<p> <br />
同样可以用google来搜索一些具有漏洞的程序,例如ZeroBoard前段时间发现个文件代码泄露漏洞,可以用google来找网上使用这套程序的站点:</p>
<p>intext:ZeroBoard filetype:php<br />
或者使用:<br />
inurl:outlogin.php?_zb_path= site:.jp<br />
来寻找我们所需要的页面.phpmyadmin是一套功能强大的数据库*作软件,一些站点由于配置失误,导致我们可以不使用密码直接对phpmyadmin进行*作.我们可以用google搜索存在这样漏洞的程序URL:</p>
<p>intitle:phpmyadmin intext:Create new database<br />
还http://www.xxx.com/_vti_bin/..%5C..%5C..%5C..%5C..%5C../winnt/system32/cmd.exe?dir吗?用google找找，你也许还可以找到很多古董级的机器。同样我们可以用这个找找有其他cgi漏洞的页面。</p>
<p>allinurl：winnt system32<br />
前面已经简单的说过可以用google来搜索数据库文件,用上一些语法来精确查找能够获得更多东西(access的数据库,mssql、mysql的连接文件等等).举个例子示例一下:</p>
<p>allinurl:bbs data<br />
filetype:mdb inurl:database<br />
filetype:inc conn<br />
inurl:data filetype:mdb<br />
intitle:&#8221;index of&#8221; data<br />
//在一些配置不正确的apache+win32的服务器上经常出现这种情况,和上面的原理一样,我们还可以用google来找后台.<br />
foo1 foo2 (也就是关联，比如搜索xx公司 xx美女)<br />
operator:foo<br />
filetype:123 类型<br />
site:foo.com 相对直接看网站更有意思，可以得到许多意外的信息<br />
intext:foo<br />
intitle: fooltitle 标题哦<br />
allinurl:foo 搜索xx网站的所有相关连接。（踩点必备）<br />
links:foo 不要说就知道是它的相关链接<br />
allintilte:foo.com<br />
我们可以辅助&#8221;-&#8221; &#8220;+&#8221;来调整搜索的精确程度<br />
直接搜索密码：(引号表示为精确搜索)<br />
当然我们可以再延伸到上面的结果里进行二次搜索<br />
&#8220;index of&#8221; htpasswd / passwd<br />
filetype:xls username password email<br />
&#8220;ws_ftp.log&#8221;<br />
&#8220;config.php&#8221;<br />
allinurl:admin mdb<br />
service filetype:pwd &#8230;.或者某个比如pcanywhere的密码后缀cif等</p>
<p>越来越有意思了，再来点更敏感信息<br />
&#8220;robots.txt&#8221; &#8220;Disallow:&#8221; filetype:txt<br />
inurl:_vti_cnf (FrontPage的关键索引啦，扫描器的CGI库一般都有地)<br />
allinurl: /msadc/Samples/selector/showcode.asp<br />
/../../../passwd<br />
/examples/jsp/snp/snoop.jsp<br />
phpsysinfo<br />
intitle:index of /admin<br />
intitle:&#8221;documetation&#8221;<br />
inurl: 5800(vnc的端口)或者desktop port等多个关键字检索<br />
webmin port 10000<br />
inurl:/admin/login.asp<br />
intext:Powered by GBook365<br />
intitle:&#8221;php shell*&#8221; &#8220;Enable stderr&#8221; filetype:php 直接搜索到phpwebshell<br />
foo.org filetype:inc<br />
ipsec filetype:conf<br />
intilte:&#8221;error occurred&#8221; ODBC request where (select|insert)<br />
说白了就是说，可以直接试着查查数据库检索，针对目前流行的sql注射，会发达哦<br />
&#8220;Dumping data for table&#8221; username password<br />
intitle:&#8221;Error using Hypernews&#8221;<br />
&#8220;Server Software&#8221;<br />
intitle:&#8221;HTTP_USER_AGENT=Googlebot&#8221;<br />
&#8220;HTTP_USER_ANGET=Googlebot&#8221; THS ADMIN<br />
filetype:.doc site:.mil classified 直接搜索军方相关word<br />
检查多个关键字：<br />
intitle:config confixx login password<br />
&#8220;mydomain.com&#8221; nessus report<br />
&#8220;report generated by&#8221;<br />
&#8220;ipconfig&#8221;<br />
&#8220;winipconfig&#8221;<br />
google缓存利用（hoho，最有影响力的东西）推荐大家搜索时候多&#8221;选搜索所有网站&#8221;<br />
特别推荐：administrator users 等相关的东西，比如名字，生日等……最惨也可以拿来做字典嘛<br />
一些技巧集合：<br />
1) index.of.password<br />
1) filetype:blt &#8220;buddylist&#8221;<br />
2) &#8220;access denied for user&#8221; &#8220;using password&#8221;<br />
2) intitle:&#8221;index of&#8221; inurl:ftp (pub | incoming)<br />
3) http://*:*@www domainname<br />
3) filetype:cnf inurl:_vti_pvt access.cnf<br />
4) auth_user_file.txt<br />
4) allinurl:&#8221;/*/_vti_pvt/&#8221; | allinurl:&#8221;/*/_vti_cnf/&#8221;<br />
5) The Master List<br />
5) inurl:&#8221;install/install.php&#8221;<br />
6) allinurl: admin mdb<br />
6) intitle:&#8221;welcome.to.squeezebox&#8221;<br />
7) passlist.txt (a better way)<br />
7) intext:&#8221;"BiTBOARD v2.0&#8243; BiTSHiFTERS Bulletin Board&#8221;<br />
 <img src='http://cq-cser.cn/wp-includes/images/smilies/icon_cool.gif' alt='8)' class='wp-smiley' /> &#8220;A syntax error has occurred&#8221; filetype:ihtml<br />
 <img src='http://cq-cser.cn/wp-includes/images/smilies/icon_cool.gif' alt='8)' class='wp-smiley' /> intitle:Login intext:&#8221;RT is ? Copyright&#8221;<br />
9) &#8220;# -FrontPage-&#8221; inurl:service.pwd<br />
9) ext:php program_listing intitle:MythWeb.Program.Listing<br />
10) ORA-00921: unexpected end of SQL command<br />
11) intitle:index.of abyss.conf</p>


<p>Related posts:<ol><li><a href='http://cq-cser.cn/2010/02/google-api-ajaxfeeds/' rel='bookmark' title='Permanent Link: google api ajaxfeeds'>google api ajaxfeeds</a></li>
<li><a href='http://cq-cser.cn/2009/12/%e8%a8%80%e8%ae%ba-2-google%e7%94%a8%e6%b3%95/' rel='bookmark' title='Permanent Link: 言论-2 GOOGLE用法'>言论-2 GOOGLE用法</a></li>
<li><a href='http://cq-cser.cn/2011/01/linux-passwd/' rel='bookmark' title='Permanent Link: LINUX本地密码遗忘'>LINUX本地密码遗忘</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://cq-cser.cn/2010/03/google-hack/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>浅读&#8221;google-seo-report-card&#8221;:感想</title>
		<link>http://cq-cser.cn/2010/03/%e6%b5%85%e8%af%bbgoogle-seo-report-card%e6%84%9f%e6%83%b3/</link>
		<comments>http://cq-cser.cn/2010/03/%e6%b5%85%e8%af%bbgoogle-seo-report-card%e6%84%9f%e6%83%b3/#comments</comments>
		<pubDate>Tue, 09 Mar 2010 14:21:35 +0000</pubDate>
		<dc:creator>cq</dc:creator>
				<category><![CDATA[GOOGLE]]></category>
		<category><![CDATA[WEB]]></category>
		<category><![CDATA[seo]]></category>

		<guid isPermaLink="false">http://cq-cser.cn/?p=998</guid>
		<description><![CDATA[1.&#60;TITLE&#62;YOUR NAME:KEY WORDS&#60;/TITLE&#62; &#60;TITLE&#62;YOUR NAME-KEY WORDS&#60;/TITLE&#62; 对TITLE做描述 2.description meta tag 3.google sitelink triggering 这些链接列表是由机器根据网站的链接结构而自动生成的，以帮助用户更迅速地找到所需的信息。一般来讲，只有一些大站或很受欢迎的网站才能享受此“殊荣”。如果你在Google搜索引擎中搜索自己的网站发现也存在这一列表，但是上面显示的链接并不一定是你最想呈现给用户的，则可以进入Google网站管理员中心删除部分链接。在设置成功之后，大约1个星期左右即可生效。在这之后的90天里，被删除的链接中将不再显示在Google搜索结果页面的网站链接列表中。 4.404page.302.301重定向等。尽量不用302（临时REDIRECT） 例如ad.google.com自己重定向到www.google.com/adsense此处使用了302.尽量用301 减少服务器不可用时间 5.URL格式 6.https和http的区别 7.页面标准化 例如ALT TEXT,HEADING TAGS,CONTENT KEYWORDS,IMAGE FILENAME,LINK DESTINATION 注意&#60;H1&#62;&#60;/H1&#62;是很重要的 8.避免404出现，LINK要正确，多少个/INDEX.HTML区别蛮大的 LINK和ALT值要正确 Related posts:meta name 优化 Google Font Directory-Google Font API google api ajaxfeeds


Related posts:<ol><li><a href='http://cq-cser.cn/2009/12/meta-name-%e4%bc%98%e5%8c%96/' rel='bookmark' title='Permanent Link: meta name 优化'>meta name 优化</a></li>
<li><a href='http://cq-cser.cn/2010/05/google-font-directory-google-font-api/' rel='bookmark' title='Permanent Link: Google Font Directory-Google Font API'>Google Font Directory-Google Font API</a></li>
<li><a href='http://cq-cser.cn/2010/02/google-api-ajaxfeeds/' rel='bookmark' title='Permanent Link: google api ajaxfeeds'>google api ajaxfeeds</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p>1.&lt;TITLE&gt;YOUR NAME:KEY WORDS&lt;/TITLE&gt;<br />
&lt;TITLE&gt;YOUR NAME-KEY WORDS&lt;/TITLE&gt;</p>
<p>对TITLE做描述<span id="more-998"></span><br />
2.description meta tag<br />
3.google sitelink triggering<br />
这些链接列表是由机器根据网站的链接结构而自动生成的，以帮助用户更迅速地找到所需的信息。一般来讲，只有一些大站或很受欢迎的网站才能享受此“殊荣”。如果你在Google搜索引擎中搜索自己的网站发现也存在这一列表，但是上面显示的链接并不一定是你最想呈现给用户的，则可以进入Google网站管理员中心删除部分链接。在设置成功之后，大约1个星期左右即可生效。在这之后的90天里，被删除的链接中将不再显示在Google搜索结果页面的网站链接列表中。<br />
4.404page.302.301重定向等。尽量不用302（临时REDIRECT）<br />
例如ad.google.com自己重定向到<a href="http://www.google.com/adsense">www.google.com/adsense</a>此处使用了302.尽量用301<br />
减少服务器不可用时间<br />
5.URL格式<br />
6.https和http的区别<br />
7.页面标准化<br />
例如ALT TEXT,HEADING TAGS,CONTENT KEYWORDS,IMAGE FILENAME,LINK DESTINATION<br />
注意&lt;H1&gt;&lt;/H1&gt;是很重要的<br />
8.避免404出现，LINK要正确，多少个/INDEX.HTML区别蛮大的<br />
LINK和ALT值要正确</p>


<p>Related posts:<ol><li><a href='http://cq-cser.cn/2009/12/meta-name-%e4%bc%98%e5%8c%96/' rel='bookmark' title='Permanent Link: meta name 优化'>meta name 优化</a></li>
<li><a href='http://cq-cser.cn/2010/05/google-font-directory-google-font-api/' rel='bookmark' title='Permanent Link: Google Font Directory-Google Font API'>Google Font Directory-Google Font API</a></li>
<li><a href='http://cq-cser.cn/2010/02/google-api-ajaxfeeds/' rel='bookmark' title='Permanent Link: google api ajaxfeeds'>google api ajaxfeeds</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://cq-cser.cn/2010/03/%e6%b5%85%e8%af%bbgoogle-seo-report-card%e6%84%9f%e6%83%b3/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>chrome os试用</title>
		<link>http://cq-cser.cn/2010/03/chrome-os%e8%af%95%e7%94%a8/</link>
		<comments>http://cq-cser.cn/2010/03/chrome-os%e8%af%95%e7%94%a8/#comments</comments>
		<pubDate>Sat, 06 Mar 2010 02:41:07 +0000</pubDate>
		<dc:creator>cq</dc:creator>
				<category><![CDATA[GOOGLE]]></category>
		<category><![CDATA[OTHER]]></category>
		<category><![CDATA[chrome]]></category>

		<guid isPermaLink="false">http://cq-cser.cn/?p=978</guid>
		<description><![CDATA[早上心血来潮玩了下，一开始连不上网，都来SETTING&#8211;&#62;NAT或者其他网络方式就OK了，登录帐号就是一个GMAIL账号的ID和密码 实际上CHROME OS就是基于CHROME原型的，不如说是个浏览器OS（目前观点） 网络不行啊 最后试了下youtube依然打不开。 No related posts.


No related posts.]]></description>
			<content:encoded><![CDATA[<p>早上心血来潮玩了下，一开始连不上网，都来SETTING&#8211;&gt;NAT或者其他网络方式就OK了，登录帐号就是一个GMAIL账号的ID和密码</p>
<p><a href="http://cq-cser.cn/wp-content/uploads/2010/03/3.JPG"><img class="alignnone size-full wp-image-981" title="3" src="http://cq-cser.cn/wp-content/uploads/2010/03/3.JPG" alt="3" width="786" height="530" /></a><span id="more-978"></span></p>
<p><a href="http://cq-cser.cn/wp-content/uploads/2010/03/1.JPG"><img class="alignnone size-full wp-image-979" title="1" src="http://cq-cser.cn/wp-content/uploads/2010/03/1.JPG" alt="1" width="795" height="553" /></a></p>
<p>实际上CHROME OS就是基于CHROME原型的，不如说是个浏览器OS（目前观点）</p>
<p><a href="http://cq-cser.cn/wp-content/uploads/2010/03/2.JPG"><img class="alignnone size-full wp-image-980" title="2" src="http://cq-cser.cn/wp-content/uploads/2010/03/2.JPG" alt="2" width="780" height="565" /></a></p>
<p>网络不行啊</p>
<p><a href="http://cq-cser.cn/wp-content/uploads/2010/03/4.JPG"><img class="alignnone size-full wp-image-982" title="4" src="http://cq-cser.cn/wp-content/uploads/2010/03/4.JPG" alt="4" width="776" height="590" /></a></p>
<p>最后试了下youtube依然打不开。</p>


<p>No related posts.</p>]]></content:encoded>
			<wfw:commentRss>http://cq-cser.cn/2010/03/chrome-os%e8%af%95%e7%94%a8/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>GOOGLE map引用</title>
		<link>http://cq-cser.cn/2010/02/google-map/</link>
		<comments>http://cq-cser.cn/2010/02/google-map/#comments</comments>
		<pubDate>Sun, 28 Feb 2010 03:31:33 +0000</pubDate>
		<dc:creator>cq</dc:creator>
				<category><![CDATA[GOOGLE]]></category>
		<category><![CDATA[map]]></category>

		<guid isPermaLink="false">http://cq-cser.cn/?p=918</guid>
		<description><![CDATA[突然看到某人的例子： &#60;iframe width=&#8221;640&#8243; height=&#8221;350&#8243; frameborder=&#8221;0&#8243; scrolling=&#8221;no&#8221; marginheight=&#8221;0&#8243; marginwidth=&#8221;0&#8243; src=&#8221;http://maps.google.com.hk/maps/ms?hl=zh- TW&#38;amp;ie=UTF8&#38;amp;msa=0&#38;amp;msid=102981836091855616958.000466b8bc954cb53cab9&#38;amp;ll=22.301 713,114.175951&#38;amp;spn=0.001737,0.00346&#38;amp;z=18&#38;amp;output=embed&#8221;&#62;&#60;/iframe&#62;         实际调用地址如下：http://maps.google.com.hk/maps?source=embed&#38;hl=zh-TW&#38;ie=UTF8&#38;msa=0&#38;msid=102981836091855616958.000466b8bc954cb53cab9&#38;ll=22.301425,114.17505&#38;spn=0.001737,0.003433&#38;z=18&#38;oi=map_misc&#38;ct=api_logo 貌似只要引入MSID,LL2个参数就OK,长宽自己改。 然后自己搜了下MAP。发现GOOGLEMAP右上角有自带的嵌入功能，囧。“分享链接”按键 当然要想实现更多功能可去http://code.google.com/intl/zh-CN/apis/maps/documentation/index.html 在较大的地图中查看我的保存位置 Related posts:google api ajaxfeeds Google Font Directory-Google Font API 浅读&#8221;google-seo-report-card&#8221;:感想


Related posts:<ol><li><a href='http://cq-cser.cn/2010/02/google-api-ajaxfeeds/' rel='bookmark' title='Permanent Link: google api ajaxfeeds'>google api ajaxfeeds</a></li>
<li><a href='http://cq-cser.cn/2010/05/google-font-directory-google-font-api/' rel='bookmark' title='Permanent Link: Google Font Directory-Google Font API'>Google Font Directory-Google Font API</a></li>
<li><a href='http://cq-cser.cn/2010/03/%e6%b5%85%e8%af%bbgoogle-seo-report-card%e6%84%9f%e6%83%b3/' rel='bookmark' title='Permanent Link: 浅读&#8221;google-seo-report-card&#8221;:感想'>浅读&#8221;google-seo-report-card&#8221;:感想</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p>突然看到某人的例子：</p>
<p>&lt;iframe width=&#8221;640&#8243; height=&#8221;350&#8243; frameborder=&#8221;0&#8243; scrolling=&#8221;no&#8221; marginheight=&#8221;0&#8243;</p>
<p>marginwidth=&#8221;0&#8243; src=&#8221;<a href="http://maps.google.com.hk/maps/ms?hl=zh">http://maps.google.com.hk/maps/ms?hl=zh</a>-</p>
<p>TW&amp;amp;ie=UTF8&amp;amp;msa=0&amp;amp;msid=102981836091855616958.000466b8bc954cb53cab9&amp;amp;ll=22.301</p>
<p>713,114.175951&amp;amp;spn=0.001737,0.00346&amp;amp;z=18&amp;amp;output=embed&#8221;&gt;&lt;/iframe&gt;<br />
     <span id="more-918"></span></p>
<p>  实际调用地址如下：<a href="http://maps.google.com.hk/maps?source=embed&amp;hl=zh-TW&amp;ie=UTF8&amp;msa=0&amp;msid=102981836091855616958.000466b8bc954cb53cab9&amp;ll=22.301425,114.17505&amp;spn=0.001737,0.003433&amp;z=18&amp;oi=map_misc&amp;ct=api_logo">http://maps.google.com.hk/maps?source=embed&amp;hl=zh-TW&amp;ie=UTF8&amp;msa=0&amp;msid=102981836091855616958.000466b8bc954cb53cab9&amp;ll=22.301425,114.17505&amp;spn=0.001737,0.003433&amp;z=18&amp;oi=map_misc&amp;ct=api_logo</a></p>
<p>貌似只要引入MSID,LL2个参数就OK,长宽自己改。</p>
<p>然后自己搜了下MAP。发现GOOGLEMAP右上角有自带的嵌入功能，囧。“分享链接”按键</p>
<p>当然要想实现更多功能可去<a href="http://code.google.com/intl/zh-CN/apis/maps/documentation/index.html">http://code.google.com/intl/zh-CN/apis/maps/documentation/index.html</a></p>
<p><small>在较大的地图中查看<a style="color:#0000FF;text-align:left" href="http://maps.google.com/maps/ms?msa=0&amp;msid=112454629100919158392.000480a0ba0f1803e2238&amp;ie=UTF8&amp;ll=31.76904,117.221031&amp;spn=0.087566,0.102654&amp;z=12&amp;source=embed">我的保存位置</a></small></p>


<p>Related posts:<ol><li><a href='http://cq-cser.cn/2010/02/google-api-ajaxfeeds/' rel='bookmark' title='Permanent Link: google api ajaxfeeds'>google api ajaxfeeds</a></li>
<li><a href='http://cq-cser.cn/2010/05/google-font-directory-google-font-api/' rel='bookmark' title='Permanent Link: Google Font Directory-Google Font API'>Google Font Directory-Google Font API</a></li>
<li><a href='http://cq-cser.cn/2010/03/%e6%b5%85%e8%af%bbgoogle-seo-report-card%e6%84%9f%e6%83%b3/' rel='bookmark' title='Permanent Link: 浅读&#8221;google-seo-report-card&#8221;:感想'>浅读&#8221;google-seo-report-card&#8221;:感想</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://cq-cser.cn/2010/02/google-map/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>在C++中嵌入JavaScript——Google V8 JavaScript Engine使用体验</title>
		<link>http://cq-cser.cn/2010/02/%e5%9c%a8c%e4%b8%ad%e5%b5%8c%e5%85%a5javascript%e2%80%94%e2%80%94google-v8-javascript-engine%e4%bd%bf%e7%94%a8%e4%bd%93%e9%aa%8c/</link>
		<comments>http://cq-cser.cn/2010/02/%e5%9c%a8c%e4%b8%ad%e5%b5%8c%e5%85%a5javascript%e2%80%94%e2%80%94google-v8-javascript-engine%e4%bd%bf%e7%94%a8%e4%bd%93%e9%aa%8c/#comments</comments>
		<pubDate>Sun, 21 Feb 2010 05:00:31 +0000</pubDate>
		<dc:creator>cq</dc:creator>
				<category><![CDATA[GOOGLE]]></category>
		<category><![CDATA[c#]]></category>
		<category><![CDATA[Engine]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[V8]]></category>

		<guid isPermaLink="false">http://cq-cser.cn/?p=859</guid>
		<description><![CDATA[Google V8 Script Engine 使用体验 Google V8 JavaScript Engine是google为 Chrome&#8217;s浏览器开发的脚本引擎，现在可以使用V8 JavaScript Engine在C++程序中建立自己的脚本环境。   1.准备工作 1). 安装一个SVN客户端 http://tortoisesvn.net/downloads，google v8 在官方网站仅以此方式发布； 2).下载一个python:地址http://sourceforge.net/projects/pywin32/files/，官方网站2009年10月15日被墙了   2.checkout并准备环境       0)设置目录： +third_party +python_24         Python位置（拷贝或安装到均可）        +V8 V8 check out 位置 1)安装python  &#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;begin&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-      说明: 由于v8.project在配置时，使用如下命令进行处理: .\d8js2c.cmd ..\..\src &#8220;$(IntDir)\DerivedSources&#8221; 其中: d8js2c.cmd(line4)： set PYTHON=&#8220;..\..\..\third_party\python_24\python.exe&#8220; 显然python和相关库应该位于：..\..\..\third_party\python_24\ &#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;end&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212; 2)下载 Google V8 Script Engine下载，       SVN地址： http://code.google.com/p/v8/source/checkout [...]


Related posts:<ol><li><a href='http://cq-cser.cn/2009/12/javascript-%e8%af%bb%e5%86%99%e6%96%87%e4%bb%b6/' rel='bookmark' title='Permanent Link: JavaScript 读写文件'>JavaScript 读写文件</a></li>
<li><a href='http://cq-cser.cn/2010/02/google-api-ajaxfeeds/' rel='bookmark' title='Permanent Link: google api ajaxfeeds'>google api ajaxfeeds</a></li>
<li><a href='http://cq-cser.cn/2010/05/google-font-directory-google-font-api/' rel='bookmark' title='Permanent Link: Google Font Directory-Google Font API'>Google Font Directory-Google Font API</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p>Google V8 Script Engine 使用体验</p>
<p>Google V8 JavaScript Engine是google为 Chrome&#8217;s浏览器开发的脚本引擎，现在可以使用V8 JavaScript Engine在C++程序中建立自己的脚本环境。</p>
<p><span id="more-859"></span> </p>
<p>1.准备工作</p>
<p>1). 安装一个SVN客户端 <a href="http://tortoisesvn.net/downloads">http://tortoisesvn.net/downloads</a>，google v8 在官方网站仅以此方式发布；</p>
<p>2).下载一个python:地址<a href="http://sourceforge.net/projects/pywin32/files/">http://sourceforge.net/projects/pywin32/files/</a>，官方网站2009年10月15日被墙了</p>
<p> </p>
<p>2.checkout并准备环境</p>
<p>      0)设置目录：</p>
<p>+third_party</p>
<p>+python_24         Python位置（拷贝或安装到均可）</p>
<p>       +V8 V8 check out 位置</p>
<p>1)安装python</p>
<p><span style="color: #000000;"> </span>&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;begin&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-</p>
<p>     说明:</p>
<p>由于v8.project在配置时，使用如下命令进行处理:</p>
<p>.\d8js2c.cmd ..\..\src &#8220;$(IntDir)\DerivedSources&#8221;</p>
<p>其中: d8js2c.cmd(line4)： set PYTHON<span style="color: #000000;">=</span><span style="color: #000000; font-weight: bold;">&#8220;</span><span style="color: #000000; font-weight: bold;">..\..\..\third_party\python_24\python.exe</span><span style="color: #000000; font-weight: bold;">&#8220;</span></p>
<p>显然python和相关库应该位于：..\..\..\third_party\python_24\</p>
<p>&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;end&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;</p>
<p>2)下载 Google V8 Script Engine下载，</p>
<p>      SVN地址： <a href="http://code.google.com/p/v8/source/checkout">http://code.google.com/p/v8/source/checkout</a></p>
<p> </p>
<p>3)编译</p>
<p>V8\tools\visual_studio\v8.sln</p>
<p>这样就可以编译了，如果编译失败，那可能就是python没有配置好。</p>
<p> </p>
<p>3. JS 嵌入C++示例代码</p>
<p>一个Hello world!</p>
<p><span style="COLOR: #000000">#include </span><span style="COLOR: #800000">&#8220;</span><span style="COLOR: #800000">http://www.cnblogs.com/include/v8.h</span><span style="COLOR: #800000">&#8220;</span><span style="COLOR: #000000"><br />
</span><span style="COLOR: #0000ff">#pragma</span><span style="COLOR: #000000"> comment(lib,&#8221;../visual_studio/Release/lib/v8.lib&#8221;)</span><span style="COLOR: #000000"><br />
</span><span style="COLOR: #0000ff">#pragma</span><span style="COLOR: #000000"> comment(lib,&#8221;../visual_studio/Release/lib/v8_base.lib&#8221;)</span><span style="COLOR: #000000"></p>
<p></span><span style="COLOR: #0000ff">using</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">namespace</span><span style="COLOR: #000000"> v8;</p>
<p></span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000"> main(</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000"> argc, </span><span style="COLOR: #0000ff">char</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000"> argv[]) {</p>
<p>    </span><span style="COLOR: #008000">//</span><span style="COLOR: #008000"> Create a stack-allocated handle scope. </span><span style="COLOR: #008000"><br />
</span><span style="COLOR: #000000">    HandleScope handle_scope;</p>
<p>    </span><span style="COLOR: #008000">//</span><span style="COLOR: #008000"> Create a new context. </span><span style="COLOR: #008000"><br />
</span><span style="COLOR: #000000">    Persistent</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">Context</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000"> context </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> Context::New();</p>
<p>    </span><span style="COLOR: #008000">//</span><span style="COLOR: #008000"> Enter the created context for compiling and<br />
    </span><span style="COLOR: #008000">//</span><span style="COLOR: #008000"> running the hello world script.  </span><span style="COLOR: #008000"><br />
</span><span style="COLOR: #000000">    Context::Scope context_scope(context);</p>
<p>    </span><span style="COLOR: #008000">//</span><span style="COLOR: #008000"> Create a string containing the JavaScript source code. </span><span style="COLOR: #008000"><br />
</span><span style="COLOR: #000000">    Handle</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">String</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000"> source </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> String::New(</span><span style="COLOR: #800000">&#8220;</span><span style="COLOR: #800000">&#8216;Hello&#8217; + &#8216;, World!&#8217;</span><span style="COLOR: #800000">&#8220;</span><span style="COLOR: #000000">);</p>
<p>    </span><span style="COLOR: #008000">//</span><span style="COLOR: #008000"> Compile the source code. </span><span style="COLOR: #008000"><br />
</span><span style="COLOR: #000000">    Handle</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">Script</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000"> script </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> Script::Compile(source);</p>
<p>    </span><span style="COLOR: #008000">//</span><span style="COLOR: #008000"> Run the script to get the result. </span><span style="COLOR: #008000"><br />
</span><span style="COLOR: #000000">    Handle</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">Value</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000"> result </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> script</span><span style="COLOR: #000000">-&gt;</span><span style="COLOR: #000000">Run();</p>
<p>    </span><span style="COLOR: #008000">//</span><span style="COLOR: #008000"> Dispose the persistent context. </span><span style="COLOR: #008000"><br />
</span><span style="COLOR: #000000">    context.Dispose();</p>
<p>    </span><span style="COLOR: #008000">//</span><span style="COLOR: #008000"> Convert the result to an ASCII string and print it. </span><span style="COLOR: #008000"><br />
</span><span style="COLOR: #000000">    String::AsciiValue ascii(result);<br />
    printf(</span><span style="COLOR: #800000">&#8220;</span><span style="COLOR: #800000">%s\n</span><span style="COLOR: #800000">&#8220;</span><span style="COLOR: #000000">, </span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">ascii);<br />
    </span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000"> </span><span style="COLOR: #800080">0</span><span style="COLOR: #000000">;<br />
}</span></p>
<p>更多示例代码参考：V8\test\cctest\*.cc</p>
<p>4.支持C++类</p>
<p>CProxyV8提供便利的方式将C++类的属性和方法导出到JavaScript环境中。支持generic Functors，不需要为每个属性和方法设置回调函数。</p>
<p> <span style="COLOR: #0000ff">class</span><span style="COLOR: #000000"> Point <br />
   {<br />
   </span><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000">:<br />
      </span><span style="COLOR: #008000">/*</span><span style="COLOR: #008000">* Constructor without params is required </span><span style="COLOR: #008000">*/</span><span style="COLOR: #000000"><br />
       Point(</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000"> px </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> </span><span style="COLOR: #800080">0</span><span style="COLOR: #000000">, </span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000"> py </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> </span><span style="COLOR: #800080">0</span><span style="COLOR: #000000">) : x_(px), y_(py) {}<br />
       Point(Point</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000"> p) : x_(p</span><span style="COLOR: #000000">-&gt;</span><span style="COLOR: #000000">x_), y_(p</span><span style="COLOR: #000000">-&gt;</span><span style="COLOR: #000000">y_) {}</p>
<p>       </span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000"> x_;<br />
       </span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000"> y_;</p>
<p>      </span><span style="COLOR: #008000">/*</span><span style="COLOR: #008000">* Example call to function without params </span><span style="COLOR: #008000">*/</span><span style="COLOR: #000000"><br />
      </span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000"> GetManhattanLength()  { </span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000"> std::abs(x_) </span><span style="COLOR: #000000">-</span><span style="COLOR: #000000"> std::abs(y_); }</p>
<p>      </span><span style="COLOR: #008000">/*</span><span style="COLOR: #008000">* this will create a JS object, with JS destructor </span><span style="COLOR: #008000">*/</span><span style="COLOR: #000000"><br />
       Point</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000"> Copy() { </span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">new</span><span style="COLOR: #000000"> Point(); }</p>
<p>      </span><span style="COLOR: #008000">/*</span><span style="COLOR: #008000">* Example call to function with params </span><span style="COLOR: #008000">*/</span><span style="COLOR: #000000"><br />
       v8::Handle</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">v8::Value</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000"> Translate(</span><span style="COLOR: #0000ff">const</span><span style="COLOR: #000000"> v8::Arguments</span><span style="COLOR: #000000">&amp;</span><span style="COLOR: #000000"> args) <br />
       { <br />
         </span><span style="COLOR: #008000">//</span><span style="COLOR: #008000"> throw if we didn&#8217;t get 2 args </span><span style="COLOR: #008000"><br />
</span><span style="COLOR: #000000">         </span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000"> (args.Length() </span><span style="COLOR: #000000">!=</span><span style="COLOR: #000000"> </span><span style="COLOR: #800080">2</span><span style="COLOR: #000000">)<br />
           </span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000"> ThrowException(v8::String::New(</span><span style="COLOR: #800000">&#8220;</span><span style="COLOR: #800000">Expected 2 arguments</span><span style="COLOR: #800000">&#8220;</span><span style="COLOR: #000000">));</p>
<p>         x_ </span><span style="COLOR: #000000">+=</span><span style="COLOR: #000000"> args[</span><span style="COLOR: #800080">0</span><span style="COLOR: #000000">]</span><span style="COLOR: #000000">-&gt;</span><span style="COLOR: #000000">Int32Value();<br />
         y_ </span><span style="COLOR: #000000">+=</span><span style="COLOR: #000000"> args[</span><span style="COLOR: #800080">1</span><span style="COLOR: #000000">]</span><span style="COLOR: #000000">-&gt;</span><span style="COLOR: #000000">Int32Value();<br />
         </span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000"> v8::True(); <br />
       };<br />
   };</p>
<p>   </span><span style="COLOR: #0000ff">class</span><span style="COLOR: #000000"> Line<br />
   {<br />
   </span><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000">:<br />
     </span><span style="COLOR: #008000">/*</span><span style="COLOR: #008000">* Constructor without params is required </span><span style="COLOR: #008000">*/</span><span style="COLOR: #000000"><br />
  <br />
     </span><span style="COLOR: #008000">/*</span><span style="COLOR: #008000">* Example of object property, it can be manipulate directly </span><span style="COLOR: #008000">*/</span><span style="COLOR: #000000"><br />
     Point start;  </p>
<p>     </span><span style="COLOR: #008000">/*</span><span style="COLOR: #008000">* this will create a JS object, without destructor and a reference to this <br />
      *  end instance <br />
      *<br />
      </span><span style="COLOR: #008000">*/</span><span style="COLOR: #000000"><br />
     Point</span><span style="COLOR: #000000">&amp;</span><span style="COLOR: #000000"> GetEnd() { </span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000"> end; }</p>
<p>   </span><span style="COLOR: #0000ff">private</span><span style="COLOR: #000000">:<br />
     Point end;<br />
   };</p>
<p></span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000"> main(</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000"> argc, </span><span style="COLOR: #0000ff">char</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000"> argv[]) <br />
   {<br />
     v8::V8::SetFlagsFromCommandLine(</span><span style="COLOR: #000000">&amp;</span><span style="COLOR: #000000">argc, argv, </span><span style="COLOR: #0000ff">true</span><span style="COLOR: #000000">);<br />
     v8::HandleScope handle_scope;</p>
<p>     </span><span style="COLOR: #008000">//</span><span style="COLOR: #008000"> Create a template for the global object. </span><span style="COLOR: #008000"><br />
</span><span style="COLOR: #000000">     v8::Handle</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">v8::ObjectTemplate</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">global</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> v8::ObjectTemplate::New();</p>
<p>     ProxyClass</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">Foo</span><span style="COLOR: #000000">&gt;*</span><span style="COLOR: #000000"> pPoint </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> ProxyClass</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">Foo</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000">::instance(); </span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">Get the proxy class for Point </span><span style="COLOR: #008000"><br />
</span><span style="COLOR: #000000"><br />
     pPoint</span><span style="COLOR: #000000">-&gt;</span><span style="COLOR: #000000">Expose(</span><span style="COLOR: #000000">&amp;</span><span style="COLOR: #000000">Point::x_,</span><span style="COLOR: #800000">&#8220;</span><span style="COLOR: #800000">x</span><span style="COLOR: #800000">&#8220;</span><span style="COLOR: #000000">,</span><span style="COLOR: #0000ff">true</span><span style="COLOR: #000000">,</span><span style="COLOR: #0000ff">true</span><span style="COLOR: #000000">); </span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">expose x_ for read/write </span><span style="COLOR: #008000"><br />
</span><span style="COLOR: #000000">     pPoint</span><span style="COLOR: #000000">-&gt;</span><span style="COLOR: #000000">Expose(</span><span style="COLOR: #000000">&amp;</span><span style="COLOR: #000000">Point::y_,</span><span style="COLOR: #800000">&#8220;</span><span style="COLOR: #800000">y</span><span style="COLOR: #800000">&#8220;</span><span style="COLOR: #000000">,</span><span style="COLOR: #0000ff">true</span><span style="COLOR: #000000">,</span><span style="COLOR: #0000ff">true</span><span style="COLOR: #000000">); </span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">expose y_ for read/write </span><span style="COLOR: #008000"><br />
</span><span style="COLOR: #000000"><br />
     pPoint</span><span style="COLOR: #000000">-&gt;</span><span style="COLOR: #000000">Expose(</span><span style="COLOR: #000000">&amp;</span><span style="COLOR: #000000">Point::Copy, </span><span style="COLOR: #800000">&#8220;</span><span style="COLOR: #800000">copy</span><span style="COLOR: #800000">&#8220;</span><span style="COLOR: #000000">);<br />
     pPoint</span><span style="COLOR: #000000">-&gt;</span><span style="COLOR: #000000">Expose(</span><span style="COLOR: #000000">&amp;</span><span style="COLOR: #000000">Point::GetManhattanLength, </span><span style="COLOR: #800000">&#8220;</span><span style="COLOR: #800000">getManhattanLength</span><span style="COLOR: #800000">&#8220;</span><span style="COLOR: #000000">);<br />
     pPoint</span><span style="COLOR: #000000">-&gt;</span><span style="COLOR: #000000">Expose(</span><span style="COLOR: #000000">&amp;</span><span style="COLOR: #000000">Point::Translate, </span><span style="COLOR: #800000">&#8220;</span><span style="COLOR: #800000">translate</span><span style="COLOR: #800000">&#8220;</span><span style="COLOR: #000000">);<br />
  <br />
     ProxyClass</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">Line</span><span style="COLOR: #000000">&gt;*</span><span style="COLOR: #000000"> pLine </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> ProxyClass</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">Line</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000">::instance(); </span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">Get the proxy class for Line </span><span style="COLOR: #008000"><br />
</span><span style="COLOR: #000000">     pPoint</span><span style="COLOR: #000000">-&gt;</span><span style="COLOR: #000000">Expose(</span><span style="COLOR: #000000">&amp;</span><span style="COLOR: #000000">Line::start,</span><span style="COLOR: #800000">&#8220;</span><span style="COLOR: #800000">start</span><span style="COLOR: #800000">&#8220;</span><span style="COLOR: #000000">,</span><span style="COLOR: #0000ff">true</span><span style="COLOR: #000000">,</span><span style="COLOR: #0000ff">true</span><span style="COLOR: #000000">); </span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">expose object start for read/write </span><span style="COLOR: #008000"><br />
</span><span style="COLOR: #000000">     pPoint</span><span style="COLOR: #000000">-&gt;</span><span style="COLOR: #000000">Expose(</span><span style="COLOR: #000000">&amp;</span><span style="COLOR: #000000">Line::GetEnd, </span><span style="COLOR: #800000">&#8220;</span><span style="COLOR: #800000">getEnd</span><span style="COLOR: #800000">&#8220;</span><span style="COLOR: #000000">);</p>
<p>     </span><span style="COLOR: #0000ff">global</span><span style="COLOR: #000000">-&gt;</span><span style="COLOR: #000000">Set(v8::String::New(</span><span style="COLOR: #800000">&#8220;</span><span style="COLOR: #800000">Point</span><span style="COLOR: #800000">&#8220;</span><span style="COLOR: #000000">), pPoint</span><span style="COLOR: #000000">-&gt;</span><span style="COLOR: #000000">GetFunctionTemplate()); </span><span style="COLOR: #008000">//</span><span style="COLOR: #008000"> add Point to JS </span><span style="COLOR: #008000"><br />
</span><span style="COLOR: #000000">     </span><span style="COLOR: #0000ff">global</span><span style="COLOR: #000000">-&gt;</span><span style="COLOR: #000000">Set(v8::String::New(</span><span style="COLOR: #800000">&#8220;</span><span style="COLOR: #800000">Line</span><span style="COLOR: #800000">&#8220;</span><span style="COLOR: #000000">), pLine</span><span style="COLOR: #000000">-&gt;</span><span style="COLOR: #000000">GetFunctionTemplate()); </span><span style="COLOR: #008000">//</span><span style="COLOR: #008000"> add Line to JS </span><span style="COLOR: #008000"><br />
</span><span style="COLOR: #000000">     &#8230;</span></p>
<p><span style="COLOR: #000000">如果借助宏，就较简单：</span></p>
<p><span style="COLOR: #000000"><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000"> main(</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000"> argc, </span><span style="COLOR: #0000ff">char</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000"> argv[]) <br />
   {<br />
     v8::V8::SetFlagsFromCommandLine(</span><span style="COLOR: #000000">&amp;</span><span style="COLOR: #000000">argc, argv, </span><span style="COLOR: #0000ff">true</span><span style="COLOR: #000000">);<br />
     v8::HandleScope handle_scope;</p>
<p>     </span><span style="COLOR: #008000">//</span><span style="COLOR: #008000"> Create a template for the global object. </span><span style="COLOR: #008000"><br />
</span><span style="COLOR: #000000">     v8::Handle</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">v8::ObjectTemplate</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">global</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> v8::ObjectTemplate::New();</p>
<p>     CPROXYV8_PROPERTY_ID(Point,x_,x,</span><span style="COLOR: #0000ff">true</span><span style="COLOR: #000000">,</span><span style="COLOR: #0000ff">true</span><span style="COLOR: #000000">);<br />
     CPROXYV8_PROPERTY_ID(Point,y_,y,</span><span style="COLOR: #0000ff">true</span><span style="COLOR: #000000">,</span><span style="COLOR: #0000ff">true</span><span style="COLOR: #000000">);</p>
<p>CPROXYV8_METHOD_ID(Point,Copy, copy);<br />
     CPROXYV8_METHOD_ID(Point,GetManhattanLength, getManhattanLength);<br />
     CPROXYV8_METHOD(Point,Translate);<br />
  <br />
     CPROXYV8_PROPERTY(Line,start,</span><span style="COLOR: #0000ff">true</span><span style="COLOR: #000000">,</span><span style="COLOR: #0000ff">true</span><span style="COLOR: #000000">);</p>
<p>     CPROXYV8_METHOD_ID(Line,GetEnd,getEnd);</p>
<p>     </span><span style="COLOR: #0000ff">global</span><span style="COLOR: #000000">-&gt;</span><span style="COLOR: #000000">Set(v8::String::New(</span><span style="COLOR: #800000">&#8220;</span><span style="COLOR: #800000">Point</span><span style="COLOR: #800000">&#8220;</span><span style="COLOR: #000000">), CPROXYV8_CLASS(Point)</span><span style="COLOR: #000000">-&gt;</span><span style="COLOR: #000000">GetFunctionTemplate()); </span><span style="COLOR: #008000">//</span><span style="COLOR: #008000"> add Point to JS </span><span style="COLOR: #008000"><br />
</span><span style="COLOR: #000000">     </span><span style="COLOR: #0000ff">global</span><span style="COLOR: #000000">-&gt;</span><span style="COLOR: #000000">Set(v8::String::New(</span><span style="COLOR: #800000">&#8220;</span><span style="COLOR: #800000">Line</span><span style="COLOR: #800000">&#8220;</span><span style="COLOR: #000000">), CPROXYV8_CLASS(Line)</span><span style="COLOR: #000000">-&gt;</span><span style="COLOR: #000000">GetFunctionTemplate()); </span><span style="COLOR: #008000">//</span><span style="COLOR: #008000"> add Line to JS </span><span style="COLOR: #008000"><br />
在Shell中使用这些类：</span></span></p>
<p><span style="COLOR: #000000"><span style="COLOR: #008000"><span style="COLOR: #000000">V8 version </span><span style="COLOR: #000000">0.4</span><span style="COLOR: #000000">.</span><span style="COLOR: #000000">3.1</span><span style="COLOR: #000000"><br />
      </span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000"> x </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">new</span><span style="COLOR: #000000"> Point()<br />
      [object Point]<br />
      </span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000"> line </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">new</span><span style="COLOR: #000000"> Line()<br />
      [object Line]<br />
      </span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000"> x.x<br />
      </span><span style="COLOR: #000000">0</span><span style="COLOR: #000000"><br />
      </span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000"> x.x </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">10</span><span style="COLOR: #000000"><br />
      </span><span style="COLOR: #000000">10</span><span style="COLOR: #000000"><br />
      </span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000"> line.getEnd().x<br />
      </span><span style="COLOR: #000000">0</span><span style="COLOR: #000000"><br />
      </span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000"> line.getEnd().x </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">10</span><span style="COLOR: #000000"><br />
      </span><span style="COLOR: #000000">10</span><span style="COLOR: #000000"><br />
      </span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000"> line.getEnd().x<br />
      </span><span style="COLOR: #000000">10</span><span style="COLOR: #000000"><br />
      </span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000"> end </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> line.getEnd();<br />
      [object Point]<br />
      </span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000"> end.x<br />
      </span><span style="COLOR: #000000">10</span><span style="COLOR: #000000"><br />
      </span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000"> end.Translate(</span><span style="COLOR: #000000">10</span><span style="COLOR: #000000">,</span><span style="COLOR: #000000">10</span><span style="COLOR: #000000">)<br />
      </span><span style="COLOR: #0000ff">true</span><span style="COLOR: #000000"><br />
      </span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000"> end.x<br />
      </span><span style="COLOR: #000000">20</span><span style="COLOR: #000000"><br />
      </span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000"> line.getEnd().x<br />
      </span><span style="COLOR: #000000">20</span><span style="COLOR: #000000"><br />
      </span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000"> x.x<br />
      </span><span style="COLOR: #000000">10</span><span style="COLOR: #000000"><br />
      </span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000">_</span></span></span></p>
<p>  </p>
<p>官方网站:</p>
<p><a href="http://code.google.com/p/v8/">http://code.google.com/p/v8/</a></p>
<p><a href="http://code.google.com/p/cproxyv8/">http://code.google.com/p/cproxyv8/</a></p>


<p>Related posts:<ol><li><a href='http://cq-cser.cn/2009/12/javascript-%e8%af%bb%e5%86%99%e6%96%87%e4%bb%b6/' rel='bookmark' title='Permanent Link: JavaScript 读写文件'>JavaScript 读写文件</a></li>
<li><a href='http://cq-cser.cn/2010/02/google-api-ajaxfeeds/' rel='bookmark' title='Permanent Link: google api ajaxfeeds'>google api ajaxfeeds</a></li>
<li><a href='http://cq-cser.cn/2010/05/google-font-directory-google-font-api/' rel='bookmark' title='Permanent Link: Google Font Directory-Google Font API'>Google Font Directory-Google Font API</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://cq-cser.cn/2010/02/%e5%9c%a8c%e4%b8%ad%e5%b5%8c%e5%85%a5javascript%e2%80%94%e2%80%94google-v8-javascript-engine%e4%bd%bf%e7%94%a8%e4%bd%93%e9%aa%8c/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>google api ajaxfeeds</title>
		<link>http://cq-cser.cn/2010/02/google-api-ajaxfeeds/</link>
		<comments>http://cq-cser.cn/2010/02/google-api-ajaxfeeds/#comments</comments>
		<pubDate>Wed, 10 Feb 2010 10:55:04 +0000</pubDate>
		<dc:creator>cq</dc:creator>
				<category><![CDATA[GOOGLE]]></category>
		<category><![CDATA[ajaxfeeds]]></category>
		<category><![CDATA[api]]></category>

		<guid isPermaLink="false">http://cq-cser.cn/?p=796</guid>
		<description><![CDATA[逛了某人的博客，发现了这个，试了下。demo： http://cq-cser.cn/test/googlefeed.html http://cq-cser.cn/test/googlefeed1.html 操作步骤如下:首先根据你要挂靠blog的url地址到google的API注册中心,注册一个APIKEY,这个APIKEY是和你的url匹配的.google为每种类型的api都提供了注册地址          Feed的注册地址是: http://code.google.com/intl/zh-CN/apis/ajaxfeeds/signup.html          Map api注册地址是: http://code.google.com/intl/zh-CN/apis/maps/signup.html 具体代码如下：  &#60;div id=&#8221;feed-control&#8221;&#62;&#60;span style=&#8221;padding-right: 4px; padding-left: 4px; font-size: 13px; padding-bottom: 4px; margin: 10px; color: #676767; padding-top: 4px&#8221;&#62;正在加载&#8230;&#60;/span&#62;&#38;nbsp;&#60;/div&#62; &#60;!&#8211; Google Ajax Api   &#8211;&#62;&#60;script src=&#8221;http://www.google.com/jsapi?key=ABQIAAAAOF4X3OTQ9a1IQUlQuOq1kRR4Z0h2Wj5bgzyc-6EzF76sDnUsuRRH4iWfq20AZrl6usDEIeLghl0VVw&#8221;     type=&#8221;text/javascript&#8221;&#62;&#60;/script&#62;&#60;!&#8211; Dynamic Feed Control and Stylesheet &#8211;&#62;&#60;script src=&#8221;http://www.google.com/uds/solutions/dynamicfeed/gfdynamicfeedcontrol.js&#8221;     type=&#8221;text/javascript&#8221;&#62;&#60;/script&#62; &#60;p&#62;&#60;style type=&#8221;text/css&#8221;&#62;       @import url(&#8220;http://www.google.com/uds/solutions/dynamicfeed/gfdynamicfeedcontrol.css&#8220;);   &#60;/style&#62;&#60;/p&#62; &#60;script [...]


Related posts:<ol><li><a href='http://cq-cser.cn/2010/05/google-font-directory-google-font-api/' rel='bookmark' title='Permanent Link: Google Font Directory-Google Font API'>Google Font Directory-Google Font API</a></li>
<li><a href='http://cq-cser.cn/2010/03/%e6%b5%85%e8%af%bbgoogle-seo-report-card%e6%84%9f%e6%83%b3/' rel='bookmark' title='Permanent Link: 浅读&#8221;google-seo-report-card&#8221;:感想'>浅读&#8221;google-seo-report-card&#8221;:感想</a></li>
<li><a href='http://cq-cser.cn/2010/02/%e5%9c%a8c%e4%b8%ad%e5%b5%8c%e5%85%a5javascript%e2%80%94%e2%80%94google-v8-javascript-engine%e4%bd%bf%e7%94%a8%e4%bd%93%e9%aa%8c/' rel='bookmark' title='Permanent Link: 在C++中嵌入JavaScript——Google V8 JavaScript Engine使用体验'>在C++中嵌入JavaScript——Google V8 JavaScript Engine使用体验</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p>逛了某人的博客，发现了这个，试了下。demo：</p>
<p><a href="http://cq-cser.cn/test/googlefeed.html">http://cq-cser.cn/test/googlefeed.html</a></p>
<p><a href="http://cq-cser.cn/test/googlefeed.html">http://cq-cser.cn/test/googlefeed1.html</a></p>
<p>操作步骤如下:首先根据你要挂靠blog的url地址到google的API注册中心,注册一个APIKEY,这个APIKEY是和你的url匹配的.google为每种类型的api都提供了注册地址</p>
<p>         Feed的注册地址是: <a href="http://code.google.com/intl/zh-CN/apis/ajaxfeeds/signup.html">http://code.google.com/intl/zh-CN/apis/ajaxfeeds/signup.html</a></p>
<p>         Map api注册地址是: <a href="http://code.google.com/intl/zh-CN/apis/maps/signup.html">http://code.google.com/intl/zh-CN/apis/maps/signup.html</a><span id="more-796"></span></p>
<p>具体代码如下：</p>
<p> &lt;div id=&#8221;feed-control&#8221;&gt;&lt;span style=&#8221;padding-right: 4px; padding-left: 4px; font-size: 13px; padding-bottom: 4px; margin: 10px; color: #676767; padding-top: 4px&#8221;&gt;正在加载&#8230;&lt;/span&gt;&amp;nbsp;&lt;/div&gt;</p>
<p>&lt;!&#8211; Google Ajax Api</p>
<p>  &#8211;&gt;&lt;script src=&#8221;<a href="http://www.google.com/jsapi?key=ABQIAAAAOF4X3OTQ9a1IQUlQuOq1kRR4Z0h2Wj5bgzyc-6EzF76sDnUsuRRH4iWfq20AZrl6usDEIeLghl0VVw">http://www.google.com/jsapi?key=ABQIAAAAOF4X3OTQ9a1IQUlQuOq1kRR4Z0h2Wj5bgzyc-6EzF76sDnUsuRRH4iWfq20AZrl6usDEIeLghl0VVw</a>&#8221;</p>
<p>    type=&#8221;text/javascript&#8221;&gt;&lt;/script&gt;&lt;!&#8211; Dynamic Feed Control and Stylesheet &#8211;&gt;&lt;script src=&#8221;<a href="http://www.google.com/uds/solutions/dynamicfeed/gfdynamicfeedcontrol.js">http://www.google.com/uds/solutions/dynamicfeed/gfdynamicfeedcontrol.js</a>&#8221;</p>
<p>    type=&#8221;text/javascript&#8221;&gt;&lt;/script&gt;</p>
<p>&lt;p&gt;&lt;style type=&#8221;text/css&#8221;&gt;</p>
<p> </p>
<p>    @import url(&#8220;<a href="http://www.google.com/uds/solutions/dynamicfeed/gfdynamicfeedcontrol.css">http://www.google.com/uds/solutions/dynamicfeed/gfdynamicfeedcontrol.css</a>&#8220;);</p>
<p>  &lt;/style&gt;&lt;/p&gt;</p>
<p>&lt;script type=&#8221;text/javascript&#8221;&gt;</p>
<p> </p>
<p>function LoadDynamicFeedControl() {</p>
<p>      var feeds = [{title: 'CQ-CSER', url: 'http://secinn.appspot.com/planet/feed?site=cn' },{title: 'CQ-CSER', url: 'http://secinn.appspot.com/planet/feed?site=cn' }];</p>
<p>      var options = {</p>
<p>        numResults : 8,</p>
<p>        displayTime : 2000,</p>
<p>        fadeOutTime : 500,</p>
<p>        scrollOnFadeOut : true,</p>
<p>        pauseOnHover : true,</p>
<p>        stacked : false,</p>
<p>        horizontal : false,</p>
<p>        title : &#8216;CQ-CSER&#8217;</p>
<p>      }</p>
<p> </p>
<p>new GFdynamicFeedControl(feeds, &#8216;feed-control&#8217;, options);</p>
<p>    }</p>
<p>// Load the feeds API and set the onload callback.</p>
<p>google.load(&#8216;feeds&#8217;, &#8217;1&#8242;);</p>
<p>google.setOnLoadCallback(LoadDynamicFeedControl);</p>
<p>&lt;/script&gt;</p>
<p>把中间那个api=什么换成你的api，谷歌给的例子太简单了</p>
<p>var feeds = [{title: 'CQ-CSER', url: 'http://secinn.appspot.com/planet/feed?site=cn' },{title: 'CQ-CSER', url: 'http://secinn.appspot.com/planet/feed?site=cn' }];</p>
<p>feeds中每多一个{title: &#8216;CQ-CSER&#8217;, url: &#8216;http://secinn.appspot.com/planet/feed?site=cn&#8217; }多一个xx，自己修改地址，title吧</p>
<p>下面这种也不错：</p>
<p><span>&lt;</span><span>html</span><span>&gt;</span><span><br />
  </span><span>&lt;</span><span>head</span><span>&gt;</span><span>     </span><span>&lt;</span><span>script</span><span>  </span><span>type</span><span>=</span><span>&#8220;text/javascript&#8221;</span><span> </span><span>src</span><span>=</span><span>&#8220;http://www.google.com/jsapi?key=&#8221;</span><em><span>YOUR-KEY</span></em><span>&#8220;&gt;</span><span>&lt;/</span><span>script</span><span>&gt;</span><span><br />
    </span><span>&lt;</span><span>script</span><span> </span><span>type</span><span>=</span><span>&#8220;text/javascript&#8221;</span><span>&gt;</span><span></span><span>.</span><span>load</span><span>(</span><span>&#8220;feeds&#8221;</span><span>,</span><span> </span><span>&#8220;1&#8243;</span><span>);</span><span></span><span>function</span><span> initialize</span><span>()</span><span> </span><span>{</span><span><br />
        </span><strong><span>var</span><span> feedControl </span><span>=</span><span> </span><span>new</span><span> google</span><span>.</span><span>feeds</span><span>.</span><span>FeedControl</span><span>();</span></strong><span><br />
        feedControl</span><span>.</span><span>addFeed</span><span>(</span><span>&#8220;http://www.digg.com/rss/index.xml&#8221;</span><span>,</span><span> </span><span>&#8220;Digg&#8221;</span><span>);</span><span><br />
        feedControl</span><span>.</span><span>addFeed</span><span>(</span><span>&#8220;http://feeds.feedburner.com/Techcrunch&#8221;</span><span>,</span><span> </span><span>&#8220;TechCrunch&#8221;</span><span>);</span><span><br />
        feedControl</span><span>.</span><span>draw</span><span>(</span><span>document</span><span>.</span><span>getElementById</span><span>(</span><span>&#8220;feedControl&#8221;</span><span>));</span><span><br />
      </span><span>}</span><span><br />
      google</span><span>.</span><span>setOnLoadCallback</span><span>(</span><span>initialize</span><span>);</span><span></span><span>&lt;/</span><span>script</span><span>&gt;</span><span><br />
  </span><span>&lt;/</span>head<span>&gt;</span><span></span><span>&lt;</span><span>body</span><span>&gt;</span><span><br />
    </span><span>&lt;</span><span>div</span><span> </span><span>id</span><span>=</span><span>&#8220;feedControl&#8221;</span><span>&gt;</span><span>Loading</span><span>&lt;/</span><span>div</span><span>&gt;</span><span><br />
  </span><span>&lt;/</span><span>body</span><span>&gt;</span><span><br />
</span><span>&lt;/</span><span>html</span><span>&gt;</span></p>
<p>      google</p>


<p>Related posts:<ol><li><a href='http://cq-cser.cn/2010/05/google-font-directory-google-font-api/' rel='bookmark' title='Permanent Link: Google Font Directory-Google Font API'>Google Font Directory-Google Font API</a></li>
<li><a href='http://cq-cser.cn/2010/03/%e6%b5%85%e8%af%bbgoogle-seo-report-card%e6%84%9f%e6%83%b3/' rel='bookmark' title='Permanent Link: 浅读&#8221;google-seo-report-card&#8221;:感想'>浅读&#8221;google-seo-report-card&#8221;:感想</a></li>
<li><a href='http://cq-cser.cn/2010/02/%e5%9c%a8c%e4%b8%ad%e5%b5%8c%e5%85%a5javascript%e2%80%94%e2%80%94google-v8-javascript-engine%e4%bd%bf%e7%94%a8%e4%bd%93%e9%aa%8c/' rel='bookmark' title='Permanent Link: 在C++中嵌入JavaScript——Google V8 JavaScript Engine使用体验'>在C++中嵌入JavaScript——Google V8 JavaScript Engine使用体验</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://cq-cser.cn/2010/02/google-api-ajaxfeeds/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

