Socket
Socket
Sign inDemoInstall

@glimmer/validator

Package Overview
Dependencies
Maintainers
12
Versions
143
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@glimmer/validator - npm Package Compare versions

Comparing version 0.80.0 to 0.81.0

8

dist/commonjs/es2017/index.js

@@ -246,8 +246,2 @@ "use strict";

});
Object.defineProperty(exports, "deprecateMutationsInTrackingTransaction", {
enumerable: true,
get: function () {
return _debug.deprecateMutationsInTrackingTransaction;
}
});

@@ -274,2 +268,2 @@ var _utils = require("./lib/utils");

globalObj[GLIMMER_VALIDATOR_REGISTRATION] = true;
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3BhY2thZ2VzL0BnbGltbWVyL3ZhbGlkYXRvci9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTs7QUFjQTs7QUE2QkE7O0FBRUE7O0FBZ0JBOztBQUVBOztBQTdEQSxNQUFNLDhCQUE4QixHQUFHLHNCQUF2QyxnQ0FBdUMsQ0FBdkM7QUFFQSxNQUFNLFNBQVMsR0FBZix1QkFBQTs7QUFFQSxJQUFJLFNBQVMsQ0FBVCw4QkFBUyxDQUFULEtBQUosSUFBQSxFQUF3RDtBQUN0RCxRQUFNLElBQUEsS0FBQSxDQUFOLHNaQUFNLENBQU47QUFHRDs7QUFFRCxTQUFTLENBQVQsOEJBQVMsQ0FBVCxHQUFBLElBQUEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBzeW1ib2xGb3IsIGdldEdsb2JhbCB9IGZyb20gJy4vbGliL3V0aWxzJztcblxuY29uc3QgR0xJTU1FUl9WQUxJREFUT1JfUkVHSVNUUkFUSU9OID0gc3ltYm9sRm9yKCdHTElNTUVSX1ZBTElEQVRPUl9SRUdJU1RSQVRJT04nKTtcblxuY29uc3QgZ2xvYmFsT2JqID0gZ2V0R2xvYmFsKCk7XG5cbmlmIChnbG9iYWxPYmpbR0xJTU1FUl9WQUxJREFUT1JfUkVHSVNUUkFUSU9OXSA9PT0gdHJ1ZSkge1xuICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgJ1RoZSBgQGdsaW1tZXIvdmFsaWRhdG9yYCBsaWJyYXJ5IGhhcyBiZWVuIGluY2x1ZGVkIHR3aWNlIGluIHRoaXMgYXBwbGljYXRpb24uIEl0IGNvdWxkIGJlIGRpZmZlcmVudCB2ZXJzaW9ucyBvZiB0aGUgcGFja2FnZSwgb3IgdGhlIHNhbWUgdmVyc2lvbiBpbmNsdWRlZCB0d2ljZSBieSBtaXN0YWtlLiBgQGdsaW1tZXIvdmFsaWRhdG9yYCBkZXBlbmRzIG9uIGhhdmluZyBhIHNpbmdsZSBjb3B5IG9mIHRoZSBwYWNrYWdlIGluIHVzZSBhdCBhbnkgdGltZSBpbiBhbiBhcHBsaWNhdGlvbiwgZXZlbiBpZiB0aGV5IGFyZSB0aGUgc2FtZSB2ZXJzaW9uLiBZb3UgbXVzdCBkZWR1cGUgeW91ciBidWlsZCB0byByZW1vdmUgdGhlIGR1cGxpY2F0ZSBwYWNrYWdlcyBpbiBvcmRlciB0byBwcmV2ZW50IHRoaXMgZXJyb3IuJ1xuICApO1xufVxuXG5nbG9iYWxPYmpbR0xJTU1FUl9WQUxJREFUT1JfUkVHSVNUUkFUSU9OXSA9IHRydWU7XG5cbmV4cG9ydCB7XG4gIEFMTE9XX0NZQ0xFUyxcbiAgYnVtcCxcbiAgQ29tYmluYXRvclRhZyxcbiAgY29tYmluZSxcbiAgQ09NUFVURSxcbiAgQ09OU1RBTlRfVEFHLFxuICBDT05TVEFOVCxcbiAgQ29uc3RhbnRUYWcsXG4gIGNyZWF0ZVRhZyxcbiAgY3JlYXRlVXBkYXRhYmxlVGFnLFxuICBDdXJyZW50VGFnLFxuICBDVVJSRU5UX1RBRyxcbiAgRElSVFlfVEFHIGFzIGRpcnR5VGFnLFxuICBEaXJ0eWFibGVUYWcsXG4gIEVudGl0eVRhZyxcbiAgSU5JVElBTCxcbiAgaXNDb25zdFRhZyxcbiAgUmV2aXNpb24sXG4gIFRhZyxcbiAgVXBkYXRhYmxlVGFnLFxuICBVUERBVEVfVEFHIGFzIHVwZGF0ZVRhZyxcbiAgdmFsaWRhdGVUYWcsXG4gIHZhbHVlRm9yVGFnLFxuICBWb2xhdGlsZVRhZyxcbiAgVk9MQVRJTEVfVEFHLFxuICBWT0xBVElMRSxcbn0gZnJvbSAnLi9saWIvdmFsaWRhdG9ycyc7XG5cbmV4cG9ydCB7IGRpcnR5VGFnRm9yLCB0YWdGb3IsIHRhZ01ldGFGb3IsIFRhZ01ldGEgfSBmcm9tICcuL2xpYi9tZXRhJztcblxuZXhwb3J0IHtcbiAgYmVnaW5UcmFja0ZyYW1lLFxuICBlbmRUcmFja0ZyYW1lLFxuICBiZWdpblVudHJhY2tGcmFtZSxcbiAgZW5kVW50cmFja0ZyYW1lLFxuICByZXNldFRyYWNraW5nLFxuICBjb25zdW1lVGFnLFxuICBpc1RyYWNraW5nLFxuICB0cmFjayxcbiAgdW50cmFjayxcbiAgQ2FjaGUsXG4gIGNyZWF0ZUNhY2hlLFxuICBpc0NvbnN0LFxuICBnZXRWYWx1ZSxcbn0gZnJvbSAnLi9saWIvdHJhY2tpbmcnO1xuXG5leHBvcnQgeyB0cmFja2VkRGF0YSB9IGZyb20gJy4vbGliL3RyYWNrZWQtZGF0YSc7XG5cbmV4cG9ydCB7XG4gIGxvZ1RyYWNraW5nU3RhY2ssXG4gIHNldFRyYWNraW5nVHJhbnNhY3Rpb25FbnYsXG4gIHJ1bkluVHJhY2tpbmdUcmFuc2FjdGlvbixcbiAgYmVnaW5UcmFja2luZ1RyYW5zYWN0aW9uLFxuICBlbmRUcmFja2luZ1RyYW5zYWN0aW9uLFxuICBkZXByZWNhdGVNdXRhdGlvbnNJblRyYWNraW5nVHJhbnNhY3Rpb24sXG59IGZyb20gJy4vbGliL2RlYnVnJztcbiJdLCJzb3VyY2VSb290IjoiIn0=
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3BhY2thZ2VzL0BnbGltbWVyL3ZhbGlkYXRvci9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTs7QUFjQTs7QUE2QkE7O0FBRUE7O0FBZ0JBOztBQUVBOztBQTdEQSxNQUFNLDhCQUE4QixHQUFHLHNCQUF2QyxnQ0FBdUMsQ0FBdkM7QUFFQSxNQUFNLFNBQVMsR0FBZix1QkFBQTs7QUFFQSxJQUFJLFNBQVMsQ0FBVCw4QkFBUyxDQUFULEtBQUosSUFBQSxFQUF3RDtBQUN0RCxRQUFNLElBQUEsS0FBQSxDQUFOLHNaQUFNLENBQU47QUFHRDs7QUFFRCxTQUFTLENBQVQsOEJBQVMsQ0FBVCxHQUFBLElBQUEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBzeW1ib2xGb3IsIGdldEdsb2JhbCB9IGZyb20gJy4vbGliL3V0aWxzJztcblxuY29uc3QgR0xJTU1FUl9WQUxJREFUT1JfUkVHSVNUUkFUSU9OID0gc3ltYm9sRm9yKCdHTElNTUVSX1ZBTElEQVRPUl9SRUdJU1RSQVRJT04nKTtcblxuY29uc3QgZ2xvYmFsT2JqID0gZ2V0R2xvYmFsKCk7XG5cbmlmIChnbG9iYWxPYmpbR0xJTU1FUl9WQUxJREFUT1JfUkVHSVNUUkFUSU9OXSA9PT0gdHJ1ZSkge1xuICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgJ1RoZSBgQGdsaW1tZXIvdmFsaWRhdG9yYCBsaWJyYXJ5IGhhcyBiZWVuIGluY2x1ZGVkIHR3aWNlIGluIHRoaXMgYXBwbGljYXRpb24uIEl0IGNvdWxkIGJlIGRpZmZlcmVudCB2ZXJzaW9ucyBvZiB0aGUgcGFja2FnZSwgb3IgdGhlIHNhbWUgdmVyc2lvbiBpbmNsdWRlZCB0d2ljZSBieSBtaXN0YWtlLiBgQGdsaW1tZXIvdmFsaWRhdG9yYCBkZXBlbmRzIG9uIGhhdmluZyBhIHNpbmdsZSBjb3B5IG9mIHRoZSBwYWNrYWdlIGluIHVzZSBhdCBhbnkgdGltZSBpbiBhbiBhcHBsaWNhdGlvbiwgZXZlbiBpZiB0aGV5IGFyZSB0aGUgc2FtZSB2ZXJzaW9uLiBZb3UgbXVzdCBkZWR1cGUgeW91ciBidWlsZCB0byByZW1vdmUgdGhlIGR1cGxpY2F0ZSBwYWNrYWdlcyBpbiBvcmRlciB0byBwcmV2ZW50IHRoaXMgZXJyb3IuJ1xuICApO1xufVxuXG5nbG9iYWxPYmpbR0xJTU1FUl9WQUxJREFUT1JfUkVHSVNUUkFUSU9OXSA9IHRydWU7XG5cbmV4cG9ydCB7XG4gIEFMTE9XX0NZQ0xFUyxcbiAgYnVtcCxcbiAgQ29tYmluYXRvclRhZyxcbiAgY29tYmluZSxcbiAgQ09NUFVURSxcbiAgQ09OU1RBTlRfVEFHLFxuICBDT05TVEFOVCxcbiAgQ29uc3RhbnRUYWcsXG4gIGNyZWF0ZVRhZyxcbiAgY3JlYXRlVXBkYXRhYmxlVGFnLFxuICBDdXJyZW50VGFnLFxuICBDVVJSRU5UX1RBRyxcbiAgRElSVFlfVEFHIGFzIGRpcnR5VGFnLFxuICBEaXJ0eWFibGVUYWcsXG4gIEVudGl0eVRhZyxcbiAgSU5JVElBTCxcbiAgaXNDb25zdFRhZyxcbiAgUmV2aXNpb24sXG4gIFRhZyxcbiAgVXBkYXRhYmxlVGFnLFxuICBVUERBVEVfVEFHIGFzIHVwZGF0ZVRhZyxcbiAgdmFsaWRhdGVUYWcsXG4gIHZhbHVlRm9yVGFnLFxuICBWb2xhdGlsZVRhZyxcbiAgVk9MQVRJTEVfVEFHLFxuICBWT0xBVElMRSxcbn0gZnJvbSAnLi9saWIvdmFsaWRhdG9ycyc7XG5cbmV4cG9ydCB7IGRpcnR5VGFnRm9yLCB0YWdGb3IsIHRhZ01ldGFGb3IsIFRhZ01ldGEgfSBmcm9tICcuL2xpYi9tZXRhJztcblxuZXhwb3J0IHtcbiAgYmVnaW5UcmFja0ZyYW1lLFxuICBlbmRUcmFja0ZyYW1lLFxuICBiZWdpblVudHJhY2tGcmFtZSxcbiAgZW5kVW50cmFja0ZyYW1lLFxuICByZXNldFRyYWNraW5nLFxuICBjb25zdW1lVGFnLFxuICBpc1RyYWNraW5nLFxuICB0cmFjayxcbiAgdW50cmFjayxcbiAgQ2FjaGUsXG4gIGNyZWF0ZUNhY2hlLFxuICBpc0NvbnN0LFxuICBnZXRWYWx1ZSxcbn0gZnJvbSAnLi9saWIvdHJhY2tpbmcnO1xuXG5leHBvcnQgeyB0cmFja2VkRGF0YSB9IGZyb20gJy4vbGliL3RyYWNrZWQtZGF0YSc7XG5cbmV4cG9ydCB7XG4gIGxvZ1RyYWNraW5nU3RhY2ssXG4gIHNldFRyYWNraW5nVHJhbnNhY3Rpb25FbnYsXG4gIHJ1bkluVHJhY2tpbmdUcmFuc2FjdGlvbixcbiAgYmVnaW5UcmFja2luZ1RyYW5zYWN0aW9uLFxuICBlbmRUcmFja2luZ1RyYW5zYWN0aW9uLFxufSBmcm9tICcuL2xpYi9kZWJ1Zyc7XG4iXSwic291cmNlUm9vdCI6IiJ9

69

dist/commonjs/es2017/lib/debug.js

@@ -6,3 +6,3 @@ "use strict";

});
exports.logTrackingStack = exports.markTagAsConsumed = exports.assertTagNotConsumed = exports.setTrackingTransactionEnv = exports.resetTrackingTransaction = exports.deprecateMutationsInTrackingTransaction = exports.runInTrackingTransaction = exports.endTrackingTransaction = exports.beginTrackingTransaction = void 0;
exports.logTrackingStack = exports.markTagAsConsumed = exports.assertTagNotConsumed = exports.setTrackingTransactionEnv = exports.resetTrackingTransaction = exports.runInTrackingTransaction = exports.endTrackingTransaction = exports.beginTrackingTransaction = void 0;

@@ -19,4 +19,2 @@ var _env = require("@glimmer/env");

exports.runInTrackingTransaction = runInTrackingTransaction;
let deprecateMutationsInTrackingTransaction;
exports.deprecateMutationsInTrackingTransaction = deprecateMutationsInTrackingTransaction;
let resetTrackingTransaction;

@@ -60,3 +58,3 @@ exports.resetTrackingTransaction = resetTrackingTransaction;

