htdocs: removed files, they have been moved to the repo cppcheck-htdocs

This commit is contained in:
Daniel Marjamäki 2014-06-21 18:00:32 +02:00
parent 717b9f970f
commit 3e8cf81dbf
32 changed files with 0 additions and 22241 deletions

View File

@ -1,674 +0,0 @@
# Apache Server Configs v2.2.0 | MIT License
# https://github.com/h5bp/server-configs-apache
# (!) Using `.htaccess` files slows down Apache, therefore, if you have access
# to the main server config file (usually called `httpd.conf`), you should add
# this logic there: http://httpd.apache.org/docs/current/howto/htaccess.html.
# ##############################################################################
# # CROSS-ORIGIN RESOURCE SHARING (CORS) #
# ##############################################################################
# ------------------------------------------------------------------------------
# | Cross-domain AJAX requests |
# ------------------------------------------------------------------------------
# Allow cross-origin AJAX requests.
# http://code.google.com/p/html5security/wiki/CrossOriginRequestSecurity
# http://enable-cors.org/
# <IfModule mod_headers.c>
# Header set Access-Control-Allow-Origin "*"
# </IfModule>
# ------------------------------------------------------------------------------
# | CORS-enabled images |
# ------------------------------------------------------------------------------
# Send the CORS header for images when browsers request it.
# https://developer.mozilla.org/en-US/docs/HTML/CORS_Enabled_Image
# http://blog.chromium.org/2011/07/using-cross-domain-images-in-webgl-and.html
# http://hacks.mozilla.org/2011/11/using-cors-to-load-webgl-textures-from-cross-domain-images/
<IfModule mod_setenvif.c>
<IfModule mod_headers.c>
<FilesMatch "\.(cur|gif|ico|jpe?g|png|svgz?|webp)$">
SetEnvIf Origin ":" IS_CORS
Header set Access-Control-Allow-Origin "*" env=IS_CORS
</FilesMatch>
</IfModule>
</IfModule>
# ------------------------------------------------------------------------------
# | Web fonts access |
# ------------------------------------------------------------------------------
# Allow access to web fonts from all domains.
<IfModule mod_headers.c>
<FilesMatch "\.(eot|otf|tt[cf]|woff)$">
Header set Access-Control-Allow-Origin "*"
</FilesMatch>
</IfModule>
# ##############################################################################
# # ERRORS #
# ##############################################################################
# ------------------------------------------------------------------------------
# | 404 error prevention for non-existing redirected folders |
# ------------------------------------------------------------------------------
# Prevent Apache from returning a 404 error as the result of a rewrite
# when the directory with the same name does not exist.
# http://httpd.apache.org/docs/current/content-negotiation.html#multiviews
# http://www.webmasterworld.com/apache/3808792.htm
Options -MultiViews
# ------------------------------------------------------------------------------
# | Custom error messages / pages |
# ------------------------------------------------------------------------------
# Customize what Apache returns to the client in case of an error.
# http://httpd.apache.org/docs/current/mod/core.html#errordocument
ErrorDocument 404 /404.html
# ##############################################################################
# # INTERNET EXPLORER #
# ##############################################################################
# ------------------------------------------------------------------------------
# | Better website experience |
# ------------------------------------------------------------------------------
# Force Internet Explorer to render pages in the highest available mode
# in the various cases when it may not.
# http://hsivonen.iki.fi/doctype/ie-mode.pdf
<IfModule mod_headers.c>
Header set X-UA-Compatible "IE=edge"
# `mod_headers` cannot match based on the content-type, however, this
# header should be send only for HTML pages and not for the other resources
<FilesMatch "\.(appcache|atom|crx|css|cur|eot|f4[abpv]|flv|gif|htc|ico|jpe?g|js|json(ld)?|m4[av]|manifest|map|mp4|oex|og[agv]|opus|otf|pdf|png|rdf|rss|safariextz|svgz?|swf|tt[cf]|vcf|vtt|webapp|web[mp]|woff|xml|xpi)$">
Header unset X-UA-Compatible
</FilesMatch>
</IfModule>
# ------------------------------------------------------------------------------
# | Cookie setting from iframes |
# ------------------------------------------------------------------------------
# Allow cookies to be set from iframes in Internet Explorer.
# http://msdn.microsoft.com/en-us/library/ms537343.aspx
# http://www.w3.org/TR/2000/CR-P3P-20001215/
# <IfModule mod_headers.c>
# Header set P3P "policyref=\"/w3c/p3p.xml\", CP=\"IDC DSP COR ADM DEVi TAIi PSA PSD IVAi IVDi CONi HIS OUR IND CNT\""
# </IfModule>
# ##############################################################################
# # MIME TYPES AND ENCODING #
# ##############################################################################
# ------------------------------------------------------------------------------
# | Proper MIME types for all files |
# ------------------------------------------------------------------------------
<IfModule mod_mime.c>
# Audio
AddType audio/mp4 m4a f4a f4b
AddType audio/ogg oga ogg opus
# Data interchange
AddType application/json json map
AddType application/ld+json jsonld
# JavaScript
# Normalize to standard type.
# http://tools.ietf.org/html/rfc4329#section-7.2
AddType application/javascript js
# Video
AddType video/mp4 f4v f4p m4v mp4
AddType video/ogg ogv
AddType video/webm webm
AddType video/x-flv flv
# Web fonts
AddType application/font-woff woff
AddType application/vnd.ms-fontobject eot
# Browsers usually ignore the font MIME types and simply sniff the bytes
# to figure out the font type.
# http://mimesniff.spec.whatwg.org/#matching-a-font-type-pattern
# Chrome however, shows a warning if any other MIME types are used for
# the following fonts.
AddType application/x-font-ttf ttc ttf
AddType font/opentype otf
# Make SVGZ fonts work on the iPad.
# https://twitter.com/FontSquirrel/status/14855840545
AddType image/svg+xml svgz
AddEncoding gzip svgz
# Other
AddType application/octet-stream safariextz
AddType application/x-chrome-extension crx
AddType application/x-opera-extension oex
AddType application/x-web-app-manifest+json webapp
AddType application/x-xpinstall xpi
AddType application/xml atom rdf rss xml
AddType image/webp webp
AddType image/x-icon cur
AddType text/cache-manifest appcache manifest
AddType text/vtt vtt
AddType text/x-component htc
AddType text/x-vcard vcf
</IfModule>
# ------------------------------------------------------------------------------
# | UTF-8 encoding |
# ------------------------------------------------------------------------------
# Use UTF-8 encoding for anything served as `text/html` or `text/plain`.
AddDefaultCharset utf-8
# Force UTF-8 for certain file formats.
<IfModule mod_mime.c>
AddCharset utf-8 .atom .css .js .json .jsonld .rss .vtt .webapp .xml
</IfModule>
# ##############################################################################
# # URL REWRITES #
# ##############################################################################
# ------------------------------------------------------------------------------
# | Rewrite engine |
# ------------------------------------------------------------------------------
# Turn on the rewrite engine and enable the `FollowSymLinks` option (this is
# necessary in order for the following directives to work).
# If your web host doesn't allow the `FollowSymlinks` option, you may need to
# comment it out and use `Options +SymLinksIfOwnerMatch`, but be aware of the
# performance impact.
# http://httpd.apache.org/docs/current/misc/perf-tuning.html#symlinks
# Also, some cloud hosting services require `RewriteBase` to be set.
# http://www.rackspace.com/knowledge_center/frequently-asked-question/why-is-mod-rewrite-not-working-on-my-site
<IfModule mod_rewrite.c>
Options +FollowSymlinks
# Options +SymLinksIfOwnerMatch
RewriteEngine On
# RewriteBase /
# Redirect "democlient.html" to the new place...
Redirect permanent /democlient.html http://cppcheck.sourceforge.net/demo/
# Redirect "devinfo.html" to the new place...
Redirect permanent /devinfo.html http://cppcheck.sourceforge.net/devinfo/
# Redirect doxyoutput, coverage- and cpd report to the new place...
Redirect permanent /doxyoutput/ http://cppcheck.sourceforge.net/devinfo/doxyoutput/
Redirect permanent /doxygen-errors.txt http://cppcheck.sourceforge.net/devinfo/doxygen-errors.txt
Redirect permanent /coverage_report/ http://cppcheck.sourceforge.net/devinfo/coverage_report/
Redirect permanent /cpd.txt http://cppcheck.sourceforge.net/devinfo/cpd.txt
</IfModule>
# ------------------------------------------------------------------------------
# | Suppressing / Forcing the `www.` at the beginning of URLs |
# ------------------------------------------------------------------------------
# The same content should never be available under two different URLs,
# especially not with and without `www.` at the beginning. This can cause
# SEO problems (duplicate content), and therefore, you should choose one
# of the alternatives and redirect the other one.
# By default `Option 1` (no `www.`) is activated.
# http://no-www.org/faq.php?q=class_b
# If you would prefer to use `Option 2`, just comment out all the lines
# from `Option 1` and uncomment the ones from `Option 2`.
# IMPORTANT: NEVER USE BOTH RULES AT THE SAME TIME!
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
# Option 1: rewrite www.example.com → example.com
<IfModule mod_rewrite.c>
RewriteCond %{HTTPS} !=on
RewriteCond %{HTTP_HOST} ^www\.(.+)$ [NC]
RewriteRule ^ http://%1%{REQUEST_URI} [R=301,L]
</IfModule>
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
# Option 2: rewrite example.com → www.example.com
# Be aware that the following might not be a good idea if you use "real"
# subdomains for certain parts of your website.
# <IfModule mod_rewrite.c>
# RewriteCond %{HTTPS} !=on
# RewriteCond %{HTTP_HOST} !^www\. [NC]
# RewriteCond %{SERVER_ADDR} !=127.0.0.1
# RewriteCond %{SERVER_ADDR} !=::1
# RewriteRule ^ http://www.%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
# </IfModule>
# ##############################################################################
# # SECURITY #
# ##############################################################################
# ------------------------------------------------------------------------------
# | Clickjacking |
# ------------------------------------------------------------------------------
# Protect website against clickjacking.
# The example below sends the `X-Frame-Options` response header with the value
# `DENY`, informing browsers not to display the web page content in any frame.
# This might not be the best setting for everyone. You should read about the
# other two possible values for `X-Frame-Options`: `SAMEORIGIN` & `ALLOW-FROM`.
# http://tools.ietf.org/html/rfc7034#section-2.1
# Keep in mind that while you could send the `X-Frame-Options` header for all
# of your sites pages, this has the potential downside that it forbids even
# non-malicious framing of your content (e.g.: when users visit your site using
# a Google Image Search results page).
# Nonetheless, you should ensure that you send the `X-Frame-Options` header for
# all pages that allow a user to make a state changing operation (e.g: pages
# that contain one-click purchase links, checkout or bank-transfer confirmation
# pages, pages that make permanent configuration changes, etc.).
# Sending the `X-Frame-Options` header can also protect your website against
# more than just clickjacking attacks: https://cure53.de/xfo-clickjacking.pdf.
# http://tools.ietf.org/html/rfc7034
# http://blogs.msdn.com/b/ieinternals/archive/2010/03/30/combating-clickjacking-with-x-frame-options.aspx
# https://www.owasp.org/index.php/Clickjacking
# <IfModule mod_headers.c>
# Header set X-Frame-Options "DENY"
# <FilesMatch "\.(appcache|atom|crx|css|cur|eot|f4[abpv]|flv|gif|htc|ico|jpe?g|js|json(ld)?|m4[av]|manifest|map|mp4|oex|og[agv]|opus|otf|pdf|png|rdf|rss|safariextz|svgz?|swf|tt[cf]|vcf|vtt|webapp|web[mp]|woff|xml|xpi)$">
# Header unset X-Frame-Options
# </FilesMatch>
# </IfModule>
# ------------------------------------------------------------------------------
# | Content Security Policy (CSP) |
# ------------------------------------------------------------------------------
# Mitigate the risk of cross-site scripting and other content-injection attacks.
# This can be done by setting a `Content Security Policy` which whitelists
# trusted sources of content for your website.
# The example header below allows ONLY scripts that are loaded from the current
# site's origin (no inline scripts, no CDN, etc). This almost certainly won't
# work as-is for your site!
# For more details on how to craft a reasonable policy for your site, read:
# http://html5rocks.com/en/tutorials/security/content-security-policy (or the
# specification: http://w3.org/TR/CSP). Also, to make things easier, you can
# use an online CSP header generator such as: http://cspisawesome.com/.
# <IfModule mod_headers.c>
# Header set Content-Security-Policy "script-src 'self'; object-src 'self'"
# <FilesMatch "\.(appcache|atom|crx|css|cur|eot|f4[abpv]|flv|gif|htc|ico|jpe?g|js|json(ld)?|m4[av]|manifest|map|mp4|oex|og[agv]|opus|otf|pdf|png|rdf|rss|safariextz|svgz?|swf|tt[cf]|vcf|vtt|webapp|web[mp]|woff|xml|xpi)$">
# Header unset Content-Security-Policy
# </FilesMatch>
# </IfModule>
# ------------------------------------------------------------------------------
# | File access |
# ------------------------------------------------------------------------------
# Block access to directories without a default document.
# You should leave the following uncommented, as you shouldn't allow anyone to
# surf through every directory on your server (which may includes rather private
# places such as the CMS's directories).
<IfModule mod_autoindex.c>
Options -Indexes
</IfModule>
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
# Block access to hidden files and directories.
# This includes directories used by version control systems such as Git and SVN.
<IfModule mod_rewrite.c>
RewriteCond %{SCRIPT_FILENAME} -d [OR]
RewriteCond %{SCRIPT_FILENAME} -f
RewriteRule "(^|/)\." - [F]
</IfModule>
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
# Block access to files that can expose sensitive information.
# By default, block access to backup and source files that may be left by some
# text editors and can pose a security risk when anyone has access to them.
# http://feross.org/cmsploit/
# IMPORTANT: Update the `<FilesMatch>` regular expression from below to include
# any files that might end up on your production server and can expose sensitive
# information about your website. These files may include: configuration files,
# files that contain metadata about the project (e.g.: project dependencies),
# build scripts, etc..
<FilesMatch "(^#.*#|\.(bak|config|dist|fla|in[ci]|log|psd|sh|sql|sw[op])|~)$">
# Apache < 2.3
<IfModule !mod_authz_core.c>
Order allow,deny
Deny from all
Satisfy All
</IfModule>
# Apache ≥ 2.3
<IfModule mod_authz_core.c>
Require all denied
</IfModule>
</FilesMatch>
# ------------------------------------------------------------------------------
# | Reducing MIME-type security risks |
# ------------------------------------------------------------------------------
# Prevent some browsers from MIME-sniffing the response.
# This reduces exposure to drive-by download attacks and should be enable
# especially if the web server is serving user uploaded content, content
# that could potentially be treated by the browser as executable.
# http://blogs.msdn.com/b/ie/archive/2008/07/02/ie8-security-part-v-comprehensive-protection.aspx
# http://msdn.microsoft.com/en-us/library/ie/gg622941.aspx
# http://mimesniff.spec.whatwg.org/
# <IfModule mod_headers.c>
# Header set X-Content-Type-Options "nosniff"
# </IfModule>
# ------------------------------------------------------------------------------
# | Reflected Cross-Site Scripting (XSS) attacks |
# ------------------------------------------------------------------------------
# (1) Try to re-enable the Cross-Site Scripting (XSS) filter built into the
# most recent web browsers.
#
# The filter is usually enabled by default, but in some cases it may be
# disabled by the user. However, in Internet Explorer for example, it can
# be re-enabled just by sending the `X-XSS-Protection` header with the
# value of `1`.
#
# (2) Prevent web browsers from rendering the web page if a potential reflected
# (a.k.a non-persistent) XSS attack is detected by the filter.
#
# By default, if the filter is enabled and browsers detect a reflected
# XSS attack, they will attempt to block the attack by making the smallest
# possible modifications to the returned web page.
#
# Unfortunately, in some browsers (e.g.: Internet Explorer), this default
# behavior may allow the XSS filter to be exploited, thereby, it's better
# to tell browsers to prevent the rendering of the page altogether, instead
# of attempting to modify it.
#
# http://hackademix.net/2009/11/21/ies-xss-filter-creates-xss-vulnerabilities
#
# IMPORTANT: Do not rely on the XSS filter to prevent XSS attacks! Ensure that
# you are taking all possible measures to prevent XSS attacks, the most obvious
# being: validating and sanitizing your site's inputs.
#
# http://blogs.msdn.com/b/ie/archive/2008/07/02/ie8-security-part-iv-the-xss-filter.aspx
# http://blogs.msdn.com/b/ieinternals/archive/2011/01/31/controlling-the-internet-explorer-xss-filter-with-the-x-xss-protection-http-header.aspx
# https://www.owasp.org/index.php/Cross-site_Scripting_%28XSS%29
# <IfModule mod_headers.c>
# # (1) (2)
# Header set X-XSS-Protection "1; mode=block"
# <FilesMatch "\.(appcache|atom|crx|css|cur|eot|f4[abpv]|flv|gif|htc|ico|jpe?g|js|json(ld)?|m4[av]|manifest|map|mp4|oex|og[agv]|opus|otf|pdf|png|rdf|rss|safariextz|svgz?|swf|tt[cf]|vcf|vtt|webapp|web[mp]|woff|xml|xpi)$">
# Header unset X-XSS-Protection
# </FilesMatch>
# </IfModule>
# ------------------------------------------------------------------------------
# | Secure Sockets Layer (SSL) |
# ------------------------------------------------------------------------------
# Rewrite secure requests properly in order to prevent SSL certificate warnings.
# E.g.: prevent `https://www.example.com` when your certificate only allows
# `https://secure.example.com`.
# <IfModule mod_rewrite.c>
# RewriteCond %{SERVER_PORT} !^443
# RewriteRule ^ https://example-domain-please-change-me.com%{REQUEST_URI} [R=301,L]
# </IfModule>
# ------------------------------------------------------------------------------
# | HTTP Strict Transport Security (HSTS) |
# ------------------------------------------------------------------------------
# Force client-side SSL redirection.
# If a user types `example.com` in his browser, the above rule will redirect
# him to the secure version of the site. That still leaves a window of
# opportunity (the initial HTTP connection) for an attacker to downgrade or
# redirect the request.
# The following header ensures that browser will ONLY connect to your server
# via HTTPS, regardless of what the users type in the address bar.
# http://tools.ietf.org/html/draft-ietf-websec-strict-transport-sec-14#section-6.1
# http://www.html5rocks.com/en/tutorials/security/transport-layer-security/
# IMPORTANT: Remove the `includeSubDomains` optional directive if the subdomains
# are not using HTTPS.
# <IfModule mod_headers.c>
# Header set Strict-Transport-Security "max-age=16070400; includeSubDomains"
# </IfModule>
# ------------------------------------------------------------------------------
# | Server software information |
# ------------------------------------------------------------------------------
# Avoid displaying the exact Apache version number, the description of the
# generic OS-type and the information about Apache's compiled-in modules.
# ADD THIS DIRECTIVE IN THE `httpd.conf` AS IT WILL NOT WORK IN THE `.htaccess`!
# ServerTokens Prod
# ##############################################################################
# # WEB PERFORMANCE #
# ##############################################################################
# ------------------------------------------------------------------------------
# | Compression |
# ------------------------------------------------------------------------------
<IfModule mod_deflate.c>
# Force compression for mangled headers.
# http://developer.yahoo.com/blogs/ydn/posts/2010/12/pushing-beyond-gzipping
<IfModule mod_setenvif.c>
<IfModule mod_headers.c>
SetEnvIfNoCase ^(Accept-EncodXng|X-cept-Encoding|X{15}|~{15}|-{15})$ ^((gzip|deflate)\s*,?\s*)+|[X~-]{4,13}$ HAVE_Accept-Encoding
RequestHeader append Accept-Encoding "gzip,deflate" env=HAVE_Accept-Encoding
</IfModule>
</IfModule>
# Compress all output labeled with one of the following MIME-types
# (for Apache versions below 2.3.7, you don't need to enable `mod_filter`
# and can remove the `<IfModule mod_filter.c>` and `</IfModule>` lines
# as `AddOutputFilterByType` is still in the core directives).
# <IfModule mod_filter.c>
AddOutputFilterByType DEFLATE application/atom+xml \
application/javascript \
application/json \
application/ld+json \
application/rss+xml \
application/vnd.ms-fontobject \
application/x-font-ttf \
application/x-web-app-manifest+json \
application/xhtml+xml \
application/xml \
font/opentype \
image/svg+xml \
image/x-icon \
text/css \
text/html \
text/plain \
text/x-component \
text/xml
# </IfModule>
</IfModule>
# ------------------------------------------------------------------------------
# | Content transformations |
# ------------------------------------------------------------------------------
# Prevent mobile network providers from modifying the website's content.
# http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.9.5.
# <IfModule mod_headers.c>
# Header set Cache-Control "no-transform"
# </IfModule>
# ------------------------------------------------------------------------------
# | ETags |
# ------------------------------------------------------------------------------
# Remove `ETags` as resources are sent with far-future expires headers.
# http://developer.yahoo.com/performance/rules.html#etags.
# `FileETag None` doesn't work in all cases.
<IfModule mod_headers.c>
Header unset ETag
</IfModule>
FileETag None
# ------------------------------------------------------------------------------
# | Expires headers |
# ------------------------------------------------------------------------------
# The following expires headers are set pretty far in the future. If you
# don't control versioning with filename-based cache busting, consider
# lowering the cache time for resources such as style sheets and JavaScript
# files to something like one week.
<IfModule mod_expires.c>
ExpiresActive on
ExpiresDefault "access plus 1 month"
# CSS
ExpiresByType text/css "access plus 1 week"
# Data interchange
ExpiresByType application/json "access plus 0 seconds"
ExpiresByType application/ld+json "access plus 0 seconds"
ExpiresByType application/xml "access plus 0 seconds"
ExpiresByType text/xml "access plus 0 seconds"
# Favicon (cannot be renamed!) and cursor images
ExpiresByType image/x-icon "access plus 1 week"
# HTML components (HTCs)
ExpiresByType text/x-component "access plus 1 month"
# HTML
ExpiresByType text/html "access plus 0 seconds"
# JavaScript
ExpiresByType application/javascript "access plus 1 week"
# Manifest files
ExpiresByType application/x-web-app-manifest+json "access plus 0 seconds"
ExpiresByType text/cache-manifest "access plus 0 seconds"
# Media
ExpiresByType audio/ogg "access plus 1 month"
ExpiresByType image/gif "access plus 1 month"
ExpiresByType image/jpeg "access plus 1 month"
ExpiresByType image/png "access plus 1 month"
ExpiresByType video/mp4 "access plus 1 month"
ExpiresByType video/ogg "access plus 1 month"
ExpiresByType video/webm "access plus 1 month"
# Web feeds
ExpiresByType application/atom+xml "access plus 1 hour"
ExpiresByType application/rss+xml "access plus 1 hour"
# Web fonts
ExpiresByType application/font-woff "access plus 1 month"
ExpiresByType application/vnd.ms-fontobject "access plus 1 month"
ExpiresByType application/x-font-ttf "access plus 1 month"
ExpiresByType font/opentype "access plus 1 month"
ExpiresByType image/svg+xml "access plus 1 month"
</IfModule>
# ------------------------------------------------------------------------------
# | Filename-based cache busting |
# ------------------------------------------------------------------------------
# If you're not using a build process to manage your filename version revving,
# you might want to consider enabling the following directives to route all
# requests such as `/css/style.12345.css` to `/css/style.css`.
# To understand why this is important and a better idea than `*.css?v231`, read:
# http://stevesouders.com/blog/2008/08/23/revving-filenames-dont-use-querystring
# <IfModule mod_rewrite.c>
# RewriteCond %{REQUEST_FILENAME} !-f
# RewriteRule ^(.+)\.(\d+)\.(js|css|png|jpe?g|gif)$ $1.$3 [L]
# </IfModule>
# ------------------------------------------------------------------------------
# | File concatenation |
# ------------------------------------------------------------------------------
# Allow concatenation from within specific style sheets and JavaScript files.
# e.g.:
#
# If you have the following content in a file
#
# <!--#include file="libs/jquery.js" -->
# <!--#include file="plugins/jquery.timer.js" -->
#
# Apache will replace it with the content from the specified files.
# <IfModule mod_include.c>
# <FilesMatch "\.combined\.js$">
# Options +Includes
# AddOutputFilterByType INCLUDES application/javascript application/json
# SetOutputFilter INCLUDES
# </FilesMatch>
# <FilesMatch "\.combined\.css$">
# Options +Includes
# AddOutputFilterByType INCLUDES text/css
# SetOutputFilter INCLUDES
# </FilesMatch>
# </IfModule>

View File

@ -1,59 +0,0 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>Cppcheck - Page Not Found</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<style>
* {
line-height: 1.5;
margin: 0;
}
html {
color: #888;
font-family: sans-serif;
text-align: center;
}
body {
left: 50%;
margin: -43px 0 0 -150px;
position: absolute;
top: 50%;
width: 300px;
}
h1 {
color: #555;
font-size: 2em;
font-weight: 400;
}
p {
line-height: 1.2;
}
@media only screen and (max-width: 270px) {
body {
margin: 10px auto;
position: static;
width: 95%;
}
h1 {
font-size: 1.5em;
}
}
</style>
</head>
<body>
<h1>Page Not Found</h1>
<p>Sorry, but the page you were trying to view does not exist.</p>
</body>
</html>
<!-- IE needs 512+ bytes: http://blogs.msdn.com/b/ieinternals/archive/2010/08/19/http-error-pages-in-internet-explorer.aspx -->

View File

