From 795980ca02c50538971694de24aacb0b68cfec43 Mon Sep 17 00:00:00 2001 From: firesun Date: Thu, 29 Oct 2015 00:57:57 +0800 Subject: [PATCH] =?UTF-8?q?Version=202.2=20=E5=A2=9E=E5=8A=A0=E7=99=BB?= =?UTF-8?q?=E5=BD=95=E7=95=8C=E9=9D=A2=E4=B8=8E=E7=99=BB=E5=BD=95=E6=A0=A1?= =?UTF-8?q?=E9=AA=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 9 +- admin.php | 1 + auth.php | 20 +- config.php | 2 +- data/forbiddenIPList.dat | 0 keepsession.php | 3 - login.php | 141 +++ static/css/font-awesome.css | 1338 +++++++++++++++++++++ static/css/login.css | 174 +++ static/fonts/fontawesome-webfont.ttf | Bin 0 -> 80652 bytes static/fonts/fontawesome-webfont.woff | Bin 0 -> 44432 bytes static/images/logo.png | Bin 0 -> 50905 bytes static/js/loadgrid.js | 1604 +++++++++++++------------ static/js/login.js | 188 +++ util.php | 89 -- 15 files changed, 2728 insertions(+), 841 deletions(-) create mode 100644 data/forbiddenIPList.dat create mode 100644 login.php create mode 100644 static/css/font-awesome.css create mode 100644 static/css/login.css create mode 100644 static/fonts/fontawesome-webfont.ttf create mode 100644 static/fonts/fontawesome-webfont.woff create mode 100644 static/images/logo.png create mode 100644 static/js/login.js delete mode 100644 util.php diff --git a/README.md b/README.md index 9c0e185..870d23e 100644 --- a/README.md +++ b/README.md @@ -1,27 +1,30 @@ # XSS数据接收平台(无SQL版) ## 使用说明 -无需数据库,无需其他组件支持,可直接在php虚拟空间使用,使用步骤: +本平台设计理念,基本无需配置即可使用,故设计为无需数据库,无需其他组件支持,可直接在php虚拟空间使用,使用步骤: * 上传所有文件至空间根目录 * 修改config.php,指定数据存放目录,数据是否启用AES加密及加密密码 ```php +define('PASS', '2a05218c7aa0a6dbd370985d984627b8'); define('DATA_PATH', 'data'); define('ENABLE_ENCRYPT', true); define('ENCRYPT_PASS', "bluelotus"); ``` +可用php -r "$salt='!KTMdg#^^I6Z!deIVR#SgpAI6qTN7oVl';$key='你的密码';$key=md5($salt.$key.$salt);$key=md5($salt.$key.$salt);$key=md5($salt.$key.$salt);echo $key;"生成密码hash * 赋予`DATA_PATH`目录写权限 * 当有请求访问/index.php?a=xxx&b=xxxx,所有携带数据包括get,post,cookie,httpheaders,客户端信息都会记录 -* 可访问admin.php查看记录的数据 +* 可访问login.php登录查看记录的数据 ## 目前支持功能 * 自动判断携带数据是否base64编码,可自动解码 * 记录所有可记录的数据,并可根据ip判断位置,根据useragent判断操作系统与浏览器 * 新消息提醒,仿QQ邮箱新消息提醒框,可实时获得数据 * 支持简单的查找功能 +* 除了style允许unsafe-inline外启用CSP +* 挑战应答式的登录校验,session绑定ip与useragent ## TODO * keepsession -* 认证 * 完全启用CSP * 我的js * js模板 diff --git a/admin.php b/admin.php index da37ff3..706506c 100644 --- a/admin.php +++ b/admin.php @@ -8,6 +8,7 @@ require("auth.php"); + 控制面板 diff --git a/auth.php b/auth.php index 6a7fe78..763e4ee 100644 --- a/auth.php +++ b/auth.php @@ -2,9 +2,23 @@ if(!defined('IN_XSS_PLATFORM')) { exit('Access Denied'); } -header("Content-Security-Policy: default-src 'self'; object-src 'none'; style-src 'self' 'unsafe-inline'; frame-src 'none' "); -header("X-Content-Security-Policy: default-src 'self'; object-src 'none'; style-src 'self' 'unsafe-inline'; frame-src 'none' "); -header("X-WebKit-CSP: default-src 'self'; object-src 'none'; style-src 'self' 'unsafe-inline'; frame-src 'none' "); +ini_set("session.cookie_httponly", 1); +session_start(); + +if(!(isset($_SESSION['isLogin']) && $_SESSION['isLogin']===true && isset($_SESSION['user_IP']) &&$_SESSION['user_IP']!="" &&$_SESSION['user_IP']=== $_SERVER['REMOTE_ADDR'] &&isset($_SESSION['user_agent']) &&$_SESSION['user_agent']!="" &&$_SESSION['user_agent']=== $_SERVER['HTTP_USER_AGENT'] )) +{ + $_SESSION['isLogin']=false; + $_SESSION['user_IP']=""; + $_SESSION['user_agent']=""; + session_unset(); + session_destroy(); + header("Location: login.php"); + exit(); +} + +header("Content-Security-Policy: default-src 'self'; object-src 'none'; style-src 'self' 'unsafe-inline'; frame-src 'none'"); +header("X-Content-Security-Policy: default-src 'self'; object-src 'none'; style-src 'self' 'unsafe-inline'; frame-src 'none'"); +header("X-WebKit-CSP: default-src 'self'; object-src 'none'; style-src 'self' 'unsafe-inline'; frame-src 'none'"); ?> \ No newline at end of file diff --git a/config.php b/config.php index 9d8e2e0..78a25f7 100644 --- a/config.php +++ b/config.php @@ -3,7 +3,7 @@ if(!defined('IN_XSS_PLATFORM')) { exit('Access Denied'); } -define('PASS', 'bluelotus'); +define('PASS', '2a05218c7aa0a6dbd370985d984627b8');//bluelotus define('DATA_PATH', 'data'); define('ENABLE_ENCRYPT', true); define('ENCRYPT_PASS', "bluelotus"); diff --git a/data/forbiddenIPList.dat b/data/forbiddenIPList.dat new file mode 100644 index 0000000..e69de29 diff --git a/keepsession.php b/keepsession.php index 074a259..9c4971f 100644 --- a/keepsession.php +++ b/keepsession.php @@ -1,9 +1,6 @@ + + + + + 登录 + + + + + + + + +
+ +
+

+ 登录控制面板 +

