diff --git a/AssetFile b/AssetFile
index 957f15b4..e92d0adc 100644
--- a/AssetFile
+++ b/AssetFile
@@ -4,10 +4,10 @@ require 'rake-pipeline-web-filters'
require 'rake-pipeline/travis'
require 'compass'
-roots ||= [Pathname.new(File.expand_path('.'))]
+ROOTS ||= [Pathname.new(File.expand_path('.'))]
paths = %w(styles scripts images static vendor).inject({}) do |paths, type|
- paths.merge(type.to_sym => roots.map { |root| root.join("assets/#{type}").to_s })
+ paths.merge(type.to_sym => ROOTS.map { |root| root.join("assets/#{type}").to_s })
end
Compass.configuration.images_path = paths[:images].first
diff --git a/Gemfile.lock b/Gemfile.lock
index 5cef6770..7efe3812 100644
--- a/Gemfile.lock
+++ b/Gemfile.lock
@@ -60,7 +60,7 @@ GIT
GIT
remote: git://github.com/travis-ci/travis-core.git
- revision: c40cee1a6d66d0cc18034e6e5e90c335349ead97
+ revision: 9fccbb2ccf1ecfacf146e397eeac1c9c6e443e42
branch: sf-travis-api
specs:
travis-core (0.0.1)
diff --git a/assets/scripts/app/templates/layouts/profile.hbs b/assets/scripts/app/templates/layouts/profile.hbs
index 72205db7..49c4195d 100644
--- a/assets/scripts/app/templates/layouts/profile.hbs
+++ b/assets/scripts/app/templates/layouts/profile.hbs
@@ -12,6 +12,10 @@
+
+ {{t layouts.application.fork_me}}
+
+
diff --git a/assets/scripts/app/views.coffee b/assets/scripts/app/views.coffee
index 7f65438d..6978b1d1 100644
--- a/assets/scripts/app/views.coffee
+++ b/assets/scripts/app/views.coffee
@@ -6,10 +6,10 @@ require 'ext/ember/namespace'
$("##{event.target.name}").toggleClass('display')
@Travis.reopen
- HomeView: Travis.View.extend(templateName: 'layouts/home')
+ HomeView: Travis.View.extend(templateName: 'layouts/home')
ProfileLayoutView: Travis.View.extend(templateName: 'layouts/profile')
StatsLayoutView: Travis.View.extend(templateName: 'layouts/simple')
- ApplicationView: Travis.View.extend(templateName: 'application')
+ ApplicationView: Travis.View.extend(templateName: 'application')
require 'views/accounts'
require 'views/build'
diff --git a/assets/styles/maximize.sass b/assets/styles/maximize.sass
index 880a05f3..999194aa 100644
--- a/assets/styles/maximize.sass
+++ b/assets/styles/maximize.sass
@@ -18,6 +18,5 @@
#top .profile
margin-right: 140px
-#profile #top .profile,
.maximized #top .profile
margin-right: 40px
diff --git a/public/scripts/app.js b/public/scripts/app.js
index 703933d7..8e0c30b1 100644
--- a/public/scripts/app.js
+++ b/public/scripts/app.js
@@ -30146,4 +30146,4 @@ var _require=function(){function c(a,c){document.addEventListener?a.addEventList
++g&&setTimeout(c,0)})}}();
(function(){!window.WebSocket&&window.MozWebSocket&&(window.WebSocket=window.MozWebSocket);if(window.WebSocket)Pusher.Transport=window.WebSocket,Pusher.TransportType="native";var c=(document.location.protocol=="http:"?Pusher.cdn_http:Pusher.cdn_https)+Pusher.VERSION,a=[];window.JSON||a.push(c+"/json2"+Pusher.dependency_suffix+".js");if(!window.WebSocket)window.WEB_SOCKET_DISABLE_AUTO_INITIALIZATION=!0,a.push(c+"/flashfallback"+Pusher.dependency_suffix+".js");var b=function(){return window.WebSocket?function(){Pusher.ready()}:
function(){window.WebSocket?(Pusher.Transport=window.WebSocket,Pusher.TransportType="flash",window.WEB_SOCKET_SWF_LOCATION=c+"/WebSocketMain.swf",WebSocket.__addTask(function(){Pusher.ready()}),WebSocket.__initialize()):(Pusher.Transport=null,Pusher.TransportType="none",Pusher.ready())}}(),e=function(a){var b=function(){document.body?a():setTimeout(b,0)};b()},g=function(){e(b)};a.length>0?_require(a,g):g()})();
-minispade.register('app', "(function() {(function() {\nminispade.require('auth');\nminispade.require('controllers');\nminispade.require('helpers');\nminispade.require('models');\nminispade.require('pusher');\nminispade.require('routes');\nminispade.require('slider');\nminispade.require('store');\nminispade.require('tailing');\nminispade.require('templates');\nminispade.require('views');\nminispade.require('config/locales');\nminispade.require('data/sponsors');\n\n Travis.reopen({\n App: Em.Application.extend({\n autoinit: false,\n currentUserBinding: 'auth.user',\n authStateBinding: 'auth.state',\n init: function() {\n this._super.apply(this, arguments);\n this.store = Travis.Store.create();\n this.store.loadMany(Travis.Sponsor, Travis.SPONSORS);\n this.set('auth', Travis.Auth.create({\n store: this.store,\n endpoint: Travis.config.api_endpoint\n }));\n this.slider = new Travis.Slider();\n this.pusher = new Travis.Pusher(Travis.config.pusher);\n return this.tailing = new Travis.Tailing();\n },\n signIn: function() {\n return this.get('auth').signIn();\n },\n signOut: function() {\n this.get('auth').signOut();\n return this.get('router').send('showAuthenticated');\n },\n receive: function() {\n return this.store.receive.apply(this.store, arguments);\n },\n toggleSidebar: function() {\n var element;\n $('body').toggleClass('maximized');\n element = $('
');\n $('#top .profile').append(element);\n Em.run.later((function() {\n return element.remove();\n }), 10);\n element = $('
');\n $('#repository').append(element);\n return Em.run.later((function() {\n return element.remove();\n }), 10);\n }\n })\n });\n\n}).call(this);\n\n})();\n//@ sourceURL=app");minispade.register('auth', "(function() {(function() {\n\n this.Travis.Auth = Ember.Object.extend({\n iframe: $('
').hide(),\n timeout: 5000,\n state: 'signed-out',\n receivingEnd: \"\" + location.protocol + \"//\" + location.host,\n init: function() {\n var _this = this;\n this.iframe.appendTo('body');\n window.addEventListener('message', function(e) {\n return _this.receiveMessage(e);\n });\n return this.loadUser();\n },\n accessToken: (function() {\n return sessionStorage.getItem('travis.token');\n }).property(),\n loadUser: function() {\n var user;\n if (user = typeof sessionStorage !== \"undefined\" && sessionStorage !== null ? sessionStorage.getItem('travis.user') : void 0) {\n return this.setData({\n user: JSON.parse(user)\n });\n } else if (typeof localStorage !== \"undefined\" && localStorage !== null ? localStorage.getItem('travis.auto_signin') : void 0) {\n return this.trySignIn();\n }\n },\n signIn: function() {\n this.set('state', 'signing-in');\n this.trySignIn();\n return Ember.run.later(this, this.checkSignIn.bind(this), this.timeout);\n },\n trySignIn: function() {\n return this.iframe.attr('src', \"\" + this.endpoint + \"/auth/post_message?origin=\" + this.receivingEnd);\n },\n checkSignIn: function() {\n if (this.get('state') === 'signing-in') {\n return this.forceSignIn();\n }\n },\n forceSignIn: function() {\n if (typeof localStorage !== \"undefined\" && localStorage !== null) {\n localStorage.setItem('travis.auto_signin', 'true');\n }\n return window.location = \"\" + this.endpoint + \"/auth/handshake?redirect_uri=\" + location;\n },\n signOut: function() {\n if (typeof localStorage !== \"undefined\" && localStorage !== null) {\n localStorage.clear();\n }\n if (typeof sessionStorage !== \"undefined\" && sessionStorage !== null) {\n sessionStorage.clear();\n }\n return this.setData();\n },\n setData: function(data) {\n var user;\n if (typeof data === 'string') {\n data = JSON.parse(data);\n }\n if (data != null ? data.token : void 0) {\n this.storeToken(data.token);\n }\n if (data != null ? data.user : void 0) {\n user = this.storeUser(data.user);\n }\n this.set('state', user ? 'signed-in' : 'signed-out');\n return this.set('user', user ? user : void 0);\n },\n storeToken: function(token) {\n if (typeof sessionStorage !== \"undefined\" && sessionStorage !== null) {\n sessionStorage.setItem('travis.token', token);\n }\n return this.notifyPropertyChange('accessToken');\n },\n storeUser: function(user) {\n if (typeof localStorage !== \"undefined\" && localStorage !== null) {\n localStorage.setItem('travis.auto_signin', 'true');\n }\n if (typeof sessionStorage !== \"undefined\" && sessionStorage !== null) {\n sessionStorage.setItem('travis.user', JSON.stringify(user));\n }\n this.store.load(Travis.User, user);\n return this.store.find(Travis.User, user.id);\n },\n receiveMessage: function(event) {\n if (event.origin === this.expectedOrigin()) {\n this.setData(event.data);\n return console.log(\"signed in as \" + event.data.user.login);\n } else {\n return console.log(\"unexpected message \" + event.origin + \": \" + event.data);\n }\n },\n expectedOrigin: function() {\n if (this.endpoint[0] === '/') {\n return this.receivingEnd;\n } else {\n return this.endpoint;\n }\n }\n });\n\n}).call(this);\n\n})();\n//@ sourceURL=auth");minispade.register('controllers', "(function() {(function() {\nminispade.require('helpers');\nminispade.require('travis/ticker');\n\n Travis.reopen({\n Controller: Em.Controller.extend({\n connectOutlet: function() {\n var view, _connectedOutletViews;\n view = this._super.apply(this, arguments);\n if (view) {\n _connectedOutletViews = Travis.app.get('_connectedOutletViews');\n if (!_connectedOutletViews) {\n _connectedOutletViews = [];\n }\n _connectedOutletViews.pushObject(view);\n Travis.app.set('_connectedOutletViews', _connectedOutletViews);\n }\n return view;\n }\n }),\n TopController: Em.Controller.extend({\n userBinding: 'Travis.app.currentUser'\n }),\n ApplicationController: Em.Controller.extend(),\n MainController: Em.Controller.extend(),\n StatsLayoutController: Em.Controller.extend(),\n ProfileLayoutController: Em.Controller.extend()\n });\nminispade.require('controllers/accounts');\nminispade.require('controllers/builds');\nminispade.require('controllers/home');\nminispade.require('controllers/profile');\nminispade.require('controllers/repositories');\nminispade.require('controllers/repository');\nminispade.require('controllers/sidebar');\nminispade.require('controllers/stats');\n\n}).call(this);\n\n})();\n//@ sourceURL=controllers");minispade.register('controllers/accounts', "(function() {(function() {\n\n Travis.AccountsController = Ember.ArrayController.extend({\n tab: 'accounts',\n init: function() {\n return this._super();\n },\n findByLogin: function(login) {\n return this.find(function(account) {\n return account.get('login') === 'login';\n });\n }\n });\n\n}).call(this);\n\n})();\n//@ sourceURL=controllers/accounts");minispade.register('controllers/builds', "(function() {(function() {\n\n Travis.BuildsController = Em.ArrayController.extend({\n repositoryBinding: 'parent.repository',\n contentBinding: 'parent.builds'\n });\n\n}).call(this);\n\n})();\n//@ sourceURL=controllers/builds");minispade.register('controllers/home', "(function() {(function() {\n\n Travis.HomeController = Travis.Controller.extend();\n\n}).call(this);\n\n})();\n//@ sourceURL=controllers/home");minispade.register('controllers/job', "(function() {(function() {\n\n\n\n}).call(this);\n\n})();\n//@ sourceURL=controllers/job");minispade.register('controllers/profile', "(function() {(function() {\n\n Travis.ProfileController = Travis.Controller.extend({\n name: 'profile',\n userBinding: 'Travis.app.currentUser',\n accountsBinding: 'Travis.app.router.accountsController',\n account: (function() {\n var login;\n login = this.get('params.login') || Travis.app.get('currentUser.login');\n return this.get('accounts').filter(function(account) {\n if (account.get('login') === login) {\n return account;\n }\n })[0];\n }).property('accounts.length', 'params.login'),\n activate: function(action, params) {\n this.setParams(params || this.get('params'));\n return this[\"view\" + ($.camelize(action))]();\n },\n viewHooks: function() {\n this.connectTab('hooks');\n return this.set('hooks', Travis.Hook.find({\n owner_name: this.get('params.login') || Travis.app.get('currentUser.login')\n }));\n },\n viewUser: function() {\n return this.connectTab('user');\n },\n connectTab: function(tab) {\n var viewClass;\n viewClass = Travis[\"\" + ($.camelize(tab)) + \"View\"];\n this.set('tab', tab);\n return this.connectOutlet({\n outletName: 'pane',\n controller: this,\n viewClass: viewClass\n });\n },\n setParams: function(params) {\n var key, value, _results;\n this.set('params', {});\n _results = [];\n for (key in params) {\n value = params[key];\n _results.push(this.set(\"params.\" + key, params[key]));\n }\n return _results;\n }\n });\n\n}).call(this);\n\n})();\n//@ sourceURL=controllers/profile");minispade.register('controllers/repositories', "(function() {(function() {\n\n Travis.RepositoriesController = Ember.ArrayController.extend({\n defaultTab: 'recent',\n sortProperties: ['sortOrder'],\n init: function() {\n this.activate(this.defaultTab);\n return Ember.run.later(this.updateTimes.bind(this), Travis.INTERVALS.updateTimes);\n },\n updateTimes: function() {\n var content;\n if (content = this.get('content')) {\n content.forEach(function(r) {\n return r.updateTimes();\n });\n }\n return Ember.run.later(this.updateTimes.bind(this), Travis.INTERVALS.updateTimes);\n },\n activate: function(tab, params) {\n this.set('tab', tab);\n return this[\"view\" + ($.camelize(tab))](params);\n },\n viewRecent: function() {\n return this.set('content', Travis.Repository.find());\n },\n viewOwned: function() {\n return this.set('content', Travis.Repository.ownedBy(Travis.app.get('currentUser.login')));\n },\n viewSearch: function(params) {\n return this.set('content', Travis.Repository.search(params.search));\n },\n searchObserver: (function() {\n var search, tab;\n search = this.get('search');\n tab = search ? 'search' : 'recent';\n return this.activate(tab, {\n search: search\n });\n }).observes('search')\n });\n\n}).call(this);\n\n})();\n//@ sourceURL=controllers/repositories");minispade.register('controllers/repository', "(function() {(function() {\n\n Travis.RepositoryController = Travis.Controller.extend({\n bindings: [],\n init: function() {\n this._super.apply(this, arguments);\n return Ember.run.later(this.updateTimes.bind(this), Travis.INTERVALS.updateTimes);\n },\n updateTimes: function() {\n var build, builds;\n if (builds = this.get('builds')) {\n builds.forEach(function(b) {\n return b.updateTimes();\n });\n }\n if (build = this.get('build')) {\n build.updateTimes();\n build.get('jobs').forEach(function(j) {\n return j.updateTimes();\n });\n }\n return Ember.run.later(this.updateTimes.bind(this), Travis.INTERVALS.updateTimes);\n },\n activate: function(action) {\n this._unbind();\n return this[\"view\" + ($.camelize(action))]();\n },\n viewIndex: function() {\n this._bind('repository', 'controllers.repositoriesController.firstObject');\n this._bind('build', 'repository.lastBuild');\n return this.connectTab('current');\n },\n viewCurrent: function() {\n this.connectTab('current');\n return this._bind('build', 'repository.lastBuild');\n },\n viewBuilds: function() {\n this.connectTab('builds');\n return this._bind('builds', 'repository.builds');\n },\n viewPullRequests: function() {\n this.connectTab('pull_requests');\n return this._bind('builds', 'repository.pullRequests');\n },\n viewBranches: function() {\n this.connectTab('branches');\n return this._bind('builds', 'repository.branches');\n },\n viewBuild: function() {\n return this.connectTab('build');\n },\n viewJob: function() {\n this._bind('build', 'job.build');\n return this.connectTab('job');\n },\n repositoryObserver: (function() {\n var repository;\n repository = this.get('repository');\n if (repository) {\n return repository.select();\n }\n }).observes('repository.id'),\n connectTab: function(tab) {\n var name, viewClass;\n name = tab === 'current' ? 'build' : tab;\n viewClass = name === 'builds' || name === 'branches' || name === 'pull_requests' ? Travis.BuildsView : Travis[\"\" + ($.camelize(name)) + \"View\"];\n this.set('tab', tab);\n return this.connectOutlet({\n outletName: 'pane',\n controller: this,\n viewClass: viewClass\n });\n },\n _bind: function(to, from) {\n return this.bindings.push(Ember.oneWay(this, to, from));\n },\n _unbind: function() {\n var binding, _i, _len, _ref;\n _ref = this.bindings;\n for (_i = 0, _len = _ref.length; _i < _len; _i++) {\n binding = _ref[_i];\n binding.disconnect(this);\n }\n return this.bindings.length = 0;\n }\n });\n\n}).call(this);\n\n})();\n//@ sourceURL=controllers/repository");minispade.register('controllers/sidebar', "(function() {(function() {\n\n Travis.reopen({\n SidebarController: Em.ArrayController.extend({\n init: function() {\n this.tickables = [];\n return Travis.Ticker.create({\n target: this,\n interval: Travis.INTERVALS.sponsors\n });\n },\n tick: function() {\n var tickable, _i, _len, _ref, _results;\n _ref = this.tickables;\n _results = [];\n for (_i = 0, _len = _ref.length; _i < _len; _i++) {\n tickable = _ref[_i];\n _results.push(tickable.tick());\n }\n return _results;\n }\n }),\n QueuesController: Em.ArrayController.extend(),\n WorkersController: Em.ArrayController.extend({\n groups: (function() {\n var content, groups, host, worker, _i, _len, _ref;\n if (content = this.get('content')) {\n groups = {};\n _ref = content.toArray();\n for (_i = 0, _len = _ref.length; _i < _len; _i++) {\n worker = _ref[_i];\n host = worker.get('host');\n if (!groups[host]) {\n groups[host] = Em.ArrayProxy.create({\n content: []\n });\n }\n groups[host].pushObject(worker);\n }\n return $.values(groups);\n }\n }).property('content.length')\n }),\n SponsorsController: Em.ArrayController.extend({\n page: 0,\n arrangedContent: (function() {\n return this.get('shuffled').slice(this.start(), this.end());\n }).property('shuffled.length', 'page'),\n shuffled: (function() {\n var content;\n if (content = this.get('content')) {\n return $.shuffle(content);\n } else {\n return [];\n }\n }).property('content.length'),\n tick: function() {\n return this.set('page', this.isLast() ? 0 : this.get('page') + 1);\n },\n pages: (function() {\n var length;\n length = this.get('content.length');\n if (length) {\n return parseInt(length / this.get('perPage') + 1);\n } else {\n return 1;\n }\n }).property('length'),\n isLast: function() {\n return this.get('page') === this.get('pages') - 1;\n },\n start: function() {\n return this.get('page') * this.get('perPage');\n },\n end: function() {\n return this.start() + this.get('perPage');\n }\n })\n });\n\n}).call(this);\n\n})();\n//@ sourceURL=controllers/sidebar");minispade.register('controllers/stats', "(function() {(function() {\n\n Travis.StatsController = Travis.Controller.extend({\n name: 'stats',\n init: function() {\n return this._super('top');\n },\n activate: function(action, params) {}\n });\n\n}).call(this);\n\n})();\n//@ sourceURL=controllers/stats");minispade.register('helpers', "(function() {(function() {\nminispade.require('helpers/handlebars');\nminispade.require('helpers/helpers');\nminispade.require('helpers/urls');\n\n}).call(this);\n\n})();\n//@ sourceURL=helpers");minispade.register('helpers/handlebars', "(function() {(function() {\n var safe;\nminispade.require('ext/ember/bound_helper');\n\n safe = function(string) {\n return new Handlebars.SafeString(string);\n };\n\n Handlebars.registerHelper('tipsy', function(text, tip) {\n return safe('
' + text + ' ');\n });\n\n Handlebars.registerHelper('t', function(key) {\n return safe(I18n.t(key));\n });\n\n Ember.registerBoundHelper('formatTime', function(value, options) {\n return safe(Travis.Helpers.timeAgoInWords(value) || '-');\n });\n\n Ember.registerBoundHelper('formatDuration', function(duration, options) {\n return safe(Travis.Helpers.timeInWords(duration));\n });\n\n Ember.registerBoundHelper('formatCommit', function(commit, options) {\n if (commit) {\n return safe(Travis.Helpers.formatCommit(commit.get('sha'), commit.get('branch')));\n }\n });\n\n Ember.registerBoundHelper('formatSha', function(sha, options) {\n return safe(Travis.Helpers.formatSha(sha));\n });\n\n Ember.registerBoundHelper('pathFrom', function(url, options) {\n return safe(Travis.Helpers.pathFrom(url));\n });\n\n Ember.registerBoundHelper('formatMessage', function(message, options) {\n return safe(Travis.Helpers.formatMessage(message, options));\n });\n\n Ember.registerBoundHelper('formatConfig', function(config, options) {\n return safe(Travis.Helpers.formatConfig(config));\n });\n\n Ember.registerBoundHelper('formatLog', function(log, options) {\n return Travis.Helpers.formatLog(log) || '';\n });\n\n}).call(this);\n\n})();\n//@ sourceURL=helpers/handlebars");minispade.register('helpers/helpers', "(function() {(function() {\nminispade.require('travis/log');\nminispade.require('emoij');\n\n this.Travis.Helpers = {\n compact: function(object) {\n var key, result, value, _ref;\n result = {};\n _ref = object || {};\n for (key in _ref) {\n value = _ref[key];\n if (!$.isEmpty(value)) {\n result[key] = value;\n }\n }\n return result;\n },\n safe: function(string) {\n return new Handlebars.SafeString(string);\n },\n colorForResult: function(result) {\n if (result === 0) {\n return 'green';\n } else {\n if (result === 1) {\n return 'red';\n } else {\n return null;\n }\n }\n },\n formatCommit: function(sha, branch) {\n return Travis.Helpers.formatSha(sha) + (branch ? \" (\" + branch + \")\" : '');\n },\n formatSha: function(sha) {\n return (sha || '').substr(0, 7);\n },\n formatConfig: function(config) {\n var values;\n config = $.only(config, 'rvm', 'gemfile', 'env', 'otp_release', 'php', 'node_js', 'scala', 'jdk', 'python', 'perl');\n values = $.map(config, function(value, key) {\n value = (value && value.join ? value.join(', ') : value) || '';\n return '%@: %@'.fmt($.camelize(key), value);\n });\n if (values.length === 0) {\n return '-';\n } else {\n return values.join(', ');\n }\n },\n formatMessage: function(message, options) {\n message = message || '';\n if (options.short) {\n message = message.split(/\\n/)[0];\n }\n return this._emojize(this._escape(message)).replace(/\\n/g, '
');\n },\n formatLog: function(log) {\n return Travis.Log.filter(log);\n },\n pathFrom: function(url) {\n return (url || '').split('/').pop();\n },\n timeAgoInWords: function(date) {\n return $.timeago.distanceInWords(date);\n },\n durationFrom: function(started, finished) {\n started = started && this._toUtc(new Date(this._normalizeDateString(started)));\n finished = finished ? this._toUtc(new Date(this._normalizeDateString(finished))) : this._nowUtc();\n if (started && finished) {\n return Math.round((finished - started) / 1000);\n } else {\n return 0;\n }\n },\n timeInWords: function(duration) {\n var days, hours, minutes, result, seconds;\n days = Math.floor(duration / 86400);\n hours = Math.floor(duration % 86400 / 3600);\n minutes = Math.floor(duration % 3600 / 60);\n seconds = duration % 60;\n if (days > 0) {\n return 'more than 24 hrs';\n } else {\n result = [];\n if (hours === 1) {\n result.push(hours + ' hr');\n }\n if (hours > 1) {\n result.push(hours + ' hrs');\n }\n if (minutes > 0) {\n result.push(minutes + ' min');\n }\n if (seconds > 0) {\n result.push(seconds + ' sec');\n }\n if (result.length > 0) {\n return result.join(' ');\n } else {\n return '-';\n }\n }\n },\n _normalizeDateString: function(string) {\n if (window.JHW) {\n string = string.replace('T', ' ').replace(/-/g, '/');\n string = string.replace('Z', '').replace(/\\..*$/, '');\n }\n return string;\n },\n _nowUtc: function() {\n return this._toUtc(new Date());\n },\n _toUtc: function(date) {\n return Date.UTC(date.getFullYear(), date.getMonth(), date.getDate(), date.getHours(), date.getMinutes(), date.getSeconds(), date.getMilliseconds());\n },\n _emojize: function(text) {\n var emojis;\n emojis = text.match(/:\\S+?:/g);\n if (emojis !== null) {\n $.each(emojis.uniq(), function(ix, emoji) {\n var image, strippedEmoji;\n strippedEmoji = emoji.substring(1, emoji.length - 1);\n if (EmojiDictionary.indexOf(strippedEmoji) !== -1) {\n image = '
';\n return text = text.replace(new RegExp(emoji, 'g'), image);\n }\n });\n }\n return text;\n },\n _escape: function(text) {\n return text.replace(/&/g, '&').replace(//g, '>');\n }\n };\n\n}).call(this);\n\n})();\n//@ sourceURL=helpers/helpers");minispade.register('helpers/urls', "(function() {(function() {\n\n this.Travis.Urls = {\n repository: function(slug) {\n return \"/\" + slug;\n },\n builds: function(slug) {\n return \"/\" + slug + \"/builds\";\n },\n pullRequests: function(slug) {\n return \"/\" + slug + \"/pull_requests\";\n },\n branches: function(slug) {\n return \"/\" + slug + \"/branches\";\n },\n build: function(slug, id) {\n return \"/\" + slug + \"/builds/\" + id;\n },\n job: function(slug, id) {\n return \"/\" + slug + \"/jobs/\" + id;\n },\n githubCommit: function(slug, sha) {\n return \"http://github.com/\" + slug + \"/commit/\" + sha;\n },\n githubRepository: function(slug) {\n return \"http://github.com/\" + slug;\n },\n githubWatchers: function(slug) {\n return \"http://github.com/\" + slug + \"/watchers\";\n },\n githubNetwork: function(slug) {\n return \"http://github.com/\" + slug + \"/network\";\n },\n githubAdmin: function(slug) {\n return \"http://github.com/\" + slug + \"/admin/hooks#travis_minibucket\";\n },\n statusImage: function(slug, branch) {\n return (\"https://secure.travis-ci.org/\" + slug + \".png\") + (branch ? \"?branch=\" + branch : '');\n },\n email: function(email) {\n return \"mailto:\" + email;\n },\n account: function(login) {\n return \"/profile/\" + login;\n },\n user: function(login) {\n return \"/profile/\" + login + \"/me\";\n }\n };\n\n}).call(this);\n\n})();\n//@ sourceURL=helpers/urls");minispade.register('models', "(function() {(function() {\nminispade.require('models/extensions');\nminispade.require('models/account');\nminispade.require('models/artifact');\nminispade.require('models/branch');\nminispade.require('models/build');\nminispade.require('models/commit');\nminispade.require('models/hook');\nminispade.require('models/job');\nminispade.require('models/repository');\nminispade.require('models/sponsor');\nminispade.require('models/user');\nminispade.require('models/worker');\n\n}).call(this);\n\n})();\n//@ sourceURL=models");minispade.register('models/account', "(function() {(function() {\nminispade.require('travis/model');\n\n this.Travis.Account = Travis.Model.extend({\n primaryKey: 'login',\n login: DS.attr('string'),\n name: DS.attr('string'),\n type: DS.attr('string'),\n reposCount: DS.attr('number'),\n urlGithub: (function() {\n return \"http://github.com/\" + (this.get('login'));\n }).property()\n });\n\n}).call(this);\n\n})();\n//@ sourceURL=models/account");minispade.register('models/artifact', "(function() {(function() {\nminispade.require('travis/model');\n\n this.Travis.Artifact = Travis.Model.extend({\n body: DS.attr('string'),\n init: function() {\n this._super.apply(this, arguments);\n return this.set('queue', Ember.A([]));\n },\n append: function(body) {\n if (this.get('isLoaded')) {\n return this.set('body', this.get('body') + body);\n } else {\n return this.get('queue').pushObject(body);\n }\n },\n recordDidLoad: (function() {\n var queue;\n if (this.get('isLoaded')) {\n queue = this.get('queue');\n if (queue.get('length') > 0) {\n return this.append(queue.toArray().join(''));\n }\n }\n }).observes('isLoaded')\n });\n\n}).call(this);\n\n})();\n//@ sourceURL=models/artifact");minispade.register('models/branch', "(function() {(function() {\nminispade.require('travis/model');\n\n this.Travis.Branch = Travis.Model.extend(Travis.Helpers, {\n repositoryId: DS.attr('number'),\n commitId: DS.attr('number'),\n number: DS.attr('number'),\n branch: DS.attr('string'),\n message: DS.attr('string'),\n result: DS.attr('number'),\n duration: DS.attr('number'),\n startedAt: DS.attr('string'),\n finishedAt: DS.attr('string'),\n commit: DS.belongsTo('Travis.Commit'),\n repository: (function() {\n if (this.get('repositoryId')) {\n return Travis.Repository.find(this.get('repositoryId'));\n }\n }).property('repositoryId'),\n updateTimes: function() {\n this.notifyPropertyChange('started_at');\n return this.notifyPropertyChange('finished_at');\n }\n });\n\n this.Travis.Branch.reopenClass({\n byRepositoryId: function(id) {\n return this.find({\n repository_id: id\n });\n }\n });\n\n}).call(this);\n\n})();\n//@ sourceURL=models/branch");minispade.register('models/build', "(function() {(function() {\nminispade.require('travis/model');\n\n this.Travis.Build = Travis.Model.extend(Travis.DurationCalculations, {\n eventType: DS.attr('string'),\n repositoryId: DS.attr('number'),\n commitId: DS.attr('number'),\n state: DS.attr('string'),\n number: DS.attr('number'),\n branch: DS.attr('string'),\n message: DS.attr('string'),\n result: DS.attr('number'),\n _duration: DS.attr('number', {\n key: 'duration'\n }),\n startedAt: DS.attr('string', {\n key: 'started_at'\n }),\n finishedAt: DS.attr('string', {\n key: 'finished_at'\n }),\n repository: DS.belongsTo('Travis.Repository'),\n commit: DS.belongsTo('Travis.Commit'),\n jobs: DS.hasMany('Travis.Job', {\n key: 'job_ids'\n }),\n config: (function() {\n return Travis.Helpers.compact(this.get('data.config'));\n }).property('data.config'),\n isMatrix: (function() {\n return this.get('data.job_ids.length') > 1;\n }).property('data.job_ids.length'),\n requiredJobs: (function() {\n return this.get('jobs').filter(function(data) {\n return !data.get('allowFailure');\n });\n }).property('jobs.@each.allowFailure'),\n allowedFailureJobs: (function() {\n return this.get('jobs').filter(function(data) {\n return data.get('allowFailure');\n });\n }).property('jobs.@each.allowFailure'),\n configKeys: (function() {\n var config, headers, key, keys;\n if (!(config = this.get('config'))) {\n return [];\n }\n keys = $.intersect($.keys(config), Travis.CONFIG_KEYS);\n headers = (function() {\n var _i, _len, _ref, _results;\n _ref = ['build.job', 'build.duration', 'build.finished_at'];\n _results = [];\n for (_i = 0, _len = _ref.length; _i < _len; _i++) {\n key = _ref[_i];\n _results.push(I18n.t(key));\n }\n return _results;\n })();\n return $.map(headers.concat(keys), function(key) {\n return $.camelize(key);\n });\n }).property('config')\n });\n\n this.Travis.Build.reopenClass({\n byRepositoryId: function(id, parameters) {\n return this.find($.extend(parameters || {}, {\n repository_id: id\n }));\n },\n olderThanNumber: function(id, build_number) {\n return this.find({\n url: \"/builds\",\n repository_id: id,\n after_number: build_number\n });\n }\n });\n\n}).call(this);\n\n})();\n//@ sourceURL=models/build");minispade.register('models/commit', "(function() {(function() {\nminispade.require('travis/model');\n\n this.Travis.Commit = Travis.Model.extend({\n buildId: DS.attr('number'),\n sha: DS.attr('string'),\n branch: DS.attr('string'),\n message: DS.attr('string'),\n compareUrl: DS.attr('string'),\n authorName: DS.attr('string'),\n authorEmail: DS.attr('string'),\n committerName: DS.attr('string'),\n committerEmail: DS.attr('string'),\n build: DS.belongsTo('Travis.Build', {\n key: 'buildId'\n })\n });\n\n}).call(this);\n\n})();\n//@ sourceURL=models/commit");minispade.register('models/extensions', "(function() {(function() {\n\n Travis.DurationCalculations = Ember.Mixin.create({\n duration: (function() {\n var duration;\n if (duration = this.get('_duration')) {\n return duration;\n } else {\n return Travis.Helpers.durationFrom(this.get('startedAt'), this.get('finishedAt'));\n }\n }).property('_duration', 'finishedAt', 'startedAt'),\n updateTimes: function() {\n this.notifyPropertyChange('_duration');\n return this.notifyPropertyChange('finished_at');\n }\n });\n\n}).call(this);\n\n})();\n//@ sourceURL=models/extensions");minispade.register('models/hook', "(function() {(function() {\nminispade.require('travis/model');\n\n this.Travis.Hook = Travis.Model.extend({\n name: DS.attr('string'),\n ownerName: DS.attr('string'),\n description: DS.attr('string'),\n active: DS.attr('boolean'),\n account: (function() {\n return this.get('slug').split('/')[0];\n }).property('slug'),\n slug: (function() {\n return \"\" + (this.get('ownerName')) + \"/\" + (this.get('name'));\n }).property('ownerName', 'name'),\n urlGithub: (function() {\n return \"http://github.com/\" + (this.get('slug'));\n }).property(),\n urlGithubAdmin: (function() {\n return \"http://github.com/\" + (this.get('slug')) + \"/admin/hooks#travis_minibucket\";\n }).property(),\n toggle: function() {\n var transaction;\n transaction = this.get('store').transaction();\n transaction.add(this);\n this.set('active', !this.get('active'));\n return transaction.commit();\n }\n });\n\n}).call(this);\n\n})();\n//@ sourceURL=models/hook");minispade.register('models/job', "(function() {(function() {\nminispade.require('travis/model');\n\n this.Travis.Job = Travis.Model.extend(Travis.DurationCalculations, {\n repositoryId: DS.attr('number'),\n buildId: DS.attr('number'),\n commitId: DS.attr('number'),\n logId: DS.attr('number'),\n queue: DS.attr('string'),\n state: DS.attr('string'),\n number: DS.attr('string'),\n result: DS.attr('number'),\n _duration: DS.attr('number', {\n key: 'duration'\n }),\n startedAt: DS.attr('string'),\n finishedAt: DS.attr('string'),\n allowFailure: DS.attr('boolean', {\n key: 'allow_failure'\n }),\n repository: DS.belongsTo('Travis.Repository', {\n key: 'repository_id'\n }),\n build: DS.belongsTo('Travis.Build', {\n key: 'build_id'\n }),\n commit: DS.belongsTo('Travis.Commit', {\n key: 'commit_id'\n }),\n log: DS.belongsTo('Travis.Artifact', {\n key: 'log_id'\n }),\n isQueued: (function() {}).property('state'),\n config: (function() {\n return Travis.Helpers.compact(this.get('data.config'));\n }).property('data.config'),\n sponsor: (function() {\n return this.get('data.sponsor');\n }).property('data.sponsor'),\n configValues: (function() {\n var config;\n if (config = this.get('config')) {\n return $.values($.only.apply(config, Travis.CONFIG_KEYS));\n } else {\n return [];\n }\n }).property('config'),\n appendLog: function(text) {\n var log;\n if (log = this.get('log')) {\n return log.append(text);\n }\n },\n subscribe: function() {\n var id;\n if (id = this.get('id')) {\n return Travis.app.pusher.subscribe(\"job-\" + id);\n }\n },\n onStateChange: (function() {\n if (this.get('state') === 'finished') {\n return Travis.app.pusher.unsubscribe(\"job-\" + (this.get('id')));\n }\n }).observes('state')\n });\n\n this.Travis.Job.reopenClass({\n queued: function(queue) {\n this.find();\n return Travis.app.store.filter(this, function(job) {\n var queued;\n queued = ['created', 'queued'].indexOf(job.get('state')) !== -1;\n return queued && job.get('queue') === (\"builds.\" + queue);\n });\n },\n findMany: function(ids) {\n return Travis.app.store.findMany(this, ids);\n }\n });\n\n}).call(this);\n\n})();\n//@ sourceURL=models/job");minispade.register('models/repository', "(function() {(function() {\nminispade.require('travis/expandable_record_array');\nminispade.require('travis/model');\n\n this.Travis.Repository = Travis.Model.extend({\n slug: DS.attr('string'),\n description: DS.attr('string'),\n lastBuildId: DS.attr('number'),\n lastBuildNumber: DS.attr('string'),\n lastBuildResult: DS.attr('number'),\n lastBuildStartedAt: DS.attr('string'),\n lastBuildFinishedAt: DS.attr('string'),\n lastBuild: DS.belongsTo('Travis.Build'),\n builds: (function() {\n var array, builds, id;\n id = this.get('id');\n builds = Travis.Build.byRepositoryId(id, {\n event_type: 'push'\n });\n array = Travis.ExpandableRecordArray.create({\n type: Travis.Build,\n content: Ember.A([]),\n store: this.get('store')\n });\n array.load(builds);\n return array;\n }).property(),\n pullRequests: (function() {\n var array, builds, id;\n id = this.get('id');\n builds = Travis.Build.byRepositoryId(id, {\n event_type: 'pull_request'\n });\n array = Travis.ExpandableRecordArray.create({\n type: Travis.Build,\n content: Ember.A([]),\n store: this.get('store')\n });\n array.load(builds);\n return array;\n }).property(),\n branches: (function() {\n return Travis.Branch.byRepositoryId(this.get('id'));\n }).property(),\n owner: (function() {\n return (this.get('slug') || '').split('/')[0];\n }).property('slug'),\n name: (function() {\n return (this.get('slug') || '').split('/')[1];\n }).property('slug'),\n lastBuildDuration: (function() {\n var duration;\n duration = this.get('data.last_build_duration');\n if (!duration) {\n duration = Travis.Helpers.durationFrom(this.get('lastBuildStartedAt'), this.get('lastBuildFinishedAt'));\n }\n return duration;\n }).property('data.last_build_duration', 'lastBuildStartedAt', 'lastBuildFinishedAt'),\n sortOrder: (function() {\n var lastBuildFinishedAt;\n if (lastBuildFinishedAt = this.get('lastBuildFinishedAt')) {\n return -new Date(lastBuildFinishedAt).getTime();\n } else {\n return -new Date('9999').getTime() - parseInt(this.get('lastBuildId'));\n }\n }).property('lastBuildFinishedAt', 'lastBuildId'),\n stats: (function() {\n var _this = this;\n return this.get('_stats') || $.get(\"https://api.github.com/repos/\" + (this.get('slug')), function(data) {\n _this.set('_stats', data);\n return _this.notifyPropertyChange('stats');\n }) && {};\n }).property(),\n select: function() {\n return Travis.Repository.select(this.get('id'));\n },\n updateTimes: function() {\n return this.notifyPropertyChange('lastBuildDuration');\n }\n });\n\n this.Travis.Repository.reopenClass({\n recent: function() {\n return this.find();\n },\n ownedBy: function(login) {\n return this.find({\n owner_name: login,\n orderBy: 'name'\n });\n },\n search: function(query) {\n return this.find({\n search: query,\n orderBy: 'name'\n });\n },\n bySlug: function(slug) {\n var repo;\n repo = $.select(this.find().toArray(), function(repo) {\n return repo.get('slug') === slug;\n });\n if (repo.length > 0) {\n return repo;\n } else {\n return this.find({\n slug: slug\n });\n }\n },\n select: function(id) {\n return this.find().forEach(function(repository) {\n return repository.set('selected', repository.get('id') === id);\n });\n }\n });\n\n}).call(this);\n\n})();\n//@ sourceURL=models/repository");minispade.register('models/sponsor', "(function() {(function() {\nminispade.require('travis/model');\n\n this.Travis.Sponsor = Travis.Model.extend({\n type: DS.attr('string'),\n url: DS.attr('string'),\n link: DS.attr('string'),\n image: (function() {\n return \"/images/sponsors/\" + (this.get('data.image'));\n }).property('data.image')\n });\n\n Travis.Sponsor.reopenClass({\n decks: function() {\n return this.platinum().concat(this.gold());\n },\n platinum: function() {\n var platinum, sponsor, _i, _len, _results;\n platinum = this.byType('platinum').toArray();\n _results = [];\n for (_i = 0, _len = platinum.length; _i < _len; _i++) {\n sponsor = platinum[_i];\n _results.push([sponsor]);\n }\n return _results;\n },\n gold: function() {\n var gold, _results;\n gold = this.byType('gold').toArray();\n _results = [];\n while (gold.length > 0) {\n _results.push(gold.splice(0, 2));\n }\n return _results;\n },\n links: function() {\n return this.byType('silver');\n },\n byType: function() {\n var types;\n types = Array.prototype.slice.apply(arguments);\n return Travis.Sponsor.filter(function(sponsor) {\n return types.indexOf(sponsor.get('type')) !== -1;\n });\n }\n });\n\n}).call(this);\n\n})();\n//@ sourceURL=models/sponsor");minispade.register('models/user', "(function() {(function() {\nminispade.require('travis/ajax');\nminispade.require('travis/model');\n\n this.Travis.User = Travis.Model.extend(Travis.Ajax, {\n name: DS.attr('string'),\n email: DS.attr('string'),\n login: DS.attr('string'),\n token: DS.attr('string'),\n locale: DS.attr('string'),\n gravatarId: DS.attr('string'),\n isSyncing: DS.attr('boolean'),\n syncedAt: DS.attr('string'),\n repoCount: DS.attr('number'),\n init: function() {\n if (this.get('isSyncing')) {\n this.poll();\n }\n this._super();\n return Ember.run.next(this, function() {\n var transaction;\n transaction = this.get('store').transaction();\n return transaction.add(this);\n });\n },\n urlGithub: (function() {\n return \"https://github.com/\" + (this.get('login'));\n }).property(),\n updateLocale: function(locale) {\n var observer, self, transaction;\n this.setWithSession('locale', locale);\n transaction = this.get('transaction');\n transaction.commit();\n self = this;\n observer = function() {\n if (!self.get('isSaving')) {\n self.removeObserver('isSaving', observer);\n transaction = self.get('store').transaction();\n return transaction.add(self);\n }\n };\n return this.addObserver('isSaving', observer);\n },\n type: (function() {\n return 'user';\n }).property(),\n sync: function() {\n this.post('/users/sync');\n this.setWithSession('isSyncing', true);\n return this.poll();\n },\n poll: function() {\n var _this = this;\n return this.ajax('/users', 'get', {\n success: function(data) {\n if (data.user.is_syncing) {\n return Ember.run.later(_this, _this.poll.bind(_this), 3000);\n } else {\n _this.set('isSyncing', false);\n return _this.setWithSession('syncedAt', data.user.synced_at);\n }\n }\n });\n },\n setWithSession: function(name, value) {\n var user;\n this.set(name, value);\n user = JSON.parse(typeof sessionStorage !== \"undefined\" && sessionStorage !== null ? sessionStorage.getItem('travis.user') : void 0);\n user[$.underscore(name)] = this.get(name);\n return typeof sessionStorage !== \"undefined\" && sessionStorage !== null ? sessionStorage.setItem('travis.user', JSON.stringify(user)) : void 0;\n }\n });\n\n}).call(this);\n\n})();\n//@ sourceURL=models/user");minispade.register('models/worker', "(function() {(function() {\nminispade.require('travis/model');\n\n this.Travis.Worker = Travis.Model.extend({\n state: DS.attr('string'),\n name: DS.attr('string'),\n host: DS.attr('string'),\n lastSeenAt: DS.attr('string'),\n payload: (function() {\n return this.get('data.payload');\n }).property('data.payload'),\n number: (function() {\n return this.get('name').match(/\\d+$/)[0];\n }).property('name'),\n isWorking: (function() {\n return this.get('state') === 'working';\n }).property('state'),\n repository: (function() {\n return Travis.Repository.find(this.get('payload.repository.id'));\n }).property('payload.repository.id'),\n job_id: (function() {\n return this.get('payload.job.id');\n }).property('payload.job.id'),\n job: (function() {\n return Travis.Job.find(this.get('job_id'));\n }).property('job_id')\n });\n\n}).call(this);\n\n})();\n//@ sourceURL=models/worker");minispade.register('pusher', "(function() {(function() {\n\n Travis.Pusher = function(config) {\n if (config) {\n this.init(config);\n }\n return this;\n };\n\n $.extend(Travis.Pusher, {\n CHANNELS: ['common'],\n CHANNEL_PREFIX: ''\n });\n\n $.extend(Travis.Pusher.prototype, {\n active_channels: [],\n init: function(config) {\n var channel, _i, _len, _ref, _results;\n Pusher.warn = this.warn.bind(this);\n this.pusher = new Pusher(config.key);\n _ref = Travis.Pusher.CHANNELS;\n _results = [];\n for (_i = 0, _len = _ref.length; _i < _len; _i++) {\n channel = _ref[_i];\n _results.push(this.subscribe(channel));\n }\n return _results;\n },\n subscribe: function(channel) {\n var _this = this;\n if (this.pusher && this.active_channels.indexOf(channel) === -1) {\n this.active_channels.push(channel);\n return this.pusher.subscribe(this.prefix(channel)).bind_all(function(event, data) {\n return _this.receive(event, data);\n });\n }\n },\n unsubscribe: function(channel) {\n var ix;\n ix = this.active_channels.indexOf(channel);\n if (this.pusher && ix === -1) {\n this.active_channels.splice(ix, 1);\n return this.pusher.unsubscribe(this.prefix(channel));\n }\n },\n prefix: function(channel) {\n return \"\" + Travis.Pusher.CHANNEL_PREFIX + channel;\n },\n receive: function(event, data) {\n if (event.substr(0, 6) === 'pusher') {\n return;\n }\n if (data.id) {\n data = this.normalize(event, data);\n }\n return Ember.run.next(function() {\n return Travis.app.store.receive(event, data);\n });\n },\n normalize: function(event, data) {\n switch (event) {\n case 'build:started':\n case 'build:finished':\n return data;\n case 'job:created':\n case 'job:started':\n case 'job:finished':\n case 'job:log':\n if (data.queue) {\n data.queue = data.queue.replace('builds.', '');\n }\n return {\n job: data\n };\n case 'worker:added':\n case 'worker:updated':\n case 'worker:removed':\n return {\n worker: data\n };\n }\n },\n warn: function(type, warning) {\n if (!this.ignoreWarning(warning)) {\n return console.warn(warning);\n }\n },\n ignoreWarning: function(warning) {\n var message, _ref;\n if (message = (_ref = warning.data) != null ? _ref.message : void 0) {\n return message.indexOf('Existing subscription') === 0 || message.indexOf('No current subscription') === 0;\n }\n }\n });\n\n}).call(this);\n\n})();\n//@ sourceURL=pusher");minispade.register('routes', "(function() {(function() {\n\n Travis.Router = Ember.Router.extend({\n location: 'history',\n enableLogging: false,\n initialState: 'loading',\n goToRoot: Ember.Route.transitionTo('root.home.show'),\n goToStats: Ember.Route.transitionTo('root.stats'),\n showRepository: Ember.Route.transitionTo('root.home.repository.show'),\n showBuilds: Ember.Route.transitionTo('root.home.repository.builds.index'),\n showBuild: Ember.Route.transitionTo('root.home.repository.builds.show'),\n showPullRequests: Ember.Route.transitionTo('root.home.repository.pullRequests'),\n showBranches: Ember.Route.transitionTo('root.home.repository.branches'),\n showJob: Ember.Route.transitionTo('root.home.repository.job'),\n showProfile: Ember.Route.transitionTo('root.profile'),\n showAccount: Ember.Route.transitionTo('root.profile.account'),\n showUserProfile: Ember.Route.transitionTo('root.profile.account.profile'),\n signedIn: function() {\n return !!Travis.app.get('auth.user');\n },\n requiresAuth: function(path) {\n return path === '/profile' && !this.signedIn();\n },\n loading: Ember.Route.extend({\n routePath: function(router, path) {\n router.set('lastAttemptedPath', path);\n if (router.requiresAuth(path)) {\n return router.send('showUnauthenticated');\n } else {\n return router.send('showAuthenticated');\n }\n }\n }),\n showUnauthenticated: Ember.State.transitionTo('root.home.show'),\n showAuthenticated: Ember.State.transitionTo('authenticated.index'),\n authenticated: Ember.Route.extend({\n index: Ember.Route.extend({\n connectOutlets: function(router) {\n var path;\n router.transitionTo('root');\n path = router.get('lastAttemptedPath');\n if (path && path !== '/') {\n return router.route(path);\n }\n }\n })\n }),\n root: Ember.Route.extend({\n initialState: 'home',\n loading: Ember.State.extend(),\n stats: Ember.Route.extend({\n route: '/stats',\n connectOutlets: function(router) {\n router.get('applicationController').connectOutlet('statsLayout');\n $('body').attr('id', 'stats');\n router.get('statsLayoutController').connectOutlet('top', 'top');\n return router.get('statsLayoutController').connectOutlet('main', 'stats');\n }\n }),\n profile: Ember.Route.extend({\n initialState: 'index',\n route: '/profile',\n connectOutlets: function(router) {\n router.get('applicationController').connectOutlet('profileLayout');\n $('body').attr('id', 'profile');\n router.get('accountsController').set('content', Travis.Account.find());\n router.get('profileLayoutController').connectOutlet('top', 'top');\n return router.get('profileLayoutController').connectOutlet('left', 'accounts');\n },\n index: Ember.Route.extend({\n route: '/',\n connectOutlets: function(router) {\n router.get('profileLayoutController').connectOutlet('main', 'profile');\n return router.get('profileController').activate('hooks');\n }\n }),\n account: Ember.Route.extend({\n initialState: 'index',\n route: '/:login',\n connectOutlets: function(router, account) {\n var params;\n if (account) {\n params = {\n login: account.get('login')\n };\n return router.get('profileController').setParams(params);\n } else {\n return router.send('showProfile');\n }\n },\n deserialize: function(router, params) {\n return router.get('accountsController').findByLogin(params.login);\n },\n serialize: function(router, account) {\n if (account) {\n return {\n login: account.get('login')\n };\n } else {\n return {};\n }\n },\n index: Ember.Route.extend({\n route: '/',\n connectOutlets: function(router) {\n return router.get('profileController').activate('hooks');\n }\n }),\n profile: Ember.Route.extend({\n route: '/profile',\n connectOutlets: function(router) {\n return router.get('profileController').activate('user');\n }\n })\n })\n }),\n home: Ember.Route.extend({\n initialState: 'show',\n route: '/',\n connectOutlets: function(router) {\n router.get('applicationController').connectOutlet('home');\n $('body').attr('id', 'home');\n router.get('homeController').connectOutlet('left', 'repositories');\n router.get('homeController').connectOutlet('right', 'sidebar');\n router.get('homeController').connectOutlet('top', 'top');\n return router.get('homeController').connectOutlet('main', 'repository');\n },\n show: Ember.Route.extend({\n route: '/',\n connectOutlets: function(router) {\n return router.get('repositoryController').activate('index');\n }\n }),\n repository: Ember.Route.extend({\n initialState: 'show',\n route: '/:owner/:name',\n connectOutlets: function(router, repository) {\n return router.get('repositoryController').set('repository', repository);\n },\n deserialize: function(router, params) {\n var deferred, observer, repos, slug;\n slug = \"\" + params.owner + \"/\" + params.name;\n repos = Travis.Repository.bySlug(slug);\n deferred = $.Deferred();\n observer = function() {\n if (repos.get('isLoaded')) {\n repos.removeObserver('isLoaded', observer);\n return deferred.resolve(repos.objectAt(0));\n }\n };\n repos.addObserver('isLoaded', observer);\n return deferred.promise();\n },\n serialize: function(router, repository) {\n if (repository) {\n return {\n owner: repository.get('owner'),\n name: repository.get('name')\n };\n } else {\n return {};\n }\n },\n show: Ember.Route.extend({\n route: '/',\n connectOutlets: function(router) {\n return router.get('repositoryController').activate('current');\n }\n }),\n builds: Ember.Route.extend({\n route: '/builds',\n initialState: 'index',\n index: Ember.Route.extend({\n route: '/',\n connectOutlets: function(router, repository) {\n return router.get('repositoryController').activate('builds');\n }\n }),\n show: Ember.Route.extend({\n route: '/:build_id',\n connectOutlets: function(router, build) {\n if (!build.get) {\n build = Travis.Build.find(build);\n }\n router.get('repositoryController').set('build', build);\n return router.get('repositoryController').activate('build');\n },\n serialize: function(router, build) {\n if (build.get) {\n return {\n build_id: build.get('id')\n };\n } else {\n return {\n build_id: build\n };\n }\n },\n deserialize: function(router, params) {\n var build, deferred, observer;\n build = Travis.Build.find(params.build_id);\n deferred = $.Deferred();\n observer = function() {\n if (build.get('id')) {\n build.removeObserver('id', observer);\n return deferred.resolve(build);\n }\n };\n build.addObserver('id', observer);\n return deferred.promise();\n }\n })\n }),\n pullRequests: Ember.Route.extend({\n route: '/pull_requests',\n connectOutlets: function(router, repository) {\n return router.get('repositoryController').activate('pull_requests');\n }\n }),\n branches: Ember.Route.extend({\n route: '/branches',\n connectOutlets: function(router, repository) {\n return router.get('repositoryController').activate('branches');\n }\n }),\n job: Ember.Route.extend({\n route: '/jobs/:job_id',\n connectOutlets: function(router, job) {\n if (!job.get) {\n job = Travis.Job.find(job);\n }\n router.get('repositoryController').set('job', job);\n return router.get('repositoryController').activate('job');\n },\n serialize: function(router, job) {\n if (job.get) {\n return {\n job_id: job.get('id')\n };\n } else {\n return {\n job_id: job\n };\n }\n },\n deserialize: function(router, params) {\n var deferred, job, observer;\n job = Travis.Job.find(params.job_id);\n deferred = $.Deferred();\n observer = function() {\n if (job.get('id')) {\n job.removeObserver('id', observer);\n return deferred.resolve(job);\n }\n };\n job.addObserver('id', observer);\n return deferred.promise();\n }\n })\n })\n })\n })\n });\n\n}).call(this);\n\n})();\n//@ sourceURL=routes");minispade.register('slider', "(function() {(function() {\n\n this.Travis.Slider = function() {\n if ((typeof localStorage !== \"undefined\" && localStorage !== null ? localStorage.getItem('travis.maximized') : void 0) === 'true') {\n this.minimize();\n }\n return this;\n };\n\n $.extend(Travis.Slider.prototype, {\n persist: function() {\n return typeof localStorage !== \"undefined\" && localStorage !== null ? localStorage.setItem('travis.maximized', this.isMinimized()) : void 0;\n },\n isMinimized: function() {\n return $('body').hasClass('maximized');\n },\n minimize: function() {\n return $('body').addClass('maximized');\n },\n toggle: function() {\n var element;\n $('body').toggleClass('maximized');\n this.persist();\n element = $('
');\n $('#top .profile').append(element);\n return Em.run.later((function() {\n return element.remove();\n }), 10);\n }\n });\n\n}).call(this);\n\n})();\n//@ sourceURL=slider");minispade.register('store', "(function() {(function() {\n var DATA_PROXY,\n __indexOf = [].indexOf || function(item) { for (var i = 0, l = this.length; i < l; i++) { if (i in this && this[i] === item) return i; } return -1; };\nminispade.require('store/rest_adapter');\n\n DATA_PROXY = {\n get: function(name) {\n return this.savedData[name];\n }\n };\n\n Travis.Store = DS.Store.extend({\n revision: 4,\n adapter: Travis.RestAdapter.create(),\n merge: function(type, id, hash) {\n var clientId, data, dataCache, primaryKey, record, recordCache, typeMap;\n if (hash === void 0) {\n hash = id;\n primaryKey = type.proto().primaryKey;\n Ember.assert(\"A data hash was loaded for a record of type \" + type.toString() + \" but no primary key '\" + primaryKey + \"' was provided.\", hash[primaryKey]);\n id = hash[primaryKey];\n }\n typeMap = this.typeMapFor(type);\n dataCache = typeMap.cidToHash;\n clientId = typeMap.idToCid[id];\n recordCache = this.get('recordCache');\n if (clientId !== void 0) {\n if (data = dataCache[clientId]) {\n $.extend(data, hash);\n } else {\n dataCache[clientId] = hash;\n }\n if (record = recordCache[clientId]) {\n record.send('didChangeData');\n }\n } else {\n clientId = this.find(type, id).get('clientId');\n }\n if (clientId) {\n DATA_PROXY.savedData = hash;\n this.updateRecordArrays(type, clientId, DATA_PROXY);\n return {\n id: id,\n clientId: clientId\n };\n }\n },\n receive: function(event, data) {\n var job, mappings, name, type, _ref;\n _ref = event.split(':'), name = _ref[0], type = _ref[1];\n mappings = this.adapter.get('mappings');\n type = mappings[name];\n if (event === 'job:log') {\n if (job = this.find(Travis.Job, data['job']['id'])) {\n return job.appendLog(data['job']['_log']);\n }\n } else if (data[type.singularName()]) {\n return this._loadOne(this, type, data);\n } else if (data[type.pluralName()]) {\n return this._loadMany(this, type, data);\n } else {\n if (!type) {\n throw \"can't load data for \" + name;\n }\n }\n },\n _loadOne: function(store, type, json) {\n var root;\n root = type.singularName();\n this.adapter.sideload(store, type, json, root);\n this.merge(type, json[root]);\n return this._updateAssociations(type, root, json[root]);\n },\n _loadMany: function(store, type, json) {\n var root;\n root = type.pluralName();\n this.adapter.sideload(store, type, json, root);\n return this.loadMany(type, json[root]);\n },\n _updateAssociations: function(type, name, data) {\n var _this = this;\n return Em.get(type, 'associationsByName').forEach(function(key, meta) {\n var clientId, dataProxy, id, ids, parent, _ref;\n if (meta.kind === 'belongsTo') {\n id = data[\"\" + key + \"_id\"];\n if (clientId = _this.typeMapFor(meta.type).idToCid[id]) {\n if (parent = _this.findByClientId(meta.type, clientId, id)) {\n dataProxy = parent.get('data');\n if (ids = dataProxy.get(\"\" + name + \"_ids\")) {\n if (_ref = data.id, __indexOf.call(ids, _ref) < 0) {\n ids.pushObject(data.id);\n }\n return parent.send('didChangeData');\n }\n }\n }\n }\n });\n }\n });\n\n}).call(this);\n\n})();\n//@ sourceURL=store");minispade.register('store/fixture_adapter', "(function() {(function() {\n\n this.Travis.FixtureAdapter = DS.Adapter.extend({\n find: function(store, type, id) {\n var fixtures;\n fixtures = type.FIXTURES;\n Ember.assert(\"Unable to find fixtures for model type \" + type.toString(), !!fixtures);\n if (fixtures.hasLoaded) {\n return;\n }\n return setTimeout((function() {\n store.loadMany(type, fixtures);\n return fixtures.hasLoaded = true;\n }), 300);\n },\n findMany: function() {\n return this.find.apply(this, arguments);\n },\n findAll: function(store, type) {\n var fixtures, ids;\n fixtures = type.FIXTURES;\n Ember.assert(\"Unable to find fixtures for model type \" + type.toString(), !!fixtures);\n ids = fixtures.map(function(item, index, self) {\n return item.id;\n });\n return store.loadMany(type, ids, fixtures);\n },\n findQuery: function(store, type, params, array) {\n var fixture, fixtures, hashes, key, matches, value;\n fixtures = type.FIXTURES;\n Ember.assert(\"Unable to find fixtures for model type \" + type.toString(), !!fixtures);\n hashes = (function() {\n var _i, _len, _results;\n _results = [];\n for (_i = 0, _len = fixtures.length; _i < _len; _i++) {\n fixture = fixtures[_i];\n matches = (function() {\n var _results1;\n _results1 = [];\n for (key in params) {\n value = params[key];\n _results1.push(key === 'orderBy' || fixture[key] === value);\n }\n return _results1;\n })();\n if (matches.reduce(function(a, b) {\n return a && b;\n })) {\n _results.push(fixture);\n } else {\n _results.push(null);\n }\n }\n return _results;\n })();\n return array.load(hashes.compact());\n }\n });\n\n}).call(this);\n\n})();\n//@ sourceURL=store/fixture_adapter");minispade.register('store/rest_adapter', "(function() {(function() {\nminispade.require('travis/ajax');\nminispade.require('models');\n\n this.Travis.RestAdapter = DS.RESTAdapter.extend(Travis.Ajax, {\n mappings: {\n repositories: Travis.Repository,\n repository: Travis.Repository,\n builds: Travis.Build,\n build: Travis.Build,\n commits: Travis.Commit,\n commit: Travis.Commit,\n jobs: Travis.Job,\n job: Travis.Job,\n account: Travis.Account,\n accounts: Travis.Account,\n worker: Travis.Worker,\n workers: Travis.Worker\n },\n plurals: {\n repository: 'repositories',\n build: 'builds',\n branch: 'branches',\n job: 'jobs',\n worker: 'workers',\n profile: 'profile'\n }\n });\n\n}).call(this);\n\n})();\n//@ sourceURL=store/rest_adapter");minispade.register('tailing', "(function() {(function() {\n\n this.Travis.Tailing = function() {\n this.position = $(window).scrollTop();\n $(window).scroll(this.onScroll.bind(this));\n return this;\n };\n\n $.extend(Travis.Tailing.prototype, {\n options: {\n timeout: 200\n },\n run: function() {\n this.autoScroll();\n this.positionButton();\n if (this.active()) {\n return Ember.run.later(this.run.bind(this), this.options.timeout);\n }\n },\n toggle: function(event) {\n if (this.active()) {\n return this.stop();\n } else {\n return this.start();\n }\n },\n active: function() {\n return $('#tail').hasClass('active');\n },\n start: function() {\n $('#tail').addClass('active');\n return this.run();\n },\n stop: function() {\n return $('#tail').removeClass('active');\n },\n autoScroll: function() {\n var log, logBottom, win, winBottom;\n if (!this.active()) {\n return;\n }\n win = $(window);\n log = $('#log');\n logBottom = log.offset().top + log.outerHeight() + 40;\n winBottom = win.scrollTop() + win.height();\n if (logBottom - winBottom > 0) {\n return win.scrollTop(logBottom - win.height());\n }\n },\n onScroll: function() {\n var position;\n this.positionButton();\n position = $(window).scrollTop();\n if (position < this.position) {\n this.stop();\n }\n return this.position = position;\n },\n positionButton: function() {\n var max, offset, tail;\n tail = $('#tail');\n if (tail.length === 0) {\n return;\n }\n offset = $(window).scrollTop() - $('#log').offset().top;\n max = $('#log').height() - $('#tail').height() + 5;\n if (offset > max) {\n offset = max;\n }\n if (offset > 0) {\n return tail.css({\n top: offset - 2\n });\n } else {\n return tail.css({\n top: 0\n });\n }\n }\n });\n\n}).call(this);\n\n})();\n//@ sourceURL=tailing");minispade.register('views', "(function() {(function() {\nminispade.require('ext/ember/namespace');\n\n this.Travis.reopen({\n View: Em.View.extend({\n popup: function(event) {\n return $(\"#\" + event.target.name).toggleClass('display');\n }\n })\n });\n\n this.Travis.reopen({\n HomeView: Travis.View.extend({\n templateName: 'layouts/home'\n }),\n ProfileLayoutView: Travis.View.extend({\n templateName: 'layouts/profile'\n }),\n StatsLayoutView: Travis.View.extend({\n templateName: 'layouts/simple'\n }),\n ApplicationView: Travis.View.extend({\n templateName: 'application'\n })\n });\nminispade.require('views/accounts');\nminispade.require('views/build');\nminispade.require('views/job');\nminispade.require('views/repo');\nminispade.require('views/profile');\nminispade.require('views/sidebar');\nminispade.require('views/stats');\nminispade.require('views/top');\n\n}).call(this);\n\n})();\n//@ sourceURL=views");minispade.register('views/accounts', "(function() {(function() {\n\n this.Travis.reopen({\n AccountsView: Travis.View.extend({\n tabBinding: 'controller.tab',\n templateName: 'profile/accounts',\n classAccounts: (function() {\n if (this.get('tab') === 'accounts') {\n return 'active';\n }\n }).property('tab')\n }),\n AccountsListView: Em.CollectionView.extend({\n elementId: 'accounts',\n accountBinding: 'content',\n tagName: 'ul',\n emptyView: Ember.View.extend({\n template: Ember.Handlebars.compile('
Loading
')\n }),\n itemViewClass: Travis.View.extend({\n accountBinding: 'content',\n typeBinding: 'content.type',\n selectedBinding: 'account.selected',\n classNames: ['account'],\n classNameBindings: ['type', 'selected'],\n name: (function() {\n return this.get('content.name') || this.get('content.login');\n }).property('content.login', 'content.name'),\n urlAccount: (function() {\n return Travis.Urls.account(this.get('account.login'));\n }).property('account.login')\n })\n })\n });\n\n}).call(this);\n\n})();\n//@ sourceURL=views/accounts");minispade.register('views/build', "(function() {(function() {\n\n this.Travis.reopen({\n BuildsView: Travis.View.extend({\n templateName: 'builds/list',\n buildsBinding: 'controller.builds',\n showMore: function() {\n var id, number;\n id = this.get('controller.repository.id');\n number = this.get('builds.lastObject.number');\n return this.get('builds').load(Travis.Build.olderThanNumber(id, number));\n },\n ShowMoreButton: Em.View.extend({\n tagName: 'button',\n classNameBindings: ['isLoading'],\n attributeBindings: ['disabled'],\n isLoadingBinding: 'controller.builds.isLoading',\n template: Em.Handlebars.compile('{{view.label}}'),\n disabledBinding: 'isLoading',\n label: (function() {\n if (this.get('isLoading')) {\n return 'Loading';\n } else {\n return 'Show more';\n }\n }).property('isLoading'),\n click: function() {\n return this.get('parentView').showMore();\n }\n })\n }),\n BuildsItemView: Travis.View.extend({\n tagName: 'tr',\n classNameBindings: ['color'],\n repositoryBinding: 'controller.repository',\n buildBinding: 'context',\n commitBinding: 'build.commit',\n color: (function() {\n return Travis.Helpers.colorForResult(this.get('build.result'));\n }).property('build.result'),\n urlBuild: (function() {\n return Travis.Urls.build(this.get('repository.slug'), this.get('build.id'));\n }).property('repository.slug', 'build.id'),\n urlGithubCommit: (function() {\n return Travis.Urls.githubCommit(this.get('repository.slug'), this.get('commit.sha'));\n }).property('repository.slug', 'commit.sha')\n }),\n BuildView: Travis.View.extend({\n templateName: 'builds/show',\n elementId: 'build',\n classNameBindings: ['color', 'loading'],\n repositoryBinding: 'controller.repository',\n buildBinding: 'controller.build',\n commitBinding: 'build.commit',\n loading: (function() {\n return !this.get('build.isLoaded');\n }).property('build.isLoaded'),\n color: (function() {\n return Travis.Helpers.colorForResult(this.get('build.result'));\n }).property('build.result'),\n urlBuild: (function() {\n return Travis.Urls.build(this.get('repository.slug'), this.get('build.id'));\n }).property('repository.slug', 'build.id'),\n urlGithubCommit: (function() {\n return Travis.Urls.githubCommit(this.get('repository.slug'), this.get('commit.sha'));\n }).property('repository.slug', 'commit.sha'),\n urlAuthor: (function() {\n return Travis.Urls.email(this.get('commit.authorEmail'));\n }).property('commit.authorEmail'),\n urlCommitter: (function() {\n return Travis.Urls.email(this.get('commit.committerEmail'));\n }).property('commit.committerEmail')\n })\n });\n\n}).call(this);\n\n})();\n//@ sourceURL=views/build");minispade.register('views/job', "(function() {(function() {\n\n this.Travis.reopen({\n JobsView: Travis.View.extend({\n templateName: 'jobs/list',\n buildBinding: 'controller.build'\n }),\n JobsItemView: Travis.View.extend({\n tagName: 'tr',\n classNameBindings: ['color'],\n repositoryBinding: 'context.repository',\n jobBinding: 'context',\n color: (function() {\n return Travis.Helpers.colorForResult(this.get('job.result'));\n }).property('job.result'),\n urlJob: (function() {\n return Travis.Urls.job(this.get('repository.slug'), this.get('job.id'));\n }).property('repository.slug', 'job.id')\n }),\n JobView: Travis.View.extend({\n templateName: 'jobs/show',\n repositoryBinding: 'controller.repository',\n jobBinding: 'controller.job',\n commitBinding: 'job.commit',\n color: (function() {\n return Travis.Helpers.colorForResult(this.get('job.result'));\n }).property('job.result'),\n urlJob: (function() {\n return Travis.Urls.job(this.get('repository.slug'), this.get('job.id'));\n }).property('repository.slug', 'job.id'),\n urlGithubCommit: (function() {\n return Travis.Urls.githubCommit(this.get('repository.slug'), this.get('commit.sha'));\n }).property('repository.slug', 'commit.sha'),\n urlAuthor: (function() {\n return Travis.Urls.email(this.get('commit.authorEmail'));\n }).property('commit.authorEmail'),\n urlCommitter: (function() {\n return Travis.Urls.email(this.get('commit.committerEmail'));\n }).property('commit.committerEmail')\n }),\n LogView: Travis.View.extend({\n templateName: 'jobs/log',\n logBinding: 'job.log',\n click: function(event) {\n return $(event.target).closest('.fold').toggleClass('open');\n },\n toTop: function() {\n return $(window).scrollTop(0);\n },\n jobBinding: 'context',\n toggleTailing: function(event) {\n Travis.app.tailing.toggle();\n return event.preventDefault();\n },\n logSubscriber: (function() {\n var job, state;\n job = this.get('job');\n state = this.get('job.state');\n if (job && state !== 'finished') {\n job.subscribe();\n }\n return null;\n }).property('job', 'job.state')\n })\n });\n\n}).call(this);\n\n})();\n//@ sourceURL=views/job");minispade.register('views/left', "(function() {(function() {\n\n this.Travis.reopen({\n ReposView: Travis.View.extend({\n templateName: 'repos/list',\n tabBinding: 'controller.tab',\n classRecent: (function() {\n if (this.get('tab') === 'recent') {\n return 'active';\n }\n }).property('tab'),\n classOwned: (function() {\n var classes;\n classes = [];\n if (this.get('tab') === 'owned') {\n classes.push('active');\n }\n if (Travis.app.get('currentUser')) {\n classes.push('display');\n }\n return classes.join(' ');\n }).property('tab', 'Travis.currentUser'),\n classSearch: (function() {\n if (this.get('tab') === 'search') {\n return 'active';\n }\n }).property('tab')\n })\n });\n\n}).call(this);\n\n})();\n//@ sourceURL=views/left");minispade.register('views/profile', "(function() {(function() {\n\n this.Travis.reopen({\n ProfileView: Travis.View.extend({\n templateName: 'profile/show',\n accountBinding: 'controller.account',\n name: (function() {\n return this.get('account.name') || this.get('account.login');\n }).property('account.name', 'account.login')\n }),\n ProfileTabsView: Travis.View.extend({\n templateName: 'profile/tabs',\n tabBinding: 'controller.tab',\n activate: function(event) {\n return this.get('controller').activate(event.target.name);\n },\n classHooks: (function() {\n if (this.get('tab') === 'hooks') {\n return 'active';\n }\n }).property('tab'),\n classUser: (function() {\n if (this.get('tab') === 'user') {\n return 'active';\n }\n }).property('tab'),\n accountBinding: 'controller.account',\n displayUser: (function() {\n return this.get('controller.account.login') === this.get('controller.user.login');\n }).property('controller.account.login', 'controller.user.login')\n }),\n HooksView: Travis.View.extend({\n templateName: 'profile/tabs/hooks',\n userBinding: 'controller.user',\n urlGithubAdmin: (function() {\n return Travis.Urls.githubAdmin(this.get('hook.slug'));\n }).property('hook.slug')\n }),\n UserView: Travis.View.extend({\n templateName: 'profile/tabs/user',\n userBinding: 'controller.user',\n gravatarUrl: (function() {\n return \"\" + location.protocol + \"//www.gravatar.com/avatar/\" + (this.get('user.gravatarId')) + \"?s=48&d=mm\";\n }).property('user.gravatarId'),\n locales: (function() {\n return [\n {\n key: null,\n name: ''\n }, {\n key: 'en',\n name: 'English'\n }, {\n key: 'ca',\n name: 'Catalan'\n }, {\n key: 'cs',\n name: 'Čeština'\n }, {\n key: 'es',\n name: 'Español'\n }, {\n key: 'fr',\n name: 'Français'\n }, {\n key: 'ja',\n name: '日本語'\n }, {\n key: 'nl',\n name: 'Nederlands'\n }, {\n key: 'nb',\n name: 'Norsk Bokmål'\n }, {\n key: 'pl',\n name: 'Polski'\n }, {\n key: {\n 'pt-BR': {\n name: 'Português brasileiro'\n }\n }\n }, {\n key: 'ru',\n name: 'Русский'\n }\n ];\n }).property(),\n saveLocale: function(event) {\n return this.get('user').updateLocale($('#locale').val());\n }\n })\n });\n\n}).call(this);\n\n})();\n//@ sourceURL=views/profile");minispade.register('views/repo', "(function() {(function() {\nminispade.require('views/repo/list');\nminispade.require('views/repo/show');\n\n}).call(this);\n\n})();\n//@ sourceURL=views/repo");minispade.register('views/repo/list', "(function() {(function() {\n\n this.Travis.reopen({\n RepositoriesView: Travis.View.extend({\n templateName: 'repos/list',\n toggleInfo: function(event) {\n return $('#repositories').toggleClass('open');\n }\n }),\n RepositoriesListView: Em.CollectionView.extend({\n elementId: 'repositories',\n tagName: 'ul',\n emptyView: Ember.View.extend({\n template: Ember.Handlebars.compile('
Loading
')\n }),\n itemViewClass: Travis.View.extend({\n repositoryBinding: 'content',\n classNames: ['repository'],\n classNameBindings: ['color', 'selected'],\n selectedBinding: 'repository.selected',\n color: (function() {\n return Travis.Helpers.colorForResult(this.get('repository.lastBuildResult'));\n }).property('repository.lastBuildResult'),\n urlRepository: (function() {\n return Travis.Urls.repository(this.get('repository.slug'));\n }).property('repository.slug'),\n urlLastBuild: (function() {\n return Travis.Urls.build(this.get('repository.slug'), this.get('repository.lastBuildId'));\n }).property('repository.slug', 'repository.lastBuildId')\n })\n }),\n ReposListTabsView: Travis.View.extend({\n templateName: 'repos/list/tabs',\n tabBinding: 'controller.tab',\n activate: function(event) {\n return this.get('controller').activate(event.target.name);\n },\n classRecent: (function() {\n if (this.get('tab') === 'recent') {\n return 'active';\n }\n }).property('tab'),\n classOwned: (function() {\n var classes;\n classes = [];\n if (this.get('tab') === 'owned') {\n classes.push('active');\n }\n if (Travis.app.get('currentUser')) {\n classes.push('display-inline');\n }\n return classes.join(' ');\n }).property('tab', 'Travis.app.currentUser'),\n classSearch: (function() {\n if (this.get('tab') === 'search') {\n return 'active';\n }\n }).property('tab')\n })\n });\n\n}).call(this);\n\n})();\n//@ sourceURL=views/repo/list");minispade.register('views/repo/show', "(function() {(function() {\n\n this.Travis.reopen({\n RepositoryView: Travis.View.extend({\n templateName: 'repos/show',\n repositoryBinding: 'controller.repository',\n \"class\": (function() {\n if (!this.get('repository.isLoaded')) {\n return 'loading';\n }\n }).property('repository.isLoaded'),\n urlGithub: (function() {\n return Travis.Urls.githubRepository(this.get('repository.slug'));\n }).property('repository.slug'),\n urlGithubWatchers: (function() {\n return Travis.Urls.githubWatchers(this.get('repository.slug'));\n }).property('repository.slug'),\n urlGithubNetwork: (function() {\n return Travis.Urls.githubNetwork(this.get('repository.slug'));\n }).property('repository.slug')\n }),\n RepoShowTabsView: Travis.View.extend({\n templateName: 'repos/show/tabs',\n repositoryBinding: 'controller.repository',\n buildBinding: 'controller.build',\n jobBinding: 'controller.job',\n tabBinding: 'controller.tab',\n classCurrent: (function() {\n if (this.get('tab') === 'current') {\n return 'active';\n }\n }).property('tab'),\n classBuilds: (function() {\n if (this.get('tab') === 'builds') {\n return 'active';\n }\n }).property('tab'),\n classPullRequests: (function() {\n if (this.get('tab') === 'pull_requests') {\n return 'active';\n }\n }).property('tab'),\n classBranches: (function() {\n if (this.get('tab') === 'branches') {\n return 'active';\n }\n }).property('tab'),\n classBuild: (function() {\n var classes, tab;\n tab = this.get('tab');\n classes = [];\n if (tab === 'build') {\n classes.push('active');\n }\n if (tab === 'build' || tab === 'job') {\n classes.push('display-inline');\n }\n return classes.join(' ');\n }).property('tab'),\n classJob: (function() {\n if (this.get('tab') === 'job') {\n return 'active display-inline';\n }\n }).property('tab')\n }),\n RepoShowToolsView: Travis.View.extend({\n templateName: 'repos/show/tools',\n repositoryBinding: 'controller.repository',\n buildBinding: 'controller.build',\n jobBinding: 'controller.job',\n tabBinding: 'controller.tab',\n toggle: function() {\n var element;\n element = $('#tools .pane').toggleClass('display-inline');\n return this.set('active', element.hasClass('display-inline'));\n },\n branches: (function() {\n if (this.get('active')) {\n return this.get('repository.branches');\n }\n }).property('active', 'repository.branches'),\n urlRepository: (function() {\n return 'https://' + location.host + Travis.Urls.repository(this.get('repository.slug'));\n }).property('repository.slug'),\n urlStatusImage: (function() {\n return Travis.Urls.statusImage(this.get('repository.slug'), this.get('branch.commit.branch'));\n }).property('repository.slug', 'branch'),\n markdownStatusImage: (function() {\n return \"[) + \")](\" + (this.get('urlRepository')) + \")\";\n }).property('urlStatusImage'),\n textileStatusImage: (function() {\n return \"!\" + (this.get('urlStatusImage')) + \"!:\" + (this.get('urlRepository'));\n }).property('urlStatusImage'),\n rdocStatusImage: (function() {\n return \"{
}[\" + (this.get('urlRepository')) + \"]\";\n }).property('urlStatusImage')\n })\n });\n\n}).call(this);\n\n})();\n//@ sourceURL=views/repo/show");minispade.register('views/sidebar', "(function() {(function() {\n\n this.Travis.reopen({\n SidebarView: Travis.View.extend({\n templateName: 'layouts/sidebar',\n DecksView: Em.View.extend({\n templateName: \"sponsors/decks\",\n controller: Travis.SponsorsController.create({\n perPage: 1\n }),\n didInsertElement: function() {\n var controller;\n controller = this.get('controller');\n if (!controller.get('content')) {\n Travis.app.get('router.sidebarController').tickables.push(controller);\n controller.set('content', Travis.Sponsor.decks());\n }\n return this._super.apply(this, arguments);\n }\n }),\n LinksView: Em.View.extend({\n templateName: \"sponsors/links\",\n controller: Travis.SponsorsController.create({\n perPage: 6\n }),\n didInsertElement: function() {\n var controller;\n controller = this.get('controller');\n if (!controller.get('content')) {\n controller.set('content', Travis.Sponsor.links());\n Travis.app.get('router.sidebarController').tickables.push(controller);\n }\n return this._super.apply(this, arguments);\n }\n }),\n WorkersView: Em.View.extend({\n templateName: 'workers/list',\n controller: Travis.WorkersController.create(),\n didInsertElement: function() {\n this.set('controller.content', Travis.Worker.find());\n return this._super.apply(this, arguments);\n }\n }),\n QueuesView: Em.View.extend({\n templateName: 'queues/list',\n controller: Travis.QueuesController.create(),\n didInsertElement: function() {\n var queue, queues;\n queues = (function() {\n var _i, _len, _ref, _results;\n _ref = Travis.QUEUES;\n _results = [];\n for (_i = 0, _len = _ref.length; _i < _len; _i++) {\n queue = _ref[_i];\n _results.push(Em.ArrayController.create({\n content: Travis.Job.queued(queue.name),\n id: \"queue_\" + queue.name,\n name: queue.display\n }));\n }\n return _results;\n })();\n this.set('controller.content', queues);\n return this._super.apply(this, arguments);\n }\n })\n }),\n WorkersView: Travis.View.extend({\n toggleWorkers: function(event) {\n var handle;\n handle = $(event.target).toggleClass('open');\n if (handle.hasClass('open')) {\n return $('#workers li').addClass('open');\n } else {\n return $('#workers li').removeClass('open');\n }\n }\n }),\n WorkersListView: Travis.View.extend({\n toggle: function(event) {\n return $(event.target).closest('li').toggleClass('open');\n }\n }),\n WorkersItemView: Travis.View.extend({\n display: (function() {\n var name, number, payload, repo, state;\n name = (this.get('worker.name') || '').replace('travis-', '');\n state = this.get('worker.state');\n payload = this.get('worker.payload');\n if (state === 'working' && payload !== void 0) {\n repo = payload.repository.slug;\n number = ' #' + payload.build.number;\n return (\"
\" + name + \": \" + repo + \" \" + number).htmlSafe();\n } else {\n return \"\" + name + \": \" + state;\n }\n }).property('worker.state')\n }),\n QueueItemView: Travis.View.extend({\n tagName: 'li',\n urlJob: (function() {\n return Travis.Urls.job(this.get('job.repository.slug'), this.get('job.id'));\n }).property('job.repository.slug', 'job.id')\n })\n });\n\n}).call(this);\n\n})();\n//@ sourceURL=views/sidebar");minispade.register('views/stats', "(function() {(function() {\n\n this.Travis.reopen({\n StatsView: Travis.View.extend({\n templateName: 'stats/show',\n didInsertElement: function() {},\n renderChart: function(config) {\n var chart;\n chart = new Highcharts.Chart(config);\n return this.fetch(config.source, function(data) {\n var stats;\n stats = (function() {\n var _i, _len, _ref, _results;\n _ref = data.stats;\n _results = [];\n for (_i = 0, _len = _ref.length; _i < _len; _i++) {\n stats = _ref[_i];\n _results.push(config.map(stats));\n }\n return _results;\n })();\n return chart.series[0].setData(stats);\n });\n },\n fetch: function(url, callback) {\n return $.ajax({\n type: 'GET',\n url: url,\n accepts: {\n json: 'application/vnd.travis-ci.2+json'\n },\n success: callback\n });\n },\n CHARTS: {\n repos: {\n source: '/api/stats/repos',\n total: 0,\n map: function(data) {\n return [Date.parse(data.date), this.total += parseInt(data.count)];\n },\n chart: {\n renderTo: \"repos_stats\"\n },\n title: {\n text: \"Total Projects/Repositories\"\n },\n xAxis: {\n type: \"datetime\",\n dateTimeLabelFormats: {\n month: \"%e. %b\",\n year: \"%b\"\n }\n },\n yAxis: {\n title: {\n text: \"Count\"\n },\n min: 0\n },\n tooltip: {\n formatter: function() {\n return Highcharts.dateFormat(\"%e. %b\", this.x) + \": \" + this.y + \" repos\";\n }\n },\n series: [\n {\n name: \"Repository Growth\",\n data: []\n }\n ]\n },\n builds: {\n source: '/api/stats/tests',\n map: function(data) {\n return [Date.parse(data.date), parseInt(data.count)];\n },\n chart: {\n renderTo: \"tests_stats\",\n type: \"column\"\n },\n title: {\n text: \"Build Count\"\n },\n subtitle: {\n text: \"last month\"\n },\n xAxis: {\n type: \"datetime\",\n dateTimeLabelFormats: {\n month: \"%e. %b\",\n year: \"%b\"\n }\n },\n yAxis: {\n title: {\n text: \"Count\"\n },\n min: 0\n },\n tooltip: {\n formatter: function() {\n return Highcharts.dateFormat(\"%e. %b\", this.x) + \": \" + this.y + \" builds\";\n }\n },\n series: [\n {\n name: \"Total Builds\",\n data: []\n }\n ]\n }\n }\n })\n });\n\n}).call(this);\n\n})();\n//@ sourceURL=views/stats");minispade.register('views/top', "(function() {(function() {\n\n this.Travis.reopen({\n TopView: Travis.View.extend({\n templateName: 'layouts/top',\n tabBinding: 'controller.tab',\n userBinding: 'controller.user',\n gravatarUrl: (function() {\n return \"\" + location.protocol + \"//www.gravatar.com/avatar/\" + (this.get('user.gravatarId')) + \"?s=24&d=mm\";\n }).property('user.gravatarId'),\n classHome: (function() {\n if (this.get('tab') === 'home') {\n return 'active';\n }\n }).property('tab'),\n classStats: (function() {\n if (this.get('tab') === 'stats') {\n return 'active';\n }\n }).property('tab'),\n classProfile: (function() {\n var classes;\n classes = ['profile'];\n if (this.get('tab') === 'profile') {\n classes.push('active');\n }\n classes.push(Travis.app.get('authState'));\n return classes.join(' ');\n }).property('tab', 'Travis.app.authState'),\n showProfile: function() {\n return $('#top .profile ul').show();\n },\n hideProfile: function() {\n return $('#top .profile ul').hide();\n }\n })\n });\n\n}).call(this);\n\n})();\n//@ sourceURL=views/top");minispade.register('data/sponsors', "(function() {(function() {\n\n this.Travis.SPONSORS = [\n {\n type: 'platinum',\n url: \"http://www.wooga.com\",\n image: \"wooga-205x130.png\"\n }, {\n type: 'platinum',\n url: \"http://bendyworks.com\",\n image: \"bendyworks-205x130.png\"\n }, {\n type: 'platinum',\n url: \"http://cloudcontrol.com\",\n image: \"cloudcontrol-205x130.png\"\n }, {\n type: 'platinum',\n url: \"http://xing.de\",\n image: \"xing-205x130.png\"\n }, {\n type: 'gold',\n url: \"http://heroku.com\",\n image: \"heroku-205x60.png\"\n }, {\n type: 'gold',\n url: \"http://soundcloud.com\",\n image: \"soundcloud-205x60.png\"\n }, {\n type: 'gold',\n url: \"http://nedap.com\",\n image: \"nedap-205x60.png\"\n }, {\n type: 'gold',\n url: \"http://mongohq.com\",\n image: \"mongohq-205x60.png\"\n }, {\n type: 'gold',\n url: \"http://zweitag.de\",\n image: \"zweitag-205x60.png\"\n }, {\n type: 'gold',\n url: \"http://kanbanery.com\",\n image: \"kanbanery-205x60.png\"\n }, {\n type: 'gold',\n url: \"http://ticketevolution.com\",\n image: \"ticketevolution-205x60.jpg\"\n }, {\n type: 'gold',\n url: \"http://plan.io/travis\",\n image: \"planio-205x60.png\"\n }, {\n type: 'silver',\n link: \"
Cobot : The one tool to run your coworking space \"\n }, {\n type: 'silver',\n link: \"
JumpstartLab : We build developers \"\n }, {\n type: 'silver',\n link: \"
Evil Martians : Agile Ruby on Rails development \"\n }, {\n type: 'silver',\n link: \"
Zendesk : Love your helpdesk \"\n }, {\n type: 'silver',\n link: \"
Stripe : Payments for developers \"\n }, {\n type: 'silver',\n link: \"
Basho : We make Riak! \"\n }, {\n type: 'silver',\n link: \"
Relevance : We deliver software solutions \"\n }, {\n type: 'silver',\n link: \"
Mindmatters : Software für Menschen \"\n }, {\n type: 'silver',\n link: \"
Amen : The best and worst of everything \"\n }, {\n type: 'silver',\n link: \"
Site5 : Premium Web Hosting Solutions \"\n }, {\n type: 'silver',\n link: \"
Crowd Interactive : Leading Rails consultancy in Mexico \"\n }, {\n type: 'silver',\n link: \"
Atomic Object : Work with really smart people \"\n }, {\n type: 'silver',\n link: \"
Codeminer : smart services for your startup \"\n }, {\n type: 'silver',\n link: \"
Cloudant : grow into your data layer, not out of it \"\n }, {\n type: 'silver',\n link: \"
Gidsy : Explore, organize & book unique things to do! \"\n }, {\n type: 'silver',\n link: \"
5apps : Package & deploy HTML5 apps automatically \"\n }, {\n type: 'silver',\n link: \"
Meltmedia : We are Interactive Superheroes \"\n }, {\n type: 'silver',\n link: \"
Fingertips offers design and development services \"\n }, {\n type: 'silver',\n link: \"
Engine Yard : Build epic apps, let us handle the rest \"\n }, {\n type: 'silver',\n link: \"
Malwarebytes : Defeat Malware once and for all. \"\n }, {\n type: 'silver',\n link: \"
Readmill : The best reading app on the iPad. \"\n }, {\n type: 'silver',\n link: \"
Medidata : clinical tech improving quality of life \"\n }, {\n type: 'silver',\n link: \"
ESM : Japan's best agile Ruby/Rails consultancy \"\n }, {\n type: 'silver',\n link: \"
Twitter : instantly connects people everywhere \"\n }, {\n type: 'silver',\n link: \"
AGiLE ANiMAL : we <3 Travis CI. \"\n }, {\n type: 'silver',\n link: \"
Tupalo : Discover, review & share local businesses. \"\n }\n ];\n\n}).call(this);\n\n})();\n//@ sourceURL=data/sponsors");minispade.register('emoij', "(function() {(function() {\n\n this.EmojiDictionary = ['-1', '0', '1', '109', '2', '3', '4', '5', '6', '7', '8', '8ball', '9', 'a', 'ab', 'airplane', 'alien', 'ambulance', 'angel', 'anger', 'angry', 'apple', 'aquarius', 'aries', 'arrow_backward', 'arrow_down', 'arrow_forward', 'arrow_left', 'arrow_lower_left', 'arrow_lower_right', 'arrow_right', 'arrow_up', 'arrow_upper_left', 'arrow_upper_right', 'art', 'astonished', 'atm', 'b', 'baby', 'baby_chick', 'baby_symbol', 'balloon', 'bamboo', 'bank', 'barber', 'baseball', 'basketball', 'bath', 'bear', 'beer', 'beers', 'beginner', 'bell', 'bento', 'bike', 'bikini', 'bird', 'birthday', 'black_square', 'blue_car', 'blue_heart', 'blush', 'boar', 'boat', 'bomb', 'book', 'boot', 'bouquet', 'bow', 'bowtie', 'boy', 'bread', 'briefcase', 'broken_heart', 'bug', 'bulb', 'bullettrain_front', 'bullettrain_side', 'bus', 'busstop', 'cactus', 'cake', 'calling', 'camel', 'camera', 'cancer', 'capricorn', 'car', 'cat', 'cd', 'chart', 'checkered_flag', 'cherry_blossom', 'chicken', 'christmas_tree', 'church', 'cinema', 'city_sunrise', 'city_sunset', 'clap', 'clapper', 'clock1', 'clock10', 'clock11', 'clock12', 'clock2', 'clock3', 'clock4', 'clock5', 'clock6', 'clock7', 'clock8', 'clock9', 'closed_umbrella', 'cloud', 'clubs', 'cn', 'cocktail', 'coffee', 'cold_sweat', 'computer', 'confounded', 'congratulations', 'construction', 'construction_worker', 'convenience_store', 'cool', 'cop', 'copyright', 'couple', 'couple_with_heart', 'couplekiss', 'cow', 'crossed_flags', 'crown', 'cry', 'cupid', 'currency_exchange', 'curry', 'cyclone', 'dancer', 'dancers', 'dango', 'dart', 'dash', 'de', 'department_store', 'diamonds', 'disappointed', 'dog', 'dolls', 'dolphin', 'dress', 'dvd', 'ear', 'ear_of_rice', 'egg', 'eggplant', 'egplant', 'eight_pointed_black_star', 'eight_spoked_asterisk', 'elephant', 'email', 'es', 'european_castle', 'exclamation', 'eyes', 'factory', 'fallen_leaf', 'fast_forward', 'fax', 'fearful', 'feelsgood', 'feet', 'ferris_wheel', 'finnadie', 'fire', 'fire_engine', 'fireworks', 'fish', 'fist', 'flags', 'flushed', 'football', 'fork_and_knife', 'fountain', 'four_leaf_clover', 'fr', 'fries', 'frog', 'fuelpump', 'gb', 'gem', 'gemini', 'ghost', 'gift', 'gift_heart', 'girl', 'goberserk', 'godmode', 'golf', 'green_heart', 'grey_exclamation', 'grey_question', 'grin', 'guardsman', 'guitar', 'gun', 'haircut', 'hamburger', 'hammer', 'hamster', 'hand', 'handbag', 'hankey', 'hash', 'headphones', 'heart', 'heart_decoration', 'heart_eyes', 'heartbeat', 'heartpulse', 'hearts', 'hibiscus', 'high_heel', 'horse', 'hospital', 'hotel', 'hotsprings', 'house', 'hurtrealbad', 'icecream', 'id', 'ideograph_advantage', 'imp', 'information_desk_person', 'iphone', 'it', 'jack_o_lantern', 'japanese_castle', 'joy', 'jp', 'key', 'kimono', 'kiss', 'kissing_face', 'kissing_heart', 'koala', 'koko', 'kr', 'leaves', 'leo', 'libra', 'lips', 'lipstick', 'lock', 'loop', 'loudspeaker', 'love_hotel', 'mag', 'mahjong', 'mailbox', 'man', 'man_with_gua_pi_mao', 'man_with_turban', 'maple_leaf', 'mask', 'massage', 'mega', 'memo', 'mens', 'metal', 'metro', 'microphone', 'minidisc', 'mobile_phone_off', 'moneybag', 'monkey', 'monkey_face', 'moon', 'mortar_board', 'mount_fuji', 'mouse', 'movie_camera', 'muscle', 'musical_note', 'nail_care', 'necktie', 'new', 'no_good', 'no_smoking', 'nose', 'notes', 'o', 'o2', 'ocean', 'octocat', 'octopus', 'oden', 'office', 'ok', 'ok_hand', 'ok_woman', 'older_man', 'older_woman', 'open_hands', 'ophiuchus', 'palm_tree', 'parking', 'part_alternation_mark', 'pencil', 'penguin', 'pensive', 'persevere', 'person_with_blond_hair', 'phone', 'pig', 'pill', 'pisces', 'plus1', 'point_down', 'point_left', 'point_right', 'point_up', 'point_up_2', 'police_car', 'poop', 'post_office', 'postbox', 'pray', 'princess', 'punch', 'purple_heart', 'question', 'rabbit', 'racehorse', 'radio', 'rage', 'rage1', 'rage2', 'rage3', 'rage4', 'rainbow', 'raised_hands', 'ramen', 'red_car', 'red_circle', 'registered', 'relaxed', 'relieved', 'restroom', 'rewind', 'ribbon', 'rice', 'rice_ball', 'rice_cracker', 'rice_scene', 'ring', 'rocket', 'roller_coaster', 'rose', 'ru', 'runner', 'sa', 'sagittarius', 'sailboat', 'sake', 'sandal', 'santa', 'satellite', 'satisfied', 'saxophone', 'school', 'school_satchel', 'scissors', 'scorpius', 'scream', 'seat', 'secret', 'shaved_ice', 'sheep', 'shell', 'ship', 'shipit', 'shirt', 'shit', 'shoe', 'signal_strength', 'six_pointed_star', 'ski', 'skull', 'sleepy', 'slot_machine', 'smile', 'smiley', 'smirk', 'smoking', 'snake', 'snowman', 'sob', 'soccer', 'space_invader', 'spades', 'spaghetti', 'sparkler', 'sparkles', 'speaker', 'speedboat', 'squirrel', 'star', 'star2', 'stars', 'station', 'statue_of_liberty', 'stew', 'strawberry', 'sunflower', 'sunny', 'sunrise', 'sunrise_over_mountains', 'surfer', 'sushi', 'suspect', 'sweat', 'sweat_drops', 'swimmer', 'syringe', 'tada', 'tangerine', 'taurus', 'taxi', 'tea', 'telephone', 'tennis', 'tent', 'thumbsdown', 'thumbsup', 'ticket', 'tiger', 'tm', 'toilet', 'tokyo_tower', 'tomato', 'tongue', 'top', 'tophat', 'traffic_light', 'train', 'trident', 'trophy', 'tropical_fish', 'truck', 'trumpet', 'tshirt', 'tulip', 'tv', 'u5272', 'u55b6', 'u6307', 'u6708', 'u6709', 'u6e80', 'u7121', 'u7533', 'u7a7a', 'umbrella', 'unamused', 'underage', 'unlock', 'up', 'us', 'v', 'vhs', 'vibration_mode', 'virgo', 'vs', 'walking', 'warning', 'watermelon', 'wave', 'wc', 'wedding', 'whale', 'wheelchair', 'white_square', 'wind_chime', 'wink', 'wink2', 'wolf', 'woman', 'womans_hat', 'womens', 'x', 'yellow_heart', 'zap', 'zzz'];\n\n}).call(this);\n\n})();\n//@ sourceURL=emoij");minispade.register('ext/jquery', "(function() {(function() {\n\n $.fn.extend({\n outerHtml: function() {\n return $(this).wrap('
').parent().html();\n },\n outerElement: function() {\n return $($(this).outerHtml()).empty();\n },\n flash: function() {\n return Utils.flash(this);\n },\n unflash: function() {\n return Utils.unflash(this);\n },\n filterLog: function() {\n this.deansi();\n return this.foldLog();\n },\n deansi: function() {\n return this.html(Utils.deansi(this.html()));\n },\n foldLog: function() {\n return this.html(Utils.foldLog(this.html()));\n },\n unfoldLog: function() {\n return this.html(Utils.unfoldLog(this.html()));\n },\n updateTimes: function() {\n return Utils.updateTimes(this);\n },\n activateTab: function(tab) {\n return Utils.activateTab(this, tab);\n },\n timeInWords: function() {\n return $(this).each(function() {\n return $(this).text(Utils.timeInWords(parseInt($(this).attr('title'))));\n });\n },\n updateGithubStats: function(repository) {\n return Utils.updateGithubStats(repository, $(this));\n }\n });\n\n $.extend({\n isEmpty: function(obj) {\n if ($.isArray(obj)) {\n return !obj.length;\n } else if ($.isObject(obj)) {\n return !$.keys(obj).length;\n } else {\n return !obj;\n }\n },\n isObject: function(obj) {\n return Object.prototype.toString.call(obj) === '[object Object]';\n },\n keys: function(obj) {\n var keys;\n keys = [];\n $.each(obj, function(key) {\n return keys.push(key);\n });\n return keys;\n },\n values: function(obj) {\n var values;\n values = [];\n $.each(obj, function(key, value) {\n return values.push(value);\n });\n return values;\n },\n underscore: function(string) {\n return string[0].toLowerCase() + string.substring(1).replace(/([A-Z])?/g, function(match, chr) {\n if (chr) {\n return \"_\" + (chr.toUpperCase());\n } else {\n return '';\n }\n });\n },\n camelize: function(string, uppercase) {\n string = uppercase === false ? $.underscore(string) : $.capitalize(string);\n return string.replace(/_(.)?/g, function(match, chr) {\n if (chr) {\n return chr.toUpperCase();\n } else {\n return '';\n }\n });\n },\n capitalize: function(string) {\n return string[0].toUpperCase() + string.substring(1);\n },\n compact: function(object) {\n return $.grep(object, function(value) {\n return !!value;\n });\n },\n all: function(array, callback) {\n var args, i;\n args = Array.prototype.slice.apply(arguments);\n callback = args.pop();\n array = args.pop() || this;\n i = 0;\n while (i < array.length) {\n if (callback(array[i])) {\n return false;\n }\n i++;\n }\n return true;\n },\n detect: function(array, callback) {\n var args, i;\n args = Array.prototype.slice.apply(arguments);\n callback = args.pop();\n array = args.pop() || this;\n i = 0;\n while (i < array.length) {\n if (callback(array[i])) {\n return array[i];\n }\n i++;\n }\n },\n select: function(array, callback) {\n var args, i, result;\n args = Array.prototype.slice.apply(arguments);\n callback = args.pop();\n array = args.pop() || this;\n result = [];\n i = 0;\n while (i < array.length) {\n if (callback(array[i])) {\n result.push(array[i]);\n }\n i++;\n }\n return result;\n },\n slice: function(object, key) {\n var keys, result;\n keys = Array.prototype.slice.apply(arguments);\n object = (typeof keys[0] === 'object' ? keys.shift() : this);\n result = {};\n for (key in object) {\n if (keys.indexOf(key) > -1) {\n result[key] = object[key];\n }\n }\n return result;\n },\n only: function(object) {\n var key, keys, result;\n keys = Array.prototype.slice.apply(arguments);\n object = (typeof keys[0] === 'object' ? keys.shift() : this);\n result = {};\n for (key in object) {\n if (keys.indexOf(key) !== -1) {\n result[key] = object[key];\n }\n }\n return result;\n },\n except: function(object) {\n var key, keys, result;\n keys = Array.prototype.slice.apply(arguments);\n object = (typeof keys[0] === 'object' ? keys.shift() : this);\n result = {};\n for (key in object) {\n if (keys.indexOf(key) === -1) {\n result[key] = object[key];\n }\n }\n return result;\n },\n intersect: function(array, other) {\n return array.filter(function(element) {\n return other.indexOf(element) !== -1;\n });\n },\n map: function(elems, callback, arg) {\n var i, isArray, key, length, ret, value;\n value = void 0;\n key = void 0;\n ret = [];\n i = 0;\n length = elems.length;\n isArray = elems instanceof jQuery || length !== void 0 && typeof length === 'number' && (length > 0 && elems[0] && elems[length - 1]) || length === 0 || jQuery.isArray(elems);\n if (isArray) {\n while (i < length) {\n value = callback(elems[i], i, arg);\n if (value != null) {\n ret[ret.length] = value;\n }\n i++;\n }\n } else {\n for (key in elems) {\n value = callback(elems[key], key, arg);\n if (value != null) {\n ret[ret.length] = value;\n }\n }\n }\n return ret.concat.apply([], ret);\n },\n shuffle: function(array) {\n var current, tmp, top;\n array = array.slice();\n top = array.length;\n while (top && --top) {\n current = Math.floor(Math.random() * (top + 1));\n tmp = array[current];\n array[current] = array[top];\n array[top] = tmp;\n }\n return array;\n },\n truncate: function(string, length) {\n if (string.length > length) {\n return string.trim().substring(0, length) + '...';\n } else {\n return string;\n }\n }\n });\n\n}).call(this);\n\n})();\n//@ sourceURL=ext/jquery");minispade.register('travis/ajax', "(function() {(function() {\n\n jQuery.support.cors = true;\n\n this.Travis.Ajax = Ember.Mixin.create({\n DEFAULT_OPTIONS: {\n accepts: {\n json: 'application/vnd.travis-ci.2+json'\n }\n },\n post: function(url, data, callback) {\n return this.ajax(url, 'post', {\n data: data,\n success: callback\n });\n },\n ajax: function(url, method, options) {\n var accessToken, endpoint, _base, _ref;\n endpoint = Travis.config.api_endpoint || '';\n options = options || {};\n if (accessToken = (_ref = Travis.app) != null ? _ref.get('auth.accessToken') : void 0) {\n options.headers || (options.headers = {});\n (_base = options.headers)['Authorization'] || (_base['Authorization'] = \"token \" + accessToken);\n }\n options.url = \"\" + endpoint + url;\n options.type = method;\n options.dataType = 'json';\n options.contentType = 'application/json; charset=utf-8';\n options.context = this;\n if (options.data && method !== 'GET' && method !== 'get') {\n options.data = JSON.stringify(options.data);\n }\n return $.ajax($.extend(options, this.DEFAULT_OPTIONS));\n }\n });\n\n this.Travis.ajax = Em.Object.create(this.Travis.Ajax, {\n get: function(url, callback) {\n return this.ajax(url, 'get', {\n success: callback\n });\n }\n });\n\n}).call(this);\n\n})();\n//@ sourceURL=travis/ajax");minispade.register('travis/expandable_record_array', "(function() {(function() {\n\n Travis.ExpandableRecordArray = DS.RecordArray.extend({\n isLoaded: false,\n isLoading: false,\n load: function(array) {\n var observer, self;\n this.set('isLoading', true);\n self = this;\n observer = function() {\n var content;\n if (this.get('isLoaded')) {\n content = self.get('content');\n array.removeObserver('isLoaded', observer);\n array.forEach(function(record) {\n return self.pushObject(record);\n });\n self.set('isLoading', false);\n return self.set('isLoaded', true);\n }\n };\n return array.addObserver('isLoaded', observer);\n },\n pushObject: function(record) {\n var clientId, id, ids;\n ids = this.get('content');\n id = record.get('id');\n clientId = record.get('clientId');\n if (ids.contains(clientId)) {\n return;\n }\n return ids.pushObject(clientId);\n }\n });\n\n}).call(this);\n\n})();\n//@ sourceURL=travis/expandable_record_array");minispade.register('travis/log', "(function() {(function() {\n\n this.Travis.Log = {\n FOLDS: {\n schema: /(
\\$ (?:bundle exec )?rake( db:create)? db:schema:load[\\s\\S]*?-- assume_migrated_upto_version[\\s\\S]*?<\\/p>\\n.*<\\/p>)/g,\n migrate: /(\\$ (?:bundle exec )?rake( db:create)? db:migrate[\\s\\S]*== +\\w+: migrated \\(.*\\) =+)/g,\n bundle: /(\\$ bundle install.*<\\/p>\\n((Updating|Using|Installing|Fetching|remote:|Receiving|Resolving).*?<\\/p>\\n|<\\/p>\\n)*)/g,\n exec: /([\\/\\w]*.rvm\\/rubies\\/[\\S]*?\\/(ruby|rbx|jruby) .*?<\\/p>)/g\n },\n filter: function(log) {\n log = this.escape(log);\n log = this.deansi(log);\n log = log.replace(/\\r/g, '');\n log = this.number(log);\n log = this.fold(log);\n log = log.replace(/\\n/g, '');\n return log;\n },\n stripPaths: function(log) {\n return log.replace(/\\/home\\/vagrant\\/builds(\\/[^\\/\\n]+){2}\\//g, '');\n },\n escape: function(log) {\n return Handlebars.Utils.escapeExpression(log);\n },\n escapeRuby: function(log) {\n return log.replace(/#<(\\w+.*?)>/, '#<$1>');\n },\n number: function(log) {\n var result;\n result = '';\n $.each(log.trim().split('\\n'), function(ix, line) {\n var number, path;\n number = ix + 1;\n path = Travis.Log.location().substr(1).replace(/\\/L\\d+/, '') + '/L' + number;\n return result += '%@ %@
\\n'.fmt(path, path, number, number, line);\n });\n return result.trim();\n },\n deansi: function(log) {\n var ansi, text;\n log = log.replace(/\\r\\r/g, '\\r').replace(/\\033\\[K\\r/g, '\\r').replace(/^.*\\r(?!$)/gm, '').replace(/\u001b\\[2K/g, '').replace(/\\033\\(B/g, \"\");\n ansi = ansiparse(log);\n text = '';\n ansi.forEach(function(part) {\n var classes;\n classes = [];\n part.foreground && classes.push(part.foreground);\n part.background && classes.push('bg-' + part.background);\n part.bold && classes.push('bold');\n part.italic && classes.push('italic');\n return text += (classes.length ? '' + part.text + ' ' : part.text);\n });\n return text.replace(/\\033/g, '');\n },\n fold: function(log) {\n log = this.unfold(log);\n $.each(Travis.Log.FOLDS, function(name, pattern) {\n return log = log.replace(pattern, function() {\n return '' + arguments[1].trim() + '
';\n });\n });\n return log;\n },\n unfold: function(log) {\n return log.replace(/([\\s\\S]*?)<\\/div>/g, '$1\\n');\n },\n location: function() {\n return window.location.hash;\n }\n };\n\n}).call(this);\n\n})();\n//@ sourceURL=travis/log");minispade.register('travis/model', "(function() {(function() {\n\n this.Travis.Model = DS.Model.extend({\n primaryKey: 'id',\n id: DS.attr('number'),\n refresh: function() {\n var id;\n id = this.get('id');\n if (id) {\n return Travis.app.store.adapter.find(Travis.app.store, this.constructor, id);\n }\n },\n update: function(attrs) {\n var _this = this;\n $.each(attrs, function(key, value) {\n if (key !== 'id') {\n return _this.set(key, value);\n }\n });\n return this;\n }\n });\n\n this.Travis.Model.reopenClass({\n find: function() {\n if (arguments.length === 0) {\n return Travis.app.store.findAll(this);\n } else {\n return this._super.apply(this, arguments);\n }\n },\n filter: function(callback) {\n return Travis.app.store.filter(this, callback);\n },\n load: function(attrs) {\n return Travis.app.store.load(this, attrs);\n },\n buildURL: function(suffix) {\n var base, url;\n base = this.url || this.pluralName();\n Ember.assert('Base URL (' + base + ') must not start with slash', !base || base.toString().charAt(0) !== '/');\n Ember.assert('URL suffix (' + suffix + ') must not start with slash', !suffix || suffix.toString().charAt(0) !== '/');\n url = [base];\n if (suffix !== void 0) {\n url.push(suffix);\n }\n return url.join('/');\n },\n singularName: function() {\n var name, parts;\n parts = this.toString().split('.');\n name = parts[parts.length - 1];\n return name.replace(/([A-Z])/g, '_$1').toLowerCase().slice(1);\n },\n pluralName: function() {\n return Travis.app.store.adapter.pluralize(this.singularName());\n }\n });\n\n}).call(this);\n\n})();\n//@ sourceURL=travis/model");minispade.register('travis/ticker', "(function() {(function() {\n\n this.Travis.Ticker = Ember.Object.extend({\n init: function() {\n if (this.get('interval') !== -1) {\n return this.schedule();\n }\n },\n tick: function() {\n var context, target, targets, _i, _len;\n context = this.get('context');\n targets = this.get('targets') || [this.get('target')];\n for (_i = 0, _len = targets.length; _i < _len; _i++) {\n target = targets[_i];\n if (context) {\n target = context.get(target);\n }\n if (target) {\n target.tick();\n }\n }\n return this.schedule();\n },\n schedule: function() {\n var _this = this;\n return Ember.run.later((function() {\n return _this.tick();\n }), this.get('interval') || Travis.app.TICK_INTERVAL);\n }\n });\n\n}).call(this);\n\n})();\n//@ sourceURL=travis/ticker");minispade.register('travis', "(function() {(function() {\nminispade.require('ext/jquery');\nminispade.require('ext/ember/namespace');\n\n this.Travis = Em.Namespace.create({\n config: {\n api_endpoint: $('meta[rel=\"travis.api_endpoint\"]').attr('href')\n },\n CONFIG_KEYS: ['rvm', 'gemfile', 'env', 'jdk', 'otp_release', 'php', 'node_js', 'perl', 'python', 'scala'],\n ROUTES: {\n 'profile/:login/me': ['profile', 'user'],\n 'profile/:login': ['profile', 'hooks'],\n 'profile': ['profile', 'hooks'],\n 'stats': ['stats', 'show'],\n ':owner/:name/jobs/:id/:line': ['home', 'job'],\n ':owner/:name/jobs/:id': ['home', 'job'],\n ':owner/:name/builds/:id': ['home', 'build'],\n ':owner/:name/builds': ['home', 'builds'],\n ':owner/:name/pull_requests': ['home', 'pullRequests'],\n ':owner/:name/branches': ['home', 'branches'],\n ':owner/:name': ['home', 'current'],\n '': ['home', 'index'],\n '#': ['home', 'index']\n },\n QUEUES: [\n {\n name: 'common',\n display: 'Common'\n }, {\n name: 'php',\n display: 'PHP, Perl and Python'\n }, {\n name: 'node_js',\n display: 'Node.js'\n }, {\n name: 'jvmotp',\n display: 'JVM and Erlang'\n }, {\n name: 'rails',\n display: 'Rails'\n }, {\n name: 'spree',\n display: 'Spree'\n }\n ],\n INTERVALS: {\n sponsors: -1,\n times: -1,\n updateTimes: 1000\n },\n run: function(attrs) {\n var _this = this;\n if (location.hash.slice(0, 2) === '#!') {\n location.href = location.href.replace('#!/', '');\n }\n return this.loadConfig(function(config) {\n var app;\n app = Travis.App.create(attrs || {});\n $.each(Travis, function(key, value) {\n if (value && value.isClass && key !== 'constructor') {\n return app[key] = value;\n }\n });\n _this.app = app;\n _this.store = app.store;\n return $(function() {\n return app.initialize();\n });\n });\n },\n loadConfig: function(callback) {\n var _this = this;\n return this.ajax.get('/config', function(data) {\n $.extend(_this.config, data.config);\n console.log(\"Connecting to \" + data.config.api_endpoint);\n return callback(data.config);\n });\n }\n });\nminispade.require('travis/ajax');\nminispade.require('app');\n\n}).call(this);\n\n})();\n//@ sourceURL=travis");minispade.register('templates', "(function() {\nEmber.TEMPLATES['application'] = Ember.Handlebars.template(function anonymous(Handlebars, depth0, helpers, partials, data) { helpers = helpers || Ember.Handlebars.helpers;\n var buffer = '', stack1, escapeExpression=this.escapeExpression;\n\n\n stack1 = helpers._triageMustache.call(depth0, \"outlet\", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + \"\\n\\n\");\n return buffer;\n});\n\nEmber.TEMPLATES['builds/list'] = Ember.Handlebars.template(function anonymous(Handlebars, depth0, helpers, partials, data) { helpers = helpers || Ember.Handlebars.helpers;\n var buffer = '', stack1, escapeExpression=this.escapeExpression, self=this, helperMissing=helpers.helperMissing;\n\nfunction program1(depth0,data) {\n \n var buffer = '', stack1, foundHelper;\n data.buffer.push(\"\\n
\\n \\n \\n \");\n foundHelper = helpers['t'];\n stack1 = foundHelper ? foundHelper.call(depth0, \"builds.name\", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, \"t\", \"builds.name\", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + \" \\n \");\n foundHelper = helpers['t'];\n stack1 = foundHelper ? foundHelper.call(depth0, \"builds.commit\", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, \"t\", \"builds.commit\", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + \" \\n \");\n foundHelper = helpers['t'];\n stack1 = foundHelper ? foundHelper.call(depth0, \"builds.message\", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, \"t\", \"builds.message\", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + \" \\n \");\n foundHelper = helpers['t'];\n stack1 = foundHelper ? foundHelper.call(depth0, \"builds.duration\", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, \"t\", \"builds.duration\", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + \" \\n \");\n foundHelper = helpers['t'];\n stack1 = foundHelper ? foundHelper.call(depth0, \"builds.finished_at\", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, \"t\", \"builds.finished_at\", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + \" \\n \\n \\n\\n \\n \");\n stack1 = helpers.each.call(depth0, \"build\", \"in\", \"builds\", {hash:{},inverse:self.noop,fn:self.program(2, program2, data),contexts:[depth0,depth0,depth0],data:data});\n if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n data.buffer.push(\"\\n \\n
\\n
\\n \");\n stack1 = helpers.view.call(depth0, \"view.ShowMoreButton\", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + \"\\n
\\n\");\n return buffer;}\nfunction program2(depth0,data) {\n \n var buffer = '', stack1;\n data.buffer.push(\"\\n \");\n stack1 = {};\n stack1['contextBinding'] = \"build\";\n stack1 = helpers.view.call(depth0, \"Travis.BuildsItemView\", {hash:stack1,inverse:self.noop,fn:self.program(3, program3, data),contexts:[depth0],data:data});\n if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n data.buffer.push(\"\\n \");\n return buffer;}\nfunction program3(depth0,data) {\n \n var buffer = '', stack1, foundHelper;\n data.buffer.push(\"\\n
\\n \\n \");\n stack1 = helpers['if'].call(depth0, \"id\", {hash:{},inverse:self.noop,fn:self.program(4, program4, data),contexts:[depth0],data:data});\n if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n data.buffer.push(\"\\n \\n
\\n \\n \");\n foundHelper = helpers.formatCommit;\n stack1 = foundHelper ? foundHelper.call(depth0, \"commit\", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, \"formatCommit\", \"commit\", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + \"\\n \\n \\n
\\n \");\n stack1 = {};\n stack1['short'] = \"true\";\n foundHelper = helpers.formatMessage;\n stack1 = foundHelper ? foundHelper.call(depth0, \"commit.message\", {hash:stack1,contexts:[depth0],data:data}) : helperMissing.call(depth0, \"formatMessage\", \"commit.message\", {hash:stack1,contexts:[depth0],data:data});\n if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n data.buffer.push(\"\\n \\n
\\n \");\n foundHelper = helpers.formatDuration;\n stack1 = foundHelper ? foundHelper.call(depth0, \"duration\", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, \"formatDuration\", \"duration\", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + \"\\n \\n
\\n \");\n foundHelper = helpers.formatTime;\n stack1 = foundHelper ? foundHelper.call(depth0, \"finishedAt\", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, \"formatTime\", \"finishedAt\", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + \"\\n \\n \");\n return buffer;}\nfunction program4(depth0,data) {\n \n var buffer = '', stack1;\n data.buffer.push(\"\\n
\\n \");\n stack1 = helpers._triageMustache.call(depth0, \"number\", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + \"\\n \\n \");\n return buffer;}\n\nfunction program6(depth0,data) {\n \n \n data.buffer.push(\"\\n
Loading
\\n\");}\n\n stack1 = helpers['if'].call(depth0, \"builds.isLoaded\", {hash:{},inverse:self.program(6, program6, data),fn:self.program(1, program1, data),contexts:[depth0],data:data});\n if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n data.buffer.push(\"\\n\\n\");\n return buffer;\n});\n\nEmber.TEMPLATES['builds/show'] = Ember.Handlebars.template(function anonymous(Handlebars, depth0, helpers, partials, data) { helpers = helpers || Ember.Handlebars.helpers;\n var buffer = '', stack1, escapeExpression=this.escapeExpression, helperMissing=helpers.helperMissing, self=this;\n\nfunction program1(depth0,data) {\n \n var buffer = '', stack1;\n data.buffer.push(\"\\n \");\n stack1 = helpers['if'].call(depth0, \"loading\", {hash:{},inverse:self.program(4, program4, data),fn:self.program(2, program2, data),contexts:[depth0],data:data});\n if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n data.buffer.push(\"\\n\");\n return buffer;}\nfunction program2(depth0,data) {\n \n \n data.buffer.push(\"\\n
Loading \\n \");}\n\nfunction program4(depth0,data) {\n \n var buffer = '', stack1, foundHelper;\n data.buffer.push(\"\\n
\\n \\n
\");\n foundHelper = helpers['t'];\n stack1 = foundHelper ? foundHelper.call(depth0, \"builds.name\", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, \"t\", \"builds.name\", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + \" \\n \\n \\n \");\n stack1 = helpers['if'].call(depth0, \"build.id\", {hash:{},inverse:self.noop,fn:self.program(5, program5, data),contexts:[depth0],data:data});\n if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n data.buffer.push(\"\\n \\n \");\n foundHelper = helpers['t'];\n stack1 = foundHelper ? foundHelper.call(depth0, \"builds.finished_at\", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, \"t\", \"builds.finished_at\", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + \" \\n \");\n foundHelper = helpers.formatTime;\n stack1 = foundHelper ? foundHelper.call(depth0, \"build.finishedAt\", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, \"formatTime\", \"build.finishedAt\", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + \" \\n \");\n foundHelper = helpers['t'];\n stack1 = foundHelper ? foundHelper.call(depth0, \"builds.duration\", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, \"t\", \"builds.duration\", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + \" \\n \");\n foundHelper = helpers.formatDuration;\n stack1 = foundHelper ? foundHelper.call(depth0, \"build.duration\", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, \"formatDuration\", \"build.duration\", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + \" \\n \\n\\n \\n
\");\n foundHelper = helpers['t'];\n stack1 = foundHelper ? foundHelper.call(depth0, \"builds.commit\", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, \"t\", \"builds.commit\", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + \" \\n
\");\n foundHelper = helpers.formatCommit;\n stack1 = foundHelper ? foundHelper.call(depth0, \"build.commit\", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, \"formatCommit\", \"build.commit\", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + \" \\n \");\n stack1 = helpers['if'].call(depth0, \"commit.compareUrl\", {hash:{},inverse:self.noop,fn:self.program(7, program7, data),contexts:[depth0],data:data});\n if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n data.buffer.push(\"\\n \");\n stack1 = helpers['if'].call(depth0, \"commit.authorName\", {hash:{},inverse:self.noop,fn:self.program(9, program9, data),contexts:[depth0],data:data});\n if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n data.buffer.push(\"\\n \");\n stack1 = helpers['if'].call(depth0, \"commit.committerName\", {hash:{},inverse:self.noop,fn:self.program(11, program11, data),contexts:[depth0],data:data});\n if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n data.buffer.push(\"\\n
\\n\\n \");\n foundHelper = helpers['t'];\n stack1 = foundHelper ? foundHelper.call(depth0, \"builds.message\", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, \"t\", \"builds.message\", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + \" \\n \");\n foundHelper = helpers.formatMessage;\n stack1 = foundHelper ? foundHelper.call(depth0, \"build.commit.message\", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, \"formatMessage\", \"build.commit.message\", {hash:{},contexts:[depth0],data:data});\n if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n data.buffer.push(\" \\n\\n \");\n stack1 = helpers.unless.call(depth0, \"isMatrix\", {hash:{},inverse:self.noop,fn:self.program(13, program13, data),contexts:[depth0],data:data});\n if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n data.buffer.push(\"\\n \\n\\n \");\n stack1 = helpers['if'].call(depth0, \"build.isMatrix\", {hash:{},inverse:self.program(17, program17, data),fn:self.program(15, program15, data),contexts:[depth0],data:data});\n if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n data.buffer.push(\"\\n \");\n return buffer;}\nfunction program5(depth0,data) {\n \n var buffer = '', stack1;\n data.buffer.push(\"\\n
\");\n stack1 = helpers._triageMustache.call(depth0, \"build.number\", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + \" \\n \");\n return buffer;}\n\nfunction program7(depth0,data) {\n \n var buffer = '', stack1, foundHelper;\n data.buffer.push(\"\\n
\");\n foundHelper = helpers['t'];\n stack1 = foundHelper ? foundHelper.call(depth0, \"builds.compare\", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, \"t\", \"builds.compare\", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + \" \\n
\");\n foundHelper = helpers.pathFrom;\n stack1 = foundHelper ? foundHelper.call(depth0, \"build.commit.compareUrl\", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, \"pathFrom\", \"build.commit.compareUrl\", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + \" \\n \");\n return buffer;}\n\nfunction program9(depth0,data) {\n \n var buffer = '', stack1, foundHelper;\n data.buffer.push(\"\\n
\");\n foundHelper = helpers['t'];\n stack1 = foundHelper ? foundHelper.call(depth0, \"builds.author\", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, \"t\", \"builds.author\", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + \" \\n
\");\n stack1 = helpers._triageMustache.call(depth0, \"build.commit.authorName\", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + \" \\n \");\n return buffer;}\n\nfunction program11(depth0,data) {\n \n var buffer = '', stack1, foundHelper;\n data.buffer.push(\"\\n
\");\n foundHelper = helpers['t'];\n stack1 = foundHelper ? foundHelper.call(depth0, \"builds.committer\", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, \"t\", \"builds.committer\", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + \" \\n
\");\n stack1 = helpers._triageMustache.call(depth0, \"build.commit.committerName\", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + \" \\n \");\n return buffer;}\n\nfunction program13(depth0,data) {\n \n var buffer = '', stack1, foundHelper;\n data.buffer.push(\"\\n
\");\n foundHelper = helpers['t'];\n stack1 = foundHelper ? foundHelper.call(depth0, \"builds.config\", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, \"t\", \"builds.config\", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + \" \\n
\");\n foundHelper = helpers.formatConfig;\n stack1 = foundHelper ? foundHelper.call(depth0, \"build.config\", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, \"formatConfig\", \"build.config\", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + \" \\n \");\n return buffer;}\n\nfunction program15(depth0,data) {\n \n var buffer = '', stack1;\n data.buffer.push(\"\\n \");\n stack1 = {};\n stack1['jobsBinding'] = \"build.requiredJobs\";\n stack1['required'] = \"true\";\n stack1 = helpers.view.call(depth0, \"Travis.JobsView\", {hash:stack1,contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + \"\\n \");\n stack1 = {};\n stack1['jobsBinding'] = \"build.allowedFailureJobs\";\n stack1 = helpers.view.call(depth0, \"Travis.JobsView\", {hash:stack1,contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + \"\\n \");\n return buffer;}\n\nfunction program17(depth0,data) {\n \n var buffer = '', stack1;\n data.buffer.push(\"\\n \");\n stack1 = {};\n stack1['contextBinding'] = \"build.jobs.firstObject\";\n stack1 = helpers.view.call(depth0, \"Travis.LogView\", {hash:stack1,contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + \"\\n \");\n return buffer;}\n\n stack1 = helpers['with'].call(depth0, \"view\", {hash:{},inverse:self.noop,fn:self.program(1, program1, data),contexts:[depth0],data:data});\n if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n data.buffer.push(\"\\n\\n\");\n return buffer;\n});\n\nEmber.TEMPLATES['jobs/list'] = Ember.Handlebars.template(function anonymous(Handlebars, depth0, helpers, partials, data) { helpers = helpers || Ember.Handlebars.helpers;\n var buffer = '', stack1, helperMissing=helpers.helperMissing, escapeExpression=this.escapeExpression, self=this;\n\nfunction program1(depth0,data) {\n \n var buffer = '', stack1;\n data.buffer.push(\"\\n \");\n stack1 = helpers['if'].call(depth0, \"view.required\", {hash:{},inverse:self.program(4, program4, data),fn:self.program(2, program2, data),contexts:[depth0],data:data});\n if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n data.buffer.push(\"\\n
\\n \\n \");\n stack1 = helpers.each.call(depth0, \"key\", \"in\", \"view.build.configKeys\", {hash:{},inverse:self.noop,fn:self.program(6, program6, data),contexts:[depth0,depth0,depth0],data:data});\n if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n data.buffer.push(\"\\n \\n \\n
\\n \");\n stack1 = helpers.each.call(depth0, \"job\", \"in\", \"view.jobs\", {hash:{},inverse:self.noop,fn:self.program(8, program8, data),contexts:[depth0,depth0,depth0],data:data});\n if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n data.buffer.push(\"\\n \\n \\n\\n \");\n stack1 = helpers.unless.call(depth0, \"view.required\", {hash:{},inverse:self.noop,fn:self.program(14, program14, data),contexts:[depth0],data:data});\n if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n data.buffer.push(\"\\n\");\n return buffer;}\nfunction program2(depth0,data) {\n \n var buffer = '', stack1, foundHelper;\n data.buffer.push(\"\\n
\\n \\n \");\n foundHelper = helpers['t'];\n stack1 = foundHelper ? foundHelper.call(depth0, \"jobs.build_matrix\", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, \"t\", \"jobs.build_matrix\", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + \"\\n \\n \");\n return buffer;}\n\nfunction program4(depth0,data) {\n \n var buffer = '', stack1, foundHelper;\n data.buffer.push(\"\\n \\n \\n \");\n foundHelper = helpers['t'];\n stack1 = foundHelper ? foundHelper.call(depth0, \"jobs.allowed_failures\", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, \"t\", \"jobs.allowed_failures\", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + \"\\n \\n \\n \");\n return buffer;}\n\nfunction program6(depth0,data) {\n \n var buffer = '', stack1;\n data.buffer.push(\"\\n \");\n stack1 = helpers._triageMustache.call(depth0, \"key\", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + \" \\n \");\n return buffer;}\n\nfunction program8(depth0,data) {\n \n var buffer = '', stack1;\n data.buffer.push(\"\\n \");\n stack1 = {};\n stack1['contextBinding'] = \"job\";\n stack1 = helpers.view.call(depth0, \"Travis.JobsItemView\", {hash:stack1,inverse:self.noop,fn:self.program(9, program9, data),contexts:[depth0],data:data});\n if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n data.buffer.push(\"\\n \");\n return buffer;}\nfunction program9(depth0,data) {\n \n var buffer = '', stack1, foundHelper;\n data.buffer.push(\"\\n \\n \\n \");\n stack1 = helpers['if'].call(depth0, \"job.id\", {hash:{},inverse:self.noop,fn:self.program(10, program10, data),contexts:[depth0],data:data});\n if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n data.buffer.push(\"\\n \\n \\n \");\n foundHelper = helpers.formatDuration;\n stack1 = foundHelper ? foundHelper.call(depth0, \"duration\", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, \"formatDuration\", \"duration\", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + \"\\n \\n \\n \");\n foundHelper = helpers.formatTime;\n stack1 = foundHelper ? foundHelper.call(depth0, \"finishedAt\", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, \"formatTime\", \"finishedAt\", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + \"\\n \\n \");\n stack1 = helpers.each.call(depth0, \"value\", \"in\", \"configValues\", {hash:{},inverse:self.noop,fn:self.program(12, program12, data),contexts:[depth0,depth0,depth0],data:data});\n if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n data.buffer.push(\"\\n \");\n return buffer;}\nfunction program10(depth0,data) {\n \n var buffer = '', stack1;\n data.buffer.push(\"\\n \");\n stack1 = helpers._triageMustache.call(depth0, \"number\", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + \" \\n \");\n return buffer;}\n\nfunction program12(depth0,data) {\n \n var buffer = '', stack1;\n data.buffer.push(\"\\n \");\n stack1 = helpers._triageMustache.call(depth0, \"value\", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + \" \\n \");\n return buffer;}\n\nfunction program14(depth0,data) {\n \n var buffer = '', stack1, foundHelper;\n data.buffer.push(\"\\n \\n \");\n return buffer;}\n\n stack1 = helpers['if'].call(depth0, \"view.jobs.length\", {hash:{},inverse:self.noop,fn:self.program(1, program1, data),contexts:[depth0],data:data});\n if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n data.buffer.push(\"\\n\\n\");\n return buffer;\n});\n\nEmber.TEMPLATES['jobs/log'] = Ember.Handlebars.template(function anonymous(Handlebars, depth0, helpers, partials, data) { helpers = helpers || Ember.Handlebars.helpers;\n var buffer = '', stack1, helperMissing=helpers.helperMissing, escapeExpression=this.escapeExpression, self=this;\n\nfunction program1(depth0,data) {\n \n var buffer = '', stack1, foundHelper;\n data.buffer.push(\"\\n \\n \\n Follow logs \\n \");\n foundHelper = helpers.formatLog;\n stack1 = foundHelper ? foundHelper.call(depth0, \"log.body\", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, \"formatLog\", \"log.body\", {hash:{},contexts:[depth0],data:data});\n if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n data.buffer.push(\" \\n\\n \");\n stack1 = helpers['if'].call(depth0, \"sponsor.name\", {hash:{},inverse:self.noop,fn:self.program(2, program2, data),contexts:[depth0],data:data});\n if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n data.buffer.push(\"\\n\\n To top \\n\");\n return buffer;}\nfunction program2(depth0,data) {\n \n var buffer = '', stack1, foundHelper;\n data.buffer.push(\"\\n \\n \");\n return buffer;}\n\nfunction program4(depth0,data) {\n \n \n data.buffer.push(\"\\n \\n Loading \\n
\\n\");}\n\n stack1 = helpers._triageMustache.call(depth0, \"view.logSubscriber\", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + \"\\n\\n\");\n stack1 = helpers['if'].call(depth0, \"log.isLoaded\", {hash:{},inverse:self.program(4, program4, data),fn:self.program(1, program1, data),contexts:[depth0],data:data});\n if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n data.buffer.push(\"\\n\\n\");\n return buffer;\n});\n\nEmber.TEMPLATES['jobs/show'] = Ember.Handlebars.template(function anonymous(Handlebars, depth0, helpers, partials, data) { helpers = helpers || Ember.Handlebars.helpers;\n var buffer = '', stack1, escapeExpression=this.escapeExpression, helperMissing=helpers.helperMissing, self=this;\n\nfunction program1(depth0,data) {\n \n var buffer = '', stack1;\n data.buffer.push(\"\\n \");\n stack1 = helpers['if'].call(depth0, \"job.isLoaded\", {hash:{},inverse:self.program(11, program11, data),fn:self.program(2, program2, data),contexts:[depth0],data:data});\n if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n data.buffer.push(\"\\n\");\n return buffer;}\nfunction program2(depth0,data) {\n \n var buffer = '', stack1, foundHelper;\n data.buffer.push(\"\\n \\n
\\n \\n
Job \\n \\n \\n \");\n stack1 = helpers['if'].call(depth0, \"job.id\", {hash:{},inverse:self.noop,fn:self.program(3, program3, data),contexts:[depth0],data:data});\n if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n data.buffer.push(\"\\n \\n \");\n foundHelper = helpers['t'];\n stack1 = foundHelper ? foundHelper.call(depth0, \"jobs.finished_at\", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, \"t\", \"jobs.finished_at\", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + \" \\n \");\n foundHelper = helpers.formatTime;\n stack1 = foundHelper ? foundHelper.call(depth0, \"job.finishedAt\", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, \"formatTime\", \"job.finishedAt\", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + \" \\n \");\n foundHelper = helpers['t'];\n stack1 = foundHelper ? foundHelper.call(depth0, \"jobs.duration\", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, \"t\", \"jobs.duration\", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + \" \\n \");\n foundHelper = helpers.formatDuration;\n stack1 = foundHelper ? foundHelper.call(depth0, \"job.duration\", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, \"formatDuration\", \"job.duration\", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + \" \\n \\n\\n \\n
\");\n foundHelper = helpers['t'];\n stack1 = foundHelper ? foundHelper.call(depth0, \"jobs.commit\", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, \"t\", \"jobs.commit\", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + \" \\n
\");\n foundHelper = helpers.formatCommit;\n stack1 = foundHelper ? foundHelper.call(depth0, \"commit\", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, \"formatCommit\", \"commit\", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + \" \\n \");\n stack1 = helpers['if'].call(depth0, \"commit.compareUrl\", {hash:{},inverse:self.noop,fn:self.program(5, program5, data),contexts:[depth0],data:data});\n if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n data.buffer.push(\"\\n \");\n stack1 = helpers['if'].call(depth0, \"commit.authorName\", {hash:{},inverse:self.noop,fn:self.program(7, program7, data),contexts:[depth0],data:data});\n if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n data.buffer.push(\"\\n \");\n stack1 = helpers['if'].call(depth0, \"commit.committerName\", {hash:{},inverse:self.noop,fn:self.program(9, program9, data),contexts:[depth0],data:data});\n if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n data.buffer.push(\"\\n
\\n\\n \");\n foundHelper = helpers['t'];\n stack1 = foundHelper ? foundHelper.call(depth0, \"jobs.message\", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, \"t\", \"jobs.message\", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + \" \\n \");\n foundHelper = helpers.formatMessage;\n stack1 = foundHelper ? foundHelper.call(depth0, \"commit.message\", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, \"formatMessage\", \"commit.message\", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + \" \\n \");\n foundHelper = helpers['t'];\n stack1 = foundHelper ? foundHelper.call(depth0, \"jobs.config\", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, \"t\", \"jobs.config\", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + \" \\n \");\n foundHelper = helpers.formatConfig;\n stack1 = foundHelper ? foundHelper.call(depth0, \"job.config\", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, \"formatConfig\", \"job.config\", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + \" \\n \\n\\n \");\n stack1 = {};\n stack1['contextBinding'] = \"job\";\n stack1 = helpers.view.call(depth0, \"Travis.LogView\", {hash:stack1,contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + \"\\n
\\n \");\n return buffer;}\nfunction program3(depth0,data) {\n \n var buffer = '', stack1;\n data.buffer.push(\"\\n \");\n stack1 = helpers._triageMustache.call(depth0, \"job.number\", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + \" \\n \");\n return buffer;}\n\nfunction program5(depth0,data) {\n \n var buffer = '', stack1, foundHelper;\n data.buffer.push(\"\\n \");\n foundHelper = helpers['t'];\n stack1 = foundHelper ? foundHelper.call(depth0, \"jobs.compare\", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, \"t\", \"jobs.compare\", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + \" \\n \");\n foundHelper = helpers.pathFrom;\n stack1 = foundHelper ? foundHelper.call(depth0, \"commit.compareUrl\", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, \"pathFrom\", \"commit.compareUrl\", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + \" \\n \");\n return buffer;}\n\nfunction program7(depth0,data) {\n \n var buffer = '', stack1, foundHelper;\n data.buffer.push(\"\\n \");\n foundHelper = helpers['t'];\n stack1 = foundHelper ? foundHelper.call(depth0, \"jobs.author\", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, \"t\", \"jobs.author\", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + \" \\n \");\n stack1 = helpers._triageMustache.call(depth0, \"commit.authorName\", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + \" \\n \");\n return buffer;}\n\nfunction program9(depth0,data) {\n \n var buffer = '', stack1, foundHelper;\n data.buffer.push(\"\\n \");\n foundHelper = helpers['t'];\n stack1 = foundHelper ? foundHelper.call(depth0, \"jobs.committer\", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, \"t\", \"jobs.committer\", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + \" \\n \");\n stack1 = helpers._triageMustache.call(depth0, \"commit.committerName\", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + \" \\n \");\n return buffer;}\n\nfunction program11(depth0,data) {\n \n \n data.buffer.push(\"\\n \\n Loading \\n
\\n \");}\n\n stack1 = helpers['with'].call(depth0, \"view\", {hash:{},inverse:self.noop,fn:self.program(1, program1, data),contexts:[depth0],data:data});\n if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n data.buffer.push(\"\\n\\n\");\n return buffer;\n});\n\nEmber.TEMPLATES['layouts/home'] = Ember.Handlebars.template(function anonymous(Handlebars, depth0, helpers, partials, data) { helpers = helpers || Ember.Handlebars.helpers;\n var buffer = '', stack1, foundHelper, helperMissing=helpers.helperMissing, escapeExpression=this.escapeExpression;\n\n\n data.buffer.push(\"\\n \");\n foundHelper = helpers.outlet;\n stack1 = foundHelper ? foundHelper.call(depth0, \"top\", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, \"outlet\", \"top\", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + \"\\n
\\n\\n\\n
\\n \");\n foundHelper = helpers.outlet;\n stack1 = foundHelper ? foundHelper.call(depth0, \"left\", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, \"outlet\", \"left\", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + \"\\n
\\n\\n
\\n \");\n foundHelper = helpers.outlet;\n stack1 = foundHelper ? foundHelper.call(depth0, \"main\", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, \"outlet\", \"main\", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + \"\\n
\\n\\n
\\n \");\n foundHelper = helpers.outlet;\n stack1 = foundHelper ? foundHelper.call(depth0, \"right\", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, \"outlet\", \"right\", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + \"\\n
\\n
\\n\\n\");\n return buffer;\n});\n\nEmber.TEMPLATES['layouts/profile'] = Ember.Handlebars.template(function anonymous(Handlebars, depth0, helpers, partials, data) { helpers = helpers || Ember.Handlebars.helpers;\n var buffer = '', stack1, foundHelper, helperMissing=helpers.helperMissing, escapeExpression=this.escapeExpression;\n\n\n data.buffer.push(\"\\n \");\n foundHelper = helpers.outlet;\n stack1 = foundHelper ? foundHelper.call(depth0, \"top\", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, \"outlet\", \"top\", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + \"\\n
\\n\\n\\n
\\n \");\n foundHelper = helpers.outlet;\n stack1 = foundHelper ? foundHelper.call(depth0, \"left\", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, \"outlet\", \"left\", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + \"\\n
\\n\\n
\\n \");\n foundHelper = helpers.outlet;\n stack1 = foundHelper ? foundHelper.call(depth0, \"main\", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, \"outlet\", \"main\", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + \"\\n
\\n\\n
\\n
\\n\\n
\\n
Getting started? \\n
\\n Please read our guide .\\n It will only take a few minutes :)\\n
\\n
\\n You can find detailled docs on our about site.\\n
\\n
\\n If you need help please don't hesitate to join\\n #travis on irc.freenode.net\\n or our mailinglist .\\n
\\n
\\n
\\n
\\n\\n\");\n return buffer;\n});\n\nEmber.TEMPLATES['layouts/sidebar'] = Ember.Handlebars.template(function anonymous(Handlebars, depth0, helpers, partials, data) { helpers = helpers || Ember.Handlebars.helpers;\n var buffer = '', stack1, foundHelper, helperMissing=helpers.helperMissing, escapeExpression=this.escapeExpression;\n\n\n data.buffer.push(\"\\n \");\n foundHelper = helpers['t'];\n stack1 = foundHelper ? foundHelper.call(depth0, \"layouts.application.fork_me\", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, \"t\", \"layouts.application.fork_me\", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + \"\\n \\n\\n\\n\\n\");\n stack1 = helpers.view.call(depth0, \"view.DecksView\", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + \"\\n\");\n stack1 = helpers.view.call(depth0, \"view.WorkersView\", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + \"\\n\");\n stack1 = helpers.view.call(depth0, \"view.QueuesView\", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + \"\\n\");\n stack1 = helpers.view.call(depth0, \"view.LinksView\", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + \"\\n\\n\\n
\");\n foundHelper = helpers['t'];\n stack1 = foundHelper ? foundHelper.call(depth0, \"layouts.about.join\", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, \"t\", \"layouts.about.join\", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + \" \\n
\\n \");\n foundHelper = helpers['t'];\n stack1 = foundHelper ? foundHelper.call(depth0, \"layouts.about.repository\", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, \"t\", \"layouts.about.repository\", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + \": Github \\n \");\n foundHelper = helpers['t'];\n stack1 = foundHelper ? foundHelper.call(depth0, \"layouts.about.twitter\", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, \"t\", \"layouts.about.twitter\", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + \": @travisci \\n \");\n foundHelper = helpers['t'];\n stack1 = foundHelper ? foundHelper.call(depth0, \"layouts.about.mailing_list\", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, \"t\", \"layouts.about.mailing_list\", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + \": travis-ci \\n irc.freenode.net#travis \\n \\n
\\n\\n\");\n return buffer;\n});\n\nEmber.TEMPLATES['layouts/simple'] = Ember.Handlebars.template(function anonymous(Handlebars, depth0, helpers, partials, data) { helpers = helpers || Ember.Handlebars.helpers;\n var buffer = '', stack1, foundHelper, helperMissing=helpers.helperMissing, escapeExpression=this.escapeExpression;\n\n\n data.buffer.push(\"\\n \");\n foundHelper = helpers.outlet;\n stack1 = foundHelper ? foundHelper.call(depth0, \"top\", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, \"outlet\", \"top\", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + \"\\n
\\n\\n\\n
\\n \");\n foundHelper = helpers.outlet;\n stack1 = foundHelper ? foundHelper.call(depth0, \"main\", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, \"outlet\", \"main\", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + \"\\n
\\n
\\n\\n\\n\");\n return buffer;\n});\n\nEmber.TEMPLATES['layouts/top'] = Ember.Handlebars.template(function anonymous(Handlebars, depth0, helpers, partials, data) { helpers = helpers || Ember.Handlebars.helpers;\n var buffer = '', stack1, foundHelper, escapeExpression=this.escapeExpression, helperMissing=helpers.helperMissing;\n\n\n data.buffer.push(\"\\n Travis \\n \\n\\n\\n \\n Home \\n \\n \\n Stats \\n \\n \\n Blog \\n \\n \\n Docs \\n \\n \\n \\n \");\n foundHelper = helpers['t'];\n stack1 = foundHelper ? foundHelper.call(depth0, \"layouts.top.github_login\", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, \"t\", \"layouts.top.github_login\", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + \" \\n \");\n stack1 = helpers._triageMustache.call(depth0, \"user.name\", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + \" \\n Signing in \\n
\\n \\n \\n \");\n foundHelper = helpers['t'];\n stack1 = foundHelper ? foundHelper.call(depth0, \"layouts.top.profile\", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, \"t\", \"layouts.top.profile\", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + \" \\n \\n \\n \");\n foundHelper = helpers['t'];\n stack1 = foundHelper ? foundHelper.call(depth0, \"layouts.top.sign_out\", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, \"t\", \"layouts.top.sign_out\", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + \" \\n \\n \\n \\n \\n\\n\");\n return buffer;\n});\n\nEmber.TEMPLATES['profile/accounts'] = Ember.Handlebars.template(function anonymous(Handlebars, depth0, helpers, partials, data) { helpers = helpers || Ember.Handlebars.helpers;\n var buffer = '', stack1, foundHelper, escapeExpression=this.escapeExpression, self=this, helperMissing=helpers.helperMissing;\n\nfunction program1(depth0,data) {\n \n var buffer = '', stack1;\n data.buffer.push(\"\\n \");\n stack1 = helpers._triageMustache.call(depth0, \"view.name\", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + \" \\n \\n Repositories: \\n \");\n stack1 = helpers._triageMustache.call(depth0, \"view.content.reposCount\", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + \" \\n
\\n \");\n return buffer;}\n\n data.buffer.push(\"\\n
\\n\\n\\n\\n\\n \");\n stack1 = {};\n stack1['contentBinding'] = \"controller\";\n foundHelper = helpers.collection;\n stack1 = foundHelper ? foundHelper.call(depth0, \"Travis.AccountsListView\", {hash:stack1,inverse:self.noop,fn:self.program(1, program1, data),contexts:[depth0],data:data}) : helperMissing.call(depth0, \"collection\", \"Travis.AccountsListView\", {hash:stack1,inverse:self.noop,fn:self.program(1, program1, data),contexts:[depth0],data:data});\n if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n data.buffer.push(\"\\n
\\n\\n\");\n return buffer;\n});\n\nEmber.TEMPLATES['profile/show'] = Ember.Handlebars.template(function anonymous(Handlebars, depth0, helpers, partials, data) { helpers = helpers || Ember.Handlebars.helpers;\n var buffer = '', stack1, foundHelper, escapeExpression=this.escapeExpression, helperMissing=helpers.helperMissing;\n\n\n data.buffer.push(\"\");\n stack1 = helpers._triageMustache.call(depth0, \"view.name\", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + \" \\n\\n\");\n stack1 = helpers.view.call(depth0, \"Travis.ProfileTabsView\", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + \"\\n\\n\\n \");\n foundHelper = helpers.outlet;\n stack1 = foundHelper ? foundHelper.call(depth0, \"pane\", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, \"outlet\", \"pane\", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + \"\\n
\\n\\n\\n\");\n return buffer;\n});\n\nEmber.TEMPLATES['profile/tabs'] = Ember.Handlebars.template(function anonymous(Handlebars, depth0, helpers, partials, data) { helpers = helpers || Ember.Handlebars.helpers;\n var buffer = '', stack1, escapeExpression=this.escapeExpression, self=this;\n\nfunction program1(depth0,data) {\n \n var buffer = '', stack1;\n data.buffer.push(\"\\n \\n \\n \\n \");\n return buffer;}\n\n data.buffer.push(\"\\n \\n \\n \\n \");\n stack1 = helpers['if'].call(depth0, \"view.displayUser\", {hash:{},inverse:self.noop,fn:self.program(1, program1, data),contexts:[depth0],data:data});\n if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n data.buffer.push(\"\\n \\n\\n\");\n return buffer;\n});\n\nEmber.TEMPLATES['profile/tabs/hooks'] = Ember.Handlebars.template(function anonymous(Handlebars, depth0, helpers, partials, data) { helpers = helpers || Ember.Handlebars.helpers;\n var buffer = '', stack1, foundHelper, escapeExpression=this.escapeExpression, helperMissing=helpers.helperMissing, self=this;\n\nfunction program1(depth0,data) {\n \n var buffer = '', stack1;\n data.buffer.push(\"\\n \");\n stack1 = helpers['if'].call(depth0, \"user.isSyncing\", {hash:{},inverse:self.program(4, program4, data),fn:self.program(2, program2, data),contexts:[depth0],data:data});\n if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n data.buffer.push(\"\\n\");\n return buffer;}\nfunction program2(depth0,data) {\n \n \n data.buffer.push(\"\\n \\n Please wait while we sync from GitHub \\n
\\n \");}\n\nfunction program4(depth0,data) {\n \n var buffer = '', stack1, foundHelper;\n data.buffer.push(\"\\n \\n Last synchronized from GitHub: \");\n foundHelper = helpers.formatTime;\n stack1 = foundHelper ? foundHelper.call(depth0, \"user.syncedAt\", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, \"formatTime\", \"user.syncedAt\", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + \"\\n \\n Sync now\\n \\n
\\n\\n \\n \");\n stack1 = helpers.each.call(depth0, \"hook\", \"in\", \"hooks\", {hash:{},inverse:self.program(7, program7, data),fn:self.program(5, program5, data),contexts:[depth0,depth0,depth0],data:data});\n if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n data.buffer.push(\"\\n \\n \");\n return buffer;}\nfunction program5(depth0,data) {\n \n var buffer = '', stack1;\n data.buffer.push(\"\\n \\n \");\n stack1 = helpers._triageMustache.call(depth0, \"hook.slug\", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + \" \\n \");\n stack1 = helpers._triageMustache.call(depth0, \"hook.description\", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + \"
\\n\\n \\n \\n \");\n return buffer;}\n\nfunction program7(depth0,data) {\n \n \n data.buffer.push(\"\\n \\n You do not seem to have any repositories that we could sync.\\n \\n \");}\n\nfunction program9(depth0,data) {\n \n \n data.buffer.push(\"\\n \\n Loading \\n
\\n\");}\n\n data.buffer.push(\"\\n \");\n foundHelper = helpers['t'];\n stack1 = foundHelper ? foundHelper.call(depth0, \"profiles.show.message.your_repos\", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, \"t\", \"profiles.show.message.your_repos\", {hash:{},contexts:[depth0],data:data});\n if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n data.buffer.push(\"\\n
\\n\\n\");\n stack1 = helpers['if'].call(depth0, \"hooks.isLoaded\", {hash:{},inverse:self.program(9, program9, data),fn:self.program(1, program1, data),contexts:[depth0],data:data});\n if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n data.buffer.push(\"\\n\\n\\n\\n\");\n return buffer;\n});\n\nEmber.TEMPLATES['profile/tabs/user'] = Ember.Handlebars.template(function anonymous(Handlebars, depth0, helpers, partials, data) { helpers = helpers || Ember.Handlebars.helpers;\n var buffer = '', stack1, foundHelper, escapeExpression=this.escapeExpression, helperMissing=helpers.helperMissing;\n\n\n data.buffer.push(\" \\n\\n\\n \\n \");\n foundHelper = helpers['t'];\n stack1 = foundHelper ? foundHelper.call(depth0, \"profiles.show.github\", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, \"t\", \"profiles.show.github\", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + \":\\n \\n \\n \");\n stack1 = helpers._triageMustache.call(depth0, \"user.login\", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + \" \\n \\n \\n \");\n foundHelper = helpers['t'];\n stack1 = foundHelper ? foundHelper.call(depth0, \"profiles.show.email\", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, \"t\", \"profiles.show.email\", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + \":\\n \\n \\n \");\n stack1 = helpers._triageMustache.call(depth0, \"user.email\", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + \"\\n \\n \\n \");\n foundHelper = helpers['t'];\n stack1 = foundHelper ? foundHelper.call(depth0, \"profiles.show.token\", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, \"t\", \"profiles.show.token\", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + \":\\n \\n \\n \");\n stack1 = helpers._triageMustache.call(depth0, \"user.token\", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + \"\\n \\n \\n\\n\\n\\n\\n\\n\");\n return buffer;\n});\n\nEmber.TEMPLATES['queues/list'] = Ember.Handlebars.template(function anonymous(Handlebars, depth0, helpers, partials, data) { helpers = helpers || Ember.Handlebars.helpers;\n var buffer = '', stack1, escapeExpression=this.escapeExpression, self=this, helperMissing=helpers.helperMissing;\n\nfunction program1(depth0,data) {\n \n var buffer = '', stack1, foundHelper;\n data.buffer.push(\"\\n \\n \");\n foundHelper = helpers['t'];\n stack1 = foundHelper ? foundHelper.call(depth0, \"queue\", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, \"t\", \"queue\", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + \": \");\n stack1 = helpers._triageMustache.call(depth0, \"queue.name\", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + \" \\n \\n \");\n stack1 = helpers.each.call(depth0, \"job\", \"in\", \"queue\", {hash:{},inverse:self.program(5, program5, data),fn:self.program(2, program2, data),contexts:[depth0,depth0,depth0],data:data});\n if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n data.buffer.push(\"\\n \\n \\n\");\n return buffer;}\nfunction program2(depth0,data) {\n \n var buffer = '', stack1;\n data.buffer.push(\"\\n \");\n stack1 = {};\n stack1['jobBinding'] = \"job\";\n stack1 = helpers.view.call(depth0, \"Travis.QueueItemView\", {hash:stack1,inverse:self.noop,fn:self.program(3, program3, data),contexts:[depth0],data:data});\n if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n data.buffer.push(\"\\n \");\n return buffer;}\nfunction program3(depth0,data) {\n \n var buffer = '', stack1;\n data.buffer.push(\"\\n \\n \\n \");\n stack1 = helpers._triageMustache.call(depth0, \"job.repository.slug\", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + \"\\n \\n #\");\n stack1 = helpers._triageMustache.call(depth0, \"job.number\", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + \"\\n \\n \");\n return buffer;}\n\nfunction program5(depth0,data) {\n \n var buffer = '', stack1, foundHelper;\n data.buffer.push(\"\\n \");\n foundHelper = helpers['t'];\n stack1 = foundHelper ? foundHelper.call(depth0, \"no_job\", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, \"t\", \"no_job\", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + \"\\n \");\n return buffer;}\n\n data.buffer.push(\"\\n\");\n stack1 = helpers.each.call(depth0, \"queue\", \"in\", \"controller\", {hash:{},inverse:self.noop,fn:self.program(1, program1, data),contexts:[depth0,depth0,depth0],data:data});\n if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n data.buffer.push(\"\\n \\n\\n\");\n return buffer;\n});\n\nEmber.TEMPLATES['repos/list'] = Ember.Handlebars.template(function anonymous(Handlebars, depth0, helpers, partials, data) { helpers = helpers || Ember.Handlebars.helpers;\n var buffer = '', stack1, foundHelper, escapeExpression=this.escapeExpression, self=this, helperMissing=helpers.helperMissing;\n\nfunction program1(depth0,data) {\n \n var buffer = '', stack1;\n data.buffer.push(\"\\n \");\n stack1 = helpers['with'].call(depth0, \"view.repository\", {hash:{},inverse:self.noop,fn:self.program(2, program2, data),contexts:[depth0],data:data});\n if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n data.buffer.push(\"\\n \");\n return buffer;}\nfunction program2(depth0,data) {\n \n var buffer = '', stack1, foundHelper;\n data.buffer.push(\"\\n \\n \\n \");\n stack1 = helpers['if'].call(depth0, \"slug\", {hash:{},inverse:self.noop,fn:self.program(3, program3, data),contexts:[depth0],data:data});\n if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n data.buffer.push(\"\\n
\\n \");\n stack1 = helpers['if'].call(depth0, \"lastBuildId\", {hash:{},inverse:self.noop,fn:self.program(5, program5, data),contexts:[depth0],data:data});\n if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n data.buffer.push(\"\\n\\n \\n \");\n foundHelper = helpers['t'];\n stack1 = foundHelper ? foundHelper.call(depth0, \"repositories.duration\", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, \"t\", \"repositories.duration\", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + \": \\n \");\n foundHelper = helpers.formatDuration;\n stack1 = foundHelper ? foundHelper.call(depth0, \"lastBuildDuration\", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, \"formatDuration\", \"lastBuildDuration\", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + \" ,\\n \");\n foundHelper = helpers['t'];\n stack1 = foundHelper ? foundHelper.call(depth0, \"repositories.finished_at\", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, \"t\", \"repositories.finished_at\", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + \": \\n \");\n foundHelper = helpers.formatTime;\n stack1 = foundHelper ? foundHelper.call(depth0, \"lastBuildFinishedAt\", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, \"formatTime\", \"lastBuildFinishedAt\", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + \" \\n
\\n\\n
\\n\\n \");\n stack1 = helpers['if'].call(depth0, \"description\", {hash:{},inverse:self.noop,fn:self.program(7, program7, data),contexts:[depth0],data:data});\n if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n data.buffer.push(\"\\n \");\n return buffer;}\nfunction program3(depth0,data) {\n \n var buffer = '', stack1;\n data.buffer.push(\"\\n \");\n stack1 = helpers._triageMustache.call(depth0, \"slug\", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + \" \\n \");\n return buffer;}\n\nfunction program5(depth0,data) {\n \n var buffer = '', stack1;\n data.buffer.push(\"\\n \");\n stack1 = helpers._triageMustache.call(depth0, \"lastBuildNumber\", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + \" \\n \");\n return buffer;}\n\nfunction program7(depth0,data) {\n \n var buffer = '', stack1;\n data.buffer.push(\"\\n \\n
\");\n stack1 = helpers._triageMustache.call(depth0, \"description\", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + \"
\\n
\\n \");\n return buffer;}\n\n data.buffer.push(\"\\n \");\n stack1 = {};\n stack1['valueBinding'] = \"controller.search\";\n stack1 = helpers.view.call(depth0, \"Ember.TextField\", {hash:stack1,contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + \"\\n
\\n\\n\");\n stack1 = helpers.view.call(depth0, \"Travis.ReposListTabsView\", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + \"\\n\\n \\n\\n\\n \");\n stack1 = {};\n stack1['contentBinding'] = \"controller\";\n foundHelper = helpers.collection;\n stack1 = foundHelper ? foundHelper.call(depth0, \"Travis.RepositoriesListView\", {hash:stack1,inverse:self.noop,fn:self.program(1, program1, data),contexts:[depth0],data:data}) : helperMissing.call(depth0, \"collection\", \"Travis.RepositoriesListView\", {hash:stack1,inverse:self.noop,fn:self.program(1, program1, data),contexts:[depth0],data:data});\n if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n data.buffer.push(\"\\n
\\n\\n\");\n return buffer;\n});\n\nEmber.TEMPLATES['repos/list/tabs'] = Ember.Handlebars.template(function anonymous(Handlebars, depth0, helpers, partials, data) { helpers = helpers || Ember.Handlebars.helpers;\n var buffer = '', stack1, foundHelper, escapeExpression=this.escapeExpression, helperMissing=helpers.helperMissing;\n\n\n data.buffer.push(\"\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n\\n\\n\");\n return buffer;\n});\n\nEmber.TEMPLATES['repos/show'] = Ember.Handlebars.template(function anonymous(Handlebars, depth0, helpers, partials, data) { helpers = helpers || Ember.Handlebars.helpers;\n var buffer = '', stack1, foundHelper, escapeExpression=this.escapeExpression, self=this, helperMissing=helpers.helperMissing;\n\nfunction program1(depth0,data) {\n \n var buffer = '', stack1;\n data.buffer.push(\"\\n \");\n stack1 = helpers['with'].call(depth0, \"view.repository\", {hash:{},inverse:self.noop,fn:self.program(2, program2, data),contexts:[depth0],data:data});\n if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n data.buffer.push(\"\\n\\n \");\n return buffer;}\nfunction program2(depth0,data) {\n \n var buffer = '', stack1;\n data.buffer.push(\"\\n \\n\\n \");\n stack1 = helpers._triageMustache.call(depth0, \"description\", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + \"
\\n\\n \\n \\n \");\n stack1 = helpers._triageMustache.call(depth0, \"lastBuildLanguage\", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + \"\\n \\n \\n \\n \");\n stack1 = helpers._triageMustache.call(depth0, \"stats.watchers\", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + \"\\n \\n \\n \\n \\n \");\n stack1 = helpers._triageMustache.call(depth0, \"stats.forks\", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + \"\\n \\n \\n \\n\\n \");\n stack1 = helpers.view.call(depth0, \"Travis.RepoShowTabsView\", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + \"\\n \");\n stack1 = helpers.view.call(depth0, \"Travis.RepoShowToolsView\", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + \"\\n \");\n return buffer;}\n\nfunction program4(depth0,data) {\n \n \n data.buffer.push(\"\\n Loading \\n \");}\n\n data.buffer.push(\"\\n \");\n stack1 = helpers['if'].call(depth0, \"view.repository.isLoaded\", {hash:{},inverse:self.program(4, program4, data),fn:self.program(1, program1, data),contexts:[depth0],data:data});\n if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n data.buffer.push(\"\\n\\n
\\n \");\n foundHelper = helpers.outlet;\n stack1 = foundHelper ? foundHelper.call(depth0, \"pane\", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, \"outlet\", \"pane\", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + \"\\n
\\n
\\n\\n\\n\");\n return buffer;\n});\n\nEmber.TEMPLATES['repos/show/tabs'] = Ember.Handlebars.template(function anonymous(Handlebars, depth0, helpers, partials, data) { helpers = helpers || Ember.Handlebars.helpers;\n var buffer = '', stack1, escapeExpression=this.escapeExpression, helperMissing=helpers.helperMissing, self=this;\n\nfunction program1(depth0,data) {\n \n var buffer = '', stack1, foundHelper;\n data.buffer.push(\"\\n \\n \");\n foundHelper = helpers['t'];\n stack1 = foundHelper ? foundHelper.call(depth0, \"repositories.tabs.current\", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, \"t\", \"repositories.tabs.current\", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + \"\\n \\n \");\n return buffer;}\n\nfunction program3(depth0,data) {\n \n var buffer = '', stack1, foundHelper;\n data.buffer.push(\"\\n \\n \");\n foundHelper = helpers['t'];\n stack1 = foundHelper ? foundHelper.call(depth0, \"repositories.tabs.build_history\", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, \"t\", \"repositories.tabs.build_history\", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + \"\\n \\n \");\n return buffer;}\n\nfunction program5(depth0,data) {\n \n var buffer = '', stack1, foundHelper;\n data.buffer.push(\"\\n \\n \");\n foundHelper = helpers['t'];\n stack1 = foundHelper ? foundHelper.call(depth0, \"repositories.tabs.pull_requests\", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, \"t\", \"repositories.tabs.pull_requests\", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + \"\\n \\n \");\n return buffer;}\n\nfunction program7(depth0,data) {\n \n var buffer = '', stack1, foundHelper;\n data.buffer.push(\"\\n \\n \");\n foundHelper = helpers['t'];\n stack1 = foundHelper ? foundHelper.call(depth0, \"repositories.tabs.branches\", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, \"t\", \"repositories.tabs.branches\", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + \"\\n \\n \");\n return buffer;}\n\nfunction program9(depth0,data) {\n \n var buffer = '', stack1, foundHelper;\n data.buffer.push(\"\\n \\n \");\n foundHelper = helpers['t'];\n stack1 = foundHelper ? foundHelper.call(depth0, \"repositories.tabs.build\", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, \"t\", \"repositories.tabs.build\", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + \" #\");\n stack1 = helpers._triageMustache.call(depth0, \"view.build.number\", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + \"\\n \\n \");\n return buffer;}\n\nfunction program11(depth0,data) {\n \n var buffer = '', stack1, foundHelper;\n data.buffer.push(\"\\n \\n \");\n foundHelper = helpers['t'];\n stack1 = foundHelper ? foundHelper.call(depth0, \"repositories.tabs.job\", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, \"t\", \"repositories.tabs.job\", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + \" #\");\n stack1 = helpers._triageMustache.call(depth0, \"view.job.number\", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + \"\\n \\n \");\n return buffer;}\n\n data.buffer.push(\"\\n \\n \\n \");\n stack1 = helpers['if'].call(depth0, \"view.repository.slug\", {hash:{},inverse:self.noop,fn:self.program(1, program1, data),contexts:[depth0],data:data});\n if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n data.buffer.push(\"\\n \\n \\n \\n \\n \");\n stack1 = helpers['if'].call(depth0, \"view.repository.slug\", {hash:{},inverse:self.noop,fn:self.program(3, program3, data),contexts:[depth0],data:data});\n if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n data.buffer.push(\"\\n \\n \\n \\n \\n \");\n stack1 = helpers['if'].call(depth0, \"view.repository.slug\", {hash:{},inverse:self.noop,fn:self.program(5, program5, data),contexts:[depth0],data:data});\n if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n data.buffer.push(\"\\n \\n \\n \\n \\n \");\n stack1 = helpers['if'].call(depth0, \"view.repository.slug\", {hash:{},inverse:self.noop,fn:self.program(7, program7, data),contexts:[depth0],data:data});\n if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n data.buffer.push(\"\\n \\n \\n \\n \\n \");\n stack1 = helpers['if'].call(depth0, \"view.build.id\", {hash:{},inverse:self.noop,fn:self.program(9, program9, data),contexts:[depth0],data:data});\n if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n data.buffer.push(\"\\n \\n \\n \\n \\n \");\n stack1 = helpers['if'].call(depth0, \"view.job.id\", {hash:{},inverse:self.noop,fn:self.program(11, program11, data),contexts:[depth0],data:data});\n if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n data.buffer.push(\"\\n \\n \\n \\n\\n\");\n return buffer;\n});\n\nEmber.TEMPLATES['repos/show/tools'] = Ember.Handlebars.template(function anonymous(Handlebars, depth0, helpers, partials, data) { helpers = helpers || Ember.Handlebars.helpers;\n var buffer = '', stack1, foundHelper, escapeExpression=this.escapeExpression, helperMissing=helpers.helperMissing, self=this;\n\nfunction program1(depth0,data) {\n \n var buffer = '', stack1;\n data.buffer.push(\"\\n \");\n stack1 = {};\n stack1['contentBinding'] = \"view.branches\";\n stack1['selectionBinding'] = \"view.branch\";\n stack1['optionLabelPath'] = \"content.commit.branch\";\n stack1['optionValuePath'] = \"content.commit.branch\";\n stack1 = helpers.view.call(depth0, \"Ember.Select\", {hash:stack1,contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + \"\\n \");\n return buffer;}\n\nfunction program3(depth0,data) {\n \n \n data.buffer.push(\"\\n \\n \");}\n\n data.buffer.push(\"\\n\\n\");\n return buffer;\n});\n\nEmber.TEMPLATES['sponsors/decks'] = Ember.Handlebars.template(function anonymous(Handlebars, depth0, helpers, partials, data) { helpers = helpers || Ember.Handlebars.helpers;\n var buffer = '', stack1, foundHelper, escapeExpression=this.escapeExpression, self=this, helperMissing=helpers.helperMissing;\n\nfunction program1(depth0,data) {\n \n var buffer = '', stack1;\n data.buffer.push(\"\\n \");\n stack1 = helpers.each.call(depth0, \"deck\", {hash:{},inverse:self.noop,fn:self.program(2, program2, data),contexts:[depth0],data:data});\n if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n data.buffer.push(\"\\n \");\n return buffer;}\nfunction program2(depth0,data) {\n \n var buffer = '', stack1;\n data.buffer.push(\"\\n \\n \\n \\n \\n \\n \");\n return buffer;}\n\n data.buffer.push(\"\");\n foundHelper = helpers['t'];\n stack1 = foundHelper ? foundHelper.call(depth0, \"layouts.application.sponsers\", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, \"t\", \"layouts.application.sponsers\", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + \" \\n\\n\\n\\n\\n \\n \");\n foundHelper = helpers['t'];\n stack1 = foundHelper ? foundHelper.call(depth0, \"layouts.application.sponsors_link\", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, \"t\", \"layouts.application.sponsors_link\", {hash:{},contexts:[depth0],data:data});\n if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n data.buffer.push(\"\\n \\n
\\n\\n\");\n return buffer;\n});\n\nEmber.TEMPLATES['sponsors/links'] = Ember.Handlebars.template(function anonymous(Handlebars, depth0, helpers, partials, data) { helpers = helpers || Ember.Handlebars.helpers;\n var buffer = '', stack1, foundHelper, helperMissing=helpers.helperMissing, escapeExpression=this.escapeExpression, self=this;\n\nfunction program1(depth0,data) {\n \n var buffer = '', stack1;\n data.buffer.push(\"\\n \\n \");\n stack1 = {};\n stack1['unescaped'] = \"true\";\n stack1 = helpers._triageMustache.call(depth0, \"link\", {hash:stack1,contexts:[depth0],data:data});\n if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n data.buffer.push(\"\\n \\n \");\n return buffer;}\n\n data.buffer.push(\"\\n
\");\n foundHelper = helpers['t'];\n stack1 = foundHelper ? foundHelper.call(depth0, \"layouts.application.sponsers\", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, \"t\", \"layouts.application.sponsers\", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + \" \\n\\n \\n\\n
\\n \\n \");\n foundHelper = helpers['t'];\n stack1 = foundHelper ? foundHelper.call(depth0, \"layouts.application.sponsors_link\", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, \"t\", \"layouts.application.sponsors_link\", {hash:{},contexts:[depth0],data:data});\n if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n data.buffer.push(\"\\n \\n
\\n
\\n\\n\\n\");\n return buffer;\n});\n\nEmber.TEMPLATES['stats/show'] = Ember.Handlebars.template(function anonymous(Handlebars, depth0, helpers, partials, data) { helpers = helpers || Ember.Handlebars.helpers;\n \n\n\n data.buffer.push(\"
\\n
\\n\\n\");\n});\n\nEmber.TEMPLATES['workers/list'] = Ember.Handlebars.template(function anonymous(Handlebars, depth0, helpers, partials, data) { helpers = helpers || Ember.Handlebars.helpers;\n var buffer = '', stack1, escapeExpression=this.escapeExpression, self=this, helperMissing=helpers.helperMissing;\n\nfunction program1(depth0,data) {\n \n var buffer = '', stack1, foundHelper;\n data.buffer.push(\"\\n \\n \");\n foundHelper = helpers['t'];\n stack1 = foundHelper ? foundHelper.call(depth0, \"workers\", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, \"t\", \"workers\", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + \"\\n \\n \\n \\n \");\n stack1 = helpers.each.call(depth0, \"group\", \"in\", \"controller.groups\", {hash:{},inverse:self.program(11, program11, data),fn:self.program(2, program2, data),contexts:[depth0,depth0,depth0],data:data});\n if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n data.buffer.push(\"\\n \\n\");\n return buffer;}\nfunction program2(depth0,data) {\n \n var buffer = '', stack1;\n data.buffer.push(\"\\n \");\n stack1 = helpers.view.call(depth0, \"Travis.WorkersListView\", {hash:{},inverse:self.noop,fn:self.program(3, program3, data),contexts:[depth0],data:data});\n if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n data.buffer.push(\"\\n \");\n return buffer;}\nfunction program3(depth0,data) {\n \n var buffer = '', stack1;\n data.buffer.push(\"\\n \\n \\n \");\n stack1 = helpers._triageMustache.call(depth0, \"group.firstObject.host\", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + \"\\n \\n \\n \");\n stack1 = helpers.each.call(depth0, \"worker\", \"in\", \"group\", {hash:{},inverse:self.noop,fn:self.program(4, program4, data),contexts:[depth0,depth0,depth0],data:data});\n if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n data.buffer.push(\"\\n \\n \\n \");\n return buffer;}\nfunction program4(depth0,data) {\n \n var buffer = '', stack1;\n data.buffer.push(\"\\n \");\n stack1 = {};\n stack1['workerBinding'] = \"worker\";\n stack1 = helpers.view.call(depth0, \"Travis.WorkersItemView\", {hash:stack1,inverse:self.noop,fn:self.program(5, program5, data),contexts:[depth0],data:data});\n if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n data.buffer.push(\"\\n \");\n return buffer;}\nfunction program5(depth0,data) {\n \n var buffer = '', stack1;\n data.buffer.push(\"\\n \\n
\\n \");\n stack1 = helpers['if'].call(depth0, \"worker.isWorking\", {hash:{},inverse:self.program(9, program9, data),fn:self.program(6, program6, data),contexts:[depth0],data:data});\n if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n data.buffer.push(\"\\n \\n \");\n return buffer;}\nfunction program6(depth0,data) {\n \n var buffer = '', stack1;\n data.buffer.push(\"\\n \");\n stack1 = helpers['if'].call(depth0, \"worker.job_id\", {hash:{},inverse:self.noop,fn:self.program(7, program7, data),contexts:[depth0],data:data});\n if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n data.buffer.push(\"\\n \");\n return buffer;}\nfunction program7(depth0,data) {\n \n var buffer = '', stack1;\n data.buffer.push(\"\\n \\n \");\n stack1 = helpers._triageMustache.call(depth0, \"view.display\", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + \"\\n \\n \");\n return buffer;}\n\nfunction program9(depth0,data) {\n \n var buffer = '', stack1;\n data.buffer.push(\"\\n \");\n stack1 = helpers._triageMustache.call(depth0, \"view.display\", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + \"\\n \");\n return buffer;}\n\nfunction program11(depth0,data) {\n \n \n data.buffer.push(\"\\n No workers\\n \");}\n\n stack1 = helpers.view.call(depth0, \"Travis.WorkersView\", {hash:{},inverse:self.noop,fn:self.program(1, program1, data),contexts:[depth0],data:data});\n if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n data.buffer.push(\"\\n\\n\");\n return buffer;\n});\n\n})();\n//@ sourceURL=templates");minispade.register('config/locales', "(function() {window.I18n = window.I18n || {}\nwindow.I18n.translations = {\"ca\":{\"locales\":{\"en\":\"English\",\"es\":\"Español\",\"fr\":\"Français\",\"ja\":\"日本語\",\"nb\":\"Norsk Bokmål\",\"nl\":\"Nederlands\",\"pl\":\"Polski\",\"pt-BR\":\"português brasileiro\",\"ru\":\"Русский\"}},\"en\":{\"errors\":{\"messages\":{\"not_found\":\"not found\",\"already_confirmed\":\"was already confirmed\",\"not_locked\":\"was not locked\"}},\"devise\":{\"failure\":{\"unauthenticated\":\"You need to sign in or sign up before continuing.\",\"unconfirmed\":\"You have to confirm your account before continuing.\",\"locked\":\"Your account is locked.\",\"invalid\":\"Invalid email or password.\",\"invalid_token\":\"Invalid authentication token.\",\"timeout\":\"Your session expired, please sign in again to continue.\",\"inactive\":\"Your account was not activated yet.\"},\"sessions\":{\"signed_in\":\"Signed in successfully.\",\"signed_out\":\"Signed out successfully.\"},\"passwords\":{\"send_instructions\":\"You will receive an email with instructions about how to reset your password in a few minutes.\",\"updated\":\"Your password was changed successfully. You are now signed in.\"},\"confirmations\":{\"send_instructions\":\"You will receive an email with instructions about how to confirm your account in a few minutes.\",\"confirmed\":\"Your account was successfully confirmed. You are now signed in.\"},\"registrations\":{\"signed_up\":\"You have signed up successfully. If enabled, a confirmation was sent to your e-mail.\",\"updated\":\"You updated your account successfully.\",\"destroyed\":\"Bye! Your account was successfully cancelled. We hope to see you again soon.\"},\"unlocks\":{\"send_instructions\":\"You will receive an email with instructions about how to unlock your account in a few minutes.\",\"unlocked\":\"Your account was successfully unlocked. You are now signed in.\"},\"mailer\":{\"confirmation_instructions\":{\"subject\":\"Confirmation instructions\"},\"reset_password_instructions\":{\"subject\":\"Reset password instructions\"},\"unlock_instructions\":{\"subject\":\"Unlock Instructions\"}}},\"datetime\":{\"distance_in_words\":{\"hours_exact\":{\"one\":\"%{count} hour\",\"other\":\"%{count} hours\"},\"minutes_exact\":{\"one\":\"%{count} minute\",\"other\":\"%{count} minutes\"},\"seconds_exact\":{\"one\":\"%{count} second\",\"other\":\"%{count} seconds\"}}},\"workers\":\"Workers\",\"queue\":\"Queue\",\"no_job\":\"There are no jobs\",\"repositories\":{\"branch\":\"Branch\",\"image_url\":\"Image URL\",\"markdown\":\"Markdown\",\"textile\":\"Textile\",\"rdoc\":\"RDOC\",\"commit\":\"Commit\",\"message\":\"Message\",\"started_at\":\"Started\",\"duration\":\"Duration\",\"finished_at\":\"Finished\",\"tabs\":{\"current\":\"Current\",\"build_history\":\"Build History\",\"branches\":\"Branch Summary\",\"pull_requests\":\"Pull Requests\",\"build\":\"Build\",\"job\":\"Job\"}},\"build\":{\"job\":\"Job\",\"duration\":\"Duration\",\"finished_at\":\"Finished\"},\"jobs\":{\"messages\":{\"sponsored_by\":\"This test suite was run on a worker box sponsored by\"},\"build_matrix\":\"Build Matrix\",\"allowed_failures\":\"Allowed Failures\",\"author\":\"Author\",\"config\":\"Config\",\"compare\":\"Compare\",\"committer\":\"Committer\",\"branch\":\"Branch\",\"commit\":\"Commit\",\"message\":\"Message\",\"started_at\":\"Started\",\"duration\":\"Duration\",\"finished_at\":\"Finished\"},\"builds\":{\"name\":\"Build\",\"messages\":{\"sponsored_by\":\"This test suite was run on a worker box sponsored by\"},\"build_matrix\":\"Build Matrix\",\"allowed_failures\":\"Allowed Failures\",\"author\":\"Author\",\"config\":\"Config\",\"compare\":\"Compare\",\"committer\":\"Committer\",\"branch\":\"Branch\",\"commit\":\"Commit\",\"message\":\"Message\",\"started_at\":\"Started\",\"duration\":\"Duration\",\"finished_at\":\"Finished\",\"show_more\":\"Show more\"},\"layouts\":{\"top\":{\"home\":\"Home\",\"blog\":\"Blog\",\"docs\":\"Docs\",\"stats\":\"Stats\",\"github_login\":\"Sign in with Github\",\"profile\":\"Profile\",\"sign_out\":\"Sign Out\",\"admin\":\"Admin\"},\"application\":{\"fork_me\":\"Fork me on Github\",\"recent\":\"Recent\",\"search\":\"Search\",\"sponsers\":\"Sponsors\",\"sponsors_link\":\"See all of our amazing sponsors →\",\"my_repositories\":\"My Repositories\"},\"about\":{\"alpha\":\"This stuff is alpha.\",\"messages\":{\"alpha\":\"Please do not consider this a stable service. We're still far from that! More info here. \"},\"join\":\"Join us and help!\",\"mailing_list\":\"Mailing List\",\"repository\":\"Repository\",\"twitter\":\"Twitter\"},\"mobile\":{\"author\":\"Author\",\"build\":\"Build\",\"build_matrix\":\"Build Matrix\",\"commit\":\"Commit\",\"committer\":\"Committer\",\"compare\":\"Compare\",\"config\":\"Config\",\"duration\":\"Duration\",\"finished_at\":\"Finished at\",\"job\":\"Job\",\"log\":\"Log\"}},\"profiles\":{\"show\":{\"email\":\"Email\",\"github\":\"Github\",\"message\":{\"your_repos\":\" Flick the switches below to turn on the Travis service hook for your projects, then push to GitHub.\",\"config\":\"how to configure custom build options\"},\"messages\":{\"notice\":\"To get started, please read our Getting Started guide .\\n It will only take a couple of minutes. \"},\"token\":\"Token\",\"your_repos\":\"Your Repositories\",\"update\":\"Update\",\"update_locale\":\"Update\",\"your_locale\":\"Your Locale\"}},\"statistics\":{\"index\":{\"count\":\"Count\",\"repo_growth\":\"Repository Growth\",\"total_projects\":\"Total Projects/Repositories\",\"build_count\":\"Build Count\",\"last_month\":\"last month\",\"total_builds\":\"Total Builds\"}},\"locales\":{\"en\":\"English\",\"es\":\"Español\",\"fr\":\"Français\",\"ja\":\"日本語\",\"nb\":\"Norsk Bokmål\",\"pl\":\"Polski\",\"ru\":\"Русский\",\"nl\":\"Nederlands\",\"pt-BR\":\"português brasileiro\"}},\"es\":{\"datetime\":{\"distance_in_words\":{\"hours_exact\":{\"one\":\"%{count} hora\",\"other\":\"%{count} horas\"},\"minutes_exact\":{\"one\":\"%{count} minuto\",\"other\":\"%{count} minutos\"},\"seconds_exact\":{\"one\":\"%{count} segundo\",\"other\":\"%{count} segundos\"}}},\"workers\":\"Procesos\",\"queue\":\"Cola\",\"no_job\":\"No hay trabajos\",\"repositories\":{\"branch\":\"Rama\",\"image_url\":\"Imagen URL\",\"markdown\":\"Markdown\",\"textile\":\"Textile\",\"rdoc\":\"RDOC\",\"commit\":\"Commit\",\"message\":\"Mensaje\",\"started_at\":\"Iniciado\",\"duration\":\"Duración\",\"finished_at\":\"Finalizado\",\"tabs\":{\"current\":\"Actual\",\"build_history\":\"Histórico\",\"branches\":\"Ramas\",\"build\":\"Builds\",\"job\":\"Trabajo\"}},\"build\":{\"job\":\"Trabajo\",\"duration\":\"Duración\",\"finished_at\":\"Finalizado\"},\"jobs\":{\"messages\":{\"sponsored_by\":\"Esta serie de tests han sido ejecutados en una caja de Proceso patrocinada por\"},\"build_matrix\":\"Matriz de Builds\",\"allowed_failures\":\"Fallos Permitidos\",\"author\":\"Autor\",\"config\":\"Configuración\",\"compare\":\"Comparar\",\"committer\":\"Committer\",\"branch\":\"Rama\",\"commit\":\"Commit\",\"message\":\"Mensaje\",\"started_at\":\"Iniciado\",\"duration\":\"Duración\",\"finished_at\":\"Finalizado\",\"sponsored_by\":\"Patrocinado por\"},\"builds\":{\"name\":\"Build\",\"messages\":{\"sponsored_by\":\"Esta serie de tests han sido ejecutados en una caja de Proceso patrocinada por\"},\"build_matrix\":\"Matriz de Builds\",\"allowed_failures\":\"Fallos Permitidos\",\"author\":\"Autor\",\"config\":\"Configuración\",\"compare\":\"Comparar\",\"committer\":\"Committer\",\"branch\":\"Rama\",\"commit\":\"Commit\",\"message\":\"Mensaje\",\"started_at\":\"Iniciado\",\"duration\":\"Duración\",\"finished_at\":\"Finalizado\"},\"layouts\":{\"top\":{\"home\":\"Inicio\",\"blog\":\"Blog\",\"docs\":\"Documentación\",\"stats\":\"Estadísticas\",\"github_login\":\"Iniciar sesión con Github\",\"profile\":\"Perfil\",\"sign_out\":\"Desconectar\",\"admin\":\"Admin\"},\"application\":{\"fork_me\":\"Hazme un Fork en Github\",\"recent\":\"Reciente\",\"search\":\"Buscar\",\"sponsers\":\"Patrocinadores\",\"sponsors_link\":\"Ver todos nuestros patrocinadores →\",\"my_repositories\":\"Mis Repositorios\"},\"about\":{\"alpha\":\"Esto es alpha.\",\"messages\":{\"alpha\":\"Por favor no considereis esto un servicio estable. Estamos estamos aún lejos de ello! Más información aquí. \"},\"join\":\"Únetenos y ayudanos!\",\"mailing_list\":\"Lista de Correos\",\"repository\":\"Repositorio\",\"twitter\":\"Twitter\"}},\"profiles\":{\"show\":{\"email\":\"Correo electrónico\",\"github\":\"Github\",\"message\":{\"your_repos\":\" Activa los interruptores para inicial el Travis service hook para tus proyectos, y haz un Push en GitHub. \\n Para probar varias versiones de ruby, mira\",\"config\":\"como configurar tus propias opciones para el Build\"},\"messages\":{\"notice\":\"Para comenzar, por favor lee nuestra Guía de Inicio .\\n Solo tomará unos pocos minutos. \"},\"token\":\"Token\",\"your_repos\":\"Tus repositorios\",\"update\":\"Actualizar\",\"update_locale\":\"Actualizar\",\"your_locale\":\"Tu Idioma\"}},\"statistics\":{\"index\":{\"count\":\"Número\",\"repo_growth\":\"Crecimiento de Repositorios\",\"total_projects\":\"Total de Proyectos/Repositorios\",\"build_count\":\"Número de Builds\",\"last_month\":\"mes anterior\",\"total_builds\":\"Total de Builds\"}},\"locales\":{\"en\":\"English\",\"es\":\"Español\",\"fr\":\"Français\",\"ja\":\"日本語\",\"nb\":\"Norsk Bokmål\",\"pl\":\"Polski\",\"ru\":\"Русский\",\"nl\":\"Nederlands\",\"pt-BR\":\"português brasileiro\"}},\"fr\":{\"datetime\":{\"distance_in_words\":{\"hours_exact\":{\"one\":\"%{count} heure\",\"other\":\"%{count} heures\"},\"minutes_exact\":{\"one\":\"%{count} minute\",\"other\":\"%{count} minutes\"},\"seconds_exact\":{\"one\":\"%{count} seconde\",\"other\":\"%{count} secondes\"}}},\"workers\":\"Processus\",\"queue\":\"File\",\"no_job\":\"Pas de tâches\",\"repositories\":{\"branch\":\"Branche\",\"image_url\":\"Image\",\"markdown\":\"Markdown\",\"textile\":\"Textile\",\"rdoc\":\"RDOC\",\"commit\":\"Commit\",\"message\":\"Message\",\"started_at\":\"Commencé\",\"duration\":\"Durée\",\"finished_at\":\"Terminé\",\"tabs\":{\"current\":\"Actuel\",\"build_history\":\"Historique des tâches\",\"branches\":\"Résumé des branches\",\"build\":\"Construction\",\"job\":\"Tâche\"}},\"build\":{\"job\":\"Tâche\",\"duration\":\"Durée\",\"finished_at\":\"Terminé\"},\"jobs\":{\"messages\":{\"sponsored_by\":\"Cette série de tests a été exécutée sur une machine sponsorisée par\"},\"build_matrix\":\"Matrice des versions\",\"allowed_failures\":\"Échecs autorisés\",\"author\":\"Auteur\",\"config\":\"Config\",\"compare\":\"Comparer\",\"committer\":\"Committeur\",\"branch\":\"Branche\",\"commit\":\"Commit\",\"message\":\"Message\",\"started_at\":\"Commencé\",\"duration\":\"Durée\",\"finished_at\":\"Terminé\",\"sponsored_by\":\"Cette série de tests a été exécutée sur une machine sponsorisée par\"},\"builds\":{\"name\":\"Version\",\"messages\":{\"sponsored_by\":\"Cette série de tests a été exécutée sur une machine sponsorisée par\"},\"build_matrix\":\"Matrice des versions\",\"allowed_failures\":\"Échecs autorisés\",\"author\":\"Auteur\",\"config\":\"Config\",\"compare\":\"Comparer\",\"committer\":\"Committeur\",\"branch\":\"Branche\",\"commit\":\"Commit\",\"message\":\"Message\",\"started_at\":\"Commencé\",\"duration\":\"Durée\",\"finished_at\":\"Terminé\"},\"layouts\":{\"top\":{\"home\":\"Accueil\",\"blog\":\"Blog\",\"docs\":\"Documentation\",\"stats\":\"Statistiques\",\"github_login\":\"Connection Github\",\"profile\":\"Profil\",\"sign_out\":\"Déconnection\",\"admin\":\"Admin\"},\"application\":{\"fork_me\":\"Faites un Fork sur Github\",\"recent\":\"Récent\",\"search\":\"Chercher\",\"sponsers\":\"Sponsors\",\"sponsors_link\":\"Voir tous nos extraordinaire sponsors →\",\"my_repositories\":\"Mes dépôts\"},\"about\":{\"alpha\":\"Ceci est en alpha.\",\"messages\":{\"alpha\":\"S'il vous plaît ne considérez pas ce service comme étant stable. Nous sommes loin de ça! Plus d'infos ici. \"},\"join\":\"Joignez-vous à nous et aidez-nous!\",\"mailing_list\":\"Liste de distribution\",\"repository\":\"Dépôt\",\"twitter\":\"Twitter\"},\"mobile\":{\"author\":\"Auteur\",\"build\":\"Version\",\"build_matrix\":\"Matrice des versions\",\"commit\":\"Commit\",\"committer\":\"Committeur\",\"compare\":\"Comparer\",\"config\":\"Config\",\"duration\":\"Durée\",\"finished_at\":\"Terminé à\",\"job\":\"Tâche\",\"log\":\"Journal\"}},\"profiles\":{\"show\":{\"github\":\"Github\",\"message\":{\"your_repos\":\"Utilisez les boutons ci-dessous pour activer Travis sur vos projets puis déployez sur GitHub. \\nPour tester sur plus de versions de ruby, voir\",\"config\":\"comment configurer des options de version personnalisées\"},\"messages\":{\"notice\":\"Pour commencer, veuillez lire notre guide de démarrage .\\n Cela ne vous prendra que quelques minutes. \"},\"token\":\"Jeton\",\"your_repos\":\"Vos dépôts\",\"email\":\"Courriel\",\"update\":\"Modifier\",\"update_locale\":\"Modifier\",\"your_locale\":\"Votre langue\"}},\"statistics\":{\"index\":{\"count\":\"Décompte\",\"repo_growth\":\"Croissance de dépôt\",\"total_projects\":\"Total des projets/dépôts\",\"build_count\":\"Décompte des versions\",\"last_month\":\"mois dernier\",\"total_builds\":\"Total des versions\"}},\"admin\":{\"actions\":{\"create\":\"créer\",\"created\":\"créé\",\"delete\":\"supprimer\",\"deleted\":\"supprimé\",\"update\":\"mise à jour\",\"updated\":\"mis à jour\"},\"credentials\":{\"log_out\":\"Déconnection\"},\"delete\":{\"confirmation\":\"Oui, je suis sure\",\"flash_confirmation\":\"%{name} a été détruit avec succès\"},\"flash\":{\"error\":\"%{name} n'a pas pu être %{action}\",\"noaction\":\"Aucune action n'a été entreprise\",\"successful\":\"%{name} a réussi à %{action}\"},\"history\":{\"name\":\"Historique\",\"no_activity\":\"Aucune activité\",\"page_name\":\"Historique pour %{name}\"},\"list\":{\"add_new\":\"Ajouter un nouveau\",\"delete_action\":\"Supprimer\",\"delete_selected\":\"Supprimer la sélection\",\"edit_action\":\"Modifier\",\"search\":\"Rechercher\",\"select\":\"Sélectionner le %{name} à modifier\",\"select_action\":\"Sélectionner\",\"show_all\":\"Montrer tout\"},\"new\":{\"basic_info\":\"Information de base\",\"cancel\":\"Annuler\",\"chosen\":\"%{name} choisi\",\"chose_all\":\"Choisir tout\",\"clear_all\":\"Déselectionner tout\",\"many_chars\":\"caractères ou moins\",\"one_char\":\"caractère.\",\"optional\":\"Optionnel\",\"required\":\"Requis\",\"save\":\"Sauvegarder\",\"save_and_add_another\":\"Sauvegarder et en ajouter un autre\",\"save_and_edit\":\"Sauvegarder et modifier\",\"select_choice\":\"Faites vos choix et cliquez\"},\"dashboard\":{\"add_new\":\"Ajouter un nouveau\",\"last_used\":\"Dernière utilisation\",\"model_name\":\"Nom du modèle\",\"modify\":\"Modification\",\"name\":\"Tableau de bord\",\"pagename\":\"Administration du site\",\"records\":\"Enregistrements\",\"show\":\"Voir\",\"ago\":\"plus tôt\"}},\"home\":{\"name\":\"accueil\"},\"repository\":{\"duration\":\"Durée\"},\"devise\":{\"confirmations\":{\"confirmed\":\"Votre compte a été crée avec succès. Vous être maintenant connecté.\",\"send_instructions\":\"Vous allez recevoir un courriel avec les instructions de confirmation de votre compte dans quelques minutes.\"},\"failure\":{\"inactive\":\"Votre compte n'a pas encore été activé.\",\"invalid\":\"Adresse courriel ou mot de passe invalide.\",\"invalid_token\":\"Jeton d'authentification invalide.\",\"locked\":\"Votre compte est bloqué.\",\"timeout\":\"Votre session est expirée, veuillez vous reconnecter pour continuer.\",\"unauthenticated\":\"Vous devez vous connecter ou vous enregistrer afin de continuer\",\"unconfirmed\":\"Vous devez confirmer votre compte avant de continuer.\"},\"mailer\":{\"confirmation_instructions\":{\"subject\":\"Instructions de confirmations\"},\"reset_password_instructions\":{\"subject\":\"Instruction de remise à zéro du mot de passe\"},\"unlock_instructions\":{\"subject\":\"Instruction de débloquage\"}},\"passwords\":{\"send_instructions\":\"Vous recevrez un courriel avec les instructions de remise à zéro du mot de passe dans quelques minutes.\",\"updated\":\"Votre mot de passe a été changé avec succès. Vous êtes maintenant connecté.\"},\"registrations\":{\"destroyed\":\"Au revoir! Votre compte a été annulé avec succès. Nous espérons vous revoir bientôt.\",\"signed_up\":\"Vous êtes enregistré avec succès. Si activé, une confirmation vous a été envoyé par courriel.\",\"updated\":\"Votre compte a été mis a jour avec succès\"},\"sessions\":{\"signed_in\":\"Connecté avec succès\",\"signed_out\":\"Déconnecté avec succès\"},\"unlocks\":{\"send_instructions\":\"Vous recevrez un courriel contenant les instructions pour débloquer votre compte dans quelques minutes.\",\"unlocked\":\"Votre compte a été débloqué avec succès.\"}},\"errors\":{\"messages\":{\"already_confirmed\":\"étais déja confirmé\",\"not_found\":\"n'a pas été trouvé\",\"not_locked\":\"n'étais pas bloqué\"}},\"locales\":{\"en\":\"English\",\"es\":\"Español\",\"ja\":\"日本語\",\"ru\":\"Русский\",\"fr\":\"Français\",\"nb\":\"Norsk Bokmål\",\"pl\":\"Polski\",\"nl\":\"Nederlands\",\"pt-BR\":\"português brasileiro\"}},\"ja\":{\"workers\":\"ワーカー\",\"queue\":\"キュー\",\"no_job\":\"ジョブはありません\",\"repositories\":{\"branch\":\"ブランチ\",\"image_url\":\"画像URL\",\"markdown\":\".md\",\"textile\":\".textile\",\"rdoc\":\".rdoc\",\"commit\":\"コミット\",\"message\":\"メッセージ\",\"started_at\":\"開始時刻\",\"duration\":\"処理時間\",\"finished_at\":\"終了時刻\",\"tabs\":{\"current\":\"最新\",\"build_history\":\"ビルド履歴\",\"branches\":\"ブランチまとめ\",\"build\":\"ビルド\",\"job\":\"ジョブ\"}},\"build\":{\"job\":\"ジョブ\",\"duration\":\"処理時間\",\"finished_at\":\"終了時刻\"},\"jobs\":{\"messages\":{\"sponsored_by\":\"このテストは以下のスポンサーの協力で行いました。\"},\"build_matrix\":\"ビルドマトリクス\",\"allowed_failures\":\"失敗許容範囲内\",\"author\":\"制作者\",\"config\":\"設定\",\"compare\":\"比較\",\"committer\":\"コミット者\",\"branch\":\"ブランチ\",\"commit\":\"コミット\",\"message\":\"メッセージ\",\"started_at\":\"開始時刻\",\"duration\":\"処理時間\",\"finished_at\":\"終了時刻\"},\"builds\":{\"name\":\"ビルド\",\"messages\":{\"sponsored_by\":\"このテストは以下のスポンサーの協力で行いました。\"},\"build_matrix\":\"失敗許容範囲外\",\"allowed_failures\":\"失敗許容範囲内\",\"author\":\"制作者\",\"config\":\"設定\",\"compare\":\"比較\",\"committer\":\"コミット者\",\"branch\":\"ブランチ\",\"commit\":\"コミット\",\"message\":\"メッセージ\",\"started_at\":\"開始時刻\",\"duration\":\"処理時間\",\"finished_at\":\"終了時刻\"},\"layouts\":{\"about\":{\"alpha\":\"まだアルファですよ!\",\"join\":\"参加してみよう!\",\"mailing_list\":\"メールリスト\",\"messages\":{\"alpha\":\"Travis-ciは安定したサービスまで後一歩!詳しくはこちら \"},\"repository\":\"リポジトリ\",\"twitter\":\"ツイッター\"},\"application\":{\"fork_me\":\"Githubでフォークしよう\",\"my_repositories\":\"マイリポジトリ\",\"recent\":\"最近\",\"search\":\"検索\",\"sponsers\":\"スポンサー\",\"sponsors_link\":\"スポンサーをもっと見る →\"},\"top\":{\"blog\":\"ブログ\",\"docs\":\"Travisとは?\",\"github_login\":\"Githubでログイン\",\"home\":\"ホーム\",\"profile\":\"プロフィール\",\"sign_out\":\"ログアウト\",\"stats\":\"統計\",\"admin\":\"管理\"},\"mobile\":{\"author\":\"制作者\",\"build\":\"ビルド\",\"build_matrix\":\"ビルドマトリクス\",\"commit\":\"コミット\",\"committer\":\"コミット者\",\"compare\":\"比較\",\"config\":\"設定\",\"duration\":\"処理時間\",\"finished_at\":\"終了時刻\",\"job\":\"ジョブ\",\"log\":\"ログ\"}},\"profiles\":{\"show\":{\"github\":\"Github\",\"email\":\"メール\",\"message\":{\"config\":\"詳細設定\",\"your_repos\":\"以下のスイッチを設定し、Travis-ciを有効にします。Githubへプッシュしたらビルドは自動的に開始します。複数バーションや細かい設定はこちらへ:\"},\"messages\":{\"notice\":\"まずはTravisのはじめ方 を参照してください。\"},\"token\":\"トークン\",\"your_repos\":\"リポジトリ\",\"update\":\"更新\",\"update_locale\":\"更新\",\"your_locale\":\"言語設定\"}},\"statistics\":{\"index\":{\"build_count\":\"ビルド数\",\"count\":\"数\",\"last_month\":\"先月\",\"repo_growth\":\"リポジトリ\",\"total_builds\":\"合計ビルド数\",\"total_projects\":\"合計リポジトリ\"}},\"locales\":{\"en\":\"English\",\"es\":\"Español\",\"fr\":\"Français\",\"ja\":\"日本語\",\"nb\":\"Norsk Bokmål\",\"pl\":\"Polski\",\"ru\":\"Русский\",\"nl\":\"Nederlands\",\"pt-BR\":\"português brasileiro\"}},\"nb\":{\"admin\":{\"actions\":{\"create\":\"opprett\",\"created\":\"opprettet\",\"delete\":\"slett\",\"deleted\":\"slettet\",\"update\":\"oppdater\",\"updated\":\"oppdatert\"},\"credentials\":{\"log_out\":\"Logg ut\"},\"dashboard\":{\"add_new\":\"Legg til ny\",\"ago\":\"siden\",\"last_used\":\"Sist brukt\",\"model_name\":\"Modell\",\"modify\":\"Rediger\",\"name\":\"Dashbord\",\"pagename\":\"Nettstedsadministrasjon\",\"records\":\"Oppføringer\",\"show\":\"Vis\"},\"delete\":{\"confirmation\":\"Ja, jeg er sikker\",\"flash_confirmation\":\"%{name} ble slettet\"},\"flash\":{\"error\":\"%{name} kunne ikke bli %{action}\",\"noaction\":\"Ingen handlinger ble utført\",\"successful\":\"%{name} ble %{action}\"},\"history\":{\"name\":\"Logg\",\"no_activity\":\"Ingen aktivitet\",\"page_name\":\"Logg for %{name}\"},\"list\":{\"add_new\":\"Legg til ny\",\"delete_action\":\"Slett\",\"delete_selected\":\"Slett valgte\",\"edit_action\":\"Rediger\",\"search\":\"Søk\",\"select\":\"Velg %{name} for å redigere\",\"select_action\":\"Velg\",\"show_all\":\"Vis alle \"},\"new\":{\"basic_info\":\"Basisinformasjon\",\"cancel\":\"Avbryt\",\"chosen\":\"Valgt %{name}\",\"chose_all\":\"Velg alle\",\"clear_all\":\"Fjern alle\",\"many_chars\":\"eller færre tegn.\",\"one_char\":\"tegn.\",\"optional\":\"Valgfri\",\"required\":\"Påkrevd\",\"save\":\"Lagre\",\"save_and_add_another\":\"Lagre og legg til ny\",\"save_and_edit\":\"Lagre og rediger\",\"select_choice\":\"Kryss av for dine valg og klikk\"}},\"build\":{\"duration\":\"Varighet\",\"finished_at\":\"Fullført\",\"job\":\"Jobb\"},\"builds\":{\"allowed_failures\":\"Tillatte feil\",\"author\":\"Forfatter\",\"branch\":\"Gren\",\"build_matrix\":\"Jobbmatrise\",\"commit\":\"Innsending\",\"committer\":\"Innsender\",\"compare\":\"Sammenlign\",\"config\":\"Oppsett\",\"duration\":\"Varighet\",\"finished_at\":\"Fullført\",\"message\":\"Beskrivelse\",\"messages\":{\"sponsored_by\":\"Denne testen ble kjørt på en maskin sponset av\"},\"name\":\"Jobb\",\"started_at\":\"Startet\"},\"datetime\":{\"distance_in_words\":{\"hours_exact\":{\"one\":\"%{count} time\",\"other\":\"%{count} timer\"},\"minutes_exact\":{\"one\":\"%{count} minutt\",\"other\":\"%{count} minutter\"},\"seconds_exact\":{\"one\":\"%{count} sekund\",\"other\":\"%{count} sekunder\"}}},\"devise\":{\"confirmations\":{\"confirmed\":\"Din konto er aktivert og du er nå innlogget.\",\"send_instructions\":\"Om noen få minutter så vil du få en e-post med informasjon om hvordan du bekrefter kontoen din.\"},\"failure\":{\"inactive\":\"Kontoen din har ikke blitt aktivert enda.\",\"invalid\":\"Ugyldig e-post eller passord.\",\"invalid_token\":\"Ugyldig autentiseringskode.\",\"locked\":\"Kontoen din er låst.\",\"timeout\":\"Du ble logget ut siden på grunn av mangel på aktivitet, vennligst logg inn på nytt.\",\"unauthenticated\":\"Du må logge inn eller registrere deg for å fortsette.\",\"unconfirmed\":\"Du må bekrefte kontoen din før du kan fortsette.\"},\"mailer\":{\"confirmation_instructions\":{\"subject\":\"Bekreftelsesinformasjon\"},\"reset_password_instructions\":{\"subject\":\"Instruksjoner for å få nytt passord\"},\"unlock_instructions\":{\"subject\":\"Opplåsningsinstruksjoner\"}},\"passwords\":{\"send_instructions\":\"Om noen få minutter så vil du få en epost med informasjon om hvordan du kan få et nytt passord.\",\"updated\":\"Passordet ditt ble endret, og du er logget inn.\"},\"registrations\":{\"destroyed\":\"Adjø! Kontoen din ble kansellert. Vi håper vi ser deg igjen snart.\",\"signed_up\":\"Du er nå registrert.\",\"updated\":\"Kontoen din ble oppdatert.\"},\"sessions\":{\"signed_in\":\"Du er nå logget inn.\",\"signed_out\":\"Du er nå logget ut.\"},\"unlocks\":{\"send_instructions\":\"Om noen få minutter så kommer du til å få en e-post med informasjon om hvordan du kan låse opp kontoen din.\",\"unlocked\":\"Kontoen din ble låst opp, og du er nå logget inn igjen.\"}},\"errors\":{\"messages\":{\"already_confirmed\":\"har allerede blitt bekreftet\",\"not_found\":\"ikke funnnet\",\"not_locked\":\"var ikke låst\"}},\"home\":{\"name\":\"hjem\"},\"jobs\":{\"allowed_failures\":\"Tillatte feil\",\"author\":\"Forfatter\",\"branch\":\"Gren\",\"build_matrix\":\"Jobbmatrise\",\"commit\":\"Innsending\",\"committer\":\"Innsender\",\"compare\":\"Sammenlign\",\"config\":\"Oppsett\",\"duration\":\"Varighet\",\"finished_at\":\"Fullført\",\"message\":\"Beskrivelse\",\"messages\":{\"sponsored_by\":\"Denne testserien ble kjørt på en maskin sponset av\"},\"started_at\":\"Startet\"},\"layouts\":{\"about\":{\"alpha\":\"Dette er alfa-greier.\",\"join\":\"Bli med og hjelp oss!\",\"mailing_list\":\"E-postliste\",\"messages\":{\"alpha\":\"Dette er ikke en stabil tjeneste. Vi har fremdeles et stykke igjen! Mer informasjon finner du her .\"},\"repository\":\"Kodelager\",\"twitter\":\"Twitter.\"},\"application\":{\"fork_me\":\"Se koden på Github\",\"my_repositories\":\"Mine kodelagre\",\"recent\":\"Nylig\",\"search\":\"Søk\",\"sponsers\":\"Sponsorer\",\"sponsors_link\":\"Se alle de flotte sponsorene våre →\"},\"mobile\":{\"author\":\"Forfatter\",\"build\":\"Jobb\",\"build_matrix\":\"Jobbmatrise\",\"commit\":\"Innsending\",\"committer\":\"Innsender\",\"compare\":\"Sammenlign\",\"config\":\"Oppsett\",\"duration\":\"Varighet\",\"finished_at\":\"Fullført\",\"job\":\"Jobb\",\"log\":\"Logg\"},\"top\":{\"admin\":\"Administrator\",\"blog\":\"Blogg\",\"docs\":\"Dokumentasjon\",\"github_login\":\"Logg inn med Github\",\"home\":\"Hjem\",\"profile\":\"Profil\",\"sign_out\":\"Logg ut\",\"stats\":\"Statistikk\"}},\"no_job\":\"Ingen jobber finnnes\",\"profiles\":{\"show\":{\"email\":\"E-post\",\"github\":\"Github\",\"message\":{\"config\":\"hvordan sette opp egne jobbinnstillinger\",\"your_repos\":\"Slå\\u0010 på Travis for prosjektene dine ved å dra i bryterne under, og send koden til Github. \\nFor å teste mot flere ruby-versjoner, se dokumentasjonen for\"},\"messages\":{\"notice\":\"For å komme i gang, vennligst les kom-i-gang-veivisereren vår. Det tar bare et par minutter. \"},\"token\":\"Kode\",\"update\":\"Oppdater\",\"update_locale\":\"Oppdater\",\"your_locale\":\"Ditt språk\",\"your_repos\":\"Dine kodelagre\"}},\"queue\":\"Kø\",\"repositories\":{\"branch\":\"Gren\",\"commit\":\"Innsender\",\"duration\":\"Varighet\",\"finished_at\":\"Fullført\",\"image_url\":\"Bilde-URL\",\"markdown\":\"Markdown\",\"message\":\"Beskrivelse\",\"rdoc\":\"RDOC\",\"started_at\":\"Startet\",\"tabs\":{\"branches\":\"Grensammendrag\",\"build\":\"Jobb\",\"build_history\":\"Jobblogg\",\"current\":\"Siste\",\"job\":\"Jobb\"},\"textile\":\"Textile\"},\"repository\":{\"duration\":\"Varighet\"},\"statistics\":{\"index\":{\"build_count\":\"Antall jobber\",\"count\":\"Antall\",\"last_month\":\"siste måned\",\"repo_growth\":\"Vekst i kodelager\",\"total_builds\":\"Totale jobber\",\"total_projects\":\"Antall prosjekter/kodelagre\"}},\"workers\":\"Arbeidere\",\"locales\":{\"en\":\"English\",\"es\":\"Español\",\"ja\":\"日本語\",\"ru\":\"Русский\",\"fr\":\"Français\",\"nb\":\"Norsk Bokmål\",\"pl\":\"Polski\",\"nl\":\"Nederlands\",\"pt-BR\":\"português brasileiro\"}},\"nl\":{\"admin\":{\"actions\":{\"create\":\"aanmaken\",\"created\":\"aangemaakt\",\"delete\":\"verwijderen\",\"deleted\":\"verwijderd\",\"update\":\"bijwerken\",\"updated\":\"bijgewerkt\"},\"credentials\":{\"log_out\":\"Afmelden\"},\"dashboard\":{\"add_new\":\"Nieuwe toevoegen\",\"ago\":\"geleden\",\"last_used\":\"Laatst gebruikt\",\"model_name\":\"Model naam\",\"modify\":\"Wijzigen\",\"pagename\":\"Site administratie\",\"show\":\"Laten zien\",\"records\":\"Gegevens\"},\"delete\":{\"confirmation\":\"Ja, ik ben zeker\",\"flash_confirmation\":\"%{name} is vernietigd\"},\"flash\":{\"error\":\"%{name} kon niet worden %{action}\",\"noaction\":\"Er zijn geen acties genomen\",\"successful\":\"%{name} is %{action}\"},\"history\":{\"name\":\"Geschiedenis\",\"no_activity\":\"Geen activiteit\",\"page_name\":\"Geschiedenis van %{name}\"},\"list\":{\"add_new\":\"Nieuwe toevoegen\",\"delete_action\":\"Verwijderen\",\"delete_selected\":\"Verwijder geselecteerden\",\"edit_action\":\"Bewerken\",\"search\":\"Zoeken\",\"select\":\"Selecteer %{name} om te bewerken\",\"select_action\":\"Selecteer\",\"show_all\":\"Laat allen zien\"},\"new\":{\"basic_info\":\"Basisinfo\",\"cancel\":\"Annuleren\",\"chosen\":\"%{name} gekozen\",\"chose_all\":\"Kies allen\",\"clear_all\":\"Deselecteer allen\",\"many_chars\":\"tekens of minder.\",\"one_char\":\"teken.\",\"optional\":\"Optioneel\",\"required\":\"Vereist\",\"save\":\"Opslaan\",\"save_and_add_another\":\"Opslaan en een nieuwe toevoegen\",\"save_and_edit\":\"Opslaan en bewerken\",\"select_choice\":\"Selecteer uw keuzes en klik\"}},\"build\":{\"duration\":\"Duur\",\"finished_at\":\"Voltooid\",\"job\":\"Taak\"},\"builds\":{\"allowed_failures\":\"Toegestane mislukkingen\",\"author\":\"Auteur\",\"branch\":\"Tak\",\"build_matrix\":\"Bouw Matrix\",\"compare\":\"Vergelijk\",\"config\":\"Configuratie\",\"duration\":\"Duur\",\"finished_at\":\"Voltooid\",\"message\":\"Bericht\",\"messages\":{\"sponsored_by\":\"Deze tests zijn gedraaid op een machine gesponsord door\"},\"name\":\"Bouw\",\"started_at\":\"Gestart\",\"commit\":\"Commit\",\"committer\":\"Committer\"},\"datetime\":{\"distance_in_words\":{\"hours_exact\":{\"one\":\"%{count} uur\",\"other\":\"%{count} uren\"},\"minutes_exact\":{\"one\":\"%{count} minuut\",\"other\":\"%{count} minuten\"},\"seconds_exact\":{\"one\":\"%{count} seconde\",\"other\":\"%{count} seconden\"}}},\"devise\":{\"confirmations\":{\"confirmed\":\"Uw account is bevestigd. U wordt nu ingelogd.\",\"send_instructions\":\"Binnen enkele minuten zal u een email ontvangen met instructies om uw account te bevestigen.\"},\"failure\":{\"inactive\":\"Uw account is nog niet geactiveerd.\",\"invalid\":\"Ongeldig email adres of wachtwoord.\",\"invalid_token\":\"Ongeldig authenticatie token.\",\"locked\":\"Uw account is vergrendeld.\",\"timeout\":\"Uw sessie is verlopen, gelieve opnieuw in te loggen om verder te gaan.\",\"unauthenticated\":\"U moet inloggen of u registeren voordat u verder gaat.\",\"unconfirmed\":\"U moet uw account bevestigen voordat u verder gaat.\"},\"mailer\":{\"confirmation_instructions\":{\"subject\":\"Bevestigings-instructies\"},\"reset_password_instructions\":{\"subject\":\"Wachtwoord herstel instructies\"},\"unlock_instructions\":{\"subject\":\"Ontgrendel-instructies\"}},\"passwords\":{\"send_instructions\":\"Binnen enkele minuten zal u een email krijgen met instructies om uw wachtwoord opnieuw in te stellen.\",\"updated\":\"Uw wachtwoord is veranderd. U wordt nu ingelogd.\"},\"registrations\":{\"destroyed\":\"Dag! Uw account is geannuleerd. We hopen u vlug terug te zien.\",\"signed_up\":\"Uw registratie is voltooid. Als het ingeschakeld is wordt een bevestiging naar uw email adres verzonden.\",\"updated\":\"Het bijwerken van uw account is gelukt.\"},\"sessions\":{\"signed_in\":\"Inloggen gelukt.\",\"signed_out\":\"Uitloggen gelukt.\"},\"unlocks\":{\"send_instructions\":\"Binnen enkele minuten zal u een email krijgen met instructies om uw account te ontgrendelen.\",\"unlocked\":\"Uw account is ontgrendeld. U wordt nu ingelogd.\"}},\"errors\":{\"messages\":{\"already_confirmed\":\"was al bevestigd\",\"not_found\":\"niet gevonden\",\"not_locked\":\"was niet vergrendeld\"}},\"jobs\":{\"allowed_failures\":\"Toegestane mislukkingen\",\"author\":\"Auteur\",\"branch\":\"Tak\",\"build_matrix\":\"Bouw matrix\",\"compare\":\"Vergelijk\",\"config\":\"Configuratie\",\"duration\":\"Duur\",\"finished_at\":\"Voltooid\",\"message\":\"Bericht\",\"messages\":{\"sponsored_by\":\"Deze testen zijn uitgevoerd op een machine gesponsord door\"},\"started_at\":\"Gestart\",\"commit\":\"Commit\",\"committer\":\"Committer\"},\"layouts\":{\"about\":{\"alpha\":\"Dit is in alfa-stadium.\",\"join\":\"Doe met ons mee en help!\",\"mailing_list\":\"Mailing lijst\",\"messages\":{\"alpha\":\"Gelieve deze service niet te beschouwen als stabiel. Daar zijn we nog lang niet! Meer info hier. \"},\"repository\":\"Repository\",\"twitter\":\"Twitter\"},\"application\":{\"fork_me\":\"Maak een fork op Github\",\"my_repositories\":\"Mijn repositories\",\"recent\":\"Recent\",\"search\":\"Zoeken\",\"sponsers\":\"Sponsors\",\"sponsors_link\":\"Bekijk al onze geweldige sponsors →\"},\"mobile\":{\"author\":\"Auteur\",\"build\":\"Bouw\",\"build_matrix\":\"Bouw matrix\",\"compare\":\"Vergelijk\",\"config\":\"Configuratie\",\"duration\":\"Duur\",\"finished_at\":\"Voltooid op\",\"job\":\"Taak\",\"commit\":\"Commit\",\"committer\":\"Committer\",\"log\":\"Logboek\"},\"top\":{\"admin\":\"Administratie\",\"blog\":\"Blog\",\"docs\":\"Documentatie\",\"github_login\":\"Inloggen met Github\",\"home\":\"Home\",\"profile\":\"Profiel\",\"sign_out\":\"Uitloggen\",\"stats\":\"Statistieken\"}},\"locales\":{\"en\":\"English\",\"es\":\"Español\",\"fr\":\"Français\",\"ja\":\"日本語\",\"nb\":\"Norsk Bokmål\",\"nl\":\"Nederlands\",\"pl\":\"Polski\",\"ru\":\"Русский\",\"pt-BR\":\"português brasileiro\"},\"no_job\":\"Er zijn geen taken\",\"profiles\":{\"show\":{\"email\":\"Email adres\",\"github\":\"Github\",\"message\":{\"config\":\"hoe eigen bouw-opties in te stellen\",\"your_repos\":\"Zet de schakelaars hieronder aan om de Travis hook voor uw projecten te activeren en push daarna naar Github \\nOm te testen tegen meerdere rubies, zie\"},\"messages\":{\"notice\":\"Om te beginnen kunt u onze startersgids lezen.\\\\n Het zal maar enkele minuten van uw tijd vergen. \"},\"update\":\"Bijwerken\",\"update_locale\":\"Bijwerken\",\"your_locale\":\"Uw taal\",\"your_repos\":\"Uw repositories\",\"token\":\"Token\"}},\"queue\":\"Wachtrij\",\"repositories\":{\"branch\":\"Tak\",\"duration\":\"Duur\",\"finished_at\":\"Voltooid\",\"image_url\":\"Afbeeldings URL\",\"message\":\"Bericht\",\"started_at\":\"Gestart\",\"tabs\":{\"branches\":\"Tak samenvatting\",\"build\":\"Bouw\",\"build_history\":\"Bouw geschiedenis\",\"current\":\"Huidig\",\"job\":\"Taak\"},\"commit\":\"Commit\",\"markdown\":\"Markdown\",\"rdoc\":\"RDOC\",\"textile\":\"Textile\"},\"repository\":{\"duration\":\"Duur\"},\"statistics\":{\"index\":{\"build_count\":\"Bouw aantal\",\"count\":\"Aantal\",\"last_month\":\"voorbije maand\",\"repo_growth\":\"Repository groei\",\"total_builds\":\"Bouw totaal\",\"total_projects\":\"Projecten/Repository totaal\"}},\"workers\":\"Machines\",\"home\":{\"name\":\"Hoofdpagina\"}},\"pl\":{\"datetime\":{\"distance_in_words\":{\"hours_exact\":{\"one\":\"%{count} godzina\",\"other\":\"%{count} godziny\"},\"minutes_exact\":{\"one\":\"%{count} minuta\",\"other\":\"%{count} minuty\"},\"seconds_exact\":{\"one\":\"%{count} sekunda\",\"other\":\"%{count} sekundy\"}}},\"workers\":\"Workers\",\"queue\":\"Kolejka\",\"no_job\":\"Brak zadań\",\"repositories\":{\"branch\":\"Gałąź\",\"image_url\":\"URL obrazka\",\"markdown\":\"Markdown\",\"textile\":\"Textile\",\"rdoc\":\"RDOC\",\"commit\":\"Commit\",\"message\":\"Opis\",\"started_at\":\"Rozpoczęto\",\"duration\":\"Czas trwania\",\"finished_at\":\"Zakończono\",\"tabs\":{\"current\":\"Aktualny\",\"build_history\":\"Historia Buildów\",\"branches\":\"Wszystkie Gałęzie\",\"build\":\"Build\",\"job\":\"Zadanie\"}},\"build\":{\"job\":\"Zadanie\",\"duration\":\"Czas trwania\",\"finished_at\":\"Zakończono\"},\"jobs\":{\"messages\":{\"sponsored_by\":\"Te testy zostały uruchomione na maszynie sponsorowanej przez\"},\"build_matrix\":\"Macierz Buildów\",\"allowed_failures\":\"Dopuszczalne Niepowodzenia\",\"author\":\"Autor\",\"config\":\"Konfiguracja\",\"compare\":\"Porównanie\",\"committer\":\"Committer\",\"branch\":\"Gałąź\",\"commit\":\"Commit\",\"message\":\"Opis\",\"started_at\":\"Rozpoczęto\",\"duration\":\"Czas trwania\",\"finished_at\":\"Zakończono\",\"sponsored_by\":\"Te testy zostały uruchomione na maszynie sponsorowanej przez\"},\"builds\":{\"name\":\"Build\",\"messages\":{\"sponsored_by\":\"Te testy zostały uruchomione na maszynie sponsorowanej przez\"},\"build_matrix\":\"Macierz Buildów\",\"allowed_failures\":\"Dopuszczalne Niepowodzenia\",\"author\":\"Autor\",\"config\":\"Konfiguracja\",\"compare\":\"Porównanie\",\"committer\":\"Komitujący\",\"branch\":\"Gałąź\",\"commit\":\"Commit\",\"message\":\"Opis\",\"started_at\":\"Rozpoczęto\",\"duration\":\"Czas trwania\",\"finished_at\":\"Zakończono\"},\"layouts\":{\"top\":{\"home\":\"Start\",\"blog\":\"Blog\",\"docs\":\"Dokumentacja\",\"stats\":\"Statystki\",\"github_login\":\"Zaloguj się przy pomocy Githuba\",\"profile\":\"Profil\",\"sign_out\":\"Wyloguj się\"},\"application\":{\"fork_me\":\"Fork me on Github\",\"recent\":\"Ostatnie\",\"search\":\"Wyniki\",\"sponsers\":\"Sponsorzy\",\"sponsors_link\":\"Zobacz naszych wszystkich wspaniałych sponsorów →\",\"my_repositories\":\"Moje repozytoria\"},\"about\":{\"alpha\":\"To wciąż jest wersja alpha.\",\"messages\":{\"alpha\":\"Proszę nie traktuj tego jako stabilnej usługi. Wciąż nam wiele do tego brakuje! Więcej informacji znajdziesz tutaj. \"},\"join\":\"Pomóż i dołącz do nas!\",\"mailing_list\":\"Lista mailingowa\",\"repository\":\"Repozytorium\",\"twitter\":\"Twitter\"},\"mobile\":{\"author\":\"Autor\",\"build\":\"Build\",\"build_matrix\":\"Macierz Buildów\",\"commit\":\"Commit\",\"committer\":\"Komitujący\",\"compare\":\"Porównianie\",\"config\":\"Konfiguracja\",\"duration\":\"Czas trwania\",\"finished_at\":\"Zakończono\",\"job\":\"Zadanie\",\"log\":\"Log\"}},\"profiles\":{\"show\":{\"email\":\"Email\",\"github\":\"Github\",\"message\":{\"your_repos\":\" Przesuń suwak poniżej, aby włączyć Travisa, dla twoich projektów, a następnie umieść swój kod na GitHubie. \\n Aby testować swój kod przy użyciu wielu wersji Rubiego, zobacz\",\"config\":\"jak skonfigurować niestandardowe opcje builda\"},\"messages\":{\"notice\":\"Aby zacząć, przeczytaj nasz Przewodnik .\\n Zajmie ci to tylko kilka minut. \"},\"token\":\"Token\",\"your_repos\":\"Twoje repozytoria\"}},\"statistics\":{\"index\":{\"count\":\"Ilość\",\"repo_growth\":\"Przyrost repozytoriów\",\"total_projects\":\"Łącznie projektów/repozytoriów\",\"build_count\":\"Liczba buildów\",\"last_month\":\"ostatni miesiąc\",\"total_builds\":\"Łącznie Buildów\"}},\"date\":{\"abbr_day_names\":[\"nie\",\"pon\",\"wto\",\"śro\",\"czw\",\"pią\",\"sob\"],\"abbr_month_names\":[\"sty\",\"lut\",\"mar\",\"kwi\",\"maj\",\"cze\",\"lip\",\"sie\",\"wrz\",\"paź\",\"lis\",\"gru\"],\"day_names\":[\"niedziela\",\"poniedziałek\",\"wtorek\",\"środa\",\"czwartek\",\"piątek\",\"sobota\"],\"formats\":{\"default\":\"%d-%m-%Y\",\"long\":\"%B %d, %Y\",\"short\":\"%d %b\"},\"month_names\":[\"styczeń\",\"luty\",\"marzec\",\"kwiecień\",\"maj\",\"czerwiec\",\"lipiec\",\"sierpień\",\"wrzesień\",\"październik\",\"listopad\",\"grudzień\"],\"order\":[\"day\",\"month\",\"year\"]},\"errors\":{\"format\":\"%{attribute} %{message}\",\"messages\":{\"accepted\":\"musi zostać zaakceptowane\",\"blank\":\"nie może być puste\"}},\"locales\":{\"en\":\"English\",\"es\":\"Español\",\"ja\":\"日本語\",\"ru\":\"Русский\",\"fr\":\"Français\",\"nb\":\"Norsk Bokmål\",\"pl\":\"Polski\",\"nl\":\"Nederlands\",\"pt-BR\":\"português brasileiro\"}},\"pt-BR\":{\"admin\":{\"actions\":{\"create\":\"criar\",\"created\":\"criado\",\"delete\":\"deletar\",\"deleted\":\"deletado\",\"update\":\"atualizar\",\"updated\":\"atualizado\"},\"credentials\":{\"log_out\":\"Deslogar\"},\"dashboard\":{\"add_new\":\"Adicionar novo\",\"ago\":\"atrás\",\"last_used\":\"Última utilização\",\"model_name\":\"Nome do modelo\",\"modify\":\"Modificar\",\"name\":\"Dashboard\",\"pagename\":\"Administração do site\",\"records\":\"Registros\",\"show\":\"Mostrar\"},\"delete\":{\"confirmation\":\"Sim, tenho certeza\",\"flash_confirmation\":\"%{name} foi destruído com sucesso\"},\"flash\":{\"error\":\"%{name} falhou ao %{action}\",\"noaction\":\"Nenhuma ação foi tomada\",\"successful\":\"%{name} foi %{action} com sucesso\"},\"history\":{\"name\":\"Histórico\",\"no_activity\":\"Nenhuma Atividade\",\"page_name\":\"Histórico para %{name}\"},\"list\":{\"add_new\":\"Adicionar novo\",\"delete_action\":\"Deletar\",\"delete_selected\":\"Deletar selecionados\",\"edit_action\":\"Editar\",\"search\":\"Buscar\",\"select\":\"Selecionar %{name} para editar\",\"select_action\":\"Selecionar\",\"show_all\":\"Mostrar todos\"},\"new\":{\"basic_info\":\"Informações básicas\",\"cancel\":\"Cancelar\",\"chosen\":\"Escolhido %{name}\",\"chose_all\":\"Escolher todos\",\"clear_all\":\"Limpar todos\",\"many_chars\":\"caracteres ou menos.\",\"one_char\":\"caractere.\",\"optional\":\"Opcional\",\"required\":\"Requerido\",\"save\":\"Salvar\",\"save_and_add_another\":\"Salvar e adicionar outro\",\"save_and_edit\":\"Salvar e alterar\",\"select_choice\":\"Selecione e clique\"}},\"build\":{\"duration\":\"Duração\",\"finished_at\":\"Concluído em\",\"job\":\"Trabalho\"},\"builds\":{\"allowed_failures\":\"Falhas Permitidas\",\"author\":\"Autor\",\"branch\":\"Branch\",\"build_matrix\":\"Matriz de Build\",\"commit\":\"Commit\",\"committer\":\"Committer\",\"compare\":\"Comparar\",\"config\":\"Config\",\"duration\":\"Duração\",\"finished_at\":\"Concluído em\",\"message\":\"Mensagem\",\"messages\":{\"sponsored_by\":\"Esta série de testes foi executada em uma caixa de processos patrocinada por\"},\"name\":\"Build\",\"started_at\":\"Iniciou em\"},\"datetime\":{\"distance_in_words\":{\"hours_exact\":{\"one\":\"%{count} hora\",\"other\":\"%{count} horas\"},\"minutes_exact\":{\"one\":\"%{count} minuto\",\"other\":\"%{count} minutos\"},\"seconds_exact\":{\"one\":\"%{count} segundo\",\"other\":\"%{count} segundos\"}}},\"devise\":{\"confirmations\":{\"confirmed\":\"Sua conta foi confirmada com sucesso. Você agora está logado.\",\"send_instructions\":\"Você receberá um email com instruções de como confirmar sua conta em alguns minutos.\"},\"failure\":{\"inactive\":\"Sua conta ainda não foi ativada.\",\"invalid\":\"Email ou senha inválidos.\",\"invalid_token\":\"Token de autenticação inválido.\",\"locked\":\"Sua conta está trancada.\",\"timeout\":\"Sua sessão expirou, por favor faça seu login novamente.\",\"unauthenticated\":\"Você precisa fazer o login ou cadastrar-se antes de continuar.\",\"unconfirmed\":\"Você precisa confirmar sua conta antes de continuar.\"},\"mailer\":{\"confirmation_instructions\":{\"subject\":\"Instruções de confirmação\"},\"reset_password_instructions\":{\"subject\":\"Instruções de atualização de senha\"},\"unlock_instructions\":{\"subject\":\"Instruções de destrancamento\"}},\"passwords\":{\"send_instructions\":\"Você receberá um email com instruções de como atualizar sua senha em alguns minutos.\",\"updated\":\"Sua senha foi alterada com sucesso. Você agora está logado.\"},\"registrations\":{\"destroyed\":\"Tchau! Sua conta foi cancelada com sucesso. Esperamos vê-lo novamente em breve!\",\"signed_up\":\"Você se cadastrou com sucesso. Se ativada, uma confirmação foi enviada para seu email.\",\"updated\":\"Você atualizou sua conta com sucesso.\"},\"sessions\":{\"signed_in\":\"Logado com sucesso.\",\"signed_out\":\"Deslogado com sucesso.\"},\"unlocks\":{\"send_instructions\":\"Você receberá um email com instruções de como destrancar sua conta em alguns minutos.\",\"unlocked\":\"Sua conta foi destrancada com sucesso. Você agora está logado.\"}},\"errors\":{\"messages\":{\"already_confirmed\":\"já foi confirmado\",\"not_found\":\"não encontrado\",\"not_locked\":\"não estava trancado\"}},\"home\":{\"name\":\"home\"},\"jobs\":{\"allowed_failures\":\"Falhas Permitidas\",\"author\":\"Autor\",\"branch\":\"Branch\",\"build_matrix\":\"Matriz de Build\",\"commit\":\"Commit\",\"committer\":\"Committer\",\"compare\":\"Comparar\",\"config\":\"Config\",\"duration\":\"Duração\",\"finished_at\":\"Concluído em\",\"message\":\"Mensagem\",\"messages\":{\"sponsored_by\":\"Esta série de testes foi executada em uma caixa de processos patrocinada por\"},\"started_at\":\"Iniciou em\"},\"layouts\":{\"about\":{\"alpha\":\"Isto é um alpha.\",\"join\":\"Junte-se à nós e ajude!\",\"mailing_list\":\"Lista de email\",\"messages\":{\"alpha\":\"Por favor, não considere isto um serviço estável. Estamos muito longe disso! Mais informações aqui. \"},\"repository\":\"Repositório\",\"twitter\":\"Twitter\"},\"application\":{\"fork_me\":\"Faça fork no Github\",\"my_repositories\":\"Meus Repositórios\",\"recent\":\"Recentes\",\"search\":\"Buscar\",\"sponsers\":\"Patrocinadores\",\"sponsors_link\":\"Conheça todos os nossos patrocinadores →\"},\"mobile\":{\"author\":\"Autor\",\"build\":\"Build\",\"build_matrix\":\"Matriz de Build\",\"commit\":\"Commit\",\"committer\":\"Committer\",\"compare\":\"Comparar\",\"config\":\"Config\",\"duration\":\"Duração\",\"finished_at\":\"Concluído em\",\"job\":\"Trabalho\",\"log\":\"Log\"},\"top\":{\"admin\":\"Admin\",\"blog\":\"Blog\",\"docs\":\"Documentação\",\"github_login\":\"Logue com o Github\",\"home\":\"Home\",\"profile\":\"Perfil\",\"sign_out\":\"Sair\",\"stats\":\"Estatísticas\"}},\"locales\":{\"en\":\"English\",\"es\":\"Español\",\"fr\":\"Français\",\"ja\":\"日本語\",\"nb\":\"Norsk Bokmål\",\"nl\":\"Nederlands\",\"pl\":\"Polski\",\"ru\":\"Русский\",\"pt-BR\":\"português brasileiro\"},\"no_job\":\"Não há trabalhos\",\"profiles\":{\"show\":{\"email\":\"Email\",\"github\":\"Github\",\"message\":{\"config\":\"como configurar opções de build\",\"your_repos\":\"Use os botões abaixo para ligar ou desligar o hook de serviço do Travis para seus projetos, e então, faça um push para o Github. Para testar com múltiplas versões do Ruby, leia\"},\"messages\":{\"notice\":\"Para começar, leia nosso Guia de início . Só leva alguns minutinhos. \"},\"token\":\"Token\",\"update\":\"Atualizar\",\"update_locale\":\"Atualizar\",\"your_locale\":\"Sua língua\",\"your_repos\":\"Seus Repositórios\"}},\"queue\":\"Fila\",\"repositories\":{\"branch\":\"Branch\",\"commit\":\"Commit\",\"duration\":\"Duração\",\"finished_at\":\"Concluído em\",\"image_url\":\"URL da imagem\",\"markdown\":\"Markdown\",\"message\":\"Mensagem\",\"rdoc\":\"RDOC\",\"started_at\":\"Iniciou em\",\"tabs\":{\"branches\":\"Sumário do Branch\",\"build\":\"Build\",\"build_history\":\"Histórico de Build\",\"current\":\"Atual\",\"job\":\"Trabalho\"},\"textile\":\"Textile\"},\"repository\":{\"duration\":\"Duração\"},\"statistics\":{\"index\":{\"build_count\":\"Número de Builds\",\"count\":\"Número\",\"last_month\":\"último mês\",\"repo_growth\":\"Crescimento de Repositório\",\"total_builds\":\"Total de Builds\",\"total_projects\":\"Total de Projetos/Repositórios\"}},\"workers\":\"Processos\"},\"ru\":{\"admin\":{\"actions\":{\"create\":\"создать\",\"created\":\"создано\",\"delete\":\"удалить\",\"deleted\":\"удалено\",\"update\":\"обновить\",\"updated\":\"обновлено\"},\"credentials\":{\"log_out\":\"Выход\"},\"dashboard\":{\"add_new\":\"Добавить\",\"ago\":\"назад\",\"last_used\":\"Использовалось в последний раз\",\"model_name\":\"Имя модели\",\"modify\":\"Изменить\",\"name\":\"Панель управления\",\"pagename\":\"Управление сайтом\",\"records\":\"Записи\",\"show\":\"Показать\"},\"delete\":{\"confirmation\":\"Да, я уверен\",\"flash_confirmation\":\"%{name} успешно удалено\"},\"history\":{\"name\":\"История\",\"no_activity\":\"Нет активности\",\"page_name\":\"История %{name}\"},\"list\":{\"add_new\":\"Добавить\",\"delete_action\":\"Удалить\",\"delete_selected\":\"Удалить выбранные\",\"edit_action\":\"Редактировать\",\"search\":\"Поиск\",\"select\":\"Для редактирования выберите %{name}\",\"select_action\":\"Выбрать\",\"show_all\":\"Показать все\"},\"new\":{\"basic_info\":\"Основная информация\",\"cancel\":\"Отмена\",\"chosen\":\"Выбрано %{name}\",\"chose_all\":\"Выбрать все\",\"clear_all\":\"Очистить все\",\"one_char\":\"символ.\",\"optional\":\"Необязательно\",\"required\":\"Обязательно\",\"save\":\"Сохранить\",\"save_and_add_another\":\"Сохранить и добавить другое\",\"save_and_edit\":\"Сохранить и продолжить редактирование\",\"select_choice\":\"Выберите и кликните\",\"many_chars\":\"символов или меньше.\"},\"flash\":{\"error\":\"%{name} не удалось %{action}\",\"noaction\":\"Никаких действий не произведено\",\"successful\":\"%{name} было успешно %{action}\"}},\"build\":{\"duration\":\"Длительность\",\"finished_at\":\"Завершен\",\"job\":\"Задача\"},\"builds\":{\"allowed_failures\":\"Допустимые неудачи\",\"author\":\"Автор\",\"branch\":\"Ветка\",\"build_matrix\":\"Матрица\",\"commit\":\"Коммит\",\"committer\":\"Коммитер\",\"compare\":\"Дифф\",\"config\":\"Конфигурация\",\"duration\":\"Длительность\",\"finished_at\":\"Завершен\",\"message\":\"Комментарий\",\"messages\":{\"sponsored_by\":\"Эта серия тестов была запущена на машине, спонсируемой\"},\"name\":\"Билд\",\"started_at\":\"Начало\"},\"datetime\":{\"distance_in_words\":{\"hours_exact\":{\"one\":\"%{count} час\",\"few\":\"%{count} часа\",\"many\":\"%{count} часов\",\"other\":\"%{count} часа\"},\"minutes_exact\":{\"one\":\"%{count} минута\",\"few\":\"%{count} минуты\",\"many\":\"%{count} минут\",\"other\":\"%{count} минуты\"},\"seconds_exact\":{\"one\":\"%{count} секунда\",\"few\":\"%{count} секунды\",\"many\":\"%{count} секунд\",\"other\":\"%{count} секунды\"}}},\"devise\":{\"confirmations\":{\"confirmed\":\"Ваш аккаунт успешно подтвержден. Приветствуем!\",\"send_instructions\":\"В течении нескольких минут вы получите электронное письмо с инструкциями для прохождения процедуры подтверждения аккаунта.\"},\"failure\":{\"inactive\":\"Ваш аккаунт еще не активирован.\",\"invalid\":\"Ошибка в адресе почты или пароле.\",\"invalid_token\":\"Неправильный токен аутентификации.\",\"locked\":\"Ваш аккаунт заблокирован.\",\"timeout\":\"Сессия окончена. Для продолжения работы войдите снова.\",\"unauthenticated\":\"Вам нужно войти или зарегистрироваться.\",\"unconfirmed\":\"Вы должны сначала подтвердить свой аккаунт.\"},\"mailer\":{\"confirmation_instructions\":{\"subject\":\"Инструкции для подтверждению аккаунта\"},\"reset_password_instructions\":{\"subject\":\"Инструкции для сброса пароля\"},\"unlock_instructions\":{\"subject\":\"Инструкции для разблокирования аккаунта\"}},\"passwords\":{\"send_instructions\":\"В течении нескольких минут вы получите электронное письмо с инструкциями для сброса пароля.\",\"updated\":\"Ваш пароль успешно изменен. Приветствуем!\"},\"registrations\":{\"destroyed\":\"Ваш аккаунт был успешно удален. Живите долго и процветайте!\",\"signed_up\":\"Вы успешно прошли регистрацию. Инструкции для подтверждения аккаунта отправлены на ваш электронный адрес.\",\"updated\":\"Аккаунт успешно обновлен.\"},\"sessions\":{\"signed_in\":\"Приветствуем!\",\"signed_out\":\"Удачи!\"},\"unlocks\":{\"send_instructions\":\"В течении нескольких минут вы получите электронное письмо с инструкциям для разблокировния аккаунта.\",\"unlocked\":\"Ваш аккаунт успешно разблокирован. Приветствуем!\"}},\"errors\":{\"messages\":{\"already_confirmed\":\"уже подтвержден\",\"not_found\":\"не найден\",\"not_locked\":\"не заблокирован\"}},\"home\":{\"name\":\"Главная\"},\"jobs\":{\"allowed_failures\":\"Допустимые неудачи\",\"author\":\"Автор\",\"branch\":\"Ветка\",\"build_matrix\":\"Матрица\",\"commit\":\"Коммит\",\"committer\":\"Коммитер\",\"compare\":\"Сравнение\",\"config\":\"Конфигурация\",\"duration\":\"Длительность\",\"finished_at\":\"Завершен\",\"message\":\"Комментарий\",\"messages\":{\"sponsored_by\":\"Эта серия тестов была запущена на машине спонсируемой\"},\"started_at\":\"Начало\"},\"layouts\":{\"about\":{\"alpha\":\"Это альфа-версия\",\"join\":\"Присоединяйтесь к нам и помогайте!\",\"mailing_list\":\"Лист рассылки\",\"messages\":{\"alpha\":\"Пожалуйста, не считайте данный сервис стабильным. Мы еще очень далеки от стабильности! Подробности \"},\"repository\":\"Репозиторий\",\"twitter\":\"Twitter\"},\"application\":{\"fork_me\":\"Fork me on Github\",\"my_repositories\":\"Мои репозитории\",\"recent\":\"Недавние\",\"search\":\"Поиск\",\"sponsers\":\"Спонсоры\",\"sponsors_link\":\"Список всех наших замечательных спонсоров →\"},\"mobile\":{\"author\":\"Автор\",\"build\":\"Сборка\",\"build_matrix\":\"Матрица сборок\",\"commit\":\"Коммит\",\"committer\":\"Коммитер\",\"compare\":\"Сравнение\",\"config\":\"Конфигурация\",\"duration\":\"Длительность\",\"finished_at\":\"Завершен\",\"job\":\"Задача\",\"log\":\"Журнал\"},\"top\":{\"admin\":\"Управление\",\"blog\":\"Блог\",\"docs\":\"Документация\",\"github_login\":\"Войти через Github\",\"home\":\"Главная\",\"profile\":\"Профиль\",\"sign_out\":\"Выход\",\"stats\":\"Статистика\"}},\"no_job\":\"Очередь пуста\",\"profiles\":{\"show\":{\"email\":\"Электронная почта\",\"github\":\"Github\",\"message\":{\"config\":\"как настроить специальные опции билда\",\"your_repos\":\"Используйте переключатели, чтобы включить Travis service hook для вашего проекта, а потом отправьте код на GitHub. \\nДля тестирования на нескольких версиях Ruby смотрите\"},\"messages\":{\"notice\":\"Перед началом, пожалуйста, прочтите Руководство для быстрого старта . Это займет всего несколько минут. \"},\"token\":\"Токен\",\"update\":\"Обновить\",\"update_locale\":\"Обновить\",\"your_locale\":\"Ваш язык\",\"your_repos\":\"Ваши репозитории\"}},\"queue\":\"Очередь\",\"repositories\":{\"branch\":\"Ветка\",\"commit\":\"Коммит\",\"duration\":\"Длительность\",\"finished_at\":\"Завершен\",\"image_url\":\"URL изображения\",\"markdown\":\"Markdown\",\"message\":\"Комментарий\",\"rdoc\":\"RDOC\",\"started_at\":\"Начало\",\"tabs\":{\"branches\":\"Статус веток\",\"build\":\"Билд\",\"build_history\":\"История\",\"current\":\"Текущий\",\"job\":\"Задача\"},\"textile\":\"Textile\"},\"repository\":{\"duration\":\"Длительность\"},\"statistics\":{\"index\":{\"build_count\":\"Количество билдов\",\"count\":\"Количество\",\"last_month\":\"прошлый месяц\",\"repo_growth\":\"Рост числа репозиториев\",\"total_builds\":\"Всего билдов\",\"total_projects\":\"Всего проектов/репозиториев\"}},\"workers\":\"Машины\",\"locales\":{\"en\":\"English\",\"es\":\"Español\",\"ja\":\"日本語\",\"ru\":\"Русский\",\"fr\":\"Français\",\"nb\":\"Norsk Bokmål\",\"pl\":\"Polski\",\"nl\":\"Nederlands\",\"pt-BR\":\"português brasileiro\"}}};\n\n\n})();\n//@ sourceURL=config/locales");minispade.register('ext/ember/bound_helper', "(function() {// https://gist.github.com/2018185\n// For reference: https://github.com/wagenet/ember.js/blob/ac66dcb8a1cbe91d736074441f853e0da474ee6e/packages/ember-handlebars/lib/views/bound_property_view.js\nvar BoundHelperView = Ember.View.extend(Ember._Metamorph, {\n\n context: null,\n options: null,\n property: null,\n // paths of the property that are also observed\n propertyPaths: [],\n\n value: Ember.K,\n\n valueForRender: function() {\n var value = this.value(Ember.get(this.context, this.property), this.options);\n if (this.options.escaped) { value = Handlebars.Utils.escapeExpression(value); }\n return value;\n },\n\n render: function(buffer) {\n buffer.push(this.valueForRender());\n },\n\n valueDidChange: function() {\n if (this.morph.isRemoved()) { return; }\n this.morph.html(this.valueForRender());\n },\n\n didInsertElement: function() {\n this.valueDidChange();\n },\n\n init: function() {\n this._super();\n Ember.addObserver(this.context, this.property, this, 'valueDidChange');\n this.get('propertyPaths').forEach(function(propName) {\n Ember.addObserver(this.context, this.property + '.' + propName, this, 'valueDidChange');\n }, this);\n },\n\n destroy: function() {\n Ember.removeObserver(this.context, this.property, this, 'valueDidChange');\n this.get('propertyPaths').forEach(function(propName) {\n this.context.removeObserver(this.property + '.' + propName, this, 'valueDidChange');\n }, this);\n this._super();\n }\n\n});\n\nEmber.registerBoundHelper = function(name, func) {\n var propertyPaths = Array.prototype.slice.call(arguments, 2);\n Ember.Handlebars.registerHelper(name, function(property, options) {\n var data = options.data,\n view = data.view,\n ctx = this;\n\n var bindView = view.createChildView(BoundHelperView, {\n property: property,\n propertyPaths: propertyPaths,\n context: ctx,\n options: options.hash,\n value: func\n });\n\n view.appendChild(bindView);\n });\n};\n\n\n})();\n//@ sourceURL=ext/ember/bound_helper");minispade.register('ext/ember/namespace', "(function() {Em.Namespace.reopen = Em.Namespace.reopenClass\n\n\n\n})();\n//@ sourceURL=ext/ember/namespace");
\ No newline at end of file
+minispade.register('app', "(function() {(function() {\nminispade.require('auth');\nminispade.require('controllers');\nminispade.require('helpers');\nminispade.require('models');\nminispade.require('pusher');\nminispade.require('routes');\nminispade.require('slider');\nminispade.require('store');\nminispade.require('tailing');\nminispade.require('templates');\nminispade.require('views');\nminispade.require('config/locales');\nminispade.require('data/sponsors');\n\n Travis.reopen({\n App: Em.Application.extend({\n autoinit: false,\n currentUserBinding: 'auth.user',\n authStateBinding: 'auth.state',\n init: function() {\n this._super.apply(this, arguments);\n this.store = Travis.Store.create();\n this.store.loadMany(Travis.Sponsor, Travis.SPONSORS);\n this.set('auth', Travis.Auth.create({\n store: this.store,\n endpoint: Travis.config.api_endpoint\n }));\n this.slider = new Travis.Slider();\n this.pusher = new Travis.Pusher(Travis.config.pusher);\n return this.tailing = new Travis.Tailing();\n },\n signIn: function() {\n return this.get('auth').signIn();\n },\n signOut: function() {\n this.get('auth').signOut();\n return this.get('router').send('showAuthenticated');\n },\n receive: function() {\n return this.store.receive.apply(this.store, arguments);\n },\n toggleSidebar: function() {\n var element;\n $('body').toggleClass('maximized');\n element = $(' ');\n $('#top .profile').append(element);\n Em.run.later((function() {\n return element.remove();\n }), 10);\n element = $(' ');\n $('#repository').append(element);\n return Em.run.later((function() {\n return element.remove();\n }), 10);\n }\n })\n });\n\n}).call(this);\n\n})();\n//@ sourceURL=app");minispade.register('auth', "(function() {(function() {\n\n this.Travis.Auth = Ember.Object.extend({\n iframe: $('').hide(),\n timeout: 5000,\n state: 'signed-out',\n receivingEnd: \"\" + location.protocol + \"//\" + location.host,\n init: function() {\n var _this = this;\n this.iframe.appendTo('body');\n window.addEventListener('message', function(e) {\n return _this.receiveMessage(e);\n });\n return this.loadUser();\n },\n accessToken: (function() {\n return sessionStorage.getItem('travis.token');\n }).property(),\n loadUser: function() {\n var user;\n if (user = typeof sessionStorage !== \"undefined\" && sessionStorage !== null ? sessionStorage.getItem('travis.user') : void 0) {\n return this.setData({\n user: JSON.parse(user)\n });\n } else if (typeof localStorage !== \"undefined\" && localStorage !== null ? localStorage.getItem('travis.auto_signin') : void 0) {\n return this.trySignIn();\n }\n },\n signIn: function() {\n this.set('state', 'signing-in');\n this.trySignIn();\n return Ember.run.later(this, this.checkSignIn.bind(this), this.timeout);\n },\n trySignIn: function() {\n return this.iframe.attr('src', \"\" + this.endpoint + \"/auth/post_message?origin=\" + this.receivingEnd);\n },\n checkSignIn: function() {\n if (this.get('state') === 'signing-in') {\n return this.forceSignIn();\n }\n },\n forceSignIn: function() {\n if (typeof localStorage !== \"undefined\" && localStorage !== null) {\n localStorage.setItem('travis.auto_signin', 'true');\n }\n return window.location = \"\" + this.endpoint + \"/auth/handshake?redirect_uri=\" + location;\n },\n signOut: function() {\n if (typeof localStorage !== \"undefined\" && localStorage !== null) {\n localStorage.clear();\n }\n if (typeof sessionStorage !== \"undefined\" && sessionStorage !== null) {\n sessionStorage.clear();\n }\n return this.setData();\n },\n setData: function(data) {\n var user;\n if (typeof data === 'string') {\n data = JSON.parse(data);\n }\n if (data != null ? data.token : void 0) {\n this.storeToken(data.token);\n }\n if (data != null ? data.user : void 0) {\n user = this.storeUser(data.user);\n }\n this.set('state', user ? 'signed-in' : 'signed-out');\n return this.set('user', user ? user : void 0);\n },\n storeToken: function(token) {\n if (typeof sessionStorage !== \"undefined\" && sessionStorage !== null) {\n sessionStorage.setItem('travis.token', token);\n }\n return this.notifyPropertyChange('accessToken');\n },\n storeUser: function(user) {\n if (typeof localStorage !== \"undefined\" && localStorage !== null) {\n localStorage.setItem('travis.auto_signin', 'true');\n }\n if (typeof sessionStorage !== \"undefined\" && sessionStorage !== null) {\n sessionStorage.setItem('travis.user', JSON.stringify(user));\n }\n this.store.load(Travis.User, user);\n return this.store.find(Travis.User, user.id);\n },\n receiveMessage: function(event) {\n if (event.origin === this.expectedOrigin()) {\n this.setData(event.data);\n return console.log(\"signed in as \" + event.data.user.login);\n } else {\n return console.log(\"unexpected message \" + event.origin + \": \" + event.data);\n }\n },\n expectedOrigin: function() {\n if (this.endpoint[0] === '/') {\n return this.receivingEnd;\n } else {\n return this.endpoint;\n }\n }\n });\n\n}).call(this);\n\n})();\n//@ sourceURL=auth");minispade.register('controllers', "(function() {(function() {\nminispade.require('helpers');\nminispade.require('travis/ticker');\n\n Travis.reopen({\n Controller: Em.Controller.extend({\n connectOutlet: function() {\n var view, _connectedOutletViews;\n view = this._super.apply(this, arguments);\n if (view) {\n _connectedOutletViews = Travis.app.get('_connectedOutletViews');\n if (!_connectedOutletViews) {\n _connectedOutletViews = [];\n }\n _connectedOutletViews.pushObject(view);\n Travis.app.set('_connectedOutletViews', _connectedOutletViews);\n }\n return view;\n }\n }),\n TopController: Em.Controller.extend({\n userBinding: 'Travis.app.currentUser'\n }),\n ApplicationController: Em.Controller.extend(),\n MainController: Em.Controller.extend(),\n StatsLayoutController: Em.Controller.extend(),\n ProfileLayoutController: Em.Controller.extend()\n });\nminispade.require('controllers/accounts');\nminispade.require('controllers/builds');\nminispade.require('controllers/home');\nminispade.require('controllers/profile');\nminispade.require('controllers/repositories');\nminispade.require('controllers/repository');\nminispade.require('controllers/sidebar');\nminispade.require('controllers/stats');\n\n}).call(this);\n\n})();\n//@ sourceURL=controllers");minispade.register('controllers/accounts', "(function() {(function() {\n\n Travis.AccountsController = Ember.ArrayController.extend({\n tab: 'accounts',\n init: function() {\n return this._super();\n },\n findByLogin: function(login) {\n return this.find(function(account) {\n return account.get('login') === 'login';\n });\n }\n });\n\n}).call(this);\n\n})();\n//@ sourceURL=controllers/accounts");minispade.register('controllers/builds', "(function() {(function() {\n\n Travis.BuildsController = Em.ArrayController.extend({\n repositoryBinding: 'parent.repository',\n contentBinding: 'parent.builds'\n });\n\n}).call(this);\n\n})();\n//@ sourceURL=controllers/builds");minispade.register('controllers/home', "(function() {(function() {\n\n Travis.HomeController = Travis.Controller.extend();\n\n}).call(this);\n\n})();\n//@ sourceURL=controllers/home");minispade.register('controllers/job', "(function() {(function() {\n\n\n\n}).call(this);\n\n})();\n//@ sourceURL=controllers/job");minispade.register('controllers/profile', "(function() {(function() {\n\n Travis.ProfileController = Travis.Controller.extend({\n name: 'profile',\n userBinding: 'Travis.app.currentUser',\n accountsBinding: 'Travis.app.router.accountsController',\n account: (function() {\n var login;\n login = this.get('params.login') || Travis.app.get('currentUser.login');\n return this.get('accounts').filter(function(account) {\n if (account.get('login') === login) {\n return account;\n }\n })[0];\n }).property('accounts.length', 'params.login'),\n activate: function(action, params) {\n this.setParams(params || this.get('params'));\n return this[\"view\" + ($.camelize(action))]();\n },\n viewHooks: function() {\n this.connectTab('hooks');\n return this.set('hooks', Travis.Hook.find({\n owner_name: this.get('params.login') || Travis.app.get('currentUser.login')\n }));\n },\n viewUser: function() {\n return this.connectTab('user');\n },\n connectTab: function(tab) {\n var viewClass;\n viewClass = Travis[\"\" + ($.camelize(tab)) + \"View\"];\n this.set('tab', tab);\n return this.connectOutlet({\n outletName: 'pane',\n controller: this,\n viewClass: viewClass\n });\n },\n setParams: function(params) {\n var key, value, _results;\n this.set('params', {});\n _results = [];\n for (key in params) {\n value = params[key];\n _results.push(this.set(\"params.\" + key, params[key]));\n }\n return _results;\n }\n });\n\n}).call(this);\n\n})();\n//@ sourceURL=controllers/profile");minispade.register('controllers/repositories', "(function() {(function() {\n\n Travis.RepositoriesController = Ember.ArrayController.extend({\n defaultTab: 'recent',\n sortProperties: ['sortOrder'],\n init: function() {\n this.activate(this.defaultTab);\n return Ember.run.later(this.updateTimes.bind(this), Travis.INTERVALS.updateTimes);\n },\n updateTimes: function() {\n var content;\n if (content = this.get('content')) {\n content.forEach(function(r) {\n return r.updateTimes();\n });\n }\n return Ember.run.later(this.updateTimes.bind(this), Travis.INTERVALS.updateTimes);\n },\n activate: function(tab, params) {\n this.set('tab', tab);\n return this[\"view\" + ($.camelize(tab))](params);\n },\n viewRecent: function() {\n return this.set('content', Travis.Repository.find());\n },\n viewOwned: function() {\n return this.set('content', Travis.Repository.ownedBy(Travis.app.get('currentUser.login')));\n },\n viewSearch: function(params) {\n return this.set('content', Travis.Repository.search(params.search));\n },\n searchObserver: (function() {\n var search, tab;\n search = this.get('search');\n tab = search ? 'search' : 'recent';\n return this.activate(tab, {\n search: search\n });\n }).observes('search')\n });\n\n}).call(this);\n\n})();\n//@ sourceURL=controllers/repositories");minispade.register('controllers/repository', "(function() {(function() {\n\n Travis.RepositoryController = Travis.Controller.extend({\n bindings: [],\n init: function() {\n this._super.apply(this, arguments);\n return Ember.run.later(this.updateTimes.bind(this), Travis.INTERVALS.updateTimes);\n },\n updateTimes: function() {\n var build, builds;\n if (builds = this.get('builds')) {\n builds.forEach(function(b) {\n return b.updateTimes();\n });\n }\n if (build = this.get('build')) {\n build.updateTimes();\n build.get('jobs').forEach(function(j) {\n return j.updateTimes();\n });\n }\n return Ember.run.later(this.updateTimes.bind(this), Travis.INTERVALS.updateTimes);\n },\n activate: function(action) {\n this._unbind();\n return this[\"view\" + ($.camelize(action))]();\n },\n viewIndex: function() {\n this._bind('repository', 'controllers.repositoriesController.firstObject');\n this._bind('build', 'repository.lastBuild');\n return this.connectTab('current');\n },\n viewCurrent: function() {\n this.connectTab('current');\n return this._bind('build', 'repository.lastBuild');\n },\n viewBuilds: function() {\n this.connectTab('builds');\n return this._bind('builds', 'repository.builds');\n },\n viewPullRequests: function() {\n this.connectTab('pull_requests');\n return this._bind('builds', 'repository.pullRequests');\n },\n viewBranches: function() {\n this.connectTab('branches');\n return this._bind('builds', 'repository.branches');\n },\n viewBuild: function() {\n return this.connectTab('build');\n },\n viewJob: function() {\n this._bind('build', 'job.build');\n return this.connectTab('job');\n },\n repositoryObserver: (function() {\n var repository;\n repository = this.get('repository');\n if (repository) {\n return repository.select();\n }\n }).observes('repository.id'),\n connectTab: function(tab) {\n var name, viewClass;\n name = tab === 'current' ? 'build' : tab;\n viewClass = name === 'builds' || name === 'branches' || name === 'pull_requests' ? Travis.BuildsView : Travis[\"\" + ($.camelize(name)) + \"View\"];\n this.set('tab', tab);\n return this.connectOutlet({\n outletName: 'pane',\n controller: this,\n viewClass: viewClass\n });\n },\n _bind: function(to, from) {\n return this.bindings.push(Ember.oneWay(this, to, from));\n },\n _unbind: function() {\n var binding, _i, _len, _ref;\n _ref = this.bindings;\n for (_i = 0, _len = _ref.length; _i < _len; _i++) {\n binding = _ref[_i];\n binding.disconnect(this);\n }\n return this.bindings.length = 0;\n }\n });\n\n}).call(this);\n\n})();\n//@ sourceURL=controllers/repository");minispade.register('controllers/sidebar', "(function() {(function() {\n\n Travis.reopen({\n SidebarController: Em.ArrayController.extend({\n init: function() {\n this.tickables = [];\n return Travis.Ticker.create({\n target: this,\n interval: Travis.INTERVALS.sponsors\n });\n },\n tick: function() {\n var tickable, _i, _len, _ref, _results;\n _ref = this.tickables;\n _results = [];\n for (_i = 0, _len = _ref.length; _i < _len; _i++) {\n tickable = _ref[_i];\n _results.push(tickable.tick());\n }\n return _results;\n }\n }),\n QueuesController: Em.ArrayController.extend(),\n WorkersController: Em.ArrayController.extend({\n groups: (function() {\n var content, groups, host, worker, _i, _len, _ref;\n if (content = this.get('content')) {\n groups = {};\n _ref = content.toArray();\n for (_i = 0, _len = _ref.length; _i < _len; _i++) {\n worker = _ref[_i];\n host = worker.get('host');\n if (!groups[host]) {\n groups[host] = Em.ArrayProxy.create({\n content: []\n });\n }\n groups[host].pushObject(worker);\n }\n return $.values(groups);\n }\n }).property('content.length')\n }),\n SponsorsController: Em.ArrayController.extend({\n page: 0,\n arrangedContent: (function() {\n return this.get('shuffled').slice(this.start(), this.end());\n }).property('shuffled.length', 'page'),\n shuffled: (function() {\n var content;\n if (content = this.get('content')) {\n return $.shuffle(content);\n } else {\n return [];\n }\n }).property('content.length'),\n tick: function() {\n return this.set('page', this.isLast() ? 0 : this.get('page') + 1);\n },\n pages: (function() {\n var length;\n length = this.get('content.length');\n if (length) {\n return parseInt(length / this.get('perPage') + 1);\n } else {\n return 1;\n }\n }).property('length'),\n isLast: function() {\n return this.get('page') === this.get('pages') - 1;\n },\n start: function() {\n return this.get('page') * this.get('perPage');\n },\n end: function() {\n return this.start() + this.get('perPage');\n }\n })\n });\n\n}).call(this);\n\n})();\n//@ sourceURL=controllers/sidebar");minispade.register('controllers/stats', "(function() {(function() {\n\n Travis.StatsController = Travis.Controller.extend({\n name: 'stats',\n init: function() {\n return this._super('top');\n },\n activate: function(action, params) {}\n });\n\n}).call(this);\n\n})();\n//@ sourceURL=controllers/stats");minispade.register('helpers', "(function() {(function() {\nminispade.require('helpers/handlebars');\nminispade.require('helpers/helpers');\nminispade.require('helpers/urls');\n\n}).call(this);\n\n})();\n//@ sourceURL=helpers");minispade.register('helpers/handlebars', "(function() {(function() {\n var safe;\nminispade.require('ext/ember/bound_helper');\n\n safe = function(string) {\n return new Handlebars.SafeString(string);\n };\n\n Handlebars.registerHelper('tipsy', function(text, tip) {\n return safe('' + text + ' ');\n });\n\n Handlebars.registerHelper('t', function(key) {\n return safe(I18n.t(key));\n });\n\n Ember.registerBoundHelper('formatTime', function(value, options) {\n return safe(Travis.Helpers.timeAgoInWords(value) || '-');\n });\n\n Ember.registerBoundHelper('formatDuration', function(duration, options) {\n return safe(Travis.Helpers.timeInWords(duration));\n });\n\n Ember.registerBoundHelper('formatCommit', function(commit, options) {\n if (commit) {\n return safe(Travis.Helpers.formatCommit(commit.get('sha'), commit.get('branch')));\n }\n });\n\n Ember.registerBoundHelper('formatSha', function(sha, options) {\n return safe(Travis.Helpers.formatSha(sha));\n });\n\n Ember.registerBoundHelper('pathFrom', function(url, options) {\n return safe(Travis.Helpers.pathFrom(url));\n });\n\n Ember.registerBoundHelper('formatMessage', function(message, options) {\n return safe(Travis.Helpers.formatMessage(message, options));\n });\n\n Ember.registerBoundHelper('formatConfig', function(config, options) {\n return safe(Travis.Helpers.formatConfig(config));\n });\n\n Ember.registerBoundHelper('formatLog', function(log, options) {\n return Travis.Helpers.formatLog(log) || '';\n });\n\n}).call(this);\n\n})();\n//@ sourceURL=helpers/handlebars");minispade.register('helpers/helpers', "(function() {(function() {\nminispade.require('travis/log');\nminispade.require('emoij');\n\n this.Travis.Helpers = {\n compact: function(object) {\n var key, result, value, _ref;\n result = {};\n _ref = object || {};\n for (key in _ref) {\n value = _ref[key];\n if (!$.isEmpty(value)) {\n result[key] = value;\n }\n }\n return result;\n },\n safe: function(string) {\n return new Handlebars.SafeString(string);\n },\n colorForResult: function(result) {\n if (result === 0) {\n return 'green';\n } else {\n if (result === 1) {\n return 'red';\n } else {\n return null;\n }\n }\n },\n formatCommit: function(sha, branch) {\n return Travis.Helpers.formatSha(sha) + (branch ? \" (\" + branch + \")\" : '');\n },\n formatSha: function(sha) {\n return (sha || '').substr(0, 7);\n },\n formatConfig: function(config) {\n var values;\n config = $.only(config, 'rvm', 'gemfile', 'env', 'otp_release', 'php', 'node_js', 'scala', 'jdk', 'python', 'perl');\n values = $.map(config, function(value, key) {\n value = (value && value.join ? value.join(', ') : value) || '';\n return '%@: %@'.fmt($.camelize(key), value);\n });\n if (values.length === 0) {\n return '-';\n } else {\n return values.join(', ');\n }\n },\n formatMessage: function(message, options) {\n message = message || '';\n if (options.short) {\n message = message.split(/\\n/)[0];\n }\n return this._emojize(this._escape(message)).replace(/\\n/g, ' ');\n },\n formatLog: function(log) {\n return Travis.Log.filter(log);\n },\n pathFrom: function(url) {\n return (url || '').split('/').pop();\n },\n timeAgoInWords: function(date) {\n return $.timeago.distanceInWords(date);\n },\n durationFrom: function(started, finished) {\n started = started && this._toUtc(new Date(this._normalizeDateString(started)));\n finished = finished ? this._toUtc(new Date(this._normalizeDateString(finished))) : this._nowUtc();\n if (started && finished) {\n return Math.round((finished - started) / 1000);\n } else {\n return 0;\n }\n },\n timeInWords: function(duration) {\n var days, hours, minutes, result, seconds;\n days = Math.floor(duration / 86400);\n hours = Math.floor(duration % 86400 / 3600);\n minutes = Math.floor(duration % 3600 / 60);\n seconds = duration % 60;\n if (days > 0) {\n return 'more than 24 hrs';\n } else {\n result = [];\n if (hours === 1) {\n result.push(hours + ' hr');\n }\n if (hours > 1) {\n result.push(hours + ' hrs');\n }\n if (minutes > 0) {\n result.push(minutes + ' min');\n }\n if (seconds > 0) {\n result.push(seconds + ' sec');\n }\n if (result.length > 0) {\n return result.join(' ');\n } else {\n return '-';\n }\n }\n },\n _normalizeDateString: function(string) {\n if (window.JHW) {\n string = string.replace('T', ' ').replace(/-/g, '/');\n string = string.replace('Z', '').replace(/\\..*$/, '');\n }\n return string;\n },\n _nowUtc: function() {\n return this._toUtc(new Date());\n },\n _toUtc: function(date) {\n return Date.UTC(date.getFullYear(), date.getMonth(), date.getDate(), date.getHours(), date.getMinutes(), date.getSeconds(), date.getMilliseconds());\n },\n _emojize: function(text) {\n var emojis;\n emojis = text.match(/:\\S+?:/g);\n if (emojis !== null) {\n $.each(emojis.uniq(), function(ix, emoji) {\n var image, strippedEmoji;\n strippedEmoji = emoji.substring(1, emoji.length - 1);\n if (EmojiDictionary.indexOf(strippedEmoji) !== -1) {\n image = ' ';\n return text = text.replace(new RegExp(emoji, 'g'), image);\n }\n });\n }\n return text;\n },\n _escape: function(text) {\n return text.replace(/&/g, '&').replace(//g, '>');\n }\n };\n\n}).call(this);\n\n})();\n//@ sourceURL=helpers/helpers");minispade.register('helpers/urls', "(function() {(function() {\n\n this.Travis.Urls = {\n repository: function(slug) {\n return \"/\" + slug;\n },\n builds: function(slug) {\n return \"/\" + slug + \"/builds\";\n },\n pullRequests: function(slug) {\n return \"/\" + slug + \"/pull_requests\";\n },\n branches: function(slug) {\n return \"/\" + slug + \"/branches\";\n },\n build: function(slug, id) {\n return \"/\" + slug + \"/builds/\" + id;\n },\n job: function(slug, id) {\n return \"/\" + slug + \"/jobs/\" + id;\n },\n githubCommit: function(slug, sha) {\n return \"http://github.com/\" + slug + \"/commit/\" + sha;\n },\n githubRepository: function(slug) {\n return \"http://github.com/\" + slug;\n },\n githubWatchers: function(slug) {\n return \"http://github.com/\" + slug + \"/watchers\";\n },\n githubNetwork: function(slug) {\n return \"http://github.com/\" + slug + \"/network\";\n },\n githubAdmin: function(slug) {\n return \"http://github.com/\" + slug + \"/admin/hooks#travis_minibucket\";\n },\n statusImage: function(slug, branch) {\n return (\"https://secure.travis-ci.org/\" + slug + \".png\") + (branch ? \"?branch=\" + branch : '');\n },\n email: function(email) {\n return \"mailto:\" + email;\n },\n account: function(login) {\n return \"/profile/\" + login;\n },\n user: function(login) {\n return \"/profile/\" + login + \"/me\";\n }\n };\n\n}).call(this);\n\n})();\n//@ sourceURL=helpers/urls");minispade.register('models', "(function() {(function() {\nminispade.require('models/extensions');\nminispade.require('models/account');\nminispade.require('models/artifact');\nminispade.require('models/branch');\nminispade.require('models/build');\nminispade.require('models/commit');\nminispade.require('models/hook');\nminispade.require('models/job');\nminispade.require('models/repository');\nminispade.require('models/sponsor');\nminispade.require('models/user');\nminispade.require('models/worker');\n\n}).call(this);\n\n})();\n//@ sourceURL=models");minispade.register('models/account', "(function() {(function() {\nminispade.require('travis/model');\n\n this.Travis.Account = Travis.Model.extend({\n primaryKey: 'login',\n login: DS.attr('string'),\n name: DS.attr('string'),\n type: DS.attr('string'),\n reposCount: DS.attr('number'),\n urlGithub: (function() {\n return \"http://github.com/\" + (this.get('login'));\n }).property()\n });\n\n}).call(this);\n\n})();\n//@ sourceURL=models/account");minispade.register('models/artifact', "(function() {(function() {\nminispade.require('travis/model');\n\n this.Travis.Artifact = Travis.Model.extend({\n body: DS.attr('string'),\n init: function() {\n this._super.apply(this, arguments);\n return this.set('queue', Ember.A([]));\n },\n append: function(body) {\n if (this.get('isLoaded')) {\n return this.set('body', this.get('body') + body);\n } else {\n return this.get('queue').pushObject(body);\n }\n },\n recordDidLoad: (function() {\n var queue;\n if (this.get('isLoaded')) {\n queue = this.get('queue');\n if (queue.get('length') > 0) {\n return this.append(queue.toArray().join(''));\n }\n }\n }).observes('isLoaded')\n });\n\n}).call(this);\n\n})();\n//@ sourceURL=models/artifact");minispade.register('models/branch', "(function() {(function() {\nminispade.require('travis/model');\n\n this.Travis.Branch = Travis.Model.extend(Travis.Helpers, {\n repositoryId: DS.attr('number'),\n commitId: DS.attr('number'),\n number: DS.attr('number'),\n branch: DS.attr('string'),\n message: DS.attr('string'),\n result: DS.attr('number'),\n duration: DS.attr('number'),\n startedAt: DS.attr('string'),\n finishedAt: DS.attr('string'),\n commit: DS.belongsTo('Travis.Commit'),\n repository: (function() {\n if (this.get('repositoryId')) {\n return Travis.Repository.find(this.get('repositoryId'));\n }\n }).property('repositoryId'),\n updateTimes: function() {\n this.notifyPropertyChange('started_at');\n return this.notifyPropertyChange('finished_at');\n }\n });\n\n this.Travis.Branch.reopenClass({\n byRepositoryId: function(id) {\n return this.find({\n repository_id: id\n });\n }\n });\n\n}).call(this);\n\n})();\n//@ sourceURL=models/branch");minispade.register('models/build', "(function() {(function() {\nminispade.require('travis/model');\n\n this.Travis.Build = Travis.Model.extend(Travis.DurationCalculations, {\n eventType: DS.attr('string'),\n repositoryId: DS.attr('number'),\n commitId: DS.attr('number'),\n state: DS.attr('string'),\n number: DS.attr('number'),\n branch: DS.attr('string'),\n message: DS.attr('string'),\n result: DS.attr('number'),\n _duration: DS.attr('number', {\n key: 'duration'\n }),\n startedAt: DS.attr('string', {\n key: 'started_at'\n }),\n finishedAt: DS.attr('string', {\n key: 'finished_at'\n }),\n repository: DS.belongsTo('Travis.Repository'),\n commit: DS.belongsTo('Travis.Commit'),\n jobs: DS.hasMany('Travis.Job', {\n key: 'job_ids'\n }),\n config: (function() {\n return Travis.Helpers.compact(this.get('data.config'));\n }).property('data.config'),\n isMatrix: (function() {\n return this.get('data.job_ids.length') > 1;\n }).property('data.job_ids.length'),\n requiredJobs: (function() {\n return this.get('jobs').filter(function(data) {\n return !data.get('allowFailure');\n });\n }).property('jobs.@each.allowFailure'),\n allowedFailureJobs: (function() {\n return this.get('jobs').filter(function(data) {\n return data.get('allowFailure');\n });\n }).property('jobs.@each.allowFailure'),\n configKeys: (function() {\n var config, headers, key, keys;\n if (!(config = this.get('config'))) {\n return [];\n }\n keys = $.intersect($.keys(config), Travis.CONFIG_KEYS);\n headers = (function() {\n var _i, _len, _ref, _results;\n _ref = ['build.job', 'build.duration', 'build.finished_at'];\n _results = [];\n for (_i = 0, _len = _ref.length; _i < _len; _i++) {\n key = _ref[_i];\n _results.push(I18n.t(key));\n }\n return _results;\n })();\n return $.map(headers.concat(keys), function(key) {\n return $.camelize(key);\n });\n }).property('config')\n });\n\n this.Travis.Build.reopenClass({\n byRepositoryId: function(id, parameters) {\n return this.find($.extend(parameters || {}, {\n repository_id: id\n }));\n },\n olderThanNumber: function(id, build_number) {\n return this.find({\n url: \"/builds\",\n repository_id: id,\n after_number: build_number\n });\n }\n });\n\n}).call(this);\n\n})();\n//@ sourceURL=models/build");minispade.register('models/commit', "(function() {(function() {\nminispade.require('travis/model');\n\n this.Travis.Commit = Travis.Model.extend({\n buildId: DS.attr('number'),\n sha: DS.attr('string'),\n branch: DS.attr('string'),\n message: DS.attr('string'),\n compareUrl: DS.attr('string'),\n authorName: DS.attr('string'),\n authorEmail: DS.attr('string'),\n committerName: DS.attr('string'),\n committerEmail: DS.attr('string'),\n build: DS.belongsTo('Travis.Build', {\n key: 'buildId'\n })\n });\n\n}).call(this);\n\n})();\n//@ sourceURL=models/commit");minispade.register('models/extensions', "(function() {(function() {\n\n Travis.DurationCalculations = Ember.Mixin.create({\n duration: (function() {\n var duration;\n if (duration = this.get('_duration')) {\n return duration;\n } else {\n return Travis.Helpers.durationFrom(this.get('startedAt'), this.get('finishedAt'));\n }\n }).property('_duration', 'finishedAt', 'startedAt'),\n updateTimes: function() {\n this.notifyPropertyChange('_duration');\n return this.notifyPropertyChange('finished_at');\n }\n });\n\n}).call(this);\n\n})();\n//@ sourceURL=models/extensions");minispade.register('models/hook', "(function() {(function() {\nminispade.require('travis/model');\n\n this.Travis.Hook = Travis.Model.extend({\n name: DS.attr('string'),\n ownerName: DS.attr('string'),\n description: DS.attr('string'),\n active: DS.attr('boolean'),\n account: (function() {\n return this.get('slug').split('/')[0];\n }).property('slug'),\n slug: (function() {\n return \"\" + (this.get('ownerName')) + \"/\" + (this.get('name'));\n }).property('ownerName', 'name'),\n urlGithub: (function() {\n return \"http://github.com/\" + (this.get('slug'));\n }).property(),\n urlGithubAdmin: (function() {\n return \"http://github.com/\" + (this.get('slug')) + \"/admin/hooks#travis_minibucket\";\n }).property(),\n toggle: function() {\n var transaction;\n transaction = this.get('store').transaction();\n transaction.add(this);\n this.set('active', !this.get('active'));\n return transaction.commit();\n }\n });\n\n}).call(this);\n\n})();\n//@ sourceURL=models/hook");minispade.register('models/job', "(function() {(function() {\nminispade.require('travis/model');\n\n this.Travis.Job = Travis.Model.extend(Travis.DurationCalculations, {\n repositoryId: DS.attr('number'),\n buildId: DS.attr('number'),\n commitId: DS.attr('number'),\n logId: DS.attr('number'),\n queue: DS.attr('string'),\n state: DS.attr('string'),\n number: DS.attr('string'),\n result: DS.attr('number'),\n _duration: DS.attr('number', {\n key: 'duration'\n }),\n startedAt: DS.attr('string'),\n finishedAt: DS.attr('string'),\n allowFailure: DS.attr('boolean', {\n key: 'allow_failure'\n }),\n repository: DS.belongsTo('Travis.Repository', {\n key: 'repository_id'\n }),\n build: DS.belongsTo('Travis.Build', {\n key: 'build_id'\n }),\n commit: DS.belongsTo('Travis.Commit', {\n key: 'commit_id'\n }),\n log: DS.belongsTo('Travis.Artifact', {\n key: 'log_id'\n }),\n isQueued: (function() {}).property('state'),\n config: (function() {\n return Travis.Helpers.compact(this.get('data.config'));\n }).property('data.config'),\n sponsor: (function() {\n return this.get('data.sponsor');\n }).property('data.sponsor'),\n configValues: (function() {\n var config;\n if (config = this.get('config')) {\n return $.values($.only.apply(config, Travis.CONFIG_KEYS));\n } else {\n return [];\n }\n }).property('config'),\n appendLog: function(text) {\n var log;\n if (log = this.get('log')) {\n return log.append(text);\n }\n },\n subscribe: function() {\n var id;\n if (id = this.get('id')) {\n return Travis.app.pusher.subscribe(\"job-\" + id);\n }\n },\n onStateChange: (function() {\n if (this.get('state') === 'finished') {\n return Travis.app.pusher.unsubscribe(\"job-\" + (this.get('id')));\n }\n }).observes('state')\n });\n\n this.Travis.Job.reopenClass({\n queued: function(queue) {\n this.find();\n return Travis.app.store.filter(this, function(job) {\n var queued;\n queued = ['created', 'queued'].indexOf(job.get('state')) !== -1;\n return queued && job.get('queue') === (\"builds.\" + queue);\n });\n },\n findMany: function(ids) {\n return Travis.app.store.findMany(this, ids);\n }\n });\n\n}).call(this);\n\n})();\n//@ sourceURL=models/job");minispade.register('models/repository', "(function() {(function() {\nminispade.require('travis/expandable_record_array');\nminispade.require('travis/model');\n\n this.Travis.Repository = Travis.Model.extend({\n slug: DS.attr('string'),\n description: DS.attr('string'),\n lastBuildId: DS.attr('number'),\n lastBuildNumber: DS.attr('string'),\n lastBuildResult: DS.attr('number'),\n lastBuildStartedAt: DS.attr('string'),\n lastBuildFinishedAt: DS.attr('string'),\n lastBuild: DS.belongsTo('Travis.Build'),\n builds: (function() {\n var array, builds, id;\n id = this.get('id');\n builds = Travis.Build.byRepositoryId(id, {\n event_type: 'push'\n });\n array = Travis.ExpandableRecordArray.create({\n type: Travis.Build,\n content: Ember.A([]),\n store: this.get('store')\n });\n array.load(builds);\n return array;\n }).property(),\n pullRequests: (function() {\n var array, builds, id;\n id = this.get('id');\n builds = Travis.Build.byRepositoryId(id, {\n event_type: 'pull_request'\n });\n array = Travis.ExpandableRecordArray.create({\n type: Travis.Build,\n content: Ember.A([]),\n store: this.get('store')\n });\n array.load(builds);\n return array;\n }).property(),\n branches: (function() {\n return Travis.Branch.byRepositoryId(this.get('id'));\n }).property(),\n owner: (function() {\n return (this.get('slug') || '').split('/')[0];\n }).property('slug'),\n name: (function() {\n return (this.get('slug') || '').split('/')[1];\n }).property('slug'),\n lastBuildDuration: (function() {\n var duration;\n duration = this.get('data.last_build_duration');\n if (!duration) {\n duration = Travis.Helpers.durationFrom(this.get('lastBuildStartedAt'), this.get('lastBuildFinishedAt'));\n }\n return duration;\n }).property('data.last_build_duration', 'lastBuildStartedAt', 'lastBuildFinishedAt'),\n sortOrder: (function() {\n var lastBuildFinishedAt;\n if (lastBuildFinishedAt = this.get('lastBuildFinishedAt')) {\n return -new Date(lastBuildFinishedAt).getTime();\n } else {\n return -new Date('9999').getTime() - parseInt(this.get('lastBuildId'));\n }\n }).property('lastBuildFinishedAt', 'lastBuildId'),\n stats: (function() {\n var _this = this;\n return this.get('_stats') || $.get(\"https://api.github.com/repos/\" + (this.get('slug')), function(data) {\n _this.set('_stats', data);\n return _this.notifyPropertyChange('stats');\n }) && {};\n }).property(),\n select: function() {\n return Travis.Repository.select(this.get('id'));\n },\n updateTimes: function() {\n return this.notifyPropertyChange('lastBuildDuration');\n }\n });\n\n this.Travis.Repository.reopenClass({\n recent: function() {\n return this.find();\n },\n ownedBy: function(login) {\n return this.find({\n owner_name: login,\n orderBy: 'name'\n });\n },\n search: function(query) {\n return this.find({\n search: query,\n orderBy: 'name'\n });\n },\n bySlug: function(slug) {\n var repo;\n repo = $.select(this.find().toArray(), function(repo) {\n return repo.get('slug') === slug;\n });\n if (repo.length > 0) {\n return repo;\n } else {\n return this.find({\n slug: slug\n });\n }\n },\n select: function(id) {\n return this.find().forEach(function(repository) {\n return repository.set('selected', repository.get('id') === id);\n });\n }\n });\n\n}).call(this);\n\n})();\n//@ sourceURL=models/repository");minispade.register('models/sponsor', "(function() {(function() {\nminispade.require('travis/model');\n\n this.Travis.Sponsor = Travis.Model.extend({\n type: DS.attr('string'),\n url: DS.attr('string'),\n link: DS.attr('string'),\n image: (function() {\n return \"/images/sponsors/\" + (this.get('data.image'));\n }).property('data.image')\n });\n\n Travis.Sponsor.reopenClass({\n decks: function() {\n return this.platinum().concat(this.gold());\n },\n platinum: function() {\n var platinum, sponsor, _i, _len, _results;\n platinum = this.byType('platinum').toArray();\n _results = [];\n for (_i = 0, _len = platinum.length; _i < _len; _i++) {\n sponsor = platinum[_i];\n _results.push([sponsor]);\n }\n return _results;\n },\n gold: function() {\n var gold, _results;\n gold = this.byType('gold').toArray();\n _results = [];\n while (gold.length > 0) {\n _results.push(gold.splice(0, 2));\n }\n return _results;\n },\n links: function() {\n return this.byType('silver');\n },\n byType: function() {\n var types;\n types = Array.prototype.slice.apply(arguments);\n return Travis.Sponsor.filter(function(sponsor) {\n return types.indexOf(sponsor.get('type')) !== -1;\n });\n }\n });\n\n}).call(this);\n\n})();\n//@ sourceURL=models/sponsor");minispade.register('models/user', "(function() {(function() {\nminispade.require('travis/ajax');\nminispade.require('travis/model');\n\n this.Travis.User = Travis.Model.extend(Travis.Ajax, {\n name: DS.attr('string'),\n email: DS.attr('string'),\n login: DS.attr('string'),\n token: DS.attr('string'),\n locale: DS.attr('string'),\n gravatarId: DS.attr('string'),\n isSyncing: DS.attr('boolean'),\n syncedAt: DS.attr('string'),\n repoCount: DS.attr('number'),\n init: function() {\n if (this.get('isSyncing')) {\n this.poll();\n }\n this._super();\n return Ember.run.next(this, function() {\n var transaction;\n transaction = this.get('store').transaction();\n return transaction.add(this);\n });\n },\n urlGithub: (function() {\n return \"https://github.com/\" + (this.get('login'));\n }).property(),\n updateLocale: function(locale) {\n var observer, self, transaction;\n this.setWithSession('locale', locale);\n transaction = this.get('transaction');\n transaction.commit();\n self = this;\n observer = function() {\n if (!self.get('isSaving')) {\n self.removeObserver('isSaving', observer);\n transaction = self.get('store').transaction();\n return transaction.add(self);\n }\n };\n return this.addObserver('isSaving', observer);\n },\n type: (function() {\n return 'user';\n }).property(),\n sync: function() {\n this.post('/users/sync');\n this.setWithSession('isSyncing', true);\n return this.poll();\n },\n poll: function() {\n var _this = this;\n return this.ajax('/users', 'get', {\n success: function(data) {\n if (data.user.is_syncing) {\n return Ember.run.later(_this, _this.poll.bind(_this), 3000);\n } else {\n _this.set('isSyncing', false);\n return _this.setWithSession('syncedAt', data.user.synced_at);\n }\n }\n });\n },\n setWithSession: function(name, value) {\n var user;\n this.set(name, value);\n user = JSON.parse(typeof sessionStorage !== \"undefined\" && sessionStorage !== null ? sessionStorage.getItem('travis.user') : void 0);\n user[$.underscore(name)] = this.get(name);\n return typeof sessionStorage !== \"undefined\" && sessionStorage !== null ? sessionStorage.setItem('travis.user', JSON.stringify(user)) : void 0;\n }\n });\n\n}).call(this);\n\n})();\n//@ sourceURL=models/user");minispade.register('models/worker', "(function() {(function() {\nminispade.require('travis/model');\n\n this.Travis.Worker = Travis.Model.extend({\n state: DS.attr('string'),\n name: DS.attr('string'),\n host: DS.attr('string'),\n lastSeenAt: DS.attr('string'),\n payload: (function() {\n return this.get('data.payload');\n }).property('data.payload'),\n number: (function() {\n return this.get('name').match(/\\d+$/)[0];\n }).property('name'),\n isWorking: (function() {\n return this.get('state') === 'working';\n }).property('state'),\n repository: (function() {\n return Travis.Repository.find(this.get('payload.repository.id'));\n }).property('payload.repository.id'),\n job_id: (function() {\n return this.get('payload.job.id');\n }).property('payload.job.id'),\n job: (function() {\n return Travis.Job.find(this.get('job_id'));\n }).property('job_id')\n });\n\n}).call(this);\n\n})();\n//@ sourceURL=models/worker");minispade.register('pusher', "(function() {(function() {\n\n Travis.Pusher = function(config) {\n if (config) {\n this.init(config);\n }\n return this;\n };\n\n $.extend(Travis.Pusher, {\n CHANNELS: ['common'],\n CHANNEL_PREFIX: ''\n });\n\n $.extend(Travis.Pusher.prototype, {\n active_channels: [],\n init: function(config) {\n var channel, _i, _len, _ref, _results;\n Pusher.warn = this.warn.bind(this);\n this.pusher = new Pusher(config.key);\n _ref = Travis.Pusher.CHANNELS;\n _results = [];\n for (_i = 0, _len = _ref.length; _i < _len; _i++) {\n channel = _ref[_i];\n _results.push(this.subscribe(channel));\n }\n return _results;\n },\n subscribe: function(channel) {\n var _this = this;\n if (this.pusher && this.active_channels.indexOf(channel) === -1) {\n this.active_channels.push(channel);\n return this.pusher.subscribe(this.prefix(channel)).bind_all(function(event, data) {\n return _this.receive(event, data);\n });\n }\n },\n unsubscribe: function(channel) {\n var ix;\n ix = this.active_channels.indexOf(channel);\n if (this.pusher && ix === -1) {\n this.active_channels.splice(ix, 1);\n return this.pusher.unsubscribe(this.prefix(channel));\n }\n },\n prefix: function(channel) {\n return \"\" + Travis.Pusher.CHANNEL_PREFIX + channel;\n },\n receive: function(event, data) {\n if (event.substr(0, 6) === 'pusher') {\n return;\n }\n if (data.id) {\n data = this.normalize(event, data);\n }\n return Ember.run.next(function() {\n return Travis.app.store.receive(event, data);\n });\n },\n normalize: function(event, data) {\n switch (event) {\n case 'build:started':\n case 'build:finished':\n return data;\n case 'job:created':\n case 'job:started':\n case 'job:finished':\n case 'job:log':\n if (data.queue) {\n data.queue = data.queue.replace('builds.', '');\n }\n return {\n job: data\n };\n case 'worker:added':\n case 'worker:updated':\n case 'worker:removed':\n return {\n worker: data\n };\n }\n },\n warn: function(type, warning) {\n if (!this.ignoreWarning(warning)) {\n return console.warn(warning);\n }\n },\n ignoreWarning: function(warning) {\n var message, _ref;\n if (message = (_ref = warning.data) != null ? _ref.message : void 0) {\n return message.indexOf('Existing subscription') === 0 || message.indexOf('No current subscription') === 0;\n }\n }\n });\n\n}).call(this);\n\n})();\n//@ sourceURL=pusher");minispade.register('routes', "(function() {(function() {\n\n Travis.Router = Ember.Router.extend({\n location: 'history',\n enableLogging: false,\n initialState: 'loading',\n goToRoot: Ember.Route.transitionTo('root.home.show'),\n goToStats: Ember.Route.transitionTo('root.stats'),\n showRepository: Ember.Route.transitionTo('root.home.repository.show'),\n showBuilds: Ember.Route.transitionTo('root.home.repository.builds.index'),\n showBuild: Ember.Route.transitionTo('root.home.repository.builds.show'),\n showPullRequests: Ember.Route.transitionTo('root.home.repository.pullRequests'),\n showBranches: Ember.Route.transitionTo('root.home.repository.branches'),\n showJob: Ember.Route.transitionTo('root.home.repository.job'),\n showProfile: Ember.Route.transitionTo('root.profile'),\n showAccount: Ember.Route.transitionTo('root.profile.account'),\n showUserProfile: Ember.Route.transitionTo('root.profile.account.profile'),\n signedIn: function() {\n return !!Travis.app.get('auth.user');\n },\n requiresAuth: function(path) {\n return path === '/profile' && !this.signedIn();\n },\n loading: Ember.Route.extend({\n routePath: function(router, path) {\n router.set('lastAttemptedPath', path);\n if (router.requiresAuth(path)) {\n return router.send('showUnauthenticated');\n } else {\n return router.send('showAuthenticated');\n }\n }\n }),\n showUnauthenticated: Ember.State.transitionTo('root.home.show'),\n showAuthenticated: Ember.State.transitionTo('authenticated.index'),\n authenticated: Ember.Route.extend({\n index: Ember.Route.extend({\n connectOutlets: function(router) {\n var path;\n router.transitionTo('root');\n path = router.get('lastAttemptedPath');\n if (path && path !== '/') {\n return router.route(path);\n }\n }\n })\n }),\n root: Ember.Route.extend({\n initialState: 'home',\n loading: Ember.State.extend(),\n stats: Ember.Route.extend({\n route: '/stats',\n connectOutlets: function(router) {\n router.get('applicationController').connectOutlet('statsLayout');\n $('body').attr('id', 'stats');\n router.get('statsLayoutController').connectOutlet('top', 'top');\n return router.get('statsLayoutController').connectOutlet('main', 'stats');\n }\n }),\n profile: Ember.Route.extend({\n initialState: 'index',\n route: '/profile',\n connectOutlets: function(router) {\n router.get('applicationController').connectOutlet('profileLayout');\n $('body').attr('id', 'profile');\n router.get('accountsController').set('content', Travis.Account.find());\n router.get('profileLayoutController').connectOutlet('top', 'top');\n return router.get('profileLayoutController').connectOutlet('left', 'accounts');\n },\n index: Ember.Route.extend({\n route: '/',\n connectOutlets: function(router) {\n router.get('profileLayoutController').connectOutlet('main', 'profile');\n return router.get('profileController').activate('hooks');\n }\n }),\n account: Ember.Route.extend({\n initialState: 'index',\n route: '/:login',\n connectOutlets: function(router, account) {\n var params;\n if (account) {\n params = {\n login: account.get('login')\n };\n return router.get('profileController').setParams(params);\n } else {\n return router.send('showProfile');\n }\n },\n deserialize: function(router, params) {\n return router.get('accountsController').findByLogin(params.login);\n },\n serialize: function(router, account) {\n if (account) {\n return {\n login: account.get('login')\n };\n } else {\n return {};\n }\n },\n index: Ember.Route.extend({\n route: '/',\n connectOutlets: function(router) {\n return router.get('profileController').activate('hooks');\n }\n }),\n profile: Ember.Route.extend({\n route: '/profile',\n connectOutlets: function(router) {\n return router.get('profileController').activate('user');\n }\n })\n })\n }),\n home: Ember.Route.extend({\n initialState: 'show',\n route: '/',\n connectOutlets: function(router) {\n router.get('applicationController').connectOutlet('home');\n $('body').attr('id', 'home');\n router.get('homeController').connectOutlet('left', 'repositories');\n router.get('homeController').connectOutlet('right', 'sidebar');\n router.get('homeController').connectOutlet('top', 'top');\n return router.get('homeController').connectOutlet('main', 'repository');\n },\n show: Ember.Route.extend({\n route: '/',\n connectOutlets: function(router) {\n return router.get('repositoryController').activate('index');\n }\n }),\n repository: Ember.Route.extend({\n initialState: 'show',\n route: '/:owner/:name',\n connectOutlets: function(router, repository) {\n return router.get('repositoryController').set('repository', repository);\n },\n deserialize: function(router, params) {\n var deferred, observer, repos, slug;\n slug = \"\" + params.owner + \"/\" + params.name;\n repos = Travis.Repository.bySlug(slug);\n deferred = $.Deferred();\n observer = function() {\n if (repos.get('isLoaded')) {\n repos.removeObserver('isLoaded', observer);\n return deferred.resolve(repos.objectAt(0));\n }\n };\n repos.addObserver('isLoaded', observer);\n return deferred.promise();\n },\n serialize: function(router, repository) {\n if (repository) {\n return {\n owner: repository.get('owner'),\n name: repository.get('name')\n };\n } else {\n return {};\n }\n },\n show: Ember.Route.extend({\n route: '/',\n connectOutlets: function(router) {\n return router.get('repositoryController').activate('current');\n }\n }),\n builds: Ember.Route.extend({\n route: '/builds',\n initialState: 'index',\n index: Ember.Route.extend({\n route: '/',\n connectOutlets: function(router, repository) {\n return router.get('repositoryController').activate('builds');\n }\n }),\n show: Ember.Route.extend({\n route: '/:build_id',\n connectOutlets: function(router, build) {\n if (!build.get) {\n build = Travis.Build.find(build);\n }\n router.get('repositoryController').set('build', build);\n return router.get('repositoryController').activate('build');\n },\n serialize: function(router, build) {\n if (build.get) {\n return {\n build_id: build.get('id')\n };\n } else {\n return {\n build_id: build\n };\n }\n },\n deserialize: function(router, params) {\n var build, deferred, observer;\n build = Travis.Build.find(params.build_id);\n deferred = $.Deferred();\n observer = function() {\n if (build.get('id')) {\n build.removeObserver('id', observer);\n return deferred.resolve(build);\n }\n };\n build.addObserver('id', observer);\n return deferred.promise();\n }\n })\n }),\n pullRequests: Ember.Route.extend({\n route: '/pull_requests',\n connectOutlets: function(router, repository) {\n return router.get('repositoryController').activate('pull_requests');\n }\n }),\n branches: Ember.Route.extend({\n route: '/branches',\n connectOutlets: function(router, repository) {\n return router.get('repositoryController').activate('branches');\n }\n }),\n job: Ember.Route.extend({\n route: '/jobs/:job_id',\n connectOutlets: function(router, job) {\n if (!job.get) {\n job = Travis.Job.find(job);\n }\n router.get('repositoryController').set('job', job);\n return router.get('repositoryController').activate('job');\n },\n serialize: function(router, job) {\n if (job.get) {\n return {\n job_id: job.get('id')\n };\n } else {\n return {\n job_id: job\n };\n }\n },\n deserialize: function(router, params) {\n var deferred, job, observer;\n job = Travis.Job.find(params.job_id);\n deferred = $.Deferred();\n observer = function() {\n if (job.get('id')) {\n job.removeObserver('id', observer);\n return deferred.resolve(job);\n }\n };\n job.addObserver('id', observer);\n return deferred.promise();\n }\n })\n })\n })\n })\n });\n\n}).call(this);\n\n})();\n//@ sourceURL=routes");minispade.register('slider', "(function() {(function() {\n\n this.Travis.Slider = function() {\n if ((typeof localStorage !== \"undefined\" && localStorage !== null ? localStorage.getItem('travis.maximized') : void 0) === 'true') {\n this.minimize();\n }\n return this;\n };\n\n $.extend(Travis.Slider.prototype, {\n persist: function() {\n return typeof localStorage !== \"undefined\" && localStorage !== null ? localStorage.setItem('travis.maximized', this.isMinimized()) : void 0;\n },\n isMinimized: function() {\n return $('body').hasClass('maximized');\n },\n minimize: function() {\n return $('body').addClass('maximized');\n },\n toggle: function() {\n var element;\n $('body').toggleClass('maximized');\n this.persist();\n element = $(' ');\n $('#top .profile').append(element);\n return Em.run.later((function() {\n return element.remove();\n }), 10);\n }\n });\n\n}).call(this);\n\n})();\n//@ sourceURL=slider");minispade.register('store', "(function() {(function() {\n var DATA_PROXY,\n __indexOf = [].indexOf || function(item) { for (var i = 0, l = this.length; i < l; i++) { if (i in this && this[i] === item) return i; } return -1; };\nminispade.require('store/rest_adapter');\n\n DATA_PROXY = {\n get: function(name) {\n return this.savedData[name];\n }\n };\n\n Travis.Store = DS.Store.extend({\n revision: 4,\n adapter: Travis.RestAdapter.create(),\n merge: function(type, id, hash) {\n var clientId, data, dataCache, primaryKey, record, recordCache, typeMap;\n if (hash === void 0) {\n hash = id;\n primaryKey = type.proto().primaryKey;\n Ember.assert(\"A data hash was loaded for a record of type \" + type.toString() + \" but no primary key '\" + primaryKey + \"' was provided.\", hash[primaryKey]);\n id = hash[primaryKey];\n }\n typeMap = this.typeMapFor(type);\n dataCache = typeMap.cidToHash;\n clientId = typeMap.idToCid[id];\n recordCache = this.get('recordCache');\n if (clientId !== void 0) {\n if (data = dataCache[clientId]) {\n $.extend(data, hash);\n } else {\n dataCache[clientId] = hash;\n }\n if (record = recordCache[clientId]) {\n record.send('didChangeData');\n }\n } else {\n clientId = this.find(type, id).get('clientId');\n }\n if (clientId) {\n DATA_PROXY.savedData = hash;\n this.updateRecordArrays(type, clientId, DATA_PROXY);\n return {\n id: id,\n clientId: clientId\n };\n }\n },\n receive: function(event, data) {\n var job, mappings, name, type, _ref;\n _ref = event.split(':'), name = _ref[0], type = _ref[1];\n mappings = this.adapter.get('mappings');\n type = mappings[name];\n if (event === 'job:log') {\n if (job = this.find(Travis.Job, data['job']['id'])) {\n return job.appendLog(data['job']['_log']);\n }\n } else if (data[type.singularName()]) {\n return this._loadOne(this, type, data);\n } else if (data[type.pluralName()]) {\n return this._loadMany(this, type, data);\n } else {\n if (!type) {\n throw \"can't load data for \" + name;\n }\n }\n },\n _loadOne: function(store, type, json) {\n var root;\n root = type.singularName();\n this.adapter.sideload(store, type, json, root);\n this.merge(type, json[root]);\n return this._updateAssociations(type, root, json[root]);\n },\n _loadMany: function(store, type, json) {\n var root;\n root = type.pluralName();\n this.adapter.sideload(store, type, json, root);\n return this.loadMany(type, json[root]);\n },\n _updateAssociations: function(type, name, data) {\n var _this = this;\n return Em.get(type, 'associationsByName').forEach(function(key, meta) {\n var clientId, dataProxy, id, ids, parent, _ref;\n if (meta.kind === 'belongsTo') {\n id = data[\"\" + key + \"_id\"];\n if (clientId = _this.typeMapFor(meta.type).idToCid[id]) {\n if (parent = _this.findByClientId(meta.type, clientId, id)) {\n dataProxy = parent.get('data');\n if (ids = dataProxy.get(\"\" + name + \"_ids\")) {\n if (_ref = data.id, __indexOf.call(ids, _ref) < 0) {\n ids.pushObject(data.id);\n }\n return parent.send('didChangeData');\n }\n }\n }\n }\n });\n }\n });\n\n}).call(this);\n\n})();\n//@ sourceURL=store");minispade.register('store/fixture_adapter', "(function() {(function() {\n\n this.Travis.FixtureAdapter = DS.Adapter.extend({\n find: function(store, type, id) {\n var fixtures;\n fixtures = type.FIXTURES;\n Ember.assert(\"Unable to find fixtures for model type \" + type.toString(), !!fixtures);\n if (fixtures.hasLoaded) {\n return;\n }\n return setTimeout((function() {\n store.loadMany(type, fixtures);\n return fixtures.hasLoaded = true;\n }), 300);\n },\n findMany: function() {\n return this.find.apply(this, arguments);\n },\n findAll: function(store, type) {\n var fixtures, ids;\n fixtures = type.FIXTURES;\n Ember.assert(\"Unable to find fixtures for model type \" + type.toString(), !!fixtures);\n ids = fixtures.map(function(item, index, self) {\n return item.id;\n });\n return store.loadMany(type, ids, fixtures);\n },\n findQuery: function(store, type, params, array) {\n var fixture, fixtures, hashes, key, matches, value;\n fixtures = type.FIXTURES;\n Ember.assert(\"Unable to find fixtures for model type \" + type.toString(), !!fixtures);\n hashes = (function() {\n var _i, _len, _results;\n _results = [];\n for (_i = 0, _len = fixtures.length; _i < _len; _i++) {\n fixture = fixtures[_i];\n matches = (function() {\n var _results1;\n _results1 = [];\n for (key in params) {\n value = params[key];\n _results1.push(key === 'orderBy' || fixture[key] === value);\n }\n return _results1;\n })();\n if (matches.reduce(function(a, b) {\n return a && b;\n })) {\n _results.push(fixture);\n } else {\n _results.push(null);\n }\n }\n return _results;\n })();\n return array.load(hashes.compact());\n }\n });\n\n}).call(this);\n\n})();\n//@ sourceURL=store/fixture_adapter");minispade.register('store/rest_adapter', "(function() {(function() {\nminispade.require('travis/ajax');\nminispade.require('models');\n\n this.Travis.RestAdapter = DS.RESTAdapter.extend(Travis.Ajax, {\n mappings: {\n repositories: Travis.Repository,\n repository: Travis.Repository,\n builds: Travis.Build,\n build: Travis.Build,\n commits: Travis.Commit,\n commit: Travis.Commit,\n jobs: Travis.Job,\n job: Travis.Job,\n account: Travis.Account,\n accounts: Travis.Account,\n worker: Travis.Worker,\n workers: Travis.Worker\n },\n plurals: {\n repository: 'repositories',\n build: 'builds',\n branch: 'branches',\n job: 'jobs',\n worker: 'workers',\n profile: 'profile'\n }\n });\n\n}).call(this);\n\n})();\n//@ sourceURL=store/rest_adapter");minispade.register('tailing', "(function() {(function() {\n\n this.Travis.Tailing = function() {\n this.position = $(window).scrollTop();\n $(window).scroll(this.onScroll.bind(this));\n return this;\n };\n\n $.extend(Travis.Tailing.prototype, {\n options: {\n timeout: 200\n },\n run: function() {\n this.autoScroll();\n this.positionButton();\n if (this.active()) {\n return Ember.run.later(this.run.bind(this), this.options.timeout);\n }\n },\n toggle: function(event) {\n if (this.active()) {\n return this.stop();\n } else {\n return this.start();\n }\n },\n active: function() {\n return $('#tail').hasClass('active');\n },\n start: function() {\n $('#tail').addClass('active');\n return this.run();\n },\n stop: function() {\n return $('#tail').removeClass('active');\n },\n autoScroll: function() {\n var log, logBottom, win, winBottom;\n if (!this.active()) {\n return;\n }\n win = $(window);\n log = $('#log');\n logBottom = log.offset().top + log.outerHeight() + 40;\n winBottom = win.scrollTop() + win.height();\n if (logBottom - winBottom > 0) {\n return win.scrollTop(logBottom - win.height());\n }\n },\n onScroll: function() {\n var position;\n this.positionButton();\n position = $(window).scrollTop();\n if (position < this.position) {\n this.stop();\n }\n return this.position = position;\n },\n positionButton: function() {\n var max, offset, tail;\n tail = $('#tail');\n if (tail.length === 0) {\n return;\n }\n offset = $(window).scrollTop() - $('#log').offset().top;\n max = $('#log').height() - $('#tail').height() + 5;\n if (offset > max) {\n offset = max;\n }\n if (offset > 0) {\n return tail.css({\n top: offset - 2\n });\n } else {\n return tail.css({\n top: 0\n });\n }\n }\n });\n\n}).call(this);\n\n})();\n//@ sourceURL=tailing");minispade.register('views', "(function() {(function() {\nminispade.require('ext/ember/namespace');\n\n this.Travis.reopen({\n View: Em.View.extend({\n popup: function(event) {\n return $(\"#\" + event.target.name).toggleClass('display');\n }\n })\n });\n\n this.Travis.reopen({\n HomeView: Travis.View.extend({\n templateName: 'layouts/home'\n }),\n ProfileLayoutView: Travis.View.extend({\n templateName: 'layouts/profile'\n }),\n StatsLayoutView: Travis.View.extend({\n templateName: 'layouts/simple'\n }),\n ApplicationView: Travis.View.extend({\n templateName: 'application'\n })\n });\nminispade.require('views/accounts');\nminispade.require('views/build');\nminispade.require('views/job');\nminispade.require('views/repo');\nminispade.require('views/profile');\nminispade.require('views/sidebar');\nminispade.require('views/stats');\nminispade.require('views/top');\n\n}).call(this);\n\n})();\n//@ sourceURL=views");minispade.register('views/accounts', "(function() {(function() {\n\n this.Travis.reopen({\n AccountsView: Travis.View.extend({\n tabBinding: 'controller.tab',\n templateName: 'profile/accounts',\n classAccounts: (function() {\n if (this.get('tab') === 'accounts') {\n return 'active';\n }\n }).property('tab')\n }),\n AccountsListView: Em.CollectionView.extend({\n elementId: 'accounts',\n accountBinding: 'content',\n tagName: 'ul',\n emptyView: Ember.View.extend({\n template: Ember.Handlebars.compile('Loading
')\n }),\n itemViewClass: Travis.View.extend({\n accountBinding: 'content',\n typeBinding: 'content.type',\n selectedBinding: 'account.selected',\n classNames: ['account'],\n classNameBindings: ['type', 'selected'],\n name: (function() {\n return this.get('content.name') || this.get('content.login');\n }).property('content.login', 'content.name'),\n urlAccount: (function() {\n return Travis.Urls.account(this.get('account.login'));\n }).property('account.login')\n })\n })\n });\n\n}).call(this);\n\n})();\n//@ sourceURL=views/accounts");minispade.register('views/build', "(function() {(function() {\n\n this.Travis.reopen({\n BuildsView: Travis.View.extend({\n templateName: 'builds/list',\n buildsBinding: 'controller.builds',\n showMore: function() {\n var id, number;\n id = this.get('controller.repository.id');\n number = this.get('builds.lastObject.number');\n return this.get('builds').load(Travis.Build.olderThanNumber(id, number));\n },\n ShowMoreButton: Em.View.extend({\n tagName: 'button',\n classNameBindings: ['isLoading'],\n attributeBindings: ['disabled'],\n isLoadingBinding: 'controller.builds.isLoading',\n template: Em.Handlebars.compile('{{view.label}}'),\n disabledBinding: 'isLoading',\n label: (function() {\n if (this.get('isLoading')) {\n return 'Loading';\n } else {\n return 'Show more';\n }\n }).property('isLoading'),\n click: function() {\n return this.get('parentView').showMore();\n }\n })\n }),\n BuildsItemView: Travis.View.extend({\n tagName: 'tr',\n classNameBindings: ['color'],\n repositoryBinding: 'controller.repository',\n buildBinding: 'context',\n commitBinding: 'build.commit',\n color: (function() {\n return Travis.Helpers.colorForResult(this.get('build.result'));\n }).property('build.result'),\n urlBuild: (function() {\n return Travis.Urls.build(this.get('repository.slug'), this.get('build.id'));\n }).property('repository.slug', 'build.id'),\n urlGithubCommit: (function() {\n return Travis.Urls.githubCommit(this.get('repository.slug'), this.get('commit.sha'));\n }).property('repository.slug', 'commit.sha')\n }),\n BuildView: Travis.View.extend({\n templateName: 'builds/show',\n elementId: 'build',\n classNameBindings: ['color', 'loading'],\n repositoryBinding: 'controller.repository',\n buildBinding: 'controller.build',\n commitBinding: 'build.commit',\n loading: (function() {\n return !this.get('build.isLoaded');\n }).property('build.isLoaded'),\n color: (function() {\n return Travis.Helpers.colorForResult(this.get('build.result'));\n }).property('build.result'),\n urlBuild: (function() {\n return Travis.Urls.build(this.get('repository.slug'), this.get('build.id'));\n }).property('repository.slug', 'build.id'),\n urlGithubCommit: (function() {\n return Travis.Urls.githubCommit(this.get('repository.slug'), this.get('commit.sha'));\n }).property('repository.slug', 'commit.sha'),\n urlAuthor: (function() {\n return Travis.Urls.email(this.get('commit.authorEmail'));\n }).property('commit.authorEmail'),\n urlCommitter: (function() {\n return Travis.Urls.email(this.get('commit.committerEmail'));\n }).property('commit.committerEmail')\n })\n });\n\n}).call(this);\n\n})();\n//@ sourceURL=views/build");minispade.register('views/job', "(function() {(function() {\n\n this.Travis.reopen({\n JobsView: Travis.View.extend({\n templateName: 'jobs/list',\n buildBinding: 'controller.build'\n }),\n JobsItemView: Travis.View.extend({\n tagName: 'tr',\n classNameBindings: ['color'],\n repositoryBinding: 'context.repository',\n jobBinding: 'context',\n color: (function() {\n return Travis.Helpers.colorForResult(this.get('job.result'));\n }).property('job.result'),\n urlJob: (function() {\n return Travis.Urls.job(this.get('repository.slug'), this.get('job.id'));\n }).property('repository.slug', 'job.id')\n }),\n JobView: Travis.View.extend({\n templateName: 'jobs/show',\n repositoryBinding: 'controller.repository',\n jobBinding: 'controller.job',\n commitBinding: 'job.commit',\n color: (function() {\n return Travis.Helpers.colorForResult(this.get('job.result'));\n }).property('job.result'),\n urlJob: (function() {\n return Travis.Urls.job(this.get('repository.slug'), this.get('job.id'));\n }).property('repository.slug', 'job.id'),\n urlGithubCommit: (function() {\n return Travis.Urls.githubCommit(this.get('repository.slug'), this.get('commit.sha'));\n }).property('repository.slug', 'commit.sha'),\n urlAuthor: (function() {\n return Travis.Urls.email(this.get('commit.authorEmail'));\n }).property('commit.authorEmail'),\n urlCommitter: (function() {\n return Travis.Urls.email(this.get('commit.committerEmail'));\n }).property('commit.committerEmail')\n }),\n LogView: Travis.View.extend({\n templateName: 'jobs/log',\n logBinding: 'job.log',\n click: function(event) {\n return $(event.target).closest('.fold').toggleClass('open');\n },\n toTop: function() {\n return $(window).scrollTop(0);\n },\n jobBinding: 'context',\n toggleTailing: function(event) {\n Travis.app.tailing.toggle();\n return event.preventDefault();\n },\n logSubscriber: (function() {\n var job, state;\n job = this.get('job');\n state = this.get('job.state');\n if (job && state !== 'finished') {\n job.subscribe();\n }\n return null;\n }).property('job', 'job.state')\n })\n });\n\n}).call(this);\n\n})();\n//@ sourceURL=views/job");minispade.register('views/left', "(function() {(function() {\n\n this.Travis.reopen({\n ReposView: Travis.View.extend({\n templateName: 'repos/list',\n tabBinding: 'controller.tab',\n classRecent: (function() {\n if (this.get('tab') === 'recent') {\n return 'active';\n }\n }).property('tab'),\n classOwned: (function() {\n var classes;\n classes = [];\n if (this.get('tab') === 'owned') {\n classes.push('active');\n }\n if (Travis.app.get('currentUser')) {\n classes.push('display');\n }\n return classes.join(' ');\n }).property('tab', 'Travis.currentUser'),\n classSearch: (function() {\n if (this.get('tab') === 'search') {\n return 'active';\n }\n }).property('tab')\n })\n });\n\n}).call(this);\n\n})();\n//@ sourceURL=views/left");minispade.register('views/profile', "(function() {(function() {\n\n this.Travis.reopen({\n ProfileView: Travis.View.extend({\n templateName: 'profile/show',\n accountBinding: 'controller.account',\n name: (function() {\n return this.get('account.name') || this.get('account.login');\n }).property('account.name', 'account.login')\n }),\n ProfileTabsView: Travis.View.extend({\n templateName: 'profile/tabs',\n tabBinding: 'controller.tab',\n activate: function(event) {\n return this.get('controller').activate(event.target.name);\n },\n classHooks: (function() {\n if (this.get('tab') === 'hooks') {\n return 'active';\n }\n }).property('tab'),\n classUser: (function() {\n if (this.get('tab') === 'user') {\n return 'active';\n }\n }).property('tab'),\n accountBinding: 'controller.account',\n displayUser: (function() {\n return this.get('controller.account.login') === this.get('controller.user.login');\n }).property('controller.account.login', 'controller.user.login')\n }),\n HooksView: Travis.View.extend({\n templateName: 'profile/tabs/hooks',\n userBinding: 'controller.user',\n urlGithubAdmin: (function() {\n return Travis.Urls.githubAdmin(this.get('hook.slug'));\n }).property('hook.slug')\n }),\n UserView: Travis.View.extend({\n templateName: 'profile/tabs/user',\n userBinding: 'controller.user',\n gravatarUrl: (function() {\n return \"\" + location.protocol + \"//www.gravatar.com/avatar/\" + (this.get('user.gravatarId')) + \"?s=48&d=mm\";\n }).property('user.gravatarId'),\n locales: (function() {\n return [\n {\n key: null,\n name: ''\n }, {\n key: 'en',\n name: 'English'\n }, {\n key: 'ca',\n name: 'Catalan'\n }, {\n key: 'cs',\n name: 'Čeština'\n }, {\n key: 'es',\n name: 'Español'\n }, {\n key: 'fr',\n name: 'Français'\n }, {\n key: 'ja',\n name: '日本語'\n }, {\n key: 'nl',\n name: 'Nederlands'\n }, {\n key: 'nb',\n name: 'Norsk Bokmål'\n }, {\n key: 'pl',\n name: 'Polski'\n }, {\n key: {\n 'pt-BR': {\n name: 'Português brasileiro'\n }\n }\n }, {\n key: 'ru',\n name: 'Русский'\n }\n ];\n }).property(),\n saveLocale: function(event) {\n return this.get('user').updateLocale($('#locale').val());\n }\n })\n });\n\n}).call(this);\n\n})();\n//@ sourceURL=views/profile");minispade.register('views/repo', "(function() {(function() {\nminispade.require('views/repo/list');\nminispade.require('views/repo/show');\n\n}).call(this);\n\n})();\n//@ sourceURL=views/repo");minispade.register('views/repo/list', "(function() {(function() {\n\n this.Travis.reopen({\n RepositoriesView: Travis.View.extend({\n templateName: 'repos/list',\n toggleInfo: function(event) {\n return $('#repositories').toggleClass('open');\n }\n }),\n RepositoriesListView: Em.CollectionView.extend({\n elementId: 'repositories',\n tagName: 'ul',\n emptyView: Ember.View.extend({\n template: Ember.Handlebars.compile('Loading
')\n }),\n itemViewClass: Travis.View.extend({\n repositoryBinding: 'content',\n classNames: ['repository'],\n classNameBindings: ['color', 'selected'],\n selectedBinding: 'repository.selected',\n color: (function() {\n return Travis.Helpers.colorForResult(this.get('repository.lastBuildResult'));\n }).property('repository.lastBuildResult'),\n urlRepository: (function() {\n return Travis.Urls.repository(this.get('repository.slug'));\n }).property('repository.slug'),\n urlLastBuild: (function() {\n return Travis.Urls.build(this.get('repository.slug'), this.get('repository.lastBuildId'));\n }).property('repository.slug', 'repository.lastBuildId')\n })\n }),\n ReposListTabsView: Travis.View.extend({\n templateName: 'repos/list/tabs',\n tabBinding: 'controller.tab',\n activate: function(event) {\n return this.get('controller').activate(event.target.name);\n },\n classRecent: (function() {\n if (this.get('tab') === 'recent') {\n return 'active';\n }\n }).property('tab'),\n classOwned: (function() {\n var classes;\n classes = [];\n if (this.get('tab') === 'owned') {\n classes.push('active');\n }\n if (Travis.app.get('currentUser')) {\n classes.push('display-inline');\n }\n return classes.join(' ');\n }).property('tab', 'Travis.app.currentUser'),\n classSearch: (function() {\n if (this.get('tab') === 'search') {\n return 'active';\n }\n }).property('tab')\n })\n });\n\n}).call(this);\n\n})();\n//@ sourceURL=views/repo/list");minispade.register('views/repo/show', "(function() {(function() {\n\n this.Travis.reopen({\n RepositoryView: Travis.View.extend({\n templateName: 'repos/show',\n repositoryBinding: 'controller.repository',\n \"class\": (function() {\n if (!this.get('repository.isLoaded')) {\n return 'loading';\n }\n }).property('repository.isLoaded'),\n urlGithub: (function() {\n return Travis.Urls.githubRepository(this.get('repository.slug'));\n }).property('repository.slug'),\n urlGithubWatchers: (function() {\n return Travis.Urls.githubWatchers(this.get('repository.slug'));\n }).property('repository.slug'),\n urlGithubNetwork: (function() {\n return Travis.Urls.githubNetwork(this.get('repository.slug'));\n }).property('repository.slug')\n }),\n RepoShowTabsView: Travis.View.extend({\n templateName: 'repos/show/tabs',\n repositoryBinding: 'controller.repository',\n buildBinding: 'controller.build',\n jobBinding: 'controller.job',\n tabBinding: 'controller.tab',\n classCurrent: (function() {\n if (this.get('tab') === 'current') {\n return 'active';\n }\n }).property('tab'),\n classBuilds: (function() {\n if (this.get('tab') === 'builds') {\n return 'active';\n }\n }).property('tab'),\n classPullRequests: (function() {\n if (this.get('tab') === 'pull_requests') {\n return 'active';\n }\n }).property('tab'),\n classBranches: (function() {\n if (this.get('tab') === 'branches') {\n return 'active';\n }\n }).property('tab'),\n classBuild: (function() {\n var classes, tab;\n tab = this.get('tab');\n classes = [];\n if (tab === 'build') {\n classes.push('active');\n }\n if (tab === 'build' || tab === 'job') {\n classes.push('display-inline');\n }\n return classes.join(' ');\n }).property('tab'),\n classJob: (function() {\n if (this.get('tab') === 'job') {\n return 'active display-inline';\n }\n }).property('tab')\n }),\n RepoShowToolsView: Travis.View.extend({\n templateName: 'repos/show/tools',\n repositoryBinding: 'controller.repository',\n buildBinding: 'controller.build',\n jobBinding: 'controller.job',\n tabBinding: 'controller.tab',\n toggle: function() {\n var element;\n element = $('#tools .pane').toggleClass('display-inline');\n return this.set('active', element.hasClass('display-inline'));\n },\n branches: (function() {\n if (this.get('active')) {\n return this.get('repository.branches');\n }\n }).property('active', 'repository.branches'),\n urlRepository: (function() {\n return 'https://' + location.host + Travis.Urls.repository(this.get('repository.slug'));\n }).property('repository.slug'),\n urlStatusImage: (function() {\n return Travis.Urls.statusImage(this.get('repository.slug'), this.get('branch.commit.branch'));\n }).property('repository.slug', 'branch'),\n markdownStatusImage: (function() {\n return \"[) + \")](\" + (this.get('urlRepository')) + \")\";\n }).property('urlStatusImage'),\n textileStatusImage: (function() {\n return \"!\" + (this.get('urlStatusImage')) + \"!:\" + (this.get('urlRepository'));\n }).property('urlStatusImage'),\n rdocStatusImage: (function() {\n return \"{ }[\" + (this.get('urlRepository')) + \"]\";\n }).property('urlStatusImage')\n })\n });\n\n}).call(this);\n\n})();\n//@ sourceURL=views/repo/show");minispade.register('views/sidebar', "(function() {(function() {\n\n this.Travis.reopen({\n SidebarView: Travis.View.extend({\n templateName: 'layouts/sidebar',\n DecksView: Em.View.extend({\n templateName: \"sponsors/decks\",\n controller: Travis.SponsorsController.create({\n perPage: 1\n }),\n didInsertElement: function() {\n var controller;\n controller = this.get('controller');\n if (!controller.get('content')) {\n Travis.app.get('router.sidebarController').tickables.push(controller);\n controller.set('content', Travis.Sponsor.decks());\n }\n return this._super.apply(this, arguments);\n }\n }),\n LinksView: Em.View.extend({\n templateName: \"sponsors/links\",\n controller: Travis.SponsorsController.create({\n perPage: 6\n }),\n didInsertElement: function() {\n var controller;\n controller = this.get('controller');\n if (!controller.get('content')) {\n controller.set('content', Travis.Sponsor.links());\n Travis.app.get('router.sidebarController').tickables.push(controller);\n }\n return this._super.apply(this, arguments);\n }\n }),\n WorkersView: Em.View.extend({\n templateName: 'workers/list',\n controller: Travis.WorkersController.create(),\n didInsertElement: function() {\n this.set('controller.content', Travis.Worker.find());\n return this._super.apply(this, arguments);\n }\n }),\n QueuesView: Em.View.extend({\n templateName: 'queues/list',\n controller: Travis.QueuesController.create(),\n didInsertElement: function() {\n var queue, queues;\n queues = (function() {\n var _i, _len, _ref, _results;\n _ref = Travis.QUEUES;\n _results = [];\n for (_i = 0, _len = _ref.length; _i < _len; _i++) {\n queue = _ref[_i];\n _results.push(Em.ArrayController.create({\n content: Travis.Job.queued(queue.name),\n id: \"queue_\" + queue.name,\n name: queue.display\n }));\n }\n return _results;\n })();\n this.set('controller.content', queues);\n return this._super.apply(this, arguments);\n }\n })\n }),\n WorkersView: Travis.View.extend({\n toggleWorkers: function(event) {\n var handle;\n handle = $(event.target).toggleClass('open');\n if (handle.hasClass('open')) {\n return $('#workers li').addClass('open');\n } else {\n return $('#workers li').removeClass('open');\n }\n }\n }),\n WorkersListView: Travis.View.extend({\n toggle: function(event) {\n return $(event.target).closest('li').toggleClass('open');\n }\n }),\n WorkersItemView: Travis.View.extend({\n display: (function() {\n var name, number, payload, repo, state;\n name = (this.get('worker.name') || '').replace('travis-', '');\n state = this.get('worker.state');\n payload = this.get('worker.payload');\n if (state === 'working' && payload !== void 0) {\n repo = payload.repository.slug;\n number = ' #' + payload.build.number;\n return (\"\" + name + \": \" + repo + \" \" + number).htmlSafe();\n } else {\n return \"\" + name + \": \" + state;\n }\n }).property('worker.state')\n }),\n QueueItemView: Travis.View.extend({\n tagName: 'li',\n urlJob: (function() {\n return Travis.Urls.job(this.get('job.repository.slug'), this.get('job.id'));\n }).property('job.repository.slug', 'job.id')\n })\n });\n\n}).call(this);\n\n})();\n//@ sourceURL=views/sidebar");minispade.register('views/stats', "(function() {(function() {\n\n this.Travis.reopen({\n StatsView: Travis.View.extend({\n templateName: 'stats/show',\n didInsertElement: function() {},\n renderChart: function(config) {\n var chart;\n chart = new Highcharts.Chart(config);\n return this.fetch(config.source, function(data) {\n var stats;\n stats = (function() {\n var _i, _len, _ref, _results;\n _ref = data.stats;\n _results = [];\n for (_i = 0, _len = _ref.length; _i < _len; _i++) {\n stats = _ref[_i];\n _results.push(config.map(stats));\n }\n return _results;\n })();\n return chart.series[0].setData(stats);\n });\n },\n fetch: function(url, callback) {\n return $.ajax({\n type: 'GET',\n url: url,\n accepts: {\n json: 'application/vnd.travis-ci.2+json'\n },\n success: callback\n });\n },\n CHARTS: {\n repos: {\n source: '/api/stats/repos',\n total: 0,\n map: function(data) {\n return [Date.parse(data.date), this.total += parseInt(data.count)];\n },\n chart: {\n renderTo: \"repos_stats\"\n },\n title: {\n text: \"Total Projects/Repositories\"\n },\n xAxis: {\n type: \"datetime\",\n dateTimeLabelFormats: {\n month: \"%e. %b\",\n year: \"%b\"\n }\n },\n yAxis: {\n title: {\n text: \"Count\"\n },\n min: 0\n },\n tooltip: {\n formatter: function() {\n return Highcharts.dateFormat(\"%e. %b\", this.x) + \": \" + this.y + \" repos\";\n }\n },\n series: [\n {\n name: \"Repository Growth\",\n data: []\n }\n ]\n },\n builds: {\n source: '/api/stats/tests',\n map: function(data) {\n return [Date.parse(data.date), parseInt(data.count)];\n },\n chart: {\n renderTo: \"tests_stats\",\n type: \"column\"\n },\n title: {\n text: \"Build Count\"\n },\n subtitle: {\n text: \"last month\"\n },\n xAxis: {\n type: \"datetime\",\n dateTimeLabelFormats: {\n month: \"%e. %b\",\n year: \"%b\"\n }\n },\n yAxis: {\n title: {\n text: \"Count\"\n },\n min: 0\n },\n tooltip: {\n formatter: function() {\n return Highcharts.dateFormat(\"%e. %b\", this.x) + \": \" + this.y + \" builds\";\n }\n },\n series: [\n {\n name: \"Total Builds\",\n data: []\n }\n ]\n }\n }\n })\n });\n\n}).call(this);\n\n})();\n//@ sourceURL=views/stats");minispade.register('views/top', "(function() {(function() {\n\n this.Travis.reopen({\n TopView: Travis.View.extend({\n templateName: 'layouts/top',\n tabBinding: 'controller.tab',\n userBinding: 'controller.user',\n gravatarUrl: (function() {\n return \"\" + location.protocol + \"//www.gravatar.com/avatar/\" + (this.get('user.gravatarId')) + \"?s=24&d=mm\";\n }).property('user.gravatarId'),\n classHome: (function() {\n if (this.get('tab') === 'home') {\n return 'active';\n }\n }).property('tab'),\n classStats: (function() {\n if (this.get('tab') === 'stats') {\n return 'active';\n }\n }).property('tab'),\n classProfile: (function() {\n var classes;\n classes = ['profile'];\n if (this.get('tab') === 'profile') {\n classes.push('active');\n }\n classes.push(Travis.app.get('authState'));\n return classes.join(' ');\n }).property('tab', 'Travis.app.authState'),\n showProfile: function() {\n return $('#top .profile ul').show();\n },\n hideProfile: function() {\n return $('#top .profile ul').hide();\n }\n })\n });\n\n}).call(this);\n\n})();\n//@ sourceURL=views/top");minispade.register('data/sponsors', "(function() {(function() {\n\n this.Travis.SPONSORS = [\n {\n type: 'platinum',\n url: \"http://www.wooga.com\",\n image: \"wooga-205x130.png\"\n }, {\n type: 'platinum',\n url: \"http://bendyworks.com\",\n image: \"bendyworks-205x130.png\"\n }, {\n type: 'platinum',\n url: \"http://cloudcontrol.com\",\n image: \"cloudcontrol-205x130.png\"\n }, {\n type: 'platinum',\n url: \"http://xing.de\",\n image: \"xing-205x130.png\"\n }, {\n type: 'gold',\n url: \"http://heroku.com\",\n image: \"heroku-205x60.png\"\n }, {\n type: 'gold',\n url: \"http://soundcloud.com\",\n image: \"soundcloud-205x60.png\"\n }, {\n type: 'gold',\n url: \"http://nedap.com\",\n image: \"nedap-205x60.png\"\n }, {\n type: 'gold',\n url: \"http://mongohq.com\",\n image: \"mongohq-205x60.png\"\n }, {\n type: 'gold',\n url: \"http://zweitag.de\",\n image: \"zweitag-205x60.png\"\n }, {\n type: 'gold',\n url: \"http://kanbanery.com\",\n image: \"kanbanery-205x60.png\"\n }, {\n type: 'gold',\n url: \"http://ticketevolution.com\",\n image: \"ticketevolution-205x60.jpg\"\n }, {\n type: 'gold',\n url: \"http://plan.io/travis\",\n image: \"planio-205x60.png\"\n }, {\n type: 'silver',\n link: \"Cobot : The one tool to run your coworking space \"\n }, {\n type: 'silver',\n link: \"JumpstartLab : We build developers \"\n }, {\n type: 'silver',\n link: \"Evil Martians : Agile Ruby on Rails development \"\n }, {\n type: 'silver',\n link: \"Zendesk : Love your helpdesk \"\n }, {\n type: 'silver',\n link: \"Stripe : Payments for developers \"\n }, {\n type: 'silver',\n link: \"Basho : We make Riak! \"\n }, {\n type: 'silver',\n link: \"Relevance : We deliver software solutions \"\n }, {\n type: 'silver',\n link: \"Mindmatters : Software für Menschen \"\n }, {\n type: 'silver',\n link: \"Amen : The best and worst of everything \"\n }, {\n type: 'silver',\n link: \"Site5 : Premium Web Hosting Solutions \"\n }, {\n type: 'silver',\n link: \"Crowd Interactive : Leading Rails consultancy in Mexico \"\n }, {\n type: 'silver',\n link: \"Atomic Object : Work with really smart people \"\n }, {\n type: 'silver',\n link: \"Codeminer : smart services for your startup \"\n }, {\n type: 'silver',\n link: \"Cloudant : grow into your data layer, not out of it \"\n }, {\n type: 'silver',\n link: \"Gidsy : Explore, organize & book unique things to do! \"\n }, {\n type: 'silver',\n link: \"5apps : Package & deploy HTML5 apps automatically \"\n }, {\n type: 'silver',\n link: \"Meltmedia : We are Interactive Superheroes \"\n }, {\n type: 'silver',\n link: \"Fingertips offers design and development services \"\n }, {\n type: 'silver',\n link: \"Engine Yard : Build epic apps, let us handle the rest \"\n }, {\n type: 'silver',\n link: \"Malwarebytes : Defeat Malware once and for all. \"\n }, {\n type: 'silver',\n link: \"Readmill : The best reading app on the iPad. \"\n }, {\n type: 'silver',\n link: \"Medidata : clinical tech improving quality of life \"\n }, {\n type: 'silver',\n link: \"ESM : Japan's best agile Ruby/Rails consultancy \"\n }, {\n type: 'silver',\n link: \"Twitter : instantly connects people everywhere \"\n }, {\n type: 'silver',\n link: \"AGiLE ANiMAL : we <3 Travis CI. \"\n }, {\n type: 'silver',\n link: \"Tupalo : Discover, review & share local businesses. \"\n }\n ];\n\n}).call(this);\n\n})();\n//@ sourceURL=data/sponsors");minispade.register('emoij', "(function() {(function() {\n\n this.EmojiDictionary = ['-1', '0', '1', '109', '2', '3', '4', '5', '6', '7', '8', '8ball', '9', 'a', 'ab', 'airplane', 'alien', 'ambulance', 'angel', 'anger', 'angry', 'apple', 'aquarius', 'aries', 'arrow_backward', 'arrow_down', 'arrow_forward', 'arrow_left', 'arrow_lower_left', 'arrow_lower_right', 'arrow_right', 'arrow_up', 'arrow_upper_left', 'arrow_upper_right', 'art', 'astonished', 'atm', 'b', 'baby', 'baby_chick', 'baby_symbol', 'balloon', 'bamboo', 'bank', 'barber', 'baseball', 'basketball', 'bath', 'bear', 'beer', 'beers', 'beginner', 'bell', 'bento', 'bike', 'bikini', 'bird', 'birthday', 'black_square', 'blue_car', 'blue_heart', 'blush', 'boar', 'boat', 'bomb', 'book', 'boot', 'bouquet', 'bow', 'bowtie', 'boy', 'bread', 'briefcase', 'broken_heart', 'bug', 'bulb', 'bullettrain_front', 'bullettrain_side', 'bus', 'busstop', 'cactus', 'cake', 'calling', 'camel', 'camera', 'cancer', 'capricorn', 'car', 'cat', 'cd', 'chart', 'checkered_flag', 'cherry_blossom', 'chicken', 'christmas_tree', 'church', 'cinema', 'city_sunrise', 'city_sunset', 'clap', 'clapper', 'clock1', 'clock10', 'clock11', 'clock12', 'clock2', 'clock3', 'clock4', 'clock5', 'clock6', 'clock7', 'clock8', 'clock9', 'closed_umbrella', 'cloud', 'clubs', 'cn', 'cocktail', 'coffee', 'cold_sweat', 'computer', 'confounded', 'congratulations', 'construction', 'construction_worker', 'convenience_store', 'cool', 'cop', 'copyright', 'couple', 'couple_with_heart', 'couplekiss', 'cow', 'crossed_flags', 'crown', 'cry', 'cupid', 'currency_exchange', 'curry', 'cyclone', 'dancer', 'dancers', 'dango', 'dart', 'dash', 'de', 'department_store', 'diamonds', 'disappointed', 'dog', 'dolls', 'dolphin', 'dress', 'dvd', 'ear', 'ear_of_rice', 'egg', 'eggplant', 'egplant', 'eight_pointed_black_star', 'eight_spoked_asterisk', 'elephant', 'email', 'es', 'european_castle', 'exclamation', 'eyes', 'factory', 'fallen_leaf', 'fast_forward', 'fax', 'fearful', 'feelsgood', 'feet', 'ferris_wheel', 'finnadie', 'fire', 'fire_engine', 'fireworks', 'fish', 'fist', 'flags', 'flushed', 'football', 'fork_and_knife', 'fountain', 'four_leaf_clover', 'fr', 'fries', 'frog', 'fuelpump', 'gb', 'gem', 'gemini', 'ghost', 'gift', 'gift_heart', 'girl', 'goberserk', 'godmode', 'golf', 'green_heart', 'grey_exclamation', 'grey_question', 'grin', 'guardsman', 'guitar', 'gun', 'haircut', 'hamburger', 'hammer', 'hamster', 'hand', 'handbag', 'hankey', 'hash', 'headphones', 'heart', 'heart_decoration', 'heart_eyes', 'heartbeat', 'heartpulse', 'hearts', 'hibiscus', 'high_heel', 'horse', 'hospital', 'hotel', 'hotsprings', 'house', 'hurtrealbad', 'icecream', 'id', 'ideograph_advantage', 'imp', 'information_desk_person', 'iphone', 'it', 'jack_o_lantern', 'japanese_castle', 'joy', 'jp', 'key', 'kimono', 'kiss', 'kissing_face', 'kissing_heart', 'koala', 'koko', 'kr', 'leaves', 'leo', 'libra', 'lips', 'lipstick', 'lock', 'loop', 'loudspeaker', 'love_hotel', 'mag', 'mahjong', 'mailbox', 'man', 'man_with_gua_pi_mao', 'man_with_turban', 'maple_leaf', 'mask', 'massage', 'mega', 'memo', 'mens', 'metal', 'metro', 'microphone', 'minidisc', 'mobile_phone_off', 'moneybag', 'monkey', 'monkey_face', 'moon', 'mortar_board', 'mount_fuji', 'mouse', 'movie_camera', 'muscle', 'musical_note', 'nail_care', 'necktie', 'new', 'no_good', 'no_smoking', 'nose', 'notes', 'o', 'o2', 'ocean', 'octocat', 'octopus', 'oden', 'office', 'ok', 'ok_hand', 'ok_woman', 'older_man', 'older_woman', 'open_hands', 'ophiuchus', 'palm_tree', 'parking', 'part_alternation_mark', 'pencil', 'penguin', 'pensive', 'persevere', 'person_with_blond_hair', 'phone', 'pig', 'pill', 'pisces', 'plus1', 'point_down', 'point_left', 'point_right', 'point_up', 'point_up_2', 'police_car', 'poop', 'post_office', 'postbox', 'pray', 'princess', 'punch', 'purple_heart', 'question', 'rabbit', 'racehorse', 'radio', 'rage', 'rage1', 'rage2', 'rage3', 'rage4', 'rainbow', 'raised_hands', 'ramen', 'red_car', 'red_circle', 'registered', 'relaxed', 'relieved', 'restroom', 'rewind', 'ribbon', 'rice', 'rice_ball', 'rice_cracker', 'rice_scene', 'ring', 'rocket', 'roller_coaster', 'rose', 'ru', 'runner', 'sa', 'sagittarius', 'sailboat', 'sake', 'sandal', 'santa', 'satellite', 'satisfied', 'saxophone', 'school', 'school_satchel', 'scissors', 'scorpius', 'scream', 'seat', 'secret', 'shaved_ice', 'sheep', 'shell', 'ship', 'shipit', 'shirt', 'shit', 'shoe', 'signal_strength', 'six_pointed_star', 'ski', 'skull', 'sleepy', 'slot_machine', 'smile', 'smiley', 'smirk', 'smoking', 'snake', 'snowman', 'sob', 'soccer', 'space_invader', 'spades', 'spaghetti', 'sparkler', 'sparkles', 'speaker', 'speedboat', 'squirrel', 'star', 'star2', 'stars', 'station', 'statue_of_liberty', 'stew', 'strawberry', 'sunflower', 'sunny', 'sunrise', 'sunrise_over_mountains', 'surfer', 'sushi', 'suspect', 'sweat', 'sweat_drops', 'swimmer', 'syringe', 'tada', 'tangerine', 'taurus', 'taxi', 'tea', 'telephone', 'tennis', 'tent', 'thumbsdown', 'thumbsup', 'ticket', 'tiger', 'tm', 'toilet', 'tokyo_tower', 'tomato', 'tongue', 'top', 'tophat', 'traffic_light', 'train', 'trident', 'trophy', 'tropical_fish', 'truck', 'trumpet', 'tshirt', 'tulip', 'tv', 'u5272', 'u55b6', 'u6307', 'u6708', 'u6709', 'u6e80', 'u7121', 'u7533', 'u7a7a', 'umbrella', 'unamused', 'underage', 'unlock', 'up', 'us', 'v', 'vhs', 'vibration_mode', 'virgo', 'vs', 'walking', 'warning', 'watermelon', 'wave', 'wc', 'wedding', 'whale', 'wheelchair', 'white_square', 'wind_chime', 'wink', 'wink2', 'wolf', 'woman', 'womans_hat', 'womens', 'x', 'yellow_heart', 'zap', 'zzz'];\n\n}).call(this);\n\n})();\n//@ sourceURL=emoij");minispade.register('ext/jquery', "(function() {(function() {\n\n $.fn.extend({\n outerHtml: function() {\n return $(this).wrap('
').parent().html();\n },\n outerElement: function() {\n return $($(this).outerHtml()).empty();\n },\n flash: function() {\n return Utils.flash(this);\n },\n unflash: function() {\n return Utils.unflash(this);\n },\n filterLog: function() {\n this.deansi();\n return this.foldLog();\n },\n deansi: function() {\n return this.html(Utils.deansi(this.html()));\n },\n foldLog: function() {\n return this.html(Utils.foldLog(this.html()));\n },\n unfoldLog: function() {\n return this.html(Utils.unfoldLog(this.html()));\n },\n updateTimes: function() {\n return Utils.updateTimes(this);\n },\n activateTab: function(tab) {\n return Utils.activateTab(this, tab);\n },\n timeInWords: function() {\n return $(this).each(function() {\n return $(this).text(Utils.timeInWords(parseInt($(this).attr('title'))));\n });\n },\n updateGithubStats: function(repository) {\n return Utils.updateGithubStats(repository, $(this));\n }\n });\n\n $.extend({\n isEmpty: function(obj) {\n if ($.isArray(obj)) {\n return !obj.length;\n } else if ($.isObject(obj)) {\n return !$.keys(obj).length;\n } else {\n return !obj;\n }\n },\n isObject: function(obj) {\n return Object.prototype.toString.call(obj) === '[object Object]';\n },\n keys: function(obj) {\n var keys;\n keys = [];\n $.each(obj, function(key) {\n return keys.push(key);\n });\n return keys;\n },\n values: function(obj) {\n var values;\n values = [];\n $.each(obj, function(key, value) {\n return values.push(value);\n });\n return values;\n },\n underscore: function(string) {\n return string[0].toLowerCase() + string.substring(1).replace(/([A-Z])?/g, function(match, chr) {\n if (chr) {\n return \"_\" + (chr.toUpperCase());\n } else {\n return '';\n }\n });\n },\n camelize: function(string, uppercase) {\n string = uppercase === false ? $.underscore(string) : $.capitalize(string);\n return string.replace(/_(.)?/g, function(match, chr) {\n if (chr) {\n return chr.toUpperCase();\n } else {\n return '';\n }\n });\n },\n capitalize: function(string) {\n return string[0].toUpperCase() + string.substring(1);\n },\n compact: function(object) {\n return $.grep(object, function(value) {\n return !!value;\n });\n },\n all: function(array, callback) {\n var args, i;\n args = Array.prototype.slice.apply(arguments);\n callback = args.pop();\n array = args.pop() || this;\n i = 0;\n while (i < array.length) {\n if (callback(array[i])) {\n return false;\n }\n i++;\n }\n return true;\n },\n detect: function(array, callback) {\n var args, i;\n args = Array.prototype.slice.apply(arguments);\n callback = args.pop();\n array = args.pop() || this;\n i = 0;\n while (i < array.length) {\n if (callback(array[i])) {\n return array[i];\n }\n i++;\n }\n },\n select: function(array, callback) {\n var args, i, result;\n args = Array.prototype.slice.apply(arguments);\n callback = args.pop();\n array = args.pop() || this;\n result = [];\n i = 0;\n while (i < array.length) {\n if (callback(array[i])) {\n result.push(array[i]);\n }\n i++;\n }\n return result;\n },\n slice: function(object, key) {\n var keys, result;\n keys = Array.prototype.slice.apply(arguments);\n object = (typeof keys[0] === 'object' ? keys.shift() : this);\n result = {};\n for (key in object) {\n if (keys.indexOf(key) > -1) {\n result[key] = object[key];\n }\n }\n return result;\n },\n only: function(object) {\n var key, keys, result;\n keys = Array.prototype.slice.apply(arguments);\n object = (typeof keys[0] === 'object' ? keys.shift() : this);\n result = {};\n for (key in object) {\n if (keys.indexOf(key) !== -1) {\n result[key] = object[key];\n }\n }\n return result;\n },\n except: function(object) {\n var key, keys, result;\n keys = Array.prototype.slice.apply(arguments);\n object = (typeof keys[0] === 'object' ? keys.shift() : this);\n result = {};\n for (key in object) {\n if (keys.indexOf(key) === -1) {\n result[key] = object[key];\n }\n }\n return result;\n },\n intersect: function(array, other) {\n return array.filter(function(element) {\n return other.indexOf(element) !== -1;\n });\n },\n map: function(elems, callback, arg) {\n var i, isArray, key, length, ret, value;\n value = void 0;\n key = void 0;\n ret = [];\n i = 0;\n length = elems.length;\n isArray = elems instanceof jQuery || length !== void 0 && typeof length === 'number' && (length > 0 && elems[0] && elems[length - 1]) || length === 0 || jQuery.isArray(elems);\n if (isArray) {\n while (i < length) {\n value = callback(elems[i], i, arg);\n if (value != null) {\n ret[ret.length] = value;\n }\n i++;\n }\n } else {\n for (key in elems) {\n value = callback(elems[key], key, arg);\n if (value != null) {\n ret[ret.length] = value;\n }\n }\n }\n return ret.concat.apply([], ret);\n },\n shuffle: function(array) {\n var current, tmp, top;\n array = array.slice();\n top = array.length;\n while (top && --top) {\n current = Math.floor(Math.random() * (top + 1));\n tmp = array[current];\n array[current] = array[top];\n array[top] = tmp;\n }\n return array;\n },\n truncate: function(string, length) {\n if (string.length > length) {\n return string.trim().substring(0, length) + '...';\n } else {\n return string;\n }\n }\n });\n\n}).call(this);\n\n})();\n//@ sourceURL=ext/jquery");minispade.register('travis/ajax', "(function() {(function() {\n\n jQuery.support.cors = true;\n\n this.Travis.Ajax = Ember.Mixin.create({\n DEFAULT_OPTIONS: {\n accepts: {\n json: 'application/vnd.travis-ci.2+json'\n }\n },\n post: function(url, data, callback) {\n return this.ajax(url, 'post', {\n data: data,\n success: callback\n });\n },\n ajax: function(url, method, options) {\n var accessToken, endpoint, _base, _ref;\n endpoint = Travis.config.api_endpoint || '';\n options = options || {};\n if (accessToken = (_ref = Travis.app) != null ? _ref.get('auth.accessToken') : void 0) {\n options.headers || (options.headers = {});\n (_base = options.headers)['Authorization'] || (_base['Authorization'] = \"token \" + accessToken);\n }\n options.url = \"\" + endpoint + url;\n options.type = method;\n options.dataType = 'json';\n options.contentType = 'application/json; charset=utf-8';\n options.context = this;\n if (options.data && method !== 'GET' && method !== 'get') {\n options.data = JSON.stringify(options.data);\n }\n return $.ajax($.extend(options, this.DEFAULT_OPTIONS));\n }\n });\n\n this.Travis.ajax = Em.Object.create(this.Travis.Ajax, {\n get: function(url, callback) {\n return this.ajax(url, 'get', {\n success: callback\n });\n }\n });\n\n}).call(this);\n\n})();\n//@ sourceURL=travis/ajax");minispade.register('travis/expandable_record_array', "(function() {(function() {\n\n Travis.ExpandableRecordArray = DS.RecordArray.extend({\n isLoaded: false,\n isLoading: false,\n load: function(array) {\n var observer, self;\n this.set('isLoading', true);\n self = this;\n observer = function() {\n var content;\n if (this.get('isLoaded')) {\n content = self.get('content');\n array.removeObserver('isLoaded', observer);\n array.forEach(function(record) {\n return self.pushObject(record);\n });\n self.set('isLoading', false);\n return self.set('isLoaded', true);\n }\n };\n return array.addObserver('isLoaded', observer);\n },\n pushObject: function(record) {\n var clientId, id, ids;\n ids = this.get('content');\n id = record.get('id');\n clientId = record.get('clientId');\n if (ids.contains(clientId)) {\n return;\n }\n return ids.pushObject(clientId);\n }\n });\n\n}).call(this);\n\n})();\n//@ sourceURL=travis/expandable_record_array");minispade.register('travis/log', "(function() {(function() {\n\n this.Travis.Log = {\n FOLDS: {\n schema: /(\\$ (?:bundle exec )?rake( db:create)? db:schema:load[\\s\\S]*?-- assume_migrated_upto_version[\\s\\S]*?<\\/p>\\n.*<\\/p>)/g,\n migrate: /(\\$ (?:bundle exec )?rake( db:create)? db:migrate[\\s\\S]*== +\\w+: migrated \\(.*\\) =+)/g,\n bundle: /(\\$ bundle install.*<\\/p>\\n((Updating|Using|Installing|Fetching|remote:|Receiving|Resolving).*?<\\/p>\\n|<\\/p>\\n)*)/g,\n exec: /([\\/\\w]*.rvm\\/rubies\\/[\\S]*?\\/(ruby|rbx|jruby) .*?<\\/p>)/g\n },\n filter: function(log) {\n log = this.escape(log);\n log = this.deansi(log);\n log = log.replace(/\\r/g, '');\n log = this.number(log);\n log = this.fold(log);\n log = log.replace(/\\n/g, '');\n return log;\n },\n stripPaths: function(log) {\n return log.replace(/\\/home\\/vagrant\\/builds(\\/[^\\/\\n]+){2}\\//g, '');\n },\n escape: function(log) {\n return Handlebars.Utils.escapeExpression(log);\n },\n escapeRuby: function(log) {\n return log.replace(/#<(\\w+.*?)>/, '#<$1>');\n },\n number: function(log) {\n var result;\n result = '';\n $.each(log.trim().split('\\n'), function(ix, line) {\n var number, path;\n number = ix + 1;\n path = Travis.Log.location().substr(1).replace(/\\/L\\d+/, '') + '/L' + number;\n return result += '%@ %@
\\n'.fmt(path, path, number, number, line);\n });\n return result.trim();\n },\n deansi: function(log) {\n var ansi, text;\n log = log.replace(/\\r\\r/g, '\\r').replace(/\\033\\[K\\r/g, '\\r').replace(/^.*\\r(?!$)/gm, '').replace(/\u001b\\[2K/g, '').replace(/\\033\\(B/g, \"\");\n ansi = ansiparse(log);\n text = '';\n ansi.forEach(function(part) {\n var classes;\n classes = [];\n part.foreground && classes.push(part.foreground);\n part.background && classes.push('bg-' + part.background);\n part.bold && classes.push('bold');\n part.italic && classes.push('italic');\n return text += (classes.length ? '' + part.text + ' ' : part.text);\n });\n return text.replace(/\\033/g, '');\n },\n fold: function(log) {\n log = this.unfold(log);\n $.each(Travis.Log.FOLDS, function(name, pattern) {\n return log = log.replace(pattern, function() {\n return '' + arguments[1].trim() + '
';\n });\n });\n return log;\n },\n unfold: function(log) {\n return log.replace(/([\\s\\S]*?)<\\/div>/g, '$1\\n');\n },\n location: function() {\n return window.location.hash;\n }\n };\n\n}).call(this);\n\n})();\n//@ sourceURL=travis/log");minispade.register('travis/model', "(function() {(function() {\n\n this.Travis.Model = DS.Model.extend({\n primaryKey: 'id',\n id: DS.attr('number'),\n refresh: function() {\n var id;\n id = this.get('id');\n if (id) {\n return Travis.app.store.adapter.find(Travis.app.store, this.constructor, id);\n }\n },\n update: function(attrs) {\n var _this = this;\n $.each(attrs, function(key, value) {\n if (key !== 'id') {\n return _this.set(key, value);\n }\n });\n return this;\n }\n });\n\n this.Travis.Model.reopenClass({\n find: function() {\n if (arguments.length === 0) {\n return Travis.app.store.findAll(this);\n } else {\n return this._super.apply(this, arguments);\n }\n },\n filter: function(callback) {\n return Travis.app.store.filter(this, callback);\n },\n load: function(attrs) {\n return Travis.app.store.load(this, attrs);\n },\n buildURL: function(suffix) {\n var base, url;\n base = this.url || this.pluralName();\n Ember.assert('Base URL (' + base + ') must not start with slash', !base || base.toString().charAt(0) !== '/');\n Ember.assert('URL suffix (' + suffix + ') must not start with slash', !suffix || suffix.toString().charAt(0) !== '/');\n url = [base];\n if (suffix !== void 0) {\n url.push(suffix);\n }\n return url.join('/');\n },\n singularName: function() {\n var name, parts;\n parts = this.toString().split('.');\n name = parts[parts.length - 1];\n return name.replace(/([A-Z])/g, '_$1').toLowerCase().slice(1);\n },\n pluralName: function() {\n return Travis.app.store.adapter.pluralize(this.singularName());\n }\n });\n\n}).call(this);\n\n})();\n//@ sourceURL=travis/model");minispade.register('travis/ticker', "(function() {(function() {\n\n this.Travis.Ticker = Ember.Object.extend({\n init: function() {\n if (this.get('interval') !== -1) {\n return this.schedule();\n }\n },\n tick: function() {\n var context, target, targets, _i, _len;\n context = this.get('context');\n targets = this.get('targets') || [this.get('target')];\n for (_i = 0, _len = targets.length; _i < _len; _i++) {\n target = targets[_i];\n if (context) {\n target = context.get(target);\n }\n if (target) {\n target.tick();\n }\n }\n return this.schedule();\n },\n schedule: function() {\n var _this = this;\n return Ember.run.later((function() {\n return _this.tick();\n }), this.get('interval') || Travis.app.TICK_INTERVAL);\n }\n });\n\n}).call(this);\n\n})();\n//@ sourceURL=travis/ticker");minispade.register('travis', "(function() {(function() {\nminispade.require('ext/jquery');\nminispade.require('ext/ember/namespace');\n\n this.Travis = Em.Namespace.create({\n config: {\n api_endpoint: $('meta[rel=\"travis.api_endpoint\"]').attr('href')\n },\n CONFIG_KEYS: ['rvm', 'gemfile', 'env', 'jdk', 'otp_release', 'php', 'node_js', 'perl', 'python', 'scala'],\n ROUTES: {\n 'profile/:login/me': ['profile', 'user'],\n 'profile/:login': ['profile', 'hooks'],\n 'profile': ['profile', 'hooks'],\n 'stats': ['stats', 'show'],\n ':owner/:name/jobs/:id/:line': ['home', 'job'],\n ':owner/:name/jobs/:id': ['home', 'job'],\n ':owner/:name/builds/:id': ['home', 'build'],\n ':owner/:name/builds': ['home', 'builds'],\n ':owner/:name/pull_requests': ['home', 'pullRequests'],\n ':owner/:name/branches': ['home', 'branches'],\n ':owner/:name': ['home', 'current'],\n '': ['home', 'index'],\n '#': ['home', 'index']\n },\n QUEUES: [\n {\n name: 'common',\n display: 'Common'\n }, {\n name: 'php',\n display: 'PHP, Perl and Python'\n }, {\n name: 'node_js',\n display: 'Node.js'\n }, {\n name: 'jvmotp',\n display: 'JVM and Erlang'\n }, {\n name: 'rails',\n display: 'Rails'\n }, {\n name: 'spree',\n display: 'Spree'\n }\n ],\n INTERVALS: {\n sponsors: -1,\n times: -1,\n updateTimes: 1000\n },\n run: function(attrs) {\n var _this = this;\n if (location.hash.slice(0, 2) === '#!') {\n location.href = location.href.replace('#!/', '');\n }\n return this.loadConfig(function(config) {\n var app;\n app = Travis.App.create(attrs || {});\n $.each(Travis, function(key, value) {\n if (value && value.isClass && key !== 'constructor') {\n return app[key] = value;\n }\n });\n _this.app = app;\n _this.store = app.store;\n return $(function() {\n return app.initialize();\n });\n });\n },\n loadConfig: function(callback) {\n var _this = this;\n return this.ajax.get('/config', function(data) {\n $.extend(_this.config, data.config);\n console.log(\"Connecting to \" + data.config.api_endpoint);\n return callback(data.config);\n });\n }\n });\nminispade.require('travis/ajax');\nminispade.require('app');\n\n}).call(this);\n\n})();\n//@ sourceURL=travis");minispade.register('templates', "(function() {\nEmber.TEMPLATES['application'] = Ember.Handlebars.template(function anonymous(Handlebars, depth0, helpers, partials, data) { helpers = helpers || Ember.Handlebars.helpers;\n var buffer = '', stack1, escapeExpression=this.escapeExpression;\n\n\n stack1 = helpers._triageMustache.call(depth0, \"outlet\", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + \"\\n\\n\");\n return buffer;\n});\n\nEmber.TEMPLATES['builds/list'] = Ember.Handlebars.template(function anonymous(Handlebars, depth0, helpers, partials, data) { helpers = helpers || Ember.Handlebars.helpers;\n var buffer = '', stack1, escapeExpression=this.escapeExpression, self=this, helperMissing=helpers.helperMissing;\n\nfunction program1(depth0,data) {\n \n var buffer = '', stack1, foundHelper;\n data.buffer.push(\"\\n
\\n \\n \\n \");\n foundHelper = helpers['t'];\n stack1 = foundHelper ? foundHelper.call(depth0, \"builds.name\", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, \"t\", \"builds.name\", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + \" \\n \");\n foundHelper = helpers['t'];\n stack1 = foundHelper ? foundHelper.call(depth0, \"builds.commit\", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, \"t\", \"builds.commit\", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + \" \\n \");\n foundHelper = helpers['t'];\n stack1 = foundHelper ? foundHelper.call(depth0, \"builds.message\", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, \"t\", \"builds.message\", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + \" \\n \");\n foundHelper = helpers['t'];\n stack1 = foundHelper ? foundHelper.call(depth0, \"builds.duration\", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, \"t\", \"builds.duration\", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + \" \\n \");\n foundHelper = helpers['t'];\n stack1 = foundHelper ? foundHelper.call(depth0, \"builds.finished_at\", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, \"t\", \"builds.finished_at\", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + \" \\n \\n \\n\\n \\n \");\n stack1 = helpers.each.call(depth0, \"build\", \"in\", \"builds\", {hash:{},inverse:self.noop,fn:self.program(2, program2, data),contexts:[depth0,depth0,depth0],data:data});\n if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n data.buffer.push(\"\\n \\n
\\n
\\n \");\n stack1 = helpers.view.call(depth0, \"view.ShowMoreButton\", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + \"\\n
\\n\");\n return buffer;}\nfunction program2(depth0,data) {\n \n var buffer = '', stack1;\n data.buffer.push(\"\\n \");\n stack1 = {};\n stack1['contextBinding'] = \"build\";\n stack1 = helpers.view.call(depth0, \"Travis.BuildsItemView\", {hash:stack1,inverse:self.noop,fn:self.program(3, program3, data),contexts:[depth0],data:data});\n if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n data.buffer.push(\"\\n \");\n return buffer;}\nfunction program3(depth0,data) {\n \n var buffer = '', stack1, foundHelper;\n data.buffer.push(\"\\n
\\n \\n \");\n stack1 = helpers['if'].call(depth0, \"id\", {hash:{},inverse:self.noop,fn:self.program(4, program4, data),contexts:[depth0],data:data});\n if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n data.buffer.push(\"\\n \\n
\\n \\n \");\n foundHelper = helpers.formatCommit;\n stack1 = foundHelper ? foundHelper.call(depth0, \"commit\", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, \"formatCommit\", \"commit\", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + \"\\n \\n \\n
\\n \");\n stack1 = {};\n stack1['short'] = \"true\";\n foundHelper = helpers.formatMessage;\n stack1 = foundHelper ? foundHelper.call(depth0, \"commit.message\", {hash:stack1,contexts:[depth0],data:data}) : helperMissing.call(depth0, \"formatMessage\", \"commit.message\", {hash:stack1,contexts:[depth0],data:data});\n if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n data.buffer.push(\"\\n \\n
\\n \");\n foundHelper = helpers.formatDuration;\n stack1 = foundHelper ? foundHelper.call(depth0, \"duration\", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, \"formatDuration\", \"duration\", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + \"\\n \\n
\\n \");\n foundHelper = helpers.formatTime;\n stack1 = foundHelper ? foundHelper.call(depth0, \"finishedAt\", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, \"formatTime\", \"finishedAt\", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + \"\\n \\n \");\n return buffer;}\nfunction program4(depth0,data) {\n \n var buffer = '', stack1;\n data.buffer.push(\"\\n
\\n \");\n stack1 = helpers._triageMustache.call(depth0, \"number\", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + \"\\n \\n \");\n return buffer;}\n\nfunction program6(depth0,data) {\n \n \n data.buffer.push(\"\\n
Loading
\\n\");}\n\n stack1 = helpers['if'].call(depth0, \"builds.isLoaded\", {hash:{},inverse:self.program(6, program6, data),fn:self.program(1, program1, data),contexts:[depth0],data:data});\n if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n data.buffer.push(\"\\n\\n\");\n return buffer;\n});\n\nEmber.TEMPLATES['builds/show'] = Ember.Handlebars.template(function anonymous(Handlebars, depth0, helpers, partials, data) { helpers = helpers || Ember.Handlebars.helpers;\n var buffer = '', stack1, escapeExpression=this.escapeExpression, helperMissing=helpers.helperMissing, self=this;\n\nfunction program1(depth0,data) {\n \n var buffer = '', stack1;\n data.buffer.push(\"\\n \");\n stack1 = helpers['if'].call(depth0, \"loading\", {hash:{},inverse:self.program(4, program4, data),fn:self.program(2, program2, data),contexts:[depth0],data:data});\n if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n data.buffer.push(\"\\n\");\n return buffer;}\nfunction program2(depth0,data) {\n \n \n data.buffer.push(\"\\n
Loading \\n \");}\n\nfunction program4(depth0,data) {\n \n var buffer = '', stack1, foundHelper;\n data.buffer.push(\"\\n
\\n \\n
\");\n foundHelper = helpers['t'];\n stack1 = foundHelper ? foundHelper.call(depth0, \"builds.name\", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, \"t\", \"builds.name\", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + \" \\n \\n \\n \");\n stack1 = helpers['if'].call(depth0, \"build.id\", {hash:{},inverse:self.noop,fn:self.program(5, program5, data),contexts:[depth0],data:data});\n if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n data.buffer.push(\"\\n \\n \");\n foundHelper = helpers['t'];\n stack1 = foundHelper ? foundHelper.call(depth0, \"builds.finished_at\", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, \"t\", \"builds.finished_at\", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + \" \\n \");\n foundHelper = helpers.formatTime;\n stack1 = foundHelper ? foundHelper.call(depth0, \"build.finishedAt\", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, \"formatTime\", \"build.finishedAt\", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + \" \\n \");\n foundHelper = helpers['t'];\n stack1 = foundHelper ? foundHelper.call(depth0, \"builds.duration\", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, \"t\", \"builds.duration\", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + \" \\n \");\n foundHelper = helpers.formatDuration;\n stack1 = foundHelper ? foundHelper.call(depth0, \"build.duration\", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, \"formatDuration\", \"build.duration\", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + \" \\n \\n\\n \\n
\");\n foundHelper = helpers['t'];\n stack1 = foundHelper ? foundHelper.call(depth0, \"builds.commit\", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, \"t\", \"builds.commit\", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + \" \\n
\");\n foundHelper = helpers.formatCommit;\n stack1 = foundHelper ? foundHelper.call(depth0, \"build.commit\", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, \"formatCommit\", \"build.commit\", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + \" \\n \");\n stack1 = helpers['if'].call(depth0, \"commit.compareUrl\", {hash:{},inverse:self.noop,fn:self.program(7, program7, data),contexts:[depth0],data:data});\n if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n data.buffer.push(\"\\n \");\n stack1 = helpers['if'].call(depth0, \"commit.authorName\", {hash:{},inverse:self.noop,fn:self.program(9, program9, data),contexts:[depth0],data:data});\n if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n data.buffer.push(\"\\n \");\n stack1 = helpers['if'].call(depth0, \"commit.committerName\", {hash:{},inverse:self.noop,fn:self.program(11, program11, data),contexts:[depth0],data:data});\n if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n data.buffer.push(\"\\n
\\n\\n \");\n foundHelper = helpers['t'];\n stack1 = foundHelper ? foundHelper.call(depth0, \"builds.message\", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, \"t\", \"builds.message\", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + \" \\n \");\n foundHelper = helpers.formatMessage;\n stack1 = foundHelper ? foundHelper.call(depth0, \"build.commit.message\", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, \"formatMessage\", \"build.commit.message\", {hash:{},contexts:[depth0],data:data});\n if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n data.buffer.push(\" \\n\\n \");\n stack1 = helpers.unless.call(depth0, \"isMatrix\", {hash:{},inverse:self.noop,fn:self.program(13, program13, data),contexts:[depth0],data:data});\n if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n data.buffer.push(\"\\n \\n\\n \");\n stack1 = helpers['if'].call(depth0, \"build.isMatrix\", {hash:{},inverse:self.program(17, program17, data),fn:self.program(15, program15, data),contexts:[depth0],data:data});\n if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n data.buffer.push(\"\\n \");\n return buffer;}\nfunction program5(depth0,data) {\n \n var buffer = '', stack1;\n data.buffer.push(\"\\n
\");\n stack1 = helpers._triageMustache.call(depth0, \"build.number\", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + \" \\n \");\n return buffer;}\n\nfunction program7(depth0,data) {\n \n var buffer = '', stack1, foundHelper;\n data.buffer.push(\"\\n
\");\n foundHelper = helpers['t'];\n stack1 = foundHelper ? foundHelper.call(depth0, \"builds.compare\", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, \"t\", \"builds.compare\", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + \" \\n
\");\n foundHelper = helpers.pathFrom;\n stack1 = foundHelper ? foundHelper.call(depth0, \"build.commit.compareUrl\", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, \"pathFrom\", \"build.commit.compareUrl\", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + \" \\n \");\n return buffer;}\n\nfunction program9(depth0,data) {\n \n var buffer = '', stack1, foundHelper;\n data.buffer.push(\"\\n
\");\n foundHelper = helpers['t'];\n stack1 = foundHelper ? foundHelper.call(depth0, \"builds.author\", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, \"t\", \"builds.author\", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + \" \\n
\");\n stack1 = helpers._triageMustache.call(depth0, \"build.commit.authorName\", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + \" \\n \");\n return buffer;}\n\nfunction program11(depth0,data) {\n \n var buffer = '', stack1, foundHelper;\n data.buffer.push(\"\\n
\");\n foundHelper = helpers['t'];\n stack1 = foundHelper ? foundHelper.call(depth0, \"builds.committer\", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, \"t\", \"builds.committer\", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + \" \\n
\");\n stack1 = helpers._triageMustache.call(depth0, \"build.commit.committerName\", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + \" \\n \");\n return buffer;}\n\nfunction program13(depth0,data) {\n \n var buffer = '', stack1, foundHelper;\n data.buffer.push(\"\\n
\");\n foundHelper = helpers['t'];\n stack1 = foundHelper ? foundHelper.call(depth0, \"builds.config\", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, \"t\", \"builds.config\", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + \" \\n
\");\n foundHelper = helpers.formatConfig;\n stack1 = foundHelper ? foundHelper.call(depth0, \"build.config\", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, \"formatConfig\", \"build.config\", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + \" \\n \");\n return buffer;}\n\nfunction program15(depth0,data) {\n \n var buffer = '', stack1;\n data.buffer.push(\"\\n \");\n stack1 = {};\n stack1['jobsBinding'] = \"build.requiredJobs\";\n stack1['required'] = \"true\";\n stack1 = helpers.view.call(depth0, \"Travis.JobsView\", {hash:stack1,contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + \"\\n \");\n stack1 = {};\n stack1['jobsBinding'] = \"build.allowedFailureJobs\";\n stack1 = helpers.view.call(depth0, \"Travis.JobsView\", {hash:stack1,contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + \"\\n \");\n return buffer;}\n\nfunction program17(depth0,data) {\n \n var buffer = '', stack1;\n data.buffer.push(\"\\n \");\n stack1 = {};\n stack1['contextBinding'] = \"build.jobs.firstObject\";\n stack1 = helpers.view.call(depth0, \"Travis.LogView\", {hash:stack1,contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + \"\\n \");\n return buffer;}\n\n stack1 = helpers['with'].call(depth0, \"view\", {hash:{},inverse:self.noop,fn:self.program(1, program1, data),contexts:[depth0],data:data});\n if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n data.buffer.push(\"\\n\\n\");\n return buffer;\n});\n\nEmber.TEMPLATES['jobs/list'] = Ember.Handlebars.template(function anonymous(Handlebars, depth0, helpers, partials, data) { helpers = helpers || Ember.Handlebars.helpers;\n var buffer = '', stack1, helperMissing=helpers.helperMissing, escapeExpression=this.escapeExpression, self=this;\n\nfunction program1(depth0,data) {\n \n var buffer = '', stack1;\n data.buffer.push(\"\\n \");\n stack1 = helpers['if'].call(depth0, \"view.required\", {hash:{},inverse:self.program(4, program4, data),fn:self.program(2, program2, data),contexts:[depth0],data:data});\n if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n data.buffer.push(\"\\n
\\n \\n \");\n stack1 = helpers.each.call(depth0, \"key\", \"in\", \"view.build.configKeys\", {hash:{},inverse:self.noop,fn:self.program(6, program6, data),contexts:[depth0,depth0,depth0],data:data});\n if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n data.buffer.push(\"\\n \\n \\n
\\n \");\n stack1 = helpers.each.call(depth0, \"job\", \"in\", \"view.jobs\", {hash:{},inverse:self.noop,fn:self.program(8, program8, data),contexts:[depth0,depth0,depth0],data:data});\n if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n data.buffer.push(\"\\n \\n
\\n\\n \");\n stack1 = helpers.unless.call(depth0, \"view.required\", {hash:{},inverse:self.noop,fn:self.program(14, program14, data),contexts:[depth0],data:data});\n if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n data.buffer.push(\"\\n\");\n return buffer;}\nfunction program2(depth0,data) {\n \n var buffer = '', stack1, foundHelper;\n data.buffer.push(\"\\n \\n \\n \");\n foundHelper = helpers['t'];\n stack1 = foundHelper ? foundHelper.call(depth0, \"jobs.build_matrix\", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, \"t\", \"jobs.build_matrix\", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + \"\\n \\n \");\n return buffer;}\n\nfunction program4(depth0,data) {\n \n var buffer = '', stack1, foundHelper;\n data.buffer.push(\"\\n \\n \\n \");\n foundHelper = helpers['t'];\n stack1 = foundHelper ? foundHelper.call(depth0, \"jobs.allowed_failures\", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, \"t\", \"jobs.allowed_failures\", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + \"\\n \\n \\n \");\n return buffer;}\n\nfunction program6(depth0,data) {\n \n var buffer = '', stack1;\n data.buffer.push(\"\\n \");\n stack1 = helpers._triageMustache.call(depth0, \"key\", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + \" \\n \");\n return buffer;}\n\nfunction program8(depth0,data) {\n \n var buffer = '', stack1;\n data.buffer.push(\"\\n \");\n stack1 = {};\n stack1['contextBinding'] = \"job\";\n stack1 = helpers.view.call(depth0, \"Travis.JobsItemView\", {hash:stack1,inverse:self.noop,fn:self.program(9, program9, data),contexts:[depth0],data:data});\n if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n data.buffer.push(\"\\n \");\n return buffer;}\nfunction program9(depth0,data) {\n \n var buffer = '', stack1, foundHelper;\n data.buffer.push(\"\\n \\n \\n \");\n stack1 = helpers['if'].call(depth0, \"job.id\", {hash:{},inverse:self.noop,fn:self.program(10, program10, data),contexts:[depth0],data:data});\n if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n data.buffer.push(\"\\n \\n \\n \");\n foundHelper = helpers.formatDuration;\n stack1 = foundHelper ? foundHelper.call(depth0, \"duration\", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, \"formatDuration\", \"duration\", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + \"\\n \\n \\n \");\n foundHelper = helpers.formatTime;\n stack1 = foundHelper ? foundHelper.call(depth0, \"finishedAt\", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, \"formatTime\", \"finishedAt\", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + \"\\n \\n \");\n stack1 = helpers.each.call(depth0, \"value\", \"in\", \"configValues\", {hash:{},inverse:self.noop,fn:self.program(12, program12, data),contexts:[depth0,depth0,depth0],data:data});\n if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n data.buffer.push(\"\\n \");\n return buffer;}\nfunction program10(depth0,data) {\n \n var buffer = '', stack1;\n data.buffer.push(\"\\n \");\n stack1 = helpers._triageMustache.call(depth0, \"number\", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + \" \\n \");\n return buffer;}\n\nfunction program12(depth0,data) {\n \n var buffer = '', stack1;\n data.buffer.push(\"\\n \");\n stack1 = helpers._triageMustache.call(depth0, \"value\", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + \" \\n \");\n return buffer;}\n\nfunction program14(depth0,data) {\n \n var buffer = '', stack1, foundHelper;\n data.buffer.push(\"\\n \\n \");\n return buffer;}\n\n stack1 = helpers['if'].call(depth0, \"view.jobs.length\", {hash:{},inverse:self.noop,fn:self.program(1, program1, data),contexts:[depth0],data:data});\n if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n data.buffer.push(\"\\n\\n\");\n return buffer;\n});\n\nEmber.TEMPLATES['jobs/log'] = Ember.Handlebars.template(function anonymous(Handlebars, depth0, helpers, partials, data) { helpers = helpers || Ember.Handlebars.helpers;\n var buffer = '', stack1, helperMissing=helpers.helperMissing, escapeExpression=this.escapeExpression, self=this;\n\nfunction program1(depth0,data) {\n \n var buffer = '', stack1, foundHelper;\n data.buffer.push(\"\\n \\n \\n Follow logs \\n \");\n foundHelper = helpers.formatLog;\n stack1 = foundHelper ? foundHelper.call(depth0, \"log.body\", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, \"formatLog\", \"log.body\", {hash:{},contexts:[depth0],data:data});\n if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n data.buffer.push(\" \\n\\n \");\n stack1 = helpers['if'].call(depth0, \"sponsor.name\", {hash:{},inverse:self.noop,fn:self.program(2, program2, data),contexts:[depth0],data:data});\n if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n data.buffer.push(\"\\n\\n To top \\n\");\n return buffer;}\nfunction program2(depth0,data) {\n \n var buffer = '', stack1, foundHelper;\n data.buffer.push(\"\\n \\n \");\n return buffer;}\n\nfunction program4(depth0,data) {\n \n \n data.buffer.push(\"\\n \\n Loading \\n
\\n\");}\n\n stack1 = helpers._triageMustache.call(depth0, \"view.logSubscriber\", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + \"\\n\\n\");\n stack1 = helpers['if'].call(depth0, \"log.isLoaded\", {hash:{},inverse:self.program(4, program4, data),fn:self.program(1, program1, data),contexts:[depth0],data:data});\n if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n data.buffer.push(\"\\n\\n\");\n return buffer;\n});\n\nEmber.TEMPLATES['jobs/show'] = Ember.Handlebars.template(function anonymous(Handlebars, depth0, helpers, partials, data) { helpers = helpers || Ember.Handlebars.helpers;\n var buffer = '', stack1, escapeExpression=this.escapeExpression, helperMissing=helpers.helperMissing, self=this;\n\nfunction program1(depth0,data) {\n \n var buffer = '', stack1;\n data.buffer.push(\"\\n \");\n stack1 = helpers['if'].call(depth0, \"job.isLoaded\", {hash:{},inverse:self.program(11, program11, data),fn:self.program(2, program2, data),contexts:[depth0],data:data});\n if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n data.buffer.push(\"\\n\");\n return buffer;}\nfunction program2(depth0,data) {\n \n var buffer = '', stack1, foundHelper;\n data.buffer.push(\"\\n \\n
\\n \\n
Job \\n \\n \\n \");\n stack1 = helpers['if'].call(depth0, \"job.id\", {hash:{},inverse:self.noop,fn:self.program(3, program3, data),contexts:[depth0],data:data});\n if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n data.buffer.push(\"\\n \\n \");\n foundHelper = helpers['t'];\n stack1 = foundHelper ? foundHelper.call(depth0, \"jobs.finished_at\", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, \"t\", \"jobs.finished_at\", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + \" \\n \");\n foundHelper = helpers.formatTime;\n stack1 = foundHelper ? foundHelper.call(depth0, \"job.finishedAt\", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, \"formatTime\", \"job.finishedAt\", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + \" \\n \");\n foundHelper = helpers['t'];\n stack1 = foundHelper ? foundHelper.call(depth0, \"jobs.duration\", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, \"t\", \"jobs.duration\", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + \" \\n \");\n foundHelper = helpers.formatDuration;\n stack1 = foundHelper ? foundHelper.call(depth0, \"job.duration\", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, \"formatDuration\", \"job.duration\", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + \" \\n \\n\\n \\n
\");\n foundHelper = helpers['t'];\n stack1 = foundHelper ? foundHelper.call(depth0, \"jobs.commit\", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, \"t\", \"jobs.commit\", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + \" \\n
\");\n foundHelper = helpers.formatCommit;\n stack1 = foundHelper ? foundHelper.call(depth0, \"commit\", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, \"formatCommit\", \"commit\", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + \" \\n \");\n stack1 = helpers['if'].call(depth0, \"commit.compareUrl\", {hash:{},inverse:self.noop,fn:self.program(5, program5, data),contexts:[depth0],data:data});\n if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n data.buffer.push(\"\\n \");\n stack1 = helpers['if'].call(depth0, \"commit.authorName\", {hash:{},inverse:self.noop,fn:self.program(7, program7, data),contexts:[depth0],data:data});\n if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n data.buffer.push(\"\\n \");\n stack1 = helpers['if'].call(depth0, \"commit.committerName\", {hash:{},inverse:self.noop,fn:self.program(9, program9, data),contexts:[depth0],data:data});\n if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n data.buffer.push(\"\\n
\\n\\n \");\n foundHelper = helpers['t'];\n stack1 = foundHelper ? foundHelper.call(depth0, \"jobs.message\", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, \"t\", \"jobs.message\", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + \" \\n \");\n foundHelper = helpers.formatMessage;\n stack1 = foundHelper ? foundHelper.call(depth0, \"commit.message\", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, \"formatMessage\", \"commit.message\", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + \" \\n \");\n foundHelper = helpers['t'];\n stack1 = foundHelper ? foundHelper.call(depth0, \"jobs.config\", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, \"t\", \"jobs.config\", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + \" \\n \");\n foundHelper = helpers.formatConfig;\n stack1 = foundHelper ? foundHelper.call(depth0, \"job.config\", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, \"formatConfig\", \"job.config\", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + \" \\n \\n\\n \");\n stack1 = {};\n stack1['contextBinding'] = \"job\";\n stack1 = helpers.view.call(depth0, \"Travis.LogView\", {hash:stack1,contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + \"\\n
\\n \");\n return buffer;}\nfunction program3(depth0,data) {\n \n var buffer = '', stack1;\n data.buffer.push(\"\\n \");\n stack1 = helpers._triageMustache.call(depth0, \"job.number\", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + \" \\n \");\n return buffer;}\n\nfunction program5(depth0,data) {\n \n var buffer = '', stack1, foundHelper;\n data.buffer.push(\"\\n \");\n foundHelper = helpers['t'];\n stack1 = foundHelper ? foundHelper.call(depth0, \"jobs.compare\", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, \"t\", \"jobs.compare\", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + \" \\n \");\n foundHelper = helpers.pathFrom;\n stack1 = foundHelper ? foundHelper.call(depth0, \"commit.compareUrl\", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, \"pathFrom\", \"commit.compareUrl\", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + \" \\n \");\n return buffer;}\n\nfunction program7(depth0,data) {\n \n var buffer = '', stack1, foundHelper;\n data.buffer.push(\"\\n \");\n foundHelper = helpers['t'];\n stack1 = foundHelper ? foundHelper.call(depth0, \"jobs.author\", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, \"t\", \"jobs.author\", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + \" \\n \");\n stack1 = helpers._triageMustache.call(depth0, \"commit.authorName\", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + \" \\n \");\n return buffer;}\n\nfunction program9(depth0,data) {\n \n var buffer = '', stack1, foundHelper;\n data.buffer.push(\"\\n \");\n foundHelper = helpers['t'];\n stack1 = foundHelper ? foundHelper.call(depth0, \"jobs.committer\", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, \"t\", \"jobs.committer\", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + \" \\n \");\n stack1 = helpers._triageMustache.call(depth0, \"commit.committerName\", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + \" \\n \");\n return buffer;}\n\nfunction program11(depth0,data) {\n \n \n data.buffer.push(\"\\n \\n Loading \\n
\\n \");}\n\n stack1 = helpers['with'].call(depth0, \"view\", {hash:{},inverse:self.noop,fn:self.program(1, program1, data),contexts:[depth0],data:data});\n if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n data.buffer.push(\"\\n\\n\");\n return buffer;\n});\n\nEmber.TEMPLATES['layouts/home'] = Ember.Handlebars.template(function anonymous(Handlebars, depth0, helpers, partials, data) { helpers = helpers || Ember.Handlebars.helpers;\n var buffer = '', stack1, foundHelper, helperMissing=helpers.helperMissing, escapeExpression=this.escapeExpression;\n\n\n data.buffer.push(\"\\n \");\n foundHelper = helpers.outlet;\n stack1 = foundHelper ? foundHelper.call(depth0, \"top\", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, \"outlet\", \"top\", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + \"\\n
\\n\\n\\n
\\n \");\n foundHelper = helpers.outlet;\n stack1 = foundHelper ? foundHelper.call(depth0, \"left\", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, \"outlet\", \"left\", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + \"\\n
\\n\\n
\\n \");\n foundHelper = helpers.outlet;\n stack1 = foundHelper ? foundHelper.call(depth0, \"main\", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, \"outlet\", \"main\", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + \"\\n
\\n\\n
\\n \");\n foundHelper = helpers.outlet;\n stack1 = foundHelper ? foundHelper.call(depth0, \"right\", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, \"outlet\", \"right\", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + \"\\n
\\n
\\n\\n\");\n return buffer;\n});\n\nEmber.TEMPLATES['layouts/profile'] = Ember.Handlebars.template(function anonymous(Handlebars, depth0, helpers, partials, data) { helpers = helpers || Ember.Handlebars.helpers;\n var buffer = '', stack1, foundHelper, helperMissing=helpers.helperMissing, escapeExpression=this.escapeExpression;\n\n\n data.buffer.push(\"\\n \");\n foundHelper = helpers.outlet;\n stack1 = foundHelper ? foundHelper.call(depth0, \"top\", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, \"outlet\", \"top\", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + \"\\n
\\n\\n\\n
\\n \");\n foundHelper = helpers.outlet;\n stack1 = foundHelper ? foundHelper.call(depth0, \"left\", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, \"outlet\", \"left\", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + \"\\n
\\n\\n
\\n \");\n foundHelper = helpers.outlet;\n stack1 = foundHelper ? foundHelper.call(depth0, \"main\", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, \"outlet\", \"main\", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + \"\\n
\\n\\n
\\n
\\n\\n\");\n return buffer;\n});\n\nEmber.TEMPLATES['layouts/sidebar'] = Ember.Handlebars.template(function anonymous(Handlebars, depth0, helpers, partials, data) { helpers = helpers || Ember.Handlebars.helpers;\n var buffer = '', stack1, foundHelper, helperMissing=helpers.helperMissing, escapeExpression=this.escapeExpression;\n\n\n data.buffer.push(\"\\n \");\n foundHelper = helpers['t'];\n stack1 = foundHelper ? foundHelper.call(depth0, \"layouts.application.fork_me\", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, \"t\", \"layouts.application.fork_me\", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + \"\\n \\n\\n\\n\\n\");\n stack1 = helpers.view.call(depth0, \"view.DecksView\", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + \"\\n\");\n stack1 = helpers.view.call(depth0, \"view.WorkersView\", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + \"\\n\");\n stack1 = helpers.view.call(depth0, \"view.QueuesView\", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + \"\\n\");\n stack1 = helpers.view.call(depth0, \"view.LinksView\", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + \"\\n\\n\\n
\");\n foundHelper = helpers['t'];\n stack1 = foundHelper ? foundHelper.call(depth0, \"layouts.about.join\", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, \"t\", \"layouts.about.join\", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + \" \\n
\\n \");\n foundHelper = helpers['t'];\n stack1 = foundHelper ? foundHelper.call(depth0, \"layouts.about.repository\", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, \"t\", \"layouts.about.repository\", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + \": Github \\n \");\n foundHelper = helpers['t'];\n stack1 = foundHelper ? foundHelper.call(depth0, \"layouts.about.twitter\", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, \"t\", \"layouts.about.twitter\", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + \": @travisci \\n \");\n foundHelper = helpers['t'];\n stack1 = foundHelper ? foundHelper.call(depth0, \"layouts.about.mailing_list\", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, \"t\", \"layouts.about.mailing_list\", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + \": travis-ci \\n irc.freenode.net#travis \\n \\n
\\n\\n\");\n return buffer;\n});\n\nEmber.TEMPLATES['layouts/simple'] = Ember.Handlebars.template(function anonymous(Handlebars, depth0, helpers, partials, data) { helpers = helpers || Ember.Handlebars.helpers;\n var buffer = '', stack1, foundHelper, helperMissing=helpers.helperMissing, escapeExpression=this.escapeExpression;\n\n\n data.buffer.push(\"\\n \");\n foundHelper = helpers.outlet;\n stack1 = foundHelper ? foundHelper.call(depth0, \"top\", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, \"outlet\", \"top\", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + \"\\n
\\n\\n\\n
\\n \");\n foundHelper = helpers.outlet;\n stack1 = foundHelper ? foundHelper.call(depth0, \"main\", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, \"outlet\", \"main\", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + \"\\n
\\n
\\n\\n\\n\");\n return buffer;\n});\n\nEmber.TEMPLATES['layouts/top'] = Ember.Handlebars.template(function anonymous(Handlebars, depth0, helpers, partials, data) { helpers = helpers || Ember.Handlebars.helpers;\n var buffer = '', stack1, foundHelper, escapeExpression=this.escapeExpression, helperMissing=helpers.helperMissing;\n\n\n data.buffer.push(\"\\n Travis \\n \\n\\n\\n \\n Home \\n \\n \\n Stats \\n \\n \\n Blog \\n \\n \\n Docs \\n \\n \\n \\n \");\n foundHelper = helpers['t'];\n stack1 = foundHelper ? foundHelper.call(depth0, \"layouts.top.github_login\", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, \"t\", \"layouts.top.github_login\", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + \" \\n \");\n stack1 = helpers._triageMustache.call(depth0, \"user.name\", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + \" \\n Signing in \\n
\\n \\n \\n \");\n foundHelper = helpers['t'];\n stack1 = foundHelper ? foundHelper.call(depth0, \"layouts.top.profile\", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, \"t\", \"layouts.top.profile\", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + \" \\n \\n \\n \");\n foundHelper = helpers['t'];\n stack1 = foundHelper ? foundHelper.call(depth0, \"layouts.top.sign_out\", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, \"t\", \"layouts.top.sign_out\", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + \" \\n \\n \\n \\n \\n\\n\");\n return buffer;\n});\n\nEmber.TEMPLATES['profile/accounts'] = Ember.Handlebars.template(function anonymous(Handlebars, depth0, helpers, partials, data) { helpers = helpers || Ember.Handlebars.helpers;\n var buffer = '', stack1, foundHelper, escapeExpression=this.escapeExpression, self=this, helperMissing=helpers.helperMissing;\n\nfunction program1(depth0,data) {\n \n var buffer = '', stack1;\n data.buffer.push(\"\\n \");\n stack1 = helpers._triageMustache.call(depth0, \"view.name\", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + \" \\n \\n Repositories: \\n \");\n stack1 = helpers._triageMustache.call(depth0, \"view.content.reposCount\", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + \" \\n
\\n \");\n return buffer;}\n\n data.buffer.push(\"\\n
\\n\\n\\n\\n\\n \");\n stack1 = {};\n stack1['contentBinding'] = \"controller\";\n foundHelper = helpers.collection;\n stack1 = foundHelper ? foundHelper.call(depth0, \"Travis.AccountsListView\", {hash:stack1,inverse:self.noop,fn:self.program(1, program1, data),contexts:[depth0],data:data}) : helperMissing.call(depth0, \"collection\", \"Travis.AccountsListView\", {hash:stack1,inverse:self.noop,fn:self.program(1, program1, data),contexts:[depth0],data:data});\n if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n data.buffer.push(\"\\n
\\n\\n\");\n return buffer;\n});\n\nEmber.TEMPLATES['profile/show'] = Ember.Handlebars.template(function anonymous(Handlebars, depth0, helpers, partials, data) { helpers = helpers || Ember.Handlebars.helpers;\n var buffer = '', stack1, foundHelper, escapeExpression=this.escapeExpression, helperMissing=helpers.helperMissing;\n\n\n data.buffer.push(\"\");\n stack1 = helpers._triageMustache.call(depth0, \"view.name\", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + \" \\n\\n\");\n stack1 = helpers.view.call(depth0, \"Travis.ProfileTabsView\", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + \"\\n\\n\\n \");\n foundHelper = helpers.outlet;\n stack1 = foundHelper ? foundHelper.call(depth0, \"pane\", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, \"outlet\", \"pane\", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + \"\\n
\\n\\n\\n\");\n return buffer;\n});\n\nEmber.TEMPLATES['profile/tabs'] = Ember.Handlebars.template(function anonymous(Handlebars, depth0, helpers, partials, data) { helpers = helpers || Ember.Handlebars.helpers;\n var buffer = '', stack1, escapeExpression=this.escapeExpression, self=this;\n\nfunction program1(depth0,data) {\n \n var buffer = '', stack1;\n data.buffer.push(\"\\n \\n \\n \\n \");\n return buffer;}\n\n data.buffer.push(\"\\n \\n \\n \\n \");\n stack1 = helpers['if'].call(depth0, \"view.displayUser\", {hash:{},inverse:self.noop,fn:self.program(1, program1, data),contexts:[depth0],data:data});\n if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n data.buffer.push(\"\\n \\n\\n\");\n return buffer;\n});\n\nEmber.TEMPLATES['profile/tabs/hooks'] = Ember.Handlebars.template(function anonymous(Handlebars, depth0, helpers, partials, data) { helpers = helpers || Ember.Handlebars.helpers;\n var buffer = '', stack1, foundHelper, escapeExpression=this.escapeExpression, helperMissing=helpers.helperMissing, self=this;\n\nfunction program1(depth0,data) {\n \n var buffer = '', stack1;\n data.buffer.push(\"\\n \");\n stack1 = helpers['if'].call(depth0, \"user.isSyncing\", {hash:{},inverse:self.program(4, program4, data),fn:self.program(2, program2, data),contexts:[depth0],data:data});\n if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n data.buffer.push(\"\\n\");\n return buffer;}\nfunction program2(depth0,data) {\n \n \n data.buffer.push(\"\\n \\n Please wait while we sync from GitHub \\n
\\n \");}\n\nfunction program4(depth0,data) {\n \n var buffer = '', stack1, foundHelper;\n data.buffer.push(\"\\n \\n Last synchronized from GitHub: \");\n foundHelper = helpers.formatTime;\n stack1 = foundHelper ? foundHelper.call(depth0, \"user.syncedAt\", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, \"formatTime\", \"user.syncedAt\", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + \"\\n \\n Sync now\\n \\n
\\n\\n \\n \");\n stack1 = helpers.each.call(depth0, \"hook\", \"in\", \"hooks\", {hash:{},inverse:self.program(7, program7, data),fn:self.program(5, program5, data),contexts:[depth0,depth0,depth0],data:data});\n if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n data.buffer.push(\"\\n \\n \");\n return buffer;}\nfunction program5(depth0,data) {\n \n var buffer = '', stack1;\n data.buffer.push(\"\\n \\n \");\n stack1 = helpers._triageMustache.call(depth0, \"hook.slug\", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + \" \\n \");\n stack1 = helpers._triageMustache.call(depth0, \"hook.description\", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + \"
\\n\\n \\n \\n \");\n return buffer;}\n\nfunction program7(depth0,data) {\n \n \n data.buffer.push(\"\\n \\n You do not seem to have any repositories that we could sync.\\n \\n \");}\n\nfunction program9(depth0,data) {\n \n \n data.buffer.push(\"\\n \\n Loading \\n
\\n\");}\n\n data.buffer.push(\"\\n \");\n foundHelper = helpers['t'];\n stack1 = foundHelper ? foundHelper.call(depth0, \"profiles.show.message.your_repos\", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, \"t\", \"profiles.show.message.your_repos\", {hash:{},contexts:[depth0],data:data});\n if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n data.buffer.push(\"\\n
\\n\\n\");\n stack1 = helpers['if'].call(depth0, \"hooks.isLoaded\", {hash:{},inverse:self.program(9, program9, data),fn:self.program(1, program1, data),contexts:[depth0],data:data});\n if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n data.buffer.push(\"\\n\\n\\n\\n\");\n return buffer;\n});\n\nEmber.TEMPLATES['profile/tabs/user'] = Ember.Handlebars.template(function anonymous(Handlebars, depth0, helpers, partials, data) { helpers = helpers || Ember.Handlebars.helpers;\n var buffer = '', stack1, foundHelper, escapeExpression=this.escapeExpression, helperMissing=helpers.helperMissing;\n\n\n data.buffer.push(\" \\n\\n\\n \\n \");\n foundHelper = helpers['t'];\n stack1 = foundHelper ? foundHelper.call(depth0, \"profiles.show.github\", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, \"t\", \"profiles.show.github\", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + \":\\n \\n \\n \");\n stack1 = helpers._triageMustache.call(depth0, \"user.login\", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + \" \\n \\n \\n \");\n foundHelper = helpers['t'];\n stack1 = foundHelper ? foundHelper.call(depth0, \"profiles.show.email\", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, \"t\", \"profiles.show.email\", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + \":\\n \\n \\n \");\n stack1 = helpers._triageMustache.call(depth0, \"user.email\", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + \"\\n \\n \\n \");\n foundHelper = helpers['t'];\n stack1 = foundHelper ? foundHelper.call(depth0, \"profiles.show.token\", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, \"t\", \"profiles.show.token\", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + \":\\n \\n \\n \");\n stack1 = helpers._triageMustache.call(depth0, \"user.token\", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + \"\\n \\n \\n\\n\\n\\n\\n\\n\");\n return buffer;\n});\n\nEmber.TEMPLATES['queues/list'] = Ember.Handlebars.template(function anonymous(Handlebars, depth0, helpers, partials, data) { helpers = helpers || Ember.Handlebars.helpers;\n var buffer = '', stack1, escapeExpression=this.escapeExpression, self=this, helperMissing=helpers.helperMissing;\n\nfunction program1(depth0,data) {\n \n var buffer = '', stack1, foundHelper;\n data.buffer.push(\"\\n \\n \");\n foundHelper = helpers['t'];\n stack1 = foundHelper ? foundHelper.call(depth0, \"queue\", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, \"t\", \"queue\", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + \": \");\n stack1 = helpers._triageMustache.call(depth0, \"queue.name\", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + \" \\n \\n \");\n stack1 = helpers.each.call(depth0, \"job\", \"in\", \"queue\", {hash:{},inverse:self.program(5, program5, data),fn:self.program(2, program2, data),contexts:[depth0,depth0,depth0],data:data});\n if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n data.buffer.push(\"\\n \\n \\n\");\n return buffer;}\nfunction program2(depth0,data) {\n \n var buffer = '', stack1;\n data.buffer.push(\"\\n \");\n stack1 = {};\n stack1['jobBinding'] = \"job\";\n stack1 = helpers.view.call(depth0, \"Travis.QueueItemView\", {hash:stack1,inverse:self.noop,fn:self.program(3, program3, data),contexts:[depth0],data:data});\n if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n data.buffer.push(\"\\n \");\n return buffer;}\nfunction program3(depth0,data) {\n \n var buffer = '', stack1;\n data.buffer.push(\"\\n \\n \\n \");\n stack1 = helpers._triageMustache.call(depth0, \"job.repository.slug\", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + \"\\n \\n #\");\n stack1 = helpers._triageMustache.call(depth0, \"job.number\", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + \"\\n \\n \");\n return buffer;}\n\nfunction program5(depth0,data) {\n \n var buffer = '', stack1, foundHelper;\n data.buffer.push(\"\\n \");\n foundHelper = helpers['t'];\n stack1 = foundHelper ? foundHelper.call(depth0, \"no_job\", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, \"t\", \"no_job\", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + \"\\n \");\n return buffer;}\n\n data.buffer.push(\"\\n\");\n stack1 = helpers.each.call(depth0, \"queue\", \"in\", \"controller\", {hash:{},inverse:self.noop,fn:self.program(1, program1, data),contexts:[depth0,depth0,depth0],data:data});\n if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n data.buffer.push(\"\\n \\n\\n\");\n return buffer;\n});\n\nEmber.TEMPLATES['repos/list'] = Ember.Handlebars.template(function anonymous(Handlebars, depth0, helpers, partials, data) { helpers = helpers || Ember.Handlebars.helpers;\n var buffer = '', stack1, foundHelper, escapeExpression=this.escapeExpression, self=this, helperMissing=helpers.helperMissing;\n\nfunction program1(depth0,data) {\n \n var buffer = '', stack1;\n data.buffer.push(\"\\n \");\n stack1 = helpers['with'].call(depth0, \"view.repository\", {hash:{},inverse:self.noop,fn:self.program(2, program2, data),contexts:[depth0],data:data});\n if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n data.buffer.push(\"\\n \");\n return buffer;}\nfunction program2(depth0,data) {\n \n var buffer = '', stack1, foundHelper;\n data.buffer.push(\"\\n \\n \\n \");\n stack1 = helpers['if'].call(depth0, \"slug\", {hash:{},inverse:self.noop,fn:self.program(3, program3, data),contexts:[depth0],data:data});\n if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n data.buffer.push(\"\\n
\\n \");\n stack1 = helpers['if'].call(depth0, \"lastBuildId\", {hash:{},inverse:self.noop,fn:self.program(5, program5, data),contexts:[depth0],data:data});\n if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n data.buffer.push(\"\\n\\n \\n \");\n foundHelper = helpers['t'];\n stack1 = foundHelper ? foundHelper.call(depth0, \"repositories.duration\", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, \"t\", \"repositories.duration\", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + \": \\n \");\n foundHelper = helpers.formatDuration;\n stack1 = foundHelper ? foundHelper.call(depth0, \"lastBuildDuration\", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, \"formatDuration\", \"lastBuildDuration\", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + \" ,\\n \");\n foundHelper = helpers['t'];\n stack1 = foundHelper ? foundHelper.call(depth0, \"repositories.finished_at\", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, \"t\", \"repositories.finished_at\", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + \": \\n \");\n foundHelper = helpers.formatTime;\n stack1 = foundHelper ? foundHelper.call(depth0, \"lastBuildFinishedAt\", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, \"formatTime\", \"lastBuildFinishedAt\", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + \" \\n
\\n\\n
\\n\\n \");\n stack1 = helpers['if'].call(depth0, \"description\", {hash:{},inverse:self.noop,fn:self.program(7, program7, data),contexts:[depth0],data:data});\n if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n data.buffer.push(\"\\n \");\n return buffer;}\nfunction program3(depth0,data) {\n \n var buffer = '', stack1;\n data.buffer.push(\"\\n \");\n stack1 = helpers._triageMustache.call(depth0, \"slug\", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + \" \\n \");\n return buffer;}\n\nfunction program5(depth0,data) {\n \n var buffer = '', stack1;\n data.buffer.push(\"\\n \");\n stack1 = helpers._triageMustache.call(depth0, \"lastBuildNumber\", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + \" \\n \");\n return buffer;}\n\nfunction program7(depth0,data) {\n \n var buffer = '', stack1;\n data.buffer.push(\"\\n \\n
\");\n stack1 = helpers._triageMustache.call(depth0, \"description\", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + \"
\\n
\\n \");\n return buffer;}\n\n data.buffer.push(\"\\n \");\n stack1 = {};\n stack1['valueBinding'] = \"controller.search\";\n stack1 = helpers.view.call(depth0, \"Ember.TextField\", {hash:stack1,contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + \"\\n
\\n\\n\");\n stack1 = helpers.view.call(depth0, \"Travis.ReposListTabsView\", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + \"\\n\\n \\n\\n\\n \");\n stack1 = {};\n stack1['contentBinding'] = \"controller\";\n foundHelper = helpers.collection;\n stack1 = foundHelper ? foundHelper.call(depth0, \"Travis.RepositoriesListView\", {hash:stack1,inverse:self.noop,fn:self.program(1, program1, data),contexts:[depth0],data:data}) : helperMissing.call(depth0, \"collection\", \"Travis.RepositoriesListView\", {hash:stack1,inverse:self.noop,fn:self.program(1, program1, data),contexts:[depth0],data:data});\n if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n data.buffer.push(\"\\n
\\n\\n\");\n return buffer;\n});\n\nEmber.TEMPLATES['repos/list/tabs'] = Ember.Handlebars.template(function anonymous(Handlebars, depth0, helpers, partials, data) { helpers = helpers || Ember.Handlebars.helpers;\n var buffer = '', stack1, foundHelper, escapeExpression=this.escapeExpression, helperMissing=helpers.helperMissing;\n\n\n data.buffer.push(\"\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n\\n\\n\");\n return buffer;\n});\n\nEmber.TEMPLATES['repos/show'] = Ember.Handlebars.template(function anonymous(Handlebars, depth0, helpers, partials, data) { helpers = helpers || Ember.Handlebars.helpers;\n var buffer = '', stack1, foundHelper, escapeExpression=this.escapeExpression, self=this, helperMissing=helpers.helperMissing;\n\nfunction program1(depth0,data) {\n \n var buffer = '', stack1;\n data.buffer.push(\"\\n \");\n stack1 = helpers['with'].call(depth0, \"view.repository\", {hash:{},inverse:self.noop,fn:self.program(2, program2, data),contexts:[depth0],data:data});\n if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n data.buffer.push(\"\\n\\n \");\n return buffer;}\nfunction program2(depth0,data) {\n \n var buffer = '', stack1;\n data.buffer.push(\"\\n \\n\\n \");\n stack1 = helpers._triageMustache.call(depth0, \"description\", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + \"
\\n\\n \\n \\n \");\n stack1 = helpers._triageMustache.call(depth0, \"lastBuildLanguage\", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + \"\\n \\n \\n \\n \");\n stack1 = helpers._triageMustache.call(depth0, \"stats.watchers\", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + \"\\n \\n \\n \\n \\n \");\n stack1 = helpers._triageMustache.call(depth0, \"stats.forks\", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + \"\\n \\n \\n \\n\\n \");\n stack1 = helpers.view.call(depth0, \"Travis.RepoShowTabsView\", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + \"\\n \");\n stack1 = helpers.view.call(depth0, \"Travis.RepoShowToolsView\", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + \"\\n \");\n return buffer;}\n\nfunction program4(depth0,data) {\n \n \n data.buffer.push(\"\\n Loading \\n \");}\n\n data.buffer.push(\"\\n \");\n stack1 = helpers['if'].call(depth0, \"view.repository.isLoaded\", {hash:{},inverse:self.program(4, program4, data),fn:self.program(1, program1, data),contexts:[depth0],data:data});\n if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n data.buffer.push(\"\\n\\n
\\n \");\n foundHelper = helpers.outlet;\n stack1 = foundHelper ? foundHelper.call(depth0, \"pane\", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, \"outlet\", \"pane\", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + \"\\n
\\n
\\n\\n\\n\");\n return buffer;\n});\n\nEmber.TEMPLATES['repos/show/tabs'] = Ember.Handlebars.template(function anonymous(Handlebars, depth0, helpers, partials, data) { helpers = helpers || Ember.Handlebars.helpers;\n var buffer = '', stack1, escapeExpression=this.escapeExpression, helperMissing=helpers.helperMissing, self=this;\n\nfunction program1(depth0,data) {\n \n var buffer = '', stack1, foundHelper;\n data.buffer.push(\"\\n \\n \");\n foundHelper = helpers['t'];\n stack1 = foundHelper ? foundHelper.call(depth0, \"repositories.tabs.current\", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, \"t\", \"repositories.tabs.current\", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + \"\\n \\n \");\n return buffer;}\n\nfunction program3(depth0,data) {\n \n var buffer = '', stack1, foundHelper;\n data.buffer.push(\"\\n \\n \");\n foundHelper = helpers['t'];\n stack1 = foundHelper ? foundHelper.call(depth0, \"repositories.tabs.build_history\", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, \"t\", \"repositories.tabs.build_history\", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + \"\\n \\n \");\n return buffer;}\n\nfunction program5(depth0,data) {\n \n var buffer = '', stack1, foundHelper;\n data.buffer.push(\"\\n \\n \");\n foundHelper = helpers['t'];\n stack1 = foundHelper ? foundHelper.call(depth0, \"repositories.tabs.pull_requests\", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, \"t\", \"repositories.tabs.pull_requests\", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + \"\\n \\n \");\n return buffer;}\n\nfunction program7(depth0,data) {\n \n var buffer = '', stack1, foundHelper;\n data.buffer.push(\"\\n \\n \");\n foundHelper = helpers['t'];\n stack1 = foundHelper ? foundHelper.call(depth0, \"repositories.tabs.branches\", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, \"t\", \"repositories.tabs.branches\", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + \"\\n \\n \");\n return buffer;}\n\nfunction program9(depth0,data) {\n \n var buffer = '', stack1, foundHelper;\n data.buffer.push(\"\\n \\n \");\n foundHelper = helpers['t'];\n stack1 = foundHelper ? foundHelper.call(depth0, \"repositories.tabs.build\", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, \"t\", \"repositories.tabs.build\", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + \" #\");\n stack1 = helpers._triageMustache.call(depth0, \"view.build.number\", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + \"\\n \\n \");\n return buffer;}\n\nfunction program11(depth0,data) {\n \n var buffer = '', stack1, foundHelper;\n data.buffer.push(\"\\n \\n \");\n foundHelper = helpers['t'];\n stack1 = foundHelper ? foundHelper.call(depth0, \"repositories.tabs.job\", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, \"t\", \"repositories.tabs.job\", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + \" #\");\n stack1 = helpers._triageMustache.call(depth0, \"view.job.number\", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + \"\\n \\n \");\n return buffer;}\n\n data.buffer.push(\"\\n \\n \\n \");\n stack1 = helpers['if'].call(depth0, \"view.repository.slug\", {hash:{},inverse:self.noop,fn:self.program(1, program1, data),contexts:[depth0],data:data});\n if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n data.buffer.push(\"\\n \\n \\n \\n \\n \");\n stack1 = helpers['if'].call(depth0, \"view.repository.slug\", {hash:{},inverse:self.noop,fn:self.program(3, program3, data),contexts:[depth0],data:data});\n if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n data.buffer.push(\"\\n \\n \\n \\n \\n \");\n stack1 = helpers['if'].call(depth0, \"view.repository.slug\", {hash:{},inverse:self.noop,fn:self.program(5, program5, data),contexts:[depth0],data:data});\n if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n data.buffer.push(\"\\n \\n \\n \\n \\n \");\n stack1 = helpers['if'].call(depth0, \"view.repository.slug\", {hash:{},inverse:self.noop,fn:self.program(7, program7, data),contexts:[depth0],data:data});\n if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n data.buffer.push(\"\\n \\n \\n \\n \\n \");\n stack1 = helpers['if'].call(depth0, \"view.build.id\", {hash:{},inverse:self.noop,fn:self.program(9, program9, data),contexts:[depth0],data:data});\n if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n data.buffer.push(\"\\n \\n \\n \\n \\n \");\n stack1 = helpers['if'].call(depth0, \"view.job.id\", {hash:{},inverse:self.noop,fn:self.program(11, program11, data),contexts:[depth0],data:data});\n if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n data.buffer.push(\"\\n \\n \\n \\n\\n\");\n return buffer;\n});\n\nEmber.TEMPLATES['repos/show/tools'] = Ember.Handlebars.template(function anonymous(Handlebars, depth0, helpers, partials, data) { helpers = helpers || Ember.Handlebars.helpers;\n var buffer = '', stack1, foundHelper, escapeExpression=this.escapeExpression, helperMissing=helpers.helperMissing, self=this;\n\nfunction program1(depth0,data) {\n \n var buffer = '', stack1;\n data.buffer.push(\"\\n \");\n stack1 = {};\n stack1['contentBinding'] = \"view.branches\";\n stack1['selectionBinding'] = \"view.branch\";\n stack1['optionLabelPath'] = \"content.commit.branch\";\n stack1['optionValuePath'] = \"content.commit.branch\";\n stack1 = helpers.view.call(depth0, \"Ember.Select\", {hash:stack1,contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + \"\\n \");\n return buffer;}\n\nfunction program3(depth0,data) {\n \n \n data.buffer.push(\"\\n \\n \");}\n\n data.buffer.push(\"\\n\\n\");\n return buffer;\n});\n\nEmber.TEMPLATES['sponsors/decks'] = Ember.Handlebars.template(function anonymous(Handlebars, depth0, helpers, partials, data) { helpers = helpers || Ember.Handlebars.helpers;\n var buffer = '', stack1, foundHelper, escapeExpression=this.escapeExpression, self=this, helperMissing=helpers.helperMissing;\n\nfunction program1(depth0,data) {\n \n var buffer = '', stack1;\n data.buffer.push(\"\\n \");\n stack1 = helpers.each.call(depth0, \"deck\", {hash:{},inverse:self.noop,fn:self.program(2, program2, data),contexts:[depth0],data:data});\n if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n data.buffer.push(\"\\n \");\n return buffer;}\nfunction program2(depth0,data) {\n \n var buffer = '', stack1;\n data.buffer.push(\"\\n \\n \\n \\n \\n \\n \");\n return buffer;}\n\n data.buffer.push(\"\");\n foundHelper = helpers['t'];\n stack1 = foundHelper ? foundHelper.call(depth0, \"layouts.application.sponsers\", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, \"t\", \"layouts.application.sponsers\", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + \" \\n\\n\\n\\n\\n \\n \");\n foundHelper = helpers['t'];\n stack1 = foundHelper ? foundHelper.call(depth0, \"layouts.application.sponsors_link\", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, \"t\", \"layouts.application.sponsors_link\", {hash:{},contexts:[depth0],data:data});\n if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n data.buffer.push(\"\\n \\n
\\n\\n\");\n return buffer;\n});\n\nEmber.TEMPLATES['sponsors/links'] = Ember.Handlebars.template(function anonymous(Handlebars, depth0, helpers, partials, data) { helpers = helpers || Ember.Handlebars.helpers;\n var buffer = '', stack1, foundHelper, helperMissing=helpers.helperMissing, escapeExpression=this.escapeExpression, self=this;\n\nfunction program1(depth0,data) {\n \n var buffer = '', stack1;\n data.buffer.push(\"\\n \\n \");\n stack1 = {};\n stack1['unescaped'] = \"true\";\n stack1 = helpers._triageMustache.call(depth0, \"link\", {hash:stack1,contexts:[depth0],data:data});\n if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n data.buffer.push(\"\\n \\n \");\n return buffer;}\n\n data.buffer.push(\"\\n
\");\n foundHelper = helpers['t'];\n stack1 = foundHelper ? foundHelper.call(depth0, \"layouts.application.sponsers\", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, \"t\", \"layouts.application.sponsers\", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + \" \\n\\n \\n\\n
\\n \\n \");\n foundHelper = helpers['t'];\n stack1 = foundHelper ? foundHelper.call(depth0, \"layouts.application.sponsors_link\", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, \"t\", \"layouts.application.sponsors_link\", {hash:{},contexts:[depth0],data:data});\n if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n data.buffer.push(\"\\n \\n
\\n
\\n\\n\\n\");\n return buffer;\n});\n\nEmber.TEMPLATES['stats/show'] = Ember.Handlebars.template(function anonymous(Handlebars, depth0, helpers, partials, data) { helpers = helpers || Ember.Handlebars.helpers;\n \n\n\n data.buffer.push(\"
\\n
\\n\\n\");\n});\n\nEmber.TEMPLATES['workers/list'] = Ember.Handlebars.template(function anonymous(Handlebars, depth0, helpers, partials, data) { helpers = helpers || Ember.Handlebars.helpers;\n var buffer = '', stack1, escapeExpression=this.escapeExpression, self=this, helperMissing=helpers.helperMissing;\n\nfunction program1(depth0,data) {\n \n var buffer = '', stack1, foundHelper;\n data.buffer.push(\"\\n \\n \");\n foundHelper = helpers['t'];\n stack1 = foundHelper ? foundHelper.call(depth0, \"workers\", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, \"t\", \"workers\", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + \"\\n \\n \\n \\n \");\n stack1 = helpers.each.call(depth0, \"group\", \"in\", \"controller.groups\", {hash:{},inverse:self.program(11, program11, data),fn:self.program(2, program2, data),contexts:[depth0,depth0,depth0],data:data});\n if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n data.buffer.push(\"\\n \\n\");\n return buffer;}\nfunction program2(depth0,data) {\n \n var buffer = '', stack1;\n data.buffer.push(\"\\n \");\n stack1 = helpers.view.call(depth0, \"Travis.WorkersListView\", {hash:{},inverse:self.noop,fn:self.program(3, program3, data),contexts:[depth0],data:data});\n if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n data.buffer.push(\"\\n \");\n return buffer;}\nfunction program3(depth0,data) {\n \n var buffer = '', stack1;\n data.buffer.push(\"\\n \\n \\n \");\n stack1 = helpers._triageMustache.call(depth0, \"group.firstObject.host\", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + \"\\n \\n \\n \");\n stack1 = helpers.each.call(depth0, \"worker\", \"in\", \"group\", {hash:{},inverse:self.noop,fn:self.program(4, program4, data),contexts:[depth0,depth0,depth0],data:data});\n if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n data.buffer.push(\"\\n \\n \\n \");\n return buffer;}\nfunction program4(depth0,data) {\n \n var buffer = '', stack1;\n data.buffer.push(\"\\n \");\n stack1 = {};\n stack1['workerBinding'] = \"worker\";\n stack1 = helpers.view.call(depth0, \"Travis.WorkersItemView\", {hash:stack1,inverse:self.noop,fn:self.program(5, program5, data),contexts:[depth0],data:data});\n if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n data.buffer.push(\"\\n \");\n return buffer;}\nfunction program5(depth0,data) {\n \n var buffer = '', stack1;\n data.buffer.push(\"\\n \\n
\\n \");\n stack1 = helpers['if'].call(depth0, \"worker.isWorking\", {hash:{},inverse:self.program(9, program9, data),fn:self.program(6, program6, data),contexts:[depth0],data:data});\n if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n data.buffer.push(\"\\n \\n \");\n return buffer;}\nfunction program6(depth0,data) {\n \n var buffer = '', stack1;\n data.buffer.push(\"\\n \");\n stack1 = helpers['if'].call(depth0, \"worker.job_id\", {hash:{},inverse:self.noop,fn:self.program(7, program7, data),contexts:[depth0],data:data});\n if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n data.buffer.push(\"\\n \");\n return buffer;}\nfunction program7(depth0,data) {\n \n var buffer = '', stack1;\n data.buffer.push(\"\\n \\n \");\n stack1 = helpers._triageMustache.call(depth0, \"view.display\", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + \"\\n \\n \");\n return buffer;}\n\nfunction program9(depth0,data) {\n \n var buffer = '', stack1;\n data.buffer.push(\"\\n \");\n stack1 = helpers._triageMustache.call(depth0, \"view.display\", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + \"\\n \");\n return buffer;}\n\nfunction program11(depth0,data) {\n \n \n data.buffer.push(\"\\n No workers\\n \");}\n\n stack1 = helpers.view.call(depth0, \"Travis.WorkersView\", {hash:{},inverse:self.noop,fn:self.program(1, program1, data),contexts:[depth0],data:data});\n if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n data.buffer.push(\"\\n\\n\");\n return buffer;\n});\n\n})();\n//@ sourceURL=templates");minispade.register('config/locales', "(function() {window.I18n = window.I18n || {}\nwindow.I18n.translations = {\"ca\":{\"locales\":{\"en\":\"English\",\"es\":\"Español\",\"fr\":\"Français\",\"ja\":\"日本語\",\"nb\":\"Norsk Bokmål\",\"nl\":\"Nederlands\",\"pl\":\"Polski\",\"pt-BR\":\"português brasileiro\",\"ru\":\"Русский\"}},\"en\":{\"errors\":{\"messages\":{\"not_found\":\"not found\",\"already_confirmed\":\"was already confirmed\",\"not_locked\":\"was not locked\"}},\"devise\":{\"failure\":{\"unauthenticated\":\"You need to sign in or sign up before continuing.\",\"unconfirmed\":\"You have to confirm your account before continuing.\",\"locked\":\"Your account is locked.\",\"invalid\":\"Invalid email or password.\",\"invalid_token\":\"Invalid authentication token.\",\"timeout\":\"Your session expired, please sign in again to continue.\",\"inactive\":\"Your account was not activated yet.\"},\"sessions\":{\"signed_in\":\"Signed in successfully.\",\"signed_out\":\"Signed out successfully.\"},\"passwords\":{\"send_instructions\":\"You will receive an email with instructions about how to reset your password in a few minutes.\",\"updated\":\"Your password was changed successfully. You are now signed in.\"},\"confirmations\":{\"send_instructions\":\"You will receive an email with instructions about how to confirm your account in a few minutes.\",\"confirmed\":\"Your account was successfully confirmed. You are now signed in.\"},\"registrations\":{\"signed_up\":\"You have signed up successfully. If enabled, a confirmation was sent to your e-mail.\",\"updated\":\"You updated your account successfully.\",\"destroyed\":\"Bye! Your account was successfully cancelled. We hope to see you again soon.\"},\"unlocks\":{\"send_instructions\":\"You will receive an email with instructions about how to unlock your account in a few minutes.\",\"unlocked\":\"Your account was successfully unlocked. You are now signed in.\"},\"mailer\":{\"confirmation_instructions\":{\"subject\":\"Confirmation instructions\"},\"reset_password_instructions\":{\"subject\":\"Reset password instructions\"},\"unlock_instructions\":{\"subject\":\"Unlock Instructions\"}}},\"datetime\":{\"distance_in_words\":{\"hours_exact\":{\"one\":\"%{count} hour\",\"other\":\"%{count} hours\"},\"minutes_exact\":{\"one\":\"%{count} minute\",\"other\":\"%{count} minutes\"},\"seconds_exact\":{\"one\":\"%{count} second\",\"other\":\"%{count} seconds\"}}},\"workers\":\"Workers\",\"queue\":\"Queue\",\"no_job\":\"There are no jobs\",\"repositories\":{\"branch\":\"Branch\",\"image_url\":\"Image URL\",\"markdown\":\"Markdown\",\"textile\":\"Textile\",\"rdoc\":\"RDOC\",\"commit\":\"Commit\",\"message\":\"Message\",\"started_at\":\"Started\",\"duration\":\"Duration\",\"finished_at\":\"Finished\",\"tabs\":{\"current\":\"Current\",\"build_history\":\"Build History\",\"branches\":\"Branch Summary\",\"pull_requests\":\"Pull Requests\",\"build\":\"Build\",\"job\":\"Job\"}},\"build\":{\"job\":\"Job\",\"duration\":\"Duration\",\"finished_at\":\"Finished\"},\"jobs\":{\"messages\":{\"sponsored_by\":\"This test suite was run on a worker box sponsored by\"},\"build_matrix\":\"Build Matrix\",\"allowed_failures\":\"Allowed Failures\",\"author\":\"Author\",\"config\":\"Config\",\"compare\":\"Compare\",\"committer\":\"Committer\",\"branch\":\"Branch\",\"commit\":\"Commit\",\"message\":\"Message\",\"started_at\":\"Started\",\"duration\":\"Duration\",\"finished_at\":\"Finished\"},\"builds\":{\"name\":\"Build\",\"messages\":{\"sponsored_by\":\"This test suite was run on a worker box sponsored by\"},\"build_matrix\":\"Build Matrix\",\"allowed_failures\":\"Allowed Failures\",\"author\":\"Author\",\"config\":\"Config\",\"compare\":\"Compare\",\"committer\":\"Committer\",\"branch\":\"Branch\",\"commit\":\"Commit\",\"message\":\"Message\",\"started_at\":\"Started\",\"duration\":\"Duration\",\"finished_at\":\"Finished\",\"show_more\":\"Show more\"},\"layouts\":{\"top\":{\"home\":\"Home\",\"blog\":\"Blog\",\"docs\":\"Docs\",\"stats\":\"Stats\",\"github_login\":\"Sign in with Github\",\"profile\":\"Profile\",\"sign_out\":\"Sign Out\",\"admin\":\"Admin\"},\"application\":{\"fork_me\":\"Fork me on Github\",\"recent\":\"Recent\",\"search\":\"Search\",\"sponsers\":\"Sponsors\",\"sponsors_link\":\"See all of our amazing sponsors →\",\"my_repositories\":\"My Repositories\"},\"about\":{\"alpha\":\"This stuff is alpha.\",\"messages\":{\"alpha\":\"Please do not consider this a stable service. We're still far from that! More info here. \"},\"join\":\"Join us and help!\",\"mailing_list\":\"Mailing List\",\"repository\":\"Repository\",\"twitter\":\"Twitter\"},\"mobile\":{\"author\":\"Author\",\"build\":\"Build\",\"build_matrix\":\"Build Matrix\",\"commit\":\"Commit\",\"committer\":\"Committer\",\"compare\":\"Compare\",\"config\":\"Config\",\"duration\":\"Duration\",\"finished_at\":\"Finished at\",\"job\":\"Job\",\"log\":\"Log\"}},\"profiles\":{\"show\":{\"email\":\"Email\",\"github\":\"Github\",\"message\":{\"your_repos\":\" Flick the switches below to turn on the Travis service hook for your projects, then push to GitHub.\",\"config\":\"how to configure custom build options\"},\"messages\":{\"notice\":\"To get started, please read our Getting Started guide .\\n It will only take a couple of minutes. \"},\"token\":\"Token\",\"your_repos\":\"Your Repositories\",\"update\":\"Update\",\"update_locale\":\"Update\",\"your_locale\":\"Your Locale\"}},\"statistics\":{\"index\":{\"count\":\"Count\",\"repo_growth\":\"Repository Growth\",\"total_projects\":\"Total Projects/Repositories\",\"build_count\":\"Build Count\",\"last_month\":\"last month\",\"total_builds\":\"Total Builds\"}},\"locales\":{\"en\":\"English\",\"es\":\"Español\",\"fr\":\"Français\",\"ja\":\"日本語\",\"nb\":\"Norsk Bokmål\",\"pl\":\"Polski\",\"ru\":\"Русский\",\"nl\":\"Nederlands\",\"pt-BR\":\"português brasileiro\"}},\"es\":{\"datetime\":{\"distance_in_words\":{\"hours_exact\":{\"one\":\"%{count} hora\",\"other\":\"%{count} horas\"},\"minutes_exact\":{\"one\":\"%{count} minuto\",\"other\":\"%{count} minutos\"},\"seconds_exact\":{\"one\":\"%{count} segundo\",\"other\":\"%{count} segundos\"}}},\"workers\":\"Procesos\",\"queue\":\"Cola\",\"no_job\":\"No hay trabajos\",\"repositories\":{\"branch\":\"Rama\",\"image_url\":\"Imagen URL\",\"markdown\":\"Markdown\",\"textile\":\"Textile\",\"rdoc\":\"RDOC\",\"commit\":\"Commit\",\"message\":\"Mensaje\",\"started_at\":\"Iniciado\",\"duration\":\"Duración\",\"finished_at\":\"Finalizado\",\"tabs\":{\"current\":\"Actual\",\"build_history\":\"Histórico\",\"branches\":\"Ramas\",\"build\":\"Builds\",\"job\":\"Trabajo\"}},\"build\":{\"job\":\"Trabajo\",\"duration\":\"Duración\",\"finished_at\":\"Finalizado\"},\"jobs\":{\"messages\":{\"sponsored_by\":\"Esta serie de tests han sido ejecutados en una caja de Proceso patrocinada por\"},\"build_matrix\":\"Matriz de Builds\",\"allowed_failures\":\"Fallos Permitidos\",\"author\":\"Autor\",\"config\":\"Configuración\",\"compare\":\"Comparar\",\"committer\":\"Committer\",\"branch\":\"Rama\",\"commit\":\"Commit\",\"message\":\"Mensaje\",\"started_at\":\"Iniciado\",\"duration\":\"Duración\",\"finished_at\":\"Finalizado\",\"sponsored_by\":\"Patrocinado por\"},\"builds\":{\"name\":\"Build\",\"messages\":{\"sponsored_by\":\"Esta serie de tests han sido ejecutados en una caja de Proceso patrocinada por\"},\"build_matrix\":\"Matriz de Builds\",\"allowed_failures\":\"Fallos Permitidos\",\"author\":\"Autor\",\"config\":\"Configuración\",\"compare\":\"Comparar\",\"committer\":\"Committer\",\"branch\":\"Rama\",\"commit\":\"Commit\",\"message\":\"Mensaje\",\"started_at\":\"Iniciado\",\"duration\":\"Duración\",\"finished_at\":\"Finalizado\"},\"layouts\":{\"top\":{\"home\":\"Inicio\",\"blog\":\"Blog\",\"docs\":\"Documentación\",\"stats\":\"Estadísticas\",\"github_login\":\"Iniciar sesión con Github\",\"profile\":\"Perfil\",\"sign_out\":\"Desconectar\",\"admin\":\"Admin\"},\"application\":{\"fork_me\":\"Hazme un Fork en Github\",\"recent\":\"Reciente\",\"search\":\"Buscar\",\"sponsers\":\"Patrocinadores\",\"sponsors_link\":\"Ver todos nuestros patrocinadores →\",\"my_repositories\":\"Mis Repositorios\"},\"about\":{\"alpha\":\"Esto es alpha.\",\"messages\":{\"alpha\":\"Por favor no considereis esto un servicio estable. Estamos estamos aún lejos de ello! Más información aquí. \"},\"join\":\"Únetenos y ayudanos!\",\"mailing_list\":\"Lista de Correos\",\"repository\":\"Repositorio\",\"twitter\":\"Twitter\"}},\"profiles\":{\"show\":{\"email\":\"Correo electrónico\",\"github\":\"Github\",\"message\":{\"your_repos\":\" Activa los interruptores para inicial el Travis service hook para tus proyectos, y haz un Push en GitHub. \\n Para probar varias versiones de ruby, mira\",\"config\":\"como configurar tus propias opciones para el Build\"},\"messages\":{\"notice\":\"Para comenzar, por favor lee nuestra Guía de Inicio .\\n Solo tomará unos pocos minutos. \"},\"token\":\"Token\",\"your_repos\":\"Tus repositorios\",\"update\":\"Actualizar\",\"update_locale\":\"Actualizar\",\"your_locale\":\"Tu Idioma\"}},\"statistics\":{\"index\":{\"count\":\"Número\",\"repo_growth\":\"Crecimiento de Repositorios\",\"total_projects\":\"Total de Proyectos/Repositorios\",\"build_count\":\"Número de Builds\",\"last_month\":\"mes anterior\",\"total_builds\":\"Total de Builds\"}},\"locales\":{\"en\":\"English\",\"es\":\"Español\",\"fr\":\"Français\",\"ja\":\"日本語\",\"nb\":\"Norsk Bokmål\",\"pl\":\"Polski\",\"ru\":\"Русский\",\"nl\":\"Nederlands\",\"pt-BR\":\"português brasileiro\"}},\"fr\":{\"datetime\":{\"distance_in_words\":{\"hours_exact\":{\"one\":\"%{count} heure\",\"other\":\"%{count} heures\"},\"minutes_exact\":{\"one\":\"%{count} minute\",\"other\":\"%{count} minutes\"},\"seconds_exact\":{\"one\":\"%{count} seconde\",\"other\":\"%{count} secondes\"}}},\"workers\":\"Processus\",\"queue\":\"File\",\"no_job\":\"Pas de tâches\",\"repositories\":{\"branch\":\"Branche\",\"image_url\":\"Image\",\"markdown\":\"Markdown\",\"textile\":\"Textile\",\"rdoc\":\"RDOC\",\"commit\":\"Commit\",\"message\":\"Message\",\"started_at\":\"Commencé\",\"duration\":\"Durée\",\"finished_at\":\"Terminé\",\"tabs\":{\"current\":\"Actuel\",\"build_history\":\"Historique des tâches\",\"branches\":\"Résumé des branches\",\"build\":\"Construction\",\"job\":\"Tâche\"}},\"build\":{\"job\":\"Tâche\",\"duration\":\"Durée\",\"finished_at\":\"Terminé\"},\"jobs\":{\"messages\":{\"sponsored_by\":\"Cette série de tests a été exécutée sur une machine sponsorisée par\"},\"build_matrix\":\"Matrice des versions\",\"allowed_failures\":\"Échecs autorisés\",\"author\":\"Auteur\",\"config\":\"Config\",\"compare\":\"Comparer\",\"committer\":\"Committeur\",\"branch\":\"Branche\",\"commit\":\"Commit\",\"message\":\"Message\",\"started_at\":\"Commencé\",\"duration\":\"Durée\",\"finished_at\":\"Terminé\",\"sponsored_by\":\"Cette série de tests a été exécutée sur une machine sponsorisée par\"},\"builds\":{\"name\":\"Version\",\"messages\":{\"sponsored_by\":\"Cette série de tests a été exécutée sur une machine sponsorisée par\"},\"build_matrix\":\"Matrice des versions\",\"allowed_failures\":\"Échecs autorisés\",\"author\":\"Auteur\",\"config\":\"Config\",\"compare\":\"Comparer\",\"committer\":\"Committeur\",\"branch\":\"Branche\",\"commit\":\"Commit\",\"message\":\"Message\",\"started_at\":\"Commencé\",\"duration\":\"Durée\",\"finished_at\":\"Terminé\"},\"layouts\":{\"top\":{\"home\":\"Accueil\",\"blog\":\"Blog\",\"docs\":\"Documentation\",\"stats\":\"Statistiques\",\"github_login\":\"Connection Github\",\"profile\":\"Profil\",\"sign_out\":\"Déconnection\",\"admin\":\"Admin\"},\"application\":{\"fork_me\":\"Faites un Fork sur Github\",\"recent\":\"Récent\",\"search\":\"Chercher\",\"sponsers\":\"Sponsors\",\"sponsors_link\":\"Voir tous nos extraordinaire sponsors →\",\"my_repositories\":\"Mes dépôts\"},\"about\":{\"alpha\":\"Ceci est en alpha.\",\"messages\":{\"alpha\":\"S'il vous plaît ne considérez pas ce service comme étant stable. Nous sommes loin de ça! Plus d'infos ici. \"},\"join\":\"Joignez-vous à nous et aidez-nous!\",\"mailing_list\":\"Liste de distribution\",\"repository\":\"Dépôt\",\"twitter\":\"Twitter\"},\"mobile\":{\"author\":\"Auteur\",\"build\":\"Version\",\"build_matrix\":\"Matrice des versions\",\"commit\":\"Commit\",\"committer\":\"Committeur\",\"compare\":\"Comparer\",\"config\":\"Config\",\"duration\":\"Durée\",\"finished_at\":\"Terminé à\",\"job\":\"Tâche\",\"log\":\"Journal\"}},\"profiles\":{\"show\":{\"github\":\"Github\",\"message\":{\"your_repos\":\"Utilisez les boutons ci-dessous pour activer Travis sur vos projets puis déployez sur GitHub. \\nPour tester sur plus de versions de ruby, voir\",\"config\":\"comment configurer des options de version personnalisées\"},\"messages\":{\"notice\":\"Pour commencer, veuillez lire notre guide de démarrage .\\n Cela ne vous prendra que quelques minutes. \"},\"token\":\"Jeton\",\"your_repos\":\"Vos dépôts\",\"email\":\"Courriel\",\"update\":\"Modifier\",\"update_locale\":\"Modifier\",\"your_locale\":\"Votre langue\"}},\"statistics\":{\"index\":{\"count\":\"Décompte\",\"repo_growth\":\"Croissance de dépôt\",\"total_projects\":\"Total des projets/dépôts\",\"build_count\":\"Décompte des versions\",\"last_month\":\"mois dernier\",\"total_builds\":\"Total des versions\"}},\"admin\":{\"actions\":{\"create\":\"créer\",\"created\":\"créé\",\"delete\":\"supprimer\",\"deleted\":\"supprimé\",\"update\":\"mise à jour\",\"updated\":\"mis à jour\"},\"credentials\":{\"log_out\":\"Déconnection\"},\"delete\":{\"confirmation\":\"Oui, je suis sure\",\"flash_confirmation\":\"%{name} a été détruit avec succès\"},\"flash\":{\"error\":\"%{name} n'a pas pu être %{action}\",\"noaction\":\"Aucune action n'a été entreprise\",\"successful\":\"%{name} a réussi à %{action}\"},\"history\":{\"name\":\"Historique\",\"no_activity\":\"Aucune activité\",\"page_name\":\"Historique pour %{name}\"},\"list\":{\"add_new\":\"Ajouter un nouveau\",\"delete_action\":\"Supprimer\",\"delete_selected\":\"Supprimer la sélection\",\"edit_action\":\"Modifier\",\"search\":\"Rechercher\",\"select\":\"Sélectionner le %{name} à modifier\",\"select_action\":\"Sélectionner\",\"show_all\":\"Montrer tout\"},\"new\":{\"basic_info\":\"Information de base\",\"cancel\":\"Annuler\",\"chosen\":\"%{name} choisi\",\"chose_all\":\"Choisir tout\",\"clear_all\":\"Déselectionner tout\",\"many_chars\":\"caractères ou moins\",\"one_char\":\"caractère.\",\"optional\":\"Optionnel\",\"required\":\"Requis\",\"save\":\"Sauvegarder\",\"save_and_add_another\":\"Sauvegarder et en ajouter un autre\",\"save_and_edit\":\"Sauvegarder et modifier\",\"select_choice\":\"Faites vos choix et cliquez\"},\"dashboard\":{\"add_new\":\"Ajouter un nouveau\",\"last_used\":\"Dernière utilisation\",\"model_name\":\"Nom du modèle\",\"modify\":\"Modification\",\"name\":\"Tableau de bord\",\"pagename\":\"Administration du site\",\"records\":\"Enregistrements\",\"show\":\"Voir\",\"ago\":\"plus tôt\"}},\"home\":{\"name\":\"accueil\"},\"repository\":{\"duration\":\"Durée\"},\"devise\":{\"confirmations\":{\"confirmed\":\"Votre compte a été crée avec succès. Vous être maintenant connecté.\",\"send_instructions\":\"Vous allez recevoir un courriel avec les instructions de confirmation de votre compte dans quelques minutes.\"},\"failure\":{\"inactive\":\"Votre compte n'a pas encore été activé.\",\"invalid\":\"Adresse courriel ou mot de passe invalide.\",\"invalid_token\":\"Jeton d'authentification invalide.\",\"locked\":\"Votre compte est bloqué.\",\"timeout\":\"Votre session est expirée, veuillez vous reconnecter pour continuer.\",\"unauthenticated\":\"Vous devez vous connecter ou vous enregistrer afin de continuer\",\"unconfirmed\":\"Vous devez confirmer votre compte avant de continuer.\"},\"mailer\":{\"confirmation_instructions\":{\"subject\":\"Instructions de confirmations\"},\"reset_password_instructions\":{\"subject\":\"Instruction de remise à zéro du mot de passe\"},\"unlock_instructions\":{\"subject\":\"Instruction de débloquage\"}},\"passwords\":{\"send_instructions\":\"Vous recevrez un courriel avec les instructions de remise à zéro du mot de passe dans quelques minutes.\",\"updated\":\"Votre mot de passe a été changé avec succès. Vous êtes maintenant connecté.\"},\"registrations\":{\"destroyed\":\"Au revoir! Votre compte a été annulé avec succès. Nous espérons vous revoir bientôt.\",\"signed_up\":\"Vous êtes enregistré avec succès. Si activé, une confirmation vous a été envoyé par courriel.\",\"updated\":\"Votre compte a été mis a jour avec succès\"},\"sessions\":{\"signed_in\":\"Connecté avec succès\",\"signed_out\":\"Déconnecté avec succès\"},\"unlocks\":{\"send_instructions\":\"Vous recevrez un courriel contenant les instructions pour débloquer votre compte dans quelques minutes.\",\"unlocked\":\"Votre compte a été débloqué avec succès.\"}},\"errors\":{\"messages\":{\"already_confirmed\":\"étais déja confirmé\",\"not_found\":\"n'a pas été trouvé\",\"not_locked\":\"n'étais pas bloqué\"}},\"locales\":{\"en\":\"English\",\"es\":\"Español\",\"ja\":\"日本語\",\"ru\":\"Русский\",\"fr\":\"Français\",\"nb\":\"Norsk Bokmål\",\"pl\":\"Polski\",\"nl\":\"Nederlands\",\"pt-BR\":\"português brasileiro\"}},\"ja\":{\"workers\":\"ワーカー\",\"queue\":\"キュー\",\"no_job\":\"ジョブはありません\",\"repositories\":{\"branch\":\"ブランチ\",\"image_url\":\"画像URL\",\"markdown\":\".md\",\"textile\":\".textile\",\"rdoc\":\".rdoc\",\"commit\":\"コミット\",\"message\":\"メッセージ\",\"started_at\":\"開始時刻\",\"duration\":\"処理時間\",\"finished_at\":\"終了時刻\",\"tabs\":{\"current\":\"最新\",\"build_history\":\"ビルド履歴\",\"branches\":\"ブランチまとめ\",\"build\":\"ビルド\",\"job\":\"ジョブ\"}},\"build\":{\"job\":\"ジョブ\",\"duration\":\"処理時間\",\"finished_at\":\"終了時刻\"},\"jobs\":{\"messages\":{\"sponsored_by\":\"このテストは以下のスポンサーの協力で行いました。\"},\"build_matrix\":\"ビルドマトリクス\",\"allowed_failures\":\"失敗許容範囲内\",\"author\":\"制作者\",\"config\":\"設定\",\"compare\":\"比較\",\"committer\":\"コミット者\",\"branch\":\"ブランチ\",\"commit\":\"コミット\",\"message\":\"メッセージ\",\"started_at\":\"開始時刻\",\"duration\":\"処理時間\",\"finished_at\":\"終了時刻\"},\"builds\":{\"name\":\"ビルド\",\"messages\":{\"sponsored_by\":\"このテストは以下のスポンサーの協力で行いました。\"},\"build_matrix\":\"失敗許容範囲外\",\"allowed_failures\":\"失敗許容範囲内\",\"author\":\"制作者\",\"config\":\"設定\",\"compare\":\"比較\",\"committer\":\"コミット者\",\"branch\":\"ブランチ\",\"commit\":\"コミット\",\"message\":\"メッセージ\",\"started_at\":\"開始時刻\",\"duration\":\"処理時間\",\"finished_at\":\"終了時刻\"},\"layouts\":{\"about\":{\"alpha\":\"まだアルファですよ!\",\"join\":\"参加してみよう!\",\"mailing_list\":\"メールリスト\",\"messages\":{\"alpha\":\"Travis-ciは安定したサービスまで後一歩!詳しくはこちら \"},\"repository\":\"リポジトリ\",\"twitter\":\"ツイッター\"},\"application\":{\"fork_me\":\"Githubでフォークしよう\",\"my_repositories\":\"マイリポジトリ\",\"recent\":\"最近\",\"search\":\"検索\",\"sponsers\":\"スポンサー\",\"sponsors_link\":\"スポンサーをもっと見る →\"},\"top\":{\"blog\":\"ブログ\",\"docs\":\"Travisとは?\",\"github_login\":\"Githubでログイン\",\"home\":\"ホーム\",\"profile\":\"プロフィール\",\"sign_out\":\"ログアウト\",\"stats\":\"統計\",\"admin\":\"管理\"},\"mobile\":{\"author\":\"制作者\",\"build\":\"ビルド\",\"build_matrix\":\"ビルドマトリクス\",\"commit\":\"コミット\",\"committer\":\"コミット者\",\"compare\":\"比較\",\"config\":\"設定\",\"duration\":\"処理時間\",\"finished_at\":\"終了時刻\",\"job\":\"ジョブ\",\"log\":\"ログ\"}},\"profiles\":{\"show\":{\"github\":\"Github\",\"email\":\"メール\",\"message\":{\"config\":\"詳細設定\",\"your_repos\":\"以下のスイッチを設定し、Travis-ciを有効にします。Githubへプッシュしたらビルドは自動的に開始します。複数バーションや細かい設定はこちらへ:\"},\"messages\":{\"notice\":\"まずはTravisのはじめ方 を参照してください。\"},\"token\":\"トークン\",\"your_repos\":\"リポジトリ\",\"update\":\"更新\",\"update_locale\":\"更新\",\"your_locale\":\"言語設定\"}},\"statistics\":{\"index\":{\"build_count\":\"ビルド数\",\"count\":\"数\",\"last_month\":\"先月\",\"repo_growth\":\"リポジトリ\",\"total_builds\":\"合計ビルド数\",\"total_projects\":\"合計リポジトリ\"}},\"locales\":{\"en\":\"English\",\"es\":\"Español\",\"fr\":\"Français\",\"ja\":\"日本語\",\"nb\":\"Norsk Bokmål\",\"pl\":\"Polski\",\"ru\":\"Русский\",\"nl\":\"Nederlands\",\"pt-BR\":\"português brasileiro\"}},\"nb\":{\"admin\":{\"actions\":{\"create\":\"opprett\",\"created\":\"opprettet\",\"delete\":\"slett\",\"deleted\":\"slettet\",\"update\":\"oppdater\",\"updated\":\"oppdatert\"},\"credentials\":{\"log_out\":\"Logg ut\"},\"dashboard\":{\"add_new\":\"Legg til ny\",\"ago\":\"siden\",\"last_used\":\"Sist brukt\",\"model_name\":\"Modell\",\"modify\":\"Rediger\",\"name\":\"Dashbord\",\"pagename\":\"Nettstedsadministrasjon\",\"records\":\"Oppføringer\",\"show\":\"Vis\"},\"delete\":{\"confirmation\":\"Ja, jeg er sikker\",\"flash_confirmation\":\"%{name} ble slettet\"},\"flash\":{\"error\":\"%{name} kunne ikke bli %{action}\",\"noaction\":\"Ingen handlinger ble utført\",\"successful\":\"%{name} ble %{action}\"},\"history\":{\"name\":\"Logg\",\"no_activity\":\"Ingen aktivitet\",\"page_name\":\"Logg for %{name}\"},\"list\":{\"add_new\":\"Legg til ny\",\"delete_action\":\"Slett\",\"delete_selected\":\"Slett valgte\",\"edit_action\":\"Rediger\",\"search\":\"Søk\",\"select\":\"Velg %{name} for å redigere\",\"select_action\":\"Velg\",\"show_all\":\"Vis alle \"},\"new\":{\"basic_info\":\"Basisinformasjon\",\"cancel\":\"Avbryt\",\"chosen\":\"Valgt %{name}\",\"chose_all\":\"Velg alle\",\"clear_all\":\"Fjern alle\",\"many_chars\":\"eller færre tegn.\",\"one_char\":\"tegn.\",\"optional\":\"Valgfri\",\"required\":\"Påkrevd\",\"save\":\"Lagre\",\"save_and_add_another\":\"Lagre og legg til ny\",\"save_and_edit\":\"Lagre og rediger\",\"select_choice\":\"Kryss av for dine valg og klikk\"}},\"build\":{\"duration\":\"Varighet\",\"finished_at\":\"Fullført\",\"job\":\"Jobb\"},\"builds\":{\"allowed_failures\":\"Tillatte feil\",\"author\":\"Forfatter\",\"branch\":\"Gren\",\"build_matrix\":\"Jobbmatrise\",\"commit\":\"Innsending\",\"committer\":\"Innsender\",\"compare\":\"Sammenlign\",\"config\":\"Oppsett\",\"duration\":\"Varighet\",\"finished_at\":\"Fullført\",\"message\":\"Beskrivelse\",\"messages\":{\"sponsored_by\":\"Denne testen ble kjørt på en maskin sponset av\"},\"name\":\"Jobb\",\"started_at\":\"Startet\"},\"datetime\":{\"distance_in_words\":{\"hours_exact\":{\"one\":\"%{count} time\",\"other\":\"%{count} timer\"},\"minutes_exact\":{\"one\":\"%{count} minutt\",\"other\":\"%{count} minutter\"},\"seconds_exact\":{\"one\":\"%{count} sekund\",\"other\":\"%{count} sekunder\"}}},\"devise\":{\"confirmations\":{\"confirmed\":\"Din konto er aktivert og du er nå innlogget.\",\"send_instructions\":\"Om noen få minutter så vil du få en e-post med informasjon om hvordan du bekrefter kontoen din.\"},\"failure\":{\"inactive\":\"Kontoen din har ikke blitt aktivert enda.\",\"invalid\":\"Ugyldig e-post eller passord.\",\"invalid_token\":\"Ugyldig autentiseringskode.\",\"locked\":\"Kontoen din er låst.\",\"timeout\":\"Du ble logget ut siden på grunn av mangel på aktivitet, vennligst logg inn på nytt.\",\"unauthenticated\":\"Du må logge inn eller registrere deg for å fortsette.\",\"unconfirmed\":\"Du må bekrefte kontoen din før du kan fortsette.\"},\"mailer\":{\"confirmation_instructions\":{\"subject\":\"Bekreftelsesinformasjon\"},\"reset_password_instructions\":{\"subject\":\"Instruksjoner for å få nytt passord\"},\"unlock_instructions\":{\"subject\":\"Opplåsningsinstruksjoner\"}},\"passwords\":{\"send_instructions\":\"Om noen få minutter så vil du få en epost med informasjon om hvordan du kan få et nytt passord.\",\"updated\":\"Passordet ditt ble endret, og du er logget inn.\"},\"registrations\":{\"destroyed\":\"Adjø! Kontoen din ble kansellert. Vi håper vi ser deg igjen snart.\",\"signed_up\":\"Du er nå registrert.\",\"updated\":\"Kontoen din ble oppdatert.\"},\"sessions\":{\"signed_in\":\"Du er nå logget inn.\",\"signed_out\":\"Du er nå logget ut.\"},\"unlocks\":{\"send_instructions\":\"Om noen få minutter så kommer du til å få en e-post med informasjon om hvordan du kan låse opp kontoen din.\",\"unlocked\":\"Kontoen din ble låst opp, og du er nå logget inn igjen.\"}},\"errors\":{\"messages\":{\"already_confirmed\":\"har allerede blitt bekreftet\",\"not_found\":\"ikke funnnet\",\"not_locked\":\"var ikke låst\"}},\"home\":{\"name\":\"hjem\"},\"jobs\":{\"allowed_failures\":\"Tillatte feil\",\"author\":\"Forfatter\",\"branch\":\"Gren\",\"build_matrix\":\"Jobbmatrise\",\"commit\":\"Innsending\",\"committer\":\"Innsender\",\"compare\":\"Sammenlign\",\"config\":\"Oppsett\",\"duration\":\"Varighet\",\"finished_at\":\"Fullført\",\"message\":\"Beskrivelse\",\"messages\":{\"sponsored_by\":\"Denne testserien ble kjørt på en maskin sponset av\"},\"started_at\":\"Startet\"},\"layouts\":{\"about\":{\"alpha\":\"Dette er alfa-greier.\",\"join\":\"Bli med og hjelp oss!\",\"mailing_list\":\"E-postliste\",\"messages\":{\"alpha\":\"Dette er ikke en stabil tjeneste. Vi har fremdeles et stykke igjen! Mer informasjon finner du her .\"},\"repository\":\"Kodelager\",\"twitter\":\"Twitter.\"},\"application\":{\"fork_me\":\"Se koden på Github\",\"my_repositories\":\"Mine kodelagre\",\"recent\":\"Nylig\",\"search\":\"Søk\",\"sponsers\":\"Sponsorer\",\"sponsors_link\":\"Se alle de flotte sponsorene våre →\"},\"mobile\":{\"author\":\"Forfatter\",\"build\":\"Jobb\",\"build_matrix\":\"Jobbmatrise\",\"commit\":\"Innsending\",\"committer\":\"Innsender\",\"compare\":\"Sammenlign\",\"config\":\"Oppsett\",\"duration\":\"Varighet\",\"finished_at\":\"Fullført\",\"job\":\"Jobb\",\"log\":\"Logg\"},\"top\":{\"admin\":\"Administrator\",\"blog\":\"Blogg\",\"docs\":\"Dokumentasjon\",\"github_login\":\"Logg inn med Github\",\"home\":\"Hjem\",\"profile\":\"Profil\",\"sign_out\":\"Logg ut\",\"stats\":\"Statistikk\"}},\"no_job\":\"Ingen jobber finnnes\",\"profiles\":{\"show\":{\"email\":\"E-post\",\"github\":\"Github\",\"message\":{\"config\":\"hvordan sette opp egne jobbinnstillinger\",\"your_repos\":\"Slå\\u0010 på Travis for prosjektene dine ved å dra i bryterne under, og send koden til Github. \\nFor å teste mot flere ruby-versjoner, se dokumentasjonen for\"},\"messages\":{\"notice\":\"For å komme i gang, vennligst les kom-i-gang-veivisereren vår. Det tar bare et par minutter. \"},\"token\":\"Kode\",\"update\":\"Oppdater\",\"update_locale\":\"Oppdater\",\"your_locale\":\"Ditt språk\",\"your_repos\":\"Dine kodelagre\"}},\"queue\":\"Kø\",\"repositories\":{\"branch\":\"Gren\",\"commit\":\"Innsender\",\"duration\":\"Varighet\",\"finished_at\":\"Fullført\",\"image_url\":\"Bilde-URL\",\"markdown\":\"Markdown\",\"message\":\"Beskrivelse\",\"rdoc\":\"RDOC\",\"started_at\":\"Startet\",\"tabs\":{\"branches\":\"Grensammendrag\",\"build\":\"Jobb\",\"build_history\":\"Jobblogg\",\"current\":\"Siste\",\"job\":\"Jobb\"},\"textile\":\"Textile\"},\"repository\":{\"duration\":\"Varighet\"},\"statistics\":{\"index\":{\"build_count\":\"Antall jobber\",\"count\":\"Antall\",\"last_month\":\"siste måned\",\"repo_growth\":\"Vekst i kodelager\",\"total_builds\":\"Totale jobber\",\"total_projects\":\"Antall prosjekter/kodelagre\"}},\"workers\":\"Arbeidere\",\"locales\":{\"en\":\"English\",\"es\":\"Español\",\"ja\":\"日本語\",\"ru\":\"Русский\",\"fr\":\"Français\",\"nb\":\"Norsk Bokmål\",\"pl\":\"Polski\",\"nl\":\"Nederlands\",\"pt-BR\":\"português brasileiro\"}},\"nl\":{\"admin\":{\"actions\":{\"create\":\"aanmaken\",\"created\":\"aangemaakt\",\"delete\":\"verwijderen\",\"deleted\":\"verwijderd\",\"update\":\"bijwerken\",\"updated\":\"bijgewerkt\"},\"credentials\":{\"log_out\":\"Afmelden\"},\"dashboard\":{\"add_new\":\"Nieuwe toevoegen\",\"ago\":\"geleden\",\"last_used\":\"Laatst gebruikt\",\"model_name\":\"Model naam\",\"modify\":\"Wijzigen\",\"pagename\":\"Site administratie\",\"show\":\"Laten zien\",\"records\":\"Gegevens\"},\"delete\":{\"confirmation\":\"Ja, ik ben zeker\",\"flash_confirmation\":\"%{name} is vernietigd\"},\"flash\":{\"error\":\"%{name} kon niet worden %{action}\",\"noaction\":\"Er zijn geen acties genomen\",\"successful\":\"%{name} is %{action}\"},\"history\":{\"name\":\"Geschiedenis\",\"no_activity\":\"Geen activiteit\",\"page_name\":\"Geschiedenis van %{name}\"},\"list\":{\"add_new\":\"Nieuwe toevoegen\",\"delete_action\":\"Verwijderen\",\"delete_selected\":\"Verwijder geselecteerden\",\"edit_action\":\"Bewerken\",\"search\":\"Zoeken\",\"select\":\"Selecteer %{name} om te bewerken\",\"select_action\":\"Selecteer\",\"show_all\":\"Laat allen zien\"},\"new\":{\"basic_info\":\"Basisinfo\",\"cancel\":\"Annuleren\",\"chosen\":\"%{name} gekozen\",\"chose_all\":\"Kies allen\",\"clear_all\":\"Deselecteer allen\",\"many_chars\":\"tekens of minder.\",\"one_char\":\"teken.\",\"optional\":\"Optioneel\",\"required\":\"Vereist\",\"save\":\"Opslaan\",\"save_and_add_another\":\"Opslaan en een nieuwe toevoegen\",\"save_and_edit\":\"Opslaan en bewerken\",\"select_choice\":\"Selecteer uw keuzes en klik\"}},\"build\":{\"duration\":\"Duur\",\"finished_at\":\"Voltooid\",\"job\":\"Taak\"},\"builds\":{\"allowed_failures\":\"Toegestane mislukkingen\",\"author\":\"Auteur\",\"branch\":\"Tak\",\"build_matrix\":\"Bouw Matrix\",\"compare\":\"Vergelijk\",\"config\":\"Configuratie\",\"duration\":\"Duur\",\"finished_at\":\"Voltooid\",\"message\":\"Bericht\",\"messages\":{\"sponsored_by\":\"Deze tests zijn gedraaid op een machine gesponsord door\"},\"name\":\"Bouw\",\"started_at\":\"Gestart\",\"commit\":\"Commit\",\"committer\":\"Committer\"},\"datetime\":{\"distance_in_words\":{\"hours_exact\":{\"one\":\"%{count} uur\",\"other\":\"%{count} uren\"},\"minutes_exact\":{\"one\":\"%{count} minuut\",\"other\":\"%{count} minuten\"},\"seconds_exact\":{\"one\":\"%{count} seconde\",\"other\":\"%{count} seconden\"}}},\"devise\":{\"confirmations\":{\"confirmed\":\"Uw account is bevestigd. U wordt nu ingelogd.\",\"send_instructions\":\"Binnen enkele minuten zal u een email ontvangen met instructies om uw account te bevestigen.\"},\"failure\":{\"inactive\":\"Uw account is nog niet geactiveerd.\",\"invalid\":\"Ongeldig email adres of wachtwoord.\",\"invalid_token\":\"Ongeldig authenticatie token.\",\"locked\":\"Uw account is vergrendeld.\",\"timeout\":\"Uw sessie is verlopen, gelieve opnieuw in te loggen om verder te gaan.\",\"unauthenticated\":\"U moet inloggen of u registeren voordat u verder gaat.\",\"unconfirmed\":\"U moet uw account bevestigen voordat u verder gaat.\"},\"mailer\":{\"confirmation_instructions\":{\"subject\":\"Bevestigings-instructies\"},\"reset_password_instructions\":{\"subject\":\"Wachtwoord herstel instructies\"},\"unlock_instructions\":{\"subject\":\"Ontgrendel-instructies\"}},\"passwords\":{\"send_instructions\":\"Binnen enkele minuten zal u een email krijgen met instructies om uw wachtwoord opnieuw in te stellen.\",\"updated\":\"Uw wachtwoord is veranderd. U wordt nu ingelogd.\"},\"registrations\":{\"destroyed\":\"Dag! Uw account is geannuleerd. We hopen u vlug terug te zien.\",\"signed_up\":\"Uw registratie is voltooid. Als het ingeschakeld is wordt een bevestiging naar uw email adres verzonden.\",\"updated\":\"Het bijwerken van uw account is gelukt.\"},\"sessions\":{\"signed_in\":\"Inloggen gelukt.\",\"signed_out\":\"Uitloggen gelukt.\"},\"unlocks\":{\"send_instructions\":\"Binnen enkele minuten zal u een email krijgen met instructies om uw account te ontgrendelen.\",\"unlocked\":\"Uw account is ontgrendeld. U wordt nu ingelogd.\"}},\"errors\":{\"messages\":{\"already_confirmed\":\"was al bevestigd\",\"not_found\":\"niet gevonden\",\"not_locked\":\"was niet vergrendeld\"}},\"jobs\":{\"allowed_failures\":\"Toegestane mislukkingen\",\"author\":\"Auteur\",\"branch\":\"Tak\",\"build_matrix\":\"Bouw matrix\",\"compare\":\"Vergelijk\",\"config\":\"Configuratie\",\"duration\":\"Duur\",\"finished_at\":\"Voltooid\",\"message\":\"Bericht\",\"messages\":{\"sponsored_by\":\"Deze testen zijn uitgevoerd op een machine gesponsord door\"},\"started_at\":\"Gestart\",\"commit\":\"Commit\",\"committer\":\"Committer\"},\"layouts\":{\"about\":{\"alpha\":\"Dit is in alfa-stadium.\",\"join\":\"Doe met ons mee en help!\",\"mailing_list\":\"Mailing lijst\",\"messages\":{\"alpha\":\"Gelieve deze service niet te beschouwen als stabiel. Daar zijn we nog lang niet! Meer info hier. \"},\"repository\":\"Repository\",\"twitter\":\"Twitter\"},\"application\":{\"fork_me\":\"Maak een fork op Github\",\"my_repositories\":\"Mijn repositories\",\"recent\":\"Recent\",\"search\":\"Zoeken\",\"sponsers\":\"Sponsors\",\"sponsors_link\":\"Bekijk al onze geweldige sponsors →\"},\"mobile\":{\"author\":\"Auteur\",\"build\":\"Bouw\",\"build_matrix\":\"Bouw matrix\",\"compare\":\"Vergelijk\",\"config\":\"Configuratie\",\"duration\":\"Duur\",\"finished_at\":\"Voltooid op\",\"job\":\"Taak\",\"commit\":\"Commit\",\"committer\":\"Committer\",\"log\":\"Logboek\"},\"top\":{\"admin\":\"Administratie\",\"blog\":\"Blog\",\"docs\":\"Documentatie\",\"github_login\":\"Inloggen met Github\",\"home\":\"Home\",\"profile\":\"Profiel\",\"sign_out\":\"Uitloggen\",\"stats\":\"Statistieken\"}},\"locales\":{\"en\":\"English\",\"es\":\"Español\",\"fr\":\"Français\",\"ja\":\"日本語\",\"nb\":\"Norsk Bokmål\",\"nl\":\"Nederlands\",\"pl\":\"Polski\",\"ru\":\"Русский\",\"pt-BR\":\"português brasileiro\"},\"no_job\":\"Er zijn geen taken\",\"profiles\":{\"show\":{\"email\":\"Email adres\",\"github\":\"Github\",\"message\":{\"config\":\"hoe eigen bouw-opties in te stellen\",\"your_repos\":\"Zet de schakelaars hieronder aan om de Travis hook voor uw projecten te activeren en push daarna naar Github \\nOm te testen tegen meerdere rubies, zie\"},\"messages\":{\"notice\":\"Om te beginnen kunt u onze startersgids lezen.\\\\n Het zal maar enkele minuten van uw tijd vergen. \"},\"update\":\"Bijwerken\",\"update_locale\":\"Bijwerken\",\"your_locale\":\"Uw taal\",\"your_repos\":\"Uw repositories\",\"token\":\"Token\"}},\"queue\":\"Wachtrij\",\"repositories\":{\"branch\":\"Tak\",\"duration\":\"Duur\",\"finished_at\":\"Voltooid\",\"image_url\":\"Afbeeldings URL\",\"message\":\"Bericht\",\"started_at\":\"Gestart\",\"tabs\":{\"branches\":\"Tak samenvatting\",\"build\":\"Bouw\",\"build_history\":\"Bouw geschiedenis\",\"current\":\"Huidig\",\"job\":\"Taak\"},\"commit\":\"Commit\",\"markdown\":\"Markdown\",\"rdoc\":\"RDOC\",\"textile\":\"Textile\"},\"repository\":{\"duration\":\"Duur\"},\"statistics\":{\"index\":{\"build_count\":\"Bouw aantal\",\"count\":\"Aantal\",\"last_month\":\"voorbije maand\",\"repo_growth\":\"Repository groei\",\"total_builds\":\"Bouw totaal\",\"total_projects\":\"Projecten/Repository totaal\"}},\"workers\":\"Machines\",\"home\":{\"name\":\"Hoofdpagina\"}},\"pl\":{\"datetime\":{\"distance_in_words\":{\"hours_exact\":{\"one\":\"%{count} godzina\",\"other\":\"%{count} godziny\"},\"minutes_exact\":{\"one\":\"%{count} minuta\",\"other\":\"%{count} minuty\"},\"seconds_exact\":{\"one\":\"%{count} sekunda\",\"other\":\"%{count} sekundy\"}}},\"workers\":\"Workers\",\"queue\":\"Kolejka\",\"no_job\":\"Brak zadań\",\"repositories\":{\"branch\":\"Gałąź\",\"image_url\":\"URL obrazka\",\"markdown\":\"Markdown\",\"textile\":\"Textile\",\"rdoc\":\"RDOC\",\"commit\":\"Commit\",\"message\":\"Opis\",\"started_at\":\"Rozpoczęto\",\"duration\":\"Czas trwania\",\"finished_at\":\"Zakończono\",\"tabs\":{\"current\":\"Aktualny\",\"build_history\":\"Historia Buildów\",\"branches\":\"Wszystkie Gałęzie\",\"build\":\"Build\",\"job\":\"Zadanie\"}},\"build\":{\"job\":\"Zadanie\",\"duration\":\"Czas trwania\",\"finished_at\":\"Zakończono\"},\"jobs\":{\"messages\":{\"sponsored_by\":\"Te testy zostały uruchomione na maszynie sponsorowanej przez\"},\"build_matrix\":\"Macierz Buildów\",\"allowed_failures\":\"Dopuszczalne Niepowodzenia\",\"author\":\"Autor\",\"config\":\"Konfiguracja\",\"compare\":\"Porównanie\",\"committer\":\"Committer\",\"branch\":\"Gałąź\",\"commit\":\"Commit\",\"message\":\"Opis\",\"started_at\":\"Rozpoczęto\",\"duration\":\"Czas trwania\",\"finished_at\":\"Zakończono\",\"sponsored_by\":\"Te testy zostały uruchomione na maszynie sponsorowanej przez\"},\"builds\":{\"name\":\"Build\",\"messages\":{\"sponsored_by\":\"Te testy zostały uruchomione na maszynie sponsorowanej przez\"},\"build_matrix\":\"Macierz Buildów\",\"allowed_failures\":\"Dopuszczalne Niepowodzenia\",\"author\":\"Autor\",\"config\":\"Konfiguracja\",\"compare\":\"Porównanie\",\"committer\":\"Komitujący\",\"branch\":\"Gałąź\",\"commit\":\"Commit\",\"message\":\"Opis\",\"started_at\":\"Rozpoczęto\",\"duration\":\"Czas trwania\",\"finished_at\":\"Zakończono\"},\"layouts\":{\"top\":{\"home\":\"Start\",\"blog\":\"Blog\",\"docs\":\"Dokumentacja\",\"stats\":\"Statystki\",\"github_login\":\"Zaloguj się przy pomocy Githuba\",\"profile\":\"Profil\",\"sign_out\":\"Wyloguj się\"},\"application\":{\"fork_me\":\"Fork me on Github\",\"recent\":\"Ostatnie\",\"search\":\"Wyniki\",\"sponsers\":\"Sponsorzy\",\"sponsors_link\":\"Zobacz naszych wszystkich wspaniałych sponsorów →\",\"my_repositories\":\"Moje repozytoria\"},\"about\":{\"alpha\":\"To wciąż jest wersja alpha.\",\"messages\":{\"alpha\":\"Proszę nie traktuj tego jako stabilnej usługi. Wciąż nam wiele do tego brakuje! Więcej informacji znajdziesz tutaj. \"},\"join\":\"Pomóż i dołącz do nas!\",\"mailing_list\":\"Lista mailingowa\",\"repository\":\"Repozytorium\",\"twitter\":\"Twitter\"},\"mobile\":{\"author\":\"Autor\",\"build\":\"Build\",\"build_matrix\":\"Macierz Buildów\",\"commit\":\"Commit\",\"committer\":\"Komitujący\",\"compare\":\"Porównianie\",\"config\":\"Konfiguracja\",\"duration\":\"Czas trwania\",\"finished_at\":\"Zakończono\",\"job\":\"Zadanie\",\"log\":\"Log\"}},\"profiles\":{\"show\":{\"email\":\"Email\",\"github\":\"Github\",\"message\":{\"your_repos\":\" Przesuń suwak poniżej, aby włączyć Travisa, dla twoich projektów, a następnie umieść swój kod na GitHubie. \\n Aby testować swój kod przy użyciu wielu wersji Rubiego, zobacz\",\"config\":\"jak skonfigurować niestandardowe opcje builda\"},\"messages\":{\"notice\":\"Aby zacząć, przeczytaj nasz Przewodnik .\\n Zajmie ci to tylko kilka minut. \"},\"token\":\"Token\",\"your_repos\":\"Twoje repozytoria\"}},\"statistics\":{\"index\":{\"count\":\"Ilość\",\"repo_growth\":\"Przyrost repozytoriów\",\"total_projects\":\"Łącznie projektów/repozytoriów\",\"build_count\":\"Liczba buildów\",\"last_month\":\"ostatni miesiąc\",\"total_builds\":\"Łącznie Buildów\"}},\"date\":{\"abbr_day_names\":[\"nie\",\"pon\",\"wto\",\"śro\",\"czw\",\"pią\",\"sob\"],\"abbr_month_names\":[\"sty\",\"lut\",\"mar\",\"kwi\",\"maj\",\"cze\",\"lip\",\"sie\",\"wrz\",\"paź\",\"lis\",\"gru\"],\"day_names\":[\"niedziela\",\"poniedziałek\",\"wtorek\",\"środa\",\"czwartek\",\"piątek\",\"sobota\"],\"formats\":{\"default\":\"%d-%m-%Y\",\"long\":\"%B %d, %Y\",\"short\":\"%d %b\"},\"month_names\":[\"styczeń\",\"luty\",\"marzec\",\"kwiecień\",\"maj\",\"czerwiec\",\"lipiec\",\"sierpień\",\"wrzesień\",\"październik\",\"listopad\",\"grudzień\"],\"order\":[\"day\",\"month\",\"year\"]},\"errors\":{\"format\":\"%{attribute} %{message}\",\"messages\":{\"accepted\":\"musi zostać zaakceptowane\",\"blank\":\"nie może być puste\"}},\"locales\":{\"en\":\"English\",\"es\":\"Español\",\"ja\":\"日本語\",\"ru\":\"Русский\",\"fr\":\"Français\",\"nb\":\"Norsk Bokmål\",\"pl\":\"Polski\",\"nl\":\"Nederlands\",\"pt-BR\":\"português brasileiro\"}},\"pt-BR\":{\"admin\":{\"actions\":{\"create\":\"criar\",\"created\":\"criado\",\"delete\":\"deletar\",\"deleted\":\"deletado\",\"update\":\"atualizar\",\"updated\":\"atualizado\"},\"credentials\":{\"log_out\":\"Deslogar\"},\"dashboard\":{\"add_new\":\"Adicionar novo\",\"ago\":\"atrás\",\"last_used\":\"Última utilização\",\"model_name\":\"Nome do modelo\",\"modify\":\"Modificar\",\"name\":\"Dashboard\",\"pagename\":\"Administração do site\",\"records\":\"Registros\",\"show\":\"Mostrar\"},\"delete\":{\"confirmation\":\"Sim, tenho certeza\",\"flash_confirmation\":\"%{name} foi destruído com sucesso\"},\"flash\":{\"error\":\"%{name} falhou ao %{action}\",\"noaction\":\"Nenhuma ação foi tomada\",\"successful\":\"%{name} foi %{action} com sucesso\"},\"history\":{\"name\":\"Histórico\",\"no_activity\":\"Nenhuma Atividade\",\"page_name\":\"Histórico para %{name}\"},\"list\":{\"add_new\":\"Adicionar novo\",\"delete_action\":\"Deletar\",\"delete_selected\":\"Deletar selecionados\",\"edit_action\":\"Editar\",\"search\":\"Buscar\",\"select\":\"Selecionar %{name} para editar\",\"select_action\":\"Selecionar\",\"show_all\":\"Mostrar todos\"},\"new\":{\"basic_info\":\"Informações básicas\",\"cancel\":\"Cancelar\",\"chosen\":\"Escolhido %{name}\",\"chose_all\":\"Escolher todos\",\"clear_all\":\"Limpar todos\",\"many_chars\":\"caracteres ou menos.\",\"one_char\":\"caractere.\",\"optional\":\"Opcional\",\"required\":\"Requerido\",\"save\":\"Salvar\",\"save_and_add_another\":\"Salvar e adicionar outro\",\"save_and_edit\":\"Salvar e alterar\",\"select_choice\":\"Selecione e clique\"}},\"build\":{\"duration\":\"Duração\",\"finished_at\":\"Concluído em\",\"job\":\"Trabalho\"},\"builds\":{\"allowed_failures\":\"Falhas Permitidas\",\"author\":\"Autor\",\"branch\":\"Branch\",\"build_matrix\":\"Matriz de Build\",\"commit\":\"Commit\",\"committer\":\"Committer\",\"compare\":\"Comparar\",\"config\":\"Config\",\"duration\":\"Duração\",\"finished_at\":\"Concluído em\",\"message\":\"Mensagem\",\"messages\":{\"sponsored_by\":\"Esta série de testes foi executada em uma caixa de processos patrocinada por\"},\"name\":\"Build\",\"started_at\":\"Iniciou em\"},\"datetime\":{\"distance_in_words\":{\"hours_exact\":{\"one\":\"%{count} hora\",\"other\":\"%{count} horas\"},\"minutes_exact\":{\"one\":\"%{count} minuto\",\"other\":\"%{count} minutos\"},\"seconds_exact\":{\"one\":\"%{count} segundo\",\"other\":\"%{count} segundos\"}}},\"devise\":{\"confirmations\":{\"confirmed\":\"Sua conta foi confirmada com sucesso. Você agora está logado.\",\"send_instructions\":\"Você receberá um email com instruções de como confirmar sua conta em alguns minutos.\"},\"failure\":{\"inactive\":\"Sua conta ainda não foi ativada.\",\"invalid\":\"Email ou senha inválidos.\",\"invalid_token\":\"Token de autenticação inválido.\",\"locked\":\"Sua conta está trancada.\",\"timeout\":\"Sua sessão expirou, por favor faça seu login novamente.\",\"unauthenticated\":\"Você precisa fazer o login ou cadastrar-se antes de continuar.\",\"unconfirmed\":\"Você precisa confirmar sua conta antes de continuar.\"},\"mailer\":{\"confirmation_instructions\":{\"subject\":\"Instruções de confirmação\"},\"reset_password_instructions\":{\"subject\":\"Instruções de atualização de senha\"},\"unlock_instructions\":{\"subject\":\"Instruções de destrancamento\"}},\"passwords\":{\"send_instructions\":\"Você receberá um email com instruções de como atualizar sua senha em alguns minutos.\",\"updated\":\"Sua senha foi alterada com sucesso. Você agora está logado.\"},\"registrations\":{\"destroyed\":\"Tchau! Sua conta foi cancelada com sucesso. Esperamos vê-lo novamente em breve!\",\"signed_up\":\"Você se cadastrou com sucesso. Se ativada, uma confirmação foi enviada para seu email.\",\"updated\":\"Você atualizou sua conta com sucesso.\"},\"sessions\":{\"signed_in\":\"Logado com sucesso.\",\"signed_out\":\"Deslogado com sucesso.\"},\"unlocks\":{\"send_instructions\":\"Você receberá um email com instruções de como destrancar sua conta em alguns minutos.\",\"unlocked\":\"Sua conta foi destrancada com sucesso. Você agora está logado.\"}},\"errors\":{\"messages\":{\"already_confirmed\":\"já foi confirmado\",\"not_found\":\"não encontrado\",\"not_locked\":\"não estava trancado\"}},\"home\":{\"name\":\"home\"},\"jobs\":{\"allowed_failures\":\"Falhas Permitidas\",\"author\":\"Autor\",\"branch\":\"Branch\",\"build_matrix\":\"Matriz de Build\",\"commit\":\"Commit\",\"committer\":\"Committer\",\"compare\":\"Comparar\",\"config\":\"Config\",\"duration\":\"Duração\",\"finished_at\":\"Concluído em\",\"message\":\"Mensagem\",\"messages\":{\"sponsored_by\":\"Esta série de testes foi executada em uma caixa de processos patrocinada por\"},\"started_at\":\"Iniciou em\"},\"layouts\":{\"about\":{\"alpha\":\"Isto é um alpha.\",\"join\":\"Junte-se à nós e ajude!\",\"mailing_list\":\"Lista de email\",\"messages\":{\"alpha\":\"Por favor, não considere isto um serviço estável. Estamos muito longe disso! Mais informações aqui. \"},\"repository\":\"Repositório\",\"twitter\":\"Twitter\"},\"application\":{\"fork_me\":\"Faça fork no Github\",\"my_repositories\":\"Meus Repositórios\",\"recent\":\"Recentes\",\"search\":\"Buscar\",\"sponsers\":\"Patrocinadores\",\"sponsors_link\":\"Conheça todos os nossos patrocinadores →\"},\"mobile\":{\"author\":\"Autor\",\"build\":\"Build\",\"build_matrix\":\"Matriz de Build\",\"commit\":\"Commit\",\"committer\":\"Committer\",\"compare\":\"Comparar\",\"config\":\"Config\",\"duration\":\"Duração\",\"finished_at\":\"Concluído em\",\"job\":\"Trabalho\",\"log\":\"Log\"},\"top\":{\"admin\":\"Admin\",\"blog\":\"Blog\",\"docs\":\"Documentação\",\"github_login\":\"Logue com o Github\",\"home\":\"Home\",\"profile\":\"Perfil\",\"sign_out\":\"Sair\",\"stats\":\"Estatísticas\"}},\"locales\":{\"en\":\"English\",\"es\":\"Español\",\"fr\":\"Français\",\"ja\":\"日本語\",\"nb\":\"Norsk Bokmål\",\"nl\":\"Nederlands\",\"pl\":\"Polski\",\"ru\":\"Русский\",\"pt-BR\":\"português brasileiro\"},\"no_job\":\"Não há trabalhos\",\"profiles\":{\"show\":{\"email\":\"Email\",\"github\":\"Github\",\"message\":{\"config\":\"como configurar opções de build\",\"your_repos\":\"Use os botões abaixo para ligar ou desligar o hook de serviço do Travis para seus projetos, e então, faça um push para o Github. Para testar com múltiplas versões do Ruby, leia\"},\"messages\":{\"notice\":\"Para começar, leia nosso Guia de início . Só leva alguns minutinhos. \"},\"token\":\"Token\",\"update\":\"Atualizar\",\"update_locale\":\"Atualizar\",\"your_locale\":\"Sua língua\",\"your_repos\":\"Seus Repositórios\"}},\"queue\":\"Fila\",\"repositories\":{\"branch\":\"Branch\",\"commit\":\"Commit\",\"duration\":\"Duração\",\"finished_at\":\"Concluído em\",\"image_url\":\"URL da imagem\",\"markdown\":\"Markdown\",\"message\":\"Mensagem\",\"rdoc\":\"RDOC\",\"started_at\":\"Iniciou em\",\"tabs\":{\"branches\":\"Sumário do Branch\",\"build\":\"Build\",\"build_history\":\"Histórico de Build\",\"current\":\"Atual\",\"job\":\"Trabalho\"},\"textile\":\"Textile\"},\"repository\":{\"duration\":\"Duração\"},\"statistics\":{\"index\":{\"build_count\":\"Número de Builds\",\"count\":\"Número\",\"last_month\":\"último mês\",\"repo_growth\":\"Crescimento de Repositório\",\"total_builds\":\"Total de Builds\",\"total_projects\":\"Total de Projetos/Repositórios\"}},\"workers\":\"Processos\"},\"ru\":{\"admin\":{\"actions\":{\"create\":\"создать\",\"created\":\"создано\",\"delete\":\"удалить\",\"deleted\":\"удалено\",\"update\":\"обновить\",\"updated\":\"обновлено\"},\"credentials\":{\"log_out\":\"Выход\"},\"dashboard\":{\"add_new\":\"Добавить\",\"ago\":\"назад\",\"last_used\":\"Использовалось в последний раз\",\"model_name\":\"Имя модели\",\"modify\":\"Изменить\",\"name\":\"Панель управления\",\"pagename\":\"Управление сайтом\",\"records\":\"Записи\",\"show\":\"Показать\"},\"delete\":{\"confirmation\":\"Да, я уверен\",\"flash_confirmation\":\"%{name} успешно удалено\"},\"history\":{\"name\":\"История\",\"no_activity\":\"Нет активности\",\"page_name\":\"История %{name}\"},\"list\":{\"add_new\":\"Добавить\",\"delete_action\":\"Удалить\",\"delete_selected\":\"Удалить выбранные\",\"edit_action\":\"Редактировать\",\"search\":\"Поиск\",\"select\":\"Для редактирования выберите %{name}\",\"select_action\":\"Выбрать\",\"show_all\":\"Показать все\"},\"new\":{\"basic_info\":\"Основная информация\",\"cancel\":\"Отмена\",\"chosen\":\"Выбрано %{name}\",\"chose_all\":\"Выбрать все\",\"clear_all\":\"Очистить все\",\"one_char\":\"символ.\",\"optional\":\"Необязательно\",\"required\":\"Обязательно\",\"save\":\"Сохранить\",\"save_and_add_another\":\"Сохранить и добавить другое\",\"save_and_edit\":\"Сохранить и продолжить редактирование\",\"select_choice\":\"Выберите и кликните\",\"many_chars\":\"символов или меньше.\"},\"flash\":{\"error\":\"%{name} не удалось %{action}\",\"noaction\":\"Никаких действий не произведено\",\"successful\":\"%{name} было успешно %{action}\"}},\"build\":{\"duration\":\"Длительность\",\"finished_at\":\"Завершен\",\"job\":\"Задача\"},\"builds\":{\"allowed_failures\":\"Допустимые неудачи\",\"author\":\"Автор\",\"branch\":\"Ветка\",\"build_matrix\":\"Матрица\",\"commit\":\"Коммит\",\"committer\":\"Коммитер\",\"compare\":\"Дифф\",\"config\":\"Конфигурация\",\"duration\":\"Длительность\",\"finished_at\":\"Завершен\",\"message\":\"Комментарий\",\"messages\":{\"sponsored_by\":\"Эта серия тестов была запущена на машине, спонсируемой\"},\"name\":\"Билд\",\"started_at\":\"Начало\"},\"datetime\":{\"distance_in_words\":{\"hours_exact\":{\"one\":\"%{count} час\",\"few\":\"%{count} часа\",\"many\":\"%{count} часов\",\"other\":\"%{count} часа\"},\"minutes_exact\":{\"one\":\"%{count} минута\",\"few\":\"%{count} минуты\",\"many\":\"%{count} минут\",\"other\":\"%{count} минуты\"},\"seconds_exact\":{\"one\":\"%{count} секунда\",\"few\":\"%{count} секунды\",\"many\":\"%{count} секунд\",\"other\":\"%{count} секунды\"}}},\"devise\":{\"confirmations\":{\"confirmed\":\"Ваш аккаунт успешно подтвержден. Приветствуем!\",\"send_instructions\":\"В течении нескольких минут вы получите электронное письмо с инструкциями для прохождения процедуры подтверждения аккаунта.\"},\"failure\":{\"inactive\":\"Ваш аккаунт еще не активирован.\",\"invalid\":\"Ошибка в адресе почты или пароле.\",\"invalid_token\":\"Неправильный токен аутентификации.\",\"locked\":\"Ваш аккаунт заблокирован.\",\"timeout\":\"Сессия окончена. Для продолжения работы войдите снова.\",\"unauthenticated\":\"Вам нужно войти или зарегистрироваться.\",\"unconfirmed\":\"Вы должны сначала подтвердить свой аккаунт.\"},\"mailer\":{\"confirmation_instructions\":{\"subject\":\"Инструкции для подтверждению аккаунта\"},\"reset_password_instructions\":{\"subject\":\"Инструкции для сброса пароля\"},\"unlock_instructions\":{\"subject\":\"Инструкции для разблокирования аккаунта\"}},\"passwords\":{\"send_instructions\":\"В течении нескольких минут вы получите электронное письмо с инструкциями для сброса пароля.\",\"updated\":\"Ваш пароль успешно изменен. Приветствуем!\"},\"registrations\":{\"destroyed\":\"Ваш аккаунт был успешно удален. Живите долго и процветайте!\",\"signed_up\":\"Вы успешно прошли регистрацию. Инструкции для подтверждения аккаунта отправлены на ваш электронный адрес.\",\"updated\":\"Аккаунт успешно обновлен.\"},\"sessions\":{\"signed_in\":\"Приветствуем!\",\"signed_out\":\"Удачи!\"},\"unlocks\":{\"send_instructions\":\"В течении нескольких минут вы получите электронное письмо с инструкциям для разблокировния аккаунта.\",\"unlocked\":\"Ваш аккаунт успешно разблокирован. Приветствуем!\"}},\"errors\":{\"messages\":{\"already_confirmed\":\"уже подтвержден\",\"not_found\":\"не найден\",\"not_locked\":\"не заблокирован\"}},\"home\":{\"name\":\"Главная\"},\"jobs\":{\"allowed_failures\":\"Допустимые неудачи\",\"author\":\"Автор\",\"branch\":\"Ветка\",\"build_matrix\":\"Матрица\",\"commit\":\"Коммит\",\"committer\":\"Коммитер\",\"compare\":\"Сравнение\",\"config\":\"Конфигурация\",\"duration\":\"Длительность\",\"finished_at\":\"Завершен\",\"message\":\"Комментарий\",\"messages\":{\"sponsored_by\":\"Эта серия тестов была запущена на машине спонсируемой\"},\"started_at\":\"Начало\"},\"layouts\":{\"about\":{\"alpha\":\"Это альфа-версия\",\"join\":\"Присоединяйтесь к нам и помогайте!\",\"mailing_list\":\"Лист рассылки\",\"messages\":{\"alpha\":\"Пожалуйста, не считайте данный сервис стабильным. Мы еще очень далеки от стабильности! Подробности \"},\"repository\":\"Репозиторий\",\"twitter\":\"Twitter\"},\"application\":{\"fork_me\":\"Fork me on Github\",\"my_repositories\":\"Мои репозитории\",\"recent\":\"Недавние\",\"search\":\"Поиск\",\"sponsers\":\"Спонсоры\",\"sponsors_link\":\"Список всех наших замечательных спонсоров →\"},\"mobile\":{\"author\":\"Автор\",\"build\":\"Сборка\",\"build_matrix\":\"Матрица сборок\",\"commit\":\"Коммит\",\"committer\":\"Коммитер\",\"compare\":\"Сравнение\",\"config\":\"Конфигурация\",\"duration\":\"Длительность\",\"finished_at\":\"Завершен\",\"job\":\"Задача\",\"log\":\"Журнал\"},\"top\":{\"admin\":\"Управление\",\"blog\":\"Блог\",\"docs\":\"Документация\",\"github_login\":\"Войти через Github\",\"home\":\"Главная\",\"profile\":\"Профиль\",\"sign_out\":\"Выход\",\"stats\":\"Статистика\"}},\"no_job\":\"Очередь пуста\",\"profiles\":{\"show\":{\"email\":\"Электронная почта\",\"github\":\"Github\",\"message\":{\"config\":\"как настроить специальные опции билда\",\"your_repos\":\"Используйте переключатели, чтобы включить Travis service hook для вашего проекта, а потом отправьте код на GitHub. \\nДля тестирования на нескольких версиях Ruby смотрите\"},\"messages\":{\"notice\":\"Перед началом, пожалуйста, прочтите Руководство для быстрого старта . Это займет всего несколько минут. \"},\"token\":\"Токен\",\"update\":\"Обновить\",\"update_locale\":\"Обновить\",\"your_locale\":\"Ваш язык\",\"your_repos\":\"Ваши репозитории\"}},\"queue\":\"Очередь\",\"repositories\":{\"branch\":\"Ветка\",\"commit\":\"Коммит\",\"duration\":\"Длительность\",\"finished_at\":\"Завершен\",\"image_url\":\"URL изображения\",\"markdown\":\"Markdown\",\"message\":\"Комментарий\",\"rdoc\":\"RDOC\",\"started_at\":\"Начало\",\"tabs\":{\"branches\":\"Статус веток\",\"build\":\"Билд\",\"build_history\":\"История\",\"current\":\"Текущий\",\"job\":\"Задача\"},\"textile\":\"Textile\"},\"repository\":{\"duration\":\"Длительность\"},\"statistics\":{\"index\":{\"build_count\":\"Количество билдов\",\"count\":\"Количество\",\"last_month\":\"прошлый месяц\",\"repo_growth\":\"Рост числа репозиториев\",\"total_builds\":\"Всего билдов\",\"total_projects\":\"Всего проектов/репозиториев\"}},\"workers\":\"Машины\",\"locales\":{\"en\":\"English\",\"es\":\"Español\",\"ja\":\"日本語\",\"ru\":\"Русский\",\"fr\":\"Français\",\"nb\":\"Norsk Bokmål\",\"pl\":\"Polski\",\"nl\":\"Nederlands\",\"pt-BR\":\"português brasileiro\"}}};\n\n\n})();\n//@ sourceURL=config/locales");minispade.register('ext/ember/bound_helper', "(function() {// https://gist.github.com/2018185\n// For reference: https://github.com/wagenet/ember.js/blob/ac66dcb8a1cbe91d736074441f853e0da474ee6e/packages/ember-handlebars/lib/views/bound_property_view.js\nvar BoundHelperView = Ember.View.extend(Ember._Metamorph, {\n\n context: null,\n options: null,\n property: null,\n // paths of the property that are also observed\n propertyPaths: [],\n\n value: Ember.K,\n\n valueForRender: function() {\n var value = this.value(Ember.get(this.context, this.property), this.options);\n if (this.options.escaped) { value = Handlebars.Utils.escapeExpression(value); }\n return value;\n },\n\n render: function(buffer) {\n buffer.push(this.valueForRender());\n },\n\n valueDidChange: function() {\n if (this.morph.isRemoved()) { return; }\n this.morph.html(this.valueForRender());\n },\n\n didInsertElement: function() {\n this.valueDidChange();\n },\n\n init: function() {\n this._super();\n Ember.addObserver(this.context, this.property, this, 'valueDidChange');\n this.get('propertyPaths').forEach(function(propName) {\n Ember.addObserver(this.context, this.property + '.' + propName, this, 'valueDidChange');\n }, this);\n },\n\n destroy: function() {\n Ember.removeObserver(this.context, this.property, this, 'valueDidChange');\n this.get('propertyPaths').forEach(function(propName) {\n this.context.removeObserver(this.property + '.' + propName, this, 'valueDidChange');\n }, this);\n this._super();\n }\n\n});\n\nEmber.registerBoundHelper = function(name, func) {\n var propertyPaths = Array.prototype.slice.call(arguments, 2);\n Ember.Handlebars.registerHelper(name, function(property, options) {\n var data = options.data,\n view = data.view,\n ctx = this;\n\n var bindView = view.createChildView(BoundHelperView, {\n property: property,\n propertyPaths: propertyPaths,\n context: ctx,\n options: options.hash,\n value: func\n });\n\n view.appendChild(bindView);\n });\n};\n\n\n})();\n//@ sourceURL=ext/ember/bound_helper");minispade.register('ext/ember/namespace', "(function() {Em.Namespace.reopen = Em.Namespace.reopenClass\n\n\n\n})();\n//@ sourceURL=ext/ember/namespace");
\ No newline at end of file
diff --git a/public/scripts/app.min.js b/public/scripts/app.min.js
index 67b9eec3..2e2ebb96 100644
--- a/public/scripts/app.min.js
+++ b/public/scripts/app.min.js
@@ -16,6 +16,6 @@ s||o>s+this.height)c=!0;return c?null:r.renderer.crispLine(["M",n,o,"L",u,a],t||
n.responseText)}r&&t(!1,e)}else Pusher.warn("Couldn't get auth info from your webapp",n.status),t(!0,n.status)},n.send(this.composeQuery(e)),n},jsonp:function(e,t){this.authOptions.headers!==void 0&&Pusher.warn("Warn","To send headers with the auth request, you must use AJAX, rather than JSONP.");var n=document.createElement("script");Pusher.auth_callbacks[this.channel.name]=function(e){t(!1,e)},n.src=Pusher.channel_auth_endpoint+"?callback="+encodeURIComponent("Pusher.auth_callbacks['"+this.channel.name+"']")+this.composeQuery(e);var r=document.getElementsByTagName("head")[0]||document.documentElement;r.insertBefore(n,r.firstChild)}}}.call(this);var _require=function(){function e(e,t){document.addEventListener?e.addEventListener("load",t,!1):e.attachEvent("onreadystatechange",function(){(e.readyState=="loaded"||e.readyState=="complete")&&t()})}function t(t,n){var r=document.getElementsByTagName("head")[0],i=document.createElement("script");i.setAttribute("src",t),i.setAttribute("type","text/javascript"),i.setAttribute("async",!0),e(i,function(){n()}),r.appendChild(i)}return function(e,n){for(var r=0,i=0;i0?_require(t,i):i()})();;minispade.register("app","(function() {(function() {\nminispade.require('auth');\nminispade.require('controllers');\nminispade.require('helpers');\nminispade.require('models');\nminispade.require('pusher');\nminispade.require('routes');\nminispade.require('slider');\nminispade.require('store');\nminispade.require('tailing');\nminispade.require('templates');\nminispade.require('views');\nminispade.require('config/locales');\nminispade.require('data/sponsors');\n\n Travis.reopen({\n App: Em.Application.extend({\n autoinit: false,\n currentUserBinding: 'auth.user',\n authStateBinding: 'auth.state',\n init: function() {\n this._super.apply(this, arguments);\n this.store = Travis.Store.create();\n this.store.loadMany(Travis.Sponsor, Travis.SPONSORS);\n this.set('auth', Travis.Auth.create({\n store: this.store,\n endpoint: Travis.config.api_endpoint\n }));\n this.slider = new Travis.Slider();\n this.pusher = new Travis.Pusher(Travis.config.pusher);\n return this.tailing = new Travis.Tailing();\n },\n signIn: function() {\n return this.get('auth').signIn();\n },\n signOut: function() {\n this.get('auth').signOut();\n return this.get('router').send('showAuthenticated');\n },\n receive: function() {\n return this.store.receive.apply(this.store, arguments);\n },\n toggleSidebar: function() {\n var element;\n $('body').toggleClass('maximized');\n element = $(' ');\n $('#top .profile').append(element);\n Em.run.later((function() {\n return element.remove();\n }), 10);\n element = $(' ');\n $('#repository').append(element);\n return Em.run.later((function() {\n return element.remove();\n }), 10);\n }\n })\n });\n\n}).call(this);\n\n})();\n//@ sourceURL=app"),minispade.register("auth","(function() {(function() {\n\n this.Travis.Auth = Ember.Object.extend({\n iframe: $('').hide(),\n timeout: 5000,\n state: 'signed-out',\n receivingEnd: \"\" + location.protocol + \"//\" + location.host,\n init: function() {\n var _this = this;\n this.iframe.appendTo('body');\n window.addEventListener('message', function(e) {\n return _this.receiveMessage(e);\n });\n return this.loadUser();\n },\n accessToken: (function() {\n return sessionStorage.getItem('travis.token');\n }).property(),\n loadUser: function() {\n var user;\n if (user = typeof sessionStorage !== \"undefined\" && sessionStorage !== null ? sessionStorage.getItem('travis.user') : void 0) {\n return this.setData({\n user: JSON.parse(user)\n });\n } else if (typeof localStorage !== \"undefined\" && localStorage !== null ? localStorage.getItem('travis.auto_signin') : void 0) {\n return this.trySignIn();\n }\n },\n signIn: function() {\n this.set('state', 'signing-in');\n this.trySignIn();\n return Ember.run.later(this, this.checkSignIn.bind(this), this.timeout);\n },\n trySignIn: function() {\n return this.iframe.attr('src', \"\" + this.endpoint + \"/auth/post_message?origin=\" + this.receivingEnd);\n },\n checkSignIn: function() {\n if (this.get('state') === 'signing-in') {\n return this.forceSignIn();\n }\n },\n forceSignIn: function() {\n if (typeof localStorage !== \"undefined\" && localStorage !== null) {\n localStorage.setItem('travis.auto_signin', 'true');\n }\n return window.location = \"\" + this.endpoint + \"/auth/handshake?redirect_uri=\" + location;\n },\n signOut: function() {\n if (typeof localStorage !== \"undefined\" && localStorage !== null) {\n localStorage.clear();\n }\n if (typeof sessionStorage !== \"undefined\" && sessionStorage !== null) {\n sessionStorage.clear();\n }\n return this.setData();\n },\n setData: function(data) {\n var user;\n if (typeof data === 'string') {\n data = JSON.parse(data);\n }\n if (data != null ? data.token : void 0) {\n this.storeToken(data.token);\n }\n if (data != null ? data.user : void 0) {\n user = this.storeUser(data.user);\n }\n this.set('state', user ? 'signed-in' : 'signed-out');\n return this.set('user', user ? user : void 0);\n },\n storeToken: function(token) {\n if (typeof sessionStorage !== \"undefined\" && sessionStorage !== null) {\n sessionStorage.setItem('travis.token', token);\n }\n return this.notifyPropertyChange('accessToken');\n },\n storeUser: function(user) {\n if (typeof localStorage !== \"undefined\" && localStorage !== null) {\n localStorage.setItem('travis.auto_signin', 'true');\n }\n if (typeof sessionStorage !== \"undefined\" && sessionStorage !== null) {\n sessionStorage.setItem('travis.user', JSON.stringify(user));\n }\n this.store.load(Travis.User, user);\n return this.store.find(Travis.User, user.id);\n },\n receiveMessage: function(event) {\n if (event.origin === this.expectedOrigin()) {\n this.setData(event.data);\n return console.log(\"signed in as \" + event.data.user.login);\n } else {\n return console.log(\"unexpected message \" + event.origin + \": \" + event.data);\n }\n },\n expectedOrigin: function() {\n if (this.endpoint[0] === '/') {\n return this.receivingEnd;\n } else {\n return this.endpoint;\n }\n }\n });\n\n}).call(this);\n\n})();\n//@ sourceURL=auth"),minispade.register("controllers","(function() {(function() {\nminispade.require('helpers');\nminispade.require('travis/ticker');\n\n Travis.reopen({\n Controller: Em.Controller.extend({\n connectOutlet: function() {\n var view, _connectedOutletViews;\n view = this._super.apply(this, arguments);\n if (view) {\n _connectedOutletViews = Travis.app.get('_connectedOutletViews');\n if (!_connectedOutletViews) {\n _connectedOutletViews = [];\n }\n _connectedOutletViews.pushObject(view);\n Travis.app.set('_connectedOutletViews', _connectedOutletViews);\n }\n return view;\n }\n }),\n TopController: Em.Controller.extend({\n userBinding: 'Travis.app.currentUser'\n }),\n ApplicationController: Em.Controller.extend(),\n MainController: Em.Controller.extend(),\n StatsLayoutController: Em.Controller.extend(),\n ProfileLayoutController: Em.Controller.extend()\n });\nminispade.require('controllers/accounts');\nminispade.require('controllers/builds');\nminispade.require('controllers/home');\nminispade.require('controllers/profile');\nminispade.require('controllers/repositories');\nminispade.require('controllers/repository');\nminispade.require('controllers/sidebar');\nminispade.require('controllers/stats');\n\n}).call(this);\n\n})();\n//@ sourceURL=controllers"),minispade.register("controllers/accounts","(function() {(function() {\n\n Travis.AccountsController = Ember.ArrayController.extend({\n tab: 'accounts',\n init: function() {\n return this._super();\n },\n findByLogin: function(login) {\n return this.find(function(account) {\n return account.get('login') === 'login';\n });\n }\n });\n\n}).call(this);\n\n})();\n//@ sourceURL=controllers/accounts"),minispade.register("controllers/builds","(function() {(function() {\n\n Travis.BuildsController = Em.ArrayController.extend({\n repositoryBinding: 'parent.repository',\n contentBinding: 'parent.builds'\n });\n\n}).call(this);\n\n})();\n//@ sourceURL=controllers/builds"),minispade.register("controllers/home","(function() {(function() {\n\n Travis.HomeController = Travis.Controller.extend();\n\n}).call(this);\n\n})();\n//@ sourceURL=controllers/home"),minispade.register("controllers/job","(function() {(function() {\n\n\n\n}).call(this);\n\n})();\n//@ sourceURL=controllers/job"),minispade.register("controllers/profile","(function() {(function() {\n\n Travis.ProfileController = Travis.Controller.extend({\n name: 'profile',\n userBinding: 'Travis.app.currentUser',\n accountsBinding: 'Travis.app.router.accountsController',\n account: (function() {\n var login;\n login = this.get('params.login') || Travis.app.get('currentUser.login');\n return this.get('accounts').filter(function(account) {\n if (account.get('login') === login) {\n return account;\n }\n })[0];\n }).property('accounts.length', 'params.login'),\n activate: function(action, params) {\n this.setParams(params || this.get('params'));\n return this[\"view\" + ($.camelize(action))]();\n },\n viewHooks: function() {\n this.connectTab('hooks');\n return this.set('hooks', Travis.Hook.find({\n owner_name: this.get('params.login') || Travis.app.get('currentUser.login')\n }));\n },\n viewUser: function() {\n return this.connectTab('user');\n },\n connectTab: function(tab) {\n var viewClass;\n viewClass = Travis[\"\" + ($.camelize(tab)) + \"View\"];\n this.set('tab', tab);\n return this.connectOutlet({\n outletName: 'pane',\n controller: this,\n viewClass: viewClass\n });\n },\n setParams: function(params) {\n var key, value, _results;\n this.set('params', {});\n _results = [];\n for (key in params) {\n value = params[key];\n _results.push(this.set(\"params.\" + key, params[key]));\n }\n return _results;\n }\n });\n\n}).call(this);\n\n})();\n//@ sourceURL=controllers/profile"),minispade.register("controllers/repositories","(function() {(function() {\n\n Travis.RepositoriesController = Ember.ArrayController.extend({\n defaultTab: 'recent',\n sortProperties: ['sortOrder'],\n init: function() {\n this.activate(this.defaultTab);\n return Ember.run.later(this.updateTimes.bind(this), Travis.INTERVALS.updateTimes);\n },\n updateTimes: function() {\n var content;\n if (content = this.get('content')) {\n content.forEach(function(r) {\n return r.updateTimes();\n });\n }\n return Ember.run.later(this.updateTimes.bind(this), Travis.INTERVALS.updateTimes);\n },\n activate: function(tab, params) {\n this.set('tab', tab);\n return this[\"view\" + ($.camelize(tab))](params);\n },\n viewRecent: function() {\n return this.set('content', Travis.Repository.find());\n },\n viewOwned: function() {\n return this.set('content', Travis.Repository.ownedBy(Travis.app.get('currentUser.login')));\n },\n viewSearch: function(params) {\n return this.set('content', Travis.Repository.search(params.search));\n },\n searchObserver: (function() {\n var search, tab;\n search = this.get('search');\n tab = search ? 'search' : 'recent';\n return this.activate(tab, {\n search: search\n });\n }).observes('search')\n });\n\n}).call(this);\n\n})();\n//@ sourceURL=controllers/repositories"),minispade.register("controllers/repository","(function() {(function() {\n\n Travis.RepositoryController = Travis.Controller.extend({\n bindings: [],\n init: function() {\n this._super.apply(this, arguments);\n return Ember.run.later(this.updateTimes.bind(this), Travis.INTERVALS.updateTimes);\n },\n updateTimes: function() {\n var build, builds;\n if (builds = this.get('builds')) {\n builds.forEach(function(b) {\n return b.updateTimes();\n });\n }\n if (build = this.get('build')) {\n build.updateTimes();\n build.get('jobs').forEach(function(j) {\n return j.updateTimes();\n });\n }\n return Ember.run.later(this.updateTimes.bind(this), Travis.INTERVALS.updateTimes);\n },\n activate: function(action) {\n this._unbind();\n return this[\"view\" + ($.camelize(action))]();\n },\n viewIndex: function() {\n this._bind('repository', 'controllers.repositoriesController.firstObject');\n this._bind('build', 'repository.lastBuild');\n return this.connectTab('current');\n },\n viewCurrent: function() {\n this.connectTab('current');\n return this._bind('build', 'repository.lastBuild');\n },\n viewBuilds: function() {\n this.connectTab('builds');\n return this._bind('builds', 'repository.builds');\n },\n viewPullRequests: function() {\n this.connectTab('pull_requests');\n return this._bind('builds', 'repository.pullRequests');\n },\n viewBranches: function() {\n this.connectTab('branches');\n return this._bind('builds', 'repository.branches');\n },\n viewBuild: function() {\n return this.connectTab('build');\n },\n viewJob: function() {\n this._bind('build', 'job.build');\n return this.connectTab('job');\n },\n repositoryObserver: (function() {\n var repository;\n repository = this.get('repository');\n if (repository) {\n return repository.select();\n }\n }).observes('repository.id'),\n connectTab: function(tab) {\n var name, viewClass;\n name = tab === 'current' ? 'build' : tab;\n viewClass = name === 'builds' || name === 'branches' || name === 'pull_requests' ? Travis.BuildsView : Travis[\"\" + ($.camelize(name)) + \"View\"];\n this.set('tab', tab);\n return this.connectOutlet({\n outletName: 'pane',\n controller: this,\n viewClass: viewClass\n });\n },\n _bind: function(to, from) {\n return this.bindings.push(Ember.oneWay(this, to, from));\n },\n _unbind: function() {\n var binding, _i, _len, _ref;\n _ref = this.bindings;\n for (_i = 0, _len = _ref.length; _i < _len; _i++) {\n binding = _ref[_i];\n binding.disconnect(this);\n }\n return this.bindings.length = 0;\n }\n });\n\n}).call(this);\n\n})();\n//@ sourceURL=controllers/repository"),minispade.register("controllers/sidebar","(function() {(function() {\n\n Travis.reopen({\n SidebarController: Em.ArrayController.extend({\n init: function() {\n this.tickables = [];\n return Travis.Ticker.create({\n target: this,\n interval: Travis.INTERVALS.sponsors\n });\n },\n tick: function() {\n var tickable, _i, _len, _ref, _results;\n _ref = this.tickables;\n _results = [];\n for (_i = 0, _len = _ref.length; _i < _len; _i++) {\n tickable = _ref[_i];\n _results.push(tickable.tick());\n }\n return _results;\n }\n }),\n QueuesController: Em.ArrayController.extend(),\n WorkersController: Em.ArrayController.extend({\n groups: (function() {\n var content, groups, host, worker, _i, _len, _ref;\n if (content = this.get('content')) {\n groups = {};\n _ref = content.toArray();\n for (_i = 0, _len = _ref.length; _i < _len; _i++) {\n worker = _ref[_i];\n host = worker.get('host');\n if (!groups[host]) {\n groups[host] = Em.ArrayProxy.create({\n content: []\n });\n }\n groups[host].pushObject(worker);\n }\n return $.values(groups);\n }\n }).property('content.length')\n }),\n SponsorsController: Em.ArrayController.extend({\n page: 0,\n arrangedContent: (function() {\n return this.get('shuffled').slice(this.start(), this.end());\n }).property('shuffled.length', 'page'),\n shuffled: (function() {\n var content;\n if (content = this.get('content')) {\n return $.shuffle(content);\n } else {\n return [];\n }\n }).property('content.length'),\n tick: function() {\n return this.set('page', this.isLast() ? 0 : this.get('page') + 1);\n },\n pages: (function() {\n var length;\n length = this.get('content.length');\n if (length) {\n return parseInt(length / this.get('perPage') + 1);\n } else {\n return 1;\n }\n }).property('length'),\n isLast: function() {\n return this.get('page') === this.get('pages') - 1;\n },\n start: function() {\n return this.get('page') * this.get('perPage');\n },\n end: function() {\n return this.start() + this.get('perPage');\n }\n })\n });\n\n}).call(this);\n\n})();\n//@ sourceURL=controllers/sidebar"),minispade.register("controllers/stats","(function() {(function() {\n\n Travis.StatsController = Travis.Controller.extend({\n name: 'stats',\n init: function() {\n return this._super('top');\n },\n activate: function(action, params) {}\n });\n\n}).call(this);\n\n})();\n//@ sourceURL=controllers/stats"),minispade.register("helpers","(function() {(function() {\nminispade.require('helpers/handlebars');\nminispade.require('helpers/helpers');\nminispade.require('helpers/urls');\n\n}).call(this);\n\n})();\n//@ sourceURL=helpers"),minispade.register("helpers/handlebars","(function() {(function() {\n var safe;\nminispade.require('ext/ember/bound_helper');\n\n safe = function(string) {\n return new Handlebars.SafeString(string);\n };\n\n Handlebars.registerHelper('tipsy', function(text, tip) {\n return safe('' + text + ' ');\n });\n\n Handlebars.registerHelper('t', function(key) {\n return safe(I18n.t(key));\n });\n\n Ember.registerBoundHelper('formatTime', function(value, options) {\n return safe(Travis.Helpers.timeAgoInWords(value) || '-');\n });\n\n Ember.registerBoundHelper('formatDuration', function(duration, options) {\n return safe(Travis.Helpers.timeInWords(duration));\n });\n\n Ember.registerBoundHelper('formatCommit', function(commit, options) {\n if (commit) {\n return safe(Travis.Helpers.formatCommit(commit.get('sha'), commit.get('branch')));\n }\n });\n\n Ember.registerBoundHelper('formatSha', function(sha, options) {\n return safe(Travis.Helpers.formatSha(sha));\n });\n\n Ember.registerBoundHelper('pathFrom', function(url, options) {\n return safe(Travis.Helpers.pathFrom(url));\n });\n\n Ember.registerBoundHelper('formatMessage', function(message, options) {\n return safe(Travis.Helpers.formatMessage(message, options));\n });\n\n Ember.registerBoundHelper('formatConfig', function(config, options) {\n return safe(Travis.Helpers.formatConfig(config));\n });\n\n Ember.registerBoundHelper('formatLog', function(log, options) {\n return Travis.Helpers.formatLog(log) || '';\n });\n\n}).call(this);\n\n})();\n//@ sourceURL=helpers/handlebars"),minispade.register("helpers/helpers","(function() {(function() {\nminispade.require('travis/log');\nminispade.require('emoij');\n\n this.Travis.Helpers = {\n compact: function(object) {\n var key, result, value, _ref;\n result = {};\n _ref = object || {};\n for (key in _ref) {\n value = _ref[key];\n if (!$.isEmpty(value)) {\n result[key] = value;\n }\n }\n return result;\n },\n safe: function(string) {\n return new Handlebars.SafeString(string);\n },\n colorForResult: function(result) {\n if (result === 0) {\n return 'green';\n } else {\n if (result === 1) {\n return 'red';\n } else {\n return null;\n }\n }\n },\n formatCommit: function(sha, branch) {\n return Travis.Helpers.formatSha(sha) + (branch ? \" (\" + branch + \")\" : '');\n },\n formatSha: function(sha) {\n return (sha || '').substr(0, 7);\n },\n formatConfig: function(config) {\n var values;\n config = $.only(config, 'rvm', 'gemfile', 'env', 'otp_release', 'php', 'node_js', 'scala', 'jdk', 'python', 'perl');\n values = $.map(config, function(value, key) {\n value = (value && value.join ? value.join(', ') : value) || '';\n return '%@: %@'.fmt($.camelize(key), value);\n });\n if (values.length === 0) {\n return '-';\n } else {\n return values.join(', ');\n }\n },\n formatMessage: function(message, options) {\n message = message || '';\n if (options.short) {\n message = message.split(/\\n/)[0];\n }\n return this._emojize(this._escape(message)).replace(/\\n/g, ' ');\n },\n formatLog: function(log) {\n return Travis.Log.filter(log);\n },\n pathFrom: function(url) {\n return (url || '').split('/').pop();\n },\n timeAgoInWords: function(date) {\n return $.timeago.distanceInWords(date);\n },\n durationFrom: function(started, finished) {\n started = started && this._toUtc(new Date(this._normalizeDateString(started)));\n finished = finished ? this._toUtc(new Date(this._normalizeDateString(finished))) : this._nowUtc();\n if (started && finished) {\n return Math.round((finished - started) / 1000);\n } else {\n return 0;\n }\n },\n timeInWords: function(duration) {\n var days, hours, minutes, result, seconds;\n days = Math.floor(duration / 86400);\n hours = Math.floor(duration % 86400 / 3600);\n minutes = Math.floor(duration % 3600 / 60);\n seconds = duration % 60;\n if (days > 0) {\n return 'more than 24 hrs';\n } else {\n result = [];\n if (hours === 1) {\n result.push(hours + ' hr');\n }\n if (hours > 1) {\n result.push(hours + ' hrs');\n }\n if (minutes > 0) {\n result.push(minutes + ' min');\n }\n if (seconds > 0) {\n result.push(seconds + ' sec');\n }\n if (result.length > 0) {\n return result.join(' ');\n } else {\n return '-';\n }\n }\n },\n _normalizeDateString: function(string) {\n if (window.JHW) {\n string = string.replace('T', ' ').replace(/-/g, '/');\n string = string.replace('Z', '').replace(/\\..*$/, '');\n }\n return string;\n },\n _nowUtc: function() {\n return this._toUtc(new Date());\n },\n _toUtc: function(date) {\n return Date.UTC(date.getFullYear(), date.getMonth(), date.getDate(), date.getHours(), date.getMinutes(), date.getSeconds(), date.getMilliseconds());\n },\n _emojize: function(text) {\n var emojis;\n emojis = text.match(/:\\S+?:/g);\n if (emojis !== null) {\n $.each(emojis.uniq(), function(ix, emoji) {\n var image, strippedEmoji;\n strippedEmoji = emoji.substring(1, emoji.length - 1);\n if (EmojiDictionary.indexOf(strippedEmoji) !== -1) {\n image = ' ';\n return text = text.replace(new RegExp(emoji, 'g'), image);\n }\n });\n }\n return text;\n },\n _escape: function(text) {\n return text.replace(/&/g, '&').replace(//g, '>');\n }\n };\n\n}).call(this);\n\n})();\n//@ sourceURL=helpers/helpers"),minispade.register("helpers/urls",'(function() {(function() {\n\n this.Travis.Urls = {\n repository: function(slug) {\n return "/" + slug;\n },\n builds: function(slug) {\n return "/" + slug + "/builds";\n },\n pullRequests: function(slug) {\n return "/" + slug + "/pull_requests";\n },\n branches: function(slug) {\n return "/" + slug + "/branches";\n },\n build: function(slug, id) {\n return "/" + slug + "/builds/" + id;\n },\n job: function(slug, id) {\n return "/" + slug + "/jobs/" + id;\n },\n githubCommit: function(slug, sha) {\n return "http://github.com/" + slug + "/commit/" + sha;\n },\n githubRepository: function(slug) {\n return "http://github.com/" + slug;\n },\n githubWatchers: function(slug) {\n return "http://github.com/" + slug + "/watchers";\n },\n githubNetwork: function(slug) {\n return "http://github.com/" + slug + "/network";\n },\n githubAdmin: function(slug) {\n return "http://github.com/" + slug + "/admin/hooks#travis_minibucket";\n },\n statusImage: function(slug, branch) {\n return ("https://secure.travis-ci.org/" + slug + ".png") + (branch ? "?branch=" + branch : \'\');\n },\n email: function(email) {\n return "mailto:" + email;\n },\n account: function(login) {\n return "/profile/" + login;\n },\n user: function(login) {\n return "/profile/" + login + "/me";\n }\n };\n\n}).call(this);\n\n})();\n//@ sourceURL=helpers/urls'),minispade.register("models","(function() {(function() {\nminispade.require('models/extensions');\nminispade.require('models/account');\nminispade.require('models/artifact');\nminispade.require('models/branch');\nminispade.require('models/build');\nminispade.require('models/commit');\nminispade.require('models/hook');\nminispade.require('models/job');\nminispade.require('models/repository');\nminispade.require('models/sponsor');\nminispade.require('models/user');\nminispade.require('models/worker');\n\n}).call(this);\n\n})();\n//@ sourceURL=models"),minispade.register("models/account","(function() {(function() {\nminispade.require('travis/model');\n\n this.Travis.Account = Travis.Model.extend({\n primaryKey: 'login',\n login: DS.attr('string'),\n name: DS.attr('string'),\n type: DS.attr('string'),\n reposCount: DS.attr('number'),\n urlGithub: (function() {\n return \"http://github.com/\" + (this.get('login'));\n }).property()\n });\n\n}).call(this);\n\n})();\n//@ sourceURL=models/account"),minispade.register("models/artifact","(function() {(function() {\nminispade.require('travis/model');\n\n this.Travis.Artifact = Travis.Model.extend({\n body: DS.attr('string'),\n init: function() {\n this._super.apply(this, arguments);\n return this.set('queue', Ember.A([]));\n },\n append: function(body) {\n if (this.get('isLoaded')) {\n return this.set('body', this.get('body') + body);\n } else {\n return this.get('queue').pushObject(body);\n }\n },\n recordDidLoad: (function() {\n var queue;\n if (this.get('isLoaded')) {\n queue = this.get('queue');\n if (queue.get('length') > 0) {\n return this.append(queue.toArray().join(''));\n }\n }\n }).observes('isLoaded')\n });\n\n}).call(this);\n\n})();\n//@ sourceURL=models/artifact"),minispade.register("models/branch","(function() {(function() {\nminispade.require('travis/model');\n\n this.Travis.Branch = Travis.Model.extend(Travis.Helpers, {\n repositoryId: DS.attr('number'),\n commitId: DS.attr('number'),\n number: DS.attr('number'),\n branch: DS.attr('string'),\n message: DS.attr('string'),\n result: DS.attr('number'),\n duration: DS.attr('number'),\n startedAt: DS.attr('string'),\n finishedAt: DS.attr('string'),\n commit: DS.belongsTo('Travis.Commit'),\n repository: (function() {\n if (this.get('repositoryId')) {\n return Travis.Repository.find(this.get('repositoryId'));\n }\n }).property('repositoryId'),\n updateTimes: function() {\n this.notifyPropertyChange('started_at');\n return this.notifyPropertyChange('finished_at');\n }\n });\n\n this.Travis.Branch.reopenClass({\n byRepositoryId: function(id) {\n return this.find({\n repository_id: id\n });\n }\n });\n\n}).call(this);\n\n})();\n//@ sourceURL=models/branch"),minispade.register("models/build","(function() {(function() {\nminispade.require('travis/model');\n\n this.Travis.Build = Travis.Model.extend(Travis.DurationCalculations, {\n eventType: DS.attr('string'),\n repositoryId: DS.attr('number'),\n commitId: DS.attr('number'),\n state: DS.attr('string'),\n number: DS.attr('number'),\n branch: DS.attr('string'),\n message: DS.attr('string'),\n result: DS.attr('number'),\n _duration: DS.attr('number', {\n key: 'duration'\n }),\n startedAt: DS.attr('string', {\n key: 'started_at'\n }),\n finishedAt: DS.attr('string', {\n key: 'finished_at'\n }),\n repository: DS.belongsTo('Travis.Repository'),\n commit: DS.belongsTo('Travis.Commit'),\n jobs: DS.hasMany('Travis.Job', {\n key: 'job_ids'\n }),\n config: (function() {\n return Travis.Helpers.compact(this.get('data.config'));\n }).property('data.config'),\n isMatrix: (function() {\n return this.get('data.job_ids.length') > 1;\n }).property('data.job_ids.length'),\n requiredJobs: (function() {\n return this.get('jobs').filter(function(data) {\n return !data.get('allowFailure');\n });\n }).property('jobs.@each.allowFailure'),\n allowedFailureJobs: (function() {\n return this.get('jobs').filter(function(data) {\n return data.get('allowFailure');\n });\n }).property('jobs.@each.allowFailure'),\n configKeys: (function() {\n var config, headers, key, keys;\n if (!(config = this.get('config'))) {\n return [];\n }\n keys = $.intersect($.keys(config), Travis.CONFIG_KEYS);\n headers = (function() {\n var _i, _len, _ref, _results;\n _ref = ['build.job', 'build.duration', 'build.finished_at'];\n _results = [];\n for (_i = 0, _len = _ref.length; _i < _len; _i++) {\n key = _ref[_i];\n _results.push(I18n.t(key));\n }\n return _results;\n })();\n return $.map(headers.concat(keys), function(key) {\n return $.camelize(key);\n });\n }).property('config')\n });\n\n this.Travis.Build.reopenClass({\n byRepositoryId: function(id, parameters) {\n return this.find($.extend(parameters || {}, {\n repository_id: id\n }));\n },\n olderThanNumber: function(id, build_number) {\n return this.find({\n url: \"/builds\",\n repository_id: id,\n after_number: build_number\n });\n }\n });\n\n}).call(this);\n\n})();\n//@ sourceURL=models/build"),minispade.register("models/commit","(function() {(function() {\nminispade.require('travis/model');\n\n this.Travis.Commit = Travis.Model.extend({\n buildId: DS.attr('number'),\n sha: DS.attr('string'),\n branch: DS.attr('string'),\n message: DS.attr('string'),\n compareUrl: DS.attr('string'),\n authorName: DS.attr('string'),\n authorEmail: DS.attr('string'),\n committerName: DS.attr('string'),\n committerEmail: DS.attr('string'),\n build: DS.belongsTo('Travis.Build', {\n key: 'buildId'\n })\n });\n\n}).call(this);\n\n})();\n//@ sourceURL=models/commit"),minispade.register("models/extensions","(function() {(function() {\n\n Travis.DurationCalculations = Ember.Mixin.create({\n duration: (function() {\n var duration;\n if (duration = this.get('_duration')) {\n return duration;\n } else {\n return Travis.Helpers.durationFrom(this.get('startedAt'), this.get('finishedAt'));\n }\n }).property('_duration', 'finishedAt', 'startedAt'),\n updateTimes: function() {\n this.notifyPropertyChange('_duration');\n return this.notifyPropertyChange('finished_at');\n }\n });\n\n}).call(this);\n\n})();\n//@ sourceURL=models/extensions"),minispade.register("models/hook","(function() {(function() {\nminispade.require('travis/model');\n\n this.Travis.Hook = Travis.Model.extend({\n name: DS.attr('string'),\n ownerName: DS.attr('string'),\n description: DS.attr('string'),\n active: DS.attr('boolean'),\n account: (function() {\n return this.get('slug').split('/')[0];\n }).property('slug'),\n slug: (function() {\n return \"\" + (this.get('ownerName')) + \"/\" + (this.get('name'));\n }).property('ownerName', 'name'),\n urlGithub: (function() {\n return \"http://github.com/\" + (this.get('slug'));\n }).property(),\n urlGithubAdmin: (function() {\n return \"http://github.com/\" + (this.get('slug')) + \"/admin/hooks#travis_minibucket\";\n }).property(),\n toggle: function() {\n var transaction;\n transaction = this.get('store').transaction();\n transaction.add(this);\n this.set('active', !this.get('active'));\n return transaction.commit();\n }\n });\n\n}).call(this);\n\n})();\n//@ sourceURL=models/hook"
),minispade.register("models/job","(function() {(function() {\nminispade.require('travis/model');\n\n this.Travis.Job = Travis.Model.extend(Travis.DurationCalculations, {\n repositoryId: DS.attr('number'),\n buildId: DS.attr('number'),\n commitId: DS.attr('number'),\n logId: DS.attr('number'),\n queue: DS.attr('string'),\n state: DS.attr('string'),\n number: DS.attr('string'),\n result: DS.attr('number'),\n _duration: DS.attr('number', {\n key: 'duration'\n }),\n startedAt: DS.attr('string'),\n finishedAt: DS.attr('string'),\n allowFailure: DS.attr('boolean', {\n key: 'allow_failure'\n }),\n repository: DS.belongsTo('Travis.Repository', {\n key: 'repository_id'\n }),\n build: DS.belongsTo('Travis.Build', {\n key: 'build_id'\n }),\n commit: DS.belongsTo('Travis.Commit', {\n key: 'commit_id'\n }),\n log: DS.belongsTo('Travis.Artifact', {\n key: 'log_id'\n }),\n isQueued: (function() {}).property('state'),\n config: (function() {\n return Travis.Helpers.compact(this.get('data.config'));\n }).property('data.config'),\n sponsor: (function() {\n return this.get('data.sponsor');\n }).property('data.sponsor'),\n configValues: (function() {\n var config;\n if (config = this.get('config')) {\n return $.values($.only.apply(config, Travis.CONFIG_KEYS));\n } else {\n return [];\n }\n }).property('config'),\n appendLog: function(text) {\n var log;\n if (log = this.get('log')) {\n return log.append(text);\n }\n },\n subscribe: function() {\n var id;\n if (id = this.get('id')) {\n return Travis.app.pusher.subscribe(\"job-\" + id);\n }\n },\n onStateChange: (function() {\n if (this.get('state') === 'finished') {\n return Travis.app.pusher.unsubscribe(\"job-\" + (this.get('id')));\n }\n }).observes('state')\n });\n\n this.Travis.Job.reopenClass({\n queued: function(queue) {\n this.find();\n return Travis.app.store.filter(this, function(job) {\n var queued;\n queued = ['created', 'queued'].indexOf(job.get('state')) !== -1;\n return queued && job.get('queue') === (\"builds.\" + queue);\n });\n },\n findMany: function(ids) {\n return Travis.app.store.findMany(this, ids);\n }\n });\n\n}).call(this);\n\n})();\n//@ sourceURL=models/job"),minispade.register("models/repository","(function() {(function() {\nminispade.require('travis/expandable_record_array');\nminispade.require('travis/model');\n\n this.Travis.Repository = Travis.Model.extend({\n slug: DS.attr('string'),\n description: DS.attr('string'),\n lastBuildId: DS.attr('number'),\n lastBuildNumber: DS.attr('string'),\n lastBuildResult: DS.attr('number'),\n lastBuildStartedAt: DS.attr('string'),\n lastBuildFinishedAt: DS.attr('string'),\n lastBuild: DS.belongsTo('Travis.Build'),\n builds: (function() {\n var array, builds, id;\n id = this.get('id');\n builds = Travis.Build.byRepositoryId(id, {\n event_type: 'push'\n });\n array = Travis.ExpandableRecordArray.create({\n type: Travis.Build,\n content: Ember.A([]),\n store: this.get('store')\n });\n array.load(builds);\n return array;\n }).property(),\n pullRequests: (function() {\n var array, builds, id;\n id = this.get('id');\n builds = Travis.Build.byRepositoryId(id, {\n event_type: 'pull_request'\n });\n array = Travis.ExpandableRecordArray.create({\n type: Travis.Build,\n content: Ember.A([]),\n store: this.get('store')\n });\n array.load(builds);\n return array;\n }).property(),\n branches: (function() {\n return Travis.Branch.byRepositoryId(this.get('id'));\n }).property(),\n owner: (function() {\n return (this.get('slug') || '').split('/')[0];\n }).property('slug'),\n name: (function() {\n return (this.get('slug') || '').split('/')[1];\n }).property('slug'),\n lastBuildDuration: (function() {\n var duration;\n duration = this.get('data.last_build_duration');\n if (!duration) {\n duration = Travis.Helpers.durationFrom(this.get('lastBuildStartedAt'), this.get('lastBuildFinishedAt'));\n }\n return duration;\n }).property('data.last_build_duration', 'lastBuildStartedAt', 'lastBuildFinishedAt'),\n sortOrder: (function() {\n var lastBuildFinishedAt;\n if (lastBuildFinishedAt = this.get('lastBuildFinishedAt')) {\n return -new Date(lastBuildFinishedAt).getTime();\n } else {\n return -new Date('9999').getTime() - parseInt(this.get('lastBuildId'));\n }\n }).property('lastBuildFinishedAt', 'lastBuildId'),\n stats: (function() {\n var _this = this;\n return this.get('_stats') || $.get(\"https://api.github.com/repos/\" + (this.get('slug')), function(data) {\n _this.set('_stats', data);\n return _this.notifyPropertyChange('stats');\n }) && {};\n }).property(),\n select: function() {\n return Travis.Repository.select(this.get('id'));\n },\n updateTimes: function() {\n return this.notifyPropertyChange('lastBuildDuration');\n }\n });\n\n this.Travis.Repository.reopenClass({\n recent: function() {\n return this.find();\n },\n ownedBy: function(login) {\n return this.find({\n owner_name: login,\n orderBy: 'name'\n });\n },\n search: function(query) {\n return this.find({\n search: query,\n orderBy: 'name'\n });\n },\n bySlug: function(slug) {\n var repo;\n repo = $.select(this.find().toArray(), function(repo) {\n return repo.get('slug') === slug;\n });\n if (repo.length > 0) {\n return repo;\n } else {\n return this.find({\n slug: slug\n });\n }\n },\n select: function(id) {\n return this.find().forEach(function(repository) {\n return repository.set('selected', repository.get('id') === id);\n });\n }\n });\n\n}).call(this);\n\n})();\n//@ sourceURL=models/repository"),minispade.register("models/sponsor","(function() {(function() {\nminispade.require('travis/model');\n\n this.Travis.Sponsor = Travis.Model.extend({\n type: DS.attr('string'),\n url: DS.attr('string'),\n link: DS.attr('string'),\n image: (function() {\n return \"/images/sponsors/\" + (this.get('data.image'));\n }).property('data.image')\n });\n\n Travis.Sponsor.reopenClass({\n decks: function() {\n return this.platinum().concat(this.gold());\n },\n platinum: function() {\n var platinum, sponsor, _i, _len, _results;\n platinum = this.byType('platinum').toArray();\n _results = [];\n for (_i = 0, _len = platinum.length; _i < _len; _i++) {\n sponsor = platinum[_i];\n _results.push([sponsor]);\n }\n return _results;\n },\n gold: function() {\n var gold, _results;\n gold = this.byType('gold').toArray();\n _results = [];\n while (gold.length > 0) {\n _results.push(gold.splice(0, 2));\n }\n return _results;\n },\n links: function() {\n return this.byType('silver');\n },\n byType: function() {\n var types;\n types = Array.prototype.slice.apply(arguments);\n return Travis.Sponsor.filter(function(sponsor) {\n return types.indexOf(sponsor.get('type')) !== -1;\n });\n }\n });\n\n}).call(this);\n\n})();\n//@ sourceURL=models/sponsor"),minispade.register("models/user","(function() {(function() {\nminispade.require('travis/ajax');\nminispade.require('travis/model');\n\n this.Travis.User = Travis.Model.extend(Travis.Ajax, {\n name: DS.attr('string'),\n email: DS.attr('string'),\n login: DS.attr('string'),\n token: DS.attr('string'),\n locale: DS.attr('string'),\n gravatarId: DS.attr('string'),\n isSyncing: DS.attr('boolean'),\n syncedAt: DS.attr('string'),\n repoCount: DS.attr('number'),\n init: function() {\n if (this.get('isSyncing')) {\n this.poll();\n }\n this._super();\n return Ember.run.next(this, function() {\n var transaction;\n transaction = this.get('store').transaction();\n return transaction.add(this);\n });\n },\n urlGithub: (function() {\n return \"https://github.com/\" + (this.get('login'));\n }).property(),\n updateLocale: function(locale) {\n var observer, self, transaction;\n this.setWithSession('locale', locale);\n transaction = this.get('transaction');\n transaction.commit();\n self = this;\n observer = function() {\n if (!self.get('isSaving')) {\n self.removeObserver('isSaving', observer);\n transaction = self.get('store').transaction();\n return transaction.add(self);\n }\n };\n return this.addObserver('isSaving', observer);\n },\n type: (function() {\n return 'user';\n }).property(),\n sync: function() {\n this.post('/users/sync');\n this.setWithSession('isSyncing', true);\n return this.poll();\n },\n poll: function() {\n var _this = this;\n return this.ajax('/users', 'get', {\n success: function(data) {\n if (data.user.is_syncing) {\n return Ember.run.later(_this, _this.poll.bind(_this), 3000);\n } else {\n _this.set('isSyncing', false);\n return _this.setWithSession('syncedAt', data.user.synced_at);\n }\n }\n });\n },\n setWithSession: function(name, value) {\n var user;\n this.set(name, value);\n user = JSON.parse(typeof sessionStorage !== \"undefined\" && sessionStorage !== null ? sessionStorage.getItem('travis.user') : void 0);\n user[$.underscore(name)] = this.get(name);\n return typeof sessionStorage !== \"undefined\" && sessionStorage !== null ? sessionStorage.setItem('travis.user', JSON.stringify(user)) : void 0;\n }\n });\n\n}).call(this);\n\n})();\n//@ sourceURL=models/user"),minispade.register("models/worker","(function() {(function() {\nminispade.require('travis/model');\n\n this.Travis.Worker = Travis.Model.extend({\n state: DS.attr('string'),\n name: DS.attr('string'),\n host: DS.attr('string'),\n lastSeenAt: DS.attr('string'),\n payload: (function() {\n return this.get('data.payload');\n }).property('data.payload'),\n number: (function() {\n return this.get('name').match(/\\d+$/)[0];\n }).property('name'),\n isWorking: (function() {\n return this.get('state') === 'working';\n }).property('state'),\n repository: (function() {\n return Travis.Repository.find(this.get('payload.repository.id'));\n }).property('payload.repository.id'),\n job_id: (function() {\n return this.get('payload.job.id');\n }).property('payload.job.id'),\n job: (function() {\n return Travis.Job.find(this.get('job_id'));\n }).property('job_id')\n });\n\n}).call(this);\n\n})();\n//@ sourceURL=models/worker"),minispade.register("pusher","(function() {(function() {\n\n Travis.Pusher = function(config) {\n if (config) {\n this.init(config);\n }\n return this;\n };\n\n $.extend(Travis.Pusher, {\n CHANNELS: ['common'],\n CHANNEL_PREFIX: ''\n });\n\n $.extend(Travis.Pusher.prototype, {\n active_channels: [],\n init: function(config) {\n var channel, _i, _len, _ref, _results;\n Pusher.warn = this.warn.bind(this);\n this.pusher = new Pusher(config.key);\n _ref = Travis.Pusher.CHANNELS;\n _results = [];\n for (_i = 0, _len = _ref.length; _i < _len; _i++) {\n channel = _ref[_i];\n _results.push(this.subscribe(channel));\n }\n return _results;\n },\n subscribe: function(channel) {\n var _this = this;\n if (this.pusher && this.active_channels.indexOf(channel) === -1) {\n this.active_channels.push(channel);\n return this.pusher.subscribe(this.prefix(channel)).bind_all(function(event, data) {\n return _this.receive(event, data);\n });\n }\n },\n unsubscribe: function(channel) {\n var ix;\n ix = this.active_channels.indexOf(channel);\n if (this.pusher && ix === -1) {\n this.active_channels.splice(ix, 1);\n return this.pusher.unsubscribe(this.prefix(channel));\n }\n },\n prefix: function(channel) {\n return \"\" + Travis.Pusher.CHANNEL_PREFIX + channel;\n },\n receive: function(event, data) {\n if (event.substr(0, 6) === 'pusher') {\n return;\n }\n if (data.id) {\n data = this.normalize(event, data);\n }\n return Ember.run.next(function() {\n return Travis.app.store.receive(event, data);\n });\n },\n normalize: function(event, data) {\n switch (event) {\n case 'build:started':\n case 'build:finished':\n return data;\n case 'job:created':\n case 'job:started':\n case 'job:finished':\n case 'job:log':\n if (data.queue) {\n data.queue = data.queue.replace('builds.', '');\n }\n return {\n job: data\n };\n case 'worker:added':\n case 'worker:updated':\n case 'worker:removed':\n return {\n worker: data\n };\n }\n },\n warn: function(type, warning) {\n if (!this.ignoreWarning(warning)) {\n return console.warn(warning);\n }\n },\n ignoreWarning: function(warning) {\n var message, _ref;\n if (message = (_ref = warning.data) != null ? _ref.message : void 0) {\n return message.indexOf('Existing subscription') === 0 || message.indexOf('No current subscription') === 0;\n }\n }\n });\n\n}).call(this);\n\n})();\n//@ sourceURL=pusher"),minispade.register("routes","(function() {(function() {\n\n Travis.Router = Ember.Router.extend({\n location: 'history',\n enableLogging: false,\n initialState: 'loading',\n goToRoot: Ember.Route.transitionTo('root.home.show'),\n goToStats: Ember.Route.transitionTo('root.stats'),\n showRepository: Ember.Route.transitionTo('root.home.repository.show'),\n showBuilds: Ember.Route.transitionTo('root.home.repository.builds.index'),\n showBuild: Ember.Route.transitionTo('root.home.repository.builds.show'),\n showPullRequests: Ember.Route.transitionTo('root.home.repository.pullRequests'),\n showBranches: Ember.Route.transitionTo('root.home.repository.branches'),\n showJob: Ember.Route.transitionTo('root.home.repository.job'),\n showProfile: Ember.Route.transitionTo('root.profile'),\n showAccount: Ember.Route.transitionTo('root.profile.account'),\n showUserProfile: Ember.Route.transitionTo('root.profile.account.profile'),\n signedIn: function() {\n return !!Travis.app.get('auth.user');\n },\n requiresAuth: function(path) {\n return path === '/profile' && !this.signedIn();\n },\n loading: Ember.Route.extend({\n routePath: function(router, path) {\n router.set('lastAttemptedPath', path);\n if (router.requiresAuth(path)) {\n return router.send('showUnauthenticated');\n } else {\n return router.send('showAuthenticated');\n }\n }\n }),\n showUnauthenticated: Ember.State.transitionTo('root.home.show'),\n showAuthenticated: Ember.State.transitionTo('authenticated.index'),\n authenticated: Ember.Route.extend({\n index: Ember.Route.extend({\n connectOutlets: function(router) {\n var path;\n router.transitionTo('root');\n path = router.get('lastAttemptedPath');\n if (path && path !== '/') {\n return router.route(path);\n }\n }\n })\n }),\n root: Ember.Route.extend({\n initialState: 'home',\n loading: Ember.State.extend(),\n stats: Ember.Route.extend({\n route: '/stats',\n connectOutlets: function(router) {\n router.get('applicationController').connectOutlet('statsLayout');\n $('body').attr('id', 'stats');\n router.get('statsLayoutController').connectOutlet('top', 'top');\n return router.get('statsLayoutController').connectOutlet('main', 'stats');\n }\n }),\n profile: Ember.Route.extend({\n initialState: 'index',\n route: '/profile',\n connectOutlets: function(router) {\n router.get('applicationController').connectOutlet('profileLayout');\n $('body').attr('id', 'profile');\n router.get('accountsController').set('content', Travis.Account.find());\n router.get('profileLayoutController').connectOutlet('top', 'top');\n return router.get('profileLayoutController').connectOutlet('left', 'accounts');\n },\n index: Ember.Route.extend({\n route: '/',\n connectOutlets: function(router) {\n router.get('profileLayoutController').connectOutlet('main', 'profile');\n return router.get('profileController').activate('hooks');\n }\n }),\n account: Ember.Route.extend({\n initialState: 'index',\n route: '/:login',\n connectOutlets: function(router, account) {\n var params;\n if (account) {\n params = {\n login: account.get('login')\n };\n return router.get('profileController').setParams(params);\n } else {\n return router.send('showProfile');\n }\n },\n deserialize: function(router, params) {\n return router.get('accountsController').findByLogin(params.login);\n },\n serialize: function(router, account) {\n if (account) {\n return {\n login: account.get('login')\n };\n } else {\n return {};\n }\n },\n index: Ember.Route.extend({\n route: '/',\n connectOutlets: function(router) {\n return router.get('profileController').activate('hooks');\n }\n }),\n profile: Ember.Route.extend({\n route: '/profile',\n connectOutlets: function(router) {\n return router.get('profileController').activate('user');\n }\n })\n })\n }),\n home: Ember.Route.extend({\n initialState: 'show',\n route: '/',\n connectOutlets: function(router) {\n router.get('applicationController').connectOutlet('home');\n $('body').attr('id', 'home');\n router.get('homeController').connectOutlet('left', 'repositories');\n router.get('homeController').connectOutlet('right', 'sidebar');\n router.get('homeController').connectOutlet('top', 'top');\n return router.get('homeController').connectOutlet('main', 'repository');\n },\n show: Ember.Route.extend({\n route: '/',\n connectOutlets: function(router) {\n return router.get('repositoryController').activate('index');\n }\n }),\n repository: Ember.Route.extend({\n initialState: 'show',\n route: '/:owner/:name',\n connectOutlets: function(router, repository) {\n return router.get('repositoryController').set('repository', repository);\n },\n deserialize: function(router, params) {\n var deferred, observer, repos, slug;\n slug = \"\" + params.owner + \"/\" + params.name;\n repos = Travis.Repository.bySlug(slug);\n deferred = $.Deferred();\n observer = function() {\n if (repos.get('isLoaded')) {\n repos.removeObserver('isLoaded', observer);\n return deferred.resolve(repos.objectAt(0));\n }\n };\n repos.addObserver('isLoaded', observer);\n return deferred.promise();\n },\n serialize: function(router, repository) {\n if (repository) {\n return {\n owner: repository.get('owner'),\n name: repository.get('name')\n };\n } else {\n return {};\n }\n },\n show: Ember.Route.extend({\n route: '/',\n connectOutlets: function(router) {\n return router.get('repositoryController').activate('current');\n }\n }),\n builds: Ember.Route.extend({\n route: '/builds',\n initialState: 'index',\n index: Ember.Route.extend({\n route: '/',\n connectOutlets: function(router, repository) {\n return router.get('repositoryController').activate('builds');\n }\n }),\n show: Ember.Route.extend({\n route: '/:build_id',\n connectOutlets: function(router, build) {\n if (!build.get) {\n build = Travis.Build.find(build);\n }\n router.get('repositoryController').set('build', build);\n return router.get('repositoryController').activate('build');\n },\n serialize: function(router, build) {\n if (build.get) {\n return {\n build_id: build.get('id')\n };\n } else {\n return {\n build_id: build\n };\n }\n },\n deserialize: function(router, params) {\n var build, deferred, observer;\n build = Travis.Build.find(params.build_id);\n deferred = $.Deferred();\n observer = function() {\n if (build.get('id')) {\n build.removeObserver('id', observer);\n return deferred.resolve(build);\n }\n };\n build.addObserver('id', observer);\n return deferred.promise();\n }\n })\n }),\n pullRequests: Ember.Route.extend({\n route: '/pull_requests',\n connectOutlets: function(router, repository) {\n return router.get('repositoryController').activate('pull_requests');\n }\n }),\n branches: Ember.Route.extend({\n route: '/branches',\n connectOutlets: function(router, repository) {\n return router.get('repositoryController').activate('branches');\n }\n }),\n job: Ember.Route.extend({\n route: '/jobs/:job_id',\n connectOutlets: function(router, job) {\n if (!job.get) {\n job = Travis.Job.find(job);\n }\n router.get('repositoryController').set('job', job);\n return router.get('repositoryController').activate('job');\n },\n serialize: function(router, job) {\n if (job.get) {\n return {\n job_id: job.get('id')\n };\n } else {\n return {\n job_id: job\n };\n }\n },\n deserialize: function(router, params) {\n var deferred, job, observer;\n job = Travis.Job.find(params.job_id);\n deferred = $.Deferred();\n observer = function() {\n if (job.get('id')) {\n job.removeObserver('id', observer);\n return deferred.resolve(job);\n }\n };\n job.addObserver('id', observer);\n return deferred.promise();\n }\n })\n })\n })\n })\n });\n\n}).call(this);\n\n})();\n//@ sourceURL=routes"),minispade.register("slider","(function() {(function() {\n\n this.Travis.Slider = function() {\n if ((typeof localStorage !== \"undefined\" && localStorage !== null ? localStorage.getItem('travis.maximized') : void 0) === 'true') {\n this.minimize();\n }\n return this;\n };\n\n $.extend(Travis.Slider.prototype, {\n persist: function() {\n return typeof localStorage !== \"undefined\" && localStorage !== null ? localStorage.setItem('travis.maximized', this.isMinimized()) : void 0;\n },\n isMinimized: function() {\n return $('body').hasClass('maximized');\n },\n minimize: function() {\n return $('body').addClass('maximized');\n },\n toggle: function() {\n var element;\n $('body').toggleClass('maximized');\n this.persist();\n element = $(' ');\n $('#top .profile').append(element);\n return Em.run.later((function() {\n return element.remove();\n }), 10);\n }\n });\n\n}).call(this);\n\n})();\n//@ sourceURL=slider"),minispade.register("store","(function() {(function() {\n var DATA_PROXY,\n __indexOf = [].indexOf || function(item) { for (var i = 0, l = this.length; i < l; i++) { if (i in this && this[i] === item) return i; } return -1; };\nminispade.require('store/rest_adapter');\n\n DATA_PROXY = {\n get: function(name) {\n return this.savedData[name];\n }\n };\n\n Travis.Store = DS.Store.extend({\n revision: 4,\n adapter: Travis.RestAdapter.create(),\n merge: function(type, id, hash) {\n var clientId, data, dataCache, primaryKey, record, recordCache, typeMap;\n if (hash === void 0) {\n hash = id;\n primaryKey = type.proto().primaryKey;\n Ember.assert(\"A data hash was loaded for a record of type \" + type.toString() + \" but no primary key '\" + primaryKey + \"' was provided.\", hash[primaryKey]);\n id = hash[primaryKey];\n }\n typeMap = this.typeMapFor(type);\n dataCache = typeMap.cidToHash;\n clientId = typeMap.idToCid[id];\n recordCache = this.get('recordCache');\n if (clientId !== void 0) {\n if (data = dataCache[clientId]) {\n $.extend(data, hash);\n } else {\n dataCache[clientId] = hash;\n }\n if (record = recordCache[clientId]) {\n record.send('didChangeData');\n }\n } else {\n clientId = this.find(type, id).get('clientId');\n }\n if (clientId) {\n DATA_PROXY.savedData = hash;\n this.updateRecordArrays(type, clientId, DATA_PROXY);\n return {\n id: id,\n clientId: clientId\n };\n }\n },\n receive: function(event, data) {\n var job, mappings, name, type, _ref;\n _ref = event.split(':'), name = _ref[0], type = _ref[1];\n mappings = this.adapter.get('mappings');\n type = mappings[name];\n if (event === 'job:log') {\n if (job = this.find(Travis.Job, data['job']['id'])) {\n return job.appendLog(data['job']['_log']);\n }\n } else if (data[type.singularName()]) {\n return this._loadOne(this, type, data);\n } else if (data[type.pluralName()]) {\n return this._loadMany(this, type, data);\n } else {\n if (!type) {\n throw \"can't load data for \" + name;\n }\n }\n },\n _loadOne: function(store, type, json) {\n var root;\n root = type.singularName();\n this.adapter.sideload(store, type, json, root);\n this.merge(type, json[root]);\n return this._updateAssociations(type, root, json[root]);\n },\n _loadMany: function(store, type, json) {\n var root;\n root = type.pluralName();\n this.adapter.sideload(store, type, json, root);\n return this.loadMany(type, json[root]);\n },\n _updateAssociations: function(type, name, data) {\n var _this = this;\n return Em.get(type, 'associationsByName').forEach(function(key, meta) {\n var clientId, dataProxy, id, ids, parent, _ref;\n if (meta.kind === 'belongsTo') {\n id = data[\"\" + key + \"_id\"];\n if (clientId = _this.typeMapFor(meta.type).idToCid[id]) {\n if (parent = _this.findByClientId(meta.type, clientId, id)) {\n dataProxy = parent.get('data');\n if (ids = dataProxy.get(\"\" + name + \"_ids\")) {\n if (_ref = data.id, __indexOf.call(ids, _ref) < 0) {\n ids.pushObject(data.id);\n }\n return parent.send('didChangeData');\n }\n }\n }\n }\n });\n }\n });\n\n}).call(this);\n\n})();\n//@ sourceURL=store"),minispade.register("store/fixture_adapter",'(function() {(function() {\n\n this.Travis.FixtureAdapter = DS.Adapter.extend({\n find: function(store, type, id) {\n var fixtures;\n fixtures = type.FIXTURES;\n Ember.assert("Unable to find fixtures for model type " + type.toString(), !!fixtures);\n if (fixtures.hasLoaded) {\n return;\n }\n return setTimeout((function() {\n store.loadMany(type, fixtures);\n return fixtures.hasLoaded = true;\n }), 300);\n },\n findMany: function() {\n return this.find.apply(this, arguments);\n },\n findAll: function(store, type) {\n var fixtures, ids;\n fixtures = type.FIXTURES;\n Ember.assert("Unable to find fixtures for model type " + type.toString(), !!fixtures);\n ids = fixtures.map(function(item, index, self) {\n return item.id;\n });\n return store.loadMany(type, ids, fixtures);\n },\n findQuery: function(store, type, params, array) {\n var fixture, fixtures, hashes, key, matches, value;\n fixtures = type.FIXTURES;\n Ember.assert("Unable to find fixtures for model type " + type.toString(), !!fixtures);\n hashes = (function() {\n var _i, _len, _results;\n _results = [];\n for (_i = 0, _len = fixtures.length; _i < _len; _i++) {\n fixture = fixtures[_i];\n matches = (function() {\n var _results1;\n _results1 = [];\n for (key in params) {\n value = params[key];\n _results1.push(key === \'orderBy\' || fixture[key] === value);\n }\n return _results1;\n })();\n if (matches.reduce(function(a, b) {\n return a && b;\n })) {\n _results.push(fixture);\n } else {\n _results.push(null);\n }\n }\n return _results;\n })();\n return array.load(hashes.compact());\n }\n });\n\n}).call(this);\n\n})();\n//@ sourceURL=store/fixture_adapter'),minispade.register("store/rest_adapter","(function() {(function() {\nminispade.require('travis/ajax');\nminispade.require('models');\n\n this.Travis.RestAdapter = DS.RESTAdapter.extend(Travis.Ajax, {\n mappings: {\n repositories: Travis.Repository,\n repository: Travis.Repository,\n builds: Travis.Build,\n build: Travis.Build,\n commits: Travis.Commit,\n commit: Travis.Commit,\n jobs: Travis.Job,\n job: Travis.Job,\n account: Travis.Account,\n accounts: Travis.Account,\n worker: Travis.Worker,\n workers: Travis.Worker\n },\n plurals: {\n repository: 'repositories',\n build: 'builds',\n branch: 'branches',\n job: 'jobs',\n worker: 'workers',\n profile: 'profile'\n }\n });\n\n}).call(this);\n\n})();\n//@ sourceURL=store/rest_adapter"),minispade.register("tailing","(function() {(function() {\n\n this.Travis.Tailing = function() {\n this.position = $(window).scrollTop();\n $(window).scroll(this.onScroll.bind(this));\n return this;\n };\n\n $.extend(Travis.Tailing.prototype, {\n options: {\n timeout: 200\n },\n run: function() {\n this.autoScroll();\n this.positionButton();\n if (this.active()) {\n return Ember.run.later(this.run.bind(this), this.options.timeout);\n }\n },\n toggle: function(event) {\n if (this.active()) {\n return this.stop();\n } else {\n return this.start();\n }\n },\n active: function() {\n return $('#tail').hasClass('active');\n },\n start: function() {\n $('#tail').addClass('active');\n return this.run();\n },\n stop: function() {\n return $('#tail').removeClass('active');\n },\n autoScroll: function() {\n var log, logBottom, win, winBottom;\n if (!this.active()) {\n return;\n }\n win = $(window);\n log = $('#log');\n logBottom = log.offset().top + log.outerHeight() + 40;\n winBottom = win.scrollTop() + win.height();\n if (logBottom - winBottom > 0) {\n return win.scrollTop(logBottom - win.height());\n }\n },\n onScroll: function() {\n var position;\n this.positionButton();\n position = $(window).scrollTop();\n if (position < this.position) {\n this.stop();\n }\n return this.position = position;\n },\n positionButton: function() {\n var max, offset, tail;\n tail = $('#tail');\n if (tail.length === 0) {\n return;\n }\n offset = $(window).scrollTop() - $('#log').offset().top;\n max = $('#log').height() - $('#tail').height() + 5;\n if (offset > max) {\n offset = max;\n }\n if (offset > 0) {\n return tail.css({\n top: offset - 2\n });\n } else {\n return tail.css({\n top: 0\n });\n }\n }\n });\n\n}).call(this);\n\n})();\n//@ sourceURL=tailing"
),minispade.register("views","(function() {(function() {\nminispade.require('ext/ember/namespace');\n\n this.Travis.reopen({\n View: Em.View.extend({\n popup: function(event) {\n return $(\"#\" + event.target.name).toggleClass('display');\n }\n })\n });\n\n this.Travis.reopen({\n HomeView: Travis.View.extend({\n templateName: 'layouts/home'\n }),\n ProfileLayoutView: Travis.View.extend({\n templateName: 'layouts/profile'\n }),\n StatsLayoutView: Travis.View.extend({\n templateName: 'layouts/simple'\n }),\n ApplicationView: Travis.View.extend({\n templateName: 'application'\n })\n });\nminispade.require('views/accounts');\nminispade.require('views/build');\nminispade.require('views/job');\nminispade.require('views/repo');\nminispade.require('views/profile');\nminispade.require('views/sidebar');\nminispade.require('views/stats');\nminispade.require('views/top');\n\n}).call(this);\n\n})();\n//@ sourceURL=views"),minispade.register("views/accounts","(function() {(function() {\n\n this.Travis.reopen({\n AccountsView: Travis.View.extend({\n tabBinding: 'controller.tab',\n templateName: 'profile/accounts',\n classAccounts: (function() {\n if (this.get('tab') === 'accounts') {\n return 'active';\n }\n }).property('tab')\n }),\n AccountsListView: Em.CollectionView.extend({\n elementId: 'accounts',\n accountBinding: 'content',\n tagName: 'ul',\n emptyView: Ember.View.extend({\n template: Ember.Handlebars.compile('Loading
')\n }),\n itemViewClass: Travis.View.extend({\n accountBinding: 'content',\n typeBinding: 'content.type',\n selectedBinding: 'account.selected',\n classNames: ['account'],\n classNameBindings: ['type', 'selected'],\n name: (function() {\n return this.get('content.name') || this.get('content.login');\n }).property('content.login', 'content.name'),\n urlAccount: (function() {\n return Travis.Urls.account(this.get('account.login'));\n }).property('account.login')\n })\n })\n });\n\n}).call(this);\n\n})();\n//@ sourceURL=views/accounts"),minispade.register("views/build","(function() {(function() {\n\n this.Travis.reopen({\n BuildsView: Travis.View.extend({\n templateName: 'builds/list',\n buildsBinding: 'controller.builds',\n showMore: function() {\n var id, number;\n id = this.get('controller.repository.id');\n number = this.get('builds.lastObject.number');\n return this.get('builds').load(Travis.Build.olderThanNumber(id, number));\n },\n ShowMoreButton: Em.View.extend({\n tagName: 'button',\n classNameBindings: ['isLoading'],\n attributeBindings: ['disabled'],\n isLoadingBinding: 'controller.builds.isLoading',\n template: Em.Handlebars.compile('{{view.label}}'),\n disabledBinding: 'isLoading',\n label: (function() {\n if (this.get('isLoading')) {\n return 'Loading';\n } else {\n return 'Show more';\n }\n }).property('isLoading'),\n click: function() {\n return this.get('parentView').showMore();\n }\n })\n }),\n BuildsItemView: Travis.View.extend({\n tagName: 'tr',\n classNameBindings: ['color'],\n repositoryBinding: 'controller.repository',\n buildBinding: 'context',\n commitBinding: 'build.commit',\n color: (function() {\n return Travis.Helpers.colorForResult(this.get('build.result'));\n }).property('build.result'),\n urlBuild: (function() {\n return Travis.Urls.build(this.get('repository.slug'), this.get('build.id'));\n }).property('repository.slug', 'build.id'),\n urlGithubCommit: (function() {\n return Travis.Urls.githubCommit(this.get('repository.slug'), this.get('commit.sha'));\n }).property('repository.slug', 'commit.sha')\n }),\n BuildView: Travis.View.extend({\n templateName: 'builds/show',\n elementId: 'build',\n classNameBindings: ['color', 'loading'],\n repositoryBinding: 'controller.repository',\n buildBinding: 'controller.build',\n commitBinding: 'build.commit',\n loading: (function() {\n return !this.get('build.isLoaded');\n }).property('build.isLoaded'),\n color: (function() {\n return Travis.Helpers.colorForResult(this.get('build.result'));\n }).property('build.result'),\n urlBuild: (function() {\n return Travis.Urls.build(this.get('repository.slug'), this.get('build.id'));\n }).property('repository.slug', 'build.id'),\n urlGithubCommit: (function() {\n return Travis.Urls.githubCommit(this.get('repository.slug'), this.get('commit.sha'));\n }).property('repository.slug', 'commit.sha'),\n urlAuthor: (function() {\n return Travis.Urls.email(this.get('commit.authorEmail'));\n }).property('commit.authorEmail'),\n urlCommitter: (function() {\n return Travis.Urls.email(this.get('commit.committerEmail'));\n }).property('commit.committerEmail')\n })\n });\n\n}).call(this);\n\n})();\n//@ sourceURL=views/build"),minispade.register("views/job","(function() {(function() {\n\n this.Travis.reopen({\n JobsView: Travis.View.extend({\n templateName: 'jobs/list',\n buildBinding: 'controller.build'\n }),\n JobsItemView: Travis.View.extend({\n tagName: 'tr',\n classNameBindings: ['color'],\n repositoryBinding: 'context.repository',\n jobBinding: 'context',\n color: (function() {\n return Travis.Helpers.colorForResult(this.get('job.result'));\n }).property('job.result'),\n urlJob: (function() {\n return Travis.Urls.job(this.get('repository.slug'), this.get('job.id'));\n }).property('repository.slug', 'job.id')\n }),\n JobView: Travis.View.extend({\n templateName: 'jobs/show',\n repositoryBinding: 'controller.repository',\n jobBinding: 'controller.job',\n commitBinding: 'job.commit',\n color: (function() {\n return Travis.Helpers.colorForResult(this.get('job.result'));\n }).property('job.result'),\n urlJob: (function() {\n return Travis.Urls.job(this.get('repository.slug'), this.get('job.id'));\n }).property('repository.slug', 'job.id'),\n urlGithubCommit: (function() {\n return Travis.Urls.githubCommit(this.get('repository.slug'), this.get('commit.sha'));\n }).property('repository.slug', 'commit.sha'),\n urlAuthor: (function() {\n return Travis.Urls.email(this.get('commit.authorEmail'));\n }).property('commit.authorEmail'),\n urlCommitter: (function() {\n return Travis.Urls.email(this.get('commit.committerEmail'));\n }).property('commit.committerEmail')\n }),\n LogView: Travis.View.extend({\n templateName: 'jobs/log',\n logBinding: 'job.log',\n click: function(event) {\n return $(event.target).closest('.fold').toggleClass('open');\n },\n toTop: function() {\n return $(window).scrollTop(0);\n },\n jobBinding: 'context',\n toggleTailing: function(event) {\n Travis.app.tailing.toggle();\n return event.preventDefault();\n },\n logSubscriber: (function() {\n var job, state;\n job = this.get('job');\n state = this.get('job.state');\n if (job && state !== 'finished') {\n job.subscribe();\n }\n return null;\n }).property('job', 'job.state')\n })\n });\n\n}).call(this);\n\n})();\n//@ sourceURL=views/job"),minispade.register("views/left","(function() {(function() {\n\n this.Travis.reopen({\n ReposView: Travis.View.extend({\n templateName: 'repos/list',\n tabBinding: 'controller.tab',\n classRecent: (function() {\n if (this.get('tab') === 'recent') {\n return 'active';\n }\n }).property('tab'),\n classOwned: (function() {\n var classes;\n classes = [];\n if (this.get('tab') === 'owned') {\n classes.push('active');\n }\n if (Travis.app.get('currentUser')) {\n classes.push('display');\n }\n return classes.join(' ');\n }).property('tab', 'Travis.currentUser'),\n classSearch: (function() {\n if (this.get('tab') === 'search') {\n return 'active';\n }\n }).property('tab')\n })\n });\n\n}).call(this);\n\n})();\n//@ sourceURL=views/left"),minispade.register("views/profile","(function() {(function() {\n\n this.Travis.reopen({\n ProfileView: Travis.View.extend({\n templateName: 'profile/show',\n accountBinding: 'controller.account',\n name: (function() {\n return this.get('account.name') || this.get('account.login');\n }).property('account.name', 'account.login')\n }),\n ProfileTabsView: Travis.View.extend({\n templateName: 'profile/tabs',\n tabBinding: 'controller.tab',\n activate: function(event) {\n return this.get('controller').activate(event.target.name);\n },\n classHooks: (function() {\n if (this.get('tab') === 'hooks') {\n return 'active';\n }\n }).property('tab'),\n classUser: (function() {\n if (this.get('tab') === 'user') {\n return 'active';\n }\n }).property('tab'),\n accountBinding: 'controller.account',\n displayUser: (function() {\n return this.get('controller.account.login') === this.get('controller.user.login');\n }).property('controller.account.login', 'controller.user.login')\n }),\n HooksView: Travis.View.extend({\n templateName: 'profile/tabs/hooks',\n userBinding: 'controller.user',\n urlGithubAdmin: (function() {\n return Travis.Urls.githubAdmin(this.get('hook.slug'));\n }).property('hook.slug')\n }),\n UserView: Travis.View.extend({\n templateName: 'profile/tabs/user',\n userBinding: 'controller.user',\n gravatarUrl: (function() {\n return \"\" + location.protocol + \"//www.gravatar.com/avatar/\" + (this.get('user.gravatarId')) + \"?s=48&d=mm\";\n }).property('user.gravatarId'),\n locales: (function() {\n return [\n {\n key: null,\n name: ''\n }, {\n key: 'en',\n name: 'English'\n }, {\n key: 'ca',\n name: 'Catalan'\n }, {\n key: 'cs',\n name: 'Čeština'\n }, {\n key: 'es',\n name: 'Español'\n }, {\n key: 'fr',\n name: 'Français'\n }, {\n key: 'ja',\n name: '日本語'\n }, {\n key: 'nl',\n name: 'Nederlands'\n }, {\n key: 'nb',\n name: 'Norsk Bokmål'\n }, {\n key: 'pl',\n name: 'Polski'\n }, {\n key: {\n 'pt-BR': {\n name: 'Português brasileiro'\n }\n }\n }, {\n key: 'ru',\n name: 'Русский'\n }\n ];\n }).property(),\n saveLocale: function(event) {\n return this.get('user').updateLocale($('#locale').val());\n }\n })\n });\n\n}).call(this);\n\n})();\n//@ sourceURL=views/profile"),minispade.register("views/repo","(function() {(function() {\nminispade.require('views/repo/list');\nminispade.require('views/repo/show');\n\n}).call(this);\n\n})();\n//@ sourceURL=views/repo"),minispade.register("views/repo/list","(function() {(function() {\n\n this.Travis.reopen({\n RepositoriesView: Travis.View.extend({\n templateName: 'repos/list',\n toggleInfo: function(event) {\n return $('#repositories').toggleClass('open');\n }\n }),\n RepositoriesListView: Em.CollectionView.extend({\n elementId: 'repositories',\n tagName: 'ul',\n emptyView: Ember.View.extend({\n template: Ember.Handlebars.compile('Loading
')\n }),\n itemViewClass: Travis.View.extend({\n repositoryBinding: 'content',\n classNames: ['repository'],\n classNameBindings: ['color', 'selected'],\n selectedBinding: 'repository.selected',\n color: (function() {\n return Travis.Helpers.colorForResult(this.get('repository.lastBuildResult'));\n }).property('repository.lastBuildResult'),\n urlRepository: (function() {\n return Travis.Urls.repository(this.get('repository.slug'));\n }).property('repository.slug'),\n urlLastBuild: (function() {\n return Travis.Urls.build(this.get('repository.slug'), this.get('repository.lastBuildId'));\n }).property('repository.slug', 'repository.lastBuildId')\n })\n }),\n ReposListTabsView: Travis.View.extend({\n templateName: 'repos/list/tabs',\n tabBinding: 'controller.tab',\n activate: function(event) {\n return this.get('controller').activate(event.target.name);\n },\n classRecent: (function() {\n if (this.get('tab') === 'recent') {\n return 'active';\n }\n }).property('tab'),\n classOwned: (function() {\n var classes;\n classes = [];\n if (this.get('tab') === 'owned') {\n classes.push('active');\n }\n if (Travis.app.get('currentUser')) {\n classes.push('display-inline');\n }\n return classes.join(' ');\n }).property('tab', 'Travis.app.currentUser'),\n classSearch: (function() {\n if (this.get('tab') === 'search') {\n return 'active';\n }\n }).property('tab')\n })\n });\n\n}).call(this);\n\n})();\n//@ sourceURL=views/repo/list"),minispade.register("views/repo/show","(function() {(function() {\n\n this.Travis.reopen({\n RepositoryView: Travis.View.extend({\n templateName: 'repos/show',\n repositoryBinding: 'controller.repository',\n \"class\": (function() {\n if (!this.get('repository.isLoaded')) {\n return 'loading';\n }\n }).property('repository.isLoaded'),\n urlGithub: (function() {\n return Travis.Urls.githubRepository(this.get('repository.slug'));\n }).property('repository.slug'),\n urlGithubWatchers: (function() {\n return Travis.Urls.githubWatchers(this.get('repository.slug'));\n }).property('repository.slug'),\n urlGithubNetwork: (function() {\n return Travis.Urls.githubNetwork(this.get('repository.slug'));\n }).property('repository.slug')\n }),\n RepoShowTabsView: Travis.View.extend({\n templateName: 'repos/show/tabs',\n repositoryBinding: 'controller.repository',\n buildBinding: 'controller.build',\n jobBinding: 'controller.job',\n tabBinding: 'controller.tab',\n classCurrent: (function() {\n if (this.get('tab') === 'current') {\n return 'active';\n }\n }).property('tab'),\n classBuilds: (function() {\n if (this.get('tab') === 'builds') {\n return 'active';\n }\n }).property('tab'),\n classPullRequests: (function() {\n if (this.get('tab') === 'pull_requests') {\n return 'active';\n }\n }).property('tab'),\n classBranches: (function() {\n if (this.get('tab') === 'branches') {\n return 'active';\n }\n }).property('tab'),\n classBuild: (function() {\n var classes, tab;\n tab = this.get('tab');\n classes = [];\n if (tab === 'build') {\n classes.push('active');\n }\n if (tab === 'build' || tab === 'job') {\n classes.push('display-inline');\n }\n return classes.join(' ');\n }).property('tab'),\n classJob: (function() {\n if (this.get('tab') === 'job') {\n return 'active display-inline';\n }\n }).property('tab')\n }),\n RepoShowToolsView: Travis.View.extend({\n templateName: 'repos/show/tools',\n repositoryBinding: 'controller.repository',\n buildBinding: 'controller.build',\n jobBinding: 'controller.job',\n tabBinding: 'controller.tab',\n toggle: function() {\n var element;\n element = $('#tools .pane').toggleClass('display-inline');\n return this.set('active', element.hasClass('display-inline'));\n },\n branches: (function() {\n if (this.get('active')) {\n return this.get('repository.branches');\n }\n }).property('active', 'repository.branches'),\n urlRepository: (function() {\n return 'https://' + location.host + Travis.Urls.repository(this.get('repository.slug'));\n }).property('repository.slug'),\n urlStatusImage: (function() {\n return Travis.Urls.statusImage(this.get('repository.slug'), this.get('branch.commit.branch'));\n }).property('repository.slug', 'branch'),\n markdownStatusImage: (function() {\n return \"[) + \")](\" + (this.get('urlRepository')) + \")\";\n }).property('urlStatusImage'),\n textileStatusImage: (function() {\n return \"!\" + (this.get('urlStatusImage')) + \"!:\" + (this.get('urlRepository'));\n }).property('urlStatusImage'),\n rdocStatusImage: (function() {\n return \"{ }[\" + (this.get('urlRepository')) + \"]\";\n }).property('urlStatusImage')\n })\n });\n\n}).call(this);\n\n})();\n//@ sourceURL=views/repo/show"),minispade.register("views/sidebar","(function() {(function() {\n\n this.Travis.reopen({\n SidebarView: Travis.View.extend({\n templateName: 'layouts/sidebar',\n DecksView: Em.View.extend({\n templateName: \"sponsors/decks\",\n controller: Travis.SponsorsController.create({\n perPage: 1\n }),\n didInsertElement: function() {\n var controller;\n controller = this.get('controller');\n if (!controller.get('content')) {\n Travis.app.get('router.sidebarController').tickables.push(controller);\n controller.set('content', Travis.Sponsor.decks());\n }\n return this._super.apply(this, arguments);\n }\n }),\n LinksView: Em.View.extend({\n templateName: \"sponsors/links\",\n controller: Travis.SponsorsController.create({\n perPage: 6\n }),\n didInsertElement: function() {\n var controller;\n controller = this.get('controller');\n if (!controller.get('content')) {\n controller.set('content', Travis.Sponsor.links());\n Travis.app.get('router.sidebarController').tickables.push(controller);\n }\n return this._super.apply(this, arguments);\n }\n }),\n WorkersView: Em.View.extend({\n templateName: 'workers/list',\n controller: Travis.WorkersController.create(),\n didInsertElement: function() {\n this.set('controller.content', Travis.Worker.find());\n return this._super.apply(this, arguments);\n }\n }),\n QueuesView: Em.View.extend({\n templateName: 'queues/list',\n controller: Travis.QueuesController.create(),\n didInsertElement: function() {\n var queue, queues;\n queues = (function() {\n var _i, _len, _ref, _results;\n _ref = Travis.QUEUES;\n _results = [];\n for (_i = 0, _len = _ref.length; _i < _len; _i++) {\n queue = _ref[_i];\n _results.push(Em.ArrayController.create({\n content: Travis.Job.queued(queue.name),\n id: \"queue_\" + queue.name,\n name: queue.display\n }));\n }\n return _results;\n })();\n this.set('controller.content', queues);\n return this._super.apply(this, arguments);\n }\n })\n }),\n WorkersView: Travis.View.extend({\n toggleWorkers: function(event) {\n var handle;\n handle = $(event.target).toggleClass('open');\n if (handle.hasClass('open')) {\n return $('#workers li').addClass('open');\n } else {\n return $('#workers li').removeClass('open');\n }\n }\n }),\n WorkersListView: Travis.View.extend({\n toggle: function(event) {\n return $(event.target).closest('li').toggleClass('open');\n }\n }),\n WorkersItemView: Travis.View.extend({\n display: (function() {\n var name, number, payload, repo, state;\n name = (this.get('worker.name') || '').replace('travis-', '');\n state = this.get('worker.state');\n payload = this.get('worker.payload');\n if (state === 'working' && payload !== void 0) {\n repo = payload.repository.slug;\n number = ' #' + payload.build.number;\n return (\"\" + name + \": \" + repo + \" \" + number).htmlSafe();\n } else {\n return \"\" + name + \": \" + state;\n }\n }).property('worker.state')\n }),\n QueueItemView: Travis.View.extend({\n tagName: 'li',\n urlJob: (function() {\n return Travis.Urls.job(this.get('job.repository.slug'), this.get('job.id'));\n }).property('job.repository.slug', 'job.id')\n })\n });\n\n}).call(this);\n\n})();\n//@ sourceURL=views/sidebar"),minispade.register("views/stats",'(function() {(function() {\n\n this.Travis.reopen({\n StatsView: Travis.View.extend({\n templateName: \'stats/show\',\n didInsertElement: function() {},\n renderChart: function(config) {\n var chart;\n chart = new Highcharts.Chart(config);\n return this.fetch(config.source, function(data) {\n var stats;\n stats = (function() {\n var _i, _len, _ref, _results;\n _ref = data.stats;\n _results = [];\n for (_i = 0, _len = _ref.length; _i < _len; _i++) {\n stats = _ref[_i];\n _results.push(config.map(stats));\n }\n return _results;\n })();\n return chart.series[0].setData(stats);\n });\n },\n fetch: function(url, callback) {\n return $.ajax({\n type: \'GET\',\n url: url,\n accepts: {\n json: \'application/vnd.travis-ci.2+json\'\n },\n success: callback\n });\n },\n CHARTS: {\n repos: {\n source: \'/api/stats/repos\',\n total: 0,\n map: function(data) {\n return [Date.parse(data.date), this.total += parseInt(data.count)];\n },\n chart: {\n renderTo: "repos_stats"\n },\n title: {\n text: "Total Projects/Repositories"\n },\n xAxis: {\n type: "datetime",\n dateTimeLabelFormats: {\n month: "%e. %b",\n year: "%b"\n }\n },\n yAxis: {\n title: {\n text: "Count"\n },\n min: 0\n },\n tooltip: {\n formatter: function() {\n return Highcharts.dateFormat("%e. %b", this.x) + ": " + this.y + " repos";\n }\n },\n series: [\n {\n name: "Repository Growth",\n data: []\n }\n ]\n },\n builds: {\n source: \'/api/stats/tests\',\n map: function(data) {\n return [Date.parse(data.date), parseInt(data.count)];\n },\n chart: {\n renderTo: "tests_stats",\n type: "column"\n },\n title: {\n text: "Build Count"\n },\n subtitle: {\n text: "last month"\n },\n xAxis: {\n type: "datetime",\n dateTimeLabelFormats: {\n month: "%e. %b",\n year: "%b"\n }\n },\n yAxis: {\n title: {\n text: "Count"\n },\n min: 0\n },\n tooltip: {\n formatter: function() {\n return Highcharts.dateFormat("%e. %b", this.x) + ": " + this.y + " builds";\n }\n },\n series: [\n {\n name: "Total Builds",\n data: []\n }\n ]\n }\n }\n })\n });\n\n}).call(this);\n\n})();\n//@ sourceURL=views/stats'),minispade.register("views/top","(function() {(function() {\n\n this.Travis.reopen({\n TopView: Travis.View.extend({\n templateName: 'layouts/top',\n tabBinding: 'controller.tab',\n userBinding: 'controller.user',\n gravatarUrl: (function() {\n return \"\" + location.protocol + \"//www.gravatar.com/avatar/\" + (this.get('user.gravatarId')) + \"?s=24&d=mm\";\n }).property('user.gravatarId'),\n classHome: (function() {\n if (this.get('tab') === 'home') {\n return 'active';\n }\n }).property('tab'),\n classStats: (function() {\n if (this.get('tab') === 'stats') {\n return 'active';\n }\n }).property('tab'),\n classProfile: (function() {\n var classes;\n classes = ['profile'];\n if (this.get('tab') === 'profile') {\n classes.push('active');\n }\n classes.push(Travis.app.get('authState'));\n return classes.join(' ');\n }).property('tab', 'Travis.app.authState'),\n showProfile: function() {\n return $('#top .profile ul').show();\n },\n hideProfile: function() {\n return $('#top .profile ul').hide();\n }\n })\n });\n\n}).call(this);\n\n})();\n//@ sourceURL=views/top"),minispade.register("data/sponsors",'(function() {(function() {\n\n this.Travis.SPONSORS = [\n {\n type: \'platinum\',\n url: "http://www.wooga.com",\n image: "wooga-205x130.png"\n }, {\n type: \'platinum\',\n url: "http://bendyworks.com",\n image: "bendyworks-205x130.png"\n }, {\n type: \'platinum\',\n url: "http://cloudcontrol.com",\n image: "cloudcontrol-205x130.png"\n }, {\n type: \'platinum\',\n url: "http://xing.de",\n image: "xing-205x130.png"\n }, {\n type: \'gold\',\n url: "http://heroku.com",\n image: "heroku-205x60.png"\n }, {\n type: \'gold\',\n url: "http://soundcloud.com",\n image: "soundcloud-205x60.png"\n }, {\n type: \'gold\',\n url: "http://nedap.com",\n image: "nedap-205x60.png"\n }, {\n type: \'gold\',\n url: "http://mongohq.com",\n image: "mongohq-205x60.png"\n }, {\n type: \'gold\',\n url: "http://zweitag.de",\n image: "zweitag-205x60.png"\n }, {\n type: \'gold\',\n url: "http://kanbanery.com",\n image: "kanbanery-205x60.png"\n }, {\n type: \'gold\',\n url: "http://ticketevolution.com",\n image: "ticketevolution-205x60.jpg"\n }, {\n type: \'gold\',\n url: "http://plan.io/travis",\n image: "planio-205x60.png"\n }, {\n type: \'silver\',\n link: "Cobot : The one tool to run your coworking space "\n }, {\n type: \'silver\',\n link: "JumpstartLab : We build developers "\n }, {\n type: \'silver\',\n link: "Evil Martians : Agile Ruby on Rails development "\n }, {\n type: \'silver\',\n link: "Zendesk : Love your helpdesk "\n }, {\n type: \'silver\',\n link: "Stripe : Payments for developers "\n }, {\n type: \'silver\',\n link: "Basho : We make Riak! "\n }, {\n type: \'silver\',\n link: "Relevance : We deliver software solutions "\n }, {\n type: \'silver\',\n link: "Mindmatters : Software für Menschen "\n }, {\n type: \'silver\',\n link: "Amen : The best and worst of everything "\n }, {\n type: \'silver\',\n link: "Site5 : Premium Web Hosting Solutions "\n }, {\n type: \'silver\',\n link: "Crowd Interactive : Leading Rails consultancy in Mexico "\n }, {\n type: \'silver\',\n link: "Atomic Object : Work with really smart people "\n }, {\n type: \'silver\',\n link: "Codeminer : smart services for your startup "\n }, {\n type: \'silver\',\n link: "Cloudant : grow into your data layer, not out of it "\n }, {\n type: \'silver\',\n link: "Gidsy : Explore, organize & book unique things to do! "\n }, {\n type: \'silver\',\n link: "5apps : Package & deploy HTML5 apps automatically "\n }, {\n type: \'silver\',\n link: "Meltmedia : We are Interactive Superheroes "\n }, {\n type: \'silver\',\n link: "Fingertips offers design and development services "\n }, {\n type: \'silver\',\n link: "Engine Yard : Build epic apps, let us handle the rest "\n }, {\n type: \'silver\',\n link: "Malwarebytes : Defeat Malware once and for all. "\n }, {\n type: \'silver\',\n link: "Readmill : The best reading app on the iPad. "\n }, {\n type: \'silver\',\n link: "Medidata : clinical tech improving quality of life "\n }, {\n type: \'silver\',\n link: "ESM : Japan\'s best agile Ruby/Rails consultancy "\n }, {\n type: \'silver\',\n link: "Twitter : instantly connects people everywhere "\n }, {\n type: \'silver\',\n link: "AGiLE ANiMAL : we <3 Travis CI. "\n }, {\n type: \'silver\',\n link: "Tupalo : Discover, review & share local businesses. "\n }\n ];\n\n}).call(this);\n\n})();\n//@ sourceURL=data/sponsors'),minispade.register("emoij","(function() {(function() {\n\n this.EmojiDictionary = ['-1', '0', '1', '109', '2', '3', '4', '5', '6', '7', '8', '8ball', '9', 'a', 'ab', 'airplane', 'alien', 'ambulance', 'angel', 'anger', 'angry', 'apple', 'aquarius', 'aries', 'arrow_backward', 'arrow_down', 'arrow_forward', 'arrow_left', 'arrow_lower_left', 'arrow_lower_right', 'arrow_right', 'arrow_up', 'arrow_upper_left', 'arrow_upper_right', 'art', 'astonished', 'atm', 'b', 'baby', 'baby_chick', 'baby_symbol', 'balloon', 'bamboo', 'bank', 'barber', 'baseball', 'basketball', 'bath', 'bear', 'beer', 'beers', 'beginner', 'bell', 'bento', 'bike', 'bikini', 'bird', 'birthday', 'black_square', 'blue_car', 'blue_heart', 'blush', 'boar', 'boat', 'bomb', 'book', 'boot', 'bouquet', 'bow', 'bowtie', 'boy', 'bread', 'briefcase', 'broken_heart', 'bug', 'bulb', 'bullettrain_front', 'bullettrain_side', 'bus', 'busstop', 'cactus', 'cake', 'calling', 'camel', 'camera', 'cancer', 'capricorn', 'car', 'cat', 'cd', 'chart', 'checkered_flag', 'cherry_blossom', 'chicken', 'christmas_tree', 'church', 'cinema', 'city_sunrise', 'city_sunset', 'clap', 'clapper', 'clock1', 'clock10', 'clock11', 'clock12', 'clock2', 'clock3', 'clock4', 'clock5', 'clock6', 'clock7', 'clock8', 'clock9', 'closed_umbrella', 'cloud', 'clubs', 'cn', 'cocktail', 'coffee', 'cold_sweat', 'computer', 'confounded', 'congratulations', 'construction', 'construction_worker', 'convenience_store', 'cool', 'cop', 'copyright', 'couple', 'couple_with_heart', 'couplekiss', 'cow', 'crossed_flags', 'crown', 'cry', 'cupid', 'currency_exchange', 'curry', 'cyclone', 'dancer', 'dancers', 'dango', 'dart', 'dash', 'de', 'department_store', 'diamonds', 'disappointed', 'dog', 'dolls', 'dolphin', 'dress', 'dvd', 'ear', 'ear_of_rice', 'egg', 'eggplant', 'egplant', 'eight_pointed_black_star', 'eight_spoked_asterisk', 'elephant', 'email', 'es', 'european_castle', 'exclamation', 'eyes', 'factory', 'fallen_leaf', 'fast_forward', 'fax', 'fearful', 'feelsgood', 'feet', 'ferris_wheel', 'finnadie', 'fire', 'fire_engine', 'fireworks', 'fish', 'fist', 'flags', 'flushed', 'football', 'fork_and_knife', 'fountain', 'four_leaf_clover', 'fr', 'fries', 'frog', 'fuelpump', 'gb', 'gem', 'gemini', 'ghost', 'gift', 'gift_heart', 'girl', 'goberserk', 'godmode', 'golf', 'green_heart', 'grey_exclamation', 'grey_question', 'grin', 'guardsman', 'guitar', 'gun', 'haircut', 'hamburger', 'hammer', 'hamster', 'hand', 'handbag', 'hankey', 'hash', 'headphones', 'heart', 'heart_decoration', 'heart_eyes', 'heartbeat', 'heartpulse', 'hearts', 'hibiscus', 'high_heel', 'horse', 'hospital', 'hotel', 'hotsprings', 'house', 'hurtrealbad', 'icecream', 'id', 'ideograph_advantage', 'imp', 'information_desk_person', 'iphone', 'it', 'jack_o_lantern', 'japanese_castle', 'joy', 'jp', 'key', 'kimono', 'kiss', 'kissing_face', 'kissing_heart', 'koala', 'koko', 'kr', 'leaves', 'leo', 'libra', 'lips', 'lipstick', 'lock', 'loop', 'loudspeaker', 'love_hotel', 'mag', 'mahjong', 'mailbox', 'man', 'man_with_gua_pi_mao', 'man_with_turban', 'maple_leaf', 'mask', 'massage', 'mega', 'memo', 'mens', 'metal', 'metro', 'microphone', 'minidisc', 'mobile_phone_off', 'moneybag', 'monkey', 'monkey_face', 'moon', 'mortar_board', 'mount_fuji', 'mouse', 'movie_camera', 'muscle', 'musical_note', 'nail_care', 'necktie', 'new', 'no_good', 'no_smoking', 'nose', 'notes', 'o', 'o2', 'ocean', 'octocat', 'octopus', 'oden', 'office', 'ok', 'ok_hand', 'ok_woman', 'older_man', 'older_woman', 'open_hands', 'ophiuchus', 'palm_tree', 'parking', 'part_alternation_mark', 'pencil', 'penguin', 'pensive', 'persevere', 'person_with_blond_hair', 'phone', 'pig', 'pill', 'pisces', 'plus1', 'point_down', 'point_left', 'point_right', 'point_up', 'point_up_2', 'police_car', 'poop', 'post_office', 'postbox', 'pray', 'princess', 'punch', 'purple_heart', 'question', 'rabbit', 'racehorse', 'radio', 'rage', 'rage1', 'rage2', 'rage3', 'rage4', 'rainbow', 'raised_hands', 'ramen', 'red_car', 'red_circle', 'registered', 'relaxed', 'relieved', 'restroom', 'rewind', 'ribbon', 'rice', 'rice_ball', 'rice_cracker', 'rice_scene', 'ring', 'rocket', 'roller_coaster', 'rose', 'ru', 'runner', 'sa', 'sagittarius', 'sailboat', 'sake', 'sandal', 'santa', 'satellite', 'satisfied', 'saxophone', 'school', 'school_satchel', 'scissors', 'scorpius', 'scream', 'seat', 'secret', 'shaved_ice', 'sheep', 'shell', 'ship', 'shipit', 'shirt', 'shit', 'shoe', 'signal_strength', 'six_pointed_star', 'ski', 'skull', 'sleepy', 'slot_machine', 'smile', 'smiley', 'smirk', 'smoking', 'snake', 'snowman', 'sob', 'soccer', 'space_invader', 'spades', 'spaghetti', 'sparkler', 'sparkles', 'speaker', 'speedboat', 'squirrel', 'star', 'star2', 'stars', 'station', 'statue_of_liberty', 'stew', 'strawberry', 'sunflower', 'sunny', 'sunrise', 'sunrise_over_mountains', 'surfer', 'sushi', 'suspect', 'sweat', 'sweat_drops', 'swimmer', 'syringe', 'tada', 'tangerine', 'taurus', 'taxi', 'tea', 'telephone', 'tennis', 'tent', 'thumbsdown', 'thumbsup', 'ticket', 'tiger', 'tm', 'toilet', 'tokyo_tower', 'tomato', 'tongue', 'top', 'tophat', 'traffic_light', 'train', 'trident', 'trophy', 'tropical_fish', 'truck', 'trumpet', 'tshirt', 'tulip', 'tv', 'u5272', 'u55b6', 'u6307', 'u6708', 'u6709', 'u6e80', 'u7121', 'u7533', 'u7a7a', 'umbrella', 'unamused', 'underage', 'unlock', 'up', 'us', 'v', 'vhs', 'vibration_mode', 'virgo', 'vs', 'walking', 'warning', 'watermelon', 'wave', 'wc', 'wedding', 'whale', 'wheelchair', 'white_square', 'wind_chime', 'wink', 'wink2', 'wolf', 'woman', 'womans_hat', 'womens', 'x', 'yellow_heart', 'zap', 'zzz'];\n\n}).call(this);\n\n})();\n//@ sourceURL=emoij"
-),minispade.register("ext/jquery","(function() {(function() {\n\n $.fn.extend({\n outerHtml: function() {\n return $(this).wrap('
').parent().html();\n },\n outerElement: function() {\n return $($(this).outerHtml()).empty();\n },\n flash: function() {\n return Utils.flash(this);\n },\n unflash: function() {\n return Utils.unflash(this);\n },\n filterLog: function() {\n this.deansi();\n return this.foldLog();\n },\n deansi: function() {\n return this.html(Utils.deansi(this.html()));\n },\n foldLog: function() {\n return this.html(Utils.foldLog(this.html()));\n },\n unfoldLog: function() {\n return this.html(Utils.unfoldLog(this.html()));\n },\n updateTimes: function() {\n return Utils.updateTimes(this);\n },\n activateTab: function(tab) {\n return Utils.activateTab(this, tab);\n },\n timeInWords: function() {\n return $(this).each(function() {\n return $(this).text(Utils.timeInWords(parseInt($(this).attr('title'))));\n });\n },\n updateGithubStats: function(repository) {\n return Utils.updateGithubStats(repository, $(this));\n }\n });\n\n $.extend({\n isEmpty: function(obj) {\n if ($.isArray(obj)) {\n return !obj.length;\n } else if ($.isObject(obj)) {\n return !$.keys(obj).length;\n } else {\n return !obj;\n }\n },\n isObject: function(obj) {\n return Object.prototype.toString.call(obj) === '[object Object]';\n },\n keys: function(obj) {\n var keys;\n keys = [];\n $.each(obj, function(key) {\n return keys.push(key);\n });\n return keys;\n },\n values: function(obj) {\n var values;\n values = [];\n $.each(obj, function(key, value) {\n return values.push(value);\n });\n return values;\n },\n underscore: function(string) {\n return string[0].toLowerCase() + string.substring(1).replace(/([A-Z])?/g, function(match, chr) {\n if (chr) {\n return \"_\" + (chr.toUpperCase());\n } else {\n return '';\n }\n });\n },\n camelize: function(string, uppercase) {\n string = uppercase === false ? $.underscore(string) : $.capitalize(string);\n return string.replace(/_(.)?/g, function(match, chr) {\n if (chr) {\n return chr.toUpperCase();\n } else {\n return '';\n }\n });\n },\n capitalize: function(string) {\n return string[0].toUpperCase() + string.substring(1);\n },\n compact: function(object) {\n return $.grep(object, function(value) {\n return !!value;\n });\n },\n all: function(array, callback) {\n var args, i;\n args = Array.prototype.slice.apply(arguments);\n callback = args.pop();\n array = args.pop() || this;\n i = 0;\n while (i < array.length) {\n if (callback(array[i])) {\n return false;\n }\n i++;\n }\n return true;\n },\n detect: function(array, callback) {\n var args, i;\n args = Array.prototype.slice.apply(arguments);\n callback = args.pop();\n array = args.pop() || this;\n i = 0;\n while (i < array.length) {\n if (callback(array[i])) {\n return array[i];\n }\n i++;\n }\n },\n select: function(array, callback) {\n var args, i, result;\n args = Array.prototype.slice.apply(arguments);\n callback = args.pop();\n array = args.pop() || this;\n result = [];\n i = 0;\n while (i < array.length) {\n if (callback(array[i])) {\n result.push(array[i]);\n }\n i++;\n }\n return result;\n },\n slice: function(object, key) {\n var keys, result;\n keys = Array.prototype.slice.apply(arguments);\n object = (typeof keys[0] === 'object' ? keys.shift() : this);\n result = {};\n for (key in object) {\n if (keys.indexOf(key) > -1) {\n result[key] = object[key];\n }\n }\n return result;\n },\n only: function(object) {\n var key, keys, result;\n keys = Array.prototype.slice.apply(arguments);\n object = (typeof keys[0] === 'object' ? keys.shift() : this);\n result = {};\n for (key in object) {\n if (keys.indexOf(key) !== -1) {\n result[key] = object[key];\n }\n }\n return result;\n },\n except: function(object) {\n var key, keys, result;\n keys = Array.prototype.slice.apply(arguments);\n object = (typeof keys[0] === 'object' ? keys.shift() : this);\n result = {};\n for (key in object) {\n if (keys.indexOf(key) === -1) {\n result[key] = object[key];\n }\n }\n return result;\n },\n intersect: function(array, other) {\n return array.filter(function(element) {\n return other.indexOf(element) !== -1;\n });\n },\n map: function(elems, callback, arg) {\n var i, isArray, key, length, ret, value;\n value = void 0;\n key = void 0;\n ret = [];\n i = 0;\n length = elems.length;\n isArray = elems instanceof jQuery || length !== void 0 && typeof length === 'number' && (length > 0 && elems[0] && elems[length - 1]) || length === 0 || jQuery.isArray(elems);\n if (isArray) {\n while (i < length) {\n value = callback(elems[i], i, arg);\n if (value != null) {\n ret[ret.length] = value;\n }\n i++;\n }\n } else {\n for (key in elems) {\n value = callback(elems[key], key, arg);\n if (value != null) {\n ret[ret.length] = value;\n }\n }\n }\n return ret.concat.apply([], ret);\n },\n shuffle: function(array) {\n var current, tmp, top;\n array = array.slice();\n top = array.length;\n while (top && --top) {\n current = Math.floor(Math.random() * (top + 1));\n tmp = array[current];\n array[current] = array[top];\n array[top] = tmp;\n }\n return array;\n },\n truncate: function(string, length) {\n if (string.length > length) {\n return string.trim().substring(0, length) + '...';\n } else {\n return string;\n }\n }\n });\n\n}).call(this);\n\n})();\n//@ sourceURL=ext/jquery"),minispade.register("travis/ajax","(function() {(function() {\n\n jQuery.support.cors = true;\n\n this.Travis.Ajax = Ember.Mixin.create({\n DEFAULT_OPTIONS: {\n accepts: {\n json: 'application/vnd.travis-ci.2+json'\n }\n },\n post: function(url, data, callback) {\n return this.ajax(url, 'post', {\n data: data,\n success: callback\n });\n },\n ajax: function(url, method, options) {\n var accessToken, endpoint, _base, _ref;\n endpoint = Travis.config.api_endpoint || '';\n options = options || {};\n if (accessToken = (_ref = Travis.app) != null ? _ref.get('auth.accessToken') : void 0) {\n options.headers || (options.headers = {});\n (_base = options.headers)['Authorization'] || (_base['Authorization'] = \"token \" + accessToken);\n }\n options.url = \"\" + endpoint + url;\n options.type = method;\n options.dataType = 'json';\n options.contentType = 'application/json; charset=utf-8';\n options.context = this;\n if (options.data && method !== 'GET' && method !== 'get') {\n options.data = JSON.stringify(options.data);\n }\n return $.ajax($.extend(options, this.DEFAULT_OPTIONS));\n }\n });\n\n this.Travis.ajax = Em.Object.create(this.Travis.Ajax, {\n get: function(url, callback) {\n return this.ajax(url, 'get', {\n success: callback\n });\n }\n });\n\n}).call(this);\n\n})();\n//@ sourceURL=travis/ajax"),minispade.register("travis/expandable_record_array","(function() {(function() {\n\n Travis.ExpandableRecordArray = DS.RecordArray.extend({\n isLoaded: false,\n isLoading: false,\n load: function(array) {\n var observer, self;\n this.set('isLoading', true);\n self = this;\n observer = function() {\n var content;\n if (this.get('isLoaded')) {\n content = self.get('content');\n array.removeObserver('isLoaded', observer);\n array.forEach(function(record) {\n return self.pushObject(record);\n });\n self.set('isLoading', false);\n return self.set('isLoaded', true);\n }\n };\n return array.addObserver('isLoaded', observer);\n },\n pushObject: function(record) {\n var clientId, id, ids;\n ids = this.get('content');\n id = record.get('id');\n clientId = record.get('clientId');\n if (ids.contains(clientId)) {\n return;\n }\n return ids.pushObject(clientId);\n }\n });\n\n}).call(this);\n\n})();\n//@ sourceURL=travis/expandable_record_array"),minispade.register("travis/log","(function() {(function() {\n\n this.Travis.Log = {\n FOLDS: {\n schema: /(\\$ (?:bundle exec )?rake( db:create)? db:schema:load[\\s\\S]*?-- assume_migrated_upto_version[\\s\\S]*?<\\/p>\\n.*<\\/p>)/g,\n migrate: /(\\$ (?:bundle exec )?rake( db:create)? db:migrate[\\s\\S]*== +\\w+: migrated \\(.*\\) =+)/g,\n bundle: /(\\$ bundle install.*<\\/p>\\n((Updating|Using|Installing|Fetching|remote:|Receiving|Resolving).*?<\\/p>\\n|<\\/p>\\n)*)/g,\n exec: /([\\/\\w]*.rvm\\/rubies\\/[\\S]*?\\/(ruby|rbx|jruby) .*?<\\/p>)/g\n },\n filter: function(log) {\n log = this.escape(log);\n log = this.deansi(log);\n log = log.replace(/\\r/g, '');\n log = this.number(log);\n log = this.fold(log);\n log = log.replace(/\\n/g, '');\n return log;\n },\n stripPaths: function(log) {\n return log.replace(/\\/home\\/vagrant\\/builds(\\/[^\\/\\n]+){2}\\//g, '');\n },\n escape: function(log) {\n return Handlebars.Utils.escapeExpression(log);\n },\n escapeRuby: function(log) {\n return log.replace(/#<(\\w+.*?)>/, '#<$1>');\n },\n number: function(log) {\n var result;\n result = '';\n $.each(log.trim().split('\\n'), function(ix, line) {\n var number, path;\n number = ix + 1;\n path = Travis.Log.location().substr(1).replace(/\\/L\\d+/, '') + '/L' + number;\n return result += '%@ %@
\\n'.fmt(path, path, number, number, line);\n });\n return result.trim();\n },\n deansi: function(log) {\n var ansi, text;\n log = log.replace(/\\r\\r/g, '\\r').replace(/\\033\\[K\\r/g, '\\r').replace(/^.*\\r(?!$)/gm, '').replace(/\\[2K/g, '').replace(/\\033\\(B/g, \"\");\n ansi = ansiparse(log);\n text = '';\n ansi.forEach(function(part) {\n var classes;\n classes = [];\n part.foreground && classes.push(part.foreground);\n part.background && classes.push('bg-' + part.background);\n part.bold && classes.push('bold');\n part.italic && classes.push('italic');\n return text += (classes.length ? '' + part.text + ' ' : part.text);\n });\n return text.replace(/\\033/g, '');\n },\n fold: function(log) {\n log = this.unfold(log);\n $.each(Travis.Log.FOLDS, function(name, pattern) {\n return log = log.replace(pattern, function() {\n return '' + arguments[1].trim() + '
';\n });\n });\n return log;\n },\n unfold: function(log) {\n return log.replace(/([\\s\\S]*?)<\\/div>/g, '$1\\n');\n },\n location: function() {\n return window.location.hash;\n }\n };\n\n}).call(this);\n\n})();\n//@ sourceURL=travis/log"),minispade.register("travis/model","(function() {(function() {\n\n this.Travis.Model = DS.Model.extend({\n primaryKey: 'id',\n id: DS.attr('number'),\n refresh: function() {\n var id;\n id = this.get('id');\n if (id) {\n return Travis.app.store.adapter.find(Travis.app.store, this.constructor, id);\n }\n },\n update: function(attrs) {\n var _this = this;\n $.each(attrs, function(key, value) {\n if (key !== 'id') {\n return _this.set(key, value);\n }\n });\n return this;\n }\n });\n\n this.Travis.Model.reopenClass({\n find: function() {\n if (arguments.length === 0) {\n return Travis.app.store.findAll(this);\n } else {\n return this._super.apply(this, arguments);\n }\n },\n filter: function(callback) {\n return Travis.app.store.filter(this, callback);\n },\n load: function(attrs) {\n return Travis.app.store.load(this, attrs);\n },\n buildURL: function(suffix) {\n var base, url;\n base = this.url || this.pluralName();\n Ember.assert('Base URL (' + base + ') must not start with slash', !base || base.toString().charAt(0) !== '/');\n Ember.assert('URL suffix (' + suffix + ') must not start with slash', !suffix || suffix.toString().charAt(0) !== '/');\n url = [base];\n if (suffix !== void 0) {\n url.push(suffix);\n }\n return url.join('/');\n },\n singularName: function() {\n var name, parts;\n parts = this.toString().split('.');\n name = parts[parts.length - 1];\n return name.replace(/([A-Z])/g, '_$1').toLowerCase().slice(1);\n },\n pluralName: function() {\n return Travis.app.store.adapter.pluralize(this.singularName());\n }\n });\n\n}).call(this);\n\n})();\n//@ sourceURL=travis/model"),minispade.register("travis/ticker","(function() {(function() {\n\n this.Travis.Ticker = Ember.Object.extend({\n init: function() {\n if (this.get('interval') !== -1) {\n return this.schedule();\n }\n },\n tick: function() {\n var context, target, targets, _i, _len;\n context = this.get('context');\n targets = this.get('targets') || [this.get('target')];\n for (_i = 0, _len = targets.length; _i < _len; _i++) {\n target = targets[_i];\n if (context) {\n target = context.get(target);\n }\n if (target) {\n target.tick();\n }\n }\n return this.schedule();\n },\n schedule: function() {\n var _this = this;\n return Ember.run.later((function() {\n return _this.tick();\n }), this.get('interval') || Travis.app.TICK_INTERVAL);\n }\n });\n\n}).call(this);\n\n})();\n//@ sourceURL=travis/ticker"),minispade.register("travis","(function() {(function() {\nminispade.require('ext/jquery');\nminispade.require('ext/ember/namespace');\n\n this.Travis = Em.Namespace.create({\n config: {\n api_endpoint: $('meta[rel=\"travis.api_endpoint\"]').attr('href')\n },\n CONFIG_KEYS: ['rvm', 'gemfile', 'env', 'jdk', 'otp_release', 'php', 'node_js', 'perl', 'python', 'scala'],\n ROUTES: {\n 'profile/:login/me': ['profile', 'user'],\n 'profile/:login': ['profile', 'hooks'],\n 'profile': ['profile', 'hooks'],\n 'stats': ['stats', 'show'],\n ':owner/:name/jobs/:id/:line': ['home', 'job'],\n ':owner/:name/jobs/:id': ['home', 'job'],\n ':owner/:name/builds/:id': ['home', 'build'],\n ':owner/:name/builds': ['home', 'builds'],\n ':owner/:name/pull_requests': ['home', 'pullRequests'],\n ':owner/:name/branches': ['home', 'branches'],\n ':owner/:name': ['home', 'current'],\n '': ['home', 'index'],\n '#': ['home', 'index']\n },\n QUEUES: [\n {\n name: 'common',\n display: 'Common'\n }, {\n name: 'php',\n display: 'PHP, Perl and Python'\n }, {\n name: 'node_js',\n display: 'Node.js'\n }, {\n name: 'jvmotp',\n display: 'JVM and Erlang'\n }, {\n name: 'rails',\n display: 'Rails'\n }, {\n name: 'spree',\n display: 'Spree'\n }\n ],\n INTERVALS: {\n sponsors: -1,\n times: -1,\n updateTimes: 1000\n },\n run: function(attrs) {\n var _this = this;\n if (location.hash.slice(0, 2) === '#!') {\n location.href = location.href.replace('#!/', '');\n }\n return this.loadConfig(function(config) {\n var app;\n app = Travis.App.create(attrs || {});\n $.each(Travis, function(key, value) {\n if (value && value.isClass && key !== 'constructor') {\n return app[key] = value;\n }\n });\n _this.app = app;\n _this.store = app.store;\n return $(function() {\n return app.initialize();\n });\n });\n },\n loadConfig: function(callback) {\n var _this = this;\n return this.ajax.get('/config', function(data) {\n $.extend(_this.config, data.config);\n console.log(\"Connecting to \" + data.config.api_endpoint);\n return callback(data.config);\n });\n }\n });\nminispade.require('travis/ajax');\nminispade.require('app');\n\n}).call(this);\n\n})();\n//@ sourceURL=travis"),minispade.register("templates",'(function() {\nEmber.TEMPLATES[\'application\'] = Ember.Handlebars.template(function anonymous(Handlebars, depth0, helpers, partials, data) { helpers = helpers || Ember.Handlebars.helpers;\n var buffer = \'\', stack1, escapeExpression=this.escapeExpression;\n\n\n stack1 = helpers._triageMustache.call(depth0, "outlet", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + "\\n\\n");\n return buffer;\n});\n\nEmber.TEMPLATES[\'builds/list\'] = Ember.Handlebars.template(function anonymous(Handlebars, depth0, helpers, partials, data) { helpers = helpers || Ember.Handlebars.helpers;\n var buffer = \'\', stack1, escapeExpression=this.escapeExpression, self=this, helperMissing=helpers.helperMissing;\n\nfunction program1(depth0,data) {\n \n var buffer = \'\', stack1, foundHelper;\n data.buffer.push("\\n
\\n \\n \\n ");\n foundHelper = helpers[\'t\'];\n stack1 = foundHelper ? foundHelper.call(depth0, "builds.name", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "t", "builds.name", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + " \\n ");\n foundHelper = helpers[\'t\'];\n stack1 = foundHelper ? foundHelper.call(depth0, "builds.commit", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "t", "builds.commit", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + " \\n ");\n foundHelper = helpers[\'t\'];\n stack1 = foundHelper ? foundHelper.call(depth0, "builds.message", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "t", "builds.message", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + " \\n ");\n foundHelper = helpers[\'t\'];\n stack1 = foundHelper ? foundHelper.call(depth0, "builds.duration", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "t", "builds.duration", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + " \\n ");\n foundHelper = helpers[\'t\'];\n stack1 = foundHelper ? foundHelper.call(depth0, "builds.finished_at", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "t", "builds.finished_at", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + " \\n \\n \\n\\n \\n ");\n stack1 = helpers.each.call(depth0, "build", "in", "builds", {hash:{},inverse:self.noop,fn:self.program(2, program2, data),contexts:[depth0,depth0,depth0],data:data});\n if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n data.buffer.push("\\n \\n
\\n
\\n ");\n stack1 = helpers.view.call(depth0, "view.ShowMoreButton", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + "\\n
\\n");\n return buffer;}\nfunction program2(depth0,data) {\n \n var buffer = \'\', stack1;\n data.buffer.push("\\n ");\n stack1 = {};\n stack1[\'contextBinding\'] = "build";\n stack1 = helpers.view.call(depth0, "Travis.BuildsItemView", {hash:stack1,inverse:self.noop,fn:self.program(3, program3, data),contexts:[depth0],data:data});\n if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n data.buffer.push("\\n ");\n return buffer;}\nfunction program3(depth0,data) {\n \n var buffer = \'\', stack1, foundHelper;\n data.buffer.push("\\n
\\n \\n ");\n stack1 = helpers[\'if\'].call(depth0, "id", {hash:{},inverse:self.noop,fn:self.program(4, program4, data),contexts:[depth0],data:data});\n if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n data.buffer.push("\\n \\n
\\n \\n ");\n foundHelper = helpers.formatCommit;\n stack1 = foundHelper ? foundHelper.call(depth0, "commit", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "formatCommit", "commit", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + "\\n \\n \\n
\\n ");\n stack1 = {};\n stack1[\'short\'] = "true";\n foundHelper = helpers.formatMessage;\n stack1 = foundHelper ? foundHelper.call(depth0, "commit.message", {hash:stack1,contexts:[depth0],data:data}) : helperMissing.call(depth0, "formatMessage", "commit.message", {hash:stack1,contexts:[depth0],data:data});\n if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n data.buffer.push("\\n \\n
\\n ");\n foundHelper = helpers.formatDuration;\n stack1 = foundHelper ? foundHelper.call(depth0, "duration", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "formatDuration", "duration", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + "\\n \\n
\\n ");\n foundHelper = helpers.formatTime;\n stack1 = foundHelper ? foundHelper.call(depth0, "finishedAt", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "formatTime", "finishedAt", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + "\\n \\n ");\n return buffer;}\nfunction program4(depth0,data) {\n \n var buffer = \'\', stack1;\n data.buffer.push("\\n
\\n ");\n stack1 = helpers._triageMustache.call(depth0, "number", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + "\\n \\n ");\n return buffer;}\n\nfunction program6(depth0,data) {\n \n \n data.buffer.push("\\n
Loading
\\n");}\n\n stack1 = helpers[\'if\'].call(depth0, "builds.isLoaded", {hash:{},inverse:self.program(6, program6, data),fn:self.program(1, program1, data),contexts:[depth0],data:data});\n if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n data.buffer.push("\\n\\n");\n return buffer;\n});\n\nEmber.TEMPLATES[\'builds/show\'] = Ember.Handlebars.template(function anonymous(Handlebars, depth0, helpers, partials, data) { helpers = helpers || Ember.Handlebars.helpers;\n var buffer = \'\', stack1, escapeExpression=this.escapeExpression, helperMissing=helpers.helperMissing, self=this;\n\nfunction program1(depth0,data) {\n \n var buffer = \'\', stack1;\n data.buffer.push("\\n ");\n stack1 = helpers[\'if\'].call(depth0, "loading", {hash:{},inverse:self.program(4, program4, data),fn:self.program(2, program2, data),contexts:[depth0],data:data});\n if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n data.buffer.push("\\n");\n return buffer;}\nfunction program2(depth0,data) {\n \n \n data.buffer.push("\\n
Loading \\n ");}\n\nfunction program4(depth0,data) {\n \n var buffer = \'\', stack1, foundHelper;\n data.buffer.push("\\n
\\n \\n
");\n foundHelper = helpers[\'t\'];\n stack1 = foundHelper ? foundHelper.call(depth0, "builds.name", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "t", "builds.name", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + " \\n \\n \\n ");\n stack1 = helpers[\'if\'].call(depth0, "build.id", {hash:{},inverse:self.noop,fn:self.program(5, program5, data),contexts:[depth0],data:data});\n if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n data.buffer.push("\\n \\n ");\n foundHelper = helpers[\'t\'];\n stack1 = foundHelper ? foundHelper.call(depth0, "builds.finished_at", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "t", "builds.finished_at", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + " \\n ");\n foundHelper = helpers.formatTime;\n stack1 = foundHelper ? foundHelper.call(depth0, "build.finishedAt", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "formatTime", "build.finishedAt", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + " \\n ");\n foundHelper = helpers[\'t\'];\n stack1 = foundHelper ? foundHelper.call(depth0, "builds.duration", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "t", "builds.duration", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + " \\n ");\n foundHelper = helpers.formatDuration;\n stack1 = foundHelper ? foundHelper.call(depth0, "build.duration", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "formatDuration", "build.duration", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + " \\n \\n\\n \\n
");\n foundHelper = helpers[\'t\'];\n stack1 = foundHelper ? foundHelper.call(depth0, "builds.commit", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "t", "builds.commit", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + " \\n
");\n foundHelper = helpers.formatCommit;\n stack1 = foundHelper ? foundHelper.call(depth0, "build.commit", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "formatCommit", "build.commit", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + " \\n ");\n stack1 = helpers[\'if\'].call(depth0, "commit.compareUrl", {hash:{},inverse:self.noop,fn:self.program(7, program7, data),contexts:[depth0],data:data});\n if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n data.buffer.push("\\n ");\n stack1 = helpers[\'if\'].call(depth0, "commit.authorName", {hash:{},inverse:self.noop,fn:self.program(9, program9, data),contexts:[depth0],data:data});\n if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n data.buffer.push("\\n ");\n stack1 = helpers[\'if\'].call(depth0, "commit.committerName", {hash:{},inverse:self.noop,fn:self.program(11, program11, data),contexts:[depth0],data:data});\n if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n data.buffer.push("\\n
\\n\\n ");\n foundHelper = helpers[\'t\'];\n stack1 = foundHelper ? foundHelper.call(depth0, "builds.message", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "t", "builds.message", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + " \\n ");\n foundHelper = helpers.formatMessage;\n stack1 = foundHelper ? foundHelper.call(depth0, "build.commit.message", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "formatMessage", "build.commit.message", {hash:{},contexts:[depth0],data:data});\n if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n data.buffer.push(" \\n\\n ");\n stack1 = helpers.unless.call(depth0, "isMatrix", {hash:{},inverse:self.noop,fn:self.program(13, program13, data),contexts:[depth0],data:data});\n if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n data.buffer.push("\\n \\n\\n ");\n stack1 = helpers[\'if\'].call(depth0, "build.isMatrix", {hash:{},inverse:self.program(17, program17, data),fn:self.program(15, program15, data),contexts:[depth0],data:data});\n if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n data.buffer.push("\\n ");\n return buffer;}\nfunction program5(depth0,data) {\n \n var buffer = \'\', stack1;\n data.buffer.push("\\n
");\n stack1 = helpers._triageMustache.call(depth0, "build.number", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + " \\n ");\n return buffer;}\n\nfunction program7(depth0,data) {\n \n var buffer = \'\', stack1, foundHelper;\n data.buffer.push("\\n
");\n foundHelper = helpers[\'t\'];\n stack1 = foundHelper ? foundHelper.call(depth0, "builds.compare", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "t", "builds.compare", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + " \\n
");\n foundHelper = helpers.pathFrom;\n stack1 = foundHelper ? foundHelper.call(depth0, "build.commit.compareUrl", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "pathFrom", "build.commit.compareUrl", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + " \\n ");\n return buffer;}\n\nfunction program9(depth0,data) {\n \n var buffer = \'\', stack1, foundHelper;\n data.buffer.push("\\n
");\n foundHelper = helpers[\'t\'];\n stack1 = foundHelper ? foundHelper.call(depth0, "builds.author", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "t", "builds.author", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + " \\n
");\n stack1 = helpers._triageMustache.call(depth0, "build.commit.authorName", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + " \\n ");\n return buffer;}\n\nfunction program11(depth0,data) {\n \n var buffer = \'\', stack1, foundHelper;\n data.buffer.push("\\n
");\n foundHelper = helpers[\'t\'];\n stack1 = foundHelper ? foundHelper.call(depth0, "builds.committer", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "t", "builds.committer", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + " \\n
");\n stack1 = helpers._triageMustache.call(depth0, "build.commit.committerName", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + " \\n ");\n return buffer;}\n\nfunction program13(depth0,data) {\n \n var buffer = \'\', stack1, foundHelper;\n data.buffer.push("\\n
");\n foundHelper = helpers[\'t\'];\n stack1 = foundHelper ? foundHelper.call(depth0, "builds.config", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "t", "builds.config", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + " \\n
");\n foundHelper = helpers.formatConfig;\n stack1 = foundHelper ? foundHelper.call(depth0, "build.config", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "formatConfig", "build.config", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + " \\n ");\n return buffer;}\n\nfunction program15(depth0,data) {\n \n var buffer = \'\', stack1;\n data.buffer.push("\\n ");\n stack1 = {};\n stack1[\'jobsBinding\'] = "build.requiredJobs";\n stack1[\'required\'] = "true";\n stack1 = helpers.view.call(depth0, "Travis.JobsView", {hash:stack1,contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + "\\n ");\n stack1 = {};\n stack1[\'jobsBinding\'] = "build.allowedFailureJobs";\n stack1 = helpers.view.call(depth0, "Travis.JobsView", {hash:stack1,contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + "\\n ");\n return buffer;}\n\nfunction program17(depth0,data) {\n \n var buffer = \'\', stack1;\n data.buffer.push("\\n ");\n stack1 = {};\n stack1[\'contextBinding\'] = "build.jobs.firstObject";\n stack1 = helpers.view.call(depth0, "Travis.LogView", {hash:stack1,contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + "\\n ");\n return buffer;}\n\n stack1 = helpers[\'with\'].call(depth0, "view", {hash:{},inverse:self.noop,fn:self.program(1, program1, data),contexts:[depth0],data:data});\n if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n data.buffer.push("\\n\\n");\n return buffer;\n});\n\nEmber.TEMPLATES[\'jobs/list\'] = Ember.Handlebars.template(function anonymous(Handlebars, depth0, helpers, partials, data) { helpers = helpers || Ember.Handlebars.helpers;\n var buffer = \'\', stack1, helperMissing=helpers.helperMissing, escapeExpression=this.escapeExpression, self=this;\n\nfunction program1(depth0,data) {\n \n var buffer = \'\', stack1;\n data.buffer.push("\\n ");\n stack1 = helpers[\'if\'].call(depth0, "view.required", {hash:{},inverse:self.program(4, program4, data),fn:self.program(2, program2, data),contexts:[depth0],data:data});\n if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n data.buffer.push("\\n
\\n \\n ");\n stack1 = helpers.each.call(depth0, "key", "in", "view.build.configKeys", {hash:{},inverse:self.noop,fn:self.program(6, program6, data),contexts:[depth0,depth0,depth0],data:data});\n if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n data.buffer.push("\\n \\n \\n
\\n ");\n stack1 = helpers.each.call(depth0, "job", "in", "view.jobs", {hash:{},inverse:self.noop,fn:self.program(8, program8, data),contexts:[depth0,depth0,depth0],data:data});\n if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n data.buffer.push("\\n \\n
\\n\\n ");\n stack1 = helpers.unless.call(depth0, "view.required", {hash:{},inverse:self.noop,fn:self.program(14, program14, data),contexts:[depth0],data:data});\n if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n data.buffer.push("\\n");\n return buffer;}\nfunction program2(depth0,data) {\n \n var buffer = \'\', stack1, foundHelper;\n data.buffer.push("\\n \\n \\n ");\n foundHelper = helpers[\'t\'];\n stack1 = foundHelper ? foundHelper.call(depth0, "jobs.build_matrix", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "t", "jobs.build_matrix", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + "\\n \\n ");\n return buffer;}\n\nfunction program4(depth0,data) {\n \n var buffer = \'\', stack1, foundHelper;\n data.buffer.push("\\n \\n \\n ");\n foundHelper = helpers[\'t\'];\n stack1 = foundHelper ? foundHelper.call(depth0, "jobs.allowed_failures", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "t", "jobs.allowed_failures", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + "\\n \\n \\n ");\n return buffer;}\n\nfunction program6(depth0,data) {\n \n var buffer = \'\', stack1;\n data.buffer.push("\\n ");\n stack1 = helpers._triageMustache.call(depth0, "key", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + " \\n ");\n return buffer;}\n\nfunction program8(depth0,data) {\n \n var buffer = \'\', stack1;\n data.buffer.push("\\n ");\n stack1 = {};\n stack1[\'contextBinding\'] = "job";\n stack1 = helpers.view.call(depth0, "Travis.JobsItemView", {hash:stack1,inverse:self.noop,fn:self.program(9, program9, data),contexts:[depth0],data:data});\n if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n data.buffer.push("\\n ");\n return buffer;}\nfunction program9(depth0,data) {\n \n var buffer = \'\', stack1, foundHelper;\n data.buffer.push("\\n \\n \\n ");\n stack1 = helpers[\'if\'].call(depth0, "job.id", {hash:{},inverse:self.noop,fn:self.program(10, program10, data),contexts:[depth0],data:data});\n if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n data.buffer.push("\\n \\n \\n ");\n foundHelper = helpers.formatDuration;\n stack1 = foundHelper ? foundHelper.call(depth0, "duration", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "formatDuration", "duration", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + "\\n \\n \\n ");\n foundHelper = helpers.formatTime;\n stack1 = foundHelper ? foundHelper.call(depth0, "finishedAt", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "formatTime", "finishedAt", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + "\\n \\n ");\n stack1 = helpers.each.call(depth0, "value", "in", "configValues", {hash:{},inverse:self.noop,fn:self.program(12, program12, data),contexts:[depth0,depth0,depth0],data:data});\n if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n data.buffer.push("\\n ");\n return buffer;}\nfunction program10(depth0,data) {\n \n var buffer = \'\', stack1;\n data.buffer.push("\\n ");\n stack1 = helpers._triageMustache.call(depth0, "number", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + " \\n ");\n return buffer;}\n\nfunction program12(depth0,data) {\n \n var buffer = \'\', stack1;\n data.buffer.push("\\n ");\n stack1 = helpers._triageMustache.call(depth0, "value", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + " \\n ");\n return buffer;}\n\nfunction program14(depth0,data) {\n \n var buffer = \'\', stack1, foundHelper;\n data.buffer.push("\\n \\n ");\n return buffer;}\n\n stack1 = helpers[\'if\'].call(depth0, "view.jobs.length", {hash:{},inverse:self.noop,fn:self.program(1, program1, data),contexts:[depth0],data:data});\n if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n data.buffer.push("\\n\\n");\n return buffer;\n});\n\nEmber.TEMPLATES[\'jobs/log\'] = Ember.Handlebars.template(function anonymous(Handlebars, depth0, helpers, partials, data) { helpers = helpers || Ember.Handlebars.helpers;\n var buffer = \'\', stack1, helperMissing=helpers.helperMissing, escapeExpression=this.escapeExpression, self=this;\n\nfunction program1(depth0,data) {\n \n var buffer = \'\', stack1, foundHelper;\n data.buffer.push("\\n \\n \\n Follow logs \\n ");\n foundHelper = helpers.formatLog;\n stack1 = foundHelper ? foundHelper.call(depth0, "log.body", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "formatLog", "log.body", {hash:{},contexts:[depth0],data:data});\n if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n data.buffer.push(" \\n\\n ");\n stack1 = helpers[\'if\'].call(depth0, "sponsor.name", {hash:{},inverse:self.noop,fn:self.program(2, program2, data),contexts:[depth0],data:data});\n if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n data.buffer.push("\\n\\n To top \\n");\n return buffer;}\nfunction program2(depth0,data) {\n \n var buffer = \'\', stack1, foundHelper;\n data.buffer.push("\\n \\n ");\n return buffer;}\n\nfunction program4(depth0,data) {\n \n \n data.buffer.push("\\n \\n Loading \\n
\\n");}\n\n stack1 = helpers._triageMustache.call(depth0, "view.logSubscriber", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + "\\n\\n");\n stack1 = helpers[\'if\'].call(depth0, "log.isLoaded", {hash:{},inverse:self.program(4, program4, data),fn:self.program(1, program1, data),contexts:[depth0],data:data});\n if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n data.buffer.push("\\n\\n");\n return buffer;\n});\n\nEmber.TEMPLATES[\'jobs/show\'] = Ember.Handlebars.template(function anonymous(Handlebars, depth0, helpers, partials, data) { helpers = helpers || Ember.Handlebars.helpers;\n var buffer = \'\', stack1, escapeExpression=this.escapeExpression, helperMissing=helpers.helperMissing, self=this;\n\nfunction program1(depth0,data) {\n \n var buffer = \'\', stack1;\n data.buffer.push("\\n ");\n stack1 = helpers[\'if\'].call(depth0, "job.isLoaded", {hash:{},inverse:self.program(11, program11, data),fn:self.program(2, program2, data),contexts:[depth0],data:data});\n if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n data.buffer.push("\\n");\n return buffer;}\nfunction program2(depth0,data) {\n \n var buffer = \'\', stack1, foundHelper;\n data.buffer.push("\\n \\n
\\n \\n
Job \\n \\n \\n ");\n stack1 = helpers[\'if\'].call(depth0, "job.id", {hash:{},inverse:self.noop,fn:self.program(3, program3, data),contexts:[depth0],data:data});\n if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n data.buffer.push("\\n \\n ");\n foundHelper = helpers[\'t\'];\n stack1 = foundHelper ? foundHelper.call(depth0, "jobs.finished_at", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "t", "jobs.finished_at", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + " \\n ");\n foundHelper = helpers.formatTime;\n stack1 = foundHelper ? foundHelper.call(depth0, "job.finishedAt", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "formatTime", "job.finishedAt", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + " \\n ");\n foundHelper = helpers[\'t\'];\n stack1 = foundHelper ? foundHelper.call(depth0, "jobs.duration", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "t", "jobs.duration", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + " \\n ");\n foundHelper = helpers.formatDuration;\n stack1 = foundHelper ? foundHelper.call(depth0, "job.duration", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "formatDuration", "job.duration", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + " \\n \\n\\n \\n
");\n foundHelper = helpers[\'t\'];\n stack1 = foundHelper ? foundHelper.call(depth0, "jobs.commit", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "t", "jobs.commit", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + " \\n
");\n foundHelper = helpers.formatCommit;\n stack1 = foundHelper ? foundHelper.call(depth0, "commit", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "formatCommit", "commit", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + " \\n ");\n stack1 = helpers[\'if\'].call(depth0, "commit.compareUrl", {hash:{},inverse:self.noop,fn:self.program(5, program5, data),contexts:[depth0],data:data});\n if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n data.buffer.push("\\n ");\n stack1 = helpers[\'if\'].call(depth0, "commit.authorName", {hash:{},inverse:self.noop,fn:self.program(7, program7, data),contexts:[depth0],data:data});\n if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n data.buffer.push("\\n ");\n stack1 = helpers[\'if\'].call(depth0, "commit.committerName", {hash:{},inverse:self.noop,fn:self.program(9, program9, data),contexts:[depth0],data:data});\n if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n data.buffer.push("\\n
\\n\\n ");\n foundHelper = helpers[\'t\'];\n stack1 = foundHelper ? foundHelper.call(depth0, "jobs.message", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "t", "jobs.message", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + " \\n ");\n foundHelper = helpers.formatMessage;\n stack1 = foundHelper ? foundHelper.call(depth0, "commit.message", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "formatMessage", "commit.message", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + " \\n ");\n foundHelper = helpers[\'t\'];\n stack1 = foundHelper ? foundHelper.call(depth0, "jobs.config", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "t", "jobs.config", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + " \\n ");\n foundHelper = helpers.formatConfig;\n stack1 = foundHelper ? foundHelper.call(depth0, "job.config", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "formatConfig", "job.config", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + " \\n \\n\\n ");\n stack1 = {};\n stack1[\'contextBinding\'] = "job";\n stack1 = helpers.view.call(depth0, "Travis.LogView", {hash:stack1,contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + "\\n
\\n ");\n return buffer;}\nfunction program3(depth0,data) {\n \n var buffer = \'\', stack1;\n data.buffer.push("\\n ");\n stack1 = helpers._triageMustache.call(depth0, "job.number", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + " \\n ");\n return buffer;}\n\nfunction program5(depth0,data) {\n \n var buffer = \'\', stack1, foundHelper;\n data.buffer.push("\\n ");\n foundHelper = helpers[\'t\'];\n stack1 = foundHelper ? foundHelper.call(depth0, "jobs.compare", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "t", "jobs.compare", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + " \\n ");\n foundHelper = helpers.pathFrom;\n stack1 = foundHelper ? foundHelper.call(depth0, "commit.compareUrl", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "pathFrom", "commit.compareUrl", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + " \\n ");\n return buffer;}\n\nfunction program7(depth0,data) {\n \n var buffer = \'\', stack1, foundHelper;\n data.buffer.push("\\n ");\n foundHelper = helpers[\'t\'];\n stack1 = foundHelper ? foundHelper.call(depth0, "jobs.author", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "t", "jobs.author", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + " \\n ");\n stack1 = helpers._triageMustache.call(depth0, "commit.authorName", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + " \\n ");\n return buffer;}\n\nfunction program9(depth0,data) {\n \n var buffer = \'\', stack1, foundHelper;\n data.buffer.push("\\n ");\n foundHelper = helpers[\'t\'];\n stack1 = foundHelper ? foundHelper.call(depth0, "jobs.committer", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "t", "jobs.committer", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + " \\n ");\n stack1 = helpers._triageMustache.call(depth0, "commit.committerName", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + " \\n ");\n return buffer;}\n\nfunction program11(depth0,data) {\n \n \n data.buffer.push("\\n \\n Loading \\n
\\n ");}\n\n stack1 = helpers[\'with\'].call(depth0, "view", {hash:{},inverse:self.noop,fn:self.program(1, program1, data),contexts:[depth0],data:data});\n if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n data.buffer.push("\\n\\n");\n return buffer;\n});\n\nEmber.TEMPLATES[\'layouts/home\'] = Ember.Handlebars.template(function anonymous(Handlebars, depth0, helpers, partials, data) { helpers = helpers || Ember.Handlebars.helpers;\n var buffer = \'\', stack1, foundHelper, helperMissing=helpers.helperMissing, escapeExpression=this.escapeExpression;\n\n\n data.buffer.push("\\n ");\n foundHelper = helpers.outlet;\n stack1 = foundHelper ? foundHelper.call(depth0, "top", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "outlet", "top", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + "\\n
\\n\\n\\n
\\n ");\n foundHelper = helpers.outlet;\n stack1 = foundHelper ? foundHelper.call(depth0, "left", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "outlet", "left", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + "\\n
\\n\\n
\\n ");\n foundHelper = helpers.outlet;\n stack1 = foundHelper ? foundHelper.call(depth0, "main", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "outlet", "main", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + "\\n
\\n\\n
\\n ");\n foundHelper = helpers.outlet;\n stack1 = foundHelper ? foundHelper.call(depth0, "right", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "outlet", "right", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + "\\n
\\n
\\n\\n");\n return buffer;\n});\n\nEmber.TEMPLATES[\'layouts/profile\'] = Ember.Handlebars.template(function anonymous(Handlebars, depth0, helpers, partials, data) { helpers = helpers || Ember.Handlebars.helpers;\n var buffer = \'\', stack1, foundHelper, helperMissing=helpers.helperMissing, escapeExpression=this.escapeExpression;\n\n\n data.buffer.push("\\n ");\n foundHelper = helpers.outlet;\n stack1 = foundHelper ? foundHelper.call(depth0, "top", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "outlet", "top", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + "\\n
\\n\\n\\n
\\n ");\n foundHelper = helpers.outlet;\n stack1 = foundHelper ? foundHelper.call(depth0, "left", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "outlet", "left", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + "\\n
\\n\\n
\\n ");\n foundHelper = helpers.outlet;\n stack1 = foundHelper ? foundHelper.call(depth0, "main", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "outlet", "main", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + "\\n
\\n\\n
\\n
\\n\\n
\\n
Getting started? \\n
\\n Please read our guide .\\n It will only take a few minutes :)\\n
\\n
\\n You can find detailled docs on our about site.\\n
\\n
\\n If you need help please don\'t hesitate to join\\n #travis on irc.freenode.net\\n or our mailinglist .\\n
\\n
\\n
\\n
\\n\\n");\n return buffer;\n});\n\nEmber.TEMPLATES[\'layouts/sidebar\'] = Ember.Handlebars.template(function anonymous(Handlebars, depth0, helpers, partials, data) { helpers = helpers || Ember.Handlebars.helpers;\n var buffer = \'\', stack1, foundHelper, helperMissing=helpers.helperMissing, escapeExpression=this.escapeExpression;\n\n\n data.buffer.push("\\n ");\n foundHelper = helpers[\'t\'];\n stack1 = foundHelper ? foundHelper.call(depth0, "layouts.application.fork_me", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "t", "layouts.application.fork_me", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + "\\n \\n\\n\\n\\n");\n stack1 = helpers.view.call(depth0, "view.DecksView", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + "\\n");\n stack1 = helpers.view.call(depth0, "view.WorkersView", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + "\\n");\n stack1 = helpers.view.call(depth0, "view.QueuesView", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + "\\n");\n stack1 = helpers.view.call(depth0, "view.LinksView", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + "\\n\\n\\n
");\n foundHelper = helpers[\'t\'];\n stack1 = foundHelper ? foundHelper.call(depth0, "layouts.about.join", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "t", "layouts.about.join", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + " \\n
\\n ");\n foundHelper = helpers[\'t\'];\n stack1 = foundHelper ? foundHelper.call(depth0, "layouts.about.repository", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "t", "layouts.about.repository", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + ": Github \\n ");\n foundHelper = helpers[\'t\'];\n stack1 = foundHelper ? foundHelper.call(depth0, "layouts.about.twitter", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "t", "layouts.about.twitter", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + ": @travisci \\n ");\n foundHelper = helpers[\'t\'];\n stack1 = foundHelper ? foundHelper.call(depth0, "layouts.about.mailing_list", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "t", "layouts.about.mailing_list", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + ": travis-ci \\n irc.freenode.net#travis \\n \\n
\\n\\n");\n return buffer;\n});\n\nEmber.TEMPLATES[\'layouts/simple\'] = Ember.Handlebars.template(function anonymous(Handlebars, depth0, helpers, partials, data) { helpers = helpers || Ember.Handlebars.helpers;\n var buffer = \'\', stack1, foundHelper, helperMissing=helpers.helperMissing, escapeExpression=this.escapeExpression;\n\n\n data.buffer.push("\\n ");\n foundHelper = helpers.outlet;\n stack1 = foundHelper ? foundHelper.call(depth0, "top", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "outlet", "top", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + "\\n
\\n\\n\\n
\\n ");\n foundHelper = helpers.outlet;\n stack1 = foundHelper ? foundHelper.call(depth0, "main", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "outlet", "main", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + "\\n
\\n
\\n\\n\\n");\n return buffer;\n});\n\nEmber.TEMPLATES[\'layouts/top\'] = Ember.Handlebars.template(function anonymous(Handlebars, depth0, helpers, partials, data) { helpers = helpers || Ember.Handlebars.helpers;\n var buffer = \'\', stack1, foundHelper, escapeExpression=this.escapeExpression, helperMissing=helpers.helperMissing;\n\n\n data.buffer.push("\\n Travis \\n \\n\\n\\n \\n Home \\n \\n \\n Stats \\n \\n \\n Blog \\n \\n \\n Docs \\n \\n \\n \\n ");\n foundHelper = helpers[\'t\'];\n stack1 = foundHelper ? foundHelper.call(depth0, "layouts.top.github_login", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "t", "layouts.top.github_login", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + " \\n ");\n stack1 = helpers._triageMustache.call(depth0, "user.name", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + " \\n Signing in \\n
\\n \\n \\n ");\n foundHelper = helpers[\'t\'];\n stack1 = foundHelper ? foundHelper.call(depth0, "layouts.top.profile", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "t", "layouts.top.profile", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + " \\n \\n \\n ");\n foundHelper = helpers[\'t\'];\n stack1 = foundHelper ? foundHelper.call(depth0, "layouts.top.sign_out", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "t", "layouts.top.sign_out", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + " \\n \\n \\n \\n \\n\\n");\n return buffer;\n});\n\nEmber.TEMPLATES[\'profile/accounts\'] = Ember.Handlebars.template(function anonymous(Handlebars, depth0, helpers, partials, data) { helpers = helpers || Ember.Handlebars.helpers;\n var buffer = \'\', stack1, foundHelper, escapeExpression=this.escapeExpression, self=this, helperMissing=helpers.helperMissing;\n\nfunction program1(depth0,data) {\n \n var buffer = \'\', stack1;\n data.buffer.push("\\n ");\n stack1 = helpers._triageMustache.call(depth0, "view.name", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + " \\n \\n Repositories: \\n ");\n stack1 = helpers._triageMustache.call(depth0, "view.content.reposCount", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + " \\n
\\n ");\n return buffer;}\n\n data.buffer.push("\\n
\\n\\n\\n\\n\\n ");\n stack1 = {};\n stack1[\'contentBinding\'] = "controller";\n foundHelper = helpers.collection;\n stack1 = foundHelper ? foundHelper.call(depth0, "Travis.AccountsListView", {hash:stack1,inverse:self.noop,fn:self.program(1, program1, data),contexts:[depth0],data:data}) : helperMissing.call(depth0, "collection", "Travis.AccountsListView", {hash:stack1,inverse:self.noop,fn:self.program(1, program1, data),contexts:[depth0],data:data});\n if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n data.buffer.push("\\n
\\n\\n");\n return buffer;\n});\n\nEmber.TEMPLATES[\'profile/show\'] = Ember.Handlebars.template(function anonymous(Handlebars, depth0, helpers, partials, data) { helpers = helpers || Ember.Handlebars.helpers;\n var buffer = \'\', stack1, foundHelper, escapeExpression=this.escapeExpression, helperMissing=helpers.helperMissing;\n\n\n data.buffer.push("");\n stack1 = helpers._triageMustache.call(depth0, "view.name", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + " \\n\\n");\n stack1 = helpers.view.call(depth0, "Travis.ProfileTabsView", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + "\\n\\n\\n ");\n foundHelper = helpers.outlet;\n stack1 = foundHelper ? foundHelper.call(depth0, "pane", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "outlet", "pane", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + "\\n
\\n\\n\\n");\n return buffer;\n});\n\nEmber.TEMPLATES[\'profile/tabs\'] = Ember.Handlebars.template(function anonymous(Handlebars, depth0, helpers, partials, data) { helpers = helpers || Ember.Handlebars.helpers;\n var buffer = \'\', stack1, escapeExpression=this.escapeExpression, self=this;\n\nfunction program1(depth0,data) {\n \n var buffer = \'\', stack1;\n data.buffer.push("\\n \\n \\n \\n ");\n return buffer;}\n\n data.buffer.push("\\n \\n \\n \\n ");\n stack1 = helpers[\'if\'].call(depth0, "view.displayUser", {hash:{},inverse:self.noop,fn:self.program(1, program1, data),contexts:[depth0],data:data});\n if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n data.buffer.push("\\n \\n\\n");\n return buffer;\n});\n\nEmber.TEMPLATES[\'profile/tabs/hooks\'] = Ember.Handlebars.template(function anonymous(Handlebars, depth0, helpers, partials, data) { helpers = helpers || Ember.Handlebars.helpers;\n var buffer = \'\', stack1, foundHelper, escapeExpression=this.escapeExpression, helperMissing=helpers.helperMissing, self=this;\n\nfunction program1(depth0,data) {\n \n var buffer = \'\', stack1;\n data.buffer.push("\\n ");\n stack1 = helpers[\'if\'].call(depth0, "user.isSyncing", {hash:{},inverse:self.program(4, program4, data),fn:self.program(2, program2, data),contexts:[depth0],data:data});\n if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n data.buffer.push("\\n");\n return buffer;}\nfunction program2(depth0,data) {\n \n \n data.buffer.push("\\n \\n Please wait while we sync from GitHub \\n
\\n ");}\n\nfunction program4(depth0,data) {\n \n var buffer = \'\', stack1, foundHelper;\n data.buffer.push("\\n \\n Last synchronized from GitHub: ");\n foundHelper = helpers.formatTime;\n stack1 = foundHelper ? foundHelper.call(depth0, "user.syncedAt", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "formatTime", "user.syncedAt", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + "\\n \\n Sync now\\n \\n
\\n\\n \\n ");\n stack1 = helpers.each.call(depth0, "hook", "in", "hooks", {hash:{},inverse:self.program(7, program7, data),fn:self.program(5, program5, data),contexts:[depth0,depth0,depth0],data:data});\n if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n data.buffer.push("\\n \\n ");\n return buffer;}\nfunction program5(depth0,data) {\n \n var buffer = \'\', stack1;\n data.buffer.push("\\n \\n ");\n stack1 = helpers._triageMustache.call(depth0, "hook.slug", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + " \\n ");\n stack1 = helpers._triageMustache.call(depth0, "hook.description", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + "
\\n\\n \\n \\n ");\n return buffer;}\n\nfunction program7(depth0,data) {\n \n \n data.buffer.push("\\n \\n You do not seem to have any repositories that we could sync.\\n \\n ");}\n\nfunction program9(depth0,data) {\n \n \n data.buffer.push("\\n \\n Loading \\n
\\n");}\n\n data.buffer.push("\\n ");\n foundHelper = helpers[\'t\'];\n stack1 = foundHelper ? foundHelper.call(depth0, "profiles.show.message.your_repos", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "t", "profiles.show.message.your_repos", {hash:{},contexts:[depth0],data:data});\n if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n data.buffer.push("\\n
\\n\\n");\n stack1 = helpers[\'if\'].call(depth0, "hooks.isLoaded", {hash:{},inverse:self.program(9, program9, data),fn:self.program(1, program1, data),contexts:[depth0],data:data});\n if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n data.buffer.push("\\n\\n\\n\\n");\n return buffer;\n});\n\nEmber.TEMPLATES[\'profile/tabs/user\'] = Ember.Handlebars.template(function anonymous(Handlebars, depth0, helpers, partials, data) { helpers = helpers || Ember.Handlebars.helpers;\n var buffer = \'\', stack1, foundHelper, escapeExpression=this.escapeExpression, helperMissing=helpers.helperMissing;\n\n\n data.buffer.push(" \\n\\n\\n \\n ");\n foundHelper = helpers[\'t\'];\n stack1 = foundHelper ? foundHelper.call(depth0, "profiles.show.github", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "t", "profiles.show.github", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + ":\\n \\n \\n ");\n stack1 = helpers._triageMustache.call(depth0, "user.login", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + " \\n \\n \\n ");\n foundHelper = helpers[\'t\'];\n stack1 = foundHelper ? foundHelper.call(depth0, "profiles.show.email", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "t", "profiles.show.email", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + ":\\n \\n \\n ");\n stack1 = helpers._triageMustache.call(depth0, "user.email", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + "\\n \\n \\n ");\n foundHelper = helpers[\'t\'];\n stack1 = foundHelper ? foundHelper.call(depth0, "profiles.show.token", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "t", "profiles.show.token", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + ":\\n \\n \\n ");\n stack1 = helpers._triageMustache.call(depth0, "user.token", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + "\\n \\n \\n\\n\\n\\n\\n\\n");\n return buffer;\n});\n\nEmber.TEMPLATES[\'queues/list\'] = Ember.Handlebars.template(function anonymous(Handlebars, depth0, helpers, partials, data) { helpers = helpers || Ember.Handlebars.helpers;\n var buffer = \'\', stack1, escapeExpression=this.escapeExpression, self=this, helperMissing=helpers.helperMissing;\n\nfunction program1(depth0,data) {\n \n var buffer = \'\', stack1, foundHelper;\n data.buffer.push("\\n \\n ");\n foundHelper = helpers[\'t\'];\n stack1 = foundHelper ? foundHelper.call(depth0, "queue", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "t", "queue", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + ": ");\n stack1 = helpers._triageMustache.call(depth0, "queue.name", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + " \\n \\n ");\n stack1 = helpers.each.call(depth0, "job", "in", "queue", {hash:{},inverse:self.program(5, program5, data),fn:self.program(2, program2, data),contexts:[depth0,depth0,depth0],data:data});\n if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n data.buffer.push("\\n \\n \\n");\n return buffer;}\nfunction program2(depth0,data) {\n \n var buffer = \'\', stack1;\n data.buffer.push("\\n ");\n stack1 = {};\n stack1[\'jobBinding\'] = "job";\n stack1 = helpers.view.call(depth0, "Travis.QueueItemView", {hash:stack1,inverse:self.noop,fn:self.program(3, program3, data),contexts:[depth0],data:data});\n if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n data.buffer.push("\\n ");\n return buffer;}\nfunction program3(depth0,data) {\n \n var buffer = \'\', stack1;\n data.buffer.push("\\n \\n \\n ");\n stack1 = helpers._triageMustache.call(depth0, "job.repository.slug", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + "\\n \\n #");\n stack1 = helpers._triageMustache.call(depth0, "job.number", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + "\\n \\n ");\n return buffer;}\n\nfunction program5(depth0,data) {\n \n var buffer = \'\', stack1, foundHelper;\n data.buffer.push("\\n ");\n foundHelper = helpers[\'t\'];\n stack1 = foundHelper ? foundHelper.call(depth0, "no_job", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "t", "no_job", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + "\\n ");\n return buffer;}\n\n data.buffer.push("\\n");\n stack1 = helpers.each.call(depth0, "queue", "in", "controller", {hash:{},inverse:self.noop,fn:self.program(1, program1, data),contexts:[depth0,depth0,depth0],data:data});\n if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n data.buffer.push("\\n \\n\\n");\n return buffer;\n});\n\nEmber.TEMPLATES[\'repos/list\'] = Ember.Handlebars.template(function anonymous(Handlebars, depth0, helpers, partials, data) { helpers = helpers || Ember.Handlebars.helpers;\n var buffer = \'\', stack1, foundHelper, escapeExpression=this.escapeExpression, self=this, helperMissing=helpers.helperMissing;\n\nfunction program1(depth0,data) {\n \n var buffer = \'\', stack1;\n data.buffer.push("\\n ");\n stack1 = helpers[\'with\'].call(depth0, "view.repository", {hash:{},inverse:self.noop,fn:self.program(2, program2, data),contexts:[depth0],data:data});\n if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n data.buffer.push("\\n ");\n return buffer;}\nfunction program2(depth0,data) {\n \n var buffer = \'\', stack1, foundHelper;\n data.buffer.push("\\n \\n \\n ");\n stack1 = helpers[\'if\'].call(depth0, "slug", {hash:{},inverse:self.noop,fn:self.program(3, program3, data),contexts:[depth0],data:data});\n if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n data.buffer.push("\\n
\\n ");\n stack1 = helpers[\'if\'].call(depth0, "lastBuildId", {hash:{},inverse:self.noop,fn:self.program(5, program5, data),contexts:[depth0],data:data});\n if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n data.buffer.push("\\n\\n \\n ");\n foundHelper = helpers[\'t\'];\n stack1 = foundHelper ? foundHelper.call(depth0, "repositories.duration", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "t", "repositories.duration", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + ": \\n ");\n foundHelper = helpers.formatDuration;\n stack1 = foundHelper ? foundHelper.call(depth0, "lastBuildDuration", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "formatDuration", "lastBuildDuration", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + " ,\\n ");\n foundHelper = helpers[\'t\'];\n stack1 = foundHelper ? foundHelper.call(depth0, "repositories.finished_at", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "t", "repositories.finished_at", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + ": \\n ");\n foundHelper = helpers.formatTime;\n stack1 = foundHelper ? foundHelper.call(depth0, "lastBuildFinishedAt", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "formatTime", "lastBuildFinishedAt", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + " \\n
\\n\\n
\\n\\n ");\n stack1 = helpers[\'if\'].call(depth0, "description", {hash:{},inverse:self.noop,fn:self.program(7, program7, data),contexts:[depth0],data:data});\n if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n data.buffer.push("\\n ");\n return buffer;}\nfunction program3(depth0,data) {\n \n var buffer = \'\', stack1;\n data.buffer.push("\\n ");\n stack1 = helpers._triageMustache.call(depth0, "slug", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + " \\n ");\n return buffer;}\n\nfunction program5(depth0,data) {\n \n var buffer = \'\', stack1;\n data.buffer.push("\\n ");\n stack1 = helpers._triageMustache.call(depth0, "lastBuildNumber", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + " \\n ");\n return buffer;}\n\nfunction program7(depth0,data) {\n \n var buffer = \'\', stack1;\n data.buffer.push("\\n \\n
");\n stack1 = helpers._triageMustache.call(depth0, "description", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + "
\\n
\\n ");\n return buffer;}\n\n data.buffer.push("\\n ");\n stack1 = {};\n stack1[\'valueBinding\'] = "controller.search";\n stack1 = helpers.view.call(depth0, "Ember.TextField", {hash:stack1,contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + "\\n
\\n\\n");\n stack1 = helpers.view.call(depth0, "Travis.ReposListTabsView", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + "\\n\\n \\n\\n\\n ");\n stack1 = {};\n stack1[\'contentBinding\'] = "controller";\n foundHelper = helpers.collection;\n stack1 = foundHelper ? foundHelper.call(depth0, "Travis.RepositoriesListView", {hash:stack1,inverse:self.noop,fn:self.program(1, program1, data),contexts:[depth0],data:data}) : helperMissing.call(depth0, "collection", "Travis.RepositoriesListView", {hash:stack1,inverse:self.noop,fn:self.program(1, program1, data),contexts:[depth0],data:data});\n if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n data.buffer.push("\\n
\\n\\n");\n return buffer;\n});\n\nEmber.TEMPLATES[\'repos/list/tabs\'] = Ember.Handlebars.template(function anonymous(Handlebars, depth0, helpers, partials, data) { helpers = helpers || Ember.Handlebars.helpers;\n var buffer = \'\', stack1, foundHelper, escapeExpression=this.escapeExpression, helperMissing=helpers.helperMissing;\n\n\n data.buffer.push("\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n\\n\\n");\n return buffer;\n});\n\nEmber.TEMPLATES[\'repos/show\'] = Ember.Handlebars.template(function anonymous(Handlebars, depth0, helpers, partials, data) { helpers = helpers || Ember.Handlebars.helpers;\n var buffer = \'\', stack1, foundHelper, escapeExpression=this.escapeExpression, self=this, helperMissing=helpers.helperMissing;\n\nfunction program1(depth0,data) {\n \n var buffer = \'\', stack1;\n data.buffer.push("\\n ");\n stack1 = helpers[\'with\'].call(depth0, "view.repository", {hash:{},inverse:self.noop,fn:self.program(2, program2, data),contexts:[depth0],data:data});\n if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n data.buffer.push("\\n\\n ");\n return buffer;}\nfunction program2(depth0,data) {\n \n var buffer = \'\', stack1;\n data.buffer.push("\\n \\n\\n ");\n stack1 = helpers._triageMustache.call(depth0, "description", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + "
\\n\\n \\n \\n ");\n stack1 = helpers._triageMustache.call(depth0, "lastBuildLanguage", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + "\\n \\n \\n \\n ");\n stack1 = helpers._triageMustache.call(depth0, "stats.watchers", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + "\\n \\n \\n \\n \\n ");\n stack1 = helpers._triageMustache.call(depth0, "stats.forks", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + "\\n \\n \\n \\n\\n ");\n stack1 = helpers.view.call(depth0, "Travis.RepoShowTabsView", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + "\\n ");\n stack1 = helpers.view.call(depth0, "Travis.RepoShowToolsView", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + "\\n ");\n return buffer;}\n\nfunction program4(depth0,data) {\n \n \n data.buffer.push("\\n Loading \\n ");}\n\n data.buffer.push("\\n ");\n stack1 = helpers[\'if\'].call(depth0, "view.repository.isLoaded", {hash:{},inverse:self.program(4, program4, data),fn:self.program(1, program1, data),contexts:[depth0],data:data});\n if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n data.buffer.push("\\n\\n
\\n ");\n foundHelper = helpers.outlet;\n stack1 = foundHelper ? foundHelper.call(depth0, "pane", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "outlet", "pane", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + "\\n
\\n
\\n\\n\\n");\n return buffer;\n});\n\nEmber.TEMPLATES[\'repos/show/tabs\'] = Ember.Handlebars.template(function anonymous(Handlebars, depth0, helpers, partials, data) { helpers = helpers || Ember.Handlebars.helpers;\n var buffer = \'\', stack1, escapeExpression=this.escapeExpression, helperMissing=helpers.helperMissing, self=this;\n\nfunction program1(depth0,data) {\n \n var buffer = \'\', stack1, foundHelper;\n data.buffer.push("\\n \\n ");\n foundHelper = helpers[\'t\'];\n stack1 = foundHelper ? foundHelper.call(depth0, "repositories.tabs.current", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "t", "repositories.tabs.current", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + "\\n \\n ");\n return buffer;}\n\nfunction program3(depth0,data) {\n \n var buffer = \'\', stack1, foundHelper;\n data.buffer.push("\\n \\n ");\n foundHelper = helpers[\'t\'];\n stack1 = foundHelper ? foundHelper.call(depth0, "repositories.tabs.build_history", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "t", "repositories.tabs.build_history", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + "\\n \\n ");\n return buffer;}\n\nfunction program5(depth0,data) {\n \n var buffer = \'\', stack1, foundHelper;\n data.buffer.push("\\n \\n ");\n foundHelper = helpers[\'t\'];\n stack1 = foundHelper ? foundHelper.call(depth0, "repositories.tabs.pull_requests", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "t", "repositories.tabs.pull_requests", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + "\\n \\n ");\n return buffer;}\n\nfunction program7(depth0,data) {\n \n var buffer = \'\', stack1, foundHelper;\n data.buffer.push("\\n \\n ");\n foundHelper = helpers[\'t\'];\n stack1 = foundHelper ? foundHelper.call(depth0, "repositories.tabs.branches", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "t", "repositories.tabs.branches", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + "\\n \\n ");\n return buffer;}\n\nfunction program9(depth0,data) {\n \n var buffer = \'\', stack1, foundHelper;\n data.buffer.push("\\n \\n ");\n foundHelper = helpers[\'t\'];\n stack1 = foundHelper ? foundHelper.call(depth0, "repositories.tabs.build", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "t", "repositories.tabs.build", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + " #");\n stack1 = helpers._triageMustache.call(depth0, "view.build.number", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + "\\n \\n ");\n return buffer;}\n\nfunction program11(depth0,data) {\n \n var buffer = \'\', stack1, foundHelper;\n data.buffer.push("\\n \\n ");\n foundHelper = helpers[\'t\'];\n stack1 = foundHelper ? foundHelper.call(depth0, "repositories.tabs.job", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "t", "repositories.tabs.job", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + " #");\n stack1 = helpers._triageMustache.call(depth0, "view.job.number", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + "\\n \\n ");\n return buffer;}\n\n data.buffer.push("\\n \\n \\n ");\n stack1 = helpers[\'if\'].call(depth0, "view.repository.slug", {hash:{},inverse:self.noop,fn:self.program(1, program1, data),contexts:[depth0],data:data});\n if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n data.buffer.push("\\n \\n \\n \\n \\n ");\n stack1 = helpers[\'if\'].call(depth0, "view.repository.slug", {hash:{},inverse:self.noop,fn:self.program(3, program3, data),contexts:[depth0],data:data});\n if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n data.buffer.push("\\n \\n \\n \\n \\n ");\n stack1 = helpers[\'if\'].call(depth0, "view.repository.slug", {hash:{},inverse:self.noop,fn:self.program(5, program5, data),contexts:[depth0],data:data});\n if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n data.buffer.push("\\n \\n \\n \\n \\n ");\n stack1 = helpers[\'if\'].call(depth0, "view.repository.slug", {hash:{},inverse:self.noop,fn:self.program(7, program7, data),contexts:[depth0],data:data});\n if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n data.buffer.push("\\n \\n \\n \\n \\n ");\n stack1 = helpers[\'if\'].call(depth0, "view.build.id", {hash:{},inverse:self.noop,fn:self.program(9, program9, data),contexts:[depth0],data:data});\n if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n data.buffer.push("\\n \\n \\n \\n \\n ");\n stack1 = helpers[\'if\'].call(depth0, "view.job.id", {hash:{},inverse:self.noop,fn:self.program(11, program11, data),contexts:[depth0],data:data});\n if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n data.buffer.push("\\n \\n \\n \\n\\n");\n return buffer;\n});\n\nEmber.TEMPLATES[\'repos/show/tools\'] = Ember.Handlebars.template(function anonymous(Handlebars, depth0, helpers, partials, data) { helpers = helpers || Ember.Handlebars.helpers;\n var buffer = \'\', stack1, foundHelper, escapeExpression=this.escapeExpression, helperMissing=helpers.helperMissing, self=this;\n\nfunction program1(depth0,data) {\n \n var buffer = \'\', stack1;\n data.buffer.push("\\n ");\n stack1 = {};\n stack1[\'contentBinding\'] = "view.branches";\n stack1[\'selectionBinding\'] = "view.branch";\n stack1[\'optionLabelPath\'] = "content.commit.branch";\n stack1[\'optionValuePath\'] = "content.commit.branch";\n stack1 = helpers.view.call(depth0, "Ember.Select", {hash:stack1,contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + "\\n ");\n return buffer;}\n\nfunction program3(depth0,data) {\n \n \n data.buffer.push("\\n \\n ");}\n\n data.buffer.push("\\n\\n");\n return buffer;\n});\n\nEmber.TEMPLATES[\'sponsors/decks\'] = Ember.Handlebars.template(function anonymous(Handlebars, depth0, helpers, partials, data) { helpers = helpers || Ember.Handlebars.helpers;\n var buffer = \'\', stack1, foundHelper, escapeExpression=this.escapeExpression, self=this, helperMissing=helpers.helperMissing;\n\nfunction program1(depth0,data) {\n \n var buffer = \'\', stack1;\n data.buffer.push("\\n ");\n stack1 = helpers.each.call(depth0, "deck", {hash:{},inverse:self.noop,fn:self.program(2, program2, data),contexts:[depth0],data:data});\n if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n data.buffer.push("\\n ");\n return buffer;}\nfunction program2(depth0,data) {\n \n var buffer = \'\', stack1;\n data.buffer.push("\\n \\n \\n \\n \\n \\n ");\n return buffer;}\n\n data.buffer.push("");\n foundHelper = helpers[\'t\'];\n stack1 = foundHelper ? foundHelper.call(depth0, "layouts.application.sponsers", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "t", "layouts.application.sponsers", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + " \\n\\n\\n\\n\\n \\n ");\n foundHelper = helpers[\'t\'];\n stack1 = foundHelper ? foundHelper.call(depth0, "layouts.application.sponsors_link", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "t", "layouts.application.sponsors_link", {hash:{},contexts:[depth0],data:data});\n if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n data.buffer.push("\\n \\n
\\n\\n");\n return buffer;\n});\n\nEmber.TEMPLATES[\'sponsors/links\'] = Ember.Handlebars.template(function anonymous(Handlebars, depth0, helpers, partials, data) { helpers = helpers || Ember.Handlebars.helpers;\n var buffer = \'\', stack1, foundHelper, helperMissing=helpers.helperMissing, escapeExpression=this.escapeExpression, self=this;\n\nfunction program1(depth0,data) {\n \n var buffer = \'\', stack1;\n data.buffer.push("\\n \\n ");\n stack1 = {};\n stack1[\'unescaped\'] = "true";\n stack1 = helpers._triageMustache.call(depth0, "link", {hash:stack1,contexts:[depth0],data:data});\n if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n data.buffer.push("\\n \\n ");\n return buffer;}\n\n data.buffer.push("\\n
");\n foundHelper = helpers[\'t\'];\n stack1 = foundHelper ? foundHelper.call(depth0, "layouts.application.sponsers", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "t", "layouts.application.sponsers", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + " \\n\\n \\n\\n
\\n \\n ");\n foundHelper = helpers[\'t\'];\n stack1 = foundHelper ? foundHelper.call(depth0, "layouts.application.sponsors_link", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "t", "layouts.application.sponsors_link", {hash:{},contexts:[depth0],data:data});\n if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n data.buffer.push("\\n \\n
\\n
\\n\\n\\n");\n return buffer;\n});\n\nEmber.TEMPLATES[\'stats/show\'] = Ember.Handlebars.template(function anonymous(Handlebars, depth0, helpers, partials, data) { helpers = helpers || Ember.Handlebars.helpers;\n \n\n\n data.buffer.push("
\\n
\\n\\n");\n});\n\nEmber.TEMPLATES[\'workers/list\'] = Ember.Handlebars.template(function anonymous(Handlebars, depth0, helpers, partials, data) { helpers = helpers || Ember.Handlebars.helpers;\n var buffer = \'\', stack1, escapeExpression=this.escapeExpression, self=this, helperMissing=helpers.helperMissing;\n\nfunction program1(depth0,data) {\n \n var buffer = \'\', stack1, foundHelper;\n data.buffer.push("\\n \\n ");\n foundHelper = helpers[\'t\'];\n stack1 = foundHelper ? foundHelper.call(depth0, "workers", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "t", "workers", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + "\\n \\n \\n \\n ");\n stack1 = helpers.each.call(depth0, "group", "in", "controller.groups", {hash:{},inverse:self.program(11, program11, data),fn:self.program(2, program2, data),contexts:[depth0,depth0,depth0],data:data});\n if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n data.buffer.push("\\n \\n");\n return buffer;}\nfunction program2(depth0,data) {\n \n var buffer = \'\', stack1;\n data.buffer.push("\\n ");\n stack1 = helpers.view.call(depth0, "Travis.WorkersListView", {hash:{},inverse:self.noop,fn:self.program(3, program3, data),contexts:[depth0],data:data});\n if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n data.buffer.push("\\n ");\n return buffer;}\nfunction program3(depth0,data) {\n \n var buffer = \'\', stack1;\n data.buffer.push("\\n \\n \\n ");\n stack1 = helpers._triageMustache.call(depth0, "group.firstObject.host", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + "\\n \\n \\n ");\n stack1 = helpers.each.call(depth0, "worker", "in", "group", {hash:{},inverse:self.noop,fn:self.program(4, program4, data),contexts:[depth0,depth0,depth0],data:data});\n if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n data.buffer.push("\\n \\n \\n ");\n return buffer;}\nfunction program4(depth0,data) {\n \n var buffer = \'\', stack1;\n data.buffer.push("\\n ");\n stack1 = {};\n stack1[\'workerBinding\'] = "worker";\n stack1 = helpers.view.call(depth0, "Travis.WorkersItemView", {hash:stack1,inverse:self.noop,fn:self.program(5, program5, data),contexts:[depth0],data:data});\n if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n data.buffer.push("\\n ");\n return buffer;}\nfunction program5(depth0,data) {\n \n var buffer = \'\', stack1;\n data.buffer.push("\\n \\n
\\n ");\n stack1 = helpers[\'if\'].call(depth0, "worker.isWorking", {hash:{},inverse:self.program(9, program9, data),fn:self.program(6, program6, data),contexts:[depth0],data:data});\n if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n data.buffer.push("\\n \\n ");\n return buffer;}\nfunction program6(depth0,data) {\n \n var buffer = \'\', stack1;\n data.buffer.push("\\n ");\n stack1 = helpers[\'if\'].call(depth0, "worker.job_id", {hash:{},inverse:self.noop,fn:self.program(7, program7, data),contexts:[depth0],data:data});\n if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n data.buffer.push("\\n ");\n return buffer;}\nfunction program7(depth0,data) {\n \n var buffer = \'\', stack1;\n data.buffer.push("\\n \\n ");\n stack1 = helpers._triageMustache.call(depth0, "view.display", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + "\\n \\n ");\n return buffer;}\n\nfunction program9(depth0,data) {\n \n var buffer = \'\', stack1;\n data.buffer.push("\\n ");\n stack1 = helpers._triageMustache.call(depth0, "view.display", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + "\\n ");\n return buffer;}\n\nfunction program11(depth0,data) {\n \n \n data.buffer.push("\\n No workers\\n ");}\n\n stack1 = helpers.view.call(depth0, "Travis.WorkersView", {hash:{},inverse:self.noop,fn:self.program(1, program1, data),contexts:[depth0],data:data});\n if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n data.buffer.push("\\n\\n");\n return buffer;\n});\n\n})();\n//@ sourceURL=templates'
+),minispade.register("ext/jquery","(function() {(function() {\n\n $.fn.extend({\n outerHtml: function() {\n return $(this).wrap('
').parent().html();\n },\n outerElement: function() {\n return $($(this).outerHtml()).empty();\n },\n flash: function() {\n return Utils.flash(this);\n },\n unflash: function() {\n return Utils.unflash(this);\n },\n filterLog: function() {\n this.deansi();\n return this.foldLog();\n },\n deansi: function() {\n return this.html(Utils.deansi(this.html()));\n },\n foldLog: function() {\n return this.html(Utils.foldLog(this.html()));\n },\n unfoldLog: function() {\n return this.html(Utils.unfoldLog(this.html()));\n },\n updateTimes: function() {\n return Utils.updateTimes(this);\n },\n activateTab: function(tab) {\n return Utils.activateTab(this, tab);\n },\n timeInWords: function() {\n return $(this).each(function() {\n return $(this).text(Utils.timeInWords(parseInt($(this).attr('title'))));\n });\n },\n updateGithubStats: function(repository) {\n return Utils.updateGithubStats(repository, $(this));\n }\n });\n\n $.extend({\n isEmpty: function(obj) {\n if ($.isArray(obj)) {\n return !obj.length;\n } else if ($.isObject(obj)) {\n return !$.keys(obj).length;\n } else {\n return !obj;\n }\n },\n isObject: function(obj) {\n return Object.prototype.toString.call(obj) === '[object Object]';\n },\n keys: function(obj) {\n var keys;\n keys = [];\n $.each(obj, function(key) {\n return keys.push(key);\n });\n return keys;\n },\n values: function(obj) {\n var values;\n values = [];\n $.each(obj, function(key, value) {\n return values.push(value);\n });\n return values;\n },\n underscore: function(string) {\n return string[0].toLowerCase() + string.substring(1).replace(/([A-Z])?/g, function(match, chr) {\n if (chr) {\n return \"_\" + (chr.toUpperCase());\n } else {\n return '';\n }\n });\n },\n camelize: function(string, uppercase) {\n string = uppercase === false ? $.underscore(string) : $.capitalize(string);\n return string.replace(/_(.)?/g, function(match, chr) {\n if (chr) {\n return chr.toUpperCase();\n } else {\n return '';\n }\n });\n },\n capitalize: function(string) {\n return string[0].toUpperCase() + string.substring(1);\n },\n compact: function(object) {\n return $.grep(object, function(value) {\n return !!value;\n });\n },\n all: function(array, callback) {\n var args, i;\n args = Array.prototype.slice.apply(arguments);\n callback = args.pop();\n array = args.pop() || this;\n i = 0;\n while (i < array.length) {\n if (callback(array[i])) {\n return false;\n }\n i++;\n }\n return true;\n },\n detect: function(array, callback) {\n var args, i;\n args = Array.prototype.slice.apply(arguments);\n callback = args.pop();\n array = args.pop() || this;\n i = 0;\n while (i < array.length) {\n if (callback(array[i])) {\n return array[i];\n }\n i++;\n }\n },\n select: function(array, callback) {\n var args, i, result;\n args = Array.prototype.slice.apply(arguments);\n callback = args.pop();\n array = args.pop() || this;\n result = [];\n i = 0;\n while (i < array.length) {\n if (callback(array[i])) {\n result.push(array[i]);\n }\n i++;\n }\n return result;\n },\n slice: function(object, key) {\n var keys, result;\n keys = Array.prototype.slice.apply(arguments);\n object = (typeof keys[0] === 'object' ? keys.shift() : this);\n result = {};\n for (key in object) {\n if (keys.indexOf(key) > -1) {\n result[key] = object[key];\n }\n }\n return result;\n },\n only: function(object) {\n var key, keys, result;\n keys = Array.prototype.slice.apply(arguments);\n object = (typeof keys[0] === 'object' ? keys.shift() : this);\n result = {};\n for (key in object) {\n if (keys.indexOf(key) !== -1) {\n result[key] = object[key];\n }\n }\n return result;\n },\n except: function(object) {\n var key, keys, result;\n keys = Array.prototype.slice.apply(arguments);\n object = (typeof keys[0] === 'object' ? keys.shift() : this);\n result = {};\n for (key in object) {\n if (keys.indexOf(key) === -1) {\n result[key] = object[key];\n }\n }\n return result;\n },\n intersect: function(array, other) {\n return array.filter(function(element) {\n return other.indexOf(element) !== -1;\n });\n },\n map: function(elems, callback, arg) {\n var i, isArray, key, length, ret, value;\n value = void 0;\n key = void 0;\n ret = [];\n i = 0;\n length = elems.length;\n isArray = elems instanceof jQuery || length !== void 0 && typeof length === 'number' && (length > 0 && elems[0] && elems[length - 1]) || length === 0 || jQuery.isArray(elems);\n if (isArray) {\n while (i < length) {\n value = callback(elems[i], i, arg);\n if (value != null) {\n ret[ret.length] = value;\n }\n i++;\n }\n } else {\n for (key in elems) {\n value = callback(elems[key], key, arg);\n if (value != null) {\n ret[ret.length] = value;\n }\n }\n }\n return ret.concat.apply([], ret);\n },\n shuffle: function(array) {\n var current, tmp, top;\n array = array.slice();\n top = array.length;\n while (top && --top) {\n current = Math.floor(Math.random() * (top + 1));\n tmp = array[current];\n array[current] = array[top];\n array[top] = tmp;\n }\n return array;\n },\n truncate: function(string, length) {\n if (string.length > length) {\n return string.trim().substring(0, length) + '...';\n } else {\n return string;\n }\n }\n });\n\n}).call(this);\n\n})();\n//@ sourceURL=ext/jquery"),minispade.register("travis/ajax","(function() {(function() {\n\n jQuery.support.cors = true;\n\n this.Travis.Ajax = Ember.Mixin.create({\n DEFAULT_OPTIONS: {\n accepts: {\n json: 'application/vnd.travis-ci.2+json'\n }\n },\n post: function(url, data, callback) {\n return this.ajax(url, 'post', {\n data: data,\n success: callback\n });\n },\n ajax: function(url, method, options) {\n var accessToken, endpoint, _base, _ref;\n endpoint = Travis.config.api_endpoint || '';\n options = options || {};\n if (accessToken = (_ref = Travis.app) != null ? _ref.get('auth.accessToken') : void 0) {\n options.headers || (options.headers = {});\n (_base = options.headers)['Authorization'] || (_base['Authorization'] = \"token \" + accessToken);\n }\n options.url = \"\" + endpoint + url;\n options.type = method;\n options.dataType = 'json';\n options.contentType = 'application/json; charset=utf-8';\n options.context = this;\n if (options.data && method !== 'GET' && method !== 'get') {\n options.data = JSON.stringify(options.data);\n }\n return $.ajax($.extend(options, this.DEFAULT_OPTIONS));\n }\n });\n\n this.Travis.ajax = Em.Object.create(this.Travis.Ajax, {\n get: function(url, callback) {\n return this.ajax(url, 'get', {\n success: callback\n });\n }\n });\n\n}).call(this);\n\n})();\n//@ sourceURL=travis/ajax"),minispade.register("travis/expandable_record_array","(function() {(function() {\n\n Travis.ExpandableRecordArray = DS.RecordArray.extend({\n isLoaded: false,\n isLoading: false,\n load: function(array) {\n var observer, self;\n this.set('isLoading', true);\n self = this;\n observer = function() {\n var content;\n if (this.get('isLoaded')) {\n content = self.get('content');\n array.removeObserver('isLoaded', observer);\n array.forEach(function(record) {\n return self.pushObject(record);\n });\n self.set('isLoading', false);\n return self.set('isLoaded', true);\n }\n };\n return array.addObserver('isLoaded', observer);\n },\n pushObject: function(record) {\n var clientId, id, ids;\n ids = this.get('content');\n id = record.get('id');\n clientId = record.get('clientId');\n if (ids.contains(clientId)) {\n return;\n }\n return ids.pushObject(clientId);\n }\n });\n\n}).call(this);\n\n})();\n//@ sourceURL=travis/expandable_record_array"),minispade.register("travis/log","(function() {(function() {\n\n this.Travis.Log = {\n FOLDS: {\n schema: /(\\$ (?:bundle exec )?rake( db:create)? db:schema:load[\\s\\S]*?-- assume_migrated_upto_version[\\s\\S]*?<\\/p>\\n.*<\\/p>)/g,\n migrate: /(\\$ (?:bundle exec )?rake( db:create)? db:migrate[\\s\\S]*== +\\w+: migrated \\(.*\\) =+)/g,\n bundle: /(\\$ bundle install.*<\\/p>\\n((Updating|Using|Installing|Fetching|remote:|Receiving|Resolving).*?<\\/p>\\n|<\\/p>\\n)*)/g,\n exec: /([\\/\\w]*.rvm\\/rubies\\/[\\S]*?\\/(ruby|rbx|jruby) .*?<\\/p>)/g\n },\n filter: function(log) {\n log = this.escape(log);\n log = this.deansi(log);\n log = log.replace(/\\r/g, '');\n log = this.number(log);\n log = this.fold(log);\n log = log.replace(/\\n/g, '');\n return log;\n },\n stripPaths: function(log) {\n return log.replace(/\\/home\\/vagrant\\/builds(\\/[^\\/\\n]+){2}\\//g, '');\n },\n escape: function(log) {\n return Handlebars.Utils.escapeExpression(log);\n },\n escapeRuby: function(log) {\n return log.replace(/#<(\\w+.*?)>/, '#<$1>');\n },\n number: function(log) {\n var result;\n result = '';\n $.each(log.trim().split('\\n'), function(ix, line) {\n var number, path;\n number = ix + 1;\n path = Travis.Log.location().substr(1).replace(/\\/L\\d+/, '') + '/L' + number;\n return result += '%@ %@
\\n'.fmt(path, path, number, number, line);\n });\n return result.trim();\n },\n deansi: function(log) {\n var ansi, text;\n log = log.replace(/\\r\\r/g, '\\r').replace(/\\033\\[K\\r/g, '\\r').replace(/^.*\\r(?!$)/gm, '').replace(/\\[2K/g, '').replace(/\\033\\(B/g, \"\");\n ansi = ansiparse(log);\n text = '';\n ansi.forEach(function(part) {\n var classes;\n classes = [];\n part.foreground && classes.push(part.foreground);\n part.background && classes.push('bg-' + part.background);\n part.bold && classes.push('bold');\n part.italic && classes.push('italic');\n return text += (classes.length ? '' + part.text + ' ' : part.text);\n });\n return text.replace(/\\033/g, '');\n },\n fold: function(log) {\n log = this.unfold(log);\n $.each(Travis.Log.FOLDS, function(name, pattern) {\n return log = log.replace(pattern, function() {\n return '' + arguments[1].trim() + '
';\n });\n });\n return log;\n },\n unfold: function(log) {\n return log.replace(/([\\s\\S]*?)<\\/div>/g, '$1\\n');\n },\n location: function() {\n return window.location.hash;\n }\n };\n\n}).call(this);\n\n})();\n//@ sourceURL=travis/log"),minispade.register("travis/model","(function() {(function() {\n\n this.Travis.Model = DS.Model.extend({\n primaryKey: 'id',\n id: DS.attr('number'),\n refresh: function() {\n var id;\n id = this.get('id');\n if (id) {\n return Travis.app.store.adapter.find(Travis.app.store, this.constructor, id);\n }\n },\n update: function(attrs) {\n var _this = this;\n $.each(attrs, function(key, value) {\n if (key !== 'id') {\n return _this.set(key, value);\n }\n });\n return this;\n }\n });\n\n this.Travis.Model.reopenClass({\n find: function() {\n if (arguments.length === 0) {\n return Travis.app.store.findAll(this);\n } else {\n return this._super.apply(this, arguments);\n }\n },\n filter: function(callback) {\n return Travis.app.store.filter(this, callback);\n },\n load: function(attrs) {\n return Travis.app.store.load(this, attrs);\n },\n buildURL: function(suffix) {\n var base, url;\n base = this.url || this.pluralName();\n Ember.assert('Base URL (' + base + ') must not start with slash', !base || base.toString().charAt(0) !== '/');\n Ember.assert('URL suffix (' + suffix + ') must not start with slash', !suffix || suffix.toString().charAt(0) !== '/');\n url = [base];\n if (suffix !== void 0) {\n url.push(suffix);\n }\n return url.join('/');\n },\n singularName: function() {\n var name, parts;\n parts = this.toString().split('.');\n name = parts[parts.length - 1];\n return name.replace(/([A-Z])/g, '_$1').toLowerCase().slice(1);\n },\n pluralName: function() {\n return Travis.app.store.adapter.pluralize(this.singularName());\n }\n });\n\n}).call(this);\n\n})();\n//@ sourceURL=travis/model"),minispade.register("travis/ticker","(function() {(function() {\n\n this.Travis.Ticker = Ember.Object.extend({\n init: function() {\n if (this.get('interval') !== -1) {\n return this.schedule();\n }\n },\n tick: function() {\n var context, target, targets, _i, _len;\n context = this.get('context');\n targets = this.get('targets') || [this.get('target')];\n for (_i = 0, _len = targets.length; _i < _len; _i++) {\n target = targets[_i];\n if (context) {\n target = context.get(target);\n }\n if (target) {\n target.tick();\n }\n }\n return this.schedule();\n },\n schedule: function() {\n var _this = this;\n return Ember.run.later((function() {\n return _this.tick();\n }), this.get('interval') || Travis.app.TICK_INTERVAL);\n }\n });\n\n}).call(this);\n\n})();\n//@ sourceURL=travis/ticker"),minispade.register("travis","(function() {(function() {\nminispade.require('ext/jquery');\nminispade.require('ext/ember/namespace');\n\n this.Travis = Em.Namespace.create({\n config: {\n api_endpoint: $('meta[rel=\"travis.api_endpoint\"]').attr('href')\n },\n CONFIG_KEYS: ['rvm', 'gemfile', 'env', 'jdk', 'otp_release', 'php', 'node_js', 'perl', 'python', 'scala'],\n ROUTES: {\n 'profile/:login/me': ['profile', 'user'],\n 'profile/:login': ['profile', 'hooks'],\n 'profile': ['profile', 'hooks'],\n 'stats': ['stats', 'show'],\n ':owner/:name/jobs/:id/:line': ['home', 'job'],\n ':owner/:name/jobs/:id': ['home', 'job'],\n ':owner/:name/builds/:id': ['home', 'build'],\n ':owner/:name/builds': ['home', 'builds'],\n ':owner/:name/pull_requests': ['home', 'pullRequests'],\n ':owner/:name/branches': ['home', 'branches'],\n ':owner/:name': ['home', 'current'],\n '': ['home', 'index'],\n '#': ['home', 'index']\n },\n QUEUES: [\n {\n name: 'common',\n display: 'Common'\n }, {\n name: 'php',\n display: 'PHP, Perl and Python'\n }, {\n name: 'node_js',\n display: 'Node.js'\n }, {\n name: 'jvmotp',\n display: 'JVM and Erlang'\n }, {\n name: 'rails',\n display: 'Rails'\n }, {\n name: 'spree',\n display: 'Spree'\n }\n ],\n INTERVALS: {\n sponsors: -1,\n times: -1,\n updateTimes: 1000\n },\n run: function(attrs) {\n var _this = this;\n if (location.hash.slice(0, 2) === '#!') {\n location.href = location.href.replace('#!/', '');\n }\n return this.loadConfig(function(config) {\n var app;\n app = Travis.App.create(attrs || {});\n $.each(Travis, function(key, value) {\n if (value && value.isClass && key !== 'constructor') {\n return app[key] = value;\n }\n });\n _this.app = app;\n _this.store = app.store;\n return $(function() {\n return app.initialize();\n });\n });\n },\n loadConfig: function(callback) {\n var _this = this;\n return this.ajax.get('/config', function(data) {\n $.extend(_this.config, data.config);\n console.log(\"Connecting to \" + data.config.api_endpoint);\n return callback(data.config);\n });\n }\n });\nminispade.require('travis/ajax');\nminispade.require('app');\n\n}).call(this);\n\n})();\n//@ sourceURL=travis"),minispade.register("templates",'(function() {\nEmber.TEMPLATES[\'application\'] = Ember.Handlebars.template(function anonymous(Handlebars, depth0, helpers, partials, data) { helpers = helpers || Ember.Handlebars.helpers;\n var buffer = \'\', stack1, escapeExpression=this.escapeExpression;\n\n\n stack1 = helpers._triageMustache.call(depth0, "outlet", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + "\\n\\n");\n return buffer;\n});\n\nEmber.TEMPLATES[\'builds/list\'] = Ember.Handlebars.template(function anonymous(Handlebars, depth0, helpers, partials, data) { helpers = helpers || Ember.Handlebars.helpers;\n var buffer = \'\', stack1, escapeExpression=this.escapeExpression, self=this, helperMissing=helpers.helperMissing;\n\nfunction program1(depth0,data) {\n \n var buffer = \'\', stack1, foundHelper;\n data.buffer.push("\\n
\\n \\n \\n ");\n foundHelper = helpers[\'t\'];\n stack1 = foundHelper ? foundHelper.call(depth0, "builds.name", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "t", "builds.name", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + " \\n ");\n foundHelper = helpers[\'t\'];\n stack1 = foundHelper ? foundHelper.call(depth0, "builds.commit", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "t", "builds.commit", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + " \\n ");\n foundHelper = helpers[\'t\'];\n stack1 = foundHelper ? foundHelper.call(depth0, "builds.message", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "t", "builds.message", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + " \\n ");\n foundHelper = helpers[\'t\'];\n stack1 = foundHelper ? foundHelper.call(depth0, "builds.duration", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "t", "builds.duration", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + " \\n ");\n foundHelper = helpers[\'t\'];\n stack1 = foundHelper ? foundHelper.call(depth0, "builds.finished_at", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "t", "builds.finished_at", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + " \\n \\n \\n\\n \\n ");\n stack1 = helpers.each.call(depth0, "build", "in", "builds", {hash:{},inverse:self.noop,fn:self.program(2, program2, data),contexts:[depth0,depth0,depth0],data:data});\n if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n data.buffer.push("\\n \\n
\\n
\\n ");\n stack1 = helpers.view.call(depth0, "view.ShowMoreButton", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + "\\n
\\n");\n return buffer;}\nfunction program2(depth0,data) {\n \n var buffer = \'\', stack1;\n data.buffer.push("\\n ");\n stack1 = {};\n stack1[\'contextBinding\'] = "build";\n stack1 = helpers.view.call(depth0, "Travis.BuildsItemView", {hash:stack1,inverse:self.noop,fn:self.program(3, program3, data),contexts:[depth0],data:data});\n if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n data.buffer.push("\\n ");\n return buffer;}\nfunction program3(depth0,data) {\n \n var buffer = \'\', stack1, foundHelper;\n data.buffer.push("\\n
\\n \\n ");\n stack1 = helpers[\'if\'].call(depth0, "id", {hash:{},inverse:self.noop,fn:self.program(4, program4, data),contexts:[depth0],data:data});\n if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n data.buffer.push("\\n \\n
\\n \\n ");\n foundHelper = helpers.formatCommit;\n stack1 = foundHelper ? foundHelper.call(depth0, "commit", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "formatCommit", "commit", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + "\\n \\n \\n
\\n ");\n stack1 = {};\n stack1[\'short\'] = "true";\n foundHelper = helpers.formatMessage;\n stack1 = foundHelper ? foundHelper.call(depth0, "commit.message", {hash:stack1,contexts:[depth0],data:data}) : helperMissing.call(depth0, "formatMessage", "commit.message", {hash:stack1,contexts:[depth0],data:data});\n if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n data.buffer.push("\\n \\n
\\n ");\n foundHelper = helpers.formatDuration;\n stack1 = foundHelper ? foundHelper.call(depth0, "duration", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "formatDuration", "duration", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + "\\n \\n
\\n ");\n foundHelper = helpers.formatTime;\n stack1 = foundHelper ? foundHelper.call(depth0, "finishedAt", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "formatTime", "finishedAt", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + "\\n \\n ");\n return buffer;}\nfunction program4(depth0,data) {\n \n var buffer = \'\', stack1;\n data.buffer.push("\\n
\\n ");\n stack1 = helpers._triageMustache.call(depth0, "number", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + "\\n \\n ");\n return buffer;}\n\nfunction program6(depth0,data) {\n \n \n data.buffer.push("\\n
Loading
\\n");}\n\n stack1 = helpers[\'if\'].call(depth0, "builds.isLoaded", {hash:{},inverse:self.program(6, program6, data),fn:self.program(1, program1, data),contexts:[depth0],data:data});\n if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n data.buffer.push("\\n\\n");\n return buffer;\n});\n\nEmber.TEMPLATES[\'builds/show\'] = Ember.Handlebars.template(function anonymous(Handlebars, depth0, helpers, partials, data) { helpers = helpers || Ember.Handlebars.helpers;\n var buffer = \'\', stack1, escapeExpression=this.escapeExpression, helperMissing=helpers.helperMissing, self=this;\n\nfunction program1(depth0,data) {\n \n var buffer = \'\', stack1;\n data.buffer.push("\\n ");\n stack1 = helpers[\'if\'].call(depth0, "loading", {hash:{},inverse:self.program(4, program4, data),fn:self.program(2, program2, data),contexts:[depth0],data:data});\n if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n data.buffer.push("\\n");\n return buffer;}\nfunction program2(depth0,data) {\n \n \n data.buffer.push("\\n
Loading \\n ");}\n\nfunction program4(depth0,data) {\n \n var buffer = \'\', stack1, foundHelper;\n data.buffer.push("\\n
\\n \\n
");\n foundHelper = helpers[\'t\'];\n stack1 = foundHelper ? foundHelper.call(depth0, "builds.name", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "t", "builds.name", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + " \\n \\n \\n ");\n stack1 = helpers[\'if\'].call(depth0, "build.id", {hash:{},inverse:self.noop,fn:self.program(5, program5, data),contexts:[depth0],data:data});\n if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n data.buffer.push("\\n \\n ");\n foundHelper = helpers[\'t\'];\n stack1 = foundHelper ? foundHelper.call(depth0, "builds.finished_at", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "t", "builds.finished_at", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + " \\n ");\n foundHelper = helpers.formatTime;\n stack1 = foundHelper ? foundHelper.call(depth0, "build.finishedAt", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "formatTime", "build.finishedAt", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + " \\n ");\n foundHelper = helpers[\'t\'];\n stack1 = foundHelper ? foundHelper.call(depth0, "builds.duration", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "t", "builds.duration", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + " \\n ");\n foundHelper = helpers.formatDuration;\n stack1 = foundHelper ? foundHelper.call(depth0, "build.duration", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "formatDuration", "build.duration", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + " \\n \\n\\n \\n
");\n foundHelper = helpers[\'t\'];\n stack1 = foundHelper ? foundHelper.call(depth0, "builds.commit", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "t", "builds.commit", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + " \\n
");\n foundHelper = helpers.formatCommit;\n stack1 = foundHelper ? foundHelper.call(depth0, "build.commit", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "formatCommit", "build.commit", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + " \\n ");\n stack1 = helpers[\'if\'].call(depth0, "commit.compareUrl", {hash:{},inverse:self.noop,fn:self.program(7, program7, data),contexts:[depth0],data:data});\n if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n data.buffer.push("\\n ");\n stack1 = helpers[\'if\'].call(depth0, "commit.authorName", {hash:{},inverse:self.noop,fn:self.program(9, program9, data),contexts:[depth0],data:data});\n if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n data.buffer.push("\\n ");\n stack1 = helpers[\'if\'].call(depth0, "commit.committerName", {hash:{},inverse:self.noop,fn:self.program(11, program11, data),contexts:[depth0],data:data});\n if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n data.buffer.push("\\n
\\n\\n ");\n foundHelper = helpers[\'t\'];\n stack1 = foundHelper ? foundHelper.call(depth0, "builds.message", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "t", "builds.message", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + " \\n ");\n foundHelper = helpers.formatMessage;\n stack1 = foundHelper ? foundHelper.call(depth0, "build.commit.message", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "formatMessage", "build.commit.message", {hash:{},contexts:[depth0],data:data});\n if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n data.buffer.push(" \\n\\n ");\n stack1 = helpers.unless.call(depth0, "isMatrix", {hash:{},inverse:self.noop,fn:self.program(13, program13, data),contexts:[depth0],data:data});\n if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n data.buffer.push("\\n \\n\\n ");\n stack1 = helpers[\'if\'].call(depth0, "build.isMatrix", {hash:{},inverse:self.program(17, program17, data),fn:self.program(15, program15, data),contexts:[depth0],data:data});\n if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n data.buffer.push("\\n ");\n return buffer;}\nfunction program5(depth0,data) {\n \n var buffer = \'\', stack1;\n data.buffer.push("\\n
");\n stack1 = helpers._triageMustache.call(depth0, "build.number", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + " \\n ");\n return buffer;}\n\nfunction program7(depth0,data) {\n \n var buffer = \'\', stack1, foundHelper;\n data.buffer.push("\\n
");\n foundHelper = helpers[\'t\'];\n stack1 = foundHelper ? foundHelper.call(depth0, "builds.compare", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "t", "builds.compare", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + " \\n
");\n foundHelper = helpers.pathFrom;\n stack1 = foundHelper ? foundHelper.call(depth0, "build.commit.compareUrl", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "pathFrom", "build.commit.compareUrl", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + " \\n ");\n return buffer;}\n\nfunction program9(depth0,data) {\n \n var buffer = \'\', stack1, foundHelper;\n data.buffer.push("\\n
");\n foundHelper = helpers[\'t\'];\n stack1 = foundHelper ? foundHelper.call(depth0, "builds.author", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "t", "builds.author", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + " \\n
");\n stack1 = helpers._triageMustache.call(depth0, "build.commit.authorName", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + " \\n ");\n return buffer;}\n\nfunction program11(depth0,data) {\n \n var buffer = \'\', stack1, foundHelper;\n data.buffer.push("\\n
");\n foundHelper = helpers[\'t\'];\n stack1 = foundHelper ? foundHelper.call(depth0, "builds.committer", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "t", "builds.committer", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + " \\n
");\n stack1 = helpers._triageMustache.call(depth0, "build.commit.committerName", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + " \\n ");\n return buffer;}\n\nfunction program13(depth0,data) {\n \n var buffer = \'\', stack1, foundHelper;\n data.buffer.push("\\n
");\n foundHelper = helpers[\'t\'];\n stack1 = foundHelper ? foundHelper.call(depth0, "builds.config", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "t", "builds.config", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + " \\n
");\n foundHelper = helpers.formatConfig;\n stack1 = foundHelper ? foundHelper.call(depth0, "build.config", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "formatConfig", "build.config", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + " \\n ");\n return buffer;}\n\nfunction program15(depth0,data) {\n \n var buffer = \'\', stack1;\n data.buffer.push("\\n ");\n stack1 = {};\n stack1[\'jobsBinding\'] = "build.requiredJobs";\n stack1[\'required\'] = "true";\n stack1 = helpers.view.call(depth0, "Travis.JobsView", {hash:stack1,contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + "\\n ");\n stack1 = {};\n stack1[\'jobsBinding\'] = "build.allowedFailureJobs";\n stack1 = helpers.view.call(depth0, "Travis.JobsView", {hash:stack1,contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + "\\n ");\n return buffer;}\n\nfunction program17(depth0,data) {\n \n var buffer = \'\', stack1;\n data.buffer.push("\\n ");\n stack1 = {};\n stack1[\'contextBinding\'] = "build.jobs.firstObject";\n stack1 = helpers.view.call(depth0, "Travis.LogView", {hash:stack1,contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + "\\n ");\n return buffer;}\n\n stack1 = helpers[\'with\'].call(depth0, "view", {hash:{},inverse:self.noop,fn:self.program(1, program1, data),contexts:[depth0],data:data});\n if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n data.buffer.push("\\n\\n");\n return buffer;\n});\n\nEmber.TEMPLATES[\'jobs/list\'] = Ember.Handlebars.template(function anonymous(Handlebars, depth0, helpers, partials, data) { helpers = helpers || Ember.Handlebars.helpers;\n var buffer = \'\', stack1, helperMissing=helpers.helperMissing, escapeExpression=this.escapeExpression, self=this;\n\nfunction program1(depth0,data) {\n \n var buffer = \'\', stack1;\n data.buffer.push("\\n ");\n stack1 = helpers[\'if\'].call(depth0, "view.required", {hash:{},inverse:self.program(4, program4, data),fn:self.program(2, program2, data),contexts:[depth0],data:data});\n if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n data.buffer.push("\\n
\\n \\n ");\n stack1 = helpers.each.call(depth0, "key", "in", "view.build.configKeys", {hash:{},inverse:self.noop,fn:self.program(6, program6, data),contexts:[depth0,depth0,depth0],data:data});\n if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n data.buffer.push("\\n \\n \\n
\\n ");\n stack1 = helpers.each.call(depth0, "job", "in", "view.jobs", {hash:{},inverse:self.noop,fn:self.program(8, program8, data),contexts:[depth0,depth0,depth0],data:data});\n if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n data.buffer.push("\\n \\n
\\n\\n ");\n stack1 = helpers.unless.call(depth0, "view.required", {hash:{},inverse:self.noop,fn:self.program(14, program14, data),contexts:[depth0],data:data});\n if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n data.buffer.push("\\n");\n return buffer;}\nfunction program2(depth0,data) {\n \n var buffer = \'\', stack1, foundHelper;\n data.buffer.push("\\n \\n \\n ");\n foundHelper = helpers[\'t\'];\n stack1 = foundHelper ? foundHelper.call(depth0, "jobs.build_matrix", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "t", "jobs.build_matrix", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + "\\n \\n ");\n return buffer;}\n\nfunction program4(depth0,data) {\n \n var buffer = \'\', stack1, foundHelper;\n data.buffer.push("\\n \\n \\n ");\n foundHelper = helpers[\'t\'];\n stack1 = foundHelper ? foundHelper.call(depth0, "jobs.allowed_failures", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "t", "jobs.allowed_failures", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + "\\n \\n \\n ");\n return buffer;}\n\nfunction program6(depth0,data) {\n \n var buffer = \'\', stack1;\n data.buffer.push("\\n ");\n stack1 = helpers._triageMustache.call(depth0, "key", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + " \\n ");\n return buffer;}\n\nfunction program8(depth0,data) {\n \n var buffer = \'\', stack1;\n data.buffer.push("\\n ");\n stack1 = {};\n stack1[\'contextBinding\'] = "job";\n stack1 = helpers.view.call(depth0, "Travis.JobsItemView", {hash:stack1,inverse:self.noop,fn:self.program(9, program9, data),contexts:[depth0],data:data});\n if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n data.buffer.push("\\n ");\n return buffer;}\nfunction program9(depth0,data) {\n \n var buffer = \'\', stack1, foundHelper;\n data.buffer.push("\\n \\n \\n ");\n stack1 = helpers[\'if\'].call(depth0, "job.id", {hash:{},inverse:self.noop,fn:self.program(10, program10, data),contexts:[depth0],data:data});\n if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n data.buffer.push("\\n \\n \\n ");\n foundHelper = helpers.formatDuration;\n stack1 = foundHelper ? foundHelper.call(depth0, "duration", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "formatDuration", "duration", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + "\\n \\n \\n ");\n foundHelper = helpers.formatTime;\n stack1 = foundHelper ? foundHelper.call(depth0, "finishedAt", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "formatTime", "finishedAt", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + "\\n \\n ");\n stack1 = helpers.each.call(depth0, "value", "in", "configValues", {hash:{},inverse:self.noop,fn:self.program(12, program12, data),contexts:[depth0,depth0,depth0],data:data});\n if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n data.buffer.push("\\n ");\n return buffer;}\nfunction program10(depth0,data) {\n \n var buffer = \'\', stack1;\n data.buffer.push("\\n ");\n stack1 = helpers._triageMustache.call(depth0, "number", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + " \\n ");\n return buffer;}\n\nfunction program12(depth0,data) {\n \n var buffer = \'\', stack1;\n data.buffer.push("\\n ");\n stack1 = helpers._triageMustache.call(depth0, "value", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + " \\n ");\n return buffer;}\n\nfunction program14(depth0,data) {\n \n var buffer = \'\', stack1, foundHelper;\n data.buffer.push("\\n \\n ");\n return buffer;}\n\n stack1 = helpers[\'if\'].call(depth0, "view.jobs.length", {hash:{},inverse:self.noop,fn:self.program(1, program1, data),contexts:[depth0],data:data});\n if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n data.buffer.push("\\n\\n");\n return buffer;\n});\n\nEmber.TEMPLATES[\'jobs/log\'] = Ember.Handlebars.template(function anonymous(Handlebars, depth0, helpers, partials, data) { helpers = helpers || Ember.Handlebars.helpers;\n var buffer = \'\', stack1, helperMissing=helpers.helperMissing, escapeExpression=this.escapeExpression, self=this;\n\nfunction program1(depth0,data) {\n \n var buffer = \'\', stack1, foundHelper;\n data.buffer.push("\\n \\n \\n Follow logs \\n ");\n foundHelper = helpers.formatLog;\n stack1 = foundHelper ? foundHelper.call(depth0, "log.body", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "formatLog", "log.body", {hash:{},contexts:[depth0],data:data});\n if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n data.buffer.push(" \\n\\n ");\n stack1 = helpers[\'if\'].call(depth0, "sponsor.name", {hash:{},inverse:self.noop,fn:self.program(2, program2, data),contexts:[depth0],data:data});\n if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n data.buffer.push("\\n\\n To top \\n");\n return buffer;}\nfunction program2(depth0,data) {\n \n var buffer = \'\', stack1, foundHelper;\n data.buffer.push("\\n \\n ");\n return buffer;}\n\nfunction program4(depth0,data) {\n \n \n data.buffer.push("\\n \\n Loading \\n
\\n");}\n\n stack1 = helpers._triageMustache.call(depth0, "view.logSubscriber", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + "\\n\\n");\n stack1 = helpers[\'if\'].call(depth0, "log.isLoaded", {hash:{},inverse:self.program(4, program4, data),fn:self.program(1, program1, data),contexts:[depth0],data:data});\n if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n data.buffer.push("\\n\\n");\n return buffer;\n});\n\nEmber.TEMPLATES[\'jobs/show\'] = Ember.Handlebars.template(function anonymous(Handlebars, depth0, helpers, partials, data) { helpers = helpers || Ember.Handlebars.helpers;\n var buffer = \'\', stack1, escapeExpression=this.escapeExpression, helperMissing=helpers.helperMissing, self=this;\n\nfunction program1(depth0,data) {\n \n var buffer = \'\', stack1;\n data.buffer.push("\\n ");\n stack1 = helpers[\'if\'].call(depth0, "job.isLoaded", {hash:{},inverse:self.program(11, program11, data),fn:self.program(2, program2, data),contexts:[depth0],data:data});\n if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n data.buffer.push("\\n");\n return buffer;}\nfunction program2(depth0,data) {\n \n var buffer = \'\', stack1, foundHelper;\n data.buffer.push("\\n \\n
\\n \\n
Job \\n \\n \\n ");\n stack1 = helpers[\'if\'].call(depth0, "job.id", {hash:{},inverse:self.noop,fn:self.program(3, program3, data),contexts:[depth0],data:data});\n if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n data.buffer.push("\\n \\n ");\n foundHelper = helpers[\'t\'];\n stack1 = foundHelper ? foundHelper.call(depth0, "jobs.finished_at", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "t", "jobs.finished_at", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + " \\n ");\n foundHelper = helpers.formatTime;\n stack1 = foundHelper ? foundHelper.call(depth0, "job.finishedAt", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "formatTime", "job.finishedAt", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + " \\n ");\n foundHelper = helpers[\'t\'];\n stack1 = foundHelper ? foundHelper.call(depth0, "jobs.duration", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "t", "jobs.duration", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + " \\n ");\n foundHelper = helpers.formatDuration;\n stack1 = foundHelper ? foundHelper.call(depth0, "job.duration", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "formatDuration", "job.duration", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + " \\n \\n\\n \\n
");\n foundHelper = helpers[\'t\'];\n stack1 = foundHelper ? foundHelper.call(depth0, "jobs.commit", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "t", "jobs.commit", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + " \\n
");\n foundHelper = helpers.formatCommit;\n stack1 = foundHelper ? foundHelper.call(depth0, "commit", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "formatCommit", "commit", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + " \\n ");\n stack1 = helpers[\'if\'].call(depth0, "commit.compareUrl", {hash:{},inverse:self.noop,fn:self.program(5, program5, data),contexts:[depth0],data:data});\n if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n data.buffer.push("\\n ");\n stack1 = helpers[\'if\'].call(depth0, "commit.authorName", {hash:{},inverse:self.noop,fn:self.program(7, program7, data),contexts:[depth0],data:data});\n if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n data.buffer.push("\\n ");\n stack1 = helpers[\'if\'].call(depth0, "commit.committerName", {hash:{},inverse:self.noop,fn:self.program(9, program9, data),contexts:[depth0],data:data});\n if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n data.buffer.push("\\n
\\n\\n ");\n foundHelper = helpers[\'t\'];\n stack1 = foundHelper ? foundHelper.call(depth0, "jobs.message", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "t", "jobs.message", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + " \\n ");\n foundHelper = helpers.formatMessage;\n stack1 = foundHelper ? foundHelper.call(depth0, "commit.message", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "formatMessage", "commit.message", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + " \\n ");\n foundHelper = helpers[\'t\'];\n stack1 = foundHelper ? foundHelper.call(depth0, "jobs.config", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "t", "jobs.config", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + " \\n ");\n foundHelper = helpers.formatConfig;\n stack1 = foundHelper ? foundHelper.call(depth0, "job.config", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "formatConfig", "job.config", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + " \\n \\n\\n ");\n stack1 = {};\n stack1[\'contextBinding\'] = "job";\n stack1 = helpers.view.call(depth0, "Travis.LogView", {hash:stack1,contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + "\\n
\\n ");\n return buffer;}\nfunction program3(depth0,data) {\n \n var buffer = \'\', stack1;\n data.buffer.push("\\n ");\n stack1 = helpers._triageMustache.call(depth0, "job.number", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + " \\n ");\n return buffer;}\n\nfunction program5(depth0,data) {\n \n var buffer = \'\', stack1, foundHelper;\n data.buffer.push("\\n ");\n foundHelper = helpers[\'t\'];\n stack1 = foundHelper ? foundHelper.call(depth0, "jobs.compare", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "t", "jobs.compare", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + " \\n ");\n foundHelper = helpers.pathFrom;\n stack1 = foundHelper ? foundHelper.call(depth0, "commit.compareUrl", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "pathFrom", "commit.compareUrl", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + " \\n ");\n return buffer;}\n\nfunction program7(depth0,data) {\n \n var buffer = \'\', stack1, foundHelper;\n data.buffer.push("\\n ");\n foundHelper = helpers[\'t\'];\n stack1 = foundHelper ? foundHelper.call(depth0, "jobs.author", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "t", "jobs.author", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + " \\n ");\n stack1 = helpers._triageMustache.call(depth0, "commit.authorName", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + " \\n ");\n return buffer;}\n\nfunction program9(depth0,data) {\n \n var buffer = \'\', stack1, foundHelper;\n data.buffer.push("\\n ");\n foundHelper = helpers[\'t\'];\n stack1 = foundHelper ? foundHelper.call(depth0, "jobs.committer", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "t", "jobs.committer", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + " \\n ");\n stack1 = helpers._triageMustache.call(depth0, "commit.committerName", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + " \\n ");\n return buffer;}\n\nfunction program11(depth0,data) {\n \n \n data.buffer.push("\\n \\n Loading \\n
\\n ");}\n\n stack1 = helpers[\'with\'].call(depth0, "view", {hash:{},inverse:self.noop,fn:self.program(1, program1, data),contexts:[depth0],data:data});\n if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n data.buffer.push("\\n\\n");\n return buffer;\n});\n\nEmber.TEMPLATES[\'layouts/home\'] = Ember.Handlebars.template(function anonymous(Handlebars, depth0, helpers, partials, data) { helpers = helpers || Ember.Handlebars.helpers;\n var buffer = \'\', stack1, foundHelper, helperMissing=helpers.helperMissing, escapeExpression=this.escapeExpression;\n\n\n data.buffer.push("\\n ");\n foundHelper = helpers.outlet;\n stack1 = foundHelper ? foundHelper.call(depth0, "top", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "outlet", "top", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + "\\n
\\n\\n\\n
\\n ");\n foundHelper = helpers.outlet;\n stack1 = foundHelper ? foundHelper.call(depth0, "left", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "outlet", "left", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + "\\n
\\n\\n
\\n ");\n foundHelper = helpers.outlet;\n stack1 = foundHelper ? foundHelper.call(depth0, "main", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "outlet", "main", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + "\\n
\\n\\n
\\n ");\n foundHelper = helpers.outlet;\n stack1 = foundHelper ? foundHelper.call(depth0, "right", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "outlet", "right", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + "\\n
\\n
\\n\\n");\n return buffer;\n});\n\nEmber.TEMPLATES[\'layouts/profile\'] = Ember.Handlebars.template(function anonymous(Handlebars, depth0, helpers, partials, data) { helpers = helpers || Ember.Handlebars.helpers;\n var buffer = \'\', stack1, foundHelper, helperMissing=helpers.helperMissing, escapeExpression=this.escapeExpression;\n\n\n data.buffer.push("\\n ");\n foundHelper = helpers.outlet;\n stack1 = foundHelper ? foundHelper.call(depth0, "top", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "outlet", "top", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + "\\n
\\n\\n\\n
\\n ");\n foundHelper = helpers.outlet;\n stack1 = foundHelper ? foundHelper.call(depth0, "left", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "outlet", "left", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + "\\n
\\n\\n
\\n ");\n foundHelper = helpers.outlet;\n stack1 = foundHelper ? foundHelper.call(depth0, "main", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "outlet", "main", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + "\\n
\\n\\n
\\n
\\n\\n");\n return buffer;\n});\n\nEmber.TEMPLATES[\'layouts/sidebar\'] = Ember.Handlebars.template(function anonymous(Handlebars, depth0, helpers, partials, data) { helpers = helpers || Ember.Handlebars.helpers;\n var buffer = \'\', stack1, foundHelper, helperMissing=helpers.helperMissing, escapeExpression=this.escapeExpression;\n\n\n data.buffer.push("\\n ");\n foundHelper = helpers[\'t\'];\n stack1 = foundHelper ? foundHelper.call(depth0, "layouts.application.fork_me", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "t", "layouts.application.fork_me", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + "\\n \\n\\n\\n\\n");\n stack1 = helpers.view.call(depth0, "view.DecksView", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + "\\n");\n stack1 = helpers.view.call(depth0, "view.WorkersView", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + "\\n");\n stack1 = helpers.view.call(depth0, "view.QueuesView", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + "\\n");\n stack1 = helpers.view.call(depth0, "view.LinksView", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + "\\n\\n\\n
");\n foundHelper = helpers[\'t\'];\n stack1 = foundHelper ? foundHelper.call(depth0, "layouts.about.join", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "t", "layouts.about.join", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + " \\n
\\n ");\n foundHelper = helpers[\'t\'];\n stack1 = foundHelper ? foundHelper.call(depth0, "layouts.about.repository", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "t", "layouts.about.repository", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + ": Github \\n ");\n foundHelper = helpers[\'t\'];\n stack1 = foundHelper ? foundHelper.call(depth0, "layouts.about.twitter", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "t", "layouts.about.twitter", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + ": @travisci \\n ");\n foundHelper = helpers[\'t\'];\n stack1 = foundHelper ? foundHelper.call(depth0, "layouts.about.mailing_list", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "t", "layouts.about.mailing_list", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + ": travis-ci \\n irc.freenode.net#travis \\n \\n
\\n\\n");\n return buffer;\n});\n\nEmber.TEMPLATES[\'layouts/simple\'] = Ember.Handlebars.template(function anonymous(Handlebars, depth0, helpers, partials, data) { helpers = helpers || Ember.Handlebars.helpers;\n var buffer = \'\', stack1, foundHelper, helperMissing=helpers.helperMissing, escapeExpression=this.escapeExpression;\n\n\n data.buffer.push("\\n ");\n foundHelper = helpers.outlet;\n stack1 = foundHelper ? foundHelper.call(depth0, "top", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "outlet", "top", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + "\\n
\\n\\n\\n
\\n ");\n foundHelper = helpers.outlet;\n stack1 = foundHelper ? foundHelper.call(depth0, "main", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "outlet", "main", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + "\\n
\\n
\\n\\n\\n");\n return buffer;\n});\n\nEmber.TEMPLATES[\'layouts/top\'] = Ember.Handlebars.template(function anonymous(Handlebars, depth0, helpers, partials, data) { helpers = helpers || Ember.Handlebars.helpers;\n var buffer = \'\', stack1, foundHelper, escapeExpression=this.escapeExpression, helperMissing=helpers.helperMissing;\n\n\n data.buffer.push("\\n Travis \\n \\n\\n\\n \\n Home \\n \\n \\n Stats \\n \\n \\n Blog \\n \\n \\n Docs \\n \\n \\n \\n ");\n foundHelper = helpers[\'t\'];\n stack1 = foundHelper ? foundHelper.call(depth0, "layouts.top.github_login", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "t", "layouts.top.github_login", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + " \\n ");\n stack1 = helpers._triageMustache.call(depth0, "user.name", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + " \\n Signing in \\n
\\n \\n \\n ");\n foundHelper = helpers[\'t\'];\n stack1 = foundHelper ? foundHelper.call(depth0, "layouts.top.profile", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "t", "layouts.top.profile", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + " \\n \\n \\n ");\n foundHelper = helpers[\'t\'];\n stack1 = foundHelper ? foundHelper.call(depth0, "layouts.top.sign_out", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "t", "layouts.top.sign_out", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + " \\n \\n \\n \\n \\n\\n");\n return buffer;\n});\n\nEmber.TEMPLATES[\'profile/accounts\'] = Ember.Handlebars.template(function anonymous(Handlebars, depth0, helpers, partials, data) { helpers = helpers || Ember.Handlebars.helpers;\n var buffer = \'\', stack1, foundHelper, escapeExpression=this.escapeExpression, self=this, helperMissing=helpers.helperMissing;\n\nfunction program1(depth0,data) {\n \n var buffer = \'\', stack1;\n data.buffer.push("\\n ");\n stack1 = helpers._triageMustache.call(depth0, "view.name", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + " \\n \\n Repositories: \\n ");\n stack1 = helpers._triageMustache.call(depth0, "view.content.reposCount", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + " \\n
\\n ");\n return buffer;}\n\n data.buffer.push("\\n
\\n\\n\\n\\n\\n ");\n stack1 = {};\n stack1[\'contentBinding\'] = "controller";\n foundHelper = helpers.collection;\n stack1 = foundHelper ? foundHelper.call(depth0, "Travis.AccountsListView", {hash:stack1,inverse:self.noop,fn:self.program(1, program1, data),contexts:[depth0],data:data}) : helperMissing.call(depth0, "collection", "Travis.AccountsListView", {hash:stack1,inverse:self.noop,fn:self.program(1, program1, data),contexts:[depth0],data:data});\n if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n data.buffer.push("\\n
\\n\\n");\n return buffer;\n});\n\nEmber.TEMPLATES[\'profile/show\'] = Ember.Handlebars.template(function anonymous(Handlebars, depth0, helpers, partials, data) { helpers = helpers || Ember.Handlebars.helpers;\n var buffer = \'\', stack1, foundHelper, escapeExpression=this.escapeExpression, helperMissing=helpers.helperMissing;\n\n\n data.buffer.push("");\n stack1 = helpers._triageMustache.call(depth0, "view.name", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + " \\n\\n");\n stack1 = helpers.view.call(depth0, "Travis.ProfileTabsView", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + "\\n\\n\\n ");\n foundHelper = helpers.outlet;\n stack1 = foundHelper ? foundHelper.call(depth0, "pane", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "outlet", "pane", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + "\\n
\\n\\n\\n");\n return buffer;\n});\n\nEmber.TEMPLATES[\'profile/tabs\'] = Ember.Handlebars.template(function anonymous(Handlebars, depth0, helpers, partials, data) { helpers = helpers || Ember.Handlebars.helpers;\n var buffer = \'\', stack1, escapeExpression=this.escapeExpression, self=this;\n\nfunction program1(depth0,data) {\n \n var buffer = \'\', stack1;\n data.buffer.push("\\n \\n \\n \\n ");\n return buffer;}\n\n data.buffer.push("\\n \\n \\n \\n ");\n stack1 = helpers[\'if\'].call(depth0, "view.displayUser", {hash:{},inverse:self.noop,fn:self.program(1, program1, data),contexts:[depth0],data:data});\n if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n data.buffer.push("\\n \\n\\n");\n return buffer;\n});\n\nEmber.TEMPLATES[\'profile/tabs/hooks\'] = Ember.Handlebars.template(function anonymous(Handlebars, depth0, helpers, partials, data) { helpers = helpers || Ember.Handlebars.helpers;\n var buffer = \'\', stack1, foundHelper, escapeExpression=this.escapeExpression, helperMissing=helpers.helperMissing, self=this;\n\nfunction program1(depth0,data) {\n \n var buffer = \'\', stack1;\n data.buffer.push("\\n ");\n stack1 = helpers[\'if\'].call(depth0, "user.isSyncing", {hash:{},inverse:self.program(4, program4, data),fn:self.program(2, program2, data),contexts:[depth0],data:data});\n if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n data.buffer.push("\\n");\n return buffer;}\nfunction program2(depth0,data) {\n \n \n data.buffer.push("\\n \\n Please wait while we sync from GitHub \\n
\\n ");}\n\nfunction program4(depth0,data) {\n \n var buffer = \'\', stack1, foundHelper;\n data.buffer.push("\\n \\n Last synchronized from GitHub: ");\n foundHelper = helpers.formatTime;\n stack1 = foundHelper ? foundHelper.call(depth0, "user.syncedAt", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "formatTime", "user.syncedAt", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + "\\n \\n Sync now\\n \\n
\\n\\n \\n ");\n stack1 = helpers.each.call(depth0, "hook", "in", "hooks", {hash:{},inverse:self.program(7, program7, data),fn:self.program(5, program5, data),contexts:[depth0,depth0,depth0],data:data});\n if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n data.buffer.push("\\n \\n ");\n return buffer;}\nfunction program5(depth0,data) {\n \n var buffer = \'\', stack1;\n data.buffer.push("\\n \\n ");\n stack1 = helpers._triageMustache.call(depth0, "hook.slug", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + " \\n ");\n stack1 = helpers._triageMustache.call(depth0, "hook.description", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + "
\\n\\n \\n \\n ");\n return buffer;}\n\nfunction program7(depth0,data) {\n \n \n data.buffer.push("\\n \\n You do not seem to have any repositories that we could sync.\\n \\n ");}\n\nfunction program9(depth0,data) {\n \n \n data.buffer.push("\\n \\n Loading \\n
\\n");}\n\n data.buffer.push("\\n ");\n foundHelper = helpers[\'t\'];\n stack1 = foundHelper ? foundHelper.call(depth0, "profiles.show.message.your_repos", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "t", "profiles.show.message.your_repos", {hash:{},contexts:[depth0],data:data});\n if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n data.buffer.push("\\n
\\n\\n");\n stack1 = helpers[\'if\'].call(depth0, "hooks.isLoaded", {hash:{},inverse:self.program(9, program9, data),fn:self.program(1, program1, data),contexts:[depth0],data:data});\n if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n data.buffer.push("\\n\\n\\n\\n");\n return buffer;\n});\n\nEmber.TEMPLATES[\'profile/tabs/user\'] = Ember.Handlebars.template(function anonymous(Handlebars, depth0, helpers, partials, data) { helpers = helpers || Ember.Handlebars.helpers;\n var buffer = \'\', stack1, foundHelper, escapeExpression=this.escapeExpression, helperMissing=helpers.helperMissing;\n\n\n data.buffer.push(" \\n\\n\\n \\n ");\n foundHelper = helpers[\'t\'];\n stack1 = foundHelper ? foundHelper.call(depth0, "profiles.show.github", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "t", "profiles.show.github", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + ":\\n \\n \\n ");\n stack1 = helpers._triageMustache.call(depth0, "user.login", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + " \\n \\n \\n ");\n foundHelper = helpers[\'t\'];\n stack1 = foundHelper ? foundHelper.call(depth0, "profiles.show.email", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "t", "profiles.show.email", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + ":\\n \\n \\n ");\n stack1 = helpers._triageMustache.call(depth0, "user.email", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + "\\n \\n \\n ");\n foundHelper = helpers[\'t\'];\n stack1 = foundHelper ? foundHelper.call(depth0, "profiles.show.token", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "t", "profiles.show.token", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + ":\\n \\n \\n ");\n stack1 = helpers._triageMustache.call(depth0, "user.token", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + "\\n \\n \\n\\n\\n\\n\\n\\n");\n return buffer;\n});\n\nEmber.TEMPLATES[\'queues/list\'] = Ember.Handlebars.template(function anonymous(Handlebars, depth0, helpers, partials, data) { helpers = helpers || Ember.Handlebars.helpers;\n var buffer = \'\', stack1, escapeExpression=this.escapeExpression, self=this, helperMissing=helpers.helperMissing;\n\nfunction program1(depth0,data) {\n \n var buffer = \'\', stack1, foundHelper;\n data.buffer.push("\\n \\n ");\n foundHelper = helpers[\'t\'];\n stack1 = foundHelper ? foundHelper.call(depth0, "queue", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "t", "queue", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + ": ");\n stack1 = helpers._triageMustache.call(depth0, "queue.name", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + " \\n \\n ");\n stack1 = helpers.each.call(depth0, "job", "in", "queue", {hash:{},inverse:self.program(5, program5, data),fn:self.program(2, program2, data),contexts:[depth0,depth0,depth0],data:data});\n if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n data.buffer.push("\\n \\n \\n");\n return buffer;}\nfunction program2(depth0,data) {\n \n var buffer = \'\', stack1;\n data.buffer.push("\\n ");\n stack1 = {};\n stack1[\'jobBinding\'] = "job";\n stack1 = helpers.view.call(depth0, "Travis.QueueItemView", {hash:stack1,inverse:self.noop,fn:self.program(3, program3, data),contexts:[depth0],data:data});\n if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n data.buffer.push("\\n ");\n return buffer;}\nfunction program3(depth0,data) {\n \n var buffer = \'\', stack1;\n data.buffer.push("\\n \\n \\n ");\n stack1 = helpers._triageMustache.call(depth0, "job.repository.slug", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + "\\n \\n #");\n stack1 = helpers._triageMustache.call(depth0, "job.number", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + "\\n \\n ");\n return buffer;}\n\nfunction program5(depth0,data) {\n \n var buffer = \'\', stack1, foundHelper;\n data.buffer.push("\\n ");\n foundHelper = helpers[\'t\'];\n stack1 = foundHelper ? foundHelper.call(depth0, "no_job", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "t", "no_job", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + "\\n ");\n return buffer;}\n\n data.buffer.push("\\n");\n stack1 = helpers.each.call(depth0, "queue", "in", "controller", {hash:{},inverse:self.noop,fn:self.program(1, program1, data),contexts:[depth0,depth0,depth0],data:data});\n if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n data.buffer.push("\\n \\n\\n");\n return buffer;\n});\n\nEmber.TEMPLATES[\'repos/list\'] = Ember.Handlebars.template(function anonymous(Handlebars, depth0, helpers, partials, data) { helpers = helpers || Ember.Handlebars.helpers;\n var buffer = \'\', stack1, foundHelper, escapeExpression=this.escapeExpression, self=this, helperMissing=helpers.helperMissing;\n\nfunction program1(depth0,data) {\n \n var buffer = \'\', stack1;\n data.buffer.push("\\n ");\n stack1 = helpers[\'with\'].call(depth0, "view.repository", {hash:{},inverse:self.noop,fn:self.program(2, program2, data),contexts:[depth0],data:data});\n if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n data.buffer.push("\\n ");\n return buffer;}\nfunction program2(depth0,data) {\n \n var buffer = \'\', stack1, foundHelper;\n data.buffer.push("\\n \\n \\n ");\n stack1 = helpers[\'if\'].call(depth0, "slug", {hash:{},inverse:self.noop,fn:self.program(3, program3, data),contexts:[depth0],data:data});\n if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n data.buffer.push("\\n
\\n ");\n stack1 = helpers[\'if\'].call(depth0, "lastBuildId", {hash:{},inverse:self.noop,fn:self.program(5, program5, data),contexts:[depth0],data:data});\n if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n data.buffer.push("\\n\\n \\n ");\n foundHelper = helpers[\'t\'];\n stack1 = foundHelper ? foundHelper.call(depth0, "repositories.duration", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "t", "repositories.duration", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + ": \\n ");\n foundHelper = helpers.formatDuration;\n stack1 = foundHelper ? foundHelper.call(depth0, "lastBuildDuration", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "formatDuration", "lastBuildDuration", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + " ,\\n ");\n foundHelper = helpers[\'t\'];\n stack1 = foundHelper ? foundHelper.call(depth0, "repositories.finished_at", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "t", "repositories.finished_at", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + ": \\n ");\n foundHelper = helpers.formatTime;\n stack1 = foundHelper ? foundHelper.call(depth0, "lastBuildFinishedAt", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "formatTime", "lastBuildFinishedAt", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + " \\n
\\n\\n
\\n\\n ");\n stack1 = helpers[\'if\'].call(depth0, "description", {hash:{},inverse:self.noop,fn:self.program(7, program7, data),contexts:[depth0],data:data});\n if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n data.buffer.push("\\n ");\n return buffer;}\nfunction program3(depth0,data) {\n \n var buffer = \'\', stack1;\n data.buffer.push("\\n ");\n stack1 = helpers._triageMustache.call(depth0, "slug", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + " \\n ");\n return buffer;}\n\nfunction program5(depth0,data) {\n \n var buffer = \'\', stack1;\n data.buffer.push("\\n ");\n stack1 = helpers._triageMustache.call(depth0, "lastBuildNumber", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + " \\n ");\n return buffer;}\n\nfunction program7(depth0,data) {\n \n var buffer = \'\', stack1;\n data.buffer.push("\\n \\n
");\n stack1 = helpers._triageMustache.call(depth0, "description", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + "
\\n
\\n ");\n return buffer;}\n\n data.buffer.push("\\n ");\n stack1 = {};\n stack1[\'valueBinding\'] = "controller.search";\n stack1 = helpers.view.call(depth0, "Ember.TextField", {hash:stack1,contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + "\\n
\\n\\n");\n stack1 = helpers.view.call(depth0, "Travis.ReposListTabsView", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + "\\n\\n \\n\\n\\n ");\n stack1 = {};\n stack1[\'contentBinding\'] = "controller";\n foundHelper = helpers.collection;\n stack1 = foundHelper ? foundHelper.call(depth0, "Travis.RepositoriesListView", {hash:stack1,inverse:self.noop,fn:self.program(1, program1, data),contexts:[depth0],data:data}) : helperMissing.call(depth0, "collection", "Travis.RepositoriesListView", {hash:stack1,inverse:self.noop,fn:self.program(1, program1, data),contexts:[depth0],data:data});\n if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n data.buffer.push("\\n
\\n\\n");\n return buffer;\n});\n\nEmber.TEMPLATES[\'repos/list/tabs\'] = Ember.Handlebars.template(function anonymous(Handlebars, depth0, helpers, partials, data) { helpers = helpers || Ember.Handlebars.helpers;\n var buffer = \'\', stack1, foundHelper, escapeExpression=this.escapeExpression, helperMissing=helpers.helperMissing;\n\n\n data.buffer.push("\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n\\n\\n");\n return buffer;\n});\n\nEmber.TEMPLATES[\'repos/show\'] = Ember.Handlebars.template(function anonymous(Handlebars, depth0, helpers, partials, data) { helpers = helpers || Ember.Handlebars.helpers;\n var buffer = \'\', stack1, foundHelper, escapeExpression=this.escapeExpression, self=this, helperMissing=helpers.helperMissing;\n\nfunction program1(depth0,data) {\n \n var buffer = \'\', stack1;\n data.buffer.push("\\n ");\n stack1 = helpers[\'with\'].call(depth0, "view.repository", {hash:{},inverse:self.noop,fn:self.program(2, program2, data),contexts:[depth0],data:data});\n if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n data.buffer.push("\\n\\n ");\n return buffer;}\nfunction program2(depth0,data) {\n \n var buffer = \'\', stack1;\n data.buffer.push("\\n \\n\\n ");\n stack1 = helpers._triageMustache.call(depth0, "description", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + "
\\n\\n \\n \\n ");\n stack1 = helpers._triageMustache.call(depth0, "lastBuildLanguage", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + "\\n \\n \\n \\n ");\n stack1 = helpers._triageMustache.call(depth0, "stats.watchers", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + "\\n \\n \\n \\n \\n ");\n stack1 = helpers._triageMustache.call(depth0, "stats.forks", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + "\\n \\n \\n \\n\\n ");\n stack1 = helpers.view.call(depth0, "Travis.RepoShowTabsView", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + "\\n ");\n stack1 = helpers.view.call(depth0, "Travis.RepoShowToolsView", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + "\\n ");\n return buffer;}\n\nfunction program4(depth0,data) {\n \n \n data.buffer.push("\\n Loading \\n ");}\n\n data.buffer.push("\\n ");\n stack1 = helpers[\'if\'].call(depth0, "view.repository.isLoaded", {hash:{},inverse:self.program(4, program4, data),fn:self.program(1, program1, data),contexts:[depth0],data:data});\n if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n data.buffer.push("\\n\\n
\\n ");\n foundHelper = helpers.outlet;\n stack1 = foundHelper ? foundHelper.call(depth0, "pane", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "outlet", "pane", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + "\\n
\\n
\\n\\n\\n");\n return buffer;\n});\n\nEmber.TEMPLATES[\'repos/show/tabs\'] = Ember.Handlebars.template(function anonymous(Handlebars, depth0, helpers, partials, data) { helpers = helpers || Ember.Handlebars.helpers;\n var buffer = \'\', stack1, escapeExpression=this.escapeExpression, helperMissing=helpers.helperMissing, self=this;\n\nfunction program1(depth0,data) {\n \n var buffer = \'\', stack1, foundHelper;\n data.buffer.push("\\n \\n ");\n foundHelper = helpers[\'t\'];\n stack1 = foundHelper ? foundHelper.call(depth0, "repositories.tabs.current", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "t", "repositories.tabs.current", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + "\\n \\n ");\n return buffer;}\n\nfunction program3(depth0,data) {\n \n var buffer = \'\', stack1, foundHelper;\n data.buffer.push("\\n \\n ");\n foundHelper = helpers[\'t\'];\n stack1 = foundHelper ? foundHelper.call(depth0, "repositories.tabs.build_history", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "t", "repositories.tabs.build_history", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + "\\n \\n ");\n return buffer;}\n\nfunction program5(depth0,data) {\n \n var buffer = \'\', stack1, foundHelper;\n data.buffer.push("\\n \\n ");\n foundHelper = helpers[\'t\'];\n stack1 = foundHelper ? foundHelper.call(depth0, "repositories.tabs.pull_requests", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "t", "repositories.tabs.pull_requests", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + "\\n \\n ");\n return buffer;}\n\nfunction program7(depth0,data) {\n \n var buffer = \'\', stack1, foundHelper;\n data.buffer.push("\\n \\n ");\n foundHelper = helpers[\'t\'];\n stack1 = foundHelper ? foundHelper.call(depth0, "repositories.tabs.branches", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "t", "repositories.tabs.branches", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + "\\n \\n ");\n return buffer;}\n\nfunction program9(depth0,data) {\n \n var buffer = \'\', stack1, foundHelper;\n data.buffer.push("\\n \\n ");\n foundHelper = helpers[\'t\'];\n stack1 = foundHelper ? foundHelper.call(depth0, "repositories.tabs.build", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "t", "repositories.tabs.build", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + " #");\n stack1 = helpers._triageMustache.call(depth0, "view.build.number", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + "\\n \\n ");\n return buffer;}\n\nfunction program11(depth0,data) {\n \n var buffer = \'\', stack1, foundHelper;\n data.buffer.push("\\n \\n ");\n foundHelper = helpers[\'t\'];\n stack1 = foundHelper ? foundHelper.call(depth0, "repositories.tabs.job", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "t", "repositories.tabs.job", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + " #");\n stack1 = helpers._triageMustache.call(depth0, "view.job.number", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + "\\n \\n ");\n return buffer;}\n\n data.buffer.push("\\n \\n \\n ");\n stack1 = helpers[\'if\'].call(depth0, "view.repository.slug", {hash:{},inverse:self.noop,fn:self.program(1, program1, data),contexts:[depth0],data:data});\n if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n data.buffer.push("\\n \\n \\n \\n \\n ");\n stack1 = helpers[\'if\'].call(depth0, "view.repository.slug", {hash:{},inverse:self.noop,fn:self.program(3, program3, data),contexts:[depth0],data:data});\n if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n data.buffer.push("\\n \\n \\n \\n \\n ");\n stack1 = helpers[\'if\'].call(depth0, "view.repository.slug", {hash:{},inverse:self.noop,fn:self.program(5, program5, data),contexts:[depth0],data:data});\n if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n data.buffer.push("\\n \\n \\n \\n \\n ");\n stack1 = helpers[\'if\'].call(depth0, "view.repository.slug", {hash:{},inverse:self.noop,fn:self.program(7, program7, data),contexts:[depth0],data:data});\n if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n data.buffer.push("\\n \\n \\n \\n \\n ");\n stack1 = helpers[\'if\'].call(depth0, "view.build.id", {hash:{},inverse:self.noop,fn:self.program(9, program9, data),contexts:[depth0],data:data});\n if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n data.buffer.push("\\n \\n \\n \\n \\n ");\n stack1 = helpers[\'if\'].call(depth0, "view.job.id", {hash:{},inverse:self.noop,fn:self.program(11, program11, data),contexts:[depth0],data:data});\n if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n data.buffer.push("\\n \\n \\n \\n\\n");\n return buffer;\n});\n\nEmber.TEMPLATES[\'repos/show/tools\'] = Ember.Handlebars.template(function anonymous(Handlebars, depth0, helpers, partials, data) { helpers = helpers || Ember.Handlebars.helpers;\n var buffer = \'\', stack1, foundHelper, escapeExpression=this.escapeExpression, helperMissing=helpers.helperMissing, self=this;\n\nfunction program1(depth0,data) {\n \n var buffer = \'\', stack1;\n data.buffer.push("\\n ");\n stack1 = {};\n stack1[\'contentBinding\'] = "view.branches";\n stack1[\'selectionBinding\'] = "view.branch";\n stack1[\'optionLabelPath\'] = "content.commit.branch";\n stack1[\'optionValuePath\'] = "content.commit.branch";\n stack1 = helpers.view.call(depth0, "Ember.Select", {hash:stack1,contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + "\\n ");\n return buffer;}\n\nfunction program3(depth0,data) {\n \n \n data.buffer.push("\\n \\n ");}\n\n data.buffer.push("\\n\\n");\n return buffer;\n});\n\nEmber.TEMPLATES[\'sponsors/decks\'] = Ember.Handlebars.template(function anonymous(Handlebars, depth0, helpers, partials, data) { helpers = helpers || Ember.Handlebars.helpers;\n var buffer = \'\', stack1, foundHelper, escapeExpression=this.escapeExpression, self=this, helperMissing=helpers.helperMissing;\n\nfunction program1(depth0,data) {\n \n var buffer = \'\', stack1;\n data.buffer.push("\\n ");\n stack1 = helpers.each.call(depth0, "deck", {hash:{},inverse:self.noop,fn:self.program(2, program2, data),contexts:[depth0],data:data});\n if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n data.buffer.push("\\n ");\n return buffer;}\nfunction program2(depth0,data) {\n \n var buffer = \'\', stack1;\n data.buffer.push("\\n \\n \\n \\n \\n \\n ");\n return buffer;}\n\n data.buffer.push("");\n foundHelper = helpers[\'t\'];\n stack1 = foundHelper ? foundHelper.call(depth0, "layouts.application.sponsers", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "t", "layouts.application.sponsers", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + " \\n\\n\\n\\n\\n \\n ");\n foundHelper = helpers[\'t\'];\n stack1 = foundHelper ? foundHelper.call(depth0, "layouts.application.sponsors_link", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "t", "layouts.application.sponsors_link", {hash:{},contexts:[depth0],data:data});\n if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n data.buffer.push("\\n \\n
\\n\\n");\n return buffer;\n});\n\nEmber.TEMPLATES[\'sponsors/links\'] = Ember.Handlebars.template(function anonymous(Handlebars, depth0, helpers, partials, data) { helpers = helpers || Ember.Handlebars.helpers;\n var buffer = \'\', stack1, foundHelper, helperMissing=helpers.helperMissing, escapeExpression=this.escapeExpression, self=this;\n\nfunction program1(depth0,data) {\n \n var buffer = \'\', stack1;\n data.buffer.push("\\n \\n ");\n stack1 = {};\n stack1[\'unescaped\'] = "true";\n stack1 = helpers._triageMustache.call(depth0, "link", {hash:stack1,contexts:[depth0],data:data});\n if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n data.buffer.push("\\n \\n ");\n return buffer;}\n\n data.buffer.push("\\n
");\n foundHelper = helpers[\'t\'];\n stack1 = foundHelper ? foundHelper.call(depth0, "layouts.application.sponsers", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "t", "layouts.application.sponsers", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + " \\n\\n \\n\\n
\\n \\n ");\n foundHelper = helpers[\'t\'];\n stack1 = foundHelper ? foundHelper.call(depth0, "layouts.application.sponsors_link", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "t", "layouts.application.sponsors_link", {hash:{},contexts:[depth0],data:data});\n if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n data.buffer.push("\\n \\n
\\n
\\n\\n\\n");\n return buffer;\n});\n\nEmber.TEMPLATES[\'stats/show\'] = Ember.Handlebars.template(function anonymous(Handlebars, depth0, helpers, partials, data) { helpers = helpers || Ember.Handlebars.helpers;\n \n\n\n data.buffer.push("
\\n
\\n\\n");\n});\n\nEmber.TEMPLATES[\'workers/list\'] = Ember.Handlebars.template(function anonymous(Handlebars, depth0, helpers, partials, data) { helpers = helpers || Ember.Handlebars.helpers;\n var buffer = \'\', stack1, escapeExpression=this.escapeExpression, self=this, helperMissing=helpers.helperMissing;\n\nfunction program1(depth0,data) {\n \n var buffer = \'\', stack1, foundHelper;\n data.buffer.push("\\n \\n ");\n foundHelper = helpers[\'t\'];\n stack1 = foundHelper ? foundHelper.call(depth0, "workers", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "t", "workers", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + "\\n \\n \\n \\n ");\n stack1 = helpers.each.call(depth0, "group", "in", "controller.groups", {hash:{},inverse:self.program(11, program11, data),fn:self.program(2, program2, data),contexts:[depth0,depth0,depth0],data:data});\n if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n data.buffer.push("\\n \\n");\n return buffer;}\nfunction program2(depth0,data) {\n \n var buffer = \'\', stack1;\n data.buffer.push("\\n ");\n stack1 = helpers.view.call(depth0, "Travis.WorkersListView", {hash:{},inverse:self.noop,fn:self.program(3, program3, data),contexts:[depth0],data:data});\n if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n data.buffer.push("\\n ");\n return buffer;}\nfunction program3(depth0,data) {\n \n var buffer = \'\', stack1;\n data.buffer.push("\\n \\n \\n ");\n stack1 = helpers._triageMustache.call(depth0, "group.firstObject.host", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + "\\n \\n \\n ");\n stack1 = helpers.each.call(depth0, "worker", "in", "group", {hash:{},inverse:self.noop,fn:self.program(4, program4, data),contexts:[depth0,depth0,depth0],data:data});\n if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n data.buffer.push("\\n \\n \\n ");\n return buffer;}\nfunction program4(depth0,data) {\n \n var buffer = \'\', stack1;\n data.buffer.push("\\n ");\n stack1 = {};\n stack1[\'workerBinding\'] = "worker";\n stack1 = helpers.view.call(depth0, "Travis.WorkersItemView", {hash:stack1,inverse:self.noop,fn:self.program(5, program5, data),contexts:[depth0],data:data});\n if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n data.buffer.push("\\n ");\n return buffer;}\nfunction program5(depth0,data) {\n \n var buffer = \'\', stack1;\n data.buffer.push("\\n \\n
\\n ");\n stack1 = helpers[\'if\'].call(depth0, "worker.isWorking", {hash:{},inverse:self.program(9, program9, data),fn:self.program(6, program6, data),contexts:[depth0],data:data});\n if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n data.buffer.push("\\n \\n ");\n return buffer;}\nfunction program6(depth0,data) {\n \n var buffer = \'\', stack1;\n data.buffer.push("\\n ");\n stack1 = helpers[\'if\'].call(depth0, "worker.job_id", {hash:{},inverse:self.noop,fn:self.program(7, program7, data),contexts:[depth0],data:data});\n if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n data.buffer.push("\\n ");\n return buffer;}\nfunction program7(depth0,data) {\n \n var buffer = \'\', stack1;\n data.buffer.push("\\n \\n ");\n stack1 = helpers._triageMustache.call(depth0, "view.display", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + "\\n \\n ");\n return buffer;}\n\nfunction program9(depth0,data) {\n \n var buffer = \'\', stack1;\n data.buffer.push("\\n ");\n stack1 = helpers._triageMustache.call(depth0, "view.display", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + "\\n ");\n return buffer;}\n\nfunction program11(depth0,data) {\n \n \n data.buffer.push("\\n No workers\\n ");}\n\n stack1 = helpers.view.call(depth0, "Travis.WorkersView", {hash:{},inverse:self.noop,fn:self.program(1, program1, data),contexts:[depth0],data:data});\n if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n data.buffer.push("\\n\\n");\n return buffer;\n});\n\n})();\n//@ sourceURL=templates'
),minispade.register("config/locales",'(function() {window.I18n = window.I18n || {}\nwindow.I18n.translations = {"ca":{"locales":{"en":"English","es":"Español","fr":"Français","ja":"日本語","nb":"Norsk Bokmål","nl":"Nederlands","pl":"Polski","pt-BR":"português brasileiro","ru":"Русский"}},"en":{"errors":{"messages":{"not_found":"not found","already_confirmed":"was already confirmed","not_locked":"was not locked"}},"devise":{"failure":{"unauthenticated":"You need to sign in or sign up before continuing.","unconfirmed":"You have to confirm your account before continuing.","locked":"Your account is locked.","invalid":"Invalid email or password.","invalid_token":"Invalid authentication token.","timeout":"Your session expired, please sign in again to continue.","inactive":"Your account was not activated yet."},"sessions":{"signed_in":"Signed in successfully.","signed_out":"Signed out successfully."},"passwords":{"send_instructions":"You will receive an email with instructions about how to reset your password in a few minutes.","updated":"Your password was changed successfully. You are now signed in."},"confirmations":{"send_instructions":"You will receive an email with instructions about how to confirm your account in a few minutes.","confirmed":"Your account was successfully confirmed. You are now signed in."},"registrations":{"signed_up":"You have signed up successfully. If enabled, a confirmation was sent to your e-mail.","updated":"You updated your account successfully.","destroyed":"Bye! Your account was successfully cancelled. We hope to see you again soon."},"unlocks":{"send_instructions":"You will receive an email with instructions about how to unlock your account in a few minutes.","unlocked":"Your account was successfully unlocked. You are now signed in."},"mailer":{"confirmation_instructions":{"subject":"Confirmation instructions"},"reset_password_instructions":{"subject":"Reset password instructions"},"unlock_instructions":{"subject":"Unlock Instructions"}}},"datetime":{"distance_in_words":{"hours_exact":{"one":"%{count} hour","other":"%{count} hours"},"minutes_exact":{"one":"%{count} minute","other":"%{count} minutes"},"seconds_exact":{"one":"%{count} second","other":"%{count} seconds"}}},"workers":"Workers","queue":"Queue","no_job":"There are no jobs","repositories":{"branch":"Branch","image_url":"Image URL","markdown":"Markdown","textile":"Textile","rdoc":"RDOC","commit":"Commit","message":"Message","started_at":"Started","duration":"Duration","finished_at":"Finished","tabs":{"current":"Current","build_history":"Build History","branches":"Branch Summary","pull_requests":"Pull Requests","build":"Build","job":"Job"}},"build":{"job":"Job","duration":"Duration","finished_at":"Finished"},"jobs":{"messages":{"sponsored_by":"This test suite was run on a worker box sponsored by"},"build_matrix":"Build Matrix","allowed_failures":"Allowed Failures","author":"Author","config":"Config","compare":"Compare","committer":"Committer","branch":"Branch","commit":"Commit","message":"Message","started_at":"Started","duration":"Duration","finished_at":"Finished"},"builds":{"name":"Build","messages":{"sponsored_by":"This test suite was run on a worker box sponsored by"},"build_matrix":"Build Matrix","allowed_failures":"Allowed Failures","author":"Author","config":"Config","compare":"Compare","committer":"Committer","branch":"Branch","commit":"Commit","message":"Message","started_at":"Started","duration":"Duration","finished_at":"Finished","show_more":"Show more"},"layouts":{"top":{"home":"Home","blog":"Blog","docs":"Docs","stats":"Stats","github_login":"Sign in with Github","profile":"Profile","sign_out":"Sign Out","admin":"Admin"},"application":{"fork_me":"Fork me on Github","recent":"Recent","search":"Search","sponsers":"Sponsors","sponsors_link":"See all of our amazing sponsors →","my_repositories":"My Repositories"},"about":{"alpha":"This stuff is alpha.","messages":{"alpha":"Please do not consider this a stable service. We\'re still far from that! More info here. "},"join":"Join us and help!","mailing_list":"Mailing List","repository":"Repository","twitter":"Twitter"},"mobile":{"author":"Author","build":"Build","build_matrix":"Build Matrix","commit":"Commit","committer":"Committer","compare":"Compare","config":"Config","duration":"Duration","finished_at":"Finished at","job":"Job","log":"Log"}},"profiles":{"show":{"email":"Email","github":"Github","message":{"your_repos":" Flick the switches below to turn on the Travis service hook for your projects, then push to GitHub.","config":"how to configure custom build options"},"messages":{"notice":"To get started, please read our Getting Started guide .\\n It will only take a couple of minutes. "},"token":"Token","your_repos":"Your Repositories","update":"Update","update_locale":"Update","your_locale":"Your Locale"}},"statistics":{"index":{"count":"Count","repo_growth":"Repository Growth","total_projects":"Total Projects/Repositories","build_count":"Build Count","last_month":"last month","total_builds":"Total Builds"}},"locales":{"en":"English","es":"Español","fr":"Français","ja":"日本語","nb":"Norsk Bokmål","pl":"Polski","ru":"Русский","nl":"Nederlands","pt-BR":"português brasileiro"}},"es":{"datetime":{"distance_in_words":{"hours_exact":{"one":"%{count} hora","other":"%{count} horas"},"minutes_exact":{"one":"%{count} minuto","other":"%{count} minutos"},"seconds_exact":{"one":"%{count} segundo","other":"%{count} segundos"}}},"workers":"Procesos","queue":"Cola","no_job":"No hay trabajos","repositories":{"branch":"Rama","image_url":"Imagen URL","markdown":"Markdown","textile":"Textile","rdoc":"RDOC","commit":"Commit","message":"Mensaje","started_at":"Iniciado","duration":"Duración","finished_at":"Finalizado","tabs":{"current":"Actual","build_history":"Histórico","branches":"Ramas","build":"Builds","job":"Trabajo"}},"build":{"job":"Trabajo","duration":"Duración","finished_at":"Finalizado"},"jobs":{"messages":{"sponsored_by":"Esta serie de tests han sido ejecutados en una caja de Proceso patrocinada por"},"build_matrix":"Matriz de Builds","allowed_failures":"Fallos Permitidos","author":"Autor","config":"Configuración","compare":"Comparar","committer":"Committer","branch":"Rama","commit":"Commit","message":"Mensaje","started_at":"Iniciado","duration":"Duración","finished_at":"Finalizado","sponsored_by":"Patrocinado por"},"builds":{"name":"Build","messages":{"sponsored_by":"Esta serie de tests han sido ejecutados en una caja de Proceso patrocinada por"},"build_matrix":"Matriz de Builds","allowed_failures":"Fallos Permitidos","author":"Autor","config":"Configuración","compare":"Comparar","committer":"Committer","branch":"Rama","commit":"Commit","message":"Mensaje","started_at":"Iniciado","duration":"Duración","finished_at":"Finalizado"},"layouts":{"top":{"home":"Inicio","blog":"Blog","docs":"Documentación","stats":"Estadísticas","github_login":"Iniciar sesión con Github","profile":"Perfil","sign_out":"Desconectar","admin":"Admin"},"application":{"fork_me":"Hazme un Fork en Github","recent":"Reciente","search":"Buscar","sponsers":"Patrocinadores","sponsors_link":"Ver todos nuestros patrocinadores →","my_repositories":"Mis Repositorios"},"about":{"alpha":"Esto es alpha.","messages":{"alpha":"Por favor no considereis esto un servicio estable. Estamos estamos aún lejos de ello! Más información aquí. "},"join":"Únetenos y ayudanos!","mailing_list":"Lista de Correos","repository":"Repositorio","twitter":"Twitter"}},"profiles":{"show":{"email":"Correo electrónico","github":"Github","message":{"your_repos":" Activa los interruptores para inicial el Travis service hook para tus proyectos, y haz un Push en GitHub. \\n Para probar varias versiones de ruby, mira","config":"como configurar tus propias opciones para el Build"},"messages":{"notice":"Para comenzar, por favor lee nuestra Guía de Inicio .\\n Solo tomará unos pocos minutos. "},"token":"Token","your_repos":"Tus repositorios","update":"Actualizar","update_locale":"Actualizar","your_locale":"Tu Idioma"}},"statistics":{"index":{"count":"Número","repo_growth":"Crecimiento de Repositorios","total_projects":"Total de Proyectos/Repositorios","build_count":"Número de Builds","last_month":"mes anterior","total_builds":"Total de Builds"}},"locales":{"en":"English","es":"Español","fr":"Français","ja":"日本語","nb":"Norsk Bokmål","pl":"Polski","ru":"Русский","nl":"Nederlands","pt-BR":"português brasileiro"}},"fr":{"datetime":{"distance_in_words":{"hours_exact":{"one":"%{count} heure","other":"%{count} heures"},"minutes_exact":{"one":"%{count} minute","other":"%{count} minutes"},"seconds_exact":{"one":"%{count} seconde","other":"%{count} secondes"}}},"workers":"Processus","queue":"File","no_job":"Pas de tâches","repositories":{"branch":"Branche","image_url":"Image","markdown":"Markdown","textile":"Textile","rdoc":"RDOC","commit":"Commit","message":"Message","started_at":"Commencé","duration":"Durée","finished_at":"Terminé","tabs":{"current":"Actuel","build_history":"Historique des tâches","branches":"Résumé des branches","build":"Construction","job":"Tâche"}},"build":{"job":"Tâche","duration":"Durée","finished_at":"Terminé"},"jobs":{"messages":{"sponsored_by":"Cette série de tests a été exécutée sur une machine sponsorisée par"},"build_matrix":"Matrice des versions","allowed_failures":"Échecs autorisés","author":"Auteur","config":"Config","compare":"Comparer","committer":"Committeur","branch":"Branche","commit":"Commit","message":"Message","started_at":"Commencé","duration":"Durée","finished_at":"Terminé","sponsored_by":"Cette série de tests a été exécutée sur une machine sponsorisée par"},"builds":{"name":"Version","messages":{"sponsored_by":"Cette série de tests a été exécutée sur une machine sponsorisée par"},"build_matrix":"Matrice des versions","allowed_failures":"Échecs autorisés","author":"Auteur","config":"Config","compare":"Comparer","committer":"Committeur","branch":"Branche","commit":"Commit","message":"Message","started_at":"Commencé","duration":"Durée","finished_at":"Terminé"},"layouts":{"top":{"home":"Accueil","blog":"Blog","docs":"Documentation","stats":"Statistiques","github_login":"Connection Github","profile":"Profil","sign_out":"Déconnection","admin":"Admin"},"application":{"fork_me":"Faites un Fork sur Github","recent":"Récent","search":"Chercher","sponsers":"Sponsors","sponsors_link":"Voir tous nos extraordinaire sponsors →","my_repositories":"Mes dépôts"},"about":{"alpha":"Ceci est en alpha.","messages":{"alpha":"S\'il vous plaît ne considérez pas ce service comme étant stable. Nous sommes loin de ça! Plus d\'infos ici. "},"join":"Joignez-vous à nous et aidez-nous!","mailing_list":"Liste de distribution","repository":"Dépôt","twitter":"Twitter"},"mobile":{"author":"Auteur","build":"Version","build_matrix":"Matrice des versions","commit":"Commit","committer":"Committeur","compare":"Comparer","config":"Config","duration":"Durée","finished_at":"Terminé à","job":"Tâche","log":"Journal"}},"profiles":{"show":{"github":"Github","message":{"your_repos":"Utilisez les boutons ci-dessous pour activer Travis sur vos projets puis déployez sur GitHub. \\nPour tester sur plus de versions de ruby, voir","config":"comment configurer des options de version personnalisées"},"messages":{"notice":"Pour commencer, veuillez lire notre guide de démarrage .\\n Cela ne vous prendra que quelques minutes. "},"token":"Jeton","your_repos":"Vos dépôts","email":"Courriel","update":"Modifier","update_locale":"Modifier","your_locale":"Votre langue"}},"statistics":{"index":{"count":"Décompte","repo_growth":"Croissance de dépôt","total_projects":"Total des projets/dépôts","build_count":"Décompte des versions","last_month":"mois dernier","total_builds":"Total des versions"}},"admin":{"actions":{"create":"créer","created":"créé","delete":"supprimer","deleted":"supprimé","update":"mise à jour","updated":"mis à jour"},"credentials":{"log_out":"Déconnection"},"delete":{"confirmation":"Oui, je suis sure","flash_confirmation":"%{name} a été détruit avec succès"},"flash":{"error":"%{name} n\'a pas pu être %{action}","noaction":"Aucune action n\'a été entreprise","successful":"%{name} a réussi à %{action}"},"history":{"name":"Historique","no_activity":"Aucune activité","page_name":"Historique pour %{name}"},"list":{"add_new":"Ajouter un nouveau","delete_action":"Supprimer","delete_selected":"Supprimer la sélection","edit_action":"Modifier","search":"Rechercher","select":"Sélectionner le %{name} à modifier","select_action":"Sélectionner","show_all":"Montrer tout"},"new":{"basic_info":"Information de base","cancel":"Annuler","chosen":"%{name} choisi","chose_all":"Choisir tout","clear_all":"Déselectionner tout","many_chars":"caractères ou moins","one_char":"caractère.","optional":"Optionnel","required":"Requis","save":"Sauvegarder","save_and_add_another":"Sauvegarder et en ajouter un autre","save_and_edit":"Sauvegarder et modifier","select_choice":"Faites vos choix et cliquez"},"dashboard":{"add_new":"Ajouter un nouveau","last_used":"Dernière utilisation","model_name":"Nom du modèle","modify":"Modification","name":"Tableau de bord","pagename":"Administration du site","records":"Enregistrements","show":"Voir","ago":"plus tôt"}},"home":{"name":"accueil"},"repository":{"duration":"Durée"},"devise":{"confirmations":{"confirmed":"Votre compte a été crée avec succès. Vous être maintenant connecté.","send_instructions":"Vous allez recevoir un courriel avec les instructions de confirmation de votre compte dans quelques minutes."},"failure":{"inactive":"Votre compte n\'a pas encore été activé.","invalid":"Adresse courriel ou mot de passe invalide.","invalid_token":"Jeton d\'authentification invalide.","locked":"Votre compte est bloqué.","timeout":"Votre session est expirée, veuillez vous reconnecter pour continuer.","unauthenticated":"Vous devez vous connecter ou vous enregistrer afin de continuer","unconfirmed":"Vous devez confirmer votre compte avant de continuer."},"mailer":{"confirmation_instructions":{"subject":"Instructions de confirmations"},"reset_password_instructions":{"subject":"Instruction de remise à zéro du mot de passe"},"unlock_instructions":{"subject":"Instruction de débloquage"}},"passwords":{"send_instructions":"Vous recevrez un courriel avec les instructions de remise à zéro du mot de passe dans quelques minutes.","updated":"Votre mot de passe a été changé avec succès. Vous êtes maintenant connecté."},"registrations":{"destroyed":"Au revoir! Votre compte a été annulé avec succès. Nous espérons vous revoir bientôt.","signed_up":"Vous êtes enregistré avec succès. Si activé, une confirmation vous a été envoyé par courriel.","updated":"Votre compte a été mis a jour avec succès"},"sessions":{"signed_in":"Connecté avec succès","signed_out":"Déconnecté avec succès"},"unlocks":{"send_instructions":"Vous recevrez un courriel contenant les instructions pour débloquer votre compte dans quelques minutes.","unlocked":"Votre compte a été débloqué avec succès."}},"errors":{"messages":{"already_confirmed":"étais déja confirmé","not_found":"n\'a pas été trouvé","not_locked":"n\'étais pas bloqué"}},"locales":{"en":"English","es":"Español","ja":"日本語","ru":"Русский","fr":"Français","nb":"Norsk Bokmål","pl":"Polski","nl":"Nederlands","pt-BR":"português brasileiro"}},"ja":{"workers":"ワーカー","queue":"キュー","no_job":"ジョブはありません","repositories":{"branch":"ブランチ","image_url":"画像URL","markdown":".md","textile":".textile","rdoc":".rdoc","commit":"コミット","message":"メッセージ","started_at":"開始時刻","duration":"処理時間","finished_at":"終了時刻","tabs":{"current":"最新","build_history":"ビルド履歴","branches":"ブランチまとめ","build":"ビルド","job":"ジョブ"}},"build":{"job":"ジョブ","duration":"処理時間","finished_at":"終了時刻"},"jobs":{"messages":{"sponsored_by":"このテストは以下のスポンサーの協力で行いました。"},"build_matrix":"ビルドマトリクス","allowed_failures":"失敗許容範囲内","author":"制作者","config":"設定","compare":"比較","committer":"コミット者","branch":"ブランチ","commit":"コミット","message":"メッセージ","started_at":"開始時刻","duration":"処理時間","finished_at":"終了時刻"},"builds":{"name":"ビルド","messages":{"sponsored_by":"このテストは以下のスポンサーの協力で行いました。"},"build_matrix":"失敗許容範囲外","allowed_failures":"失敗許容範囲内","author":"制作者","config":"設定","compare":"比較","committer":"コミット者","branch":"ブランチ","commit":"コミット","message":"メッセージ","started_at":"開始時刻","duration":"処理時間","finished_at":"終了時刻"},"layouts":{"about":{"alpha":"まだアルファですよ!","join":"参加してみよう!","mailing_list":"メールリスト","messages":{"alpha":"Travis-ciは安定したサービスまで後一歩!詳しくはこちら "},"repository":"リポジトリ","twitter":"ツイッター"},"application":{"fork_me":"Githubでフォークしよう","my_repositories":"マイリポジトリ","recent":"最近","search":"検索","sponsers":"スポンサー","sponsors_link":"スポンサーをもっと見る →"},"top":{"blog":"ブログ","docs":"Travisとは?","github_login":"Githubでログイン","home":"ホーム","profile":"プロフィール","sign_out":"ログアウト","stats":"統計","admin":"管理"},"mobile":{"author":"制作者","build":"ビルド","build_matrix":"ビルドマトリクス","commit":"コミット","committer":"コミット者","compare":"比較","config":"設定","duration":"処理時間","finished_at":"終了時刻","job":"ジョブ","log":"ログ"}},"profiles":{"show":{"github":"Github","email":"メール","message":{"config":"詳細設定","your_repos":"以下のスイッチを設定し、Travis-ciを有効にします。Githubへプッシュしたらビルドは自動的に開始します。複数バーションや細かい設定はこちらへ:"},"messages":{"notice":"まずはTravisのはじめ方 を参照してください。"},"token":"トークン","your_repos":"リポジトリ","update":"更新","update_locale":"更新","your_locale":"言語設定"}},"statistics":{"index":{"build_count":"ビルド数","count":"数","last_month":"先月","repo_growth":"リポジトリ","total_builds":"合計ビルド数","total_projects":"合計リポジトリ"}},"locales":{"en":"English","es":"Español","fr":"Français","ja":"日本語","nb":"Norsk Bokmål","pl":"Polski","ru":"Русский","nl":"Nederlands","pt-BR":"português brasileiro"}},"nb":{"admin":{"actions":{"create":"opprett","created":"opprettet","delete":"slett","deleted":"slettet","update":"oppdater","updated":"oppdatert"},"credentials":{"log_out":"Logg ut"},"dashboard":{"add_new":"Legg til ny","ago":"siden","last_used":"Sist brukt","model_name":"Modell","modify":"Rediger","name":"Dashbord","pagename":"Nettstedsadministrasjon","records":"Oppføringer","show":"Vis"},"delete":{"confirmation":"Ja, jeg er sikker","flash_confirmation":"%{name} ble slettet"},"flash":{"error":"%{name} kunne ikke bli %{action}","noaction":"Ingen handlinger ble utført","successful":"%{name} ble %{action}"},"history":{"name":"Logg","no_activity":"Ingen aktivitet","page_name":"Logg for %{name}"},"list":{"add_new":"Legg til ny","delete_action":"Slett","delete_selected":"Slett valgte","edit_action":"Rediger","search":"Søk","select":"Velg %{name} for å redigere","select_action":"Velg","show_all":"Vis alle "},"new":{"basic_info":"Basisinformasjon","cancel":"Avbryt","chosen":"Valgt %{name}","chose_all":"Velg alle","clear_all":"Fjern alle","many_chars":"eller færre tegn.","one_char":"tegn.","optional":"Valgfri","required":"Påkrevd","save":"Lagre","save_and_add_another":"Lagre og legg til ny","save_and_edit":"Lagre og rediger","select_choice":"Kryss av for dine valg og klikk"}},"build":{"duration":"Varighet","finished_at":"Fullført","job":"Jobb"},"builds":{"allowed_failures":"Tillatte feil","author":"Forfatter","branch":"Gren","build_matrix":"Jobbmatrise","commit":"Innsending","committer":"Innsender","compare":"Sammenlign","config":"Oppsett","duration":"Varighet","finished_at":"Fullført","message":"Beskrivelse","messages":{"sponsored_by":"Denne testen ble kjørt på en maskin sponset av"},"name":"Jobb","started_at":"Startet"},"datetime":{"distance_in_words":{"hours_exact":{"one":"%{count} time","other":"%{count} timer"},"minutes_exact":{"one":"%{count} minutt","other":"%{count} minutter"},"seconds_exact":{"one":"%{count} sekund","other":"%{count} sekunder"}}},"devise":{"confirmations":{"confirmed":"Din konto er aktivert og du er nå innlogget.","send_instructions":"Om noen få minutter så vil du få en e-post med informasjon om hvordan du bekrefter kontoen din."},"failure":{"inactive":"Kontoen din har ikke blitt aktivert enda.","invalid":"Ugyldig e-post eller passord.","invalid_token":"Ugyldig autentiseringskode.","locked":"Kontoen din er låst.","timeout":"Du ble logget ut siden på grunn av mangel på aktivitet, vennligst logg inn på nytt.","unauthenticated":"Du må logge inn eller registrere deg for å fortsette.","unconfirmed":"Du må bekrefte kontoen din før du kan fortsette."},"mailer":{"confirmation_instructions":{"subject":"Bekreftelsesinformasjon"},"reset_password_instructions":{"subject":"Instruksjoner for å få nytt passord"},"unlock_instructions":{"subject":"Opplåsningsinstruksjoner"}},"passwords":{"send_instructions":"Om noen få minutter så vil du få en epost med informasjon om hvordan du kan få et nytt passord.","updated":"Passordet ditt ble endret, og du er logget inn."},"registrations":{"destroyed":"Adjø! Kontoen din ble kansellert. Vi håper vi ser deg igjen snart.","signed_up":"Du er nå registrert.","updated":"Kontoen din ble oppdatert."},"sessions":{"signed_in":"Du er nå logget inn.","signed_out":"Du er nå logget ut."},"unlocks":{"send_instructions":"Om noen få minutter så kommer du til å få en e-post med informasjon om hvordan du kan låse opp kontoen din.","unlocked":"Kontoen din ble låst opp, og du er nå logget inn igjen."}},"errors":{"messages":{"already_confirmed":"har allerede blitt bekreftet","not_found":"ikke funnnet","not_locked":"var ikke låst"}},"home":{"name":"hjem"},"jobs":{"allowed_failures":"Tillatte feil","author":"Forfatter","branch":"Gren","build_matrix":"Jobbmatrise","commit":"Innsending","committer":"Innsender","compare":"Sammenlign","config":"Oppsett","duration":"Varighet","finished_at":"Fullført","message":"Beskrivelse","messages":{"sponsored_by":"Denne testserien ble kjørt på en maskin sponset av"},"started_at":"Startet"},"layouts":{"about":{"alpha":"Dette er alfa-greier.","join":"Bli med og hjelp oss!","mailing_list":"E-postliste","messages":{"alpha":"Dette er ikke en stabil tjeneste. Vi har fremdeles et stykke igjen! Mer informasjon finner du her ."},"repository":"Kodelager","twitter":"Twitter."},"application":{"fork_me":"Se koden på Github","my_repositories":"Mine kodelagre","recent":"Nylig","search":"Søk","sponsers":"Sponsorer","sponsors_link":"Se alle de flotte sponsorene våre →"},"mobile":{"author":"Forfatter","build":"Jobb","build_matrix":"Jobbmatrise","commit":"Innsending","committer":"Innsender","compare":"Sammenlign","config":"Oppsett","duration":"Varighet","finished_at":"Fullført","job":"Jobb","log":"Logg"},"top":{"admin":"Administrator","blog":"Blogg","docs":"Dokumentasjon","github_login":"Logg inn med Github","home":"Hjem","profile":"Profil","sign_out":"Logg ut","stats":"Statistikk"}},"no_job":"Ingen jobber finnnes","profiles":{"show":{"email":"E-post","github":"Github","message":{"config":"hvordan sette opp egne jobbinnstillinger","your_repos":"Slå\\u0010 på Travis for prosjektene dine ved å dra i bryterne under, og send koden til Github. \\nFor å teste mot flere ruby-versjoner, se dokumentasjonen for"},"messages":{"notice":"For å komme i gang, vennligst les kom-i-gang-veivisereren vår. Det tar bare et par minutter. "},"token":"Kode","update":"Oppdater","update_locale":"Oppdater","your_locale":"Ditt språk","your_repos":"Dine kodelagre"}},"queue":"Kø","repositories":{"branch":"Gren","commit":"Innsender","duration":"Varighet","finished_at":"Fullført","image_url":"Bilde-URL","markdown":"Markdown","message":"Beskrivelse","rdoc":"RDOC","started_at":"Startet","tabs":{"branches":"Grensammendrag","build":"Jobb","build_history":"Jobblogg","current":"Siste","job":"Jobb"},"textile":"Textile"},"repository":{"duration":"Varighet"},"statistics":{"index":{"build_count":"Antall jobber","count":"Antall","last_month":"siste måned","repo_growth":"Vekst i kodelager","total_builds":"Totale jobber","total_projects":"Antall prosjekter/kodelagre"}},"workers":"Arbeidere","locales":{"en":"English","es":"Español","ja":"日本語","ru":"Русский","fr":"Français","nb":"Norsk Bokmål","pl":"Polski","nl":"Nederlands","pt-BR":"português brasileiro"}},"nl":{"admin":{"actions":{"create":"aanmaken","created":"aangemaakt","delete":"verwijderen","deleted":"verwijderd","update":"bijwerken","updated":"bijgewerkt"},"credentials":{"log_out":"Afmelden"},"dashboard":{"add_new":"Nieuwe toevoegen","ago":"geleden","last_used":"Laatst gebruikt","model_name":"Model naam","modify":"Wijzigen","pagename":"Site administratie","show":"Laten zien","records":"Gegevens"},"delete":{"confirmation":"Ja, ik ben zeker","flash_confirmation":"%{name} is vernietigd"},"flash":{"error":"%{name} kon niet worden %{action}","noaction":"Er zijn geen acties genomen","successful":"%{name} is %{action}"},"history":{"name":"Geschiedenis","no_activity":"Geen activiteit","page_name":"Geschiedenis van %{name}"},"list":{"add_new":"Nieuwe toevoegen","delete_action":"Verwijderen","delete_selected":"Verwijder geselecteerden","edit_action":"Bewerken","search":"Zoeken","select":"Selecteer %{name} om te bewerken","select_action":"Selecteer","show_all":"Laat allen zien"},"new":{"basic_info":"Basisinfo","cancel":"Annuleren","chosen":"%{name} gekozen","chose_all":"Kies allen","clear_all":"Deselecteer allen","many_chars":"tekens of minder.","one_char":"teken.","optional":"Optioneel","required":"Vereist","save":"Opslaan","save_and_add_another":"Opslaan en een nieuwe toevoegen","save_and_edit":"Opslaan en bewerken","select_choice":"Selecteer uw keuzes en klik"}},"build":{"duration":"Duur","finished_at":"Voltooid","job":"Taak"},"builds":{"allowed_failures":"Toegestane mislukkingen","author":"Auteur","branch":"Tak","build_matrix":"Bouw Matrix","compare":"Vergelijk","config":"Configuratie","duration":"Duur","finished_at":"Voltooid","message":"Bericht","messages":{"sponsored_by":"Deze tests zijn gedraaid op een machine gesponsord door"},"name":"Bouw","started_at":"Gestart","commit":"Commit","committer":"Committer"},"datetime":{"distance_in_words":{"hours_exact":{"one":"%{count} uur","other":"%{count} uren"},"minutes_exact":{"one":"%{count} minuut","other":"%{count} minuten"},"seconds_exact":{"one":"%{count} seconde","other":"%{count} seconden"}}},"devise":{"confirmations":{"confirmed":"Uw account is bevestigd. U wordt nu ingelogd.","send_instructions":"Binnen enkele minuten zal u een email ontvangen met instructies om uw account te bevestigen."},"failure":{"inactive":"Uw account is nog niet geactiveerd.","invalid":"Ongeldig email adres of wachtwoord.","invalid_token":"Ongeldig authenticatie token.","locked":"Uw account is vergrendeld.","timeout":"Uw sessie is verlopen, gelieve opnieuw in te loggen om verder te gaan.","unauthenticated":"U moet inloggen of u registeren voordat u verder gaat.","unconfirmed":"U moet uw account bevestigen voordat u verder gaat."},"mailer":{"confirmation_instructions":{"subject":"Bevestigings-instructies"},"reset_password_instructions":{"subject":"Wachtwoord herstel instructies"},"unlock_instructions":{"subject":"Ontgrendel-instructies"}},"passwords":{"send_instructions":"Binnen enkele minuten zal u een email krijgen met instructies om uw wachtwoord opnieuw in te stellen.","updated":"Uw wachtwoord is veranderd. U wordt nu ingelogd."},"registrations":{"destroyed":"Dag! Uw account is geannuleerd. We hopen u vlug terug te zien.","signed_up":"Uw registratie is voltooid. Als het ingeschakeld is wordt een bevestiging naar uw email adres verzonden.","updated":"Het bijwerken van uw account is gelukt."},"sessions":{"signed_in":"Inloggen gelukt.","signed_out":"Uitloggen gelukt."},"unlocks":{"send_instructions":"Binnen enkele minuten zal u een email krijgen met instructies om uw account te ontgrendelen.","unlocked":"Uw account is ontgrendeld. U wordt nu ingelogd."}},"errors":{"messages":{"already_confirmed":"was al bevestigd","not_found":"niet gevonden","not_locked":"was niet vergrendeld"}},"jobs":{"allowed_failures":"Toegestane mislukkingen","author":"Auteur","branch":"Tak","build_matrix":"Bouw matrix","compare":"Vergelijk","config":"Configuratie","duration":"Duur","finished_at":"Voltooid","message":"Bericht","messages":{"sponsored_by":"Deze testen zijn uitgevoerd op een machine gesponsord door"},"started_at":"Gestart","commit":"Commit","committer":"Committer"},"layouts":{"about":{"alpha":"Dit is in alfa-stadium.","join":"Doe met ons mee en help!","mailing_list":"Mailing lijst","messages":{"alpha":"Gelieve deze service niet te beschouwen als stabiel. Daar zijn we nog lang niet! Meer info hier. "},"repository":"Repository","twitter":"Twitter"},"application":{"fork_me":"Maak een fork op Github","my_repositories":"Mijn repositories","recent":"Recent","search":"Zoeken","sponsers":"Sponsors","sponsors_link":"Bekijk al onze geweldige sponsors →"},"mobile":{"author":"Auteur","build":"Bouw","build_matrix":"Bouw matrix","compare":"Vergelijk","config":"Configuratie","duration":"Duur","finished_at":"Voltooid op","job":"Taak","commit":"Commit","committer":"Committer","log":"Logboek"},"top":{"admin":"Administratie","blog":"Blog","docs":"Documentatie","github_login":"Inloggen met Github","home":"Home","profile":"Profiel","sign_out":"Uitloggen","stats":"Statistieken"}},"locales":{"en":"English","es":"Español","fr":"Français","ja":"日本語","nb":"Norsk Bokmål","nl":"Nederlands","pl":"Polski","ru":"Русский","pt-BR":"português brasileiro"},"no_job":"Er zijn geen taken","profiles":{"show":{"email":"Email adres","github":"Github","message":{"config":"hoe eigen bouw-opties in te stellen","your_repos":"Zet de schakelaars hieronder aan om de Travis hook voor uw projecten te activeren en push daarna naar Github \\nOm te testen tegen meerdere rubies, zie"},"messages":{"notice":"Om te beginnen kunt u onze startersgids lezen.\\\\n Het zal maar enkele minuten van uw tijd vergen. "},"update":"Bijwerken","update_locale":"Bijwerken","your_locale":"Uw taal","your_repos":"Uw repositories","token":"Token"}},"queue":"Wachtrij","repositories":{"branch":"Tak","duration":"Duur","finished_at":"Voltooid","image_url":"Afbeeldings URL","message":"Bericht","started_at":"Gestart","tabs":{"branches":"Tak samenvatting","build":"Bouw","build_history":"Bouw geschiedenis","current":"Huidig","job":"Taak"},"commit":"Commit","markdown":"Markdown","rdoc":"RDOC","textile":"Textile"},"repository":{"duration":"Duur"},"statistics":{"index":{"build_count":"Bouw aantal","count":"Aantal","last_month":"voorbije maand","repo_growth":"Repository groei","total_builds":"Bouw totaal","total_projects":"Projecten/Repository totaal"}},"workers":"Machines","home":{"name":"Hoofdpagina"}},"pl":{"datetime":{"distance_in_words":{"hours_exact":{"one":"%{count} godzina","other":"%{count} godziny"},"minutes_exact":{"one":"%{count} minuta","other":"%{count} minuty"},"seconds_exact":{"one":"%{count} sekunda","other":"%{count} sekundy"}}},"workers":"Workers","queue":"Kolejka","no_job":"Brak zadań","repositories":{"branch":"Gałąź","image_url":"URL obrazka","markdown":"Markdown","textile":"Textile","rdoc":"RDOC","commit":"Commit","message":"Opis","started_at":"Rozpoczęto","duration":"Czas trwania","finished_at":"Zakończono","tabs":{"current":"Aktualny","build_history":"Historia Buildów","branches":"Wszystkie Gałęzie","build":"Build","job":"Zadanie"}},"build":{"job":"Zadanie","duration":"Czas trwania","finished_at":"Zakończono"},"jobs":{"messages":{"sponsored_by":"Te testy zostały uruchomione na maszynie sponsorowanej przez"},"build_matrix":"Macierz Buildów","allowed_failures":"Dopuszczalne Niepowodzenia","author":"Autor","config":"Konfiguracja","compare":"Porównanie","committer":"Committer","branch":"Gałąź","commit":"Commit","message":"Opis","started_at":"Rozpoczęto","duration":"Czas trwania","finished_at":"Zakończono","sponsored_by":"Te testy zostały uruchomione na maszynie sponsorowanej przez"},"builds":{"name":"Build","messages":{"sponsored_by":"Te testy zostały uruchomione na maszynie sponsorowanej przez"},"build_matrix":"Macierz Buildów","allowed_failures":"Dopuszczalne Niepowodzenia","author":"Autor","config":"Konfiguracja","compare":"Porównanie","committer":"Komitujący","branch":"Gałąź","commit":"Commit","message":"Opis","started_at":"Rozpoczęto","duration":"Czas trwania","finished_at":"Zakończono"},"layouts":{"top":{"home":"Start","blog":"Blog","docs":"Dokumentacja","stats":"Statystki","github_login":"Zaloguj się przy pomocy Githuba","profile":"Profil","sign_out":"Wyloguj się"},"application":{"fork_me":"Fork me on Github","recent":"Ostatnie","search":"Wyniki","sponsers":"Sponsorzy","sponsors_link":"Zobacz naszych wszystkich wspaniałych sponsorów →","my_repositories":"Moje repozytoria"},"about":{"alpha":"To wciąż jest wersja alpha.","messages":{"alpha":"Proszę nie traktuj tego jako stabilnej usługi. Wciąż nam wiele do tego brakuje! Więcej informacji znajdziesz tutaj. "},"join":"Pomóż i dołącz do nas!","mailing_list":"Lista mailingowa","repository":"Repozytorium","twitter":"Twitter"},"mobile":{"author":"Autor","build":"Build","build_matrix":"Macierz Buildów","commit":"Commit","committer":"Komitujący","compare":"Porównianie","config":"Konfiguracja","duration":"Czas trwania","finished_at":"Zakończono","job":"Zadanie","log":"Log"}},"profiles":{"show":{"email":"Email","github":"Github","message":{"your_repos":" Przesuń suwak poniżej, aby włączyć Travisa, dla twoich projektów, a następnie umieść swój kod na GitHubie. \\n Aby testować swój kod przy użyciu wielu wersji Rubiego, zobacz","config":"jak skonfigurować niestandardowe opcje builda"},"messages":{"notice":"Aby zacząć, przeczytaj nasz Przewodnik .\\n Zajmie ci to tylko kilka minut. "},"token":"Token","your_repos":"Twoje repozytoria"}},"statistics":{"index":{"count":"Ilość","repo_growth":"Przyrost repozytoriów","total_projects":"Łącznie projektów/repozytoriów","build_count":"Liczba buildów","last_month":"ostatni miesiąc","total_builds":"Łącznie Buildów"}},"date":{"abbr_day_names":["nie","pon","wto","śro","czw","pią","sob"],"abbr_month_names":["sty","lut","mar","kwi","maj","cze","lip","sie","wrz","paź","lis","gru"],"day_names":["niedziela","poniedziałek","wtorek","środa","czwartek","piątek","sobota"],"formats":{"default":"%d-%m-%Y","long":"%B %d, %Y","short":"%d %b"},"month_names":["styczeń","luty","marzec","kwiecień","maj","czerwiec","lipiec","sierpień","wrzesień","październik","listopad","grudzień"],"order":["day","month","year"]},"errors":{"format":"%{attribute} %{message}","messages":{"accepted":"musi zostać zaakceptowane","blank":"nie może być puste"}},"locales":{"en":"English","es":"Español","ja":"日本語","ru":"Русский","fr":"Français","nb":"Norsk Bokmål","pl":"Polski","nl":"Nederlands","pt-BR":"português brasileiro"}},"pt-BR":{"admin":{"actions":{"create":"criar","created":"criado","delete":"deletar","deleted":"deletado","update":"atualizar","updated":"atualizado"},"credentials":{"log_out":"Deslogar"},"dashboard":{"add_new":"Adicionar novo","ago":"atrás","last_used":"Última utilização","model_name":"Nome do modelo","modify":"Modificar","name":"Dashboard","pagename":"Administração do site","records":"Registros","show":"Mostrar"},"delete":{"confirmation":"Sim, tenho certeza","flash_confirmation":"%{name} foi destruído com sucesso"},"flash":{"error":"%{name} falhou ao %{action}","noaction":"Nenhuma ação foi tomada","successful":"%{name} foi %{action} com sucesso"},"history":{"name":"Histórico","no_activity":"Nenhuma Atividade","page_name":"Histórico para %{name}"},"list":{"add_new":"Adicionar novo","delete_action":"Deletar","delete_selected":"Deletar selecionados","edit_action":"Editar","search":"Buscar","select":"Selecionar %{name} para editar","select_action":"Selecionar","show_all":"Mostrar todos"},"new":{"basic_info":"Informações básicas","cancel":"Cancelar","chosen":"Escolhido %{name}","chose_all":"Escolher todos","clear_all":"Limpar todos","many_chars":"caracteres ou menos.","one_char":"caractere.","optional":"Opcional","required":"Requerido","save":"Salvar","save_and_add_another":"Salvar e adicionar outro","save_and_edit":"Salvar e alterar","select_choice":"Selecione e clique"}},"build":{"duration":"Duração","finished_at":"Concluído em","job":"Trabalho"},"builds":{"allowed_failures":"Falhas Permitidas","author":"Autor","branch":"Branch","build_matrix":"Matriz de Build","commit":"Commit","committer":"Committer","compare":"Comparar","config":"Config","duration":"Duração","finished_at":"Concluído em","message":"Mensagem","messages":{"sponsored_by":"Esta série de testes foi executada em uma caixa de processos patrocinada por"},"name":"Build","started_at":"Iniciou em"},"datetime":{"distance_in_words":{"hours_exact":{"one":"%{count} hora","other":"%{count} horas"},"minutes_exact":{"one":"%{count} minuto","other":"%{count} minutos"},"seconds_exact":{"one":"%{count} segundo","other":"%{count} segundos"}}},"devise":{"confirmations":{"confirmed":"Sua conta foi confirmada com sucesso. Você agora está logado.","send_instructions":"Você receberá um email com instruções de como confirmar sua conta em alguns minutos."},"failure":{"inactive":"Sua conta ainda não foi ativada.","invalid":"Email ou senha inválidos.","invalid_token":"Token de autenticação inválido.","locked":"Sua conta está trancada.","timeout":"Sua sessão expirou, por favor faça seu login novamente.","unauthenticated":"Você precisa fazer o login ou cadastrar-se antes de continuar.","unconfirmed":"Você precisa confirmar sua conta antes de continuar."},"mailer":{"confirmation_instructions":{"subject":"Instruções de confirmação"},"reset_password_instructions":{"subject":"Instruções de atualização de senha"},"unlock_instructions":{"subject":"Instruções de destrancamento"}},"passwords":{"send_instructions":"Você receberá um email com instruções de como atualizar sua senha em alguns minutos.","updated":"Sua senha foi alterada com sucesso. Você agora está logado."},"registrations":{"destroyed":"Tchau! Sua conta foi cancelada com sucesso. Esperamos vê-lo novamente em breve!","signed_up":"Você se cadastrou com sucesso. Se ativada, uma confirmação foi enviada para seu email.","updated":"Você atualizou sua conta com sucesso."},"sessions":{"signed_in":"Logado com sucesso.","signed_out":"Deslogado com sucesso."},"unlocks":{"send_instructions":"Você receberá um email com instruções de como destrancar sua conta em alguns minutos.","unlocked":"Sua conta foi destrancada com sucesso. Você agora está logado."}},"errors":{"messages":{"already_confirmed":"já foi confirmado","not_found":"não encontrado","not_locked":"não estava trancado"}},"home":{"name":"home"},"jobs":{"allowed_failures":"Falhas Permitidas","author":"Autor","branch":"Branch","build_matrix":"Matriz de Build","commit":"Commit","committer":"Committer","compare":"Comparar","config":"Config","duration":"Duração","finished_at":"Concluído em","message":"Mensagem","messages":{"sponsored_by":"Esta série de testes foi executada em uma caixa de processos patrocinada por"},"started_at":"Iniciou em"},"layouts":{"about":{"alpha":"Isto é um alpha.","join":"Junte-se à nós e ajude!","mailing_list":"Lista de email","messages":{"alpha":"Por favor, não considere isto um serviço estável. Estamos muito longe disso! Mais informações aqui. "},"repository":"Repositório","twitter":"Twitter"},"application":{"fork_me":"Faça fork no Github","my_repositories":"Meus Repositórios","recent":"Recentes","search":"Buscar","sponsers":"Patrocinadores","sponsors_link":"Conheça todos os nossos patrocinadores →"},"mobile":{"author":"Autor","build":"Build","build_matrix":"Matriz de Build","commit":"Commit","committer":"Committer","compare":"Comparar","config":"Config","duration":"Duração","finished_at":"Concluído em","job":"Trabalho","log":"Log"},"top":{"admin":"Admin","blog":"Blog","docs":"Documentação","github_login":"Logue com o Github","home":"Home","profile":"Perfil","sign_out":"Sair","stats":"Estatísticas"}},"locales":{"en":"English","es":"Español","fr":"Français","ja":"日本語","nb":"Norsk Bokmål","nl":"Nederlands","pl":"Polski","ru":"Русский","pt-BR":"português brasileiro"},"no_job":"Não há trabalhos","profiles":{"show":{"email":"Email","github":"Github","message":{"config":"como configurar opções de build","your_repos":"Use os botões abaixo para ligar ou desligar o hook de serviço do Travis para seus projetos, e então, faça um push para o Github. Para testar com múltiplas versões do Ruby, leia"},"messages":{"notice":"Para começar, leia nosso Guia de início . Só leva alguns minutinhos. "},"token":"Token","update":"Atualizar","update_locale":"Atualizar","your_locale":"Sua língua","your_repos":"Seus Repositórios"}},"queue":"Fila","repositories":{"branch":"Branch","commit":"Commit","duration":"Duração","finished_at":"Concluído em","image_url":"URL da imagem","markdown":"Markdown","message":"Mensagem","rdoc":"RDOC","started_at":"Iniciou em","tabs":{"branches":"Sumário do Branch","build":"Build","build_history":"Histórico de Build","current":"Atual","job":"Trabalho"},"textile":"Textile"},"repository":{"duration":"Duração"},"statistics":{"index":{"build_count":"Número de Builds","count":"Número","last_month":"último mês","repo_growth":"Crescimento de Repositório","total_builds":"Total de Builds","total_projects":"Total de Projetos/Repositórios"}},"workers":"Processos"},"ru":{"admin":{"actions":{"create":"создать","created":"создано","delete":"удалить","deleted":"удалено","update":"обновить","updated":"обновлено"},"credentials":{"log_out":"Выход"},"dashboard":{"add_new":"Добавить","ago":"назад","last_used":"Использовалось в последний раз","model_name":"Имя модели","modify":"Изменить","name":"Панель управления","pagename":"Управление сайтом","records":"Записи","show":"Показать"},"delete":{"confirmation":"Да, я уверен","flash_confirmation":"%{name} успешно удалено"},"history":{"name":"История","no_activity":"Нет активности","page_name":"История %{name}"},"list":{"add_new":"Добавить","delete_action":"Удалить","delete_selected":"Удалить выбранные","edit_action":"Редактировать","search":"Поиск","select":"Для редактирования выберите %{name}","select_action":"Выбрать","show_all":"Показать все"},"new":{"basic_info":"Основная информация","cancel":"Отмена","chosen":"Выбрано %{name}","chose_all":"Выбрать все","clear_all":"Очистить все","one_char":"символ.","optional":"Необязательно","required":"Обязательно","save":"Сохранить","save_and_add_another":"Сохранить и добавить другое","save_and_edit":"Сохранить и продолжить редактирование","select_choice":"Выберите и кликните","many_chars":"символов или меньше."},"flash":{"error":"%{name} не удалось %{action}","noaction":"Никаких действий не произведено","successful":"%{name} было успешно %{action}"}},"build":{"duration":"Длительность","finished_at":"Завершен","job":"Задача"},"builds":{"allowed_failures":"Допустимые неудачи","author":"Автор","branch":"Ветка","build_matrix":"Матрица","commit":"Коммит","committer":"Коммитер","compare":"Дифф","config":"Конфигурация","duration":"Длительность","finished_at":"Завершен","message":"Комментарий","messages":{"sponsored_by":"Эта серия тестов была запущена на машине, спонсируемой"},"name":"Билд","started_at":"Начало"},"datetime":{"distance_in_words":{"hours_exact":{"one":"%{count} час","few":"%{count} часа","many":"%{count} часов","other":"%{count} часа"},"minutes_exact":{"one":"%{count} минута","few":"%{count} минуты","many":"%{count} минут","other":"%{count} минуты"},"seconds_exact":{"one":"%{count} секунда","few":"%{count} секунды","many":"%{count} секунд","other":"%{count} секунды"}}},"devise":{"confirmations":{"confirmed":"Ваш аккаунт успешно подтвержден. Приветствуем!","send_instructions":"В течении нескольких минут вы получите электронное письмо с инструкциями для прохождения процедуры подтверждения аккаунта."},"failure":{"inactive":"Ваш аккаунт еще не активирован.","invalid":"Ошибка в адресе почты или пароле.","invalid_token":"Неправильный токен аутентификации.","locked":"Ваш аккаунт заблокирован.","timeout":"Сессия окончена. Для продолжения работы войдите снова.","unauthenticated":"Вам нужно войти или зарегистрироваться.","unconfirmed":"Вы должны сначала подтвердить свой аккаунт."},"mailer":{"confirmation_instructions":{"subject":"Инструкции для подтверждению аккаунта"},"reset_password_instructions":{"subject":"Инструкции для сброса пароля"},"unlock_instructions":{"subject":"Инструкции для разблокирования аккаунта"}},"passwords":{"send_instructions":"В течении нескольких минут вы получите электронное письмо с инструкциями для сброса пароля.","updated":"Ваш пароль успешно изменен. Приветствуем!"},"registrations":{"destroyed":"Ваш аккаунт был успешно удален. Живите долго и процветайте!","signed_up":"Вы успешно прошли регистрацию. Инструкции для подтверждения аккаунта отправлены на ваш электронный адрес.","updated":"Аккаунт успешно обновлен."},"sessions":{"signed_in":"Приветствуем!","signed_out":"Удачи!"},"unlocks":{"send_instructions":"В течении нескольких минут вы получите электронное письмо с инструкциям для разблокировния аккаунта.","unlocked":"Ваш аккаунт успешно разблокирован. Приветствуем!"}},"errors":{"messages":{"already_confirmed":"уже подтвержден","not_found":"не найден","not_locked":"не заблокирован"}},"home":{"name":"Главная"},"jobs":{"allowed_failures":"Допустимые неудачи","author":"Автор","branch":"Ветка","build_matrix":"Матрица","commit":"Коммит","committer":"Коммитер","compare":"Сравнение","config":"Конфигурация","duration":"Длительность","finished_at":"Завершен","message":"Комментарий","messages":{"sponsored_by":"Эта серия тестов была запущена на машине спонсируемой"},"started_at":"Начало"},"layouts":{"about":{"alpha":"Это альфа-версия","join":"Присоединяйтесь к нам и помогайте!","mailing_list":"Лист рассылки","messages":{"alpha":"Пожалуйста, не считайте данный сервис стабильным. Мы еще очень далеки от стабильности! Подробности "},"repository":"Репозиторий","twitter":"Twitter"},"application":{"fork_me":"Fork me on Github","my_repositories":"Мои репозитории","recent":"Недавние","search":"Поиск","sponsers":"Спонсоры","sponsors_link":"Список всех наших замечательных спонсоров →"},"mobile":{"author":"Автор","build":"Сборка","build_matrix":"Матрица сборок","commit":"Коммит","committer":"Коммитер","compare":"Сравнение","config":"Конфигурация","duration":"Длительность","finished_at":"Завершен","job":"Задача","log":"Журнал"},"top":{"admin":"Управление","blog":"Блог","docs":"Документация","github_login":"Войти через Github","home":"Главная","profile":"Профиль","sign_out":"Выход","stats":"Статистика"}},"no_job":"Очередь пуста","profiles":{"show":{"email":"Электронная почта","github":"Github","message":{"config":"как настроить специальные опции билда","your_repos":"Используйте переключатели, чтобы включить Travis service hook для вашего проекта, а потом отправьте код на GitHub. \\nДля тестирования на нескольких версиях Ruby смотрите"},"messages":{"notice":"Перед началом, пожалуйста, прочтите Руководство для быстрого старта . Это займет всего несколько минут. "},"token":"Токен","update":"Обновить","update_locale":"Обновить","your_locale":"Ваш язык","your_repos":"Ваши репозитории"}},"queue":"Очередь","repositories":{"branch":"Ветка","commit":"Коммит","duration":"Длительность","finished_at":"Завершен","image_url":"URL изображения","markdown":"Markdown","message":"Комментарий","rdoc":"RDOC","started_at":"Начало","tabs":{"branches":"Статус веток","build":"Билд","build_history":"История","current":"Текущий","job":"Задача"},"textile":"Textile"},"repository":{"duration":"Длительность"},"statistics":{"index":{"build_count":"Количество билдов","count":"Количество","last_month":"прошлый месяц","repo_growth":"Рост числа репозиториев","total_builds":"Всего билдов","total_projects":"Всего проектов/репозиториев"}},"workers":"Машины","locales":{"en":"English","es":"Español","ja":"日本語","ru":"Русский","fr":"Français","nb":"Norsk Bokmål","pl":"Polski","nl":"Nederlands","pt-BR":"português brasileiro"}}};\n\n\n})();\n//@ sourceURL=config/locales'
),minispade.register("ext/ember/bound_helper","(function() {// https://gist.github.com/2018185\n// For reference: https://github.com/wagenet/ember.js/blob/ac66dcb8a1cbe91d736074441f853e0da474ee6e/packages/ember-handlebars/lib/views/bound_property_view.js\nvar BoundHelperView = Ember.View.extend(Ember._Metamorph, {\n\n context: null,\n options: null,\n property: null,\n // paths of the property that are also observed\n propertyPaths: [],\n\n value: Ember.K,\n\n valueForRender: function() {\n var value = this.value(Ember.get(this.context, this.property), this.options);\n if (this.options.escaped) { value = Handlebars.Utils.escapeExpression(value); }\n return value;\n },\n\n render: function(buffer) {\n buffer.push(this.valueForRender());\n },\n\n valueDidChange: function() {\n if (this.morph.isRemoved()) { return; }\n this.morph.html(this.valueForRender());\n },\n\n didInsertElement: function() {\n this.valueDidChange();\n },\n\n init: function() {\n this._super();\n Ember.addObserver(this.context, this.property, this, 'valueDidChange');\n this.get('propertyPaths').forEach(function(propName) {\n Ember.addObserver(this.context, this.property + '.' + propName, this, 'valueDidChange');\n }, this);\n },\n\n destroy: function() {\n Ember.removeObserver(this.context, this.property, this, 'valueDidChange');\n this.get('propertyPaths').forEach(function(propName) {\n this.context.removeObserver(this.property + '.' + propName, this, 'valueDidChange');\n }, this);\n this._super();\n }\n\n});\n\nEmber.registerBoundHelper = function(name, func) {\n var propertyPaths = Array.prototype.slice.call(arguments, 2);\n Ember.Handlebars.registerHelper(name, function(property, options) {\n var data = options.data,\n view = data.view,\n ctx = this;\n\n var bindView = view.createChildView(BoundHelperView, {\n property: property,\n propertyPaths: propertyPaths,\n context: ctx,\n options: options.hash,\n value: func\n });\n\n view.appendChild(bindView);\n });\n};\n\n\n})();\n//@ sourceURL=ext/ember/bound_helper"),minispade.register("ext/ember/namespace","(function() {Em.Namespace.reopen = Em.Namespace.reopenClass\n\n\n\n})();\n//@ sourceURL=ext/ember/namespace");;
\ No newline at end of file
diff --git a/public/styles/app.css b/public/styles/app.css
index 5dc5ea95..af35ffd0 100644
--- a/public/styles/app.css
+++ b/public/styles/app.css
@@ -4340,7 +4340,6 @@ pre#log .fold.open {
}
/* line 21, /Users/sven/Development/projects/travis/travis-web/assets/styles/maximize.sass */
-#profile #top .profile,
.maximized #top .profile {
margin-right: 40px;
}
diff --git a/public/version b/public/version
index 012e9f94..8a29dfe2 100644
--- a/public/version
+++ b/public/version
@@ -1 +1 @@
-b424b81b
\ No newline at end of file
+56cfce1b
\ No newline at end of file