Dactyloidae/toolkit/jetpack/dev/volcan.js

3848 lines
252 KiB
JavaScript
Raw Normal View History

/* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
!function(e){if("object"==typeof exports)module.exports=e();else if("function"==typeof define&&define.amd)define(e);else{var f;"undefined"!=typeof window?f=window:"undefined"!=typeof global?f=global:"undefined"!=typeof self&&(f=self),f.volcan=e()}}(function(){var define,module,exports;return (function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);throw new Error("Cannot find module '"+o+"'")}var f=n[o]={exports:{}};t[o][0].call(f.exports,function(e){var n=t[o][1][e];return s(n?n:e)},f,f.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o<r.length;o++)s(r[o]);return s})({1:[function(_dereq_,module,exports){
"use strict";
var Client = _dereq_("../client").Client;
function connect(port) {
var client = new Client();
return client.connect(port);
}
exports.connect = connect;
},{"../client":4}],2:[function(_dereq_,module,exports){
"use strict";
exports.Promise = Promise;
},{}],3:[function(_dereq_,module,exports){
"use strict";
var describe = Object.getOwnPropertyDescriptor;
var Class = function(fields) {
var names = Object.keys(fields);
var constructor = names.indexOf("constructor") >= 0 ? fields.constructor :
function() {};
var ancestor = fields.extends || Object;
var descriptor = names.reduce(function(descriptor, key) {
descriptor[key] = describe(fields, key);
return descriptor;
}, {});
var prototype = Object.create(ancestor.prototype, descriptor);
constructor.prototype = prototype;
prototype.constructor = constructor;
return constructor;
};
exports.Class = Class;
},{}],4:[function(_dereq_,module,exports){
"use strict";
var Class = _dereq_("./class").Class;
var TypeSystem = _dereq_("./type-system").TypeSystem;
var values = _dereq_("./util").values;
var Promise = _dereq_("es6-promise").Promise;
var MessageEvent = _dereq_("./event").MessageEvent;
var specification = _dereq_("./specification/core.json");
function recoverActorDescriptions(error) {
console.warn("Failed to fetch protocol specification (see reason below). " +
"Using a fallback protocal specification!",
error);
return _dereq_("./specification/protocol.json");
}
// Type to represent superviser actor relations to actors they supervise
// in terms of lifetime management.
var Supervisor = Class({
constructor: function(id) {
this.id = id;
this.workers = [];
}
});
var Telemetry = Class({
add: function(id, ms) {
console.log("telemetry::", id, ms)
}
});
// Consider making client a root actor.
var Client = Class({
constructor: function() {
this.root = null;
this.telemetry = new Telemetry();
this.setupConnection();
this.setupLifeManagement();
this.setupTypeSystem();
},
setupConnection: function() {
this.requests = [];
},
setupLifeManagement: function() {
this.cache = Object.create(null);
this.graph = Object.create(null);
this.get = this.get.bind(this);
this.release = this.release.bind(this);
},
setupTypeSystem: function() {
this.typeSystem = new TypeSystem(this);
this.typeSystem.registerTypes(specification);
},
connect: function(port) {
var client = this;
return new Promise(function(resolve, reject) {
client.port = port;
port.onmessage = client.receive.bind(client);
client.onReady = resolve;
client.onFail = reject;
port.start();
});
},
send: function(packet) {
this.port.postMessage(packet);
},
request: function(packet) {
var client = this;
return new Promise(function(resolve, reject) {
client.requests.push(packet.to, { resolve: resolve, reject: reject });
client.send(packet);
});
},
receive: function(event) {
var packet = event.data;
if (!this.root) {
if (packet.from !== "root")
throw Error("Initial packet must be from root");
if (!("applicationType" in packet))
throw Error("Initial packet must contain applicationType field");
this.root = this.typeSystem.read("root", null, "root");
this.root
.protocolDescription()
.catch(recoverActorDescriptions)
.then(this.typeSystem.registerTypes.bind(this.typeSystem))
.then(this.onReady.bind(this, this.root), this.onFail);
} else {
var actor = this.get(packet.from) || this.root;
var event = actor.events[packet.type];
if (event) {
var message = new MessageEvent(packet.type, {
data: event.read(packet)
});
actor.dispatchEvent(message);
} else {
var index = this.requests.indexOf(actor.id);
if (index >= 0) {
var request = this.requests.splice(index, 2).pop();
if (packet.error)
request.reject(packet);
else
request.resolve(packet);
} else {
console.error(Error("Unexpected packet " + JSON.stringify(packet, 2, 2)),
packet,
this.requests.slice(0));
}
}
}
},
get: function(id) {
return this.cache[id];
},
supervisorOf: function(actor) {
for (var id in this.graph) {
if (this.graph[id].indexOf(actor.id) >= 0) {
return id;
}
}
},
workersOf: function(actor) {
return this.graph[actor.id];
},
supervise: function(actor, worker) {
var workers = this.workersOf(actor)
if (workers.indexOf(worker.id) < 0) {
workers.push(worker.id);
}
},
unsupervise: function(actor, worker) {
var workers = this.workersOf(actor);
var index = workers.indexOf(worker.id)
if (index >= 0) {
workers.splice(index, 1)
}
},
register: function(actor) {
var registered = this.get(actor.id);
if (!registered) {
this.cache[actor.id] = actor;
this.graph[actor.id] = [];
} else if (registered !== actor) {
throw new Error("Different actor with same id is already registered");
}
},
unregister: function(actor) {
if (this.get(actor.id)) {
delete this.cache[actor.id];
delete this.graph[actor.id];
}
},
release: function(actor) {
var supervisor = this.supervisorOf(actor);
if (supervisor)
this.unsupervise(supervisor, actor);
var workers = this.workersOf(actor)
if (workers) {
workers.map(this.get).forEach(this.release)
}
this.unregister(actor);
}
});
exports.Client = Client;
},{"./class":3,"./event":5,"./specification/core.json":23,"./specification/protocol.json":24,"./type-system":25,"./util":26,"es6-promise":2}],5:[function(_dereq_,module,exports){
"use strict";
var Symbol = _dereq_("es6-symbol")
var EventEmitter = _dereq_("events").EventEmitter;
var Class = _dereq_("./class").Class;
var $bound = Symbol("EventTarget/handleEvent");
var $emitter = Symbol("EventTarget/emitter");
function makeHandler(handler) {
return function(event) {
handler.handleEvent(event);
}
}
var EventTarget = Class({
constructor: function() {
Object.defineProperty(this, $emitter, {
enumerable: false,
configurable: true,
writable: true,
value: new EventEmitter()
});
},
addEventListener: function(type, handler) {
if (typeof(handler) === "function") {
this[$emitter].on(type, handler);
}
else if (handler && typeof(handler) === "object") {
if (!handler[$bound]) handler[$bound] = makeHandler(handler);
this[$emitter].on(type, handler[$bound]);
}
},
removeEventListener: function(type, handler) {
if (typeof(handler) === "function")
this[$emitter].removeListener(type, handler);
else if (handler && handler[$bound])
this[$emitter].removeListener(type, handler[$bound]);
},
dispatchEvent: function(event) {
event.target = this;
this[$emitter].emit(event.type, event);
}
});
exports.EventTarget = EventTarget;
var MessageEvent = Class({
constructor: function(type, options) {
options = options || {};
this.type = type;
this.data = options.data === void(0) ? null : options.data;
this.lastEventId = options.lastEventId || "";
this.origin = options.origin || "";
this.bubbles = options.bubbles || false;
this.cancelable = options.cancelable || false;
},
source: null,
ports: null,
preventDefault: function() {
},
stopPropagation: function() {
},
stopImmediatePropagation: function() {
}
});
exports.MessageEvent = MessageEvent;
},{"./class":3,"es6-symbol":7,"events":6}],6:[function(_dereq_,module,exports){
// Copyright Joyent, Inc. and other Node contributors.
//
// Permission is hereby granted, free of charge, to any person obtaining a
// copy of this software and associated documentation files (the
// "Software"), to deal in the Software without restriction, including
// without limitation the rights to use, copy, modify, merge, publish,
// distribute, sublicense, and/or sell copies of the Software, and to permit
// persons to whom the Software is furnished to do so, subject to the
// following conditions:
//
// The above copyright notice and this permission notice shall be included
// in all copies or substantial portions of the Software.
//
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
// USE OR OTHER DEALINGS IN THE SOFTWARE.
function EventEmitter() {
this._events = this._events || {};
this._maxListeners = this._maxListeners || undefined;
}
module.exports = EventEmitter;
// Backwards-compat with node 0.10.x
EventEmitter.EventEmitter = EventEmitter;
EventEmitter.prototype._events = undefined;
EventEmitter.prototype._maxListeners = undefined;
// By default EventEmitters will print a warning if more than 10 listeners are
// added to it. This is a useful default which helps finding memory leaks.
EventEmitter.defaultMaxListeners = 10;
// Obviously not all Emitters should be limited to 10. This function allows
// that to be increased. Set to zero for unlimited.
EventEmitter.prototype.setMaxListeners = function(n) {
if (!isNumber(n) || n < 0 || isNaN(n))
throw TypeError('n must be a positive number');
this._maxListeners = n;
return this;
};
EventEmitter.prototype.emit = function(type) {
var er, handler, len, args, i, listeners;
if (!this._events)
this._events = {};
// If there is no 'error' event listener then throw.
if (type === 'error') {
if (!this._events.error ||
(isObject(this._events.error) && !this._events.error.length)) {
er = arguments[1];
if (er instanceof Error) {
throw er; // Unhandled 'error' event
} else {
throw TypeError('Uncaught, unspecified "error" event.');
}
return false;
}
}
handler = this._events[type];
if (isUndefined(handler))
return false;
if (isFunction(handler)) {
switch (arguments.length) {
// fast cases
case 1:
handler.call(this);
break;
case 2:
handler.call(this, arguments[1]);
break;
case 3:
handler.call(this, arguments[1], arguments[2]);
break;
// slower
default:
len = arguments.length;
args = new Array(len - 1);
for (i = 1; i < len; i++)
args[i - 1] = arguments[i];
handler.apply(this, args);
}
} else if (isObject(handler)) {
len = arguments.length;
args = new Array(len - 1);
for (i = 1; i < len; i++)
args[i - 1] = arguments[i];
listeners = handler.slice();
len = listeners.length;
for (i = 0; i < len; i++)
listeners[i].apply(this, args);
}
return true;
};
EventEmitter.prototype.addListener = function(type, listener) {
var m;
if (!isFunction(listener))
throw TypeError('listener must be a function');
if (!this._events)
this._events = {};
// To avoid recursion in the case that type === "newListener"! Before
// adding it to the listeners, first emit "newListener".
if (this._events.newListener)
this.emit('newListener', type,
isFunction(listener.listener) ?
listener.listener : listener);
if (!this._events[type])
// Optimize the case of one listener. Don't need the extra array object.
this._events[type] = listener;
else if (isObject(this._events[type]))
// If we've already got an array, just append.
this._events[type].push(listener);
else
// Adding the second element, need to change to array.
this._events[type] = [this._events[type], listener];
// Check for listener leak
if (isObject(this._events[type]) && !this._events[type].warned) {
var m;
if (!isUndefined(this._maxListeners)) {
m = this._maxListeners;
} else {
m = EventEmitter.defaultMaxListeners;
}
if (m && m > 0 && this._events[type].length > m) {
this._events[type].warned = true;
console.error('(node) warning: possible EventEmitter memory ' +
'leak detected. %d listeners added. ' +
'Use emitter.setMaxListeners() to increase limit.',
this._events[type].length);
if (typeof console.trace === 'function') {
// not supported in IE 10
console.trace();
}
}
}
return this;
};
EventEmitter.prototype.on = EventEmitter.prototype.addListener;
EventEmitter.prototype.once = function(type, listener) {
if (!isFunction(listener))
throw TypeError('listener must be a function');
var fired = false;
function g() {
this.removeListener(type, g);
if (!fired) {
fired = true;
listener.apply(this, arguments);
}
}
g.listener = listener;
this.on(type, g);
return this;
};
// emits a 'removeListener' event iff the listener was removed
EventEmitter.prototype.removeListener = function(type, listener) {
var list, position, length, i;
if (!isFunction(listener))
throw TypeError('listener must be a function');
if (!this._events || !this._events[type])
return this;
list = this._events[type];
length = list.length;
position = -1;
if (list === listener ||
(isFunction(list.listener) && list.listener === listener)) {
delete this._events[type];
if (this._events.removeListener)
this.emit('removeListener', type, listener);
} else if (isObject(list)) {
for (i = length; i-- > 0;) {
if (list[i] === listener ||
(list[i].listener && list[i].listener === listener)) {
position = i;
break;
}
}
if (position < 0)
return this;
if (list.length === 1) {
list.length = 0;
delete this._events[type];
} else {
list.splice(position, 1);
}
if (this._events.removeListener)
this.emit('removeListener', type, listener);
}
return this;
};
EventEmitter.prototype.removeAllListeners = function(type) {
var key, listeners;
if (!this._events)
return this;
// not listening for removeListener, no need to emit
if (!this._events.removeListener) {
if (arguments.length === 0)
this._events = {};
else if (this._events[type])
delete this._events[type];
return this;
}
// emit removeListener for all listeners on all events
if (arguments.length === 0) {
for (key in this._events) {
if (key === 'removeListener') continue;
this.removeAllListeners(key);
}
this.removeAllListeners('removeListener');
this._events = {};
return this;
}
listeners = this._events[type];
if (isFunction(listeners)) {
this.removeListener(type, listeners);
} else {
// LIFO order
while (listeners.length)
this.removeListener(type, listeners[listeners.length - 1]);
}
delete this._events[type];
return this;
};
EventEmitter.prototype.listeners = function(type) {
var ret;
if (!this._events || !this._events[type])
ret = [];
else if (isFunction(this._events[type]))
ret = [this._events[type]];
else
ret = this._events[type].slice();
return ret;
};
EventEmitter.listenerCount = function(emitter, type) {
var ret;
if (!emitter._events || !emitter._events[type])
ret = 0;
else if (isFunction(emitter._events[type]))
ret = 1;
else
ret = emitter._events[type].length;
return ret;
};
function isFunction(arg) {
return typeof arg === 'function';
}
function isNumber(arg) {
return typeof arg === 'number';
}
function isObject(arg) {
return typeof arg === 'object' && arg !== null;
}
function isUndefined(arg) {
return arg === void 0;
}
},{}],7:[function(_dereq_,module,exports){
'use strict';
module.exports = _dereq_('./is-implemented')() ? Symbol : _dereq_('./polyfill');
},{"./is-implemented":8,"./polyfill":22}],8:[function(_dereq_,module,exports){
'use strict';
module.exports = function () {
var symbol;
if (typeof Symbol !== 'function') return false;
symbol = Symbol('test symbol');
try {
if (String(symbol) !== 'Symbol (test symbol)') return false;
} catch (e) { return false; }
if (typeof Symbol.iterator === 'symbol') return true;
// Return 'true' for polyfills
if (typeof Symbol.isConcatSpreadable !== 'object') return false;
if (typeof Symbol.isRegExp !== 'object') return false;
if (typeof Symbol.iterator !== 'object') return false;
if (typeof Symbol.toPrimitive !== 'object') return false;
if (typeof Symbol.toStringTag !== 'object') return false;
if (typeof Symbol.unscopables !== 'object') return false;
return true;
};
},{}],9:[function(_dereq_,module,exports){
'use strict';
var assign = _dereq_('es5-ext/object/assign')
, normalizeOpts = _dereq_('es5-ext/object/normalize-options')
, isCallable = _dereq_('es5-ext/object/is-callable')
, contains = _dereq_('es5-ext/string/#/contains')
, d;
d = module.exports = function (dscr, value/*, options*/) {
var c, e, w, options, desc;
if ((arguments.length < 2) || (typeof dscr !== 'string')) {
options = value;
value = dscr;
dscr = null;
} else {
options = arguments[2];
}
if (dscr == null) {
c = w = true;
e = false;
} else {
c = contains.call(dscr, 'c');
e = contains.call(dscr, 'e');
w = contains.call(dscr, 'w');
}
desc = { value: value, configurable: c, enumerable: e, writable: w };
return !options ? desc : assign(normalizeOpts(options), desc);
};
d.gs = function (dscr, get, set/*, options*/) {
var c, e, options, desc;
if (typeof dscr !== 'string') {
options = set;
set = get;
get = dscr;
dscr = null;
} else {
options = arguments[3];
}
if (get == null) {
get = undefined;
} else if (!isCallable(get)) {
options = get;
get = set = undefined;
} else if (set == null) {
set = undefined;
} else if (!isCallable(set)) {
options = set;
set = undefined;
}
if (dscr == null) {
c = true;
e = false;
} else {
c = contains.call(dscr, 'c');
e = contains.call(dscr, 'e');
}
desc = { get: get, set: set, configurable: c, enumerable: e };
return !options ? desc : assign(normalizeOpts(options), desc);
};
},{"es5-ext/object/assign":10,"es5-ext/object/is-callable":13,"es5-ext/object/normalize-options":17,"es5-ext/string/#/contains":19}],10:[function(_dereq_,module,exports){
'use strict';
module.exports = _dereq_('./is-implemented')()
? Object.assign
: _dereq_('./shim');
},{"./is-implemented":11,"./shim":12}],11:[function(_dereq_,module,exports){
'use strict';
module.exports = function () {
var assign = Object.assign, obj;
if (typeof assign !== 'function') return false;
obj = { foo: 'raz' };
assign(obj, { bar: 'dwa' }, { trzy: 'trzy' });
return (obj.foo + obj.bar + obj.trzy) === 'razdwatrzy';
};
},{}],12:[function(_dereq_,module,exports){
'use strict';
var keys = _dereq_('../keys')
, value = _dereq_('../valid-value')
, max = Math.max;
module.exports = function (dest, src/*, …srcn*/) {
var error, i, l = max(arguments.length, 2), assign;
dest = Object(value(dest));
assign = function (key) {
try { dest[key] = src[key]; } catch (e) {
if (!error) error = e;
}
};
for (i = 1; i < l; ++i) {
src = arguments[i];
keys(src).forEach(assign);
}
if (error !== undefined) throw error;
return dest;
};
},{"../keys":14,"../valid-value":18}],13:[function(_dereq_,module,exports){
// Deprecated
'use strict';
module.exports = function (obj) { return typeof obj === 'function'; };
},{}],14:[function(_dereq_,module,exports){
'use strict';
module.exports = _dereq_('./is-implemented')()
? Object.keys
: _dereq_('./shim');
},{"./is-implemented":15,"./shim":16}],15:[function(_dereq_,module,exports){
'use strict';
module.exports = function () {
try {
Object.keys('primitive');
return true;
} catch (e) { return false; }
};
},{}],16:[function(_dereq_,module,exports){
'use strict';
var keys = Object.keys;
module.exports = function (object) {
return keys(object == null ? object : Object(object));
};
},{}],17:[function(_dereq_,module,exports){
'use strict';
var assign = _dereq_('./assign')
, forEach = Array.prototype.forEach
, create = Object.create, getPrototypeOf = Object.getPrototypeOf
, process;
process = function (src, obj) {
var proto = getPrototypeOf(src);
return assign(proto ? process(proto, obj) : obj, src);
};
module.exports = function (options/*, …options*/) {
var result = create(null);
forEach.call(arguments, function (options) {
if (options == null) return;
process(Object(options), result);
});
return result;
};
},{"./assign":10}],18:[function(_dereq_,module,exports){
'use strict';
module.exports = function (value) {
if (value == null) throw new TypeError("Cannot use null or undefined");
return value;
};
},{}],19:[function(_dereq_,module,exports){
'use strict';
module.exports = _dereq_('./is-implemented')()
? String.prototype.contains
: _dereq_('./shim');
},{"./is-implemented":20,"./shim":21}],20:[function(_dereq_,module,exports){
'use strict';
var str = 'razdwatrzy';
module.exports = function () {
if (typeof str.contains !== 'function') return false;
return ((str.contains('dwa') === true) && (str.contains('foo') === false));
};
},{}],21:[function(_dereq_,module,exports){
'use strict';
var indexOf = String.prototype.indexOf;
module.exports = function (searchString/*, position*/) {
return indexOf.call(this, searchString, arguments[1]) > -1;
};
},{}],22:[function(_dereq_,module,exports){
'use strict';
var d = _dereq_('d')
, create = Object.create, defineProperties = Object.defineProperties
, generateName, Symbol;
generateName = (function () {
var created = create(null);
return function (desc) {
var postfix = 0;
while (created[desc + (postfix || '')]) ++postfix;
desc += (postfix || '');
created[desc] = true;
return '@@' + desc;
};
}());
module.exports = Symbol = function (description) {
var symbol;
if (this instanceof Symbol) {
throw new TypeError('TypeError: Symbol is not a constructor');
}
symbol = create(Symbol.prototype);
description = (description === undefined ? '' : String(description));
return defineProperties(symbol, {
__description__: d('', description),
__name__: d('', generateName(description))
});
};
Object.defineProperties(Symbol, {
create: d('', Symbol('create')),
hasInstance: d('', Symbol('hasInstance')),
isConcatSpreadable: d('', Symbol('isConcatSpreadable')),
isRegExp: d('', Symbol('isRegExp')),
iterator: d('', Symbol('iterator')),
toPrimitive: d('', Symbol('toPrimitive')),
toStringTag: d('', Symbol('toStringTag')),
unscopables: d('', Symbol('unscopables'))
});
defineProperties(Symbol.prototype, {
properToString: d(function () {
return 'Symbol (' + this.__description__ + ')';
}),
toString: d('', function () { return this.__name__; })
});
Object.defineProperty(Symbol.prototype, Symbol.toPrimitive, d('',
function (hint) {
throw new TypeError("Conversion of symbol objects is not allowed");
}));
Object.defineProperty(Symbol.prototype, Symbol.toStringTag, d('c', 'Symbol'));
},{"d":9}],23:[function(_dereq_,module,exports){
module.exports={
"types": {
"root": {
"category": "actor",
"typeName": "root",
"methods": [
{
"name": "echo",
"request": {
"string": { "_arg": 0, "type": "string" }
},
"response": {
"string": { "_retval": "string" }
}
},
{
"name": "listTabs",
"request": {},
"response": { "_retval": "tablist" }
},
{
"name": "protocolDescription",
"request": {},
"response": { "_retval": "json" }
}
],
"events": {
"tabListChanged": {}
}
},
"tablist": {
"category": "dict",
"typeName": "tablist",
"specializations": {
"selected": "number",
"tabs": "array:tab",
"url": "string",
"consoleActor": "console",
"inspectorActor": "inspector",
"styleSheetsActor": "stylesheets",
"styleEditorActor": "styleeditor",
"memoryActor": "memory",
"eventLoopLagActor": "eventLoopLag",
"preferenceActor": "preference",
"deviceActor": "device",
"profilerActor": "profiler",
"chromeDebugger": "chromeDebugger",
"webappsActor": "webapps"
}
},
"tab": {
"category": "actor",
"typeName": "tab",
"fields": {
"title": "string",
"url": "string",
"outerWindowID": "number",
"inspectorActor": "inspector",
"callWatcherActor": "call-watcher",
"canvasActor": "canvas",
"webglActor": "webgl",
"webaudioActor": "webaudio",
"storageActor": "storage",
"gcliActor": "gcli",
"memoryActor": "memory",
"eventLoopLag": "eventLoopLag",
"styleSheetsActor": "stylesheets",
"styleEditorActor": "styleeditor",
"consoleActor": "console",
"traceActor": "trace"
},
"methods": [
{
"name": "attach",
"request": {},
"response": { "_retval": "json" }
}
],
"events": {
"tabNavigated": {
"typeName": "tabNavigated"
}
}
},
"console": {
"category": "actor",
"typeName": "console",
"methods": [
{
"name": "evaluateJS",
"request": {
"text": {
"_option": 0,
"type": "string"
},
"url": {
"_option": 1,
"type": "string"
},
"bindObjectActor": {
"_option": 2,
"type": "nullable:string"
},
"frameActor": {
"_option": 2,
"type": "nullable:string"
},
"selectedNodeActor": {
"_option": 2,
"type": "nullable:string"
}
},
"response": {
"_retval": "evaluatejsresponse"
}
}
],
"events": {}
},
"evaluatejsresponse": {
"category": "dict",
"typeName": "evaluatejsresponse",
"specializations": {
"result": "object",
"exception": "object",
"exceptionMessage": "string",
"input": "string"
}
},
"object": {
"category": "actor",
"typeName": "object",
"methods": [
{
"name": "property",
"request": {
"name": {
"_arg": 0,
"type": "string"
}
},
"response": {
"descriptor": {
"_retval": "json"
}
}
}
]
}
}
}
},{}],24:[function(_dereq_,module,exports){
module.exports={
"types": {
"longstractor": {
"category": "actor",
"typeName": "longstractor",
"methods": [
{
"name": "substring",
"request": {
"type": "substring",
"start": {
"_arg": 0,
"type": "primitive"
},
"end": {
"_arg": 1,
"type": "primitive"
}
},
"response": {
"substring": {
"_retval": "primitive"
}
}
},
{
"name": "release",
"release": true,
"request": {
"type": "release"
},
"response": {}
}
],
"events": {}
},
"stylesheet": {
"category": "actor",
"typeName": "stylesheet",
"methods": [
{
"name": "toggleDisabled",
"request": {
"type": "toggleDisabled"
},
"response": {
"disabled": {
"_retval": "boolean"
}
}
},
{
"name": "getText",
"request": {
"type": "getText"
},
"response": {
"text": {
"_retval": "longstring"
}
}
},
{
"name": "getOriginalSources",
"request": {
"type": "getOriginalSources"
},
"response": {
"originalSources": {
"_retval": "nullable:array:originalsource"
}
}
},
{
"name": "getOriginalLocation",
"request": {
"type": "getOriginalLocation",
"line": {
"_arg": 0,
"type": "number"
},
"column": {
"_arg": 1,
"type": "number"
}
},
"response": {
"_retval": "originallocationresponse"
}
},
{
"name": "update",
"request": {
"type": "update",
"text": {
"_arg": 0,
"type": "string"
},
"transition": {
"_arg": 1,
"type": "boolean"
}
},
"response": {}
}
],
"events": {
"property-change": {
"type": "propertyChange",
"property": {
"_arg": 0,
"type": "string"
},
"value": {
"_arg": 1,
"type": "json"
}
},
"style-applied": {
"type": "styleApplied"
}
}
},
"originalsource": {
"category": "actor",
"typeName": "originalsource",
"methods": [
{
"name": "getText",
"request": {
"type": "getText"
},
"response": {
"text": {
"_retval": "longstring"
}
}
}
],
"events": {}
},
"stylesheets": {
"category": "actor",
"typeName": "stylesheets",
"methods": [
{
"name": "getStyleSheets",
"request": {
"type": "getStyleSheets"
},
"response": {
"styleSheets": {
"_retval": "array:stylesheet"
}
}
},
{
"name": "addStyleSheet",
"request": {
"type": "addStyleSheet",
"text": {
"_arg": 0,
"type": "string"
}
},
"response": {
"styleSheet": {
"_retval": "stylesheet"
}
}
}
],
"events": {}
},
"originallocationresponse": {
"category": "dict",
"typeName": "originallocationresponse",
"specializations": {
"source": "string",
"line": "number",
"column": "number"
}
},
"domnode": {
"category": "actor",
"typeName": "domnode",
"methods": [
{
"name": "getNodeValue",
"request": {
"type": "getNodeValue"
},
"response": {
"value": {
"_retval": "longstring"
}
}
},
{
"name": "setNodeValue",
"request": {
"type": "setNodeValue",
"value": {
"_arg": 0,
"type": "primitive"
}
},
"response": {}
},
{
"name": "getImageData",
"request": {
"type": "getImageData",
"maxDim": {
"_arg": 0,
"type": "nullable:number"
}
},
"response": {
"_retval": "imageData"
}
},
{
"name": "modifyAttributes",
"request": {
"type": "modifyAttributes",
"modifications": {
"_arg": 0,
"type": "array:json"
}
},
"response": {}
}
],
"events": {}
},
"appliedstyle": {
"category": "dict",
"typeName": "appliedstyle",
"specializations": {
"rule": "domstylerule#actorid",
"inherited": "nullable:domnode#actorid"
}
},
"matchedselector": {
"category": "dict",
"typeName": "matchedselector",
"specializations": {
"rule": "domstylerule#actorid",
"selector": "string",
"value": "string",
"status": "number"
}
},
"matchedselectorresponse": {
"category": "dict",
"typeName": "matchedselectorresponse",
"specializations": {
"rules": "array:domstylerule",
"sheets": "array:stylesheet",
"matched": "array:matchedselector"
}
},
"appliedStylesReturn": {
"category": "dict",
"typeName": "appliedStylesReturn",
"specializations": {
"entries": "array:appliedstyle",
"rules": "array:domstylerule",
"sheets": "array:stylesheet"
}
},
"pagestyle": {
"category": "actor",
"typeName": "pagestyle",
"methods": [
{
"name": "getComputed",
"request": {
"type": "getComputed",
"node": {
"_arg": 0,
"type": "domnode"
},
"markMatched": {
"_option": 1,
"type": "boolean"
},
"onlyMatched": {
"_option": 1,
"type": "boolean"
},
"filter": {
"_option": 1,
"type": "string"
}
},
"response": {
"computed": {
"_retval": "json"
}
}
},
{
"name": "getMatchedSelectors",
"request": {
"type": "getMatchedSelectors",
"node": {
"_arg": 0,
"type": "domnode"
},
"property": {
"_arg": 1,
"type": "string"
},
"filter": {
"_option": 2,
"type": "string"
}
},
"response": {
"_retval": "matchedselectorresponse"
}
},
{
"name": "getApplied",
"request": {
"type": "getApplied",
"node": {
"_arg": 0,
"type": "domnode"
},
"inherited": {
"_option": 1,
"type": "boolean"
},
"matchedSelectors": {
"_option": 1,
"type": "boolean"
},
"filter": {
"_option": 1,
"type": "string"
}
},
"response": {
"_retval": "appliedStylesReturn"
}
},
{
"name": "getLayout",
"request": {
"type": "getLayout",
"node": {
"_arg": 0,
"type": "domnode"
},
"autoMargins": {
"_option": 1,
"type": "boolean"
}
},
"response": {
"_retval": "json"
}
}
],
"events": {}
},
"domstylerule": {
"category": "actor",
"typeName": "domstylerule",
"methods": [
{
"name": "modifyProperties",
"request": {
"type": "modifyProperties",
"modifications": {
"_arg": 0,
"type": "array:json"
}
},
"response": {
"rule": {
"_retval": "domstylerule"
}
}
}
],
"events": {}
},
"highlighter": {
"category": "actor",
"typeName": "highlighter",
"methods": [
{
"name": "showBoxModel",
"request": {
"type": "showBoxModel",
"node": {
"_arg": 0,
"type": "domnode"
},
"region": {
"_option": 1,
"type": "primitive"
}
},
"response": {}
},
{
"name": "hideBoxModel",
"request": {
"type": "hideBoxModel"
},
"response": {}
},
{
"name": "pick",
"request": {
"type": "pick"
},
"response": {}
},
{
"name": "cancelPick",
"request": {
"type": "cancelPick"
},
"response": {}
}
],
"events": {}
},
"imageData": {
"category": "dict",
"typeName": "imageData",
"specializations": {
"data": "nullable:longstring",
"size": "json"
}
},
"disconnectedNode": {
"category": "dict",
"typeName": "disconnectedNode",
"specializations": {
"node": "domnode",
"newParents": "array:domnode"
}
},
"disconnectedNodeArray": {
"category": "dict",
"typeName": "disconnectedNodeArray",
"specializations": {
"nodes": "array:domnode",
"newParents": "array:domnode"
}
},
"dommutation": {
"category": "dict",
"typeName": "dommutation",
"specializations": {}
},
"domnodelist": {
"category": "actor",
"typeName": "domnodelist",
"methods": [
{
"name": "item",
"request": {
"type": "item",
"item": {
"_arg": 0,
"type": "primitive"
}
},
"response": {
"_retval": "disconnectedNode"
}
},
{
"name": "items",
"request": {
"type": "items",
"start": {
"_arg": 0,
"type": "nullable:number"
},
"end": {
"_arg": 1,
"type": "nullable:number"
}
},
"response": {
"_retval": "disconnectedNodeArray"
}
},
{
"name": "release",
"release": true,
"request": {
"type": "release"
},
"response": {}
}
],
"events": {}
},
"domtraversalarray": {
"category": "dict",
"typeName": "domtraversalarray",
"specializations": {
"nodes": "array:domnode"
}
},
"domwalker": {
"category": "actor",
"typeName": "domwalker",
"methods": [
{
"name": "release",
"release": true,
"request": {
"type": "release"
},
"response": {}
},
{
"name": "pick",
"request": {
"type": "pick"
},
"response": {
"_retval": "disconnectedNode"
}
},
{
"name": "cancelPick",
"request": {
"type": "cancelPick"
},
"response": {}
},
{
"name": "highlight",
"request": {
"type": "highlight",
"node": {
"_arg": 0,
"type": "nullable:domnode"
}
},
"response": {}
},
{
"name": "document",
"request": {
"type": "document",
"node": {
"_arg": 0,
"type": "nullable:domnode"
}
},
"response": {
"node": {
"_retval": "domnode"
}
}
},
{
"name": "documentElement",
"request": {
"type": "documentElement",
"node": {
"_arg": 0,
"type": "nullable:domnode"
}
},
"response": {
"node": {
"_retval": "domnode"
}
}
},
{
"name": "parents",
"request": {
"type": "parents",
"node": {
"_arg": 0,
"type": "domnode"
},
"sameDocument": {
"_option": 1,
"type": "primitive"
}
},
"response": {
"nodes": {
"_retval": "array:domnode"
}
}
},
{
"name": "retainNode",
"request": {
"type": "retainNode",
"node": {
"_arg": 0,
"type": "domnode"
}
},
"response": {}
},
{
"name": "unretainNode",
"request": {
"type": "unretainNode",
"node": {
"_arg": 0,
"type": "domnode"
}
},
"response": {}
},
{
"name": "releaseNode",
"request": {
"type": "releaseNode",
"node": {
"_arg": 0,
"type": "domnode"
},
"force": {
"_option": 1,
"type": "primitive"
}
},
"response": {}
},
{
"name": "children",
"request": {
"type": "children",
"node": {
"_arg": 0,
"type": "domnode"
},
"maxNodes": {
"_option": 1,
"type": "primitive"
},
"center": {
"_option": 1,
"type": "domnode"
},
"start": {
"_option": 1,
"type": "domnode"
},
"whatToShow": {
"_option": 1,
"type": "primitive"
}
},
"response": {
"_retval": "domtraversalarray"
}
},
{
"name": "siblings",
"request": {
"type": "siblings",
"node": {
"_arg": 0,
"type": "domnode"
},
"maxNodes": {
"_option": 1,
"type": "primitive"
},
"center": {
"_option": 1,
"type": "domnode"
},
"start": {
"_option": 1,
"type": "domnode"
},
"whatToShow": {
"_option": 1,
"type": "primitive"
}
},
"response": {
"_retval": "domtraversalarray"
}
},
{
"name": "nextSibling",
"request": {
"type": "nextSibling",
"node": {
"_arg": 0,
"type": "domnode"
},
"whatToShow": {
"_option": 1,
"type": "primitive"
}
},
"response": {
"node": {
"_retval": "nullable:domnode"
}
}
},
{
"name": "previousSibling",
"request": {
"type": "previousSibling",
"node": {
"_arg": 0,
"type": "domnode"
},
"whatToShow": {
"_option": 1,
"type": "primitive"
}
},
"response": {
"node": {
"_retval": "nullable:domnode"
}
}
},
{
"name": "querySelector",
"request": {
"type": "querySelector",
"node": {
"_arg": 0,
"type": "domnode"
},
"selector": {
"_arg": 1,
"type": "primitive"
}
},
"response": {
"_retval": "disconnectedNode"
}
},
{
"name": "querySelectorAll",
"request": {
"type": "querySelectorAll",
"node": {
"_arg": 0,
"type": "domnode"
},
"selector": {
"_arg": 1,
"type": "primitive"
}
},
"response": {
"list": {
"_retval": "domnodelist"
}
}
},
{
"name": "getSuggestionsForQuery",
"request": {
"type": "getSuggestionsForQuery",
"query": {
"_arg": 0,
"type": "primitive"
},
"completing": {
"_arg": 1,
"type": "primitive"
},
"selectorState": {
"_arg": 2,
"type": "primitive"
}
},
"response": {
"list": {
"_retval": "array:array:string"
}
}
},
{
"name": "addPseudoClassLock",
"request": {
"type": "addPseudoClassLock",
"node": {
"_arg": 0,
"type": "domnode"
},
"pseudoClass": {
"_arg": 1,
"type": "primitive"
},
"parents": {
"_option": 2,
"type": "primitive"
}
},
"response": {}
},
{
"name": "hideNode",
"request": {
"type": "hideNode",
"node": {
"_arg": 0,
"type": "domnode"
}
},
"response": {}
},
{
"name": "unhideNode",
"request": {
"type": "unhideNode",
"node": {
"_arg": 0,
"type": "domnode"
}
},
"response": {}
},
{
"name": "removePseudoClassLock",
"request": {
"type": "removePseudoClassLock",
"node": {
"_arg": 0,
"type": "domnode"
},
"pseudoClass": {
"_arg": 1,
"type": "primitive"
},
"parents": {
"_option": 2,
"type": "primitive"
}
},
"response": {}
},
{
"name": "clearPseudoClassLocks",
"request": {
"type": "clearPseudoClassLocks",
"node": {
"_arg": 0,
"type": "nullable:domnode"
}
},
"response": {}
},
{
"name": "innerHTML",
"request": {
"type": "innerHTML",
"node": {
"_arg": 0,
"type": "domnode"
}
},
"response": {
"value": {
"_retval": "longstring"
}
}
},
{
"name": "outerHTML",
"request": {
"type": "outerHTML",
"node": {
"_arg": 0,
"type": "domnode"
}
},
"response": {
"value": {
"_retval": "longstring"
}
}
},
{
"name": "setOuterHTML",
"request": {
"type": "setOuterHTML",
"node": {
"_arg": 0,
"type": "domnode"
},
"value": {
"_arg": 1,
"type": "primitive"
}
},
"response": {}
},
{
"name": "removeNode",
"request": {
"type": "removeNode",
"node": {
"_arg": 0,
"type": "domnode"
}
},
"response": {
"nextSibling": {
"_retval": "nullable:domnode"
}
}
},
{
"name": "insertBefore",
"request": {
"type": "insertBefore",
"node": {
"_arg": 0,
"type": "domnode"
},
"parent": {
"_arg": 1,
"type": "domnode"
},
"sibling": {
"_arg": 2,
"type": "nullable:domnode"
}
},
"response": {}
},
{
"name": "getMutations",
"request": {
"type": "getMutations",
"cleanup": {
"_option": 0,
"type": "primitive"
}
},
"response": {
"mutations": {
"_retval": "array:dommutation"
}
}
},
{
"name": "isInDOMTree",
"request": {
"type": "isInDOMTree",
"node": {
"_arg": 0,
"type": "domnode"
}
},
"response": {
"attached": {
"_retval": "boolean"
}
}
},
{
"name": "getNodeActorFromObjectActor",
"request": {
"type": "getNodeActorFromObjectActor",
"objectActorID": {
"_arg": 0,
"type": "string"
}
},
"response": {
"nodeFront": {
"_retval": "nullable:disconnectedNode"
}
}
}
],
"events": {
"new-mutations": {
"type": "newMutations"
},
"picker-node-picked": {
"type": "pickerNodePicked",
"node": {
"_arg": 0,
"type": "disconnectedNode"
}
},
"picker-node-hovered": {
"type": "pickerNodeHovered",
"node": {
"_arg": 0,
"type": "disconnectedNode"
}
},
"highlighter-ready": {
"type": "highlighter-ready"
},
"highlighter-hide": {
"type": "highlighter-hide"
}
}
},
"inspector": {
"category": "actor",
"typeName": "inspector",
"methods": [
{
"name": "getWalker",
"request": {
"type": "getWalker"
},
"response": {
"walker": {
"_retval": "domwalker"
}
}
},
{
"name": "getPageStyle",
"request": {
"type": "getPageStyle"
},
"response": {
"pageStyle": {
"_retval": "pagestyle"
}
}
},
{
"name": "getHighlighter",
"request": {
"type": "getHighlighter",
"autohide": {
"_arg": 0,
"type": "boolean"
}
},
"response": {
"highligter": {
"_retval": "highlighter"
}
}
},
{
"name": "getImageDataFromURL",
"request": {
"type": "getImageDataFromURL",
"url": {
"_arg": 0,
"type": "primitive"
},
"maxDim": {
"_arg": 1,
"type": "nullable:number"
}
},
"response": {
"_retval": "imageData"
}
}
],
"events": {}
},
"call-stack-item": {
"category": "dict",
"typeName": "call-stack-item",
"specializations": {
"name": "string",
"file": "string",
"line": "number"
}
},
"call-details": {
"category": "dict",
"typeName": "call-details",
"specializations": {
"type": "number",
"name": "string",
"stack": "array:call-stack-item"
}
},
"function-call": {
"category": "actor",
"typeName": "function-call",
"methods": [
{
"name": "getDetails",
"request": {
"type": "getDetails"
},
"response": {
"info": {
"_retval": "call-details"
}
}
}
],
"events": {}
},
"call-watcher": {
"category": "actor",
"typeName": "call-watcher",
"methods": [
{
"name": "setup",
"oneway": true,
"request": {
"type": "setup",
"tracedGlobals": {
"_option": 0,
"type": "nullable:array:string"
},
"tracedFunctions": {
"_option": 0,
"type": "nullable:array:string"
},
"startRecording": {
"_option": 0,
"type": "boolean"
},
"performReload": {
"_option": 0,
"type": "boolean"
}
},
"response": {}
},
{
"name": "finalize",
"oneway": true,
"request": {
"type": "finalize"
},
"response": {}
},
{
"name": "isRecording",
"request": {
"type": "isRecording"
},
"response": {
"_retval": "boolean"
}
},
{
"name": "resumeRecording",
"request": {
"type": "resumeRecording"
},
"response": {}
},
{
"name": "pauseRecording",
"request": {
"type": "pauseRecording"
},
"response": {
"calls": {
"_retval": "array:function-call"
}
}
},
{
"name": "eraseRecording",
"request": {
"type": "eraseRecording"
},
"response": {}
}
],
"events": {}
},
"snapshot-image": {
"category": "dict",
"typeName": "snapshot-image",
"specializations": {
"index": "number",
"width": "number",
"height": "number",
"flipped": "boolean",
"pixels": "uint32-array"
}
},
"snapshot-overview": {
"category": "dict",
"typeName": "snapshot-overview",
"specializations": {
"calls": "array:function-call",
"thumbnails": "array:snapshot-image",
"screenshot": "snapshot-image"
}
},
"frame-snapshot": {
"category": "actor",
"typeName": "frame-snapshot",
"methods": [
{
"name": "getOverview",
"request": {
"type": "getOverview"
},
"response": {
"overview": {
"_retval": "snapshot-overview"
}
}
},
{
"name": "generateScreenshotFor",
"request": {
"type": "generateScreenshotFor",
"call": {
"_arg": 0,
"type": "function-call"
}
},
"response": {
"screenshot": {
"_retval": "snapshot-image"
}
}
}
],
"events": {}
},
"canvas": {
"category": "actor",
"typeName": "canvas",
"methods": [
{
"name": "setup",
"oneway": true,
"request": {
"type": "setup",
"reload": {
"_option": 0,
"type": "boolean"
}
},
"response": {}
},
{
"name": "finalize",
"oneway": true,
"request": {
"type": "finalize"
},
"response": {}
},
{
"name": "isInitialized",
"request": {
"type": "isInitialized"
},
"response": {
"initialized": {
"_retval": "boolean"
}
}
},
{
"name": "recordAnimationFrame",
"request": {
"type": "recordAnimationFrame"
},
"response": {
"snapshot": {
"_retval": "frame-snapshot"
}
}
}
],
"events": {}
},
"gl-shader": {
"category": "actor",
"typeName": "gl-shader",
"methods": [
{
"name": "getText",
"request": {
"type": "getText"
},
"response": {
"text": {
"_retval": "string"
}
}
},
{
"name": "compile",
"request": {
"type": "compile",
"text": {
"_arg": 0,
"type": "string"
}
},
"response": {
"error": {
"_retval": "nullable:json"
}
}
}
],
"events": {}
},
"gl-program": {
"category": "actor",
"typeName": "gl-program",
"methods": [
{
"name": "getVertexShader",
"request": {
"type": "getVertexShader"
},
"response": {
"shader": {
"_retval": "gl-shader"
}
}
},
{
"name": "getFragmentShader",
"request": {
"type": "getFragmentShader"
},
"response": {
"shader": {
"_retval": "gl-shader"
}
}
},
{
"name": "highlight",
"oneway": true,
"request": {
"type": "highlight",
"tint": {
"_arg": 0,
"type": "array:number"
}
},
"response": {}
},
{
"name": "unhighlight",
"oneway": true,
"request": {
"type": "unhighlight"
},
"response": {}
},
{
"name": "blackbox",
"oneway": true,
"request": {
"type": "blackbox"
},
"response": {}
},
{
"name": "unblackbox",
"oneway": true,
"request": {
"type": "unblackbox"
},
"response": {}
}
],
"events": {}
},
"webgl": {
"category": "actor",
"typeName": "webgl",
"methods": [
{
"name": "setup",
"oneway": true,
"request": {
"type": "setup",
"reload": {
"_option": 0,
"type": "boolean"
}
},
"response": {}
},
{
"name": "finalize",
"oneway": true,
"request": {
"type": "finalize"
},
"response": {}
},
{
"name": "getPrograms",
"request": {
"type": "getPrograms"
},
"response": {
"programs": {
"_retval": "array:gl-program"
}
}
}
],
"events": {
"program-linked": {
"type": "programLinked",
"program": {
"_arg": 0,
"type": "gl-program"
}
}
}
},
"audionode": {
"category": "actor",
"typeName": "audionode",
"methods": [
{
"name": "getType",
"request": {
"type": "getType"
},
"response": {
"type": {
"_retval": "string"
}
}
},
{
"name": "isSource",
"request": {
"type": "isSource"
},
"response": {
"source": {
"_retval": "boolean"
}
}
},
{
"name": "setParam",
"request": {
"type": "setParam",
"param": {
"_arg": 0,
"type": "string"
},
"value": {
"_arg": 1,
"type": "nullable:primitive"
}
},
"response": {
"error": {
"_retval": "nullable:json"
}
}
},
{
"name": "getParam",
"request": {
"type": "getParam",
"param": {
"_arg": 0,
"type": "string"
}
},
"response": {
"text": {
"_retval": "nullable:primitive"
}
}
},
{
"name": "getParamFlags",
"request": {
"type": "getParamFlags",
"param": {
"_arg": 0,
"type": "string"
}
},
"response": {
"flags": {
"_retval": "nullable:primitive"
}
}
},
{
"name": "getParams",
"request": {
"type": "getParams"
},
"response": {
"params": {
"_retval": "json"
}
}
}
],
"events": {}
},
"webaudio": {
"category": "actor",
"typeName": "webaudio",
"methods": [
{
"name": "setup",
"oneway": true,
"request": {
"type": "setup",
"reload": {
"_option": 0,
"type": "boolean"
}
},
"response": {}
},
{
"name": "finalize",
"oneway": true,
"request": {
"type": "finalize"
},
"response": {}
}
],
"events": {
"start-context": {
"type": "startContext"
},
"connect-node": {
"type": "connectNode",
"source": {
"_option": 0,
"type": "audionode"
},
"dest": {
"_option": 0,
"type": "audionode"
}
},
"disconnect-node": {
"type": "disconnectNode",
"source": {
"_arg": 0,
"type": "audionode"
}
},
"connect-param": {
"type": "connectParam",
"source": {
"_arg": 0,
"type": "audionode"
},
"param": {
"_arg": 1,
"type": "string"
}
},
"change-param": {
"type": "changeParam",
"source": {
"_option": 0,
"type": "audionode"
},
"param": {
"_option": 0,
"type": "string"
},
"value": {
"_option": 0,
"type": "string"
}
},
"create-node": {
"type": "createNode",
"source": {
"_arg": 0,
"type": "audionode"
}
}
}
},
"old-stylesheet": {
"category": "actor",
"typeName": "old-stylesheet",
"methods": [
{
"name": "toggleDisabled",
"request": {
"type": "toggleDisabled"
},
"response": {
"disabled": {
"_retval": "boolean"
}
}
},
{
"name": "fetchSource",
"request": {
"type": "fetchSource"
},
"response": {}
},
{
"name": "update",
"request": {
"type": "update",
"text": {
"_arg": 0,
"type": "string"
},
"transition": {
"_arg": 1,
"type": "boolean"
}
},
"response": {}
}
],
"events": {
"property-change": {
"type": "propertyChange",
"property": {
"_arg": 0,
"type": "string"
},
"value": {
"_arg": 1,
"type": "json"
}
},
"source-load": {
"type": "sourceLoad",
"source": {
"_arg": 0,
"type": "string"
}
},
"style-applied": {
"type": "styleApplied"
}
}
},
"styleeditor": {
"category": "actor",
"typeName": "styleeditor",
"methods": [
{
"name": "newDocument",
"request": {
"type": "newDocument"
},
"response": {}
},
{
"name": "newStyleSheet",
"request": {
"type": "newStyleSheet",
"text": {
"_arg": 0,
"type": "string"
}
},
"response": {
"styleSheet": {
"_retval": "old-stylesheet"
}
}
}
],
"events": {
"document-load": {
"type": "documentLoad",
"styleSheets": {
"_arg": 0,
"type": "array:old-stylesheet"
}
}
}
},
"cookieobject": {
"category": "dict",
"typeName": "cookieobject",
"specializations": {
"name": "string",
"value": "longstring",
"path": "nullable:string",
"host": "string",
"isDomain": "boolean",
"isSecure": "boolean",
"isHttpOnly": "boolean",
"creationTime": "number",
"lastAccessed": "number",
"expires": "number"
}
},
"cookiestoreobject": {
"category": "dict",
"typeName": "cookiestoreobject",
"specializations": {
"total": "number",
"offset": "number",
"data": "array:nullable:cookieobject"
}
},
"storageobject": {
"category": "dict",
"typeName": "storageobject",
"specializations": {
"name": "string",
"value": "longstring"
}
},
"storagestoreobject": {
"category": "dict",
"typeName": "storagestoreobject",
"specializations": {
"total": "number",
"offset": "number",
"data": "array:nullable:storageobject"
}
},
"idbobject": {
"category": "dict",
"typeName": "idbobject",
"specializations": {
"name": "nullable:string",
"db": "nullable:string",
"objectStore": "nullable:string",
"origin": "nullable:string",
"version": "nullable:number",
"objectStores": "nullable:number",
"keyPath": "nullable:string",
"autoIncrement": "nullable:boolean",
"indexes": "nullable:string",
"value": "nullable:longstring"
}
},
"idbstoreobject": {
"category": "dict",
"typeName": "idbstoreobject",
"specializations": {
"total": "number",
"offset": "number",
"data": "array:nullable:idbobject"
}
},
"storeUpdateObject": {
"category": "dict",
"typeName": "storeUpdateObject",
"specializations": {
"changed": "nullable:json",
"deleted": "nullable:json",
"added": "nullable:json"
}
},
"cookies": {
"category": "actor",
"typeName": "cookies",
"methods": [
{
"name": "getStoreObjects",
"request": {
"type": "getStoreObjects",
"host": {
"_arg": 0,
"type": "primitive"
},
"names": {
"_arg": 1,
"type": "nullable:array:string"
},
"options": {
"_arg": 2,
"type": "nullable:json"
}
},
"response": {
"_retval": "cookiestoreobject"
}
}
],
"events": {}
},
"localStorage": {
"category": "actor",
"typeName": "localStorage",
"methods": [
{
"name": "getStoreObjects",
"request": {
"type": "getStoreObjects",
"host": {
"_arg": 0,
"type": "primitive"
},
"names": {
"_arg": 1,
"type": "nullable:array:string"
},
"options": {
"_arg": 2,
"type": "nullable:json"
}
},
"response": {
"_retval": "storagestoreobject"
}
}
],
"events": {}
},
"sessionStorage": {
"category": "actor",
"typeName": "sessionStorage",
"methods": [
{
"name": "getStoreObjects",
"request": {
"type": "getStoreObjects",
"host": {
"_arg": 0,
"type": "primitive"
},
"names": {
"_arg": 1,
"type": "nullable:array:string"
},
"options": {
"_arg": 2,
"type": "nullable:json"
}
},
"response": {
"_retval": "storagestoreobject"
}
}
],
"events": {}
},
"indexedDB": {
"category": "actor",
"typeName": "indexedDB",
"methods": [
{
"name": "getStoreObjects",
"request": {
"type": "getStoreObjects",
"host": {
"_arg": 0,
"type": "primitive"
},
"names": {
"_arg": 1,
"type": "nullable:array:string"
},
"options": {
"_arg": 2,
"type": "nullable:json"
}
},
"response": {
"_retval": "idbstoreobject"
}
}
],
"events": {}
},
"storelist": {
"category": "dict",
"typeName": "storelist",
"specializations": {
"cookies": "cookies",
"localStorage": "localStorage",
"sessionStorage": "sessionStorage",
"indexedDB": "indexedDB"
}
},
"storage": {
"category": "actor",
"typeName": "storage",
"methods": [
{
"name": "listStores",
"request": {
"type": "listStores"
},
"response": {
"_retval": "storelist"
}
}
],
"events": {
"stores-update": {
"type": "storesUpdate",
"data": {
"_arg": 0,
"type": "storeUpdateObject"
}
},
"stores-cleared": {
"type": "storesCleared",
"data": {
"_arg": 0,
"type": "json"
}
},
"stores-reloaded": {
"type": "storesRelaoded",
"data": {
"_arg": 0,
"type": "json"
}
}
}
},
"gcli": {
"category": "actor",
"typeName": "gcli",
"methods": [
{
"name": "specs",
"request": {
"type": "specs"
},
"response": {
"_retval": "json"
}
},
{
"name": "execute",
"request": {
"type": "execute",
"typed": {
"_arg": 0,
"type": "string"
}
},
"response": {
"_retval": "json"
}
},
{
"name": "state",
"request": {
"type": "state",
"typed": {
"_arg": 0,
"type": "string"
},
"start": {
"_arg": 1,
"type": "number"
},
"rank": {
"_arg": 2,
"type": "number"
}
},
"response": {
"_retval": "json"
}
},
{
"name": "typeparse",
"request": {
"type": "typeparse",
"typed": {
"_arg": 0,
"type": "string"
},
"param": {
"_arg": 1,
"type": "string"
}
},
"response": {
"_retval": "json"
}
},
{
"name": "typeincrement",
"request": {
"type": "typeincrement",
"typed": {
"_arg": 0,
"type": "string"
},
"param": {
"_arg": 1,
"type": "string"
}
},
"response": {
"_retval": "string"
}
},
{
"name": "typedecrement",
"request": {
"type": "typedecrement",
"typed": {
"_arg": 0,
"type": "string"
},
"param": {
"_arg": 1,
"type": "string"
}
},
"response": {
"_retval": "string"
}
},
{
"name": "selectioninfo",
"request": {
"type": "selectioninfo",
"typed": {
"_arg": 0,
"type": "string"
},
"param": {
"_arg": 1,
"type": "string"
},
"action": {
"_arg": 1,
"type": "string"
}
},
"response": {
"_retval": "json"
}
}
],
"events": {}
},
"memory": {
"category": "actor",
"typeName": "memory",
"methods": [
{
"name": "measure",
"request": {
"type": "measure"
},
"response": {
"_retval": "json"
}
}
],
"events": {}
},
"eventLoopLag": {
"category": "actor",
"typeName": "eventLoopLag",
"methods": [
{
"name": "start",
"request": {
"type": "start"
},
"response": {
"success": {
"_retval": "number"
}
}
},
{
"name": "stop",
"request": {
"type": "stop"
},
"response": {}
}
],
"events": {
"event-loop-lag": {
"type": "event-loop-lag",
"time": {
"_arg": 0,
"type": "number"
}
}
}
},
"preference": {
"category": "actor",
"typeName": "preference",
"methods": [
{
"name": "getBoolPref",
"request": {
"type": "getBoolPref",
"value": {
"_arg": 0,
"type": "primitive"
}
},
"response": {
"value": {
"_retval": "boolean"
}
}
},
{
"name": "getCharPref",
"request": {
"type": "getCharPref",
"value": {
"_arg": 0,
"type": "primitive"
}
},
"response": {
"value": {
"_retval": "string"
}
}
},
{
"name": "getIntPref",
"request": {
"type": "getIntPref",
"value": {
"_arg": 0,
"type": "primitive"
}
},
"response": {
"value": {
"_retval": "number"
}
}
},
{
"name": "getAllPrefs",
"request": {
"type": "getAllPrefs"
},
"response": {
"value": {
"_retval": "json"
}
}
},
{
"name": "setBoolPref",
"request": {
"type": "setBoolPref",
"name": {
"_arg": 0,
"type": "primitive"
},
"value": {
"_arg": 1,
"type": "primitive"
}
},
"response": {}
},
{
"name": "setCharPref",
"request": {
"type": "setCharPref",
"name": {
"_arg": 0,
"type": "primitive"
},
"value": {
"_arg": 1,
"type": "primitive"
}
},
"response": {}
},
{
"name": "setIntPref",
"request": {
"type": "setIntPref",
"name": {
"_arg": 0,
"type": "primitive"
},
"value": {
"_arg": 1,
"type": "primitive"
}
},
"response": {}
},
{
"name": "clearUserPref",
"request": {
"type": "clearUserPref",
"name": {
"_arg": 0,
"type": "primitive"
}
},
"response": {}
}
],
"events": {}
},
"device": {
"category": "actor",
"typeName": "device",
"methods": [
{
"name": "getDescription",
"request": {
"type": "getDescription"
},
"response": {
"value": {
"_retval": "json"
}
}
},
{
"name": "getWallpaper",
"request": {
"type": "getWallpaper"
},
"response": {
"value": {
"_retval": "longstring"
}
}
},
{
"name": "screenshotToDataURL",
"request": {
"type": "screenshotToDataURL"
},
"response": {
"value": {
"_retval": "longstring"
}
}
},
{
"name": "getRawPermissionsTable",
"request": {
"type": "getRawPermissionsTable"
},
"response": {
"value": {
"_retval": "json"
}
}
}
],
"events": {}
}
},
"from": "root"
}
},{}],25:[function(_dereq_,module,exports){
"use strict";
var Class = _dereq_("./class").Class;
var util = _dereq_("./util");
var keys = util.keys;
var values = util.values;
var pairs = util.pairs;
var query = util.query;
var findPath = util.findPath;
var EventTarget = _dereq_("./event").EventTarget;
var TypeSystem = Class({
constructor: function(client) {
var types = Object.create(null);
var specification = Object.create(null);
this.specification = specification;
this.types = types;
var typeFor = function typeFor(typeName) {
typeName = typeName || "primitive";
if (!types[typeName]) {
defineType(typeName);
}
return types[typeName];
};
this.typeFor = typeFor;
var defineType = function(descriptor) {
var type = void(0);
if (typeof(descriptor) === "string") {
if (descriptor.indexOf(":") > 0)
type = makeCompoundType(descriptor);
else if (descriptor.indexOf("#") > 0)
type = new ActorDetail(descriptor);
else if (specification[descriptor])
type = makeCategoryType(specification[descriptor]);
} else {
type = makeCategoryType(descriptor);
}
if (type)
types[type.name] = type;
else
throw TypeError("Invalid type: " + descriptor);
};
this.defineType = defineType;
var makeCompoundType = function(name) {
var index = name.indexOf(":");
var baseType = name.slice(0, index);
var subType = name.slice(index + 1);
return baseType === "array" ? new ArrayOf(subType) :
baseType === "nullable" ? new Maybe(subType) :
null;
};
var makeCategoryType = function(descriptor) {
var category = descriptor.category;
return category === "dict" ? new Dictionary(descriptor) :
category === "actor" ? new Actor(descriptor) :
null;
};
var read = function(input, context, typeName) {
return typeFor(typeName).read(input, context);
}
this.read = read;
var write = function(input, context, typeName) {
return typeFor(typeName).write(input);
};
this.write = write;
var Type = Class({
constructor: function() {
},
get name() {
return this.category ? this.category + ":" + this.type :
this.type;
},
read: function(input, context) {
throw new TypeError("`Type` subclass must implement `read`");
},
write: function(input, context) {
throw new TypeError("`Type` subclass must implement `write`");
}
});
var Primitve = Class({
extends: Type,
constuctor: function(type) {
this.type = type;
},
read: function(input, context) {
return input;
},
write: function(input, context) {
return input;
}
});
var Maybe = Class({
extends: Type,
category: "nullable",
constructor: function(type) {
this.type = type;
},
read: function(input, context) {
return input === null ? null :
input === void(0) ? void(0) :
read(input, context, this.type);
},
write: function(input, context) {
return input === null ? null :
input === void(0) ? void(0) :
write(input, context, this.type);
}
});
var ArrayOf = Class({
extends: Type,
category: "array",
constructor: function(type) {
this.type = type;
},
read: function(input, context) {
var type = this.type;
return input.map(function($) { return read($, context, type) });
},
write: function(input, context) {
var type = this.type;
return input.map(function($) { return write($, context, type) });
}
});
var makeField = function makeField(name, type) {
return {
enumerable: true,
configurable: true,
get: function() {
Object.defineProperty(this, name, {
configurable: false,
value: read(this.state[name], this.context, type)
});
return this[name];
}
}
};
var makeFields = function(descriptor) {
return pairs(descriptor).reduce(function(fields, pair) {
var name = pair[0], type = pair[1];
fields[name] = makeField(name, type);
return fields;
}, {});
}
var DictionaryType = Class({});
var Dictionary = Class({
extends: Type,
category: "dict",
get name() { return this.type; },
constructor: function(descriptor) {
this.type = descriptor.typeName;
this.types = descriptor.specializations;
var proto = Object.defineProperties({
extends: DictionaryType,
constructor: function(state, context) {
Object.defineProperties(this, {
state: {
enumerable: false,
writable: true,
configurable: true,
value: state
},
context: {
enumerable: false,
writable: false,
configurable: true,
value: context
}
});
}
}, makeFields(this.types));
this.class = new Class(proto);
},
read: function(input, context) {
return new this.class(input, context);
},
write: function(input, context) {
var output = {};
for (var key in input) {
output[key] = write(value, context, types[key]);
}
return output;
}
});
var makeMethods = function(descriptors) {
return descriptors.reduce(function(methods, descriptor) {
methods[descriptor.name] = {
enumerable: true,
configurable: true,
writable: false,
value: makeMethod(descriptor)
};
return methods;
}, {});
};
var makeEvents = function(descriptors) {
return pairs(descriptors).reduce(function(events, pair) {
var name = pair[0], descriptor = pair[1];
var event = new Event(name, descriptor);
events[event.eventType] = event;
return events;
}, Object.create(null));
};
var Actor = Class({
extends: Type,
category: "actor",
get name() { return this.type; },
constructor: function(descriptor) {
this.type = descriptor.typeName;
var events = makeEvents(descriptor.events || {});
var fields = makeFields(descriptor.fields || {});
var methods = makeMethods(descriptor.methods || []);
var proto = {
extends: Front,
constructor: function() {
Front.apply(this, arguments);
},
events: events
};
Object.defineProperties(proto, fields);
Object.defineProperties(proto, methods);
this.class = Class(proto);
},
read: function(input, context, detail) {
var state = typeof(input) === "string" ? { actor: input } : input;
var actor = client.get(state.actor) || new this.class(state, context);
actor.form(state, detail, context);
return actor;
},
write: function(input, context, detail) {
return input.id;
}
});
exports.Actor = Actor;
var ActorDetail = Class({
extends: Actor,
constructor: function(name) {
var parts = name.split("#")
this.actorType = parts[0]
this.detail = parts[1];
},
read: function(input, context) {
return typeFor(this.actorType).read(input, context, this.detail);
},
write: function(input, context) {
return typeFor(this.actorType).write(input, context, this.detail);
}
});
exports.ActorDetail = ActorDetail;
var Method = Class({
extends: Type,
constructor: function(descriptor) {
this.type = descriptor.name;
this.path = findPath(descriptor.response, "_retval");
this.responseType = this.path && query(descriptor.response, this.path)._retval;
this.requestType = descriptor.request.type;
var params = [];
for (var key in descriptor.request) {
if (key !== "type") {
var param = descriptor.request[key];
var index = "_arg" in param ? param._arg : param._option;
var isParam = param._option === index;
var isArgument = param._arg === index;
params[index] = {
type: param.type,
key: key,
index: index,
isParam: isParam,
isArgument: isArgument
};
}
}
this.params = params;
},
read: function(input, context) {
return read(query(input, this.path), context, this.responseType);
},
write: function(input, context) {
return this.params.reduce(function(result, param) {
result[param.key] = write(input[param.index], context, param.type);
return result;
}, {type: this.type});
}
});
exports.Method = Method;
var profiler = function(method, id) {
return function() {
var start = new Date();
return method.apply(this, arguments).then(function(result) {
var end = new Date();
client.telemetry.add(id, +end - start);
return result;
});
};
};
var destructor = function(method) {
return function() {
return method.apply(this, arguments).then(function(result) {
client.release(this);
return result;
});
};
};
function makeMethod(descriptor) {
var type = new Method(descriptor);
var method = descriptor.oneway ? makeUnidirecationalMethod(descriptor, type) :
makeBidirectionalMethod(descriptor, type);
if (descriptor.telemetry)
method = profiler(method);
if (descriptor.release)
method = destructor(method);
return method;
}
var makeUnidirecationalMethod = function(descriptor, type) {
return function() {
var packet = type.write(arguments, this);
packet.to = this.id;
client.send(packet);
return Promise.resolve(void(0));
};
};
var makeBidirectionalMethod = function(descriptor, type) {
return function() {
var context = this.context;
var packet = type.write(arguments, context);
var context = this.context;
packet.to = this.id;
return client.request(packet).then(function(packet) {
return type.read(packet, context);
});
};
};
var Event = Class({
constructor: function(name, descriptor) {
this.name = descriptor.type || name;
this.eventType = descriptor.type || name;
this.types = Object.create(null);
var types = this.types;
for (var key in descriptor) {
if (key === "type") {
types[key] = "string";
} else {
types[key] = descriptor[key].type;
}
}
},
read: function(input, context) {
var output = {};
var types = this.types;
for (var key in input) {
output[key] = read(input[key], context, types[key]);
}
return output;
},
write: function(input, context) {
var output = {};
var types = this.types;
for (var key in this.types) {
output[key] = write(input[key], context, types[key]);
}
return output;
}
});
var Front = Class({
extends: EventTarget,
EventTarget: EventTarget,
constructor: function(state) {
this.EventTarget();
Object.defineProperties(this, {
state: {
enumerable: false,
writable: true,
configurable: true,
value: state
}
});
client.register(this);
},
get id() {
return this.state.actor;
},
get context() {
return this;
},
form: function(state, detail, context) {
if (this.state !== state) {
if (detail) {
this.state[detail] = state[detail];
} else {
pairs(state).forEach(function(pair) {
var key = pair[0], value = pair[1];
this.state[key] = value;
}, this);
}
}
if (context) {
client.supervise(context, this);
}
},
requestTypes: function() {
return client.request({
to: this.id,
type: "requestTypes"
}).then(function(packet) {
return packet.requestTypes;
});
}
});
types.primitive = new Primitve("primitive");
types.string = new Primitve("string");
types.number = new Primitve("number");
types.boolean = new Primitve("boolean");
types.json = new Primitve("json");
types.array = new Primitve("array");
},
registerTypes: function(descriptor) {
var specification = this.specification;
values(descriptor.types).forEach(function(descriptor) {
specification[descriptor.typeName] = descriptor;
});
}
});
exports.TypeSystem = TypeSystem;
},{"./class":3,"./event":5,"./util":26}],26:[function(_dereq_,module,exports){
"use strict";
var keys = Object.keys;
exports.keys = keys;
// Returns array of values for the given object.
var values = function(object) {
return keys(object).map(function(key) {
return object[key]
});
};
exports.values = values;
// Returns [key, value] pairs for the given object.
var pairs = function(object) {
return keys(object).map(function(key) {
return [key, object[key]]
});
};
exports.pairs = pairs;
// Queries an object for the field nested with in it.
var query = function(object, path) {
return path.reduce(function(object, entry) {
return object && object[entry]
}, object);
};
exports.query = query;
var isObject = function(x) {
return x && typeof(x) === "object"
}
var findPath = function(object, key) {
var path = void(0);
if (object && typeof(object) === "object") {
var names = keys(object);
if (names.indexOf(key) >= 0) {
path = [];
} else {
var index = 0;
var count = names.length;
while (index < count && !path){
var head = names[index];
var tail = findPath(object[head], key);
path = tail ? [head].concat(tail) : tail;
index = index + 1
}
}
}
return path;
};
exports.findPath = findPath;
},{}]},{},[1])
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2VuZXJhdGVkLmpzIiwic291cmNlcyI6WyIvVXNlcnMvZ296YWxhL1Byb2plY3RzL3ZvbGNhbi9ub2RlX21vZHVsZXMvYnJvd3NlcmlmeS9ub2RlX21vZHVsZXMvYnJvd3Nlci1wYWNrL19wcmVsdWRlLmpzIiwiL1VzZXJzL2dvemFsYS9Qcm9qZWN0cy92b2xjYW4vYnJvd3Nlci9pbmRleC5qcyIsIi9Vc2Vycy9nb3phbGEvUHJvamVjdHMvdm9sY2FuL2Jyb3dzZXIvcHJvbWlzZS5qcyIsIi9Vc2Vycy9nb3phbGEvUHJvamVjdHMvdm9sY2FuL2NsYXNzLmpzIiwiL1VzZXJzL2dvemFsYS9Qcm9qZWN0cy92b2xjYW4vY2xpZW50LmpzIiwiL1VzZXJzL2dvemFsYS9Qcm9qZWN0cy92b2xjYW4vZXZlbnQuanMiLCIvVXNlcnMvZ296YWxhL1Byb2plY3RzL3ZvbGNhbi9ub2RlX21vZHVsZXMvYnJvd3NlcmlmeS9ub2RlX21vZHVsZXMvZXZlbnRzL2V2ZW50cy5qcyIsIi9Vc2Vycy9nb3phbGEvUHJvamVjdHMvdm9sY2FuL25vZGVfbW9kdWxlcy9lczYtc3ltYm9sL2luZGV4LmpzIiwiL1VzZXJzL2dvemFsYS9Qcm9qZWN0cy92b2xjYW4vbm9kZV9tb2R1bGVzL2VzNi1zeW1ib2wvaXMtaW1wbGVtZW50ZWQuanMiLCIvVXNlcnMvZ296YWxhL1Byb2plY3RzL3ZvbGNhbi9ub2RlX21vZHVsZXMvZXM2LXN5bWJvbC9ub2RlX21vZHVsZXMvZC9pbmRleC5qcyIsIi9Vc2Vycy9nb3phbGEvUHJvamVjdHMvdm9sY2FuL25vZGVfbW9kdWxlcy9lczYtc3ltYm9sL25vZGVfbW9kdWxlcy9lczUtZXh0L29iamVjdC9hc3NpZ24vaW5kZXguanMiLCIvVXNlcnMvZ296YWxhL1Byb2plY3RzL3ZvbGNhbi9ub2RlX21vZHVsZXMvZXM2LXN5bWJvbC9ub2RlX21vZHVsZXMvZXM1LWV4dC9vYmplY3QvYXNzaWduL2lzLWltcGxlbWVudGVkLmpzIiwiL1VzZXJzL2dvemFsYS9Qcm9qZWN0cy92b2xjYW4vbm9kZV9tb2R1bGVzL2VzNi1zeW1ib2wvbm9kZV9tb2R1bGVzL2VzNS1leHQvb2JqZWN0L2Fzc2lnbi9zaGltLmpzIiwiL1VzZXJzL2dvemFsYS9Qcm9qZWN0cy92b2xjYW4vbm9kZV9tb2R1bGVzL2VzNi1zeW1ib2wvbm9kZV9tb2R1bGVzL2VzNS1leHQvb2JqZWN0L2lzLWNhbGxhYmxlLmpzIiwiL1VzZXJzL2dvemFsYS9Qcm9qZWN0cy92b2xjYW4vbm9kZV9tb2R1bGVzL2VzNi1zeW1ib2wvbm9kZV9tb2R1bGVzL2VzNS1leHQvb2JqZWN0L2tleXMvaW5kZXguanMiLCIvVXNlcnMvZ296YWxhL1Byb2plY3RzL3ZvbGNhbi9ub2RlX21vZHVsZXMvZXM2LXN5bWJvbC9ub2RlX21vZHVsZXMvZXM1LWV4dC9vYmplY3Qva2V5cy9pcy1pbXBsZW1lbnRlZC5qcyIsIi9Vc2Vycy9nb3phbGEvUHJvamVjdHMvdm9sY2FuL25vZGVfbW9kdWxlcy9lczYtc3ltYm9sL25vZGVfbW9kdWxlcy9lczUtZXh0L29iamVjdC9rZXlzL3NoaW0uanMiLCIvVXNlcnMvZ296YWxhL1Byb2plY3RzL3ZvbGNhbi9ub2RlX21vZHVsZXMvZXM2LXN5bWJvbC9ub2RlX21vZHVsZXMvZXM1LWV4dC9vYmplY3Qvbm9ybWFsaXplLW9wdGlvbnMuanMiLCIvVXNlcnMvZ296YWxhL1Byb2plY3RzL3ZvbGNhbi9ub2RlX21vZHVsZXMvZXM2LXN5bWJvbC9ub2RlX21vZHVsZXMvZXM1LWV4dC9vYmplY3QvdmFsaWQtdmFsdWUuanMiLCIvVXNlcnMvZ296YWxhL1Byb2plY3RzL3ZvbGNhbi9ub2RlX21vZHVsZXMvZXM2LXN5bWJvbC9ub2RlX21vZHVsZXMvZXM1LWV4dC9zdHJpbmcvIy9jb250YWlucy9pbmRleC5qcyIsIi9Vc2Vycy9nb3phbGEvUHJvamVjdHMvdm9sY2FuL25vZGVfbW9kdWxlcy9lczYtc3ltYm9sL25vZGVfbW9kdWxlcy9lczUtZXh0L3N0cmluZy8jL2NvbnRhaW5zL2lzLWltcGxlbWVudGVkLmpzIiwiL1VzZXJzL2dvemFsYS9Qcm9qZWN0cy92b2xjYW4vbm9kZV9tb2R1bGVzL2VzNi1zeW1ib2wvbm9kZV9tb2R1bGVzL2VzNS1leHQvc3RyaW5nLyMvY29udGFpbnMvc2hpbS5qcyIsIi9Vc2Vycy9nb3phbGEvUHJvamVjdHMvdm9sY2FuL25vZGVfbW9kdWxlcy9lczYtc3ltYm9sL3BvbHlmaWxsLmpzIiwiL1VzZXJzL2dvemFsYS9Qcm9qZWN0cy92b2xjYW4vc3BlY2lmaWNhdGlvbi9jb3JlLmpzb24iLCIvVXNlcnMvZ296YWxhL1Byb2plY3RzL3ZvbGNhbi9zcGVjaWZpY2F0aW9uL3Byb3RvY29sLmpzb24iLCIvVXNlcnMvZ296YWxhL1Byb2plY3RzL3ZvbGNhbi90eXBlLXN5c3RlbS5qcyIsIi9Vc2Vycy9nb3phbGEvUHJvamVjdHMvdm9sY2FuL3V0aWwuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUNBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUNUQTtBQUNBO0FBQ0E7QUFDQTs7QUNIQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQ3RCQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ
(1)
});