From 011d6241cf55bb247a3458673bf0ed955bde9fa0 Mon Sep 17 00:00:00 2001 From: Sean Li Date: Fri, 30 Jan 2015 12:11:41 -0800 Subject: [PATCH 01/35] Refactored container list. Hover over effects. Frontend restyle. --- app/ContainerDetails.react.js | 240 ++++++++++++------- app/ContainerList.react.js | 53 +---- app/ContainerListItem.react.js | 84 +++++++ app/Containers.react.js | 4 +- app/Header.react.js | 12 +- app/styles/containers.less | 418 ++++++++++++++++++++------------- app/styles/header.less | 20 +- app/styles/main.less | 6 +- app/styles/theme.less | 14 +- app/styles/variables.less | 2 +- 10 files changed, 528 insertions(+), 325 deletions(-) create mode 100644 app/ContainerListItem.react.js diff --git a/app/ContainerDetails.react.js b/app/ContainerDetails.react.js index c1d48058ab..7ec8d63921 100644 --- a/app/ContainerDetails.react.js +++ b/app/ContainerDetails.react.js @@ -12,12 +12,15 @@ var ContainerUtil = require('./ContainerUtil'); var docker = require('./docker'); var boot2docker = require('./boot2docker'); var ProgressBar = require('react-bootstrap/ProgressBar'); +var Popover = require('react-bootstrap/Popover'); var ContainerDetails = React.createClass({ mixins: [Router.State, Router.Navigation], _oldHeight: 0, PAGE_LOGS: 'logs', PAGE_SETTINGS: 'settings', + PAGE_PORTS: 'ports', + PAGE_VOLUMES: 'volumes', getInitialState: function () { return { logs: [], @@ -77,7 +80,7 @@ var ContainerDetails = React.createClass({ var $viewPopover = $(this.getDOMNode()).find('.popover-view'); var $volumePopover = $(this.getDOMNode()).find('.popover-volume'); - if ($viewDropdown && $volumeDropdown && $viewPopover && $volumePopover) { + /*if ($viewDropdown && $volumeDropdown && $viewPopover && $volumePopover) { $viewPopover.offset({ top: $viewDropdown.offset().top + 32, left: $viewDropdown.offset().left - ($viewPopover.outerWidth() / 2) + 14 @@ -87,7 +90,7 @@ var ContainerDetails = React.createClass({ top: $volumeDropdown.offset().top + 32, left: $volumeDropdown.offset().left + $volumeDropdown.outerWidth() - $volumePopover.outerWidth() / 2 - 20 }); - } + }*/ }, init: function () { var container = ContainerStore.container(this.getParams().name); @@ -127,12 +130,23 @@ var ContainerDetails = React.createClass({ page: this.PAGE_LOGS }); }, + showPorts: function () { + this.setState({ + page: this.PAGE_PORTS + }); + }, + showVolumes: function () { + this.setState({ + page: this.PAGE_VOLUMES + }); + }, showSettings: function () { this.setState({ page: this.PAGE_SETTINGS }); }, handleView: function () { + console.log('CLICKED'); if (this.state.defaultPort) { console.log(this.state.defaultPort); exec(['open', this.state.ports[this.state.defaultPort].url], function (err) { @@ -160,11 +174,6 @@ var ContainerDetails = React.createClass({ console.log(err); }); }, - handleRestart: function () { - ContainerStore.restart(this.props.container.Name, function (err) { - console.log(err); - }); - }, handleTerminal: function () { var container = this.props.container; var terminal = path.join(process.cwd(), 'resources', 'terminal').replace(/ /g, '\\\\ '); @@ -264,13 +273,15 @@ var ContainerDetails = React.createClass({ var state; if (this.props.container.State.Running) { - state =

running

; + state = RUNNING; } else if (this.props.container.State.Restarting) { - state =

restarting

; + state = RESTARTING; } else if (this.props.container.State.Paused) { - state =

paused

; + state = PAUSED; } else if (this.props.container.State.Downloading) { - state =

downloading

; + state = DOWNLOADING; + } else { + state = STOPPED; } var button; @@ -359,6 +370,29 @@ var ContainerDetails = React.createClass({ var dropdownViewButtonClass = React.addons.classSet(assign({'dropdown-view': true}, dropdownClasses)); var dropdownVolumeButtonClass = React.addons.classSet(assign({'dropdown-volume': true}, dropdownClasses)); + var ports = _.map(_.pairs(self.state.ports), function (pair, index, list) { + var key = pair[0]; + var val = pair[1]; + return ( +
+ {key} + {val.display} +
+ ); + }); + + var volumes = _.map(self.props.container.Volumes, function (val, key) { + if (!val || val.indexOf(process.env.HOME) === -1) { + val = 'No Host Folder'; + } + return ( +
+ {key} + {val.replace(process.env.HOME, '~')} +
+ ); + }); + var body; if (this.props.container.State.Downloading) { body = ( @@ -375,106 +409,136 @@ var ContainerDetails = React.createClass({ ); + } else if (this.state.page === this.PAGE_PORTS) { + body = ( +
+
+

Configure Ports

+
+
+
DOCKER PORT
+
MAC PORT
+
+ {ports} +
+
+
+ ); + } else if (this.state.page === this.PAGE_VOLUMES) { + body = ( +
+
+

Configure Volumes

+
+
+
DOCKER FOLDER
+
MAC FOLDER
+
+ {volumes} +
+
+
+ ); } else { body = (
-

Container Name

-
- -
- Save -

Environment Variables

-
-
KEY
-
VALUE
-
-
- {envVars} - {pendingEnvVars} -
- - - +
+

Container Name

+
+
+ Save +
+
+

Environment Variables

+
+
KEY
+
VALUE
+
+
+ {envVars} + {pendingEnvVars} +
+ + + +
+
+ Save +
+
+

Delete Container

+ Delete Container
- Save -

Delete Container

- Delete Container
); } } - var ports = _.map(_.pairs(self.state.ports), function (pair, index, list) { - var key = pair[0]; - var val = pair[1]; - return ( -
- {key} - {val.display} -
- ); + var tabLogsClasses = React.addons.classSet({ + 'tab': true, + 'active': this.state.page === this.PAGE_LOGS, + disabled: this.props.container.State.Downloading }); - var volumes = _.map(self.props.container.Volumes, function (val, key) { - if (!val || val.indexOf(process.env.HOME) === -1) { - val = 'No Host Folder'; - } - return ( -
- {key} - {val.replace(process.env.HOME, '~')} -
- ); + var tabPortsClasses = React.addons.classSet({ + 'tab': true, + 'active': this.state.page === this.PAGE_PORTS, + disabled: this.props.container.State.Downloading + }); + + var tabVolumesClasses = React.addons.classSet({ + 'tab': true, + 'active': this.state.page === this.PAGE_VOLUMES, + disabled: this.props.container.State.Downloading + }); + + var tabSettingsClasses = React.addons.classSet({ + 'tab': true, + 'active': this.state.page === this.PAGE_SETTINGS, + disabled: this.props.container.State.Downloading }); return (
-
-

{this.props.container.Name}

{state}

Image

{this.props.container.Config.Image}

-
+

{this.props.container.Name}

{this.props.container.Config.Image}

-
- View - -
- - - -
- - -
+ + + +
+
+
+ {state} +
+ Logs + Ports + Volumes + Settings
- -
-
-
DOCKER PORT
-
MAC PORT
-
- {ports} -
-
- -
-
-
DOCKER FOLDER
-
MAC FOLDER
-
- {volumes} -
-
{body} + +
+
+
DOCKER PORT
+
MAC PORT
+
+ {ports} +
+
+ +
+
+
DOCKER FOLDER
+
MAC FOLDER
+
+ {volumes} +
+
); } diff --git a/app/ContainerList.react.js b/app/ContainerList.react.js index 0d00fa0e40..5218ae4328 100644 --- a/app/ContainerList.react.js +++ b/app/ContainerList.react.js @@ -7,65 +7,16 @@ var Modal = require('react-bootstrap/Modal'); var RetinaImage = require('react-retina-image'); var ModalTrigger = require('react-bootstrap/ModalTrigger'); var ContainerModal = require('./ContainerModal.react'); +var ContainerListItem = require('./ContainerListItem.react'); var Header = require('./Header.react'); var docker = require('./docker'); var ContainerList = React.createClass({ - componentWillMount: function () { - this._start = Date.now(); - }, render: function () { var self = this; var containers = this.props.containers.map(function (container) { - var downloadingImage = null, downloading = false; - var env = container.Config.Env; - if (env.length) { - var obj = _.object(env.map(function (e) { - return e.split('='); - })); - if (obj.KITEMATIC_DOWNLOADING) { - downloading = true; - } - downloadingImage = obj.KITEMATIC_DOWNLOADING_IMAGE || null; - } - - var imageName = downloadingImage || container.Config.Image; - - // Synchronize all animations - var style = { - WebkitAnimationDelay: (self._start - Date.now()) + 'ms' - }; - - var state; - if (downloading) { - state =
; - } else if (container.State.Running && !container.State.Paused) { - state =
; - } else if (container.State.Restarting) { - state =
; - } else if (container.State.Paused) { - state =
; - } else if (container.State.ExitCode) { - // state =
; - state =
; - } else { - state =
; - } - return ( - -
  • - {state} -
    -
    - {container.Name} -
    -
    - {imageName} -
    -
    -
  • -
    + ); }); return ( diff --git a/app/ContainerListItem.react.js b/app/ContainerListItem.react.js new file mode 100644 index 0000000000..6ff3251262 --- /dev/null +++ b/app/ContainerListItem.react.js @@ -0,0 +1,84 @@ +var async = require('async'); +var _ = require('underscore'); +var $ = require('jquery'); +var React = require('react/addons'); +var Router = require('react-router'); +var Modal = require('react-bootstrap/Modal'); +var RetinaImage = require('react-retina-image'); +var ModalTrigger = require('react-bootstrap/ModalTrigger'); +var ContainerModal = require('./ContainerModal.react'); +var Header = require('./Header.react'); +var docker = require('./docker'); + +var ContainerListItem = React.createClass({ + componentWillMount: function () { + this._start = Date.now(); + }, + handleItemMouseEnter: function () { + var $action = $(this.getDOMNode()).find('.action'); + $action.show(); + }, + handleItemMouseLeave: function () { + var $action = $(this.getDOMNode()).find('.action'); + $action.hide(); + }, + render: function () { + var self = this; + var container = this.props.container; + var downloadingImage = null, downloading = false; + var env = container.Config.Env; + if (env.length) { + var obj = _.object(env.map(function (e) { + return e.split('='); + })); + if (obj.KITEMATIC_DOWNLOADING) { + downloading = true; + } + downloadingImage = obj.KITEMATIC_DOWNLOADING_IMAGE || null; + } + + var imageName = downloadingImage || container.Config.Image; + + // Synchronize all animations + var style = { + WebkitAnimationDelay: (self._start - Date.now()) + 'ms' + }; + + var state; + if (downloading) { + state =
    ; + } else if (container.State.Running && !container.State.Paused) { + state =
    ; + } else if (container.State.Restarting) { + state =
    ; + } else if (container.State.Paused) { + state =
    ; + } else if (container.State.ExitCode) { + // state =
    ; + state =
    ; + } else { + state =
    ; + } + + return ( + +
  • + {state} +
    +
    + {container.Name} +
    +
    + {imageName} +
    +
    +
    + +
    +
  • +
    + ); + } +}); + +module.exports = ContainerListItem; diff --git a/app/Containers.react.js b/app/Containers.react.js index 0372475515..3377f4fd8a 100644 --- a/app/Containers.react.js +++ b/app/Containers.react.js @@ -79,10 +79,10 @@ var Containers = React.createClass({
    -

    My Containers

    +

    Containers

    }> - +
    diff --git a/app/Header.react.js b/app/Header.react.js index e12d1199f4..30af89c47d 100644 --- a/app/Header.react.js +++ b/app/Header.react.js @@ -40,9 +40,9 @@ var Header = React.createClass({ return (
    -
    -
    -
    +
    +
    +
    ); @@ -50,9 +50,9 @@ var Header = React.createClass({ return (
    -
    -
    -
    +
    +
    +
    ); diff --git a/app/styles/containers.less b/app/styles/containers.less index 4e00a55783..5a99f0eb41 100644 --- a/app/styles/containers.less +++ b/app/styles/containers.less @@ -13,99 +13,6 @@ flex-direction: column; padding: 14px 14px 20px; - .table { - margin-bottom: 0; - .icon-arrow-right { - color: #aaa; - margin: 2px 9px 0; - flex: 0 auto; - min-width: 13px; - } - .btn { - min-width: 22px; - margin-left: 10px; - } - .table-labels { - flex: 1 auto; - display: flex; - font-size: 12px; - color: @gray-lightest; - .label-left { - flex: 0 auto; - min-width: 80px; - margin-right: 30px; - text-align: right; - } - .label-right { - flex: 1 auto; - display: inline-block; - width: 40%; - } - } - .table-values { - flex: 1 auto; - display: flex; - flex-direction: row; - margin: 8px 0; - .value-left { - text-align: right; - min-width: 80px; - flex: 0 auto; - } - .value-right { - flex: 1 auto; - -webkit-user-select: text; - width: 154px; - } - } - .table-new { - margin-top: 10px; - flex: 1 auto; - display: flex; - input { - padding: 0; - font-weight: 400; - } - input.new-left { - flex: 0 auto; - text-align: right; - min-width: 80px; - max-width: 80px; - } - .new-right-wrapper { - position: relative; - display: flex; - flex: 1 auto; - .new-right-placeholder { - position: absolute; - top: 3px; - left: 0; - font-weight: 400; - } - - input.new-right { - flex: 1 auto; - height: 24px; - position :relative; - padding-left: 107px; - } - } - } - - &.volumes { - .label-left { - min-width: 120px; - } - .value-left { - min-width: 120px; - } - .icon { - color: #aaa; - margin: 2px 9px 0; - } - } - } - .question { margin: 12px 6px 6px; } @@ -122,22 +29,26 @@ display: flex; flex-direction: row; + padding: 0px; + .sidebar { + padding-top: 28px; + background-color: white; display: flex; flex-direction: column; - min-width: 280px; + min-width: 260px; margin: 0; box-sizing: border-box; - border-right: 1px solid #eee; + border-right: 1px solid #DCE2E2; .sidebar-header { flex: 0 auto; min-width: 240px; - min-height: 42px; + min-height: 47px; display: flex; border-bottom: 1px solid transparent; transition: border-bottom 0.25s; - padding: 0px 10px 0px 10px; + //padding: 0px 10px 0px 10px; &.sep { border-bottom: 1px solid #eee; @@ -146,27 +57,27 @@ h4 { align-self: flex-start; - padding: 0 24px; + //padding: 0 24px; + padding-left: 26px; margin: 14px 0 0; display: inline-block; - font-size: 14px; position: relative; } .create { flex: 1 auto; text-align: right; - /*.btn { - margin-top: 4px; - padding: 4px 7px; - font-size: 16px; - position: relative; - .icon { - position: relative; - top: 3px; - left: 1px; + margin-right: 20px; + margin-top: 3px; + + .btn-new { + font-size: 24px; + color: @brand-action; + transition: all 0.25s; + &:hover { + color: darken(@brand-action, 10%); } - }*/ + } } } @@ -176,7 +87,7 @@ overflow-y: scroll; overflow-x: hidden; box-sizing: border-box; - max-width: 280px; + max-width: 260px; &.sep { border-top: 1px solid #eee; @@ -184,9 +95,7 @@ ul { margin: 0; - min-width: 240px; padding: 0; - margin-top: 4px; display: flex; flex-direction: column; @@ -195,23 +104,29 @@ color: inherit; flex-shrink: 0; cursor: default; - margin: 0px 3px 0px 8px; outline: none; - padding: 4px 5px; &.active { li { border-bottom: none; - border-radius: 40px; - background: @brand-primary; + background-image: linear-gradient(-180deg, #24B8EB 4%, #24A3EB 100%); .name { color: white; } .image { color: white; - opacity: 0.9; + opacity: 0.8; + } + .btn-delete { + font-size: 24px; + color: white; + opacity: 0.8; + transition: all 0.25s; + &:hover { + opacity: 1; + color: white; + } } - .state-running { .at2x('running-white.png', 20px, 20px); @@ -244,7 +159,7 @@ li { vertical-align: middle; - padding: 10px 16px 10px 16px; + padding: 10px 16px 10px 26px; display: flex; flex-direction: row; @@ -271,6 +186,23 @@ } } + .action { + display: none; + flex: 1; + position: relative; + top: 5px; + text-align: right; + margin-right: 4px; + .btn-delete { + font-size: 24px; + color: @gray-lighter; + transition: all 0.25s; + &:hover { + color: @brand-action; + } + } + } + .state { margin-top: 9px; display: inline-block; @@ -370,16 +302,108 @@ display: flex; flex-direction: column; + .details-subheader { + flex: 0 auto; + display: flex; + flex-direction: row; + position: relative; + border-bottom: 1px solid @gray-lightest; + background-color: white; + height: 32px; + padding: 8px 10px 10px 24px; + font-size: 12px; + color: @gray-normal; + .status { + font-weight: 500; + position: relative; + top: -2px; + &.running { + color: @brand-positive; + } + &.paused { + color: @gray-lighter; + } + &.stopped { + color: @gray-lighter; + } + } + .details-subheader-tabs { + flex: 1 auto; + text-align: right; + margin-right: 0px; + .tab { + margin-left: 20px; + padding: 3px 10px; + transition: all 0.25s; + &:hover { + color: @brand-action; + } + &.active { + background-color: lighten(@brand-action, 38%); + border-radius: 4px; + color: darken(@brand-action, 25%); + } + } + } + } + .details-header { flex: 0 auto; display: flex; - flex-direction: column; - padding: 4px 40px 10px 40px; + flex-direction: row; + padding: 31px 24px 18px 24px; position: relative; - border-bottom: 1px solid #eee; + border-bottom: 1px solid #DCE2E2; + background-color: #F9F9f9; + height: 75px; + h1 { + margin: 0; + font-size: 20px; + font-weight: 300; + margin: 0; + color: @gray-darkest; + } + h2 { + &.status { + margin: 9px 0px 0px 12px; + font-weight: bold; + font-size: 10px; + &.running { + color: @brand-positive; + } + } + &.image { + flex: 1 auto; + margin: 7px 0px 0px 16px; + font-size: 12px; + color: @gray-normal; + font-weight: 300; + } + } .details-header-actions { - flex: 0 auto; + flex: 1 auto; + text-align: right; + margin-top: -6px; + .action-icon { + font-size: 23px; + margin-left: 24px; + color: @gray-darker; + transition: all 0.25s; + &:hover { + color: @brand-action; + } + &.view-icon { + position: relative; + top: 2px; + font-size: 27px; + //color: @gray-darkest; + } + } + } + + /*.details-header-actions { + flex: 1; display: flex; flex-direction: row; margin-top: 24px; @@ -400,44 +424,7 @@ z-index: 0; } } - } - - .details-header-info { - display: flex; - flex-direction: row; - a { - position: absolute; - right: 30px; - top: -4px; - } - h1 { - margin: 0; - font-size: 20px; - margin: 0; - color: @gray-darkest; - } - h2 { - &.status { - margin: 8px 0px 0px 16px; - text-transform: uppercase; - font-weight: bold; - font-size: 10px; - &.running { - color: @brand-positive; - } - } - &.image-label { - margin: 8px 0px 0px 30px; - font-size: 10px; - color: @gray-lighter; - } - &.image { - margin: 5px 0px 0px 16px; - font-size: 14px; - color: @gray-normal; - } - } - } + }*/ } .details-progress { @@ -449,10 +436,11 @@ flex: 1; overflow: auto; .logs { + background-color: #FEFEFE; -webkit-user-select: text; font-family: Menlo; font-size: 12px; - padding: 18px 35px; + padding: 20px 20px; color: lighten(@gray-normal, 6%); white-space: pre-wrap; p { @@ -460,7 +448,110 @@ } } .settings { - padding: 18px 35px; + padding: 18px 38px; + .settings-section { + margin-bottom: 40px; + } + } + .ports { + padding: 18px 38px; + } + .volumes { + padding: 18px 38px; + } + + .table { + margin-bottom: 0; + .icon-arrow-right { + color: #aaa; + margin: 2px 9px 0; + flex: 0 auto; + min-width: 13px; + } + .btn { + min-width: 22px; + margin-left: 10px; + } + .table-labels { + margin-top: 20px; + flex: 1 auto; + display: flex; + font-size: 12px; + color: @gray-lightest; + .label-left { + flex: 0 auto; + min-width: 80px; + margin-right: 30px; + text-align: right; + } + .label-right { + flex: 1 auto; + display: inline-block; + width: 40%; + } + } + .table-values { + flex: 1 auto; + display: flex; + flex-direction: row; + margin: 8px 0; + .value-left { + text-align: right; + min-width: 80px; + flex: 0 auto; + } + .value-right { + flex: 1 auto; + -webkit-user-select: text; + width: 40%; + } + } + .table-new { + margin-top: 10px; + flex: 1 auto; + display: flex; + input { + padding: 0; + font-weight: 400; + } + input.new-left { + flex: 0 auto; + text-align: right; + min-width: 80px; + max-width: 80px; + } + .new-right-wrapper { + position: relative; + display: flex; + flex: 1 auto; + .new-right-placeholder { + position: absolute; + top: 3px; + left: 0; + font-weight: 400; + } + + input.new-right { + flex: 1 auto; + height: 24px; + position :relative; + padding-left: 107px; + } + } + } + + &.volumes { + .label-left { + min-width: 120px; + } + .value-left { + min-width: 120px; + } + .icon { + color: #aaa; + margin: 2px 9px 0; + } + } } } @@ -477,6 +568,7 @@ color: @gray-lightest; margin-left: 5px; margin-bottom: 5px; + margin-top: 20px; .label-key { display: inline-block; margin-right: 30px; diff --git a/app/styles/header.less b/app/styles/header.less index 4731611def..a55c503aab 100644 --- a/app/styles/header.less +++ b/app/styles/header.less @@ -1,9 +1,10 @@ @import "bootstrap/bootstrap.less"; .header { + position: absolute; min-width: 100%; flex: 0; - min-height: 50px; + min-height: 30px; -webkit-app-region: drag; -webkit-user-select: none; // border-bottom: 1px solid #efefef; @@ -15,8 +16,8 @@ .buttons { display: inline-block; position: relative; - top: 16px; - left: 20px; + top: 10px; + left: 15px; &:hover { .button-minimize.enabled { @@ -44,7 +45,18 @@ border-radius: 6px; box-shadow: 0px 1px 1px 0px rgba(234,234,234,0.50); -webkit-app-region: no-drag; - + &.red { + background-color: #FF5F52; + border-color: #E33E32; + } + &.yellow { + background-color: #FFBE05; + border-color: #E2A100; + } + &.green { + background-color: #15CC35; + border-color: #17B230; + } &.disabled { border: 1px solid #E8EEEF; } diff --git a/app/styles/main.less b/app/styles/main.less index 81fe584909..c852cd8fc8 100644 --- a/app/styles/main.less +++ b/app/styles/main.less @@ -17,7 +17,7 @@ html, body { overflow: hidden; -webkit-font-smoothing: antialiased; -webkit-user-select: none; - font-family: 'Clear Sans', sans-serif; + font-family: "Helvetica Neue", Helvetica, Arial, "Lucida Grande", sans-serif; cursor: default; img { @@ -25,7 +25,7 @@ html, body { } } -::-webkit-scrollbar { +/*::-webkit-scrollbar { width: 13px; } @@ -46,7 +46,7 @@ html, body { &:hover { background-color: rgba(0,0,0,0.25); } -} +}*/ .question { color: @gray-lightest; diff --git a/app/styles/theme.less b/app/styles/theme.less index faa71737d8..24bfbcac50 100644 --- a/app/styles/theme.less +++ b/app/styles/theme.less @@ -12,7 +12,7 @@ h3 { h4 { font-size: 13px; - color: @gray-normal; + color: @gray-darker; font-weight: 400; } @@ -28,7 +28,7 @@ input[type="text"] { color: @gray-normal; font-weight: 300; padding: 5px; - transition: all 0.1s; + transition: all 0.25s; &:focus { outline: 0; border-bottom: 1px solid @brand-action; @@ -56,7 +56,7 @@ input[type="text"] { // Mixin for generating new styles .btn-styles(@btn-color: @gray-normal) { - transition: all 0.1s; + transition: all 0.25s; .reset-filter(); // Disable gradients for IE9 because filter bleeds through rounded corners border-color: @btn-color; color: @btn-color; @@ -111,7 +111,7 @@ input[type="text"] { // Common styles .btn { - font-size: 12px; + font-size: 13px; background-color: transparent; color: @gray-normal; border: 1px solid @gray-normal; @@ -119,8 +119,8 @@ input[type="text"] { box-shadow: none; font-weight: 400; text-shadow: none; - padding: 6px 14px 6px 14px; - height: 32px; + padding: 4px 14px 4px 14px; + height: 28px; cursor: default; &.small { @@ -166,7 +166,7 @@ input[type="text"] { &.only-icon { padding: 6px 7px 6px 7px; &.small { - padding: 2px 5px 3px 5px; + padding: 3px 5px 3px 5px; } } } diff --git a/app/styles/variables.less b/app/styles/variables.less index cff01eb030..3d8a1b7f92 100644 --- a/app/styles/variables.less +++ b/app/styles/variables.less @@ -1,6 +1,6 @@ @brand-primary: #24B8EB; @brand-action: #24B8EB; -@brand-positive: #65E100; +@brand-positive: #16E568; @brand-negative: #F47A45; @gray-darkest: #253237; From c693f61e1a5e24255baa98471e869fb7d76e8384 Mon Sep 17 00:00:00 2001 From: Sean Li Date: Fri, 30 Jan 2015 17:42:50 -0800 Subject: [PATCH 02/35] Fixed some style. --- app/ContainerDetails.react.js | 4 +-- app/styles/containers.less | 58 ++++++++++++++++------------------- app/styles/theme.less | 2 +- 3 files changed, 30 insertions(+), 34 deletions(-) diff --git a/app/ContainerDetails.react.js b/app/ContainerDetails.react.js index 7ec8d63921..0ff5a53c21 100644 --- a/app/ContainerDetails.react.js +++ b/app/ContainerDetails.react.js @@ -504,7 +504,7 @@ var ContainerDetails = React.createClass({ return (
    -

    {this.props.container.Name}

    {this.props.container.Config.Image}

    +

    {this.props.container.Name}

    {state}
    @@ -512,7 +512,7 @@ var ContainerDetails = React.createClass({
    - {state} + {this.props.container.Config.Image}
    Logs Ports diff --git a/app/styles/containers.less b/app/styles/containers.less index 5a99f0eb41..a1feea273b 100644 --- a/app/styles/containers.less +++ b/app/styles/containers.less @@ -84,7 +84,7 @@ .sidebar-containers { position: relative; flex: 1 auto; - overflow-y: scroll; + overflow-y: auto; overflow-x: hidden; box-sizing: border-box; max-width: 260px; @@ -310,23 +310,19 @@ border-bottom: 1px solid @gray-lightest; background-color: white; height: 32px; - padding: 8px 10px 10px 24px; - font-size: 12px; + padding: 7px 10px 10px 24px; + font-size: 13px; color: @gray-normal; - .status { - font-weight: 500; - position: relative; - top: -2px; - &.running { - color: @brand-positive; - } - &.paused { - color: @gray-lighter; - } - &.stopped { - color: @gray-lighter; - } + + .image { + flex: 1 auto; + //margin: 7px 0px 0px 16px; + margin-top: 1px; + font-size: 13px; + color: @gray-normal; + //font-weight: 300; } + .details-subheader-tabs { flex: 1 auto; text-align: right; @@ -335,6 +331,7 @@ margin-left: 20px; padding: 3px 10px; transition: all 0.25s; + font-weight: 500; &:hover { color: @brand-action; } @@ -363,21 +360,20 @@ margin: 0; color: @gray-darkest; } - h2 { - &.status { - margin: 9px 0px 0px 12px; - font-weight: bold; - font-size: 10px; - &.running { - color: @brand-positive; - } + .status { + font-size: 10px; + font-weight: 500; + position: relative; + top: 8px; + left: 14px; + &.running { + color: @brand-positive; } - &.image { - flex: 1 auto; - margin: 7px 0px 0px 16px; - font-size: 12px; - color: @gray-normal; - font-weight: 300; + &.paused { + color: @gray-lighter; + } + &.stopped { + color: @gray-lighter; } } @@ -440,7 +436,7 @@ -webkit-user-select: text; font-family: Menlo; font-size: 12px; - padding: 20px 20px; + padding: 20px 18px; color: lighten(@gray-normal, 6%); white-space: pre-wrap; p { diff --git a/app/styles/theme.less b/app/styles/theme.less index 24bfbcac50..801df30911 100644 --- a/app/styles/theme.less +++ b/app/styles/theme.less @@ -13,7 +13,7 @@ h3 { h4 { font-size: 13px; color: @gray-darker; - font-weight: 400; + font-weight: 500; } .popover-content { From f4d1e1588b84267291ebda634989e03c4748e27c Mon Sep 17 00:00:00 2001 From: Sean Li Date: Fri, 30 Jan 2015 17:45:39 -0800 Subject: [PATCH 03/35] Fixed OCD padding. --- app/styles/containers.less | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/styles/containers.less b/app/styles/containers.less index a1feea273b..9ce1826e1b 100644 --- a/app/styles/containers.less +++ b/app/styles/containers.less @@ -310,7 +310,7 @@ border-bottom: 1px solid @gray-lightest; background-color: white; height: 32px; - padding: 7px 10px 10px 24px; + padding: 6px 10px 10px 24px; font-size: 13px; color: @gray-normal; From bb122b204484cefcd1120892a577480d4fdc0ad8 Mon Sep 17 00:00:00 2001 From: Sean Li Date: Sat, 31 Jan 2015 21:00:35 -0800 Subject: [PATCH 04/35] Minor bug fixes and style tweak. --- app/ContainerDetails.react.js | 20 +++++--- app/ContainerUtil.js | 2 +- app/styles/containers.less | 94 +++++++++++++++++++++++------------ app/styles/theme.less | 2 +- 4 files changed, 77 insertions(+), 41 deletions(-) diff --git a/app/ContainerDetails.react.js b/app/ContainerDetails.react.js index 0ff5a53c21..3538ae2d6d 100644 --- a/app/ContainerDetails.react.js +++ b/app/ContainerDetails.react.js @@ -505,14 +505,22 @@ var ContainerDetails = React.createClass({

    {this.props.container.Name}

    {state} -
    - - - -
    - {this.props.container.Config.Image} +
    +
    + + View +
    +
    + + Restart +
    +
    + + Terminal +
    +
    Logs Ports diff --git a/app/ContainerUtil.js b/app/ContainerUtil.js index 1b396b0298..3707a41211 100644 --- a/app/ContainerUtil.js +++ b/app/ContainerUtil.js @@ -17,7 +17,7 @@ var ContainerUtil = { var ip = docker.host; console.log(container); _.each(container.NetworkSettings.Ports, function (value, key) { - var dockerPort = key; + var dockerPort = key.split('/')[0]; var localUrl = null; var localUrlDisplay = null; if (value && value.length) { diff --git a/app/styles/containers.less b/app/styles/containers.less index 9ce1826e1b..ccb8881eeb 100644 --- a/app/styles/containers.less +++ b/app/styles/containers.less @@ -307,9 +307,10 @@ display: flex; flex-direction: row; position: relative; - border-bottom: 1px solid @gray-lightest; - background-color: white; - height: 32px; + //border-top: 1px solid #EEE; + border-bottom: 1px solid #EEE; + background-color: #F9F9F9; + height: 57px; padding: 6px 10px 10px 24px; font-size: 13px; color: @gray-normal; @@ -321,24 +322,73 @@ font-size: 13px; color: @gray-normal; //font-weight: 300; + img { + width: 30px; + height: 18px; + position: relative; + top: -2px; + margin-right: 10px; + } + } + + .details-header-actions { + flex: 1 auto; + text-align: left; + margin-top: -10px; + .action { + display: inline-block; + .action-icon { + &.icon:before { + text-align: center; + } + /*background: linear-gradient(-180deg, #24B8EB 4%, #24A3EB 100%); + -webkit-background-clip: text; + -webkit-text-fill-color: transparent;*/ + color: @gray-normal; + font-size: 32px; + margin-right: 35px; + //color: @gray-darker; + transition: all 0.25s; + &:hover { + color: @brand-action; + /*background: linear-gradient(-180deg, darken(#24B8EB, 10%) 4%, darken(#24A3EB, 10%) 100%); + -webkit-background-clip: text; + -webkit-text-fill-color: transparent;*/ + } + &.view-icon { + position: relative; + top: 1px; + font-size: 35px; + //color: @gray-darkest; + } + } + .btn-label { + position: relative; + top: -9px; + display: block; + color: @brand-action; + font-size: 10px; + display: none; + } + } } .details-subheader-tabs { flex: 1 auto; text-align: right; - margin-right: 0px; + margin-right: 3px; .tab { - margin-left: 20px; + margin-left: 16px; padding: 3px 10px; transition: all 0.25s; - font-weight: 500; + font-weight: 400; &:hover { color: @brand-action; } &.active { - background-color: lighten(@brand-action, 38%); + background-color: #D2EEF8; border-radius: 4px; - color: darken(@brand-action, 25%); + color: #365B64; } } } @@ -350,13 +400,12 @@ flex-direction: row; padding: 31px 24px 18px 24px; position: relative; - border-bottom: 1px solid #DCE2E2; - background-color: #F9F9f9; + background-color: #F9F9F9; height: 75px; h1 { margin: 0; font-size: 20px; - font-weight: 300; + font-weight: 400; margin: 0; color: @gray-darkest; } @@ -377,27 +426,6 @@ } } - .details-header-actions { - flex: 1 auto; - text-align: right; - margin-top: -6px; - .action-icon { - font-size: 23px; - margin-left: 24px; - color: @gray-darker; - transition: all 0.25s; - &:hover { - color: @brand-action; - } - &.view-icon { - position: relative; - top: 2px; - font-size: 27px; - //color: @gray-darkest; - } - } - } - /*.details-header-actions { flex: 1; display: flex; @@ -431,8 +459,8 @@ .details-panel { flex: 1; overflow: auto; + background-color: white; .logs { - background-color: #FEFEFE; -webkit-user-select: text; font-family: Menlo; font-size: 12px; diff --git a/app/styles/theme.less b/app/styles/theme.less index 801df30911..eec6747988 100644 --- a/app/styles/theme.less +++ b/app/styles/theme.less @@ -166,7 +166,7 @@ input[type="text"] { &.only-icon { padding: 6px 7px 6px 7px; &.small { - padding: 3px 5px 3px 5px; + padding: 2px 5px 3px 5px; } } } From 3204568b12f3a0b702de4c2a389cbac2f6d48a1b Mon Sep 17 00:00:00 2001 From: Sean Li Date: Sat, 31 Jan 2015 21:06:17 -0800 Subject: [PATCH 05/35] Tweaked icon button size. --- app/styles/containers.less | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/styles/containers.less b/app/styles/containers.less index ccb8881eeb..630786c902 100644 --- a/app/styles/containers.less +++ b/app/styles/containers.less @@ -334,7 +334,7 @@ .details-header-actions { flex: 1 auto; text-align: left; - margin-top: -10px; + margin-top: -5px; .action { display: inline-block; .action-icon { @@ -345,7 +345,7 @@ -webkit-background-clip: text; -webkit-text-fill-color: transparent;*/ color: @gray-normal; - font-size: 32px; + font-size: 30px; margin-right: 35px; //color: @gray-darker; transition: all 0.25s; From 034dd152346342be91bb821d4846b245fcc1cea5 Mon Sep 17 00:00:00 2001 From: Sean Li Date: Tue, 3 Feb 2015 11:06:49 -0800 Subject: [PATCH 06/35] Style tweak. --- app/ContainerDetails.react.js | 8 ++++++-- app/styles/containers.less | 9 ++++++--- app/styles/theme.less | 8 ++++++++ 3 files changed, 20 insertions(+), 5 deletions(-) diff --git a/app/ContainerDetails.react.js b/app/ContainerDetails.react.js index 3538ae2d6d..7c05bd677e 100644 --- a/app/ContainerDetails.react.js +++ b/app/ContainerDetails.react.js @@ -440,6 +440,12 @@ var ContainerDetails = React.createClass({
    ); } else { + var preview; + if (this.state.defaultPort) { + preview = ( + + ); + } body = (
    @@ -523,8 +529,6 @@ var ContainerDetails = React.createClass({
    Logs - Ports - Volumes Settings
    diff --git a/app/styles/containers.less b/app/styles/containers.less index 630786c902..8c1fc39679 100644 --- a/app/styles/containers.less +++ b/app/styles/containers.less @@ -308,7 +308,7 @@ flex-direction: row; position: relative; //border-top: 1px solid #EEE; - border-bottom: 1px solid #EEE; + border-bottom: 1px solid #DCE2E2; background-color: #F9F9F9; height: 57px; padding: 6px 10px 10px 24px; @@ -377,6 +377,7 @@ flex: 1 auto; text-align: right; margin-right: 3px; + margin-top: 6px; .tab { margin-left: 16px; padding: 3px 10px; @@ -387,8 +388,10 @@ } &.active { background-color: #D2EEF8; - border-radius: 4px; + background-color: @brand-action; + border-radius: 40px; color: #365B64; + color: white; } } } @@ -459,7 +462,7 @@ .details-panel { flex: 1; overflow: auto; - background-color: white; + background-color: #FFF; .logs { -webkit-user-select: text; font-family: Menlo; diff --git a/app/styles/theme.less b/app/styles/theme.less index eec6747988..6857c86555 100644 --- a/app/styles/theme.less +++ b/app/styles/theme.less @@ -184,3 +184,11 @@ input[type="text"] { .btn-info { .btn-styles(@btn-info-bg); } .btn-warning { .btn-styles(@btn-warning-bg); } .btn-danger { .btn-styles(@btn-danger-bg); } + +iframe { + border: 0; + width: 50%; + height: 300px; + border-radius: 4px; + border: 1px solid @gray-lightest; +} From bf3d5b32684f745150573003f95d07bd68b48119 Mon Sep 17 00:00:00 2001 From: Sean Li Date: Tue, 3 Feb 2015 13:38:31 -0800 Subject: [PATCH 07/35] Refactored some basic elements. --- src/ContainerDetails.react.js | 140 +++++----------------------- src/ContainerDetailsHeader.react.js | 36 +++++++ src/ContainerHome.react.js | 30 ++++++ src/ContainerListItem.react.js | 16 +++- 4 files changed, 106 insertions(+), 116 deletions(-) create mode 100644 src/ContainerDetailsHeader.react.js create mode 100644 src/ContainerHome.react.js diff --git a/src/ContainerDetails.react.js b/src/ContainerDetails.react.js index 63b5d0f3ed..c8a680de2a 100644 --- a/src/ContainerDetails.react.js +++ b/src/ContainerDetails.react.js @@ -12,11 +12,14 @@ var ContainerUtil = require('./ContainerUtil'); var docker = require('./Docker'); var boot2docker = require('./Boot2Docker'); var ProgressBar = require('react-bootstrap/ProgressBar'); -var Popover = require('react-bootstrap/Popover'); +var ContainerDetailsHeader = require('./ContainerDetailsHeader.react'); +var ContainerHome = require('./ContainerHome.react'); + var ContainerDetails = React.createClass({ mixins: [Router.State, Router.Navigation], _oldHeight: 0, + PAGE_HOME: 'home', PAGE_LOGS: 'logs', PAGE_SETTINGS: 'settings', PAGE_PORTS: 'ports', @@ -24,14 +27,12 @@ var ContainerDetails = React.createClass({ getInitialState: function () { return { logs: [], - page: this.PAGE_LOGS, + page: this.PAGE_HOME, env: {}, pendingEnv: {}, ports: {}, defaultPort: null, - volumes: {}, - popoverVolumeOpen: false, - popoverViewOpen: false, + volumes: {} }; }, componentWillReceiveProps: function () { @@ -41,22 +42,6 @@ var ContainerDetails = React.createClass({ this.init(); ContainerStore.on(ContainerStore.SERVER_PROGRESS_EVENT, this.updateProgress); ContainerStore.on(ContainerStore.SERVER_LOGS_EVENT, this.updateLogs); - - // Make clicking anywhere close popovers - $('body').on('click', function (e) { - var popoverViewIsTarget = $('.popover-view').is(e.target) || $('.popover-view').has(e.target).length !== 0 || $('.dropdown-view').is(e.target) || $('.dropdown-view').has(e.target).length !== 0; - var popoverVolumeIsTarget = $('.popover-volume').is(e.target) || $('.popover-volume').has(e.target).length !== 0 || $('.dropdown-volume').is(e.target) || $('.dropdown-volume').has(e.target).length !== 0; - var state = {}; - if (!popoverViewIsTarget) { - state.popoverViewOpen = false; - } - if (!popoverVolumeIsTarget) { - state.popoverVolumeOpen = false; - } - if (this.state.popoverViewOpen || this.state.popoverVolumeOpen) { - this.setState(state); - } - }.bind(this)); }, componentWillUnmount: function () { ContainerStore.removeListener(ContainerStore.SERVER_PROGRESS_EVENT, this.updateProgress); @@ -72,23 +57,6 @@ var ContainerDetails = React.createClass({ } this._oldHeight = parent[0].scrollHeight - parent.height(); } - - var $viewDropdown = $(this.getDOMNode()).find('.dropdown-view'); - var $volumeDropdown = $(this.getDOMNode()).find('.dropdown-volume'); - var $viewPopover = $(this.getDOMNode()).find('.popover-view'); - var $volumePopover = $(this.getDOMNode()).find('.popover-volume'); - - /*if ($viewDropdown.offset() && $volumeDropdown.offset()) { - $viewPopover.offset({ - top: $viewDropdown.offset().top + 32, - left: $viewDropdown.offset().left - ($viewPopover.outerWidth() / 2) + 14 - }); - - $volumePopover.offset({ - top: $volumeDropdown.offset().top + 32, - left: $volumeDropdown.offset().left + $volumeDropdown.outerWidth() - $volumePopover.outerWidth() / 2 - 20 - }); - }*/ }, init: function () { var container = ContainerStore.container(this.getParams().name); @@ -126,6 +94,11 @@ var ContainerDetails = React.createClass({ }); } }, + showHome: function () { + this.setState({ + page: this.PAGE_HOME + }); + }, showLogs: function () { this.setState({ page: this.PAGE_LOGS @@ -161,16 +134,6 @@ var ContainerDetails = React.createClass({ if (err) { throw err; } }); }, - handleViewDropdown: function(e) { - this.setState({ - popoverViewOpen: !this.state.popoverViewOpen - }); - }, - handleVolumeDropdown: function(e) { - this.setState({ - popoverVolumeOpen: !this.state.popoverVolumeOpen - }); - }, handleRestart: function () { ContainerStore.restart(this.props.container.Name, function (err) { console.log(err); @@ -273,19 +236,6 @@ var ContainerDetails = React.createClass({ return false; } - var state; - if (this.props.container.State.Running) { - state = RUNNING; - } else if (this.props.container.State.Restarting) { - state = RESTARTING; - } else if (this.props.container.State.Paused) { - state = PAUSED; - } else if (this.props.container.State.Downloading) { - state = DOWNLOADING; - } else { - state = STOPPED; - } - var button; if (this.state.progress === 1) { button = View; @@ -354,31 +304,6 @@ var ContainerDetails = React.createClass({ disabled: this.props.container.State.Downloading }); - var viewPopoverClasses = React.addons.classSet({ - popover: true, - hidden: false - }); - - var popoverVolumeClasses = React.addons.classSet({ - 'popover-volume': true, - hidden: !this.state.popoverVolumeOpen - }); - - var popoverViewClasses = React.addons.classSet({ - 'popover-view': true, - hidden: !this.state.popoverViewOpen - }); - - var dropdownClasses = { - btn: true, - 'btn-action': true, - 'with-icon': true, - 'dropdown-toggle': true, - disabled: !this.props.container.State.Running - }; - var dropdownViewButtonClass = React.addons.classSet(assign({'dropdown-view': true}, dropdownClasses)); - var dropdownVolumeButtonClass = React.addons.classSet(assign({'dropdown-volume': true}, dropdownClasses)); - var ports = _.map(_.pairs(self.state.ports), function (pair, index, list) { var key = pair[0]; var val = pair[1]; @@ -410,7 +335,11 @@ var ContainerDetails = React.createClass({
    ); } else { - if (this.state.page === this.PAGE_LOGS) { + if (this.state.page === this.PAGE_HOME) { + body = ( + + ); + } else if (this.state.page === this.PAGE_LOGS) { body = (
    @@ -449,12 +378,6 @@ var ContainerDetails = React.createClass({
    ); } else { - var preview; - if (this.state.defaultPort) { - preview = ( - - ); - } body = (
    @@ -492,6 +415,12 @@ var ContainerDetails = React.createClass({ } } + var tabHomeClasses = React.addons.classSet({ + 'tab': true, + 'active': this.state.page === this.PAGE_HOME, + disabled: this.props.container.State.Downloading + }); + var tabLogsClasses = React.addons.classSet({ 'tab': true, 'active': this.state.page === this.PAGE_LOGS, @@ -518,14 +447,12 @@ var ContainerDetails = React.createClass({ return (
    -
    -

    {this.props.container.Name}

    {state} -
    +
    - View + Run
    @@ -537,29 +464,12 @@ var ContainerDetails = React.createClass({
    + Home Logs Settings
    {body} - -
    -
    -
    DOCKER PORT
    -
    MAC PORT
    -
    - {ports} -
    -
    - -
    -
    -
    DOCKER FOLDER
    -
    MAC FOLDER
    -
    - {volumes} -
    -
    ); } diff --git a/src/ContainerDetailsHeader.react.js b/src/ContainerDetailsHeader.react.js new file mode 100644 index 0000000000..289de0819e --- /dev/null +++ b/src/ContainerDetailsHeader.react.js @@ -0,0 +1,36 @@ +var async = require('async'); +var _ = require('underscore'); +var $ = require('jquery'); +var React = require('react/addons'); +var Router = require('react-router'); +var Modal = require('react-bootstrap/Modal'); +var RetinaImage = require('react-retina-image'); +var ModalTrigger = require('react-bootstrap/ModalTrigger'); +var ContainerModal = require('./ContainerModal.react'); +var ContainerListItem = require('./ContainerListItem.react'); +var Header = require('./Header.react'); +var docker = require('./Docker'); + +var ContainerDetailsHeader = React.createClass({ + render: function () { + var state; + if (this.props.container.State.Running) { + state = RUNNING; + } else if (this.props.container.State.Restarting) { + state = RESTARTING; + } else if (this.props.container.State.Paused) { + state = PAUSED; + } else if (this.props.container.State.Downloading) { + state = DOWNLOADING; + } else { + state = STOPPED; + } + return ( +
    +

    {this.props.container.Name}

    {state} +
    + ); + } +}); + +module.exports = ContainerDetailsHeader; diff --git a/src/ContainerHome.react.js b/src/ContainerHome.react.js new file mode 100644 index 0000000000..d81fdf6755 --- /dev/null +++ b/src/ContainerHome.react.js @@ -0,0 +1,30 @@ +var async = require('async'); +var _ = require('underscore'); +var $ = require('jquery'); +var React = require('react/addons'); +var Router = require('react-router'); +var Modal = require('react-bootstrap/Modal'); +var RetinaImage = require('react-retina-image'); +var ModalTrigger = require('react-bootstrap/ModalTrigger'); +var ContainerModal = require('./ContainerModal.react'); +var ContainerListItem = require('./ContainerListItem.react'); +var Header = require('./Header.react'); +var docker = require('./Docker'); + +var ContainerHome = React.createClass({ + render: function () { + /*var preview; + if (this.state.defaultPort) { + preview = ( + + ); + }*/ + return ( +
    +

    HOME

    +
    + ); + } +}); + +module.exports = ContainerHome; diff --git a/src/ContainerListItem.react.js b/src/ContainerListItem.react.js index 6ff3251262..4057bb5963 100644 --- a/src/ContainerListItem.react.js +++ b/src/ContainerListItem.react.js @@ -9,6 +9,8 @@ var ModalTrigger = require('react-bootstrap/ModalTrigger'); var ContainerModal = require('./ContainerModal.react'); var Header = require('./Header.react'); var docker = require('./docker'); +var remote = require('remote'); +var dialog = remote.require('dialog'); var ContainerListItem = React.createClass({ componentWillMount: function () { @@ -22,6 +24,18 @@ var ContainerListItem = React.createClass({ var $action = $(this.getDOMNode()).find('.action'); $action.hide(); }, + handleDeleteContainer: function () { + dialog.showMessageBox({ + message: 'Are you sure you want to delete this container?', + buttons: ['Delete', 'Cancel'] + }, function (index) { + if (index === 0) { + ContainerStore.remove(this.props.container.Name, function (err) { + console.error(err); + }); + } + }.bind(this)); + }, render: function () { var self = this; var container = this.props.container; @@ -73,7 +87,7 @@ var ContainerListItem = React.createClass({
    - +
    From ecb45f010211bb71b1e84e3ea17aae005c502675 Mon Sep 17 00:00:00 2001 From: Sean Li Date: Tue, 3 Feb 2015 14:11:27 -0800 Subject: [PATCH 08/35] Added stricter lint standard. --- .jshintrc | 23 ++++++++ app/ContainerListItem.react.js | 84 +++++++++++++++++++++++++++++ src/Boot2Docker.js | 5 +- src/ContainerDetails.react.js | 17 +++--- src/ContainerDetailsHeader.react.js | 11 ---- src/ContainerHome.react.js | 11 ---- src/ContainerList.react.js | 11 ---- src/ContainerListItem.react.js | 8 +-- src/ContainerModal.react.js | 15 +++--- src/ContainerStore.js | 28 +++++----- src/ContainerUtil.js | 2 +- src/Containers.react.js | 6 +-- src/Header.react.js | 1 - src/Main.js | 15 +----- src/Menu.js | 3 +- src/NoContainers.react.js | 1 - src/Preferences.react.js | 2 +- src/Registry.js | 4 +- src/Setup.react.js | 8 +-- src/SetupStore.js | 8 +-- src/SetupUtil.js | 4 +- src/Virtualbox.js | 4 +- styles/containers.less | 26 +++------ 23 files changed, 159 insertions(+), 138 deletions(-) create mode 100644 .jshintrc create mode 100644 app/ContainerListItem.react.js diff --git a/.jshintrc b/.jshintrc new file mode 100644 index 0000000000..73c8cb3691 --- /dev/null +++ b/.jshintrc @@ -0,0 +1,23 @@ +{ + "curly": false, + "noempty": true, + "newcap": true, + "eqeqeq": true, + "eqnull": true, + "esnext": true, + "undef": true, + "unused": true, + "devel": true, + "node": true, + "browser": true, + "evil": false, + "latedef": true, + "nonew": true, + "trailing": true, + "immed": true, + "smarttabs": true, + "strict": false, + "globals": { + "define": true + } +} diff --git a/app/ContainerListItem.react.js b/app/ContainerListItem.react.js new file mode 100644 index 0000000000..6ff3251262 --- /dev/null +++ b/app/ContainerListItem.react.js @@ -0,0 +1,84 @@ +var async = require('async'); +var _ = require('underscore'); +var $ = require('jquery'); +var React = require('react/addons'); +var Router = require('react-router'); +var Modal = require('react-bootstrap/Modal'); +var RetinaImage = require('react-retina-image'); +var ModalTrigger = require('react-bootstrap/ModalTrigger'); +var ContainerModal = require('./ContainerModal.react'); +var Header = require('./Header.react'); +var docker = require('./docker'); + +var ContainerListItem = React.createClass({ + componentWillMount: function () { + this._start = Date.now(); + }, + handleItemMouseEnter: function () { + var $action = $(this.getDOMNode()).find('.action'); + $action.show(); + }, + handleItemMouseLeave: function () { + var $action = $(this.getDOMNode()).find('.action'); + $action.hide(); + }, + render: function () { + var self = this; + var container = this.props.container; + var downloadingImage = null, downloading = false; + var env = container.Config.Env; + if (env.length) { + var obj = _.object(env.map(function (e) { + return e.split('='); + })); + if (obj.KITEMATIC_DOWNLOADING) { + downloading = true; + } + downloadingImage = obj.KITEMATIC_DOWNLOADING_IMAGE || null; + } + + var imageName = downloadingImage || container.Config.Image; + + // Synchronize all animations + var style = { + WebkitAnimationDelay: (self._start - Date.now()) + 'ms' + }; + + var state; + if (downloading) { + state =
    ; + } else if (container.State.Running && !container.State.Paused) { + state =
    ; + } else if (container.State.Restarting) { + state =
    ; + } else if (container.State.Paused) { + state =
    ; + } else if (container.State.ExitCode) { + // state =
    ; + state =
    ; + } else { + state =
    ; + } + + return ( + +
  • + {state} +
    +
    + {container.Name} +
    +
    + {imageName} +
    +
    +
    + +
    +
  • +
    + ); + } +}); + +module.exports = ContainerListItem; diff --git a/src/Boot2Docker.js b/src/Boot2Docker.js index 5f5d63a41f..e702c77a04 100644 --- a/src/Boot2Docker.js +++ b/src/Boot2Docker.js @@ -1,3 +1,4 @@ +var _ = require('underscore'); var exec = require('exec'); var path = require('path'); var fs = require('fs'); @@ -54,7 +55,7 @@ var Boot2Docker = { return path.join(process.cwd(), 'resources', 'boot2docker-' + this.version()); }, exists: function (callback) { - cmdExec([Boot2Docker.command(), 'info'], function (err, out) { + cmdExec([Boot2Docker.command(), 'info'], function (err) { if (err) { callback(null, false); } else { @@ -170,7 +171,7 @@ var Boot2Docker = { }); }, createScratchImage: function (callback) { - cmdExec([Boot2Docker.command(), 'ssh', 'tar cv --files-from /dev/null | docker import - scratch'], function (err, out) { + cmdExec([Boot2Docker.command(), 'ssh', 'tar cv --files-from /dev/null | docker import - scratch'], function (err) { callback(err); }); }, diff --git a/src/ContainerDetails.react.js b/src/ContainerDetails.react.js index c8a680de2a..d7ed9124cb 100644 --- a/src/ContainerDetails.react.js +++ b/src/ContainerDetails.react.js @@ -4,18 +4,15 @@ var React = require('react/addons'); var Router = require('react-router'); var exec = require('exec'); var path = require('path'); -var assign = require('object-assign'); var remote = require('remote'); var dialog = remote.require('dialog'); var ContainerStore = require('./ContainerStore'); var ContainerUtil = require('./ContainerUtil'); -var docker = require('./Docker'); var boot2docker = require('./Boot2Docker'); var ProgressBar = require('react-bootstrap/ProgressBar'); var ContainerDetailsHeader = require('./ContainerDetailsHeader.react'); var ContainerHome = require('./ContainerHome.react'); - var ContainerDetails = React.createClass({ mixins: [Router.State, Router.Navigation], _oldHeight: 0, @@ -121,6 +118,8 @@ var ContainerDetails = React.createClass({ }, handleView: function () { console.log('CLICKED'); + console.log(this.state.ports); + console.log(this.state.defaultPort); if (this.state.defaultPort) { console.log(this.state.defaultPort); console.log(this.state.ports[this.state.defaultPort].url); @@ -267,7 +266,7 @@ var ContainerDetails = React.createClass({ disabledClass = 'disabled'; } - var buttonClass = React.addons.classSet({ + /*var buttonClass = React.addons.classSet({ btn: true, 'btn-action': true, 'with-icon': true, @@ -302,9 +301,9 @@ var ContainerDetails = React.createClass({ 'only-icon': true, 'active': this.state.page === this.PAGE_SETTINGS, disabled: this.props.container.State.Downloading - }); + });*/ - var ports = _.map(_.pairs(self.state.ports), function (pair, index, list) { + var ports = _.map(_.pairs(self.state.ports), function (pair) { var key = pair[0]; var val = pair[1]; return ( @@ -427,7 +426,7 @@ var ContainerDetails = React.createClass({ disabled: this.props.container.State.Downloading }); - var tabPortsClasses = React.addons.classSet({ + /*var tabPortsClasses = React.addons.classSet({ 'tab': true, 'active': this.state.page === this.PAGE_PORTS, disabled: this.props.container.State.Downloading @@ -437,7 +436,7 @@ var ContainerDetails = React.createClass({ 'tab': true, 'active': this.state.page === this.PAGE_VOLUMES, disabled: this.props.container.State.Downloading - }); + });*/ var tabSettingsClasses = React.addons.classSet({ 'tab': true, @@ -451,7 +450,7 @@ var ContainerDetails = React.createClass({
    - + Run
    diff --git a/src/ContainerDetailsHeader.react.js b/src/ContainerDetailsHeader.react.js index 289de0819e..187d943840 100644 --- a/src/ContainerDetailsHeader.react.js +++ b/src/ContainerDetailsHeader.react.js @@ -1,15 +1,4 @@ -var async = require('async'); -var _ = require('underscore'); -var $ = require('jquery'); var React = require('react/addons'); -var Router = require('react-router'); -var Modal = require('react-bootstrap/Modal'); -var RetinaImage = require('react-retina-image'); -var ModalTrigger = require('react-bootstrap/ModalTrigger'); -var ContainerModal = require('./ContainerModal.react'); -var ContainerListItem = require('./ContainerListItem.react'); -var Header = require('./Header.react'); -var docker = require('./Docker'); var ContainerDetailsHeader = React.createClass({ render: function () { diff --git a/src/ContainerHome.react.js b/src/ContainerHome.react.js index d81fdf6755..d6e784dffd 100644 --- a/src/ContainerHome.react.js +++ b/src/ContainerHome.react.js @@ -1,15 +1,4 @@ -var async = require('async'); -var _ = require('underscore'); -var $ = require('jquery'); var React = require('react/addons'); -var Router = require('react-router'); -var Modal = require('react-bootstrap/Modal'); -var RetinaImage = require('react-retina-image'); -var ModalTrigger = require('react-bootstrap/ModalTrigger'); -var ContainerModal = require('./ContainerModal.react'); -var ContainerListItem = require('./ContainerListItem.react'); -var Header = require('./Header.react'); -var docker = require('./Docker'); var ContainerHome = React.createClass({ render: function () { diff --git a/src/ContainerList.react.js b/src/ContainerList.react.js index ab47065d6e..3d59457b1f 100644 --- a/src/ContainerList.react.js +++ b/src/ContainerList.react.js @@ -1,19 +1,8 @@ -var async = require('async'); -var _ = require('underscore'); -var $ = require('jquery'); var React = require('react/addons'); -var Router = require('react-router'); -var Modal = require('react-bootstrap/Modal'); -var RetinaImage = require('react-retina-image'); -var ModalTrigger = require('react-bootstrap/ModalTrigger'); -var ContainerModal = require('./ContainerModal.react'); var ContainerListItem = require('./ContainerListItem.react'); -var Header = require('./Header.react'); -var docker = require('./Docker'); var ContainerList = React.createClass({ render: function () { - var self = this; var containers = this.props.containers.map(function (container) { console.log(container); return ( diff --git a/src/ContainerListItem.react.js b/src/ContainerListItem.react.js index 4057bb5963..d8b6348004 100644 --- a/src/ContainerListItem.react.js +++ b/src/ContainerListItem.react.js @@ -1,16 +1,10 @@ -var async = require('async'); var _ = require('underscore'); var $ = require('jquery'); var React = require('react/addons'); var Router = require('react-router'); -var Modal = require('react-bootstrap/Modal'); -var RetinaImage = require('react-retina-image'); -var ModalTrigger = require('react-bootstrap/ModalTrigger'); -var ContainerModal = require('./ContainerModal.react'); -var Header = require('./Header.react'); -var docker = require('./docker'); var remote = require('remote'); var dialog = remote.require('dialog'); +var ContainerStore = require('./ContainerStore'); var ContainerListItem = React.createClass({ componentWillMount: function () { diff --git a/src/ContainerModal.react.js b/src/ContainerModal.react.js index 64543d6f5f..ba35c6b425 100644 --- a/src/ContainerModal.react.js +++ b/src/ContainerModal.react.js @@ -1,13 +1,9 @@ -var async = require('async'); var $ = require('jquery'); var assign = require('object-assign'); var React = require('react/addons'); var Modal = require('react-bootstrap').Modal; var OverlayTrigger = require('react-bootstrap'); var Popover = require('react-bootstrap/Popover'); -var SplitButton = require('react-bootstrap/SplitButton'); -var MenuItem = require('react-bootstrap/MenuItem'); - var RetinaImage = require('react-retina-image'); var ContainerStore = require('./ContainerStore'); var OverlayTrigger = require('react-bootstrap/OverlayTrigger'); @@ -81,20 +77,20 @@ var ContainerModal = React.createClass({ }, 200); } }, - handleClick: function (name, event) { - ContainerStore.create(name, 'latest', function (err, containerName) { + handleClick: function (name) { + ContainerStore.create(name, 'latest', function (err) { if (err) { throw err; } this.props.onRequestHide(); }.bind(this)); }, - handleTagClick: function (tag, name, event) { - ContainerStore.create(name, tag, function (err, containerName) { + handleTagClick: function (tag, name) { + ContainerStore.create(name, tag, function () { this.props.onRequestHide(); }.bind(this)); }, - handleDropdownClick: function (name, event) { + handleDropdownClick: function (name) { this.setState({ active: name }); @@ -207,6 +203,7 @@ var ContainerModal = React.createClass({ ); var tagData = self.state.tags[this.state.active]; + var tags; if (tagData) { var list = tagData.map(function (t) { return
  • {t.name}
  • ; diff --git a/src/ContainerStore.js b/src/ContainerStore.js index 82f3eaa4e2..f8bb709d4b 100644 --- a/src/ContainerStore.js +++ b/src/ContainerStore.js @@ -4,14 +4,12 @@ var EventEmitter = require('events').EventEmitter; var async = require('async'); var path = require('path'); var assign = require('object-assign'); -var Stream = require('stream'); var Convert = require('ansi-to-html'); var docker = require('./Docker'); var registry = require('./Registry'); var ContainerUtil = require('./ContainerUtil'); var convert = new Convert(); - var _recommended = []; var _containers = {}; var _progress = {}; @@ -35,7 +33,7 @@ var ContainerStore = assign(EventEmitter.prototype, { return; } stream.setEncoding('utf8'); - stream.on('data', function (data) {}); + stream.on('data', function () {}); stream.on('end', function () { callback(); }); @@ -120,8 +118,8 @@ var ContainerStore = assign(EventEmitter.prototype, { if (containerData.Config && containerData.Config.Image) { containerData.Image = containerData.Config.Image; } - existing.kill(function (err, data) { - existing.remove(function (err, data) { + existing.kill(function () { + existing.remove(function () { docker.client().getImage(containerData.Image).inspect(function (err, data) { var binds = []; if (data.Config.Volumes) { @@ -170,7 +168,7 @@ var ContainerStore = assign(EventEmitter.prototype, { ], Cmd: 'placeholder', name: name - }, function (err, container) { + }, function (err) { if (err) { callback(err); return; @@ -203,7 +201,7 @@ var ContainerStore = assign(EventEmitter.prototype, { downloading.forEach(function (container) { docker.client().pull(container.KitematicDownloadingImage, function (err, stream) { stream.setEncoding('utf8'); - stream.on('data', function (data) {}); + stream.on('data', function () {}); stream.on('end', function () { self._createContainer(container.Name, {Image: container.KitematicDownloadingImage}, function () {}); }); @@ -259,7 +257,7 @@ var ContainerStore = assign(EventEmitter.prototype, { this._resumePulling(); this._startListeningToEvents(); }.bind(this)); - this.fetchRecommended(function (err) { + this.fetchRecommended(function () { this.emit(this.CLIENT_RECOMMENDED_EVENT); }.bind(this)); }, @@ -280,7 +278,7 @@ var ContainerStore = assign(EventEmitter.prototype, { container.State.Downloading = !!env.KITEMATIC_DOWNLOADING; container.KitematicDownloadingImage = env.KITEMATIC_DOWNLOADING_IMAGE; - this.fetchLogs(container.Name, function (err) { + this.fetchLogs(container.Name, function () { }.bind(this)); _containers[container.Name] = container; @@ -299,7 +297,7 @@ var ContainerStore = assign(EventEmitter.prototype, { self.fetchContainer(container.Id, function (err) { callback(err); }); - }, function (err, results) { + }, function (err) { callback(err); }); }); @@ -308,11 +306,10 @@ var ContainerStore = assign(EventEmitter.prototype, { if (_recommended.length) { return; } - var self = this; $.ajax({ url: 'https://kitematic.com/recommended.json', dataType: 'json', - success: function (res, status) { + success: function (res) { var recommended = res.recommended; async.map(recommended, function (repository, callback) { $.get('https://registry.hub.docker.com/v1/search?q=' + repository, function (data) { @@ -354,7 +351,7 @@ var ContainerStore = assign(EventEmitter.prototype, { stream.on('data', function (buf) { // Every other message is a header if (index % 2 === 1) { - var time = buf.substr(0,buf.indexOf(' ')); + //var time = buf.substr(0,buf.indexOf(' ')); var msg = buf.substr(buf.indexOf(' ')+1); if (timeout) { clearTimeout(timeout); @@ -393,7 +390,7 @@ var ContainerStore = assign(EventEmitter.prototype, { _muted[containerName] = true; _progress[containerName] = 0; self._pullImage(repository, tag, function () { - self._createContainer(containerName, {Image: imageName}, function (err, container) { + self._createContainer(containerName, {Image: imageName}, function () { delete _progress[containerName]; _muted[containerName] = false; self.emit(self.CLIENT_CONTAINER_EVENT, containerName); @@ -406,7 +403,7 @@ var ContainerStore = assign(EventEmitter.prototype, { }); } else { // If not then directly create the container - self._createContainer(containerName, {Image: imageName}, function (err, container) { + self._createContainer(containerName, {Image: imageName}, function () { self.emit(ContainerStore.CLIENT_CONTAINER_EVENT, containerName, 'create'); callback(null, containerName); }); @@ -432,7 +429,6 @@ var ContainerStore = assign(EventEmitter.prototype, { }); }, remove: function (name, callback) { - var self = this; var container = docker.client().getContainer(name); if (_containers[name].State.Paused) { container.unpause(function (err) { diff --git a/src/ContainerUtil.js b/src/ContainerUtil.js index 61159f7186..8ff36e6620 100644 --- a/src/ContainerUtil.js +++ b/src/ContainerUtil.js @@ -12,7 +12,7 @@ var ContainerUtil = { return splits; })); }, - ports: function (container, callback) { + ports: function (container) { var res = {}; var ip = docker.host; _.each(container.NetworkSettings.Ports, function (value, key) { diff --git a/src/Containers.react.js b/src/Containers.react.js index 58174829b5..3f9cfbff32 100644 --- a/src/Containers.react.js +++ b/src/Containers.react.js @@ -1,15 +1,11 @@ -var async = require('async'); -var _ = require('underscore'); -var $ = require('jquery'); var React = require('react/addons'); var Router = require('react-router'); -var RetinaImage = require('react-retina-image'); var ModalTrigger = require('react-bootstrap/ModalTrigger'); var ContainerModal = require('./ContainerModal.react'); var ContainerStore = require('./ContainerStore'); var ContainerList = require('./ContainerList.react'); var Header = require('./Header.react'); -var docker = require('./Docker'); + var Containers = React.createClass({ mixins: [Router.Navigation, Router.State], getInitialState: function () { diff --git a/src/Header.react.js b/src/Header.react.js index 30af89c47d..e91bf9beaa 100644 --- a/src/Header.react.js +++ b/src/Header.react.js @@ -35,7 +35,6 @@ var Header = React.createClass({ this.update(); }, render: function () { - var buttons; if (this.state.fullscreen) { return (
    diff --git a/src/Main.js b/src/Main.js index e58c34486a..5c48980e0c 100644 --- a/src/Main.js +++ b/src/Main.js @@ -1,22 +1,9 @@ var React = require('react'); -var Router = require('react-router'); -var RetinaImage = require('react-retina-image'); -var async = require('async'); var docker = require('./Docker'); var router = require('./router'); var boot2docker = require('./boot2docker'); var ContainerStore = require('./ContainerStore'); var SetupStore = require('./ContainerStore'); -var Menu = require('./Menu'); -var remote = require('remote'); -var app = remote.require('app'); -var ipc = require('ipc'); - -var Route = Router.Route; -var NotFoundRoute = Router.NotFoundRoute; -var DefaultRoute = Router.DefaultRoute; -var Link = Router.Link; -var RouteHandler = Router.RouteHandler; if (process.env.NODE_ENV === 'development') { var script = document.createElement('script'); @@ -27,7 +14,7 @@ if (process.env.NODE_ENV === 'development') { } if (!window.location.hash.length || window.location.hash === '#/') { - SetupStore.run(function (err) { + SetupStore.run(function () { boot2docker.ip(function (err, ip) { if (err) console.log(err); docker.setHost(ip); diff --git a/src/Menu.js b/src/Menu.js index 336209f99f..7f1a85569e 100644 --- a/src/Menu.js +++ b/src/Menu.js @@ -1,7 +1,6 @@ var remote = require('remote'); var app = remote.require('app'); var Menu = remote.require('menu'); -var MenuItem = remote.require('menu-item'); var BrowserWindow = remote.require('browser-window'); var router = require('./Router'); @@ -136,7 +135,7 @@ var template = [ }, ]; -menu = Menu.buildFromTemplate(template); +var menu = Menu.buildFromTemplate(template); Menu.setApplicationMenu(menu); module.exports = menu; diff --git a/src/NoContainers.react.js b/src/NoContainers.react.js index 4d15223be6..2be1c9d0eb 100644 --- a/src/NoContainers.react.js +++ b/src/NoContainers.react.js @@ -1,5 +1,4 @@ var React = require('react/addons'); -var RetinaImage = require('react-retina-image'); var NoContainers = React.createClass({ render: function () { diff --git a/src/Preferences.react.js b/src/Preferences.react.js index c18ddc782c..233ab721a1 100644 --- a/src/Preferences.react.js +++ b/src/Preferences.react.js @@ -15,7 +15,7 @@ var Preferences = React.createClass({ report_analytics: true }, data || {}); }, - handleChange: function (key, e) { + handleChange: function (key) { var change = {}; change[key] = !this.state[key]; console.log(change); diff --git a/src/Registry.js b/src/Registry.js index 2fc0dcf0be..8b4352d9f5 100644 --- a/src/Registry.js +++ b/src/Registry.js @@ -22,7 +22,7 @@ var Registry = { headers: { Authorization: 'Token ' + token }, - success: function (layers, status, xhr) { + success: function (layers) { callback(null, layers); }, error: function (err) { @@ -36,7 +36,7 @@ var Registry = { headers: { Authorization: 'Token ' + token }, - success: function (res, status, xhr) { + success: function (res) { callback(null, res); }, error: function (err) { diff --git a/src/Setup.react.js b/src/Setup.react.js index c86f389ed4..7baa722006 100644 --- a/src/Setup.react.js +++ b/src/Setup.react.js @@ -1,12 +1,6 @@ var React = require('react/addons'); var Router = require('react-router'); var Radial = require('./Radial.react.js'); -var async = require('async'); -var assign = require('object-assign'); -var fs = require('fs'); -var path = require('path'); -var virtualbox = require('./Virtualbox'); -var util = require('./Util'); var SetupStore = require('./SetupStore'); var Setup = React.createClass({ @@ -23,7 +17,7 @@ var Setup = React.createClass({ componentDidMount: function () { }, update: function () { - + }, render: function () { var radial; diff --git a/src/SetupStore.js b/src/SetupStore.js index 3dcf5fbdb1..f1a56bebd6 100644 --- a/src/SetupStore.js +++ b/src/SetupStore.js @@ -59,7 +59,7 @@ var SetupStore = assign(EventEmitter.prototype, { } var iconPath = path.join(setupUtil.resourceDir(), 'kitematic.icns'); setupUtil.isSudo(function (err, isSudo) { - sudoCmd = isSudo ? ['sudo'] : [path.join(setupUtil.resourceDir(), 'cocoasudo'), '--icon=' + iconPath, '--prompt=Kitematic requires administrative privileges to install VirtualBox and copy itself to the Applications folder.']; + var sudoCmd = isSudo ? ['sudo'] : [path.join(setupUtil.resourceDir(), 'cocoasudo'), '--icon=' + iconPath, '--prompt=Kitematic requires administrative privileges to install VirtualBox and copy itself to the Applications folder.']; sudoCmd.push.apply(sudoCmd, ['installer', '-pkg', '/Volumes/VirtualBox/VirtualBox.pkg', '-target', '/']); exec(sudoCmd, function (stderr, stdout, code) { if (code) { @@ -105,7 +105,7 @@ var SetupStore = assign(EventEmitter.prototype, { }, cleanupKitematicStep: { run: function (callback) { - virtualbox.vmdestroy('kitematic-vm', function (err, removed) { + virtualbox.vmdestroy('kitematic-vm', function (err) { if (err) { console.log(err); } @@ -129,7 +129,7 @@ var SetupStore = assign(EventEmitter.prototype, { } else { boot2docker.isoVersion(function (err, version) { if (err || setupUtil.compareVersions(version, boot2docker.version()) < 0) { - boot2docker.stop(function(err) { + boot2docker.stop(function() { boot2docker.upgrade(function (err) { callback(err); }); @@ -147,7 +147,7 @@ var SetupStore = assign(EventEmitter.prototype, { }, startBoot2DockerStep: { run: function (callback) { - boot2docker.waitWhileStatus('saving', function (err) { + boot2docker.waitWhileStatus('saving', function () { boot2docker.status(function (err, status) { if (err) {callback(err); return;} if (status !== 'running') { diff --git a/src/SetupUtil.js b/src/SetupUtil.js index d3b8d696e9..6e096571c7 100644 --- a/src/SetupUtil.js +++ b/src/SetupUtil.js @@ -6,7 +6,7 @@ var fs = require('fs'); var exec = require('exec'); var SetupUtil = { - supportDir: function (callback) { + supportDir: function () { var dirs = ['Library', 'Application\ Support', 'Kitematic']; var acc = process.env.HOME; dirs.forEach(function (d) { @@ -17,7 +17,7 @@ var SetupUtil = { }); return acc; }, - resourceDir: function (callback) { + resourceDir: function () { return process.env.RESOURCES_PATH; }, isSudo: function (callback) { diff --git a/src/Virtualbox.js b/src/Virtualbox.js index 446537c461..df94e94599 100644 --- a/src/Virtualbox.js +++ b/src/Virtualbox.js @@ -1,8 +1,6 @@ var fs = require('fs'); var exec = require('exec'); -var path = require('path'); var async = require('async'); -var util = require('./Util'); var VirtualBox = { command: function () { @@ -68,7 +66,7 @@ var VirtualBox = { }, vmdestroy: function (name, callback) { var self = this; - this.vmstate(name, function (err, state) { + this.vmstate(name, function (err) { // No VM found if (err) { callback(null, false); return; } exec('/usr/bin/VBoxManage controlvm ' + name + ' acpipowerbutton', function (stderr, stdout, code) { diff --git a/styles/containers.less b/styles/containers.less index 8c1fc39679..5bf7647653 100644 --- a/styles/containers.less +++ b/styles/containers.less @@ -309,7 +309,7 @@ position: relative; //border-top: 1px solid #EEE; border-bottom: 1px solid #DCE2E2; - background-color: #F9F9F9; + background-color: white; height: 57px; padding: 6px 10px 10px 24px; font-size: 13px; @@ -341,13 +341,9 @@ &.icon:before { text-align: center; } - /*background: linear-gradient(-180deg, #24B8EB 4%, #24A3EB 100%); - -webkit-background-clip: text; - -webkit-text-fill-color: transparent;*/ color: @gray-normal; font-size: 30px; - margin-right: 35px; - //color: @gray-darker; + margin-right: 30px; transition: all 0.25s; &:hover { color: @brand-action; @@ -355,12 +351,6 @@ -webkit-background-clip: text; -webkit-text-fill-color: transparent;*/ } - &.view-icon { - position: relative; - top: 1px; - font-size: 35px; - //color: @gray-darkest; - } } .btn-label { position: relative; @@ -380,18 +370,16 @@ margin-top: 6px; .tab { margin-left: 16px; - padding: 3px 10px; - transition: all 0.25s; + padding: 6px 10px; font-weight: 400; &:hover { - color: @brand-action; + border-radius: 40px; + background-color: #F9F9F9; } &.active { - background-color: #D2EEF8; - background-color: @brand-action; border-radius: 40px; - color: #365B64; color: white; + background-image: linear-gradient(-180deg, #24B8EB 4%, #24A3EB 100%); } } } @@ -403,7 +391,7 @@ flex-direction: row; padding: 31px 24px 18px 24px; position: relative; - background-color: #F9F9F9; + background-color: white; height: 75px; h1 { margin: 0; From c78549a45ff20f6f47d16f9060a202bc5c0db8bd Mon Sep 17 00:00:00 2001 From: Sean Li Date: Tue, 3 Feb 2015 14:19:05 -0800 Subject: [PATCH 09/35] Cleanup and linting. --- app/ContainerListItem.react.js | 84 ---------------------------------- browser/main.js | 32 ++++++------- lint.sh | 1 + 3 files changed, 16 insertions(+), 101 deletions(-) delete mode 100644 app/ContainerListItem.react.js create mode 100644 lint.sh diff --git a/app/ContainerListItem.react.js b/app/ContainerListItem.react.js deleted file mode 100644 index 6ff3251262..0000000000 --- a/app/ContainerListItem.react.js +++ /dev/null @@ -1,84 +0,0 @@ -var async = require('async'); -var _ = require('underscore'); -var $ = require('jquery'); -var React = require('react/addons'); -var Router = require('react-router'); -var Modal = require('react-bootstrap/Modal'); -var RetinaImage = require('react-retina-image'); -var ModalTrigger = require('react-bootstrap/ModalTrigger'); -var ContainerModal = require('./ContainerModal.react'); -var Header = require('./Header.react'); -var docker = require('./docker'); - -var ContainerListItem = React.createClass({ - componentWillMount: function () { - this._start = Date.now(); - }, - handleItemMouseEnter: function () { - var $action = $(this.getDOMNode()).find('.action'); - $action.show(); - }, - handleItemMouseLeave: function () { - var $action = $(this.getDOMNode()).find('.action'); - $action.hide(); - }, - render: function () { - var self = this; - var container = this.props.container; - var downloadingImage = null, downloading = false; - var env = container.Config.Env; - if (env.length) { - var obj = _.object(env.map(function (e) { - return e.split('='); - })); - if (obj.KITEMATIC_DOWNLOADING) { - downloading = true; - } - downloadingImage = obj.KITEMATIC_DOWNLOADING_IMAGE || null; - } - - var imageName = downloadingImage || container.Config.Image; - - // Synchronize all animations - var style = { - WebkitAnimationDelay: (self._start - Date.now()) + 'ms' - }; - - var state; - if (downloading) { - state =
    ; - } else if (container.State.Running && !container.State.Paused) { - state =
    ; - } else if (container.State.Restarting) { - state =
    ; - } else if (container.State.Paused) { - state =
    ; - } else if (container.State.ExitCode) { - // state =
    ; - state =
    ; - } else { - state =
    ; - } - - return ( - -
  • - {state} -
    -
    - {container.Name} -
    -
    - {imageName} -
    -
    -
    - -
    -
  • -
    - ); - } -}); - -module.exports = ContainerListItem; diff --git a/browser/main.js b/browser/main.js index ee51d8d578..a25aaa702d 100644 --- a/browser/main.js +++ b/browser/main.js @@ -1,7 +1,3 @@ -var child_process = require('child_process'); -var net = require('net'); -var os = require('os'); -var fs = require('fs'); var path = require('path'); var exec = require('exec'); @@ -23,6 +19,16 @@ if (argv.integration) { process.env.TEST_TYPE = 'test'; } +var mainWindow = new BrowserWindow({ + width: 1000, + height: 700, + 'min-width': 1000, + 'min-height': 700, + resizable: true, + frame: false, + show: false +}); + app.on('activate-with-no-open-windows', function () { if (mainWindow) { mainWindow.show(); @@ -31,23 +37,14 @@ app.on('activate-with-no-open-windows', function () { }); app.on('ready', function() { - mainWindow = new BrowserWindow({ - width: 1000, - height: 700, - 'min-width': 1000, - 'min-height': 700, - resizable: true, - frame: false, - show: false - }); if (argv.test) { mainWindow.loadUrl('file://' + __dirname + '/../tests/tests.html'); } else { mainWindow.loadUrl('file://' + __dirname + '/../build/index.html'); - app.on('will-quit', function (e) { + app.on('will-quit', function () { if (saveVMOnQuit) { - exec('VBoxManage controlvm boot2docker-vm savestate', function (stderr, stdout, code) {}); + exec('VBoxManage controlvm boot2docker-vm savestate', function () {}); } }); } @@ -67,7 +64,7 @@ app.on('ready', function() { if (process.env.NODE_ENV !== 'development' && !argv.test) { autoUpdater.setFeedUrl('https://updates.kitematic.com/releases/latest?version=' + app.getVersion()); - autoUpdater.on('checking-for-update', function (e) { + autoUpdater.on('checking-for-update', function () { console.log('Checking for update...'); }); @@ -76,12 +73,13 @@ app.on('ready', function() { console.log(e); }); - autoUpdater.on('update-not-available', function (e) { + autoUpdater.on('update-not-available', function () { console.log('Update not available.'); }); autoUpdater.on('update-downloaded', function (e, releaseNotes, releaseName, releaseDate, updateURL) { console.log('Update downloaded.'); + console.log(releaseNotes, releaseName, releaseDate, updateURL); mainWindow.webContents.send('notify', 'window:update-available'); }); diff --git a/lint.sh b/lint.sh new file mode 100644 index 0000000000..ce9d6e33cb --- /dev/null +++ b/lint.sh @@ -0,0 +1 @@ +jsxhint src/**/* && jsxhint browser/**/* From 3b9244159e6036d9e017ee9d475e949c393c68df Mon Sep 17 00:00:00 2001 From: Sean Li Date: Tue, 3 Feb 2015 14:20:01 -0800 Subject: [PATCH 10/35] Fixed browser window not opening. --- browser/main.js | 29 ++++++++++++++++++----------- 1 file changed, 18 insertions(+), 11 deletions(-) diff --git a/browser/main.js b/browser/main.js index a25aaa702d..1a2ab7364d 100644 --- a/browser/main.js +++ b/browser/main.js @@ -19,17 +19,16 @@ if (argv.integration) { process.env.TEST_TYPE = 'test'; } -var mainWindow = new BrowserWindow({ - width: 1000, - height: 700, - 'min-width': 1000, - 'min-height': 700, - resizable: true, - frame: false, - show: false -}); - app.on('activate-with-no-open-windows', function () { + var mainWindow = new BrowserWindow({ + width: 1000, + height: 700, + 'min-width': 1000, + 'min-height': 700, + resizable: true, + frame: false, + show: false + }); if (mainWindow) { mainWindow.show(); } @@ -37,7 +36,15 @@ app.on('activate-with-no-open-windows', function () { }); app.on('ready', function() { - + var mainWindow = new BrowserWindow({ + width: 1000, + height: 700, + 'min-width': 1000, + 'min-height': 700, + resizable: true, + frame: false, + show: false + }); if (argv.test) { mainWindow.loadUrl('file://' + __dirname + '/../tests/tests.html'); } else { From 927629b1d875a2d9c3df9ab5431d31733fa09afd Mon Sep 17 00:00:00 2001 From: Sean Li Date: Tue, 3 Feb 2015 14:30:04 -0800 Subject: [PATCH 11/35] Stricter lint checks. --- .jshintrc | 6 +++++- browser/main.js | 30 ++++++++++++------------------ src/Boot2Docker.js | 10 +++++----- src/Main.js | 8 ++++---- 4 files changed, 26 insertions(+), 28 deletions(-) diff --git a/.jshintrc b/.jshintrc index 73c8cb3691..05f93ee7c8 100644 --- a/.jshintrc +++ b/.jshintrc @@ -1,5 +1,5 @@ { - "curly": false, + "curly": true, "noempty": true, "newcap": true, "eqeqeq": true, @@ -17,6 +17,10 @@ "immed": true, "smarttabs": true, "strict": false, + "quotmark": false, + "nonbsp": true, + "noempty": true, + "camelcase": false, "globals": { "define": true } diff --git a/browser/main.js b/browser/main.js index 1a2ab7364d..04c8d5f54b 100644 --- a/browser/main.js +++ b/browser/main.js @@ -19,16 +19,18 @@ if (argv.integration) { process.env.TEST_TYPE = 'test'; } +var windowOptions = { + width: 1000, + height: 700, + 'min-width': 1000, + 'min-height': 700, + resizable: true, + frame: false, + show: false +}; + app.on('activate-with-no-open-windows', function () { - var mainWindow = new BrowserWindow({ - width: 1000, - height: 700, - 'min-width': 1000, - 'min-height': 700, - resizable: true, - frame: false, - show: false - }); + var mainWindow = new BrowserWindow(windowOptions); if (mainWindow) { mainWindow.show(); } @@ -36,15 +38,7 @@ app.on('activate-with-no-open-windows', function () { }); app.on('ready', function() { - var mainWindow = new BrowserWindow({ - width: 1000, - height: 700, - 'min-width': 1000, - 'min-height': 700, - resizable: true, - frame: false, - show: false - }); + var mainWindow = new BrowserWindow(windowOptions); if (argv.test) { mainWindow.loadUrl('file://' + __dirname + '/../tests/tests.html'); } else { diff --git a/src/Boot2Docker.js b/src/Boot2Docker.js index e702c77a04..c8bb0f742b 100644 --- a/src/Boot2Docker.js +++ b/src/Boot2Docker.js @@ -131,8 +131,8 @@ var Boot2Docker = { var totalGb = parseInt(tokens[3], 10) / 1000000; var percent = parseInt(tokens[4].replace('%', ''), 10); callback(null, { - used_gb: usedGb.toFixed(2), - total_gb: totalGb.toFixed(2), + usedGb: usedGb.toFixed(2), + totalGb: totalGb.toFixed(2), percent: percent }); } catch (error) { @@ -160,9 +160,9 @@ var Boot2Docker = { var totalGb = usedGb + freeGb; var percent = Math.round(usedGb / totalGb * 100); callback(null, { - used_gb: usedGb.toFixed(2), - total_gb: totalGb.toFixed(2), - free_gb: freeGb.toFixed(2), + usedGb: usedGb.toFixed(2), + totalGb: totalGb.toFixed(2), + freeGb: freeGb.toFixed(2), percent: percent }); } catch (error) { diff --git a/src/Main.js b/src/Main.js index 5c48980e0c..4582a2235f 100644 --- a/src/Main.js +++ b/src/Main.js @@ -16,11 +16,11 @@ if (process.env.NODE_ENV === 'development') { if (!window.location.hash.length || window.location.hash === '#/') { SetupStore.run(function () { boot2docker.ip(function (err, ip) { - if (err) console.log(err); + if (err) { console.log(err); } docker.setHost(ip); router.transitionTo('containers'); ContainerStore.init(function (err) { - if (err) console.log(err); + if (err) { console.log(err); } router.run(function (Handler) { React.render(, document.body); }); @@ -29,10 +29,10 @@ if (!window.location.hash.length || window.location.hash === '#/') { }); } else { boot2docker.ip(function (err, ip) { - if (err) console.log(err); + if (err) { console.log(err); } docker.setHost(ip); ContainerStore.init(function (err) { - if (err) console.log(err); + if (err) { console.log(err); } router.run(function (Handler) { React.render(, document.body); }); From 263debf312df51b0e6e2c8c55963fc38c8bf5133 Mon Sep 17 00:00:00 2001 From: Sean Li Date: Tue, 3 Feb 2015 16:29:15 -0800 Subject: [PATCH 12/35] Made default page working. --- images/running 2.png | Bin 0 -> 554 bytes images/running 2@2x.png | Bin 0 -> 1105 bytes images/running.png | Bin 527 -> 555 bytes images/running@2x.png | Bin 1128 -> 1166 bytes images/runningwave.png | Bin 347 -> 356 bytes images/runningwave@2x.png | Bin 638 -> 657 bytes package.json | 3 +- src/Containers.react.js | 8 +-- src/Main.js | 12 ++--- src/NewContainer.react.js | 108 ++++++++++++++++++++++++++++++++++++++ src/Routes.js | 4 +- styles/containers.less | 61 +++++++++++++++++++++ styles/variables.less | 4 +- 13 files changed, 186 insertions(+), 14 deletions(-) create mode 100644 images/running 2.png create mode 100644 images/running 2@2x.png create mode 100644 src/NewContainer.react.js diff --git a/images/running 2.png b/images/running 2.png new file mode 100644 index 0000000000000000000000000000000000000000..4a81d6da9795245119c8ec83e0b8936cb17e5fe6 GIT binary patch literal 554 zcmV+_0@eMAP)Px$)FgQps?H3?Oa9k5`RAC4T5(u9_XoAI{T8HT2 zNDzEMYe>Lh5J(aXqCkiDW_y=%rKByB^lta|y|**FGgFmc%*y3iSzg=})lCtri0DFu z*$c*PF}s$>=WFeBK8kcLez00Kfk+)_PM#q9x$# z+DMOyaX}B0o<*?@ZKijF0;9&ZldM7XCW=ax;Rn9}o*50EjVngDV;PN`)v2Y}WlMry z`MES&tE0k6?`a-6*D4U~ zCvErbc^WO}_BxvsK1 zSV9HL$fE$%0XutH%BOILv?aXi4 zTM!ByUY1y!0Pg=4KG%pL);ZoBVjJ`3z#UwmmYf0Px(3rR#lR9FekSvyQrK@`37AQF%eDAbkMNoBMmCfG@1qJ{1fi3I_Aqm9y;AduLh zm9YmxVK6LEXkvq%CWK03rJX_00%MTP8hqDtXWrYLnTNOw`@6~R&i9_f{Le+vA&p1V zXNlDfBGpTZyNRhAX?((ofY~_FJiaOCrdFm)ohe^FC29hLLG6)%m{dn0AQ5Y0CY0tQOuNeX#wPAVzI~ z0(yo~J9V(Da%*{uLb{F7Ts)}fKM67z(MWn6KMygT$#zV?;dm9F6$-Ud>7*rr(S`>vwNhJZ2IK~lU1$?iG(~&) zc{Ts)=RWm`A|AThLCq~gSR(j?DV1nIyg<8~qiW%8&aX=l)FU^Vd7dQ4c`Wcp#5+&a z-0NSyqf+ubeC0T)_Iuc958%JW?E{iC*<1cdCJBzDF{QzT+Zm&_M;SH0_|7XoRF;PZ z`ly+*=gC(E%U{4aL{M2DbWP=4IziHZP*Z%T64BrKdmuj^Enob8BW;urd-|iZir3Utxlh6 zW(*dNugK)K(pPFsP;ol0Gr!@~VUH5mPiZ-Wg|pQ$-1ji0UnLY^b3`UL#Gl-WQV-#{ z+fje@VcyjG-Mw+bp1?er9QUiWCMW0-rd*vx!*dR65brtHR@`h&a~`(p4KT^kBQqi* z7k|CX#|Ae{vAl#WlUGT-%*O^dnPQh<{A8*J$pp3nK_zc8%kmwC>(45!P145(H<{wE z4ti(PX(wOHjE@a&7(u8n+vFu&FY~d%P0m4=pn0a(hoX-SZrCKyt*(iNsF!)zye^w$ z*<;hMuN|+j+Sv%R-@yU5Kr4PNs-r4VUs~WeO{<>~Ok4SZlW@Zni$U=_7L03wf;Knu~!d5Y#FPu@Xd~?5i&& z(y$sN4LOmWmZB4EiPu;`r2;|WYxF2$C5}P2Hq#m$_Bq8z$Y@{i3B;l%*8X_X*2Gej zco;N%=tEdHbnr+Bis_MT)bN|3XucaZfa#EI=ZGuR< zel;y&535`TLXU~KJW?IQ-ezT|SY6;Uc4}x-GE+WV^nEvn;fC3P0XA-Isv3+SObz=6 zrX$E{7&vLS(o+oVmP5I0m7zhMA{A&7+WhNqa5@Iojj{eb)Li6>{sA-FuZ`s-XJ}g2 zXQ*ae04~R2V(3ccxfbj>mGud`@x+rS{eT@Hw7mcL1$+TXhxUXlP4fc)0000BaR=?P6YC#I})Q0G3>YVxbqIPdI9c={YGNECfh&c_6-lf#f;keyf8XD-#W)+ zkY#w9GS!&1uYYi%#sz+;@i8UKxT^ugXiMDU1z1B@YN(Y)7EdSSJsLafcw6`&%sFg;R zVbzdvPg15>DdQ+jm$ps~wPcWGv;;}jaDtXgr!@Vqbz$e*(nVpArKijslz=uhCnYz< zajxPZAkAZH$sl-K4_QIVI2WjXt)`P?057e-XFN?k0EwB~CW~%U((lw~*%+wby?lZF e10;8uzknZ0Y`x(OY+-T$0000`#8 diff --git a/images/running@2x.png b/images/running@2x.png index b2777164bfe6b95f26cfc8c0aa059c28e9911153..43517a2c30afa4f1b7b1d1214b14fcd441121d69 100644 GIT binary patch delta 1132 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 FV1lkFEJ*+W delta 600 zcmV-e0;m0v1^xt(F@HEoL_t(o3GI|UXcR#d$A7a~&8eq_f*=MoF%iXxh#IjF>}(7O z=|ls1ImE;&igk)$I=evd;|K&R1w~L1gj5z5et{o|ayd~0T1bK)$>p*;{#6n-IXB!M zDhM;|vO90yd-I>)ycuxK5pV(lfEA`eotd}$G>s=$`+>La#mw66WEbwFCNF0tW9E4Ns>zVs05!Yjx#W{ zjju^!<9vS#+&7HBp`LbiPD|A0IOj_368bg_IGJnUMx`-ve&$$#Hf>{{9Gc>ssMN&3}`)tBU=tIFZPQFla+MOVhLj6RaJ3&(g8`_@$5~#YyTy%K_D2zjAyj z(_lDQlj3=1L?zRs!b#XNd0I{OjjATvRQ%R(O%o5~)-xO(TIfIXjFqH0<5{|Ocoxm~ z)g(_%NPke|vWR}3KR(lMf5EES6s=lLr);~T0;grTWPhjVz1YONnSi9<%xjvB&w17I zo|xDP5r3$9eo@Uji*RgOF1y>X$J|lbN-h*`stR=&as! zvf#PiCOg9Z3-#QYYyLC6j#t!av-?EmkTT9vNsv7(y9W~lSL~{7Z^Y+>Ci`)>u3IQj zTdju&s!`WlItzpUL||0V;R0)P`)`-ft*XJa4%On&!+Ifwz>?SP@OY?^kI@+S?+7>o mj({WJ2si?cfFtnN2z&

    Containers

    - }> - - +
    diff --git a/src/Main.js b/src/Main.js index 4582a2235f..cbc6c57068 100644 --- a/src/Main.js +++ b/src/Main.js @@ -14,6 +14,9 @@ if (process.env.NODE_ENV === 'development') { } if (!window.location.hash.length || window.location.hash === '#/') { + router.run(function (Handler) { + React.render(, document.body); + }); SetupStore.run(function () { boot2docker.ip(function (err, ip) { if (err) { console.log(err); } @@ -21,21 +24,18 @@ if (!window.location.hash.length || window.location.hash === '#/') { router.transitionTo('containers'); ContainerStore.init(function (err) { if (err) { console.log(err); } - router.run(function (Handler) { - React.render(, document.body); - }); }); }); }); } else { + router.run(function (Handler) { + React.render(, document.body); + }); boot2docker.ip(function (err, ip) { if (err) { console.log(err); } docker.setHost(ip); ContainerStore.init(function (err) { if (err) { console.log(err); } - router.run(function (Handler) { - React.render(, document.body); - }); }); }); } diff --git a/src/NewContainer.react.js b/src/NewContainer.react.js new file mode 100644 index 0000000000..5f1162bae5 --- /dev/null +++ b/src/NewContainer.react.js @@ -0,0 +1,108 @@ +var $ = require('jquery'); +var React = require('react/addons'); +var RetinaImage = require('react-retina-image'); +var ContainerStore = require('./ContainerStore'); + +var NewContainer = React.createClass({ + _searchRequest: null, + getInitialState: function () { + return { + query: '', + results: ContainerStore.recommended(), + loading: false, + tags: {}, + active: null, + }; + }, + componentDidMount: function () { + this.refs.searchInput.getDOMNode().focus(); + ContainerStore.on(ContainerStore.CLIENT_RECOMMENDED_EVENT, this.update); + }, + update: function () { + if (!this.state.query.length) { + this.setState({ + results: ContainerStore.recommended() + }); + } + }, + search: function (query) { + if (this._searchRequest) { + this._searchRequest.abort(); + this._searchRequest = null; + } + + if (!query.length) { + return; + } + + this.setState({ + loading: true + }); + + var self = this; + this._searchRequest = $.get('https://registry.hub.docker.com/v1/search?q=' + query, function (result) { + self.setState({ + query: query, + loading: false + }); + self._searchRequest = null; + if (self.isMounted()) { + self.setState(result); + } + }); + }, + handleChange: function (e) { + var query = e.target.value; + + if (query === this.state.query) { + return; + } + + clearTimeout(this.timeout); + if (!query.length) { + this.setState({ + query: query, + results: ContainerStore.recommended() + }); + } else { + var self = this; + this.timeout = setTimeout(function () { + self.search(query); + }, 200); + } + }, + render: function () { + var loadingClasses = React.addons.classSet({ + hidden: !this.state.loading, + loading: true + }); + var magnifierClasses = React.addons.classSet({ + hidden: this.state.loading, + icon: true, + 'icon-magnifier': true, + 'search-icon': true + }); + return ( +
    +
    +
    +
    +
    + Pick an image to create new container. +
    +
    +
    + +
    + +
    +
    +
    +
    +
    +
    + ); + } +}); + +module.exports = NewContainer; diff --git a/src/Routes.js b/src/Routes.js index 92b9df7d3a..a577ed605b 100644 --- a/src/Routes.js +++ b/src/Routes.js @@ -3,7 +3,7 @@ var Setup = require('./Setup.react'); var Containers = require('./Containers.react'); var ContainerDetails = require('./ContainerDetails.react'); var Preferences = require('./Preferences.react'); -var NoContainers = require('./NoContainers.react'); +var NewContainer = require('./NewContainer.react'); var Router = require('react-router'); var Route = Router.Route; @@ -23,7 +23,7 @@ var routes = ( - + diff --git a/styles/containers.less b/styles/containers.less index 5bf7647653..6651ced1bd 100644 --- a/styles/containers.less +++ b/styles/containers.less @@ -19,6 +19,66 @@ } } +.new-container { + padding: 35px 20px 32px 25px; + .new-container-header { + display: flex; + flex: 1; + .text { + flex: 1 auto; + width: 50%; + font-size: 14px; + color: @gray-lighter; + } + .search { + flex: 1 auto; + margin-right: 30px; + .search-bar { + top: -7px; + position: relative; + .loading { + position: absolute; + left: 10px; + top: 7px; + width: 16px; + height: 16px; + -webkit-animation-name: spin; + -webkit-animation-duration: 1.8s; + -webkit-animation-iteration-count: infinite; + -webkit-animation-timing-function: linear; + } + .search-icon { + font-size: 18px; + color: @gray-lighter; + position: absolute; + top: 5px; + left: 10px; + } + input { + border-radius: 20px; + font-size: 12px; + height: 30px; + padding: 4px 8px 4px 35px; + color: @gray-darkest; + margin-bottom: 3px; + border-color: @gray-lightest; + box-shadow: none; + + &:focus { + box-shadow: none; + border-color: @gray-lighter; + } + + &::-webkit-input-placeholder { + color: #CCC; + font-weight: 400; + } + } + } + } + } +} + .containers { box-sizing: border-box; height: 100%; @@ -293,6 +353,7 @@ } .details { + background-color: #F9F9F9; margin: 0; padding: 0; box-sizing: border-box; diff --git a/styles/variables.less b/styles/variables.less index 3d8a1b7f92..ba3833fa96 100644 --- a/styles/variables.less +++ b/styles/variables.less @@ -1,7 +1,7 @@ @brand-primary: #24B8EB; @brand-action: #24B8EB; -@brand-positive: #16E568; -@brand-negative: #F47A45; +@brand-positive: #15CC35; +@brand-negative: #FF5F52; @gray-darkest: #253237; @gray-darker: #394C51; From 9709e5fec4aba193722049d56ff0246276c94c5a Mon Sep 17 00:00:00 2001 From: Sean Li Date: Wed, 4 Feb 2015 12:44:48 -0800 Subject: [PATCH 13/35] Grid implementation. --- images/container-white.png | Bin 0 -> 128 bytes images/container-white@2x.png | Bin 0 -> 193 bytes images/container.png | Bin 0 -> 126 bytes images/container@2x.png | Bin 0 -> 201 bytes package.json | 2 +- src/ContainerList.react.js | 2 + src/ContainerListNewItem.react.js | 43 +++++++++++ src/ContainerModal.react.js | 8 +- src/ContainerStore.js | 7 +- src/Containers.react.js | 10 +-- src/NewContainer.react.js | 90 +++++++++++++++++++++++ src/Setup.react.js | 5 -- styles/containers.less | 117 +++++++++++++++++++++++++++++- 13 files changed, 264 insertions(+), 20 deletions(-) create mode 100644 images/container-white.png create mode 100644 images/container-white@2x.png create mode 100644 images/container.png create mode 100644 images/container@2x.png create mode 100644 src/ContainerListNewItem.react.js diff --git a/images/container-white.png b/images/container-white.png new file mode 100644 index 0000000000000000000000000000000000000000..94fc0e6bad1efe20316fe6f079a47084c96519bf GIT binary patch literal 128 zcmeAS@N?(olHy`uVBq!ia0vp^A|TAc1|)ksWqE-VV{wqX6T`Z5GB1G~D^C~45DUTN z1PRtDZ48g=6&73(Ncrn?LT1%Q$8{`>Ga3ctDr;8lF1X?lv1NjP{{aITrO5t27P4Jd ZjIYi0pHH>0T?RCT!PC{xWt~$(69D(ICQbkV literal 0 HcmV?d00001 diff --git a/images/container-white@2x.png b/images/container-white@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..dc5fde9ef5ae0562e0705e5aa5aca4971d4afcd7 GIT binary patch literal 193 zcmeAS@N?(olHy`uVBq!ia0vp^8X(NU1|)m_?Z^dEjKx9jP7LeL$-D$|sy$sCLn1ie zUf;-dK!K+v@$v8do3APsl + {containers} ); diff --git a/src/ContainerListNewItem.react.js b/src/ContainerListNewItem.react.js new file mode 100644 index 0000000000..3260aceb2f --- /dev/null +++ b/src/ContainerListNewItem.react.js @@ -0,0 +1,43 @@ +var $ = require('jquery'); +var React = require('react/addons'); +var Router = require('react-router'); + +var ContainerListNewItem = React.createClass({ + handleItemMouseEnter: function () { + var $action = $(this.getDOMNode()).find('.action'); + $action.show(); + }, + handleItemMouseLeave: function () { + var $action = $(this.getDOMNode()).find('.action'); + $action.hide(); + }, + handleDelete: function () { + $(this.getDOMNode()).fadeOut(); + }, + render: function () { + var self = this; + var action; + if (this.props.containers.length > 0) { + action = ( +
    + +
    + ); + } + return ( + +
  • +
    +
    +
    + New Container +
    +
    + {action} +
  • +
    + ); + } +}); + +module.exports = ContainerListNewItem; diff --git a/src/ContainerModal.react.js b/src/ContainerModal.react.js index 0f6a13bda4..a78ef0edd0 100644 --- a/src/ContainerModal.react.js +++ b/src/ContainerModal.react.js @@ -77,17 +77,17 @@ var ContainerModal = React.createClass({ }, 200); } }, - handleClick: function (name, event) { + handleClick: function (name) { this.props.onRequestHide(); - ContainerStore.create(name, 'latest', function (err, containerName) { + ContainerStore.create(name, 'latest', function (err) { if (err) { throw err; } }.bind(this)); }, - handleTagClick: function (tag, name, event) { + handleTagClick: function (tag, name) { this.props.onRequestHide(); - ContainerStore.create(name, tag, function (err, containerName) {}); + ContainerStore.create(name, tag, function () {}); }, handleDropdownClick: function (name) { this.setState({ diff --git a/src/ContainerStore.js b/src/ContainerStore.js index 32773181f4..7e3ad1020a 100644 --- a/src/ContainerStore.js +++ b/src/ContainerStore.js @@ -118,11 +118,11 @@ var ContainerStore = assign(EventEmitter.prototype, { if (containerData.Config && containerData.Config.Image) { containerData.Image = containerData.Config.Image; } - existing.kill(function (err, data) { + existing.kill(function (err) { if (err) { console.log(err); } - existing.remove(function (err, data) { + existing.remove(function (err) { if (err) { console.log(err); } @@ -386,7 +386,6 @@ var ContainerStore = assign(EventEmitter.prototype, { var self = this; var imageName = repository + ':' + tag; var containerName = this._generateName(repository); - var image = docker.client().getImage(imageName); // Pull image self._createPlaceholderContainer(imageName, containerName, function (err, container) { if (err) { @@ -398,7 +397,7 @@ var ContainerStore = assign(EventEmitter.prototype, { _muted[containerName] = true; _progress[containerName] = 0; self._pullImage(repository, tag, function () { - self._createContainer(containerName, {Image: imageName}, function (err, container) { + self._createContainer(containerName, {Image: imageName}, function () { delete _progress[containerName]; _muted[containerName] = false; self.emit(self.CLIENT_CONTAINER_EVENT, containerName); diff --git a/src/Containers.react.js b/src/Containers.react.js index aeafab212e..81070e7ba2 100644 --- a/src/Containers.react.js +++ b/src/Containers.react.js @@ -1,11 +1,9 @@ +var $ = require('jquery'); var React = require('react/addons'); var Router = require('react-router'); -var ModalTrigger = require('react-bootstrap/ModalTrigger'); -var ContainerModal = require('./ContainerModal.react'); var ContainerStore = require('./ContainerStore'); var ContainerList = require('./ContainerList.react'); var Header = require('./Header.react'); -var router = require('./Router'); var Containers = React.createClass({ mixins: [Router.Navigation, Router.State], @@ -13,7 +11,7 @@ var Containers = React.createClass({ return { sidebarOffset: 0, containers: ContainerStore.containers(), - sorted: ContainerStore.sorted(), + sorted: ContainerStore.sorted() }; }, componentDidMount: function () { @@ -63,6 +61,8 @@ var Containers = React.createClass({ } }, handleNewContainer: function () { + console.log($(this.getDOMNode()).find('.new-container-item')); + $(this.getDOMNode()).find('.new-container-item').parent().fadeIn(); this.transitionTo('new'); }, render: function () { @@ -84,7 +84,7 @@ var Containers = React.createClass({
    - +
    diff --git a/src/NewContainer.react.js b/src/NewContainer.react.js index 5f1162bae5..33e97d34a2 100644 --- a/src/NewContainer.react.js +++ b/src/NewContainer.react.js @@ -2,6 +2,7 @@ var $ = require('jquery'); var React = require('react/addons'); var RetinaImage = require('react-retina-image'); var ContainerStore = require('./ContainerStore'); +var assign = require('object-assign'); var NewContainer = React.createClass({ _searchRequest: null, @@ -71,7 +72,92 @@ var NewContainer = React.createClass({ }, 200); } }, + handleClick: function (name) { + ContainerStore.create(name, 'latest', function (err) { + if (err) { + throw err; + } + }.bind(this)); + }, + handleDropdownClick: function (name) { + this.setState({ + active: name + }); + if (this.state.tags[name]) { + return; + } + $.get('https://registry.hub.docker.com/v1/repositories/' + name + '/tags', function (result) { + var res = {}; + res[name] = result; + console.log(assign(this.state.tags, res)); + this.setState({ + tags: assign(this.state.tags, res) + }); + }.bind(this)); + }, render: function () { + var self = this; + var title = this.state.query ? 'Results' : 'Recommended'; + var data = this.state.results.slice(0, 7); + + var results; + if (data.length) { + var items = data.map(function (r) { + var name; + if (r.is_official) { + name = {r.name}; + } else { + name = {r.name}; + } + var description; + if (r.description) { + description = r.description; + } else { + description = "No description."; + } + return ( +
    +
    +
    +
    +
    + {name} +
    +
    + {description} +
    +
    +
    + + {r.star_count} +
    +
    + + latest +
    +
    + Create +
    +
    +
    +
    + ); + }); + + results = ( +
    + {items} +
    + ); + } else { + results = ( +
    +

    + No Results +

    +
    + ); + } var loadingClasses = React.addons.classSet({ hidden: !this.state.loading, loading: true @@ -98,6 +184,10 @@ var NewContainer = React.createClass({
    +
    +

    {title}

    + {results} +
    diff --git a/src/Setup.react.js b/src/Setup.react.js index 8df59eb28e..ef3bd7160f 100644 --- a/src/Setup.react.js +++ b/src/Setup.react.js @@ -1,11 +1,6 @@ var React = require('react/addons'); var Router = require('react-router'); var Radial = require('./Radial.react.js'); -var async = require('async'); -var assign = require('object-assign'); -var fs = require('fs'); -var path = require('path'); -var virtualbox = require('./Virtualbox'); var SetupStore = require('./SetupStore'); var RetinaImage = require('react-retina-image'); diff --git a/styles/containers.less b/styles/containers.less index 1eb03f3787..57fcd49f6b 100644 --- a/styles/containers.less +++ b/styles/containers.less @@ -19,9 +19,109 @@ } } +.result-grid { + display: flex; + flex-flow: row wrap; + justify-content: flex-start; + margin-top: 20px; + overflow: auto; + .image-item { + display: flex; + .logo { + min-width: 90px; + height: 100%; + background-color: @brand-action; + } + .card { + padding: 10px 20px 10px 20px; + .name { + font-size: 18px; + color: @gray-darkest; + margin-bottom: 5px; + img { + margin-right: 7px; + position: relative; + top: -1px; + } + } + .description { + font-size: 12px; + color: @gray-normal; + height: 70px; + text-overflow: ellipsis; + overflow: hidden; + -webkit-box-orient: vertical; + -webkit-line-clamp: 4; + display: -webkit-box; + word-wrap: break-word; + } + .actions { + width: 190px; + padding-top: 25px; + .stars { + height: 15px; + font-size: 10px; + color: @gray-darker; + border-right: 1px solid @gray-lightest; + padding-right: 10px; + .icon { + position: relative; + font-size: 16px; + margin-right: 3px; + top: -1px; + color: @gray-darkest; + } + .text { + position: relative; + top: -6px; + } + } + .tags { + height: 15px; + font-size: 10px; + color: @gray-darker; + padding-left: 10px; + .icon { + position: relative; + font-size: 11px; + margin-right: 5px; + top: 2px; + color: @gray-darkest; + } + .text { + position: relative; + top: 0px; + } + } + .action { + flex: 1 auto; + .btn { + text-align: right; + position: relative; + float: right; + top: -7px; + } + } + display: flex; + flex-direaction: row; + position: relative; + bottom: 0px; + } + } + width: 320px; + height: 170px; + border-radius: 4px; + border: 1px solid @gray-lightest; + background-color: white; + margin-right: 20px; + margin-bottom: 20px; + } +} + .new-container { padding: 35px 20px 32px 25px; .new-container-header { + margin-bottom: 20px; display: flex; flex: 1; .text { @@ -160,6 +260,13 @@ display: flex; flex-direction: column; + .new-container-item { + .info { + position: relative; + top: 9px; + } + } + a { color: inherit; flex-shrink: 0; @@ -168,6 +275,7 @@ &.active { background: @brand-primary; li { + height: 57px; border-bottom: none; background-image: linear-gradient(-180deg, #24B8EB 4%, #24A3EB 100%); .name { @@ -187,6 +295,9 @@ color: white; } } + .state-new { + .at2x('container-white.png', 20px, 20px); + } .state-running { .at2x('running-white.png', 20px, 20px); @@ -197,7 +308,6 @@ .state-stopped { .at2x('stopped-white.png', 20px, 20px); } - .state-downloading { .at2x('downloading-white.png', 20px, 20px); @@ -223,6 +333,7 @@ display: flex; flex-direction: row; + height: 57px; .info { @@ -283,6 +394,10 @@ .at2x('paused.png', 20px, 20px); } + .state-new { + .at2x('container.png', 20px, 20px); + } + .state-downloading { .at2x('downloading.png', 20px, 20px); overflow: hidden; From a26ef466cfa3faf937e3fad53ce3952b25223fcd Mon Sep 17 00:00:00 2001 From: Sean Li Date: Wed, 4 Feb 2015 12:54:43 -0800 Subject: [PATCH 14/35] Fixed animation not syncing bug and added container icon. --- images/container-white.png | Bin 128 -> 163 bytes images/container-white@2x.png | Bin 193 -> 215 bytes images/container.png | Bin 126 -> 158 bytes images/container@2x.png | Bin 201 -> 228 bytes src/ContainerDetails.react.js | 2 +- src/ContainerList.react.js | 6 +++++- src/ContainerListItem.react.js | 5 +---- src/NewContainer.react.js | 2 +- styles/containers.less | 2 +- 9 files changed, 9 insertions(+), 8 deletions(-) diff --git a/images/container-white.png b/images/container-white.png index 94fc0e6bad1efe20316fe6f079a47084c96519bf..e5b5b2149f1800dbf2575719cd31f69620790851 100644 GIT binary patch delta 121 zcmV-<0EYj70iywsF>+l=L_t(I5$#ez3IHGo)9C+Su7;OIL6lwscT(Brl0*{T3uqhg zny|ib6ILT7@M>sk({B?p0ZUFj2iY1j;kHi0+l#II@Eg{3hlmdF{M1ie{4pMQ>+mOg b1AVCPb1X0Qu4O6M00000NkvXXu0mjfEVwk0 delta 86 zcmZ3?*uXf!(BI0_#WBP}FgZbjbxIq<<9dY!R|Hc2`katiwb5}M3*(GN0lCVWRl5tW qI7Doj;NO41Kt?ID|Br=imlfk{bN%O2Eo_%D0D-5gpUXO@geCxanIK>Q diff --git a/images/container-white@2x.png b/images/container-white@2x.png index dc5fde9ef5ae0562e0705e5aa5aca4971d4afcd7..0b2c76efd550af9fd15090b89513abec74c41217 100644 GIT binary patch delta 174 zcmV;f08#(J0oMVLF@KRsL_t(o3GJ6b3cw%?1WoDxzuekGE(=nlP!>A5gpg>rvmUfH z0s;_#z`qH^)x#OV;VkaahQM8iA~(>p7(KH0MIL?M-r{qX&gc(w{cb<^(QHo;fofT` zhG3PL&O=a%RBH%UiRnB9l}NRQV3nB8Pv2(V?uWa56_&NV#V5S#(yG;LZ?V0=Rr0KZ c00dkJ+$I%=9hP&J$$K}St92&#tD zBj~7U20_(udITLc&BP1xSEuW8`uG*c59p|qK>&dyfd>qp91$u*5yY+l0000LVfux2Qrh2M}Aq%D*3=DTXL>ZCA3GtED4w0;f?BwCk1^`Ny VB@dOj^P<7A~9Qo)%h9@nK*Pzn~cJQZmJX0SG)@{an^LB{Ts5)yf>! diff --git a/images/container@2x.png b/images/container@2x.png index 82b02cb2c01e723e12f099fb296eaffea95e788a..0fbb4ac03b2f9c9ef0a99d053994e295669122e4 100644 GIT binary patch delta 187 zcmV;s07U=E0ptOYF@K&(L_t(o3GJ7`34kyV1dZ5&9axMdTZ|o8gyQ3TEQnr$u;Ao# z9Ct}Jvw0+4$AAC?Ank~8A0zX?$n0BR)B2X>M<`B#h(|!mlk!%jZEHUkepc2XE5X=(O{xsLGnWy(*Yh8s!Zf`Na py0EG?+FNWdu$DaYAOHau0tbL-9dPvL+^qlr002ovPDHLkV1n#LQ@{WK delta 160 zcmV;R0AK&)0m%W7F@J+eL_t(o3GLUh4S+BZL(zmC*dW7XWQJh_h5)5-3QAMN5}(FJ za_IC-Ln%B6Ab`NX1!_C4JDFfhUT*Bhf?pe|dcpf!Jo`S+#+_B?RIG;FM9`Jf9DZ1zmaO5E(!qMc@Ijy&1l%46>B~ O0000 + ); }); return ( diff --git a/src/ContainerListItem.react.js b/src/ContainerListItem.react.js index d8b6348004..96baaa8b6e 100644 --- a/src/ContainerListItem.react.js +++ b/src/ContainerListItem.react.js @@ -7,9 +7,6 @@ var dialog = remote.require('dialog'); var ContainerStore = require('./ContainerStore'); var ContainerListItem = React.createClass({ - componentWillMount: function () { - this._start = Date.now(); - }, handleItemMouseEnter: function () { var $action = $(this.getDOMNode()).find('.action'); $action.show(); @@ -49,7 +46,7 @@ var ContainerListItem = React.createClass({ // Synchronize all animations var style = { - WebkitAnimationDelay: (self._start - Date.now()) + 'ms' + WebkitAnimationDelay: (self.props.start - Date.now()) + 'ms' }; var state; diff --git a/src/NewContainer.react.js b/src/NewContainer.react.js index 33e97d34a2..8f024f794d 100644 --- a/src/NewContainer.react.js +++ b/src/NewContainer.react.js @@ -98,7 +98,7 @@ var NewContainer = React.createClass({ render: function () { var self = this; var title = this.state.query ? 'Results' : 'Recommended'; - var data = this.state.results.slice(0, 7); + var data = this.state.results.slice(0, 6); var results; if (data.length) { diff --git a/styles/containers.less b/styles/containers.less index 57fcd49f6b..082a252e9c 100644 --- a/styles/containers.less +++ b/styles/containers.less @@ -121,7 +121,7 @@ .new-container { padding: 35px 20px 32px 25px; .new-container-header { - margin-bottom: 20px; + margin-bottom: 28px; display: flex; flex: 1; .text { From c54792ea2604428856f9d4a038ec5b59ca75e55c Mon Sep 17 00:00:00 2001 From: Sean Li Date: Wed, 4 Feb 2015 13:24:07 -0800 Subject: [PATCH 15/35] Home page skeleton. --- src/ContainerDetails.react.js | 8 +++----- src/ContainerHome.react.js | 32 ++++++++++++++++++++++++++------ styles/containers.less | 34 +++++++++++++++++++++++++++++++--- styles/theme.less | 8 -------- 4 files changed, 60 insertions(+), 22 deletions(-) diff --git a/src/ContainerDetails.react.js b/src/ContainerDetails.react.js index f20579462d..04907f9edd 100644 --- a/src/ContainerDetails.react.js +++ b/src/ContainerDetails.react.js @@ -400,14 +400,12 @@ var ContainerDetails = React.createClass({ } else { if (this.state.page === this.PAGE_HOME) { body = ( - + ); } else if (this.state.page === this.PAGE_LOGS) { body = ( -
    -
    - {logs} -
    +
    + {logs}
    ); } else if (this.state.page === this.PAGE_PORTS) { diff --git a/src/ContainerHome.react.js b/src/ContainerHome.react.js index d6e784dffd..8f3a2a7304 100644 --- a/src/ContainerHome.react.js +++ b/src/ContainerHome.react.js @@ -1,16 +1,36 @@ +var $ = require('jquery'); var React = require('react/addons'); var ContainerHome = React.createClass({ + componentDidUpdate: function () { + // Scroll logs to bottom + var parent = $('.mini-logs'); + if (parent.length) { + if (parent.scrollTop() >= this._oldHeight) { + parent.stop(); + parent.scrollTop(parent[0].scrollHeight - parent.height()); + } + this._oldHeight = parent[0].scrollHeight - parent.height(); + } + }, render: function () { - /*var preview; - if (this.state.defaultPort) { + var preview; + if (this.props.defaultPort) { preview = ( - + ); - }*/ + } return ( -
    -

    HOME

    +
    +
    +

    Web Preview

    +
    + {preview} +
    +
    + {this.props.logs} +
    +
    ); } diff --git a/styles/containers.less b/styles/containers.less index 082a252e9c..11afe4eeb8 100644 --- a/styles/containers.less +++ b/styles/containers.less @@ -633,15 +633,43 @@ flex: 1; overflow: auto; background-color: #FFF; - .logs { + &.home { + background-color: #F9F9F9; + flex: 1; + .widget { + border-radius: 4px; + border: 1px solid @gray-lightest; + &.web-preview { + iframe { + border: 0; + border-radius: 4px; + } + } + &.mini-logs { + background-color: @gray-darkest; + color: @gray-lightest; + padding: 10px; + width: 300px; + height: 300px; + overflow: hidden; + font-family: Menlo; + font-size: 8px; + p { + margin-bottom: 5px; + } + } + } + } + &.logs { + background-color: @gray-darkest; -webkit-user-select: text; font-family: Menlo; font-size: 12px; padding: 20px 18px; - color: lighten(@gray-normal, 6%); + color: @gray-lightest; white-space: pre-wrap; p { - margin: 0 6px; + margin-bottom: 8px; } } .settings { diff --git a/styles/theme.less b/styles/theme.less index f8346046a1..b9fb909e2d 100644 --- a/styles/theme.less +++ b/styles/theme.less @@ -191,11 +191,3 @@ input[type="text"] { .btn-info { .btn-styles(@btn-info-bg); } .btn-warning { .btn-styles(@btn-warning-bg); } .btn-danger { .btn-styles(@btn-danger-bg); } - -iframe { - border: 0; - width: 50%; - height: 300px; - border-radius: 4px; - border: 1px solid @gray-lightest; -} From 9845d86d15049abb91b32a48c9c190031dd7bf32 Mon Sep 17 00:00:00 2001 From: Sean Li Date: Wed, 4 Feb 2015 17:45:26 -0800 Subject: [PATCH 16/35] Homepage styling. --- images/button-restart.png | Bin 0 -> 1351 bytes images/button-restart@2x.png | Bin 0 -> 3092 bytes images/button-run.png | Bin 0 -> 1023 bytes images/button-run@2x.png | Bin 0 -> 2261 bytes images/button-terminal.png | Bin 0 -> 1018 bytes images/button-terminal@2x.png | Bin 0 -> 2406 bytes src/ContainerDetails.react.js | 43 ++++++++++--- src/ContainerHome.react.js | 42 +++++++++++-- styles/containers.less | 110 ++++++++++++++++++++-------------- styles/theme.less | 3 +- 10 files changed, 138 insertions(+), 60 deletions(-) create mode 100644 images/button-restart.png create mode 100644 images/button-restart@2x.png create mode 100644 images/button-run.png create mode 100644 images/button-run@2x.png create mode 100644 images/button-terminal.png create mode 100644 images/button-terminal@2x.png diff --git a/images/button-restart.png b/images/button-restart.png new file mode 100644 index 0000000000000000000000000000000000000000..988cdbcd806ac1bff4fd758dff70aa46c9671e1d GIT binary patch literal 1351 zcmV-N1-SZ&P)Px)0ZBwbR9FeUS6ysWMHHSh_b!yC`XJqHyFy`iOGF8Zwjufg{8lmIZI<*lfry|JW-Rok^Q0* zSoPV(TbAEk_AG&(Cqtj2!cODjNRN1`A@6DU-QGZKb!{U^Xru9+D8!*_e_efRbjRw; zo_G@aP9WBms|QVdg+iSuXDWJEz}0B`K5uTHBr7#5VcE-0(SDFum-UE-2A- zp(XT_8@!nQ%m?*hK{PnGL)u39!110dp>{2`bM`S151vwJHnI=)W&537fmk|sP@uZq zXs&wP9`vi%elS!9RpnbW3F{P!o9OEOX)5#haBKLypN=h$r6vvwkmrqf@Ku&s6X1JZ zA@%UA)1`nP2skE;N-a$Ka4FOjt9qtGPeW5N8!#)r7d^XRy3uM&b}ol z7LM({;gvL{l+Ot?w~3Ai3Qj|QZ6i^Aj6Ujcc|bqliJ?%=KH0afgkD3PF*lG->!Y+x z6?q|h=#)n$3#uoU%(l}49ybzIKe+MkenH_UI>5&yf6+b0eJhz!M%4io?U}H$niFV_ zPp0&mic=bjO_WrAEDr>Z(cXPiigUJ;Hw(Y&x*l=bbhbH@ayp+4M9x8OU)U45npe16 z3fxQGddm6zMj}KjP+G}MeSeLvW!a6;5#oMEN1DK)2Bx+T$KC){iXT zT1i`5Bn?BDiHt5qf%adk@iS&5D);-16_qa&O*HWnei$Y&KrBi!jk1^wkqJNW0^}6( z;T2ke_dIpU7yD%2(&BK4XQH*WO`hNd2q~q%LtlSoptjt&`1XJ4aRl`#I!HIOdN^)x@sjd~Ii23wR&7roT1X9nXo zu$VscLb~%u(S*1sC1c|}fXZYh+{X%wap=@#KB#MOny%h{r*kJ}PTOL}M5UKvJFI2* zVZ`i|Zj5*NzaA#O6X0p_VR1gqm^E3%rO4Ba1KLbXS=`gixh{^!X$!L_CKGg(#()Taw4Aa}suY_Ib`khPcG^1Z0Mj+CrY^{{klsL#>AWl&$~(002ov JPDHLkV1kS*h)Mte literal 0 HcmV?d00001 diff --git a/images/button-restart@2x.png b/images/button-restart@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..f4e3151525267f06ca26fc20d432a394c835c317 GIT binary patch literal 3092 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 literal 0 HcmV?d00001 diff --git a/images/button-run.png b/images/button-run.png new file mode 100644 index 0000000000000000000000000000000000000000..1d03b2c5fcd46299489a13c60fa343c6f77d75af GIT binary patch literal 1023 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 literal 0 HcmV?d00001 diff --git a/images/button-terminal.png b/images/button-terminal.png new file mode 100644 index 0000000000000000000000000000000000000000..d988e3a569490cff602b21b723f3c989eb1eaf53 GIT binary patch literal 1018 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 Y4>W{**Dd&MMgRZ+07*qoM6N<$g2qXt=Kufz literal 0 HcmV?d00001 diff --git a/src/ContainerDetails.react.js b/src/ContainerDetails.react.js index 04907f9edd..fc09f889e7 100644 --- a/src/ContainerDetails.react.js +++ b/src/ContainerDetails.react.js @@ -14,6 +14,7 @@ var boot2docker = require('./Boot2Docker'); var ProgressBar = require('react-bootstrap/ProgressBar'); var ContainerDetailsHeader = require('./ContainerDetailsHeader.react'); var ContainerHome = require('./ContainerHome.react'); +var RetinaImage = require('react-retina-image'); var ContainerDetails = React.createClass({ mixins: [Router.State, Router.Navigation], @@ -270,6 +271,30 @@ var ContainerDetails = React.createClass({ } }.bind(this)); }, + handleItemMouseEnterRun: function () { + var $action = $(this.getDOMNode()).find('.action .run'); + $action.css("visibility", "visible"); + }, + handleItemMouseLeaveRun: function () { + var $action = $(this.getDOMNode()).find('.action .run'); + $action.css("visibility", "hidden"); + }, + handleItemMouseEnterRestart: function () { + var $action = $(this.getDOMNode()).find('.action .restart'); + $action.css("visibility", "visible"); + }, + handleItemMouseLeaveRestart: function () { + var $action = $(this.getDOMNode()).find('.action .restart'); + $action.css("visibility", "hidden"); + }, + handleItemMouseEnterTerminal: function () { + var $action = $(this.getDOMNode()).find('.action .terminal'); + $action.css("visibility", "visible"); + }, + handleItemMouseLeaveTerminal: function () { + var $action = $(this.getDOMNode()).find('.action .terminal'); + $action.css("visibility", "hidden"); + }, render: function () { var self = this; @@ -544,17 +569,17 @@ var ContainerDetails = React.createClass({
    -
    - - Run +
    + + Run
    -
    - - Restart +
    + + Restart
    -
    - - Terminal +
    + + Terminal
    diff --git a/src/ContainerHome.react.js b/src/ContainerHome.react.js index 8f3a2a7304..673fc3b954 100644 --- a/src/ContainerHome.react.js +++ b/src/ContainerHome.react.js @@ -2,8 +2,25 @@ var $ = require('jquery'); var React = require('react/addons'); var ContainerHome = React.createClass({ + handleResize: function () { + $('.web-preview').height(window.innerHeight - 240); + $('.mini-logs').height(window.innerHeight / 2 - 100); + $('.folders').height(window.innerHeight / 2 - 150); + }, + componentDidMount: function() { + $('.web-preview').height(window.innerHeight - 240); + $('.mini-logs').height(window.innerHeight / 2 - 100); + $('.folders').height(window.innerHeight / 2 - 150); + window.addEventListener('resize', this.handleResize); + }, + componentWillUnmount: function() { + window.removeEventListener('resize', this.handleResize); + }, componentDidUpdate: function () { // Scroll logs to bottom + $('.web-preview').height(window.innerHeight - 240); + $('.mini-logs').height(window.innerHeight / 2 - 100); + $('.folders').height(window.innerHeight / 2 - 150); var parent = $('.mini-logs'); if (parent.length) { if (parent.scrollTop() >= this._oldHeight) { @@ -17,18 +34,33 @@ var ContainerHome = React.createClass({ var preview; if (this.props.defaultPort) { preview = ( - +
    +

    Web Preview

    +
    + +
    +
    ); } return (
    -

    Web Preview

    -
    +
    {preview}
    -
    - {this.props.logs} +
    +
    +

    Logs

    +
    + {this.props.logs} +
    +
    +
    +

    Edit Files

    +
    +

    Buncha folders

    +
    +
    diff --git a/styles/containers.less b/styles/containers.less index 11afe4eeb8..8336abd233 100644 --- a/styles/containers.less +++ b/styles/containers.less @@ -288,12 +288,6 @@ .btn-delete { font-size: 24px; color: white; - opacity: 0.8; - transition: all 0.25s; - &:hover { - opacity: 1; - color: white; - } } .state-new { .at2x('container-white.png', 20px, 20px); @@ -367,10 +361,6 @@ .btn-delete { font-size: 24px; color: @gray-lighter; - transition: all 0.25s; - &:hover { - color: @brand-action; - } } } @@ -510,31 +500,30 @@ .details-header-actions { flex: 1 auto; text-align: left; - margin-top: -5px; + margin-top: -12px; .action { display: inline-block; .action-icon { - &.icon:before { - text-align: center; - } color: @gray-normal; font-size: 30px; - margin-right: 30px; - transition: all 0.25s; - &:hover { - color: @brand-action; - /*background: linear-gradient(-180deg, darken(#24B8EB, 10%) 4%, darken(#24A3EB, 10%) 100%); - -webkit-background-clip: text; - -webkit-text-fill-color: transparent;*/ - } + margin-right: 20px; } .btn-label { position: relative; - top: -9px; + top: 0px; display: block; color: @brand-action; font-size: 10px; - display: none; + &.run { + left: 8px; + } + &.restart { + left: 1px; + } + &.terminal { + left: -2px; + } + visibility: hidden; } } } @@ -543,7 +532,7 @@ flex: 1 auto; text-align: right; margin-right: 3px; - margin-top: 6px; + margin-top: 3px; .tab { margin-left: 16px; padding: 6px 10px; @@ -635,27 +624,58 @@ background-color: #FFF; &.home { background-color: #F9F9F9; - flex: 1; - .widget { - border-radius: 4px; - border: 1px solid @gray-lightest; - &.web-preview { - iframe { - border: 0; - border-radius: 4px; + .content { + display: flex; + flex: 1 auto; + flex-direction: row; + padding: 10px 27px; + .left { + width: 60%; + flex-direction: column; + .web-preview { + margin-right: 30px; + .widget { + background-color: white; + width: 100%; + height: 100%; + border-radius: 4px; + border: 1px solid @gray-lightest; + iframe { + border: 0; + border-radius: 4px; + width: 100%; + height: 100%; + } + } } } - &.mini-logs { - background-color: @gray-darkest; - color: @gray-lightest; - padding: 10px; - width: 300px; - height: 300px; - overflow: hidden; - font-family: Menlo; - font-size: 8px; - p { - margin-bottom: 5px; + .right { + width: 40%; + flex-direction: column; + .mini-logs { + margin-bottom: 50px; + .widget { + border-radius: 4px; + border: 1px solid @gray-lightest; + background-color: @gray-darkest; + color: @gray-lightest; + height: 100%; + padding: 10px; + overflow: scroll; + font-family: Menlo; + font-size: 8px; + white-space: pre-wrap; + p { + margin-bottom: 0px; + } + } + } + .folders { + .widget { + background-color: white; + border-radius: 4px; + border: 1px solid @gray-lightest; + } } } } @@ -669,7 +689,7 @@ color: @gray-lightest; white-space: pre-wrap; p { - margin-bottom: 8px; + margin-bottom: 0px; } } .settings { diff --git a/styles/theme.less b/styles/theme.less index b9fb909e2d..132faa7545 100644 --- a/styles/theme.less +++ b/styles/theme.less @@ -122,7 +122,7 @@ input[type="text"] { background-color: transparent; color: @gray-normal; border: 1px solid @gray-normal; - border-radius: 25px; + border-radius: 40px; box-shadow: none; font-weight: 400; text-shadow: none; @@ -173,6 +173,7 @@ input[type="text"] { &.only-icon { padding: 6px 7px 6px 7px; &.small { + width: 22px; padding: 2px 5px 3px 5px; } } From 79b9cf3bc1060b9b85cfc3f4625c84b7e1de9207 Mon Sep 17 00:00:00 2001 From: Sean Li Date: Thu, 5 Feb 2015 11:47:27 -0800 Subject: [PATCH 17/35] Folder widget and recommended images. --- images/folder.png | Bin 0 -> 734 bytes images/folder@2x.png | Bin 0 -> 1620 bytes images/loading.png | Bin 572 -> 807 bytes images/loading@2x.png | Bin 1397 -> 1703 bytes src/ContainerDetails.react.js | 2 +- src/ContainerHome.react.js | 20 +++++++++++++++++++- src/ContainerStore.js | 13 +++++++------ src/NewContainer.react.js | 1 + styles/containers.less | 12 ++++++++++++ 9 files changed, 40 insertions(+), 8 deletions(-) create mode 100644 images/folder.png create mode 100644 images/folder@2x.png diff --git a/images/folder.png b/images/folder.png new file mode 100644 index 0000000000000000000000000000000000000000..4d0eb553ffd0d136709b84309822c438229d4667 GIT binary patch literal 734 zcmV<40wMj0P)Px%m`OxIRA>e5TFr_RK@k3`emVJf=!3R*>^$~mp zukKYZ;ze*>WMvUS53=NMdV1RGNwWDNn@MI9>>Z{Fndx*_bya;;l_6gUgYoi$jJ>aRS2x72)F9_ZhUJT+>C8L9 z0Z6*|nOHpDxk(>qZu*ZO(%zwK3c_b05oflXB{~L751*n0TTgD&X*n(HkrGni#zma- zW|=M!#kki~c(EQc%WG8`xZcLnvaBjjQ*b@*?0<6`tn)3WZmX=Wi^ypf=5jgNZqg60 zhxU)$7N_WeW2;s%bOW#{M{Py=mbQr-hm`ok&GPxPCcUE9NA95}yvG1VfAP&_cwPE{ z00e{rxStqqm=9D#K>6PCyJOK#Cv(+1N(HTS7>wMn>8S908p!bz3RIU4RV)eDu1f8C zxT|^=^sC1Xwo10p(q^nr&<8P564$vP)$!jhI-&ut!%B@)19UnDqQwoNs-w&GG3P<7 z8g5tLL2ja{%fGZLR)m8D6p-A>$DgpPk(p;+R6j+}T&?I$jo@VmwnnfRq3>=On&2!e0ayBJm&esnnL-~I(m-{Dt<{{7>qdFB+xPk^Wt|tz2Ms}Qr z&0SygtuN?9be@XYYby#Ws~NHoxk~~<2}vh5P22iPv@!eeMV%XQ`(ENa2dA|yx^G%; z-kd3VSd(QU!}mONPd~IbBOTqc#vl``_*2QeQHIef)FYwf zHn*+i4k6^s?eT9sFFxPTyYJgiJlfjy2t*tL0KgG*Go$N=_CMq%AJ5?`O9lxY3Jkh# zY5>r>V6yivAeLz92FdtOanD|{lG+x7Nu&?tikIP4>J?8<|10rw zq^s1e+8b-XPM+VHrP4C_}|yUcz*ZmM{oo|@6w9#2vWlD{x+*Qdu#W46W_u2U@(a&Gj*}d z<>OU4qPA-7)s~y$(6d2p*(& zNH~)-Z{R^eD`4I0ZB-pwpN(Bs6AgDpciQH@M8}b+L!jnW@JwrcCbYaJv|9tCt?j})0mAV>iS!up4$e!E)}@p zv?uist4mUBPHJ*8WG=qY4e602weLvzRl)r>;n?mmb^i;vs0wM`#5^6|d7{5E@GFg9 z#ia|`FzV^3P2?XM|9W#%LY9&vb5PH+m((0?ix~qSp&eu=j_|neNbcTP5WQ2ljwo;9 zl_w{|7dGRKSGhIvw_TG~8qUEX!y zt@E1o{3ClR(V79E-|ay#5o)TNX4ac3;+%h~@R7-uLUQv@jrDKW#;HFSsR) zAl%CE9qXy@Tf&*7#)xvPbvOEAUR>cp4ANn}>`k*|y^g9Pf#7ixwIfe!syStyo?ekt zkyAP+`kE^Aq*-U!6T?!_HZHMqJ$W*5fMG9AF;AiLrUfwD-Lvi=bx)uO;~NSqBblph z_tyxjF#{48rSz>pZB&+9o!fYw_20Ouzdm4yVCrI<;yhyi=ag{@m1G-5d`2>N{DtTI zg+I0!&@>blx`YKF*v}$wq6H52rA!Vcgtk2VHj{!XA(fe~O!&*YX(D>n6sW@s+u%N! z^W&JE74duQhn(`tkG$jtPS@XeUg7Z%(~Tj(Ms_H$ZKA1P0p%WF7R8a?lvrXL)o}s?a?2%(*^~m$W#}9bw5V#a9eB>tl^dF? zguPPE;hNC`kwal>pE+>1D5Z&@qv&_l-a%6T$HxmFTle`iS;U<{8*MuS&dZm^NHk{7 z>wp=>VM}?zPzed!43d!Gp4g0{z>QpjxuU(phFPcr3P-cWzqHpQon#h0o8Wk+1t zXy4Zeh(H+bDBND6x%4gr=0&ECeX51djR|KjPeWpi(OAe5BC3%DB zdynmi3Psq+K7)p=mVoH@85-?@-Yi_5FvDJ1(V|Bn@oH=5D@`21qu@AEE~Zh@iCba! z^O^Rw^D~#B>SY(dcXO>y#r{0|#X3?~P_Vr4!SN2R=RC1>bWkG}VRf#CeAaTNH^qJ0 zfl*w8{Lw8q7xpB~Ns~61?f7E7#%6|xcPO-bsp#p%s}SZmd=95QbcuyyO#Az87cwG} zD0ESG{FCHccf{DpT(6oNs^Ph>_2xZB4YNP3bUF16*C&)~1&rw918|OJCqQDRbv$ig iV|bBauScFkfwTH>s!#JZGA#Kp6M(s~wGqt#AN?OJaQ3bM literal 0 HcmV?d00001 diff --git a/images/loading.png b/images/loading.png index 6217c07530aa0d1ea0544846ff3536dac6439ab9..6d8e97593889a7b030b0a4547d99dbb1319c24e4 100644 GIT binary patch literal 807 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 + ); } else if (this.state.page === this.PAGE_LOGS) { body = ( diff --git a/src/ContainerHome.react.js b/src/ContainerHome.react.js index 673fc3b954..376c9a6c29 100644 --- a/src/ContainerHome.react.js +++ b/src/ContainerHome.react.js @@ -1,5 +1,8 @@ +var _ = require('underscore'); var $ = require('jquery'); var React = require('react/addons'); +var RetinaImage = require('react-retina-image'); +var path = require('path'); var ContainerHome = React.createClass({ handleResize: function () { @@ -42,6 +45,21 @@ var ContainerHome = React.createClass({
    ); } + console.log(this.props.container.Volumes); + var folders = _.map(this.props.container.Volumes, function (val, key) { + var firstFolder = key.split(path.sep)[1]; + if (!val || val.indexOf(process.env.HOME) === -1) { + return; + } else { + return ( +
    + +
    {firstFolder}
    +
    + ); + } + + }); return (
    @@ -58,7 +76,7 @@ var ContainerHome = React.createClass({

    Edit Files

    -

    Buncha folders

    + {folders}
    diff --git a/src/ContainerStore.js b/src/ContainerStore.js index 7e3ad1020a..f0ef8f1526 100644 --- a/src/ContainerStore.js +++ b/src/ContainerStore.js @@ -316,18 +316,19 @@ var ContainerStore = assign(EventEmitter.prototype, { return; } $.ajax({ - url: 'https://kitematic.com/recommended.json', + url: 'https://kitematic.com/recommended/recommended.json', cache: false, dataType: 'json', success: function (res) { var recommended = res.recommended; - async.map(recommended, function (repository, callback) { - $.get('https://registry.hub.docker.com/v1/search?q=' + repository, function (data) { + async.map(recommended, function (rec, callback) { + $.get('https://registry.hub.docker.com/v1/search?q=' + rec.repo, function (data) { console.log(data); var results = data.results; - callback(null, _.find(results, function (r) { - return r.name === repository; - })); + var result = _.find(results, function (r) { + return r.name === rec.repo; + }); + callback(null, _.extend(result, rec)); }); }, function (err, results) { _recommended = results.filter(function(r) { return !!r; }); diff --git a/src/NewContainer.react.js b/src/NewContainer.react.js index 8f024f794d..93b02c85c7 100644 --- a/src/NewContainer.react.js +++ b/src/NewContainer.react.js @@ -118,6 +118,7 @@ var NewContainer = React.createClass({ return (
    +
    diff --git a/styles/containers.less b/styles/containers.less index 8336abd233..5b5ff9800c 100644 --- a/styles/containers.less +++ b/styles/containers.less @@ -672,9 +672,21 @@ } .folders { .widget { + padding: 20px 10px; background-color: white; border-radius: 4px; border: 1px solid @gray-lightest; + display: flex; + .folder { + width: 100px; + img { + display: block; + margin: 0 auto; + } + .text { + text-align: center; + } + } } } } From b426c802f496902b03570d907ae3a738bbadbc07 Mon Sep 17 00:00:00 2001 From: Jeffrey Morgan Date: Thu, 5 Feb 2015 23:14:16 -0500 Subject: [PATCH 18/35] Removing some log statements --- package.json | 1 + src/ContainerHome.react.js | 2 +- src/ContainerList.react.js | 1 - src/ContainerStore.js | 1 - styles/containers.less | 7 ++++++- 5 files changed, 8 insertions(+), 4 deletions(-) diff --git a/package.json b/package.json index 63c9d6160d..77ac72a68c 100644 --- a/package.json +++ b/package.json @@ -45,6 +45,7 @@ "bugsnag-js": "git+https://git@github.com/bugsnag/bugsnag-js", "dockerode": "2.0.4", "exec": "0.1.2", + "html2canvas": "^0.5.0-alpha2", "jquery": "^2.1.3", "minimist": "^1.1.0", "node-uuid": "1.4.1", diff --git a/src/ContainerHome.react.js b/src/ContainerHome.react.js index 376c9a6c29..2f7393e693 100644 --- a/src/ContainerHome.react.js +++ b/src/ContainerHome.react.js @@ -40,7 +40,7 @@ var ContainerHome = React.createClass({

    Web Preview

    - +
    ); diff --git a/src/ContainerList.react.js b/src/ContainerList.react.js index 69f1be02c8..7998ab347d 100644 --- a/src/ContainerList.react.js +++ b/src/ContainerList.react.js @@ -9,7 +9,6 @@ var ContainerList = React.createClass({ render: function () { var self = this; var containers = this.props.containers.map(function (container) { - console.log(container); return ( ); diff --git a/src/ContainerStore.js b/src/ContainerStore.js index 772be8a535..865ab765c6 100644 --- a/src/ContainerStore.js +++ b/src/ContainerStore.js @@ -323,7 +323,6 @@ var ContainerStore = assign(EventEmitter.prototype, { var recommended = res.repos; async.map(recommended, function (rec, callback) { $.get('https://registry.hub.docker.com/v1/search?q=' + rec.repo, function (data) { - console.log(data); var results = data.results; var result = _.find(results, function (r) { return r.name === rec.repo; diff --git a/styles/containers.less b/styles/containers.less index 5b5ff9800c..052b3d5c40 100644 --- a/styles/containers.less +++ b/styles/containers.less @@ -28,9 +28,14 @@ .image-item { display: flex; .logo { + flex: 1 auto; min-width: 90px; - height: 100%; background-color: @brand-action; + justify-content: center; + text-align: center; + img { + margin-top: 15px; + } } .card { padding: 10px 20px 10px 20px; From aba7590ee3b800e0541a7f0ebb0c92a38c773d02 Mon Sep 17 00:00:00 2001 From: Jeffrey Morgan Date: Thu, 5 Feb 2015 23:32:36 -0500 Subject: [PATCH 19/35] Radial progress for download --- src/ContainerDetails.react.js | 3 ++- src/ContainerHome.react.js | 1 - 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/ContainerDetails.react.js b/src/ContainerDetails.react.js index 18dd5a239e..39183fc230 100644 --- a/src/ContainerDetails.react.js +++ b/src/ContainerDetails.react.js @@ -15,6 +15,7 @@ var ProgressBar = require('react-bootstrap/ProgressBar'); var ContainerDetailsHeader = require('./ContainerDetailsHeader.react'); var ContainerHome = require('./ContainerHome.react'); var RetinaImage = require('react-retina-image'); +var Radial = require('./Radial.react'); var ContainerDetails = React.createClass({ mixins: [Router.State, Router.Navigation], @@ -418,7 +419,7 @@ var ContainerDetails = React.createClass({ body = (

    Downloading

    - +
    ); } diff --git a/src/ContainerHome.react.js b/src/ContainerHome.react.js index 2f7393e693..a5660cee25 100644 --- a/src/ContainerHome.react.js +++ b/src/ContainerHome.react.js @@ -58,7 +58,6 @@ var ContainerHome = React.createClass({
    ); } - }); return (
    From ffb2ade67c30d30bcce66b254e481b8dcc34a1ac Mon Sep 17 00:00:00 2001 From: Sean Li Date: Thu, 5 Feb 2015 21:41:16 -0800 Subject: [PATCH 20/35] Improved container home page. --- src/ContainerHome.react.js | 24 +++++++++++-- styles/containers.less | 70 ++++++++++++++++++++++++++++++++++++++ 2 files changed, 91 insertions(+), 3 deletions(-) diff --git a/src/ContainerHome.react.js b/src/ContainerHome.react.js index a5660cee25..52d930a802 100644 --- a/src/ContainerHome.react.js +++ b/src/ContainerHome.react.js @@ -3,6 +3,7 @@ var $ = require('jquery'); var React = require('react/addons'); var RetinaImage = require('react-retina-image'); var path = require('path'); +var exec = require('exec'); var ContainerHome = React.createClass({ handleResize: function () { @@ -33,6 +34,18 @@ var ContainerHome = React.createClass({ this._oldHeight = parent[0].scrollHeight - parent.height(); } }, + handleClickFolder: function (path) { + exec(['open', path], function (err) { + if (err) { throw err; } + }); + }, + handleClickPreview: function () { + if (this.props.defaultPort) { + exec(['open', this.props.ports[this.props.defaultPort].url], function (err) { + if (err) { throw err; } + }); + } + }, render: function () { var preview; if (this.props.defaultPort) { @@ -40,19 +53,22 @@ var ContainerHome = React.createClass({

    Web Preview

    - + +
    Open in Browser
    +
    Not showing correctly?
    ); } console.log(this.props.container.Volumes); - var folders = _.map(this.props.container.Volumes, function (val, key) { + var self = this; + var folders = _.map(self.props.container.Volumes, function (val, key) { var firstFolder = key.split(path.sep)[1]; if (!val || val.indexOf(process.env.HOME) === -1) { return; } else { return ( -
    +
    {firstFolder}
    @@ -70,6 +86,7 @@ var ContainerHome = React.createClass({

    Logs

    {this.props.logs} +
    Full Logs
    @@ -77,6 +94,7 @@ var ContainerHome = React.createClass({
    {folders}
    +
    Change Folders
    diff --git a/styles/containers.less b/styles/containers.less index 052b3d5c40..f74a8b113a 100644 --- a/styles/containers.less +++ b/styles/containers.less @@ -629,6 +629,7 @@ background-color: #FFF; &.home { background-color: #F9F9F9; + overflow: hidden; .content { display: flex; flex: 1 auto; @@ -639,17 +640,54 @@ flex-direction: column; .web-preview { margin-right: 30px; + .subtext { + text-align: right; + color: @gray-lightest; + margin-top: 2px; + } .widget { background-color: white; width: 100%; height: 100%; border-radius: 4px; border: 1px solid @gray-lightest; + position: relative; iframe { border: 0; border-radius: 4px; + /*width: 100%; + height: 100%;*/ + position: relative; + top: -50%; + left: -50%; + width: 200%; + height: 200%; + transform: scale(0.5); + } + .iframe-overlay { + position: absolute; + top: 0; + left: 0; width: 100%; height: 100%; + z-index: 100; + color: transparent; + transition: all 0.25s; + .icon { + margin-top: 40%; + display: block; + font-size: 60px; + text-align: center; + } + .text { + font-size: 20px; + text-align: center; + } + &:hover { + color: white; + background-color: @gray-darkest; + opacity: 0.75; + } } } } @@ -660,6 +698,7 @@ .mini-logs { margin-bottom: 50px; .widget { + position: relative; border-radius: 4px; border: 1px solid @gray-lightest; background-color: @gray-darkest; @@ -673,9 +712,40 @@ p { margin-bottom: 0px; } + .mini-logs-overlay { + position: absolute; + top: 0; + left: 0; + width: 100%; + height: 100%; + z-index: 100; + color: transparent; + transition: all 0.25s; + .icon { + margin-top: 25%; + display: block; + font-size: 60px; + text-align: center; + } + .text { + font-family: "Helvetica Neue", Helvetica, Arial, "Lucida Grande", sans-serif; + font-size: 20px; + text-align: center; + } + &:hover { + color: white; + background-color: @gray-darkest; + opacity: 0.75; + } + } } } .folders { + .subtext { + text-align: right; + color: @gray-lightest; + margin-top: 2px; + } .widget { padding: 20px 10px; background-color: white; From a14469e8e5f7705ea80c63f49c2d2087aa6666e8 Mon Sep 17 00:00:00 2001 From: Sean Li Date: Thu, 5 Feb 2015 21:44:17 -0800 Subject: [PATCH 21/35] Minor UI tweaks on mini logs. --- src/ContainerHome.react.js | 2 +- styles/containers.less | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/ContainerHome.react.js b/src/ContainerHome.react.js index 52d930a802..72eae2ec0d 100644 --- a/src/ContainerHome.react.js +++ b/src/ContainerHome.react.js @@ -86,7 +86,7 @@ var ContainerHome = React.createClass({

    Logs

    {this.props.logs} -
    Full Logs
    +
    View Logs
    diff --git a/styles/containers.less b/styles/containers.less index f74a8b113a..1609bb0fd2 100644 --- a/styles/containers.less +++ b/styles/containers.less @@ -705,7 +705,7 @@ color: @gray-lightest; height: 100%; padding: 10px; - overflow: scroll; + overflow: hidden; font-family: Menlo; font-size: 8px; white-space: pre-wrap; From 459ca9c6e53c1aef328c59016640b006001956ba Mon Sep 17 00:00:00 2001 From: Sean Li Date: Thu, 5 Feb 2015 21:55:47 -0800 Subject: [PATCH 22/35] Restyle. --- src/ContainerDetails.react.js | 3 +-- src/NewContainer.react.js | 1 + styles/containers.less | 8 +++++++- styles/theme.less | 5 +++++ 4 files changed, 14 insertions(+), 3 deletions(-) diff --git a/src/ContainerDetails.react.js b/src/ContainerDetails.react.js index 39183fc230..900ceb04b5 100644 --- a/src/ContainerDetails.react.js +++ b/src/ContainerDetails.react.js @@ -11,7 +11,6 @@ var dialog = remote.require('dialog'); var ContainerStore = require('./ContainerStore'); var ContainerUtil = require('./ContainerUtil'); var boot2docker = require('./Boot2Docker'); -var ProgressBar = require('react-bootstrap/ProgressBar'); var ContainerDetailsHeader = require('./ContainerDetailsHeader.react'); var ContainerHome = require('./ContainerHome.react'); var RetinaImage = require('react-retina-image'); @@ -418,7 +417,7 @@ var ContainerDetails = React.createClass({ if (this.state.progress) { body = (
    -

    Downloading

    +

    Downloading

    ); diff --git a/src/NewContainer.react.js b/src/NewContainer.react.js index 3fbe6ac05c..671b8028fc 100644 --- a/src/NewContainer.react.js +++ b/src/NewContainer.react.js @@ -77,6 +77,7 @@ var NewContainer = React.createClass({ if (err) { throw err; } + $(document.body).find('.new-container-item').parent().fadeOut(); }.bind(this)); }, handleDropdownClick: function (name) { diff --git a/styles/containers.less b/styles/containers.less index 1609bb0fd2..30dca5f810 100644 --- a/styles/containers.less +++ b/styles/containers.less @@ -585,6 +585,9 @@ &.stopped { color: @gray-lighter; } + &.downloading { + color: @brand-action; + } } /*.details-header-actions { @@ -618,9 +621,12 @@ } .details-progress { - margin: 26% auto 0; + margin: 20% auto 0; text-align: center; width: 300px; + h2 { + margin-bottom: 20px; + } } .details-panel { diff --git a/styles/theme.less b/styles/theme.less index 132faa7545..2a404974b3 100644 --- a/styles/theme.less +++ b/styles/theme.less @@ -5,6 +5,11 @@ @import "bootstrap/variables.less"; @import "bootstrap/mixins.less"; +h2 { + font-size: 18px; + color: @gray-normal; +} + h3 { font-size: 14px; color: @gray-darkest; From 8c66ff9b79e6feb2a17d3ea30bb1d4661e3dd0fb Mon Sep 17 00:00:00 2001 From: Sean Li Date: Thu, 5 Feb 2015 22:07:26 -0800 Subject: [PATCH 23/35] Added KI logo. --- images/logo.png | Bin 0 -> 571 bytes images/logo@2x.png | Bin 0 -> 1039 bytes src/Header.react.js | 3 +++ styles/header.less | 8 ++++++++ 4 files changed, 11 insertions(+) create mode 100644 images/logo.png create mode 100644 images/logo@2x.png diff --git a/images/logo.png b/images/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..e7817078cd41fa115c4713a9dc0d51b6527c4bc0 GIT binary patch literal 571 zcmV-B0>u4^P)Px$^+`lQR5%fRRJ%$;K@i=&hFmnhKm`rzHJ}n3{~?V^6dO^n5y93U5F51-#6k=8 z8^lJzR;(0+fW*c}j9j92f`UbSBs-o-+_=k)8QAR1nX@M|likQnE_We_hQzN)rRMr$ zu|p2;eSeW0XC1EmP4o7dC+e>kVoyjpVcPQ+RuN%IZVro=7ALh$}f3M3=RV+i#CXlhs(6OvXiiQs=5wsB_kiTQF?_ zItYhH@Qb(TkOhM+3h{`!ZD>+y$DK>1QVkYX4rWZOTFb>E(d@TUdnOUz8foe1u-fK! z!Kt*%{9uJdJ8{oD8;Zqz3^#3x!nfOY-BFC9+2jN*)z5QvT{J{%mj+a|KwWiAW; zZ$zaxZ4esJ_BhAY+GV_^;6PvBB{(@I8dk2#b;tPq8+ggBDaZ^JY&)4wrz1!O+GTzS z4}1kLp_>CX_@`yB{7Fjf;xFt)W0Px&$w@>(R9FekSWRdXK@^_d{1n847YjhCMR!GLb{2dDTF-QscGkU=5(RZr%-wsHq~Lruu`LlUnHh^G7=8IN>5HE zVeBheT?CVm2Yw9hR1{^q$Pe}|p6!!i97du$L{WS^yIqG#OfM+P#ENblW41!JPr~kA zk})psoO#LUCQRgVdlgk3gpVgU_?SgPPPFOz7Zx+3X+xCK8%&mIH3Li;#x~XOAI9`I z%Oo&O^Ga0HUf6x#jg0hznb&rmNUjOs*x1;nprQ-`T$3oEL;q}-u3vTNNFtFaE}G^s zLg`nh&Doa*m`oTEwQSG@1<%>StA2bNgKv#tlY)&Fb|2+^U>z!Q4cT6jH0;? zki#Nh8Gs$A*n6S?9Q|NK*Y9%lA{G5Z$SLecgXh2ix}HZc`r#up5$rZB8DKh{Zo=vx`XaSQQ~{j$y8=EeDX& zpG91c;_>(*3y!P!Q~bEDybR42y@c#{0Iujt0R*_SExMjx9oZ5JeFnO>t9`-mZoC$> z3T&1d^a`tYb(|+a6huB64zufhWutUGXm+KSCG-S{g7{X6tkio_lEi`#!24`AgvxNG zmxc8PC`gWbTneVNz-*~eC^5Wdw()!#d_JinS~EZ^sRYgN;{u_QXJuUgmk3!C&8b{Y z1HE0mm38Xs0ysD@@CKLEX=hM-A2hdt=9pa$0?Kl)=9KQc|`v-&GEtT9pP4WN$002ov JPDHLkV1o2B-%S7j literal 0 HcmV?d00001 diff --git a/src/Header.react.js b/src/Header.react.js index e91bf9beaa..69b20baf08 100644 --- a/src/Header.react.js +++ b/src/Header.react.js @@ -1,5 +1,6 @@ var React = require('react/addons'); var remote = require('remote'); +var RetinaImage = require('react-retina-image'); var Header = React.createClass({ getInitialState: function () { @@ -43,6 +44,7 @@ var Header = React.createClass({
    +
    ); } else { @@ -53,6 +55,7 @@ var Header = React.createClass({
    +
    ); } diff --git a/styles/header.less b/styles/header.less index a55c503aab..58337f4a67 100644 --- a/styles/header.less +++ b/styles/header.less @@ -13,6 +13,14 @@ -webkit-app-region: no-drag; } + .logo { + position: relative; + float: right; + top: 10px; + right: 10px; + z-index: 1000; + } + .buttons { display: inline-block; position: relative; From 30fb489eddcbbe5414b6a01bb637fa0b0de27bdd Mon Sep 17 00:00:00 2001 From: Jeffrey Morgan Date: Fri, 6 Feb 2015 12:08:42 -0500 Subject: [PATCH 24/35] Better spinners --- src/ContainerDetails.react.js | 1 - src/ContainerList.react.js | 4 ++-- src/ContainerListItem.react.js | 2 +- src/Containers.react.js | 1 - src/NewContainer.react.js | 43 ++++++++++++++++++---------------- styles/containers.less | 35 ++++++++++++++++++--------- styles/main.less | 1 - styles/radial.less | 5 ++-- 8 files changed, 52 insertions(+), 40 deletions(-) diff --git a/src/ContainerDetails.react.js b/src/ContainerDetails.react.js index 39183fc230..e11f4d2092 100644 --- a/src/ContainerDetails.react.js +++ b/src/ContainerDetails.react.js @@ -418,7 +418,6 @@ var ContainerDetails = React.createClass({ if (this.state.progress) { body = (
    -

    Downloading

    ); diff --git a/src/ContainerList.react.js b/src/ContainerList.react.js index 7998ab347d..082bef2699 100644 --- a/src/ContainerList.react.js +++ b/src/ContainerList.react.js @@ -10,12 +10,12 @@ var ContainerList = React.createClass({ var self = this; var containers = this.props.containers.map(function (container) { return ( - + ); }); return (
      - + {containers}
    ); diff --git a/src/ContainerListItem.react.js b/src/ContainerListItem.react.js index 96baaa8b6e..175def45c8 100644 --- a/src/ContainerListItem.react.js +++ b/src/ContainerListItem.react.js @@ -66,7 +66,7 @@ var ContainerListItem = React.createClass({ } return ( - +
  • {state}
    diff --git a/src/Containers.react.js b/src/Containers.react.js index 81070e7ba2..11b6a3f177 100644 --- a/src/Containers.react.js +++ b/src/Containers.react.js @@ -61,7 +61,6 @@ var Containers = React.createClass({ } }, handleNewContainer: function () { - console.log($(this.getDOMNode()).find('.new-container-item')); $(this.getDOMNode()).find('.new-container-item').parent().fadeIn(); this.transitionTo('new'); }, diff --git a/src/NewContainer.react.js b/src/NewContainer.react.js index 3fbe6ac05c..d6512783ea 100644 --- a/src/NewContainer.react.js +++ b/src/NewContainer.react.js @@ -2,6 +2,7 @@ var $ = require('jquery'); var React = require('react/addons'); var RetinaImage = require('react-retina-image'); var ContainerStore = require('./ContainerStore'); +var Radial = require('./Radial.react'); var assign = require('object-assign'); var NewContainer = React.createClass({ @@ -118,10 +119,16 @@ var NewContainer = React.createClass({ var logoStyle = { backgroundImage: `linear-gradient(-180deg, ${r.gradient_start} 4%, ${r.gradient_end} 100%)` }; + var imgsrc; + if (r.img) { + imgsrc = `https://kitematic.com/recommended/${r.img}`; + } else { + imgsrc = 'https://kitematic.com/recommended/kitematic_html.png'; + } return (
    - +
    @@ -156,9 +163,7 @@ var NewContainer = React.createClass({ } else { results = (
    -

    - No Results -

    +
    ); } @@ -174,24 +179,22 @@ var NewContainer = React.createClass({ }); return (
    -
    -
    -
    -
    - Pick an image to create new container. -
    -
    -
    - -
    - -
    +
    +
    +
    + Pick an image to create new container. +
    +
    +
    + +
    +
    -
    -

    {title}

    - {results} -
    +
    +
    +

    {title}

    + {results}
    diff --git a/styles/containers.less b/styles/containers.less index 052b3d5c40..5fafe40909 100644 --- a/styles/containers.less +++ b/styles/containers.less @@ -23,10 +23,17 @@ display: flex; flex-flow: row wrap; justify-content: flex-start; - margin-top: 20px; + margin-top: 10px; overflow: auto; .image-item { display: flex; + width: 320px; + height: 170px; + border-radius: 4px; + border: 1px solid @gray-lightest; + background-color: white; + margin-right: 20px; + margin-bottom: 20px; .logo { flex: 1 auto; min-width: 90px; @@ -113,22 +120,28 @@ bottom: 0px; } } - width: 320px; - height: 170px; - border-radius: 4px; - border: 1px solid @gray-lightest; - background-color: white; - margin-right: 20px; - margin-bottom: 20px; } } .new-container { + display: flex; + flex: 1 auto; + flex-direction: column; padding: 35px 20px 32px 25px; - .new-container-header { - margin-bottom: 28px; + .results { display: flex; - flex: 1; + flex-direction: column; + flex: 1 auto; + .no-results { + flex: 1 auto; + display: flex; + align-items: center; + } + } + .new-container-header { + margin-bottom: 8px; + display: flex; + flex: 0 auto; .text { flex: 1 auto; width: 50%; diff --git a/styles/main.less b/styles/main.less index 1c23e621c5..55c669b146 100644 --- a/styles/main.less +++ b/styles/main.less @@ -15,7 +15,6 @@ html, body { height: 100%; width: 100%; overflow: hidden; - -webkit-font-smoothing: antialiased; -webkit-user-select: none; font-family: "Helvetica Neue", Helvetica, Arial, "Lucida Grande", sans-serif; diff --git a/styles/radial.less b/styles/radial.less index 4e989d16f8..4f68f23bfc 100644 --- a/styles/radial.less +++ b/styles/radial.less @@ -12,12 +12,12 @@ .radial-progress { &.radial-spinner { - -webkit-animation: rotating 2.4s linear infinite; + -webkit-animation: rotating 1.6s linear infinite; } @circle-size: 140px; @circle-background: #F2F2F2; - @inset-size: 136px; + @inset-size: @circle-size - 4; @inset-color: white; @transition-length: 1s; // @percentage-color: #3FD899; @@ -28,7 +28,6 @@ width: @circle-size; height: @circle-size; - background-color: @circle-background; border-radius: 100%; .circle { .mask, .fill, .shadow { From 925223a47282331468d60e4cdae99a4d83ff53d7 Mon Sep 17 00:00:00 2001 From: Jeffrey Morgan Date: Fri, 6 Feb 2015 12:14:38 -0500 Subject: [PATCH 25/35] add loading after button press --- src/NewContainer.react.js | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/src/NewContainer.react.js b/src/NewContainer.react.js index 5855140cc7..3191ebafe9 100644 --- a/src/NewContainer.react.js +++ b/src/NewContainer.react.js @@ -1,3 +1,4 @@ +var _ = require('underscore'); var $ = require('jquery'); var React = require('react/addons'); var RetinaImage = require('react-retina-image'); @@ -14,9 +15,13 @@ var NewContainer = React.createClass({ loading: false, tags: {}, active: null, + creating: [] }; }, componentDidMount: function () { + this.setState({ + creating: [] + }); this.refs.searchInput.getDOMNode().focus(); ContainerStore.on(ContainerStore.CLIENT_RECOMMENDED_EVENT, this.update); }, @@ -126,6 +131,12 @@ var NewContainer = React.createClass({ } else { imgsrc = 'https://kitematic.com/recommended/kitematic_html.png'; } + var action; + if (_.find(self.state.creating, r.name)) { + action = ; + } else { + action = Create; + } return (
    @@ -148,7 +159,7 @@ var NewContainer = React.createClass({ latest
    - Create + {action}
    From 210582e14c7dace9d0599f9b1902420e6f6f5fa3 Mon Sep 17 00:00:00 2001 From: Jeffrey Morgan Date: Fri, 6 Feb 2015 12:33:01 -0500 Subject: [PATCH 26/35] ui tweaks --- src/ContainerDetails.react.js | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/ContainerDetails.react.js b/src/ContainerDetails.react.js index cbc99e24c5..553ec5ab2e 100644 --- a/src/ContainerDetails.react.js +++ b/src/ContainerDetails.react.js @@ -417,9 +417,17 @@ var ContainerDetails = React.createClass({ if (this.state.progress) { body = (
    +

    Downloading

    ); + } else { + body = ( +
    +

    Connecting

    + +
    + ); } } else { if (this.state.page === this.PAGE_HOME) { From b505f0919d000478f526fa9f117393985ac6fc64 Mon Sep 17 00:00:00 2001 From: Jeffrey Morgan Date: Fri, 6 Feb 2015 12:38:51 -0500 Subject: [PATCH 27/35] Fix release --- browser/main.js | 1 - gulpfile.js | 4 ++-- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/browser/main.js b/browser/main.js index d3a1bf7b2d..4ecb4688c8 100644 --- a/browser/main.js +++ b/browser/main.js @@ -32,7 +32,6 @@ var windowOptions = { }; app.on('activate-with-no-open-windows', function () { - var mainWindow = new BrowserWindow(windowOptions); if (mainWindow) { mainWindow.show(); } diff --git a/gulpfile.js b/gulpfile.js index be42980fb4..44681639be 100644 --- a/gulpfile.js +++ b/gulpfile.js @@ -34,10 +34,10 @@ gulp.task('js', function () { // emit the end event, to properly end the task this.emit('end'); })) - .pipe(sourcemaps.init()) + .pipe(gulpif(options.dev || options.test, sourcemaps.init())) .pipe(react()) .pipe(to5({blacklist: ['regenerator']})) - .pipe(sourcemaps.write('.')) + .pipe(gulpif(options.dev || options.test, sourcemaps.write('.'))) .pipe(gulp.dest((options.dev || options.test) ? './build' : './dist/osx/' + options.filename + '/Contents/Resources/app/build')) .pipe(gulpif(options.dev, livereload())); }); From f9e6fd40b6abf3f650106a24ce7a503ce3e3c394 Mon Sep 17 00:00:00 2001 From: Sean Li Date: Fri, 6 Feb 2015 10:54:33 -0800 Subject: [PATCH 28/35] Fixed a SSL image error. --- src/NewContainer.react.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/NewContainer.react.js b/src/NewContainer.react.js index 3191ebafe9..b8e132dfce 100644 --- a/src/NewContainer.react.js +++ b/src/NewContainer.react.js @@ -127,9 +127,9 @@ var NewContainer = React.createClass({ }; var imgsrc; if (r.img) { - imgsrc = `https://kitematic.com/recommended/${r.img}`; + imgsrc = `http://kitematic.com/recommended/${r.img}`; } else { - imgsrc = 'https://kitematic.com/recommended/kitematic_html.png'; + imgsrc = 'http://kitematic.com/recommended/kitematic_html.png'; } var action; if (_.find(self.state.creating, r.name)) { From a73951e6cbbf6705130a3414dafa3c75ae3d0ce9 Mon Sep 17 00:00:00 2001 From: Sean Li Date: Fri, 6 Feb 2015 13:58:47 -0800 Subject: [PATCH 29/35] Traffic light restyling. --- images/close.png | Bin 243 -> 209 bytes images/close@2x.png | Bin 355 -> 302 bytes images/fullscreen.png | Bin 240 -> 196 bytes images/fullscreen@2x.png | Bin 321 -> 261 bytes images/fullscreenclose.png | Bin 238 -> 193 bytes images/fullscreenclose@2x.png | Bin 0 -> 322 bytes images/minimize.png | Bin 106 -> 101 bytes images/minimize@2x.png | Bin 115 -> 117 bytes styles/header.less | 3 ++- 9 files changed, 2 insertions(+), 1 deletion(-) create mode 100644 images/fullscreenclose@2x.png diff --git a/images/close.png b/images/close.png index 4551a82a0e94eceda65c6fa2e733b16114036723..0f003a7838279edd5cb97bdc1f43517527ed6cf4 100644 GIT binary patch delta 168 zcmV;Z09XI>0nq`FF@K9mL_t&-8J&IL* Wq!WUL;dPb(0000k&!V0r~o9y0Am0D|9=5U z4$KFOLI@_1DIf(PE=bXY2@{fmOt3;^H-Y4F0XH$|gEx>>Ar(>CRB(`ybysi!dw(af6;~0c6|BOAU(H3K zrx=RLWE{6DWFNUoXPPg?L>$FNlq%C+E~|$wW{s&A<^GhxfAaa0{qHCH$>?P0h$1OM>8I$knBEcw% zK78MQPt){C_tEgkn4l}*FbubG9KT%G-N$kKrb2l~!y_Z$Z-4!Rt}d|FHlEwIeMMJb zlU7yL1zjy8kbnx6u4~Vm4wFb{n=tlm0vD*v>Qi6|YpJ?vnxm<+U)yn3Gh7UwVHl2c zXOk?QPMVt0-#3B$8r-IApu2iLc7kU6rHsG@Hs9vC>$-yg56lnE23^fihxL7bD$DZ9 z(bS6qu6p>?sx`wP2zH`Bm^N@3K=8=SSvdA8isIQeCpY=J{1F@O6>L_t(I5o2H&1(b#WBR&JNv$KU+SXeBvsbOSf{Qvjw-@}t9 zPyU1~&xFiDXHT6v^&L>74-*s9W^@b`-vYF(7+nuu1A&VFPna+v^Z)<)DMG4x{y zFf%j%19_K7LoxJY2mq79Us(7NG87nD%rLbu8pA-K1lWZz1^5gFs#ywC2ct0z1lo#X zAV?uDLnlt0cm!q;jK(k!m{`BUB#~(xh9WBgv$178#=N{d2cQ8Mi58>-n5^yrv)eTc flST!o76JghDiUxPTQEGs00000NkvXXu0mjf9%FFa diff --git a/images/fullscreenclose.png b/images/fullscreenclose.png index d3d6543be4ae1143d594d84567f4617c8f21cc1c..8d8fe9ecdf474b4ca4a67b22cc2452749b18c125 100644 GIT binary patch delta 152 zcmV;J0B8U10l@)~F@JkWL_t&-8Dn6;4w%q|F$ACre1SAOvSM5cC4q`!krm@o_#dc9 z28d&Tm<@;-m_Y;kToBH*a3*8 zffyuq4v0|z%#E*sq6>le8xVtRAqYV30r{3F0COvfVgL>i3lXU4GmOUo0000wzLqo$^X=!Qv$Z}W}0u>l> zb93*?&CTV5DaNJnA5eiAGc)s!q@*NXkYcO~|NsC08i-#4<(2sO_~rqf!O8+Oo}Gn- zr3WY|4$=u!aBISZ3GN^^GGLlKdGb%7zzm=Q2Ou2^#4bRL0Y1Q1_xJZ-{qyIKGf?qc zpbD(cfeTKVGUYN*5y-R;7{*}}$jZu+z$Oj=Xe=;iH^RYr00000NkvXXu0mjfJWN+G diff --git a/images/fullscreenclose@2x.png b/images/fullscreenclose@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..5feee7a995c7468d69128bb70b2626c171b8de6d GIT binary patch literal 322 zcmV-I0lof-P)Px#{7FPXR5%gEluHf)K@f(=BVKU;Az0c-oWl`BoREmE6F2}75f`wKSg=5X|Boqp zdLE{`B`W!ts_yzso5J({7?m`iolCRH-_ytY6&#a#vPp~DS|0fTw6%I5H4#40SpY-O z3RslHRLEA5HWknN(niSUBH*1in5bbZq@x5zpw2|XMM#H8Ya%om8#a}}N#lZ?4`~N( z8N4v6Aoj^&?Ev=RYjCz0XV3vXCK0hfZ5~k%mE=3*jLpC@wBuEflf*24$|7Wi(kWOm z(ZWhdhe+4I64G-A6R=_8hxHwbfYLG8nhKNVkjLlI`Agv6mdJ7G796dvo5G>{3BRu< Ue9!K?L;wH)07*qoM6N<$f=)k(`v3p{ literal 0 HcmV?d00001 diff --git a/images/minimize.png b/images/minimize.png index 731b123eb712c91554ef32ef6a9453db6bc7f50d..1057e819c474e523b90529e13dfb86117264f3ba 100644 GIT binary patch delta 57 zcmc~wonUAp@9E+gA|aWaAn~U`@YN9!g|#h*cYbepR6L`=gU>UOVe?BSmZ=Bw92tPX M)78&qol`;+0D!9%ng9R* delta 62 zcmYeznqX+D;_2cTA|aWaAn~U`@X3*;rlvZD)P}=5#npUf1e|DbF7n`FW(YaP%Cc+o R6MhCD@O1TaS?83{1OU$;77_pe diff --git a/images/minimize@2x.png b/images/minimize@2x.png index feb342d58ceb4cfc81c37a65993f3655071abe22..faf94847cacbffd58087432577541bf2d6b061c9 100644 GIT binary patch literal 117 zcmeAS@N?(olHy`uVBq!ia0vp^qChOd!3HFgyvvM%6k~CayA#8@b22Z19DPq0#}Es_ zn$7^V OGI+ZBxvXHEA3ie>T%8$mH-n?+g#ZIX$~6`irH!j4ff^Y+ MUHx3vIVCg!07oGrBLDyZ diff --git a/styles/header.less b/styles/header.less index 58337f4a67..5eaca39d6a 100644 --- a/styles/header.less +++ b/styles/header.less @@ -66,7 +66,8 @@ border-color: #17B230; } &.disabled { - border: 1px solid #E8EEEF; + background-color: #DDDDDD; + border: 1px solid #D3D3D3; } &.enabled:hover { From 47ac7512a4ed6511d9f34d419ac5e6b10f035798 Mon Sep 17 00:00:00 2001 From: Kitematic Date: Fri, 6 Feb 2015 18:10:59 -0500 Subject: [PATCH 30/35] Change run to preview. To reduce the chance of users thinking the run button is to run the container. --- src/ContainerDetails.react.js | 2 +- styles/containers.less | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/ContainerDetails.react.js b/src/ContainerDetails.react.js index 553ec5ab2e..b8d1ed11d2 100644 --- a/src/ContainerDetails.react.js +++ b/src/ContainerDetails.react.js @@ -578,7 +578,7 @@ var ContainerDetails = React.createClass({
    - Run + Preview
    diff --git a/styles/containers.less b/styles/containers.less index b25da369e6..20c6999fb2 100644 --- a/styles/containers.less +++ b/styles/containers.less @@ -533,7 +533,7 @@ color: @brand-action; font-size: 10px; &.run { - left: 8px; + left: -1px; } &.restart { left: 1px; From 0addb8e88067f996273255d1d8ec09ce955908c8 Mon Sep 17 00:00:00 2001 From: Sean Li Date: Fri, 6 Feb 2015 15:28:27 -0800 Subject: [PATCH 31/35] Adjusted margins. --- styles/containers.less | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/styles/containers.less b/styles/containers.less index 20c6999fb2..282a51665d 100644 --- a/styles/containers.less +++ b/styles/containers.less @@ -139,7 +139,7 @@ } } .new-container-header { - margin-bottom: 8px; + margin-bottom: 18px; display: flex; flex: 0 auto; .text { From 41e2d08d654d817872084da20d86a99ac2ff4a0b Mon Sep 17 00:00:00 2001 From: Sean Li Date: Fri, 6 Feb 2015 16:31:38 -0800 Subject: [PATCH 32/35] Changed preview back to run. --- src/ContainerDetails.react.js | 2 +- styles/containers.less | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/ContainerDetails.react.js b/src/ContainerDetails.react.js index b8d1ed11d2..553ec5ab2e 100644 --- a/src/ContainerDetails.react.js +++ b/src/ContainerDetails.react.js @@ -578,7 +578,7 @@ var ContainerDetails = React.createClass({
    - Preview + Run
    diff --git a/styles/containers.less b/styles/containers.less index 282a51665d..0c310ce5df 100644 --- a/styles/containers.less +++ b/styles/containers.less @@ -533,7 +533,7 @@ color: @brand-action; font-size: 10px; &.run { - left: -1px; + left: 8px; } &.restart { left: 1px; From ae665d4a440b69626585342df56bc609f561fa1e Mon Sep 17 00:00:00 2001 From: Sean Li Date: Mon, 9 Feb 2015 09:37:25 -0800 Subject: [PATCH 33/35] Changed wording. --- src/ContainerDetails.react.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/ContainerDetails.react.js b/src/ContainerDetails.react.js index 553ec5ab2e..fd5b186368 100644 --- a/src/ContainerDetails.react.js +++ b/src/ContainerDetails.react.js @@ -417,14 +417,14 @@ var ContainerDetails = React.createClass({ if (this.state.progress) { body = (
    -

    Downloading

    +

    Downloading Image

    ); } else { body = (
    -

    Connecting

    +

    Connecting to Docker Hub

    ); From 60fa865bc61a2f2e3e91fbd6dfb9dfa5fa8b5eb0 Mon Sep 17 00:00:00 2001 From: Sean Li Date: Mon, 9 Feb 2015 15:29:04 -0800 Subject: [PATCH 34/35] Polished installation steps. --- images/boot2docker.png | Bin 36143 -> 33828 bytes images/boot2docker@2x.png | Bin 91354 -> 85142 bytes images/install-error.png | Bin 0 -> 35134 bytes images/install-error@2x.png | Bin 0 -> 89906 bytes images/virtualbox.png | Bin 37594 -> 36086 bytes images/virtualbox@2x.png | Bin 96601 -> 93452 bytes src/Containers.react.js | 2 +- src/Setup.react.js | 39 ++++++++++++++++++++++++++++-------- styles/setup.less | 20 ++++++++++++++---- 9 files changed, 48 insertions(+), 13 deletions(-) create mode 100644 images/install-error.png create mode 100644 images/install-error@2x.png diff --git a/images/boot2docker.png b/images/boot2docker.png index 947896617d7bf2178f1f0bc7ba9df4c2d8a4d1c7..8f4282e7fbe395d0e25a9a11aac86109a1af1ba7 100644 GIT binary patch literal 33828 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

    4Jy6ygZzdjMBl8u%wfNB9Y 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 z z@FG&f07r|$2LIDr!dZYH52pEw2ZOJpCDc@DFRg&4`fB#-7=+EkqS5#0TXB-!Nj%0Dq&P= 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 LWq7mdx?R-&JSS$} diff --git a/images/install-error.png b/images/install-error.png new file mode 100644 index 0000000000000000000000000000000000000000..15f6dca227eb8ec9aacfe4ce5711f3cae31a1dc6 GIT binary patch literal 35134 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

    =MGO46L_p9}Shk>P`!b*Xq zlz*V~FJp(72WS-E!FH=NJxCbu^r(wZOWlYxucnr24Hr!MWTDKcH`WVKU(@pHPqK_N z)h>-ZL!jUx%~QS?v^=0^ONU;PYs-e%$1Gb7ev{b~8DAkwyZ=li`TDu#SO|l7 z`vW~oAAECFLlTiXPGTIJh-F!=b~|VzK|$#=acj12sR2xH5qA;7sU5in_OQonD_y-I zt;7D~9fthb?B>?9u=5Xdb}n(P*oRlT$kvt6(4TpJ&9}R2f@Zp9KLG&OPr|!7H%%36 zztn8!vZSqSqL^3JN^v$_y4z$fcv-LgVw4fvtNccoQWVgNLhwmm-_W{gSu4ggT`fw6 zcz=l>`Y*}AP4&^1LxbNLZt(PpqB!J?5em^^j!G>!=`(G|1V6)8-W>S^MONfAEhbA| z$I?Y~Eyz{^qawa|MPY@i{6g-^A8ki!+Di%bp%HksT-NSC8i){TbAnO+@i(~c!Zcwm zTaBgVkxbXum3rQ~e+;(jx^WX7n*;r`!urJ1uEnlzoi2^$21@%!9%#IbFVBq1pAzn{ zuJC#N1oOvP3RqmFPs~2Z6cE!nxmFudi}$}$E_}6eryA}sy5w%6yTx$CU4Cau z4Y0SonX%V4#cIv}?4_kCOAUA9y+c1*>_o#3f+U2WSaIxz|4J}_(yz9>+M)Y7qKRc9 zU4L2{C5nUu2|y^&K~2=BLDRbwmttR*1p#(!rUkvpLMs{?#zBIKB6h( z@?JLixwn%EcFxGzoZTfigqx1MwBb@1t;-_~2BDjUJ?9OEttU}N7i+fr%q#FT6wbHz zTApZ*jn}bI5W97m?GiI95ON-l!cE)*VP=WmQk)O!6a!A3c$DJShs4OxE^WKmHL2+s zK?$8XRej%GY-qS`prhRvw#D`HxGZXy(s&snDlK4msB7?y&wT%T&d8WUH&+xN9gB64 z?CdzATJ;jSg7*E60>7Ihb$&DR3Vlg6dN6od1ls7Aon@YU6j_ zf>tP1So}?t!9YK3fX-&V?1YD^2fUpX@F0Mb2w@#qS|nv+5yPPVuDfCZzi5SyCGO0AIpG&*lv7~^DgYaK?Q@2reY8mg+GW2x z9I#p^oZst-8a%PbD{6U1gSLQ@e==g!E~kv&@XE&pE6zF)R7xqd@z_`^65)o@_UkK* zSeHzNN$&#s8Y!9_`<1Gl8xGPK)xD`C1QuZfe~jJ=$^a^rh;}iv-=(a(ZF6V9;{Wcv zTYiy>(-P_6WCkI9(hAnENcON{;>OZ<;-5l|b>}B{bj=W}{x@o;(gA(?0WU=+aX-1y z0+sUy5c?6KtTy5J?s@#K=8eaCLdJ4B9tK$8Rx}P`mZ}Ff2;=C{uJ0|WGe`kaCPf1G zmLG&xn7WQnl5LBk)e}=B^K_0ZocZ~;?H?uwzVfWtH)Z(#bxvCAr=ULaw4%V+OFyji zk1yO;Iod8B#Ts9;wDUBdyD(ioNp3>lMExHlT?oV$IwJiKxQ*CmzcX55@iX zP~@MhK8Euds9%o<0Sbc!UuLWlX?f0n_C?O}U{9ZNJDVj>S?@f!0dJ(}q zj3Z(nUdfRio`lOu!91wi4Qf1j8Unktcaj3Ug@FBAdZ}rJt~R!(yyrWqwE5z$;c9jO zK1pn8;id~DVo$VuXOQMppOVta*M zT~NG(L3w{U=|^o>l;OraqW@gSZv&zpR2T#S_Q6YxG)^?KyNCg9I`#gXU-$~R;SJ?k zpe(`%G?%vhN+JW|ctI1{yM0kV?E5cR7)=VOLEye3L5xy#N4z4-G3R&4L<;XZO+aW3 zK_7Vhkb84+&n36%uR!#RG8-)M$%3)_klcy_sjyiPS>u!?7_mTdejJPy*q{=*6t~fYB-tPwYw>|QpmbVY`1R`by zB^1v=k7~a5@xV|zOK}ayZk-+sDYEqW8vexY%TUB19>*v3RwZI)PUNCZ^hU_p|IqY} z@o|0M*I{EfP9}EJ*lcXuX>6ylZ8nW<+h}at#>95=pYQMUJa6a4+1xF+ za-JH0YJ!EB?(3Uez(r1^m#>z}vx!)cv3Z5{L+Dy2&K<-ory!ms*OjkCj#}{ieYXM) z7&W5zya%IVChkwJr$H>g*ZUO4VU!|o_h2t~=4s=e;bB+@ELC3{Ih|utuEX%#rB>98 zr=qHvm7wB+Xk>8xnrh|TCX47qs^7Zm6CqTC^nB5tdO18kOzI|csYD+y)#ZaBZX#e! z6TbET=Pe>4po|3cld3`P<4IZALeK^x*Q*1|3=3MjcLMG6uhOOI?;A?NlFakJ)*&j9 z4R{Rnys+G2v&*r?KPNQ`&!v)*sIr7`*8F**=hHby`xhfB?{@s#@GLfGX?`!L;6W=O z-}dFXE6wjF3qLa~4B;gyVW>H-E@-H|C%{!Gn+jiWdp=Pm;LTz~w=t(Koe7{RvoN_d ze#r5yWT>H<|aPj|j2^ zqX5dWABMGaH6)5hw}>)7wM&}yE_`Ed-vy>+W3fFzyQ4aa(5me4l9bK*t_B2HZjSDn z-yqpwj8RD)YLYQIA_|*@|4gKc5;K!+A5wn9V*SoD+AtMc)G+qert5)Jdrx-bZ!i3F z3qtH`7dsaSeN#7nyJc^vpbk6z?L85N+d5P8xA3uQd_{j6wHea*k!vlax}o4DR$HO& z`Rc(}ML&v40Op$L6Vzqoj3Dl%?tQw%macu0GB#xPXCUE|^?*!|(oOAkyUgcAwB$GZA(gVZk9b2;(AuC2m&KO~Y2x}C-{ z2T7QEaPHDXZ1DUwUJi0B7WJ?swSp(1t|D-vE(D?30he6W3u=HXtdvDTky1495PPdZ zPD_!DCrhGN(YtLrCn40zi7H;jF8;8sP}6&78ML^uznmE4E|SHRPnbre+g35VG;@Dz zw2Cc|-N}-&mTItL!?=+Beg_26>r7dhV|CxKWC}~XolVnrN{nT60FRNqu4+*AAw>-$ z>sh0)cq!>f`>$iTUcHLPNOtFf<8FP&N1laB_-`l@?0eLq6I^H)DC@NE47|AdFom4a z`Io0C>GWykHVAomBnj&rnLJj$5a_MDSn? zsj$XExv2J($2IAV*z+S65x|X+AWXv(IecClY9wv`FSe*AlJr>k`epPM4uknbAvZC3 zazksT1@dz(OJ2(zMpGA@>BrkjL%98y+L;38jgc9yMJAfEV7l_Cw-$$0 z-p;mG7dhnH;Oj9!7Rcp66F7=sZRLa@Ov1{NAax^@N6}}Lgu|qr(ZfSP=boSSyx|b| zlRT?hJhox5VN)3jEv0a4Dtw9J@FycW z9HKG}W8VM3;g|T1$V0XMzKR0xbs}Y;cuBs-4uR9#sM_*l)x=lsN>$^Cf7qS8b8q(u zv>4SuzHBH;C3^9ARhRH;>~|_%(;1~NxW6=1XoJ)0jGS2z{CUyLiEs5z>1{}qk*8e3 zlRrOS5rnnK79)FnRn#UbAoGbLV{oPlp_tH|H{U9pk&1ev-{x-Q36hZWSi@AiXORL$ zQ;S?8e)V}k{eabgZzyREp)bm6=l$3%?zPYJ{S0!Lreh3$4<ZEoNF_goP4JK z&PK?M8wgXHUm8_&W>HR?Po^CnUSNSde>f!1(?YTqw??A+yFeerMStJBRv2(@$JokQ_Q&Wyosh9n`GYpwO?>d_ejItahL=$=?*HrC;IPO>m2Ug)1LamvGz zwP;7t9RJ*B-37ILb(X4X$5$!ll#29Eq7NLYu_M^lRP=w^w3Nb|>iMcscOBXp@E}AE z#uG)5`|;QxM3dz@rw4`oX`s(H$)}M`b{~`>0d^r zkhbB##&hwXw{23S_DMZ_lSa+iwF6~wHGK$O+af@%Wmny5v$i#d4#K%+R?57GdvITu z80MA_69>R&hv7*KCX7tikXRoDUgEmrp$G5Q1SaiTk+>~>V!HkWp6%^Efb&m?r?6J^ z;BDT^vAr7f*PSo>9Xw2QEDEaexv@m4!yHC`f7A(y1hR%|Ca%&^>Ms_T*x)y;1GgQ{ z1clmiQ#&bh`AKPxkL_i6Q74GJKj3lk($t-FOw~Xs6Dc_T&{)ZqX?R!k%+P&b6W8Zv zIj-U3+I*hM5%#vR1&ZU|x*jfiBtt}et4MDahj0u!j*KD%Ng9UhPhLT!^_xSNl9bCs zf?;Wr(tx-&RE2}688XO3{_s=Y_jWk$%giVwYBcG@LB|4O^6Ne!5%F_{rqmh(^_I}yJ3 zF(rG;fXuPF&=X1VL`3iRv6q93Gi6CsKitJNAU6EK&LvC6?85|BXK-nZY=6{=U9qRG zKaN^Ec;jDbNte?qrX6vLu6Df2Va<0BOZ0FojWSclI$-i2MDf8`hr#94vcD`CyERh_ zEhbYIQHEb;TS2UX=-n~@sM5lv}%tHn^C49L>XB~eD{Lkw?)T;1KL`TY!`y9 z=Eh+m`5B!0<;t2L4k$5mJ5!aDu_}H%tnd59}6Pom4+o3-V(A`k*;T18UkuyGC%2qY! zsje_{1c713y%(b@bS;dNd(F*k+~7?V#vy*0;?wls<*1eN!z0o!$sPb2eS*?XiF4(; zdOAKT!mO?#yA@hGujSVMZvpOM^g1Ug5sY4WOfVK#WFd_cSR)MV?`k1CJLlmO`JHuT z8ghBL6nA1SbU%Cy=zk+re+$e6-CZ?5`S&Ut|u5^GeAhv{loXe4~pm&%Qsj%vBEcZ|S5t9y9 zo9jc?H~{t{py)O1+=>QF+8N=fGs!Tl_g;zS}u4D2hx{!PCx2 zeAYSMg_pws$xw~TN_)0S7+gVGBnV^But0+j4|xZCrk#8MqK>H>f}X1O!EA}1FjAlv zYA$ejk>MgK^AlChY#ru~ux^k4wLrN!6c)p0Fp|axse%`I%|Fu8B)JPRkA9AeDY#eh zkNjkcp^a_x*|5Uy<&*ovcYNf$N zQX=-+^;E6Q3!PrwukOxliGK*7yXi7oA)c7@lVsP5jb3vv(+70a9|C)cGC#&`&UU(u z>D~5pDS~)^m5#)~J~hfjBNYjTo&tQt<0X{eMG^h3^Vn%a|80`(ZoHDus4S>$cdO~) zV+9W>8BY82{onwc#;5bDJq%0mpF^WzQuhs;P1WfEy>x)?3mI z#thUX591h4bPdX_I(9L-Rp@txhwrWP0h*l z&B|FKB=q$p^^vIc2Jvh%ec>Vq%^6_L+2)764g^%oIBjiVxb;sOArPMwPvic+!ZFey z!6gzZi}V3ww67O_?oRxfO09FvZ>*I3G<&diJg8NcHbM4x{DOA?)Xh;3H2F4-0E@~g z%a=b&MfwKBG>pHTOT22+o8c1l`t=*hG%S}Fedr&IGbPkDlGG|0qhmz)w&`e`ed=!> zTu$%&WoRwjXIUNPEe^cwX(o8u3d6s1e+5>G8)sdOC#x~LDofA&M6b@A8BMP*SgLEs zE6c&Qjq$8wxm0i+%>>3&y2K)q)N#;0*e?{YDO(6;(fuZcGsrl?(lAoZ-ad}EYQcK$ z6nAS0a|Envg(6bv&WwL1 zUb%(iN12&=~aHtUq~_f<75SMu(Fmd6AzDz*Mm=`t%G(L;(qg z>%UG_URZZ&ELz@!F^t)8S?o${zUIG(wWr(YQZ=sg&Wz^-b}yLRDUX8%0>wiDB0e0Jgo3)` zSqYJnT4NROz)(~G&>^KFfWnnI92=Z~m{X~ecuKenM7{Id(Ga5({>Oxs#bS;{7qg+( z;P{m^6o&dbu;qF6Vc#SE13AQ(N}j98mFhqqZva=-aLWz=BGQ?0hEUkgYhiw$>YMz0 zhScv>BVqJl+$##XU8`7&Yy0Dc{?|SreY1iTWe*%a*w1CETNvMT>yh$XPDQK`b<{6D zQByrP;v9~(}}d~*QtPqYoy_ZYwq;R1F_es zdga@fbLpHBDQEG+cOb%STE*npCN^oT_sY zo{xi|n2knH-Gf0R;vICOaQIk0ET%znog!b_X-r}iV_ELgBi2N^0pu!C^$P;50kCj$ zWDvEl87>M3d*VCE3ptHlE5xGKzRL-5MZdyWfWdz7c?ZKfcd%GxvE_fV0NRrt<*e1P zuf0Z!R35Kf85`T1kkr*kp1{X=bAjNVM29*{IyO9rC>Llm+6O<;_F5DXFaY5*=- z(*|y~arN=WU8S$tznC0Xn2CbAldHUv;?+E^?1D)T zCN18Lo5+ib8GLt%gn6`(U5lpM^RLWP`)olLA5>aqIerxKTU!SyFAYBRmOebR8vBLl zee!wDLg#PB2Z)qiq}2MVH@~vp1@dB-ro_eW>XtS#d%KSGuRKyB+l0FLiwYcUPLZaZ+U){=-ClA;mno;IU z905iw=U>0a!@eFp-OAKOC@%F0Pg7V-^NIvkC@9z_O11Lz4=FLX45$2OG=OZH`~yF; z;DE*3p_KO5gdYzE;zB zH6XDrJ<>6{6&duCjAUzl?m73wnthub=21ey_*e{|;bZ~=ab;3oB}s{})qv5JR!{c82`_c=h>5g02qT_WBgqGZH)?w>O{$377uE~7c$h$d3%MM$MD2uagq<(uk_QO*prV!niEF`34$+yge00# z)86-KRCD~GUiK+n{LM3cBtG*GWRyaf#AVU+;Ql63rL+oL>WK6B7}q4$^K?-Pq|oO}g!jF{h0G$w{H5f81ZmnKpK0@CX$N zNn2$^;~b^XRXd4bP8FG!`N9aBEG9tiMm;9@=0aMA95}Ofp>+FJ9Bk}+P>>MuX)3M3 zm^eu7_AyD5AERa9Xb97R!gF!5MD|Gm{9V2a(r3tz@kzlGO-uv5nXqu!Qh39D z65}@f$<}?+Z^!yWQC<|ku3(qZPWwqkmSPSx3ib#wK*E$%X77T^$g;;T_5L>xhs4Lh zA|@mN!ltQo{6|6KKpi)4i&VNAGx>4kIVFtzIS(ZEC)3O@vmmRh%X&J|Y+ORB^_JIK z?d!26q*Lm~$RvC)J*1|(&^?;Y4S|n%Wa+|%K?hRF$_CHPu^3lIT_v?15l3ohVXfe| z(1tqC^oadwL8XBd&H^SjEWEThgAB^PU_mN^!lBs+r?pOiTgLw5alkh|8;MPE0nb;> zR-puLn0-D{4OE^-)n`yDrBwZUOEi@Tj{bn|3?AfoHG6I{z=l5crwjquql&x zVT%MnKhVU9p8PyalxP2rT-W;!=|H5N2Jd61T4+i~ulDlBgP~$&iEZ4^x-ff1185%+d?KgV@T$ z2V5i_mlF}7tG1{7(EhM7SBa59r->$V7i9uv6@4WLRaw5I*+pQ?E~c_C6AUxrE|yi5 z!#Bcm3+#*Abw>Ap@>tw%s+KhlMHUa@dM@(hl5oyb+~wD*#~!ol7>YGF7eA=DO5GLK zjfM4lfy?|OH~7bBh5zz@-6@-D>K>sdPELM{vgoO{JDrhRj0)xva-vNbeeg37u_urZ zX4HjO)YBGN$R_I$%pxQFmbDwGRlDs2%kYo;NR226vATv)<%M+YR5?i0oSF)K>DMCf z={2sWabJ&K{)pbgLrn1EE*%!QSnC|saY`e}svQi@Kyc~37MFn+%M_WxWYvqI_l=%k zkjm1J-(-|Av=0>0GFf8IdCe8HxzdDE+Yc3Jp&rV?vMq%YR0;_x_<5sG0=WYz;bWf8 zL4l9ol8#@jN|YZ8vU0$8K=+O2`XJR)HL1^_p0XMIq5#+Y%vamQDZB{kw+Nmm#FJW;#$FCL@1&>y9 za4ujDS6M?$rD3R&Kn)>?0t!j{IIE9=HRY3suTd`7?!w0FJw{a^nO{D`6@fkFtY^FjrA|(eC3) zi+Q8owqQj00NiR*EC!4JCGiVD;rDgu7Gw(+>#PP3RJg`FiEtMD=oG<4d&?2*hfEaB z$ocDh0^5a&fsXkq_DP7{u#7h9s0~H(0#J^Cq$)BV)3r zZnnq7eaat6DfKpY?+4zWn2=ri^o(#ibS`8YQq$!+Jk9Gjtr-dgK|3bPHF*}ipAnG1 zeDz6}%R^FtS7IEB9;{}Toq{>8fYY^%%Pq?3_XD3~DfgeIrF}Nn0SO5h(gULB97##^ zwFX6>{qdsdojsd0hhrW891rIx2SlWlrj}ZI;H+FGwmwdZaNH%_6R5XZk-g;*FeR`s zhHZK1grzFBB`3^L>t(4tUQ(!qL;4Fr8adSOqDIAn$h?P_X8M+Eb7j!8#n#@%IWr7G zX8WlI?$aEmKauwNggMRcpM>)A{%e#i=VUsWL*_JI9H8oPNA<&`!9xF@2M@=67~}P% zS*w(!Tz(m`SL~Vr5(gwvp=N7Cl)$2k9O0J|=CdBS-xiKEYRvyPFw=I#!3o z-=br?k_A+{fJD66;_fzEM$Um~j7({puS1qGj;!DNXde)MsH##GF)s1B&+BE=gW9u^ zlc|i)N4Bc5VPYliYxosP7%bZiH|DG;N6BZjr@+;Fj2Ntu9X{D9GLRlh>yRpB#BMn! zZ?68a2vQh!9xg~&58Jo2Y7U9i7*)a`Eg$~IY7@>x9Y$4~Y}HQtQ^#;yU#+wCOQN@} zf*Q{^i@M}0fD50KRxXyvS$Z6qW1)>JxQVS869;6cN`^lk$}lM0dO&k63)LkKA934P zDdme@JB`BLJOi1~B1Q~rWr1yFHRZGqj}e9HXtUhw3>M4ufA37QtxvrV@|y$xqOmi? z38Fl%JN>(l|7bqA!h8Ca?)@cLqS^sXsw?GY>(O`~XX6{g@?VTJ#U|el6`}vyG5P^g zn#&5;c%^D5xj4O7$qD9xJ%R<`klyx#=F~}u_G*-27?oe>gfCXlb5fxHp7>!n>`~l_ z!ZMguhr*|{<5f(jPCdaJt#$qecn$qX)kE8}5n0}m6-@X~5+$M5lZ`Nm?VM5GAwO{g z@;+H(Nl2zk5GXd5g5r~$YB1QHvbHgjM_pb~45XIiv`-g6@a{ms01HNp1M3u`+>Mp; zJW~|-&@`b%-xH`I9CheesJvhSaU4>o%Rvc;(IQ=m^M>mFf1@TSj0yGoFC_YH#rYDi zh|%+j4a8R%A{x%crL?XrkILr#10y0Gk$$U{>97FjuOGo`3Q+y)qXMA!(o)9`Ki^8IL?g$d+DQ_+Q$8`2y0?JmMRNJ^% zHo!Dh*;LlGRRCdF6x3T97%*M%Mz19B`%K|dbOMc#>JkAVH$K(Ek#Q(-14eW1|M8Zh z;F3Av>dWgX5-Hz8Oj4m0Z2E+vqH8$FMms+&)pu=S5?HPr%l&?nLi0j#@poN0VE=Wm z4*$>y8q!@1tZNrM<+|)#|G~NZeI~P2Ne!4%pW03$2#Uoi-s85BWxsE%g`hU$u#GSh z%&P8(fX1h5ikv1>s)N2VY3k}>XA^{IbG&W?QZHw5T!K161z7Ter)Ko4GnrB9AY;l~ z%w%5Cs&iM5?RY1UWQ~9Keb#5h@%EV`p>fd_bY>uo->{uQETyj$25f|@Nh*M2DuhTRlo*T&P4=YjIyKy!Fi z!C;GBk`M;yvW#_247<(bIJ!(SOCVAien^FUVl*tsg=8>a%LLzRMYo02}CN`UiLL0js^qXR3W zk$sYPuZ*rx;5}vX|KWq#%b!=ZDCabOVCYLHVNhie`!q^rb&yOPz1qXC@7W;0IPu1sx~45> z{y-TlR@R673s%94jv&AeQBhOReUb9Ez4}!_Hg9reSF#Z)CA41c7QvYP_A&Wq2m<#% zv6^qje+7dY!K~rG@$V)w3Wm+?K&h5dwSCBkQ0FS*8(2N@llEzGDQT&`7yNm}l*Ag= zCcEHu#`~U8zrG+H#AouKqht3R{bROKhJPTA6EqK_?D}5`2L4|G1mU^clCr{EBD|lWU9nUx-i5Ogtjl*OqwR}s-=cKSC^qr7^ygnGxljhV+xw>`Ycsm z`Jr?g9z170XG`jOf1con21bFk`SHvFaOFYSVKPmGnm5@{BRMV$Q5aa;n=w#Dd;8}!LkWy=r5m)(X@;` zCuYw=z$;gzngIes7_{DFsiIo4_NlNo(2R=2eMcCI}+ z^~?edeJ|UjCUNwC6;AXJyIxMckkUjjuWQ_0&xTgfr=%cbX}`~0TL#%dDuFY=mM3Zf zrfc*-BN0Rq5FTkoAP(kvG#eUM-@!!`>>3LAaKrOt#gTsXdLz*9IE zvv6HournQ83h~ICWAtC=$%wt?^j#1uxB6v&y5oJfcr|JB_TRc47iLLL^@kw-(Jqk* z6o5}PcnwQsNA$1C$&x}%q`qC)An>|{0}{Zi5scVWsZuu2)Z%sAN%&?ELORJlu1M%B zKqGSw(kj5nA6s=YLx=&bN~C~UPNS_6tY2<BW zgN&ZdDlwnSJ@2**Cl(kHyajkxE5rk}x;?|yljk*f|3Px_$jxoaTjp3K z@dERBHt0F(+sGyqjQ-04jaVvAIbaYJ!}7&=OAKgJZ0Z#F&&5s#$@t%fUz8-d&$BP4 zL0to@AMSPa?r0&=KALE8nUX$TaKPxG=QD)_F=tT$Um}(&$qhk%>4W?^+!oji`^T@b zYqr&|0t{*2T-#F%>_qi+GkR2#|AIY9e@1_HJ(xBAH-RH`tZ})Vou4V~ApKxhNs-QX z5!-_S((i8D`Ul^@E;d`gL8ubz9sor(oI7T(vJG_e$!P7X>S(kEicP)-!B< z^GB${)_=y>3#+!DTfdGr{HFxga5@pI&7ipJnUJu*XEN^@M=zH0`npKX6kNWmwjAvH z7j$LV2_|{PYwz@keC$ZrC$%Xyg@gtwYRx0p&uRokt&G*?i!max_JxV;b7A1kCet&2 zAcyI-KNU1bI^uz^|D6uk0fppn0|-|CuNE+C0Fcw|dDR7b63fH!uf~``?Bd7{7Xvo} zuyk8j&@$UaJvTok`%8wO*<-wMqkY#pNVR@20sN;ft5u~b!4o3+X@awnh zKNDfbG^pg_>U@Oi%cm3VIwdi5WvJxD;8+(};{3S`(m-NK32igV(Z;(j^FG*rzG1OC`!r83Nb)EUjEsJ!H_3dhw9+h8>K5`9C~rta_?jXI_ONf_vm9 zU|=XB1jKC1yqF_=sBl1*oCl?7HOOl$HVS6zCYZT{wU5Xqme`0!CEgrpR09E@nQ*01 z{;Inf$+m;day*S~qdz@Kl^klcO7n`G>XfpP1@G~*O8t5R4(ycT|B-StgEyhZuTM7! zvKviTi=fIEB=Tpug{$U#G67gJn26EgLi0>SLlbE;vmgJRdH8uefW4GQ!j9yIbLXr{ z&anqhiHq(;l%(W-nlmcoC``HSWROD3C7zQ*Rt&Sps6j<%IOujnaD!pb}Cnpd{sA;A3!>3s}pLAX~{HUOS#_4)!R$yW6B3e$uBcT+YD z8H{X;uKzSiiOuWx+_{8=xGaNeE1@h{{C3P~5`&BH7(`e>Phy6FA_n~;9*UM>8y(#t zCWvTB3-FLuc%3~TD~Ge}rs9Hnyh^I3*S6=%?f*bQa5=@4s>}D@{=>q<_m_Juv+0mZenuu|O(UY~P{<+wMCmNWPTi*S!0{Q6uF@UZ1GNl|r%no|y)x&LzIyM3bOOGDSQ2G3c03Xw5{$VTIG z6CFCuo8J^XJ<(0#D?Q$955C8Z1K9O5c96|J%JcF(EzNUdOaqT}Wr-D`+-&lMGK?p< zyozDfB@9e&qx-un+r@|aH^F8bR76e+hTRY%Hc{xxu!0?^(G#)C%>JdIYi!(co_qzVCFzM0Ki z-PVH%{XC6+f61LXO3&`wYq%Xe@}zcpyKhyr=Q%bhA=LI1I4=C$o!3P;q>O)O z9IJJbqRHIbmY%w=3;4C;yuWM5)mDF5sHcT7Q)p>ih*TOhB)6IRoB~&x;UDeI+tM51 z!HS9KuC!}=3IzO^Y?c@Q^XDg`jLgxzO+gQfBPFyFg6?g`O}rkl#-G5(18meXuOM=< zg6m`waW(KWh~YGAcyozA8xD)_F_E=yli06CRhSW-2t!xmYn^alo@Zpb*(L4!{Ep+~(nK5(Sn-)?Ot;m46Tt@E*7}LY#g-k6MI!uwuFitfmGzGq9u$4{VS?3^ zoUC_{rm_9UkVhQKm{@M0&y=pDmF4TIqo%>+7O%DUc$nQVY>3T3vayR7+REqWO*s zdgV2WT2SX{1Pno)K0S1vDsjPt>mV1(`^fPoiFgjlHg5*J-@4lN$jOvlzLN`~#~dPn zs+Tpcm-QHL9B$;ATY2#+RS(9p*+|t1p<9V8Jr^GZZt!r7r5G_V-wWY_Xs$rz80XKa z>i&Ly9!K5H%#2}0VFk85RqcsCy3u5=J z9CC<;)5AY)5u660OTu05(Z6TIJ*R?A^SzI!$}mz9ld&meNuG6AOu7hn3TB})B4V9w*6Ih~Q~9;KVjR1zp%;nUDD>xYJX;AL)LfG(m4=2h% zG}{Z505v)ZC{+Y0zUbEC@YiS#qQeFl5K)#yvc?7c1&Vn+af}@_I$)_uR#RqtJ^R`o zZ20;-Tp*V@%P{UtV{tQ(km;c*kXV5$InGbRYFyJ3N>L5tdI~%qj!8ev0 zFohDIM~C6(pCnlY|JW1RaJ5H7}J+DgdC)Vty6L8S9(xZSTLUAsyB|ncy}ecGY#c_bYo8WF2xUZkc`bXPM^8V%kZ9j;yH%7G&%4l|@ zE4xTD$)AW+vShZJ@`?UtF=1ZMA@R@ws_eB)8<|5>B>x5UraNNd$4mFVd_Q{junJLRg=Aj-BvHa$Pl$N+ z>wEuE{Sau`d1EgG9(#u_Nt#=s1RnF7?JI!>G)-M4L=UK1FQ(jGP6@+2Q`Hiq1mUeg zcGBnRPUj*YUpTa;Ca?TJ7qXZxQtm4vBDYv0><4il8Y6+3JD8*}l=t&|edhF)q)CEp zO^`t9TT$f3yW z!P|FSJ!~Nj($%V3Q=RC&>PrH{kGm$&_+3+J+Pfi4#}KJw^t(H>^IhqFn8`%#V`CHk zfDRu8#WJdKp*mbud~b<&OiwFy@#$KA3M&!x*TDz19t$V7Y;7X|WAQpmIBDq|wc-hG z;H*z(83YK~FdbCCh7QNtNnhnePv4TD?AUnt@FFDLOw|+^L~H7AU}pm=idU5v?Qfx2 zn{D`@!x%(H8FW?U?7CgxK>P9oytIBi-~RZI!yfBG&%4`lb>*3TDLuX)*4Td!zdcd2 z=|BwEZX5`(#27z$AJQb?=&GjI6!N8$Zz2I%DAv7bXdWvnH+;(mAkNP6#!y3@!J_{ zsaIVILu9V;2OE)_4&xdjU=H1IXhFF$zTEdQH6^o;zGtCeSJ>ldx8NW4>9<7s=n>(r z*A^0EAqeg5gM!4izqzP8X%dRHZ-sMmXBI!bE1`@2XmNSD)h70w6e^4z3e%#3fC^mV zVmn-bMnMFd8_Tb&3fZ!3xZu;k%78i*)g81S5YwH_?4P~_Be>>6)kJZ9Kg)gFUg)fK z$hQsH!6%2C%kktUtK-vG5YGkDgJZU1@}Ie|)+Fr0HuW3&o_|pGLj92I{aJT{HQ8jm z;*9lPdm(ZzFc*n5TvWHn0W%FMjce22#IB~6Nt8_z=_(lJMpIn-Cl?QnWXef%u_}M+&lyDlg7x z$bH9sgRa($hHuee9aRvaYx|M007|tUX3Fz*XMd>lxs%}M-+=9LTpxM=n6T*tPj%w9 z`p;O&O)eI|!z>vYz^|>Z0iRpL5VrOP7SSB^wZw+|mj;`^f(3{iZ#pA%&;FkdvvrR0 z|HymoDu`#PG?w@>SKSDkZJwb(n9Jlx*-;N&>!Ggh^hORkkMB5iOPBNyLsdIfmlcD2bRk*S{}N+pDvl&DTC##e z1Jv}mvFNR?^v^ZlM?;-hX;=Ej%+{~l39IhqXF4}w98mVxx{LwbO=s~>ZqAj4Q!xW- z%hp<8@^t9#;<3TMZQcaB3ghqho`TC0gRJ0!=v-m}c2o)F+s$%RG$x**i7K@#aZQf1 zzQnyct{-5F%VM-*Q|u_E6r4Sd}1 zg$BBDPVctwL>SZw<-RJ?N{xS2KQb9PCab;iY7NBsVel6viY5Xn>}uv)2RX=!yr8VKK=sJhPulzf zrecBcIwFuKtBDlyXMlEHJMeJbT4D#vHa)T2SMZ8Ym}(%#giU?1TBuvc7L*I*HKUao zc_n9_$`l3S`L5j{x7AM^P}a`DZQ}hIYGDq*LkF2Cg4y~FZQ1L^21jQ0=ow8TEPgEB zp6Z>g_ms$Ffl7aK1VF(c-oqp+8>G%G)SrmauDe6ARJbnH^U#!-sNBPUAvPl$l-+iZKblnLJ!mV zT8`>q|C_R@zKHUgAOcDQmV!UL9_Js|+2Dav>*ZXQ5g?3VV_B2_)Q~8xC?lP85FCmd z5&m^oVZl!hem*ugg0WLzw^mrbEvx*HVM#%=!Wpk~&HMo~R_-g%hc7)?yH1-dJ`Q7B z6kbH<=xJqrzV-4=-)}bfG-)(N4H%Tz7G6tr-Or)?fNwa|**AFWjh4mw8jmEg66cvh z2m;L%3lKfvJPIIHT}d??rmNMmiT0WG*cf)+%%cE2$K8n{K;ZB-K<$b%PLKnWYC{{W-yW7QB zdvRT}q{XbeO}VhM2p}r0G7=r6M9KYi(x<7Xa8jd;C7;4gPdJ4R#K*I zyov5?ZGcjeDBj;XJ=ngc-{+{#9wlB1VQ)CrE-(J{^gBydKAzJrh-?tR?{d>kNkNUI z6cJA{#Yc~XsEa1p_BnNuEl8785oLcNx#So5{6MYFiPS6!^q(D(5t*J z4yY_;A`x(`45QV2OZQV;1QQ27c_0-ijwnBnE$_qQaYmKl;v+wxq^0YOu%fWX$-_3v znYjEJo@;QhofpL!O<8QUgl$|4q70p%*l$&Rcv}!9v5Wc9E%2=FtYq0L9( zW)4`x0J--Cu2nZwDxC~~lGlp|ZX8?wU(^BKix~wdYQC79zoOwhX2P+SRQnThCRW_o zauEC@h`+ALFbC{%7XQ3TkmPI(0aZNJ-Nm?bFci5`zh>4CTp@*Bk4V%$iVsqDI@ry6 znZpYWOFTAzcL%_^3xPsBOgvZA6O?W>z40w;_)J&W8;>Yin-1dMUKb;^=I`MA8_f=B z!(Zxfl|>$0Mug=PX(|Nt-n#bBpz}ccG$vR8MA|7VNVvQ^h@N%iNqEvORsH4_TJhB^sp|J1u z1cy7`S(=hPb9<1eaJ5X} z4+3mF{y@RM1e1U;JXjA2_1`5|R&R78SJu59g6qmsgYl56ezT^QVcEhm*zK>7i)wr@ z$B64@0v8fs<8dJk{ypdfL|?<-AR;nxWuw+ES5{K<;It{&#$)sPa#cTzWiHMZKgX(m z!Fde0)~X4x@u->&UkM@sa%J^FM8rq9^WIpb_6oc!D_F+k)bBvvcr$+3b^^klu4ET1 z3*spDydj|EPM?f3M-oZ=XgppfSJu)6&G{iS}UMc5f0!)AjFacE%pmQOu>1UOAWni)R=?BkUS>Db(%F2W&_`*tc z6^pdw=Uf`@svy9PU;<2l2{3^g6A&4O&h&@CZm-;cRA)S#6t!g8LWk(rjTXdH-WToK z#rUjoTo4mr0!)AjsG9(}nNn%ia8!)>z${LktY}24G9LT)3h~-Mi|M}aMDOGq)ZIgF z9TQ*zOn?dag@7>J8B0M4-*dUL7R)~H%DUKil$HqbWlkxro17NLV4-LWlrw z)eWJ+;->nK0IgZHfG+Yg)VsVb(g!BEbks+@Bk<991)J8%cvKdYSZ1Q6;N j(+2Pdteb|s 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⁡-8*2);e%g-vw-uay})4*!ReV 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

    xFYv7zkO^nlQKX>knX77Y#lP3Cv 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 Lj`%0m-dFzv8G{p| literal 0 HcmV?d00001 diff --git a/images/virtualbox.png b/images/virtualbox.png index 7a5f540ffdd8018eb481d3870d90d65d9ced9b3e..fb9191d0ea647a007ade1b83dba3c672ddce37c7 100644 GIT binary patch literal 36086 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

    qKmJVNMzgWH-p76%ti>9waF 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 KMNUMnLSTZ(c-%Yy literal 37594 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⪼$W10wgmG7l+z2d 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 Nykw?Vu5;tT{{dM`Ge!Ua literal 96601 zcmZU*bzD_#&^9WFv~)Kj2+~M*NOx^I1nKVXQW{C=lJ4&Al#=d}O?Sh$Ha_orzH`oB z{ubz3_dR*dH8Xx!kQ0B4NPzh2)vLFX5}%b`y?Rab>J@YWJS^~&N7~y};14JVC2`?b zWn)BpuU-khlKd>B;tF+;2Ir|YbJ;&0YdKtXFjq-jK6g6yHKA(gqhm~WT!G4hn#l2@8=U%o?X&Q&<84rHQL6x zuU}V|oUXL4-j`gDHSa!n6G&o03k$--Ly`YRg?{5xDD}OPXJ?<=OOu&xQ^WJ~aex07 z{lDL%ZNt=1leQ!4LH;rs%#~`nCSvouY8F zEsDuS$)Tz`PJCixXzeey_{O`?$~{`Vq;$@tb9I=`XQQf%{&HDA)AwXh;;ds$;Tn+3 zRD6J@{nHo!-bh=NfWAWuW0Nk~ThY74*~kuhzO*@=h26!?bm9)hy}1|HkZcr8o5rgK zk{fk*kWWe64T4-znCuSz!2Rl5+v)JPe?Q2K5?mkZBUPtc5Ru3r7?)3DrHb5|2M{=Axn*SAabQy4#4SAg){O31N2%Oml$wtu-;rsDn zQhWa@{9HZpdLWfMXjS!~V$uqe*wNB`DP7>ARxMgnR9=l|Z{lPA%6u3r?c{O+o!;ck zeq-~|bZS|7tByDJziU&!1FnrFTZgO)xi*><+4(%IxIvS1j`4)GV8s`Q9@D#cQRl;K zPo7?NSQmFwXAiSMwX};_*!su?l(OSF@WdsT>J*DE@^U>d&c9dwC1+~*Bz18T6N3l^ zScTYozaKNQyJQ2dugE*qQIO=utIRlLZ55hEF%nL_n{q;MN{(|GU9PUIMi<58bspOHT~_h&tF+MoFU8E7fPP#K61YHFa30;*?#4G`*Ka-P}IO%#s2mTRlFEv z7EE7T4I4c_c^UE;zM3h4#-t^Vmzu;gsEmV&TY*JESK!lML))9*RXCoKW=X=tIoFnf{k=b3N z8@rX988l^Y;0Ldwc0qQh3t_SP*cF>gEvLU3*?&BZx2MB>u3ZSv`2Q0CDR9&g4wFek z$g^NOJXV<{_lo&1BXwEMBmr9)&5|sB)gO3M<>RO`DIm6nJqE0V+0N2b!lK~}r|Slr zd3ST&Lxn@-I$DT0(V)A<0oPeKWb}AZ7czohWpUlk0^4F5HS9CjG1;tj7U3EOKie?- z`+LF>F&$f4pPH($bbqbJ#cngubfHJ95jHXXuxVf1QKzLcKgGY7nqx%!ij2C&=psM? zr-YT$pP|yKG@7=IGacy;AwC7kKC23~T1;Y&HeeysQ{rE6iX$h33Sm(uCw}pFU znLH^bUmcN0b^qs-Ow%y$*YM1{s=OfT=|Dr1@G%lmlF|m#t4}oGq(sSv*8WxNqG6Ol#hEX(OL_Ahtpm^WK%414^JEFX)p=ulPTMA5 z$<_#+fZND(u>0!2gZZMtL+q%lU#adrL}hqN(7oksq+*~novx@IV&Y_sfQ!P<$t>os zM%E$rzgv1v4N6lYUSHyHEDbrGz3X!?DXw?%UM}RK7iqMaulpC00z-UZh}PGswf@Nz z->*dV(vS$N8jYns(Ll7D1(sobHi632Br1Zm%B!euJyMsEK1l1zn`ML#d}XkSCUz%3`p%LHK%u*yn?>(vd9gzYZmUF$b7=p6S0KXW6r5llK$t_6o5 zVaChd$<`{nbd_p<01KDRY^(&2!4)xnbUeJXzLouFo55j#9J@tzuU=dfo?PKXMzw`) z%8nkyY8^CPx{Q)|GK_e*KpEs5T0NlV1YcysTjJvO7p26xW#z8}?T5)?Uftt^A~TJ0 z@6FM(!2j|^s&8uVyGU*4my|gdFE|Jeo^q_B3%XN*YG+~l6lwkQZ)SPX2%ZvAs!F0(3VdLaeJpD^hzZ2D8D!Lo2)I^>& z^NbQ;q8XGrSI9p-oTz-fYiZd_f#HoVcekz%OHkvytRtcRi*dPD2v@()gHta@yL>w; zKk(_FkNkkga$7Y6xb-?boK zJMkyenED=fp@r9SypZ@;ccy_>UZn}q?dV*u);2<~8B+$3L7wqEY-8=sFbpDyoye?KeH}wC zq38=cu zXXQhobbIMWNl6|&F?1E-i=|Bi5thO{Ul$g@P=fE_vDzk+%p#_&XW0%7JlD-N*pYO2 z`2EHP6jv!*T3%CmP}Ws5ozMz~SSS^1k2=c)v#=WcEM(jvaqd`PJvO( zEFWuL^(VO^G0}JN|B_=W83oEWQ5W0@@z@`FtWkF7O|G@`Rb@rwz18t)hIn zeh-lL%pbC53^YQC<+jq&qe(1s zJWmMgNR-~mX(G4Qk6u&JEkrjn!mnSC^?RW9c&OSun;+%%!t)k2-*K1k`+zCO-_9sk z7popOU%Z&SJ{1s#lFaII%K=lRmepUfh!C}7URVa;Rtk^iw^socM3JO9ZPGU;Jnp6| zO(>eUN(C{&s$mvV#DQH`9YsL`Yd04jW)~V-sPvkv-wo{b?BG`9mc3|61O_AWxhN6h z`X;`0l@eNSxBNIa#a_hQK%tU!)o8dZ@L2ZW;# zFF020gn+>OhtO8l8`J+Sp;F$(@H)nm^fWtJywr>};iGxyWRDji&);6|cIo#{&aM5y5E;?!9g9dc|vW z%~i#X3SqHXKUTU+HTS3b)_&@^>+%b-6W1_zzUq&1gLjhxpj#Tq$I+l)Qvi0^;X2s- zVk)qHT{97I8j@PUsu7qs-(QQ}f{9RM72BQHSLv5kf-ee_qa`RHsHUIi@0ORV#R1LQ z2`SG0x<@5E?VIQ2qvB(D+3MtEd=spMsM=zk;f>y+(R27dl0dE7NNdJ&XF=)N=91Z& z+KRi8F5;)kp?_Hf?Jp#q-t|kaP(lvH1Rw5EYV26j%TLO_sJ4zY%}v0t?jUtQFiTf( z&@!5~>TiBbsps^2H5nQ#gB67lCXIOLsPP4QevPE9ysq50`}sD}T<1d24VSIKbNEAx z8EV;*+xo6OwUb?whNr;Q?&^x|gXR9|fnXB@^WS#SI^Cdgjv5V3I&ic4HtMQOi`r;MitQv)DZa0I-92xzzt`* zg0k%0U19X0>>{JYev%?y2MS+nz9WL$cDNiefL9O`?7SmaY7m+&x*tPHM-a5A!VQUl=}!2hy8IF9qXE z9Qg*MUy|20-?t?)xZ~W2;)hu3Q9iQybzc!iSZn%T6dJdCV%-VwPncgk4@~>bsvy4y z^u^;OhZ-+reqCz3`o@E9jF(USaLt%1pB+HeMTS=_GisaaRH`Pa@C^JUw_ zK>NQ8Q^5nc@j+xL?+1vUUir1CvG4ZGZyZlcH2eCU=-d)2>@pGWI2UoW(T=m!lODqp zn1>5fUdt4Sr3o;kR|tP9AV;QJJ30Q_4N90e%q-{j+$VbKvL7pHdgawrG)Gh{8r4zy zut$)HBB_(Bp~%yx23lFUKpRcMh`T#O)%1S3bD(dQE;ZhZ@d}g0b%fU1^?u*0W(_mq zPnY{_72wUR-Bm7l=m&O!<56^}C~3holi{zWCcz285eQD~bAnG$+Pq?XwD5sOIYPqy z`drs18uhN#0xp58!Nx0$I4<;86k+Cx6BW_ur~+!WtH_5(%pJd_Xye+6{h9Kj(=2G%8v_QcNZpC@a;NP#$>B*gEqKx|TOUsnUnNTr*Sg*5iYYpuJb-}N*{ zwZ(UVHNLaH`KY;WdQWJ3bKmi1-bF|(@qT1x_Gt#id)YEnkH}T!;wS053)j)Zner7D z`s%L#@z!t75DE$Qpe zQG9-PmSa~GnBQ}JtKO1+x_$>@0pHY8{c%`^{TGlUJU6gO)Ib;|^1u^k&><|Gg zh7Y>}0?2$&l?~b0dA84$C+_A%k-KUPB#kQpl2)@VLIzMcmooSivQ0F=T-8YAVk+9O zOj}XEM)6rC)F#n{Ukz*LxCL1YPnF1Z;n@WF^mD?HedK__zxXhnzofVF%f_L*RJ-3l zB2Qog3}z_iqjgCc@=9!bsQ|km438~l{2}m^N#|F|XeC>{xQQc7xHqdlUy-{wN69P1 z16Ky8Z(lN370f$_U?u09NoL?N+aFS#XDfct&fZJlK~oEltTeqFKer^9g?-<9kRfxR zaJ~zf;S7 zjq)tCgo3~9QK@v&U&+^U|6q-@YoKFXLz!)k1<<4Qy5ur%wikHm`K=MyJsE6x$AP3-`R*h~=JGhW zd~sg-e71Hf-|9))JR563ezY%iq|xoP+dPy5@Yd&7g&k5*JO$2Pi>GgTr;>nxDS0=WPKcJhP@$H|i(2E@K4m#>wJj`gcyJC(> z=V0_Cp5Jq%ml0JlA%KU;)l(+jF*fVBM6)$hAE5%7LW@v0B=&{E7dQJK5LQ-*xBcm zkC88u%yWnM$-#wwH+!QL#5qHyuO1OWOt-&Xyrky>TPUR~OPBYV$dYAu8{R{!9Pr=PO z*9JJ!MVMe`u@k1DfkA?>IXL9O58-AY>7`NU4+y-NRn&y6SDgLBufuuj7HBBDu&XXDYOP1SE&nT@>&w6TH z^yjE^={`^HEnx%YyfXzSvTfciaWd>S5a!9zg8i~B(J!b@~y%>_!h z07i2|;8#^|5E_+a-)KC6vmXD|8KK=)yQPoown&fqOy^2GEBoSW{3nH;k(^Co<0}~a zfDPMfw(2)T-fhoaU<~QspvqKL2|~>LiBa`K&NpL+Od-f_qOBpS@aZ`3M!~CI*4yf@ zG^CqMK)p33K1H)ydohs6MkXP6XfvxXunl=ql*s&h*>|kvh%}vV%7XgLncFqe-}|Kv zLFvnr<}rI*?48m{#5~U{GrjX@ekaq=JFtca_tFS~?TM?qg24HEut~Zg+8oq5A3xMx z>>`S&`HJVj-(+&O;CJyF`pNqgH;9iDYCvF^Pm`dI3TFN{1+?qIXck`+|l}~qjI_&^dwl7!W zx^!fA&{BSvEu6^A^bho9!UHCX^%H(C7!bwhM%ubLtDKGU?wKk22ITPie$%_{Am_ux z0tW@1F-OAp`6Rxnd!!Zt4C^J9!?+c*YtZbHP>CnDM1~aPYbOpjRipVZmo(nNb&3Uh zNy^FkBWd8Xp|{a$#{Ew1a0rN_#cZPz7d2>Jq$sPB_xHSagZUv>{$ zj$6~K;oKoIy>Ay4dZfoi5cbk#)3%Tq%zsZX5r4fbocw$_Qw<&aI|_~hsM}BzbygCE z#S-7bh-lFuzuz@PiIP#(6FO*L^e{yS^ZdCkE%{QrNy_Jbd@wpyH5>H5CkTLOK}hEc zs33t84DMelJMtOhgPr6zK79C~p|~3@5fTAvA6tL4S{A!gsr}@dm5gb_jM$ZLG!Jb^ zB#A0!(9wB5^@g$lZkT89Iz^}FirCZsV%Ej>#N#!uuKk>l!upPAT<4=6Z2cMWa!~P^2UigAnXpui3@B)#Ztq-F>fFq}06^r!5x|+6WGan! zkBti2{cB0Ax5Lozo?V((OH-frPu-0{^5b_*jxuLJ*aV=^|4pJpLrM~oQj3J`n+>k; z3|@npaY|3&A9qeD&!+a>lq~_toU3`|@q+1zM%Gbs$^!kXtGkbn`1DY44jXr=`4*`c zcwZeCxwvR@iDUb$w^2Sa3q_34Ix#f47~-;JioMC{_!06{ldsiY3%(fXizXiw0hANi z5e*@B2YwF)13=^i(q)RnHvGl2=6QnTxo4^|Aith^qx{7;-+gg<-2p*w$|W)BJ_QCl zr#M>Ip|io&A3X~!0&nr04OnS_g=pv`#=ze;?Opb>7}q|o2f+kvoj}$m+OR`Tsv8a` z!r1~|?RnAh=?2G}m=iQ-_g2<+d+E_`$NBnzMn5o$kUIp)e@FN{`*X4flTrs4I`93- zjd&&H=2@dy4zg;4WOUsO<51LWSx;}1&MEKB6$v9>AkX4BS_TZ3|*Vc#ojEhuARD@ zsL2jLr1+$sDZg+#)<9wjOewI0aAE=fbuc9|CQYFQ>^ATQdb(N|8HKEVk>23_mTrjk zg0o+>^TIa`d4I3ng(?Hmn(NA8L?3P7=4J#!sLfv=8)+Cok&-iKuTV$sG<6$q(Y zt7c*mhz~qPXuh`HcF#&SQP)k$Q&mObAO6uzf_M;aRV=BB22j(tGY}ijBJ1#L^$E^+ zH>|8NKZoTgX*Ixer-=Djah(VVx&4E>_8L6AtO^6h`i6q@8r(teBLxsRJ>%AoWKo59 z*Xj#S1^Z?gSeka%)Ei;@Ww@miX_g@EQo}dL=ne4{+laHTn~-Aqb#z+OoA>2L_muwg zUl}n$Xp~slBu6#)g8x^av|~GQ6o`KZKrUlI$^xP9FWGel6Xl+J8mj{()ylD3J)lSMK zWEa!D9@^6On}@)efl#kqQ;kyO2Upv6 zCx&TX&cTNXNO0V83mY(rD?u`s-UJn`AEn5mZ`IbMdy)|oPb{P`YVaGuvs@Lithj;g z^F%7p+ZG+th!}q--!(|kra#q&(0rep0+=B}HXg6l*2>r??ftypRcGoCl@*weK&NF} zb-`Kq*C7;EpFn$WDMhsK_@z}trLFQU9IAk!e@gUd1p(kNwS+t%*3o2;lBN`nJOvW5KASrJOt7U;X1*ud>z&;!z(Ae_zUHnzB_J zXzuvj$qTPQGFlBF4vK}SSNQE{e?Rzj&89?lQ*!0Y6L*o`%6&{tP~258htA)gd26lB z>ZBn3P5LJAvonHxE(H^c+2aSG|NpFUyLzj}>9yKk7-lYl6m+r?!+E7H=HmI|u2#7C zgu@XRad`i(&lh}V(!5-jQlH9SHYOnVkB*(g1hU%IXR-7bekb}KoKShnd@8Mg{N&(m zKzB5@@{K#BPy^6}We4$2mDAzHX=LVz70Xt>x*M36TH#BOn6aBLq=iaW(N^DF+0|D| zOeaD};BtcQ`o)`fG!TD>x>pTB2d_H^uUi=~3D<^w;-=Z=%VB3XzYB^LP=4bVx;*t>#dU{=-RTHLOS%ehWy!+ zCN4jHabu;I@_}eNNgK{5a6%D`L4vXaSOsaXJ1&ox%j9aZb1Oe-1a#E?8tBQ;)m0q} zHLzY7F{%H=I0K6b#KWFd;|c1$2%o)6#aBPS8F~-> zwvLIF@KS7dQ$12yyUdMnX-EU{=9hbh78k5yh%0y@w9rr&9$A6}z!PY-Fk3Q2waSdI zaiL+MN==Qr$63R+b!DfjVz|pP(hR3=#>|s9oKTj%TtJCkw6A8l{hU3yX`kOK@qm z377wmJopT03}oAk8TCN;&NKJ(dWC~VqCMr+^$#eLk<9k}s2%b%i#*hzG^EQyZnYC< zTYiQiYmv;;WoB@`PvMx0&10;up^anL`2s**Bq=*j8kM#+kYXW20F@qrhp#BYepNwIlu^8Et-ke^?eM&;OSrL z69Dr@cjxpAVL@X6zyD*%q-T+0YLmVf&!dOd35qQ=4hutw$9eA?aDE!~+xm>OSl^tC z%&T)N>ykA--M!rWqUHkH+_F^ZK}MRYDIvX)>-M{3TT8{PU2b;B3H{Rp9FQ0>=g7oXDDIy|2nnu5{a;~~Ap?A=*i^o-nBhq@(VCjp4jh+DOTkip zi-vTS^?T3&iS)?)LjDYY10Ppn%_;j~SP6#U&BMsFOqqkN0+0<^DoNTr!jP!{oT1YH z;De4Fw&dp|m-M=%+u@r`fgu8q*kXUi8Y0WN*DWq*?^>Z^=R;~{j#yK2Q?=P7ST+#BSw44fR31sl`yXv=r0kl^@X^u($dt`=P$#PgPBc?_-DzUR=9@+pDA-?9e07q=KA=Y|U6 z)GKjtXha0_T!`JcXzO{~?>LZQ|KP>pw|?oWzY`H0+lg7H^FW6d5&Ab80cLHW=Izcl zyW=uk$B5((!2)2*as!!rQ=jCp;==-_J-!`=%)Pb9of=7sg@p1CAW%xlNoOk4M^Ch3 z)}s3aHEEd+hs~NEZM{!|E3ye6^hZaEF}`dkh7v79ZFN5$87iEAeoGt+nH2=Olz=|Q zwI$_)fSP>0_)=Wm&@f^1JH?G;Lf_U!p`YUJgMvl zhg*MO3xc_6@xGC!{-cA^Z~rODn_p!@w0-%2Woc;Ql6|>&yi~pVO7SBP^No=~x>-y* zqF(`I{8UA*8F|4GhUA&Lj@oAl8)p(H`#8teu1qhEv|L9cP7s0F{29MGaF+sG&Yj?P zyYq)__9uHwV3viODE8M+$S~HKd zlHhlSY>K2nfW!>hujOih6Ru`+2`LD?+Yl`=6Fcs^-BF# zSZBprHrq{)_YcT#Qc|Oi<6fUAUtWPS-l;|C#YoRSPfMp07UdhO6|cDLWuSdC1{~w_ z`N8m9JXQ4bY;e~c=P=*DQHyAOp(CevY5M-zV%^w)~gg3t%Mn=wOEY z>o1!}3cH zn8XSrx4_SLP3vZ--dbud4A3n(LEpC9j`MGIb_j3S&lohG`oLGfU2+Rd+!}OM1Vkcrc)U$-vOy zZ)Wzpj{`$Lu#4eGyA=-duvc(h*0UcOosM+E8A2pLaR-QGm)>Q7H$_`o#5iJ{=vY+>;_UG2k!8PINvx3NTy z1qfiGr|Qy_p=f^9L*#_OsG!9;S@<})v8tf7cuS@#7;wE+j{NX&;nX&ZGcP+|T9b!+ zL1XFY4Id?Q3np zPt?R+ZZAaQ=jtScr*6-t1?mdvT&F(TCzs_vn{0Q_T_BEWhlsmKW4ewNmByWzRV57# zTLr2#(!Dw~CRzYTnT|-Q-qHUzZ11{-jk}({j5N^Bc|{%~ICFOkb(K z$VV}>gHu;izIK;koDH54P*_mj&1zWx#)w#2cf=+!D{-DyQN1kCG>;P8Z1-|OYHXKeB1-+v8isVXi7qgx_8sidQ2%6Q zW0NnB##D2(WY$9OG)>Ko<%FLT`{U}W(x&B4gI6=Ut1UMU2MT9HTfl2HvmMG4C~ysq zkeG|1xB|NWY&k>ED!&h0K^cEPE&Km7RWe|wz|*7$YHKv+0(KVkgKIR3tX0hL71%E@H>(x5wMPWUXb2yUnQHe2Q^-2lG*%@c##ij2}bZjJJB?j*4< zYWRLLo@t2o<=^K?lI-T%Zs+iSx&E!fyigW*IN+tk{ z4q@Av2D`m!S3v5fA|A_YhM??iE_2bo6wszu-csgl>;r?ywft zCotRPuwIPf?<$)~oV?-i-WZ!6kW|OHmWG70GmHj%I;SxNmk}557rVR*G-pE&neZvq(AhDh>v_D9bc8 zulJI;RAO->A=r_AWmRyhHaOd+YP1vc1l!1ElE76zkX`q&1*gw%FVq9>Qm_eJPaW#h zFj?qQrNy;JXW`@`9_FpK`9>ox%kW1(gm)8w5H1;6mO}6_@L%~C*Ca+NmP&x}7N(;x z=|JflRbXAC%d`2ctW`F;vjvWpfN>TM>9gVKTRZ+c{^~io@66fUSV^Xs{A*p-x^{C5 zOO_Wa=%n&+n_U7Q=&c6CyWi~1ynTB?2~t@)Iave6#To+1#-O**p~2`@(;3-hPqQo^FRBUAn`p4_N3-@PB|k?76ydqjR12}ts%ki$PZ)zw z!)?y;9iyW2(SzPi3ys4r5>W3@pHR3MypBJbG_RU}&3MG3ZAQu(xD+J|QSs@Y${8=> zW;?GQxcYoW1tUfU>C^1A3>CbS$kaEQA_pN=jvQ9DEC&2AME*G!AR9gWfU?D~TW*nG zT9!F-$l3hHo8Y@6h9_I@&lEu`X(X>;$GkFrhqfhV!*K45I=*^VG1r0Ou3-d(Brm_JMGfYX(_x0 z!=vK0-1P&n#NvsPq{!dT;z`b=4#~F(sh$jAgm5o2i{xdJdbHw`_F%NAH?;V7Y?KHK zTmxT7O1k88Gyha*4nvleD3g3foetWAMQ#|^v8N#f-BIwe3bot!1Mro{Zu z=#2sS@Zn$YB5aoW-QD>b4a(m+YAs_~NcIU)YEBct>^vfRMz)!To#Uq?LF3+HFSyC@ z5b5{#BQ(-<;=@%nEyma(alZ!Nyio~vM^FvWN1beG6KV@McdD-dfv{uif z#c5HWCGfjAcbJ8B8c;F^*LNzaLdMEgg4HyatcsRDdRuu@4rRKtvRd+^#c%&HTor17 z`VX+9fQ2|un7*=wWQ+Q_qb{4>vrjj@1CmdQd3P>*e{$gMNx-c9R!Dgqxq{y2?4Yk> zqhTMy8UpXB=5wE|4d>@&Q%pU?LztoEQVizj<9a?TM;73l>C@#5n|)bgQLn@GgPV1e z_{8WZOWf+n1Lk?E9&OirHDQaqyQ@&Oah$z1H-LzT9QPi#Pat?^eO0B|k$0!e#l7_| zTgu!cIxoHnu8GgB{r?(CgA;>n27OQPe0!#7-3v!-3p>k5Q(=*4mlm+$HemVtl1#hn zxq|X9##sJE##Y}H+b@K;cMR*Vd2p~iu4f}I8_*sEOH9K9q#Nc5%jYV7VAE>aCF5lj zNI5u|Dd9yRjE)VIJnqi;dywTc_u|J*Y>P$`_J5eI*R#r9Ax#r5a3PtjRv>1tU_n_mc@C8!lV;BGSiiBS#cPA5KC zR#erqLC)agX(-?&6^bunqj_@sk>NqL7Q9C?8}pdg6lVKKVv31LuM*5!+$|Hmar;zf zEh1LWy9O#N|HHR11Mnx7$p7)0kaNBY0;m*z=%8YY59-v;Gz_NRJ>%i>pUY0)!x8^1 zYLlTW?jF%vl-o}0Y!1;lfok;jgicGK7!oiR=p)qBig3(9$)CcLVwbr`5o=P+Ubeo< zI;?%>iDu|C1JPSq_1(|?dQixX_|;Xbo$Q9d+QjP!XHEfPJNTI6;a)d-Gd856-II;$ zH}!1y#nUKpWhH=>HjN4G@rii3)TJhszjC?d69peG^g5)maPxBrM^=jLG5)ROV5M2T z889Y9{y$?v1iN@zK*l%i_?{9*pohd|2LRaKH_lDj)P5KSTk^}fA-^W9P?#Dro2(bv zH?QBr;2mJ3$0wWbe0ke&tc^Ery_YK2S4u`ZOdTE-rTlE%;R{D7N_vw!?sz=xyGNqP zdnTZ9d)x&qF48bewZ7deKB#-z<>oMXZ4PW)J?rT~riqgJqLpr`lU4AGfH4)QM#NhJ zv|F~12&O^BgyYrG&Zr=^Dm1OX0%MhCvz?T@sz7xmCwoJ`yMu$As5F~63=%( zWoS+$pT%fnza#}$9RDbv))V~rSLsI2avw!EXLo_^V@llT58;Xe1rJrFi8viTTgnex z!FQ3@tdqtG8N53_U*M<+0WK9FdP4@OWSR(d0m6U3&8o78PF(m#v1MCC*}#;aVLCqv zh*$Itfr;c^h#WJ}3W(_X6*9-CRGeIJ-1Ml<()!ZMm|nrEZ=aVv8DItAFOlpyRzt$n zynw=GYNSDQzbGoIZ{W7R71sbadg8Gg2e*@*`nQ}!Sf^~<`;WE-I{7_*Q_@b>O)kob zD;vRDjdGr}e>uih(ig#Uqh<&YoAslHkkN6n4al?NWEQHAcp*5|csfUukbz!Ms~Jh&gry54=?3Owsu)}dbO4r z(RuQ4GC72wG$kx|;R(r~U2Efe2KeWBd?qq~Kt%L=(Aibsm92U0H+6>ifv- z@dT;A*Wy#ys2#Ki))0fdDi_U#W$&8=4q-kdp(*&(iof_6v@E3o$aKS<_J*QV>_?m2 zZxp{S+}m{w=@7;k^zNB>ZE&lZLGKXo0(juKW1v4I$rvq z;(1-T@{z~G4CpDWTAkiT0Sm>_M7fZy2XE=iHtFX;K~6|Il1r|l|Al~6ZqE6gb)Tig zRAxPrB!oM}E&4lKH^!sh{<0&FeLy`NE?am_`K`h@H>;?2S3Lj8)dZJZXF=cr?Qr`Y z--l4eoK7c%N@j2~)3Ko|y4TOC@rDNPPm>c3l^h7guG^9Lm=oRuV_njjgtg}KS)jwy zAqK?wJATf2DI~HSi(srdAJ)b_IT(_Z`v-9}*9XPpz1FO=>D1BnUzA#y(Eqy!8WaP} z3N(2ZQ|^!~QSpax@Gx{j3q*Y8rs*aU{pJ8{t89<0CHI*Q$m=MBGx4dI1`#(|BL`%^ z7hnCB*_Uw8BPEd9S^Q}J&J3w7Okfpkpi66fhpi>_i!=A&E{>pC&TkD`s@pLxJ{MZ_y+bJuYQcU#0+i+!)q$t6}MXP~k`!AgJfj6!>M}kK^ zAvO$d+uz>4ZvULD$uT+8fW5ngM=Ne8p%x3^qKx{>-`SUGP;AsB2(y)yRb)QmMGS_z zsQ3=Lhw96JV_o_xHA~G_iihRL+#o$8^1qD~ZrTCeBr zPdIibC5La}*65%LTscX9#o{}m?PL&)T!H-j?<2j=KhKeyPR^q=T>BKTO3v?L-hBo{ z3-6b({5iOzLG?1$uokau>W1XlP6?wq@B=WKT%sQ%V< z&-pkqsB}uorD)M%?!gxsFnTn*#wFlHJ%94~h5uJPWprZ*EI zL!~GH)3e4fODNk`gL*`p|4z?;x?E4>i85j&0U3OFaPN z^N3@A^0d`9&QsIv*05V|vatLW9QbSR*9cTB1$$?|h2bq)rt)EXDTEpcM?WKidu?g! zX`c9+(xyz;1^ihx=~isLLRP*}HWJc8MzgX41C@5tDE8bOF{5dJ{!M?5VR8q0ms5dvke%|wk&f5gJ>6LA`?8F5Z3+{5p z_uKZAl~T$*>-QE8+9ELeLB|g)p&Y}w&2V%g||vrtO%w{F!ns~0cvO8`6`?LR{;M4dh~nk&Aq)e4JY%fcDC(3!;qgbmCGX#$=+h$wyKrQVbs|$KY!kNzdmM$32NQg^9WmPMMC$9s z42Oq<6iov{Yfx^Iq!D=wH?#M2Ay_V|FI z>sc2AA#3mLgyfLDDjPTlTUj>R$$3*sGBu6~?sH?J>rK+$gz(`ENrF-F>n!BrJ=|Sj z^>V|2_(#1|R6%RMH0rwb;wOnLMA<$*+I}$(!69aVq>N8*_i~DSyQ_{+*p$`jYT>D! zs)!q%@w2f!YG^+c?Zm*S2zt-v;A$lxj#kctFbb>qy8;^KYcWwOv*=~@#l*Y|J0{uh zVqeG~*zwxa{f_l#l!+SojUZ(c%Afp_YuA?Q;yjZluV{%aLt(NFnCUjDFiw>DtfGHg zML=&)`?bs(e>x}CA5M*MU|Z8KaLPirYnhD!v7d|aH;UZO1tT1B932fi6g8FSTDyc! zSlIMRTiCRccCLM?Sh(t;;Z$G)#iS93e?Maz4lhZdV*@W%VzKuZ0(3#DmBC>N!zP$xXIxbLz|8uXFBs?)?Y$ z^X$Ff^{#jQw8Z`bW|GC#d~iN0+A^^B^i?-X%zoaD$#n^Ao>?o7mEXomf!tUcpsh6T zbX>Xz31ZLCh9NShZap0G9?35s4SYynzmz1k+ApggWa&goUvmYIam{b!j;Ri&xLh$^ z=&7I%-`<3;J;f~9X$&vi0X(bcZ*&7uM=Od+Yl*BJa{yk1v-_<@lal? zfJe>{-qs;VJgq=CO+`Y@42%>byUW98%*tdTh!&?p{hj&Jj$BzsEv=fP%XT$qAD+NK zmA{Z=xhSBvHJ^@nA_Etgsda{au6d^LTcQK}2Yz!1u0jtw$a*WXiB_ggcBOu0jCh&7 z(NP!tu7Bj5a6p_dA3P})10%;?p3PNBtkUE)5IUrfX1JzhISvltr~0Vj)z^Gq^BHRO{Hd<;tA0dqA^` z0(ZgN)h!ogYyuNkQEhyrlT$MA>Ewg9;4bT`AK?1M%!SMKaie=@!o;HGR$Pr1=H0;? zl~LF?+@FfbNWmd#n5|(qxstiSS@Oqx`KNDTAw8nc53Aaqe?)fm8>MW{pMD`Q4PX5u z07&o+5|@TOc;o5!*@%+I=w~+COXmLTm%ne?D!2v^OvkS<#2%<+`Iz4<3WYU=$LLa74JpdaV5AaYzR!s_Rx;(yJg3*BIWLs;CT zRRuffes(fJZi>|kPaWZUxx{_YJ0F%PbeOmGuSKEok4C=kYsZ4O4+77hP!2?c=P=6N z#Mg+3A!u{ZKH4qBaD`h3b=qvlw!X*H6{~ld#u`S4_u>IM*n_*hbmP#^Guyi+`6v8_ zMq?g!fBGQ-8Zuk)cNI&?>h+%P^fq{d(Dq@E8M$jV_1}B@mDF_7{iP4HNKe|zKx@hP z^n}gxXl#^WP|EO$J}r1F5VM?}o;Wk($QfQKQbUg<3lTM^^fZ5%)Rn+VEV|fy2(JQv zWf$H4G`N8v%=gUNx|Hx++4}A_x*wRTCAYs(a-_UKlkr(6Y#1EDj(RuvSGU)+xl?UX zcZiOZC{dkdZq(s0&c=o{cbY1Z_QamLZCFsXjzG~b63l#rN@Kj#E-d-alfT9B^UhX& z+q(O#&Oqr;f!yrC4}X}z`~`(!^1|(ZWnxbe1!|_q_hqUW+<&U=0du1Jdj6!K~T9Ji;FaodURiOjjRs`}cj;Xx9*8UI3^8~=|bxm5)Ynz%A9 z;JEbF1ZWRMVVnFN@sbG~JtWl2d}G24{>ThZ2!8z>0a-ZY-gv`n085sFr|fPVakG}3 z$t9D)5LlX)^89SG_rIDsDSWM^q{6{Xt$$5aBGrEUIT1n zybO@z{@4M;zUo~s2ZwnO19{k^303m(&RO$Dk4|-dz6KUOz{j9TXu)&EY3Bvsp%|=v%h!a-G?(W>1u9Dta&Tr&ny*N+)Olz z9|#n9?cm+>asOA-=VN~m-<1EttJ~?$ZWwV?U%F@is+Yzr6U zH7($ZspiCq7C+LaxhYOe-!Muqy%1V?`;nx+j?0Tlav83VPO$iTpHq~q34-CR;%o;7 zs-hN%j7L^8)y**@pwlkqKRlTbM5==FJ6`4PK^EYBq$LyFB@Iw`P9HHWBQso}2)go1 zjd6T%VjMC_V15enk#6Op_jE8w#PlCGn5#CHv|8sR_@K)WQBF~-=>ap6S>$kum;j=C zB|i{V$tzUUv^g(=W;OM zTWAlG+k1k?Hnn;c$H-)mcPka|?8qP>i0K%sw%;mGSvQD%#2i5pgL5H|xl*gFchn_m z5%1Vg76T2W$eyYE>=fX?3qq|T<$RDyR8PfOj^xv{-2mId*^>* zLSNVlJQ|7TN+i%ElAMm<>_&OC(C*T~;r2z7jcG8(M6P`z-$?6sZdQt^S~qt+jD+)l zExg?wy!?gtPmH2R90TzqQG%Aw{*M#N+r`)!m%gXQ_az zA>j7p>pMH&Y*^&>4{|##h|EPG-YMVe%jwVhw%F3vWjJ9s-;!5zY6$zvUqaww%UgeN z7fIX!rH+mw{0185xln_1PHWy>l6IpXc8+JnInnm?P@MJ^=Z{Mm?50ESzIbU?b+;1|^%}1)qwFQwXwGnmsL49YdKB*~k!rh=jxdJ;5%zAWLOU*N5PfRv65~-|dbz z<>!}hB5WT~VraO>lv(bLIJIi-uDF!h<+@C@>caF?;ovbbcTq`q4Y68c7U*6{y!Fu% zi;62gjY%sL<%Z{}<^a8?BeaJM9S(s#qB{_I>hlQzv1a~LXunEaxZhg%+m3|e0DFrT zt8mvAg2OYP8u8<3d2I*1n^9cH%qek->a}(TBqmM&7at+r!b6ptUmd$Bde|H;fCjkH z>?4LNUHFNWdMz>$2t^p&$GMH_s61@Q!Xf>!H#E54xtfrgz`AYs7j~ZfPh>cv<4(7m z1%S#IVUow4I9@zSp0w&+vS6yp$7ahZrrJBl{X~FkUU6)r9NX$7<`g8UQuYnQJTx$#)B?{^Lo&s#Lo z4ZAMF_9yXE2YYFFvY?R$8~%|Zxso`9R>sD?R`c4nkod0LD{?oV&R!ZI5EvamQ=Y|} zx%AXthjB{Kl6qzboNELj2^NxG#4@1uD4y6X1Jw9m08{m-LoayJr|-D_e=N>j(Tq0G8O5rJ$ z2R{6-AeP+C_)2LH@sR5SD706F4)_cajucD=jiRw(jLypgC;aB|> zwqaT&U6z=+_FEO|5QmgVlA#(~n-gvzrC!^Dc0Yb@tDXR6S4|{%-17Vnsp#0ir|;yT zh$5l4vBGe9@%D+yZT;!-Zw0T*)^)g^SD7D^aYdp3P5a_bs{-hfmcTmwCWR%-#P$$2 zCd2w+A;&oTJ%H|C`sk#gZmXa+Nw2|PbYKUHe15+|{OXIbP0P$j3{iJ9IAM;1N127& zr_uRqh)#R{Cp?3hfu_-}c5S^ekd~HK#NF@~|H4j|V96_J1Z!(6xpwz&^sN5E7TYKpyU=SIC1M-WUXVUM+5qlc_M|^BgP6uC>=O9; zX#2T`3rUMaA{2@VYkAqxYj;JjS|h0UmH8N~V3cxr9xY!~)$<=oM9DvbGQ6hj!q&V( z)wWh3p$+nhTT_Il7aQyx$4)SOc>-S~qy+hAK{x{IthtNOa8kSVTYrXQ?t!cAJuv!jfVZbGPF*8Ua%&|^DJ6xO(wqgXT}Fek+D(k_Mu^3A-WZf$h_a; z+y%qcc8&k6lMrBfj0bc_ZIUK&8ikVqR?XBtv;8@(M0K;Y$9@!TJe{s5w8t+!aX*-Ubmx zYCGs&gjHkT4(5mNo=3}%Q5Py`YTN0?cuFW)VK}`A4DBL>_5}G-T+lBuHzNPlI7SjM zef85v@&F!`57FoY+wQ7J@`_*;VnmjutO^e+ zt8@Y6>gaO8Ii)ZROw8{o5?S7lg+xCojDBBGd=la!6w(Q`0mmd2TA3*sDmo+a==wAn z9r>^mz9smUgR%)x?hh$<1?c|gqb4Hx%O}JT3aSRHdU(p0O*hSVH64GJI7P3o~z7&$C$_}7&V@(kH3r?<(Y~tJMOIjRMfFJI8@b%hiR3?KnSw|FnNtO!y)XV;?&qR{ zGUI3yf;Z{87L4{0fjBlBVSOgfInhi;m098Q=99cE!EKjfSO)*rCYZW#>Gr-# zs2;2tG)Xl8pQq+OQqo+DNr{~kP8C{JkLQP#rW%6W72|**rk%ZQbSB2z&z{167kHV# ztk`4kp@YyrCS&5kqnte2l{4i&=Gg7sJcJkjNw|7~w0_j~Nafk8x-t35p`{f*ErTG_ zx{VBQygcpKz0$#Vx$v;efK{zjF~Qg4HIbRKn5~v$>{6u}GvYV+6VODNCjCUMU4F2x z=>`uh`RVk5D!z*2|3sXa-|dAB)LOlS_ejVv{4d?=#UDm2KrnG5q2@nv=+<+P@WKFV zk)?PPk8&+! zf;{{vb<1h}%(T9B(g8TC!{%df*%B$RjD%Os(TO>8D|NJcsBk=a&f(wOJgX=^nvdT1 zOsc#1)MOfXMlWw6XfELlST1@e@VIiKeiP~q;tdynW4D8@Ge?T_JXXSBjad zZ9LBf#m?=Ul|MsW7WgAqRfUb)d2bCmyXoRP3VMMMr8p%?;20L%^l}QX>Vz#gYzaZv z%hOTV?-loA`9RaM=d%2rG&xR#eHU>>x&0wWxR>1`~(Kp97-UwbD6%}#RY zv@-gAkox0~xsc#PN7p!|Yt0kKg0Q$g#>pVgc4$Yua|)zazP1ZWf`0NnT6nWT3Pg(jCzkAm_3z%J zLP_7h%b^?iqejRnaj{KttbRPF(1L zKxQ@&7$;Qh21S$?6IWG0qeN{e67_4y-{y?$YgYnQ(aZZHl8n{6p4z(BSKUL)+P!s< zx8EBO>jOV{;1@F_pCJhpmINNV-2ZS9THSeb42c|ADhA;0az_aN#5iR-<=W{;@bplT|StwVVdSxe2=^AHrPo{)D|Yc%RFkg zhHSC-iqKe;eNf?3BT=}q>HYp4t$}Q@WuWy*0ec=gExB&15#s|edz1F{ii#k&M$mjs zxFKVk78ZsiI8i4eNrNGEdn&&zeIsObBtQ6JhBPy>u+C6J?erU~gxN_hC=#oN+B}xH z$~?SC>y7%)JC4uJdr$oCP=VyIuq0Q6)4BB$(+zUTk)!hsD6{A4m=hFzCj(>xHoG&F zW~!_&I>6mZs)3-ee$2V~9!2ceBDz6q=VUAF3t1m>YO2Y6BQ=vHzeIwX*NsYDh9B$T z98o z!(20U1Oheo*Bd_e;V~pic&(*=M-5Y@4O4j;IYNXW^}L#tUWL^2u7$MeK3K?__M;nN zh}T!CD$%tD3> z^M*bT;~pMTe@{Svf1Guedk#vpraIDCa}0ei)Bn(^R>*+tx-lY%n|i=P?-RxY_FVEYPz91D3vzi^@k=rt zBe6-2aU(pc;X6-LG|B)F4EkPJ#sww+JdN^kyfbk0bMoci6E!75B>8nGLTbvQH~ z_N@7idbB!RCrAOuE3<#y2mURQY)AcktydOWoehu1YMo!Ed6!Dyc-|8?D|EKLW z-dviuupLlSf$%iE{Ft#)UA88 z+-JOaaR$-}AOM8PfMXtd#eaA?yG2*uMGiryi8Dr>5q|gKA`0CBX@H3YQ?EIE-C0|E zWLgo~8n^=|!;|Qu;WS8s{y8v1Ex!a@vA-~%e^XVB_PJ3(88#H8Vn$8|J+%XU?>WTZ z|0eW?(uiM)?{>tYGT)JIMkwBCaBzN|yXe@mR7=8nk6r5B`=C+E-n91Hz&+7lY42on zdkB4uHcMZcl<<+`>~stZ4~Meq+mQ;6IFqKsGEnf`52kL~<%nrhk*CAo2mi?sSUSwk zFFozjUrD!XCjq%hxS1WAi**innjO&#?e2}R2W(RNsn)AKvdz8YQh)t&pKZtpF30x) zd&f1zUn19*RnwPRw+)vqd>M0>7aAr~V?sLm6%ZvjiJHn+EXIZb>g1y-3Rl{1(F7Ti z^{Hc*x**kKSC50#Tv!Z2d ziynh;r#9Y+K@KE|EHT5NRas1*Z{A;KedV^<5kz8y`6zk94wYmJK~578kpUonES}B; z&_XJR3vwTYHps>|=6xobR_kwxp{ay_4_Zq|qQ20GINggOfQ((&KkGfwnjL}T&8EA5I{*OYhfiFN{~VPjtzZ-+FM2VRjbu+L1*#QzGS$e z5EK?~5aW(XEY;|ya8W?7YfQwN0y>@oJqJCje`rZjVNR_N*MQDE?rr-z# z2}75c>3KaJf5N#u$aLKvt~B{M#LT@tR(JKJn1(9q#tVNtt3&Uz0e0YIaDHGjiwixWRQ z=tsMLWb1nwk0!BN(a&qzo5?W^t!1{a!*8Z{U4e}!QbZiz?@LoRJ!$^zRqn-Yl>pIj z;(NNyV`dlyW0m+0(}Y*iNY?Tc?)ib!-C-|vu+R?#&9-?p$|U{61SK+xqf;d}rAfv> zx6f5o|1U0&<>jw6%?@$ijH)Szu9Gl%R$5*+7_x;jgZS@-)OUS5gOAkke>xg!Y(iXD zmC@_jV+%PZ&U%m5d%eGK?RYfVWB00wes+9`k61vFQRxB1IWw$K`N&BZvZCbB)DRBEp#UX%Q{3jDx~#+o_vf|02p;8wu8qV1L*$wMrAVX}+b?IJZZy)}}Td z<$K-WW8g)fl64MZHd`}U0%xfk1c4~ty0aPJCM@O^(s?D&gm^)N#MALE!L z$VxNIn|9Uohaie*EJvbQv|&w5suw3}E?wQ0@Uh`~TpI6bG0yVth5qLeNpYY)Ef zCNf`hDz9K(%NFsx020=)&7okKCsca+vG7Yb$fIpJ51*<%;>0KT+d5S4@oCR?l|jF< zqB`l~Trbu)fA%xP;&C^UjS^VDN0m)aSWlwkjff=?h{d^1AMkqN+_#`jDw zc@-7M(T(b8_qc{@Z{Q~)-usD?-pjN1qdQ8gPEe}GiU$>`Ekn`K$Y#@b-|uNX!sYV)xZT5dxj7m2NUwFm=v@Hf)^jh-wUu+zM4es@9^Dm=9=-*xpYxhnHxHoZczeAv4 zvs$iSj^%!rC_?96yQ)|yFhA@e;GF(wa3{J}(O7xu{I|)6rV2;pB2fzrtElLxZvEw| z^|m$`i;QRji-q-ad3suH8&rs z?3?peo5NW1>UtFZE+BXoI-G#o>e^cmHWVssyjL%0qJ;#i2=10pQCc&nunGHO zQKzEfpd=C{eeF~FmxMuW(JKx|gwJKB-t)ugM*t${=(Mt zaDORzJjtqnK!do0D^{Tf1=dLu#}6=)a)Lx zJiuzY0094Sw3yQok`sY_=1R+H(j?~*=UhHZ63;LOoq>EpCgaABjU*6wU+Ti2&5dmU z_*cD6OGlqnqgh#7oPBf^kwgP5jXyr&5sQmt{>5nX(XfZgEli7gQ6Yj$^u$Pid$$%! zMJph`Cp>X={n`*j6wGsG^Fz-!BNt+zGGzKHszDT34tI1}uw}SK4(zRZE!b_w@5gke zP+Y3GE1_lt0GEAE-n?NF?~BI&-PD=;Dm&HZ7z;-7edjcK4%sJda}{q*DCQ>1y#Bp3 zt(q0QSQzD=BOeJ5_DT;?rQwTke^d4?mw9+&)iu7e@SMusyJ`O*pxCHKhs2x|e8`vI z|EujEh~Jd2??K!*?X3f$FTJsm%s2#@l5P>DW)gQwdb}BZ;F+-H`YLAmG+Bj${2c$} z?nPjVgVg<8OyXa$(A$$|e{6vNphX)yJNV+^6|Y@wjnv0`_BTT1_M)1zv+^fLrJ?B~*{=W;31zyi;-t(` zb?S1?yGe^v_ecDbOhbL=Rq(w{^Cf()J3|7H{izO9Xgt`Beze)0aYgchaS1PQCqkKA zM*rhgT0E3{&e(zSwu36>H)s7g!y=t{_%bc8EF}eFi6Sf7JyBsSBAJHu^o^IF4>A;) z@z`ztuQwl`JZT&J(=v#9P+hO;#2X6xhv3a$Gg+CZ*Y?%YJ1tIKbF7PMF43Cb+kBq5 zi;4T$$`5^0hX9WV*FR&2W@(oZB9HrrVG5CTCStZ&K>n?h8(k!Tm2BnotqNpOoUb9dq3{?k#p7oU^`x#C(YlZj=v54QMGi_CX<kthEArY3=`$j*1SZyc2fGTzV7j(8-AsrrK#K)1ttnK`73zr zoUv?Xz{XnOz4GBUZvM_9AS)>>H&U-IwRNU9(p@R$51)GAnkbfM=Kg9Gv6>F-oH+?9 zKs{o3c}sj7+zOFvbwo3AgBZ8GgqjL0W-lMMpo;nRJRb{F@=gRJ58t^)>g){#$l&GY zg48FR!Ai@|`{=u1i02Cezd?e8tIS-gH1P*$Dv;ny-0lG5Y|!J8qF zIRt&ED;u>Gy!`sHnJgj@-p4p5A6?9X=-q$$(I@|sBE=BpiyV6$gZ`4bm}KfE5p#b( zB%&LA7^J8m$+vc$$c&F$;-?1`SYBdR^Rj}4KmHLEAI`qcb9Q`+GB#{dx92A+CjUU6 zGuTR6rL4DJa1h|P?$vd z2u|vPMc77R7~Y>o^y|=$>9nPtVY5PA9o(j$o+$;LEjAZM;#mg7hN5SDN~#mLVsh$) z%}RbkQv_#`8>Z$f4}8|+zKA4{m{!!ct75MKBr5{n;^I~HGm~UIGP%1v?4MD%NCHZCjc!gucT+49B4BoVqZM%h=zm_Tmaj+P;oe}mU(!7 zQE9WFD`PWhcF^pA5!XW0S;_JI{P(smk8%qUMqTNgMvrS==aj11iGJWnMjX`6Kz(Q8 z-(UBlBfEdDbWD5UXYP!4QJTq(#7dZXGOUzZNpeKy#FD-df_UGLDDAXx9Xas ziY>O9C)z^>IKoI7CP~Z1w2Xwj4oO3Rs*mb<{7WzNhUyYEuNc!4GSAK}jjdTZ@l%uC zCWYHfh_h=b8Kah6=I`gWQ&TNZpZ4wL;g!FB{zodU1p+AdWvo6C{TL98k1EBm*MyrZ zGvBRLQ`=fYK)h4tb^RdHLG&f=oGz(r(>YpSk%#Bp)+9do zVuOsW@DFrJ*gsZis4 zV{uDaZfsfJ^(62~c$^lb-G!u%ukgR2Y2$0!*fC7{Lq9Hq^dq)&No_<%CB9Cb`QCKr z%AaYCrCwdy`Q13Tn>W}b##YPtOP{~*BK!V>4H>y1q=iOG?!C)lp+7VVx3I{?ja2@3 z>oqJP3EXZK_QZTeSx^WjqW%32K{>*fajL+bN^tDHC{y8SB&TxGpD{IMn`C%*eu7s! za~4#PQ8wvetoGC2dH^Zl*bpGH250!M%&zw3GPl4P*kX{4YENb`TL71E; zuj^}s9X9Me;@j_sPEN^c$-qgdV4zlG;Iw~zL~?DhnO(3s$+_o;d>xP1o{Yr^zHY6H zpF!^J{A?=>RhEezGpyQ|>LIto2>*ie$V9P}{9W)hVzX)yTS-ifw9VF_(=x<$Yc@Pg zM)~OC^or`r1o|V*=)8?*9JULd;Z{5F2+`q{xq^@4(eptX3PhIr8evuwrby(DtiLx( zy^|0Vu;EhWHQ9qVr^mdIA@Vx0-D}Op{ez99YHecSy4;qdil+d77-?LiM*A!dG^R`x zT%Ost;M<)q)6thgLhsAjfx(h-&HH)q8^(De)k*K?jU~f&Ti2_SAa%OSeba>9+%&U; z{K&4}@~aOnF>a9}-iD=z_l6L)Xsnzj$=6$7yhv(~xXKDgH&cbXg2ThZ3a*^QMdQgi z=JdN)oCWA%;zJhS-pO@gifz{QsMv!!$)F(Q3tbW|!PDX}p6nqyb$5mR4Q$Gg5~Vb^rw4;U&u(}IPBJ-ZXkW$p<~NZJ z%rAvNiEEaIT{;W%qps|Db#bXJn&V7-UrR%Hi2C_^Z6^3gd z^Fd=93bN43t}_Lg;Km%`N=1`w+4!T7NN1pj zOT!U95pfDJF8oz81@OFRro%tZZ!0(L7zyRTy!A}tmD*U=lEPHWG7WGvG~}h|^IFJd zePCdVLKDLnr0`gPxn8Ff(PrRFr*Qej3OQwe7LMWTrtV7Y{d>?vN*zH$G0D zn=LT25yk*eK3uh*ii`+xU!`BUC6MihzQe{f29uW;;na5IZZk}DZyL&%%siG~pgW`-g-X-P zZ-}%qpxC^9S=rnCj#Q-+imxG>ftKik%cpe}@?mzS?)%4eI0=Iw7;3_Lj0ilup;zOk zw>AT>W^O#@QKYc zAt3n|f@8BAlr{Xd77aDzxJlKt@+h2%F-yOTmp+pn-?*|tR&Y8r!|i6ObX3mQCv3=P z6XY~k6^eK3b*glViW zbHYU13W6D{B5Y8N;Pupe zN2Sk+*O78%SnRZDZ}+9_?jZMdQ~9p>JWXFmofB#+g15**Hf64lk}ZadiJ=~AO|x?9 z5TM+Ym#`-JqPIfdCfq4RXpLTzErK^vZ%Ohs8W}xRm^!AhHwHzOzN}R^0%+ z#_sI-?6|Uxn#TR5Utm(kZCg@C(5RJb#f+Ehd&J+IbG2`s+i~-TIzY7`HXKZ%tE(d* zuHoivDL)-68h-fnIAD1sASqa9ym5r4pyd}XENH!kQKjpJP0YxxUr9^+HL()q9C@xc>&UYkw zw43E+>F6pg(EOZ_m+QPen%`6C@QxW`&Ul%e03KQN!5(2u-1=;LSz8|j%0=OeOEO=0 zNus%Nv8V6|$fPLCJ%dmtO*QV^F{Cdx7p8vRAG(H1l{0Uu5DwZeaZ; zV6Z5XlO1BF=Qu3*DqY$fy;Psz#=HJLA~Dy~^S+7?ix@bEBA{NoGDEYsYg5BSi-upc zz_%(d@I)-b%9hmKb z!`?H#r%m{UJ$#lS(i7^or97+_#kX7sY-U*+5mZHeL=+}!JbkmHeKER zo(>(yzTjCQ0gB5DR-EYITjTr*uy9LXmqKaWbJ8H2~ zPY4^N{`W-G_@5g#eyk9X5M}_Ad`fWhL4u|(f)PXj7Iy0sOICp#vrK(=`*9=s!J$7l z*Q<$mXsC=2Ga`x;`Us+x3*E09SDvH5fCb0yi(D5R%10y=e&qU-@$`w(nzMVkpBp++f|4f5}n_B3do$lMTp*JD7oWTRMFc_kD;% zMswmHoxao#<(NfOZjpsJrQnh^0I793e<}rJ@Gd!4kQE`8+*{g)C`Abz4fXF$w);6g z36b1dbI>nMHECs4>5yQ?a=gBh3>RM|@Yl}7w{$tHx61zm%kJmuz&}s~W&h5*EBC>M zKkNLSAKo)t*zv|YF7My@4eiExJX42|m{5(VB1nUYe-GOExo23f@s>k8cSIv+^or;v z?@Hu;X`}!3=|UT4q)OCL2e3-oqvF`F)!{bm0dUv9m>z1%88!8wiH>OE0tab;S_IgLCYaR>%7C) zcQ5pjF_p`tLU+wyc81Q^0Wxaqul5A`eGa-R6BuZP*Uee7zqgcmY&Kh^4}^pbA6Ar4 z0qv)NR+M-Eo!hscc84(?>um*-M4{B*-{3pwBvV890`&_|aa)mUI|l4A3cm2Q_3v;` zKCPxMM|u{vzy^zg4+kU(|HPJ;t;+ebHwmqaoU6J1_M?_UlsmEpDh{}oLcg{Xx{hZt z=~|isZaCL%&@{TcGHulVE`EI{%Do+UEIqjWySZbUD0bt=kh|aH*(Q`Nc@8VLczK<< z$xUyr7>qbj~2`6CnYLVAyZ;bgL>@}VHkh%<;^RA5aJi`EN1ozUpi z8wWRCZ>-szYylNu;0jDqBSemWGG4VY*BG|iXuaedeE*_Qs;tFI#@F#S%pgd#&Gsl7 zFRiqNp(h_mj&KfkqD%wn8X)i6V;-X{5G_$>;B%*&5~jET4@*dD`i*Un1iA?&EAY~c zlxali5|4=NiV%|m7R-9^5tA@ZCg;~*HBUPN<_%9Gcm8m+I-RyJx0fO_L;Ko)dXa*a zLxe0yJO)ug&4Fk?mi2zgyL`j>^iaiunU)tSN&FFWJrgM%9Y;D{+q89;k%M@%Pc(cT z`K~)r(%XtQ5o5=px2JgEBzgoDHifWq@#>h9u&pf?g&-qp$Hgm;!|D0Y zWv*96=Dd$JDZKA~b4f{zKUljdcLZNXD*#jxS2CfIp%#<~L>ZNnJ%|s1lZz(8OCv@m zXeMr?(by~SvperdwQz-EkNC6|E6`+8653c%PS|1l1t-&Z%S%Yn5H9aINv8Y0@%1G7 zM)aY`Ro_s5CiFOfyTF4ace@J)YF{88Zuc#pz)byf?ap5^!nU|pNU%S;bfPm573J64 zYCKgAuK3%xac?JoHE!ol!>X8Oj)fFM_`8h#1f>7Y7o0Nob!}LW5H(ft48JkM+%KsP zyPfAb9xs)*)H>K-*jx67fvefs{e|9sMph)ZPTN7W@5vxp5fA_W#}_B<9veU)HcZ6s!$zlEzdy8RmZN=^c7L@2t`zNs^;>{qvpQwwoVA_5Qg$ z_Z&6K9tj1-VAzBLj%f!3sf57f+fbh4V0iVmvHIYr29+y@w$a7BLCZD#!GUK|P zRRyBR>aB=YYL#kj9D>U%8V4UB+Mnr~KqWlm6B@AWNo}OzTd{81RGkW&RUSh+VsF|Z zKgOZ=9WvG-)_)Ofl<1xNZ7U}y^bJC^f+~Zo?iTXIOE#0b+CHlK(vKZsk696rNW3U1 z+s^TAMP5mx_~ZI!opl>zIB)7-g*078))mDE-`LIU{e>viJrY4hcT5NAO%daM&z0pr zM0D@s!VfoC2YB1YSnll$9x!KuYh_tP1mk1#1xg?PoY?x_9UeGx(GGSt$>(TzZt!}0 zYK<6#z8Enq0&)5A$COkvTf~)G^eE^pTkd~Z0G%9eCcw;0Fg}k?HDT^cEBlL{rMRvs zuu%HaG$2J`gwAXG=E^SMjR#k`-4327G|dY(pf-I{~508 z1K(hO^!M~|)hn}i7wy)bb(r)uG0dU;l>#Hx8Ol%m#y~+TF9ELWm;n4Ei1}wX>uSVo zT*t(pO*2RLm++1!XvFUXN(%W^HUO^mU%IYuZSURgc$OmBI6fa;5`;(eUv87SP)}7p zg6rcLy~iXtvW{e$sT_hOMy!RSY>6QelTB$9>RE2P2)cgzPe8=VN-@;qsv8%y6a!I#K=J&4*{%`}Bl>SxFom&9qR7tD`L^ z$U&xBPvM2)croeyu;Bcg6#NyvQ}Xa=DMPubZ*{{Zt?Cw_V0Gpzaa2?~5$#Sb@)SgI zbHDrZSUNpIbdT3I2}zR<-fI;C)jf-z4x`OX*z;fQk=)WZ)!G zWLFo)(fOW4lwV!$+3D4gNY$twm2rz0`6HhT=lNYq=q>2@V!d)ytr!CSsDl?xof=f4 z5|*FZ+d)u6*;$Mv#zldnkNi93K?B68)qFegu2F-xeCb4X)x0t8$jXYxq(u$XCf=># zoXf>L8~r?!bp#w)~kA;m!loN=l#!*aB># zP&HpdEXApw$?0Z>RV2hH^8`?o;F8xQC8eq9tU;Tez+Yj1EW!ueheqw~pp=ed-!|>q zt)(U6m4ipz*@2LB7U@MH!eSSJjTsfBq>SyQg&I4`GRx3wK-i32Z{XL@-IBn(lFa%G0jmGs>+&x+nXUfSxaKRnj3 zQApSX47@H#`Y>=~h45503I@I3JPk{zDF3Ymxb)6Al-;-CyrVrpp;lI;Tuc(}QrcPz zMcNO8*J>;Ccue_WtZ#>N&ZqwX-HcG)Fvv1tK~PTA;*h~vDBn~^uK_^v^49Z_mcAA^ zHrJ14swCmXJB-d`*=w;ny(2_8)nyQhVV30sRIqcFfEa$fJoNJt^>Ph9)O(MI#K1sW z?sGEj5G4k3+Vn9*{3-noAL<=v^6#3>yNPdH&vh1f-&Lf_Okk*N;zCs@QYu}}1tHH- z7)7`uc;8ozH9?-N028 zT$T?!^!6!H*(J&1Y4Pj7@G9ttrXnc?_-J**cc?Uty&fc5x-%WY>zmh}FXCL!w&k8A29Vy(;?v#=_ zImyPaL#cX1_IXX&^I!eb1F}Fu>HwC-C~neLpEzxYvFJn=3Rv;*1dXXJjtZDbWSq=X z3m}-bk#4zTAy(3f5Quul!KnOXP+IN=EhxpM^sJ>Q$Ifumkmex}q)`$pEWx>`aDy>0 zLJeX9dBa_MSy`MfZLaDY@}Sq(bf0o-W4y<(XnFeCq$Fr_B9S>JoKU}OZt;?tEYsfRx>^048;M9 za7bfig*Jaa6)k&nn{es!kGLeAur0Hc!gjD1U57fI5o#Lsz19kMs{9d^C_gl!xP+T06t zo_=N~&zaB8lQ?w#ADX@@AdaQ$78qQEySux42ogwecZUFh!6CT2Lx2Q#cXxM9aCdii zZs&aWf11~xuIj3_m+T!fPxMgQ=a168h~WiN-)-C)@7;j?rXP=QrTZx(U~9k?`yypO z?4Chh%p)e`lm`c&iN_dg@bPq0XsT0L2z186cXFdh97gbbM-hvJq9Ft0eAm7@yEGwb zApED%SN`0EO1$}q3@`Vwh5>Jq6^F253nnoAD?Y#S7MvUHY6h->M;Y`=3`Zk%Qqo+u zW3}P>z2-%fxa;3^FpnPiVF~}RW1Cvqe~tLvHw13(5~tFh!SLE~@RLmJ7DtQVkeSm$xyb+vF9P2`v)5I)&+G*h@L&2p=-*IVDECFVZ;~({;I8U82o1 z=YnUIx4}e7{$kn`cszxV7m8e@4!%fPT+E8c9^4DB+&`yNl7%`X`|#Nr_$PgXD(xev zEETjd1ZK^l%c9qF(ml>@B#Zi}clOF&R_~j=)Y$Sz0#Cf47a`7fE~xKLo1+(c66|Ov z`USnzx=B+oAqjDTV8Tr%Pnl&eF`Lmxa627v-*E|8h>4Jq|aR+jUCZ+ zm3{fvH~2O^QlNLAm?2OzUR_ICSZjb3-2_9JV;q&T?AOvnF!%uv`@lj!0Wb@o40Lu9 zvSkVbEzA=U&kS@Zk-`N`Z4WWL$r%<$fxZg`dOaTT@~H?H0a@6fAkV?i`e4>;i}^<7-W=3ZPF{{)kmm&eW9GLxa{75d?J_y>Kfx(%ObHsb{y=-<%ZpK%lY*vK)i~Dd>1~4IU?Ntv# zk#~?Qe9GW)jzSbf_KJW2le8@%I5_znTrkFXNCEp^o^Z50a(t@dq%7KBwz#{z13OqI z5Cble3r3UXW=?-_??MEQ2r40$3@gd$r_zvCQ&mTR2AP2lg}5mjHLsFD1wj8AzNjI_Enwj=3%5e(=eVSJyQGtJU0d@ zy+vH~lS4*Q#K*EI$p3It4&~vmhC0uvo}#v1xHK$c%zL*0_{Z9CnCR`G;Zxhj(39aH zm1w8$W0M2%5ac=T-vLKF;(U=wzwb4RrPk1r1|AihN`@<_5A#L{R*fS|aAlpBBgk$a zyNzf&AkOA>`?$CSK3h!~#2O0VeEN&LaoJooUHyz)WqtE{G^>nU5oxW65E*WmVTmzh zlGDd5Xq4V8DkR0=w40NV5a}-={ci3n!baFNt%-v7+nP7(oB-kN!(=s9|Gqdb(W^)F zfyTKO>`zrisYZ2mvHnDK7_2c6SyE|5+X&8Jrz@W+%gTrx5imp{UoCR3bB?!urDZ#@ z?oWo9(d6V=ZL9Z)e|i{t@cV0lk*+T;cl^gC-5v!wq{VA^tcOz?wr&f+Q(y;p3fd$d zzf_E&CWz)Jqs*{uB96t|p>-!9qE28rKhOKRwHPh)ATjhJMd=MBfMpvU%6aPc9e?pc zwYoW~S#KHGvkz6EBYjAU;B|mJkR6vFh}LUe!XDR+NgEW)hU__ay77T^F(z3EJ2@$p z7$V75;peLq>R$f@{6U|J1J?sBShsO+>sASp;9uXqnJg3AQSpr`K$>%ZvUmFO)v;74 zRfE-M`H!Lhv60~oc9Z*h+f#^P>nN@;{Owz}!}bOEa~`xGYC0qg$Hq5+d*(2{X>Q71hwjC$ zVaI}2m9<7q=qY8V@zFDKnGM zfWix@G>;>HEG5PP1_?R74H_L$8$E`dD`}PWE{pRrUROs^1~(W}|)ML$UMP1XbUO$+4*5}Bky}ZuO#@49g>F+!3liZpoN;7`@5rsi4d_vy` zJnhMclKdMYx_Bschb$9UhGyxTtUS^lwMa?d=g>DSTe8spM={fRWyV6AXTO zh7*cxId$r=|B;fZW=RBNTz@1UKXwX6FwmMcDndtkEGC?qept;iJjJMZf_^%95NhAp zs6*$SkVM-xXohz{Ih%3Z%oVU*aUMH+>cEj)mU0s02|${jp^v#sfl?akH)Q|3#r;Tf zN9kJSp&Sa%80z0l1{nlys&2nF>r7NmD6&4k>XB-h#`=y$2h%zz=*IN_?O2BrnZ05G zl#>mW>eho{PX;}(+tT7e>-K9--t^V^!cJnXY(V7M_BN$i+t%-8EF~+ItrFhjLv`C< zw_-ZNQ`)MW7T1rdD8lK}B-lg&2I~X_82C<@h*5<0^N1)YY-6K<01TOD9DudYUpMSK zJ4CoF7+R)^$p;6pHNDhC@$JIn>E0a^UA|^rgovnuTDon2%G>13h)yOFs!B>YqP>tA zglh1}22BV<7xE8SoYvacR`C|qj$R}`YvTmIP=uuzoTxg{V4a_F>-kLdGofs03e`+q zP^Cm4+q+%ep9oav4pm?V@cy{tc}R(}-8zUwjyY#L^amvr_nL4_1@=G7`D%{C&6NCf z*$oZYhT6SEh{Gs_W(tKJzxFiTa-MPjwwG*Xv9r4BECU_xiMG8tG1iFC39MdR zd*E$xNIb$7cHNv6Y#PNAs!IgJjE+V_BbQ>vb zv1~ji8!DMvzb}gx-o1m}6k=t@f~x;rdHv${?#)4ytbLTb@^BQulHLdEA%{bJ_>~*c z?>FQ*f8HI9`6%+(K#Q7T9#9l7HjxRDx=hD<**6U%J-_e!R=k8y7Zk}dpKIr@JFziv z|85pIbPHxW|9rnlEd81CWHF1PtlU=Ti%I5D!rsqB1X7}AqCYkJ z0Wsmj&qSb-5uyXFX@eJ33>n#XO{PsHL{HMS&VDJ34Wo}79v$exHnG)jDhHY_8k{i1 z)lEY6dYig_#%%RSKKFaDc4>gmG&UOESdGdgo}kt{lFm{YI&Wuo>fZd$dE_zJd&~|K zxz}^sx^VbD@b$Hj=F>1)znK%`Mx?NvNqSq$xDix5624yTf=%4-YoDYW-myHd=eNbY zH-}we>z@XDiKCNnv76pDdemD|rWxFP3r#pIn#wt>fZWSa*^=LQA)}vH;${e-G#t<^8eA_UjfV?I5h?MR8mlQ1!p5?8LT0 zW->VZDhI#xl1<7bUj%H=YD{jqIUgXOuz)(0!3%?vl2~E8&go6?EB1vg@;G^F+=+t| zKfQ1Ak*g%?y^qzkK=r)wFM0tl$R+L6kG^3!fP!qH?{kiVzW{|@`aCx`;*)LF4*}}R zfk-=r-3&`Yz_OW zcp(k=h%OjE^s2@DE0S>$qt5k^xhZ^uS`k?`ePqzk@z6`W;eU7nO3JuzB{tC)86+}M z>*^})5LTA5htCa!$L$6fXJ_--DiVRy*DxqFs?Bbr!JauQYV#{Md#Detcq$@{ z?fhLAt&L;TTZ8Ho)EoS|e*Hg+0AO08Fb;VZwS&#WoyK6|0NchjbQd$v0!*_jdB2QC zelYGfnj}J)a*|o|>&NNE7WfEit_I88nID9v!@VA~;*&jQ3PrgTWg~fp>l3^nKM>3) z;u3W{yI%xR?i1X%?9SFy6_qb{Q$NB;NbE{+fmCCloUF_%K2m0teU=GEyGmHPqS=1% zy^?z5WoowVuGUh|eP5d<`=`!|hxf)VH1qM$Yl_gj3`GYwcq#nZl7UCN5b;hs+D|6Q zoDl0YBO~Iw36PFyFg4H{uJ-IL_tl?v|NYOGeJkZ)(@Cw~S#^b@i z_=j~<#(pBLxwMI;Lk%sdaphozAW^$~wl`!yhanOv@U_Ylq#ZBzkx7sc;2xsu?o`SV zJ8X{-(AzWEE*|#Zp4_z+f4+Yy!(}5@EFsVSF8b6_rWO5C)05U(A!TV-VfB!!+``BB zr9*^5US7tkw=oGs=tAg5T?cXsgxI?2MyJ?u+QZjoq3Cf(9Kr?OWa}D<-DAq_L{^@KIR5<*ME>`}qdVgOmLuB2 z7u~8u3z$KrFu$6MDb3XA0BEk^KXYEToMh^mNyCGdaYaPc5MjdX?AmMmbW$9>OQ_Z` zJ1yS#UimAqOp7e7ui01P2i1qj2gpv0Agv(aF$`jx+&P*$r}I_&6LFW zQ5hft+&;n*5D*5n0&__g=qf90Sqq9i;xR%{>OrVg$S(&mIsa`EL5^6s&D?8TwUKML_bd0 z9%Y+{u*#x)x2LqHrHA6KhB!8HFt=r&C7eABI@p;MEyd8vv+dR7wTLr|a{~sy$ksNg z5ODC>!Q7s9*z1;w26Nxx_0JZiyuBNK^7YO$~8eu|SKdSil{ZE7z}E z<^ucWBW-t7L?ytNHq?aYY_}n?$@g~FU5$gb`!i|QH#F?UIs^n}577lZr0~G2K61^Q z{KW^#O^V*0ovCUQ=5(4J;^x1I>9obUIHS`mB0s{@5_i3loT(!Krn`*4s%kx z-sy7blXg%0@zEG;*)zKcrNGoA^!zd(?%tAcHl0)HMir)*F^?eZejYDjpq99WMuYE; z!xNg?p8eEWi-%KS-!^~AfcfF(N0KpubBik^uG_(-h%4eXj$3(=CIqfYt zn^;7rqyG1mt;Iq9x^IVaJOc1yUQ5)mA^zrSNd46%{gEqMa!=8D3pRI6ebiX=Xo67& zJKa!99HwpGNw0RNG)#yWVk9j4b3Hx#)!iMeyPHY6*2QERPEPtp1<@vkOTxAi zBD0*793SnJVly(G4e~t@1O{Z40*YKEr=pUI$t9O8BV&2;Ub97SVa?w^WwttsS$kM_ z&TF^FhsaHwp!HL$#6@dsGtk2%as|V;6=^!3tej&L>#PThAJ-!v6K>zfHUKx?@+7}y*{_*Bn3WkpQz?5Y~3xk9wG;i~uYWyV#Lg1E{J8mC! zuS7(p;UxN$tkYE?Y7Gvx$2C+pIJc@vxyS8-Fm+%;ijl$30}mQHc*dHQU48LR7lI7q zaEaFBYWF)EKc%E(g8%9D=Ro?u6`6pzy!;pIfhp7mjG$753UHSisZuTpLM{1_3E$D*E@X9{1bP` zo=RJ>zc(;CO26`tis25tnEVKZlmO>e!k+>Gk&|w7-;~#$Jj=(jJf*WBtncD_r7#)- z1i@rJU(k3eMiB~AvtFI@Ne=Zr-CcfDEk-eBnXCLUje38_(HOS>EUqpN@J7Zl$_TRo zKvl*E3atA8^sSME!41+S;&5{=apl`-oh_wC4;qFB;)Vf3|8`a@K3#DUU=yw&=E5Op z8=Ru{#A>m8TWYFoJ)D{Ri+>S{JVpIN(p6})-9fhUr2q{nDIz;|WU^zV8ihEO(C_LI zJBH~J{a7**}s3++CoGncKX7njLO70hXq0UHs;m2wv) zeMvx)bJjjdQ1>Pc;K3|u{46;>Boqpd6Fwa44LEW7(4HU4yS`hALeK~EayrD8BMrkV z=7EpH-(N#d4zGd3m*#%c;et$_6w5{tCR~$;OyPdzxWq%a@z?@j2(`c>%m zG;3yxl4Go49U+Oebz)j;Eojg1>GeRSaJc;vEhjQ%aH#R5zEl!Kx zrS;PJ_C~`!)I@B%8;7Xj=j27j{&uG}dv!J;wHQ6J{fBzi!BWV~iINJFjpP3g$E_ok zYQoh;T0fx}AS@s!5{||~R%M8N>_mpkve|opQGqnGR-pCX zKHYVq;WY3akQV9IgnZ{|2E9eyN1%e~=YzX4`SO604rPl8YN8&z|gwdXqfF(AZ#NRNE%YbhHyc4B(Z6Zo*H`n=c)Wku zm^T@Yhvl95X&mHklDoTe_s+Gf_d%y}|t~Wy>%#2q?Ws={%m+rbD;`8rgyOp1i4D#p#^+wMw zNF0*jbY@3FT>Nj&om)9MD?B2v1OIl5SEip{RQXS>8^UFxx&8F>Si;3U3=vHu81?9c zqX<^JZ?SN^Gg`;rUxs}B8r`{Ht|oe<-o;!E;mS5Px;bUWGEkEH9myK|!y^Vf0vTT4 z1{to40>!r1rsHI-u@ztrUp2veX9gMpVNNpW$jTMk>dY!r?c()CT)g?;VQ)JBgFEA5 zh`K`wG+%3QQgvZ?@P=)1K!`!$+UaITcc_EAaKlZS2I8|WJQuRmu;ED8_W=P>$BsS7 zuINi}Z5vgE9-mBo&D!qIqG3~!)+0VPCHcVeFZFgX@m3BYv$Mdcepcg^iaw53igUnE zEM)Z0;~|DD7b6ol|9D1$WzL_s$95}BGjlHjg-Ano0_hzoGZ^~d{+j&?H5fu zhD92)!$@F8JLs_^dpfOG(D$t7SR6qiB|XWaPqAC;LTpkUel{$O!yI@8LTKB#I7+E*>+QHZ>w zHL9BGSu6rg(fZqrKY{)OtqS?GhONJFS%4JJnInS4?ii`E)|&WkqosOet!CJN{|8|Gzd9 zOM9Efq}7g4>M5~FLCNMlZm_KvAZz$t7rf{;mxg(r1{Xb0GX8sc(@_X&g4v5}AUlGa zj=Z}TRW?Tb-+2%N{DlXDDy=b?)>DiOf2i&0ODo5S(|{+UfdJkf>NcWd^FZ_+yA)jC z1~AMCy(&c=V?9Q}@B7UAn4gtX>{+R@-rpmbU~~@`DjCN_kr6m-@korYX8y%DYNsmtLA&#Xph9tDBbJ!!P`DKJkTW{5%n2M1erMC z9t|}S7x8Gf_~l0}j_oe1U)JlKOURi2d;hnK0Y&Zu#(za@O&0qw{m8 zA!H|eZ#evVKXq6|ZjB$h|0_rDwNy>BA2bn_?W>uS!a>VwYSiy~Z3_%v=<4PCt5I(` z#7IyPHdRSXz;WHtumLdCtprBhR$>@s;)g!}kl~N?f2XR#7u5J?F+`2@03EpA4xnAY zPUbR!eX&(S^LQ{TQB*Nnn1;rw+OU6s1xDB+Zb0Jea@~i3lonS+!g1{jLG!HdH)90? zbuBp?2Sq0rWM`%r$2l9W&4N_p^T_8^482 zk#0!CymbH9xd$JB>G(oO#551-k6n4O(7v&hgC=faD8|VKFStb?JERvP$%I>*IBCXZ zWG~kgeX5=Ty;Y5RZ)Qk{B;mw;1eokm{E17a@$p;OUbNJ2fR_(|@)el}UeCXKWtH`A z4MG%LFjLr}v463p#urizqUz7e7MeK}>oX<#q z(4ML9p>h-flc4G$H>&c#kNKKYEX{`nr`(CrAleoVNW^}0F6lyhaCp4pDMEcA>=FAk z#}39XDl4x??2HdbJpQV;sS?AEA5R3DC*eKPK=g7 z`5^$2Us^AsLtb4P*aL*p>Pk(!@|IURH8T+}Kz?>Ump5zrr00fGM#KDBy z+mmI-X*{u2HLA9Ti-;u#lD?*i7_!6cnzuO2R@n>tjK2ZpD17p5 zQwfk~bunt2#Y8=1LhaFTPE-RKoKhSnV$>WoJ+maAKKn@rm)I|5De}X-QF3-myAv{Z z)Xy?I%%LSYXlqwVGAStQo@@PIrR+y_0TI3I<0Dre9#YBek08&arc-|aqS91rz$XXT`=X;R%7^u%*`A)jPi7cX&Nm{U{G=pxi{hMufgkL9 zzZ&g6+Bw#Vo19~o8Hihmbt5~uAfR=@z2^X#xbl1fCoc<$h!rTbM!Tvo+d=Y$Pn{?L zkgZy~y}5Xy>_SdU#9$iCvhpG*VD_Q6WHZ__7HTgR*N0Tt@|#9?Ku#M|Lut5O6XsJF z3ButThbmQ!T94T}MCmF!gXp**3!kVlfK7cZpJk*87?G4oT zYO{<}ONj-2gsP3su<-o^cHwFe!;b{6U`?Am|EWn^T@0@(SNRW3 z0g$Y@ueq-@0LHV5hO~+PGR1aFUc#opJ5+yx;tbo*2%W7*HTQid{}k0s`DI)kZu({XKRlo}g@xjsEe=&1+e7d@nq>_>Dlhl|UUU;$hQUl1yc_=>iESjjWHB~h^ zn+EFs#75*UwHhtUk z7R}QD8F6v*Z{yIu-on!Pydk(imq>em=RCnEF~goKbRo*bGVLx@rL9}uK0VBx$0l-t zf|vY(2HdvYyUz$sNgBKW>j-6hJ24@3Ex)lTA42u31f6h)weo9N9I5YiD?!U>epG=O z$pa0tfvvRo7D67anq%o;K4+FTY!e*`(v<_v>Ih^l0~2Fy@K8@K(M!POPbPF68c)=) z2>}6)E+B;O(C~KxpXd9+v|%i=ymHfomUPFBs{m;2zj84Qw%N`puZD2MWzE`9=mA2J zuk!o=j6h1VX(xVANLN;471PNZqpt&Iqo>lVWdvJkSFz)ov)Y;XA9tTO;YY74{4FQq zXfer|{oedF8Y%Ie7@JjLe-`Lm%i!xX_|9ArZ=wXVEUUbIGeK5DdOTjQbd&I(6aoL9=RYjP`Pzkb4(@4 zxw$lDQaj2mLnZ~x(>OSuYiU@NOR%d`0t%akd62e4xqg7{8d{{E z&SR|kHVa-6Q@Kq8&Uxo!#~&ef`k^L9-j7>YG}wBueArPag#j@iv01KEI+(s=8NaXu zKS8nicqP)ma{Mb(&L$wj#)rWaw0+?bR=;DqBzdBsud~6sqn?4xbR8*hzweDFaZ#QJ ztkxpZQ2}lpK*bxz=?ocY#@lYVA4rksaBHhw1gX{Z>cWK~85w@<5Oftb%rrI!f<){x zGH^`Cfd1+u)(RdkUbhFBz_DJ&4z}?0lC5j2Uo}cCP886NLW>~S?F2J+(g@BpeTZ;X zD;>Ll5Ow!f=DP6y>cIa%EJy|^M5-6l2w9t>vsX=){y$6@ja(G~q*Yh_m7UdfDIyP! zu^Bz(?Tg!5mi*J289eL{yH9`GIC)7~Semh(^F7}x0h)+Z>Y;x5fp?!SBJ&#k#V1`}L<77K7AZF9 z8?M+HqVuR%x(r0lH;>%ba;*5-8ua(N5*5tyeI5Tw?2dJJEAkh`y=Tc?b7!g3da1DB z`qw(RtEU9gm-LzK8~pE~ML_`P?J(y3tQG9Xg<7Xqs{_fc*=iPn)%Deb=!M#n>3~@r zPjW4qcZnFD9Zv#~jFnAPloHkP3-XUqLtHdm7_-Z+r4Mw2#lr=-+^C$yd9$W)k zd&i{9j}L41+VS!B3P3(T!@Dv8h+`f5r`^?wk4*EZp_`*C<7v{U`sxg|t3-WXCN3A- zp=I`JvK)nPv6ouf{ub5)^#&-sC%V=+KS0A>g((`<7^&-~ak>ezl$Rwccs~t4t)@gG zlgBM38c5K(uzcXE^dM<9p_kt>q; z#alX&X%Qa5M#1fOQ@;c;qhjvosbS}bJPvmWvvR3awEpMsH=W}(94X!#owNji(oXpH> zF!M{lg$ep_s-?y_E1!I!2=EL4+}_ZT6yN{YSQKw7;Sv!yTfVbk2j&ezs^wg+ty)`~ ze&^;|zvRAMmc722Av2+Afh}QKYp!Y{#pu$=g>fH_XV8kW?^K*3J3n0zY9LOvK~_H>`J-Va5%LO8d3(#08Rz7_mHL`5I>{SD1Wtd&GU zjTuebUCs-clv$=Ct=*?As%4S_?O}uR5-Zq@da0kPT%+tSc}EJR@z;4hSwj|COg2)o z;q_$O6dB#eD%5Tt448CiBotF3si_bGt+D-IBJ(wcaFUaCdN(zJ-bbced;_NDvQ;kX zjaQq;@2a!2!&|q<%tK_3)y3SpYgV#JdeMgNo4;k7i3n}>CD?-KV2G_Od|5VKLE={^ zfwp*Q)d|&_ow$Vg2Ol&=RcGn-j_b7F7rIh6v?y%N)P2}PWo52P!7(Wn6olH zqR&5lwj;%3Ho`#*#qWz%Rfy5G*S9xS zzBvk}tz>^Ey{MpH)(?WO!gTqg=d0)^ZDqmPn**oIW*j`j~semL?m?Ir1jhd7!0>CcJ3{>aeNz&JcS;&)uy^($;QJDgCXsR1Dt-ZY8t1<#(BD#8J2QO8 zU8PBGJsQk>r%HsFj_4WXk{#yZ;VyqcpKyJshGTI1%L0s)?;-!p!;PAH$1>AhJPT9Yep6yWf!p1ewSBMyR#lp~N6Qor2+mFpJ@NE%~b7ki*d=c}eTLSiUhqDa0rx@*w?99bx_ zWBIOdm*>bD2g)1*=84l$(Cn?Exn(6I@y+=avg z%bHAhX`@N*sgBFSc$W@e-xAi507Kto;EeZLyB88}}Qwlq?!|M%P3%2ne1Ag)Q zY7u8-!OH(o2)Q!VFQ472TmEg4_19ilfaJ2pYF%aN>BcpE7oykCsGSja$D1ztltrKv z1HDlchZrr&bzN`ZW-`@}gXu2WcrYa<(ogfo@p32{R*-Pcqve82Sd9zfLm>Cy#F(+@oaBw$ft-F0@0AQ6rjikLljsle55|X4nDDZ+)v59Y~oOW)r!ri|@ zV`$61SvojWPG+kcp1a$|mrhfsA?YR6xs|i*pzNy}5J^aWjhbz*k1#5!sP<@O&0y3$ zS!)2uZ2H3{QiZ-(JXjkJ?TGxFey7trZq1u^WS}XeFN|QmF*T$lDKiXexJKsjlUA67 zt(F#LE8xjr3}R=+BQVy5RDuGCv(|Jh-ZvmM`I_>=Doe0S5?jkVUvKnUb-_7Fh+(th zTOl60b%eyo_%QT%bG( zsgUNuKQY(0pN?OOu;F`cJUSu__s18@tA%AvrD>{prplkp6UR)AlLg{h@q||PEfMR> zH*Z_#@6wu85psNVIS!KQDKOS5UYItFJW+OC%{5Imz0@xWv0({r&=}tsT9AA?210 zc?no{0WQxFs}Frqv7oj=NmMpeK~YC?7&kZLb60OBRuI$GQQDr}iBlx(Sh%S!K!&!C zLb!{o*5;I82Oxo5#PI@;l+vZ93^2M)y z$4Qt_ZxmdjG`Xq!iM0%3pts+5*w)AUelj9q--s2DAmSh6 z{OE62bRvPh*tA6GXO6-pukTpA+R~#???*;lI|xb{2eadc_)~>Ss9+K8u|)7EE9Q^e zW?I=jJl_r0F0|omp#p1Ul0^j{cpl^ePiD2n6+91dvo@$Gk>>{u0z5f`;kE09#*#9>^XnetSXgr6DWgPD4&c{Ht^lkgMVMCZjrJ|hw?Up z40h+&?P2xJj5rFsTN_&zdn;$*gXLIutL)$X`qQ0|xU(E$?5HkLETFuFuD{fW;6@j* z(SeXcYBx_%@sYHQb!t^0qN#O&kmyy%<_jG)At?bNef8_YAKI~Shxoe+ZU7M96d!S| zmYW{Y-g>|uxOe6F^@BQHQ7~HFQI%##xEpYAM;&54PxY*xT@zV$ZJo`ntSTSL?yQfb zCnq2xrlS^+$pgdpaU--cC;=KAc?+y8K+otxBY@fx6 zYmG5y>^tE~`cH_JPw7R>kUtyHkYM$yM0^aq^pVX7N= zQrV=#-%Rhi)oaz5=k7;C6?!^I)_+^~>`mkP9zJtsE*;=*%%;Hmk!u5OD$rFLOlyx~ zsLr#}zos_UlcRY1ah~|`&-r4U9|k;nRZ$gg*qxo*8W=NZQ#x)QFexl>V8LW6 zCL_*I3afx|8ZvihiJc3Rt#mt{dw$5-8z_rN z5oDHBFe%MsQkF8X+SFf(!F&9Gty8K{j_(8P|BUexpM2-ph+h*RfnKo+`W`nW$J2kd z&+hNpHfo`S#woWzQO{yz>gj3iyyndpJ- z4XYXdqHei`O7W&lpwn$vaEn*niNgnTNf>e|EHaL^OY4-R9jcSC z^is^|f4O&kdw4uQ!5|5GUVJs_*?lm*l>~b;S=T)j2@-!Nq}urM%R-$0Mj#XxP&&@f zn~6i`=V1oLOq+k7U%ttQjQR0T$QNRji*jYMP6E2Iq_xIvMYnViYO}lA*Vef^b~?T$ zPOd&U>YWajd?JVP9sWg&-sKt+sKs={wC~~-{o}axa-}M!fG;Q7`&h8|EBc3 zrMe>|mQk3Sa2^q%(h|51le%msugO;5J3&Zb?0f>klIF(B4$aF9K4l%aKFi`8SqYYl zj=_xsJ>t&*|H!=^LzOr9OCV8Fo{LU$>yzr1acley<5d>x zFmh4^XK&&?@!`PC$u0fNS;5NIpgcG02=f}JfUdl(lE;1s8zV-*ypkIHx=wV*g8NuD zM%r7R+LzGHgI*~Z`7MIOTs~HQbh*!Knh9I5pB><``fF` zy(u}BY?4~S?2cOO1dbjC_zt_8(%% zFFbwSNXtmfx%*MV8f{QN4+K}OIJbxs2W)!^+0g0&g28AKQm#c?dI82KG*evQ zVkGgU-}Y5AXWq6d#2rWFzcG%OtoJQon+Qr=3r-v(Von^G`k@>OG0i2ZDU2@?1nAM5 z-=f~u8acbp@QC~Hx5Y^&A-_n4Oh80Qe@3)$4d|Yr?}s_iKM#Yn$Ccx7Hc}dVbt5_( zOq?b@&xhUy^vwiC8({$vSyVAsvD*i%;1*s;XC+8^zJMMfT!5$IAd^z%)mIm8d=}`K zfC>4L65}Pzf%e|otq8Q{=%lj`+OJA-Uzx|=TMP(@Bn&C-hB;su{|p}T-tNMCESZ69 zoFG_44PDr!6GM#(nc&{>;Uq6SX0HCA$N}`0!&`Y{hrHr*@mAemb4v2T;6uX~oZE5+ zlYho+VohdEb~3zd<}5Z+*E9S2{^g%Fe!@4mdOBW`g^r=dyYDMfPoYpcAx=QLr~drB zD)%U0WnWdDx1vXVJA0Nb{c8^rAVJWl%3cDNX%>hVAouwn}-U)rC}cvzrJDotkoS?5a7kDlRInHspMp8jcCtiap{@TO(?HTh1`^ z%>fBX6xb#vi; z1uIRAUvpo~!sjO(cgJ`%A23D2Lob)J(&-k3B~4_s(HjyiVM?Ku9+8-)6s z{8@&R8eM?AK>$lb2^|W%0tT79E1&ZdFyo{@!;DZJpCdMlP|7w(U0$W0I`g_fQj;Q+ z)*5lAze55oOnzk8zSrWg3S_%f1$5YjGGCBKZW)uF@8W4z2wXq}95BHIJGS~J?|MLI zu!LM~O`vvFlx2hpQ$*4Z1$LaQ*lqu7kd($^Q7_c}n=|*-QUhwE!>>){@uR80tctf! zi57#V)`z$i0msS>ozA4nbMwez#TQZTJi2+Rrz%c9Posg3k&FMp zNQ+W6R~ppRh7mOok0r!|qFNy|jE^;TH3R*(37lZ7Kt?Ez4mMe1BWecp{&|DEV3X{^ z;3x!PSOCRtV4NWd(mK)8cIGaH4U<6Svh1DP%P9dNL4z`1Q z;lsFZla^ool${DB|KNifZCxYELgU-1F4$5g32w{>(a`p9R&2Ml?#|c`)my@ifJ=(R za!JyQ`|t45>V0;fi4#C#LF#8VT`5FFv}ad4J09I!64w(+$kUBuczf zF%2FNcI!Izn`>4FLk6)n{Xbq`=FnO>&VGDX#N;n?MdOyg5>Nrl15qy73myBA z`Rl{Cv;>myoX_pfft6k?Edu%|#YYT`BsZJ_-XgGVyQ5&nkdnY#dO1{{9rBYlQuwj_ z5v4GSZF5T#pRL5WC^)n&8al!Bp9R4yhU_hDj$-gWaBpI;ch@jL2=4B#gC|IWJHg%E_2BL<0fM_b1oxo9 zB{+PYcdfhbKj@j>UG-SihIF|>j?lyGC;3F4$FHxy>dQsAY=7GReg*6hXcK@4>lg__ z>v}Qao1ocCF}XsooTXQUqk@-EZ=g|1ygP-43~&`x`slnJ%6?|4($A-U$Z4tHl&q<~ zLmzpfkA6nQS735hT%Cg7dTVhG>(3CK+_~&X3T(&Y%-lndA`27!dHz<9l~}=h<)@{U zq!<>7*G?84arAv1$$i;^=Ssb78LKhME`@#TUK)ibB{M5+}~h_dmx%0yo~N1pfjdL}C}>tQdf zIAtC#$=EVTu#R)2e6(42K2cH$L&epa;@&@)gv!lzL-Vn?5`PNJG|oXubEq(v0+pfB zz3&t4W{MpD?=XhtAUJN@Wu@X%e{cQ_Z9o$b`33V<%!1yS-?q3+F(?C-45b-eWaRfq zlPt2lV>E6{f*iLr6I-%_85I|>F!2V{#gGOg+?-c8yZX8_HEpd?uz%Z|FaKk3gD-bS zvk@jaP&z=9iP|HX4a_QvSgnfp>u@T|W6jH2Hl=0q=wnUYm{O)m5rD zx7O(Q`m1s8D+Wy_LA?7tiCx$#B~d1#L>e)!N+$+ycghRve`CIM+;?vQ_lNYv_miw+ zhzZ@wk*PL=*+1M&dT#GBaY+bqEYSEFqchqN8$6O%sx?*P<-L7>u5W?2eez z*^*JKjHWS_+MAcbwUY+xS#W{1%*y;m7#M7%c;%&_C(J+`q=Yppeo# zSyY>b`ippQY+DY4yJC;uR(ABKPuF+q=(Qv&I`(L{r=W}>6nuQxf)%rBGsWZt#T}2E z@S+2VjbqMsma1Fc_^Y!%XD9NO{iWA`etSGvs=8*ebfMJU^k)X7&i{El%mbnKE99AJ z!Oe?GGvPDft?zM>eTU3N{|pP6=Q;Q0Q)zikrOCWlcmj7h4FE>gV&V1QHWn55;Xw>b})2d~GiL5+<){EP=961@kN!vMcmm4Keqrph<3o zoDb8((?>pf5pK>Q&qrW!Wn~035lLuYp{oUirB8W+2Gp~ce8wv){EDfxDyAm7Vk+^w z1VpNIX{=jp>RX99odmy55E5l1ntYf$TdO?jHh~WeFy)6HxWY*a`i;Oyk$UADUCZP6 zWevvCaC7OYk2BREOd(BE--JPwZjbzcu8*UOVa%>IH>sRo;4@zk zeQ;cCRJ`0sQtYO=ztmtjmBd#deB7)swxKT0!3_bVp{l>0iiNM-gO>8DQ*ZiCY!%E1u~h z%YYn@teYZG|1nd5UwHX8#r?ZMQM8tUmlwyj){;0+)&}vAths=vI*LxpYCfatq(K%WS2Ua1QvMRD0pz6-G*)}@9AN)sk8t>uEZ^LWPd#4 zLE!qB#_RS7y}%Wxg34|d7puCNeO*`&^fydN~`I*a&FBBp`2F!<*b;tXJ z`8%94EW7BP4g|WW?>fVk&pVHKf&(6o2sc6vKvbS~T4Y}i10^IXG_%Wv$q9s5N3`9& z1Qt0?Ca`5H#hf0^i}w!}mknDn+ute@OH@GUe;H5T1RL`4eTmS{&W<;Mza#| z(Wd<`W&rFF!^OqZ&6U6>!v_Jov88vTu$TDZg<*qwtKHG=_dY6+In2}~s5=Ohr9Ws{ zwp{|lDUju9BeiUw7G7&jrw-V`p{|~K`0H@Dd^G2^6RXD}5Ic)4{9%L0?~6~aG)qdG z`mi1^Po4bic>;i6dHLUk)$9j=SCvs(HMgfQ^x&AXD#BtYsp?Co2}p3%aWsvzaooP2 z8X|b(E-rQA%y|W1%KKw_UdT4`)bX6^sMhD})TzN$`RibL4fcJ314o84hR=DaQ00fv z7TIpm3T(ACw$ok*G$psJc=?GeV{$jzPi0PYJf9047MVnaO{S<{KEXWc`rR@HUQS`$ z2Yud$6%cuI*dg0A8*HywH^ajtKgTHjVm_tDMB2rbLSHsq9S})cIqJw69>e9Xb?sF; zCD_onP=!j;34JH2g0;0xB>anhec8ebZTe)4b*E~Z7Y7*7CwaN{=nVQ*tIc5(_KPSY zANuL&*AB5)xZHvd2)))pwomQ;@TJUrgcQlHQBQBQx7?({UzNMD^z|&P37}j;Skm~cV$zjSB$*Oht;Z998z*05&8f)FNobj6-?@ z2D>H821IiluSyUAa=;$;7wp=CDC$o#ub*#9?p3D?=!c4ze-iij&+%N;9hD3b40hB| zuBDLNTa&VSA5{9J40)@#K?MHn!_tRk26tBzHofxQBg147^KYx)Nr0#;f_5OCW$E|m zJSsV>RFM_8-%DawoCF=o1bG94T{MODmDk{}Fe}-dd0S7&mG<$gbR^}pP=bU(;_kkLTMwcXcYE*WtUzE7qZWT zA;79I)6&CQP9_}UPFjn1rCUw!On|ydb+oA5MdMsFWiaTIspgqQcV)jF7?kT>H_YQ2 z;1?Ii24Q#34+s{6K>e5ffYqL7s&7edlru~N9+lV`@3HAv!Pi!gam3k1+5AO32 z3>3$!9Z5_6X~8~VcCcSJQQhuS0jubtThMaom~qV{BFEliB_@g;YZcIJN18l-#lwYC z7?mX6lx9?LzyCRG2c6%sa&X(LV}UO5=P+5WfRz%>92x70$ZZ^#fzp?CV>qI&WL85+ z@R$-~Oz@g}bf8v7#*pmbbd*fy;>t$52E3jmx4D@*>u*6n!_JIVf14>=>N&IG-Kx=a zE9?ND$Hyjoxwgq2HsMroFqwW+UY@8&*3xgmtRwTbnI~@ZxS*1Lm5MTKwY}(I$_zx< z&wmeqWuh;Q3ACM16dzl&IaDN~(9maOdWZjb+K9?O=ZrO$4lVyiFCG$P6hdCt3@014 z_pjQZJ+*N_a*x}PlF&{)GGD})%Q+*Ix{KR=GR$Nc;_3O5)PF?Xq@e_xe}=MtD$<8` zv-XNkyg?sWV~0)6GrF3USLn^%qWdXdkf^=+v-$6{b~lnUNJEqt?#%Bs7jo#z4P|D9 zj*D%vJ%c@JnsS*;Zd?L9t;6Y!B^3ue?v96*QI@eyS@eEqJi(ZNyT$dUo7ki;+64T^ z#;w5@{mvBmJ1Z4mmXcGL`?*#+Ol4_f5rD%Ki$LcQ7a%IoMC0>|A+>AGytKTG_;*ir z)`l9wt1e=qPT3G?MXC#G#ZTi z_&hWhSLUDyUGI(JnptD0hPoAtS-9K#f`N30xlOj-IAb;_FPJ&glA~>)h>~x%NX#U7 zmTyK^O?xu=Uv!xjCL`mA{6)$T0)6Ho=**tV&`NJ(DyvP?%7ZGOcShw_8^82@h*B`u zV18?p8k^7}cjB_M#C{J)_U6Eik6DS~$Ke|?)5XO24?>|+{tDjyGd1i#-UPYjcwapJ zs_d-y?=;*q+6hZ!hFU37>SukidN5jV9+DI?vEi&%NNx}&tb%ev?~r*29s7BBBO3a? z?;k|&&wR;t${&%u^}&E}@wTudX${*Jq8Pamp8Z)_*fno5auT+^q=cABd+~PGNk=Si z2#b*g%u#cLDl6?AEa6gtP~j=3nxCjj5-=G5H8&cKg&SCIA`oApd+-C?8d5P_V1OXh zHmV3`mlJ_+pfYbSBfvF&5CvRL-dOtgfp$mL%QuhC>z6n2l2=B!`1 zX|sF^QMZ{%LCrF2l1v^+CUo&(+eN-g^Qsx)+?68nY@Pmd_XJ*fW^lTF^Mh5gqtI8U}wyk*O6(VqK@fDAtdV@VJiW7mZ zYnbXpGy8xujcqS!8gj?WM7-qxvCQ*XA3tZKa0j~!f7;$YE9P)}*%d1z{m2t5VM*g( z3DOW#@%@Vl6C~>W>?j&<+{J@qx9_05C_Lplv*ZBwBNh-y%STffH2N0rmcaJvG9$Ow z^Jk>5X5o^H&H@D`&`*YzD=t2)Bk~46YG8N5Zo`7$g`YcrHzAH23~97F)6J60Oo?oy zH+}jDn&2j>-e{X=>-l|OFTtzLC5ipity=l|-q=H#R=IB@_y;d{H?%x6BV>lr#!3pV zVncY4^-#mjf4+6tV}!1QF2_rjGd%YXcA%&h6(y347S)I0Pl$V`r)W1qXK=uLVdmZf zOZ>Fg_rm|oc0ym+Up{HlWuVC-mcYU89nsuwbY+>*(f5BG{a7Tho$84(6`?;uyCClG zhN?l##lK)Sc*bz5ux;CD^{Xyl4>olc5k^L|2acMzvd(sLj5?JZEwsb-FqNfTN9HGu;?hI#&vn*m=x(gAW55u-ex>YPnzr-(>ak^$WFc>VKCtoor7P8V zwc3IOq6Re-Q}=RKiCFedvQs(obk$1Yk2y>lOOlx)F1;k4DL=+IxmytR&id=4C1H`0 z=%9qu2O$V5Q4Tgbwg;n7RM?1{d-?>-a1a{CPL4bQimvi#Wkw}Y2hKY7D8dD%bLL{C z?b^C6T9v3z z6S1G=8&5(U!0*Dta^1i2PU6J6GnF1RIZ;gD5{_llLyf&ndoPyZxhlhE)}B6m{l22q z49jyM&lm>9fL~=cXbU0XV2>U!rCP08Caji-!XKKdcM3{{ex!q$m|l+0v2!11gHkg# z4lR`qTGr_v=+{>M3B|heu^*Jy=DV2zPtbj#j6{nc@yOIj2g zeJe*Kmq-Y(L}Q5l-5Y(98>qf|F>@T6LdVHSHF9}jL0Ca9mgxag_0`2#y{^9T?nBnt ziv4edCVioG`mCD4_r-p%e}{do>ZfxiUeWiq$w;|Xy=ZK=80}T(H(7oK7XUt_qTPG`2I&KXr-6I-F_$qa;YS>$J z>l0S(t$z_V{3L6el=s}%%KE|2RdRjpw3?A^i`n1S*ZUG(BkS3=N)J5v^Y-$6A392o z)|5mLYX8%V@q>z^K-~$6(y7ywFR{Xv_now#VChi4&lmyX+2*Hl>y3Za@Fz!_unWCJ zqIfu0mu}~YVQY$j>VXeO{}hY%EsSgI6eQVwnCE20#{{iVbn|XC*07dD8=vI7vQX{H zqR1#^sFXF@irB_E-jRfXcE*f1rL=I6iL4s3$qjxJS>(E|M8fB@;i8GxP&LwAW_E4A zl4G{%LDr;RGnnkj?c2FxF1V+399M5y#t^{O=0@ihzT= z2ArCCIO|TT`|Wcz&%>7L&jXf{~grx1~PwoHCPGK`bo? zki{y0*ozdI;Zfif|MLIFDIDcLxs!LdZFxF6&M_4LwiPnc0jBHD8V`SCz`mogu1$Pg zH?17u7gU#MF98tQ^o-!S zB3m=Pbba}GF{Uh7xTJaqu!w+~68lT{bl>~iptP0w_cN;p7aP$`t^85RC;-ZM$0^U5 z?fVf(;^lm5QFOeEhC>;fk=MeIbg% z(Y<#HrelpC`YxF=2l$a1PqMAS9QoO~g#hfa0+fOL)#wp-RM4{b#iOzVSjDwHr54P} z!Gw_Zu2F=cjQT4lRKG0}fQAN6DA>^o+wxNwjkP;FSLlf0&i5;5bL7|`EUQ&7iQ~{Q zO6O)dwDRd-*hsWhZ8J5QO75j%h#dHjDqkZBcck2Item z{E3pEg|W^@b1!kH`Jh=?x+e1|Npf1Ut4<8$K$tb>u#OhyZ!3urtm6Q~N(?w31oj?x zDj?dO%W04M{~FIpaU`9eh6qvIxLL;BTAKi7+JtGhU#Q;SwBz8erIr()qR4CfvrU(9 zwMtRi{_H5mEW;Mq4TG7R7VL>gD^ZcGZ~Wuyx7jHnFGlBg-=K#zA~^&Gin*}b&8)?t za2=OOu*q}2_+W1!tRk{`ix(0X7VnWmfT?-@yD`oPiP#9XOy7VDZ^cP(q&D30zPBLL zYxnPb+Cq{?78lrA&>KXLfj&zX5hjv`QoDQ?hqj;Nhr^N8B@e5={-ZU}<3V=&#jIp3 z+K?y4HR*YN88s29XRWqZYrAgVjP@nv>4K$HFqihL2I{vOOiw~&!v>n-O}wf0c|%IW z447f3%}!xe9gEuobIQkUZm=4$y8V=ul_YCZg9G(XxQ<+>w5ULb>hFEcePiZ{(Z3d$ zvz8B&#pwTPq&Ig3nuo0@Ec8&Z%Ayw3U#iNh8;k+%ervL67JSUT*A|v_64>511xPx+I#$|kZ1`*G5Z_(bDa)$v-|3e+Af zqgKm%S2^LgFAxsiGguI{*fu-r&j_)iQQII;&U2IAU(^PQc)zxp{E!DCG{omAPaBoR z|9}_#{WR37&h zhW{W6%6QR(`|62h<7!Hhgx75QM}f7INiCP?5nVlb5-R8MGZ#`U)$Ef1d2I;;9BeD< zI$-rQ?&B)zg*9-T3t^cpR zoN*vJ3~r;g0(W%ob+)*zd>2^Y-@MYqC;_xOl%$2^!mn`2abCkS)P!Wp%U0apGInAq zW)2dr4Kb8|=@L{?pzRt>+6*Knk!>NL5iC>Z_PHycK7F!6(~;JoL;Om{D{8ReM0vcO zTK;2nbfL?`x&KR{ys#*`dNHDCeZ*!!#*V&)7|ebzqB2X3CAN5Bg3SPva)nvi4bk?0 z-tlKMvt8z2r6&7Y8z{sMX(JWfQ$900)e*}8&7L^SK)8+xYg-;Z>8-|&xIie(3L0lD zYPM9ssq?>88m#|j=_1u>7CRp3FEhDw+=~>^v{c6Rg+YKgY0;`lrJh7c29`Ei5&4i?0Qfo| z_=b%yfB#(r8}zjgEpV)su1b|ZqLxMfejyczS+Su?8m1FOW!<4s?`smcWLB*=`QmYU z-Aw5q2v7%ocR_Qiiz_b>alpg9Rf|RXMZOY}R?yjj)2bCyY43RCT_rJ`wMzcC2tLXR zIB?ur}p?{dB*!eag7ah%nS}>@&4oxzCn6Gu;`y?R~qb z@-vZ#ov1LM548FuFVE8FZ6EqUSHS()5~BVd0{>1+zoyy9`gP|P$yI!=i8$|gQYHDR z(;MbjyOte~{TM2_-doxUJ0Q{FH4Lr|?75<(L>j)zqrJEy0zC~O%(lFmqCM(D?ihiQ zQEfK&rz?LAzY5z{SC)kuO#{^HpnWb{#Y$uav=%3NzRi{?$=BVDm)KvC5KHfazOvAO zU#20{@xvaU#sFo-Y_Jw+nWQBo14EGh(lM$^6le&IK8kuPAW91d9;Pgg@dA=G2K4&c zu@;0Sc%c8hHDJ*KCO{7nh znengj9CVD7DMLg5-6uTY-kL8V`uRt>KgMMpAEh&9bCbxBy4<=d17r(PezX*2_JOB< zY$AgM>G+N|PzSOj#VDdNw2tP$uwNH02Kcv3T5a_PHIXABR1&_{`wDSMWa53)DW0t0 zSFQbN+F(g>!`Wc`G}22Szb;JIkyX*($`m({Qd+xR{0VKSBBVIfGs*EG04d;>)1WUi zq;fLAG|i!_Tco?+>Jt5vI}1GPPN80i<&s3bs??YAiYyVn)OTutx4lpKWQ#bvQv1PQ zhw;#+iAgUhRz{7XN>x^BCm$VhBhHmIph-+8h1V2C2 zU*m#RQ&LmZL`9)opr|^~*83i<0dYwu2>EipHO;_-*cu49&guTwu?Pf9e{j zo0ntlW{KjgVCm?aFWm4g-IYMrV}?ijJnI2^!1F50J36HQ)H5AkIAUpKnT!NOS^i$f z@=n!u?!-8M3@H?NB_i5FbzV~_Yj&!Q^2yv_x{@lw9H!H9$GV~cLX2^8HyIKGkR&u9 zZBqgZwlvgcx0ML&gSS&(MgKVbL|Z(iguB?C3g@m61!cDR!5meDFsF-bc^VA6!9gBmbgDvtybT$Rh>*_I z(h1L4$}nMrJUWbxja#BTm*>F@PV%mw|3Zs^_o|jH3-breE(-HDtrsSb`&lVUt+)WB zs+0RJ_2^tW&#jR;_vJ1j_{9*^-OGB30DO4TQA zn&M-(v_+%5WF}sVPW{uY-6g2Q7E;|hDX-^db=qJQJISxfRfT@f%2yfj=~#qOl{|=x z8;Rjk%ukfs8~J>;z3Q_(uUe*TYFo^0#K}3ZPg$sbR1ralb*EM2PYV~u;<+_ZO}Vm# zNPuNx3o^`bjQ_f290`+$siAlt-^BgqA0mk;A&h2b!39Xbo+J1ASQuSlDZT*`o)25z zq#dD7{pv5t)|8KYI`Y%KYWFB{`fVR?KP?siIdY#0S*uDXnSr5os&T#SbCZyU|JGNZ zwdT%Cl~5)O;_WqJ7a7NQ9*~wMF1mauD?52s<-3-niT}nDCfWL*?{sB+TZlW3q8iO{ zMhVrJbH1zT3!ueKWr^8m>57DZ^K3qd#98g!OVJj~U~6e`Fxu9%(+Ke}k6OUB z3%eWyvUup6q_&XPS+o6=>2J<$B0M&1s~$g#O4M7MbhW5fLB(p>bAQi^C)-`ITGZ?H z1#hfd8)yqqw2)m=NGFi{+jSj~{0LZNKVN+?`?V2IDvnX;!l~yNBJ9eS`=ehm_tbTF z&Ut+O2O>tEqs1#f*)$Q7SkD#!y!y9lq4@kvZaUjH4!l-x%J5&}_c+%-Q>+@5{0GR1 z#n!mxCqcbQ(D#jXoS8N~6S1M#;*EdAXd5(BiIDNUpfE#G*G9+f?>3+VXD&RN(ZE4y6v zyUjmj4Bfs6Vu?s)y#4m6LHZ@PUO*zs3*`>!Y$$yHqgWpNzdsyaG&SxL4J3L{NMu-; zkE|u1Bsdo(a0McQX}KOx3T$#@`>O7k7Sl%JRuYVpw3{mhhG9^o{6I_^$FKtt23`Ne zwxa4;kNIoSXcY@6p7pz~xiRa&#zC-Mqg8m3=8ov09D!l-6&4!oS72j>X9PC02NO9=Q3S36#nGjjFIMBqDbGeu`0vl;<-`n<-( zzt+znU9h9rBBCS4W*@0(JniF`PiTeQ`6xtnsGfkr(iLMjz7|Ba&`&y zu(zE5{gC=4cScwor|o)7c62FF6b_~Vro2bI3mb$^)q^yMHfkLI1$EZ!v}x|pi}Yuq z!4kcFBcXTPu><&msMPEWtH@>71%<+UknuLkOwAWH9qF{*>KAxgd7!7^7}#QDmwM;J z!`KkIldo2}o~}sfQ>~rYHtsTo6VATglm3@bR4vsoBu646{=G>IIW8jn;esOhz1k5p z)?4|AO~Uu_tWNzCFUck^O3?`t8Fh*l;%#h_;gksU@P*U^AK#T=&pj96#0f?(T~>&o z=6d*btl?+4fK@<#i(Soue)KNJ+8%tA6hy3535`C7eC|k_``jK?qpw?#n}As)wDdt< zj>X;g(lC=W(zU|K6A1|?6V5jhf$m>s>j+t8RW|Qd6x{hHCw|g&_nC;hywDOaSXsJT9dx|Es!N~HK?0Uj2T24sz_y?{? z7rA){2TI>AA$YvUJ81N)7i`#c)#R(CHDLui64iZNc>1>BIKwV{kftc09pagZ4dn^K z*v`gswyQ+f8y!}Np#!ABKWsQp1Vs!Tb@3cpOkav3nvqtq!+B&e=1R43_w%u%1>A#o zOZ#L6!RqioP2#c>4h6J@G_B~ynf^10SjG+LJNsd@!DZB zF$o{#%0ha4y@27X>QKjWx3Bq(4Z^`OamKA5;h4^`r&teFfEz62#6lF@w;m{ow^+rk zX>2PtKLBNLI~`~_j*8*G(f%DDf`0D{()5eT;K$8p2k>FTll3w8CGF|0L8&Z1p!fuG zgFC%9d491W-(v69eo<3Q+wqoeL1Lhv0AM-Pv$I3yqOwXR9?tkZ0j{c-rr0Vi1J1M8 zgFaxMpg9R?`|tugn9C4kcXq!OY^H4ckN-tr=E*Up%hc~2CH%b~6LcKGosgWzTb=>% zP1%+i{dQ8%w($+&Ma2K+aN@}bsL=0fc!(07{z1ey(osY_3IAd!Fwt?07qUk8l@$-d62?Su|xCSM+f9#$9*yW zLu+K+)!&O^eBCuxt-In$;5;I(m#$;P7O?XQHO z2Ts}#E3;|(uqU8Hb{!c4w)@$?GZ%z0vBH zg@LC(&Fh3qiS=2V<<9?;pp4>L127c=SJHe`=?Je|q z0MHrj9@^V<5rx7hW6DIE*WQ=+UmnlQo=oh4V+~$^ANmoO2mOym{IQDvXD0otBQ$%| zTX-O4L}>cxtsQ_$q-&yYp>M$WBBbq`f73hOXPsThX?em$g@iwTGa~gtB_E5<#y4Sq z`QnE+=g|7w2}LY8P>UGOxT>DYQ2X9ZrmH1b?0#k`MGGYuA+h1}X&wUz9S4HFw& zXk8X|Mp23tcEuYw@pgXgz-UQKUT&C^Ewor4^lNl6Q6kVu5F%f*Gww#Zfz`;7U2u|J z=%7^En?}`_1vc5t@JJb(I?r~WDqLp)?C5dgFv6&?wz4U?O{jp@m^;q?Q?cxCv(bE)i|T=ioDurpIU{v5i)8cDH5rl}0d>e{JIr2zCJW=%5N9bFaWW7(FmyzxDZZk!pg)h;hr2P)9(^t@ z#VP6dpFRMnpe!#R+ZacWWH~VnO<^nr0Y%^eD&H_0EGA8jm_-QF;K}=`_?f-f87o;gh>1|O#ac(#Q&B)rgn)H@A1WpF7XWhg=KN~mrA1>o_}jK!g7)G=`{yc>#!ywe4|MfAUys$7v1W_q2b z2zVKaLzucAl>$SgtiCkzO1eZ}O+cQl{_BuLi@xlD7vn_#EE0p8_RB2IIrTU@ z!EBz&V>|+0n>`vWuhIvw^%n*ygRnr#Fu-e2hT(j~65E!4W( zlL7i?F<=EzK;S#v*-9wd?$02o*ABS!73(+J4L;su7VwGnJ*03ZWjjMQzjp~-JC6{h zx~Mh-0UnWCyXyjW76Lcg@4=U?OdbshcTb1R6!|e_gVE*a$RTCSZN5G>S8~%Nc(e*4 zI=+_(>PwzrI{KZ>6nH!a`=a1R1$W$fq@0s0jG=eLiDxH(Qdm$e+5^E**fQ=)WeaUG zeWF}ShmL<;sY7=385E!)=|6cdd_pE6V%qyASV8J_#`^Tf=tK6Sd4jJ@6sGOhN<_Lf zEb4qV4)_YKETiZxll*&HN?N>mjLNE33^J~x>AlL3NyD_Ry>>@TGZ)#2o1J&H6H6;Ccy-;bov>6pUr{$4o` zG<~9CBxs+P&@9?Defk3c{3xSvwAE_vVM@vEF(iJ#jdyQ~BqoYk#s~V%Q*%(4s)7wd z1+m_yUv$FVRRCh03&KLx=2%ldLciFw_==QPA02qgJ2Loq2^O7ZXW5vwG*h*hC~;t_ z7i&TG`$@{rzBchiWR%CRnyBd{y+a;r4UI9b;J@bIt)A039uLhEGl2TOeuv%;iP=AwxH z4^`^bs&ud#z@J%fr!UqUhcD5M{m^RazKcuI;34a05duZC2gZg`Fv<&C+o*Gv?`O`e z@IFcbR(D>YAbcRfAP@wBFVuLg!8cwt{NQANJyqI)4AcA%r8fus^e&;?7R&oo0b~C? zj{f{pPH@w z9O!RdnhHJu(H)2S}$5XJ~P7dk3p56lh>Z9y!4R;Ni`zbuO;Z_jd; zI;ix)W8JZ({)5zA#V!lzpLtM#x6H_f#10bk#{vq;+Dzhi%RNk60AD>qTfuglGKa6O ztGqg;F`g8aDGP!ZCnyLNa*b!%(K_c9#6r8>b+OQ_$))d0LlYQ#%Uoi@fYhyueI_0+ z9a15Bf^P&R3Cv2?*YzAvSLR5?Lj&hdVER_VugX0KdtwA{S% z2OpNQ-`JZXQLH2|rF05w(8coTi*glE?n9Miv+G0Il z{>l7b%=D(_&Hoiba{;MYw9#)FOQSp}cCFgXAAe2TV^%4_*BeMtphBwJh>(T`W5kc7 zl+)|dJt!jPS{%UU1;=;}pS0`c_c#coxllRDZ6W4v7j~Nbt-A^Onv&f$pKZ&e>#sH= zDs=y=f&?-24euCfh`S<-9FJLj`+vIt7C|M%${V#9Z8c>J@ogK3Ew=WY$cxdEdy1Eh znsI1S%AOWM|25d!r8%r?-&)TEKFR(;R2uXuJaHd;00m?KydpM3R99F6lNSlZ-}~yS zyhWISa?@!EOiDVpavsRPto$?h^N#_F8&Iac^J>OvCcdJpm?dtz08SFOTzJ^ z$jl2l1JuO_nk-O*y^KaWEPG23AGv_&<OPtuBOWIa6PK)f`$luy6N#%Q@-nzLOuuTJZub30K6`=oy>EYGH~ z6!qakS|uxhJtk>QaSjPeY5hfzHmmiHJI@vWYe1Q{cYn$JpqB!kIGVeXJihF%LKiP@ z((3V7bu#qFIJ+|S0n*~h$k9XVJl}6WR#4M3cx)_aN!EYR0UWl~obaVio9fi)3Y&|q zsh3g<5H<1xhYC{?Ow(@M*lppvV=nw2L|8s?ic)Ow8vtm`Yu`Dc77p4^s%M5qF*~;f z`%lK_tt@Fz%3Z7oY_%`rA_2TvFbglP|O!>gr$h{iiqhHJea(jC_P&50DHN_vc zm}|$+G|+lr6I2lb=pL0b0)s^g6BXPm!=W;O5JHaQ2}6j&4H+l#fzKm(4pMvY)+)1R zy9k$o$3Fxa03gUR50F`2#@O7Wdrq_hMHa6VaCCBEA0@@Mld*Kt|KuIkgf8dI6IjQ2xCNmsiIvJ+gevy6!)iGsrHUF+}6 z!ohsg6GsCz*6C)xW{*S#g_21u0T^f=Oa`K^ETa zvR3)L`G#_$-&6xd(P$jp`>0s7xCEiE9f52aWsfjH&IE|Hm4g%B+ovO z(O5XBTWEPJrceZ>*b4)rIlF?T3GPKy&}}YSNb7z(kk}AajgU%CE%ZIl!Y%v-e9dpeSB*7cEu*vbuj_*r?ExUkc^d<*tG$rDTA84T)_VxYKxElysEDsw- zj?%kpjw{2?YDhiJY!$xL@QuS=x8C<#p;3%}s^)F4kyKW@ekh4ko6Y(iP9i$}P-7PB zdcbiXE!XH}O5T0tN8KKOtK zaOE>kyCge6PP>dsimoUv;mm|%@csjEc|3@DH+jf+k9Go`S!VN5 zz>+#NT9^9xrCbY~nhmHx?vKP;D4$h3=2$Z9J}`5A{q9yUX+?`q;p0fYm!CI3gy3qX z)!)QFJkLm#&yVqOSQr{~DWF^{>S4u=$|JO)5kE%%6A;_)fh2(9l{{5@)(!n=2kHO( zC719DnY~pR^^X*kO}Raqqxx{r-7=zQX3E{U6qA8oXYd2fz(sz?v8f;~SUhuprdG%ymauAOn}N=%fQ4exN@I z^k4o*7^KIxhwQf^^#(^zam-hKHgtm++2SNLh}bi3!{+N7OggF zab#@%!IK!>ITVWq0n(Cc{B=Zq$X*6M`$~x<^|}Q=J@Ipcf`Q|d#S1k3 zEMBu~oIw9+${F$luiX2X;$t>M$v=rZQ_uRJKcGD|s``;t6WWv&o75#v(LR8@w?tBZ z(ik%h^jS@qaTp@)^)yT2k<&888V=DSY9hcOobKN;el@ApS5wsQncYPk#34OPY=Y84 zgH&tqUDu5|GH?sj^p^~O#whQ^5De}*BPbNwpi=j^V@|10sYin8@&|xk7n=gRwAeN- zR%??ZBMTvBWj(ScW^`k`g+;9>nbkH0Tzr{J*6u$AMOW7x9lIngzcmF4`}81@o%m-5 zp|lbGm{ya#hL6Qa!YdXu12^2}RMXs}0?P5)D_(bH8aHyumP%adj;c%lMN`8}-S}gr zB|bk{CTUdtiWtA892N8}wr{EVeMGTq->kap`Bx*LdI5Hyj8?&iVQdhtG$rZzW}JAK zpD=bDhjHGZBj$OhTTO4x@ip}-S|OWOP>QR&ql?NoTc72OVEoRszPjjz3Dpn^F%T(Z zrS9?Nl6Ye(Di^5w{d#AEa^LlS7n6T%SWqsEf6g>~u{^P@ga*moQ$pW7Z6(PhN1=@H ziNGi`FORN{R>HjG0xfjuKN4rKe-`UOz_f@Zzi{&$n(-1UD2GFB=7sc6-e(m{J^ikx zH`!wYl2LBUa@lJ#Q=)wXD0KvNn0s(5xjN}`h%hd20fwqp?anTrxMAfP$4?IQ9jUg7 zE*n}W>-4L<`b8ISzNOvdzvIptE>AG_l)w+KTy8!RWs=zlm;Llit!N!<1wnt27X9kz zN(X*?C=t5W$$PWD>UF&mYYKCLBa#OrMM;&rZx;RPpVD!kS+PrsAC-f6 z+fh&&c68FO0uMfn965>8Q6WB1!{8Hcb|R%+-tSc9msN&9cPS2_%={3!UmXA!V^>z(SmB?j24OkcQMJll*ZVEoh8W%L$vpVN;dp+T*x|v z`3ML(FJdx&|7jsul(V8?ipHx+${g+>5{$(g(3MBU6pIWbSmOH32I!WPWm{T3=(Fo| zdo%Gh1Z31;2a(Q@CBPCmpcC4EdDT(Nlq77BGC4H&=Fch90T+!%)j+Sd^I)+hTtb&@ zq{08R;7+ic{!<(;(xYFJHop6TjM6qh5l9M$F+QNDH?^EK48%V}e?W7{`@ zQZdX|_`4E>-bKU!(ZGt{O!SFQ#~5js6!k>Cnb=p$S=(EDn^oINDE}BbCJ6msCZ!)M z!4Czf-~pnXh`@?%nK?JMgAU>s}Ph$lal(y)V4fJzZp%=HRcuLJzk$+m?RkZC5!dtf4 zRth`(p&!me<<1f4H@r-j<#+htrXmhJ2`GRDI3&XfstFfJFo8W(pjFYhoB7R8xAIGj zRs*Ltgl;UOAGxAC%uWaTB-8+&a!V8ze9RCJ@#>##B}C~!(r1<)H2nq?JBkdW$N!`1 z9i#JlpSIy7jcv10W7}wKyJ_RJv2C-l8XJup+g8)qwyk$3{q_Ic@29S;)wQqL=Q(rC zG2GenD6>{H1yB>7_EUpj<~xevp`TT8->KGSKy^=;!I(Gs0|BZ5B7y-8y6~!n590=ez$C`d=S?=2F0pr5 zSmRbu)cDb=JUME_OP-M81{7=T&=aPqMQN5AiZV!k8{ho`;{1sfbfGzk(Rf&vj!>V` z>WEy{2YWkeZo{1$Yq`Q{F&trbM*R19hV6S}-h1o`ImIkvCr_5ly5C}_A_EuF;tT{4 z#L&O_!OVv~{pROq27Aq}_zQk;9TLy#d)&{@nrB(HryX`sBFW7<)-%ce$;6(5SY>(v z&9)$%lbC)U+*BTT$ElehLlOH%`LD%^~bS>ah9#u4h2e{9QEkSo1X_E!U zViuy}RXamywj9&Gfa{&phGg`7*kT|tt~2@l4?5vm6ovHl2k%!82@OW+>#f2m2Ttcw z4*ZD?&HAzYE_EqqPvkPaz!f$83iyuoYe((v2!)XcV^a8oUBU+sQV<646nd7pnnVw>^a2yeu4Ixi^2AfueUrgBS_1Rz$H?4RQ1uNR-i0LVq?wN z4d?CxegS{0g})<4a4t1uteuHNRF)Saw;3&ZY1OJ4{}&4w_(5M&ohAt>#Tu!c_X*4t z9ANp(SS{ZzNfV;3@8!-Tm+3}CzHbI98)nWwxB+cPK*F?b@wL+xwhd|n_($F*GDOGE z*PA#KxTO`)={|X}574)KV2gg9K*uZQ7pO}qY|lz=NPd0> zJo_`$)vsqS^xaST)!w?DLSQo)=6IhaWTdNXN@)b2KLI8c`M=>Z;Ck@Ue890iT0ju{ zW;}9gf2I>&$*3UGKNLuK>FdH&P9%qRz)aB*pH$7wtI7(8Lu~M9aHdB=Y&LtGN+RRv zVid@RFj;({&-#jqCMcuFcS*t+~Ip7Kb>>G>tu8oM!Khc0iAB!D=v+;ARHwRpL*9piA{Tp2+R)~l0 z*Uh7zh%*3e-P;EQ&s%6DLWvKbgazRns)M?>;X_WzoK^AYkBO`m8SUL)LlIqqCRi z7GzIpk1w6?VP@eAqhx({Y|6&=@I-!8Y7)O5i?5&q;FZK3GO7E}fuYZLJ|B>c8iJmn z>f@1QtQm|E+c^)nRmoYu8KE4hzvdkCX;S>NN2nu#%oTa7;;4`p&&{6KaIXHx5yY*k z5`ORm63JF@`ZZdIuh+UQ{t&%i#LQ z7*uT92oqy$yAfT6W^w4Z&ae)9EZj9^hL7G?OJu+r z;Rj{IIa56FPq4>q`#lbg4pPvvQW|u)?5%v1Qa3{cW%!iF4Cc0q>M6h}QAaE(=VwSO z&S@J4qhNIpg`mNnecJCBR}54Oq4a-2@p%!@5za3(9kQ<8fZcQT{iKDajRk~|fs_N|@+@dr zESzM-@g%~uM|D5~<B2MNI1>Xyx=sm!H&t6up`hVHEb@F@tqSU<0KZ5zIU z9i~vEt`NY?mOlfhf)H7P*)<=yBTyyUj_;B1lnsiB;Dm;fIl-6wbQ7k`Kc}B~A)SbU zJJ3Wq2aLa4!$8Sz@T*{u&z-h>RT86x{*3|td!@LDMq!mtZuM_2n(RQz2Wx-jP{aXYKnz}|GkN^k;zdJ}{ddcyp`ow$$}8Djk!?t;AkL%* zJ7dImgY-BDU~Iy*yO9QbjvY(4He0mK#G(?IDU~5KMrDc(DgW5novlq|_?aY(y`;P% z6Qj=d>Ssgk$GlT@D#)1*nSi|GDzOcPh~)zm1SJPrww*)8HH|2;M|`pkG=({k4g#*m z{7*Y)t*?7S7)zO1U-YXv^_Y}%}{G4D@MyjNS0;Yc|b!RD|Dcd zRlauoRYx%J``znSpYdlQAblZrtzA&zv>bEwf*^j19+5^vO^)nFP;?1-+J$JhP=U)z zc@W zukz4sZrMSAzII&bEOW+T!Us=jfQCj4&Q=_fU(O=|>8(k32blR%!^wqg=WwWgB0qG@JC5?`d5sDST zD!$V(;io!YvU0$ru(jkf0&^eX$aV?j?jN!f{Sa0?-d6W~8#M6~2keGID_{vJ&sr_;57Hxoya*ly?PHY{R0l#3Y)fX&v z#EG%}Ys)G?9;T^ue|O;aHD}d}YzlhOasvdd3%iw8n8&RSWwg{e)t|pz538}+x{wLB;3TLaVPys!$Fb2vKKxi z`T_`diw!E$adyn+fQTl|b>JqlYrO;bN2sEfncjhm z8Uo{c=Q=dkcb3Tu+Y(iMzru1^Fo5WF(&4=U1^~G!BESJzj;s-9kO7{O-(Qf?^=NMC zLA@qUC!Ek75e+jL$$~M*AwPPyU3OYu>0DUiCqHBiv(q_1hdU1|qV<-|NF+c@xW8rK z0O>=5K$wkG>#`dPyi(_0jEIo8;PrLj-m{G;H>!%D)G|K+!u&p`tc#=tpK>5@OecU@ z0Z`um?R=nn6~YfhqMG#`-)+WCNEYHEjo)j@k_2dgpTLs>0$6?9^B=@i3}9`3XcUyr zn^yWh?)--KUV}x%tPjJY9~j5Wh__cNvY{mlLTq`vAN}2-=QF{`$+hTSH&7K-_lBmamfe3o-!BN&)CcqS)y| zDSxcB)9Y3wpNMlFBokyciQp+{>^i$Qx7dl9c4l=iS6$JT>a&x68GusTd;<@SE|V1v zn+ImpITyjk%*lCS zz_exbo(bs$WQ-%h2HZb>rqYE~x|<^I!V1&AL!tbk+bOVMk#nJdk^`Fw_JU}oM zRtm;jlUAU@;Ha}we5+LW9#r@pA5)O%IyB!Y)9??gj78$hiUs+~a$>*g~~Opxm$G*YaluJ6-=3uoaKiSNe62OrssV9K>%4rF!$znEwE z56*z~BO*yCERgeJ4IEpOwak#*Ed`M!3zdgs46EjE1OdO+)C+$3!>m8Ag;yjzINUh0u zZxys2HUy(m)7OZQ#=coo++yMpbij-zS=^#deIMve!J=F7`i$ z5#v1$v$Gg2P;0Hti+ukk)hDr!n!`W#c>)yZ(w>tEIR3*xSD&80GQq22plQ-dPY%GV z;A>BOZs!_OHSNv^z>Xoo(o~uu3eIob#FRrRJ2bTa_MuT)GEo7yvbm$kSo(kwpHeLt z8VJfJyY!jOPz8(Br8w-n85PHTlvpVpSKK#IgRny`GTaqkl`_}2U^NH9vYR`WV=mJ! znzKs!RwPMUl6`+&m1gG^zQjd@=!sX(XXncseb zG09slq0#IEE%om*cz{xala=p~gy``3y7JVhMpaOs(hytnB zT)M!iSd+GIyE(PHM@3B2Tfvt@etoF3Zd@Y zjEB~+!*>Sjog|S>l@q^8!}6Re5CLOJ83>SY;VkN&up-|TSCj|=t8MhaQLk&Rs3rINu zW1c`Za2LlKe4Q6))as0mh?raMi)2Q&{V zf+U_+601~ip3J|$(eSHa2a50Em-C5{g@#R_I$_W z3A6{nDgxA~@8y`D20@US`^6hT5JJiQY6-QreLNA}@6EuN?wcqo#Ka2>7#jWRe+7dU z?eMms4W9*iq;syqoEQji0AkcNh}vkO`buBZ7QK}zxW@#~?>Zf6xYqVMCHKlk zmgv`_b=6YF^%m?HG8llhAPHC=_&A7Zarjf4IPPdlv8K@ zFs{qS^#29aWTEeIz;9d6%wvn^wjMFbQaMQWc)d4c4FrXe@z)G$n2z3u#H#%DFF=Bl zl-Q~NZ#yLbC#%R{Se@=CShS(yzS`buL@oF{3)Rd=tok;fbpDm8#T|wRbHutVcibrM zzDF9nD>YR~gy1-yUI-2GJcACdd`nVTv~*-SPyO%yOv^4Z*Ku?;Bdda`l8^!2d5udl zCeNC=3?fwn6W{|o2kn<#dQ88ifC=BK_Q7`G$J@)16}0cW%JYTg)BuE45d-?e2tn#V z=%nYXO`)_vpbp>Hi?6&hsFRyeOPL@~(Q3C6>d`;H+KV>wpq!HW*R8bbfwcHDsDL=6 zm;xgYLZTPDq~#hGQL@0)5hf}-lJFxV#@Tt~ULrnJ1SnMg?9zRnO%+%6M_|~=AfK_X zo5#}yplATFVgRuEx6lblMu}_+7TJLZ#cL0aeB~0MWLF zVE3M{D6Fc4u-N@?2D~+ZrZ;OzcK3A-RY)p8S84;=i#wHWsh=JizWlCK-q|S={n&&h zE$kRL8SALcPR-@jhxF17(H83-Q6hQ%P8sr^x3Ya+mKM}pY_d?9AmW!=N{Dl zyDVf*c+h3{2gf!)fSB#7u?vt_)$3e-3B0>8G2K-#P?rV@0)nw#uQ3v_brtkCTKYUm z1wSqIL#D+k34u1D3U-`l_)|0Bi+ySjW0jyQDsoBDtk%Dg{+QaQLU(nf03!z`bAX@2hj?v{QDGZCCA0n97C3k|)3n`u zE{+H6*hZe4FnWsWh*e>Qt^LUpEfb zBnZ;iPAYVY4awid0F@Sp2z08}ghFQyL^m8^6tu4Pf4W1&ZJCg9AxxJfrk1xhoH>4H zLXK)2^4F6B+(ulV0bVB=y_NH2{NkI7OVL-+ZE}PeqNjqz7gCH!0}`^AS4j62#2~If zo~$nQu36~9fCf=t{bfutFH(qKc(_*qH_!vltDiuytuPwe9#tEWd5{u_I+_QIT-+)G zKmd@0&{Eu8`?H$!y2R074LLo#&`Ihli$wgdPIM!$4l=@hGo}r`%_)T%=v{qUI}Et3V10Cu)~|!Jz15p$Ae?1cRDHMm+Y3$Cer9n3#g{Sy$5O z4r~rv{X4I&6xf-C*@S_F&|FDdKcubL|)>poe}f%p6ypr=!jP( zA9>OjO2x9_J!lq9y5<7a{zL7|L6i^v4BgT^WtYHi#4NK>qG=Yhs35T&y4y54qW-| zzftDvCf$muMywU$h{jr7llcciw1{c7J2=NCfInSPnO1XmL8Td#z~Xa7zP$%qL_22E ziB0PCel~2~x!pdL*_fbff(IiRHL`~GZf+2Jl36)WQXC!pG{Y8fjx`JgjK8a=1-O&H zS=tfFDL}z)Esf`m99G0DLsejjpU{lh$aO{SIrJVE|6z zz5nbkgak110$fBPBzUXe-EtU@#XYE7gH6V^`Gp77=lLbNF6d9{U6l8uBmifks`r0M z{{+x~yk&|FV!H)?Es2{}mRM$`*9XvnBW4#r!xrynh#dbx(_UNUcz@B^O}=cUvUPCA zUt6PgaY6WA)(f^L5`3eh&zxw|ST){`1ZX39waZV?8d(*rEL~D3MymDkGr;$J;eL>= zk*;~6ZUfdw(#u*K9qhEICFcK*O)&oPgienY3R#ZN9T65CaVZDDy{*4e@ zr$HO~^m7<3v@PlunS3Lb^$WM0V&pu%6QUip8wUzuDyudyNWwiP&KC+t=?QC{43~a) ziON73$46OQpHk(qw_VwwtiT9spl`BDX{Mr7I+j`fY4^p$A5Dt0IY{b>q`UxAg5~Ul z|FNYtoxS8wHqlAIzw@^R$Lw;CLW`o6FE4`}?X1|;Kbm0w4sKLJ{lbfZSihhp7xj&C zVtyUyJgcr8=-Kud>3SlaQ~FG32oLDrY7=xjLE7?yQ4Y{(${mNoMuz(!6psy|beopK zU83wFY)0ob>Om}6P&sZ<`UwfC)lECl99UAI>|dxk{rhp?4aPD^+Rfh+t#+J2&WC<8 zvQ*8NC~cy249*?GEjd#2e6MWO_0D$Rk;S92FT^D0fmbwqTMoq z4UyP9+=|7L{PeM;X6(9(g1cIWf(xvnFOt-dBVS|eojVLFtij0~m ze~g^DC)b3&@ygvAB}EK|4hlqiZ7!8Xff3; z84%4K-aiq#IMyiL&4>=o{iQId(1Os-GB)tU>HgCl2FrN0+dtoDUFLW&nVT1GHIPP;_{Talu92KcB^z&>_Qd8tB2aVhMNkb_;F zVc*|U)~_YY(|5+Bgitc6rLNy&RmFpaf$DXmL%pLN%hkxqYK5f=t0%7lV2vo}zi2y_ z`Pd7ovtr)ro5TtxD6`-{7c^9YIJ(9L2=2?-6ECh?L{g56j$(hF`}@fk_ACz1x@MuU z5F4_EFO=@*jF>AuKp!;+0#>c=EyZk1Xx{AH9pcdyK^g3;{Cq-6qLIGvh(Iy7^Zd1!lX}^{=`Rja*BgB6lK)blU)iK^C#^&C>@=o92CInnojb?8Lf_R zwCJ`s&sGQl{_O9%78~7Yq(|f{jd!9UElsrKBx&%K4t}SQNV5!pMP==$G&dqbs*Uf? zWWd~pF3|PRw3>iN4(y5v-c)^~snp`D1^7^WP+wdkmz1izjgGlsM#|-uqD! zPnCBISCaF#TYFS83MM$x6(&Ai`!wqcb=>%hb-t87nw|`$(h9fEtp;R2bp38VC0uy$EeTtl*zRu8J2j~r)VT3Yu=_$%N;X*#G%Rki0*8>9 zg7TrO?5(e-nIs#7Kg2HyS0+po6stB{$@(M^UrBLp0&S#j$l!m|X~^KkP@wGNZkW@+<~PC+QFj^jMW+H0vARZtOH4v*Z1R`) z)}36wLZ&-XH^FhI++Q_J(+VH|`X-F`?Zy6w=;_;v=UoI>+EocF@t#IXmKdHgwfM!o zXox48HIH}gOQw}6!2$?#bTdz-9g_S5{ja;K#mUh_BvSjc=4A66aVa|uggfeEj;8F^$0m%luV(p!*9 z>O8}6VQ<>L#PSRvY3({zI!(|=#S{g{YLNz$7uGN@wy$HECD8T$eg#a#LVUHQXx?(m z)Nj5y;{7Qcb@#?EjZ5JK-kE`rz~3{Ix*rWpCBBMBAa0@yl&S$|Fstm)wFZTK^2-6(-U4AP9{37P4j7b3}OHouzY zAPQ&j^&cEFwR<3i$H{J4o+{}SAwe{GT2B2^p~an91rvl76?fOrRawmr^I{pk`Ocg= zYo64ilS=G&X*2S_i-{CWX$Yt2DsxXR@JbTM{N(;NmQi1Kt61;9lU>*WY8l91s#)mh zRgB$;>)rq9?Evthz;ra9ZKM43M2&D#`4;(&x^x{}@6Si%r@E_o`F{4<5ED6vox?yG z%<9Wo8p_mMzi(|u^8%YtE`5!$dnS#0P9@%0lY#{_t+()C^{Uh1Red~58=}qb91|l+ z@au3On^JRJu?6a8`>PJ_AkSJ-=Tw@C>+Woget$Me*7F?t*%9G5-4NRYL*Qz9+c}Wu znYthaH^JYd@o?_EAU>UAvYN1`Q9)bc*bfDbo)rcve?7#VHu8{F&iYr{yf1E-Jvu}9cn-%AXw!URTiR5clQq_&TSC35kqj=`VXLf&1wrY$a-UJ!?6?9XgArjvDe3neOghLZgI2aw3V15ofYGMbv zrheWQBxxw?{l|}AvjKm7AszT?hR~dMh1Vx z^oi)ngQRi~D@tP;ACJGN&Kb7pOP7whxhMU=uf4|UUd2prep_2sQ$tWpP#zN|1OMh%rK(30&?;wMcMna#(8g0~jdn8lkP8A%kj~t3SZEk7v zkSsZ86u($OC5#R&8ebI^jO^1CYDuO}ubB?Cy#-+ZJIqKdAEiV&BBMFe)2jEt>#MNA z>e9PHFR{OyB%iy*3U}aMTV+{dVV#4Vs|>O)SVjry%lJm{LY79r02pS9uwwQ7%rx=K z|DN|IE+++8Nkw3@y(Wt6oH0pKj;*Qz{oLS!5xm(cv!_OXR}hH?rFJnQkN8H$ULtw^ zS{RGgQ<`1!PpIbRX_e*md5j)=1KSS~o9rdg+!<~JFqr?Pz}`#&fPr?K_X?Z#6D50U z_u#rL_y8@Fq@P*Z6N$kj*dcj5xA3eRlxt$#TR6v;cFRqlvPtGN79qM@%nP{3uhEPT zONsyVjM^{x7D~TWMu2Q2E%^2hC%ilY>D>50h|$JxdvzNVN%qJ99RlSd?(4nAmCA!( z=x+A`2!sv^dj!$WkCyaPwM;_NvTL8^ z5sK+kGQs6x?biqR;h;?WZ{UwVI~8$a4#V(_iO)Ej7F9i|iV2bzMz-wv=nHKm_|FLx zWPyqQ|9kzX(%|^S0b_#|lOKVW0E}jmvI7?hb};~vC^xcSzMjaf<`h;v`DDO;2)=!3 zzF}RGME3|42I=wWwNcxlvUfri{2l(ljkwFn9l2|#f=&?h+ggr2-6l|QOf1CTAl2m8aA;63vzamlAyH5L@cyq_#o|@wk{*H& z)%$Zph~j?0b3i~}A9+VfOrv9|NsuL-7+6GaIVibSBFW*kd4s8^q3)?+@?1NMODEiU zR_0kuppL$IcxAs_kP{v>`de1V*r5Y8!crG4OD#^*LmJL2;D68jgSBd8v3Jx()K@rgT>Osjn8$S9ta0nzupdaY_2Ex6 z=Pl5-nJc%h-{RJ1%TPA-)r|%gwA#k1OW&85XwF#vcZMK7yqK$F4wu0Ky{ST9zXT+V z(6FZly8O~nDD2hNiS3iE)0v94w$B>!H6pKV*1p6349zfee)q)WN3VlA`scQmEP@^% zRNm)*uZ-M}1$nbZXA0b9Nbf2Crq{s2iw8R3F``I#GqJrC3yU^ZYq>$v=kTSfU!>zM3 z+y8Snd|1J|6iZDcVkYWeg(>hJHOs^--P*U5jU?Ew7wxR{eEbcpE?Zs8Xsgc~^Ocx& zsjIjBN#dIR^c8*+3U1x)&iDDmwD$5p88bP+`OTMH-`(D&fK%djW2mlAsF1NKS-Oqm z?euZAQhCP|Te%)iul$CAnz;ZSj7(avZF~<)h}0Xg)}~SVy|0B~iP_zYdKt+`%?%

    ;CrFD$sd-Hv`ko!pfUAuLaV4%RKmi8PRz2|1~SOmi9-A%&{?w^8p zl`DRRIpyUDWcUsHK9ZD1k9s#Xh7??BiNd$)F+-)#Np#iwx#SH5R*&vdp7)cV)gg77#Um-jU^~=4jpO%==3lV?3Y^Z@@RA62B927kVG#IDmM( zv|U#^tp+24Ay?G2mySrLR8dQ9ghGv9PC#jJW3mE*R^)r*PVYIUqqo*8k3qKEvGJoe z)>A92%^Qvcr%jlLTVDzZ4Ao|+%CCW=-kUul8OiD{=E5bKvfhO;vQbo}PF@O?SWEp+ z9iubAs6@tNeK_M8CjDjD!9&z6_u`A|PVLF??&eGu>R@5|u5nu)Yge>+<;(Ou@MrMl zw!FB$N6k;NCImrc!1YoEOqaSga9DHyd*r#|>IK~!fJ1TgRHss3jLavCy=PxMp>n4u zS_or5`T%Gof$aSzPtb@3%`rna{71#nI0R1nHn97R!VddEpNDHnH*2NW=dA$OI9>Pg z)CpRUI1$W(DmLFLbRso^_oE+?yPqQlgAiMYI;d{k(8c;JAA>haWID&uAC#|r0kX~R z3!+`f0$ZOuryXEo>9uh4C3TEdm4m11K|nZXBt?Z(#!_cjLH|=H5b!kO_7Dh497$Z3 zHsyXpznR*Ip^r|#_t_|k=PI@_y!}bX?&&nP?`06icp|56wd>8+q8f$=yNuMv`k85d ze(HYrPlKRmRrPf>3hav68eJUXvKv=_bncN(^@qdX!k%QC67RmXND0cp5)E;vX26s6uhRO7v!(xepRID$xbjPd*z}Md0`NF76keXlr;Xbs z-(4t^^6Qhe^F|h81`;&+dWO2l6^-Ks2m%uR0r9wz55+R9pe2m;T@@o6r7Zn^W?mze z+_qxGfJOXI(?leH%Iy{q)X3(OYzu@<<`VBQhm2snF6Ww!2>3)z*`2L5-U}YdWt{f^ zca$1J-r`KV@r|O6G$0M+AOfAd6*jS2d>aq7{4=&R-QMiS$$~F@ZrtfhGhqAO?;9pY z7y_S5wovlgm~)uS2q{nCA2%~ScCRNp>}Q{!?i)im1^)2@#4yJktz*62a@Tdy&nX<|^Qu{6^}~ZrjAZEwipEA0 z^dGDLL$_ZT!Gc7)^x0EjySeV(Dl|_cfpbeCMlslIl`F<2^dUa)%E~QspxStf` zwVt{M+;3JP)1#)TUVMg_OZpmysePtPOQ(}f>Hdn^o()#DzV5PIG254eyATtBNH|?D zcGc(^ZrGLmqcL$rtg|xF+vUcVzIxrY9}3MikOLuC-Gz+uI4dl&jp?7JDx*($3}|nXEjmoc zE$2ARwMLa(rg^R1 zOQz50+q%q4fd2B?u(eO*hjfZEg{&T7R+#gxa;w?@L9|wB z;vTq(eh4#aOf!IG_=<*^h0-{u_hOUbt>o$gD-N+sB?pLr0THzx$~FO+P8 zGk8upJ1d8O`A}`Uis2LepMvY6MaOowz;Rc@P4)+vIV;^ti@jIFJ#En2okuyPrGzD3 zv;Iqq$i*lxQzn1v38%~ImpVeaX@KNVU; ze4ts{U~DHt3D?ExxcXSv3rPhFC>cJFvd#DnE_IOoX=+bis4%77>~xu=a)awfe|nA5 z35qyPu3ag?!oO(dLjWQ3v%}Mm(l3LlO?lW-Ziup*b1tb^t(;5o_@#D(=9B>X@Pqe{ zUME(YO{d57P6p0XB7Cm8D|7nZv|sfsb_x*X##bd>P}FVQ?gF@rL=8ox4DjFxZvY&L zp@H{jj~#Hhp)X@d0YPlb91c%|0FnG*por{T2YyObrTy)f$M<9Ldyfxt}2&nYJNEk7$I*ncH<&gcRf zIiX4g#aI6Gu|iIc_vd&3XGoANmd#SWEkdH^k2X$GJW`F3L7_x2;lJTX5RChL0>#*) zoGW({ar&~E?XA2y3X||v!-@?yMCXwZaE^SzW_2Rd_c}u^o_$ENQ_U$eS*E&^MN^!5 zBT~y(!Mo>t&`AGW_aSiw*XQwEhR#drXVS!xoxU$!$don%SJME37ZQ9Ch4-NJ_Rl#v zEVDI6Ic>;5Uklb5+2V%*Y2(lll(z$wwx%tM=y`|oW>!Ry^qjQ>#dR}+)*Z%-h2 zn(`)IKzdDw6a9{BP&+(iyCnp_Rso6ay-^v?8beY+oaVfwLGr5GI`e%V45y>I2%7Q4 z$wIr6HJ|VAP;mvJClAuYg~oexwY1a~ym14^=&dB?{m|$_tYPA86n5DY-zK8R4|xF~ z6Hj-PX=SI;SbGLIq-S@@rfdvP82tu;Sf5?;bOwiYvMQvJ+TFaBDb`;sTcz<~d}(cU z(~YCX`uaZg8#D^>XIB+~M3LcrqFQ_5qXJ%>l8wNgcDd*ghrSwjG^B6JR%x!94Tk&2 zQ0ekl;pBKf`gi`YZz_X{7F{A2xprQZco5S}On&C7!m4W(8FB8m^zuvNgXzxz@Mvp| z!s_#~qN?Fgw5Wkj#>kyJf()lz*{wPnQWZ^tYzOU`!_hj59KQeDwK(kWUie1C5HZ{7 z0Y^QLnCgfzX4h>E!s#R>yScSAk5y2gMF1lEf0P+S;(wsg>M>FiSo1F5?9OrF0=(;L zZPUpXGY!|bFsOfC#)C9^TXJm-d}C7=8x@X+c@cVoUOi)T>%>b-Td(S;l~zDCw=4)u z(3C50(AoK<%a{YK1!u;(9dTvifYnmAsYw8r1|>1O<>d9dLH`)#WNnB8{H!FZcTigM8G+&;`WDl zYw6X@159d|wR?-VaiT_eYHzqWx*l-ItZ|xK-S|*{t;Gbc-`v-UowC}^=&4LdZU|ZO zd3ovC`oN}xdB$Y)kI<#Z>n$@}5m+A!CLesHTVhI+E;T-V$UOUE5i`0vU21%W_kOSx z-x`!y^i9QgF??hde~fCEPDGScaa^N6lRtP4qKjYP4;86!Q8(p$DrW_!^l6s^#5@Ft zSlQR~q1%uq1uZ{FsVO2FV&UTdZltDsi*S}^9-(&84@LOjWkcJ`6PrQ1{w6AbT}G2W zj_BdINVyx!(=lTFwY;O&qFkiMM9>%yUtpwU&?;AKnE8)jx7+c*N+kGw=N&uR>m0ZyS@baQ4nOh2<4dx+AVlq#~F&#uRMW{~?SeV*@r zW7qV!fU#kaA8_qYMWrp+qJ;RmsRdk#j28dt{wM-T-G;**{A~AWvwO6O8kyFF2}8+BV8LR>yZCrJ+sm%oO@UJnhoJmBZDAQ{`|W#ahrgl&C%ER)7@=M|@2ylo;G zR70iCY$Y5G!&1u=|G2=as86BgWClmK>6ds4!>W!plmkiZ4b`ZjFvG48b$>PkvChvU zp4CPr+Vu3HHcxw3ff7VrA$=yzpMq>z5;f0KY0IFqh6fXVL}tESj(#FoMor#8wIJHq zAF|*b|5V^soNK1B*KRPM>=GF|k%*&%z&;cWcFEbe#`-S%aa453M>&^o(dK>X5aA8y z-AwCAsb7uu8LSmY%zgo&Xo>-)8wt4e_CH_|Fn-6I82AEaL(AWkIcLpT4CG+d>f34@ zR-s3K0Wo}q#f+9fg<$f-h$w}!IqZcHGt~vPd|a%Nn$_uX5#YW&U*3bgUHWal_ox9j z!!(7n3Mttya=a9?$tzF!HKgco?o+T{)d?V|h+nS~H?*1>vdIWf8?6`}Y*^*DlCZX! zOSD}k7n8$;Yw(TKBAW=28DDRt3ATU5Y~#*pfoP^LnBzj(dGEF^JdTTZmBu~Epx02W z$+1~vU05<+gnNGfGbFW6DrewS;HVi_Y~gBFEy_lP6n!=K$*RwwgE&I=JAjX0(ThF2 z(iKi6?;V;+(q`q`;d?Uq3F3gn22})Q9SmAKuT=?Ta0_YBaO>GB?IXOneTTLmp=9Ex zrhQM3`Dva%hDt_PullzdH|J#4j_|nO|E0~TFvDhYXX&^kBvKj9Q7c2k!+oa9!$_|(aX@S<88wY`|}pad6PmE z&rhkeX1+$+%Dw2k#X{v2sC!DSHrL^#LdZ2a0F-eSHyz=X;`?sPzO#}$_<~MJKqTsr zwb;rowt*FB3Nu)GxNsH>4+toj4p&nk+i2wA{~Ca&a7MMlX?=~p4O!84{`?Bz7tMF3 zgy62CfP7Jm>%@2O71WOrt=E})SqpuGir?X7L;e^uQac}MMF3p&q^#+i?^=MfE@Eg| zN*b1feQ`4gMML;b{CRn=yo8T_*T%!r4Fnw8=Lit;TaXXK5h?Nqnn$eiOD3tLbwW*J z@|D9abG7o{n|K}+-O_;L z1Jta`M)!Ep`<>p*x3+PyGlGI9Bf6v1g~3weKiR{B4eAi@g8*+(;RHq}>E~JfUMBH8 z_p~=R4V^v#Zc<*6@A#9$Z6xf;(!`lL^emt>L45ZpiuS7QPAZ||Jo&i!qfPN)bFWF~ zuO8vl&TKRdh9v)9_$TyfAy-T9PvdZi&xK+q1zuzQc$ZT78?nMsN8ICQC)Zi420}lSigc_?kf6ybg@RY`8P91T5 z;R&amS?A5e;qOD2A&`NCb_0!5Ia-DiaEKPn%+8JMD&ur_97+QF=pqw=(?!3=Tyoa) zZa46=Um>=U8e$_ZGBxnZK4oACFn;+qcfSj?tA>hb(kxWYzIKQK1m0WDsJ2f zROb@aUm$Bg6CbwVYVn38gzJr%97+f%0QqrK(N_Pk&jnW;CbVw=Fd z3m9~lbmxB`?%(s`@!hST`+WA)La`_du6F1dd;1-)L0|M|7rPD2lo$zPa&N zg=xk)V5Oq$R$l_F(8YMj6XfLbrc1y3>b9j;mWAbtfZGSkV^7T=9SGF=9gd!|@)|1} z%d>6js{OM$x!lqu4JJe}kbxTOS)yp{KWz4QiL?2{Tk2Nv##U@o$!!})4sR12WjTZi zKl?AUAVKyl$NH8kOLcDud|-s-XPU6L24T9jrjOvj=&{s})hCZAI%nA|5wKbI3xxYE z@lm0X%u$(MkI3sUT^U@=jOavE9B91`cJB-A+OhxFus~ko=XtrE;tHu-;>+iJ2-43Y z&51Jd&tJPId2dC^Oa4+RkW#Ki9O6YI`Zl&`+@i(y_s1prj6Kcy4vPg3WNg%|$87>a zdrB90`Tr}bnPjjR7*s7K#V=w5><#V?j2x@-$KN^d#e3f~K$)wH`1mF8>A$7i14Jh= zin(g-Ar1lcF=w1h@{6JDAiNb~mYXBRH#ajF2^F}R25(?h33J$Xf8dOoe?SJHMApsd zaCu~wC-xt0_Q_^0MMq(Wvc$RFVj&0p^`fR$Mvh~)IeAuo>QMb4zk ztK1V_u?L_=ozs#g1f6!NEaEd1XaAFV{v0iPo1$IHR#a!5>~wOh3#O`eCjWMng-^@P zoUE4N041oKu?(9cigqYofeK!_U$DJTvYBO9%P3v4F@01U6OeW+8SrH)IMVzkijd^p zosw(T+Dd~aSAVL`{wzA)_Z|r^PUW=-MP_wC3na=#wBm)bEnLNXzb-wM??FAS>&wz! z0=T35WYeC+s_P5dmE)cp7$9kF!M8)p_L)*NqRjFlDAIW}>VFHq#n*}H(U&Oa{3TJ= zVgSSoC=_mtW5QfmHMN)QmPSioS;QXWaxj#vk+GZfXW*#M@t2&6c9*(*k8T6!5Yag` zv9qm)=D2}7mmyP`v$jekAb49-Z=co+Ds-s8mONV$&259dW*A?#dp@-zmn!1CG8Q>` zo}4u*)Md(ZJla$I`g^YlY0x#i$w*TXi~;kJ%L>q-hjoDerJfx@zvVD%jTUk9=$U_r z;?HHaVDQCGd2+Fz8vD8!HbChbhB_FLoJ;F>G%cG&W}&Sq-InZas}n&+K8B?eOc4O8q|R*N4?FlWI` zPLhOgi!U6N#ta*brpI>S5WDG6jWVRdmJ+ezW_X%y(NyU z<$L@7m^Q^=h^2A;-xKtTC}?#x)U;`Uh^B<^HyA&6)E(>fNtla_uwS@0jMT^Kd5iWj zI@bar3ER~HsUPh@kiJNd>Hbu!WLnz`lQ(~tg-6nqnM2&P%Th0ecce%-bhI?nm5mAX zEM^*D3wQzg+rIOo+_!%wcLVMin^G_JZOi@2!S#X4d4p-pdr&a@vw-r=al%;-zQL50 z+(30&f)StI}IWhF=LEFscDwyr@Ws14X zGe}gtrwHR`v#U$u*c{{DE2pF!6t-JO_{FN*IL1voriHJF)M_ymZM_G!#yc44(x-u6 zZLs=nT~WwKg~j$yKd1H-Ed;5m%22YKP;hcj*z66GFu-2i1ChKA?2tw4?K!bKt2daZKkT~)y=NZ zHXfW{dsVPCzijBiEUi)I4|bkb`}{as#JhK1=x?DE+D&CU_e~9yTdvJ4!cY@Q);C@C zfkf3AqAP^IHh4e(a~w4Tr)!hVcq$1MER#Jj{!Zb6=v;MD%Qr_M`r7F%|1B!HIt8tw z7O9W#Qw_zHY1S3flFG!zHD1fA=%U?%)zUw)Sq}TtJ=^bJD&yXE{_rW?jZcM##32De zf&;{g8U_n}Ejg391?opc*yp|B*c5z$HWr4@wQRPWAG!VRnbx1Ko zLf`{NcbrbWBS5j5M*X8q~~j}bV21z z=#IvTDJL6T?0!Ub>naiCT%0|-Kf(Zfu1w}HQ3oVqT#^sDKW{V&gsc}%iFBsw%yXB2 z@_23|1;!`=O1BO5n=(Ox)i8yYaaCX)`sbj-h>%WLM^rdpo?)GB1kN_V*SQsD-G#sJIMyxu~#3}d-3hPm(B>FMug zMkkzXTIkvj>y%&c%Te7Ovmxs)y*pWBBMB?z+_nWd2wz-f3S&sEypVJ*LbKjqA*=VI zfMQ-YgBb%QMFrZG=!{tk#K+)3U_HPV+5egCYWONYcK4>KUFFBuDVdF#J*DLg^^Am@ zF=vFy;OiHpSd#6;JrS~g>j&5?CY{L0sxg{kbZXaM_^<04(^pnADJxt~# znAtv)8tYxuAeaf%BbKU!z%i6zwaV@7zHJh2CD&qzW!$GCU{5BP?1?u3sQ+zAfpeT{ zyB|kCcjZ{=#@5t7Q({To4ou6FY7GxUw$Nf-U6`&rUz`pRFzkrxemP#a+8Ag^A}*M{ zY5sA9R_a$x+4ss?|8>WZs*0cdzg1@KSrot2Nq*qte)rJWMCNj^PtQi?4;*+f6v6hX zb8gpSj!nT5vMi_g&~d=xFp*@eJXxQoUAQ9|u{TA?7rA0(`h_OyH3ke+uJL@Uo9&ijJvZv6rT-7D#o6!-8n#Rg$QQ)|cM6*%!7!b})Y#`v) z%%Dqu#2jM?I zwiwT)E0HTdaKVdPf*|haS0*l~akUy`&yD8JN+v>IIEJH}MpMu83B@WzvUG6=S1f9s1)Q!8K~-hsD^XRw$`8 z3C=jnv`c#Bwg^Eg0Hm%Cb%Sj+xTtnko2O3ddU*v&sIz2%$8jmk%R3+vu2MDH&iuLG zU7G2w%VY;fxEH8FytUsf2RGoZ1eag#;KBR7%D>AZXOVx+p>DLfCs3vyg+cFSTe7iG zl{vbvV%7^KE1kKnYz;xuvevVeE0-e!aYw!aFZiDh%F`>+l>nruno!p1Fodl|dVpq# zu;D%4%kRbP;eg}+f*L)(OCi?sEm~N{2^W>go7DX(9nXyIEIV~=o~I?9W3*1YCSt!1 z2^@j_EK;YsOEeTE*-bMyq<+b96_=L%Oy~WX$L_5Vwttx(vP`D%jS!%Gnp)aanP*_v ztTofiST&EagHd$J**4_1OrVaQ{bvCF)oWo0Ah*06aHQ5^w8gfDs#1^E;(QM~htx-n zynM1+tGg`d;Z#_N6-+QfsX(BDTX3;nY3$Hmwm8$qdGmENc!#j}l*-NV@Kgco8E7U3!)$^psd06x+TN0@WX>`xzA& zmPm;Gm%i|qh|mFwH7>1Wd`LCpFKC0e)#eIX>7#6q4EXCFk}MH>^NdqKaq5p51_^jt z9oQ{#swVVwSi%%GC2kK+f;taqq+IU;9Mf~UnW3+=`hus*FyC@~vBq`*j*oRnI#Xw` zU*m%&mj*pDyN8f%E%W6>4rr1Ab;4Vz|2Z6xh81qqrN8^rOz`d>zan3HcZo;O1w^M# zy2zp)J54`SlQ}N6Q_BqKL@w4qtnnAskzna`PdF%**1d?vepYLp#`mzCWN#Zs)fHrG z5G5!5{3B%b9Vo&5C=6-B{V0ikJWL~8nBS&;bvUO`$Vt}SDxajSRP?tVo6C18Ly4Z6 z&;i_4Vk*Z!-3z5wo5?S)f*NI)HNMGf&fdU5qal;chWMBOXrsgd`%@H>5w8=t3C8_{ z&|Pnr=;!4PtlaS($vyOv6wN|4twzI4g0$rUMbLm8D;yy*MhQ$oHMl^NbjYtB#+^GJ zl~ueC<^`u2zW))_u0GV{VL^c-*midwj#Yi5kzfA&P8ILM+x-cn%i&YCOwao%2DgO5 zFY&=1YF0o5Fv11d2p|L`Jr^u5eO%B&`XIYYl4|{pv<;CuE`X7bKwKnRcM8TwO_9#9 zxn0q|6jI#2nQ^l-uXo+pR0y=h6UlS{=P_yu+!Hl{{0{klz;O=#{^dDKuf67lUK!ds za#}n5dD|)#d@c;hi_6*M#*hhC%IRYZ$yPNXHzy({F6V6=0Sobpl4msiqmGLXX(GK( zrYlumVJBRTtMj#Un1cTMm}B@Y7WYiQ<-c`#e0&-n7nPY(@2{$#Xm1DXGDNw^TA;=m z@w4(i#7JNig3qSHuq;F9#QHxe^}j45&zoo#eoF5{lwxoJD)@5XpaR5oF}MeV?=T)2 zEHdX8?ui$WFWn`ELnRy!#|tXg>oIoqEyfikgp{TuJS%UFj{X=Q#uTfHSxyze64&*1 zh8TGSXle6H?kb-qX%v5naqIlAXp+>C%p5*rX*Q9Ch3E3iGDjS3#ahb3^scx}n(&2u z$Um|{DToII$S-3p(&g{-R@zibJ?>X+G}?9kFW>eXljkgg4(ZohF`X`VH0eZED)X;# z>zBMoAz{Kxg=!a~XjOM@`NdcTb&cpCsC9Kr1djMLW-uf8k2(^#POWg4`xT*fW}Byl zeO+(l9nhUh9wo8UNUIa$ipImtz|Hfv_*;nOyt`BM}`5L4ssy8_s7{r7`Aa6v0rx?2XW?Z-GDjT*!^ib?M7SkLa%C`1`Y7TsS5On6=%>n zBZxAh&HE!%_z<(Uvw!N<>jQxuIQ3~KE8;`1)V zx8M5$CzSqAHVu@yaD|5j^O=^HvZU-udVW$A*$d+?SFQ1I0`lwd zF_K5@z~dQzLt!XA?m_^Iq`*Yu2&044803FQ3G3*A==;JWP%!n|IGcl(Qv=p3$03=6 zf?vv)f$lZung^f;O`qnn+QqSQVG)pInh}KBXFM|`Q5kwlT#3Sqk82pi$#2ac)fZ|l z7M1-ClOV+20g*151dKARTuz>O<}NC|he%`BrsL;lkZ@R+An;r*om^&M_L`sD+Jt~8 zS{QWByvV>WND6++(_W6C$!SL{J!l;MOYPp+vt>>jOoR!4q72|>h&aAlNFW*ZTK6QT zX4o zI+(zwM7B_ZwSF-a1;@eyfqSz1Dqo~SktEI2c`nY&cW;cpBn5D)W#VUE$QB-~vP|VG z2g_g{Gs=R~;I5R0C$_0Sia&H*l%xv~6aQvY{|>N*s1g{S>nUxVT+1%t&D~qh)7c4p z@%F#2DCYS~8Z6T&Dy-O2;O#fC^eAWYvsbH6VNr`G54VK7RA$Kq)SRmfo0h&q7M`SM z@_)gaSmW<|dK`yC-oYGXR84K@UlTqzkCGI;74QkEdF48VmE$=~xA~8<3k<&oA}zA} zh$x?sjjbM5YZ(@=K9=1izeEonl-!_Tb0@NrT>&yh4R}#35~3BT5l%UvYVXqme674F z9ppo+9g|tU#`)bhLcl*VcVOP0>YW(9If=-P(1j|Z*R;X5=q`NrM3&zlpT^|$0eagH z^+q3IPlH}dDa(w+9g1zrDcjUjc)9Y4HIT}iv&2pmjW=9%CG_yC)s@66@)@fOIt7{& z(95v26yK%DJ3B>`BrHG%+*-C}dJ0yfA2iA;UAJxv!$p;^IrD6^jEj2DlWfkIlV?A) zsO}MJW2YEQez(+n0LC~t8atispib?!4CMF3p}Sn;ulwKg()q_D&mF`JZvxGekvMItopA2u|NaciZc?FD@7vSRMG?N1GT5YGg!Ni6N2Y1&3HMR$j+G z6Ui@ZB+H%4n(cmo9+~J27BU>yi#W4s#fG6dkhpqMrxl z?!cC4@bZ6#VAH_4{o;0(x@aw09=K|b4Es4bIlb;81VYVPE%huPoDE+QO}~!>aw7rV zKYhQICV^psyilJm-ep<(frDw6s<_!brMcajQ5za4exoUXnRdWu&ISY?20U2L1Y=R$ z*wDG`mY##@M$?kumOFxUz$HzWHUnqLBIb9l%GOKnW#4M)t`vsV%oh_GZ}XxRD=lI! zACQ9wj00KkHi(CAYW=ly5RVaMfxUjPN;v~){nT?aDfOT==NF8C_u-F#AN5fGRb6~V z&HK^hl+yK0=bdXes~!Mz76%Lppsk272yx(?~pW9Swr5K~T zv>tnHn@ZO+uPWD)_@rt)rj<z%t)We+z2T5|{0sTig<6}S6>gV3vHvulyD9)-s zV(D$oJ!g%BGPLo6p;U}sRebHVw{6qi!el0VjH4>HwZrz9{Gf@P24>P7LZWkQpfM_e zwc|H}9V&Y1nuB62*_d&T-XQ??KDYX>d;vz+m8@5X_6(dI~6EQ4A${YgG<+6$*|^c>VbV9hm7^znr2hunrBqwYh_-mhCXJ_9`k zl8j~kx1KEN7kRz2=Uw|0buTubNmjIhZOFJMNi12)wk@j~d8SUrJH{T-Q%pd*BtNA0 zEO=U5u*Wbis~Q^It_B91?#VcZ4GE0NoEbIa<%utHl#^X$gwDaT#L>7b?Lk`c{9q*L zFuNGITrGf;bbTt3PGYK#=b=ktBqQEcu`vHqo_WYwPosk; z|4$vK9FfHDoV_^{-jRRhvwI%Xc~*MfcYmekFD3R$cGb*%==GVllR(ewYkbQUw3qf{ z1I0fTC5aF=>Oe)H#M&Yt|Blqu**(D2P4@Scxh70Kq-_Hgn9R2dtYIHqK0($(#0QJ? zXSy-##;kO{7!idaJ|KR{L)A7sv=CCgD<1-<*G(5HUd^#uL{4viA$kWsMaw-UxSg%W z_b{vXL&;mI-Nu03mEP17<{cmT_|80nqb?~Q*Nv5|fs0o$nHV>(ZwH}F@UrskQUs4N zuM-6sXZoa$Xl>TC|La6m%QRg+kZJYmWulyo3VXXF*>qhLu4To~xOe3JBZA)x>&rFD zi#ZLZU7Oyp07wHe*e1{xpCoRbU;77$aRmW-IA<7N47E59ER5x~2YnT@its^8RUy3Z zm2|xagK19GTudokuQF4(4tK&I3;#wuePbKmb749@5c^_=78>MW0|>l6<8;%Fc%&LAL6{GF2%3rI7P)K=b0)_1XapTdDu8@r$50ut1Dt z#;#_jI)B*-4p&h8_}A=~OB&N7Xi&+dD~`ouIpEtBV6AUwB~$UtYX;nR^8i07`CvkO zGES@r)UP~JZdopUgBLbV0n3xTa|>@SYo!%k4Tp^?u%_BgV);}S;|0TvDdA+$@Yt|3 zkLY^hCxaEiu_2;Be5ly|4Ol$;BcF#;eF0ysK;URj&(yZE+-3S1qSG$>& zstr?51<5(|T8DKQncpv1VsvR* zCAAL7)otr)Ij!1L2d(~76LPJn5-3~*f*;H7Hs&n^%A@WmF}QH{ zPrOYtLKN7!3~c%Dz6*{F6n?=< zW&4=$MmRkeGA;A5JIO}Mp&rsY+4S6@$^&f3l#&^A<(~xp7$guPCE`85E!3SDWGe4qX>;YHiO`xrQE)t*@E){QVu|0jPn7YLHw%`{Z zuoqhNYdV1%9lZMr1Y!LZW5}Si&{-BZJ&*p)^?A0je1oMiCy6gX-#?ylf7)&%gTKVQ zH|tHZ4Xcug_y~K7#*k#taIWtAvqMml*L08?)%|-+f9t;^15R}1-$9$}FhRBg+`fAL z<x56T(v z|BmQ<$x2|*CQDrU9+VKZoDiqOmEzZwS>ieea2HtVSTm3sc1vUiX`!KtQNWKUD(qIH zXC*(K%hnZ7l^hs>3y4#LRhD{^7Vip5-wv{=w&~D`hz(>3Wv-kDr_^6q0+bY;i4$>+ zk^+&YkO{kF6Zz~qT$-Bq91knEtbau*%c%F~#_n-B7>o#5>SgK-nu$fww5jg)+s&!W z%CQ~~+=EOIjaswk6G~wM(6R&~zvAu>)Zk?QX8|9SxW>=YBeqJtwh|S{?3=Z{9~K@# z9!TK(Jh*1Do&%dIUAOuRT_VO@Oex+l;_G4r%yc>wH;Jgk764wqSqmm}r>_t^Ih57E4Zuj*$mjoEvQMz7m77VK2*K z6G>?YwFK)|98v(nz8jxf1Q1rDcMy&)**P+4giS+_#J~*00Q=vrh{8_p2p@%oY2Y%H<5&{sr(G?%7cSjKp&{R@<-pnpbGS%v6 z$0WJs{Gn9vaN*dC=Q{6+LT)&LQyML3P%B?rW?gB+s0P2r>?wDw{$&hS5}JCrT5L~u zCsfek%HQw5Ya_ts2Kq0DwAY;-444PkeYgH(CGrQx-0#g(=Q6Vf4q{BCX|Cf980ibL zmdaYteuV~|rHXasXl5v0i}X%g4qgA2D&3&U+nR9wZ_viLo+YRT%AGR_ZXLP)`_@_>u=!Z`-`qw+vqp<+{L diff --git a/src/Containers.react.js b/src/Containers.react.js index 11b6a3f177..0446677df6 100644 --- a/src/Containers.react.js +++ b/src/Containers.react.js @@ -73,7 +73,7 @@ var Containers = React.createClass({ var container = this.getParams().name ? this.state.containers[this.getParams().name] : {}; return (

    -
    +
    diff --git a/src/Setup.react.js b/src/Setup.react.js index 7bb1ddba3b..5860d4a30f 100644 --- a/src/Setup.react.js +++ b/src/Setup.react.js @@ -3,6 +3,7 @@ var Router = require('react-router'); var Radial = require('./Radial.react.js'); var SetupStore = require('./SetupStore'); var RetinaImage = require('react-retina-image'); +var Header = require('./Header.react'); var Setup = React.createClass({ mixins: [ Router.Navigation ], @@ -28,9 +29,10 @@ var Setup = React.createClass({ }); }, renderDownloadingVirtualboxStep: function () { - var message = 'Kitematic needs VirtualBox to run containers. VirtualBox is being downloaded from Oracle\'s website.'; + var message = "VirtualBox is being downloaded from Oracle's servers. Kitematic requires VirtualBox to run."; return (
    +
    @@ -41,6 +43,7 @@ var Setup = React.createClass({
    +

    Step 1 out of 4

    Downloading VirtualBox

    {message}

    @@ -49,9 +52,10 @@ var Setup = React.createClass({ ); }, renderInstallingVirtualboxStep: function () { - var message = 'VirtualBox is being installed. Administrative privileges are required.'; + var message = 'VirtualBox is being installed in the background. We may need you to type in your password to continue.'; return (
    +
    @@ -62,6 +66,7 @@ var Setup = React.createClass({
    +

    Step 2 out of 4

    Installing VirtualBox

    {message}

    @@ -70,9 +75,10 @@ var Setup = React.createClass({ ); }, renderInitBoot2DockerStep: function () { - var message = 'Containers run in a virtual machine provided by Boot2Docker. Kitematic is setting up that Linux VM.'; + var message = 'To run Docker containers on your computer, we are setting up a Linux virtual machine provided by boot2docker.'; return (
    +
    @@ -83,7 +89,8 @@ var Setup = React.createClass({
    -

    Setting up the Docker VM

    +

    Step 3 out of 4

    +

    Setting up Docker VM

    {message}

    @@ -91,9 +98,10 @@ var Setup = React.createClass({ ); }, renderStartBoot2DockerStep: function () { - var message = 'Kitematic is starting the Boot2Docker Linux VM.'; + var message = 'Kitematic is starting the boot2docker VM. This may take about a minute.'; return (
    +
    @@ -104,7 +112,8 @@ var Setup = React.createClass({
    -

    Starting the Docker VM

    +

    Step 4 out of 4

    +

    Starting Docker VM

    {message}

    @@ -132,8 +141,22 @@ var Setup = React.createClass({ if (this.state.error) { return (
    - ; -

    Error: {this.state.error}

    +
    +
    +
    + +
    +
    +
    +
    +
    +
    +

    Installation Error

    +

    We're Sorry!

    +

    There seem to be an unexpected error with Kitematic:

    +

    {this.state.error}

    +
    +
    ); } else { diff --git a/styles/setup.less b/styles/setup.less index 2d2ac1f5ce..801d268149 100644 --- a/styles/setup.less +++ b/styles/setup.less @@ -3,7 +3,7 @@ height: 100%; width: 100%; flex-direction: row; - -webkit-app-region: drag; + //-webkit-app-region: drag; .image { display: flex; @@ -13,12 +13,13 @@ align-items: center; justify-content: flex-end; padding-right: 40px; + padding-left: 80px; .contents { position: relative; .detail { position: absolute; - right: 0; + right: -20px; bottom: 0; } } @@ -36,13 +37,24 @@ max-width: 320px; h1 { - margin-top: -30px; + color: @gray-darkest; font-size: 24px; } - + h4 { + color: @gray-lightest; + font-size: 13px; + margin-top: -30px; + } p { font-size: 13px; color: @gray-normal; + &.error { + color: @brand-negative; + background-color: lighten(@brand-negative, 32%); + padding: 10px; + border-radius: 4px; + -webkit-user-select: text; + } } } From cb437f1d89b9b36f5c747a64b3ef84aa325007b8 Mon Sep 17 00:00:00 2001 From: Jeffrey Morgan Date: Mon, 9 Feb 2015 21:24:12 -0800 Subject: [PATCH 35/35] Merging --- .gitignore | 3 + .jshintrc | 4 +- __tests__/Boot2Docker-test.js | 37 + __tests__/Virtualbox-test.js | 21 + gulpfile.js | 34 +- lint.sh | 1 - package.json | 27 +- preprocessor.js | 14 + src/Boot2Docker.js | 25 +- src/ContainerDetails.react.js | 11 +- src/SetupStore.js | 18 +- src/SetupUtil.js | 16 +- src/Virtualbox.js | 29 +- tests/Boot2Docker-integration.js | 57 - tests/SetupStore-integration.js | 91 - tests/SetupUtil-integration.js | 10 - tests/Virtualbox-integration.js | 56 - tests/Virtualbox-test.js | 21 - tests/jasmine-2.1.3/boot.js | 120 - tests/jasmine-2.1.3/console.js | 188 -- tests/jasmine-2.1.3/jasmine-html.js | 404 ---- tests/jasmine-2.1.3/jasmine.css | 62 - tests/jasmine-2.1.3/jasmine.js | 2908 ----------------------- tests/jasmine-2.1.3/jasmine_favicon.png | Bin 1486 -> 0 bytes tests/tests.html | 9 - tests/tests.js | 26 - 26 files changed, 143 insertions(+), 4049 deletions(-) create mode 100644 __tests__/Boot2Docker-test.js create mode 100644 __tests__/Virtualbox-test.js delete mode 100644 lint.sh create mode 100644 preprocessor.js delete mode 100644 tests/Boot2Docker-integration.js delete mode 100644 tests/SetupStore-integration.js delete mode 100644 tests/SetupUtil-integration.js delete mode 100644 tests/Virtualbox-integration.js delete mode 100644 tests/Virtualbox-test.js delete mode 100755 tests/jasmine-2.1.3/boot.js delete mode 100755 tests/jasmine-2.1.3/console.js delete mode 100755 tests/jasmine-2.1.3/jasmine-html.js delete mode 100755 tests/jasmine-2.1.3/jasmine.css delete mode 100755 tests/jasmine-2.1.3/jasmine.js delete mode 100755 tests/jasmine-2.1.3/jasmine_favicon.png delete mode 100755 tests/tests.html delete mode 100644 tests/tests.js diff --git a/.gitignore b/.gitignore index d9662ee9f5..f3c3a91fbb 100644 --- a/.gitignore +++ b/.gitignore @@ -14,3 +14,6 @@ resources/boot2docker* cache resources/settings* + +# Tests +.test diff --git a/.jshintrc b/.jshintrc index 89d89340b9..9240a3ae9f 100644 --- a/.jshintrc +++ b/.jshintrc @@ -23,7 +23,9 @@ "camelcase": false, "jasmine": true, "globals": { - "define": true + "define": true, + "jest": true, + "pit": true }, "predef": [ "-Promise" ] } diff --git a/__tests__/Boot2Docker-test.js b/__tests__/Boot2Docker-test.js new file mode 100644 index 0000000000..897b427194 --- /dev/null +++ b/__tests__/Boot2Docker-test.js @@ -0,0 +1,37 @@ +jest.dontMock('../src/Boot2Docker'); +var boot2docker = require('../src/Boot2Docker'); + +var fs = require('fs'); +var util = require('../src/Util'); +var Promise = require('bluebird'); + +describe('Boot2Docker', () => { + pit('cli version is parsed correctly', function () { + util.exec.mockReturnValueOnce(Promise.resolve('Boot2Docker-cli version: v1.4.1\nGit commit: 43241cb')); + return boot2docker.cliversion().then(version => { + expect(util.exec).toBeCalledWith([boot2docker.command(), 'version']); + expect(version).toBe('1.4.1'); + }); + }); + + it('iso version parsed correctly', function () { + fs.readFileSync.mockReturnValueOnce('9adjaldijaslkjd123Boot2Docker-v1.4.1aisudhha82jj123'); + expect(boot2docker.isoversion()).toBe('1.4.1'); + }); + + pit('should exist if status command succeeds', function () { + util.exec.mockReturnValueOnce(Promise.resolve(true)); + return boot2docker.exists().then(exists => { + expect(util.exec).toBeCalledWith([boot2docker.command(), 'status']); + expect(exists).toBe(true); + }); + }); + + pit('should not exist if status command fails', function () { + util.exec.mockReturnValueOnce(Promise.reject(false)); + return boot2docker.exists().then(exists => { + expect(util.exec).toBeCalledWith([boot2docker.command(), 'status']); + expect(exists).toBe(false); + }); + }); +}); diff --git a/__tests__/Virtualbox-test.js b/__tests__/Virtualbox-test.js new file mode 100644 index 0000000000..e8f4a2fe72 --- /dev/null +++ b/__tests__/Virtualbox-test.js @@ -0,0 +1,21 @@ +jest.dontMock('../src/Virtualbox'); +var virtualbox = require('../src/Virtualbox'); +var util = require('../src/Util'); +var Promise = require('bluebird'); + +describe('Virtualbox', function () { + it('returns the right command', function () { + expect(virtualbox.command()).toBe('/usr/bin/VBoxManage'); + }); + + describe('version 4.3.20r96996', function () { + pit('correctly parses virtualbox version', function () { + util.exec.mockImplementation(function () { + return Promise.resolve('4.3.20r96996'); + }); + return virtualbox.version().then(function (version) { + expect(version).toBe('4.3.20'); + }); + }); + }); +}); diff --git a/gulpfile.js b/gulpfile.js index 44681639be..7dcbbc3729 100644 --- a/gulpfile.js +++ b/gulpfile.js @@ -28,10 +28,9 @@ var options = { }; gulp.task('js', function () { - gulp.src('src/**/*.js') + return gulp.src('src/**/*.js') .pipe(plumber(function(error) { gutil.log(gutil.colors.red('Error (' + error.plugin + '): ' + error.message)); - // emit the end event, to properly end the task this.emit('end'); })) .pipe(gulpif(options.dev || options.test, sourcemaps.init())) @@ -42,23 +41,6 @@ gulp.task('js', function () { .pipe(gulpif(options.dev, livereload())); }); -gulp.task('tests', function () { - gulp.src('tests/*.js') - .pipe(plumber(function(error) { - gutil.log(gutil.colors.red('Error (' + error.plugin + '): ' + error.message)); - // emit the end event, to properly end the task - this.emit('end'); - })) - .pipe(sourcemaps.init()) - .pipe(react()) - .pipe(to5()) - .pipe(sourcemaps.write('.')) - .pipe(gulp.dest('./build')); - - gulp.src('./tests/tests.html').pipe(gulp.dest('./build')); - gulp.src('./tests/jasmine-2.1.3/*').pipe(gulp.dest('./build/jasmine-2.1.3')); -}); - gulp.task('images', function() { return gulp.src('images/*') .pipe(gulp.dest(options.dev ? './build' : './dist/osx/' + options.filename + '/Contents/Resources/app/build')) @@ -165,20 +147,6 @@ gulp.task('release', function () { runSequence('download', 'dist', ['copy', 'images', 'js', 'styles'], 'sign', 'zip'); }); -gulp.task('test', ['download', 'copy', 'js', 'tests'], function () { - var env = process.env; - env.NODE_ENV = 'test'; - if (options.integration) { - gulp.src('').pipe(shell(['./cache/Atom.app/Contents/MacOS/Atom . --test --integration'], { - env: env - })); - } else { - gulp.src('').pipe(shell(['./cache/Atom.app/Contents/MacOS/Atom . --test'], { - env: env - })); - } -}); - gulp.task('default', ['download', 'copy', 'js', 'images', 'styles'], function () { gulp.watch('src/**/*.js', ['js']); gulp.watch('index.html', ['copy']); diff --git a/lint.sh b/lint.sh deleted file mode 100644 index ce9d6e33cb..0000000000 --- a/lint.sh +++ /dev/null @@ -1 +0,0 @@ -jsxhint src/**/* && jsxhint browser/**/* diff --git a/package.json b/package.json index 77ac72a68c..a7566e1948 100644 --- a/package.json +++ b/package.json @@ -12,13 +12,11 @@ "bugs": "https://github.com/kitematic/kitematic/issues", "scripts": { "start": "gulp", - "test": "gulp test", - "test:integration": "gulp test --integration", - "test:all": "npm test && npm run test:integration", + "test": "jest", "release": "gulp release", "release:beta": "gulp release --beta", "preinstall": "./deps", - "lint": "jsxhint src/" + "lint": "jsxhint src/**/* && jsxhint browser/**/*" }, "licenses": [ { @@ -27,16 +25,19 @@ } ], "jest": { + "scriptPreprocessor": "preprocessor.js", "unmockedModulePathPatterns": [ - "dockerode", - "react", - "debug" + "node_modules/request", + "node_modules/react", + "node_modules/bluebird", + "node_modules/6to5" ] }, "boot2docker-version": "1.4.1", "atom-shell-version": "0.21.1", "virtualbox-version": "4.3.20", - "virtualbox-filename": "VirtualBox-4.3.20-96996-OSX.dmg", + "virtualbox-filename": "VirtualBox-4.3.20.pkg", + "virtualbox-checksum": "89edac4cc7298c8a04fd4bb646ff2197e7673137c6566c7757f0e9cd6265d0c5", "virtualbox-required-version": "4.3.18", "dependencies": { "ansi-to-html": "0.2.0", @@ -63,6 +64,9 @@ "underscore": "^1.7.0" }, "devDependencies": { + "6to5": "^3.4.1", + "6to5-core": "^3.4.1", + "6to5-jest": "^3.0.0", "browserify": "^6.2.0", "ecstatic": "^0.5.8", "glob": "^4.0.6", @@ -85,11 +89,14 @@ "gulp-uglify": "^0.3.1", "gulp-uglifyjs": "^0.5.0", "gulp-util": "^3.0.0", + "jest-cli": "^0.2.2", + "merge-stream": "^0.1.7", + "react-tools": "^0.12.2", "reactify": "^0.15.2", + "regenerator": "^0.8.9", "run-sequence": "^1.0.2", "time-require": "^0.1.2", "vinyl-source-stream": "^0.1.1", - "watchify": "^2.1.1", - "zombie": "^2.5.1" + "watchify": "^2.1.1" } } diff --git a/preprocessor.js b/preprocessor.js new file mode 100644 index 0000000000..5e45b168f0 --- /dev/null +++ b/preprocessor.js @@ -0,0 +1,14 @@ +var ReactTools = require('react-tools'); + +module.exports = { + process: function(src, filename) { + if (filename.indexOf('node_modules') === -1) { + var res = ReactTools.transform(require('6to5').transform(src).code); + if (filename.indexOf('-test') !== -1) { + res = 'require(\'6to5/polyfill\');' + res; + } + return res; + } + return src; + } +}; diff --git a/src/Boot2Docker.js b/src/Boot2Docker.js index 46e9b98aec..7a8b8acbc7 100644 --- a/src/Boot2Docker.js +++ b/src/Boot2Docker.js @@ -2,12 +2,19 @@ var _ = require('underscore'); var path = require('path'); var Promise = require('bluebird'); var _ = require('underscore'); -var fs = Promise.promisifyAll(require('fs')); +var fs = require('fs'); var util = require('./Util'); var Boot2Docker = { + command: function () { + return path.join(process.cwd(), 'resources', 'boot2docker-' + this.version()); + }, version: function () { - return JSON.parse(fs.readFileSync(path.join(__dirname, '..', 'package.json'), 'utf8'))['boot2docker-version']; + try { + return JSON.parse(fs.readFileSync(path.join(__dirname, '..', 'package.json'), 'utf8'))['boot2docker-version']; + } catch (err) { + return null; + } }, cliversion: function () { return util.exec([Boot2Docker.command(), 'version']).then(stdout => { @@ -22,17 +29,17 @@ var Boot2Docker = { }); }, isoversion: function () { - return fs.readFileAsync(path.join(util.home(), '.boot2docker', 'boot2docker.iso'), 'utf8').then(data => { + try { + var data = fs.readFileSync(path.join(util.home(), '.boot2docker', 'boot2docker.iso'), 'utf8'); var match = data.match(/Boot2Docker-v(\d+\.\d+\.\d+)/); if (match) { - return Promise.resolve(match[1]); + return match[1]; } else { - return Promise.resolve(null); + return null; } - }); - }, - command: function () { - return path.join(process.cwd(), 'resources', 'boot2docker-' + this.version()); + } catch (err) { + return null; + } }, exists: function () { return util.exec([Boot2Docker.command(), 'status']).then(() => { diff --git a/src/ContainerDetails.react.js b/src/ContainerDetails.react.js index fd5b186368..e8beede01b 100644 --- a/src/ContainerDetails.react.js +++ b/src/ContainerDetails.react.js @@ -16,9 +16,10 @@ var ContainerHome = require('./ContainerHome.react'); var RetinaImage = require('react-retina-image'); var Radial = require('./Radial.react'); +var _oldHeight = 0; + var ContainerDetails = React.createClass({ mixins: [Router.State, Router.Navigation], - _oldHeight: 0, PAGE_HOME: 'home', PAGE_LOGS: 'logs', PAGE_SETTINGS: 'settings', @@ -31,8 +32,8 @@ var ContainerDetails = React.createClass({ env: {}, pendingEnv: {}, ports: {}, - defaultPort: null, - volumes: {} + volumes: {}, + defaultPort: null }; }, componentWillReceiveProps: function () { @@ -51,11 +52,11 @@ var ContainerDetails = React.createClass({ // Scroll logs to bottom var parent = $('.details-logs'); if (parent.length) { - if (parent.scrollTop() >= this._oldHeight) { + if (parent.scrollTop() >= _oldHeight) { parent.stop(); parent.scrollTop(parent[0].scrollHeight - parent.height()); } - this._oldHeight = parent[0].scrollHeight - parent.height(); + _oldHeight = parent[0].scrollHeight - parent.height(); } }, init: function () { diff --git a/src/SetupStore.js b/src/SetupStore.js index 34a340af65..2f851eb505 100644 --- a/src/SetupStore.js +++ b/src/SetupStore.js @@ -13,8 +13,8 @@ var _percent = 0; var _currentStep = null; var _error = null; -var VIRTUALBOX_FILE = `http://download.virtualbox.org/virtualbox/${packagejson['virtualbox-version']}/${packagejson['virtualbox-filename']}`; -var SUDO_PROMPT = 'Kitematic requires administrative privileges to install VirtualBox and copy itself to the Applications folder.'; +var VIRTUALBOX_FILE = `https://github.com/kitematic/virtualbox/releases/download/${packagejson['virtualbox-version']}/${packagejson['virtualbox-filename']}`; +var SUDO_PROMPT = 'Kitematic requires administrative privileges to install VirtualBox.'; var SetupStore = assign(EventEmitter.prototype, { PROGRESS_EVENT: 'setup_progress', @@ -27,8 +27,7 @@ var SetupStore = assign(EventEmitter.prototype, { return; } } - var checksum = yield setupUtil.virtualboxSHA256(packagejson['virtualbox-version'], packagejson['virtualbox-filename']); - yield setupUtil.download(VIRTUALBOX_FILE, path.join(setupUtil.supportDir(), packagejson['virtualbox-filename']), checksum, percent => { + yield setupUtil.download(VIRTUALBOX_FILE, path.join(setupUtil.supportDir(), packagejson['virtualbox-filename']), packagejson.checksum, percent => { _percent = percent; SetupStore.emit(SetupStore.PROGRESS_EVENT); }); @@ -39,15 +38,13 @@ var SetupStore = assign(EventEmitter.prototype, { if (setupUtil.compareVersions(version, packagejson['virtualbox-required-version']) >= 0) { return; } - yield virtualbox.kill(); + yield virtualbox.killall(); } - yield util.exec(['hdiutil', 'attach', path.join(setupUtil.supportDir(), packagejson['virtualbox-filename'])]); var isSudo = yield setupUtil.isSudo(); var iconPath = path.join(setupUtil.resourceDir(), 'kitematic.icns'); var sudoCmd = isSudo ? ['sudo'] : [path.join(setupUtil.resourceDir(), 'cocoasudo'), '--icon=' + iconPath, `--prompt=${SUDO_PROMPT}`]; - sudoCmd.push.apply(sudoCmd, ['installer', '-pkg', '/Volumes/VirtualBox/VirtualBox.pkg', '-target', '/']); + sudoCmd.push.apply(sudoCmd, ['installer', '-pkg', path.join(setupUtil.supportDir(), packagejson['virtualbox-filename']), '-target', '/']); yield util.exec(sudoCmd); - yield util.exec(['hdiutil', 'detach', '/Volumes/VirtualBox']); }), cleanupKitematicStep: function () { return virtualbox.vmdestroy('kitematic-vm'); @@ -60,10 +57,10 @@ var SetupStore = assign(EventEmitter.prototype, { } if (!boot2docker.haskeys()) { - throw new Error('Boot2Docker SSH key doesn\'t exist. Fix by removing the existing Boot2Docker VM and re-run the installer. This usually occurs because an old version of Boot2Docker is installed.'); + throw new Error('Boot2Docker SSH keys do not exist. Fix this by removing the existing Boot2Docker VM setup and re-run the installer. This usually occurs because an old version of Boot2Docker is installed.'); } - var isoversion = yield boot2docker.isoversion(); + var isoversion = boot2docker.isoversion(); if (!isoversion || setupUtil.compareVersions(isoversion, boot2docker.version()) < 0) { yield boot2docker.stop(); yield boot2docker.upgrade(); @@ -116,6 +113,7 @@ var SetupStore = assign(EventEmitter.prototype, { try { yield step.run(); } catch (err) { + console.log(err); _error = err; this.emit(this.ERROR_EVENT); throw err; diff --git a/src/SetupUtil.js b/src/SetupUtil.js index fa56f8652d..ab4dbe134b 100644 --- a/src/SetupUtil.js +++ b/src/SetupUtil.js @@ -4,7 +4,6 @@ var path = require('path'); var crypto = require('crypto'); var fs = require('fs'); var exec = require('exec'); -var rp = require('request-promise'); var Promise = require('bluebird'); var SetupUtil = { @@ -44,7 +43,9 @@ var SetupUtil = { } progress(request({ uri: url, rejectUnauthorized: false }), { throttle: 250 }).on('progress', state => { - percentCallback(state.percent); + if (percentCallback) { + percentCallback(state.percent); + } }).on('error', err => { reject(err); }).pipe(fs.createWriteStream(filename)).on('error', err => { @@ -57,17 +58,6 @@ var SetupUtil = { }); }); }, - virtualboxSHA256: function (version, filename) { - return rp(`http://dlc-cdn.sun.com/virtualbox/${version}/SHA256SUMS`).then((body) => { - var checksums = body.split('\n').map(line => { - return line.split(' *'); - }).reduce((obj, pair) => { - obj[pair[1]] = pair[0]; - return obj; - }, {}); - return Promise.resolve(checksums[filename]); - }); - }, compareVersions: function (v1, v2, options) { var lexicographical = options && options.lexicographical, zeroExtend = options && options.zeroExtend, diff --git a/src/Virtualbox.js b/src/Virtualbox.js index e665af8cd8..a1d20bb427 100644 --- a/src/Virtualbox.js +++ b/src/Virtualbox.js @@ -7,12 +7,9 @@ var VirtualBox = { return '/usr/bin/VBoxManage'; }, installed: function () { - return fs.existsSync('/usr/bin/VBoxManage') && fs.existsSync('/Applications/VirtualBox.app/Contents/MacOS/VirtualBox'); + return fs.existsSync('/usr/bin/VBoxManage') && fs.existsSync('/Applications/VirtualBox.app'); }, version: function () { - if (!this.installed()) { - return Promise.reject('VirtualBox not installed.'); - } return new Promise((resolve, reject) => { util.exec([this.command(), '-v']).then(stdout => { var match = stdout.match(/(\d+\.\d+\.\d+).*/); @@ -29,7 +26,7 @@ var VirtualBox = { } return util.exec(this.command() + ' list runningvms | sed -E \'s/.*\\{(.*)\\}/\\1/\' | xargs -L1 -I {} ' + this.command() + ' controlvm {} poweroff'); }, - kill: function () { + killall: function () { if (!this.installed()) { return Promise.reject('VirtualBox not installed.'); } @@ -51,16 +48,18 @@ var VirtualBox = { }); }, vmdestroy: function (name) { - if (!this.installed()) { - throw Promise.reject('VirtualBox not installed.'); - } - return util.exec([this.command(), 'controlvm', name, 'poweroff']).then(() => { - return util.exec([this.command(), 'unregistervm', name, '--delete']).then(() => { - return true; - }); - }).catch(() => { - return false; - }); + return Promise.coroutine(function* () { + if (!this.installed()) { + return Promise.reject('VirtualBox not installed.'); + } + try { + var state = yield this.vmstate(name); + if (state === 'running') { + yield util.exec([this.command(), 'controlvm', name, 'poweroff']); + } + yield util.exec([this.command(), 'unregistervm', name, '--delete']); + } catch (err) {} + }.bind(this))(); } }; diff --git a/tests/Boot2Docker-integration.js b/tests/Boot2Docker-integration.js deleted file mode 100644 index c5ef5c5bd8..0000000000 --- a/tests/Boot2Docker-integration.js +++ /dev/null @@ -1,57 +0,0 @@ -var boot2docker = require('../build/Boot2Docker'); -var path = require('path'); -var fs = require('fs'); -var packagejson = JSON.parse(fs.readFileSync(path.join(__dirname, '..', 'package.json'), 'utf8')); - -describe('Boot2Docker', () => { - it('cli version is correct', done => { - boot2docker.cliversion().then(version => { - expect(version).toBe(packagejson['boot2docker-version']); - done(); - }); - }); - - describe('with an existing & running boot2docker vm', () => { - beforeAll(done => { - boot2docker.init().then(boot2docker.start).then(() => { - done(); - }); - }); - - it('creates a vm', done => { - boot2docker.exists().then(exists => { - expect(exists).toBe(true); - done(); - }); - }); - - it('detects the correct state of running vm', done => { - boot2docker.status().then(status => { - expect(status).toBe('running'); - done(); - }); - }); - - it('detects ssh keys', () => { - expect(boot2docker.haskeys()).toBe(true); - }); - - it('receives an ip address from the vm', done => { - boot2docker.ip().then(ip => { - expect(ip).toMatch(/\b\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}\b/); - done(); - }); - }); - - it('reads a version from the boot2docker iso file', done => { - boot2docker.isoversion().then(version => { - expect(version).toMatch(/\d+\.\d+\.\d+/); - done(); - }); - }); - - afterAll(done => { - boot2docker.destroy().finally(done); - }); - }); -}); diff --git a/tests/SetupStore-integration.js b/tests/SetupStore-integration.js deleted file mode 100644 index a26c089e7c..0000000000 --- a/tests/SetupStore-integration.js +++ /dev/null @@ -1,91 +0,0 @@ -var virtualbox = require('../build/Virtualbox'); -var SetupStore = require('../build/SetupStore'); -var setupUtil = require('../build/SetupUtil'); -var path = require('path'); -var fs = require('fs'); -var Promise = require('bluebird'); -var packagejson = JSON.parse(fs.readFileSync(path.join(__dirname, '..', 'package.json'), 'utf8')); - -jasmine.DEFAULT_TIMEOUT_INTERVAL = 300000; // 5 minutes for integration tests - -describe('Setup', function () { - - describe('with virtualbox installed', function () { - - // Before each teardown the boot2docker VM, keys and anything else - - describe('and with a kitematic vm', function () { - - }); - - describe('and without a boot2docker vm', function () { - - }); - - describe('and with an old boot2docker vm', function () { - - }); - - describe('and with a very old boot2docker vm', function () { - - }); - - describe('and with a boot2docker vm running', function () { - - }); - - describe('and with a boot2docker vm but with no ssh keys', function () { - - }); - - describe('and with a boot2docker vm being powered off', function () { - - }); - - describe('and with a boot2docker vm being removed', function () { - - }); - - describe('and with a boot2docker vm initialized but not running', function () { - - }); - }); - - /*describe('with virtualbox downloaded', function () { - beforeEach(function (done) { - Promise.coroutine(SetupStore.downloadVirtualboxStep)().finally(function () { - if (virtualbox.installed()) { - virtualbox.kill().finally(function () { - done(); - }); - } else { - done(); - } - }); - }); - - it('install virtualbox succeeds', function (done) { - Promise.coroutine(SetupStore.installVirtualboxStep)().finally(function () { - expect(virtualbox.installed()).toBe(true); - done(); - }); - }); - });*/ - - /*describe('without virtualbox installed or downloaded', function () { - var virtualboxFile = path.join(setupUtil.supportDir(), packagejson['virtualbox-filename']); - beforeEach(function () { - if (fs.existsSync(virtualboxFile)) { - fs.unlinkSync(virtualboxFile); - } - spyOn(virtualbox, 'installed').and.returnValue(false); - }); - - it('downloads virtualbox from the official website', function (done) { - Promise.coroutine(SetupStore.downloadVirtualboxStep)().finally(function () { - expect(fs.existsSync(virtualboxFile)).toBe(true); - done(); - }); - }); - });*/ -}); diff --git a/tests/SetupUtil-integration.js b/tests/SetupUtil-integration.js deleted file mode 100644 index ef1a4bbbdf..0000000000 --- a/tests/SetupUtil-integration.js +++ /dev/null @@ -1,10 +0,0 @@ -var setupUtil = require('../build/SetupUtil'); - -describe('SetupUtils', function() { - it('returns live sha256 checksum for a given virtualbox version & filename', function (done) { - setupUtil.virtualboxSHA256('4.3.20', 'VirtualBox-4.3.20-96996-OSX.dmg').then(function (checksum) { - expect(checksum).toBe('744e77119a640a5974160213c9912568a3d88dbd06a2fc6b6970070941732705'); - done(); - }); - }); -}); diff --git a/tests/Virtualbox-integration.js b/tests/Virtualbox-integration.js deleted file mode 100644 index 5317c7bd09..0000000000 --- a/tests/Virtualbox-integration.js +++ /dev/null @@ -1,56 +0,0 @@ -var virtualbox = require('../build/Virtualbox'); -var util = require('../build/Util'); - -describe('Virtualbox', function () { - beforeAll(function () { - // Make sure VirtualBox is installed - }); - - describe('with a running VM', function () { - beforeEach(function (done) { - return util.exec([virtualbox.command(), 'createvm', '--name', 'km-test', '--register']).finally(function () { - return util.exec([virtualbox.command(), 'startvm', 'km-test', '--type', 'headless']); - }).then(function() { - done(); - }).catch(function () { - done(); - }); - }); - - it('powers off all vms', function (done) { - virtualbox.poweroffall().then(function () { - return virtualbox.vmstate('km-test'); - }).then(function (state) { - expect(state).toBe('poweroff'); - done(); - }).catch(function (err) { - expect(err).toBeFalsy(); - done(); - }); - }); - - it('destroys a vm', function (done) { - virtualbox.vmdestroy('km-test').then(function () { - return util.exec([virtualbox.command(), 'showvminfo', 'km-test']).then(function () { - done(); - }).catch(function (err) { - expect(err).toBeTruthy(); - done(); - }); - }).catch(function (err) { - console.log(err); - done(); - }); - }); - - afterEach(function (done) { - util.exec([virtualbox.command(), 'controlvm', 'km-test', 'poweroff']).finally(function () { - return util.exec([virtualbox.command(), 'unregistervm', 'km-test', '--delete']); - }).then(function () { - done(); - }).catch(function () { - done(); - }); - }); - }); -}); diff --git a/tests/Virtualbox-test.js b/tests/Virtualbox-test.js deleted file mode 100644 index 59ad644bd5..0000000000 --- a/tests/Virtualbox-test.js +++ /dev/null @@ -1,21 +0,0 @@ -var virtualbox = require('../build/Virtualbox'); -var util = require('../build/Util'); -var Promise = require('bluebird'); - -describe('Virtualbox', function () { - it('returns the right command', function () { - expect(virtualbox.command()).toBe('/usr/bin/VBoxManage'); - }); - - describe('version 4.3.20r96996', function () { - beforeEach(function () { - spyOn(util, 'exec').and.returnValue(Promise.resolve('4.3.20r96996')); - }); - it('correctly parses virtualbox version', function (done) { - virtualbox.version().then(function (version) { - expect(version).toBe('4.3.20'); - done(); - }); - }); - }); -}); diff --git a/tests/jasmine-2.1.3/boot.js b/tests/jasmine-2.1.3/boot.js deleted file mode 100755 index 164f068b09..0000000000 --- a/tests/jasmine-2.1.3/boot.js +++ /dev/null @@ -1,120 +0,0 @@ -/** - Starting with version 2.0, this file "boots" Jasmine, performing all of the necessary initialization before executing the loaded environment and all of a project's specs. This file should be loaded after `jasmine.js` and `jasmine_html.js`, but before any project source files or spec files are loaded. Thus this file can also be used to customize Jasmine for a project. - - If a project is using Jasmine via the standalone distribution, this file can be customized directly. If a project is using Jasmine via the [Ruby gem][jasmine-gem], this file can be copied into the support directory via `jasmine copy_boot_js`. Other environments (e.g., Python) will have different mechanisms. - - The location of `boot.js` can be specified and/or overridden in `jasmine.yml`. - - [jasmine-gem]: http://github.com/pivotal/jasmine-gem - */ - -(function() { - - /** - * ## Require & Instantiate - * - * Require Jasmine's core files. Specifically, this requires and attaches all of Jasmine's code to the `jasmine` reference. - */ - window.jasmine = jasmineRequire.core(jasmineRequire); - - /** - * Since this is being run in a browser and the results should populate to an HTML page, require the HTML-specific Jasmine code, injecting the same reference. - */ - jasmineRequire.html(jasmine); - - /** - * Create the Jasmine environment. This is used to run all specs in a project. - */ - var env = jasmine.getEnv(); - - /** - * ## The Global Interface - * - * Build up the functions that will be exposed as the Jasmine public interface. A project can customize, rename or alias any of these functions as desired, provided the implementation remains unchanged. - */ - var jasmineInterface = jasmineRequire.interface(jasmine, env); - - /** - * Add all of the Jasmine global/public interface to the proper global, so a project can use the public interface directly. For example, calling `describe` in specs instead of `jasmine.getEnv().describe`. - */ - if (typeof window == "undefined" && typeof exports == "object") { - extend(exports, jasmineInterface); - } else { - extend(window, jasmineInterface); - } - - /** - * ## Runner Parameters - * - * More browser specific code - wrap the query string in an object and to allow for getting/setting parameters from the runner user interface. - */ - - var queryString = new jasmine.QueryString({ - getWindowLocation: function() { return window.location; } - }); - - var catchingExceptions = queryString.getParam("catch"); - env.catchExceptions(typeof catchingExceptions === "undefined" ? true : catchingExceptions); - - /** - * ## Reporters - * The `HtmlReporter` builds all of the HTML UI for the runner page. This reporter paints the dots, stars, and x's for specs, as well as all spec names and all failures (if any). - */ - var htmlReporter = new jasmine.HtmlReporter({ - env: env, - onRaiseExceptionsClick: function() { queryString.setParam("catch", !env.catchingExceptions()); }, - getContainer: function() { return document.body; }, - createElement: function() { return document.createElement.apply(document, arguments); }, - createTextNode: function() { return document.createTextNode.apply(document, arguments); }, - timer: new jasmine.Timer() - }); - - /** - * The `jsApiReporter` also receives spec results, and is used by any environment that needs to extract the results from JavaScript. - */ - env.addReporter(jasmineInterface.jsApiReporter); - env.addReporter(htmlReporter); - - /** - * Filter which specs will be run by matching the start of the full name against the `spec` query param. - */ - var specFilter = new jasmine.HtmlSpecFilter({ - filterString: function() { return queryString.getParam("spec"); } - }); - - env.specFilter = function(spec) { - return specFilter.matches(spec.getFullName()); - }; - - /** - * Setting up timing functions to be able to be overridden. Certain browsers (Safari, IE 8, phantomjs) require this hack. - */ - window.setTimeout = window.setTimeout; - window.setInterval = window.setInterval; - window.clearTimeout = window.clearTimeout; - window.clearInterval = window.clearInterval; - - /** - * ## Execution - * - * Replace the browser window's `onload`, ensure it's called, and then run all of the loaded specs. This includes initializing the `HtmlReporter` instance and then executing the loaded Jasmine environment. All of this will happen after all of the specs are loaded. - */ - var currentWindowOnload = window.onload; - - window.onload = function() { - if (currentWindowOnload) { - currentWindowOnload(); - } - htmlReporter.initialize(); - env.execute(); - }; - - /** - * Helper function for readability above. - */ - function extend(destination, source) { - for (var property in source) destination[property] = source[property]; - return destination; - } - -}()); diff --git a/tests/jasmine-2.1.3/console.js b/tests/jasmine-2.1.3/console.js deleted file mode 100755 index 96026ab63a..0000000000 --- a/tests/jasmine-2.1.3/console.js +++ /dev/null @@ -1,188 +0,0 @@ -/* -Copyright (c) 2008-2014 Pivotal Labs - -Permission is hereby granted, free of charge, to any person obtaining -a copy of this software and associated documentation files (the -"Software"), to deal in the Software without restriction, including -without limitation the rights to use, copy, modify, merge, publish, -distribute, sublicense, and/or sell copies of the Software, and to -permit persons to whom the Software is furnished to do so, subject to -the following conditions: - -The above copyright notice and this permission notice shall be -included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE -LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION -OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION -WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -*/ -function getJasmineRequireObj() { - if (typeof module !== 'undefined' && module.exports) { - return exports; - } else { - window.jasmineRequire = window.jasmineRequire || {}; - return window.jasmineRequire; - } -} - -getJasmineRequireObj().console = function(jRequire, j$) { - j$.ConsoleReporter = jRequire.ConsoleReporter(); -}; - -getJasmineRequireObj().ConsoleReporter = function() { - - var noopTimer = { - start: function(){}, - elapsed: function(){ return 0; } - }; - - function ConsoleReporter(options) { - var print = options.print, - showColors = options.showColors || false, - onComplete = options.onComplete || function() {}, - timer = options.timer || noopTimer, - specCount, - failureCount, - failedSpecs = [], - pendingCount, - ansi = { - green: '\x1B[32m', - red: '\x1B[31m', - yellow: '\x1B[33m', - none: '\x1B[0m' - }, - failedSuites = []; - - this.jasmineStarted = function() { - specCount = 0; - failureCount = 0; - pendingCount = 0; - print('Started'); - printNewline(); - timer.start(); - }; - - this.jasmineDone = function() { - printNewline(); - for (var i = 0; i < failedSpecs.length; i++) { - specFailureDetails(failedSpecs[i]); - } - - if(specCount > 0) { - printNewline(); - - var specCounts = specCount + ' ' + plural('spec', specCount) + ', ' + - failureCount + ' ' + plural('failure', failureCount); - - if (pendingCount) { - specCounts += ', ' + pendingCount + ' pending ' + plural('spec', pendingCount); - } - - print(specCounts); - } else { - print('No specs found'); - } - - printNewline(); - var seconds = timer.elapsed() / 1000; - print('Finished in ' + seconds + ' ' + plural('second', seconds)); - printNewline(); - - for(i = 0; i < failedSuites.length; i++) { - suiteFailureDetails(failedSuites[i]); - } - - onComplete(failureCount === 0); - }; - - this.specDone = function(result) { - specCount++; - - if (result.status == 'pending') { - pendingCount++; - print(colored('yellow', '*')); - return; - } - - if (result.status == 'passed') { - print(colored('green', '.')); - return; - } - - if (result.status == 'failed') { - failureCount++; - failedSpecs.push(result); - print(colored('red', 'F')); - } - }; - - this.suiteDone = function(result) { - if (result.failedExpectations && result.failedExpectations.length > 0) { - failureCount++; - failedSuites.push(result); - } - }; - - return this; - - function printNewline() { - print('\n'); - } - - function colored(color, str) { - return showColors ? (ansi[color] + str + ansi.none) : str; - } - - function plural(str, count) { - return count == 1 ? str : str + 's'; - } - - function repeat(thing, times) { - var arr = []; - for (var i = 0; i < times; i++) { - arr.push(thing); - } - return arr; - } - - function indent(str, spaces) { - var lines = (str || '').split('\n'); - var newArr = []; - for (var i = 0; i < lines.length; i++) { - newArr.push(repeat(' ', spaces).join('') + lines[i]); - } - return newArr.join('\n'); - } - - function specFailureDetails(result) { - printNewline(); - print(result.fullName); - - for (var i = 0; i < result.failedExpectations.length; i++) { - var failedExpectation = result.failedExpectations[i]; - printNewline(); - print(indent(failedExpectation.message, 2)); - print(indent(failedExpectation.stack, 2)); - } - - printNewline(); - } - - function suiteFailureDetails(result) { - for (var i = 0; i < result.failedExpectations.length; i++) { - printNewline(); - print(colored('red', 'An error was thrown in an afterAll')); - printNewline(); - print(colored('red', 'AfterAll ' + result.failedExpectations[i].message)); - - } - printNewline(); - } - } - - return ConsoleReporter; -}; diff --git a/tests/jasmine-2.1.3/jasmine-html.js b/tests/jasmine-2.1.3/jasmine-html.js deleted file mode 100755 index 898108b77d..0000000000 --- a/tests/jasmine-2.1.3/jasmine-html.js +++ /dev/null @@ -1,404 +0,0 @@ -/* -Copyright (c) 2008-2014 Pivotal Labs - -Permission is hereby granted, free of charge, to any person obtaining -a copy of this software and associated documentation files (the -"Software"), to deal in the Software without restriction, including -without limitation the rights to use, copy, modify, merge, publish, -distribute, sublicense, and/or sell copies of the Software, and to -permit persons to whom the Software is furnished to do so, subject to -the following conditions: - -The above copyright notice and this permission notice shall be -included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE -LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION -OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION -WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -*/ -jasmineRequire.html = function(j$) { - j$.ResultsNode = jasmineRequire.ResultsNode(); - j$.HtmlReporter = jasmineRequire.HtmlReporter(j$); - j$.QueryString = jasmineRequire.QueryString(); - j$.HtmlSpecFilter = jasmineRequire.HtmlSpecFilter(); -}; - -jasmineRequire.HtmlReporter = function(j$) { - - var noopTimer = { - start: function() {}, - elapsed: function() { return 0; } - }; - - function HtmlReporter(options) { - var env = options.env || {}, - getContainer = options.getContainer, - createElement = options.createElement, - createTextNode = options.createTextNode, - onRaiseExceptionsClick = options.onRaiseExceptionsClick || function() {}, - timer = options.timer || noopTimer, - results = [], - specsExecuted = 0, - failureCount = 0, - pendingSpecCount = 0, - htmlReporterMain, - symbols, - failedSuites = []; - - this.initialize = function() { - clearPrior(); - htmlReporterMain = createDom('div', {className: 'jasmine_html-reporter'}, - createDom('div', {className: 'banner'}, - createDom('a', {className: 'title', href: 'http://jasmine.github.io/', target: '_blank'}), - createDom('span', {className: 'version'}, j$.version) - ), - createDom('ul', {className: 'symbol-summary'}), - createDom('div', {className: 'alert'}), - createDom('div', {className: 'results'}, - createDom('div', {className: 'failures'}) - ) - ); - getContainer().appendChild(htmlReporterMain); - - symbols = find('.symbol-summary'); - }; - - var totalSpecsDefined; - this.jasmineStarted = function(options) { - totalSpecsDefined = options.totalSpecsDefined || 0; - timer.start(); - }; - - var summary = createDom('div', {className: 'summary'}); - - var topResults = new j$.ResultsNode({}, '', null), - currentParent = topResults; - - this.suiteStarted = function(result) { - currentParent.addChild(result, 'suite'); - currentParent = currentParent.last(); - }; - - this.suiteDone = function(result) { - if (result.status == 'failed') { - failedSuites.push(result); - } - - if (currentParent == topResults) { - return; - } - - currentParent = currentParent.parent; - }; - - this.specStarted = function(result) { - currentParent.addChild(result, 'spec'); - }; - - var failures = []; - this.specDone = function(result) { - if(noExpectations(result) && typeof console !== 'undefined' && typeof console.error !== 'undefined') { - console.error('Spec \'' + result.fullName + '\' has no expectations.'); - } - - if (result.status != 'disabled') { - specsExecuted++; - } - - symbols.appendChild(createDom('li', { - className: noExpectations(result) ? 'empty' : result.status, - id: 'spec_' + result.id, - title: result.fullName - } - )); - - if (result.status == 'failed') { - failureCount++; - - var failure = - createDom('div', {className: 'spec-detail failed'}, - createDom('div', {className: 'description'}, - createDom('a', {title: result.fullName, href: specHref(result)}, result.fullName) - ), - createDom('div', {className: 'messages'}) - ); - var messages = failure.childNodes[1]; - - for (var i = 0; i < result.failedExpectations.length; i++) { - var expectation = result.failedExpectations[i]; - messages.appendChild(createDom('div', {className: 'result-message'}, expectation.message)); - messages.appendChild(createDom('div', {className: 'stack-trace'}, expectation.stack)); - } - - failures.push(failure); - } - - if (result.status == 'pending') { - pendingSpecCount++; - } - }; - - this.jasmineDone = function() { - var banner = find('.banner'); - banner.appendChild(createDom('span', {className: 'duration'}, 'finished in ' + timer.elapsed() / 1000 + 's')); - - var alert = find('.alert'); - - alert.appendChild(createDom('span', { className: 'exceptions' }, - createDom('label', { className: 'label', 'for': 'raise-exceptions' }, 'raise exceptions'), - createDom('input', { - className: 'raise', - id: 'raise-exceptions', - type: 'checkbox' - }) - )); - var checkbox = find('#raise-exceptions'); - - checkbox.checked = !env.catchingExceptions(); - checkbox.onclick = onRaiseExceptionsClick; - - if (specsExecuted < totalSpecsDefined) { - var skippedMessage = 'Ran ' + specsExecuted + ' of ' + totalSpecsDefined + ' specs - run all'; - alert.appendChild( - createDom('span', {className: 'bar skipped'}, - createDom('a', {href: '?', title: 'Run all specs'}, skippedMessage) - ) - ); - } - var statusBarMessage = ''; - var statusBarClassName = 'bar '; - - if (totalSpecsDefined > 0) { - statusBarMessage += pluralize('spec', specsExecuted) + ', ' + pluralize('failure', failureCount); - if (pendingSpecCount) { statusBarMessage += ', ' + pluralize('pending spec', pendingSpecCount); } - statusBarClassName += (failureCount > 0) ? 'failed' : 'passed'; - } else { - statusBarClassName += 'skipped'; - statusBarMessage += 'No specs found'; - } - - alert.appendChild(createDom('span', {className: statusBarClassName}, statusBarMessage)); - - for(i = 0; i < failedSuites.length; i++) { - var failedSuite = failedSuites[i]; - for(var j = 0; j < failedSuite.failedExpectations.length; j++) { - var errorBarMessage = 'AfterAll ' + failedSuite.failedExpectations[j].message; - var errorBarClassName = 'bar errored'; - alert.appendChild(createDom('span', {className: errorBarClassName}, errorBarMessage)); - } - } - - var results = find('.results'); - results.appendChild(summary); - - summaryList(topResults, summary); - - function summaryList(resultsTree, domParent) { - var specListNode; - for (var i = 0; i < resultsTree.children.length; i++) { - var resultNode = resultsTree.children[i]; - if (resultNode.type == 'suite') { - var suiteListNode = createDom('ul', {className: 'suite', id: 'suite-' + resultNode.result.id}, - createDom('li', {className: 'suite-detail'}, - createDom('a', {href: specHref(resultNode.result)}, resultNode.result.description) - ) - ); - - summaryList(resultNode, suiteListNode); - domParent.appendChild(suiteListNode); - } - if (resultNode.type == 'spec') { - if (domParent.getAttribute('class') != 'specs') { - specListNode = createDom('ul', {className: 'specs'}); - domParent.appendChild(specListNode); - } - var specDescription = resultNode.result.description; - if(noExpectations(resultNode.result)) { - specDescription = 'SPEC HAS NO EXPECTATIONS ' + specDescription; - } - specListNode.appendChild( - createDom('li', { - className: resultNode.result.status, - id: 'spec-' + resultNode.result.id - }, - createDom('a', {href: specHref(resultNode.result)}, specDescription) - ) - ); - } - } - } - - if (failures.length) { - alert.appendChild( - createDom('span', {className: 'menu bar spec-list'}, - createDom('span', {}, 'Spec List | '), - createDom('a', {className: 'failures-menu', href: '#'}, 'Failures'))); - alert.appendChild( - createDom('span', {className: 'menu bar failure-list'}, - createDom('a', {className: 'spec-list-menu', href: '#'}, 'Spec List'), - createDom('span', {}, ' | Failures '))); - - find('.failures-menu').onclick = function() { - setMenuModeTo('failure-list'); - }; - find('.spec-list-menu').onclick = function() { - setMenuModeTo('spec-list'); - }; - - setMenuModeTo('failure-list'); - - var failureNode = find('.failures'); - for (var i = 0; i < failures.length; i++) { - failureNode.appendChild(failures[i]); - } - } - }; - - return this; - - function find(selector) { - return getContainer().querySelector('.jasmine_html-reporter ' + selector); - } - - function clearPrior() { - // return the reporter - var oldReporter = find(''); - - if(oldReporter) { - getContainer().removeChild(oldReporter); - } - } - - function createDom(type, attrs, childrenVarArgs) { - var el = createElement(type); - - for (var i = 2; i < arguments.length; i++) { - var child = arguments[i]; - - if (typeof child === 'string') { - el.appendChild(createTextNode(child)); - } else { - if (child) { - el.appendChild(child); - } - } - } - - for (var attr in attrs) { - if (attr == 'className') { - el[attr] = attrs[attr]; - } else { - el.setAttribute(attr, attrs[attr]); - } - } - - return el; - } - - function pluralize(singular, count) { - var word = (count == 1 ? singular : singular + 's'); - - return '' + count + ' ' + word; - } - - function specHref(result) { - return '?spec=' + encodeURIComponent(result.fullName); - } - - function setMenuModeTo(mode) { - htmlReporterMain.setAttribute('class', 'jasmine_html-reporter ' + mode); - } - - function noExpectations(result) { - return (result.failedExpectations.length + result.passedExpectations.length) === 0 && - result.status === 'passed'; - } - } - - return HtmlReporter; -}; - -jasmineRequire.HtmlSpecFilter = function() { - function HtmlSpecFilter(options) { - var filterString = options && options.filterString() && options.filterString().replace(/[-[\]{}()*+?.,\\^$|#\s]/g, '\\$&'); - var filterPattern = new RegExp(filterString); - - this.matches = function(specName) { - return filterPattern.test(specName); - }; - } - - return HtmlSpecFilter; -}; - -jasmineRequire.ResultsNode = function() { - function ResultsNode(result, type, parent) { - this.result = result; - this.type = type; - this.parent = parent; - - this.children = []; - - this.addChild = function(result, type) { - this.children.push(new ResultsNode(result, type, this)); - }; - - this.last = function() { - return this.children[this.children.length - 1]; - }; - } - - return ResultsNode; -}; - -jasmineRequire.QueryString = function() { - function QueryString(options) { - - this.setParam = function(key, value) { - var paramMap = queryStringToParamMap(); - paramMap[key] = value; - options.getWindowLocation().search = toQueryString(paramMap); - }; - - this.getParam = function(key) { - return queryStringToParamMap()[key]; - }; - - return this; - - function toQueryString(paramMap) { - var qStrPairs = []; - for (var prop in paramMap) { - qStrPairs.push(encodeURIComponent(prop) + '=' + encodeURIComponent(paramMap[prop])); - } - return '?' + qStrPairs.join('&'); - } - - function queryStringToParamMap() { - var paramStr = options.getWindowLocation().search.substring(1), - params = [], - paramMap = {}; - - if (paramStr.length > 0) { - params = paramStr.split('&'); - for (var i = 0; i < params.length; i++) { - var p = params[i].split('='); - var value = decodeURIComponent(p[1]); - if (value === 'true' || value === 'false') { - value = JSON.parse(value); - } - paramMap[decodeURIComponent(p[0])] = value; - } - } - - return paramMap; - } - - } - - return QueryString; -}; diff --git a/tests/jasmine-2.1.3/jasmine.css b/tests/jasmine-2.1.3/jasmine.css deleted file mode 100755 index 7ae5834879..0000000000 --- a/tests/jasmine-2.1.3/jasmine.css +++ /dev/null @@ -1,62 +0,0 @@ -body { overflow-y: scroll; } - -.jasmine_html-reporter { background-color: #eeeeee; padding: 5px; margin: -8px; font-size: 11px; font-family: Monaco, "Lucida Console", monospace; line-height: 14px; color: #333333; } -.jasmine_html-reporter a { text-decoration: none; } -.jasmine_html-reporter a:hover { text-decoration: underline; } -.jasmine_html-reporter p, .jasmine_html-reporter h1, .jasmine_html-reporter h2, .jasmine_html-reporter h3, .jasmine_html-reporter h4, .jasmine_html-reporter h5, .jasmine_html-reporter h6 { margin: 0; line-height: 14px; } -.jasmine_html-reporter .banner, .jasmine_html-reporter .symbol-summary, .jasmine_html-reporter .summary, .jasmine_html-reporter .result-message, .jasmine_html-reporter .spec .description, .jasmine_html-reporter .spec-detail .description, .jasmine_html-reporter .alert .bar, .jasmine_html-reporter .stack-trace { padding-left: 9px; padding-right: 9px; } -.jasmine_html-reporter .banner { position: relative; } -.jasmine_html-reporter .banner .title { background: url('data:image/png;base64,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') no-repeat; background: url('data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjwhLS0gQ3JlYXRlZCB3aXRoIElua3NjYXBlIChodHRwOi8vd3d3Lmlua3NjYXBlLm9yZy8pIC0tPgoKPHN2ZwogICB4bWxuczpkYz0iaHR0cDovL3B1cmwub3JnL2RjL2VsZW1lbnRzLzEuMS8iCiAgIHhtbG5zOmNjPSJodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9ucyMiCiAgIHhtbG5zOnJkZj0iaHR0cDovL3d3dy53My5vcmcvMTk5OS8wMi8yMi1yZGYtc3ludGF4LW5zIyIKICAgeG1sbnM6c3ZnPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIKICAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogICB4bWxuczppbmtzY2FwZT0iaHR0cDovL3d3dy5pbmtzY2FwZS5vcmcvbmFtZXNwYWNlcy9pbmtzY2FwZSIKICAgdmVyc2lvbj0iMS4xIgogICB3aWR0aD0iNjgxLjk2MjUyIgogICBoZWlnaHQ9IjE4Ny41IgogICBpZD0ic3ZnMiIKICAgeG1sOnNwYWNlPSJwcmVzZXJ2ZSI+PG1ldGFkYXRhCiAgICAgaWQ9Im1ldGFkYXRhOCI+PHJkZjpSREY+PGNjOldvcmsKICAgICAgICAgcmRmOmFib3V0PSIiPjxkYzpmb3JtYXQ+aW1hZ2Uvc3ZnK3htbDwvZGM6Zm9ybWF0PjxkYzp0eXBlCiAgICAgICAgICAgcmRmOnJlc291cmNlPSJodHRwOi8vcHVybC5vcmcvZGMvZGNtaXR5cGUvU3RpbGxJbWFnZSIgLz48L2NjOldvcms+PC9yZGY6UkRGPjwvbWV0YWRhdGE+PGRlZnMKICAgICBpZD0iZGVmczYiPjxjbGlwUGF0aAogICAgICAgaWQ9ImNsaXBQYXRoMTgiPjxwYXRoCiAgICAgICAgIGQ9Ik0gMCwxNTAwIDAsMCBsIDU0NTUuNzQsMCAwLDE1MDAgTCAwLDE1MDAgeiIKICAgICAgICAgaW5rc2NhcGU6Y29ubmVjdG9yLWN1cnZhdHVyZT0iMCIKICAgICAgICAgaWQ9InBhdGgyMCIgLz48L2NsaXBQYXRoPjwvZGVmcz48ZwogICAgIHRyYW5zZm9ybT0ibWF0cml4KDEuMjUsMCwwLC0xLjI1LDAsMTg3LjUpIgogICAgIGlkPSJnMTAiPjxnCiAgICAgICB0cmFuc2Zvcm09InNjYWxlKDAuMSwwLjEpIgogICAgICAgaWQ9ImcxMiI+PGcKICAgICAgICAgaWQ9ImcxNCI+PGcKICAgICAgICAgICBjbGlwLXBhdGg9InVybCgjY2xpcFBhdGgxOCkiCiAgICAgICAgICAgaWQ9ImcxNiI+PHBhdGgKICAgICAgICAgICAgIGQ9Im0gMTU0NCw1OTkuNDM0IGMgMC45MiwtNDAuMzUyIDI1LjY4LC04MS42MDIgNzEuNTMsLTgxLjYwMiAyNy41MSwwIDQ3LjY4LDEyLjgzMiA2MS40NCwzNS43NTQgMTIuODMsMjIuOTMgMTIuODMsNTYuODUyIDEyLjgzLDgyLjUyNyBsIDAsMzI5LjE4NCAtNzEuNTIsMCAwLDEwNC41NDMgMjY2LjgzLDAgMCwtMTA0LjU0MyAtNzAuNiwwIDAsLTM0NC43NyBjIDAsLTU4LjY5MSAtMy42OCwtMTA0LjUzMSAtNDQuOTMsLTE1Mi4yMTggLTM2LjY4LC00Mi4xOCAtOTYuMjgsLTY2LjAyIC0xNTMuMTQsLTY2LjAyIC0xMTcuMzcsMCAtMjA3LjI0LDc3Ljk0MSAtMjAyLjY0LDE5Ny4xNDUgbCAxMzAuMiwwIgogICAgICAgICAgICAgaW5rc2NhcGU6Y29ubmVjdG9yLWN1cnZhdHVyZT0iMCIKICAgICAgICAgICAgIGlkPSJwYXRoMjIiCiAgICAgICAgICAgICBzdHlsZT0iZmlsbDojOGE0MTgyO2ZpbGwtb3BhY2l0eToxO2ZpbGwtcnVsZTpub256ZXJvO3N0cm9rZTpub25lIiAvPjxwYXRoCiAgICAgICAgICAgICBkPSJtIDIzMDEuNCw2NjIuNjk1IGMgMCw4MC43MDMgLTY2Ljk0LDE0NS44MTMgLTE0Ny42MywxNDUuODEzIC04My40NCwwIC0xNDcuNjMsLTY4Ljc4MSAtMTQ3LjYzLC0xNTEuMzAxIDAsLTc5Ljc4NSA2Ni45NCwtMTQ1LjgwMSAxNDUuOCwtMTQ1LjgwMSA4NC4zNSwwIDE0OS40Niw2Ny44NTIgMTQ5LjQ2LDE1MS4yODkgeiBtIC0xLjgzLC0xODEuNTQ3IGMgLTM1Ljc3LC01NC4wOTcgLTkzLjUzLC03OC44NTkgLTE1Ny43MiwtNzguODU5IC0xNDAuMywwIC0yNTEuMjQsMTE2LjQ0OSAtMjUxLjI0LDI1NC45MTggMCwxNDIuMTI5IDExMy43LDI2MC40MSAyNTYuNzQsMjYwLjQxIDYzLjI3LDAgMTE4LjI5LC0yOS4zMzYgMTUyLjIyLC04Mi41MjMgbCAwLDY5LjY4NyAxNzUuMTQsMCAwLC0xMDQuNTI3IC02MS40NCwwIDAsLTI4MC41OTggNjEuNDQsMCAwLC0xMDQuNTI3IC0xNzUuMTQsMCAwLDY2LjAxOSIKICAgICAgICAgICAgIGlua3NjYXBlOmNvbm5lY3Rvci1jdXJ2YXR1cmU9IjAiCiAgICAgICAgICAgICBpZD0icGF0aDI0IgogICAgICAgICAgICAgc3R5bGU9ImZpbGw6IzhhNDE4MjtmaWxsLW9wYWNpdHk6MTtmaWxsLXJ1bGU6bm9uemVybztzdHJva2U6bm9uZSIgLz48cGF0aAogICAgICAgICAgICAgZD0ibSAyNjIyLjMzLDU1Ny4yNTggYyAzLjY3LC00NC4wMTYgMzMuMDEsLTczLjM0OCA3OC44NiwtNzMuMzQ4IDMzLjkzLDAgNjYuOTMsMjMuODI0IDY2LjkzLDYwLjUwNCAwLDQ4LjYwNiAtNDUuODQsNTYuODU2IC04My40NCw2Ni45NDEgLTg1LjI4LDIyLjAwNCAtMTc4LjgxLDQ4LjYwNiAtMTc4LjgxLDE1NS44NzkgMCw5My41MzYgNzguODYsMTQ3LjYzMyAxNjUuOTgsMTQ3LjYzMyA0NCwwIDgzLjQzLC05LjE3NiAxMTAuOTQsLTQ0LjAwOCBsIDAsMzMuOTIyIDgyLjUzLDAgMCwtMTMyLjk2NSAtMTA4LjIxLDAgYyAtMS44MywzNC44NTYgLTI4LjQyLDU3Ljc3NCAtNjMuMjYsNTcuNzc0IC0zMC4yNiwwIC02Mi4zNSwtMTcuNDIyIC02Mi4zNSwtNTEuMzQ4IDAsLTQ1Ljg0NyA0NC45MywtNTUuOTMgODAuNjksLTY0LjE4IDg4LjAyLC0yMC4xNzUgMTgyLjQ3LC00Ny42OTUgMTgyLjQ3LC0xNTcuNzM0IDAsLTk5LjAyNyAtODMuNDQsLTE1NC4wMzkgLTE3NS4xMywtMTU0LjAzOSAtNDkuNTMsMCAtOTQuNDYsMTUuNTgyIC0xMjYuNTUsNTMuMTggbCAwLC00MC4zNCAtODUuMjcsMCAwLDE0Mi4xMjkgMTE0LjYyLDAiCiAgICAgICAgICAgICBpbmtzY2FwZTpjb25uZWN0b3ItY3VydmF0dXJlPSIwIgogICAgICAgICAgICAgaWQ9InBhdGgyNiIKICAgICAgICAgICAgIHN0eWxlPSJmaWxsOiM4YTQxODI7ZmlsbC1vcGFjaXR5OjE7ZmlsbC1ydWxlOm5vbnplcm87c3Ryb2tlOm5vbmUiIC8+PHBhdGgKICAgICAgICAgICAgIGQ9Im0gMjk4OC4xOCw4MDAuMjU0IC02My4yNiwwIDAsMTA0LjUyNyAxNjUuMDUsMCAwLC03My4zNTUgYyAzMS4xOCw1MS4zNDcgNzguODYsODUuMjc3IDE0MS4yMSw4NS4yNzcgNjcuODUsMCAxMjQuNzEsLTQxLjI1OCAxNTIuMjEsLTEwMi42OTkgMjYuNiw2Mi4zNTEgOTIuNjIsMTAyLjY5OSAxNjAuNDcsMTAyLjY5OSA1My4xOSwwIDEwNS40NiwtMjIgMTQxLjIxLC02Mi4zNTEgMzguNTIsLTQ0LjkzOCAzOC41MiwtOTMuNTMyIDM4LjUyLC0xNDkuNDU3IGwgMCwtMTg1LjIzOSA2My4yNywwIDAsLTEwNC41MjcgLTIzOC40MiwwIDAsMTA0LjUyNyA2My4yOCwwIDAsMTU3LjcxNSBjIDAsMzIuMTAyIDAsNjAuNTI3IC0xNC42Nyw4OC45NTcgLTE4LjM0LDI2LjU4MiAtNDguNjEsNDAuMzQ0IC03OS43Nyw0MC4zNDQgLTMwLjI2LDAgLTYzLjI4LC0xMi44NDQgLTgyLjUzLC0zNi42NzIgLTIyLjkzLC0yOS4zNTUgLTIyLjkzLC01Ni44NjMgLTIyLjkzLC05Mi42MjkgbCAwLC0xNTcuNzE1IDYzLjI3LDAgMCwtMTA0LjUyNyAtMjM4LjQxLDAgMCwxMDQuNTI3IDYzLjI4LDAgMCwxNTAuMzgzIGMgMCwyOS4zNDggMCw2Ni4wMjMgLTE0LjY3LDkxLjY5OSAtMTUuNTksMjkuMzM2IC00Ny42OSw0NC45MzQgLTgwLjcsNDQuOTM0IC0zMS4xOCwwIC01Ny43NywtMTEuMDA4IC03Ny45NCwtMzUuNzc0IC0yNC43NywtMzAuMjUzIC0yNi42LC02Mi4zNDMgLTI2LjYsLTk5Ljk0MSBsIDAsLTE1MS4zMDEgNjMuMjcsMCAwLC0xMDQuNTI3IC0yMzguNCwwIDAsMTA0LjUyNyA2My4yNiwwIDAsMjgwLjU5OCIKICAgICAgICAgICAgIGlua3NjYXBlOmNvbm5lY3Rvci1jdXJ2YXR1cmU9IjAiCiAgICAgICAgICAgICBpZD0icGF0aDI4IgogICAgICAgICAgICAgc3R5bGU9ImZpbGw6IzhhNDE4MjtmaWxsLW9wYWNpdHk6MTtmaWxsLXJ1bGU6bm9uemVybztzdHJva2U6bm9uZSIgLz48cGF0aAogICAgICAgICAgICAgZD0ibSAzOTk4LjY2LDk1MS41NDcgLTExMS44NywwIDAsMTE4LjI5MyAxMTEuODcsMCAwLC0xMTguMjkzIHogbSAwLC00MzEuODkxIDYzLjI3LDAgMCwtMTA0LjUyNyAtMjM5LjMzLDAgMCwxMDQuNTI3IDY0LjE5LDAgMCwyODAuNTk4IC02My4yNywwIDAsMTA0LjUyNyAxNzUuMTQsMCAwLC0zODUuMTI1IgogICAgICAgICAgICAgaW5rc2NhcGU6Y29ubmVjdG9yLWN1cnZhdHVyZT0iMCIKICAgICAgICAgICAgIGlkPSJwYXRoMzAiCiAgICAgICAgICAgICBzdHlsZT0iZmlsbDojOGE0MTgyO2ZpbGwtb3BhY2l0eToxO2ZpbGwtcnVsZTpub256ZXJvO3N0cm9rZTpub25lIiAvPjxwYXRoCiAgICAgICAgICAgICBkPSJtIDQxNTkuMTIsODAwLjI1NCAtNjMuMjcsMCAwLDEwNC41MjcgMTc1LjE0LDAgMCwtNjkuNjg3IGMgMjkuMzUsNTQuMTAxIDg0LjM2LDgwLjY5OSAxNDQuODcsODAuNjk5IDUzLjE5LDAgMTA1LjQ1LC0yMi4wMTYgMTQxLjIyLC02MC41MjcgNDAuMzQsLTQ0LjkzNCA0MS4yNiwtODguMDMyIDQxLjI2LC0xNDMuOTU3IGwgMCwtMTkxLjY1MyA2My4yNywwIDAsLTEwNC41MjcgLTIzOC40LDAgMCwxMDQuNTI3IDYzLjI2LDAgMCwxNTguNjM3IGMgMCwzMC4yNjIgMCw2MS40MzQgLTE5LjI2LDg4LjAzNSAtMjAuMTcsMjYuNTgyIC01My4xOCwzOS40MTQgLTg2LjE5LDM5LjQxNCAtMzMuOTMsMCAtNjguNzcsLTEzLjc1IC04OC45NCwtNDEuMjUgLTIxLjA5LC0yNy41IC0yMS4wOSwtNjkuNjg3IC0yMS4wOSwtMTAyLjcwNyBsIDAsLTE0Mi4xMjkgNjMuMjYsMCAwLC0xMDQuNTI3IC0yMzguNCwwIDAsMTA0LjUyNyA2My4yNywwIDAsMjgwLjU5OCIKICAgICAgICAgICAgIGlua3NjYXBlOmNvbm5lY3Rvci1jdXJ2YXR1cmU9IjAiCiAgICAgICAgICAgICBpZD0icGF0aDMyIgogICAgICAgICAgICAgc3R5bGU9ImZpbGw6IzhhNDE4MjtmaWxsLW9wYWNpdHk6MTtmaWxsLXJ1bGU6bm9uemVybztzdHJva2U6bm9uZSIgLz48cGF0aAogICAgICAgICAgICAgZD0ibSA1MDgyLjQ4LDcwMy45NjUgYyAtMTkuMjQsNzAuNjA1IC04MS42LDExNS41NDcgLTE1NC4wNCwxMTUuNTQ3IC02Ni4wNCwwIC0xMjkuMywtNTEuMzQ4IC0xNDMuMDUsLTExNS41NDcgbCAyOTcuMDksMCB6IG0gODUuMjcsLTE0NC44ODMgYyAtMzguNTEsLTkzLjUyMyAtMTI5LjI3LC0xNTYuNzkzIC0yMzEuMDUsLTE1Ni43OTMgLTE0My4wNywwIC0yNTcuNjgsMTExLjg3MSAtMjU3LjY4LDI1NS44MzYgMCwxNDQuODgzIDEwOS4xMiwyNjEuMzI4IDI1NC45MSwyNjEuMzI4IDY3Ljg3LDAgMTM1LjcyLC0zMC4yNTggMTgzLjM5LC03OC44NjMgNDguNjIsLTUxLjM0NCA2OC43OSwtMTEzLjY5NSA2OC43OSwtMTgzLjM4MyBsIC0zLjY3LC0zOS40MzQgLTM5Ni4xMywwIGMgMTQuNjcsLTY3Ljg2MyA3Ny4wMywtMTE3LjM2MyAxNDYuNzIsLTExNy4zNjMgNDguNTksMCA5MC43NiwxOC4zMjggMTE4LjI4LDU4LjY3MiBsIDExNi40NCwwIgogICAgICAgICAgICAgaW5rc2NhcGU6Y29ubmVjdG9yLWN1cnZhdHVyZT0iMCIKICAgICAgICAgICAgIGlkPSJwYXRoMzQiCiAgICAgICAgICAgICBzdHlsZT0iZmlsbDojOGE0MTgyO2ZpbGwtb3BhY2l0eToxO2ZpbGwtcnVsZTpub256ZXJvO3N0cm9rZTpub25lIiAvPjxwYXRoCiAgICAgICAgICAgICBkPSJtIDY5MC44OTUsODUwLjcwMyA5MC43NSwwIDIyLjU0MywzMS4wMzUgMCwyNDMuMTIyIC0xMzUuODI5LDAgMCwtMjQzLjE0MSAyMi41MzYsLTMxLjAxNiIKICAgICAgICAgICAgIGlua3NjYXBlOmNvbm5lY3Rvci1jdXJ2YXR1cmU9IjAiCiAgICAgICAgICAgICBpZD0icGF0aDM2IgogICAgICAgICAgICAgc3R5bGU9ImZpbGw6IzhhNDE4MjtmaWxsLW9wYWNpdHk6MTtmaWxsLXJ1bGU6bm9uemVybztzdHJva2U6bm9uZSIgLz48cGF0aAogICAgICAgICAgICAgZD0ibSA2MzIuMzk1LDc0Mi4yNTggMjguMDM5LDg2LjMwNCAtMjIuNTUxLDMxLjA0IC0yMzEuMjIzLDc1LjEyOCAtNDEuOTc2LC0xMjkuMTgzIDIzMS4yNTcsLTc1LjEzNyAzNi40NTQsMTEuODQ4IgogICAgICAgICAgICAgaW5rc2NhcGU6Y29ubmVjdG9yLWN1cnZhdHVyZT0iMCIKICAgICAgICAgICAgIGlkPSJwYXRoMzgiCiAgICAgICAgICAgICBzdHlsZT0iZmlsbDojOGE0MTgyO2ZpbGwtb3BhY2l0eToxO2ZpbGwtcnVsZTpub256ZXJvO3N0cm9rZTpub25lIiAvPjxwYXRoCiAgICAgICAgICAgICBkPSJtIDcxNy40NDksNjUzLjEwNSAtNzMuNDEsNTMuMzYgLTM2LjQ4OCwtMTEuODc1IC0xNDIuOTAzLC0xOTYuNjkyIDEwOS44ODMsLTc5LjgyOCAxNDIuOTE4LDE5Ni43MDMgMCwzOC4zMzIiCiAgICAgICAgICAgICBpbmtzY2FwZTpjb25uZWN0b3ItY3VydmF0dXJlPSIwIgogICAgICAgICAgICAgaWQ9InBhdGg0MCIKICAgICAgICAgICAgIHN0eWxlPSJmaWxsOiM4YTQxODI7ZmlsbC1vcGFjaXR5OjE7ZmlsbC1ydWxlOm5vbnplcm87c3Ryb2tlOm5vbmUiIC8+PHBhdGgKICAgICAgICAgICAgIGQ9Im0gODI4LjUyLDcwNi40NjUgLTczLjQyNiwtNTMuMzQgMC4wMTEsLTM4LjM1OSBMIDg5OC4wMDQsNDE4LjA3IDEwMDcuOSw0OTcuODk4IDg2NC45NzMsNjk0LjYwOSA4MjguNTIsNzA2LjQ2NSIKICAgICAgICAgICAgIGlua3NjYXBlOmNvbm5lY3Rvci1jdXJ2YXR1cmU9IjAiCiAgICAgICAgICAgICBpZD0icGF0aDQyIgogICAgICAgICAgICAgc3R5bGU9ImZpbGw6IzhhNDE4MjtmaWxsLW9wYWNpdHk6MTtmaWxsLXJ1bGU6bm9uemVybztzdHJva2U6bm9uZSIgLz48cGF0aAogICAgICAgICAgICAgZD0ibSA4MTIuMDg2LDgyOC41ODYgMjguMDU1LC04Ni4zMiAzNi40ODQsLTExLjgzNiAyMzEuMjI1LDc1LjExNyAtNDEuOTcsMTI5LjE4MyAtMjMxLjIzOSwtNzUuMTQgLTIyLjU1NSwtMzEuMDA0IgogICAgICAgICAgICAgaW5rc2NhcGU6Y29ubmVjdG9yLWN1cnZhdHVyZT0iMCIKICAgICAgICAgICAgIGlkPSJwYXRoNDQiCiAgICAgICAgICAgICBzdHlsZT0iZmlsbDojOGE0MTgyO2ZpbGwtb3BhY2l0eToxO2ZpbGwtcnVsZTpub256ZXJvO3N0cm9rZTpub25lIiAvPjxwYXRoCiAgICAgICAgICAgICBkPSJtIDczNi4zMDEsMTMzNS44OCBjIC0zMjMuMDQ3LDAgLTU4NS44NzUsLTI2Mi43OCAtNTg1Ljg3NSwtNTg1Ljc4MiAwLC0zMjMuMTE4IDI2Mi44MjgsLTU4NS45NzcgNTg1Ljg3NSwtNTg1Ljk3NyAzMjMuMDE5LDAgNTg1LjgwOSwyNjIuODU5IDU4NS44MDksNTg1Ljk3NyAwLDMyMy4wMDIgLTI2Mi43OSw1ODUuNzgyIC01ODUuODA5LDU4NS43ODIgbCAwLDAgeiBtIDAsLTExOC42MSBjIDI1Ny45NzIsMCA0NjcuMTg5LC0yMDkuMTMgNDY3LjE4OSwtNDY3LjE3MiAwLC0yNTguMTI5IC0yMDkuMjE3LC00NjcuMzQ4IC00NjcuMTg5LC00NjcuMzQ4IC0yNTguMDc0LDAgLTQ2Ny4yNTQsMjA5LjIxOSAtNDY3LjI1NCw0NjcuMzQ4IDAsMjU4LjA0MiAyMDkuMTgsNDY3LjE3MiA0NjcuMjU0LDQ2Ny4xNzIiCiAgICAgICAgICAgICBpbmtzY2FwZTpjb25uZWN0b3ItY3VydmF0dXJlPSIwIgogICAgICAgICAgICAgaWQ9InBhdGg0NiIKICAgICAgICAgICAgIHN0eWxlPSJmaWxsOiM4YTQxODI7ZmlsbC1vcGFjaXR5OjE7ZmlsbC1ydWxlOm5vbnplcm87c3Ryb2tlOm5vbmUiIC8+PHBhdGgKICAgICAgICAgICAgIGQ9Im0gMTA5MS4xMyw2MTkuODgzIC0xNzUuNzcxLDU3LjEyMSAxMS42MjksMzUuODA4IDE3NS43NjIsLTU3LjEyMSAtMTEuNjIsLTM1LjgwOCIKICAgICAgICAgICAgIGlua3NjYXBlOmNvbm5lY3Rvci1jdXJ2YXR1cmU9IjAiCiAgICAgICAgICAgICBpZD0icGF0aDQ4IgogICAgICAgICAgICAgc3R5bGU9ImZpbGw6IzhhNDE4MjtmaWxsLW9wYWNpdHk6MTtmaWxsLXJ1bGU6bm9uemVybztzdHJva2U6bm9uZSIgLz48cGF0aAogICAgICAgICAgICAgZD0iTSA4NjYuOTU3LDkwMi4wNzQgODM2LjUsOTI0LjE5OSA5NDUuMTIxLDEwNzMuNzMgOTc1LjU4NiwxMDUxLjYxIDg2Ni45NTcsOTAyLjA3NCIKICAgICAgICAgICAgIGlua3NjYXBlOmNvbm5lY3Rvci1jdXJ2YXR1cmU9IjAiCiAgICAgICAgICAgICBpZD0icGF0aDUwIgogICAgICAgICAgICAgc3R5bGU9ImZpbGw6IzhhNDE4MjtmaWxsLW9wYWNpdHk6MTtmaWxsLXJ1bGU6bm9uemVybztzdHJva2U6bm9uZSIgLz48cGF0aAogICAgICAgICAgICAgZD0iTSA2MDcuNDY1LDkwMy40NDUgNDk4Ljg1NSwxMDUyLjk3IDUyOS4zMiwxMDc1LjEgNjM3LjkzLDkyNS41NjYgNjA3LjQ2NSw5MDMuNDQ1IgogICAgICAgICAgICAgaW5rc2NhcGU6Y29ubmVjdG9yLWN1cnZhdHVyZT0iMCIKICAgICAgICAgICAgIGlkPSJwYXRoNTIiCiAgICAgICAgICAgICBzdHlsZT0iZmlsbDojOGE0MTgyO2ZpbGwtb3BhY2l0eToxO2ZpbGwtcnVsZTpub256ZXJvO3N0cm9rZTpub25lIiAvPjxwYXRoCiAgICAgICAgICAgICBkPSJtIDM4MC42ODgsNjIyLjEyOSAtMTEuNjI2LDM1LjgwMSAxNzUuNzU4LDU3LjA5IDExLjYyMSwtMzUuODAxIC0xNzUuNzUzLC01Ny4wOSIKICAgICAgICAgICAgIGlua3NjYXBlOmNvbm5lY3Rvci1jdXJ2YXR1cmU9IjAiCiAgICAgICAgICAgICBpZD0icGF0aDU0IgogICAgICAgICAgICAgc3R5bGU9ImZpbGw6IzhhNDE4MjtmaWxsLW9wYWNpdHk6MTtmaWxsLXJ1bGU6bm9uemVybztzdHJva2U6bm9uZSIgLz48cGF0aAogICAgICAgICAgICAgZD0ibSA3MTYuMjg5LDM3Ni41OSAzNy42NDA2LDAgMCwxODQuODE2IC0zNy42NDA2LDAgMCwtMTg0LjgxNiB6IgogICAgICAgICAgICAgaW5rc2NhcGU6Y29ubmVjdG9yLWN1cnZhdHVyZT0iMCIKICAgICAgICAgICAgIGlkPSJwYXRoNTYiCiAgICAgICAgICAgICBzdHlsZT0iZmlsbDojOGE0MTgyO2ZpbGwtb3BhY2l0eToxO2ZpbGwtcnVsZTpub256ZXJvO3N0cm9rZTpub25lIiAvPjwvZz48L2c+PC9nPjwvZz48L3N2Zz4=') no-repeat, none; -webkit-background-size: 100%; -moz-background-size: 100%; -o-background-size: 100%; background-size: 100%; display: block; float: left; width: 90px; height: 25px; } -.jasmine_html-reporter .banner .version { margin-left: 14px; position: relative; top: 6px; } -.jasmine_html-reporter .banner .duration { position: absolute; right: 14px; top: 6px; } -.jasmine_html-reporter #jasmine_content { position: fixed; right: 100%; } -.jasmine_html-reporter .version { color: #aaaaaa; } -.jasmine_html-reporter .banner { margin-top: 14px; } -.jasmine_html-reporter .duration { color: #aaaaaa; float: right; } -.jasmine_html-reporter .symbol-summary { overflow: hidden; *zoom: 1; margin: 14px 0; } -.jasmine_html-reporter .symbol-summary li { display: inline-block; height: 8px; width: 14px; font-size: 16px; } -.jasmine_html-reporter .symbol-summary li.passed { font-size: 14px; } -.jasmine_html-reporter .symbol-summary li.passed:before { color: #007069; content: "\02022"; } -.jasmine_html-reporter .symbol-summary li.failed { line-height: 9px; } -.jasmine_html-reporter .symbol-summary li.failed:before { color: #ca3a11; content: "\d7"; font-weight: bold; margin-left: -1px; } -.jasmine_html-reporter .symbol-summary li.disabled { font-size: 14px; } -.jasmine_html-reporter .symbol-summary li.disabled:before { color: #bababa; content: "\02022"; } -.jasmine_html-reporter .symbol-summary li.pending { line-height: 17px; } -.jasmine_html-reporter .symbol-summary li.pending:before { color: #ba9d37; content: "*"; } -.jasmine_html-reporter .symbol-summary li.empty { font-size: 14px; } -.jasmine_html-reporter .symbol-summary li.empty:before { color: #ba9d37; content: "\02022"; } -.jasmine_html-reporter .exceptions { color: #fff; float: right; margin-top: 5px; margin-right: 5px; } -.jasmine_html-reporter .bar { line-height: 28px; font-size: 14px; display: block; color: #eee; } -.jasmine_html-reporter .bar.failed { background-color: #ca3a11; } -.jasmine_html-reporter .bar.passed { background-color: #007069; } -.jasmine_html-reporter .bar.skipped { background-color: #bababa; } -.jasmine_html-reporter .bar.errored { background-color: #ca3a11; } -.jasmine_html-reporter .bar.menu { background-color: #fff; color: #aaaaaa; } -.jasmine_html-reporter .bar.menu a { color: #333333; } -.jasmine_html-reporter .bar a { color: white; } -.jasmine_html-reporter.spec-list .bar.menu.failure-list, .jasmine_html-reporter.spec-list .results .failures { display: none; } -.jasmine_html-reporter.failure-list .bar.menu.spec-list, .jasmine_html-reporter.failure-list .summary { display: none; } -.jasmine_html-reporter .running-alert { background-color: #666666; } -.jasmine_html-reporter .results { margin-top: 14px; } -.jasmine_html-reporter.showDetails .summaryMenuItem { font-weight: normal; text-decoration: inherit; } -.jasmine_html-reporter.showDetails .summaryMenuItem:hover { text-decoration: underline; } -.jasmine_html-reporter.showDetails .detailsMenuItem { font-weight: bold; text-decoration: underline; } -.jasmine_html-reporter.showDetails .summary { display: none; } -.jasmine_html-reporter.showDetails #details { display: block; } -.jasmine_html-reporter .summaryMenuItem { font-weight: bold; text-decoration: underline; } -.jasmine_html-reporter .summary { margin-top: 14px; } -.jasmine_html-reporter .summary ul { list-style-type: none; margin-left: 14px; padding-top: 0; padding-left: 0; } -.jasmine_html-reporter .summary ul.suite { margin-top: 7px; margin-bottom: 7px; } -.jasmine_html-reporter .summary li.passed a { color: #007069; } -.jasmine_html-reporter .summary li.failed a { color: #ca3a11; } -.jasmine_html-reporter .summary li.empty a { color: #ba9d37; } -.jasmine_html-reporter .summary li.pending a { color: #ba9d37; } -.jasmine_html-reporter .description + .suite { margin-top: 0; } -.jasmine_html-reporter .suite { margin-top: 14px; } -.jasmine_html-reporter .suite a { color: #333333; } -.jasmine_html-reporter .failures .spec-detail { margin-bottom: 28px; } -.jasmine_html-reporter .failures .spec-detail .description { background-color: #ca3a11; } -.jasmine_html-reporter .failures .spec-detail .description a { color: white; } -.jasmine_html-reporter .result-message { padding-top: 14px; color: #333333; white-space: pre; } -.jasmine_html-reporter .result-message span.result { display: block; } -.jasmine_html-reporter .stack-trace { margin: 5px 0 0 0; max-height: 224px; overflow: auto; line-height: 18px; color: #666666; border: 1px solid #ddd; background: white; white-space: pre; } diff --git a/tests/jasmine-2.1.3/jasmine.js b/tests/jasmine-2.1.3/jasmine.js deleted file mode 100755 index 1ccb640964..0000000000 --- a/tests/jasmine-2.1.3/jasmine.js +++ /dev/null @@ -1,2908 +0,0 @@ -/* -Copyright (c) 2008-2014 Pivotal Labs - -Permission is hereby granted, free of charge, to any person obtaining -a copy of this software and associated documentation files (the -"Software"), to deal in the Software without restriction, including -without limitation the rights to use, copy, modify, merge, publish, -distribute, sublicense, and/or sell copies of the Software, and to -permit persons to whom the Software is furnished to do so, subject to -the following conditions: - -The above copyright notice and this permission notice shall be -included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE -LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION -OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION -WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -*/ -getJasmineRequireObj = (function (jasmineGlobal) { - var jasmineRequire; - - if (typeof module !== 'undefined' && module.exports) { - jasmineGlobal = global; - jasmineRequire = exports; - } else { - jasmineRequire = jasmineGlobal.jasmineRequire = jasmineGlobal.jasmineRequire || {}; - } - - function getJasmineRequire() { - return jasmineRequire; - } - - getJasmineRequire().core = function(jRequire) { - var j$ = {}; - - jRequire.base(j$, jasmineGlobal); - j$.util = jRequire.util(); - j$.Any = jRequire.Any(); - j$.CallTracker = jRequire.CallTracker(); - j$.MockDate = jRequire.MockDate(); - j$.Clock = jRequire.Clock(); - j$.DelayedFunctionScheduler = jRequire.DelayedFunctionScheduler(); - j$.Env = jRequire.Env(j$); - j$.ExceptionFormatter = jRequire.ExceptionFormatter(); - j$.Expectation = jRequire.Expectation(); - j$.buildExpectationResult = jRequire.buildExpectationResult(); - j$.JsApiReporter = jRequire.JsApiReporter(); - j$.matchersUtil = jRequire.matchersUtil(j$); - j$.ObjectContaining = jRequire.ObjectContaining(j$); - j$.pp = jRequire.pp(j$); - j$.QueueRunner = jRequire.QueueRunner(j$); - j$.ReportDispatcher = jRequire.ReportDispatcher(); - j$.Spec = jRequire.Spec(j$); - j$.SpyRegistry = jRequire.SpyRegistry(j$); - j$.SpyStrategy = jRequire.SpyStrategy(); - j$.Suite = jRequire.Suite(); - j$.Timer = jRequire.Timer(); - j$.version = jRequire.version(); - - j$.matchers = jRequire.requireMatchers(jRequire, j$); - - return j$; - }; - - return getJasmineRequire; -})(this); - -getJasmineRequireObj().requireMatchers = function(jRequire, j$) { - var availableMatchers = [ - 'toBe', - 'toBeCloseTo', - 'toBeDefined', - 'toBeFalsy', - 'toBeGreaterThan', - 'toBeLessThan', - 'toBeNaN', - 'toBeNull', - 'toBeTruthy', - 'toBeUndefined', - 'toContain', - 'toEqual', - 'toHaveBeenCalled', - 'toHaveBeenCalledWith', - 'toMatch', - 'toThrow', - 'toThrowError' - ], - matchers = {}; - - for (var i = 0; i < availableMatchers.length; i++) { - var name = availableMatchers[i]; - matchers[name] = jRequire[name](j$); - } - - return matchers; -}; - -getJasmineRequireObj().base = function(j$, jasmineGlobal) { - j$.unimplementedMethod_ = function() { - throw new Error('unimplemented method'); - }; - - j$.MAX_PRETTY_PRINT_DEPTH = 40; - j$.MAX_PRETTY_PRINT_ARRAY_LENGTH = 100; - j$.DEFAULT_TIMEOUT_INTERVAL = 5000; - - j$.getGlobal = function() { - return jasmineGlobal; - }; - - j$.getEnv = function(options) { - var env = j$.currentEnv_ = j$.currentEnv_ || new j$.Env(options); - //jasmine. singletons in here (setTimeout blah blah). - return env; - }; - - j$.isArray_ = function(value) { - return j$.isA_('Array', value); - }; - - j$.isString_ = function(value) { - return j$.isA_('String', value); - }; - - j$.isNumber_ = function(value) { - return j$.isA_('Number', value); - }; - - j$.isA_ = function(typeName, value) { - return Object.prototype.toString.apply(value) === '[object ' + typeName + ']'; - }; - - j$.isDomNode = function(obj) { - return obj.nodeType > 0; - }; - - j$.any = function(clazz) { - return new j$.Any(clazz); - }; - - j$.objectContaining = function(sample) { - return new j$.ObjectContaining(sample); - }; - - j$.createSpy = function(name, originalFn) { - - var spyStrategy = new j$.SpyStrategy({ - name: name, - fn: originalFn, - getSpy: function() { return spy; } - }), - callTracker = new j$.CallTracker(), - spy = function() { - var callData = { - object: this, - args: Array.prototype.slice.apply(arguments) - }; - - callTracker.track(callData); - var returnValue = spyStrategy.exec.apply(this, arguments); - callData.returnValue = returnValue; - - return returnValue; - }; - - for (var prop in originalFn) { - if (prop === 'and' || prop === 'calls') { - throw new Error('Jasmine spies would overwrite the \'and\' and \'calls\' properties on the object being spied upon'); - } - - spy[prop] = originalFn[prop]; - } - - spy.and = spyStrategy; - spy.calls = callTracker; - - return spy; - }; - - j$.isSpy = function(putativeSpy) { - if (!putativeSpy) { - return false; - } - return putativeSpy.and instanceof j$.SpyStrategy && - putativeSpy.calls instanceof j$.CallTracker; - }; - - j$.createSpyObj = function(baseName, methodNames) { - if (!j$.isArray_(methodNames) || methodNames.length === 0) { - throw 'createSpyObj requires a non-empty array of method names to create spies for'; - } - var obj = {}; - for (var i = 0; i < methodNames.length; i++) { - obj[methodNames[i]] = j$.createSpy(baseName + '.' + methodNames[i]); - } - return obj; - }; -}; - -getJasmineRequireObj().util = function() { - - var util = {}; - - util.inherit = function(childClass, parentClass) { - var Subclass = function() { - }; - Subclass.prototype = parentClass.prototype; - childClass.prototype = new Subclass(); - }; - - util.htmlEscape = function(str) { - if (!str) { - return str; - } - return str.replace(/&/g, '&') - .replace(//g, '>'); - }; - - util.argsToArray = function(args) { - var arrayOfArgs = []; - for (var i = 0; i < args.length; i++) { - arrayOfArgs.push(args[i]); - } - return arrayOfArgs; - }; - - util.isUndefined = function(obj) { - return obj === void 0; - }; - - util.arrayContains = function(array, search) { - var i = array.length; - while (i--) { - if (array[i] === search) { - return true; - } - } - return false; - }; - - util.clone = function(obj) { - if (Object.prototype.toString.apply(obj) === '[object Array]') { - return obj.slice(); - } - - var cloned = {}; - for (var prop in obj) { - if (obj.hasOwnProperty(prop)) { - cloned[prop] = obj[prop]; - } - } - - return cloned; - }; - - return util; -}; - -getJasmineRequireObj().Spec = function(j$) { - function Spec(attrs) { - this.expectationFactory = attrs.expectationFactory; - this.resultCallback = attrs.resultCallback || function() {}; - this.id = attrs.id; - this.description = attrs.description || ''; - this.queueableFn = attrs.queueableFn; - this.beforeAndAfterFns = attrs.beforeAndAfterFns || function() { return {befores: [], afters: []}; }; - this.userContext = attrs.userContext || function() { return {}; }; - this.onStart = attrs.onStart || function() {}; - this.getSpecName = attrs.getSpecName || function() { return ''; }; - this.expectationResultFactory = attrs.expectationResultFactory || function() { }; - this.queueRunnerFactory = attrs.queueRunnerFactory || function() {}; - this.catchingExceptions = attrs.catchingExceptions || function() { return true; }; - - if (!this.queueableFn.fn) { - this.pend(); - } - - this.result = { - id: this.id, - description: this.description, - fullName: this.getFullName(), - failedExpectations: [], - passedExpectations: [] - }; - } - - Spec.prototype.addExpectationResult = function(passed, data) { - var expectationResult = this.expectationResultFactory(data); - if (passed) { - this.result.passedExpectations.push(expectationResult); - } else { - this.result.failedExpectations.push(expectationResult); - } - }; - - Spec.prototype.expect = function(actual) { - return this.expectationFactory(actual, this); - }; - - Spec.prototype.execute = function(onComplete) { - var self = this; - - this.onStart(this); - - if (this.markedPending || this.disabled) { - complete(); - return; - } - - var fns = this.beforeAndAfterFns(); - var allFns = fns.befores.concat(this.queueableFn).concat(fns.afters); - - this.queueRunnerFactory({ - queueableFns: allFns, - onException: function() { self.onException.apply(self, arguments); }, - onComplete: complete, - userContext: this.userContext() - }); - - function complete() { - self.result.status = self.status(); - self.resultCallback(self.result); - - if (onComplete) { - onComplete(); - } - } - }; - - Spec.prototype.onException = function onException(e) { - if (Spec.isPendingSpecException(e)) { - this.pend(); - return; - } - - this.addExpectationResult(false, { - matcherName: '', - passed: false, - expected: '', - actual: '', - error: e - }); - }; - - Spec.prototype.disable = function() { - this.disabled = true; - }; - - Spec.prototype.pend = function() { - this.markedPending = true; - }; - - Spec.prototype.status = function() { - if (this.disabled) { - return 'disabled'; - } - - if (this.markedPending) { - return 'pending'; - } - - if (this.result.failedExpectations.length > 0) { - return 'failed'; - } else { - return 'passed'; - } - }; - - Spec.prototype.isExecutable = function() { - return !this.disabled && !this.markedPending; - }; - - Spec.prototype.getFullName = function() { - return this.getSpecName(this); - }; - - Spec.pendingSpecExceptionMessage = '=> marked Pending'; - - Spec.isPendingSpecException = function(e) { - return !!(e && e.toString && e.toString().indexOf(Spec.pendingSpecExceptionMessage) !== -1); - }; - - return Spec; -}; - -if (typeof window == void 0 && typeof exports == 'object') { - exports.Spec = jasmineRequire.Spec; -} - -getJasmineRequireObj().Env = function(j$) { - function Env(options) { - options = options || {}; - - var self = this; - var global = options.global || j$.getGlobal(); - - var totalSpecsDefined = 0; - - var catchExceptions = true; - - var realSetTimeout = j$.getGlobal().setTimeout; - var realClearTimeout = j$.getGlobal().clearTimeout; - this.clock = new j$.Clock(global, new j$.DelayedFunctionScheduler(), new j$.MockDate(global)); - - var runnableLookupTable = {}; - var runnableResources = {}; - - var currentSpec = null; - var currentlyExecutingSuites = []; - var currentDeclarationSuite = null; - - var currentSuite = function() { - return currentlyExecutingSuites[currentlyExecutingSuites.length - 1]; - }; - - var currentRunnable = function() { - return currentSpec || currentSuite(); - }; - - var reporter = new j$.ReportDispatcher([ - 'jasmineStarted', - 'jasmineDone', - 'suiteStarted', - 'suiteDone', - 'specStarted', - 'specDone' - ]); - - this.specFilter = function() { - return true; - }; - - this.addCustomEqualityTester = function(tester) { - if(!currentRunnable()) { - throw new Error('Custom Equalities must be added in a before function or a spec'); - } - runnableResources[currentRunnable().id].customEqualityTesters.push(tester); - }; - - this.addMatchers = function(matchersToAdd) { - if(!currentRunnable()) { - throw new Error('Matchers must be added in a before function or a spec'); - } - var customMatchers = runnableResources[currentRunnable().id].customMatchers; - for (var matcherName in matchersToAdd) { - customMatchers[matcherName] = matchersToAdd[matcherName]; - } - }; - - j$.Expectation.addCoreMatchers(j$.matchers); - - var nextSpecId = 0; - var getNextSpecId = function() { - return 'spec' + nextSpecId++; - }; - - var nextSuiteId = 0; - var getNextSuiteId = function() { - return 'suite' + nextSuiteId++; - }; - - var expectationFactory = function(actual, spec) { - return j$.Expectation.Factory({ - util: j$.matchersUtil, - customEqualityTesters: runnableResources[spec.id].customEqualityTesters, - customMatchers: runnableResources[spec.id].customMatchers, - actual: actual, - addExpectationResult: addExpectationResult - }); - - function addExpectationResult(passed, result) { - return spec.addExpectationResult(passed, result); - } - }; - - var defaultResourcesForRunnable = function(id, parentRunnableId) { - var resources = {spies: [], customEqualityTesters: [], customMatchers: {}}; - - if(runnableResources[parentRunnableId]){ - resources.customEqualityTesters = j$.util.clone(runnableResources[parentRunnableId].customEqualityTesters); - resources.customMatchers = j$.util.clone(runnableResources[parentRunnableId].customMatchers); - } - - runnableResources[id] = resources; - }; - - var clearResourcesForRunnable = function(id) { - spyRegistry.clearSpies(); - delete runnableResources[id]; - }; - - var beforeAndAfterFns = function(suite, runnablesExplictlySet) { - return function() { - var befores = [], - afters = [], - beforeAlls = [], - afterAlls = []; - - while(suite) { - befores = befores.concat(suite.beforeFns); - afters = afters.concat(suite.afterFns); - - if (runnablesExplictlySet()) { - beforeAlls = beforeAlls.concat(suite.beforeAllFns); - afterAlls = afterAlls.concat(suite.afterAllFns); - } - - suite = suite.parentSuite; - } - return { - befores: beforeAlls.reverse().concat(befores.reverse()), - afters: afters.concat(afterAlls) - }; - }; - }; - - var getSpecName = function(spec, suite) { - return suite.getFullName() + ' ' + spec.description; - }; - - // TODO: we may just be able to pass in the fn instead of wrapping here - var buildExpectationResult = j$.buildExpectationResult, - exceptionFormatter = new j$.ExceptionFormatter(), - expectationResultFactory = function(attrs) { - attrs.messageFormatter = exceptionFormatter.message; - attrs.stackFormatter = exceptionFormatter.stack; - - return buildExpectationResult(attrs); - }; - - // TODO: fix this naming, and here's where the value comes in - this.catchExceptions = function(value) { - catchExceptions = !!value; - return catchExceptions; - }; - - this.catchingExceptions = function() { - return catchExceptions; - }; - - var maximumSpecCallbackDepth = 20; - var currentSpecCallbackDepth = 0; - - function clearStack(fn) { - currentSpecCallbackDepth++; - if (currentSpecCallbackDepth >= maximumSpecCallbackDepth) { - currentSpecCallbackDepth = 0; - realSetTimeout(fn, 0); - } else { - fn(); - } - } - - var catchException = function(e) { - return j$.Spec.isPendingSpecException(e) || catchExceptions; - }; - - var queueRunnerFactory = function(options) { - options.catchException = catchException; - options.clearStack = options.clearStack || clearStack; - options.timer = {setTimeout: realSetTimeout, clearTimeout: realClearTimeout}; - options.fail = self.fail; - - new j$.QueueRunner(options).execute(); - }; - - var topSuite = new j$.Suite({ - env: this, - id: getNextSuiteId(), - description: 'Jasmine__TopLevel__Suite', - queueRunner: queueRunnerFactory - }); - runnableLookupTable[topSuite.id] = topSuite; - defaultResourcesForRunnable(topSuite.id); - currentDeclarationSuite = topSuite; - - this.topSuite = function() { - return topSuite; - }; - - this.execute = function(runnablesToRun) { - if(runnablesToRun) { - runnablesExplictlySet = true; - } else if (focusedRunnables.length) { - runnablesExplictlySet = true; - runnablesToRun = focusedRunnables; - } else { - runnablesToRun = [topSuite.id]; - } - - var allFns = []; - for(var i = 0; i < runnablesToRun.length; i++) { - var runnable = runnableLookupTable[runnablesToRun[i]]; - allFns.push((function(runnable) { return { fn: function(done) { runnable.execute(done); } }; })(runnable)); - } - - reporter.jasmineStarted({ - totalSpecsDefined: totalSpecsDefined - }); - - queueRunnerFactory({queueableFns: allFns, onComplete: reporter.jasmineDone}); - }; - - this.addReporter = function(reporterToAdd) { - reporter.addReporter(reporterToAdd); - }; - - var spyRegistry = new j$.SpyRegistry({currentSpies: function() { - if(!currentRunnable()) { - throw new Error('Spies must be created in a before function or a spec'); - } - return runnableResources[currentRunnable().id].spies; - }}); - - this.spyOn = function() { - return spyRegistry.spyOn.apply(spyRegistry, arguments); - }; - - var suiteFactory = function(description) { - var suite = new j$.Suite({ - env: self, - id: getNextSuiteId(), - description: description, - parentSuite: currentDeclarationSuite, - queueRunner: queueRunnerFactory, - onStart: suiteStarted, - expectationFactory: expectationFactory, - expectationResultFactory: expectationResultFactory, - resultCallback: function(attrs) { - if (!suite.disabled) { - clearResourcesForRunnable(suite.id); - currentlyExecutingSuites.pop(); - } - reporter.suiteDone(attrs); - } - }); - - runnableLookupTable[suite.id] = suite; - return suite; - - function suiteStarted(suite) { - currentlyExecutingSuites.push(suite); - defaultResourcesForRunnable(suite.id, suite.parentSuite.id); - reporter.suiteStarted(suite.result); - } - }; - - this.describe = function(description, specDefinitions) { - var suite = suiteFactory(description); - addSpecsToSuite(suite, specDefinitions); - return suite; - }; - - this.xdescribe = function(description, specDefinitions) { - var suite = this.describe(description, specDefinitions); - suite.disable(); - return suite; - }; - - var focusedRunnables = []; - - this.fdescribe = function(description, specDefinitions) { - var suite = suiteFactory(description); - suite.isFocused = true; - - focusedRunnables.push(suite.id); - unfocusAncestor(); - addSpecsToSuite(suite, specDefinitions); - - return suite; - }; - - function addSpecsToSuite(suite, specDefinitions) { - var parentSuite = currentDeclarationSuite; - parentSuite.addChild(suite); - currentDeclarationSuite = suite; - - var declarationError = null; - try { - specDefinitions.call(suite); - } catch (e) { - declarationError = e; - } - - if (declarationError) { - self.it('encountered a declaration exception', function() { - throw declarationError; - }); - } - - currentDeclarationSuite = parentSuite; - } - - function findFocusedAncestor(suite) { - while (suite) { - if (suite.isFocused) { - return suite.id; - } - suite = suite.parentSuite; - } - - return null; - } - - function unfocusAncestor() { - var focusedAncestor = findFocusedAncestor(currentDeclarationSuite); - if (focusedAncestor) { - for (var i = 0; i < focusedRunnables.length; i++) { - if (focusedRunnables[i] === focusedAncestor) { - focusedRunnables.splice(i, 1); - break; - } - } - } - } - - var runnablesExplictlySet = false; - - var runnablesExplictlySetGetter = function(){ - return runnablesExplictlySet; - }; - - var specFactory = function(description, fn, suite, timeout) { - totalSpecsDefined++; - var spec = new j$.Spec({ - id: getNextSpecId(), - beforeAndAfterFns: beforeAndAfterFns(suite, runnablesExplictlySetGetter), - expectationFactory: expectationFactory, - resultCallback: specResultCallback, - getSpecName: function(spec) { - return getSpecName(spec, suite); - }, - onStart: specStarted, - description: description, - expectationResultFactory: expectationResultFactory, - queueRunnerFactory: queueRunnerFactory, - userContext: function() { return suite.clonedSharedUserContext(); }, - queueableFn: { - fn: fn, - timeout: function() { return timeout || j$.DEFAULT_TIMEOUT_INTERVAL; } - } - }); - - runnableLookupTable[spec.id] = spec; - - if (!self.specFilter(spec)) { - spec.disable(); - } - - return spec; - - function specResultCallback(result) { - clearResourcesForRunnable(spec.id); - currentSpec = null; - reporter.specDone(result); - } - - function specStarted(spec) { - currentSpec = spec; - defaultResourcesForRunnable(spec.id, suite.id); - reporter.specStarted(spec.result); - } - }; - - this.it = function(description, fn, timeout) { - var spec = specFactory(description, fn, currentDeclarationSuite, timeout); - currentDeclarationSuite.addChild(spec); - return spec; - }; - - this.xit = function() { - var spec = this.it.apply(this, arguments); - spec.pend(); - return spec; - }; - - this.fit = function(){ - var spec = this.it.apply(this, arguments); - - focusedRunnables.push(spec.id); - unfocusAncestor(); - return spec; - }; - - this.expect = function(actual) { - if (!currentRunnable()) { - throw new Error('\'expect\' was used when there was no current spec, this could be because an asynchronous test timed out'); - } - - return currentRunnable().expect(actual); - }; - - this.beforeEach = function(beforeEachFunction, timeout) { - currentDeclarationSuite.beforeEach({ - fn: beforeEachFunction, - timeout: function() { return timeout || j$.DEFAULT_TIMEOUT_INTERVAL; } - }); - }; - - this.beforeAll = function(beforeAllFunction, timeout) { - currentDeclarationSuite.beforeAll({ - fn: beforeAllFunction, - timeout: function() { return timeout || j$.DEFAULT_TIMEOUT_INTERVAL; } - }); - }; - - this.afterEach = function(afterEachFunction, timeout) { - currentDeclarationSuite.afterEach({ - fn: afterEachFunction, - timeout: function() { return timeout || j$.DEFAULT_TIMEOUT_INTERVAL; } - }); - }; - - this.afterAll = function(afterAllFunction, timeout) { - currentDeclarationSuite.afterAll({ - fn: afterAllFunction, - timeout: function() { return timeout || j$.DEFAULT_TIMEOUT_INTERVAL; } - }); - }; - - this.pending = function() { - throw j$.Spec.pendingSpecExceptionMessage; - }; - - this.fail = function(error) { - var message = 'Failed'; - if (error) { - message += ': '; - message += error.message || error; - } - - currentRunnable().addExpectationResult(false, { - matcherName: '', - passed: false, - expected: '', - actual: '', - message: message - }); - }; - } - - return Env; -}; - -getJasmineRequireObj().JsApiReporter = function() { - - var noopTimer = { - start: function(){}, - elapsed: function(){ return 0; } - }; - - function JsApiReporter(options) { - var timer = options.timer || noopTimer, - status = 'loaded'; - - this.started = false; - this.finished = false; - - this.jasmineStarted = function() { - this.started = true; - status = 'started'; - timer.start(); - }; - - var executionTime; - - this.jasmineDone = function() { - this.finished = true; - executionTime = timer.elapsed(); - status = 'done'; - }; - - this.status = function() { - return status; - }; - - var suites = [], - suites_hash = {}; - - this.suiteStarted = function(result) { - suites_hash[result.id] = result; - }; - - this.suiteDone = function(result) { - storeSuite(result); - }; - - this.suiteResults = function(index, length) { - return suites.slice(index, index + length); - }; - - function storeSuite(result) { - suites.push(result); - suites_hash[result.id] = result; - } - - this.suites = function() { - return suites_hash; - }; - - var specs = []; - - this.specDone = function(result) { - specs.push(result); - }; - - this.specResults = function(index, length) { - return specs.slice(index, index + length); - }; - - this.specs = function() { - return specs; - }; - - this.executionTime = function() { - return executionTime; - }; - - } - - return JsApiReporter; -}; - -getJasmineRequireObj().Any = function() { - - function Any(expectedObject) { - this.expectedObject = expectedObject; - } - - Any.prototype.jasmineMatches = function(other) { - if (this.expectedObject == String) { - return typeof other == 'string' || other instanceof String; - } - - if (this.expectedObject == Number) { - return typeof other == 'number' || other instanceof Number; - } - - if (this.expectedObject == Function) { - return typeof other == 'function' || other instanceof Function; - } - - if (this.expectedObject == Object) { - return typeof other == 'object'; - } - - if (this.expectedObject == Boolean) { - return typeof other == 'boolean'; - } - - return other instanceof this.expectedObject; - }; - - Any.prototype.jasmineToString = function() { - return ''; - }; - - return Any; -}; - -getJasmineRequireObj().CallTracker = function() { - - function CallTracker() { - var calls = []; - - this.track = function(context) { - calls.push(context); - }; - - this.any = function() { - return !!calls.length; - }; - - this.count = function() { - return calls.length; - }; - - this.argsFor = function(index) { - var call = calls[index]; - return call ? call.args : []; - }; - - this.all = function() { - return calls; - }; - - this.allArgs = function() { - var callArgs = []; - for(var i = 0; i < calls.length; i++){ - callArgs.push(calls[i].args); - } - - return callArgs; - }; - - this.first = function() { - return calls[0]; - }; - - this.mostRecent = function() { - return calls[calls.length - 1]; - }; - - this.reset = function() { - calls = []; - }; - } - - return CallTracker; -}; - -getJasmineRequireObj().Clock = function() { - function Clock(global, delayedFunctionScheduler, mockDate) { - var self = this, - realTimingFunctions = { - setTimeout: global.setTimeout, - clearTimeout: global.clearTimeout, - setInterval: global.setInterval, - clearInterval: global.clearInterval - }, - fakeTimingFunctions = { - setTimeout: setTimeout, - clearTimeout: clearTimeout, - setInterval: setInterval, - clearInterval: clearInterval - }, - installed = false, - timer; - - - self.install = function() { - replace(global, fakeTimingFunctions); - timer = fakeTimingFunctions; - installed = true; - - return self; - }; - - self.uninstall = function() { - delayedFunctionScheduler.reset(); - mockDate.uninstall(); - replace(global, realTimingFunctions); - - timer = realTimingFunctions; - installed = false; - }; - - self.mockDate = function(initialDate) { - mockDate.install(initialDate); - }; - - self.setTimeout = function(fn, delay, params) { - if (legacyIE()) { - if (arguments.length > 2) { - throw new Error('IE < 9 cannot support extra params to setTimeout without a polyfill'); - } - return timer.setTimeout(fn, delay); - } - return Function.prototype.apply.apply(timer.setTimeout, [global, arguments]); - }; - - self.setInterval = function(fn, delay, params) { - if (legacyIE()) { - if (arguments.length > 2) { - throw new Error('IE < 9 cannot support extra params to setInterval without a polyfill'); - } - return timer.setInterval(fn, delay); - } - return Function.prototype.apply.apply(timer.setInterval, [global, arguments]); - }; - - self.clearTimeout = function(id) { - return Function.prototype.call.apply(timer.clearTimeout, [global, id]); - }; - - self.clearInterval = function(id) { - return Function.prototype.call.apply(timer.clearInterval, [global, id]); - }; - - self.tick = function(millis) { - if (installed) { - mockDate.tick(millis); - delayedFunctionScheduler.tick(millis); - } else { - throw new Error('Mock clock is not installed, use jasmine.clock().install()'); - } - }; - - return self; - - function legacyIE() { - //if these methods are polyfilled, apply will be present - return !(realTimingFunctions.setTimeout || realTimingFunctions.setInterval).apply; - } - - function replace(dest, source) { - for (var prop in source) { - dest[prop] = source[prop]; - } - } - - function setTimeout(fn, delay) { - return delayedFunctionScheduler.scheduleFunction(fn, delay, argSlice(arguments, 2)); - } - - function clearTimeout(id) { - return delayedFunctionScheduler.removeFunctionWithId(id); - } - - function setInterval(fn, interval) { - return delayedFunctionScheduler.scheduleFunction(fn, interval, argSlice(arguments, 2), true); - } - - function clearInterval(id) { - return delayedFunctionScheduler.removeFunctionWithId(id); - } - - function argSlice(argsObj, n) { - return Array.prototype.slice.call(argsObj, n); - } - } - - return Clock; -}; - -getJasmineRequireObj().DelayedFunctionScheduler = function() { - function DelayedFunctionScheduler() { - var self = this; - var scheduledLookup = []; - var scheduledFunctions = {}; - var currentTime = 0; - var delayedFnCount = 0; - - self.tick = function(millis) { - millis = millis || 0; - var endTime = currentTime + millis; - - runScheduledFunctions(endTime); - currentTime = endTime; - }; - - self.scheduleFunction = function(funcToCall, millis, params, recurring, timeoutKey, runAtMillis) { - var f; - if (typeof(funcToCall) === 'string') { - /* jshint evil: true */ - f = function() { return eval(funcToCall); }; - /* jshint evil: false */ - } else { - f = funcToCall; - } - - millis = millis || 0; - timeoutKey = timeoutKey || ++delayedFnCount; - runAtMillis = runAtMillis || (currentTime + millis); - - var funcToSchedule = { - runAtMillis: runAtMillis, - funcToCall: f, - recurring: recurring, - params: params, - timeoutKey: timeoutKey, - millis: millis - }; - - if (runAtMillis in scheduledFunctions) { - scheduledFunctions[runAtMillis].push(funcToSchedule); - } else { - scheduledFunctions[runAtMillis] = [funcToSchedule]; - scheduledLookup.push(runAtMillis); - scheduledLookup.sort(function (a, b) { - return a - b; - }); - } - - return timeoutKey; - }; - - self.removeFunctionWithId = function(timeoutKey) { - for (var runAtMillis in scheduledFunctions) { - var funcs = scheduledFunctions[runAtMillis]; - var i = indexOfFirstToPass(funcs, function (func) { - return func.timeoutKey === timeoutKey; - }); - - if (i > -1) { - if (funcs.length === 1) { - delete scheduledFunctions[runAtMillis]; - deleteFromLookup(runAtMillis); - } else { - funcs.splice(i, 1); - } - - // intervals get rescheduled when executed, so there's never more - // than a single scheduled function with a given timeoutKey - break; - } - } - }; - - self.reset = function() { - currentTime = 0; - scheduledLookup = []; - scheduledFunctions = {}; - delayedFnCount = 0; - }; - - return self; - - function indexOfFirstToPass(array, testFn) { - var index = -1; - - for (var i = 0; i < array.length; ++i) { - if (testFn(array[i])) { - index = i; - break; - } - } - - return index; - } - - function deleteFromLookup(key) { - var value = Number(key); - var i = indexOfFirstToPass(scheduledLookup, function (millis) { - return millis === value; - }); - - if (i > -1) { - scheduledLookup.splice(i, 1); - } - } - - function reschedule(scheduledFn) { - self.scheduleFunction(scheduledFn.funcToCall, - scheduledFn.millis, - scheduledFn.params, - true, - scheduledFn.timeoutKey, - scheduledFn.runAtMillis + scheduledFn.millis); - } - - function runScheduledFunctions(endTime) { - if (scheduledLookup.length === 0 || scheduledLookup[0] > endTime) { - return; - } - - do { - currentTime = scheduledLookup.shift(); - - var funcsToRun = scheduledFunctions[currentTime]; - delete scheduledFunctions[currentTime]; - - for (var i = 0; i < funcsToRun.length; ++i) { - var funcToRun = funcsToRun[i]; - - if (funcToRun.recurring) { - reschedule(funcToRun); - } - - funcToRun.funcToCall.apply(null, funcToRun.params || []); - } - } while (scheduledLookup.length > 0 && - // checking first if we're out of time prevents setTimeout(0) - // scheduled in a funcToRun from forcing an extra iteration - currentTime !== endTime && - scheduledLookup[0] <= endTime); - } - } - - return DelayedFunctionScheduler; -}; - -getJasmineRequireObj().ExceptionFormatter = function() { - function ExceptionFormatter() { - this.message = function(error) { - var message = ''; - - if (error.name && error.message) { - message += error.name + ': ' + error.message; - } else { - message += error.toString() + ' thrown'; - } - - if (error.fileName || error.sourceURL) { - message += ' in ' + (error.fileName || error.sourceURL); - } - - if (error.line || error.lineNumber) { - message += ' (line ' + (error.line || error.lineNumber) + ')'; - } - - return message; - }; - - this.stack = function(error) { - return error ? error.stack : null; - }; - } - - return ExceptionFormatter; -}; - -getJasmineRequireObj().Expectation = function() { - - function Expectation(options) { - this.util = options.util || { buildFailureMessage: function() {} }; - this.customEqualityTesters = options.customEqualityTesters || []; - this.actual = options.actual; - this.addExpectationResult = options.addExpectationResult || function(){}; - this.isNot = options.isNot; - - var customMatchers = options.customMatchers || {}; - for (var matcherName in customMatchers) { - this[matcherName] = Expectation.prototype.wrapCompare(matcherName, customMatchers[matcherName]); - } - } - - Expectation.prototype.wrapCompare = function(name, matcherFactory) { - return function() { - var args = Array.prototype.slice.call(arguments, 0), - expected = args.slice(0), - message = ''; - - args.unshift(this.actual); - - var matcher = matcherFactory(this.util, this.customEqualityTesters), - matcherCompare = matcher.compare; - - function defaultNegativeCompare() { - var result = matcher.compare.apply(null, args); - result.pass = !result.pass; - return result; - } - - if (this.isNot) { - matcherCompare = matcher.negativeCompare || defaultNegativeCompare; - } - - var result = matcherCompare.apply(null, args); - - if (!result.pass) { - if (!result.message) { - args.unshift(this.isNot); - args.unshift(name); - message = this.util.buildFailureMessage.apply(null, args); - } else { - if (Object.prototype.toString.apply(result.message) === '[object Function]') { - message = result.message(); - } else { - message = result.message; - } - } - } - - if (expected.length == 1) { - expected = expected[0]; - } - - // TODO: how many of these params are needed? - this.addExpectationResult( - result.pass, - { - matcherName: name, - passed: result.pass, - message: message, - actual: this.actual, - expected: expected // TODO: this may need to be arrayified/sliced - } - ); - }; - }; - - Expectation.addCoreMatchers = function(matchers) { - var prototype = Expectation.prototype; - for (var matcherName in matchers) { - var matcher = matchers[matcherName]; - prototype[matcherName] = prototype.wrapCompare(matcherName, matcher); - } - }; - - Expectation.Factory = function(options) { - options = options || {}; - - var expect = new Expectation(options); - - // TODO: this would be nice as its own Object - NegativeExpectation - // TODO: copy instead of mutate options - options.isNot = true; - expect.not = new Expectation(options); - - return expect; - }; - - return Expectation; -}; - -//TODO: expectation result may make more sense as a presentation of an expectation. -getJasmineRequireObj().buildExpectationResult = function() { - function buildExpectationResult(options) { - var messageFormatter = options.messageFormatter || function() {}, - stackFormatter = options.stackFormatter || function() {}; - - var result = { - matcherName: options.matcherName, - message: message(), - stack: stack(), - passed: options.passed - }; - - if(!result.passed) { - result.expected = options.expected; - result.actual = options.actual; - } - - return result; - - function message() { - if (options.passed) { - return 'Passed.'; - } else if (options.message) { - return options.message; - } else if (options.error) { - return messageFormatter(options.error); - } - return ''; - } - - function stack() { - if (options.passed) { - return ''; - } - - var error = options.error; - if (!error) { - try { - throw new Error(message()); - } catch (e) { - error = e; - } - } - return stackFormatter(error); - } - } - - return buildExpectationResult; -}; - -getJasmineRequireObj().MockDate = function() { - function MockDate(global) { - var self = this; - var currentTime = 0; - - if (!global || !global.Date) { - self.install = function() {}; - self.tick = function() {}; - self.uninstall = function() {}; - return self; - } - - var GlobalDate = global.Date; - - self.install = function(mockDate) { - if (mockDate instanceof GlobalDate) { - currentTime = mockDate.getTime(); - } else { - currentTime = new GlobalDate().getTime(); - } - - global.Date = FakeDate; - }; - - self.tick = function(millis) { - millis = millis || 0; - currentTime = currentTime + millis; - }; - - self.uninstall = function() { - currentTime = 0; - global.Date = GlobalDate; - }; - - createDateProperties(); - - return self; - - function FakeDate() { - switch(arguments.length) { - case 0: - return new GlobalDate(currentTime); - case 1: - return new GlobalDate(arguments[0]); - case 2: - return new GlobalDate(arguments[0], arguments[1]); - case 3: - return new GlobalDate(arguments[0], arguments[1], arguments[2]); - case 4: - return new GlobalDate(arguments[0], arguments[1], arguments[2], arguments[3]); - case 5: - return new GlobalDate(arguments[0], arguments[1], arguments[2], arguments[3], - arguments[4]); - case 6: - return new GlobalDate(arguments[0], arguments[1], arguments[2], arguments[3], - arguments[4], arguments[5]); - case 7: - return new GlobalDate(arguments[0], arguments[1], arguments[2], arguments[3], - arguments[4], arguments[5], arguments[6]); - } - } - - function createDateProperties() { - FakeDate.prototype = GlobalDate.prototype; - - FakeDate.now = function() { - if (GlobalDate.now) { - return currentTime; - } else { - throw new Error('Browser does not support Date.now()'); - } - }; - - FakeDate.toSource = GlobalDate.toSource; - FakeDate.toString = GlobalDate.toString; - FakeDate.parse = GlobalDate.parse; - FakeDate.UTC = GlobalDate.UTC; - } - } - - return MockDate; -}; - -getJasmineRequireObj().ObjectContaining = function(j$) { - - function ObjectContaining(sample) { - this.sample = sample; - } - - ObjectContaining.prototype.jasmineMatches = function(other, mismatchKeys, mismatchValues) { - if (typeof(this.sample) !== 'object') { throw new Error('You must provide an object to objectContaining, not \''+this.sample+'\'.'); } - - mismatchKeys = mismatchKeys || []; - mismatchValues = mismatchValues || []; - - var hasKey = function(obj, keyName) { - return obj !== null && !j$.util.isUndefined(obj[keyName]); - }; - - for (var property in this.sample) { - if (!hasKey(other, property) && hasKey(this.sample, property)) { - mismatchKeys.push('expected has key \'' + property + '\', but missing from actual.'); - } - else if (!j$.matchersUtil.equals(other[property], this.sample[property])) { - mismatchValues.push('\'' + property + '\' was \'' + (other[property] ? j$.util.htmlEscape(other[property].toString()) : other[property]) + '\' in actual, but was \'' + (this.sample[property] ? j$.util.htmlEscape(this.sample[property].toString()) : this.sample[property]) + '\' in expected.'); - } - } - - return (mismatchKeys.length === 0 && mismatchValues.length === 0); - }; - - ObjectContaining.prototype.jasmineToString = function() { - return ''; - }; - - return ObjectContaining; -}; - -getJasmineRequireObj().pp = function(j$) { - - function PrettyPrinter() { - this.ppNestLevel_ = 0; - this.seen = []; - } - - PrettyPrinter.prototype.format = function(value) { - this.ppNestLevel_++; - try { - if (j$.util.isUndefined(value)) { - this.emitScalar('undefined'); - } else if (value === null) { - this.emitScalar('null'); - } else if (value === 0 && 1/value === -Infinity) { - this.emitScalar('-0'); - } else if (value === j$.getGlobal()) { - this.emitScalar(''); - } else if (value.jasmineToString) { - this.emitScalar(value.jasmineToString()); - } else if (typeof value === 'string') { - this.emitString(value); - } else if (j$.isSpy(value)) { - this.emitScalar('spy on ' + value.and.identity()); - } else if (value instanceof RegExp) { - this.emitScalar(value.toString()); - } else if (typeof value === 'function') { - this.emitScalar('Function'); - } else if (typeof value.nodeType === 'number') { - this.emitScalar('HTMLNode'); - } else if (value instanceof Date) { - this.emitScalar('Date(' + value + ')'); - } else if (j$.util.arrayContains(this.seen, value)) { - this.emitScalar(''); - } else if (j$.isArray_(value) || j$.isA_('Object', value)) { - this.seen.push(value); - if (j$.isArray_(value)) { - this.emitArray(value); - } else { - this.emitObject(value); - } - this.seen.pop(); - } else { - this.emitScalar(value.toString()); - } - } finally { - this.ppNestLevel_--; - } - }; - - PrettyPrinter.prototype.iterateObject = function(obj, fn) { - for (var property in obj) { - if (!Object.prototype.hasOwnProperty.call(obj, property)) { continue; } - fn(property, obj.__lookupGetter__ ? (!j$.util.isUndefined(obj.__lookupGetter__(property)) && - obj.__lookupGetter__(property) !== null) : false); - } - }; - - PrettyPrinter.prototype.emitArray = j$.unimplementedMethod_; - PrettyPrinter.prototype.emitObject = j$.unimplementedMethod_; - PrettyPrinter.prototype.emitScalar = j$.unimplementedMethod_; - PrettyPrinter.prototype.emitString = j$.unimplementedMethod_; - - function StringPrettyPrinter() { - PrettyPrinter.call(this); - - this.string = ''; - } - - j$.util.inherit(StringPrettyPrinter, PrettyPrinter); - - StringPrettyPrinter.prototype.emitScalar = function(value) { - this.append(value); - }; - - StringPrettyPrinter.prototype.emitString = function(value) { - this.append('\'' + value + '\''); - }; - - StringPrettyPrinter.prototype.emitArray = function(array) { - if (this.ppNestLevel_ > j$.MAX_PRETTY_PRINT_DEPTH) { - this.append('Array'); - return; - } - var length = Math.min(array.length, j$.MAX_PRETTY_PRINT_ARRAY_LENGTH); - this.append('[ '); - for (var i = 0; i < length; i++) { - if (i > 0) { - this.append(', '); - } - this.format(array[i]); - } - if(array.length > length){ - this.append(', ...'); - } - this.append(' ]'); - }; - - StringPrettyPrinter.prototype.emitObject = function(obj) { - if (this.ppNestLevel_ > j$.MAX_PRETTY_PRINT_DEPTH) { - this.append('Object'); - return; - } - - var self = this; - this.append('{ '); - var first = true; - - this.iterateObject(obj, function(property, isGetter) { - if (first) { - first = false; - } else { - self.append(', '); - } - - self.append(property); - self.append(': '); - if (isGetter) { - self.append(''); - } else { - self.format(obj[property]); - } - }); - - this.append(' }'); - }; - - StringPrettyPrinter.prototype.append = function(value) { - this.string += value; - }; - - return function(value) { - var stringPrettyPrinter = new StringPrettyPrinter(); - stringPrettyPrinter.format(value); - return stringPrettyPrinter.string; - }; -}; - -getJasmineRequireObj().QueueRunner = function(j$) { - - function once(fn) { - var called = false; - return function() { - if (!called) { - called = true; - fn(); - } - }; - } - - function QueueRunner(attrs) { - this.queueableFns = attrs.queueableFns || []; - this.onComplete = attrs.onComplete || function() {}; - this.clearStack = attrs.clearStack || function(fn) {fn();}; - this.onException = attrs.onException || function() {}; - this.catchException = attrs.catchException || function() { return true; }; - this.userContext = attrs.userContext || {}; - this.timer = attrs.timeout || {setTimeout: setTimeout, clearTimeout: clearTimeout}; - this.fail = attrs.fail || function() {}; - } - - QueueRunner.prototype.execute = function() { - this.run(this.queueableFns, 0); - }; - - QueueRunner.prototype.run = function(queueableFns, recursiveIndex) { - var length = queueableFns.length, - self = this, - iterativeIndex; - - - for(iterativeIndex = recursiveIndex; iterativeIndex < length; iterativeIndex++) { - var queueableFn = queueableFns[iterativeIndex]; - if (queueableFn.fn.length > 0) { - return attemptAsync(queueableFn); - } else { - attemptSync(queueableFn); - } - } - - var runnerDone = iterativeIndex >= length; - - if (runnerDone) { - this.clearStack(this.onComplete); - } - - function attemptSync(queueableFn) { - try { - queueableFn.fn.call(self.userContext); - } catch (e) { - handleException(e, queueableFn); - } - } - - function attemptAsync(queueableFn) { - var clearTimeout = function () { - Function.prototype.apply.apply(self.timer.clearTimeout, [j$.getGlobal(), [timeoutId]]); - }, - next = once(function () { - clearTimeout(timeoutId); - self.run(queueableFns, iterativeIndex + 1); - }), - timeoutId; - - next.fail = function() { - self.fail.apply(null, arguments); - next(); - }; - - if (queueableFn.timeout) { - timeoutId = Function.prototype.apply.apply(self.timer.setTimeout, [j$.getGlobal(), [function() { - var error = new Error('Timeout - Async callback was not invoked within timeout specified by jasmine.DEFAULT_TIMEOUT_INTERVAL.'); - onException(error, queueableFn); - next(); - }, queueableFn.timeout()]]); - } - - try { - queueableFn.fn.call(self.userContext, next); - } catch (e) { - handleException(e, queueableFn); - next(); - } - } - - function onException(e, queueableFn) { - self.onException(e); - } - - function handleException(e, queueableFn) { - onException(e, queueableFn); - if (!self.catchException(e)) { - //TODO: set a var when we catch an exception and - //use a finally block to close the loop in a nice way.. - throw e; - } - } - }; - - return QueueRunner; -}; - -getJasmineRequireObj().ReportDispatcher = function() { - function ReportDispatcher(methods) { - - var dispatchedMethods = methods || []; - - for (var i = 0; i < dispatchedMethods.length; i++) { - var method = dispatchedMethods[i]; - this[method] = (function(m) { - return function() { - dispatch(m, arguments); - }; - }(method)); - } - - var reporters = []; - - this.addReporter = function(reporter) { - reporters.push(reporter); - }; - - return this; - - function dispatch(method, args) { - for (var i = 0; i < reporters.length; i++) { - var reporter = reporters[i]; - if (reporter[method]) { - reporter[method].apply(reporter, args); - } - } - } - } - - return ReportDispatcher; -}; - - -getJasmineRequireObj().SpyRegistry = function(j$) { - - function SpyRegistry(options) { - options = options || {}; - var currentSpies = options.currentSpies || function() { return []; }; - - this.spyOn = function(obj, methodName) { - if (j$.util.isUndefined(obj)) { - throw new Error('spyOn could not find an object to spy upon for ' + methodName + '()'); - } - - if (j$.util.isUndefined(obj[methodName])) { - throw new Error(methodName + '() method does not exist'); - } - - if (obj[methodName] && j$.isSpy(obj[methodName])) { - //TODO?: should this return the current spy? Downside: may cause user confusion about spy state - throw new Error(methodName + ' has already been spied upon'); - } - - var spy = j$.createSpy(methodName, obj[methodName]); - - currentSpies().push({ - spy: spy, - baseObj: obj, - methodName: methodName, - originalValue: obj[methodName] - }); - - obj[methodName] = spy; - - return spy; - }; - - this.clearSpies = function() { - var spies = currentSpies(); - for (var i = 0; i < spies.length; i++) { - var spyEntry = spies[i]; - spyEntry.baseObj[spyEntry.methodName] = spyEntry.originalValue; - } - }; - } - - return SpyRegistry; -}; - -getJasmineRequireObj().SpyStrategy = function() { - - function SpyStrategy(options) { - options = options || {}; - - var identity = options.name || 'unknown', - originalFn = options.fn || function() {}, - getSpy = options.getSpy || function() {}, - plan = function() {}; - - this.identity = function() { - return identity; - }; - - this.exec = function() { - return plan.apply(this, arguments); - }; - - this.callThrough = function() { - plan = originalFn; - return getSpy(); - }; - - this.returnValue = function(value) { - plan = function() { - return value; - }; - return getSpy(); - }; - - this.returnValues = function() { - var values = Array.prototype.slice.call(arguments); - plan = function () { - return values.shift(); - }; - return getSpy(); - }; - - this.throwError = function(something) { - var error = (something instanceof Error) ? something : new Error(something); - plan = function() { - throw error; - }; - return getSpy(); - }; - - this.callFake = function(fn) { - plan = fn; - return getSpy(); - }; - - this.stub = function(fn) { - plan = function() {}; - return getSpy(); - }; - } - - return SpyStrategy; -}; - -getJasmineRequireObj().Suite = function() { - function Suite(attrs) { - this.env = attrs.env; - this.id = attrs.id; - this.parentSuite = attrs.parentSuite; - this.description = attrs.description; - this.onStart = attrs.onStart || function() {}; - this.resultCallback = attrs.resultCallback || function() {}; - this.clearStack = attrs.clearStack || function(fn) {fn();}; - this.expectationFactory = attrs.expectationFactory; - this.expectationResultFactory = attrs.expectationResultFactory; - - this.beforeFns = []; - this.afterFns = []; - this.beforeAllFns = []; - this.afterAllFns = []; - this.queueRunner = attrs.queueRunner || function() {}; - this.disabled = false; - - this.children = []; - - this.result = { - id: this.id, - description: this.description, - fullName: this.getFullName(), - failedExpectations: [] - }; - } - - Suite.prototype.expect = function(actual) { - return this.expectationFactory(actual, this); - }; - - Suite.prototype.getFullName = function() { - var fullName = this.description; - for (var parentSuite = this.parentSuite; parentSuite; parentSuite = parentSuite.parentSuite) { - if (parentSuite.parentSuite) { - fullName = parentSuite.description + ' ' + fullName; - } - } - return fullName; - }; - - Suite.prototype.disable = function() { - this.disabled = true; - }; - - Suite.prototype.beforeEach = function(fn) { - this.beforeFns.unshift(fn); - }; - - Suite.prototype.beforeAll = function(fn) { - this.beforeAllFns.push(fn); - }; - - Suite.prototype.afterEach = function(fn) { - this.afterFns.unshift(fn); - }; - - Suite.prototype.afterAll = function(fn) { - this.afterAllFns.push(fn); - }; - - Suite.prototype.addChild = function(child) { - this.children.push(child); - }; - - Suite.prototype.status = function() { - if (this.disabled) { - return 'disabled'; - } - - if (this.result.failedExpectations.length > 0) { - return 'failed'; - } else { - return 'finished'; - } - }; - - Suite.prototype.execute = function(onComplete) { - var self = this; - - this.onStart(this); - - if (this.disabled) { - complete(); - return; - } - - var allFns = []; - - for (var i = 0; i < this.children.length; i++) { - allFns.push(wrapChildAsAsync(this.children[i])); - } - - if (this.isExecutable()) { - allFns = this.beforeAllFns.concat(allFns); - allFns = allFns.concat(this.afterAllFns); - } - - this.queueRunner({ - queueableFns: allFns, - onComplete: complete, - userContext: this.sharedUserContext(), - onException: function() { self.onException.apply(self, arguments); } - }); - - function complete() { - self.result.status = self.status(); - self.resultCallback(self.result); - - if (onComplete) { - onComplete(); - } - } - - function wrapChildAsAsync(child) { - return { fn: function(done) { child.execute(done); } }; - } - }; - - Suite.prototype.isExecutable = function() { - var foundActive = false; - for(var i = 0; i < this.children.length; i++) { - if(this.children[i].isExecutable()) { - foundActive = true; - break; - } - } - return foundActive; - }; - - Suite.prototype.sharedUserContext = function() { - if (!this.sharedContext) { - this.sharedContext = this.parentSuite ? clone(this.parentSuite.sharedUserContext()) : {}; - } - - return this.sharedContext; - }; - - Suite.prototype.clonedSharedUserContext = function() { - return clone(this.sharedUserContext()); - }; - - Suite.prototype.onException = function() { - if(isAfterAll(this.children)) { - var data = { - matcherName: '', - passed: false, - expected: '', - actual: '', - error: arguments[0] - }; - this.result.failedExpectations.push(this.expectationResultFactory(data)); - } else { - for (var i = 0; i < this.children.length; i++) { - var child = this.children[i]; - child.onException.apply(child, arguments); - } - } - }; - - Suite.prototype.addExpectationResult = function () { - if(isAfterAll(this.children) && isFailure(arguments)){ - var data = arguments[1]; - this.result.failedExpectations.push(this.expectationResultFactory(data)); - } else { - for (var i = 0; i < this.children.length; i++) { - var child = this.children[i]; - child.addExpectationResult.apply(child, arguments); - } - } - }; - - function isAfterAll(children) { - return children && children[0].result.status; - } - - function isFailure(args) { - return !args[0]; - } - - function clone(obj) { - var clonedObj = {}; - for (var prop in obj) { - if (obj.hasOwnProperty(prop)) { - clonedObj[prop] = obj[prop]; - } - } - - return clonedObj; - } - - return Suite; -}; - -if (typeof window == void 0 && typeof exports == 'object') { - exports.Suite = jasmineRequire.Suite; -} - -getJasmineRequireObj().Timer = function() { - var defaultNow = (function(Date) { - return function() { return new Date().getTime(); }; - })(Date); - - function Timer(options) { - options = options || {}; - - var now = options.now || defaultNow, - startTime; - - this.start = function() { - startTime = now(); - }; - - this.elapsed = function() { - return now() - startTime; - }; - } - - return Timer; -}; - -getJasmineRequireObj().matchersUtil = function(j$) { - // TODO: what to do about jasmine.pp not being inject? move to JSON.stringify? gut PrettyPrinter? - - return { - equals: function(a, b, customTesters) { - customTesters = customTesters || []; - - return eq(a, b, [], [], customTesters); - }, - - contains: function(haystack, needle, customTesters) { - customTesters = customTesters || []; - - if ((Object.prototype.toString.apply(haystack) === '[object Array]') || - (!!haystack && !haystack.indexOf)) - { - for (var i = 0; i < haystack.length; i++) { - if (eq(haystack[i], needle, [], [], customTesters)) { - return true; - } - } - return false; - } - - return !!haystack && haystack.indexOf(needle) >= 0; - }, - - buildFailureMessage: function() { - var args = Array.prototype.slice.call(arguments, 0), - matcherName = args[0], - isNot = args[1], - actual = args[2], - expected = args.slice(3), - englishyPredicate = matcherName.replace(/[A-Z]/g, function(s) { return ' ' + s.toLowerCase(); }); - - var message = 'Expected ' + - j$.pp(actual) + - (isNot ? ' not ' : ' ') + - englishyPredicate; - - if (expected.length > 0) { - for (var i = 0; i < expected.length; i++) { - if (i > 0) { - message += ','; - } - message += ' ' + j$.pp(expected[i]); - } - } - - return message + '.'; - } - }; - - // Equality function lovingly adapted from isEqual in - // [Underscore](http://underscorejs.org) - function eq(a, b, aStack, bStack, customTesters) { - var result = true; - - for (var i = 0; i < customTesters.length; i++) { - var customTesterResult = customTesters[i](a, b); - if (!j$.util.isUndefined(customTesterResult)) { - return customTesterResult; - } - } - - if (a instanceof j$.Any) { - result = a.jasmineMatches(b); - if (result) { - return true; - } - } - - if (b instanceof j$.Any) { - result = b.jasmineMatches(a); - if (result) { - return true; - } - } - - if (b instanceof j$.ObjectContaining) { - result = b.jasmineMatches(a); - if (result) { - return true; - } - } - - if (a instanceof Error && b instanceof Error) { - return a.message == b.message; - } - - // Identical objects are equal. `0 === -0`, but they aren't identical. - // See the [Harmony `egal` proposal](http://wiki.ecmascript.org/doku.php?id=harmony:egal). - if (a === b) { return a !== 0 || 1 / a == 1 / b; } - // A strict comparison is necessary because `null == undefined`. - if (a === null || b === null) { return a === b; } - var className = Object.prototype.toString.call(a); - if (className != Object.prototype.toString.call(b)) { return false; } - switch (className) { - // Strings, numbers, dates, and booleans are compared by value. - case '[object String]': - // Primitives and their corresponding object wrappers are equivalent; thus, `"5"` is - // equivalent to `new String("5")`. - return a == String(b); - case '[object Number]': - // `NaN`s are equivalent, but non-reflexive. An `egal` comparison is performed for - // other numeric values. - return a != +a ? b != +b : (a === 0 ? 1 / a == 1 / b : a == +b); - case '[object Date]': - case '[object Boolean]': - // Coerce dates and booleans to numeric primitive values. Dates are compared by their - // millisecond representations. Note that invalid dates with millisecond representations - // of `NaN` are not equivalent. - return +a == +b; - // RegExps are compared by their source patterns and flags. - case '[object RegExp]': - return a.source == b.source && - a.global == b.global && - a.multiline == b.multiline && - a.ignoreCase == b.ignoreCase; - } - if (typeof a != 'object' || typeof b != 'object') { return false; } - // Assume equality for cyclic structures. The algorithm for detecting cyclic - // structures is adapted from ES 5.1 section 15.12.3, abstract operation `JO`. - var length = aStack.length; - while (length--) { - // Linear search. Performance is inversely proportional to the number of - // unique nested structures. - if (aStack[length] == a) { return bStack[length] == b; } - } - // Add the first object to the stack of traversed objects. - aStack.push(a); - bStack.push(b); - var size = 0; - // Recursively compare objects and arrays. - if (className == '[object Array]') { - // Compare array lengths to determine if a deep comparison is necessary. - size = a.length; - result = size == b.length; - if (result) { - // Deep compare the contents, ignoring non-numeric properties. - while (size--) { - if (!(result = eq(a[size], b[size], aStack, bStack, customTesters))) { break; } - } - } - } else { - // Objects with different constructors are not equivalent, but `Object`s - // from different frames are. - var aCtor = a.constructor, bCtor = b.constructor; - if (aCtor !== bCtor && !(isFunction(aCtor) && (aCtor instanceof aCtor) && - isFunction(bCtor) && (bCtor instanceof bCtor))) { - return false; - } - // Deep compare objects. - for (var key in a) { - if (has(a, key)) { - // Count the expected number of properties. - size++; - // Deep compare each member. - if (!(result = has(b, key) && eq(a[key], b[key], aStack, bStack, customTesters))) { break; } - } - } - // Ensure that both objects contain the same number of properties. - if (result) { - for (key in b) { - if (has(b, key) && !(size--)) { break; } - } - result = !size; - } - } - // Remove the first object from the stack of traversed objects. - aStack.pop(); - bStack.pop(); - - return result; - - function has(obj, key) { - return obj.hasOwnProperty(key); - } - - function isFunction(obj) { - return typeof obj === 'function'; - } - } -}; - -getJasmineRequireObj().toBe = function() { - function toBe() { - return { - compare: function(actual, expected) { - return { - pass: actual === expected - }; - } - }; - } - - return toBe; -}; - -getJasmineRequireObj().toBeCloseTo = function() { - - function toBeCloseTo() { - return { - compare: function(actual, expected, precision) { - if (precision !== 0) { - precision = precision || 2; - } - - return { - pass: Math.abs(expected - actual) < (Math.pow(10, -precision) / 2) - }; - } - }; - } - - return toBeCloseTo; -}; - -getJasmineRequireObj().toBeDefined = function() { - function toBeDefined() { - return { - compare: function(actual) { - return { - pass: (void 0 !== actual) - }; - } - }; - } - - return toBeDefined; -}; - -getJasmineRequireObj().toBeFalsy = function() { - function toBeFalsy() { - return { - compare: function(actual) { - return { - pass: !!!actual - }; - } - }; - } - - return toBeFalsy; -}; - -getJasmineRequireObj().toBeGreaterThan = function() { - - function toBeGreaterThan() { - return { - compare: function(actual, expected) { - return { - pass: actual > expected - }; - } - }; - } - - return toBeGreaterThan; -}; - - -getJasmineRequireObj().toBeLessThan = function() { - function toBeLessThan() { - return { - - compare: function(actual, expected) { - return { - pass: actual < expected - }; - } - }; - } - - return toBeLessThan; -}; -getJasmineRequireObj().toBeNaN = function(j$) { - - function toBeNaN() { - return { - compare: function(actual) { - var result = { - pass: (actual !== actual) - }; - - if (result.pass) { - result.message = 'Expected actual not to be NaN.'; - } else { - result.message = function() { return 'Expected ' + j$.pp(actual) + ' to be NaN.'; }; - } - - return result; - } - }; - } - - return toBeNaN; -}; - -getJasmineRequireObj().toBeNull = function() { - - function toBeNull() { - return { - compare: function(actual) { - return { - pass: actual === null - }; - } - }; - } - - return toBeNull; -}; - -getJasmineRequireObj().toBeTruthy = function() { - - function toBeTruthy() { - return { - compare: function(actual) { - return { - pass: !!actual - }; - } - }; - } - - return toBeTruthy; -}; - -getJasmineRequireObj().toBeUndefined = function() { - - function toBeUndefined() { - return { - compare: function(actual) { - return { - pass: void 0 === actual - }; - } - }; - } - - return toBeUndefined; -}; - -getJasmineRequireObj().toContain = function() { - function toContain(util, customEqualityTesters) { - customEqualityTesters = customEqualityTesters || []; - - return { - compare: function(actual, expected) { - - return { - pass: util.contains(actual, expected, customEqualityTesters) - }; - } - }; - } - - return toContain; -}; - -getJasmineRequireObj().toEqual = function() { - - function toEqual(util, customEqualityTesters) { - customEqualityTesters = customEqualityTesters || []; - - return { - compare: function(actual, expected) { - var result = { - pass: false - }; - - result.pass = util.equals(actual, expected, customEqualityTesters); - - return result; - } - }; - } - - return toEqual; -}; - -getJasmineRequireObj().toHaveBeenCalled = function(j$) { - - function toHaveBeenCalled() { - return { - compare: function(actual) { - var result = {}; - - if (!j$.isSpy(actual)) { - throw new Error('Expected a spy, but got ' + j$.pp(actual) + '.'); - } - - if (arguments.length > 1) { - throw new Error('toHaveBeenCalled does not take arguments, use toHaveBeenCalledWith'); - } - - result.pass = actual.calls.any(); - - result.message = result.pass ? - 'Expected spy ' + actual.and.identity() + ' not to have been called.' : - 'Expected spy ' + actual.and.identity() + ' to have been called.'; - - return result; - } - }; - } - - return toHaveBeenCalled; -}; - -getJasmineRequireObj().toHaveBeenCalledWith = function(j$) { - - function toHaveBeenCalledWith(util, customEqualityTesters) { - return { - compare: function() { - var args = Array.prototype.slice.call(arguments, 0), - actual = args[0], - expectedArgs = args.slice(1), - result = { pass: false }; - - if (!j$.isSpy(actual)) { - throw new Error('Expected a spy, but got ' + j$.pp(actual) + '.'); - } - - if (!actual.calls.any()) { - result.message = function() { return 'Expected spy ' + actual.and.identity() + ' to have been called with ' + j$.pp(expectedArgs) + ' but it was never called.'; }; - return result; - } - - if (util.contains(actual.calls.allArgs(), expectedArgs, customEqualityTesters)) { - result.pass = true; - result.message = function() { return 'Expected spy ' + actual.and.identity() + ' not to have been called with ' + j$.pp(expectedArgs) + ' but it was.'; }; - } else { - result.message = function() { return 'Expected spy ' + actual.and.identity() + ' to have been called with ' + j$.pp(expectedArgs) + ' but actual calls were ' + j$.pp(actual.calls.allArgs()).replace(/^\[ | \]$/g, '') + '.'; }; - } - - return result; - } - }; - } - - return toHaveBeenCalledWith; -}; - -getJasmineRequireObj().toMatch = function() { - - function toMatch() { - return { - compare: function(actual, expected) { - var regexp = new RegExp(expected); - - return { - pass: regexp.test(actual) - }; - } - }; - } - - return toMatch; -}; - -getJasmineRequireObj().toThrow = function(j$) { - - function toThrow(util) { - return { - compare: function(actual, expected) { - var result = { pass: false }, - threw = false, - thrown; - - if (typeof actual != 'function') { - throw new Error('Actual is not a Function'); - } - - try { - actual(); - } catch (e) { - threw = true; - thrown = e; - } - - if (!threw) { - result.message = 'Expected function to throw an exception.'; - return result; - } - - if (arguments.length == 1) { - result.pass = true; - result.message = function() { return 'Expected function not to throw, but it threw ' + j$.pp(thrown) + '.'; }; - - return result; - } - - if (util.equals(thrown, expected)) { - result.pass = true; - result.message = function() { return 'Expected function not to throw ' + j$.pp(expected) + '.'; }; - } else { - result.message = function() { return 'Expected function to throw ' + j$.pp(expected) + ', but it threw ' + j$.pp(thrown) + '.'; }; - } - - return result; - } - }; - } - - return toThrow; -}; - -getJasmineRequireObj().toThrowError = function(j$) { - function toThrowError (util) { - return { - compare: function(actual) { - var threw = false, - pass = {pass: true}, - fail = {pass: false}, - thrown; - - if (typeof actual != 'function') { - throw new Error('Actual is not a Function'); - } - - var errorMatcher = getMatcher.apply(null, arguments); - - try { - actual(); - } catch (e) { - threw = true; - thrown = e; - } - - if (!threw) { - fail.message = 'Expected function to throw an Error.'; - return fail; - } - - if (!(thrown instanceof Error)) { - fail.message = function() { return 'Expected function to throw an Error, but it threw ' + j$.pp(thrown) + '.'; }; - return fail; - } - - if (errorMatcher.hasNoSpecifics()) { - pass.message = 'Expected function not to throw an Error, but it threw ' + fnNameFor(thrown) + '.'; - return pass; - } - - if (errorMatcher.matches(thrown)) { - pass.message = function() { - return 'Expected function not to throw ' + errorMatcher.errorTypeDescription + errorMatcher.messageDescription() + '.'; - }; - return pass; - } else { - fail.message = function() { - return 'Expected function to throw ' + errorMatcher.errorTypeDescription + errorMatcher.messageDescription() + - ', but it threw ' + errorMatcher.thrownDescription(thrown) + '.'; - }; - return fail; - } - } - }; - - function getMatcher() { - var expected = null, - errorType = null; - - if (arguments.length == 2) { - expected = arguments[1]; - if (isAnErrorType(expected)) { - errorType = expected; - expected = null; - } - } else if (arguments.length > 2) { - errorType = arguments[1]; - expected = arguments[2]; - if (!isAnErrorType(errorType)) { - throw new Error('Expected error type is not an Error.'); - } - } - - if (expected && !isStringOrRegExp(expected)) { - if (errorType) { - throw new Error('Expected error message is not a string or RegExp.'); - } else { - throw new Error('Expected is not an Error, string, or RegExp.'); - } - } - - function messageMatch(message) { - if (typeof expected == 'string') { - return expected == message; - } else { - return expected.test(message); - } - } - - return { - errorTypeDescription: errorType ? fnNameFor(errorType) : 'an exception', - thrownDescription: function(thrown) { - var thrownName = errorType ? fnNameFor(thrown.constructor) : 'an exception', - thrownMessage = ''; - - if (expected) { - thrownMessage = ' with message ' + j$.pp(thrown.message); - } - - return thrownName + thrownMessage; - }, - messageDescription: function() { - if (expected === null) { - return ''; - } else if (expected instanceof RegExp) { - return ' with a message matching ' + j$.pp(expected); - } else { - return ' with message ' + j$.pp(expected); - } - }, - hasNoSpecifics: function() { - return expected === null && errorType === null; - }, - matches: function(error) { - return (errorType === null || error.constructor === errorType) && - (expected === null || messageMatch(error.message)); - } - }; - } - - function fnNameFor(func) { - return func.name || func.toString().match(/^\s*function\s*(\w*)\s*\(/)[1]; - } - - function isStringOrRegExp(potential) { - return potential instanceof RegExp || (typeof potential == 'string'); - } - - function isAnErrorType(type) { - if (typeof type !== 'function') { - return false; - } - - var Surrogate = function() {}; - Surrogate.prototype = type.prototype; - return (new Surrogate()) instanceof Error; - } - } - - return toThrowError; -}; - -getJasmineRequireObj().interface = function(jasmine, env) { - var jasmineInterface = { - describe: function(description, specDefinitions) { - return env.describe(description, specDefinitions); - }, - - xdescribe: function(description, specDefinitions) { - return env.xdescribe(description, specDefinitions); - }, - - fdescribe: function(description, specDefinitions) { - return env.fdescribe(description, specDefinitions); - }, - - it: function(desc, func) { - return env.it(desc, func); - }, - - xit: function(desc, func) { - return env.xit(desc, func); - }, - - fit: function(desc, func) { - return env.fit(desc, func); - }, - - beforeEach: function(beforeEachFunction) { - return env.beforeEach(beforeEachFunction); - }, - - afterEach: function(afterEachFunction) { - return env.afterEach(afterEachFunction); - }, - - beforeAll: function(beforeAllFunction) { - return env.beforeAll(beforeAllFunction); - }, - - afterAll: function(afterAllFunction) { - return env.afterAll(afterAllFunction); - }, - - expect: function(actual) { - return env.expect(actual); - }, - - pending: function() { - return env.pending(); - }, - - fail: function() { - return env.fail.apply(env, arguments); - }, - - spyOn: function(obj, methodName) { - return env.spyOn(obj, methodName); - }, - - jsApiReporter: new jasmine.JsApiReporter({ - timer: new jasmine.Timer() - }), - - jasmine: jasmine - }; - - jasmine.addCustomEqualityTester = function(tester) { - env.addCustomEqualityTester(tester); - }; - - jasmine.addMatchers = function(matchers) { - return env.addMatchers(matchers); - }; - - jasmine.clock = function() { - return env.clock; - }; - - return jasmineInterface; -}; - -getJasmineRequireObj().version = function() { - return '2.1.3'; -}; diff --git a/tests/jasmine-2.1.3/jasmine_favicon.png b/tests/jasmine-2.1.3/jasmine_favicon.png deleted file mode 100755 index 3b84583be4b9d5ae9cd5cae07b2dbaa5ebb0ad1c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1486 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE3?yBabRA=0VDb;}332@o1PuQh8X8uGu4-^- zn3*=SA+%wV=cI;&hMB$%-Lc(MLmN8%IwwUpbcA;F2Q;)twND9bn-tpC9oR4-vb8I; zp+Bg#FSKP+P(yD-%f!%zo}iZgh=%Ua=KkP@iNVbiLYsSn8~VeW`+}P$1~&ACHcbd_ z=nZb_32o{NZkZ6&1k^hrxT!a&r8lIdAIJ@9nh?|iRMsET+#A%`AKKg-(%2K)*cZ|~ zA-J&*$PEUH08MM`4Q=iVY3vVfhN$TUscGs5sR8P31X|G_+SnTcv<0XVC=Rr!u|K4# zHyCJU6UYRR;%2BtKv^I=q#2|DECn_k@wXU|=@ zeD&J(8#iy=zH|5fgNKiwJbm`!<*V0k-oF3v@zdvTKYsrD^Y>rGdNDU(R>|^oaSW-5 z%f0Y2x+hSk{p0&HA;E60Oq1S3r7U;(X3MH#?W9nxXzk)srlC4P;cZYe&v*G}mgi%< ze(bTl{@&_)cX8b-kvX%ff9D22e*M~7edm|;|Jb8m2JBzkzKiSBKR0n*?XSyM6fxZY zJ4bb;vGKRiKP(ztq3sJx9iq$Re`-EEQU0KE$sdyqayzp6H-7x+oGKZ_6;hQ_Y|p&y z7o`N7g@ z8Yl1HKL;mFo4BdxljF1}KbfMR6nNdLyPnEap1MqBdI?{g$L58$P8+wftLX5R70)7n`#pwItnbma$w{%`M(`wpsu2rJ60rdGCc> z+~lm)viMYM`=uXwK_$`#_UtRZMO=2-IV)l2vc~)doyPvg-RmxtACQ#v{7}5$&isV+ zPws~n?@yNGy#H1=vTI?;CAl9~9#VgqJ+7`4y~R+Wyj0U+){?lm9r6mtf0gl_VmUW^ z%eje%?jM%^eLuUg#ybXaQM{yQy&8UgiQ`HQ+=iTpjfd0iJ@ ssyFi&dF4%9dEry;pNN)Q>$jg_dr3r;PHA*CFc&d+y85}Sb4q9e0J812W&i*H diff --git a/tests/tests.html b/tests/tests.html deleted file mode 100755 index 0d298c493c..0000000000 --- a/tests/tests.html +++ /dev/null @@ -1,9 +0,0 @@ - - - - - - - - - diff --git a/tests/tests.js b/tests/tests.js deleted file mode 100644 index 495ca8d0fc..0000000000 --- a/tests/tests.js +++ /dev/null @@ -1,26 +0,0 @@ -window.jasmineRequire = require('./jasmine-2.1.3/jasmine'); -require('./jasmine-2.1.3/jasmine-html'); -require('./jasmine-2.1.3/boot'); -var consoleReporter = require('./jasmine-2.1.3/console'); -var app = require('remote').require('app'); - -jasmine.getEnv().addReporter(new consoleReporter.ConsoleReporter()({ - showColors: true, - timer: new jasmine.Timer(), - verbose: true, - print: function() { - process.stdout.write.apply(process.stdout, arguments); - }, - onComplete: function () { - app.quit(); - } - })); - -var fs = require('fs'); -var tests = fs.readdirSync('./tests').filter(function (f) { - return f.indexOf('-' + process.env.TEST_TYPE) !== -1; -}); - -tests.forEach(function (t) { - require('./' + t); -});

    y9QL}yW~8mCZ&q> z2~$3Fq44J+PTAtsD(gx34fug(nrQn5O%tJzfp1Qf*c-s7>%RD$gK6;r$C8`El8e0m zFp?&`ABj@xc7Om8fpK~sV~ZLZhXNXhoib?Cz;fNpb7ol6B)a-Ilw9-`7=1{6fJR0S$eyN3{hl9E+I1Wk!9FTmVfL|=3IEcPmN2J0SG)@{an^LB{Ts5Xfup$ literal 36143 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