@ -1,9 +0,0 @@
Getting started
---------------
* Install [node.js](http://nodejs.org/download/)
* Install the node.js dependencies: `npm install`
* Run `node make` or `node make minify`
You can run `npm run lint` to run [JSHint](https://github.com/jshint/jshint)
and [csslint](https://github.com/stubbornella/csslint) for our files.

View File

@ -1,10 +0,0 @@
<script type="text/javascript">
(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
})(window,document,'script','//www.google-analytics.com/analytics.js','ga');
ga('create', 'UA-42882943-1', 'sourceforge.net');
ga('set', 'anonymizeIp', true);
ga('send', 'pageview');
</script>

View File

@ -1,102 +0,0 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Online Demo - Cppcheck</title>
<link rel="stylesheet" type="text/css" href="//fonts.googleapis.com/css?family=Orbitron&amp;text=Cppcheck" />
<link rel="stylesheet" type="text/css" href="/site/css/pack.css" />
<link rel="shortcut icon" type="image/x-icon" href="/favicon.ico" />
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js" type="text/javascript"></script>
<script type="text/javascript">
//<![CDATA[
window.jQuery || document.write('<script type="text/javascript" src="/site/js/jquery-1.11.0.min.js"><\/script>')
//]]>
</script>
<script src="/site/js/pack.js" type="text/javascript"></script>
<script type="text/javascript">
function checkCodeLength() {
if (document.f.code.value.length > 1024) {
alert("code length exceeded");
return false;
}
return true;
}
</script>
</head>
<body>
<div id="header">
<div class="wrap">
<h1><a href="/">Cppcheck</a></h1>
<p>A tool for static C/C++ code analysis</p>
</div> <!-- .wrap -->
</div> <!-- #header -->
<div id="tabs">
<div class="wrap">
<ul>
<li><a href="/">Home</a></li>
<li><a href="http://sourceforge.net/apps/mediawiki/cppcheck/">Wiki</a></li>
<li><a href="http://sourceforge.net/apps/phpbb/cppcheck/">Forum</a></li>
<li><a href="http://5.150.254.56:8001/trac-cppcheck/">Issues</a></li>
<li><a href="/devinfo/" title="Developer Information">Developer Info</a></li>
<li><strong><a href="/demo/">Online Demo</a></strong></li>
<li><a href="http://sourceforge.net/projects/cppcheck/">Project page</a></li>
</ul>
</div> <!-- .wrap -->
</div> <!-- #tabs -->
<div id="content">
<div class="wrap">
<h2>Online Demo</h2>
<form action="/cgi-bin/democlient-test.cgi" name="f" onsubmit="return checkCodeLength();" method="get" target="_blank">
<p><label for="code">Enter code:</label> <span class="maxChars">(max 1024 characters)</span><br />
<textarea id="code" name="code" rows="20" cols="80">
void f()
{
char *p;
*p = 0;
}
</textarea><br />
<input type="submit" value="Check" />
<label><input type="checkbox" name="xml" value="1" />XML output</label></p>
</form>
<h3>Examples</h3>
<p>This code can be copied and pasted in the edit box above.</p>
<h4>NULL pointers</h4>
<pre class="cpp geshicode"><span class="kw4">void</span> f1<span class="br0">(</span><span class="kw4">struct</span> fred_t <span class="sy2">*</span>p<span class="br0">)</span>
<span class="br0">{</span>
<span class="co1">// dereference p and then check if it's NULL</span>
<span class="kw4">int</span> x <span class="sy1">=</span> p<span class="sy2">-</span><span class="sy1">&gt;</span>x<span class="sy4">;</span>
<span class="kw1">if</span> <span class="br0">(</span>p<span class="br0">)</span>
do_something<span class="br0">(</span>x<span class="br0">)</span><span class="sy4">;</span>
<span class="br0">}</span>
<span class="kw4">void</span> f2<span class="br0">(</span><span class="br0">)</span>
<span class="br0">{</span>
<span class="kw4">const</span> <span class="kw4">char</span> <span class="sy2">*</span>p <span class="sy1">=</span> <span class="kw2">NULL</span><span class="sy4">;</span>
<span class="kw1">for</span> <span class="br0">(</span><span class="kw4">int</span> i <span class="sy1">=</span> <span class="nu0">0</span><span class="sy4">;</span> str<span class="br0">[</span>i<span class="br0">]</span> <span class="sy3">!</span><span class="sy1">=</span> <span class="st0">'<span class="es5">\0</span>'</span><span class="sy4">;</span> i<span class="sy2">++</span><span class="br0">)</span>
<span class="br0">{</span>
<span class="kw1">if</span> <span class="br0">(</span>str<span class="br0">[</span>i<span class="br0">]</span> <span class="sy1">==</span> <span class="st0">' '</span><span class="br0">)</span>
<span class="br0">{</span>
p <span class="sy1">=</span> str <span class="sy2">+</span> i<span class="sy4">;</span>
<span class="kw1">break</span><span class="sy4">;</span>
<span class="br0">}</span>
<span class="br0">}</span>
<span class="co1">// p is NULL if str doesn't have a space. If str always has a</span>
<span class="co1">// a space then the condition (str[i] != '\0') would be redundant</span>
<span class="kw1">return</span> p<span class="br0">[</span><span class="nu0">1</span><span class="br0">]</span><span class="sy4">;</span>
<span class="br0">}</span>
<span class="kw4">void</span> f3<span class="br0">(</span><span class="kw4">int</span> a<span class="br0">)</span>
<span class="br0">{</span>
<span class="kw4">struct</span> fred_t <span class="sy2">*</span>p <span class="sy1">=</span> <span class="kw2">NULL</span><span class="sy4">;</span>
<span class="kw1">if</span> <span class="br0">(</span>a <span class="sy1">==</span> <span class="nu0">1</span><span class="br0">)</span>
p <span class="sy1">=</span> fred1<span class="sy4">;</span>
<span class="co1">// if a is not 1 then p is NULL</span>
p<span class="sy2">-</span><span class="sy1">&gt;</span>x <span class="sy1">=</span> <span class="nu0">0</span><span class="sy4">;</span>
<span class="br0">}</span></pre>
</div> <!-- .wrap -->
</div> <!-- #content -->
<?php include_once("../analyticstracking.php") ?>
</body>
</html>

View File

@ -1,178 +0,0 @@
<?php
$isCodePosted = isset($_POST['code']) && !empty($_POST['code']);
$isXmlOutput = isset($_POST['xml']) && $_POST['xml'] == '1';
/**
* ...
* @param string $code Source code
* @return string Output lines
*/
function get_democlient_output($code) {
$postdata = http_build_query(
array(
'code' => $code
)
);
$opts = array('http' =>
array(
'method' => 'POST',
'header' => 'Content-type: application/x-www-form-urlencoded',
'content' => $postdata
)
);
$context = stream_context_create($opts);
return @file_get_contents('http://cppcheck.sourceforge.net/cgi-bin/democlient.cgi', false, $context);
}
function cut_string($string, $length = 1024) {
if (strlen($string) > $length) {
return substr($string, 0, $length);
}
return $string;
}
//--------------------------------------------------------------------------------
// XML output...
//--------------------------------------------------------------------------------
if ($isXmlOutput) { //if XML output...
header('Content-Type: text/xml');
if (!$isCodePosted) { //if NO code posted...
echo "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<results></results>\n";
exit;
}
$output = get_democlient_output(cut_string($_POST['code']));
if ($output === false) { //if NO demo client output...
echo "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<results></results>\n";
exit;
}
echo $output;
exit;
}
//--------------------------------------------------------------------------------
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Online Demo Report - Cppcheck</title>
<link rel="stylesheet" type="text/css" href="//fonts.googleapis.com/css?family=Orbitron&amp;text=Cppcheck" />
<link rel="stylesheet" type="text/css" href="/site/css/pack.css" />
<link rel="shortcut icon" type="image/x-icon" href="/favicon.ico" />
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js" type="text/javascript"></script>
<script type="text/javascript">
//<![CDATA[
window.jQuery || document.write('<script type="text/javascript" src="/site/js/jquery-1.11.0.min.js"><\/script>')
//]]>
</script>
<script src="/site/js/pack.js" type="text/javascript"></script>
<script type="text/javascript">
$(document).ready(function() {
$("#resultsTable").tableFilter();
});
</script>
</head>
<body>
<div id="header">
<div class="wrap">
<h1><a href="/">Cppcheck</a></h1>
<p>A tool for static C/C++ code analysis</p>
</div> <!-- .wrap -->
</div> <!-- #header -->
<div id="tabs">
<div class="wrap">
<ul>
<li><a href="/">Home</a></li>
<li><a href="http://sourceforge.net/apps/mediawiki/cppcheck/">Wiki</a></li>
<li><a href="http://sourceforge.net/apps/phpbb/cppcheck/">Forum</a></li>
<li><a href="http://sourceforge.net/apps/trac/cppcheck/">Issues</a></li>
<li><a href="/devinfo/" title="Developer Information">Developer Info</a></li>
<li><em><a href="/demo/">Online Demo</a></em></li>
<li><a href="http://sourceforge.net/projects/cppcheck/">Project page</a></li>
</ul>
</div> <!-- .wrap -->
</div> <!-- #tabs -->
<div id="content">
<div class="wrap">
<h2>Online Demo Report</h2>
<?php
/**
* ...
* @param string $output Output lines
* @return array Parsed output
*/
function parse_democlient_output($output) {
try {
$parsed = array();
$xml = simplexml_load_string($output);
foreach ($xml->errors->error as $error) { //for all errors...
$severity = (string)$error->attributes()->severity;
$msg = (string)$error->attributes()->msg;
$line = (string)$error->location->attributes()->line;
if (!empty($severity) && !empty($msg) && !empty($line)) { //if complete error...
$parsed[] = array('severity' => $severity, 'msg' => $msg, 'line' => $line);
}
}
return $parsed;
}
catch (Exception $ex) {
return array();
}
}
if ($isCodePosted) { //if code posted...
include_once '../../site/geshi/geshi.php';
$code = cut_string($_POST['code']);
$geshi = new GeSHi($code, 'cpp');
$geshi->enable_classes();
$geshi->set_header_type(GESHI_HEADER_PRE_TABLE);
$geshi->enable_line_numbers(GESHI_NORMAL_LINE_NUMBERS);
$geshi->set_overall_class('geshicode');
echo "<h3>Input</h3>\n";
echo $geshi->parse_code();
echo "<h3>Output</h3>\n";
$output = get_democlient_output($code);
if (!$output === false) {
$results = parse_democlient_output($output);
if (!empty($results)) {
echo "<table id=\"resultsTable\">\n";
echo "<thead>\n";
echo " <tr><th class=\"center\" filter-type=\"ddl\">Line</th><th class=\"center\" filter-type=\"ddl\">Severity</th><th>Message</th></tr>\n";
echo "</thead>\n";
echo "<tbody>\n";
foreach ($results as $result) { //for each result...
echo " <tr><td class=\"center\">" . htmlspecialchars($result['line']) . "</td><td class=\"center\">" . htmlspecialchars($result['severity']) . "</td><td>" . htmlspecialchars($result['msg']) . "</td></tr>\n";
}
echo "</tbody>\n";
echo "</table>\n";
}
else {
echo "<p>No errors found.</p>\n";
}
}
else {
echo "<p>Problem with demo client. Please try again.</p>\n";
}
}
else { //if NO code posted...
echo "<p>Use the <a href=\"/demo/\">online demo</a> page to create the report.</p>\n";
}
?>
</div> <!-- .wrap -->
</div> <!-- #content -->
<?php include_once("../../analyticstracking.php") ?>
</body>
</html>

View File

@ -1,123 +0,0 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Developer Information - Cppcheck</title>
<link rel="stylesheet" type="text/css" href="//fonts.googleapis.com/css?family=Orbitron&amp;text=Cppcheck" />
<link rel="stylesheet" type="text/css" href="/site/css/pack.css" />
<link rel="shortcut icon" type="image/x-icon" href="/favicon.ico" />
<link rel="alternate" type="application/atom+xml" title="Recent Commits to cppcheck:master"
href="https://github.com/danmar/cppcheck/commits/master.atom" />
<link rel="alternate" type="application/atom+xml" title="Trac Timeline"
href="http://sourceforge.net/apps/trac/cppcheck/timeline?changeset=on&amp;ticket=on&amp;milestone=on&amp;wiki=on&amp;max=50&amp;daysback=90&amp;format=rss" />
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js" type="text/javascript"></script>
<script type="text/javascript">
//<![CDATA[
window.jQuery || document.write('<script type="text/javascript" src="/site/js/jquery-1.11.0.min.js"><\/script>')
//]]>
</script>
<script src="/site/js/pack.js" type="text/javascript"></script>
<script type="text/javascript">
$(function() {
$("#github-commits").listCommits("danmar", "cppcheck", "master");
});
</script>
</head>
<body>
<div id="header">
<div class="wrap">
<h1><a href="/">Cppcheck</a></h1>
<p>A tool for static C/C++ code analysis</p>
</div> <!-- .wrap -->
</div> <!-- #header -->
<div id="tabs">
<div class="wrap">
<ul>
<li><a href="/">Home</a></li>
<li><a href="http://sourceforge.net/apps/mediawiki/cppcheck/">Wiki</a></li>
<li><a href="http://sourceforge.net/apps/phpbb/cppcheck/">Forum</a></li>
<li><a href="http://5.150.254.56:8001/trac-cppcheck/">Issues</a></li>
<li><strong><a href="/devinfo/" title="Developer Information">Developer Info</a></strong></li>
<li><a href="/demo/">Online Demo</a></li>
<li><a href="http://sourceforge.net/projects/cppcheck/">Project page</a></li>
</ul>
</div> <!-- .wrap -->
</div> <!-- #tabs -->
<div id="anchors">
<div class="wrap">
<ul>
<li><a href="#source-code">Source Code</a></li>
<li><a href="#trac-timeline">Trac Timeline</a></li>
<li><a href="#active-forum-topics">Active Forum Topics</a></li>
<li><a href="#doxygen">Doxygen</a></li>
<li><a href="#other">Other</a></li>
</ul>
</div> <!-- .wrap -->
</div> <!-- #anchors -->
<div id="content">
<div class="wrap">
<h2 id="source-code">Source Code</h2>
<p>Latest version can be found in the <a href="https://github.com/danmar/cppcheck/">
cppcheck git repository</a>.</p>
<p>To get the source code using git:</p>
<pre class="cmd">git clone git://github.com/danmar/cppcheck.git</pre>
<p>To get the source code using subversion:</p>
<pre class="cmd">svn checkout https://github.com/danmar/cppcheck/trunk</pre>
<p>You can also <a href="https://github.com/danmar/cppcheck/downloads">download
the latest sources in a zip or tgz archive</a> from the github website.</p>
<h3>Recent Commits</h3>
<div id="github-commits"><a href="https://github.com/danmar/cppcheck/commits/master">View recent commits&hellip;</a></div>
<p><a href="https://github.com/danmar/cppcheck/commits/master">View all commits&hellip;</a></p>
<h2 id="trac-timeline">Trac Timeline</h2>
<?php
require '../site/simplepie/simplepie.php';
$feed = new SimplePie();
$feed->set_feed_url('http://sourceforge.net/apps/trac/cppcheck/timeline?changeset=on&ticket=on&milestone=on&wiki=on&max=10&daysback=90&format=rss');
$feed->set_cache_location('../site/simplepie/cache');
$feed->init();
print("<ul class=\"rssfeeditems\">\n");
foreach ($feed->get_items() as $item) { //for the last timeline items...
if ($author = $item->get_author()) {
$author = "by <strong>".trim($author->get_name())."</strong>";
} else {
$author = null;
}
print(" <li><a href=\"".$item->get_link()."\">".$item->get_title()."</a> <em>".$author." on ".$item->get_date('Y-m-d')."</em></li>\n");
}
print("</ul>\n");
?>
<p><a href="http://sourceforge.net/apps/trac/cppcheck/timeline">View complete Trac timeline&hellip;</a></p>
<h2 id="active-forum-topics">Active Forum Topics</h2>
<?php
require '../site/activetopics.php';
$activetopics = new Forum_ActiveTopics('http://sourceforge.net/apps/phpbb/cppcheck/');
print("<ul class=\"rssfeeditems\">\n");
foreach ($activetopics->getTopics(0, 10) as $topic) { //for all active topics...
$lastPostLine = '';
if ($topic->getLastPost() != null) {
$lastPost = $topic->getLastPost();
$lastPostLine = sprintf('last post by <strong>%1$s</strong> at %2$s', $lastPost->getUser(), $lastPost->getDate('Y-m-d H:i'));
}
print(" <li><a href=\"".$topic->getLink()."\">".$topic->getTitle()."</a> <em>".$lastPostLine."</em></li>\n");
}
print("</ul>\n");
?>
<p><a href="http://sourceforge.net/apps/phpbb/cppcheck/search.php?st=0&amp;search_id=active_topics">View all active topics&hellip;</a></p>
<h2 id="doxygen">Doxygen</h2>
<ul>
<li><a href="doxyoutput/">Output</a></li>
<li><a href="doxygen-errors.txt">Errors</a></li>
</ul>
<h2 id="other">Other</h2>
<ul>
<li>DACA2 - Scanning Debian with Cppcheck. Version: <a href="daca2-cppcheck1.63/daca2.html">1.63</a> / <a href="daca2-cppcheck1.64/daca2.html">1.64</a> / <a href="daca2-report/daca2.html">head</a></li>
<li><a href="coverage_report/">Coverage report</a></li>
<li><a href="cpd.txt">CPD report (duplicate code)</a></li>
</ul>
</div> <!-- .wrap -->
</div> <!-- #content -->
<?php include_once("../analyticstracking.php") ?>
</body>
</html>

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.1 KiB

View File

@ -1,137 +0,0 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<meta name="description" content="google summer of code 2014 ideas" />
<meta name="keywords" content="Cppcheck, google summer of code" />
<title>google summer of code 2014 ideas</title>
<link rel="stylesheet" type="text/css" href="//fonts.googleapis.com/css?family=Orbitron&amp;text=Cppcheck" />
<link rel="stylesheet" type="text/css" href="/site/css/pack.css" />
<link rel="shortcut icon" type="image/x-icon" href="/favicon.ico" />
</head>
<body>
<div id="header">
<div class="wrap">
<h1><a href="/">Cppcheck</a></h1>
<p>A tool for static C/C++ code analysis</p>
</div> <!-- .wrap -->
</div> <!-- #header -->
<div id="tabs">
<div class="wrap">
<ul>
<li><a href="/">Home</a></li>
<li><a href="http://sourceforge.net/apps/mediawiki/cppcheck/">Wiki</a></li>
<li><a href="http://sourceforge.net/apps/phpbb/cppcheck/">Forum</a></li>
<li><a href="http://sourceforge.net/apps/trac/cppcheck/">Issues</a></li>
<li><a href="/devinfo/" title="Developer Information">Developer Info</a></li>
<li><a href="/demo/">Online Demo</a></li>
<li><a href="http://sourceforge.net/projects/cppcheck/">Project page</a></li>
</ul>
</div> <!-- .wrap -->
</div> <!-- #tabs -->
<div id="content">
<div class="wrap">
<h2>Overview</h2>
<p>
<ol>
<li>Core Cppcheck
<ol>
<li>Add 1 new checker (C++)</li>
<li>Abstract interpretation of loops (C++)</li>
<li>Check for unused functions when -j is used (C++)</li>
</ol></li>
<li>Configurations
<ol>
<li>Add a configuration (XML)</li>
<li>Auto generate configuration (C++ / scripting)
<li>GUI for editing configurations (C++,Qt)</li>
</ol></li>
<li>Distributed computing
<ol>
<li>Distributed computing (Network programming, Python / C++)</li>
</ol></li>
</ul>
</p>
<h2>1. Core Cppcheck</h2>
<p>
<strong>Project 1.1</strong><br>
<strong>Name:</strong> Add 1 new checker<br>
<strong>Skills required:</strong> C++<br>
<strong>Description:</strong> There are several tickets in our issue tracker that has ideas for new checkers.
The subtasks will be: pick a ticket to fix, write test cases, implement new checker, test it against various
projects.
</p>
<p>
<strong>Project 1.2</strong><br>
<strong>Name:</strong> Abstract interpretation of loops<br>
<strong>Skills required:</strong> C++<br>
<strong>Description:</strong> You will write an C/C++ expression interpreter that uses the Cppcheck syntax
tree to interpret the expressions in loops. When there are unknown operands (variables with unknown value,
etc) the interpreter shall bailout. You will interpret the loop expressions until : the loop finish , or
there is a timeout , or the variables are unchanged. During the interpretation, the variable values will be
recorded and saved as ValueFlow values. You can read an overview of the Cppcheck syntax tree and ValueFlow
analysis in the <a href="http://sourceforge.net/projects/cppcheck/files/Articles/cppcheck-design.pdf">cppcheck
design</a> document.
</p>
<p>
<strong>Project 1.3</strong><br>
<strong>Name:</strong> Check for unused functions when -j is used<br>
<strong>Skills required:</strong> C++, threads<br>
<strong>Description:</strong> Currently the check for unused functions only works when the analysis is
single-threaded. When multithreaded analysis is done the check is disabled. Currently the check saves function
usage information in a container. The same container is used for all files. This should be refactored. For each
file there should be a separate container for the function usage information.
</p>
<h2>2. Configurations</h2>
<p>
<strong>Project 2.1</strong><br>
<strong>Name:</strong> Add a configuration<br>
<strong>Skills required:</strong> C/C++ (not much), XML<br>
<strong>Description:</strong> More configuration files are needed for various libraries. Subtasks: choose
a popular library. Analyse the library functions and read API documentation. Write proper configuration
file for Cppcheck. Test the configuration.
</p>
<p>
<strong>Project 2.2</strong><br>
<strong>Name:</strong> Autogenerated configurations<br>
<strong>Skills required:</strong> C++ / scripting<br>
<strong>Description:</strong> Auto generate configuration from headers. To parse the headers, you can for
instance do this yourself (python script/c++/..) or you can modify cppcheck. All function names will be
extracted, and you will also determine what function arguments are passed by value.
</p>
<p>
<strong>Project 2.3</strong><br>
<strong>Name:</strong> GUI for editing configurations<br>
<strong>Skills required:</strong> C++, Qt<br>
<strong>Description:</strong> A graphical user interface for editing configurations would be nice. This can
be developed as a standalone program or integrated in the cppcheck-gui program. However in the end the plan
is that it will be merged into the cppcheck-gui program.
</p>
<h2>3. Distributed computing</h2>
<p>
<strong>Project 3.1</strong><br>
<strong>Name:</strong> Distributed computing<br>
<strong>Skills required:</strong> Network, python / c++<br>
<strong>Description:</strong> Make it possible to distribute analysis. A client and server needs to be
written. The client will execute cppcheck to perform analysis. The programming language used to write the
client and server is either python or c++ (your choice). The server shall be able to handle at least 100
clients. The client and server needs to be cross platform.
</p>
</div> <!-- .wrap -->
</div> <!-- #content -->
</body>
</html>

View File

@ -1,160 +0,0 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<meta name="description" content="Cppcheck is an analysis tool for C/C++ code.
It detects the types of bugs that the compilers normally fail to detect. The
goal is no false positives." />
<meta name="keywords" content="Cppcheck, open source, analysis tool, C/C++,
code, errors, bugs, compilers, bounds checking, memory leaks, obsolete functions,
uninitialized variables, unused functions" />
<title>Cppcheck - A tool for static C/C++ code analysis</title>
<link rel="stylesheet" type="text/css" href="//fonts.googleapis.com/css?family=Orbitron&amp;text=Cppcheck" />
<link rel="stylesheet" type="text/css" href="/site/css/pack.css" />
<link rel="shortcut icon" type="image/x-icon" href="/favicon.ico" />
<link rel="alternate" type="application/rss+xml" title="Project News"
href="http://sourceforge.net/p/cppcheck/news/feed" />
</head>
<body>
<div id="header">
<div class="wrap">
<h1><a href="/">Cppcheck</a></h1>
<p>A tool for static C/C++ code analysis</p>
</div> <!-- .wrap -->
</div> <!-- #header -->
<div id="tabs">
<div class="wrap">
<ul>
<li><strong><a href="/">Home</a></strong></li>
<li><a href="http://sourceforge.net/apps/mediawiki/cppcheck/">Wiki</a></li>
<li><a href="http://sourceforge.net/apps/phpbb/cppcheck/">Forum</a></li>
<li><a href="http://5.150.254.56:8001/trac-cppcheck/">Issues</a></li>
<li><a href="/devinfo/" title="Developer Information">Developer Info</a></li>
<li><a href="/demo/">Online Demo</a></li>
<li><a href="http://sourceforge.net/projects/cppcheck/">Project page</a></li>
</ul>
</div> <!-- .wrap -->
</div> <!-- #tabs -->
<div id="anchors">
<div class="wrap">
<ul>
<li><a href="#download">Download</a></li>
<li><a href="#features">Features</a></li>
<li><a href="#news">News</a></li>
<li><a href="#documentation">Documentation</a></li>
<li><a href="#support">Support</a></li>
<li><a href="#contribute">Contribute</a></li>
</ul>
</div> <!-- .wrap -->
</div> <!-- #anchors -->
<div id="content">
<div class="wrap">
<p>
<strong>Cppcheck</strong> is a <a href="http://en.wikipedia.org/wiki/Static_analysis_tool">static analysis tool</a>
for C/C++ code. Unlike C/C++ compilers and many other analysis tools it does
not detect syntax errors in the code. Cppcheck primarily detects the types of
bugs that the compilers normally do not detect. The goal is to detect only real
errors in the code (i.e. have zero false positives).
</p>
<h2 id="download">Download</h2>
<p>
<a class="downloadnow" href="http://sourceforge.net/projects/cppcheck/files/cppcheck/1.65/cppcheck-1.65-x86-Setup.msi">
<span class="downButtonText">Download Now!</span>
<span class="downButtonVersion">Version 1.65 for Windows</span>
</a>
</p>
<p>You can download the standalone Cppcheck from our <a href="http://sourceforge.net/projects/cppcheck/">project page</a> or add it
as a plugin for your favorite IDE:</p>
<ul>
<li><strong>Code::Blocks</strong> - <em>integrated</em></li>
<li><strong>CodeLite</strong> - <em>integrated</em></li>
<li><strong>Eclipse</strong> - <a href="http://cppcheclipse.googlecode.com/">Cppcheclipse</a></li>
<li><strong>gedit</strong> - <a href="http://github.com/odamite/gedit-cppcheck">gedit plugin</a></li>
<li><strong>Hudson</strong> - <a href="http://wiki.hudson-ci.org/display/HUDSON/Cppcheck+Plugin">Cppcheck Plugin</a></li>
<li><strong>Jenkins</strong> - <a href="http://wiki.jenkins-ci.org/display/JENKINS/Cppcheck+Plugin">Cppcheck Plugin</a></li>
<li><strong>Mercurial (Linux)</strong> - <a href="http://sourceforge.net/apps/mediawiki/cppcheck/index.php?title=Mercurialhook">pre-commit hook</a> - Check for new errors on commit (requires interactive terminal)</li>
<li><strong>Tortoise SVN</strong> - <a href="http://sourceforge.net/apps/mediawiki/cppcheck/index.php?title=Tortoisesvn">Adding a pre-commit hook script</a></li>
<li><strong>Visual Studio</strong> - <a href="https://github.com/VioletGiraffe/cppcheck-vs-addin/releases/latest">Visual Studio plugin</a></li>
</ul>
<p>Using a battery of tools is better than using 1 tool. Therefore we recommend that you also use other tools.</p>
<p>One other tool you can use is <a href="http://www.viva64.com/en/pvs-studio/">PVS-Studio</a>. There is a
<a href="http://www.viva64.com/en/b/0149/">comparison of Cppcheck and PVS-Studio</a> and we believe it's a good and honest comparison.
PVS-Studio is commercial, however there is a free trial.</p>
<h2 id="features">Features</h2>
<ul>
<li>Out of bounds checking</li>
<li>Check the code for each class</li>
<li>Checking exception safety</li>
<li>Memory leaks checking</li>
<li>Warn if obsolete functions are used</li>
<li>Check for invalid usage of <acronym title="Standard Template Library">STL</acronym></li>
<li>Check for uninitialized variables and unused functions</li>
</ul>
<h2 id="news">News</h2>
<?php
require './site/simplepie/simplepie.php';
$feed = new SimplePie();
$feed->set_feed_url('http://sourceforge.net/p/cppcheck/news/feed');
$feed->set_cache_location('./site/simplepie/cache');
$feed->init();
print("<ul class=\"rssfeeditems\">\n");
foreach ($feed->get_items(0, 3) as $item) { //for the last 3 news items...
print(" <li><a href=\"".$item->get_link()."\">".$item->get_title()."</a> <em>".$item->get_date('Y-m-d')."</em></li>\n");
}
print("</ul>\n");
?>
<p><a href="http://sourceforge.net/p/cppcheck/news/">View all news&hellip;</a></p>
<h2 id="documentation">Documentation</h2>
<p>You can read the <a href="manual.pdf">manual</a> or download some
<a href="http://sourceforge.net/projects/cppcheck/files/Articles/">articles</a>.</p>
<h2 id="support">Support</h2>
<ul>
<li>Use <a href="http://sourceforge.net/apps/trac/cppcheck/">Trac</a> to report
bugs and feature requests</li>
<li>Ask questions in the <a href="http://sourceforge.net/apps/phpbb/cppcheck/">discussion forum</a>
or at the IRC channel <a href="irc://irc.freenode.net/#cppcheck">#cppcheck</a></li>
<li>For more details look at the <a href="http://sourceforge.net/apps/mediawiki/cppcheck/">wiki</a></li>
</ul>
<h2 id="contribute">Contribute</h2>
<p>You are welcome to contribute. Help is needed.</p>
<dl>
<dt>Testing</dt>
<dd>Pick a project and test it's source with latest version. Write tickets to
<a href="http://sourceforge.net/apps/trac/cppcheck/">Trac</a> about issues you
find from Cppcheck. If you test open source projects and write bug reports to
them, check the issues in the <a href="http://sourceforge.net/apps/mediawiki/cppcheck/index.php?title=Found_bugs">Found bugs</a>
wiki section, and write links to the bug reports you have created e.g. to our
<a href="http://sourceforge.net/apps/phpbb/cppcheck/">forum</a>, so we can keep
a track about them.</dd>
<dt>Developing</dt>
<dd>Pick a ticket from <a href="http://sourceforge.net/apps/trac/cppcheck/">Trac</a>,
write a test case for it (and write a comment to the ticket that test case has
been created). Or pick a test case that fails and try to fix it. Make a patch
and submit it to Trac either inline if it is small, or attach it as a file.</dd>
<dt>Marketing</dt>
<dd>Write articles, reviews or tell your friends about us. The more users we
have, the more people we have testing and the better we can become.</dd>
<dt>Design</dt>
<dd>Invent new good checks and create tickets to <a href="http://sourceforge.net/apps/trac/cppcheck/">Trac</a>
about them.</dd>
<dt>Integration</dt>
<dd>Write a plugin to your favorite IDE or create a package for your distribution
or operating system.</dd>
<dt>Technical Writer</dt>
<dd>Write better documentation for the bugs we find. Currently only a few bugs
have any documentation at all.</dd>
</dl>
</div> <!-- .wrap -->
</div> <!-- #content -->
<?php include_once("analyticstracking.php") ?>
</body>
</html>

View File

@ -1,99 +0,0 @@
/**!
* Cppcheck - A tool for static C/C++ code analysis
* Copyright (C) 2014 XhmikosR and Cppcheck team.
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
(function () {
"use strict";
require("shelljs/make");
var fs = require("fs"),
CleanCSS = require("clean-css"),
UglifyJS = require("uglify-js"),
rootDir = __dirname + "/"; // absolute path to project's root
//
// make minify
//
target.minify = function () {
cd(rootDir);
echo();
echo("### Minifying css files...");
// pack.css
var inCss = cat(["site/css/normalize.css",
"site/css/all.css",
"site/css/demo.css"]);
var minifier = new CleanCSS({
keepSpecialComments: 0,
compatibility: "ie8"
});
fs.writeFileSync("site/css/pack.css", minifier.minify(inCss), "utf8");
echo();
echo("### Finished site/css/pack.css.");
echo();
echo("### Minifying js files...");
var inJs = cat(["site/js/github.js",
"site/js/picnet.table.filter.min.js"]);
var minifiedJs = UglifyJS.minify(inJs, {
compress: true,
fromString: true, // this is needed to pass JS source code instead of filenames
mangle: true,
warnings: false
});
fs.writeFileSync("site/js/pack.js", minifiedJs.code, "utf8");
echo();
echo("### Finished site/js/pack.js.");
minifiedJs = UglifyJS.minify(cat("site/js/sorttable.js"), {
compress: true,
fromString: true, // this is needed to pass JS source code instead of filenames
mangle: true,
warnings: false
});
fs.writeFileSync("site/js/sorttable.min.js", minifiedJs.code, "utf8");
echo();
echo("### Finished site/js/sorttable.min.js.");
};
//
// make all
//
target.all = function () {
target.minify();
};
//
// make help
//
target.help = function () {
echo("Available targets:");
echo(" minify Creates the minified CSS and JS");
echo(" help shows this help message");
};
}());

View File

@ -1,45 +0,0 @@
{
"name": "cppcheck-web",
"version": "0.2.0",
"author": "XhmikosR (https://github.com/XhmikosR)",
"description": "The dependencies to build cppcheck's website",
"homepage": "https://github.com/danmar/cppcheck",
"repository": {
"type": "git",
"url": "https://github.com/danmar/cppcheck.git"
},
"bugs": {
"url": "http://sourceforge.net/apps/trac/cppcheck/wiki"
},
"license": "GPLv3",
"main": "make.js",
"scripts": {
"lint": "node run-tests"
},
"dependencies": {
"clean-css": "~2.1.8",
"csslint": "~0.10.0",
"jshint": "~2.5.1",
"shelljs": "~0.3.0",
"uglify-js": "~2.4.13"
},
"jshintConfig": {
"camelcase": true,
"curly": true,
"eqeqeq": true,
"forin": true,
"indent": 4,
"latedef": true,
"noarg": true,
"node": true,
"noempty": true,
"quotmark": "double",
"shelljs": true,
"strict": true,
"undef": true,
"unused": true
},
"engines": {
"node": ">=0.8.0"
}
}

View File

@ -1,59 +0,0 @@
#!/usr/bin/env node
/**!
* Cppcheck - A tool for static C/C++ code analysis
* Copyright (C) 2014 XhmikosR and Cppcheck team.
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
require("shelljs/global");
cd(__dirname);
//
// JSHint
//
var jshintBin = "./node_modules/jshint/bin/jshint";
if (!test("-f", jshintBin)) {
echo("JSHint not found. Run `npm install` in the root dir first.");
exit(1);
}
if (exec("node" + " " + jshintBin + " " + "make.js run-tests.js site/js/github.js").code !== 0) {
echo("*** JSHint failed! (return code != 0)");
echo();
} else {
echo("JSHint completed successfully");
echo();
}
//
// csslint
//
var csslintBin = "./node_modules/csslint/cli.js";
if (!test("-f", csslintBin)) {
echo("csslint not found. Run `npm install` in the root dir first.");
exit(1);
}
// csslint doesn't return proper error codes...
/*if (exec("node" + " " + csslintBin + " " + "css/all.css").code !== 0) {
echo("*** csslint failed! (return code != 0)");
echo();
}*/
exec("node" + " " + csslintBin + " " + "site/css/all.css");

View File

@ -1,265 +0,0 @@
<?php
// This program is free software; you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation; either version 2 of the License, or
// (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
class Forum_ActiveTopics {
/**
* ...
* @var string ...
*/
private $_forumHome;
/**
* ...
* @var array ...
*/
private $_topics;
/**
* ...
* @param string $forumHome ...
*/
public function __construct($forumHome) {
$this->_forumHome = $forumHome;
$this->_topics = array();
$this->update();
}
/**
* ...
* @param int $start ...
* @param int $end ...
* @return array ...
*/
public function getTopics($start = 0, $end = 0) {
if ($end == 0) {
return array_slice($this->_topics, $start);
}
else {
return array_slice($this->_topics, $start, $end);
}
//return $this->_topics;
}
/**
* ...
* @param int $days ...
*/
public function update($days = 30) {
$this->_topics = array();
$html = file_get_contents($this->_forumHome . 'search.php?st=' . $days . '&search_id=active_topics');
$html = strip_tags($html, '<a><dd>');
$html = preg_replace(array('#\t#', '#&amp;sid=[a-z0-9]+#'), '', $html);
if (preg_match_all('#<a href="\./(.*?)" class="topictitle">(.*?)</a>#im', $html, $matches)) {
$lastPosts = array();
if (preg_match_all('#<dd class="lastpost">\nby <a href="\./(.*?)">(.*?)</a><a href=".*?"></a> ([A-Za-z0-9,: ]+) \n</dd>#i', $html, $lastPostMatches)) {
$lastPostUserLinks = $lastPostMatches[1];
$lastPostUserNames = $lastPostMatches[2];
$lastPostTimes = $lastPostMatches[3];
for ($i = 0; $i < count($lastPostUserLinks); $i++) { //for all users...
$link = $this->_forumHome . $lastPostUserLinks[$i];
$name = $lastPostUserNames[$i];
$timestamp = strtotime($lastPostTimes[$i]);
if ($timestamp === false || $timestamp === -1) {
$timestamp = 0;
}
$lastPosts[] = new Forum_LastPost(new Forum_User($link, $name), $timestamp);
}
}
$links = $matches[1];
$titles = $matches[2];
for ($i = 0; $i < count($links); $i++) { //for all topics...
$link = $this->_forumHome . $links[$i];
$title = $titles[$i];
$lastPost = $lastPosts[$i];
$this->_topics[] = new Forum_Topic($link, $title, $lastPost);
}
}
}
}
class Forum_Topic {
/**
* ...
* @var string ...
*/
private $_link;
/**
* ...
* @var string ...
*/
private $_title;
/**
* ...
* @var Forum_LastPost ...
*/
private $_lastPost;
/**
* ...
* @param string $link ...
* @param string $title ...
* @param Forum_LastPost $lastPost ...
*/
public function __construct($link, $title, $lastPost = null) {
$this->_link = $link;
$this->_title = $title;
$this->_lastPost = $lastPost;
}
/**
* ...
* @return string ...
*/
public function getLink() {
return $this->_link;
}
/**
* ...
* @return string ...
*/
public function getTitle() {
return $this->_title;
}
/**
* ...
* @return Forum_LastPost ...
*/
public function getLastPost() {
return $this->_lastPost;
}
/**
* ...
* @return Forum_User ...
* @deprecated
*/
public function getLastPostUser() {
if (!empty($this->_lastPost)) {
return $this->_lastPost->getUser();
}
return null;
}
/**
* ...
* @return integer ...
* @deprecated
*/
public function getLastPostTimestamp() {
if (!empty($this->_lastPost)) {
return $this->_lastPost->getTimestamp();
}
return 0;
}
}
class Forum_User {
/**
* ...
* @var string ...
*/
private $_link;
/**
* ...
* @var string ...
*/
private $_name;
/**
* ...
* @param string $link ...
* @param string $name ...
*/
public function __construct($link, $name) {
$this->_link = $link;
$this->_name = $name;
}
/**
* ...
* @return string ...
*/
public function getLink() {
return $this->_link;
}
/**
* ...
* @return string ...
*/
public function getName() {
return $this->_name;
}
/**
* ...
*/
public function __toString() {
return $this->_name;
}
}
class Forum_LastPost {
/**
* ...
* @var Forum_User ...
*/
private $_user;
/**
* ...
* @var integer ...
*/
private $_timestamp;
/**
* ...
* @param Forum_User $user ...
* @param integer $timestamp ...
*/
public function __construct($user, $timestamp) {
$this->_user = $user;
$this->_timestamp = $timestamp;
}
/**
* ...
* @return Forum_User ...
*/
public function getUser() {
return $this->_user;
}
/**
* ...
* @return integer ...
*/
public function getTimestamp() {
return $this->_timestamp;
}
/**
* ...
* @return string ...
*/
public function getDate($format) {
return date($format, $this->_timestamp);
}
}
?>

View File

@ -1,192 +0,0 @@
/*csslint box-sizing: false, ids: false, qualified-headings: false*/
body {
padding: 0;
font: 16px Calibri, Verdana, sans-serif;
color: black;
background-color: #eee;
}
dt {
font-weight: bold;
}
/* Default link style */
a:hover {
-webkit-transition: all 0.20s ease-in-out;
-moz-transition: all 0.20s ease-in-out;
-o-transition: all 0.20s ease-in-out;
transition: all 0.20s ease-in-out;
}
a:link,
a:visited { color: #036; text-decoration: underline; }
a:active,
a:focus,
a:hover,
a:visited { color: #369; }
/* Header */
#header {
color: #69c;
background-color: #036;
}
#header a {
color: inherit;
text-decoration: none;
}
#header h1 {
margin: 0;
padding: 0;
font-family: Orbitron;
}
#header p {
margin: 0;
padding: 0;
font-size: larger;
}
/* Tabs */
#tabs {
color: #eee;
background-color: #369;
border-top: 1px solid black;
border-bottom: 1px solid black;
}
#tabs ul {
margin: 0;
padding: 0;
list-style-type: none;
font-size: larger;
}
#tabs li {
display: inline;
padding: 0 0.5em;
border-right: 1px solid black;
}
#tabs li:first-child {
padding-left: 0;
}
#tabs li:last-child {
border: none;
}
#tabs a:link,
#tabs a:visited { color: #eee; text-decoration: none; }
#tabs a:focus,
#tabs a:hover,
#tabs a:active { color: white; text-decoration: underline; }
/* Anchors */
#anchors ul {
margin: 0;
padding: 0.5em 0;
list-style-type: none;
font-size: smaller;
}
#anchors li {
display: inline;
padding: 0 0.5em;
}
#anchors li:first-child {
padding-left: 0;
}
#anchors .wrap {
padding: 0;
}
/* Wrap */
.wrap {
width: 50em;
margin: 0 auto;
padding: 0.5em;
-webkit-box-sizing: content-box;
-moz-box-sizing: content-box;
box-sizing: content-box;
}
/* RSS feed items */
.rssfeeditems em {
margin-left: 0.5em;
color: #888;
font-size: smaller;
}
a.author:link,
a.author:visited,
a.author:link:hover,
a.author:visited:hover,
a.author:focus,
a.author:active {
color: #888;
}
/* "Download Now!" link */
a.downloadnow {
display: block;
width: 12em;
margin: 0;
padding: 5px;
text-align: center;
text-decoration: none;
color: white;
background-color: #060;
border: 1px solid #003D00;
-webkit-border-radius: 0.5em;
-khtml-border-radius: 0.5em;
-moz-border-radius: 0.5em;
border-radius: 0.5em;
-webkit-box-sizing: content-box;
-moz-box-sizing: content-box;
box-sizing: content-box;
}
a.downloadnow:focus,
a.downloadnow:hover {
background-color: #090;
}
.downButtonText {
display: block;
font-size: larger;
font-weight: bold;
}
.downButtonVersion {
display: block;
font-size: smaller;
}
/* Command */
.cmd {
padding: 0.5em;
background-color: #f7f7f7;
border: 1px solid silver;
border-left: 10px solid silver;
}
/* Printing */
@media print {
#header { color: black; border-bottom: 1px solid black; }
#tabs { display: none; }
#resultsTable th,
#resultsTable td { background-color: white; border: 1px solid black; }
}

View File

