├── .gitignore ├── public ├── shared │ ├── .gitignore │ ├── images │ │ ├── bg.png │ │ ├── qmark.png │ │ ├── nav-rule.png │ │ ├── blacktocat.png │ │ ├── crud-sprite.png │ │ ├── footer-logo.png │ │ ├── footer_logo.png │ │ ├── active-arrow.png │ │ ├── background-v2.png │ │ ├── bg_footer_top.png │ │ ├── expand-arrows.png │ │ ├── background-white.png │ │ ├── bg_footer_bottom.png │ │ ├── dropdown_sprites.jpg │ │ ├── next_step_arrow.gif │ │ ├── rackspace_logo.png │ │ ├── footer-logo.svg │ │ └── blacktocat.svg │ ├── js │ │ └── documentation.js │ └── css │ │ ├── pygments.css │ │ └── documentation.css ├── favicon.ico ├── images │ ├── hr.png │ ├── paper.jpg │ ├── shine.png │ ├── dodgeball.png │ ├── dodgetocat.png │ ├── team-image.png │ └── check-sprite.png ├── fonts │ ├── BPdots-webfont.eot │ ├── BPdots-webfont.ttf │ ├── chunk-webfont.eot │ ├── chunk-webfont.ttf │ ├── chunk-webfont.woff │ ├── BPdots-webfont.woff │ ├── GoodDog-webfont.eot │ ├── GoodDog-webfont.ttf │ ├── GoodDog-webfont.woff │ ├── BebasNeue-webfont.eot │ ├── BebasNeue-webfont.ttf │ ├── BebasNeue-webfont.woff │ ├── ArchitectsDaughter-webfont.eot │ ├── ArchitectsDaughter-webfont.ttf │ ├── ArchitectsDaughter-webfont.woff │ ├── BebasNeue-webfont.svg │ └── chunk-webfont.svg └── css │ └── style.css ├── .bundle └── config ├── TODO ├── views ├── edit.erb ├── thankyou.erb ├── admin.erb ├── layout.erb ├── index.erb └── form.erb ├── config.ru ├── Gemfile ├── Gemfile.lock └── dodgeball.rb /.gitignore: -------------------------------------------------------------------------------- 1 | .DS_Store 2 | local.db 3 | -------------------------------------------------------------------------------- /public/shared/.gitignore: -------------------------------------------------------------------------------- 1 | 2 | .DS_Store 3 | -------------------------------------------------------------------------------- /.bundle/config: -------------------------------------------------------------------------------- 1 | --- 2 | BUNDLE_WITHOUT: production 3 | -------------------------------------------------------------------------------- /public/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/defunkt/dodgeball.github.com/master/public/favicon.ico -------------------------------------------------------------------------------- /public/images/hr.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/defunkt/dodgeball.github.com/master/public/images/hr.png -------------------------------------------------------------------------------- /public/images/paper.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/defunkt/dodgeball.github.com/master/public/images/paper.jpg -------------------------------------------------------------------------------- /public/images/shine.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/defunkt/dodgeball.github.com/master/public/images/shine.png -------------------------------------------------------------------------------- /public/images/dodgeball.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/defunkt/dodgeball.github.com/master/public/images/dodgeball.png -------------------------------------------------------------------------------- /public/images/dodgetocat.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/defunkt/dodgeball.github.com/master/public/images/dodgetocat.png -------------------------------------------------------------------------------- /public/images/team-image.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/defunkt/dodgeball.github.com/master/public/images/team-image.png -------------------------------------------------------------------------------- /public/shared/images/bg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/defunkt/dodgeball.github.com/master/public/shared/images/bg.png -------------------------------------------------------------------------------- /public/fonts/BPdots-webfont.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/defunkt/dodgeball.github.com/master/public/fonts/BPdots-webfont.eot -------------------------------------------------------------------------------- /public/fonts/BPdots-webfont.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/defunkt/dodgeball.github.com/master/public/fonts/BPdots-webfont.ttf -------------------------------------------------------------------------------- /public/fonts/chunk-webfont.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/defunkt/dodgeball.github.com/master/public/fonts/chunk-webfont.eot -------------------------------------------------------------------------------- /public/fonts/chunk-webfont.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/defunkt/dodgeball.github.com/master/public/fonts/chunk-webfont.ttf -------------------------------------------------------------------------------- /public/fonts/chunk-webfont.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/defunkt/dodgeball.github.com/master/public/fonts/chunk-webfont.woff -------------------------------------------------------------------------------- /public/images/check-sprite.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/defunkt/dodgeball.github.com/master/public/images/check-sprite.png -------------------------------------------------------------------------------- /public/shared/images/qmark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/defunkt/dodgeball.github.com/master/public/shared/images/qmark.png -------------------------------------------------------------------------------- /public/fonts/BPdots-webfont.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/defunkt/dodgeball.github.com/master/public/fonts/BPdots-webfont.woff -------------------------------------------------------------------------------- /public/fonts/GoodDog-webfont.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/defunkt/dodgeball.github.com/master/public/fonts/GoodDog-webfont.eot -------------------------------------------------------------------------------- /public/fonts/GoodDog-webfont.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/defunkt/dodgeball.github.com/master/public/fonts/GoodDog-webfont.ttf -------------------------------------------------------------------------------- /public/fonts/GoodDog-webfont.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/defunkt/dodgeball.github.com/master/public/fonts/GoodDog-webfont.woff -------------------------------------------------------------------------------- /public/shared/images/nav-rule.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/defunkt/dodgeball.github.com/master/public/shared/images/nav-rule.png -------------------------------------------------------------------------------- /public/fonts/BebasNeue-webfont.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/defunkt/dodgeball.github.com/master/public/fonts/BebasNeue-webfont.eot -------------------------------------------------------------------------------- /public/fonts/BebasNeue-webfont.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/defunkt/dodgeball.github.com/master/public/fonts/BebasNeue-webfont.ttf -------------------------------------------------------------------------------- /public/fonts/BebasNeue-webfont.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/defunkt/dodgeball.github.com/master/public/fonts/BebasNeue-webfont.woff -------------------------------------------------------------------------------- /public/shared/images/blacktocat.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/defunkt/dodgeball.github.com/master/public/shared/images/blacktocat.png -------------------------------------------------------------------------------- /public/shared/images/crud-sprite.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/defunkt/dodgeball.github.com/master/public/shared/images/crud-sprite.png -------------------------------------------------------------------------------- /public/shared/images/footer-logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/defunkt/dodgeball.github.com/master/public/shared/images/footer-logo.png -------------------------------------------------------------------------------- /public/shared/images/footer_logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/defunkt/dodgeball.github.com/master/public/shared/images/footer_logo.png -------------------------------------------------------------------------------- /TODO: -------------------------------------------------------------------------------- 1 | * sanitize stuff 2 | 3 | * admin screen where mel/heather/kami can validate the team and update the amount 4 | 5 | * media section? 6 | -------------------------------------------------------------------------------- /public/shared/images/active-arrow.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/defunkt/dodgeball.github.com/master/public/shared/images/active-arrow.png -------------------------------------------------------------------------------- /public/shared/images/background-v2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/defunkt/dodgeball.github.com/master/public/shared/images/background-v2.png -------------------------------------------------------------------------------- /public/shared/images/bg_footer_top.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/defunkt/dodgeball.github.com/master/public/shared/images/bg_footer_top.png -------------------------------------------------------------------------------- /public/shared/images/expand-arrows.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/defunkt/dodgeball.github.com/master/public/shared/images/expand-arrows.png -------------------------------------------------------------------------------- /public/shared/images/background-white.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/defunkt/dodgeball.github.com/master/public/shared/images/background-white.png -------------------------------------------------------------------------------- /public/shared/images/bg_footer_bottom.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/defunkt/dodgeball.github.com/master/public/shared/images/bg_footer_bottom.png -------------------------------------------------------------------------------- /public/shared/images/dropdown_sprites.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/defunkt/dodgeball.github.com/master/public/shared/images/dropdown_sprites.jpg -------------------------------------------------------------------------------- /public/shared/images/next_step_arrow.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/defunkt/dodgeball.github.com/master/public/shared/images/next_step_arrow.gif -------------------------------------------------------------------------------- /public/shared/images/rackspace_logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/defunkt/dodgeball.github.com/master/public/shared/images/rackspace_logo.png -------------------------------------------------------------------------------- /public/fonts/ArchitectsDaughter-webfont.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/defunkt/dodgeball.github.com/master/public/fonts/ArchitectsDaughter-webfont.eot -------------------------------------------------------------------------------- /public/fonts/ArchitectsDaughter-webfont.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/defunkt/dodgeball.github.com/master/public/fonts/ArchitectsDaughter-webfont.ttf -------------------------------------------------------------------------------- /public/fonts/ArchitectsDaughter-webfont.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/defunkt/dodgeball.github.com/master/public/fonts/ArchitectsDaughter-webfont.woff -------------------------------------------------------------------------------- /views/edit.erb: -------------------------------------------------------------------------------- 1 |
2 |

Teams

3 |
4 | 5 | <% @page = "/save" %> 6 | <%= erb :form %> 7 | 8 |
9 |
10 | -------------------------------------------------------------------------------- /config.ru: -------------------------------------------------------------------------------- 1 | require "rubygems" 2 | require "bundler" 3 | 4 | Bundler.setup 5 | Bundler.require(:runtime) 6 | 7 | require './dodgeball' 8 | 9 | use Rack::Static, :urls => ["/css", "/images", "/fonts", "/shared"], :root => "public" 10 | 11 | run Dodgeball 12 | 13 | -------------------------------------------------------------------------------- /Gemfile: -------------------------------------------------------------------------------- 1 | source "http://rubygems.org" 2 | 3 | gem "sinatra" 4 | gem "sinatra_auth_github" 5 | 6 | gem "dm-core" 7 | gem "dm-migrations" 8 | gem "dm-validations" 9 | gem "dm-timestamps" 10 | gem "heroku" 11 | 12 | gem "tinder" 13 | 14 | group :production do 15 | gem "pg" 16 | gem "dm-postgres-adapter" 17 | end 18 | 19 | group :development do 20 | gem "sqlite3-ruby" 21 | gem "dm-sqlite-adapter" 22 | gem "shotgun" 23 | end 24 | 25 | -------------------------------------------------------------------------------- /views/thankyou.erb: -------------------------------------------------------------------------------- 1 |
2 |

First Annual

3 |

Octocat Dodgeball Invitational

4 |

Sunday, October 23rd

5 |
6 | 7 |

The Pot

8 |

$<%= @pot %>

9 |
10 |
11 | 12 |
13 | 14 |

I guess you have

15 |

The Balls

16 | 17 |
18 | 19 |
20 |

21 | We will email you to verify everything and set up your donation, 22 | then you will see your team listed in the Teams section. Thanks! 23 |

24 |
25 | 26 | -------------------------------------------------------------------------------- /views/admin.erb: -------------------------------------------------------------------------------- 1 | <% if @new_teams.size > 0 %> 2 |
3 |

New Teams

4 | 5 | <% @new_teams.each do |team| %> 6 | 7 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 21 | 22 | <% end %> 23 |
8 | edit | 9 | verify 10 | <%= team.name %><%= team.company %><%= team.charity %><%= team.email %><%= team.twitter %><%= team.players.join(', ') %><%= team.team_image(30) %> 19 | delete 20 |
24 |
25 | <% end %> 26 | 27 | <% if @cool_teams.size > 0 %> 28 |
29 |

Verified Teams

