Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

firebase-bolt

Package Overview
Dependencies
Maintainers
3
Versions
15
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

firebase-bolt - npm Package Compare versions

Comparing version 0.8.2 to 0.8.3

lib/ast.d.ts

2

docs/changelog.txt

@@ -1,1 +0,1 @@

fixed - Issue #169 Did not allow prior() function in type validation.
feature - PR #227 include typescript declaration files

@@ -198,2 +198,17 @@ # Firebase Bolt Security and Modeling Language

Paths statments can be nested:
```javascript
path /users {
// Anyone can read the list of users and read a their information.
read() { true }
/{uid} is User {
// Authenticated user can write their own information.
write() { auth != null && auth.uid == uid }
}
}
```
## Write Aliases

@@ -200,0 +215,0 @@

@@ -0,1 +1,2 @@

"use strict";
/*

@@ -16,3 +17,3 @@ * Copyright 2015 Google Inc. All Rights Reserved.

*/
"use strict";
exports.__esModule = true;
// TODO(koss): After node 0.10 leaves LTS - remove polyfilled Promise library.

@@ -23,4 +24,4 @@ if (typeof Promise === 'undefined') {

var parser = require('./rules-parser');
var generator = require('./rules-generator');
var astImport = require('./ast');
var generator = require("./rules-generator");
var astImport = require("./ast");
exports.FILE_EXTENSION = 'bolt';

@@ -33,2 +34,2 @@ exports.ast = astImport;

//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImJvbHQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7O0dBY0c7O0FBRUgsOEVBQThFO0FBQzlFLEVBQUUsQ0FBQyxDQUFDLE9BQU8sT0FBTyxLQUFLLFdBQVcsQ0FBQyxDQUFDLENBQUM7SUFDbkMsT0FBTyxDQUFDLGFBQWEsQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFDO0FBQ3BDLENBQUM7QUFFRCxJQUFJLE1BQU0sR0FBRyxPQUFPLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztBQUN2QyxJQUFZLFNBQVMsV0FBTSxtQkFBbUIsQ0FBQyxDQUFBO0FBQy9DLElBQVksU0FBUyxXQUFNLE9BQU8sQ0FBQyxDQUFBO0FBRXhCLHNCQUFjLEdBQUcsTUFBTSxDQUFDO0FBRXhCLFdBQUcsR0FBRyxTQUFTLENBQUM7QUFDaEIsYUFBSyxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUM7QUFDckIsaUJBQVMsR0FBRyxTQUFTLENBQUMsU0FBUyxDQUFDO0FBQ2hDLHdCQUFnQixHQUFHLFdBQUcsQ0FBQyxnQkFBZ0IsQ0FBQztBQUN4QyxnQkFBUSxHQUFHLFNBQVMsQ0FBQyxRQUFRLENBQUMiLCJmaWxlIjoiYm9sdC5qcyIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBDb3B5cmlnaHQgMjAxNSBHb29nbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuXG4vLyBUT0RPKGtvc3MpOiBBZnRlciBub2RlIDAuMTAgbGVhdmVzIExUUyAtIHJlbW92ZSBwb2x5ZmlsbGVkIFByb21pc2UgbGlicmFyeS5cbmlmICh0eXBlb2YgUHJvbWlzZSA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgcmVxdWlyZSgnZXM2LXByb21pc2UnKS5wb2x5ZmlsbCgpO1xufVxuXG5sZXQgcGFyc2VyID0gcmVxdWlyZSgnLi9ydWxlcy1wYXJzZXInKTtcbmltcG9ydCAqIGFzIGdlbmVyYXRvciBmcm9tICcuL3J1bGVzLWdlbmVyYXRvcic7XG5pbXBvcnQgKiBhcyBhc3RJbXBvcnQgZnJvbSAnLi9hc3QnO1xuXG5leHBvcnQgbGV0IEZJTEVfRVhURU5TSU9OID0gJ2JvbHQnO1xuXG5leHBvcnQgbGV0IGFzdCA9IGFzdEltcG9ydDtcbmV4cG9ydCBsZXQgcGFyc2UgPSBwYXJzZXIucGFyc2U7XG5leHBvcnQgbGV0IEdlbmVyYXRvciA9IGdlbmVyYXRvci5HZW5lcmF0b3I7XG5leHBvcnQgbGV0IGRlY29kZUV4cHJlc3Npb24gPSBhc3QuZGVjb2RlRXhwcmVzc2lvbjtcbmV4cG9ydCBsZXQgZ2VuZXJhdGUgPSBnZW5lcmF0b3IuZ2VuZXJhdGU7XG4iXX0=
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImJvbHQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBOzs7Ozs7Ozs7Ozs7OztHQWNHOztBQUVILDhFQUE4RTtBQUM5RSxJQUFJLE9BQU8sT0FBTyxLQUFLLFdBQVcsRUFBRTtJQUNsQyxPQUFPLENBQUMsYUFBYSxDQUFDLENBQUMsUUFBUSxFQUFFLENBQUM7Q0FDbkM7QUFFRCxJQUFJLE1BQU0sR0FBRyxPQUFPLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztBQUN2Qyw2Q0FBK0M7QUFDL0MsaUNBQW1DO0FBRXhCLFFBQUEsY0FBYyxHQUFHLE1BQU0sQ0FBQztBQUV4QixRQUFBLEdBQUcsR0FBRyxTQUFTLENBQUM7QUFDaEIsUUFBQSxLQUFLLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQztBQUNyQixRQUFBLFNBQVMsR0FBRyxTQUFTLENBQUMsU0FBUyxDQUFDO0FBQ2hDLFFBQUEsZ0JBQWdCLEdBQUcsV0FBRyxDQUFDLGdCQUFnQixDQUFDO0FBQ3hDLFFBQUEsUUFBUSxHQUFHLFNBQVMsQ0FBQyxRQUFRLENBQUMiLCJmaWxlIjoiYm9sdC5qcyIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBDb3B5cmlnaHQgMjAxNSBHb29nbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuXG4vLyBUT0RPKGtvc3MpOiBBZnRlciBub2RlIDAuMTAgbGVhdmVzIExUUyAtIHJlbW92ZSBwb2x5ZmlsbGVkIFByb21pc2UgbGlicmFyeS5cbmlmICh0eXBlb2YgUHJvbWlzZSA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgcmVxdWlyZSgnZXM2LXByb21pc2UnKS5wb2x5ZmlsbCgpO1xufVxuXG5sZXQgcGFyc2VyID0gcmVxdWlyZSgnLi9ydWxlcy1wYXJzZXInKTtcbmltcG9ydCAqIGFzIGdlbmVyYXRvciBmcm9tICcuL3J1bGVzLWdlbmVyYXRvcic7XG5pbXBvcnQgKiBhcyBhc3RJbXBvcnQgZnJvbSAnLi9hc3QnO1xuXG5leHBvcnQgbGV0IEZJTEVfRVhURU5TSU9OID0gJ2JvbHQnO1xuXG5leHBvcnQgbGV0IGFzdCA9IGFzdEltcG9ydDtcbmV4cG9ydCBsZXQgcGFyc2UgPSBwYXJzZXIucGFyc2U7XG5leHBvcnQgbGV0IEdlbmVyYXRvciA9IGdlbmVyYXRvci5HZW5lcmF0b3I7XG5leHBvcnQgbGV0IGRlY29kZUV4cHJlc3Npb24gPSBhc3QuZGVjb2RlRXhwcmVzc2lvbjtcbmV4cG9ydCBsZXQgZ2VuZXJhdGUgPSBnZW5lcmF0b3IuZ2VuZXJhdGU7XG4iXX0=
"use strict";
exports.__esModule = true;
/*

@@ -17,4 +18,4 @@ * Copyright 2015 Google Inc. All Rights Reserved.

*/
var fs = require('fs');
var util = require('./util');
var fs = require("fs");
var util = require("./util");
var hasXMLHttpRequest = typeof global !== 'undefined' && global['XMLHttpRequest'] !== undefined;

@@ -25,4 +26,3 @@ function readJSONFile(path, fnFallback) {

return JSON.parse(response.content);
})
.catch(function (error) {
})["catch"](function (error) {
if (error.code === 'ENOENT' && typeof fnFallback === 'function') {

@@ -91,2 +91,2 @@ return fnFallback();

//# sourceMappingURL=data:application/json;charset=utf8;base64,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LENBQUMsSUFBSSxDQUFDLENBQUM7SUFDakIsQ0FBQyxDQUFDLENBQUM7QUFDTCxDQUFDO0FBRUQsZ0JBQWdCLElBQVk7SUFDMUIsTUFBTSxDQUFDLElBQUksT0FBTyxDQUFDLFVBQVMsT0FBTyxFQUFFLE1BQU07UUFDekMsRUFBRSxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsRUFBQyxRQUFRLEVBQUUsTUFBTSxFQUFDLEVBQUUsVUFBUyxLQUFLLEVBQUUsSUFBSTtZQUN4RCxFQUFFLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO2dCQUNWLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztnQkFDZCxNQUFNLENBQUM7WUFDVCxDQUFDO1lBQ0QsT0FBTyxDQUFDLEVBQUMsR0FBRyxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFDLENBQUMsQ0FBQztRQUN0QyxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQztBQUVELGlCQUFpQixJQUFZLEVBQUUsSUFBUztJQUN0QyxNQUFNLENBQUMsSUFBSSxPQUFPLENBQUMsVUFBUyxPQUFPLEVBQUUsTUFBTTtRQUN6QyxFQUFFLENBQUMsU0FBUyxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsRUFBQyxRQUFRLEVBQUUsTUFBTSxFQUFDLEVBQUUsVUFBUyxLQUFLO1lBQ3pELEVBQUUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7Z0JBQ1YsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO2dCQUNkLE1BQU0sQ0FBQztZQUNULENBQUM7WUFDRCxPQUFPLENBQUMsRUFBQyxHQUFHLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUMsQ0FBQyxDQUFDO1FBQ3RDLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQyxDQUFDLENBQUM7QUFDTCxDQUFDIiwiZmlsZSI6ImZpbGUtaW8uanMiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogQ29weXJpZ2h0IDIwMTUgR29vZ2xlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cbmltcG9ydCAqIGFzIGZzIGZyb20gJ2ZzJztcbmltcG9ydCAqIGFzIHV0aWwgZnJvbSAnLi91dGlsJztcblxuY29uc3QgaGFzWE1MSHR0cFJlcXVlc3QgPVxuICB0eXBlb2YgZ2xvYmFsICE9PSAndW5kZWZpbmVkJyAmJiAoPGFueT4gZ2xvYmFsKVsnWE1MSHR0cFJlcXVlc3QnXSAhPT0gdW5kZWZpbmVkO1xuXG5leHBvcnQgaW50ZXJmYWNlIFJlYWRGaWxlUmVzdWx0IHtcbiAgY29udGVudDogc3RyaW5nO1xuICB1cmw6IHN0cmluZztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHJlYWRKU09ORmlsZShwYXRoOiBzdHJpbmcsIGZuRmFsbGJhY2s/OiAoKSA9PiBhbnkpOiBQcm9taXNlPGFueT4ge1xuICByZXR1cm4gcmVhZEZpbGUocGF0aClcbiAgICAudGhlbihmdW5jdGlvbihyZXNwb25zZTogUmVhZEZpbGVSZXN1bHQpIHtcbiAgICAgIHJldHVybiBKU09OLnBhcnNlKHJlc3BvbnNlLmNvbnRlbnQpO1xuICAgIH0pXG4gICAgLmNhdGNoKGZ1bmN0aW9uKGVycm9yKSB7XG4gICAgICBpZiAoZXJyb3IuY29kZSA9PT0gJ0VOT0VOVCcgJiYgdHlwZW9mIGZuRmFsbGJhY2sgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgcmV0dXJuIGZuRmFsbGJhY2soKTtcbiAgICAgIH1cbiAgICAgIHRocm93IGVycm9yO1xuICAgIH0pO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gd3JpdGVKU09ORmlsZShwYXRoOiBzdHJpbmcsIGRhdGE6IGFueSk6IFByb21pc2U8UmVhZEZpbGVSZXN1bHQ+IHtcbiAgcmV0dXJuIHdyaXRlRmlsZShwYXRoLCB1dGlsLnByZXR0eUpTT04oZGF0YSkpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcmVhZEZpbGUocGF0aDogc3RyaW5nKTogUHJvbWlzZTxSZWFkRmlsZVJlc3VsdD4ge1xuICByZXR1cm4gaGFzWE1MSHR0cFJlcXVlc3QgPyByZXF1ZXN0KCdHRVQnLCBwYXRoKSA6IHJlYWRGUyhwYXRoKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHdyaXRlRmlsZShwYXRoOiBzdHJpbmcsIGRhdGE6IGFueSk6IFByb21pc2U8UmVhZEZpbGVSZXN1bHQ+IHtcbiAgcmV0dXJuIGhhc1hNTEh0dHBSZXF1ZXN0ID8gcmVxdWVzdCgnUFVUJywgcGF0aCwgZGF0YSkgOiB3cml0ZUZTKHBhdGgsIGRhdGEpO1xufVxuXG5mdW5jdGlvbiByZXF1ZXN0KG1ldGhvZDogc3RyaW5nLCB1cmw6IHN0cmluZywgZGF0YT86IGFueSk6IFByb21pc2U8UmVhZEZpbGVSZXN1bHQ+IHtcbiAgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uKHJlc29sdmUsIHJlamVjdCkge1xuICAgIGxldCByZXEgPSBuZXcgWE1MSHR0cFJlcXVlc3QoKTtcblxuICAgIHJlcS5vcGVuKG1ldGhvZCwgJy8nICsgdXJsKTtcblxuICAgIHJlcS5vbmxvYWQgPSBmdW5jdGlvbigpIHtcbiAgICAgIGlmIChyZXEuc3RhdHVzID09PSAyMDApIHtcbiAgICAgICAgcmVzb2x2ZSh7Y29udGVudDogcmVxLnJlc3BvbnNlLCB1cmw6IHVybH0pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmVqZWN0KG5ldyBFcnJvcih1cmwgKyBcIiBcIiArIHJlcS5zdGF0dXNUZXh0KSk7XG4gICAgICB9XG4gICAgfTtcblxuICAgIHJlcS5vbmVycm9yID0gZnVuY3Rpb24oKSB7XG4gICAgICByZWplY3QobmV3IEVycm9yKHVybCArIFwiIE5ldHdvcmsgRXJyb3JcIikpO1xuICAgIH07XG5cbiAgICBpZiAoZGF0YSkge1xuICAgICAgcmVxLnNldFJlcXVlc3RIZWFkZXIoJ0NvbnRlbnQtVHlwZScsICd0ZXh0Jyk7XG4gICAgfVxuXG4gICAgcmVxLnNlbmQoZGF0YSk7XG4gIH0pO1xufVxuXG5mdW5jdGlvbiByZWFkRlMocGF0aDogc3RyaW5nKTogUHJvbWlzZTxSZWFkRmlsZVJlc3VsdD4ge1xuICByZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24ocmVzb2x2ZSwgcmVqZWN0KSB7XG4gICAgZnMucmVhZEZpbGUocGF0aCwge2VuY29kaW5nOiAndXRmOCd9LCBmdW5jdGlvbihlcnJvciwgZGF0YSkge1xuICAgICAgaWYgKGVycm9yKSB7XG4gICAgICAgIHJlamVjdChlcnJvcik7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIHJlc29sdmUoe3VybDogcGF0aCwgY29udGVudDogZGF0YX0pO1xuICAgIH0pO1xuICB9KTtcbn1cblxuZnVuY3Rpb24gd3JpdGVGUyhwYXRoOiBzdHJpbmcsIGRhdGE6IGFueSk6IFByb21pc2U8UmVhZEZpbGVSZXN1bHQ+IHtcbiAgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uKHJlc29sdmUsIHJlamVjdCkge1xuICAgIGZzLndyaXRlRmlsZShwYXRoLCBkYXRhLCB7ZW5jb2Rpbmc6ICd1dGY4J30sIGZ1bmN0aW9uKGVycm9yKSB7XG4gICAgICBpZiAoZXJyb3IpIHtcbiAgICAgICAgcmVqZWN0KGVycm9yKTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgcmVzb2x2ZSh7dXJsOiBwYXRoLCBjb250ZW50OiBcIm9rXCJ9KTtcbiAgICB9KTtcbiAgfSk7XG59XG4iXX0=
//# sourceMappingURL=data:application/json;charset=utf8;base64,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QyxFQUFFLFVBQVMsS0FBSyxFQUFFLElBQUk7WUFDeEQsSUFBSSxLQUFLLEVBQUU7Z0JBQ1QsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO2dCQUNkLE9BQU87YUFDUjtZQUNELE9BQU8sQ0FBQyxFQUFDLEdBQUcsRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBQyxDQUFDLENBQUM7UUFDdEMsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDLENBQUMsQ0FBQztBQUNMLENBQUM7QUFFRCxpQkFBaUIsSUFBWSxFQUFFLElBQVM7SUFDdEMsT0FBTyxJQUFJLE9BQU8sQ0FBQyxVQUFTLE9BQU8sRUFBRSxNQUFNO1FBQ3pDLEVBQUUsQ0FBQyxTQUFTLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxFQUFDLFFBQVEsRUFBRSxNQUFNLEVBQUMsRUFBRSxVQUFTLEtBQUs7WUFDekQsSUFBSSxLQUFLLEVBQUU7Z0JBQ1QsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO2dCQUNkLE9BQU87YUFDUjtZQUNELE9BQU8sQ0FBQyxFQUFDLEdBQUcsRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBQyxDQUFDLENBQUM7UUFDdEMsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDLENBQUMsQ0FBQztBQUNMLENBQUMiLCJmaWxlIjoiZmlsZS1pby5qcyIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBDb3B5cmlnaHQgMjAxNSBHb29nbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuaW1wb3J0ICogYXMgZnMgZnJvbSAnZnMnO1xuaW1wb3J0ICogYXMgdXRpbCBmcm9tICcuL3V0aWwnO1xuXG5jb25zdCBoYXNYTUxIdHRwUmVxdWVzdCA9XG4gIHR5cGVvZiBnbG9iYWwgIT09ICd1bmRlZmluZWQnICYmICg8YW55PiBnbG9iYWwpWydYTUxIdHRwUmVxdWVzdCddICE9PSB1bmRlZmluZWQ7XG5cbmV4cG9ydCBpbnRlcmZhY2UgUmVhZEZpbGVSZXN1bHQge1xuICBjb250ZW50OiBzdHJpbmc7XG4gIHVybDogc3RyaW5nO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcmVhZEpTT05GaWxlKHBhdGg6IHN0cmluZywgZm5GYWxsYmFjaz86ICgpID0+IGFueSk6IFByb21pc2U8YW55PiB7XG4gIHJldHVybiByZWFkRmlsZShwYXRoKVxuICAgIC50aGVuKGZ1bmN0aW9uKHJlc3BvbnNlOiBSZWFkRmlsZVJlc3VsdCkge1xuICAgICAgcmV0dXJuIEpTT04ucGFyc2UocmVzcG9uc2UuY29udGVudCk7XG4gICAgfSlcbiAgICAuY2F0Y2goZnVuY3Rpb24oZXJyb3IpIHtcbiAgICAgIGlmIChlcnJvci5jb2RlID09PSAnRU5PRU5UJyAmJiB0eXBlb2YgZm5GYWxsYmFjayA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICByZXR1cm4gZm5GYWxsYmFjaygpO1xuICAgICAgfVxuICAgICAgdGhyb3cgZXJyb3I7XG4gICAgfSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB3cml0ZUpTT05GaWxlKHBhdGg6IHN0cmluZywgZGF0YTogYW55KTogUHJvbWlzZTxSZWFkRmlsZVJlc3VsdD4ge1xuICByZXR1cm4gd3JpdGVGaWxlKHBhdGgsIHV0aWwucHJldHR5SlNPTihkYXRhKSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiByZWFkRmlsZShwYXRoOiBzdHJpbmcpOiBQcm9taXNlPFJlYWRGaWxlUmVzdWx0PiB7XG4gIHJldHVybiBoYXNYTUxIdHRwUmVxdWVzdCA/IHJlcXVlc3QoJ0dFVCcsIHBhdGgpIDogcmVhZEZTKHBhdGgpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gd3JpdGVGaWxlKHBhdGg6IHN0cmluZywgZGF0YTogYW55KTogUHJvbWlzZTxSZWFkRmlsZVJlc3VsdD4ge1xuICByZXR1cm4gaGFzWE1MSHR0cFJlcXVlc3QgPyByZXF1ZXN0KCdQVVQnLCBwYXRoLCBkYXRhKSA6IHdyaXRlRlMocGF0aCwgZGF0YSk7XG59XG5cbmZ1bmN0aW9uIHJlcXVlc3QobWV0aG9kOiBzdHJpbmcsIHVybDogc3RyaW5nLCBkYXRhPzogYW55KTogUHJvbWlzZTxSZWFkRmlsZVJlc3VsdD4ge1xuICByZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24ocmVzb2x2ZSwgcmVqZWN0KSB7XG4gICAgbGV0IHJlcSA9IG5ldyBYTUxIdHRwUmVxdWVzdCgpO1xuXG4gICAgcmVxLm9wZW4obWV0aG9kLCAnLycgKyB1cmwpO1xuXG4gICAgcmVxLm9ubG9hZCA9IGZ1bmN0aW9uKCkge1xuICAgICAgaWYgKHJlcS5zdGF0dXMgPT09IDIwMCkge1xuICAgICAgICByZXNvbHZlKHtjb250ZW50OiByZXEucmVzcG9uc2UsIHVybDogdXJsfSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZWplY3QobmV3IEVycm9yKHVybCArIFwiIFwiICsgcmVxLnN0YXR1c1RleHQpKTtcbiAgICAgIH1cbiAgICB9O1xuXG4gICAgcmVxLm9uZXJyb3IgPSBmdW5jdGlvbigpIHtcbiAgICAgIHJlamVjdChuZXcgRXJyb3IodXJsICsgXCIgTmV0d29yayBFcnJvclwiKSk7XG4gICAgfTtcblxuICAgIGlmIChkYXRhKSB7XG4gICAgICByZXEuc2V0UmVxdWVzdEhlYWRlcignQ29udGVudC1UeXBlJywgJ3RleHQnKTtcbiAgICB9XG5cbiAgICByZXEuc2VuZChkYXRhKTtcbiAgfSk7XG59XG5cbmZ1bmN0aW9uIHJlYWRGUyhwYXRoOiBzdHJpbmcpOiBQcm9taXNlPFJlYWRGaWxlUmVzdWx0PiB7XG4gIHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbihyZXNvbHZlLCByZWplY3QpIHtcbiAgICBmcy5yZWFkRmlsZShwYXRoLCB7ZW5jb2Rpbmc6ICd1dGY4J30sIGZ1bmN0aW9uKGVycm9yLCBkYXRhKSB7XG4gICAgICBpZiAoZXJyb3IpIHtcbiAgICAgICAgcmVqZWN0KGVycm9yKTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgcmVzb2x2ZSh7dXJsOiBwYXRoLCBjb250ZW50OiBkYXRhfSk7XG4gICAgfSk7XG4gIH0pO1xufVxuXG5mdW5jdGlvbiB3cml0ZUZTKHBhdGg6IHN0cmluZywgZGF0YTogYW55KTogUHJvbWlzZTxSZWFkRmlsZVJlc3VsdD4ge1xuICByZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24ocmVzb2x2ZSwgcmVqZWN0KSB7XG4gICAgZnMud3JpdGVGaWxlKHBhdGgsIGRhdGEsIHtlbmNvZGluZzogJ3V0ZjgnfSwgZnVuY3Rpb24oZXJyb3IpIHtcbiAgICAgIGlmIChlcnJvcikge1xuICAgICAgICByZWplY3QoZXJyb3IpO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICByZXNvbHZlKHt1cmw6IHBhdGgsIGNvbnRlbnQ6IFwib2tcIn0pO1xuICAgIH0pO1xuICB9KTtcbn1cbiJdfQ==
"use strict";
exports.__esModule = true;
/*

@@ -19,5 +20,5 @@ * Firebase helper functions for REST API (using Promises).

*/
var https = require('https');
var util = require('./util');
var querystring = require('querystring');
var https = require("https");
var util = require("./util");
var querystring = require("querystring");
var uuid = require('node-uuid');

@@ -28,4 +29,6 @@ var FirebaseTokenGenerator = require('firebase-token-generator');

exports.RULES_LOCATION = '/.settings/rules';
exports.TIMESTAMP = { ".sv": "timestamp" };
var Client = (function () {
exports.TIMESTAMP = {
'.sv': 'timestamp'
};
var Client = /** @class */ (function () {
function Client(appName, authToken, uid) {

@@ -65,4 +68,3 @@ this.appName = appName;

content = util.prettyJSON(content);
return request(options, content, this.debug)
.then(function (body) {
return request(options, content, this.debug).then(function (body) {
return body === '' ? null : JSON.parse(body);

@@ -80,8 +82,8 @@ });

if (debug) {
console.error("Request<" + rid + ">: " + s);
console.error('Request<' + rid + '>: ' + s);
}
}
log("Request: " + util.prettyJSON(options));
log('Request: ' + util.prettyJSON(options));
if (content) {
log("Body: '" + content + "'");
log('Body: \'' + content + '\'');
}

@@ -97,11 +99,12 @@ return new Promise(function (resolve, reject) {

var result = chunks.join('');
log("Result (" + res.statusCode + "): '" + result + "'");
var message = "Status = " + res.statusCode + " " + result;
// Dump debug information if present for both successful and failed requests.
log('Result (' + res.statusCode + '): \'' + result + '\'');
var message = 'Status = ' + res.statusCode + ' ' + result;
// Dump debug information if present for both successful and failed
// requests.
if (res.headers[DEBUG_HEADER]) {
var formattedHeader = res.headers[DEBUG_HEADER].split(' /').join('\n /');
log(formattedHeader);
message += "\n" + formattedHeader;
message += '\n' + formattedHeader;
}
if (Math.floor(res.statusCode / 100) !== 2) {
if (res.statusCode && Math.floor(res.statusCode / 100) !== 2) {
reject(new Error(message));

@@ -119,3 +122,3 @@ }

req.on('error', function (error) {
log("Request error: " + error);
log('Request error: ' + error);
reject(error);

@@ -135,19 +138,24 @@ });

/**
* Fancy ID generator that creates 20-character string identifiers with the following properties:
* Fancy ID generator that creates 20-character string identifiers with the
* following properties:
*
* 1. They're based on timestamp so that they sort *after* any existing ids.
* 2. They contain 72-bits of random data after the timestamp so that IDs won't collide with other clients' IDs.
* 3. They sort *lexicographically* (so the timestamp is converted to characters that will sort properly).
* 4. They're monotonically increasing. Even if you generate more than one in the same timestamp, the
* latter ones will sort after the former ones. We do this by using the previous random bits
* but "incrementing" them by 1 (only in the case of a timestamp collision).
* 2. They contain 72-bits of random data after the timestamp so that IDs won't
* collide with other clients' IDs.
* 3. They sort *lexicographically* (so the timestamp is converted to characters
* that will sort properly).
* 4. They're monotonically increasing. Even if you generate more than one in
* the same timestamp, the latter ones will sort after the former ones. We do
* this by using the previous random bits but "incrementing" them by 1 (only in
* the case of a timestamp collision).
*/
// Modeled after base64 web-safe chars, but ordered by ASCII.
var PUSH_CHARS = '-0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ_abcdefghijklmnopqrstuvwxyz';
// Timestamp of last push, used to prevent local collisions if you push twice in one ms.
// Timestamp of last push, used to prevent local collisions if you push twice in
// one ms.
var lastPushTime = 0;
// We generate 72-bits of randomness which get turned into 12 characters and appended to the
// timestamp to prevent collisions with other clients. We store the last characters we
// generated because in the event of a collision, we'll use those same characters except
// "incremented" by one.
// We generate 72-bits of randomness which get turned into 12 characters and
// appended to the timestamp to prevent collisions with other clients. We store
// the last characters we generated because in the event of a collision, we'll
// use those same characters except "incremented" by one.
var lastRandChars = [];

@@ -161,3 +169,4 @@ function generatePushID() {

timeStampChars[i] = PUSH_CHARS.charAt(now % 64);
// NOTE: Can't use << here because javascript will convert to int and lose the upper bits.
// NOTE: Can't use << here because javascript will convert to int and lose
// the upper bits.
now = Math.floor(now / 64);

@@ -175,3 +184,4 @@ }

else {
// If the timestamp hasn't changed since last push, use the same random number, except incremented by 1.
// If the timestamp hasn't changed since last push, use the same random
// number, except incremented by 1.
for (i = 11; i >= 0 && lastRandChars[i] === 63; i--) {

@@ -192,2 +202,2 @@ lastRandChars[i] = 0;

//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImZpcmViYXNlLXJlc3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBOzs7Ozs7Ozs7Ozs7Ozs7O0dBZ0JHO0FBQ0gsSUFBTyxLQUFLLFdBQVcsT0FBTyxDQUFDLENBQUM7QUFFaEMsSUFBWSxJQUFJLFdBQU0sUUFBUSxDQUFDLENBQUE7QUFDL0IsSUFBTyxXQUFXLFdBQVcsYUFBYSxDQUFDLENBQUM7QUFDNUMsSUFBSSxJQUFJLEdBQUcsT0FBTyxDQUFDLFdBQVcsQ0FBQyxDQUFDO0FBQ2hDLElBQUksc0JBQXNCLEdBQUcsT0FBTyxDQUFDLDBCQUEwQixDQUFDLENBQUM7QUFFakUsSUFBSSxhQUFhLEdBQUcsZ0JBQWdCLENBQUM7QUFDckMsSUFBSSxZQUFZLEdBQUcsdUJBQXVCLENBQUM7QUFFaEMsc0JBQWMsR0FBSSxrQkFBa0IsQ0FBQztBQUNyQyxpQkFBUyxHQUFHLEVBQUMsS0FBSyxFQUFFLFdBQVcsRUFBQyxDQUFDO0FBTzVDO0lBR0UsZ0JBQW9CLE9BQWUsRUFDZixTQUFrQixFQUNuQixHQUFZO1FBRlgsWUFBTyxHQUFQLE9BQU8sQ0FBUTtRQUNmLGNBQVMsR0FBVCxTQUFTLENBQVM7UUFDbkIsUUFBRyxHQUFILEdBQUcsQ0FBUztRQUp2QixVQUFLLEdBQUcsS0FBSyxDQUFDO0lBSVksQ0FBQztJQUVuQyx5QkFBUSxHQUFSLFVBQVMsS0FBWTtRQUFaLHFCQUFZLEdBQVosWUFBWTtRQUNuQixJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztRQUNuQixNQUFNLENBQUMsSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVELG9CQUFHLEdBQUgsVUFBSSxRQUFnQjtRQUNsQixNQUFNLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxFQUFDLE1BQU0sRUFBRSxLQUFLLEVBQUMsRUFBRSxRQUFRLENBQUMsQ0FBQztJQUNqRCxDQUFDO0lBRUQsb0JBQUcsR0FBSCxVQUFJLFFBQWdCLEVBQUUsT0FBWTtRQUNoQyxNQUFNLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxFQUFDLE1BQU0sRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLFFBQVEsRUFBQyxFQUFFLFFBQVEsRUFBRSxPQUFPLENBQUMsQ0FBQztJQUMzRSxDQUFDO0lBRUQsd0JBQU8sR0FBUCxVQUFRLEdBQW1CLEVBQUUsSUFBWSxFQUFFLE9BQWE7UUFDdEQsSUFBSSxPQUFPLEdBQUc7WUFDWixRQUFRLEVBQUUsSUFBSSxDQUFDLE9BQU8sR0FBRyxHQUFHLEdBQUcsYUFBYTtZQUM1QyxJQUFJLEVBQUUsSUFBSSxHQUFHLE9BQU87WUFDcEIsTUFBTSxFQUFFLEdBQUcsQ0FBQyxNQUFNO1NBQ25CLENBQUM7UUFFRixJQUFJLEtBQUssR0FBUSxFQUFFLENBQUM7UUFDcEIsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7WUFDZCxLQUFLLENBQUMsS0FBSyxHQUFHLEdBQUcsQ0FBQyxLQUFLLENBQUM7UUFDMUIsQ0FBQztRQUVELEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDO1lBQ25CLEtBQUssQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQztRQUM5QixDQUFDO1FBRUQsRUFBRSxDQUFDLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUNsQyxPQUFPLENBQUMsSUFBSSxJQUFJLEdBQUcsR0FBRyxXQUFXLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3JELENBQUM7UUFFRCxPQUFPLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUVuQyxNQUFNLENBQUMsT0FBTyxDQUFDLE9BQU8sRUFBRSxPQUFPLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQzthQUN6QyxJQUFJLENBQUMsVUFBUyxJQUFZO1lBQ3pCLE1BQU0sQ0FBQyxJQUFJLEtBQUssRUFBRSxHQUFHLElBQUksR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQy9DLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUNILGFBQUM7QUFBRCxDQS9DQSxBQStDQyxJQUFBO0FBL0NZLGNBQU0sU0ErQ2xCLENBQUE7QUFFRCxJQUFJLE9BQU8sR0FBRyxDQUFDLENBQUM7QUFFaEIsaUJBQWlCLE9BQVksRUFBRSxPQUFZLEVBQUUsS0FBYztJQUN6RCxPQUFPLElBQUksQ0FBQyxDQUFDO0lBQ2IsSUFBSSxHQUFHLEdBQUcsT0FBTyxDQUFDO0lBRWxCLGFBQWEsQ0FBUztRQUNwQixFQUFFLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO1lBQ1YsT0FBTyxDQUFDLEtBQUssQ0FBQyxVQUFVLEdBQUcsR0FBRyxHQUFHLEtBQUssR0FBRyxDQUFDLENBQUMsQ0FBQztRQUM5QyxDQUFDO0lBQ0gsQ0FBQztJQUVELEdBQUcsQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDO0lBQzVDLEVBQUUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUM7UUFDWixHQUFHLENBQUMsU0FBUyxHQUFHLE9BQU8sR0FBRyxHQUFHLENBQUMsQ0FBQztJQUNqQyxDQUFDO0lBRUQsTUFBTSxDQUFDLElBQUksT0FBTyxDQUFDLFVBQVMsT0FBTyxFQUFFLE1BQU07UUFDekMsNERBQTREO1FBQzVELElBQUksR0FBRyxHQUFHLEtBQUssQ0FBQyxPQUFPLENBQUMsT0FBTyxFQUFFLFVBQVMsR0FBd0I7WUFDaEUsSUFBSSxNQUFNLEdBQWEsRUFBRSxDQUFDO1lBRTFCLEdBQUcsQ0FBQyxFQUFFLENBQUMsTUFBTSxFQUFFLFVBQVMsSUFBWTtnQkFDbEMsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUNwQixDQUFDLENBQUMsQ0FBQztZQUVILEdBQUcsQ0FBQyxFQUFFLENBQUMsS0FBSyxFQUFFO2dCQUNaLElBQUksTUFBTSxHQUFXLE1BQU0sQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7Z0JBQ3JDLEdBQUcsQ0FBQyxVQUFVLEdBQUcsR0FBRyxDQUFDLFVBQVUsR0FBRyxNQUFNLEdBQUcsTUFBTSxHQUFHLEdBQUcsQ0FBQyxDQUFDO2dCQUN6RCxJQUFJLE9BQU8sR0FBRyxXQUFXLEdBQUcsR0FBRyxDQUFDLFVBQVUsR0FBRyxHQUFHLEdBQUcsTUFBTSxDQUFDO2dCQUUxRCw2RUFBNkU7Z0JBQzdFLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDO29CQUM5QixJQUFJLGVBQWUsR0FBRyxHQUFHLENBQUMsT0FBTyxDQUFDLFlBQVksQ0FBQyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7b0JBQzFFLEdBQUcsQ0FBQyxlQUFlLENBQUMsQ0FBQztvQkFDckIsT0FBTyxJQUFJLElBQUksR0FBRyxlQUFlLENBQUM7Z0JBQ3BDLENBQUM7Z0JBRUQsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsVUFBVSxHQUFHLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7b0JBQzNDLE1BQU0sQ0FBQyxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDO2dCQUM3QixDQUFDO2dCQUFDLElBQUksQ0FBQyxDQUFDO29CQUNOLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQztnQkFDbEIsQ0FBQztZQUNILENBQUMsQ0FBQyxDQUFDO1FBQ0wsQ0FBQyxDQUFDLENBQUM7UUFFSCxFQUFFLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDO1lBQ1osR0FBRyxDQUFDLEtBQUssQ0FBQyxPQUFPLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFDN0IsQ0FBQztRQUNELEdBQUcsQ0FBQyxHQUFHLEVBQUUsQ0FBQztRQUVWLEdBQUcsQ0FBQyxFQUFFLENBQUMsT0FBTyxFQUFFLFVBQVMsS0FBWTtZQUNuQyxHQUFHLENBQUMsaUJBQWlCLEdBQUcsS0FBSyxDQUFDLENBQUM7WUFDL0IsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ2hCLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQyxDQUFDLENBQUM7QUFDTCxDQUFDO0FBRUQsMENBQTBDO0FBQzFDLDhCQUFxQyxNQUFjLEVBQUUsSUFBUztJQUM1RCxJQUFJLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxFQUFFLElBQUksQ0FBQyxDQUFDO0lBRXpELElBQUksY0FBYyxHQUFHLElBQUksc0JBQXNCLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDeEQsSUFBSSxHQUFHLEdBQUcsSUFBSSxDQUFDLEVBQUUsRUFBRSxDQUFDO0lBQ3BCLElBQUksS0FBSyxHQUFHLGNBQWMsQ0FBQyxXQUFXLENBQUMsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDM0QsTUFBTSxDQUFDLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLENBQUM7QUFDcEMsQ0FBQztBQVBlLDRCQUFvQix1QkFPbkMsQ0FBQTtBQUVEOzs7Ozs7Ozs7R0FTRztBQUVILDZEQUE2RDtBQUM3RCxJQUFJLFVBQVUsR0FBRyxrRUFBa0UsQ0FBQztBQUVwRix3RkFBd0Y7QUFDeEYsSUFBSSxZQUFZLEdBQUcsQ0FBQyxDQUFDO0FBRXJCLDRGQUE0RjtBQUM1Rix1RkFBdUY7QUFDdkYsd0ZBQXdGO0FBQ3hGLHdCQUF3QjtBQUN4QixJQUFJLGFBQWEsR0FBYSxFQUFFLENBQUM7QUFFakM7SUFDRSxJQUFJLEdBQUcsR0FBRyxJQUFJLElBQUksRUFBRSxDQUFDLE9BQU8sRUFBRSxDQUFDO0lBQy9CLElBQUksYUFBYSxHQUFHLENBQUMsR0FBRyxLQUFLLFlBQVksQ0FBQyxDQUFDO0lBQzNDLFlBQVksR0FBRyxHQUFHLENBQUM7SUFFbkIsSUFBSSxjQUFjLEdBQUcsSUFBSSxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDbEMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQztRQUM1QixjQUFjLENBQUMsQ0FBQyxDQUFDLEdBQUcsVUFBVSxDQUFDLE1BQU0sQ0FBQyxHQUFHLEdBQUcsRUFBRSxDQUFDLENBQUM7UUFDaEQsMEZBQTBGO1FBQzFGLEdBQUcsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsR0FBRyxFQUFFLENBQUMsQ0FBQztJQUM3QixDQUFDO0lBQ0QsRUFBRSxDQUFDLENBQUMsR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDZCxNQUFNLElBQUksS0FBSyxDQUFDLGdEQUFnRCxDQUFDLENBQUM7SUFDcEUsQ0FBQztJQUVELElBQUksRUFBRSxHQUFHLGNBQWMsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7SUFFakMsRUFBRSxDQUFDLENBQUMsQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDO1FBQ25CLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDO1lBQ3hCLGFBQWEsQ0FBQyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQztRQUNwRCxDQUFDO0lBQ0gsQ0FBQztJQUFDLElBQUksQ0FBQyxDQUFDO1FBQ04sd0dBQXdHO1FBQ3hHLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsSUFBSSxhQUFhLENBQUMsQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUM7WUFDcEQsYUFBYSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUN2QixDQUFDO1FBQ0QsYUFBYSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7SUFDckIsQ0FBQztJQUNELEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDO1FBQ3hCLEVBQUUsSUFBSSxVQUFVLENBQUMsTUFBTSxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzVDLENBQUM7SUFDRCxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsTUFBTSxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDckIsTUFBTSxJQUFJLEtBQUssQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDO0lBQzFDLENBQUM7SUFFRCxNQUFNLENBQUMsRUFBRSxDQUFDO0FBQ1osQ0FBQztBQXBDZSxzQkFBYyxpQkFvQzdCLENBQUEiLCJmaWxlIjoiZmlyZWJhc2UtcmVzdC5qcyIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBGaXJlYmFzZSBoZWxwZXIgZnVuY3Rpb25zIGZvciBSRVNUIEFQSSAodXNpbmcgUHJvbWlzZXMpLlxuICpcbiAqIENvcHlyaWdodCAyMDE1IEdvb2dsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5pbXBvcnQgaHR0cHMgPSByZXF1aXJlKCdodHRwcycpO1xuaW1wb3J0IGh0dHAgPSByZXF1aXJlKCdodHRwJyk7XG5pbXBvcnQgKiBhcyB1dGlsIGZyb20gJy4vdXRpbCc7XG5pbXBvcnQgcXVlcnlzdHJpbmcgPSByZXF1aXJlKCdxdWVyeXN0cmluZycpO1xubGV0IHV1aWQgPSByZXF1aXJlKCdub2RlLXV1aWQnKTtcbnZhciBGaXJlYmFzZVRva2VuR2VuZXJhdG9yID0gcmVxdWlyZSgnZmlyZWJhc2UtdG9rZW4tZ2VuZXJhdG9yJyk7XG5cbnZhciBGSVJFQkFTRV9IT1NUID0gJ2ZpcmViYXNlaW8uY29tJztcbnZhciBERUJVR19IRUFERVIgPSAneC1maXJlYmFzZS1hdXRoLWRlYnVnJztcblxuZXhwb3J0IHZhciBSVUxFU19MT0NBVElPTiA9ICAnLy5zZXR0aW5ncy9ydWxlcyc7XG5leHBvcnQgdmFyIFRJTUVTVEFNUCA9IHtcIi5zdlwiOiBcInRpbWVzdGFtcFwifTtcblxudHlwZSBSZXF1ZXN0T3B0aW9ucyA9IHtcbiAgbWV0aG9kOiBzdHJpbmcsXG4gIHByaW50Pzogc3RyaW5nO1xufVxuXG5leHBvcnQgY2xhc3MgQ2xpZW50IHtcbiAgcHJpdmF0ZSBkZWJ1ZyA9IGZhbHNlO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgYXBwTmFtZTogc3RyaW5nLFxuICAgICAgICAgICAgICBwcml2YXRlIGF1dGhUb2tlbj86IHN0cmluZyxcbiAgICAgICAgICAgICAgcHVibGljIHVpZD86IHN0cmluZykge31cblxuICBzZXREZWJ1ZyhkZWJ1ZyA9IHRydWUpIHtcbiAgICB0aGlzLmRlYnVnID0gZGVidWc7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBnZXQobG9jYXRpb246IHN0cmluZyk6IFByb21pc2U8c3RyaW5nPiB7XG4gICAgcmV0dXJuIHRoaXMucmVxdWVzdCh7bWV0aG9kOiAnR0VUJ30sIGxvY2F0aW9uKTtcbiAgfVxuXG4gIHB1dChsb2NhdGlvbjogc3RyaW5nLCBjb250ZW50OiBhbnkpOiBQcm9taXNlPHN0cmluZz4ge1xuICAgIHJldHVybiB0aGlzLnJlcXVlc3Qoe21ldGhvZDogJ1BVVCcsIHByaW50OiAnc2lsZW50J30sIGxvY2F0aW9uLCBjb250ZW50KTtcbiAgfVxuXG4gIHJlcXVlc3Qob3B0OiBSZXF1ZXN0T3B0aW9ucywgcGF0aDogc3RyaW5nLCBjb250ZW50PzogYW55KSB7XG4gICAgdmFyIG9wdGlvbnMgPSB7XG4gICAgICBob3N0bmFtZTogdGhpcy5hcHBOYW1lICsgJy4nICsgRklSRUJBU0VfSE9TVCxcbiAgICAgIHBhdGg6IHBhdGggKyAnLmpzb24nLFxuICAgICAgbWV0aG9kOiBvcHQubWV0aG9kLFxuICAgIH07XG5cbiAgICB2YXIgcXVlcnk6IGFueSA9IHt9O1xuICAgIGlmIChvcHQucHJpbnQpIHtcbiAgICAgIHF1ZXJ5LnByaW50ID0gb3B0LnByaW50O1xuICAgIH1cblxuICAgIGlmICh0aGlzLmF1dGhUb2tlbikge1xuICAgICAgcXVlcnkuYXV0aCA9IHRoaXMuYXV0aFRva2VuO1xuICAgIH1cblxuICAgIGlmIChPYmplY3Qua2V5cyhxdWVyeSkubGVuZ3RoID4gMCkge1xuICAgICAgb3B0aW9ucy5wYXRoICs9ICc/JyArIHF1ZXJ5c3RyaW5nLnN0cmluZ2lmeShxdWVyeSk7XG4gICAgfVxuXG4gICAgY29udGVudCA9IHV0aWwucHJldHR5SlNPTihjb250ZW50KTtcblxuICAgIHJldHVybiByZXF1ZXN0KG9wdGlvbnMsIGNvbnRlbnQsIHRoaXMuZGVidWcpXG4gICAgICAudGhlbihmdW5jdGlvbihib2R5OiBzdHJpbmcpIHtcbiAgICAgICAgcmV0dXJuIGJvZHkgPT09ICcnID8gbnVsbCA6IEpTT04ucGFyc2UoYm9keSk7XG4gICAgICB9KTtcbiAgfVxufVxuXG52YXIgcmlkTmV4dCA9IDA7XG5cbmZ1bmN0aW9uIHJlcXVlc3Qob3B0aW9uczogYW55LCBjb250ZW50OiBhbnksIGRlYnVnOiBib29sZWFuKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgcmlkTmV4dCArPSAxO1xuICB2YXIgcmlkID0gcmlkTmV4dDtcblxuICBmdW5jdGlvbiBsb2coczogc3RyaW5nKTogdm9pZCB7XG4gICAgaWYgKGRlYnVnKSB7XG4gICAgICBjb25zb2xlLmVycm9yKFwiUmVxdWVzdDxcIiArIHJpZCArIFwiPjogXCIgKyBzKTtcbiAgICB9XG4gIH1cblxuICBsb2coXCJSZXF1ZXN0OiBcIiArIHV0aWwucHJldHR5SlNPTihvcHRpb25zKSk7XG4gIGlmIChjb250ZW50KSB7XG4gICAgbG9nKFwiQm9keTogJ1wiICsgY29udGVudCArIFwiJ1wiKTtcbiAgfVxuXG4gIHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbihyZXNvbHZlLCByZWplY3QpIHtcbiAgICAvLyBUT0RPOiBXaHkgaXNuJ3QgdGhpcyBhcmd1bWVudCB0eXBlZCBhcyBwZXIgaHR0cHMucmVxdWVzdD9cbiAgICB2YXIgcmVxID0gaHR0cHMucmVxdWVzdChvcHRpb25zLCBmdW5jdGlvbihyZXM6IGh0dHAuQ2xpZW50UmVzcG9uc2UpIHtcbiAgICAgIHZhciBjaHVua3MgPSA8c3RyaW5nW10+W107XG5cbiAgICAgIHJlcy5vbignZGF0YScsIGZ1bmN0aW9uKGJvZHk6IHN0cmluZykge1xuICAgICAgICBjaHVua3MucHVzaChib2R5KTtcbiAgICAgIH0pO1xuXG4gICAgICByZXMub24oJ2VuZCcsIGZ1bmN0aW9uKCkge1xuICAgICAgICB2YXIgcmVzdWx0OiBzdHJpbmcgPSBjaHVua3Muam9pbignJyk7XG4gICAgICAgIGxvZyhcIlJlc3VsdCAoXCIgKyByZXMuc3RhdHVzQ29kZSArIFwiKTogJ1wiICsgcmVzdWx0ICsgXCInXCIpO1xuICAgICAgICBsZXQgbWVzc2FnZSA9IFwiU3RhdHVzID0gXCIgKyByZXMuc3RhdHVzQ29kZSArIFwiIFwiICsgcmVzdWx0O1xuXG4gICAgICAgIC8vIER1bXAgZGVidWcgaW5mb3JtYXRpb24gaWYgcHJlc2VudCBmb3IgYm90aCBzdWNjZXNzZnVsIGFuZCBmYWlsZWQgcmVxdWVzdHMuXG4gICAgICAgIGlmIChyZXMuaGVhZGVyc1tERUJVR19IRUFERVJdKSB7XG4gICAgICAgICAgbGV0IGZvcm1hdHRlZEhlYWRlciA9IHJlcy5oZWFkZXJzW0RFQlVHX0hFQURFUl0uc3BsaXQoJyAvJykuam9pbignXFxuICAvJyk7XG4gICAgICAgICAgbG9nKGZvcm1hdHRlZEhlYWRlcik7XG4gICAgICAgICAgbWVzc2FnZSArPSBcIlxcblwiICsgZm9ybWF0dGVkSGVhZGVyO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKE1hdGguZmxvb3IocmVzLnN0YXR1c0NvZGUgLyAxMDApICE9PSAyKSB7XG4gICAgICAgICAgcmVqZWN0KG5ldyBFcnJvcihtZXNzYWdlKSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmVzb2x2ZShyZXN1bHQpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9KTtcblxuICAgIGlmIChjb250ZW50KSB7XG4gICAgICByZXEud3JpdGUoY29udGVudCwgJ3V0ZjgnKTtcbiAgICB9XG4gICAgcmVxLmVuZCgpO1xuXG4gICAgcmVxLm9uKCdlcnJvcicsIGZ1bmN0aW9uKGVycm9yOiBFcnJvcikge1xuICAgICAgbG9nKFwiUmVxdWVzdCBlcnJvcjogXCIgKyBlcnJvcik7XG4gICAgICByZWplY3QoZXJyb3IpO1xuICAgIH0pO1xuICB9KTtcbn1cblxuLy8gb3B0cyB7IGRlYnVnOiBCb29sZWFuLCBhZG1pbjogQm9vbGVhbiB9XG5leHBvcnQgZnVuY3Rpb24gZ2VuZXJhdGVVaWRBdXRoVG9rZW4oc2VjcmV0OiBzdHJpbmcsIG9wdHM6IGFueSkge1xuICBvcHRzID0gdXRpbC5leHRlbmQoeyBkZWJ1ZzogZmFsc2UsIGFkbWluOiBmYWxzZSB9LCBvcHRzKTtcblxuICB2YXIgdG9rZW5HZW5lcmF0b3IgPSBuZXcgRmlyZWJhc2VUb2tlbkdlbmVyYXRvcihzZWNyZXQpO1xuICB2YXIgdWlkID0gdXVpZC52NCgpO1xuICB2YXIgdG9rZW4gPSB0b2tlbkdlbmVyYXRvci5jcmVhdGVUb2tlbih7IHVpZDogdWlkIH0sIG9wdHMpO1xuICByZXR1cm4geyB1aWQ6IHVpZCwgdG9rZW46IHRva2VuIH07XG59XG5cbi8qKlxuICogRmFuY3kgSUQgZ2VuZXJhdG9yIHRoYXQgY3JlYXRlcyAyMC1jaGFyYWN0ZXIgc3RyaW5nIGlkZW50aWZpZXJzIHdpdGggdGhlIGZvbGxvd2luZyBwcm9wZXJ0aWVzOlxuICpcbiAqIDEuIFRoZXkncmUgYmFzZWQgb24gdGltZXN0YW1wIHNvIHRoYXQgdGhleSBzb3J0ICphZnRlciogYW55IGV4aXN0aW5nIGlkcy5cbiAqIDIuIFRoZXkgY29udGFpbiA3Mi1iaXRzIG9mIHJhbmRvbSBkYXRhIGFmdGVyIHRoZSB0aW1lc3RhbXAgc28gdGhhdCBJRHMgd29uJ3QgY29sbGlkZSB3aXRoIG90aGVyIGNsaWVudHMnIElEcy5cbiAqIDMuIFRoZXkgc29ydCAqbGV4aWNvZ3JhcGhpY2FsbHkqIChzbyB0aGUgdGltZXN0YW1wIGlzIGNvbnZlcnRlZCB0byBjaGFyYWN0ZXJzIHRoYXQgd2lsbCBzb3J0IHByb3Blcmx5KS5cbiAqIDQuIFRoZXkncmUgbW9ub3RvbmljYWxseSBpbmNyZWFzaW5nLiAgRXZlbiBpZiB5b3UgZ2VuZXJhdGUgbW9yZSB0aGFuIG9uZSBpbiB0aGUgc2FtZSB0aW1lc3RhbXAsIHRoZVxuICogICAgbGF0dGVyIG9uZXMgd2lsbCBzb3J0IGFmdGVyIHRoZSBmb3JtZXIgb25lcy4gIFdlIGRvIHRoaXMgYnkgdXNpbmcgdGhlIHByZXZpb3VzIHJhbmRvbSBiaXRzXG4gKiAgICBidXQgXCJpbmNyZW1lbnRpbmdcIiB0aGVtIGJ5IDEgKG9ubHkgaW4gdGhlIGNhc2Ugb2YgYSB0aW1lc3RhbXAgY29sbGlzaW9uKS5cbiAqL1xuXG4vLyBNb2RlbGVkIGFmdGVyIGJhc2U2NCB3ZWItc2FmZSBjaGFycywgYnV0IG9yZGVyZWQgYnkgQVNDSUkuXG52YXIgUFVTSF9DSEFSUyA9ICctMDEyMzQ1Njc4OUFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaX2FiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6JztcblxuLy8gVGltZXN0YW1wIG9mIGxhc3QgcHVzaCwgdXNlZCB0byBwcmV2ZW50IGxvY2FsIGNvbGxpc2lvbnMgaWYgeW91IHB1c2ggdHdpY2UgaW4gb25lIG1zLlxudmFyIGxhc3RQdXNoVGltZSA9IDA7XG5cbi8vIFdlIGdlbmVyYXRlIDcyLWJpdHMgb2YgcmFuZG9tbmVzcyB3aGljaCBnZXQgdHVybmVkIGludG8gMTIgY2hhcmFjdGVycyBhbmQgYXBwZW5kZWQgdG8gdGhlXG4vLyB0aW1lc3RhbXAgdG8gcHJldmVudCBjb2xsaXNpb25zIHdpdGggb3RoZXIgY2xpZW50cy4gIFdlIHN0b3JlIHRoZSBsYXN0IGNoYXJhY3RlcnMgd2Vcbi8vIGdlbmVyYXRlZCBiZWNhdXNlIGluIHRoZSBldmVudCBvZiBhIGNvbGxpc2lvbiwgd2UnbGwgdXNlIHRob3NlIHNhbWUgY2hhcmFjdGVycyBleGNlcHRcbi8vIFwiaW5jcmVtZW50ZWRcIiBieSBvbmUuXG52YXIgbGFzdFJhbmRDaGFycyA9IDxudW1iZXJbXT5bXTtcblxuZXhwb3J0IGZ1bmN0aW9uIGdlbmVyYXRlUHVzaElEKCk6IHN0cmluZyB7XG4gIHZhciBub3cgPSBuZXcgRGF0ZSgpLmdldFRpbWUoKTtcbiAgdmFyIGR1cGxpY2F0ZVRpbWUgPSAobm93ID09PSBsYXN0UHVzaFRpbWUpO1xuICBsYXN0UHVzaFRpbWUgPSBub3c7XG5cbiAgdmFyIHRpbWVTdGFtcENoYXJzID0gbmV3IEFycmF5KDgpO1xuICBmb3IgKHZhciBpID0gNzsgaSA+PSAwOyBpLS0pIHtcbiAgICB0aW1lU3RhbXBDaGFyc1tpXSA9IFBVU0hfQ0hBUlMuY2hhckF0KG5vdyAlIDY0KTtcbiAgICAvLyBOT1RFOiBDYW4ndCB1c2UgPDwgaGVyZSBiZWNhdXNlIGphdmFzY3JpcHQgd2lsbCBjb252ZXJ0IHRvIGludCBhbmQgbG9zZSB0aGUgdXBwZXIgYml0cy5cbiAgICBub3cgPSBNYXRoLmZsb29yKG5vdyAvIDY0KTtcbiAgfVxuICBpZiAobm93ICE9PSAwKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdXZSBzaG91bGQgaGF2ZSBjb252ZXJ0ZWQgdGhlIGVudGlyZSB0aW1lc3RhbXAuJyk7XG4gIH1cblxuICB2YXIgaWQgPSB0aW1lU3RhbXBDaGFycy5qb2luKCcnKTtcblxuICBpZiAoIWR1cGxpY2F0ZVRpbWUpIHtcbiAgICBmb3IgKGkgPSAwOyBpIDwgMTI7IGkrKykge1xuICAgICAgbGFzdFJhbmRDaGFyc1tpXSA9IE1hdGguZmxvb3IoTWF0aC5yYW5kb20oKSAqIDY0KTtcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgLy8gSWYgdGhlIHRpbWVzdGFtcCBoYXNuJ3QgY2hhbmdlZCBzaW5jZSBsYXN0IHB1c2gsIHVzZSB0aGUgc2FtZSByYW5kb20gbnVtYmVyLCBleGNlcHQgaW5jcmVtZW50ZWQgYnkgMS5cbiAgICBmb3IgKGkgPSAxMTsgaSA+PSAwICYmIGxhc3RSYW5kQ2hhcnNbaV0gPT09IDYzOyBpLS0pIHtcbiAgICAgIGxhc3RSYW5kQ2hhcnNbaV0gPSAwO1xuICAgIH1cbiAgICBsYXN0UmFuZENoYXJzW2ldKys7XG4gIH1cbiAgZm9yIChpID0gMDsgaSA8IDEyOyBpKyspIHtcbiAgICBpZCArPSBQVVNIX0NIQVJTLmNoYXJBdChsYXN0UmFuZENoYXJzW2ldKTtcbiAgfVxuICBpZiAoaWQubGVuZ3RoICE9PSAyMCkge1xuICAgIHRocm93IG5ldyBFcnJvcignTGVuZ3RoIHNob3VsZCBiZSAyMC4nKTtcbiAgfVxuXG4gIHJldHVybiBpZDtcbn1cbiJdfQ==
//# sourceMappingURL=data:application/json;charset=utf8;base64,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SUFBSSxLQUFLLENBQUMsZ0RBQWdELENBQUMsQ0FBQztLQUNuRTtJQUVELElBQUksRUFBRSxHQUFHLGNBQWMsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7SUFFakMsSUFBSSxDQUFDLGFBQWEsRUFBRTtRQUNsQixLQUFLLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRTtZQUN2QixhQUFhLENBQUMsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUM7U0FDbkQ7S0FDRjtTQUFNO1FBQ0wsdUVBQXVFO1FBQ3ZFLG1DQUFtQztRQUNuQyxLQUFLLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsSUFBSSxhQUFhLENBQUMsQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFO1lBQ25ELGFBQWEsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUM7U0FDdEI7UUFDRCxhQUFhLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztLQUNwQjtJQUNELEtBQUssQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFO1FBQ3ZCLEVBQUUsSUFBSSxVQUFVLENBQUMsTUFBTSxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0tBQzNDO0lBQ0QsSUFBSSxFQUFFLENBQUMsTUFBTSxLQUFLLEVBQUUsRUFBRTtRQUNwQixNQUFNLElBQUksS0FBSyxDQUFDLHNCQUFzQixDQUFDLENBQUM7S0FDekM7SUFFRCxPQUFPLEVBQUUsQ0FBQztBQUNaLENBQUM7QUF0Q0Qsd0NBc0NDIiwiZmlsZSI6ImZpcmViYXNlLXJlc3QuanMiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogRmlyZWJhc2UgaGVscGVyIGZ1bmN0aW9ucyBmb3IgUkVTVCBBUEkgKHVzaW5nIFByb21pc2VzKS5cbiAqXG4gKiBDb3B5cmlnaHQgMjAxNSBHb29nbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuaW1wb3J0IGh0dHBzID0gcmVxdWlyZSgnaHR0cHMnKTtcbmltcG9ydCBodHRwID0gcmVxdWlyZSgnaHR0cCcpO1xuaW1wb3J0ICogYXMgdXRpbCBmcm9tICcuL3V0aWwnO1xuaW1wb3J0IHF1ZXJ5c3RyaW5nID0gcmVxdWlyZSgncXVlcnlzdHJpbmcnKTtcbmxldCB1dWlkID0gcmVxdWlyZSgnbm9kZS11dWlkJyk7XG52YXIgRmlyZWJhc2VUb2tlbkdlbmVyYXRvciA9IHJlcXVpcmUoJ2ZpcmViYXNlLXRva2VuLWdlbmVyYXRvcicpO1xuXG52YXIgRklSRUJBU0VfSE9TVCA9ICdmaXJlYmFzZWlvLmNvbSc7XG52YXIgREVCVUdfSEVBREVSID0gJ3gtZmlyZWJhc2UtYXV0aC1kZWJ1Zyc7XG5cbmV4cG9ydCB2YXIgUlVMRVNfTE9DQVRJT04gPSAnLy5zZXR0aW5ncy9ydWxlcyc7XG5leHBvcnQgdmFyIFRJTUVTVEFNUCA9IHtcbiAgJy5zdic6ICd0aW1lc3RhbXAnXG59O1xuXG5leHBvcnQgdHlwZSBSZXF1ZXN0T3B0aW9ucyA9IHtcbiAgbWV0aG9kOiBzdHJpbmcsXG4gIHByaW50Pzogc3RyaW5nO1xufVxuXG5leHBvcnQgY2xhc3MgQ2xpZW50IHtcbiAgcHJpdmF0ZSBkZWJ1ZyA9IGZhbHNlO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgICAgcHJpdmF0ZSBhcHBOYW1lOiBzdHJpbmcsIHByaXZhdGUgYXV0aFRva2VuPzogc3RyaW5nLFxuICAgICAgcHVibGljIHVpZD86IHN0cmluZykge31cblxuICBzZXREZWJ1ZyhkZWJ1ZyA9IHRydWUpIHtcbiAgICB0aGlzLmRlYnVnID0gZGVidWc7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBnZXQobG9jYXRpb246IHN0cmluZyk6IFByb21pc2U8c3RyaW5nPiB7XG4gICAgcmV0dXJuIHRoaXMucmVxdWVzdCh7bWV0aG9kOiAnR0VUJ30sIGxvY2F0aW9uKTtcbiAgfVxuXG4gIHB1dChsb2NhdGlvbjogc3RyaW5nLCBjb250ZW50OiBhbnkpOiBQcm9taXNlPHN0cmluZz4ge1xuICAgIHJldHVybiB0aGlzLnJlcXVlc3Qoe21ldGhvZDogJ1BVVCcsIHByaW50OiAnc2lsZW50J30sIGxvY2F0aW9uLCBjb250ZW50KTtcbiAgfVxuXG4gIHJlcXVlc3Qob3B0OiBSZXF1ZXN0T3B0aW9ucywgcGF0aDogc3RyaW5nLCBjb250ZW50PzogYW55KSB7XG4gICAgdmFyIG9wdGlvbnMgPSB7XG4gICAgICBob3N0bmFtZTogdGhpcy5hcHBOYW1lICsgJy4nICsgRklSRUJBU0VfSE9TVCxcbiAgICAgIHBhdGg6IHBhdGggKyAnLmpzb24nLFxuICAgICAgbWV0aG9kOiBvcHQubWV0aG9kLFxuICAgIH07XG5cbiAgICB2YXIgcXVlcnk6IGFueSA9IHt9O1xuICAgIGlmIChvcHQucHJpbnQpIHtcbiAgICAgIHF1ZXJ5LnByaW50ID0gb3B0LnByaW50O1xuICAgIH1cblxuICAgIGlmICh0aGlzLmF1dGhUb2tlbikge1xuICAgICAgcXVlcnkuYXV0aCA9IHRoaXMuYXV0aFRva2VuO1xuICAgIH1cblxuICAgIGlmIChPYmplY3Qua2V5cyhxdWVyeSkubGVuZ3RoID4gMCkge1xuICAgICAgb3B0aW9ucy5wYXRoICs9ICc/JyArIHF1ZXJ5c3RyaW5nLnN0cmluZ2lmeShxdWVyeSk7XG4gICAgfVxuXG4gICAgY29udGVudCA9IHV0aWwucHJldHR5SlNPTihjb250ZW50KTtcblxuICAgIHJldHVybiByZXF1ZXN0KG9wdGlvbnMsIGNvbnRlbnQsIHRoaXMuZGVidWcpLnRoZW4oZnVuY3Rpb24oYm9keTogc3RyaW5nKSB7XG4gICAgICByZXR1cm4gYm9keSA9PT0gJycgPyBudWxsIDogSlNPTi5wYXJzZShib2R5KTtcbiAgICB9KTtcbiAgfVxufVxuXG52YXIgcmlkTmV4dCA9IDA7XG5cbmZ1bmN0aW9uIHJlcXVlc3Qob3B0aW9uczogYW55LCBjb250ZW50OiBhbnksIGRlYnVnOiBib29sZWFuKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgcmlkTmV4dCArPSAxO1xuICB2YXIgcmlkID0gcmlkTmV4dDtcblxuICBmdW5jdGlvbiBsb2coczogc3RyaW5nKTogdm9pZCB7XG4gICAgaWYgKGRlYnVnKSB7XG4gICAgICBjb25zb2xlLmVycm9yKCdSZXF1ZXN0PCcgKyByaWQgKyAnPjogJyArIHMpO1xuICAgIH1cbiAgfVxuXG4gIGxvZygnUmVxdWVzdDogJyArIHV0aWwucHJldHR5SlNPTihvcHRpb25zKSk7XG4gIGlmIChjb250ZW50KSB7XG4gICAgbG9nKCdCb2R5OiBcXCcnICsgY29udGVudCArICdcXCcnKTtcbiAgfVxuXG4gIHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbihyZXNvbHZlLCByZWplY3QpIHtcbiAgICAvLyBUT0RPOiBXaHkgaXNuJ3QgdGhpcyBhcmd1bWVudCB0eXBlZCBhcyBwZXIgaHR0cHMucmVxdWVzdD9cbiAgICB2YXIgcmVxID0gaHR0cHMucmVxdWVzdChvcHRpb25zLCBmdW5jdGlvbihyZXM6IGh0dHAuQ2xpZW50UmVzcG9uc2UpIHtcbiAgICAgIHZhciBjaHVua3MgPSA8c3RyaW5nW10+W107XG5cbiAgICAgIHJlcy5vbignZGF0YScsIGZ1bmN0aW9uKGJvZHk6IHN0cmluZykge1xuICAgICAgICBjaHVua3MucHVzaChib2R5KTtcbiAgICAgIH0pO1xuXG4gICAgICByZXMub24oJ2VuZCcsIGZ1bmN0aW9uKCkge1xuICAgICAgICB2YXIgcmVzdWx0OiBzdHJpbmcgPSBjaHVua3Muam9pbignJyk7XG4gICAgICAgIGxvZygnUmVzdWx0ICgnICsgcmVzLnN0YXR1c0NvZGUgKyAnKTogXFwnJyArIHJlc3VsdCArICdcXCcnKTtcbiAgICAgICAgbGV0IG1lc3NhZ2UgPSAnU3RhdHVzID0gJyArIHJlcy5zdGF0dXNDb2RlICsgJyAnICsgcmVzdWx0O1xuXG4gICAgICAgIC8vIER1bXAgZGVidWcgaW5mb3JtYXRpb24gaWYgcHJlc2VudCBmb3IgYm90aCBzdWNjZXNzZnVsIGFuZCBmYWlsZWRcbiAgICAgICAgLy8gcmVxdWVzdHMuXG4gICAgICAgIGlmIChyZXMuaGVhZGVyc1tERUJVR19IRUFERVJdKSB7XG4gICAgICAgICAgbGV0IGZvcm1hdHRlZEhlYWRlciA9XG4gICAgICAgICAgICAgIHJlcy5oZWFkZXJzW0RFQlVHX0hFQURFUl0uc3BsaXQoJyAvJykuam9pbignXFxuICAvJyk7XG4gICAgICAgICAgbG9nKGZvcm1hdHRlZEhlYWRlcik7XG4gICAgICAgICAgbWVzc2FnZSArPSAnXFxuJyArIGZvcm1hdHRlZEhlYWRlcjtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChyZXMuc3RhdHVzQ29kZSAmJiBNYXRoLmZsb29yKHJlcy5zdGF0dXNDb2RlIC8gMTAwKSAhPT0gMikge1xuICAgICAgICAgIHJlamVjdChuZXcgRXJyb3IobWVzc2FnZSkpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHJlc29sdmUocmVzdWx0KTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfSk7XG5cbiAgICBpZiAoY29udGVudCkge1xuICAgICAgcmVxLndyaXRlKGNvbnRlbnQsICd1dGY4Jyk7XG4gICAgfVxuICAgIHJlcS5lbmQoKTtcblxuICAgIHJlcS5vbignZXJyb3InLCBmdW5jdGlvbihlcnJvcjogRXJyb3IpIHtcbiAgICAgIGxvZygnUmVxdWVzdCBlcnJvcjogJyArIGVycm9yKTtcbiAgICAgIHJlamVjdChlcnJvcik7XG4gICAgfSk7XG4gIH0pO1xufVxuXG4vLyBvcHRzIHsgZGVidWc6IEJvb2xlYW4sIGFkbWluOiBCb29sZWFuIH1cbmV4cG9ydCBmdW5jdGlvbiBnZW5lcmF0ZVVpZEF1dGhUb2tlbihzZWNyZXQ6IHN0cmluZywgb3B0czogYW55KSB7XG4gIG9wdHMgPSB1dGlsLmV4dGVuZCh7ZGVidWc6IGZhbHNlLCBhZG1pbjogZmFsc2V9LCBvcHRzKTtcblxuICB2YXIgdG9rZW5HZW5lcmF0b3IgPSBuZXcgRmlyZWJhc2VUb2tlbkdlbmVyYXRvcihzZWNyZXQpO1xuICB2YXIgdWlkID0gdXVpZC52NCgpO1xuICB2YXIgdG9rZW4gPSB0b2tlbkdlbmVyYXRvci5jcmVhdGVUb2tlbih7dWlkOiB1aWR9LCBvcHRzKTtcbiAgcmV0dXJuIHt1aWQ6IHVpZCwgdG9rZW46IHRva2VufTtcbn1cblxuLyoqXG4gKiBGYW5jeSBJRCBnZW5lcmF0b3IgdGhhdCBjcmVhdGVzIDIwLWNoYXJhY3RlciBzdHJpbmcgaWRlbnRpZmllcnMgd2l0aCB0aGVcbiAqIGZvbGxvd2luZyBwcm9wZXJ0aWVzOlxuICpcbiAqIDEuIFRoZXkncmUgYmFzZWQgb24gdGltZXN0YW1wIHNvIHRoYXQgdGhleSBzb3J0ICphZnRlciogYW55IGV4aXN0aW5nIGlkcy5cbiAqIDIuIFRoZXkgY29udGFpbiA3Mi1iaXRzIG9mIHJhbmRvbSBkYXRhIGFmdGVyIHRoZSB0aW1lc3RhbXAgc28gdGhhdCBJRHMgd29uJ3RcbiAqIGNvbGxpZGUgd2l0aCBvdGhlciBjbGllbnRzJyBJRHMuXG4gKiAzLiBUaGV5IHNvcnQgKmxleGljb2dyYXBoaWNhbGx5KiAoc28gdGhlIHRpbWVzdGFtcCBpcyBjb252ZXJ0ZWQgdG8gY2hhcmFjdGVyc1xuICogdGhhdCB3aWxsIHNvcnQgcHJvcGVybHkpLlxuICogNC4gVGhleSdyZSBtb25vdG9uaWNhbGx5IGluY3JlYXNpbmcuICBFdmVuIGlmIHlvdSBnZW5lcmF0ZSBtb3JlIHRoYW4gb25lIGluXG4gKiB0aGUgc2FtZSB0aW1lc3RhbXAsIHRoZSBsYXR0ZXIgb25lcyB3aWxsIHNvcnQgYWZ0ZXIgdGhlIGZvcm1lciBvbmVzLiAgV2UgZG9cbiAqIHRoaXMgYnkgdXNpbmcgdGhlIHByZXZpb3VzIHJhbmRvbSBiaXRzIGJ1dCBcImluY3JlbWVudGluZ1wiIHRoZW0gYnkgMSAob25seSBpblxuICogdGhlIGNhc2Ugb2YgYSB0aW1lc3RhbXAgY29sbGlzaW9uKS5cbiAqL1xuXG4vLyBNb2RlbGVkIGFmdGVyIGJhc2U2NCB3ZWItc2FmZSBjaGFycywgYnV0IG9yZGVyZWQgYnkgQVNDSUkuXG52YXIgUFVTSF9DSEFSUyA9XG4gICAgJy0wMTIzNDU2Nzg5QUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVpfYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXonO1xuXG4vLyBUaW1lc3RhbXAgb2YgbGFzdCBwdXNoLCB1c2VkIHRvIHByZXZlbnQgbG9jYWwgY29sbGlzaW9ucyBpZiB5b3UgcHVzaCB0d2ljZSBpblxuLy8gb25lIG1zLlxudmFyIGxhc3RQdXNoVGltZSA9IDA7XG5cbi8vIFdlIGdlbmVyYXRlIDcyLWJpdHMgb2YgcmFuZG9tbmVzcyB3aGljaCBnZXQgdHVybmVkIGludG8gMTIgY2hhcmFjdGVycyBhbmRcbi8vIGFwcGVuZGVkIHRvIHRoZSB0aW1lc3RhbXAgdG8gcHJldmVudCBjb2xsaXNpb25zIHdpdGggb3RoZXIgY2xpZW50cy4gIFdlIHN0b3JlXG4vLyB0aGUgbGFzdCBjaGFyYWN0ZXJzIHdlIGdlbmVyYXRlZCBiZWNhdXNlIGluIHRoZSBldmVudCBvZiBhIGNvbGxpc2lvbiwgd2UnbGxcbi8vIHVzZSB0aG9zZSBzYW1lIGNoYXJhY3RlcnMgZXhjZXB0IFwiaW5jcmVtZW50ZWRcIiBieSBvbmUuXG52YXIgbGFzdFJhbmRDaGFycyA9IDxudW1iZXJbXT5bXTtcblxuZXhwb3J0IGZ1bmN0aW9uIGdlbmVyYXRlUHVzaElEKCk6IHN0cmluZyB7XG4gIHZhciBub3cgPSBuZXcgRGF0ZSgpLmdldFRpbWUoKTtcbiAgdmFyIGR1cGxpY2F0ZVRpbWUgPSAobm93ID09PSBsYXN0UHVzaFRpbWUpO1xuICBsYXN0UHVzaFRpbWUgPSBub3c7XG5cbiAgdmFyIHRpbWVTdGFtcENoYXJzID0gbmV3IEFycmF5KDgpO1xuICBmb3IgKHZhciBpID0gNzsgaSA+PSAwOyBpLS0pIHtcbiAgICB0aW1lU3RhbXBDaGFyc1tpXSA9IFBVU0hfQ0hBUlMuY2hhckF0KG5vdyAlIDY0KTtcbiAgICAvLyBOT1RFOiBDYW4ndCB1c2UgPDwgaGVyZSBiZWNhdXNlIGphdmFzY3JpcHQgd2lsbCBjb252ZXJ0IHRvIGludCBhbmQgbG9zZVxuICAgIC8vIHRoZSB1cHBlciBiaXRzLlxuICAgIG5vdyA9IE1hdGguZmxvb3Iobm93IC8gNjQpO1xuICB9XG4gIGlmIChub3cgIT09IDApIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ1dlIHNob3VsZCBoYXZlIGNvbnZlcnRlZCB0aGUgZW50aXJlIHRpbWVzdGFtcC4nKTtcbiAgfVxuXG4gIHZhciBpZCA9IHRpbWVTdGFtcENoYXJzLmpvaW4oJycpO1xuXG4gIGlmICghZHVwbGljYXRlVGltZSkge1xuICAgIGZvciAoaSA9IDA7IGkgPCAxMjsgaSsrKSB7XG4gICAgICBsYXN0UmFuZENoYXJzW2ldID0gTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpICogNjQpO1xuICAgIH1cbiAgfSBlbHNlIHtcbiAgICAvLyBJZiB0aGUgdGltZXN0YW1wIGhhc24ndCBjaGFuZ2VkIHNpbmNlIGxhc3QgcHVzaCwgdXNlIHRoZSBzYW1lIHJhbmRvbVxuICAgIC8vIG51bWJlciwgZXhjZXB0IGluY3JlbWVudGVkIGJ5IDEuXG4gICAgZm9yIChpID0gMTE7IGkgPj0gMCAmJiBsYXN0UmFuZENoYXJzW2ldID09PSA2MzsgaS0tKSB7XG4gICAgICBsYXN0UmFuZENoYXJzW2ldID0gMDtcbiAgICB9XG4gICAgbGFzdFJhbmRDaGFyc1tpXSsrO1xuICB9XG4gIGZvciAoaSA9IDA7IGkgPCAxMjsgaSsrKSB7XG4gICAgaWQgKz0gUFVTSF9DSEFSUy5jaGFyQXQobGFzdFJhbmRDaGFyc1tpXSk7XG4gIH1cbiAgaWYgKGlkLmxlbmd0aCAhPT0gMjApIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ0xlbmd0aCBzaG91bGQgYmUgMjAuJyk7XG4gIH1cblxuICByZXR1cm4gaWQ7XG59XG4iXX0=
"use strict";
exports.__esModule = true;
/*

@@ -103,2 +104,2 @@ * Copyright 2015 Google Inc. All Rights Reserved.

//# sourceMappingURL=data:application/json;charset=utf8;base64,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QUksR0FBRyxDQUFDLENBQUM7SUFDMUQsQ0FBQztJQUFDLElBQUksQ0FBQyxDQUFDO1FBQ04sTUFBTSxDQUFDLFFBQVEsR0FBRyxDQUFDLENBQUM7SUFDdEIsQ0FBQztBQUNILENBQUM7QUFFRDtJQUNFLE1BQU0sQ0FBQyxVQUFVLEdBQUcsQ0FBQyxDQUFDO0FBQ3hCLENBQUM7QUFGZSxpQkFBUyxZQUV4QixDQUFBO0FBRUQ7SUFDRSxFQUFFLENBQUMsQ0FBQyxVQUFVLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNyQixNQUFNLENBQVUsU0FBUyxDQUFDO0lBQzVCLENBQUM7SUFFRCxFQUFFLENBQUMsQ0FBQyxVQUFVLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNyQixNQUFNLENBQUMsZ0JBQWdCLEdBQUcsVUFBVSxDQUFDO0lBQ3ZDLENBQUM7SUFDRCxNQUFNLENBQUMsRUFBRSxDQUFDO0FBQ1osQ0FBQztBQVRlLG9CQUFZLGVBUzNCLENBQUEiLCJmaWxlIjoibG9nZ2VyLmpzIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIENvcHlyaWdodCAyMDE1IEdvb2dsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5sZXQgbGFzdEVycm9yOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG5sZXQgbGFzdE1lc3NhZ2U6IHN0cmluZyB8IHVuZGVmaW5lZDtcbmxldCBlcnJvckNvdW50OiBudW1iZXI7XG5sZXQgc2lsZW5jZU91dHB1dDogYm9vbGVhbjtcblxubGV0IERFQlVHID0gZmFsc2U7XG5cbmxldCBnZXRDb250ZXh0ID0gKCkgPT4gKDxFcnJvckNvbnRleHQ+IHt9KTtcblxucmVzZXQoKTtcblxuZXhwb3J0IGZ1bmN0aW9uIHJlc2V0KCkge1xuICBsYXN0RXJyb3IgPSB1bmRlZmluZWQ7XG4gIGxhc3RNZXNzYWdlID0gdW5kZWZpbmVkO1xuICBlcnJvckNvdW50ID0gMDtcbiAgc2lsZW5jZU91dHB1dCA9IGZhbHNlO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gc2V0RGVidWcoZGVidWcgPSB0cnVlKSB7XG4gIERFQlVHID0gZGVidWc7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzaWxlbnQoZiA9IHRydWUpIHtcbiAgc2lsZW5jZU91dHB1dCA9IGY7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRXJyb3JDb250ZXh0IHtcbiAgbGluZT86IG51bWJlcjtcbiAgY29sdW1uPzogbnVtYmVyO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gc2V0Q29udGV4dChmbjogKCkgPT4gRXJyb3JDb250ZXh0KSB7XG4gIGdldENvbnRleHQgPSBmbjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGVycm9yKHM6IHN0cmluZykge1xuICBsZXQgZXJyID0gZXJyb3JTdHJpbmcocyk7XG4gIC8vIERlLWR1cCBpZGVudGljYWwgbWVzc2FnZXNcbiAgaWYgKGVyciAgPT09IGxhc3RNZXNzYWdlKSB7XG4gICAgcmV0dXJuO1xuICB9XG4gIGxhc3RNZXNzYWdlID0gZXJyO1xuICBsYXN0RXJyb3IgPSBsYXN0TWVzc2FnZTtcbiAgaWYgKCFzaWxlbmNlT3V0cHV0KSB7XG4gICAgY29uc29sZS5lcnJvcihsYXN0RXJyb3IpO1xuICAgIGlmIChERUJVRykge1xuICAgICAgbGV0IGUgPSBuZXcgRXJyb3IoXCJTdGFjayB0cmFjZVwiKTtcbiAgICAgIGNvbnNvbGUuZXJyb3IoZS5zdGFjayk7XG4gICAgfVxuICB9XG4gIGVycm9yQ291bnQgKz0gMTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHdhcm4oczogc3RyaW5nKSB7XG4gIGxldCBlcnIgPSBlcnJvclN0cmluZyhzKTtcbiAgLy8gRGUtZHVwIGlkZW50aWNhbCBtZXNzYWdlc1xuICBpZiAoZXJyID09PSBsYXN0TWVzc2FnZSkge1xuICAgIHJldHVybjtcbiAgfVxuICBsYXN0TWVzc2FnZSA9IGVycjtcbiAgaWYgKCFzaWxlbmNlT3V0cHV0KSB7XG4gICAgY29uc29sZS53YXJuKGxhc3RNZXNzYWdlKTtcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0TGFzdE1lc3NhZ2UoKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgcmV0dXJuIGxhc3RNZXNzYWdlO1xufVxuXG5mdW5jdGlvbiBlcnJvclN0cmluZyhzOiBzdHJpbmcpIHtcbiAgbGV0IGN0eCA9IGdldENvbnRleHQoKTtcbiAgaWYgKGN0eC5saW5lICE9PSB1bmRlZmluZWQgJiYgY3R4LmNvbHVtbiAhPT0gdW5kZWZpbmVkKSB7XG4gICAgcmV0dXJuICdib2x0OicgKyBjdHgubGluZSArICc6JyArIGN0eC5jb2x1bW4gKyAnOiAnICsgcztcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gJ2JvbHQ6ICcgKyBzO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBoYXNFcnJvcnMoKTogYm9vbGVhbiB7XG4gIHJldHVybiBlcnJvckNvdW50ID4gMDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGVycm9yU3VtbWFyeSgpOiBzdHJpbmcge1xuICBpZiAoZXJyb3JDb3VudCA9PT0gMSkge1xuICAgIHJldHVybiA8c3RyaW5nPiBsYXN0RXJyb3I7XG4gIH1cblxuICBpZiAoZXJyb3JDb3VudCAhPT0gMCkge1xuICAgIHJldHVybiBcIkZhdGFsIGVycm9yczogXCIgKyBlcnJvckNvdW50O1xuICB9XG4gIHJldHVybiBcIlwiO1xufVxuIl19
//# sourceMappingURL=data:application/json;charset=utf8;base64,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QUFnQixHQUFHLFVBQVUsQ0FBQztLQUN0QztJQUNELE9BQU8sRUFBRSxDQUFDO0FBQ1osQ0FBQztBQVRELG9DQVNDIiwiZmlsZSI6ImxvZ2dlci5qcyIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBDb3B5cmlnaHQgMjAxNSBHb29nbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xubGV0IGxhc3RFcnJvcjogc3RyaW5nIHwgdW5kZWZpbmVkO1xubGV0IGxhc3RNZXNzYWdlOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG5sZXQgZXJyb3JDb3VudDogbnVtYmVyO1xubGV0IHNpbGVuY2VPdXRwdXQ6IGJvb2xlYW47XG5cbmxldCBERUJVRyA9IGZhbHNlO1xuXG5sZXQgZ2V0Q29udGV4dCA9ICgpID0+ICg8RXJyb3JDb250ZXh0PiB7fSk7XG5cbnJlc2V0KCk7XG5cbmV4cG9ydCBmdW5jdGlvbiByZXNldCgpIHtcbiAgbGFzdEVycm9yID0gdW5kZWZpbmVkO1xuICBsYXN0TWVzc2FnZSA9IHVuZGVmaW5lZDtcbiAgZXJyb3JDb3VudCA9IDA7XG4gIHNpbGVuY2VPdXRwdXQgPSBmYWxzZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHNldERlYnVnKGRlYnVnID0gdHJ1ZSkge1xuICBERUJVRyA9IGRlYnVnO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gc2lsZW50KGYgPSB0cnVlKSB7XG4gIHNpbGVuY2VPdXRwdXQgPSBmO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEVycm9yQ29udGV4dCB7XG4gIGxpbmU/OiBudW1iZXI7XG4gIGNvbHVtbj86IG51bWJlcjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHNldENvbnRleHQoZm46ICgpID0+IEVycm9yQ29udGV4dCkge1xuICBnZXRDb250ZXh0ID0gZm47XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBlcnJvcihzOiBzdHJpbmcpIHtcbiAgbGV0IGVyciA9IGVycm9yU3RyaW5nKHMpO1xuICAvLyBEZS1kdXAgaWRlbnRpY2FsIG1lc3NhZ2VzXG4gIGlmIChlcnIgID09PSBsYXN0TWVzc2FnZSkge1xuICAgIHJldHVybjtcbiAgfVxuICBsYXN0TWVzc2FnZSA9IGVycjtcbiAgbGFzdEVycm9yID0gbGFzdE1lc3NhZ2U7XG4gIGlmICghc2lsZW5jZU91dHB1dCkge1xuICAgIGNvbnNvbGUuZXJyb3IobGFzdEVycm9yKTtcbiAgICBpZiAoREVCVUcpIHtcbiAgICAgIGxldCBlID0gbmV3IEVycm9yKFwiU3RhY2sgdHJhY2VcIik7XG4gICAgICBjb25zb2xlLmVycm9yKGUuc3RhY2spO1xuICAgIH1cbiAgfVxuICBlcnJvckNvdW50ICs9IDE7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB3YXJuKHM6IHN0cmluZykge1xuICBsZXQgZXJyID0gZXJyb3JTdHJpbmcocyk7XG4gIC8vIERlLWR1cCBpZGVudGljYWwgbWVzc2FnZXNcbiAgaWYgKGVyciA9PT0gbGFzdE1lc3NhZ2UpIHtcbiAgICByZXR1cm47XG4gIH1cbiAgbGFzdE1lc3NhZ2UgPSBlcnI7XG4gIGlmICghc2lsZW5jZU91dHB1dCkge1xuICAgIGNvbnNvbGUud2FybihsYXN0TWVzc2FnZSk7XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldExhc3RNZXNzYWdlKCk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gIHJldHVybiBsYXN0TWVzc2FnZTtcbn1cblxuZnVuY3Rpb24gZXJyb3JTdHJpbmcoczogc3RyaW5nKSB7XG4gIGxldCBjdHggPSBnZXRDb250ZXh0KCk7XG4gIGlmIChjdHgubGluZSAhPT0gdW5kZWZpbmVkICYmIGN0eC5jb2x1bW4gIT09IHVuZGVmaW5lZCkge1xuICAgIHJldHVybiAnYm9sdDonICsgY3R4LmxpbmUgKyAnOicgKyBjdHguY29sdW1uICsgJzogJyArIHM7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuICdib2x0OiAnICsgcztcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gaGFzRXJyb3JzKCk6IGJvb2xlYW4ge1xuICByZXR1cm4gZXJyb3JDb3VudCA+IDA7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBlcnJvclN1bW1hcnkoKTogc3RyaW5nIHtcbiAgaWYgKGVycm9yQ291bnQgPT09IDEpIHtcbiAgICByZXR1cm4gPHN0cmluZz4gbGFzdEVycm9yO1xuICB9XG5cbiAgaWYgKGVycm9yQ291bnQgIT09IDApIHtcbiAgICByZXR1cm4gXCJGYXRhbCBlcnJvcnM6IFwiICsgZXJyb3JDb3VudDtcbiAgfVxuICByZXR1cm4gXCJcIjtcbn1cbiJdfQ==
"use strict";
exports.__esModule = true;
/*

@@ -24,2 +25,2 @@ * Copyright 2015 Google Inc. All Rights Reserved.

//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInBhcnNlLXV0aWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBOzs7Ozs7Ozs7Ozs7OztHQWNHO0FBQ0gsSUFBSSxNQUFNLEdBQUcsT0FBTyxDQUFDLGdCQUFnQixDQUFDLENBQUM7QUFHdkMseUJBQWdDLFVBQWtCO0lBQ2hELElBQUksTUFBTSxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsdUJBQXVCLEdBQUcsVUFBVSxHQUFHLElBQUksQ0FBQyxDQUFDO0lBQ3ZFLE1BQU0sQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7QUFDakMsQ0FBQztBQUhlLHVCQUFlLGtCQUc5QixDQUFBIiwiZmlsZSI6InBhcnNlLXV0aWwuanMiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogQ29weXJpZ2h0IDIwMTUgR29vZ2xlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cbmxldCBwYXJzZXIgPSByZXF1aXJlKCcuL3J1bGVzLXBhcnNlcicpO1xuaW1wb3J0ICogYXMgYXN0IGZyb20gJy4vYXN0JztcblxuZXhwb3J0IGZ1bmN0aW9uIHBhcnNlRXhwcmVzc2lvbihleHByZXNzaW9uOiBzdHJpbmcpOiBhc3QuRXhwIHtcbiAgdmFyIHJlc3VsdCA9IHBhcnNlci5wYXJzZSgnZnVuY3Rpb24gZigpIHtyZXR1cm4gJyArIGV4cHJlc3Npb24gKyAnO30nKTtcbiAgcmV0dXJuIHJlc3VsdC5mdW5jdGlvbnMuZi5ib2R5O1xufVxuIl19
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInBhcnNlLXV0aWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQTs7Ozs7Ozs7Ozs7Ozs7R0FjRztBQUNILElBQUksTUFBTSxHQUFHLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO0FBR3ZDLHlCQUFnQyxVQUFrQjtJQUNoRCxJQUFJLE1BQU0sR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDLHVCQUF1QixHQUFHLFVBQVUsR0FBRyxJQUFJLENBQUMsQ0FBQztJQUN2RSxPQUFPLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztBQUNqQyxDQUFDO0FBSEQsMENBR0MiLCJmaWxlIjoicGFyc2UtdXRpbC5qcyIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBDb3B5cmlnaHQgMjAxNSBHb29nbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xubGV0IHBhcnNlciA9IHJlcXVpcmUoJy4vcnVsZXMtcGFyc2VyJyk7XG5pbXBvcnQgKiBhcyBhc3QgZnJvbSAnLi9hc3QnO1xuXG5leHBvcnQgZnVuY3Rpb24gcGFyc2VFeHByZXNzaW9uKGV4cHJlc3Npb246IHN0cmluZyk6IGFzdC5FeHAge1xuICB2YXIgcmVzdWx0ID0gcGFyc2VyLnBhcnNlKCdmdW5jdGlvbiBmKCkge3JldHVybiAnICsgZXhwcmVzc2lvbiArICc7fScpO1xuICByZXR1cm4gcmVzdWx0LmZ1bmN0aW9ucy5mLmJvZHk7XG59XG4iXX0=
"use strict";
exports.__esModule = true;
/*

@@ -19,7 +20,7 @@ * Firebase Rules test simulator.

*/
var chai_1 = require('chai');
var rest = require('./firebase-rest');
var util = require('./util');
var fileIO = require('./file-io');
var bolt = require('./bolt');
var chai_1 = require("chai");
var rest = require("./firebase-rest");
var util = require("./util");
var fileIO = require("./file-io");
var bolt = require("./bolt");
var generate = util.lift(bolt.generate);

@@ -33,3 +34,3 @@ var readFile = util.liftArgs(fileIO.readFile);

exports.rulesSuite = rulesSuite;
var RulesSuite = (function () {
var RulesSuite = /** @class */ (function () {
function RulesSuite(suiteName, fnSuite) {

@@ -136,3 +137,4 @@ this.suiteName = suiteName;

}());
var RulesTest = (function () {
exports.RulesSuite = RulesSuite;
var RulesTest = /** @class */ (function () {
function RulesTest(testName, suite, fnTest) {

@@ -159,4 +161,3 @@ this.testName = testName;

_this.log("Finished");
})
.catch(function (error) {
})["catch"](function (error) {
_this.log("Failed: " + error);

@@ -229,4 +230,3 @@ throw error;

_this.status = true;
})
.catch(function (error) {
})["catch"](function (error) {
_this.status = false;

@@ -252,4 +252,3 @@ _this.lastError = error;

_this.status = true;
})
.catch(function (error) {
})["catch"](function (error) {
_this.status = false;

@@ -270,4 +269,3 @@ _this.lastError = error;

_this.status = true;
})
.catch(function (error) {
})["catch"](function (error) {
_this.status = false;

@@ -314,2 +312,2 @@ _this.lastError = error;

//# sourceMappingURL=data:application/json;charset=utf8;base64,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R0FBRyxHQUFHLE9BQU8sQ0FBQztJQUNwRSxDQUFDO0lBQ0gsZ0JBQUM7QUFBRCxDQTNMQSxBQTJMQyxJQUFBO0FBM0xZLGlCQUFTLFlBMkxyQixDQUFBIiwiZmlsZSI6InNpbXVsYXRvci5qcyIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBGaXJlYmFzZSBSdWxlcyB0ZXN0IHNpbXVsYXRvci5cbiAqXG4gKiBDb3B5cmlnaHQgMjAxNSBHb29nbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuaW1wb3J0IHthc3NlcnR9IGZyb20gJ2NoYWknO1xuaW1wb3J0ICogYXMgcmVzdCBmcm9tICcuL2ZpcmViYXNlLXJlc3QnO1xuaW1wb3J0ICogYXMgdXRpbCBmcm9tICcuL3V0aWwnO1xuaW1wb3J0ICogYXMgZmlsZUlPIGZyb20gJy4vZmlsZS1pbyc7XG5pbXBvcnQgKiBhcyBib2x0IGZyb20gJy4vYm9sdCc7XG5cbmxldCBnZW5lcmF0ZSA9IHV0aWwubGlmdChib2x0LmdlbmVyYXRlKTtcbmxldCByZWFkRmlsZSA9IHV0aWwubGlmdEFyZ3MoZmlsZUlPLnJlYWRGaWxlKTtcblxudmFyIE1BWF9URVNUX01TID0gNjAwMDA7XG5cbmV4cG9ydCB0eXBlIFN1aXRlRnVuY3Rpb24gPSAoZm46IFRlc3RGdW5jdGlvbikgPT4gdm9pZDtcblxuLy8gSW50ZXJmYWNlIGZvciAndGVzdCcgZnVuY3Rpb24gcGFzc2VkIGJhY2sgdG8gcnVsZXNTdWl0ZSBjYWxsYmFjay5cbi8vIHRlc3QgaXMgYSBmdW5jdGlvbiBhcyB3ZWxsIGFzIGEgbmFtZXNwYWNlIGZvciBzb21lIHN0YXRpYyBtZXRob2RzXG4vLyBhbmQgY29uc3RhbnRzLlxuZXhwb3J0IGludGVyZmFjZSBUZXN0RnVuY3Rpb24ge1xuICAobmFtZTogc3RyaW5nLCBmblRlc3Q6IChydWxlczogUnVsZXNUZXN0KSA9PiB2b2lkKTogdm9pZDtcbiAgcnVsZXM6IChwYXRoOiBzdHJpbmcpID0+IHZvaWQ7XG4gIGRhdGFiYXNlOiAoYXBwTmFtZTogc3RyaW5nLCBzZWNyZXQ6IHN0cmluZykgPT4gdm9pZDtcbiAgdWlkOiAodXNlcm5hbWU6IHN0cmluZykgPT4gc3RyaW5nO1xuICBUSU1FU1RBTVA6IE9iamVjdDtcbn07XG5cbmV4cG9ydCBmdW5jdGlvbiBydWxlc1N1aXRlKHN1aXRlTmFtZTogc3RyaW5nLCBmblN1aXRlOiBTdWl0ZUZ1bmN0aW9uKSB7XG4gIG5ldyBSdWxlc1N1aXRlKHN1aXRlTmFtZSwgZm5TdWl0ZSkucnVuKCk7XG59XG5cbmNsYXNzIFJ1bGVzU3VpdGUge1xuICBwdWJsaWMgIGRlYnVnID0gZmFsc2U7XG4gIHByaXZhdGUgdXNlcnMgPSA8e1tuYW1lOiBzdHJpbmddOiByZXN0LkNsaWVudH0+e307XG4gIHByaXZhdGUgdGVzdHMgPSA8UnVsZXNUZXN0W10+W107XG4gIHByaXZhdGUgcnVsZXNQYXRoOiBzdHJpbmc7XG4gIHByaXZhdGUgcnVsZXNQYXRoUmVzb2x2ZTogKHBhdGg6IHN0cmluZykgPT4gdm9pZDtcbiAgcHJpdmF0ZSBkYXRhYmFzZVJlYWR5OiAoKSA9PiB2b2lkO1xuICBwcml2YXRlIHJlYWR5OiBQcm9taXNlPGFueT47XG4gIHByaXZhdGUgYWRtaW5DbGllbnQ6IHJlc3QuQ2xpZW50O1xuICBwcml2YXRlIGFwcE5hbWU6IHN0cmluZztcbiAgcHJpdmF0ZSBhcHBTZWNyZXQ6IHN0cmluZztcblxuICBjb25zdHJ1Y3RvcihwdWJsaWMgc3VpdGVOYW1lOiBzdHJpbmcsXG4gICAgICAgICAgICAgIHByaXZhdGUgZm5TdWl0ZTogU3VpdGVGdW5jdGlvbikge31cblxuICBzZXREZWJ1ZyhkZWJ1ZyA9IHRydWUpIHtcbiAgICB0aGlzLmRlYnVnID0gZGVidWc7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBydW4oKSB7XG4gICAgdmFyIHNlbGYgPSB0aGlzO1xuXG4gICAgLy8gUnVuIE1vY2hhIFRlc3QgU3VpdGUgLSBzZXJpYWxpemUgd2l0aCBhbnkgb3RoZXIgbW9jaGEgdGVzdCBzdWl0ZXMuXG4gICAgc3VpdGUoXCJGaXJlYmFzZSBSdWxlcyBTaW11bGF0b3I6IFwiICsgc2VsZi5zdWl0ZU5hbWUsIGZ1bmN0aW9uKCkge1xuICAgICAgdGhpcy50aW1lb3V0KE1BWF9URVNUX01TKTtcbiAgICAgIHN1aXRlU2V0dXAoZnVuY3Rpb24oKSB7XG4gICAgICAgIHZhciBydWxlc1BhdGggPSBuZXcgUHJvbWlzZShmdW5jdGlvbihyZXNvbHZlKSB7XG4gICAgICAgICAgc2VsZi5ydWxlc1BhdGhSZXNvbHZlID0gcmVzb2x2ZTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgdmFyIGRhdGFiYXNlID0gbmV3IFByb21pc2UoZnVuY3Rpb24ocmVzb2x2ZSkge1xuICAgICAgICAgIHNlbGYuZGF0YWJhc2VSZWFkeSA9IHJlc29sdmU7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHZhciBydWxlc0pTT04gPSBnZW5lcmF0ZSh1dGlsLmdldFByb3AocmVhZEZpbGUocnVsZXNQYXRoKSwgJ2NvbnRlbnQnKSk7XG5cbiAgICAgICAgc2VsZi5yZWFkeSA9IFByb21pc2UuYWxsKFtydWxlc0pTT04sIGRhdGFiYXNlXSlcbiAgICAgICAgICAudGhlbihzZWxmLm9uUnVsZXNSZWFkeS5iaW5kKHNlbGYpKTtcblxuICAgICAgICAvLyBFeGVjdXRlIGluaXRpYWxpemF0aW9uIGFuZCBnZXQgdGVzdCBkZWZpbml0aW9ucyAoaW4gY2xpZW50IGNvZGUpLlxuICAgICAgICBzZWxmLmZuU3VpdGUoc2VsZi5nZXRJbnRlcmZhY2UoKSk7XG5cbiAgICAgICAgcmV0dXJuIHNlbGYucmVhZHk7XG4gICAgICB9KTtcblxuICAgICAgdGVzdChcIkluaXRpYWxpemF0aW9uLlwiLCBmdW5jdGlvbigpIHtcbiAgICAgICAgLy8gcGFzc1xuICAgICAgfSk7XG5cbiAgICAgIHRlc3QoXCJSdWxlcyB0ZXN0LlwiLCBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIHNlbGYucnVuVGVzdHMoKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9XG5cbiAgZ2V0SW50ZXJmYWNlKCkge1xuICAgIHZhciB0ZXN0ID0gdGhpcy50ZXN0LmJpbmQodGhpcyk7XG4gICAgdGVzdC5ydWxlcyA9IHRoaXMucnVsZXMuYmluZCh0aGlzKTtcbiAgICB0ZXN0LmRhdGFiYXNlID0gdGhpcy5kYXRhYmFzZS5iaW5kKHRoaXMpO1xuICAgIHRlc3QudWlkID0gdGhpcy51aWQuYmluZCh0aGlzKTtcbiAgICB0ZXN0LlRJTUVTVEFNUCA9IHJlc3QuVElNRVNUQU1QO1xuICAgIHJldHVybiB0ZXN0O1xuICB9XG5cbiAgLy8gQ2FsbGVkIHdoZW4gcnVsZXMgYXJlIGdlbmVyYXRlZCBhbmQgdGVzdCBkYXRhYmFzZSBpcyBrbm93bi5cbiAgb25SdWxlc1JlYWR5KHByZXJlcTogW09iamVjdCwgYW55XSkge1xuICAgIGxldCBydWxlc0pTT04gPSBwcmVyZXFbMF07XG4gICAgcmV0dXJuIHRoaXMuYWRtaW5DbGllbnQucHV0KHJlc3QuUlVMRVNfTE9DQVRJT04sIHJ1bGVzSlNPTik7XG4gIH1cblxuICBydW5UZXN0cygpIHtcbiAgICB2YXIgcCA9IFByb21pc2UucmVzb2x2ZSgpO1xuXG4gICAgZnVuY3Rpb24gbmV4dChwcmV2OiBQcm9taXNlPGFueT4sIHRlc3Q6IFJ1bGVzVGVzdCk6IFByb21pc2U8YW55PiB7XG4gICAgICByZXR1cm4gcHJldi50aGVuKGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gdGVzdC5ydW4oKTtcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy50ZXN0cy5sZW5ndGg7IGkrKykge1xuICAgICAgcCA9IG5leHQocCwgdGhpcy50ZXN0c1tpXSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHA7XG4gIH1cblxuICB0ZXN0KHRlc3ROYW1lOiBzdHJpbmcsIGZuVGVzdDogKHJ1bGVzOiBSdWxlc1Rlc3QpID0+IHZvaWQpOiB2b2lkIHtcbiAgICB0aGlzLnRlc3RzLnB1c2gobmV3IFJ1bGVzVGVzdCh0ZXN0TmFtZSwgdGhpcywgZm5UZXN0KSk7XG4gIH1cblxuICBydWxlcyhydWxlc1BhdGg6IHN0cmluZyk6IHZvaWQge1xuICAgIGlmICh0aGlzLnJ1bGVzUGF0aCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFwiT25seSBleHBlY3QgYSBzaW5nbGUgY2FsbCB0byB0aGUgdGVzdC5ydWxlcyBmdW5jdGlvbi5cIik7XG4gICAgfVxuICAgIHRoaXMucnVsZXNQYXRoID0gcnVsZXNQYXRoO1xuICAgIHRoaXMucnVsZXNQYXRoUmVzb2x2ZSh1dGlsLmVuc3VyZUV4dGVuc2lvbihydWxlc1BhdGgsIGJvbHQuRklMRV9FWFRFTlNJT04pKTtcbiAgfVxuXG4gIGRhdGFiYXNlKGFwcE5hbWU6IHN0cmluZywgYXBwU2VjcmV0OiBzdHJpbmcpIHtcbiAgICBpZiAodGhpcy5hZG1pbkNsaWVudCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFwiT25seSBleHBlY3QgYSBzaW5nbGUgY2FsbCB0byB0aGUgdGVzdC5kYXRhYmFzZSBmdW5jdGlvbi5cIik7XG4gICAgfVxuICAgIHRoaXMuYXBwTmFtZSA9IGFwcE5hbWU7XG4gICAgdGhpcy5hcHBTZWNyZXQgPSBhcHBTZWNyZXQ7XG4gICAgdGhpcy5hZG1pbkNsaWVudCA9IHRoaXMuZW5zdXJlVXNlcignYWRtaW4nKTtcbiAgICB0aGlzLmRhdGFiYXNlUmVhZHkoKTtcbiAgfVxuXG4gIHVpZCh1c2VybmFtZTogc3RyaW5nKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdGhpcy5lbnN1cmVVc2VyKHVzZXJuYW1lKS51aWQ7XG4gIH1cblxuICBlbnN1cmVVc2VyKHVzZXJuYW1lOiBzdHJpbmcpOiByZXN0LkNsaWVudCB7XG4gICAgaWYgKCEodXNlcm5hbWUgaW4gdGhpcy51c2VycykpIHtcbiAgICAgIGlmICh1c2VybmFtZSA9PT0gJ2Fub24nKSB7XG4gICAgICAgIHRoaXMudXNlcnNbdXNlcm5hbWVdID0gbmV3IHJlc3QuQ2xpZW50KHRoaXMuYXBwTmFtZSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBsZXQgdG9rZW5JbmZvID0gcmVzdC5nZW5lcmF0ZVVpZEF1dGhUb2tlbihcbiAgICAgICAgICB0aGlzLmFwcFNlY3JldCxcbiAgICAgICAgICB7IGRlYnVnOiB0cnVlLFxuICAgICAgICAgICAgYWRtaW46IHVzZXJuYW1lID09PSAnYWRtaW4nIH0pO1xuICAgICAgICB0aGlzLnVzZXJzW3VzZXJuYW1lXSA9IG5ldyByZXN0LkNsaWVudCh0aGlzLmFwcE5hbWUsIHRva2VuSW5mby50b2tlbiwgdG9rZW5JbmZvLnVpZCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMudXNlcnNbdXNlcm5hbWVdO1xuICB9XG59XG5cbmludGVyZmFjZSBTdGVwIHtcbiAgbGFiZWw6IHN0cmluZztcbiAgZm46ICgpID0+IFByb21pc2U8YW55Pjtcbn1cblxuZXhwb3J0IGNsYXNzIFJ1bGVzVGVzdCB7XG4gIHByaXZhdGUgbGFzdEVycm9yOiBzdHJpbmc7XG4gIHByaXZhdGUgc3RlcHM6IFN0ZXBbXSA9IFtdO1xuICBwcml2YXRlIGZhaWxlZCA9IGZhbHNlO1xuICBwcml2YXRlIHBhdGg6IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgcHJpdmF0ZSBjbGllbnQ6IHJlc3QuQ2xpZW50O1xuICBwcml2YXRlIHN0YXR1czogYm9vbGVhbiB8IHVuZGVmaW5lZDtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHRlc3ROYW1lOiBzdHJpbmcsXG4gICAgICAgICAgICAgIHByaXZhdGUgc3VpdGU6IFJ1bGVzU3VpdGUsXG4gICAgICAgICAgICAgIHByaXZhdGUgZm5UZXN0OiAocnVsZXM6IFJ1bGVzVGVzdCkgPT4gdm9pZCkge31cblxuICBydW4oKSB7XG4gICAgdGhpcy5kZWJ1ZyhmYWxzZSk7XG4gICAgdGhpcy5hcygnYWRtaW4nKTtcbiAgICB0aGlzLmF0KCcvJyk7XG4gICAgdGhpcy53cml0ZShudWxsKTtcbiAgICB0aGlzLnN1Y2NlZWRzKFwiaW5pdGlhbGl6YXRpb25cIik7XG5cbiAgICB0aGlzLmF0KHVuZGVmaW5lZCk7XG4gICAgdGhpcy5hcygnYW5vbicpO1xuXG4gICAgdGhpcy5mblRlc3QodGhpcyk7XG5cbiAgICB0aGlzLmRlYnVnKGZhbHNlKTtcblxuICAgIHJldHVybiB0aGlzLmV4ZWN1dGVRdWV1ZSgpXG4gICAgICAudGhlbigoKSA9PiB7XG4gICAgICAgIHRoaXMubG9nKFwiRmluaXNoZWRcIik7XG4gICAgICB9KVxuICAgICAgLmNhdGNoKChlcnJvcikgPT4ge1xuICAgICAgICB0aGlzLmxvZyhcIkZhaWxlZDogXCIgKyBlcnJvcik7XG4gICAgICAgIHRocm93IGVycm9yO1xuICAgICAgfSk7XG4gIH1cblxuICAvLyBRdWV1ZSBhIGZ1bmN0aW9uIHRvIGJlIGNhbGxlZCBpbiBzZXF1ZW5jZSBhZnRlciBwcmV2aW91cyBzdGVwXG4gIC8vIGluIHRlc3QgaXMgKHN1Y2Nlc3NmdWxseSkgY29tcGxldGVkLlxuICBxdWV1ZShvcDogc3RyaW5nLCBhcmdzOiBBcnJheUxpa2U8YW55PiwgZm46ICgpID0+IFByb21pc2U8YW55Pikge1xuICAgIGlmICh0aGlzLmZhaWxlZCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBsZXQgYXJnc1QgPSB1dGlsLmNvcHlBcnJheShhcmdzKS5tYXAoZnVuY3Rpb24oeCkge1xuICAgICAgcmV0dXJuIHV0aWwucHJldHR5SlNPTih4KTtcbiAgICB9KTtcbiAgICB2YXIgbGFiZWwgPSBvcCArICcoJyArIGFyZ3NULmpvaW4oJywgJykgKyAnKSc7XG4gICAgdGhpcy5zdGVwcy5wdXNoKHtsYWJlbDogbGFiZWwsIGZuOiBmbn0pO1xuICB9XG5cbiAgZXhlY3V0ZVF1ZXVlKCkge1xuICAgIHZhciBzZWxmID0gdGhpcztcblxuICAgIHRoaXMubG9nKFwiRXhlY3V0aW5nIChcIiArIHRoaXMuc3RlcHMubGVuZ3RoICsgXCIgc3RlcHMpXCIpO1xuICAgIHZhciBwID0gUHJvbWlzZS5yZXNvbHZlKHRydWUpO1xuXG4gICAgZnVuY3Rpb24gbmV4dChwcmV2OiBQcm9taXNlPGFueT4sIHN0ZXA6IFN0ZXApOiBQcm9taXNlPGFueT4ge1xuICAgICAgcmV0dXJuIHByZXYudGhlbihmdW5jdGlvbigpIHtcbiAgICAgICAgc2VsZi5sb2coc3RlcC5sYWJlbCk7XG4gICAgICAgIHJldHVybiBzdGVwLmZuKCk7XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMuc3RlcHMubGVuZ3RoOyBpKyspIHtcbiAgICAgIHAgPSBuZXh0KHAsIHRoaXMuc3RlcHNbaV0pO1xuICAgIH1cblxuICAgIHJldHVybiBwO1xuICB9XG5cbiAgZGVidWcoZGVidWc/OiBib29sZWFuKTogUnVsZXNUZXN0IHtcbiAgICB0aGlzLnN1aXRlLnNldERlYnVnKGRlYnVnKTtcbiAgICB0aGlzLnF1ZXVlKCdkZWJ1ZycsIGFyZ3VtZW50cywgKCkgPT4ge1xuICAgICAgdGhpcy5zdWl0ZS5zZXREZWJ1ZyhkZWJ1Zyk7XG4gICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCk7XG4gICAgfSk7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBhcyh1c2VybmFtZTogc3RyaW5nKTogUnVsZXNUZXN0IHtcbiAgICB2YXIgY2xpZW50ID0gdGhpcy5zdWl0ZS5lbnN1cmVVc2VyKHVzZXJuYW1lKTtcbiAgICB0aGlzLnF1ZXVlKCdhcycsIGFyZ3VtZW50cywgKCkgPT4ge1xuICAgICAgY2xpZW50LnNldERlYnVnKHRoaXMuc3VpdGUuZGVidWcpO1xuICAgICAgdGhpcy5jbGllbnQgPSBjbGllbnQ7XG4gICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCk7XG4gICAgfSk7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBhdChvcFBhdGg6IHN0cmluZyB8IHVuZGVmaW5lZCk6IFJ1bGVzVGVzdCB7XG4gICAgdGhpcy5xdWV1ZSgnYXQnLCBhcmd1bWVudHMsICgpID0+IHtcbiAgICAgIHRoaXMucGF0aCA9IG9wUGF0aDtcbiAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoKTtcbiAgICB9KTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIHdyaXRlKG9iajogYW55KTogUnVsZXNUZXN0IHtcbiAgICB0aGlzLnF1ZXVlKCd3cml0ZScsIGFyZ3VtZW50cywgKCkgPT4ge1xuICAgICAgaWYgKHRoaXMucGF0aCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHJldHVybiBQcm9taXNlLnJlamVjdChuZXcgRXJyb3IoXCJVc2UgYXQoKSBmdW5jdGlvbiB0byBzZXQgcGF0aCB0byB3cml0ZS5cIikpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHRoaXMuY2xpZW50LnB1dCh0aGlzLnBhdGgsIG9iailcbiAgICAgICAgLnRoZW4oKCkgPT4ge1xuICAgICAgICAgIHRoaXMuc3RhdHVzID0gdHJ1ZTtcbiAgICAgICAgfSlcbiAgICAgICAgLmNhdGNoKChlcnJvcikgPT4ge1xuICAgICAgICAgIHRoaXMuc3RhdHVzID0gZmFsc2U7XG4gICAgICAgICAgdGhpcy5sYXN0RXJyb3IgPSBlcnJvcjtcbiAgICAgICAgfSk7XG4gICAgfSk7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBwdXNoKG9iajogYW55KTogUnVsZXNUZXN0IHtcbiAgICB0aGlzLnF1ZXVlKCd3cml0ZScsIGFyZ3VtZW50cywgKCkgPT4ge1xuICAgICAgaWYgKHRoaXMucGF0aCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHJldHVybiBQcm9taXNlLnJlamVjdChuZXcgRXJyb3IoXCJVc2UgYXQoKSBmdW5jdGlvbiB0byBzZXQgcGF0aCB0byBwdXNoLlwiKSk7XG4gICAgICB9XG4gICAgICBsZXQgcGF0aCA9IHRoaXMucGF0aDtcbiAgICAgIGlmIChwYXRoLnNsaWNlKC0xKVswXSAhPT0gJy8nKSB7XG4gICAgICAgIHBhdGggKz0gJy8nO1xuICAgICAgfVxuICAgICAgcGF0aCArPSByZXN0LmdlbmVyYXRlUHVzaElEKCk7XG4gICAgICByZXR1cm4gdGhpcy5jbGllbnQucHV0KHBhdGgsIG9iailcbiAgICAgICAgLnRoZW4oKCkgPT4ge1xuICAgICAgICAgIHRoaXMuc3RhdHVzID0gdHJ1ZTtcbiAgICAgICAgfSlcbiAgICAgICAgLmNhdGNoKChlcnJvcikgPT4ge1xuICAgICAgICAgIHRoaXMuc3RhdHVzID0gZmFsc2U7XG4gICAgICAgICAgdGhpcy5sYXN0RXJyb3IgPSBlcnJvcjtcbiAgICAgICAgfSk7XG4gICAgfSk7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICByZWFkKCk6IFJ1bGVzVGVzdCB7XG4gICAgdGhpcy5xdWV1ZSgncmVhZCcsIGFyZ3VtZW50cywgKCkgPT4ge1xuICAgICAgaWYgKHRoaXMucGF0aCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHJldHVybiBQcm9taXNlLnJlamVjdChuZXcgRXJyb3IoXCJVc2UgYXQoKSBmdW5jdGlvbiB0byBzZXQgcGF0aCB0byByZWFkLlwiKSk7XG4gICAgICB9XG4gICAgICByZXR1cm4gdGhpcy5jbGllbnQuZ2V0KHRoaXMucGF0aClcbiAgICAgICAgLnRoZW4oKCkgPT4ge1xuICAgICAgICAgIHRoaXMuc3RhdHVzID0gdHJ1ZTtcbiAgICAgICAgfSlcbiAgICAgICAgLmNhdGNoKChlcnJvcikgPT4ge1xuICAgICAgICAgIHRoaXMuc3RhdHVzID0gZmFsc2U7XG4gICAgICAgICAgdGhpcy5sYXN0RXJyb3IgPSBlcnJvcjtcbiAgICAgICAgfSk7XG4gICAgfSk7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBzdWNjZWVkcyhtZXNzYWdlOiBzdHJpbmcpOiBSdWxlc1Rlc3Qge1xuICAgIHRoaXMucXVldWUoJ3N1Y2NlZWRzJywgYXJndW1lbnRzLCAoKSA9PiB7XG4gICAgICBhc3NlcnQodGhpcy5zdGF0dXMgPT09IHRydWUsXG4gICAgICAgICAgICAgdGhpcy5tZXNzYWdlRm9ybWF0KG1lc3NhZ2UgKyBcIiAoc2hvdWxkIGhhdmUgc3VjY2VlZClcXG5cIiArIHRoaXMubGFzdEVycm9yKSk7XG4gICAgICB0aGlzLmdvb2QobWVzc2FnZSk7XG4gICAgICB0aGlzLnN0YXR1cyA9IHVuZGVmaW5lZDtcbiAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoKTtcbiAgICB9KTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIGZhaWxzKG1lc3NhZ2U6IHN0cmluZyk6IFJ1bGVzVGVzdCB7XG4gICAgdGhpcy5xdWV1ZSgnZmFpbHMnLCBhcmd1bWVudHMsICgpID0+IHtcbiAgICAgIGFzc2VydCh0aGlzLnN0YXR1cyA9PT0gZmFsc2UsXG4gICAgICAgICAgICAgdGhpcy5tZXNzYWdlRm9ybWF0KG1lc3NhZ2UgKyBcIiAoc2hvdWxkIGhhdmUgZmFpbGVkKVwiKSk7XG4gICAgICB0aGlzLmdvb2QobWVzc2FnZSk7XG4gICAgICB0aGlzLnN0YXR1cyA9IHVuZGVmaW5lZDtcbiAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoKTtcbiAgICB9KTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIHByaXZhdGUgZ29vZChtZXNzYWdlOiBzdHJpbmcpOiB2b2lkIHtcbiAgICB0aGlzLmxvZyhtZXNzYWdlICsgXCIgKENvcnJlY3QpXCIpO1xuICB9XG5cbiAgcHJpdmF0ZSBsb2cobWVzc2FnZTogc3RyaW5nKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuc3VpdGUuZGVidWcpIHtcbiAgICAgIGNvbnNvbGUubG9nKHRoaXMubWVzc2FnZUZvcm1hdChtZXNzYWdlKSk7XG4gICAgfVxuICB9XG5cbiAgbWVzc2FnZUZvcm1hdChtZXNzYWdlOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLnN1aXRlLnN1aXRlTmFtZSArIFwiLlwiICsgdGhpcy50ZXN0TmFtZSArIFwiIFwiICsgbWVzc2FnZTtcbiAgfVxufVxuIl19
//# sourceMappingURL=data:application/json;charset=utf8;base64,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QUFaLFVBQWEsT0FBZTtRQUMxQixJQUFJLENBQUMsR0FBRyxDQUFDLE9BQU8sR0FBRyxZQUFZLENBQUMsQ0FBQztJQUNuQyxDQUFDO0lBRU8sdUJBQUcsR0FBWCxVQUFZLE9BQWU7UUFDekIsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssRUFBRTtZQUNwQixPQUFPLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQztTQUMxQztJQUNILENBQUM7SUFFRCxpQ0FBYSxHQUFiLFVBQWMsT0FBZTtRQUMzQixPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsU0FBUyxHQUFHLEdBQUcsR0FBRyxJQUFJLENBQUMsUUFBUSxHQUFHLEdBQUcsR0FBRyxPQUFPLENBQUM7SUFDcEUsQ0FBQztJQUNILGdCQUFDO0FBQUQsQ0EzTEEsQUEyTEMsSUFBQTtBQTNMWSw4QkFBUyIsImZpbGUiOiJzaW11bGF0b3IuanMiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogRmlyZWJhc2UgUnVsZXMgdGVzdCBzaW11bGF0b3IuXG4gKlxuICogQ29weXJpZ2h0IDIwMTUgR29vZ2xlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cbmltcG9ydCB7YXNzZXJ0fSBmcm9tICdjaGFpJztcbmltcG9ydCAqIGFzIHJlc3QgZnJvbSAnLi9maXJlYmFzZS1yZXN0JztcbmltcG9ydCAqIGFzIHV0aWwgZnJvbSAnLi91dGlsJztcbmltcG9ydCAqIGFzIGZpbGVJTyBmcm9tICcuL2ZpbGUtaW8nO1xuaW1wb3J0ICogYXMgYm9sdCBmcm9tICcuL2JvbHQnO1xuXG5sZXQgZ2VuZXJhdGUgPSB1dGlsLmxpZnQoYm9sdC5nZW5lcmF0ZSk7XG5sZXQgcmVhZEZpbGUgPSB1dGlsLmxpZnRBcmdzKGZpbGVJTy5yZWFkRmlsZSk7XG5cbnZhciBNQVhfVEVTVF9NUyA9IDYwMDAwO1xuXG5leHBvcnQgdHlwZSBTdWl0ZUZ1bmN0aW9uID0gKGZuOiBUZXN0RnVuY3Rpb24pID0+IHZvaWQ7XG5cbi8vIEludGVyZmFjZSBmb3IgJ3Rlc3QnIGZ1bmN0aW9uIHBhc3NlZCBiYWNrIHRvIHJ1bGVzU3VpdGUgY2FsbGJhY2suXG4vLyB0ZXN0IGlzIGEgZnVuY3Rpb24gYXMgd2VsbCBhcyBhIG5hbWVzcGFjZSBmb3Igc29tZSBzdGF0aWMgbWV0aG9kc1xuLy8gYW5kIGNvbnN0YW50cy5cbmV4cG9ydCBpbnRlcmZhY2UgVGVzdEZ1bmN0aW9uIHtcbiAgKG5hbWU6IHN0cmluZywgZm5UZXN0OiAocnVsZXM6IFJ1bGVzVGVzdCkgPT4gdm9pZCk6IHZvaWQ7XG4gIHJ1bGVzOiAocGF0aDogc3RyaW5nKSA9PiB2b2lkO1xuICBkYXRhYmFzZTogKGFwcE5hbWU6IHN0cmluZywgc2VjcmV0OiBzdHJpbmcpID0+IHZvaWQ7XG4gIHVpZDogKHVzZXJuYW1lOiBzdHJpbmcpID0+IHN0cmluZztcbiAgVElNRVNUQU1QOiBPYmplY3Q7XG59O1xuXG5leHBvcnQgZnVuY3Rpb24gcnVsZXNTdWl0ZShzdWl0ZU5hbWU6IHN0cmluZywgZm5TdWl0ZTogU3VpdGVGdW5jdGlvbikge1xuICBuZXcgUnVsZXNTdWl0ZShzdWl0ZU5hbWUsIGZuU3VpdGUpLnJ1bigpO1xufVxuXG5leHBvcnQgY2xhc3MgUnVsZXNTdWl0ZSB7XG4gIHB1YmxpYyAgZGVidWcgPSBmYWxzZTtcbiAgcHJpdmF0ZSB1c2VycyA9IDx7W25hbWU6IHN0cmluZ106IHJlc3QuQ2xpZW50fT57fTtcbiAgcHJpdmF0ZSB0ZXN0cyA9IDxSdWxlc1Rlc3RbXT5bXTtcbiAgcHJpdmF0ZSBydWxlc1BhdGg6IHN0cmluZztcbiAgcHJpdmF0ZSBydWxlc1BhdGhSZXNvbHZlOiAocGF0aDogc3RyaW5nKSA9PiB2b2lkO1xuICBwcml2YXRlIGRhdGFiYXNlUmVhZHk6ICgpID0+IHZvaWQ7XG4gIHByaXZhdGUgcmVhZHk6IFByb21pc2U8YW55PjtcbiAgcHJpdmF0ZSBhZG1pbkNsaWVudDogcmVzdC5DbGllbnQ7XG4gIHByaXZhdGUgYXBwTmFtZTogc3RyaW5nO1xuICBwcml2YXRlIGFwcFNlY3JldDogc3RyaW5nO1xuXG4gIGNvbnN0cnVjdG9yKHB1YmxpYyBzdWl0ZU5hbWU6IHN0cmluZyxcbiAgICAgICAgICAgICAgcHJpdmF0ZSBmblN1aXRlOiBTdWl0ZUZ1bmN0aW9uKSB7fVxuXG4gIHNldERlYnVnKGRlYnVnID0gdHJ1ZSkge1xuICAgIHRoaXMuZGVidWcgPSBkZWJ1ZztcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIHJ1bigpIHtcbiAgICB2YXIgc2VsZiA9IHRoaXM7XG5cbiAgICAvLyBSdW4gTW9jaGEgVGVzdCBTdWl0ZSAtIHNlcmlhbGl6ZSB3aXRoIGFueSBvdGhlciBtb2NoYSB0ZXN0IHN1aXRlcy5cbiAgICBzdWl0ZShcIkZpcmViYXNlIFJ1bGVzIFNpbXVsYXRvcjogXCIgKyBzZWxmLnN1aXRlTmFtZSwgZnVuY3Rpb24oKSB7XG4gICAgICB0aGlzLnRpbWVvdXQoTUFYX1RFU1RfTVMpO1xuICAgICAgc3VpdGVTZXR1cChmdW5jdGlvbigpIHtcbiAgICAgICAgdmFyIHJ1bGVzUGF0aCA9IG5ldyBQcm9taXNlKGZ1bmN0aW9uKHJlc29sdmUpIHtcbiAgICAgICAgICBzZWxmLnJ1bGVzUGF0aFJlc29sdmUgPSByZXNvbHZlO1xuICAgICAgICB9KTtcblxuICAgICAgICB2YXIgZGF0YWJhc2UgPSBuZXcgUHJvbWlzZShmdW5jdGlvbihyZXNvbHZlKSB7XG4gICAgICAgICAgc2VsZi5kYXRhYmFzZVJlYWR5ID0gcmVzb2x2ZTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgdmFyIHJ1bGVzSlNPTiA9IGdlbmVyYXRlKHV0aWwuZ2V0UHJvcChyZWFkRmlsZShydWxlc1BhdGgpLCAnY29udGVudCcpKTtcblxuICAgICAgICBzZWxmLnJlYWR5ID0gUHJvbWlzZS5hbGwoW3J1bGVzSlNPTiwgZGF0YWJhc2VdKVxuICAgICAgICAgIC50aGVuKHNlbGYub25SdWxlc1JlYWR5LmJpbmQoc2VsZikpO1xuXG4gICAgICAgIC8vIEV4ZWN1dGUgaW5pdGlhbGl6YXRpb24gYW5kIGdldCB0ZXN0IGRlZmluaXRpb25zIChpbiBjbGllbnQgY29kZSkuXG4gICAgICAgIHNlbGYuZm5TdWl0ZShzZWxmLmdldEludGVyZmFjZSgpKTtcblxuICAgICAgICByZXR1cm4gc2VsZi5yZWFkeTtcbiAgICAgIH0pO1xuXG4gICAgICB0ZXN0KFwiSW5pdGlhbGl6YXRpb24uXCIsIGZ1bmN0aW9uKCkge1xuICAgICAgICAvLyBwYXNzXG4gICAgICB9KTtcblxuICAgICAgdGVzdChcIlJ1bGVzIHRlc3QuXCIsIGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gc2VsZi5ydW5UZXN0cygpO1xuICAgICAgfSk7XG4gICAgfSk7XG4gIH1cblxuICBnZXRJbnRlcmZhY2UoKSB7XG4gICAgdmFyIHRlc3QgPSB0aGlzLnRlc3QuYmluZCh0aGlzKTtcbiAgICB0ZXN0LnJ1bGVzID0gdGhpcy5ydWxlcy5iaW5kKHRoaXMpO1xuICAgIHRlc3QuZGF0YWJhc2UgPSB0aGlzLmRhdGFiYXNlLmJpbmQodGhpcyk7XG4gICAgdGVzdC51aWQgPSB0aGlzLnVpZC5iaW5kKHRoaXMpO1xuICAgIHRlc3QuVElNRVNUQU1QID0gcmVzdC5USU1FU1RBTVA7XG4gICAgcmV0dXJuIHRlc3Q7XG4gIH1cblxuICAvLyBDYWxsZWQgd2hlbiBydWxlcyBhcmUgZ2VuZXJhdGVkIGFuZCB0ZXN0IGRhdGFiYXNlIGlzIGtub3duLlxuICBvblJ1bGVzUmVhZHkocHJlcmVxOiBbT2JqZWN0LCBhbnldKSB7XG4gICAgbGV0IHJ1bGVzSlNPTiA9IHByZXJlcVswXTtcbiAgICByZXR1cm4gdGhpcy5hZG1pbkNsaWVudC5wdXQocmVzdC5SVUxFU19MT0NBVElPTiwgcnVsZXNKU09OKTtcbiAgfVxuXG4gIHJ1blRlc3RzKCkge1xuICAgIHZhciBwID0gUHJvbWlzZS5yZXNvbHZlKCk7XG5cbiAgICBmdW5jdGlvbiBuZXh0KHByZXY6IFByb21pc2U8YW55PiwgdGVzdDogUnVsZXNUZXN0KTogUHJvbWlzZTxhbnk+IHtcbiAgICAgIHJldHVybiBwcmV2LnRoZW4oZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiB0ZXN0LnJ1bigpO1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLnRlc3RzLmxlbmd0aDsgaSsrKSB7XG4gICAgICBwID0gbmV4dChwLCB0aGlzLnRlc3RzW2ldKTtcbiAgICB9XG5cbiAgICByZXR1cm4gcDtcbiAgfVxuXG4gIHRlc3QodGVzdE5hbWU6IHN0cmluZywgZm5UZXN0OiAocnVsZXM6IFJ1bGVzVGVzdCkgPT4gdm9pZCk6IHZvaWQge1xuICAgIHRoaXMudGVzdHMucHVzaChuZXcgUnVsZXNUZXN0KHRlc3ROYW1lLCB0aGlzLCBmblRlc3QpKTtcbiAgfVxuXG4gIHJ1bGVzKHJ1bGVzUGF0aDogc3RyaW5nKTogdm9pZCB7XG4gICAgaWYgKHRoaXMucnVsZXNQYXRoKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXCJPbmx5IGV4cGVjdCBhIHNpbmdsZSBjYWxsIHRvIHRoZSB0ZXN0LnJ1bGVzIGZ1bmN0aW9uLlwiKTtcbiAgICB9XG4gICAgdGhpcy5ydWxlc1BhdGggPSBydWxlc1BhdGg7XG4gICAgdGhpcy5ydWxlc1BhdGhSZXNvbHZlKHV0aWwuZW5zdXJlRXh0ZW5zaW9uKHJ1bGVzUGF0aCwgYm9sdC5GSUxFX0VYVEVOU0lPTikpO1xuICB9XG5cbiAgZGF0YWJhc2UoYXBwTmFtZTogc3RyaW5nLCBhcHBTZWNyZXQ6IHN0cmluZykge1xuICAgIGlmICh0aGlzLmFkbWluQ2xpZW50KSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXCJPbmx5IGV4cGVjdCBhIHNpbmdsZSBjYWxsIHRvIHRoZSB0ZXN0LmRhdGFiYXNlIGZ1bmN0aW9uLlwiKTtcbiAgICB9XG4gICAgdGhpcy5hcHBOYW1lID0gYXBwTmFtZTtcbiAgICB0aGlzLmFwcFNlY3JldCA9IGFwcFNlY3JldDtcbiAgICB0aGlzLmFkbWluQ2xpZW50ID0gdGhpcy5lbnN1cmVVc2VyKCdhZG1pbicpO1xuICAgIHRoaXMuZGF0YWJhc2VSZWFkeSgpO1xuICB9XG5cbiAgdWlkKHVzZXJuYW1lOiBzdHJpbmcpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLmVuc3VyZVVzZXIodXNlcm5hbWUpLnVpZDtcbiAgfVxuXG4gIGVuc3VyZVVzZXIodXNlcm5hbWU6IHN0cmluZyk6IHJlc3QuQ2xpZW50IHtcbiAgICBpZiAoISh1c2VybmFtZSBpbiB0aGlzLnVzZXJzKSkge1xuICAgICAgaWYgKHVzZXJuYW1lID09PSAnYW5vbicpIHtcbiAgICAgICAgdGhpcy51c2Vyc1t1c2VybmFtZV0gPSBuZXcgcmVzdC5DbGllbnQodGhpcy5hcHBOYW1lKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGxldCB0b2tlbkluZm8gPSByZXN0LmdlbmVyYXRlVWlkQXV0aFRva2VuKFxuICAgICAgICAgIHRoaXMuYXBwU2VjcmV0LFxuICAgICAgICAgIHsgZGVidWc6IHRydWUsXG4gICAgICAgICAgICBhZG1pbjogdXNlcm5hbWUgPT09ICdhZG1pbicgfSk7XG4gICAgICAgIHRoaXMudXNlcnNbdXNlcm5hbWVdID0gbmV3IHJlc3QuQ2xpZW50KHRoaXMuYXBwTmFtZSwgdG9rZW5JbmZvLnRva2VuLCB0b2tlbkluZm8udWlkKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy51c2Vyc1t1c2VybmFtZV07XG4gIH1cbn1cblxuaW50ZXJmYWNlIFN0ZXAge1xuICBsYWJlbDogc3RyaW5nO1xuICBmbjogKCkgPT4gUHJvbWlzZTxhbnk+O1xufVxuXG5leHBvcnQgY2xhc3MgUnVsZXNUZXN0IHtcbiAgcHJpdmF0ZSBsYXN0RXJyb3I6IHN0cmluZztcbiAgcHJpdmF0ZSBzdGVwczogU3RlcFtdID0gW107XG4gIHByaXZhdGUgZmFpbGVkID0gZmFsc2U7XG4gIHByaXZhdGUgcGF0aDogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICBwcml2YXRlIGNsaWVudDogcmVzdC5DbGllbnQ7XG4gIHByaXZhdGUgc3RhdHVzOiBib29sZWFuIHwgdW5kZWZpbmVkO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgdGVzdE5hbWU6IHN0cmluZyxcbiAgICAgICAgICAgICAgcHJpdmF0ZSBzdWl0ZTogUnVsZXNTdWl0ZSxcbiAgICAgICAgICAgICAgcHJpdmF0ZSBmblRlc3Q6IChydWxlczogUnVsZXNUZXN0KSA9PiB2b2lkKSB7fVxuXG4gIHJ1bigpIHtcbiAgICB0aGlzLmRlYnVnKGZhbHNlKTtcbiAgICB0aGlzLmFzKCdhZG1pbicpO1xuICAgIHRoaXMuYXQoJy8nKTtcbiAgICB0aGlzLndyaXRlKG51bGwpO1xuICAgIHRoaXMuc3VjY2VlZHMoXCJpbml0aWFsaXphdGlvblwiKTtcblxuICAgIHRoaXMuYXQodW5kZWZpbmVkKTtcbiAgICB0aGlzLmFzKCdhbm9uJyk7XG5cbiAgICB0aGlzLmZuVGVzdCh0aGlzKTtcblxuICAgIHRoaXMuZGVidWcoZmFsc2UpO1xuXG4gICAgcmV0dXJuIHRoaXMuZXhlY3V0ZVF1ZXVlKClcbiAgICAgIC50aGVuKCgpID0+IHtcbiAgICAgICAgdGhpcy5sb2coXCJGaW5pc2hlZFwiKTtcbiAgICAgIH0pXG4gICAgICAuY2F0Y2goKGVycm9yKSA9PiB7XG4gICAgICAgIHRoaXMubG9nKFwiRmFpbGVkOiBcIiArIGVycm9yKTtcbiAgICAgICAgdGhyb3cgZXJyb3I7XG4gICAgICB9KTtcbiAgfVxuXG4gIC8vIFF1ZXVlIGEgZnVuY3Rpb24gdG8gYmUgY2FsbGVkIGluIHNlcXVlbmNlIGFmdGVyIHByZXZpb3VzIHN0ZXBcbiAgLy8gaW4gdGVzdCBpcyAoc3VjY2Vzc2Z1bGx5KSBjb21wbGV0ZWQuXG4gIHF1ZXVlKG9wOiBzdHJpbmcsIGFyZ3M6IEFycmF5TGlrZTxhbnk+LCBmbjogKCkgPT4gUHJvbWlzZTxhbnk+KSB7XG4gICAgaWYgKHRoaXMuZmFpbGVkKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGxldCBhcmdzVCA9IHV0aWwuY29weUFycmF5KGFyZ3MpLm1hcChmdW5jdGlvbih4KSB7XG4gICAgICByZXR1cm4gdXRpbC5wcmV0dHlKU09OKHgpO1xuICAgIH0pO1xuICAgIHZhciBsYWJlbCA9IG9wICsgJygnICsgYXJnc1Quam9pbignLCAnKSArICcpJztcbiAgICB0aGlzLnN0ZXBzLnB1c2goe2xhYmVsOiBsYWJlbCwgZm46IGZufSk7XG4gIH1cblxuICBleGVjdXRlUXVldWUoKSB7XG4gICAgdmFyIHNlbGYgPSB0aGlzO1xuXG4gICAgdGhpcy5sb2coXCJFeGVjdXRpbmcgKFwiICsgdGhpcy5zdGVwcy5sZW5ndGggKyBcIiBzdGVwcylcIik7XG4gICAgdmFyIHAgPSBQcm9taXNlLnJlc29sdmUodHJ1ZSk7XG5cbiAgICBmdW5jdGlvbiBuZXh0KHByZXY6IFByb21pc2U8YW55Piwgc3RlcDogU3RlcCk6IFByb21pc2U8YW55PiB7XG4gICAgICByZXR1cm4gcHJldi50aGVuKGZ1bmN0aW9uKCkge1xuICAgICAgICBzZWxmLmxvZyhzdGVwLmxhYmVsKTtcbiAgICAgICAgcmV0dXJuIHN0ZXAuZm4oKTtcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5zdGVwcy5sZW5ndGg7IGkrKykge1xuICAgICAgcCA9IG5leHQocCwgdGhpcy5zdGVwc1tpXSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHA7XG4gIH1cblxuICBkZWJ1ZyhkZWJ1Zz86IGJvb2xlYW4pOiBSdWxlc1Rlc3Qge1xuICAgIHRoaXMuc3VpdGUuc2V0RGVidWcoZGVidWcpO1xuICAgIHRoaXMucXVldWUoJ2RlYnVnJywgYXJndW1lbnRzLCAoKSA9PiB7XG4gICAgICB0aGlzLnN1aXRlLnNldERlYnVnKGRlYnVnKTtcbiAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoKTtcbiAgICB9KTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIGFzKHVzZXJuYW1lOiBzdHJpbmcpOiBSdWxlc1Rlc3Qge1xuICAgIHZhciBjbGllbnQgPSB0aGlzLnN1aXRlLmVuc3VyZVVzZXIodXNlcm5hbWUpO1xuICAgIHRoaXMucXVldWUoJ2FzJywgYXJndW1lbnRzLCAoKSA9PiB7XG4gICAgICBjbGllbnQuc2V0RGVidWcodGhpcy5zdWl0ZS5kZWJ1Zyk7XG4gICAgICB0aGlzLmNsaWVudCA9IGNsaWVudDtcbiAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoKTtcbiAgICB9KTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIGF0KG9wUGF0aDogc3RyaW5nIHwgdW5kZWZpbmVkKTogUnVsZXNUZXN0IHtcbiAgICB0aGlzLnF1ZXVlKCdhdCcsIGFyZ3VtZW50cywgKCkgPT4ge1xuICAgICAgdGhpcy5wYXRoID0gb3BQYXRoO1xuICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSgpO1xuICAgIH0pO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgd3JpdGUob2JqOiBhbnkpOiBSdWxlc1Rlc3Qge1xuICAgIHRoaXMucXVldWUoJ3dyaXRlJywgYXJndW1lbnRzLCAoKSA9PiB7XG4gICAgICBpZiAodGhpcy5wYXRoID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgcmV0dXJuIFByb21pc2UucmVqZWN0KG5ldyBFcnJvcihcIlVzZSBhdCgpIGZ1bmN0aW9uIHRvIHNldCBwYXRoIHRvIHdyaXRlLlwiKSk7XG4gICAgICB9XG4gICAgICByZXR1cm4gdGhpcy5jbGllbnQucHV0KHRoaXMucGF0aCwgb2JqKVxuICAgICAgICAudGhlbigoKSA9PiB7XG4gICAgICAgICAgdGhpcy5zdGF0dXMgPSB0cnVlO1xuICAgICAgICB9KVxuICAgICAgICAuY2F0Y2goKGVycm9yKSA9PiB7XG4gICAgICAgICAgdGhpcy5zdGF0dXMgPSBmYWxzZTtcbiAgICAgICAgICB0aGlzLmxhc3RFcnJvciA9IGVycm9yO1xuICAgICAgICB9KTtcbiAgICB9KTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIHB1c2gob2JqOiBhbnkpOiBSdWxlc1Rlc3Qge1xuICAgIHRoaXMucXVldWUoJ3dyaXRlJywgYXJndW1lbnRzLCAoKSA9PiB7XG4gICAgICBpZiAodGhpcy5wYXRoID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgcmV0dXJuIFByb21pc2UucmVqZWN0KG5ldyBFcnJvcihcIlVzZSBhdCgpIGZ1bmN0aW9uIHRvIHNldCBwYXRoIHRvIHB1c2guXCIpKTtcbiAgICAgIH1cbiAgICAgIGxldCBwYXRoID0gdGhpcy5wYXRoO1xuICAgICAgaWYgKHBhdGguc2xpY2UoLTEpWzBdICE9PSAnLycpIHtcbiAgICAgICAgcGF0aCArPSAnLyc7XG4gICAgICB9XG4gICAgICBwYXRoICs9IHJlc3QuZ2VuZXJhdGVQdXNoSUQoKTtcbiAgICAgIHJldHVybiB0aGlzLmNsaWVudC5wdXQocGF0aCwgb2JqKVxuICAgICAgICAudGhlbigoKSA9PiB7XG4gICAgICAgICAgdGhpcy5zdGF0dXMgPSB0cnVlO1xuICAgICAgICB9KVxuICAgICAgICAuY2F0Y2goKGVycm9yKSA9PiB7XG4gICAgICAgICAgdGhpcy5zdGF0dXMgPSBmYWxzZTtcbiAgICAgICAgICB0aGlzLmxhc3RFcnJvciA9IGVycm9yO1xuICAgICAgICB9KTtcbiAgICB9KTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIHJlYWQoKTogUnVsZXNUZXN0IHtcbiAgICB0aGlzLnF1ZXVlKCdyZWFkJywgYXJndW1lbnRzLCAoKSA9PiB7XG4gICAgICBpZiAodGhpcy5wYXRoID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgcmV0dXJuIFByb21pc2UucmVqZWN0KG5ldyBFcnJvcihcIlVzZSBhdCgpIGZ1bmN0aW9uIHRvIHNldCBwYXRoIHRvIHJlYWQuXCIpKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB0aGlzLmNsaWVudC5nZXQodGhpcy5wYXRoKVxuICAgICAgICAudGhlbigoKSA9PiB7XG4gICAgICAgICAgdGhpcy5zdGF0dXMgPSB0cnVlO1xuICAgICAgICB9KVxuICAgICAgICAuY2F0Y2goKGVycm9yKSA9PiB7XG4gICAgICAgICAgdGhpcy5zdGF0dXMgPSBmYWxzZTtcbiAgICAgICAgICB0aGlzLmxhc3RFcnJvciA9IGVycm9yO1xuICAgICAgICB9KTtcbiAgICB9KTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIHN1Y2NlZWRzKG1lc3NhZ2U6IHN0cmluZyk6IFJ1bGVzVGVzdCB7XG4gICAgdGhpcy5xdWV1ZSgnc3VjY2VlZHMnLCBhcmd1bWVudHMsICgpID0+IHtcbiAgICAgIGFzc2VydCh0aGlzLnN0YXR1cyA9PT0gdHJ1ZSxcbiAgICAgICAgICAgICB0aGlzLm1lc3NhZ2VGb3JtYXQobWVzc2FnZSArIFwiIChzaG91bGQgaGF2ZSBzdWNjZWVkKVxcblwiICsgdGhpcy5sYXN0RXJyb3IpKTtcbiAgICAgIHRoaXMuZ29vZChtZXNzYWdlKTtcbiAgICAgIHRoaXMuc3RhdHVzID0gdW5kZWZpbmVkO1xuICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSgpO1xuICAgIH0pO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgZmFpbHMobWVzc2FnZTogc3RyaW5nKTogUnVsZXNUZXN0IHtcbiAgICB0aGlzLnF1ZXVlKCdmYWlscycsIGFyZ3VtZW50cywgKCkgPT4ge1xuICAgICAgYXNzZXJ0KHRoaXMuc3RhdHVzID09PSBmYWxzZSxcbiAgICAgICAgICAgICB0aGlzLm1lc3NhZ2VGb3JtYXQobWVzc2FnZSArIFwiIChzaG91bGQgaGF2ZSBmYWlsZWQpXCIpKTtcbiAgICAgIHRoaXMuZ29vZChtZXNzYWdlKTtcbiAgICAgIHRoaXMuc3RhdHVzID0gdW5kZWZpbmVkO1xuICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSgpO1xuICAgIH0pO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgcHJpdmF0ZSBnb29kKG1lc3NhZ2U6IHN0cmluZyk6IHZvaWQge1xuICAgIHRoaXMubG9nKG1lc3NhZ2UgKyBcIiAoQ29ycmVjdClcIik7XG4gIH1cblxuICBwcml2YXRlIGxvZyhtZXNzYWdlOiBzdHJpbmcpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5zdWl0ZS5kZWJ1Zykge1xuICAgICAgY29uc29sZS5sb2codGhpcy5tZXNzYWdlRm9ybWF0KG1lc3NhZ2UpKTtcbiAgICB9XG4gIH1cblxuICBtZXNzYWdlRm9ybWF0KG1lc3NhZ2U6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuc3VpdGUuc3VpdGVOYW1lICsgXCIuXCIgKyB0aGlzLnRlc3ROYW1lICsgXCIgXCIgKyBtZXNzYWdlO1xuICB9XG59XG4iXX0=
"use strict";
exports.__esModule = true;
/*

@@ -17,7 +18,7 @@ * Copyright 2015 Google Inc. All Rights Reserved.

*/
var chai_1 = require('chai');
var helper = require('./test-helper');
var bolt = require('../bolt');
var chai_1 = require("chai");
var helper = require("./test-helper");
var bolt = require("../bolt");
var parse = bolt.parse;
var ast = require('../ast');
var ast = require("../ast");
suite("Abstract Syntax Tree (AST)", function () {

@@ -213,2 +214,2 @@ suite("Left Associative Operators (AND OR)", function () {

//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInRlc3QvYXN0LXRlc3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBOzs7Ozs7Ozs7Ozs7OztHQWNHO0FBQ0gscUJBQXFCLE1BQU0sQ0FBQyxDQUFBO0FBQzVCLElBQVksTUFBTSxXQUFNLGVBQWUsQ0FBQyxDQUFBO0FBRXhDLElBQVksSUFBSSxXQUFNLFNBQVMsQ0FBQyxDQUFBO0FBQ2hDLElBQUksS0FBSyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUM7QUFDdkIsSUFBWSxHQUFHLFdBQU0sUUFBUSxDQUFDLENBQUE7QUFFOUIsS0FBSyxDQUFDLDRCQUE0QixFQUFFO0lBQ2xDLEtBQUssQ0FBQyxxQ0FBcUMsRUFBRTtRQUMzQyxJQUFJLENBQUMsR0FBRyxHQUFHLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzFCLElBQUksQ0FBQyxHQUFHLEdBQUcsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDM0IsSUFBSSxDQUFDLEdBQUcsR0FBRyxDQUFDLFFBQVEsQ0FBQztRQUNyQixJQUFJLEdBQUcsR0FBRyxHQUFHLENBQUMsR0FBRyxDQUFDO1FBQ2xCLElBQUksRUFBRSxHQUFHLEdBQUcsQ0FBQyxFQUFFLENBQUM7UUFDaEIsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ2YsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ2YsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ2YsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBRWYsSUFBSSxLQUFLLEdBQUc7WUFDVixFQUFFLElBQUksRUFBRSxFQUFFO2dCQUNSLE1BQU0sRUFBRSxFQUFDLEdBQUcsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsRUFBQyxFQUFFO1lBQzNCLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDO2dCQUNULE1BQU0sRUFBRSxFQUFDLEdBQUcsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsRUFBQyxFQUFFO1lBQzNCLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDO2dCQUNULE1BQU0sRUFBRSxFQUFDLEdBQUcsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsRUFBQyxFQUFFO1lBQzNCLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQztnQkFDWixNQUFNLEVBQUUsRUFBQyxHQUFHLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQUMsRUFBRTtZQUMzQixFQUFFLElBQUksRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUM7Z0JBQ1osTUFBTSxFQUFFLEVBQUMsR0FBRyxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxFQUFDLEVBQUU7WUFDM0IsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztnQkFDZixNQUFNLEVBQUUsRUFBQyxHQUFHLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQUMsRUFBRTtZQUMzQixFQUFFLElBQUksRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDO2dCQUNmLE1BQU0sRUFBRSxFQUFDLEdBQUcsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsRUFBQyxFQUFFO1lBQzNCLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDO2dCQUNULE1BQU0sRUFBRSxFQUFDLEdBQUcsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsRUFBQyxFQUFFO1lBQzNCLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQztnQkFDWixNQUFNLEVBQUUsRUFBQyxHQUFHLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQUMsRUFBRTtZQUMzQixFQUFFLElBQUksRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUM7Z0JBQ1osTUFBTSxFQUFFLEVB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SUFBSSxDQUFDLEdBQUcsR0FBRyxDQUFDLFFBQVEsQ0FBQztRQUNyQixJQUFJLEdBQUcsR0FBRyxHQUFHLENBQUMsR0FBRyxDQUFDO1FBQ2xCLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUNmLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUNmLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUNmLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUVmLElBQUksS0FBSyxHQUFHO1lBQ1YsRUFBRSxJQUFJLEVBQUUsQ0FBQztnQkFDUCxNQUFNLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRTtZQUNmLEVBQUUsSUFBSSxFQUFFLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDO2dCQUNmLE1BQU0sRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRTtZQUNsQixFQUFFLElBQUksRUFBRSxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQztnQkFDZixNQUFNLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUU7WUFDbEIsRUFBRSxJQUFJLEVBQUUsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDO2dCQUN2QixNQUFNLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFO1lBQ3JCLEVBQUUsSUFBSSxFQUFFLEdBQUcsQ0FBQyxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztnQkFDdkIsTUFBTSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRTtZQUNyQixFQUFFLElBQUksRUFBRSxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO2dCQUMvQixNQUFNLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRTtTQUN6QixDQUFDO1FBRUYsTUFBTSxDQUFDLGNBQWMsQ0FBQyxLQUFLLEVBQUUsVUFBUyxJQUFhLEVBQUUsTUFBaUI7WUFDcEUsSUFBSSxNQUFNLEdBQUcsR0FBRyxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUM7WUFDckMsYUFBTSxDQUFDLFNBQVMsQ0FBQyxNQUFNLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFDbkMsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUN2QixDQUFDLENBQUMsQ0FBQztJQUVILEtBQUssQ0FBQyxvQkFBb0IsRUFBRTtRQUMxQixJQUFJLEtBQUssR0FBRztZQUNWLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsRUFBRSxJQUFJLENBQUM7WUFDeEIsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxFQUFFLElBQUksQ0FBQztZQUN4QixDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLEVBQUUsSUFBSSxDQUFDO1lBQ3ZCLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsRUFBRSxJQUFJLENBQUM7WUFDdkIsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxFQUFFLElBQUksQ0FBQztZQUM3QixDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLEVBQUUsSUFBSSxDQUFDO1lBQzFCLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsRUFBRSxJQUFJLENBQUM7WUFDekIsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxFQUFFLEtBQUssQ0FBQztZQUMzQixDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEVBQUUsS0FBSyxDQUFDO1lBQzFCLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsRUFBRSxLQUFLLENBQUM7WUFDNUIsQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxFQUFFLEtBQUssQ0FBQztZQUMxQixDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLEVBQUUsS0FBSyxDQUFDO1lBQ3hCLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQztTQUNkLENBQUM7UUFFRixNQUFNLENBQUMsY0FBYyxDQUFDLEtBQUssRUFBRSxVQUFTLElBQWEsRUFBRSxNQUFlO1lBQ2xFLElBQUksTUFBTSxHQUFHLEdBQUcsQ0FBQyxxQkFBcUIsQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUM3QyxhQUFNLENBQUMsS0FBSyxDQUFDLE1BQU0sRUFBRSxNQUFNLENBQUMsQ0FBQztRQUMvQixDQUFDLEVBQUUsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQ3ZCLENBQUMsQ0FBQyxDQUFDO0lBRUgsS0FBSyxDQUFDLHNCQUFzQixFQUFFO1FBQzVCLElBQUksS0FBSyxHQUFHO1lBQ1YsQ0FBRSxNQUFNLENBQUU7WUFDVixDQUFFLE9BQU8sQ0FBRTtZQUNYLENBQUUsR0FBRyxDQUFFO1lBQ1AsQ0FBRSxLQUFLLEVBQUUsR0FBRyxDQUFFO1lBQ2QsQ0FBRSxLQUFLLENBQUU7WUFDVCxDQUFFLElBQUksRUFBRSxHQUFHLENBQUM7WUFDWixDQUFFLElBQUksQ0FBRTtZQUNSLENBQUUsS0FBSyxFQUFFLEdBQUcsQ0FBRTtZQUNkLENBQUUsWUFBWSxFQUFFLFVBQVUsQ0FBRTtZQUM1QixDQUFFLFVBQVUsQ0FBRTtZQUNkLENBQUUsYUFBYSxDQUFDO1lBQ2hCLENBQUUsWUFBWSxDQUFFO1lBQ2hCLENBQUUsV0FBVyxFQUFFLE9BQU8sQ0FBRTtZQUN4QixDQUFFLFdBQVcsQ0FBRTtZQUNmLENBQUUsWUFBWSxDQUFFO1lBQ2hCLENBQUUsZUFBZSxDQUFFO1lBQ25CLENBQUUsR0FBRyxDQUFFO1lBQ1AsQ0FBRSxLQUFLLENBQUU7WUFDVCxDQUFFLE9BQU8sQ0FBRTtZQUVYLENBQUUsUUFBUSxFQUFFLEtBQUssQ0FBRTtZQUNuQixDQUFFLE1BQU0sQ0FBRTtZQUNWLENBQUUsU0FBUyxDQUFFO1lBQ2IsQ0FBRSxRQUFRLENBQUU7WUFDWixDQUFFLFFBQVEsQ0FBRTtZQUNaLENBQUUsVUFBVSxFQUFFLFFBQVEsQ0FBRTtZQUN4QixDQUFFLFdBQVcsRUFBRSxTQUFTLENBQUU7WUFFMUIsQ0FBRSxLQUFLLENBQUU7WUFDVCxDQUFFLE9BQU8sQ0FBRTtZQUNYLENBQUUsT0FBTyxDQUFFO1lBQ1gsQ0FBRSxPQUFPLENBQUU7WUFDWCxDQUFFLFFBQVEsQ0FBRTtZQUNaLENBQUUsUUFBUSxDQUFFO1lBRVosQ0FBRSxJQUFJLENBQUU7WUFDUixDQUFFLEtBQUssQ0FBRTtZQUNULENBQUUsSUFBSSxFQUFFLEdBQUcsQ0FBQztZQUNaLENBQUUsT0FBTyxFQUFFLE9BQU8sQ0FBRTtZQUNwQixDQUFFLE9BQU8sRUFBRSxRQUFRLENBQUU7WUFDckIsQ0FBRSxRQUFRLEVBQUUsU0FBUyxDQUFFO1lBQ3ZCLENBQUUsU0FBUyxFQUFFLFVBQVUsQ0FBRTtZQUN6QixDQUFFLElBQUksQ0FBRTtZQUNSLENBQUUsS0FBSyxDQUFFO1lBQ1QsQ0FBRSxLQUFLLEVBQUUsSUFBSSxDQUFFO1lBQ2YsQ0FBRSxLQUFLLENBQUU7WUFDVCxDQUFFLEtBQUssQ0FBRTtZQUNULENBQUUsT0FBTyxDQUFFO1lBQ1gsQ0FBRSxTQUFTLEVBQUUsT0FBTyxDQUFFO1lBQ3RCLENBQUUsT0FBTyxDQUFFO1lBQ1gsQ0FBRSxPQUFPLENBQUU7WUFDWCxDQUFFLE9BQU8sQ0FBRTtZQUNYLENBQUUsT0FBTyxDQUFFO1lBQ1gsQ0FBRSxRQUFRLENBQUU7WUFDWixDQUFFLFdBQVcsQ0FBRTtZQUNmLENBQUUsYUFBYSxDQUFFO1lBQ2pCLENBQUUsYUFBYSxFQUFFLFdBQVcsQ0FBRTtZQUM5QixDQUFFLFdBQVcsQ0FBRTtZQUNmLENBQUUsYUFBYSxDQUFFO1lBQ2pCLENBQUUsT0FBTyxDQUFFO1lBQ1gsQ0FBRSxPQUFPLENBQUU7WUFDWCxDQUFFLFFBQVEsQ0FBRTtZQUNaLENBQUUsUUFBUSxDQUFFO1lBQ1osQ0FBRSxRQUFRLENBQUU7WUFDWixDQUFFLFFBQVEsQ0FBRTtZQUNaLENBQUUsU0FBUyxFQUFFLFFBQVEsQ0FBRTtZQUN2QixDQUFFLFNBQVMsRUFBRSxRQUFRLENBQUU7WUFDdkIsQ0FBRSxZQUFZLENBQUU7WUFDaEIsQ0FBRSxrQkFBa0IsQ0FBRTtZQUN0QixDQUFFLGtCQUFrQixDQUFFO1lBQ3RCLENBQUUsYUFBYSxDQUFFO1lBQ2pCLENBQUUsYUFBYSxDQUFFO1lBQ2pCLENBQUUsa0JBQWtCLENBQUU7WUFDdEIsQ0FBRSxXQUFXLEVBQUk7WUFDakIsQ0FBRSxnQkFBZ0IsQ0FBRTtZQUNwQixDQUFFLDBCQUEwQixDQUFFO1NBQy9CLENBQUM7UUFFRixNQUFNLENBQUMsY0FBYyxDQUFDLEtBQUssRUFBRSxVQUFTLElBQVksRUFBRSxNQUFjO1lBQ2hFLDRCQUE0QjtZQUM1QixNQUFNLEdBQUcsTUFBTSxJQUFJLElBQUksQ0FBQztZQUN4QixJQUFJLE1BQU0sR0FBRyxLQUFLLENBQUMsdUJBQXVCLEdBQUcsSUFBSSxHQUFHLElBQUksQ0FBQyxDQUFDO1lBQzFELElBQUksR0FBRyxHQUFHLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztZQUNsQyxJQUFJLE1BQU0sR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDeEMsYUFBTSxDQUFDLEtBQUssQ0FBQyxNQUFNLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFDL0IsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDLENBQUMsQ0FBQztBQUNMLENBQUMsQ0FBQyxDQUFDIiwiZmlsZSI6InRlc3QvYXN0LXRlc3QuanMiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogQ29weXJpZ2h0IDIwMTUgR29vZ2xlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cbmltcG9ydCB7YXNzZXJ0fSBmcm9tICdjaGFpJztcbmltcG9ydCAqIGFzIGhlbHBlciBmcm9tICcuL3Rlc3QtaGVscGVyJztcblxuaW1wb3J0ICogYXMgYm9sdCBmcm9tICcuLi9ib2x0JztcbmxldCBwYXJzZSA9IGJvbHQucGFyc2U7XG5pbXBvcnQgKiBhcyBhc3QgZnJvbSAnLi4vYXN0Jztcblxuc3VpdGUoXCJBYnN0cmFjdCBTeW50YXggVHJlZSAoQVNUKVwiLCBmdW5jdGlvbigpIHtcbiAgc3VpdGUoXCJMZWZ0IEFzc29jaWF0aXZlIE9wZXJhdG9ycyAoQU5EIE9SKVwiLCBmdW5jdGlvbigpIHtcbiAgICB2YXIgdCA9IGFzdC5ib29sZWFuKHRydWUpO1xuICAgIHZhciBmID0gYXN0LmJvb2xlYW4oZmFsc2UpO1xuICAgIHZhciB2ID0gYXN0LnZhcmlhYmxlO1xuICAgIHZhciBhbmQgPSBhc3QuYW5kO1xuICAgIHZhciBvciA9IGFzdC5vcjtcbiAgICB2YXIgYSA9IHYoJ2EnKTtcbiAgICB2YXIgYiA9IHYoJ2InKTtcbiAgICB2YXIgYyA9IHYoJ2MnKTtcbiAgICB2YXIgZCA9IHYoJ2QnKTtcblxuICAgIHZhciB0ZXN0cyA9IFtcbiAgICAgIHsgZGF0YTogW10sXG4gICAgICAgIGV4cGVjdDoge2FuZDogdCwgb3I6IGZ9IH0sXG4gICAgICB7IGRhdGE6IFt0XSxcbiAgICAgICAgZXhwZWN0OiB7YW5kOiB0LCBvcjogdH0gfSxcbiAgICAgIHsgZGF0YTogW2ZdLFxuICAgICAgICBleHBlY3Q6IHthbmQ6IGYsIG9yOiBmfSB9LFxuICAgICAgeyBkYXRhOiBbZiwgdF0sXG4gICAgICAgIGV4cGVjdDoge2FuZDogZiwgb3I6IHR9IH0sXG4gICAgICB7IGRhdGE6IFt0LCBmXSxcbiAgICAgICAgZXhwZWN0OiB7YW5kOiBmLCBvcjogdH0gfSxcbiAgICAgIHsgZGF0YTogW3QsIGYsIHRdLFxuICAgICAgICBleHBlY3Q6IHthbmQ6IGYsIG9yOiB0fSB9LFxuICAgICAgeyBkYXRhOiBbZiwgdCwgZl0sXG4gICAgICAgIGV4cGVjdDoge2FuZDogZiwgb3I6IHR9IH0sXG4gICAgICB7IGRhdGE6IFthXSxcbiAgICAgICAgZXhwZWN0OiB7YW5kOiBhLCBvcjogYX0gfSxcbiAgICAgIHsgZGF0YTogW2EsIHRdLFxuICAgICAgICBleHBlY3Q6IHthbmQ6IGEsIG9yOiB0fSB9LFxuICAgICAgeyBkYXRhOiBbYSwgZl0sXG4gICAgICAgIGV4cGVjdDoge2FuZDogZiwgb3I6IGF9IH0sXG4gICAgICB7IGRhdGE6IFt0LCBhXSxcbiAgICAgICAgZXhwZWN0OiB7YW5kOiBhLCBvcjogdH0gfSxcbiAgICAgIHsgZGF0YTogW2YsIGFdLFxuICAgICAgICBleHBlY3Q6IHthbmQ6IGYsIG9yOiBhfSB9LFxuICAgICAgeyBkYXRhOiBbdCwgYSwgZl0sXG4gICAgICAgIGV4cGVjdDoge2FuZDogZiwgb3I6IHR9IH0sXG4gICAgICB7IGRhdGE6IFtmLCBhLCB0XSxcbiAgICAgICAgZXhwZWN0OiB7YW5kOiBmLCBvcjogdH0gfSxcbiAgICAgIHsgZGF0YTogW2EsIGYsIGFdLFxuICAgICAgICBleHBlY3Q6IHthbmQ6IGYsIG9yOiBhc3Qub3IoYSwgYSl9IH0sXG4gICAgICB7IGRhdGE6IFthLCB0LCBhXSxcbiAgICAgICAgZXhwZWN0OiB7YW5kOiBhbmQoYSwgYSksIG9yOiB0fSB9LFxuICAgICAgeyBkYXRhOiBbYW5kKGEsIGIpLCBhbmQoYywgZCldLFxuICAgICAgICBleHBlY3Q6IHthbmQ6IGFuZChhbmQoYW5kKGEsIGIpLCBjKSwgZCksXG4gICAgICAgICAgICAgICAgIG9yOiBvcihhbmQoYSwgYiksIGFuZChjLCBkKSl9IH0sXG4gICAgICB7IGRhdGE6IFtvcihhLCBiKSwgb3IoYywgZCldLFxuICAgICAgICBleHBlY3Q6IHthbmQ6IGFuZChvcihhLCBiKSwgb3IoYywgZCkpLFxuICAgICAgICAgICAgICAgICBvcjogb3Iob3Iob3IoYSwgYiksIGMpLCBkKX0gfSxcbiAgICBdO1xuXG4gICAgaGVscGVyLmRhdGFEcml2ZW5UZXN0KHRlc3RzLCBmdW5jdGlvbihkYXRhOiBhc3QuRXhwW10sIGV4cGVjdDogYW55KSB7XG4gICAgICBhc3NlcnQuZGVlcEVxdWFsKGFzdC5hbmRBcnJheShkYXRhKSwgZXhwZWN0LmFuZCwgJ0FORCcpO1xuICAgICAgYXNzZXJ0LmRlZXBFcXVhbChhc3Qub3JBcnJheShkYXRhKSwgZXhwZWN0Lm9yLCAnT1InKTtcbiAgICB9LCBoZWxwZXIuZXhwRm9ybWF0KTtcbiAgfSk7XG5cbiAgc3VpdGUoXCJGbGF0dGVuXCIsIGZ1bmN0aW9uKCkge1xuICAgIHZhciB2ID0gYXN0LnZhcmlhYmxlO1xuICAgIHZhciBhbmQgPSBhc3QuYW5kO1xuICAgIHZhciBhID0gdignYScpO1xuICAgIHZhciBiID0gdignYicpO1xuICAgIHZhciBjID0gdignYycpO1xuICAgIHZhciBkID0gdignZCcpO1xuXG4gICAgdmFyIHRlc3RzID0gW1xuICAgICAgeyBkYXRhOiBhLFxuICAgICAgICBleHBlY3Q6IFthXSB9LFxuICAgICAgeyBkYXRhOiBhbmQoYSwgYiksXG4gICAgICAgIGV4cGVjdDogW2EsIGJdIH0sXG4gICAgICB7IGRhdGE6IGFuZChhLCBiKSxcbiAgICAgICAgZXhwZWN0OiBbYSwgYl0gfSxcbiAgICAgIHsgZGF0YTogYW5kKGFuZChhLCBiKSwgYyksXG4gICAgICAgIGV4cGVjdDogW2EsIGIsIGNdIH0sXG4gICAgICB7IGRhdGE6IGFuZChhLCBhbmQoYiwgYykpLFxuICAgICAgICBleHBlY3Q6IFthLCBiLCBjXSB9LFxuICAgICAgeyBkYXRhOiBhbmQoYW5kKGEsIGIpLCBhbmQoYywgZCkpLFxuICAgICAgICBleHBlY3Q6IFthLCBiLCBjLCBkXSB9LFxuICAgIF07XG5cbiAgICBoZWxwZXIuZGF0YURyaXZlblRlc3QodGVzdHMsIGZ1bmN0aW9uKGRhdGE6IGFzdC5FeHAsIGV4cGVjdDogYXN0LkV4cFtdKSB7XG4gICAgICB2YXIgcmVzdWx0ID0gYXN0LmZsYXR0ZW4oJyYmJywgZGF0YSk7XG4gICAgICBhc3NlcnQuZGVlcEVxdWFsKHJlc3VsdCwgZXhwZWN0KTtcbiAgICB9LCBoZWxwZXIuZXhwRm9ybWF0KTtcbiAgfSk7XG5cbiAgc3VpdGUoXCJpc0lkZW50aWZpZXJTdHJpbmdcIiwgZnVuY3Rpb24oKSB7XG4gICAgbGV0IHRlc3RzID0gW1xuICAgICAgW2FzdC5zdHJpbmcoJ2hpJyksIHRydWVdLFxuICAgICAgW2FzdC5zdHJpbmcoJ0hpJyksIHRydWVdLFxuICAgICAgW2FzdC5zdHJpbmcoJ2EnKSwgdHJ1ZV0sXG4gICAgICBbYXN0LnN0cmluZygnQScpLCB0cnVlXSxcbiAgICAgIFthc3Quc3RyaW5nKCdoaVRoZXJlJyksIHRydWVdLFxuICAgICAgW2FzdC5zdHJpbmcoJ0gxMjMnKSwgdHJ1ZV0sXG4gICAgICBbYXN0LnN0cmluZygnJGlkJyksIHRydWVdLFxuICAgICAgW2FzdC5zdHJpbmcoJ2EkaWQnKSwgZmFsc2VdLFxuICAgICAgW2FzdC5zdHJpbmcoJ2EgYicpLCBmYWxzZV0sXG4gICAgICBbYXN0LnN0cmluZygnMEgxMjMnKSwgZmFsc2VdLFxuICAgICAgW2FzdC5ib29sZWFuKHRydWUpLCBmYWxzZV0sXG4gICAgICBbYXN0Lm51bWJlcigxMjMpLCBmYWxzZV0sXG4gICAgICBbJ2hpJywgZmFsc2VdLFxuICAgIF07XG5cbiAgICBoZWxwZXIuZGF0YURyaXZlblRlc3QodGVzdHMsIGZ1bmN0aW9uKGRhdGE6IGFzdC5FeHAsIGV4cGVjdDogYm9vbGVhbikge1xuICAgICAgdmFyIHJlc3VsdCA9IGFzdC5pc0lkZW50aWZpZXJTdHJpbmdFeHAoZGF0YSk7XG4gICAgICBhc3NlcnQuZXF1YWwocmVzdWx0LCBleHBlY3QpO1xuICAgIH0sIGhlbHBlci5leHBGb3JtYXQpO1xuICB9KTtcblxuICBzdWl0ZShcIkV4cHJlc3Npb24gZGVjb2RpbmcuXCIsIGZ1bmN0aW9uKCkge1xuICAgIHZhciB0ZXN0cyA9IFtcbiAgICAgIFsgXCJ0cnVlXCIgXSxcbiAgICAgIFsgXCJmYWxzZVwiIF0sXG4gICAgICBbIFwiMVwiIF0sXG4gICAgICBbIFwiKDEpXCIsICcxJyBdLFxuICAgICAgWyBcIjEuMVwiIF0sXG4gICAgICBbIFwiKzNcIiwgXCIzXCJdLFxuICAgICAgWyBcIi0zXCIgXSxcbiAgICAgIFsgXCIweDJcIiwgXCIyXCIgXSxcbiAgICAgIFsgXCJcXFwic3RyaW5nXFxcIlwiLCBcIidzdHJpbmcnXCIgXSxcbiAgICAgIFsgXCInc3RyaW5nJ1wiIF0sXG4gICAgICBbIFwiJ3N0XFxcXCdyaW5nJ1wiXSxcbiAgICAgIFsgXCInc3RcXFxccmluZydcIiBdLFxuICAgICAgWyBcIidcXFxcdTAwMGQnXCIsIFwiJ1xcXFxyJ1wiIF0sXG4gICAgICBbIFwiL3BhdHRlcm4vXCIgXSxcbiAgICAgIFsgXCIvcGF0dGVybi9pXCIgXSxcbiAgICAgIFsgXCIvcGF0XFxcXC90ZXJuL2lcIiBdLFxuICAgICAgWyBcImFcIiBdLFxuICAgICAgWyBcImEuYlwiIF0sXG4gICAgICBbIFwiYS5iLmNcIiBdLFxuXG4gICAgICBbIFwiYVsnYiddXCIsICdhLmInIF0sXG4gICAgICBbIFwiYVtiXVwiIF0sXG4gICAgICBbIFwiYVtiXVtjXVwiIF0sXG4gICAgICBbIFwiYS5iW2NdXCIgXSxcbiAgICAgIFsgXCJhW2JdLmNcIiBdLFxuICAgICAgWyBcIihhLmIpW2NdXCIsIFwiYS5iW2NdXCIgXSxcbiAgICAgIFsgXCIoYShiKSlbY11cIiwgXCJhKGIpW2NdXCIgXSxcblxuICAgICAgWyBcImEoKVwiIF0sXG4gICAgICBbIFwiYSgpKClcIiBdLFxuICAgICAgWyBcImEuYigpXCIgXSxcbiAgICAgIFsgXCJhKCkuYlwiIF0sXG4gICAgICBbIFwiYVswXSgpXCIgXSxcbiAgICAgIFsgXCJhKClbMF1cIiBdLFxuXG4gICAgICBbIFwiLWFcIiBdLFxuICAgICAgWyBcIi0tYVwiIF0sXG4gICAgICBbIFwiK2FcIiwgXCJhXCJdLFxuICAgICAgWyBcIithICtiXCIsIFwiYSArIGJcIiBdLFxuICAgICAgWyBcIi1hIC1iXCIsIFwiLWEgLSBiXCIgXSxcbiAgICAgIFsgXCItYSAtLWJcIiwgXCItYSAtIC1iXCIgXSxcbiAgICAgIFsgXCItYSAtLS1iXCIsIFwiLWEgLSAtLWJcIiBdLFxuICAgICAgWyBcIiFhXCIgXSxcbiAgICAgIFsgXCIhIWFcIiBdLFxuICAgICAgWyBcIiErYVwiLCAnIWEnIF0sXG4gICAgICBbIFwiIS1hXCIgXSxcbiAgICAgIFsgXCItIWFcIiBdLFxuICAgICAgWyBcIjIgKiBhXCIgXSxcbiAgICAgIFsgXCIoMiAqIGEpXCIsICcyICogYScgXSxcbiAgICAgIFsgXCIyIC8gYVwiIF0sXG4gICAgICBbIFwiYSAlIDJcIiBdLFxuICAgICAgWyBcIjEgKyAxXCIgXSxcbiAgICAgIFsgXCJhIC0gMVwiIF0sXG4gICAgICBbIFwiYSAtIC1iXCIgXSxcbiAgICAgIFsgXCJhICsgYiArIGNcIiBdLFxuICAgICAgWyBcImEgKyAoYiArIGMpXCIgXSxcbiAgICAgIFsgXCIoYSArIGIpICsgY1wiLCAnYSArIGIgKyBjJyBdLFxuICAgICAgWyBcImEgKyBiICogY1wiIF0sXG4gICAgICBbIFwiKGEgKyBiKSAqIGNcIiBdLFxuICAgICAgWyBcImEgPCA3XCIgXSxcbiAgICAgIFsgXCJhID4gN1wiIF0sXG4gICAgICBbIFwiYSA8PSA3XCIgXSxcbiAgICAgIFsgXCJhID49IDdcIiBdLFxuICAgICAgWyBcImEgPT0gM1wiIF0sXG4gICAgICBbIFwiYSAhPSAwXCIgXSxcbiAgICAgIFsgXCJhID09PSAzXCIsIFwiYSA9PSAzXCIgXSxcbiAgICAgIFsgXCJhICE9PSAwXCIsIFwiYSAhPSAwXCIgXSxcbiAgICAgIFsgXCIzICogYSA9PSBiXCIgXSxcbiAgICAgIFsgXCJhID09IDEgJiYgYiA8PSAyXCIgXSxcbiAgICAgIFsgXCJhID09IDEgfHwgYiA8PSAyXCIgXSxcbiAgICAgIFsgXCJhICYmIGIgJiYgY1wiIF0sXG4gICAgICBbIFwiYSB8fCBiIHx8IGNcIiBdLFxuICAgICAgWyBcImEgJiYgYiB8fCBjICYmIGRcIiBdLFxuICAgICAgWyBcImEgPyBiIDogY1wiLCAgXSxcbiAgICAgIFsgXCJhIHx8IGIgPyBjIDogZFwiIF0sXG4gICAgICBbIFwiKHRoaXMgKyAnICcpLnRlc3QoL1xcZCsvKVwiIF0sXG4gICAgXTtcblxuICAgIGhlbHBlci5kYXRhRHJpdmVuVGVzdCh0ZXN0cywgZnVuY3Rpb24oZGF0YTogc3RyaW5nLCBleHBlY3Q6IHN0cmluZykge1xuICAgICAgLy8gRGVjb2RlIHRvIHNlbGYgYnkgZGVmYXVsdFxuICAgICAgZXhwZWN0ID0gZXhwZWN0IHx8IGRhdGE7XG4gICAgICB2YXIgcmVzdWx0ID0gcGFyc2UoJ2Z1bmN0aW9uIGYoKSB7cmV0dXJuICcgKyBkYXRhICsgJzt9Jyk7XG4gICAgICB2YXIgZXhwID0gcmVzdWx0LmZ1bmN0aW9ucy5mLmJvZHk7XG4gICAgICB2YXIgZGVjb2RlID0gYm9sdC5kZWNvZGVFeHByZXNzaW9uKGV4cCk7XG4gICAgICBhc3NlcnQuZXF1YWwoZGVjb2RlLCBleHBlY3QpO1xuICAgIH0pO1xuICB9KTtcbn0pO1xuIl19
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInRlc3QvYXN0LXRlc3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQTs7Ozs7Ozs7Ozs7Ozs7R0FjRztBQUNILDZCQUE0QjtBQUM1QixzQ0FBd0M7QUFFeEMsOEJBQWdDO0FBQ2hDLElBQUksS0FBSyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUM7QUFDdkIsNEJBQThCO0FBRTlCLEtBQUssQ0FBQyw0QkFBNEIsRUFBRTtJQUNsQyxLQUFLLENBQUMscUNBQXFDLEVBQUU7UUFDM0MsSUFBSSxDQUFDLEdBQUcsR0FBRyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUMxQixJQUFJLENBQUMsR0FBRyxHQUFHLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzNCLElBQUksQ0FBQyxHQUFHLEdBQUcsQ0FBQyxRQUFRLENBQUM7UUFDckIsSUFBSSxHQUFHLEdBQUcsR0FBRyxDQUFDLEdBQUcsQ0FBQztRQUNsQixJQUFJLEVBQUUsR0FBRyxHQUFHLENBQUMsRUFBRSxDQUFDO1FBQ2hCLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUNmLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUNmLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUNmLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUVmLElBQUksS0FBSyxHQUFHO1lBQ1YsRUFBRSxJQUFJLEVBQUUsRUFBRTtnQkFDUixNQUFNLEVBQUUsRUFBQyxHQUFHLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQUMsRUFBRTtZQUMzQixFQUFFLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQztnQkFDVCxNQUFNLEVBQUUsRUFBQyxHQUFHLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQUMsRUFBRTtZQUMzQixFQUFFLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQztnQkFDVCxNQUFNLEVBQUUsRUFBQyxHQUFHLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQUMsRUFBRTtZQUMzQixFQUFFLElBQUksRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUM7Z0JBQ1osTUFBTSxFQUFFLEVBQUMsR0FBRyxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxFQUFDLEVBQUU7WUFDM0IsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDO2dCQUNaLE1BQU0sRUFBRSxFQUFDLEdBQUcsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsRUFBQyxFQUFFO1lBQzNCLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7Z0JBQ2YsTUFBTSxFQUFFLEVBQUMsR0FBRyxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxFQUFDLEVBQUU7WUFDM0IsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztnQkFDZixNQUFNLEVBQUUsRUFBQyxHQUFHLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQUMsRUFBRTtZQUMzQixFQUFFLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQztnQkFDVCxNQUFNLEVBQUUsRUFBQyxHQUFHLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQUMsRUFBRTtZQUMzQixFQUFFLElBQUksRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUM7Z0JBQ1osTUFBTSxFQUFFLEVBQUMsR0FBRyxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxFQUFDLEVBQUU7WUFDM0IsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDO2dCQUNaLE1BQU0sRUFBRSxFQUFDLEdBQUcsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsRUFBQyxFQUFFO1lBQzNCLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQztnQkFDWixNQUFNLEVBQUUsRUFBQyxHQUFHLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQUMsRUFBRTtZQUMzQixFQUFFLElBQUksRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUM7Z0JBQ1osTUFBTSxFQUFFLEVBQUMsR0FBRyxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxFQUFDLEVBQUU7WUFDM0IsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztnQkFDZixNQUFNLEVBQUUsRUFBQyxHQUFHLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQUMsRUFBRTtZQUMzQixFQUFFLElBQUksRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDO2dCQUNmLE1BQU0sRUFBRSxFQUFDLEdBQUcsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsRUFBQyxFQUFFO1lBQzNCLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7Z0JBQ2YsTUFBTSxFQUFFLEVBQUMsR0FBRyxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUMsRUFBRTtZQUN0QyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDO2dCQUNmLE1BQU0sRUFBRSxFQUFDLEdBQUcsRUFBRSxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQUMsRUFBRTtZQUNuQyxFQUFFLElBQUksRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztnQkFDNUIsTUFBTSxFQUFFLEVBQUMsR0FBRyxFQUFFLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMs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QUFRLENBQUU7WUFDdkIsQ0FBRSxTQUFTLEVBQUUsUUFBUSxDQUFFO1lBQ3ZCLENBQUUsWUFBWSxDQUFFO1lBQ2hCLENBQUUsa0JBQWtCLENBQUU7WUFDdEIsQ0FBRSxrQkFBa0IsQ0FBRTtZQUN0QixDQUFFLGFBQWEsQ0FBRTtZQUNqQixDQUFFLGFBQWEsQ0FBRTtZQUNqQixDQUFFLGtCQUFrQixDQUFFO1lBQ3RCLENBQUUsV0FBVyxFQUFJO1lBQ2pCLENBQUUsZ0JBQWdCLENBQUU7WUFDcEIsQ0FBRSwwQkFBMEIsQ0FBRTtTQUMvQixDQUFDO1FBRUYsTUFBTSxDQUFDLGNBQWMsQ0FBQyxLQUFLLEVBQUUsVUFBUyxJQUFZLEVBQUUsTUFBYztZQUNoRSw0QkFBNEI7WUFDNUIsTUFBTSxHQUFHLE1BQU0sSUFBSSxJQUFJLENBQUM7WUFDeEIsSUFBSSxNQUFNLEdBQUcsS0FBSyxDQUFDLHVCQUF1QixHQUFHLElBQUksR0FBRyxJQUFJLENBQUMsQ0FBQztZQUMxRCxJQUFJLEdBQUcsR0FBRyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7WUFDbEMsSUFBSSxNQUFNLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQ3hDLGFBQU0sQ0FBQyxLQUFLLENBQUMsTUFBTSxFQUFFLE1BQU0sQ0FBQyxDQUFDO1FBQy9CLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQyxDQUFDLENBQUM7QUFDTCxDQUFDLENBQUMsQ0FBQyIsImZpbGUiOiJ0ZXN0L2FzdC10ZXN0LmpzIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIENvcHlyaWdodCAyMDE1IEdvb2dsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5pbXBvcnQge2Fzc2VydH0gZnJvbSAnY2hhaSc7XG5pbXBvcnQgKiBhcyBoZWxwZXIgZnJvbSAnLi90ZXN0LWhlbHBlcic7XG5cbmltcG9ydCAqIGFzIGJvbHQgZnJvbSAnLi4vYm9sdCc7XG5sZXQgcGFyc2UgPSBib2x0LnBhcnNlO1xuaW1wb3J0ICogYXMgYXN0IGZyb20gJy4uL2FzdCc7XG5cbnN1aXRlKFwiQWJzdHJhY3QgU3ludGF4IFRyZWUgKEFTVClcIiwgZnVuY3Rpb24oKSB7XG4gIHN1aXRlKFwiTGVmdCBBc3NvY2lhdGl2ZSBPcGVyYXRvcnMgKEFORCBPUilcIiwgZnVuY3Rpb24oKSB7XG4gICAgdmFyIHQgPSBhc3QuYm9vbGVhbih0cnVlKTtcbiAgICB2YXIgZiA9IGFzdC5ib29sZWFuKGZhbHNlKTtcbiAgICB2YXIgdiA9IGFzdC52YXJpYWJsZTtcbiAgICB2YXIgYW5kID0gYXN0LmFuZDtcbiAgICB2YXIgb3IgPSBhc3Qub3I7XG4gICAgdmFyIGEgPSB2KCdhJyk7XG4gICAgdmFyIGIgPSB2KCdiJyk7XG4gICAgdmFyIGMgPSB2KCdjJyk7XG4gICAgdmFyIGQgPSB2KCdkJyk7XG5cbiAgICB2YXIgdGVzdHMgPSBbXG4gICAgICB7IGRhdGE6IFtdLFxuICAgICAgICBleHBlY3Q6IHthbmQ6IHQsIG9yOiBmfSB9LFxuICAgICAgeyBkYXRhOiBbdF0sXG4gICAgICAgIGV4cGVjdDoge2FuZDogdCwgb3I6IHR9IH0sXG4gICAgICB7IGRhdGE6IFtmXSxcbiAgICAgICAgZXhwZWN0OiB7YW5kOiBmLCBvcjogZn0gfSxcbiAgICAgIHsgZGF0YTogW2YsIHRdLFxuICAgICAgICBleHBlY3Q6IHthbmQ6IGYsIG9yOiB0fSB9LFxuICAgICAgeyBkYXRhOiBbdCwgZl0sXG4gICAgICAgIGV4cGVjdDoge2FuZDogZiwgb3I6IHR9IH0sXG4gICAgICB7IGRhdGE6IFt0LCBmLCB0XSxcbiAgICAgICAgZXhwZWN0OiB7YW5kOiBmLCBvcjogdH0gfSxcbiAgICAgIHsgZGF0YTogW2YsIHQsIGZdLFxuICAgICAgICBleHBlY3Q6IHthbmQ6IGYsIG9yOiB0fSB9LFxuICAgICAgeyBkYXRhOiBbYV0sXG4gICAgICAgIGV4cGVjdDoge2FuZDogYSwgb3I6IGF9IH0sXG4gICAgICB7IGRhdGE6IFthLCB0XSxcbiAgICAgICAgZXhwZWN0OiB7YW5kOiBhLCBvcjogdH0gfSxcbiAgICAgIHsgZGF0YTogW2EsIGZdLFxuICAgICAgICBleHBlY3Q6IHthbmQ6IGYsIG9yOiBhfSB9LFxuICAgICAgeyBkYXRhOiBbdCwgYV0sXG4gICAgICAgIGV4cGVjdDoge2FuZDogYSwgb3I6IHR9IH0sXG4gICAgICB7IGRhdGE6IFtmLCBhXSxcbiAgICAgICAgZXhwZWN0OiB7YW5kOiBmLCBvcjogYX0gfSxcbiAgICAgIHsgZGF0YTogW3QsIGEsIGZdLFxuICAgICAgICBleHBlY3Q6IHthbmQ6IGYsIG9yOiB0fSB9LFxuICAgICAgeyBkYXRhOiBbZiwgYSwgdF0sXG4gICAgICAgIGV4cGVjdDoge2FuZDogZiwgb3I6IHR9IH0sXG4gICAgICB7IGRhdGE6IFthLCBmLCBhXSxcbiAgICAgICAgZXhwZWN0OiB7YW5kOiBmLCBvcjogYXN0Lm9yKGEsIGEpfSB9LFxuICAgICAgeyBkYXRhOiBbYSwgdCwgYV0sXG4gICAgICAgIGV4cGVjdDoge2FuZDogYW5kKGEsIGEpLCBvcjogdH0gfSxcbiAgICAgIHsgZGF0YTogW2FuZChhLCBiKSwgYW5kKGMsIGQpXSxcbiAgICAgICAgZXhwZWN0OiB7YW5kOiBhbmQoYW5kKGFuZChhLCBiKSwgYyksIGQpLFxuICAgICAgICAgICAgICAgICBvcjogb3IoYW5kKGEsIGIpLCBhbmQoYywgZCkpfSB9LFxuICAgICAgeyBkYXRhOiBbb3IoYSwgYiksIG9yKGMsIGQpXSxcbiAgICAgICAgZXhwZWN0OiB7YW5kOiBhbmQob3IoYSwgYiksIG9yKGMsIGQpKSxcbiAgICAgICAgICAgICAgICAgb3I6IG9yKG9yKG9yKGEsIGIpLCBjKSwgZCl9IH0sXG4gICAgXTtcblxuICAgIGhlbHBlci5kYXRhRHJpdmVuVGVzdCh0ZXN0cywgZnVuY3Rpb24oZGF0YTogYXN0LkV4cFtdLCBleHBlY3Q6IGFueSkge1xuICAgICAgYXNzZXJ0LmRlZXBFcXVhbChhc3QuYW5kQXJyYXkoZGF0YSksIGV4cGVjdC5hbmQsICdBTkQnKTtcbiAgICAgIGFzc2VydC5kZWVwRXF1YWwoYXN0Lm9yQXJyYXkoZGF0YSksIGV4cGVjdC5vciwgJ09SJyk7XG4gICAgfSwgaGVscGVyLmV4cEZvcm1hdCk7XG4gIH0pO1xuXG4gIHN1aXRlKFwiRmxhdHRlblwiLCBmdW5jdGlvbigpIHtcbiAgICB2YXIgdiA9IGFzdC52YXJpYWJsZTtcbiAgICB2YXIgYW5kID0gYXN0LmFuZDtcbiAgICB2YXIgYSA9IHYoJ2EnKTtcbiAgICB2YXIgYiA9IHYoJ2InKTtcbiAgICB2YXIgYyA9IHYoJ2MnKTtcbiAgICB2YXIgZCA9IHYoJ2QnKTtcblxuICAgIHZhciB0ZXN0cyA9IFtcbiAgICAgIHsgZGF0YTogYSxcbiAgICAgICAgZXhwZWN0OiBbYV0gfSxcbiAgICAgIHsgZGF0YTogYW5kKGEsIGIpLFxuICAgICAgICBleHBlY3Q6IFthLCBiXSB9LFxuICAgICAgeyBkYXRhOiBhbmQoYSwgYiksXG4gICAgICAgIGV4cGVjdDogW2EsIGJdIH0sXG4gICAgICB7IGRhdGE6IGFuZChhbmQoYSwgYiksIGMpLFxuICAgICAgICBleHBlY3Q6IFthLCBiLCBjXSB9LFxuICAgICAgeyBkYXRhOiBhbmQoYSwgYW5kKGIsIGMpKSxcbiAgICAgICAgZXhwZWN0OiBbYSwgYiwgY10gfSxcbiAgICAgIHsgZGF0YTogYW5kKGFuZChhLCBiKSwgYW5kKGMsIGQpKSxcbiAgICAgICAgZXhwZWN0OiBbYSwgYiwgYywgZF0gfSxcbiAgICBdO1xuXG4gICAgaGVscGVyLmRhdGFEcml2ZW5UZXN0KHRlc3RzLCBmdW5jdGlvbihkYXRhOiBhc3QuRXhwLCBleHBlY3Q6IGFzdC5FeHBbXSkge1xuICAgICAgdmFyIHJlc3VsdCA9IGFzdC5mbGF0dGVuKCcmJicsIGRhdGEpO1xuICAgICAgYXNzZXJ0LmRlZXBFcXVhbChyZXN1bHQsIGV4cGVjdCk7XG4gICAgfSwgaGVscGVyLmV4cEZvcm1hdCk7XG4gIH0pO1xuXG4gIHN1aXRlKFwiaXNJZGVudGlmaWVyU3RyaW5nXCIsIGZ1bmN0aW9uKCkge1xuICAgIGxldCB0ZXN0cyA9IFtcbiAgICAgIFthc3Quc3RyaW5nKCdoaScpLCB0cnVlXSxcbiAgICAgIFthc3Quc3RyaW5nKCdIaScpLCB0cnVlXSxcbiAgICAgIFthc3Quc3RyaW5nKCdhJyksIHRydWVdLFxuICAgICAgW2FzdC5zdHJpbmcoJ0EnKSwgdHJ1ZV0sXG4gICAgICBbYXN0LnN0cmluZygnaGlUaGVyZScpLCB0cnVlXSxcbiAgICAgIFthc3Quc3RyaW5nKCdIMTIzJyksIHRydWVdLFxuICAgICAgW2FzdC5zdHJpbmcoJyRpZCcpLCB0cnVlXSxcbiAgICAgIFthc3Quc3RyaW5nKCdhJGlkJyksIGZhbHNlXSxcbiAgICAgIFthc3Quc3RyaW5nKCdhIGInKSwgZmFsc2VdLFxuICAgICAgW2FzdC5zdHJpbmcoJzBIMTIzJyksIGZhbHNlXSxcbiAgICAgIFthc3QuYm9vbGVhbih0cnVlKSwgZmFsc2VdLFxuICAgICAgW2FzdC5udW1iZXIoMTIzKSwgZmFsc2VdLFxuICAgICAgWydoaScsIGZhbHNlXSxcbiAgICBdO1xuXG4gICAgaGVscGVyLmRhdGFEcml2ZW5UZXN0KHRlc3RzLCBmdW5jdGlvbihkYXRhOiBhc3QuRXhwLCBleHBlY3Q6IGJvb2xlYW4pIHtcbiAgICAgIHZhciByZXN1bHQgPSBhc3QuaXNJZGVudGlmaWVyU3RyaW5nRXhwKGRhdGEpO1xuICAgICAgYXNzZXJ0LmVxdWFsKHJlc3VsdCwgZXhwZWN0KTtcbiAgICB9LCBoZWxwZXIuZXhwRm9ybWF0KTtcbiAgfSk7XG5cbiAgc3VpdGUoXCJFeHByZXNzaW9uIGRlY29kaW5nLlwiLCBmdW5jdGlvbigpIHtcbiAgICB2YXIgdGVzdHMgPSBbXG4gICAgICBbIFwidHJ1ZVwiIF0sXG4gICAgICBbIFwiZmFsc2VcIiBdLFxuICAgICAgWyBcIjFcIiBdLFxuICAgICAgWyBcIigxKVwiLCAnMScgXSxcbiAgICAgIFsgXCIxLjFcIiBdLFxuICAgICAgWyBcIiszXCIsIFwiM1wiXSxcbiAgICAgIFsgXCItM1wiIF0sXG4gICAgICBbIFwiMHgyXCIsIFwiMlwiIF0sXG4gICAgICBbIFwiXFxcInN0cmluZ1xcXCJcIiwgXCInc3RyaW5nJ1wiIF0sXG4gICAgICBbIFwiJ3N0cmluZydcIiBdLFxuICAgICAgWyBcIidzdFxcXFwncmluZydcIl0sXG4gICAgICBbIFwiJ3N0XFxcXHJpbmcnXCIgXSxcbiAgICAgIFsgXCInXFxcXHUwMDBkJ1wiLCBcIidcXFxccidcIiBdLFxuICAgICAgWyBcIi9wYXR0ZXJuL1wiIF0sXG4gICAgICBbIFwiL3BhdHRlcm4vaVwiIF0sXG4gICAgICBbIFwiL3BhdFxcXFwvdGVybi9pXCIgXSxcbiAgICAgIFsgXCJhXCIgXSxcbiAgICAgIFsgXCJhLmJcIiBdLFxuICAgICAgWyBcImEuYi5jXCIgXSxcblxuICAgICAgWyBcImFbJ2InXVwiLCAnYS5iJyBdLFxuICAgICAgWyBcImFbYl1cIiBdLFxuICAgICAgWyBcImFbYl1bY11cIiBdLFxuICAgICAgWyBcImEuYltjXVwiIF0sXG4gICAgICBbIFwiYVtiXS5jXCIgXSxcbiAgICAgIFsgXCIoYS5iKVtjXVwiLCBcImEuYltjXVwiIF0sXG4gICAgICBbIFwiKGEoYikpW2NdXCIsIFwiYShiKVtjXVwiIF0sXG5cbiAgICAgIFsgXCJhKClcIiBdLFxuICAgICAgWyBcImEoKSgpXCIgXSxcbiAgICAgIFsgXCJhLmIoKVwiIF0sXG4gICAgICBbIFwiYSgpLmJcIiBdLFxuICAgICAgWyBcImFbMF0oKVwiIF0sXG4gICAgICBbIFwiYSgpWzBdXCIgXSxcblxuICAgICAgWyBcIi1hXCIgXSxcbiAgICAgIFsgXCItLWFcIiBdLFxuICAgICAgWyBcIithXCIsIFwiYVwiXSxcbiAgICAgIFsgXCIrYSArYlwiLCBcImEgKyBiXCIgXSxcbiAgICAgIFsgXCItYSAtYlwiLCBcIi1hIC0gYlwiIF0sXG4gICAgICBbIFwiLWEgLS1iXCIsIFwiLWEgLSAtYlwiIF0sXG4gICAgICBbIFwiLWEgLS0tYlwiLCBcIi1hIC0gLS1iXCIgXSxcbiAgICAgIFsgXCIhYVwiIF0sXG4gICAgICBbIFwiISFhXCIgXSxcbiAgICAgIFsgXCIhK2FcIiwgJyFhJyBdLFxuICAgICAgWyBcIiEtYVwiIF0sXG4gICAgICBbIFwiLSFhXCIgXSxcbiAgICAgIFsgXCIyICogYVwiIF0sXG4gICAgICBbIFwiKDIgKiBhKVwiLCAnMiAqIGEnIF0sXG4gICAgICBbIFwiMiAvIGFcIiBdLFxuICAgICAgWyBcImEgJSAyXCIgXSxcbiAgICAgIFsgXCIxICsgMVwiIF0sXG4gICAgICBbIFwiYSAtIDFcIiBdLFxuICAgICAgWyBcImEgLSAtYlwiIF0sXG4gICAgICBbIFwiYSArIGIgKyBjXCIgXSxcbiAgICAgIFsgXCJhICsgKGIgKyBjKVwiIF0sXG4gICAgICBbIFwiKGEgKyBiKSArIGNcIiwgJ2EgKyBiICsgYycgXSxcbiAgICAgIFsgXCJhICsgYiAqIGNcIiBdLFxuICAgICAgWyBcIihhICsgYikgKiBjXCIgXSxcbiAgICAgIFsgXCJhIDwgN1wiIF0sXG4gICAgICBbIFwiYSA+IDdcIiBdLFxuICAgICAgWyBcImEgPD0gN1wiIF0sXG4gICAgICBbIFwiYSA+PSA3XCIgXSxcbiAgICAgIFsgXCJhID09IDNcIiBdLFxuICAgICAgWyBcImEgIT0gMFwiIF0sXG4gICAgICBbIFwiYSA9PT0gM1wiLCBcImEgPT0gM1wiIF0sXG4gICAgICBbIFwiYSAhPT0gMFwiLCBcImEgIT0gMFwiIF0sXG4gICAgICBbIFwiMyAqIGEgPT0gYlwiIF0sXG4gICAgICBbIFwiYSA9PSAxICYmIGIgPD0gMlwiIF0sXG4gICAgICBbIFwiYSA9PSAxIHx8IGIgPD0gMlwiIF0sXG4gICAgICBbIFwiYSAmJiBiICYmIGNcIiBdLFxuICAgICAgWyBcImEgfHwgYiB8fCBjXCIgXSxcbiAgICAgIFsgXCJhICYmIGIgfHwgYyAmJiBkXCIgXSxcbiAgICAgIFsgXCJhID8gYiA6IGNcIiwgIF0sXG4gICAgICBbIFwiYSB8fCBiID8gYyA6IGRcIiBdLFxuICAgICAgWyBcIih0aGlzICsgJyAnKS50ZXN0KC9cXGQrLylcIiBdLFxuICAgIF07XG5cbiAgICBoZWxwZXIuZGF0YURyaXZlblRlc3QodGVzdHMsIGZ1bmN0aW9uKGRhdGE6IHN0cmluZywgZXhwZWN0OiBzdHJpbmcpIHtcbiAgICAgIC8vIERlY29kZSB0byBzZWxmIGJ5IGRlZmF1bHRcbiAgICAgIGV4cGVjdCA9IGV4cGVjdCB8fCBkYXRhO1xuICAgICAgdmFyIHJlc3VsdCA9IHBhcnNlKCdmdW5jdGlvbiBmKCkge3JldHVybiAnICsgZGF0YSArICc7fScpO1xuICAgICAgdmFyIGV4cCA9IHJlc3VsdC5mdW5jdGlvbnMuZi5ib2R5O1xuICAgICAgdmFyIGRlY29kZSA9IGJvbHQuZGVjb2RlRXhwcmVzc2lvbihleHApO1xuICAgICAgYXNzZXJ0LmVxdWFsKGRlY29kZSwgZXhwZWN0KTtcbiAgICB9KTtcbiAgfSk7XG59KTtcbiJdfQ==
"use strict";
exports.__esModule = true;
/*

@@ -17,3 +18,3 @@ * Copyright 2015 Google Inc. All Rights Reserved.

*/
var simulator_1 = require('../simulator');
var simulator_1 = require("../simulator");
var secrets = require('../../auth-secrets');

@@ -173,2 +174,2 @@ simulator_1.rulesSuite("Chat", function (test) {

//# sourceMappingURL=data:application/json;charset=utf8;base64,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QUFDO2FBQ2hELEtBQUssQ0FBQztZQUNMLFFBQVEsRUFBRSxRQUFRO1lBQ2xCLFFBQVEsRUFBRSxLQUFLO1NBQ2hCLENBQUM7YUFDRCxRQUFRLENBQUMsOEJBQThCLENBQUM7YUFFeEMsRUFBRSxDQUFDLFFBQVEsQ0FBQzthQUNaLEVBQUUsQ0FBQyxtQkFBbUIsQ0FBQzthQUN2QixJQUFJLENBQUM7WUFDSixJQUFJLEVBQUUsR0FBRyxDQUFDLFFBQVEsQ0FBQztZQUNuQixPQUFPLEVBQUUsY0FBYztZQUN2QixPQUFPLEVBQUUsSUFBSSxDQUFDLFNBQVM7U0FDeEIsQ0FBQzthQUNELFFBQVEsQ0FBQyxtQkFBbUIsQ0FBQzthQUU3QixFQUFFLENBQUMsTUFBTSxDQUFDO2FBQ1YsRUFBRSxDQUFDLDRCQUE0QixHQUFHLEdBQUcsQ0FBQyxRQUFRLENBQUMsR0FBRyxXQUFXLENBQUM7YUFDOUQsS0FBSyxDQUFDLElBQUksQ0FBQzthQUNYLFFBQVEsQ0FBQywyQkFBMkIsQ0FBQzthQUVyQyxFQUFFLENBQUMsUUFBUSxDQUFDO2FBQ1osRUFBRSxDQUFDLG1CQUFtQixDQUFDO2FBQ3ZCLElBQUksQ0FBQztZQUNKLElBQUksRUFBRSxHQUFHLENBQUMsUUFBUSxDQUFDO1lBQ25CLE9BQU8sRUFBRSxjQUFjO1lBQ3ZCLE9BQU8sRUFBRSxJQUFJLENBQUMsU0FBUztTQUN4QixDQUFDO2FBQ0QsS0FBSyxDQUFDLDZCQUE2QixDQUFDLENBQ3RDO0lBQ0gsQ0FBQyxDQUFDLENBQUM7QUFDTCxDQUFDLENBQUMsQ0FBQyIsImZpbGUiOiJ0ZXN0L2NoYXQtdGVzdC5qcyIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBDb3B5cmlnaHQgMjAxNSBHb29nbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuaW1wb3J0IHtydWxlc1N1aXRlLCBSdWxlc1Rlc3R9IGZyb20gJy4uL3NpbXVsYXRvcic7XG5sZXQgc2VjcmV0cyA9IHJlcXVpcmUoJy4uLy4uL2F1dGgtc2VjcmV0cycpO1xuXG5ydWxlc1N1aXRlKFwiQ2hhdFwiLCBmdW5jdGlvbih0ZXN0KSB7XG4gIHZhciB1aWQgPSB0ZXN0LnVpZDtcblxuICB0ZXN0LmRhdGFiYXNlKHNlY3JldHMuQVBQLCBzZWNyZXRzLlNFQ1JFVCk7XG4gIHRlc3QucnVsZXMoJ3NhbXBsZXMvY2hhdCcpO1xuXG4gIGZ1bmN0aW9uIG1ha2VNaWtlc1Jvb20ocnVsZXM6IFJ1bGVzVGVzdCk6IFJ1bGVzVGVzdCB7XG4gICAgcmV0dXJuIHJ1bGVzXG4gICAgICAuYXMoJ21pa2UnKVxuICAgICAgLmF0KCcvcm9vbXMvbWlrZXMtcm9vbScpXG4gICAgICAud3JpdGUoe1xuICAgICAgICBuYW1lOiBcIk1pa2UncyByb29tXCIsXG4gICAgICAgIGNyZWF0b3I6IHVpZCgnbWlrZScpLFxuICAgICAgfSk7XG4gIH1cblxuICB0ZXN0KFwiQ3JlYXRlIGFuZCBEZWxldGUgUm9vbS5cIiwgZnVuY3Rpb24ocnVsZXMpIHtcbiAgICBtYWtlTWlrZXNSb29tKHJ1bGVzKVxuICAgICAgLnN1Y2NlZWRzKFwiQ3JlYXRlIGVtcHR5IHJvb20uXCIpXG5cbiAgICAgIC5hcygnZnJlZCcpXG4gICAgICAud3JpdGUobnVsbClcbiAgICAgIC5mYWlscyhcIk5vbi1vd25lciBjYW5ub3QgZGVsZXRlIHJvb20uXCIpXG5cbiAgICAgIC5hcygnbWlrZScpXG4gICAgICAud3JpdGUobnVsbClcbiAgICAgIC5zdWNjZWVkcyhcIk93bmVyIGNhbiBkZWxldGUgcm9vbS5cIilcbiAgICA7XG4gIH0pO1xuXG4gIHRlc3QoXCJGb3JnZSBDcmVhdG9yIG9mIFJvb20uXCIsIGZ1bmN0aW9uKHJ1bGVzKSB7XG4gICAgcnVsZXNcbiAgICAgIC5hcygnbWlrZScpXG4gICAgICAuYXQoJy9yb29tcy9taWtlcy1yb29tJylcbiAgICAgIC53cml0ZSh7XG4gICAgICAgIG5hbWU6IFwiTWlrZSdzIHJvb21cIixcbiAgICAgICAgY3JlYXRvcjogdWlkKCdmcmVkJyksXG4gICAgICB9KVxuICAgICAgLmZhaWxzKFwiQ2FuJ3QgY3JlYXRlIGZvcmdlZCByb29tLlwiKTtcbiAgfSk7XG5cbiAgdGVzdChcIkpvaW4gYSBSb29tLlwiLCBmdW5jdGlvbihydWxlcykge1xuICAgIG1ha2VNaWtlc1Jvb20ocnVsZXMpXG4gICAgICAuYXQoJy9yb29tcy9taWtlcy1yb29tL21lbWJlcnMvJyArIHVpZCgnbWlrZScpKVxuICAgICAgLndyaXRlKHtcbiAgICAgICAgbmlja25hbWU6ICdNaWtlJyxcbiAgICAgICAgaXNCYW5uZWQ6IGZhbHNlXG4gICAgICB9KVxuICAgICAgLnN1Y2NlZWRzKFwiQWRkIHNlbGYgdG8gcm9vbSBtZW1iZXJzLlwiKVxuXG4gICAgICAuYXQoJy9yb29tcy9taWtlcy1yb29tL21lbWJlcnMvJyArIHVpZCgnZnJlZCcpKVxuICAgICAgLndyaXRlKHtcbiAgICAgICAgbmlja25hbWU6ICdGcmVkJyxcbiAgICAgICAgaXNCYW5uZWQ6IGZhbHNlXG4gICAgICB9KVxuICAgICAgLnN1Y2NlZWRzKFwiQ3JlYXRvciBjYW4gYWRkIG90aGVyIG1lbWJlcnMuXCIpXG5cbiAgICAgIC5hcygnYmFybmV5JylcbiAgICAgIC5hdCgnL3Jvb21zL21pa2VzLXJvb20vbWVtYmVycy8nICsgdWlkKCdiYXJuZXknKSlcbiAgICAgIC53cml0ZSh7XG4gICAgICAgIG5pY2tuYW1lOiAnQmFybmV5JyxcbiAgICAgICAgaXNCYW5uZWQ6IGZhbHNlXG4gICAgICB9KVxuICAgICAgLnN1Y2NlZWRzKFwiVXNlciBjYW4gYWRkIHNlbGYgdG8gYSByb29tLlwiKVxuXG4gICAgICAuYXMoJ21pa2UnKVxuICAgICAgLmF0KCcvcm9vbXMvbWlrZXMtcm9vbS9tZW1iZXJzLycgKyB1aWQoJ2ZyZWQnKSlcbiAgICAgIC53cml0ZShudWxsKVxuICAgICAgLnN1Y2NlZWRzKFwiQ3JlYXRvciBjYW4gcmVtb3ZlIGEgbWVtYmVyLlwiKVxuICAgIDtcbiAgfSk7XG5cbiAgdGVzdChcIkJhbm5pbmcgYW5kIHVuYmFubmluZy5cIiwgZnVuY3Rpb24ocnVsZXMpIHtcbiAgICBtYWtlTWlrZXNSb29tKHJ1bGVzKVxuICAgICAgLmF0KCcvcm9vbXMvbWlrZXMtcm9vbS9tZW1iZXJzLycgKyB1aWQoJ21pa2UnKSlcblxuICAgICAgLmFzKCdiYXJuZXknKVxuICAgICAgLmF0KCcvcm9vbXMvbWlrZXMtcm9vbS9tZW1iZXJzLycgKyB1aWQoJ2Jhcm5leScpKVxuICAgICAgLndyaXRlKHtcbiAgICAgICAgbmlja25hbWU6ICdCYXJuZXknLFxuICAgICAgICBpc0Jhbm5lZDogZmFsc2VcbiAgICAgIH0pXG4gICAgICAuc3VjY2VlZHMoXCJVc2VyIGNhbiBhZGQgc2VsZiB0byBhIHJvb20uXCIpXG5cbiAgICAgIC5hcygnbWlrZScpXG4gICAgICAuYXQoJy9yb29tcy9taWtlcy1yb29tL21lbWJlcnMvJyArIHVpZCgnYmFybmV5JykgKyAnL2lzQmFubmVkJylcbiAgICAgIC53cml0ZSh0cnVlKVxuICAgICAgLnN1Y2NlZWRzKFwiQ3JlYXRvciBjYW4gYmFuIGEgbWVtYmVyLlwiKVxuXG4gICAgICAuYXMoJ2Jhcm5leScpXG4gICAgICAuYXQoJy9yb29tcy9taWtlcy1yb29tL21lbWJlcnMvJyArIHVpZCgnYmFybmV5JykpXG4gICAgICAud3JpdGUobnVsbClcbiAgICAgIC5mYWlscyhcIlVzZXIgdHJpZXMgdG8gZGVsZXRlIHNlbGYuXCIpXG5cbiAgICAgIC5hcygnYmFybmV5JylcbiAgICAgIC5hdCgnL3Jvb21zL21pa2VzLXJvb20vbWVtYmVycy8nICsgdWlkKCdiYXJuZXknKSlcbiAgICAgIC53cml0ZSh7XG4gICAgICAgIG5pY2tuYW1lOiAnQmFybmV5JyxcbiAgICAgICAgaXNCYW5uZWQ6IGZhbHNlXG4gICAgICB9KVxuICAgICAgLmZhaWxzKFwiVXNlciB0cmllcyB0byByZWpvaW5cIilcblxuICAgICAgLmFzKCdiYXJuZXknKVxuICAgICAgLmF0KCcvcm9vbXMvbWlrZXMtcm9vbS9tZW1iZXJzLycgKyB1aWQoJ2Jhcm5leScpICsgJy9pc0Jhbm5lZCcpXG4gICAgICAud3JpdGUoZmFsc2UpXG4gICAgICAuZmFpbHMoXCJVc2VyIHRyaWVzIHRvIHVuYmFuIHNlbGYuXCIpXG5cbiAgICAgIC5hcygnbWlrZScpXG4gICAgICAuYXQoJy9yb29tcy9taWtlcy1yb29tL21lbWJlcnMvJyArIHVpZCgnYmFybmV5JykgKyAnL2lzQmFubmVkJylcbiAgICAgIC53cml0ZShmYWxzZSlcbiAgICAgIC5zdWNjZWVkcyhcIlJvb20gY3JlYXRvciBjYW4gdW5iYW4gdXNlci5cIilcbiAgICA7XG4gIH0pO1xuXG4gIHRlc3QoXCJQb3N0aW5nLlwiLCBmdW5jdGlvbihydWxlcykge1xuICAgIG1ha2VNaWtlc1Jvb20ocnVsZXMpXG4gICAgICAuYXQoJy9wb3N0cy9taWtlcy1yb29tJylcbiAgICAgIC5wdXNoKHtcbiAgICAgICAgZnJvbTogdWlkKCdtaWtlJyksXG4gICAgICAgIG1lc3NhZ2U6IFwiSGVsbG8sIHdvcmxkIVwiLFxuICAgICAgICBjcmVhdGVkOiB0ZXN0LlRJTUVTVEFNUCxcbiAgICAgIH0pXG4gICAgICAuZmFpbHMoXCJPd25lciBjYW4ndCB3cml0ZSBpbnRvIHJvb20gdW50aWwgaGUgaXMgYSBtZW1iZXIuXCIpXG5cbiAgICAgIC5hdCgnL3Jvb21zL21pa2VzLXJvb20vbWVtYmVycy8nICsgdWlkKCdtaWtlJykpXG4gICAgICAud3JpdGUoe1xuICAgICAgICBuaWNrbmFtZTogJ01pa2UnLFxuICAgICAgICBpc0Jhbm5lZDogZmFsc2VcbiAgICAgIH0pXG4gICAgICAuc3VjY2VlZHMoXCJBZGQgc2VsZiB0byByb29tIG1lbWJlcnMuXCIpXG5cbiAgICAgIC5hdCgnL3Bvc3RzL21pa2VzLXJvb20nKVxuICAgICAgLnB1c2goe1xuICAgICAgICBmcm9tOiB1aWQoJ21pa2UnKSxcbiAgICAgICAgbWVzc2FnZTogXCJIZWxsbywgd29ybGQhXCIsXG4gICAgICAgIGNyZWF0ZWQ6IHRlc3QuVElNRVNUQU1QLFxuICAgICAgfSlcbiAgICAgIC5zdWNjZWVkcyhcIk93bmVyLW1lbWJlciBjYW4gcG9zdCB0byByb29tLlwiKVxuXG4gICAgICAuYXMoJ2Jhcm5leScpXG4gICAgICAuYXQoJy9wb3N0cy9taWtlcy1yb29tJylcbiAgICAgIC5wdXNoKHtcbiAgICAgICAgZnJvbTogdWlkKCdiYXJuZXknKSxcbiAgICAgICAgbWVzc2FnZTogXCJIZWxsbywgTWlrZSFcIixcbiAgICAgICAgY3JlYXRlZDogdGVzdC5USU1FU1RBTVAsXG4gICAgICB9KVxuICAgICAgLmZhaWxzKFwiTm9uLW1lbWJlcnMgY2Fubm90IHBvc3QuXCIpXG5cbiAgICAgIC5hcygnYmFybmV5JylcbiAgICAgIC5hdCgnL3Jvb21zL21pa2VzLXJvb20vbWVtYmVycy8nICsgdWlkKCdiYXJuZXknKSlcbiAgICAgIC53cml0ZSh7XG4gICAgICAgIG5pY2tuYW1lOiAnQmFybmV5JyxcbiAgICAgICAgaXNCYW5uZWQ6IGZhbHNlXG4gICAgICB9KVxuICAgICAgLnN1Y2NlZWRzKFwiVXNlciBjYW4gYWRkIHNlbGYgdG8gYSByb29tLlwiKVxuXG4gICAgICAuYXMoJ2Jhcm5leScpXG4gICAgICAuYXQoJy9wb3N0cy9taWtlcy1yb29tJylcbiAgICAgIC5wdXNoKHtcbiAgICAgICAgZnJvbTogdWlkKCdiYXJuZXknKSxcbiAgICAgICAgbWVzc2FnZTogXCJIZWxsbywgTWlrZSFcIixcbiAgICAgICAgY3JlYXRlZDogdGVzdC5USU1FU1RBTVAsXG4gICAgICB9KVxuICAgICAgLnN1Y2NlZWRzKFwiTWVtYmVycyBjYW4gcG9zdC5cIilcblxuICAgICAgLmFzKCdtaWtlJylcbiAgICAgIC5hdCgnL3Jvb21zL21pa2VzLXJvb20vbWVtYmVycy8nICsgdWlkKCdiYXJuZXknKSArICcvaXNCYW5uZWQnKVxuICAgICAgLndyaXRlKHRydWUpXG4gICAgICAuc3VjY2VlZHMoXCJDcmVhdG9yIGNhbiBiYW4gYSBtZW1iZXIuXCIpXG5cbiAgICAgIC5hcygnYmFybmV5JylcbiAgICAgIC5hdCgnL3Bvc3RzL21pa2VzLXJvb20nKVxuICAgICAgLnB1c2goe1xuICAgICAgICBmcm9tOiB1aWQoJ2Jhcm5leScpLFxuICAgICAgICBtZXNzYWdlOiBcIkhlbGxvLCBNaWtlIVwiLFxuICAgICAgICBjcmVhdGVkOiB0ZXN0LlRJTUVTVEFNUCxcbiAgICAgIH0pXG4gICAgICAuZmFpbHMoXCJCYW5uZWQgbWVtYmVycyBjYW5ub3QgcG9zdC5cIilcbiAgICA7XG4gIH0pO1xufSk7XG4iXX0=
//# sourceMappingURL=data:application/json;charset=utf8;base64,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O1lBQ0wsUUFBUSxFQUFFLFFBQVE7WUFDbEIsUUFBUSxFQUFFLEtBQUs7U0FDaEIsQ0FBQzthQUNELFFBQVEsQ0FBQyw4QkFBOEIsQ0FBQzthQUV4QyxFQUFFLENBQUMsUUFBUSxDQUFDO2FBQ1osRUFBRSxDQUFDLG1CQUFtQixDQUFDO2FBQ3ZCLElBQUksQ0FBQztZQUNKLElBQUksRUFBRSxHQUFHLENBQUMsUUFBUSxDQUFDO1lBQ25CLE9BQU8sRUFBRSxjQUFjO1lBQ3ZCLE9BQU8sRUFBRSxJQUFJLENBQUMsU0FBUztTQUN4QixDQUFDO2FBQ0QsUUFBUSxDQUFDLG1CQUFtQixDQUFDO2FBRTdCLEVBQUUsQ0FBQyxNQUFNLENBQUM7YUFDVixFQUFFLENBQUMsNEJBQTRCLEdBQUcsR0FBRyxDQUFDLFFBQVEsQ0FBQyxHQUFHLFdBQVcsQ0FBQzthQUM5RCxLQUFLLENBQUMsSUFBSSxDQUFDO2FBQ1gsUUFBUSxDQUFDLDJCQUEyQixDQUFDO2FBRXJDLEVBQUUsQ0FBQyxRQUFRLENBQUM7YUFDWixFQUFFLENBQUMsbUJBQW1CLENBQUM7YUFDdkIsSUFBSSxDQUFDO1lBQ0osSUFBSSxFQUFFLEdBQUcsQ0FBQyxRQUFRLENBQUM7WUFDbkIsT0FBTyxFQUFFLGNBQWM7WUFDdkIsT0FBTyxFQUFFLElBQUksQ0FBQyxTQUFTO1NBQ3hCLENBQUM7YUFDRCxLQUFLLENBQUMsNkJBQTZCLENBQUMsQ0FDdEM7SUFDSCxDQUFDLENBQUMsQ0FBQztBQUNMLENBQUMsQ0FBQyxDQUFDIiwiZmlsZSI6InRlc3QvY2hhdC10ZXN0LmpzIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIENvcHlyaWdodCAyMDE1IEdvb2dsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5pbXBvcnQge3J1bGVzU3VpdGUsIFJ1bGVzVGVzdH0gZnJvbSAnLi4vc2ltdWxhdG9yJztcbmxldCBzZWNyZXRzID0gcmVxdWlyZSgnLi4vLi4vYXV0aC1zZWNyZXRzJyk7XG5cbnJ1bGVzU3VpdGUoXCJDaGF0XCIsIGZ1bmN0aW9uKHRlc3QpIHtcbiAgdmFyIHVpZCA9IHRlc3QudWlkO1xuXG4gIHRlc3QuZGF0YWJhc2Uoc2VjcmV0cy5BUFAsIHNlY3JldHMuU0VDUkVUKTtcbiAgdGVzdC5ydWxlcygnc2FtcGxlcy9jaGF0Jyk7XG5cbiAgZnVuY3Rpb24gbWFrZU1pa2VzUm9vbShydWxlczogUnVsZXNUZXN0KTogUnVsZXNUZXN0IHtcbiAgICByZXR1cm4gcnVsZXNcbiAgICAgIC5hcygnbWlrZScpXG4gICAgICAuYXQoJy9yb29tcy9taWtlcy1yb29tJylcbiAgICAgIC53cml0ZSh7XG4gICAgICAgIG5hbWU6IFwiTWlrZSdzIHJvb21cIixcbiAgICAgICAgY3JlYXRvcjogdWlkKCdtaWtlJyksXG4gICAgICB9KTtcbiAgfVxuXG4gIHRlc3QoXCJDcmVhdGUgYW5kIERlbGV0ZSBSb29tLlwiLCBmdW5jdGlvbihydWxlcykge1xuICAgIG1ha2VNaWtlc1Jvb20ocnVsZXMpXG4gICAgICAuc3VjY2VlZHMoXCJDcmVhdGUgZW1wdHkgcm9vbS5cIilcblxuICAgICAgLmFzKCdmcmVkJylcbiAgICAgIC53cml0ZShudWxsKVxuICAgICAgLmZhaWxzKFwiTm9uLW93bmVyIGNhbm5vdCBkZWxldGUgcm9vbS5cIilcblxuICAgICAgLmFzKCdtaWtlJylcbiAgICAgIC53cml0ZShudWxsKVxuICAgICAgLnN1Y2NlZWRzKFwiT3duZXIgY2FuIGRlbGV0ZSByb29tLlwiKVxuICAgIDtcbiAgfSk7XG5cbiAgdGVzdChcIkZvcmdlIENyZWF0b3Igb2YgUm9vbS5cIiwgZnVuY3Rpb24ocnVsZXMpIHtcbiAgICBydWxlc1xuICAgICAgLmFzKCdtaWtlJylcbiAgICAgIC5hdCgnL3Jvb21zL21pa2VzLXJvb20nKVxuICAgICAgLndyaXRlKHtcbiAgICAgICAgbmFtZTogXCJNaWtlJ3Mgcm9vbVwiLFxuICAgICAgICBjcmVhdG9yOiB1aWQoJ2ZyZWQnKSxcbiAgICAgIH0pXG4gICAgICAuZmFpbHMoXCJDYW4ndCBjcmVhdGUgZm9yZ2VkIHJvb20uXCIpO1xuICB9KTtcblxuICB0ZXN0KFwiSm9pbiBhIFJvb20uXCIsIGZ1bmN0aW9uKHJ1bGVzKSB7XG4gICAgbWFrZU1pa2VzUm9vbShydWxlcylcbiAgICAgIC5hdCgnL3Jvb21zL21pa2VzLXJvb20vbWVtYmVycy8nICsgdWlkKCdtaWtlJykpXG4gICAgICAud3JpdGUoe1xuICAgICAgICBuaWNrbmFtZTogJ01pa2UnLFxuICAgICAgICBpc0Jhbm5lZDogZmFsc2VcbiAgICAgIH0pXG4gICAgICAuc3VjY2VlZHMoXCJBZGQgc2VsZiB0byByb29tIG1lbWJlcnMuXCIpXG5cbiAgICAgIC5hdCgnL3Jvb21zL21pa2VzLXJvb20vbWVtYmVycy8nICsgdWlkKCdmcmVkJykpXG4gICAgICAud3JpdGUoe1xuICAgICAgICBuaWNrbmFtZTogJ0ZyZWQnLFxuICAgICAgICBpc0Jhbm5lZDogZmFsc2VcbiAgICAgIH0pXG4gICAgICAuc3VjY2VlZHMoXCJDcmVhdG9yIGNhbiBhZGQgb3RoZXIgbWVtYmVycy5cIilcblxuICAgICAgLmFzKCdiYXJuZXknKVxuICAgICAgLmF0KCcvcm9vbXMvbWlrZXMtcm9vbS9tZW1iZXJzLycgKyB1aWQoJ2Jhcm5leScpKVxuICAgICAgLndyaXRlKHtcbiAgICAgICAgbmlja25hbWU6ICdCYXJuZXknLFxuICAgICAgICBpc0Jhbm5lZDogZmFsc2VcbiAgICAgIH0pXG4gICAgICAuc3VjY2VlZHMoXCJVc2VyIGNhbiBhZGQgc2VsZiB0byBhIHJvb20uXCIpXG5cbiAgICAgIC5hcygnbWlrZScpXG4gICAgICAuYXQoJy9yb29tcy9taWtlcy1yb29tL21lbWJlcnMvJyArIHVpZCgnZnJlZCcpKVxuICAgICAgLndyaXRlKG51bGwpXG4gICAgICAuc3VjY2VlZHMoXCJDcmVhdG9yIGNhbiByZW1vdmUgYSBtZW1iZXIuXCIpXG4gICAgO1xuICB9KTtcblxuICB0ZXN0KFwiQmFubmluZyBhbmQgdW5iYW5uaW5nLlwiLCBmdW5jdGlvbihydWxlcykge1xuICAgIG1ha2VNaWtlc1Jvb20ocnVsZXMpXG4gICAgICAuYXQoJy9yb29tcy9taWtlcy1yb29tL21lbWJlcnMvJyArIHVpZCgnbWlrZScpKVxuXG4gICAgICAuYXMoJ2Jhcm5leScpXG4gICAgICAuYXQoJy9yb29tcy9taWtlcy1yb29tL21lbWJlcnMvJyArIHVpZCgnYmFybmV5JykpXG4gICAgICAud3JpdGUoe1xuICAgICAgICBuaWNrbmFtZTogJ0Jhcm5leScsXG4gICAgICAgIGlzQmFubmVkOiBmYWxzZVxuICAgICAgfSlcbiAgICAgIC5zdWNjZWVkcyhcIlVzZXIgY2FuIGFkZCBzZWxmIHRvIGEgcm9vbS5cIilcblxuICAgICAgLmFzKCdtaWtlJylcbiAgICAgIC5hdCgnL3Jvb21zL21pa2VzLXJvb20vbWVtYmVycy8nICsgdWlkKCdiYXJuZXknKSArICcvaXNCYW5uZWQnKVxuICAgICAgLndyaXRlKHRydWUpXG4gICAgICAuc3VjY2VlZHMoXCJDcmVhdG9yIGNhbiBiYW4gYSBtZW1iZXIuXCIpXG5cbiAgICAgIC5hcygnYmFybmV5JylcbiAgICAgIC5hdCgnL3Jvb21zL21pa2VzLXJvb20vbWVtYmVycy8nICsgdWlkKCdiYXJuZXknKSlcbiAgICAgIC53cml0ZShudWxsKVxuICAgICAgLmZhaWxzKFwiVXNlciB0cmllcyB0byBkZWxldGUgc2VsZi5cIilcblxuICAgICAgLmFzKCdiYXJuZXknKVxuICAgICAgLmF0KCcvcm9vbXMvbWlrZXMtcm9vbS9tZW1iZXJzLycgKyB1aWQoJ2Jhcm5leScpKVxuICAgICAgLndyaXRlKHtcbiAgICAgICAgbmlja25hbWU6ICdCYXJuZXknLFxuICAgICAgICBpc0Jhbm5lZDogZmFsc2VcbiAgICAgIH0pXG4gICAgICAuZmFpbHMoXCJVc2VyIHRyaWVzIHRvIHJlam9pblwiKVxuXG4gICAgICAuYXMoJ2Jhcm5leScpXG4gICAgICAuYXQoJy9yb29tcy9taWtlcy1yb29tL21lbWJlcnMvJyArIHVpZCgnYmFybmV5JykgKyAnL2lzQmFubmVkJylcbiAgICAgIC53cml0ZShmYWxzZSlcbiAgICAgIC5mYWlscyhcIlVzZXIgdHJpZXMgdG8gdW5iYW4gc2VsZi5cIilcblxuICAgICAgLmFzKCdtaWtlJylcbiAgICAgIC5hdCgnL3Jvb21zL21pa2VzLXJvb20vbWVtYmVycy8nICsgdWlkKCdiYXJuZXknKSArICcvaXNCYW5uZWQnKVxuICAgICAgLndyaXRlKGZhbHNlKVxuICAgICAgLnN1Y2NlZWRzKFwiUm9vbSBjcmVhdG9yIGNhbiB1bmJhbiB1c2VyLlwiKVxuICAgIDtcbiAgfSk7XG5cbiAgdGVzdChcIlBvc3RpbmcuXCIsIGZ1bmN0aW9uKHJ1bGVzKSB7XG4gICAgbWFrZU1pa2VzUm9vbShydWxlcylcbiAgICAgIC5hdCgnL3Bvc3RzL21pa2VzLXJvb20nKVxuICAgICAgLnB1c2goe1xuICAgICAgICBmcm9tOiB1aWQoJ21pa2UnKSxcbiAgICAgICAgbWVzc2FnZTogXCJIZWxsbywgd29ybGQhXCIsXG4gICAgICAgIGNyZWF0ZWQ6IHRlc3QuVElNRVNUQU1QLFxuICAgICAgfSlcbiAgICAgIC5mYWlscyhcIk93bmVyIGNhbid0IHdyaXRlIGludG8gcm9vbSB1bnRpbCBoZSBpcyBhIG1lbWJlci5cIilcblxuICAgICAgLmF0KCcvcm9vbXMvbWlrZXMtcm9vbS9tZW1iZXJzLycgKyB1aWQoJ21pa2UnKSlcbiAgICAgIC53cml0ZSh7XG4gICAgICAgIG5pY2tuYW1lOiAnTWlrZScsXG4gICAgICAgIGlzQmFubmVkOiBmYWxzZVxuICAgICAgfSlcbiAgICAgIC5zdWNjZWVkcyhcIkFkZCBzZWxmIHRvIHJvb20gbWVtYmVycy5cIilcblxuICAgICAgLmF0KCcvcG9zdHMvbWlrZXMtcm9vbScpXG4gICAgICAucHVzaCh7XG4gICAgICAgIGZyb206IHVpZCgnbWlrZScpLFxuICAgICAgICBtZXNzYWdlOiBcIkhlbGxvLCB3b3JsZCFcIixcbiAgICAgICAgY3JlYXRlZDogdGVzdC5USU1FU1RBTVAsXG4gICAgICB9KVxuICAgICAgLnN1Y2NlZWRzKFwiT3duZXItbWVtYmVyIGNhbiBwb3N0IHRvIHJvb20uXCIpXG5cbiAgICAgIC5hcygnYmFybmV5JylcbiAgICAgIC5hdCgnL3Bvc3RzL21pa2VzLXJvb20nKVxuICAgICAgLnB1c2goe1xuICAgICAgICBmcm9tOiB1aWQoJ2Jhcm5leScpLFxuICAgICAgICBtZXNzYWdlOiBcIkhlbGxvLCBNaWtlIVwiLFxuICAgICAgICBjcmVhdGVkOiB0ZXN0LlRJTUVTVEFNUCxcbiAgICAgIH0pXG4gICAgICAuZmFpbHMoXCJOb24tbWVtYmVycyBjYW5ub3QgcG9zdC5cIilcblxuICAgICAgLmFzKCdiYXJuZXknKVxuICAgICAgLmF0KCcvcm9vbXMvbWlrZXMtcm9vbS9tZW1iZXJzLycgKyB1aWQoJ2Jhcm5leScpKVxuICAgICAgLndyaXRlKHtcbiAgICAgICAgbmlja25hbWU6ICdCYXJuZXknLFxuICAgICAgICBpc0Jhbm5lZDogZmFsc2VcbiAgICAgIH0pXG4gICAgICAuc3VjY2VlZHMoXCJVc2VyIGNhbiBhZGQgc2VsZiB0byBhIHJvb20uXCIpXG5cbiAgICAgIC5hcygnYmFybmV5JylcbiAgICAgIC5hdCgnL3Bvc3RzL21pa2VzLXJvb20nKVxuICAgICAgLnB1c2goe1xuICAgICAgICBmcm9tOiB1aWQoJ2Jhcm5leScpLFxuICAgICAgICBtZXNzYWdlOiBcIkhlbGxvLCBNaWtlIVwiLFxuICAgICAgICBjcmVhdGVkOiB0ZXN0LlRJTUVTVEFNUCxcbiAgICAgIH0pXG4gICAgICAuc3VjY2VlZHMoXCJNZW1iZXJzIGNhbiBwb3N0LlwiKVxuXG4gICAgICAuYXMoJ21pa2UnKVxuICAgICAgLmF0KCcvcm9vbXMvbWlrZXMtcm9vbS9tZW1iZXJzLycgKyB1aWQoJ2Jhcm5leScpICsgJy9pc0Jhbm5lZCcpXG4gICAgICAud3JpdGUodHJ1ZSlcbiAgICAgIC5zdWNjZWVkcyhcIkNyZWF0b3IgY2FuIGJhbiBhIG1lbWJlci5cIilcblxuICAgICAgLmFzKCdiYXJuZXknKVxuICAgICAgLmF0KCcvcG9zdHMvbWlrZXMtcm9vbScpXG4gICAgICAucHVzaCh7XG4gICAgICAgIGZyb206IHVpZCgnYmFybmV5JyksXG4gICAgICAgIG1lc3NhZ2U6IFwiSGVsbG8sIE1pa2UhXCIsXG4gICAgICAgIGNyZWF0ZWQ6IHRlc3QuVElNRVNUQU1QLFxuICAgICAgfSlcbiAgICAgIC5mYWlscyhcIkJhbm5lZCBtZW1iZXJzIGNhbm5vdCBwb3N0LlwiKVxuICAgIDtcbiAgfSk7XG59KTtcbiJdfQ==
"use strict";
exports.__esModule = true;
/*

@@ -17,6 +18,6 @@ * Copyright 2015 Google Inc. All Rights Reserved.

*/
var chai_1 = require('chai');
var helper = require('./test-helper');
var proc = require('child_process');
var fs = require('fs');
var chai_1 = require("chai");
var helper = require("./test-helper");
var proc = require("child_process");
var fs = require("fs");
var TMP_DIR = 'tmp/';

@@ -29,2 +30,3 @@ suite("firebase-bolt CLI", function () {

catch (e) {
// do nothing
}

@@ -92,2 +94,2 @@ });

//# sourceMappingURL=data:application/json;charset=utf8;base64,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LENBQUM7Z0JBQ2hGLENBQUM7Z0JBQ0QsT0FBTyxFQUFFLENBQUM7WUFDWixDQUFDLENBQUMsQ0FBQztZQUNILEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO2dCQUNmLEtBQUssQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztnQkFDOUIsS0FBSyxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsQ0FBQztZQUNwQixDQUFDO1FBQ0gsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDLENBQUMsQ0FBQztBQUNMLENBQUMsQ0FBQyxDQUFDIiwiZmlsZSI6InRlc3QvY2xpLXRlc3QuanMiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogQ29weXJpZ2h0IDIwMTUgR29vZ2xlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cbmltcG9ydCB7YXNzZXJ0fSBmcm9tICdjaGFpJztcbmltcG9ydCAqIGFzIGhlbHBlciBmcm9tICcuL3Rlc3QtaGVscGVyJztcbmltcG9ydCAqIGFzIHByb2MgZnJvbSAnY2hpbGRfcHJvY2Vzcyc7XG5pbXBvcnQgKiBhcyBmcyBmcm9tICdmcyc7XG5cbnZhciBUTVBfRElSID0gJ3RtcC8nO1xuXG5zdWl0ZShcImZpcmViYXNlLWJvbHQgQ0xJXCIsIGZ1bmN0aW9uKCkge1xuICBzdWl0ZVNldHVwKCgpID0+IHtcbiAgICB0cnkge1xuICAgICAgZnMubWtkaXJTeW5jKFRNUF9ESVIpO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIC8vIGRvIG5vdGhpbmdcbiAgICB9XG4gIH0pO1xuXG4gIHZhciB0ZXN0cyA9IFtcbiAgICAvLyBTaW1wbGUgb3B0aW9ucyB0ZXN0cy5cbiAgICB7IGRhdGE6IFwiLS1oZWxwXCIsXG4gICAgICBleHBlY3Q6IHtvdXQ6IC9eJC8sIGVycjogL2hlbHBmdWwgbWVzc2FnZS99IH0sXG4gICAgeyBkYXRhOiBcIi0taFwiLFxuICAgICAgZXhwZWN0OiB7b3V0OiAvXiQvLCBlcnI6IC9oZWxwZnVsIG1lc3NhZ2UvfSB9LFxuICAgIHsgZGF0YTogXCItLXZlcnNpb25cIixcbiAgICAgIGV4cGVjdDoge291dDogL15GaXJlYmFzZSBCb2x0IHZcXGQrXFwuXFxkK1xcLlxcZCtcXG4kLywgZXJyOiAvXiQvfSB9LFxuICAgIHsgZGF0YTogXCItLXZcIixcbiAgICAgIGV4cGVjdDoge291dDogL15GaXJlYmFzZSBCb2x0IHZcXGQrXFwuXFxkK1xcLlxcZCtcXG4kLywgZXJyOiAvXiQvfSB9LFxuXG4gICAgLy8gUmVhZGluZyBmcm9tIHN0ZGluXG4gICAgeyBsYWJlbDogXCJzdGRpbiAtPiBzdGRvdXRcIixcbiAgICAgIGRhdGE6IHsgc3RkaW46IFwicGF0aCAvIGlzIFN0cmluZztcIiB9LFxuICAgICAgZXhwZWN0OiB7b3V0OiAvbmV3RGF0YVxcLmlzU3RyaW5nLywgZXJyOiAvXiQvfSB9LFxuICAgIHsgbGFiZWw6IFwic3RkaW4gLT4gZmlsZVwiLFxuICAgICAgZGF0YTogeyBzdGRpbjogXCJwYXRoIC8gaXMgU3RyaW5nO1wiLCBhcmdzOiBcIi0tbyBcIiArIFRNUF9ESVIgKyBcInRlc3RcIiB9LFxuICAgICAgZXhwZWN0OiB7b3V0OiAvXiQvLCBlcnI6IG5ldyBSZWdFeHAoXCJeYm9sdDogR2VuZXJhdGluZyBcIiArIFRNUF9ESVIgKyBcInRlc3RcIil9IH0sXG5cbiAgICAvLyBSZWFkaW5nIGZyb20gYSBmaWxlXG4gICAgeyBkYXRhOiBcInNhbXBsZXMvYWxsX2FjY2Vzc1wiLFxuICAgICAgZXhwZWN0OiB7b3V0OiAvXiQvLCBlcnI6IC9eYm9sdDogR2VuZXJhdGluZyBzYW1wbGVzXFwvYWxsX2FjY2Vzcy5qc29uXFwuXFwuXFwuXFxuJC99IH0sXG4gICAgeyBkYXRhOiBcInNhbXBsZXMvYWxsX2FjY2Vzcy5ib2x0XCIsXG4gICAgICBleHBlY3Q6IHtvdXQ6IC9eJC8sIGVycjogL15ib2x0OiBHZW5lcmF0aW5nIHNhbXBsZXNcXC9hbGxfYWNjZXNzLmpzb25cXC5cXC5cXC5cXG4kL30gfSxcbiAgICB7IGRhdGE6IFwic2FtcGxlcy9hbGxfYWNjZXNzIC0tb3V0cHV0IFwiICsgVE1QX0RJUiArIFwiYWxsX2FjY2Vzc1wiLFxuICAgICAgZXhwZWN0OiB7b3V0OiAvXiQvLCBlcnI6IG5ldyBSZWdFeHAoXCJeYm9sdDogR2VuZXJhdGluZyBcIiArIFRNUF9ESVIgKyBcImFsbF9hY2Nlc3MuanNvblxcXFwuXFxcXC5cXFxcLlxcXFxuJFwiKX0gfSxcbiAgICB7IGRhdGE6IFwic2FtcGxlcy9hbGxfYWNjZXNzLmpzb25cIixcbiAgICAgIGV4cGVjdDoge291dDogL14kLywgZXJyOiAvYm9sdDogQ2Fubm90IG92ZXJ3cml0ZS99IH0sXG5cbiAgICAvLyBBcmd1bWVudCBlcnJvcnNcbiAgICB7IGRhdGE6IFwiLS1vdXRwdXRcIixcbiAgICAgIGV4cGVjdDoge291dDogL14kLywgZXJyOiAvXmJvbHQ6IE1pc3Npbmcgb3V0cHV0IGZpbGUgbmFtZS99IH0sXG4gICAgeyBkYXRhOiBcIm5vc3VjaGZpbGVcIixcbiAgICAgIGV4cGVjdDoge291dDogL14kLywgZXJyOiAvYm9sdDogQ291bGQgbm90IHJlYWQgZmlsZTogbm9zdWNoZmlsZS5ib2x0L30gfSxcbiAgICB7IGRhdGE6IFwidHdvIGZpbGVzXCIsXG4gICAgICBleHBlY3Q6IHtvdXQ6IC9eJC8sIGVycjogL2JvbHQ6IENhbiBvbmx5IGNvbXBpbGUgYSBzaW5nbGUgZmlsZS99IH0sXG4gIF07XG5cbiAgaGVscGVyLmRhdGFEcml2ZW5UZXN0KHRlc3RzLCBmdW5jdGlvbihkYXRhLCBleHBlY3QpIHtcbiAgICByZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24ocmVzb2x2ZSwgcmVqZWN0KSB7XG4gICAgICBsZXQgYXJnczogc3RyaW5nO1xuXG4gICAgICBpZiAodHlwZW9mKGRhdGEpID09PSAnc3RyaW5nJykge1xuICAgICAgICBhcmdzID0gZGF0YTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGFyZ3MgPSBkYXRhLmFyZ3MgfHwgJyc7XG4gICAgICB9XG4gICAgICBsZXQgY2hpbGQgPSBwcm9jLmV4ZWMoJ2Jpbi9maXJlYmFzZS1ib2x0ICcgKyBhcmdzLCBmdW5jdGlvbihlcnJvciwgc3Rkb3V0LCBzdGRlcnIpIHtcbiAgICAgICAgaWYgKGV4cGVjdC5lcnIpIHtcbiAgICAgICAgICBhc3NlcnQuaXNUcnVlKGV4cGVjdC5lcnIudGVzdChzdGRlcnIpLCBcIlVuZXhwZWN0ZWQgbWVzc2FnZTogJ1wiICsgc3RkZXJyICsgXCInXCIpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChleHBlY3Qub3V0KSB7XG4gICAgICAgICAgYXNzZXJ0LmlzVHJ1ZShleHBlY3Qub3V0LnRlc3Qoc3Rkb3V0KSwgXCJVbmV4cGVjdGVkIG91dHB1dDogJ1wiICsgc3Rkb3V0ICsgXCInXCIpO1xuICAgICAgICB9XG4gICAgICAgIHJlc29sdmUoKTtcbiAgICAgIH0pO1xuICAgICAgaWYgKGRhdGEuc3RkaW4pIHtcbiAgICAgICAgY2hpbGQuc3RkaW4ud3JpdGUoZGF0YS5zdGRpbik7XG4gICAgICAgIGNoaWxkLnN0ZGluLmVuZCgpO1xuICAgICAgfVxuICAgIH0pO1xuICB9KTtcbn0pO1xuIl19
//# sourceMappingURL=data:application/json;charset=utf8;base64,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LENBQUMsQ0FBQztJQUNMLENBQUMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyxDQUFDLENBQUMiLCJmaWxlIjoidGVzdC9jbGktdGVzdC5qcyIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBDb3B5cmlnaHQgMjAxNSBHb29nbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuaW1wb3J0IHthc3NlcnR9IGZyb20gJ2NoYWknO1xuaW1wb3J0ICogYXMgaGVscGVyIGZyb20gJy4vdGVzdC1oZWxwZXInO1xuaW1wb3J0ICogYXMgcHJvYyBmcm9tICdjaGlsZF9wcm9jZXNzJztcbmltcG9ydCAqIGFzIGZzIGZyb20gJ2ZzJztcblxudmFyIFRNUF9ESVIgPSAndG1wLyc7XG5cbnN1aXRlKFwiZmlyZWJhc2UtYm9sdCBDTElcIiwgZnVuY3Rpb24oKSB7XG4gIHN1aXRlU2V0dXAoKCkgPT4ge1xuICAgIHRyeSB7XG4gICAgICBmcy5ta2RpclN5bmMoVE1QX0RJUik7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgLy8gZG8gbm90aGluZ1xuICAgIH1cbiAgfSk7XG5cbiAgdmFyIHRlc3RzID0gW1xuICAgIC8vIFNpbXBsZSBvcHRpb25zIHRlc3RzLlxuICAgIHsgZGF0YTogXCItLWhlbHBcIixcbiAgICAgIGV4cGVjdDoge291dDogL14kLywgZXJyOiAvaGVscGZ1bCBtZXNzYWdlL30gfSxcbiAgICB7IGRhdGE6IFwiLS1oXCIsXG4gICAgICBleHBlY3Q6IHtvdXQ6IC9eJC8sIGVycjogL2hlbHBmdWwgbWVzc2FnZS99IH0sXG4gICAgeyBkYXRhOiBcIi0tdmVyc2lvblwiLFxuICAgICAgZXhwZWN0OiB7b3V0OiAvXkZpcmViYXNlIEJvbHQgdlxcZCtcXC5cXGQrXFwuXFxkK1xcbiQvLCBlcnI6IC9eJC99IH0sXG4gICAgeyBkYXRhOiBcIi0tdlwiLFxuICAgICAgZXhwZWN0OiB7b3V0OiAvXkZpcmViYXNlIEJvbHQgdlxcZCtcXC5cXGQrXFwuXFxkK1xcbiQvLCBlcnI6IC9eJC99IH0sXG5cbiAgICAvLyBSZWFkaW5nIGZyb20gc3RkaW5cbiAgICB7IGxhYmVsOiBcInN0ZGluIC0+IHN0ZG91dFwiLFxuICAgICAgZGF0YTogeyBzdGRpbjogXCJwYXRoIC8gaXMgU3RyaW5nO1wiIH0sXG4gICAgICBleHBlY3Q6IHtvdXQ6IC9uZXdEYXRhXFwuaXNTdHJpbmcvLCBlcnI6IC9eJC99IH0sXG4gICAgeyBsYWJlbDogXCJzdGRpbiAtPiBmaWxlXCIsXG4gICAgICBkYXRhOiB7IHN0ZGluOiBcInBhdGggLyBpcyBTdHJpbmc7XCIsIGFyZ3M6IFwiLS1vIFwiICsgVE1QX0RJUiArIFwidGVzdFwiIH0sXG4gICAgICBleHBlY3Q6IHtvdXQ6IC9eJC8sIGVycjogbmV3IFJlZ0V4cChcIl5ib2x0OiBHZW5lcmF0aW5nIFwiICsgVE1QX0RJUiArIFwidGVzdFwiKX0gfSxcblxuICAgIC8vIFJlYWRpbmcgZnJvbSBhIGZpbGVcbiAgICB7IGRhdGE6IFwic2FtcGxlcy9hbGxfYWNjZXNzXCIsXG4gICAgICBleHBlY3Q6IHtvdXQ6IC9eJC8sIGVycjogL15ib2x0OiBHZW5lcmF0aW5nIHNhbXBsZXNcXC9hbGxfYWNjZXNzLmpzb25cXC5cXC5cXC5cXG4kL30gfSxcbiAgICB7IGRhdGE6IFwic2FtcGxlcy9hbGxfYWNjZXNzLmJvbHRcIixcbiAgICAgIGV4cGVjdDoge291dDogL14kLywgZXJyOiAvXmJvbHQ6IEdlbmVyYXRpbmcgc2FtcGxlc1xcL2FsbF9hY2Nlc3MuanNvblxcLlxcLlxcLlxcbiQvfSB9LFxuICAgIHsgZGF0YTogXCJzYW1wbGVzL2FsbF9hY2Nlc3MgLS1vdXRwdXQgXCIgKyBUTVBfRElSICsgXCJhbGxfYWNjZXNzXCIsXG4gICAgICBleHBlY3Q6IHtvdXQ6IC9eJC8sIGVycjogbmV3IFJlZ0V4cChcIl5ib2x0OiBHZW5lcmF0aW5nIFwiICsgVE1QX0RJUiArIFwiYWxsX2FjY2Vzcy5qc29uXFxcXC5cXFxcLlxcXFwuXFxcXG4kXCIpfSB9LFxuICAgIHsgZGF0YTogXCJzYW1wbGVzL2FsbF9hY2Nlc3MuanNvblwiLFxuICAgICAgZXhwZWN0OiB7b3V0OiAvXiQvLCBlcnI6IC9ib2x0OiBDYW5ub3Qgb3ZlcndyaXRlL30gfSxcblxuICAgIC8vIEFyZ3VtZW50IGVycm9yc1xuICAgIHsgZGF0YTogXCItLW91dHB1dFwiLFxuICAgICAgZXhwZWN0OiB7b3V0OiAvXiQvLCBlcnI6IC9eYm9sdDogTWlzc2luZyBvdXRwdXQgZmlsZSBuYW1lL30gfSxcbiAgICB7IGRhdGE6IFwibm9zdWNoZmlsZVwiLFxuICAgICAgZXhwZWN0OiB7b3V0OiAvXiQvLCBlcnI6IC9ib2x0OiBDb3VsZCBub3QgcmVhZCBmaWxlOiBub3N1Y2hmaWxlLmJvbHQvfSB9LFxuICAgIHsgZGF0YTogXCJ0d28gZmlsZXNcIixcbiAgICAgIGV4cGVjdDoge291dDogL14kLywgZXJyOiAvYm9sdDogQ2FuIG9ubHkgY29tcGlsZSBhIHNpbmdsZSBmaWxlL30gfSxcbiAgXTtcblxuICBoZWxwZXIuZGF0YURyaXZlblRlc3QodGVzdHMsIGZ1bmN0aW9uKGRhdGEsIGV4cGVjdCkge1xuICAgIHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbihyZXNvbHZlLCByZWplY3QpIHtcbiAgICAgIGxldCBhcmdzOiBzdHJpbmc7XG5cbiAgICAgIGlmICh0eXBlb2YoZGF0YSkgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgIGFyZ3MgPSBkYXRhO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgYXJncyA9IGRhdGEuYXJncyB8fCAnJztcbiAgICAgIH1cbiAgICAgIGxldCBjaGlsZCA9IHByb2MuZXhlYygnYmluL2ZpcmViYXNlLWJvbHQgJyArIGFyZ3MsIGZ1bmN0aW9uKGVycm9yLCBzdGRvdXQsIHN0ZGVycikge1xuICAgICAgICBpZiAoZXhwZWN0LmVycikge1xuICAgICAgICAgIGFzc2VydC5pc1RydWUoZXhwZWN0LmVyci50ZXN0KHN0ZGVyciksIFwiVW5leHBlY3RlZCBtZXNzYWdlOiAnXCIgKyBzdGRlcnIgKyBcIidcIik7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGV4cGVjdC5vdXQpIHtcbiAgICAgICAgICBhc3NlcnQuaXNUcnVlKGV4cGVjdC5vdXQudGVzdChzdGRvdXQpLCBcIlVuZXhwZWN0ZWQgb3V0cHV0OiAnXCIgKyBzdGRvdXQgKyBcIidcIik7XG4gICAgICAgIH1cbiAgICAgICAgcmVzb2x2ZSgpO1xuICAgICAgfSk7XG4gICAgICBpZiAoZGF0YS5zdGRpbikge1xuICAgICAgICBjaGlsZC5zdGRpbi53cml0ZShkYXRhLnN0ZGluKTtcbiAgICAgICAgY2hpbGQuc3RkaW4uZW5kKCk7XG4gICAgICB9XG4gICAgfSk7XG4gIH0pO1xufSk7XG4iXX0=
"use strict";
exports.__esModule = true;
/*

@@ -17,3 +18,3 @@ * Copyright 2015 Google Inc. All Rights Reserved.

*/
var simulator_1 = require('../simulator');
var simulator_1 = require("../simulator");
var secrets = require('../../auth-secrets');

@@ -101,2 +102,2 @@ simulator_1.rulesSuite("Create, Update, and Delete", function (test) {

//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInRlc3QvY3JlYXRlLXVwZGF0ZS1kZWxldGUtdGVzdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUE7Ozs7Ozs7Ozs7Ozs7O0dBY0c7QUFDSCwwQkFBeUIsY0FBYyxDQUFDLENBQUE7QUFDeEMsSUFBSSxPQUFPLEdBQUcsT0FBTyxDQUFDLG9CQUFvQixDQUFDLENBQUM7QUFFNUMsc0JBQVUsQ0FBQyw0QkFBNEIsRUFBRSxVQUFTLElBQUk7SUFDcEQsSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsR0FBRyxFQUFFLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUMzQyxJQUFJLENBQUMsS0FBSyxDQUFDLDhCQUE4QixDQUFDLENBQUM7SUFDM0MsSUFBSSxHQUFHLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQztJQUVuQixJQUFJLENBQUMsUUFBUSxFQUFFLFVBQUMsS0FBSztRQUNuQixLQUFLO2FBQ0YsRUFBRSxDQUFDLFFBQVEsR0FBRyxHQUFHLENBQUMsTUFBTSxDQUFDLEdBQUcsU0FBUyxDQUFDO2FBQ3RDLEtBQUssQ0FBQyxTQUFTLENBQUM7YUFDaEIsUUFBUSxDQUFDLG9CQUFvQixDQUFDO2FBRTlCLEtBQUssQ0FBQyxTQUFTLENBQUM7YUFDaEIsS0FBSyxDQUFDLG9CQUFvQixDQUFDO2FBRTNCLEtBQUssQ0FBQyxJQUFJLENBQUM7YUFDWCxLQUFLLENBQUMsb0JBQW9CLENBQUM7YUFFM0IsRUFBRSxDQUFDLE1BQU0sQ0FBQzthQUVWLEtBQUssQ0FBQyxlQUFlLENBQUM7YUFDdEIsS0FBSyxDQUFDLHFCQUFxQixDQUFDO2FBRTVCLEtBQUssQ0FBQyxJQUFJLENBQUM7YUFDWCxLQUFLLENBQUMscUJBQXFCLENBQUMsQ0FDOUI7SUFDSCxDQUFDLENBQUMsQ0FBQztJQUVILElBQUksQ0FBQyxRQUFRLEVBQUUsVUFBQyxLQUFLO1FBQ25CLEtBQUs7YUFDRixFQUFFLENBQUMsUUFBUSxHQUFHLEdBQUcsQ0FBQyxNQUFNLENBQUMsR0FBRyxTQUFTLENBQUM7YUFDdEMsRUFBRSxDQUFDLE1BQU0sQ0FBQzthQUNWLEtBQUssQ0FBQyxTQUFTLENBQUM7YUFDaEIsS0FBSyxDQUFDLHFCQUFxQixDQUFDO2FBRTVCLEVBQUUsQ0FBQyxPQUFPLENBQUM7YUFDWCxLQUFLLENBQUMsU0FBUyxDQUFDO2FBQ2hCLFFBQVEsQ0FBQyxtQkFBbUIsQ0FBQzthQUU3QixFQUFFLENBQUMsTUFBTSxDQUFDO2FBRVYsS0FBSyxDQUFDLFNBQVMsQ0FBQzthQUNoQixRQUFRLENBQUMsb0JBQW9CLENBQUM7YUFFOUIsS0FBSyxDQUFDLElBQUksQ0FBQzthQUNYLEtBQUssQ0FBQyxvQkFBb0IsQ0FBQzthQUUzQixFQUFFLENBQUMsTUFBTSxDQUFDO2FBQ1YsS0FBSyxDQUFDLGVBQWUsQ0FBQzthQUN0QixRQUFRLENBQUMsbUJBQW1CLENBQUM7YUFFN0IsS0FBSyxDQUFDLElBQUksQ0FBQzthQUNYLEtBQUssQ0FBQyxxQkFBcUIsQ0FBQyxDQUM5QjtJQUNILENBQUMsQ0FBQyxDQUFDO0lBRUgsSUFBSSxDQUFDLFFBQVEsRUFBRSxVQUFDLEtBQUs7UUFDbkIsS0FBSzthQUNGLEVBQUUsQ0FBQyxRQUFRLEdBQUcsR0FBRyxDQUFDLE1BQU0sQ0FBQyxHQUFHLFNBQVMsQ0FBQzthQUN0QyxFQUFFLENBQUMsT0FBTyxDQUFDO2FBQ1gsS0FBSyxDQUFDLFNBQVMsQ0FBQzthQUNoQixRQUFRLENBQUMsbUJBQW1CLENBQUM7YUFFN0IsRUFBRSxDQUFDLE1BQU0sQ0FBQzthQUVWLEtBQUssQ0FBQyxTQUFTLENBQUM7YUFDaEIsS0FBSyxDQUFDLHNCQUFzQixDQUFDO2FBRTdCLEtBQUssQ0FBQyxJQUFJLENBQUM7YUFDWCxRQUFRLENBQUMsb0JBQW9CLENBQUM7YUFFOUIsRUFBRSxDQUFDLE1BQU0sQ0FBQzthQUNWLEtBQUssQ0FBQyxlQUFlLENBQUM7YUFDdEIsS0FBSyxDQUFDLHFCQUFxQixDQUFDO2FBRTVCLEVBQUUsQ0FBQyxPQUFPLENBQUM7YUFDWCxLQUFLLENBQUMsU0FBUyxDQUFDO2FBRWhCLEVBQUUsQ0FBQyxNQUFNLENBQUM7YUFFVixLQUFLLENBQUMsZUFBZSxDQUFDO2FBQ3RCLEtBQUssQ0FBQyxxQkFBcUIsQ0FBQzthQUU1QixLQUFLLENBQUMsSUFBSSxDQUFDO2FBQ1gsUUFBUSxDQUFDLG1CQUFtQixDQUFDLENBQy9CO0lBQ0gsQ0FBQyxDQUFDLENBQUM7SUFFSCxJQUFJLENBQUMseUJBQXlCLEVBQUUsVUFBQyxLQUFLO1FBQ3BDLEtBQUs7YUFDRixFQUFFLENBQUMsUUFBUSxHQUFHLEdBQUcsQ0FBQyxNQUFNLENBQUMsR0FBRyxzQkFBc0IsQ0FBQzthQUNuRCxFQUFFLENBQUMsTUFBTSxDQUFDO2FBQ1YsS0FBSyxDQUFDLFNBQVMsQ0FBQzthQUNoQixLQUFLLENBQUMsc0JBQXNCLENBQUM7YUFFN0IsRUFBRSxDQUFDLE1BQU0sQ0FBQzthQUNWLEtBQUssQ0FBQyxTQUFTLENBQUM7YUFDaEIsUUFBUSxDQUFDLG1CQUFtQixDQUFDO2FBRTdCLEVBQUUsQ0FBQyxNQUFNLENBQUM7YUFFVixLQUFLLENBQUMsU0FBUyxDQUFDO2FBQ2hCLFFBQVEsQ0FBQyxvQkFBb0IsQ0FBQzthQUU5QixLQUFLLENBQUMsSUFBSSxDQUFDO2FBQ1gsS0FBSyxDQUFDLHNCQUFzQixDQUFDO2FBRTdCLEVBQUUsQ0FBQyxNQUFNLENBQUM7YUFDVixLQUFLLENBQUMsSUFBSSxDQUFDO2FBQ1gsUUFBUSxDQUFDLG1CQUFtQixDQUFDLENBQy9CO0lBQ0gsQ0FBQyxDQUFDLENBQUM7QUFDTCxDQUFDLENBQUMsQ0FBQyIsImZpbGUiOiJ0ZXN0L2NyZWF0ZS11cGRhdGUtZGVsZXRlLXRlc3QuanMiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogQ29weXJpZ2h0IDIwMTUgR29vZ2xlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cbmltcG9ydCB7cnVsZXNTdWl0ZX0gZnJvbSAnLi4vc2ltdWxhdG9yJztcbnZhciBzZWNyZXRzID0gcmVxdWlyZSgnLi4vLi4vYXV0aC1zZWNyZXRzJyk7XG5cbnJ1bGVzU3VpdGUoXCJDcmVhdGUsIFVwZGF0ZSwgYW5kIERlbGV0ZVwiLCBmdW5jdGlvbih0ZXN0KSB7XG4gIHRlc3QuZGF0YWJhc2Uoc2VjcmV0cy5BUFAsIHNlY3JldHMuU0VDUkVUKTtcbiAgdGVzdC5ydWxlcygnc2FtcGxlcy9jcmVhdGUtdXBkYXRlLWRlbGV0ZScpO1xuICB2YXIgdWlkID0gdGVzdC51aWQ7XG5cbiAgdGVzdChcIkNyZWF0ZVwiLCAocnVsZXMpID0+IHtcbiAgICBydWxlc1xuICAgICAgLmF0KCcvZG9jcy8nICsgdWlkKCdtaWtlJykgKyAnL2NyZWF0ZScpXG4gICAgICAud3JpdGUoJ2NyZWF0ZWQnKVxuICAgICAgLnN1Y2NlZWRzKFwiQW55b25lIGNhbiBjcmVhdGUuXCIpXG5cbiAgICAgIC53cml0ZSgndXBkYXRlZCcpXG4gICAgICAuZmFpbHMoXCJOby1vbmUgY2FuIHVwZGF0ZS5cIilcblxuICAgICAgLndyaXRlKG51bGwpXG4gICAgICAuZmFpbHMoXCJOby1vbmUgY2FuIGRlbGV0ZS5cIilcblxuICAgICAgLmFzKCdtaWtlJylcblxuICAgICAgLndyaXRlKCdvd25lci11cGRhdGVkJylcbiAgICAgIC5mYWlscyhcIk93bmVyIGNhbid0IHVwZGF0ZS5cIilcblxuICAgICAgLndyaXRlKG51bGwpXG4gICAgICAuZmFpbHMoXCJPd25lciBjYW4ndCBkZWxldGUuXCIpXG4gICAgO1xuICB9KTtcblxuICB0ZXN0KFwiVXBkYXRlXCIsIChydWxlcykgPT4ge1xuICAgIHJ1bGVzXG4gICAgICAuYXQoJy9kb2NzLycgKyB1aWQoJ21pa2UnKSArICcvdXBkYXRlJylcbiAgICAgIC5hcygnbWlrZScpXG4gICAgICAud3JpdGUoJ2NyZWF0ZWQnKVxuICAgICAgLmZhaWxzKFwiT3duZXIgY2FuJ3QgY3JlYXRlLlwiKVxuXG4gICAgICAuYXMoJ2FkbWluJylcbiAgICAgIC53cml0ZSgnY3JlYXRlZCcpXG4gICAgICAuc3VjY2VlZHMoXCJBZG1pbiBjYW4gY3JlYXRlLlwiKVxuXG4gICAgICAuYXMoJ2Fub24nKVxuXG4gICAgICAud3JpdGUoJ3VwZGF0ZWQnKVxuICAgICAgLnN1Y2NlZWRzKFwiQW55b25lIGNhbiB1cGRhdGUuXCIpXG5cbiAgICAgIC53cml0ZShudWxsKVxuICAgICAgLmZhaWxzKFwiTm8tb25lIGNhbiBkZWxldGUuXCIpXG5cbiAgICAgIC5hcygnbWlrZScpXG4gICAgICAud3JpdGUoJ293bmVyLXVwZGF0ZWQnKVxuICAgICAgLnN1Y2NlZWRzKFwiT3duZXIgY2FuIHVwZGF0ZS5cIilcblxuICAgICAgLndyaXRlKG51bGwpXG4gICAgICAuZmFpbHMoXCJPd25lciBjYW4ndCBkZWxldGUuXCIpXG4gICAgO1xuICB9KTtcblxuICB0ZXN0KFwiRGVsZXRlXCIsIChydWxlcykgPT4ge1xuICAgIHJ1bGVzXG4gICAgICAuYXQoJy9kb2NzLycgKyB1aWQoJ21pa2UnKSArICcvZGVsZXRlJylcbiAgICAgIC5hcygnYWRtaW4nKVxuICAgICAgLndyaXRlKCdjcmVhdGVkJylcbiAgICAgIC5zdWNjZWVkcyhcIkFkbWluIGNhbiBjcmVhdGUuXCIpXG5cbiAgICAgIC5hcygnYW5vbicpXG5cbiAgICAgIC53cml0ZSgndXBkYXRlZCcpXG4gICAgICAuZmFpbHMoXCJBbnlvbmUgY2FuJ3QgdXBkYXRlLlwiKVxuXG4gICAgICAud3JpdGUobnVsbClcbiAgICAgIC5zdWNjZWVkcyhcIkFueW9uZSBjYW4gZGVsZXRlLlwiKVxuXG4gICAgICAuYXMoJ21pa2UnKVxuICAgICAgLndyaXRlKCdvd25lci1jcmVhdGVkJylcbiAgICAgIC5mYWlscyhcIk93bmVyIGNhbid0IGNyZWF0ZS5cIilcblxuICAgICAgLmFzKCdhZG1pbicpXG4gICAgICAud3JpdGUoJ2NyZWF0ZWQnKVxuXG4gICAgICAuYXMoJ21pa2UnKVxuXG4gICAgICAud3JpdGUoJ293bmVyLXVwZGF0ZWQnKVxuICAgICAgLmZhaWxzKFwiT3duZXIgY2FuJ3QgdXBkYXRlLlwiKVxuXG4gICAgICAud3JpdGUobnVsbClcbiAgICAgIC5zdWNjZWVkcyhcIk93bmVyIGNhbiBkZWxldGUuXCIpXG4gICAgO1xuICB9KTtcblxuICB0ZXN0KFwiT3duZXIgQ3JlYXRlIGFuZCBEZWxldGVcIiwgKHJ1bGVzKSA9PiB7XG4gICAgcnVsZXNcbiAgICAgIC5hdCgnL2RvY3MvJyArIHVpZCgnbWlrZScpICsgJy9vd25lci1jcmVhdGUtZGVsZXRlJylcbiAgICAgIC5hcygnYW5vbicpXG4gICAgICAud3JpdGUoJ2NyZWF0ZWQnKVxuICAgICAgLmZhaWxzKFwiQW55b25lIGNhbid0IGNyZWF0ZS5cIilcblxuICAgICAgLmFzKCdtaWtlJylcbiAgICAgIC53cml0ZSgnY3JlYXRlZCcpXG4gICAgICAuc3VjY2VlZHMoXCJPd25lciBjYW4gY3JlYXRlLlwiKVxuXG4gICAgICAuYXMoJ2Fub24nKVxuXG4gICAgICAud3JpdGUoJ3VwZGF0ZWQnKVxuICAgICAgLnN1Y2NlZWRzKFwiQW55b25lIGNhbiB1cGRhdGUuXCIpXG5cbiAgICAgIC53cml0ZShudWxsKVxuICAgICAgLmZhaWxzKFwiQW55b25lIGNhbid0IGRlbGV0ZS5cIilcblxuICAgICAgLmFzKCdtaWtlJylcbiAgICAgIC53cml0ZShudWxsKVxuICAgICAgLnN1Y2NlZWRzKFwiT3duZXIgY2FuIGRlbGV0ZS5cIilcbiAgICA7XG4gIH0pO1xufSk7XG4iXX0=
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInRlc3QvY3JlYXRlLXVwZGF0ZS1kZWxldGUtdGVzdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBOzs7Ozs7Ozs7Ozs7OztHQWNHO0FBQ0gsMENBQXdDO0FBQ3hDLElBQUksT0FBTyxHQUFHLE9BQU8sQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO0FBRTVDLHNCQUFVLENBQUMsNEJBQTRCLEVBQUUsVUFBUyxJQUFJO0lBQ3BELElBQUksQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLEdBQUcsRUFBRSxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDM0MsSUFBSSxDQUFDLEtBQUssQ0FBQyw4QkFBOEIsQ0FBQyxDQUFDO0lBQzNDLElBQUksR0FBRyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUM7SUFFbkIsSUFBSSxDQUFDLFFBQVEsRUFBRSxVQUFDLEtBQUs7UUFDbkIsS0FBSzthQUNGLEVBQUUsQ0FBQyxRQUFRLEdBQUcsR0FBRyxDQUFDLE1BQU0sQ0FBQyxHQUFHLFNBQVMsQ0FBQzthQUN0QyxLQUFLLENBQUMsU0FBUyxDQUFDO2FBQ2hCLFFBQVEsQ0FBQyxvQkFBb0IsQ0FBQzthQUU5QixLQUFLLENBQUMsU0FBUyxDQUFDO2FBQ2hCLEtBQUssQ0FBQyxvQkFBb0IsQ0FBQzthQUUzQixLQUFLLENBQUMsSUFBSSxDQUFDO2FBQ1gsS0FBSyxDQUFDLG9CQUFvQixDQUFDO2FBRTNCLEVBQUUsQ0FBQyxNQUFNLENBQUM7YUFFVixLQUFLLENBQUMsZUFBZSxDQUFDO2FBQ3RCLEtBQUssQ0FBQyxxQkFBcUIsQ0FBQzthQUU1QixLQUFLLENBQUMsSUFBSSxDQUFDO2FBQ1gsS0FBSyxDQUFDLHFCQUFxQixDQUFDLENBQzlCO0lBQ0gsQ0FBQyxDQUFDLENBQUM7SUFFSCxJQUFJLENBQUMsUUFBUSxFQUFFLFVBQUMsS0FBSztRQUNuQixLQUFLO2FBQ0YsRUFBRSxDQUFDLFFBQVEsR0FBRyxHQUFHLENBQUMsTUFBTSxDQUFDLEdBQUcsU0FBUyxDQUFDO2FBQ3RDLEVBQUUsQ0FBQyxNQUFNLENBQUM7YUFDVixLQUFLLENBQUMsU0FBUyxDQUFDO2FBQ2hCLEtBQUssQ0FBQyxxQkFBcUIsQ0FBQzthQUU1QixFQUFFLENBQUMsT0FBTyxDQUFDO2FBQ1gsS0FBSyxDQUFDLFNBQVMsQ0FBQzthQUNoQixRQUFRLENBQUMsbUJBQW1CLENBQUM7YUFFN0IsRUFBRSxDQUFDLE1BQU0sQ0FBQzthQUVWLEtBQUssQ0FBQyxTQUFTLENBQUM7YUFDaEIsUUFBUSxDQUFDLG9CQUFvQixDQUFDO2FBRTlCLEtBQUssQ0FBQyxJQUFJLENBQUM7YUFDWCxLQUFLLENBQUMsb0JBQW9CLENBQUM7YUFFM0IsRUFBRSxDQUFDLE1BQU0sQ0FBQzthQUNWLEtBQUssQ0FBQyxlQUFlLENBQUM7YUFDdEIsUUFBUSxDQUFDLG1CQUFtQixDQUFDO2FBRTdCLEtBQUssQ0FBQyxJQUFJLENBQUM7YUFDWCxLQUFLLENBQUMscUJBQXFCLENBQUMsQ0FDOUI7SUFDSCxDQUFDLENBQUMsQ0FBQztJQUVILElBQUksQ0FBQyxRQUFRLEVBQUUsVUFBQyxLQUFLO1FBQ25CLEtBQUs7YUFDRixFQUFFLENBQUMsUUFBUSxHQUFHLEdBQUcsQ0FBQyxNQUFNLENBQUMsR0FBRyxTQUFTLENBQUM7YUFDdEMsRUFBRSxDQUFDLE9BQU8sQ0FBQzthQUNYLEtBQUssQ0FBQyxTQUFTLENBQUM7YUFDaEIsUUFBUSxDQUFDLG1CQUFtQixDQUFDO2FBRTdCLEVBQUUsQ0FBQyxNQUFNLENBQUM7YUFFVixLQUFLLENBQUMsU0FBUyxDQUFDO2FBQ2hCLEtBQUssQ0FBQyxzQkFBc0IsQ0FBQzthQUU3QixLQUFLLENBQUMsSUFBSSxDQUFDO2FBQ1gsUUFBUSxDQUFDLG9CQUFvQixDQUFDO2FBRTlCLEVBQUUsQ0FBQyxNQUFNLENBQUM7YUFDVixLQUFLLENBQUMsZUFBZSxDQUFDO2FBQ3RCLEtBQUssQ0FBQyxxQkFBcUIsQ0FBQzthQUU1QixFQUFFLENBQUMsT0FBTyxDQUFDO2FBQ1gsS0FBSyxDQUFDLFNBQVMsQ0FBQzthQUVoQixFQUFFLENBQUMsTUFBTSxDQUFDO2FBRVYsS0FBSyxDQUFDLGVBQWUsQ0FBQzthQUN0QixLQUFLLENBQUMscUJBQXFCLENBQUM7YUFFNUIsS0FBSyxDQUFDLElBQUksQ0FBQzthQUNYLFFBQVEsQ0FBQyxtQkFBbUIsQ0FBQyxDQUMvQjtJQUNILENBQUMsQ0FBQyxDQUFDO0lBRUgsSUFBSSxDQUFDLHlCQUF5QixFQUFFLFVBQUMsS0FBSztRQUNwQyxLQUFLO2FBQ0YsRUFBRSxDQUFDLFFBQVEsR0FBRyxHQUFHLENBQUMsTUFBTSxDQUFDLEdBQUcsc0JBQXNCLENBQUM7YUFDbkQsRUFBRSxDQUFDLE1BQU0sQ0FBQzthQUNWLEtBQUssQ0FBQyxTQUFTLENBQUM7YUFDaEIsS0FBSyxDQUFDLHNCQUFzQixDQUFDO2FBRTdCLEVBQUUsQ0FBQyxNQUFNLENBQUM7YUFDVixLQUFLLENBQUMsU0FBUyxDQUFDO2FBQ2hCLFFBQVEsQ0FBQyxtQkFBbUIsQ0FBQzthQUU3QixFQUFFLENBQUMsTUFBTSxDQUFDO2FBRVYsS0FBSyxDQUFDLFNBQVMsQ0FBQzthQUNoQixRQUFRLENBQUMsb0JBQW9CLENBQUM7YUFFOUIsS0FBSyxDQUFDLElBQUksQ0FBQzthQUNYLEtBQUssQ0FBQyxzQkFBc0IsQ0FBQzthQUU3QixFQUFFLENBQUMsTUFBTSxDQUFDO2FBQ1YsS0FBSyxDQUFDLElBQUksQ0FBQzthQUNYLFFBQVEsQ0FBQyxtQkFBbUIsQ0FBQyxDQUMvQjtJQUNILENBQUMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyxDQUFDLENBQUMiLCJmaWxlIjoidGVzdC9jcmVhdGUtdXBkYXRlLWRlbGV0ZS10ZXN0LmpzIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIENvcHlyaWdodCAyMDE1IEdvb2dsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5pbXBvcnQge3J1bGVzU3VpdGV9IGZyb20gJy4uL3NpbXVsYXRvcic7XG52YXIgc2VjcmV0cyA9IHJlcXVpcmUoJy4uLy4uL2F1dGgtc2VjcmV0cycpO1xuXG5ydWxlc1N1aXRlKFwiQ3JlYXRlLCBVcGRhdGUsIGFuZCBEZWxldGVcIiwgZnVuY3Rpb24odGVzdCkge1xuICB0ZXN0LmRhdGFiYXNlKHNlY3JldHMuQVBQLCBzZWNyZXRzLlNFQ1JFVCk7XG4gIHRlc3QucnVsZXMoJ3NhbXBsZXMvY3JlYXRlLXVwZGF0ZS1kZWxldGUnKTtcbiAgdmFyIHVpZCA9IHRlc3QudWlkO1xuXG4gIHRlc3QoXCJDcmVhdGVcIiwgKHJ1bGVzKSA9PiB7XG4gICAgcnVsZXNcbiAgICAgIC5hdCgnL2RvY3MvJyArIHVpZCgnbWlrZScpICsgJy9jcmVhdGUnKVxuICAgICAgLndyaXRlKCdjcmVhdGVkJylcbiAgICAgIC5zdWNjZWVkcyhcIkFueW9uZSBjYW4gY3JlYXRlLlwiKVxuXG4gICAgICAud3JpdGUoJ3VwZGF0ZWQnKVxuICAgICAgLmZhaWxzKFwiTm8tb25lIGNhbiB1cGRhdGUuXCIpXG5cbiAgICAgIC53cml0ZShudWxsKVxuICAgICAgLmZhaWxzKFwiTm8tb25lIGNhbiBkZWxldGUuXCIpXG5cbiAgICAgIC5hcygnbWlrZScpXG5cbiAgICAgIC53cml0ZSgnb3duZXItdXBkYXRlZCcpXG4gICAgICAuZmFpbHMoXCJPd25lciBjYW4ndCB1cGRhdGUuXCIpXG5cbiAgICAgIC53cml0ZShudWxsKVxuICAgICAgLmZhaWxzKFwiT3duZXIgY2FuJ3QgZGVsZXRlLlwiKVxuICAgIDtcbiAgfSk7XG5cbiAgdGVzdChcIlVwZGF0ZVwiLCAocnVsZXMpID0+IHtcbiAgICBydWxlc1xuICAgICAgLmF0KCcvZG9jcy8nICsgdWlkKCdtaWtlJykgKyAnL3VwZGF0ZScpXG4gICAgICAuYXMoJ21pa2UnKVxuICAgICAgLndyaXRlKCdjcmVhdGVkJylcbiAgICAgIC5mYWlscyhcIk93bmVyIGNhbid0IGNyZWF0ZS5cIilcblxuICAgICAgLmFzKCdhZG1pbicpXG4gICAgICAud3JpdGUoJ2NyZWF0ZWQnKVxuICAgICAgLnN1Y2NlZWRzKFwiQWRtaW4gY2FuIGNyZWF0ZS5cIilcblxuICAgICAgLmFzKCdhbm9uJylcblxuICAgICAgLndyaXRlKCd1cGRhdGVkJylcbiAgICAgIC5zdWNjZWVkcyhcIkFueW9uZSBjYW4gdXBkYXRlLlwiKVxuXG4gICAgICAud3JpdGUobnVsbClcbiAgICAgIC5mYWlscyhcIk5vLW9uZSBjYW4gZGVsZXRlLlwiKVxuXG4gICAgICAuYXMoJ21pa2UnKVxuICAgICAgLndyaXRlKCdvd25lci11cGRhdGVkJylcbiAgICAgIC5zdWNjZWVkcyhcIk93bmVyIGNhbiB1cGRhdGUuXCIpXG5cbiAgICAgIC53cml0ZShudWxsKVxuICAgICAgLmZhaWxzKFwiT3duZXIgY2FuJ3QgZGVsZXRlLlwiKVxuICAgIDtcbiAgfSk7XG5cbiAgdGVzdChcIkRlbGV0ZVwiLCAocnVsZXMpID0+IHtcbiAgICBydWxlc1xuICAgICAgLmF0KCcvZG9jcy8nICsgdWlkKCdtaWtlJykgKyAnL2RlbGV0ZScpXG4gICAgICAuYXMoJ2FkbWluJylcbiAgICAgIC53cml0ZSgnY3JlYXRlZCcpXG4gICAgICAuc3VjY2VlZHMoXCJBZG1pbiBjYW4gY3JlYXRlLlwiKVxuXG4gICAgICAuYXMoJ2Fub24nKVxuXG4gICAgICAud3JpdGUoJ3VwZGF0ZWQnKVxuICAgICAgLmZhaWxzKFwiQW55b25lIGNhbid0IHVwZGF0ZS5cIilcblxuICAgICAgLndyaXRlKG51bGwpXG4gICAgICAuc3VjY2VlZHMoXCJBbnlvbmUgY2FuIGRlbGV0ZS5cIilcblxuICAgICAgLmFzKCdtaWtlJylcbiAgICAgIC53cml0ZSgnb3duZXItY3JlYXRlZCcpXG4gICAgICAuZmFpbHMoXCJPd25lciBjYW4ndCBjcmVhdGUuXCIpXG5cbiAgICAgIC5hcygnYWRtaW4nKVxuICAgICAgLndyaXRlKCdjcmVhdGVkJylcblxuICAgICAgLmFzKCdtaWtlJylcblxuICAgICAgLndyaXRlKCdvd25lci11cGRhdGVkJylcbiAgICAgIC5mYWlscyhcIk93bmVyIGNhbid0IHVwZGF0ZS5cIilcblxuICAgICAgLndyaXRlKG51bGwpXG4gICAgICAuc3VjY2VlZHMoXCJPd25lciBjYW4gZGVsZXRlLlwiKVxuICAgIDtcbiAgfSk7XG5cbiAgdGVzdChcIk93bmVyIENyZWF0ZSBhbmQgRGVsZXRlXCIsIChydWxlcykgPT4ge1xuICAgIHJ1bGVzXG4gICAgICAuYXQoJy9kb2NzLycgKyB1aWQoJ21pa2UnKSArICcvb3duZXItY3JlYXRlLWRlbGV0ZScpXG4gICAgICAuYXMoJ2Fub24nKVxuICAgICAgLndyaXRlKCdjcmVhdGVkJylcbiAgICAgIC5mYWlscyhcIkFueW9uZSBjYW4ndCBjcmVhdGUuXCIpXG5cbiAgICAgIC5hcygnbWlrZScpXG4gICAgICAud3JpdGUoJ2NyZWF0ZWQnKVxuICAgICAgLnN1Y2NlZWRzKFwiT3duZXIgY2FuIGNyZWF0ZS5cIilcblxuICAgICAgLmFzKCdhbm9uJylcblxuICAgICAgLndyaXRlKCd1cGRhdGVkJylcbiAgICAgIC5zdWNjZWVkcyhcIkFueW9uZSBjYW4gdXBkYXRlLlwiKVxuXG4gICAgICAud3JpdGUobnVsbClcbiAgICAgIC5mYWlscyhcIkFueW9uZSBjYW4ndCBkZWxldGUuXCIpXG5cbiAgICAgIC5hcygnbWlrZScpXG4gICAgICAud3JpdGUobnVsbClcbiAgICAgIC5zdWNjZWVkcyhcIk93bmVyIGNhbiBkZWxldGUuXCIpXG4gICAgO1xuICB9KTtcbn0pO1xuIl19
"use strict";
exports.__esModule = true;
/*

@@ -17,5 +18,5 @@ * Copyright 2015 Google Inc. All Rights Reserved.

*/
var rest = require('../firebase-rest');
var rest = require("../firebase-rest");
var secrets = require('../../auth-secrets');
var chai_1 = require('chai');
var chai_1 = require("chai");
var TEST_LOCATION = '/rest-test';

@@ -45,3 +46,3 @@ suite("Firebase REST Tests", function () {

{ location: 'boolean', value: false },
{ location: 'object', value: { this: 1, that: 'other' } },
{ location: 'object', value: { "this": 1, that: 'other' } },
{ location: 'TIMESTAMP', value: rest.TIMESTAMP },

@@ -57,4 +58,3 @@ ];

test("Invalid location", function () {
return client.get('../../illegal')
.catch(function (error) {
return client.get('../../illegal')["catch"](function (error) {
return true;

@@ -71,2 +71,2 @@ });

//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInRlc3QvZmlyZWJhc2UtcmVzdC10ZXN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTs7Ozs7Ozs7Ozs7Ozs7R0FjRztBQUNILElBQVksSUFBSSxXQUFNLGtCQUFrQixDQUFDLENBQUE7QUFDekMsSUFBSSxPQUFPLEdBQUcsT0FBTyxDQUFDLG9CQUFvQixDQUFDLENBQUM7QUFDNUMscUJBQXFCLE1BQU0sQ0FBQyxDQUFBO0FBRTVCLElBQUksYUFBYSxHQUFHLFlBQVksQ0FBQztBQUVqQyxLQUFLLENBQUMscUJBQXFCLEVBQUU7SUFDM0IsSUFBSSxNQUFNLEdBQUcsSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUUxQyxVQUFVLENBQUM7UUFDVCxJQUFJLFdBQVcsR0FBRyxJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLEdBQUcsRUFBRSxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDL0QsTUFBTSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQ3BCLElBQUksQ0FBQyxjQUFjLEVBQ25CO1lBQ0UsS0FBSyxFQUFFO2dCQUNMLE9BQU8sRUFBRSxJQUFJO2dCQUNiLFFBQVEsRUFBRSxLQUFLO2dCQUNmLFdBQVcsRUFBRTtvQkFDWCxRQUFRLEVBQUUsSUFBSTtpQkFDZjthQUNGO1NBQ0YsQ0FBQyxDQUFDO0lBQ1AsQ0FBQyxDQUFDLENBQUM7SUFFSCxJQUFJLENBQUMsZUFBZSxFQUFFO1FBQ3BCLE1BQU0sQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLGFBQWEsQ0FBQyxDQUFDO0lBQ25DLENBQUMsQ0FBQyxDQUFDO0lBRUgsSUFBSSxDQUFDLFlBQVksRUFBRTtRQUNqQixJQUFJLEtBQUssR0FBRztZQUNWLEVBQUUsUUFBUSxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUUsZUFBZSxFQUFFO1lBQzlDLEVBQUUsUUFBUSxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsR0FBRyxFQUFFO1lBQ25DLEVBQUUsUUFBUSxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFO1lBQ3RDLEVBQUUsUUFBUSxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFO1lBQ3JDLEVBQUUsUUFBUSxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUUsRUFBQyxJQUFJLEVBQUUsQ0FBQyxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUMsRUFBRTtZQUN2RCxFQUFFLFFBQVEsRUFBRSxXQUFXLEVBQUUsS0FBSyxFQUFFLElBQUksQ0FBQyxTQUFTLEVBQUU7U0FDakQsQ0FBQztRQUNGLElBQUksT0FBTyxHQUFzQixFQUFFLENBQUM7UUFDcEMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxLQUFLLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUM7WUFDdEMsSUFBSSxDQUFDLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ2pCLE9BQU8sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxhQUFhLEdBQUcsU0FBUyxHQUFHLENBQUMsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7UUFDNUUsQ0FBQztRQUNELE1BQU0sQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQzlCLENBQUMsQ0FBQyxDQUFDO0lBRUgsSUFBSSxDQUFDLGtCQUFrQixFQUFFO1FBQ3ZCLE1BQU0sQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLGVBQWUsQ0FBQzthQUMvQixLQUFLLENBQUMsVUFBUyxLQUFLO1lBQ25CLE1BQU0sQ0FBQyxJQUFJLENBQUM7UUFDZCxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUMsQ0FBQyxDQUFDO0lBRUgsSUFBSSxDQUFDLFFBQVEsRUFBRTtRQUNiLElBQUksR0FBRyxHQUFHLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztRQUNoQyxJQUFJLEdBQUcsR0FBRyxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7UUFDaEMsYUFBTSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBQzdCLGFBQU0sQ0FBQyxRQUFRLENBQUMsR0FBRyxFQUFFLEdBQUcsQ0FBQyxDQUFDO0lBQzVCLENBQUMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyxDQUFDLENBQUMiLCJmaWxlIjoidGVzdC9maXJlYmFzZS1yZXN0LXRlc3QuanMiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogQ29weXJpZ2h0IDIwMTUgR29vZ2xlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cbmltcG9ydCAqIGFzIHJlc3QgZnJvbSAnLi4vZmlyZWJhc2UtcmVzdCc7XG5sZXQgc2VjcmV0cyA9IHJlcXVpcmUoJy4uLy4uL2F1dGgtc2VjcmV0cycpO1xuaW1wb3J0IHthc3NlcnR9IGZyb20gJ2NoYWknO1xuXG5sZXQgVEVTVF9MT0NBVElPTiA9ICcvcmVzdC10ZXN0Jztcblxuc3VpdGUoXCJGaXJlYmFzZSBSRVNUIFRlc3RzXCIsIGZ1bmN0aW9uKCkge1xuICB2YXIgY2xpZW50ID0gbmV3IHJlc3QuQ2xpZW50KHNlY3JldHMuQVBQKTtcblxuICBzdWl0ZVNldHVwKGZ1bmN0aW9uKCkge1xuICAgIHZhciBhZG1pbkNsaWVudCA9IG5ldyByZXN0LkNsaWVudChzZWNyZXRzLkFQUCwgc2VjcmV0cy5TRUNSRVQpO1xuICAgIHJldHVybiBhZG1pbkNsaWVudC5wdXQoXG4gICAgICByZXN0LlJVTEVTX0xPQ0FUSU9OLFxuICAgICAge1xuICAgICAgICBydWxlczoge1xuICAgICAgICAgIFwiLnJlYWRcIjogdHJ1ZSxcbiAgICAgICAgICBcIi53cml0ZVwiOiBmYWxzZSxcbiAgICAgICAgICBcInJlc3QtdGVzdFwiOiB7XG4gICAgICAgICAgICBcIi53cml0ZVwiOiB0cnVlXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9KTtcbiAgfSk7XG5cbiAgdGVzdChcIlJlYWQgbG9jYXRpb25cIiwgZnVuY3Rpb24oKSB7XG4gICAgcmV0dXJuIGNsaWVudC5nZXQoVEVTVF9MT0NBVElPTik7XG4gIH0pO1xuXG4gIHRlc3QoXCJXcml0ZSBkYXRhXCIsIGZ1bmN0aW9uKCkge1xuICAgIHZhciB0ZXN0cyA9IFtcbiAgICAgIHsgbG9jYXRpb246ICdzdHJpbmcnLCB2YWx1ZTogJ0hlbGxvLCB3b3JsZC4nIH0sXG4gICAgICB7IGxvY2F0aW9uOiAnaW50ZWdlcicsIHZhbHVlOiAxMjMgfSxcbiAgICAgIHsgbG9jYXRpb246ICdudW1iZXInLCB2YWx1ZTogMTIzLjQ1NiB9LFxuICAgICAgeyBsb2NhdGlvbjogJ2Jvb2xlYW4nLCB2YWx1ZTogZmFsc2UgfSxcbiAgICAgIHsgbG9jYXRpb246ICdvYmplY3QnLCB2YWx1ZToge3RoaXM6IDEsIHRoYXQ6ICdvdGhlcid9IH0sXG4gICAgICB7IGxvY2F0aW9uOiAnVElNRVNUQU1QJywgdmFsdWU6IHJlc3QuVElNRVNUQU1QIH0sXG4gICAgXTtcbiAgICB2YXIgcmVzdWx0cyA9IDxQcm9taXNlPHN0cmluZz5bXT5bXTtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRlc3RzLmxlbmd0aDsgaSsrKSB7XG4gICAgICB2YXIgdCA9IHRlc3RzW2ldO1xuICAgICAgcmVzdWx0cy5wdXNoKGNsaWVudC5wdXQoVEVTVF9MT0NBVElPTiArICcvdHlwZXMvJyArIHQubG9jYXRpb24sIHQudmFsdWUpKTtcbiAgICB9XG4gICAgcmV0dXJuIFByb21pc2UuYWxsKHJlc3VsdHMpO1xuICB9KTtcblxuICB0ZXN0KFwiSW52YWxpZCBsb2NhdGlvblwiLCBmdW5jdGlvbigpIHtcbiAgICByZXR1cm4gY2xpZW50LmdldCgnLi4vLi4vaWxsZWdhbCcpXG4gICAgICAuY2F0Y2goZnVuY3Rpb24oZXJyb3IpIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9KTtcbiAgfSk7XG5cbiAgdGVzdChcIlB1c2hJRFwiLCBmdW5jdGlvbigpIHtcbiAgICBsZXQgaWQxID0gcmVzdC5nZW5lcmF0ZVB1c2hJRCgpO1xuICAgIGxldCBpZDIgPSByZXN0LmdlbmVyYXRlUHVzaElEKCk7XG4gICAgYXNzZXJ0LmVxdWFsKGlkMS5sZW5ndGgsIDIwKTtcbiAgICBhc3NlcnQubm90RXF1YWwoaWQxLCBpZDIpO1xuICB9KTtcbn0pO1xuIl19
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInRlc3QvZmlyZWJhc2UtcmVzdC10ZXN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUE7Ozs7Ozs7Ozs7Ozs7O0dBY0c7QUFDSCx1Q0FBeUM7QUFDekMsSUFBSSxPQUFPLEdBQUcsT0FBTyxDQUFDLG9CQUFvQixDQUFDLENBQUM7QUFDNUMsNkJBQTRCO0FBRTVCLElBQUksYUFBYSxHQUFHLFlBQVksQ0FBQztBQUVqQyxLQUFLLENBQUMscUJBQXFCLEVBQUU7SUFDM0IsSUFBSSxNQUFNLEdBQUcsSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUUxQyxVQUFVLENBQUM7UUFDVCxJQUFJLFdBQVcsR0FBRyxJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLEdBQUcsRUFBRSxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDL0QsT0FBTyxXQUFXLENBQUMsR0FBRyxDQUNwQixJQUFJLENBQUMsY0FBYyxFQUNuQjtZQUNFLEtBQUssRUFBRTtnQkFDTCxPQUFPLEVBQUUsSUFBSTtnQkFDYixRQUFRLEVBQUUsS0FBSztnQkFDZixXQUFXLEVBQUU7b0JBQ1gsUUFBUSxFQUFFLElBQUk7aUJBQ2Y7YUFDRjtTQUNGLENBQUMsQ0FBQztJQUNQLENBQUMsQ0FBQyxDQUFDO0lBRUgsSUFBSSxDQUFDLGVBQWUsRUFBRTtRQUNwQixPQUFPLE1BQU0sQ0FBQyxHQUFHLENBQUMsYUFBYSxDQUFDLENBQUM7SUFDbkMsQ0FBQyxDQUFDLENBQUM7SUFFSCxJQUFJLENBQUMsWUFBWSxFQUFFO1FBQ2pCLElBQUksS0FBSyxHQUFHO1lBQ1YsRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRSxlQUFlLEVBQUU7WUFDOUMsRUFBRSxRQUFRLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxHQUFHLEVBQUU7WUFDbkMsRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUU7WUFDdEMsRUFBRSxRQUFRLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUU7WUFDckMsRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRSxFQUFDLE1BQUksRUFBRSxDQUFDLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBQyxFQUFFO1lBQ3ZELEVBQUUsUUFBUSxFQUFFLFdBQVcsRUFBRSxLQUFLLEVBQUUsSUFBSSxDQUFDLFNBQVMsRUFBRTtTQUNqRCxDQUFDO1FBQ0YsSUFBSSxPQUFPLEdBQXNCLEVBQUUsQ0FBQztRQUNwQyxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsS0FBSyxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRTtZQUNyQyxJQUFJLENBQUMsR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDakIsT0FBTyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLGFBQWEsR0FBRyxTQUFTLEdBQUcsQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztTQUMzRTtRQUNELE9BQU8sT0FBTyxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUM5QixDQUFDLENBQUMsQ0FBQztJQUVILElBQUksQ0FBQyxrQkFBa0IsRUFBRTtRQUN2QixPQUFPLE1BQU0sQ0FBQyxHQUFHLENBQUMsZUFBZSxDQUFDLENBQy9CLE9BQUssQ0FBQSxDQUFDLFVBQVMsS0FBSztZQUNuQixPQUFPLElBQUksQ0FBQztRQUNkLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQyxDQUFDLENBQUM7SUFFSCxJQUFJLENBQUMsUUFBUSxFQUFFO1FBQ2IsSUFBSSxHQUFHLEdBQUcsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO1FBQ2hDLElBQUksR0FBRyxHQUFHLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztRQUNoQyxhQUFNLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDN0IsYUFBTSxDQUFDLFFBQVEsQ0FBQyxHQUFHLEVBQUUsR0FBRyxDQUFDLENBQUM7SUFDNUIsQ0FBQyxDQUFDLENBQUM7QUFDTCxDQUFDLENBQUMsQ0FBQyIsImZpbGUiOiJ0ZXN0L2ZpcmViYXNlLXJlc3QtdGVzdC5qcyIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBDb3B5cmlnaHQgMjAxNSBHb29nbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuaW1wb3J0ICogYXMgcmVzdCBmcm9tICcuLi9maXJlYmFzZS1yZXN0JztcbmxldCBzZWNyZXRzID0gcmVxdWlyZSgnLi4vLi4vYXV0aC1zZWNyZXRzJyk7XG5pbXBvcnQge2Fzc2VydH0gZnJvbSAnY2hhaSc7XG5cbmxldCBURVNUX0xPQ0FUSU9OID0gJy9yZXN0LXRlc3QnO1xuXG5zdWl0ZShcIkZpcmViYXNlIFJFU1QgVGVzdHNcIiwgZnVuY3Rpb24oKSB7XG4gIHZhciBjbGllbnQgPSBuZXcgcmVzdC5DbGllbnQoc2VjcmV0cy5BUFApO1xuXG4gIHN1aXRlU2V0dXAoZnVuY3Rpb24oKSB7XG4gICAgdmFyIGFkbWluQ2xpZW50ID0gbmV3IHJlc3QuQ2xpZW50KHNlY3JldHMuQVBQLCBzZWNyZXRzLlNFQ1JFVCk7XG4gICAgcmV0dXJuIGFkbWluQ2xpZW50LnB1dChcbiAgICAgIHJlc3QuUlVMRVNfTE9DQVRJT04sXG4gICAgICB7XG4gICAgICAgIHJ1bGVzOiB7XG4gICAgICAgICAgXCIucmVhZFwiOiB0cnVlLFxuICAgICAgICAgIFwiLndyaXRlXCI6IGZhbHNlLFxuICAgICAgICAgIFwicmVzdC10ZXN0XCI6IHtcbiAgICAgICAgICAgIFwiLndyaXRlXCI6IHRydWVcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICB9KTtcblxuICB0ZXN0KFwiUmVhZCBsb2NhdGlvblwiLCBmdW5jdGlvbigpIHtcbiAgICByZXR1cm4gY2xpZW50LmdldChURVNUX0xPQ0FUSU9OKTtcbiAgfSk7XG5cbiAgdGVzdChcIldyaXRlIGRhdGFcIiwgZnVuY3Rpb24oKSB7XG4gICAgdmFyIHRlc3RzID0gW1xuICAgICAgeyBsb2NhdGlvbjogJ3N0cmluZycsIHZhbHVlOiAnSGVsbG8sIHdvcmxkLicgfSxcbiAgICAgIHsgbG9jYXRpb246ICdpbnRlZ2VyJywgdmFsdWU6IDEyMyB9LFxuICAgICAgeyBsb2NhdGlvbjogJ251bWJlcicsIHZhbHVlOiAxMjMuNDU2IH0sXG4gICAgICB7IGxvY2F0aW9uOiAnYm9vbGVhbicsIHZhbHVlOiBmYWxzZSB9LFxuICAgICAgeyBsb2NhdGlvbjogJ29iamVjdCcsIHZhbHVlOiB7dGhpczogMSwgdGhhdDogJ290aGVyJ30gfSxcbiAgICAgIHsgbG9jYXRpb246ICdUSU1FU1RBTVAnLCB2YWx1ZTogcmVzdC5USU1FU1RBTVAgfSxcbiAgICBdO1xuICAgIHZhciByZXN1bHRzID0gPFByb21pc2U8c3RyaW5nPltdPltdO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGVzdHMubGVuZ3RoOyBpKyspIHtcbiAgICAgIHZhciB0ID0gdGVzdHNbaV07XG4gICAgICByZXN1bHRzLnB1c2goY2xpZW50LnB1dChURVNUX0xPQ0FUSU9OICsgJy90eXBlcy8nICsgdC5sb2NhdGlvbiwgdC52YWx1ZSkpO1xuICAgIH1cbiAgICByZXR1cm4gUHJvbWlzZS5hbGwocmVzdWx0cyk7XG4gIH0pO1xuXG4gIHRlc3QoXCJJbnZhbGlkIGxvY2F0aW9uXCIsIGZ1bmN0aW9uKCkge1xuICAgIHJldHVybiBjbGllbnQuZ2V0KCcuLi8uLi9pbGxlZ2FsJylcbiAgICAgIC5jYXRjaChmdW5jdGlvbihlcnJvcikge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH0pO1xuICB9KTtcblxuICB0ZXN0KFwiUHVzaElEXCIsIGZ1bmN0aW9uKCkge1xuICAgIGxldCBpZDEgPSByZXN0LmdlbmVyYXRlUHVzaElEKCk7XG4gICAgbGV0IGlkMiA9IHJlc3QuZ2VuZXJhdGVQdXNoSUQoKTtcbiAgICBhc3NlcnQuZXF1YWwoaWQxLmxlbmd0aCwgMjApO1xuICAgIGFzc2VydC5ub3RFcXVhbChpZDEsIGlkMik7XG4gIH0pO1xufSk7XG4iXX0=
"use strict";
exports.__esModule = true;
/*

@@ -17,4 +18,4 @@ * Copyright 2015 Google Inc. All Rights Reserved.

*/
var chai_1 = require('chai');
var rest = require('../firebase-rest');
var chai_1 = require("chai");
var rest = require("../firebase-rest");
var secrets = require('../../auth-secrets');

@@ -42,2 +43,2 @@ suite("Firebase Rules Tests", function () {

//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInRlc3QvZmlyZWJhc2UtcnVsZXMtdGVzdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUE7Ozs7Ozs7Ozs7Ozs7O0dBY0c7QUFDSCxxQkFBcUIsTUFBTSxDQUFDLENBQUE7QUFDNUIsSUFBWSxJQUFJLFdBQU0sa0JBQWtCLENBQUMsQ0FBQTtBQUV6QyxJQUFJLE9BQU8sR0FBRyxPQUFPLENBQUMsb0JBQW9CLENBQUMsQ0FBQztBQUU1QyxLQUFLLENBQUMsc0JBQXNCLEVBQUU7SUFDNUIsSUFBSSxNQUFNLEdBQUcsSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxHQUFHLEVBQUUsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBRTFELElBQUksQ0FBQyxhQUFhLEVBQUU7UUFDbEIsTUFBTSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQ2YsSUFBSSxDQUFDLGNBQWMsRUFDbkI7WUFDRSxLQUFLLEVBQUU7Z0JBQ0wsT0FBTyxFQUFFLElBQUk7Z0JBQ2IsUUFBUSxFQUFFLEtBQUs7Z0JBQ2YsV0FBVyxFQUFFO29CQUNYLFFBQVEsRUFBRSxJQUFJO2lCQUNmO2FBQ0Y7U0FDRixDQUFDLENBQUM7SUFDUCxDQUFDLENBQUMsQ0FBQztJQUVILElBQUksQ0FBQyxZQUFZLEVBQUU7UUFDakIsTUFBTSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQzthQUNuQyxJQUFJLENBQUMsVUFBUyxNQUFXO1lBQ3hCLGFBQU0sQ0FBQyxPQUFPLElBQUksTUFBTSxDQUFDLENBQUM7UUFDNUIsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDLENBQUMsQ0FBQztBQUNMLENBQUMsQ0FBQyxDQUFDIiwiZmlsZSI6InRlc3QvZmlyZWJhc2UtcnVsZXMtdGVzdC5qcyIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBDb3B5cmlnaHQgMjAxNSBHb29nbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuaW1wb3J0IHthc3NlcnR9IGZyb20gJ2NoYWknO1xuaW1wb3J0ICogYXMgcmVzdCBmcm9tICcuLi9maXJlYmFzZS1yZXN0JztcblxubGV0IHNlY3JldHMgPSByZXF1aXJlKCcuLi8uLi9hdXRoLXNlY3JldHMnKTtcblxuc3VpdGUoXCJGaXJlYmFzZSBSdWxlcyBUZXN0c1wiLCBmdW5jdGlvbigpIHtcbiAgdmFyIGNsaWVudCA9IG5ldyByZXN0LkNsaWVudChzZWNyZXRzLkFQUCwgc2VjcmV0cy5TRUNSRVQpO1xuXG4gIHRlc3QoXCJXcml0ZSBSdWxlc1wiLCBmdW5jdGlvbigpIHtcbiAgICByZXR1cm4gY2xpZW50LnB1dChcbiAgICAgIHJlc3QuUlVMRVNfTE9DQVRJT04sXG4gICAgICB7XG4gICAgICAgIHJ1bGVzOiB7XG4gICAgICAgICAgXCIucmVhZFwiOiB0cnVlLFxuICAgICAgICAgIFwiLndyaXRlXCI6IGZhbHNlLFxuICAgICAgICAgIFwicmVzdC10ZXN0XCI6IHtcbiAgICAgICAgICAgIFwiLndyaXRlXCI6IHRydWVcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICB9KTtcblxuICB0ZXN0KFwiUmVhZCBSdWxlc1wiLCBmdW5jdGlvbigpIHtcbiAgICByZXR1cm4gY2xpZW50LmdldChyZXN0LlJVTEVTX0xPQ0FUSU9OKVxuICAgICAgLnRoZW4oZnVuY3Rpb24ocmVzdWx0OiBhbnkpIHtcbiAgICAgICAgYXNzZXJ0KCdydWxlcycgaW4gcmVzdWx0KTtcbiAgICAgIH0pO1xuICB9KTtcbn0pO1xuIl19
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInRlc3QvZmlyZWJhc2UtcnVsZXMtdGVzdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBOzs7Ozs7Ozs7Ozs7OztHQWNHO0FBQ0gsNkJBQTRCO0FBQzVCLHVDQUF5QztBQUV6QyxJQUFJLE9BQU8sR0FBRyxPQUFPLENBQUMsb0JBQW9CLENBQUMsQ0FBQztBQUU1QyxLQUFLLENBQUMsc0JBQXNCLEVBQUU7SUFDNUIsSUFBSSxNQUFNLEdBQUcsSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxHQUFHLEVBQUUsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBRTFELElBQUksQ0FBQyxhQUFhLEVBQUU7UUFDbEIsT0FBTyxNQUFNLENBQUMsR0FBRyxDQUNmLElBQUksQ0FBQyxjQUFjLEVBQ25CO1lBQ0UsS0FBSyxFQUFFO2dCQUNMLE9BQU8sRUFBRSxJQUFJO2dCQUNiLFFBQVEsRUFBRSxLQUFLO2dCQUNmLFdBQVcsRUFBRTtvQkFDWCxRQUFRLEVBQUUsSUFBSTtpQkFDZjthQUNGO1NBQ0YsQ0FBQyxDQUFDO0lBQ1AsQ0FBQyxDQUFDLENBQUM7SUFFSCxJQUFJLENBQUMsWUFBWSxFQUFFO1FBQ2pCLE9BQU8sTUFBTSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDO2FBQ25DLElBQUksQ0FBQyxVQUFTLE1BQVc7WUFDeEIsYUFBTSxDQUFDLE9BQU8sSUFBSSxNQUFNLENBQUMsQ0FBQztRQUM1QixDQUFDLENBQUMsQ0FBQztJQUNQLENBQUMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyxDQUFDLENBQUMiLCJmaWxlIjoidGVzdC9maXJlYmFzZS1ydWxlcy10ZXN0LmpzIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIENvcHlyaWdodCAyMDE1IEdvb2dsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5pbXBvcnQge2Fzc2VydH0gZnJvbSAnY2hhaSc7XG5pbXBvcnQgKiBhcyByZXN0IGZyb20gJy4uL2ZpcmViYXNlLXJlc3QnO1xuXG5sZXQgc2VjcmV0cyA9IHJlcXVpcmUoJy4uLy4uL2F1dGgtc2VjcmV0cycpO1xuXG5zdWl0ZShcIkZpcmViYXNlIFJ1bGVzIFRlc3RzXCIsIGZ1bmN0aW9uKCkge1xuICB2YXIgY2xpZW50ID0gbmV3IHJlc3QuQ2xpZW50KHNlY3JldHMuQVBQLCBzZWNyZXRzLlNFQ1JFVCk7XG5cbiAgdGVzdChcIldyaXRlIFJ1bGVzXCIsIGZ1bmN0aW9uKCkge1xuICAgIHJldHVybiBjbGllbnQucHV0KFxuICAgICAgcmVzdC5SVUxFU19MT0NBVElPTixcbiAgICAgIHtcbiAgICAgICAgcnVsZXM6IHtcbiAgICAgICAgICBcIi5yZWFkXCI6IHRydWUsXG4gICAgICAgICAgXCIud3JpdGVcIjogZmFsc2UsXG4gICAgICAgICAgXCJyZXN0LXRlc3RcIjoge1xuICAgICAgICAgICAgXCIud3JpdGVcIjogdHJ1ZVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSk7XG4gIH0pO1xuXG4gIHRlc3QoXCJSZWFkIFJ1bGVzXCIsIGZ1bmN0aW9uKCkge1xuICAgIHJldHVybiBjbGllbnQuZ2V0KHJlc3QuUlVMRVNfTE9DQVRJT04pXG4gICAgICAudGhlbihmdW5jdGlvbihyZXN1bHQ6IGFueSkge1xuICAgICAgICBhc3NlcnQoJ3J1bGVzJyBpbiByZXN1bHQpO1xuICAgICAgfSk7XG4gIH0pO1xufSk7XG4iXX0=
"use strict";
exports.__esModule = true;
/*

@@ -17,3 +18,3 @@ * Copyright 2016 Google Inc. All Rights Reserved.

*/
var simulator_1 = require('../simulator');
var simulator_1 = require("../simulator");
var secrets = require('../../auth-secrets');

@@ -25,2 +26,3 @@ simulator_1.rulesSuite("Type[] | Scalar - issue 118", function (test) {

rules
// .debug()
.as('mike')

@@ -32,2 +34,3 @@ .at('/path/scalar')

.succeeds("Deleting whole item can delete scalar.")
// Needed for all subsequent tests to pass.
.write(1)

@@ -42,2 +45,3 @@ .at('/path/scalarOrNull')

rules
// .debug()
.as('mike')

@@ -75,2 +79,3 @@ .at('/path/scalar')

rules
// .debug()
.as('mike')

@@ -100,2 +105,2 @@ .at('/path/scalar')

//# sourceMappingURL=data:application/json;charset=utf8;base64,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SyxDQUFDLElBQUksQ0FBQzthQUNYLFFBQVEsQ0FBQyxxQkFBcUIsQ0FBQzthQUMvQixFQUFFLENBQUMsZUFBZSxDQUFDO2FBQ25CLEtBQUssQ0FBQyxDQUFDLENBQUM7YUFDUixRQUFRLENBQUMsNEJBQTRCLENBQUM7YUFDdEMsRUFBRSxDQUFDLFdBQVcsQ0FBQzthQUNmLElBQUksQ0FBQyxDQUFDLENBQUM7YUFDUCxRQUFRLENBQUMsd0JBQXdCLENBQUM7YUFDbEMsS0FBSyxDQUFDLE9BQU8sQ0FBQzthQUNkLEtBQUssQ0FBQyw2Q0FBNkMsQ0FBQzthQUVwRCxFQUFFLENBQUMsbUJBQW1CLENBQUM7YUFDdkIsS0FBSyxDQUFDLENBQUMsQ0FBQzthQUNSLFFBQVEsQ0FBQyxnQ0FBZ0MsQ0FBQzthQUMxQyxLQUFLLENBQUMsRUFBQyxLQUFLLEVBQUUsQ0FBQyxFQUFDLENBQUM7YUFDakIsUUFBUSxDQUFDLDZCQUE2QixDQUFDLENBQ3pDO0lBQ0gsQ0FBQyxDQUFDLENBQUM7QUFDTCxDQUFDLENBQUMsQ0FBQyIsImZpbGUiOiJ0ZXN0L2lzc3VlLTExOC10ZXN0LmpzIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIENvcHlyaWdodCAyMDE2IEdvb2dsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5pbXBvcnQge3J1bGVzU3VpdGV9IGZyb20gJy4uL3NpbXVsYXRvcic7XG52YXIgc2VjcmV0cyA9IHJlcXVpcmUoJy4uLy4uL2F1dGgtc2VjcmV0cycpO1xuXG5ydWxlc1N1aXRlKFwiVHlwZVtdIHwgU2NhbGFyIC0gaXNzdWUgMTE4XCIsIGZ1bmN0aW9uKHRlc3QpIHtcbiAgdGVzdC5kYXRhYmFzZShzZWNyZXRzLkFQUCwgc2VjcmV0cy5TRUNSRVQpO1xuICB0ZXN0LnJ1bGVzKCdzYW1wbGVzL2lzc3VlLTExOCcpO1xuXG4gIHRlc3QoXCJTY2FsYXIgdGVzdHMuXCIsIGZ1bmN0aW9uKHJ1bGVzKSB7XG4gICAgcnVsZXNcbiAgICAgIC8vIC5kZWJ1ZygpXG4gICAgICAuYXMoJ21pa2UnKVxuICAgICAgLmF0KCcvcGF0aC9zY2FsYXInKVxuICAgICAgLndyaXRlKDEpXG4gICAgICAuc3VjY2VlZHMoXCJXcml0ZSB0byBzY2FsYXIuXCIpXG4gICAgICAud3JpdGUobnVsbClcbiAgICAgIC5zdWNjZWVkcyhcIkRlbGV0aW5nIHdob2xlIGl0ZW0gY2FuIGRlbGV0ZSBzY2FsYXIuXCIpXG5cbiAgICAgIC8vIE5lZWRlZCBmb3IgYWxsIHN1YnNlcXVlbnQgdGVzdHMgdG8gcGFzcy5cbiAgICAgIC53cml0ZSgxKVxuXG4gICAgICAuYXQoJy9wYXRoL3NjYWxhck9yTnVsbCcpXG4gICAgICAud3JpdGUoMSlcbiAgICAgIC5zdWNjZWVkcyhcIldyaXRlIHRvIHNjYWxhciBvciBudWxsLlwiKVxuICAgICAgLndyaXRlKG51bGwpXG4gICAgICAuc3VjY2VlZHMoXCJDYW4gZGVsZXRlIHNjYWxhciBvciBudWxsLlwiKVxuICAgIDtcbiAgfSk7XG5cbiAgdGVzdChcIkFycmF5IHRlc3RzLlwiLCBmdW5jdGlvbihydWxlcykge1xuICAgIHJ1bGVzXG4gICAgICAvLyAuZGVidWcoKVxuICAgICAgLmFzKCdtaWtlJylcbiAgICAgIC5hdCgnL3BhdGgvc2NhbGFyJylcbiAgICAgIC53cml0ZSgxKVxuXG4gICAgICAuYXQoJy9wYXRoL2FycmF5JylcbiAgICAgIC53cml0ZShbMV0pXG4gICAgICAuc3VjY2VlZHMoXCJXcml0ZSB0byBhcnJheS5cIilcbiAgICAgIC53cml0ZShudWxsKVxuICAgICAgLnN1Y2NlZWRzKFwiRGVsZXRpbmcgd2hvbGUgYXJyYXkuXCIpXG4gICAgICAuYXQoJy9wYXRoL2FycmF5Lzk5OScpXG4gICAgICAud3JpdGUoMSlcbiAgICAgIC5zdWNjZWVkcyhcIldyaXRlIHNpbmdsZSBlbnRyeSB0byBhcnJheS5cIilcbiAgICAgIC5hdCgnL3BhdGgvYXJyYXknKVxuICAgICAgLnB1c2goMilcbiAgICAgIC5zdWNjZWVkcyhcIlB1c2hlcyB2YWx1ZSBpbnRvIGFycmF5LlwiKVxuICAgICAgLndyaXRlKFwiYm9ndXNcIilcbiAgICAgIC5mYWlscyhcIlNob3VsZCBub3QgYmUgYWJsZSB0byB3cml0ZSBub24tYXJyYXkgdG8gYXJyYXkuXCIpXG5cbiAgICAgIC5hdCgnL3BhdGgvYXJyYXlPck51bGwvOTk5JylcbiAgICAgIC53cml0ZSgxKVxuICAgICAgLnN1Y2NlZWRzKFwiQ2FuIHdyaXRlIHNpbmdsZSBhcnJheSBlbnRyeSB0byBhcnJheSBvciBudWxsLlwiKVxuXG4gICAgICAuYXQoJy9wYXRoL2FycmF5T3JOdWxsJylcbiAgICAgIC53cml0ZShbMV0pXG4gICAgICAuc3VjY2VlZHMoXCJXcml0ZSBhcnJheSB0byBhcnJheSBvciBudWxsLlwiKVxuICAgICAgLndyaXRlKG51bGwpXG4gICAgICAuc3VjY2VlZHMoXCJDYW4gZGVsZXRlIGFycmF5IG9yIG51bGwuXCIpXG5cbiAgICAgIC5hdCgnL3BhdGgvYXJyYXlPclNjYWxhcicpXG4gICAgICAud3JpdGUoMSlcbiAgICAgIC5zdWNjZWVkcyhcIldyaXRlIHNjYWxhciB0byBhcnJheSBvciBzY2FsYXIuXCIpXG4gICAgICAud3JpdGUoWzFdKVxuICAgICAgLnN1Y2NlZWRzKFwiV3JpdGUgYXJyYXkgdG8gYXJyYXkgb3Igc2NhbGFyLlwiKVxuICAgIDtcbiAgfSk7XG5cbiAgdGVzdChcIk1hcCB0ZXN0cy5cIiwgZnVuY3Rpb24ocnVsZXMpIHtcbiAgICBydWxlc1xuICAgICAgLy8gLmRlYnVnKClcbiAgICAgIC5hcygnbWlrZScpXG4gICAgICAuYXQoJy9wYXRoL3NjYWxhcicpXG4gICAgICAud3JpdGUoMSlcblxuICAgICAgLmF0KCcvcGF0aC9tYXAnKVxuICAgICAgLndyaXRlKFsxXSlcbiAgICAgIC5zdWNjZWVkcyhcIldyaXRlIHRvIG1hcC5cIilcbiAgICAgIC53cml0ZShudWxsKVxuICAgICAgLnN1Y2NlZWRzKFwiRGVsZXRpbmcgd2hvbGUgbWFwLlwiKVxuICAgICAgLmF0KCcvcGF0aC9tYXAva2V5JylcbiAgICAgIC53cml0ZSgxKVxuICAgICAgLnN1Y2NlZWRzKFwiV3JpdGUgc2luZ2xlIGVudHJ5IHRvIG1hcC5cIilcbiAgICAgIC5hdCgnL3BhdGgvbWFwJylcbiAgICAgIC5wdXNoKDIpXG4gICAgICAuc3VjY2VlZHMoXCJQdXNoZXMgdmFsdWUgaW50byBtYXAuXCIpXG4gICAgICAud3JpdGUoXCJib2d1c1wiKVxuICAgICAgLmZhaWxzKFwiU2hvdWxkIG5vdCBiZSBhYmxlIHRvIHdyaXRlIG5vbi1tYXAgdG8gbWFwLlwiKVxuXG4gICAgICAuYXQoJy9wYXRoL21hcE9yU2NhbGFyJylcbiAgICAgIC53cml0ZSgxKVxuICAgICAgLnN1Y2NlZWRzKFwiV3JpdGUgc2NhbGFyIHRvIG1hcCBvciBzY2FsYXIuXCIpXG4gICAgICAud3JpdGUoe1wia2V5XCI6IDJ9KVxuICAgICAgLnN1Y2NlZWRzKFwiV3JpdGUgbWFwIHRvIG1hcCBvciBzY2FsYXIuXCIpXG4gICAgO1xuICB9KTtcbn0pO1xuIl19
//# sourceMappingURL=data:application/json;charset=utf8;base64,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UUFBUSxDQUFDLGVBQWUsQ0FBQzthQUN6QixLQUFLLENBQUMsSUFBSSxDQUFDO2FBQ1gsUUFBUSxDQUFDLHFCQUFxQixDQUFDO2FBQy9CLEVBQUUsQ0FBQyxlQUFlLENBQUM7YUFDbkIsS0FBSyxDQUFDLENBQUMsQ0FBQzthQUNSLFFBQVEsQ0FBQyw0QkFBNEIsQ0FBQzthQUN0QyxFQUFFLENBQUMsV0FBVyxDQUFDO2FBQ2YsSUFBSSxDQUFDLENBQUMsQ0FBQzthQUNQLFFBQVEsQ0FBQyx3QkFBd0IsQ0FBQzthQUNsQyxLQUFLLENBQUMsT0FBTyxDQUFDO2FBQ2QsS0FBSyxDQUFDLDZDQUE2QyxDQUFDO2FBRXBELEVBQUUsQ0FBQyxtQkFBbUIsQ0FBQzthQUN2QixLQUFLLENBQUMsQ0FBQyxDQUFDO2FBQ1IsUUFBUSxDQUFDLGdDQUFnQyxDQUFDO2FBQzFDLEtBQUssQ0FBQyxFQUFDLEtBQUssRUFBRSxDQUFDLEVBQUMsQ0FBQzthQUNqQixRQUFRLENBQUMsNkJBQTZCLENBQUMsQ0FDekM7SUFDSCxDQUFDLENBQUMsQ0FBQztBQUNMLENBQUMsQ0FBQyxDQUFDIiwiZmlsZSI6InRlc3QvaXNzdWUtMTE4LXRlc3QuanMiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogQ29weXJpZ2h0IDIwMTYgR29vZ2xlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cbmltcG9ydCB7cnVsZXNTdWl0ZX0gZnJvbSAnLi4vc2ltdWxhdG9yJztcbnZhciBzZWNyZXRzID0gcmVxdWlyZSgnLi4vLi4vYXV0aC1zZWNyZXRzJyk7XG5cbnJ1bGVzU3VpdGUoXCJUeXBlW10gfCBTY2FsYXIgLSBpc3N1ZSAxMThcIiwgZnVuY3Rpb24odGVzdCkge1xuICB0ZXN0LmRhdGFiYXNlKHNlY3JldHMuQVBQLCBzZWNyZXRzLlNFQ1JFVCk7XG4gIHRlc3QucnVsZXMoJ3NhbXBsZXMvaXNzdWUtMTE4Jyk7XG5cbiAgdGVzdChcIlNjYWxhciB0ZXN0cy5cIiwgZnVuY3Rpb24ocnVsZXMpIHtcbiAgICBydWxlc1xuICAgICAgLy8gLmRlYnVnKClcbiAgICAgIC5hcygnbWlrZScpXG4gICAgICAuYXQoJy9wYXRoL3NjYWxhcicpXG4gICAgICAud3JpdGUoMSlcbiAgICAgIC5zdWNjZWVkcyhcIldyaXRlIHRvIHNjYWxhci5cIilcbiAgICAgIC53cml0ZShudWxsKVxuICAgICAgLnN1Y2NlZWRzKFwiRGVsZXRpbmcgd2hvbGUgaXRlbSBjYW4gZGVsZXRlIHNjYWxhci5cIilcblxuICAgICAgLy8gTmVlZGVkIGZvciBhbGwgc3Vic2VxdWVudCB0ZXN0cyB0byBwYXNzLlxuICAgICAgLndyaXRlKDEpXG5cbiAgICAgIC5hdCgnL3BhdGgvc2NhbGFyT3JOdWxsJylcbiAgICAgIC53cml0ZSgxKVxuICAgICAgLnN1Y2NlZWRzKFwiV3JpdGUgdG8gc2NhbGFyIG9yIG51bGwuXCIpXG4gICAgICAud3JpdGUobnVsbClcbiAgICAgIC5zdWNjZWVkcyhcIkNhbiBkZWxldGUgc2NhbGFyIG9yIG51bGwuXCIpXG4gICAgO1xuICB9KTtcblxuICB0ZXN0KFwiQXJyYXkgdGVzdHMuXCIsIGZ1bmN0aW9uKHJ1bGVzKSB7XG4gICAgcnVsZXNcbiAgICAgIC8vIC5kZWJ1ZygpXG4gICAgICAuYXMoJ21pa2UnKVxuICAgICAgLmF0KCcvcGF0aC9zY2FsYXInKVxuICAgICAgLndyaXRlKDEpXG5cbiAgICAgIC5hdCgnL3BhdGgvYXJyYXknKVxuICAgICAgLndyaXRlKFsxXSlcbiAgICAgIC5zdWNjZWVkcyhcIldyaXRlIHRvIGFycmF5LlwiKVxuICAgICAgLndyaXRlKG51bGwpXG4gICAgICAuc3VjY2VlZHMoXCJEZWxldGluZyB3aG9sZSBhcnJheS5cIilcbiAgICAgIC5hdCgnL3BhdGgvYXJyYXkvOTk5JylcbiAgICAgIC53cml0ZSgxKVxuICAgICAgLnN1Y2NlZWRzKFwiV3JpdGUgc2luZ2xlIGVudHJ5IHRvIGFycmF5LlwiKVxuICAgICAgLmF0KCcvcGF0aC9hcnJheScpXG4gICAgICAucHVzaCgyKVxuICAgICAgLnN1Y2NlZWRzKFwiUHVzaGVzIHZhbHVlIGludG8gYXJyYXkuXCIpXG4gICAgICAud3JpdGUoXCJib2d1c1wiKVxuICAgICAgLmZhaWxzKFwiU2hvdWxkIG5vdCBiZSBhYmxlIHRvIHdyaXRlIG5vbi1hcnJheSB0byBhcnJheS5cIilcblxuICAgICAgLmF0KCcvcGF0aC9hcnJheU9yTnVsbC85OTknKVxuICAgICAgLndyaXRlKDEpXG4gICAgICAuc3VjY2VlZHMoXCJDYW4gd3JpdGUgc2luZ2xlIGFycmF5IGVudHJ5IHRvIGFycmF5IG9yIG51bGwuXCIpXG5cbiAgICAgIC5hdCgnL3BhdGgvYXJyYXlPck51bGwnKVxuICAgICAgLndyaXRlKFsxXSlcbiAgICAgIC5zdWNjZWVkcyhcIldyaXRlIGFycmF5IHRvIGFycmF5IG9yIG51bGwuXCIpXG4gICAgICAud3JpdGUobnVsbClcbiAgICAgIC5zdWNjZWVkcyhcIkNhbiBkZWxldGUgYXJyYXkgb3IgbnVsbC5cIilcblxuICAgICAgLmF0KCcvcGF0aC9hcnJheU9yU2NhbGFyJylcbiAgICAgIC53cml0ZSgxKVxuICAgICAgLnN1Y2NlZWRzKFwiV3JpdGUgc2NhbGFyIHRvIGFycmF5IG9yIHNjYWxhci5cIilcbiAgICAgIC53cml0ZShbMV0pXG4gICAgICAuc3VjY2VlZHMoXCJXcml0ZSBhcnJheSB0byBhcnJheSBvciBzY2FsYXIuXCIpXG4gICAgO1xuICB9KTtcblxuICB0ZXN0KFwiTWFwIHRlc3RzLlwiLCBmdW5jdGlvbihydWxlcykge1xuICAgIHJ1bGVzXG4gICAgICAvLyAuZGVidWcoKVxuICAgICAgLmFzKCdtaWtlJylcbiAgICAgIC5hdCgnL3BhdGgvc2NhbGFyJylcbiAgICAgIC53cml0ZSgxKVxuXG4gICAgICAuYXQoJy9wYXRoL21hcCcpXG4gICAgICAud3JpdGUoWzFdKVxuICAgICAgLnN1Y2NlZWRzKFwiV3JpdGUgdG8gbWFwLlwiKVxuICAgICAgLndyaXRlKG51bGwpXG4gICAgICAuc3VjY2VlZHMoXCJEZWxldGluZyB3aG9sZSBtYXAuXCIpXG4gICAgICAuYXQoJy9wYXRoL21hcC9rZXknKVxuICAgICAgLndyaXRlKDEpXG4gICAgICAuc3VjY2VlZHMoXCJXcml0ZSBzaW5nbGUgZW50cnkgdG8gbWFwLlwiKVxuICAgICAgLmF0KCcvcGF0aC9tYXAnKVxuICAgICAgLnB1c2goMilcbiAgICAgIC5zdWNjZWVkcyhcIlB1c2hlcyB2YWx1ZSBpbnRvIG1hcC5cIilcbiAgICAgIC53cml0ZShcImJvZ3VzXCIpXG4gICAgICAuZmFpbHMoXCJTaG91bGQgbm90IGJlIGFibGUgdG8gd3JpdGUgbm9uLW1hcCB0byBtYXAuXCIpXG5cbiAgICAgIC5hdCgnL3BhdGgvbWFwT3JTY2FsYXInKVxuICAgICAgLndyaXRlKDEpXG4gICAgICAuc3VjY2VlZHMoXCJXcml0ZSBzY2FsYXIgdG8gbWFwIG9yIHNjYWxhci5cIilcbiAgICAgIC53cml0ZSh7XCJrZXlcIjogMn0pXG4gICAgICAuc3VjY2VlZHMoXCJXcml0ZSBtYXAgdG8gbWFwIG9yIHNjYWxhci5cIilcbiAgICA7XG4gIH0pO1xufSk7XG4iXX0=
"use strict";
exports.__esModule = true;
/*

@@ -17,3 +18,3 @@ * Copyright 2015 Google Inc. All Rights Reserved.

*/
var simulator_1 = require('../simulator');
var simulator_1 = require("../simulator");
var secrets = require('../../auth-secrets');

@@ -140,2 +141,2 @@ simulator_1.rulesSuite("Mail", function (test) {

//# sourceMappingURL=data:application/json;charset=utf8;base64,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VyxDQUFDO2FBQ3pDLElBQUksRUFBRTthQUNOLEtBQUssQ0FBQywwQkFBMEIsQ0FBQyxDQUFDO0lBQ3ZDLENBQUMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyxDQUFDLENBQUMiLCJmaWxlIjoidGVzdC9tYWlsLXRlc3QuanMiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogQ29weXJpZ2h0IDIwMTUgR29vZ2xlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cbmltcG9ydCB7cnVsZXNTdWl0ZX0gZnJvbSAnLi4vc2ltdWxhdG9yJztcbnZhciBzZWNyZXRzID0gcmVxdWlyZSgnLi4vLi4vYXV0aC1zZWNyZXRzJyk7XG5cbnJ1bGVzU3VpdGUoXCJNYWlsXCIsIGZ1bmN0aW9uKHRlc3QpIHtcbiAgdmFyIHVpZCA9IHRlc3QudWlkO1xuXG4gIHRlc3QuZGF0YWJhc2Uoc2VjcmV0cy5BUFAsIHNlY3JldHMuU0VDUkVUKTtcbiAgdGVzdC5ydWxlcygnc2FtcGxlcy9tYWlsJyk7XG5cbiAgdGVzdChcIkluYm94IHRlc3RzLlwiLCBmdW5jdGlvbihydWxlcykge1xuICAgIHJ1bGVzXG4gICAgICAuYXMoJ3RvbScpXG4gICAgICAuYXQoJy91c2Vycy8nICsgdWlkKCdiaWxsJykgKyAnL2luYm94LzEnKVxuICAgICAgLndyaXRlKHtcbiAgICAgICAgZnJvbTogdWlkKCd0b20nKSxcbiAgICAgICAgdG86IHVpZCgnYmlsbCcpLFxuICAgICAgICBtZXNzYWdlOiAnSGksIEJpbGwhJ1xuICAgICAgfSlcbiAgICAgIC5zdWNjZWVkcyhcIk5vcm1hbCB3cml0ZS5cIilcblxuICAgICAgLndyaXRlKG51bGwpXG4gICAgICAuZmFpbHMoXCJTZW5kZXIgY2Fubm90IGRlbGV0ZSBzZW50IG1lc3NhZ2UuXCIpXG5cbiAgICAgIC53cml0ZSh7XG4gICAgICAgIGZyb206IHVpZCgndG9tJyksXG4gICAgICAgIHRvOiB1aWQoJ2JpbGwnKSxcbiAgICAgICAgbWVzc2FnZTogJ0hlbGxvLCBhZ2FpbiEnXG4gICAgICB9KVxuICAgICAgLmZhaWxzKFwiU2VuZGVyIGNhbm5vdCBvdmVyd3JpdGUuXCIpXG5cbiAgICAgIC5hdCgnL3VzZXJzLycgKyB1aWQoJ2JpbGwnKSArICcvaW5ib3gvMicpXG4gICAgICAud3JpdGUoe1xuICAgICAgICBmcm9tOiB1aWQoJ3RvbScpLFxuICAgICAgICB0bzogdWlkKCdiaWxsJyksXG4gICAgICAgIG1lc3NhZ2U6ICdIaSwgQmlsbCEnLFxuICAgICAgICBzcHVyaW91czogJ3N1cHVyaW91cyBkYXRhJ1xuICAgICAgfSlcbiAgICAgIC5mYWlscyhcIk5vIHVuZGVmaW5lZCBmaWVsZHMuXCIpXG5cbiAgICAgIC53cml0ZSh7XG4gICAgICAgIGZyb206IHVpZCgnZ2VvcmdlJyksXG4gICAgICAgIHRvOiB1aWQoJ2JpbGwnKSxcbiAgICAgICAgbWVzc2FnZTogJ0hpLCBCaWxsISdcbiAgICAgIH0pXG4gICAgICAuZmFpbHMoXCJGcm9tIGZpZWxkIHNob3VsZCBiZSBjb3JyZWN0LlwiKVxuXG4gICAgICAuYXQoJy91c2Vycy8nICsgdWlkKCdiaWxsJykgKyAnL2luYm94LzEvbWVzc2FnZScpXG4gICAgICAud3JpdGUoXCJCaWxsIGdldHMgbXkgaW5oZXJpdGFuY2VcIilcbiAgICAgIC5mYWlscyhcIkNhbm5ub3QgdGFtcGVyIHdpdGggbWVzc2FnZS5cIilcblxuICAgICAgLmF0KCcvdXNlcnMvJyArIHVpZCgnYmlsbCcpICsgJy9pbmJveC8xL2Zyb20nKVxuICAgICAgLndyaXRlKHVpZCgnYmlsbCcpKVxuICAgICAgLmZhaWxzKFwiQ2Fubm90IHRhbXBlciB3aXRoIGZyb20gZmllbGQuXCIpXG5cbiAgICAgIC5hcygnYmlsbCcpXG4gICAgICAuYXQoJy91c2Vycy8nICsgdWlkKCdiaWxsJykgKyAnL2luYm94LzEnKVxuICAgICAgLndyaXRlKG51bGwpXG4gICAgICAuc3VjY2VlZHMoXCJSZWNlaXZlciBjYW4gZGVsZXRlIHJlY2VpdmVkIG1haWwuXCIpO1xuICB9KTtcblxuXG4gIHRlc3QoXCJPdXRib3ggdGVzdHMuXCIsIGZ1bmN0aW9uKHJ1bGVzKSB7XG4gICAgcnVsZXNcbiAgICAgIC5hcygnYmlsbCcpXG4gICAgICAuYXQoJy91c2Vycy8nICsgdWlkKCdiaWxsJykgKyAnL291dGJveC8xJylcbiAgICAgIC53cml0ZSh7XG4gICAgICAgIGZyb206IHVpZCgnYmlsbCcpLFxuICAgICAgICB0bzogdWlkKCd0b20nKSxcbiAgICAgICAgbWVzc2FnZTogXCJIaSwgVG9tIVwiXG4gICAgICB9KVxuICAgICAgLnN1Y2NlZWRzKFwiTm9ybWFsIHdyaXRlLlwiKVxuXG4gICAgICAuYXMoJ3RvbScpXG4gICAgICAud3JpdGUobnVsbClcbiAgICAgIC5mYWlscyhcIlJlY2VpdmVyIGNhbm5vdCBkZWxldGUgb3V0Ym94IG1lc3NhZ2UuXCIpXG5cbiAgICAgIC5hcygnYmlsbCcpXG5cbiAgICAgIC5hdCgnL3VzZXJzLycgKyB1aWQoJ2JpbGwnKSArICcvb3V0Ym94LzEvbWVzc2FnZScpXG4gICAgICAud3JpdGUoXCJCaWxsIGdldHMgbXkgaW5oZXJpdGFuY2UuXCIpXG4gICAgICAuZmFpbHMoXCJTZW5kZXIgY2Fubm90IHRhbXBlciB3aXRoIG91dGJveCBtZXNzYWdlLlwiKVxuXG4gICAgICAuYXQoJy91c2Vycy8nICsgdWlkKCdiaWxsJykgKyAnL291dGJveC8xL2Zyb20nKVxuICAgICAgLndyaXRlKCdiaWxsJylcbiAgICAgIC5mYWlscyhcIkNhbid0IGRvIGEgcGFydGlhbCBvdmVyd3JpdGUgLSBldmVuIGlmIHNhbWUgZGF0YS5cIilcblxuICAgICAgLmFzKCdiaWxsJylcbiAgICAgIC5hdCgnL3VzZXJzLycgKyB1aWQoJ2JpbGwnKSArICcvb3V0Ym94LzInKVxuICAgICAgLndyaXRlKHtcbiAgICAgICAgZnJvbTogJ2pvZScsXG4gICAgICAgIHRvOiAndG9tJyxcbiAgICAgICAgbWVzc2FnZTogXCJIaSwgVG9tIVwiXG4gICAgICB9KVxuICAgICAgLmZhaWxzKFwiRnJvbSBmaWVsZCBtdXN0IGJlIGNvcnJlY3QuXCIpXG5cbiAgICAgIC53cml0ZSh7XG4gICAgICAgIGZyb206ICdiaWxsJyxcbiAgICAgICAgdG86ICd0b20nLFxuICAgICAgICBtZXNzYWdlOiBcIkhpLCBUb20hXCIsXG4gICAgICAgIHNwdXJpb3VzOiBcInNwdXJpb3VzXCJcbiAgICAgIH0pXG4gICAgICAuZmFpbHMoXCJObyB1bmRlZmluZWQgZmllbGRzLlwiKVxuXG4gICAgICAuYXQoJy91c2Vycy8nICsgdWlkKCdiaWxsJykgKyAnL291dGJveC8xJylcbiAgICAgIC53cml0ZShudWxsKVxuICAgICAgLnN1Y2NlZWRzKFwiU2VuZGVyIGNhbiBkZWxldGUgc2VudCBtYWlsIGluIG91dGJveC5cIik7XG4gIH0pO1xuXG4gIHRlc3QoXCJSZWFkIHBlcm1pc3Npb25zLlwiLCBmdW5jdGlvbihydWxlcykge1xuICAgIHJ1bGVzXG4gICAgICAuYXMoJ2JpbGwnKVxuICAgICAgLmF0KCcvdXNlcnMvJyArIHVpZCgnYmlsbCcpICsgJy9vdXRib3gvMScpXG4gICAgICAud3JpdGUoe1xuICAgICAgICBmcm9tOiB1aWQoJ2JpbGwnKSxcbiAgICAgICAgdG86IHVpZCgndG9tJyksXG4gICAgICAgIG1lc3NhZ2U6ICdIaSwgVG9tISdcbiAgICAgIH0pXG4gICAgICAuc3VjY2VlZHMoXCJOb3JtYWwgd3JpdGUuXCIpXG5cbiAgICAgIC5hcygndG9tJylcbiAgICAgIC5hdCgnL3VzZXJzLycgKyB1aWQoJ2JpbGwnKSArICcvaW5ib3gvMScpXG4gICAgICAud3JpdGUoe1xuICAgICAgICBmcm9tOiB1aWQoJ3RvbScpLFxuICAgICAgICB0bzogdWlkKCdiaWxsJyksXG4gICAgICAgIG1lc3NhZ2U6ICdIaSwgQmlsbCEnXG4gICAgICB9KVxuXG4gICAgICAuYXMoJ2JpbGwnKVxuICAgICAgLmF0KCcvdXNlcnMvJyArIHVpZCgnYmlsbCcpICsgJy9pbmJveC8xJylcbiAgICAgIC5yZWFkKClcbiAgICAgIC5zdWNjZWVkcyhcIkNhbiByZWFkIG93biBpbmJveC5cIilcblxuICAgICAgLmF0KCcvdXNlcnMvJyArIHVpZCgnYmlsbCcpICsgJy9vdXRib3gvMScpXG4gICAgICAucmVhZCgpXG4gICAgICAuc3VjY2VlZHMoXCJDYW4gcmVhZCBvd24gb3V0Ym94LlwiKVxuXG4gICAgICAuYXMoJ3RvbScpXG4gICAgICAuYXQoJy91c2Vycy8nICsgdWlkKCdiaWxsJykgKyAnL2luYm94LzEnKVxuICAgICAgLnJlYWQoKVxuICAgICAgLmZhaWxzKFwiQ2FuJ3QgcmVhZCBCaWxsJ3MgaW5ib3guXCIpXG5cbiAgICAgIC5hdCgnL3VzZXJzLycgKyB1aWQoJ2JpbGwnKSArICcvb3V0Ym94LzEnKVxuICAgICAgLnJlYWQoKVxuICAgICAgLmZhaWxzKFwiQ2FuJ3QgcmVhZCBCaWxscyBvdXRib3guXCIpO1xuICB9KTtcbn0pO1xuIl19
//# sourceMappingURL=data:application/json;charset=utf8;base64,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QUFJLEVBQUU7YUFDTixLQUFLLENBQUMsMEJBQTBCLENBQUMsQ0FBQztJQUN2QyxDQUFDLENBQUMsQ0FBQztBQUNMLENBQUMsQ0FBQyxDQUFDIiwiZmlsZSI6InRlc3QvbWFpbC10ZXN0LmpzIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIENvcHlyaWdodCAyMDE1IEdvb2dsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5pbXBvcnQge3J1bGVzU3VpdGV9IGZyb20gJy4uL3NpbXVsYXRvcic7XG52YXIgc2VjcmV0cyA9IHJlcXVpcmUoJy4uLy4uL2F1dGgtc2VjcmV0cycpO1xuXG5ydWxlc1N1aXRlKFwiTWFpbFwiLCBmdW5jdGlvbih0ZXN0KSB7XG4gIHZhciB1aWQgPSB0ZXN0LnVpZDtcblxuICB0ZXN0LmRhdGFiYXNlKHNlY3JldHMuQVBQLCBzZWNyZXRzLlNFQ1JFVCk7XG4gIHRlc3QucnVsZXMoJ3NhbXBsZXMvbWFpbCcpO1xuXG4gIHRlc3QoXCJJbmJveCB0ZXN0cy5cIiwgZnVuY3Rpb24ocnVsZXMpIHtcbiAgICBydWxlc1xuICAgICAgLmFzKCd0b20nKVxuICAgICAgLmF0KCcvdXNlcnMvJyArIHVpZCgnYmlsbCcpICsgJy9pbmJveC8xJylcbiAgICAgIC53cml0ZSh7XG4gICAgICAgIGZyb206IHVpZCgndG9tJyksXG4gICAgICAgIHRvOiB1aWQoJ2JpbGwnKSxcbiAgICAgICAgbWVzc2FnZTogJ0hpLCBCaWxsISdcbiAgICAgIH0pXG4gICAgICAuc3VjY2VlZHMoXCJOb3JtYWwgd3JpdGUuXCIpXG5cbiAgICAgIC53cml0ZShudWxsKVxuICAgICAgLmZhaWxzKFwiU2VuZGVyIGNhbm5vdCBkZWxldGUgc2VudCBtZXNzYWdlLlwiKVxuXG4gICAgICAud3JpdGUoe1xuICAgICAgICBmcm9tOiB1aWQoJ3RvbScpLFxuICAgICAgICB0bzogdWlkKCdiaWxsJyksXG4gICAgICAgIG1lc3NhZ2U6ICdIZWxsbywgYWdhaW4hJ1xuICAgICAgfSlcbiAgICAgIC5mYWlscyhcIlNlbmRlciBjYW5ub3Qgb3ZlcndyaXRlLlwiKVxuXG4gICAgICAuYXQoJy91c2Vycy8nICsgdWlkKCdiaWxsJykgKyAnL2luYm94LzInKVxuICAgICAgLndyaXRlKHtcbiAgICAgICAgZnJvbTogdWlkKCd0b20nKSxcbiAgICAgICAgdG86IHVpZCgnYmlsbCcpLFxuICAgICAgICBtZXNzYWdlOiAnSGksIEJpbGwhJyxcbiAgICAgICAgc3B1cmlvdXM6ICdzdXB1cmlvdXMgZGF0YSdcbiAgICAgIH0pXG4gICAgICAuZmFpbHMoXCJObyB1bmRlZmluZWQgZmllbGRzLlwiKVxuXG4gICAgICAud3JpdGUoe1xuICAgICAgICBmcm9tOiB1aWQoJ2dlb3JnZScpLFxuICAgICAgICB0bzogdWlkKCdiaWxsJyksXG4gICAgICAgIG1lc3NhZ2U6ICdIaSwgQmlsbCEnXG4gICAgICB9KVxuICAgICAgLmZhaWxzKFwiRnJvbSBmaWVsZCBzaG91bGQgYmUgY29ycmVjdC5cIilcblxuICAgICAgLmF0KCcvdXNlcnMvJyArIHVpZCgnYmlsbCcpICsgJy9pbmJveC8xL21lc3NhZ2UnKVxuICAgICAgLndyaXRlKFwiQmlsbCBnZXRzIG15IGluaGVyaXRhbmNlXCIpXG4gICAgICAuZmFpbHMoXCJDYW5ubm90IHRhbXBlciB3aXRoIG1lc3NhZ2UuXCIpXG5cbiAgICAgIC5hdCgnL3VzZXJzLycgKyB1aWQoJ2JpbGwnKSArICcvaW5ib3gvMS9mcm9tJylcbiAgICAgIC53cml0ZSh1aWQoJ2JpbGwnKSlcbiAgICAgIC5mYWlscyhcIkNhbm5vdCB0YW1wZXIgd2l0aCBmcm9tIGZpZWxkLlwiKVxuXG4gICAgICAuYXMoJ2JpbGwnKVxuICAgICAgLmF0KCcvdXNlcnMvJyArIHVpZCgnYmlsbCcpICsgJy9pbmJveC8xJylcbiAgICAgIC53cml0ZShudWxsKVxuICAgICAgLnN1Y2NlZWRzKFwiUmVjZWl2ZXIgY2FuIGRlbGV0ZSByZWNlaXZlZCBtYWlsLlwiKTtcbiAgfSk7XG5cblxuICB0ZXN0KFwiT3V0Ym94IHRlc3RzLlwiLCBmdW5jdGlvbihydWxlcykge1xuICAgIHJ1bGVzXG4gICAgICAuYXMoJ2JpbGwnKVxuICAgICAgLmF0KCcvdXNlcnMvJyArIHVpZCgnYmlsbCcpICsgJy9vdXRib3gvMScpXG4gICAgICAud3JpdGUoe1xuICAgICAgICBmcm9tOiB1aWQoJ2JpbGwnKSxcbiAgICAgICAgdG86IHVpZCgndG9tJyksXG4gICAgICAgIG1lc3NhZ2U6IFwiSGksIFRvbSFcIlxuICAgICAgfSlcbiAgICAgIC5zdWNjZWVkcyhcIk5vcm1hbCB3cml0ZS5cIilcblxuICAgICAgLmFzKCd0b20nKVxuICAgICAgLndyaXRlKG51bGwpXG4gICAgICAuZmFpbHMoXCJSZWNlaXZlciBjYW5ub3QgZGVsZXRlIG91dGJveCBtZXNzYWdlLlwiKVxuXG4gICAgICAuYXMoJ2JpbGwnKVxuXG4gICAgICAuYXQoJy91c2Vycy8nICsgdWlkKCdiaWxsJykgKyAnL291dGJveC8xL21lc3NhZ2UnKVxuICAgICAgLndyaXRlKFwiQmlsbCBnZXRzIG15IGluaGVyaXRhbmNlLlwiKVxuICAgICAgLmZhaWxzKFwiU2VuZGVyIGNhbm5vdCB0YW1wZXIgd2l0aCBvdXRib3ggbWVzc2FnZS5cIilcblxuICAgICAgLmF0KCcvdXNlcnMvJyArIHVpZCgnYmlsbCcpICsgJy9vdXRib3gvMS9mcm9tJylcbiAgICAgIC53cml0ZSgnYmlsbCcpXG4gICAgICAuZmFpbHMoXCJDYW4ndCBkbyBhIHBhcnRpYWwgb3ZlcndyaXRlIC0gZXZlbiBpZiBzYW1lIGRhdGEuXCIpXG5cbiAgICAgIC5hcygnYmlsbCcpXG4gICAgICAuYXQoJy91c2Vycy8nICsgdWlkKCdiaWxsJykgKyAnL291dGJveC8yJylcbiAgICAgIC53cml0ZSh7XG4gICAgICAgIGZyb206ICdqb2UnLFxuICAgICAgICB0bzogJ3RvbScsXG4gICAgICAgIG1lc3NhZ2U6IFwiSGksIFRvbSFcIlxuICAgICAgfSlcbiAgICAgIC5mYWlscyhcIkZyb20gZmllbGQgbXVzdCBiZSBjb3JyZWN0LlwiKVxuXG4gICAgICAud3JpdGUoe1xuICAgICAgICBmcm9tOiAnYmlsbCcsXG4gICAgICAgIHRvOiAndG9tJyxcbiAgICAgICAgbWVzc2FnZTogXCJIaSwgVG9tIVwiLFxuICAgICAgICBzcHVyaW91czogXCJzcHVyaW91c1wiXG4gICAgICB9KVxuICAgICAgLmZhaWxzKFwiTm8gdW5kZWZpbmVkIGZpZWxkcy5cIilcblxuICAgICAgLmF0KCcvdXNlcnMvJyArIHVpZCgnYmlsbCcpICsgJy9vdXRib3gvMScpXG4gICAgICAud3JpdGUobnVsbClcbiAgICAgIC5zdWNjZWVkcyhcIlNlbmRlciBjYW4gZGVsZXRlIHNlbnQgbWFpbCBpbiBvdXRib3guXCIpO1xuICB9KTtcblxuICB0ZXN0KFwiUmVhZCBwZXJtaXNzaW9ucy5cIiwgZnVuY3Rpb24ocnVsZXMpIHtcbiAgICBydWxlc1xuICAgICAgLmFzKCdiaWxsJylcbiAgICAgIC5hdCgnL3VzZXJzLycgKyB1aWQoJ2JpbGwnKSArICcvb3V0Ym94LzEnKVxuICAgICAgLndyaXRlKHtcbiAgICAgICAgZnJvbTogdWlkKCdiaWxsJyksXG4gICAgICAgIHRvOiB1aWQoJ3RvbScpLFxuICAgICAgICBtZXNzYWdlOiAnSGksIFRvbSEnXG4gICAgICB9KVxuICAgICAgLnN1Y2NlZWRzKFwiTm9ybWFsIHdyaXRlLlwiKVxuXG4gICAgICAuYXMoJ3RvbScpXG4gICAgICAuYXQoJy91c2Vycy8nICsgdWlkKCdiaWxsJykgKyAnL2luYm94LzEnKVxuICAgICAgLndyaXRlKHtcbiAgICAgICAgZnJvbTogdWlkKCd0b20nKSxcbiAgICAgICAgdG86IHVpZCgnYmlsbCcpLFxuICAgICAgICBtZXNzYWdlOiAnSGksIEJpbGwhJ1xuICAgICAgfSlcblxuICAgICAgLmFzKCdiaWxsJylcbiAgICAgIC5hdCgnL3VzZXJzLycgKyB1aWQoJ2JpbGwnKSArICcvaW5ib3gvMScpXG4gICAgICAucmVhZCgpXG4gICAgICAuc3VjY2VlZHMoXCJDYW4gcmVhZCBvd24gaW5ib3guXCIpXG5cbiAgICAgIC5hdCgnL3VzZXJzLycgKyB1aWQoJ2JpbGwnKSArICcvb3V0Ym94LzEnKVxuICAgICAgLnJlYWQoKVxuICAgICAgLnN1Y2NlZWRzKFwiQ2FuIHJlYWQgb3duIG91dGJveC5cIilcblxuICAgICAgLmFzKCd0b20nKVxuICAgICAgLmF0KCcvdXNlcnMvJyArIHVpZCgnYmlsbCcpICsgJy9pbmJveC8xJylcbiAgICAgIC5yZWFkKClcbiAgICAgIC5mYWlscyhcIkNhbid0IHJlYWQgQmlsbCdzIGluYm94LlwiKVxuXG4gICAgICAuYXQoJy91c2Vycy8nICsgdWlkKCdiaWxsJykgKyAnL291dGJveC8xJylcbiAgICAgIC5yZWFkKClcbiAgICAgIC5mYWlscyhcIkNhbid0IHJlYWQgQmlsbHMgb3V0Ym94LlwiKTtcbiAgfSk7XG59KTtcbiJdfQ==
"use strict";
exports.__esModule = true;
/*

@@ -17,3 +18,3 @@ * Copyright 2015 Google Inc. All Rights Reserved.

*/
var simulator_1 = require('../simulator');
var simulator_1 = require("../simulator");
var secrets = require('../../auth-secrets');

@@ -187,2 +188,2 @@ simulator_1.rulesSuite("RegExp", function (test) {

//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInRlc3QvcmVnZXhwLXRlc3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBOzs7Ozs7Ozs7Ozs7OztHQWNHO0FBQ0gsMEJBQXlCLGNBQWMsQ0FBQyxDQUFBO0FBQ3hDLElBQUksT0FBTyxHQUFHLE9BQU8sQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO0FBRTVDLHNCQUFVLENBQUMsUUFBUSxFQUFFLFVBQVMsSUFBSTtJQUNoQyxJQUFJLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxHQUFHLEVBQUUsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQzNDLElBQUksQ0FBQyxLQUFLLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztJQUU3QixJQUFJLENBQUMsZ0JBQWdCLEVBQUUsVUFBQyxLQUFLO1FBQzNCLEtBQUs7YUFDRixFQUFFLENBQUMsS0FBSyxDQUFDO2FBQ1QsS0FBSyxDQUFDLGFBQWEsQ0FBQzthQUNwQixRQUFRLENBQUMsWUFBWSxDQUFDO2FBRXRCLEtBQUssQ0FBQyxhQUFhLENBQUM7YUFDcEIsUUFBUSxDQUFDLGNBQWMsQ0FBQzthQUV4QixLQUFLLENBQUMsYUFBYSxDQUFDO2FBQ3BCLEtBQUssQ0FBQyxrQkFBa0IsQ0FBQzthQUV6QixLQUFLLENBQUMsY0FBYyxDQUFDO2FBQ3JCLEtBQUssQ0FBQyxXQUFXLENBQUM7YUFFbEIsS0FBSyxDQUFDLFdBQVcsQ0FBQzthQUNsQixLQUFLLENBQUMsWUFBWSxDQUFDO2FBRW5CLEtBQUssQ0FBQyxVQUFVLENBQUM7YUFDakIsS0FBSyxDQUFDLGlCQUFpQixDQUFDLENBQzFCO0lBQ0gsQ0FBQyxDQUFDLENBQUM7SUFFSCxJQUFJLENBQUMsZUFBZSxFQUFFLFVBQUMsS0FBSztRQUMxQixLQUFLO2FBQ0YsRUFBRSxDQUFDLFVBQVUsQ0FBQzthQUNkLEtBQUssQ0FBQyxHQUFHLENBQUM7YUFDVixRQUFRLENBQUMsT0FBTyxDQUFDO2FBRWpCLEtBQUssQ0FBQyxLQUFLLENBQUM7YUFDWixRQUFRLENBQUMsVUFBVSxDQUFDO2FBRXBCLEtBQUssQ0FBQyxNQUFNLENBQUM7YUFDYixRQUFRLENBQUMsbUJBQW1CLENBQUM7YUFFN0IsS0FBSyxDQUFDLE9BQU8sQ0FBQzthQUNkLEtBQUssQ0FBQyxrQkFBa0IsQ0FBQzthQUV6QixLQUFLLENBQUMsRUFBRSxDQUFDO2FBQ1QsS0FBSyxDQUFDLGVBQWUsQ0FBQzthQUV0QixLQUFLLENBQUMsR0FBRyxDQUFDO2FBQ1YsS0FBSyxDQUFDLGFBQWEsQ0FBQzthQUVwQixLQUFLLENBQUMsSUFBSSxDQUFDO2FBQ1gsS0FBSyxDQUFDLGFBQWEsQ0FBQzthQUVwQixLQUFLLENBQUMsS0FBSyxDQUFDO2FBQ1osS0FBSyxDQUFDLGNBQWMsQ0FBQyxDQUN2QjtJQUNILENBQUMsQ0FBQyxDQUFDO0lBRUgsSUFBSSxDQUFDLGFBQWEsRUFBRSxVQUFDLEtBQUs7UUFDeEIsS0FBSzthQUNGLEVBQUUsQ0FBQyxRQUFRLENBQUM7YUFDWixLQUFLLENBQUMsS0FBSyxDQUFDO2FBQ1osUUFBUSxDQUFDLE9BQU8sQ0FBQzthQUVqQixLQUFLLENBQUMsU0FBUyxDQUFDO2FBQ2hCLFFBQVEsQ0FBQyxxQkFBcUIsQ0FBQzthQUUvQixLQUFLLENBQUMsVUFBVSxDQUFDO2FBQ2pCLFFBQVEsQ0FBQyw2QkFBNkIsQ0FBQzthQUV2QyxLQUFLLENBQUMsSUFBSSxDQUFDO2FBQ1gsUUFBUSxDQUFDLG9CQUFvQixDQUFDO2FBRTlCLEtBQUssQ0FBQyxJQUFJLENBQUM7YUFDWCxRQUFRLENBQUMscUJBQXFCLENBQUM7YUFFL0IsS0FBSyxDQUFDLEtBQUssQ0FBQzthQUNaLFFBQVEsQ0FBQyx5QkFBeUIsQ0FBQzthQUVuQyxLQUFLLENBQUMsR0FBRyxDQUFDO2FBQ1YsS0FBSyxDQUFDLHFCQUFxQixDQUFDO2FBRTVCLEtBQUssQ0FBQyxHQUFHLENBQUM7YUFDVixRQUFRLENBQUMsT0FBTyxDQUFDO2FBRWpCLEtBQUssQ0FBQyxFQUFFLENBQUM7YUFDVCxLQUFLLENBQUMsZUFBZSxDQUFDO2FBRXRCLEtBQUssQ0FBQyxHQUFHLENBQUM7YUFDVixLQUFLLENBQUMsYUFBYSxDQUFDO2FBRXBCLEtBQUssQ0FBQyxJQUFJLENBQUM7YUFDWCxLQUFLLENBQUMsYUFBYSxDQUFDLENBQ3RCO0lBQ0gsQ0FBQyxDQUFDLENBQUM7SUFFSCxJQUFJLENBQUMsU0FBUyxFQUFFLFVBQUMsS0FBSztRQUNwQixLQUFLO2FBQ0YsRUFBRSxDQUFDLE1BQU0sQ0FBQzthQUNWLEtBQUssQ0FBQyxDQUFDLENBQUM7YUFDUixRQUFRLENBQUMsT0FBTyxDQUFDO2FBRWpCLEtBQUssQ0FBQyxHQUFHLENBQUM7YUFDVixRQUFRLENBQUMsZ0JBQWdCLENBQUM7YUFFMUIsS0FBSyxDQUFDLEdBQUcsQ0FBQzthQUNWLFFBQVEsQ0FBQyxVQUFVLENBQUM7YUFFcEIsS0FBSyxDQUFDLENBQUMsR0FBRyxDQUFDO2FBQ1gsUUFBUSxDQUFDLG1CQUFtQixDQUFDO2FBRTdCLEtBQUssQ0FBQyxHQUFHLENBQUM7YUFDVixLQUFLLENBQUMsNkJBQTZCLENBQUM7YUFFcEMsS0FBSyxDQUFDLEdBQUcsQ0FBQzthQUNWLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FDbEI7SUFDSCxDQUFDLENBQUMsQ0FBQztJQUVILElBQUksQ0FBQyxPQUFPLEVBQUUsVUFBQyxLQUFLO1FBQ2xCLEtBQUs7YUFDRixFQUFFLENBQUMsUUFBUSxDQUFDO2FBQ1osS0FBSyxDQUFDLEdBQUcsQ0FBQzthQUNWLFFBQVEsQ0FBQyxPQUFPLENBQUM7YUFFakIsS0FBSyxDQUFDLEdBQUcsQ0FBQzthQUNWLFFBQVEsQ0FBQyxPQUFPLENBQUM7YUFFakIsS0FBSyxDQUFDLE9BQU8sQ0FBQzthQUNkLFFBQVEsQ0FBQyxPQUFPLENBQUM7YUFFakIsS0FBSyxDQUFDLEtBQUssQ0FBQzthQUNaLEtBQUssQ0FBQyxVQUFVLENBQUM7YUFFakIsS0FBSyxDQUFDLENBQUMsQ0FBQzthQUNSLEtBQUssQ0FBQyxTQUFTLENBQUM7YUFFaEIsS0FBSyxDQUFDLElBQUksQ0FBQzthQUNYLEtBQUssQ0FBQyxVQUFVLENBQUM7YUFFakIsS0FBSyxDQUFDLGNBQWMsQ0FBQzthQUNyQixLQUFLLENBQUMsWUFBWSxDQUFDLENBQ3JCO0lBQ0gsQ0FBQyxDQUFDLENBQUM7SUFFSCxJQUFJLENBQUMsTUFBTSxFQUFFLFVBQUMsS0FBSztRQUNqQixLQUFLO2FBQ0YsRUFBRSxDQUFDLE9BQU8sQ0FBQzthQUNYLEtBQUssQ0FBQyxNQUFNLENBQUM7YUFDYixRQUFRLENBQUMsWUFBWSxDQUFDO2FBRXRCLEtBQUssQ0FBQyxNQUFNLENBQUM7YUFDYixRQUFRLENBQUMsZ0JBQWdCLENBQUM7YUFFMUIsS0FBSyxDQUFDLE1BQU0sQ0FBQzthQUNiLFFBQVEsQ0FBQyx5QkFBeUIsQ0FBQzthQUVuQyxLQUFLLENBQUMsTUFBTSxDQUFDO2FBQ2IsUUFBUSxDQUFDLHlCQUF5QixDQUFDO2FBRW5DLEtBQUssQ0FBQyxPQUFPLENBQUM7YUFDZCxLQUFLLENBQUMsY0FBYyxDQUFDO2FBRXJCLEtBQUssQ0FBQyxNQUFNLENBQUM7YUFDYixLQUFLLENBQUMsaUJBQWlCLENBQUM7YUFFeEIsS0FBSyxDQUFDLElBQUksQ0FBQzthQUNYLEtBQUssQ0FBQyxTQUFTLENBQUM7YUFFaEIsS0FBSyxDQUFDLEVBQUUsQ0FBQzthQUNULEtBQUssQ0FBQyxlQUFlLENBQUMsQ0FDeEI7SUFDSCxDQUFDLENBQUMsQ0FBQztJQUVILElBQUksQ0FBQyxTQUFTLEVBQUUsVUFBQyxLQUFLO1FBQ3BCLEtBQUs7YUFDRixFQUFFLENBQUMsT0FBTyxDQUFDO2FBQ1gsS0FBSyxDQUFDLFlBQVksQ0FBQzthQUNuQixRQUFRLENBQUMsUUFBUSxDQUFDO2FBRWxCLEtBQUssQ0FBQyxZQUFZLENBQUM7YUFDbkIsUUFBUSxDQUFDLGdCQUFnQixDQUFDO2FBRTFCLEtBQUssQ0FBQyxZQUFZLENBQUM7YUFDbkIsUUFBUSxDQUFDLGNBQWMsQ0FBQzthQUV4QixLQUFLLENBQUMsWUFBWSxDQUFDO2FBQ25CLEtBQUssQ0FBQyxpQkFBaUIsQ0FBQzthQUV4QixLQUFLLENBQUMsWUFBWSxDQUFDO2FBQ25CLEtBQUssQ0FBQyxnQkFBZ0IsQ0FBQzthQUV2QixLQUFLLENBQUMsRUFBRSxDQUFDO2FBQ1QsS0FBSyxDQUFDLGVBQWUsQ0FBQyxDQUN4QjtJQUNILENBQUMsQ0FBQyxDQUFDO0lBRUgsSUFBSSxDQUFDLE1BQU0sRUFBRSxVQUFDLEtBQUs7UUFDakIsS0FBSzthQUNGLEVBQUUsQ0FBQyxPQUFPLENBQUM7YUFDWCxLQUFLLENBQUMsZ0JBQWdCLENBQUM7YUFDdkIsUUFBUSxDQUFDLG9CQUFvQixDQUFDO2FBRTlCLEtBQUssQ0FBQyxpQkFBaUIsQ0FBQzthQUN4QixRQUFRLENBQUMsZ0JBQWdCLENBQUM7YUFFMUIsS0FBSyxDQUFDLGdCQUFnQixDQUFDO2FBQ3ZCLEtBQUssQ0FBQyx1QkFBdUIsQ0FBQzthQUU5QixLQUFLLENBQUMsaUJBQWlCLENBQUM7YUFDeEIsS0FBSyxDQUFDLHdCQUF3QixDQUFDO2FBRS9CLEtBQUssQ0FBQyxrQkFBa0IsQ0FBQzthQUN6QixLQUFLLENBQUMseUJBQXlCLENBQUM7YUFFaEMsS0FBSyxDQUFDLFVBQVUsQ0FBQzthQUNqQixLQUFLLENBQUMsZ0NBQWdDLENBQUM7YUFFdkMsS0FBSyxDQUFDLFVBQVUsQ0FBQzthQUNqQixLQUFLLENBQUMsZ0JBQWdCLENBQUM7YUFFdkIsS0FBSyxDQUFDLGtCQUFrQixDQUFDO2FBQ3pCLEtBQUssQ0FBQyx3QkFBd0IsQ0FBQzthQUUvQixLQUFLLENBQUMsV0FBVyxDQUFDO2FBQ2xCLEtBQUssQ0FBQyxvQkFBb0IsQ0FBQyxDQUM3QjtJQUNILENBQUMsQ0FBQyxDQUFDO0lBRUgsSUFBSSxDQUFDLFFBQVEsRUFBRSxVQUFDLEtBQUs7UUFDbkIsS0FBSzthQUNGLEVBQUUsQ0FBQyxTQUFTLENBQUM7YUFDYixLQUFLLENBQUMsWUFBWSxDQUFDO2FBQ25CLFFBQVEsQ0FBQyxnQkFBZ0IsQ0FBQzthQUUxQixLQUFLLENBQUMsWUFBWSxDQUFDO2FBQ25CLEtBQUssQ0FBQyxlQUFlLENBQUMsQ0FDeEI7SUFDSCxDQUFDLENBQUMsQ0FBQztBQUNMLENBQUMsQ0FBQyxDQUFDIiwiZmlsZSI6InRlc3QvcmVnZXhwLXRlc3QuanMiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogQ29weXJpZ2h0IDIwMTUgR29vZ2xlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cbmltcG9ydCB7cnVsZXNTdWl0ZX0gZnJvbSAnLi4vc2ltdWxhdG9yJztcbmxldCBzZWNyZXRzID0gcmVxdWlyZSgnLi4vLi4vYXV0aC1zZWNyZXRzJyk7XG5cbnJ1bGVzU3VpdGUoXCJSZWdFeHBcIiwgZnVuY3Rpb24odGVzdCkge1xuICB0ZXN0LmRhdGFiYXNlKHNlY3JldHMuQVBQLCBzZWNyZXRzLlNFQ1JFVCk7XG4gIHRlc3QucnVsZXMoJ3NhbXBsZXMvcmVnZXhwJyk7XG5cbiAgdGVzdChcIlNvY2lhbFNlY3VyaXR5XCIsIChydWxlcykgPT4ge1xuICAgIHJ1bGVzXG4gICAgICAuYXQoJy9zcycpXG4gICAgICAud3JpdGUoJzAwMC0wMC0wMDAwJylcbiAgICAgIC5zdWNjZWVkcyhcIkFsbCB6ZXJvcy5cIilcblxuICAgICAgLndyaXRlKCcxMjMtNDUtNjc4OScpXG4gICAgICAuc3VjY2VlZHMoXCJBbGwgbnVtYmVycy5cIilcblxuICAgICAgLndyaXRlKCcwMDAtMGEtMDAwMCcpXG4gICAgICAuZmFpbHMoXCJDb250YWlucyBsZXR0ZXIuXCIpXG5cbiAgICAgIC53cml0ZSgnMDAwLTAwLTAwMDAwJylcbiAgICAgIC5mYWlscyhcIlRvbyBsb25nLlwiKVxuXG4gICAgICAud3JpdGUoJzAwMC0wLTAwMCcpXG4gICAgICAuZmFpbHMoXCJUb28gc2hvcnQuXCIpXG5cbiAgICAgIC53cml0ZSgnMDAwMDAwMDAnKVxuICAgICAgLmZhaWxzKFwiTWlzc2luZyBkYXNoZXMuXCIpXG4gICAgO1xuICB9KTtcblxuICB0ZXN0KFwiSW50ZWdlclN0cmluZ1wiLCAocnVsZXMpID0+IHtcbiAgICBydWxlc1xuICAgICAgLmF0KCcvaW50ZWdlcicpXG4gICAgICAud3JpdGUoJzAnKVxuICAgICAgLnN1Y2NlZWRzKFwiWmVyby5cIilcblxuICAgICAgLndyaXRlKCcxMjMnKVxuICAgICAgLnN1Y2NlZWRzKFwiRXhhbXBsZS5cIilcblxuICAgICAgLndyaXRlKCctMTIzJylcbiAgICAgIC5zdWNjZWVkcyhcIk5lZ2F0aXZlIEV4YW1wbGUuXCIpXG5cbiAgICAgIC53cml0ZSgnLS0xMjMnKVxuICAgICAgLmZhaWxzKFwiRG91YmxlIG5lZ2F0aXZlLlwiKVxuXG4gICAgICAud3JpdGUoJycpXG4gICAgICAuZmFpbHMoXCJFbXB0eSBzdHJpbmcuXCIpXG5cbiAgICAgIC53cml0ZSgnYScpXG4gICAgICAuZmFpbHMoXCJBbHBoYWJldGljLlwiKVxuXG4gICAgICAud3JpdGUoJyAwJylcbiAgICAgIC5mYWlscyhcIkhhcyBzcGFjZXMuXCIpXG5cbiAgICAgIC53cml0ZSgnMC4wJylcbiAgICAgIC5mYWlscyhcIkhhcyBkZWNpbWFsLlwiKVxuICAgIDtcbiAgfSk7XG5cbiAgdGVzdChcIkZsb2F0U3RyaW5nXCIsIChydWxlcykgPT4ge1xuICAgIHJ1bGVzXG4gICAgICAuYXQoJy9mbG9hdCcpXG4gICAgICAud3JpdGUoJzAuMCcpXG4gICAgICAuc3VjY2VlZHMoXCJaZXJvLlwiKVxuXG4gICAgICAud3JpdGUoJzEyMy40NTYnKVxuICAgICAgLnN1Y2NlZWRzKFwiRml4ZWQgcG9pbnQgbnVtYmVyLlwiKVxuXG4gICAgICAud3JpdGUoJy0xMjMuNDU2JylcbiAgICAgIC5zdWNjZWVkcyhcIk5lZ2F0aXZlIGl4ZWQgcG9pbnQgbnVtYmVyLlwiKVxuXG4gICAgICAud3JpdGUoJy4xJylcbiAgICAgIC5zdWNjZWVkcyhcIk5vIGxlYWRpbmcgZGlnaXRzLlwiKVxuXG4gICAgICAud3JpdGUoJzEuJylcbiAgICAgIC5zdWNjZWVkcyhcIk5vIHRyYWlsaW5nIGRpZ2l0cy5cIilcblxuICAgICAgLndyaXRlKCctLjEnKVxuICAgICAgLnN1Y2NlZWRzKFwiTmVnYXRpdmUgZnJhY3Rpb24gb25seS5cIilcblxuICAgICAgLndyaXRlKCcuJylcbiAgICAgIC5mYWlscyhcIkp1c3QgZGVjaW1hbCBwb2ludC5cIilcblxuICAgICAgLndyaXRlKCcwJylcbiAgICAgIC5zdWNjZWVkcyhcIlplcm8uXCIpXG5cbiAgICAgIC53cml0ZSgnJylcbiAgICAgIC5mYWlscyhcIkVtcHR5IHN0cmluZy5cIilcblxuICAgICAgLndyaXRlKCdhJylcbiAgICAgIC5mYWlscyhcIkFscGhhYmV0aWMuXCIpXG5cbiAgICAgIC53cml0ZSgnIDAnKVxuICAgICAgLmZhaWxzKFwiSGFzIHNwYWNlcy5cIilcbiAgICA7XG4gIH0pO1xuXG4gIHRlc3QoXCJJbnRlZ2VyXCIsIChydWxlcykgPT4ge1xuICAgIHJ1bGVzXG4gICAgICAuYXQoJy9pbnQnKVxuICAgICAgLndyaXRlKDApXG4gICAgICAuc3VjY2VlZHMoXCJaZXJvLlwiKVxuXG4gICAgICAud3JpdGUoMC4wKVxuICAgICAgLnN1Y2NlZWRzKFwiRmxvYXRpbmcgWmVyby5cIilcblxuICAgICAgLndyaXRlKDEyMylcbiAgICAgIC5zdWNjZWVkcyhcIkV4YW1wbGUuXCIpXG5cbiAgICAgIC53cml0ZSgtMTIzKVxuICAgICAgLnN1Y2NlZWRzKFwiTmVnYXRpdmUgZXhhbXBsZS5cIilcblxuICAgICAgLndyaXRlKDEuMSlcbiAgICAgIC5mYWlscyhcIk5vIGZyYWN0aW9uYWwgcGFydCBhbGxvd2VkLlwiKVxuXG4gICAgICAud3JpdGUoJzAnKVxuICAgICAgLmZhaWxzKFwiU3RyaW5nLlwiKVxuICAgIDtcbiAgfSk7XG5cbiAgdGVzdChcIkFscGhhXCIsIChydWxlcykgPT4ge1xuICAgIHJ1bGVzXG4gICAgICAuYXQoJy9hbHBoYScpXG4gICAgICAud3JpdGUoJ2EnKVxuICAgICAgLnN1Y2NlZWRzKFwiQWxwaGFcIilcblxuICAgICAgLndyaXRlKCdBJylcbiAgICAgIC5zdWNjZWVkcyhcIkFscGhhXCIpXG5cbiAgICAgIC53cml0ZShcImhlbGxvXCIpXG4gICAgICAuc3VjY2VlZHMoXCJXb3JkLlwiKVxuXG4gICAgICAud3JpdGUoXCIxMjNcIilcbiAgICAgIC5mYWlscyhcIk51bWVyaWMuXCIpXG5cbiAgICAgIC53cml0ZSgxKVxuICAgICAgLmZhaWxzKFwiTnVtYmVyLlwiKVxuXG4gICAgICAud3JpdGUodHJ1ZSlcbiAgICAgIC5mYWlscyhcIkJvb2xlYW4uXCIpXG5cbiAgICAgIC53cml0ZShcImhlbGxvLCB3b3JsZFwiKVxuICAgICAgLmZhaWxzKFwiTm9uLWFscGhhLlwiKVxuICAgIDtcbiAgfSk7XG5cbiAgdGVzdChcIlllYXJcIiwgKHJ1bGVzKSA9PiB7XG4gICAgcnVsZXNcbiAgICAgIC5hdCgnL3llYXInKVxuICAgICAgLndyaXRlKCcyMDE1JylcbiAgICAgIC5zdWNjZWVkcyhcIlRoaXMgeWVhci5cIilcblxuICAgICAgLndyaXRlKCcxOTAwJylcbiAgICAgIC5zdWNjZWVkcyhcIkVhcmxpZXN0IHllYXIuXCIpXG5cbiAgICAgIC53cml0ZSgnMTk5OScpXG4gICAgICAuc3VjY2VlZHMoXCJMYXRlc3QgaW4gMjB0aCBjZW50dXJ5LlwiKVxuXG4gICAgICAud3JpdGUoJzIwOTknKVxuICAgICAgLnN1Y2NlZWRzKFwiTGF0ZXN0IGluIDIxdGggY2VudHVyeS5cIilcblxuICAgICAgLndyaXRlKCcyMDE1ICcpXG4gICAgICAuZmFpbHMoXCJFeHRyYSBzcGFjZS5cIilcblxuICAgICAgLndyaXRlKCcyMTAwJylcbiAgICAgIC5mYWlscyhcIkRpc3RhbnQgZnV0dXJlLlwiKVxuXG4gICAgICAud3JpdGUoMTk2MClcbiAgICAgIC5mYWlscyhcIk51bWJlci5cIilcblxuICAgICAgLndyaXRlKCcnKVxuICAgICAgLmZhaWxzKFwiRW1wdHkgc3RyaW5nLlwiKVxuICAgIDtcbiAgfSk7XG5cbiAgdGVzdChcIklTT0RhdGVcIiwgKHJ1bGVzKSA9PiB7XG4gICAgcnVsZXNcbiAgICAgIC5hdCgnL2RhdGUnKVxuICAgICAgLndyaXRlKCcyMDE1LTExLTIwJylcbiAgICAgIC5zdWNjZWVkcyhcIlRvZGF5LlwiKVxuXG4gICAgICAud3JpdGUoJzE5MDAtMDEtMDEnKVxuICAgICAgLnN1Y2NlZWRzKFwiRWFybGllc3QgZGF0ZS5cIilcblxuICAgICAgLndyaXRlKCcyMDk5LTEyLTMxJylcbiAgICAgIC5zdWNjZWVkcyhcIkxhdGVzdCBkYXRlLlwiKVxuXG4gICAgICAud3JpdGUoJzE4OTktMTItMzEnKVxuICAgICAgLmZhaWxzKFwiVG9vIGVhcmx5IGRhdGUuXCIpXG5cbiAgICAgIC53cml0ZSgnMjEwMC0wMS0wMScpXG4gICAgICAuZmFpbHMoXCJUb28gbGF0ZSBkYXRlLlwiKVxuXG4gICAgICAud3JpdGUoJycpXG4gICAgICAuZmFpbHMoXCJFbXB0eSBzdHJpbmcuXCIpXG4gICAgO1xuICB9KTtcblxuICB0ZXN0KFwiU2x1Z1wiLCAocnVsZXMpID0+IHtcbiAgICBydWxlc1xuICAgICAgLmF0KCcvc2x1ZycpXG4gICAgICAud3JpdGUoJ3RoaXMtaXMtYS1zbHVnJylcbiAgICAgIC5zdWNjZWVkcyhcIlR5cGljYWwgc2x1ZyB0ZXh0LlwiKVxuXG4gICAgICAud3JpdGUoJ251bWJlcnMtMjAxNi1vaycpXG4gICAgICAuc3VjY2VlZHMoXCJOdW1iZXIgYXJlIG9rLlwiKVxuXG4gICAgICAud3JpdGUoJ2RvdWJsZS0taHlwaGVuJylcbiAgICAgIC5mYWlscyhcIkRvdWJsZSBoeXBoZW4gbm90IG9rLlwiKVxuXG4gICAgICAud3JpdGUoJy1sZWFkaW5nLWh5cGhlbicpXG4gICAgICAuZmFpbHMoXCJMZWFkaW5nIGh5cGhlbiBub3Qgb2suXCIpXG5cbiAgICAgIC53cml0ZSgndHJhaWxpbmctaHlwaGVuLScpXG4gICAgICAuZmFpbHMoXCJUcmFpbGluZyBoeXBoZW4gbm90IG9rLlwiKVxuXG4gICAgICAud3JpdGUoJ25vaHlwaGVuJylcbiAgICAgIC5mYWlscyhcIk11c3QgaGF2ZSBhdCBsZWFzdCBvbmUgaHlwaGVuLlwiKVxuXG4gICAgICAud3JpdGUoJ25vLVVwcGVyJylcbiAgICAgIC5mYWlscyhcIk5vIHVwcGVyIGNhc2UuXCIpXG5cbiAgICAgIC53cml0ZSgnbm8tc3BlY2lhbCYtY2hhcicpXG4gICAgICAuZmFpbHMoXCJObyBzcGVjaWFsIGNoYXJhY3RlcnMuXCIpXG5cbiAgICAgIC53cml0ZSgnbm8gc3BhY2VzJylcbiAgICAgIC5mYWlscyhcIk5vIHNwYWNlcyBhbGxvd2VkLlwiKVxuICAgIDtcbiAgfSk7XG5cbiAgdGVzdChcIkRvbWFpblwiLCAocnVsZXMpID0+IHtcbiAgICBydWxlc1xuICAgICAgLmF0KCcvZG9tYWluJylcbiAgICAgIC53cml0ZSgnZ29vZ2xlLmNvbScpXG4gICAgICAuc3VjY2VlZHMoXCJTaW1wbGUgZG9tYWluLlwiKVxuXG4gICAgICAud3JpdGUoJ2dvb2dsZS1jb20nKVxuICAgICAgLmZhaWxzKFwiTm90IGEgZG9tYWluLlwiKVxuICAgIDtcbiAgfSk7XG59KTtcbiJdfQ==
//# sourceMappingURL=data:application/json;charset=utf8;base64,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QUMsQ0FBQyIsImZpbGUiOiJ0ZXN0L3JlZ2V4cC10ZXN0LmpzIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIENvcHlyaWdodCAyMDE1IEdvb2dsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5pbXBvcnQge3J1bGVzU3VpdGV9IGZyb20gJy4uL3NpbXVsYXRvcic7XG5sZXQgc2VjcmV0cyA9IHJlcXVpcmUoJy4uLy4uL2F1dGgtc2VjcmV0cycpO1xuXG5ydWxlc1N1aXRlKFwiUmVnRXhwXCIsIGZ1bmN0aW9uKHRlc3QpIHtcbiAgdGVzdC5kYXRhYmFzZShzZWNyZXRzLkFQUCwgc2VjcmV0cy5TRUNSRVQpO1xuICB0ZXN0LnJ1bGVzKCdzYW1wbGVzL3JlZ2V4cCcpO1xuXG4gIHRlc3QoXCJTb2NpYWxTZWN1cml0eVwiLCAocnVsZXMpID0+IHtcbiAgICBydWxlc1xuICAgICAgLmF0KCcvc3MnKVxuICAgICAgLndyaXRlKCcwMDAtMDAtMDAwMCcpXG4gICAgICAuc3VjY2VlZHMoXCJBbGwgemVyb3MuXCIpXG5cbiAgICAgIC53cml0ZSgnMTIzLTQ1LTY3ODknKVxuICAgICAgLnN1Y2NlZWRzKFwiQWxsIG51bWJlcnMuXCIpXG5cbiAgICAgIC53cml0ZSgnMDAwLTBhLTAwMDAnKVxuICAgICAgLmZhaWxzKFwiQ29udGFpbnMgbGV0dGVyLlwiKVxuXG4gICAgICAud3JpdGUoJzAwMC0wMC0wMDAwMCcpXG4gICAgICAuZmFpbHMoXCJUb28gbG9uZy5cIilcblxuICAgICAgLndyaXRlKCcwMDAtMC0wMDAnKVxuICAgICAgLmZhaWxzKFwiVG9vIHNob3J0LlwiKVxuXG4gICAgICAud3JpdGUoJzAwMDAwMDAwJylcbiAgICAgIC5mYWlscyhcIk1pc3NpbmcgZGFzaGVzLlwiKVxuICAgIDtcbiAgfSk7XG5cbiAgdGVzdChcIkludGVnZXJTdHJpbmdcIiwgKHJ1bGVzKSA9PiB7XG4gICAgcnVsZXNcbiAgICAgIC5hdCgnL2ludGVnZXInKVxuICAgICAgLndyaXRlKCcwJylcbiAgICAgIC5zdWNjZWVkcyhcIlplcm8uXCIpXG5cbiAgICAgIC53cml0ZSgnMTIzJylcbiAgICAgIC5zdWNjZWVkcyhcIkV4YW1wbGUuXCIpXG5cbiAgICAgIC53cml0ZSgnLTEyMycpXG4gICAgICAuc3VjY2VlZHMoXCJOZWdhdGl2ZSBFeGFtcGxlLlwiKVxuXG4gICAgICAud3JpdGUoJy0tMTIzJylcbiAgICAgIC5mYWlscyhcIkRvdWJsZSBuZWdhdGl2ZS5cIilcblxuICAgICAgLndyaXRlKCcnKVxuICAgICAgLmZhaWxzKFwiRW1wdHkgc3RyaW5nLlwiKVxuXG4gICAgICAud3JpdGUoJ2EnKVxuICAgICAgLmZhaWxzKFwiQWxwaGFiZXRpYy5cIilcblxuICAgICAgLndyaXRlKCcgMCcpXG4gICAgICAuZmFpbHMoXCJIYXMgc3BhY2VzLlwiKVxuXG4gICAgICAud3JpdGUoJzAuMCcpXG4gICAgICAuZmFpbHMoXCJIYXMgZGVjaW1hbC5cIilcbiAgICA7XG4gIH0pO1xuXG4gIHRlc3QoXCJGbG9hdFN0cmluZ1wiLCAocnVsZXMpID0+IHtcbiAgICBydWxlc1xuICAgICAgLmF0KCcvZmxvYXQnKVxuICAgICAgLndyaXRlKCcwLjAnKVxuICAgICAgLnN1Y2NlZWRzKFwiWmVyby5cIilcblxuICAgICAgLndyaXRlKCcxMjMuNDU2JylcbiAgICAgIC5zdWNjZWVkcyhcIkZpeGVkIHBvaW50IG51bWJlci5cIilcblxuICAgICAgLndyaXRlKCctMTIzLjQ1NicpXG4gICAgICAuc3VjY2VlZHMoXCJOZWdhdGl2ZSBpeGVkIHBvaW50IG51bWJlci5cIilcblxuICAgICAgLndyaXRlKCcuMScpXG4gICAgICAuc3VjY2VlZHMoXCJObyBsZWFkaW5nIGRpZ2l0cy5cIilcblxuICAgICAgLndyaXRlKCcxLicpXG4gICAgICAuc3VjY2VlZHMoXCJObyB0cmFpbGluZyBkaWdpdHMuXCIpXG5cbiAgICAgIC53cml0ZSgnLS4xJylcbiAgICAgIC5zdWNjZWVkcyhcIk5lZ2F0aXZlIGZyYWN0aW9uIG9ubHkuXCIpXG5cbiAgICAgIC53cml0ZSgnLicpXG4gICAgICAuZmFpbHMoXCJKdXN0IGRlY2ltYWwgcG9pbnQuXCIpXG5cbiAgICAgIC53cml0ZSgnMCcpXG4gICAgICAuc3VjY2VlZHMoXCJaZXJvLlwiKVxuXG4gICAgICAud3JpdGUoJycpXG4gICAgICAuZmFpbHMoXCJFbXB0eSBzdHJpbmcuXCIpXG5cbiAgICAgIC53cml0ZSgnYScpXG4gICAgICAuZmFpbHMoXCJBbHBoYWJldGljLlwiKVxuXG4gICAgICAud3JpdGUoJyAwJylcbiAgICAgIC5mYWlscyhcIkhhcyBzcGFjZXMuXCIpXG4gICAgO1xuICB9KTtcblxuICB0ZXN0KFwiSW50ZWdlclwiLCAocnVsZXMpID0+IHtcbiAgICBydWxlc1xuICAgICAgLmF0KCcvaW50JylcbiAgICAgIC53cml0ZSgwKVxuICAgICAgLnN1Y2NlZWRzKFwiWmVyby5cIilcblxuICAgICAgLndyaXRlKDAuMClcbiAgICAgIC5zdWNjZWVkcyhcIkZsb2F0aW5nIFplcm8uXCIpXG5cbiAgICAgIC53cml0ZSgxMjMpXG4gICAgICAuc3VjY2VlZHMoXCJFeGFtcGxlLlwiKVxuXG4gICAgICAud3JpdGUoLTEyMylcbiAgICAgIC5zdWNjZWVkcyhcIk5lZ2F0aXZlIGV4YW1wbGUuXCIpXG5cbiAgICAgIC53cml0ZSgxLjEpXG4gICAgICAuZmFpbHMoXCJObyBmcmFjdGlvbmFsIHBhcnQgYWxsb3dlZC5cIilcblxuICAgICAgLndyaXRlKCcwJylcbiAgICAgIC5mYWlscyhcIlN0cmluZy5cIilcbiAgICA7XG4gIH0pO1xuXG4gIHRlc3QoXCJBbHBoYVwiLCAocnVsZXMpID0+IHtcbiAgICBydWxlc1xuICAgICAgLmF0KCcvYWxwaGEnKVxuICAgICAgLndyaXRlKCdhJylcbiAgICAgIC5zdWNjZWVkcyhcIkFscGhhXCIpXG5cbiAgICAgIC53cml0ZSgnQScpXG4gICAgICAuc3VjY2VlZHMoXCJBbHBoYVwiKVxuXG4gICAgICAud3JpdGUoXCJoZWxsb1wiKVxuICAgICAgLnN1Y2NlZWRzKFwiV29yZC5cIilcblxuICAgICAgLndyaXRlKFwiMTIzXCIpXG4gICAgICAuZmFpbHMoXCJOdW1lcmljLlwiKVxuXG4gICAgICAud3JpdGUoMSlcbiAgICAgIC5mYWlscyhcIk51bWJlci5cIilcblxuICAgICAgLndyaXRlKHRydWUpXG4gICAgICAuZmFpbHMoXCJCb29sZWFuLlwiKVxuXG4gICAgICAud3JpdGUoXCJoZWxsbywgd29ybGRcIilcbiAgICAgIC5mYWlscyhcIk5vbi1hbHBoYS5cIilcbiAgICA7XG4gIH0pO1xuXG4gIHRlc3QoXCJZZWFyXCIsIChydWxlcykgPT4ge1xuICAgIHJ1bGVzXG4gICAgICAuYXQoJy95ZWFyJylcbiAgICAgIC53cml0ZSgnMjAxNScpXG4gICAgICAuc3VjY2VlZHMoXCJUaGlzIHllYXIuXCIpXG5cbiAgICAgIC53cml0ZSgnMTkwMCcpXG4gICAgICAuc3VjY2VlZHMoXCJFYXJsaWVzdCB5ZWFyLlwiKVxuXG4gICAgICAud3JpdGUoJzE5OTknKVxuICAgICAgLnN1Y2NlZWRzKFwiTGF0ZXN0IGluIDIwdGggY2VudHVyeS5cIilcblxuICAgICAgLndyaXRlKCcyMDk5JylcbiAgICAgIC5zdWNjZWVkcyhcIkxhdGVzdCBpbiAyMXRoIGNlbnR1cnkuXCIpXG5cbiAgICAgIC53cml0ZSgnMjAxNSAnKVxuICAgICAgLmZhaWxzKFwiRXh0cmEgc3BhY2UuXCIpXG5cbiAgICAgIC53cml0ZSgnMjEwMCcpXG4gICAgICAuZmFpbHMoXCJEaXN0YW50IGZ1dHVyZS5cIilcblxuICAgICAgLndyaXRlKDE5NjApXG4gICAgICAuZmFpbHMoXCJOdW1iZXIuXCIpXG5cbiAgICAgIC53cml0ZSgnJylcbiAgICAgIC5mYWlscyhcIkVtcHR5IHN0cmluZy5cIilcbiAgICA7XG4gIH0pO1xuXG4gIHRlc3QoXCJJU09EYXRlXCIsIChydWxlcykgPT4ge1xuICAgIHJ1bGVzXG4gICAgICAuYXQoJy9kYXRlJylcbiAgICAgIC53cml0ZSgnMjAxNS0xMS0yMCcpXG4gICAgICAuc3VjY2VlZHMoXCJUb2RheS5cIilcblxuICAgICAgLndyaXRlKCcxOTAwLTAxLTAxJylcbiAgICAgIC5zdWNjZWVkcyhcIkVhcmxpZXN0IGRhdGUuXCIpXG5cbiAgICAgIC53cml0ZSgnMjA5OS0xMi0zMScpXG4gICAgICAuc3VjY2VlZHMoXCJMYXRlc3QgZGF0ZS5cIilcblxuICAgICAgLndyaXRlKCcxODk5LTEyLTMxJylcbiAgICAgIC5mYWlscyhcIlRvbyBlYXJseSBkYXRlLlwiKVxuXG4gICAgICAud3JpdGUoJzIxMDAtMDEtMDEnKVxuICAgICAgLmZhaWxzKFwiVG9vIGxhdGUgZGF0ZS5cIilcblxuICAgICAgLndyaXRlKCcnKVxuICAgICAgLmZhaWxzKFwiRW1wdHkgc3RyaW5nLlwiKVxuICAgIDtcbiAgfSk7XG5cbiAgdGVzdChcIlNsdWdcIiwgKHJ1bGVzKSA9PiB7XG4gICAgcnVsZXNcbiAgICAgIC5hdCgnL3NsdWcnKVxuICAgICAgLndyaXRlKCd0aGlzLWlzLWEtc2x1ZycpXG4gICAgICAuc3VjY2VlZHMoXCJUeXBpY2FsIHNsdWcgdGV4dC5cIilcblxuICAgICAgLndyaXRlKCdudW1iZXJzLTIwMTYtb2snKVxuICAgICAgLnN1Y2NlZWRzKFwiTnVtYmVyIGFyZSBvay5cIilcblxuICAgICAgLndyaXRlKCdkb3VibGUtLWh5cGhlbicpXG4gICAgICAuZmFpbHMoXCJEb3VibGUgaHlwaGVuIG5vdCBvay5cIilcblxuICAgICAgLndyaXRlKCctbGVhZGluZy1oeXBoZW4nKVxuICAgICAgLmZhaWxzKFwiTGVhZGluZyBoeXBoZW4gbm90IG9rLlwiKVxuXG4gICAgICAud3JpdGUoJ3RyYWlsaW5nLWh5cGhlbi0nKVxuICAgICAgLmZhaWxzKFwiVHJhaWxpbmcgaHlwaGVuIG5vdCBvay5cIilcblxuICAgICAgLndyaXRlKCdub2h5cGhlbicpXG4gICAgICAuZmFpbHMoXCJNdXN0IGhhdmUgYXQgbGVhc3Qgb25lIGh5cGhlbi5cIilcblxuICAgICAgLndyaXRlKCduby1VcHBlcicpXG4gICAgICAuZmFpbHMoXCJObyB1cHBlciBjYXNlLlwiKVxuXG4gICAgICAud3JpdGUoJ25vLXNwZWNpYWwmLWNoYXInKVxuICAgICAgLmZhaWxzKFwiTm8gc3BlY2lhbCBjaGFyYWN0ZXJzLlwiKVxuXG4gICAgICAud3JpdGUoJ25vIHNwYWNlcycpXG4gICAgICAuZmFpbHMoXCJObyBzcGFjZXMgYWxsb3dlZC5cIilcbiAgICA7XG4gIH0pO1xuXG4gIHRlc3QoXCJEb21haW5cIiwgKHJ1bGVzKSA9PiB7XG4gICAgcnVsZXNcbiAgICAgIC5hdCgnL2RvbWFpbicpXG4gICAgICAud3JpdGUoJ2dvb2dsZS5jb20nKVxuICAgICAgLnN1Y2NlZWRzKFwiU2ltcGxlIGRvbWFpbi5cIilcblxuICAgICAgLndyaXRlKCdnb29nbGUtY29tJylcbiAgICAgIC5mYWlscyhcIk5vdCBhIGRvbWFpbi5cIilcbiAgICA7XG4gIH0pO1xufSk7XG4iXX0=
"use strict";
exports.__esModule = true;
exports.samples = [

@@ -26,2 +27,2 @@ "all_access",

//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInRlc3Qvc2FtcGxlLWZpbGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBVyxlQUFPLEdBQUc7SUFDbkIsWUFBWTtJQUNaLE1BQU07SUFDTixxQkFBcUI7SUFDckIsVUFBVTtJQUNWLHNCQUFzQjtJQUN0QixZQUFZO0lBQ1osVUFBVTtJQUNWLFFBQVE7SUFDUixXQUFXO0lBQ1gsV0FBVztJQUNYLFdBQVc7SUFDWCxXQUFXO0lBQ1gsVUFBVTtJQUNWLE1BQU07SUFDTixZQUFZO0lBQ1osY0FBYztJQUNkLFFBQVE7SUFDUixZQUFZO0lBQ1osZ0JBQWdCO0lBQ2hCLGVBQWU7SUFDZixTQUFTO0NBQ1YsQ0FBQyIsImZpbGUiOiJ0ZXN0L3NhbXBsZS1maWxlcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBsZXQgc2FtcGxlcyA9IFtcbiAgXCJhbGxfYWNjZXNzXCIsXG4gIFwiY2hhdFwiLFxuICBcImNoaWxkcmVuLWJ5LW5lc3RpbmdcIixcbiAgXCJjaGlsZHJlblwiLFxuICBcImNyZWF0ZS11cGRhdGUtZGVsZXRlXCIsXG4gIFwiZnVuY3Rpb25hbFwiLFxuICBcImdlbmVyaWNzXCIsXG4gIFwiZ3JvdXBzXCIsXG4gIFwiaXNzdWUtMTExXCIsXG4gIFwiaXNzdWUtMTE4XCIsXG4gIFwiaXNzdWUtMTM2XCIsXG4gIFwiaXNzdWUtMTY5XCIsXG4gIFwiaXNzdWUtOTdcIixcbiAgXCJtYWlsXCIsXG4gIFwibWFwLXNjYWxhclwiLFxuICBcIm11bHRpLXVwZGF0ZVwiLFxuICBcInJlZ2V4cFwiLFxuICBcInNlcmlhbGl6ZWRcIixcbiAgXCJ0eXBlLWV4dGVuc2lvblwiLFxuICBcInVzZXItc2VjdXJpdHlcIixcbiAgXCJ1c2VyZG9jXCIsXG5dO1xuIl19
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInRlc3Qvc2FtcGxlLWZpbGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQVcsUUFBQSxPQUFPLEdBQUc7SUFDbkIsWUFBWTtJQUNaLE1BQU07SUFDTixxQkFBcUI7SUFDckIsVUFBVTtJQUNWLHNCQUFzQjtJQUN0QixZQUFZO0lBQ1osVUFBVTtJQUNWLFFBQVE7SUFDUixXQUFXO0lBQ1gsV0FBVztJQUNYLFdBQVc7SUFDWCxXQUFXO0lBQ1gsVUFBVTtJQUNWLE1BQU07SUFDTixZQUFZO0lBQ1osY0FBYztJQUNkLFFBQVE7SUFDUixZQUFZO0lBQ1osZ0JBQWdCO0lBQ2hCLGVBQWU7SUFDZixTQUFTO0NBQ1YsQ0FBQyIsImZpbGUiOiJ0ZXN0L3NhbXBsZS1maWxlcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBsZXQgc2FtcGxlcyA9IFtcbiAgXCJhbGxfYWNjZXNzXCIsXG4gIFwiY2hhdFwiLFxuICBcImNoaWxkcmVuLWJ5LW5lc3RpbmdcIixcbiAgXCJjaGlsZHJlblwiLFxuICBcImNyZWF0ZS11cGRhdGUtZGVsZXRlXCIsXG4gIFwiZnVuY3Rpb25hbFwiLFxuICBcImdlbmVyaWNzXCIsXG4gIFwiZ3JvdXBzXCIsXG4gIFwiaXNzdWUtMTExXCIsXG4gIFwiaXNzdWUtMTE4XCIsXG4gIFwiaXNzdWUtMTM2XCIsXG4gIFwiaXNzdWUtMTY5XCIsXG4gIFwiaXNzdWUtOTdcIixcbiAgXCJtYWlsXCIsXG4gIFwibWFwLXNjYWxhclwiLFxuICBcIm11bHRpLXVwZGF0ZVwiLFxuICBcInJlZ2V4cFwiLFxuICBcInNlcmlhbGl6ZWRcIixcbiAgXCJ0eXBlLWV4dGVuc2lvblwiLFxuICBcInVzZXItc2VjdXJpdHlcIixcbiAgXCJ1c2VyZG9jXCIsXG5dO1xuIl19

@@ -0,1 +1,2 @@

"use strict";
/*

@@ -16,6 +17,6 @@ * Copyright 2015 Google Inc. All Rights Reserved.

*/
"use strict";
var util = require('../util');
var ast = require('../ast');
var logger = require('../logger');
exports.__esModule = true;
var util = require("../util");
var ast = require("../ast");
var logger = require("../logger");
;

@@ -108,2 +109,2 @@ /*

//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInRlc3QvdGVzdC1oZWxwZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7O0dBY0c7O0FBRUgsSUFBWSxJQUFJLFdBQU0sU0FBUyxDQUFDLENBQUE7QUFDaEMsSUFBWSxHQUFHLFdBQU0sUUFBUSxDQUFDLENBQUE7QUFDOUIsSUFBWSxNQUFNLFdBQU0sV0FBVyxDQUFDLENBQUE7QUFNbkMsQ0FBQztBQVlGOzs7Ozs7O0dBT0c7QUFDSCx3QkFBK0IsS0FBYSxFQUFFLE1BQW9CLEVBQUUsU0FBa0I7SUFBbEIseUJBQWtCLEdBQWxCLGtCQUFrQjtJQUNwRixJQUFJLElBQVMsQ0FBQztJQUNkLElBQUksTUFBVyxDQUFDO0lBQ2hCLElBQUksS0FBYSxDQUFDO0lBRWxCLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsS0FBSyxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDO1FBQ3RDLHNCQUFzQjtRQUN0QixFQUFFLENBQUMsQ0FBQyxPQUFPLEtBQUssQ0FBQyxDQUFDLENBQUMsS0FBSyxRQUFRLENBQUMsQ0FBQyxDQUFDO1lBQ2pDLEtBQUssR0FBRyxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDNUIsSUFBSSxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUNoQixNQUFNLEdBQUcsU0FBUyxDQUFDO1FBQ3JCLENBQUM7UUFBQyxJQUFJLENBQUMsQ0FBQztZQUNOLElBQUksR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO1lBQ3JCLEVBQUUsQ0FBQyxDQUFDLElBQUksS0FBSyxTQUFTLENBQUMsQ0FBQyxDQUFDO2dCQUN2QixJQUFJLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ3JCLENBQUM7WUFDRCxFQUFFLENBQUMsQ0FBQyxJQUFJLEtBQUssU0FBUyxDQUFDLENB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QkFDNUIsUUFBUSxDQUFDO1lBQ1gsQ0FBQztZQUNELE1BQU0sSUFBSSxHQUFHLEdBQUcsU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO1lBQ25DLEdBQUcsR0FBRyxJQUFJLENBQUM7UUFDYixDQUFDO1FBQ0QsTUFBTSxJQUFJLEdBQUcsQ0FBQztRQUNkLE1BQU0sQ0FBQyxNQUFNLENBQUM7SUFDaEIsQ0FBQztJQUNELE1BQU0sQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQzNCLENBQUM7QUFyQmUsaUJBQVMsWUFxQnhCLENBQUEiLCJmaWxlIjoidGVzdC90ZXN0LWhlbHBlci5qcyIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBDb3B5cmlnaHQgMjAxNSBHb29nbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuXG5pbXBvcnQgKiBhcyB1dGlsIGZyb20gJy4uL3V0aWwnO1xuaW1wb3J0ICogYXMgYXN0IGZyb20gJy4uL2FzdCc7XG5pbXBvcnQgKiBhcyBsb2dnZXIgZnJvbSAnLi4vbG9nZ2VyJztcblxuZXhwb3J0IGludGVyZmFjZSBPYmplY3RTcGVjIHtcbiAgbGFiZWw/OiBzdHJpbmc7XG4gIGRhdGE6IGFueTtcbiAgZXhwZWN0PzogYW55O1xufTtcblxuZXhwb3J0IHR5cGUgQXJyYXlTcGVjID0gW2FueSwgYW55XTtcblxuZXhwb3J0IHR5cGUgVmFsdWVTcGVjID0gYW55O1xuXG5leHBvcnQgdHlwZSBTcGVjID0gT2JqZWN0U3BlYyB8IEFycmF5U3BlYyB8IFZhbHVlU3BlYztcblxuZXhwb3J0IHR5cGUgVGVzdEZ1bmN0aW9uID0gKGRhdGE6IGFueSwgZXhwZWN0OiBhbnksIHNwZWM6IFNwZWMpID0+IHZvaWQ7XG5cbmV4cG9ydCB0eXBlIEZvcm1hdEZ1bmN0aW9uID0gKGRhdGE6IGFueSkgPT4gc3RyaW5nO1xuXG4vKlxuICogUnVuIGRhdGEgZHJpdmUgdGVzdCB3aXRoIHRlc3RzIGlzIG9uZSBvZiB0aGVzZSBmb3JtYXRzOlxuICogWyB7IGxhYmVsOiAob3B0KSA8c3RyaW5nPiwgZGF0YTogPGlucHV0PiwgZXhwZWN0OiAob3B0KSA8ZXhwZWN0ZWQgb3V0cHV0PiB9LCAuLi4gXVxuICogWyBbIDxpbnB1dD4sIDxleHBlY3RlZCBvdXRwdXQ+IF0sIC4uLiBdXG4gKiBbIHNjYWxhciwgLi4uIF1cbiAqXG4gKiBDYWxscyB0ZXN0SXQoZGF0YSwgZXhwZWN0KSBmb3IgZWFjaCB0ZXN0LlxuICovXG5leHBvcnQgZnVuY3Rpb24gZGF0YURyaXZlblRlc3QodGVzdHM6IFNwZWNbXSwgdGVzdEl0OiBUZXN0RnVuY3Rpb24sIGZvcm1hdHRlciA9IGZvcm1hdCkge1xuICB2YXIgZGF0YTogYW55O1xuICB2YXIgZXhwZWN0OiBhbnk7XG4gIHZhciBsYWJlbDogc3RyaW5nO1xuXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgdGVzdHMubGVuZ3RoOyBpKyspIHtcbiAgICAvLyBOb3QgQXJyYXkgb3IgT2JqZWN0XG4gICAgaWYgKHR5cGVvZiB0ZXN0c1tpXSAhPT0gJ29iamVjdCcpIHtcbiAgICAgIGxhYmVsID0gZm9ybWF0dGVyKHRlc3RzW2ldKTtcbiAgICAgIGRhdGEgPSB0ZXN0c1tpXTtcbiAgICAgIGV4cGVjdCA9IHVuZGVmaW5lZDtcbiAgICB9IGVsc2Uge1xuICAgICAgZGF0YSA9IHRlc3RzW2ldLmRhdGE7XG4gICAgICBpZiAoZGF0YSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGRhdGEgPSB0ZXN0c1tpXVswXTtcbiAgICAgIH1cbiAgICAgIGlmIChkYXRhID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgZGF0YSA9IHRlc3RzW2ldO1xuICAgICAgfVxuICAgICAgaWYgKHV0aWwuaXNUeXBlKGRhdGEsICdvYmplY3QnKSAmJiAnZXhwZWN0JyBpbiBkYXRhKSB7XG4gICAgICAgIGRhdGEgPSB1dGlsLmV4dGVuZCh7fSwgZGF0YSk7XG4gICAgICAgIGRlbGV0ZSBkYXRhLmV4cGVjdDtcbiAgICAgIH1cbiAgICAgIGV4cGVjdCA9IHRlc3RzW2ldLmV4cGVjdCB8fCB0ZXN0c1tpXVsxXTtcbiAgICAgIGxhYmVsID0gdGVzdHNbaV0ubGFiZWw7XG4gICAgICBpZiAobGFiZWwgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICBpZiAoZXhwZWN0ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICBsYWJlbCA9IGZvcm1hdHRlcihkYXRhKSArIFwiID0+IFwiICsgZm9ybWF0dGVyKGV4cGVjdCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgbGFiZWwgPSBmb3JtYXR0ZXIoZGF0YSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICBzZXR1cCgoKSA9PiB7XG4gICAgICBsb2dnZXIucmVzZXQoKTtcbiAgICAgIGxvZ2dlci5zaWxlbnQoKTtcbiAgICB9KTtcbiAgICB0ZWFyZG93bigoKSA9PiB7XG4gICAgICBsb2dnZXIucmVzZXQoKTtcbiAgICB9KTtcbiAgICB0ZXN0KGxhYmVsLCB0ZXN0SXQuYmluZCh1bmRlZmluZWQsIGRhdGEsIGV4cGVjdCwgdGVzdHNbaV0pKTtcbiAgfVxufVxuXG5mdW5jdGlvbiBmb3JtYXQobzogYW55KTogc3RyaW5nIHtcbiAgc3dpdGNoICh1dGlsLnR5cGVPZihvKSkge1xuICBjYXNlICdyZWdleHAnOlxuICAgIHJldHVybiBvLnRvU3RyaW5nKCk7XG4gIGRlZmF1bHQ6XG4gICAgcmV0dXJuIEpTT04uc3RyaW5naWZ5KG8pO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBleHBGb3JtYXQoeDogYW55KTogc3RyaW5nIHtcbiAgaWYgKHV0aWwuaXNUeXBlKHgsICdhcnJheScpKSB7XG4gICAgcmV0dXJuICdbJyArIHgubWFwKGV4cEZvcm1hdCkuam9pbignLCAnKSArICddJztcbiAgfVxuICBpZiAodXRpbC5pc1R5cGUoeCwgJ29iamVjdCcpKSB7XG4gICAgaWYgKCd0eXBlJyBpbiB4KSB7XG4gICAgICByZXR1cm4gYXN0LmRlY29kZUV4cHJlc3Npb24oeCk7XG4gICAgfVxuICAgIHZhciByZXN1bHQgPSAneyc7XG4gICAgdmFyIHNlcCA9ICcnO1xuICAgIGZvciAodmFyIHByb3AgaW4geCkge1xuICAgICAgaWYgKCF4Lmhhc093blByb3BlcnR5KHByb3ApKSB7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuICAgICAgcmVzdWx0ICs9IHNlcCArIGV4cEZvcm1hdCh4W3Byb3BdKTtcbiAgICAgIHNlcCA9ICcsICc7XG4gICAgfVxuICAgIHJlc3VsdCArPSAnfSc7XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuICByZXR1cm4gSlNPTi5zdHJpbmdpZnkoeCk7XG59XG4iXX0=
//# sourceMappingURL=data:application/json;charset=utf8;base64,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bUJBQTBCLENBQU07SUFDOUIsSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxPQUFPLENBQUMsRUFBRTtRQUMzQixPQUFPLEdBQUcsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxHQUFHLENBQUM7S0FDaEQ7SUFDRCxJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLFFBQVEsQ0FBQyxFQUFFO1FBQzVCLElBQUksTUFBTSxJQUFJLENBQUMsRUFBRTtZQUNmLE9BQU8sR0FBRyxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxDQUFDO1NBQ2hDO1FBQ0QsSUFBSSxNQUFNLEdBQUcsR0FBRyxDQUFDO1FBQ2pCLElBQUksR0FBRyxHQUFHLEVBQUUsQ0FBQztRQUNiLEtBQUssSUFBSSxJQUFJLElBQUksQ0FBQyxFQUFFO1lBQ2xCLElBQUksQ0FBQyxDQUFDLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxFQUFFO2dCQUMzQixTQUFTO2FBQ1Y7WUFDRCxNQUFNLElBQUksR0FBRyxHQUFHLFNBQVMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztZQUNuQyxHQUFHLEdBQUcsSUFBSSxDQUFDO1NBQ1o7UUFDRCxNQUFNLElBQUksR0FBRyxDQUFDO1FBQ2QsT0FBTyxNQUFNLENBQUM7S0FDZjtJQUNELE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUMzQixDQUFDO0FBckJELDhCQXFCQyIsImZpbGUiOiJ0ZXN0L3Rlc3QtaGVscGVyLmpzIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIENvcHlyaWdodCAyMDE1IEdvb2dsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5cbmltcG9ydCAqIGFzIHV0aWwgZnJvbSAnLi4vdXRpbCc7XG5pbXBvcnQgKiBhcyBhc3QgZnJvbSAnLi4vYXN0JztcbmltcG9ydCAqIGFzIGxvZ2dlciBmcm9tICcuLi9sb2dnZXInO1xuXG5leHBvcnQgaW50ZXJmYWNlIE9iamVjdFNwZWMge1xuICBsYWJlbD86IHN0cmluZztcbiAgZGF0YTogYW55O1xuICBleHBlY3Q/OiBhbnk7XG59O1xuXG5leHBvcnQgdHlwZSBBcnJheVNwZWMgPSBbYW55LCBhbnldO1xuXG5leHBvcnQgdHlwZSBWYWx1ZVNwZWMgPSBhbnk7XG5cbmV4cG9ydCB0eXBlIFNwZWMgPSBPYmplY3RTcGVjIHwgQXJyYXlTcGVjIHwgVmFsdWVTcGVjO1xuXG5leHBvcnQgdHlwZSBUZXN0RnVuY3Rpb24gPSAoZGF0YTogYW55LCBleHBlY3Q6IGFueSwgc3BlYzogU3BlYykgPT4gdm9pZDtcblxuZXhwb3J0IHR5cGUgRm9ybWF0RnVuY3Rpb24gPSAoZGF0YTogYW55KSA9PiBzdHJpbmc7XG5cbi8qXG4gKiBSdW4gZGF0YSBkcml2ZSB0ZXN0IHdpdGggdGVzdHMgaXMgb25lIG9mIHRoZXNlIGZvcm1hdHM6XG4gKiBbIHsgbGFiZWw6IChvcHQpIDxzdHJpbmc+LCBkYXRhOiA8aW5wdXQ+LCBleHBlY3Q6IChvcHQpIDxleHBlY3RlZCBvdXRwdXQ+IH0sIC4uLiBdXG4gKiBbIFsgPGlucHV0PiwgPGV4cGVjdGVkIG91dHB1dD4gXSwgLi4uIF1cbiAqIFsgc2NhbGFyLCAuLi4gXVxuICpcbiAqIENhbGxzIHRlc3RJdChkYXRhLCBleHBlY3QpIGZvciBlYWNoIHRlc3QuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBkYXRhRHJpdmVuVGVzdCh0ZXN0czogU3BlY1tdLCB0ZXN0SXQ6IFRlc3RGdW5jdGlvbiwgZm9ybWF0dGVyID0gZm9ybWF0KSB7XG4gIHZhciBkYXRhOiBhbnk7XG4gIHZhciBleHBlY3Q6IGFueTtcbiAgdmFyIGxhYmVsOiBzdHJpbmc7XG5cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCB0ZXN0cy5sZW5ndGg7IGkrKykge1xuICAgIC8vIE5vdCBBcnJheSBvciBPYmplY3RcbiAgICBpZiAodHlwZW9mIHRlc3RzW2ldICE9PSAnb2JqZWN0Jykge1xuICAgICAgbGFiZWwgPSBmb3JtYXR0ZXIodGVzdHNbaV0pO1xuICAgICAgZGF0YSA9IHRlc3RzW2ldO1xuICAgICAgZXhwZWN0ID0gdW5kZWZpbmVkO1xuICAgIH0gZWxzZSB7XG4gICAgICBkYXRhID0gdGVzdHNbaV0uZGF0YTtcbiAgICAgIGlmIChkYXRhID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgZGF0YSA9IHRlc3RzW2ldWzBdO1xuICAgICAgfVxuICAgICAgaWYgKGRhdGEgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICBkYXRhID0gdGVzdHNbaV07XG4gICAgICB9XG4gICAgICBpZiAodXRpbC5pc1R5cGUoZGF0YSwgJ29iamVjdCcpICYmICdleHBlY3QnIGluIGRhdGEpIHtcbiAgICAgICAgZGF0YSA9IHV0aWwuZXh0ZW5kKHt9LCBkYXRhKTtcbiAgICAgICAgZGVsZXRlIGRhdGEuZXhwZWN0O1xuICAgICAgfVxuICAgICAgZXhwZWN0ID0gdGVzdHNbaV0uZXhwZWN0IHx8IHRlc3RzW2ldWzFdO1xuICAgICAgbGFiZWwgPSB0ZXN0c1tpXS5sYWJlbDtcbiAgICAgIGlmIChsYWJlbCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGlmIChleHBlY3QgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIGxhYmVsID0gZm9ybWF0dGVyKGRhdGEpICsgXCIgPT4gXCIgKyBmb3JtYXR0ZXIoZXhwZWN0KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBsYWJlbCA9IGZvcm1hdHRlcihkYXRhKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIHNldHVwKCgpID0+IHtcbiAgICAgIGxvZ2dlci5yZXNldCgpO1xuICAgICAgbG9nZ2VyLnNpbGVudCgpO1xuICAgIH0pO1xuICAgIHRlYXJkb3duKCgpID0+IHtcbiAgICAgIGxvZ2dlci5yZXNldCgpO1xuICAgIH0pO1xuICAgIHRlc3QobGFiZWwsIHRlc3RJdC5iaW5kKHVuZGVmaW5lZCwgZGF0YSwgZXhwZWN0LCB0ZXN0c1tpXSkpO1xuICB9XG59XG5cbmZ1bmN0aW9uIGZvcm1hdChvOiBhbnkpOiBzdHJpbmcge1xuICBzd2l0Y2ggKHV0aWwudHlwZU9mKG8pKSB7XG4gIGNhc2UgJ3JlZ2V4cCc6XG4gICAgcmV0dXJuIG8udG9TdHJpbmcoKTtcbiAgZGVmYXVsdDpcbiAgICByZXR1cm4gSlNPTi5zdHJpbmdpZnkobyk7XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGV4cEZvcm1hdCh4OiBhbnkpOiBzdHJpbmcge1xuICBpZiAodXRpbC5pc1R5cGUoeCwgJ2FycmF5JykpIHtcbiAgICByZXR1cm4gJ1snICsgeC5tYXAoZXhwRm9ybWF0KS5qb2luKCcsICcpICsgJ10nO1xuICB9XG4gIGlmICh1dGlsLmlzVHlwZSh4LCAnb2JqZWN0JykpIHtcbiAgICBpZiAoJ3R5cGUnIGluIHgpIHtcbiAgICAgIHJldHVybiBhc3QuZGVjb2RlRXhwcmVzc2lvbih4KTtcbiAgICB9XG4gICAgdmFyIHJlc3VsdCA9ICd7JztcbiAgICB2YXIgc2VwID0gJyc7XG4gICAgZm9yICh2YXIgcHJvcCBpbiB4KSB7XG4gICAgICBpZiAoIXguaGFzT3duUHJvcGVydHkocHJvcCkpIHtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG4gICAgICByZXN1bHQgKz0gc2VwICsgZXhwRm9ybWF0KHhbcHJvcF0pO1xuICAgICAgc2VwID0gJywgJztcbiAgICB9XG4gICAgcmVzdWx0ICs9ICd9JztcbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG4gIHJldHVybiBKU09OLnN0cmluZ2lmeSh4KTtcbn1cbiJdfQ==
"use strict";
exports.__esModule = true;
/*

@@ -17,8 +18,8 @@ * Copyright 2015 Google Inc. All Rights Reserved.

*/
var chai_1 = require('chai');
var helper = require('./test-helper');
var util = require('../util');
var chai_1 = require("chai");
var helper = require("./test-helper");
var util = require("../util");
suite("Util", function () {
suite("pruneEmptyChildren", function () {
var T = (function () {
var T = /** @class */ (function () {
function T() {

@@ -59,2 +60,2 @@ this.x = 'dummy';

//# sourceMappingURL=data:application/json;charset=utf8;base64,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LElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQztZQUNoQyxhQUFNLENBQUMsU0FBUyxDQUFDLElBQUksRUFBRSxNQUFNLENBQUMsQ0FBQztRQUNqQyxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyxDQUFDLENBQUMiLCJmaWxlIjoidGVzdC91dGlsLXRlc3QuanMiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogQ29weXJpZ2h0IDIwMTUgR29vZ2xlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cbmltcG9ydCB7YXNzZXJ0fSBmcm9tICdjaGFpJztcbmltcG9ydCAqIGFzIGhlbHBlciBmcm9tICcuL3Rlc3QtaGVscGVyJztcbmltcG9ydCAqIGFzIHV0aWwgZnJvbSAnLi4vdXRpbCc7XG5cbnN1aXRlKFwiVXRpbFwiLCBmdW5jdGlvbigpIHtcbiAgc3VpdGUoXCJwcnVuZUVtcHR5Q2hpbGRyZW5cIiwgZnVuY3Rpb24oKSB7XG4gICAgY2xhc3MgVCB7XG4gICAgICBwdWJsaWMgeCA9ICdkdW1teSc7XG4gICAgfVxuXG4gICAgdmFyIHRlc3RzID0gW1xuICAgICAgWyB7fSwge30gXSxcbiAgICAgIFsge2E6IDF9LCB7YTogMX0gXSxcbiAgICAgIFsge2E6IHt9fSwge30gXSxcbiAgICAgIFsge2E6IDEsIGI6IHt9fSwge2E6IDF9IF0sXG4gICAgICBbIHthOiBbXX0sIHthOiBbXX0gXSxcbiAgICAgIFsge2E6IG5ldyBUKCl9LCB7YTogbmV3IFQoKX0gXSxcbiAgICAgIFsge2E6IHthOiB7YToge319fX0sIHt9IF0sXG4gICAgICBbIHthOiB7YToge2E6IHt9LCBiOiAxfX19LCB7YToge2E6IHtiOiAxfX19IF0sXG4gICAgICBbIHthOiAxLCBiOiB1bmRlZmluZWR9LCB7YTogMX0gXSxcbiAgICBdO1xuXG4gICAgaGVscGVyLmRhdGFEcml2ZW5UZXN0KHRlc3RzLCBmdW5jdGlvbihkYXRhOiBhbnksIGV4cGVjdDogYW55KSB7XG4gICAgICB1dGlsLnBydW5lRW1wdHlDaGlsZHJlbihkYXRhKTtcbiAgICAgIGFzc2VydC5kZWVwRXF1YWwoZGF0YSwgZXhwZWN0KTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgc3VpdGUoXCJwcnVuZUVtcHR5Q2hpbGRyZW5cIiwgZnVuY3Rpb24oKSB7XG4gICAgdmFyIHRlc3RzID0gW1xuICAgICAgWyB7fSwge30gXSxcbiAgICAgIFsge2E6IDF9LCB7YTogMX0gXSxcbiAgICAgIFsge2E6IDEsIGRtOiAyfSwge2E6IDF9IF0sXG4gICAgICBbIHthOiAxLCBiOiB7ZG06IDIsIGM6IDN9fSwge2E6IDEsIGI6IHtjOiAzfX0gXSxcbiAgICBdO1xuXG4gICAgaGVscGVyLmRhdGFEcml2ZW5UZXN0KHRlc3RzLCBmdW5jdGlvbihkYXRhOiBhbnksIGV4cGVjdDogYW55KSB7XG4gICAgICB1dGlsLmRlbGV0ZVByb3BOYW1lKGRhdGEsICdkbScpO1xuICAgICAgYXNzZXJ0LmRlZXBFcXVhbChkYXRhLCBleHBlY3QpO1xuICAgIH0pO1xuICB9KTtcbn0pO1xuIl19
//# sourceMappingURL=data:application/json;charset=utf8;base64,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RSxNQUFNLENBQUMsQ0FBQztRQUNqQyxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyxDQUFDLENBQUMiLCJmaWxlIjoidGVzdC91dGlsLXRlc3QuanMiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogQ29weXJpZ2h0IDIwMTUgR29vZ2xlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cbmltcG9ydCB7YXNzZXJ0fSBmcm9tICdjaGFpJztcbmltcG9ydCAqIGFzIGhlbHBlciBmcm9tICcuL3Rlc3QtaGVscGVyJztcbmltcG9ydCAqIGFzIHV0aWwgZnJvbSAnLi4vdXRpbCc7XG5cbnN1aXRlKFwiVXRpbFwiLCBmdW5jdGlvbigpIHtcbiAgc3VpdGUoXCJwcnVuZUVtcHR5Q2hpbGRyZW5cIiwgZnVuY3Rpb24oKSB7XG4gICAgY2xhc3MgVCB7XG4gICAgICBwdWJsaWMgeCA9ICdkdW1teSc7XG4gICAgfVxuXG4gICAgdmFyIHRlc3RzID0gW1xuICAgICAgWyB7fSwge30gXSxcbiAgICAgIFsge2E6IDF9LCB7YTogMX0gXSxcbiAgICAgIFsge2E6IHt9fSwge30gXSxcbiAgICAgIFsge2E6IDEsIGI6IHt9fSwge2E6IDF9IF0sXG4gICAgICBbIHthOiBbXX0sIHthOiBbXX0gXSxcbiAgICAgIFsge2E6IG5ldyBUKCl9LCB7YTogbmV3IFQoKX0gXSxcbiAgICAgIFsge2E6IHthOiB7YToge319fX0sIHt9IF0sXG4gICAgICBbIHthOiB7YToge2E6IHt9LCBiOiAxfX19LCB7YToge2E6IHtiOiAxfX19IF0sXG4gICAgICBbIHthOiAxLCBiOiB1bmRlZmluZWR9LCB7YTogMX0gXSxcbiAgICBdO1xuXG4gICAgaGVscGVyLmRhdGFEcml2ZW5UZXN0KHRlc3RzLCBmdW5jdGlvbihkYXRhOiBhbnksIGV4cGVjdDogYW55KSB7XG4gICAgICB1dGlsLnBydW5lRW1wdHlDaGlsZHJlbihkYXRhKTtcbiAgICAgIGFzc2VydC5kZWVwRXF1YWwoZGF0YSwgZXhwZWN0KTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgc3VpdGUoXCJwcnVuZUVtcHR5Q2hpbGRyZW5cIiwgZnVuY3Rpb24oKSB7XG4gICAgdmFyIHRlc3RzID0gW1xuICAgICAgWyB7fSwge30gXSxcbiAgICAgIFsge2E6IDF9LCB7YTogMX0gXSxcbiAgICAgIFsge2E6IDEsIGRtOiAyfSwge2E6IDF9IF0sXG4gICAgICBbIHthOiAxLCBiOiB7ZG06IDIsIGM6IDN9fSwge2E6IDEsIGI6IHtjOiAzfX0gXSxcbiAgICBdO1xuXG4gICAgaGVscGVyLmRhdGFEcml2ZW5UZXN0KHRlc3RzLCBmdW5jdGlvbihkYXRhOiBhbnksIGV4cGVjdDogYW55KSB7XG4gICAgICB1dGlsLmRlbGV0ZVByb3BOYW1lKGRhdGEsICdkbScpO1xuICAgICAgYXNzZXJ0LmRlZXBFcXVhbChkYXRhLCBleHBlY3QpO1xuICAgIH0pO1xuICB9KTtcbn0pO1xuIl19
"use strict";
exports.__esModule = true;
function extend(dest) {

@@ -28,6 +29,10 @@ var srcs = [];

exports.copyArray = copyArray;
var baseTypes = ['number', 'string', 'boolean', 'array', 'function', 'date',
'regexp', 'arguments', 'undefined', 'null'];
var baseTypes = [
'number', 'string', 'boolean', 'array', 'function', 'date', 'regexp',
'arguments', 'undefined', 'null'
];
function internalType(value) {
return Object.prototype.toString.call(value).match(/\[object (.*)\]/)[1].toLowerCase();
return Object.prototype.toString.call(value)
.match(/\[object (.*)\]/)[1]
.toLowerCase();
}

@@ -54,3 +59,4 @@ function isType(value, type) {

function isThenable(obj) {
return typeOf(obj) === 'object' && 'then' in obj && typeof (obj.then) === 'function';
return typeOf(obj) === 'object' && 'then' in obj &&
typeof (obj.then) === 'function';
}

@@ -66,6 +72,5 @@ exports.isThenable = isThenable;

for (var _i = 0; _i < arguments.length; _i++) {
args[_i - 0] = arguments[_i];
args[_i] = arguments[_i];
}
return Promise.all(args)
.then(function (values) {
return Promise.all(args).then(function (values) {
return fn.apply(undefined, values);

@@ -79,3 +84,4 @@ });

//
// fn(U, V, ...): Promise<T> => fn(U | Promise<U>, V | Promise<V>, ...): Promise<T>
// fn(U, V, ...): Promise<T> => fn(U | Promise<U>, V | Promise<V>, ...):
// Promise<T>
exports.liftArgs = lift;

@@ -104,3 +110,3 @@ exports.getProp = lift(function (obj, prop) { return obj[prop]; });

if (target[prop] !== undefined) {
throw new Error("Property overwrite: " + prop);
throw new Error('Property overwrite: ' + prop);
}

@@ -127,4 +133,4 @@ if (isType(source[prop], 'object')) {

exports.deepLookup = deepLookup;
// Like JSON.stringify - but for single-quoted strings instead of double-quoted ones.
// This just makes the compiled rules much easier to read.
// Like JSON.stringify - but for single-quoted strings instead of double-quoted
// ones. This just makes the compiled rules much easier to read.
// Quote all control characters, slash, single quotes, and non-ascii printables.

@@ -147,3 +153,3 @@ var quotableCharacters = /[\u0000-\u001f\\\'\u007f-\uffff]/g;

});
return "'" + s + "'";
return '\'' + s + '\'';
}

@@ -182,3 +188,4 @@ exports.quoteString = quoteString;

exports.ensureObjectPath = ensureObjectPath;
// Remove all empty, '{}', children and undefined - returns true iff obj is empty.
// Remove all empty, '{}', children and undefined - returns true iff obj is
// empty.
function pruneEmptyChildren(obj) {

@@ -239,4 +246,4 @@ if (obj === undefined) {

var line = lines[i];
var sep = "";
s = "";
var sep = '';
s = '';
for (var j = 0; j < line.length; j++) {

@@ -252,3 +259,3 @@ if (j === 0) {

}
sep = " ";
sep = ' ';
}

@@ -271,2 +278,2 @@ result.push(s);

//# sourceMappingURL=data:application/json;charset=utf8;base64,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T0FBTyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxDQUFDO0lBQzNCLEVBQUUsQ0FBQyxDQUFDLE9BQU8sR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ2hCLENBQUMsSUFBSSxZQUFZLENBQUMsR0FBRyxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQ2xDLENBQUM7SUFDRCxNQUFNLENBQUMsQ0FBQyxDQUFDO0FBQ1gsQ0FBQyIsImZpbGUiOiJ1dGlsLmpzIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIENvcHlyaWdodCAyMDE1IEdvb2dsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG50eXBlIE9iamVjdCA9IHtbcHJvcDogc3RyaW5nXTogYW55fTtcbmV4cG9ydCBmdW5jdGlvbiBleHRlbmQoZGVzdDogT2JqZWN0LCAuLi5zcmNzOiBPYmplY3RbXSk6IE9iamVjdCB7XG4gIHZhciBpOiBudW1iZXI7XG4gIHZhciBzb3VyY2U6IGFueTtcbiAgdmFyIHByb3A6IHN0cmluZztcblxuICBpZiAoZGVzdCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgZGVzdCA9IHt9O1xuICB9XG4gIGZvciAoaSA9IDA7IGkgPCBzcmNzLmxlbmd0aDsgaSsrKSB7XG4gICAgc291cmNlID0gc3Jjc1tpXTtcbiAgICBmb3IgKHByb3AgaW4gc291cmNlKSB7XG4gICAgICBpZiAoc291cmNlLmhhc093blByb3BlcnR5KHByb3ApKSB7XG4gICAgICAgIGRlc3RbcHJvcF0gPSBzb3VyY2VbcHJvcF07XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGRlc3Q7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjb3B5QXJyYXkoYXJnOiBBcnJheUxpa2U8YW55Pik6IGFueVtdIHtcbiAgcmV0dXJuIEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZyk7XG59XG5cbnZhciBiYXNlVHlwZXMgPSBbJ251bWJlcicsICdzdHJpbmcnLCAnYm9vbGVhbicsICdhcnJheScsICdmdW5jdGlvbicsICdkYXRlJyxcbiAgICAgICAgICAgICAgICAgJ3JlZ2V4cCcsICdhcmd1bWVudHMnLCAndW5kZWZpbmVkJywgJ251bGwnXTtcblxuZnVuY3Rpb24gaW50ZXJuYWxUeXBlKHZhbHVlOiBhbnkpOiBzdHJpbmcge1xuICByZXR1cm4gT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKHZhbHVlKS5tYXRjaCgvXFxbb2JqZWN0ICguKilcXF0vKVsxXS50b0xvd2VyQ2FzZSgpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNUeXBlKHZhbHVlOiBhbnksIHR5cGU6IHN0cmluZyk6IGJvb2xlYW4ge1xuICByZXR1cm4gdHlwZU9mKHZhbHVlKSA9PT0gdHlwZTtcbn1cblxuLy8gUmV0dXJuIG9uZSBvZiB0aGUgYmFzZVR5cGVzIGFzIGEgc3RyaW5nXG5leHBvcnQgZnVuY3Rpb24gdHlwZU9mKHZhbHVlOiBhbnkpOiBzdHJpbmcge1xuICBpZiAodmFsdWUgPT09IHVuZGVmaW5lZCkge1xuICAgIHJldHVybiAndW5kZWZpbmVkJztcbiAgfVxuICBpZiAodmFsdWUgPT09IG51bGwpIHtcbiAgICByZXR1cm4gJ251bGwnO1xuICB9XG4gIHZhciB0eXBlID0gaW50ZXJuYWxUeXBlKHZhbHVlKTtcbiAgaWYgKCFhcnJheUluY2x1ZGVzKGJhc2VUeXBlcywgdHlwZSkpIHtcbiAgICB0eXBlID0gdHlwZW9mIHZhbHVlO1xuICB9XG4gIHJldHVybiB0eXBlO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNUaGVuYWJsZShvYmo6IGFueSk6IGJvb2xlYW4ge1xuICByZXR1cm4gdHlwZU9mKG9iaikgPT09ICdvYmplY3QnICYmICd0aGVuJyBpbiBvYmogJiYgdHlwZW9mKG9iai50aGVuKSA9PT0gJ2Z1bmN0aW9uJztcbn1cblxuLy8gQ29udmVydHMgYSBzeW5jaHJvbm91cyBmdW5jdGlvbiB0byBvbmUgYWxsb3dpbmcgUHJvbWlzZXNcbi8vIGFzIGFyZ3VtZW50cyBhbmQgcmV0dXJuaW5nIGEgUHJvbWlzZSB2YWx1ZS5cbi8vXG4vLyAgIGZuKFUsIFYsIC4uLik6IFQgPT4gZm4oVSB8IFByb21pc2U8VT4sIFYgfCBQcm9taXNlPFY+LCAuLi4pOiBQcm9taXNlPFQ+XG5leHBvcnQgZnVuY3Rpb24gbGlmdDxUPihmbjogKC4uLmFyZ3M6IGFueVtdKSA9PiBUKVxuOiAoLi4uYXJnczogYW55W10pID0+IFByb21pc2U8VD4ge1xuICByZXR1cm4gZnVuY3Rpb24oLi4uYXJnczogYW55W10pOiBQcm9taXNlPFQ+IHtcbiAgICByZXR1cm4gUHJvbWlzZS5hbGwoYXJncylcbiAgICAgIC50aGVuKCh2YWx1ZXM6IGFueVtdKSA9PiB7XG4gICAgICAgIHJldHVybiBmbi5hcHBseSh1bmRlZmluZWQsIHZhbHVlcyk7XG4gICAgICB9KTtcbiAgfTtcbn1cblxuLy8gQ29udmVydHMgYW4gYXN5bmNocm9ub3VzIGZ1bmN0aW9uIHRvIG9uZSBhbGxvd2luZyBQcm9taXNlc1xuLy8gYXMgYXJndW1lbnRzLlxuLy9cbi8vICAgZm4oVSwgViwgLi4uKTogUHJvbWlzZTxUPiA9PiBmbihVIHwgUHJvbWlzZTxVPiwgViB8IFByb21pc2U8Vj4sIC4uLik6IFByb21pc2U8VD5cbmV4cG9ydCBsZXQgbGlmdEFyZ3M6IDxUPlxuICAoZm46ICguLi5hcmdzOiBhbnlbXSkgPT4gUHJvbWlzZTxUPikgPT5cbiAgKCguLi5hcmdzOiBhbnlbXSkgPT4gUHJvbWlzZTxUPikgPSBsaWZ0O1xuXG5leHBvcnQgbGV0IGdldFByb3AgPSBsaWZ0KChvYmosIHByb3ApID0+IG9ialtwcm9wXSk7XG5cbmV4cG9ydCBmdW5jdGlvbiBlbnN1cmVFeHRlbnNpb24oZmlsZU5hbWU6IHN0cmluZywgZXh0ZW5zaW9uOiBzdHJpbmcpOiBzdHJpbmcge1xuICBpZiAoZmlsZU5hbWUuaW5kZXhPZignLicpID09PSAtMSkge1xuICAgIHJldHVybiBmaWxlTmFtZSArICcuJyArIGV4dGVuc2lvbjtcbiAgfVxuICByZXR1cm4gZmlsZU5hbWU7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiByZXBsYWNlRXh0ZW5zaW9uKGZpbGVOYW1lOiBzdHJpbmcsIGV4dGVuc2lvbjogc3RyaW5nKTogc3RyaW5nIHtcbiAgcmV0dXJuIGZpbGVOYW1lLnJlcGxhY2UoL1xcLlteXFwuXSokLywgJy4nICsgZXh0ZW5zaW9uKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHByZXR0eUpTT04obzogYW55KTogc3RyaW5nIHtcbiAgcmV0dXJuIEpTT04uc3RyaW5naWZ5KG8sIG51bGwsIDIpO1xufVxuXG5mdW5jdGlvbiBkZWVwRXh0ZW5kKHRhcmdldDogT2JqZWN0LCBzb3VyY2U6IE9iamVjdCk6IHZvaWQge1xuICBmb3IgKHZhciBwcm9wIGluIHNvdXJjZSkge1xuICAgIGlmICghc291cmNlLmhhc093blByb3BlcnR5KHByb3ApKSB7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG5cbiAgICBpZiAodGFyZ2V0W3Byb3BdICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcIlByb3BlcnR5IG92ZXJ3cml0ZTogXCIgKyBwcm9wKTtcbiAgICB9XG5cbiAgICBpZiAoaXNUeXBlKHNvdXJjZVtwcm9wXSwgJ29iamVjdCcpKSB7XG4gICAgICB0YXJnZXRbcHJvcF0gPSB7fTtcbiAgICAgIGRlZXBFeHRlbmQodGFyZ2V0W3Byb3BdLCBzb3VyY2VbcHJvcF0pO1xuICAgIH0gZWxzZSB7XG4gICAgICB0YXJnZXRbcHJvcF0gPSBzb3VyY2VbcHJvcF07XG4gICAgfVxuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBkZWVwTG9va3VwKG86IE9iamVjdCwgcGF0aDogc3RyaW5nW10pOiBPYmplY3QgfCB1bmRlZmluZWQge1xuICBsZXQgcmVzdWx0ID0gbztcblxuICBmb3IgKGxldCBpID0gMDsgaSA8IHBhdGgubGVuZ3RoOyBpKyspIHtcbiAgICBpZiAocmVzdWx0ID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuICAgIHJlc3VsdCA9IHJlc3VsdFtwYXRoW2ldXTtcbiAgfVxuICByZXR1cm4gcmVzdWx0O1xufVxuXG4vLyBMaWtlIEpTT04uc3RyaW5naWZ5IC0gYnV0IGZvciBzaW5nbGUtcXVvdGVkIHN0cmluZ3MgaW5zdGVhZCBvZiBkb3VibGUtcXVvdGVkIG9uZXMuXG4vLyBUaGlzIGp1c3QgbWFrZXMgdGhlIGNvbXBpbGVkIHJ1bGVzIG11Y2ggZWFzaWVyIHRvIHJlYWQuXG5cbi8vIFF1b3RlIGFsbCBjb250cm9sIGNoYXJhY3RlcnMsIHNsYXNoLCBzaW5nbGUgcXVvdGVzLCBhbmQgbm9uLWFzY2lpIHByaW50YWJsZXMuXG52YXIgcXVvdGFibGVDaGFyYWN0ZXJzID0gL1tcXHUwMDAwLVxcdTAwMWZcXFxcXFwnXFx1MDA3Zi1cXHVmZmZmXS9nO1xudmFyIHNwZWNpYWxRdW90ZXMgPSA8e1tjOiBzdHJpbmddOiBzdHJpbmd9PiB7XG4gICdcXCcnOiAnXFxcXFxcJycsXG4gICdcXGInOiAnXFxcXGInLFxuICAnXFx0JzogJ1xcXFx0JyxcbiAgJ1xcbic6ICdcXFxcbicsXG4gICdcXGYnOiAnXFxcXGYnLFxuICAnXFxyJzogJ1xcXFxyJ1xufTtcblxuZXhwb3J0IGZ1bmN0aW9uIHF1b3RlU3RyaW5nKHM6IHN0cmluZyk6IHN0cmluZyB7XG4gIHMgPSBzLnJlcGxhY2UocXVvdGFibGVDaGFyYWN0ZXJzLCBmdW5jdGlvbihjKSB7XG4gICAgaWYgKHNwZWNpYWxRdW90ZXNbY10pIHtcbiAgICAgIHJldHVybiBzcGVjaWFsUXVvdGVzW2NdO1xuICAgIH1cbiAgICByZXR1cm4gJ1xcXFx1JyArICgnMDAwMCcgKyBjLmNoYXJDb2RlQXQoMCkudG9TdHJpbmcoMTYpKS5zbGljZSgtNCk7XG4gIH0pO1xuICByZXR1cm4gXCInXCIgKyBzICsgXCInXCI7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBhcnJheUluY2x1ZGVzKGE6IGFueVtdLCBlOiBhbnkpOiBib29sZWFuIHtcbiAgcmV0dXJuIGEuaW5kZXhPZihlKSAhPT0gLTE7XG59XG5cbi8vIExpa2UgUHl0aG9uIGxpc3QuZXh0ZW5kXG5leHBvcnQgZnVuY3Rpb24gZXh0ZW5kQXJyYXkodGFyZ2V0OiBhbnlbXSwgc3JjOiBhbnlbXSkge1xuICBpZiAodGFyZ2V0ID09PSB1bmRlZmluZWQpIHtcbiAgICB0YXJnZXQgPSBbXTtcbiAgfVxuICBBcnJheS5wcm90b3R5cGUucHVzaC5hcHBseSh0YXJnZXQsIHNyYyk7XG4gIHJldHVybiB0YXJnZXQ7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBvcih0YXJnZXQ6IGFueSwgc3JjOiBhbnkpIHtcbiAgaWYgKHRhcmdldCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIHJldHVybiB0YXJnZXQgfHwgc3JjO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZW5zdXJlT2JqZWN0UGF0aChvYmo6IE9iamVjdCwgcGFydHM6IHN0cmluZ1tdKTogT2JqZWN0IHtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBwYXJ0cy5sZW5ndGg7IGkrKykge1xuICAgIHZhciBuYW1lID0gcGFydHNbaV07XG4gICAgaWYgKCEobmFtZSBpbiBvYmopKSB7XG4gICAgICBvYmpbbmFtZV0gPSB7fTtcbiAgICB9XG4gICAgb2JqID0gb2JqW25hbWVdO1xuICB9XG4gIHJldHVybiBvYmo7XG59XG5cbi8vIFJlbW92ZSBhbGwgZW1wdHksICd7fScsICBjaGlsZHJlbiBhbmQgdW5kZWZpbmVkIC0gcmV0dXJucyB0cnVlIGlmZiBvYmogaXMgZW1wdHkuXG5leHBvcnQgZnVuY3Rpb24gcHJ1bmVFbXB0eUNoaWxkcmVuKG9iajogT2JqZWN0KTogYm9vbGVhbiB7XG4gIGlmIChvYmogPT09IHVuZGVmaW5lZCkge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG4gIGlmIChvYmouY29uc3RydWN0b3IgIT09IE9iamVjdCkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICB2YXIgaGFzQ2hpbGRyZW4gPSBmYWxzZTtcbiAgZm9yICh2YXIgcHJvcCBpbiBvYmopIHtcbiAgICBpZiAoIW9iai5oYXNPd25Qcm9wZXJ0eShwcm9wKSkge1xuICAgICAgY29udGludWU7XG4gICAgfVxuICAgIGlmIChwcnVuZUVtcHR5Q2hpbGRyZW4ob2JqW3Byb3BdKSkge1xuICAgICAgZGVsZXRlIG9ialtwcm9wXTtcbiAgICB9IGVsc2Uge1xuICAgICAgaGFzQ2hpbGRyZW4gPSB0cnVlO1xuICAgIH1cbiAgfVxuICByZXR1cm4gIWhhc0NoaWxkcmVuO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZGVsZXRlUHJvcE5hbWUob2JqOiBPYmplY3QsIG5hbWU6IHN0cmluZykge1xuICBpZiAob2JqLmNvbnN0cnVjdG9yICE9PSBPYmplY3QpIHtcbiAgICByZXR1cm47XG4gIH1cbiAgZm9yICh2YXIgcHJvcCBpbiBvYmopIHtcbiAgICBpZiAoIW9iai5oYXNPd25Qcm9wZXJ0eShwcm9wKSkge1xuICAgICAgY29udGludWU7XG4gICAgfVxuICAgIGlmIChwcm9wID09PSBuYW1lKSB7XG4gICAgICBkZWxldGUgb2JqW3Byb3BdO1xuICAgIH0gZWxzZSB7XG4gICAgICBkZWxldGVQcm9wTmFtZShvYmpbcHJvcF0sIG5hbWUpO1xuICAgIH1cbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gZm9ybWF0Q29sdW1ucyhpbmRlbnQ6IG51bWJlciwgbGluZXM6IHN0cmluZ1tdW10pOiBzdHJpbmdbXSB7XG4gIGxldCByZXN1bHQ6IHN0cmluZ1tdID0gW107XG4gIGxldCBjb2x1bW5TaXplID0gPG51bWJlcltdPiBbXTtcblxuICBmb3IgKGxldCBpID0gMDsgaSA8IGxpbmVzLmxlbmd0aDsgaSsrKSB7XG4gICAgbGV0IGxpbmUgPSBsaW5lc1tpXTtcbiAgICBmb3IgKGxldCBqID0gMDsgaiA8IGxpbmUubGVuZ3RoOyBqKyspIHtcbiAgICAgIGlmIChjb2x1bW5TaXplW2pdID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgY29sdW1uU2l6ZVtqXSA9IDA7XG4gICAgICB9XG4gICAgICBjb2x1bW5TaXplW2pdID0gTWF0aC5tYXgoY29sdW1uU2l6ZVtqXSwgbGluZVtqXS5sZW5ndGgpO1xuICAgIH1cbiAgfVxuXG4gIHZhciBwcmVmaXggPSByZXBlYXRTdHJpbmcoJyAnLCBpbmRlbnQpO1xuICB2YXIgczogc3RyaW5nO1xuICBmb3IgKGxldCBpID0gMDsgaSA8IGxpbmVzLmxlbmd0aDsgaSsrKSB7XG4gICAgbGV0IGxpbmUgPSBsaW5lc1tpXTtcbiAgICBsZXQgc2VwID0gXCJcIjtcbiAgICBzID0gXCJcIjtcbiAgICBmb3IgKGxldCBqID0gMDsgaiA8IGxpbmUubGVuZ3RoOyBqKyspIHtcbiAgICAgIGlmIChqID09PSAwKSB7XG4gICAgICAgIHMgPSBwcmVmaXg7XG4gICAgICB9XG4gICAgICBpZiAoaiA9PT0gbGluZS5sZW5ndGggLSAxKSB7XG4gICAgICAgIHMgKz0gc2VwICsgbGluZVtqXTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHMgKz0gc2VwICsgZmlsbFN0cmluZyhsaW5lW2pdLCBjb2x1bW5TaXplW2pdKTtcbiAgICAgIH1cbiAgICAgIHNlcCA9IFwiICBcIjtcbiAgICB9XG4gICAgcmVzdWx0LnB1c2gocyk7XG4gIH1cblxuICByZXR1cm4gcmVzdWx0O1xufVxuXG5mdW5jdGlvbiByZXBlYXRTdHJpbmcoczogc3RyaW5nLCBuOiBudW1iZXIpOiBzdHJpbmcge1xuICByZXR1cm4gbmV3IEFycmF5KG4gKyAxKS5qb2luKHMpO1xufVxuXG5mdW5jdGlvbiBmaWxsU3RyaW5nKHM6IHN0cmluZywgbjogbnVtYmVyKTogc3RyaW5nIHtcbiAgbGV0IHBhZGRpbmcgPSBuIC0gcy5sZW5ndGg7XG4gIGlmIChwYWRkaW5nID4gMCkge1xuICAgIHMgKz0gcmVwZWF0U3RyaW5nKCcgJywgcGFkZGluZyk7XG4gIH1cbiAgcmV0dXJuIHM7XG59XG4iXX0=
//# sourceMappingURL=data:application/json;charset=utf8;base64,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SUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFFO2dCQUNYLENBQUMsR0FBRyxNQUFNLENBQUM7YUFDWjtZQUNELElBQUksQ0FBQyxLQUFLLElBQUksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO2dCQUN6QixDQUFDLElBQUksR0FBRyxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQzthQUNwQjtpQkFBTTtnQkFDTCxDQUFDLElBQUksR0FBRyxHQUFHLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7YUFDL0M7WUFDRCxHQUFHLEdBQUcsSUFBSSxDQUFDO1NBQ1o7UUFDRCxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO0tBQ2hCO0lBRUQsT0FBTyxNQUFNLENBQUM7QUFDaEIsQ0FBQztBQW5DRCxzQ0FtQ0M7QUFFRCxzQkFBc0IsQ0FBUyxFQUFFLENBQVM7SUFDeEMsT0FBTyxJQUFJLEtBQUssQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ2xDLENBQUM7QUFFRCxvQkFBb0IsQ0FBUyxFQUFFLENBQVM7SUFDdEMsSUFBSSxPQUFPLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUM7SUFDM0IsSUFBSSxPQUFPLEdBQUcsQ0FBQyxFQUFFO1FBQ2YsQ0FBQyxJQUFJLFlBQVksQ0FBQyxHQUFHLEVBQUUsT0FBTyxDQUFDLENBQUM7S0FDakM7SUFDRCxPQUFPLENBQUMsQ0FBQztBQUNYLENBQUMiLCJmaWxlIjoidXRpbC5qcyIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBDb3B5cmlnaHQgMjAxNSBHb29nbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuZXhwb3J0IHR5cGUgT2JqZWN0ID0ge1xuICBbcHJvcDogc3RyaW5nXTogYW55XG59O1xuZXhwb3J0IGZ1bmN0aW9uIGV4dGVuZChkZXN0OiBPYmplY3QsIC4uLnNyY3M6IE9iamVjdFtdKTogT2JqZWN0IHtcbiAgdmFyIGk6IG51bWJlcjtcbiAgdmFyIHNvdXJjZTogYW55O1xuICB2YXIgcHJvcDogc3RyaW5nO1xuXG4gIGlmIChkZXN0ID09PSB1bmRlZmluZWQpIHtcbiAgICBkZXN0ID0ge307XG4gIH1cbiAgZm9yIChpID0gMDsgaSA8IHNyY3MubGVuZ3RoOyBpKyspIHtcbiAgICBzb3VyY2UgPSBzcmNzW2ldO1xuICAgIGZvciAocHJvcCBpbiBzb3VyY2UpIHtcbiAgICAgIGlmIChzb3VyY2UuaGFzT3duUHJvcGVydHkocHJvcCkpIHtcbiAgICAgICAgZGVzdFtwcm9wXSA9IHNvdXJjZVtwcm9wXTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICByZXR1cm4gZGVzdDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNvcHlBcnJheShhcmc6IEFycmF5TGlrZTxhbnk+KTogYW55W10ge1xuICByZXR1cm4gQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJnKTtcbn1cblxudmFyIGJhc2VUeXBlcyA9IFtcbiAgJ251bWJlcicsICdzdHJpbmcnLCAnYm9vbGVhbicsICdhcnJheScsICdmdW5jdGlvbicsICdkYXRlJywgJ3JlZ2V4cCcsXG4gICdhcmd1bWVudHMnLCAndW5kZWZpbmVkJywgJ251bGwnXG5dO1xuXG5mdW5jdGlvbiBpbnRlcm5hbFR5cGUodmFsdWU6IGFueSk6IHN0cmluZyB7XG4gIHJldHVybiBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwodmFsdWUpXG4gICAgICAubWF0Y2goL1xcW29iamVjdCAoLiopXFxdLylbMV1cbiAgICAgIC50b0xvd2VyQ2FzZSgpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNUeXBlKHZhbHVlOiBhbnksIHR5cGU6IHN0cmluZyk6IGJvb2xlYW4ge1xuICByZXR1cm4gdHlwZU9mKHZhbHVlKSA9PT0gdHlwZTtcbn1cblxuLy8gUmV0dXJuIG9uZSBvZiB0aGUgYmFzZVR5cGVzIGFzIGEgc3RyaW5nXG5leHBvcnQgZnVuY3Rpb24gdHlwZU9mKHZhbHVlOiBhbnkpOiBzdHJpbmcge1xuICBpZiAodmFsdWUgPT09IHVuZGVmaW5lZCkge1xuICAgIHJldHVybiAndW5kZWZpbmVkJztcbiAgfVxuICBpZiAodmFsdWUgPT09IG51bGwpIHtcbiAgICByZXR1cm4gJ251bGwnO1xuICB9XG4gIHZhciB0eXBlID0gaW50ZXJuYWxUeXBlKHZhbHVlKTtcbiAgaWYgKCFhcnJheUluY2x1ZGVzKGJhc2VUeXBlcywgdHlwZSkpIHtcbiAgICB0eXBlID0gdHlwZW9mIHZhbHVlO1xuICB9XG4gIHJldHVybiB0eXBlO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNUaGVuYWJsZShvYmo6IGFueSk6IGJvb2xlYW4ge1xuICByZXR1cm4gdHlwZU9mKG9iaikgPT09ICdvYmplY3QnICYmICd0aGVuJyBpbiBvYmogJiZcbiAgICAgIHR5cGVvZiAob2JqLnRoZW4pID09PSAnZnVuY3Rpb24nO1xufVxuXG4vLyBDb252ZXJ0cyBhIHN5bmNocm9ub3VzIGZ1bmN0aW9uIHRvIG9uZSBhbGxvd2luZyBQcm9taXNlc1xuLy8gYXMgYXJndW1lbnRzIGFuZCByZXR1cm5pbmcgYSBQcm9taXNlIHZhbHVlLlxuLy9cbi8vICAgZm4oVSwgViwgLi4uKTogVCA9PiBmbihVIHwgUHJvbWlzZTxVPiwgViB8IFByb21pc2U8Vj4sIC4uLik6IFByb21pc2U8VD5cbmV4cG9ydCBmdW5jdGlvbiBsaWZ0PFQ+KGZuOiAoLi4uYXJnczogYW55W10pID0+IFQpOiAoLi4uYXJnczogYW55W10pID0+XG4gICAgUHJvbWlzZTxUPiB7XG4gIHJldHVybiBmdW5jdGlvbiguLi5hcmdzOiBhbnlbXSk6IFByb21pc2U8VD4ge1xuICAgIHJldHVybiBQcm9taXNlLmFsbChhcmdzKS50aGVuKCh2YWx1ZXM6IGFueVtdKSA9PiB7XG4gICAgICByZXR1cm4gZm4uYXBwbHkodW5kZWZpbmVkLCB2YWx1ZXMpO1xuICAgIH0pO1xuICB9O1xufVxuXG4vLyBDb252ZXJ0cyBhbiBhc3luY2hyb25vdXMgZnVuY3Rpb24gdG8gb25lIGFsbG93aW5nIFByb21pc2VzXG4vLyBhcyBhcmd1bWVudHMuXG4vL1xuLy8gICBmbihVLCBWLCAuLi4pOiBQcm9taXNlPFQ+ID0+IGZuKFUgfCBQcm9taXNlPFU+LCBWIHwgUHJvbWlzZTxWPiwgLi4uKTpcbi8vICAgUHJvbWlzZTxUPlxuZXhwb3J0IGxldCBsaWZ0QXJnczogPFQ+KGZuOiAoLi4uYXJnczogYW55W10pID0+IFByb21pc2U8VD4pID0+XG4gICAgKCguLi5hcmdzOiBhbnlbXSkgPT4gUHJvbWlzZTxUPikgPSA8YW55PmxpZnQ7XG5cbmV4cG9ydCBsZXQgZ2V0UHJvcCA9IGxpZnQoKG9iaiwgcHJvcCkgPT4gb2JqW3Byb3BdKTtcblxuZXhwb3J0IGZ1bmN0aW9uIGVuc3VyZUV4dGVuc2lvbihmaWxlTmFtZTogc3RyaW5nLCBleHRlbnNpb246IHN0cmluZyk6IHN0cmluZyB7XG4gIGlmIChmaWxlTmFtZS5pbmRleE9mKCcuJykgPT09IC0xKSB7XG4gICAgcmV0dXJuIGZpbGVOYW1lICsgJy4nICsgZXh0ZW5zaW9uO1xuICB9XG4gIHJldHVybiBmaWxlTmFtZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHJlcGxhY2VFeHRlbnNpb24oZmlsZU5hbWU6IHN0cmluZywgZXh0ZW5zaW9uOiBzdHJpbmcpOiBzdHJpbmcge1xuICByZXR1cm4gZmlsZU5hbWUucmVwbGFjZSgvXFwuW15cXC5dKiQvLCAnLicgKyBleHRlbnNpb24pO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcHJldHR5SlNPTihvOiBhbnkpOiBzdHJpbmcge1xuICByZXR1cm4gSlNPTi5zdHJpbmdpZnkobywgbnVsbCwgMik7XG59XG5cbmZ1bmN0aW9uIGRlZXBFeHRlbmQodGFyZ2V0OiBPYmplY3QsIHNvdXJjZTogT2JqZWN0KTogdm9pZCB7XG4gIGZvciAodmFyIHByb3AgaW4gc291cmNlKSB7XG4gICAgaWYgKCFzb3VyY2UuaGFzT3duUHJvcGVydHkocHJvcCkpIHtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cblxuICAgIGlmICh0YXJnZXRbcHJvcF0gIT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdQcm9wZXJ0eSBvdmVyd3JpdGU6ICcgKyBwcm9wKTtcbiAgICB9XG5cbiAgICBpZiAoaXNUeXBlKHNvdXJjZVtwcm9wXSwgJ29iamVjdCcpKSB7XG4gICAgICB0YXJnZXRbcHJvcF0gPSB7fTtcbiAgICAgIGRlZXBFeHRlbmQodGFyZ2V0W3Byb3BdLCBzb3VyY2VbcHJvcF0pO1xuICAgIH0gZWxzZSB7XG4gICAgICB0YXJnZXRbcHJvcF0gPSBzb3VyY2VbcHJvcF07XG4gICAgfVxuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBkZWVwTG9va3VwKG86IE9iamVjdCwgcGF0aDogc3RyaW5nW10pOiBPYmplY3R8dW5kZWZpbmVkIHtcbiAgbGV0IHJlc3VsdCA9IG87XG5cbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBwYXRoLmxlbmd0aDsgaSsrKSB7XG4gICAgaWYgKHJlc3VsdCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cbiAgICByZXN1bHQgPSByZXN1bHRbcGF0aFtpXV07XG4gIH1cbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxuLy8gTGlrZSBKU09OLnN0cmluZ2lmeSAtIGJ1dCBmb3Igc2luZ2xlLXF1b3RlZCBzdHJpbmdzIGluc3RlYWQgb2YgZG91YmxlLXF1b3RlZFxuLy8gb25lcy4gVGhpcyBqdXN0IG1ha2VzIHRoZSBjb21waWxlZCBydWxlcyBtdWNoIGVhc2llciB0byByZWFkLlxuXG4vLyBRdW90ZSBhbGwgY29udHJvbCBjaGFyYWN0ZXJzLCBzbGFzaCwgc2luZ2xlIHF1b3RlcywgYW5kIG5vbi1hc2NpaSBwcmludGFibGVzLlxudmFyIHF1b3RhYmxlQ2hhcmFjdGVycyA9IC9bXFx1MDAwMC1cXHUwMDFmXFxcXFxcJ1xcdTAwN2YtXFx1ZmZmZl0vZztcbnZhciBzcGVjaWFsUXVvdGVzID0gPHtbYzogc3RyaW5nXTogc3RyaW5nfT57XG4gICdcXCcnOiAnXFxcXFxcJycsXG4gICdcXGInOiAnXFxcXGInLFxuICAnXFx0JzogJ1xcXFx0JyxcbiAgJ1xcbic6ICdcXFxcbicsXG4gICdcXGYnOiAnXFxcXGYnLFxuICAnXFxyJzogJ1xcXFxyJ1xufTtcblxuZXhwb3J0IGZ1bmN0aW9uIHF1b3RlU3RyaW5nKHM6IHN0cmluZyk6IHN0cmluZyB7XG4gIHMgPSBzLnJlcGxhY2UocXVvdGFibGVDaGFyYWN0ZXJzLCBmdW5jdGlvbihjKSB7XG4gICAgaWYgKHNwZWNpYWxRdW90ZXNbY10pIHtcbiAgICAgIHJldHVybiBzcGVjaWFsUXVvdGVzW2NdO1xuICAgIH1cbiAgICByZXR1cm4gJ1xcXFx1JyArICgnMDAwMCcgKyBjLmNoYXJDb2RlQXQoMCkudG9TdHJpbmcoMTYpKS5zbGljZSgtNCk7XG4gIH0pO1xuICByZXR1cm4gJ1xcJycgKyBzICsgJ1xcJyc7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBhcnJheUluY2x1ZGVzKGE6IGFueVtdLCBlOiBhbnkpOiBib29sZWFuIHtcbiAgcmV0dXJuIGEuaW5kZXhPZihlKSAhPT0gLTE7XG59XG5cbi8vIExpa2UgUHl0aG9uIGxpc3QuZXh0ZW5kXG5leHBvcnQgZnVuY3Rpb24gZXh0ZW5kQXJyYXkodGFyZ2V0OiBhbnlbXSwgc3JjOiBhbnlbXSkge1xuICBpZiAodGFyZ2V0ID09PSB1bmRlZmluZWQpIHtcbiAgICB0YXJnZXQgPSBbXTtcbiAgfVxuICBBcnJheS5wcm90b3R5cGUucHVzaC5hcHBseSh0YXJnZXQsIHNyYyk7XG4gIHJldHVybiB0YXJnZXQ7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBvcih0YXJnZXQ6IGFueSwgc3JjOiBhbnkpIHtcbiAgaWYgKHRhcmdldCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIHJldHVybiB0YXJnZXQgfHwgc3JjO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZW5zdXJlT2JqZWN0UGF0aChvYmo6IE9iamVjdCwgcGFydHM6IHN0cmluZ1tdKTogT2JqZWN0IHtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBwYXJ0cy5sZW5ndGg7IGkrKykge1xuICAgIHZhciBuYW1lID0gcGFydHNbaV07XG4gICAgaWYgKCEobmFtZSBpbiBvYmopKSB7XG4gICAgICBvYmpbbmFtZV0gPSB7fTtcbiAgICB9XG4gICAgb2JqID0gb2JqW25hbWVdO1xuICB9XG4gIHJldHVybiBvYmo7XG59XG5cbi8vIFJlbW92ZSBhbGwgZW1wdHksICd7fScsICBjaGlsZHJlbiBhbmQgdW5kZWZpbmVkIC0gcmV0dXJucyB0cnVlIGlmZiBvYmogaXNcbi8vIGVtcHR5LlxuZXhwb3J0IGZ1bmN0aW9uIHBydW5lRW1wdHlDaGlsZHJlbihvYmo6IE9iamVjdCk6IGJvb2xlYW4ge1xuICBpZiAob2JqID09PSB1bmRlZmluZWQpIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuICBpZiAob2JqLmNvbnN0cnVjdG9yICE9PSBPYmplY3QpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgdmFyIGhhc0NoaWxkcmVuID0gZmFsc2U7XG4gIGZvciAodmFyIHByb3AgaW4gb2JqKSB7XG4gICAgaWYgKCFvYmouaGFzT3duUHJvcGVydHkocHJvcCkpIHtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cbiAgICBpZiAocHJ1bmVFbXB0eUNoaWxkcmVuKG9ialtwcm9wXSkpIHtcbiAgICAgIGRlbGV0ZSBvYmpbcHJvcF07XG4gICAgfSBlbHNlIHtcbiAgICAgIGhhc0NoaWxkcmVuID0gdHJ1ZTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuICFoYXNDaGlsZHJlbjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGRlbGV0ZVByb3BOYW1lKG9iajogT2JqZWN0LCBuYW1lOiBzdHJpbmcpIHtcbiAgaWYgKG9iai5jb25zdHJ1Y3RvciAhPT0gT2JqZWN0KSB7XG4gICAgcmV0dXJuO1xuICB9XG4gIGZvciAodmFyIHByb3AgaW4gb2JqKSB7XG4gICAgaWYgKCFvYmouaGFzT3duUHJvcGVydHkocHJvcCkpIHtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cbiAgICBpZiAocHJvcCA9PT0gbmFtZSkge1xuICAgICAgZGVsZXRlIG9ialtwcm9wXTtcbiAgICB9IGVsc2Uge1xuICAgICAgZGVsZXRlUHJvcE5hbWUob2JqW3Byb3BdLCBuYW1lKTtcbiAgICB9XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGZvcm1hdENvbHVtbnMoaW5kZW50OiBudW1iZXIsIGxpbmVzOiBzdHJpbmdbXVtdKTogc3RyaW5nW10ge1xuICBsZXQgcmVzdWx0OiBzdHJpbmdbXSA9IFtdO1xuICBsZXQgY29sdW1uU2l6ZSA9IDxudW1iZXJbXT5bXTtcblxuICBmb3IgKGxldCBpID0gMDsgaSA8IGxpbmVzLmxlbmd0aDsgaSsrKSB7XG4gICAgbGV0IGxpbmUgPSBsaW5lc1tpXTtcbiAgICBmb3IgKGxldCBqID0gMDsgaiA8IGxpbmUubGVuZ3RoOyBqKyspIHtcbiAgICAgIGlmIChjb2x1bW5TaXplW2pdID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgY29sdW1uU2l6ZVtqXSA9IDA7XG4gICAgICB9XG4gICAgICBjb2x1bW5TaXplW2pdID0gTWF0aC5tYXgoY29sdW1uU2l6ZVtqXSwgbGluZVtqXS5sZW5ndGgpO1xuICAgIH1cbiAgfVxuXG4gIHZhciBwcmVmaXggPSByZXBlYXRTdHJpbmcoJyAnLCBpbmRlbnQpO1xuICB2YXIgczogc3RyaW5nO1xuICBmb3IgKGxldCBpID0gMDsgaSA8IGxpbmVzLmxlbmd0aDsgaSsrKSB7XG4gICAgbGV0IGxpbmUgPSBsaW5lc1tpXTtcbiAgICBsZXQgc2VwID0gJyc7XG4gICAgcyA9ICcnO1xuICAgIGZvciAobGV0IGogPSAwOyBqIDwgbGluZS5sZW5ndGg7IGorKykge1xuICAgICAgaWYgKGogPT09IDApIHtcbiAgICAgICAgcyA9IHByZWZpeDtcbiAgICAgIH1cbiAgICAgIGlmIChqID09PSBsaW5lLmxlbmd0aCAtIDEpIHtcbiAgICAgICAgcyArPSBzZXAgKyBsaW5lW2pdO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcyArPSBzZXAgKyBmaWxsU3RyaW5nKGxpbmVbal0sIGNvbHVtblNpemVbal0pO1xuICAgICAgfVxuICAgICAgc2VwID0gJyAgJztcbiAgICB9XG4gICAgcmVzdWx0LnB1c2gocyk7XG4gIH1cblxuICByZXR1cm4gcmVzdWx0O1xufVxuXG5mdW5jdGlvbiByZXBlYXRTdHJpbmcoczogc3RyaW5nLCBuOiBudW1iZXIpOiBzdHJpbmcge1xuICByZXR1cm4gbmV3IEFycmF5KG4gKyAxKS5qb2luKHMpO1xufVxuXG5mdW5jdGlvbiBmaWxsU3RyaW5nKHM6IHN0cmluZywgbjogbnVtYmVyKTogc3RyaW5nIHtcbiAgbGV0IHBhZGRpbmcgPSBuIC0gcy5sZW5ndGg7XG4gIGlmIChwYWRkaW5nID4gMCkge1xuICAgIHMgKz0gcmVwZWF0U3RyaW5nKCcgJywgcGFkZGluZyk7XG4gIH1cbiAgcmV0dXJuIHM7XG59XG4iXX0=
{
"name": "firebase-bolt",
"description": "Firebase Bolt Security and Modeling Language Compiler",
"version": "0.8.2",
"version": "0.8.3",
"author": "Firebase (https://firebase.google.com/)",
"main": "lib/bolt.js",
"types": "lib/bolt.d.ts",
"homepage": "https://github.com/firebase/bolt",

@@ -8,0 +9,0 @@ "repository": {

@@ -7,4 +7,4 @@ # ![Bolt Icon](docs/images/flash.png) Bolt Compiler

Bolt is an experimental security and rules compiler for Firebase. It is currently
in beta. The language definition is converging, but not yet finalized. We welcome
Bolt is an experimental security and rules compiler for Firebase Realtime Database (not for Firebase Cloud Storage).
It is currently in beta. The language definition is converging, but not yet finalized. We welcome
experimentation, but ask that you hand-verify the resulting JSON output before

@@ -32,4 +32,5 @@ using with production applications.

Will create a rules.json which you can then upload via the [firebase command
line](https://www.firebase.com/docs/hosting/command-line-tool.html):
Will create a rules.json which you can then upload via the [Firebase Web Console](https://console.firebase.google.com/)
or the [Firebase command
line](https://firebase.google.com/docs/cli):

@@ -36,0 +37,0 @@ $ firebase deploy

Sorry, the diff of this file is too big to display

Sorry, the diff of this file is too big to display

Sorry, the diff of this file is too big to display

Sorry, the diff of this file is too big to display

Sorry, the diff of this file is too big to display

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc