Our motto at GreenGarden is “Guiding, Growth, Greatness.” This is based on the belief that by guiding families to learn how to become self sustainable and by promoting healthy lifestyles one will see a growth in all the communities. Thus, our organization will create a community of greatness.
Our mission is to help low income households across Canada to have access to nutritious food in order to lead a better, healthier lifestyle.
We support low income families by:
GreenGarden was founded by six SHAD’s from SHAD Waterloo. They were all driven by the question “How might we help low income households access nutritious food without providing any direct financial aid?”. The idea was a mixture of many different points that were factors of food insecurity. There were many issues that we were passionate about such as the stigma around families using food banks and growing produce in a sustainable manner. By trying to find a solution for all these issues GreenGarden was born.
Following the birth of GreenGarden, many of the SHADs at Waterloo joined the GreenGarden group with similar interests and passions in mind. In total, twenty more SHADs joined the team of six. Throughout the month of August, these SHADs also put their brilliant minds and talents to use with the goal of improving the original idea of GreenGarden. These people consist of Zoey Aliasgari, Elena Bruneau, Prasansa Subedi, Catherine Wang, Vardan Sawhney, Yun Jae Min, Luofei Chen, Tony Tu, Camila Gutiérrez, Caleb Tseng-Tham, Raymond Yang, Andrew Son, Manuel Dionne, Joyce Zhu, Vaneezeh Siddiqui, Ryan Hergert, Andrea Haw, Nathan Shao, Tracey Yu and Vincent Bellemare.
Co-Founder
Co-Founder
Co-Founder
Co-Founder
Co-Founder
Co-Founder
Our Membership Program is an unique quality of GreenGarden that makes it different from any other organization in the country currently. The GreenGarden Membership program is available to everyone living in the subsidized housing community. Each member in that community will pay a fee of $15 per month or have the opportunity to volunteer at the GreenGarden location for 5-7 hours a week. By doing so, the members of the community then save 20% of each purchase at the marketplace. Together the community is in charge of growing the food that they eat promoting sustainability.
GreenGarden is a huge believer in making a community where everyone feels safe and secure. That is why the GreenGarden community is always busy working together in unity. There are various programs that GreenGarden has started which will help to bring the community together.
The Garden Committee is open to all members and consumers of GreenGarden. We hold monthly meetings to plan the mandatory work parties and discuss issues including the revision of policies and procedures, the resolution of grievances and any other topics of interest to the gardeners. Gardeners, volunteers and members, are encouraged to attend these meetings to voice their opinions and to participate in the decision making process. Meeting minutes are recorded and e-mailed monthly to all the gardeners.
All our GreenGarden locations are constantly looking for eager volunteers to help at the Garden. No matter how old or how young, no matter the amount of experience you have with gardening there is always something you can do! Daily tasks include picking vegetables, cleaning the building, watering plants, potting plants or even helping out in the market place. High school volunteers are welcome and volunteer hours will be given if required. Contact your local GreenGarden for more information.
GreenGarden locations each have a different amount of positions available for hire depending on the size of the location. Most locations have three full time positions available. The positions include two Gardening Managers and one Storefront Manager. Before starting at a GreenGarden location all managers will receive training for both positions. A list of all available positions will be posted six month before the opening of the store.
GreenGarden is a not-for profit organization. Did you know we are just starting out as a company? Our mission is to support low income households by giving them the opportunity to buy and eat fresh produce at a cheaper price giving them a healthier lifestyle. All proceeds that we receive from donation go straight into making this organization run more efficiently and helps families save more money. So donate today!


Money Play. How should Red play 51?
pips Red=97 White=92
(CorrectAnswer= 0/0, ErrorScore= 0)
Red wants White to crack his prime first. Over the board, 11/6, 8/7 was played but that was a blunder because now next turn Red will have to hit 7/1* any six. That will potentially slow White up if he stays on the bar. For a while and then it will be Red whose prime cracks first.
Best is 8/2 with 11/5 a close second. The key to the position is to keep a playable six.
Best is 8/2 with 11/5 a close second. The key to the position is to keep a playable six.
1. Cubeful 2-ply 8/2 Eq.: +0.456 0.614 0.064 0.001 - 0.386 0.032 0.001 2. Cubeful 2-ply 11/5 Eq.: +0.423 (-0.033) 0.604 0.063 0.001 - 0.396 0.035 0.001 3. Cubeful 2-ply 11/10 8/3 Eq.: +0.389 (-0.067) 0.591 0.062 0.001 - 0.409 0.038 0.001 4. Cubeful 2-ply 11/6 8/7 Eq.: +0.383 (-0.073) 0.586 0.060 0.001 - 0.414 0.030 0.001 5. Cubeful 0-ply 7/6 7/2 Eq.: -0.570 (-1.026) 0.247 0.029 0.001 - 0.753 0.169 0.010


Running Experiments
Running Experiments¶
Running experiments using Hyperkite is very simple.
Start a new trial by calling the new_trial
function with your study key
as argument:
trial = hyperkite.new_trial(STUDY_KEY)
You will receive a dictionary of hyperparameter values trial.values
.
Use your own code to evaluate the performance of the hyperparameter values and report back the valiation loss to Hyperkite using the report_loss
function:
trial.report_loss(loss)
For a more complete example including training and evaluation code, check out the Getting Started guide.