30 | 31 | <% @cool_teams.each do |team| %> 32 | 33 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | <% end %> 46 |
34 | edit 35 | unverify 36 | <%= team.name %><%= team.company %><%= team.charity %><%= team.email %><%= team.twitter %><%= team.players.join(', ') %><%= team.team_image(30) %>
47 |
48 | <% end %> 49 | -------------------------------------------------------------------------------- /views/layout.erb: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | First Annual Octocat Dodgeball Invitational 6 | 7 | 8 | 9 | 18 | 19 | 20 | 21 |
22 |
23 | 24 |
25 | 26 | <%= yield %> 27 | 28 |
29 | 30 | 57 | 58 | 59 | 60 | -------------------------------------------------------------------------------- /public/shared/js/documentation.js: -------------------------------------------------------------------------------- 1 | // Init sidebar 2 | $(function() { 3 | var activeItem, 4 | helpList = $('#js-sidebar .js-topic'), 5 | firstOccurance = true 6 | 7 | // hide list items at startup 8 | if($('body.api') && window.location){ 9 | var reg = /\/\/[^\/]+(\/.+)/g, 10 | docUrl = reg.exec(window.location.toString()) 11 | if(docUrl){ 12 | $('#js-sidebar .js-topic a').each(function(){ 13 | var url = $(this).attr('href').toString() 14 | if(url.indexOf(docUrl[1]) >= 0 && url.length == docUrl[1].length){ 15 | $(this).parent('li').addClass('disable') 16 | var parentTopic = $(this).parentsUntil('div.sidebar-module > ul').last() 17 | parentTopic.addClass('js-current') 18 | parentTopic.find('.js-expand-btn').toggleClass('collapsed expanded') 19 | } 20 | }) 21 | } 22 | } 23 | 24 | $('#js-sidebar .js-topic').each(function(){ 25 | if(($(this).find('.disable').length == 0 || firstOccurance == false) && 26 | $(this).hasClass('js-current') != true){ 27 | $(this).find('.js-guides').children().hide() 28 | } else { 29 | activeItem = $(this).index() 30 | firstOccurance = false 31 | } 32 | }) 33 | 34 | // Toggle style list. Expanded items stay 35 | // expanded when new items are clicked. 36 | $('#js-sidebar .js-toggle-list .js-expand-btn').click(function(){ 37 | var clickedTopic = $(this).parents('.js-topic'), 38 | topicGuides = clickedTopic.find('.js-guides li') 39 | $(this).toggleClass('collapsed expanded') 40 | topicGuides.toggle(100) 41 | return false 42 | }) 43 | 44 | // Accordion style list. Expanded items 45 | // collapse when new items are clicked. 46 | $('#js-sidebar .js-accordion-list .js-topic h3 a').click(function(){ 47 | var clickedTopic = $(this).parents('.js-topic'), 48 | topicGuides = clickedTopic.find('.js-guides li') 49 | 50 | if(activeItem != clickedTopic.index()){ 51 | if(helpList.eq(activeItem)){ 52 | helpList.eq(activeItem).find('.js-guides li').toggle(100) 53 | } 54 | activeItem = clickedTopic.index() 55 | topicGuides.toggle(100) 56 | } else { 57 | activeItem = undefined 58 | topicGuides.toggle(100) 59 | } 60 | 61 | return false 62 | }) 63 | 64 | $('.help-search .search-box').focus(function(){ 65 | $(this).css('background-position','0px -25px') 66 | }) 67 | 68 | $('.help-search .search-box').focusout(function(){ 69 | if($(this).val() == ''){ 70 | $(this).css('background-position','0px 0px') 71 | } 72 | }) 73 | 74 | // Dynamic year for footer copyright 75 | var currentYear = (new Date).getFullYear(); 76 | $("#year").text( (new Date).getFullYear() ); 77 | 78 | }); -------------------------------------------------------------------------------- /Gemfile.lock: -------------------------------------------------------------------------------- 1 | GEM 2 | remote: http://rubygems.org/ 3 | specs: 4 | activesupport (3.1.0) 5 | multi_json (~> 1.0) 6 | addressable (2.2.6) 7 | data_objects (0.10.6) 8 | addressable (~> 2.1) 9 | dm-core (1.1.0) 10 | addressable (~> 2.2.4) 11 | dm-do-adapter (1.1.0) 12 | data_objects (~> 0.10.2) 13 | dm-core (~> 1.1.0) 14 | dm-migrations (1.1.0) 15 | dm-core (~> 1.1.0) 16 | dm-postgres-adapter (1.1.0) 17 | dm-do-adapter (~> 1.1.0) 18 | do_postgres (~> 0.10.2) 19 | dm-sqlite-adapter (1.1.0) 20 | dm-do-adapter (~> 1.1.0) 21 | do_sqlite3 (~> 0.10.2) 22 | dm-timestamps (1.1.0) 23 | dm-core (~> 1.1.0) 24 | dm-validations (1.1.0) 25 | dm-core (~> 1.1.0) 26 | do_postgres (0.10.6) 27 | data_objects (= 0.10.6) 28 | do_sqlite3 (0.10.6) 29 | data_objects (= 0.10.6) 30 | eventmachine (0.12.10) 31 | faraday (0.6.1) 32 | addressable (~> 2.2.4) 33 | multipart-post (~> 1.1.0) 34 | rack (>= 1.1.0, < 2) 35 | faraday_middleware (0.6.5) 36 | faraday (~> 0.6.0) 37 | hashie (1.1.0) 38 | heroku (2.7.0) 39 | launchy (>= 0.3.2) 40 | rest-client (~> 1.6.1) 41 | rubyzip 42 | term-ansicolor (~> 1.0.5) 43 | http_parser.rb (0.5.2) 44 | json (1.6.1) 45 | launchy (2.0.5) 46 | addressable (~> 2.2.6) 47 | mime-types (1.16) 48 | multi_json (1.0.3) 49 | multipart-post (1.1.3) 50 | oauth2 (0.4.1) 51 | faraday (~> 0.6.1) 52 | multi_json (>= 0.0.5) 53 | pg (0.11.0) 54 | rack (1.3.3) 55 | rest-client (1.6.7) 56 | mime-types (>= 1.16) 57 | rubyzip (0.9.4) 58 | shotgun (0.9) 59 | rack (>= 1.0) 60 | simple_oauth (0.1.5) 61 | sinatra (1.2.6) 62 | rack (~> 1.1) 63 | tilt (>= 1.2.2, < 2.0) 64 | sinatra_auth_github (0.1.4) 65 | rest-client (~> 1.6.1) 66 | sinatra (~> 1.0) 67 | warden-github (~> 0.1.1) 68 | sqlite3 (1.3.4) 69 | sqlite3-ruby (1.3.3) 70 | sqlite3 (>= 1.3.3) 71 | term-ansicolor (1.0.6) 72 | tilt (1.3.3) 73 | tinder (1.7.0) 74 | activesupport (< 4, >= 2.3) 75 | eventmachine (~> 0.12) 76 | faraday (< 0.8, >= 0.6) 77 | faraday_middleware (< 0.8, >= 0.6) 78 | hashie (~> 1.0) 79 | mime-types (~> 1.16) 80 | multi_json (~> 1.0) 81 | multipart-post (~> 1.1) 82 | twitter-stream (~> 0.1) 83 | twitter-stream (0.1.14) 84 | eventmachine (>= 0.12.8) 85 | http_parser.rb (~> 0.5.1) 86 | simple_oauth (~> 0.1.4) 87 | warden (1.0.5) 88 | rack (>= 1.0) 89 | warden-github (0.1.1) 90 | json (~> 1.5) 91 | oauth2 (~> 0.4.1) 92 | warden (~> 1.0.4) 93 | 94 | PLATFORMS 95 | ruby 96 | 97 | DEPENDENCIES 98 | dm-core 99 | dm-migrations 100 | dm-postgres-adapter 101 | dm-sqlite-adapter 102 | dm-timestamps 103 | dm-validations 104 | heroku 105 | pg 106 | shotgun 107 | sinatra 108 | sinatra_auth_github 109 | sqlite3-ruby 110 | tinder 111 | -------------------------------------------------------------------------------- /views/index.erb: -------------------------------------------------------------------------------- 1 |
2 |

First Annual

3 |

octocat
dodgeball
invitational

4 |

Sunday, October 23rd

5 |
6 | 7 |

The Pot

8 |

$<%= @pot %>

9 |
10 |
11 | 12 |
13 |

Details

14 |
15 |

Where?

16 |

17 | Mission Recreation Center
18 | 2450 Harrison Street
19 | San Francisco, California 94110 20 |

21 |

When?

22 |

23 | Sunday, October 23rd 24 |

25 |

Why?

26 |

27 | We were brainstorming in the office and decided we should throw balls at our enemies. But why stop at destroying our enemies with foam spheres? We decided to trick our enemies into giving charities money for the right to have their asses kicked. Hakuna matata. 28 |

29 |

What?

30 |

31 | GitHub employees and a number of victims from other teams participate in an epic Dodgeball tournament. Each team that is entered donates at least $3000 to the charity pot. At the end, the charity of the winner gets 50% of the pot and everyone else splits the rest evenly. In the process, thousands are entertained. 32 |

33 |
34 |
35 | 36 |
37 |

Teams

38 |
39 | 78 | 79 | <% @page = "/new#signup-start" %> 80 | <%= erb :form %> 81 | 82 |
83 |
84 |
85 | 86 |

Think you have

87 |

The Balls?