+
+ + /> + +
+ +
+
+ + + \ No newline at end of file diff --git a/static/css/font-awesome.css b/static/css/font-awesome.css new file mode 100644 index 0000000..048cff9 --- /dev/null +++ b/static/css/font-awesome.css @@ -0,0 +1,1338 @@ +/*! + * Font Awesome 4.0.3 by @davegandy - http://fontawesome.io - @fontawesome + * License - http://fontawesome.io/license (Font: SIL OFL 1.1, CSS: MIT License) + */ +/* FONT PATH + * -------------------------- */ +@font-face { + font-family: 'FontAwesome'; + src: url('../fonts/fontawesome-webfont.eot?v=4.0.3'); + src: url('../fonts/fontawesome-webfont.eot?#iefix&v=4.0.3') format('embedded-opentype'), url('../fonts/fontawesome-webfont.woff?v=4.0.3') format('woff'), url('../fonts/fontawesome-webfont.ttf?v=4.0.3') format('truetype'), url('../fonts/fontawesome-webfont.svg?v=4.0.3#fontawesomeregular') format('svg'); + font-weight: normal; + font-style: normal; +} +.fa { + display: inline-block; + font-family: FontAwesome; + font-style: normal; + font-weight: normal; + line-height: 1; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} +/* makes the font 33% larger relative to the icon container */ +.fa-lg { + font-size: 1.3333333333333333em; + line-height: 0.75em; + vertical-align: -15%; +} +.fa-2x { + font-size: 2em; +} +.fa-3x { + font-size: 3em; +} +.fa-4x { + font-size: 4em; +} +.fa-5x { + font-size: 5em; +} +.fa-fw { + width: 1.2857142857142858em; + text-align: center; +} +.fa-ul { + padding-left: 0; + margin-left: 2.142857142857143em; + list-style-type: none; +} +.fa-ul > li { + position: relative; +} +.fa-li { + position: absolute; + left: -2.142857142857143em; + width: 2.142857142857143em; + top: 0.14285714285714285em; + text-align: center; +} +.fa-li.fa-lg { + left: -1.8571428571428572em; +} +.fa-border { + padding: .2em .25em .15em; + border: solid 0.08em #eeeeee; + border-radius: .1em; +} +.pull-right { + float: right; +} +.pull-left { + float: left; +} +.fa.pull-left { + margin-right: .3em; +} +.fa.pull-right { + margin-left: .3em; +} +.fa-spin { + -webkit-animation: spin 2s infinite linear; + -moz-animation: spin 2s infinite linear; + -o-animation: spin 2s infinite linear; + animation: spin 2s infinite linear; +} +@-moz-keyframes spin { + 0% { + -moz-transform: rotate(0deg); + } + 100% { + -moz-transform: rotate(359deg); + } +} +@-webkit-keyframes spin { + 0% { + -webkit-transform: rotate(0deg); + } + 100% { + -webkit-transform: rotate(359deg); + } +} +@-o-keyframes spin { + 0% { + -o-transform: rotate(0deg); + } + 100% { + -o-transform: rotate(359deg); + } +} +@-ms-keyframes spin { + 0% { + -ms-transform: rotate(0deg); + } + 100% { + -ms-transform: rotate(359deg); + } +} +@keyframes spin { + 0% { + transform: rotate(0deg); + } + 100% { + transform: rotate(359deg); + } +} +.fa-rotate-90 { + filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=1); + -webkit-transform: rotate(90deg); + -moz-transform: rotate(90deg); + -ms-transform: rotate(90deg); + -o-transform: rotate(90deg); + transform: rotate(90deg); +} +.fa-rotate-180 { + filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=2); + -webkit-transform: rotate(180deg); + -moz-transform: rotate(180deg); + -ms-transform: rotate(180deg); + -o-transform: rotate(180deg); + transform: rotate(180deg); +} +.fa-rotate-270 { + filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=3); + -webkit-transform: rotate(270deg); + -moz-transform: rotate(270deg); + -ms-transform: rotate(270deg); + -o-transform: rotate(270deg); + transform: rotate(270deg); +} +.fa-flip-horizontal { + filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1); + -webkit-transform: scale(-1, 1); + -moz-transform: scale(-1, 1); + -ms-transform: scale(-1, 1); + -o-transform: scale(-1, 1); + transform: scale(-1, 1); +} +.fa-flip-vertical { + filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1); + -webkit-transform: scale(1, -1); + -moz-transform: scale(1, -1); + -ms-transform: scale(1, -1); + -o-transform: scale(1, -1); + transform: scale(1, -1); +} +.fa-stack { + position: relative; + display: inline-block; + width: 2em; + height: 2em; + line-height: 2em; + vertical-align: middle; +} +.fa-stack-1x, +.fa-stack-2x { + position: absolute; + left: 0; + width: 100%; + text-align: center; +} +.fa-stack-1x { + line-height: inherit; +} +.fa-stack-2x { + font-size: 2em; +} +.fa-inverse { + color: #ffffff; +} +/* Font Awesome uses the Unicode Private Use Area (PUA) to ensure screen + readers do not read off random characters that represent icons */ +.fa-glass:before { + content: "\f000"; +} +.fa-music:before { + content: "\f001"; +} +.fa-search:before { + content: "\f002"; +} +.fa-envelope-o:before { + content: "\f003"; +} +.fa-heart:before { + content: "\f004"; +} +.fa-star:before { + content: "\f005"; +} +.fa-star-o:before { + content: "\f006"; +} +.fa-user:before { + content: "\f007"; +} +.fa-film:before { + content: "\f008"; +} +.fa-th-large:before { + content: "\f009"; +} +.fa-th:before { + content: "\f00a"; +} +.fa-th-list:before { + content: "\f00b"; +} +.fa-check:before { + content: "\f00c"; +} +.fa-times:before { + content: "\f00d"; +} +.fa-search-plus:before { + content: "\f00e"; +} +.fa-search-minus:before { + content: "\f010"; +} +.fa-power-off:before { + content: "\f011"; +} +.fa-signal:before { + content: "\f012"; +} +.fa-gear:before, +.fa-cog:before { + content: "\f013"; +} +.fa-trash-o:before { + content: "\f014"; +} +.fa-home:before { + content: "\f015"; +} +.fa-file-o:before { + content: "\f016"; +} +.fa-clock-o:before { + content: "\f017"; +} +.fa-road:before { + content: "\f018"; +} +.fa-download:before { + content: "\f019"; +} +.fa-arrow-circle-o-down:before { + content: "\f01a"; +} +.fa-arrow-circle-o-up:before { + content: "\f01b"; +} +.fa-inbox:before { + content: "\f01c"; +} +.fa-play-circle-o:before { + content: "\f01d"; +} +.fa-rotate-right:before, +.fa-repeat:before { + content: "\f01e"; +} +.fa-refresh:before { + content: "\f021"; +} +.fa-list-alt:before { + content: "\f022"; +} +.fa-lock:before { + content: "\f023"; +} +.fa-flag:before { + content: "\f024"; +} +.fa-headphones:before { + content: "\f025"; +} +.fa-volume-off:before { + content: "\f026"; +} +.fa-volume-down:before { + content: "\f027"; +} +.fa-volume-up:before { + content: "\f028"; +} +.fa-qrcode:before { + content: "\f029"; +} +.fa-barcode:before { + content: "\f02a"; +} +.fa-tag:before { + content: "\f02b"; +} +.fa-tags:before { + content: "\f02c"; +} +.fa-book:before { + content: "\f02d"; +} +.fa-bookmark:before { + content: "\f02e"; +} +.fa-print:before { + content: "\f02f"; +} +.fa-camera:before { + content: "\f030"; +} +.fa-font:before { + content: "\f031"; +} +.fa-bold:before { + content: "\f032"; +} +.fa-italic:before { + content: "\f033"; +} +.fa-text-height:before { + content: "\f034"; +} +.fa-text-width:before { + content: "\f035"; +} +.fa-align-left:before { + content: "\f036"; +} +.fa-align-center:before { + content: "\f037"; +} +.fa-align-right:before { + content: "\f038"; +} +.fa-align-justify:before { + content: "\f039"; +} +.fa-list:before { + content: "\f03a"; +} +.fa-dedent:before, +.fa-outdent:before { + content: "\f03b"; +} +.fa-indent:before { + content: "\f03c"; +} +.fa-video-camera:before { + content: "\f03d"; +} +.fa-picture-o:before { + content: "\f03e"; +} +.fa-pencil:before { + content: "\f040"; +} +.fa-map-marker:before { + content: "\f041"; +} +.fa-adjust:before { + content: "\f042"; +} +.fa-tint:before { + content: "\f043"; +} +.fa-edit:before, +.fa-pencil-square-o:before { + content: "\f044"; +} +.fa-share-square-o:before { + content: "\f045"; +} +.fa-check-square-o:before { + content: "\f046"; +} +.fa-arrows:before { + content: "\f047"; +} +.fa-step-backward:before { + content: "\f048"; +} +.fa-fast-backward:before { + content: "\f049"; +} +.fa-backward:before { + content: "\f04a"; +} +.fa-play:before { + content: "\f04b"; +} +.fa-pause:before { + content: "\f04c"; +} +.fa-stop:before { + content: "\f04d"; +} +.fa-forward:before { + content: "\f04e"; +} +.fa-fast-forward:before { + content: "\f050"; +} +.fa-step-forward:before { + content: "\f051"; +} +.fa-eject:before { + content: "\f052"; +} +.fa-chevron-left:before { + content: "\f053"; +} +.fa-chevron-right:before { + content: "\f054"; +} +.fa-plus-circle:before { + content: "\f055"; +} +.fa-minus-circle:before { + content: "\f056"; +} +.fa-times-circle:before { + content: "\f057"; +} +.fa-check-circle:before { + content: "\f058"; +} +.fa-question-circle:before { + content: "\f059"; +} +.fa-info-circle:before { + content: "\f05a"; +} +.fa-crosshairs:before { + content: "\f05b"; +} +.fa-times-circle-o:before { + content: "\f05c"; +} +.fa-check-circle-o:before { + content: "\f05d"; +} +.fa-ban:before { + content: "\f05e"; +} +.fa-arrow-left:before { + content: "\f060"; +} +.fa-arrow-right:before { + content: "\f061"; +} +.fa-arrow-up:before { + content: "\f062"; +} +.fa-arrow-down:before { + content: "\f063"; +} +.fa-mail-forward:before, +.fa-share:before { + content: "\f064"; +} +.fa-expand:before { + content: "\f065"; +} +.fa-compress:before { + content: "\f066"; +} +.fa-plus:before { + content: "\f067"; +} +.fa-minus:before { + content: "\f068"; +} +.fa-asterisk:before { + content: "\f069"; +} +.fa-exclamation-circle:before { + content: "\f06a"; +} +.fa-gift:before { + content: "\f06b"; +} +.fa-leaf:before { + content: "\f06c"; +} +.fa-fire:before { + content: "\f06d"; +} +.fa-eye:before { + content: "\f06e"; +} +.fa-eye-slash:before { + content: "\f070"; +} +.fa-warning:before, +.fa-exclamation-triangle:before { + content: "\f071"; +} +.fa-plane:before { + content: "\f072"; +} +.fa-calendar:before { + content: "\f073"; +} +.fa-random:before { + content: "\f074"; +} +.fa-comment:before { + content: "\f075"; +} +.fa-magnet:before { + content: "\f076"; +} +.fa-chevron-up:before { + content: "\f077"; +} +.fa-chevron-down:before { + content: "\f078"; +} +.fa-retweet:before { + content: "\f079"; +} +.fa-shopping-cart:before { + content: "\f07a"; +} +.fa-folder:before { + content: "\f07b"; +} +.fa-folder-open:before { + content: "\f07c"; +} +.fa-arrows-v:before { + content: "\f07d"; +} +.fa-arrows-h:before { + content: "\f07e"; +} +.fa-bar-chart-o:before { + content: "\f080"; +} +.fa-twitter-square:before { + content: "\f081"; +} +.fa-facebook-square:before { + content: "\f082"; +} +.fa-camera-retro:before { + content: "\f083"; +} +.fa-key:before { + content: "\f084"; +} +.fa-gears:before, +.fa-cogs:before { + content: "\f085"; +} +.fa-comments:before { + content: "\f086"; +} +.fa-thumbs-o-up:before { + content: "\f087"; +} +.fa-thumbs-o-down:before { + content: "\f088"; +} +.fa-star-half:before { + content: "\f089"; +} +.fa-heart-o:before { + content: "\f08a"; +} +.fa-sign-out:before { + content: "\f08b"; +} +.fa-linkedin-square:before { + content: "\f08c"; +} +.fa-thumb-tack:before { + content: "\f08d"; +} +.fa-external-link:before { + content: "\f08e"; +} +.fa-sign-in:before { + content: "\f090"; +} +.fa-trophy:before { + content: "\f091"; +} +.fa-github-square:before { + content: "\f092"; +} +.fa-upload:before { + content: "\f093"; +} +.fa-lemon-o:before { + content: "\f094"; +} +.fa-phone:before { + content: "\f095"; +} +.fa-square-o:before { + content: "\f096"; +} +.fa-bookmark-o:before { + content: "\f097"; +} +.fa-phone-square:before { + content: "\f098"; +} +.fa-twitter:before { + content: "\f099"; +} +.fa-facebook:before { + content: "\f09a"; +} +.fa-github:before { + content: "\f09b"; +} +.fa-unlock:before { + content: "\f09c"; +} +.fa-credit-card:before { + content: "\f09d"; +} +.fa-rss:before { + content: "\f09e"; +} +.fa-hdd-o:before { + content: "\f0a0"; +} +.fa-bullhorn:before { + content: "\f0a1"; +} +.fa-bell:before { + content: "\f0f3"; +} +.fa-certificate:before { + content: "\f0a3"; +} +.fa-hand-o-right:before { + content: "\f0a4"; +} +.fa-hand-o-left:before { + content: "\f0a5"; +} +.fa-hand-o-up:before { + content: "\f0a6"; +} +.fa-hand-o-down:before { + content: "\f0a7"; +} +.fa-arrow-circle-left:before { + content: "\f0a8"; +} +.fa-arrow-circle-right:before { + content: "\f0a9"; +} +.fa-arrow-circle-up:before { + content: "\f0aa"; +} +.fa-arrow-circle-down:before { + content: "\f0ab"; +} +.fa-globe:before { + content: "\f0ac"; +} +.fa-wrench:before { + content: "\f0ad"; +} +.fa-tasks:before { + content: "\f0ae"; +} +.fa-filter:before { + content: "\f0b0"; +} +.fa-briefcase:before { + content: "\f0b1"; +} +.fa-arrows-alt:before { + content: "\f0b2"; +} +.fa-group:before, +.fa-users:before { + content: "\f0c0"; +} +.fa-chain:before, +.fa-link:before { + content: "\f0c1"; +} +.fa-cloud:before { + content: "\f0c2"; +} +.fa-flask:before { + content: "\f0c3"; +} +.fa-cut:before, +.fa-scissors:before { + content: "\f0c4"; +} +.fa-copy:before, +.fa-files-o:before { + content: "\f0c5"; +} +.fa-paperclip:before { + content: "\f0c6"; +} +.fa-save:before, +.fa-floppy-o:before { + content: "\f0c7"; +} +.fa-square:before { + content: "\f0c8"; +} +.fa-bars:before { + content: "\f0c9"; +} +.fa-list-ul:before { + content: "\f0ca"; +} +.fa-list-ol:before { + content: "\f0cb"; +} +.fa-strikethrough:before { + content: "\f0cc"; +} +.fa-underline:before { + content: "\f0cd"; +} +.fa-table:before { + content: "\f0ce"; +} +.fa-magic:before { + content: "\f0d0"; +} +.fa-truck:before { + content: "\f0d1"; +} +.fa-pinterest:before { + content: "\f0d2"; +} +.fa-pinterest-square:before { + content: "\f0d3"; +} +.fa-google-plus-square:before { + content: "\f0d4"; +} +.fa-google-plus:before { + content: "\f0d5"; +} +.fa-money:before { + content: "\f0d6"; +} +.fa-caret-down:before { + content: "\f0d7"; +} +.fa-caret-up:before { + content: "\f0d8"; +} +.fa-caret-left:before { + content: "\f0d9"; +} +.fa-caret-right:before { + content: "\f0da"; +} +.fa-columns:before { + content: "\f0db"; +} +.fa-unsorted:before, +.fa-sort:before { + content: "\f0dc"; +} +.fa-sort-down:before, +.fa-sort-asc:before { + content: "\f0dd"; +} +.fa-sort-up:before, +.fa-sort-desc:before { + content: "\f0de"; +} +.fa-envelope:before { + content: "\f0e0"; +} +.fa-linkedin:before { + content: "\f0e1"; +} +.fa-rotate-left:before, +.fa-undo:before { + content: "\f0e2"; +} +.fa-legal:before, +.fa-gavel:before { + content: "\f0e3"; +} +.fa-dashboard:before, +.fa-tachometer:before { + content: "\f0e4"; +} +.fa-comment-o:before { + content: "\f0e5"; +} +.fa-comments-o:before { + content: "\f0e6"; +} +.fa-flash:before, +.fa-bolt:before { + content: "\f0e7"; +} +.fa-sitemap:before { + content: "\f0e8"; +} +.fa-umbrella:before { + content: "\f0e9"; +} +.fa-paste:before, +.fa-clipboard:before { + content: "\f0ea"; +} +.fa-lightbulb-o:before { + content: "\f0eb"; +} +.fa-exchange:before { + content: "\f0ec"; +} +.fa-cloud-download:before { + content: "\f0ed"; +} +.fa-cloud-upload:before { + content: "\f0ee"; +} +.fa-user-md:before { + content: "\f0f0"; +} +.fa-stethoscope:before { + content: "\f0f1"; +} +.fa-suitcase:before { + content: "\f0f2"; +} +.fa-bell-o:before { + content: "\f0a2"; +} +.fa-coffee:before { + content: "\f0f4"; +} +.fa-cutlery:before { + content: "\f0f5"; +} +.fa-file-text-o:before { + content: "\f0f6"; +} +.fa-building-o:before { + content: "\f0f7"; +} +.fa-hospital-o:before { + content: "\f0f8"; +} +.fa-ambulance:before { + content: "\f0f9"; +} +.fa-medkit:before { + content: "\f0fa"; +} +.fa-fighter-jet:before { + content: "\f0fb"; +} +.fa-beer:before { + content: "\f0fc"; +} +.fa-h-square:before { + content: "\f0fd"; +} +.fa-plus-square:before { + content: "\f0fe"; +} +.fa-angle-double-left:before { + content: "\f100"; +} +.fa-angle-double-right:before { + content: "\f101"; +} +.fa-angle-double-up:before { + content: "\f102"; +} +.fa-angle-double-down:before { + content: "\f103"; +} +.fa-angle-left:before { + content: "\f104"; +} +.fa-angle-right:before { + content: "\f105"; +} +.fa-angle-up:before { + content: "\f106"; +} +.fa-angle-down:before { + content: "\f107"; +} +.fa-desktop:before { + content: "\f108"; +} +.fa-laptop:before { + content: "\f109"; +} +.fa-tablet:before { + content: "\f10a"; +} +.fa-mobile-phone:before, +.fa-mobile:before { + content: "\f10b"; +} +.fa-circle-o:before { + content: "\f10c"; +} +.fa-quote-left:before { + content: "\f10d"; +} +.fa-quote-right:before { + content: "\f10e"; +} +.fa-spinner:before { + content: "\f110"; +} +.fa-circle:before { + content: "\f111"; +} +.fa-mail-reply:before, +.fa-reply:before { + content: "\f112"; +} +.fa-github-alt:before { + content: "\f113"; +} +.fa-folder-o:before { + content: "\f114"; +} +.fa-folder-open-o:before { + content: "\f115"; +} +.fa-smile-o:before { + content: "\f118"; +} +.fa-frown-o:before { + content: "\f119"; +} +.fa-meh-o:before { + content: "\f11a"; +} +.fa-gamepad:before { + content: "\f11b"; +} +.fa-keyboard-o:before { + content: "\f11c"; +} +.fa-flag-o:before { + content: "\f11d"; +} +.fa-flag-checkered:before { + content: "\f11e"; +} +.fa-terminal:before { + content: "\f120"; +} +.fa-code:before { + content: "\f121"; +} +.fa-reply-all:before { + content: "\f122"; +} +.fa-mail-reply-all:before { + content: "\f122"; +} +.fa-star-half-empty:before, +.fa-star-half-full:before, +.fa-star-half-o:before { + content: "\f123"; +} +.fa-location-arrow:before { + content: "\f124"; +} +.fa-crop:before { + content: "\f125"; +} +.fa-code-fork:before { + content: "\f126"; +} +.fa-unlink:before, +.fa-chain-broken:before { + content: "\f127"; +} +.fa-question:before { + content: "\f128"; +} +.fa-info:before { + content: "\f129"; +} +.fa-exclamation:before { + content: "\f12a"; +} +.fa-superscript:before { + content: "\f12b"; +} +.fa-subscript:before { + content: "\f12c"; +} +.fa-eraser:before { + content: "\f12d"; +} +.fa-puzzle-piece:before { + content: "\f12e"; +} +.fa-microphone:before { + content: "\f130"; +} +.fa-microphone-slash:before { + content: "\f131"; +} +.fa-shield:before { + content: "\f132"; +} +.fa-calendar-o:before { + content: "\f133"; +} +.fa-fire-extinguisher:before { + content: "\f134"; +} +.fa-rocket:before { + content: "\f135"; +} +.fa-maxcdn:before { + content: "\f136"; +} +.fa-chevron-circle-left:before { + content: "\f137"; +} +.fa-chevron-circle-right:before { + content: "\f138"; +} +.fa-chevron-circle-up:before { + content: "\f139"; +} +.fa-chevron-circle-down:before { + content: "\f13a"; +} +.fa-html5:before { + content: "\f13b"; +} +.fa-css3:before { + content: "\f13c"; +} +.fa-anchor:before { + content: "\f13d"; +} +.fa-unlock-alt:before { + content: "\f13e"; +} +.fa-bullseye:before { + content: "\f140"; +} +.fa-ellipsis-h:before { + content: "\f141"; +} +.fa-ellipsis-v:before { + content: "\f142"; +} +.fa-rss-square:before { + content: "\f143"; +} +.fa-play-circle:before { + content: "\f144"; +} +.fa-ticket:before { + content: "\f145"; +} +.fa-minus-square:before { + content: "\f146"; +} +.fa-minus-square-o:before { + content: "\f147"; +} +.fa-level-up:before { + content: "\f148"; +} +.fa-level-down:before { + content: "\f149"; +} +.fa-check-square:before { + content: "\f14a"; +} +.fa-pencil-square:before { + content: "\f14b"; +} +.fa-external-link-square:before { + content: "\f14c"; +} +.fa-share-square:before { + content: "\f14d"; +} +.fa-compass:before { + content: "\f14e"; +} +.fa-toggle-down:before, +.fa-caret-square-o-down:before { + content: "\f150"; +} +.fa-toggle-up:before, +.fa-caret-square-o-up:before { + content: "\f151"; +} +.fa-toggle-right:before, +.fa-caret-square-o-right:before { + content: "\f152"; +} +.fa-euro:before, +.fa-eur:before { + content: "\f153"; +} +.fa-gbp:before { + content: "\f154"; +} +.fa-dollar:before, +.fa-usd:before { + content: "\f155"; +} +.fa-rupee:before, +.fa-inr:before { + content: "\f156"; +} +.fa-cny:before, +.fa-rmb:before, +.fa-yen:before, +.fa-jpy:before { + content: "\f157"; +} +.fa-ruble:before, +.fa-rouble:before, +.fa-rub:before { + content: "\f158"; +} +.fa-won:before, +.fa-krw:before { + content: "\f159"; +} +.fa-bitcoin:before, +.fa-btc:before { + content: "\f15a"; +} +.fa-file:before { + content: "\f15b"; +} +.fa-file-text:before { + content: "\f15c"; +} +.fa-sort-alpha-asc:before { + content: "\f15d"; +} +.fa-sort-alpha-desc:before { + content: "\f15e"; +} +.fa-sort-amount-asc:before { + content: "\f160"; +} +.fa-sort-amount-desc:before { + content: "\f161"; +} +.fa-sort-numeric-asc:before { + content: "\f162"; +} +.fa-sort-numeric-desc:before { + content: "\f163"; +} +.fa-thumbs-up:before { + content: "\f164"; +} +.fa-thumbs-down:before { + content: "\f165"; +} +.fa-youtube-square:before { + content: "\f166"; +} +.fa-youtube:before { + content: "\f167"; +} +.fa-xing:before { + content: "\f168"; +} +.fa-xing-square:before { + content: "\f169"; +} +.fa-youtube-play:before { + content: "\f16a"; +} +.fa-dropbox:before { + content: "\f16b"; +} +.fa-stack-overflow:before { + content: "\f16c"; +} +.fa-instagram:before { + content: "\f16d"; +} +.fa-flickr:before { + content: "\f16e"; +} +.fa-adn:before { + content: "\f170"; +} +.fa-bitbucket:before { + content: "\f171"; +} +.fa-bitbucket-square:before { + content: "\f172"; +} +.fa-tumblr:before { + content: "\f173"; +} +.fa-tumblr-square:before { + content: "\f174"; +} +.fa-long-arrow-down:before { + content: "\f175"; +} +.fa-long-arrow-up:before { + content: "\f176"; +} +.fa-long-arrow-left:before { + content: "\f177"; +} +.fa-long-arrow-right:before { + content: "\f178"; +} +.fa-apple:before { + content: "\f179"; +} +.fa-windows:before { + content: "\f17a"; +} +.fa-android:before { + content: "\f17b"; +} +.fa-linux:before { + content: "\f17c"; +} +.fa-dribbble:before { + content: "\f17d"; +} +.fa-skype:before { + content: "\f17e"; +} +.fa-foursquare:before { + content: "\f180"; +} +.fa-trello:before { + content: "\f181"; +} +.fa-female:before { + content: "\f182"; +} +.fa-male:before { + content: "\f183"; +} +.fa-gittip:before { + content: "\f184"; +} +.fa-sun-o:before { + content: "\f185"; +} +.fa-moon-o:before { + content: "\f186"; +} +.fa-archive:before { + content: "\f187"; +} +.fa-bug:before { + content: "\f188"; +} +.fa-vk:before { + content: "\f189"; +} +.fa-weibo:before { + content: "\f18a"; +} +.fa-renren:before { + content: "\f18b"; +} +.fa-pagelines:before { + content: "\f18c"; +} +.fa-stack-exchange:before { + content: "\f18d"; +} +.fa-arrow-circle-o-right:before { + content: "\f18e"; +} +.fa-arrow-circle-o-left:before { + content: "\f190"; +} +.fa-toggle-left:before, +.fa-caret-square-o-left:before { + content: "\f191"; +} +.fa-dot-circle-o:before { + content: "\f192"; +} +.fa-wheelchair:before { + content: "\f193"; +} +.fa-vimeo-square:before { + content: "\f194"; +} +.fa-turkish-lira:before, +.fa-try:before { + content: "\f195"; +} +.fa-plus-square-o:before { + content: "\f196"; +} diff --git a/static/css/login.css b/static/css/login.css new file mode 100644 index 0000000..ddf1dfd --- /dev/null +++ b/static/css/login.css @@ -0,0 +1,174 @@ +* { + margin: 0px; + padding: 0px; +} + +body { + background: #222526; + position: relative; + font-family: 'Microsoft YaHei',verdana; +} + +#loginform { + position: relative; + width: 300px; + left: 50%; + margin-left: -150px; + top: 45%; + height: 190px; + margin-top: -190px; +} + +input { + display: block; + margin: 21px auto 15px; + border-radius: 5px; + background: #333333; + width: 85%; + padding: 12px 20px 12px 10px; + border: none; + color: #929999; + box-shadow: inset 0px 1px 5px #272727; + font-size: 0.8em; + -webkit-transition: 0.5s ease; + -moz-transition: 0.5s ease; + -o-transition: 0.5s ease; + -ms-transition: 0.5s ease; + transition: 0.5s ease; +} + +input:focus { + -webkit-transition: 0.5s ease; + -moz-transition: 0.5s ease; + -o-transition: 0.5s ease; + -ms-transition: 0.5s ease; + transition: 0.5s ease; + box-shadow: 0px 0px 5px 1px #161718; +} + +button { + background: #ff5f32; + border-radius: 50%; + border: 10px solid #222526; + font-size: 0.9em; + color: #fff; + font-weight: bold; + cursor: pointer; + width: 85px; + height: 85px; + position: absolute; + right: -42px; + top: 54px; + text-align: center; + -webkit-transition: 0.5s ease; + -moz-transition: 0.5s ease; + -o-transition: 0.5s ease; + -ms-transition: 0.5s ease; + transition: 0.5s ease; +} + +button:hover { + background: #222526; + border-color: #ff5f32; + -webkit-transition: 0.5s ease; + -moz-transition: 0.5s ease; + -o-transition: 0.5s ease; + -ms-transition: 0.5s ease; + transition: 0.5s ease; +} + +button i { + font-size: 20px; + -webkit-transition: 0.5s ease; + -moz-transition: 0.5s ease; + -o-transition: 0.5s ease; + -ms-transition: 0.5s ease; + transition: 0.5s ease; +} + +button:hover i { + color: #ff5f32; + -webkit-transition: 0.5s ease; + -moz-transition: 0.5s ease; + -o-transition: 0.5s ease; + -ms-transition: 0.5s ease; + transition: 0.5s ease; +} + +*:focus { + outline: none; +} + +::-webkit-input-placeholder { + color: #929999; +} + +:-moz-placeholder { + /* Firefox 18- */ + color: #929999; +} + +::-moz-placeholder { + /* Firefox 19+ */ + color: #929999; +} + +:-ms-input-placeholder { + color: #929999; +} + +h1 { + text-align: center; + color: #fff; + font-size: 16px; + padding: 12px 0px; +} + +#note { + color: #88887a; + font-size: 0.8em; + text-align: left; + padding-left: 5px; +} + +a { + color: #88887a; + text-decoration: none; + -webkit-transition: 0.5s ease; + -moz-transition: 0.5s ease; + -o-transition: 0.5s ease; + -ms-transition: 0.5s ease; + transition: 0.5s ease; +} + +a:hover { + color: #fff; + margin-left: 5px; + -webkit-transition: 0.5s ease; + -moz-transition: 0.5s ease; + -o-transition: 0.5s ease; + -ms-transition: 0.5s ease; + transition: 0.5s ease; +} + +#mainlogin { + float: left; + width: 250px; + height: 170px; + padding: 10px 15px; + position: relative; + background: #555555; + border-radius: 3px; + -moz-box-shadow: 0px 0px 10px rgba(0,0,0,0.5); + -webkit-box-shadow: 0px 0px 10px rgba(0,0,0,0.5); + box-shadow: 0px 0px 10px rgba(0, 0, 0, 0.5); +} + +#logo { + background: url(../images/logo.png); + height: 180px; + width: 300px; + margin-left: 17px; + margin-bottom: 10px; + background-repeat: no-repeat; +} diff --git a/static/fonts/fontawesome-webfont.ttf b/static/fonts/fontawesome-webfont.ttf new file mode 100644 index 0000000000000000000000000000000000000000..e89738de5eaf8fca33a2f2cdc5cb4929caa62b71 GIT binary patch literal 80652 zcmd4434B!5y$62Jx!dgfl1wJaOp=*N2qchXlCUL1*hxS(1pzUj2!bdoh~hR1qKGRh zwYF;1y3o}w_SLrdruJ!H7kRd|tG>S2R@?Wq7TP{rA#?eEf9K95lK|TG|33fEKg+%6 z+hTSaAdmL)uWh^R%I%Bq{=#vIHGE2vyyxxQ zu>PXwf4+35#HOMTl7@fkt@MNGkN*dqzrXxudarck;ms?=9TzfXbVcIGGxh+E^d!f> ztp1kWBdO@h9ZDcN>E)O$)*L%OUQ<(5(?2L3bseob+I4i% z(X~e}J$l2@yN*6`^z%o*bo9v4Umbn#sBz47tm;_Pv94o_j;%d*>9HG*-F57d|CLTs zlc>gL3N=cjYLt$8j>eB>jxIjhe{|c??9qFU4jg^^^s&K$J;*W3T~FTeWV|2+Pm&&ML33QxpS<_UX3 zo}ee-@q2t8ugBw&J>0`QlKZ6FaOd4a?i23g?ho95bN|)-zJuoA|NMsm7K+s}nqB%Y z{lQI|ivK_S=vvsKmRk#edAb%6i2hSQfN{*f8@=C#{(3MdvZPB=N8B5iy>ag#%Ndz% zd|;azJHAbmj*E8`hfQQA(J-EOQqrDKvr;880iAi{Eunx`8?Q;WwYSE-ESYZWVy*F( zDyBWrn7@r>BFSWAC`(6{$=}vkS07fh;rcptPAzWdrDR(Yf3n1{ZmbPgSS%G{s_+g8 z?`TBE8*uTOCf?S?TU)|jb#%6^y@R#4wuCfk)~1cCHg1}Q(}asx@ZVV6;lsib{$)h;3&X! zv#^nE>r1k8t{W+F*LfUs0DkxY35 zA&hmqcN%Y!F$Y>O5DtZ_l&QR>OYUgz=wcmSb8^yNnjQ>PHkL5{@qN#TZq2kl zV*Di$^E=g?)6Z1RVL6_0`tSSJtJ;*Bj-~)(fu@d{DcY;wYCkW#w&!@JXYJY^HP^E? zCQEfyNA@&MoHS`-XZ2cas^9s{_6MI-Cq)uIUm`L|ee%J^d;3q| zxwSnC)nU#t^(_m0Cn*@xCMAs)wp8(Omy8LeF_j-`^X2cc)%HzmHU_(Hx@>V>-Qvq` z>KZiO%HNyy@l}?(^Dn$><{N)&oS&(y%gk^5+Z+G+R{j~Y?$2TF2BjKgP>~{l@+5#xb#STNuZ8r?=WCN#*;G43z#WbeP}pXPs)z27Nc6N(s* z7!KVTtaQBluA?%jx!7OW`ifw}I-h-~p~09u-%4wQ;KqEnm7v$k5_U|!oKTDHICC?U z%UO%D>hNJ>6>FK#cCl;NcSO4y&fF{>U=3aD2IJ-~<7dX|?|etL6`R@eA+4k~0kR8WvKfSYMJobh>0d z!tvr{#Gs=xQsl%)QZ6lGj9fo`gtklOnC+PFB5q~+|H?r@3FXkQznBmY53W~ekX>W(B9tH3|SwvWJ~1XLheJ)N0I z(>o?V_Wu8Me(d|W)LC!j>N`8@S%!`yX`U_3UsHzz6Au-Z2`g~&4=#RcvTJE15t5HKCG3gq~ zrQNE0NeW>%!QQ27HO-7A+qxMxD=QAwOuIFjAAehPar8FhU^GezmgM(PUjEZ!aVvTo z+f4ar)c6Iz7iCcIr6=E0eaZm|+(=!(&9s`76^CY2-C-SFe<+|^nd%cY8^1JuY1YJ& zNEP13l7-rTiL2s0XS!=XLA99lj7d|~VsD&Yr5kF;8J`tNS3NtP z3km=mX{w2Vehi0vgtJWyPIUIJBgSuye>Z-6WY=Q{8ZWMnxyP;FvgG!|uO7aA$(Hrw z+_CD-;|@HQ&-QKV!ynInl1lD6!lIx2D(l%Ab2W~;IJV%Y*K9&@JhkbXpDu`9Jg(6d z+iJYP7vu#V=X4}m3WTqqe@p2FDIs8{2q`V01X>50LF_ODG-LDB`qKNS2O{^EnaD-4lj8PxQryhw9Ovnz(^f)Ef8uU z2*Uc*F(U!YNG;Z=rsJ1-f#sUgX(1$2M8Sf-$E7Al%LWLdqj6bc7WX_~h3j9O9*_O&uJZbsHf!YGkkdK3@Lg87({WRsC>(L4Fb~li4zjJka)fxa zJ<+n#5wRuivR)E)-_{cKI=|)#Zn4_0Xty~X_TcLBmPr*n=oDp}nkFxCIBd?kyKP%a z3)^)xWl9 z2=r7xK?qCFaWA6%eUW<(OS^n>tOSf)XGrI(tU^jX@g7V5_k36_LmfzD;9cZ2Bt60U(mW+|v56fMdYE1^I$# zYn;WCDXavVH)nd^#bB7oM%}kFw5ay^Kq2z{plQ z*kp&z*ff+Sx=PK|ch*OZe~qcIBxv>_<;k*S^aT##S!CCW3BP%kt1v!dz`J42aRDEB3Q^9 zD21}(34VTQ(IZF1Jhn)Zz6j{i3uu>ET5e**HtBLu3lZPM0<{ndq;MH6#$^pcf*PO; zMvz-W$VC(*%z=WTFr*hN%2>epb!UK;F`wfv4j+HNDW7rrSOAxeqqrVmK4(7D6k(59 z>H=&TuDEgKDHL&|2wN7Yv#`e^JgPA4Vt%KQQyd--xMIJPNp#^Pj`Q2Qlz>0#cjjo8 zb50~ryxS#YuAmFBly%H=0lx0*)XAQmQFc zVkB8gwmsEZe;gBw3IE}(Q$9K6HufsO;~U;;BjaoL8JTLYcN~)dnc$I_H0~)Ok20lF zEH*-E-`3fATPOE6R2mt-pXDkWQY&S}~TyokXyw@6buLX;*ub6eMzw9v-7(QKA+|L8-TdVjzepa!yjpUdH3-BzoS z^RN#-q^Xcm5ON2MJ89*!I0RmDT*l@V565YbFRc3xzln{*{*Zi$V6!2au+0Bx*H7*XCt+j>rd*JFSa16?@c(S!c!QKzj4ghXs#(BNfx8MKW zBJs8JwfVZoW#4CImaWG3K089H-N*b}ZU%&_l97od>r+*??<+P0u+n#%g zsAHWhdSusS8*aiP8m2FSuj{0_Xk|d>QoN=P1j~p30GtQ5SzQ}+72XTOe%Vit(OY{CQQmf*S4a-!rCL=&B z(CJbN?hlE3G6w2QX%r&SuPF&0CF^DV!xjJeG^zaQE{7S&Sbe7~`Fyx7${c(L58e zQHg&n=5!keg~5Y?YTC|+Ni!3LPbVIMqgMshgqEEacs{gm38lO<&kG^fB@*scroW@{W9O-ROG z?Ki$`92a<4V+*lVm4Oqq!r4Ns(=2x7h2|P0c!?=lQP+gi*9Iv8O(X`OOKxkDF*?Ne zobDYgd-fcgJCZD`sVSrXWW;TobD9?$z6W_|Am$cJq`G6!Mus~mfQn}2SD_BIBt{9=O676JNwgjI2{$qRA*qp zvSkYbovCER>AZt|+W4^(V4Bja^`^ROZ@>N8x+WyW%^&~$qtIa-G4fN@WF!@+bhkh8 zwI|x$m4OtXf9h9_Hsi+CxKkHaoJx6QHS@3*=2;ynM>brCBC90_4WiIPkRH+w+RqOe zN(FF1EwlrzVyy;i(|-KN@y|g0(=VMF60C3?yj!}~TkDMnThnx%epwbjau%!?u^sde zS&;zAY~an5J+Sao@ENtSReJH*(HOgzJIJ)h-SLtH00GoIooB1?3c{;3Nd zItcmYsr^Vn(q;B#D)b#vYpu7{|Nr8@8$Yqw+Un|u@z>RLLv?kx_zn@U-bhFpUq!UIUk>Ec_WYcV*tuLL-w-b>i$yiSh=vxZ!f`sbB z-=>;v02>IL2n8amC4Bu+tzcQvxVok)_R|ElFqg}#JPB|&a9k?c0rhlyvZITWpoS78Q5&7WEiJ5reQ7B^2Lk}GYoL%= zdn%+7>()ZDog}I(uyQ4NZDW1N_=Eq-8ABTu-W@FqX$*TJcLcTYc#EuZIVuOoDNI+C zI>q0tFbn6dkY@2Z{egH2Qe!9oV8P;$@m}5B^M*cAVYl1Lu9iPh*=}Lub)G!&2gTvy z{mybFh(vw>iA|?mQEDd78@ej9V#}hL)08Hcr9!g@Ds0IuNn5?eUZd4*tFbnz&RR9H zBWbC%S^^P^BN0!PhnOZ?w=EdDYUgaXr(#ZZM1DO~>#m~xQcw#9Q43}gLkhU~n2-ZN zSIk-+8nHbWxKEwL8t%nvp~o20mvgBjMit)x|{(&v217kK;Gm%Ge*DDkEd}3 zEcC!xm-842CmxLU*PoOw7i%S}X9dq3hdfu3$P5EU7$6d8bf|e|%Z9~Ok|{^`$n)Pj zbm+Z9@*t5+$Fp=CZ1rzQb1A*S-a;nkyjT2|&-h^`Q0)lX6-|y- zd2IoUi~3Kv3m6l4zz+$=258kmIHE^D78r%v8a=4{12SEsE6Br81A-H=yVLljW!mAz zZ!?>~I$A&okdQ`<6<~_!8j=WO#3+Sdi03dcjeVKjpH3tjrYu|h^nwZ|^TwVpeCh1v zpJ`hJI}?`wEuRox*yL5LTveEj*?p~5%N0oAuA89xRMrq!uySK#dh&$v<1*cm>%O>Z zO=Ym9XTkiNmu`P)`A_5S*wT4(F1w;K@(28nZKh;Nq5U>8jB7UBSrvR=yRd(vYP`*;+HPhnDTHj9A0I9 zUwx&cqSImVx$JtSCuC{Z7`6G?^i)mH{qZ@BE4tRvo=G?yR%Lu>da}{Mn7+e%c4ZViB0LPC|dWSDQ?y(zK%Ro0605Cgn)Hvx}3u07gM+AOX_w zkpve4C?F}UF31K#B34<&_qDw-vEY2y_hr!QjHD)jLV?bWz1 za6@1U{(bSqi%T==jTI_t<;-KTFcx_@ec_at-z_(uUAC~DyA{sWb*Tr9uNWV{uPIfo z+dPWJHbKSg*(@$4q(rQ7Ptp;r%^hQ(?YewTNKu(qVYg1aDDIC`cv-_aCwLp zzmL_AXI7`3hCXU58T#XYKJA3l> zv2a47oQfj}bB~LhhNHNbrF#mFIgz3RyXYg5{~xv6G>w$e7}0LgC>2Lx6(n*T$N%eg zkF|yPsQl>hE*4my+5|EWAjXcl7&dJ%nBi$iu?x{ z2ftGj%|0QHinvmm9w{RalF0@=9;Ji-BYRfTUkOT$Q~OxZF_@NeWa$HlDaDXu`|weD z)=wQ25=a-Cs2=)9yU343sRq+51u4TSMuiR~ojH9{&~~Dal923rLE_K^7Wz~a8B{Ww z&TvSVQjk&kjID=u<}*7F9oorrI}fq@d=(C7iiA<)ysDqw_f+xDp`A~%1AY}62U7+I zJ_z)c4!@QvsR`EvAJpCg_ASjYkl>ra5eYsTFHVL_xFce_d3M{twrvB-w&Pir8Q|b# zJ`f$%GU(}jrPh{;hYD`X!%RLWin5sBd4h^L6+99f}e!kWQ(MMn=A)U zAjLaUdayOf+CarI@Hn7s!Q!KRUdVeHI03TS2(c}z-&vjISA}eP{?|H=yh?9p14B8Z zUwtR>l+piGU3)tDP6DO2WaWVnm9mAX)c1`3p&T3FgXzRmY~aac@_!&z5qz1Tv31DS zMoCm$z(-h9LclJY#vtrq+_>M>s!2{I zYjl@PtYN67JwZBoGJlc58$jk$C5K^&5nz>}sIJr~dK83K0HP*H>|Qfg8m}$UE|H?nvgB=pa{W}siM-Fvh3iT%GguL@o^=lx>; z6V@Be^{V|1{nP+slcg?c9$ID2rj*27hB}ykG-wld0`d&8Fzg@i{<-` zL1oPvV{i>@@g9t_epJ)h&vV1|NQK~+4u zhQ-!IQ42X9(Y%r_0IOI3=q_E|S>6$+z zRy|qvcj=_bArOavE}&+MU6f8b{gH*8Hf>w6cfM%E;}8D9$coiJU>v@3=L9)yQ9L$V zX!5vPJy<(+(Pg(kw|M|4BjRUSKd&|N#eVvo6>6kLDfaTGew(w*W3jR~j4bfQxZLi2 z#5K?ckHqy#+;;WeUAdxtjswo~89U-m~%dGnMrGy#Pjk^B_V zmR$w8Wcg{@LX#uvigl>K^jWfHYOmA7YJe zI{s=n9uKP%!+c%7${C2Lxk$i?R2{*T*jEHkO?G!Cg*J>MOpPj0FU6f+*dItV&g76V z1b)pJ&Z!wP(E#rzjwNY&55X=l5!R#o)VENrBjrccGxDs4XEAo+;jV=ttEC~7{vmN(Hc`<9+{#fpHLj)Nd9eTcO~l4NgU1bOrQL!VpqQp zib+yUYF})TFh>{Clp6kaemgWrcOVVJ5D~Q z^rB8sKjecYq+-~LVDp})?U-e;_|57^a!dOlcUVjWQBca@2J(2{ZyU8X`l3 z!ZKqBCZ5TXguooG(a*5PF(lMTyU2d2(5_-@PHjVp@6l=BYJ$lrZz=76qtMm1H8T=; zL)Zn0K6KS|1i=Ogr#OaMVYNs06d3hV8d164|J-wa|0;h)gc6YoBu~A$=ZzS1s)}zl0NU8}YaCa@jC(V+kyrbM#+k?(iPn;jyOUHEk1n>nCMH%%UO0z z>j#QY`}pTq9$fm9GT()oV^&#NTRhnmitd5??kC*r}T6#G;# zT{4>ua-y&#TH0ZnA=XK;L!+!AC74DR4QTuOh2bC?SJFX#O5+DyJ}yy7B#fLm`Q*Eh zF_YgK+uo5i(hMI&X~g#gMiv-qQ}zODLySC{h&;4W71rlt+aHv#vZ#wET>Bzi;ca&u1rSmPQ3G&xc}HYiM#26F&DUrAx`u3aCK}v z5XBiDFVsi4Yh=C%cTL3z2uCAvAX#O!28fAe3N0efEC^aMGBB5Io|*; znm#!N-*Pp!BJbKaaM^bcoHJC;|9tC{V5ij>OsjqaADrKikrhxvC#!sg?|y7=-hJ+h z1KA#I_y(psW-K8JT^i~i=~ohErf-5MqY3uB9yQZHd2 zvjZa~Xp3ZD8@!%alE$wWbO-JULWg8MMCtqzV+|Kq%teyO5p!I#pgnWsn^55C(m=2- zc&&s31%G#_6ye;};fuGT2`1lW5MwsD{u3X+e0^7~s(RfXhwgC8H>Mxw-yH;Z#wB>& z`%#L>5l40V**gX{bj;Fft?q!=8o^Fk`P6szvipbKFk7%?rwBtNM2*2;N z&8GHYeSp@@0(J;^#d;j(7lv2JFaTl1RM?0Z{hjqWI5G4KuZ97UVXzgE$y@i7tD=12 zT^#R{O_6XaY>I zy0Q0#)#3Ig+TkVzzd}|0UQ?E8H^PXK&+) zOL6<-#w)_ZyY=IEnDis^28kc{4fX92q8$_?LW8qXYst__)tzbG_lR*${^0d6!=uONX5J;|nf-!1;nR z;Aa={tq#p%(H!~vY;JI`5@f>Qp(NlYC%k*B$?74I_QJLiviuMzi+0vZL^FH<;r2qr zb8Cy~r-q?6ndySL5uA8v{a|qk(va@Lkaobx)kSmBI-~R3H$)mSllep!x+h^|kYM?>=wK^lWze7D}H+0pF!brYsPI zmJ3$apq9uww+rYAb{>=fIg39EKmqTa$Y+f=ezOaUzARX=Hn5NBUybl&pvidW^`8#j zf4loY*wftDRarGI;N=!s?pn|l<<=D+dtqzGSHAqE2U50Fpe9w8>W+D2*iv0^=+?;y6u&ad)|$TZN008T^SNbfDq%}` z!`3x>whKNF>jv^OH>^@6@(ZNtFn2F#qXGiyrouwdsRDzCQ&kG-ltwgcC#6Ye_4l7O zX{N$f-LY>~hnee<&D?;{A<#kbFWPh7vU&4XxAtclYgoShrq8Y~URir{;R+2o=rOw`ynAzQsbu|GY)=^OFN;>mcZ!a(H*m zl+Fg^cfe||twYm&W80aacA6VEAOpqB7ROtJ7c0s7{osYbwWA#Qx&XvrY1RQkn>Q|6 zu^xSSn(rIw1-q49Y^>Ql$>wwH@{GUx*vdfQzRXUduRN7Uv*#g zJIv!<=W)Q7hue&a``>C|?@!n>rzW%HvoGxNz4y&8U%4&wC9oPacOKx=qXM4d1X0-a zKLRJoFe@FlDg}-OMVWU@qh6w3BEioP=-Z6|I)(Xwx=JWE z8X376kOPuHLlCBjbXbK#M(rP;>3eKI^=5U4BD*!?zm0rab@p3b+-*HPWarF=w8md# zvZ1(OFP3$A_{RtOa%z8DuJ5t@Jin`7W3rPC8Tl8zu6`@G4;|J$PRBYcOT#KDY=IYY z)~P-^(3c^pAjN6ISe|NoO%~*2b$ym}CFFl`({em9<_syfuqYSThlMu3e8!`ERRiZnEi zMP$Jc5#>1f%D2H?2YMl9o^VB!WU&lY2fq~-8LZDFXYwY7KrAnja($5jo!gQVAv zZSGvv*4NV0Hl<=}p$K_k7u^e~$VqA9qG{vGVoj9|GpDaO@9J4*9b+yQpHiyVJU5|Z zUPGl2lMK0_{?0-DonuVaUE!Lh>8bO+BJN{DguAA^vsj>NT6a^|)}B>YFFvO=E*>6r z#Vn3-!@43p4A3EwrXWbbnrJF;STdDPwkK&1R68gfLl?uQsp!&C3!KaK52%x zLXlNwgU_NqG1yR6Wqc3<> zX3R4ldkN$@#175VmNt!RS~{)S%u>K3auYXm6bxx3$8*{58ZSKe9P9b6C;_NVh7=`4 zj1ZpS7mXAxeT)VU;<$pz<`P{_!7K{Odzd(O@dmU)eAILyQ)mUZN;_K`=7elaJYN3f@5 z0o&xm4S7;s!3skuoXKlZSF7N+rh`~5z!4z5Lq^vHGgzgBaffH2xbNL8e_x!wA1goc zF4NUA`9XrCAt{m!CHNPAAb?8pl)LSU&Xg}kl4;>vBA)4$bB0uwkay{oWj4=5GN+HY zT4yP82a---bts`HX)S^l&tfe=*Dw~&q57mqd3)BJ$gJ73XAQ%V53JcE59CE&&e7Ev zOi7D#x&rn1rEw!o^AX@&xu@3x|%IUO3Bou zjYC7ZwMV8KUr<@$#WB2mUUjXpy>)J+s=Ailfis&jaQ-}FyQX-RlE#p1N8&l`h0w^s z3I;#~@E~+6q+!6!1ZE`S0hI9^1dUi~rRrPC7Sy%MFWV?!S&23m>sRP;@c@1>ek`L) za?X4gy@N11KzEb|8DMM59fZF4v=xqMgG*iy(!bC+ybB$I|0c~HOntCJ_XS1*?35_xct%NR#)2>jcL0W$O{82u=(lp6e? zog*^kiBbmb({!kWb>iqClK~k^rzE7yuv-UW0liA65afU0gi`Hefe?YFX3Q#|F?;%& z71yda{rarR)y?S(=U0ZDk>HkD+wYB(-T(P*|8~cQN#ME1!JIDRZfYw5gVIxFYBJ6sl}dnsEbubsQ|6Ni@jtP>a?dFs%p_WOl2qN7$|owN|! z*9Kd~SdZQT)Qa%S)t#4q;lVw-cQcLMU)m79`Sq=nQm@~0=kC|@xA1G(`=xKw#hgl* zQ;M5Zf%m1LH|Rnuh=VNQTG|Wv1D4Zq$&-v}o=}X^avb2Mmxclm0wsCC=jvJOi~2h2 zU4MeN@WI!H4pJ;rC0mG7IP@m@0cJI6=-)E=>$Gfd`nUw+AIL=0z5Gj2-`XCcGwM4n zB6Q8ri&H}FSVPY}CB5Ejv zaXMM@)1;GB5-8n=Z5~%(3RHAety1I+Ow9ZZ;}(;t8J*>CulHJ0HH~ur8_`AM>ZAE} z&mMl_l^0mcz!R_RW*79!O*OIgUZ+i4y!_nB^0P2eTRg78kB7zCki6?-HBIzz{kTO@ z{^;&ko)};)FTC=^;b)D9`{hOid-1NfX$zOG>Ou3xT61Hq9R(iuVqR{P4ofEr{i4`J zX8+JLki&&(BB>SFgMxPoupc%l5H({176Bmw+e1|JcZVy&$P|MW;T@=v#)?KR1tdf7 z5iyX!d4OI4)kqsC#jXs6fpg$82Xh>hhanckEC2k%a#lc*d=TNRu)UZ^BkQt$!XB*Y z)b;RAzuk6aqTcS%!(X@iSh%L)D&1+f-J{#OJYmO!HrH^`(A8A5rm?iB#X&_K)7)V@ zit_9O4qvOXi(C3!fk433XW_e)R-fa62b|tkMd|7++-Pmkl&h6iuk(R_w0t2X(@8Z|;YOPb5vwvXF_=jxVQDy%lwqR{wc8S~nQ zi`uOYOVw5SDxd3;rcp&beW8gpVeZWj-r;dqlwV%1$aB{QIS;O#D=WxWxIMU08KxWX zXFm_O<~Hy-bT3@#mXH23PZ9hI94u(;gpfyhC>TbHz>(l4i5RCOXd=-A#qPzz)IoMs zX#{D)i$kl8(Tc4DtYYm_xT9|x-}u*aR$cc{U5jk@b1(y3m0<``=cx?ZuDk1-Y&N@r z&F0hYy3Q7?^whyIg8VK~EZ}IVd+54V=NQMnJEiI|R=@rFz2Tb<%KMG~d3T>@WxW*~ zE$kUJMVGO8CWDFkvUxw+x&PgL`||s){^7i``b03PG2B!%O_yCBrd#V*diE%*majRw zcVX|`pAOUW*dBHGD{dW$nuAqZ8*c;hN!AW?SRe(^QxY?xUtO@Nq}xbzV2RK&p??j5 zg)vAYBtAJAfh_^uOD<@n426vX=&3g4sYNZuK!2t`QkG~4btuX5@pTO;#658)Dx1R- z)gSM^CZ|@_`qBY+tT8*ungo^m**ojb>;J~J+e5}6AzbFG+c0HPSvc94YF)l}&ctUo zJ@^z=o#ffpg;Tyib^Y4NRkt*TXQ?f*bZwn4pVf4?#mnbE9jWrnUl41VT|V8**3_N5 zAYQj{W-zp2;r_=aG}iZ~c{bf!w!1f7e$Ae7i5a)=IPZc70T)D{0=WTC>ySVp{=h!qkX`Q5q$w(Sf?HcBtUOu}ewqU-eDsuMH z`P^%9>smhRtE)}NTGUzL##^q6tX)6#`%@OSY<%#7^RAjTdqyI@e%U#}mW8|FM@ger zKYsip`_zRSLcy5}>*5QD#yj~rIinJv4{Ga_;K_1kY_Mc?@c2uo21hPkmlW@LGHOF` z2EqNqc^3&8lo8k~z@ng4Nsvk~SBM3zWgBPqui13h z!x;FPdMQJ^S_oq6k(tH>n->Zuuv2)IETkU9EDskmwQfAind(MFEHdGw=vaj;NmW=3 zD9EeX6nVg(A0(5?j9_hYq>796E3sh2X_~{s#+)*1d-4$Vz>U$)TVRehNQ$wT$zZb> z$oKqU!6sh7x(w$GARxE3WmM!9;#~glyWhRf z=4_uocQTtgkI(+IP>PqVuodSu6j zp8OqbPtsRA>0y3lDeXr%T2hFfx0Ag-^rJ*dz)XrFmqEaQC{I{~DVfF*aNsTQhr~2` zfq@1=-QkaeS2dQka<79`sC~vIk>tY{&|W6ON48z?Fdtx$yugekgQM|zFte2oZv}fR z8M*c)E}8Ku4e2FJHrhid6nHd6F&f4a;$;7UsUJ3WF4~t;IgmQ0+@VCLIbz++MFVKU zOv`OE7F-r{`)q!@soUgtJc}tLqe$LwLWm4XUKA`^F_X&0CoeTnMm#4}ob(*2I7Qnr z*AQ?@8FWLepi^MbI^3r=h?y|8?dSyX{5XV-2Wk_SLdxktkX?CbCpqH_m}R0TkQACQ zTe!CK5V3Hl14Y(K?i|CA%X22=T1>DOI5{hLa19!<`51X1SuCtXIv&umGX)X(9~(E> zMPN%7b~v;Ig>*`wWFX(Bg0PAJ1rRGZYxcbbC#A#6w@*q7?mV1bcIPXXk4q;jr_b!& z;d2dPN_OYwze-=J)5S%m6^SIL3``Mnud1utnK&A&DMAJ3+X7-q!c3xG7xi*aY4gZg|#;U zlD0d6KQu&xfPH)lCh# zMKzmM$Nw(Hja|bt4Ik<7PT?^HU+Q@I(9S`RH)Ly@yn5Y?hO-hAqMK96^IksBlfI&I zeB!Kz%(~T+>#f0wJu|}osewSyqd9av)M&FgyXMWLU>u>)ps-vA^81?AVYlEv?a;M| zsy9O`tgEuxpxf*a>e_cWG&uRH9+>CbxooqP$z1*-p$%>cdjGg?f>zdk*6y>fIeYcx z*7~xtNW>nSV7+`bF5JAhy-ceE)!Nt)t5;;J%cZKe&Tu%{?1X!A@@6>{mf=i+7J$hW zemQ`-92UIWT<^sggT?b`xj_}laN0Xajsq+(EC7vz`6yV%LtjaB3nSX4G}_>2f)`9@ z()0_0>@yt+tR8S^w1lvy;s{*t>p<*Z z!AhBB#e+b$MC%EavRM|72^a$ze51?muvu(2#p+)anD+arjT>in?wiqnTowzoCL#VuNe)gP2552f++V7_L`vOZA*tmjV1RfuM zdHnv0s_2ABcy%b@W7dh`vQYb^`TzaLo9YJ|!YjsChN|l({EP+mKWTj9M928b%FE`L ztqj*c)^OQRj(l~-)ai>R+BPf?uL|3|URy}3f0)Ju^h&{&0-9*xDD)l!VNz*Od!~r2 zAc7WKok`b`G?K;#ga)KBRru}%@sE_`lbE?Kb|$QR<5%9 z^w!Rn@)Z>>-B)W*#@uqHYx2y=Ha*Dt{%s$xaaCA-oh{P>uF7#r`Q$nNIhxGsD^`@Z zbhhd~dzD-}@hs-eE?jS2T%BpHShIFR&>nzSm4D9Ua%EhlD=@94(`T)4)$o1)*2jXn z4RyOJWp^xTuk}H0V&Z&ZGh*7_kKUV3ad1=mNBm6I{;KGCL)(lh755nOD;g+z9nnG| z_%dUzXhIeQQCmlt`9C!H3Pfb=>2uFzPdm;Sg+)4%WCzba+t{qG`tW!x0=@+RG)q;Tx{ps|lRu?R^fi>%c_!Z%1ou-)@~{~s`kaj@M*sd*~ zc|Pm=#7~VMebzYkW^Ln}&tCjgbv)WQZrgpc7WFI|e+^sxvgPpJJNmcwCoVou*|dJP zD|)k$fA3$m-mBcsuV1Iy!(ZH?B<1mUEnC_9z?W^wy1j=l3QoSV+h(qdpO0e5|xWW4_Sit>MUpNdrc-gvzbj`s-9o-i(3 zh-e@`{^xg{i)3G!x{%#_;)kXw5uql5p9H;=K*rqNX>$hkD*_yn^TY^`A^bA6Y!YTt zNr<3?1&;Yq0#LRh_Kut@`VCMFpIm2sN%X_#DKrn>31BM7&fU;zk(9L&?>4`XqHj#mxYMseX72QVfMY+CvMj4YY(63d$K}C6r~iZm zr{R7CjPhschv>WlUZ!s;A-eCdhc2igB2X}mSkFR=Hx+grh&itg-{Df-$UO(F4}8pY z*yY=}-&c8Sc^wZK-*~GWR#XvnfYn`o#jV`Q1HS0pkpy#m35K%Q|E#<=;ETwRPyg4~ zzwuM%5njB;OVL0uUj7!F9pZK6w^sVR&Regz+<4>hia?;Y{AX-8tNfCaCCcvxv*G;d zH@+-1e=*DZ{cgxJw56C<1GTW?}m&l3+@XpkAMc^tne=-T)-_ZhV9Pd^bBb)df zd&OYjRSl!{xwbx9WPNRqv0pIl$rl4YKM`tvU*N?jjpK&U@4~YYG?}4ZFL)WawS!ov zV>8iVphW0QVb$qK7WU?`1EOkT4#=3#JceO3Nz4L0jpx<=+pBDj`fsKk)s+ojpJ;1v z=+%K+Z;g&?uuc4WLuIui{mpuZt?KqMr5Y-4y|uDobQzu<^B51&WA=uT%Ev`VSKVN9 zRPWzkWw(tgBjzP5U`U62VbfUIqcH3v7Z&r^l%|31DwRDJG^e6Fgl>fE_-b#>Oyn_D$|ZY(zMg_o8bE=U|%FQD#Y7avmMLh5+S z;ZIF1h#X_KFf0mPWqd}hv%aReJ9+&RA$C=%;4v^cy{vKO^!?+5nI%igC+D-7OsT-J zFMaWYU6V~|%WGV}4&KXqkI1Ml7FeS%h$my{05mS+`>O%P+7^CfCxNHU_7D z>V+HcdX};2a$Grd@y8zA#I6cGaecD8xu)J(JA;?GDuQKU8;hlTvpieYGA=I58eftL zfx?a_!_#LrE=x}iEQCGouqd)DcJ|Ut#^h}%US_&?>g-S4q4r%A3Qq2N@ZyaRPMfuB zZ*8V)X|Q8~j6wAJtuTxz$ZCaLTfml590>}Y04bIZ=0?*A(Gs4;sEVNs{lz}7)I zUKmgCNKn-Y{fN*@f*3&#Fx4f~+S7`5KNv>hhBBGFn0Bjrx=C-EY>J<0&LQFw9C2Z; z+h@>Rw=cNn)-iJ}#LiP^^9&$yUIB0|${E16mgMKkI(fPn+WagNRIBt42h{>#W7x#L zXUb=)1rF(eH4fq_Bn~G()R$7UO+pjUDyUV_C}0S(R&R}qCWhdj z*iq{Fr>dfEvoVHE$dBJIG?i^$&75PKwgE-a`a)wOBMn7qV~nHR2p?8xR|=aI+9euB zgEj2kDn80Es$I&dJs*Amb+9Bwc25bkTT6!G6 zI{i~=sIyQluMMH@j&=yJLWm?QN@(Gv3(PW0)lik~NTC`Mc2MjgRUPKNFc{hpe2KMGTN4M0Mq{Zl7$q%OlR~e$WNHmHn(mOr zq`1mLAp1Z?gwU>zwq!@BL%bYVkJ{Mzrw-0@KS02|i9RWBIV8)@#wQkj^SZ#jQC0iX7Hsm&?_{R*=3X9F*Rozj&&d*i5&ee#Df(Wo$?NepMIka+wHwLXAQe{NflsU6% z+zxRIBNcg#jyPUWzB?3zI>jf3WSQxWnp;;nj0ekA89h^N+-}hkc@jTv9e!mluM)%; zbs2`+3Td=zg=AW-mUV>h3~{e4`e~y7{DULJWhZV z$Ix5LWYw+$yj2?_apDWI9Lg3Aky~NUU`60ftD;%`vgT5CuhW7!nL&*!G)8L3U9MWJ zPN!96_~?`tripbs6t`N2v9ytsgAXsTVuZqgyK?5XxR?W>H&xw=DACNOFwCnGP}Fk8 zDl>)a77Qqc+Z{m@tjwjW9;+g2nnROa7|F$VAi$DUmD3=fPeSJa>)<86A-6XIG$z-Fn_bf<X~j}>pSeswiai#x7;04^a=|o zHdzXu3~D!k_twGB!iup-<%>wx!n(HuDjeATlAIHvY9Un}`;FJJc|{`9 z-^eP`5K?4)M{evN9gQ)Ivh+8UDT=wU1GBf!lmQtmso=k_g?xr&l!&KZ3_Az9*8E0P zi+U}-`{WnV=3tR(`03+Msx(gd1-|R#&qqX{Imr*3ZT1Iz{{}+=eG!d^m^rdjB)d}@ zhv6|Gg(Yc-5b`RBcykb*k*rxTX9aa6^#76}DUg)W_p?cD%^=e2hYDQ!00MXh&pi5I z3G44!t4i6tWW-GI$p8@?0~mrqGDd}bo&*j9YpI__JtHg*t=Pz5=w`NuBnsrA174Bj zAoLZJYFr@J5w>!s6rAJ=Rv~d9ei09fyQ*wF%r3YGod%I3J`{A1@v!mmJv2b1fr9qw z9(DmP_#+NSJ-UFHS>9?~!b9Q7|;*yG03lx9S&g z2w#aT#@!2P_+)8@v`ku!t_wS^w1>1bU}!)Hfrk-&9rN|-g4Jm8E7m9lmnE|A5eBz- zmKRF!C6901yL8)iTJP0UXZEPd=+9l-dKT}!ZSUe9Tj6upLuQ;j`J93^sT|+7bnnK; zm#956r(WHwU1u5#azNpdMQq);#&Du?f8KS5Ph+bs!p797E_@+7|LCG6*Qz`AS0=)Z zCdBjmI$D>Co8tS9>Me{SF zN22wq%KM_xS1TIEmXdEg`@UsYU$gAUvXv{(*>&~uSC@~;;}eIdJtkK>BIWM-PTg-u z8g{M!Q4u*1<-bQFT5%wnLZOQ4(S`DF9$j`|+1dZG?CNXJS-BE5kIvG%z*@}$cU54F z1YAHpAOwLxqYCxS6bI_rHy=Hb1G>CxJ4eL7M;Mzrr+@RohMS&Y*+<`mW8IA#nxI7`cA~EsZ zB0@lmq&3oJ>1t`ObO&yc#1>XDDv%tR-ePrQje|G`4N4jDr3v(wtYAU4(j_8a+ex)6 zsBQWJXkpTUEL70BNfOp!r)h1GK}%E41v~=NWkfweB~&y1@Dzf0!i*WUAl*T4m7fy) zIJ<bgFWYnPZRf1A>+6^9Ik0S&)wyez(>iO}fjvvt>uN*e z+57I@vuwSNl9o&Pmt0jd^0O{|Znre2adYkAvU3nxxuN)Ov@(KDXfy1?z@_Owo|qeFgb>z;9S;=l){ z*y{q8=7{V8S;YQ3#xogX$>sePsI@&x#K>jXgSX4rG_VN)f6=~Cji?X_Sb^Y+5+p(& z**FA(#%DgDj~0lyy%jMx5F64@n+QR#*h_{pn!x|00m={3mmnB@3WB`;XHCl*KVgm7 zVsZR8HqFSA$3K_q<)52L1s6=$eikcya{>>e4&!U}KQVs7KV$sF_!PdKH$ZOQ_!5p( z-#_#>C2QsYZA?;5?oqE(uOod2c`X6lOu?h+tR(WL2##0X*y-ktwOq^2@i&K`mRHNMSxQTG)~ zS5D`%FZ|e!M=q2tSAO!*UtOMm+~)91xAF5A9^8C!-_T#XmuHrC^Vwy|%2C;m4gEiK{lgY8LcUti zW04jM6b(hIrcKn;^qA49KP*2w?p`q@oth;ycU&APof9cKu(wZ_q{VSE2U;^DnfkO8 z^gEzvik@S>!VV3&_^8$uHEv_CkBx|2&=Zm$#kK+UXsKrHxT!)MeX+E_t3pS}?h&W_ z01V*Fxs-o1_6i$`bd702pWL+W)xW~}Yns#ttbK`e9ngVTHA48BZqrkcKBOTT5g)LE zddeS+3!y6sBx`UNLVvzaYCzjYcn4rdyRuUK-&WPDEpeB(v#Dz{oYp|NY~{7mn{3C&AtI6|43)`Tu!rgp-*)z4*b^gHU3 zi?5yLs{l{=KY(m8KR9{7|DU06X@Cnq#sM0b@sRo831Zd6+f((G}2m25mpZIv36j}4j( z;C=Nq(4g@E8s1cNzlZRAGc8BzL@rXqqENp@K`qic>gu|&5uIobG}rDcTrg*AenUPJ zniI{)VZ~5_UGPkp^bfra@_w(r&L)I^kP0?6IokinDX1=M@ z)?IMu{%zZvTRb*fKcvzFhupsB+hh9Y2r0a}cxS?e<~qsHpj78{-N{vTg3y<&XhxL~NFa@zFmU3ak= z$8(BK?8)>E+}_FeMa6wK6k17W0?SmC_w#zy5m3%ib+?Z?AKfvaV(w zp81BXm$8}InMH{X2Tt9Q#)WV~9tcB^Q9}r~F;>KVq)G502hIW(@e-wgk>D(Q>Dw%_ z4rpg3juR(fH+a$EP-|#^;^pPb^Yih?c0T`nb2I+L->0vnzL`D{zssL}tB#(g=riiT;) zg!eRU!GI}(9~hZd_ybdHN?I);B)R*${0d8c)2#ooUah#pv*|jgC1i?;C2XscFoAw0Y5=wuX+8! zTOPc6UCUI9E`nIW)&)5$?9!`pCL8-~ZqW&zJE`zHv2j;_dU*3oyBm9UUD?t5&7di$ z9SgmF%Q?6F=H9&zeY~(Gylrtob^GS|Q>x_diR+fIoqyr}UfFd6V#W~PpQ)V#l_OV1 zrE+u?HiR#!92sSaF_i|0kxP}%_v*{sYnqS!dE%u{ukAgy>zvYAGt6$upw`%{e{uiK z_wQfZOqKJ*t6Jv!miz3_&|^F<0i56^iwYl$HL%zp=iRkq%DA3OuV`O&XHadhl-a$` z)w|VpmA%|qWY00^<==gH%j$=MQTN{#o>#LpG1j~K-1fDtLGcZQDU`*^I%af~ zRkV+F*a2@ zlYQqRbxTeMJGyd5?cCnp%ANyrc3+vF3T}UJ%DnbXQzle5cvfJL|~-hkLbp`M02S`iMdZr((3Y9evH-jHK2a+cexH1<$k@5Xs`leX+m zG_C8dzc|#guKnCq-m!_LHRmnd%Z}~eKWSz~dwWGFo=C()*WN1sSJRG5yPG4y{zv;s7K452_o-6#ymjR42ds~zQd zO>VwvMv0kpt|c>eAKpEqMA-=?YY(4H5>1klhd+e+88j^F*J8_(J*@xgu82z>c>mgi zJ7><^c~IHOCCE382V}k#6DO1O2<0{c@dE8)2}va;5xD{%KqYQX!La}`lbnF%ADgHj ziJioA_^}h-`?W;&__G)&BH_T{SuWh9Q5gs%We{KBH)F%N9|@h|b;`2|RZ>Vw{JSLg zku1(1266@hi||q9LsBC9Jv@Oj%8X|d%Ckd}LL8w%NboYlX#-DFI8UbVKzU54@E_;D zhhlYryANDzXem4qY@z)g-4lKA|3u1#3jm$a12@oYUO-Bo>;rm_)N?ZF90{R7ylX!& z%&A?V!5i7CkOoO49cm|D-r-`7YPR2IwZs|PkbeiC`^vs!*)O7YKpTqaJ6^`G=sWbg z(w>>Vf;Usag$L2NAdyk>e?;``4su8rH1jPEdaM?-ny33@rEVxLxrsu&Yhv|AHPg& z9DJYHG0|TY{nv_;%Brf$l1qOdV+&>-tdUP9w3T^94o6X5r8e=AujIzInZ4b-&mV`s z>v|kn!9StI2m_!bf}9+|C66>zplpx|-1d;e2Dce^nAQOgJ6C?1En}3b&Xm=6RnxwxbjUsJ z2bM)xiPIW1M52SAL6mWNSXXFpUn^o4xZVuCizi=&29j$k6^K|rDwVoTENq9-OW^`q`_Mk ziAUB05TC4ur3~M)z+{5=*$h#<+vw5jNd;MK##fC2d>^)0$t~bB_}1ySqEu(Nb@wS% zDe4j<4i|g{pBtnLqKvj=^?@^BhQZD3nX|3}JO*M!$rlD|Vl-nx&D@dk7GyR)24Ycr zt%HL7$#a|o1Tmws`}}-Opt?ePesj0Y)ph#;m#s`#&VNZM;6pz7adJ}>Vb zrg@rPa^0u$Q#7uLE}#KG7d*87!CQ#rbArv+Vr-M_UQ}m`5<)u04FQIM9T`wLpyHiR6ePH9uQ>%NH z%x+sB)#$GI8*}{aC&S=kZu=Rq#U5p`haXO_54;X8(6*J?wHT^HZIpW9OAr~@mt!%2 z?-v&%aq-5_CtLEI=&@j*C zEHGGlpLpeo53c^(SHL!${Nk$-8!o;0b@SXo)qOB5y&dB4_GD;iiR`>|T3&1A5NQAqrVQ@)sSb{in6v}%w; z7jq-#7E3Tdc9XZhb}Q_4Ggr>c1@9?d204?MTNm>RtwKC`&C^x{^@`qys=ymmJ?G-b`H=HsMU4Q76d3-LJjVW zIxTdX;t7_f^hki`aCW~UYB!&WDv{fN;CX;xo>YSL-vV^A7`~;j7@@Z_hA7}gqo3SX zS_{CKqI>#Skl#<6)CIVIehPgI*9FCdL1rhj73)C{h=jsd^1L-RAT2CK-*M#yaTOfm z7|o9*o#M+}+;Zuyf$tu9PhuGrhLKB1CBWmLsoP0v;(zeg!y$zlA)|AGA*CUhFc7?S4q%t`D!ldH>{nx)E|oN{wpg{!N(%T>{4F3-uSl$x8$S1-Qd zneRVy!(tJQ;51iM<88s|wUc+wDleb4bMpDKjAh2#Zn)t#>}H*R$EK?3TdH&GB7s1p zHqYy;s4lCmEvv5ZdGl)NT3v4Smg!ZS?pX2grt#x9JH+b;BuyGJuxc)&V^oP%f#DKti~TMtPKgC4pFD#B*e+D0d zmYLq<_W3<;*XNsIpMUfq?DNxG3&=h{s*GqlCCwrrZ-#u7A#G!PfiXN=8R;`8C;4U+A(-|$01{+vA5IHI1%=+ zN#k<%v5EU~)*cQb=qU)*9p6uAf}YQy>x3=CDEFsbTmS?JGPP^Rfde}_cOTxe#9G_= zvTJ1v@X5MbR=QqpE$HnnXiXemyEw0eW_d~8VnX2ZR{Y|=k^ z_gx^Wp)H8-Nv7KZy3Gv#29O=C-30*a7T9LF+N;{jO=9S|LL_qSR6kl;(qkM235Qb{pzL8ZmeAT*`^r`AXlt}529YAF z+Ld9%`5ev-@VGz>B;pL{SZRIgn4#VwAks^a!|@{42vGxvcA#B|L*5FHCR~1;J)KgV*D`=XsnQpsTdad4%C3J0>d`> z_^5LzOVcZRh_bly94Bdsmyao0#U;?(RDw(|86=v_@nBL?kAO70kMp8vgmqkN&rAl+W~;;gX%WkpM{t z6oxFz4Vtu(UovN&QTz^AeF@tnnmanF#=BSQkLTEFh-I|W)NgR;SNlpclrJ6YvX4#}ro z8JjEt>IgbYUf%ypWArOV)ZmR$GDsvicrwYymDsPikM;C$2D+cN{J4C0`Vig~sy0CD zPa=&Gq1c(5VYeEJOF$on$;VWiVb7er`_g@g-c%evnlMf>y$L3pFTDz{!M6&xhQ(H~ zL#LhW(pcZ}%dkURbU#MKj|wc+w6!mT`{wQf1GHWZ9U=nU-=DEfCy5OBoi92Q{yxPj z!ylbSCTT(YW0N6ulHJS5ogqcwV z&qu;1`#M$sT3jBNhR#q$*h`4}OLERe>Oa}vH_ZJ7agmWH#Tjbz@s~1%;Jz6CRNADJ zP4aed&_&*k}kB9L;+<$O24wD4k!dQ)04Ok9slF9GNeFF*k zcN3`jd-@WIzW$zIFxlUq3AZ)2nZP260oKFR2pdWS@jv7$i$2Ku27>)ToiFLr zVL!n7g18D^H`s_QCE(!_XQmYc+LH;6!ad}E?8W~W<%dZ;YgV}w z70pnQU>H}Te$!+Ug;OTh=yJ*ZO4;Ze_?A*Ce12rfgapc>lxp+?LgUDS3E-h;i2syo zfQ>(fBvefQAu}V-4X9_*nJx-j4Ap=&lq(Qh_XZBC4F-8TyP6$1VgutLrd|1(oA#XiXWc#waFCwugwTx5zJby1j0Wl}zOHNL>V#oj=<&U9Ir zp;UpYg2Gc)OR5OHfND1SGL>tF>KjsxGlizwGwt9yo45YUs5uCq*sF1eJyU4{vp=pSg<}f+wRamPUl?Nd;5Db!1!ygR>Qv+l)*1+a01Vzq) z4H7pY&LDTY$m|v~5gki&SF{`HD{w0+rGg%s>kBDg8leV&=0dE?2r4`R0t|wO%7%-) zti%HH!hso7SJ#3lyJ}b;eVV_u{bV0dMEU1W;`8dBJ_VAhPuys;^&!3%c5wj(QqXb5 zo?(Txb8v1C@i{$MrKng~W>CN+)&eaed0=?VSPyAcIK9<|i=B=sVc$lw6>0%9wFVp; zhOzZlajnsSq9Gon!iqm1;grbR1sH0i6Y(mZ_hZrx7FAIx zKogz))C7HOER;5|r;v@McKR|73-u}K?9=*taYis09OO4hv?aQgS$~Wuk4hD^Fk3zg zBKb8pHU^7;(+G>5c$55V%4^HB+n$!aSL(}3l>5EYz!30_^qNkwYgp5V*40*lgnaVh zrX`q`Iyxs+OnQMk^9`bEW0#!l+DImQEOLmbT6?&mc%W;e2<_1se-ILMd1IH*Po{pp zJRV*P=2yA>4A-g1r5tX5LKs@cw-ks!NlZQevtZ8iP0sd z2R3${aX4Vy1VyD7q%~LZ(o`cRv%iu`jAi$73#)5;ULc-c`F~UgBQ=6ckw*=&zvI{ z+UcS0)T{JRySSJhTHV9rDh5B`Str@$eDqR%Sk@TjKBAdX$^AUDhnuMQZDv6HUQIs> z9-imOWiAm0BT^ef=^7_DM8bGSLu6JRm^5pGaB){%CR&jb*Jib=)#29Vn{K;f`2aaq zsgTQEMagr8pWYK^eczVS11fQ40 zyr+3q1-(BgKde<143rp|{IZU{WcVUS5$vGq&lfQ#T16*}U9kOENMz39mMul^O=@w9 zXMnCUr)6GC4sC?nh7O-QaM76CCp|Lh*3yd(B$gk#a?S&Dt~|6nG0+m-f8!4iFP)jZ z|G-siL#NwdyluQbeTz}m;9;v_a zP4NleYHgHnj!%HLpFbPix3sUSB1rAZcvf<6z56qP^efdl)#xu zoB=3Q*(!vfMX==yp!7p&amjz=!pP6$pG9;&e@>+?Xa58Hb97^?eX@a1bpc{I{;_GR z9{xxk{OI9T*fZ&)huwU5K9H@_2e-@Q|G@?H=VC~Y`RvJIewpx>MGa&_v%)YQ)$aoOQ);M zK~)9)|FmvKcqxN=E%D$aIJ-PWt8Of3GHrQI8$_Zxuex*I}nb zQ_y<;H8dg_f2@oGsmP{+9WM-0Oz;+=YB2#th{KY!IH23eIusJ=A(!6CZ@$@o=|9SX3zi2DzN8bFE_?N%l>~g9b%+<~ce_6Q9z zLB2-vnp(|fiEUF3gm0X&0#{Rw6ctli@bZ+6Z}R!by{X$BH;XYP?Q0 z%9mVyV^igp&4zbTtS5!2uPW{QN^f3fAkdhHbUlQCoDaZ|L!At>0wBtv-kXyx<{ zDq#o_#J^JL6;tm>CGEv(gC~&c_k;}&ms(}E1sqnb^sSSsu%HfmghZgM7*1DOrv-{# z@Wqrn8+@?EO@np+h9kbjmR*lnZlV zx|o|fDkU=po58*jmI`t1zc5Pm`p*a8*QLU(zr|lq|L{Fx4;Jst>F0Vq?*7-{QJO4V ze&RlYd_JJ){$I}-8h`}XJ zz7?KTMAq6eVW4w=a&B2IB-z@s^sa7Y{rKr6F*`r?@u#F``ED}b_S7!Uk>9;6T3XyX z!Jo6ZmIQTN5^IN#Wvd@pV3CsMS?P-zc^y^&l?72DQQ#b%3xuC-;6#Wf(Ns|s$R3xM zgjKF@sP+JIdx&9FlVXxjwHP6XL6b<{`}LH31qfeJB}^1^PfKnh1m;461t{xTui$cU z`qgUENDh6JJ#$KBFq@3BR}DGf5Pm6IRO9z$saqyZq_v~ zb;~F6Cuy)C=D;=i@iZO~o9Py=%X&@fAIhuQEvHmQ-_Qq{{*;Q31q7O6NYrEnGY{}I zP<wD4m;$J15AMqV$M(8_|yWS+rb=ZI3fAtPu(cef{XYA@^{>8lr&PRtXJMQ z;$sR;=)pu8#Jsce*fc&jGLr%NIHG9et4B&KK1CpxkSGZuo@g5<-VS7I7KDBuI2s?{ zu;zl;q_WtUdYoC^duBFOpW8CNG(6etFq!W)t98)jb=|XP4)bLm@ClRax|^B<9`C#y zdqKomKKI6Ops}(fk(YChO}ERCZ)S$p-dj*$E^iAor}HVd7Wuf)NKqzlW*UQCC2a@X znX`VTi%@cMy)U$CT(?F^y>Wo6!>DWhT;{-r;W9r?^+%;u{UnLdhRU!Un|zdk^uMQh zGC2{uL1l`GQDs?GWxqZ@m&NF7F_z0BWQ~om-~hdwHj*Z#qGOS^oNB3nx4uqQNVp*p zcbL!%!UTx~kPN37j)yp)Lrq2u1*^(nB$b%4i0}UP{2)5HJ7Yhz~e| zdV}>2Sx&z2+||fGBe-!z)a6{u*sf<^5k5@GqEtKcoSC&vV`?fao;Ci++%*?oRW)tV z^m_4w`|lqt(VN^Z---KKnAsk9Pl^J2(^T@_1M+9`uZ8XQXy|TgENu>TDdSB|c?!insMEx+Qz!M=>m+{7I{hsrOXA2nb*;bfstGGrPL;l* zO22tEP|i-TQTv*X#?Ba32tYQFw=To{5ka|C5kfffkm`kx04$>*M;Lfwl63+3?s3g$ zR%6a!GTN9@McZsR7I7@%I7x6hQoL|l?x3n{Od<9X_OvdlPQA_j9eZ(t!OqdZ;ftVk z1HuX{K6%s*1&Z_ZgG!eh>l%1!R*qCLauNHpj)fdN*kd2|I)$%kYyX zxp>x?DdnA!3xmvKEWE6@qGeuqOnCk5c^BnJ@+%@;%MR-!dNYtRg@TB9cv)AZ0@p8^ z-?bih&1*?~P{{!P>I;{Zd&X6DmCjkho}NuV?Tpy86sa*x@#9eyQ3S4jR|V6@ zvYP~j)AFuBmainBzWc#9Gp@em%lhpKC@yX`HuXYZyzq=-##Ck z^iGl>)~i=^C{8Ux0@-M; zZ=3q8_;^aS;K98+=S=Zy0e9=4GH2)B2Nx)W5Z@ynNi~Fb5hi-*h4eFc<)tvcr|6r0Qou5{qQ8d=5+2 z@ywIl45h}lhm3YT$`&Rm&-_J zT2LYdxsv!JgqV4XqJmVRc!P`IHUZC8loLkFDbl*Mk>ieS^mNi8nPUTiaa?IyLe zVf>ng9GEC9tiobs{UU&jO=@L$_sIP=y_WR|4&y5C<68y?Xrzn5wGZZRsBD@V(uK9A zYM&uEZTtjBNg35GRA6)nJpc`+x)q%Ya(-J23;0mo0BHz48-Jm~#US556Kl@rwLM+TJD&p8uVu<`Us#N-ZWDf}z1l;&b%JCe5BQ zYaTHHwY@tcKTjZ!L){yshpc9JyyjL^_O`4)3xF6Rw~IxHvm&wV02;G=mt1L zA7q*z-ZM%=j4FdzepWH+~Hh68Nu+sCw^XA7qY^}srSEqJb|56j*sRE-RI73=B-s^mpI1f&srlt6cX;4&{f_^EL{KTQGabEI<2!#br0& z{{N{}bDL1%2W+yLx$vNa8Q;F$ zYce2TDR=_#yd$PR<2u#_Hl2-gp8jo_iajks@JL_83|Lpa$LS%-EQ zURM=apCoJ8))mjyGyAJ5PO;=Ddj=0xMWry(BbASBzHTV7M5k*MzQT8ll#-PA85(+U zKO>yBk{Bhxh6277kgFX-VN5+7Ha)NTh%z zJsvoJ(^Mut7~fFQXmf)1;`$n}3#3!8CvqI(ykcFDT)g^=ivn^#UJ6HJJ3a}Oma)&Q z2e6ydGI;mYpp5sjWI;3{B#r$R7nr@_ek1z>#~A#&dS8{69IH z<77A!S7pz%k8qE|is2sR=G&d(mD#gtnC@#p-Q9{O9P?_)@ti{<@b*L64dRl(5Q90% zmQzSyz;3#=wxNf;VX@2a*v%F@Fnr~cLQoz^4T#C5xw*IIcI7S=`mzhg9=Wx)r-A*4 znI5s2>5)`I2r|q~c|hn{iYIQ(&0X4)UDE7!${}B9ihD*^Yc)W>PIGP?pyPC!MIPgF zkb~r>K2#b)@EmjmOy=0AVc)|BfSo@k?;!5uEryNHUOp3{E;jFSTzNV1_Yn5p4& z0`ZS~7mi4)MZp>rSR<>%V3r%|3tGc9MB zRe2<3@d2ew8VnrgC`vK9m82aGuiWo!cgp=v!4q&yh_e+?~~wsDa#{`WsnE(@%)6X15aq-BXGG z1P{{#iUb?H75Qf1B@!F5K1DP6NSjz4ApJ?Zi+jjKs)oOumau=x7!uNWl|xcA=MyfJ z1k&vFh_8i3lTj_1oxT7%!1VyWmcOOn-<6DY9k zeyN(hY111-pE@A>knZJWD>wunbO7?Mu`gfdC@RQxBVCNyZ2I#Nlbh1cAe9pG=rHv= zPV*+SbKF>mWwXWc22*+Qee)4A$s)ZHGRY)20y$u_KhkM3SvMN3+pb2+7&Tsifmf5E=#u-pSB!S(VDbmw6V`^%i>y%xtG9{&90 zBNO!M+@kL3zj9dinw|0$$M7JE%2c($ws`|G({h}^)HcL&lIJ3N0GUe0QlD{*ctD#~ z=uo=)Azc&Df2jMY8t`@`_ea2@X~Z{va>QZTZ+5m{+SQq(wp&+gZC1UoX-_0F`_lYK zS8ZLad}d|)n2H?x^LIJT`z?-f>pGep8oOz>&T27>-ul*sCCe_hmqeyjRK^>6>L99Pm zDGZg^G!EAxEAm%~j&PoLL8reg76>B^thX}SI(|{Q&-S3tTG0l)0f08+p+pVfzGL8m zl@5exCSZHWvQ=~+X7XqWW$6M?)J#@ zsc+a_POCG_X7@)xfU?0B!rThb(&fxfw)9@>2#4twt1D*Q^c7t9g|KwME%>AAfDtlCg zO?6mSo1OC=mR_?{Xt&vH4tZg8p>L6$-Rrbj?5XcL&Ak@Ke5ZLeFgKnyJBgPeVG?x! z3=s}#iAJy#5C+1b;gSsv#vy7#ct+{z#2q{&=N?F=FlVq0sh8wO*uSZrWUbSDf5t35 zKvxD3P9JzlT>a8cIl=ChcmLN#qn+1q;bxS5o5ev21X3ZOY&sxZ+Tf9$r@9a$!x?tM zqzed3M6`u!Vqv-fpj+jFA|r}?#E4Dc0sQe>_iBAdeA;inen0j`yU_O<)%CH^ zb+o%+G4hbvuJ)_XVXM#6`gZ%Y%h?6zs{L2n3`hn+()V%^pE? zUJ9Z#vQnsFzhFm`$sk5)>Q@`SZj^ntux;|dxuB*W&Uj*c; z1jKy+hgP?0=mbjxPFgk6^^TjjZ8d9aW^TP~&h1?#w>u^~Un*#N^Y{a}QrL zY5l}Xk96uJ8wA3^Gd1iGV+Eb}GB)_R@Y$fYpy|BST}2H=IVO!DKgvY4$>xV6#}}cR zkQZ418PsSDDCpjT3WZPSW81F8L=LNDAZox&6$#nN)DQoS40uBjA)|S+IH#I5REw&? z0a7jyHUp&%NwSo+T7Ico;nnziNv5izdGnQ6=2_~X5#K&L%mh1gsropzq756u!FR9= z&r(#BwGg(AU6@J+$SUosIha2+kPG5rEfyK1N=y4caIr`+TySX#rqMV<#4)8>z+A#W z3Aq`V3OC&tN798jCZ4v2_RboobpLlIn9FN96S&_mhSV0$e}$O%*#+&$3O( z^@rqcCdUUC3-$8#8mrNwcYpDQJTR^DpOw?(cPGAo&-+sEZ!2w*ixrwq=4SwzpkY(@ z&_p@W=eXi8=LmL(9yrrZ!AqwXtkWGDMmso+J{Jbg+|^PrTVsF`kV;bD3E1L9PS6SK z=O?FB`~=&cGu3(+j6Ro8o8bz` z!85mp&^M~iBU)ovvl1Mt;N~+m1=~FI`&k=+k9qa0>ABuP-n|iW)_{5oT;titd<2d- zq12QRqv-h8?Aeum_jj@CK-m;Rw`?bOZF>lU1;&h@R^FPKwh z(`h$pCG)n0-rVcYUvubtLgnVo>~XD6Z8Mo2jSHSjZ62EMLv^p`p3TE`|8hDvs(Q{Z zYmTo`_t&!P_v0^V2q|6plMkJ#_JgCVsjfL=d(iq$a(e>nJLy+}1E}=6;)pRCT^hpx z=}3_8jB=i7w1ksPdCp*OK_^260(ihys6vn#keR(_b;AGGv7} zsMCQ|rV?|{+}uwu!8?V(P%s8AENCkWPH$;w85h|&VY*Nd@B>33;ukK@i3q~x#KMrH zIZ_fUYj!!^1=YpP`M&7%vOp<oB$@JDx<&+A))0Jz~>h*p{ zsI#iqms1q=hcBJ6@XmJo^r9;gjry3?Zm$rDVPj+*8g6=!5aBbr96hWnUc}0@ zU}UUB?v-m*-&8%J`VmG+8~|rpH)ec2z|;!e@Bu>(fp8o+Yw@&kt|qOPw__l1gB@-m zwve<3bVV`ZK@Q*!tpGGZP*`<+ZCx$pUZUWRYF10m%F$4eBZWe}1``Gl`DmPhZP&&q z!!_PjgTheU9=B&G3ONGN;IRo1tB_@kU(5*d83z#YmOMKQ19{K3x2Im{nu;_89kEDA zuW3iZ9G8c+X-#9op^lDV(HN8Vq#&9C@!CAMD{oc6eMO;9!{o~o3Bm0&w3l9m)Pf&f zRW{z>asdYXY9V?xAi!NI^EuOM;xlzYZP+-Kh1_{nH37FfP*auXKGxB}p`|-CM!cPU zo~{1-%U#uo_IS9krsji*@?v)X#NF}@#pSuSC@Ylz;S;O{%(vlCt-EAQ5&P)w;u81M z`aFxrQ5+34UEUOkMspjdkFW7FliMgZ+*wm|XKhOS&fKylwbiO_DqDE;@p+}qblhAz z4-t;VKmM_Isdsh#PcPonm=}%aHS%4cnQfN;TwoJ?4C!nm4mg_Wvb9Bgb^tHw&sZyl z$Hx+2*X&YVt-3??7?;1XCQwL-8q8m9b)<%{ZS6IoGjvO)^WqpCaT-r`k$9L77=)ys z*0Jb$3^xc^)jU(LRukky1ksr^DuR53uo@AaPI;1QoSCslj0#aDFM#t;AEDyQF|Wtt zjj=iBoHN+CPJU_4N)}waI3LN2*EgxZW9#6nJ!c8XTE&xrSVw0p zH!n6}G6WDI)wf`Q@C(0XQRA~I|FeyY&3+s=JtMr&j|cs$cC55iMsn9qVo&ErCUit| zbE6#-BDrkVl6ZB6S+|6VjzB&u`p*szEBAC(RCFHh?oR!LeJo#D;ueE!y}YB!7isB! zVT!+@?l-A5W9#b!bImn|q6rIE&x+L4L}neuE*=Qz#UH&fVZs{|Qwu-b+SH|SyER=+ z8$YIFt;?mwv1Eb4`|r#;^}ykVr-bJ2e(wx*gtKmvYJUy9Qw9K7Rwy-)z7lrwT&jZm<+%7|kvAf~R?ER$J zFaFGEOnu6_j0S_}lM-F&BfKE!BO@L2~kRm+3yHr?;CCn&h(cM6Rr`>&b&ZHvWR zB+fR4Q!zmfg&{bzx0&#twyQ=?7e!A3T?F|u!>XuKEC?C1CGsNCItkQqK9(ux1_fEB zM>C=eRQa;1pfD7&SrO_EMZ93O+SX3`{owB3Pg-ZQScUYtxF>zSWU8GdTncvfBk*qr>xZF1t-VNG9xeqd> z31h`^tC8gy?uao;78$YwNh#t~;}0%gNDLlvA}f4fszrQ?oxCZ`c8Gn0zlMb_)iy_X zIF_3KGvT}$sUz$dyKbkvNoe13^N#(uuv^%YR7V))8Au%#)-D=r@(a&FCd{mfiroyFVNeqCU>qrZxaLwe8j*-c2 zvKWvIYsh&NJw|=*kwufdU4*PdBuG5=+@aM56s@W zb+&ZT?5!6HSG9HSerqSQ_II|WF7}7R?8z@4d+dwHgd6Y69Wy5PK0Nf%@aUNR zBPar~gR&sOs~JlGRNP<&Drg>I4Z!qqf)guJgZm^$V{l}@TqfZ zI5q)N7(!7Fy*TBCs4qec5rDWWb=%^xyxeHfl==;p7niq96QvuMF1h4A*W|J)`5pPA z(u#y5e`$U5dvCYJmoCs*&1FRke(}QUib-=4uAHF8@du%Pz^$ z>vfe?T0@~fH>}s@nzSUUah%Bs_?rJ3=KW(eiaVpvfS$_>tQrI=Yr`FZ;kZ&H& z?nDcseFe&#SqDznS&N*-AXHX{8Tm)o@C-NUqOL1mKA4@P2u*^3Xf}z1KC*GFElOfs9NMI zn8O;~evR4%%~g)e>C?h+rPk)8L~SfbTDw+by1ij`pkjq{{955BaZi1yEnq6Ny2j>r zUi-5mb*-z=*yYMyVs=H{@K>uIo(1qqK*OnK!ta~bB+w~jw}tYXcuvlBy3>3vH4=Ey zI0h-RHYmWQ#`sqq!o)6)I{>& zvV#bodyRQ{Rbx9ZgVDLPrFCXU>p1pdc9ULqtifx~&0oP{$5{BBapOvgz2B18&nzt| zinv@Bv!p()O~g|PA%&ra=mS+c-@<5>neds-EZ<`=TMY7DW}V(OphTiUNV3UE#6~7< zPNy_L%A1oxyoG!-R614X(fEZd8m0(n%gaK$(28O?}+`?G7v zra%2o(xH*{X-GQ+-3a(4O+OW3RH=l$XbM0wW>*0Xgm?1(R&PRkMtQ_wdRURv6D|}H zLZNWC#6NQh3%^5#2a~Lf1R8cAkS>pUQ*7Sl$*Ls_#<$F#U32TrH*VVa$mBJ>h2_gv zP1@dFTRST}{($^$UVd9$U8F;tHuZ6aq=Ibxu3gUugP}s4sQ>Zap@aGPg@xmb5*;<& zn|8h^UD7gbT3emNsJVIlx-p^+ZrekC@t6}L)^sD*a#&I$a7m!(d1Ws=lv+T4n&jX% za*+}oscqeeX#78^3xs%T`{2jBgqy_+2j3U&Lj8$mVTP%9<84;>|I`EfZ3(VdlQ)*e zC8hUjWpz{7JcRCpQAKx>o)Y3ES}GbRBTn2-L5k$14rhS60`eIGb;BT~6 z(CZC)*zusp6Z8(AENO09(A+G|N|aA)UeJ7?xwNF2O|3`>kFHA&u1Kz*q&1nflb5}@ zY_isD(z3(!dvi%?vy|th_bC5<(Oe?WDQ#{pWsjCLJ5#GF5`UtzKPlTpg>XB&x&DQ1 z+g_;OYu0K^`$|gonKW8+>gLQ-rAbur|yq$=ZoR~y3#^aB=%C-|g?SZg@QjkuR%X<@ z9cDAL6y|s&$z_aLn>0F&Cnu6?Fgn0%*mFF#bq=N+v z8wwe`O_{;6z@G1O$AdM6db2|?!RwblTkl7!l>*!cL`qHz;|PgS_0ez6rSh|v%T)D=1c4!uS2L>)Gl)6j5EaZ}5b_*i2s z7z&9NX0iHh0qK0^WExb3Sw*8+BhO(vz+CAJ0<#&A!3*6j$hSLu)|`MX&rql>Rgb;U zzw=|k9&NfPDDn=>RKkY=Qt5#o>1o(yY-@Ow^c7n+Hp`{ zjVrL06$qkH&+?p}d{$Br71LGX4bUt@MTW&65WyYUx3QFGndTT|oXl<&h z@OA2JIzg@1*4nI-qdHARPKP&-IkyJgYZm(*k)Tm5vHJzMurRCZM>?dC77ef>3buNQ zIR=b&9X$JBuMUXnzX=+hU}a{rMl!3RY%qyTI`NVz$LsOHbJ!s{rv_|Vhd$4PVT?}7 z4dyV`Y{sxQ*^S3#%p-3qoN8jjnT=^3)N_ zy!wf|#!pg*s=_&_R*um)b&{!|CO=@rBA3B|OCqj32n|IAkV0BvQCJRnF)D`1a2|t} zON_>(5UtQ&B}FhO3CKiH9fhK}l|h|Rrv^!)6UiBk(Nmo60DB3(Id#ZLmVslFR3*y= z!B%(E?yJJqXFuH6;tt9`l@GH;UDY=pxHKA(9IG$hd7wYYD#W+n_{qXC8*Uo>I~H_d z)^lG>pS5?(gi9thTi+88F}ekhSkfwhUH8PiovV7G5{Q zcv!fxs`Xs0W#_w#7vIs{X)!bPFW5ig#LlYM~ue%Ondf@LQPFGVK5yDu$0Q2 zb7znQxJ7j64927rNwNc}vF(>s#NQ9nmR%<#>4e)$Ma%F_Q8X{-rJ?jv55WHd2r%5r z12-SHlLiy_Dj$+6Fo2wKcmi>grV=xaX3xaRkn=}P-k-`p*CR@(y`rz89kv+#=jDIO zt0`^(IO>$uEV+6LaGd0xz5lUy?|(3Of|RoP`{eVj4uD#JN~wVX`ssIA*&X}jhf5oZ z^L#A1Zk?R;i9PhdUZt#%EeDXvhP-OQp;FsG+jPb~%&us&O!*`gViywtd*pvO2IwY$ zEad@S8ZkkcNPwB&Gq{nLAy?!>u?K z0@x^zw^GjNJq3PnD88}C>V!dgSW-4>K^%3cxh?6zc8D>=+?lEi&gii zt#;EFUzlz9l~pUhnoP>C@~imOX8z&}6Yuk+`um7;aA1V0B1FrGlxaBCLsrTN&%nwv zuh$iE)|j9$$l(?zz{UBvuHk9ZjUS+v=-p0JI?9vEh#uUu_#g>~+ z9I9~?Sc);H6@9T{GcKjxfaf1qdWNb;YZ*q{kflTx>V&W=dj{i|6Dpd{8f=Ac^VmA3 z8cfh7Zsla(9)`ofOcqqZQ+=8q=mXl}o2J63FNMHMl#qr2kUKF=083Dr9;AS1f$I{% z{UM42@jEmeLKqZjFdYVYFzC_r0P&*ZH5i)f951R}iT34VlQrj0X|hQ;ul4_`q6(R&HjxqyI1yQva2L&u&tVUoq#0+?C@u`5(4><-(Yfw69 zM)MgY7ZOL19zyU&Ah&3Dd5`+W%rw~x>1rsWDOzjI#D7EHj)J{%2hL6 zQDg6v;&!vCP%n6#M!&#JYI{Mbv37CP*jiXwpcf>6>5|so9R@4RJNPH4t$K1FRh@cB z^SOE&^vy)|DiM*o23BxYWJnH%w1eu-W1?9RFJA=tjV2?)$l)YI92>=@ zI&extAX4bUF`K-3Efl>9FbVRiuWbGgJjqzpE~ph`F9q5A7h99z#=R<_23WXl>EN@ zUvKTXCix&+Jav4zq_J2vnrnVpQC=>nEe6xLrJY;nB_F(UYT^cq3By2WYH8bIwg6<#(YQuf)_rLM zzK$}q^_cN>-x#%dR!?e6!0)II%z3JFLfoM#XsFcq0bns~ci0TAh!Z}(DhlC`L2#$6 z^$75%B*aC?NDN|WN2H^4!NV^+|L}ny7lwZ<-;sLd7+k!i__0?~PqL!>3%k1)esS>N z7wQ%{Fesn5;#bV~T{hvDsS^2vU#(zA2HBtUe<@>%LT5<2s7s)KK_nith{U35R8WUt z^#wh)2v8^h0aozV(XpD2)lf3UE7XwoB@09wkf>IyK^B_I8ah;85?s{XyP|tmv(3Iq zKJuCqDOQfM(p5#1yB95AFgLXMrTv@Ra^iliXHw^~ISUfynu(V!U(iw$@~8ol5SY|Z zYl+rOxuCg7t#QGo3AxBpS+{7}<()#TW#;^O)0^yeZ?(oZt!w+%>)3a?wzdRCOMZ^Q z@Sgl{=8xvEw~kvJI&<07-E%8l;hEFR_VzJR5bb#lQ@2dawL8Z&wY61QZI?{ZxF$^9 zxak|6Ia9jMSu}TI9efFv__f})cw>R!oq5@umV5{1k9gx%T5nTDRH%a8%nkqHzryxO zUf3=ko5Z;+3Z#Qt4r(|%{YBs^rZ6wkU$@L2Cl97RnY~5&<;jxF-RMMf>bHYgs8rClzow^(gBx zJF|h|PmAb+)*4}pNHNOVC=;lXfmA;ArKJ^z>_wS4P_8E(F6L++el!mtsiJotLDZL&koA%;!_`kmrnBt0xYObF z6~0_^F8Fe{st#1Z%ULpTX^wiV13>-COsED**bl=NE-u?zfMH z#mLsxp;cFw=9ZOu^Ylg$+P=!bxQTW572BL9cSn`o2x?(3Dsq>!l+G*MyS?}7kybl# z@BGT~F40+1Kfg*_F}-%lOn0!tH+%eQ=;k8-x3a5&v!lA|bME`x_p!T4^PK=oNJ9uA zY<82)hZHtp2}wvoNMlGs!ppq(?t5?Y=FLpzW50l~4IiaIDMri>u|-5gtcW!#(we3b z5h)_piY?-=h_PaeNU^rH@{7U$xihob1*|{c?wxz?x#ymH?z!ilduQg(On(+DsR!m| zvI_(*9-cGxqLsy^pFPrBnNyfPeaj>F;3XXkPmkZ5#$7r1XxxMtOO0s*NK6yS@RUxS zuD~B)p|oNm9PZ*i2d4-8^hPE%JqD)q@h59>`+i1p?5k&vf9;X>sozedb8W?$-;d*| z?Lg8{$DEn?c1jo>r=-G)lV3Y?{Hxf%TvU>w@P&;TzoVqy6Tx>raPIfPeTpAie~;mO8eXHHKb*@F z(Eji_kp2JX6WSl5SDb#<6Wd`wVDH4?8{K-TQQ@m+ zLS?IRY3i}F;_uj2pl75 zClU7|W+4OzMtv1JxRn2tGcyuK8(vLzQ~JZVj6V8c>NRG_K`5?Sq3f>$4Yj_BPe;0 z7vV-#dm`G2`Dwg^E;**HKnOnArk|1SS9vH0UMo}`A@3sBqv{&dc`Lmiz_>;X>^O){3BW5ywLa2(5ma&wXHpGX($ zhi!m^7}NR@xDJ($@#B0z19%aqP&F}J*hn4L0^o=C*TC|3luLdKOu1YfiG}g5-{g6jv|=T$m@&o zs6WABB9D)PS28mWAbI81ze`xF2P@cxGT8if&BNPG@*h z0G`uH#9Rl{f5dMF_LKd8|IXF6X-BkIXdOB96!v9amROKDoZOInIr(1dvee_L)9D@Q z=Q6d->Fkc|k?b378`_>|JA=0s-k*Cdza;-qVW2Qvc(K@5+*^FCeW3k`ju{=BJ09=c z)p>X4sVR%6d~xc))Tci-JZ;sq2d2F{ebe;EW^A2ta%RuW+RS4!e==*qtZlO%oZUJ5 zzS%#WvwzP0bG|hf`u16c)=+=7{@ty;pq$a zUwH3@#}_SLba>I@i{8Fy{zbbkdUA1L@w&y2U);XLTJl}omYlY9&C(-F-@UZ|(z`Bw zvwNWX$z_L@o$4`r-sqj$yS?|N<#U!_zWn&|pR8E5;`4o4-_E`#SI%E~3|FDwSbg*A z7uU>KQ(p6>Pn@{C{c`j2qnE#N#r7*+?Kk@$>VIYJv30Z74X-xZv@ zZdd27y}O>+^`qVWyASMsVE2jL-`mr@=g^+xHzaT9yWz+U@9f>V*WdfhzP^3K`%dxS zjoWTKQJPmew15Bp*Y(5tv*pF*d&{p?u$ijzeD!Gc9oa3b^5t4ztyX)t-d{gff2*;z zaoi{vYm8CjE5_*qmmM$<9BCGs1I@>qZ<$NXhs~%;)OyWcVq5kz zj&L?RuN+)*@F_R#Hr%JZJ>Iu`;qUTa3AP3=4{jZNX=u~XH->kNR7dxYK012(rp-4U zx#{(r*W7H~{Kzc>x4eC5;i17pj~sgO(2s6C_twE%A0At9_=mS0xqaI0qqjeI$DBKE zyyM|Jr`=h-^NCMS{q(DMeetgEerEJDU%ESe_ujjoxckj}`tN!A-dXpKe)tcghwy(? z%*NR~|AfK-r}ZO*zoPaihB_s25e@f0dDt^d7-KyVEO38xLj)(Z`M5(G(%@848;;-< zo;rOvg3~DbYy@Y({nZH0YO`oGg4?udbR>fDjRtx=f?v?^{k91Hy4Fo^;=3ao@s`Uj z?OLoLC7uiK($;G>Vjs|ET;r=KtcPP4t|Kf(i1XLtYb8?iK;1&T9ifi5hMSs>uR*K_ zzpdI1a9E2g(rb{~0o+yi?$kEG+f^#8Wipqp5AfLut}f~@luTXt#?Vr&Tir?Sg8sT8 zP4E9A&o)RRAxkK^3%I6ub)jW8+Tv>sq`Pn~VWZ_EsKtQ%4b^TgQvnp$S_6$cp$w-( z4f(+9cpgYX2i)!^sC1NMyn#F2!2~WAN-yyeYRq|eslI3xVu+O@&LySvwp-*h^?!q6xN^co7xCY1NIQAkw zt5ddQ{N5kc_Jq*nBOOH=uh7?UeOS9syGOfQ`>e({SCV+pK8;;iS>B$5{h{yyfvuHNWp}Ba?Hoq$WJnEwJX+GXsy@0RL(uK5$E~3SB zG2VrD2`>F!O5NDm)r0ff<@^)_zDTi(R?`~1$n7%v1a87zLH)EAbI_GEKv&Uv>;cJLv$;R(WmGz-A1?59dsvs zn(iWeewOZ`d+D=uAAOGQr(eMH1HVWQ&@a(Z?7V-FewiMkU!l*_7wBR7ReFSejUJ_6 zr^o0w@RG>i#8-oUi@r#|O;6JA&{Oog^d7VIM`WN~heV^W9s0liEAPCumoz$YSp zOh2Ljq@U7%(R+mV4A6hm8G0Y{KXz*2T6R*TL|SA7UI!_1c(F-A6a}vMicaiznkqgf zritldhM1|%7qi4{F-Oc5^TauLrsF)(CC(S~#RX!4__$aoE)d1fAg&VY#nobi*eEuMYs6-; zMQjz<~XMc8cr8F0ote5jTjvVxPECl*E3ai?a4jQ4v)kMNQO2L*T7+ z*c@Prmav2^9C1*%!V|s-#Gn`w!(v2?ikrmE;udj8+$zSzr^I1#o48%vp*@fZETg-7 zZ8yg~-Q97#EK2u8ac>kakKz?k+!w_wqj*&mua4riVcfGmj8~}mD%6vzo4V(vT7hR& z(w@}aN+T<+L225KOf``9lb)};IX;wR%kf8&fhXN$%`jV8zfm%Ew=RX>$S`bpzOb8V zSGMdynHjb1R>`okDz*bZVb^MD&!}6vnW)(Hl<(?ZBiXQ9G7E09q?>-yH(E03+IqE6 zwTCPd0Hd>UA{{u4OBq(#9?mVuWpr0S@R1aSdo@5-F%pE znYrwJJPBcX0D|>C6-mX zX}!t}p<&1=tA?NQ8oDb}m4<|dxWkH`FP&0ZuQZ2rw_2>}P+^?P#z2ylo^o^;0Sv=- zGBw*}@`56d6N*!mNXY}T;ulcQplgRMFUASggf_Emu4Pyem=BFep)+<<#l?ex zgi64KiQ5dTW{1VRiYuk%HEh2a6$`DR4Fy9eSJtf<)LqveQku+%ppqgR!hw?u0c8)H_@==0C=!gU#l&)`}#wk&{VY|jC%vU$tVDY62?7}bjLxvB#3>D8t z#%8Zlh0x+lsNA&^O*xXpX!f#^$X?NJ1g)}H3LI8kN0ef5Io+llNkcbldF5R~pOWDY zg^MVfhSh{|hCQ5d0e3%3CeV>OivF|0HycN!!4x`7(Xp&f+YfvZWG@Ih8e zjrY7V@vx%yc<_eFoFY(#Gf{)Haa+?N=X3x!RB7g6Vi+{6;A+D4yhNi~&6Z&eP@a`6 zOVi9(SgkcE)|a^ky0H{mw*q;*XA~4TZ7ODkObLy%bk-uLPQoY#9g|RjGr176fe*LK zGCkyC%r{cL?lrwMJSue7R(1_ptLUE0vE_#2Bvp6qz=2z_nkg7$P)(Pm4iAy21U|ab z8Ob@iqwL3UlAb;&bKEsCdk zTe8|T{Ctf?LM;a*M3< zf~sIPgxRAi{!E&wO0S7&BW>yqN6JwALd!05yVPhbME0)iEq5@m{ZO=g2!{QP)>;-C z6Vj$I`#$>j8{~9O4m&(V0it)&fsUsZAStf}K~go$5LTik8<{$0 zcSo;g;pUWGWO*&Y#o861Tnp^FnuU%rd+8=dP*t`mfk0+&}oBi3yY$@+znO zEXWI;wAV1CS#6Ienoyc4JVlk@USUIl;WeO97tT)d#4}u}!a+r|w(gT%B;25!Xu3m*vR~n4vTPe4vz^Khl}8|= z)6mNpk)__A)l4}z6F?W*k<4x#5}-16yR1L8T@442@X)z@CNu^v#TACdA`t||;-DUMaCk_l9+ qx{Kk=rVu5YQ9XR<GPS>b$X_& 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 z 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
V$fDV|Iw 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
qV` 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 m=X0) - data_type.GET=get_keys; - if(post_keys.length>0) - data_type.POST=post_keys; - if(cookie_keys.length>0) - data_type.COOKIE=cookie_keys; - - data[i].data_type =JSON.stringify(data_type); - - } - return data; - } - }, - }); - - - var initrowdetails = function (index, parentElement, gridElement, datarecord) { - var tabsdiv = null; - var information = null; - var notes = null; - var get_grid=null; - var post_grid=null; - var cookie_grid=null; - var headers_grid=null; - tabsdiv = $($(parentElement).children()[0]); - if (tabsdiv != null) { - information = tabsdiv.find('.information'); - get_grid = tabsdiv.find('.get_grid'); - post_grid = tabsdiv.find('.post_grid'); - cookie_grid = tabsdiv.find('.cookie_grid'); - headers_grid = tabsdiv.find('.headers_grid'); - //datarecord.client=datarecord.headers_data["User-Agent"]?get_client_info(datarecord.headers_data["User-Agent"]):"未知"; - - var get_data=new Array(); - for(key in datarecord.get_data){ - var get_data_item=new Array(); - get_data_item.push(key); - get_data_item.push(datarecord.get_data[key]); - var decoded_value=""; - if(datarecord.decoded_get_data) - decoded_value=datarecord.decoded_get_data[key]; - get_data_item.push(decoded_value); - get_data.push(get_data_item); - } - - var get_source = - { - - localdata: get_data, - datafields: [ - { name: 'key', type: 'string', map: '0'}, - { name: 'value', type: 'string', map: '1' }, - { name: 'decoded_value', type: 'string', map: '2' }, - ], - datatype: "array" - }; - var get_source_dataAdapter= new $.jqx.dataAdapter(get_source); - get_grid.jqxGrid( - { - autorowheight: true, - autorowheight: true, - columnsautoresize: true, - pageable: true, - pagermode: "simple", - scrollmode: 'deferred', - localization: getLocalization('zh'), - enablebrowserselection:true, - columnsresize: true, - height: 176, - width: '100%', - source: get_source_dataAdapter, - ready: function () { - if(get_source.localdata.length&&get_source.localdata.length>0) - get_grid.jqxGrid('autoresizecolumn', 'key'); - }, - columns: datarecord.decoded_get_data?[ - { text: '键', datafield: 'key' }, - { text: '值', datafield: 'value' }, - { text: '解码', datafield: 'decoded_value'}, - - ]:[ - { text: '键', datafield: 'key' }, - { text: '值', datafield: 'value'}, - ] - }); - - var post_data=new Array(); - for(key in datarecord.post_data){ - var post_data_item=new Array(); - post_data_item.push(key); - post_data_item.push(datarecord.post_data[key]); - - var decoded_value=""; - if(datarecord.decoded_post_data) - decoded_value=datarecord.decoded_post_data[key]; - post_data_item.push(decoded_value); - - post_data.push(post_data_item); - } - var post_source = - { - - localdata: post_data, - datafields: [ - { name: 'key', type: 'string', map: '0'}, - { name: 'value', type: 'string', map: '1' }, - { name: 'decoded_value', type: 'string', map: '2' }, - - ], - datatype: "array" - }; - - var post_source_dataAdapter= new $.jqx.dataAdapter(post_source); - post_grid.jqxGrid( - { - ready: function () { - if(post_source.localdata.length&&post_source.localdata.length>0) - post_grid.jqxGrid('autoresizecolumn', 'key'); - }, - autorowheight: true, - pageable: true, - columnsautoresize: true, - pagermode: "simple", - scrollmode: 'deferred', - localization: getLocalization('zh'), - enablebrowserselection:true, - columnsautoresize: true, - columnsresize: true, - height: 176, - width: '100%', - source: post_source_dataAdapter, - columns: datarecord.decoded_post_data?[ - { text: '键', datafield: 'key' }, - { text: '值', datafield: 'value' }, - { text: '解码', datafield: 'decoded_value'}, - - ]:[ - { text: '键', datafield: 'key' }, - { text: '值', datafield: 'value' }, - ] - }); - - var cookie_data=new Array(); - for(key in datarecord.cookie_data){ - var cookie_data_item=new Array(); - cookie_data_item.push(key); - cookie_data_item.push(datarecord.cookie_data[key]); - - var decoded_value=""; - if(datarecord.decoded_cookie_data) - decoded_value=datarecord.decoded_cookie_data[key]; - - cookie_data_item.push(decoded_value); - cookie_data.push(cookie_data_item); - } - var cookie_source = - { - localdata: cookie_data, - datafields: [ - { name: 'key', type:'string', map:'0'}, - { name: 'value', type:'string', map:'1'}, - { name: 'decoded_value', type:'string', map:'2'}, - ], - datatype: "array" - }; - var cookie_source_dataAdapter= new $.jqx.dataAdapter(cookie_source); - cookie_grid.jqxGrid( - { - ready: function () { - if(cookie_source.localdata.length&&cookie_source.localdata.length>0) - cookie_grid.jqxGrid('autoresizecolumn', 'key'); - }, - columnsautoresize: true, - autorowheight: true, - pageable: true, - pagermode: "simple", - scrollmode: 'deferred', - localization: getLocalization('zh'), - enablebrowserselection:true, - columnsautoresize: true, - columnsresize: true, - height: 176, - width: '100%', - source: cookie_source_dataAdapter, - columns: datarecord.decoded_cookie_data?[ - { text: '键', datafield: 'key' }, - { text: '值', datafield: 'value' }, - { text: '解码', datafield: 'decoded_value'}, - ]:[ - { text: '键', datafield: 'key' }, - { text: '值', datafield: 'value' }, - ] - }); - - var headers_data=new Array(); - for(key in datarecord.headers_data){ - var headers_data_item=new Array(); - headers_data_item.push(key); - headers_data_item.push(datarecord.headers_data[key]); - headers_data.push(headers_data_item); - } - var headers_source = - { - localdata: headers_data, - datafields: [ - { name: 'key', type: 'string', map: '0'}, - { name: 'value', type: 'string', map: '1' }, - - ], - datatype: "array" - }; - var headers_source_dataAdapter= new $.jqx.dataAdapter(headers_source); - headers_grid.jqxGrid( - { - ready: function () { - if(headers_source.localdata.length&&headers_source.localdata.length>0) - headers_grid.jqxGrid('autoresizecolumn', 'key'); - }, - columnsautoresize: true, - autorowheight: true, - pageable: true, - pagermode: "simple", - scrollmode: 'deferred', - localization: getLocalization('zh'), - enablebrowserselection:true, - columnsautoresize: true, - columnsresize: true, - width: '100%', - height: 176, - source: headers_source_dataAdapter, - - - columns: [ - { text: '键', datafield: 'key' }, - { text: '值', datafield: 'value'}, - ] - }); - var container = $('
') - container.appendTo($(information)); - - var leftcolumn = $('
'); - var rightcolumn = $('
'); - - container.append(leftcolumn); - container.append(rightcolumn); +//全局变量 +var urlbase = "../../api.php"; //api.php基地址 +var messageList = null; //记录缓存,用于判断是否有新的记录 +var setIntervalID = null; //定时器ID,用于网络自适应,调节timeout +var interval = 1000; //向服务器获取记录的时间间隔,同时也是ajax timeout时间 - var data_item = "
日期: " + datarecord.request_date_string + "
"; - var ip_item = "
IP: " + datarecord.user_IP + "
"; - var method_item = "
协议: " + datarecord.request_method + "
"; - var location_item = "
位置: " + datarecord.location + "
"; - $(leftcolumn).append(data_item); - $(leftcolumn).append(ip_item); - $(leftcolumn).append(method_item); - $(leftcolumn).append(location_item); +$(document).ready(function() { + var self = this; - var time_item = "
时间: " + datarecord.request_time_string + "
"; - var port_item = "
端口: " + datarecord.user_port + "
"; - var uri_item = "
访问地址: " + datarecord.request_URI + "
"; - var client_item = "
客户端: " + datarecord.client + "
"; + var source = { + datatype: "json", + datafields: [{ + name: 'user_IP' + }, + { + name: 'location' + }, + { + name: 'data_type' + }, + { + name: 'keepsession' + }, + { + name: 'user_port' + }, + { + name: 'protocol' + }, + { + name: 'request_method' + }, + { + name: 'request_URI' + }, + { + name: 'request_time' + }, + { + name: 'headers_data' + }, + { + name: 'get_data' + }, + { + name: 'post_data' + }, + { + name: 'cookie_data' + }, + { + name: 'decoded_get_data' + }, + { + name: 'decoded_post_data' + }, + { + name: 'decoded_cookie_data' + }, + { + name: 'request_date_string' + }, + { + name: 'request_time_string' + }, + { + name: 'request_date_and_time_string' + }, + { + name: 'client' + }, + + ], + id: 'request_time', + url: urlbase + "?cmd=list", + root: 'data', + }; + + var dataAdapter = new $.jqx.dataAdapter(source, { + downloadComplete: function(data, status, xhr) { + if (status == "success") { + var i = data.length; + while (i--) { + var date = new Date(data[i].request_time * 1000); + data[i].request_date_string = date.getFullYear() + "年" + (date.getMonth() + 1) + "月" + date.getDate() + "日"; + data[i].request_time_string = date.getHours() + ":" + date.getMinutes() + ":" + date.getSeconds(); + data[i].request_date_and_time_string = data[i].request_date_string + " " + data[i].request_time_string; + data[i].keepsession = (data[i].keepsession == true) ? "是": "否"; + data[i].client = data[i].headers_data["User-Agent"] ? get_client_info(data[i].headers_data["User-Agent"]) : "未知"; + + var data_type = new Object(); + var get_keys = Object.keys(data[i].get_data); + var post_keys = Object.keys(data[i].post_data); + var cookie_keys = Object.keys(data[i].cookie_data); + if (get_keys.length > 0) data_type.GET = get_keys; + if (post_keys.length > 0) data_type.POST = post_keys; + if (cookie_keys.length > 0) data_type.COOKIE = cookie_keys; + + data[i].data_type = JSON.stringify(data_type); - $(rightcolumn).append(time_item); - $(rightcolumn).append(port_item); - $(rightcolumn).append(uri_item); - $(rightcolumn).append(client_item); - - $(tabsdiv).jqxTabs({ - width:'95%', height: '100%' - }); } + return data; } - - - $("#panelGrid").jqxGrid( - { - - pageable: true, - ready: function () { - //$('#panelGrid').jqxGrid('autoresizecolumn', 'request_date_and_time_string'); - //$('#panelGrid').jqxGrid('autoresizecolumn', 'data_type'); - //$('#panelGrid').jqxGrid('autoresizecolumn', 'user_IP'); - + }, + }); + + var initrowdetails = function(index, parentElement, gridElement, datarecord) { + var tabsdiv = null; + var information = null; + var notes = null; + var get_grid = null; + var post_grid = null; + var cookie_grid = null; + var headers_grid = null; + tabsdiv = $($(parentElement).children()[0]); + if (tabsdiv != null) { + information = tabsdiv.find('.information'); + get_grid = tabsdiv.find('.get_grid'); + post_grid = tabsdiv.find('.post_grid'); + cookie_grid = tabsdiv.find('.cookie_grid'); + headers_grid = tabsdiv.find('.headers_grid'); + //datarecord.client=datarecord.headers_data["User-Agent"]?get_client_info(datarecord.headers_data["User-Agent"]):"未知"; + var get_data = new Array(); + for (key in datarecord.get_data) { + var get_data_item = new Array(); + get_data_item.push(key); + get_data_item.push(datarecord.get_data[key]); + var decoded_value = ""; + if (datarecord.decoded_get_data) decoded_value = datarecord.decoded_get_data[key]; + get_data_item.push(decoded_value); + get_data.push(get_data_item); + } + + var get_source = { + + localdata: get_data, + datafields: [{ + name: 'key', + type: 'string', + map: '0' }, - pagerrenderer: function() { - - var container = $("
"); - var deleteButton = $("
删除
"); - var clearButton = $("
清空
"); - var searchButton = $("
查询
"); - container.append(deleteButton); - container.append(clearButton); - container.append(searchButton); - - deleteButton.jqxButton({width: 65,height: 20}); - clearButton.jqxButton({width: 65,height: 20}); - searchButton.jqxButton({width: 65,height: 20}); - - // delete selected row. - deleteButton.click(function(event) { - var selectedrowindex = $("#panelGrid").jqxGrid('getselectedrowindex'); - - if(selectedrowindex>=0) - { - $('#deleteConfirmWindow').jqxWindow('open'); - $("#deleteConfirmWindow").addClass('animated'); - } - - }); - - // reload grid data. - clearButton.click(function(event) { - $('#clearConfirmWindow').jqxWindow('open'); - $("#clearConfirmWindow").addClass('animated'); - //$("#panelGrid").jqxGrid({ - // source: getAdapter() - //}); - }); - // search for a record. - searchButton.click(function(event) { - //var offset = $("#panelGrid").offset(); - $("#searchWindow").jqxWindow('open'); - $("#searchWindow").addClass('animated'); - //$("#jqxwindow").jqxWindow('move', offset.left + 30, offset.top + 30); - }); - - var pageElementsContainer = $("
"); - var datainfo = $("#panelGrid").jqxGrid('getdatainformation'); - var paginginfo = datainfo.paginginformation; - var leftButton = $("
"); - leftButton.find('div').addClass('jqx-icon-arrow-left'); - leftButton.width(36); - leftButton.jqxButton({ - theme: 'energyblue' - }); - var rightButton = $("
"); - rightButton.find('div').addClass('jqx-icon-arrow-right'); - rightButton.width(36); - rightButton.jqxButton({ - theme: 'energyblue' - }); - - var label = $("
"); - label.text("1-" + paginginfo.pagesize + ' of ' + datainfo.rowscount); - leftButton.appendTo(pageElementsContainer); - rightButton.appendTo(pageElementsContainer); - label.appendTo(pageElementsContainer); - pageElementsContainer.appendTo(container); - self.label = label; - // update buttons states. - var handleStates = function(event, button, className, add) { - button.on(event, - function() { - if (add == true) { - button.find('div').addClass(className); - } else button.find('div').removeClass(className); - }); - } - rightButton.click(function() { - $("#panelGrid").jqxGrid('gotonextpage'); - }); - leftButton.click(function() { - $("#panelGrid").jqxGrid('gotoprevpage'); - }); - return container; - }, - - //selectionmode: 'multiplerowsextended', - scrollmode: 'logical', - sortable:true, - pagesize:25, - localization: getLocalization('zh'), - width: '100%', - height:$("#nav-section").height()-$("#dash-logo").outerHeight(true)-3, - source: dataAdapter, - enablebrowserselection:true, + { + name: 'value', + type: 'string', + map: '1' + }, + { + name: 'decoded_value', + type: 'string', + map: '2' + }, + ], + datatype: "array" + }; + var get_source_dataAdapter = new $.jqx.dataAdapter(get_source); + get_grid.jqxGrid({ + autorowheight: true, + autorowheight: true, + columnsautoresize: true, + pageable: true, + pagermode: "simple", + scrollmode: 'deferred', + localization: getLocalization('zh'), + enablebrowserselection: true, columnsresize: true, - rowdetails: true, - rowdetailstemplate: { rowdetails: $("#xss-detail-template").html(), rowdetailsheight: 222 }, - initrowdetails: initrowdetails, - - columns: [ - { text: '时间', datafield: 'request_date_and_time_string',width:160 }, - { text: 'IP', datafield: 'user_IP'}, - { text: '来源', datafield: 'location' }, - { text: '客户端', datafield: 'client' }, - { text: '请求', datafield: 'request_method' ,width:60}, - { text: '携带数据', datafield: 'data_type'}, - { text: '保持连接', datafield: 'keepsession',width:60,cellsalign: 'center'} + height: 176, + width: '100%', + source: get_source_dataAdapter, + ready: function() { + if (get_source.localdata.length && get_source.localdata.length > 0) get_grid.jqxGrid('autoresizecolumn', 'key'); + }, + columns: datarecord.decoded_get_data ? [{ + text: '键', + datafield: 'key' + }, + { + text: '值', + datafield: 'value' + }, + { + text: '解码', + datafield: 'decoded_value' + }, + + ] : [{ + text: '键', + datafield: 'key' + }, + { + text: '值', + datafield: 'value' + }, ] }); - - $("#panelGrid").on('pagechanged', function () { - var datainfo = $("#panelGrid").jqxGrid('getdatainformation'); - var paginginfo = datainfo.paginginformation; - self.label.text(1 + paginginfo.pagenum * paginginfo.pagesize + "-" + Math.min(datainfo.rowscount, (paginginfo.pagenum + 1) * paginginfo.pagesize) + ' of ' + datainfo.rowscount); - }); - - - /*所有窗口初始化*/ - //删除记录确认窗口 - $('#deleteConfirmWindow').jqxWindow({ - height: 100, width: 270, - resizable: false, isModal: true, modalOpacity: 0.3, - okButton: $('#deleteConfirm_ok'), cancelButton: $('#deleteConfirm_cancel'), - autoOpen: false, - }); - $('#deleteConfirm_ok').jqxButton({ width: '65px' }); - $('#deleteConfirm_cancel').jqxButton({ width: '65px' }); - - $('#deleteConfirmWindow').on('close', function (event) { - if (event.args.dialogResult.OK) { - var selectedrowindex = $("#panelGrid").jqxGrid('getselectedrowindex'); - var id = $("#panelGrid").jqxGrid('getrowid', selectedrowindex); - - $.ajax({ - url: urlbase+"?cmd=del&id="+id, - dataType: "json", - timeout : interval, - success: function(data) - { - if(data==true) - $("#panelGrid").jqxGrid('deleterow', id); - else - { - $('#failedWindow').jqxWindow('open'); - $("#failedWindow").addClass('animated'); - } - - }, - complete : function(XMLHttpRequest,status){ -     if(status=='timeout') -     { - $('#failedWindow').jqxWindow('open'); - $("#failedWindow").addClass('animated'); - } -   } - }); - - } - }); - - //清空记录确认窗口 - $('#clearConfirmWindow').jqxWindow({ - height: 100, width: 270, - resizable: false, isModal: true, modalOpacity: 0.3, - okButton: $('#clearConfirm_ok'), cancelButton: $('#clearConfirm_cancel'), - autoOpen: false, - }); - - $('#clearConfirm_ok').jqxButton({ width: '65px' }); - $('#clearConfirm_cancel').jqxButton({ width: '65px' }); - - $('#clearConfirmWindow').on('close', function (event) { - if (event.args.dialogResult.OK) { - - $.ajax({ - url: urlbase+"?cmd=clear", - dataType: "json", - timeout : interval, - success: function(data) - { - if(data==true) - $('#panelGrid').jqxGrid('clear'); - else - { - $('#failedWindow').jqxWindow('open'); - $("#failedWindow").addClass('animated'); - } - - }, - complete : function(XMLHttpRequest,status){ -     if(status=='timeout') -     { - $('#failedWindow').jqxWindow('open'); - $("#failedWindow").addClass('animated'); - } -   } - }); - - } - }); - - $('#failedWindow').jqxWindow({ - height: 100, width: 270, - resizable: false, isModal: true, modalOpacity: 0.3, - okButton: $('#failed_ok'), - autoOpen: false, - }); - $('#failed_ok').jqxButton({ width: '65px' }); - - //查询窗口 - $("#searchWindow").jqxWindow({ resizable: false, autoOpen: false, width: 210, height: 180 }); - // create find and clear buttons. - $("#findButton").jqxButton({ width: 70}); - $("#clearButton").jqxButton({ width: 70}); - // find records that match a criteria. - $("#dropdownlist").jqxDropDownList({ autoDropDownHeight: true, selectedIndex: 0, width: 200, height: 23, - source: [ - '时间', 'IP', '来源', '客户端','请求', '携带数据', '保持连接' + + var post_data = new Array(); + for (key in datarecord.post_data) { + var post_data_item = new Array(); + post_data_item.push(key); + post_data_item.push(datarecord.post_data[key]); + + var decoded_value = ""; + if (datarecord.decoded_post_data) decoded_value = datarecord.decoded_post_data[key]; + post_data_item.push(decoded_value); + + post_data.push(post_data_item); + } + var post_source = { + + localdata: post_data, + datafields: [{ + name: 'key', + type: 'string', + map: '0' + }, + { + name: 'value', + type: 'string', + map: '1' + }, + { + name: 'decoded_value', + type: 'string', + map: '2' + }, + + ], + datatype: "array" + }; + + var post_source_dataAdapter = new $.jqx.dataAdapter(post_source); + post_grid.jqxGrid({ + ready: function() { + if (post_source.localdata.length && post_source.localdata.length > 0) post_grid.jqxGrid('autoresizecolumn', 'key'); + }, + autorowheight: true, + pageable: true, + columnsautoresize: true, + pagermode: "simple", + scrollmode: 'deferred', + localization: getLocalization('zh'), + enablebrowserselection: true, + columnsautoresize: true, + columnsresize: true, + height: 176, + width: '100%', + source: post_source_dataAdapter, + columns: datarecord.decoded_post_data ? [{ + text: '键', + datafield: 'key' + }, + { + text: '值', + datafield: 'value' + }, + { + text: '解码', + datafield: 'decoded_value' + }, + + ] : [{ + text: '键', + datafield: 'key' + }, + { + text: '值', + datafield: 'value' + }, ] }); - - $("#findButton").click(function () { - $("#panelGrid").jqxGrid('clearfilters'); - var searchColumnIndex = $("#dropdownlist").jqxDropDownList('selectedIndex'); - var datafield = ""; - switch (searchColumnIndex) { - case 0: - datafield = "request_date_and_time_string"; - break; - case 1: - datafield = "user_IP"; - break; - case 2: - datafield = "location"; - break; - case 3: - datafield = "client"; - break; - case 4: - datafield = "request_method"; - break; - case 5: - datafield = "data_type"; - break; - case 6: - datafield = "keepsession"; - break; + + var cookie_data = new Array(); + for (key in datarecord.cookie_data) { + var cookie_data_item = new Array(); + cookie_data_item.push(key); + cookie_data_item.push(datarecord.cookie_data[key]); + + var decoded_value = ""; + if (datarecord.decoded_cookie_data) decoded_value = datarecord.decoded_cookie_data[key]; + + cookie_data_item.push(decoded_value); + cookie_data.push(cookie_data_item); + } + var cookie_source = { + localdata: cookie_data, + datafields: [{ + name: 'key', + type: 'string', + map: '0' + }, + { + name: 'value', + type: 'string', + map: '1' + }, + { + name: 'decoded_value', + type: 'string', + map: '2' + }, + ], + datatype: "array" + }; + var cookie_source_dataAdapter = new $.jqx.dataAdapter(cookie_source); + cookie_grid.jqxGrid({ + ready: function() { + if (cookie_source.localdata.length && cookie_source.localdata.length > 0) cookie_grid.jqxGrid('autoresizecolumn', 'key'); + }, + columnsautoresize: true, + autorowheight: true, + pageable: true, + pagermode: "simple", + scrollmode: 'deferred', + localization: getLocalization('zh'), + enablebrowserselection: true, + columnsautoresize: true, + columnsresize: true, + height: 176, + width: '100%', + source: cookie_source_dataAdapter, + columns: datarecord.decoded_cookie_data ? [{ + text: '键', + datafield: 'key' + }, + { + text: '值', + datafield: 'value' + }, + { + text: '解码', + datafield: 'decoded_value' + }, + ] : [{ + text: '键', + datafield: 'key' + }, + { + text: '值', + datafield: 'value' + }, + ] + }); + + var headers_data = new Array(); + for (key in datarecord.headers_data) { + var headers_data_item = new Array(); + headers_data_item.push(key); + headers_data_item.push(datarecord.headers_data[key]); + headers_data.push(headers_data_item); + } + var headers_source = { + localdata: headers_data, + datafields: [{ + name: 'key', + type: 'string', + map: '0' + }, + { + name: 'value', + type: 'string', + map: '1' + }, + + ], + datatype: "array" + }; + var headers_source_dataAdapter = new $.jqx.dataAdapter(headers_source); + headers_grid.jqxGrid({ + ready: function() { + if (headers_source.localdata.length && headers_source.localdata.length > 0) headers_grid.jqxGrid('autoresizecolumn', 'key'); + }, + columnsautoresize: true, + autorowheight: true, + pageable: true, + pagermode: "simple", + scrollmode: 'deferred', + localization: getLocalization('zh'), + enablebrowserselection: true, + columnsautoresize: true, + columnsresize: true, + width: '100%', + height: 176, + source: headers_source_dataAdapter, + + columns: [{ + text: '键', + datafield: 'key' + }, + { + text: '值', + datafield: 'value' + }, + ] + }); + var container = $('
'); + container.appendTo($(information)); + var leftcolumn = $('
'); + var rightcolumn = $('
'); + + container.append(leftcolumn); + container.append(rightcolumn); + + var data_item = "
日期: " + datarecord.request_date_string + "
"; + var ip_item = "
IP: " + datarecord.user_IP + "
"; + var method_item = "
协议: " + datarecord.request_method + "
"; + var location_item = "
位置: " + datarecord.location + "
"; + $(leftcolumn).append(data_item); + $(leftcolumn).append(ip_item); + $(leftcolumn).append(method_item); + $(leftcolumn).append(location_item); + + var time_item = "
时间: " + datarecord.request_time_string + "
"; + var port_item = "
端口: " + datarecord.user_port + "
"; + var uri_item = "
访问地址: " + datarecord.request_URI + "
"; + var client_item = "
客户端: " + datarecord.client + "
"; + + $(rightcolumn).append(time_item); + $(rightcolumn).append(port_item); + $(rightcolumn).append(uri_item); + $(rightcolumn).append(client_item); + + $(tabsdiv).jqxTabs({ + width: '95%', + height: '100%' + }); + } + } + + $("#panelGrid").jqxGrid({ + + pageable: true, + ready: function() { + //$('#panelGrid').jqxGrid('autoresizecolumn', 'request_date_and_time_string'); + //$('#panelGrid').jqxGrid('autoresizecolumn', 'data_type'); + //$('#panelGrid').jqxGrid('autoresizecolumn', 'user_IP'); + }, + pagerrenderer: function() { + + var container = $("
"); + var deleteButton = $("
删除
"); + var clearButton = $("
清空
"); + var searchButton = $("
查询
"); + container.append(deleteButton); + container.append(clearButton); + container.append(searchButton); + + deleteButton.jqxButton({ + width: 65, + height: 20 + }); + clearButton.jqxButton({ + width: 65, + height: 20 + }); + searchButton.jqxButton({ + width: 65, + height: 20 + }); + + // delete selected row. + deleteButton.click(function(event) { + var selectedrowindex = $("#panelGrid").jqxGrid('getselectedrowindex'); + + if (selectedrowindex >= 0) { + $('#deleteConfirmWindow').jqxWindow('open'); + $("#deleteConfirmWindow").addClass('animated'); } - var searchText = $("#inputField").val(); - var filtergroup = new $.jqx.filter(); - var filter_or_operator = 1; - var filtervalue = searchText; - var filtercondition = 'contains'; - var filter = filtergroup.createfilter('stringfilter', filtervalue, filtercondition); - filtergroup.addfilter(filter_or_operator, filter); - $("#panelGrid").jqxGrid('addfilter', datafield, filtergroup); - // apply the filters. - $("#panelGrid").jqxGrid('applyfilters'); }); - - // clear filters. - $("#clearButton").click(function () { - $("#panelGrid").jqxGrid('clearfilters'); + + // reload grid data. + clearButton.click(function(event) { + $('#clearConfirmWindow').jqxWindow('open'); + $("#clearConfirmWindow").addClass('animated'); + //$("#panelGrid").jqxGrid({ + // source: getAdapter() + //}); }); - - - //主面板大小自适应 - $(window).resize(function() { - $('#panelGrid').jqxGrid({ height: $("#nav-section").height()-$("#dash-logo").outerHeight(true)-3 }); - //$('#panelGrid').jqxGrid('autoresizecolumn', 'request_date_and_time_string'); - //$('#panelGrid').jqxGrid('autoresizecolumn', 'data_type'); - //$('#panelGrid').jqxGrid('autoresizecolumn', 'user_IP'); - }); - - //定时判断是否有新的记录 - checkNewMessages(); - setIntervalID=setInterval(checkNewMessages, interval); - + // search for a record. + searchButton.click(function(event) { + //var offset = $("#panelGrid").offset(); + $("#searchWindow").jqxWindow('open'); + $("#searchWindow").addClass('animated'); + //$("#jqxwindow").jqxWindow('move', offset.left + 30, offset.top + 30); + }); + + var pageElementsContainer = $("
"); + var datainfo = $("#panelGrid").jqxGrid('getdatainformation'); + var paginginfo = datainfo.paginginformation; + var leftButton = $("
"); + leftButton.find('div').addClass('jqx-icon-arrow-left'); + leftButton.width(36); + leftButton.jqxButton({ + theme: 'energyblue' + }); + var rightButton = $("
"); + rightButton.find('div').addClass('jqx-icon-arrow-right'); + rightButton.width(36); + rightButton.jqxButton({ + theme: 'energyblue' + }); + + var label = $("
"); + label.text("1-" + paginginfo.pagesize + ' of ' + datainfo.rowscount); + leftButton.appendTo(pageElementsContainer); + rightButton.appendTo(pageElementsContainer); + label.appendTo(pageElementsContainer); + pageElementsContainer.appendTo(container); + self.label = label; + // update buttons states. + var handleStates = function(event, button, className, add) { + button.on(event, + function() { + if (add == true) { + button.find('div').addClass(className); + } else button.find('div').removeClass(className); + }); + } + rightButton.click(function() { + $("#panelGrid").jqxGrid('gotonextpage'); + }); + leftButton.click(function() { + $("#panelGrid").jqxGrid('gotoprevpage'); + }); + return container; + }, + + //selectionmode: 'multiplerowsextended', + scrollmode: 'logical', + sortable: true, + pagesize: 25, + localization: getLocalization('zh'), + width: '100%', + height: $("#nav-section").height() - $("#dash-logo").outerHeight(true) - 3, + source: dataAdapter, + enablebrowserselection: true, + columnsresize: true, + rowdetails: true, + rowdetailstemplate: { + rowdetails: $("#xss-detail-template").html(), + rowdetailsheight: 222 + }, + initrowdetails: initrowdetails, + + columns: [{ + text: '时间', + datafield: 'request_date_and_time_string', + width: 160 + }, + { + text: 'IP', + datafield: 'user_IP' + }, + { + text: '来源', + datafield: 'location' + }, + { + text: '客户端', + datafield: 'client' + }, + { + text: '请求', + datafield: 'request_method', + width: 60 + }, + { + text: '携带数据', + datafield: 'data_type' + }, + { + text: '保持连接', + datafield: 'keepsession', + width: 60, + cellsalign: 'center' + }] + }); + + $("#panelGrid").on('pagechanged', + function() { + var datainfo = $("#panelGrid").jqxGrid('getdatainformation'); + var paginginfo = datainfo.paginginformation; + self.label.text(1 + paginginfo.pagenum * paginginfo.pagesize + "-" + Math.min(datainfo.rowscount, (paginginfo.pagenum + 1) * paginginfo.pagesize) + ' of ' + datainfo.rowscount); + }); + + /*所有窗口初始化*/ + //删除记录确认窗口 + $('#deleteConfirmWindow').jqxWindow({ + height: 100, + width: 270, + resizable: false, + isModal: true, + modalOpacity: 0.3, + okButton: $('#deleteConfirm_ok'), + cancelButton: $('#deleteConfirm_cancel'), + autoOpen: false, + }); + $('#deleteConfirm_ok').jqxButton({ + width: '65px' + }); + $('#deleteConfirm_cancel').jqxButton({ + width: '65px' + }); + + $('#deleteConfirmWindow').on('close', + function(event) { + if (event.args.dialogResult.OK) { + var selectedrowindex = $("#panelGrid").jqxGrid('getselectedrowindex'); + var id = $("#panelGrid").jqxGrid('getrowid', selectedrowindex); + + $.ajax({ + url: urlbase + "?cmd=del&id=" + id, + dataType: "json", + timeout: interval, + success: function(data) { + if (data == true) $("#panelGrid").jqxGrid('deleterow', id); + else { + $('#failedWindow').jqxWindow('open'); + $("#failedWindow").addClass('animated'); + } + + }, + complete: function(XMLHttpRequest, status) {     + if (status == 'timeout')    { + $('#failedWindow').jqxWindow('open'); + $("#failedWindow").addClass('animated'); + } else if (status == "parsererror") window.location.href = "login.php";   + } + }); + + } + }); + + //清空记录确认窗口 + $('#clearConfirmWindow').jqxWindow({ + height: 100, + width: 270, + resizable: false, + isModal: true, + modalOpacity: 0.3, + okButton: $('#clearConfirm_ok'), + cancelButton: $('#clearConfirm_cancel'), + autoOpen: false, + }); + + $('#clearConfirm_ok').jqxButton({ + width: '65px' + }); + $('#clearConfirm_cancel').jqxButton({ + width: '65px' + }); + + $('#clearConfirmWindow').on('close', + function(event) { + if (event.args.dialogResult.OK) { + + $.ajax({ + url: urlbase + "?cmd=clear", + dataType: "json", + timeout: interval, + success: function(data) { + if (data == true) $('#panelGrid').jqxGrid('clear'); + else { + $('#failedWindow').jqxWindow('open'); + $("#failedWindow").addClass('animated'); + } + + }, + complete: function(XMLHttpRequest, status) {     + if (status == 'timeout')    { + $('#failedWindow').jqxWindow('open'); + $("#failedWindow").addClass('animated'); + } else if (status == "parsererror") window.location.href = "login.php";   + } + }); + + } + }); + + $('#failedWindow').jqxWindow({ + height: 100, + width: 270, + resizable: false, + isModal: true, + modalOpacity: 0.3, + okButton: $('#failed_ok'), + autoOpen: false, + }); + $('#failed_ok').jqxButton({ + width: '65px' + }); + + //查询窗口 + $("#searchWindow").jqxWindow({ + resizable: false, + autoOpen: false, + width: 210, + height: 180 + }); + // create find and clear buttons. + $("#findButton").jqxButton({ + width: 70 + }); + $("#clearButton").jqxButton({ + width: 70 + }); + // find records that match a criteria. + $("#dropdownlist").jqxDropDownList({ + autoDropDownHeight: true, + selectedIndex: 0, + width: 200, + height: 23, + source: ['时间', 'IP', '来源', '客户端', '请求', '携带数据', '保持连接'] + }); + + $("#findButton").click(function() { + $("#panelGrid").jqxGrid('clearfilters'); + var searchColumnIndex = $("#dropdownlist").jqxDropDownList('selectedIndex'); + var datafield = ""; + switch (searchColumnIndex) { + case 0: + datafield = "request_date_and_time_string"; + break; + case 1: + datafield = "user_IP"; + break; + case 2: + datafield = "location"; + break; + case 3: + datafield = "client"; + break; + case 4: + datafield = "request_method"; + break; + case 5: + datafield = "data_type"; + break; + case 6: + datafield = "keepsession"; + break; + } + + var searchText = $("#inputField").val(); + var filtergroup = new $.jqx.filter(); + var filter_or_operator = 1; + var filtervalue = searchText; + var filtercondition = 'contains'; + var filter = filtergroup.createfilter('stringfilter', filtervalue, filtercondition); + filtergroup.addfilter(filter_or_operator, filter); + $("#panelGrid").jqxGrid('addfilter', datafield, filtergroup); + // apply the filters. + $("#panelGrid").jqxGrid('applyfilters'); + }); + + // clear filters. + $("#clearButton").click(function() { + $("#panelGrid").jqxGrid('clearfilters'); + }); + + //主面板大小自适应 + $(window).resize(function() { + $('#panelGrid').jqxGrid({ + height: $("#nav-section").height() - $("#dash-logo").outerHeight(true) - 3 }); - - //获取新列表 - function checkNewMessages(){ - $.ajax({ - url: urlbase+"?cmd=simplelist", - dataType: "json", - timeout : interval, - success: function(data) - { - if(messageList) - { - var sum=0; - var lastedID=null; - - for(var id in data) { - if(messageList.indexOf(data[id])<0) - { - sum++; - lastedID=data[id]; - } - } - if(sum>0) - showNotification(sum,lastedID,interval); - - } - messageList=data; - }, - complete : function(XMLHttpRequest,status){ -     if(status=='timeout'){ -       interval*=2; - if(setIntervalID) - { - clearInterval(setIntervalID); - if(interval<10000) - setIntervalID=setInterval(checkNewMessages, interval); - } -     } -   } - }); - } - - //根据useragent判断操作系统,浏览器版本 - function get_client_info(agent){ - var browser = "未知浏览器"; - var browser_version = ""; - if (agent.indexOf("Firefox/") > 0) { - var bv=agent.match(/Firefox\/([^;)]+)+/i); - browser = "Firefox"; - browser_version = bv[1]; //获取火狐浏览器的版本号 - } else if (agent.indexOf("Maxthon") > 0) { - var bv=agent.match(/Maxthon\/([\d\.]+)/); - browser = "傲游"; - browser_version = bv[1]; - } else if (agent.indexOf("MSIE") > 0) { - var bv=agent.match(/MSIE\s+([^;)]+)+/i); - browser = "IE"; - browser_version = bv[1]; //获取IE的版本号 - } else if (agent.indexOf("OPR") > 0) { - var bv=agent.match(/OPR\/([\d\.]+)/); - browser = "Opera"; - browser_version = bv[1]; - } else if(agent.indexOf("Edge") > 0) { - //win10 Edge浏览器 添加了chrome内核标记 在判断Chrome之前匹配 - var bv=agent.match(/Edge\/([\d\.]+)/); - browser = "Edge"; - browser_version = bv[1]; - } else if (agent.indexOf("Chrome") > 0) { - var bv=agent.match(/Chrome\/([\d\.]+)/); - - browser = "Chrome"; - browser_version = bv[1]; //获取google chrome的版本号 - } else if(agent.indexOf('rv:')>0 && agent.indexOf('Gecko')>0){ - var bv=agent.match(/rv:([\d\.]+)/); - browser = "IE"; - browser_version = bv[1]; - } - browser_version=browser_version.match(/^[0-9\.]+$/)?browser_version:"未知"; - - $os = '未知操作系统'; - if (agent.match(/win/i) && (agent.indexOf("95") > 0)) - $os = 'Windows 95'; - else if (agent.match(/win 9x/i) && (agent.indexOf("4.90") > 0)) - $os = 'Windows ME'; - else if (agent.match(/win/i) && agent.match(/98/i)) - $os = 'Windows 98'; - else if (agent.match(/win/i) && agent.match(/nt 6.0/i)) - $os = 'Windows Vista'; - else if (agent.match(/win/i) && agent.match(/nt 6.1/i)) - $os = 'Windows 7'; - else if (agent.match(/win/i) && agent.match(/nt 6.2/i)) - $os = 'Windows 8'; - else if(agent.match(/win/i) && agent.match(/nt 10.0/i)) - $os = 'Windows 10'; - else if (agent.match(/win/i) && agent.match(/nt 5.1/i)) - $os = 'Windows XP'; - else if (agent.match(/win/i) && agent.match(/nt 5/i)) - $os = 'Windows 2000'; - else if (agent.match(/win/i) && agent.match(/nt/i)) - $os = 'Windows NT'; - else if (agent.match(/win/i) && agent.match(/32/i)) - $os = 'Windows 32'; - else if (agent.match(/linux/i)) - $os = 'Linux'; - else if (agent.match(/unix/i)) - $os = 'Unix'; - else if (agent.match(/sun/i) && agent.match(/os/i)) - $os = 'SunOS'; - else if (agent.match(/ibm/i) && agent.match(/os/i)) - $os = 'IBM OS/2'; - else if (agent.match(/Mac/i) && agent.match(/PC/i)) - $os = 'Macintosh'; - else if (agent.match(/PowerPC/i)) - $os = 'PowerPC'; - else if (agent.match(/AIX/i)) - $os = 'AIX'; - else if (agent.match(/HPUX/i)) - $os = 'HPUX'; - else if (agent.match(/NetBSD/i)) - $os = 'NetBSD'; - else if (agent.match(/BSD/i)) - $os = 'BSD'; - else if (agent.match(/OSF1/i)) - $os = 'OSF1'; - else if (agent.match(/IRIX/i)) - $os = 'IRIX'; - else if (agent.match(/FreeBSD/i)) - $os = 'FreeBSD'; - else if (agent.match(/teleport/i)) - $os = 'teleport'; - else if (agent.match(/flashget/i)) - $os = 'flashget'; - else if (agent.match(/webzip/i)) - $os = 'webzip'; - else if (agent.match(/offline/i)) - $os = 'offline'; - - return $os+' '+browser+'('+browser_version+')'; - } \ No newline at end of file + //$('#panelGrid').jqxGrid('autoresizecolumn', 'request_date_and_time_string'); + //$('#panelGrid').jqxGrid('autoresizecolumn', 'data_type'); + //$('#panelGrid').jqxGrid('autoresizecolumn', 'user_IP'); + }); + + //定时判断是否有新的记录 + checkNewMessages(); + setIntervalID = setInterval(checkNewMessages, interval); + +}); + +//获取新列表 +function checkNewMessages() { + $.ajax({ + url: urlbase + "?cmd=simplelist", + dataType: "json", + timeout: interval, + success: function(data) { + if (messageList) { + var sum = 0; + var lastedID = null; + + for (var id in data) { + if (messageList.indexOf(data[id]) < 0) { + sum++; + lastedID = data[id]; + } + } + if (sum > 0) showNotification(sum, lastedID, interval); + + } + messageList = data; + }, + complete: function(XMLHttpRequest, status) {     + if (status == 'timeout') {     interval *= 2; + if (setIntervalID) { + clearInterval(setIntervalID); + if (interval < 10000) setIntervalID = setInterval(checkNewMessages, interval); + }     + } else if (status == "parsererror") window.location.href = "login.php";   + } + }); +} + +//根据useragent判断操作系统,浏览器版本 +function get_client_info(agent) { + var browser = "未知浏览器"; + var browser_version = ""; + if (agent.indexOf("Firefox/") > 0) { + var bv = agent.match(/Firefox\/([^;)]+)+/i); + browser = "Firefox"; + browser_version = bv[1]; //获取火狐浏览器的版本号 + } else if (agent.indexOf("Maxthon") > 0) { + var bv = agent.match(/Maxthon\/([\d\.]+)/); + browser = "傲游"; + browser_version = bv[1]; + } else if (agent.indexOf("MSIE") > 0) { + var bv = agent.match(/MSIE\s+([^;)]+)+/i); + browser = "IE"; + browser_version = bv[1]; //获取IE的版本号 + } else if (agent.indexOf("OPR") > 0) { + var bv = agent.match(/OPR\/([\d\.]+)/); + browser = "Opera"; + browser_version = bv[1]; + } else if (agent.indexOf("Edge") > 0) { + //win10 Edge浏览器 添加了chrome内核标记 在判断Chrome之前匹配 + var bv = agent.match(/Edge\/([\d\.]+)/); + browser = "Edge"; + browser_version = bv[1]; + } else if (agent.indexOf("Chrome") > 0) { + var bv = agent.match(/Chrome\/([\d\.]+)/); + + browser = "Chrome"; + browser_version = bv[1]; //获取google chrome的版本号 + } else if (agent.indexOf('rv:') > 0 && agent.indexOf('Gecko') > 0) { + var bv = agent.match(/rv:([\d\.]+)/); + browser = "IE"; + browser_version = bv[1]; + } + browser_version = browser_version.match(/^[0-9\.]+$/) ? browser_version: "未知"; + + $os = '未知操作系统'; + if (agent.match(/win/i) && (agent.indexOf("95") > 0)) $os = 'Windows 95'; + else if (agent.match(/win 9x/i) && (agent.indexOf("4.90") > 0)) $os = 'Windows ME'; + else if (agent.match(/win/i) && agent.match(/98/i)) $os = 'Windows 98'; + else if (agent.match(/win/i) && agent.match(/nt 6.0/i)) $os = 'Windows Vista'; + else if (agent.match(/win/i) && agent.match(/nt 6.1/i)) $os = 'Windows 7'; + else if (agent.match(/win/i) && agent.match(/nt 6.2/i)) $os = 'Windows 8'; + else if (agent.match(/win/i) && agent.match(/nt 10.0/i)) $os = 'Windows 10'; + else if (agent.match(/win/i) && agent.match(/nt 5.1/i)) $os = 'Windows XP'; + else if (agent.match(/win/i) && agent.match(/nt 5/i)) $os = 'Windows 2000'; + else if (agent.match(/win/i) && agent.match(/nt/i)) $os = 'Windows NT'; + else if (agent.match(/win/i) && agent.match(/32/i)) $os = 'Windows 32'; + else if (agent.match(/linux/i)) $os = 'Linux'; + else if (agent.match(/unix/i)) $os = 'Unix'; + else if (agent.match(/sun/i) && agent.match(/os/i)) $os = 'SunOS'; + else if (agent.match(/ibm/i) && agent.match(/os/i)) $os = 'IBM OS/2'; + else if (agent.match(/Mac/i) && agent.match(/PC/i)) $os = 'Macintosh'; + else if (agent.match(/PowerPC/i)) $os = 'PowerPC'; + else if (agent.match(/AIX/i)) $os = 'AIX'; + else if (agent.match(/HPUX/i)) $os = 'HPUX'; + else if (agent.match(/NetBSD/i)) $os = 'NetBSD'; + else if (agent.match(/BSD/i)) $os = 'BSD'; + else if (agent.match(/OSF1/i)) $os = 'OSF1'; + else if (agent.match(/IRIX/i)) $os = 'IRIX'; + else if (agent.match(/FreeBSD/i)) $os = 'FreeBSD'; + else if (agent.match(/teleport/i)) $os = 'teleport'; + else if (agent.match(/flashget/i)) $os = 'flashget'; + else if (agent.match(/webzip/i)) $os = 'webzip'; + else if (agent.match(/offline/i)) $os = 'offline'; + + return $os + ' ' + browser + '(' + browser_version + ')'; +} \ No newline at end of file diff --git a/static/js/login.js b/static/js/login.js new file mode 100644 index 0000000..6fddde8 --- /dev/null +++ b/static/js/login.js @@ -0,0 +1,188 @@ +$(document).ready(function() { + + $("#submit").click(function(event) { + if($("#password").val()=="") + return true; + var salt="!KTMdg#^^I6Z!deIVR#SgpAI6qTN7oVl"; + $("#password").val(md5(salt + $("#password").val() + salt)); + $("#password").val(md5(salt + $("#password").val() + salt)); + $("#password").val(md5(salt + $("#password").val() + salt)); + $("#password").val(md5(salt + $("#password").val() + $("#firesunCheck").val() + salt)); + $("#password").val(md5(salt + $("#password").val() + $("#firesunCheck").val() + salt)); + $("#password").val(md5(salt + $("#password").val() + $("#firesunCheck").val() + salt)); + }); + $("#note").click(function(event) { + alert("神仙难救"); + }); +}); + +//md5 +function md5cycle(x, k) { + var a = x[0], + b = x[1], + c = x[2], + d = x[3]; + + a = ff(a, b, c, d, k[0], 7, -680876936); + d = ff(d, a, b, c, k[1], 12, -389564586); + c = ff(c, d, a, b, k[2], 17, 606105819); + b = ff(b, c, d, a, k[3], 22, -1044525330); + a = ff(a, b, c, d, k[4], 7, -176418897); + d = ff(d, a, b, c, k[5], 12, 1200080426); + c = ff(c, d, a, b, k[6], 17, -1473231341); + b = ff(b, c, d, a, k[7], 22, -45705983); + a = ff(a, b, c, d, k[8], 7, 1770035416); + d = ff(d, a, b, c, k[9], 12, -1958414417); + c = ff(c, d, a, b, k[10], 17, -42063); + b = ff(b, c, d, a, k[11], 22, -1990404162); + a = ff(a, b, c, d, k[12], 7, 1804603682); + d = ff(d, a, b, c, k[13], 12, -40341101); + c = ff(c, d, a, b, k[14], 17, -1502002290); + b = ff(b, c, d, a, k[15], 22, 1236535329); + + a = gg(a, b, c, d, k[1], 5, -165796510); + d = gg(d, a, b, c, k[6], 9, -1069501632); + c = gg(c, d, a, b, k[11], 14, 643717713); + b = gg(b, c, d, a, k[0], 20, -373897302); + a = gg(a, b, c, d, k[5], 5, -701558691); + d = gg(d, a, b, c, k[10], 9, 38016083); + c = gg(c, d, a, b, k[15], 14, -660478335); + b = gg(b, c, d, a, k[4], 20, -405537848); + a = gg(a, b, c, d, k[9], 5, 568446438); + d = gg(d, a, b, c, k[14], 9, -1019803690); + c = gg(c, d, a, b, k[3], 14, -187363961); + b = gg(b, c, d, a, k[8], 20, 1163531501); + a = gg(a, b, c, d, k[13], 5, -1444681467); + d = gg(d, a, b, c, k[2], 9, -51403784); + c = gg(c, d, a, b, k[7], 14, 1735328473); + b = gg(b, c, d, a, k[12], 20, -1926607734); + + a = hh(a, b, c, d, k[5], 4, -378558); + d = hh(d, a, b, c, k[8], 11, -2022574463); + c = hh(c, d, a, b, k[11], 16, 1839030562); + b = hh(b, c, d, a, k[14], 23, -35309556); + a = hh(a, b, c, d, k[1], 4, -1530992060); + d = hh(d, a, b, c, k[4], 11, 1272893353); + c = hh(c, d, a, b, k[7], 16, -155497632); + b = hh(b, c, d, a, k[10], 23, -1094730640); + a = hh(a, b, c, d, k[13], 4, 681279174); + d = hh(d, a, b, c, k[0], 11, -358537222); + c = hh(c, d, a, b, k[3], 16, -722521979); + b = hh(b, c, d, a, k[6], 23, 76029189); + a = hh(a, b, c, d, k[9], 4, -640364487); + d = hh(d, a, b, c, k[12], 11, -421815835); + c = hh(c, d, a, b, k[15], 16, 530742520); + b = hh(b, c, d, a, k[2], 23, -995338651); + + a = ii(a, b, c, d, k[0], 6, -198630844); + d = ii(d, a, b, c, k[7], 10, 1126891415); + c = ii(c, d, a, b, k[14], 15, -1416354905); + b = ii(b, c, d, a, k[5], 21, -57434055); + a = ii(a, b, c, d, k[12], 6, 1700485571); + d = ii(d, a, b, c, k[3], 10, -1894986606); + c = ii(c, d, a, b, k[10], 15, -1051523); + b = ii(b, c, d, a, k[1], 21, -2054922799); + a = ii(a, b, c, d, k[8], 6, 1873313359); + d = ii(d, a, b, c, k[15], 10, -30611744); + c = ii(c, d, a, b, k[6], 15, -1560198380); + b = ii(b, c, d, a, k[13], 21, 1309151649); + a = ii(a, b, c, d, k[4], 6, -145523070); + d = ii(d, a, b, c, k[11], 10, -1120210379); + c = ii(c, d, a, b, k[2], 15, 718787259); + b = ii(b, c, d, a, k[9], 21, -343485551); + + x[0] = add32(a, x[0]); + x[1] = add32(b, x[1]); + x[2] = add32(c, x[2]); + x[3] = add32(d, x[3]); + +} + +function cmn(q, a, b, x, s, t) { + a = add32(add32(a, q), add32(x, t)); + return add32((a << s) | (a >>> (32 - s)), b); +} + +function ff(a, b, c, d, x, s, t) { + return cmn((b & c) | ((~b) & d), a, b, x, s, t); +} + +function gg(a, b, c, d, x, s, t) { + return cmn((b & d) | (c & (~d)), a, b, x, s, t); +} + +function hh(a, b, c, d, x, s, t) { + return cmn(b ^ c ^ d, a, b, x, s, t); +} + +function ii(a, b, c, d, x, s, t) { + return cmn(c ^ (b | (~d)), a, b, x, s, t); +} + +function md51(s) { + txt = ""; + var n = s.length, + state = [1732584193, -271733879, -1732584194, 271733878], + i; + for (i = 64; i <= s.length; i += 64) { + md5cycle(state, md5blk(s.substring(i - 64, i))); + } + s = s.substring(i - 64); + var tail = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]; + for (i = 0; i < s.length; i++) tail[i >> 2] |= s.charCodeAt(i) << ((i % 4) << 3); + tail[i >> 2] |= 0x80 << ((i % 4) << 3); + if (i > 55) { + md5cycle(state, tail); + for (i = 0; i < 16; i++) tail[i] = 0; + } + tail[14] = n * 8; + md5cycle(state, tail); + return state; +} + +function md5blk(s) { + /* I figured global was faster. */ + var md5blks = [], + i; + /* Andy King said do it this way. */ + for (i = 0; i < 64; i += 4) { + md5blks[i >> 2] = s.charCodeAt(i) + (s.charCodeAt(i + 1) << 8) + (s.charCodeAt(i + 2) << 16) + (s.charCodeAt(i + 3) << 24); + } + return md5blks; +} + +var hex_chr = "0123456789abcdef".split(""); + +function rhex(n) { + var s = "", + j = 0; + for (; j < 4; j++) s += hex_chr[(n >> (j * 8 + 4)) & 0x0F] + hex_chr[(n >> (j * 8)) & 0x0F]; + return s; +} + +function hex(x) { + for (var i = 0; i < x.length; i++) x[i] = rhex(x[i]); + return x.join(""); +} + +function md5(s) { + return hex(md51(s)); +} + +/* this function is much faster, + so if possible we use it. Some IEs + are the only ones I know of that + need the idiotic second function, + generated by an if clause. */ + +function add32(a, b) { + return (a + b) & 0xFFFFFFFF; +} + +if (md5("hello") != "5d41402abc4b2a76b9719d911017c592") { + function add32(x, y) { + var lsw = (x & 0xFFFF) + (y & 0xFFFF), + msw = (x >> 16) + (y >> 16) + (lsw >> 16); + return (msw << 16) | (lsw & 0xFFFF); + } +} \ No newline at end of file diff --git a/util.php b/util.php deleted file mode 100644 index c66009c..0000000 --- a/util.php +++ /dev/null @@ -1,89 +0,0 @@ - $value) { - if (substr($name, 0, 5) == 'HTTP_') { - $headers[str_replace(' ', '-', ucwords(strtolower(str_replace('_', ' ', substr($name, 5)))))] = $value; - } - } - return $headers; - } -} - -function tryBase64Decode($arr) -{ - if(isset($arr)&&count($arr)>0) - { - $isChanged=0; - - $new_arr = array(); - foreach($arr as $k => $v) - { - if(isBase64Formatted($v)) - { - $v=base64_decode($v); - $isChanged=1; - } - $new_arr[$k]=$v; - } - - if($isChanged) - return $new_arr; - else - return false; - } - else - return false; -} - -function isBase64Formatted($str) -{ - if(preg_match('/^[A-Za-z0-9+\/=]+$/',$str)) - { - $decoded_str=base64_decode($str); - if ($str == base64_encode($decoded_str)) - { - if(preg_match('/^[A-Za-z0-9\x00-\x80~!@#$%&_+-=:";\'<>,\/"\[\]\\\^\.\|\?\*\+\(\)\{\}\s]+$/',$decoded_str)) - { - return true; - } - } - } - return false; -} - -function encrypt($info,$encryptPass) -{ - return AESEncryptCtr($info,$encryptPass); -} - -function decrypt($info,$encryptPass) -{ - return AESDecryptCtr($info,$encryptPass); -} - -?> \ No newline at end of file