Class for loading assets
yarn add task-loader
npm i -S task-loader
import TaskLoader from 'task-loader';
import {
LoadImageTask,
LoadVideoTask,
LoadHowlerAudioTask,
LoadJsonTask,
LoadScriptTask,
} from 'task-loader';
const taskLoader = new TaskLoader();
taskLoader.addEvents(TaskLoaderEvent.START, () => console.log('Start'))
taskLoader.addEvents(TaskLoaderEvent.UPDATE, ({ data }) => console.log('Update', data.progress))
taskLoader.addEvents(TaskLoaderEvent.COMPLETE, () => console.log('Complete'))
taskLoader.addEvents(TaskLoaderEvent.FAILURE, () => console.log('Failure during loading'))
taskLoader.loadTasks([
new LoadImageTask({
// Array of strings or a single string with the path to the asset
assets: ['path/to/image-1.jpg', 'path/to/image-2.jpg'],
// The size of a batch, this is how many requests happen at the same time
batchSize: 1,
// Flag to disable caching of assets, by default all
// assets are stored in an object for faster retrieval.
cached: true,
// When loading a lot of assets (for example an image sequence)
// you might want to group them so you can easily remove them when
// you no longer need them
cacheNameSpace: 'foo',
// Triggered when an asset is loaded, returns the original index + the asset
onAssetLoaded: ({index, asset}) => {}
}),
new LoadVideoTask({
assets: ['path/to/video.mp4'],
}),
new LoadHowlerAudioTask({
assets: ['path/to/audio.{format}}'],
formats: ['mp3', 'ogg'],
}),
new LoadJsonTask({
assets: ['path/to/file.json'],
}),
new LoadScriptTask({
assets: ['path/to/file.js'],
}),
])
.then(() => console.log('All assets loaded');
.catch(() => console.log('Failure during loading');
import cacheManager from 'task-loader';
// Manually add an asset to the cacheManager
const asset = document.createElement('img');
cacheManager.add('image', asset, 'bar');
// Retrieve an asset from the cache manager once it's loaded
const videoBlob = cacheManager.get('path/to/video.jp4'));
// Retrieve images stored in a namespace
const images = cacheManager.get('path/to/image-1.jpg', ''foo');
// Remove assets from cache
cacheManager.remove('path/to/video.mp4');
// Remove assets within a namespace
cacheManager.remove('foo');
I've included an example setup where you can see the loader in action, to run the project follow these steps:
git clone https://github.com/larsvanbraam/task-loader.git
cd task-loader/example
yarn
yarn dev
localhost:8080
or click this link to preview online
View the generated documentation.
In order to build task-loader, ensure that you have Git and Node.js installed.
Clone a copy of the repo:
git clone https://github.com/larsvanbraam/task-loader.git
Change to the task-loader directory:
cd task-loader
Install dev dependencies:
yarn
Use one of the following main scripts:
yarn build # build this project
yarn dev # run compilers in watch mode, both for babel and typescript
yarn test # run the unit tests incl coverage
yarn test:dev # run the unit tests in watch mode
yarn lint # run eslint and tslint on this project
yarn doc # generate typedoc documentation
When installing this module, it adds a pre-commit hook, that runs lint and prettier commands before committing, so you can be sure that everything checks out.
View CONTRIBUTING.md
View CHANGELOG.md
View AUTHORS.md
MIT © Lars van Braam
Generated using TypeDoc


Detect consecutive days in exceedance of a given threshold.
exceedance( data, x = t, y = temp, threshold, below = FALSE, minDuration = 5, joinAcrossGaps = TRUE, maxGap = 2, maxPadLength = FALSE )
| data | A data frame with at least the two following columns:
a |
|---|---|
| x | This column is expected to contain a vector of dates as per the
specification of |
| y | This is a column containing the measurement variable. If the column
name differs from the default (i.e. |
| threshold | The static threshold used to determine how many consecutive days are in exceedance of the temperature of interest. |
| below | Default is |
| minDuration | Minimum duration that temperatures must be in exceedance
of the |
| joinAcrossGaps | A TRUE/FALSE statement that indicates whether
or not to join consecutive days of temperatures in exceedance of the
|
| maxGap | The maximum length of the gap across which to connect
consecutive days in exceedance of the |
| maxPadLength | Specifies the maximum length of days over which to
interpolate (pad) missing data (specified as |
The function will return a list of two tibbles (see the tidyverse
).
The first being threshold
, which shows the daily temperatures and on which
specific days the given threshold
was exceeded. The second component of the
list is exceedance
, which shows a medley of statistics for each discrete
group of days in exceedance of the given threshold
. Note that any additional
columns left in the data frame given to this function will be output in the
threshold
component of the output. For example, if one uses
ts2clm
to prepare a time series for analysis and leaves
in the doy
column, this column will appear in the output.
The information shown in the threshold
component is:
The date of the temperature measurement. This variable may named
differently if an alternative name is supplied to the function's x
argument.
Temperature on the specified date [deg. C]. This variable may
named differently if an alternative name is supplied to the function's y
argument.
The static threshold
chosen by the user [deg. C].
Boolean indicating if temp
exceeds
threshold
.
Boolean indicating whether periods of consecutive
thresh_criterion
are >= minDuration
.
Boolean indicting if all criteria that define a discrete
group in exceedance of the threshold
are met.
A sequential number indicating the ID and order of occurrence of exceedances.
The same sequential number indicating the ID and
order of the exceedance as found in the threshold
component of the
output list.
Row number on which exceedance starts.
Row number on which exceedance peaks.
Row number on which exceedance ends.
Duration of exceedance [days].
Start date of exceedance [date].
Date of exceedance peak [date].
End date of exceedance [date].
Mean intensity [deg. C].
Maximum (peak) intensity [deg. C].
Intensity standard deviation [deg. C].
Cumulative intensity [deg. C x days].
Onset rate of exceedance [deg. C / day].
Decline rate of exceedance [deg. C / day].
This function assumes that the input time series consists of continuous
daily temperatures, with few missing values. The accompanying function
make_whole
aids in the preparation of a time series that is
suitable for use with exceedance
, although this may also be accomplished
'by hand' as long as the criteria are met as discussed in the documentation
to make_whole
.
Future versions seek to accommodate monthly and annual time series, too.
The calculation of onset and decline rates assumes that exceedance of the
threshold
started a half-day before the start day and ended a half-day
after the end-day. This is consistent with the duration definition as implemented,
which assumes duration = end day - start day + 1.
For the purposes of exceedance detection, any missing temperature values not
interpolated over (through optional maxPadLength
) will remain as
NA
. This means they will trigger the end of an exceedance if the adjacent
temperature values are in exceedance of the threshold
.
If the function is used to detect consecutive days of temperature under
the given theshold
, these temperatures are then taken as being in
exceedance below the threshold
as there is no antonym in the English
language for 'exceedance'.
This function is based largely on the detect_event
function found in this
package, which was ported from the Python algorithm that was written by Eric
Oliver, Institute for Marine and Antarctic Studies, University of Tasmania,
Feb 2015, and is documented by Hobday et al. (2016).
Robert W. Schlegel, Albertus J. Smit
res <- exceedance(sst_WA, threshold = 25) # show first ten days of daily data: res$threshold[1:10, ]#> # A tibble: 10 x 7 #> t temp thresh threshCriterion durationCriteri… exceedance #> <date> <dbl> <dbl> <lgl> <lgl> <lgl> #> 1 1982-01-01 20.9 25 FALSE FALSE FALSE #> 2 1982-01-02 21.2 25 FALSE FALSE FALSE #> 3 1982-01-03 21.4 25 FALSE FALSE FALSE #> 4 1982-01-04 21.2 25 FALSE FALSE FALSE #> 5 1982-01-05 21.3 25 FALSE FALSE FALSE #> 6 1982-01-06 21.6 25 FALSE FALSE FALSE #> 7 1982-01-07 21.7 25 FALSE FALSE FALSE #> 8 1982-01-08 21.5 25 FALSE FALSE FALSE #> 9 1982-01-09 21.4 25 FALSE FALSE FALSE #> 10 1982-01-10 21.4 25 FALSE FALSE FALSE #> # … with 1 more variable: exceedance_no <int># show first five exceedances: res$exceedance[1:5, ]#> # A tibble: 5 x 18 #> exceedance_no index_start index_peak index_end duration date_start date_peak #> <dbl> <dbl> <dbl> <dbl> <dbl> <date> <date> #> 1 1 2682 2683 2686 5 1989-05-05 1989-05-06 #> 2 2 6342 6351 6358 17 1999-05-13 1999-05-22 #> 3 3 6362 6363 6368 7 1999-06-02 1999-06-03 #> 4 4 6686 6688 6691 6 2000-04-21 2000-04-23 #> 5 5 6698 6699 6707 10 2000-05-03 2000-05-04 #> # … with 11 more variables: date_end <date>, intensity_mean <dbl>, #> # intensity_max <dbl>, intensity_var <dbl>, intensity_cumulative <dbl>, #> # intensity_mean_abs <dbl>, intensity_max_abs <dbl>, intensity_var_abs <dbl>, #> # intensity_cum_abs <dbl>, rate_onset <dbl>, rate_decline <dbl>


Press Start
Use keyboard or mouse to press buttons
Replicate the sequences given to you by the computer. If you make an error, the sequence will repeat. If you are in Strict mode, the game will restart if you mess up. Complete a sequence of 20 buttons to win!


⚠ We don't have much information about this company yet!
If you know something we don't, help us fill it in! Here's how:
Without variation selector invisible character:
⚠ |
With variation selector invisible character:
⚠ |
With variation selector invisible character (x2):
⚠ |


{% extends "pearson_requests/wizards/wizard_base.html" %} {% load staticfiles %} {% block title %}Application Security Service Request{% endblock %} {% block css %} {% endblock css %} {% block header %}Service Request{% endblock %} {% block header_subtext %}Application Security{% endblock %} {% block panel_title %}How can we be of assistance?{% endblock %} {% block form %} {% include "boh/snippets/form/_general.html" with control=wizard.form.application label='What application can we help you with?'%} {% include "boh/snippets/form/_general.html" with control=wizard.form.activity_types label='What would you like us to do?' %}
| Activity | Description | Typical Duration |
|---|---|---|
| AppScan Onboarding | We Scan Ya | 1 Week |
| Checkmarx Onboarding | We Source Ya | 2 Days |
Activity durations can vary depending on application size, environment speed, and assessment thoroughness.


In a post-apocalyptic world, in which people fight to the death, Max teams up with a mysterious woman, Furiousa, to try and survive.
A continuation of the saga created by George Lucas set thirty years after Star Wars: Episode VI - Return of the Jedi.
After finding himself in a new time-line, Kyle Reese teams up with John Connor's mother Sarah and an aging terminator to try and stop the one thing that the future fears, "Judgement Day".
In the near future, crime is patrolled by a mechanized police force. When one police droid, Chappie, is stolen and given new programming, he becomes the first robot with the ability to think and feel for himself.
A family's suburban home is invaded by evil forces.
Twenty-two years after the events of Jurassic Park, Isla Nublar now features a fully functioning dinosaur theme park, Jurassic World, as originally envisioned by John Hammond. After 10 years of operation and visitor rates declining, in order to fulfill a corporate mandate, a new attraction is created to re-spark visitor's interest, which backfires horribly.
When Tony Stark tries to jumpstart a dormant peacekeeping program, things go awry and it is up to the Avengers to stop the villainous Ultron from enacting his terrible plans.
The Death Star was a moon-sized Imperial military battlestation armed with a planet-destroying superlaser.


/** * @author Richard Davey<EMAIL_ADDRESS>* @copyright 2014 Photon Storm Ltd. * @license {@link https://github.com/photonstorm/phaser/blob/master/license.txt|MIT License} */ /** * Phaser Group constructor. * @class Phaser.Group * @classdesc A Group is a container for display objects that allows for fast pooling and object recycling. Groups can be nested within other Groups and have their own local transforms. * @constructor * @param {Phaser.Game} game - A reference to the currently running game. * @param {Phaser.Group|Phaser.Sprite|null} parent - The parent Group, DisplayObject or DisplayObjectContainer that this Group will be added to. If undefined it will use game.world. If null it won't be added to anything. * @param {string} [name=group] - A name for this Group. Not used internally but useful for debugging. * @param {boolean} [addToStage=false] - If set to true this Group will be added directly to the Game.Stage instead of Game.World. * @param {boolean} [enableBody=false] - If true all Sprites created with `Group.create` or `Group.createMulitple` will have a physics body created on them. Change the body type with physicsBodyType. * @param {number} [physicsBodyType=0] - If enableBody is true this is the type of physics body that is created on new Sprites. Phaser.Physics.ARCADE, Phaser.Physics.P2, Phaser.Physics.NINJA, etc. */ Phaser.Group = function (game, parent, name, addToStage, enableBody, physicsBodyType) { if (typeof addToStage === 'undefined') { addToStage = false; } if (typeof enableBody === 'undefined') { enableBody = false; } if (typeof physicsBodyType === 'undefined') { physicsBodyType = Phaser.Physics.ARCADE; } /** * @property {Phaser.Game} game - A reference to the currently running Game. */ this.game = game; if (typeof parent === 'undefined') { parent = game.world; } /** * @property {string} name - A name for this Group. Not used internally but useful for debugging. */ this.name = name || 'group'; PIXI.DisplayObjectContainer.call(this); if (addToStage) { this.game.stage.addChild(this); } else { if (parent) { parent.addChild(this); } } /** * @property {number} z - The z-depth value of this object within its Group (remember the World is a Group as well). No two objects in a Group can have the same z value. */ this.z = 0; /** * @property {number} type - Internal Phaser Type value. * @protected */ this.type = Phaser.GROUP; /** * @property {boolean} alive - The alive property is useful for Groups that are children of other Groups and need to be included/excluded in checks like forEachAlive. * @default */ this.alive = true; /** * @property {boolean} exists - If exists is true the Group is updated, otherwise it is skipped. * @default */ this.exists = true; /** * @property {Phaser.Group|Phaser.Sprite} parent - The parent of this Group. */ /** * @property {Phaser.Point} scale - The scale of the Group container. */ this.scale = new Phaser.Point(1, 1); /** * @property {Phaser.Point} pivot - The pivot point of the Group container. */ /** * The cursor is a simple way to iterate through the objects in a Group using the Group.next and Group.previous functions. * The cursor is set to the first child added to the Group and doesn't change unless you call next, previous or set it directly with Group.cursor. * @property {any} cursor - The current display object that the Group cursor is pointing to. */ this.cursor = null; /** * @property {Phaser.Point} cameraOffset - If this object is fixedToCamera then this stores the x/y offset that its drawn at, from the top-left of the camera view. */ this.cameraOffset = new Phaser.Point(); /** * @property {boolean} enableBody - If true all Sprites created by, or added to this Group, will have a physics body enabled on them. Change the body type with `Group.physicsBodyType`. * @default */ this.enableBody = false; /** * @property {boolean} enableBodyDebug - If true when a physics body is created (via Group.enableBody) it will create a physics debug object as well. Only works for P2 bodies. */ this.enableBodyDebug = enableBody; /** * @property {number} physicsBodyType - If Group.enableBody is true this is the type of physics body that is created on new Sprites. Phaser.Physics.ARCADE, Phaser.Physics.P2, Phaser.Physics.NINJA, etc. */ this.physicsBodyType = physicsBodyType; /** * @property {string} _sortProperty - The property on which children are sorted. * @private */ this._sortProperty = 'z'; /** * A small internal cache: * 0 = previous position.x * 1 = previous position.y * 2 = previous rotation * 3 = renderID * 4 = fresh? (0 = no, 1 = yes) * 5 = outOfBoundsFired (0 = no, 1 = yes) * 6 = exists (0 = no, 1 = yes) * 7 = fixed to camera (0 = no, 1 = yes) * 8 = cursor index * 9 = sort order * @property {Int16Array} _cache * @private */ this._cache = new Int16Array([0, 0, 0, 0, 1, 0, 1, 0, 0, 0]); }; Phaser.Group.prototype = Object.create(PIXI.DisplayObjectContainer.prototype); Phaser.Group.prototype.constructor = Phaser.Group; /** * @constant * @type {number} */ Phaser.Group.RETURN_NONE = 0; /** * @constant * @type {number} */ Phaser.Group.RETURN_TOTAL = 1; /** * @constant * @type {number} */ Phaser.Group.RETURN_CHILD = 2; /** * @constant * @type {number} */ Phaser.Group.SORT_ASCENDING = -1; /** * @constant * @type {number} */ Phaser.Group.SORT_DESCENDING = 1; /** * Adds an existing object to this Group. The object can be an instance of Phaser.Sprite, Phaser.Button or any other display object. * The child is automatically added to the top of the Group, so renders on-top of everything else within the Group. If you need to control * that then see the addAt method. * * @see Phaser.Group#create * @see Phaser.Group#addAt * @method Phaser.Group#add * @param {*} child - An instance of Phaser.Sprite, Phaser.Button or any other display object.. * @return {*} The child that was added to the Group. */ Phaser.Group.prototype.add = function (child) { if (child.parent !== this) { if (this.enableBody) { this.game.physics.enable(child, this.physicsBodyType); } this.addChild(child); child.z = this.children.length; if (child.events) { child.events.onAddedToGroup.dispatch(child, this); } if (this.cursor === null) { this.cursor = child; } } return child; } /** * Adds an existing object to this Group. The object can be an instance of Phaser.Sprite, Phaser.Button or any other display object. * The child is added to the Group at the location specified by the index value, this allows you to control child ordering. * * @method Phaser.Group#addAt * @param {*} child - An instance of Phaser.Sprite, Phaser.Button or any other display object.. * @param {number} index - The index within the Group to insert the child to. * @return {*} The child that was added to the Group. */ Phaser.Group.prototype.addAt = function (child, index) { if (child.parent !== this) { if (this.enableBody) { this.game.physics.enable(child, this.physicsBodyType); } this.addChildAt(child, index); this.updateZ(); if (child.events) { child.events.onAddedToGroup.dispatch(child, this); } if (this.cursor === null) { this.cursor = child; } } return child; } /** * Returns the child found at the given index within this Group. * * @method Phaser.Group#getAt * @param {number} index - The index to return the child from. * @return {*} The child that was found at the given index. If the index was out of bounds then this will return -1. */ Phaser.Group.prototype.getAt = function (index) { if (index < 0 || index > this.children.length) { return -1; } else { return this.getChildAt(index); } } /** * Automatically creates a new Phaser.Sprite object and adds it to the top of this Group. * Useful if you don't need to create the Sprite instances before-hand. * * @method Phaser.Group#create * @param {number} x - The x coordinate to display the newly created Sprite at. The value is in relation to the Group.x point. * @param {number} y - The y coordinate to display the newly created Sprite at. The value is in relation to the Group.y point. * @param {string} key - The Game.cache key of the image that this Sprite will use. * @param {number|string} [frame] - If the Sprite image contains multiple frames you can specify which one to use here. * @param {boolean} [exists=true] - The default exists state of the Sprite. * @return {Phaser.Sprite} The child that was created. */ Phaser.Group.prototype.create = function (x, y, key, frame, exists) { if (typeof exists === 'undefined') { exists = true; } var child = new Phaser.Sprite(this.game, x, y, key, frame); if (this.enableBody) { this.game.physics.enable(child, this.physicsBodyType); } child.exists = exists; child.visible = exists; child.alive = exists; this.addChild(child); child.z = this.children.length; if (child.events) { child.events.onAddedToGroup.dispatch(child, this); } if (this.cursor === null) { this.cursor = child; } return child; } /** * Automatically creates multiple Phaser.Sprite objects and adds them to the top of this Group. * Useful if you need to quickly generate a pool of identical sprites, such as bullets. By default the sprites will be set to not exist * and will be positioned at 0, 0 (relative to the Group.x/y) * * @method Phaser.Group#createMultiple * @param {number} quantity - The number of Sprites to create. * @param {string} key - The Game.cache key of the image that this Sprite will use. * @param {number|string} [frame] - If the Sprite image contains multiple frames you can specify which one to use here. * @param {boolean} [exists=false] - The default exists state of the Sprite. */ Phaser.Group.prototype.createMultiple = function (quantity, key, frame, exists) { if (typeof exists === 'undefined') { exists = false; } for (var i = 0; i < quantity; i++) { this.create(0, 0, key, frame, exists); } } /** * Internal method that re-applies all of the childrens Z values. * * @method Phaser.Group#updateZ * @protected */ Phaser.Group.prototype.updateZ = function () { var i = this.children.length; while (i--) { this.children[i].z = i; } } /** * Advances the Group cursor to the next object in the Group. If it's at the end of the Group it wraps around to the first object. * * @method Phaser.Group#next */ Phaser.Group.prototype.next = function () { if (this.cursor) { // Wrap the cursor? if (this._cache[8] === this.children.length) { this._cache[8] = 0; } else { this._cache[8]++; } this.cursor = this.children[this._cache[8]]; } } /** * Moves the Group cursor to the previous object in the Group. If it's at the start of the Group it wraps around to the last object. * * @method Phaser.Group#previous */ Phaser.Group.prototype.previous = function () { if (this.cursor) { // Wrap the cursor? if (this._cache[8] === 0) { this._cache[8] = this.children.length - 1; } else { this._cache[8]--; } this.cursor = this.children[this._cache[8]]; } } /** * Swaps the position of two children in this Group. Both children must be in this Group. * You cannot swap a child with itself, or swap un-parented children, doing so will return false. * * @method Phaser.Group#swap * @param {*} child1 - The first child to swap. * @param {*} child2 - The second child to swap. */ Phaser.Group.prototype.swap = function (child1, child2) { var result = this.swapChildren(child1, child2); if (result) { this.updateZ(); } return result; } /** * Brings the given child to the top of this Group so it renders above all other children. * * @method Phaser.Group#bringToTop * @param {*} child - The child to bring to the top of this Group. * @return {*} The child that was moved. */ Phaser.Group.prototype.bringToTop = function (child) { if (child.parent === this && this.getIndex(child) < this.children.length) { this.remove(child); this.add(child); } return child; } /** * Sends the given child to the bottom of this Group so it renders below all other children. * * @method Phaser.Group#sendToBack * @param {*} child - The child to send to the bottom of this Group. * @return {*} The child that was moved. */ Phaser.Group.prototype.sendToBack = function (child) { if (child.parent === this && this.getIndex(child) > 0) { this.remove(child); this.addAt(child, 0); } return child; } /** * Moves the given child up one place in this Group unless it's already at the top. * * @method Phaser.Group#moveUp * @param {*} child - The child to move up in the Group. * @return {*} The child that was moved. */ Phaser.Group.prototype.moveUp = function (child) { if (child.parent === this && this.getIndex(child) < this.children.length - 1) { var a = this.getIndex(child); var b = this.getAt(a + 1); if (b) { this.swap(a, b); } } return child; } /** * Moves the given child down one place in this Group unless it's already at the top. * * @method Phaser.Group#moveDown * @param {*} child - The child to move down in the Group. * @return {*} The child that was moved. */ Phaser.Group.prototype.moveDown = function (child) { if (child.parent === this && this.getIndex(child) > 0) { var a = this.getIndex(child); var b = this.getAt(a - 1); if (b) { this.swap(a, b); } } return child; } /** * Positions the child found at the given index within this Group to the given x and y coordinates. * * @method Phaser.Group#xy * @param {number} index - The index of the child in the Group to set the position of. * @param {number} x - The new x position of the child. * @param {number} y - The new y position of the child. */ Phaser.Group.prototype.xy = function (index, x, y) { if (index < 0 || index > this.children.length) { return -1; } else { this.getChildAt(index).x = x; this.getChildAt(index).y = y; } } /** * Reverses all children in this Group. Note that this does not propagate, only direct children are re-ordered. * * @method Phaser.Group#reverse */ Phaser.Group.prototype.reverse = function () { this.children.reverse(); this.updateZ(); } /** * Get the index position of the given child in this Group. This should always match the childs z property. * * @method Phaser.Group#getIndex * @param {*} child - The child to get the index for. * @return {number} The index of the child or -1 if it's not a member of this Group. */ Phaser.Group.prototype.getIndex = function (child) { return this.children.indexOf(child); } /** * Replaces a child of this Group with the given newChild. The newChild cannot be a member of this Group. * * @method Phaser.Group#replace * @param {*} oldChild - The child in this Group that will be replaced. * @param {*} newChild - The child to be inserted into this Group. */ Phaser.Group.prototype.replace = function (oldChild, newChild) { var index = this.getIndex(oldChild); if (index !== -1) { if (newChild.parent !== undefined) { newChild.events.onRemovedFromGroup.dispatch(newChild, this); newChild.parent.removeChild(newChild); if (newChild.parent instanceof Phaser.Group) { newChild.parent.updateZ(); } } this.removeChild(oldChild); this.addAt(newChild, index); } } /** * Sets the given property to the given value on the child. The operation controls the assignment of the value. * * @method Phaser.Group#setProperty * @param {*} child - The child to set the property value on. * @param {array} key - An array of strings that make up the property that will be set. * @param {*} value - The value that will be set. * @param {number} [operation=0] - Controls how the value is assigned. A value of 0 replaces the value with the new one. A value of 1 adds it, 2 subtracts it, 3 multiplies it and 4 divides it. */ Phaser.Group.prototype.setProperty = function (child, key, value, operation) { operation = operation || 0; // As ugly as this approach looks, and although it's limited to a depth of only 4, it's extremely fast. // Much faster than a for loop or object iteration. There are no checks, so if the key isn't valid then it'll fail // but as you are likely to call this from inner loops that have to perform well, I'll take that trade off. // 0 = Equals // 1 = Add // 2 = Subtract // 3 = Multiply // 4 = Divide var len = key.length; if (len == 1) { if (operation === 0) { child[key[0]] = value; } else if (operation == 1) { child[key[0]] += value; } else if (operation == 2) { child[key[0]] -= value; } else if (operation == 3) { child[key[0]] *= value; } else if (operation == 4) { child[key[0]] /= value; } } else if (len == 2) { if (operation === 0) { child[key[0]][key[1]] = value; } else if (operation == 1) { child[key[0]][key[1]] += value; } else if (operation == 2) { child[key[0]][key[1]] -= value; } else if (operation == 3) { child[key[0]][key[1]] *= value; } else if (operation == 4) { child[key[0]][key[1]] /= value; } } else if (len == 3) { if (operation === 0) { child[key[0]][key[1]][key[2]] = value; } else if (operation == 1) { child[key[0]][key[1]][key[2]] += value; } else if (operation == 2) { child[key[0]][key[1]][key[2]] -= value; } else if (operation == 3) { child[key[0]][key[1]][key[2]] *= value; } else if (operation == 4) { child[key[0]][key[1]][key[2]] /= value; } } else if (len == 4) { if (operation === 0) { child[key[0]][key[1]][key[2]][key[3]] = value; } else if (operation == 1) { child[key[0]][key[1]][key[2]][key[3]] += value; } else if (operation == 2) { child[key[0]][key[1]][key[2]][key[3]] -= value; } else if (operation == 3) { child[key[0]][key[1]][key[2]][key[3]] *= value; } else if (operation == 4) { child[key[0]][key[1]][key[2]][key[3]] /= value; } } } /** * This function allows you to quickly set a property on a single child of this Group to a new value. * The operation parameter controls how the new value is assigned to the property, from simple replacement to addition and multiplication. * * @method Phaser.Group#set * @param {Phaser.Sprite} child - The child to set the property on. * @param {string} key - The property, as a string, to be set. For example: 'body.velocity.x' * @param {*} value - The value that will be set. * @param {boolean} [checkAlive=false] - If set then the child will only be updated if alive=true. * @param {boolean} [checkVisible=false] - If set then the child will only be updated if visible=true. * @param {number} [operation=0] - Controls how the value is assigned. A value of 0 replaces the value with the new one. A value of 1 adds it, 2 subtracts it, 3 multiplies it and 4 divides it. */ Phaser.Group.prototype.set = function (child, key, value, checkAlive, checkVisible, operation) { key = key.split('.'); if (typeof checkAlive === 'undefined') { checkAlive = false; } if (typeof checkVisible === 'undefined') { checkVisible = false; } if ((checkAlive === false || (checkAlive && child.alive)) && (checkVisible === false || (checkVisible && child.visible))) { this.setProperty(child, key, value, operation); } } /** * This function allows you to quickly set the same property across all children of this Group to a new value. * The operation parameter controls how the new value is assigned to the property, from simple replacement to addition and multiplication. * * @method Phaser.Group#setAll * @param {string} key - The property, as a string, to be set. For example: 'body.velocity.x' * @param {*} value - The value that will be set. * @param {boolean} [checkAlive=false] - If set then only children with alive=true will be updated. * @param {boolean} [checkVisible=false] - If set then only children with visible=true will be updated. * @param {number} [operation=0] - Controls how the value is assigned. A value of 0 replaces the value with the new one. A value of 1 adds it, 2 subtracts it, 3 multiplies it and 4 divides it. */ Phaser.Group.prototype.setAll = function (key, value, checkAlive, checkVisible, operation) { key = key.split('.'); if (typeof checkAlive === 'undefined') { checkAlive = false; } if (typeof checkVisible === 'undefined') { checkVisible = false; } operation = operation || 0; for (var i = 0, len = this.children.length; i < len; i++) { if ((!checkAlive || (checkAlive && this.children[i].alive)) && (!checkVisible || (checkVisible && this.children[i].visible))) { this.setProperty(this.children[i], key, value, operation); } } } /** * Adds the amount to the given property on all children in this Group. * Group.addAll('x', 10) will add 10 to the child.x value. * * @method Phaser.Group#addAll * @param {string} property - The property to increment, for example 'body.velocity.x' or 'angle'. * @param {number} amount - The amount to increment the property by. If child.x = 10 then addAll('x', 40) would make child.x = 50. * @param {boolean} checkAlive - If true the property will only be changed if the child is alive. * @param {boolean} checkVisible - If true the property will only be changed if the child is visible. */ Phaser.Group.prototype.addAll = function (property, amount, checkAlive, checkVisible) { this.setAll(property, amount, checkAlive, checkVisible, 1); } /** * Subtracts the amount from the given property on all children in this Group. * Group.subAll('x', 10) will minus 10 from the child.x value. * * @method Phaser.Group#subAll * @param {string} property - The property to decrement, for example 'body.velocity.x' or 'angle'. * @param {number} amount - The amount to subtract from the property. If child.x = 50 then subAll('x', 40) would make child.x = 10. * @param {boolean} checkAlive - If true the property will only be changed if the child is alive. * @param {boolean} checkVisible - If true the property will only be changed if the child is visible. */ Phaser.Group.prototype.subAll = function (property, amount, checkAlive, checkVisible) { this.setAll(property, amount, checkAlive, checkVisible, 2); } /** * Multiplies the given property by the amount on all children in this Group. * Group.multiplyAll('x', 2) will x2 the child.x value. * * @method Phaser.Group#multiplyAll * @param {string} property - The property to multiply, for example 'body.velocity.x' or 'angle'. * @param {number} amount - The amount to multiply the property by. If child.x = 10 then multiplyAll('x', 2) would make child.x = 20. * @param {boolean} checkAlive - If true the property will only be changed if the child is alive. * @param {boolean} checkVisible - If true the property will only be changed if the child is visible. */ Phaser.Group.prototype.multiplyAll = function (property, amount, checkAlive, checkVisible) { this.setAll(property, amount, checkAlive, checkVisible, 3); } /** * Divides the given property by the amount on all children in this Group. * Group.divideAll('x', 2) will half the child.x value. * * @method Phaser.Group#divideAll * @param {string} property - The property to divide, for example 'body.velocity.x' or 'angle'. * @param {number} amount - The amount to divide the property by. If child.x = 100 then divideAll('x', 2) would make child.x = 50. * @param {boolean} checkAlive - If true the property will only be changed if the child is alive. * @param {boolean} checkVisible - If true the property will only be changed if the child is visible. */ Phaser.Group.prototype.divideAll = function (property, amount, checkAlive, checkVisible) { this.setAll(property, amount, checkAlive, checkVisible, 4); } /** * Calls a function on all of the children that have exists=true in this Group. * After the existsValue parameter you can add as many parameters as you like, which will all be passed to the child callback. * * @method Phaser.Group#callAllExists * @param {function} callback - The function that exists on the children that will be called. * @param {boolean} existsValue - Only children with exists=existsValue will be called. * @param {...*} parameter - Additional parameters that will be passed to the callback. */ Phaser.Group.prototype.callAllExists = function (callback, existsValue) { var args = Array.prototype.splice.call(arguments, 2); for (var i = 0, len = this.children.length; i < len; i++) { if (this.children[i].exists === existsValue && this.children[i][callback]) { this.children[i][callback].apply(this.children[i], args); } } } /** * Returns a reference to a function that exists on a child of the Group based on the given callback array. * * @method Phaser.Group#callbackFromArray * @param {object} child - The object to inspect. * @param {array} callback - The array of function names. * @param {number} length - The size of the array (pre-calculated in callAll). * @protected */ Phaser.Group.prototype.callbackFromArray = function (child, callback, length) { // Kinda looks like a Christmas tree if (length == 1) { if (child[callback[0]]) { return child[callback[0]]; } } else if (length == 2) { if (child[callback[0]][callback[1]]) { return child[callback[0]][callback[1]]; } } else if (length == 3) { if (child[callback[0]][callback[1]][callback[2]]) { return child[callback[0]][callback[1]][callback[2]]; } } else if (length == 4) { if (child[callback[0]][callback[1]][callback[2]][callback[3]]) { return child[callback[0]][callback[1]][callback[2]][callback[3]]; } } else { if (child[callback]) { return child[callback]; } } return false; } /** * Calls a function on all of the children regardless if they are dead or alive (see callAllExists if you need control over that) * After the method parameter and context you can add as many extra parameters as you like, which will all be passed to the child. * * @method Phaser.Group#callAll * @param {string} method - A string containing the name of the function that will be called. The function must exist on the child. * @param {string} [context=null] - A string containing the context under which the method will be executed. Set to null to default to the child. * @param {...*} parameter - Additional parameters that will be passed to the method. */ Phaser.Group.prototype.callAll = function (method, context) { if (typeof method === 'undefined') { return; } // Extract the method into an array method = method.split('.'); var methodLength = method.length; if (typeof context === 'undefined' || context === null || context === '') { context = null; } else { // Extract the context into an array if (typeof context === 'string') { context = context.split('.'); var contextLength = context.length; } } var args = Array.prototype.splice.call(arguments, 2); var callback = null; var callbackContext = null; for (var i = 0, len = this.children.length; i < len; i++) { callback = this.callbackFromArray(this.children[i], method, methodLength); if (context && callback) { callbackContext = this.callbackFromArray(this.children[i], context, contextLength); if (callback) { callback.apply(callbackContext, args); } } else if (callback) { callback.apply(this.children[i], args); } } } /** * The core preUpdate - as called by World. * @method Phaser.Group#preUpdate * @protected */ Phaser.Group.prototype.preUpdate = function () { if (!this.exists || !this.parent.exists) { this.renderOrderID = -1; return false; } var i = this.children.length; while (i--) { this.children[i].preUpdate(); } return true; } /** * The core update - as called by World. * @method Phaser.Group#update * @protected */ Phaser.Group.prototype.update = function () { var i = this.children.length; while (i--) { this.children[i].update(); } } /** * The core postUpdate - as called by World. * @method Phaser.Group#postUpdate * @protected */ Phaser.Group.prototype.postUpdate = function () { // Fixed to Camera? if (this._cache[7] === 1) { this.x = this.game.camera.view.x + this.cameraOffset.x; this.y = this.game.camera.view.y + this.cameraOffset.y; } var i = this.children.length; while (i--) { this.children[i].postUpdate(); } } /** * Allows you to call your own function on each member of this Group. You must pass the callback and context in which it will run. * After the checkExists parameter you can add as many parameters as you like, which will all be passed to the callback along with the child. * For example: Group.forEach(awardBonusGold, this, true, 100, 500) * Note: Currently this will skip any children which are Groups themselves. * * @method Phaser.Group#forEach * @param {function} callback - The function that will be called. Each child of the Group will be passed to it as its first parameter. * @param {Object} callbackContext - The context in which the function should be called (usually 'this'). * @param {boolean} checkExists - If set only children with exists=true will be passed to the callback, otherwise all children will be passed. */ Phaser.Group.prototype.forEach = function (callback, callbackContext, checkExists) { if (typeof checkExists === 'undefined') { checkExists = false; } var args = Array.prototype.splice.call(arguments, 3); args.unshift(null); for (var i = 0, len = this.children.length; i < len; i++) { if (!checkExists || (checkExists && this.children[i].exists)) { args[0] = this.children[i]; callback.apply(callbackContext, args); } } } /** * Allows you to call your own function on each member of this Group where child.exists=true. You must pass the callback and context in which it will run. * You can add as many parameters as you like, which will all be passed to the callback along with the child. * For example: Group.forEachExists(causeDamage, this, 500) * * @method Phaser.Group#forEachExists * @param {function} callback - The function that will be called. Each child of the Group will be passed to it as its first parameter. * @param {Object} callbackContext - The context in which the function should be called (usually 'this'). */ Phaser.Group.prototype.forEachExists = function (callback, callbackContext) { var args = Array.prototype.splice.call(arguments, 2); args.unshift(null); this.iterate('exists', true, Phaser.Group.RETURN_TOTAL, callback, callbackContext, args); } /** * Allows you to call your own function on each alive member of this Group (where child.alive=true). You must pass the callback and context in which it will run. * You can add as many parameters as you like, which will all be passed to the callback along with the child. * For example: Group.forEachAlive(causeDamage, this, 500) * * @method Phaser.Group#forEachAlive * @param {function} callback - The function that will be called. Each child of the Group will be passed to it as its first parameter. * @param {Object} callbackContext - The context in which the function should be called (usually 'this'). */ Phaser.Group.prototype.forEachAlive = function (callback, callbackContext) { var args = Array.prototype.splice.call(arguments, 2); args.unshift(null); this.iterate('alive', true, Phaser.Group.RETURN_TOTAL, callback, callbackContext, args); } /** * Allows you to call your own function on each dead member of this Group (where alive=false). You must pass the callback and context in which it will run. * You can add as many parameters as you like, which will all be passed to the callback along with the child. * For example: Group.forEachDead(bringToLife, this) * * @method Phaser.Group#forEachDead * @param {function} callback - The function that will be called. Each child of the Group will be passed to it as its first parameter. * @param {Object} callbackContext - The context in which the function should be called (usually 'this'). */ Phaser.Group.prototype.forEachDead = function (callback, callbackContext) { var args = Array.prototype.splice.call(arguments, 2); args.unshift(null); this.iterate('alive', false, Phaser.Group.RETURN_TOTAL, callback, callbackContext, args); } /** * Call this function to sort the group according to a particular value and order. * For example to depth sort Sprites for Zelda-style game you might call `group.sort('y', Phaser.Group.SORT_ASCENDING)` at the bottom of your `State.update()`. * * @method Phaser.Group#sort * @param {string} [index='z'] - The `string` name of the property you want to sort on. Defaults to the objects z-depth value. * @param {number} [order=Phaser.Group.SORT_ASCENDING] - The `Group` constant that defines the sort order. Possible values are Phaser.Group.SORT_ASCENDING and Phaser.Group.SORT_DESCENDING. */ Phaser.Group.prototype.sort = function (index, order) { if (this.children.length < 2) { // Nothing to swap return; } if (typeof index === 'undefined') { index = 'z'; } if (typeof order === 'undefined') { order = Phaser.Group.SORT_ASCENDING; } this._sortProperty = index; if (order === Phaser.Group.SORT_ASCENDING) { this.children.sort(this.ascendingSortHandler.bind(this)); } else { this.children.sort(this.descendingSortHandler.bind(this)); } this.updateZ(); } /** * An internal helper function for the sort process. * * @method Phaser.Group#ascendingSortHandler * @param {object} a - The first object being sorted. * @param {object} b - The second object being sorted. */ Phaser.Group.prototype.ascendingSortHandler = function (a, b) { if (a[this._sortProperty] < b[this._sortProperty]) { return -1; } else if (a[this._sortProperty] > b[this._sortProperty]) { return 1; } else { if (a.z < b.z) { return -1; } else { return 1; } } } /** * An internal helper function for the sort process. * * @method Phaser.Group#descendingSortHandler * @param {object} a - The first object being sorted. * @param {object} b - The second object being sorted. */ Phaser.Group.prototype.descendingSortHandler = function (a, b) { if (a[this._sortProperty] < b[this._sortProperty]) { return 1; } else if (a[this._sortProperty] > b[this._sortProperty]) { return -1; } else { return 0; } } /** * Iterates over the children of the Group. When a child has a property matching key that equals the given value, it is considered as a match. * Matched children can be sent to the optional callback, or simply returned or counted. * You can add as many callback parameters as you like, which will all be passed to the callback along with the child, after the callbackContext parameter. * * @method Phaser.Group#iterate * @param {string} key - The child property to check, i.e. 'exists', 'alive', 'health' * @param {any} value - If child.key === this value it will be considered a match. Note that a strict comparison is used. * @param {number} returnType - How to return the data from this method. Either Phaser.Group.RETURN_NONE, Phaser.Group.RETURN_TOTAL or Phaser.Group.RETURN_CHILD. * @param {function} [callback=null] - Optional function that will be called on each matching child. Each child of the Group will be passed to it as its first parameter. * @param {Object} [callbackContext] - The context in which the function should be called (usually 'this'). * @return {any} Returns either a numeric total (if RETURN_TOTAL was specified) or the child object. */ Phaser.Group.prototype.iterate = function (key, value, returnType, callback, callbackContext, args) { if (returnType === Phaser.Group.RETURN_TOTAL && this.children.length === 0) { return 0; } if (typeof callback === 'undefined') { callback = false; } var total = 0; for (var i = 0, len = this.children.length; i < len; i++) { if (this.children[i][key] === value) { total++; if (callback) { args[0] = this.children[i]; callback.apply(callbackContext, args); } if (returnType === Phaser.Group.RETURN_CHILD) { return this.children[i]; } } } if (returnType === Phaser.Group.RETURN_TOTAL) { return total; } else if (returnType === Phaser.Group.RETURN_CHILD) { return null; } } /** * Call this function to retrieve the first object with exists == (the given state) in the Group. * * @method Phaser.Group#getFirstExists * @param {boolean} state - True or false. * @return {Any} The first child, or null if none found. */ Phaser.Group.prototype.getFirstExists = function (state) { if (typeof state !== 'boolean') { state = true; } return this.iterate('exists', state, Phaser.Group.RETURN_CHILD); } /** * Call this function to retrieve the first object with alive === true in the group. * This is handy for checking if everything has been wiped out, or choosing a squad leader, etc. * * @method Phaser.Group#getFirstAlive * @return {Any} The first alive child, or null if none found. */ Phaser.Group.prototype.getFirstAlive = function () { return this.iterate('alive', true, Phaser.Group.RETURN_CHILD); } /** * Call this function to retrieve the first object with alive === false in the group. * This is handy for checking if everything has been wiped out, or choosing a squad leader, etc. * * @method Phaser.Group#getFirstDead * @return {Any} The first dead child, or null if none found. */ Phaser.Group.prototype.getFirstDead = function () { return this.iterate('alive', false, Phaser.Group.RETURN_CHILD); } /** * Returns the child at the top of this Group. The top is the one being displayed (rendered) above every other child. * * @method Phaser.Group#getTop * @return {Any} The child at the top of the Group. */ Phaser.Group.prototype.getTop = function () { if (this.children.length > 0) { return this.children[this.children.length - 1]; } } /** * Returns the child at the bottom of this Group. The bottom is the one being displayed (rendered) below every other child. * * @method Phaser.Group#getBottom * @return {Any} The child at the bottom of the Group. */ Phaser.Group.prototype.getBottom = function () { if (this.children.length > 0) { return this.children[0]; } } /** * Call this function to find out how many members of the group are alive. * * @method Phaser.Group#countLiving * @return {number} The number of children flagged as alive. */ Phaser.Group.prototype.countLiving = function () { return this.iterate('alive', true, Phaser.Group.RETURN_TOTAL); } /** * Call this function to find out how many members of the group are dead. * * @method Phaser.Group#countDead * @return {number} The number of children flagged as dead. */ Phaser.Group.prototype.countDead = function () { return this.iterate('alive', false, Phaser.Group.RETURN_TOTAL); } /** * Returns a member at random from the group. * * @method Phaser.Group#getRandom * @param {number} startIndex - Optional offset off the front of the array. Default value is 0, or the beginning of the array. * @param {number} length - Optional restriction on the number of values you want to randomly select from. * @return {Any} A random child of this Group. */ Phaser.Group.prototype.getRandom = function (startIndex, length) { if (this.children.length === 0) { return null; } startIndex = startIndex || 0; length = length || this.children.length; return this.game.math.getRandom(this.children, startIndex, length); } /** * Removes the given child from this Group and sets its group property to null. * * @method Phaser.Group#remove * @param {Any} child - The child to remove. * @return {boolean} true if the child was removed from this Group, otherwise false. */ Phaser.Group.prototype.remove = function (child) { if (this.children.length === 0) { return; } if (child.events) { child.events.onRemovedFromGroup.dispatch(child, this); } this.removeChild(child); this.updateZ(); if (this.cursor === child) { this.next(); } return true; } /** * Removes all children from this Group, setting all group properties to null. * The Group container remains on the display list. * * @method Phaser.Group#removeAll */ Phaser.Group.prototype.removeAll = function () { if (this.children.length === 0) { return; } do { if (this.children[0].events) { this.children[0].events.onRemovedFromGroup.dispatch(this.children[0], this); } this.removeChild(this.children[0]); } while (this.children.length > 0); this.cursor = null; } /** * Removes all children from this Group whos index falls beteen the given startIndex and endIndex values. * * @method Phaser.Group#removeBetween * @param {number} startIndex - The index to start removing children from. * @param {number} endIndex - The index to stop removing children from. Must be higher than startIndex and less than the length of the Group. */ Phaser.Group.prototype.removeBetween = function (startIndex, endIndex) { if (this.children.length === 0) { return; } if (startIndex > endIndex || startIndex < 0 || endIndex > this.children.length) { return false; } for (var i = startIndex; i < endIndex; i++) { if (this.children[i].events) { this.children[i].events.onRemovedFromGroup.dispatch(this.children[i], this); } this.removeChild(this.children[i]); if (this.cursor === this.children[i]) { this.cursor = null; } } this.updateZ(); } /** * Destroys this Group. Removes all children, then removes the container from the display list and nulls references. * * @method Phaser.Group#destroy * @param {boolean} [destroyChildren=true] - Should every child of this Group have its destroy method called? */ Phaser.Group.prototype.destroy = function (destroyChildren) { if (this.game === null) { return; } if (typeof destroyChildren === 'undefined') { destroyChildren = true; } if (destroyChildren) { if (this.children.length > 0) { do { if (this.children[0].parent) { this.children[0].destroy(destroyChildren); } } while (this.children.length > 0); } } else { this.removeAll(); } this.parent.removeChild(this); this.game = null; this.exists = false; this.cursor = null; } /** * @name Phaser.Group#total * @property {number} total - The total number of children in this Group who have a state of exists = true. * @readonly */ Object.defineProperty(Phaser.Group.prototype, "total", { get: function () { return this.iterate('exists', true, Phaser.Group.RETURN_TOTAL); } }); /** * @name Phaser.Group#length * @property {number} length - The total number of children in this Group, regardless of their exists/alive status. * @readonly */ Object.defineProperty(Phaser.Group.prototype, "length", { get: function () { return this.children.length; } }); /** * The angle of rotation of the Group container. This will adjust the Group container itself by modifying its rotation. * This will have no impact on the rotation value of its children, but it will update their worldTransform and on-screen position. * @name Phaser.Group#angle * @property {number} angle - The angle of rotation given in degrees, where 0 degrees = to the right. */ Object.defineProperty(Phaser.Group.prototype, "angle", { get: function() { return Phaser.Math.radToDeg(this.rotation); }, set: function(value) { this.rotation = Phaser.Math.degToRad(value); } }); /** * A Group that is fixed to the camera uses its x/y coordinates as offsets from the top left of the camera. These are stored in Group.cameraOffset. * Note that the cameraOffset values are in addition to any parent in the display list. * So if this Group was in a Group that has x: 200, then this will be added to the cameraOffset.x * * @name Phaser.Group#fixedToCamera * @property {boolean} fixedToCamera - Set to true to fix this Group to the Camera at its current world coordinates. */ Object.defineProperty(Phaser.Group.prototype, "fixedToCamera", { get: function () { return !!this._cache[7]; }, set: function (value) { if (value) { this._cache[7] = 1; this.cameraOffset.set(this.x, this.y); } else { this._cache[7] = 0; } } }); // Documentation stubs /** * The x coordinate of the Group container. You can adjust the Group container itself by modifying its coordinates. * This will have no impact on the x/y coordinates of its children, but it will update their worldTransform and on-screen position. * @name Phaser.Group#x * @property {number} x - The x coordinate of the Group container. */ /** * The y coordinate of the Group container. You can adjust the Group container itself by modifying its coordinates. * This will have no impact on the x/y coordinates of its children, but it will update their worldTransform and on-screen position. * @name Phaser.Group#y * @property {number} y - The y coordinate of the Group container. */ /** * The angle of rotation of the Group container. This will adjust the Group container itself by modifying its rotation. * This will have no impact on the rotation value of its children, but it will update their worldTransform and on-screen position. * @name Phaser.Group#rotation * @property {number} rotation - The angle of rotation given in radians. */ /** * @name Phaser.Group#visible * @property {boolean} visible - The visible state of the Group. Non-visible Groups and all of their children are not rendered. */ /** * @name Phaser.Group#alpha * @property {number} alpha - The alpha value of the Group container. */


Markt, Wageningen
An observation of public life during COVID-19
LIGHT
|
DETAIL
|
POETICS
|
ESSAY
|
FLICKR
Sensing Place - Photography as Inquiry
Tianyu Su
Class by Professor Anne Whiston Spirn, MIT Boston


Majoring in Computer Science and Psychology From New York City, NY Weak for desserts Wants to become a Software Engineer Class of 2019
Jasper Park
Majoring in Cognitive Brain Science From Alexandria, VA Likes to play/listen to rock music Pursuing a career in consumer research Class of 2019
Michelle Feng
Majoring in English and Computer Science From Beijing, China Loves 20th century literature Very unsure about the future Class of 2019
Kevin Bae
Majoring in Computer Science From Norwood, NJ Loves trying new restaurants Wants to become a Software Engineer or Cyber Security Engineer Class of 2020
Busy Monitor informs students on how busy key campus locations are by tracking their live network traffic. The application was created by Kevin Bae, Michelle Feng, Jennifer Leung, and Jasper Park, as part of a COMP 20 group project.


|
Nana - a C++ framework project The Programmer's Guide |
||
|
NAME Description a widget_object is a base class of all the classes defined as a root window. Model of Root Window Public base classes widget Members Notes 1. A form is different with other window widgets, its default constructor may create the window. See also None. Move to The Nana Programmer's Guide Main Page |
||


Total Projects
Completed Task
Ongoing Projects
Successful Task
Total Revenue
Total Requests
Requests Answered
Support Cost
| ID | Name | Salary | Country |
|---|---|---|---|
| 1 | Bob Williams | $23,566 | USA |
| 2 | Mike Tyson | $10,200 | Canada |
| 3 | Tim Sebastian | $32,190 | Netherlands |
| 4 | Philip Morris | $31,123 | Korea, South |
| 5 | Minerva Hooper | $23,789 | South Africa |
| 6 | Rebacca Weirer | $23,789 | USA |
| 7 | James Rohn | $23,789 | Canada |
| 8 | Rohn James | 32,145 | Russia |


Hi, my name is Daniel Haynes and I am a self taught Software Engineer with 5 years of industry experience ranging from Front-End Development to developing 2D and 3D games in Unity. I started my career in Quality Assurance and quickly found a passion for programming. By teaching myself programming during nights and weekends I was able to seize an opportunity at Age of Learning, Inc and work my way into a Front-End Developer position. Since then I have been actively pursuing my Bachelors of Science in Computer Science.
At Age of Learning, Inc I developed 18 serious educational games using the Unity Game Engine.
The games were strongly focused on education and curriculum.
However, the games excelled at engaging players with beautiful visuals and clever game design.
Here is an example of one of the games I am most proud of Wizard Defender!
Age of Learning
As a Front-End Developer at Age of Learning I had two major projects I worked on.
The first project I worked on was creating a game framework in JavaScript that allowed the Games Department to create games rapidly and uniformly.
Second, I helped lead the team in converting our flash games into HTML5 games. We were successful in doing this by using vanilla JavaScript,
and by utilizing the game framework and an internal animation tool.
Age of Learning
Slide Dungeon was the first game I decided on taking further than a prototype. It was a passion project of mine,
where I combined game mechanics from games I love: Threes! and Card Crawl. You move the hero around the board for
as long as you can, while dodging skulls and collecting as much loot as possible!
Play here!
RGB 9 was the first game that I published to the App Store. I spent whatever time I had after work developing it, which lead to many long nights.
I presented it to boss at Age of Learning to convinve her to give me a chance to fill the open Front-End Developer position.
And as they say, the rest is history!
RGB 9 was created in Xcode using Objective-C and the SpriteKit framework.
Fume is a game that targets the endless game fan. Simple, fun and addictive!
Fume was created in Unity over the weekend for a friendly game jam.
Play here!
Lorem ipsum dolor sit amet, consectetur adipisicing elit. Mollitia neque assumenda ipsam nihil, molestias magnam, recusandae quos quis inventore quisquam velit asperiores, vitae? Reprehenderit soluta, eos quod consequuntur itaque. Nam.
Close Project


Sawan Satyanarayan and Ashi Hanspal clinch honours at national karting championship
by Special CorrespondentBengaluru’s Sawan Satyanarayan emerged champion in the seniors category clocking 9:13.764 in 12 laps of the JK Tyre FMSCI National karting championship here.
Hyderabad’s Adheet Prashar (9:16.366) finished second and Vulli Gopal third.
Make the grade
All the three have qualified for the final round of the championship to be held in Chennai in the third week of December.
Akshay Hoover, Hari Gopal Nayak and Pramil Singh, who finished with fourth, fifth and sixth, were also handed drives in the finals.
In the girls’ class, Ashi Hanspal reigned supreme, with a timing of 10:57.406 minutes to finish the race. Muskan Jubbal finished second (10:57.839), while Kadambari of Nagpur (11:04.767) finished third.
Delhi’s Jashmehar Jubbal took the top honours in the juniors category with a timing of 9:29.538 while Agnishwar Verma of Chennai was with 9:32.888) and Vulli Gopal of Hyderabad third clocking 9:35.136).
Apart from these three, Jubbal had qualified in the opening round itself, Rahul Reddy, Aadithya Raja, Jasmeh Singh Dingra and Muskan booked a ticket for the finals.


Elizabeth Warren calls for review of Canada's protections of endangered right whales
by The Canadian Press, StaffHALIFAX -- Two U.S. senators from Massachusetts, including presidential candidate Elizabeth Warren, are calling for an investigation of Canada's regulatory measures to protect the North Atlantic right whale.
Democrat senators Edward Markey and Warren sent a letter this week to the National Oceanic and Atmospheric Administration arguing Canadian rules for protecting the endangered whales are less strict than those in the United States.
Their request notes New England lobster fishermen are currently responding to a federal plan that reduces the amount of rope in the water and requires lines that break more easily.
A necropsy of a male right whale discovered off Long Island, N.Y., on Sept. 16 concluded it likely died due to entanglement in trap lines.
The whale was last spotted in late August in the Gulf of St. Lawrence and was entangled in lines at that time.
As of Nov. 3, eight right whales were known to have died in Canadian waters this year out of an endangered population numbering about 400 animals.
The senators say if Canada's rules are shown to be less stringent than those in the United States, then the U.S. government should consider restricting imports of Canadian fishery products.
The Canadian Press first published this story on Nov. 15, 2019.


Download and Install: obs-websocket plugin
Mainly used for TouchOSC Example: Configure "OSC OUT" to target Application When Enabled his allows OBS to send OSC to other applications when a scene is activated. To use/enable this function, change the toggle button to ON
Configure the prefix and suffix for how you want your OSC application to receive an OSC string from OBS
Application OSC -> OBSosc
<IP_ADDRESS>
, Port: 3333
OSC Command List:
- Trigger Scenes: -
by Name in Argument
/scene [scene name]
/scene Wide
will activate a scene named "Wide" in OBS./scene Webcam 1
is valid syntax/scene "Webcam 1"
by Index as Scene
/scene [index number]
/scene 1
will activate the first scene in OBS.
/scene 1.9
= /scene 1
by Name in Address
/scene/[scene_name]
/scene/Wide
will activate a scene named "Wide" in OBS./scene/Webcam_1
Next Scene
/go
Previous Scene
/back
- Set Transition Type and Duration: -
/[type]/transition [duration]
/Cut/transition
will change the current Scene Transition to "Cut". /Fade/transition 5000
will set the current Scene Transition to "Fade" with a "5000" millisecond duration (5 seconds).
[type]
must be identical to Transition Type name in OBS:
Fade
, Cut
, Stinger
, Fade_to_Color
, Luma_Wipe
, Slide
, Swipe
, and Custom Transition Names. This also works with the Move
plugin.- Set Source Visibility On/Off: -
/[scene_name]/[source_name]/visible [0 or 1]
/Webcam_1/Audio_Input_Capture/visible 0
will turn OFF "Audio Input Capture" source in OBS from scene "Webcam 1". Where as /Webcam_1/Text_1/visible 1
will turn it ON.- Set Filter Visibility On/Off: -
/[scene_name]/[source_name]/filterVisibility [0 or 1]
/Video_Input/Color_Correction/filterVisibiltity 0
will turn OFF filter named "Color Correction" in OBS from source "Video Input". Where as /Video_Input/Color_Correction/filterVisibility 1
will turn it ON.- Set Opacity: -
/[source_name]/[color_correction_filter_name]/opacity [0 thru 100]
/Text_1/Color_Correction/opacity 0.5
will make "Text 1" half transparent.- Set "Color Correction" Filter Properties: -
Gamma
/[source_name]/[color_correction_filter_name]/gamma [-3 thru 3]
0
is the default vaule/Text_1/Color_Correction/gamma 3
will make "Text 1" gamma at highest setting.Contrast
/[source_name]/[color_correction_filter_name]/contrast [-2 thru 2]
0
is the default vaule/Text_1/Color_Correction/contrast 2
will make "Text 1" contrast at highest setting.Brightness
/[source_name]/[color_correction_filter_name]/brightness [-1 thru 1]
0
is the default vaule/Text_1/Color_Correction/brightness 1
will make "Text 1" brightness at highest setting.Saturation
/[source_name]/[color_correction_filter_name]/saturation [-1 thru 5]
0
is the default vaule/Text_1/Color_Correction/contrast 5
will make "Text 1" saturation at highest setting.Hue Shift
/[source_name]/[color_correction_filter_name]/hueShift [-180 thru 180]
0
is the default vaule/Text_1/Color_Correction/contrast 180
will make "Text 1" hue shift at highest setting.- Translate Source's Position: -
/[scene_name]/[source_name]/position [x] [y]
/Webcam_1/Text_1/position 0 0
this changes the source to center of the screen, as long as the alignment is cewnter. See "Qlab OSC Examples" file for how to automate positions.- Translate Source's Scale: -
/[scene_name]/[source_name]/scale [float]
0
is nothing, 1
is original full size. Negative numbers will invert the source. Numbers larger than "1" will be larger than original size.
/Webcam_1/Text_1/scale 2
this will make the size of the "Text 1" source double the size of original.- Translate Source's Rotation: -
/[scene_name]/[source_name]/rotate [float]
0
is nothing, 360
is full 360 rotation clockwise. Negative numbers will rotate counterclockwise. Numbers larger than "360" will be more roations.
/Webcam_1/Text_1/rotate 90
this will make the rotation of the "Text 1" source 90º clockwise.- Audio Controls: -
Mute
/[source_name]/mute
Unmute
/[source_name]/unmute
Volume
/[source_name]/volume [0 thru 1]
/Audio_Input/volume 0.5
sets source "Audio_Input" audio to 50% volumeMonitor Off
/[source_name]/monitorOff
/Audio_Input/monitorOff
sets audio source "Audio Input" to "Monitor Off".Monitor Only
/[source_name]/monitorOnly
/Audio_Input/monitorOnly
sets audio source "Audio Input" to "Monitor Only".Monitor and Output
/[source_name]/monitorAndOutput
/Audio_Input/monitorAndOutput
sets audio source "Audio Input" to "Monitor and Output".- Media Controls: -
Play
/[source_name]/mediaPlay
Pause
/[source_name]/mediaPause
Restart
/[source_name]/mediaRestart
Stop
/[source_name]/mediaStop
- Browser Controls: -
/[browser_source]/refreshBrowser
- Projector Controls: -
/[type]/openProjector [display_number] [sceneorsource_name]
[type]
options:
StudioProgram
, Multiview
, Preview
, Scene
, Source
[display_number]
is an integer
0
would be your main screen and 1
would be your secondary monitor-1
or empty(null
), then this would make a windowed projector of specified [type]
[sceneorsource_name]
is an optional for the 2nd argument. This can ONLY be used if using Scene
or Source
for [type]
/StudioProgram/openProjector 1
/Preview/openProjector
/Scene/openProjector 0 "Scene 1"
/Multiview/openProjector -1
- Studio Mode: -
Enable
/enableStudioMode
Disable
/disableStudioMode
Toggle
/toggleStudioMode
- Streaming and Recording: -
Start Recording
/startRecording
Stop Recording
/stopRecording
Toggle Recording
/toggleRecording
Pause Recording
/pauseRecording
Resume Recording
/resumeRecording
Start Streaming
/startStreaming
Stop Streaming
/stopStreaming
Toggle Streaming
/toggleStreaming
~ Editing Commands While Selected in OBS: ~
Add Scene Item
/addSceneItem [scene_item]
Change Transition Override Type
/transOverrideType/[type]
[type]
must be identical to Transition Override Type name in OBS:Fade
, Cut
, Stinger
, Fade_to_Color
, Luma_Wipe
, Slide
, Swipe
, and a Custom Named
Transition. This also works with the Move
plugin./transOverrideType/Fade_to_Color
will set the Transition Override of the selected Scene in OBS to "Fade to Color"Change Transition Override Duration
/transOverrideDuration [duration]
/transOverrideDuration 2500
will set the Transition Override duration for the selected Scene in OBS to 2.5 seconds.Change Scale
/size [float]
[float]
can take a value with decimal.
0
is nothing, 0.5
is half the size, 1
is original full size. Negative numbers will invert the source. Numbers more than "1" will be larger than original size.Change Position X and Y
/move [x] [y]
Change Position X
/movex [x]
Change Position Y
/movey [y]
Change Alignment
/align [int]
/align 0
will center the selected OBS Source[int]
would be an integer value from this guide:
10
8
9
2
0
1
6
4
5
OBS -> Application:


The time our engineers experiment, innovate and learn interruption-free. Across teams or alone, but always without limits! A SUSE tradition since 2007, Hack Week has brought together hundreds of hackers at the SUSE engineering sites around the globe to collaborate on open source.


dengue Hong model cases Kong rainfall OpenUrl climate annual effects number using mean monthly temperature data incidence &; year MSE areas predictors Fig. area best-fitting total CrossRef stations weather local outbreaks used case defined mixed models observed outbreak predicted risk study area-specific Asian Available Dengue New Table model. East Kong. confidence different fever recent Trop. View factors mosquito new order represent seasonal selected years (Supplementary August Climate Dis. Download Poisson control distribution estimated fixed highest max observations random ratio results southern summer values ./journal.pntd.. Aedes Environ. Figure NTN, Taiwan Territories automatic better effect high infections linear measures normalised parameters set transmission AICc HKL Health Medicine Neglected S). account compared confirmed disease early generalized higher increasing intervals located monsoon months mosquitoes occurred population pre-defined spatial variables Government Information Island Kowloon Lee, Model: NTS, Open Sci. abundance alternative areas. association cases, data-hide-link-title=""> data-icon-position="" denote development epidemics expansion figure fitting given global increase indicating infection lead leave-one-out maximum model, numbers parameter particular performed period predictor produced region relative tab time tot validation (a) (b) (or (the ;The Administrative Criterion Guangzhou, Heal. Int. January LOOCV Model NMSE NTS Observed Region. Science Special Web assigned available average based cases. chosen city coefficients considered countries cross-validation cross-validation. daily dengue. density, divided environmental fitted forecast heterogeneity island large leave-one-year-out likelihood lower major negatively observation occur performance positive predict rainfall. rainy rates regression retrieved season sporadic subtropical successfully training variability variation vector


Two years after coup, Zimbabweans grow more despondent
HARARE: Two years ago, Linos Mutepera was among hundreds of thousands of Zimbabweans who celebrated the toppling of long-time ruler Robert Mugabe with tears of joy.
Today, he looks back at that time with bitterness, his hope of a better life dashed on the rocks of poverty and joblessness.
"We were all there - the young, the old, the rich, the poor, blacks, whites and mixed race - waving the Zimbabwean flag, holding banners, hoisting placards, singing, dancing, praying together, holding each other's arms and hugging," he reminisced.
"We thought it was an end at last of an era that had been marked by poverty, joblessness, shortages, army and police brutality," the 33-year-old unemployed engineering graduate told AFP.
"How wrong we were."
Mutepera, sitting beside a friend hawking clothes at a Harare flea market, pointed bleakly to the promises made by Mugabe's successor, Emmerson Mnangagwa, to rebuild Zimbabwe's shattered economy.
"We were used," he said. "I feel so let down, so betrayed. But at least I am wiser."
Mugabe came to power in 1980, surfing on his reputation as the guerrilla leader who had steered colonial-era Rhodesia to independence, ending white-minority rule.
By November 2018, the smell of corruption and cronyism that infected his regime prompted the military to take over - a coup code-named Operation Restore Legacy.
"SQUARE ONE"
He was replaced as president by Mnangagwa, his former deputy, whom he had fired weeks earlier. The military supremo and face of the coup, General Constantino Chiwenga, became one of his deputies.
The following July, Mnangagwa won disputed elections on pledges to lure foreign investment, create jobs and turn the country into a middle-income economy by 2030.
But Zimbabwe's nightmares returned within months, as shoppers battled daily shortages of basics such as fuel, cooking oil, sugar and bread.
Unemployment today is over 90 per cent while the size of the economy has more than halved since 2000, when Mugabe's seizure of white-owned farms crippled Zimbabwean agriculture.
Inflation runs into triple digits, electricity is available for just six hours a day and in many urban areas, the taps are dry.
"Things have basically got worse," Professor Tony Hawkins of the University of Zimbabwe's School of Economics told AFP.
"People are getting poorer and thousands are losing jobs," he said.
"The economy has got worse and politically, nothing has changed except that the military are much more visible and much more powerful.
"Basically, it's back to square one, with a change of driver but the same bus or taxi."
"MIRAGE"
Alex Magaisa, a lecturer at the University of Kent in England, said Mnangagwa's promise of a new dawn had become "nothing more than a mirage."
A spokesman for the opposition Movement for Democratic Change (MDC), Daniel Molokele, said Zimbabweans had mistakenly believed Mugabe's removal would end the country's woes.
"The euphoria that we saw in 2017 was not for the ascendancy of Mnangagwa but for the fall of Mugabe - and people also thought it meant the fall of the entire system created by Mugabe," he said.
"Two years later there is hopelessness, there is despondency, there is disappointment.
"People would rather go back to 2017 not because Mugabe was better but because people are much more poorer. There is more corruption with cartels running sections of the economy. It's a classic case of jumping from the frying pan into a fire."
Molokele suggested a dialogue involving Zimbabweans "from all walks of life ... so that the people can determine the Zimbabwe they want."
Public fury at the state of the economy was an important factor in Mugabe's downfall.
That anger flared anew in January, when Mnangagwa more than doubled fuel prices, sparking protests that left at least 17 people dead and scores of injured.
Harare-based political analyst Alexander Rusero told AFP the November 2018 takeover had "never been for the good of the people.
"It's all about the political elite in (the ruling) ZANU-PF (party) and the preservation of their wealth," he said.
"The moment you have soldiers closing the barracks and joining politics, nothing good comes out of it."


The SailClear advance web notification service for clearance is now operational here. Users previously registered with the old eSeaClear system will find all their details have been carried over to the new system.
George Town Port Security should be called on VHF Channel 16 on entering Cayman Islands waters. It is is monitored 24 hours a day. They will notify Customs and Immigration and keep you informed regarding boarding of the yacht.
All vessels arriving in the Cayman Islands must first proceed to the George Town Port in Grand Cayman or the Cayman Brac Port for Customs Clearance.
Officials are extremely strict (but friendly!) and insist that procedures are followed to the letter; visiting boats have been fined for the smallest infringement.
Boats must fly the Q flag from the moment they enter territorial waters. Boats are usually visited by the mosquito control officer who will spray the inside of the boat, for which a charge is made (higher outside working hours).
Proceeding in person to the Customs Office for clearance on arrival is prohibited, unless authorized by Customs.
On boarding of vessel by Customs Officials for clearance all restricted or prohibited items must be declared and surrendered to Customs. See Customs below for details.
Evidence of clearance from last Port of Call must produced.
Office hours are Monday to Friday 8:30am to 5:00pm, 8:30am to12:30pm on Saturdays.
A special attendance fee is charged for vessels requesting clearance outside of the normal working hours.
Boats must clear in and out of every individual island.
On finally clearing out for a foreign destination, Immigration must be visited by all the crew no more than 5 hours before departure.
Last updated December 2015.
All visitors must have a passport valid beyond their stay.
See Official Cayman Island website for a list of countries whose nationals who require visas.
Nationals of countries which normally require a visa but who are permanent residents of the U.K., Canada or the USA are permitted entry without a visa.
Visa applications must be submitted to the nearest British Embassy or consulate with a visa section. Applications can take 2 weeks to process.
An initial stay of 30 days is usually granted which may be extended for up to 6 months provided proof of financial means/funding is submitted on arrival or at the Immigration department. An extension of up to a further six months may be granted on application.
Last updated December 2015.
Firearms are held by customs for the duration of the yacht's stay, unless a yacht is fitted with a proper safe, which can be sealed.
The list of prohibited items include:-
Any controlled or illegal drugs or utensils, obscene publications and articles, any goods or items depicting or bearing any reference to ganja (marijuana) or the plant, instruments and appliances for gambling. turtles, turtle meat and other turtle products.
Unless they are transit goods, the export of Lobster, Conch or conch meat in any form is prohibited.
Firearms, Ammunition, Bullet proof Vest and Gun powder are prohibited unless accompanied by an import permit and license signed by the Commissioner of Police.
Bows, pellet guns, catapults or other manually operated weapons which are capable of projecting arrows or other missiles are prohibited unless accompanied by an import permit and license signed by the Commissioner of Police.
Spear guns, Hawaiian slings and parts etc. are prohibited.
Also declare any stocks of alcohol and tobacco on the boat.
Live plants and plant cuttings, raw fruits and vegetables are restricted.
Spare parts can be imported for yachts in transit duty free as long as the import company or Customs officer has a copy of the boat's clearance documents.
Last updated December 2015.
Malaria still occurs occasionally and there are lots of mosquitoes and sandflies.
The main hospital is now part of a large Health Services Complex located in George Town, Grand Cayman. It has modern equipment and facilities and highly trained personnel. A 24 hour hyperbaric decompression chamber is available for divers and an air ambulance service for other emergencies. The telephone number is<PHONE_NUMBER>.
Faith Hospital, Cayman Brac. The number is<PHONE_NUMBER>/2245.
There is a small clinic in Little Cayman that can be reached at<PHONE_NUMBER>.
ZIKA VIRUS ALERT: There have been recent safety alerts from the US State Department, UK Foreign Office, and Center for Disease Control (CDC) regarding travel to parts of Central and South America, Africa, southern Asia, the Caribbean, and the South Pacific islands. The Cayman Islands are an area of interest with multiple reported cases and active virus transmission. There is growing concern about the rapid spread of the ZIKA Virus and the impact of the virus on pregnant women and babies. ZIKA is transmitted by mosquitos in tropical and sub-tropical climates, and there is currently no cure or vaccine. This situation is evolving rapidly, so please refer to the CDC’s dedicated website if you are intending to cruise in one of the effected areas.
Last updated September 2016.
Overtime fees are payable after normal working hours (0830-1700 Monday to Friday, 0830-1230 Saturday).
There is a small charge for the Customs forms. There is no charge for Immigration, but a charge of CI$50 for the initial extension of stay and CI$100 for the next.
A special attendance fee of CI$56 if arriving outside office hours.
There is a charge of CI$75 for mosquito spraying the boat outside working hours, otherwise it is free.
Last updated January 2016.
The Cayman Islands have a particularly rich marine life and so strict regulations are in force to protect its beauty. Many indigenous species are protected including sea turtles, iguanas and orchids. In the Marine Parks and Environmental Zones no marine life at all may be taken, although one may fish outside protected areas. There are permanent moorings on the west coast of Grand Cayman which is a popular diving area.
Anchoring: Yachts are to use fixed moorings only. Boats of less than 60 feet may anchor in sand, as long as no grappling hook is used and no coral is touched. Anchoring is permitted in designated anchorage areas and in replenishment zones.
The main restrictions are as follows:
Lobster: The closed season is February 1 to July 31. Only spiny lobster may be taken and six-inch tail length is the minimum size. There is a catch limit of five per person or 15 per boat per day, whichever is less.
Conch: There is a catch limit of 15 per person or 20 per boat per day, whichever is less. No one may buy or receive more than 20 conch from Cayman waters per day.
Grouper: Certain areas off the east end of each of the islands are protected for grouper spawning.
Penalties: A maximum fine of $5000 and one year in jail can be applied for contravening the regulations. Confiscation of the boat and other equipment may also be ordered. The protected areas and marine parks are clearly marked while full-time officers enforce the rules and can arrest offenders.
Please note that the Cayman Islands Law prohibits all forms of public nudity, including topless sunbathing. Many business places also request that you wear shoes and an appropriate cover-up before entering.
Pets must have an Import Licence or valid Animal Passport issued by the Cayman Islands Department of Agriculture, and an Official Health Certificate (issued within 14 days of arrival) The Health Certificate must state:-
Prohibited Breeds and Origin Countries - Breeds such as Malanois, Rottweiller, Japanese Tosa, Dogo Argentino, Fila Brazileiro, Chinese Shar-Pei, Pit Bull Terrior, Japanese Atiko, Staffordshire, Mastiff (all types) are not permitted in the Cayman Islands. Moreover all dogs and cats originating from Asia, Africa, South and Central America, Cuba, Puerto Rica, Haiti and the Dominican Republic are also prohibited.
Further information from Department of Agriculture, Veterinary Services, PO Box 459 GT, Grand Cayman Islands Tel:<PHONE_NUMBER> - Fax:<PHONE_NUMBER>.


We set out to create a travel agency in which you can explore some of the most amazing, serene places in the world. We offer competitive pricing and great planning. We hope you enjoy our services and make us your first stop for vacations and amazing get aways.


SVG tests
SVG directly in HTML with title and desc
SVG directly in HTML with title and desc (role=img)
SVG directly in HTML with title and desc (role=img/aria-labelledby/aria-describedby)
SVG directly in HTML with title and desc (role=img/aria-labelledby/role=presentation)
SVG directly in HTML with foreignObject
SVG via img src
SVG via embed
SVG via object
svgtext test


It's been three months since we open sourced React and it is going well. Some stats so far:
- 114 285 unique visitors on this website
- 1933 stars and 210 forks
- 226 posts on Google Group
- 76 Github projects using React
- 30 contributors
- 15 blog posts
- 2 early adopters: Khan Academy and Propeller
Wolfenstein Rendering Engine Ported to React #
Pete Hunt ported the render code of the web version of Wolfenstein 3D to React. Check out the demo and render.js file for the implementation.
React & Meteor #
Ben Newman made a 13-lines wrapper to use React and Meteor together. Meteor handles the real-time data synchronization between client and server. React provides the declarative way to write the interface and only updates the parts of the UI that changed.
This repository defines a Meteor package that automatically integrates the React rendering framework on both the client and the server, to complement or replace the default Handlebars templating system.
The React core is officially agnostic about how you fetch and update your data, so it is far from obvious which approach is the best. This package provides one answer to that question (use Meteor!), and I hope you will find it a compelling combination.
var MyComponent = React.createClass({ mixins: [MeteorMixin], getMeteorState: function() { return { foo: Session.get('foo') }; }, render: function() { return <div>{this.state.foo}</div>; } });
Dependencies will be registered for any data accesses performed by getMeteorState so that the component can be automatically re-rendered whenever the data changes.
React Page #
Jordan Walke implemented a complete React project creator called react-page. It supports both server-side and client-side rendering, source transform and packaging JSX files using CommonJS modules, and instant reload.
Easy Application Development with React JavaScript
Why Server Rendering?
- Faster initial page speed:
- Markup displayed before downloading large JavaScript.
- Markup can be generated more quickly on a fast server than low power client devices.
- Faster Development and Prototyping:
- Instantly refresh your app without waiting for any watch scripts or bundlers.
- Easy deployment of static content pages/blogs: just archive using recursive wget.
- SEO benefits of indexability and perf.
How Does Server Rendering Work?
react-page
computes page markup on the server, sends it to the client so the user can see it quickly.- The corresponding JavaScript is then packaged and sent.
- The browser runs that JavaScript, so that all of the event handlers, interactions and update code will run seamlessly on top of the server generated markup.
- From the developer's (and the user's) perspective, it's just as if the rendering occurred on the client, only faster.


PRIDE Converter 2 requires a protocol name to be provided, at minimum. Protocols can have multiple steps, and each step can be described with one or several CV terms. Please look at the templates provided with the tool for examples. The “Load” button can be used to load existing templates. A popup window will be shown, where users can select the desired template from a list. To save a template once all of the information is correctly entered, users simply need to enter a name (in this case, a protocol name) and click on the “Save” button. A file will be saved to the templates folder in the installation directory of PRIDE Converter 2. Should there already be a file with the same name, the user will be prompted to either rename the template or allow the existing one to be overwritten.
PRIDE Converter 2 provides the possibility to save commonly-used annotations such as sample, instrumentation and protocols as templates which can be reused in subsequent conversions. A set of basic templates is provided with the tool suite. Users can load and update templates to better suit their own requirements.


I am a Software Engineering graduate from San Jose State University. I specialize in Enterprise
Software Technology and Data Science.
I have an overall Industry experience of around 4 years in software development and support.
My professional and academic experience has helped me gain in-depth knowledge of various technologies
and software development methodologies in an enterprise.
I have worked on various projects which gave me hands-on developing scalable, RESTful enterprise-level
full stack applications that implement cloud infrastructure.
I am a Data Science enthusiast having worked on projects that implement Machine Learning concepts,
Data Visualization, Predictive Modeling, Data Mining, Large Scale Analytics, Recommender systems,
SQL, Python.
• Worked on backend infrastructure for onboarding critical AWS web services on the AWS web console Mobile App platform like
IAM, CloudTrail, ECS and API Gateway.
• Worked on reflection-based wrapper APIs in Java to efficiently retrieve data from AWS SDK.
• Developed Service Layout components for the backend-driven UI for the new services.
• Implemented data transformations in both Swift and Kotlin to process data on the native side.
• Built custom processors to aggregate/process data from multiple AWS public APIs using Java Completable
Futures.
• Developed unit tests for Java processors using the Mockito framework.
• Involved closely with stakeholders, service teams, PM and UX team to deliver improved customer experience.
• Design and development of Business functionalities using J2EE Technologies in Agile/Scrum Execution.
• Worked on an in-house application for insurance claim management using Spring/SprinBoot frameworks.
• Developed Front-end components using Java Server Pages and JavaScript.
• Used Spring MVC framework to enable the interactions between JSP/View layer and implemented different
design patterns with J2EE technology.
• Development and tier-3 support of various in-house applications written in Java and Unix.
• Followed Agile for requirement analysis, design, development and testing for various change requests
in java.
• Actively involved in daily incident triaging, liaising, batch handling, maintenance, troubleshooting
the applications, closing the issues with proper documentation of various data warehousing issues.
• Successfully completed the Industrial Trainning Program.
• Developed robust web application to simulate employee portal using .Net and MySql.


Hardware supported¶
KRS focuses on the Kria SOM portfolio. KRS full support is provided for the following boards:
| Board | Picture | Firmware | Description |
|---|---|---|---|
Kria K26 Adaptive System-on-Module |
acceleration_firmware_kv260 | The Kria™ K26 SOM is the first adaptive Single Board Computer, a production-grade and tiny System-on-Module for edge vision and robotics applications. Available in Commercial and Industrial Grade variants. | |
Kria KV260 Vision AI Starter Kit |
acceleration_firmware_kv260 | The Kria™ KV260 starter kit is a development platform for the K26, the first adaptive Single Board Computer. KV260 offers a compact board for edge vision and robotics applications. |
Unofficial support¶
Unofficial support is also available for the following:
| Board | Picture | Firmware | Description |
|---|---|---|---|
Xilinx Zynq UltraScale+ MPSoC ZCU102 Evaluation Kit |
acceleration_firmware_zcu102 | The ZCU102 Evaluation Kit enables designers to jumpstart designs for automotive, industrial, video, and communications applications. This kit features a Zynq® UltraScale+™ MPSoC with a quad-core Arm® Cortex®-A53, dual-core Cortex-R5F real-time processors, and a Mali™-400 MP2 graphics processing unit | |
Zynq UltraScale+ MPSoC ZCU104 Evaluation Kit ZCU104 |
Contact us | The ZCU104 Evaluation Kit enables designers to jumpstart designs for embedded vision applications such as surveillance, Advanced Driver Assisted Systems (ADAS), machine vision, Augmented Reality (AR), drones and medical imaging. This kit features a Zynq® UltraScale+™ MPSoC EV device with video codec and supports many common peripherals and interfaces for embedded vision use case. |


Galvanize Delivers
menu
Order Delivery
Home
Menu
Royale with Cheese
$8.99
ADD TO ORDER
Arugula Pie
$11.99
ADD TO ORDER
Smoked Swine
$14.99
ADD TO ORDER
Ice Cream Biscuit
$7.99
ADD TO ORDER
Order
Item
Price
Subtotal
$0
Tax
$0
Total
$0
person
Name
phone
Phone Number
business
Address
PLACE ORDER