From 864edfe6b1aecf549005b6358a194b1fd21e5784 Mon Sep 17 00:00:00 2001 From: OttoMao Date: Wed, 5 Aug 2015 15:44:28 +0800 Subject: [PATCH] reconstruct the site --- .DS_Store | Bin 0 -> 6148 bytes CNAME | 2 +- github.css | 123 ++++++++++ images/bg_hr.png | Bin 78 -> 0 bytes images/blacktocat.png | Bin 463 -> 0 bytes images/checker.png | Bin 108 -> 0 bytes images/icon_download.png | Bin 216 -> 0 bytes images/sprite_download.png | Bin 14832 -> 0 bytes index.css | 189 +++++++++++++++ index.html | 445 ++++++++++++++++------------------- index.js | 0 index.less | 243 +++++++++++++++++++ javascripts/main.js | 1 - javascripts/scale.fix.js | 20 -- lib.js | 5 + params.json | 1 - sampleA.png | Bin 0 -> 17215 bytes sampleB.png | Bin 0 -> 19380 bytes sampleC.png | Bin 0 -> 23255 bytes sampleD.png | Bin 0 -> 18899 bytes stylesheets/pygment_trac.css | 70 ------ stylesheets/styles.css | 356 ---------------------------- stylesheets/stylesheet.css | 425 --------------------------------- 23 files changed, 760 insertions(+), 1120 deletions(-) create mode 100644 .DS_Store create mode 100644 github.css delete mode 100644 images/bg_hr.png delete mode 100644 images/blacktocat.png delete mode 100644 images/checker.png delete mode 100644 images/icon_download.png delete mode 100644 images/sprite_download.png create mode 100644 index.css create mode 100644 index.js create mode 100644 index.less delete mode 100644 javascripts/main.js delete mode 100644 javascripts/scale.fix.js create mode 100644 lib.js delete mode 100644 params.json create mode 100644 sampleA.png create mode 100644 sampleB.png create mode 100644 sampleC.png create mode 100644 sampleD.png delete mode 100644 stylesheets/pygment_trac.css delete mode 100644 stylesheets/styles.css delete mode 100644 stylesheets/stylesheet.css diff --git a/.DS_Store b/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..5008ddfcf53c02e82d7eee2e57c38e5672ef89f6 GIT binary patch literal 6148 zcmeH~Jr2S!425mzP>H1@V-^m;4Wg<&0T*E43hX&L&p$$qDprKhvt+--jT7}7np#A3 zem<@ulZcFPQ@L2!n>{z**++&mCkOWA81W14cNZlEfg7;MkzE(HCqgga^y>{tEnwC%0;vJ&^%eQ zLs35+`xjp>T0 + +*/ + +.hljs { + display: block; + overflow-x: auto; + padding: 0.5em; + color: #333; + background: #f8f8f8; + -webkit-text-size-adjust: none; +} + +.hljs-comment, +.diff .hljs-header { + color: #998; + font-style: italic; +} + +.hljs-keyword, +.css .rule .hljs-keyword, +.hljs-winutils, +.nginx .hljs-title, +.hljs-subst, +.hljs-request, +.hljs-status { + color: #333; + font-weight: bold; +} + +.hljs-number, +.hljs-hexcolor, +.ruby .hljs-constant { + color: #008080; +} + +.hljs-string, +.hljs-tag .hljs-value, +.hljs-doctag, +.tex .hljs-formula { + color: #d14; +} + +.hljs-title, +.hljs-id, +.scss .hljs-preprocessor { + color: #900; + font-weight: bold; +} + +.hljs-list .hljs-keyword, +.hljs-subst { + font-weight: normal; +} + +.hljs-class .hljs-title, +.hljs-type, +.vhdl .hljs-literal, +.tex .hljs-command { + color: #458; + font-weight: bold; +} + +.hljs-tag, +.hljs-tag .hljs-title, +.hljs-rule .hljs-property, +.django .hljs-tag .hljs-keyword { + color: #000080; + font-weight: normal; +} + +.hljs-attribute, +.hljs-variable, +.lisp .hljs-body, +.hljs-name { + color: #008080; +} + +.hljs-regexp { + color: #009926; +} + +.hljs-symbol, +.ruby .hljs-symbol .hljs-string, +.lisp .hljs-keyword, +.clojure .hljs-keyword, +.scheme .hljs-keyword, +.tex .hljs-special, +.hljs-prompt { + color: #990073; +} + +.hljs-built_in { + color: #0086b3; +} + +.hljs-preprocessor, +.hljs-pragma, +.hljs-pi, +.hljs-doctype, +.hljs-shebang, +.hljs-cdata { + color: #999; + font-weight: bold; +} + +.hljs-deletion { + background: #fdd; +} + +.hljs-addition { + background: #dfd; +} + +.diff .hljs-change { + background: #0086b3; +} + +.hljs-chunk { + color: #aaa; +} diff --git a/images/bg_hr.png b/images/bg_hr.png deleted file mode 100644 index 514aee5056a320b059a4b92fc31385b01f3fd707..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 78 zcmeAS@N?(olHy`uVBq!ia0vp^EI=&E!3HD~tNk5798VX=5Q)pl2@*yR?(8i7?>Hmz b1S7-U!)%xJ1CQbP0l+XkKg_jic diff --git a/images/blacktocat.png b/images/blacktocat.png deleted file mode 100644 index e160053a5bfc1f1891c5df1a04244b46132ed91c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 463 zcmeAS@N?(olHy`uVBq!ia0vp^av;pX3?zBp#Z3TGW&u7Su0Z-f>EL7Xu|Ghaf+azI z!3+%h6VAUEXmGf1FkfMPe?Wo5`wP+x42q#I?$ zCZCHu*mLc{mj@jVb0qJie|tLrXx$RV*xy|DA2&%h)(GsqVy%>MraS!Shm183{#@F! zV^vm_@$^Y{GUuI-cUN0({K+A*SMX|j#GmyK98SEwQl?dz*($XqK|j>0;H2RlD{}=; zx7!XPy5}bEXEt-@-@Ngc#+nIgOgm!u=S(u>E&hLN(cd}Wb8P2o&P?9><1zE8l8pz9 zg==?S&3yIdUhdL~<_mg1Y!?@vTUiymeaGcy&vRcbOG}I6uI`9fxn}VP_6h8=I%b0Z Rq=4be;OXk;vd$@?2>`O9@hboT diff --git a/images/checker.png b/images/checker.png deleted file mode 100644 index 7a65b2333db936d13c14599ba346697316e5c17a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 108 zcmeAS@N?(olHy`uVBq!ia0vp^3P3E!$P6UQkMv~$DYgKg5Z4C}9_U53{QLec1t`K) z666;wC1ri*+)N-(*we)^q=GS7Cp{q{;Z1{Ja|<`abO!#^Yu7^`0i_u{UHx3vIVCg! E0JkR|&j0`b diff --git a/images/icon_download.png b/images/icon_download.png deleted file mode 100644 index 5a793f17688b22d0c98f8b32855f69daff65afaf..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 216 zcmeAS@N?(olHy`uVBq!ia0vp^av;pX1|+Qw)-3{3^F3W0Lp+WrCrGd^PB3WLTm5|# z<3>ZVHGbLMPaA&Ni`7(Ic@)^~t}9m~#>{KX@F?FxM~Q7di>SquC^@HPOZ^)nnu6w= zPs-5Ln9{RS^v!FJ4Hk1|eLTx~WO~PjEv;gjQBoc84>y)53m9M4vW{f>=&v)a$*Fn% zwMt9Ivq1qGD=w^dyuiIx3lB69mQJ=Ex6cJ85q6@e`QPvJEsD4 ODubu1pUXO@geCwMBTRk( diff --git a/images/sprite_download.png b/images/sprite_download.png deleted file mode 100644 index f9f8de24c1c49ce421a44ce2a24ac22d045a39fe..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 14832 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 WAV6(21mh6^0000 + + AnyProxy + + + - - - - +
+ View on Github
- +
+ +

AnyProxy是一个开放式的HTTP/HTTPS代理,你可以灵活控制各种网络数据

+
+     + +
+
- Anyproxy - +
+
+
+ + + +

基于Node.js

+
全程JavaScript,学习无压力
+
+
+ + + +

支持Https

+
用AnyProxy自制根证书,明文解析Https请求数据 如何配置>>
+
+
+ + + +

Web界面

+
多终端共享,可视化观察每个请求
+
+
+ + + +

规则逻辑(Rule)

+
随心所欲编写处理规则,定制我的专属调试工具
+
+
+
+
- +
+
+

安装

+
    +
  • 安装 Node.js >= v0.12
  • +
  • npm install -g anyproxy, 可能需要sudo
  • +
  • More>>
  • +
+

使用

+
    +
  • 运行  anyproxy
  • +
  • 把浏览器http代理指向 127.0.0.1:8001
  • +
  • 访问界面:http://127.0.0.1:8002
  • +
  • 更多用法>>
  • +
+ +
+
- -
-
- View on GitHub +
-

Anyproxy

-

A fully configurable proxy in NodeJS, which can handle HTTPS requests perfectly.

- -
- Download this project as a .zip file - Download this project as a tar.gz file -
-
-
- - -
-
-

-anyproxy

- -

A fully configurable proxy in NodeJS, which can handle HTTPS requests perfectly.

- -

-Feature

- -
    -
  • work as http or https proxy
  • -
  • fully configurable, you can modify a request at any stage by your own javascript code
  • -
  • when working as https proxy, it can generate and intercept https requests for any domain without complaint by browser (after you trust its root CA)
  • -
  • provide a web interface
  • -
- -

screenshot

- -

-Usage

- -

-step 1 - install

- -
    -
  • install NodeJS -
  • -
  • -npm install -g anyproxy , may require sudo -
  • -
- -

-step 2 - start server

- -
    -
  • start with default settings : anyproxy -
  • -
  • start with a specific port: anyproxy --port 8001 -
  • -
- -

-step 3 - launch web interface

- - - -

-How to write your own rule file

- -
    -
  • with rule file, you can modify a request at any stage, no matter it's just before sending or after servers' responding.
  • -
  • actually ruleFile.js is a module for Nodejs, feel free to invoke your own modules.
  • -
  • anyproxy --rule /path/to/ruleFile.js
  • -
  • you may learn how it works by our samples: https://github.com/alipay-ct-wd/anyproxy/tree/master/rule_sample -
  • -
  • -

    samples in rule_sample

    - -
      -
    • rule__blank.js, blank rule file with some comments. You may read this before writing your own rule file.

    • -
    • rule_adjust_response_time.js, delay all the response for 1500ms

    • -
    • -rule_allow_CORS.js, add CORS headers to allow cross-domain ajax request
    • -
    • -rule_intercept_some_https_requests.js, intercept https requests toward github.com
    • -
    • -rule_remove_cache_header.js, remove all cache-related headers from server
    • -
    • -rule_replace_request_option.js, replace request parameters before sending to the server
    • -
    • -rule_replace_response_data.js, modify response data
    • -
    • -rule_replace_response_status_code.js, replace server's status code
    • -
    • -rule_use_local_data.js, map some requests to local file
    • -
    -
  • -
  • rule file scheme is as follows, you may also get it from rule__blank.js

  • -