exports.beginTrackingTransaction = beginTrackingTransaction = (_debugLabel, deprecate = false) => {
exports.beginTrackingTransaction = beginTrackingTransaction = _debugLabel => {
CONSUMED_TAGS = CONSUMED_TAGS || new WeakMap();

@@ -67,4 +65,3 @@ let debugLabel = _debugLabel || undefined;

parent,
debugLabel,
deprecate
debugLabel
});

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

};
/**
* Switches to deprecating within an autotracking transaction, if one exists.
* If `runInAutotrackingTransaction` is called within the callback of this
* method, it switches back to throwing an error, allowing zebra-striping of
* the types of errors that are thrown.
*
* Does not start an autotracking transaction.
*
* NOTE: For Ember usage only, in general you should assert that these
* invariants are true.
*/
exports.deprecateMutationsInTrackingTransaction = deprecateMutationsInTrackingTransaction = (fn, debugLabel) => {
beginTrackingTransaction(debugLabel, true);
try {
fn();
} finally {
endTrackingTransaction();
}
};
let nthIndex = (str, pattern, n, startingPos = -1) => {

@@ -202,31 +177,23 @@ let i = startingPos;

let transaction = CONSUMED_TAGS.get(tag);
if (!transaction) return;
let currentTransaction = TRANSACTION_STACK[TRANSACTION_STACK.length - 1];
if (!transaction) return; // This hack makes the assertion message nicer, we can cut off the first
// few lines of the stack trace and let users know where the actual error
// occurred.
if (currentTransaction.deprecate) {
(0, _globalContext.deprecate)(makeTrackingErrorMessage(transaction, obj, keyName), false, {
id: 'autotracking.mutation-after-consumption'
});
} else {
// This hack makes the assertion message nicer, we can cut off the first
// few lines of the stack trace and let users know where the actual error
// occurred.
try {
(0, _globalContext.assert)(false, makeTrackingErrorMessage(transaction, obj, keyName));
} catch (e) {
if (e.stack) {
let updateStackBegin = e.stack.indexOf('Stack trace for the update:');
try {
(0, _globalContext.assert)(false, makeTrackingErrorMessage(transaction, obj, keyName));
} catch (e) {
if (e.stack) {
let updateStackBegin = e.stack.indexOf('Stack trace for the update:');
if (updateStackBegin !== -1) {
let start = nthIndex(e.stack, '\n', 1, updateStackBegin);
let end = nthIndex(e.stack, '\n', 4, updateStackBegin);
e.stack = e.stack.substr(0, start) + e.stack.substr(end);
}
if (updateStackBegin !== -1) {
let start = nthIndex(e.stack, '\n', 1, updateStackBegin);
let end = nthIndex(e.stack, '\n', 4, updateStackBegin);
e.stack = e.stack.substr(0, start) + e.stack.substr(end);
}
}
throw e;
}
throw e;
}
};
}
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL0BnbGltbWVyL3ZhbGlkYXRvci9saWIvZGVidWcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUNBOztBQUNBOztBQUVPLElBQUEsd0JBQUE7O0FBR0EsSUFBQSxzQkFBQTs7QUFDQSxJQUFBLHdCQUFBOztBQUdBLElBQUEsdUNBQUE7O0FBRUEsSUFBQSx3QkFBQTs7QUFDQSxJQUFBLHlCQUFBOztBQUlBLElBQUEsb0JBQUE7O0FBSUEsSUFBQSxpQkFBQTs7QUFFQSxJQUFBLGdCQUFBOzs7QUFRUCxJQUFBLFVBQUEsRUFBVztBQUNULE1BQUksYUFBYSxHQUFqQixJQUFBO0FBRUEsTUFBSSxpQkFBaUIsR0FIWixFQUdULENBSFMsQ0FLVDs7QUFFQSxNQUFJLGVBQWUsR0FBRztBQUNwQixJQUFBLFlBQVksQ0FBQSxHQUFBLEVBQUEsT0FBQSxFQUFnQztBQUMxQyxVQUFBLE9BQUE7O0FBRUEsVUFBSSxPQUFBLEdBQUEsS0FBSixVQUFBLEVBQStCO0FBQzdCLFFBQUEsT0FBTyxHQUFHLEdBQUcsQ0FBYixJQUFBO0FBREYsT0FBQSxNQUVPLElBQUksT0FBQSxHQUFBLEtBQUEsUUFBQSxJQUEyQixHQUFHLEtBQWxDLElBQUEsRUFBNkM7QUFDbEQsWUFBSSxTQUFTLEdBQUksR0FBRyxDQUFILFdBQUEsSUFBbUIsR0FBRyxDQUFILFdBQUEsQ0FBcEIsSUFBQyxJQUFqQixpQkFBQTtBQUVBLFFBQUEsT0FBTyxHQUFHLG1CQUFtQixTQUE3QixHQUFBO0FBSEssT0FBQSxNQUlBLElBQUksR0FBRyxLQUFQLFNBQUEsRUFBdUI7QUFDNUIsUUFBQSxPQUFPLEdBQVAsa0JBQUE7QUFESyxPQUFBLE1BRUE7QUFDTCxRQUFBLE9BQU8sR0FBRyxNQUFNLENBQWhCLEdBQWdCLENBQWhCO0FBQ0Q7O0FBRUQsVUFBSSxXQUFXLEdBQUcsT0FBTyxHQUFHLEtBQUssT0FBTyxXQUFXLE9BQTFCLElBQUEsR0FBd0MsS0FBSyxPQUF0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Z0JBQWdCLEdBQUcsQ0FBQyxDQUFELEtBQUEsQ0FBQSxPQUFBLENBQXZCLDZCQUF1QixDQUF2Qjs7QUFFQSxjQUFJLGdCQUFnQixLQUFLLENBQXpCLENBQUEsRUFBNkI7QUFDM0IsZ0JBQUksS0FBSyxHQUFHLFFBQVEsQ0FBQyxDQUFDLENBQUYsS0FBQSxFQUFBLElBQUEsRUFBQSxDQUFBLEVBQXBCLGdCQUFvQixDQUFwQjtBQUNBLGdCQUFJLEdBQUcsR0FBRyxRQUFRLENBQUMsQ0FBQyxDQUFGLEtBQUEsRUFBQSxJQUFBLEVBQUEsQ0FBQSxFQUFsQixnQkFBa0IsQ0FBbEI7QUFDQSxZQUFBLENBQUMsQ0FBRCxLQUFBLEdBQVUsQ0FBQyxDQUFELEtBQUEsQ0FBQSxNQUFBLENBQUEsQ0FBQSxFQUFBLEtBQUEsSUFBMkIsQ0FBQyxDQUFELEtBQUEsQ0FBQSxNQUFBLENBQXJDLEdBQXFDLENBQXJDO0FBQ0Q7QUFDRjs7QUFFRCxjQUFBLENBQUE7QUFDRDtBQUNGO0FBaENILEdBQUE7QUFrQ0QiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBUYWcgfSBmcm9tICcuL3ZhbGlkYXRvcnMnO1xuaW1wb3J0IHsgREVCVUcgfSBmcm9tICdAZ2xpbW1lci9lbnYnO1xuaW1wb3J0IHsgZGVwcmVjYXRlLCBhc3NlcnQgfSBmcm9tICdAZ2xpbW1lci9nbG9iYWwtY29udGV4dCc7XG5cbmV4cG9ydCBsZXQgYmVnaW5UcmFja2luZ1RyYW5zYWN0aW9uOlxuICB8IHVuZGVmaW5lZFxuICB8ICgoZGVidWdnaW5nQ29udGV4dD86IHN0cmluZyB8IGZhbHNlLCBkZXByZWNhdGU/OiBib29sZWFuKSA9PiB2b2lkKTtcbmV4cG9ydCBsZXQgZW5kVHJhY2tpbmdUcmFuc2FjdGlvbjogdW5kZWZpbmVkIHwgKCgpID0+IHZvaWQpO1xuZXhwb3J0IGxldCBydW5JblRyYWNraW5nVHJhbnNhY3Rpb246XG4gIHwgdW5kZWZpbmVkXG4gIHwgKDxUPihmbjogKCkgPT4gVCwgZGVidWdnaW5nQ29udGV4dD86IHN0cmluZyB8IGZhbHNlKSA9PiBUKTtcbmV4cG9ydCBsZXQgZGVwcmVjYXRlTXV0YXRpb25zSW5UcmFja2luZ1RyYW5zYWN0aW9uOiB1bmRlZmluZWQgfCAoKGZuOiAoKSA9PiB2b2lkKSA9PiB2b2lkKTtcblxuZXhwb3J0IGxldCByZXNldFRyYWNraW5nVHJhbnNhY3Rpb246IHVuZGVmaW5lZCB8ICgoKSA9PiBzdHJpbmcpO1xuZXhwb3J0IGxldCBzZXRUcmFja2luZ1RyYW5zYWN0aW9uRW52OlxuICB8IHVuZGVmaW5lZFxuICB8ICgoZW52OiB7IGRlYnVnTWVzc2FnZT8ob2JqPzogdW5rbm93biwga2V5TmFtZT86IHN0cmluZyk6IHN0cmluZyB9KSA9PiB2b2lkKTtcblxuZXhwb3J0IGxldCBhc3NlcnRUYWdOb3RDb25zdW1lZDpcbiAgfCB1bmRlZmluZWRcbiAgfCAoPFQ+KHRhZzogVGFnLCBvYmo/OiBULCBrZXlOYW1lPzoga2V5b2YgVCB8IHN0cmluZyB8IHN5bWJvbCkgPT4gdm9pZCk7XG5cbmV4cG9ydCBsZXQgbWFya1RhZ0FzQ29uc3VtZWQ6IHVuZGVmaW5lZCB8ICgoX3RhZzogVGFnKSA9PiB2b2lkKTtcblxuZXhwb3J0IGxldCBsb2dUcmFja2luZ1N0YWNrOiB1bmRlZmluZWQgfCAoKHRyYW5zYWN0aW9uPzogVHJhbnNhY3Rpb24pID0+IHN0cmluZyk7XG5cbmludGVyZmFjZSBUcmFuc2FjdGlvbiB7XG4gIHBhcmVudDogVHJhbnNhY3Rpb24gfCBudWxsO1xuICBkZWJ1Z0xhYmVsPzogc3RyaW5nO1xuICBkZXByZWNhdGU6IGJvb2xlYW47XG59XG5cbmlmIChERUJVRykge1xuICBsZXQgQ09OU1VNRURfVEFHUzogV2Vha01hcDxUYWcsIFRyYW5zYWN0aW9uPiB8IG51bGwgPSBudWxsO1xuXG4gIGxldCBUUkFOU0FDVElPTl9TVEFDSzogVHJhbnNhY3Rpb25bXSA9IFtdO1xuXG4gIC8vLy8vLy8vL1xuXG4gIGxldCBUUkFOU0FDVElPTl9FTlYgPSB7XG4gICAgZGVidWdNZXNzYWdlKG9iaj86IHVua25vd24sIGtleU5hbWU/OiBzdHJpbmcpIHtcbiAgICAgIGxldCBvYmpOYW1lO1xuXG4gICAgICBpZiAodHlwZW9mIG9iaiA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICBvYmpOYW1lID0gb2JqLm5hbWU7XG4gICAgICB9IGVsc2UgaWYgKHR5cGVvZiBvYmogPT09ICdvYmplY3QnICYmIG9iaiAhPT0gbnVsbCkge1xuICAgICAgICBsZXQgY2xhc3NOYW1lID0gKG9iai5jb25zdHJ1Y3RvciAmJiBvYmouY29uc3RydWN0b3IubmFtZSkgfHwgJyh1bmtub3duIGNsYXNzKSc7XG5cbiAgICAgICAgb2JqTmFtZSA9IGAoYW4gaW5zdGFuY2Ugb2YgJHtjbGFzc05hbWV9KWA7XG4gICAgICB9IGVsc2UgaWYgKG9iaiA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIG9iak5hbWUgPSAnKGFuIHVua25vd24gdGFnKSc7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBvYmpOYW1lID0gU3RyaW5nKG9iaik7XG4gICAgICB9XG5cbiAgICAgIGxldCBkaXJ0eVN0cmluZyA9IGtleU5hbWUgPyBgXFxgJHtrZXlOYW1lfVxcYCBvbiBcXGAke29iak5hbWV9XFxgYCA6IGBcXGAke29iak5hbWV9XFxgYDtcblxuICAgICAgcmV0dXJuIGBZb3UgYXR0ZW1wdGVkIHRvIHVwZGF0ZSAke2RpcnR5U3RyaW5nfSwgYnV0IGl0IGhhZCBhbHJlYWR5IGJlZW4gdXNlZCBwcmV2aW91c2x5IGluIHRoZSBzYW1lIGNvbXB1dGF0aW9uLiAgQXR0ZW1wdGluZyB0byB1cGRhdGUgYSB2YWx1ZSBhZnRlciB1c2luZyBpdCBpbiBhIGNvbXB1dGF0aW9uIGNhbiBjYXVzZSBsb2dpY2FsIGVycm9ycywgaW5maW5pdGUgcmV2YWxpZGF0aW9uIGJ1Z3MsIGFuZCBwZXJmb3JtYW5jZSBpc3N1ZXMsIGFuZCBpcyBub3Qgc3VwcG9ydGVkLmA7XG4gICAgfSxcbiAgfTtcblxuICBzZXRUcmFja2luZ1RyYW5zYWN0aW9uRW52ID0gKGVudikgPT4gT2JqZWN0LmFzc2lnbihUUkFOU0FDVElPTl9FTlYsIGVudik7XG5cbiAgYmVnaW5UcmFja2luZ1RyYW5zYWN0aW9uID0gKF9kZWJ1Z0xhYmVsPzogc3RyaW5nIHwgZmFsc2UsIGRlcHJlY2F0ZSA9IGZhbHNlKSA9PiB7XG4gICAgQ09OU1VNRURfVEFHUyA9IENPTlNVTUVEX1RBR1MgfHwgbmV3IFdlYWtNYXAoKTtcblxuICAgIGxldCBkZWJ1Z0xhYmVsID0gX2RlYnVnTGFiZWwgfHwgdW5kZWZpbmVkO1xuXG4gICAgbGV0IHBhcmVudCA9IFRSQU5TQUNUSU9OX1NUQUNLW1RSQU5TQUNUSU9OX1NUQUNLLmxlbmd0aCAtIDFdIHx8IG51bGw7XG5cbiAgICBUUkFOU0FDVElPTl9TVEFDSy5wdXNoKHtcbiAgICAgIHBhcmVudCxcbiAgICAgIGRlYnVnTGFiZWwsXG4gICAgICBkZXByZWNhdGUsXG4gICAgfSk7XG4gIH07XG5cbiAgZW5kVHJhY2tpbmdUcmFuc2FjdGlvbiA9ICgpID0+IHtcbiAgICBpZiAoVFJBTlNBQ1RJT05fU1RBQ0subGVuZ3RoID09PSAwKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ2F0dGVtcHRlZCB0byBjbG9zZSBhIHRyYWNraW5nIHRyYW5zYWN0aW9uLCBidXQgb25lIHdhcyBub3Qgb3BlbicpO1xuICAgIH1cblxuICAgIFRSQU5TQUNUSU9OX1NUQUNLLnBvcCgpO1xuXG4gICAgaWYgKFRSQU5TQUNUSU9OX1NUQUNLLmxlbmd0aCA9PT0gMCkge1xuICAgICAgQ09OU1VNRURfVEFHUyA9IG51bGw7XG4gICAgfVxuICB9O1xuXG4gIHJlc2V0VHJhY2tpbmdUcmFuc2FjdGlvbiA9ICgpID0+IHtcbiAgICBsZXQgc3RhY2sgPSAnJztcblxuICAgIGlmIChUUkFOU0FDVElPTl9TVEFDSy5sZW5ndGggPiAwKSB7XG4gICAgICBzdGFjayA9IGxvZ1RyYWNraW5nU3RhY2shKFRSQU5TQUNUSU9OX1NUQUNLW1RSQU5TQUNUSU9OX1NUQUNLLmxlbmd0aCAtIDFdKTtcbiAgICB9XG5cbiAgICBUUkFOU0FDVElPTl9TVEFDSyA9IFtdO1xuICAgIENPTlNVTUVEX1RBR1MgPSBudWxsO1xuXG4gICAgcmV0dXJuIHN0YWNrO1xuICB9O1xuXG4gIC8qKlxuICAgKiBDcmVhdGVzIGEgZ2xvYmFsIGF1dG90cmFja2luZyB0cmFuc2FjdGlvbi4gVGhpcyB3aWxsIHByZXZlbnQgYW55IGJhY2tmbG93XG4gICAqIGluIGFueSBgdHJhY2tgIGNhbGxzIHdpdGhpbiB0aGUgdHJhbnNhY3Rpb24sIGV2ZW4gaWYgdGhleSBhcmUgbm90XG4gICAqIGV4dGVybmFsbHkgY29uc3VtZWQuXG4gICAqXG4gICAqIGBydW5JbkF1dG90cmFja2luZ1RyYW5zYWN0aW9uYCBjYW4gYmUgY2FsbGVkIHdpdGhpbiBpdHNlbGYsIGFuZCBpdCB3aWxsIGFkZFxuICAgKiBvbnRvIHRoZSBleGlzdGluZyB0cmFuc2FjdGlvbiBpZiBvbmUgZXhpc3RzLlxuICAgKlxuICAgKiBUT0RPOiBPbmx5IHRocm93IGFuIGVycm9yIGlmIHRoZSBgdHJhY2tgIGlzIGNvbnN1bWVkLlxuICAgKi9cbiAgcnVuSW5UcmFja2luZ1RyYW5zYWN0aW9uID0gPFQ+KGZuOiAoKSA9PiBULCBkZWJ1Z0xhYmVsPzogc3RyaW5nIHwgZmFsc2UpID0+IHtcbiAgICBiZWdpblRyYWNraW5nVHJhbnNhY3Rpb24hKGRlYnVnTGFiZWwpO1xuICAgIGxldCBkaWRFcnJvciA9IHRydWU7XG5cbiAgICB0cnkge1xuICAgICAgbGV0IHZhbHVlID0gZm4oKTtcbiAgICAgIGRpZEVycm9yID0gZmFsc2U7XG4gICAgICByZXR1cm4gdmFsdWU7XG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIGlmIChkaWRFcnJvciAhPT0gdHJ1ZSkge1xuICAgICAgICBlbmRUcmFja2luZ1RyYW5zYWN0aW9uISgpO1xuICAgICAgfVxuICAgIH1cbiAgfTtcblxuICAvKipcbiAgICogU3dpdGNoZXMgdG8gZGVwcmVjYXRpbmcgd2l0aGluIGFuIGF1dG90cmFja2luZyB0cmFuc2FjdGlvbiwgaWYgb25lIGV4aXN0cy5cbiAgICogSWYgYHJ1bkluQXV0b3RyYWNraW5nVHJhbnNhY3Rpb25gIGlzIGNhbGxlZCB3aXRoaW4gdGhlIGNhbGxiYWNrIG9mIHRoaXNcbiAgICogbWV0aG9kLCBpdCBzd2l0Y2hlcyBiYWNrIHRvIHRocm93aW5nIGFuIGVycm9yLCBhbGxvd2luZyB6ZWJyYS1zdHJpcGluZyBvZlxuICAgKiB0aGUgdHlwZXMgb2YgZXJyb3JzIHRoYXQgYXJlIHRocm93bi5cbiAgICpcbiAgICogRG9lcyBub3Qgc3RhcnQgYW4gYXV0b3RyYWNraW5nIHRyYW5zYWN0aW9uLlxuICAgKlxuICAgKiBOT1RFOiBGb3IgRW1iZXIgdXNhZ2Ugb25seSwgaW4gZ2VuZXJhbCB5b3Ugc2hvdWxkIGFzc2VydCB0aGF0IHRoZXNlXG4gICAqIGludmFyaWFudHMgYXJlIHRydWUuXG4gICAqL1xuICBkZXByZWNhdGVNdXRhdGlvbnNJblRyYWNraW5nVHJhbnNhY3Rpb24gPSAoZm46ICgpID0+IHZvaWQsIGRlYnVnTGFiZWw/OiBzdHJpbmcgfCBmYWxzZSkgPT4ge1xuICAgIGJlZ2luVHJhY2tpbmdUcmFuc2FjdGlvbiEoZGVidWdMYWJlbCwgdHJ1ZSk7XG5cbiAgICB0cnkge1xuICAgICAgZm4oKTtcbiAgICB9IGZpbmFsbHkge1xuICAgICAgZW5kVHJhY2tpbmdUcmFuc2FjdGlvbiEoKTtcbiAgICB9XG4gIH07XG5cbiAgbGV0IG50aEluZGV4ID0gKHN0cjogc3RyaW5nLCBwYXR0ZXJuOiBzdHJpbmcsIG46IG51bWJlciwgc3RhcnRpbmdQb3MgPSAtMSkgPT4ge1xuICAgIGxldCBpID0gc3RhcnRpbmdQb3M7XG5cbiAgICB3aGlsZSAobi0tID4gMCAmJiBpKysgPCBzdHIubGVuZ3RoKSB7XG4gICAgICBpID0gc3RyLmluZGV4T2YocGF0dGVybiwgaSk7XG4gICAgICBpZiAoaSA8IDApIGJyZWFrO1xuICAgIH1cblxuICAgIHJldHVybiBpO1xuICB9O1xuXG4gIGxldCBtYWtlVHJhY2tpbmdFcnJvck1lc3NhZ2UgPSA8VD4oXG4gICAgdHJhbnNhY3Rpb246IFRyYW5zYWN0aW9uLFxuICAgIG9iaj86IFQsXG4gICAga2V5TmFtZT86IGtleW9mIFQgfCBzdHJpbmcgfCBzeW1ib2xcbiAgKSA9PiB7XG4gICAgbGV0IG1lc3NhZ2UgPSBbVFJBTlNBQ1RJT05fRU5WLmRlYnVnTWVzc2FnZShvYmosIGtleU5hbWUgJiYgU3RyaW5nKGtleU5hbWUpKV07XG5cbiAgICBtZXNzYWdlLnB1c2goYFxcYCR7U3RyaW5nKGtleU5hbWUpfVxcYCB3YXMgZmlyc3QgdXNlZDpgKTtcblxuICAgIG1lc3NhZ2UucHVzaChsb2dUcmFja2luZ1N0YWNrISh0cmFuc2FjdGlvbikpO1xuXG4gICAgbWVzc2FnZS5wdXNoKGBTdGFjayB0cmFjZSBmb3IgdGhlIHVwZGF0ZTpgKTtcblxuICAgIHJldHVybiBtZXNzYWdlLmpvaW4oJ1xcblxcbicpO1xuICB9O1xuXG4gIGxvZ1RyYWNraW5nU3RhY2sgPSAodHJhbnNhY3Rpb24/OiBUcmFuc2FjdGlvbikgPT4ge1xuICAgIGxldCB0cmFja2luZ1N0YWNrID0gW107XG4gICAgbGV0IGN1cnJlbnQ6IFRyYW5zYWN0aW9uIHwgbnVsbCB8IHVuZGVmaW5lZCA9XG4gICAgICB0cmFuc2FjdGlvbiB8fCBUUkFOU0FDVElPTl9TVEFDS1tUUkFOU0FDVElPTl9TVEFDSy5sZW5ndGggLSAxXTtcblxuICAgIGlmIChjdXJyZW50ID09PSB1bmRlZmluZWQpIHJldHVybiAnJztcblxuICAgIHdoaWxlIChjdXJyZW50KSB7XG4gICAgICBpZiAoY3VycmVudC5kZWJ1Z0xhYmVsKSB7XG4gICAgICAgIHRyYWNraW5nU3RhY2sudW5zaGlmdChjdXJyZW50LmRlYnVnTGFiZWwpO1xuICAgICAgfVxuXG4gICAgICBjdXJyZW50ID0gY3VycmVudC5wYXJlbnQ7XG4gICAgfVxuXG4gICAgLy8gVE9ETzogVXNlIFN0cmluZy5wcm90b3R5cGUucmVwZWF0IGhlcmUgb25jZSB3ZSBjYW4gZHJvcCBzdXBwb3J0IGZvciBJRTExXG4gICAgcmV0dXJuIHRyYWNraW5nU3RhY2subWFwKChsYWJlbCwgaW5kZXgpID0+IEFycmF5KDIgKiBpbmRleCArIDEpLmpvaW4oJyAnKSArIGxhYmVsKS5qb2luKCdcXG4nKTtcbiAgfTtcblxuICBtYXJrVGFnQXNDb25zdW1lZCA9IChfdGFnOiBUYWcpID0+IHtcbiAgICBpZiAoIUNPTlNVTUVEX1RBR1MgfHwgQ09OU1VNRURfVEFHUy5oYXMoX3RhZykpIHJldHVybjtcblxuICAgIENPTlNVTUVEX1RBR1Muc2V0KF90YWcsIFRSQU5TQUNUSU9OX1NUQUNLW1RSQU5TQUNUSU9OX1NUQUNLLmxlbmd0aCAtIDFdKTtcblxuICAgIC8vIFdlIG5lZWQgdG8gbWFyayB0aGUgdGFnIGFuZCBhbGwgb2YgaXRzIHN1YnRhZ3MgYXMgY29uc3VtZWQsIHNvIHdlIG5lZWQgdG9cbiAgICAvLyBjYXN0IGl0IGFuZCBhY2Nlc3MgaXRzIGludGVybmFscy4gSW4gdGhlIGZ1dHVyZSB0aGlzIHNob3VsZG4ndCBiZSBuZWNlc3NhcnksXG4gICAgLy8gdGhpcyBpcyBvbmx5IGZvciBjb21wdXRlZCBwcm9wZXJ0aWVzLlxuICAgIGxldCB0YWcgPSBfdGFnIGFzIGFueTtcblxuICAgIGlmICh0YWcuc3VidGFnKSB7XG4gICAgICBtYXJrVGFnQXNDb25zdW1lZCEodGFnLnN1YnRhZyk7XG4gICAgfVxuXG4gICAgaWYgKHRhZy5zdWJ0YWdzKSB7XG4gICAgICB0YWcuc3VidGFncy5mb3JFYWNoKCh0YWc6IFRhZykgPT4gbWFya1RhZ0FzQ29uc3VtZWQhKHRhZykpO1xuICAgIH1cbiAgfTtcblxuICBhc3NlcnRUYWdOb3RDb25zdW1lZCA9IDxUPih0YWc6IFRhZywgb2JqPzogVCwga2V5TmFtZT86IGtleW9mIFQgfCBzdHJpbmcgfCBzeW1ib2wpID0+IHtcbiAgICBpZiAoQ09OU1VNRURfVEFHUyA9PT0gbnVsbCkgcmV0dXJuO1xuXG4gICAgbGV0IHRyYW5zYWN0aW9uID0gQ09OU1VNRURfVEFHUy5nZXQodGFnKTtcblxuICAgIGlmICghdHJhbnNhY3Rpb24pIHJldHVybjtcblxuICAgIGxldCBjdXJyZW50VHJhbnNhY3Rpb24gPSBUUkFOU0FDVElPTl9TVEFDS1tUUkFOU0FDVElPTl9TVEFDSy5sZW5ndGggLSAxXTtcblxuICAgIGlmIChjdXJyZW50VHJhbnNhY3Rpb24uZGVwcmVjYXRlKSB7XG4gICAgICBkZXByZWNhdGUobWFrZVRyYWNraW5nRXJyb3JNZXNzYWdlKHRyYW5zYWN0aW9uLCBvYmosIGtleU5hbWUpLCBmYWxzZSwge1xuICAgICAgICBpZDogJ2F1dG90cmFja2luZy5tdXRhdGlvbi1hZnRlci1jb25zdW1wdGlvbicsXG4gICAgICB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gVGhpcyBoYWNrIG1ha2VzIHRoZSBhc3NlcnRpb24gbWVzc2FnZSBuaWNlciwgd2UgY2FuIGN1dCBvZmYgdGhlIGZpcnN0XG4gICAgICAvLyBmZXcgbGluZXMgb2YgdGhlIHN0YWNrIHRyYWNlIGFuZCBsZXQgdXNlcnMga25vdyB3aGVyZSB0aGUgYWN0dWFsIGVycm9yXG4gICAgICAvLyBvY2N1cnJlZC5cbiAgICAgIHRyeSB7XG4gICAgICAgIGFzc2VydChmYWxzZSwgbWFrZVRyYWNraW5nRXJyb3JNZXNzYWdlKHRyYW5zYWN0aW9uLCBvYmosIGtleU5hbWUpKTtcbiAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgaWYgKGUuc3RhY2spIHtcbiAgICAgICAgICBsZXQgdXBkYXRlU3RhY2tCZWdpbiA9IGUuc3RhY2suaW5kZXhPZignU3RhY2sgdHJhY2UgZm9yIHRoZSB1cGRhdGU6Jyk7XG5cbiAgICAgICAgICBpZiAodXBkYXRlU3RhY2tCZWdpbiAhPT0gLTEpIHtcbiAgICAgICAgICAgIGxldCBzdGFydCA9IG50aEluZGV4KGUuc3RhY2ssICdcXG4nLCAxLCB1cGRhdGVTdGFja0JlZ2luKTtcbiAgICAgICAgICAgIGxldCBlbmQgPSBudGhJbmRleChlLnN0YWNrLCAnXFxuJywgNCwgdXBkYXRlU3RhY2tCZWdpbik7XG4gICAgICAgICAgICBlLnN0YWNrID0gZS5zdGFjay5zdWJzdHIoMCwgc3RhcnQpICsgZS5zdGFjay5zdWJzdHIoZW5kKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICB0aHJvdyBlO1xuICAgICAgfVxuICAgIH1cbiAgfTtcbn1cbiJdLCJzb3VyY2VSb290IjoiIn0=
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL0BnbGltbWVyL3ZhbGlkYXRvci9saWIvZGVidWcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUNBOztBQUNBOztBQUVPLElBQUEsd0JBQUE7O0FBR0EsSUFBQSxzQkFBQTs7QUFDQSxJQUFBLHdCQUFBOztBQUlBLElBQUEsd0JBQUE7O0FBQ0EsSUFBQSx5QkFBQTs7QUFJQSxJQUFBLG9CQUFBOztBQUlBLElBQUEsaUJBQUE7O0FBRUEsSUFBQSxnQkFBQTs7O0FBT1AsSUFBQSxVQUFBLEVBQVc7QUFDVCxNQUFJLGFBQWEsR0FBakIsSUFBQTtBQUVBLE1BQUksaUJBQWlCLEdBSFosRUFHVCxDQUhTLENBS1Q7O0FBRUEsTUFBSSxlQUFlLEdBQUc7QUFDcEIsSUFBQSxZQUFZLENBQUEsR0FBQSxFQUFBLE9BQUEsRUFBZ0M7QUFDMUMsVUFBQSxPQUFBOztBQUVBLFVBQUksT0FBQSxHQUFBLEtBQUosVUFBQSxFQUErQjtBQUM3QixRQUFBLE9BQU8sR0FBRyxHQUFHLENBQWIsSUFBQTtBQURGLE9BQUEsTUFFTyxJQUFJLE9BQUEsR0FBQSxLQUFBLFFBQUEsSUFBMkIsR0FBRyxLQUFsQyxJQUFBLEVBQTZDO0FBQ2xELFlBQUksU0FBUyxHQUFJLEdBQUcsQ0FBSCxXQUFBLElBQW1CLEdBQUcsQ0FBSCxXQUFBLENBQXBCLElBQUMsSUFBakIsaUJBQUE7QUFFQSxRQUFBLE9BQU8sR0FBRyxtQkFBbUIsU0FBN0IsR0FBQTtBQUhLLE9BQUEsTUFJQSxJQUFJLEdBQUcsS0FBUCxTQUFBLEVBQXVCO0FBQzVCLFFBQUEsT0FBTyxHQUFQLGtCQUFBO0FBREssT0FBQSxNQUVBO0FBQ0wsUUFBQSxPQUFPLEdBQUcsTUFBTSxDQUFoQixHQUFnQixDQUFoQjtBQUNEOztBQUVELFVBQUksV0FBVyxHQUFHLE9BQU8sR0FBRyxLQUFLLE9BQU8sV0FBVyxPQUExQixJQUFBLEdBQXdDLEtBQUssT0FBdEUsSUFBQTtBQUVBLGFBQU8s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IFRhZyB9IGZyb20gJy4vdmFsaWRhdG9ycyc7XG5pbXBvcnQgeyBERUJVRyB9IGZyb20gJ0BnbGltbWVyL2Vudic7XG5pbXBvcnQgeyBhc3NlcnQgfSBmcm9tICdAZ2xpbW1lci9nbG9iYWwtY29udGV4dCc7XG5cbmV4cG9ydCBsZXQgYmVnaW5UcmFja2luZ1RyYW5zYWN0aW9uOlxuICB8IHVuZGVmaW5lZFxuICB8ICgoZGVidWdnaW5nQ29udGV4dD86IHN0cmluZyB8IGZhbHNlLCBkZXByZWNhdGU/OiBib29sZWFuKSA9PiB2b2lkKTtcbmV4cG9ydCBsZXQgZW5kVHJhY2tpbmdUcmFuc2FjdGlvbjogdW5kZWZpbmVkIHwgKCgpID0+IHZvaWQpO1xuZXhwb3J0IGxldCBydW5JblRyYWNraW5nVHJhbnNhY3Rpb246XG4gIHwgdW5kZWZpbmVkXG4gIHwgKDxUPihmbjogKCkgPT4gVCwgZGVidWdnaW5nQ29udGV4dD86IHN0cmluZyB8IGZhbHNlKSA9PiBUKTtcblxuZXhwb3J0IGxldCByZXNldFRyYWNraW5nVHJhbnNhY3Rpb246IHVuZGVmaW5lZCB8ICgoKSA9PiBzdHJpbmcpO1xuZXhwb3J0IGxldCBzZXRUcmFja2luZ1RyYW5zYWN0aW9uRW52OlxuICB8IHVuZGVmaW5lZFxuICB8ICgoZW52OiB7IGRlYnVnTWVzc2FnZT8ob2JqPzogdW5rbm93biwga2V5TmFtZT86IHN0cmluZyk6IHN0cmluZyB9KSA9PiB2b2lkKTtcblxuZXhwb3J0IGxldCBhc3NlcnRUYWdOb3RDb25zdW1lZDpcbiAgfCB1bmRlZmluZWRcbiAgfCAoPFQ+KHRhZzogVGFnLCBvYmo/OiBULCBrZXlOYW1lPzoga2V5b2YgVCB8IHN0cmluZyB8IHN5bWJvbCkgPT4gdm9pZCk7XG5cbmV4cG9ydCBsZXQgbWFya1RhZ0FzQ29uc3VtZWQ6IHVuZGVmaW5lZCB8ICgoX3RhZzogVGFnKSA9PiB2b2lkKTtcblxuZXhwb3J0IGxldCBsb2dUcmFja2luZ1N0YWNrOiB1bmRlZmluZWQgfCAoKHRyYW5zYWN0aW9uPzogVHJhbnNhY3Rpb24pID0+IHN0cmluZyk7XG5cbmludGVyZmFjZSBUcmFuc2FjdGlvbiB7XG4gIHBhcmVudDogVHJhbnNhY3Rpb24gfCBudWxsO1xuICBkZWJ1Z0xhYmVsPzogc3RyaW5nO1xufVxuXG5pZiAoREVCVUcpIHtcbiAgbGV0IENPTlNVTUVEX1RBR1M6IFdlYWtNYXA8VGFnLCBUcmFuc2FjdGlvbj4gfCBudWxsID0gbnVsbDtcblxuICBsZXQgVFJBTlNBQ1RJT05fU1RBQ0s6IFRyYW5zYWN0aW9uW10gPSBbXTtcblxuICAvLy8vLy8vLy9cblxuICBsZXQgVFJBTlNBQ1RJT05fRU5WID0ge1xuICAgIGRlYnVnTWVzc2FnZShvYmo/OiB1bmtub3duLCBrZXlOYW1lPzogc3RyaW5nKSB7XG4gICAgICBsZXQgb2JqTmFtZTtcblxuICAgICAgaWYgKHR5cGVvZiBvYmogPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgb2JqTmFtZSA9IG9iai5uYW1lO1xuICAgICAgfSBlbHNlIGlmICh0eXBlb2Ygb2JqID09PSAnb2JqZWN0JyAmJiBvYmogIT09IG51bGwpIHtcbiAgICAgICAgbGV0IGNsYXNzTmFtZSA9IChvYmouY29uc3RydWN0b3IgJiYgb2JqLmNvbnN0cnVjdG9yLm5hbWUpIHx8ICcodW5rbm93biBjbGFzcyknO1xuXG4gICAgICAgIG9iak5hbWUgPSBgKGFuIGluc3RhbmNlIG9mICR7Y2xhc3NOYW1lfSlgO1xuICAgICAgfSBlbHNlIGlmIChvYmogPT09IHVuZGVmaW5lZCkge1xuICAgICAgICBvYmpOYW1lID0gJyhhbiB1bmtub3duIHRhZyknO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgb2JqTmFtZSA9IFN0cmluZyhvYmopO1xuICAgICAgfVxuXG4gICAgICBsZXQgZGlydHlTdHJpbmcgPSBrZXlOYW1lID8gYFxcYCR7a2V5TmFtZX1cXGAgb24gXFxgJHtvYmpOYW1lfVxcYGAgOiBgXFxgJHtvYmpOYW1lfVxcYGA7XG5cbiAgICAgIHJldHVybiBgWW91IGF0dGVtcHRlZCB0byB1cGRhdGUgJHtkaXJ0eVN0cmluZ30sIGJ1dCBpdCBoYWQgYWxyZWFkeSBiZWVuIHVzZWQgcHJldmlvdXNseSBpbiB0aGUgc2FtZSBjb21wdXRhdGlvbi4gIEF0dGVtcHRpbmcgdG8gdXBkYXRlIGEgdmFsdWUgYWZ0ZXIgdXNpbmcgaXQgaW4gYSBjb21wdXRhdGlvbiBjYW4gY2F1c2UgbG9naWNhbCBlcnJvcnMsIGluZmluaXRlIHJldmFsaWRhdGlvbiBidWdzLCBhbmQgcGVyZm9ybWFuY2UgaXNzdWVzLCBhbmQgaXMgbm90IHN1cHBvcnRlZC5gO1xuICAgIH0sXG4gIH07XG5cbiAgc2V0VHJhY2tpbmdUcmFuc2FjdGlvbkVudiA9IChlbnYpID0+IE9iamVjdC5hc3NpZ24oVFJBTlNBQ1RJT05fRU5WLCBlbnYpO1xuXG4gIGJlZ2luVHJhY2tpbmdUcmFuc2FjdGlvbiA9IChfZGVidWdMYWJlbD86IHN0cmluZyB8IGZhbHNlKSA9PiB7XG4gICAgQ09OU1VNRURfVEFHUyA9IENPTlNVTUVEX1RBR1MgfHwgbmV3IFdlYWtNYXAoKTtcblxuICAgIGxldCBkZWJ1Z0xhYmVsID0gX2RlYnVnTGFiZWwgfHwgdW5kZWZpbmVkO1xuXG4gICAgbGV0IHBhcmVudCA9IFRSQU5TQUNUSU9OX1NUQUNLW1RSQU5TQUNUSU9OX1NUQUNLLmxlbmd0aCAtIDFdIHx8IG51bGw7XG5cbiAgICBUUkFOU0FDVElPTl9TVEFDSy5wdXNoKHtcbiAgICAgIHBhcmVudCxcbiAgICAgIGRlYnVnTGFiZWwsXG4gICAgfSk7XG4gIH07XG5cbiAgZW5kVHJhY2tpbmdUcmFuc2FjdGlvbiA9ICgpID0+IHtcbiAgICBpZiAoVFJBTlNBQ1RJT05fU1RBQ0subGVuZ3RoID09PSAwKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ2F0dGVtcHRlZCB0byBjbG9zZSBhIHRyYWNraW5nIHRyYW5zYWN0aW9uLCBidXQgb25lIHdhcyBub3Qgb3BlbicpO1xuICAgIH1cblxuICAgIFRSQU5TQUNUSU9OX1NUQUNLLnBvcCgpO1xuXG4gICAgaWYgKFRSQU5TQUNUSU9OX1NUQUNLLmxlbmd0aCA9PT0gMCkge1xuICAgICAgQ09OU1VNRURfVEFHUyA9IG51bGw7XG4gICAgfVxuICB9O1xuXG4gIHJlc2V0VHJhY2tpbmdUcmFuc2FjdGlvbiA9ICgpID0+IHtcbiAgICBsZXQgc3RhY2sgPSAnJztcblxuICAgIGlmIChUUkFOU0FDVElPTl9TVEFDSy5sZW5ndGggPiAwKSB7XG4gICAgICBzdGFjayA9IGxvZ1RyYWNraW5nU3RhY2shKFRSQU5TQUNUSU9OX1NUQUNLW1RSQU5TQUNUSU9OX1NUQUNLLmxlbmd0aCAtIDFdKTtcbiAgICB9XG5cbiAgICBUUkFOU0FDVElPTl9TVEFDSyA9IFtdO1xuICAgIENPTlNVTUVEX1RBR1MgPSBudWxsO1xuXG4gICAgcmV0dXJuIHN0YWNrO1xuICB9O1xuXG4gIC8qKlxuICAgKiBDcmVhdGVzIGEgZ2xvYmFsIGF1dG90cmFja2luZyB0cmFuc2FjdGlvbi4gVGhpcyB3aWxsIHByZXZlbnQgYW55IGJhY2tmbG93XG4gICAqIGluIGFueSBgdHJhY2tgIGNhbGxzIHdpdGhpbiB0aGUgdHJhbnNhY3Rpb24sIGV2ZW4gaWYgdGhleSBhcmUgbm90XG4gICAqIGV4dGVybmFsbHkgY29uc3VtZWQuXG4gICAqXG4gICAqIGBydW5JbkF1dG90cmFja2luZ1RyYW5zYWN0aW9uYCBjYW4gYmUgY2FsbGVkIHdpdGhpbiBpdHNlbGYsIGFuZCBpdCB3aWxsIGFkZFxuICAgKiBvbnRvIHRoZSBleGlzdGluZyB0cmFuc2FjdGlvbiBpZiBvbmUgZXhpc3RzLlxuICAgKlxuICAgKiBUT0RPOiBPbmx5IHRocm93IGFuIGVycm9yIGlmIHRoZSBgdHJhY2tgIGlzIGNvbnN1bWVkLlxuICAgKi9cbiAgcnVuSW5UcmFja2luZ1RyYW5zYWN0aW9uID0gPFQ+KGZuOiAoKSA9PiBULCBkZWJ1Z0xhYmVsPzogc3RyaW5nIHwgZmFsc2UpID0+IHtcbiAgICBiZWdpblRyYWNraW5nVHJhbnNhY3Rpb24hKGRlYnVnTGFiZWwpO1xuICAgIGxldCBkaWRFcnJvciA9IHRydWU7XG5cbiAgICB0cnkge1xuICAgICAgbGV0IHZhbHVlID0gZm4oKTtcbiAgICAgIGRpZEVycm9yID0gZmFsc2U7XG4gICAgICByZXR1cm4gdmFsdWU7XG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIGlmIChkaWRFcnJvciAhPT0gdHJ1ZSkge1xuICAgICAgICBlbmRUcmFja2luZ1RyYW5zYWN0aW9uISgpO1xuICAgICAgfVxuICAgIH1cbiAgfTtcblxuICBsZXQgbnRoSW5kZXggPSAoc3RyOiBzdHJpbmcsIHBhdHRlcm46IHN0cmluZywgbjogbnVtYmVyLCBzdGFydGluZ1BvcyA9IC0xKSA9PiB7XG4gICAgbGV0IGkgPSBzdGFydGluZ1BvcztcblxuICAgIHdoaWxlIChuLS0gPiAwICYmIGkrKyA8IHN0ci5sZW5ndGgpIHtcbiAgICAgIGkgPSBzdHIuaW5kZXhPZihwYXR0ZXJuLCBpKTtcbiAgICAgIGlmIChpIDwgMCkgYnJlYWs7XG4gICAgfVxuXG4gICAgcmV0dXJuIGk7XG4gIH07XG5cbiAgbGV0IG1ha2VUcmFja2luZ0Vycm9yTWVzc2FnZSA9IDxUPihcbiAgICB0cmFuc2FjdGlvbjogVHJhbnNhY3Rpb24sXG4gICAgb2JqPzogVCxcbiAgICBrZXlOYW1lPzoga2V5b2YgVCB8IHN0cmluZyB8IHN5bWJvbFxuICApID0+IHtcbiAgICBsZXQgbWVzc2FnZSA9IFtUUkFOU0FDVElPTl9FTlYuZGVidWdNZXNzYWdlKG9iaiwga2V5TmFtZSAmJiBTdHJpbmcoa2V5TmFtZSkpXTtcblxuICAgIG1lc3NhZ2UucHVzaChgXFxgJHtTdHJpbmcoa2V5TmFtZSl9XFxgIHdhcyBmaXJzdCB1c2VkOmApO1xuXG4gICAgbWVzc2FnZS5wdXNoKGxvZ1RyYWNraW5nU3RhY2shKHRyYW5zYWN0aW9uKSk7XG5cbiAgICBtZXNzYWdlLnB1c2goYFN0YWNrIHRyYWNlIGZvciB0aGUgdXBkYXRlOmApO1xuXG4gICAgcmV0dXJuIG1lc3NhZ2Uuam9pbignXFxuXFxuJyk7XG4gIH07XG5cbiAgbG9nVHJhY2tpbmdTdGFjayA9ICh0cmFuc2FjdGlvbj86IFRyYW5zYWN0aW9uKSA9PiB7XG4gICAgbGV0IHRyYWNraW5nU3RhY2sgPSBbXTtcbiAgICBsZXQgY3VycmVudDogVHJhbnNhY3Rpb24gfCBudWxsIHwgdW5kZWZpbmVkID1cbiAgICAgIHRyYW5zYWN0aW9uIHx8IFRSQU5TQUNUSU9OX1NUQUNLW1RSQU5TQUNUSU9OX1NUQUNLLmxlbmd0aCAtIDFdO1xuXG4gICAgaWYgKGN1cnJlbnQgPT09IHVuZGVmaW5lZCkgcmV0dXJuICcnO1xuXG4gICAgd2hpbGUgKGN1cnJlbnQpIHtcbiAgICAgIGlmIChjdXJyZW50LmRlYnVnTGFiZWwpIHtcbiAgICAgICAgdHJhY2tpbmdTdGFjay51bnNoaWZ0KGN1cnJlbnQuZGVidWdMYWJlbCk7XG4gICAgICB9XG5cbiAgICAgIGN1cnJlbnQgPSBjdXJyZW50LnBhcmVudDtcbiAgICB9XG5cbiAgICAvLyBUT0RPOiBVc2UgU3RyaW5nLnByb3RvdHlwZS5yZXBlYXQgaGVyZSBvbmNlIHdlIGNhbiBkcm9wIHN1cHBvcnQgZm9yIElFMTFcbiAgICByZXR1cm4gdHJhY2tpbmdTdGFjay5tYXAoKGxhYmVsLCBpbmRleCkgPT4gQXJyYXkoMiAqIGluZGV4ICsgMSkuam9pbignICcpICsgbGFiZWwpLmpvaW4oJ1xcbicpO1xuICB9O1xuXG4gIG1hcmtUYWdBc0NvbnN1bWVkID0gKF90YWc6IFRhZykgPT4ge1xuICAgIGlmICghQ09OU1VNRURfVEFHUyB8fCBDT05TVU1FRF9UQUdTLmhhcyhfdGFnKSkgcmV0dXJuO1xuXG4gICAgQ09OU1VNRURfVEFHUy5zZXQoX3RhZywgVFJBTlNBQ1RJT05fU1RBQ0tbVFJBTlNBQ1RJT05fU1RBQ0subGVuZ3RoIC0gMV0pO1xuXG4gICAgLy8gV2UgbmVlZCB0byBtYXJrIHRoZSB0YWcgYW5kIGFsbCBvZiBpdHMgc3VidGFncyBhcyBjb25zdW1lZCwgc28gd2UgbmVlZCB0b1xuICAgIC8vIGNhc3QgaXQgYW5kIGFjY2VzcyBpdHMgaW50ZXJuYWxzLiBJbiB0aGUgZnV0dXJlIHRoaXMgc2hvdWxkbid0IGJlIG5lY2Vzc2FyeSxcbiAgICAvLyB0aGlzIGlzIG9ubHkgZm9yIGNvbXB1dGVkIHByb3BlcnRpZXMuXG4gICAgbGV0IHRhZyA9IF90YWcgYXMgYW55O1xuXG4gICAgaWYgKHRhZy5zdWJ0YWcpIHtcbiAgICAgIG1hcmtUYWdBc0NvbnN1bWVkISh0YWcuc3VidGFnKTtcbiAgICB9XG5cbiAgICBpZiAodGFnLnN1YnRhZ3MpIHtcbiAgICAgIHRhZy5zdWJ0YWdzLmZvckVhY2goKHRhZzogVGFnKSA9PiBtYXJrVGFnQXNDb25zdW1lZCEodGFnKSk7XG4gICAgfVxuICB9O1xuXG4gIGFzc2VydFRhZ05vdENvbnN1bWVkID0gPFQ+KHRhZzogVGFnLCBvYmo/OiBULCBrZXlOYW1lPzoga2V5b2YgVCB8IHN0cmluZyB8IHN5bWJvbCkgPT4ge1xuICAgIGlmIChDT05TVU1FRF9UQUdTID09PSBudWxsKSByZXR1cm47XG5cbiAgICBsZXQgdHJhbnNhY3Rpb24gPSBDT05TVU1FRF9UQUdTLmdldCh0YWcpO1xuXG4gICAgaWYgKCF0cmFuc2FjdGlvbikgcmV0dXJuO1xuXG4gICAgLy8gVGhpcyBoYWNrIG1ha2VzIHRoZSBhc3NlcnRpb24gbWVzc2FnZSBuaWNlciwgd2UgY2FuIGN1dCBvZmYgdGhlIGZpcnN0XG4gICAgLy8gZmV3IGxpbmVzIG9mIHRoZSBzdGFjayB0cmFjZSBhbmQgbGV0IHVzZXJzIGtub3cgd2hlcmUgdGhlIGFjdHVhbCBlcnJvclxuICAgIC8vIG9jY3VycmVkLlxuICAgIHRyeSB7XG4gICAgICBhc3NlcnQoZmFsc2UsIG1ha2VUcmFja2luZ0Vycm9yTWVzc2FnZSh0cmFuc2FjdGlvbiwgb2JqLCBrZXlOYW1lKSk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgaWYgKGUuc3RhY2spIHtcbiAgICAgICAgbGV0IHVwZGF0ZVN0YWNrQmVnaW4gPSBlLnN0YWNrLmluZGV4T2YoJ1N0YWNrIHRyYWNlIGZvciB0aGUgdXBkYXRlOicpO1xuXG4gICAgICAgIGlmICh1cGRhdGVTdGFja0JlZ2luICE9PSAtMSkge1xuICAgICAgICAgIGxldCBzdGFydCA9IG50aEluZGV4KGUuc3RhY2ssICdcXG4nLCAxLCB1cGRhdGVTdGFja0JlZ2luKTtcbiAgICAgICAgICBsZXQgZW5kID0gbnRoSW5kZXgoZS5zdGFjaywgJ1xcbicsIDQsIHVwZGF0ZVN0YWNrQmVnaW4pO1xuICAgICAgICAgIGUuc3RhY2sgPSBlLnN0YWNrLnN1YnN0cigwLCBzdGFydCkgKyBlLnN0YWNrLnN1YnN0cihlbmQpO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHRocm93IGU7XG4gICAgfVxuICB9O1xufVxuIl0sInNvdXJjZVJvb3QiOiIifQ==

@@ -246,8 +246,2 @@ "use strict";

});
Object.defineProperty(exports, "deprecateMutationsInTrackingTransaction", {
enumerable: true,
get: function () {
return _debug.deprecateMutationsInTrackingTransaction;
}
});

@@ -274,2 +268,2 @@ var _utils = require("./lib/utils");