@ -1,24 +0,0 @@
table {
text-align: center;
}
td {
font-size: 0.9em;
padding: 0.2em;
}
td + td {
padding-left: 6em;
}
th {
cursor: pointer;
}
th + th {
padding-left: 5em;
}
table.sortable th:not(.sorttable_sorted):not(.sorttable_sorted_reverse):after {
content: " \25B4\25BE";
}

View File

@ -1,77 +0,0 @@
/* Source Code */
.geshicode {
padding: 0.5em;
background: #f7f7f7;
border: 1px solid #e2e2e2;
}
/* Results table */
#resultsTable {
border-collapse: collapse;
}
#resultsTable th {
padding: 0.25em;
text-align: left;
background: #e2e2e2;
border: 1px solid #e2e2e2;
}
#resultsTable td {
padding: 0.25em;
background: #f7f7f7;
border: 1px solid #e2e2e2;
}
#resultsTable .center {
text-align: center;
}
/* Max characters */
.maxChars {
margin-left: 2em;
color: #888;
font-size: smaller;
font-style: italic;
}
/**
* GeSHi (C) 2004 - 2007 Nigel McNie, 2007 - 2008 Benny Baumann
* (http://qbnz.com/highlighter/ and http://geshi.org/)
*/
.cpp.geshicode .de1, .cpp.geshicode .de2 {font:normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;}
.cpp.geshicode {font-family:monospace;}
.cpp.geshicode .imp {font-weight:bold; color:red;}
.cpp.geshicode li, .cpp.geshicode .li1 {font-weight:normal; vertical-align:top;}
.cpp.geshicode .ln {width:1px; text-align:right; margin:0; padding:0 2px; vertical-align:top; color:#999999;}
.cpp.geshicode .kw1 {color:#0000ff;}
.cpp.geshicode .kw2 {color:#0000ff;}
.cpp.geshicode .kw3 {color:#0000dd;}
.cpp.geshicode .kw4 {color:#0000ff;}
.cpp.geshicode .co1 {color:#666666;}
.cpp.geshicode .co2 {color:#339900;}
.cpp.geshicode .coMULTI {color:#ff0000; font-style:italic;}
.cpp.geshicode .es0 {color:#000099; font-weight:bold;}
.cpp.geshicode .es1 {color:#000099; font-weight:bold;}
.cpp.geshicode .es2 {color:#660099; font-weight:bold;}
.cpp.geshicode .es3 {color:#660099; font-weight:bold;}
.cpp.geshicode .es4 {color:#660099; font-weight:bold;}
.cpp.geshicode .es5 {color:#006699; font-weight:bold;}
.cpp.geshicode .br0 {color:#008000;}
.cpp.geshicode .sy0 {color:#008000;}
.cpp.geshicode .sy1 {color:#000080;}
.cpp.geshicode .sy2 {color:#000040;}
.cpp.geshicode .sy3 {color:#000040;}
.cpp.geshicode .sy4 {color:#008080;}
.cpp.geshicode .st0 {color:#ff0000;}
.cpp.geshicode .nu0 {color:#0000dd;}
.cpp.geshicode .nu6 {color:#208080;}
.cpp.geshicode .nu8 {color:#208080;}
.cpp.geshicode .nu12 {color:#208080;}
.cpp.geshicode .nu16 {color:#800080;}
.cpp.geshicode .nu17 {color:#800080;}
.cpp.geshicode .nu18 {color:#800080;}
.cpp.geshicode .nu19 {color:#800080;}
.cpp.geshicode .me1 {color:#007788;}
.cpp.geshicode .me2 {color:#007788;}
.cpp.geshicode span.xtra {display:block;}

View File

@ -1,423 +0,0 @@
/*! normalize.css v3.0.0 | MIT License | git.io/normalize */
/**
* 1. Set default font family to sans-serif.
* 2. Prevent iOS text size adjust after orientation change, without disabling
* user zoom.
*/
html {
font-family: sans-serif; /* 1 */
-ms-text-size-adjust: 100%; /* 2 */
-webkit-text-size-adjust: 100%; /* 2 */
}
/**
* Remove default margin.
*/
body {
margin: 0;
}
/* HTML5 display definitions
========================================================================== */
/**
* Correct `block` display not defined in IE 8/9.
*/
article,
aside,
details,
figcaption,
figure,
footer,
header,
hgroup,
main,
nav,
section,
summary {
display: block;
}
/**
* 1. Correct `inline-block` display not defined in IE 8/9.
* 2. Normalize vertical alignment of `progress` in Chrome, Firefox, and Opera.
*/
audio,
canvas,
progress,
video {
display: inline-block; /* 1 */
vertical-align: baseline; /* 2 */
}
/**
* Prevent modern browsers from displaying `audio` without controls.
* Remove excess height in iOS 5 devices.
*/
audio:not([controls]) {
display: none;
height: 0;
}
/**
* Address `[hidden]` styling not present in IE 8/9.
* Hide the `template` element in IE, Safari, and Firefox < 22.
*/
[hidden],
template {
display: none;
}
/* Links
========================================================================== */
/**
* Remove the gray background color from active links in IE 10.
*/
a {
background: transparent;
}
/**
* Improve readability when focused and also mouse hovered in all browsers.
*/
a:active,
a:hover {
outline: 0;
}
/* Text-level semantics
========================================================================== */
/**
* Address styling not present in IE 8/9, Safari 5, and Chrome.
*/
abbr[title] {
border-bottom: 1px dotted;
}
/**
* Address style set to `bolder` in Firefox 4+, Safari 5, and Chrome.
*/
b,
strong {
font-weight: bold;
}
/**
* Address styling not present in Safari 5 and Chrome.
*/
dfn {
font-style: italic;
}
/**
* Address variable `h1` font-size and margin within `section` and `article`
* contexts in Firefox 4+, Safari 5, and Chrome.
*/
h1 {
font-size: 2em;
margin: 0.67em 0;
}
/**
* Address styling not present in IE 8/9.
*/
mark {
background: #ff0;
color: #000;
}
/**
* Address inconsistent and variable font size in all browsers.
*/
small {
font-size: 80%;
}
/**
* Prevent `sub` and `sup` affecting `line-height` in all browsers.
*/
sub,
sup {
font-size: 75%;
line-height: 0;
position: relative;
vertical-align: baseline;
}
sup {
top: -0.5em;
}
sub {
bottom: -0.25em;
}
/* Embedded content
========================================================================== */
/**
* Remove border when inside `a` element in IE 8/9.
*/
img {
border: 0;
}
/**
* Correct overflow displayed oddly in IE 9.
*/
svg:not(:root) {
overflow: hidden;
}
/* Grouping content
========================================================================== */
/**
* Address margin not present in IE 8/9 and Safari 5.
*/
figure {
margin: 1em 40px;
}
/**
* Address differences between Firefox and other browsers.
*/
hr {
-moz-box-sizing: content-box;
box-sizing: content-box;
height: 0;
}
/**
* Contain overflow in all browsers.
*/
pre {
overflow: auto;
}
/**
* Address odd `em`-unit font size rendering in all browsers.
*/
code,
kbd,
pre,
samp {
font-family: monospace, monospace;
font-size: 1em;
}
/* Forms
========================================================================== */
/**
* Known limitation: by default, Chrome and Safari on OS X allow very limited
* styling of `select`, unless a `border` property is set.
*/
/**
* 1. Correct color not being inherited.
* Known issue: affects color of disabled elements.
* 2. Correct font properties not being inherited.
* 3. Address margins set differently in Firefox 4+, Safari 5, and Chrome.
*/
button,
input,
optgroup,
select,
textarea {
color: inherit; /* 1 */
font: inherit; /* 2 */
margin: 0; /* 3 */
}
/**
* Address `overflow` set to `hidden` in IE 8/9/10.
*/
button {
overflow: visible;
}
/**
* Address inconsistent `text-transform` inheritance for `button` and `select`.
* All other form control elements do not inherit `text-transform` values.
* Correct `button` style inheritance in Firefox, IE 8+, and Opera
* Correct `select` style inheritance in Firefox.
*/
button,
select {
text-transform: none;
}
/**
* 1. Avoid the WebKit bug in Android 4.0.* where (2) destroys native `audio`
* and `video` controls.
* 2. Correct inability to style clickable `input` types in iOS.
* 3. Improve usability and consistency of cursor style between image-type
* `input` and others.
*/
button,
html input[type="button"], /* 1 */
input[type="reset"],
input[type="submit"] {
-webkit-appearance: button; /* 2 */
cursor: pointer; /* 3 */
}
/**
* Re-set default cursor for disabled elements.
*/
button[disabled],
html input[disabled] {
cursor: default;
}
/**
* Remove inner padding and border in Firefox 4+.
*/
button::-moz-focus-inner,
input::-moz-focus-inner {
border: 0;
padding: 0;
}
/**
* Address Firefox 4+ setting `line-height` on `input` using `!important` in
* the UA stylesheet.
*/
input {
line-height: normal;
}
/**
* It's recommended that you don't attempt to style these elements.
* Firefox's implementation doesn't respect box-sizing, padding, or width.
*
* 1. Address box sizing set to `content-box` in IE 8/9/10.
* 2. Remove excess padding in IE 8/9/10.
*/
input[type="checkbox"],
input[type="radio"] {
box-sizing: border-box; /* 1 */
padding: 0; /* 2 */
}
/**
* Fix the cursor style for Chrome's increment/decrement buttons. For certain
* `font-size` values of the `input`, it causes the cursor style of the
* decrement button to change from `default` to `text`.
*/
input[type="number"]::-webkit-inner-spin-button,
input[type="number"]::-webkit-outer-spin-button {
height: auto;
}
/**
* 1. Address `appearance` set to `searchfield` in Safari 5 and Chrome.
* 2. Address `box-sizing` set to `border-box` in Safari 5 and Chrome
* (include `-moz` to future-proof).
*/
input[type="search"] {
-webkit-appearance: textfield; /* 1 */
-moz-box-sizing: content-box;
-webkit-box-sizing: content-box; /* 2 */
box-sizing: content-box;
}
/**
* Remove inner padding and search cancel button in Safari and Chrome on OS X.
* Safari (but not Chrome) clips the cancel button when the search input has
* padding (and `textfield` appearance).
*/
input[type="search"]::-webkit-search-cancel-button,
input[type="search"]::-webkit-search-decoration {
-webkit-appearance: none;
}
/**
* Define consistent border, margin, and padding.
*/
fieldset {
border: 1px solid #c0c0c0;
margin: 0 2px;
padding: 0.35em 0.625em 0.75em;
}
/**
* 1. Correct `color` not being inherited in IE 8/9.
* 2. Remove padding so people aren't caught out if they zero out fieldsets.
*/
legend {
border: 0; /* 1 */
padding: 0; /* 2 */
}
/**
* Remove default vertical scrollbar in IE 8/9.
*/
textarea {
overflow: auto;
}
/**
* Don't inherit the `font-weight` (applied by a rule above).
* NOTE: the default cannot safely be changed in Chrome and Safari on OS X.
*/
optgroup {
font-weight: bold;
}
/* Tables
========================================================================== */
/**
* Remove most spacing between table cells.
*/
table {
border-collapse: collapse;
border-spacing: 0;
}
td,
th {
padding: 0;
}

File diff suppressed because one or more lines are too long

File diff suppressed because it is too large Load Diff

View File

@ -1,281 +0,0 @@
<?php
/*************************************************************************************
* c.php
* -----
* Author: Nigel McNie (nigel@geshi.org)
* Contributors:
* - Jack Lloyd (lloyd@randombit.net)
* - Michael Mol (mikemol@gmail.com)
* Copyright: (c) 2004 Nigel McNie (http://qbnz.com/highlighter/)
* Release Version: 1.0.8.11
* Date Started: 2004/06/04
*
* C language file for GeSHi.
*
* CHANGES
* -------
* 2009/01/22 (1.0.8.3)
* - Made keywords case-sensitive.
* 2008/05/23 (1.0.7.22)
* - Added description of extra language features (SF#1970248)
* 2004/XX/XX (1.0.4)
* - Added a couple of new keywords (Jack Lloyd)
* 2004/11/27 (1.0.3)
* - Added support for multiple object splitters
* 2004/10/27 (1.0.2)
* - Added support for URLs
* 2004/08/05 (1.0.1)
* - Added support for symbols
* 2004/07/14 (1.0.0)
* - First Release
*
* TODO (updated 2009/02/08)
* -------------------------
* - Get a list of inbuilt functions to add (and explore C more
* to complete this rather bare language file
*
*************************************************************************************
*
* This file is part of GeSHi.
*
* GeSHi is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* GeSHi is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with GeSHi; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*
************************************************************************************/
$language_data = array (
'LANG_NAME' => 'C',
'COMMENT_SINGLE' => array(1 => '//', 2 => '#'),
'COMMENT_MULTI' => array('/*' => '*/'),
'COMMENT_REGEXP' => array(
//Multiline-continued single-line comments
1 => '/\/\/(?:\\\\\\\\|\\\\\\n|.)*$/m',
//Multiline-continued preprocessor define
2 => '/#(?:\\\\\\\\|\\\\\\n|.)*$/m'
),
'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,
'QUOTEMARKS' => array("'", '"'),
'ESCAPE_CHAR' => '',
'ESCAPE_REGEXP' => array(
//Simple Single Char Escapes
1 => "#\\\\[\\\\abfnrtv\'\"?\n]#i",
//Hexadecimal Char Specs
2 => "#\\\\x[\da-fA-F]{2}#",
//Hexadecimal Char Specs
3 => "#\\\\u[\da-fA-F]{4}#",
//Hexadecimal Char Specs
4 => "#\\\\U[\da-fA-F]{8}#",
//Octal Char Specs
5 => "#\\\\[0-7]{1,3}#"
),
'NUMBERS' =>
GESHI_NUMBER_INT_BASIC | GESHI_NUMBER_INT_CSTYLE | GESHI_NUMBER_BIN_PREFIX_0B |
GESHI_NUMBER_OCT_PREFIX | GESHI_NUMBER_HEX_PREFIX | GESHI_NUMBER_FLT_NONSCI |
GESHI_NUMBER_FLT_NONSCI_F | GESHI_NUMBER_FLT_SCI_SHORT | GESHI_NUMBER_FLT_SCI_ZERO,
'KEYWORDS' => array(
1 => array(
'if', 'return', 'while', 'case', 'continue', 'default',
'do', 'else', 'for', 'switch', 'goto'
),
2 => array(
'null', 'false', 'break', 'true', 'function', 'enum', 'extern', 'inline'
),
3 => array(
// assert.h
'assert',
//complex.h
'cabs', 'cacos', 'cacosh', 'carg', 'casin', 'casinh', 'catan',
'catanh', 'ccos', 'ccosh', 'cexp', 'cimag', 'cis', 'clog', 'conj',
'cpow', 'cproj', 'creal', 'csin', 'csinh', 'csqrt', 'ctan', 'ctanh',
//ctype.h
'digittoint', 'isalnum', 'isalpha', 'isascii', 'isblank', 'iscntrl',
'isdigit', 'isgraph', 'islower', 'isprint', 'ispunct', 'isspace',
'isupper', 'isxdigit', 'toascii', 'tolower', 'toupper',
//inttypes.h
'imaxabs', 'imaxdiv', 'strtoimax', 'strtoumax', 'wcstoimax',
'wcstoumax',
//locale.h
'localeconv', 'setlocale',
//math.h
'acos', 'asin', 'atan', 'atan2', 'ceil', 'cos', 'cosh', 'exp',
'fabs', 'floor', 'frexp', 'ldexp', 'log', 'log10', 'modf', 'pow',
'sin', 'sinh', 'sqrt', 'tan', 'tanh',
//setjmp.h
'longjmp', 'setjmp',
//signal.h
'raise',
//stdarg.h
'va_arg', 'va_copy', 'va_end', 'va_start',
//stddef.h
'offsetof',
//stdio.h
'clearerr', 'fclose', 'fdopen', 'feof', 'ferror', 'fflush', 'fgetc',
'fgetpos', 'fgets', 'fopen', 'fprintf', 'fputc', 'fputchar',
'fputs', 'fread', 'freopen', 'fscanf', 'fseek', 'fsetpos', 'ftell',
'fwrite', 'getc', 'getch', 'getchar', 'gets', 'perror', 'printf',
'putc', 'putchar', 'puts', 'remove', 'rename', 'rewind', 'scanf',
'setbuf', 'setvbuf', 'snprintf', 'sprintf', 'sscanf', 'tmpfile',
'tmpnam', 'ungetc', 'vfprintf', 'vfscanf', 'vprintf', 'vscanf',
'vsprintf', 'vsscanf',
//stdlib.h
'abort', 'abs', 'atexit', 'atof', 'atoi', 'atol', 'bsearch',
'calloc', 'div', 'exit', 'free', 'getenv', 'itoa', 'labs', 'ldiv',
'ltoa', 'malloc', 'qsort', 'rand', 'realloc', 'srand', 'strtod',
'strtol', 'strtoul', 'system',
//string.h
'memchr', 'memcmp', 'memcpy', 'memmove', 'memset', 'strcat',
'strchr', 'strcmp', 'strcoll', 'strcpy', 'strcspn', 'strerror',
'strlen', 'strncat', 'strncmp', 'strncpy', 'strpbrk', 'strrchr',
'strspn', 'strstr', 'strtok', 'strxfrm',
//time.h
'asctime', 'clock', 'ctime', 'difftime', 'gmtime', 'localtime',
'mktime', 'strftime', 'time',
//wchar.h
'btowc', 'fgetwc', 'fgetws', 'fputwc', 'fputws', 'fwide',
'fwprintf', 'fwscanf', 'getwc', 'getwchar', 'mbrlen', 'mbrtowc',
'mbsinit', 'mbsrtowcs', 'putwc', 'putwchar', 'swprintf', 'swscanf',
'ungetwc', 'vfwprintf', 'vswprintf', 'vwprintf', 'wcrtomb',
'wcscat', 'wcschr', 'wcscmp', 'wcscoll', 'wcscpy', 'wcscspn',
'wcsftime', 'wcslen', 'wcsncat', 'wcsncmp', 'wcsncpy', 'wcspbrk',
'wcsrchr', 'wcsrtombs', 'wcsspn', 'wcsstr', 'wcstod', 'wcstok',
'wcstol', 'wcstoul', 'wcsxfrm', 'wctob', 'wmemchr', 'wmemcmp',
'wmemcpy', 'wmemmove', 'wmemset', 'wprintf', 'wscanf',
//wctype.h
'iswalnum', 'iswalpha', 'iswcntrl', 'iswctype', 'iswdigit',
'iswgraph', 'iswlower', 'iswprint', 'iswpunct', 'iswspace',
'iswupper', 'iswxdigit', 'towctrans', 'towlower', 'towupper',
'wctrans', 'wctype'
),
4 => array(
'auto', 'char', 'const', 'double', 'float', 'int', 'long',
'register', 'short', 'signed', 'sizeof', 'static', 'struct',
'typedef', 'union', 'unsigned', 'void', 'volatile', 'wchar_t',
'int8', 'int16', 'int32', 'int64',
'uint8', 'uint16', 'uint32', 'uint64',
'int_fast8_t', 'int_fast16_t', 'int_fast32_t', 'int_fast64_t',
'uint_fast8_t', 'uint_fast16_t', 'uint_fast32_t', 'uint_fast64_t',
'int_least8_t', 'int_least16_t', 'int_least32_t', 'int_least64_t',
'uint_least8_t', 'uint_least16_t', 'uint_least32_t', 'uint_least64_t',
'int8_t', 'int16_t', 'int32_t', 'int64_t',
'uint8_t', 'uint16_t', 'uint32_t', 'uint64_t',
'intmax_t', 'uintmax_t', 'intptr_t', 'uintptr_t',
'size_t', 'off_t'
),
),
'SYMBOLS' => array(
'(', ')', '{', '}', '[', ']',
'+', '-', '*', '/', '%',
'=', '<', '>',
'!', '^', '&', '|',
'?', ':',
';', ','
),
'CASE_SENSITIVE' => array(
GESHI_COMMENTS => false,
1 => true,
2 => true,
3 => true,
4 => true,
),
'STYLES' => array(
'KEYWORDS' => array(
1 => 'color: #b1b100;',
2 => 'color: #000000; font-weight: bold;',
3 => 'color: #000066;',
4 => 'color: #993333;'
),
'COMMENTS' => array(
1 => 'color: #666666; font-style: italic;',
2 => 'color: #339933;',
'MULTI' => 'color: #808080; font-style: italic;'
),
'ESCAPE_CHAR' => array(
0 => 'color: #000099; font-weight: bold;',
1 => 'color: #000099; font-weight: bold;',
2 => 'color: #660099; font-weight: bold;',
3 => 'color: #660099; font-weight: bold;',
4 => 'color: #660099; font-weight: bold;',
5 => 'color: #006699; font-weight: bold;',
'HARD' => '',
),
'BRACKETS' => array(
0 => 'color: #009900;'
),
'STRINGS' => array(
0 => 'color: #ff0000;'
),
'NUMBERS' => array(
0 => 'color: #0000dd;',
GESHI_NUMBER_BIN_PREFIX_0B => 'color: #208080;',
GESHI_NUMBER_OCT_PREFIX => 'color: #208080;',
GESHI_NUMBER_HEX_PREFIX => 'color: #208080;',
GESHI_NUMBER_FLT_SCI_SHORT => 'color:#800080;',
GESHI_NUMBER_FLT_SCI_ZERO => 'color:#800080;',
GESHI_NUMBER_FLT_NONSCI_F => 'color:#800080;',
GESHI_NUMBER_FLT_NONSCI => 'color:#800080;'
),
'METHODS' => array(
1 => 'color: #202020;',
2 => 'color: #202020;'
),
'SYMBOLS' => array(
0 => 'color: #339933;'
),
'REGEXPS' => array(
),
'SCRIPT' => array(
)
),
'URLS' => array(
1 => '',
2 => '',
3 => 'http://www.opengroup.org/onlinepubs/009695399/functions/{FNAMEL}.html',
4 => ''
),
'OOLANG' => true,
'OBJECT_SPLITTERS' => array(
1 => '.',
2 => '::'
),
'REGEXPS' => array(
),
'STRICT_MODE_APPLIES' => GESHI_NEVER,
'SCRIPT_DELIMITERS' => array(
),
'HIGHLIGHT_STRICT_BLOCK' => array(
),
'TAB_WIDTH' => 4
);
?>

View File

@ -1,240 +0,0 @@
<?php
/*************************************************************************************
* cpp.php
* -------
* Author: Dennis Bayer (Dennis.Bayer@mnifh-giessen.de)
* Contributors:
* - M. Uli Kusterer (witness.of.teachtext@gmx.net)
* - Jack Lloyd (lloyd@randombit.net)
* Copyright: (c) 2004 Dennis Bayer, Nigel McNie (http://qbnz.com/highlighter)
* Release Version: 1.0.8.11
* Date Started: 2004/09/27
*
* C++ language file for GeSHi.
*
* CHANGES
* -------
* 2008/05/23 (1.0.7.22)
* - Added description of extra language features (SF#1970248)
* 2004/XX/XX (1.0.2)
* - Added several new keywords (Jack Lloyd)
* 2004/11/27 (1.0.1)
* - Added StdCLib function and constant names, changed color scheme to
* a cleaner one. (M. Uli Kusterer)
* - Added support for multiple object splitters
* 2004/10/27 (1.0.0)
* - First Release
*
* TODO (updated 2004/11/27)
* -------------------------
*
*************************************************************************************
*
* This file is part of GeSHi.
*
* GeSHi is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* GeSHi is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with GeSHi; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*
************************************************************************************/
$language_data = array (
'LANG_NAME' => 'C++',
'COMMENT_SINGLE' => array(1 => '//', 2 => '#'),
'COMMENT_MULTI' => array('/*' => '*/'),
'COMMENT_REGEXP' => array(
//Multiline-continued single-line comments
1 => '/\/\/(?:\\\\\\\\|\\\\\\n|.)*$/m',
//Multiline-continued preprocessor define
2 => '/#(?:\\\\\\\\|\\\\\\n|.)*$/m'
),
'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,
'QUOTEMARKS' => array("'", '"'),
'ESCAPE_CHAR' => '',
'ESCAPE_REGEXP' => array(
//Simple Single Char Escapes
1 => "#\\\\[abfnrtv\\\'\"?\n]#i",
//Hexadecimal Char Specs
2 => "#\\\\x[\da-fA-F]{2}#",
//Hexadecimal Char Specs
3 => "#\\\\u[\da-fA-F]{4}#",
//Hexadecimal Char Specs
4 => "#\\\\U[\da-fA-F]{8}#",
//Octal Char Specs
5 => "#\\\\[0-7]{1,3}#"
),
'NUMBERS' =>
GESHI_NUMBER_INT_BASIC | GESHI_NUMBER_INT_CSTYLE | GESHI_NUMBER_BIN_PREFIX_0B |
GESHI_NUMBER_OCT_PREFIX | GESHI_NUMBER_HEX_PREFIX | GESHI_NUMBER_FLT_NONSCI |
GESHI_NUMBER_FLT_NONSCI_F | GESHI_NUMBER_FLT_SCI_SHORT | GESHI_NUMBER_FLT_SCI_ZERO,
'KEYWORDS' => array(
1 => array(
'break', 'case', 'continue', 'default', 'do', 'else', 'for', 'goto', 'if', 'return',
'switch', 'throw', 'while'
),
2 => array(
'NULL', 'false', 'true', 'enum', 'errno', 'EDOM',
'ERANGE', 'FLT_RADIX', 'FLT_ROUNDS', 'FLT_DIG', 'DBL_DIG', 'LDBL_DIG',
'FLT_EPSILON', 'DBL_EPSILON', 'LDBL_EPSILON', 'FLT_MANT_DIG', 'DBL_MANT_DIG',
'LDBL_MANT_DIG', 'FLT_MAX', 'DBL_MAX', 'LDBL_MAX', 'FLT_MAX_EXP', 'DBL_MAX_EXP',
'LDBL_MAX_EXP', 'FLT_MIN', 'DBL_MIN', 'LDBL_MIN', 'FLT_MIN_EXP', 'DBL_MIN_EXP',
'LDBL_MIN_EXP', 'CHAR_BIT', 'CHAR_MAX', 'CHAR_MIN', 'SCHAR_MAX', 'SCHAR_MIN',
'UCHAR_MAX', 'SHRT_MAX', 'SHRT_MIN', 'USHRT_MAX', 'INT_MAX', 'INT_MIN',
'UINT_MAX', 'LONG_MAX', 'LONG_MIN', 'ULONG_MAX', 'HUGE_VAL', 'SIGABRT',
'SIGFPE', 'SIGILL', 'SIGINT', 'SIGSEGV', 'SIGTERM', 'SIG_DFL', 'SIG_ERR',
'SIG_IGN', 'BUFSIZ', 'EOF', 'FILENAME_MAX', 'FOPEN_MAX', 'L_tmpnam',
'SEEK_CUR', 'SEEK_END', 'SEEK_SET', 'TMP_MAX', 'stdin', 'stdout', 'stderr',
'EXIT_FAILURE', 'EXIT_SUCCESS', 'RAND_MAX', 'CLOCKS_PER_SEC',
'virtual', 'public', 'private', 'protected', 'template', 'using', 'namespace',
'try', 'catch', 'inline', 'dynamic_cast', 'const_cast', 'reinterpret_cast',
'static_cast', 'explicit', 'friend', 'typename', 'typeid', 'class'
),
3 => array(
'cin', 'cerr', 'clog', 'cout', 'delete', 'new', 'this',
'printf', 'fprintf', 'snprintf', 'sprintf', 'assert',
'isalnum', 'isalpha', 'isdigit', 'iscntrl', 'isgraph', 'islower', 'isprint',
'ispunct', 'isspace', 'isupper', 'isxdigit', 'tolower', 'toupper',
'exp', 'log', 'log10', 'pow', 'sqrt', 'ceil', 'floor', 'fabs', 'ldexp',
'frexp', 'modf', 'fmod', 'sin', 'cos', 'tan', 'asin', 'acos', 'atan', 'atan2',
'sinh', 'cosh', 'tanh', 'setjmp', 'longjmp',
'va_start', 'va_arg', 'va_end', 'offsetof', 'sizeof', 'fopen', 'freopen',
'fflush', 'fclose', 'remove', 'rename', 'tmpfile', 'tmpname', 'setvbuf',
'setbuf', 'vfprintf', 'vprintf', 'vsprintf', 'fscanf', 'scanf', 'sscanf',
'fgetc', 'fgets', 'fputc', 'fputs', 'getc', 'getchar', 'gets', 'putc',
'putchar', 'puts', 'ungetc', 'fread', 'fwrite', 'fseek', 'ftell', 'rewind',
'fgetpos', 'fsetpos', 'clearerr', 'feof', 'ferror', 'perror', 'abs', 'labs',
'div', 'ldiv', 'atof', 'atoi', 'atol', 'strtod', 'strtol', 'strtoul', 'calloc',
'malloc', 'realloc', 'free', 'abort', 'exit', 'atexit', 'system', 'getenv',
'bsearch', 'qsort', 'rand', 'srand', 'strcpy', 'strncpy', 'strcat', 'strncat',
'strcmp', 'strncmp', 'strcoll', 'strchr', 'strrchr', 'strspn', 'strcspn',
'strpbrk', 'strstr', 'strlen', 'strerror', 'strtok', 'strxfrm', 'memcpy',
'memmove', 'memcmp', 'memchr', 'memset', 'clock', 'time', 'difftime', 'mktime',
'asctime', 'ctime', 'gmtime', 'localtime', 'strftime'
),
4 => array(
'auto', 'bool', 'char', 'const', 'double', 'float', 'int', 'long', 'longint',
'register', 'short', 'shortint', 'signed', 'static', 'struct',
'typedef', 'union', 'unsigned', 'void', 'volatile', 'extern', 'jmp_buf',
'signal', 'raise', 'va_list', 'ptrdiff_t', 'size_t', 'FILE', 'fpos_t',
'div_t', 'ldiv_t', 'clock_t', 'time_t', 'tm', 'wchar_t',
'int8', 'int16', 'int32', 'int64',
'uint8', 'uint16', 'uint32', 'uint64',
'int_fast8_t', 'int_fast16_t', 'int_fast32_t', 'int_fast64_t',
'uint_fast8_t', 'uint_fast16_t', 'uint_fast32_t', 'uint_fast64_t',
'int_least8_t', 'int_least16_t', 'int_least32_t', 'int_least64_t',
'uint_least8_t', 'uint_least16_t', 'uint_least32_t', 'uint_least64_t',
'int8_t', 'int16_t', 'int32_t', 'int64_t',
'uint8_t', 'uint16_t', 'uint32_t', 'uint64_t',
'intmax_t', 'uintmax_t', 'intptr_t', 'uintptr_t'
),
),
'SYMBOLS' => array(
0 => array('(', ')', '{', '}', '[', ']'),
1 => array('<', '>','='),
2 => array('+', '-', '*', '/', '%'),
3 => array('!', '^', '&', '|'),
4 => array('?', ':', ';')
),
'CASE_SENSITIVE' => array(
GESHI_COMMENTS => false,
1 => true,
2 => true,
3 => true,
4 => true,
),
'STYLES' => array(
'KEYWORDS' => array(
1 => 'color: #0000ff;',
2 => 'color: #0000ff;',
3 => 'color: #0000dd;',
4 => 'color: #0000ff;'
),
'COMMENTS' => array(
1 => 'color: #666666;',
2 => 'color: #339900;',
'MULTI' => 'color: #ff0000; font-style: italic;'
),
'ESCAPE_CHAR' => array(
0 => 'color: #000099; font-weight: bold;',
1 => 'color: #000099; font-weight: bold;',
2 => 'color: #660099; font-weight: bold;',
3 => 'color: #660099; font-weight: bold;',
4 => 'color: #660099; font-weight: bold;',
5 => 'color: #006699; font-weight: bold;',
'HARD' => '',
),
'BRACKETS' => array(
0 => 'color: #008000;'
),
'STRINGS' => array(
0 => 'color: #FF0000;'
),
'NUMBERS' => array(
0 => 'color: #0000dd;',
GESHI_NUMBER_BIN_PREFIX_0B => 'color: #208080;',
GESHI_NUMBER_OCT_PREFIX => 'color: #208080;',
GESHI_NUMBER_HEX_PREFIX => 'color: #208080;',
GESHI_NUMBER_FLT_SCI_SHORT => 'color:#800080;',
GESHI_NUMBER_FLT_SCI_ZERO => 'color:#800080;',
GESHI_NUMBER_FLT_NONSCI_F => 'color:#800080;',
GESHI_NUMBER_FLT_NONSCI => 'color:#800080;'
),
'METHODS' => array(
1 => 'color: #007788;',
2 => 'color: #007788;'
),
'SYMBOLS' => array(
0 => 'color: #008000;',
1 => 'color: #000080;',
2 => 'color: #000040;',
3 => 'color: #000040;',
4 => 'color: #008080;'
),
'REGEXPS' => array(
),
'SCRIPT' => array(
)
),
'URLS' => array(
1 => '',
2 => '',
3 => '',
4 => ''
),
'OOLANG' => true,
'OBJECT_SPLITTERS' => array(
1 => '.',
2 => '::'
),
'REGEXPS' => array(
),
'STRICT_MODE_APPLIES' => GESHI_NEVER,
'SCRIPT_DELIMITERS' => array(
),
'HIGHLIGHT_STRICT_BLOCK' => array(
),
'TAB_WIDTH' => 4,
'PARSER_CONTROL' => array(
'KEYWORDS' => array(
'DISALLOWED_BEFORE' => "(?<![a-zA-Z0-9\$_\|\#])",
'DISALLOWED_AFTER' => "(?![a-zA-Z0-9_\|%\\-])"
)
)
);
?>

View File

@ -1,52 +0,0 @@
/*! Inspired by: http://aboutcode.net/2010/11/11/list-github-projects-using-javascript.html */
/* jshint browser:true, jquery:true */
// htmlEntities taken from http://css-tricks.com/snippets/javascript/htmlentities-for-javascript/
function htmlEntities(str) {
"use strict";
var ret = String(str)
.replace(/&/g, "&amp;")
.replace(/</g, "&lt;")
.replace(/>/g, "&gt;")
.replace(/"/g, "&quot;");
return ret;
}
jQuery.fn.listCommits = function(username, repository, branch) {
"use strict";
this.html("<span>Querying GitHub for recent commits&hellip;</span>");
var target = this;
$.getJSON("https://api.github.com/repos/" + username + "/" + repository + "/commits?sha=" + branch + "&callback=?", function(response) {
var commits = response.data;
var list = $("<ul class='rssfeeditems'/>");
target.empty().append(list);
$(commits).each(function(i) {
var githubUrl = "https://github.com/" + username + "/" + repository + "/commit/" + this.sha;
var shortMessage = htmlEntities(cutLines(this.commit.message));
if (this.author !== null) {
list.append("<li><a href='" + githubUrl + "'>" + shortMessage + "</a> <em>by <strong><a class='author' href='" + "https://github.com/" + this.author.login + "'>" + this.author.login + "</a></strong></em></li>");
} else {
list.append("<li><a href='" + githubUrl + "'>" + shortMessage + "</a> <em>by <strong>" + this.commit.author.name + "</strong></em></li>");
}
if (i === 9) {
return false;
}
});
});
function cutLines(message) {
var lineFeed = message.indexOf("\n");
if (lineFeed > -1) {
return message.slice(0, lineFeed);
}
return message;
}
};

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -1,231 +0,0 @@
function $JSCompiler_alias_THROW$$($jscomp_throw_param$$){throw $jscomp_throw_param$$;}var $JSCompiler_alias_VOID$$=void 0,$JSCompiler_alias_TRUE$$=!0,$JSCompiler_alias_NULL$$=null,$JSCompiler_alias_FALSE$$=!1,$JSCompiler_prototypeAlias$$,$goog$global$$=this;
function $goog$typeOf$$($value$$39$$){var $s$$2$$=typeof $value$$39$$;if("object"==$s$$2$$)if($value$$39$$){if($value$$39$$ instanceof Array)return"array";if($value$$39$$ instanceof Object)return $s$$2$$;var $className$$1$$=Object.prototype.toString.call($value$$39$$);if("[object Window]"==$className$$1$$)return"object";if("[object Array]"==$className$$1$$||"number"==typeof $value$$39$$.length&&"undefined"!=typeof $value$$39$$.splice&&"undefined"!=typeof $value$$39$$.propertyIsEnumerable&&!$value$$39$$.propertyIsEnumerable("splice"))return"array";
if("[object Function]"==$className$$1$$||"undefined"!=typeof $value$$39$$.call&&"undefined"!=typeof $value$$39$$.propertyIsEnumerable&&!$value$$39$$.propertyIsEnumerable("call"))return"function"}else return"null";else if("function"==$s$$2$$&&"undefined"==typeof $value$$39$$.call)return"object";return $s$$2$$}function $goog$isArray$$($val$$3$$){return"array"==$goog$typeOf$$($val$$3$$)}
function $goog$isArrayLike$$($val$$4$$){var $type$$52$$=$goog$typeOf$$($val$$4$$);return"array"==$type$$52$$||"object"==$type$$52$$&&"number"==typeof $val$$4$$.length}function $goog$isString$$($val$$6$$){return"string"==typeof $val$$6$$}function $goog$isNumber$$($val$$8$$){return"number"==typeof $val$$8$$}function $goog$isFunction$$($val$$9$$){return"function"==$goog$typeOf$$($val$$9$$)}
function $goog$isObject$$($val$$10$$){var $type$$53$$=typeof $val$$10$$;return"object"==$type$$53$$&&$val$$10$$!=$JSCompiler_alias_NULL$$||"function"==$type$$53$$}function $goog$getUid$$($obj$$20$$){return $obj$$20$$[$goog$UID_PROPERTY_$$]||($obj$$20$$[$goog$UID_PROPERTY_$$]=++$goog$uidCounter_$$)}var $goog$UID_PROPERTY_$$="closure_uid_"+Math.floor(2147483648*Math.random()).toString(36),$goog$uidCounter_$$=0;
function $goog$bindNative_$$($fn$$,$selfObj$$1$$,$var_args$$25$$){return $fn$$.call.apply($fn$$.bind,arguments)}
function $goog$bindJs_$$($fn$$1$$,$selfObj$$2$$,$var_args$$26$$){$fn$$1$$||$JSCompiler_alias_THROW$$(Error());if(2<arguments.length){var $boundArgs$$=Array.prototype.slice.call(arguments,2);return function(){var $newArgs$$=Array.prototype.slice.call(arguments);Array.prototype.unshift.apply($newArgs$$,$boundArgs$$);return $fn$$1$$.apply($selfObj$$2$$,$newArgs$$)}}return function(){return $fn$$1$$.apply($selfObj$$2$$,arguments)}}
function $goog$bind$$($fn$$2$$,$selfObj$$3$$,$var_args$$27$$){$goog$bind$$=Function.prototype.bind&&-1!=Function.prototype.bind.toString().indexOf("native code")?$goog$bindNative_$$:$goog$bindJs_$$;return $goog$bind$$.apply($JSCompiler_alias_NULL$$,arguments)}
function $goog$partial$$($fn$$3$$,$var_args$$28$$){var $args$$=Array.prototype.slice.call(arguments,1);return function(){var $newArgs$$1$$=Array.prototype.slice.call(arguments);$newArgs$$1$$.unshift.apply($newArgs$$1$$,$args$$);return $fn$$3$$.apply(this,$newArgs$$1$$)}}var $goog$now$$=Date.now||function(){return+new Date};
function $goog$inherits$$($childCtor$$,$parentCtor$$){function $tempCtor$$(){}$tempCtor$$.prototype=$parentCtor$$.prototype;$childCtor$$.$superClass_$=$parentCtor$$.prototype;$childCtor$$.prototype=new $tempCtor$$};function $pn$ui$filter$FilterState$$($id$$1$$,$value$$41$$,$idx$$,$type$$55$$){this.id=$id$$1$$;this.value=$value$$41$$;this.$idx$=$idx$$;this.type=$type$$55$$}$pn$ui$filter$FilterState$$.prototype.toString=function $$pn$ui$filter$FilterState$$$$toString$(){return"id["+this.id+"] value["+this.value+"] idx["+this.$idx$+"] type["+this.type+"]"};function $pn$ui$filter$GenericListFilterOptions$$(){}$pn$ui$filter$GenericListFilterOptions$$.prototype.additionalFilterTriggers=[];$pn$ui$filter$GenericListFilterOptions$$.prototype.clearFiltersControls=[];$pn$ui$filter$GenericListFilterOptions$$.prototype.filterDelay=250;$pn$ui$filter$GenericListFilterOptions$$.prototype.filterToolTipMessage='Quotes (") match phrases. (not) excludes a match from the results. (or) can be used to do Or searches. I.e. [red or blue] will match either red or blue. Numeric values support >=, >, <=, <, = and != operators.';
$pn$ui$filter$GenericListFilterOptions$$.prototype.enableCookies=$JSCompiler_alias_TRUE$$;$pn$ui$filter$GenericListFilterOptions$$.prototype.matchingElement=$JSCompiler_alias_NULL$$;$pn$ui$filter$GenericListFilterOptions$$.prototype.filteringElements=$JSCompiler_alias_NULL$$;$pn$ui$filter$GenericListFilterOptions$$.prototype.sharedCookieId=$JSCompiler_alias_NULL$$;function $pn$ui$filter$TableFilterOptions$$(){}$goog$inherits$$($pn$ui$filter$TableFilterOptions$$,$pn$ui$filter$GenericListFilterOptions$$);$pn$ui$filter$TableFilterOptions$$.prototype.selectOptionLabel="Select...";$pn$ui$filter$TableFilterOptions$$.prototype.frozenHeaderTable=$JSCompiler_alias_NULL$$;function $goog$string$subs$$($str$$12$$,$var_args$$30$$){for(var $i$$5$$=1;$i$$5$$<arguments.length;$i$$5$$++){var $replacement$$=String(arguments[$i$$5$$]).replace(/\$/g,"$$$$");$str$$12$$=$str$$12$$.replace(/\%s/,$replacement$$)}return $str$$12$$}function $goog$string$trim$$($str$$25$$){return $str$$25$$.replace(/^[\s\xa0]+|[\s\xa0]+$/g,"")}
function $goog$string$htmlEscape$$($str$$31$$){if(!$goog$string$allRe_$$.test($str$$31$$))return $str$$31$$;-1!=$str$$31$$.indexOf("&")&&($str$$31$$=$str$$31$$.replace($goog$string$amperRe_$$,"&amp;"));-1!=$str$$31$$.indexOf("<")&&($str$$31$$=$str$$31$$.replace($goog$string$ltRe_$$,"&lt;"));-1!=$str$$31$$.indexOf(">")&&($str$$31$$=$str$$31$$.replace($goog$string$gtRe_$$,"&gt;"));-1!=$str$$31$$.indexOf('"')&&($str$$31$$=$str$$31$$.replace($goog$string$quotRe_$$,"&quot;"));return $str$$31$$}
var $goog$string$amperRe_$$=/&/g,$goog$string$ltRe_$$=/</g,$goog$string$gtRe_$$=/>/g,$goog$string$quotRe_$$=/\"/g,$goog$string$allRe_$$=/[&<>\"]/;
function $goog$string$unescapeEntitiesUsingDom_$$($str$$33$$){var $seen$$={"&amp;":"&","&lt;":"<","&gt;":">","&quot;":'"'},$div$$=document.createElement("div");return $str$$33$$.replace($goog$string$HTML_ENTITY_PATTERN_$$,function($s$$3$$,$entity$$){var $value$$42$$=$seen$$[$s$$3$$];if($value$$42$$)return $value$$42$$;if("#"==$entity$$.charAt(0)){var $n$$1$$=Number("0"+$entity$$.substr(1));isNaN($n$$1$$)||($value$$42$$=String.fromCharCode($n$$1$$))}$value$$42$$||($div$$.innerHTML=$s$$3$$+" ",$value$$42$$=
$div$$.firstChild.nodeValue.slice(0,-1));return $seen$$[$s$$3$$]=$value$$42$$})}function $goog$string$unescapePureXmlEntities_$$($str$$34$$){return $str$$34$$.replace(/&([^;]+);/g,function($s$$4$$,$entity$$1$$){switch($entity$$1$$){case "amp":return"&";case "lt":return"<";case "gt":return">";case "quot":return'"';default:if("#"==$entity$$1$$.charAt(0)){var $n$$2$$=Number("0"+$entity$$1$$.substr(1));if(!isNaN($n$$2$$))return String.fromCharCode($n$$2$$)}return $s$$4$$}})}
var $goog$string$HTML_ENTITY_PATTERN_$$=/&([^;\s<&]+);?/g;function $goog$string$toCamelCase$$($str$$42$$){return String($str$$42$$).replace(/\-([a-z])/g,function($all$$,$match$$){return $match$$.toUpperCase()})}
function $goog$string$toTitleCase$$($str$$44$$){var $delimiters$$=$goog$isString$$($JSCompiler_alias_VOID$$)?"undefined".replace(/([-()\[\]{}+?*.$\^|,:#<!\\])/g,"\\$1").replace(/\x08/g,"\\x08"):"\\s";return $str$$44$$.replace(RegExp("(^"+($delimiters$$?"|["+$delimiters$$+"]+":"")+")([a-z])","g"),function($all$$1$$,$p1$$,$p2$$){return $p1$$+$p2$$.toUpperCase()})};var $goog$userAgent$detectedOpera_$$,$goog$userAgent$detectedIe_$$,$goog$userAgent$detectedWebkit_$$,$goog$userAgent$detectedGecko_$$;function $goog$userAgent$getUserAgentString$$(){return $goog$global$$.navigator?$goog$global$$.navigator.userAgent:$JSCompiler_alias_NULL$$}$goog$userAgent$detectedGecko_$$=$goog$userAgent$detectedWebkit_$$=$goog$userAgent$detectedIe_$$=$goog$userAgent$detectedOpera_$$=$JSCompiler_alias_FALSE$$;var $ua$$inline_21$$;
if($ua$$inline_21$$=$goog$userAgent$getUserAgentString$$()){var $navigator$$inline_22$$=$goog$global$$.navigator;$goog$userAgent$detectedOpera_$$=0==$ua$$inline_21$$.indexOf("Opera");$goog$userAgent$detectedIe_$$=!$goog$userAgent$detectedOpera_$$&&-1!=$ua$$inline_21$$.indexOf("MSIE");$goog$userAgent$detectedWebkit_$$=!$goog$userAgent$detectedOpera_$$&&-1!=$ua$$inline_21$$.indexOf("WebKit");$goog$userAgent$detectedGecko_$$=!$goog$userAgent$detectedOpera_$$&&!$goog$userAgent$detectedWebkit_$$&&"Gecko"==
$navigator$$inline_22$$.product}var $goog$userAgent$OPERA$$=$goog$userAgent$detectedOpera_$$,$goog$userAgent$IE$$=$goog$userAgent$detectedIe_$$,$goog$userAgent$GECKO$$=$goog$userAgent$detectedGecko_$$,$goog$userAgent$WEBKIT$$=$goog$userAgent$detectedWebkit_$$,$navigator$$inline_24$$=$goog$global$$.navigator,$goog$userAgent$MAC$$=-1!=($navigator$$inline_24$$&&$navigator$$inline_24$$.platform||"").indexOf("Mac");
function $goog$userAgent$getDocumentMode_$$(){var $doc$$4$$=$goog$global$$.document;return $doc$$4$$?$doc$$4$$.documentMode:$JSCompiler_alias_VOID$$}var $goog$userAgent$VERSION$$;
a:{var $version$$inline_27$$="",$re$$inline_28$$;if($goog$userAgent$OPERA$$&&$goog$global$$.opera)var $operaVersion$$inline_29$$=$goog$global$$.opera.version,$version$$inline_27$$="function"==typeof $operaVersion$$inline_29$$?$operaVersion$$inline_29$$():$operaVersion$$inline_29$$;else if($goog$userAgent$GECKO$$?$re$$inline_28$$=/rv\:([^\);]+)(\)|;)/:$goog$userAgent$IE$$?$re$$inline_28$$=/MSIE\s+([^\);]+)(\)|;)/:$goog$userAgent$WEBKIT$$&&($re$$inline_28$$=/WebKit\/(\S+)/),$re$$inline_28$$)var $arr$$inline_30$$=
$re$$inline_28$$.exec($goog$userAgent$getUserAgentString$$()),$version$$inline_27$$=$arr$$inline_30$$?$arr$$inline_30$$[1]:"";if($goog$userAgent$IE$$){var $docMode$$inline_31$$=$goog$userAgent$getDocumentMode_$$();if($docMode$$inline_31$$>parseFloat($version$$inline_27$$)){$goog$userAgent$VERSION$$=String($docMode$$inline_31$$);break a}}$goog$userAgent$VERSION$$=$version$$inline_27$$}var $goog$userAgent$isVersionCache_$$={};
function $goog$userAgent$isVersion$$($version$$8$$){var $JSCompiler_temp$$13_order$$inline_35$$;if(!($JSCompiler_temp$$13_order$$inline_35$$=$goog$userAgent$isVersionCache_$$[$version$$8$$])){$JSCompiler_temp$$13_order$$inline_35$$=0;for(var $v1Subs$$inline_36$$=$goog$string$trim$$(String($goog$userAgent$VERSION$$)).split("."),$v2Subs$$inline_37$$=$goog$string$trim$$(String($version$$8$$)).split("."),$subCount$$inline_38$$=Math.max($v1Subs$$inline_36$$.length,$v2Subs$$inline_37$$.length),$subIdx$$inline_39$$=
0;0==$JSCompiler_temp$$13_order$$inline_35$$&&$subIdx$$inline_39$$<$subCount$$inline_38$$;$subIdx$$inline_39$$++){var $v1Sub$$inline_40$$=$v1Subs$$inline_36$$[$subIdx$$inline_39$$]||"",$v2Sub$$inline_41$$=$v2Subs$$inline_37$$[$subIdx$$inline_39$$]||"",$v1CompParser$$inline_42$$=RegExp("(\\d*)(\\D*)","g"),$v2CompParser$$inline_43$$=RegExp("(\\d*)(\\D*)","g");do{var $v1Comp$$inline_44$$=$v1CompParser$$inline_42$$.exec($v1Sub$$inline_40$$)||["","",""],$v2Comp$$inline_45$$=$v2CompParser$$inline_43$$.exec($v2Sub$$inline_41$$)||
["","",""];if(0==$v1Comp$$inline_44$$[0].length&&0==$v2Comp$$inline_45$$[0].length)break;$JSCompiler_temp$$13_order$$inline_35$$=((0==$v1Comp$$inline_44$$[1].length?0:parseInt($v1Comp$$inline_44$$[1],10))<(0==$v2Comp$$inline_45$$[1].length?0:parseInt($v2Comp$$inline_45$$[1],10))?-1:(0==$v1Comp$$inline_44$$[1].length?0:parseInt($v1Comp$$inline_44$$[1],10))>(0==$v2Comp$$inline_45$$[1].length?0:parseInt($v2Comp$$inline_45$$[1],10))?1:0)||((0==$v1Comp$$inline_44$$[2].length)<(0==$v2Comp$$inline_45$$[2].length)?
-1:(0==$v1Comp$$inline_44$$[2].length)>(0==$v2Comp$$inline_45$$[2].length)?1:0)||($v1Comp$$inline_44$$[2]<$v2Comp$$inline_45$$[2]?-1:$v1Comp$$inline_44$$[2]>$v2Comp$$inline_45$$[2]?1:0)}while(0==$JSCompiler_temp$$13_order$$inline_35$$)}$JSCompiler_temp$$13_order$$inline_35$$=$goog$userAgent$isVersionCache_$$[$version$$8$$]=0<=$JSCompiler_temp$$13_order$$inline_35$$}return $JSCompiler_temp$$13_order$$inline_35$$}
var $doc$$inline_47$$=$goog$global$$.document,$goog$userAgent$DOCUMENT_MODE$$=!$doc$$inline_47$$||!$goog$userAgent$IE$$?$JSCompiler_alias_VOID$$:$goog$userAgent$getDocumentMode_$$()||("CSS1Compat"==$doc$$inline_47$$.compatMode?parseInt($goog$userAgent$VERSION$$,10):5);function $goog$object$forEach$$($obj$$24$$,$f$$){for(var $key$$16$$ in $obj$$24$$)$f$$.call($JSCompiler_alias_VOID$$,$obj$$24$$[$key$$16$$],$key$$16$$,$obj$$24$$)}function $goog$object$getValues$$($obj$$33$$){var $res$$2$$=[],$i$$12$$=0,$key$$24$$;for($key$$24$$ in $obj$$33$$)$res$$2$$[$i$$12$$++]=$obj$$33$$[$key$$24$$];return $res$$2$$}
function $goog$object$getKeys$$($obj$$34$$){var $res$$3$$=[],$i$$13$$=0,$key$$25$$;for($key$$25$$ in $obj$$34$$)$res$$3$$[$i$$13$$++]=$key$$25$$;return $res$$3$$}var $goog$object$PROTOTYPE_FIELDS_$$="constructor hasOwnProperty isPrototypeOf propertyIsEnumerable toLocaleString toString valueOf".split(" ");
function $goog$object$extend$$($target$$40$$,$var_args$$33$$){for(var $key$$39$$,$source$$2$$,$i$$16$$=1;$i$$16$$<arguments.length;$i$$16$$++){$source$$2$$=arguments[$i$$16$$];for($key$$39$$ in $source$$2$$)$target$$40$$[$key$$39$$]=$source$$2$$[$key$$39$$];for(var $j$$1$$=0;$j$$1$$<$goog$object$PROTOTYPE_FIELDS_$$.length;$j$$1$$++)$key$$39$$=$goog$object$PROTOTYPE_FIELDS_$$[$j$$1$$],Object.prototype.hasOwnProperty.call($source$$2$$,$key$$39$$)&&($target$$40$$[$key$$39$$]=$source$$2$$[$key$$39$$])}}
;function $goog$debug$Error$$($opt_msg$$){Error.captureStackTrace?Error.captureStackTrace(this,$goog$debug$Error$$):this.stack=Error().stack||"";$opt_msg$$&&(this.message=String($opt_msg$$))}$goog$inherits$$($goog$debug$Error$$,Error);$goog$debug$Error$$.prototype.name="CustomError";function $goog$asserts$AssertionError$$($messagePattern$$,$messageArgs$$){$messageArgs$$.unshift($messagePattern$$);$goog$debug$Error$$.call(this,$goog$string$subs$$.apply($JSCompiler_alias_NULL$$,$messageArgs$$));$messageArgs$$.shift();this.$messagePattern$=$messagePattern$$}$goog$inherits$$($goog$asserts$AssertionError$$,$goog$debug$Error$$);$goog$asserts$AssertionError$$.prototype.name="AssertionError";
function $goog$asserts$assert$$($condition$$1$$,$opt_message$$8$$,$var_args$$36$$){if(!$condition$$1$$){var $givenArgs$$inline_50$$=Array.prototype.slice.call(arguments,2),$message$$inline_53$$="Assertion failed";if($opt_message$$8$$)var $message$$inline_53$$=$message$$inline_53$$+(": "+$opt_message$$8$$),$args$$inline_54$$=$givenArgs$$inline_50$$;$JSCompiler_alias_THROW$$(new $goog$asserts$AssertionError$$(""+$message$$inline_53$$,$args$$inline_54$$||[]))}return $condition$$1$$};var $goog$array$ARRAY_PROTOTYPE_$$=Array.prototype;
function $goog$array$indexOf$$($arr$$12$$,$obj$$53$$,$fromIndex_i$$19_opt_fromIndex$$7$$){$fromIndex_i$$19_opt_fromIndex$$7$$=$fromIndex_i$$19_opt_fromIndex$$7$$==$JSCompiler_alias_NULL$$?0:0>$fromIndex_i$$19_opt_fromIndex$$7$$?Math.max(0,$arr$$12$$.length+$fromIndex_i$$19_opt_fromIndex$$7$$):$fromIndex_i$$19_opt_fromIndex$$7$$;if($goog$isString$$($arr$$12$$))return!$goog$isString$$($obj$$53$$)||1!=$obj$$53$$.length?-1:$arr$$12$$.indexOf($obj$$53$$,$fromIndex_i$$19_opt_fromIndex$$7$$);for(;$fromIndex_i$$19_opt_fromIndex$$7$$<
$arr$$12$$.length;$fromIndex_i$$19_opt_fromIndex$$7$$++)if($fromIndex_i$$19_opt_fromIndex$$7$$ in $arr$$12$$&&$arr$$12$$[$fromIndex_i$$19_opt_fromIndex$$7$$]===$obj$$53$$)return $fromIndex_i$$19_opt_fromIndex$$7$$;return-1}
function $goog$array$forEach$$($arr$$16$$,$f$$8$$,$opt_obj$$7$$){for(var $l$$2$$=$arr$$16$$.length,$arr2$$=$goog$isString$$($arr$$16$$)?$arr$$16$$.split(""):$arr$$16$$,$i$$21$$=0;$i$$21$$<$l$$2$$;$i$$21$$++)$i$$21$$ in $arr2$$&&$f$$8$$.call($opt_obj$$7$$,$arr2$$[$i$$21$$],$i$$21$$,$arr$$16$$)}
function $goog$array$map$$($arr$$21$$,$f$$13$$,$opt_obj$$12$$){for(var $l$$5$$=$arr$$21$$.length,$res$$6$$=Array($l$$5$$),$arr2$$3$$=$goog$isString$$($arr$$21$$)?$arr$$21$$.split(""):$arr$$21$$,$i$$24$$=0;$i$$24$$<$l$$5$$;$i$$24$$++)$i$$24$$ in $arr2$$3$$&&($res$$6$$[$i$$24$$]=$f$$13$$.call($opt_obj$$12$$,$arr2$$3$$[$i$$24$$],$i$$24$$,$arr$$21$$));return $res$$6$$}
function $goog$array$findIndex$$($arr$$31$$,$f$$22$$,$opt_obj$$21$$){for(var $l$$8$$=$arr$$31$$.length,$arr2$$6$$=$goog$isString$$($arr$$31$$)?$arr$$31$$.split(""):$arr$$31$$,$i$$28$$=0;$i$$28$$<$l$$8$$;$i$$28$$++)if($i$$28$$ in $arr2$$6$$&&$f$$22$$.call($opt_obj$$21$$,$arr2$$6$$[$i$$28$$],$i$$28$$,$arr$$31$$))return $i$$28$$;return-1}function $goog$array$concat$$($var_args$$45$$){return $goog$array$ARRAY_PROTOTYPE_$$.concat.apply($goog$array$ARRAY_PROTOTYPE_$$,arguments)}
function $goog$array$toArray$$($object$$2$$){var $length$$15$$=$object$$2$$.length;if(0<$length$$15$$){for(var $rv$$7$$=Array($length$$15$$),$i$$36$$=0;$i$$36$$<$length$$15$$;$i$$36$$++)$rv$$7$$[$i$$36$$]=$object$$2$$[$i$$36$$];return $rv$$7$$}return[]}
function $goog$array$slice$$($arr$$45$$,$start$$5$$,$opt_end$$13$$){$goog$asserts$assert$$($arr$$45$$.length!=$JSCompiler_alias_NULL$$);return 2>=arguments.length?$goog$array$ARRAY_PROTOTYPE_$$.slice.call($arr$$45$$,$start$$5$$):$goog$array$ARRAY_PROTOTYPE_$$.slice.call($arr$$45$$,$start$$5$$,$opt_end$$13$$)}
function $goog$array$equals$$($arr1$$1$$,$arr2$$9$$,$equalsFn_opt_equalsFn$$){if(!$goog$isArrayLike$$($arr1$$1$$)||!$goog$isArrayLike$$($arr2$$9$$)||$arr1$$1$$.length!=$arr2$$9$$.length)return $JSCompiler_alias_FALSE$$;var $l$$10$$=$arr1$$1$$.length;$equalsFn_opt_equalsFn$$=$equalsFn_opt_equalsFn$$||$goog$array$defaultCompareEquality$$;for(var $i$$40$$=0;$i$$40$$<$l$$10$$;$i$$40$$++)if(!$equalsFn_opt_equalsFn$$($arr1$$1$$[$i$$40$$],$arr2$$9$$[$i$$40$$]))return $JSCompiler_alias_FALSE$$;return $JSCompiler_alias_TRUE$$}
function $goog$array$defaultCompareEquality$$($a$$5$$,$b$$4$$){return $a$$5$$===$b$$4$$};function $goog$dom$classes$add$$($element$$9$$,$var_args$$54$$){var $className$$inline_232_classes$$;$className$$inline_232_classes$$=$element$$9$$.className;$className$$inline_232_classes$$=$goog$isString$$($className$$inline_232_classes$$)&&$className$$inline_232_classes$$.match(/\S+/g)||[];for(var $args$$3_args$$inline_57$$=$goog$array$slice$$(arguments,1),$expectedCount$$=$className$$inline_232_classes$$.length+$args$$3_args$$inline_57$$.length,$classes$$inline_56$$=$className$$inline_232_classes$$,
$i$$inline_58$$=0;$i$$inline_58$$<$args$$3_args$$inline_57$$.length;$i$$inline_58$$++)0<=$goog$array$indexOf$$($classes$$inline_56$$,$args$$3_args$$inline_57$$[$i$$inline_58$$])||$classes$$inline_56$$.push($args$$3_args$$inline_57$$[$i$$inline_58$$]);$element$$9$$.className=$className$$inline_232_classes$$.join(" ");return $className$$inline_232_classes$$.length==$expectedCount$$};var $goog$dom$BrowserFeature$CAN_ADD_NAME_OR_TYPE_ATTRIBUTES$$=!$goog$userAgent$IE$$||$goog$userAgent$IE$$&&9<=$goog$userAgent$DOCUMENT_MODE$$;!$goog$userAgent$GECKO$$&&!$goog$userAgent$IE$$||$goog$userAgent$IE$$&&$goog$userAgent$IE$$&&9<=$goog$userAgent$DOCUMENT_MODE$$||$goog$userAgent$GECKO$$&&$goog$userAgent$isVersion$$("1.9.1");var $goog$dom$BrowserFeature$CAN_USE_INNER_TEXT$$=$goog$userAgent$IE$$&&!$goog$userAgent$isVersion$$("9");function $goog$dom$getElementsByTagNameAndClass_$$($className$$10_opt_tag$$1_tagName$$1$$,$opt_class$$1$$,$els_opt_el$$3_parent$$5$$){var $arrayLike_doc$$6$$=document;$els_opt_el$$3_parent$$5$$=$els_opt_el$$3_parent$$5$$||$arrayLike_doc$$6$$;$className$$10_opt_tag$$1_tagName$$1$$=$className$$10_opt_tag$$1_tagName$$1$$&&"*"!=$className$$10_opt_tag$$1_tagName$$1$$?$className$$10_opt_tag$$1_tagName$$1$$.toUpperCase():"";if($els_opt_el$$3_parent$$5$$.querySelectorAll&&$els_opt_el$$3_parent$$5$$.querySelector&&
($className$$10_opt_tag$$1_tagName$$1$$||$opt_class$$1$$))return $els_opt_el$$3_parent$$5$$.querySelectorAll($className$$10_opt_tag$$1_tagName$$1$$+($opt_class$$1$$?"."+$opt_class$$1$$:""));if($opt_class$$1$$&&$els_opt_el$$3_parent$$5$$.getElementsByClassName){$els_opt_el$$3_parent$$5$$=$els_opt_el$$3_parent$$5$$.getElementsByClassName($opt_class$$1$$);if($className$$10_opt_tag$$1_tagName$$1$$){for(var $arrayLike_doc$$6$$={},$len$$=0,$i$$51$$=0,$el$$1$$;$el$$1$$=$els_opt_el$$3_parent$$5$$[$i$$51$$];$i$$51$$++)$className$$10_opt_tag$$1_tagName$$1$$==
$el$$1$$.nodeName&&($arrayLike_doc$$6$$[$len$$++]=$el$$1$$);$arrayLike_doc$$6$$.length=$len$$;return $arrayLike_doc$$6$$}return $els_opt_el$$3_parent$$5$$}$els_opt_el$$3_parent$$5$$=$els_opt_el$$3_parent$$5$$.getElementsByTagName($className$$10_opt_tag$$1_tagName$$1$$||"*");if($opt_class$$1$$){$arrayLike_doc$$6$$={};for($i$$51$$=$len$$=0;$el$$1$$=$els_opt_el$$3_parent$$5$$[$i$$51$$];$i$$51$$++)$className$$10_opt_tag$$1_tagName$$1$$=$el$$1$$.className,"function"==typeof $className$$10_opt_tag$$1_tagName$$1$$.split&&
0<=$goog$array$indexOf$$($className$$10_opt_tag$$1_tagName$$1$$.split(/\s+/),$opt_class$$1$$)&&($arrayLike_doc$$6$$[$len$$++]=$el$$1$$);$arrayLike_doc$$6$$.length=$len$$;return $arrayLike_doc$$6$$}return $els_opt_el$$3_parent$$5$$}
function $goog$dom$setProperties$$($element$$17$$,$properties$$){$goog$object$forEach$$($properties$$,function($val$$20$$,$key$$43$$){"style"==$key$$43$$?$element$$17$$.style.cssText=$val$$20$$:"class"==$key$$43$$?$element$$17$$.className=$val$$20$$:"for"==$key$$43$$?$element$$17$$.htmlFor=$val$$20$$:$key$$43$$ in $goog$dom$DIRECT_ATTRIBUTE_MAP_$$?$element$$17$$.setAttribute($goog$dom$DIRECT_ATTRIBUTE_MAP_$$[$key$$43$$],$val$$20$$):0==$key$$43$$.lastIndexOf("aria-",0)||0==$key$$43$$.lastIndexOf("data-",
0)?$element$$17$$.setAttribute($key$$43$$,$val$$20$$):$element$$17$$[$key$$43$$]=$val$$20$$})}var $goog$dom$DIRECT_ATTRIBUTE_MAP_$$={cellpadding:"cellPadding",cellspacing:"cellSpacing",colspan:"colSpan",frameborder:"frameBorder",height:"height",maxlength:"maxLength",role:"role",rowspan:"rowSpan",type:"type",usemap:"useMap",valign:"vAlign",width:"width"};
function $goog$dom$createDom$$($tagName$$2$$,$opt_attributes$$,$var_args$$56$$){var $args$$inline_63$$=arguments,$doc$$inline_64$$=document,$element$$inline_69_tagName$$inline_65_tagNameArr$$inline_67$$=$args$$inline_63$$[0],$attributes$$inline_66$$=$args$$inline_63$$[1];if(!$goog$dom$BrowserFeature$CAN_ADD_NAME_OR_TYPE_ATTRIBUTES$$&&$attributes$$inline_66$$&&($attributes$$inline_66$$.name||$attributes$$inline_66$$.type)){$element$$inline_69_tagName$$inline_65_tagNameArr$$inline_67$$=["<",$element$$inline_69_tagName$$inline_65_tagNameArr$$inline_67$$];
$attributes$$inline_66$$.name&&$element$$inline_69_tagName$$inline_65_tagNameArr$$inline_67$$.push(' name="',$goog$string$htmlEscape$$($attributes$$inline_66$$.name),'"');if($attributes$$inline_66$$.type){$element$$inline_69_tagName$$inline_65_tagNameArr$$inline_67$$.push(' type="',$goog$string$htmlEscape$$($attributes$$inline_66$$.type),'"');var $clone$$inline_68$$={};$goog$object$extend$$($clone$$inline_68$$,$attributes$$inline_66$$);delete $clone$$inline_68$$.type;$attributes$$inline_66$$=$clone$$inline_68$$}$element$$inline_69_tagName$$inline_65_tagNameArr$$inline_67$$.push(">");
$element$$inline_69_tagName$$inline_65_tagNameArr$$inline_67$$=$element$$inline_69_tagName$$inline_65_tagNameArr$$inline_67$$.join("")}$element$$inline_69_tagName$$inline_65_tagNameArr$$inline_67$$=$doc$$inline_64$$.createElement($element$$inline_69_tagName$$inline_65_tagNameArr$$inline_67$$);$attributes$$inline_66$$&&($goog$isString$$($attributes$$inline_66$$)?$element$$inline_69_tagName$$inline_65_tagNameArr$$inline_67$$.className=$attributes$$inline_66$$:$goog$isArray$$($attributes$$inline_66$$)?
$goog$dom$classes$add$$.apply($JSCompiler_alias_NULL$$,[$element$$inline_69_tagName$$inline_65_tagNameArr$$inline_67$$].concat($attributes$$inline_66$$)):$goog$dom$setProperties$$($element$$inline_69_tagName$$inline_65_tagNameArr$$inline_67$$,$attributes$$inline_66$$));2<$args$$inline_63$$.length&&$goog$dom$append_$$($doc$$inline_64$$,$element$$inline_69_tagName$$inline_65_tagNameArr$$inline_67$$,$args$$inline_63$$);return $element$$inline_69_tagName$$inline_65_tagNameArr$$inline_67$$}
function $goog$dom$append_$$($doc$$13$$,$parent$$6$$,$args$$7$$){function $childHandler$$($child$$1$$){$child$$1$$&&$parent$$6$$.appendChild($goog$isString$$($child$$1$$)?$doc$$13$$.createTextNode($child$$1$$):$child$$1$$)}for(var $i$$52$$=2;$i$$52$$<$args$$7$$.length;$i$$52$$++){var $arg$$5$$=$args$$7$$[$i$$52$$];if($goog$isArrayLike$$($arg$$5$$)&&!($goog$isObject$$($arg$$5$$)&&0<$arg$$5$$.nodeType)){var $JSCompiler_inline_result$$1$$;a:{if($arg$$5$$&&"number"==typeof $arg$$5$$.length){if($goog$isObject$$($arg$$5$$)){$JSCompiler_inline_result$$1$$=
"function"==typeof $arg$$5$$.item||"string"==typeof $arg$$5$$.item;break a}if($goog$isFunction$$($arg$$5$$)){$JSCompiler_inline_result$$1$$="function"==typeof $arg$$5$$.item;break a}}$JSCompiler_inline_result$$1$$=$JSCompiler_alias_FALSE$$}$goog$array$forEach$$($JSCompiler_inline_result$$1$$?$goog$array$toArray$$($arg$$5$$):$arg$$5$$,$childHandler$$)}else $childHandler$$($arg$$5$$)}}
var $goog$dom$TAGS_TO_IGNORE_$$={SCRIPT:1,STYLE:1,HEAD:1,IFRAME:1,OBJECT:1},$goog$dom$PREDEFINED_TAG_VALUES_$$={IMG:" ",BR:"\n"};
function $goog$dom$getTextContent$$($node$$16_textContent$$){if($goog$dom$BrowserFeature$CAN_USE_INNER_TEXT$$&&"innerText"in $node$$16_textContent$$)$node$$16_textContent$$=$node$$16_textContent$$.innerText.replace(/(\r\n|\r|\n)/g,"\n");else{var $buf$$=[];$goog$dom$getTextContent_$$($node$$16_textContent$$,$buf$$,$JSCompiler_alias_TRUE$$);$node$$16_textContent$$=$buf$$.join("")}$node$$16_textContent$$=$node$$16_textContent$$.replace(/ \xAD /g," ").replace(/\xAD/g,"");$node$$16_textContent$$=$node$$16_textContent$$.replace(/\u200B/g,
"");$goog$dom$BrowserFeature$CAN_USE_INNER_TEXT$$||($node$$16_textContent$$=$node$$16_textContent$$.replace(/ +/g," "));" "!=$node$$16_textContent$$&&($node$$16_textContent$$=$node$$16_textContent$$.replace(/^\s*/,""));return $node$$16_textContent$$}
function $goog$dom$getTextContent_$$($child$$7_node$$18$$,$buf$$2$$,$normalizeWhitespace$$){if(!($child$$7_node$$18$$.nodeName in $goog$dom$TAGS_TO_IGNORE_$$))if(3==$child$$7_node$$18$$.nodeType)$normalizeWhitespace$$?$buf$$2$$.push(String($child$$7_node$$18$$.nodeValue).replace(/(\r\n|\r|\n)/g,"")):$buf$$2$$.push($child$$7_node$$18$$.nodeValue);else if($child$$7_node$$18$$.nodeName in $goog$dom$PREDEFINED_TAG_VALUES_$$)$buf$$2$$.push($goog$dom$PREDEFINED_TAG_VALUES_$$[$child$$7_node$$18$$.nodeName]);
else for($child$$7_node$$18$$=$child$$7_node$$18$$.firstChild;$child$$7_node$$18$$;)$goog$dom$getTextContent_$$($child$$7_node$$18$$,$buf$$2$$,$normalizeWhitespace$$),$child$$7_node$$18$$=$child$$7_node$$18$$.nextSibling}
function $goog$dom$getAncestorByTagNameAndClass$$($element$$26$$,$opt_tag$$2$$){if(!$opt_tag$$2$$)return $JSCompiler_alias_NULL$$;var $tagName$$4$$=$opt_tag$$2$$?$opt_tag$$2$$.toUpperCase():$JSCompiler_alias_NULL$$;return $goog$dom$getAncestor$$($element$$26$$,function($node$$21$$){return(!$tagName$$4$$||$node$$21$$.nodeName==$tagName$$4$$)&&$JSCompiler_alias_TRUE$$})}
function $goog$dom$getAncestor$$($element$$28$$,$matcher$$){for(var $steps$$=0;$element$$28$$;){if($matcher$$($element$$28$$))return $element$$28$$;$element$$28$$=$element$$28$$.parentNode;$steps$$++}return $JSCompiler_alias_NULL$$};function $goog$style$setStyle_$$($element$$31$$,$value$$60$$,$prefixedStyle$$inline_76_style$$1$$){var $camelStyle$$inline_75_propertyName$$7$$;a:if($camelStyle$$inline_75_propertyName$$7$$=$goog$string$toCamelCase$$($prefixedStyle$$inline_76_style$$1$$),$element$$31$$.style[$camelStyle$$inline_75_propertyName$$7$$]===$JSCompiler_alias_VOID$$&&($prefixedStyle$$inline_76_style$$1$$=($goog$userAgent$WEBKIT$$?"Webkit":$goog$userAgent$GECKO$$?"Moz":$goog$userAgent$IE$$?"ms":$goog$userAgent$OPERA$$?"O":
$JSCompiler_alias_NULL$$)+$goog$string$toTitleCase$$($prefixedStyle$$inline_76_style$$1$$),$element$$31$$.style[$prefixedStyle$$inline_76_style$$1$$]!==$JSCompiler_alias_VOID$$)){$camelStyle$$inline_75_propertyName$$7$$=$prefixedStyle$$inline_76_style$$1$$;break a}$camelStyle$$inline_75_propertyName$$7$$&&($element$$31$$.style[$camelStyle$$inline_75_propertyName$$7$$]=$value$$60$$)};function $goog$Disposable$$(){0!=$goog$Disposable$MonitoringMode$OFF$$&&(this.$creationStack$=Error().stack,$goog$Disposable$instances_$$[$goog$getUid$$(this)]=this)}var $goog$Disposable$MonitoringMode$OFF$$=0,$goog$Disposable$instances_$$={};$goog$Disposable$$.prototype.$disposed_$=$JSCompiler_alias_FALSE$$;
$goog$Disposable$$.prototype.$dispose$=function $$goog$Disposable$$$$$dispose$$(){if(!this.$disposed_$&&(this.$disposed_$=$JSCompiler_alias_TRUE$$,this.$disposeInternal$(),0!=$goog$Disposable$MonitoringMode$OFF$$)){var $uid$$=$goog$getUid$$(this);delete $goog$Disposable$instances_$$[$uid$$]}};
function $JSCompiler_StaticMethods_registerDisposable$$($JSCompiler_StaticMethods_registerDisposable$self$$,$disposable$$){$JSCompiler_StaticMethods_registerDisposable$self$$.$dependentDisposables_$||($JSCompiler_StaticMethods_registerDisposable$self$$.$dependentDisposables_$=[]);$JSCompiler_StaticMethods_registerDisposable$self$$.$dependentDisposables_$.push($disposable$$)}
$goog$Disposable$$.prototype.$disposeInternal$=function $$goog$Disposable$$$$$disposeInternal$$(){this.$dependentDisposables_$&&$goog$disposeAll$$.apply($JSCompiler_alias_NULL$$,this.$dependentDisposables_$);if(this.$onDisposeCallbacks_$)for(;this.$onDisposeCallbacks_$.length;)this.$onDisposeCallbacks_$.shift()()};function $goog$dispose$$($obj$$66$$){$obj$$66$$&&"function"==typeof $obj$$66$$.$dispose$&&$obj$$66$$.$dispose$()}
function $goog$disposeAll$$($var_args$$60$$){for(var $i$$57$$=0,$len$$1$$=arguments.length;$i$$57$$<$len$$1$$;++$i$$57$$){var $disposable$$1$$=arguments[$i$$57$$];$goog$isArrayLike$$($disposable$$1$$)?$goog$disposeAll$$.apply($JSCompiler_alias_NULL$$,$disposable$$1$$):$goog$dispose$$($disposable$$1$$)}};function $goog$events$Event$$($type$$58$$,$opt_target$$1$$){this.type=$type$$58$$;this.currentTarget=this.target=$opt_target$$1$$}$JSCompiler_prototypeAlias$$=$goog$events$Event$$.prototype;$JSCompiler_prototypeAlias$$.$disposeInternal$=function $$JSCompiler_prototypeAlias$$$$disposeInternal$$(){};$JSCompiler_prototypeAlias$$.$dispose$=function $$JSCompiler_prototypeAlias$$$$dispose$$(){};$JSCompiler_prototypeAlias$$.$propagationStopped_$=$JSCompiler_alias_FALSE$$;
$JSCompiler_prototypeAlias$$.defaultPrevented=$JSCompiler_alias_FALSE$$;$JSCompiler_prototypeAlias$$.$returnValue_$=$JSCompiler_alias_TRUE$$;$JSCompiler_prototypeAlias$$.preventDefault=function $$JSCompiler_prototypeAlias$$$preventDefault$(){this.defaultPrevented=$JSCompiler_alias_TRUE$$;this.$returnValue_$=$JSCompiler_alias_FALSE$$};function $goog$events$Listener$$(){}var $goog$events$Listener$counter_$$=0;$JSCompiler_prototypeAlias$$=$goog$events$Listener$$.prototype;$JSCompiler_prototypeAlias$$.key=0;$JSCompiler_prototypeAlias$$.$removed$=$JSCompiler_alias_FALSE$$;$JSCompiler_prototypeAlias$$.$callOnce$=$JSCompiler_alias_FALSE$$;
$JSCompiler_prototypeAlias$$.$init$=function $$JSCompiler_prototypeAlias$$$$init$$($listener$$32$$,$proxy$$,$src$$5$$,$type$$59$$,$capture$$,$opt_handler$$){$goog$isFunction$$($listener$$32$$)?this.$isFunctionListener_$=$JSCompiler_alias_TRUE$$:$listener$$32$$&&$listener$$32$$.handleEvent&&$goog$isFunction$$($listener$$32$$.handleEvent)?this.$isFunctionListener_$=$JSCompiler_alias_FALSE$$:$JSCompiler_alias_THROW$$(Error("Invalid listener argument"));this.$listener$=$listener$$32$$;this.$proxy$=$proxy$$;
this.src=$src$$5$$;this.type=$type$$59$$;this.capture=!!$capture$$;this.$handler$=$opt_handler$$;this.$callOnce$=$JSCompiler_alias_FALSE$$;this.key=++$goog$events$Listener$counter_$$;this.$removed$=$JSCompiler_alias_FALSE$$};$JSCompiler_prototypeAlias$$.handleEvent=function $$JSCompiler_prototypeAlias$$$handleEvent$($eventObject$$){return this.$isFunctionListener_$?this.$listener$.call(this.$handler$||this.src,$eventObject$$):this.$listener$.handleEvent.call(this.$listener$,$eventObject$$)};var $goog$events$BrowserFeature$HAS_W3C_EVENT_SUPPORT$$=!$goog$userAgent$IE$$||$goog$userAgent$IE$$&&9<=$goog$userAgent$DOCUMENT_MODE$$,$goog$events$BrowserFeature$SET_KEY_CODE_TO_PREVENT_DEFAULT$$=$goog$userAgent$IE$$&&!$goog$userAgent$isVersion$$("9");!$goog$userAgent$WEBKIT$$||$goog$userAgent$isVersion$$("528");
$goog$userAgent$GECKO$$&&$goog$userAgent$isVersion$$("1.9b")||$goog$userAgent$IE$$&&$goog$userAgent$isVersion$$("8")||$goog$userAgent$OPERA$$&&$goog$userAgent$isVersion$$("9.5")||$goog$userAgent$WEBKIT$$&&$goog$userAgent$isVersion$$("528");$goog$userAgent$GECKO$$&&!$goog$userAgent$isVersion$$("8")||$goog$userAgent$IE$$&&$goog$userAgent$isVersion$$("9");function $goog$reflect$sinkValue$$($x$$62$$){$goog$reflect$sinkValue$$[" "]($x$$62$$);return $x$$62$$}$goog$reflect$sinkValue$$[" "]=function $$goog$reflect$sinkValue$$$__0$(){};function $goog$events$BrowserEvent$$($opt_e$$,$opt_currentTarget$$){$opt_e$$&&this.$init$($opt_e$$,$opt_currentTarget$$)}$goog$inherits$$($goog$events$BrowserEvent$$,$goog$events$Event$$);$JSCompiler_prototypeAlias$$=$goog$events$BrowserEvent$$.prototype;$JSCompiler_prototypeAlias$$.target=$JSCompiler_alias_NULL$$;$JSCompiler_prototypeAlias$$.relatedTarget=$JSCompiler_alias_NULL$$;$JSCompiler_prototypeAlias$$.offsetX=0;$JSCompiler_prototypeAlias$$.offsetY=0;$JSCompiler_prototypeAlias$$.clientX=0;
$JSCompiler_prototypeAlias$$.clientY=0;$JSCompiler_prototypeAlias$$.screenX=0;$JSCompiler_prototypeAlias$$.screenY=0;$JSCompiler_prototypeAlias$$.button=0;$JSCompiler_prototypeAlias$$.keyCode=0;$JSCompiler_prototypeAlias$$.charCode=0;$JSCompiler_prototypeAlias$$.ctrlKey=$JSCompiler_alias_FALSE$$;$JSCompiler_prototypeAlias$$.altKey=$JSCompiler_alias_FALSE$$;$JSCompiler_prototypeAlias$$.shiftKey=$JSCompiler_alias_FALSE$$;$JSCompiler_prototypeAlias$$.metaKey=$JSCompiler_alias_FALSE$$;
$JSCompiler_prototypeAlias$$.$platformModifierKey$=$JSCompiler_alias_FALSE$$;$JSCompiler_prototypeAlias$$.$event_$=$JSCompiler_alias_NULL$$;
$JSCompiler_prototypeAlias$$.$init$=function $$JSCompiler_prototypeAlias$$$$init$$($e$$17$$,$opt_currentTarget$$1$$){var $type$$61$$=this.type=$e$$17$$.type;$goog$events$Event$$.call(this,$type$$61$$);this.target=$e$$17$$.target||$e$$17$$.srcElement;this.currentTarget=$opt_currentTarget$$1$$;var $relatedTarget$$=$e$$17$$.relatedTarget;if($relatedTarget$$){if($goog$userAgent$GECKO$$){var $JSCompiler_inline_result$$10$$;a:{try{$goog$reflect$sinkValue$$($relatedTarget$$.nodeName);$JSCompiler_inline_result$$10$$=
$JSCompiler_alias_TRUE$$;break a}catch($e$$inline_80$$){}$JSCompiler_inline_result$$10$$=$JSCompiler_alias_FALSE$$}$JSCompiler_inline_result$$10$$||($relatedTarget$$=$JSCompiler_alias_NULL$$)}}else"mouseover"==$type$$61$$?$relatedTarget$$=$e$$17$$.fromElement:"mouseout"==$type$$61$$&&($relatedTarget$$=$e$$17$$.toElement);this.relatedTarget=$relatedTarget$$;this.offsetX=$goog$userAgent$WEBKIT$$||$e$$17$$.offsetX!==$JSCompiler_alias_VOID$$?$e$$17$$.offsetX:$e$$17$$.layerX;this.offsetY=$goog$userAgent$WEBKIT$$||
$e$$17$$.offsetY!==$JSCompiler_alias_VOID$$?$e$$17$$.offsetY:$e$$17$$.layerY;this.clientX=$e$$17$$.clientX!==$JSCompiler_alias_VOID$$?$e$$17$$.clientX:$e$$17$$.pageX;this.clientY=$e$$17$$.clientY!==$JSCompiler_alias_VOID$$?$e$$17$$.clientY:$e$$17$$.pageY;this.screenX=$e$$17$$.screenX||0;this.screenY=$e$$17$$.screenY||0;this.button=$e$$17$$.button;this.keyCode=$e$$17$$.keyCode||0;this.charCode=$e$$17$$.charCode||("keypress"==$type$$61$$?$e$$17$$.keyCode:0);this.ctrlKey=$e$$17$$.ctrlKey;this.altKey=
$e$$17$$.altKey;this.shiftKey=$e$$17$$.shiftKey;this.metaKey=$e$$17$$.metaKey;this.$platformModifierKey$=$goog$userAgent$MAC$$?$e$$17$$.metaKey:$e$$17$$.ctrlKey;this.state=$e$$17$$.state;this.$event_$=$e$$17$$;$e$$17$$.defaultPrevented&&this.preventDefault();delete this.$propagationStopped_$};
$JSCompiler_prototypeAlias$$.preventDefault=function $$JSCompiler_prototypeAlias$$$preventDefault$(){$goog$events$BrowserEvent$$.$superClass_$.preventDefault.call(this);var $be$$=this.$event_$;if($be$$.preventDefault)$be$$.preventDefault();else if($be$$.returnValue=$JSCompiler_alias_FALSE$$,$goog$events$BrowserFeature$SET_KEY_CODE_TO_PREVENT_DEFAULT$$)try{if($be$$.ctrlKey||112<=$be$$.keyCode&&123>=$be$$.keyCode)$be$$.keyCode=-1}catch($ex$$1$$){}};$JSCompiler_prototypeAlias$$.$disposeInternal$=function $$JSCompiler_prototypeAlias$$$$disposeInternal$$(){};var $goog$events$listeners_$$={},$goog$events$listenerTree_$$={},$goog$events$sources_$$={},$goog$events$onStringMap_$$={};
function $goog$events$listen$$($JSCompiler_inline_result$$3_src$$8$$,$type$$62$$,$key$$inline_95_listener$$35$$,$capture$$inline_88_opt_capt$$2$$,$opt_handler$$1$$){if($goog$isArray$$($type$$62$$)){for(var $i$$61_srcUid$$inline_90$$=0;$i$$61_srcUid$$inline_90$$<$type$$62$$.length;$i$$61_srcUid$$inline_90$$++)$goog$events$listen$$($JSCompiler_inline_result$$3_src$$8$$,$type$$62$$[$i$$61_srcUid$$inline_90$$],$key$$inline_95_listener$$35$$,$capture$$inline_88_opt_capt$$2$$,$opt_handler$$1$$);return $JSCompiler_alias_NULL$$}a:{$type$$62$$||
$JSCompiler_alias_THROW$$(Error("Invalid event type"));$capture$$inline_88_opt_capt$$2$$=!!$capture$$inline_88_opt_capt$$2$$;var $listenerObj$$inline_92_map$$inline_89$$=$goog$events$listenerTree_$$;$type$$62$$ in $listenerObj$$inline_92_map$$inline_89$$||($listenerObj$$inline_92_map$$inline_89$$[$type$$62$$]={$count_$:0,$remaining_$:0});$listenerObj$$inline_92_map$$inline_89$$=$listenerObj$$inline_92_map$$inline_89$$[$type$$62$$];$capture$$inline_88_opt_capt$$2$$ in $listenerObj$$inline_92_map$$inline_89$$||
($listenerObj$$inline_92_map$$inline_89$$[$capture$$inline_88_opt_capt$$2$$]={$count_$:0,$remaining_$:0},$listenerObj$$inline_92_map$$inline_89$$.$count_$++);var $listenerObj$$inline_92_map$$inline_89$$=$listenerObj$$inline_92_map$$inline_89$$[$capture$$inline_88_opt_capt$$2$$],$i$$61_srcUid$$inline_90$$=$goog$getUid$$($JSCompiler_inline_result$$3_src$$8$$),$listenerArray$$inline_91$$;$listenerObj$$inline_92_map$$inline_89$$.$remaining_$++;if($listenerObj$$inline_92_map$$inline_89$$[$i$$61_srcUid$$inline_90$$]){$listenerArray$$inline_91$$=
$listenerObj$$inline_92_map$$inline_89$$[$i$$61_srcUid$$inline_90$$];for(var $i$$inline_93_proxy$$inline_94$$=0;$i$$inline_93_proxy$$inline_94$$<$listenerArray$$inline_91$$.length;$i$$inline_93_proxy$$inline_94$$++)if($listenerObj$$inline_92_map$$inline_89$$=$listenerArray$$inline_91$$[$i$$inline_93_proxy$$inline_94$$],$listenerObj$$inline_92_map$$inline_89$$.$listener$==$key$$inline_95_listener$$35$$&&$listenerObj$$inline_92_map$$inline_89$$.$handler$==$opt_handler$$1$$){if($listenerObj$$inline_92_map$$inline_89$$.$removed$)break;
$listenerArray$$inline_91$$[$i$$inline_93_proxy$$inline_94$$].$callOnce$=$JSCompiler_alias_FALSE$$;$JSCompiler_inline_result$$3_src$$8$$=$listenerArray$$inline_91$$[$i$$inline_93_proxy$$inline_94$$].key;break a}}else $listenerArray$$inline_91$$=$listenerObj$$inline_92_map$$inline_89$$[$i$$61_srcUid$$inline_90$$]=[],$listenerObj$$inline_92_map$$inline_89$$.$count_$++;$i$$inline_93_proxy$$inline_94$$=$goog$events$getProxy$$();$i$$inline_93_proxy$$inline_94$$.src=$JSCompiler_inline_result$$3_src$$8$$;
$listenerObj$$inline_92_map$$inline_89$$=new $goog$events$Listener$$;$listenerObj$$inline_92_map$$inline_89$$.$init$($key$$inline_95_listener$$35$$,$i$$inline_93_proxy$$inline_94$$,$JSCompiler_inline_result$$3_src$$8$$,$type$$62$$,$capture$$inline_88_opt_capt$$2$$,$opt_handler$$1$$);$listenerObj$$inline_92_map$$inline_89$$.$callOnce$=$JSCompiler_alias_FALSE$$;$key$$inline_95_listener$$35$$=$listenerObj$$inline_92_map$$inline_89$$.key;$i$$inline_93_proxy$$inline_94$$.key=$key$$inline_95_listener$$35$$;
$listenerArray$$inline_91$$.push($listenerObj$$inline_92_map$$inline_89$$);$goog$events$listeners_$$[$key$$inline_95_listener$$35$$]=$listenerObj$$inline_92_map$$inline_89$$;$goog$events$sources_$$[$i$$61_srcUid$$inline_90$$]||($goog$events$sources_$$[$i$$61_srcUid$$inline_90$$]=[]);$goog$events$sources_$$[$i$$61_srcUid$$inline_90$$].push($listenerObj$$inline_92_map$$inline_89$$);$JSCompiler_inline_result$$3_src$$8$$.addEventListener?($JSCompiler_inline_result$$3_src$$8$$==$goog$global$$||!$JSCompiler_inline_result$$3_src$$8$$.$customEvent_$)&&
$JSCompiler_inline_result$$3_src$$8$$.addEventListener($type$$62$$,$i$$inline_93_proxy$$inline_94$$,$capture$$inline_88_opt_capt$$2$$):$JSCompiler_inline_result$$3_src$$8$$.attachEvent($type$$62$$ in $goog$events$onStringMap_$$?$goog$events$onStringMap_$$[$type$$62$$]:$goog$events$onStringMap_$$[$type$$62$$]="on"+$type$$62$$,$i$$inline_93_proxy$$inline_94$$);$JSCompiler_inline_result$$3_src$$8$$=$key$$inline_95_listener$$35$$}return $JSCompiler_inline_result$$3_src$$8$$}
function $goog$events$getProxy$$(){var $proxyCallbackFunction$$=$goog$events$handleBrowserEvent_$$,$f$$26$$=$goog$events$BrowserFeature$HAS_W3C_EVENT_SUPPORT$$?function($eventObject$$1$$){return $proxyCallbackFunction$$.call($f$$26$$.src,$f$$26$$.key,$eventObject$$1$$)}:function($eventObject$$2_v$$){$eventObject$$2_v$$=$proxyCallbackFunction$$.call($f$$26$$.src,$f$$26$$.key,$eventObject$$2_v$$);if(!$eventObject$$2_v$$)return $eventObject$$2_v$$};return $f$$26$$}
function $goog$events$unlisten$$($listenerArray$$1_objUid$$inline_101_src$$12$$,$type$$65$$,$listener$$39$$,$capture$$2_opt_capt$$6$$,$opt_handler$$5$$){if($goog$isArray$$($type$$65$$))for(var $i$$64_map$$inline_100$$=0;$i$$64_map$$inline_100$$<$type$$65$$.length;$i$$64_map$$inline_100$$++)$goog$events$unlisten$$($listenerArray$$1_objUid$$inline_101_src$$12$$,$type$$65$$[$i$$64_map$$inline_100$$],$listener$$39$$,$capture$$2_opt_capt$$6$$,$opt_handler$$5$$);else{$capture$$2_opt_capt$$6$$=!!$capture$$2_opt_capt$$6$$;
a:{$i$$64_map$$inline_100$$=$goog$events$listenerTree_$$;if($type$$65$$ in $i$$64_map$$inline_100$$&&($i$$64_map$$inline_100$$=$i$$64_map$$inline_100$$[$type$$65$$],$capture$$2_opt_capt$$6$$ in $i$$64_map$$inline_100$$&&($i$$64_map$$inline_100$$=$i$$64_map$$inline_100$$[$capture$$2_opt_capt$$6$$],$listenerArray$$1_objUid$$inline_101_src$$12$$=$goog$getUid$$($listenerArray$$1_objUid$$inline_101_src$$12$$),$i$$64_map$$inline_100$$[$listenerArray$$1_objUid$$inline_101_src$$12$$]))){$listenerArray$$1_objUid$$inline_101_src$$12$$=
$i$$64_map$$inline_100$$[$listenerArray$$1_objUid$$inline_101_src$$12$$];break a}$listenerArray$$1_objUid$$inline_101_src$$12$$=$JSCompiler_alias_NULL$$}if($listenerArray$$1_objUid$$inline_101_src$$12$$)for($i$$64_map$$inline_100$$=0;$i$$64_map$$inline_100$$<$listenerArray$$1_objUid$$inline_101_src$$12$$.length;$i$$64_map$$inline_100$$++)if($listenerArray$$1_objUid$$inline_101_src$$12$$[$i$$64_map$$inline_100$$].$listener$==$listener$$39$$&&$listenerArray$$1_objUid$$inline_101_src$$12$$[$i$$64_map$$inline_100$$].capture==
$capture$$2_opt_capt$$6$$&&$listenerArray$$1_objUid$$inline_101_src$$12$$[$i$$64_map$$inline_100$$].$handler$==$opt_handler$$5$$){$goog$events$unlistenByKey$$($listenerArray$$1_objUid$$inline_101_src$$12$$[$i$$64_map$$inline_100$$].key);break}}}
function $goog$events$unlistenByKey$$($key$$46$$){if(!$goog$events$listeners_$$[$key$$46$$])return $JSCompiler_alias_FALSE$$;var $listener$$40_listenerArray$$2$$=$goog$events$listeners_$$[$key$$46$$];if($listener$$40_listenerArray$$2$$.$removed$)return $JSCompiler_alias_FALSE$$;var $src$$13_srcUid$$1$$=$listener$$40_listenerArray$$2$$.src,$type$$66$$=$listener$$40_listenerArray$$2$$.type,$proxy$$2_sourcesArray$$=$listener$$40_listenerArray$$2$$.$proxy$,$capture$$3$$=$listener$$40_listenerArray$$2$$.capture;
$src$$13_srcUid$$1$$.removeEventListener?($src$$13_srcUid$$1$$==$goog$global$$||!$src$$13_srcUid$$1$$.$customEvent_$)&&$src$$13_srcUid$$1$$.removeEventListener($type$$66$$,$proxy$$2_sourcesArray$$,$capture$$3$$):$src$$13_srcUid$$1$$.detachEvent&&$src$$13_srcUid$$1$$.detachEvent($type$$66$$ in $goog$events$onStringMap_$$?$goog$events$onStringMap_$$[$type$$66$$]:$goog$events$onStringMap_$$[$type$$66$$]="on"+$type$$66$$,$proxy$$2_sourcesArray$$);$src$$13_srcUid$$1$$=$goog$getUid$$($src$$13_srcUid$$1$$);
if($goog$events$sources_$$[$src$$13_srcUid$$1$$]){var $proxy$$2_sourcesArray$$=$goog$events$sources_$$[$src$$13_srcUid$$1$$],$i$$inline_105$$=$goog$array$indexOf$$($proxy$$2_sourcesArray$$,$listener$$40_listenerArray$$2$$);0<=$i$$inline_105$$&&($goog$asserts$assert$$($proxy$$2_sourcesArray$$.length!=$JSCompiler_alias_NULL$$),$goog$array$ARRAY_PROTOTYPE_$$.splice.call($proxy$$2_sourcesArray$$,$i$$inline_105$$,1));0==$proxy$$2_sourcesArray$$.length&&delete $goog$events$sources_$$[$src$$13_srcUid$$1$$]}$listener$$40_listenerArray$$2$$.$removed$=
$JSCompiler_alias_TRUE$$;if($listener$$40_listenerArray$$2$$=$goog$events$listenerTree_$$[$type$$66$$][$capture$$3$$][$src$$13_srcUid$$1$$])$listener$$40_listenerArray$$2$$.$needsCleanup_$=$JSCompiler_alias_TRUE$$,$goog$events$cleanUp_$$($type$$66$$,$capture$$3$$,$src$$13_srcUid$$1$$,$listener$$40_listenerArray$$2$$);delete $goog$events$listeners_$$[$key$$46$$];return $JSCompiler_alias_TRUE$$}
function $goog$events$cleanUp_$$($type$$67$$,$capture$$4$$,$srcUid$$2$$,$listenerArray$$3$$){if(!$listenerArray$$3$$.$locked_$&&$listenerArray$$3$$.$needsCleanup_$){for(var $oldIndex$$=0,$newIndex$$=0;$oldIndex$$<$listenerArray$$3$$.length;$oldIndex$$++)$listenerArray$$3$$[$oldIndex$$].$removed$?$listenerArray$$3$$[$oldIndex$$].$proxy$.src=$JSCompiler_alias_NULL$$:($oldIndex$$!=$newIndex$$&&($listenerArray$$3$$[$newIndex$$]=$listenerArray$$3$$[$oldIndex$$]),$newIndex$$++);$listenerArray$$3$$.length=
$newIndex$$;$listenerArray$$3$$.$needsCleanup_$=$JSCompiler_alias_FALSE$$;0==$newIndex$$&&(delete $goog$events$listenerTree_$$[$type$$67$$][$capture$$4$$][$srcUid$$2$$],$goog$events$listenerTree_$$[$type$$67$$][$capture$$4$$].$count_$--,0==$goog$events$listenerTree_$$[$type$$67$$][$capture$$4$$].$count_$&&(delete $goog$events$listenerTree_$$[$type$$67$$][$capture$$4$$],$goog$events$listenerTree_$$[$type$$67$$].$count_$--),0==$goog$events$listenerTree_$$[$type$$67$$].$count_$&&delete $goog$events$listenerTree_$$[$type$$67$$])}}
function $goog$events$removeAll$$($opt_obj$$27_sourcesArray$$1_srcUid$$3$$){var $count$$9$$=0;if($opt_obj$$27_sourcesArray$$1_srcUid$$3$$!=$JSCompiler_alias_NULL$$){if($opt_obj$$27_sourcesArray$$1_srcUid$$3$$=$goog$getUid$$($opt_obj$$27_sourcesArray$$1_srcUid$$3$$),$goog$events$sources_$$[$opt_obj$$27_sourcesArray$$1_srcUid$$3$$]){$opt_obj$$27_sourcesArray$$1_srcUid$$3$$=$goog$events$sources_$$[$opt_obj$$27_sourcesArray$$1_srcUid$$3$$];for(var $i$$65$$=$opt_obj$$27_sourcesArray$$1_srcUid$$3$$.length-
1;0<=$i$$65$$;$i$$65$$--)$goog$events$unlistenByKey$$($opt_obj$$27_sourcesArray$$1_srcUid$$3$$[$i$$65$$].key),$count$$9$$++}}else $goog$object$forEach$$($goog$events$listeners_$$,function($listener$$43$$,$key$$47$$){$goog$events$unlistenByKey$$($key$$47$$);$count$$9$$++})}
function $goog$events$fireListeners_$$($map$$4$$,$obj$$73_objUid$$2$$,$type$$73$$,$capture$$9$$,$eventObject$$4$$){var $retval$$=1;$obj$$73_objUid$$2$$=$goog$getUid$$($obj$$73_objUid$$2$$);if($map$$4$$[$obj$$73_objUid$$2$$]){var $remaining$$=--$map$$4$$.$remaining_$,$listenerArray$$5$$=$map$$4$$[$obj$$73_objUid$$2$$];$listenerArray$$5$$.$locked_$?$listenerArray$$5$$.$locked_$++:$listenerArray$$5$$.$locked_$=1;try{for(var $length$$16$$=$listenerArray$$5$$.length,$i$$67$$=0;$i$$67$$<$length$$16$$;$i$$67$$++){var $listener$$46$$=
$listenerArray$$5$$[$i$$67$$];$listener$$46$$&&!$listener$$46$$.$removed$&&($retval$$&=$goog$events$fireListener$$($listener$$46$$,$eventObject$$4$$)!==$JSCompiler_alias_FALSE$$)}}finally{$map$$4$$.$remaining_$=Math.max($remaining$$,$map$$4$$.$remaining_$),$listenerArray$$5$$.$locked_$--,$goog$events$cleanUp_$$($type$$73$$,$capture$$9$$,$obj$$73_objUid$$2$$,$listenerArray$$5$$)}}return Boolean($retval$$)}
function $goog$events$fireListener$$($listener$$47$$,$eventObject$$5$$){$listener$$47$$.$callOnce$&&$goog$events$unlistenByKey$$($listener$$47$$.key);return $listener$$47$$.handleEvent($eventObject$$5$$)}
function $goog$events$handleBrowserEvent_$$($key$$49$$,$opt_evt$$){if(!$goog$events$listeners_$$[$key$$49$$])return $JSCompiler_alias_TRUE$$;var $listener$$48$$=$goog$events$listeners_$$[$key$$49$$],$be$$1_type$$75$$=$listener$$48$$.type,$map$$6$$=$goog$events$listenerTree_$$;if(!($be$$1_type$$75$$ in $map$$6$$))return $JSCompiler_alias_TRUE$$;var $map$$6$$=$map$$6$$[$be$$1_type$$75$$],$ieEvent_part$$inline_111_retval$$1$$,$targetsMap$$1$$;if(!$goog$events$BrowserFeature$HAS_W3C_EVENT_SUPPORT$$){var $JSCompiler_temp$$19_hasCapture$$2_parts$$inline_109$$;
if(!($JSCompiler_temp$$19_hasCapture$$2_parts$$inline_109$$=$opt_evt$$))a:{$JSCompiler_temp$$19_hasCapture$$2_parts$$inline_109$$=["window","event"];for(var $cur$$inline_110_hasBubble$$1$$=$goog$global$$;$ieEvent_part$$inline_111_retval$$1$$=$JSCompiler_temp$$19_hasCapture$$2_parts$$inline_109$$.shift();)if($cur$$inline_110_hasBubble$$1$$[$ieEvent_part$$inline_111_retval$$1$$]!=$JSCompiler_alias_NULL$$)$cur$$inline_110_hasBubble$$1$$=$cur$$inline_110_hasBubble$$1$$[$ieEvent_part$$inline_111_retval$$1$$];
else{$JSCompiler_temp$$19_hasCapture$$2_parts$$inline_109$$=$JSCompiler_alias_NULL$$;break a}$JSCompiler_temp$$19_hasCapture$$2_parts$$inline_109$$=$cur$$inline_110_hasBubble$$1$$}$ieEvent_part$$inline_111_retval$$1$$=$JSCompiler_temp$$19_hasCapture$$2_parts$$inline_109$$;$JSCompiler_temp$$19_hasCapture$$2_parts$$inline_109$$=$JSCompiler_alias_TRUE$$ in $map$$6$$;$cur$$inline_110_hasBubble$$1$$=$JSCompiler_alias_FALSE$$ in $map$$6$$;if($JSCompiler_temp$$19_hasCapture$$2_parts$$inline_109$$){if(0>
$ieEvent_part$$inline_111_retval$$1$$.keyCode||$ieEvent_part$$inline_111_retval$$1$$.returnValue!=$JSCompiler_alias_VOID$$)return $JSCompiler_alias_TRUE$$;a:{var $evt$$16_useReturnValue$$inline_114$$=$JSCompiler_alias_FALSE$$;if(0==$ieEvent_part$$inline_111_retval$$1$$.keyCode)try{$ieEvent_part$$inline_111_retval$$1$$.keyCode=-1;break a}catch($ex$$inline_115$$){$evt$$16_useReturnValue$$inline_114$$=$JSCompiler_alias_TRUE$$}if($evt$$16_useReturnValue$$inline_114$$||$ieEvent_part$$inline_111_retval$$1$$.returnValue==
$JSCompiler_alias_VOID$$)$ieEvent_part$$inline_111_retval$$1$$.returnValue=$JSCompiler_alias_TRUE$$}}$evt$$16_useReturnValue$$inline_114$$=new $goog$events$BrowserEvent$$;$evt$$16_useReturnValue$$inline_114$$.$init$($ieEvent_part$$inline_111_retval$$1$$,this);$ieEvent_part$$inline_111_retval$$1$$=$JSCompiler_alias_TRUE$$;try{if($JSCompiler_temp$$19_hasCapture$$2_parts$$inline_109$$){for(var $ancestors$$2$$=[],$parent$$19$$=$evt$$16_useReturnValue$$inline_114$$.currentTarget;$parent$$19$$;$parent$$19$$=
$parent$$19$$.parentNode)$ancestors$$2$$.push($parent$$19$$);$targetsMap$$1$$=$map$$6$$[$JSCompiler_alias_TRUE$$];$targetsMap$$1$$.$remaining_$=$targetsMap$$1$$.$count_$;for(var $i$$69$$=$ancestors$$2$$.length-1;!$evt$$16_useReturnValue$$inline_114$$.$propagationStopped_$&&0<=$i$$69$$&&$targetsMap$$1$$.$remaining_$;$i$$69$$--)$evt$$16_useReturnValue$$inline_114$$.currentTarget=$ancestors$$2$$[$i$$69$$],$ieEvent_part$$inline_111_retval$$1$$&=$goog$events$fireListeners_$$($targetsMap$$1$$,$ancestors$$2$$[$i$$69$$],
$be$$1_type$$75$$,$JSCompiler_alias_TRUE$$,$evt$$16_useReturnValue$$inline_114$$);if($cur$$inline_110_hasBubble$$1$$){$targetsMap$$1$$=$map$$6$$[$JSCompiler_alias_FALSE$$];$targetsMap$$1$$.$remaining_$=$targetsMap$$1$$.$count_$;for($i$$69$$=0;!$evt$$16_useReturnValue$$inline_114$$.$propagationStopped_$&&$i$$69$$<$ancestors$$2$$.length&&$targetsMap$$1$$.$remaining_$;$i$$69$$++)$evt$$16_useReturnValue$$inline_114$$.currentTarget=$ancestors$$2$$[$i$$69$$],$ieEvent_part$$inline_111_retval$$1$$&=$goog$events$fireListeners_$$($targetsMap$$1$$,
$ancestors$$2$$[$i$$69$$],$be$$1_type$$75$$,$JSCompiler_alias_FALSE$$,$evt$$16_useReturnValue$$inline_114$$)}}else $ieEvent_part$$inline_111_retval$$1$$=$goog$events$fireListener$$($listener$$48$$,$evt$$16_useReturnValue$$inline_114$$)}finally{$ancestors$$2$$&&($ancestors$$2$$.length=0)}return $ieEvent_part$$inline_111_retval$$1$$}$be$$1_type$$75$$=new $goog$events$BrowserEvent$$($opt_evt$$,this);return $ieEvent_part$$inline_111_retval$$1$$=$goog$events$fireListener$$($listener$$48$$,$be$$1_type$$75$$)}
;function $goog$events$EventHandler$$($opt_handler$$8$$){$goog$Disposable$$.call(this);this.$handler_$=$opt_handler$$8$$;this.$keys_$=[]}$goog$inherits$$($goog$events$EventHandler$$,$goog$Disposable$$);var $goog$events$EventHandler$typeArray_$$=[];
function $JSCompiler_StaticMethods_listen$$($JSCompiler_StaticMethods_listen$self$$,$src$$17$$,$type$$76$$,$opt_fn$$,$opt_capture$$1$$,$opt_handler$$9$$){$goog$isArray$$($type$$76$$)||($goog$events$EventHandler$typeArray_$$[0]=$type$$76$$,$type$$76$$=$goog$events$EventHandler$typeArray_$$);for(var $i$$70$$=0;$i$$70$$<$type$$76$$.length;$i$$70$$++){var $key$$50$$=$goog$events$listen$$($src$$17$$,$type$$76$$[$i$$70$$],$opt_fn$$||$JSCompiler_StaticMethods_listen$self$$,$opt_capture$$1$$||$JSCompiler_alias_FALSE$$,
$opt_handler$$9$$||$JSCompiler_StaticMethods_listen$self$$.$handler_$||$JSCompiler_StaticMethods_listen$self$$);$JSCompiler_StaticMethods_listen$self$$.$keys_$.push($key$$50$$)}}$goog$events$EventHandler$$.prototype.$disposeInternal$=function $$goog$events$EventHandler$$$$$disposeInternal$$(){$goog$events$EventHandler$$.$superClass_$.$disposeInternal$.call(this);$goog$array$forEach$$(this.$keys_$,$goog$events$unlistenByKey$$);this.$keys_$.length=0};
$goog$events$EventHandler$$.prototype.handleEvent=function $$goog$events$EventHandler$$$$handleEvent$(){$JSCompiler_alias_THROW$$(Error("EventHandler.handleEvent not implemented"))};function $goog$events$EventTarget$$(){$goog$Disposable$$.call(this)}$goog$inherits$$($goog$events$EventTarget$$,$goog$Disposable$$);$JSCompiler_prototypeAlias$$=$goog$events$EventTarget$$.prototype;$JSCompiler_prototypeAlias$$.$customEvent_$=$JSCompiler_alias_TRUE$$;$JSCompiler_prototypeAlias$$.$parentEventTarget_$=$JSCompiler_alias_NULL$$;
$JSCompiler_prototypeAlias$$.addEventListener=function $$JSCompiler_prototypeAlias$$$addEventListener$($type$$79$$,$handler$$3$$,$opt_capture$$4$$,$opt_handlerScope$$){$goog$events$listen$$(this,$type$$79$$,$handler$$3$$,$opt_capture$$4$$,$opt_handlerScope$$)};
$JSCompiler_prototypeAlias$$.removeEventListener=function $$JSCompiler_prototypeAlias$$$removeEventListener$($type$$80$$,$handler$$4$$,$opt_capture$$5$$,$opt_handlerScope$$1$$){$goog$events$unlisten$$(this,$type$$80$$,$handler$$4$$,$opt_capture$$5$$,$opt_handlerScope$$1$$)};
$JSCompiler_prototypeAlias$$.dispatchEvent=function $$JSCompiler_prototypeAlias$$$dispatchEvent$($JSCompiler_inline_result$$20_e$$23_e$$inline_121$$){var $hasCapture$$inline_127_type$$inline_122$$=$JSCompiler_inline_result$$20_e$$23_e$$inline_121$$.type||$JSCompiler_inline_result$$20_e$$23_e$$inline_121$$,$map$$inline_123$$=$goog$events$listenerTree_$$;if($hasCapture$$inline_127_type$$inline_122$$ in $map$$inline_123$$){if($goog$isString$$($JSCompiler_inline_result$$20_e$$23_e$$inline_121$$))$JSCompiler_inline_result$$20_e$$23_e$$inline_121$$=
new $goog$events$Event$$($JSCompiler_inline_result$$20_e$$23_e$$inline_121$$,this);else if($JSCompiler_inline_result$$20_e$$23_e$$inline_121$$ instanceof $goog$events$Event$$)$JSCompiler_inline_result$$20_e$$23_e$$inline_121$$.target=$JSCompiler_inline_result$$20_e$$23_e$$inline_121$$.target||this;else{var $oldEvent$$inline_124_rv$$inline_125$$=$JSCompiler_inline_result$$20_e$$23_e$$inline_121$$;$JSCompiler_inline_result$$20_e$$23_e$$inline_121$$=new $goog$events$Event$$($hasCapture$$inline_127_type$$inline_122$$,
this);$goog$object$extend$$($JSCompiler_inline_result$$20_e$$23_e$$inline_121$$,$oldEvent$$inline_124_rv$$inline_125$$)}var $oldEvent$$inline_124_rv$$inline_125$$=1,$ancestors$$inline_126_current$$inline_131$$,$map$$inline_123$$=$map$$inline_123$$[$hasCapture$$inline_127_type$$inline_122$$],$hasCapture$$inline_127_type$$inline_122$$=$JSCompiler_alias_TRUE$$ in $map$$inline_123$$,$parent$$inline_129_targetsMap$$inline_128$$;if($hasCapture$$inline_127_type$$inline_122$$){$ancestors$$inline_126_current$$inline_131$$=
[];for($parent$$inline_129_targetsMap$$inline_128$$=this;$parent$$inline_129_targetsMap$$inline_128$$;$parent$$inline_129_targetsMap$$inline_128$$=$parent$$inline_129_targetsMap$$inline_128$$.$parentEventTarget_$)$ancestors$$inline_126_current$$inline_131$$.push($parent$$inline_129_targetsMap$$inline_128$$);$parent$$inline_129_targetsMap$$inline_128$$=$map$$inline_123$$[$JSCompiler_alias_TRUE$$];$parent$$inline_129_targetsMap$$inline_128$$.$remaining_$=$parent$$inline_129_targetsMap$$inline_128$$.$count_$;
for(var $i$$inline_130$$=$ancestors$$inline_126_current$$inline_131$$.length-1;!$JSCompiler_inline_result$$20_e$$23_e$$inline_121$$.$propagationStopped_$&&0<=$i$$inline_130$$&&$parent$$inline_129_targetsMap$$inline_128$$.$remaining_$;$i$$inline_130$$--)$JSCompiler_inline_result$$20_e$$23_e$$inline_121$$.currentTarget=$ancestors$$inline_126_current$$inline_131$$[$i$$inline_130$$],$oldEvent$$inline_124_rv$$inline_125$$&=$goog$events$fireListeners_$$($parent$$inline_129_targetsMap$$inline_128$$,$ancestors$$inline_126_current$$inline_131$$[$i$$inline_130$$],
$JSCompiler_inline_result$$20_e$$23_e$$inline_121$$.type,$JSCompiler_alias_TRUE$$,$JSCompiler_inline_result$$20_e$$23_e$$inline_121$$)&&$JSCompiler_inline_result$$20_e$$23_e$$inline_121$$.$returnValue_$!=$JSCompiler_alias_FALSE$$}if($JSCompiler_alias_FALSE$$ in $map$$inline_123$$)if($parent$$inline_129_targetsMap$$inline_128$$=$map$$inline_123$$[$JSCompiler_alias_FALSE$$],$parent$$inline_129_targetsMap$$inline_128$$.$remaining_$=$parent$$inline_129_targetsMap$$inline_128$$.$count_$,$hasCapture$$inline_127_type$$inline_122$$)for($i$$inline_130$$=
0;!$JSCompiler_inline_result$$20_e$$23_e$$inline_121$$.$propagationStopped_$&&$i$$inline_130$$<$ancestors$$inline_126_current$$inline_131$$.length&&$parent$$inline_129_targetsMap$$inline_128$$.$remaining_$;$i$$inline_130$$++)$JSCompiler_inline_result$$20_e$$23_e$$inline_121$$.currentTarget=$ancestors$$inline_126_current$$inline_131$$[$i$$inline_130$$],$oldEvent$$inline_124_rv$$inline_125$$&=$goog$events$fireListeners_$$($parent$$inline_129_targetsMap$$inline_128$$,$ancestors$$inline_126_current$$inline_131$$[$i$$inline_130$$],
$JSCompiler_inline_result$$20_e$$23_e$$inline_121$$.type,$JSCompiler_alias_FALSE$$,$JSCompiler_inline_result$$20_e$$23_e$$inline_121$$)&&$JSCompiler_inline_result$$20_e$$23_e$$inline_121$$.$returnValue_$!=$JSCompiler_alias_FALSE$$;else for($ancestors$$inline_126_current$$inline_131$$=this;!$JSCompiler_inline_result$$20_e$$23_e$$inline_121$$.$propagationStopped_$&&$ancestors$$inline_126_current$$inline_131$$&&$parent$$inline_129_targetsMap$$inline_128$$.$remaining_$;$ancestors$$inline_126_current$$inline_131$$=
$ancestors$$inline_126_current$$inline_131$$.$parentEventTarget_$)$JSCompiler_inline_result$$20_e$$23_e$$inline_121$$.currentTarget=$ancestors$$inline_126_current$$inline_131$$,$oldEvent$$inline_124_rv$$inline_125$$&=$goog$events$fireListeners_$$($parent$$inline_129_targetsMap$$inline_128$$,$ancestors$$inline_126_current$$inline_131$$,$JSCompiler_inline_result$$20_e$$23_e$$inline_121$$.type,$JSCompiler_alias_FALSE$$,$JSCompiler_inline_result$$20_e$$23_e$$inline_121$$)&&$JSCompiler_inline_result$$20_e$$23_e$$inline_121$$.$returnValue_$!=
$JSCompiler_alias_FALSE$$;$JSCompiler_inline_result$$20_e$$23_e$$inline_121$$=Boolean($oldEvent$$inline_124_rv$$inline_125$$)}else $JSCompiler_inline_result$$20_e$$23_e$$inline_121$$=$JSCompiler_alias_TRUE$$;return $JSCompiler_inline_result$$20_e$$23_e$$inline_121$$};
$JSCompiler_prototypeAlias$$.$disposeInternal$=function $$JSCompiler_prototypeAlias$$$$disposeInternal$$(){$goog$events$EventTarget$$.$superClass_$.$disposeInternal$.call(this);$goog$events$removeAll$$(this);this.$parentEventTarget_$=$JSCompiler_alias_NULL$$};function $pn$app$EventHandlerTarget$$(){$goog$Disposable$$.call(this);this.$eh_$=new $goog$events$EventHandler$$(this);$JSCompiler_StaticMethods_registerDisposable$$(this,this.$eh_$)}$goog$inherits$$($pn$app$EventHandlerTarget$$,$goog$events$EventTarget$$);function $pn$ui$DelayedThrottleInputListener$$($delay$$3$$){$pn$assNum$$($delay$$3$$);$pn$app$EventHandlerTarget$$.call(this);this.$delay_$=$delay$$3$$;this.$currentValues_$={};this.$lastValues_$={};this.$timerId_$=this.$lastInputTime_$=0}$goog$inherits$$($pn$ui$DelayedThrottleInputListener$$,$pn$app$EventHandlerTarget$$);
function $JSCompiler_StaticMethods_addInput$$($JSCompiler_StaticMethods_addInput$self$$,$inp$$){$pn$ass$$($inp$$);$pn$ass$$($JSCompiler_alias_TRUE$$);var $type$$inline_135$$=$inp$$.options?"select-one":$inp$$.getAttribute("type");$JSCompiler_StaticMethods_listen$$($JSCompiler_StaticMethods_addInput$self$$.$eh_$,$inp$$,"text"===$type$$inline_135$$?"keyup":"checkbox"===$type$$inline_135$$?"click":"change",$JSCompiler_StaticMethods_addInput$self$$.$onInputEvent_$)}
$pn$ui$DelayedThrottleInputListener$$.prototype.$onInputEvent_$=function $$pn$ui$DelayedThrottleInputListener$$$$$onInputEvent_$$($e$$25$$){$pn$ass$$($e$$25$$&&$e$$25$$.target);this.$currentValues_$[$e$$25$$.target.id||"default"]=$e$$25$$.target.value;this.$lastInputTime_$=(new Date).getTime();this.$timerId_$&&($goog$global$$.clearTimeout(this.$timerId_$),this.$timerId_$=0);this.$checkTimer_$()};
$pn$ui$DelayedThrottleInputListener$$.prototype.$checkTimer_$=function $$pn$ui$DelayedThrottleInputListener$$$$$checkTimer_$$(){var $curtime_listener$$inline_146$$=(new Date).getTime();if(!this.$delay_$||$curtime_listener$$inline_146$$-this.$lastInputTime_$>=this.$delay_$)clearTimeout(this.$timerId_$),(!$goog$object$getKeys$$(this.$currentValues_$).$pnequals$($goog$object$getKeys$$(this.$lastValues_$))||!$goog$object$getValues$$(this.$currentValues_$).$pnequals$($goog$object$getValues$$(this.$lastValues_$)))&&
this.dispatchEvent(new $goog$events$Event$$("input-changed")),this.$timerId_$=0;else{var $curtime_listener$$inline_146$$=this.$checkTimer_$,$opt_delay$$inline_147$$=this.$delay_$/3;$goog$isFunction$$($curtime_listener$$inline_146$$)?this&&($curtime_listener$$inline_146$$=$goog$bind$$($curtime_listener$$inline_146$$,this)):$curtime_listener$$inline_146$$&&"function"==typeof $curtime_listener$$inline_146$$.handleEvent?$curtime_listener$$inline_146$$=$goog$bind$$($curtime_listener$$inline_146$$.handleEvent,
$curtime_listener$$inline_146$$):$JSCompiler_alias_THROW$$(Error("Invalid listener argument"));this.$timerId_$=2147483647<$opt_delay$$inline_147$$?-1:$goog$global$$.setTimeout($curtime_listener$$inline_146$$,$opt_delay$$inline_147$$||0)}};function $pn$toarr$$($args$$8$$){return $goog$array$toArray$$($args$$8$$)}function $pn$ass$$($condition$$2$$,$opt_message$$17$$,$var_args$$67$$){$goog$asserts$assert$$.apply($JSCompiler_alias_NULL$$,arguments)}function $pn$assStr$$($val$$23$$,$opt_message$$18$$,$var_args$$68$$){$pn$assType_$$($goog$isString$$,arguments,"string")}function $pn$assNum$$($val$$24$$,$opt_message$$19$$,$var_args$$69$$){$pn$assType_$$($goog$isNumber$$,arguments,"number")}
function $pn$assArr$$($val$$29$$,$opt_message$$22$$,$var_args$$72$$){$pn$assType_$$($goog$isArray$$,arguments,"array")}
function $pn$assType_$$($predicate_success$$,$args$$9$$,$typeName$$){0===$args$$9$$.length&&($args$$9$$=[$JSCompiler_alias_VOID$$]);var $target$$45$$=$args$$9$$[0];$predicate_success$$=$predicate_success$$($target$$45$$);$args$$9$$[0]=$predicate_success$$;!$predicate_success$$&&1===$args$$9$$.length&&($args$$9$$=$goog$array$toArray$$($args$$9$$),$args$$9$$.push("Expected %s but was %s".$pnsubs$($typeName$$,$goog$typeOf$$($target$$45$$))));$pn$ass$$.apply($JSCompiler_alias_NULL$$,$args$$9$$)}
function $pn$aargs_$$($thiso$$,$args$$10$$){for(var $arr$$58$$=[$thiso$$],$i$$81$$=0,$len$$2$$=$args$$10$$.length;$i$$81$$<$len$$2$$;$i$$81$$++)$arr$$58$$.push($args$$10$$[$i$$81$$]);return $arr$$58$$}String.prototype.$pnsubs$=function $String$$$pnsubs$$($var_args$$77$$){return $goog$string$subs$$.apply($JSCompiler_alias_NULL$$,$pn$aargs_$$(this,arguments))};$JSCompiler_prototypeAlias$$=Array.prototype;
$JSCompiler_prototypeAlias$$.$pnmap$=function $$JSCompiler_prototypeAlias$$$$pnmap$$($f$$30$$,$opt_obj$$28$$){return $goog$array$map$$.apply($JSCompiler_alias_NULL$$,$pn$aargs_$$(this,arguments))};$JSCompiler_prototypeAlias$$.$pnforEach$=function $$JSCompiler_prototypeAlias$$$$pnforEach$$($f$$32$$,$opt_obj$$30$$){$goog$array$forEach$$.apply($JSCompiler_alias_NULL$$,$pn$aargs_$$(this,arguments));return this};
$JSCompiler_prototypeAlias$$.$pnequals$=function $$JSCompiler_prototypeAlias$$$$pnequals$$($arr2$$13$$,$opt_equalsFn$$2$$){return $goog$array$equals$$.apply($JSCompiler_alias_NULL$$,$pn$aargs_$$(this,arguments))};$JSCompiler_prototypeAlias$$.$pnfindIndex$=function $$JSCompiler_prototypeAlias$$$$pnfindIndex$$($f$$41$$,$opt_obj$$43$$){return $goog$array$findIndex$$.apply($JSCompiler_alias_NULL$$,$pn$aargs_$$(this,arguments))};
$JSCompiler_prototypeAlias$$.$pnindexOf$=function $$JSCompiler_prototypeAlias$$$$pnindexOf$$($obj$$76$$,$opt_fromIndex$$10$$){return $goog$array$indexOf$$.apply($JSCompiler_alias_NULL$$,$pn$aargs_$$(this,arguments))};function $goog$net$Cookies$$($context$$){this.$document_$=$context$$}var $goog$net$Cookies$SPLIT_RE_$$=/\s*;\s*/;
$goog$net$Cookies$$.prototype.set=function $$goog$net$Cookies$$$$set$($name$$65$$,$value$$71$$,$expiresStr_opt_maxAge$$,$opt_path_pathStr$$,$domainStr_opt_domain$$,$opt_secure_secureStr$$){/[;=\s]/.test($name$$65$$)&&$JSCompiler_alias_THROW$$(Error('Invalid cookie name "'+$name$$65$$+'"'));/[;\r\n]/.test($value$$71$$)&&$JSCompiler_alias_THROW$$(Error('Invalid cookie value "'+$value$$71$$+'"'));$expiresStr_opt_maxAge$$!==$JSCompiler_alias_VOID$$||($expiresStr_opt_maxAge$$=-1);$domainStr_opt_domain$$=
$domainStr_opt_domain$$?";domain="+$domainStr_opt_domain$$:"";$opt_path_pathStr$$=$opt_path_pathStr$$?";path="+$opt_path_pathStr$$:"";$opt_secure_secureStr$$=$opt_secure_secureStr$$?";secure":"";$expiresStr_opt_maxAge$$=0>$expiresStr_opt_maxAge$$?"":0==$expiresStr_opt_maxAge$$?";expires="+(new Date(1970,1,1)).toUTCString():";expires="+(new Date($goog$now$$()+1E3*$expiresStr_opt_maxAge$$)).toUTCString();this.$document_$.cookie=$name$$65$$+"="+$value$$71$$+$domainStr_opt_domain$$+$opt_path_pathStr$$+
$expiresStr_opt_maxAge$$+$opt_secure_secureStr$$};$goog$net$Cookies$$.prototype.get=function $$goog$net$Cookies$$$$get$($name$$66$$,$opt_default$$){for(var $nameEq$$=$name$$66$$+"=",$parts$$3$$=(this.$document_$.cookie||"").split($goog$net$Cookies$SPLIT_RE_$$),$i$$83$$=0,$part$$2$$;$part$$2$$=$parts$$3$$[$i$$83$$];$i$$83$$++){if(0==$part$$2$$.lastIndexOf($nameEq$$,0))return $part$$2$$.substr($nameEq$$.length);if($part$$2$$==$name$$66$$)return""}return $opt_default$$};var $goog$net$cookies$$=new $goog$net$Cookies$$(document);
$goog$net$cookies$$.$MAX_COOKIE_LENGTH$=3950;function $pn$ui$filter$SearchEngine$$(){this.$precedences_$={or:1,and:2,not:3}}
function $JSCompiler_StaticMethods_doesTextMatchTokens$$($JSCompiler_StaticMethods_doesTextMatchTokens$self$$,$textToMatch$$,$postFixTokens$$,$exactMatch$$){$pn$assArr$$($textToMatch$$);return!$postFixTokens$$||0<=$textToMatch$$.$pnfindIndex$(function($textToMatch$$inline_154_txt$$){$pn$assStr$$($textToMatch$$inline_154_txt$$);$textToMatch$$inline_154_txt$$=$exactMatch$$?$textToMatch$$inline_154_txt$$:$textToMatch$$inline_154_txt$$.toLowerCase();for(var $stackResult$$inline_157$$=[],$stackResult1$$inline_158_token$$inline_161$$,
$stackResult2$$inline_159$$,$i$$inline_160$$=0;$i$$inline_160$$<$postFixTokens$$.length;$i$$inline_160$$++)$stackResult1$$inline_158_token$$inline_161$$=$postFixTokens$$[$i$$inline_160$$],"and"!==$stackResult1$$inline_158_token$$inline_161$$&&"or"!==$stackResult1$$inline_158_token$$inline_161$$&&"not"!==$stackResult1$$inline_158_token$$inline_161$$?0===$stackResult1$$inline_158_token$$inline_161$$.indexOf(">")||0===$stackResult1$$inline_158_token$$inline_161$$.indexOf("<")||0===$stackResult1$$inline_158_token$$inline_161$$.indexOf("=")||
0===$stackResult1$$inline_158_token$$inline_161$$.indexOf("!=")?$stackResult$$inline_157$$.push($JSCompiler_StaticMethods_doesNumberMatchToken_$$($stackResult1$$inline_158_token$$inline_161$$,$textToMatch$$inline_154_txt$$)):$stackResult$$inline_157$$.push($exactMatch$$?$textToMatch$$inline_154_txt$$===$stackResult1$$inline_158_token$$inline_161$$:0<=$textToMatch$$inline_154_txt$$.indexOf($stackResult1$$inline_158_token$$inline_161$$)):"and"===$stackResult1$$inline_158_token$$inline_161$$?($stackResult1$$inline_158_token$$inline_161$$=
$stackResult$$inline_157$$.pop(),$stackResult2$$inline_159$$=$stackResult$$inline_157$$.pop(),$stackResult$$inline_157$$.push($stackResult1$$inline_158_token$$inline_161$$&&$stackResult2$$inline_159$$)):"or"===$stackResult1$$inline_158_token$$inline_161$$?($stackResult1$$inline_158_token$$inline_161$$=$stackResult$$inline_157$$.pop(),$stackResult2$$inline_159$$=$stackResult$$inline_157$$.pop(),$stackResult$$inline_157$$.push($stackResult1$$inline_158_token$$inline_161$$||$stackResult2$$inline_159$$)):
"not"===$stackResult1$$inline_158_token$$inline_161$$&&($stackResult1$$inline_158_token$$inline_161$$=$stackResult$$inline_157$$.pop(),$stackResult$$inline_157$$.push(!$stackResult1$$inline_158_token$$inline_161$$));return 1===$stackResult$$inline_157$$.length&&$stackResult$$inline_157$$.pop()},$JSCompiler_StaticMethods_doesTextMatchTokens$self$$)}
function $JSCompiler_StaticMethods_doesNumberMatchToken_$$($token$$5$$,$text$$12$$){var $op_txt$$inline_163$$,$exp$$,$actual$$;$op_txt$$inline_163$$=$text$$12$$;"$"===$op_txt$$inline_163$$.charAt(0)&&($op_txt$$inline_163$$=$op_txt$$inline_163$$.substring(1));$actual$$=parseFloat($op_txt$$inline_163$$);if(0===$token$$5$$.indexOf("="))$op_txt$$inline_163$$="=",$exp$$=parseFloat($token$$5$$.substring(1));else if(0===$token$$5$$.indexOf("!="))$op_txt$$inline_163$$="!=",$exp$$=parseFloat($token$$5$$.substring(2));
else if(0===$token$$5$$.indexOf(">="))$op_txt$$inline_163$$=">=",$exp$$=parseFloat($token$$5$$.substring(2));else if(0===$token$$5$$.indexOf(">"))$op_txt$$inline_163$$=">",$exp$$=parseFloat($token$$5$$.substring(1));else if(0===$token$$5$$.indexOf("<="))$op_txt$$inline_163$$="<=",$exp$$=parseFloat($token$$5$$.substring(2));else if(0===$token$$5$$.indexOf("<"))$op_txt$$inline_163$$="<",$exp$$=parseFloat($token$$5$$.substring(1));else return $JSCompiler_alias_TRUE$$;switch($op_txt$$inline_163$$){case "!=":return $actual$$!==
$exp$$;case "=":return $actual$$===$exp$$;case ">=":return $actual$$>=$exp$$;case ">":return $actual$$>$exp$$;case "<=":return $actual$$<=$exp$$;case "<":return $actual$$<$exp$$}$JSCompiler_alias_THROW$$(Error("Could not find a number operation: "+$op_txt$$inline_163$$))}
function $JSCompiler_StaticMethods_normaliseTerm_$$($tokens$$1$$,$token$$7$$,$term$$){for(var $idx$$5$$=$token$$7$$.indexOf($term$$);-1!==$idx$$5$$;)0<$idx$$5$$&&$tokens$$1$$.push($token$$7$$.substring(0,$idx$$5$$)),$tokens$$1$$.push($term$$),$token$$7$$=$token$$7$$.substring($idx$$5$$+1),$idx$$5$$=$token$$7$$.indexOf($term$$);return $token$$7$$};function $pn$ui$filter$GenericListFilter$$($input$$,$list$$,$options$$3$$){$goog$events$EventHandler$$.call(this);this.list=$list$$;this.options=$options$$3$$;$JSCompiler_StaticMethods_registerDisposable$$(this,this.options);this.$input_$=$input$$;this.$listItems$=[];this.filters=[this.$input_$];this.$inputListener_$=new $pn$ui$DelayedThrottleInputListener$$(parseInt(this.options.filterDelay,10)||200);$JSCompiler_StaticMethods_registerDisposable$$(this,this.$inputListener_$);this.$filterKey_$="";
this.$search_$=new $pn$ui$filter$SearchEngine$$;this.$initialiseFilters$()}$goog$inherits$$($pn$ui$filter$GenericListFilter$$,$goog$events$EventHandler$$);var $pn$ui$filter$GenericListFilter$filteridx_$$=0;$JSCompiler_prototypeAlias$$=$pn$ui$filter$GenericListFilter$$.prototype;
$JSCompiler_prototypeAlias$$.$resetList$=function $$JSCompiler_prototypeAlias$$$$resetList$$($list$$1$$){$goog$dispose$$(this.list);this.$listItems$.$pnforEach$($goog$dispose$$);this.list=$list$$1$$;this.$initialiseControlCaches$();$JSCompiler_StaticMethods_registerListenersOnFilters_$$(this);$JSCompiler_StaticMethods_loadFiltersFromCookie_$$(this)};
function $JSCompiler_StaticMethods_getListId$$($JSCompiler_StaticMethods_getListId$self$$){return $JSCompiler_StaticMethods_getListId$self$$.list.getAttribute("id")||$JSCompiler_StaticMethods_getListId$self$$.list.getAttribute("name")||""}
$JSCompiler_prototypeAlias$$.$initialiseFilters$=function $$JSCompiler_prototypeAlias$$$$initialiseFilters$$(){this.$filterKey_$=$JSCompiler_StaticMethods_getListId$$(this)+"_"+ ++$pn$ui$filter$GenericListFilter$filteridx_$$+"_filters";this.$initialiseControlCaches$();$JSCompiler_StaticMethods_registerListenersOnFilters_$$(this);$JSCompiler_StaticMethods_loadFiltersFromCookie_$$(this)};
function $JSCompiler_StaticMethods_registerListenersOnFilters_$$($JSCompiler_StaticMethods_registerListenersOnFilters_$self$$){$JSCompiler_StaticMethods_listen$$($JSCompiler_StaticMethods_registerListenersOnFilters_$self$$,$JSCompiler_StaticMethods_registerListenersOnFilters_$self$$.$inputListener_$,"input-changed",$JSCompiler_StaticMethods_registerListenersOnFilters_$self$$.refresh);$JSCompiler_StaticMethods_registerListenersOnFilters_$self$$.filters.$pnforEach$(function($filter$$){$JSCompiler_StaticMethods_addInput$$(this.$inputListener_$,
$filter$$)},$JSCompiler_StaticMethods_registerListenersOnFilters_$self$$);if($JSCompiler_StaticMethods_registerListenersOnFilters_$self$$.options.clearFiltersControls)for(var $i$$91$$=0;$i$$91$$<$JSCompiler_StaticMethods_registerListenersOnFilters_$self$$.options.clearFiltersControls.length;$i$$91$$++)$JSCompiler_StaticMethods_registerListenersOnFilters_$self$$.options.clearFiltersControls[$i$$91$$].length&&($JSCompiler_StaticMethods_registerListenersOnFilters_$self$$.options.clearFiltersControls[$i$$91$$]=
$JSCompiler_StaticMethods_registerListenersOnFilters_$self$$.options.clearFiltersControls[$i$$91$$][0]),$JSCompiler_StaticMethods_listen$$($JSCompiler_StaticMethods_registerListenersOnFilters_$self$$,$JSCompiler_StaticMethods_registerListenersOnFilters_$self$$.options.clearFiltersControls[$i$$91$$],"click",$JSCompiler_StaticMethods_registerListenersOnFilters_$self$$.$clearAllFilters$,$JSCompiler_alias_FALSE$$,$JSCompiler_StaticMethods_registerListenersOnFilters_$self$$);if($JSCompiler_StaticMethods_registerListenersOnFilters_$self$$.options.additionalFilterTriggers)for($i$$91$$=
0;$i$$91$$<$JSCompiler_StaticMethods_registerListenersOnFilters_$self$$.options.additionalFilterTriggers.length;$i$$91$$++){var $trigger$$=$JSCompiler_StaticMethods_registerListenersOnFilters_$self$$.options.additionalFilterTriggers[$i$$91$$];$trigger$$.length&&($trigger$$=$JSCompiler_StaticMethods_registerListenersOnFilters_$self$$.options.additionalFilterTriggers[$i$$91$$]=$trigger$$[0]);$JSCompiler_StaticMethods_addInput$$($JSCompiler_StaticMethods_registerListenersOnFilters_$self$$.$inputListener_$,
$trigger$$)}}$JSCompiler_prototypeAlias$$.$clearAllFilters$=function $$JSCompiler_prototypeAlias$$$$clearAllFilters$$(){this.filters.$pnforEach$(this.$clearFilterValue$,this);var $additional$$=this.options.additionalFilterTriggers;$additional$$&&$additional$$.$pnforEach$(this.$clearFilterValue$,this);this.refresh()};
$JSCompiler_prototypeAlias$$.$clearFilterValue$=function $$JSCompiler_prototypeAlias$$$$clearFilterValue$$($f$$44$$){var $type$$93$$=$f$$44$$.options?"select-one":$f$$44$$.getAttribute("type");switch($type$$93$$){case "select-one":$f$$44$$.selectedIndex=0;break;case "text":$f$$44$$.value="";break;case "checkbox":$f$$44$$.checked=$JSCompiler_alias_FALSE$$;break;default:$JSCompiler_alias_THROW$$("Filter type "+$type$$93$$+" is not supported")}};
$JSCompiler_prototypeAlias$$.$initialiseControlCaches$=function $$JSCompiler_prototypeAlias$$$$initialiseControlCaches$$(){this.$listItems$=$goog$array$toArray$$(this.list.childNodes)};
function $JSCompiler_StaticMethods_loadFiltersFromCookie_$$($JSCompiler_StaticMethods_loadFiltersFromCookie_$self$$){var $additionalStates_filterState_sharedCookieId$$=$JSCompiler_StaticMethods_loadFiltersFromCookie_$self$$.options.enableCookies&&$goog$net$cookies$$.get($JSCompiler_StaticMethods_loadFiltersFromCookie_$self$$.$filterKey_$),$states$$=[];if($additionalStates_filterState_sharedCookieId$$)for(var $additionalStates_filterState_sharedCookieId$$=$additionalStates_filterState_sharedCookieId$$.split("|"),
$i$$92_k$$1$$=0;$i$$92_k$$1$$<$additionalStates_filterState_sharedCookieId$$.length;$i$$92_k$$1$$++){var $additionalFilterStates_found$$2_s$$18$$=$additionalStates_filterState_sharedCookieId$$[$i$$92_k$$1$$].split(","),$fid_fs_header$$2_headerText$$=new $pn$ui$filter$FilterState$$($additionalFilterStates_found$$2_s$$18$$[0],$additionalFilterStates_found$$2_s$$18$$[3],parseInt($additionalFilterStates_found$$2_s$$18$$[1],10),$additionalFilterStates_found$$2_s$$18$$[2]);$states$$.push($fid_fs_header$$2_headerText$$)}if($additionalStates_filterState_sharedCookieId$$=
$JSCompiler_StaticMethods_loadFiltersFromCookie_$self$$.options.sharedCookieId){$additionalFilterStates_found$$2_s$$18$$=$JSCompiler_StaticMethods_loadFiltersFromCookie_$self$$.options.enableCookies&&$goog$net$cookies$$.get($additionalStates_filterState_sharedCookieId$$);if(!$additionalFilterStates_found$$2_s$$18$$)return;$additionalFilterStates_found$$2_s$$18$$=$additionalFilterStates_found$$2_s$$18$$.split("|");$additionalStates_filterState_sharedCookieId$$=[];for($i$$92_k$$1$$=0;$i$$92_k$$1$$<
$additionalFilterStates_found$$2_s$$18$$.length;$i$$92_k$$1$$++){var $j$$7_state$$=$additionalFilterStates_found$$2_s$$18$$[$i$$92_k$$1$$].split(","),$stateHeaderTextOrAdditionalFilterId$$=$j$$7_state$$[0];if("#"==$stateHeaderTextOrAdditionalFilterId$$.charAt(0))$fid_fs_header$$2_headerText$$=new $pn$ui$filter$FilterState$$($stateHeaderTextOrAdditionalFilterId$$.substr(1),$j$$7_state$$[3],-1,$j$$7_state$$[2]),$additionalStates_filterState_sharedCookieId$$.push($fid_fs_header$$2_headerText$$);else for(var $hidx$$=
0;$hidx$$<$JSCompiler_StaticMethods_loadFiltersFromCookie_$self$$.$headers_$.length;$hidx$$++){var $fid_fs_header$$2_headerText$$=$JSCompiler_StaticMethods_loadFiltersFromCookie_$self$$.$headers_$[$hidx$$],$visible$$="none"!=$fid_fs_header$$2_headerText$$.style.display;if(($fid_fs_header$$2_headerText$$="false"===$fid_fs_header$$2_headerText$$.getAttribute("filter")||!$visible$$?$JSCompiler_alias_NULL$$:$goog$dom$getTextContent$$($fid_fs_header$$2_headerText$$))&&$fid_fs_header$$2_headerText$$==$stateHeaderTextOrAdditionalFilterId$$)$fid_fs_header$$2_headerText$$=
$JSCompiler_StaticMethods_loadFiltersFromCookie_$self$$.filters[$JSCompiler_StaticMethods_loadFiltersFromCookie_$self$$.$filterIndexes_$.indexOf($hidx$$)].getAttribute("id"),$fid_fs_header$$2_headerText$$=new $pn$ui$filter$FilterState$$($fid_fs_header$$2_headerText$$,$j$$7_state$$[3],$hidx$$,$j$$7_state$$[2]),$additionalStates_filterState_sharedCookieId$$.push($fid_fs_header$$2_headerText$$)}}for($i$$92_k$$1$$=0;$i$$92_k$$1$$<$additionalStates_filterState_sharedCookieId$$.length;$i$$92_k$$1$$++){$additionalFilterStates_found$$2_s$$18$$=
$JSCompiler_alias_FALSE$$;for($j$$7_state$$=0;$j$$7_state$$<$states$$.length;$j$$7_state$$++)$additionalStates_filterState_sharedCookieId$$[$i$$92_k$$1$$].id==$states$$[$j$$7_state$$].id&&($states$$[$j$$7_state$$].value=$additionalStates_filterState_sharedCookieId$$[$i$$92_k$$1$$].value,$additionalFilterStates_found$$2_s$$18$$=$JSCompiler_alias_TRUE$$);$additionalFilterStates_found$$2_s$$18$$||$states$$.push($additionalStates_filterState_sharedCookieId$$[$i$$92_k$$1$$])}}$JSCompiler_StaticMethods_applyFilterStates_$$($JSCompiler_StaticMethods_loadFiltersFromCookie_$self$$,
$states$$,$JSCompiler_alias_TRUE$$)}
$JSCompiler_prototypeAlias$$.refresh=function $$JSCompiler_prototypeAlias$$$refresh$(){var $filterStates$$=this.$getFilterStates$();$JSCompiler_StaticMethods_applyFilterStates_$$(this,$filterStates$$,$JSCompiler_alias_FALSE$$);if(this.options.enableCookies){for(var $filterStatesById$$inline_172$$=[],$filterStatesByHeaderText$$inline_173$$=[],$sharedCookieId$$inline_174$$=$JSCompiler_alias_NULL$$,$i$$inline_175$$=0;$i$$inline_175$$<$filterStates$$.length;$i$$inline_175$$++){var $state$$inline_176$$=$filterStates$$[$i$$inline_175$$];
$JSCompiler_StaticMethods_addFilterStateToStringArray_$$($filterStatesById$$inline_172$$,$state$$inline_176$$);if($sharedCookieId$$inline_174$$=this.options.sharedCookieId){var $header$$inline_178_headerText$$inline_177$$;if(0<=$state$$inline_176$$.$idx$){$header$$inline_178_headerText$$inline_177$$=this.$headers_$[$state$$inline_176$$.$idx$];var $visible$$inline_179$$="none"!=$header$$inline_178_headerText$$inline_177$$.style.display;$header$$inline_178_headerText$$inline_177$$="false"===$header$$inline_178_headerText$$inline_177$$.getAttribute("filter")||
!$visible$$inline_179$$?$JSCompiler_alias_NULL$$:$goog$dom$getTextContent$$($header$$inline_178_headerText$$inline_177$$)}else $header$$inline_178_headerText$$inline_177$$="#"+$state$$inline_176$$.id;$header$$inline_178_headerText$$inline_177$$&&($filterStatesByHeaderText$$inline_173$$=$JSCompiler_StaticMethods_addFilterStateToStringArray_$$($filterStatesByHeaderText$$inline_173$$,new $pn$ui$filter$FilterState$$($header$$inline_178_headerText$$inline_177$$,$state$$inline_176$$.value,$state$$inline_176$$.$idx$,
$state$$inline_176$$.type)))}}$goog$net$cookies$$.set(this.$filterKey_$,$filterStatesById$$inline_172$$.join(""),999999);$sharedCookieId$$inline_174$$&&$goog$net$cookies$$.set($sharedCookieId$$inline_174$$,$filterStatesByHeaderText$$inline_173$$.join(""),999999)}};$JSCompiler_prototypeAlias$$.$getFilterStates$=function $$JSCompiler_prototypeAlias$$$$getFilterStates$$(){var $state$$1$$=this.$getFilterStateForFilter$(this.$input_$);return $state$$1$$?[$state$$1$$]:[]};
$JSCompiler_prototypeAlias$$.$getFilterStateForFilter$=function $$JSCompiler_prototypeAlias$$$$getFilterStateForFilter$$($filter$$2_id$$5$$){var $type$$94$$=$filter$$2_id$$5$$.options?"select-one":$filter$$2_id$$5$$.getAttribute("type"),$value$$73$$;switch($type$$94$$){case "text":$value$$73$$=$filter$$2_id$$5$$.value===$JSCompiler_alias_NULL$$?$JSCompiler_alias_NULL$$:$filter$$2_id$$5$$.value.toLowerCase();break;case "select-one":$value$$73$$=0===$filter$$2_id$$5$$.selectedIndex?$JSCompiler_alias_NULL$$:
$filter$$2_id$$5$$.options[$filter$$2_id$$5$$.selectedIndex].value;break;case "checkbox":$value$$73$$=$filter$$2_id$$5$$.checked;break;default:$JSCompiler_alias_THROW$$("Filter type "+$type$$94$$+" is not supported")}if($value$$73$$===$JSCompiler_alias_NULL$$||0>=$value$$73$$.length)return $JSCompiler_alias_NULL$$;$filter$$2_id$$5$$=$filter$$2_id$$5$$.getAttribute("id");return new $pn$ui$filter$FilterState$$($filter$$2_id$$5$$,$value$$73$$,0,$type$$94$$)};
function $JSCompiler_StaticMethods_addFilterStateToStringArray_$$($arr$$67$$,$state$$3$$){0<$arr$$67$$.length&&$arr$$67$$.push("|");$arr$$67$$.push($state$$3$$.id);$arr$$67$$.push(",");$arr$$67$$.push($state$$3$$.$idx$);$arr$$67$$.push(",");$arr$$67$$.push($state$$3$$.type);$arr$$67$$.push(",");$arr$$67$$.push($state$$3$$.value)}
function $JSCompiler_StaticMethods_applyFilterStates_$$($JSCompiler_StaticMethods_applyFilterStates_$self$$,$filterStates$$1$$,$setValueOnFilter$$){$JSCompiler_StaticMethods_applyFilterStates_$self$$.options.filteringElements&&$JSCompiler_StaticMethods_applyFilterStates_$self$$.options.filteringElements($filterStates$$1$$);$JSCompiler_StaticMethods_applyFilterStatesImpl_$$($JSCompiler_StaticMethods_applyFilterStates_$self$$,$filterStates$$1$$,$setValueOnFilter$$);$JSCompiler_StaticMethods_applyFilterStates_$self$$.options.filteredElements&&
$JSCompiler_StaticMethods_applyFilterStates_$self$$.options.filteredElements($filterStates$$1$$)}
function $JSCompiler_StaticMethods_applyFilterStatesImpl_$$($JSCompiler_StaticMethods_applyFilterStatesImpl_$self$$,$filterStates$$2$$,$setValueOnFilter$$1$$){$JSCompiler_StaticMethods_clearElementFilteredStates_$$($JSCompiler_StaticMethods_applyFilterStatesImpl_$self$$);if(!(0===(!$filterStates$$2$$||$filterStates$$2$$.length)&&$JSCompiler_StaticMethods_applyFilterStatesImpl_$self$$.options.matchingElement))if($filterStates$$2$$===$JSCompiler_alias_NULL$$||0===$filterStates$$2$$.length)$JSCompiler_StaticMethods_applyStateToElements_$$($JSCompiler_StaticMethods_applyFilterStatesImpl_$self$$,
$JSCompiler_alias_NULL$$);else for(var $i$$94$$=0;$i$$94$$<$filterStates$$2$$.length;$i$$94$$++){var $state$$4$$=$filterStates$$2$$[$i$$94$$];if($setValueOnFilter$$1$$&&$state$$4$$.type&&$state$$4$$.id){var $filter$$3$$=$goog$isString$$($state$$4$$.id)?document.getElementById($state$$4$$.id):$state$$4$$.id;if(!$filter$$3$$||0===$filter$$3$$.length)continue;switch($state$$4$$.type){case "select-one":pntoarr($filter$$3$$.options).$pnforEach$(function($o$$1$$,$idx$$7$$){$o$$1$$.value===$state$$4$$.value?
($o$$1$$.setAttribute("selected","selected"),$filter$$3$$.selectedIndex=$idx$$7$$):$o$$1$$.removeAttribute("selected")});break;case "text":$filter$$3$$.value=$state$$4$$.value;break;case "checkbox":$filter$$3$$.checked="true"===$state$$4$$.value;break;default:$JSCompiler_alias_THROW$$("Filter type "+$state$$4$$.type+" is not supported")}}$JSCompiler_StaticMethods_applyStateToElements_$$($JSCompiler_StaticMethods_applyFilterStatesImpl_$self$$,$state$$4$$)}$JSCompiler_StaticMethods_hideElementsThatDoNotMatchAnyFiltres_$$($JSCompiler_StaticMethods_applyFilterStatesImpl_$self$$)}
function $JSCompiler_StaticMethods_clearElementFilteredStates_$$($JSCompiler_StaticMethods_clearElementFilteredStates_$self$$){$JSCompiler_StaticMethods_clearElementFilteredStates_$self$$.$listItems$.$pnforEach$(function($r$$1$$){$r$$1$$.removeAttribute("filtermatch")})}
function $JSCompiler_StaticMethods_applyStateToElements_$$($JSCompiler_StaticMethods_applyStateToElements_$self$$,$filterState$$1$$){for(var $normalisedTokens$$3$$=$JSCompiler_StaticMethods_getNormalisedSearchTokensForState_$$($JSCompiler_StaticMethods_applyStateToElements_$self$$,$filterState$$1$$),$i$$95$$=0;$i$$95$$<$JSCompiler_StaticMethods_applyStateToElements_$self$$.$listItems$.length&&!$JSCompiler_StaticMethods_applyStateToElements_$self$$.$cancelQuickFind_$;$i$$95$$++){var $item$$2$$=$JSCompiler_StaticMethods_applyStateToElements_$self$$.$listItems$[$i$$95$$];
$item$$2$$.getAttribute("filtermatch")||$JSCompiler_StaticMethods_applyStateToElements_$self$$.$doesElementContainText$($filterState$$1$$,$item$$2$$,$normalisedTokens$$3$$)||$item$$2$$.setAttribute("filtermatch","false")}}
function $JSCompiler_StaticMethods_getNormalisedSearchTokensForState_$$($JSCompiler_StaticMethods_getNormalisedSearchTokensForState_$self$$,$state$$5$$){if($state$$5$$===$JSCompiler_alias_NULL$$)return $JSCompiler_alias_NULL$$;switch($state$$5$$.type){case "select-one":return[-1!=$state$$5$$.value.indexOf("&")?"document"in $goog$global$$?$goog$string$unescapeEntitiesUsingDom_$$($state$$5$$.value):$goog$string$unescapePureXmlEntities_$$($state$$5$$.value):$state$$5$$.value];case "text":var $JSCompiler_StaticMethods_parseSearchTokens$self$$inline_181_JSCompiler_inline_result$$11$$;
$JSCompiler_StaticMethods_parseSearchTokens$self$$inline_181_JSCompiler_inline_result$$11$$=$JSCompiler_StaticMethods_getNormalisedSearchTokensForState_$self$$.$search_$;var $matches$$inline_240_postFix$$inline_254_text$$inline_182_tokens$$inline_246$$=$state$$5$$.value;if($matches$$inline_240_postFix$$inline_254_text$$inline_182_tokens$$inline_246$$){var $matches$$inline_240_postFix$$inline_254_text$$inline_182_tokens$$inline_246$$=$matches$$inline_240_postFix$$inline_254_text$$inline_182_tokens$$inline_246$$.toLowerCase(),
$exp$$inline_238_newTokens$$inline_247_normalisedTokens$$inline_242_stackOps$$inline_255$$;$exp$$inline_238_newTokens$$inline_247_normalisedTokens$$inline_242_stackOps$$inline_255$$=$matches$$inline_240_postFix$$inline_254_text$$inline_182_tokens$$inline_246$$.replace(/>= /g,">=").replace(/> /g,">").replace(/<= /g,"<=").replace(/< /g,"<").replace(/!= /g,"!=").replace(/= /g,"=");for(var $i$$inline_243_i$$inline_249_regex$$inline_239_stackOperator$$inline_256$$=/([^"^\s]+)\s*|"([^"]+)"\s*/g,$matches$$inline_240_postFix$$inline_254_text$$inline_182_tokens$$inline_246$$=
[],$i$$inline_257_match$$inline_241_token$$inline_244_token$$inline_250$$=$JSCompiler_alias_NULL$$;$i$$inline_257_match$$inline_241_token$$inline_244_token$$inline_250$$=$i$$inline_243_i$$inline_249_regex$$inline_239_stackOperator$$inline_256$$.exec($exp$$inline_238_newTokens$$inline_247_normalisedTokens$$inline_242_stackOps$$inline_255$$);)$matches$$inline_240_postFix$$inline_254_text$$inline_182_tokens$$inline_246$$.push($i$$inline_257_match$$inline_241_token$$inline_244_token$$inline_250$$[1]||
$i$$inline_257_match$$inline_241_token$$inline_244_token$$inline_250$$[2]);$exp$$inline_238_newTokens$$inline_247_normalisedTokens$$inline_242_stackOps$$inline_255$$=[];for($i$$inline_243_i$$inline_249_regex$$inline_239_stackOperator$$inline_256$$=0;$i$$inline_243_i$$inline_249_regex$$inline_239_stackOperator$$inline_256$$<$matches$$inline_240_postFix$$inline_254_text$$inline_182_tokens$$inline_246$$.length;$i$$inline_243_i$$inline_249_regex$$inline_239_stackOperator$$inline_256$$++)$i$$inline_257_match$$inline_241_token$$inline_244_token$$inline_250$$=
$matches$$inline_240_postFix$$inline_254_text$$inline_182_tokens$$inline_246$$[$i$$inline_243_i$$inline_249_regex$$inline_239_stackOperator$$inline_256$$],$i$$inline_257_match$$inline_241_token$$inline_244_token$$inline_250$$=$JSCompiler_StaticMethods_normaliseTerm_$$($exp$$inline_238_newTokens$$inline_247_normalisedTokens$$inline_242_stackOps$$inline_255$$,$i$$inline_257_match$$inline_241_token$$inline_244_token$$inline_250$$,"("),$i$$inline_257_match$$inline_241_token$$inline_244_token$$inline_250$$=
$JSCompiler_StaticMethods_normaliseTerm_$$($exp$$inline_238_newTokens$$inline_247_normalisedTokens$$inline_242_stackOps$$inline_255$$,$i$$inline_257_match$$inline_241_token$$inline_244_token$$inline_250$$,")"),0<$i$$inline_257_match$$inline_241_token$$inline_244_token$$inline_250$$.length&&$exp$$inline_238_newTokens$$inline_247_normalisedTokens$$inline_242_stackOps$$inline_255$$.push($i$$inline_257_match$$inline_241_token$$inline_244_token$$inline_250$$);$matches$$inline_240_postFix$$inline_254_text$$inline_182_tokens$$inline_246$$=
$exp$$inline_238_newTokens$$inline_247_normalisedTokens$$inline_242_stackOps$$inline_255$$;$exp$$inline_238_newTokens$$inline_247_normalisedTokens$$inline_242_stackOps$$inline_255$$=[];for(var $lastToken$$inline_248_normalisedTokens$$inline_253$$,$i$$inline_243_i$$inline_249_regex$$inline_239_stackOperator$$inline_256$$=0;$i$$inline_243_i$$inline_249_regex$$inline_239_stackOperator$$inline_256$$<$matches$$inline_240_postFix$$inline_254_text$$inline_182_tokens$$inline_246$$.length;$i$$inline_243_i$$inline_249_regex$$inline_239_stackOperator$$inline_256$$++)if(($i$$inline_257_match$$inline_241_token$$inline_244_token$$inline_250$$=
$matches$$inline_240_postFix$$inline_254_text$$inline_182_tokens$$inline_246$$[$i$$inline_243_i$$inline_249_regex$$inline_239_stackOperator$$inline_256$$])&&0!==$i$$inline_257_match$$inline_241_token$$inline_244_token$$inline_250$$.length)0===$i$$inline_257_match$$inline_241_token$$inline_244_token$$inline_250$$.indexOf("-")&&($i$$inline_257_match$$inline_241_token$$inline_244_token$$inline_250$$="not",$matches$$inline_240_postFix$$inline_254_text$$inline_182_tokens$$inline_246$$[$i$$inline_243_i$$inline_249_regex$$inline_239_stackOperator$$inline_256$$]=
$matches$$inline_240_postFix$$inline_254_text$$inline_182_tokens$$inline_246$$[$i$$inline_243_i$$inline_249_regex$$inline_239_stackOperator$$inline_256$$].substring(1),$i$$inline_243_i$$inline_249_regex$$inline_239_stackOperator$$inline_256$$--),$lastToken$$inline_248_normalisedTokens$$inline_253$$&&"("!==$lastToken$$inline_248_normalisedTokens$$inline_253$$&&("not"!==$lastToken$$inline_248_normalisedTokens$$inline_253$$&&"and"!==$lastToken$$inline_248_normalisedTokens$$inline_253$$&&"or"!==$lastToken$$inline_248_normalisedTokens$$inline_253$$&&
"and"!==$i$$inline_257_match$$inline_241_token$$inline_244_token$$inline_250$$&&"or"!==$i$$inline_257_match$$inline_241_token$$inline_244_token$$inline_250$$&&")"!==$i$$inline_257_match$$inline_241_token$$inline_244_token$$inline_250$$)&&$exp$$inline_238_newTokens$$inline_247_normalisedTokens$$inline_242_stackOps$$inline_255$$.push("and"),$exp$$inline_238_newTokens$$inline_247_normalisedTokens$$inline_242_stackOps$$inline_255$$.push($i$$inline_257_match$$inline_241_token$$inline_244_token$$inline_250$$),
$lastToken$$inline_248_normalisedTokens$$inline_253$$=$i$$inline_257_match$$inline_241_token$$inline_244_token$$inline_250$$;$lastToken$$inline_248_normalisedTokens$$inline_253$$=$exp$$inline_238_newTokens$$inline_247_normalisedTokens$$inline_242_stackOps$$inline_255$$;$matches$$inline_240_postFix$$inline_254_text$$inline_182_tokens$$inline_246$$="";$exp$$inline_238_newTokens$$inline_247_normalisedTokens$$inline_242_stackOps$$inline_255$$=[];for($i$$inline_257_match$$inline_241_token$$inline_244_token$$inline_250$$=
0;$i$$inline_257_match$$inline_241_token$$inline_244_token$$inline_250$$<$lastToken$$inline_248_normalisedTokens$$inline_253$$.length;$i$$inline_257_match$$inline_241_token$$inline_244_token$$inline_250$$++){var $token$$inline_258$$=$lastToken$$inline_248_normalisedTokens$$inline_253$$[$i$$inline_257_match$$inline_241_token$$inline_244_token$$inline_250$$];if(0!==$token$$inline_258$$.length)if("and"!==$token$$inline_258$$&&"or"!==$token$$inline_258$$&&"not"!==$token$$inline_258$$&&"("!==$token$$inline_258$$&&
")"!==$token$$inline_258$$)$matches$$inline_240_postFix$$inline_254_text$$inline_182_tokens$$inline_246$$=$matches$$inline_240_postFix$$inline_254_text$$inline_182_tokens$$inline_246$$+"|"+$token$$inline_258$$;else if(0===$exp$$inline_238_newTokens$$inline_247_normalisedTokens$$inline_242_stackOps$$inline_255$$.length||"("===$token$$inline_258$$)$exp$$inline_238_newTokens$$inline_247_normalisedTokens$$inline_242_stackOps$$inline_255$$.push($token$$inline_258$$);else if(")"===$token$$inline_258$$)for($i$$inline_243_i$$inline_249_regex$$inline_239_stackOperator$$inline_256$$=
$exp$$inline_238_newTokens$$inline_247_normalisedTokens$$inline_242_stackOps$$inline_255$$.pop();"("!==$i$$inline_243_i$$inline_249_regex$$inline_239_stackOperator$$inline_256$$&&0<$exp$$inline_238_newTokens$$inline_247_normalisedTokens$$inline_242_stackOps$$inline_255$$.length;)$matches$$inline_240_postFix$$inline_254_text$$inline_182_tokens$$inline_246$$=$matches$$inline_240_postFix$$inline_254_text$$inline_182_tokens$$inline_246$$+"|"+$i$$inline_243_i$$inline_249_regex$$inline_239_stackOperator$$inline_256$$,
$i$$inline_243_i$$inline_249_regex$$inline_239_stackOperator$$inline_256$$=$exp$$inline_238_newTokens$$inline_247_normalisedTokens$$inline_242_stackOps$$inline_255$$.pop();else{if("("!==$exp$$inline_238_newTokens$$inline_247_normalisedTokens$$inline_242_stackOps$$inline_255$$[$exp$$inline_238_newTokens$$inline_247_normalisedTokens$$inline_242_stackOps$$inline_255$$.length-1])for(;0!==$exp$$inline_238_newTokens$$inline_247_normalisedTokens$$inline_242_stackOps$$inline_255$$.length&&"("!==$exp$$inline_238_newTokens$$inline_247_normalisedTokens$$inline_242_stackOps$$inline_255$$[$exp$$inline_238_newTokens$$inline_247_normalisedTokens$$inline_242_stackOps$$inline_255$$.length-
1];)if($JSCompiler_StaticMethods_parseSearchTokens$self$$inline_181_JSCompiler_inline_result$$11$$.$precedences_$[$exp$$inline_238_newTokens$$inline_247_normalisedTokens$$inline_242_stackOps$$inline_255$$[$exp$$inline_238_newTokens$$inline_247_normalisedTokens$$inline_242_stackOps$$inline_255$$.length-1]]>$JSCompiler_StaticMethods_parseSearchTokens$self$$inline_181_JSCompiler_inline_result$$11$$.$precedences_$[$token$$inline_258$$])$i$$inline_243_i$$inline_249_regex$$inline_239_stackOperator$$inline_256$$=
$exp$$inline_238_newTokens$$inline_247_normalisedTokens$$inline_242_stackOps$$inline_255$$.pop(),$matches$$inline_240_postFix$$inline_254_text$$inline_182_tokens$$inline_246$$=$matches$$inline_240_postFix$$inline_254_text$$inline_182_tokens$$inline_246$$+"|"+$i$$inline_243_i$$inline_249_regex$$inline_239_stackOperator$$inline_256$$;else break;$exp$$inline_238_newTokens$$inline_247_normalisedTokens$$inline_242_stackOps$$inline_255$$.push($token$$inline_258$$)}}for(;0<$exp$$inline_238_newTokens$$inline_247_normalisedTokens$$inline_242_stackOps$$inline_255$$.length;)$matches$$inline_240_postFix$$inline_254_text$$inline_182_tokens$$inline_246$$=
$matches$$inline_240_postFix$$inline_254_text$$inline_182_tokens$$inline_246$$+"|"+$exp$$inline_238_newTokens$$inline_247_normalisedTokens$$inline_242_stackOps$$inline_255$$.pop();$JSCompiler_StaticMethods_parseSearchTokens$self$$inline_181_JSCompiler_inline_result$$11$$=$matches$$inline_240_postFix$$inline_254_text$$inline_182_tokens$$inline_246$$.substring(1).split("|")}else $JSCompiler_StaticMethods_parseSearchTokens$self$$inline_181_JSCompiler_inline_result$$11$$=$JSCompiler_alias_NULL$$;return $JSCompiler_StaticMethods_parseSearchTokens$self$$inline_181_JSCompiler_inline_result$$11$$;
case "checkbox":return $JSCompiler_alias_NULL$$;default:$JSCompiler_alias_THROW$$("State type "+$state$$5$$.type+" is not supported")}}
function $JSCompiler_StaticMethods_hideElementsThatDoNotMatchAnyFiltres_$$($JSCompiler_StaticMethods_hideElementsThatDoNotMatchAnyFiltres_$self$$){for(var $i$$96$$=0;$i$$96$$<$JSCompiler_StaticMethods_hideElementsThatDoNotMatchAnyFiltres_$self$$.$listItems$.length&&!$JSCompiler_StaticMethods_hideElementsThatDoNotMatchAnyFiltres_$self$$.$cancelQuickFind_$;$i$$96$$++){var $item$$3$$=$JSCompiler_StaticMethods_hideElementsThatDoNotMatchAnyFiltres_$self$$.$listItems$[$i$$96$$],$show$$="false"!==$item$$3$$.getAttribute("filtermatch");
$item$$3$$.style.display=$show$$?"":"none"}}
$JSCompiler_prototypeAlias$$.$doesElementContainText$=function $$JSCompiler_prototypeAlias$$$$doesElementContainText$$($state$$6$$,$item$$4$$,$textTokens$$1$$,$opt_txt_text$$inline_189$$){$pn$ass$$($opt_txt_text$$inline_189$$===$JSCompiler_alias_VOID$$||$goog$isArray$$($opt_txt_text$$inline_189$$));var $JSCompiler_temp$$12_exact_object$$inline_197$$=$state$$6$$!=$JSCompiler_alias_NULL$$&&"select-one"===$state$$6$$.type;$opt_txt_text$$inline_189$$=$opt_txt_text$$inline_189$$||[$goog$string$trim$$($goog$dom$getTextContent$$($item$$4$$))];
$pn$assArr$$($opt_txt_text$$inline_189$$);if($JSCompiler_temp$$12_exact_object$$inline_197$$=$JSCompiler_StaticMethods_doesTextMatchTokens$$(this.$search_$,$opt_txt_text$$inline_189$$,$textTokens$$1$$,$JSCompiler_temp$$12_exact_object$$inline_197$$))this.options.matchingElement?($JSCompiler_temp$$12_exact_object$$inline_197$$=$item$$4$$,window.jQuery&&($JSCompiler_temp$$12_exact_object$$inline_197$$=window.jQuery($item$$4$$)),$JSCompiler_temp$$12_exact_object$$inline_197$$=this.options.matchingElement($state$$6$$,
$JSCompiler_temp$$12_exact_object$$inline_197$$,$textTokens$$1$$)):$JSCompiler_temp$$12_exact_object$$inline_197$$=$JSCompiler_alias_TRUE$$;return $JSCompiler_temp$$12_exact_object$$inline_197$$};function $pn$ui$filter$TableFilter$$($grid$$,$opts$$){$opts$$.matchingRow&&($opts$$.matchingElement=$opts$$.matchingRow);$opts$$.filteringRows&&($opts$$.filteringElements=$opts$$.filteringRows);$opts$$.filteredRows&&($opts$$.filteredElements=$opts$$.filteredRows);$pn$ui$filter$GenericListFilter$$.call(this,$JSCompiler_alias_NULL$$,$grid$$,$opts$$)}$goog$inherits$$($pn$ui$filter$TableFilter$$,$pn$ui$filter$GenericListFilter$$);$JSCompiler_prototypeAlias$$=$pn$ui$filter$TableFilter$$.prototype;
$JSCompiler_prototypeAlias$$.$initialiseFilters$=function $$JSCompiler_prototypeAlias$$$$initialiseFilters$$(){this.$tbody_$=$goog$dom$getElementsByTagNameAndClass_$$("tbody",$JSCompiler_alias_NULL$$,this.list)[0];this.$thead_$=$goog$dom$getElementsByTagNameAndClass_$$("thead",$JSCompiler_alias_NULL$$,this.options.frozenHeaderTable||this.list)[0];if(!this.$thead_$){var $tdCells_trTableRow$$=$goog$dom$getElementsByTagNameAndClass_$$("tr",$JSCompiler_alias_NULL$$,this.$tbody_$)[0],$tdCells_trTableRow$$=
$goog$dom$getElementsByTagNameAndClass_$$("td",$JSCompiler_alias_NULL$$,$tdCells_trTableRow$$),$thead$$=$goog$dom$createDom$$("thead",$JSCompiler_alias_NULL$$),$parent$$inline_199_tr$$=this.list;$parent$$inline_199_tr$$.insertBefore($thead$$,$parent$$inline_199_tr$$.childNodes[0]||$JSCompiler_alias_NULL$$);$parent$$inline_199_tr$$=$goog$dom$createDom$$("tr",$JSCompiler_alias_NULL$$);$thead$$.appendChild($parent$$inline_199_tr$$);for(var $i$$97$$=0;$i$$97$$<$tdCells_trTableRow$$.length;$i$$97$$++){var $th$$=
$goog$dom$createDom$$("th",$JSCompiler_alias_NULL$$);$th$$.innerHTML="col"+$i$$97$$;$parent$$inline_199_tr$$.appendChild($th$$)}this.$thead_$=$thead$$}$pn$ui$filter$TableFilter$$.$superClass_$.$initialiseFilters$.call(this)};
$JSCompiler_prototypeAlias$$.$initialiseControlCaches$=function $$JSCompiler_prototypeAlias$$$$initialiseControlCaches$$(){var $headerRows_tHeadFilters$$=$goog$dom$getElementsByTagNameAndClass_$$("tr",$JSCompiler_alias_NULL$$,this.$thead_$),$filterRow$$=$goog$dom$getElementsByTagNameAndClass_$$("tr","filters",this.$thead_$);1<$headerRows_tHeadFilters$$.length&&0<$filterRow$$.length?this.$headers_$=$goog$dom$getElementsByTagNameAndClass_$$("th",$JSCompiler_alias_NULL$$,$headerRows_tHeadFilters$$[$headerRows_tHeadFilters$$.length-
2]):0<$headerRows_tHeadFilters$$.length&&(this.$headers_$=$goog$dom$getElementsByTagNameAndClass_$$("th",$JSCompiler_alias_NULL$$,$headerRows_tHeadFilters$$[$headerRows_tHeadFilters$$.length-1]));this.$listItems$=$pn$toarr$$($goog$dom$getElementsByTagNameAndClass_$$("tr",$JSCompiler_alias_NULL$$,this.$tbody_$));$JSCompiler_StaticMethods_buildFiltersRow_$$(this);$headerRows_tHeadFilters$$=$goog$dom$getElementsByTagNameAndClass_$$("tr","filters",this.$thead_$)[0];this.filters=$goog$array$concat$$($goog$array$map$$($goog$dom$getElementsByTagNameAndClass_$$("input",
$JSCompiler_alias_NULL$$,$headerRows_tHeadFilters$$),function($ctl$$){return $ctl$$}),$goog$array$map$$($goog$dom$getElementsByTagNameAndClass_$$("select",$JSCompiler_alias_NULL$$,$headerRows_tHeadFilters$$),function($ctl$$1$$){return $ctl$$1$$}));this.$filterIndexes_$=this.filters.$pnmap$(this.$getColumnIndexOfFilter_$,this)};
$JSCompiler_prototypeAlias$$.$getColumnIndexOfFilter_$=function $$JSCompiler_prototypeAlias$$$$getColumnIndexOfFilter_$$($f$$45_td$$){$f$$45_td$$=$goog$dom$getAncestorByTagNameAndClass$$($f$$45_td$$,"TD");if(!$f$$45_td$$||0>=$f$$45_td$$.length)return-1;var $tr$$1$$=$goog$dom$getAncestorByTagNameAndClass$$($f$$45_td$$,"TR");return $goog$array$toArray$$($tr$$1$$.getElementsByTagName("td")).$pnindexOf$($f$$45_td$$)};
function $JSCompiler_StaticMethods_buildFiltersRow_$$($JSCompiler_StaticMethods_buildFiltersRow_$self$$){var $filterRow$$1_node$$inline_209_tr$$2$$=$goog$dom$getElementsByTagNameAndClass_$$("tr","filters",$JSCompiler_StaticMethods_buildFiltersRow_$self$$.$thead_$);0<$filterRow$$1_node$$inline_209_tr$$2$$.length&&($filterRow$$1_node$$inline_209_tr$$2$$=$filterRow$$1_node$$inline_209_tr$$2$$[0])&&$filterRow$$1_node$$inline_209_tr$$2$$.parentNode&&$filterRow$$1_node$$inline_209_tr$$2$$.parentNode.removeChild($filterRow$$1_node$$inline_209_tr$$2$$);
for(var $filterRow$$1_node$$inline_209_tr$$2$$=$goog$dom$createDom$$("tr",{"class":"filters"}),$i$$98$$=0;$i$$98$$<$JSCompiler_StaticMethods_buildFiltersRow_$self$$.$headers_$.length;$i$$98$$++){var $element$$inline_216_filterType$$inline_214_header$$4_td$$1$$=$JSCompiler_StaticMethods_buildFiltersRow_$self$$.$headers_$[$i$$98$$],$filterClass_visible$$2$$="none"!=$element$$inline_216_filterType$$inline_214_header$$4_td$$1$$.style.display;if($filterClass_visible$$2$$){var $JSCompiler_StaticMethods_getFilterDom_$self$$inline_211_headerText$$2$$=
"false"===$element$$inline_216_filterType$$inline_214_header$$4_td$$1$$.getAttribute("filter")||!$filterClass_visible$$2$$?"":$goog$dom$getTextContent$$($element$$inline_216_filterType$$inline_214_header$$4_td$$1$$),$filterClass_visible$$2$$=$element$$inline_216_filterType$$inline_214_header$$4_td$$1$$.getAttribute("filter-class");if($JSCompiler_StaticMethods_getFilterDom_$self$$inline_211_headerText$$2$$&&0<$JSCompiler_StaticMethods_getFilterDom_$self$$inline_211_headerText$$2$$.length){var $filter$$4$$;
a:{var $JSCompiler_StaticMethods_getFilterDom_$self$$inline_211_headerText$$2$$=$JSCompiler_StaticMethods_buildFiltersRow_$self$$,$colIdx$$inline_212$$=$i$$98$$,$element$$inline_216_filterType$$inline_214_header$$4_td$$1$$=$element$$inline_216_filterType$$inline_214_header$$4_td$$1$$.getAttribute("filter-type")||"text";switch($element$$inline_216_filterType$$inline_214_header$$4_td$$1$$){case "text":$filter$$4$$=$goog$dom$createDom$$("input",{type:"text",id:$JSCompiler_StaticMethods_getListId$$($JSCompiler_StaticMethods_getFilterDom_$self$$inline_211_headerText$$2$$)+
"_filter_"+$colIdx$$inline_212$$,"class":"filter",title:$JSCompiler_StaticMethods_getFilterDom_$self$$inline_211_headerText$$2$$.options.filterToolTipMessage});break a;case "ddl":$filter$$4$$=$JSCompiler_StaticMethods_getSelectFilter_$$($JSCompiler_StaticMethods_getFilterDom_$self$$inline_211_headerText$$2$$,$colIdx$$inline_212$$);break a;default:$JSCompiler_alias_THROW$$("filter-type: "+$element$$inline_216_filterType$$inline_214_header$$4_td$$1$$+" is not supported")}}$element$$inline_216_filterType$$inline_214_header$$4_td$$1$$=
$filter$$4$$;$goog$isString$$("width")?$goog$style$setStyle_$$($element$$inline_216_filterType$$inline_214_header$$4_td$$1$$,"95%","width"):$goog$object$forEach$$("width",$goog$partial$$($goog$style$setStyle_$$,$element$$inline_216_filterType$$inline_214_header$$4_td$$1$$));$element$$inline_216_filterType$$inline_214_header$$4_td$$1$$=$goog$dom$createDom$$("td",$JSCompiler_alias_NULL$$,$filter$$4$$)}else $element$$inline_216_filterType$$inline_214_header$$4_td$$1$$=$goog$dom$createDom$$("td",{},"");
$filterClass_visible$$2$$&&$goog$dom$classes$add$$($element$$inline_216_filterType$$inline_214_header$$4_td$$1$$,$filterClass_visible$$2$$);$filterRow$$1_node$$inline_209_tr$$2$$.appendChild($element$$inline_216_filterType$$inline_214_header$$4_td$$1$$)}}$JSCompiler_StaticMethods_buildFiltersRow_$self$$.$thead_$.appendChild($filterRow$$1_node$$inline_209_tr$$2$$)}
function $JSCompiler_StaticMethods_getSelectFilter_$$($JSCompiler_StaticMethods_getSelectFilter_$self$$,$colIdx$$1$$){var $select$$=$goog$dom$createDom$$("select",{id:$JSCompiler_StaticMethods_getListId$$($JSCompiler_StaticMethods_getSelectFilter_$self$$)+"_filter_"+$colIdx$$1$$,"class":"filter"},$goog$dom$createDom$$("option",{},$JSCompiler_StaticMethods_getSelectFilter_$self$$.options.selectOptionLabel)),$values$$7$$=[];$JSCompiler_StaticMethods_getSelectFilter_$self$$.$listItems$.$pnmap$(function($r$$2$$){return $r$$2$$.cells[$colIdx$$1$$]}).$pnforEach$(function($td$$2_txt$$3$$){($td$$2_txt$$3$$=
$goog$string$trim$$($goog$dom$getTextContent$$($td$$2_txt$$3$$)))&&!("&nbsp;"===$td$$2_txt$$3$$||0<=$values$$7$$.$pnindexOf$($td$$2_txt$$3$$))&&$values$$7$$.push($td$$2_txt$$3$$)});$values$$7$$.sort();$values$$7$$.$pnforEach$(function($child$$inline_227_txt$$4$$){$child$$inline_227_txt$$4$$=$goog$dom$createDom$$("option",{value:$child$$inline_227_txt$$4$$.replace('"',"&quot;")},$child$$inline_227_txt$$4$$);$select$$.appendChild($child$$inline_227_txt$$4$$)});return $select$$}
$JSCompiler_prototypeAlias$$.$getFilterStates$=function $$JSCompiler_prototypeAlias$$$$getFilterStates$$(){for(var $filterStates$$3$$=[],$i$$99$$=0;$i$$99$$<this.filters.length;$i$$99$$++){var $state$$8$$=this.$getFilterStateForFilter$(this.filters[$i$$99$$]);$state$$8$$&&$filterStates$$3$$.push($state$$8$$)}if(!this.options.additionalFilterTriggers)return $filterStates$$3$$;for($i$$99$$=0;$i$$99$$<this.options.additionalFilterTriggers.length;$i$$99$$++)($state$$8$$=this.$getFilterStateForFilter$(this.options.additionalFilterTriggers[$i$$99$$]))&&
$filterStates$$3$$.push($state$$8$$);return $filterStates$$3$$};$JSCompiler_prototypeAlias$$.$getFilterStateForFilter$=function $$JSCompiler_prototypeAlias$$$$getFilterStateForFilter$$($filter$$5$$){var $state$$9$$=$pn$ui$filter$TableFilter$$.$superClass_$.$getFilterStateForFilter$.call(this,$filter$$5$$);$state$$9$$&&($state$$9$$.$idx$=this.$getColumnIndexOfFilter_$($filter$$5$$));return $state$$9$$};
$JSCompiler_prototypeAlias$$.$doesElementContainText$=function $$JSCompiler_prototypeAlias$$$$doesElementContainText$$($state$$10$$,$tr$$3$$,$textTokens$$4$$){var $cells$$2$$=$tr$$3$$.getElementsByTagName("td"),$columnIdx_txt$$5$$=$state$$10$$===$JSCompiler_alias_NULL$$?-1:$state$$10$$.$idx$;if(0>$columnIdx_txt$$5$$){for(var $columnIdx_txt$$5$$=[],$i$$100$$=0;$i$$100$$<$cells$$2$$.length;$i$$100$$++){var $header$$6$$=this.$headers_$[$i$$100$$];"none"!=$header$$6$$.style.display&&"false"!==$header$$6$$.getAttribute("filter")&&
$columnIdx_txt$$5$$.push($goog$string$trim$$($goog$dom$getTextContent$$($cells$$2$$[$i$$100$$])))}return $pn$ui$filter$TableFilter$$.$superClass_$.$doesElementContainText$.call(this,$state$$10$$,$tr$$3$$,$textTokens$$4$$,$columnIdx_txt$$5$$)}return $pn$ui$filter$TableFilter$$.$superClass_$.$doesElementContainText$.call(this,$state$$10$$,$cells$$2$$[$columnIdx_txt$$5$$],$textTokens$$4$$)};var $jq$$=window.jQuery;
$jq$$&&function($jq$$1$$){$jq$$1$$.$tableFilter$=function $$jq$$1$$$$tableFilter$$($element$$70$$,$opts$$1$$){var $tf$$;this.$init$=function $this$$init$$(){var $options$$4$$=$jq$$1$$.extend({},new $pn$ui$filter$TableFilterOptions$$,$opts$$1$$);$tf$$=new $pn$ui$filter$TableFilter$$($element$$70$$,$options$$4$$)};this.refresh=function $this$refresh$(){$pn$ui$filter$TableFilter$$.$superClass_$.refresh.call($tf$$)};this.reset=function $this$reset$($list$$2$$){$pn$ui$filter$TableFilter$$.$superClass_$.$resetList$.call($tf$$,$list$$2$$)};
this.$clearFilters$=function $this$$clearFilters$$(){$pn$ui$filter$TableFilter$$.$superClass_$.$clearAllFilters$.call($tf$$)};this.$init$()};$jq$$1$$.fn.tableFilter=function $$jq$$1$$$fn$tableFilter$($options$$5$$){return $goog$array$toArray$$(this).$pnforEach$(function($t$$){if($JSCompiler_alias_VOID$$===$jq$$1$$($t$$).data("tableFilter")||$jq$$1$$($t$$).data("tableFilter")===$JSCompiler_alias_NULL$$){var $plugin$$1$$=new $jq$$1$$.$tableFilter$($t$$,$options$$5$$);$jq$$1$$($t$$).data("tableFilter",
$plugin$$1$$)}})};$jq$$1$$.fn.tableFilterApplyFilterValues=function $$jq$$1$$$fn$tableFilterApplyFilterValues$(){return $goog$array$toArray$$(this).$pnforEach$(function($t$$1$$){$JSCompiler_alias_VOID$$!==$jq$$1$$($t$$1$$).data("tableFilter")&&$jq$$1$$($t$$1$$).data("tableFilter")!==$JSCompiler_alias_NULL$$&&$jq$$1$$($t$$1$$).data("tableFilter").refresh()})};$jq$$1$$.fn.tableFilterRefresh=function $$jq$$1$$$fn$tableFilterRefresh$(){return $goog$array$toArray$$(this).$pnforEach$(function($t$$2$$){$JSCompiler_alias_VOID$$!==
$jq$$1$$($t$$2$$).data("tableFilter")&&$jq$$1$$($t$$2$$).data("tableFilter")!==$JSCompiler_alias_NULL$$&&$jq$$1$$($t$$2$$).data("tableFilter").reset($t$$2$$)})};$jq$$1$$.fn.tableFilterClearFilters=function $$jq$$1$$$fn$tableFilterClearFilters$(){return $goog$array$toArray$$(this).$pnforEach$(function($t$$3$$){$JSCompiler_alias_VOID$$!==$jq$$1$$($t$$3$$).data("tableFilter")&&$jq$$1$$($t$$3$$).data("tableFilter")!==$JSCompiler_alias_NULL$$&&$jq$$1$$($t$$3$$).data("tableFilter").$clearFilters$()})}}($jq$$);

View File

@ -1,495 +0,0 @@
/*
SortTable
version 2
7th April 2007
Stuart Langridge, http://www.kryogenix.org/code/browser/sorttable/
Instructions:
Download this file
Add <script src="sorttable.js"></script> to your HTML
Add class="sortable" to any table you'd like to make sortable
Click on the headers to sort
Thanks to many, many people for contributions and suggestions.
Licenced as X11: http://www.kryogenix.org/code/browser/licence.html
This basically means: do what you want with it.
*/
var stIsIE = /*@cc_on!@*/false;
sorttable = {
init: function() {
// quit if this function has already been called
if (arguments.callee.done) return;
// flag this function so we don't do the same thing twice
arguments.callee.done = true;
// kill the timer
if (_timer) clearInterval(_timer);
if (!document.createElement || !document.getElementsByTagName) return;
sorttable.DATE_RE = /^(\d\d?)[\/\.-](\d\d?)[\/\.-]((\d\d)?\d\d)$/;
forEach(document.getElementsByTagName('table'), function(table) {
if (table.className.search(/\bsortable\b/) != -1) {
sorttable.makeSortable(table);
}
});
},
makeSortable: function(table) {
if (table.getElementsByTagName('thead').length == 0) {
// table doesn't have a tHead. Since it should have, create one and
// put the first table row in it.
the = document.createElement('thead');
the.appendChild(table.rows[0]);
table.insertBefore(the,table.firstChild);
}
// Safari doesn't support table.tHead, sigh
if (table.tHead == null) table.tHead = table.getElementsByTagName('thead')[0];
if (table.tHead.rows.length != 1) return; // can't cope with two header rows
// Sorttable v1 put rows with a class of "sortbottom" at the bottom (as
// "total" rows, for example). This is B&R, since what you're supposed
// to do is put them in a tfoot. So, if there are sortbottom rows,
// for backwards compatibility, move them to tfoot (creating it if needed).
sortbottomrows = [];
for (var i=0; i<table.rows.length; i++) {
if (table.rows[i].className.search(/\bsortbottom\b/) != -1) {
sortbottomrows[sortbottomrows.length] = table.rows[i];
}
}
if (sortbottomrows) {
if (table.tFoot == null) {
// table doesn't have a tfoot. Create one.
tfo = document.createElement('tfoot');
table.appendChild(tfo);
}
for (var i=0; i<sortbottomrows.length; i++) {
tfo.appendChild(sortbottomrows[i]);
}
delete sortbottomrows;
}
// work through each column and calculate its type
headrow = table.tHead.rows[0].cells;
for (var i=0; i<headrow.length; i++) {
// manually override the type with a sorttable_type attribute
if (!headrow[i].className.match(/\bsorttable_nosort\b/)) { // skip this col
mtch = headrow[i].className.match(/\bsorttable_([a-z0-9]+)\b/);
if (mtch) { override = mtch[1]; }
if (mtch && typeof sorttable["sort_"+override] == 'function') {
headrow[i].sorttable_sortfunction = sorttable["sort_"+override];
} else {
headrow[i].sorttable_sortfunction = sorttable.guessType(table,i);
}
// make it clickable to sort
headrow[i].sorttable_columnindex = i;
headrow[i].sorttable_tbody = table.tBodies[0];
dean_addEvent(headrow[i],"click", sorttable.innerSortFunction = function(e) {
if (this.className.search(/\bsorttable_sorted\b/) != -1) {
// if we're already sorted by this column, just
// reverse the table, which is quicker
sorttable.reverse(this.sorttable_tbody);
this.className = this.className.replace('sorttable_sorted',
'sorttable_sorted_reverse');
this.removeChild(document.getElementById('sorttable_sortfwdind'));
sortrevind = document.createElement('span');
sortrevind.id = "sorttable_sortrevind";
sortrevind.innerHTML = stIsIE ? '&nbsp<font face="webdings">5</font>' : '&nbsp;&#x25B4;';
this.appendChild(sortrevind);
return;
}
if (this.className.search(/\bsorttable_sorted_reverse\b/) != -1) {
// if we're already sorted by this column in reverse, just
// re-reverse the table, which is quicker
sorttable.reverse(this.sorttable_tbody);
this.className = this.className.replace('sorttable_sorted_reverse',
'sorttable_sorted');
this.removeChild(document.getElementById('sorttable_sortrevind'));
sortfwdind = document.createElement('span');
sortfwdind.id = "sorttable_sortfwdind";
sortfwdind.innerHTML = stIsIE ? '&nbsp<font face="webdings">6</font>' : '&nbsp;&#x25BE;';
this.appendChild(sortfwdind);
return;
}
// remove sorttable_sorted classes
theadrow = this.parentNode;
forEach(theadrow.childNodes, function(cell) {
if (cell.nodeType == 1) { // an element
cell.className = cell.className.replace('sorttable_sorted_reverse','');
cell.className = cell.className.replace('sorttable_sorted','');
}
});
sortfwdind = document.getElementById('sorttable_sortfwdind');
if (sortfwdind) { sortfwdind.parentNode.removeChild(sortfwdind); }
sortrevind = document.getElementById('sorttable_sortrevind');
if (sortrevind) { sortrevind.parentNode.removeChild(sortrevind); }
this.className += ' sorttable_sorted';
sortfwdind = document.createElement('span');
sortfwdind.id = "sorttable_sortfwdind";
sortfwdind.innerHTML = stIsIE ? '&nbsp<font face="webdings">6</font>' : '&nbsp;&#x25BE;';
this.appendChild(sortfwdind);
// build an array to sort. This is a Schwartzian transform thing,
// i.e., we "decorate" each row with the actual sort key,
// sort based on the sort keys, and then put the rows back in order
// which is a lot faster because you only do getInnerText once per row
row_array = [];
col = this.sorttable_columnindex;
rows = this.sorttable_tbody.rows;
for (var j=0; j<rows.length; j++) {
row_array[row_array.length] = [sorttable.getInnerText(rows[j].cells[col]), rows[j]];
}
/* If you want a stable sort, uncomment the following line */
//sorttable.shaker_sort(row_array, this.sorttable_sortfunction);
/* and comment out this one */
row_array.sort(this.sorttable_sortfunction);
tb = this.sorttable_tbody;
for (var j=0; j<row_array.length; j++) {
tb.appendChild(row_array[j][1]);
}
delete row_array;
});
}
}
},
guessType: function(table, column) {
// guess the type of a column based on its first non-blank row
sortfn = sorttable.sort_alpha;
for (var i=0; i<table.tBodies[0].rows.length; i++) {
text = sorttable.getInnerText(table.tBodies[0].rows[i].cells[column]);
if (text != '') {
if (text.match(/^-?[£$¤]?[\d,.]+%?$/)) {
return sorttable.sort_numeric;
}
// check for a date: dd/mm/yyyy or dd/mm/yy
// can have / or . or - as separator
// can be mm/dd as well
possdate = text.match(sorttable.DATE_RE)
if (possdate) {
// looks like a date
first = parseInt(possdate[1]);
second = parseInt(possdate[2]);
if (first > 12) {
// definitely dd/mm
return sorttable.sort_ddmm;
} else if (second > 12) {
return sorttable.sort_mmdd;
} else {
// looks like a date, but we can't tell which, so assume
// that it's dd/mm (English imperialism!) and keep looking
sortfn = sorttable.sort_ddmm;
}
}
}
}
return sortfn;
},
getInnerText: function(node) {
// gets the text we want to use for sorting for a cell.
// strips leading and trailing whitespace.
// this is *not* a generic getInnerText function; it's special to sorttable.
// for example, you can override the cell text with a customkey attribute.
// it also gets .value for <input> fields.
if (!node) return "";
hasInputs = (typeof node.getElementsByTagName == 'function') &&
node.getElementsByTagName('input').length;
if (node.getAttribute("sorttable_customkey") != null) {
return node.getAttribute("sorttable_customkey");
}
else if (typeof node.textContent != 'undefined' && !hasInputs) {
return node.textContent.replace(/^\s+|\s+$/g, '');
}
else if (typeof node.innerText != 'undefined' && !hasInputs) {
return node.innerText.replace(/^\s+|\s+$/g, '');
}
else if (typeof node.text != 'undefined' && !hasInputs) {
return node.text.replace(/^\s+|\s+$/g, '');
}
else {
switch (node.nodeType) {
case 3:
if (node.nodeName.toLowerCase() == 'input') {
return node.value.replace(/^\s+|\s+$/g, '');
}
case 4:
return node.nodeValue.replace(/^\s+|\s+$/g, '');
break;
case 1:
case 11:
var innerText = '';
for (var i = 0; i < node.childNodes.length; i++) {
innerText += sorttable.getInnerText(node.childNodes[i]);
}
return innerText.replace(/^\s+|\s+$/g, '');
break;
default:
return '';
}
}
},
reverse: function(tbody) {
// reverse the rows in a tbody
newrows = [];
for (var i=0; i<tbody.rows.length; i++) {
newrows[newrows.length] = tbody.rows[i];
}
for (var i=newrows.length-1; i>=0; i--) {
tbody.appendChild(newrows[i]);
}
delete newrows;
},
/* sort functions
each sort function takes two parameters, a and b
you are comparing a[0] and b[0] */
sort_numeric: function(a,b) {
aa = parseFloat(a[0].replace(/[^0-9.-]/g,''));
if (isNaN(aa)) aa = 0;
bb = parseFloat(b[0].replace(/[^0-9.-]/g,''));
if (isNaN(bb)) bb = 0;
return aa-bb;
},
sort_alpha: function(a,b) {
if (a[0]==b[0]) return 0;
if (a[0]<b[0]) return -1;
return 1;
},
sort_ddmm: function(a,b) {
mtch = a[0].match(sorttable.DATE_RE);
y = mtch[3]; m = mtch[2]; d = mtch[1];
if (m.length == 1) m = '0'+m;
if (d.length == 1) d = '0'+d;
dt1 = y+m+d;
mtch = b[0].match(sorttable.DATE_RE);
y = mtch[3]; m = mtch[2]; d = mtch[1];
if (m.length == 1) m = '0'+m;
if (d.length == 1) d = '0'+d;
dt2 = y+m+d;
if (dt1==dt2) return 0;
if (dt1<dt2) return -1;
return 1;
},
sort_mmdd: function(a,b) {
mtch = a[0].match(sorttable.DATE_RE);
y = mtch[3]; d = mtch[2]; m = mtch[1];
if (m.length == 1) m = '0'+m;
if (d.length == 1) d = '0'+d;
dt1 = y+m+d;
mtch = b[0].match(sorttable.DATE_RE);
y = mtch[3]; d = mtch[2]; m = mtch[1];
if (m.length == 1) m = '0'+m;
if (d.length == 1) d = '0'+d;
dt2 = y+m+d;
if (dt1==dt2) return 0;
if (dt1<dt2) return -1;
return 1;
},
shaker_sort: function(list, comp_func) {
// A stable sort function to allow multi-level sorting of data
// see: http://en.wikipedia.org/wiki/Cocktail_sort
// thanks to Joseph Nahmias
var b = 0;
var t = list.length - 1;
var swap = true;
while(swap) {
swap = false;
for(var i = b; i < t; ++i) {
if ( comp_func(list[i], list[i+1]) > 0 ) {
var q = list[i]; list[i] = list[i+1]; list[i+1] = q;
swap = true;
}
} // for
t--;
if (!swap) break;
for(var i = t; i > b; --i) {
if ( comp_func(list[i], list[i-1]) < 0 ) {
var q = list[i]; list[i] = list[i-1]; list[i-1] = q;
swap = true;
}
} // for
b++;
} // while(swap)
}
}
/* ******************************************************************
Supporting functions: bundled here to avoid depending on a library
****************************************************************** */
// Dean Edwards/Matthias Miller/John Resig
/* for Mozilla/Opera9 */
if (document.addEventListener) {
document.addEventListener("DOMContentLoaded", sorttable.init, false);
}
/* for Internet Explorer */
/*@cc_on @*/
/*@if (@_win32)
document.write("<script id=__ie_onload defer src=javascript:void(0)><\/script>");
var script = document.getElementById("__ie_onload");
script.onreadystatechange = function() {
if (this.readyState == "complete") {
sorttable.init(); // call the onload handler
}
};
/*@end @*/
/* for Safari */
if (/WebKit/i.test(navigator.userAgent)) { // sniff
var _timer = setInterval(function() {
if (/loaded|complete/.test(document.readyState)) {
sorttable.init(); // call the onload handler
}
}, 10);
}
/* for other browsers */
window.onload = sorttable.init;
// written by Dean Edwards, 2005
// with input from Tino Zijdel, Matthias Miller, Diego Perini
// http://dean.edwards.name/weblog/2005/10/add-event/
function dean_addEvent(element, type, handler) {
if (element.addEventListener) {
element.addEventListener(type, handler, false);
} else {
// assign each event handler a unique ID
if (!handler.$$guid) handler.$$guid = dean_addEvent.guid++;
// create a hash table of event types for the element
if (!element.events) element.events = {};
// create a hash table of event handlers for each element/event pair
var handlers = element.events[type];
if (!handlers) {
handlers = element.events[type] = {};
// store the existing event handler (if there is one)
if (element["on" + type]) {
handlers[0] = element["on" + type];
}
}
// store the event handler in the hash table
handlers[handler.$$guid] = handler;
// assign a global event handler to do all the work
element["on" + type] = handleEvent;
}
};
// a counter used to create unique IDs
dean_addEvent.guid = 1;
function removeEvent(element, type, handler) {
if (element.removeEventListener) {
element.removeEventListener(type, handler, false);
} else {
// delete the event handler from the hash table
if (element.events && element.events[type]) {
delete element.events[type][handler.$$guid];
}
}
};
function handleEvent(event) {
var returnValue = true;
// grab the event object (IE uses a global event object)
event = event || fixEvent(((this.ownerDocument || this.document || this).parentWindow || window).event);
// get a reference to the hash table of event handlers
var handlers = this.events[event.type];
// execute each event handler
for (var i in handlers) {
this.$$handleEvent = handlers[i];
if (this.$$handleEvent(event) === false) {
returnValue = false;
}
}
return returnValue;
};
function fixEvent(event) {
// add W3C standard event methods
event.preventDefault = fixEvent.preventDefault;
event.stopPropagation = fixEvent.stopPropagation;
return event;
};
fixEvent.preventDefault = function() {
this.returnValue = false;
};
fixEvent.stopPropagation = function() {
this.cancelBubble = true;
}
// Dean's forEach: http://dean.edwards.name/base/forEach.js
/*
forEach, version 1.0
Copyright 2006, Dean Edwards
License: http://www.opensource.org/licenses/mit-license.php
*/
// array-like enumeration
if (!Array.forEach) { // mozilla already supports this
Array.forEach = function(array, block, context) {
for (var i = 0; i < array.length; i++) {
block.call(context, array[i], i, array);
}
};
}
// generic enumeration
Function.prototype.forEach = function(object, block, context) {
for (var key in object) {
if (typeof this.prototype[key] == "undefined") {
block.call(context, object[key], key, object);
}
}
};
// character enumeration
String.forEach = function(string, block, context) {
Array.forEach(string.split(""), function(chr, index) {
block.call(context, chr, index, string);
});
};
// globally resolve forEach enumeration
var forEach = function(object, block, context) {
if (object) {
var resolve = Object; // default
if (object instanceof Function) {
// functions have a "length" property
resolve = Function;
} else if (object.forEach instanceof Function) {
// the object implements a custom forEach method so use that
object.forEach(block, context);
return;
} else if (typeof object == "string") {
// the object is a string
resolve = String;
} else if (typeof object.length == "number") {
// the object is array-like
resolve = Array;
}
resolve.forEach(object, block, context);
}
};

File diff suppressed because one or more lines are too long

View File

@ -1,26 +0,0 @@
Copyright (c) 2004-2007, Ryan Parman and Geoffrey Sneddon.
All rights reserved.
Redistribution and use in source and binary forms, with or without modification, are
permitted provided that the following conditions are met:
* Redistributions of source code must retain the above copyright notice, this list of
conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above copyright notice, this list
of conditions and the following disclaimer in the documentation and/or other materials
provided with the distribution.
* Neither the name of the SimplePie Team nor the names of its contributors may be used
to endorse or promote products derived from this software without specific prior
written permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS
OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY
AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS
AND CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
POSSIBILITY OF SUCH DAMAGE.

View File

@ -1,117 +0,0 @@
SimplePie
=========
SimplePie is a very fast and easy-to-use class, written in PHP, that puts the
'simple' back into 'really simple syndication'. Flexible enough to suit
beginners and veterans alike, SimplePie is focused on [speed, ease of use,
compatibility and standards compliance][what_is].
[what_is]: http://simplepie.org/wiki/faq/what_is_simplepie
Requirements
------------
* PHP 5.2.0 or newer
* libxml2 (certain 2.7.x releases are too buggy for words, and will crash)
* Either the iconv or mbstring extension
* cURL or fsockopen()
* PCRE support
If you're looking for PHP 4.x support, pull the "one-dot-two" branch, as that's
the last version to support PHP 4.x.
What comes in the package?
--------------------------
1. `library/` - SimplePie classes for use with the autoloader
2. `autoloader.php` - The SimplePie Autoloader if you want to use the separate
file version.
3. `README.markdown` - This document.
4. `LICENSE.txt` - A copy of the BSD license.
5. `compatibility_test/` - The SimplePie compatibility test that checks your
server for required settings.
6. `demo/` - A basic feed reader demo that shows off some of SimplePie's more
noticeable features.
7. `idn/` - A third-party library that SimplePie can optionally use to
understand Internationalized Domain Names (IDNs).
8. `build/` - Scripts related to generating pieces of SimplePie
9. `test/` - SimplePie's unit test suite.
### Where's `simplepie.inc`?
For SimplePie 1.3, we've split the classes into separate files to make it easier
to maintain and use.
If you'd like a single monolithic file, you can run `php build/compile.php` to
generate `SimplePie.compiled.php`, or grab a copy from
[dev.simplepie.org][dev_compiled] (this is kept up-to-date with the latest
code from Git).
[dev_compiled]: http://dev.simplepie.org/SimplePie.compiled.php
To start the demo
-----------------
1. Upload this package to your webserver.
2. Make sure that the cache folder inside of the demo folder is server-writable.
3. Navigate your browser to the demo folder.
Need support?
-------------
For further setup and install documentation, function references, etc., visit
[the wiki][wiki]. If you're using the latest version off GitHub, you can also
check out the [API documentation][].
If you can't find an answer to your question in the documentation, head on over
to one of our [support channels][]. For bug reports and feature requests, visit
the [issue tracker][].
[API documentation]: http://dev.simplepie.org/api/
[wiki]: http://simplepie.org/wiki/
[support channels]: http://simplepie.org/support/
[issue tracker]: http://github.com/simplepie/simplepie/issues
Project status
--------------
SimplePie is currently maintained by Ryan McCue.
As an open source project, SimplePie is maintained on a somewhat sporadic basis.
This means that feature requests may not be fulfilled straight away, as time has
to be prioritized.
If you'd like to contribute to SimplePie, the best way to get started is to fork
the project on GitHub and send pull requests for patches. When doing so, please
be aware of our [coding standards][].
[coding standards]: http://simplepie.org/wiki/misc/coding_standards
Authors and contributors
------------------------
### Current
* [Ryan McCue][] (Maintainer, support)
### Alumni
* [Ryan Parman][] (Creator, developer, evangelism, support)
* [Geoffrey Sneddon][] (Lead developer)
* [Michael Shipley][] (Submitter of patches, support)
* [Steve Minutillo][] (Submitter of patches)
[Ryan McCue]: http://ryanmccue.info
[Ryan Parman]: http://ryanparman.com
[Geoffrey Sneddon]: http://gsnedders.com
[Michael Shipley]: http://michaelpshipley.com
[Steve Minutillo]: http://minutillo.com/steve/
### Contributors
For a complete list of contributors:
1. Pull down the latest SimplePie code
2. In the `simplepie` directory, run `git shortlog -ns`
License
-------
[New BSD license](http://www.opensource.org/licenses/BSD-3-Clause)

File diff suppressed because it is too large Load Diff