- -
-module.exports = {
-    /*
-    these functions will overwrite the default ones, write your own when necessary.
-    */
-
-    //whether to intercept this request by local logic
-    //if the return value is true, anyproxy will call dealLocalResponse to get response data and will not send request to remote server anymore
-    shouldUseLocalResponse : function(req,reqBody){
-        return false;
-    },
-
-    //you may deal the response locally instead of sending it to server
-    //this function be called when shouldUseLocalResponse returns true
-    //callback(statusCode,resHeader,responseData)
-    //e.g. callback(200,{"content-type":"text/html"},"hello world")
-    dealLocalResponse : function(req,reqBody,callback){
-        callback(statusCode,resHeader,responseData)
-    },
-
-    //replace the request protocol when sending to the real server
-    //protocol : "http" or "https"
-    replaceRequestProtocol:function(req,protocol){
-        var newProtocol = protocol;
-        return newProtocol;
-    },
-
-    //req is user's request sent to the proxy server
-    //option is how the proxy server will send request to the real server. i.e. require("http").request(option,function(){...})
-    //you may return a customized option to replace the original option
-    //you should not write content-length header in options, since anyproxy will handle it for you
-    replaceRequestOption : function(req,option){
-        var newOption = option;
-        return newOption;
-    },
-
-    //replace the request body
-    replaceRequestData: function(req,data){
-        return data;
-    },
-
-    //replace the statusCode before it's sent to the user
-    replaceResponseStatusCode: function(req,res,statusCode){
-        var newStatusCode = statusCode;
-        return newStatusCode;
-    },
-
-    //replace the httpHeader before it's sent to the user
-    //Here header == res.headers
-    replaceResponseHeader: function(req,res,header){
-        var newHeader = header;
-        return newHeader;
-    },
-
-    //replace the response from the server before it's sent to the user
-    //you may return either a Buffer or a string
-    //serverResData is a Buffer, you may get its content by calling serverResData.toString()
-    replaceServerResData: function(req,res,serverResData){
-        return serverResData;
-    },
-
-    //add a pause before sending response to user
-    pauseBeforeSendingResponse : function(req,res){
-        var timeInMS = 1; //delay all requests for 1ms
-        return timeInMS; 
-    },
-
-    //should intercept https request, or it will be forwarded to real server
-    shouldInterceptHttpsReq :function(req){
-        return false;
-    }
+			
+

规则文件(rule)样例

+
+
+
+//remove cache related header
+//file : rule_remove_cache_header.js
+//rule : anyproxy --rule rule_remove_cache_header.js
+module.exports = {
+	replaceRequestOption : function(req,option){
+	    var newOption = option;
+	    delete newOption.headers['if-modified-since'];
 
+	    return newOption;
+	}
 };
-
+ +
+ + + +
-

-Using https features

+
+
+
+//append "hello world" to all web pages
+//file : rule_replace_response_data.js
+//run  : anyproxy --rule rule_replace_response_data.js
+module.exports = {
+    replaceServerResDataAsync: function(req,res,serverRes,callback){
 
-

-step 1 - install openssl

+ if(/html/i.test(res.headers['content-type'])){ + var newDataStr = serverRes.toString(); + newDataStr += "hello world!"; + callback(newDataStr); + } + } +}; +
+
+ + + +
-
    -
  • install openssl ,if you want to use HTTPS-related features. After that, the command openssl should be exposed to your shell
  • -
+
+
+
+//assign a specific IP adress for some request
+//file : rule_reverse_proxy.js
+//run  : anyproxy --rule anyproxy --rule rule_reverse_proxy.js
+module.exports = {
+    replaceRequestOption : function(req,option){
+        var newOption = option;
+        if(newOption.headers.host == "www.taobao.com"){
+            newOption.hostname = "192.168.1.3";
+            newOption.port     = "80";
+        }
 
-

-step 2 - generate a rootCA and trust it

+ return newOption; + } +}; +
+
+ + + +
-
    -
  • you should do this when it is the first time to start anyproxy
  • -
  • execute anyproxy --root ,follow the instructions on screen
  • -
  • you will see some tip like rootCA generated at : /usr/lib... . cd to that directory, add/trust the rootCA.crt file to your system keychain. In OSX, you may do that by open the *crt file directly
  • -
+
+
+
+//replace all the images with local one
+//file : rule_use_local_data.js
+//run  : anyproxy --rule anyproxy --rule rule_use_local_data.js
+var fs  = require("fs"),
+    img = fs.readFileSync("sample.jpg");
 
-

-step 3 - start a https proxy

+module.exports = { + shouldUseLocalResponse : function(req,reqBody){ + if(/\.(png|gif|jpg|jpeg)$/.test(req.url)){ + req.replaceLocalFile = true; + return true; + }else{ + return false; + } + }, -
    -
  • anyproxy --type https --host my.domain.com
  • -
  • the param host is required with https proxy and it should be kept exactly what it it when you config your browser. Otherwise, you may get some warning about security.
  • -
+ dealLocalResponse : function(req,reqBody,callback){ + if(req.replaceLocalFile){ + callback(200, {"content-type":"image/png"},img ); + } + } +}; +
+
+ + + +
-

-Others

+ +
+
-

-work as a module

+
+
+

其他特性

+ +

相关阅读

+ +
+
-
npm install anyproxy --save
-
+ -
var proxy = require("anyproxy");
+		
 
-!proxy.isRootCAFileExists() && proxy.generateRootCA(); //please manually trust this rootCA
-new proxy.proxyServer("http","8001", "localhost" ,"path/to/rule/file.js");
-
+ -

-clear all the temperary certificates

- -

anyproxy --clear

- -

-Contact

- -
    -
  • Please feel free to raise any issue about this project, or give us some advice on this doc. :)
  • -