globalObj[GLIMMER_VALIDATOR_REGISTRATION] = true;
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3BhY2thZ2VzL0BnbGltbWVyL3ZhbGlkYXRvci9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTs7QUFjQTs7QUE2QkE7O0FBRUE7O0FBZ0JBOztBQUVBOztBQTdEQSxJQUFNLDhCQUE4QixHQUFHLHNCQUF2QyxnQ0FBdUMsQ0FBdkM7QUFFQSxJQUFNLFNBQVMsR0FBZix1QkFBQTs7QUFFQSxJQUFJLFNBQVMsQ0FBVCw4QkFBUyxDQUFULEtBQUosSUFBQSxFQUF3RDtBQUN0RCxRQUFNLElBQUEsS0FBQSxDQUFOLHNaQUFNLENBQU47QUFHRDs7QUFFRCxTQUFTLENBQVQsOEJBQVMsQ0FBVCxHQUFBLElBQUEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBzeW1ib2xGb3IsIGdldEdsb2JhbCB9IGZyb20gJy4vbGliL3V0aWxzJztcblxuY29uc3QgR0xJTU1FUl9WQUxJREFUT1JfUkVHSVNUUkFUSU9OID0gc3ltYm9sRm9yKCdHTElNTUVSX1ZBTElEQVRPUl9SRUdJU1RSQVRJT04nKTtcblxuY29uc3QgZ2xvYmFsT2JqID0gZ2V0R2xvYmFsKCk7XG5cbmlmIChnbG9iYWxPYmpbR0xJTU1FUl9WQUxJREFUT1JfUkVHSVNUUkFUSU9OXSA9PT0gdHJ1ZSkge1xuICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgJ1RoZSBgQGdsaW1tZXIvdmFsaWRhdG9yYCBsaWJyYXJ5IGhhcyBiZWVuIGluY2x1ZGVkIHR3aWNlIGluIHRoaXMgYXBwbGljYXRpb24uIEl0IGNvdWxkIGJlIGRpZmZlcmVudCB2ZXJzaW9ucyBvZiB0aGUgcGFja2FnZSwgb3IgdGhlIHNhbWUgdmVyc2lvbiBpbmNsdWRlZCB0d2ljZSBieSBtaXN0YWtlLiBgQGdsaW1tZXIvdmFsaWRhdG9yYCBkZXBlbmRzIG9uIGhhdmluZyBhIHNpbmdsZSBjb3B5IG9mIHRoZSBwYWNrYWdlIGluIHVzZSBhdCBhbnkgdGltZSBpbiBhbiBhcHBsaWNhdGlvbiwgZXZlbiBpZiB0aGV5IGFyZSB0aGUgc2FtZSB2ZXJzaW9uLiBZb3UgbXVzdCBkZWR1cGUgeW91ciBidWlsZCB0byByZW1vdmUgdGhlIGR1cGxpY2F0ZSBwYWNrYWdlcyBpbiBvcmRlciB0byBwcmV2ZW50IHRoaXMgZXJyb3IuJ1xuICApO1xufVxuXG5nbG9iYWxPYmpbR0xJTU1FUl9WQUxJREFUT1JfUkVHSVNUUkFUSU9OXSA9IHRydWU7XG5cbmV4cG9ydCB7XG4gIEFMTE9XX0NZQ0xFUyxcbiAgYnVtcCxcbiAgQ29tYmluYXRvclRhZyxcbiAgY29tYmluZSxcbiAgQ09NUFVURSxcbiAgQ09OU1RBTlRfVEFHLFxuICBDT05TVEFOVCxcbiAgQ29uc3RhbnRUYWcsXG4gIGNyZWF0ZVRhZyxcbiAgY3JlYXRlVXBkYXRhYmxlVGFnLFxuICBDdXJyZW50VGFnLFxuICBDVVJSRU5UX1RBRyxcbiAgRElSVFlfVEFHIGFzIGRpcnR5VGFnLFxuICBEaXJ0eWFibGVUYWcsXG4gIEVudGl0eVRhZyxcbiAgSU5JVElBTCxcbiAgaXNDb25zdFRhZyxcbiAgUmV2aXNpb24sXG4gIFRhZyxcbiAgVXBkYXRhYmxlVGFnLFxuICBVUERBVEVfVEFHIGFzIHVwZGF0ZVRhZyxcbiAgdmFsaWRhdGVUYWcsXG4gIHZhbHVlRm9yVGFnLFxuICBWb2xhdGlsZVRhZyxcbiAgVk9MQVRJTEVfVEFHLFxuICBWT0xBVElMRSxcbn0gZnJvbSAnLi9saWIvdmFsaWRhdG9ycyc7XG5cbmV4cG9ydCB7IGRpcnR5VGFnRm9yLCB0YWdGb3IsIHRhZ01ldGFGb3IsIFRhZ01ldGEgfSBmcm9tICcuL2xpYi9tZXRhJztcblxuZXhwb3J0IHtcbiAgYmVnaW5UcmFja0ZyYW1lLFxuICBlbmRUcmFja0ZyYW1lLFxuICBiZWdpblVudHJhY2tGcmFtZSxcbiAgZW5kVW50cmFja0ZyYW1lLFxuICByZXNldFRyYWNraW5nLFxuICBjb25zdW1lVGFnLFxuICBpc1RyYWNraW5nLFxuICB0cmFjayxcbiAgdW50cmFjayxcbiAgQ2FjaGUsXG4gIGNyZWF0ZUNhY2hlLFxuICBpc0NvbnN0LFxuICBnZXRWYWx1ZSxcbn0gZnJvbSAnLi9saWIvdHJhY2tpbmcnO1xuXG5leHBvcnQgeyB0cmFja2VkRGF0YSB9IGZyb20gJy4vbGliL3RyYWNrZWQtZGF0YSc7XG5cbmV4cG9ydCB7XG4gIGxvZ1RyYWNraW5nU3RhY2ssXG4gIHNldFRyYWNraW5nVHJhbnNhY3Rpb25FbnYsXG4gIHJ1bkluVHJhY2tpbmdUcmFuc2FjdGlvbixcbiAgYmVnaW5UcmFja2luZ1RyYW5zYWN0aW9uLFxuICBlbmRUcmFja2luZ1RyYW5zYWN0aW9uLFxuICBkZXByZWNhdGVNdXRhdGlvbnNJblRyYWNraW5nVHJhbnNhY3Rpb24sXG59IGZyb20gJy4vbGliL2RlYnVnJztcbiJdLCJzb3VyY2VSb290IjoiIn0=
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3BhY2thZ2VzL0BnbGltbWVyL3ZhbGlkYXRvci9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTs7QUFjQTs7QUE2QkE7O0FBRUE7O0FBZ0JBOztBQUVBOztBQTdEQSxJQUFNLDhCQUE4QixHQUFHLHNCQUF2QyxnQ0FBdUMsQ0FBdkM7QUFFQSxJQUFNLFNBQVMsR0FBZix1QkFBQTs7QUFFQSxJQUFJLFNBQVMsQ0FBVCw4QkFBUyxDQUFULEtBQUosSUFBQSxFQUF3RDtBQUN0RCxRQUFNLElBQUEsS0FBQSxDQUFOLHNaQUFNLENBQU47QUFHRDs7QUFFRCxTQUFTLENBQVQsOEJBQVMsQ0FBVCxHQUFBLElBQUEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBzeW1ib2xGb3IsIGdldEdsb2JhbCB9IGZyb20gJy4vbGliL3V0aWxzJztcblxuY29uc3QgR0xJTU1FUl9WQUxJREFUT1JfUkVHSVNUUkFUSU9OID0gc3ltYm9sRm9yKCdHTElNTUVSX1ZBTElEQVRPUl9SRUdJU1RSQVRJT04nKTtcblxuY29uc3QgZ2xvYmFsT2JqID0gZ2V0R2xvYmFsKCk7XG5cbmlmIChnbG9iYWxPYmpbR0xJTU1FUl9WQUxJREFUT1JfUkVHSVNUUkFUSU9OXSA9PT0gdHJ1ZSkge1xuICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgJ1RoZSBgQGdsaW1tZXIvdmFsaWRhdG9yYCBsaWJyYXJ5IGhhcyBiZWVuIGluY2x1ZGVkIHR3aWNlIGluIHRoaXMgYXBwbGljYXRpb24uIEl0IGNvdWxkIGJlIGRpZmZlcmVudCB2ZXJzaW9ucyBvZiB0aGUgcGFja2FnZSwgb3IgdGhlIHNhbWUgdmVyc2lvbiBpbmNsdWRlZCB0d2ljZSBieSBtaXN0YWtlLiBgQGdsaW1tZXIvdmFsaWRhdG9yYCBkZXBlbmRzIG9uIGhhdmluZyBhIHNpbmdsZSBjb3B5IG9mIHRoZSBwYWNrYWdlIGluIHVzZSBhdCBhbnkgdGltZSBpbiBhbiBhcHBsaWNhdGlvbiwgZXZlbiBpZiB0aGV5IGFyZSB0aGUgc2FtZSB2ZXJzaW9uLiBZb3UgbXVzdCBkZWR1cGUgeW91ciBidWlsZCB0byByZW1vdmUgdGhlIGR1cGxpY2F0ZSBwYWNrYWdlcyBpbiBvcmRlciB0byBwcmV2ZW50IHRoaXMgZXJyb3IuJ1xuICApO1xufVxuXG5nbG9iYWxPYmpbR0xJTU1FUl9WQUxJREFUT1JfUkVHSVNUUkFUSU9OXSA9IHRydWU7XG5cbmV4cG9ydCB7XG4gIEFMTE9XX0NZQ0xFUyxcbiAgYnVtcCxcbiAgQ29tYmluYXRvclRhZyxcbiAgY29tYmluZSxcbiAgQ09NUFVURSxcbiAgQ09OU1RBTlRfVEFHLFxuICBDT05TVEFOVCxcbiAgQ29uc3RhbnRUYWcsXG4gIGNyZWF0ZVRhZyxcbiAgY3JlYXRlVXBkYXRhYmxlVGFnLFxuICBDdXJyZW50VGFnLFxuICBDVVJSRU5UX1RBRyxcbiAgRElSVFlfVEFHIGFzIGRpcnR5VGFnLFxuICBEaXJ0eWFibGVUYWcsXG4gIEVudGl0eVRhZyxcbiAgSU5JVElBTCxcbiAgaXNDb25zdFRhZyxcbiAgUmV2aXNpb24sXG4gIFRhZyxcbiAgVXBkYXRhYmxlVGFnLFxuICBVUERBVEVfVEFHIGFzIHVwZGF0ZVRhZyxcbiAgdmFsaWRhdGVUYWcsXG4gIHZhbHVlRm9yVGFnLFxuICBWb2xhdGlsZVRhZyxcbiAgVk9MQVRJTEVfVEFHLFxuICBWT0xBVElMRSxcbn0gZnJvbSAnLi9saWIvdmFsaWRhdG9ycyc7XG5cbmV4cG9ydCB7IGRpcnR5VGFnRm9yLCB0YWdGb3IsIHRhZ01ldGFGb3IsIFRhZ01ldGEgfSBmcm9tICcuL2xpYi9tZXRhJztcblxuZXhwb3J0IHtcbiAgYmVnaW5UcmFja0ZyYW1lLFxuICBlbmRUcmFja0ZyYW1lLFxuICBiZWdpblVudHJhY2tGcmFtZSxcbiAgZW5kVW50cmFja0ZyYW1lLFxuICByZXNldFRyYWNraW5nLFxuICBjb25zdW1lVGFnLFxuICBpc1RyYWNraW5nLFxuICB0cmFjayxcbiAgdW50cmFjayxcbiAgQ2FjaGUsXG4gIGNyZWF0ZUNhY2hlLFxuICBpc0NvbnN0LFxuICBnZXRWYWx1ZSxcbn0gZnJvbSAnLi9saWIvdHJhY2tpbmcnO1xuXG5leHBvcnQgeyB0cmFja2VkRGF0YSB9IGZyb20gJy4vbGliL3RyYWNrZWQtZGF0YSc7XG5cbmV4cG9ydCB7XG4gIGxvZ1RyYWNraW5nU3RhY2ssXG4gIHNldFRyYWNraW5nVHJhbnNhY3Rpb25FbnYsXG4gIHJ1bkluVHJhY2tpbmdUcmFuc2FjdGlvbixcbiAgYmVnaW5UcmFja2luZ1RyYW5zYWN0aW9uLFxuICBlbmRUcmFja2luZ1RyYW5zYWN0aW9uLFxufSBmcm9tICcuL2xpYi9kZWJ1Zyc7XG4iXSwic291cmNlUm9vdCI6IiJ9

@@ -6,3 +6,3 @@ "use strict";

});
exports.logTrackingStack = exports.markTagAsConsumed = exports.assertTagNotConsumed = exports.setTrackingTransactionEnv = exports.resetTrackingTransaction = exports.deprecateMutationsInTrackingTransaction = exports.runInTrackingTransaction = exports.endTrackingTransaction = exports.beginTrackingTransaction = void 0;
exports.logTrackingStack = exports.markTagAsConsumed = exports.assertTagNotConsumed = exports.setTrackingTransactionEnv = exports.resetTrackingTransaction = exports.runInTrackingTransaction = exports.endTrackingTransaction = exports.beginTrackingTransaction = void 0;

@@ -19,4 +19,2 @@ var _env = require("@glimmer/env");

exports.runInTrackingTransaction = runInTrackingTransaction;
var deprecateMutationsInTrackingTransaction;
exports.deprecateMutationsInTrackingTransaction = deprecateMutationsInTrackingTransaction;
var resetTrackingTransaction;

@@ -63,7 +61,3 @@ exports.resetTrackingTransaction = resetTrackingTransaction;

exports.beginTrackingTransaction = beginTrackingTransaction = function beginTrackingTransaction(_debugLabel, deprecate) {
if (deprecate === void 0) {
deprecate = false;
}
exports.beginTrackingTransaction = beginTrackingTransaction = function beginTrackingTransaction(_debugLabel) {
CONSUMED_TAGS = CONSUMED_TAGS || new WeakMap();

@@ -74,4 +68,3 @@ var debugLabel = _debugLabel || undefined;

parent: parent,
debugLabel: debugLabel,
deprecate: deprecate
debugLabel: debugLabel
});

