7 |
8 | This script is to be run with Rhino[1], the JavaScript Engine written in Java,
9 | on the command line.
10 |
11 | Usage:
12 | java org.mozilla.javascript.tools.shell.Main beautify-cl.js
13 |
14 | You are free to use this in any way you want, in case you find this useful or working for you.
15 |
16 | [1] http://www.mozilla.org/rhino/
17 |
18 | */
19 | load("beautify.js");
20 | load("HTML-Beautify.js");
21 |
22 |
23 | function print_usage() {
24 | print("Usage: java org.mozilla.javascript.tools.shell.Main beautify-cl.js [options] [file || URL]\n");
25 | print("Reads from standard input if no file or URL is specified.\n");
26 | print("Options:");
27 | print("-i NUM\tIndent size (1 for TAB)");
28 | print("-n\tPreserve newlines");
29 | print("-p\tJSLint-pedantic mode, currently only adds space between \"function ()\"");
30 | print("-h\tPrint this help\n");
31 | print("Examples:");
32 | print("beautify-cl.js -i 2 example.js");
33 | print("beautify-cl.js -i 1 http://www.example.org/example.js\n");
34 | }
35 |
36 |
37 | function parse_opts(args) {
38 | var options = [];
39 | while (args.length > 0) {
40 | param = args.shift();
41 | if (param.substr(0, 1) == '-') {
42 | switch (param) {
43 | case "-i":
44 | options.indent = args.shift();
45 | break;
46 | case "-p":
47 | options.jslint_pedantic = true;
48 | break;
49 | case "-n":
50 | options.preserve_newlines = true;
51 | break;
52 | case "-h":
53 | print_usage();
54 | quit();
55 | break;
56 | default:
57 | print("Unknown parameter: " + param + "\n");
58 | print("Aborting.");
59 | quit();
60 | }
61 | } else {
62 | options.source = param;
63 | }
64 | }
65 | return options;
66 | }
67 |
68 |
69 | function do_js_beautify() {
70 | var js_source = '';
71 | if (options.source) { // Check if source argument is an URL
72 | if (options.source.substring(0, 4) === 'http') {
73 | js_source = readUrl(options.source);
74 | } else { // Otherwise, read from file
75 | js_source = readFile(options.source);
76 | }
77 | } else { // read from stdin
78 | importPackage(java.io);
79 | importPackage(java.lang);
80 | var stdin = new BufferedReader(new InputStreamReader(System['in']));
81 | var lines = [];
82 |
83 | // read stdin buffer until EOF
84 | while (stdin.ready()) {
85 | lines.push(stdin.readLine());
86 | }
87 | if (lines.length) js_source = lines.join("\n");
88 | }
89 | js_source = js_source.replace(/^\s+/, '');
90 | var indent_size = options.indent || 2;
91 | var preserve_newlines = options.preserve_newlines || false;
92 | var indent_char = ' ';
93 | var result;
94 | if (indent_size == 1) {
95 | indent_char = '\t';
96 | }
97 | if (js_source && js_source[0] === '<') {
98 | result = style_html(js_source, indent_size, indent_char, 80);
99 | } else {
100 | result = js_beautify(js_source, {
101 | indent_size: indent_size,
102 | indent_char: indent_char,
103 | preserve_newlines: preserve_newlines,
104 | space_after_anon_function: options.jslint_pedantic
105 | });
106 | }
107 | return result;
108 | }
109 |
110 |
111 | options = parse_opts(arguments);
112 | print(do_js_beautify());
113 |
--------------------------------------------------------------------------------
/Support/JSHint Prefs App/prefs.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | JSHint Prefs
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
63 |
64 |
65 |
66 |
--------------------------------------------------------------------------------
/Support/bin/packr-1.0.2/lib/packr/regexp_group.rb:
--------------------------------------------------------------------------------
1 | class Packr
2 | class RegexpGroup
3 |
4 | attr_accessor :values
5 |
6 | IGNORE = "\\0"
7 | BACK_REF = /\\(\d+)/
8 | ESCAPE_CHARS = /\\./
9 | ESCAPE_BRACKETS = /\(\?[:=!]|\[[^\]]+\]/
10 | BRACKETS = /\(/
11 | KEYS = "~"
12 |
13 | def initialize(values, flags = nil)
14 | @values = []
15 | values.each { |key, value| @values << Item.new(key, value) }
16 | if flags && flags.is_a(String)
17 | @ignore_case = !!(flags =~ /i/)
18 | end
19 | end
20 |
21 | def union(*args)
22 | values = {}
23 | @values.each { |item| values[item.expression] = item.replacement }
24 | args.each do |arg|
25 | arg.values.each { |item| values[item.expression] = item.replacement }
26 | end
27 | self.class.new(values)
28 | end
29 |
30 | def exec(string, &replacement)
31 | string = string.to_s
32 | regexp = value_of
33 |
34 | replacement ||= lambda do |match|
35 | return "" if match.nil?
36 | arguments = [match] + $~.captures + [$~.begin(0), string]
37 | offset, result = 1, ""
38 | @values.each do |item|
39 | nxt = offset + item.length + 1
40 | if arguments[offset] # do we have a result?
41 | rep = item.replacement
42 | if rep.is_a?(Proc)
43 | args = arguments[offset...nxt]
44 | index = arguments[-2]
45 | result = rep.call *(args + [index, string])
46 | else
47 | result = rep.is_a?(Numeric) ? arguments[offset + rep] : rep.to_s
48 | end
49 | end
50 | offset = nxt
51 | end
52 | result
53 | end
54 |
55 | replacement.is_a?(Proc) ? string.gsub(regexp, &replacement) :
56 | string.gsub(regexp, replacement.to_s)
57 | end
58 |
59 | def test(string)
60 | exec(string) != string
61 | end
62 |
63 | def to_s
64 | length = 0
65 | "(" + @values.map { |item|
66 | # Fix back references.
67 | ref = item.to_s.gsub(BACK_REF) { |m| "\\" + (1 + $1.to_i + length).to_s }
68 | length += item.length + 1
69 | ref
70 | }.join(")|(") + ")"
71 | end
72 |
73 | def value_of(type = nil)
74 | return self if type == Object
75 | flag = @ignore_case ? Regexp::IGNORECASE : nil
76 | Regexp.new(self.to_s, flag)
77 | end
78 |
79 | class Item
80 | attr_accessor :expression, :length, :replacement
81 |
82 | def initialize(expression, replacement)
83 | @expression = expression.is_a?(Regexp) ? expression.source : expression.to_s
84 |
85 | if replacement.is_a?(Numeric)
86 | replacement = "\\" + replacement.to_s
87 | elsif replacement.nil?
88 | replacement = ""
89 | end
90 |
91 | # does the pattern use sub-expressions?
92 | if replacement.is_a?(String) and replacement =~ /\\(\d+)/
93 | # a simple lookup? (e.g. "\2")
94 | if replacement.gsub(/\n/, " ") =~ /^\\\d+$/
95 | # store the index (used for fast retrieval of matched strings)
96 | replacement = replacement[1..-1].to_i
97 | else # a complicated lookup (e.g. "Hello \2 \1")
98 | # build a function to do the lookup
99 | q = (replacement.gsub(/\\./, "") =~ /'/) ? '"' : "'"
100 | replacement = replacement.gsub(/\r/, "\\r").gsub(/\\(\d+)/,
101 | q + "+(args[\\1]||" + q+q + ")+" + q)
102 | replacement_string = q + replacement.gsub(/(['"])\1\+(.*)\+\1\1$/, '\1') + q
103 | replacement = lambda { |*args| eval(replacement_string) }
104 | end
105 | end
106 |
107 | @length = RegexpGroup.count(@expression)
108 | @replacement = replacement
109 | end
110 |
111 | def to_s
112 | @expression
113 | end
114 | end
115 |
116 | def self.count(expression)
117 | expression = expression.to_s.gsub(ESCAPE_CHARS, "").gsub(ESCAPE_BRACKETS, "")
118 | expression.scan(BRACKETS).length
119 | end
120 |
121 | end
122 | end
123 |
--------------------------------------------------------------------------------
/Support/node_modules/jstransform/README.md:
--------------------------------------------------------------------------------
1 | # JSTransform [](https://travis-ci.org/facebook/jstransform)
2 |
3 | A simple utility for pluggable JS syntax transforms using the esprima parser.
4 |
5 | * Makes it simple to write and plug-in syntax transformations
6 | * Makes it simple to coalesce multiple syntax transformations in a single pass of the AST
7 | * Gives complete control over the formatting of the output on a per-transformation basis
8 | * Supports source map generation
9 | * Comes pre-bundled with a small set of (optional) ES6 -> ES5 transforms
10 |
11 | NOTE: If you're looking for a library for writing new greenfield JS transformations, consider looking at the [Recast](https://github.com/benjamn/recast) library instead of jstransform. We are still actively supporting jstransform (and intend to for the foreseeable future), but longer term we would like to direct efforts toward Recast. Recast does a far better job of supporting a multi-pass JS transformation pipeline, and this is important when attempting to apply many transformations to a source file.
12 |
13 | ## Examples
14 | Using a pre-bundled or existing transform:
15 | ```js
16 | /**
17 | * Reads a source file that may (or may not) contain ES6 classes, transforms it
18 | * to ES5 compatible code using the pre-bundled ES6 class visitors, and prints
19 | * out the result.
20 | */
21 | var es6ClassVisitors = require('jstransform/visitors/es6-class-visitors').visitorList;
22 | var fs = require('fs');
23 | var jstransform = require('jstransform');
24 |
25 | var originalFileContents = fs.readFileSync('path/to/original/file.js', 'utf-8');
26 |
27 | var transformedFileData = jstransform.transform(
28 | es6ClassVisitors,
29 | originalFileContents
30 | );
31 |
32 | console.log(transformedFileData.code);
33 | ```
34 |
35 | Using multiple pre-bundled or existing transforms at once:
36 | ```js
37 | /**
38 | * Reads a source file that may (or may not) contain ES6 classes *or* arrow
39 | * functions, transforms them to ES5 compatible code using the pre-bundled ES6
40 | * visitors, and prints out the result.
41 | */
42 | var es6ArrowFuncVisitors = require('jstransform/visitors/es6-arrow-function-visitors').visitorList;
43 | var es6ClassVisitors = require('jstransform/visitors/es6-class-visitors').visitorList;
44 | var jstransform = require('jstransform');
45 |
46 | // Normally you'd read this from the filesystem, but I'll just use a string here
47 | // to simplify the example.
48 | var originalFileContents = "var a = (param1) => param1; class FooClass {}";
49 |
50 | var transformedFileData = jstransform.transform(
51 | es6ClassVisitors.concat(es6ArrowFuncVisitors),
52 | originalFileContents
53 | );
54 |
55 | // var a = function(param1) {return param1;}; function FooClass(){"use strict";}
56 | console.log(transformedFileData.code);
57 | ```
58 |
59 | Writing a simple custom transform:
60 | ```js
61 | /**
62 | * Creates a custom transformation visitor that prefixes all calls to the
63 | * `eval()` function with a call to `alert()` saying how much of a clown you are
64 | * for using eval.
65 | */
66 | var jstransform = require('jstransform');
67 | var utils = require('jstransform/src/utils');
68 |
69 | var Syntax = jstransform.Syntax;
70 |
71 | function visitEvalCallExpressions(traverse, node, path, state) {
72 | // Appends an alert() call to the output buffer *before* the visited node
73 | // (in this case the eval call) is appended to the output buffer
74 | utils.append('alert("...eval?...really?...");', state);
75 |
76 | // Now we copy the eval expression to the output buffer from the original
77 | // source
78 | utils.catchup(node.range[1], state);
79 | }
80 | visitEvalCallExpressions.test = function(node, path, state) {
81 | return node.type === Syntax.CallExpression
82 | && node.callee.type === Syntax.Identifier
83 | && node.callee.name === 'eval';
84 | };
85 |
86 | // Normally you'd read this from the filesystem, but I'll just use a string here
87 | // to simplify the example.
88 | var originalFileContents = "eval('foo');";
89 |
90 | var transformedFileData = jstransform.transform(
91 | [visitEvalCallExpressions], // Multiple visitors may be applied at once, so an
92 | // array is always expected for the first argument
93 | originalFileContents
94 | );
95 |
96 | // alert("...eval?...really?...");eval('foo');
97 | console.log(transformedFileData.code);
98 | ```
99 |
--------------------------------------------------------------------------------
/Support/bin/js-beautify/sanitytest.js:
--------------------------------------------------------------------------------
1 | //
2 | // simple testing interface
3 | // written by Einar Lielmanis, einar@jsbeautifier.org
4 | //
5 | // usage:
6 | //
7 | // var t = new SanityTest(function (x) { return x; }, 'my function');
8 | // t.expect('input', 'output');
9 | // t.expect('a', 'a');
10 | // output_somewhere(t.results()); // good for , html safe-ish
11 | // alert(t.results_raw()); // html unescaped
12 |
13 |
14 | function SanityTest (func, test_name) {
15 |
16 | var test_func = func || function (x) {
17 | return x;
18 | }
19 |
20 | var test_name = test_name || '';
21 |
22 | var n_failed = 0;
23 | var n_succeeded = 0;
24 |
25 | var failures = [];
26 |
27 | this.test_function = function(func, name) {
28 | test_func = func;
29 | test_name = name || '';
30 | }
31 |
32 |
33 | this.expect = function(parameters, expected_value) {
34 | // multi-parameter calls not supported (I don't need them now).
35 | var result = test_func(parameters);
36 | // proper array checking is a pain. i'll do it later, compare strings representations instead
37 | if ((result === expected_value) || (expected_value instanceof Array && result.join(', ') == expected_value.join(', '))) {
38 | n_succeeded += 1;
39 | } else {
40 | n_failed += 1;
41 | failures.push([test_name, parameters, expected_value, result]);
42 | }
43 | }
44 |
45 |
46 | this.results_raw = function() {
47 | var results = '';
48 | if (n_failed === 0) {
49 | if (n_succeeded === 0) {
50 | results = 'No tests run.';
51 | } else {
52 | results = 'All ' + n_succeeded + ' tests passed.';
53 | }
54 | } else {
55 | for (var i = 0 ; i < failures.length; i++) {
56 | var f = failures[i];
57 | if (f[0]) {
58 | f[0] = f[0] + ' ';
59 | }
60 | results += '---- ' + f[0] + 'input -------\n' + this.prettyprint(f[1]) + '\n';
61 | results += '---- ' + f[0] + 'expected ----\n' + this.prettyprint(f[2]) + '\n';
62 | results += '---- ' + f[0] + 'output ------\n' + this.prettyprint(f[3]) + '\n\n';
63 |
64 | }
65 | results += n_failed + ' tests failed.\n';
66 | }
67 | return results;
68 | }
69 |
70 |
71 | this.results = function() {
72 | return this.lazy_escape(this.results_raw());
73 | }
74 |
75 |
76 | this.prettyprint = function(something, quote_strings) {
77 | var type = typeof something;
78 | switch(type.toLowerCase()) {
79 | case 'string':
80 | if (quote_strings) {
81 | return "'" + something.replace("'", "\\'") + "'";
82 | } else {
83 | return something;
84 | }
85 | case 'number':
86 | return '' + something;
87 | case 'boolean':
88 | return something ? 'true' : 'false';
89 | case 'undefined':
90 | return 'undefined';
91 | case 'object':
92 | if (something instanceof Array) {
93 | var x = [];
94 | var expected_index = 0;
95 | for (k in something) {
96 | if (k == expected_index) {
97 | x.push(this.prettyprint(something[k], true));
98 | expected_index += 1;
99 | } else {
100 | x.push('\n' + k + ': ' + this.prettyprint(something[k], true));
101 | }
102 | }
103 | return '[' + x.join(', ') + ']';
104 | } else {
105 | return 'object: ' + something;
106 | }
107 | default:
108 | return type + ': ' + something;
109 | }
110 | }
111 |
112 |
113 | this.lazy_escape = function (str) {
114 | return str.replace(//g, '>').replace(/\n/g, '
');
115 | }
116 |
117 |
118 | this.log = function () {
119 | if (window.console) {
120 | if (console.firebug) {
121 | console.log.apply(console, Array.prototype.slice.call(arguments));
122 | } else {
123 | console.log.call(console, Array.prototype.slice.call(arguments));
124 | }
125 | }
126 | };
127 |
128 | }
129 |
--------------------------------------------------------------------------------
/Support/node_modules/js-beautify-node/tests/sanitytest.js:
--------------------------------------------------------------------------------
1 | //
2 | // simple testing interface
3 | // written by Einar Lielmanis, einar@jsbeautifier.org
4 | //
5 | // usage:
6 | //
7 | // var t = new SanityTest(function (x) { return x; }, 'my function');
8 | // t.expect('input', 'output');
9 | // t.expect('a', 'a');
10 | // output_somewhere(t.results()); // good for , html safe-ish
11 | // alert(t.results_raw()); // html unescaped
12 |
13 |
14 | function SanityTest (func, test_name) {
15 |
16 | var test_func = func || function (x) {
17 | return x;
18 | }
19 |
20 | var test_name = test_name || '';
21 |
22 | var n_failed = 0;
23 | var n_succeeded = 0;
24 |
25 | var failures = [];
26 |
27 | this.test_function = function(func, name) {
28 | test_func = func;
29 | test_name = name || '';
30 | }
31 |
32 |
33 | this.expect = function(parameters, expected_value) {
34 | // multi-parameter calls not supported (I don't need them now).
35 | var result = test_func(parameters);
36 | // proper array checking is a pain. i'll maybe do it later, compare strings representations instead
37 | if ((result === expected_value) || (expected_value instanceof Array && result.join(', ') == expected_value.join(', '))) {
38 | n_succeeded += 1;
39 | } else {
40 | n_failed += 1;
41 | failures.push([test_name, parameters, expected_value, result]);
42 | }
43 | }
44 |
45 |
46 | this.results_raw = function() {
47 | var results = '';
48 | if (n_failed === 0) {
49 | if (n_succeeded === 0) {
50 | results = 'No tests run.';
51 | } else {
52 | results = 'All ' + n_succeeded + ' tests passed.';
53 | }
54 | } else {
55 | for (var i = 0 ; i < failures.length; i++) {
56 | var f = failures[i];
57 | if (f[0]) {
58 | f[0] = f[0] + ' ';
59 | }
60 | results += '---- ' + f[0] + 'input -------\n' + this.prettyprint(f[1]) + '\n';
61 | results += '---- ' + f[0] + 'expected ----\n' + this.prettyprint(f[2]) + '\n';
62 | results += '---- ' + f[0] + 'output ------\n' + this.prettyprint(f[3]) + '\n\n';
63 |
64 | }
65 | results += n_failed + ' tests failed.\n';
66 | }
67 | return results;
68 | }
69 |
70 |
71 | this.results = function() {
72 | return this.lazy_escape(this.results_raw());
73 | }
74 |
75 |
76 | this.prettyprint = function(something, quote_strings) {
77 | var type = typeof something;
78 | switch(type.toLowerCase()) {
79 | case 'string':
80 | if (quote_strings) {
81 | return "'" + something.replace("'", "\\'") + "'";
82 | } else {
83 | return something;
84 | }
85 | case 'number':
86 | return '' + something;
87 | case 'boolean':
88 | return something ? 'true' : 'false';
89 | case 'undefined':
90 | return 'undefined';
91 | case 'object':
92 | if (something instanceof Array) {
93 | var x = [];
94 | var expected_index = 0;
95 | for (k in something) {
96 | if (k == expected_index) {
97 | x.push(this.prettyprint(something[k], true));
98 | expected_index += 1;
99 | } else {
100 | x.push('\n' + k + ': ' + this.prettyprint(something[k], true));
101 | }
102 | }
103 | return '[' + x.join(', ') + ']';
104 | } else {
105 | return 'object: ' + something;
106 | }
107 | default:
108 | return type + ': ' + something;
109 | }
110 | }
111 |
112 |
113 | this.lazy_escape = function (str) {
114 | return str.replace(//g, '>').replace(/\n/g, '
');
115 | }
116 |
117 |
118 | this.log = function () {
119 | if (window.console) {
120 | if (console.firebug) {
121 | console.log.apply(console, Array.prototype.slice.call(arguments));
122 | } else {
123 | console.log.call(console, Array.prototype.slice.call(arguments));
124 | }
125 | }
126 | };
127 |
128 | }
129 |
--------------------------------------------------------------------------------
/Support/bin/TextMate.js:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env node
2 | /*jshint asi:true*/
3 |
4 | exports.href = function(path, line, column){
5 | return "txmt://open?url=file://" + path + '&line='+line + '&column='+column
6 | }
7 |
8 | // exports.pathRegExp = RegExp('^' + process.env.HOME + '.*?\.js(?::(\d+)(?::(\d+))?)?', 'g');
9 | // exports.pathRegExp = /\B((?:\/\b(?:[\(\)\w._-]+(?:\b \b[\(\)\w._-]+)*\b)){2,})(?!>)(?::(\d+)(?::(\d+))?)?/g;
10 | exports.pathRegExp = /(\/(?:sbin|home|net|tmp|System|opt|Network|usr|private|Users|Volumes|bin|Library|Applications)\/.+?\.(?:json|js|jsx|jsxinc|xjs|coffee))(?::(\d+)(?::(\d+))?)?/g;
11 |
12 | exports.linkPaths = function(html){
13 | return String(html)
14 | // .replace(/(\.*\/[^\n(){},'"]+?):(\d+)(?::(\d+))?/g, exports.linkPath)
15 | // .replace(exports.pathRegExp, exports.linkPath)
16 | .replace(exports.pathRegExp, exports.linkPath)
17 |
18 | /*
19 | YES
20 | /foo
21 | NO
22 | f/foo
23 | //aasdas
24 | */
25 | }
26 |
27 | exports.linkPath = function(match, path, line, column){
28 | return '' + match.replace(process.env.TM_DIRECTORY+'/', '') + ''
29 | }
30 |
31 | exports.uniqueColorFor_cache = {}
32 | exports.uniqueColorFor = function(thing){
33 | return exports.uniqueColorFor_cache[thing] || (exports.uniqueColorFor_cache[thing] = 'hsl(' + Math.random() * 360 + ', 50%, 50%)')
34 | }
35 |
36 | var matchHome = RegExp(process.env.HOME,'g')
37 |
38 | exports.expandFileNameToPath = function(fileName){
39 | return process.installPrefix + '/lib/' + fileName
40 | }
41 |
42 | if (module.id == '.') {
43 | require('assert').equal(
44 | exports.linkPaths('/Users/thomas/Projects/Sencha/SDK/build/bin/build-bootstraps-2.js:90:60'),
45 | exports.linkPath('/Users/thomas/Projects/Sencha/SDK/build/bin/build-bootstraps-2.js:90:60'
46 | ,'/Users/thomas/Projects/Sencha/SDK/build/bin/build-bootstraps-2.js',90,60)
47 | )
48 |
49 | require('assert').equal(
50 | exports.linkPaths
51 | ("node.js:183\n\
52 | throw e; // process.nextTick error, or 'error' event on first tick\n\
53 | ^\n\
54 | TypeError: Cannot read property 'className' of undefined\n\
55 | at isClobberedBy (/Users/thomas/Projects/Sencha/SDK/build/lib/discover-metaclass.js:114:14)\n\
56 | at isClobberedBy (/Users/thomas/Projects/Sencha/SDK/build/lib/discover-metaclass.js:119:15)\n\
57 | at isClobberedBy (/Users/thomas/Projects/Sencha/SDK/build/lib/discover-metaclass.js:119:15)\n\
58 | at Function.isClobberedBy (/Users/thomas/Projects/Sencha/SDK/build/lib/discover-metaclass.js:119:15)\n\
59 | at Object. (/Users/thomas/Projects/Sencha/SDK/build/lib/discover-metaclass.js:166:32)\n\
60 | at Module._compile (module.js:423:26)\n\
61 | at Object..js (module.js:429:10)\n\
62 | at Module.load (module.js:339:31)\n\
63 | at Function._load (module.js:298:12)\n\
64 | at Array. (module.js:442:10)"
65 | ).match(/txmt:/g).length
66 | ,5
67 | )
68 |
69 | require('assert').equal(
70 | exports.linkPaths('/Users/aylott/Dropbox/Work/node-headless-inspector/demo-chrome.js:17:22'),
71 | exports.linkPath('/Users/aylott/Dropbox/Work/node-headless-inspector/demo-chrome.js:17:22'
72 | ,'/Users/aylott/Dropbox/Work/node-headless-inspector/demo-chrome.js',17,22)
73 | )
74 |
75 | // require('assert').equal(
76 | // exports.linkPaths('/Users/aylott/Dropbox (Personal)/Work/node-headless-inspector/demo-chrome.js:17:22'),
77 | // exports.linkPath('/Users/aylott/Dropbox (Personal)/Work/node-headless-inspector/demo-chrome.js:17:22'
78 | // ,'/Users/aylott/Dropbox (Personal)/Work/node-headless-inspector/demo-chrome.js',17,22)
79 | // )
80 |
81 | try {
82 | var action = process.argv[2] || process.env.TM_SELECTED_TEXT
83 | var args = process.argv.slice(3)
84 |
85 | if (exports[action]) {
86 | process.stdin.resume();
87 | process.stdin.on('data', function(data){
88 | process.stdout.write(exports[action].apply(null, [data].concat(args)))
89 | })
90 | } else {
91 | console.warn(exports)
92 | }
93 | } catch(e){
94 | console.error(exports)
95 | process.exit(1)
96 | }
97 | }
98 |
--------------------------------------------------------------------------------
/Support/node_modules/jstransform/node_modules/esprima-fb/bin/esparse.js:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env node
2 | /*
3 | Copyright (C) 2012 Ariya Hidayat
4 | Copyright (C) 2011 Ariya Hidayat
5 |
6 | Redistribution and use in source and binary forms, with or without
7 | modification, are permitted provided that the following conditions are met:
8 |
9 | * Redistributions of source code must retain the above copyright
10 | notice, this list of conditions and the following disclaimer.
11 | * Redistributions in binary form must reproduce the above copyright
12 | notice, this list of conditions and the following disclaimer in the
13 | documentation and/or other materials provided with the distribution.
14 |
15 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
16 | AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
17 | IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
18 | ARE DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY
19 | DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
20 | (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
21 | LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
22 | ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
23 | (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
24 | THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
25 | */
26 |
27 | /*jslint sloppy:true node:true rhino:true */
28 |
29 | var fs, esprima, fname, content, options, syntax;
30 |
31 | if (typeof require === 'function') {
32 | fs = require('fs');
33 | esprima = require('esprima');
34 | } else if (typeof load === 'function') {
35 | try {
36 | load('esprima.js');
37 | } catch (e) {
38 | load('../esprima.js');
39 | }
40 | }
41 |
42 | // Shims to Node.js objects when running under Rhino.
43 | if (typeof console === 'undefined' && typeof process === 'undefined') {
44 | console = { log: print };
45 | fs = { readFileSync: readFile };
46 | process = { argv: arguments, exit: quit };
47 | process.argv.unshift('esparse.js');
48 | process.argv.unshift('rhino');
49 | }
50 |
51 | function showUsage() {
52 | console.log('Usage:');
53 | console.log(' esparse [options] file.js');
54 | console.log();
55 | console.log('Available options:');
56 | console.log();
57 | console.log(' --comment Gather all line and block comments in an array');
58 | console.log(' --loc Include line-column location info for each syntax node');
59 | console.log(' --range Include index-based range for each syntax node');
60 | console.log(' --raw Display the raw value of literals');
61 | console.log(' --tokens List all tokens in an array');
62 | console.log(' --tolerant Tolerate errors on a best-effort basis (experimental)');
63 | console.log(' -v, --version Shows program version');
64 | console.log();
65 | process.exit(1);
66 | }
67 |
68 | if (process.argv.length <= 2) {
69 | showUsage();
70 | }
71 |
72 | options = {};
73 |
74 | process.argv.splice(2).forEach(function (entry) {
75 |
76 | if (entry === '-h' || entry === '--help') {
77 | showUsage();
78 | } else if (entry === '-v' || entry === '--version') {
79 | console.log('ECMAScript Parser (using Esprima version', esprima.version, ')');
80 | console.log();
81 | process.exit(0);
82 | } else if (entry === '--comment') {
83 | options.comment = true;
84 | } else if (entry === '--loc') {
85 | options.loc = true;
86 | } else if (entry === '--range') {
87 | options.range = true;
88 | } else if (entry === '--raw') {
89 | options.raw = true;
90 | } else if (entry === '--tokens') {
91 | options.tokens = true;
92 | } else if (entry === '--tolerant') {
93 | options.tolerant = true;
94 | } else if (entry.slice(0, 2) === '--') {
95 | console.log('Error: unknown option ' + entry + '.');
96 | process.exit(1);
97 | } else if (typeof fname === 'string') {
98 | console.log('Error: more than one input file.');
99 | process.exit(1);
100 | } else {
101 | fname = entry;
102 | }
103 | });
104 |
105 | if (typeof fname !== 'string') {
106 | console.log('Error: no input file.');
107 | process.exit(1);
108 | }
109 |
110 | try {
111 | content = fs.readFileSync(fname, 'utf-8');
112 | syntax = esprima.parse(content, options);
113 | console.log(JSON.stringify(syntax, null, 4));
114 | } catch (e) {
115 | console.log('Error: ' + e.message);
116 | process.exit(1);
117 | }
118 |
--------------------------------------------------------------------------------
/Support/node_modules/jstransform/node_modules/source-map/Makefile.dryice.js:
--------------------------------------------------------------------------------
1 | /* -*- Mode: js; js-indent-level: 2; -*- */
2 | /*
3 | * Copyright 2011 Mozilla Foundation and contributors
4 | * Licensed under the New BSD license. See LICENSE or:
5 | * http://opensource.org/licenses/BSD-3-Clause
6 | */
7 | var path = require('path');
8 | var fs = require('fs');
9 | var copy = require('dryice').copy;
10 |
11 | function removeAmdefine(src) {
12 | src = String(src).replace(
13 | /if\s*\(typeof\s*define\s*!==\s*'function'\)\s*{\s*var\s*define\s*=\s*require\('amdefine'\)\(module,\s*require\);\s*}\s*/g,
14 | '');
15 | src = src.replace(
16 | /\b(define\(.*)('amdefine',?)/gm,
17 | '$1');
18 | return src;
19 | }
20 | removeAmdefine.onRead = true;
21 |
22 | function makeNonRelative(src) {
23 | return src
24 | .replace(/require\('.\//g, 'require(\'source-map/')
25 | .replace(/\.\.\/\.\.\/lib\//g, '');
26 | }
27 | makeNonRelative.onRead = true;
28 |
29 | function buildBrowser() {
30 | console.log('\nCreating dist/source-map.js');
31 |
32 | var project = copy.createCommonJsProject({
33 | roots: [ path.join(__dirname, 'lib') ]
34 | });
35 |
36 | copy({
37 | source: [
38 | 'build/mini-require.js',
39 | {
40 | project: project,
41 | require: [ 'source-map/source-map-generator',
42 | 'source-map/source-map-consumer',
43 | 'source-map/source-node']
44 | },
45 | 'build/suffix-browser.js'
46 | ],
47 | filter: [
48 | copy.filter.moduleDefines,
49 | removeAmdefine
50 | ],
51 | dest: 'dist/source-map.js'
52 | });
53 | }
54 |
55 | function buildBrowserMin() {
56 | console.log('\nCreating dist/source-map.min.js');
57 |
58 | copy({
59 | source: 'dist/source-map.js',
60 | filter: copy.filter.uglifyjs,
61 | dest: 'dist/source-map.min.js'
62 | });
63 | }
64 |
65 | function buildFirefox() {
66 | console.log('\nCreating dist/SourceMap.jsm');
67 |
68 | var project = copy.createCommonJsProject({
69 | roots: [ path.join(__dirname, 'lib') ]
70 | });
71 |
72 | copy({
73 | source: [
74 | 'build/prefix-source-map.jsm',
75 | {
76 | project: project,
77 | require: [ 'source-map/source-map-consumer',
78 | 'source-map/source-map-generator',
79 | 'source-map/source-node' ]
80 | },
81 | 'build/suffix-source-map.jsm'
82 | ],
83 | filter: [
84 | copy.filter.moduleDefines,
85 | removeAmdefine,
86 | makeNonRelative
87 | ],
88 | dest: 'dist/SourceMap.jsm'
89 | });
90 |
91 | // Create dist/test/Utils.jsm
92 | console.log('\nCreating dist/test/Utils.jsm');
93 |
94 | project = copy.createCommonJsProject({
95 | roots: [ __dirname, path.join(__dirname, 'lib') ]
96 | });
97 |
98 | copy({
99 | source: [
100 | 'build/prefix-utils.jsm',
101 | 'build/assert-shim.js',
102 | {
103 | project: project,
104 | require: [ 'test/source-map/util' ]
105 | },
106 | 'build/suffix-utils.jsm'
107 | ],
108 | filter: [
109 | copy.filter.moduleDefines,
110 | removeAmdefine,
111 | makeNonRelative
112 | ],
113 | dest: 'dist/test/Utils.jsm'
114 | });
115 |
116 | function isTestFile(f) {
117 | return /^test\-.*?\.js/.test(f);
118 | }
119 |
120 | var testFiles = fs.readdirSync(path.join(__dirname, 'test', 'source-map')).filter(isTestFile);
121 |
122 | testFiles.forEach(function (testFile) {
123 | console.log('\nCreating', path.join('dist', 'test', testFile.replace(/\-/g, '_')));
124 |
125 | copy({
126 | source: [
127 | 'build/test-prefix.js',
128 | path.join('test', 'source-map', testFile),
129 | 'build/test-suffix.js'
130 | ],
131 | filter: [
132 | removeAmdefine,
133 | makeNonRelative,
134 | function (input, source) {
135 | return input.replace('define(',
136 | 'define("'
137 | + path.join('test', 'source-map', testFile.replace(/\.js$/, ''))
138 | + '", ["require", "exports", "module"], ');
139 | },
140 | function (input, source) {
141 | return input.replace('{THIS_MODULE}', function () {
142 | return "test/source-map/" + testFile.replace(/\.js$/, '');
143 | });
144 | }
145 | ],
146 | dest: path.join('dist', 'test', testFile.replace(/\-/g, '_'))
147 | });
148 | });
149 | }
150 |
151 | function ensureDir(name) {
152 | var dirExists = false;
153 | try {
154 | dirExists = fs.statSync(name).isDirectory();
155 | } catch (err) {}
156 |
157 | if (!dirExists) {
158 | fs.mkdirSync(name, 0777);
159 | }
160 | }
161 |
162 | ensureDir("dist");
163 | ensureDir("dist/test");
164 | buildFirefox();
165 | buildBrowser();
166 | buildBrowserMin();
167 |
--------------------------------------------------------------------------------
/Support/node_modules/jstransform/node_modules/source-map/build/mini-require.js:
--------------------------------------------------------------------------------
1 | /* -*- Mode: js; js-indent-level: 2; -*- */
2 | /*
3 | * Copyright 2011 Mozilla Foundation and contributors
4 | * Licensed under the New BSD license. See LICENSE or:
5 | * http://opensource.org/licenses/BSD-3-Clause
6 | */
7 |
8 | /**
9 | * Define a module along with a payload.
10 | * @param {string} moduleName Name for the payload
11 | * @param {ignored} deps Ignored. For compatibility with CommonJS AMD Spec
12 | * @param {function} payload Function with (require, exports, module) params
13 | */
14 | function define(moduleName, deps, payload) {
15 | if (typeof moduleName != "string") {
16 | throw new TypeError('Expected string, got: ' + moduleName);
17 | }
18 |
19 | if (arguments.length == 2) {
20 | payload = deps;
21 | }
22 |
23 | if (moduleName in define.modules) {
24 | throw new Error("Module already defined: " + moduleName);
25 | }
26 | define.modules[moduleName] = payload;
27 | };
28 |
29 | /**
30 | * The global store of un-instantiated modules
31 | */
32 | define.modules = {};
33 |
34 |
35 | /**
36 | * We invoke require() in the context of a Domain so we can have multiple
37 | * sets of modules running separate from each other.
38 | * This contrasts with JSMs which are singletons, Domains allows us to
39 | * optionally load a CommonJS module twice with separate data each time.
40 | * Perhaps you want 2 command lines with a different set of commands in each,
41 | * for example.
42 | */
43 | function Domain() {
44 | this.modules = {};
45 | this._currentModule = null;
46 | }
47 |
48 | (function () {
49 |
50 | /**
51 | * Lookup module names and resolve them by calling the definition function if
52 | * needed.
53 | * There are 2 ways to call this, either with an array of dependencies and a
54 | * callback to call when the dependencies are found (which can happen
55 | * asynchronously in an in-page context) or with a single string an no callback
56 | * where the dependency is resolved synchronously and returned.
57 | * The API is designed to be compatible with the CommonJS AMD spec and
58 | * RequireJS.
59 | * @param {string[]|string} deps A name, or names for the payload
60 | * @param {function|undefined} callback Function to call when the dependencies
61 | * are resolved
62 | * @return {undefined|object} The module required or undefined for
63 | * array/callback method
64 | */
65 | Domain.prototype.require = function(deps, callback) {
66 | if (Array.isArray(deps)) {
67 | var params = deps.map(function(dep) {
68 | return this.lookup(dep);
69 | }, this);
70 | if (callback) {
71 | callback.apply(null, params);
72 | }
73 | return undefined;
74 | }
75 | else {
76 | return this.lookup(deps);
77 | }
78 | };
79 |
80 | function normalize(path) {
81 | var bits = path.split('/');
82 | var i = 1;
83 | while (i < bits.length) {
84 | if (bits[i] === '..') {
85 | bits.splice(i-1, 1);
86 | } else if (bits[i] === '.') {
87 | bits.splice(i, 1);
88 | } else {
89 | i++;
90 | }
91 | }
92 | return bits.join('/');
93 | }
94 |
95 | function join(a, b) {
96 | a = a.trim();
97 | b = b.trim();
98 | if (/^\//.test(b)) {
99 | return b;
100 | } else {
101 | return a.replace(/\/*$/, '/') + b;
102 | }
103 | }
104 |
105 | function dirname(path) {
106 | var bits = path.split('/');
107 | bits.pop();
108 | return bits.join('/');
109 | }
110 |
111 | /**
112 | * Lookup module names and resolve them by calling the definition function if
113 | * needed.
114 | * @param {string} moduleName A name for the payload to lookup
115 | * @return {object} The module specified by aModuleName or null if not found.
116 | */
117 | Domain.prototype.lookup = function(moduleName) {
118 | if (/^\./.test(moduleName)) {
119 | moduleName = normalize(join(dirname(this._currentModule), moduleName));
120 | }
121 |
122 | if (moduleName in this.modules) {
123 | var module = this.modules[moduleName];
124 | return module;
125 | }
126 |
127 | if (!(moduleName in define.modules)) {
128 | throw new Error("Module not defined: " + moduleName);
129 | }
130 |
131 | var module = define.modules[moduleName];
132 |
133 | if (typeof module == "function") {
134 | var exports = {};
135 | var previousModule = this._currentModule;
136 | this._currentModule = moduleName;
137 | module(this.require.bind(this), exports, { id: moduleName, uri: "" });
138 | this._currentModule = previousModule;
139 | module = exports;
140 | }
141 |
142 | // cache the resulting module object for next time
143 | this.modules[moduleName] = module;
144 |
145 | return module;
146 | };
147 |
148 | }());
149 |
150 | define.Domain = Domain;
151 | define.globalDomain = new Domain();
152 | var require = define.globalDomain.require.bind(define.globalDomain);
153 |
--------------------------------------------------------------------------------
/Support/node_modules/jstransform/visitors/es6-arrow-function-visitors.js:
--------------------------------------------------------------------------------
1 | /**
2 | * Copyright 2013 Facebook, Inc.
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | /*global exports:true*/
18 |
19 | /**
20 | * Desugars ES6 Arrow functions to ES3 function expressions.
21 | * If the function contains `this` expression -- automatically
22 | * binds the function to current value of `this`.
23 | *
24 | * Single parameter, simple expression:
25 | *
26 | * [1, 2, 3].map(x => x * x);
27 | *
28 | * [1, 2, 3].map(function(x) { return x * x; });
29 | *
30 | * Several parameters, complex block:
31 | *
32 | * this.users.forEach((user, idx) => {
33 | * return this.isActive(idx) && this.send(user);
34 | * });
35 | *
36 | * this.users.forEach(function(user, idx) {
37 | * return this.isActive(idx) && this.send(user);
38 | * }.bind(this));
39 | *
40 | */
41 | var restParamVisitors = require('./es6-rest-param-visitors');
42 | var destructuringVisitors = require('./es6-destructuring-visitors');
43 |
44 | var Syntax = require('esprima-fb').Syntax;
45 | var utils = require('../src/utils');
46 |
47 | /**
48 | * @public
49 | */
50 | function visitArrowFunction(traverse, node, path, state) {
51 | var notInExpression = (path[0].type === Syntax.ExpressionStatement);
52 |
53 | // Wrap a function into a grouping operator, if it's not
54 | // in the expression position.
55 | if (notInExpression) {
56 | utils.append('(', state);
57 | }
58 |
59 | utils.append('function', state);
60 | renderParams(traverse, node, path, state);
61 |
62 | // Skip arrow.
63 | utils.catchupWhiteSpace(node.body.range[0], state);
64 |
65 | var renderBody = node.body.type == Syntax.BlockStatement
66 | ? renderStatementBody
67 | : renderExpressionBody;
68 |
69 | path.unshift(node);
70 | renderBody(traverse, node, path, state);
71 | path.shift();
72 |
73 | // Bind the function only if `this` value is used
74 | // inside it or inside any sub-expression.
75 | var containsBindingSyntax =
76 | utils.containsChildMatching(node.body, function(node) {
77 | return node.type === Syntax.ThisExpression
78 | || (node.type === Syntax.Identifier
79 | && node.name === "super");
80 | });
81 |
82 | if (containsBindingSyntax) {
83 | utils.append('.bind(this)', state);
84 | }
85 |
86 | utils.catchupWhiteSpace(node.range[1], state);
87 |
88 | // Close wrapper if not in the expression.
89 | if (notInExpression) {
90 | utils.append(')', state);
91 | }
92 |
93 | return false;
94 | }
95 |
96 | function renderParams(traverse, node, path, state) {
97 | // To preserve inline typechecking directives, we
98 | // distinguish between parens-free and paranthesized single param.
99 | if (isParensFreeSingleParam(node, state) || !node.params.length) {
100 | utils.append('(', state);
101 | }
102 | if (node.params.length !== 0) {
103 | path.unshift(node);
104 | traverse(node.params, path, state);
105 | path.unshift();
106 | }
107 | utils.append(')', state);
108 | }
109 |
110 | function isParensFreeSingleParam(node, state) {
111 | return node.params.length === 1 &&
112 | state.g.source[state.g.position] !== '(';
113 | }
114 |
115 | function renderExpressionBody(traverse, node, path, state) {
116 | // Wrap simple expression bodies into a block
117 | // with explicit return statement.
118 | utils.append('{', state);
119 |
120 | // Special handling of rest param.
121 | if (node.rest) {
122 | utils.append(
123 | restParamVisitors.renderRestParamSetup(node, state),
124 | state
125 | );
126 | }
127 |
128 | // Special handling of destructured params.
129 | destructuringVisitors.renderDestructuredComponents(
130 | node,
131 | utils.updateState(state, {
132 | localScope: {
133 | parentNode: state.parentNode,
134 | parentScope: state.parentScope,
135 | identifiers: state.identifiers,
136 | tempVarIndex: 0
137 | }
138 | })
139 | );
140 |
141 | utils.append('return ', state);
142 | renderStatementBody(traverse, node, path, state);
143 | utils.append(';}', state);
144 | }
145 |
146 | function renderStatementBody(traverse, node, path, state) {
147 | traverse(node.body, path, state);
148 | utils.catchup(node.body.range[1], state);
149 | }
150 |
151 | visitArrowFunction.test = function(node, path, state) {
152 | return node.type === Syntax.ArrowFunctionExpression;
153 | };
154 |
155 | exports.visitorList = [
156 | visitArrowFunction
157 | ];
158 |
159 |
--------------------------------------------------------------------------------
/Support/conf/jsl.textmate.conf:
--------------------------------------------------------------------------------
1 | #
2 | # Configuration File for JavaScript Lint 0.2.6
3 | # Developed by Matthias Miller (http://www.JavaScriptLint.com)
4 | #
5 | # This configuration file can be used to lint a collection of scripts, or to enable
6 | # or disable warnings for scripts that are linted via the command line.
7 | #
8 |
9 | #### NOTE TO TEXTMATE BUNDLE USERS:
10 | #### Feel free to experiment with enabling/disabling individual warnings to
11 | #### suit your own level of anal-retentiveness.
12 |
13 | ### Warnings
14 | # Enable or disable warnings based on requirements.
15 | # Use "+WarningName" to display or "-WarningName" to suppress.
16 | #
17 | +no_return_value # function {0} does not always return a value
18 | +duplicate_formal # duplicate formal argument {0}
19 | +equal_as_assign # test for equality (==) mistyped as assignment (=)?{0}
20 | +var_hides_arg # variable {0} hides argument
21 | +redeclared_var # redeclaration of {0} {1}
22 | +anon_no_return_value # anonymous function does not always return a value
23 | +missing_semicolon # missing semicolon
24 | +meaningless_block # meaningless block; curly braces have no impact
25 | +comma_separated_stmts # multiple statements separated by commas (use semicolons?)
26 | +unreachable_code # unreachable code
27 | -missing_break # missing break statement
28 | -missing_break_for_last_case # missing break statement for last case in switch
29 | -comparison_type_conv # comparisons against null, 0, or an empty string allowing implicit type conversion (use === or !==)
30 | -inc_dec_within_stmt # increment (++) and decrement (--) operators used as part of greater statement
31 | +useless_void # use of the void type may be unnecessary (void is always undefined)
32 | +multiple_plus_minus # unknown order of operations for successive plus (e.g. x+++y) or minus (e.g. x---y) signs
33 | -use_of_label # use of label
34 | -block_without_braces # block statement without curly braces
35 | +leading_decimal_point # leading decimal point may indicate a number or an object member
36 | +trailing_decimal_point # trailing decimal point may indicate a number or an object member
37 | +octal_number # leading zeros make an octal number
38 | +nested_comment # nested comment
39 | +misplaced_regex # regular expressions should be preceded by a left parenthesis, assignment, colon, or comma
40 | -ambiguous_newline # unexpected end of line; it is ambiguous whether these lines are part of the same statement
41 | -empty_statement # empty statement or extra semicolon
42 | -missing_option_explicit # the "option explicit" control comment is missing
43 | +partial_option_explicit # the "option explicit" control comment, if used, must be in the first script tag
44 | +dup_option_explicit # duplicate "option explicit" control comment
45 | -useless_assign # useless assignment
46 | +ambiguous_nested_stmt # block statements containing block statements should use curly braces to resolve ambiguity
47 | +ambiguous_else_stmt # the else statement could be matched with one of multiple if statements (use curly braces to indicate intent)
48 | -missing_default_case # missing default case in switch statement
49 | +duplicate_case_in_switch # duplicate case in switch statements
50 | +default_not_at_end # the default case is not at the end of the switch statement
51 | +legacy_cc_not_understood # couldn't understand control comment using /*@keyword@*/ syntax
52 | +jsl_cc_not_understood # couldn't understand control comment using /*jsl:keyword*/ syntax
53 | +useless_comparison # useless comparison; comparing identical expressions
54 |
55 |
56 | ### Context
57 | # Show the in-line position of the error.
58 | # Use "+context" to display or "-context" to suppress.
59 | #
60 | +context
61 |
62 |
63 | ### Semicolons
64 | # By default, assignments of an anonymous function to a variable or
65 | # property (such as a function prototype) must be followed by a semicolon.
66 | #
67 | +lambda_assign_requires_semicolon
68 |
69 |
70 | ### Control Comments
71 | # Both JavaScript Lint and the JScript interpreter confuse each other with the syntax for
72 | # the /*@keyword@*/ control comments and JScript conditional comments. (The latter is
73 | # enabled in JScript with @cc_on@). The /*jsl:keyword*/ syntax is preferred for this reason,
74 | # although legacy control comments are enabled by default for backward compatibility.
75 | #
76 | +legacy_control_comments
77 |
78 |
79 | ### Defining identifiers
80 | # By default, "option explicit" is enabled on a per-file basis.
81 | # To enable this for all files, use "+always_use_option_explicit"
82 | -always_use_option_explicit
83 |
84 | # Define certain identifiers of which the lint is not aware.
85 | # (Use this in conjunction with the "undeclared identifier" warning.)
86 | #
87 | # Common uses for webpages might be:
88 | +define window
89 | +define document
90 |
91 |
92 |
93 | #### HEY, YOU REALLY SHOULDN'T CHANGE THIS PART, DUDE,
94 | #### OR IT WILL MESS UP THE REST OF THE BUNDLE:
95 | +output-format __LINE__: __ERROR__
96 |
--------------------------------------------------------------------------------
/Support/bin/packr-1.0.2/README:
--------------------------------------------------------------------------------
1 | == PackR
2 |
3 | PackR is a Ruby port of Dean Edwards' MIT-licensed JavaScript compressor, Packer:
4 |
5 | # Packer version 3.0 (final) - copyright 2004-2007, Dean Edwards
6 | # http://www.opensource.org/licenses/mit-license
7 | http://dean.edwards.name/packer/
8 |
9 | This version is based on Packer 3.0. You may find that the results it produces
10 | are not strictly identical to those of the JavaScript version, but the difference is
11 | just a question of how the base-62 word list is ordered -- your scripts
12 | will work just like those produced with the online version. The level of
13 | compression achieved is identical between the two versions.
14 |
15 | === Installation
16 |
17 | PackR is available both as a gem and as a Rails plugin. The plugin gives you the
18 | +Packr+ class from the gem, plus some helpful +rake+ tasks to use during Rails
19 | development. To get the gem:
20 |
21 | gem install packr
22 |
23 | To get the Rails plugin:
24 |
25 | ruby script/plugin install
26 | http://svn.jcoglan.com/packr/trunk/packr
27 |
28 | === Usage
29 |
30 | Usage is dead simple. Within your Ruby/Rails app, you can compress pieces of code
31 | like this:
32 |
33 | compressed = Packr.pack(script)
34 |
35 | # Pass options to control the type of compression
36 | compressed = Packr.pack(script, :shrink_vars => true)
37 | compressed = Packr.pack(script, :base62 => true)
38 | compressed = Packr.pack(script, :shrink_vars => true, :base62 => true)
39 |
40 | If you want to compress a particular file, you can do this:
41 |
42 | Packr.pack_file(path, ... options as above ...)
43 |
44 | Be careful with that - it will overwrite the contents of the file with
45 | the packed version. Be a good kid and use version control in case something
46 | goes wrong and you lose all your source code!
47 |
48 | If you want PackR's variable-shrinking routine to preserve certain variable names,
49 | you can tell it to do so by instantiating it and telling it which names you want to
50 | preserve:
51 |
52 | my_packr = Packr.new
53 | my_packr.protect_vars(:some, :variable, :names)
54 |
55 | my_packr.pack('var func = function(foo, bar, some) { return some(foo + bar); }', :shrink_vars => true)
56 | #=> "var func=function(a,b,some){return some(a+b)}"
57 |
58 | If you want to protect the same variables for all scripts your program compresses,
59 | tell the +Packr+ class to protect them:
60 |
61 | Packr.protect_vars(:some, :variable, :names)
62 |
63 | Packr.pack('var func = function(foo, bar, some) { return some(foo + bar); }', :shrink_vars => true)
64 | #=> "var func=function(a,b,some){return some(a+b)}"
65 |
66 | By default, PackR always protects the variable $super so you can compress
67 | Prototype code that uses class inheritance. The constant +PROTECTED_NAMES+ in the
68 | +Packr+ source code controls which variables are protected by default.
69 |
70 | === Automated packing
71 |
72 | When installed as a Rails plugin, PackR also comes with a +rake+ task to let you
73 | batch-pack all your scripts. To use it, store any files you want to serve in
74 | packed form in the directory lib/javascripts. (The idea is that you won't
75 | be serving the source files to the public, so why keep them in the public folder?
76 | Also, it keeps the source files and packed copies nicely separated.) Then run:
77 |
78 | rake packr:pack_libs
79 |
80 | You can specify the type of packing using flags:
81 |
82 | rake packr:pack_libs shrink_vars=
83 | rake packr:pack_libs base62= shrink_vars=
84 |
85 | PackR will put packed copies of all the scripts from lib/javascripts in
86 | public/javascripts. Again, be careful as this will overwrite any pre-existing
87 | files in your public directory.
88 |
89 | It is not recommended to run this as part of your deployment process, as you will
90 | need to verfiy that your JavaScript works when packed before committing it. PackR
91 | works using regular expressions -- not a true JavaScript interpreter -- and cannot
92 | fix missing semicolons for you.
93 |
94 | Also, DO NOT use PackR to compress files on-the-fly in response to HTTP
95 | requests. The packing process can be quite processor-intensive and it will
96 | make you app very slow when serving script files.
97 |
98 | === License
99 |
100 | Copyright (c) 2007 Dean Edwards, James Coglan
101 |
102 | Permission is hereby granted, free of charge, to any person obtaining
103 | a copy of this software and associated documentation files (the "Software"),
104 | to deal in the Software without restriction, including without limitation
105 | the rights to use, copy, modify, merge, publish, distribute, sublicense,
106 | and/or sell copies of the Software, and to permit persons to whom the
107 | Software is furnished to do so, subject to the following conditions:
108 |
109 | The above copyright notice and this permission notice shall be included
110 | in all copies or substantial portions of the Software.
111 |
112 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
113 | OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
114 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
115 | THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
116 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
117 | FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
118 | DEALINGS IN THE SOFTWARE.
119 |
--------------------------------------------------------------------------------
/Support/node_modules/jstransform/visitors/es6-template-visitors.js:
--------------------------------------------------------------------------------
1 | /**
2 | * Copyright 2013 Facebook, Inc.
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | /*jslint node:true*/
18 |
19 | /**
20 | * @typechecks
21 | */
22 | 'use strict';
23 |
24 | var Syntax = require('esprima-fb').Syntax;
25 | var utils = require('../src/utils');
26 |
27 | /**
28 | * http://people.mozilla.org/~jorendorff/es6-draft.html#sec-12.1.9
29 | */
30 | function visitTemplateLiteral(traverse, node, path, state) {
31 | var templateElements = node.quasis;
32 |
33 | utils.append('(', state);
34 | for (var ii = 0; ii < templateElements.length; ii++) {
35 | var templateElement = templateElements[ii];
36 | if (templateElement.value.raw !== '') {
37 | utils.append(getCookedValue(templateElement), state);
38 | if (!templateElement.tail) {
39 | // + between element and substitution
40 | utils.append(' + ', state);
41 | }
42 | // maintain line numbers
43 | utils.move(templateElement.range[0], state);
44 | utils.catchupNewlines(templateElement.range[1], state);
45 | } else { // templateElement.value.raw === ''
46 | // Concatenat adjacent substitutions, e.g. `${x}${y}`. Empty templates
47 | // appear before the first and after the last element - nothing to add in
48 | // those cases.
49 | if (ii > 0 && !templateElement.tail) {
50 | // + between substitution and substitution
51 | utils.append(' + ', state);
52 | }
53 | }
54 |
55 | utils.move(templateElement.range[1], state);
56 | if (!templateElement.tail) {
57 | var substitution = node.expressions[ii];
58 | if (substitution.type === Syntax.Identifier ||
59 | substitution.type === Syntax.MemberExpression ||
60 | substitution.type === Syntax.CallExpression) {
61 | utils.catchup(substitution.range[1], state);
62 | } else {
63 | utils.append('(', state);
64 | traverse(substitution, path, state);
65 | utils.catchup(substitution.range[1], state);
66 | utils.append(')', state);
67 | }
68 | // if next templateElement isn't empty...
69 | if (templateElements[ii + 1].value.cooked !== '') {
70 | utils.append(' + ', state);
71 | }
72 | }
73 | }
74 | utils.move(node.range[1], state);
75 | utils.append(')', state);
76 | return false;
77 | }
78 |
79 | visitTemplateLiteral.test = function(node, path, state) {
80 | return node.type === Syntax.TemplateLiteral;
81 | };
82 |
83 | /**
84 | * http://people.mozilla.org/~jorendorff/es6-draft.html#sec-12.2.6
85 | */
86 | function visitTaggedTemplateExpression(traverse, node, path, state) {
87 | var template = node.quasi;
88 | var numQuasis = template.quasis.length;
89 |
90 | // print the tag
91 | utils.move(node.tag.range[0], state);
92 | traverse(node.tag, path, state);
93 | utils.catchup(node.tag.range[1], state);
94 |
95 | // print array of template elements
96 | utils.append('(function() { var siteObj = [', state);
97 | for (var ii = 0; ii < numQuasis; ii++) {
98 | utils.append(getCookedValue(template.quasis[ii]), state);
99 | if (ii !== numQuasis - 1) {
100 | utils.append(', ', state);
101 | }
102 | }
103 | utils.append(']; siteObj.raw = [', state);
104 | for (ii = 0; ii < numQuasis; ii++) {
105 | utils.append(getRawValue(template.quasis[ii]), state);
106 | if (ii !== numQuasis - 1) {
107 | utils.append(', ', state);
108 | }
109 | }
110 | utils.append(
111 | ']; Object.freeze(siteObj.raw); Object.freeze(siteObj); return siteObj; }()',
112 | state
113 | );
114 |
115 | // print substitutions
116 | if (numQuasis > 1) {
117 | for (ii = 0; ii < template.expressions.length; ii++) {
118 | var expression = template.expressions[ii];
119 | utils.append(', ', state);
120 |
121 | // maintain line numbers by calling catchupWhiteSpace over the whole
122 | // previous TemplateElement
123 | utils.move(template.quasis[ii].range[0], state);
124 | utils.catchupNewlines(template.quasis[ii].range[1], state);
125 |
126 | utils.move(expression.range[0], state);
127 | traverse(expression, path, state);
128 | utils.catchup(expression.range[1], state);
129 | }
130 | }
131 |
132 | // print blank lines to push the closing ) down to account for the final
133 | // TemplateElement.
134 | utils.catchupNewlines(node.range[1], state);
135 |
136 | utils.append(')', state);
137 |
138 | return false;
139 | }
140 |
141 | visitTaggedTemplateExpression.test = function(node, path, state) {
142 | return node.type === Syntax.TaggedTemplateExpression;
143 | };
144 |
145 | function getCookedValue(templateElement) {
146 | return JSON.stringify(templateElement.value.cooked);
147 | }
148 |
149 | function getRawValue(templateElement) {
150 | return JSON.stringify(templateElement.value.raw);
151 | }
152 |
153 | exports.visitorList = [
154 | visitTemplateLiteral,
155 | visitTaggedTemplateExpression
156 | ];
157 |
--------------------------------------------------------------------------------
/Support/node_modules/jstransform/node_modules/source-map/lib/source-map/base64-vlq.js:
--------------------------------------------------------------------------------
1 | /* -*- Mode: js; js-indent-level: 2; -*- */
2 | /*
3 | * Copyright 2011 Mozilla Foundation and contributors
4 | * Licensed under the New BSD license. See LICENSE or:
5 | * http://opensource.org/licenses/BSD-3-Clause
6 | *
7 | * Based on the Base 64 VLQ implementation in Closure Compiler:
8 | * https://code.google.com/p/closure-compiler/source/browse/trunk/src/com/google/debugging/sourcemap/Base64VLQ.java
9 | *
10 | * Copyright 2011 The Closure Compiler Authors. All rights reserved.
11 | * Redistribution and use in source and binary forms, with or without
12 | * modification, are permitted provided that the following conditions are
13 | * met:
14 | *
15 | * * Redistributions of source code must retain the above copyright
16 | * notice, this list of conditions and the following disclaimer.
17 | * * Redistributions in binary form must reproduce the above
18 | * copyright notice, this list of conditions and the following
19 | * disclaimer in the documentation and/or other materials provided
20 | * with the distribution.
21 | * * Neither the name of Google Inc. nor the names of its
22 | * contributors may be used to endorse or promote products derived
23 | * from this software without specific prior written permission.
24 | *
25 | * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
26 | * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
27 | * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
28 | * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
29 | * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
30 | * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
31 | * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
32 | * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
33 | * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
34 | * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
35 | * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
36 | */
37 | if (typeof define !== 'function') {
38 | var define = require('amdefine')(module, require);
39 | }
40 | define(function (require, exports, module) {
41 |
42 | var base64 = require('./base64');
43 |
44 | // A single base 64 digit can contain 6 bits of data. For the base 64 variable
45 | // length quantities we use in the source map spec, the first bit is the sign,
46 | // the next four bits are the actual value, and the 6th bit is the
47 | // continuation bit. The continuation bit tells us whether there are more
48 | // digits in this value following this digit.
49 | //
50 | // Continuation
51 | // | Sign
52 | // | |
53 | // V V
54 | // 101011
55 |
56 | var VLQ_BASE_SHIFT = 5;
57 |
58 | // binary: 100000
59 | var VLQ_BASE = 1 << VLQ_BASE_SHIFT;
60 |
61 | // binary: 011111
62 | var VLQ_BASE_MASK = VLQ_BASE - 1;
63 |
64 | // binary: 100000
65 | var VLQ_CONTINUATION_BIT = VLQ_BASE;
66 |
67 | /**
68 | * Converts from a two-complement value to a value where the sign bit is
69 | * is placed in the least significant bit. For example, as decimals:
70 | * 1 becomes 2 (10 binary), -1 becomes 3 (11 binary)
71 | * 2 becomes 4 (100 binary), -2 becomes 5 (101 binary)
72 | */
73 | function toVLQSigned(aValue) {
74 | return aValue < 0
75 | ? ((-aValue) << 1) + 1
76 | : (aValue << 1) + 0;
77 | }
78 |
79 | /**
80 | * Converts to a two-complement value from a value where the sign bit is
81 | * is placed in the least significant bit. For example, as decimals:
82 | * 2 (10 binary) becomes 1, 3 (11 binary) becomes -1
83 | * 4 (100 binary) becomes 2, 5 (101 binary) becomes -2
84 | */
85 | function fromVLQSigned(aValue) {
86 | var isNegative = (aValue & 1) === 1;
87 | var shifted = aValue >> 1;
88 | return isNegative
89 | ? -shifted
90 | : shifted;
91 | }
92 |
93 | /**
94 | * Returns the base 64 VLQ encoded value.
95 | */
96 | exports.encode = function base64VLQ_encode(aValue) {
97 | var encoded = "";
98 | var digit;
99 |
100 | var vlq = toVLQSigned(aValue);
101 |
102 | do {
103 | digit = vlq & VLQ_BASE_MASK;
104 | vlq >>>= VLQ_BASE_SHIFT;
105 | if (vlq > 0) {
106 | // There are still more digits in this value, so we must make sure the
107 | // continuation bit is marked.
108 | digit |= VLQ_CONTINUATION_BIT;
109 | }
110 | encoded += base64.encode(digit);
111 | } while (vlq > 0);
112 |
113 | return encoded;
114 | };
115 |
116 | /**
117 | * Decodes the next base 64 VLQ value from the given string and returns the
118 | * value and the rest of the string.
119 | */
120 | exports.decode = function base64VLQ_decode(aStr) {
121 | var i = 0;
122 | var strLen = aStr.length;
123 | var result = 0;
124 | var shift = 0;
125 | var continuation, digit;
126 |
127 | do {
128 | if (i >= strLen) {
129 | throw new Error("Expected more digits in base 64 VLQ value.");
130 | }
131 | digit = base64.decode(aStr.charAt(i++));
132 | continuation = !!(digit & VLQ_CONTINUATION_BIT);
133 | digit &= VLQ_BASE_MASK;
134 | result = result + (digit << shift);
135 | shift += VLQ_BASE_SHIFT;
136 | } while (continuation);
137 |
138 | return {
139 | value: fromVLQSigned(result),
140 | rest: aStr.slice(i)
141 | };
142 | };
143 |
144 | });
145 |
--------------------------------------------------------------------------------
/info.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | contactEmailRot13
6 | boyvivbhf@fhogyrtenqvrag.pbz
7 | contactName
8 | Thomas Aylott
9 | description
10 |
11 | mainMenu
12 |
13 | items
14 |
15 | 6298E048-4D1B-4DD2-A3F1-AB78DD181E06
16 | ------------------------------------
17 | D551C035-3665-4E00-BFF5-801012A58876
18 | E54A7651-8834-4EF6-8852-468A24ACC6C6
19 | EA41CEBC-8AFB-4C46-B4F6-EAE56A97664A
20 | ------------------------------------
21 | C8BDE80D-21C7-4237-886D-A099AC463665
22 | ------------------------------------
23 | 158E1772-3408-4603-81DA-86FEF3FF018D
24 | 651DF907-70AB-40FF-BEB3-7F286675B160
25 |
26 | submenus
27 |
28 | 158E1772-3408-4603-81DA-86FEF3FF018D
29 |
30 | items
31 |
32 | A2A911D2-4D18-47CF-8E2D-FCDAD3006A1A
33 | FF421350-D5CD-4FB2-9FDE-D92B02CD7F73
34 | ------------------------------------
35 | AB09302E-EE14-4464-92AB-240F0DD26596
36 | F9046994-D105-4D83-8E23-CFB535C892A7
37 | F1DF7529-7815-4FF8-918C-87BA71453EE3
38 |
39 | name
40 | Node.js
41 |
42 | 651DF907-70AB-40FF-BEB3-7F286675B160
43 |
44 | items
45 |
46 | EE871DA2-04F2-4499-8323-AB9004221C94
47 | DE5BE8AC-EDA3-4C1E-BDDE-FAD45F2D1B5C
48 |
49 | name
50 | Execute
51 |
52 | C8BDE80D-21C7-4237-886D-A099AC463665
53 |
54 | items
55 |
56 | 7C7E733F-D008-4A52-8A2C-7552836807C1
57 | 88D4CEE6-2D1F-4B65-A04D-F4ABBC8F9145
58 | 4108455E-925C-4009-B87F-4635199F6DE7
59 | ------------------------------------
60 | 02917AD5-E190-40B5-998A-DD7DBC79BAF0
61 | ------------------------------------
62 | F2A344A2-8546-41E8-BC60-EA331D4EF7B8
63 | EAC536BF-6C4C-4AE9-8437-B28E8EB31631
64 |
65 | name
66 | Validate
67 |
68 | D551C035-3665-4E00-BFF5-801012A58876
69 |
70 | items
71 |
72 | B4DDB005-470D-4D22-8FE8-B29FDC613A7A
73 | 67347C19-DA7A-41B8-8C48-8CC92E11E4E3
74 |
75 | name
76 | Convert
77 |
78 | E54A7651-8834-4EF6-8852-468A24ACC6C6
79 |
80 | items
81 |
82 | 9E7612FA-58B7-43AD-BCC4-F7989D953137
83 | E620A7EF-DB9B-48D9-874F-60EAF426E70D
84 | ------------------------------------
85 | D3210BEC-4A3A-4FA9-8D7C-1A0F8065CFF5
86 | 0B51E320-D218-4352-8AEF-096B3232E818
87 | 16D885D1-78B1-47F2-9BCC-1F27B77B987E
88 | 2C4286B3-B2F3-4524-AE4B-3A2BB5CA1150
89 | 14281367-C8CB-4FE4-AD3B-E23B153F528D
90 |
91 | name
92 | Compress
93 |
94 | EA41CEBC-8AFB-4C46-B4F6-EAE56A97664A
95 |
96 | items
97 |
98 | 91A87FF2-F802-4999-98ED-4FEFC3465AC1
99 | 0C3CB37C-1C88-4F62-814B-5C6998E1709B
100 | 486A2267-2A7B-46B7-9C0A-BC81D33DC0CB
101 |
102 | name
103 | Reformat
104 |
105 |
106 |
107 | name
108 | JavaScript Tools
109 | ordering
110 |
111 | 6298E048-4D1B-4DD2-A3F1-AB78DD181E06
112 | A2A911D2-4D18-47CF-8E2D-FCDAD3006A1A
113 | EE871DA2-04F2-4499-8323-AB9004221C94
114 | DE5BE8AC-EDA3-4C1E-BDDE-FAD45F2D1B5C
115 | F9046994-D105-4D83-8E23-CFB535C892A7
116 | AB09302E-EE14-4464-92AB-240F0DD26596
117 | FF421350-D5CD-4FB2-9FDE-D92B02CD7F73
118 | F1DF7529-7815-4FF8-918C-87BA71453EE3
119 | 4108455E-925C-4009-B87F-4635199F6DE7
120 | 7C7E733F-D008-4A52-8A2C-7552836807C1
121 | EAC536BF-6C4C-4AE9-8437-B28E8EB31631
122 | 02917AD5-E190-40B5-998A-DD7DBC79BAF0
123 | 67347C19-DA7A-41B8-8C48-8CC92E11E4E3
124 | E620A7EF-DB9B-48D9-874F-60EAF426E70D
125 | D3210BEC-4A3A-4FA9-8D7C-1A0F8065CFF5
126 | 0B51E320-D218-4352-8AEF-096B3232E818
127 | 0C3CB37C-1C88-4F62-814B-5C6998E1709B
128 | 91A87FF2-F802-4999-98ED-4FEFC3465AC1
129 | 16D885D1-78B1-47F2-9BCC-1F27B77B987E
130 | 2C4286B3-B2F3-4524-AE4B-3A2BB5CA1150
131 | 9E7612FA-58B7-43AD-BCC4-F7989D953137
132 | 88D4CEE6-2D1F-4B65-A04D-F4ABBC8F9145
133 | 14281367-C8CB-4FE4-AD3B-E23B153F528D
134 | F2A344A2-8546-41E8-BC60-EA331D4EF7B8
135 | B4DDB005-470D-4D22-8FE8-B29FDC613A7A
136 | 486A2267-2A7B-46B7-9C0A-BC81D33DC0CB
137 |
138 | uuid
139 | 3A0A9B86-5306-421D-A662-F308C2E09D2E
140 |
141 |
142 |
--------------------------------------------------------------------------------