- - - - - - - - - - - - + + + + + \ No newline at end of file diff --git a/index.js b/index.js new file mode 100644 index 0000000..e69de29 diff --git a/index.less b/index.less new file mode 100644 index 0000000..b49b108 --- /dev/null +++ b/index.less @@ -0,0 +1,243 @@ +@main : #00AAEE; +@dark : #326EEB; +@gray : #F9F9F9; +@darkGray : #DEDEDE; +@textDark : #636373; +@textLight: #777; + +@wideContent : 1200px; + +@font-face { + font-family: 'iconfont'; + src: url('//at.alicdn.com/t/font_1438330832_106274.eot'); /* IE9*/ + src: url('//at.alicdn.com/t/font_1438330832_106274.eot?#iefix') format('embedded-opentype'), /* IE6-IE8 */ + url('//at.alicdn.com/t/font_1438330832_106274.woff') format('woff'), /* chrome、firefox */ + url('//at.alicdn.com/t/font_1438330832_106274.ttf') format('truetype'), /* chrome、firefox、opera、Safari, Android, iOS 4.2+*/ + url('//at.alicdn.com/t/font_1438330832_106274.svg#iconfont') format('svg'); /* iOS 4.1- */ +} + +i.iconfont{ + font-family: "iconfont"; + font-style: normal; +} + +body{ + margin: 0; + padding: 0; + font-family: 'Source Sans Pro', 'Helvetica Neue', Arial, sans-serif; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} + +.wrapper{ + .cornerBtn{ + position : absolute; + right : 10px; + top : 10px; + } + + a, + a:hover{ + text-decoration: none; + } + + a{ + font-size: 16px; + color: @main; + line-height: 40px; + } + + h4.subTitle{ + font-size: 30px; + margin: 0; + padding: 30px 0; + width: 100%; + text-align: center; + } + + code{ + display: inline-block; + } + + .actionBtn.actionBtnWhite{ + color: #FFF; + border: 1px solid #FFF; + + } + + .actionBtn.actionBtnWhite:hover{ + background: @gray; + color: @dark; + } + + .actionBtn{ + color: @dark; + border: 1px solid @dark; + line-height: 30px; + font-size: 30px; + padding: 20px 45px; + border-radius: 30px; + display: inline-block; + transition:0.3s; + } + + .actionBtn:hover{ + background: @dark; + color: @gray; + } +} + +.brief{ + height: 300px; + width: 100%; + text-align: center; + padding: 100px 0; + position: relative; + + .slogan{ + font-size: 16px; + color: @textDark; + } +} + +.feature{ + background: @darkGray; + width: 100%; + + .featureContent{ + width: @wideContent; + margin: 0 auto; + + @itemheight : 190px; + .item{ + width: 280px; + height: @itemheight; + /*border: 1px solid #AAA;*/ + margin: 0 10px; + float: left; + box-sizing:border-box; + -webkit-box-sizing:border-box; + font-size: 30px; + } + + .iconWrapper{ + float: left; + display: inline-block; + height: @itemheight; + line-height: @itemheight; + width: 70px; + text-align: center; + font-size: 40px; + color: @textDark; + } + + h4{ + color: @textDark; + margin: 60px 0 15px 0; + font-size: 20px; + } + + h5{ + color: @textLight; + margin: 0; + font-size: 14px; + } + } +} + +.quickstart{ + background: @gray; + width: 100%; + + .quickstartContent{ + position: relative; + } + + .screenshot{ + position: absolute; + right: 0; + bottom: 0; + } + + code.simpleBash{ + font-family: monospace; + font-weight: bold; + color: #333; + padding: 0; + } +} + +.listSection{ + .listContent{ + width: @wideContent; + margin: 0 auto; + } + + + ul{ + margin: 0 200px; + } + + li{ + color: @textDark; + font-size: 16px; + line-height: 40px; + } +} + +.sample{ + background: @gray; + + + .sampleContent{ + width: @wideContent; + margin: 0 auto; + } + + .item{ + width: 1000px; + margin: 20px auto 0; + } + + .figure{ + vertical-align: top; + } + + pre{ + margin: 0; + display: inline-block; + vertical-align: top; + } + + code{ + width: 530px; + } + + .readmore{ + /*text-align: center;*/ + padding-bottom: 20px; + } +} + +.readMore{ + background: @gray; + padding-bottom: 50px; +} + +.learnMore{ + width: 100%; + height: 300px; + background: @dark; + text-align: center; + position: relative; + + .btnWrapper{ + width: 100%; + text-align: center; + height: 60px; + margin-top: -30px; + position: absolute; + top:50%; + } +} + diff --git a/javascripts/main.js b/javascripts/main.js deleted file mode 100644 index d8135d3..0000000 --- a/javascripts/main.js +++ /dev/null @@ -1 +0,0 @@ -console.log('This would be the main JS file.'); diff --git a/javascripts/scale.fix.js b/javascripts/scale.fix.js deleted file mode 100644 index 08716c0..0000000 --- a/javascripts/scale.fix.js +++ /dev/null @@ -1,20 +0,0 @@ -fixScale = function(doc) { - - var addEvent = 'addEventListener', - type = 'gesturestart', - qsa = 'querySelectorAll', - scales = [1, 1], - meta = qsa in doc ? doc[qsa]('meta[name=viewport]') : []; - - function fix() { - meta.content = 'width=device-width,minimum-scale=' + scales[0] + ',maximum-scale=' + scales[1]; - doc.removeEventListener(type, fix, true); - } - - if ((meta = meta[meta.length - 1]) && addEvent in doc) { - fix(); - scales = [.25, 1.6]; - doc[addEvent](type, fix, true); - } - -}; \ No newline at end of file diff --git a/lib.js b/lib.js new file mode 100644 index 0000000..edbc256 --- /dev/null +++ b/lib.js @@ -0,0 +1,5 @@ +/* Zepto v1.1.6 - zepto event ajax form ie - zeptojs.com/license */ +var Zepto=function(){function L(t){return null==t?String(t):j[S.call(t)]||"object"}function Z(t){return"function"==L(t)}function _(t){return null!=t&&t==t.window}function $(t){return null!=t&&t.nodeType==t.DOCUMENT_NODE}function D(t){return"object"==L(t)}function M(t){return D(t)&&!_(t)&&Object.getPrototypeOf(t)==Object.prototype}function R(t){return"number"==typeof t.length}function k(t){return s.call(t,function(t){return null!=t})}function z(t){return t.length>0?n.fn.concat.apply([],t):t}function F(t){return t.replace(/::/g,"/").replace(/([A-Z]+)([A-Z][a-z])/g,"$1_$2").replace(/([a-z\d])([A-Z])/g,"$1_$2").replace(/_/g,"-").toLowerCase()}function q(t){return t in f?f[t]:f[t]=new RegExp("(^|\\s)"+t+"(\\s|$)")}function H(t,e){return"number"!=typeof e||c[F(t)]?e:e+"px"}function I(t){var e,n;return u[t]||(e=a.createElement(t),a.body.appendChild(e),n=getComputedStyle(e,"").getPropertyValue("display"),e.parentNode.removeChild(e),"none"==n&&(n="block"),u[t]=n),u[t]}function V(t){return"children"in t?o.call(t.children):n.map(t.childNodes,function(t){return 1==t.nodeType?t:void 0})}function B(n,i,r){for(e in i)r&&(M(i[e])||A(i[e]))?(M(i[e])&&!M(n[e])&&(n[e]={}),A(i[e])&&!A(n[e])&&(n[e]=[]),B(n[e],i[e],r)):i[e]!==t&&(n[e]=i[e])}function U(t,e){return null==e?n(t):n(t).filter(e)}function J(t,e,n,i){return Z(e)?e.call(t,n,i):e}function X(t,e,n){null==n?t.removeAttribute(e):t.setAttribute(e,n)}function W(e,n){var i=e.className||"",r=i&&i.baseVal!==t;return n===t?r?i.baseVal:i:void(r?i.baseVal=n:e.className=n)}function Y(t){try{return t?"true"==t||("false"==t?!1:"null"==t?null:+t+""==t?+t:/^[\[\{]/.test(t)?n.parseJSON(t):t):t}catch(e){return t}}function G(t,e){e(t);for(var n=0,i=t.childNodes.length;i>n;n++)G(t.childNodes[n],e)}var t,e,n,i,C,N,r=[],o=r.slice,s=r.filter,a=window.document,u={},f={},c={"column-count":1,columns:1,"font-weight":1,"line-height":1,opacity:1,"z-index":1,zoom:1},l=/^\s*<(\w+|!)[^>]*>/,h=/^<(\w+)\s*\/?>(?:<\/\1>|)$/,p=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi,d=/^(?:body|html)$/i,m=/([A-Z])/g,g=["val","css","html","text","data","width","height","offset"],v=["after","prepend","before","append"],y=a.createElement("table"),x=a.createElement("tr"),b={tr:a.createElement("tbody"),tbody:y,thead:y,tfoot:y,td:x,th:x,"*":a.createElement("div")},w=/complete|loaded|interactive/,E=/^[\w-]*$/,j={},S=j.toString,T={},O=a.createElement("div"),P={tabindex:"tabIndex",readonly:"readOnly","for":"htmlFor","class":"className",maxlength:"maxLength",cellspacing:"cellSpacing",cellpadding:"cellPadding",rowspan:"rowSpan",colspan:"colSpan",usemap:"useMap",frameborder:"frameBorder",contenteditable:"contentEditable"},A=Array.isArray||function(t){return t instanceof Array};return T.matches=function(t,e){if(!e||!t||1!==t.nodeType)return!1;var n=t.webkitMatchesSelector||t.mozMatchesSelector||t.oMatchesSelector||t.matchesSelector;if(n)return n.call(t,e);var i,r=t.parentNode,o=!r;return o&&(r=O).appendChild(t),i=~T.qsa(r,e).indexOf(t),o&&O.removeChild(t),i},C=function(t){return t.replace(/-+(.)?/g,function(t,e){return e?e.toUpperCase():""})},N=function(t){return s.call(t,function(e,n){return t.indexOf(e)==n})},T.fragment=function(e,i,r){var s,u,f;return h.test(e)&&(s=n(a.createElement(RegExp.$1))),s||(e.replace&&(e=e.replace(p,"<$1>")),i===t&&(i=l.test(e)&&RegExp.$1),i in b||(i="*"),f=b[i],f.innerHTML=""+e,s=n.each(o.call(f.childNodes),function(){f.removeChild(this)})),M(r)&&(u=n(s),n.each(r,function(t,e){g.indexOf(t)>-1?u[t](e):u.attr(t,e)})),s},T.Z=function(t,e){return t=t||[],t.__proto__=n.fn,t.selector=e||"",t},T.isZ=function(t){return t instanceof T.Z},T.init=function(e,i){var r;if(!e)return T.Z();if("string"==typeof e)if(e=e.trim(),"<"==e[0]&&l.test(e))r=T.fragment(e,RegExp.$1,i),e=null;else{if(i!==t)return n(i).find(e);r=T.qsa(a,e)}else{if(Z(e))return n(a).ready(e);if(T.isZ(e))return e;if(A(e))r=k(e);else if(D(e))r=[e],e=null;else if(l.test(e))r=T.fragment(e.trim(),RegExp.$1,i),e=null;else{if(i!==t)return n(i).find(e);r=T.qsa(a,e)}}return T.Z(r,e)},n=function(t,e){return T.init(t,e)},n.extend=function(t){var e,n=o.call(arguments,1);return"boolean"==typeof t&&(e=t,t=n.shift()),n.forEach(function(n){B(t,n,e)}),t},T.qsa=function(t,e){var n,i="#"==e[0],r=!i&&"."==e[0],s=i||r?e.slice(1):e,a=E.test(s);return $(t)&&a&&i?(n=t.getElementById(s))?[n]:[]:1!==t.nodeType&&9!==t.nodeType?[]:o.call(a&&!i?r?t.getElementsByClassName(s):t.getElementsByTagName(e):t.querySelectorAll(e))},n.contains=a.documentElement.contains?function(t,e){return t!==e&&t.contains(e)}:function(t,e){for(;e&&(e=e.parentNode);)if(e===t)return!0;return!1},n.type=L,n.isFunction=Z,n.isWindow=_,n.isArray=A,n.isPlainObject=M,n.isEmptyObject=function(t){var e;for(e in t)return!1;return!0},n.inArray=function(t,e,n){return r.indexOf.call(e,t,n)},n.camelCase=C,n.trim=function(t){return null==t?"":String.prototype.trim.call(t)},n.uuid=0,n.support={},n.expr={},n.map=function(t,e){var n,r,o,i=[];if(R(t))for(r=0;r=0?e:e+this.length]},toArray:function(){return this.get()},size:function(){return this.length},remove:function(){return this.each(function(){null!=this.parentNode&&this.parentNode.removeChild(this)})},each:function(t){return r.every.call(this,function(e,n){return t.call(e,n,e)!==!1}),this},filter:function(t){return Z(t)?this.not(this.not(t)):n(s.call(this,function(e){return T.matches(e,t)}))},add:function(t,e){return n(N(this.concat(n(t,e))))},is:function(t){return this.length>0&&T.matches(this[0],t)},not:function(e){var i=[];if(Z(e)&&e.call!==t)this.each(function(t){e.call(this,t)||i.push(this)});else{var r="string"==typeof e?this.filter(e):R(e)&&Z(e.item)?o.call(e):n(e);this.forEach(function(t){r.indexOf(t)<0&&i.push(t)})}return n(i)},has:function(t){return this.filter(function(){return D(t)?n.contains(this,t):n(this).find(t).size()})},eq:function(t){return-1===t?this.slice(t):this.slice(t,+t+1)},first:function(){var t=this[0];return t&&!D(t)?t:n(t)},last:function(){var t=this[this.length-1];return t&&!D(t)?t:n(t)},find:function(t){var e,i=this;return e=t?"object"==typeof t?n(t).filter(function(){var t=this;return r.some.call(i,function(e){return n.contains(e,t)})}):1==this.length?n(T.qsa(this[0],t)):this.map(function(){return T.qsa(this,t)}):n()},closest:function(t,e){var i=this[0],r=!1;for("object"==typeof t&&(r=n(t));i&&!(r?r.indexOf(i)>=0:T.matches(i,t));)i=i!==e&&!$(i)&&i.parentNode;return n(i)},parents:function(t){for(var e=[],i=this;i.length>0;)i=n.map(i,function(t){return(t=t.parentNode)&&!$(t)&&e.indexOf(t)<0?(e.push(t),t):void 0});return U(e,t)},parent:function(t){return U(N(this.pluck("parentNode")),t)},children:function(t){return U(this.map(function(){return V(this)}),t)},contents:function(){return this.map(function(){return o.call(this.childNodes)})},siblings:function(t){return U(this.map(function(t,e){return s.call(V(e.parentNode),function(t){return t!==e})}),t)},empty:function(){return this.each(function(){this.innerHTML=""})},pluck:function(t){return n.map(this,function(e){return e[t]})},show:function(){return this.each(function(){"none"==this.style.display&&(this.style.display=""),"none"==getComputedStyle(this,"").getPropertyValue("display")&&(this.style.display=I(this.nodeName))})},replaceWith:function(t){return this.before(t).remove()},wrap:function(t){var e=Z(t);if(this[0]&&!e)var i=n(t).get(0),r=i.parentNode||this.length>1;return this.each(function(o){n(this).wrapAll(e?t.call(this,o):r?i.cloneNode(!0):i)})},wrapAll:function(t){if(this[0]){n(this[0]).before(t=n(t));for(var e;(e=t.children()).length;)t=e.first();n(t).append(this)}return this},wrapInner:function(t){var e=Z(t);return this.each(function(i){var r=n(this),o=r.contents(),s=e?t.call(this,i):t;o.length?o.wrapAll(s):r.append(s)})},unwrap:function(){return this.parent().each(function(){n(this).replaceWith(n(this).children())}),this},clone:function(){return this.map(function(){return this.cloneNode(!0)})},hide:function(){return this.css("display","none")},toggle:function(e){return this.each(function(){var i=n(this);(e===t?"none"==i.css("display"):e)?i.show():i.hide()})},prev:function(t){return n(this.pluck("previousElementSibling")).filter(t||"*")},next:function(t){return n(this.pluck("nextElementSibling")).filter(t||"*")},html:function(t){return 0 in arguments?this.each(function(e){var i=this.innerHTML;n(this).empty().append(J(this,t,e,i))}):0 in this?this[0].innerHTML:null},text:function(t){return 0 in arguments?this.each(function(e){var n=J(this,t,e,this.textContent);this.textContent=null==n?"":""+n}):0 in this?this[0].textContent:null},attr:function(n,i){var r;return"string"!=typeof n||1 in arguments?this.each(function(t){if(1===this.nodeType)if(D(n))for(e in n)X(this,e,n[e]);else X(this,n,J(this,i,t,this.getAttribute(n)))}):this.length&&1===this[0].nodeType?!(r=this[0].getAttribute(n))&&n in this[0]?this[0][n]:r:t},removeAttr:function(t){return this.each(function(){1===this.nodeType&&t.split(" ").forEach(function(t){X(this,t)},this)})},prop:function(t,e){return t=P[t]||t,1 in arguments?this.each(function(n){this[t]=J(this,e,n,this[t])}):this[0]&&this[0][t]},data:function(e,n){var i="data-"+e.replace(m,"-$1").toLowerCase(),r=1 in arguments?this.attr(i,n):this.attr(i);return null!==r?Y(r):t},val:function(t){return 0 in arguments?this.each(function(e){this.value=J(this,t,e,this.value)}):this[0]&&(this[0].multiple?n(this[0]).find("option").filter(function(){return this.selected}).pluck("value"):this[0].value)},offset:function(t){if(t)return this.each(function(e){var i=n(this),r=J(this,t,e,i.offset()),o=i.offsetParent().offset(),s={top:r.top-o.top,left:r.left-o.left};"static"==i.css("position")&&(s.position="relative"),i.css(s)});if(!this.length)return null;var e=this[0].getBoundingClientRect();return{left:e.left+window.pageXOffset,top:e.top+window.pageYOffset,width:Math.round(e.width),height:Math.round(e.height)}},css:function(t,i){if(arguments.length<2){var r,o=this[0];if(!o)return;if(r=getComputedStyle(o,""),"string"==typeof t)return o.style[C(t)]||r.getPropertyValue(t);if(A(t)){var s={};return n.each(t,function(t,e){s[e]=o.style[C(e)]||r.getPropertyValue(e)}),s}}var a="";if("string"==L(t))i||0===i?a=F(t)+":"+H(t,i):this.each(function(){this.style.removeProperty(F(t))});else for(e in t)t[e]||0===t[e]?a+=F(e)+":"+H(e,t[e])+";":this.each(function(){this.style.removeProperty(F(e))});return this.each(function(){this.style.cssText+=";"+a})},index:function(t){return t?this.indexOf(n(t)[0]):this.parent().children().indexOf(this[0])},hasClass:function(t){return t?r.some.call(this,function(t){return this.test(W(t))},q(t)):!1},addClass:function(t){return t?this.each(function(e){if("className"in this){i=[];var r=W(this),o=J(this,t,e,r);o.split(/\s+/g).forEach(function(t){n(this).hasClass(t)||i.push(t)},this),i.length&&W(this,r+(r?" ":"")+i.join(" "))}}):this},removeClass:function(e){return this.each(function(n){if("className"in this){if(e===t)return W(this,"");i=W(this),J(this,e,n,i).split(/\s+/g).forEach(function(t){i=i.replace(q(t)," ")}),W(this,i.trim())}})},toggleClass:function(e,i){return e?this.each(function(r){var o=n(this),s=J(this,e,r,W(this));s.split(/\s+/g).forEach(function(e){(i===t?!o.hasClass(e):i)?o.addClass(e):o.removeClass(e)})}):this},scrollTop:function(e){if(this.length){var n="scrollTop"in this[0];return e===t?n?this[0].scrollTop:this[0].pageYOffset:this.each(n?function(){this.scrollTop=e}:function(){this.scrollTo(this.scrollX,e)})}},scrollLeft:function(e){if(this.length){var n="scrollLeft"in this[0];return e===t?n?this[0].scrollLeft:this[0].pageXOffset:this.each(n?function(){this.scrollLeft=e}:function(){this.scrollTo(e,this.scrollY)})}},position:function(){if(this.length){var t=this[0],e=this.offsetParent(),i=this.offset(),r=d.test(e[0].nodeName)?{top:0,left:0}:e.offset();return i.top-=parseFloat(n(t).css("margin-top"))||0,i.left-=parseFloat(n(t).css("margin-left"))||0,r.top+=parseFloat(n(e[0]).css("border-top-width"))||0,r.left+=parseFloat(n(e[0]).css("border-left-width"))||0,{top:i.top-r.top,left:i.left-r.left}}},offsetParent:function(){return this.map(function(){for(var t=this.offsetParent||a.body;t&&!d.test(t.nodeName)&&"static"==n(t).css("position");)t=t.offsetParent;return t})}},n.fn.detach=n.fn.remove,["width","height"].forEach(function(e){var i=e.replace(/./,function(t){return t[0].toUpperCase()});n.fn[e]=function(r){var o,s=this[0];return r===t?_(s)?s["inner"+i]:$(s)?s.documentElement["scroll"+i]:(o=this.offset())&&o[e]:this.each(function(t){s=n(this),s.css(e,J(this,r,t,s[e]()))})}}),v.forEach(function(t,e){var i=e%2;n.fn[t]=function(){var t,o,r=n.map(arguments,function(e){return t=L(e),"object"==t||"array"==t||null==e?e:T.fragment(e)}),s=this.length>1;return r.length<1?this:this.each(function(t,u){o=i?u:u.parentNode,u=0==e?u.nextSibling:1==e?u.firstChild:2==e?u:null;var f=n.contains(a.documentElement,o);r.forEach(function(t){if(s)t=t.cloneNode(!0);else if(!o)return n(t).remove();o.insertBefore(t,u),f&&G(t,function(t){null==t.nodeName||"SCRIPT"!==t.nodeName.toUpperCase()||t.type&&"text/javascript"!==t.type||t.src||window.eval.call(window,t.innerHTML)})})})},n.fn[i?t+"To":"insert"+(e?"Before":"After")]=function(e){return n(e)[t](this),this}}),T.Z.prototype=n.fn,T.uniq=N,T.deserializeValue=Y,n.zepto=T,n}();window.Zepto=Zepto,void 0===window.$&&(window.$=Zepto),function(t){function l(t){return t._zid||(t._zid=e++)}function h(t,e,n,i){if(e=p(e),e.ns)var r=d(e.ns);return(s[l(t)]||[]).filter(function(t){return!(!t||e.e&&t.e!=e.e||e.ns&&!r.test(t.ns)||n&&l(t.fn)!==l(n)||i&&t.sel!=i)})}function p(t){var e=(""+t).split(".");return{e:e[0],ns:e.slice(1).sort().join(" ")}}function d(t){return new RegExp("(?:^| )"+t.replace(" "," .* ?")+"(?: |$)")}function m(t,e){return t.del&&!u&&t.e in f||!!e}function g(t){return c[t]||u&&f[t]||t}function v(e,i,r,o,a,u,f){var h=l(e),d=s[h]||(s[h]=[]);i.split(/\s/).forEach(function(i){if("ready"==i)return t(document).ready(r);var s=p(i);s.fn=r,s.sel=a,s.e in c&&(r=function(e){var n=e.relatedTarget;return!n||n!==this&&!t.contains(this,n)?s.fn.apply(this,arguments):void 0}),s.del=u;var l=u||r;s.proxy=function(t){if(t=j(t),!t.isImmediatePropagationStopped()){t.data=o;var i=l.apply(e,t._args==n?[t]:[t].concat(t._args));return i===!1&&(t.preventDefault(),t.stopPropagation()),i}},s.i=d.length,d.push(s),"addEventListener"in e&&e.addEventListener(g(s.e),s.proxy,m(s,f))})}function y(t,e,n,i,r){var o=l(t);(e||"").split(/\s/).forEach(function(e){h(t,e,n,i).forEach(function(e){delete s[o][e.i],"removeEventListener"in t&&t.removeEventListener(g(e.e),e.proxy,m(e,r))})})}function j(e,i){return(i||!e.isDefaultPrevented)&&(i||(i=e),t.each(E,function(t,n){var r=i[t];e[t]=function(){return this[n]=x,r&&r.apply(i,arguments)},e[n]=b}),(i.defaultPrevented!==n?i.defaultPrevented:"returnValue"in i?i.returnValue===!1:i.getPreventDefault&&i.getPreventDefault())&&(e.isDefaultPrevented=x)),e}function S(t){var e,i={originalEvent:t};for(e in t)w.test(e)||t[e]===n||(i[e]=t[e]);return j(i,t)}var n,e=1,i=Array.prototype.slice,r=t.isFunction,o=function(t){return"string"==typeof t},s={},a={},u="onfocusin"in window,f={focus:"focusin",blur:"focusout"},c={mouseenter:"mouseover",mouseleave:"mouseout"};a.click=a.mousedown=a.mouseup=a.mousemove="MouseEvents",t.event={add:v,remove:y},t.proxy=function(e,n){var s=2 in arguments&&i.call(arguments,2);if(r(e)){var a=function(){return e.apply(n,s?s.concat(i.call(arguments)):arguments)};return a._zid=l(e),a}if(o(n))return s?(s.unshift(e[n],e),t.proxy.apply(null,s)):t.proxy(e[n],e);throw new TypeError("expected function")},t.fn.bind=function(t,e,n){return this.on(t,e,n)},t.fn.unbind=function(t,e){return this.off(t,e)},t.fn.one=function(t,e,n,i){return this.on(t,e,n,i,1)};var x=function(){return!0},b=function(){return!1},w=/^([A-Z]|returnValue$|layer[XY]$)/,E={preventDefault:"isDefaultPrevented",stopImmediatePropagation:"isImmediatePropagationStopped",stopPropagation:"isPropagationStopped"};t.fn.delegate=function(t,e,n){return this.on(e,t,n)},t.fn.undelegate=function(t,e,n){return this.off(e,t,n)},t.fn.live=function(e,n){return t(document.body).delegate(this.selector,e,n),this},t.fn.die=function(e,n){return t(document.body).undelegate(this.selector,e,n),this},t.fn.on=function(e,s,a,u,f){var c,l,h=this;return e&&!o(e)?(t.each(e,function(t,e){h.on(t,s,a,e,f)}),h):(o(s)||r(u)||u===!1||(u=a,a=s,s=n),(r(a)||a===!1)&&(u=a,a=n),u===!1&&(u=b),h.each(function(n,r){f&&(c=function(t){return y(r,t.type,u),u.apply(this,arguments)}),s&&(l=function(e){var n,o=t(e.target).closest(s,r).get(0);return o&&o!==r?(n=t.extend(S(e),{currentTarget:o,liveFired:r}),(c||u).apply(o,[n].concat(i.call(arguments,1)))):void 0}),v(r,e,u,a,s,l||c)}))},t.fn.off=function(e,i,s){var a=this;return e&&!o(e)?(t.each(e,function(t,e){a.off(t,i,e)}),a):(o(i)||r(s)||s===!1||(s=i,i=n),s===!1&&(s=b),a.each(function(){y(this,e,s,i)}))},t.fn.trigger=function(e,n){return e=o(e)||t.isPlainObject(e)?t.Event(e):j(e),e._args=n,this.each(function(){e.type in f&&"function"==typeof this[e.type]?this[e.type]():"dispatchEvent"in this?this.dispatchEvent(e):t(this).triggerHandler(e,n)})},t.fn.triggerHandler=function(e,n){var i,r;return this.each(function(s,a){i=S(o(e)?t.Event(e):e),i._args=n,i.target=a,t.each(h(a,e.type||e),function(t,e){return r=e.proxy(i),i.isImmediatePropagationStopped()?!1:void 0})}),r},"focusin focusout focus blur load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select keydown keypress keyup error".split(" ").forEach(function(e){t.fn[e]=function(t){return 0 in arguments?this.bind(e,t):this.trigger(e)}}),t.Event=function(t,e){o(t)||(e=t,t=e.type);var n=document.createEvent(a[t]||"Events"),i=!0;if(e)for(var r in e)"bubbles"==r?i=!!e[r]:n[r]=e[r];return n.initEvent(t,i,!0),j(n)}}(Zepto),function(t){function h(e,n,i){var r=t.Event(n);return t(e).trigger(r,i),!r.isDefaultPrevented()}function p(t,e,i,r){return t.global?h(e||n,i,r):void 0}function d(e){e.global&&0===t.active++&&p(e,null,"ajaxStart")}function m(e){e.global&&!--t.active&&p(e,null,"ajaxStop")}function g(t,e){var n=e.context;return e.beforeSend.call(n,t,e)===!1||p(e,n,"ajaxBeforeSend",[t,e])===!1?!1:void p(e,n,"ajaxSend",[t,e])}function v(t,e,n,i){var r=n.context,o="success";n.success.call(r,t,o,e),i&&i.resolveWith(r,[t,o,e]),p(n,r,"ajaxSuccess",[e,n,t]),x(o,e,n)}function y(t,e,n,i,r){var o=i.context;i.error.call(o,n,e,t),r&&r.rejectWith(o,[n,e,t]),p(i,o,"ajaxError",[n,i,t||e]),x(e,n,i)}function x(t,e,n){var i=n.context;n.complete.call(i,e,t),p(n,i,"ajaxComplete",[e,n]),m(n)}function b(){}function w(t){return t&&(t=t.split(";",2)[0]),t&&(t==f?"html":t==u?"json":s.test(t)?"script":a.test(t)&&"xml")||"text"}function E(t,e){return""==e?t:(t+"&"+e).replace(/[&?]{1,2}/,"?")}function j(e){e.processData&&e.data&&"string"!=t.type(e.data)&&(e.data=t.param(e.data,e.traditional)),!e.data||e.type&&"GET"!=e.type.toUpperCase()||(e.url=E(e.url,e.data),e.data=void 0)}function S(e,n,i,r){return t.isFunction(n)&&(r=i,i=n,n=void 0),t.isFunction(i)||(r=i,i=void 0),{url:e,data:n,success:i,dataType:r}}function C(e,n,i,r){var o,s=t.isArray(n),a=t.isPlainObject(n);t.each(n,function(n,u){o=t.type(u),r&&(n=i?r:r+"["+(a||"object"==o||"array"==o?n:"")+"]"),!r&&s?e.add(u.name,u.value):"array"==o||!i&&"object"==o?C(e,u,i,n):e.add(n,u)})}var i,r,e=0,n=window.document,o=/)<[^<]*)*<\/script>/gi,s=/^(?:text|application)\/javascript/i,a=/^(?:text|application)\/xml/i,u="application/json",f="text/html",c=/^\s*$/,l=n.createElement("a");l.href=window.location.href,t.active=0,t.ajaxJSONP=function(i,r){if(!("type"in i))return t.ajax(i);var f,h,o=i.jsonpCallback,s=(t.isFunction(o)?o():o)||"jsonp"+ ++e,a=n.createElement("script"),u=window[s],c=function(e){t(a).triggerHandler("error",e||"abort")},l={abort:c};return r&&r.promise(l),t(a).on("load error",function(e,n){clearTimeout(h),t(a).off().remove(),"error"!=e.type&&f?v(f[0],l,i,r):y(null,n||"error",l,i,r),window[s]=u,f&&t.isFunction(u)&&u(f[0]),u=f=void 0}),g(l,i)===!1?(c("abort"),l):(window[s]=function(){f=arguments},a.src=i.url.replace(/\?(.+)=\?/,"?$1="+s),n.head.appendChild(a),i.timeout>0&&(h=setTimeout(function(){c("timeout")},i.timeout)),l)},t.ajaxSettings={type:"GET",beforeSend:b,success:b,error:b,complete:b,context:null,global:!0,xhr:function(){return new window.XMLHttpRequest},accepts:{script:"text/javascript, application/javascript, application/x-javascript",json:u,xml:"application/xml, text/xml",html:f,text:"text/plain"},crossDomain:!1,timeout:0,processData:!0,cache:!0},t.ajax=function(e){var a,o=t.extend({},e||{}),s=t.Deferred&&t.Deferred();for(i in t.ajaxSettings)void 0===o[i]&&(o[i]=t.ajaxSettings[i]);d(o),o.crossDomain||(a=n.createElement("a"),a.href=o.url,a.href=a.href,o.crossDomain=l.protocol+"//"+l.host!=a.protocol+"//"+a.host),o.url||(o.url=window.location.toString()),j(o);var u=o.dataType,f=/\?.+=\?/.test(o.url);if(f&&(u="jsonp"),o.cache!==!1&&(e&&e.cache===!0||"script"!=u&&"jsonp"!=u)||(o.url=E(o.url,"_="+Date.now())),"jsonp"==u)return f||(o.url=E(o.url,o.jsonp?o.jsonp+"=?":o.jsonp===!1?"":"callback=?")),t.ajaxJSONP(o,s);var C,h=o.accepts[u],p={},m=function(t,e){p[t.toLowerCase()]=[t,e]},x=/^([\w-]+:)\/\//.test(o.url)?RegExp.$1:window.location.protocol,S=o.xhr(),T=S.setRequestHeader;if(s&&s.promise(S),o.crossDomain||m("X-Requested-With","XMLHttpRequest"),m("Accept",h||"*/*"),(h=o.mimeType||h)&&(h.indexOf(",")>-1&&(h=h.split(",",2)[0]),S.overrideMimeType&&S.overrideMimeType(h)),(o.contentType||o.contentType!==!1&&o.data&&"GET"!=o.type.toUpperCase())&&m("Content-Type",o.contentType||"application/x-www-form-urlencoded"),o.headers)for(r in o.headers)m(r,o.headers[r]);if(S.setRequestHeader=m,S.onreadystatechange=function(){if(4==S.readyState){S.onreadystatechange=b,clearTimeout(C);var e,n=!1;if(S.status>=200&&S.status<300||304==S.status||0==S.status&&"file:"==x){u=u||w(o.mimeType||S.getResponseHeader("content-type")),e=S.responseText;try{"script"==u?(1,eval)(e):"xml"==u?e=S.responseXML:"json"==u&&(e=c.test(e)?null:t.parseJSON(e))}catch(i){n=i}n?y(n,"parsererror",S,o,s):v(e,S,o,s)}else y(S.statusText||null,S.status?"error":"abort",S,o,s)}},g(S,o)===!1)return S.abort(),y(null,"abort",S,o,s),S;if(o.xhrFields)for(r in o.xhrFields)S[r]=o.xhrFields[r];var N="async"in o?o.async:!0;S.open(o.type,o.url,N,o.username,o.password);for(r in p)T.apply(S,p[r]);return o.timeout>0&&(C=setTimeout(function(){S.onreadystatechange=b,S.abort(),y(null,"timeout",S,o,s)},o.timeout)),S.send(o.data?o.data:null),S},t.get=function(){return t.ajax(S.apply(null,arguments))},t.post=function(){var e=S.apply(null,arguments);return e.type="POST",t.ajax(e)},t.getJSON=function(){var e=S.apply(null,arguments);return e.dataType="json",t.ajax(e)},t.fn.load=function(e,n,i){if(!this.length)return this;var a,r=this,s=e.split(/\s/),u=S(e,n,i),f=u.success;return s.length>1&&(u.url=s[0],a=s[1]),u.success=function(e){r.html(a?t("
").html(e.replace(o,"")).find(a):e),f&&f.apply(r,arguments)},t.ajax(u),this};var T=encodeURIComponent;t.param=function(e,n){var i=[];return i.add=function(e,n){t.isFunction(n)&&(n=n()),null==n&&(n=""),this.push(T(e)+"="+T(n))},C(i,e,n),i.join("&").replace(/%20/g,"+")}}(Zepto),function(t){t.fn.serializeArray=function(){var e,n,i=[],r=function(t){return t.forEach?t.forEach(r):void i.push({name:e,value:t})};return this[0]&&t.each(this[0].elements,function(i,o){n=o.type,e=o.name,e&&"fieldset"!=o.nodeName.toLowerCase()&&!o.disabled&&"submit"!=n&&"reset"!=n&&"button"!=n&&"file"!=n&&("radio"!=n&&"checkbox"!=n||o.checked)&&r(t(o).val())}),i},t.fn.serialize=function(){var t=[];return this.serializeArray().forEach(function(e){t.push(encodeURIComponent(e.name)+"="+encodeURIComponent(e.value))}),t.join("&")},t.fn.submit=function(e){if(0 in arguments)this.bind("submit",e);else if(this.length){var n=t.Event("submit");this.eq(0).trigger(n),n.isDefaultPrevented()||this.get(0).submit()}return this}}(Zepto),function(t){"__proto__"in{}||t.extend(t.zepto,{Z:function(e,n){return e=e||[],t.extend(e,t.fn),e.selector=n||"",e.__Z=!0,e},isZ:function(e){return"array"===t.type(e)&&"__Z"in e}});try{getComputedStyle(void 0)}catch(e){var n=getComputedStyle;window.getComputedStyle=function(t){try{return n(t)}catch(e){return null}}}}(Zepto); + +/* https://highlightjs.org/ */ +!function(e){"undefined"!=typeof exports?e(exports):(window.hljs=e({}),"function"==typeof define&&define.amd&&define("hljs",[],function(){return window.hljs}))}(function(e){function n(e){return e.replace(/&/gm,"&").replace(//gm,">")}function t(e){return e.nodeName.toLowerCase()}function r(e,n){var t=e&&e.exec(n);return t&&0==t.index}function a(e){return/no-?highlight|plain|text/.test(e)}function i(e){var n,t,r,i=e.className+" ";if(i+=e.parentNode?e.parentNode.className:"",t=/\blang(?:uage)?-([\w-]+)\b/.exec(i))return E(t[1])?t[1]:"no-highlight";for(i=i.split(/\s+/),n=0,r=i.length;r>n;n++)if(E(i[n])||a(i[n]))return i[n]}function o(e,n){var t,r={};for(t in e)r[t]=e[t];if(n)for(t in n)r[t]=n[t];return r}function u(e){var n=[];return function r(e,a){for(var i=e.firstChild;i;i=i.nextSibling)3==i.nodeType?a+=i.nodeValue.length:1==i.nodeType&&(n.push({event:"start",offset:a,node:i}),a=r(i,a),t(i).match(/br|hr|img|input/)||n.push({event:"stop",offset:a,node:i}));return a}(e,0),n}function c(e,r,a){function i(){return e.length&&r.length?e[0].offset!=r[0].offset?e[0].offset"}function u(e){f+=""}function c(e){("start"==e.event?o:u)(e.node)}for(var s=0,f="",l=[];e.length||r.length;){var g=i();if(f+=n(a.substr(s,g[0].offset-s)),s=g[0].offset,g==e){l.reverse().forEach(u);do c(g.splice(0,1)[0]),g=i();while(g==e&&g.length&&g[0].offset==s);l.reverse().forEach(o)}else"start"==g[0].event?l.push(g[0].node):l.pop(),c(g.splice(0,1)[0])}return f+n(a.substr(s))}function s(e){function n(e){return e&&e.source||e}function t(t,r){return new RegExp(n(t),"m"+(e.cI?"i":"")+(r?"g":""))}function r(a,i){if(!a.compiled){if(a.compiled=!0,a.k=a.k||a.bK,a.k){var u={},c=function(n,t){e.cI&&(t=t.toLowerCase()),t.split(" ").forEach(function(e){var t=e.split("|");u[t[0]]=[n,t[1]?Number(t[1]):1]})};"string"==typeof a.k?c("keyword",a.k):Object.keys(a.k).forEach(function(e){c(e,a.k[e])}),a.k=u}a.lR=t(a.l||/\b\w+\b/,!0),i&&(a.bK&&(a.b="\\b("+a.bK.split(" ").join("|")+")\\b"),a.b||(a.b=/\B|\b/),a.bR=t(a.b),a.e||a.eW||(a.e=/\B|\b/),a.e&&(a.eR=t(a.e)),a.tE=n(a.e)||"",a.eW&&i.tE&&(a.tE+=(a.e?"|":"")+i.tE)),a.i&&(a.iR=t(a.i)),void 0===a.r&&(a.r=1),a.c||(a.c=[]);var s=[];a.c.forEach(function(e){e.v?e.v.forEach(function(n){s.push(o(e,n))}):s.push("self"==e?a:e)}),a.c=s,a.c.forEach(function(e){r(e,a)}),a.starts&&r(a.starts,i);var f=a.c.map(function(e){return e.bK?"\\.?("+e.b+")\\.?":e.b}).concat([a.tE,a.i]).map(n).filter(Boolean);a.t=f.length?t(f.join("|"),!0):{exec:function(){return null}}}}r(e)}function f(e,t,a,i){function o(e,n){for(var t=0;t";return i+=e+'">',i+n+o}function p(){if(!L.k)return n(y);var e="",t=0;L.lR.lastIndex=0;for(var r=L.lR.exec(y);r;){e+=n(y.substr(t,r.index-t));var a=g(L,r);a?(B+=a[1],e+=h(a[0],n(r[0]))):e+=n(r[0]),t=L.lR.lastIndex,r=L.lR.exec(y)}return e+n(y.substr(t))}function d(){var e="string"==typeof L.sL;if(e&&!x[L.sL])return n(y);var t=e?f(L.sL,y,!0,M[L.sL]):l(y,L.sL.length?L.sL:void 0);return L.r>0&&(B+=t.r),e&&(M[L.sL]=t.top),h(t.language,t.value,!1,!0)}function b(){return void 0!==L.sL?d():p()}function v(e,t){var r=e.cN?h(e.cN,"",!0):"";e.rB?(k+=r,y=""):e.eB?(k+=n(t)+r,y=""):(k+=r,y=t),L=Object.create(e,{parent:{value:L}})}function m(e,t){if(y+=e,void 0===t)return k+=b(),0;var r=o(t,L);if(r)return k+=b(),v(r,t),r.rB?0:t.length;var a=u(L,t);if(a){var i=L;i.rE||i.eE||(y+=t),k+=b();do L.cN&&(k+=""),B+=L.r,L=L.parent;while(L!=a.parent);return i.eE&&(k+=n(t)),y="",a.starts&&v(a.starts,""),i.rE?0:t.length}if(c(t,L))throw new Error('Illegal lexeme "'+t+'" for mode "'+(L.cN||"")+'"');return y+=t,t.length||1}var N=E(e);if(!N)throw new Error('Unknown language: "'+e+'"');s(N);var R,L=i||N,M={},k="";for(R=L;R!=N;R=R.parent)R.cN&&(k=h(R.cN,"",!0)+k);var y="",B=0;try{for(var C,j,I=0;;){if(L.t.lastIndex=I,C=L.t.exec(t),!C)break;j=m(t.substr(I,C.index-I),C[0]),I=C.index+j}for(m(t.substr(I)),R=L;R.parent;R=R.parent)R.cN&&(k+="");return{r:B,value:k,language:e,top:L}}catch(O){if(-1!=O.message.indexOf("Illegal"))return{r:0,value:n(t)};throw O}}function l(e,t){t=t||w.languages||Object.keys(x);var r={r:0,value:n(e)},a=r;return t.forEach(function(n){if(E(n)){var t=f(n,e,!1);t.language=n,t.r>a.r&&(a=t),t.r>r.r&&(a=r,r=t)}}),a.language&&(r.second_best=a),r}function g(e){return w.tabReplace&&(e=e.replace(/^((<[^>]+>|\t)+)/gm,function(e,n){return n.replace(/\t/g,w.tabReplace)})),w.useBR&&(e=e.replace(/\n/g,"
")),e}function h(e,n,t){var r=n?R[n]:t,a=[e.trim()];return e.match(/\bhljs\b/)||a.push("hljs"),-1===e.indexOf(r)&&a.push(r),a.join(" ").trim()}function p(e){var n=i(e);if(!a(n)){var t;w.useBR?(t=document.createElementNS("http://www.w3.org/1999/xhtml","div"),t.innerHTML=e.innerHTML.replace(/\n/g,"").replace(//g,"\n")):t=e;var r=t.textContent,o=n?f(n,r,!0):l(r),s=u(t);if(s.length){var p=document.createElementNS("http://www.w3.org/1999/xhtml","div");p.innerHTML=o.value,o.value=c(s,u(p),r)}o.value=g(o.value),e.innerHTML=o.value,e.className=h(e.className,n,o.language),e.result={language:o.language,re:o.r},o.second_best&&(e.second_best={language:o.second_best.language,re:o.second_best.r})}}function d(e){w=o(w,e)}function b(){if(!b.called){b.called=!0;var e=document.querySelectorAll("pre code");Array.prototype.forEach.call(e,p)}}function v(){addEventListener("DOMContentLoaded",b,!1),addEventListener("load",b,!1)}function m(n,t){var r=x[n]=t(e);r.aliases&&r.aliases.forEach(function(e){R[e]=n})}function N(){return Object.keys(x)}function E(e){return x[e]||x[R[e]]}var w={classPrefix:"hljs-",tabReplace:null,useBR:!1,languages:void 0},x={},R={};return e.highlight=f,e.highlightAuto=l,e.fixMarkup=g,e.highlightBlock=p,e.configure=d,e.initHighlighting=b,e.initHighlightingOnLoad=v,e.registerLanguage=m,e.listLanguages=N,e.getLanguage=E,e.inherit=o,e.IR="[a-zA-Z]\\w*",e.UIR="[a-zA-Z_]\\w*",e.NR="\\b\\d+(\\.\\d+)?",e.CNR="(\\b0[xX][a-fA-F0-9]+|(\\b\\d+(\\.\\d*)?|\\.\\d+)([eE][-+]?\\d+)?)",e.BNR="\\b(0b[01]+)",e.RSR="!|!=|!==|%|%=|&|&&|&=|\\*|\\*=|\\+|\\+=|,|-|-=|/=|/|:|;|<<|<<=|<=|<|===|==|=|>>>=|>>=|>=|>>>|>>|>|\\?|\\[|\\{|\\(|\\^|\\^=|\\||\\|=|\\|\\||~",e.BE={b:"\\\\[\\s\\S]",r:0},e.ASM={cN:"string",b:"'",e:"'",i:"\\n",c:[e.BE]},e.QSM={cN:"string",b:'"',e:'"',i:"\\n",c:[e.BE]},e.PWM={b:/\b(a|an|the|are|I|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such)\b/},e.C=function(n,t,r){var a=e.inherit({cN:"comment",b:n,e:t,c:[]},r||{});return a.c.push(e.PWM),a.c.push({cN:"doctag",b:"(?:TODO|FIXME|NOTE|BUG|XXX):",r:0}),a},e.CLCM=e.C("//","$"),e.CBCM=e.C("/\\*","\\*/"),e.HCM=e.C("#","$"),e.NM={cN:"number",b:e.NR,r:0},e.CNM={cN:"number",b:e.CNR,r:0},e.BNM={cN:"number",b:e.BNR,r:0},e.CSSNM={cN:"number",b:e.NR+"(%|em|ex|ch|rem|vw|vh|vmin|vmax|cm|mm|in|pt|pc|px|deg|grad|rad|turn|s|ms|Hz|kHz|dpi|dpcm|dppx)?",r:0},e.RM={cN:"regexp",b:/\//,e:/\/[gimuy]*/,i:/\n/,c:[e.BE,{b:/\[/,e:/\]/,r:0,c:[e.BE]}]},e.TM={cN:"title",b:e.IR,r:0},e.UTM={cN:"title",b:e.UIR,r:0},e});hljs.registerLanguage("javascript",function(e){return{aliases:["js"],k:{keyword:"in of if for while finally var new function do return void else break catch instanceof with throw case default try this switch continue typeof delete let yield const export super debugger as async await",literal:"true false null undefined NaN Infinity",built_in:"eval isFinite isNaN parseFloat parseInt decodeURI decodeURIComponent encodeURI encodeURIComponent escape unescape Object Function Boolean Error EvalError InternalError RangeError ReferenceError StopIteration SyntaxError TypeError URIError Number Math Date String RegExp Array Float32Array Float64Array Int16Array Int32Array Int8Array Uint16Array Uint32Array Uint8Array Uint8ClampedArray ArrayBuffer DataView JSON Intl arguments require module console window document Symbol Set Map WeakSet WeakMap Proxy Reflect Promise"},c:[{cN:"pi",r:10,b:/^\s*['"]use (strict|asm)['"]/},e.ASM,e.QSM,{cN:"string",b:"`",e:"`",c:[e.BE,{cN:"subst",b:"\\$\\{",e:"\\}"}]},e.CLCM,e.CBCM,{cN:"number",v:[{b:"\\b(0[bB][01]+)"},{b:"\\b(0[oO][0-7]+)"},{b:e.CNR}],r:0},{b:"("+e.RSR+"|\\b(case|return|throw)\\b)\\s*",k:"return throw case",c:[e.CLCM,e.CBCM,e.RM,{b:/\s*[);\]]/,r:0,sL:"xml"}],r:0},{cN:"function",bK:"function",e:/\{/,eE:!0,c:[e.inherit(e.TM,{b:/[A-Za-z$_][0-9A-Za-z$_]*/}),{cN:"params",b:/\(/,e:/\)/,eB:!0,eE:!0,c:[e.CLCM,e.CBCM],i:/["'\(]/}],i:/\[|%/},{b:/\$[(.]/},{b:"\\."+e.IR,r:0},{bK:"import",e:"[;$]",k:"import from as",c:[e.ASM,e.QSM]},{cN:"class",bK:"class",e:/[{;=]/,eE:!0,i:/[:"\[\]]/,c:[{bK:"extends"},e.UTM]}],i:/#/}});hljs.registerLanguage("xml",function(t){var s="[A-Za-z0-9\\._:-]+",c={b:/<\?(php)?(?!\w)/,e:/\?>/,sL:"php"},e={eW:!0,i:/]+/}]}]}]};return{aliases:["html","xhtml","rss","atom","xsl","plist"],cI:!0,c:[{cN:"doctype",b:"",r:10,c:[{b:"\\[",e:"\\]"}]},t.C("",{r:10}),{cN:"cdata",b:"<\\!\\[CDATA\\[",e:"\\]\\]>",r:10},{cN:"tag",b:"|$)",e:">",k:{title:"style"},c:[e],starts:{e:"",rE:!0,sL:"css"}},{cN:"tag",b:"|$)",e:">",k:{title:"script"},c:[e],starts:{e:"",rE:!0,sL:["actionscript","javascript","handlebars"]}},c,{cN:"pi",b:/<\?\w+/,e:/\?>/,r:10},{cN:"tag",b:"",c:[{cN:"title",b:/[^ \/><\n\t]+/,r:0},e]}]}}); \ No newline at end of file diff --git a/params.json b/params.json deleted file mode 100644 index f24d133..0000000 --- a/params.json +++ /dev/null @@ -1 +0,0 @@ -{"name":"Anyproxy","tagline":"A fully configurable proxy in NodeJS, which can handle HTTPS requests perfectly.","body":"anyproxy\r\n==========\r\nA fully configurable proxy in NodeJS, which can handle HTTPS requests perfectly.\r\n\r\nFeature\r\n------------\r\n* work as http or https proxy\r\n* fully configurable, you can modify a request at any stage by your own javascript code\r\n* when working as https proxy, it can generate and intercept https requests for any domain without complaint by browser (after you trust its root CA)\r\n* provide a web interface\r\n\r\n![screenshot](http://gtms03.alicdn.com/tps/i3/TB1ddyqGXXXXXbXXpXXihxC1pXX-1000-549.jpg_640x640q90.jpg)\r\n \r\nUsage\r\n--------------\r\n\r\n### step 1 - install\r\n\r\n* install [NodeJS](http://nodejs.org/)\r\n* ``npm install -g anyproxy`` , may require ``sudo``\r\n\r\n### step 2 - start server\r\n\r\n* start with default settings : ``anyproxy``\r\n* start with a specific port: ``anyproxy --port 8001``\r\n\r\n### step 3 - launch web interface\r\n\r\n* visit [http://127.0.0.1:8002](http://127.0.0.1:8002) with modern browsers\r\n\r\nHow to write your own rule file\r\n-------------------\r\n* with rule file, you can modify a request at any stage, no matter it's just before sending or after servers' responding.\r\n* actually ruleFile.js is a module for Nodejs, feel free to invoke your own modules.\r\n* ``anyproxy --rule /path/to/ruleFile.js``\r\n* you may learn how it works by our samples: [https://github.com/alipay-ct-wd/anyproxy/tree/master/rule_sample](https://github.com/alipay-ct-wd/anyproxy/tree/master/rule_sample)\r\n* samples in [rule_sample](https://github.com/alipay-ct-wd/anyproxy/tree/master/rule_sample)\r\n * **rule__blank.js**, blank rule file with some comments. You may read this before writing your own rule file.\r\n\r\n * **rule_adjust_response_time.js**, delay all the response for 1500ms\r\n * **rule_allow_CORS.js**, add CORS headers to allow cross-domain ajax request\r\n * **rule_intercept_some_https_requests.js**, intercept https requests toward github.com\r\n * **rule_remove_cache_header.js**, remove all cache-related headers from server\r\n * **rule_replace_request_option.js**, replace request parameters before sending to the server\r\n * **rule_replace_response_data.js**, modify response data\r\n * **rule_replace_response_status_code.js**, replace server's status code\r\n * **rule_use_local_data.js**, map some requests to local file\r\n\r\n* rule file scheme is as follows, you may also get it from [rule__blank.js](https://github.com/alipay-ct-wd/anyproxy/blob/master/rule_sample/rule__blank.js)\r\n\r\n```javascript\r\n\r\nmodule.exports = {\r\n /*\r\n these functions will overwrite the default ones, write your own when necessary.\r\n */\r\n\r\n //whether to intercept this request by local logic\r\n //if the return value is true, anyproxy will call dealLocalResponse to get response data and will not send request to remote server anymore\r\n shouldUseLocalResponse : function(req,reqBody){\r\n return false;\r\n },\r\n\r\n //you may deal the response locally instead of sending it to server\r\n //this function be called when shouldUseLocalResponse returns true\r\n //callback(statusCode,resHeader,responseData)\r\n //e.g. callback(200,{\"content-type\":\"text/html\"},\"hello world\")\r\n dealLocalResponse : function(req,reqBody,callback){\r\n callback(statusCode,resHeader,responseData)\r\n },\r\n\r\n //replace the request protocol when sending to the real server\r\n //protocol : \"http\" or \"https\"\r\n replaceRequestProtocol:function(req,protocol){\r\n var newProtocol = protocol;\r\n return newProtocol;\r\n },\r\n\r\n //req is user's request sent to the proxy server\r\n //option is how the proxy server will send request to the real server. i.e. require(\"http\").request(option,function(){...})\r\n //you may return a customized option to replace the original option\r\n //you should not write content-length header in options, since anyproxy will handle it for you\r\n replaceRequestOption : function(req,option){\r\n var newOption = option;\r\n return newOption;\r\n },\r\n\r\n //replace the request body\r\n replaceRequestData: function(req,data){\r\n return data;\r\n },\r\n\r\n //replace the statusCode before it's sent to the user\r\n replaceResponseStatusCode: function(req,res,statusCode){\r\n var newStatusCode = statusCode;\r\n return newStatusCode;\r\n },\r\n\r\n //replace the httpHeader before it's sent to the user\r\n //Here header == res.headers\r\n replaceResponseHeader: function(req,res,header){\r\n var newHeader = header;\r\n return newHeader;\r\n },\r\n\r\n //replace the response from the server before it's sent to the user\r\n //you may return either a Buffer or a string\r\n //serverResData is a Buffer, you may get its content by calling serverResData.toString()\r\n replaceServerResData: function(req,res,serverResData){\r\n return serverResData;\r\n },\r\n\r\n //add a pause before sending response to user\r\n pauseBeforeSendingResponse : function(req,res){\r\n var timeInMS = 1; //delay all requests for 1ms\r\n return timeInMS; \r\n },\r\n\r\n //should intercept https request, or it will be forwarded to real server\r\n shouldInterceptHttpsReq :function(req){\r\n return false;\r\n }\r\n\r\n};\r\n\r\n```\r\n\r\nUsing https features\r\n----------------\r\n#### step 1 - install openssl\r\n* install [openssl](http://wiki.openssl.org/index.php/Compilation_and_Installation) ,if you want to use HTTPS-related features. After that, the command ``openssl`` should be exposed to your shell\r\n\r\n#### step 2 - generate a rootCA and trust it\r\n* you should do this when it is the first time to start anyproxy\r\n* execute ``anyproxy --root`` ,follow the instructions on screen\r\n* you will see some tip like *rootCA generated at : /usr/lib...* . ``cd`` to that directory, add/trust the rootCA.crt file to your system keychain. In OSX, you may do that by open the *crt file directly\r\n\r\n#### step 3 - start a https proxy\r\n* ``anyproxy --type https --host my.domain.com``\r\n* the param ``host`` is required with https proxy and it should be kept exactly what it it when you config your browser. Otherwise, you may get some warning about security.\r\n\r\n\r\nOthers\r\n-----------------\r\n#### work as a module\r\n```\r\nnpm install anyproxy --save\r\n```\r\n\r\n```javascript\r\nvar proxy = require(\"anyproxy\");\r\n\r\n!proxy.isRootCAFileExists() && proxy.generateRootCA(); //please manually trust this rootCA\r\nnew proxy.proxyServer(\"http\",\"8001\", \"localhost\" ,\"path/to/rule/file.js\");\r\n\r\n```\r\n\r\n#### clear all the temperary certificates\r\n``anyproxy --clear``\r\n\r\n\r\n## Contact\r\n* Please feel free to raise any issue about this project, or give us some advice on this doc. :)\r\n","google":"UA-57129650-1","note":"Don't delete this file! It's used internally to help with page regeneration."} \ No newline at end of file diff --git a/sampleA.png b/sampleA.png new file mode 100644 index 0000000000000000000000000000000000000000..0c4c3794159d9c4724aef518456289a446c5d1c4 GIT binary patch literal 17215 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 literal 0 HcmV?d00001 diff --git a/sampleC.png b/sampleC.png new file mode 100644 index 0000000000000000000000000000000000000000..160ce0cb8917c64fd15ce9190c183b9648352695 GIT binary patch literal 23255 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 literal 0 HcmV?d00001 diff --git a/sampleD.png b/sampleD.png new file mode 100644 index 0000000000000000000000000000000000000000..aec44706ec70c1ca4b422d1d41cc94badde21669 GIT binary patch literal 18899 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 z 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 literal 0 HcmV?d00001 diff --git a/stylesheets/pygment_trac.css b/stylesheets/pygment_trac.css deleted file mode 100644 index e65cedf..0000000 --- a/stylesheets/pygment_trac.css +++ /dev/null @@ -1,70 +0,0 @@ -.highlight .hll { background-color: #ffffcc } -.highlight { background: #f0f3f3; } -.highlight .c { color: #0099FF; font-style: italic } /* Comment */ -.highlight .err { color: #AA0000; background-color: #FFAAAA } /* Error */ -.highlight .k { color: #006699; font-weight: bold } /* Keyword */ -.highlight .o { color: #555555 } /* Operator */ -.highlight .cm { color: #0099FF; font-style: italic } /* Comment.Multiline */ -.highlight .cp { color: #009999 } /* Comment.Preproc */ -.highlight .c1 { color: #0099FF; font-style: italic } /* Comment.Single */ -.highlight .cs { color: #0099FF; font-weight: bold; font-style: italic } /* Comment.Special */ -.highlight .gd { background-color: #FFCCCC; border: 1px solid #CC0000 } /* Generic.Deleted */ -.highlight .ge { font-style: italic } /* Generic.Emph */ -.highlight .gr { color: #FF0000 } /* Generic.Error */ -.highlight .gh { color: #003300; font-weight: bold } /* Generic.Heading */ -.highlight .gi { background-color: #CCFFCC; border: 1px solid #00CC00 } /* Generic.Inserted */ -.highlight .go { color: #AAAAAA } /* Generic.Output */ -.highlight .gp { color: #000099; font-weight: bold } /* Generic.Prompt */ -.highlight .gs { font-weight: bold } /* Generic.Strong */ -.highlight .gu { color: #003300; font-weight: bold } /* Generic.Subheading */ -.highlight .gt { color: #99CC66 } /* Generic.Traceback */ -.highlight .kc { color: #006699; font-weight: bold } /* Keyword.Constant */ -.highlight .kd { color: #006699; font-weight: bold } /* Keyword.Declaration */ -.highlight .kn { color: #006699; font-weight: bold } /* Keyword.Namespace */ -.highlight .kp { color: #006699 } /* Keyword.Pseudo */ -.highlight .kr { color: #006699; font-weight: bold } /* Keyword.Reserved */ -.highlight .kt { color: #007788; font-weight: bold } /* Keyword.Type */ -.highlight .m { color: #FF6600 } /* Literal.Number */ -.highlight .s { color: #CC3300 } /* Literal.String */ -.highlight .na { color: #330099 } /* Name.Attribute */ -.highlight .nb { color: #336666 } /* Name.Builtin */ -.highlight .nc { color: #00AA88; font-weight: bold } /* Name.Class */ -.highlight .no { color: #336600 } /* Name.Constant */ -.highlight .nd { color: #9999FF } /* Name.Decorator */ -.highlight .ni { color: #999999; font-weight: bold } /* Name.Entity */ -.highlight .ne { color: #CC0000; font-weight: bold } /* Name.Exception */ -.highlight .nf { color: #CC00FF } /* Name.Function */ -.highlight .nl { color: #9999FF } /* Name.Label */ -.highlight .nn { color: #00CCFF; font-weight: bold } /* Name.Namespace */ -.highlight .nt { color: #330099; font-weight: bold } /* Name.Tag */ -.highlight .nv { color: #003333 } /* Name.Variable */ -.highlight .ow { color: #000000; font-weight: bold } /* Operator.Word */ -.highlight .w { color: #bbbbbb } /* Text.Whitespace */ -.highlight .mf { color: #FF6600 } /* Literal.Number.Float */ -.highlight .mh { color: #FF6600 } /* Literal.Number.Hex */ -.highlight .mi { color: #FF6600 } /* Literal.Number.Integer */ -.highlight .mo { color: #FF6600 } /* Literal.Number.Oct */ -.highlight .sb { color: #CC3300 } /* Literal.String.Backtick */ -.highlight .sc { color: #CC3300 } /* Literal.String.Char */ -.highlight .sd { color: #CC3300; font-style: italic } /* Literal.String.Doc */ -.highlight .s2 { color: #CC3300 } /* Literal.String.Double */ -.highlight .se { color: #CC3300; font-weight: bold } /* Literal.String.Escape */ -.highlight .sh { color: #CC3300 } /* Literal.String.Heredoc */ -.highlight .si { color: #AA0000 } /* Literal.String.Interpol */ -.highlight .sx { color: #CC3300 } /* Literal.String.Other */ -.highlight .sr { color: #33AAAA } /* Literal.String.Regex */ -.highlight .s1 { color: #CC3300 } /* Literal.String.Single */ -.highlight .ss { color: #FFCC33 } /* Literal.String.Symbol */ -.highlight .bp { color: #336666 } /* Name.Builtin.Pseudo */ -.highlight .vc { color: #003333 } /* Name.Variable.Class */ -.highlight .vg { color: #003333 } /* Name.Variable.Global */ -.highlight .vi { color: #003333 } /* Name.Variable.Instance */ -.highlight .il { color: #FF6600 } /* Literal.Number.Integer.Long */ - -.type-csharp .highlight .k { color: #0000FF } -.type-csharp .highlight .kt { color: #0000FF } -.type-csharp .highlight .nf { color: #000000; font-weight: normal } -.type-csharp .highlight .nc { color: #2B91AF } -.type-csharp .highlight .nn { color: #000000 } -.type-csharp .highlight .s { color: #A31515 } -.type-csharp .highlight .sc { color: #A31515 } diff --git a/stylesheets/styles.css b/stylesheets/styles.css deleted file mode 100644 index 466b9d6..0000000 --- a/stylesheets/styles.css +++ /dev/null @@ -1,356 +0,0 @@ -@import url(https://fonts.googleapis.com/css?family=Lato:300italic,700italic,300,700); -html { - background: #6C7989; - background: #6c7989 -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #6c7989), color-stop(100%, #434b55)) fixed; - background: #6c7989 -webkit-linear-gradient(#6c7989, #434b55) fixed; - background: #6c7989 -moz-linear-gradient(#6c7989, #434b55) fixed; - background: #6c7989 -o-linear-gradient(#6c7989, #434b55) fixed; - background: #6c7989 -ms-linear-gradient(#6c7989, #434b55) fixed; - background: #6c7989 linear-gradient(#6c7989, #434b55) fixed; -} - -body { - padding: 50px 0; - margin: 0; - font: 14px/1.5 Lato, "Helvetica Neue", Helvetica, Arial, sans-serif; - color: #555; - font-weight: 300; - background: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAeCAYAAABNChwpAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAABx0RVh0U29mdHdhcmUAQWRvYmUgRmlyZXdvcmtzIENTNXG14zYAAAAUdEVYdENyZWF0aW9uIFRpbWUAMy82LzEygrTcTAAAAFRJREFUSIljfPDggZRf5RIGGNjUHsNATz6jXmSL1Kb2GLiAX+USBnrymRgGGDCORgFmoNAXjEbBaBSMRsFoFIxGwWgUjEbBaBSMRsFoFIxGwWgUAABYNujumib3wAAAAABJRU5ErkJggg==') fixed; -} - -.wrapper { - width: 640px; - margin: 0 auto; - background: #DEDEDE; - -webkit-border-radius: 8px; - -moz-border-radius: 8px; - -ms-border-radius: 8px; - -o-border-radius: 8px; - border-radius: 8px; - -webkit-box-shadow: rgba(0, 0, 0, 0.2) 0 0 0 1px, rgba(0, 0, 0, 0.45) 0 3px 10px; - -moz-box-shadow: rgba(0, 0, 0, 0.2) 0 0 0 1px, rgba(0, 0, 0, 0.45) 0 3px 10px; - box-shadow: rgba(0, 0, 0, 0.2) 0 0 0 1px, rgba(0, 0, 0, 0.45) 0 3px 10px; -} - -header, section, footer { - display: block; -} - -a { - color: #069; - text-decoration: none; -} - -p { - margin: 0 0 20px; - padding: 0; -} - -strong { - color: #222; - font-weight: 700; -} - -header { - -webkit-border-radius: 8px 8px 0 0; - -moz-border-radius: 8px 8px 0 0; - -ms-border-radius: 8px 8px 0 0; - -o-border-radius: 8px 8px 0 0; - border-radius: 8px 8px 0 0; - background: #C6EAFA; - background: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #ddfbfc), color-stop(100%, #c6eafa)); - background: -webkit-linear-gradient(#ddfbfc, #c6eafa); - background: -moz-linear-gradient(#ddfbfc, #c6eafa); - background: -o-linear-gradient(#ddfbfc, #c6eafa); - background: -ms-linear-gradient(#ddfbfc, #c6eafa); - background: linear-gradient(#ddfbfc, #c6eafa); - position: relative; - padding: 15px 20px; - border-bottom: 1px solid #B2D2E1; -} -header h1 { - margin: 0; - padding: 0; - font-size: 24px; - line-height: 1.2; - color: #069; - text-shadow: rgba(255, 255, 255, 0.9) 0 1px 0; -} -header.without-description h1 { - margin: 10px 0; -} -header p { - margin: 0; - color: #61778B; - width: 300px; - font-size: 13px; -} -header p.view { - display: none; - font-weight: 700; - text-shadow: rgba(255, 255, 255, 0.9) 0 1px 0; - -webkit-font-smoothing: antialiased; -} -header p.view a { - color: #06c; -} -header p.view small { - font-weight: 400; -} -header ul { - margin: 0; - padding: 0; - list-style: none; - position: absolute; - z-index: 1; - right: 20px; - top: 20px; - height: 38px; - padding: 1px 0; - background: #5198DF; - background: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #77b9fb), color-stop(100%, #3782cd)); - background: -webkit-linear-gradient(#77b9fb, #3782cd); - background: -moz-linear-gradient(#77b9fb, #3782cd); - background: -o-linear-gradient(#77b9fb, #3782cd); - background: -ms-linear-gradient(#77b9fb, #3782cd); - background: linear-gradient(#77b9fb, #3782cd); - border-radius: 5px; - -webkit-box-shadow: inset rgba(255, 255, 255, 0.45) 0 1px 0, inset rgba(0, 0, 0, 0.2) 0 -1px 0; - -moz-box-shadow: inset rgba(255, 255, 255, 0.45) 0 1px 0, inset rgba(0, 0, 0, 0.2) 0 -1px 0; - box-shadow: inset rgba(255, 255, 255, 0.45) 0 1px 0, inset rgba(0, 0, 0, 0.2) 0 -1px 0; - width: auto; -} -header ul:before { - content: ''; - position: absolute; - z-index: -1; - left: -5px; - top: -4px; - right: -5px; - bottom: -6px; - background: rgba(0, 0, 0, 0.1); - -webkit-border-radius: 8px; - -moz-border-radius: 8px; - -ms-border-radius: 8px; - -o-border-radius: 8px; - border-radius: 8px; - -webkit-box-shadow: rgba(0, 0, 0, 0.2) 0 -1px 0, inset rgba(255, 255, 255, 0.7) 0 -1px 0; - -moz-box-shadow: rgba(0, 0, 0, 0.2) 0 -1px 0, inset rgba(255, 255, 255, 0.7) 0 -1px 0; - box-shadow: rgba(0, 0, 0, 0.2) 0 -1px 0, inset rgba(255, 255, 255, 0.7) 0 -1px 0; -} -header ul li { - width: 79px; - float: left; - border-right: 1px solid #3A7CBE; - height: 38px; -} -header ul li.single { - border: none; -} -header ul li + li { - width: 78px; - border-left: 1px solid #8BBEF3; -} -header ul li + li + li { - border-right: none; - width: 79px; -} -header ul a { - line-height: 1; - font-size: 11px; - color: #fff; - color: rgba(255, 255, 255, 0.8); - display: block; - text-align: center; - font-weight: 400; - padding-top: 6px; - height: 40px; - text-shadow: rgba(0, 0, 0, 0.4) 0 -1px 0; -} -header ul a strong { - font-size: 14px; - display: block; - color: #fff; - -webkit-font-smoothing: antialiased; -} - -section { - padding: 15px 20px; - font-size: 15px; - border-top: 1px solid #fff; - background: -webkit-gradient(linear, 50% 0%, 50% 700, color-stop(0%, #fafafa), color-stop(100%, #dedede)); - background: -webkit-linear-gradient(#fafafa, #dedede 700px); - background: -moz-linear-gradient(#fafafa, #dedede 700px); - background: -o-linear-gradient(#fafafa, #dedede 700px); - background: -ms-linear-gradient(#fafafa, #dedede 700px); - background: linear-gradient(#fafafa, #dedede 700px); - -webkit-border-radius: 0 0 8px 8px; - -moz-border-radius: 0 0 8px 8px; - -ms-border-radius: 0 0 8px 8px; - -o-border-radius: 0 0 8px 8px; - border-radius: 0 0 8px 8px; - position: relative; -} - -h1, h2, h3, h4, h5, h6 { - color: #222; - padding: 0; - margin: 0 0 20px; - line-height: 1.2; -} - -p, ul, ol, table, pre, dl { - margin: 0 0 20px; -} - -h1, h2, h3 { - line-height: 1.1; -} - -h1 { - font-size: 28px; -} - -h2 { - color: #393939; -} - -h3, h4, h5, h6 { - color: #494949; -} - -blockquote { - margin: 0 -20px 20px; - padding: 15px 20px 1px 40px; - font-style: italic; - background: #ccc; - background: rgba(0, 0, 0, 0.06); - color: #222; -} - -img { - max-width: 100%; -} - -code, pre { - font-family: Monaco, Bitstream Vera Sans Mono, Lucida Console, Terminal; - color: #333; - font-size: 12px; - overflow-x: auto; -} - -pre { - padding: 20px; - background: #3A3C42; - color: #f8f8f2; - margin: 0 -20px 20px; -} -pre code { - color: #f8f8f2; -} -li pre { - margin-left: -60px; - padding-left: 60px; -} - -table { - width: 100%; - border-collapse: collapse; -} - -th, td { - text-align: left; - padding: 5px 10px; - border-bottom: 1px solid #aaa; -} - -dt { - color: #222; - font-weight: 700; -} - -th { - color: #222; -} - -small { - font-size: 11px; -} - -hr { - border: 0; - background: #aaa; - height: 1px; - margin: 0 0 20px; -} - -footer { - width: 640px; - margin: 0 auto; - padding: 20px 0 0; - color: #ccc; - overflow: hidden; -} -footer a { - color: #fff; - font-weight: bold; -} -footer p { - float: left; -} -footer p + p { - float: right; -} - -@media print, screen and (max-width: 740px) { - body { - padding: 0; - } - - .wrapper { - -webkit-border-radius: 0; - -moz-border-radius: 0; - -ms-border-radius: 0; - -o-border-radius: 0; - border-radius: 0; - -webkit-box-shadow: none; - -moz-box-shadow: none; - box-shadow: none; - width: 100%; - } - - footer { - -webkit-border-radius: 0; - -moz-border-radius: 0; - -ms-border-radius: 0; - -o-border-radius: 0; - border-radius: 0; - padding: 20px; - width: auto; - } - footer p { - float: none; - margin: 0; - } - footer p + p { - float: none; - } -} -@media print, screen and (max-width:580px) { - header ul { - display: none; - } - - header p.view { - display: block; - } - - header p { - width: 100%; - } -} -@media print { - header p.view a small:before { - content: 'at http://github.com/'; - } -} diff --git a/stylesheets/stylesheet.css b/stylesheets/stylesheet.css deleted file mode 100644 index 619d19d..0000000 --- a/stylesheets/stylesheet.css +++ /dev/null @@ -1,425 +0,0 @@ -/******************************************************************************* -Slate Theme for GitHub Pages -by Jason Costello, @jsncostello -*******************************************************************************/ - -@import url(pygment_trac.css); - -/******************************************************************************* -MeyerWeb Reset -*******************************************************************************/ - -html, body, div, span, applet, object, iframe, -h1, h2, h3, h4, h5, h6, p, blockquote, pre, -a, abbr, acronym, address, big, cite, code, -del, dfn, em, img, ins, kbd, q, s, samp, -small, strike, strong, sub, sup, tt, var, -b, u, i, center, -dl, dt, dd, ol, ul, li, -fieldset, form, label, legend, -table, caption, tbody, tfoot, thead, tr, th, td, -article, aside, canvas, details, embed, -figure, figcaption, footer, header, hgroup, -menu, nav, output, ruby, section, summary, -time, mark, audio, video { - margin: 0; - padding: 0; - border: 0; - font: inherit; - vertical-align: baseline; -} - -/* HTML5 display-role reset for older browsers */ -article, aside, details, figcaption, figure, -footer, header, hgroup, menu, nav, section { - display: block; -} - -ol, ul { - list-style: none; -} - -table { - border-collapse: collapse; - border-spacing: 0; -} - -/******************************************************************************* -Theme Styles -*******************************************************************************/ - -body { - box-sizing: border-box; - color:#373737; - background: #212121; - font-size: 16px; - font-family: 'Myriad Pro', Calibri, Helvetica, Arial, sans-serif; - line-height: 1.5; - -webkit-font-smoothing: antialiased; -} - -h1, h2, h3, h4, h5, h6 { - margin: 10px 0; - font-weight: 700; - color:#222222; - font-family: 'Lucida Grande', 'Calibri', Helvetica, Arial, sans-serif; - letter-spacing: -1px; -} - -h1 { - font-size: 36px; - font-weight: 700; -} - -h2 { - padding-bottom: 10px; - font-size: 32px; - background: url('../images/bg_hr.png') repeat-x bottom; -} - -h3 { - font-size: 24px; -} - -h4 { - font-size: 21px; -} - -h5 { - font-size: 18px; -} - -h6 { - font-size: 16px; -} - -p { - margin: 10px 0 15px 0; -} - -footer p { - color: #f2f2f2; -} - -a { - text-decoration: none; - color: #007edf; - text-shadow: none; - - transition: color 0.5s ease; - transition: text-shadow 0.5s ease; - -webkit-transition: color 0.5s ease; - -webkit-transition: text-shadow 0.5s ease; - -moz-transition: color 0.5s ease; - -moz-transition: text-shadow 0.5s ease; - -o-transition: color 0.5s ease; - -o-transition: text-shadow 0.5s ease; - -ms-transition: color 0.5s ease; - -ms-transition: text-shadow 0.5s ease; -} - -a:hover, a:focus {text-decoration: underline;} - -footer a { - color: #F2F2F2; - text-decoration: underline; -} - -em { - font-style: italic; -} - -strong { - font-weight: bold; -} - -img { - position: relative; - margin: 0 auto; - max-width: 739px; - padding: 5px; - margin: 10px 0 10px 0; - border: 1px solid #ebebeb; - - box-shadow: 0 0 5px #ebebeb; - -webkit-box-shadow: 0 0 5px #ebebeb; - -moz-box-shadow: 0 0 5px #ebebeb; - -o-box-shadow: 0 0 5px #ebebeb; - -ms-box-shadow: 0 0 5px #ebebeb; -} - -p img { - display: inline; - margin: 0; - padding: 0; - vertical-align: middle; - text-align: center; - border: none; -} - -pre, code { - width: 100%; - color: #222; - background-color: #fff; - - font-family: Monaco, "Bitstream Vera Sans Mono", "Lucida Console", Terminal, monospace; - font-size: 14px; - - border-radius: 2px; - -moz-border-radius: 2px; - -webkit-border-radius: 2px; -} - -pre { - width: 100%; - padding: 10px; - box-shadow: 0 0 10px rgba(0,0,0,.1); - overflow: auto; -} - -code { - padding: 3px; - margin: 0 3px; - box-shadow: 0 0 10px rgba(0,0,0,.1); -} - -pre code { - display: block; - box-shadow: none; -} - -blockquote { - color: #666; - margin-bottom: 20px; - padding: 0 0 0 20px; - border-left: 3px solid #bbb; -} - - -ul, ol, dl { - margin-bottom: 15px -} - -ul { - list-style-position: inside; - list-style: disc; - padding-left: 20px; -} - -ol { - list-style-position: inside; - list-style: decimal; - padding-left: 20px; -} - -dl dt { - font-weight: bold; -} - -dl dd { - padding-left: 20px; - font-style: italic; -} - -dl p { - padding-left: 20px; - font-style: italic; -} - -hr { - height: 1px; - margin-bottom: 5px; - border: none; - background: url('../images/bg_hr.png') repeat-x center; -} - -table { - border: 1px solid #373737; - margin-bottom: 20px; - text-align: left; - } - -th { - font-family: 'Lucida Grande', 'Helvetica Neue', Helvetica, Arial, sans-serif; - padding: 10px; - background: #373737; - color: #fff; - } - -td { - padding: 10px; - border: 1px solid #373737; - } - -form { - background: #f2f2f2; - padding: 20px; -} - -/******************************************************************************* -Full-Width Styles -*******************************************************************************/ - -.outer { - width: 100%; -} - -.inner { - position: relative; - max-width: 640px; - padding: 20px 10px; - margin: 0 auto; -} - -#forkme_banner { - display: block; - position: absolute; - top:0; - right: 10px; - z-index: 10; - padding: 10px 50px 10px 10px; - color: #fff; - background: url('../images/blacktocat.png') #0090ff no-repeat 95% 50%; - font-weight: 700; - box-shadow: 0 0 10px rgba(0,0,0,.5); - border-bottom-left-radius: 2px; - border-bottom-right-radius: 2px; -} - -#header_wrap { - background: #212121; - background: -moz-linear-gradient(top, #373737, #212121); - background: -webkit-linear-gradient(top, #373737, #212121); - background: -ms-linear-gradient(top, #373737, #212121); - background: -o-linear-gradient(top, #373737, #212121); - background: linear-gradient(top, #373737, #212121); -} - -#header_wrap .inner { - padding: 50px 10px 30px 10px; -} - -#project_title { - margin: 0; - color: #fff; - font-size: 42px; - font-weight: 700; - text-shadow: #111 0px 0px 10px; -} - -#project_tagline { - color: #fff; - font-size: 24px; - font-weight: 300; - background: none; - text-shadow: #111 0px 0px 10px; -} - -#downloads { - position: absolute; - width: 210px; - z-index: 10; - bottom: -40px; - right: 0; - height: 70px; - background: url('../images/icon_download.png') no-repeat 0% 90%; -} - -.zip_download_link { - display: block; - float: right; - width: 90px; - height:70px; - text-indent: -5000px; - overflow: hidden; - background: url(../images/sprite_download.png) no-repeat bottom left; -} - -.tar_download_link { - display: block; - float: right; - width: 90px; - height:70px; - text-indent: -5000px; - overflow: hidden; - background: url(../images/sprite_download.png) no-repeat bottom right; - margin-left: 10px; -} - -.zip_download_link:hover { - background: url(../images/sprite_download.png) no-repeat top left; -} - -.tar_download_link:hover { - background: url(../images/sprite_download.png) no-repeat top right; -} - -#main_content_wrap { - background: #f2f2f2; - border-top: 1px solid #111; - border-bottom: 1px solid #111; -} - -#main_content { - padding-top: 40px; -} - -#footer_wrap { - background: #212121; -} - - - -/******************************************************************************* -Small Device Styles -*******************************************************************************/ - -@media screen and (max-width: 480px) { - body { - font-size:14px; - } - - #downloads { - display: none; - } - - .inner { - min-width: 320px; - max-width: 480px; - } - - #project_title { - font-size: 32px; - } - - h1 { - font-size: 28px; - } - - h2 { - font-size: 24px; - } - - h3 { - font-size: 21px; - } - - h4 { - font-size: 18px; - } - - h5 { - font-size: 14px; - } - - h6 { - font-size: 12px; - } - - code, pre { - min-width: 320px; - max-width: 480px; - font-size: 11px; - } - -}