@@ -129,25 +122,3 @@ };

};
/**
* Switches to deprecating within an autotracking transaction, if one exists.
* If `runInAutotrackingTransaction` is called within the callback of this
* method, it switches back to throwing an error, allowing zebra-striping of
* the types of errors that are thrown.
*
* Does not start an autotracking transaction.
*
* NOTE: For Ember usage only, in general you should assert that these
* invariants are true.
*/
exports.deprecateMutationsInTrackingTransaction = deprecateMutationsInTrackingTransaction = function deprecateMutationsInTrackingTransaction(fn, debugLabel) {
beginTrackingTransaction(debugLabel, true);
try {
fn();
} finally {
endTrackingTransaction();
}
};
var nthIndex = function nthIndex(str, pattern, n, startingPos) {

@@ -217,31 +188,23 @@ if (startingPos === void 0) {

var transaction = CONSUMED_TAGS.get(tag);
if (!transaction) return;
var currentTransaction = TRANSACTION_STACK[TRANSACTION_STACK.length - 1];
if (!transaction) return; // This hack makes the assertion message nicer, we can cut off the first
// few lines of the stack trace and let users know where the actual error
// occurred.
if (currentTransaction.deprecate) {
(0, _globalContext.deprecate)(makeTrackingErrorMessage(transaction, obj, keyName), false, {
id: 'autotracking.mutation-after-consumption'
});
} else {
// This hack makes the assertion message nicer, we can cut off the first
// few lines of the stack trace and let users know where the actual error
// occurred.
try {
(0, _globalContext.assert)(false, makeTrackingErrorMessage(transaction, obj, keyName));
} catch (e) {
if (e.stack) {
var updateStackBegin = e.stack.indexOf('Stack trace for the update:');
try {
(0, _globalContext.assert)(false, makeTrackingErrorMessage(transaction, obj, keyName));
} catch (e) {
if (e.stack) {
var updateStackBegin = e.stack.indexOf('Stack trace for the update:');
if (updateStackBegin !== -1) {
var start = nthIndex(e.stack, '\n', 1, updateStackBegin);
var end = nthIndex(e.stack, '\n', 4, updateStackBegin);
e.stack = e.stack.substr(0, start) + e.stack.substr(end);
}
if (updateStackBegin !== -1) {
var start = nthIndex(e.stack, '\n', 1, updateStackBegin);
var end = nthIndex(e.stack, '\n', 4, updateStackBegin);
e.stack = e.stack.substr(0, start) + e.stack.substr(end);
}
}
throw e;
}
throw e;
}
};
}
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL0BnbGltbWVyL3ZhbGlkYXRvci9saWIvZGVidWcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUNBOztBQUNBOztBQUVPLElBQUEsd0JBQUE7O0FBR0EsSUFBQSxzQkFBQTs7QUFDQSxJQUFBLHdCQUFBOztBQUdBLElBQUEsdUNBQUE7O0FBRUEsSUFBQSx3QkFBQTs7QUFDQSxJQUFBLHlCQUFBOztBQUlBLElBQUEsb0JBQUE7OztBQUlBLElBQUEsa0JBQUE7OztBQUVBLElBQUEsZ0JBQUE7OztBQVFQLElBQUEsVUFBQSxFQUFXO0FBQ1QsTUFBSSxhQUFhLEdBQWpCLElBQUE7QUFFQSxNQUFJLGlCQUFpQixHQUhaLEVBR1QsQ0FIUyxDQUtUOztBQUVBLE1BQUksZUFBZSxHQUFHO0FBQ3BCLElBQUEsWUFEb0IsRUFBQSxTQUFBLFlBQUEsQ0FBQSxHQUFBLEVBQUEsT0FBQSxFQUN3QjtBQUMxQyxVQUFBLE9BQUE7O0FBRUEsVUFBSSxPQUFBLEdBQUEsS0FBSixVQUFBLEVBQStCO0FBQzdCLFFBQUEsT0FBTyxHQUFHLEdBQUcsQ0FBYixJQUFBO0FBREYsT0FBQSxNQUVPLElBQUksT0FBQSxHQUFBLEtBQUEsUUFBQSxJQUEyQixHQUFHLEtBQWxDLElBQUEsRUFBNkM7QUFDbEQsWUFBSSxTQUFTLEdBQUksR0FBRyxDQUFILFdBQUEsSUFBbUIsR0FBRyxDQUFILFdBQUEsQ0FBcEIsSUFBQyxJQUFqQixpQkFBQTtBQUVBLFFBQUEsT0FBTyxHQUFBLHFCQUFQLFNBQU8sR0FBUCxHQUFBO0FBSEssT0FBQSxNQUlBLElBQUksR0FBRyxLQUFQLFNBQUEsRUFBdUI7QUFDNUIsUUFBQSxPQUFPLEdBQVAsa0JBQUE7QUFESyxPQUFBLE1BRUE7QUFDTCxRQUFBLE9BQU8sR0FBRyxNQUFNLENBQWhCLEdBQWdCLENBQWhCO0FBQ0Q7O0FBRUQsVUFBSSxXQUFXLEdBQUcsT0FBTyxHQUFBLE1BQUEsT0FBQSxHQUFBLFFBQUEsR0FBQSxPQUFBLEdBQUEsR0FBQSxHQUFBLE1BQXpCLE9BQXlCLEdBQXpCLEdBQUE7QUFFQSxhQUFBLDZCQUFBLFdBQUEsR0FBQSxzT0FBQTtBQUNEO0FBbkJtQixHQUF0Qjs7QUFzQkEsc0NBQUEseUJBQXlCLEdBQUksU0FBQSx5QkFBQSxDQUFELEdBQUMsRUFBRDtBQUFBLFdBQVMsTUFBTSxDQUFOLE1BQUEsQ0FBQSxlQUFBLEVBQXJDLEdBQXFDLENBQVQ7QUFBNUIsR0FBQTs7QUFFQSxxQ0FBQSx3QkFBd0IsR0FBRyxTQUFBLHdCQUFBLENBQUEsV0FBQSxFQUFBLFNBQUEsRUFBb0Q7QUFBQSxRQUFyQixTQUFxQixLQUFBLEtBQUEsQ0FBQSxFQUFBO0FBQXJCLE1BQUEsU0FBcUIsR0FBcEQsS0FBK0I7QUFBcUI7O0FBQzdFLElBQUEsYUFBYSxHQUFHLGFBQWEsSUFBSSxJQUFqQyxPQUFpQyxFQUFqQztBQUVBLFFBQUksVUFBVSxHQUFHLFdBQVcsSUFBNUIsU0FBQTtBQUVBLFFBQUksTUFBTSxHQUFHLGlCQUFpQixDQUFDLGlCQUFpQixDQUFqQixNQUFBLEdBQWxCLENBQWlCLENBQWpCLElBQWIsSUFBQTtBQUVBLElBQUEsaUJBQWlCLENBQWpCLElBQUEsQ0FBdUI7QUFDckIsTUFBQSxNQURxQixFQUFBLE1BQUE7QUFFckIsTUFBQSxVQUZxQixFQUFBLFVBQUE7QUFHckIsTUFBQSxTQUFBLEVBQUE7QUFIcUIsS0FBdkI7QUFQRixHQUFBOztBQWNBLG1DQUFBLHNCQUFzQixHQUFHLFNBQUEsc0JBQUEsR0FBSztBQUM1QixRQUFJLGlCQUFpQixDQUFqQixNQUFBLEtBQUosQ0FBQSxFQUFvQztBQUNsQyxZQUFNLElBQUEsS0FBQSxDQUFOLGlFQUFNLENBQU47QUFDRDs7QUFFRCxJQUFBLGlCQUFpQixDQUFqQixHQUFBOztBQUVBLFFBQUksaUJBQWlCLENBQWpCLE1BQUEsS0FBSixDQUFBLEVBQW9DO0FBQ2xDLE1BQUEsYUFBYSxHQUFiLElBQUE7QUFDRDtBQVRILEdBQUE7O0FBWUEscUNBQUEsd0JBQXdCLEdBQUcsU0FBQSx3QkFBQSxHQUFLO0FBQzlCLFFBQUksS0FBSyxHQUFULEVBQUE7O0FBRUEsUUFBSSxpQkFBaUIsQ0FBakIsTUFBQSxHQUFKLENBQUEsRUFBa0M7QUFDaEMsTUFBQSxLQUFLLEdBQUcsZ0JBQWlCLENBQUMsaUJBQWlCLENBQUMsaUJBQWlCLENBQWpCLE1BQUEsR0FBNUMsQ0FBMkMsQ0FBbEIsQ0FBekI7QUFDRDs7QUFFRCxJQUFBLGlCQUFpQixHQUFqQixFQUFBO0FBQ0EsSUFBQSxhQUFhLEdBQWIsSUFBQTtBQUVBLFdBQUEsS0FBQTtBQVZGLEdBQUE7QUFhQTs7Ozs7Ozs7Ozs7O0FBVUEscUNBQUEsd0JBQXdCLEdBQUcsU0FBQSx3QkFBQSxDQUFBLEVBQUEsRUFBQSxVQUFBLEVBQWdEO0FBQ3pFLElBQUEsd0JBQXlCLENBQXpCLFVBQXlCLENBQXpCO0FBQ0EsUUFBSSxRQUFRLEdBQVosSUFBQTs7QUFFQSxRQUFJO0FBQ0YsVUFBSSxLQUFLLEdBQUcsRUFBWixFQUFBO0FBQ0EsTUFBQSxRQUFRLEdBQVIsS0FBQTtBQUNBLGFBQUEsS0FBQTtBQUhGLEtBQUEsU0FJVTtBQUNSLFVBQUksUUFBUSxLQUFaLElBQUEsRUFBdUI7QUFDckIsUUFBQSxzQkFBdUI7QUFDeEI7QUFDRjtBQVpILEdBQUE7QUFlQTs7Ozs7Ozs7Ozs7OztBQVdBLG9EQUFBLHVDQUF1QyxHQUFHLFNBQUEsdUNBQUEsQ0FBQSxFQUFBLEVBQUEsVUFBQSxFQUFnRDtBQUN4RixJQUFBLHdCQUF5QixDQUFBLFVBQUEsRUFBekIsSUFBeUIsQ0FBekI7O0FBRUEsUUFBSTtBQUNGLE1BQUEsRUFBRTtBQURKLEtBQUEsU0FFVTtBQUNSLE1BQUEsc0JBQXVCO0FBQ3hCO0FBUEgsR0FBQTs7QUFVQSxNQUFJLFFBQVEsR0FBRyxTQUFYLFFBQVcsQ0FBQSxHQUFBLEVBQUEsT0FBQSxFQUFBLENBQUEsRUFBQSxXQUFBLEVBQThEO0FBQUEsUUFBcEIsV0FBb0IsS0FBQSxLQUFBLENBQUEsRUFBQTtBQUFwQixNQUFBLFdBQW9CLEdBQU4sQ0FBeEQsQ0FBMEM7QUFBb0I7O0FBQzNFLFFBQUksQ0FBQyxHQUFMLFdBQUE7O0FBRUEsV0FBTyxDQUFDLEtBQUQsQ0FBQSxJQUFXLENBQUMsS0FBSyxHQUFHLENBQTNCLE1BQUEsRUFBb0M7QUFDbEMsTUFBQSxDQUFDLEdBQUcsR0FBRyxDQUFILE9BQUEsQ0FBQSxPQUFBLEVBQUosQ0FBSSxDQUFKO0FBQ0EsVUFBSSxDQUFDLEdBQUwsQ0FBQSxFQUFXO0FBQ1o7O0FBRUQsV0FBQSxDQUFBO0FBUkYsR0FBQTs7QUFXQSxNQUFJLHdCQUF3QixHQUFHLFNBQTNCLHdCQUEyQixDQUFBLFdBQUEsRUFBQSxHQUFBLEVBQUEsT0FBQSxFQUkzQjtBQUNGLFFBQUksT0FBTyxHQUFHLENBQUMsZUFBZSxDQUFmLFlBQUEsQ0FBQSxHQUFBLEVBQWtDLE9BQU8sSUFBSSxNQUFNLENBQWxFLE9BQWtFLENBQW5ELENBQUQsQ0FBZDtBQUVBLElBQUEsT0FBTyxDQUFQLElBQUEsQ0FBQSxNQUFrQixNQUFNLENBQXhCLE9BQXdCLENBQXhCLEdBQUEsbUJBQUE7QUFFQSxJQUFBLE9BQU8sQ0FBUCxJQUFBLENBQWEsZ0JBQWlCLENBQTlCLFdBQThCLENBQTlCO0FBRUEsSUFBQSxPQUFPLENBQVAsSUFBQSxDQUFBLDZCQUFBO0FBRUEsV0FBTyxPQUFPLENBQVAsSUFBQSxDQUFQLE1BQU8sQ0FBUDtBQWJGLEdBQUE7O0FBZ0JBLDZCQUFBLGdCQUFnQixHQUFJLFNBQUEsZ0JBQUEsQ0FBRCxXQUFDLEVBQTZCO0FBQy9DLFFBQUksYUFBYSxHQUFqQixFQUFBO0FBQ0EsUUFBSSxPQUFPLEdBQ1QsV0FBVyxJQUFJLGlCQUFpQixDQUFDLGlCQUFpQixDQUFqQixNQUFBLEdBRG5DLENBQ2tDLENBRGxDO0FBR0EsUUFBSSxPQUFPLEtBQVgsU0FBQSxFQUEyQixPQUFBLEVBQUE7O0FBRTNCLFdBQUEsT0FBQSxFQUFnQjtBQUNkLFVBQUksT0FBTyxDQUFYLFVBQUEsRUFBd0I7QUFDdEIsUUFBQSxhQUFhLENBQWIsT0FBQSxDQUFzQixPQUFPLENBQTdCLFVBQUE7QUFDRDs7QUFFRCxNQUFBLE9BQU8sR0FBRyxPQUFPLENBQWpCLE1BQUE7QUFaNkMsS0FBQSxDQWUvQzs7O0FBQ0EsV0FBTyxhQUFhLENBQWIsR0FBQSxDQUFrQixVQUFBLEtBQUEsRUFBQSxLQUFBLEVBQUE7QUFBQSxhQUFrQixLQUFLLENBQUMsSUFBQSxLQUFBLEdBQU4sQ0FBSyxDQUFMLENBQUEsSUFBQSxDQUFBLEdBQUEsSUFBcEMsS0FBa0I7QUFBbEIsS0FBQSxFQUFBLElBQUEsQ0FBUCxJQUFPLENBQVA7QUFoQkYsR0FBQTs7QUFtQkEsOEJBQUEsa0JBQWlCLEdBQUksU0FBQSxpQkFBQSxDQUFELElBQUMsRUFBYTtBQUNoQyxRQUFJLENBQUEsYUFBQSxJQUFrQixhQUFhLENBQWIsR0FBQSxDQUF0QixJQUFzQixDQUF0QixFQUErQztBQUUvQyxJQUFBLGFBQWEsQ0FBYixHQUFBLENBQUEsSUFBQSxFQUF3QixpQkFBaUIsQ0FBQyxpQkFBaUIsQ0FBakIsTUFBQSxHQUhWLENBR1MsQ0FBekMsRUFIZ0MsQ0FLaEM7QUFDQTtBQUNBOztBQUNBLFFBQUksR0FBRyxHQUFQLElBQUE7O0FBRUEsUUFBSSxHQUFHLENBQVAsTUFBQSxFQUFnQjtBQUNkLE1BQUEsa0JBQWtCLENBQUMsR0FBRyxDQUF0QixNQUFrQixDQUFsQjtBQUNEOztBQUVELFFBQUksR0FBRyxDQUFQLE9BQUEsRUFBaUI7QUFDZixNQUFBLEdBQUcsQ0FBSCxPQUFBLENBQUEsT0FBQSxDQUFxQixVQUFELEdBQUMsRUFBRDtBQUFBLGVBQWMsa0JBQWtCLENBQXBELEdBQW9ELENBQWhDO0FBQXBCLE9BQUE7QUFDRDtBQWhCSCxHQUFBOztBQW1CQSxpQ0FBQSxvQkFBb0IsR0FBRyxTQUFBLG9CQUFBLENBQUEsR0FBQSxFQUFBLEdBQUEsRUFBQSxPQUFBLEVBQThEO0FBQ25GLFFBQUksYUFBYSxLQUFqQixJQUFBLEVBQTRCO0FBRTVCLFFBQUksV0FBVyxHQUFHLGFBQWEsQ0FBYixHQUFBLENBQWxCLEdBQWtCLENBQWxCO0FBRUEsUUFBSSxDQUFKLFdBQUEsRUFBa0I7QUFFbEIsUUFBSSxrQkFBa0IsR0FBRyxpQkFBaUIsQ0FBQyxpQkFBaUIsQ0FBakIsTUFBQSxHQUEzQyxDQUEwQyxDQUExQzs7QUFFQSxRQUFJLGtCQUFrQixDQUF0QixTQUFBLEVBQWtDO0FBQ2hDLG9DQUFVLHdCQUF3QixDQUFBLFdBQUEsRUFBQSxHQUFBLEVBQXpCLE9BQXlCLENBQWxDLEVBQVMsS0FBVCxFQUFzRTtBQUNwRSxRQUFBLEVBQUUsRUFBRTtBQURnRSxPQUF0RTtBQURGLEtBQUEsTUFJTztBQUNMO0FBQ0E7QUFDQTtBQUNBLFVBQUk7QUFDRixtQ0FBTSxLQUFOLEVBQWMsd0JBQXdCLENBQUEsV0FBQSxFQUFBLEdBQUEsRUFBdEMsT0FBc0MsQ0FBdEM7QUFERixPQUFBLENBRUUsT0FBQSxDQUFBLEVBQVU7QUFDVixZQUFJLENBQUMsQ0FBTCxLQUFBLEVBQWE7QUFDWCxjQUFJLGdCQUFnQixHQUFHLENBQUMsQ0FBRCxLQUFBLENBQUEsT0FBQSxDQUF2Qiw2QkFBdUIsQ0FBdkI7O0FBRUEsY0FBSSxnQkFBZ0IsS0FBSyxDQUF6QixDQUFBLEVBQTZCO0FBQzNCLGdCQUFJLEtBQUssR0FBRyxRQUFRLENBQUMsQ0FBQyxDQUFGLEtBQUEsRUFBQSxJQUFBLEVBQUEsQ0FBQSxFQUFwQixnQkFBb0IsQ0FBcEI7QUFDQSxnQkFBSSxHQUFHLEdBQUcsUUFBUSxDQUFDLENBQUMsQ0FBRixLQUFBLEVBQUEsSUFBQSxFQUFBLENBQUEsRUFBbEIsZ0JBQWtCLENBQWxCO0FBQ0EsWUFBQSxDQUFDLENBQUQsS0FBQSxHQUFVLENBQUMsQ0FBRCxLQUFBLENBQUEsTUFBQSxDQUFBLENBQUEsRUFBQSxLQUFBLElBQTJCLENBQUMsQ0FBRCxLQUFBLENBQUEsTUFBQSxDQUFyQyxHQUFxQyxDQUFyQztBQUNEO0FBQ0Y7O0FBRUQsY0FBQSxDQUFBO0FBQ0Q7QUFDRjtBQWhDSCxHQUFBO0FBa0NEIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgVGFnIH0gZnJvbSAnLi92YWxpZGF0b3JzJztcbmltcG9ydCB7IERFQlVHIH0gZnJvbSAnQGdsaW1tZXIvZW52JztcbmltcG9ydCB7IGRlcHJlY2F0ZSwgYXNzZXJ0IH0gZnJvbSAnQGdsaW1tZXIvZ2xvYmFsLWNvbnRleHQnO1xuXG5leHBvcnQgbGV0IGJlZ2luVHJhY2tpbmdUcmFuc2FjdGlvbjpcbiAgfCB1bmRlZmluZWRcbiAgfCAoKGRlYnVnZ2luZ0NvbnRleHQ/OiBzdHJpbmcgfCBmYWxzZSwgZGVwcmVjYXRlPzogYm9vbGVhbikgPT4gdm9pZCk7XG5leHBvcnQgbGV0IGVuZFRyYWNraW5nVHJhbnNhY3Rpb246IHVuZGVmaW5lZCB8ICgoKSA9PiB2b2lkKTtcbmV4cG9ydCBsZXQgcnVuSW5UcmFja2luZ1RyYW5zYWN0aW9uOlxuICB8IHVuZGVmaW5lZFxuICB8ICg8VD4oZm46ICgpID0+IFQsIGRlYnVnZ2luZ0NvbnRleHQ/OiBzdHJpbmcgfCBmYWxzZSkgPT4gVCk7XG5leHBvcnQgbGV0IGRlcHJlY2F0ZU11dGF0aW9uc0luVHJhY2tpbmdUcmFuc2FjdGlvbjogdW5kZWZpbmVkIHwgKChmbjogKCkgPT4gdm9pZCkgPT4gdm9pZCk7XG5cbmV4cG9ydCBsZXQgcmVzZXRUcmFja2luZ1RyYW5zYWN0aW9uOiB1bmRlZmluZWQgfCAoKCkgPT4gc3RyaW5nKTtcbmV4cG9ydCBsZXQgc2V0VHJhY2tpbmdUcmFuc2FjdGlvbkVudjpcbiAgfCB1bmRlZmluZWRcbiAgfCAoKGVudjogeyBkZWJ1Z01lc3NhZ2U/KG9iaj86IHVua25vd24sIGtleU5hbWU/OiBzdHJpbmcpOiBzdHJpbmcgfSkgPT4gdm9pZCk7XG5cbmV4cG9ydCBsZXQgYXNzZXJ0VGFnTm90Q29uc3VtZWQ6XG4gIHwgdW5kZWZpbmVkXG4gIHwgKDxUPih0YWc6IFRhZywgb2JqPzogVCwga2V5TmFtZT86IGtleW9mIFQgfCBzdHJpbmcgfCBzeW1ib2wpID0+IHZvaWQpO1xuXG5leHBvcnQgbGV0IG1hcmtUYWdBc0NvbnN1bWVkOiB1bmRlZmluZWQgfCAoKF90YWc6IFRhZykgPT4gdm9pZCk7XG5cbmV4cG9ydCBsZXQgbG9nVHJhY2tpbmdTdGFjazogdW5kZWZpbmVkIHwgKCh0cmFuc2FjdGlvbj86IFRyYW5zYWN0aW9uKSA9PiBzdHJpbmcpO1xuXG5pbnRlcmZhY2UgVHJhbnNhY3Rpb24ge1xuICBwYXJlbnQ6IFRyYW5zYWN0aW9uIHwgbnVsbDtcbiAgZGVidWdMYWJlbD86IHN0cmluZztcbiAgZGVwcmVjYXRlOiBib29sZWFuO1xufVxuXG5pZiAoREVCVUcpIHtcbiAgbGV0IENPTlNVTUVEX1RBR1M6IFdlYWtNYXA8VGFnLCBUcmFuc2FjdGlvbj4gfCBudWxsID0gbnVsbDtcblxuICBsZXQgVFJBTlNBQ1RJT05fU1RBQ0s6IFRyYW5zYWN0aW9uW10gPSBbXTtcblxuICAvLy8vLy8vLy9cblxuICBsZXQgVFJBTlNBQ1RJT05fRU5WID0ge1xuICAgIGRlYnVnTWVzc2FnZShvYmo/OiB1bmtub3duLCBrZXlOYW1lPzogc3RyaW5nKSB7XG4gICAgICBsZXQgb2JqTmFtZTtcblxuICAgICAgaWYgKHR5cGVvZiBvYmogPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgb2JqTmFtZSA9IG9iai5uYW1lO1xuICAgICAgfSBlbHNlIGlmICh0eXBlb2Ygb2JqID09PSAnb2JqZWN0JyAmJiBvYmogIT09IG51bGwpIHtcbiAgICAgICAgbGV0IGNsYXNzTmFtZSA9IChvYmouY29uc3RydWN0b3IgJiYgb2JqLmNvbnN0cnVjdG9yLm5hbWUpIHx8ICcodW5rbm93biBjbGFzcyknO1xuXG4gICAgICAgIG9iak5hbWUgPSBgKGFuIGluc3RhbmNlIG9mICR7Y2xhc3NOYW1lfSlgO1xuICAgICAgfSBlbHNlIGlmIChvYmogPT09IHVuZGVmaW5lZCkge1xuICAgICAgICBvYmpOYW1lID0gJyhhbiB1bmtub3duIHRhZyknO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgb2JqTmFtZSA9IFN0cmluZyhvYmopO1xuICAgICAgfVxuXG4gICAgICBsZXQgZGlydHlTdHJpbmcgPSBrZXlOYW1lID8gYFxcYCR7a2V5TmFtZX1cXGAgb24gXFxgJHtvYmpOYW1lfVxcYGAgOiBgXFxgJHtvYmpOYW1lfVxcYGA7XG5cbiAgICAgIHJldHVybiBgWW91IGF0dGVtcHRlZCB0byB1cGRhdGUgJHtkaXJ0eVN0cmluZ30sIGJ1dCBpdCBoYWQgYWxyZWFkeSBiZWVuIHVzZWQgcHJldmlvdXNseSBpbiB0aGUgc2FtZSBjb21wdXRhdGlvbi4gIEF0dGVtcHRpbmcgdG8gdXBkYXRlIGEgdmFsdWUgYWZ0ZXIgdXNpbmcgaXQgaW4gYSBjb21wdXRhdGlvbiBjYW4gY2F1c2UgbG9naWNhbCBlcnJvcnMsIGluZmluaXRlIHJldmFsaWRhdGlvbiBidWdzLCBhbmQgcGVyZm9ybWFuY2UgaXNzdWVzLCBhbmQgaXMgbm90IHN1cHBvcnRlZC5gO1xuICAgIH0sXG4gIH07XG5cbiAgc2V0VHJhY2tpbmdUcmFuc2FjdGlvbkVudiA9IChlbnYpID0+IE9iamVjdC5hc3NpZ24oVFJBTlNBQ1RJT05fRU5WLCBlbnYpO1xuXG4gIGJlZ2luVHJhY2tpbmdUcmFuc2FjdGlvbiA9IChfZGVidWdMYWJlbD86IHN0cmluZyB8IGZhbHNlLCBkZXByZWNhdGUgPSBmYWxzZSkgPT4ge1xuICAgIENPTlNVTUVEX1RBR1MgPSBDT05TVU1FRF9UQUdTIHx8IG5ldyBXZWFrTWFwKCk7XG5cbiAgICBsZXQgZGVidWdMYWJlbCA9IF9kZWJ1Z0xhYmVsIHx8IHVuZGVmaW5lZDtcblxuICAgIGxldCBwYXJlbnQgPSBUUkFOU0FDVElPTl9TVEFDS1tUUkFOU0FDVElPTl9TVEFDSy5sZW5ndGggLSAxXSB8fCBudWxsO1xuXG4gICAgVFJBTlNBQ1RJT05fU1RBQ0sucHVzaCh7XG4gICAgICBwYXJlbnQsXG4gICAgICBkZWJ1Z0xhYmVsLFxuICAgICAgZGVwcmVjYXRlLFxuICAgIH0pO1xuICB9O1xuXG4gIGVuZFRyYWNraW5nVHJhbnNhY3Rpb24gPSAoKSA9PiB7XG4gICAgaWYgKFRSQU5TQUNUSU9OX1NUQUNLLmxlbmd0aCA9PT0gMCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdhdHRlbXB0ZWQgdG8gY2xvc2UgYSB0cmFja2luZyB0cmFuc2FjdGlvbiwgYnV0IG9uZSB3YXMgbm90IG9wZW4nKTtcbiAgICB9XG5cbiAgICBUUkFOU0FDVElPTl9TVEFDSy5wb3AoKTtcblxuICAgIGlmIChUUkFOU0FDVElPTl9TVEFDSy5sZW5ndGggPT09IDApIHtcbiAgICAgIENPTlNVTUVEX1RBR1MgPSBudWxsO1xuICAgIH1cbiAgfTtcblxuICByZXNldFRyYWNraW5nVHJhbnNhY3Rpb24gPSAoKSA9PiB7XG4gICAgbGV0IHN0YWNrID0gJyc7XG5cbiAgICBpZiAoVFJBTlNBQ1RJT05fU1RBQ0subGVuZ3RoID4gMCkge1xuICAgICAgc3RhY2sgPSBsb2dUcmFja2luZ1N0YWNrIShUUkFOU0FDVElPTl9TVEFDS1tUUkFOU0FDVElPTl9TVEFDSy5sZW5ndGggLSAxXSk7XG4gICAgfVxuXG4gICAgVFJBTlNBQ1RJT05fU1RBQ0sgPSBbXTtcbiAgICBDT05TVU1FRF9UQUdTID0gbnVsbDtcblxuICAgIHJldHVybiBzdGFjaztcbiAgfTtcblxuICAvKipcbiAgICogQ3JlYXRlcyBhIGdsb2JhbCBhdXRvdHJhY2tpbmcgdHJhbnNhY3Rpb24uIFRoaXMgd2lsbCBwcmV2ZW50IGFueSBiYWNrZmxvd1xuICAgKiBpbiBhbnkgYHRyYWNrYCBjYWxscyB3aXRoaW4gdGhlIHRyYW5zYWN0aW9uLCBldmVuIGlmIHRoZXkgYXJlIG5vdFxuICAgKiBleHRlcm5hbGx5IGNvbnN1bWVkLlxuICAgKlxuICAgKiBgcnVuSW5BdXRvdHJhY2tpbmdUcmFuc2FjdGlvbmAgY2FuIGJlIGNhbGxlZCB3aXRoaW4gaXRzZWxmLCBhbmQgaXQgd2lsbCBhZGRcbiAgICogb250byB0aGUgZXhpc3RpbmcgdHJhbnNhY3Rpb24gaWYgb25lIGV4aXN0cy5cbiAgICpcbiAgICogVE9ETzogT25seSB0aHJvdyBhbiBlcnJvciBpZiB0aGUgYHRyYWNrYCBpcyBjb25zdW1lZC5cbiAgICovXG4gIHJ1bkluVHJhY2tpbmdUcmFuc2FjdGlvbiA9IDxUPihmbjogKCkgPT4gVCwgZGVidWdMYWJlbD86IHN0cmluZyB8IGZhbHNlKSA9PiB7XG4gICAgYmVnaW5UcmFja2luZ1RyYW5zYWN0aW9uIShkZWJ1Z0xhYmVsKTtcbiAgICBsZXQgZGlkRXJyb3IgPSB0cnVlO1xuXG4gICAgdHJ5IHtcbiAgICAgIGxldCB2YWx1ZSA9IGZuKCk7XG4gICAgICBkaWRFcnJvciA9IGZhbHNlO1xuICAgICAgcmV0dXJuIHZhbHVlO1xuICAgIH0gZmluYWxseSB7XG4gICAgICBpZiAoZGlkRXJyb3IgIT09IHRydWUpIHtcbiAgICAgICAgZW5kVHJhY2tpbmdUcmFuc2FjdGlvbiEoKTtcbiAgICAgIH1cbiAgICB9XG4gIH07XG5cbiAgLyoqXG4gICAqIFN3aXRjaGVzIHRvIGRlcHJlY2F0aW5nIHdpdGhpbiBhbiBhdXRvdHJhY2tpbmcgdHJhbnNhY3Rpb24sIGlmIG9uZSBleGlzdHMuXG4gICAqIElmIGBydW5JbkF1dG90cmFja2luZ1RyYW5zYWN0aW9uYCBpcyBjYWxsZWQgd2l0aGluIHRoZSBjYWxsYmFjayBvZiB0aGlzXG4gICAqIG1ldGhvZCwgaXQgc3dpdGNoZXMgYmFjayB0byB0aHJvd2luZyBhbiBlcnJvciwgYWxsb3dpbmcgemVicmEtc3RyaXBpbmcgb2ZcbiAgICogdGhlIHR5cGVzIG9mIGVycm9ycyB0aGF0IGFyZSB0aHJvd24uXG4gICAqXG4gICAqIERvZXMgbm90IHN0YXJ0IGFuIGF1dG90cmFja2luZyB0cmFuc2FjdGlvbi5cbiAgICpcbiAgICogTk9URTogRm9yIEVtYmVyIHVzYWdlIG9ubHksIGluIGdlbmVyYWwgeW91IHNob3VsZCBhc3NlcnQgdGhhdCB0aGVzZVxuICAgKiBpbnZhcmlhbnRzIGFyZSB0cnVlLlxuICAgKi9cbiAgZGVwcmVjYXRlTXV0YXRpb25zSW5UcmFja2luZ1RyYW5zYWN0aW9uID0gKGZuOiAoKSA9PiB2b2lkLCBkZWJ1Z0xhYmVsPzogc3RyaW5nIHwgZmFsc2UpID0+IHtcbiAgICBiZWdpblRyYWNraW5nVHJhbnNhY3Rpb24hKGRlYnVnTGFiZWwsIHRydWUpO1xuXG4gICAgdHJ5IHtcbiAgICAgIGZuKCk7XG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIGVuZFRyYWNraW5nVHJhbnNhY3Rpb24hKCk7XG4gICAgfVxuICB9O1xuXG4gIGxldCBudGhJbmRleCA9IChzdHI6IHN0cmluZywgcGF0dGVybjogc3RyaW5nLCBuOiBudW1iZXIsIHN0YXJ0aW5nUG9zID0gLTEpID0+IHtcbiAgICBsZXQgaSA9IHN0YXJ0aW5nUG9zO1xuXG4gICAgd2hpbGUgKG4tLSA+IDAgJiYgaSsrIDwgc3RyLmxlbmd0aCkge1xuICAgICAgaSA9IHN0ci5pbmRleE9mKHBhdHRlcm4sIGkpO1xuICAgICAgaWYgKGkgPCAwKSBicmVhaztcbiAgICB9XG5cbiAgICByZXR1cm4gaTtcbiAgfTtcblxuICBsZXQgbWFrZVRyYWNraW5nRXJyb3JNZXNzYWdlID0gPFQ+KFxuICAgIHRyYW5zYWN0aW9uOiBUcmFuc2FjdGlvbixcbiAgICBvYmo/OiBULFxuICAgIGtleU5hbWU/OiBrZXlvZiBUIHwgc3RyaW5nIHwgc3ltYm9sXG4gICkgPT4ge1xuICAgIGxldCBtZXNzYWdlID0gW1RSQU5TQUNUSU9OX0VOVi5kZWJ1Z01lc3NhZ2Uob2JqLCBrZXlOYW1lICYmIFN0cmluZyhrZXlOYW1lKSldO1xuXG4gICAgbWVzc2FnZS5wdXNoKGBcXGAke1N0cmluZyhrZXlOYW1lKX1cXGAgd2FzIGZpcnN0IHVzZWQ6YCk7XG5cbiAgICBtZXNzYWdlLnB1c2gobG9nVHJhY2tpbmdTdGFjayEodHJhbnNhY3Rpb24pKTtcblxuICAgIG1lc3NhZ2UucHVzaChgU3RhY2sgdHJhY2UgZm9yIHRoZSB1cGRhdGU6YCk7XG5cbiAgICByZXR1cm4gbWVzc2FnZS5qb2luKCdcXG5cXG4nKTtcbiAgfTtcblxuICBsb2dUcmFja2luZ1N0YWNrID0gKHRyYW5zYWN0aW9uPzogVHJhbnNhY3Rpb24pID0+IHtcbiAgICBsZXQgdHJhY2tpbmdTdGFjayA9IFtdO1xuICAgIGxldCBjdXJyZW50OiBUcmFuc2FjdGlvbiB8IG51bGwgfCB1bmRlZmluZWQgPVxuICAgICAgdHJhbnNhY3Rpb24gfHwgVFJBTlNBQ1RJT05fU1RBQ0tbVFJBTlNBQ1RJT05fU1RBQ0subGVuZ3RoIC0gMV07XG5cbiAgICBpZiAoY3VycmVudCA9PT0gdW5kZWZpbmVkKSByZXR1cm4gJyc7XG5cbiAgICB3aGlsZSAoY3VycmVudCkge1xuICAgICAgaWYgKGN1cnJlbnQuZGVidWdMYWJlbCkge1xuICAgICAgICB0cmFja2luZ1N0YWNrLnVuc2hpZnQoY3VycmVudC5kZWJ1Z0xhYmVsKTtcbiAgICAgIH1cblxuICAgICAgY3VycmVudCA9IGN1cnJlbnQucGFyZW50O1xuICAgIH1cblxuICAgIC8vIFRPRE86IFVzZSBTdHJpbmcucHJvdG90eXBlLnJlcGVhdCBoZXJlIG9uY2Ugd2UgY2FuIGRyb3Agc3VwcG9ydCBmb3IgSUUxMVxuICAgIHJldHVybiB0cmFja2luZ1N0YWNrLm1hcCgobGFiZWwsIGluZGV4KSA9PiBBcnJheSgyICogaW5kZXggKyAxKS5qb2luKCcgJykgKyBsYWJlbCkuam9pbignXFxuJyk7XG4gIH07XG5cbiAgbWFya1RhZ0FzQ29uc3VtZWQgPSAoX3RhZzogVGFnKSA9PiB7XG4gICAgaWYgKCFDT05TVU1FRF9UQUdTIHx8IENPTlNVTUVEX1RBR1MuaGFzKF90YWcpKSByZXR1cm47XG5cbiAgICBDT05TVU1FRF9UQUdTLnNldChfdGFnLCBUUkFOU0FDVElPTl9TVEFDS1tUUkFOU0FDVElPTl9TVEFDSy5sZW5ndGggLSAxXSk7XG5cbiAgICAvLyBXZSBuZWVkIHRvIG1hcmsgdGhlIHRhZyBhbmQgYWxsIG9mIGl0cyBzdWJ0YWdzIGFzIGNvbnN1bWVkLCBzbyB3ZSBuZWVkIHRvXG4gICAgLy8gY2FzdCBpdCBhbmQgYWNjZXNzIGl0cyBpbnRlcm5hbHMuIEluIHRoZSBmdXR1cmUgdGhpcyBzaG91bGRuJ3QgYmUgbmVjZXNzYXJ5LFxuICAgIC8vIHRoaXMgaXMgb25seSBmb3IgY29tcHV0ZWQgcHJvcGVydGllcy5cbiAgICBsZXQgdGFnID0gX3RhZyBhcyBhbnk7XG5cbiAgICBpZiAodGFnLnN1YnRhZykge1xuICAgICAgbWFya1RhZ0FzQ29uc3VtZWQhKHRhZy5zdWJ0YWcpO1xuICAgIH1cblxuICAgIGlmICh0YWcuc3VidGFncykge1xuICAgICAgdGFnLnN1YnRhZ3MuZm9yRWFjaCgodGFnOiBUYWcpID0+IG1hcmtUYWdBc0NvbnN1bWVkISh0YWcpKTtcbiAgICB9XG4gIH07XG5cbiAgYXNzZXJ0VGFnTm90Q29uc3VtZWQgPSA8VD4odGFnOiBUYWcsIG9iaj86IFQsIGtleU5hbWU/OiBrZXlvZiBUIHwgc3RyaW5nIHwgc3ltYm9sKSA9PiB7XG4gICAgaWYgKENPTlNVTUVEX1RBR1MgPT09IG51bGwpIHJldHVybjtcblxuICAgIGxldCB0cmFuc2FjdGlvbiA9IENPTlNVTUVEX1RBR1MuZ2V0KHRhZyk7XG5cbiAgICBpZiAoIXRyYW5zYWN0aW9uKSByZXR1cm47XG5cbiAgICBsZXQgY3VycmVudFRyYW5zYWN0aW9uID0gVFJBTlNBQ1RJT05fU1RBQ0tbVFJBTlNBQ1RJT05fU1RBQ0subGVuZ3RoIC0gMV07XG5cbiAgICBpZiAoY3VycmVudFRyYW5zYWN0aW9uLmRlcHJlY2F0ZSkge1xuICAgICAgZGVwcmVjYXRlKG1ha2VUcmFja2luZ0Vycm9yTWVzc2FnZSh0cmFuc2FjdGlvbiwgb2JqLCBrZXlOYW1lKSwgZmFsc2UsIHtcbiAgICAgICAgaWQ6ICdhdXRvdHJhY2tpbmcubXV0YXRpb24tYWZ0ZXItY29uc3VtcHRpb24nLFxuICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIFRoaXMgaGFjayBtYWtlcyB0aGUgYXNzZXJ0aW9uIG1lc3NhZ2UgbmljZXIsIHdlIGNhbiBjdXQgb2ZmIHRoZSBmaXJzdFxuICAgICAgLy8gZmV3IGxpbmVzIG9mIHRoZSBzdGFjayB0cmFjZSBhbmQgbGV0IHVzZXJzIGtub3cgd2hlcmUgdGhlIGFjdHVhbCBlcnJvclxuICAgICAgLy8gb2NjdXJyZWQuXG4gICAgICB0cnkge1xuICAgICAgICBhc3NlcnQoZmFsc2UsIG1ha2VUcmFja2luZ0Vycm9yTWVzc2FnZSh0cmFuc2FjdGlvbiwgb2JqLCBrZXlOYW1lKSk7XG4gICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIGlmIChlLnN0YWNrKSB7XG4gICAgICAgICAgbGV0IHVwZGF0ZVN0YWNrQmVnaW4gPSBlLnN0YWNrLmluZGV4T2YoJ1N0YWNrIHRyYWNlIGZvciB0aGUgdXBkYXRlOicpO1xuXG4gICAgICAgICAgaWYgKHVwZGF0ZVN0YWNrQmVnaW4gIT09IC0xKSB7XG4gICAgICAgICAgICBsZXQgc3RhcnQgPSBudGhJbmRleChlLnN0YWNrLCAnXFxuJywgMSwgdXBkYXRlU3RhY2tCZWdpbik7XG4gICAgICAgICAgICBsZXQgZW5kID0gbnRoSW5kZXgoZS5zdGFjaywgJ1xcbicsIDQsIHVwZGF0ZVN0YWNrQmVnaW4pO1xuICAgICAgICAgICAgZS5zdGFjayA9IGUuc3RhY2suc3Vic3RyKDAsIHN0YXJ0KSArIGUuc3RhY2suc3Vic3RyKGVuZCk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgdGhyb3cgZTtcbiAgICAgIH1cbiAgICB9XG4gIH07XG59XG4iXSwic291cmNlUm9vdCI6IiJ9
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL0BnbGltbWVyL3ZhbGlkYXRvci9saWIvZGVidWcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUNBOztBQUNBOztBQUVPLElBQUEsd0JBQUE7O0FBR0EsSUFBQSxzQkFBQTs7QUFDQSxJQUFBLHdCQUFBOztBQUlBLElBQUEsd0JBQUE7O0FBQ0EsSUFBQSx5QkFBQTs7QUFJQSxJQUFBLG9CQUFBOzs7QUFJQSxJQUFBLGtCQUFBOzs7QUFFQSxJQUFBLGdCQUFBOzs7QUFPUCxJQUFBLFVBQUEsRUFBVztBQUNULE1BQUksYUFBYSxHQUFqQixJQUFBO0FBRUEsTUFBSSxpQkFBaUIsR0FIWixFQUdULENBSFMsQ0FLVDs7QUFFQSxNQUFJLGVBQWUsR0FBRztBQUNwQixJQUFBLFlBRG9CLEVBQUEsU0FBQSxZQUFBLENBQUEsR0FBQSxFQUFBLE9BQUEsRUFDd0I7QUFDMUMsVUFBQSxPQUFBOztBQUVBLFVBQUksT0FBQSxHQUFBLEtBQUosVUFBQSxFQUErQjtBQUM3QixRQUFBLE9BQU8sR0FBRyxHQUFHLENBQWIsSUFBQTtBQURGLE9BQUEsTUFFTyxJQUFJLE9BQUEsR0FBQSxLQUFBLFFBQUEsSUFBMkIsR0FBRyxLQUFsQyxJQUFBLEVBQTZDO0FBQ2xELFlBQUksU0FBUyxHQUFJLEdBQUcsQ0FBSCxXQUFBLElBQW1CLEdBQUcsQ0FBSCxXQUFBLENBQXBCLElBQUMsSUFBakIsaUJBQUE7QUFFQSxRQUFBLE9BQU8sR0FBQSxxQkFBUCxTQUFPLEdBQVAsR0FBQTtBQUhLLE9BQUEsTUFJQSxJQUFJLEdBQUcsS0FBUCxTQUFBLEVBQXVCO0FBQzVCLFFBQUEsT0FBTyxHQUFQLGtCQUFBO0FBREssT0FBQSxNQUVBO0FBQ0wsUUFBQSxPQUFPLEdBQUcsTUFBTSxDQUFoQixHQUFnQixDQUFoQjtBQUNEOztBQUVELFVBQUksV0FBVyxHQUFHLE9BQU8sR0FBQSxNQUFBLE9BQUEsR0FBQSxRQUFBLEdBQUEsT0FBQSxHQUFBLEdB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Q0FBRixLQUFBLEVBQUEsSUFBQSxFQUFBLENBQUEsRUFBcEIsZ0JBQW9CLENBQXBCO0FBQ0EsY0FBSSxHQUFHLEdBQUcsUUFBUSxDQUFDLENBQUMsQ0FBRixLQUFBLEVBQUEsSUFBQSxFQUFBLENBQUEsRUFBbEIsZ0JBQWtCLENBQWxCO0FBQ0EsVUFBQSxDQUFDLENBQUQsS0FBQSxHQUFVLENBQUMsQ0FBRCxLQUFBLENBQUEsTUFBQSxDQUFBLENBQUEsRUFBQSxLQUFBLElBQTJCLENBQUMsQ0FBRCxLQUFBLENBQUEsTUFBQSxDQUFyQyxHQUFxQyxDQUFyQztBQUNEO0FBQ0Y7O0FBRUQsWUFBQSxDQUFBO0FBQ0Q7QUF4QkgsR0FBQTtBQTBCRCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFRhZyB9IGZyb20gJy4vdmFsaWRhdG9ycyc7XG5pbXBvcnQgeyBERUJVRyB9IGZyb20gJ0BnbGltbWVyL2Vudic7XG5pbXBvcnQgeyBhc3NlcnQgfSBmcm9tICdAZ2xpbW1lci9nbG9iYWwtY29udGV4dCc7XG5cbmV4cG9ydCBsZXQgYmVnaW5UcmFja2luZ1RyYW5zYWN0aW9uOlxuICB8IHVuZGVmaW5lZFxuICB8ICgoZGVidWdnaW5nQ29udGV4dD86IHN0cmluZyB8IGZhbHNlLCBkZXByZWNhdGU/OiBib29sZWFuKSA9PiB2b2lkKTtcbmV4cG9ydCBsZXQgZW5kVHJhY2tpbmdUcmFuc2FjdGlvbjogdW5kZWZpbmVkIHwgKCgpID0+IHZvaWQpO1xuZXhwb3J0IGxldCBydW5JblRyYWNraW5nVHJhbnNhY3Rpb246XG4gIHwgdW5kZWZpbmVkXG4gIHwgKDxUPihmbjogKCkgPT4gVCwgZGVidWdnaW5nQ29udGV4dD86IHN0cmluZyB8IGZhbHNlKSA9PiBUKTtcblxuZXhwb3J0IGxldCByZXNldFRyYWNraW5nVHJhbnNhY3Rpb246IHVuZGVmaW5lZCB8ICgoKSA9PiBzdHJpbmcpO1xuZXhwb3J0IGxldCBzZXRUcmFja2luZ1RyYW5zYWN0aW9uRW52OlxuICB8IHVuZGVmaW5lZFxuICB8ICgoZW52OiB7IGRlYnVnTWVzc2FnZT8ob2JqPzogdW5rbm93biwga2V5TmFtZT86IHN0cmluZyk6IHN0cmluZyB9KSA9PiB2b2lkKTtcblxuZXhwb3J0IGxldCBhc3NlcnRUYWdOb3RDb25zdW1lZDpcbiAgfCB1bmRlZmluZWRcbiAgfCAoPFQ+KHRhZzogVGFnLCBvYmo/OiBULCBrZXlOYW1lPzoga2V5b2YgVCB8IHN0cmluZyB8IHN5bWJvbCkgPT4gdm9pZCk7XG5cbmV4cG9ydCBsZXQgbWFya1RhZ0FzQ29uc3VtZWQ6IHVuZGVmaW5lZCB8ICgoX3RhZzogVGFnKSA9PiB2b2lkKTtcblxuZXhwb3J0IGxldCBsb2dUcmFja2luZ1N0YWNrOiB1bmRlZmluZWQgfCAoKHRyYW5zYWN0aW9uPzogVHJhbnNhY3Rpb24pID0+IHN0cmluZyk7XG5cbmludGVyZmFjZSBUcmFuc2FjdGlvbiB7XG4gIHBhcmVudDogVHJhbnNhY3Rpb24gfCBudWxsO1xuICBkZWJ1Z0xhYmVsPzogc3RyaW5nO1xufVxuXG5pZiAoREVCVUcpIHtcbiAgbGV0IENPTlNVTUVEX1RBR1M6IFdlYWtNYXA8VGFnLCBUcmFuc2FjdGlvbj4gfCBudWxsID0gbnVsbDtcblxuICBsZXQgVFJBTlNBQ1RJT05fU1RBQ0s6IFRyYW5zYWN0aW9uW10gPSBbXTtcblxuICAvLy8vLy8vLy9cblxuICBsZXQgVFJBTlNBQ1RJT05fRU5WID0ge1xuICAgIGRlYnVnTWVzc2FnZShvYmo/OiB1bmtub3duLCBrZXlOYW1lPzogc3RyaW5nKSB7XG4gICAgICBsZXQgb2JqTmFtZTtcblxuICAgICAgaWYgKHR5cGVvZiBvYmogPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgb2JqTmFtZSA9IG9iai5uYW1lO1xuICAgICAgfSBlbHNlIGlmICh0eXBlb2Ygb2JqID09PSAnb2JqZWN0JyAmJiBvYmogIT09IG51bGwpIHtcbiAgICAgICAgbGV0IGNsYXNzTmFtZSA9IChvYmouY29uc3RydWN0b3IgJiYgb2JqLmNvbnN0cnVjdG9yLm5hbWUpIHx8ICcodW5rbm93biBjbGFzcyknO1xuXG4gICAgICAgIG9iak5hbWUgPSBgKGFuIGluc3RhbmNlIG9mICR7Y2xhc3NOYW1lfSlgO1xuICAgICAgfSBlbHNlIGlmIChvYmogPT09IHVuZGVmaW5lZCkge1xuICAgICAgICBvYmpOYW1lID0gJyhhbiB1bmtub3duIHRhZyknO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgb2JqTmFtZSA9IFN0cmluZyhvYmopO1xuICAgICAgfVxuXG4gICAgICBsZXQgZGlydHlTdHJpbmcgPSBrZXlOYW1lID8gYFxcYCR7a2V5TmFtZX1cXGAgb24gXFxgJHtvYmpOYW1lfVxcYGAgOiBgXFxgJHtvYmpOYW1lfVxcYGA7XG5cbiAgICAgIHJldHVybiBgWW91IGF0dGVtcHRlZCB0byB1cGRhdGUgJHtkaXJ0eVN0cmluZ30sIGJ1dCBpdCBoYWQgYWxyZWFkeSBiZWVuIHVzZWQgcHJldmlvdXNseSBpbiB0aGUgc2FtZSBjb21wdXRhdGlvbi4gIEF0dGVtcHRpbmcgdG8gdXBkYXRlIGEgdmFsdWUgYWZ0ZXIgdXNpbmcgaXQgaW4gYSBjb21wdXRhdGlvbiBjYW4gY2F1c2UgbG9naWNhbCBlcnJvcnMsIGluZmluaXRlIHJldmFsaWRhdGlvbiBidWdzLCBhbmQgcGVyZm9ybWFuY2UgaXNzdWVzLCBhbmQgaXMgbm90IHN1cHBvcnRlZC5gO1xuICAgIH0sXG4gIH07XG5cbiAgc2V0VHJhY2tpbmdUcmFuc2FjdGlvbkVudiA9IChlbnYpID0+IE9iamVjdC5hc3NpZ24oVFJBTlNBQ1RJT05fRU5WLCBlbnYpO1xuXG4gIGJlZ2luVHJhY2tpbmdUcmFuc2FjdGlvbiA9IChfZGVidWdMYWJlbD86IHN0cmluZyB8IGZhbHNlKSA9PiB7XG4gICAgQ09OU1VNRURfVEFHUyA9IENPTlNVTUVEX1RBR1MgfHwgbmV3IFdlYWtNYXAoKTtcblxuICAgIGxldCBkZWJ1Z0xhYmVsID0gX2RlYnVnTGFiZWwgfHwgdW5kZWZpbmVkO1xuXG4gICAgbGV0IHBhcmVudCA9IFRSQU5TQUNUSU9OX1NUQUNLW1RSQU5TQUNUSU9OX1NUQUNLLmxlbmd0aCAtIDFdIHx8IG51bGw7XG5cbiAgICBUUkFOU0FDVElPTl9TVEFDSy5wdXNoKHtcbiAgICAgIHBhcmVudCxcbiAgICAgIGRlYnVnTGFiZWwsXG4gICAgfSk7XG4gIH07XG5cbiAgZW5kVHJhY2tpbmdUcmFuc2FjdGlvbiA9ICgpID0+IHtcbiAgICBpZiAoVFJBTlNBQ1RJT05fU1RBQ0subGVuZ3RoID09PSAwKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ2F0dGVtcHRlZCB0byBjbG9zZSBhIHRyYWNraW5nIHRyYW5zYWN0aW9uLCBidXQgb25lIHdhcyBub3Qgb3BlbicpO1xuICAgIH1cblxuICAgIFRSQU5TQUNUSU9OX1NUQUNLLnBvcCgpO1xuXG4gICAgaWYgKFRSQU5TQUNUSU9OX1NUQUNLLmxlbmd0aCA9PT0gMCkge1xuICAgICAgQ09OU1VNRURfVEFHUyA9IG51bGw7XG4gICAgfVxuICB9O1xuXG4gIHJlc2V0VHJhY2tpbmdUcmFuc2FjdGlvbiA9ICgpID0+IHtcbiAgICBsZXQgc3RhY2sgPSAnJztcblxuICAgIGlmIChUUkFOU0FDVElPTl9TVEFDSy5sZW5ndGggPiAwKSB7XG4gICAgICBzdGFjayA9IGxvZ1RyYWNraW5nU3RhY2shKFRSQU5TQUNUSU9OX1NUQUNLW1RSQU5TQUNUSU9OX1NUQUNLLmxlbmd0aCAtIDFdKTtcbiAgICB9XG5cbiAgICBUUkFOU0FDVElPTl9TVEFDSyA9IFtdO1xuICAgIENPTlNVTUVEX1RBR1MgPSBudWxsO1xuXG4gICAgcmV0dXJuIHN0YWNrO1xuICB9O1xuXG4gIC8qKlxuICAgKiBDcmVhdGVzIGEgZ2xvYmFsIGF1dG90cmFja2luZyB0cmFuc2FjdGlvbi4gVGhpcyB3aWxsIHByZXZlbnQgYW55IGJhY2tmbG93XG4gICAqIGluIGFueSBgdHJhY2tgIGNhbGxzIHdpdGhpbiB0aGUgdHJhbnNhY3Rpb24sIGV2ZW4gaWYgdGhleSBhcmUgbm90XG4gICAqIGV4dGVybmFsbHkgY29uc3VtZWQuXG4gICAqXG4gICAqIGBydW5JbkF1dG90cmFja2luZ1RyYW5zYWN0aW9uYCBjYW4gYmUgY2FsbGVkIHdpdGhpbiBpdHNlbGYsIGFuZCBpdCB3aWxsIGFkZFxuICAgKiBvbnRvIHRoZSBleGlzdGluZyB0cmFuc2FjdGlvbiBpZiBvbmUgZXhpc3RzLlxuICAgKlxuICAgKiBUT0RPOiBPbmx5IHRocm93IGFuIGVycm9yIGlmIHRoZSBgdHJhY2tgIGlzIGNvbnN1bWVkLlxuICAgKi9cbiAgcnVuSW5UcmFja2luZ1RyYW5zYWN0aW9uID0gPFQ+KGZuOiAoKSA9PiBULCBkZWJ1Z0xhYmVsPzogc3RyaW5nIHwgZmFsc2UpID0+IHtcbiAgICBiZWdpblRyYWNraW5nVHJhbnNhY3Rpb24hKGRlYnVnTGFiZWwpO1xuICAgIGxldCBkaWRFcnJvciA9IHRydWU7XG5cbiAgICB0cnkge1xuICAgICAgbGV0IHZhbHVlID0gZm4oKTtcbiAgICAgIGRpZEVycm9yID0gZmFsc2U7XG4gICAgICByZXR1cm4gdmFsdWU7XG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIGlmIChkaWRFcnJvciAhPT0gdHJ1ZSkge1xuICAgICAgICBlbmRUcmFja2luZ1RyYW5zYWN0aW9uISgpO1xuICAgICAgfVxuICAgIH1cbiAgfTtcblxuICBsZXQgbnRoSW5kZXggPSAoc3RyOiBzdHJpbmcsIHBhdHRlcm46IHN0cmluZywgbjogbnVtYmVyLCBzdGFydGluZ1BvcyA9IC0xKSA9PiB7XG4gICAgbGV0IGkgPSBzdGFydGluZ1BvcztcblxuICAgIHdoaWxlIChuLS0gPiAwICYmIGkrKyA8IHN0ci5sZW5ndGgpIHtcbiAgICAgIGkgPSBzdHIuaW5kZXhPZihwYXR0ZXJuLCBpKTtcbiAgICAgIGlmIChpIDwgMCkgYnJlYWs7XG4gICAgfVxuXG4gICAgcmV0dXJuIGk7XG4gIH07XG5cbiAgbGV0IG1ha2VUcmFja2luZ0Vycm9yTWVzc2FnZSA9IDxUPihcbiAgICB0cmFuc2FjdGlvbjogVHJhbnNhY3Rpb24sXG4gICAgb2JqPzogVCxcbiAgICBrZXlOYW1lPzoga2V5b2YgVCB8IHN0cmluZyB8IHN5bWJvbFxuICApID0+IHtcbiAgICBsZXQgbWVzc2FnZSA9IFtUUkFOU0FDVElPTl9FTlYuZGVidWdNZXNzYWdlKG9iaiwga2V5TmFtZSAmJiBTdHJpbmcoa2V5TmFtZSkpXTtcblxuICAgIG1lc3NhZ2UucHVzaChgXFxgJHtTdHJpbmcoa2V5TmFtZSl9XFxgIHdhcyBmaXJzdCB1c2VkOmApO1xuXG4gICAgbWVzc2FnZS5wdXNoKGxvZ1RyYWNraW5nU3RhY2shKHRyYW5zYWN0aW9uKSk7XG5cbiAgICBtZXNzYWdlLnB1c2goYFN0YWNrIHRyYWNlIGZvciB0aGUgdXBkYXRlOmApO1xuXG4gICAgcmV0dXJuIG1lc3NhZ2Uuam9pbignXFxuXFxuJyk7XG4gIH07XG5cbiAgbG9nVHJhY2tpbmdTdGFjayA9ICh0cmFuc2FjdGlvbj86IFRyYW5zYWN0aW9uKSA9PiB7XG4gICAgbGV0IHRyYWNraW5nU3RhY2sgPSBbXTtcbiAgICBsZXQgY3VycmVudDogVHJhbnNhY3Rpb24gfCBudWxsIHwgdW5kZWZpbmVkID1cbiAgICAgIHRyYW5zYWN0aW9uIHx8IFRSQU5TQUNUSU9OX1NUQUNLW1RSQU5TQUNUSU9OX1NUQUNLLmxlbmd0aCAtIDFdO1xuXG4gICAgaWYgKGN1cnJlbnQgPT09IHVuZGVmaW5lZCkgcmV0dXJuICcnO1xuXG4gICAgd2hpbGUgKGN1cnJlbnQpIHtcbiAgICAgIGlmIChjdXJyZW50LmRlYnVnTGFiZWwpIHtcbiAgICAgICAgdHJhY2tpbmdTdGFjay51bnNoaWZ0KGN1cnJlbnQuZGVidWdMYWJlbCk7XG4gICAgICB9XG5cbiAgICAgIGN1cnJlbnQgPSBjdXJyZW50LnBhcmVudDtcbiAgICB9XG5cbiAgICAvLyBUT0RPOiBVc2UgU3RyaW5nLnByb3RvdHlwZS5yZXBlYXQgaGVyZSBvbmNlIHdlIGNhbiBkcm9wIHN1cHBvcnQgZm9yIElFMTFcbiAgICByZXR1cm4gdHJhY2tpbmdTdGFjay5tYXAoKGxhYmVsLCBpbmRleCkgPT4gQXJyYXkoMiAqIGluZGV4ICsgMSkuam9pbignICcpICsgbGFiZWwpLmpvaW4oJ1xcbicpO1xuICB9O1xuXG4gIG1hcmtUYWdBc0NvbnN1bWVkID0gKF90YWc6IFRhZykgPT4ge1xuICAgIGlmICghQ09OU1VNRURfVEFHUyB8fCBDT05TVU1FRF9UQUdTLmhhcyhfdGFnKSkgcmV0dXJuO1xuXG4gICAgQ09OU1VNRURfVEFHUy5zZXQoX3RhZywgVFJBTlNBQ1RJT05fU1RBQ0tbVFJBTlNBQ1RJT05fU1RBQ0subGVuZ3RoIC0gMV0pO1xuXG4gICAgLy8gV2UgbmVlZCB0byBtYXJrIHRoZSB0YWcgYW5kIGFsbCBvZiBpdHMgc3VidGFncyBhcyBjb25zdW1lZCwgc28gd2UgbmVlZCB0b1xuICAgIC8vIGNhc3QgaXQgYW5kIGFjY2VzcyBpdHMgaW50ZXJuYWxzLiBJbiB0aGUgZnV0dXJlIHRoaXMgc2hvdWxkbid0IGJlIG5lY2Vzc2FyeSxcbiAgICAvLyB0aGlzIGlzIG9ubHkgZm9yIGNvbXB1dGVkIHByb3BlcnRpZXMuXG4gICAgbGV0IHRhZyA9IF90YWcgYXMgYW55O1xuXG4gICAgaWYgKHRhZy5zdWJ0YWcpIHtcbiAgICAgIG1hcmtUYWdBc0NvbnN1bWVkISh0YWcuc3VidGFnKTtcbiAgICB9XG5cbiAgICBpZiAodGFnLnN1YnRhZ3MpIHtcbiAgICAgIHRhZy5zdWJ0YWdzLmZvckVhY2goKHRhZzogVGFnKSA9PiBtYXJrVGFnQXNDb25zdW1lZCEodGFnKSk7XG4gICAgfVxuICB9O1xuXG4gIGFzc2VydFRhZ05vdENvbnN1bWVkID0gPFQ+KHRhZzogVGFnLCBvYmo/OiBULCBrZXlOYW1lPzoga2V5b2YgVCB8IHN0cmluZyB8IHN5bWJvbCkgPT4ge1xuICAgIGlmIChDT05TVU1FRF9UQUdTID09PSBudWxsKSByZXR1cm47XG5cbiAgICBsZXQgdHJhbnNhY3Rpb24gPSBDT05TVU1FRF9UQUdTLmdldCh0YWcpO1xuXG4gICAgaWYgKCF0cmFuc2FjdGlvbikgcmV0dXJuO1xuXG4gICAgLy8gVGhpcyBoYWNrIG1ha2VzIHRoZSBhc3NlcnRpb24gbWVzc2FnZSBuaWNlciwgd2UgY2FuIGN1dCBvZmYgdGhlIGZpcnN0XG4gICAgLy8gZmV3IGxpbmVzIG9mIHRoZSBzdGFjayB0cmFjZSBhbmQgbGV0IHVzZXJzIGtub3cgd2hlcmUgdGhlIGFjdHVhbCBlcnJvclxuICAgIC8vIG9jY3VycmVkLlxuICAgIHRyeSB7XG4gICAgICBhc3NlcnQoZmFsc2UsIG1ha2VUcmFja2luZ0Vycm9yTWVzc2FnZSh0cmFuc2FjdGlvbiwgb2JqLCBrZXlOYW1lKSk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgaWYgKGUuc3RhY2spIHtcbiAgICAgICAgbGV0IHVwZGF0ZVN0YWNrQmVnaW4gPSBlLnN0YWNrLmluZGV4T2YoJ1N0YWNrIHRyYWNlIGZvciB0aGUgdXBkYXRlOicpO1xuXG4gICAgICAgIGlmICh1cGRhdGVTdGFja0JlZ2luICE9PSAtMSkge1xuICAgICAgICAgIGxldCBzdGFydCA9IG50aEluZGV4KGUuc3RhY2ssICdcXG4nLCAxLCB1cGRhdGVTdGFja0JlZ2luKTtcbiAgICAgICAgICBsZXQgZW5kID0gbnRoSW5kZXgoZS5zdGFjaywgJ1xcbicsIDQsIHVwZGF0ZVN0YWNrQmVnaW4pO1xuICAgICAgICAgIGUuc3RhY2sgPSBlLnN0YWNrLnN1YnN0cigwLCBzdGFydCkgKyBlLnN0YWNrLnN1YnN0cihlbmQpO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHRocm93IGU7XG4gICAgfVxuICB9O1xufVxuIl0sInNvdXJjZVJvb3QiOiIifQ==

@@ -14,3 +14,3 @@ import { symbolFor, getGlobal } from './lib/utils';

export { trackedData } from './lib/tracked-data';
export { logTrackingStack, setTrackingTransactionEnv, runInTrackingTransaction, beginTrackingTransaction, endTrackingTransaction, deprecateMutationsInTrackingTransaction } from './lib/debug';
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3BhY2thZ2VzL0BnbGltbWVyL3ZhbGlkYXRvci9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxTQUFTLFNBQVQsRUFBb0IsU0FBcEIsUUFBcUMsYUFBckM7QUFFQSxNQUFNLDhCQUE4QixHQUFHLFNBQVMsQ0FBQyxnQ0FBRCxDQUFoRDtBQUVBLE1BQU0sU0FBUyxHQUFHLFNBQVMsRUFBM0I7O0FBRUEsSUFBSSxTQUFTLENBQUMsOEJBQUQsQ0FBVCxLQUE4QyxJQUFsRCxFQUF3RDtBQUN0RCxRQUFNLElBQUksS0FBSixDQUNKLHNaQURJLENBQU47QUFHRDs7QUFFRCxTQUFTLENBQUMsOEJBQUQsQ0FBVCxHQUE0QyxJQUE1QztBQUVBLFNBQ0UsWUFERixFQUVFLElBRkYsRUFJRSxPQUpGLEVBS0UsT0FMRixFQU1FLFlBTkYsRUFPRSxRQVBGLEVBU0UsU0FURixFQVVFLGtCQVZGLEVBV0UsVUFYRixFQVlFLFdBWkYsRUFhRSxTQUFTLElBQUksUUFiZixFQWdCRSxPQWhCRixFQWlCRSxVQWpCRixFQXFCRSxVQUFVLElBQUksU0FyQmhCLEVBc0JFLFdBdEJGLEVBdUJFLFdBdkJGLEVBd0JFLFdBeEJGLEVBeUJFLFlBekJGLEVBMEJFLFFBMUJGLFFBMkJPLGtCQTNCUDtBQTZCQSxTQUFTLFdBQVQsRUFBc0IsTUFBdEIsRUFBOEIsVUFBOUIsUUFBeUQsWUFBekQ7QUFFQSxTQUNFLGVBREYsRUFFRSxhQUZGLEVBR0UsaUJBSEYsRUFJRSxlQUpGLEVBS0UsYUFMRixFQU1FLFVBTkYsRUFPRSxVQVBGLEVBUUUsS0FSRixFQVNFLE9BVEYsRUFXRSxXQVhGLEVBWUUsT0FaRixFQWFFLFFBYkYsUUFjTyxnQkFkUDtBQWdCQSxTQUFTLFdBQVQsUUFBNEIsb0JBQTVCO0FBRUEsU0FDRSxnQkFERixFQUVFLHlCQUZGLEVBR0Usd0JBSEYsRUFJRSx3QkFKRixFQUtFLHNCQUxGLEVBTUUsdUNBTkYsUUFPTyxhQVBQIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgc3ltYm9sRm9yLCBnZXRHbG9iYWwgfSBmcm9tICcuL2xpYi91dGlscyc7XG5cbmNvbnN0IEdMSU1NRVJfVkFMSURBVE9SX1JFR0lTVFJBVElPTiA9IHN5bWJvbEZvcignR0xJTU1FUl9WQUxJREFUT1JfUkVHSVNUUkFUSU9OJyk7XG5cbmNvbnN0IGdsb2JhbE9iaiA9IGdldEdsb2JhbCgpO1xuXG5pZiAoZ2xvYmFsT2JqW0dMSU1NRVJfVkFMSURBVE9SX1JFR0lTVFJBVElPTl0gPT09IHRydWUpIHtcbiAgdGhyb3cgbmV3IEVycm9yKFxuICAgICdUaGUgYEBnbGltbWVyL3ZhbGlkYXRvcmAgbGlicmFyeSBoYXMgYmVlbiBpbmNsdWRlZCB0d2ljZSBpbiB0aGlzIGFwcGxpY2F0aW9uLiBJdCBjb3VsZCBiZSBkaWZmZXJlbnQgdmVyc2lvbnMgb2YgdGhlIHBhY2thZ2UsIG9yIHRoZSBzYW1lIHZlcnNpb24gaW5jbHVkZWQgdHdpY2UgYnkgbWlzdGFrZS4gYEBnbGltbWVyL3ZhbGlkYXRvcmAgZGVwZW5kcyBvbiBoYXZpbmcgYSBzaW5nbGUgY29weSBvZiB0aGUgcGFja2FnZSBpbiB1c2UgYXQgYW55IHRpbWUgaW4gYW4gYXBwbGljYXRpb24sIGV2ZW4gaWYgdGhleSBhcmUgdGhlIHNhbWUgdmVyc2lvbi4gWW91IG11c3QgZGVkdXBlIHlvdXIgYnVpbGQgdG8gcmVtb3ZlIHRoZSBkdXBsaWNhdGUgcGFja2FnZXMgaW4gb3JkZXIgdG8gcHJldmVudCB0aGlzIGVycm9yLidcbiAgKTtcbn1cblxuZ2xvYmFsT2JqW0dMSU1NRVJfVkFMSURBVE9SX1JFR0lTVFJBVElPTl0gPSB0cnVlO1xuXG5leHBvcnQge1xuICBBTExPV19DWUNMRVMsXG4gIGJ1bXAsXG4gIENvbWJpbmF0b3JUYWcsXG4gIGNvbWJpbmUsXG4gIENPTVBVVEUsXG4gIENPTlNUQU5UX1RBRyxcbiAgQ09OU1RBTlQsXG4gIENvbnN0YW50VGFnLFxuICBjcmVhdGVUYWcsXG4gIGNyZWF0ZVVwZGF0YWJsZVRhZyxcbiAgQ3VycmVudFRhZyxcbiAgQ1VSUkVOVF9UQUcsXG4gIERJUlRZX1RBRyBhcyBkaXJ0eVRhZyxcbiAgRGlydHlhYmxlVGFnLFxuICBFbnRpdHlUYWcsXG4gIElOSVRJQUwsXG4gIGlzQ29uc3RUYWcsXG4gIFJldmlzaW9uLFxuICBUYWcsXG4gIFVwZGF0YWJsZVRhZyxcbiAgVVBEQVRFX1RBRyBhcyB1cGRhdGVUYWcsXG4gIHZhbGlkYXRlVGFnLFxuICB2YWx1ZUZvclRhZyxcbiAgVm9sYXRpbGVUYWcsXG4gIFZPTEFUSUxFX1RBRyxcbiAgVk9MQVRJTEUsXG59IGZyb20gJy4vbGliL3ZhbGlkYXRvcnMnO1xuXG5leHBvcnQgeyBkaXJ0eVRhZ0ZvciwgdGFnRm9yLCB0YWdNZXRhRm9yLCBUYWdNZXRhIH0gZnJvbSAnLi9saWIvbWV0YSc7XG5cbmV4cG9ydCB7XG4gIGJlZ2luVHJhY2tGcmFtZSxcbiAgZW5kVHJhY2tGcmFtZSxcbiAgYmVnaW5VbnRyYWNrRnJhbWUsXG4gIGVuZFVudHJhY2tGcmFtZSxcbiAgcmVzZXRUcmFja2luZyxcbiAgY29uc3VtZVRhZyxcbiAgaXNUcmFja2luZyxcbiAgdHJhY2ssXG4gIHVudHJhY2ssXG4gIENhY2hlLFxuICBjcmVhdGVDYWNoZSxcbiAgaXNDb25zdCxcbiAgZ2V0VmFsdWUsXG59IGZyb20gJy4vbGliL3RyYWNraW5nJztcblxuZXhwb3J0IHsgdHJhY2tlZERhdGEgfSBmcm9tICcuL2xpYi90cmFja2VkLWRhdGEnO1xuXG5leHBvcnQge1xuICBsb2dUcmFja2luZ1N0YWNrLFxuICBzZXRUcmFja2luZ1RyYW5zYWN0aW9uRW52LFxuICBydW5JblRyYWNraW5nVHJhbnNhY3Rpb24sXG4gIGJlZ2luVHJhY2tpbmdUcmFuc2FjdGlvbixcbiAgZW5kVHJhY2tpbmdUcmFuc2FjdGlvbixcbiAgZGVwcmVjYXRlTXV0YXRpb25zSW5UcmFja2luZ1RyYW5zYWN0aW9uLFxufSBmcm9tICcuL2xpYi9kZWJ1Zyc7XG4iXSwic291cmNlUm9vdCI6IiJ9
export { logTrackingStack, setTrackingTransactionEnv, runInTrackingTransaction, beginTrackingTransaction, endTrackingTransaction } from './lib/debug';
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3BhY2thZ2VzL0BnbGltbWVyL3ZhbGlkYXRvci9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxTQUFTLFNBQVQsRUFBb0IsU0FBcEIsUUFBcUMsYUFBckM7QUFFQSxNQUFNLDhCQUE4QixHQUFHLFNBQVMsQ0FBQyxnQ0FBRCxDQUFoRDtBQUVBLE1BQU0sU0FBUyxHQUFHLFNBQVMsRUFBM0I7O0FBRUEsSUFBSSxTQUFTLENBQUMsOEJBQUQsQ0FBVCxLQUE4QyxJQUFsRCxFQUF3RDtBQUN0RCxRQUFNLElBQUksS0FBSixDQUNKLHNaQURJLENBQU47QUFHRDs7QUFFRCxTQUFTLENBQUMsOEJBQUQsQ0FBVCxHQUE0QyxJQUE1QztBQUVBLFNBQ0UsWUFERixFQUVFLElBRkYsRUFJRSxPQUpGLEVBS0UsT0FMRixFQU1FLFlBTkYsRUFPRSxRQVBGLEVBU0UsU0FURixFQVVFLGtCQVZGLEVBV0UsVUFYRixFQVlFLFdBWkYsRUFhRSxTQUFTLElBQUksUUFiZixFQWdCRSxPQWhCRixFQWlCRSxVQWpCRixFQXFCRSxVQUFVLElBQUksU0FyQmhCLEVBc0JFLFdBdEJGLEVBdUJFLFdBdkJGLEVBd0JFLFdBeEJGLEVBeUJFLFlBekJGLEVBMEJFLFFBMUJGLFFBMkJPLGtCQTNCUDtBQTZCQSxTQUFTLFdBQVQsRUFBc0IsTUFBdEIsRUFBOEIsVUFBOUIsUUFBeUQsWUFBekQ7QUFFQSxTQUNFLGVBREYsRUFFRSxhQUZGLEVBR0UsaUJBSEYsRUFJRSxlQUpGLEVBS0UsYUFMRixFQU1FLFVBTkYsRUFPRSxVQVBGLEVBUUUsS0FSRixFQVNFLE9BVEYsRUFXRSxXQVhGLEVBWUUsT0FaRixFQWFFLFFBYkYsUUFjTyxnQkFkUDtBQWdCQSxTQUFTLFdBQVQsUUFBNEIsb0JBQTVCO0FBRUEsU0FDRSxnQkFERixFQUVFLHlCQUZGLEVBR0Usd0JBSEYsRUFJRSx3QkFKRixFQUtFLHNCQUxGLFFBTU8sYUFOUCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHN5bWJvbEZvciwgZ2V0R2xvYmFsIH0gZnJvbSAnLi9saWIvdXRpbHMnO1xuXG5jb25zdCBHTElNTUVSX1ZBTElEQVRPUl9SRUdJU1RSQVRJT04gPSBzeW1ib2xGb3IoJ0dMSU1NRVJfVkFMSURBVE9SX1JFR0lTVFJBVElPTicpO1xuXG5jb25zdCBnbG9iYWxPYmogPSBnZXRHbG9iYWwoKTtcblxuaWYgKGdsb2JhbE9ialtHTElNTUVSX1ZBTElEQVRPUl9SRUdJU1RSQVRJT05dID09PSB0cnVlKSB7XG4gIHRocm93IG5ldyBFcnJvcihcbiAgICAnVGhlIGBAZ2xpbW1lci92YWxpZGF0b3JgIGxpYnJhcnkgaGFzIGJlZW4gaW5jbHVkZWQgdHdpY2UgaW4gdGhpcyBhcHBsaWNhdGlvbi4gSXQgY291bGQgYmUgZGlmZmVyZW50IHZlcnNpb25zIG9mIHRoZSBwYWNrYWdlLCBvciB0aGUgc2FtZSB2ZXJzaW9uIGluY2x1ZGVkIHR3aWNlIGJ5IG1pc3Rha2UuIGBAZ2xpbW1lci92YWxpZGF0b3JgIGRlcGVuZHMgb24gaGF2aW5nIGEgc2luZ2xlIGNvcHkgb2YgdGhlIHBhY2thZ2UgaW4gdXNlIGF0IGFueSB0aW1lIGluIGFuIGFwcGxpY2F0aW9uLCBldmVuIGlmIHRoZXkgYXJlIHRoZSBzYW1lIHZlcnNpb24uIFlvdSBtdXN0IGRlZHVwZSB5b3VyIGJ1aWxkIHRvIHJlbW92ZSB0aGUgZHVwbGljYXRlIHBhY2thZ2VzIGluIG9yZGVyIHRvIHByZXZlbnQgdGhpcyBlcnJvci4nXG4gICk7XG59XG5cbmdsb2JhbE9ialtHTElNTUVSX1ZBTElEQVRPUl9SRUdJU1RSQVRJT05dID0gdHJ1ZTtcblxuZXhwb3J0IHtcbiAgQUxMT1dfQ1lDTEVTLFxuICBidW1wLFxuICBDb21iaW5hdG9yVGFnLFxuICBjb21iaW5lLFxuICBDT01QVVRFLFxuICBDT05TVEFOVF9UQUcsXG4gIENPTlNUQU5ULFxuICBDb25zdGFudFRhZyxcbiAgY3JlYXRlVGFnLFxuICBjcmVhdGVVcGRhdGFibGVUYWcsXG4gIEN1cnJlbnRUYWcsXG4gIENVUlJFTlRfVEFHLFxuICBESVJUWV9UQUcgYXMgZGlydHlUYWcsXG4gIERpcnR5YWJsZVRhZyxcbiAgRW50aXR5VGFnLFxuICBJTklUSUFMLFxuICBpc0NvbnN0VGFnLFxuICBSZXZpc2lvbixcbiAgVGFnLFxuICBVcGRhdGFibGVUYWcsXG4gIFVQREFURV9UQUcgYXMgdXBkYXRlVGFnLFxuICB2YWxpZGF0ZVRhZyxcbiAgdmFsdWVGb3JUYWcsXG4gIFZvbGF0aWxlVGFnLFxuICBWT0xBVElMRV9UQUcsXG4gIFZPTEFUSUxFLFxufSBmcm9tICcuL2xpYi92YWxpZGF0b3JzJztcblxuZXhwb3J0IHsgZGlydHlUYWdGb3IsIHRhZ0ZvciwgdGFnTWV0YUZvciwgVGFnTWV0YSB9IGZyb20gJy4vbGliL21ldGEnO1xuXG5leHBvcnQge1xuICBiZWdpblRyYWNrRnJhbWUsXG4gIGVuZFRyYWNrRnJhbWUsXG4gIGJlZ2luVW50cmFja0ZyYW1lLFxuICBlbmRVbnRyYWNrRnJhbWUsXG4gIHJlc2V0VHJhY2tpbmcsXG4gIGNvbnN1bWVUYWcsXG4gIGlzVHJhY2tpbmcsXG4gIHRyYWNrLFxuICB1bnRyYWNrLFxuICBDYWNoZSxcbiAgY3JlYXRlQ2FjaGUsXG4gIGlzQ29uc3QsXG4gIGdldFZhbHVlLFxufSBmcm9tICcuL2xpYi90cmFja2luZyc7XG5cbmV4cG9ydCB7IHRyYWNrZWREYXRhIH0gZnJvbSAnLi9saWIvdHJhY2tlZC1kYXRhJztcblxuZXhwb3J0IHtcbiAgbG9nVHJhY2tpbmdTdGFjayxcbiAgc2V0VHJhY2tpbmdUcmFuc2FjdGlvbkVudixcbiAgcnVuSW5UcmFja2luZ1RyYW5zYWN0aW9uLFxuICBiZWdpblRyYWNraW5nVHJhbnNhY3Rpb24sXG4gIGVuZFRyYWNraW5nVHJhbnNhY3Rpb24sXG59IGZyb20gJy4vbGliL2RlYnVnJztcbiJdLCJzb3VyY2VSb290IjoiIn0=
import { DEBUG } from '@glimmer/env';
import { deprecate, assert } from '@glimmer/global-context';
import { assert } from '@glimmer/global-context';
export let beginTrackingTransaction;
export let endTrackingTransaction;
export let runInTrackingTransaction;
export let deprecateMutationsInTrackingTransaction;
export let resetTrackingTransaction;

@@ -40,3 +39,3 @@ export let setTrackingTransactionEnv;

beginTrackingTransaction = (_debugLabel, deprecate = false) => {
beginTrackingTransaction = _debugLabel => {
CONSUMED_TAGS = CONSUMED_TAGS || new WeakMap();

@@ -47,4 +46,3 @@ let debugLabel = _debugLabel || undefined;

parent,
debugLabel,
deprecate
debugLabel
});

@@ -102,25 +100,3 @@ };

};
/**
* Switches to deprecating within an autotracking transaction, if one exists.
* If `runInAutotrackingTransaction` is called within the callback of this
* method, it switches back to throwing an error, allowing zebra-striping of
* the types of errors that are thrown.
*
* Does not start an autotracking transaction.
*
* NOTE: For Ember usage only, in general you should assert that these
* invariants are true.
*/
deprecateMutationsInTrackingTransaction = (fn, debugLabel) => {
beginTrackingTransaction(debugLabel, true);
try {
fn();
} finally {
endTrackingTransaction();
}
};
let nthIndex = (str, pattern, n, startingPos = -1) => {

@@ -182,31 +158,23 @@ let i = startingPos;

let transaction = CONSUMED_TAGS.get(tag);
if (!transaction) return;
let currentTransaction = TRANSACTION_STACK[TRANSACTION_STACK.length - 1];
if (!transaction) return; // This hack makes the assertion message nicer, we can cut off the first
// few lines of the stack trace and let users know where the actual error
// occurred.
if (currentTransaction.deprecate) {
deprecate(makeTrackingErrorMessage(transaction, obj, keyName), false, {
id: 'autotracking.mutation-after-consumption'
});
} else {
// This hack makes the assertion message nicer, we can cut off the first
// few lines of the stack trace and let users know where the actual error
// occurred.
try {
assert(false, makeTrackingErrorMessage(transaction, obj, keyName));
} catch (e) {
if (e.stack) {
let updateStackBegin = e.stack.indexOf('Stack trace for the update:');
try {
assert(false, makeTrackingErrorMessage(transaction, obj, keyName));
} catch (e) {
if (e.stack) {
let updateStackBegin = e.stack.indexOf('Stack trace for the update:');
if (updateStackBegin !== -1) {
let start = nthIndex(e.stack, '\n', 1, updateStackBegin);
let end = nthIndex(e.stack, '\n', 4, updateStackBegin);
e.stack = e.stack.substr(0, start) + e.stack.substr(end);
}
if (updateStackBegin !== -1) {
let start = nthIndex(e.stack, '\n', 1, updateStackBegin);
let end = nthIndex(e.stack, '\n', 4, updateStackBegin);
e.stack = e.stack.substr(0, start) + e.stack.substr(end);
}
}
throw e;
}
throw e;
}
};
}
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL0BnbGltbWVyL3ZhbGlkYXRvci9saWIvZGVidWcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsU0FBUyxLQUFULFFBQXNCLGNBQXRCO0FBQ0EsU0FBUyxTQUFULEVBQW9CLE1BQXBCLFFBQWtDLHlCQUFsQztBQUVBLE9BQU8sSUFBSSx3QkFBSjtBQUdQLE9BQU8sSUFBSSxzQkFBSjtBQUNQLE9BQU8sSUFBSSx3QkFBSjtBQUdQLE9BQU8sSUFBSSx1Q0FBSjtBQUVQLE9BQU8sSUFBSSx3QkFBSjtBQUNQLE9BQU8sSUFBSSx5QkFBSjtBQUlQLE9BQU8sSUFBSSxvQkFBSjtBQUlQLE9BQU8sSUFBSSxpQkFBSjtBQUVQLE9BQU8sSUFBSSxnQkFBSjs7QUFRUCxJQUFJLEtBQUosRUFBVztBQUNULE1BQUksYUFBYSxHQUFxQyxJQUF0RDtBQUVBLE1BQUksaUJBQWlCLEdBQWtCLEVBQXZDLENBSFMsQ0FLVDs7QUFFQSxNQUFJLGVBQWUsR0FBRztBQUNwQixJQUFBLFlBQVksQ0FBQyxHQUFELEVBQWdCLE9BQWhCLEVBQWdDO0FBQzFDLFVBQUksT0FBSjs7QUFFQSxVQUFJLE9BQU8sR0FBUCxLQUFlLFVBQW5CLEVBQStCO0FBQzdCLFFBQUEsT0FBTyxHQUFHLEdBQUcsQ0FBQyxJQUFkO0FBQ0QsT0FGRCxNQUVPLElBQUksT0FBTyxHQUFQLEtBQWUsUUFBZixJQUEyQixHQUFHLEtBQUssSUFBdkMsRUFBNkM7QUFDbEQsWUFBSSxTQUFTLEdBQUksR0FBRyxDQUFDLFdBQUosSUFBbUIsR0FBRyxDQUFDLFdBQUosQ0FBZ0IsSUFBcEMsSUFBNkMsaUJBQTdEO0FBRUEsUUFBQSxPQUFPLEdBQUcsbUJBQW1CLFNBQVMsR0FBdEM7QUFDRCxPQUpNLE1BSUEsSUFBSSxHQUFHLEtBQUssU0FBWixFQUF1QjtBQUM1QixRQUFBLE9BQU8sR0FBRyxrQkFBVjtBQUNELE9BRk0sTUFFQTtBQUNMLFFBQUEsT0FBTyxHQUFHLE1BQU0sQ0FB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UUFBQSxNQUFNLENBQUMsS0FBRCxFQUFRLHdCQUF3QixDQUFDLFdBQUQsRUFBYyxHQUFkLEVBQW1CLE9BQW5CLENBQWhDLENBQU47QUFDRCxPQUZELENBRUUsT0FBTyxDQUFQLEVBQVU7QUFDVixZQUFJLENBQUMsQ0FBQyxLQUFOLEVBQWE7QUFDWCxjQUFJLGdCQUFnQixHQUFHLENBQUMsQ0FBQyxLQUFGLENBQVEsT0FBUixDQUFnQiw2QkFBaEIsQ0FBdkI7O0FBRUEsY0FBSSxnQkFBZ0IsS0FBSyxDQUFDLENBQTFCLEVBQTZCO0FBQzNCLGdCQUFJLEtBQUssR0FBRyxRQUFRLENBQUMsQ0FBQyxDQUFDLEtBQUgsRUFBVSxJQUFWLEVBQWdCLENBQWhCLEVBQW1CLGdCQUFuQixDQUFwQjtBQUNBLGdCQUFJLEdBQUcsR0FBRyxRQUFRLENBQUMsQ0FBQyxDQUFDLEtBQUgsRUFBVSxJQUFWLEVBQWdCLENBQWhCLEVBQW1CLGdCQUFuQixDQUFsQjtBQUNBLFlBQUEsQ0FBQyxDQUFDLEtBQUYsR0FBVSxDQUFDLENBQUMsS0FBRixDQUFRLE1BQVIsQ0FBZSxDQUFmLEVBQWtCLEtBQWxCLElBQTJCLENBQUMsQ0FBQyxLQUFGLENBQVEsTUFBUixDQUFlLEdBQWYsQ0FBckM7QUFDRDtBQUNGOztBQUVELGNBQU0sQ0FBTjtBQUNEO0FBQ0Y7QUFDRixHQWpDRDtBQWtDRCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFRhZyB9IGZyb20gJy4vdmFsaWRhdG9ycyc7XG5pbXBvcnQgeyBERUJVRyB9IGZyb20gJ0BnbGltbWVyL2Vudic7XG5pbXBvcnQgeyBkZXByZWNhdGUsIGFzc2VydCB9IGZyb20gJ0BnbGltbWVyL2dsb2JhbC1jb250ZXh0JztcblxuZXhwb3J0IGxldCBiZWdpblRyYWNraW5nVHJhbnNhY3Rpb246XG4gIHwgdW5kZWZpbmVkXG4gIHwgKChkZWJ1Z2dpbmdDb250ZXh0Pzogc3RyaW5nIHwgZmFsc2UsIGRlcHJlY2F0ZT86IGJvb2xlYW4pID0+IHZvaWQpO1xuZXhwb3J0IGxldCBlbmRUcmFja2luZ1RyYW5zYWN0aW9uOiB1bmRlZmluZWQgfCAoKCkgPT4gdm9pZCk7XG5leHBvcnQgbGV0IHJ1bkluVHJhY2tpbmdUcmFuc2FjdGlvbjpcbiAgfCB1bmRlZmluZWRcbiAgfCAoPFQ+KGZuOiAoKSA9PiBULCBkZWJ1Z2dpbmdDb250ZXh0Pzogc3RyaW5nIHwgZmFsc2UpID0+IFQpO1xuZXhwb3J0IGxldCBkZXByZWNhdGVNdXRhdGlvbnNJblRyYWNraW5nVHJhbnNhY3Rpb246IHVuZGVmaW5lZCB8ICgoZm46ICgpID0+IHZvaWQpID0+IHZvaWQpO1xuXG5leHBvcnQgbGV0IHJlc2V0VHJhY2tpbmdUcmFuc2FjdGlvbjogdW5kZWZpbmVkIHwgKCgpID0+IHN0cmluZyk7XG5leHBvcnQgbGV0IHNldFRyYWNraW5nVHJhbnNhY3Rpb25FbnY6XG4gIHwgdW5kZWZpbmVkXG4gIHwgKChlbnY6IHsgZGVidWdNZXNzYWdlPyhvYmo/OiB1bmtub3duLCBrZXlOYW1lPzogc3RyaW5nKTogc3RyaW5nIH0pID0+IHZvaWQpO1xuXG5leHBvcnQgbGV0IGFzc2VydFRhZ05vdENvbnN1bWVkOlxuICB8IHVuZGVmaW5lZFxuICB8ICg8VD4odGFnOiBUYWcsIG9iaj86IFQsIGtleU5hbWU/OiBrZXlvZiBUIHwgc3RyaW5nIHwgc3ltYm9sKSA9PiB2b2lkKTtcblxuZXhwb3J0IGxldCBtYXJrVGFnQXNDb25zdW1lZDogdW5kZWZpbmVkIHwgKChfdGFnOiBUYWcpID0+IHZvaWQpO1xuXG5leHBvcnQgbGV0IGxvZ1RyYWNraW5nU3RhY2s6IHVuZGVmaW5lZCB8ICgodHJhbnNhY3Rpb24/OiBUcmFuc2FjdGlvbikgPT4gc3RyaW5nKTtcblxuaW50ZXJmYWNlIFRyYW5zYWN0aW9uIHtcbiAgcGFyZW50OiBUcmFuc2FjdGlvbiB8IG51bGw7XG4gIGRlYnVnTGFiZWw/OiBzdHJpbmc7XG4gIGRlcHJlY2F0ZTogYm9vbGVhbjtcbn1cblxuaWYgKERFQlVHKSB7XG4gIGxldCBDT05TVU1FRF9UQUdTOiBXZWFrTWFwPFRhZywgVHJhbnNhY3Rpb24+IHwgbnVsbCA9IG51bGw7XG5cbiAgbGV0IFRSQU5TQUNUSU9OX1NUQUNLOiBUcmFuc2FjdGlvbltdID0gW107XG5cbiAgLy8vLy8vLy8vXG5cbiAgbGV0IFRSQU5TQUNUSU9OX0VOViA9IHtcbiAgICBkZWJ1Z01lc3NhZ2Uob2JqPzogdW5rbm93biwga2V5TmFtZT86IHN0cmluZykge1xuICAgICAgbGV0IG9iak5hbWU7XG5cbiAgICAgIGlmICh0eXBlb2Ygb2JqID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIG9iak5hbWUgPSBvYmoubmFtZTtcbiAgICAgIH0gZWxzZSBpZiAodHlwZW9mIG9iaiA9PT0gJ29iamVjdCcgJiYgb2JqICE9PSBudWxsKSB7XG4gICAgICAgIGxldCBjbGFzc05hbWUgPSAob2JqLmNvbnN0cnVjdG9yICYmIG9iai5jb25zdHJ1Y3Rvci5uYW1lKSB8fCAnKHVua25vd24gY2xhc3MpJztcblxuICAgICAgICBvYmpOYW1lID0gYChhbiBpbnN0YW5jZSBvZiAke2NsYXNzTmFtZX0pYDtcbiAgICAgIH0gZWxzZSBpZiAob2JqID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgb2JqTmFtZSA9ICcoYW4gdW5rbm93biB0YWcpJztcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIG9iak5hbWUgPSBTdHJpbmcob2JqKTtcbiAgICAgIH1cblxuICAgICAgbGV0IGRpcnR5U3RyaW5nID0ga2V5TmFtZSA/IGBcXGAke2tleU5hbWV9XFxgIG9uIFxcYCR7b2JqTmFtZX1cXGBgIDogYFxcYCR7b2JqTmFtZX1cXGBgO1xuXG4gICAgICByZXR1cm4gYFlvdSBhdHRlbXB0ZWQgdG8gdXBkYXRlICR7ZGlydHlTdHJpbmd9LCBidXQgaXQgaGFkIGFscmVhZHkgYmVlbiB1c2VkIHByZXZpb3VzbHkgaW4gdGhlIHNhbWUgY29tcHV0YXRpb24uICBBdHRlbXB0aW5nIHRvIHVwZGF0ZSBhIHZhbHVlIGFmdGVyIHVzaW5nIGl0IGluIGEgY29tcHV0YXRpb24gY2FuIGNhdXNlIGxvZ2ljYWwgZXJyb3JzLCBpbmZpbml0ZSByZXZhbGlkYXRpb24gYnVncywgYW5kIHBlcmZvcm1hbmNlIGlzc3VlcywgYW5kIGlzIG5vdCBzdXBwb3J0ZWQuYDtcbiAgICB9LFxuICB9O1xuXG4gIHNldFRyYWNraW5nVHJhbnNhY3Rpb25FbnYgPSAoZW52KSA9PiBPYmplY3QuYXNzaWduKFRSQU5TQUNUSU9OX0VOViwgZW52KTtcblxuICBiZWdpblRyYWNraW5nVHJhbnNhY3Rpb24gPSAoX2RlYnVnTGFiZWw/OiBzdHJpbmcgfCBmYWxzZSwgZGVwcmVjYXRlID0gZmFsc2UpID0+IHtcbiAgICBDT05TVU1FRF9UQUdTID0gQ09OU1VNRURfVEFHUyB8fCBuZXcgV2Vha01hcCgpO1xuXG4gICAgbGV0IGRlYnVnTGFiZWwgPSBfZGVidWdMYWJlbCB8fCB1bmRlZmluZWQ7XG5cbiAgICBsZXQgcGFyZW50ID0gVFJBTlNBQ1RJT05fU1RBQ0tbVFJBTlNBQ1RJT05fU1RBQ0subGVuZ3RoIC0gMV0gfHwgbnVsbDtcblxuICAgIFRSQU5TQUNUSU9OX1NUQUNLLnB1c2goe1xuICAgICAgcGFyZW50LFxuICAgICAgZGVidWdMYWJlbCxcbiAgICAgIGRlcHJlY2F0ZSxcbiAgICB9KTtcbiAgfTtcblxuICBlbmRUcmFja2luZ1RyYW5zYWN0aW9uID0gKCkgPT4ge1xuICAgIGlmIChUUkFOU0FDVElPTl9TVEFDSy5sZW5ndGggPT09IDApIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignYXR0ZW1wdGVkIHRvIGNsb3NlIGEgdHJhY2tpbmcgdHJhbnNhY3Rpb24sIGJ1dCBvbmUgd2FzIG5vdCBvcGVuJyk7XG4gICAgfVxuXG4gICAgVFJBTlNBQ1RJT05fU1RBQ0sucG9wKCk7XG5cbiAgICBpZiAoVFJBTlNBQ1RJT05fU1RBQ0subGVuZ3RoID09PSAwKSB7XG4gICAgICBDT05TVU1FRF9UQUdTID0gbnVsbDtcbiAgICB9XG4gIH07XG5cbiAgcmVzZXRUcmFja2luZ1RyYW5zYWN0aW9uID0gKCkgPT4ge1xuICAgIGxldCBzdGFjayA9ICcnO1xuXG4gICAgaWYgKFRSQU5TQUNUSU9OX1NUQUNLLmxlbmd0aCA+IDApIHtcbiAgICAgIHN0YWNrID0gbG9nVHJhY2tpbmdTdGFjayEoVFJBTlNBQ1RJT05fU1RBQ0tbVFJBTlNBQ1RJT05fU1RBQ0subGVuZ3RoIC0gMV0pO1xuICAgIH1cblxuICAgIFRSQU5TQUNUSU9OX1NUQUNLID0gW107XG4gICAgQ09OU1VNRURfVEFHUyA9IG51bGw7XG5cbiAgICByZXR1cm4gc3RhY2s7XG4gIH07XG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgYSBnbG9iYWwgYXV0b3RyYWNraW5nIHRyYW5zYWN0aW9uLiBUaGlzIHdpbGwgcHJldmVudCBhbnkgYmFja2Zsb3dcbiAgICogaW4gYW55IGB0cmFja2AgY2FsbHMgd2l0aGluIHRoZSB0cmFuc2FjdGlvbiwgZXZlbiBpZiB0aGV5IGFyZSBub3RcbiAgICogZXh0ZXJuYWxseSBjb25zdW1lZC5cbiAgICpcbiAgICogYHJ1bkluQXV0b3RyYWNraW5nVHJhbnNhY3Rpb25gIGNhbiBiZSBjYWxsZWQgd2l0aGluIGl0c2VsZiwgYW5kIGl0IHdpbGwgYWRkXG4gICAqIG9udG8gdGhlIGV4aXN0aW5nIHRyYW5zYWN0aW9uIGlmIG9uZSBleGlzdHMuXG4gICAqXG4gICAqIFRPRE86IE9ubHkgdGhyb3cgYW4gZXJyb3IgaWYgdGhlIGB0cmFja2AgaXMgY29uc3VtZWQuXG4gICAqL1xuICBydW5JblRyYWNraW5nVHJhbnNhY3Rpb24gPSA8VD4oZm46ICgpID0+IFQsIGRlYnVnTGFiZWw/OiBzdHJpbmcgfCBmYWxzZSkgPT4ge1xuICAgIGJlZ2luVHJhY2tpbmdUcmFuc2FjdGlvbiEoZGVidWdMYWJlbCk7XG4gICAgbGV0IGRpZEVycm9yID0gdHJ1ZTtcblxuICAgIHRyeSB7XG4gICAgICBsZXQgdmFsdWUgPSBmbigpO1xuICAgICAgZGlkRXJyb3IgPSBmYWxzZTtcbiAgICAgIHJldHVybiB2YWx1ZTtcbiAgICB9IGZpbmFsbHkge1xuICAgICAgaWYgKGRpZEVycm9yICE9PSB0cnVlKSB7XG4gICAgICAgIGVuZFRyYWNraW5nVHJhbnNhY3Rpb24hKCk7XG4gICAgICB9XG4gICAgfVxuICB9O1xuXG4gIC8qKlxuICAgKiBTd2l0Y2hlcyB0byBkZXByZWNhdGluZyB3aXRoaW4gYW4gYXV0b3RyYWNraW5nIHRyYW5zYWN0aW9uLCBpZiBvbmUgZXhpc3RzLlxuICAgKiBJZiBgcnVuSW5BdXRvdHJhY2tpbmdUcmFuc2FjdGlvbmAgaXMgY2FsbGVkIHdpdGhpbiB0aGUgY2FsbGJhY2sgb2YgdGhpc1xuICAgKiBtZXRob2QsIGl0IHN3aXRjaGVzIGJhY2sgdG8gdGhyb3dpbmcgYW4gZXJyb3IsIGFsbG93aW5nIHplYnJhLXN0cmlwaW5nIG9mXG4gICAqIHRoZSB0eXBlcyBvZiBlcnJvcnMgdGhhdCBhcmUgdGhyb3duLlxuICAgKlxuICAgKiBEb2VzIG5vdCBzdGFydCBhbiBhdXRvdHJhY2tpbmcgdHJhbnNhY3Rpb24uXG4gICAqXG4gICAqIE5PVEU6IEZvciBFbWJlciB1c2FnZSBvbmx5LCBpbiBnZW5lcmFsIHlvdSBzaG91bGQgYXNzZXJ0IHRoYXQgdGhlc2VcbiAgICogaW52YXJpYW50cyBhcmUgdHJ1ZS5cbiAgICovXG4gIGRlcHJlY2F0ZU11dGF0aW9uc0luVHJhY2tpbmdUcmFuc2FjdGlvbiA9IChmbjogKCkgPT4gdm9pZCwgZGVidWdMYWJlbD86IHN0cmluZyB8IGZhbHNlKSA9PiB7XG4gICAgYmVnaW5UcmFja2luZ1RyYW5zYWN0aW9uIShkZWJ1Z0xhYmVsLCB0cnVlKTtcblxuICAgIHRyeSB7XG4gICAgICBmbigpO1xuICAgIH0gZmluYWxseSB7XG4gICAgICBlbmRUcmFja2luZ1RyYW5zYWN0aW9uISgpO1xuICAgIH1cbiAgfTtcblxuICBsZXQgbnRoSW5kZXggPSAoc3RyOiBzdHJpbmcsIHBhdHRlcm46IHN0cmluZywgbjogbnVtYmVyLCBzdGFydGluZ1BvcyA9IC0xKSA9PiB7XG4gICAgbGV0IGkgPSBzdGFydGluZ1BvcztcblxuICAgIHdoaWxlIChuLS0gPiAwICYmIGkrKyA8IHN0ci5sZW5ndGgpIHtcbiAgICAgIGkgPSBzdHIuaW5kZXhPZihwYXR0ZXJuLCBpKTtcbiAgICAgIGlmIChpIDwgMCkgYnJlYWs7XG4gICAgfVxuXG4gICAgcmV0dXJuIGk7XG4gIH07XG5cbiAgbGV0IG1ha2VUcmFja2luZ0Vycm9yTWVzc2FnZSA9IDxUPihcbiAgICB0cmFuc2FjdGlvbjogVHJhbnNhY3Rpb24sXG4gICAgb2JqPzogVCxcbiAgICBrZXlOYW1lPzoga2V5b2YgVCB8IHN0cmluZyB8IHN5bWJvbFxuICApID0+IHtcbiAgICBsZXQgbWVzc2FnZSA9IFtUUkFOU0FDVElPTl9FTlYuZGVidWdNZXNzYWdlKG9iaiwga2V5TmFtZSAmJiBTdHJpbmcoa2V5TmFtZSkpXTtcblxuICAgIG1lc3NhZ2UucHVzaChgXFxgJHtTdHJpbmcoa2V5TmFtZSl9XFxgIHdhcyBmaXJzdCB1c2VkOmApO1xuXG4gICAgbWVzc2FnZS5wdXNoKGxvZ1RyYWNraW5nU3RhY2shKHRyYW5zYWN0aW9uKSk7XG5cbiAgICBtZXNzYWdlLnB1c2goYFN0YWNrIHRyYWNlIGZvciB0aGUgdXBkYXRlOmApO1xuXG4gICAgcmV0dXJuIG1lc3NhZ2Uuam9pbignXFxuXFxuJyk7XG4gIH07XG5cbiAgbG9nVHJhY2tpbmdTdGFjayA9ICh0cmFuc2FjdGlvbj86IFRyYW5zYWN0aW9uKSA9PiB7XG4gICAgbGV0IHRyYWNraW5nU3RhY2sgPSBbXTtcbiAgICBsZXQgY3VycmVudDogVHJhbnNhY3Rpb24gfCBudWxsIHwgdW5kZWZpbmVkID1cbiAgICAgIHRyYW5zYWN0aW9uIHx8IFRSQU5TQUNUSU9OX1NUQUNLW1RSQU5TQUNUSU9OX1NUQUNLLmxlbmd0aCAtIDFdO1xuXG4gICAgaWYgKGN1cnJlbnQgPT09IHVuZGVmaW5lZCkgcmV0dXJuICcnO1xuXG4gICAgd2hpbGUgKGN1cnJlbnQpIHtcbiAgICAgIGlmIChjdXJyZW50LmRlYnVnTGFiZWwpIHtcbiAgICAgICAgdHJhY2tpbmdTdGFjay51bnNoaWZ0KGN1cnJlbnQuZGVidWdMYWJlbCk7XG4gICAgICB9XG5cbiAgICAgIGN1cnJlbnQgPSBjdXJyZW50LnBhcmVudDtcbiAgICB9XG5cbiAgICAvLyBUT0RPOiBVc2UgU3RyaW5nLnByb3RvdHlwZS5yZXBlYXQgaGVyZSBvbmNlIHdlIGNhbiBkcm9wIHN1cHBvcnQgZm9yIElFMTFcbiAgICByZXR1cm4gdHJhY2tpbmdTdGFjay5tYXAoKGxhYmVsLCBpbmRleCkgPT4gQXJyYXkoMiAqIGluZGV4ICsgMSkuam9pbignICcpICsgbGFiZWwpLmpvaW4oJ1xcbicpO1xuICB9O1xuXG4gIG1hcmtUYWdBc0NvbnN1bWVkID0gKF90YWc6IFRhZykgPT4ge1xuICAgIGlmICghQ09OU1VNRURfVEFHUyB8fCBDT05TVU1FRF9UQUdTLmhhcyhfdGFnKSkgcmV0dXJuO1xuXG4gICAgQ09OU1VNRURfVEFHUy5zZXQoX3RhZywgVFJBTlNBQ1RJT05fU1RBQ0tbVFJBTlNBQ1RJT05fU1RBQ0subGVuZ3RoIC0gMV0pO1xuXG4gICAgLy8gV2UgbmVlZCB0byBtYXJrIHRoZSB0YWcgYW5kIGFsbCBvZiBpdHMgc3VidGFncyBhcyBjb25zdW1lZCwgc28gd2UgbmVlZCB0b1xuICAgIC8vIGNhc3QgaXQgYW5kIGFjY2VzcyBpdHMgaW50ZXJuYWxzLiBJbiB0aGUgZnV0dXJlIHRoaXMgc2hvdWxkbid0IGJlIG5lY2Vzc2FyeSxcbiAgICAvLyB0aGlzIGlzIG9ubHkgZm9yIGNvbXB1dGVkIHByb3BlcnRpZXMuXG4gICAgbGV0IHRhZyA9IF90YWcgYXMgYW55O1xuXG4gICAgaWYgKHRhZy5zdWJ0YWcpIHtcbiAgICAgIG1hcmtUYWdBc0NvbnN1bWVkISh0YWcuc3VidGFnKTtcbiAgICB9XG5cbiAgICBpZiAodGFnLnN1YnRhZ3MpIHtcbiAgICAgIHRhZy5zdWJ0YWdzLmZvckVhY2goKHRhZzogVGFnKSA9PiBtYXJrVGFnQXNDb25zdW1lZCEodGFnKSk7XG4gICAgfVxuICB9O1xuXG4gIGFzc2VydFRhZ05vdENvbnN1bWVkID0gPFQ+KHRhZzogVGFnLCBvYmo/OiBULCBrZXlOYW1lPzoga2V5b2YgVCB8IHN0cmluZyB8IHN5bWJvbCkgPT4ge1xuICAgIGlmIChDT05TVU1FRF9UQUdTID09PSBudWxsKSByZXR1cm47XG5cbiAgICBsZXQgdHJhbnNhY3Rpb24gPSBDT05TVU1FRF9UQUdTLmdldCh0YWcpO1xuXG4gICAgaWYgKCF0cmFuc2FjdGlvbikgcmV0dXJuO1xuXG4gICAgbGV0IGN1cnJlbnRUcmFuc2FjdGlvbiA9IFRSQU5TQUNUSU9OX1NUQUNLW1RSQU5TQUNUSU9OX1NUQUNLLmxlbmd0aCAtIDFdO1xuXG4gICAgaWYgKGN1cnJlbnRUcmFuc2FjdGlvbi5kZXByZWNhdGUpIHtcbiAgICAgIGRlcHJlY2F0ZShtYWtlVHJhY2tpbmdFcnJvck1lc3NhZ2UodHJhbnNhY3Rpb24sIG9iaiwga2V5TmFtZSksIGZhbHNlLCB7XG4gICAgICAgIGlkOiAnYXV0b3RyYWNraW5nLm11dGF0aW9uLWFmdGVyLWNvbnN1bXB0aW9uJyxcbiAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBUaGlzIGhhY2sgbWFrZXMgdGhlIGFzc2VydGlvbiBtZXNzYWdlIG5pY2VyLCB3ZSBjYW4gY3V0IG9mZiB0aGUgZmlyc3RcbiAgICAgIC8vIGZldyBsaW5lcyBvZiB0aGUgc3RhY2sgdHJhY2UgYW5kIGxldCB1c2VycyBrbm93IHdoZXJlIHRoZSBhY3R1YWwgZXJyb3JcbiAgICAgIC8vIG9jY3VycmVkLlxuICAgICAgdHJ5IHtcbiAgICAgICAgYXNzZXJ0KGZhbHNlLCBtYWtlVHJhY2tpbmdFcnJvck1lc3NhZ2UodHJhbnNhY3Rpb24sIG9iaiwga2V5TmFtZSkpO1xuICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICBpZiAoZS5zdGFjaykge1xuICAgICAgICAgIGxldCB1cGRhdGVTdGFja0JlZ2luID0gZS5zdGFjay5pbmRleE9mKCdTdGFjayB0cmFjZSBmb3IgdGhlIHVwZGF0ZTonKTtcblxuICAgICAgICAgIGlmICh1cGRhdGVTdGFja0JlZ2luICE9PSAtMSkge1xuICAgICAgICAgICAgbGV0IHN0YXJ0ID0gbnRoSW5kZXgoZS5zdGFjaywgJ1xcbicsIDEsIHVwZGF0ZVN0YWNrQmVnaW4pO1xuICAgICAgICAgICAgbGV0IGVuZCA9IG50aEluZGV4KGUuc3RhY2ssICdcXG4nLCA0LCB1cGRhdGVTdGFja0JlZ2luKTtcbiAgICAgICAgICAgIGUuc3RhY2sgPSBlLnN0YWNrLnN1YnN0cigwLCBzdGFydCkgKyBlLnN0YWNrLnN1YnN0cihlbmQpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHRocm93IGU7XG4gICAgICB9XG4gICAgfVxuICB9O1xufVxuIl0sInNvdXJjZVJvb3QiOiIifQ==
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL0BnbGltbWVyL3ZhbGlkYXRvci9saWIvZGVidWcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsU0FBUyxLQUFULFFBQXNCLGNBQXRCO0FBQ0EsU0FBUyxNQUFULFFBQXVCLHlCQUF2QjtBQUVBLE9BQU8sSUFBSSx3QkFBSjtBQUdQLE9BQU8sSUFBSSxzQkFBSjtBQUNQLE9BQU8sSUFBSSx3QkFBSjtBQUlQLE9BQU8sSUFBSSx3QkFBSjtBQUNQLE9BQU8sSUFBSSx5QkFBSjtBQUlQLE9BQU8sSUFBSSxvQkFBSjtBQUlQLE9BQU8sSUFBSSxpQkFBSjtBQUVQLE9BQU8sSUFBSSxnQkFBSjs7QUFPUCxJQUFJLEtBQUosRUFBVztBQUNULE1BQUksYUFBYSxHQUFxQyxJQUF0RDtBQUVBLE1BQUksaUJBQWlCLEdBQWtCLEVBQXZDLENBSFMsQ0FLVDs7QUFFQSxNQUFJLGVBQWUsR0FBRztBQUNwQixJQUFBLFlBQVksQ0FBQyxHQUFELEVBQWdCLE9BQWhCLEVBQWdDO0FBQzFDLFVBQUksT0FBSjs7QUFFQSxVQUFJLE9BQU8sR0FBUCxLQUFlLFVBQW5CLEVBQStCO0FBQzdCLFFBQUEsT0FBTyxHQUFHLEdBQUcsQ0FBQyxJQUFkO0FBQ0QsT0FGRCxNQUVPLElBQUksT0FBTyxHQUFQLEtBQWUsUUFBZixJQUEyQixHQUFHLEtBQUssSUFBdkMsRUFBNkM7QUFDbEQsWUFBSSxTQUFTLEdBQUksR0FBRyxDQUFDLFdBQUosSUFBbUIsR0FBRyxDQUFDLFdBQUosQ0FBZ0IsSUFBcEMsSUFBNkMsaUJBQTdEO0FBRUEsUUFBQSxPQUFPLEdBQUcsbUJBQW1CLFNBQVMsR0FBdEM7QUFDRCxPQUpNLE1BSUEsSUFBSSxHQUFHLEtBQUssU0FBWixFQUF1QjtBQUM1QixRQUFBLE9BQU8sR0FBRyxrQkFBVjtBQUNELE9BRk0sTUFFQTtBQUNMLFFBQUEsT0FBTyxHQUFHLE1BQU0sQ0FBQyxHQUFELENBQWhCO0FBQ0Q7O0FBRUQsVUFBSSxXQUFX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Q0FBQyxDQUFDLEtBQUYsQ0FBUSxNQUFSLENBQWUsR0FBZixDQUFyQztBQUNEO0FBQ0Y7O0FBRUQsWUFBTSxDQUFOO0FBQ0Q7QUFDRixHQXpCRDtBQTBCRCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFRhZyB9IGZyb20gJy4vdmFsaWRhdG9ycyc7XG5pbXBvcnQgeyBERUJVRyB9IGZyb20gJ0BnbGltbWVyL2Vudic7XG5pbXBvcnQgeyBhc3NlcnQgfSBmcm9tICdAZ2xpbW1lci9nbG9iYWwtY29udGV4dCc7XG5cbmV4cG9ydCBsZXQgYmVnaW5UcmFja2luZ1RyYW5zYWN0aW9uOlxuICB8IHVuZGVmaW5lZFxuICB8ICgoZGVidWdnaW5nQ29udGV4dD86IHN0cmluZyB8IGZhbHNlLCBkZXByZWNhdGU/OiBib29sZWFuKSA9PiB2b2lkKTtcbmV4cG9ydCBsZXQgZW5kVHJhY2tpbmdUcmFuc2FjdGlvbjogdW5kZWZpbmVkIHwgKCgpID0+IHZvaWQpO1xuZXhwb3J0IGxldCBydW5JblRyYWNraW5nVHJhbnNhY3Rpb246XG4gIHwgdW5kZWZpbmVkXG4gIHwgKDxUPihmbjogKCkgPT4gVCwgZGVidWdnaW5nQ29udGV4dD86IHN0cmluZyB8IGZhbHNlKSA9PiBUKTtcblxuZXhwb3J0IGxldCByZXNldFRyYWNraW5nVHJhbnNhY3Rpb246IHVuZGVmaW5lZCB8ICgoKSA9PiBzdHJpbmcpO1xuZXhwb3J0IGxldCBzZXRUcmFja2luZ1RyYW5zYWN0aW9uRW52OlxuICB8IHVuZGVmaW5lZFxuICB8ICgoZW52OiB7IGRlYnVnTWVzc2FnZT8ob2JqPzogdW5rbm93biwga2V5TmFtZT86IHN0cmluZyk6IHN0cmluZyB9KSA9PiB2b2lkKTtcblxuZXhwb3J0IGxldCBhc3NlcnRUYWdOb3RDb25zdW1lZDpcbiAgfCB1bmRlZmluZWRcbiAgfCAoPFQ+KHRhZzogVGFnLCBvYmo/OiBULCBrZXlOYW1lPzoga2V5b2YgVCB8IHN0cmluZyB8IHN5bWJvbCkgPT4gdm9pZCk7XG5cbmV4cG9ydCBsZXQgbWFya1RhZ0FzQ29uc3VtZWQ6IHVuZGVmaW5lZCB8ICgoX3RhZzogVGFnKSA9PiB2b2lkKTtcblxuZXhwb3J0IGxldCBsb2dUcmFja2luZ1N0YWNrOiB1bmRlZmluZWQgfCAoKHRyYW5zYWN0aW9uPzogVHJhbnNhY3Rpb24pID0+IHN0cmluZyk7XG5cbmludGVyZmFjZSBUcmFuc2FjdGlvbiB7XG4gIHBhcmVudDogVHJhbnNhY3Rpb24gfCBudWxsO1xuICBkZWJ1Z0xhYmVsPzogc3RyaW5nO1xufVxuXG5pZiAoREVCVUcpIHtcbiAgbGV0IENPTlNVTUVEX1RBR1M6IFdlYWtNYXA8VGFnLCBUcmFuc2FjdGlvbj4gfCBudWxsID0gbnVsbDtcblxuICBsZXQgVFJBTlNBQ1RJT05fU1RBQ0s6IFRyYW5zYWN0aW9uW10gPSBbXTtcblxuICAvLy8vLy8vLy9cblxuICBsZXQgVFJBTlNBQ1RJT05fRU5WID0ge1xuICAgIGRlYnVnTWVzc2FnZShvYmo/OiB1bmtub3duLCBrZXlOYW1lPzogc3RyaW5nKSB7XG4gICAgICBsZXQgb2JqTmFtZTtcblxuICAgICAgaWYgKHR5cGVvZiBvYmogPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgb2JqTmFtZSA9IG9iai5uYW1lO1xuICAgICAgfSBlbHNlIGlmICh0eXBlb2Ygb2JqID09PSAnb2JqZWN0JyAmJiBvYmogIT09IG51bGwpIHtcbiAgICAgICAgbGV0IGNsYXNzTmFtZSA9IChvYmouY29uc3RydWN0b3IgJiYgb2JqLmNvbnN0cnVjdG9yLm5hbWUpIHx8ICcodW5rbm93biBjbGFzcyknO1xuXG4gICAgICAgIG9iak5hbWUgPSBgKGFuIGluc3RhbmNlIG9mICR7Y2xhc3NOYW1lfSlgO1xuICAgICAgfSBlbHNlIGlmIChvYmogPT09IHVuZGVmaW5lZCkge1xuICAgICAgICBvYmpOYW1lID0gJyhhbiB1bmtub3duIHRhZyknO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgb2JqTmFtZSA9IFN0cmluZyhvYmopO1xuICAgICAgfVxuXG4gICAgICBsZXQgZGlydHlTdHJpbmcgPSBrZXlOYW1lID8gYFxcYCR7a2V5TmFtZX1cXGAgb24gXFxgJHtvYmpOYW1lfVxcYGAgOiBgXFxgJHtvYmpOYW1lfVxcYGA7XG5cbiAgICAgIHJldHVybiBgWW91IGF0dGVtcHRlZCB0byB1cGRhdGUgJHtkaXJ0eVN0cmluZ30sIGJ1dCBpdCBoYWQgYWxyZWFkeSBiZWVuIHVzZWQgcHJldmlvdXNseSBpbiB0aGUgc2FtZSBjb21wdXRhdGlvbi4gIEF0dGVtcHRpbmcgdG8gdXBkYXRlIGEgdmFsdWUgYWZ0ZXIgdXNpbmcgaXQgaW4gYSBjb21wdXRhdGlvbiBjYW4gY2F1c2UgbG9naWNhbCBlcnJvcnMsIGluZmluaXRlIHJldmFsaWRhdGlvbiBidWdzLCBhbmQgcGVyZm9ybWFuY2UgaXNzdWVzLCBhbmQgaXMgbm90IHN1cHBvcnRlZC5gO1xuICAgIH0sXG4gIH07XG5cbiAgc2V0VHJhY2tpbmdUcmFuc2FjdGlvbkVudiA9IChlbnYpID0+IE9iamVjdC5hc3NpZ24oVFJBTlNBQ1RJT05fRU5WLCBlbnYpO1xuXG4gIGJlZ2luVHJhY2tpbmdUcmFuc2FjdGlvbiA9IChfZGVidWdMYWJlbD86IHN0cmluZyB8IGZhbHNlKSA9PiB7XG4gICAgQ09OU1VNRURfVEFHUyA9IENPTlNVTUVEX1RBR1MgfHwgbmV3IFdlYWtNYXAoKTtcblxuICAgIGxldCBkZWJ1Z0xhYmVsID0gX2RlYnVnTGFiZWwgfHwgdW5kZWZpbmVkO1xuXG4gICAgbGV0IHBhcmVudCA9IFRSQU5TQUNUSU9OX1NUQUNLW1RSQU5TQUNUSU9OX1NUQUNLLmxlbmd0aCAtIDFdIHx8IG51bGw7XG5cbiAgICBUUkFOU0FDVElPTl9TVEFDSy5wdXNoKHtcbiAgICAgIHBhcmVudCxcbiAgICAgIGRlYnVnTGFiZWwsXG4gICAgfSk7XG4gIH07XG5cbiAgZW5kVHJhY2tpbmdUcmFuc2FjdGlvbiA9ICgpID0+IHtcbiAgICBpZiAoVFJBTlNBQ1RJT05fU1RBQ0subGVuZ3RoID09PSAwKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ2F0dGVtcHRlZCB0byBjbG9zZSBhIHRyYWNraW5nIHRyYW5zYWN0aW9uLCBidXQgb25lIHdhcyBub3Qgb3BlbicpO1xuICAgIH1cblxuICAgIFRSQU5TQUNUSU9OX1NUQUNLLnBvcCgpO1xuXG4gICAgaWYgKFRSQU5TQUNUSU9OX1NUQUNLLmxlbmd0aCA9PT0gMCkge1xuICAgICAgQ09OU1VNRURfVEFHUyA9IG51bGw7XG4gICAgfVxuICB9O1xuXG4gIHJlc2V0VHJhY2tpbmdUcmFuc2FjdGlvbiA9ICgpID0+IHtcbiAgICBsZXQgc3RhY2sgPSAnJztcblxuICAgIGlmIChUUkFOU0FDVElPTl9TVEFDSy5sZW5ndGggPiAwKSB7XG4gICAgICBzdGFjayA9IGxvZ1RyYWNraW5nU3RhY2shKFRSQU5TQUNUSU9OX1NUQUNLW1RSQU5TQUNUSU9OX1NUQUNLLmxlbmd0aCAtIDFdKTtcbiAgICB9XG5cbiAgICBUUkFOU0FDVElPTl9TVEFDSyA9IFtdO1xuICAgIENPTlNVTUVEX1RBR1MgPSBudWxsO1xuXG4gICAgcmV0dXJuIHN0YWNrO1xuICB9O1xuXG4gIC8qKlxuICAgKiBDcmVhdGVzIGEgZ2xvYmFsIGF1dG90cmFja2luZyB0cmFuc2FjdGlvbi4gVGhpcyB3aWxsIHByZXZlbnQgYW55IGJhY2tmbG93XG4gICAqIGluIGFueSBgdHJhY2tgIGNhbGxzIHdpdGhpbiB0aGUgdHJhbnNhY3Rpb24sIGV2ZW4gaWYgdGhleSBhcmUgbm90XG4gICAqIGV4dGVybmFsbHkgY29uc3VtZWQuXG4gICAqXG4gICAqIGBydW5JbkF1dG90cmFja2luZ1RyYW5zYWN0aW9uYCBjYW4gYmUgY2FsbGVkIHdpdGhpbiBpdHNlbGYsIGFuZCBpdCB3aWxsIGFkZFxuICAgKiBvbnRvIHRoZSBleGlzdGluZyB0cmFuc2FjdGlvbiBpZiBvbmUgZXhpc3RzLlxuICAgKlxuICAgKiBUT0RPOiBPbmx5IHRocm93IGFuIGVycm9yIGlmIHRoZSBgdHJhY2tgIGlzIGNvbnN1bWVkLlxuICAgKi9cbiAgcnVuSW5UcmFja2luZ1RyYW5zYWN0aW9uID0gPFQ+KGZuOiAoKSA9PiBULCBkZWJ1Z0xhYmVsPzogc3RyaW5nIHwgZmFsc2UpID0+IHtcbiAgICBiZWdpblRyYWNraW5nVHJhbnNhY3Rpb24hKGRlYnVnTGFiZWwpO1xuICAgIGxldCBkaWRFcnJvciA9IHRydWU7XG5cbiAgICB0cnkge1xuICAgICAgbGV0IHZhbHVlID0gZm4oKTtcbiAgICAgIGRpZEVycm9yID0gZmFsc2U7XG4gICAgICByZXR1cm4gdmFsdWU7XG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIGlmIChkaWRFcnJvciAhPT0gdHJ1ZSkge1xuICAgICAgICBlbmRUcmFja2luZ1RyYW5zYWN0aW9uISgpO1xuICAgICAgfVxuICAgIH1cbiAgfTtcblxuICBsZXQgbnRoSW5kZXggPSAoc3RyOiBzdHJpbmcsIHBhdHRlcm46IHN0cmluZywgbjogbnVtYmVyLCBzdGFydGluZ1BvcyA9IC0xKSA9PiB7XG4gICAgbGV0IGkgPSBzdGFydGluZ1BvcztcblxuICAgIHdoaWxlIChuLS0gPiAwICYmIGkrKyA8IHN0ci5sZW5ndGgpIHtcbiAgICAgIGkgPSBzdHIuaW5kZXhPZihwYXR0ZXJuLCBpKTtcbiAgICAgIGlmIChpIDwgMCkgYnJlYWs7XG4gICAgfVxuXG4gICAgcmV0dXJuIGk7XG4gIH07XG5cbiAgbGV0IG1ha2VUcmFja2luZ0Vycm9yTWVzc2FnZSA9IDxUPihcbiAgICB0cmFuc2FjdGlvbjogVHJhbnNhY3Rpb24sXG4gICAgb2JqPzogVCxcbiAgICBrZXlOYW1lPzoga2V5b2YgVCB8IHN0cmluZyB8IHN5bWJvbFxuICApID0+IHtcbiAgICBsZXQgbWVzc2FnZSA9IFtUUkFOU0FDVElPTl9FTlYuZGVidWdNZXNzYWdlKG9iaiwga2V5TmFtZSAmJiBTdHJpbmcoa2V5TmFtZSkpXTtcblxuICAgIG1lc3NhZ2UucHVzaChgXFxgJHtTdHJpbmcoa2V5TmFtZSl9XFxgIHdhcyBmaXJzdCB1c2VkOmApO1xuXG4gICAgbWVzc2FnZS5wdXNoKGxvZ1RyYWNraW5nU3RhY2shKHRyYW5zYWN0aW9uKSk7XG5cbiAgICBtZXNzYWdlLnB1c2goYFN0YWNrIHRyYWNlIGZvciB0aGUgdXBkYXRlOmApO1xuXG4gICAgcmV0dXJuIG1lc3NhZ2Uuam9pbignXFxuXFxuJyk7XG4gIH07XG5cbiAgbG9nVHJhY2tpbmdTdGFjayA9ICh0cmFuc2FjdGlvbj86IFRyYW5zYWN0aW9uKSA9PiB7XG4gICAgbGV0IHRyYWNraW5nU3RhY2sgPSBbXTtcbiAgICBsZXQgY3VycmVudDogVHJhbnNhY3Rpb24gfCBudWxsIHwgdW5kZWZpbmVkID1cbiAgICAgIHRyYW5zYWN0aW9uIHx8IFRSQU5TQUNUSU9OX1NUQUNLW1RSQU5TQUNUSU9OX1NUQUNLLmxlbmd0aCAtIDFdO1xuXG4gICAgaWYgKGN1cnJlbnQgPT09IHVuZGVmaW5lZCkgcmV0dXJuICcnO1xuXG4gICAgd2hpbGUgKGN1cnJlbnQpIHtcbiAgICAgIGlmIChjdXJyZW50LmRlYnVnTGFiZWwpIHtcbiAgICAgICAgdHJhY2tpbmdTdGFjay51bnNoaWZ0KGN1cnJlbnQuZGVidWdMYWJlbCk7XG4gICAgICB9XG5cbiAgICAgIGN1cnJlbnQgPSBjdXJyZW50LnBhcmVudDtcbiAgICB9XG5cbiAgICAvLyBUT0RPOiBVc2UgU3RyaW5nLnByb3RvdHlwZS5yZXBlYXQgaGVyZSBvbmNlIHdlIGNhbiBkcm9wIHN1cHBvcnQgZm9yIElFMTFcbiAgICByZXR1cm4gdHJhY2tpbmdTdGFjay5tYXAoKGxhYmVsLCBpbmRleCkgPT4gQXJyYXkoMiAqIGluZGV4ICsgMSkuam9pbignICcpICsgbGFiZWwpLmpvaW4oJ1xcbicpO1xuICB9O1xuXG4gIG1hcmtUYWdBc0NvbnN1bWVkID0gKF90YWc6IFRhZykgPT4ge1xuICAgIGlmICghQ09OU1VNRURfVEFHUyB8fCBDT05TVU1FRF9UQUdTLmhhcyhfdGFnKSkgcmV0dXJuO1xuXG4gICAgQ09OU1VNRURfVEFHUy5zZXQoX3RhZywgVFJBTlNBQ1RJT05fU1RBQ0tbVFJBTlNBQ1RJT05fU1RBQ0subGVuZ3RoIC0gMV0pO1xuXG4gICAgLy8gV2UgbmVlZCB0byBtYXJrIHRoZSB0YWcgYW5kIGFsbCBvZiBpdHMgc3VidGFncyBhcyBjb25zdW1lZCwgc28gd2UgbmVlZCB0b1xuICAgIC8vIGNhc3QgaXQgYW5kIGFjY2VzcyBpdHMgaW50ZXJuYWxzLiBJbiB0aGUgZnV0dXJlIHRoaXMgc2hvdWxkbid0IGJlIG5lY2Vzc2FyeSxcbiAgICAvLyB0aGlzIGlzIG9ubHkgZm9yIGNvbXB1dGVkIHByb3BlcnRpZXMuXG4gICAgbGV0IHRhZyA9IF90YWcgYXMgYW55O1xuXG4gICAgaWYgKHRhZy5zdWJ0YWcpIHtcbiAgICAgIG1hcmtUYWdBc0NvbnN1bWVkISh0YWcuc3VidGFnKTtcbiAgICB9XG5cbiAgICBpZiAodGFnLnN1YnRhZ3MpIHtcbiAgICAgIHRhZy5zdWJ0YWdzLmZvckVhY2goKHRhZzogVGFnKSA9PiBtYXJrVGFnQXNDb25zdW1lZCEodGFnKSk7XG4gICAgfVxuICB9O1xuXG4gIGFzc2VydFRhZ05vdENvbnN1bWVkID0gPFQ+KHRhZzogVGFnLCBvYmo/OiBULCBrZXlOYW1lPzoga2V5b2YgVCB8IHN0cmluZyB8IHN5bWJvbCkgPT4ge1xuICAgIGlmIChDT05TVU1FRF9UQUdTID09PSBudWxsKSByZXR1cm47XG5cbiAgICBsZXQgdHJhbnNhY3Rpb24gPSBDT05TVU1FRF9UQUdTLmdldCh0YWcpO1xuXG4gICAgaWYgKCF0cmFuc2FjdGlvbikgcmV0dXJuO1xuXG4gICAgLy8gVGhpcyBoYWNrIG1ha2VzIHRoZSBhc3NlcnRpb24gbWVzc2FnZSBuaWNlciwgd2UgY2FuIGN1dCBvZmYgdGhlIGZpcnN0XG4gICAgLy8gZmV3IGxpbmVzIG9mIHRoZSBzdGFjayB0cmFjZSBhbmQgbGV0IHVzZXJzIGtub3cgd2hlcmUgdGhlIGFjdHVhbCBlcnJvclxuICAgIC8vIG9jY3VycmVkLlxuICAgIHRyeSB7XG4gICAgICBhc3NlcnQoZmFsc2UsIG1ha2VUcmFja2luZ0Vycm9yTWVzc2FnZSh0cmFuc2FjdGlvbiwgb2JqLCBrZXlOYW1lKSk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgaWYgKGUuc3RhY2spIHtcbiAgICAgICAgbGV0IHVwZGF0ZVN0YWNrQmVnaW4gPSBlLnN0YWNrLmluZGV4T2YoJ1N0YWNrIHRyYWNlIGZvciB0aGUgdXBkYXRlOicpO1xuXG4gICAgICAgIGlmICh1cGRhdGVTdGFja0JlZ2luICE9PSAtMSkge1xuICAgICAgICAgIGxldCBzdGFydCA9IG50aEluZGV4KGUuc3RhY2ssICdcXG4nLCAxLCB1cGRhdGVTdGFja0JlZ2luKTtcbiAgICAgICAgICBsZXQgZW5kID0gbnRoSW5kZXgoZS5zdGFjaywgJ1xcbicsIDQsIHVwZGF0ZVN0YWNrQmVnaW4pO1xuICAgICAgICAgIGUuc3RhY2sgPSBlLnN0YWNrLnN1YnN0cigwLCBzdGFydCkgKyBlLnN0YWNrLnN1YnN0cihlbmQpO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHRocm93IGU7XG4gICAgfVxuICB9O1xufVxuIl0sInNvdXJjZVJvb3QiOiIifQ==

@@ -14,3 +14,3 @@ import { symbolFor, getGlobal } from './lib/utils';

export { trackedData } from './lib/tracked-data';
export { logTrackingStack, setTrackingTransactionEnv, runInTrackingTransaction, beginTrackingTransaction, endTrackingTransaction, deprecateMutationsInTrackingTransaction } from './lib/debug';
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3BhY2thZ2VzL0BnbGltbWVyL3ZhbGlkYXRvci9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxTQUFBLFNBQUEsRUFBQSxTQUFBLFFBQUEsYUFBQTtBQUVBLElBQU0sOEJBQThCLEdBQUcsU0FBUyxDQUFoRCxnQ0FBZ0QsQ0FBaEQ7QUFFQSxJQUFNLFNBQVMsR0FBRyxTQUFsQixFQUFBOztBQUVBLElBQUksU0FBUyxDQUFULDhCQUFTLENBQVQsS0FBSixJQUFBLEVBQXdEO0FBQ3RELFFBQU0sSUFBQSxLQUFBLENBQU4sc1pBQU0sQ0FBTjtBQUdEOztBQUVELFNBQVMsQ0FBVCw4QkFBUyxDQUFULEdBQUEsSUFBQTtBQUVBLFNBQUEsWUFBQSxFQUFBLElBQUEsRUFBQSxPQUFBLEVBQUEsT0FBQSxFQUFBLFlBQUEsRUFBQSxRQUFBLEVBQUEsU0FBQSxFQUFBLGtCQUFBLEVBQUEsVUFBQSxFQUFBLFdBQUEsRUFhRSxTQUFTLElBYlgsUUFBQSxFQUFBLE9BQUEsRUFBQSxVQUFBLEVBcUJFLFVBQVUsSUFyQlosU0FBQSxFQUFBLFdBQUEsRUFBQSxXQUFBLEVBQUEsV0FBQSxFQUFBLFlBQUEsRUFBQSxRQUFBLFFBQUEsa0JBQUE7QUE2QkEsU0FBQSxXQUFBLEVBQUEsTUFBQSxFQUFBLFVBQUEsUUFBQSxZQUFBO0FBRUEsU0FBQSxlQUFBLEVBQUEsYUFBQSxFQUFBLGlCQUFBLEVBQUEsZUFBQSxFQUFBLGFBQUEsRUFBQSxVQUFBLEVBQUEsVUFBQSxFQUFBLEtBQUEsRUFBQSxPQUFBLEVBQUEsV0FBQSxFQUFBLE9BQUEsRUFBQSxRQUFBLFFBQUEsZ0JBQUE7QUFnQkEsU0FBQSxXQUFBLFFBQUEsb0JBQUE7QUFFQSxTQUFBLGdCQUFBLEVBQUEseUJBQUEsRUFBQSx3QkFBQSxFQUFBLHdCQUFBLEVBQUEsc0JBQUEsRUFBQSx1Q0FBQSxRQUFBLGFBQUEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBzeW1ib2xGb3IsIGdldEdsb2JhbCB9IGZyb20gJy4vbGliL3V0aWxzJztcblxuY29uc3QgR0xJTU1FUl9WQUxJREFUT1JfUkVHSVNUUkFUSU9OID0gc3ltYm9sRm9yKCdHTElNTUVSX1ZBTElEQVRPUl9SRUdJU1RSQVRJT04nKTtcblxuY29uc3QgZ2xvYmFsT2JqID0gZ2V0R2xvYmFsKCk7XG5cbmlmIChnbG9iYWxPYmpbR0xJTU1FUl9WQUxJREFUT1JfUkVHSVNUUkFUSU9OXSA9PT0gdHJ1ZSkge1xuICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgJ1RoZSBgQGdsaW1tZXIvdmFsaWRhdG9yYCBsaWJyYXJ5IGhhcyBiZWVuIGluY2x1ZGVkIHR3aWNlIGluIHRoaXMgYXBwbGljYXRpb24uIEl0IGNvdWxkIGJlIGRpZmZlcmVudCB2ZXJzaW9ucyBvZiB0aGUgcGFja2FnZSwgb3IgdGhlIHNhbWUgdmVyc2lvbiBpbmNsdWRlZCB0d2ljZSBieSBtaXN0YWtlLiBgQGdsaW1tZXIvdmFsaWRhdG9yYCBkZXBlbmRzIG9uIGhhdmluZyBhIHNpbmdsZSBjb3B5IG9mIHRoZSBwYWNrYWdlIGluIHVzZSBhdCBhbnkgdGltZSBpbiBhbiBhcHBsaWNhdGlvbiwgZXZlbiBpZiB0aGV5IGFyZSB0aGUgc2FtZSB2ZXJzaW9uLiBZb3UgbXVzdCBkZWR1cGUgeW91ciBidWlsZCB0byByZW1vdmUgdGhlIGR1cGxpY2F0ZSBwYWNrYWdlcyBpbiBvcmRlciB0byBwcmV2ZW50IHRoaXMgZXJyb3IuJ1xuICApO1xufVxuXG5nbG9iYWxPYmpbR0xJTU1FUl9WQUxJREFUT1JfUkVHSVNUUkFUSU9OXSA9IHRydWU7XG5cbmV4cG9ydCB7XG4gIEFMTE9XX0NZQ0xFUyxcbiAgYnVtcCxcbiAgQ29tYmluYXRvclRhZyxcbiAgY29tYmluZSxcbiAgQ09NUFVURSxcbiAgQ09OU1RBTlRfVEFHLFxuICBDT05TVEFOVCxcbiAgQ29uc3RhbnRUYWcsXG4gIGNyZWF0ZVRhZyxcbiAgY3JlYXRlVXBkYXRhYmxlVGFnLFxuICBDdXJyZW50VGFnLFxuICBDVVJSRU5UX1RBRyxcbiAgRElSVFlfVEFHIGFzIGRpcnR5VGFnLFxuICBEaXJ0eWFibGVUYWcsXG4gIEVudGl0eVRhZyxcbiAgSU5JVElBTCxcbiAgaXNDb25zdFRhZyxcbiAgUmV2aXNpb24sXG4gIFRhZyxcbiAgVXBkYXRhYmxlVGFnLFxuICBVUERBVEVfVEFHIGFzIHVwZGF0ZVRhZyxcbiAgdmFsaWRhdGVUYWcsXG4gIHZhbHVlRm9yVGFnLFxuICBWb2xhdGlsZVRhZyxcbiAgVk9MQVRJTEVfVEFHLFxuICBWT0xBVElMRSxcbn0gZnJvbSAnLi9saWIvdmFsaWRhdG9ycyc7XG5cbmV4cG9ydCB7IGRpcnR5VGFnRm9yLCB0YWdGb3IsIHRhZ01ldGFGb3IsIFRhZ01ldGEgfSBmcm9tICcuL2xpYi9tZXRhJztcblxuZXhwb3J0IHtcbiAgYmVnaW5UcmFja0ZyYW1lLFxuICBlbmRUcmFja0ZyYW1lLFxuICBiZWdpblVudHJhY2tGcmFtZSxcbiAgZW5kVW50cmFja0ZyYW1lLFxuICByZXNldFRyYWNraW5nLFxuICBjb25zdW1lVGFnLFxuICBpc1RyYWNraW5nLFxuICB0cmFjayxcbiAgdW50cmFjayxcbiAgQ2FjaGUsXG4gIGNyZWF0ZUNhY2hlLFxuICBpc0NvbnN0LFxuICBnZXRWYWx1ZSxcbn0gZnJvbSAnLi9saWIvdHJhY2tpbmcnO1xuXG5leHBvcnQgeyB0cmFja2VkRGF0YSB9IGZyb20gJy4vbGliL3RyYWNrZWQtZGF0YSc7XG5cbmV4cG9ydCB7XG4gIGxvZ1RyYWNraW5nU3RhY2ssXG4gIHNldFRyYWNraW5nVHJhbnNhY3Rpb25FbnYsXG4gIHJ1bkluVHJhY2tpbmdUcmFuc2FjdGlvbixcbiAgYmVnaW5UcmFja2luZ1RyYW5zYWN0aW9uLFxuICBlbmRUcmFja2luZ1RyYW5zYWN0aW9uLFxuICBkZXByZWNhdGVNdXRhdGlvbnNJblRyYWNraW5nVHJhbnNhY3Rpb24sXG59IGZyb20gJy4vbGliL2RlYnVnJztcbiJdLCJzb3VyY2VSb290IjoiIn0=
export { logTrackingStack, setTrackingTransactionEnv, runInTrackingTransaction, beginTrackingTransaction, endTrackingTransaction } from './lib/debug';
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3BhY2thZ2VzL0BnbGltbWVyL3ZhbGlkYXRvci9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxTQUFBLFNBQUEsRUFBQSxTQUFBLFFBQUEsYUFBQTtBQUVBLElBQU0sOEJBQThCLEdBQUcsU0FBUyxDQUFoRCxnQ0FBZ0QsQ0FBaEQ7QUFFQSxJQUFNLFNBQVMsR0FBRyxTQUFsQixFQUFBOztBQUVBLElBQUksU0FBUyxDQUFULDhCQUFTLENBQVQsS0FBSixJQUFBLEVBQXdEO0FBQ3RELFFBQU0sSUFBQSxLQUFBLENBQU4sc1pBQU0sQ0FBTjtBQUdEOztBQUVELFNBQVMsQ0FBVCw4QkFBUyxDQUFULEdBQUEsSUFBQTtBQUVBLFNBQUEsWUFBQSxFQUFBLElBQUEsRUFBQSxPQUFBLEVBQUEsT0FBQSxFQUFBLFlBQUEsRUFBQSxRQUFBLEVBQUEsU0FBQSxFQUFBLGtCQUFBLEVBQUEsVUFBQSxFQUFBLFdBQUEsRUFhRSxTQUFTLElBYlgsUUFBQSxFQUFBLE9BQUEsRUFBQSxVQUFBLEVBcUJFLFVBQVUsSUFyQlosU0FBQSxFQUFBLFdBQUEsRUFBQSxXQUFBLEVBQUEsV0FBQSxFQUFBLFlBQUEsRUFBQSxRQUFBLFFBQUEsa0JBQUE7QUE2QkEsU0FBQSxXQUFBLEVBQUEsTUFBQSxFQUFBLFVBQUEsUUFBQSxZQUFBO0FBRUEsU0FBQSxlQUFBLEVBQUEsYUFBQSxFQUFBLGlCQUFBLEVBQUEsZUFBQSxFQUFBLGFBQUEsRUFBQSxVQUFBLEVBQUEsVUFBQSxFQUFBLEtBQUEsRUFBQSxPQUFBLEVBQUEsV0FBQSxFQUFBLE9BQUEsRUFBQSxRQUFBLFFBQUEsZ0JBQUE7QUFnQkEsU0FBQSxXQUFBLFFBQUEsb0JBQUE7QUFFQSxTQUFBLGdCQUFBLEVBQUEseUJBQUEsRUFBQSx3QkFBQSxFQUFBLHdCQUFBLEVBQUEsc0JBQUEsUUFBQSxhQUFBIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgc3ltYm9sRm9yLCBnZXRHbG9iYWwgfSBmcm9tICcuL2xpYi91dGlscyc7XG5cbmNvbnN0IEdMSU1NRVJfVkFMSURBVE9SX1JFR0lTVFJBVElPTiA9IHN5bWJvbEZvcignR0xJTU1FUl9WQUxJREFUT1JfUkVHSVNUUkFUSU9OJyk7XG5cbmNvbnN0IGdsb2JhbE9iaiA9IGdldEdsb2JhbCgpO1xuXG5pZiAoZ2xvYmFsT2JqW0dMSU1NRVJfVkFMSURBVE9SX1JFR0lTVFJBVElPTl0gPT09IHRydWUpIHtcbiAgdGhyb3cgbmV3IEVycm9yKFxuICAgICdUaGUgYEBnbGltbWVyL3ZhbGlkYXRvcmAgbGlicmFyeSBoYXMgYmVlbiBpbmNsdWRlZCB0d2ljZSBpbiB0aGlzIGFwcGxpY2F0aW9uLiBJdCBjb3VsZCBiZSBkaWZmZXJlbnQgdmVyc2lvbnMgb2YgdGhlIHBhY2thZ2UsIG9yIHRoZSBzYW1lIHZlcnNpb24gaW5jbHVkZWQgdHdpY2UgYnkgbWlzdGFrZS4gYEBnbGltbWVyL3ZhbGlkYXRvcmAgZGVwZW5kcyBvbiBoYXZpbmcgYSBzaW5nbGUgY29weSBvZiB0aGUgcGFja2FnZSBpbiB1c2UgYXQgYW55IHRpbWUgaW4gYW4gYXBwbGljYXRpb24sIGV2ZW4gaWYgdGhleSBhcmUgdGhlIHNhbWUgdmVyc2lvbi4gWW91IG11c3QgZGVkdXBlIHlvdXIgYnVpbGQgdG8gcmVtb3ZlIHRoZSBkdXBsaWNhdGUgcGFja2FnZXMgaW4gb3JkZXIgdG8gcHJldmVudCB0aGlzIGVycm9yLidcbiAgKTtcbn1cblxuZ2xvYmFsT2JqW0dMSU1NRVJfVkFMSURBVE9SX1JFR0lTVFJBVElPTl0gPSB0cnVlO1xuXG5leHBvcnQge1xuICBBTExPV19DWUNMRVMsXG4gIGJ1bXAsXG4gIENvbWJpbmF0b3JUYWcsXG4gIGNvbWJpbmUsXG4gIENPTVBVVEUsXG4gIENPTlNUQU5UX1RBRyxcbiAgQ09OU1RBTlQsXG4gIENvbnN0YW50VGFnLFxuICBjcmVhdGVUYWcsXG4gIGNyZWF0ZVVwZGF0YWJsZVRhZyxcbiAgQ3VycmVudFRhZyxcbiAgQ1VSUkVOVF9UQUcsXG4gIERJUlRZX1RBRyBhcyBkaXJ0eVRhZyxcbiAgRGlydHlhYmxlVGFnLFxuICBFbnRpdHlUYWcsXG4gIElOSVRJQUwsXG4gIGlzQ29uc3RUYWcsXG4gIFJldmlzaW9uLFxuICBUYWcsXG4gIFVwZGF0YWJsZVRhZyxcbiAgVVBEQVRFX1RBRyBhcyB1cGRhdGVUYWcsXG4gIHZhbGlkYXRlVGFnLFxuICB2YWx1ZUZvclRhZyxcbiAgVm9sYXRpbGVUYWcsXG4gIFZPTEFUSUxFX1RBRyxcbiAgVk9MQVRJTEUsXG59IGZyb20gJy4vbGliL3ZhbGlkYXRvcnMnO1xuXG5leHBvcnQgeyBkaXJ0eVRhZ0ZvciwgdGFnRm9yLCB0YWdNZXRhRm9yLCBUYWdNZXRhIH0gZnJvbSAnLi9saWIvbWV0YSc7XG5cbmV4cG9ydCB7XG4gIGJlZ2luVHJhY2tGcmFtZSxcbiAgZW5kVHJhY2tGcmFtZSxcbiAgYmVnaW5VbnRyYWNrRnJhbWUsXG4gIGVuZFVudHJhY2tGcmFtZSxcbiAgcmVzZXRUcmFja2luZyxcbiAgY29uc3VtZVRhZyxcbiAgaXNUcmFja2luZyxcbiAgdHJhY2ssXG4gIHVudHJhY2ssXG4gIENhY2hlLFxuICBjcmVhdGVDYWNoZSxcbiAgaXNDb25zdCxcbiAgZ2V0VmFsdWUsXG59IGZyb20gJy4vbGliL3RyYWNraW5nJztcblxuZXhwb3J0IHsgdHJhY2tlZERhdGEgfSBmcm9tICcuL2xpYi90cmFja2VkLWRhdGEnO1xuXG5leHBvcnQge1xuICBsb2dUcmFja2luZ1N0YWNrLFxuICBzZXRUcmFja2luZ1RyYW5zYWN0aW9uRW52LFxuICBydW5JblRyYWNraW5nVHJhbnNhY3Rpb24sXG4gIGJlZ2luVHJhY2tpbmdUcmFuc2FjdGlvbixcbiAgZW5kVHJhY2tpbmdUcmFuc2FjdGlvbixcbn0gZnJvbSAnLi9saWIvZGVidWcnO1xuIl0sInNvdXJjZVJvb3QiOiIifQ==
import { DEBUG } from '@glimmer/env';
import { deprecate, assert } from '@glimmer/global-context';
import { assert } from '@glimmer/global-context';
export var beginTrackingTransaction;
export var endTrackingTransaction;
export var runInTrackingTransaction;
export var deprecateMutationsInTrackingTransaction;
export var resetTrackingTransaction;

@@ -44,7 +43,3 @@ export var setTrackingTransactionEnv;

beginTrackingTransaction = function beginTrackingTransaction(_debugLabel, deprecate) {
if (deprecate === void 0) {
deprecate = false;
}
beginTrackingTransaction = function beginTrackingTransaction(_debugLabel) {
CONSUMED_TAGS = CONSUMED_TAGS || new WeakMap();

@@ -55,4 +50,3 @@ var debugLabel = _debugLabel || undefined;

parent: parent,
debugLabel: debugLabel,
deprecate: deprecate
debugLabel: debugLabel
});

@@ -110,25 +104,3 @@ };

};
/**
* Switches to deprecating within an autotracking transaction, if one exists.
* If `runInAutotrackingTransaction` is called within the callback of this
* method, it switches back to throwing an error, allowing zebra-striping of
* the types of errors that are thrown.
*
* Does not start an autotracking transaction.
*
* NOTE: For Ember usage only, in general you should assert that these
* invariants are true.
*/
deprecateMutationsInTrackingTransaction = function deprecateMutationsInTrackingTransaction(fn, debugLabel) {
beginTrackingTransaction(debugLabel, true);
try {
fn();
} finally {
endTrackingTransaction();
}
};
var nthIndex = function nthIndex(str, pattern, n, startingPos) {

@@ -198,31 +170,23 @@ if (startingPos === void 0) {

var transaction = CONSUMED_TAGS.get(tag);
if (!transaction) return;
var currentTransaction = TRANSACTION_STACK[TRANSACTION_STACK.length - 1];
if (!transaction) return; // This hack makes the assertion message nicer, we can cut off the first
// few lines of the stack trace and let users know where the actual error
// occurred.
if (currentTransaction.deprecate) {
deprecate(makeTrackingErrorMessage(transaction, obj, keyName), false, {
id: 'autotracking.mutation-after-consumption'
});
} else {
// This hack makes the assertion message nicer, we can cut off the first
// few lines of the stack trace and let users know where the actual error
// occurred.
try {
assert(false, makeTrackingErrorMessage(transaction, obj, keyName));
} catch (e) {
if (e.stack) {
var updateStackBegin = e.stack.indexOf('Stack trace for the update:');
try {
assert(false, makeTrackingErrorMessage(transaction, obj, keyName));
} catch (e) {
if (e.stack) {
var updateStackBegin = e.stack.indexOf('Stack trace for the update:');
if (updateStackBegin !== -1) {
var start = nthIndex(e.stack, '\n', 1, updateStackBegin);
var end = nthIndex(e.stack, '\n', 4, updateStackBegin);
e.stack = e.stack.substr(0, start) + e.stack.substr(end);
}
if (updateStackBegin !== -1) {
var start = nthIndex(e.stack, '\n', 1, updateStackBegin);
var end = nthIndex(e.stack, '\n', 4, updateStackBegin);
e.stack = e.stack.substr(0, start) + e.stack.substr(end);
}
}
throw e;
}
throw e;
}
};
}
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL0BnbGltbWVyL3ZhbGlkYXRvci9saWIvZGVidWcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsU0FBQSxLQUFBLFFBQUEsY0FBQTtBQUNBLFNBQUEsU0FBQSxFQUFBLE1BQUEsUUFBQSx5QkFBQTtBQUVBLE9BQU8sSUFBQSx3QkFBQTtBQUdQLE9BQU8sSUFBQSxzQkFBQTtBQUNQLE9BQU8sSUFBQSx3QkFBQTtBQUdQLE9BQU8sSUFBQSx1Q0FBQTtBQUVQLE9BQU8sSUFBQSx3QkFBQTtBQUNQLE9BQU8sSUFBQSx5QkFBQTtBQUlQLE9BQU8sSUFBQSxvQkFBQTs7QUFJQSxJQUFBLGtCQUFBOzs7QUFFUCxPQUFPLElBQUEsZ0JBQUE7O0FBUVAsSUFBQSxLQUFBLEVBQVc7QUFDVCxNQUFJLGFBQWEsR0FBakIsSUFBQTtBQUVBLE1BQUksaUJBQWlCLEdBSFosRUFHVCxDQUhTLENBS1Q7O0FBRUEsTUFBSSxlQUFlLEdBQUc7QUFDcEIsSUFBQSxZQURvQix3QkFDUixHQURRLEVBQ1IsT0FEUSxFQUN3QjtBQUMxQyxVQUFBLE9BQUE7O0FBRUEsVUFBSSxPQUFBLEdBQUEsS0FBSixVQUFBLEVBQStCO0FBQzdCLFFBQUEsT0FBTyxHQUFHLEdBQUcsQ0FBYixJQUFBO0FBREYsT0FBQSxNQUVPLElBQUksT0FBQSxHQUFBLEtBQUEsUUFBQSxJQUEyQixHQUFHLEtBQWxDLElBQUEsRUFBNkM7QUFDbEQsWUFBSSxTQUFTLEdBQUksR0FBRyxDQUFILFdBQUEsSUFBbUIsR0FBRyxDQUFILFdBQUEsQ0FBcEIsSUFBQyxJQUFqQixpQkFBQTtBQUVBLFFBQUEsT0FBTyx3QkFBUCxTQUFPLE1BQVA7QUFISyxPQUFBLE1BSUEsSUFBSSxHQUFHLEtBQVAsU0FBQSxFQUF1QjtBQUM1QixRQUFBLE9BQU8sR0FBUCxrQkFBQTtBQURLLE9BQUEsTUFFQTtBQUNMLFFBQUEsT0FBTyxHQUFHLE1BQU0sQ0FBaEIsR0FBZ0IsQ0FBaEI7QUFDRDs7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QSxFQUF6QixPQUF5QixDQUF6QixFQUFBLEtBQUEsRUFBNkQ7QUFDcEUsUUFBQSxFQUFFLEVBQUU7QUFEZ0UsT0FBN0QsQ0FBVDtBQURGLEtBQUEsTUFJTztBQUNMO0FBQ0E7QUFDQTtBQUNBLFVBQUk7QUFDRixRQUFBLE1BQU0sQ0FBQSxLQUFBLEVBQVEsd0JBQXdCLENBQUEsV0FBQSxFQUFBLEdBQUEsRUFBdEMsT0FBc0MsQ0FBaEMsQ0FBTjtBQURGLE9BQUEsQ0FFRSxPQUFBLENBQUEsRUFBVTtBQUNWLFlBQUksQ0FBQyxDQUFMLEtBQUEsRUFBYTtBQUNYLGNBQUksZ0JBQWdCLEdBQUcsQ0FBQyxDQUFELEtBQUEsQ0FBQSxPQUFBLENBQXZCLDZCQUF1QixDQUF2Qjs7QUFFQSxjQUFJLGdCQUFnQixLQUFLLENBQXpCLENBQUEsRUFBNkI7QUFDM0IsZ0JBQUksS0FBSyxHQUFHLFFBQVEsQ0FBQyxDQUFDLENBQUYsS0FBQSxFQUFBLElBQUEsRUFBQSxDQUFBLEVBQXBCLGdCQUFvQixDQUFwQjtBQUNBLGdCQUFJLEdBQUcsR0FBRyxRQUFRLENBQUMsQ0FBQyxDQUFGLEtBQUEsRUFBQSxJQUFBLEVBQUEsQ0FBQSxFQUFsQixnQkFBa0IsQ0FBbEI7QUFDQSxZQUFBLENBQUMsQ0FBRCxLQUFBLEdBQVUsQ0FBQyxDQUFELEtBQUEsQ0FBQSxNQUFBLENBQUEsQ0FBQSxFQUFBLEtBQUEsSUFBMkIsQ0FBQyxDQUFELEtBQUEsQ0FBQSxNQUFBLENBQXJDLEdBQXFDLENBQXJDO0FBQ0Q7QUFDRjs7QUFFRCxjQUFBLENBQUE7QUFDRDtBQUNGO0FBaENILEdBQUE7QUFrQ0QiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBUYWcgfSBmcm9tICcuL3ZhbGlkYXRvcnMnO1xuaW1wb3J0IHsgREVCVUcgfSBmcm9tICdAZ2xpbW1lci9lbnYnO1xuaW1wb3J0IHsgZGVwcmVjYXRlLCBhc3NlcnQgfSBmcm9tICdAZ2xpbW1lci9nbG9iYWwtY29udGV4dCc7XG5cbmV4cG9ydCBsZXQgYmVnaW5UcmFja2luZ1RyYW5zYWN0aW9uOlxuICB8IHVuZGVmaW5lZFxuICB8ICgoZGVidWdnaW5nQ29udGV4dD86IHN0cmluZyB8IGZhbHNlLCBkZXByZWNhdGU/OiBib29sZWFuKSA9PiB2b2lkKTtcbmV4cG9ydCBsZXQgZW5kVHJhY2tpbmdUcmFuc2FjdGlvbjogdW5kZWZpbmVkIHwgKCgpID0+IHZvaWQpO1xuZXhwb3J0IGxldCBydW5JblRyYWNraW5nVHJhbnNhY3Rpb246XG4gIHwgdW5kZWZpbmVkXG4gIHwgKDxUPihmbjogKCkgPT4gVCwgZGVidWdnaW5nQ29udGV4dD86IHN0cmluZyB8IGZhbHNlKSA9PiBUKTtcbmV4cG9ydCBsZXQgZGVwcmVjYXRlTXV0YXRpb25zSW5UcmFja2luZ1RyYW5zYWN0aW9uOiB1bmRlZmluZWQgfCAoKGZuOiAoKSA9PiB2b2lkKSA9PiB2b2lkKTtcblxuZXhwb3J0IGxldCByZXNldFRyYWNraW5nVHJhbnNhY3Rpb246IHVuZGVmaW5lZCB8ICgoKSA9PiBzdHJpbmcpO1xuZXhwb3J0IGxldCBzZXRUcmFja2luZ1RyYW5zYWN0aW9uRW52OlxuICB8IHVuZGVmaW5lZFxuICB8ICgoZW52OiB7IGRlYnVnTWVzc2FnZT8ob2JqPzogdW5rbm93biwga2V5TmFtZT86IHN0cmluZyk6IHN0cmluZyB9KSA9PiB2b2lkKTtcblxuZXhwb3J0IGxldCBhc3NlcnRUYWdOb3RDb25zdW1lZDpcbiAgfCB1bmRlZmluZWRcbiAgfCAoPFQ+KHRhZzogVGFnLCBvYmo/OiBULCBrZXlOYW1lPzoga2V5b2YgVCB8IHN0cmluZyB8IHN5bWJvbCkgPT4gdm9pZCk7XG5cbmV4cG9ydCBsZXQgbWFya1RhZ0FzQ29uc3VtZWQ6IHVuZGVmaW5lZCB8ICgoX3RhZzogVGFnKSA9PiB2b2lkKTtcblxuZXhwb3J0IGxldCBsb2dUcmFja2luZ1N0YWNrOiB1bmRlZmluZWQgfCAoKHRyYW5zYWN0aW9uPzogVHJhbnNhY3Rpb24pID0+IHN0cmluZyk7XG5cbmludGVyZmFjZSBUcmFuc2FjdGlvbiB7XG4gIHBhcmVudDogVHJhbnNhY3Rpb24gfCBudWxsO1xuICBkZWJ1Z0xhYmVsPzogc3RyaW5nO1xuICBkZXByZWNhdGU6IGJvb2xlYW47XG59XG5cbmlmIChERUJVRykge1xuICBsZXQgQ09OU1VNRURfVEFHUzogV2Vha01hcDxUYWcsIFRyYW5zYWN0aW9uPiB8IG51bGwgPSBudWxsO1xuXG4gIGxldCBUUkFOU0FDVElPTl9TVEFDSzogVHJhbnNhY3Rpb25bXSA9IFtdO1xuXG4gIC8vLy8vLy8vL1xuXG4gIGxldCBUUkFOU0FDVElPTl9FTlYgPSB7XG4gICAgZGVidWdNZXNzYWdlKG9iaj86IHVua25vd24sIGtleU5hbWU/OiBzdHJpbmcpIHtcbiAgICAgIGxldCBvYmpOYW1lO1xuXG4gICAgICBpZiAodHlwZW9mIG9iaiA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICBvYmpOYW1lID0gb2JqLm5hbWU7XG4gICAgICB9IGVsc2UgaWYgKHR5cGVvZiBvYmogPT09ICdvYmplY3QnICYmIG9iaiAhPT0gbnVsbCkge1xuICAgICAgICBsZXQgY2xhc3NOYW1lID0gKG9iai5jb25zdHJ1Y3RvciAmJiBvYmouY29uc3RydWN0b3IubmFtZSkgfHwgJyh1bmtub3duIGNsYXNzKSc7XG5cbiAgICAgICAgb2JqTmFtZSA9IGAoYW4gaW5zdGFuY2Ugb2YgJHtjbGFzc05hbWV9KWA7XG4gICAgICB9IGVsc2UgaWYgKG9iaiA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIG9iak5hbWUgPSAnKGFuIHVua25vd24gdGFnKSc7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBvYmpOYW1lID0gU3RyaW5nKG9iaik7XG4gICAgICB9XG5cbiAgICAgIGxldCBkaXJ0eVN0cmluZyA9IGtleU5hbWUgPyBgXFxgJHtrZXlOYW1lfVxcYCBvbiBcXGAke29iak5hbWV9XFxgYCA6IGBcXGAke29iak5hbWV9XFxgYDtcblxuICAgICAgcmV0dXJuIGBZb3UgYXR0ZW1wdGVkIHRvIHVwZGF0ZSAke2RpcnR5U3RyaW5nfSwgYnV0IGl0IGhhZCBhbHJlYWR5IGJlZW4gdXNlZCBwcmV2aW91c2x5IGluIHRoZSBzYW1lIGNvbXB1dGF0aW9uLiAgQXR0ZW1wdGluZyB0byB1cGRhdGUgYSB2YWx1ZSBhZnRlciB1c2luZyBpdCBpbiBhIGNvbXB1dGF0aW9uIGNhbiBjYXVzZSBsb2dpY2FsIGVycm9ycywgaW5maW5pdGUgcmV2YWxpZGF0aW9uIGJ1Z3MsIGFuZCBwZXJmb3JtYW5jZSBpc3N1ZXMsIGFuZCBpcyBub3Qgc3VwcG9ydGVkLmA7XG4gICAgfSxcbiAgfTtcblxuICBzZXRUcmFja2luZ1RyYW5zYWN0aW9uRW52ID0gKGVudikgPT4gT2JqZWN0LmFzc2lnbihUUkFOU0FDVElPTl9FTlYsIGVudik7XG5cbiAgYmVnaW5UcmFja2luZ1RyYW5zYWN0aW9uID0gKF9kZWJ1Z0xhYmVsPzogc3RyaW5nIHwgZmFsc2UsIGRlcHJlY2F0ZSA9IGZhbHNlKSA9PiB7XG4gICAgQ09OU1VNRURfVEFHUyA9IENPTlNVTUVEX1RBR1MgfHwgbmV3IFdlYWtNYXAoKTtcblxuICAgIGxldCBkZWJ1Z0xhYmVsID0gX2RlYnVnTGFiZWwgfHwgdW5kZWZpbmVkO1xuXG4gICAgbGV0IHBhcmVudCA9IFRSQU5TQUNUSU9OX1NUQUNLW1RSQU5TQUNUSU9OX1NUQUNLLmxlbmd0aCAtIDFdIHx8IG51bGw7XG5cbiAgICBUUkFOU0FDVElPTl9TVEFDSy5wdXNoKHtcbiAgICAgIHBhcmVudCxcbiAgICAgIGRlYnVnTGFiZWwsXG4gICAgICBkZXByZWNhdGUsXG4gICAgfSk7XG4gIH07XG5cbiAgZW5kVHJhY2tpbmdUcmFuc2FjdGlvbiA9ICgpID0+IHtcbiAgICBpZiAoVFJBTlNBQ1RJT05fU1RBQ0subGVuZ3RoID09PSAwKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ2F0dGVtcHRlZCB0byBjbG9zZSBhIHRyYWNraW5nIHRyYW5zYWN0aW9uLCBidXQgb25lIHdhcyBub3Qgb3BlbicpO1xuICAgIH1cblxuICAgIFRSQU5TQUNUSU9OX1NUQUNLLnBvcCgpO1xuXG4gICAgaWYgKFRSQU5TQUNUSU9OX1NUQUNLLmxlbmd0aCA9PT0gMCkge1xuICAgICAgQ09OU1VNRURfVEFHUyA9IG51bGw7XG4gICAgfVxuICB9O1xuXG4gIHJlc2V0VHJhY2tpbmdUcmFuc2FjdGlvbiA9ICgpID0+IHtcbiAgICBsZXQgc3RhY2sgPSAnJztcblxuICAgIGlmIChUUkFOU0FDVElPTl9TVEFDSy5sZW5ndGggPiAwKSB7XG4gICAgICBzdGFjayA9IGxvZ1RyYWNraW5nU3RhY2shKFRSQU5TQUNUSU9OX1NUQUNLW1RSQU5TQUNUSU9OX1NUQUNLLmxlbmd0aCAtIDFdKTtcbiAgICB9XG5cbiAgICBUUkFOU0FDVElPTl9TVEFDSyA9IFtdO1xuICAgIENPTlNVTUVEX1RBR1MgPSBudWxsO1xuXG4gICAgcmV0dXJuIHN0YWNrO1xuICB9O1xuXG4gIC8qKlxuICAgKiBDcmVhdGVzIGEgZ2xvYmFsIGF1dG90cmFja2luZyB0cmFuc2FjdGlvbi4gVGhpcyB3aWxsIHByZXZlbnQgYW55IGJhY2tmbG93XG4gICAqIGluIGFueSBgdHJhY2tgIGNhbGxzIHdpdGhpbiB0aGUgdHJhbnNhY3Rpb24sIGV2ZW4gaWYgdGhleSBhcmUgbm90XG4gICAqIGV4dGVybmFsbHkgY29uc3VtZWQuXG4gICAqXG4gICAqIGBydW5JbkF1dG90cmFja2luZ1RyYW5zYWN0aW9uYCBjYW4gYmUgY2FsbGVkIHdpdGhpbiBpdHNlbGYsIGFuZCBpdCB3aWxsIGFkZFxuICAgKiBvbnRvIHRoZSBleGlzdGluZyB0cmFuc2FjdGlvbiBpZiBvbmUgZXhpc3RzLlxuICAgKlxuICAgKiBUT0RPOiBPbmx5IHRocm93IGFuIGVycm9yIGlmIHRoZSBgdHJhY2tgIGlzIGNvbnN1bWVkLlxuICAgKi9cbiAgcnVuSW5UcmFja2luZ1RyYW5zYWN0aW9uID0gPFQ+KGZuOiAoKSA9PiBULCBkZWJ1Z0xhYmVsPzogc3RyaW5nIHwgZmFsc2UpID0+IHtcbiAgICBiZWdpblRyYWNraW5nVHJhbnNhY3Rpb24hKGRlYnVnTGFiZWwpO1xuICAgIGxldCBkaWRFcnJvciA9IHRydWU7XG5cbiAgICB0cnkge1xuICAgICAgbGV0IHZhbHVlID0gZm4oKTtcbiAgICAgIGRpZEVycm9yID0gZmFsc2U7XG4gICAgICByZXR1cm4gdmFsdWU7XG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIGlmIChkaWRFcnJvciAhPT0gdHJ1ZSkge1xuICAgICAgICBlbmRUcmFja2luZ1RyYW5zYWN0aW9uISgpO1xuICAgICAgfVxuICAgIH1cbiAgfTtcblxuICAvKipcbiAgICogU3dpdGNoZXMgdG8gZGVwcmVjYXRpbmcgd2l0aGluIGFuIGF1dG90cmFja2luZyB0cmFuc2FjdGlvbiwgaWYgb25lIGV4aXN0cy5cbiAgICogSWYgYHJ1bkluQXV0b3RyYWNraW5nVHJhbnNhY3Rpb25gIGlzIGNhbGxlZCB3aXRoaW4gdGhlIGNhbGxiYWNrIG9mIHRoaXNcbiAgICogbWV0aG9kLCBpdCBzd2l0Y2hlcyBiYWNrIHRvIHRocm93aW5nIGFuIGVycm9yLCBhbGxvd2luZyB6ZWJyYS1zdHJpcGluZyBvZlxuICAgKiB0aGUgdHlwZXMgb2YgZXJyb3JzIHRoYXQgYXJlIHRocm93bi5cbiAgICpcbiAgICogRG9lcyBub3Qgc3RhcnQgYW4gYXV0b3RyYWNraW5nIHRyYW5zYWN0aW9uLlxuICAgKlxuICAgKiBOT1RFOiBGb3IgRW1iZXIgdXNhZ2Ugb25seSwgaW4gZ2VuZXJhbCB5b3Ugc2hvdWxkIGFzc2VydCB0aGF0IHRoZXNlXG4gICAqIGludmFyaWFudHMgYXJlIHRydWUuXG4gICAqL1xuICBkZXByZWNhdGVNdXRhdGlvbnNJblRyYWNraW5nVHJhbnNhY3Rpb24gPSAoZm46ICgpID0+IHZvaWQsIGRlYnVnTGFiZWw/OiBzdHJpbmcgfCBmYWxzZSkgPT4ge1xuICAgIGJlZ2luVHJhY2tpbmdUcmFuc2FjdGlvbiEoZGVidWdMYWJlbCwgdHJ1ZSk7XG5cbiAgICB0cnkge1xuICAgICAgZm4oKTtcbiAgICB9IGZpbmFsbHkge1xuICAgICAgZW5kVHJhY2tpbmdUcmFuc2FjdGlvbiEoKTtcbiAgICB9XG4gIH07XG5cbiAgbGV0IG50aEluZGV4ID0gKHN0cjogc3RyaW5nLCBwYXR0ZXJuOiBzdHJpbmcsIG46IG51bWJlciwgc3RhcnRpbmdQb3MgPSAtMSkgPT4ge1xuICAgIGxldCBpID0gc3RhcnRpbmdQb3M7XG5cbiAgICB3aGlsZSAobi0tID4gMCAmJiBpKysgPCBzdHIubGVuZ3RoKSB7XG4gICAgICBpID0gc3RyLmluZGV4T2YocGF0dGVybiwgaSk7XG4gICAgICBpZiAoaSA8IDApIGJyZWFrO1xuICAgIH1cblxuICAgIHJldHVybiBpO1xuICB9O1xuXG4gIGxldCBtYWtlVHJhY2tpbmdFcnJvck1lc3NhZ2UgPSA8VD4oXG4gICAgdHJhbnNhY3Rpb246IFRyYW5zYWN0aW9uLFxuICAgIG9iaj86IFQsXG4gICAga2V5TmFtZT86IGtleW9mIFQgfCBzdHJpbmcgfCBzeW1ib2xcbiAgKSA9PiB7XG4gICAgbGV0IG1lc3NhZ2UgPSBbVFJBTlNBQ1RJT05fRU5WLmRlYnVnTWVzc2FnZShvYmosIGtleU5hbWUgJiYgU3RyaW5nKGtleU5hbWUpKV07XG5cbiAgICBtZXNzYWdlLnB1c2goYFxcYCR7U3RyaW5nKGtleU5hbWUpfVxcYCB3YXMgZmlyc3QgdXNlZDpgKTtcblxuICAgIG1lc3NhZ2UucHVzaChsb2dUcmFja2luZ1N0YWNrISh0cmFuc2FjdGlvbikpO1xuXG4gICAgbWVzc2FnZS5wdXNoKGBTdGFjayB0cmFjZSBmb3IgdGhlIHVwZGF0ZTpgKTtcblxuICAgIHJldHVybiBtZXNzYWdlLmpvaW4oJ1xcblxcbicpO1xuICB9O1xuXG4gIGxvZ1RyYWNraW5nU3RhY2sgPSAodHJhbnNhY3Rpb24/OiBUcmFuc2FjdGlvbikgPT4ge1xuICAgIGxldCB0cmFja2luZ1N0YWNrID0gW107XG4gICAgbGV0IGN1cnJlbnQ6IFRyYW5zYWN0aW9uIHwgbnVsbCB8IHVuZGVmaW5lZCA9XG4gICAgICB0cmFuc2FjdGlvbiB8fCBUUkFOU0FDVElPTl9TVEFDS1tUUkFOU0FDVElPTl9TVEFDSy5sZW5ndGggLSAxXTtcblxuICAgIGlmIChjdXJyZW50ID09PSB1bmRlZmluZWQpIHJldHVybiAnJztcblxuICAgIHdoaWxlIChjdXJyZW50KSB7XG4gICAgICBpZiAoY3VycmVudC5kZWJ1Z0xhYmVsKSB7XG4gICAgICAgIHRyYWNraW5nU3RhY2sudW5zaGlmdChjdXJyZW50LmRlYnVnTGFiZWwpO1xuICAgICAgfVxuXG4gICAgICBjdXJyZW50ID0gY3VycmVudC5wYXJlbnQ7XG4gICAgfVxuXG4gICAgLy8gVE9ETzogVXNlIFN0cmluZy5wcm90b3R5cGUucmVwZWF0IGhlcmUgb25jZSB3ZSBjYW4gZHJvcCBzdXBwb3J0IGZvciBJRTExXG4gICAgcmV0dXJuIHRyYWNraW5nU3RhY2subWFwKChsYWJlbCwgaW5kZXgpID0+IEFycmF5KDIgKiBpbmRleCArIDEpLmpvaW4oJyAnKSArIGxhYmVsKS5qb2luKCdcXG4nKTtcbiAgfTtcblxuICBtYXJrVGFnQXNDb25zdW1lZCA9IChfdGFnOiBUYWcpID0+IHtcbiAgICBpZiAoIUNPTlNVTUVEX1RBR1MgfHwgQ09OU1VNRURfVEFHUy5oYXMoX3RhZykpIHJldHVybjtcblxuICAgIENPTlNVTUVEX1RBR1Muc2V0KF90YWcsIFRSQU5TQUNUSU9OX1NUQUNLW1RSQU5TQUNUSU9OX1NUQUNLLmxlbmd0aCAtIDFdKTtcblxuICAgIC8vIFdlIG5lZWQgdG8gbWFyayB0aGUgdGFnIGFuZCBhbGwgb2YgaXRzIHN1YnRhZ3MgYXMgY29uc3VtZWQsIHNvIHdlIG5lZWQgdG9cbiAgICAvLyBjYXN0IGl0IGFuZCBhY2Nlc3MgaXRzIGludGVybmFscy4gSW4gdGhlIGZ1dHVyZSB0aGlzIHNob3VsZG4ndCBiZSBuZWNlc3NhcnksXG4gICAgLy8gdGhpcyBpcyBvbmx5IGZvciBjb21wdXRlZCBwcm9wZXJ0aWVzLlxuICAgIGxldCB0YWcgPSBfdGFnIGFzIGFueTtcblxuICAgIGlmICh0YWcuc3VidGFnKSB7XG4gICAgICBtYXJrVGFnQXNDb25zdW1lZCEodGFnLnN1YnRhZyk7XG4gICAgfVxuXG4gICAgaWYgKHRhZy5zdWJ0YWdzKSB7XG4gICAgICB0YWcuc3VidGFncy5mb3JFYWNoKCh0YWc6IFRhZykgPT4gbWFya1RhZ0FzQ29uc3VtZWQhKHRhZykpO1xuICAgIH1cbiAgfTtcblxuICBhc3NlcnRUYWdOb3RDb25zdW1lZCA9IDxUPih0YWc6IFRhZywgb2JqPzogVCwga2V5TmFtZT86IGtleW9mIFQgfCBzdHJpbmcgfCBzeW1ib2wpID0+IHtcbiAgICBpZiAoQ09OU1VNRURfVEFHUyA9PT0gbnVsbCkgcmV0dXJuO1xuXG4gICAgbGV0IHRyYW5zYWN0aW9uID0gQ09OU1VNRURfVEFHUy5nZXQodGFnKTtcblxuICAgIGlmICghdHJhbnNhY3Rpb24pIHJldHVybjtcblxuICAgIGxldCBjdXJyZW50VHJhbnNhY3Rpb24gPSBUUkFOU0FDVElPTl9TVEFDS1tUUkFOU0FDVElPTl9TVEFDSy5sZW5ndGggLSAxXTtcblxuICAgIGlmIChjdXJyZW50VHJhbnNhY3Rpb24uZGVwcmVjYXRlKSB7XG4gICAgICBkZXByZWNhdGUobWFrZVRyYWNraW5nRXJyb3JNZXNzYWdlKHRyYW5zYWN0aW9uLCBvYmosIGtleU5hbWUpLCBmYWxzZSwge1xuICAgICAgICBpZDogJ2F1dG90cmFja2luZy5tdXRhdGlvbi1hZnRlci1jb25zdW1wdGlvbicsXG4gICAgICB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gVGhpcyBoYWNrIG1ha2VzIHRoZSBhc3NlcnRpb24gbWVzc2FnZSBuaWNlciwgd2UgY2FuIGN1dCBvZmYgdGhlIGZpcnN0XG4gICAgICAvLyBmZXcgbGluZXMgb2YgdGhlIHN0YWNrIHRyYWNlIGFuZCBsZXQgdXNlcnMga25vdyB3aGVyZSB0aGUgYWN0dWFsIGVycm9yXG4gICAgICAvLyBvY2N1cnJlZC5cbiAgICAgIHRyeSB7XG4gICAgICAgIGFzc2VydChmYWxzZSwgbWFrZVRyYWNraW5nRXJyb3JNZXNzYWdlKHRyYW5zYWN0aW9uLCBvYmosIGtleU5hbWUpKTtcbiAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgaWYgKGUuc3RhY2spIHtcbiAgICAgICAgICBsZXQgdXBkYXRlU3RhY2tCZWdpbiA9IGUuc3RhY2suaW5kZXhPZignU3RhY2sgdHJhY2UgZm9yIHRoZSB1cGRhdGU6Jyk7XG5cbiAgICAgICAgICBpZiAodXBkYXRlU3RhY2tCZWdpbiAhPT0gLTEpIHtcbiAgICAgICAgICAgIGxldCBzdGFydCA9IG50aEluZGV4KGUuc3RhY2ssICdcXG4nLCAxLCB1cGRhdGVTdGFja0JlZ2luKTtcbiAgICAgICAgICAgIGxldCBlbmQgPSBudGhJbmRleChlLnN0YWNrLCAnXFxuJywgNCwgdXBkYXRlU3RhY2tCZWdpbik7XG4gICAgICAgICAgICBlLnN0YWNrID0gZS5zdGFjay5zdWJzdHIoMCwgc3RhcnQpICsgZS5zdGFjay5zdWJzdHIoZW5kKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICB0aHJvdyBlO1xuICAgICAgfVxuICAgIH1cbiAgfTtcbn1cbiJdLCJzb3VyY2VSb290IjoiIn0=
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL0BnbGltbWVyL3ZhbGlkYXRvci9saWIvZGVidWcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsU0FBQSxLQUFBLFFBQUEsY0FBQTtBQUNBLFNBQUEsTUFBQSxRQUFBLHlCQUFBO0FBRUEsT0FBTyxJQUFBLHdCQUFBO0FBR1AsT0FBTyxJQUFBLHNCQUFBO0FBQ1AsT0FBTyxJQUFBLHdCQUFBO0FBSVAsT0FBTyxJQUFBLHdCQUFBO0FBQ1AsT0FBTyxJQUFBLHlCQUFBO0FBSVAsT0FBTyxJQUFBLG9CQUFBOztBQUlBLElBQUEsa0JBQUE7OztBQUVQLE9BQU8sSUFBQSxnQkFBQTs7QUFPUCxJQUFBLEtBQUEsRUFBVztBQUNULE1BQUksYUFBYSxHQUFqQixJQUFBO0FBRUEsTUFBSSxpQkFBaUIsR0FIWixFQUdULENBSFMsQ0FLVDs7QUFFQSxNQUFJLGVBQWUsR0FBRztBQUNwQixJQUFBLFlBRG9CLHdCQUNSLEdBRFEsRUFDUixPQURRLEVBQ3dCO0FBQzFDLFVBQUEsT0FBQTs7QUFFQSxVQUFJLE9BQUEsR0FBQSxLQUFKLFVBQUEsRUFBK0I7QUFDN0IsUUFBQSxPQUFPLEdBQUcsR0FBRyxDQUFiLElBQUE7QUFERixPQUFBLE1BRU8sSUFBSSxPQUFBLEdBQUEsS0FBQSxRQUFBLElBQTJCLEdBQUcsS0FBbEMsSUFBQSxFQUE2QztBQUNsRCxZQUFJLFNBQVMsR0FBSSxHQUFHLENBQUgsV0FBQSxJQUFtQixHQUFHLENBQUgsV0FBQSxDQUFwQixJQUFDLElBQWpCLGlCQUFBO0FBRUEsUUFBQSxPQUFPLHdCQUFQLFNBQU8sTUFBUDtBQUhLLE9BQUEsTUFJQSxJQUFJLEdBQUcsS0FBUCxTQUFBLEVBQXVCO0FBQzVCLFFBQUEsT0FBTyxHQUFQLGtCQUFBO0FBREssT0FBQSxNQUVBO0FBQ0wsUUFBQSxPQUFPLEdBQUcsTUFBTSxDQUFoQixHQUFnQixDQUFoQjtBQUNEOztBQUVELFVBQUksV0FBVyxHQUFHLE9BQU8sU0FBUSxP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Q0FBRCxLQUFBLEdBQVUsQ0FBQyxDQUFELEtBQUEsQ0FBQSxNQUFBLENBQUEsQ0FBQSxFQUFBLEtBQUEsSUFBMkIsQ0FBQyxDQUFELEtBQUEsQ0FBQSxNQUFBLENBQXJDLEdBQXFDLENBQXJDO0FBQ0Q7QUFDRjs7QUFFRCxZQUFBLENBQUE7QUFDRDtBQXhCSCxHQUFBO0FBMEJEIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgVGFnIH0gZnJvbSAnLi92YWxpZGF0b3JzJztcbmltcG9ydCB7IERFQlVHIH0gZnJvbSAnQGdsaW1tZXIvZW52JztcbmltcG9ydCB7IGFzc2VydCB9IGZyb20gJ0BnbGltbWVyL2dsb2JhbC1jb250ZXh0JztcblxuZXhwb3J0IGxldCBiZWdpblRyYWNraW5nVHJhbnNhY3Rpb246XG4gIHwgdW5kZWZpbmVkXG4gIHwgKChkZWJ1Z2dpbmdDb250ZXh0Pzogc3RyaW5nIHwgZmFsc2UsIGRlcHJlY2F0ZT86IGJvb2xlYW4pID0+IHZvaWQpO1xuZXhwb3J0IGxldCBlbmRUcmFja2luZ1RyYW5zYWN0aW9uOiB1bmRlZmluZWQgfCAoKCkgPT4gdm9pZCk7XG5leHBvcnQgbGV0IHJ1bkluVHJhY2tpbmdUcmFuc2FjdGlvbjpcbiAgfCB1bmRlZmluZWRcbiAgfCAoPFQ+KGZuOiAoKSA9PiBULCBkZWJ1Z2dpbmdDb250ZXh0Pzogc3RyaW5nIHwgZmFsc2UpID0+IFQpO1xuXG5leHBvcnQgbGV0IHJlc2V0VHJhY2tpbmdUcmFuc2FjdGlvbjogdW5kZWZpbmVkIHwgKCgpID0+IHN0cmluZyk7XG5leHBvcnQgbGV0IHNldFRyYWNraW5nVHJhbnNhY3Rpb25FbnY6XG4gIHwgdW5kZWZpbmVkXG4gIHwgKChlbnY6IHsgZGVidWdNZXNzYWdlPyhvYmo/OiB1bmtub3duLCBrZXlOYW1lPzogc3RyaW5nKTogc3RyaW5nIH0pID0+IHZvaWQpO1xuXG5leHBvcnQgbGV0IGFzc2VydFRhZ05vdENvbnN1bWVkOlxuICB8IHVuZGVmaW5lZFxuICB8ICg8VD4odGFnOiBUYWcsIG9iaj86IFQsIGtleU5hbWU/OiBrZXlvZiBUIHwgc3RyaW5nIHwgc3ltYm9sKSA9PiB2b2lkKTtcblxuZXhwb3J0IGxldCBtYXJrVGFnQXNDb25zdW1lZDogdW5kZWZpbmVkIHwgKChfdGFnOiBUYWcpID0+IHZvaWQpO1xuXG5leHBvcnQgbGV0IGxvZ1RyYWNraW5nU3RhY2s6IHVuZGVmaW5lZCB8ICgodHJhbnNhY3Rpb24/OiBUcmFuc2FjdGlvbikgPT4gc3RyaW5nKTtcblxuaW50ZXJmYWNlIFRyYW5zYWN0aW9uIHtcbiAgcGFyZW50OiBUcmFuc2FjdGlvbiB8IG51bGw7XG4gIGRlYnVnTGFiZWw/OiBzdHJpbmc7XG59XG5cbmlmIChERUJVRykge1xuICBsZXQgQ09OU1VNRURfVEFHUzogV2Vha01hcDxUYWcsIFRyYW5zYWN0aW9uPiB8IG51bGwgPSBudWxsO1xuXG4gIGxldCBUUkFOU0FDVElPTl9TVEFDSzogVHJhbnNhY3Rpb25bXSA9IFtdO1xuXG4gIC8vLy8vLy8vL1xuXG4gIGxldCBUUkFOU0FDVElPTl9FTlYgPSB7XG4gICAgZGVidWdNZXNzYWdlKG9iaj86IHVua25vd24sIGtleU5hbWU/OiBzdHJpbmcpIHtcbiAgICAgIGxldCBvYmpOYW1lO1xuXG4gICAgICBpZiAodHlwZW9mIG9iaiA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICBvYmpOYW1lID0gb2JqLm5hbWU7XG4gICAgICB9IGVsc2UgaWYgKHR5cGVvZiBvYmogPT09ICdvYmplY3QnICYmIG9iaiAhPT0gbnVsbCkge1xuICAgICAgICBsZXQgY2xhc3NOYW1lID0gKG9iai5jb25zdHJ1Y3RvciAmJiBvYmouY29uc3RydWN0b3IubmFtZSkgfHwgJyh1bmtub3duIGNsYXNzKSc7XG5cbiAgICAgICAgb2JqTmFtZSA9IGAoYW4gaW5zdGFuY2Ugb2YgJHtjbGFzc05hbWV9KWA7XG4gICAgICB9IGVsc2UgaWYgKG9iaiA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIG9iak5hbWUgPSAnKGFuIHVua25vd24gdGFnKSc7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBvYmpOYW1lID0gU3RyaW5nKG9iaik7XG4gICAgICB9XG5cbiAgICAgIGxldCBkaXJ0eVN0cmluZyA9IGtleU5hbWUgPyBgXFxgJHtrZXlOYW1lfVxcYCBvbiBcXGAke29iak5hbWV9XFxgYCA6IGBcXGAke29iak5hbWV9XFxgYDtcblxuICAgICAgcmV0dXJuIGBZb3UgYXR0ZW1wdGVkIHRvIHVwZGF0ZSAke2RpcnR5U3RyaW5nfSwgYnV0IGl0IGhhZCBhbHJlYWR5IGJlZW4gdXNlZCBwcmV2aW91c2x5IGluIHRoZSBzYW1lIGNvbXB1dGF0aW9uLiAgQXR0ZW1wdGluZyB0byB1cGRhdGUgYSB2YWx1ZSBhZnRlciB1c2luZyBpdCBpbiBhIGNvbXB1dGF0aW9uIGNhbiBjYXVzZSBsb2dpY2FsIGVycm9ycywgaW5maW5pdGUgcmV2YWxpZGF0aW9uIGJ1Z3MsIGFuZCBwZXJmb3JtYW5jZSBpc3N1ZXMsIGFuZCBpcyBub3Qgc3VwcG9ydGVkLmA7XG4gICAgfSxcbiAgfTtcblxuICBzZXRUcmFja2luZ1RyYW5zYWN0aW9uRW52ID0gKGVudikgPT4gT2JqZWN0LmFzc2lnbihUUkFOU0FDVElPTl9FTlYsIGVudik7XG5cbiAgYmVnaW5UcmFja2luZ1RyYW5zYWN0aW9uID0gKF9kZWJ1Z0xhYmVsPzogc3RyaW5nIHwgZmFsc2UpID0+IHtcbiAgICBDT05TVU1FRF9UQUdTID0gQ09OU1VNRURfVEFHUyB8fCBuZXcgV2Vha01hcCgpO1xuXG4gICAgbGV0IGRlYnVnTGFiZWwgPSBfZGVidWdMYWJlbCB8fCB1bmRlZmluZWQ7XG5cbiAgICBsZXQgcGFyZW50ID0gVFJBTlNBQ1RJT05fU1RBQ0tbVFJBTlNBQ1RJT05fU1RBQ0subGVuZ3RoIC0gMV0gfHwgbnVsbDtcblxuICAgIFRSQU5TQUNUSU9OX1NUQUNLLnB1c2goe1xuICAgICAgcGFyZW50LFxuICAgICAgZGVidWdMYWJlbCxcbiAgICB9KTtcbiAgfTtcblxuICBlbmRUcmFja2luZ1RyYW5zYWN0aW9uID0gKCkgPT4ge1xuICAgIGlmIChUUkFOU0FDVElPTl9TVEFDSy5sZW5ndGggPT09IDApIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignYXR0ZW1wdGVkIHRvIGNsb3NlIGEgdHJhY2tpbmcgdHJhbnNhY3Rpb24sIGJ1dCBvbmUgd2FzIG5vdCBvcGVuJyk7XG4gICAgfVxuXG4gICAgVFJBTlNBQ1RJT05fU1RBQ0sucG9wKCk7XG5cbiAgICBpZiAoVFJBTlNBQ1RJT05fU1RBQ0subGVuZ3RoID09PSAwKSB7XG4gICAgICBDT05TVU1FRF9UQUdTID0gbnVsbDtcbiAgICB9XG4gIH07XG5cbiAgcmVzZXRUcmFja2luZ1RyYW5zYWN0aW9uID0gKCkgPT4ge1xuICAgIGxldCBzdGFjayA9ICcnO1xuXG4gICAgaWYgKFRSQU5TQUNUSU9OX1NUQUNLLmxlbmd0aCA+IDApIHtcbiAgICAgIHN0YWNrID0gbG9nVHJhY2tpbmdTdGFjayEoVFJBTlNBQ1RJT05fU1RBQ0tbVFJBTlNBQ1RJT05fU1RBQ0subGVuZ3RoIC0gMV0pO1xuICAgIH1cblxuICAgIFRSQU5TQUNUSU9OX1NUQUNLID0gW107XG4gICAgQ09OU1VNRURfVEFHUyA9IG51bGw7XG5cbiAgICByZXR1cm4gc3RhY2s7XG4gIH07XG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgYSBnbG9iYWwgYXV0b3RyYWNraW5nIHRyYW5zYWN0aW9uLiBUaGlzIHdpbGwgcHJldmVudCBhbnkgYmFja2Zsb3dcbiAgICogaW4gYW55IGB0cmFja2AgY2FsbHMgd2l0aGluIHRoZSB0cmFuc2FjdGlvbiwgZXZlbiBpZiB0aGV5IGFyZSBub3RcbiAgICogZXh0ZXJuYWxseSBjb25zdW1lZC5cbiAgICpcbiAgICogYHJ1bkluQXV0b3RyYWNraW5nVHJhbnNhY3Rpb25gIGNhbiBiZSBjYWxsZWQgd2l0aGluIGl0c2VsZiwgYW5kIGl0IHdpbGwgYWRkXG4gICAqIG9udG8gdGhlIGV4aXN0aW5nIHRyYW5zYWN0aW9uIGlmIG9uZSBleGlzdHMuXG4gICAqXG4gICAqIFRPRE86IE9ubHkgdGhyb3cgYW4gZXJyb3IgaWYgdGhlIGB0cmFja2AgaXMgY29uc3VtZWQuXG4gICAqL1xuICBydW5JblRyYWNraW5nVHJhbnNhY3Rpb24gPSA8VD4oZm46ICgpID0+IFQsIGRlYnVnTGFiZWw/OiBzdHJpbmcgfCBmYWxzZSkgPT4ge1xuICAgIGJlZ2luVHJhY2tpbmdUcmFuc2FjdGlvbiEoZGVidWdMYWJlbCk7XG4gICAgbGV0IGRpZEVycm9yID0gdHJ1ZTtcblxuICAgIHRyeSB7XG4gICAgICBsZXQgdmFsdWUgPSBmbigpO1xuICAgICAgZGlkRXJyb3IgPSBmYWxzZTtcbiAgICAgIHJldHVybiB2YWx1ZTtcbiAgICB9IGZpbmFsbHkge1xuICAgICAgaWYgKGRpZEVycm9yICE9PSB0cnVlKSB7XG4gICAgICAgIGVuZFRyYWNraW5nVHJhbnNhY3Rpb24hKCk7XG4gICAgICB9XG4gICAgfVxuICB9O1xuXG4gIGxldCBudGhJbmRleCA9IChzdHI6IHN0cmluZywgcGF0dGVybjogc3RyaW5nLCBuOiBudW1iZXIsIHN0YXJ0aW5nUG9zID0gLTEpID0+IHtcbiAgICBsZXQgaSA9IHN0YXJ0aW5nUG9zO1xuXG4gICAgd2hpbGUgKG4tLSA+IDAgJiYgaSsrIDwgc3RyLmxlbmd0aCkge1xuICAgICAgaSA9IHN0ci5pbmRleE9mKHBhdHRlcm4sIGkpO1xuICAgICAgaWYgKGkgPCAwKSBicmVhaztcbiAgICB9XG5cbiAgICByZXR1cm4gaTtcbiAgfTtcblxuICBsZXQgbWFrZVRyYWNraW5nRXJyb3JNZXNzYWdlID0gPFQ+KFxuICAgIHRyYW5zYWN0aW9uOiBUcmFuc2FjdGlvbixcbiAgICBvYmo/OiBULFxuICAgIGtleU5hbWU/OiBrZXlvZiBUIHwgc3RyaW5nIHwgc3ltYm9sXG4gICkgPT4ge1xuICAgIGxldCBtZXNzYWdlID0gW1RSQU5TQUNUSU9OX0VOVi5kZWJ1Z01lc3NhZ2Uob2JqLCBrZXlOYW1lICYmIFN0cmluZyhrZXlOYW1lKSldO1xuXG4gICAgbWVzc2FnZS5wdXNoKGBcXGAke1N0cmluZyhrZXlOYW1lKX1cXGAgd2FzIGZpcnN0IHVzZWQ6YCk7XG5cbiAgICBtZXNzYWdlLnB1c2gobG9nVHJhY2tpbmdTdGFjayEodHJhbnNhY3Rpb24pKTtcblxuICAgIG1lc3NhZ2UucHVzaChgU3RhY2sgdHJhY2UgZm9yIHRoZSB1cGRhdGU6YCk7XG5cbiAgICByZXR1cm4gbWVzc2FnZS5qb2luKCdcXG5cXG4nKTtcbiAgfTtcblxuICBsb2dUcmFja2luZ1N0YWNrID0gKHRyYW5zYWN0aW9uPzogVHJhbnNhY3Rpb24pID0+IHtcbiAgICBsZXQgdHJhY2tpbmdTdGFjayA9IFtdO1xuICAgIGxldCBjdXJyZW50OiBUcmFuc2FjdGlvbiB8IG51bGwgfCB1bmRlZmluZWQgPVxuICAgICAgdHJhbnNhY3Rpb24gfHwgVFJBTlNBQ1RJT05fU1RBQ0tbVFJBTlNBQ1RJT05fU1RBQ0subGVuZ3RoIC0gMV07XG5cbiAgICBpZiAoY3VycmVudCA9PT0gdW5kZWZpbmVkKSByZXR1cm4gJyc7XG5cbiAgICB3aGlsZSAoY3VycmVudCkge1xuICAgICAgaWYgKGN1cnJlbnQuZGVidWdMYWJlbCkge1xuICAgICAgICB0cmFja2luZ1N0YWNrLnVuc2hpZnQoY3VycmVudC5kZWJ1Z0xhYmVsKTtcbiAgICAgIH1cblxuICAgICAgY3VycmVudCA9IGN1cnJlbnQucGFyZW50O1xuICAgIH1cblxuICAgIC8vIFRPRE86IFVzZSBTdHJpbmcucHJvdG90eXBlLnJlcGVhdCBoZXJlIG9uY2Ugd2UgY2FuIGRyb3Agc3VwcG9ydCBmb3IgSUUxMVxuICAgIHJldHVybiB0cmFja2luZ1N0YWNrLm1hcCgobGFiZWwsIGluZGV4KSA9PiBBcnJheSgyICogaW5kZXggKyAxKS5qb2luKCcgJykgKyBsYWJlbCkuam9pbignXFxuJyk7XG4gIH07XG5cbiAgbWFya1RhZ0FzQ29uc3VtZWQgPSAoX3RhZzogVGFnKSA9PiB7XG4gICAgaWYgKCFDT05TVU1FRF9UQUdTIHx8IENPTlNVTUVEX1RBR1MuaGFzKF90YWcpKSByZXR1cm47XG5cbiAgICBDT05TVU1FRF9UQUdTLnNldChfdGFnLCBUUkFOU0FDVElPTl9TVEFDS1tUUkFOU0FDVElPTl9TVEFDSy5sZW5ndGggLSAxXSk7XG5cbiAgICAvLyBXZSBuZWVkIHRvIG1hcmsgdGhlIHRhZyBhbmQgYWxsIG9mIGl0cyBzdWJ0YWdzIGFzIGNvbnN1bWVkLCBzbyB3ZSBuZWVkIHRvXG4gICAgLy8gY2FzdCBpdCBhbmQgYWNjZXNzIGl0cyBpbnRlcm5hbHMuIEluIHRoZSBmdXR1cmUgdGhpcyBzaG91bGRuJ3QgYmUgbmVjZXNzYXJ5LFxuICAgIC8vIHRoaXMgaXMgb25seSBmb3IgY29tcHV0ZWQgcHJvcGVydGllcy5cbiAgICBsZXQgdGFnID0gX3RhZyBhcyBhbnk7XG5cbiAgICBpZiAodGFnLnN1YnRhZykge1xuICAgICAgbWFya1RhZ0FzQ29uc3VtZWQhKHRhZy5zdWJ0YWcpO1xuICAgIH1cblxuICAgIGlmICh0YWcuc3VidGFncykge1xuICAgICAgdGFnLnN1YnRhZ3MuZm9yRWFjaCgodGFnOiBUYWcpID0+IG1hcmtUYWdBc0NvbnN1bWVkISh0YWcpKTtcbiAgICB9XG4gIH07XG5cbiAgYXNzZXJ0VGFnTm90Q29uc3VtZWQgPSA8VD4odGFnOiBUYWcsIG9iaj86IFQsIGtleU5hbWU/OiBrZXlvZiBUIHwgc3RyaW5nIHwgc3ltYm9sKSA9PiB7XG4gICAgaWYgKENPTlNVTUVEX1RBR1MgPT09IG51bGwpIHJldHVybjtcblxuICAgIGxldCB0cmFuc2FjdGlvbiA9IENPTlNVTUVEX1RBR1MuZ2V0KHRhZyk7XG5cbiAgICBpZiAoIXRyYW5zYWN0aW9uKSByZXR1cm47XG5cbiAgICAvLyBUaGlzIGhhY2sgbWFrZXMgdGhlIGFzc2VydGlvbiBtZXNzYWdlIG5pY2VyLCB3ZSBjYW4gY3V0IG9mZiB0aGUgZmlyc3RcbiAgICAvLyBmZXcgbGluZXMgb2YgdGhlIHN0YWNrIHRyYWNlIGFuZCBsZXQgdXNlcnMga25vdyB3aGVyZSB0aGUgYWN0dWFsIGVycm9yXG4gICAgLy8gb2NjdXJyZWQuXG4gICAgdHJ5IHtcbiAgICAgIGFzc2VydChmYWxzZSwgbWFrZVRyYWNraW5nRXJyb3JNZXNzYWdlKHRyYW5zYWN0aW9uLCBvYmosIGtleU5hbWUpKTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICBpZiAoZS5zdGFjaykge1xuICAgICAgICBsZXQgdXBkYXRlU3RhY2tCZWdpbiA9IGUuc3RhY2suaW5kZXhPZignU3RhY2sgdHJhY2UgZm9yIHRoZSB1cGRhdGU6Jyk7XG5cbiAgICAgICAgaWYgKHVwZGF0ZVN0YWNrQmVnaW4gIT09IC0xKSB7XG4gICAgICAgICAgbGV0IHN0YXJ0ID0gbnRoSW5kZXgoZS5zdGFjaywgJ1xcbicsIDEsIHVwZGF0ZVN0YWNrQmVnaW4pO1xuICAgICAgICAgIGxldCBlbmQgPSBudGhJbmRleChlLnN0YWNrLCAnXFxuJywgNCwgdXBkYXRlU3RhY2tCZWdpbik7XG4gICAgICAgICAgZS5zdGFjayA9IGUuc3RhY2suc3Vic3RyKDAsIHN0YXJ0KSArIGUuc3RhY2suc3Vic3RyKGVuZCk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgdGhyb3cgZTtcbiAgICB9XG4gIH07XG59XG4iXSwic291cmNlUm9vdCI6IiJ9

@@ -5,3 +5,3 @@ export { ALLOW_CYCLES, bump, CombinatorTag, combine, COMPUTE, CONSTANT_TAG, CONSTANT, ConstantTag, createTag, createUpdatableTag, CurrentTag, CURRENT_TAG, DIRTY_TAG as dirtyTag, DirtyableTag, EntityTag, INITIAL, isConstTag, Revision, Tag, UpdatableTag, UPDATE_TAG as updateTag, validateTag, valueForTag, VolatileTag, VOLATILE_TAG, VOLATILE, } from './lib/validators';

export { trackedData } from './lib/tracked-data';
export { logTrackingStack, setTrackingTransactionEnv, runInTrackingTransaction, beginTrackingTransaction, endTrackingTransaction, deprecateMutationsInTrackingTransaction, } from './lib/debug';
export { logTrackingStack, setTrackingTransactionEnv, runInTrackingTransaction, beginTrackingTransaction, endTrackingTransaction, } from './lib/debug';
//# sourceMappingURL=index.d.ts.map

@@ -5,3 +5,2 @@ import { Tag } from './validators';

export declare let runInTrackingTransaction: undefined | (<T>(fn: () => T, debuggingContext?: string | false) => T);
export declare let deprecateMutationsInTrackingTransaction: undefined | ((fn: () => void) => void);
export declare let resetTrackingTransaction: undefined | (() => string);

@@ -17,5 +16,4 @@ export declare let setTrackingTransactionEnv: undefined | ((env: {

debugLabel?: string;
deprecate: boolean;
}
export {};
//# sourceMappingURL=debug.d.ts.map
{
"name": "@glimmer/validator",
"version": "0.80.0",
"version": "0.81.0",
"description": "Objects used to track values and their dirtiness in Glimmer",

@@ -13,3 +13,3 @@ "license": "MIT",

"@glimmer/env": "^0.1.7",
"@glimmer/global-context": "0.80.0"
"@glimmer/global-context": "0.81.0"
},

@@ -16,0 +16,0 @@ "main": "dist/commonjs/es2017/index.js",

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

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

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