88 | 89 |
90 | -------------------------------------------------------------------------------- /public/shared/css/pygments.css: -------------------------------------------------------------------------------- 1 | .highlight { background: #ffffff; } 2 | .highlight .c { color: #999988; font-style: italic } /* Comment */ 3 | .highlight .err { color: #a61717; background-color: #e3d2d2 } /* Error */ 4 | .highlight .k { font-weight: bold } /* Keyword */ 5 | .highlight .o { font-weight: bold } /* Operator */ 6 | .highlight .cm { color: #999988; font-style: italic } /* Comment.Multiline */ 7 | .highlight .cp { color: #999999; font-weight: bold } /* Comment.Preproc */ 8 | .highlight .c1 { color: #999988; font-style: italic } /* Comment.Single */ 9 | .highlight .cs { color: #999999; font-weight: bold; font-style: italic } /* Comment.Special */ 10 | .highlight .gd { color: #000000; background-color: #ffdddd } /* Generic.Deleted */ 11 | .highlight .gd .x { color: #000000; background-color: #ffaaaa } /* Generic.Deleted.Specific */ 12 | .highlight .ge { font-style: italic } /* Generic.Emph */ 13 | .highlight .gr { color: #aa0000 } /* Generic.Error */ 14 | .highlight .gh { color: #999999 } /* Generic.Heading */ 15 | .highlight .gi { color: #000000; background-color: #ddffdd } /* Generic.Inserted */ 16 | .highlight .gi .x { color: #000000; background-color: #aaffaa } /* Generic.Inserted.Specific */ 17 | .highlight .go { color: #888888 } /* Generic.Output */ 18 | .highlight .gp { color: #555555 } /* Generic.Prompt */ 19 | .highlight .gs { font-weight: bold } /* Generic.Strong */ 20 | .highlight .gu { color: #aaaaaa } /* Generic.Subheading */ 21 | .highlight .gt { color: #aa0000 } /* Generic.Traceback */ 22 | .highlight .kc { font-weight: bold } /* Keyword.Constant */ 23 | .highlight .kd { font-weight: bold } /* Keyword.Declaration */ 24 | .highlight .kp { font-weight: bold } /* Keyword.Pseudo */ 25 | .highlight .kr { font-weight: bold } /* Keyword.Reserved */ 26 | .highlight .kt { color: #445588; font-weight: bold } /* Keyword.Type */ 27 | .highlight .m { color: #009999 } /* Literal.Number */ 28 | .highlight .s { color: #d14 } /* Literal.String */ 29 | .highlight .na { color: #008080 } /* Name.Attribute */ 30 | .highlight .nb { color: #0086B3 } /* Name.Builtin */ 31 | .highlight .nc { color: #445588; font-weight: bold } /* Name.Class */ 32 | .highlight .no { color: #008080 } /* Name.Constant */ 33 | .highlight .ni { color: #800080 } /* Name.Entity */ 34 | .highlight .ne { color: #990000; font-weight: bold } /* Name.Exception */ 35 | .highlight .nf { color: #990000; font-weight: bold } /* Name.Function */ 36 | .highlight .nn { color: #555555 } /* Name.Namespace */ 37 | .highlight .nt { color: #000080 } /* Name.Tag */ 38 | .highlight .nv { color: #008080 } /* Name.Variable */ 39 | .highlight .ow { font-weight: bold } /* Operator.Word */ 40 | .highlight .w { color: #bbbbbb } /* Text.Whitespace */ 41 | .highlight .mf { color: #009999 } /* Literal.Number.Float */ 42 | .highlight .mh { color: #009999 } /* Literal.Number.Hex */ 43 | .highlight .mi { color: #009999 } /* Literal.Number.Integer */ 44 | .highlight .mo { color: #009999 } /* Literal.Number.Oct */ 45 | .highlight .sb { color: #d14 } /* Literal.String.Backtick */ 46 | .highlight .sc { color: #d14 } /* Literal.String.Char */ 47 | .highlight .sd { color: #d14 } /* Literal.String.Doc */ 48 | .highlight .s2 { color: #d14 } /* Literal.String.Double */ 49 | .highlight .se { color: #d14 } /* Literal.String.Escape */ 50 | .highlight .sh { color: #d14 } /* Literal.String.Heredoc */ 51 | .highlight .si { color: #d14 } /* Literal.String.Interpol */ 52 | .highlight .sx { color: #d14 } /* Literal.String.Other */ 53 | .highlight .sr { color: #009926 } /* Literal.String.Regex */ 54 | .highlight .s1 { color: #d14 } /* Literal.String.Single */ 55 | .highlight .ss { color: #990073 } /* Literal.String.Symbol */ 56 | .highlight .bp { color: #999999 } /* Name.Builtin.Pseudo */ 57 | .highlight .vc { color: #008080 } /* Name.Variable.Class */ 58 | .highlight .vg { color: #008080 } /* Name.Variable.Global */ 59 | .highlight .vi { color: #008080 } /* Name.Variable.Instance */ 60 | .highlight .il { color: #009999 } /* Literal.Number.Integer.Long */ -------------------------------------------------------------------------------- /views/form.erb: -------------------------------------------------------------------------------- 1 |
2 | <% if @team.errors.size > 0 %> 3 |
4 | <% @team.errors.each do |err| %> 5 | <%= err %>
6 | <% end %> 7 |
8 | <% end %> 9 |
10 | 11 |
12 |

Team Signup

13 |
14 | <% if @team.id %> 15 | 16 | <% end %> 17 | 18 | 19 | 23 | 24 | 28 | 29 | 30 | 34 | 35 | 36 | 40 | 41 | 42 | 46 | 47 | 51 | 52 | 53 | 57 | 58 | 62 | 63 | 64 | 68 | 69 | 73 | 74 | 75 | 79 | 80 | 84 | 85 | 86 | 90 | 91 | 92 | 96 | 97 | 98 | 102 | 103 |
20 | 21 | 22 |   25 | 26 | 27 |
31 | 32 | 33 |
37 | 38 | 39 |
43 | 44 | 45 |   48 | 49 | 50 |
54 | 55 | 56 |   59 | 60 | 61 |
65 | 66 | 67 |   70 | 71 | 72 |
76 | 77 | 78 |   81 | 82 | 83 |
87 | 88 | 89 |
93 | 94 | 95 |
99 | 100 | 101 |
104 | <% if @team.id %> 105 | 106 | <% else %> 107 |
This company pledges to donate at least $3000 to the charity pot
108 | 109 | <% end %> 110 |
111 |
112 | -------------------------------------------------------------------------------- /dodgeball.rb: -------------------------------------------------------------------------------- 1 | require 'sinatra/base' 2 | 3 | require 'dm-core' 4 | require 'dm-migrations' 5 | require 'dm-validations' 6 | require 'dm-timestamps' 7 | 8 | require 'tinder' 9 | 10 | ## -- DATABASE STUFF -- 11 | 12 | DataMapper.setup(:default, ENV['DATABASE_URL'] || "sqlite3://#{Dir.pwd}/local.db") 13 | 14 | class Team 15 | include DataMapper::Resource 16 | has n, :sponsors 17 | 18 | property :id, Serial 19 | property :name, String, :required => true, :message => "Cmon, you need a team name" 20 | property :company, String, :required => true, :message => "Needs a company name" 21 | property :charity, String, :required => true, :message => "You gotta play for a charity, my friend" 22 | property :charity_url, String 23 | property :github, String 24 | property :twitter, String 25 | property :image, String, :length => 250 26 | property :donation, Integer, :default => 3000 27 | property :sponsored, Integer 28 | property :cool, Boolean, :default => false 29 | property :pledge, Boolean, :default => false, :required => true, :message => "You need to pledge to donate, baby" 30 | property :owner, String 31 | property :email, String, :required => true, :message => "We need an email address to set up the donation" 32 | property :player_1, String 33 | property :player_2, String 34 | property :player_3, String 35 | property :player_4, String 36 | property :player_5, String 37 | property :player_6, String 38 | property :player_7, String 39 | property :player_8, String 40 | property :updated_at, DateTime 41 | 42 | def players 43 | [player_1, player_2, player_3, player_4, player_5, player_6, player_7, player_8].uniq.reject { |a| a == '' } 44 | end 45 | 46 | def team_image(size = 100) 47 | if (!image || image == '') 48 | img = "https://a248.e.akamai.net/assets.github.com/images/gravatars/gravatar-140.png" 49 | else 50 | img = image 51 | end 52 | "" 53 | end 54 | end 55 | 56 | class Sponsor 57 | include DataMapper::Resource 58 | property :id, Serial 59 | property :name, String 60 | property :amount, Integer 61 | property :github, String 62 | property :twitter, String 63 | end 64 | 65 | DataMapper.auto_upgrade! 66 | 67 | class Dodgeball < Sinatra::Base 68 | enable :sessions 69 | set :session_secret, "8c23f5ecdef9c54b81244e5426727279" 70 | 71 | def notify_campfire(team) 72 | hubot = Tinder::Campfire.new ENV['CF_GROUP'], :token => ENV['CF_TOKEN'] 73 | room = hubot.find_room_by_name(ENV['CF_ROOM']) 74 | room.speak "new dodgeball signup: #{team.name} of #{team.company}" 75 | end 76 | 77 | def get_data 78 | @teams = Team.all(:cool => true) 79 | @pot = 0 80 | @teams.each do |team| 81 | @pot += team.donation 82 | end 83 | end 84 | 85 | def fill_team(team, params) 86 | team.name = params['team-name'] 87 | team.company = params['company-name'] 88 | team.charity = params['charity-name'] 89 | team.charity_url = params['charity-url'] 90 | team.twitter = params['company-twitter'] 91 | team.email = params['contact-email'] 92 | team.image = params['team-image'] 93 | team.player_1 = params['player-1'] 94 | team.player_2 = params['player-2'] 95 | team.player_3 = params['player-3'] 96 | team.player_4 = params['player-4'] 97 | team.player_5 = params['player-5'] 98 | team.player_6 = params['player-6'] 99 | team.player_7 = params['player-7'] 100 | team.player_8 = params['player-8'] 101 | end 102 | 103 | helpers do 104 | 105 | def protected! 106 | unless authorized? 107 | response['WWW-Authenticate'] = %(Basic realm="Restricted Area") 108 | throw(:halt, [401, "Not authorized\n"]) 109 | end 110 | end 111 | 112 | def authorized? 113 | @auth ||= Rack::Auth::Basic::Request.new(request.env) 114 | @auth.provided? && @auth.basic? && @auth.credentials && @auth.credentials == ['admin', ENV['DODGEWORD']] 115 | end 116 | 117 | end 118 | 119 | 120 | get '/' do 121 | get_data 122 | @team = Team.new 123 | erb :index 124 | end 125 | 126 | get '/thankyou' do 127 | get_data 128 | erb :thankyou 129 | end 130 | 131 | get '/admin' do 132 | protected! 133 | @new_teams = Team.all(:cool => false) 134 | @cool_teams = Team.all(:cool => true) 135 | erb :admin 136 | end 137 | 138 | get '/edit/:id' do 139 | protected! 140 | @team = Team.first(:id => params[:id].to_i) 141 | erb :edit 142 | end 143 | 144 | get '/verify/:id' do 145 | protected! 146 | @team = Team.first(:id => params[:id].to_i) 147 | @team.cool = true 148 | @team.save 149 | redirect '/admin' 150 | end 151 | 152 | get '/unverify/:id' do 153 | protected! 154 | @team = Team.first(:id => params[:id].to_i) 155 | @team.cool = false 156 | @team.save 157 | redirect '/admin' 158 | end 159 | 160 | get '/delete/:id' do 161 | protected! 162 | @team = Team.first(:id => params[:id].to_i) 163 | @team.destroy 164 | redirect '/admin' 165 | end 166 | 167 | post '/save' do 168 | protected! 169 | @team = Team.first(:id => params[:teamid].to_i) 170 | fill_team(@team, params) 171 | if @team.save 172 | redirect '/admin' 173 | else 174 | erb :edit 175 | end 176 | end 177 | 178 | post '/new' do 179 | @team = Team.new 180 | fill_team(@team, params) 181 | if @team.save 182 | notify_campfire(@team) 183 | redirect '/thankyou' 184 | else 185 | get_data 186 | erb :index 187 | end 188 | end 189 | 190 | end 191 | -------------------------------------------------------------------------------- /public/css/style.css: -------------------------------------------------------------------------------- 1 | @font-face { 2 | font-family: 'BebasNeueRegular'; 3 | src: url('../fonts/BebasNeue-webfont.eot'); 4 | src: url('../fonts/BebasNeue-webfont.eot?#iefix') format('embedded-opentype'), 5 | url('../fonts/BebasNeue-webfont.woff') format('woff'), 6 | url('../fonts/BebasNeue-webfont.ttf') format('truetype'), 7 | url('../fonts/BebasNeue-webfont.svg#BebasNeueRegular') format('svg'); 8 | font-weight: normal; 9 | font-style: normal; 10 | } 11 | 12 | @font-face { 13 | font-family: 'ChunkFiveRegular'; 14 | src: url('../fonts/chunk-webfont.eot'); 15 | src: url('../fonts/chunk-webfont.eot?#iefix') format('embedded-opentype'), 16 | url('../fonts/chunk-webfont.woff') format('woff'), 17 | url('../fonts/chunk-webfont.ttf') format('truetype'), 18 | url('../fonts/chunk-webfont.svg#ChunkFiveRegular') format('svg'); 19 | font-weight: normal; 20 | font-style: normal; 21 | } 22 | 23 | @font-face { 24 | font-family: 'BPdotsRegular'; 25 | src: url('../fonts/BPdots-webfont.eot'); 26 | src: url('../fonts/BPdots-webfont.eot?#iefix') format('embedded-opentype'), 27 | url('../fonts/BPdots-webfont.woff') format('woff'), 28 | url('../fonts/BPdots-webfont.ttf') format('truetype'), 29 | url('../fonts/BPdots-webfont.svg#BPdotsRegular') format('svg'); 30 | font-weight: normal; 31 | font-style: normal; 32 | } 33 | 34 | @font-face { 35 | font-family: 'ArchitectsDaughterRegular'; 36 | src: url('../fonts/ArchitectsDaughter-webfont.eot'); 37 | src: url('../fonts/ArchitectsDaughter-webfont.eot?#iefix') format('embedded-opentype'), 38 | url('../fonts/ArchitectsDaughter-webfont.woff') format('woff'), 39 | url('../fonts/ArchitectsDaughter-webfont.ttf') format('truetype'), 40 | url('../fonts/ArchitectsDaughter-webfont.svg#ArchitectsDaughterRegular') format('svg'); 41 | font-weight: normal; 42 | font-style: normal; 43 | } 44 | 45 | 46 | body { 47 | color: #000; 48 | } 49 | 50 | div.section { 51 | position: relative; 52 | overflow: hidden; 53 | margin-bottom: 50px; 54 | padding-bottom: 50px; 55 | } 56 | 57 | div.hr { 58 | background: transparent url(../images/hr.png) center bottom repeat-x; 59 | } 60 | 61 | div.section h3 { 62 | margin: 0px; 63 | } 64 | 65 | div.section h3.section-title { 66 | position: relative; 67 | float: left; 68 | width: 160px; 69 | text-align: right; 70 | color: black; 71 | font: normal 50px/42px BebasNeueRegular, Helvetica, Arial, serif; 72 | text-shadow: 3px 3px 0px #DDD; 73 | } 74 | 75 | div.section div.section-content { 76 | position: relative; 77 | float: right; 78 | width: 720px; 79 | font: normal 18px Helvetica, Arial, sans-serif; 80 | color: #666; 81 | } 82 | 83 | div.section h3 { 84 | font-size: 18px; 85 | line-height: 1em; 86 | } 87 | 88 | div.section p { 89 | margin: .4em 0 1em 0; 90 | font-weight: 300; 91 | } 92 | 93 | 94 | div#call-to-action { 95 | padding-bottom: 60px; 96 | position: relative; 97 | } 98 | 99 | div#call-to-action h1 { 100 | color: black; 101 | font: normal 140px/104px BebasNeueRegular, Helvetica, Arial, serif; 102 | text-shadow: 3px 3px 0px #DDD; 103 | margin: 25px 0 -40px -5px; 104 | background: transparent url(../images/dodgetocat.png) 565px 25px no-repeat; 105 | padding-bottom: 40px; 106 | } 107 | 108 | div#call-to-action h2 { 109 | margin: 0px; 110 | color: #999; 111 | letter-spacing: 1px; 112 | font: normal 28px/28px ChunkFiveRegular, Rockwell, serif; 113 | } 114 | 115 | div#the-pot { 116 | position: absolute; 117 | top: 2px; 118 | right: 2px; 119 | border: 2px solid #fff; 120 | -webkit-border-radius: 3px; 121 | -moz-border-radius: 3px; 122 | border-radius: 3px; 123 | -moz-background-clip: padding; 124 | -webkit-background-clip: padding-box; 125 | background-clip: padding-box; 126 | -webkit-box-shadow: 0px 0px 4px #666; 127 | -moz-box-shadow: 0px 0px 4px #666; 128 | box-shadow: 0px 0px 4px #666; 129 | background-color: #d0d0d0; 130 | background-image: -webkit-gradient(linear, left top, left bottom, from(#d0d0d0), to(#fefefe)); 131 | background-image: -webkit-linear-gradient(top, #d0d0d0, #fefefe); 132 | background-image: -moz-linear-gradient(top, #d0d0d0, #fefefe); 133 | background-image: -ms-linear-gradient(top, #d0d0d0, #fefefe); 134 | background-image: -o-linear-gradient(top, #d0d0d0, #fefefe); 135 | background-image: linear-gradient(top, #d0d0d0, #fefefe); 136 | filter: progid:DXImageTransform.Microsoft.gradient(startColorStr='#d0d0d0', EndColorStr='#fefefe'); 137 | } 138 | 139 | div#the-pot span.shine { 140 | display: block; 141 | position: absolute; 142 | top: 0px; 143 | right: 0px; 144 | width: 100%; 145 | height: 100%; 146 | background: transparent url(../images/shine.png) left 5px repeat-x; 147 | z-index: 1; 148 | } 149 | 150 | div#the-pot h3 { 151 | position: relative; 152 | display: inline-block; 153 | margin: 0px; 154 | padding-top: 1px; 155 | } 156 | 157 | div#the-pot h3.title { 158 | color: #333; 159 | font: normal 41px BebasNeueRegular, Helvetica, Arial, serif; 160 | margin: 0 8px; 0 10px; 161 | text-shadow: 1px 1px 2px #666; 162 | -webkit-border-radius: 3px 0px 0px 3px; 163 | -moz-border-radius: 3px 0px 0px 3px; 164 | border-radius: 3px 0px 0px 3px; 165 | -moz-background-clip: padding; 166 | -webkit-background-clip: padding-box; 167 | background-clip: padding-box; 168 | } 169 | 170 | div#the-pot h3.ammount { 171 | color: #fff; 172 | font: normal 58px BPdotsRegular, monospace; 173 | background-color: #d0d0d0; 174 | background-image: -webkit-gradient(linear, left top, left bottom, from(#000), to(#323232)); 175 | background-image: -webkit-linear-gradient(top, #000, #323232); 176 | background-image: -moz-linear-gradient(top, #000, #323232); 177 | background-image: -ms-linear-gradient(top, #000, #323232); 178 | background-image: -o-linear-gradient(top, #000, #323232); 179 | background-image: linear-gradient(top, #000, #323232); 180 | filter: progid:DXImageTransform.Microsoft.gradient(startColorStr='#000', EndColorStr='#323232'); 181 | text-shadow: none; 182 | padding: 0 5px 0 10px; 183 | -webkit-border-radius: 0px 3px 3px 0px; 184 | -moz-border-radius: 0px 3px 3px 0px; 185 | border-radius: 0px 3px 3px 0px; 186 | -moz-background-clip: padding; 187 | -webkit-background-clip: padding-box; 188 | background-clip: padding-box; 189 | } 190 | 191 | div.section li { 192 | list-style-type: none; 193 | } 194 | 195 | div.section li.team { 196 | width: 340px; 197 | position: relative; 198 | overflow: hidden; 199 | margin: 0 40px 50px 0; 200 | float: left; 201 | } 202 | 203 | div.section div.team-header { 204 | position: relative; 205 | overflow: hidden; 206 | } 207 | 208 | div.section div.team-header img { 209 | position: relative; 210 | float: left; 211 | display: block; 212 | -webkit-border-radius: 3px; 213 | -moz-border-radius: 3px; 214 | border-radius: 3px; 215 | -moz-background-clip: padding; 216 | -webkit-background-clip: padding-box; 217 | background-clip: padding-box; 218 | } 219 | 220 | div.section div.team-header div.info { 221 | border-bottom: 1px solid #ddd; 222 | position: relative; 223 | float: left; 224 | margin-left: 20px; 225 | width: 220px; 226 | height: 99px; 227 | } 228 | 229 | div.section div.team-header h3 { 230 | font: normal 30px/28px BebasNeueRegular, Helvetica, Arial, serif; 231 | } 232 | 233 | div.section div.team-header a { 234 | margin: 8px 10px 0 0; 235 | cursor:pointer; 236 | border:1px solid #d4d4d4; 237 | text-shadow:1px 1px 0 #fff; 238 | -webkit-border-radius: 3px; 239 | -moz-border-radius: 3px; 240 | border-radius: 3px; 241 | -moz-background-clip: padding; 242 | -webkit-background-clip: padding-box; 243 | background-clip: padding-box; 244 | border: 1px solid #d4d4d4; 245 | background-color: #f4f4f4; 246 | background-image: -moz-linear-gradient(top, #f4f4f4, #ececec); 247 | background-image: -ms-linear-gradient(top, #f4f4f4, #ececec); 248 | background-image: -o-linear-gradient(top, #f4f4f4, #ececec); 249 | background-image: -webkit-gradient(linear, left top, left bottom, from(#f4f4f4), to(#ececec)); 250 | background-image: -webkit-linear-gradient(top, #f4f4f4, #ececec); 251 | background-image: linear-gradient(top, #f4f4f4, #ececec); 252 | filter: progid:DXImageTransform.Microsoft.gradient(startColorStr='#f4f4f4', EndColorStr='#ececec'); 253 | font-size: 11px; 254 | font-weight: bold; 255 | color: #333; 256 | display: inline-block; 257 | padding: 3px 7px 3px; 258 | } 259 | 260 | div.section div.team-header a:hover { 261 | text-shadow:-1px -1px 0 rgba(0, 0, 0, 0.3); 262 | border-color:#518cc6; 263 | background-color: #599bdc; 264 | border-bottom-color:#2a65a0; 265 | background-image: -moz-linear-gradient(top, #599bdc, #3072b3); 266 | background-image: -ms-linear-gradient(top, #599bdc, #3072b3); 267 | background-image: -o-linear-gradient(top, #599bdc, #3072b3); 268 | background-image: -webkit-gradient(linear, left top, left bottom, from(#599bdc), to(#3072b3)); 269 | background-image: -webkit-linear-gradient(top, #599bdc, #3072b3); 270 | background-image: linear-gradient(top, #599bdc, #3072b3); 271 | filter: progid:DXImageTransform.Microsoft.gradient(startColorStr='#599bdc', EndColorStr='#3072b3'); 272 | color: #fff; 273 | text-decoration: none; 274 | } 275 | 276 | div.section li.team table { 277 | font-size: 14px; 278 | line-height: 23px; 279 | border-collapse: collapse; 280 | } 281 | 282 | div.section li.team th { 283 | font-weight: 300; 284 | text-align: left; 285 | padding-top: 20px; 286 | width: 50%; 287 | } 288 | 289 | div.section li.team td { 290 | font-weight: bold; 291 | color: #000; 292 | } 293 | 294 | div.section div.section-content > ul { 295 | overflow: hidden; 296 | width: 760px; 297 | } 298 | 299 | div.section li.team li { 300 | float: left; 301 | position: relative; 302 | display: block; 303 | width: 50%; 304 | } 305 | 306 | div.section div#signup { 307 | background: transparent url(../images/paper.jpg) 0 0 no-repeat; 308 | width: 528px; 309 | height: 800px; 310 | display: block; 311 | padding: 71px 78px 0px 84px; 312 | margin-left: -40px; 313 | } 314 | 315 | div.section div#signup h3 { 316 | font: normal 80px/80px BebasNeueRegular, Helvetica, Arial, serif; 317 | text-align: center; 318 | } 319 | 320 | div.section div#signup table { 321 | width: 528px; 322 | border-collapse: collapse; 323 | } 324 | 325 | div.section div#signup td { 326 | width: 254px; 327 | } 328 | 329 | div.section div#signup td.spacer { 330 | width: auto; 331 | } 332 | 333 | div.section tr.space-below td { 334 | padding-bottom: 20px; 335 | } 336 | 337 | div.section div#signup input { 338 | width: 100%; 339 | padding: 0px; 340 | margin: 0px; 341 | display: block; 342 | background: transparent; 343 | border: 0px; 344 | border-bottom: 2px solid #333; 345 | font: normal 14px/14px 'ArchitectsDaughterRegular', Georgia, Times, serif; 346 | color: #666; 347 | } 348 | 349 | div.section .error { 350 | padding: 10px; 351 | font: normal 14px/14px 'ArchitectsDaughterRegular', Georgia, Times, serif; 352 | line-height: 28px; 353 | color: #f66; 354 | } 355 | 356 | div.section div#signup label { 357 | font-size: 11px; 358 | color: #333; 359 | display: block; 360 | margin: 3px 0px 0px; 361 | } 362 | 363 | div.section div#signup .pledge { 364 | font-size: 11px; 365 | color: #333; 366 | display: inline-block; 367 | font-weight: bold; 368 | cursor: pointer; 369 | position: relative; 370 | float: left; 371 | margin-top: 10px; 372 | } 373 | 374 | div.section div#signup .unchecked, 375 | div.section div#signup .checked { 376 | position: relative; 377 | display: inline-block; 378 | height: 21px; 379 | width: 22px; 380 | top: 3px; 381 | background: transparent url(../images/check-sprite.png) 0 0 no-repeat; 382 | } 383 | 384 | div.section div#signup .unchecked { 385 | background-position: 0px 0px; 386 | } 387 | 388 | div.section div#signup .checked { 389 | background-position: 0px -21px; 390 | } 391 | 392 | div.section div#signup button { 393 | background: none; 394 | border: 2px solid #dfdfdf; 395 | -webkit-border-radius: 3px; 396 | -moz-border-radius: 3px; 397 | border-radius: 3px; 398 | -moz-background-clip: padding; 399 | -webkit-background-clip: padding-box; 400 | background-clip: padding-box; 401 | font: normal 20px/18px BebasNeueRegular, Helvetica, Arial, serif; 402 | letter-spacing: 1px; 403 | padding: 7px 7px 5px; 404 | cursor: pointer; 405 | position: relative; 406 | float: right; 407 | margin-top: 10px; 408 | } 409 | 410 | div.section div#signup button:hover { 411 | background: #eee; 412 | border-color: #ccc; 413 | } 414 | 415 | div#challenge { 416 | position: relative; 417 | overflow: hidden; 418 | display: block; 419 | height: 176px; 420 | text-align: center; 421 | } 422 | 423 | div#challenge span.dodgeball { 424 | display: block; 425 | width: 170px; 426 | height: 176px; 427 | background: transparent url(../images/dodgeball.png) left top no-repeat; 428 | } 429 | 430 | div#challenge span.left { 431 | position: absolute; 432 | top: 0; 433 | left: 0; 434 | } 435 | 436 | div#challenge span.right { 437 | position: absolute; 438 | top: 0; 439 | right: 0; 440 | } 441 | 442 | div#challenge h4 { 443 | color: #999; 444 | font: normal 36px/24px ChunkFiveRegular, Rockwell, serif; 445 | margin: 0; 446 | } 447 | 448 | div#challenge h3 { 449 | font: normal 158px/120px BebasNeueRegular, Helvetica, Arial, serif; 450 | margin: 20px 0 0; 451 | color: #000; 452 | } 453 | 454 | .req { 455 | color: #f66; 456 | font-weight: bold; 457 | } 458 | 459 | .instructions { 460 | font-size: 3em; 461 | line-height: 1em; 462 | color: #444; 463 | } 464 | -------------------------------------------------------------------------------- /public/fonts/BebasNeue-webfont.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | This is a custom SVG webfont generated by Font Squirrel. 6 | Copyright : Copyright c 2010 by Ryoichi Tsunekawa All rights reserved 7 | Designer : Ryoichi Tsunekawa 8 | Foundry : Ryoichi Tsunekawa 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | 93 | 94 | 95 | 96 | 97 | 98 | 99 | 100 | 101 | 102 | 103 | 104 | 105 | 106 | 107 | 108 | 109 | 110 | 111 | 112 | 113 | 114 | 115 | 116 | 117 | 118 | 119 | 120 | 121 | 122 | 123 | 124 | 125 | 126 | 127 | 128 | 129 | 130 | 131 | 132 | 133 | 134 | 135 | 136 | 137 | 138 | 139 | 140 | 141 | 142 | 143 | 144 | 145 | 146 | -------------------------------------------------------------------------------- /public/shared/images/footer-logo.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 5 | 6 | ]> 7 | 9 | 10 | 11 | 12 | 16 | proof:pdf 17 | xmp.did:01801174072068118C14F029FF4E69A3 18 | xmp.iid:01801174072068118C14F029FF4E69A3 19 | uuid:9d2fdc90-b8de-c94c-86b5-364e47b8e5b6 20 | 21 | uuid:76c5eca8-e841-3b48-99db-8cd076c5142a 22 | uuid:9d2fdc90-b8de-c94c-86b5-364e47b8e5b6 23 | uuid:9d2fdc90-b8de-c94c-86b5-364e47b8e5b6 24 | proof:pdf 25 | 26 | 27 | 28 | 29 | saved 30 | xmp.iid:01801174072068118C14F029FF4E69A3 31 | 2011-08-01T16:12:07-07:00 32 | Adobe Illustrator CS5 33 | / 34 | 35 | 36 | 37 | 38 | 41 | 2011-08-01T16:12:06-07:00 42 | Adobe Illustrator CS5 43 | 2011-08-01T16:12:07-07:00 44 | 2011-08-01T16:12:07-07:00 45 | 46 | 47 | 48 | 256 49 | 116 50 | JPEG 51 | /9j/4AAQSkZJRgABAgEASABIAAD/7QAsUGhvdG9zaG9wIDMuMAA4QklNA+0AAAAAABAASAAAAAEA AQBIAAAAAQAB/+4ADkFkb2JlAGTAAAAAAf/bAIQABgQEBAUEBgUFBgkGBQYJCwgGBggLDAoKCwoK DBAMDAwMDAwQDA4PEA8ODBMTFBQTExwbGxscHx8fHx8fHx8fHwEHBwcNDA0YEBAYGhURFRofHx8f Hx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8f/8AAEQgAdAEAAwER AAIRAQMRAf/EAaIAAAAHAQEBAQEAAAAAAAAAAAQFAwIGAQAHCAkKCwEAAgIDAQEBAQEAAAAAAAAA AQACAwQFBgcICQoLEAACAQMDAgQCBgcDBAIGAnMBAgMRBAAFIRIxQVEGE2EicYEUMpGhBxWxQiPB UtHhMxZi8CRygvElQzRTkqKyY3PCNUQnk6OzNhdUZHTD0uIIJoMJChgZhJRFRqS0VtNVKBry4/PE 1OT0ZXWFlaW1xdXl9WZ2hpamtsbW5vY3R1dnd4eXp7fH1+f3OEhYaHiImKi4yNjo+Ck5SVlpeYmZ qbnJ2en5KjpKWmp6ipqqusra6voRAAICAQIDBQUEBQYECAMDbQEAAhEDBCESMUEFURNhIgZxgZEy obHwFMHR4SNCFVJicvEzJDRDghaSUyWiY7LCB3PSNeJEgxdUkwgJChgZJjZFGidkdFU38qOzwygp 0+PzhJSktMTU5PRldYWVpbXF1eX1RlZmdoaWprbG1ub2R1dnd4eXp7fH1+f3OEhYaHiImKi4yNjo +DlJWWl5iZmpucnZ6fkqOkpaanqKmqq6ytrq+v/aAAwDAQACEQMRAD8A9U4q7FXYq7FXYq7FUr1X UZIn9CE8WpV27ivYYqliXt2jchK1fckj7jhQn1hdi6gDkUcGjj3wJROKuxV2KuxVCaqSLCUjY/D/ AMSGKseLMepJwoTbQP8Ad/8AsP8AjbAlNsVdirsVdirsVdirsVdirsVdirHNT/3vm+Y/UMKELirL cCXYq7FXYq7FXYq7FXYq7FXYqxzVEZb6Sv7VCD7EYUIXFU50FGEUrn7LEAfR1/XgSmmKuxV2KuxV Cat/xz5f9j/xIYqx3ChN9A/3f/sP+NsCU2xV2KuxV2KuxV2KuxV2KuxV2Ksc1P8A3vm+Y/UMKELi rLcCXYq7FXYq7FXYq7FXYq7FXYqh7yxiulAb4XX7LjtiqBTQRy+Oaq9wBQ/rxVNIokijEaDiq7AY qpX8rxWkkkZo6gUPXuPHFUk/S2of79/4Vf6YVTHSLu4uPV9Z+XHjx2A618BgVMcVQmrf8c+X/Y/8 SGKsdwoTfQP93/7D/jbAlNsVdirsVdirsVdirsVdirsVdirHNT/3vm+Y/UMKELirLcCXYq7FXYq7 FUJcapaQEqW5uOqrv+PTFUI2vrX4YCR7tT+BxVVi1y3Y0kRo/f7QxVEtqFkBUzLT2Nf1YqojV7d5 kiiBYuwHLoN8VVL3UEtCgZC3OvT2xVC/p6H/AH033jFUdDcrLbCcAhSCafKv9MVSy71eOe3eIRkF h1JHjXFUrwoRmn34tDJVOYenenSv9cUphb6ys0yRCIrzNK1/swKrat/xz5f9j/xIYqx3ChMtHuYY EnaVgo+Gg7nr0GBKs+vRg/BCWHiTT+BxVfDrkDGkiGP3B5D+GKpijq6hkIZT0I6Yq3iqVnXUBI9E 7f5X9mKqltrCzzpEIivLvWvavhiqYYqp3M4ggeUjlx7dO9MVS39P/wDFH/D/APNuKoqw1D62XHp8 OFD1rWv0DFUo1P8A3vm+Y/UMKELiqfT6zaxkqgMpHcbD78CUN+n2r/cin+t/ZiqLtdWtp2CGsbno G6H5HFUbiqVavqDKfq8Rof8AdjD37Yqk+FDYVj0BNMVaxV2Kq1kaXkP+uv68VR+vfbh+TfwwJSrC hP8AT/8AjlL/AKr/AKzgSkGFDsVdiqI07/e2H/WxVOtW/wCOfL/sf+JDAljuFDsVdirsVR2lXpgm EbH91IaH2PjilP8AArE3+23zOFCJ0z/e+H5n9RxVkeBKF1P/AHgm+Q/WMVY5hQmug/bm+S/xwJQu rf8AHQl/2P8AxEYVQmKHYq7FXYqnmkXpmjMMhrJGNj4r/ZgSksshkleQ9WJP34UInTLVbi5o+6IO TDx9sUshVVUBVACjoBsMCpfq1lG8LTqAsibkjuO9cVSPChOdGt7d4PVMYMquRyO/ShH68CVPXvtw /Jv4YqlWFDIdKAOnRA7g8qj/AGRwJWahaWqWcrJEqsAKEDfqMVSHChMtFghlaUSIHoBSor44pTZL O1RgyxKrDoQMCqOrf8c+X/Y/8SGKsdwoRmm2IupG5NRI6cgOprX+mKU4/R1jw4+itPHv9/XAqS6h Z/VZ+I3jbdCf1YUIXFWTWExmtInO7Uo3zG2BLGn+23zOFCJ0z/e+H5n9RxVkeBKF1P8A3gm+Q/WM VY5hQmug/bm+S/xwJQurf8dCX/Y/8RGFUJihkFrpNtCo9RRLJ3Lbj6BgS1e6VBLGTEgjlG68dgfY jFUgIIND1woRFhMYryJuxPE/I7YqoyIUkZD1UkH6MVRekXKQ3JDmiyDjU9Ae2KWQYFQWq3McVs0d aySCir7HqcVY/hQn+jRlbKp/bYsP1fwwJQuvfbh+TfwxVKsKGRaT/wAc+L/Zf8SOBLep/wC8E3yH 6xirHMKE10H7c3yX+OBKcYqhNW/458v+x/4kMVY7hQm2gHecf6v8cCU3xVLNdWsEb+DU+8f2Yqku FCe6Ia2ZHg5H4A4EpG/22+ZwoROmf73w/M/qOKsjwJQup/7wTfIfrGKscwoTXQftzfJf44EoXVv+ OhL/ALH/AIiMKoTFDLcCXYqxrUECXsyjpyJ+/fChDgkEEdRiqa6zZEN9ZjFVP94B2PjgSlWFColx cIvFJXVfAMQMVWFixqxJJ6k4qq2lrJczBF6ftN2AxVk0aLGioooqgAD2GBKUa99uH5N/DFUqwoZF pP8Axz4v9l/xI4Et6n/vBN8h+sYqxzChNdB+3N8l/jgSnGKoTVv+OfL/ALH/AIkMVY7hQmug/bm+ S/xwJTjFUu13/eRP+Mg/4icVSPChPNC/3kf/AIyH/iIwJSWQUkYeBOFCvpppfQn3p94pirJMCULq f+8E3yH6xirHMKE10H7c3yX+OBKF1b/joS/7H/iIwqhMUMtwJdirGb9w95Mw6ciPu2woUVBZgo6k 0xVlUzrHE7tuqgkj2AwJYtK4eRnChAxrxXoMKF9tazXEnCIVPUk9APfFUyi0EVBllqO6qP4nAlM4 YIoU4RKFX9fzxVfiqT699uH5N/DFUqwoZFpP/HPi/wBl/wASOBK7UgTYzfKv3HFWN4UJlocqrcOj GhcfD8x2wJTtmVQSxAA6k4qg9UZW02RlNVIUgjwLDFWPYUJroP25vkv8cCU4xVLddP8AoqDxf+Bx VJMKE80L/eR/+Mh/4iMCUqvozHeTL/lEj5HcYUKUchjkWReqEEfRirJYLu3nQOjjfqpO4+eBKC1W /t/QaBDzdtjToN69cVSXChNdB+3N8l/jgShdW/46Ev8Asf8AiIwqhMUMitdTtp0FWEb90Y0+498C Vl7qsESERMJJTsKbge5OKpASSanrhQidNhMt5GOynm3yXfFU+vUL2kqr1Kmg+W+BLGMKEfpN7Fby OsuyyU+LwI8fvxSncc0Mg+B1b5EHAq/FXYqlGvjeA/638MVSnChkWk/8c+L/AGX/ABI4EoiaMSQv Gf21K/eMVYsylWKsKMDQj3GFDWKrmkkf7TFqdKknFU6uv+OIv/GOP9a4EpHhQmug/bm+S/xwJTjF Uu10f6Kh/wAsfqOKpHhQnmhf7yP/AMZD/wARGBKjrdqarcKNqcZP4HFUpwodirsVdiqa6D9ub5L/ ABwJQurf8dCX/Y/8RGFUJih2KuxV2Kp/pNkYIjI4pLJ28B4YEqt5fw2q/F8Tn7KDrirHppBJKzhA gY14jphQsxV2Koq21K6gIoxdO6NuPo8MVT61uY7mISJ8mHcHwwJQ2p2M116XplRw5V5EjrTwB8MV QP6Cu/54/vb+mKprYwPBapE5BZa1I6bknFVfFUBf6Ulw3qRnhKetehxVLm0a+B2VT7hh/HCqpHod yx/eMqD23OBUzuLQvY/VkbcKqhj/AJJHh8sVS39BXH+/E/H+mKo3TdPktWkLsrcwKUr2+eKo7FUL qNo91AsaEKQwap+RH8cVS79BXH+/E/H+mKpjp1o9rA0bkMSxao+QH8MVRLKrKVYVU7EHFUruNDUs WgfjX9hun34qoLod0Tu6AeNSf4Yqi00aFIXWvOVlIDt0FfAYqh/0DN/v1fuOKozTtPe0ZyzhuYFK e2KqN5pMlxcvMJAoamxB7ADFVOPQ5VkRjIpCkEih7HFVW50SJ2LQt6ZP7JFR9GKoYaFc13kSnjv/ AExVHWmkwQMHY+pIOhOwHyGKo3FWLXMzTTvITXkdvl2woVLGza6m4A8VAqze2Kpwmj2KihUufEsf 4UwJal0azZfgBjPYgk/rxVI5omhleNuqGmFCO0OUrctH+y61p7jAlMNSvjaxqEAMj1pXoAO+KoaG 61ZXjMkXNJCANgOvy6fTiqJ1DUVtQFUcpWFQD0A8TiqB+u6xw9XgfT6/Y2p+vFUbp+ordAow4yru QOhHiMVUr3VXSX0LZeUgNC1K7+AGKqcV3qqTRCdP3cjKpJUbVNOoxVVhv531Jrc8fTBYDbfbFURq Fybe1Z1NHPwp8ziqjpN7JcRusrcpENa0A2PyxVbql9cW0iLEQAwJNRXviqY4q4kAEk0A6nFUol1S 7nlMdmuw6NSpPvvsMVVrG41D6yIbobMCVJAG49xtiqlc6tO83o2a13pypUn5DFVNr7VbYhp1qh7M AB964qjJ9Qrp5uYNmqBQ70NdxiqETUNVMYmCB4/ELUbfLfFUdYagl0pFOMq/aX28RiqFstQuZ0n5 kVSMspApvirel6m8jmGdqs32GP6sVROp3Etvbc4jRuQFaV23xVat/wCnpyXE3xO2wA2qanFUGk+s 3IMkXwp2A4gfRy64qr2GozvP9WuV/edmpQ7eIxVJXUo7Keqkg/MYUInTr0WsxZgSjCjAdfniqcLq tgRX1aexB/pgStl1iyRaqxkbsAD+s4qkU8zTSvK3VzWmFCN0SMtdM/ZFNfmcCUdq1lJcIjxbulfh 8QcVQtvqtxA4hukNBtUijAfxxVawWbWuMm68unairUYqneKpFLSDVz6Q6GtB/lLv+vFVTQkVppZG 3dQKV/yq1P4YqnOKpNbimuP83/EYq3qrme8itVOwIr82/sxVagFlq/EbRuaD5N0+44q3r399F/qn 9eKpziqF1RithKR1oB9BIBxVR0REFqzj7TMeR+XQYqi7slbWZh1CMR92KpdoKLxlf9uoFfbFUxu0 R7aVX+zxP4CtcVSKBj+j7pewaMj6Sf6YUJro/wDvAnzb9eBKChAj1srH9kswIHutTiqnpX2Lr/jE cVU7azaa1kljr6sTAgDuKfrwoV7m+FzpoDf3yOOQ8djvgSoXbN9TtF/Z4sfp5YVTuaVLSz5qvJIw oAG1RUDAqBj1qNpABBRnIBNRU9vDFWtT0x3czwDkW3dO9fEYqlLKymjAgjqDthQ1irsVVre0uLhq RoSO7dFH04qn9lZpaw8Bux3dvE4EqOo3lxbPGyJWH9s+Pt7Yql97c/pCaJIYzUVG/Xf5dhhVW1Kz mhkS6hqeIXkR2KilflgVv9PH0/7r9589sVdplrNNcG8mG25Wvcn+GKqUiXGm3RkReULbDwIPY++K ohdZMssUccfEu6hiTXYnemKqMbqmsyO2yrzJ+QXFVK0tG1CeWR24itSRvuT0wquv9LFtEJUcsK0a vauBVmoz+vHbSdyhDfMGhwoTG01ZbicRCMrWu9a9BXwwJRk0SyxPG3RxTFUlhnudNlaOROUbGtOg PuDiqMttRa8uPS9PjEVPPuTtiqDH1nTLhjx5RNtU9GHbfxxVdc6rNdJ6EMRXnsaHkT7DbFV8tm1t pLhv7x2Vn9txQYqo2upyw24gii5OK0atep8AMKovS7GZZGurjaRq8VPXfqTgVC6V9i6/4xH+OKor QgRFLUU+IfqxVQ1ew9NjcRj4GPxgdie/04qqGza50qEp/eRglR4gk1GKrLfV5IIxDNESyCgNaHbs a4q6zhnvL363KvGNSCPDboBiqc4qsl9Cn73jT/Lp/HFUM36I7+h9HH+GKro/0XUcPRr7ca4qihSm 3TtirsVabjxPKnHvXpiqyH6tv6PD34U/hiqpiqifqfPf0+f+xriqtirm40PKlO9emKqcX1ap9LhX vwp/DFVTFXYq7FXYq7FXYq0/Dj8dOPevTFWk9OnwU4/5NKfhiq5uNDypTvXpiqyP0d/T4+/Gn8MV X4q7FXYq7FXYq40pv071xVwpTbp7Yq03D9qn04q3ir//2Q== 52 | 53 | 54 | 55 | 56 | 58 | Adobe PDF library 9.90 59 | 60 | 62 | image/svg+xml 63 | 64 | 68 | 69 | 100.000000 70 | 44.000000 71 | Pixels 72 | 73 | 1 74 | False 75 | False 76 | 77 | 78 | Cyan 79 | Magenta 80 | Yellow 81 | 82 | 83 | 84 | 85 | 86 | Default Swatch Group 87 | 0 88 | 89 | 90 | 91 | 92 | 93 | 94 | 95 | 96 | 97 | 98 | 99 | 100 | 101 | 102 | 103 | 104 | 105 | 106 | 107 | 108 | 109 | 110 | 111 | 112 | 113 | 114 | 115 | 116 | 117 | 118 | 119 | 120 | 124 | 127 | 133 | 138 | 143 | 149 | 150 | 151 | 156 | 160 | 164 | 165 | 167 | 168 | 172 | 176 | 179 | 180 | 182 | 186 | 187 | 188 | 198 | 199 | 200 | -------------------------------------------------------------------------------- /public/shared/css/documentation.css: -------------------------------------------------------------------------------- 1 | /*------------------------------------------------------------------------------ 2 | Global Documentation Styles 3 | ------------------------------------------------------------------------------*/ 4 | 5 | html { 6 | height:100%; 7 | } 8 | 9 | body { 10 | font: 13px helvetica,arial,freesans,clean,sans-serif; 11 | line-height: 1.4em; 12 | background-color: #fff; 13 | color: #393939; 14 | margin: 0px; 15 | padding: 0px; 16 | height: 100%; 17 | } 18 | 19 | p { 20 | margin: 1em 0; 21 | } 22 | 23 | h2 { 24 | font-size: 16px; 25 | color: #333; 26 | margin: 2em auto 1em; 27 | } 28 | 29 | body.api .content h2 { 30 | background: transparent url(../images/crud-sprite.png) left 2px no-repeat; 31 | padding-left: 22px; 32 | } 33 | 34 | h2 span.step { 35 | color: #666; 36 | } 37 | 38 | h3 { 39 | font-size: 14px; 40 | color: #333; 41 | margin: 1.5em 0 .5em; 42 | } 43 | 44 | h5 { 45 | font-size: 13px; 46 | } 47 | 48 | h6 { 49 | font-size: 13px; 50 | color: #666; 51 | } 52 | 53 | a { 54 | color: #4183C4; 55 | text-decoration: none; 56 | } 57 | 58 | a:hover, 59 | a:active { 60 | text-decoration:underline; 61 | } 62 | 63 | blockquote { 64 | margin:0 -5px; 65 | padding: 0px 20px; 66 | } 67 | 68 | ul, 69 | ol { 70 | margin: 0px; 71 | padding: 0px; 72 | } 73 | 74 | dt { 75 | font-weight: bold; 76 | } 77 | 78 | dd { 79 | padding-left: 1em; 80 | margin-bottom: 1em; 81 | } 82 | 83 | dd + dd { 84 | margin-bottom: 0; 85 | } 86 | 87 | span.attention, 88 | p.attention { 89 | color: #e98400; 90 | font-style: italic; 91 | } 92 | 93 | a img { 94 | border: 0px; 95 | } 96 | 97 | /*------------------------------------------------------------------------------ 98 | Header Styles 99 | ------------------------------------------------------------------------------*/ 100 | 101 | #header-wrapper { 102 | margin-bottom: 0; 103 | clear: both; 104 | height: 38px; 105 | background: white url(../images/background-v2.png) 0 bottom repeat-x; 106 | } 107 | 108 | #header { 109 | margin: 0 auto; 110 | width: 920px; 111 | } 112 | 113 | #header a.logo { 114 | float: left; 115 | margin-top: 15px; 116 | display: inline-block; 117 | } 118 | 119 | #header ul.nav { 120 | float: right; 121 | padding: 8px 3px 8px 2px; 122 | font-weight: bold; 123 | text-shadow: white 1px 1px 0px; 124 | font-size: 12px; 125 | margin-top: 18px; 126 | background: #f5f5f5; 127 | filter:progid:DXImageTransform.Microsoft.gradient(GradientType=0, startColorstr='#fcfcfc', endColorstr='#ececec'); 128 | background:-webkit-gradient(linear, 0% 0%, 0% 100%, from(#fcfcfc), to(#e8e8e8)); 129 | background:-moz-linear-gradient(270deg, #fcfcfc, #ececec); 130 | border-color:#eee; 131 | border:1px solid #e9e9e9; 132 | border-bottom-color:#f5f5f5; 133 | -webkit-border-radius:5px; 134 | -moz-border-radius:5px; 135 | border-radius:5px; 136 | -webkit-box-shadow:0 1px 1px rgba(0,0,0,0.2); 137 | -moz-box-shadow:0 1px 1px rgba(0,0,0,0.2); 138 | box-shadow:0 1px 1px rgba(0,0,0,0.2); 139 | } 140 | 141 | #header ul.nav li:first-child { 142 | background: transparent; 143 | } 144 | 145 | #header ul.nav li { 146 | float: left; 147 | margin: 0; 148 | padding: 0px 11px 0px 13px; 149 | list-style-type: none; 150 | background: url(../images/nav-rule.png) no-repeat 0px 50%; 151 | line-height: 1.4em; 152 | } 153 | 154 | #header a { 155 | outline: none; 156 | text-decoration: none; 157 | } 158 | 159 | /*------------------------------------------------------------------------------ 160 | Sidebar 161 | ------------------------------------------------------------------------------*/ 162 | 163 | div.sidebar-shell { 164 | position: relative; 165 | float: right; 166 | margin: 35px 0 0; 167 | } 168 | 169 | div.sidebar-module { 170 | padding: 3px; 171 | background: #EEE; 172 | -moz-border-radius: 3px; 173 | -webkit-border-radius: 3px; 174 | border-radius: 3px; 175 | display: block; 176 | width: 332px; 177 | margin-bottom: 20px; 178 | font-size: 12px; 179 | } 180 | 181 | div.sidebar-module > ul { 182 | background: #fafafb; 183 | border: solid #CACACA; 184 | border-width: 1px 1px 0px 1px; 185 | margin: 0px; 186 | } 187 | 188 | div.sidebar-module > p { 189 | background: #fafafb; 190 | border: solid #CACACA; 191 | border-width: 1px; 192 | padding: 8px 10px; 193 | margin: 0px; 194 | display: block; 195 | line-height: 1.4em; 196 | } 197 | 198 | div.sidebar-module li { 199 | list-style-type: none; 200 | } 201 | 202 | div.sidebar-module > ul > li { 203 | border-bottom: 1px solid #CACACA; 204 | text-decoration: none; 205 | } 206 | 207 | div.sidebar-module > ul > li:hover { 208 | text-decoration: none; 209 | } 210 | 211 | 212 | div.sidebar-module > ul h3 { 213 | margin: 0px; 214 | color: #666; 215 | text-shadow: 1px 1px 0px #fff; 216 | border-bottom: 1px solid #CACACA; 217 | font-size: 14px; 218 | background-color: #e1e1e1; 219 | background-image: -moz-linear-gradient(top, #f1f1f1, #e1e1e1); 220 | background-image: -ms-linear-gradient(top, #f1f1f1, #e1e1e1); 221 | background-image: -o-linear-gradient(top, #f1f1f1, #e1e1e1); 222 | background-image: -webkit-gradient(linear, left top, left bottom, from(#f1f1f1), to(#e1e1e1)); 223 | background-image: -webkit-linear-gradient(top, #f1f1f1, #e1e1e1); 224 | background-image: linear-gradient(top, #f1f1f1, #e1e1e1); 225 | filter: progid:DXImageTransform.Microsoft.gradient(startColorStr='#f1f1f1', EndColorStr='#e1e1e1'); 226 | } 227 | 228 | div.sidebar-module > ul li h3:hover, 229 | div.sidebar-module > ul h3.disable { 230 | background-color: #e1e1e1; 231 | background-image: -moz-linear-gradient(top, #e1e1e1, #d1d1d1); 232 | background-image: -ms-linear-gradient(top, #e1e1e1, #d1d1d1); 233 | background-image: -o-linear-gradient(top, #e1e1e1, #d1d1d1); 234 | background-image: -webkit-gradient(linear, left top, left bottom, from(#e1e1e1), to(#d1d1d1)); 235 | background-image: -webkit-linear-gradient(top, #e1e1e1, #d1d1d1); 236 | background-image: linear-gradient(top, #e1e1e1, #d1d1d1); 237 | filter: progid:DXImageTransform.Microsoft.gradient(startColorStr='#e1e1e1', EndColorStr='#d1d1d1'); 238 | } 239 | 240 | 241 | div.sidebar-module > ul h3 a, 242 | div.sidebar-module > ul h3.disable span { 243 | padding: 8px 0px 8px 10px; 244 | color: #666; 245 | display: block; 246 | text-decoration: none; 247 | } 248 | 249 | div.sidebar-module > ul h3.disable span { 250 | padding-left: 20px; 251 | background-image: url(../images/active-arrow.png); 252 | background-position: left center; 253 | background-repeat: no-repeat; 254 | cursor: default; 255 | } 256 | div.sidebar-module > ul h3:hover a { 257 | text-decoration: none; 258 | } 259 | 260 | div.sidebar-module ul ul, 261 | div.sidebar-module .spacer { 262 | display: block; 263 | padding-bottom: 2px; 264 | background-color: #FAFAFB; 265 | } 266 | 267 | div.sidebar-module ul ul li { 268 | border-top: 1px solid #fff; 269 | border-bottom: 1px solid #e9ecee; 270 | font-weight: bold; 271 | color: #666; 272 | } 273 | 274 | div.sidebar-module ul ul li:hover, 275 | div.sidebar-module li.disable { 276 | border-top: 1px solid #fafafb; 277 | border-bottom: 1px solid #e5e8ea; 278 | background-color: #f0f0f3; 279 | } 280 | 281 | div.sidebar-module li.disable { 282 | background-image: url(../images/active-arrow.png); 283 | background-position: left center; 284 | background-repeat: no-repeat; 285 | } 286 | 287 | div.sidebar-module ul ul li a, 288 | div.sidebar-module ul ul li span { 289 | padding: 6px 0px 6px 10px; 290 | display: block; 291 | text-decoration: none; 292 | } 293 | 294 | div.sidebar-module ul ul li span { 295 | padding-left: 20px; 296 | cursor: default; 297 | } 298 | 299 | /* @end */ 300 | 301 | /*****************************************************************************/ 302 | /* 303 | /* Footer 304 | /* 305 | /*****************************************************************************/ 306 | 307 | 308 | 309 | #footer { 310 | position: relative; 311 | bottom:0; 312 | font-size:13px; 313 | color: #636363; 314 | margin: 45px 0 0 0; 315 | } 316 | 317 | #footer a:hover { 318 | text-decoration: underline; 319 | } 320 | 321 | #footer li { 322 | list-style: none; 323 | } 324 | 325 | .footer_inner { 326 | width:960px; 327 | position: relative; 328 | margin: 0 auto; 329 | } 330 | 331 | #footer .upper_footer { 332 | min-height: 160px; 333 | overflow: hidden; 334 | background: url(../images/bg_footer_top.png) #f8f8f8 repeat-x; 335 | } 336 | 337 | #footer #blacktocat { 338 | height:130px; 339 | width:164px; 340 | float:left; 341 | background: url(../images/blacktocat.png) top left no-repeat; 342 | text-indent: -5000px; 343 | margin: 15px 20px 0 0; 344 | } 345 | 346 | #footer #blacktocat_ie { 347 | height:130px; 348 | width:164px; 349 | float:left; 350 | background: url(../images/blacktocat.png) no-repeat; 351 | text-indent: -5000px; 352 | margin: 15px 20px 0 0; 353 | } 354 | 355 | #footer .upper_footer ul.footer_nav { 356 | position: relative; 357 | float: left; 358 | width: 164px; 359 | margin: 20px 10px; 360 | } 361 | 362 | #footer .upper_footer ul.footer_nav h4 { 363 | margin: 0 0 5px 0; 364 | padding-bottom: 5px; 365 | border-bottom: thin solid #e1e1e1; 366 | } 367 | 368 | #footer .lower_footer { 369 | position: relative; 370 | background:url(../images/bg_footer_bottom.png) #fff repeat-x; 371 | overflow: hidden; 372 | clear:both; 373 | } 374 | 375 | #footer .lower_footer .home { 376 | display: block; 377 | position: absolute; 378 | background: url(../images/footer-logo.png) top left no-repeat; 379 | width: 100px; 380 | height: 50px; 381 | text-indent: -5000px; 382 | } 383 | 384 | #footer .lower_footer .home_ie { 385 | display: block; 386 | position: absolute; 387 | background: url(../images/footer-logo.png) top left no-repeat; 388 | width: 100px; 389 | height: 50px; 390 | text-indent: -5000px; 391 | } 392 | 393 | #footer .lower_footer #legal { 394 | float: left; 395 | width: 500px; 396 | height: 50px; 397 | line-height: 8px; 398 | margin: 25px 0 0 17px; 399 | } 400 | 401 | #footer .lower_footer #legal #legal_links { 402 | margin-left: 177px; 403 | } 404 | 405 | #footer .lower_footer div ul { 406 | float: left; 407 | text-indent: none; 408 | display:inline; 409 | margin-top: 15px; 410 | 411 | } 412 | 413 | #footer .lower_footer div ul li { 414 | display:inline; 415 | float: left; 416 | margin: 0 10px 0 0; 417 | } 418 | 419 | #footer .lower_footer div p { 420 | display:inline; 421 | float:left; 422 | clear: both; 423 | margin: 10px 0 0 177px; 424 | } 425 | 426 | #footer .lower_footer .sponsor { 427 | width: 295px; 428 | float: right; 429 | margin-top: 35px; 430 | padding-bottom: 25px; 431 | } 432 | 433 | #footer .lower_footer .sponsor .logo { 434 | float:left; 435 | margin: 0 10px 0 0; 436 | } 437 | 438 | #footer .lower_footer .sponsor a { 439 | color: #000; 440 | } 441 | 442 | /* end */ 443 | 444 | /*------------------------------------------------------------------------------ 445 | Not Footer 446 | ------------------------------------------------------------------------------*/ 447 | #wrapper { 448 | padding: 20px 25px; 449 | overflow:hidden; 450 | height: auto; 451 | width: 920px; 452 | margin: -20px auto 0; 453 | background: url(../images/background-white.png) 0 0 no-repeat; 454 | } 455 | 456 | .content { 457 | width: 560px; 458 | position: relative; 459 | float: left; 460 | color: #393939; 461 | z-index: 2; 462 | } 463 | 464 | .content dl { 465 | margin-left: 10px; 466 | } 467 | 468 | .content dt { 469 | color: #666; 470 | } 471 | 472 | .content ul, 473 | .content ol { 474 | margin-left: 1.5em; 475 | } 476 | 477 | .content ul { 478 | list-style-type: disc; 479 | } 480 | 481 | .content img { 482 | max-width: 100%; 483 | border: 1px solid #dddddd; 484 | -webkit-box-shadow: 1px 1px 3px #ddd; 485 | -moz-box-shadow: 1px 1px 3px #ddd; 486 | box-shadow: 1px 1px 3px #ddd; 487 | } 488 | 489 | 490 | .content .description { 491 | margin-left: 20px; 492 | } 493 | 494 | .content .verseblock-content { 495 | padding: 3px; 496 | } 497 | 498 | .content .verseblock-content, 499 | .content .sectionbody .dlist dt, 500 | .content p > tt, 501 | .content dl code, 502 | .content ul code, 503 | p code { 504 | font: 12px Monaco,"Courier New","DejaVu Sans Mono","Bitstream Vera Sans Mono",monospace; 505 | color: #52595d; 506 | -webkit-border-radius: 3px; 507 | -moz-border-radius: 3px; 508 | border-radius: 3px; 509 | -moz-background-clip: padding; 510 | -webkit-background-clip: padding-box; 511 | background-clip: padding-box; 512 | border: 1px solid #ccc; 513 | background-color: #f9f9f9; 514 | padding: 0px 3px; 515 | display: inline-block; 516 | } 517 | 518 | .content .sectionbody .dlist dt { 519 | margin-top: 10px; 520 | } 521 | 522 | .content .verseblock-content { 523 | padding: 3px; 524 | } 525 | 526 | .content .intro { 527 | color: #868686; 528 | } 529 | /* @end */ 530 | 531 | /*------------------------------------------------------------------------------ 532 | Pre/Code Styles 533 | ------------------------------------------------------------------------------*/ 534 | 535 | code {white-space: nowrap;} 536 | 537 | pre { 538 | border: 1px solid #cacaca; 539 | line-height: 1.2em; 540 | font: 12px Monaco,"Courier New","DejaVu Sans Mono","Bitstream Vera Sans Mono",monospace; 541 | padding: 10px; 542 | overflow:auto; 543 | -webkit-border-radius: 3px; 544 | -moz-border-radius: 3px; 545 | border-radius: 3px; 546 | -moz-background-clip: padding; 547 | -webkit-background-clip: padding-box; 548 | background-clip: padding-box; 549 | background-color: #FAFAFB; 550 | color: #393939; 551 | margin: 0px; 552 | } 553 | 554 | ul + pre { 555 | margin-top: 1em; 556 | } 557 | 558 | pre code {white-space: pre;} 559 | 560 | pre span.comment {color: #aaa;} 561 | 562 | pre.headers { 563 | margin-bottom: 0; 564 | border-bottom-width: 0; 565 | -webkit-border-radius: 3px 3px 0 0; 566 | -moz-border-radius: 3px 3px 0 0; 567 | border-radius: 3px 3px 0 0; 568 | color: #666; 569 | background-color: #f1f1f1; 570 | background-image: -moz-linear-gradient(top, #f1f1f1, #e1e1e1); 571 | background-image: -ms-linear-gradient(top, #f1f1f1, #e1e1e1); 572 | background-image: -o-linear-gradient(top, #f1f1f1, #e1e1e1); 573 | background-image: -webkit-gradient(linear, left top, left bottom, from(#f1f1f1), to(#e1e1e1)); 574 | background-image: -webkit-linear-gradient(top, #f1f1f1, #e1e1e1); 575 | background-image: linear-gradient(top, #f1f1f1, #e1e1e1); 576 | filter: progid:DXImageTransform.Microsoft.gradient(startColorStr='#f1f1f1', EndColorStr='#e1e1e1'); 577 | text-shadow: 0 1px 0 rgba(255, 255, 255, 0.7); 578 | } 579 | 580 | pre.no-response { 581 | -webkit-border-radius: 3px 3px; 582 | -moz-border-radius: 3px 3px; 583 | border-radius: 3px 3px; 584 | border-bottom: 1px solid #CACACA; 585 | } 586 | 587 | pre.headers + pre.highlight { 588 | -webkit-border-radius: 0 0 3px 3px; 589 | -moz-border-radius: 0 0 3px 3px; 590 | border-radius: 0 0 3px 3px; 591 | } 592 | 593 | pre.highlight { 594 | -webkit-border-radius:3px; 595 | -moz-border-radius:3px; 596 | border-radius:3px; 597 | background-color: #FAFAFB; 598 | } 599 | 600 | pre.terminal { 601 | background-color: #444; 602 | color: #fff; 603 | -webkit-border-radius: 3px; 604 | -moz-border-radius: 3px; 605 | border-radius: 3px; 606 | -moz-background-clip: padding; 607 | -webkit-background-clip: padding-box; 608 | background-clip: padding-box; 609 | border: 2px solid #DEDEDE; 610 | position: relative; 611 | padding: 10px; 612 | text-shadow: none; 613 | background-image: none; 614 | filter: none; 615 | } 616 | 617 | pre.terminal em { 618 | color: #f9fe64; 619 | } 620 | 621 | span.codeline { 622 | display: block; 623 | position: relative; 624 | } 625 | 626 | span.codeline:hover { 627 | background-color: #292929; 628 | margin: 0px; 629 | padding-left: 3px; 630 | margin-left: -3px; 631 | -webkit-border-radius: 3px; 632 | -moz-border-radius: 3px; 633 | border-radius: 3px; 634 | color: #666666; 635 | } 636 | 637 | span.codeline span { 638 | display: inline-block; 639 | font-size: 10px; 640 | color: #fff; 641 | padding: 0 0.3em 0.05em; 642 | position: absolute; 643 | right: 0px; 644 | top: 0px; 645 | text-indent: -9999px; 646 | background-image: url(../images/qmark.png); 647 | background-repeat: no-repeat; 648 | background-position: 1px 3px; 649 | max-width: 8px; 650 | min-width: 8px; 651 | -moz-user-select: none; 652 | -khtml-user-select: none; 653 | user-select: none; 654 | cursor: default; 655 | } 656 | 657 | span.codeline span:hover { 658 | display: inline-block; 659 | text-indent: 0px; 660 | -webkit-border-radius: 3px; 661 | -moz-border-radius: 3px; 662 | border-radius: 3px; 663 | background: #000; 664 | border: 1px solid #292929; 665 | max-width: 1000px; 666 | } 667 | 668 | span.codeline:hover em { 669 | color: #666666; 670 | } 671 | 672 | pre.bootcamp { 673 | white-space: normal; 674 | margin-left: -10px; 675 | background-image: none; 676 | } 677 | 678 | span.bash-output { 679 | color: #63e463; 680 | display: block; 681 | position: relative; 682 | -moz-user-select: none; 683 | -khtml-user-select: none; 684 | user-select: none; 685 | } 686 | 687 | /* end */ 688 | 689 | /*------------------------------------------------------------------------------ 690 | More Info Expander 691 | ------------------------------------------------------------------------------*/ 692 | 693 | .more-info { 694 | margin: 10px 0; 695 | position: relative; 696 | } 697 | .more-info > h4 { 698 | background-image: url('../images/dropdown_sprites.jpg'); 699 | background-repeat: no-repeat; 700 | padding: .25em 0 .25em 25px; 701 | cursor: pointer; 702 | color: #4183C4; 703 | font-weight: normal; 704 | } 705 | .more-info h4.compressed { 706 | background-position: 0 0; 707 | } 708 | .more-info:hover h4.compressed { 709 | background-position: 0 -23px; 710 | } 711 | .more-info h4.expanded { 712 | background-position: 0 -46px; 713 | } 714 | .more-info:hover h4.expanded { 715 | background-position: 0 -69px; 716 | } 717 | 718 | .more-info .more-content { 719 | display: none; 720 | -webkit-border-radius: 3px; 721 | -moz-border-radius: 3px; 722 | border-radius: 3px; 723 | background-color: #FFFFFF; 724 | border: 3px solid #DDDDDD; 725 | padding: 1em 2em; 726 | -webkit-box-shadow: 1px 1px 3px rgba(0, 0, 0, 0.3); 727 | -moz-box-shadow: 1px 1px 3px rgba(0, 0, 0, 0.3); 728 | box-shadow: 1px 1px 3px rgba(0, 0, 0, 0.3); 729 | margin: 15px 0 30px; 730 | } 731 | 732 | .more-info .more-content h4 { 733 | margin-top: 1em; 734 | } 735 | 736 | .more-info .more-content pre { 737 | margin-left: 0px; 738 | } 739 | 740 | /****************************/ 741 | /* List Module */ 742 | /****************************/ 743 | 744 | .list-module h2 { 745 | border: solid #cacaca; 746 | border-width: 1px; 747 | border-radius: 3px 3px 0px 0px; 748 | -moz-border-radius: 3px 3px 0px 0px; 749 | -webkit-border-bottom-right-radius: 0px; 750 | -webkit-border-bottom-left-radius: 0px; 751 | -moz-background-clip: padding; 752 | -webkit-background-clip: padding-box; 753 | background-clip: padding-box; 754 | padding: 6px 10px; 755 | background-color: #f1f1f1; 756 | background-image: -moz-linear-gradient(top, #f1f1f1, #e1e1e1); 757 | background-image: -ms-linear-gradient(top, #f1f1f1, #e1e1e1); 758 | background-image: -o-linear-gradient(top, #f1f1f1, #e1e1e1); 759 | background-image: -webkit-gradient(linear, left top, left bottom, from(#f1f1f1), to(#e1e1e1)); 760 | background-image: -webkit-linear-gradient(top, #f1f1f1, #e1e1e1); 761 | background-image: linear-gradient(top, #f1f1f1, #e1e1e1); 762 | filter: progid:DXImageTransform.Microsoft.gradient(startColorStr='#f1f1f1', EndColorStr='#e1e1e1'); 763 | color: #666; 764 | text-shadow: 0 1px 0 rgba(255, 255, 255, 0.7); 765 | font-size: 16px; 766 | line-height: 22px; 767 | margin: 0px; 768 | } 769 | 770 | .list-module .list-body { 771 | border: solid #cacaca; 772 | border-width: 0px 1px 1px 1px; 773 | border-radius: 0px 0px 3px 3px; 774 | -moz-border-radius: 0px 0px 3px 3px; 775 | -webkit-border-bottom-right-radius: 3px; 776 | -webkit-border-bottom-left-radius: 3px; 777 | -moz-background-clip: padding; 778 | -webkit-background-clip: padding-box; 779 | background-clip: padding-box; 780 | background-color: #fafafb; 781 | color: #666; 782 | text-shadow: 0 1px 0 rgba(255, 255, 255, 0.7); 783 | } 784 | 785 | .list-module .list-body .icon { 786 | display: block; 787 | height: 28px; 788 | width: 28px; 789 | position: absolute; 790 | top: 10px; 791 | left: 10px; 792 | background: transparent url(images/popular_guide_sprites.png) 0 0 no-repeat; 793 | } 794 | 795 | .list-module a { 796 | border-top: 1px solid #fff; 797 | border-bottom: 1px solid #e9ecee; 798 | padding: 6px 10px; 799 | position: relative; 800 | display: block; 801 | } 802 | 803 | .list-module a:hover { 804 | border-top: 1px solid #fafafb; 805 | border-bottom: 1px solid #e5e8ea; 806 | background-color: #f0f0f3; 807 | text-decoration: none; 808 | } 809 | 810 | .list-module a h3 { 811 | color: #4183C4; 812 | } 813 | 814 | .list-module a:hover h3 { 815 | text-decoration: underline; 816 | } 817 | 818 | .list-module ul { 819 | list-style-type: none; 820 | margin: 0px; 821 | } 822 | 823 | .list-module h3 { 824 | margin: 0px; 825 | font-size: 13px; 826 | } 827 | 828 | .list-module .list-body a p { 829 | color: #666; 830 | margin: 0px; 831 | } 832 | 833 | /* @end */ 834 | 835 | /****************************/ 836 | /* Expandable List Module */ 837 | /****************************/ 838 | 839 | div.expandable > ul h3 { 840 | display: table; 841 | width: 100%; 842 | } 843 | 844 | div.expandable > ul h3 > a { 845 | display: table-cell; 846 | background-color: #e1e1e1; 847 | background-image: -moz-linear-gradient(top, #f1f1f1, #e1e1e1); 848 | background-image: -ms-linear-gradient(top, #f1f1f1, #e1e1e1); 849 | background-image: -o-linear-gradient(top, #f1f1f1, #e1e1e1); 850 | background-image: -webkit-gradient(linear, left top, left bottom, from(#f1f1f1), to(#e1e1e1)); 851 | background-image: -webkit-linear-gradient(top, #f1f1f1, #e1e1e1); 852 | background-image: linear-gradient(top, #f1f1f1, #e1e1e1); 853 | filter: progid:DXImageTransform.Microsoft.gradient(startColorStr='#f1f1f1', EndColorStr='#e1e1e1'); 854 | } 855 | 856 | div.expandable > ul h3 > a:hover { 857 | background-color: #e1e1e1; 858 | background-image: -moz-linear-gradient(top, #e1e1e1, #d1d1d1); 859 | background-image: -ms-linear-gradient(top, #e1e1e1, #d1d1d1); 860 | background-image: -o-linear-gradient(top, #e1e1e1, #d1d1d1); 861 | background-image: -webkit-gradient(linear, left top, left bottom, from(#e1e1e1), to(#d1d1d1)); 862 | background-image: -webkit-linear-gradient(top, #e1e1e1, #d1d1d1); 863 | background-image: linear-gradient(top, #e1e1e1, #d1d1d1); 864 | filter: progid:DXImageTransform.Microsoft.gradient(startColorStr='#e1e1e1', EndColorStr='#d1d1d1'); 865 | } 866 | 867 | div.expandable > ul h3 > a.collapsed, 868 | div.expandable > ul h3 > a.expanded { 869 | background-image: url(/shared/images/expand-arrows.png); 870 | background-position: 0px -3px; 871 | background-repeat: no-repeat; 872 | width: 13px; 873 | border-right: 1px solid #cacaca; 874 | padding: 8px 11px; 875 | } 876 | 877 | div.expandable > ul h3 > a.expanded { 878 | background-position: -38px -3px; 879 | } 880 | 881 | div.expandable > ul h3 > a.collapsed:hover { 882 | background-image: url(/shared/images/expand-arrows.png); 883 | background-position: 0px -43px; 884 | background-repeat: no-repeat; 885 | width: 13px; 886 | border-right: 1px solid #cacaca; 887 | padding: 8px 11px; 888 | } 889 | 890 | div.expandable > ul h3 > a.expanded:hover { 891 | background-position: -38px -43px; 892 | } 893 | 894 | /* @end */ 895 | -------------------------------------------------------------------------------- /public/shared/images/blacktocat.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 6 | 7 | 8 | 9 | 13 | proof:pdf 14 | xmp.did:F87F11740720681180838E4FEC0BBEE0 15 | xmp.iid:F87F11740720681180838E4FEC0BBEE0 16 | uuid:a82416aa-8f86-e849-8a8d-10757c227e64 17 | 18 | xmp.iid:F77F11740720681180838E4FEC0BBEE0 19 | xmp.did:F77F11740720681180838E4FEC0BBEE0 20 | uuid:a82416aa-8f86-e849-8a8d-10757c227e64 21 | proof:pdf 22 | 23 | 24 | 25 | 26 | saved 27 | xmp.iid:F77F11740720681180838E4FEC0BBEE0 28 | 2011-07-15T18:59:45-07:00 29 | Adobe Illustrator CS5 30 | / 31 | 32 | 33 | saved 34 | xmp.iid:F87F11740720681180838E4FEC0BBEE0 35 | 2011-07-15T19:12:41-07:00 36 | Adobe Illustrator CS5 37 | / 38 | 39 | 40 | 41 | 42 | 45 | 2011-07-15T19:12:41-07:00 46 | Adobe Illustrator CS5 47 | 2011-07-15T19:12:41-07:00 48 | 2011-07-15T19:12:41-07:00 49 | 50 | 51 | 52 | 256 53 | 256 54 | JPEG 55 | /9j/4AAQSkZJRgABAgEASABIAAD/7QAsUGhvdG9zaG9wIDMuMAA4QklNA+0AAAAAABAASAAAAAEA AQBIAAAAAQAB/+4ADkFkb2JlAGTAAAAAAf/bAIQABgQEBAUEBgUFBgkGBQYJCwgGBggLDAoKCwoK DBAMDAwMDAwQDA4PEA8ODBMTFBQTExwbGxscHx8fHx8fHx8fHwEHBwcNDA0YEBAYGhURFRofHx8f Hx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8f/8AAEQgBAAEAAwER AAIRAQMRAf/EAaIAAAAHAQEBAQEAAAAAAAAAAAQFAwIGAQAHCAkKCwEAAgIDAQEBAQEAAAAAAAAA AQACAwQFBgcICQoLEAACAQMDAgQCBgcDBAIGAnMBAgMRBAAFIRIxQVEGE2EicYEUMpGhBxWxQiPB UtHhMxZi8CRygvElQzRTkqKyY3PCNUQnk6OzNhdUZHTD0uIIJoMJChgZhJRFRqS0VtNVKBry4/PE 1OT0ZXWFlaW1xdXl9WZ2hpamtsbW5vY3R1dnd4eXp7fH1+f3OEhYaHiImKi4yNjo+Ck5SVlpeYmZ qbnJ2en5KjpKWmp6ipqqusra6voRAAICAQIDBQUEBQYECAMDbQEAAhEDBCESMUEFURNhIgZxgZEy obHwFMHR4SNCFVJicvEzJDRDghaSUyWiY7LCB3PSNeJEgxdUkwgJChgZJjZFGidkdFU38qOzwygp 0+PzhJSktMTU5PRldYWVpbXF1eX1RlZmdoaWprbG1ub2R1dnd4eXp7fH1+f3OEhYaHiImKi4yNjo +DlJWWl5iZmpucnZ6fkqOkpaanqKmqq6ytrq+v/aAAwDAQACEQMRAD8A9U4q7FXYq7FXYq7FXYq7 FXYq7FVOa4ghFZXCex6/diqDk1qHpDG0h8fsjFUM+p37/Z4Rj2FT+NcVUWmvHNWuH37KeP6sKqZi B+0zN8zirvQj8MVd6EfhirhFT7LMvyOKqqzXiGq3D/7I8v14qqpqd+n2gkg+4/hTAqJj1mA7TI0R 8ftD8P6YqjYriGYVicOPY7/diq/FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYqh7m/t rfZ2q/ZF3OKpdNqN5Nsv7lPbdvvxVDCNa8m+Jj1LbnCq7FXYq7FXYq7FXYq7FXYq7FXYqt9Na8lq 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 56 | 57 | 58 | 59 | 60 | 62 | Adobe PDF library 9.90 63 | 64 | 66 | image/svg+xml 67 | 68 | 72 | 1 73 | False 74 | False 75 | 76 | 130.000000 77 | 130.000000 78 | Pixels 79 | 80 | 81 | 82 | Cyan 83 | Magenta 84 | Yellow 85 | 86 | 87 | 88 | 89 | 90 | Default Swatch Group 91 | 0 92 | 93 | 94 | 95 | 96 | 97 | 98 | 99 | 100 | 101 | 102 | 103 | 104 | 105 | 106 | 107 | 108 | 109 | 110 | 111 | 112 | 113 | 114 | 115 | 116 | 117 | 118 | 119 | 120 | 121 | 154 | 155 | 156 | 191 | 192 | 193 | 194 | 229 | 230 | 231 | 232 | 233 | 267 | 268 | 269 | 270 | -------------------------------------------------------------------------------- /public/fonts/chunk-webfont.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | This is a custom SVG webfont generated by Font Squirrel. 6 | Copyright : Generated in 2010 by FontLab Studio Copyright info pending 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | 93 | 94 | 95 | 96 | 97 | 98 | 99 | 100 | 101 | 102 | 103 | 104 | 105 | 106 | 107 | 108 | 109 | 110 | 111 | 112 | 113 | 114 | 115 | 116 | 117 | 118 | 119 | 120 | 121 | 122 | 123 | 124 | 125 | 126 | 127 | 128 | 129 | 130 | 131 | 132 | 133 | 134 | 135 | 136 | 137 | 138 | 139 | 140 | 141 | 142 | 143 | --------------------------------------------------------------------------------