Socket
Socket
Sign inDemoInstall

@glimmer/manager

Package Overview
Dependencies
Maintainers
12
Versions
73
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@glimmer/manager - npm Package Compare versions

Comparing version 0.68.0 to 0.68.1

12

dist/commonjs/es2017/index.js

@@ -138,8 +138,14 @@ "use strict";

});
Object.defineProperty(exports, "CUSTOM_TAG_FOR", {
Object.defineProperty(exports, "getCustomTagFor", {
enumerable: true,
get: function () {
return _argsProxy.CUSTOM_TAG_FOR;
return _argsProxy.getCustomTagFor;
}
});
Object.defineProperty(exports, "setCustomTagFor", {
enumerable: true,
get: function () {
return _argsProxy.setCustomTagFor;
}
});

@@ -161,2 +167,2 @@ var _index = require("./lib/internal/index");

var _argsProxy = require("./lib/util/args-proxy");
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3BhY2thZ2VzL0BnbGltbWVyL21hbmFnZXIvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7O0FBUUE7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0EiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQge1xuICBzZXRJbnRlcm5hbEhlbHBlck1hbmFnZXIsXG4gIHNldEludGVybmFsTW9kaWZpZXJNYW5hZ2VyLFxuICBzZXRJbnRlcm5hbENvbXBvbmVudE1hbmFnZXIsXG4gIGdldEludGVybmFsSGVscGVyTWFuYWdlcixcbiAgZ2V0SW50ZXJuYWxNb2RpZmllck1hbmFnZXIsXG4gIGdldEludGVybmFsQ29tcG9uZW50TWFuYWdlcixcbn0gZnJvbSAnLi9saWIvaW50ZXJuYWwvaW5kZXgnO1xuZXhwb3J0IHsgc2V0SGVscGVyTWFuYWdlciwgc2V0TW9kaWZpZXJNYW5hZ2VyLCBzZXRDb21wb25lbnRNYW5hZ2VyIH0gZnJvbSAnLi9saWIvcHVibGljL2luZGV4JztcbmV4cG9ydCB7IGNvbXBvbmVudENhcGFiaWxpdGllcywgQ3VzdG9tQ29tcG9uZW50TWFuYWdlciB9IGZyb20gJy4vbGliL3B1YmxpYy9jb21wb25lbnQnO1xuZXhwb3J0IHsgbW9kaWZpZXJDYXBhYmlsaXRpZXMsIEN1c3RvbU1vZGlmaWVyTWFuYWdlciB9IGZyb20gJy4vbGliL3B1YmxpYy9tb2RpZmllcic7XG5leHBvcnQgeyBoZWxwZXJDYXBhYmlsaXRpZXMsIGhhc0Rlc3Ryb3lhYmxlLCBoYXNWYWx1ZSwgY3VzdG9tSGVscGVyIH0gZnJvbSAnLi9saWIvcHVibGljL2hlbHBlcic7XG5leHBvcnQgeyBnZXRDb21wb25lbnRUZW1wbGF0ZSwgc2V0Q29tcG9uZW50VGVtcGxhdGUgfSBmcm9tICcuL2xpYi9wdWJsaWMvdGVtcGxhdGUnO1xuZXhwb3J0IHsgY2FwYWJpbGl0eUZsYWdzRnJvbSwgaGFzQ2FwYWJpbGl0eSwgbWFuYWdlckhhc0NhcGFiaWxpdHkgfSBmcm9tICcuL2xpYi91dGlsL2NhcGFiaWxpdGllcyc7XG5leHBvcnQgeyBDVVNUT01fVEFHX0ZPUiB9IGZyb20gJy4vbGliL3V0aWwvYXJncy1wcm94eSc7XG4iXSwic291cmNlUm9vdCI6IiJ9
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3BhY2thZ2VzL0BnbGltbWVyL21hbmFnZXIvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7O0FBUUE7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0EiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQge1xuICBzZXRJbnRlcm5hbEhlbHBlck1hbmFnZXIsXG4gIHNldEludGVybmFsTW9kaWZpZXJNYW5hZ2VyLFxuICBzZXRJbnRlcm5hbENvbXBvbmVudE1hbmFnZXIsXG4gIGdldEludGVybmFsSGVscGVyTWFuYWdlcixcbiAgZ2V0SW50ZXJuYWxNb2RpZmllck1hbmFnZXIsXG4gIGdldEludGVybmFsQ29tcG9uZW50TWFuYWdlcixcbn0gZnJvbSAnLi9saWIvaW50ZXJuYWwvaW5kZXgnO1xuZXhwb3J0IHsgc2V0SGVscGVyTWFuYWdlciwgc2V0TW9kaWZpZXJNYW5hZ2VyLCBzZXRDb21wb25lbnRNYW5hZ2VyIH0gZnJvbSAnLi9saWIvcHVibGljL2luZGV4JztcbmV4cG9ydCB7IGNvbXBvbmVudENhcGFiaWxpdGllcywgQ3VzdG9tQ29tcG9uZW50TWFuYWdlciB9IGZyb20gJy4vbGliL3B1YmxpYy9jb21wb25lbnQnO1xuZXhwb3J0IHsgbW9kaWZpZXJDYXBhYmlsaXRpZXMsIEN1c3RvbU1vZGlmaWVyTWFuYWdlciB9IGZyb20gJy4vbGliL3B1YmxpYy9tb2RpZmllcic7XG5leHBvcnQgeyBoZWxwZXJDYXBhYmlsaXRpZXMsIGhhc0Rlc3Ryb3lhYmxlLCBoYXNWYWx1ZSwgY3VzdG9tSGVscGVyIH0gZnJvbSAnLi9saWIvcHVibGljL2hlbHBlcic7XG5leHBvcnQgeyBnZXRDb21wb25lbnRUZW1wbGF0ZSwgc2V0Q29tcG9uZW50VGVtcGxhdGUgfSBmcm9tICcuL2xpYi9wdWJsaWMvdGVtcGxhdGUnO1xuZXhwb3J0IHsgY2FwYWJpbGl0eUZsYWdzRnJvbSwgaGFzQ2FwYWJpbGl0eSwgbWFuYWdlckhhc0NhcGFiaWxpdHkgfSBmcm9tICcuL2xpYi91dGlsL2NhcGFiaWxpdGllcyc7XG5leHBvcnQgeyBnZXRDdXN0b21UYWdGb3IsIHNldEN1c3RvbVRhZ0ZvciB9IGZyb20gJy4vbGliL3V0aWwvYXJncy1wcm94eSc7XG4iXSwic291cmNlUm9vdCI6IiJ9

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

});
exports.argsProxyFor = exports.CUSTOM_TAG_FOR = void 0;
exports.getCustomTagFor = getCustomTagFor;
exports.setCustomTagFor = setCustomTagFor;
exports.argsProxyFor = void 0;

@@ -17,5 +19,12 @@ var _env = require("@glimmer/env");

const CUSTOM_TAG_FOR = (0, _util.enumerableSymbol)('CUSTOM_TAG_FOR');
exports.CUSTOM_TAG_FOR = CUSTOM_TAG_FOR;
const CUSTOM_TAG_FOR = new WeakMap();
function getCustomTagFor(obj) {
return CUSTOM_TAG_FOR.get(obj);
}
function setCustomTagFor(obj, customTagFn) {
CUSTOM_TAG_FOR.set(obj, customTagFn);
}
function convertToInt(prop) {

@@ -55,77 +64,87 @@ if (typeof prop === 'symbol') return null;

if (_util.HAS_NATIVE_PROXY) {
exports.argsProxyFor = argsProxyFor = (capturedArgs, type) => {
const {
named,
positional
} = capturedArgs;
class NamedArgsProxy {
constructor(named) {
this.named = named;
}
let getNamedTag = key => tagForNamedArg(named, key);
get(_target, prop) {
const ref = this.named[prop];
let getPositionalTag = key => tagForPositionalArg(positional, key);
if (ref !== undefined) {
return (0, _reference.valueForRef)(ref);
}
}
const namedHandler = {
get(_target, prop) {
const ref = named[prop];
has(_target, prop) {
return prop in this.named;
}
if (ref !== undefined) {
return (0, _reference.valueForRef)(ref);
} else if (prop === CUSTOM_TAG_FOR) {
return getNamedTag;
}
},
ownKeys() {
return Object.keys(this.named);
}
has(_target, prop) {
return prop in named;
},
isExtensible() {
return false;
}
ownKeys(_target) {
return Object.keys(named);
},
getOwnPropertyDescriptor(_target, prop) {
if (_env.DEBUG && !(prop in this.named)) {
throw new Error(`args proxies do not have real property descriptors, so you should never need to call getOwnPropertyDescriptor yourself. This code exists for enumerability, such as in for-in loops and Object.keys(). Attempted to get the descriptor for \`${String(prop)}\``);
}
isExtensible() {
return false;
},
return {
enumerable: true,
configurable: true
};
}
getOwnPropertyDescriptor(_target, prop) {
if (_env.DEBUG && !(prop in named)) {
throw new Error(`args proxies do not have real property descriptors, so you should never need to call getOwnPropertyDescriptor yourself. This code exists for enumerability, such as in for-in loops and Object.keys(). Attempted to get the descriptor for \`${String(prop)}\``);
}
}
return {
enumerable: true,
configurable: true
};
}
class PositionalArgsProxy {
constructor(positional) {
this.positional = positional;
}
};
const positionalHandler = {
get(target, prop) {
if (prop === 'length') {
return positional.length;
}
get(target, prop) {
let {
positional
} = this;
const parsed = convertToInt(prop);
if (prop === 'length') {
return positional.length;
}
if (parsed !== null && parsed < positional.length) {
return (0, _reference.valueForRef)(positional[parsed]);
}
const parsed = convertToInt(prop);
if (prop === CUSTOM_TAG_FOR) {
return getPositionalTag;
}
if (parsed !== null && parsed < positional.length) {
return (0, _reference.valueForRef)(positional[parsed]);
}
return target[prop];
},
return target[prop];
}
isExtensible() {
return false;
},
isExtensible() {
return false;
}
has(_target, prop) {
const parsed = convertToInt(prop);
return parsed !== null && parsed < positional.length;
}
has(_target, prop) {
const parsed = convertToInt(prop);
return parsed !== null && parsed < this.positional.length;
}
};
}
if (_util.HAS_NATIVE_PROXY) {
exports.argsProxyFor = argsProxyFor = (capturedArgs, type) => {
const {
named,
positional
} = capturedArgs;
let getNamedTag = (_obj, key) => tagForNamedArg(named, key);
let getPositionalTag = (_obj, key) => tagForPositionalArg(positional, key);
const namedHandler = new NamedArgsProxy(named);
const positionalHandler = new PositionalArgsProxy(positional);
const namedTarget = Object.create(null);

@@ -148,5 +167,9 @@ const positionalTarget = [];

const namedProxy = new Proxy(namedTarget, namedHandler);
const positionalProxy = new Proxy(positionalTarget, positionalHandler);
setCustomTagFor(namedProxy, getNamedTag);
setCustomTagFor(positionalProxy, getPositionalTag);
return {
named: new Proxy(namedTarget, namedHandler),
positional: new Proxy(positionalTarget, positionalHandler)
named: namedProxy,
positional: positionalProxy
};

@@ -161,12 +184,10 @@ };

let getNamedTag = key => tagForNamedArg(named, key);
let getNamedTag = (_obj, key) => tagForNamedArg(named, key);
let getPositionalTag = key => tagForPositionalArg(positional, key);
let getPositionalTag = (_obj, key) => tagForPositionalArg(positional, key);
let namedProxy = {};
Object.defineProperty(namedProxy, CUSTOM_TAG_FOR, {
configurable: false,
enumerable: false,
value: getNamedTag
});
let positionalProxy = [];
setCustomTagFor(namedProxy, getNamedTag);
setCustomTagFor(positionalProxy, getPositionalTag);
Object.keys(named).forEach(name => {

@@ -183,8 +204,2 @@ Object.defineProperty(namedProxy, name, {

});
let positionalProxy = [];
Object.defineProperty(positionalProxy, CUSTOM_TAG_FOR, {
configurable: false,
enumerable: false,
value: getPositionalTag
});
positional.forEach((ref, index) => {

@@ -216,2 +231,2 @@ Object.defineProperty(positionalProxy, index, {

}
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL0BnbGltbWVyL21hbmFnZXIvbGliL3V0aWwvYXJncy1wcm94eS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7O0FBQUE7O0FBT0E7O0FBQ0E7O0FBQ0E7O0FBRU8sTUFBTSxjQUFjLEdBQUcsNEJBQXZCLGdCQUF1QixDQUF2Qjs7O0FBRVAsU0FBQSxZQUFBLENBQUEsSUFBQSxFQUFvRDtBQUNsRCxNQUFJLE9BQUEsSUFBQSxLQUFKLFFBQUEsRUFBOEIsT0FBQSxJQUFBO0FBRTlCLFFBQU0sR0FBRyxHQUFHLE1BQU0sQ0FBbEIsSUFBa0IsQ0FBbEI7QUFFQSxNQUFJLEtBQUssQ0FBVCxHQUFTLENBQVQsRUFBZ0IsT0FBQSxJQUFBO0FBRWhCLFNBQU8sR0FBRyxHQUFILENBQUEsS0FBQSxDQUFBLEdBQUEsR0FBQSxHQUFQLElBQUE7QUFDRDs7QUFFRCxTQUFBLGNBQUEsQ0FBQSxTQUFBLEVBQUEsR0FBQSxFQUFzRTtBQUNwRSxTQUFPLHNCQUFNLE1BQUs7QUFDaEIsUUFBSSxHQUFHLElBQVAsU0FBQSxFQUFzQjtBQUNwQixrQ0FBWSxTQUFTLENBQXJCLEdBQXFCLENBQXJCO0FBQ0Q7QUFISCxHQUFPLENBQVA7QUFLRDs7QUFFRCxTQUFBLG1CQUFBLENBQUEsY0FBQSxFQUFBLEdBQUEsRUFBcUY7QUFDbkYsU0FBTyxzQkFBTSxNQUFLO0FBQ2hCLFFBQUksR0FBRyxLQUFQLElBQUEsRUFBa0I7QUFDaEI7QUFDQSxNQUFBLGNBQWMsQ0FBZCxPQUFBLENBQUEsc0JBQUE7QUFDRDs7QUFFRCxVQUFNLE1BQU0sR0FBRyxZQUFZLENBQTNCLEdBQTJCLENBQTNCOztBQUVBLFFBQUksTUFBTSxLQUFOLElBQUEsSUFBbUIsTUFBTSxHQUFHLGNBQWMsQ0FBOUMsTUFBQSxFQUF1RDtBQUNyRDtBQUNBLGtDQUFZLGNBQWMsQ0FBMUIsTUFBMEIsQ0FBMUI7QUFDRDtBQVhILEdBQU8sQ0FBUDtBQWFEOztBQUVNLElBQUEs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RUFGMEIsSUFBQTs7QUFHdEMsUUFBQSxHQUFHLEdBQUE7QUFDRCxpQkFBTyw0QkFBWSxLQUFLLENBQXhCLElBQXdCLENBQWpCLENBQVA7QUFDRDs7QUFMcUMsT0FBeEM7QUFERixLQUFBO0FBVUEsUUFBSSxlQUFlLEdBQW5CLEVBQUE7QUFFQSxJQUFBLE1BQU0sQ0FBTixjQUFBLENBQUEsZUFBQSxFQUFBLGNBQUEsRUFBdUQ7QUFDckQsTUFBQSxZQUFZLEVBRHlDLEtBQUE7QUFFckQsTUFBQSxVQUFVLEVBRjJDLEtBQUE7QUFHckQsTUFBQSxLQUFLLEVBQUU7QUFIOEMsS0FBdkQ7QUFNQSxJQUFBLFVBQVUsQ0FBVixPQUFBLENBQW1CLENBQUEsR0FBQSxFQUFBLEtBQUEsS0FBa0M7QUFDbkQsTUFBQSxNQUFNLENBQU4sY0FBQSxDQUFBLGVBQUEsRUFBQSxLQUFBLEVBQThDO0FBQzVDLFFBQUEsVUFBVSxFQURrQyxJQUFBO0FBRTVDLFFBQUEsWUFBWSxFQUZnQyxJQUFBOztBQUc1QyxRQUFBLEdBQUcsR0FBQTtBQUNELGlCQUFPLDRCQUFQLEdBQU8sQ0FBUDtBQUNEOztBQUwyQyxPQUE5QztBQURGLEtBQUE7O0FBVUEsUUFBQSxVQUFBLEVBQVc7QUFDVDtBQUNBO0FBQ0E7QUFDQSxNQUFBLE1BQU0sQ0FBTixNQUFBLENBQUEsVUFBQTtBQUNBLE1BQUEsTUFBTSxDQUFOLE1BQUEsQ0FBQSxlQUFBO0FBQ0Q7O0FBRUQsV0FBTztBQUNMLE1BQUEsS0FBSyxFQURBLFVBQUE7QUFFTCxNQUFBLFVBQVUsRUFBRTtBQUZQLEtBQVA7QUFsREYsR0FBQTtBQXVERCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERFQlVHIH0gZnJvbSAnQGdsaW1tZXIvZW52JztcbmltcG9ydCB7XG4gIEFyZ3VtZW50cyxcbiAgQ2FwdHVyZWRBcmd1bWVudHMsXG4gIENhcHR1cmVkTmFtZWRBcmd1bWVudHMsXG4gIENhcHR1cmVkUG9zaXRpb25hbEFyZ3VtZW50cyxcbn0gZnJvbSAnQGdsaW1tZXIvaW50ZXJmYWNlcyc7XG5pbXBvcnQgeyBSZWZlcmVuY2UsIHZhbHVlRm9yUmVmIH0gZnJvbSAnQGdsaW1tZXIvcmVmZXJlbmNlJztcbmltcG9ydCB7IEhBU19OQVRJVkVfUFJPWFksIGVudW1lcmFibGVTeW1ib2wgfSBmcm9tICdAZ2xpbW1lci91dGlsJztcbmltcG9ydCB7IFRhZywgdHJhY2sgfSBmcm9tICdAZ2xpbW1lci92YWxpZGF0b3InO1xuXG5leHBvcnQgY29uc3QgQ1VTVE9NX1RBR19GT1IgPSBlbnVtZXJhYmxlU3ltYm9sKCdDVVNUT01fVEFHX0ZPUicpO1xuXG5mdW5jdGlvbiBjb252ZXJ0VG9JbnQocHJvcDogbnVtYmVyIHwgc3RyaW5nIHwgc3ltYm9sKTogbnVtYmVyIHwgbnVsbCB7XG4gIGlmICh0eXBlb2YgcHJvcCA9PT0gJ3N5bWJvbCcpIHJldHVybiBudWxsO1xuXG4gIGNvbnN0IG51bSA9IE51bWJlcihwcm9wKTtcblxuICBpZiAoaXNOYU4obnVtKSkgcmV0dXJuIG51bGw7XG5cbiAgcmV0dXJuIG51bSAlIDEgPT09IDAgPyBudW0gOiBudWxsO1xufVxuXG5mdW5jdGlvbiB0YWdGb3JOYW1lZEFyZyhuYW1lZEFyZ3M6IENhcHR1cmVkTmFtZWRBcmd1bWVudHMsIGtleTogc3RyaW5nKTogVGFnIHtcbiAgcmV0dXJuIHRyYWNrKCgpID0+IHtcbiAgICBpZiAoa2V5IGluIG5hbWVkQXJncykge1xuICAgICAgdmFsdWVGb3JSZWYobmFtZWRBcmdzW2tleV0pO1xuICAgIH1cbiAgfSk7XG59XG5cbmZ1bmN0aW9uIHRhZ0ZvclBvc2l0aW9uYWxBcmcocG9zaXRpb25hbEFyZ3M6IENhcHR1cmVkUG9zaXRpb25hbEFyZ3VtZW50cywga2V5OiBzdHJpbmcpOiBUYWcge1xuICByZXR1cm4gdHJhY2soKCkgPT4ge1xuICAgIGlmIChrZXkgPT09ICdbXScpIHtcbiAgICAgIC8vIGNvbnN1bWUgYWxsIG9mIHRoZSB0YWdzIGluIHRoZSBwb3NpdGlvbmFsIGFycmF5XG4gICAgICBwb3NpdGlvbmFsQXJncy5mb3JFYWNoKHZhbHVlRm9yUmVmKTtcbiAgICB9XG5cbiAgICBjb25zdCBwYXJzZWQgPSBjb252ZXJ0VG9JbnQoa2V5KTtcblxuICAgIGlmIChwYXJzZWQgIT09IG51bGwgJiYgcGFyc2VkIDwgcG9zaXRpb25hbEFyZ3MubGVuZ3RoKSB7XG4gICAgICAvLyBjb25zdW1lIHRoZSB0YWcgb2YgdGhlIHJlZmVyZW5jZWQgaW5kZXhcbiAgICAgIHZhbHVlRm9yUmVmKHBvc2l0aW9uYWxBcmdzW3BhcnNlZF0pO1xuICAgIH1cbiAgfSk7XG59XG5cbmV4cG9ydCBsZXQgYXJnc1Byb3h5Rm9yOiAoXG4gIGNhcHR1cmVkQXJnczogQ2FwdHVyZWRBcmd1bWVudHMsXG4gIHR5cGU6ICdjb21wb25lbnQnIHwgJ2hlbHBlcicgfCAnbW9kaWZpZXInXG4pID0+IEFyZ3VtZW50cztcblxuaWYgKEhBU19OQVRJVkVfUFJPWFkpIHtcbiAgYXJnc1Byb3h5Rm9yID0gKGNhcHR1cmVkQXJncywgdHlwZSkgPT4ge1xuICAgIGNvbnN0IHsgbmFtZWQsIHBvc2l0aW9uYWwgfSA9IGNhcHR1cmVkQXJncztcblxuICAgIGxldCBnZXROYW1lZFRhZyA9IChrZXk6IHN0cmluZykgPT4gdGFnRm9yTmFtZWRBcmcobmFtZWQsIGtleSk7XG4gICAgbGV0IGdldFBvc2l0aW9uYWxUYWcgPSAoa2V5OiBzdHJpbmcpID0+IHRhZ0ZvclBvc2l0aW9uYWxBcmcocG9zaXRpb25hbCwga2V5KTtcblxuICAgIGNvbnN0IG5hbWVkSGFuZGxlcjogUHJveHlIYW5kbGVyPHt9PiA9IHtcbiAgICAgIGdldChfdGFyZ2V0LCBwcm9wKSB7XG4gICAgICAgIGNvbnN0IHJlZiA9IG5hbWVkW3Byb3AgYXMgc3RyaW5nXTtcblxuICAgICAgICBpZiAocmVmICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICByZXR1cm4gdmFsdWVGb3JSZWYocmVmKTtcbiAgICAgICAgfSBlbHNlIGlmIChwcm9wID09PSBDVVNUT01fVEFHX0ZPUikge1xuICAgICAgICAgIHJldHVybiBnZXROYW1lZFRhZztcbiAgICAgICAgfVxuICAgICAgfSxcblxuICAgICAgaGFzKF90YXJnZXQsIHByb3ApIHtcbiAgICAgICAgcmV0dXJuIHByb3AgaW4gbmFtZWQ7XG4gICAgICB9LFxuXG4gICAgICBvd25LZXlzKF90YXJnZXQpIHtcbiAgICAgICAgcmV0dXJuIE9iamVjdC5rZXlzKG5hbWVkKTtcbiAgICAgIH0sXG5cbiAgICAgIGlzRXh0ZW5zaWJsZSgpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfSxcblxuICAgICAgZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKF90YXJnZXQsIHByb3ApIHtcbiAgICAgICAgaWYgKERFQlVHICYmICEocHJvcCBpbiBuYW1lZCkpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICAgICBgYXJncyBwcm94aWVzIGRvIG5vdCBoYXZlIHJlYWwgcHJvcGVydHkgZGVzY3JpcHRvcnMsIHNvIHlvdSBzaG91bGQgbmV2ZXIgbmVlZCB0byBjYWxsIGdldE93blByb3BlcnR5RGVzY3JpcHRvciB5b3Vyc2VsZi4gVGhpcyBjb2RlIGV4aXN0cyBmb3IgZW51bWVyYWJpbGl0eSwgc3VjaCBhcyBpbiBmb3ItaW4gbG9vcHMgYW5kIE9iamVjdC5rZXlzKCkuIEF0dGVtcHRlZCB0byBnZXQgdGhlIGRlc2NyaXB0b3IgZm9yIFxcYCR7U3RyaW5nKFxuICAgICAgICAgICAgICBwcm9wXG4gICAgICAgICAgICApfVxcYGBcbiAgICAgICAgICApO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBlbnVtZXJhYmxlOiB0cnVlLFxuICAgICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZSxcbiAgICAgICAgfTtcbiAgICAgIH0sXG4gICAgfTtcblxuICAgIGNvbnN0IHBvc2l0aW9uYWxIYW5kbGVyOiBQcm94eUhhbmRsZXI8W10+ID0ge1xuICAgICAgZ2V0KHRhcmdldCwgcHJvcCkge1xuICAgICAgICBpZiAocHJvcCA9PT0gJ2xlbmd0aCcpIHtcbiAgICAgICAgICByZXR1cm4gcG9zaXRpb25hbC5sZW5ndGg7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBwYXJzZWQgPSBjb252ZXJ0VG9JbnQocHJvcCk7XG5cbiAgICAgICAgaWYgKHBhcnNlZCAhPT0gbnVsbCAmJiBwYXJzZWQgPCBwb3NpdGlvbmFsLmxlbmd0aCkge1xuICAgICAgICAgIHJldHVybiB2YWx1ZUZvclJlZihwb3NpdGlvbmFsW3BhcnNlZF0pO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHByb3AgPT09IENVU1RPTV9UQUdfRk9SKSB7XG4gICAgICAgICAgcmV0dXJuIGdldFBvc2l0aW9uYWxUYWc7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gKHRhcmdldCBhcyBhbnkpW3Byb3BdO1xuICAgICAgfSxcblxuICAgICAgaXNFeHRlbnNpYmxlKCkge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9LFxuXG4gICAgICBoYXMoX3RhcmdldCwgcHJvcCkge1xuICAgICAgICBjb25zdCBwYXJzZWQgPSBjb252ZXJ0VG9JbnQocHJvcCk7XG5cbiAgICAgICAgcmV0dXJuIHBhcnNlZCAhPT0gbnVsbCAmJiBwYXJzZWQgPCBwb3NpdGlvbmFsLmxlbmd0aDtcbiAgICAgIH0sXG4gICAgfTtcblxuICAgIGNvbnN0IG5hbWVkVGFyZ2V0ID0gT2JqZWN0LmNyZWF0ZShudWxsKTtcbiAgICBjb25zdCBwb3NpdGlvbmFsVGFyZ2V0OiB1bmtub3duW10gPSBbXTtcblxuICAgIGlmIChERUJVRykge1xuICAgICAgY29uc3Qgc2V0SGFuZGxlciA9IGZ1bmN0aW9uIChfdGFyZ2V0OiB1bmtub3duLCBwcm9wOiBzeW1ib2wgfCBzdHJpbmcgfCBudW1iZXIpOiBuZXZlciB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICBgWW91IGF0dGVtcHRlZCB0byBzZXQgJHtTdHJpbmcoXG4gICAgICAgICAgICBwcm9wXG4gICAgICAgICAgKX0gb24gdGhlIGFyZ3VtZW50cyBvZiBhIGNvbXBvbmVudCwgaGVscGVyLCBvciBtb2RpZmllci4gQXJndW1lbnRzIGFyZSBpbW11dGFibGUgYW5kIGNhbm5vdCBiZSB1cGRhdGVkIGRpcmVjdGx5LCB0aGV5IGFsd2F5cyByZXByZXNlbnQgdGhlIHZhbHVlcyB0aGF0IGlzIHBhc3NlZCBkb3duLiBJZiB5b3Ugd2FudCB0byBzZXQgZGVmYXVsdCB2YWx1ZXMsIHlvdSBzaG91bGQgdXNlIGEgZ2V0dGVyIGFuZCBsb2NhbCB0cmFja2VkIHN0YXRlIGluc3RlYWQuYFxuICAgICAgICApO1xuICAgICAgfTtcblxuICAgICAgY29uc3QgZm9ySW5EZWJ1Z0hhbmRsZXIgPSAoKTogbmV2ZXIgPT4ge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICAgYE9iamVjdC5rZXlzKCkgd2FzIGNhbGxlZCBvbiB0aGUgcG9zaXRpb25hbCBhcmd1bWVudHMgYXJyYXkgZm9yIGEgJHt0eXBlfSwgd2hpY2ggaXMgbm90IHN1cHBvcnRlZC4gVGhpcyBmdW5jdGlvbiBpcyBhIGxvdy1sZXZlbCBmdW5jdGlvbiB0aGF0IHNob3VsZCBub3QgbmVlZCB0byBiZSBjYWxsZWQgZm9yIHBvc2l0aW9uYWwgYXJndW1lbnQgYXJyYXlzLiBZb3UgbWF5IGJlIGF0dGVtcHRpbmcgdG8gaXRlcmF0ZSBvdmVyIHRoZSBhcnJheSB1c2luZyBmb3IuLi5pbiBpbnN0ZWFkIG9mIGZvci4uLm9mLmBcbiAgICAgICAgKTtcbiAgICAgIH07XG5cbiAgICAgIG5hbWVkSGFuZGxlci5zZXQgPSBzZXRIYW5kbGVyO1xuICAgICAgcG9zaXRpb25hbEhhbmRsZXIuc2V0ID0gc2V0SGFuZGxlcjtcbiAgICAgIHBvc2l0aW9uYWxIYW5kbGVyLm93bktleXMgPSBmb3JJbkRlYnVnSGFuZGxlcjtcbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgbmFtZWQ6IG5ldyBQcm94eShuYW1lZFRhcmdldCwgbmFtZWRIYW5kbGVyKSxcbiAgICAgIHBvc2l0aW9uYWw6IG5ldyBQcm94eShwb3NpdGlvbmFsVGFyZ2V0LCBwb3NpdGlvbmFsSGFuZGxlciksXG4gICAgfTtcbiAgfTtcbn0gZWxzZSB7XG4gIGFyZ3NQcm94eUZvciA9IChjYXB0dXJlZEFyZ3MsIF90eXBlKSA9PiB7XG4gICAgY29uc3QgeyBuYW1lZCwgcG9zaXRpb25hbCB9ID0gY2FwdHVyZWRBcmdzO1xuXG4gICAgbGV0IGdldE5hbWVkVGFnID0gKGtleTogc3RyaW5nKSA9PiB0YWdGb3JOYW1lZEFyZyhuYW1lZCwga2V5KTtcbiAgICBsZXQgZ2V0UG9zaXRpb25hbFRhZyA9IChrZXk6IHN0cmluZykgPT4gdGFnRm9yUG9zaXRpb25hbEFyZyhwb3NpdGlvbmFsLCBrZXkpO1xuXG4gICAgbGV0IG5hbWVkUHJveHkgPSB7fTtcblxuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShuYW1lZFByb3h5LCBDVVNUT01fVEFHX0ZPUiwge1xuICAgICAgY29uZmlndXJhYmxlOiBmYWxzZSxcbiAgICAgIGVudW1lcmFibGU6IGZhbHNlLFxuICAgICAgdmFsdWU6IGdldE5hbWVkVGFnLFxuICAgIH0pO1xuXG4gICAgT2JqZWN0LmtleXMobmFtZWQpLmZvckVhY2goKG5hbWUpID0+IHtcbiAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShuYW1lZFByb3h5LCBuYW1lLCB7XG4gICAgICAgIGVudW1lcmFibGU6IHRydWUsXG4gICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZSxcbiAgICAgICAgZ2V0KCkge1xuICAgICAgICAgIHJldHVybiB2YWx1ZUZvclJlZihuYW1lZFtuYW1lXSk7XG4gICAgICAgIH0sXG4gICAgICB9KTtcbiAgICB9KTtcblxuICAgIGxldCBwb3NpdGlvbmFsUHJveHk6IHVua25vd25bXSA9IFtdO1xuXG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHBvc2l0aW9uYWxQcm94eSwgQ1VTVE9NX1RBR19GT1IsIHtcbiAgICAgIGNvbmZpZ3VyYWJsZTogZmFsc2UsXG4gICAgICBlbnVtZXJhYmxlOiBmYWxzZSxcbiAgICAgIHZhbHVlOiBnZXRQb3NpdGlvbmFsVGFnLFxuICAgIH0pO1xuXG4gICAgcG9zaXRpb25hbC5mb3JFYWNoKChyZWY6IFJlZmVyZW5jZSwgaW5kZXg6IG51bWJlcikgPT4ge1xuICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHBvc2l0aW9uYWxQcm94eSwgaW5kZXgsIHtcbiAgICAgICAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlLFxuICAgICAgICBnZXQoKSB7XG4gICAgICAgICAgcmV0dXJuIHZhbHVlRm9yUmVmKHJlZik7XG4gICAgICAgIH0sXG4gICAgICB9KTtcbiAgICB9KTtcblxuICAgIGlmIChERUJVRykge1xuICAgICAgLy8gUHJldmVudCBtdXRhdGlvbnMgaW4gZGV2ZWxvcG1lbnQgbW9kZS4gVGhpcyB3aWxsIG5vdCBwcmV2ZW50IHRoZVxuICAgICAgLy8gcHJveHkgZnJvbSB1cGRhdGluZywgYnV0IHdpbGwgcHJldmVudCBhc3NpZ25pbmcgbmV3IHZhbHVlcyBvciBwdXNoaW5nXG4gICAgICAvLyBmb3IgaW5zdGFuY2UuXG4gICAgICBPYmplY3QuZnJlZXplKG5hbWVkUHJveHkpO1xuICAgICAgT2JqZWN0LmZyZWV6ZShwb3NpdGlvbmFsUHJveHkpO1xuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICBuYW1lZDogbmFtZWRQcm94eSxcbiAgICAgIHBvc2l0aW9uYWw6IHBvc2l0aW9uYWxQcm94eSxcbiAgICB9O1xuICB9O1xufVxuIl0sInNvdXJjZVJvb3QiOiIifQ==
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL0BnbGltbWVyL21hbmFnZXIvbGliL3V0aWwvYXJncy1wcm94eS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFBQTs7QUFPQTs7QUFDQTs7QUFDQTs7QUFFQSxNQUFNLGNBQWMsR0FBRyxJQUF2QixPQUF1QixFQUF2Qjs7QUFFTSxTQUFBLGVBQUEsQ0FBQSxHQUFBLEVBQXFDO0FBQ3pDLFNBQU8sY0FBYyxDQUFkLEdBQUEsQ0FBUCxHQUFPLENBQVA7QUFDRDs7QUFFSyxTQUFBLGVBQUEsQ0FBQSxHQUFBLEVBQUEsV0FBQSxFQUFxRjtBQUN6RixFQUFBLGNBQWMsQ0FBZCxHQUFBLENBQUEsR0FBQSxFQUFBLFdBQUE7QUFDRDs7QUFFRCxTQUFBLFlBQUEsQ0FBQSxJQUFBLEVBQW9EO0FBQ2xELE1BQUksT0FBQSxJQUFBLEtBQUosUUFBQSxFQUE4QixPQUFBLElBQUE7QUFFOUIsUUFBTSxHQUFHLEdBQUcsTUFBTSxDQUFsQixJQUFrQixDQUFsQjtBQUVBLE1BQUksS0FBSyxDQUFULEdBQVMsQ0FBVCxFQUFnQixPQUFBLElBQUE7QUFFaEIsU0FBTyxHQUFHLEdBQUgsQ0FBQSxLQUFBLENBQUEsR0FBQSxHQUFBLEdBQVAsSUFBQTtBQUNEOztBQUVELFNBQUEsY0FBQSxDQUFBLFNBQUEsRUFBQSxHQUFBLEVBQXNFO0FBQ3BFLFNBQU8sc0JBQU0sTUFBSztBQUNoQixRQUFJLEdBQUcsSUFBUCxTQUFBLEVBQXNCO0FBQ3BCLGtDQUFZLFNBQVMsQ0FBckIsR0FBcUIsQ0FBckI7QUFDRDtBQUhILEdBQU8sQ0FBUDtBQUtEOztBQUVELFNBQUEsbUJBQUEsQ0FBQSxjQUFBLEVBQUEsR0FBQSxFQUFxRjtBQUNuRixTQUFPLHNCQUFNLE1BQUs7QUFDaEIsUUFBSSxHQUFHLEtBQVAsSUFBQSxFQUFrQjtBQUNoQjtBQUNBLE1BQUEsY0FBYyxDQUFkLE9BQUEsQ0FBQSxzQkFBQTtBQUNEOztBQUVELFVBQU0sTUFB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QUNEOztBQUVELFdBQU87QUFDTCxNQUFBLEtBQUssRUFEQSxVQUFBO0FBRUwsTUFBQSxVQUFVLEVBQUU7QUFGUCxLQUFQO0FBeENGLEdBQUE7QUE2Q0QiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBERUJVRyB9IGZyb20gJ0BnbGltbWVyL2Vudic7XG5pbXBvcnQge1xuICBBcmd1bWVudHMsXG4gIENhcHR1cmVkQXJndW1lbnRzLFxuICBDYXB0dXJlZE5hbWVkQXJndW1lbnRzLFxuICBDYXB0dXJlZFBvc2l0aW9uYWxBcmd1bWVudHMsXG59IGZyb20gJ0BnbGltbWVyL2ludGVyZmFjZXMnO1xuaW1wb3J0IHsgUmVmZXJlbmNlLCB2YWx1ZUZvclJlZiB9IGZyb20gJ0BnbGltbWVyL3JlZmVyZW5jZSc7XG5pbXBvcnQgeyBIQVNfTkFUSVZFX1BST1hZIH0gZnJvbSAnQGdsaW1tZXIvdXRpbCc7XG5pbXBvcnQgeyBUYWcsIHRyYWNrIH0gZnJvbSAnQGdsaW1tZXIvdmFsaWRhdG9yJztcblxuY29uc3QgQ1VTVE9NX1RBR19GT1IgPSBuZXcgV2Vha01hcDxvYmplY3QsIChvYmo6IG9iamVjdCwga2V5OiBzdHJpbmcpID0+IFRhZz4oKTtcblxuZXhwb3J0IGZ1bmN0aW9uIGdldEN1c3RvbVRhZ0ZvcihvYmo6IG9iamVjdCk6ICgob2JqOiBvYmplY3QsIGtleTogc3RyaW5nKSA9PiBUYWcpIHwgdW5kZWZpbmVkIHtcbiAgcmV0dXJuIENVU1RPTV9UQUdfRk9SLmdldChvYmopO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gc2V0Q3VzdG9tVGFnRm9yKG9iajogb2JqZWN0LCBjdXN0b21UYWdGbjogKG9iajogb2JqZWN0LCBrZXk6IHN0cmluZykgPT4gVGFnKSB7XG4gIENVU1RPTV9UQUdfRk9SLnNldChvYmosIGN1c3RvbVRhZ0ZuKTtcbn1cblxuZnVuY3Rpb24gY29udmVydFRvSW50KHByb3A6IG51bWJlciB8IHN0cmluZyB8IHN5bWJvbCk6IG51bWJlciB8IG51bGwge1xuICBpZiAodHlwZW9mIHByb3AgPT09ICdzeW1ib2wnKSByZXR1cm4gbnVsbDtcblxuICBjb25zdCBudW0gPSBOdW1iZXIocHJvcCk7XG5cbiAgaWYgKGlzTmFOKG51bSkpIHJldHVybiBudWxsO1xuXG4gIHJldHVybiBudW0gJSAxID09PSAwID8gbnVtIDogbnVsbDtcbn1cblxuZnVuY3Rpb24gdGFnRm9yTmFtZWRBcmcobmFtZWRBcmdzOiBDYXB0dXJlZE5hbWVkQXJndW1lbnRzLCBrZXk6IHN0cmluZyk6IFRhZyB7XG4gIHJldHVybiB0cmFjaygoKSA9PiB7XG4gICAgaWYgKGtleSBpbiBuYW1lZEFyZ3MpIHtcbiAgICAgIHZhbHVlRm9yUmVmKG5hbWVkQXJnc1trZXldKTtcbiAgICB9XG4gIH0pO1xufVxuXG5mdW5jdGlvbiB0YWdGb3JQb3NpdGlvbmFsQXJnKHBvc2l0aW9uYWxBcmdzOiBDYXB0dXJlZFBvc2l0aW9uYWxBcmd1bWVudHMsIGtleTogc3RyaW5nKTogVGFnIHtcbiAgcmV0dXJuIHRyYWNrKCgpID0+IHtcbiAgICBpZiAoa2V5ID09PSAnW10nKSB7XG4gICAgICAvLyBjb25zdW1lIGFsbCBvZiB0aGUgdGFncyBpbiB0aGUgcG9zaXRpb25hbCBhcnJheVxuICAgICAgcG9zaXRpb25hbEFyZ3MuZm9yRWFjaCh2YWx1ZUZvclJlZik7XG4gICAgfVxuXG4gICAgY29uc3QgcGFyc2VkID0gY29udmVydFRvSW50KGtleSk7XG5cbiAgICBpZiAocGFyc2VkICE9PSBudWxsICYmIHBhcnNlZCA8IHBvc2l0aW9uYWxBcmdzLmxlbmd0aCkge1xuICAgICAgLy8gY29uc3VtZSB0aGUgdGFnIG9mIHRoZSByZWZlcmVuY2VkIGluZGV4XG4gICAgICB2YWx1ZUZvclJlZihwb3NpdGlvbmFsQXJnc1twYXJzZWRdKTtcbiAgICB9XG4gIH0pO1xufVxuXG5leHBvcnQgbGV0IGFyZ3NQcm94eUZvcjogKFxuICBjYXB0dXJlZEFyZ3M6IENhcHR1cmVkQXJndW1lbnRzLFxuICB0eXBlOiAnY29tcG9uZW50JyB8ICdoZWxwZXInIHwgJ21vZGlmaWVyJ1xuKSA9PiBBcmd1bWVudHM7XG5cbmNsYXNzIE5hbWVkQXJnc1Byb3h5IGltcGxlbWVudHMgUHJveHlIYW5kbGVyPHt9PiB7XG4gIGRlY2xhcmUgc2V0PzogKHRhcmdldDoge30sIHByb3A6IHN0cmluZyB8IG51bWJlciB8IHN5bWJvbCkgPT4gYm9vbGVhbjtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIG5hbWVkOiBDYXB0dXJlZE5hbWVkQXJndW1lbnRzKSB7fVxuXG4gIGdldChfdGFyZ2V0OiB7fSwgcHJvcDogc3RyaW5nIHwgbnVtYmVyIHwgc3ltYm9sKSB7XG4gICAgY29uc3QgcmVmID0gdGhpcy5uYW1lZFtwcm9wIGFzIHN0cmluZ107XG5cbiAgICBpZiAocmVmICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHJldHVybiB2YWx1ZUZvclJlZihyZWYpO1xuICAgIH1cbiAgfVxuXG4gIGhhcyhfdGFyZ2V0OiB7fSwgcHJvcDogc3RyaW5nIHwgbnVtYmVyIHwgc3ltYm9sKSB7XG4gICAgcmV0dXJuIHByb3AgaW4gdGhpcy5uYW1lZDtcbiAgfVxuXG4gIG93bktleXMoKSB7XG4gICAgcmV0dXJuIE9iamVjdC5rZXlzKHRoaXMubmFtZWQpO1xuICB9XG5cbiAgaXNFeHRlbnNpYmxlKCkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIGdldE93blByb3BlcnR5RGVzY3JpcHRvcihfdGFyZ2V0OiB7fSwgcHJvcDogc3RyaW5nIHwgbnVtYmVyIHwgc3ltYm9sKSB7XG4gICAgaWYgKERFQlVHICYmICEocHJvcCBpbiB0aGlzLm5hbWVkKSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICBgYXJncyBwcm94aWVzIGRvIG5vdCBoYXZlIHJlYWwgcHJvcGVydHkgZGVzY3JpcHRvcnMsIHNvIHlvdSBzaG91bGQgbmV2ZXIgbmVlZCB0byBjYWxsIGdldE93blByb3BlcnR5RGVzY3JpcHRvciB5b3Vyc2VsZi4gVGhpcyBjb2RlIGV4aXN0cyBmb3IgZW51bWVyYWJpbGl0eSwgc3VjaCBhcyBpbiBmb3ItaW4gbG9vcHMgYW5kIE9iamVjdC5rZXlzKCkuIEF0dGVtcHRlZCB0byBnZXQgdGhlIGRlc2NyaXB0b3IgZm9yIFxcYCR7U3RyaW5nKFxuICAgICAgICAgIHByb3BcbiAgICAgICAgKX1cXGBgXG4gICAgICApO1xuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICBlbnVtZXJhYmxlOiB0cnVlLFxuICAgICAgY29uZmlndXJhYmxlOiB0cnVlLFxuICAgIH07XG4gIH1cbn1cblxuY2xhc3MgUG9zaXRpb25hbEFyZ3NQcm94eSBpbXBsZW1lbnRzIFByb3h5SGFuZGxlcjxbXT4ge1xuICBkZWNsYXJlIHNldD86ICh0YXJnZXQ6IFtdLCBwcm9wOiBzdHJpbmcgfCBudW1iZXIgfCBzeW1ib2wpID0+IGJvb2xlYW47XG4gIGRlY2xhcmUgb3duS2V5cz86ICh0YXJnZXQ6IFtdKSA9PiBzdHJpbmdbXTtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHBvc2l0aW9uYWw6IENhcHR1cmVkUG9zaXRpb25hbEFyZ3VtZW50cykge31cblxuICBnZXQodGFyZ2V0OiBbXSwgcHJvcDogc3RyaW5nIHwgbnVtYmVyIHwgc3ltYm9sKSB7XG4gICAgbGV0IHsgcG9zaXRpb25hbCB9ID0gdGhpcztcblxuICAgIGlmIChwcm9wID09PSAnbGVuZ3RoJykge1xuICAgICAgcmV0dXJuIHBvc2l0aW9uYWwubGVuZ3RoO1xuICAgIH1cblxuICAgIGNvbnN0IHBhcnNlZCA9IGNvbnZlcnRUb0ludChwcm9wKTtcblxuICAgIGlmIChwYXJzZWQgIT09IG51bGwgJiYgcGFyc2VkIDwgcG9zaXRpb25hbC5sZW5ndGgpIHtcbiAgICAgIHJldHVybiB2YWx1ZUZvclJlZihwb3NpdGlvbmFsW3BhcnNlZF0pO1xuICAgIH1cblxuICAgIHJldHVybiAodGFyZ2V0IGFzIGFueSlbcHJvcF07XG4gIH1cblxuICBpc0V4dGVuc2libGUoKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgaGFzKF90YXJnZXQ6IFtdLCBwcm9wOiBzdHJpbmcgfCBudW1iZXIgfCBzeW1ib2wpIHtcbiAgICBjb25zdCBwYXJzZWQgPSBjb252ZXJ0VG9JbnQocHJvcCk7XG5cbiAgICByZXR1cm4gcGFyc2VkICE9PSBudWxsICYmIHBhcnNlZCA8IHRoaXMucG9zaXRpb25hbC5sZW5ndGg7XG4gIH1cbn1cblxuaWYgKEhBU19OQVRJVkVfUFJPWFkpIHtcbiAgYXJnc1Byb3h5Rm9yID0gKGNhcHR1cmVkQXJncywgdHlwZSkgPT4ge1xuICAgIGNvbnN0IHsgbmFtZWQsIHBvc2l0aW9uYWwgfSA9IGNhcHR1cmVkQXJncztcblxuICAgIGxldCBnZXROYW1lZFRhZyA9IChfb2JqOiBvYmplY3QsIGtleTogc3RyaW5nKSA9PiB0YWdGb3JOYW1lZEFyZyhuYW1lZCwga2V5KTtcbiAgICBsZXQgZ2V0UG9zaXRpb25hbFRhZyA9IChfb2JqOiBvYmplY3QsIGtleTogc3RyaW5nKSA9PiB0YWdGb3JQb3NpdGlvbmFsQXJnKHBvc2l0aW9uYWwsIGtleSk7XG5cbiAgICBjb25zdCBuYW1lZEhhbmRsZXIgPSBuZXcgTmFtZWRBcmdzUHJveHkobmFtZWQpO1xuICAgIGNvbnN0IHBvc2l0aW9uYWxIYW5kbGVyID0gbmV3IFBvc2l0aW9uYWxBcmdzUHJveHkocG9zaXRpb25hbCk7XG5cbiAgICBjb25zdCBuYW1lZFRhcmdldCA9IE9iamVjdC5jcmVhdGUobnVsbCk7XG4gICAgY29uc3QgcG9zaXRpb25hbFRhcmdldDogdW5rbm93bltdID0gW107XG5cbiAgICBpZiAoREVCVUcpIHtcbiAgICAgIGNvbnN0IHNldEhhbmRsZXIgPSBmdW5jdGlvbiAoX3RhcmdldDogdW5rbm93biwgcHJvcDogc3ltYm9sIHwgc3RyaW5nIHwgbnVtYmVyKTogbmV2ZXIge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICAgYFlvdSBhdHRlbXB0ZWQgdG8gc2V0ICR7U3RyaW5nKFxuICAgICAgICAgICAgcHJvcFxuICAgICAgICAgICl9IG9uIHRoZSBhcmd1bWVudHMgb2YgYSBjb21wb25lbnQsIGhlbHBlciwgb3IgbW9kaWZpZXIuIEFyZ3VtZW50cyBhcmUgaW1tdXRhYmxlIGFuZCBjYW5ub3QgYmUgdXBkYXRlZCBkaXJlY3RseSwgdGhleSBhbHdheXMgcmVwcmVzZW50IHRoZSB2YWx1ZXMgdGhhdCBpcyBwYXNzZWQgZG93bi4gSWYgeW91IHdhbnQgdG8gc2V0IGRlZmF1bHQgdmFsdWVzLCB5b3Ugc2hvdWxkIHVzZSBhIGdldHRlciBhbmQgbG9jYWwgdHJhY2tlZCBzdGF0ZSBpbnN0ZWFkLmBcbiAgICAgICAgKTtcbiAgICAgIH07XG5cbiAgICAgIGNvbnN0IGZvckluRGVidWdIYW5kbGVyID0gKCk6IG5ldmVyID0+IHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAgIGBPYmplY3Qua2V5cygpIHdhcyBjYWxsZWQgb24gdGhlIHBvc2l0aW9uYWwgYXJndW1lbnRzIGFycmF5IGZvciBhICR7dHlwZX0sIHdoaWNoIGlzIG5vdCBzdXBwb3J0ZWQuIFRoaXMgZnVuY3Rpb24gaXMgYSBsb3ctbGV2ZWwgZnVuY3Rpb24gdGhhdCBzaG91bGQgbm90IG5lZWQgdG8gYmUgY2FsbGVkIGZvciBwb3NpdGlvbmFsIGFyZ3VtZW50IGFycmF5cy4gWW91IG1heSBiZSBhdHRlbXB0aW5nIHRvIGl0ZXJhdGUgb3ZlciB0aGUgYXJyYXkgdXNpbmcgZm9yLi4uaW4gaW5zdGVhZCBvZiBmb3IuLi5vZi5gXG4gICAgICAgICk7XG4gICAgICB9O1xuXG4gICAgICBuYW1lZEhhbmRsZXIuc2V0ID0gc2V0SGFuZGxlcjtcbiAgICAgIHBvc2l0aW9uYWxIYW5kbGVyLnNldCA9IHNldEhhbmRsZXI7XG4gICAgICBwb3NpdGlvbmFsSGFuZGxlci5vd25LZXlzID0gZm9ySW5EZWJ1Z0hhbmRsZXI7XG4gICAgfVxuXG4gICAgY29uc3QgbmFtZWRQcm94eSA9IG5ldyBQcm94eShuYW1lZFRhcmdldCwgbmFtZWRIYW5kbGVyKTtcbiAgICBjb25zdCBwb3NpdGlvbmFsUHJveHkgPSBuZXcgUHJveHkocG9zaXRpb25hbFRhcmdldCwgcG9zaXRpb25hbEhhbmRsZXIpO1xuXG4gICAgc2V0Q3VzdG9tVGFnRm9yKG5hbWVkUHJveHksIGdldE5hbWVkVGFnKTtcbiAgICBzZXRDdXN0b21UYWdGb3IocG9zaXRpb25hbFByb3h5LCBnZXRQb3NpdGlvbmFsVGFnKTtcblxuICAgIHJldHVybiB7XG4gICAgICBuYW1lZDogbmFtZWRQcm94eSxcbiAgICAgIHBvc2l0aW9uYWw6IHBvc2l0aW9uYWxQcm94eSxcbiAgICB9O1xuICB9O1xufSBlbHNlIHtcbiAgYXJnc1Byb3h5Rm9yID0gKGNhcHR1cmVkQXJncywgX3R5cGUpID0+IHtcbiAgICBjb25zdCB7IG5hbWVkLCBwb3NpdGlvbmFsIH0gPSBjYXB0dXJlZEFyZ3M7XG5cbiAgICBsZXQgZ2V0TmFtZWRUYWcgPSAoX29iajogb2JqZWN0LCBrZXk6IHN0cmluZykgPT4gdGFnRm9yTmFtZWRBcmcobmFtZWQsIGtleSk7XG4gICAgbGV0IGdldFBvc2l0aW9uYWxUYWcgPSAoX29iajogb2JqZWN0LCBrZXk6IHN0cmluZykgPT4gdGFnRm9yUG9zaXRpb25hbEFyZyhwb3NpdGlvbmFsLCBrZXkpO1xuXG4gICAgbGV0IG5hbWVkUHJveHkgPSB7fTtcbiAgICBsZXQgcG9zaXRpb25hbFByb3h5OiB1bmtub3duW10gPSBbXTtcblxuICAgIHNldEN1c3RvbVRhZ0ZvcihuYW1lZFByb3h5LCBnZXROYW1lZFRhZyk7XG4gICAgc2V0Q3VzdG9tVGFnRm9yKHBvc2l0aW9uYWxQcm94eSwgZ2V0UG9zaXRpb25hbFRhZyk7XG5cbiAgICBPYmplY3Qua2V5cyhuYW1lZCkuZm9yRWFjaCgobmFtZSkgPT4ge1xuICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KG5hbWVkUHJveHksIG5hbWUsIHtcbiAgICAgICAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlLFxuICAgICAgICBnZXQoKSB7XG4gICAgICAgICAgcmV0dXJuIHZhbHVlRm9yUmVmKG5hbWVkW25hbWVdKTtcbiAgICAgICAgfSxcbiAgICAgIH0pO1xuICAgIH0pO1xuXG4gICAgcG9zaXRpb25hbC5mb3JFYWNoKChyZWY6IFJlZmVyZW5jZSwgaW5kZXg6IG51bWJlcikgPT4ge1xuICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHBvc2l0aW9uYWxQcm94eSwgaW5kZXgsIHtcbiAgICAgICAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlLFxuICAgICAgICBnZXQoKSB7XG4gICAgICAgICAgcmV0dXJuIHZhbHVlRm9yUmVmKHJlZik7XG4gICAgICAgIH0sXG4gICAgICB9KTtcbiAgICB9KTtcblxuICAgIGlmIChERUJVRykge1xuICAgICAgLy8gUHJldmVudCBtdXRhdGlvbnMgaW4gZGV2ZWxvcG1lbnQgbW9kZS4gVGhpcyB3aWxsIG5vdCBwcmV2ZW50IHRoZVxuICAgICAgLy8gcHJveHkgZnJvbSB1cGRhdGluZywgYnV0IHdpbGwgcHJldmVudCBhc3NpZ25pbmcgbmV3IHZhbHVlcyBvciBwdXNoaW5nXG4gICAgICAvLyBmb3IgaW5zdGFuY2UuXG4gICAgICBPYmplY3QuZnJlZXplKG5hbWVkUHJveHkpO1xuICAgICAgT2JqZWN0LmZyZWV6ZShwb3NpdGlvbmFsUHJveHkpO1xuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICBuYW1lZDogbmFtZWRQcm94eSxcbiAgICAgIHBvc2l0aW9uYWw6IHBvc2l0aW9uYWxQcm94eSxcbiAgICB9O1xuICB9O1xufVxuIl0sInNvdXJjZVJvb3QiOiIifQ==

@@ -138,8 +138,14 @@ "use strict";

});
Object.defineProperty(exports, "CUSTOM_TAG_FOR", {
Object.defineProperty(exports, "getCustomTagFor", {
enumerable: true,
get: function () {
return _argsProxy.CUSTOM_TAG_FOR;
return _argsProxy.getCustomTagFor;
}
});
Object.defineProperty(exports, "setCustomTagFor", {
enumerable: true,
get: function () {
return _argsProxy.setCustomTagFor;
}
});

@@ -161,2 +167,2 @@ var _index = require("./lib/internal/index");

var _argsProxy = require("./lib/util/args-proxy");
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3BhY2thZ2VzL0BnbGltbWVyL21hbmFnZXIvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7O0FBUUE7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0EiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQge1xuICBzZXRJbnRlcm5hbEhlbHBlck1hbmFnZXIsXG4gIHNldEludGVybmFsTW9kaWZpZXJNYW5hZ2VyLFxuICBzZXRJbnRlcm5hbENvbXBvbmVudE1hbmFnZXIsXG4gIGdldEludGVybmFsSGVscGVyTWFuYWdlcixcbiAgZ2V0SW50ZXJuYWxNb2RpZmllck1hbmFnZXIsXG4gIGdldEludGVybmFsQ29tcG9uZW50TWFuYWdlcixcbn0gZnJvbSAnLi9saWIvaW50ZXJuYWwvaW5kZXgnO1xuZXhwb3J0IHsgc2V0SGVscGVyTWFuYWdlciwgc2V0TW9kaWZpZXJNYW5hZ2VyLCBzZXRDb21wb25lbnRNYW5hZ2VyIH0gZnJvbSAnLi9saWIvcHVibGljL2luZGV4JztcbmV4cG9ydCB7IGNvbXBvbmVudENhcGFiaWxpdGllcywgQ3VzdG9tQ29tcG9uZW50TWFuYWdlciB9IGZyb20gJy4vbGliL3B1YmxpYy9jb21wb25lbnQnO1xuZXhwb3J0IHsgbW9kaWZpZXJDYXBhYmlsaXRpZXMsIEN1c3RvbU1vZGlmaWVyTWFuYWdlciB9IGZyb20gJy4vbGliL3B1YmxpYy9tb2RpZmllcic7XG5leHBvcnQgeyBoZWxwZXJDYXBhYmlsaXRpZXMsIGhhc0Rlc3Ryb3lhYmxlLCBoYXNWYWx1ZSwgY3VzdG9tSGVscGVyIH0gZnJvbSAnLi9saWIvcHVibGljL2hlbHBlcic7XG5leHBvcnQgeyBnZXRDb21wb25lbnRUZW1wbGF0ZSwgc2V0Q29tcG9uZW50VGVtcGxhdGUgfSBmcm9tICcuL2xpYi9wdWJsaWMvdGVtcGxhdGUnO1xuZXhwb3J0IHsgY2FwYWJpbGl0eUZsYWdzRnJvbSwgaGFzQ2FwYWJpbGl0eSwgbWFuYWdlckhhc0NhcGFiaWxpdHkgfSBmcm9tICcuL2xpYi91dGlsL2NhcGFiaWxpdGllcyc7XG5leHBvcnQgeyBDVVNUT01fVEFHX0ZPUiB9IGZyb20gJy4vbGliL3V0aWwvYXJncy1wcm94eSc7XG4iXSwic291cmNlUm9vdCI6IiJ9
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3BhY2thZ2VzL0BnbGltbWVyL21hbmFnZXIvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7O0FBUUE7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0EiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQge1xuICBzZXRJbnRlcm5hbEhlbHBlck1hbmFnZXIsXG4gIHNldEludGVybmFsTW9kaWZpZXJNYW5hZ2VyLFxuICBzZXRJbnRlcm5hbENvbXBvbmVudE1hbmFnZXIsXG4gIGdldEludGVybmFsSGVscGVyTWFuYWdlcixcbiAgZ2V0SW50ZXJuYWxNb2RpZmllck1hbmFnZXIsXG4gIGdldEludGVybmFsQ29tcG9uZW50TWFuYWdlcixcbn0gZnJvbSAnLi9saWIvaW50ZXJuYWwvaW5kZXgnO1xuZXhwb3J0IHsgc2V0SGVscGVyTWFuYWdlciwgc2V0TW9kaWZpZXJNYW5hZ2VyLCBzZXRDb21wb25lbnRNYW5hZ2VyIH0gZnJvbSAnLi9saWIvcHVibGljL2luZGV4JztcbmV4cG9ydCB7IGNvbXBvbmVudENhcGFiaWxpdGllcywgQ3VzdG9tQ29tcG9uZW50TWFuYWdlciB9IGZyb20gJy4vbGliL3B1YmxpYy9jb21wb25lbnQnO1xuZXhwb3J0IHsgbW9kaWZpZXJDYXBhYmlsaXRpZXMsIEN1c3RvbU1vZGlmaWVyTWFuYWdlciB9IGZyb20gJy4vbGliL3B1YmxpYy9tb2RpZmllcic7XG5leHBvcnQgeyBoZWxwZXJDYXBhYmlsaXRpZXMsIGhhc0Rlc3Ryb3lhYmxlLCBoYXNWYWx1ZSwgY3VzdG9tSGVscGVyIH0gZnJvbSAnLi9saWIvcHVibGljL2hlbHBlcic7XG5leHBvcnQgeyBnZXRDb21wb25lbnRUZW1wbGF0ZSwgc2V0Q29tcG9uZW50VGVtcGxhdGUgfSBmcm9tICcuL2xpYi9wdWJsaWMvdGVtcGxhdGUnO1xuZXhwb3J0IHsgY2FwYWJpbGl0eUZsYWdzRnJvbSwgaGFzQ2FwYWJpbGl0eSwgbWFuYWdlckhhc0NhcGFiaWxpdHkgfSBmcm9tICcuL2xpYi91dGlsL2NhcGFiaWxpdGllcyc7XG5leHBvcnQgeyBnZXRDdXN0b21UYWdGb3IsIHNldEN1c3RvbVRhZ0ZvciB9IGZyb20gJy4vbGliL3V0aWwvYXJncy1wcm94eSc7XG4iXSwic291cmNlUm9vdCI6IiJ9

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

});
exports.argsProxyFor = exports.CUSTOM_TAG_FOR = void 0;
exports.getCustomTagFor = getCustomTagFor;
exports.setCustomTagFor = setCustomTagFor;
exports.argsProxyFor = void 0;

@@ -17,5 +19,12 @@ var _env = require("@glimmer/env");

var CUSTOM_TAG_FOR = (0, _util.enumerableSymbol)('CUSTOM_TAG_FOR');
exports.CUSTOM_TAG_FOR = CUSTOM_TAG_FOR;
var CUSTOM_TAG_FOR = new WeakMap();
function getCustomTagFor(obj) {
return CUSTOM_TAG_FOR.get(obj);
}
function setCustomTagFor(obj, customTagFn) {
CUSTOM_TAG_FOR.set(obj, customTagFn);
}
function convertToInt(prop) {

@@ -55,2 +64,78 @@ if (typeof prop === 'symbol') return null;

var NamedArgsProxy = /*#__PURE__*/function () {
function NamedArgsProxy(named) {
this.named = named;
}
var _proto = NamedArgsProxy.prototype;
_proto.get = function get(_target, prop) {
var ref = this.named[prop];
if (ref !== undefined) {
return (0, _reference.valueForRef)(ref);
}
};
_proto.has = function has(_target, prop) {
return prop in this.named;
};
_proto.ownKeys = function ownKeys() {
return Object.keys(this.named);
};
_proto.isExtensible = function isExtensible() {
return false;
};
_proto.getOwnPropertyDescriptor = function getOwnPropertyDescriptor(_target, prop) {
if (_env.DEBUG && !(prop in this.named)) {
throw new Error("args proxies do not have real property descriptors, so you should never need to call getOwnPropertyDescriptor yourself. This code exists for enumerability, such as in for-in loops and Object.keys(). Attempted to get the descriptor for `" + String(prop) + "`");
}
return {
enumerable: true,
configurable: true
};
};
return NamedArgsProxy;
}();
var PositionalArgsProxy = /*#__PURE__*/function () {
function PositionalArgsProxy(positional) {
this.positional = positional;
}
var _proto2 = PositionalArgsProxy.prototype;
_proto2.get = function get(target, prop) {
var positional = this.positional;
if (prop === 'length') {
return positional.length;
}
var parsed = convertToInt(prop);
if (parsed !== null && parsed < positional.length) {
return (0, _reference.valueForRef)(positional[parsed]);
}
return target[prop];
};
_proto2.isExtensible = function isExtensible() {
return false;
};
_proto2.has = function has(_target, prop) {
var parsed = convertToInt(prop);
return parsed !== null && parsed < this.positional.length;
};
return PositionalArgsProxy;
}();
if (_util.HAS_NATIVE_PROXY) {

@@ -61,66 +146,12 @@ exports.argsProxyFor = argsProxyFor = function argsProxyFor(capturedArgs, type) {

var getNamedTag = function getNamedTag(key) {
var getNamedTag = function getNamedTag(_obj, key) {
return tagForNamedArg(named, key);
};
var getPositionalTag = function getPositionalTag(key) {
var getPositionalTag = function getPositionalTag(_obj, key) {
return tagForPositionalArg(positional, key);
};
var namedHandler = {
get: function get(_target, prop) {
var ref = named[prop];
if (ref !== undefined) {
return (0, _reference.valueForRef)(ref);
} else if (prop === CUSTOM_TAG_FOR) {
return getNamedTag;
}
},
has: function has(_target, prop) {
return prop in named;
},
ownKeys: function ownKeys(_target) {
return Object.keys(named);
},
isExtensible: function isExtensible() {
return false;
},
getOwnPropertyDescriptor: function getOwnPropertyDescriptor(_target, prop) {
if (_env.DEBUG && !(prop in named)) {
throw new Error("args proxies do not have real property descriptors, so you should never need to call getOwnPropertyDescriptor yourself. This code exists for enumerability, such as in for-in loops and Object.keys(). Attempted to get the descriptor for `" + String(prop) + "`");
}
return {
enumerable: true,
configurable: true
};
}
};
var positionalHandler = {
get: function get(target, prop) {
if (prop === 'length') {
return positional.length;
}
var parsed = convertToInt(prop);
if (parsed !== null && parsed < positional.length) {
return (0, _reference.valueForRef)(positional[parsed]);
}
if (prop === CUSTOM_TAG_FOR) {
return getPositionalTag;
}
return target[prop];
},
isExtensible: function isExtensible() {
return false;
},
has: function has(_target, prop) {
var parsed = convertToInt(prop);
return parsed !== null && parsed < positional.length;
}
};
var namedHandler = new NamedArgsProxy(named);
var positionalHandler = new PositionalArgsProxy(positional);
var namedTarget = Object.create(null);

@@ -143,5 +174,9 @@ var positionalTarget = [];

var namedProxy = new Proxy(namedTarget, namedHandler);
var positionalProxy = new Proxy(positionalTarget, positionalHandler);
setCustomTagFor(namedProxy, getNamedTag);
setCustomTagFor(positionalProxy, getPositionalTag);
return {
named: new Proxy(namedTarget, namedHandler),
positional: new Proxy(positionalTarget, positionalHandler)
named: namedProxy,
positional: positionalProxy
};

@@ -154,7 +189,7 @@ };

var getNamedTag = function getNamedTag(key) {
var getNamedTag = function getNamedTag(_obj, key) {
return tagForNamedArg(named, key);
};
var getPositionalTag = function getPositionalTag(key) {
var getPositionalTag = function getPositionalTag(_obj, key) {
return tagForPositionalArg(positional, key);

@@ -164,7 +199,5 @@ };

var namedProxy = {};
Object.defineProperty(namedProxy, CUSTOM_TAG_FOR, {
configurable: false,
enumerable: false,
value: getNamedTag
});
var positionalProxy = [];
setCustomTagFor(namedProxy, getNamedTag);
setCustomTagFor(positionalProxy, getPositionalTag);
Object.keys(named).forEach(function (name) {

@@ -179,8 +212,2 @@ Object.defineProperty(namedProxy, name, {

});
var positionalProxy = [];
Object.defineProperty(positionalProxy, CUSTOM_TAG_FOR, {
configurable: false,
enumerable: false,
value: getPositionalTag
});
positional.forEach(function (ref, index) {

@@ -210,2 +237,2 @@ Object.defineProperty(positionalProxy, index, {

}
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL0BnbGltbWVyL21hbmFnZXIvbGliL3V0aWwvYXJncy1wcm94eS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7O0FBQUE7O0FBT0E7O0FBQ0E7O0FBQ0E7O0FBRU8sSUFBTSxjQUFjLEdBQUcsNEJBQXZCLGdCQUF1QixDQUF2Qjs7O0FBRVAsU0FBQSxZQUFBLENBQUEsSUFBQSxFQUFvRDtBQUNsRCxNQUFJLE9BQUEsSUFBQSxLQUFKLFFBQUEsRUFBOEIsT0FBQSxJQUFBO0FBRTlCLE1BQU0sR0FBRyxHQUFHLE1BQU0sQ0FBbEIsSUFBa0IsQ0FBbEI7QUFFQSxNQUFJLEtBQUssQ0FBVCxHQUFTLENBQVQsRUFBZ0IsT0FBQSxJQUFBO0FBRWhCLFNBQU8sR0FBRyxHQUFILENBQUEsS0FBQSxDQUFBLEdBQUEsR0FBQSxHQUFQLElBQUE7QUFDRDs7QUFFRCxTQUFBLGNBQUEsQ0FBQSxTQUFBLEVBQUEsR0FBQSxFQUFzRTtBQUNwRSxTQUFPLHNCQUFNLFlBQUs7QUFDaEIsUUFBSSxHQUFHLElBQVAsU0FBQSxFQUFzQjtBQUNwQixrQ0FBWSxTQUFTLENBQXJCLEdBQXFCLENBQXJCO0FBQ0Q7QUFISCxHQUFPLENBQVA7QUFLRDs7QUFFRCxTQUFBLG1CQUFBLENBQUEsY0FBQSxFQUFBLEdBQUEsRUFBcUY7QUFDbkYsU0FBTyxzQkFBTSxZQUFLO0FBQ2hCLFFBQUksR0FBRyxLQUFQLElBQUEsRUFBa0I7QUFDaEI7QUFDQSxNQUFBLGNBQWMsQ0FBZCxPQUFBLENBQUEsc0JBQUE7QUFDRDs7QUFFRCxRQUFNLE1BQU0sR0FBRyxZQUFZLENBQTNCLEdBQTJCLENBQTNCOztBQUVBLFFBQUksTUFBTSxLQUFOLElBQUEsSUFBbUIsTUFBTSxHQUFHLGNBQWMsQ0FBOUMsTUFBQSxFQUF1RDtBQUNyRDtBQUNBLGtDQUFZLGNBQWMsQ0FBMUIsTUFBMEIsQ0FBMUI7QUFDRDtBQVhILEdBQU8sQ0FBUDtBQWFEOztBQUVNLElBQUEs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QU8sNEJBQVAsR0FBTyxDQUFQO0FBQ0Q7QUFMMkMsT0FBOUM7QUFERixLQUFBOztBQVVBLFFBQUEsVUFBQSxFQUFXO0FBQ1Q7QUFDQTtBQUNBO0FBQ0EsTUFBQSxNQUFNLENBQU4sTUFBQSxDQUFBLFVBQUE7QUFDQSxNQUFBLE1BQU0sQ0FBTixNQUFBLENBQUEsZUFBQTtBQUNEOztBQUVELFdBQU87QUFDTCxNQUFBLEtBQUssRUFEQSxVQUFBO0FBRUwsTUFBQSxVQUFVLEVBQUU7QUFGUCxLQUFQO0FBbERGLEdBQUE7QUF1REQiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBERUJVRyB9IGZyb20gJ0BnbGltbWVyL2Vudic7XG5pbXBvcnQge1xuICBBcmd1bWVudHMsXG4gIENhcHR1cmVkQXJndW1lbnRzLFxuICBDYXB0dXJlZE5hbWVkQXJndW1lbnRzLFxuICBDYXB0dXJlZFBvc2l0aW9uYWxBcmd1bWVudHMsXG59IGZyb20gJ0BnbGltbWVyL2ludGVyZmFjZXMnO1xuaW1wb3J0IHsgUmVmZXJlbmNlLCB2YWx1ZUZvclJlZiB9IGZyb20gJ0BnbGltbWVyL3JlZmVyZW5jZSc7XG5pbXBvcnQgeyBIQVNfTkFUSVZFX1BST1hZLCBlbnVtZXJhYmxlU3ltYm9sIH0gZnJvbSAnQGdsaW1tZXIvdXRpbCc7XG5pbXBvcnQgeyBUYWcsIHRyYWNrIH0gZnJvbSAnQGdsaW1tZXIvdmFsaWRhdG9yJztcblxuZXhwb3J0IGNvbnN0IENVU1RPTV9UQUdfRk9SID0gZW51bWVyYWJsZVN5bWJvbCgnQ1VTVE9NX1RBR19GT1InKTtcblxuZnVuY3Rpb24gY29udmVydFRvSW50KHByb3A6IG51bWJlciB8IHN0cmluZyB8IHN5bWJvbCk6IG51bWJlciB8IG51bGwge1xuICBpZiAodHlwZW9mIHByb3AgPT09ICdzeW1ib2wnKSByZXR1cm4gbnVsbDtcblxuICBjb25zdCBudW0gPSBOdW1iZXIocHJvcCk7XG5cbiAgaWYgKGlzTmFOKG51bSkpIHJldHVybiBudWxsO1xuXG4gIHJldHVybiBudW0gJSAxID09PSAwID8gbnVtIDogbnVsbDtcbn1cblxuZnVuY3Rpb24gdGFnRm9yTmFtZWRBcmcobmFtZWRBcmdzOiBDYXB0dXJlZE5hbWVkQXJndW1lbnRzLCBrZXk6IHN0cmluZyk6IFRhZyB7XG4gIHJldHVybiB0cmFjaygoKSA9PiB7XG4gICAgaWYgKGtleSBpbiBuYW1lZEFyZ3MpIHtcbiAgICAgIHZhbHVlRm9yUmVmKG5hbWVkQXJnc1trZXldKTtcbiAgICB9XG4gIH0pO1xufVxuXG5mdW5jdGlvbiB0YWdGb3JQb3NpdGlvbmFsQXJnKHBvc2l0aW9uYWxBcmdzOiBDYXB0dXJlZFBvc2l0aW9uYWxBcmd1bWVudHMsIGtleTogc3RyaW5nKTogVGFnIHtcbiAgcmV0dXJuIHRyYWNrKCgpID0+IHtcbiAgICBpZiAoa2V5ID09PSAnW10nKSB7XG4gICAgICAvLyBjb25zdW1lIGFsbCBvZiB0aGUgdGFncyBpbiB0aGUgcG9zaXRpb25hbCBhcnJheVxuICAgICAgcG9zaXRpb25hbEFyZ3MuZm9yRWFjaCh2YWx1ZUZvclJlZik7XG4gICAgfVxuXG4gICAgY29uc3QgcGFyc2VkID0gY29udmVydFRvSW50KGtleSk7XG5cbiAgICBpZiAocGFyc2VkICE9PSBudWxsICYmIHBhcnNlZCA8IHBvc2l0aW9uYWxBcmdzLmxlbmd0aCkge1xuICAgICAgLy8gY29uc3VtZSB0aGUgdGFnIG9mIHRoZSByZWZlcmVuY2VkIGluZGV4XG4gICAgICB2YWx1ZUZvclJlZihwb3NpdGlvbmFsQXJnc1twYXJzZWRdKTtcbiAgICB9XG4gIH0pO1xufVxuXG5leHBvcnQgbGV0IGFyZ3NQcm94eUZvcjogKFxuICBjYXB0dXJlZEFyZ3M6IENhcHR1cmVkQXJndW1lbnRzLFxuICB0eXBlOiAnY29tcG9uZW50JyB8ICdoZWxwZXInIHwgJ21vZGlmaWVyJ1xuKSA9PiBBcmd1bWVudHM7XG5cbmlmIChIQVNfTkFUSVZFX1BST1hZKSB7XG4gIGFyZ3NQcm94eUZvciA9IChjYXB0dXJlZEFyZ3MsIHR5cGUpID0+IHtcbiAgICBjb25zdCB7IG5hbWVkLCBwb3NpdGlvbmFsIH0gPSBjYXB0dXJlZEFyZ3M7XG5cbiAgICBsZXQgZ2V0TmFtZWRUYWcgPSAoa2V5OiBzdHJpbmcpID0+IHRhZ0Zvck5hbWVkQXJnKG5hbWVkLCBrZXkpO1xuICAgIGxldCBnZXRQb3NpdGlvbmFsVGFnID0gKGtleTogc3RyaW5nKSA9PiB0YWdGb3JQb3NpdGlvbmFsQXJnKHBvc2l0aW9uYWwsIGtleSk7XG5cbiAgICBjb25zdCBuYW1lZEhhbmRsZXI6IFByb3h5SGFuZGxlcjx7fT4gPSB7XG4gICAgICBnZXQoX3RhcmdldCwgcHJvcCkge1xuICAgICAgICBjb25zdCByZWYgPSBuYW1lZFtwcm9wIGFzIHN0cmluZ107XG5cbiAgICAgICAgaWYgKHJlZiAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgcmV0dXJuIHZhbHVlRm9yUmVmKHJlZik7XG4gICAgICAgIH0gZWxzZSBpZiAocHJvcCA9PT0gQ1VTVE9NX1RBR19GT1IpIHtcbiAgICAgICAgICByZXR1cm4gZ2V0TmFtZWRUYWc7XG4gICAgICAgIH1cbiAgICAgIH0sXG5cbiAgICAgIGhhcyhfdGFyZ2V0LCBwcm9wKSB7XG4gICAgICAgIHJldHVybiBwcm9wIGluIG5hbWVkO1xuICAgICAgfSxcblxuICAgICAgb3duS2V5cyhfdGFyZ2V0KSB7XG4gICAgICAgIHJldHVybiBPYmplY3Qua2V5cyhuYW1lZCk7XG4gICAgICB9LFxuXG4gICAgICBpc0V4dGVuc2libGUoKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH0sXG5cbiAgICAgIGdldE93blByb3BlcnR5RGVzY3JpcHRvcihfdGFyZ2V0LCBwcm9wKSB7XG4gICAgICAgIGlmIChERUJVRyAmJiAhKHByb3AgaW4gbmFtZWQpKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAgICAgYGFyZ3MgcHJveGllcyBkbyBub3QgaGF2ZSByZWFsIHByb3BlcnR5IGRlc2NyaXB0b3JzLCBzbyB5b3Ugc2hvdWxkIG5ldmVyIG5lZWQgdG8gY2FsbCBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IgeW91cnNlbGYuIFRoaXMgY29kZSBleGlzdHMgZm9yIGVudW1lcmFiaWxpdHksIHN1Y2ggYXMgaW4gZm9yLWluIGxvb3BzIGFuZCBPYmplY3Qua2V5cygpLiBBdHRlbXB0ZWQgdG8gZ2V0IHRoZSBkZXNjcmlwdG9yIGZvciBcXGAke1N0cmluZyhcbiAgICAgICAgICAgICAgcHJvcFxuICAgICAgICAgICAgKX1cXGBgXG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgICAgICAgICBjb25maWd1cmFibGU6IHRydWUsXG4gICAgICAgIH07XG4gICAgICB9LFxuICAgIH07XG5cbiAgICBjb25zdCBwb3NpdGlvbmFsSGFuZGxlcjogUHJveHlIYW5kbGVyPFtdPiA9IHtcbiAgICAgIGdldCh0YXJnZXQsIHByb3ApIHtcbiAgICAgICAgaWYgKHByb3AgPT09ICdsZW5ndGgnKSB7XG4gICAgICAgICAgcmV0dXJuIHBvc2l0aW9uYWwubGVuZ3RoO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgcGFyc2VkID0gY29udmVydFRvSW50KHByb3ApO1xuXG4gICAgICAgIGlmIChwYXJzZWQgIT09IG51bGwgJiYgcGFyc2VkIDwgcG9zaXRpb25hbC5sZW5ndGgpIHtcbiAgICAgICAgICByZXR1cm4gdmFsdWVGb3JSZWYocG9zaXRpb25hbFtwYXJzZWRdKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChwcm9wID09PSBDVVNUT01fVEFHX0ZPUikge1xuICAgICAgICAgIHJldHVybiBnZXRQb3NpdGlvbmFsVGFnO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuICh0YXJnZXQgYXMgYW55KVtwcm9wXTtcbiAgICAgIH0sXG5cbiAgICAgIGlzRXh0ZW5zaWJsZSgpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfSxcblxuICAgICAgaGFzKF90YXJnZXQsIHByb3ApIHtcbiAgICAgICAgY29uc3QgcGFyc2VkID0gY29udmVydFRvSW50KHByb3ApO1xuXG4gICAgICAgIHJldHVybiBwYXJzZWQgIT09IG51bGwgJiYgcGFyc2VkIDwgcG9zaXRpb25hbC5sZW5ndGg7XG4gICAgICB9LFxuICAgIH07XG5cbiAgICBjb25zdCBuYW1lZFRhcmdldCA9IE9iamVjdC5jcmVhdGUobnVsbCk7XG4gICAgY29uc3QgcG9zaXRpb25hbFRhcmdldDogdW5rbm93bltdID0gW107XG5cbiAgICBpZiAoREVCVUcpIHtcbiAgICAgIGNvbnN0IHNldEhhbmRsZXIgPSBmdW5jdGlvbiAoX3RhcmdldDogdW5rbm93biwgcHJvcDogc3ltYm9sIHwgc3RyaW5nIHwgbnVtYmVyKTogbmV2ZXIge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICAgYFlvdSBhdHRlbXB0ZWQgdG8gc2V0ICR7U3RyaW5nKFxuICAgICAgICAgICAgcHJvcFxuICAgICAgICAgICl9IG9uIHRoZSBhcmd1bWVudHMgb2YgYSBjb21wb25lbnQsIGhlbHBlciwgb3IgbW9kaWZpZXIuIEFyZ3VtZW50cyBhcmUgaW1tdXRhYmxlIGFuZCBjYW5ub3QgYmUgdXBkYXRlZCBkaXJlY3RseSwgdGhleSBhbHdheXMgcmVwcmVzZW50IHRoZSB2YWx1ZXMgdGhhdCBpcyBwYXNzZWQgZG93bi4gSWYgeW91IHdhbnQgdG8gc2V0IGRlZmF1bHQgdmFsdWVzLCB5b3Ugc2hvdWxkIHVzZSBhIGdldHRlciBhbmQgbG9jYWwgdHJhY2tlZCBzdGF0ZSBpbnN0ZWFkLmBcbiAgICAgICAgKTtcbiAgICAgIH07XG5cbiAgICAgIGNvbnN0IGZvckluRGVidWdIYW5kbGVyID0gKCk6IG5ldmVyID0+IHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAgIGBPYmplY3Qua2V5cygpIHdhcyBjYWxsZWQgb24gdGhlIHBvc2l0aW9uYWwgYXJndW1lbnRzIGFycmF5IGZvciBhICR7dHlwZX0sIHdoaWNoIGlzIG5vdCBzdXBwb3J0ZWQuIFRoaXMgZnVuY3Rpb24gaXMgYSBsb3ctbGV2ZWwgZnVuY3Rpb24gdGhhdCBzaG91bGQgbm90IG5lZWQgdG8gYmUgY2FsbGVkIGZvciBwb3NpdGlvbmFsIGFyZ3VtZW50IGFycmF5cy4gWW91IG1heSBiZSBhdHRlbXB0aW5nIHRvIGl0ZXJhdGUgb3ZlciB0aGUgYXJyYXkgdXNpbmcgZm9yLi4uaW4gaW5zdGVhZCBvZiBmb3IuLi5vZi5gXG4gICAgICAgICk7XG4gICAgICB9O1xuXG4gICAgICBuYW1lZEhhbmRsZXIuc2V0ID0gc2V0SGFuZGxlcjtcbiAgICAgIHBvc2l0aW9uYWxIYW5kbGVyLnNldCA9IHNldEhhbmRsZXI7XG4gICAgICBwb3NpdGlvbmFsSGFuZGxlci5vd25LZXlzID0gZm9ySW5EZWJ1Z0hhbmRsZXI7XG4gICAgfVxuXG4gICAgcmV0dXJuIHtcbiAgICAgIG5hbWVkOiBuZXcgUHJveHkobmFtZWRUYXJnZXQsIG5hbWVkSGFuZGxlciksXG4gICAgICBwb3NpdGlvbmFsOiBuZXcgUHJveHkocG9zaXRpb25hbFRhcmdldCwgcG9zaXRpb25hbEhhbmRsZXIpLFxuICAgIH07XG4gIH07XG59IGVsc2Uge1xuICBhcmdzUHJveHlGb3IgPSAoY2FwdHVyZWRBcmdzLCBfdHlwZSkgPT4ge1xuICAgIGNvbnN0IHsgbmFtZWQsIHBvc2l0aW9uYWwgfSA9IGNhcHR1cmVkQXJncztcblxuICAgIGxldCBnZXROYW1lZFRhZyA9IChrZXk6IHN0cmluZykgPT4gdGFnRm9yTmFtZWRBcmcobmFtZWQsIGtleSk7XG4gICAgbGV0IGdldFBvc2l0aW9uYWxUYWcgPSAoa2V5OiBzdHJpbmcpID0+IHRhZ0ZvclBvc2l0aW9uYWxBcmcocG9zaXRpb25hbCwga2V5KTtcblxuICAgIGxldCBuYW1lZFByb3h5ID0ge307XG5cbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkobmFtZWRQcm94eSwgQ1VTVE9NX1RBR19GT1IsIHtcbiAgICAgIGNvbmZpZ3VyYWJsZTogZmFsc2UsXG4gICAgICBlbnVtZXJhYmxlOiBmYWxzZSxcbiAgICAgIHZhbHVlOiBnZXROYW1lZFRhZyxcbiAgICB9KTtcblxuICAgIE9iamVjdC5rZXlzKG5hbWVkKS5mb3JFYWNoKChuYW1lKSA9PiB7XG4gICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkobmFtZWRQcm94eSwgbmFtZSwge1xuICAgICAgICBlbnVtZXJhYmxlOiB0cnVlLFxuICAgICAgICBjb25maWd1cmFibGU6IHRydWUsXG4gICAgICAgIGdldCgpIHtcbiAgICAgICAgICByZXR1cm4gdmFsdWVGb3JSZWYobmFtZWRbbmFtZV0pO1xuICAgICAgICB9LFxuICAgICAgfSk7XG4gICAgfSk7XG5cbiAgICBsZXQgcG9zaXRpb25hbFByb3h5OiB1bmtub3duW10gPSBbXTtcblxuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShwb3NpdGlvbmFsUHJveHksIENVU1RPTV9UQUdfRk9SLCB7XG4gICAgICBjb25maWd1cmFibGU6IGZhbHNlLFxuICAgICAgZW51bWVyYWJsZTogZmFsc2UsXG4gICAgICB2YWx1ZTogZ2V0UG9zaXRpb25hbFRhZyxcbiAgICB9KTtcblxuICAgIHBvc2l0aW9uYWwuZm9yRWFjaCgocmVmOiBSZWZlcmVuY2UsIGluZGV4OiBudW1iZXIpID0+IHtcbiAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShwb3NpdGlvbmFsUHJveHksIGluZGV4LCB7XG4gICAgICAgIGVudW1lcmFibGU6IHRydWUsXG4gICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZSxcbiAgICAgICAgZ2V0KCkge1xuICAgICAgICAgIHJldHVybiB2YWx1ZUZvclJlZihyZWYpO1xuICAgICAgICB9LFxuICAgICAgfSk7XG4gICAgfSk7XG5cbiAgICBpZiAoREVCVUcpIHtcbiAgICAgIC8vIFByZXZlbnQgbXV0YXRpb25zIGluIGRldmVsb3BtZW50IG1vZGUuIFRoaXMgd2lsbCBub3QgcHJldmVudCB0aGVcbiAgICAgIC8vIHByb3h5IGZyb20gdXBkYXRpbmcsIGJ1dCB3aWxsIHByZXZlbnQgYXNzaWduaW5nIG5ldyB2YWx1ZXMgb3IgcHVzaGluZ1xuICAgICAgLy8gZm9yIGluc3RhbmNlLlxuICAgICAgT2JqZWN0LmZyZWV6ZShuYW1lZFByb3h5KTtcbiAgICAgIE9iamVjdC5mcmVlemUocG9zaXRpb25hbFByb3h5KTtcbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgbmFtZWQ6IG5hbWVkUHJveHksXG4gICAgICBwb3NpdGlvbmFsOiBwb3NpdGlvbmFsUHJveHksXG4gICAgfTtcbiAgfTtcbn1cbiJdLCJzb3VyY2VSb290IjoiIn0=
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL0BnbGltbWVyL21hbmFnZXIvbGliL3V0aWwvYXJncy1wcm94eS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFBQTs7QUFPQTs7QUFDQTs7QUFDQTs7QUFFQSxJQUFNLGNBQWMsR0FBRyxJQUF2QixPQUF1QixFQUF2Qjs7QUFFTSxTQUFBLGVBQUEsQ0FBQSxHQUFBLEVBQXFDO0FBQ3pDLFNBQU8sY0FBYyxDQUFkLEdBQUEsQ0FBUCxHQUFPLENBQVA7QUFDRDs7QUFFSyxTQUFBLGVBQUEsQ0FBQSxHQUFBLEVBQUEsV0FBQSxFQUFxRjtBQUN6RixFQUFBLGNBQWMsQ0FBZCxHQUFBLENBQUEsR0FBQSxFQUFBLFdBQUE7QUFDRDs7QUFFRCxTQUFBLFlBQUEsQ0FBQSxJQUFBLEVBQW9EO0FBQ2xELE1BQUksT0FBQSxJQUFBLEtBQUosUUFBQSxFQUE4QixPQUFBLElBQUE7QUFFOUIsTUFBTSxHQUFHLEdBQUcsTUFBTSxDQUFsQixJQUFrQixDQUFsQjtBQUVBLE1BQUksS0FBSyxDQUFULEdBQVMsQ0FBVCxFQUFnQixPQUFBLElBQUE7QUFFaEIsU0FBTyxHQUFHLEdBQUgsQ0FBQSxLQUFBLENBQUEsR0FBQSxHQUFBLEdBQVAsSUFBQTtBQUNEOztBQUVELFNBQUEsY0FBQSxDQUFBLFNBQUEsRUFBQSxHQUFBLEVBQXNFO0FBQ3BFLFNBQU8sc0JBQU0sWUFBSztBQUNoQixRQUFJLEdBQUcsSUFBUCxTQUFBLEVBQXNCO0FBQ3BCLGtDQUFZLFNBQVMsQ0FBckIsR0FBcUIsQ0FBckI7QUFDRDtBQUhILEdBQU8sQ0FBUDtBQUtEOztBQUVELFNBQUEsbUJBQUEsQ0FBQSxjQUFBLEVBQUEsR0FBQSxFQUFxRjtBQUNuRixTQUFPLHNCQUFNLFlBQUs7QUFDaEIsUUFBSSxHQUFHLEtBQVAsSUFBQSxFQUFrQjtBQUNoQjtBQUNBLE1BQUEsY0FBYyxDQUFkLE9BQUEsQ0FBQSxzQkFBQTtBQUNEOztBQUVELFFBQU0sTUFB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QUFBLEVBQThDO0FBQzVDLFFBQUEsVUFBVSxFQURrQyxJQUFBO0FBRTVDLFFBQUEsWUFBWSxFQUZnQyxJQUFBO0FBRzVDLFFBQUEsR0FINEMsRUFBQSxTQUFBLEdBQUEsR0FHekM7QUFDRCxpQkFBTyw0QkFBUCxHQUFPLENBQVA7QUFDRDtBQUwyQyxPQUE5QztBQURGLEtBQUE7O0FBVUEsUUFBQSxVQUFBLEVBQVc7QUFDVDtBQUNBO0FBQ0E7QUFDQSxNQUFBLE1BQU0sQ0FBTixNQUFBLENBQUEsVUFBQTtBQUNBLE1BQUEsTUFBTSxDQUFOLE1BQUEsQ0FBQSxlQUFBO0FBQ0Q7O0FBRUQsV0FBTztBQUNMLE1BQUEsS0FBSyxFQURBLFVBQUE7QUFFTCxNQUFBLFVBQVUsRUFBRTtBQUZQLEtBQVA7QUF4Q0YsR0FBQTtBQTZDRCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERFQlVHIH0gZnJvbSAnQGdsaW1tZXIvZW52JztcbmltcG9ydCB7XG4gIEFyZ3VtZW50cyxcbiAgQ2FwdHVyZWRBcmd1bWVudHMsXG4gIENhcHR1cmVkTmFtZWRBcmd1bWVudHMsXG4gIENhcHR1cmVkUG9zaXRpb25hbEFyZ3VtZW50cyxcbn0gZnJvbSAnQGdsaW1tZXIvaW50ZXJmYWNlcyc7XG5pbXBvcnQgeyBSZWZlcmVuY2UsIHZhbHVlRm9yUmVmIH0gZnJvbSAnQGdsaW1tZXIvcmVmZXJlbmNlJztcbmltcG9ydCB7IEhBU19OQVRJVkVfUFJPWFkgfSBmcm9tICdAZ2xpbW1lci91dGlsJztcbmltcG9ydCB7IFRhZywgdHJhY2sgfSBmcm9tICdAZ2xpbW1lci92YWxpZGF0b3InO1xuXG5jb25zdCBDVVNUT01fVEFHX0ZPUiA9IG5ldyBXZWFrTWFwPG9iamVjdCwgKG9iajogb2JqZWN0LCBrZXk6IHN0cmluZykgPT4gVGFnPigpO1xuXG5leHBvcnQgZnVuY3Rpb24gZ2V0Q3VzdG9tVGFnRm9yKG9iajogb2JqZWN0KTogKChvYmo6IG9iamVjdCwga2V5OiBzdHJpbmcpID0+IFRhZykgfCB1bmRlZmluZWQge1xuICByZXR1cm4gQ1VTVE9NX1RBR19GT1IuZ2V0KG9iaik7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzZXRDdXN0b21UYWdGb3Iob2JqOiBvYmplY3QsIGN1c3RvbVRhZ0ZuOiAob2JqOiBvYmplY3QsIGtleTogc3RyaW5nKSA9PiBUYWcpIHtcbiAgQ1VTVE9NX1RBR19GT1Iuc2V0KG9iaiwgY3VzdG9tVGFnRm4pO1xufVxuXG5mdW5jdGlvbiBjb252ZXJ0VG9JbnQocHJvcDogbnVtYmVyIHwgc3RyaW5nIHwgc3ltYm9sKTogbnVtYmVyIHwgbnVsbCB7XG4gIGlmICh0eXBlb2YgcHJvcCA9PT0gJ3N5bWJvbCcpIHJldHVybiBudWxsO1xuXG4gIGNvbnN0IG51bSA9IE51bWJlcihwcm9wKTtcblxuICBpZiAoaXNOYU4obnVtKSkgcmV0dXJuIG51bGw7XG5cbiAgcmV0dXJuIG51bSAlIDEgPT09IDAgPyBudW0gOiBudWxsO1xufVxuXG5mdW5jdGlvbiB0YWdGb3JOYW1lZEFyZyhuYW1lZEFyZ3M6IENhcHR1cmVkTmFtZWRBcmd1bWVudHMsIGtleTogc3RyaW5nKTogVGFnIHtcbiAgcmV0dXJuIHRyYWNrKCgpID0+IHtcbiAgICBpZiAoa2V5IGluIG5hbWVkQXJncykge1xuICAgICAgdmFsdWVGb3JSZWYobmFtZWRBcmdzW2tleV0pO1xuICAgIH1cbiAgfSk7XG59XG5cbmZ1bmN0aW9uIHRhZ0ZvclBvc2l0aW9uYWxBcmcocG9zaXRpb25hbEFyZ3M6IENhcHR1cmVkUG9zaXRpb25hbEFyZ3VtZW50cywga2V5OiBzdHJpbmcpOiBUYWcge1xuICByZXR1cm4gdHJhY2soKCkgPT4ge1xuICAgIGlmIChrZXkgPT09ICdbXScpIHtcbiAgICAgIC8vIGNvbnN1bWUgYWxsIG9mIHRoZSB0YWdzIGluIHRoZSBwb3NpdGlvbmFsIGFycmF5XG4gICAgICBwb3NpdGlvbmFsQXJncy5mb3JFYWNoKHZhbHVlRm9yUmVmKTtcbiAgICB9XG5cbiAgICBjb25zdCBwYXJzZWQgPSBjb252ZXJ0VG9JbnQoa2V5KTtcblxuICAgIGlmIChwYXJzZWQgIT09IG51bGwgJiYgcGFyc2VkIDwgcG9zaXRpb25hbEFyZ3MubGVuZ3RoKSB7XG4gICAgICAvLyBjb25zdW1lIHRoZSB0YWcgb2YgdGhlIHJlZmVyZW5jZWQgaW5kZXhcbiAgICAgIHZhbHVlRm9yUmVmKHBvc2l0aW9uYWxBcmdzW3BhcnNlZF0pO1xuICAgIH1cbiAgfSk7XG59XG5cbmV4cG9ydCBsZXQgYXJnc1Byb3h5Rm9yOiAoXG4gIGNhcHR1cmVkQXJnczogQ2FwdHVyZWRBcmd1bWVudHMsXG4gIHR5cGU6ICdjb21wb25lbnQnIHwgJ2hlbHBlcicgfCAnbW9kaWZpZXInXG4pID0+IEFyZ3VtZW50cztcblxuY2xhc3MgTmFtZWRBcmdzUHJveHkgaW1wbGVtZW50cyBQcm94eUhhbmRsZXI8e30+IHtcbiAgZGVjbGFyZSBzZXQ/OiAodGFyZ2V0OiB7fSwgcHJvcDogc3RyaW5nIHwgbnVtYmVyIHwgc3ltYm9sKSA9PiBib29sZWFuO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgbmFtZWQ6IENhcHR1cmVkTmFtZWRBcmd1bWVudHMpIHt9XG5cbiAgZ2V0KF90YXJnZXQ6IHt9LCBwcm9wOiBzdHJpbmcgfCBudW1iZXIgfCBzeW1ib2wpIHtcbiAgICBjb25zdCByZWYgPSB0aGlzLm5hbWVkW3Byb3AgYXMgc3RyaW5nXTtcblxuICAgIGlmIChyZWYgIT09IHVuZGVmaW5lZCkge1xuICAgICAgcmV0dXJuIHZhbHVlRm9yUmVmKHJlZik7XG4gICAgfVxuICB9XG5cbiAgaGFzKF90YXJnZXQ6IHt9LCBwcm9wOiBzdHJpbmcgfCBudW1iZXIgfCBzeW1ib2wpIHtcbiAgICByZXR1cm4gcHJvcCBpbiB0aGlzLm5hbWVkO1xuICB9XG5cbiAgb3duS2V5cygpIHtcbiAgICByZXR1cm4gT2JqZWN0LmtleXModGhpcy5uYW1lZCk7XG4gIH1cblxuICBpc0V4dGVuc2libGUoKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKF90YXJnZXQ6IHt9LCBwcm9wOiBzdHJpbmcgfCBudW1iZXIgfCBzeW1ib2wpIHtcbiAgICBpZiAoREVCVUcgJiYgIShwcm9wIGluIHRoaXMubmFtZWQpKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgIGBhcmdzIHByb3hpZXMgZG8gbm90IGhhdmUgcmVhbCBwcm9wZXJ0eSBkZXNjcmlwdG9ycywgc28geW91IHNob3VsZCBuZXZlciBuZWVkIHRvIGNhbGwgZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIHlvdXJzZWxmLiBUaGlzIGNvZGUgZXhpc3RzIGZvciBlbnVtZXJhYmlsaXR5LCBzdWNoIGFzIGluIGZvci1pbiBsb29wcyBhbmQgT2JqZWN0LmtleXMoKS4gQXR0ZW1wdGVkIHRvIGdldCB0aGUgZGVzY3JpcHRvciBmb3IgXFxgJHtTdHJpbmcoXG4gICAgICAgICAgcHJvcFxuICAgICAgICApfVxcYGBcbiAgICAgICk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHtcbiAgICAgIGVudW1lcmFibGU6IHRydWUsXG4gICAgICBjb25maWd1cmFibGU6IHRydWUsXG4gICAgfTtcbiAgfVxufVxuXG5jbGFzcyBQb3NpdGlvbmFsQXJnc1Byb3h5IGltcGxlbWVudHMgUHJveHlIYW5kbGVyPFtdPiB7XG4gIGRlY2xhcmUgc2V0PzogKHRhcmdldDogW10sIHByb3A6IHN0cmluZyB8IG51bWJlciB8IHN5bWJvbCkgPT4gYm9vbGVhbjtcbiAgZGVjbGFyZSBvd25LZXlzPzogKHRhcmdldDogW10pID0+IHN0cmluZ1tdO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcG9zaXRpb25hbDogQ2FwdHVyZWRQb3NpdGlvbmFsQXJndW1lbnRzKSB7fVxuXG4gIGdldCh0YXJnZXQ6IFtdLCBwcm9wOiBzdHJpbmcgfCBudW1iZXIgfCBzeW1ib2wpIHtcbiAgICBsZXQgeyBwb3NpdGlvbmFsIH0gPSB0aGlzO1xuXG4gICAgaWYgKHByb3AgPT09ICdsZW5ndGgnKSB7XG4gICAgICByZXR1cm4gcG9zaXRpb25hbC5sZW5ndGg7XG4gICAgfVxuXG4gICAgY29uc3QgcGFyc2VkID0gY29udmVydFRvSW50KHByb3ApO1xuXG4gICAgaWYgKHBhcnNlZCAhPT0gbnVsbCAmJiBwYXJzZWQgPCBwb3NpdGlvbmFsLmxlbmd0aCkge1xuICAgICAgcmV0dXJuIHZhbHVlRm9yUmVmKHBvc2l0aW9uYWxbcGFyc2VkXSk7XG4gICAgfVxuXG4gICAgcmV0dXJuICh0YXJnZXQgYXMgYW55KVtwcm9wXTtcbiAgfVxuXG4gIGlzRXh0ZW5zaWJsZSgpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBoYXMoX3RhcmdldDogW10sIHByb3A6IHN0cmluZyB8IG51bWJlciB8IHN5bWJvbCkge1xuICAgIGNvbnN0IHBhcnNlZCA9IGNvbnZlcnRUb0ludChwcm9wKTtcblxuICAgIHJldHVybiBwYXJzZWQgIT09IG51bGwgJiYgcGFyc2VkIDwgdGhpcy5wb3NpdGlvbmFsLmxlbmd0aDtcbiAgfVxufVxuXG5pZiAoSEFTX05BVElWRV9QUk9YWSkge1xuICBhcmdzUHJveHlGb3IgPSAoY2FwdHVyZWRBcmdzLCB0eXBlKSA9PiB7XG4gICAgY29uc3QgeyBuYW1lZCwgcG9zaXRpb25hbCB9ID0gY2FwdHVyZWRBcmdzO1xuXG4gICAgbGV0IGdldE5hbWVkVGFnID0gKF9vYmo6IG9iamVjdCwga2V5OiBzdHJpbmcpID0+IHRhZ0Zvck5hbWVkQXJnKG5hbWVkLCBrZXkpO1xuICAgIGxldCBnZXRQb3NpdGlvbmFsVGFnID0gKF9vYmo6IG9iamVjdCwga2V5OiBzdHJpbmcpID0+IHRhZ0ZvclBvc2l0aW9uYWxBcmcocG9zaXRpb25hbCwga2V5KTtcblxuICAgIGNvbnN0IG5hbWVkSGFuZGxlciA9IG5ldyBOYW1lZEFyZ3NQcm94eShuYW1lZCk7XG4gICAgY29uc3QgcG9zaXRpb25hbEhhbmRsZXIgPSBuZXcgUG9zaXRpb25hbEFyZ3NQcm94eShwb3NpdGlvbmFsKTtcblxuICAgIGNvbnN0IG5hbWVkVGFyZ2V0ID0gT2JqZWN0LmNyZWF0ZShudWxsKTtcbiAgICBjb25zdCBwb3NpdGlvbmFsVGFyZ2V0OiB1bmtub3duW10gPSBbXTtcblxuICAgIGlmIChERUJVRykge1xuICAgICAgY29uc3Qgc2V0SGFuZGxlciA9IGZ1bmN0aW9uIChfdGFyZ2V0OiB1bmtub3duLCBwcm9wOiBzeW1ib2wgfCBzdHJpbmcgfCBudW1iZXIpOiBuZXZlciB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICBgWW91IGF0dGVtcHRlZCB0byBzZXQgJHtTdHJpbmcoXG4gICAgICAgICAgICBwcm9wXG4gICAgICAgICAgKX0gb24gdGhlIGFyZ3VtZW50cyBvZiBhIGNvbXBvbmVudCwgaGVscGVyLCBvciBtb2RpZmllci4gQXJndW1lbnRzIGFyZSBpbW11dGFibGUgYW5kIGNhbm5vdCBiZSB1cGRhdGVkIGRpcmVjdGx5LCB0aGV5IGFsd2F5cyByZXByZXNlbnQgdGhlIHZhbHVlcyB0aGF0IGlzIHBhc3NlZCBkb3duLiBJZiB5b3Ugd2FudCB0byBzZXQgZGVmYXVsdCB2YWx1ZXMsIHlvdSBzaG91bGQgdXNlIGEgZ2V0dGVyIGFuZCBsb2NhbCB0cmFja2VkIHN0YXRlIGluc3RlYWQuYFxuICAgICAgICApO1xuICAgICAgfTtcblxuICAgICAgY29uc3QgZm9ySW5EZWJ1Z0hhbmRsZXIgPSAoKTogbmV2ZXIgPT4ge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICAgYE9iamVjdC5rZXlzKCkgd2FzIGNhbGxlZCBvbiB0aGUgcG9zaXRpb25hbCBhcmd1bWVudHMgYXJyYXkgZm9yIGEgJHt0eXBlfSwgd2hpY2ggaXMgbm90IHN1cHBvcnRlZC4gVGhpcyBmdW5jdGlvbiBpcyBhIGxvdy1sZXZlbCBmdW5jdGlvbiB0aGF0IHNob3VsZCBub3QgbmVlZCB0byBiZSBjYWxsZWQgZm9yIHBvc2l0aW9uYWwgYXJndW1lbnQgYXJyYXlzLiBZb3UgbWF5IGJlIGF0dGVtcHRpbmcgdG8gaXRlcmF0ZSBvdmVyIHRoZSBhcnJheSB1c2luZyBmb3IuLi5pbiBpbnN0ZWFkIG9mIGZvci4uLm9mLmBcbiAgICAgICAgKTtcbiAgICAgIH07XG5cbiAgICAgIG5hbWVkSGFuZGxlci5zZXQgPSBzZXRIYW5kbGVyO1xuICAgICAgcG9zaXRpb25hbEhhbmRsZXIuc2V0ID0gc2V0SGFuZGxlcjtcbiAgICAgIHBvc2l0aW9uYWxIYW5kbGVyLm93bktleXMgPSBmb3JJbkRlYnVnSGFuZGxlcjtcbiAgICB9XG5cbiAgICBjb25zdCBuYW1lZFByb3h5ID0gbmV3IFByb3h5KG5hbWVkVGFyZ2V0LCBuYW1lZEhhbmRsZXIpO1xuICAgIGNvbnN0IHBvc2l0aW9uYWxQcm94eSA9IG5ldyBQcm94eShwb3NpdGlvbmFsVGFyZ2V0LCBwb3NpdGlvbmFsSGFuZGxlcik7XG5cbiAgICBzZXRDdXN0b21UYWdGb3IobmFtZWRQcm94eSwgZ2V0TmFtZWRUYWcpO1xuICAgIHNldEN1c3RvbVRhZ0Zvcihwb3NpdGlvbmFsUHJveHksIGdldFBvc2l0aW9uYWxUYWcpO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIG5hbWVkOiBuYW1lZFByb3h5LFxuICAgICAgcG9zaXRpb25hbDogcG9zaXRpb25hbFByb3h5LFxuICAgIH07XG4gIH07XG59IGVsc2Uge1xuICBhcmdzUHJveHlGb3IgPSAoY2FwdHVyZWRBcmdzLCBfdHlwZSkgPT4ge1xuICAgIGNvbnN0IHsgbmFtZWQsIHBvc2l0aW9uYWwgfSA9IGNhcHR1cmVkQXJncztcblxuICAgIGxldCBnZXROYW1lZFRhZyA9IChfb2JqOiBvYmplY3QsIGtleTogc3RyaW5nKSA9PiB0YWdGb3JOYW1lZEFyZyhuYW1lZCwga2V5KTtcbiAgICBsZXQgZ2V0UG9zaXRpb25hbFRhZyA9IChfb2JqOiBvYmplY3QsIGtleTogc3RyaW5nKSA9PiB0YWdGb3JQb3NpdGlvbmFsQXJnKHBvc2l0aW9uYWwsIGtleSk7XG5cbiAgICBsZXQgbmFtZWRQcm94eSA9IHt9O1xuICAgIGxldCBwb3NpdGlvbmFsUHJveHk6IHVua25vd25bXSA9IFtdO1xuXG4gICAgc2V0Q3VzdG9tVGFnRm9yKG5hbWVkUHJveHksIGdldE5hbWVkVGFnKTtcbiAgICBzZXRDdXN0b21UYWdGb3IocG9zaXRpb25hbFByb3h5LCBnZXRQb3NpdGlvbmFsVGFnKTtcblxuICAgIE9iamVjdC5rZXlzKG5hbWVkKS5mb3JFYWNoKChuYW1lKSA9PiB7XG4gICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkobmFtZWRQcm94eSwgbmFtZSwge1xuICAgICAgICBlbnVtZXJhYmxlOiB0cnVlLFxuICAgICAgICBjb25maWd1cmFibGU6IHRydWUsXG4gICAgICAgIGdldCgpIHtcbiAgICAgICAgICByZXR1cm4gdmFsdWVGb3JSZWYobmFtZWRbbmFtZV0pO1xuICAgICAgICB9LFxuICAgICAgfSk7XG4gICAgfSk7XG5cbiAgICBwb3NpdGlvbmFsLmZvckVhY2goKHJlZjogUmVmZXJlbmNlLCBpbmRleDogbnVtYmVyKSA9PiB7XG4gICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkocG9zaXRpb25hbFByb3h5LCBpbmRleCwge1xuICAgICAgICBlbnVtZXJhYmxlOiB0cnVlLFxuICAgICAgICBjb25maWd1cmFibGU6IHRydWUsXG4gICAgICAgIGdldCgpIHtcbiAgICAgICAgICByZXR1cm4gdmFsdWVGb3JSZWYocmVmKTtcbiAgICAgICAgfSxcbiAgICAgIH0pO1xuICAgIH0pO1xuXG4gICAgaWYgKERFQlVHKSB7XG4gICAgICAvLyBQcmV2ZW50IG11dGF0aW9ucyBpbiBkZXZlbG9wbWVudCBtb2RlLiBUaGlzIHdpbGwgbm90IHByZXZlbnQgdGhlXG4gICAgICAvLyBwcm94eSBmcm9tIHVwZGF0aW5nLCBidXQgd2lsbCBwcmV2ZW50IGFzc2lnbmluZyBuZXcgdmFsdWVzIG9yIHB1c2hpbmdcbiAgICAgIC8vIGZvciBpbnN0YW5jZS5cbiAgICAgIE9iamVjdC5mcmVlemUobmFtZWRQcm94eSk7XG4gICAgICBPYmplY3QuZnJlZXplKHBvc2l0aW9uYWxQcm94eSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHtcbiAgICAgIG5hbWVkOiBuYW1lZFByb3h5LFxuICAgICAgcG9zaXRpb25hbDogcG9zaXRpb25hbFByb3h5LFxuICAgIH07XG4gIH07XG59XG4iXSwic291cmNlUm9vdCI6IiJ9

@@ -8,3 +8,3 @@ export { setInternalHelperManager, setInternalModifierManager, setInternalComponentManager, getInternalHelperManager, getInternalModifierManager, getInternalComponentManager } from './lib/internal/index';

export { capabilityFlagsFrom, hasCapability, managerHasCapability } from './lib/util/capabilities';
export { CUSTOM_TAG_FOR } from './lib/util/args-proxy';
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3BhY2thZ2VzL0BnbGltbWVyL21hbmFnZXIvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsU0FDRSx3QkFERixFQUVFLDBCQUZGLEVBR0UsMkJBSEYsRUFJRSx3QkFKRixFQUtFLDBCQUxGLEVBTUUsMkJBTkYsUUFPTyxzQkFQUDtBQVFBLFNBQVMsZ0JBQVQsRUFBMkIsa0JBQTNCLEVBQStDLG1CQUEvQyxRQUEwRSxvQkFBMUU7QUFDQSxTQUFTLHFCQUFULEVBQWdDLHNCQUFoQyxRQUE4RCx3QkFBOUQ7QUFDQSxTQUFTLG9CQUFULEVBQStCLHFCQUEvQixRQUE0RCx1QkFBNUQ7QUFDQSxTQUFTLGtCQUFULEVBQTZCLGNBQTdCLEVBQTZDLFFBQTdDLEVBQXVELFlBQXZELFFBQTJFLHFCQUEzRTtBQUNBLFNBQVMsb0JBQVQsRUFBK0Isb0JBQS9CLFFBQTJELHVCQUEzRDtBQUNBLFNBQVMsbUJBQVQsRUFBOEIsYUFBOUIsRUFBNkMsb0JBQTdDLFFBQXlFLHlCQUF6RTtBQUNBLFNBQVMsY0FBVCxRQUErQix1QkFBL0IiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQge1xuICBzZXRJbnRlcm5hbEhlbHBlck1hbmFnZXIsXG4gIHNldEludGVybmFsTW9kaWZpZXJNYW5hZ2VyLFxuICBzZXRJbnRlcm5hbENvbXBvbmVudE1hbmFnZXIsXG4gIGdldEludGVybmFsSGVscGVyTWFuYWdlcixcbiAgZ2V0SW50ZXJuYWxNb2RpZmllck1hbmFnZXIsXG4gIGdldEludGVybmFsQ29tcG9uZW50TWFuYWdlcixcbn0gZnJvbSAnLi9saWIvaW50ZXJuYWwvaW5kZXgnO1xuZXhwb3J0IHsgc2V0SGVscGVyTWFuYWdlciwgc2V0TW9kaWZpZXJNYW5hZ2VyLCBzZXRDb21wb25lbnRNYW5hZ2VyIH0gZnJvbSAnLi9saWIvcHVibGljL2luZGV4JztcbmV4cG9ydCB7IGNvbXBvbmVudENhcGFiaWxpdGllcywgQ3VzdG9tQ29tcG9uZW50TWFuYWdlciB9IGZyb20gJy4vbGliL3B1YmxpYy9jb21wb25lbnQnO1xuZXhwb3J0IHsgbW9kaWZpZXJDYXBhYmlsaXRpZXMsIEN1c3RvbU1vZGlmaWVyTWFuYWdlciB9IGZyb20gJy4vbGliL3B1YmxpYy9tb2RpZmllcic7XG5leHBvcnQgeyBoZWxwZXJDYXBhYmlsaXRpZXMsIGhhc0Rlc3Ryb3lhYmxlLCBoYXNWYWx1ZSwgY3VzdG9tSGVscGVyIH0gZnJvbSAnLi9saWIvcHVibGljL2hlbHBlcic7XG5leHBvcnQgeyBnZXRDb21wb25lbnRUZW1wbGF0ZSwgc2V0Q29tcG9uZW50VGVtcGxhdGUgfSBmcm9tICcuL2xpYi9wdWJsaWMvdGVtcGxhdGUnO1xuZXhwb3J0IHsgY2FwYWJpbGl0eUZsYWdzRnJvbSwgaGFzQ2FwYWJpbGl0eSwgbWFuYWdlckhhc0NhcGFiaWxpdHkgfSBmcm9tICcuL2xpYi91dGlsL2NhcGFiaWxpdGllcyc7XG5leHBvcnQgeyBDVVNUT01fVEFHX0ZPUiB9IGZyb20gJy4vbGliL3V0aWwvYXJncy1wcm94eSc7XG4iXSwic291cmNlUm9vdCI6IiJ9
export { getCustomTagFor, setCustomTagFor } from './lib/util/args-proxy';
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3BhY2thZ2VzL0BnbGltbWVyL21hbmFnZXIvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsU0FDRSx3QkFERixFQUVFLDBCQUZGLEVBR0UsMkJBSEYsRUFJRSx3QkFKRixFQUtFLDBCQUxGLEVBTUUsMkJBTkYsUUFPTyxzQkFQUDtBQVFBLFNBQVMsZ0JBQVQsRUFBMkIsa0JBQTNCLEVBQStDLG1CQUEvQyxRQUEwRSxvQkFBMUU7QUFDQSxTQUFTLHFCQUFULEVBQWdDLHNCQUFoQyxRQUE4RCx3QkFBOUQ7QUFDQSxTQUFTLG9CQUFULEVBQStCLHFCQUEvQixRQUE0RCx1QkFBNUQ7QUFDQSxTQUFTLGtCQUFULEVBQTZCLGNBQTdCLEVBQTZDLFFBQTdDLEVBQXVELFlBQXZELFFBQTJFLHFCQUEzRTtBQUNBLFNBQVMsb0JBQVQsRUFBK0Isb0JBQS9CLFFBQTJELHVCQUEzRDtBQUNBLFNBQVMsbUJBQVQsRUFBOEIsYUFBOUIsRUFBNkMsb0JBQTdDLFFBQXlFLHlCQUF6RTtBQUNBLFNBQVMsZUFBVCxFQUEwQixlQUExQixRQUFpRCx1QkFBakQiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQge1xuICBzZXRJbnRlcm5hbEhlbHBlck1hbmFnZXIsXG4gIHNldEludGVybmFsTW9kaWZpZXJNYW5hZ2VyLFxuICBzZXRJbnRlcm5hbENvbXBvbmVudE1hbmFnZXIsXG4gIGdldEludGVybmFsSGVscGVyTWFuYWdlcixcbiAgZ2V0SW50ZXJuYWxNb2RpZmllck1hbmFnZXIsXG4gIGdldEludGVybmFsQ29tcG9uZW50TWFuYWdlcixcbn0gZnJvbSAnLi9saWIvaW50ZXJuYWwvaW5kZXgnO1xuZXhwb3J0IHsgc2V0SGVscGVyTWFuYWdlciwgc2V0TW9kaWZpZXJNYW5hZ2VyLCBzZXRDb21wb25lbnRNYW5hZ2VyIH0gZnJvbSAnLi9saWIvcHVibGljL2luZGV4JztcbmV4cG9ydCB7IGNvbXBvbmVudENhcGFiaWxpdGllcywgQ3VzdG9tQ29tcG9uZW50TWFuYWdlciB9IGZyb20gJy4vbGliL3B1YmxpYy9jb21wb25lbnQnO1xuZXhwb3J0IHsgbW9kaWZpZXJDYXBhYmlsaXRpZXMsIEN1c3RvbU1vZGlmaWVyTWFuYWdlciB9IGZyb20gJy4vbGliL3B1YmxpYy9tb2RpZmllcic7XG5leHBvcnQgeyBoZWxwZXJDYXBhYmlsaXRpZXMsIGhhc0Rlc3Ryb3lhYmxlLCBoYXNWYWx1ZSwgY3VzdG9tSGVscGVyIH0gZnJvbSAnLi9saWIvcHVibGljL2hlbHBlcic7XG5leHBvcnQgeyBnZXRDb21wb25lbnRUZW1wbGF0ZSwgc2V0Q29tcG9uZW50VGVtcGxhdGUgfSBmcm9tICcuL2xpYi9wdWJsaWMvdGVtcGxhdGUnO1xuZXhwb3J0IHsgY2FwYWJpbGl0eUZsYWdzRnJvbSwgaGFzQ2FwYWJpbGl0eSwgbWFuYWdlckhhc0NhcGFiaWxpdHkgfSBmcm9tICcuL2xpYi91dGlsL2NhcGFiaWxpdGllcyc7XG5leHBvcnQgeyBnZXRDdXN0b21UYWdGb3IsIHNldEN1c3RvbVRhZ0ZvciB9IGZyb20gJy4vbGliL3V0aWwvYXJncy1wcm94eSc7XG4iXSwic291cmNlUm9vdCI6IiJ9
import { DEBUG } from '@glimmer/env';
import { valueForRef } from '@glimmer/reference';
import { HAS_NATIVE_PROXY, enumerableSymbol } from '@glimmer/util';
import { HAS_NATIVE_PROXY } from '@glimmer/util';
import { track } from '@glimmer/validator';
export const CUSTOM_TAG_FOR = enumerableSymbol('CUSTOM_TAG_FOR');
const CUSTOM_TAG_FOR = new WeakMap();
export function getCustomTagFor(obj) {
return CUSTOM_TAG_FOR.get(obj);
}
export function setCustomTagFor(obj, customTagFn) {
CUSTOM_TAG_FOR.set(obj, customTagFn);
}

@@ -40,77 +46,87 @@ function convertToInt(prop) {

if (HAS_NATIVE_PROXY) {
argsProxyFor = (capturedArgs, type) => {
const {
named,
positional
} = capturedArgs;
class NamedArgsProxy {
constructor(named) {
this.named = named;
}
let getNamedTag = key => tagForNamedArg(named, key);
get(_target, prop) {
const ref = this.named[prop];
let getPositionalTag = key => tagForPositionalArg(positional, key);
if (ref !== undefined) {
return valueForRef(ref);
}
}
const namedHandler = {
get(_target, prop) {
const ref = named[prop];
has(_target, prop) {
return prop in this.named;
}
if (ref !== undefined) {
return valueForRef(ref);
} else if (prop === CUSTOM_TAG_FOR) {
return getNamedTag;
}
},
ownKeys() {
return Object.keys(this.named);
}
has(_target, prop) {
return prop in named;
},
isExtensible() {
return false;
}
ownKeys(_target) {
return Object.keys(named);
},
getOwnPropertyDescriptor(_target, prop) {
if (DEBUG && !(prop in this.named)) {
throw new Error(`args proxies do not have real property descriptors, so you should never need to call getOwnPropertyDescriptor yourself. This code exists for enumerability, such as in for-in loops and Object.keys(). Attempted to get the descriptor for \`${String(prop)}\``);
}
isExtensible() {
return false;
},
return {
enumerable: true,
configurable: true
};
}
getOwnPropertyDescriptor(_target, prop) {
if (DEBUG && !(prop in named)) {
throw new Error(`args proxies do not have real property descriptors, so you should never need to call getOwnPropertyDescriptor yourself. This code exists for enumerability, such as in for-in loops and Object.keys(). Attempted to get the descriptor for \`${String(prop)}\``);
}
}
return {
enumerable: true,
configurable: true
};
}
class PositionalArgsProxy {
constructor(positional) {
this.positional = positional;
}
};
const positionalHandler = {
get(target, prop) {
if (prop === 'length') {
return positional.length;
}
get(target, prop) {
let {
positional
} = this;
const parsed = convertToInt(prop);
if (prop === 'length') {
return positional.length;
}
if (parsed !== null && parsed < positional.length) {
return valueForRef(positional[parsed]);
}
const parsed = convertToInt(prop);
if (prop === CUSTOM_TAG_FOR) {
return getPositionalTag;
}
if (parsed !== null && parsed < positional.length) {
return valueForRef(positional[parsed]);
}
return target[prop];
},
return target[prop];
}
isExtensible() {
return false;
},
isExtensible() {
return false;
}
has(_target, prop) {
const parsed = convertToInt(prop);
return parsed !== null && parsed < positional.length;
}
has(_target, prop) {
const parsed = convertToInt(prop);
return parsed !== null && parsed < this.positional.length;
}
};
}
if (HAS_NATIVE_PROXY) {
argsProxyFor = (capturedArgs, type) => {
const {
named,
positional
} = capturedArgs;
let getNamedTag = (_obj, key) => tagForNamedArg(named, key);
let getPositionalTag = (_obj, key) => tagForPositionalArg(positional, key);
const namedHandler = new NamedArgsProxy(named);
const positionalHandler = new PositionalArgsProxy(positional);
const namedTarget = Object.create(null);

@@ -133,5 +149,9 @@ const positionalTarget = [];

const namedProxy = new Proxy(namedTarget, namedHandler);
const positionalProxy = new Proxy(positionalTarget, positionalHandler);
setCustomTagFor(namedProxy, getNamedTag);
setCustomTagFor(positionalProxy, getPositionalTag);
return {
named: new Proxy(namedTarget, namedHandler),
positional: new Proxy(positionalTarget, positionalHandler)
named: namedProxy,
positional: positionalProxy
};

@@ -146,12 +166,10 @@ };

let getNamedTag = key => tagForNamedArg(named, key);
let getNamedTag = (_obj, key) => tagForNamedArg(named, key);
let getPositionalTag = key => tagForPositionalArg(positional, key);
let getPositionalTag = (_obj, key) => tagForPositionalArg(positional, key);
let namedProxy = {};
Object.defineProperty(namedProxy, CUSTOM_TAG_FOR, {
configurable: false,
enumerable: false,
value: getNamedTag
});
let positionalProxy = [];
setCustomTagFor(namedProxy, getNamedTag);
setCustomTagFor(positionalProxy, getPositionalTag);
Object.keys(named).forEach(name => {

@@ -168,8 +186,2 @@ Object.defineProperty(namedProxy, name, {

});
let positionalProxy = [];
Object.defineProperty(positionalProxy, CUSTOM_TAG_FOR, {
configurable: false,
enumerable: false,
value: getPositionalTag
});
positional.forEach((ref, index) => {

@@ -201,2 +213,2 @@ Object.defineProperty(positionalProxy, index, {

}
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL0BnbGltbWVyL21hbmFnZXIvbGliL3V0aWwvYXJncy1wcm94eS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxTQUFTLEtBQVQsUUFBc0IsY0FBdEI7QUFPQSxTQUFvQixXQUFwQixRQUF1QyxvQkFBdkM7QUFDQSxTQUFTLGdCQUFULEVBQTJCLGdCQUEzQixRQUFtRCxlQUFuRDtBQUNBLFNBQWMsS0FBZCxRQUEyQixvQkFBM0I7QUFFQSxPQUFPLE1BQU0sY0FBYyxHQUFHLGdCQUFnQixDQUFDLGdCQUFELENBQXZDOztBQUVQLFNBQVMsWUFBVCxDQUFzQixJQUF0QixFQUFvRDtBQUNsRCxNQUFJLE9BQU8sSUFBUCxLQUFnQixRQUFwQixFQUE4QixPQUFPLElBQVA7QUFFOUIsUUFBTSxHQUFHLEdBQUcsTUFBTSxDQUFDLElBQUQsQ0FBbEI7QUFFQSxNQUFJLEtBQUssQ0FBQyxHQUFELENBQVQsRUFBZ0IsT0FBTyxJQUFQO0FBRWhCLFNBQU8sR0FBRyxHQUFHLENBQU4sS0FBWSxDQUFaLEdBQWdCLEdBQWhCLEdBQXNCLElBQTdCO0FBQ0Q7O0FBRUQsU0FBUyxjQUFULENBQXdCLFNBQXhCLEVBQTJELEdBQTNELEVBQXNFO0FBQ3BFLFNBQU8sS0FBSyxDQUFDLE1BQUs7QUFDaEIsUUFBSSxHQUFHLElBQUksU0FBWCxFQUFzQjtBQUNwQixNQUFBLFdBQVcsQ0FBQyxTQUFTLENBQUMsR0FBRCxDQUFWLENBQVg7QUFDRDtBQUNGLEdBSlcsQ0FBWjtBQUtEOztBQUVELFNBQVMsbUJBQVQsQ0FBNkIsY0FBN0IsRUFBMEUsR0FBMUUsRUFBcUY7QUFDbkYsU0FBTyxLQUFLLENBQUMsTUFBSztBQUNoQixRQUFJLEdBQUcsS0FBSyxJQUFaLEVBQWtCO0FBQ2hCO0FBQ0EsTUFBQSxjQUFjLENBQUMsT0FBZixDQUF1QixXQUF2QjtBQUNEOztBQUVELFVBQU0sTUFBTSxHQUFHLFlBQVksQ0FBQyxHQUFELENBQTNCOztBQUVB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cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgREVCVUcgfSBmcm9tICdAZ2xpbW1lci9lbnYnO1xuaW1wb3J0IHtcbiAgQXJndW1lbnRzLFxuICBDYXB0dXJlZEFyZ3VtZW50cyxcbiAgQ2FwdHVyZWROYW1lZEFyZ3VtZW50cyxcbiAgQ2FwdHVyZWRQb3NpdGlvbmFsQXJndW1lbnRzLFxufSBmcm9tICdAZ2xpbW1lci9pbnRlcmZhY2VzJztcbmltcG9ydCB7IFJlZmVyZW5jZSwgdmFsdWVGb3JSZWYgfSBmcm9tICdAZ2xpbW1lci9yZWZlcmVuY2UnO1xuaW1wb3J0IHsgSEFTX05BVElWRV9QUk9YWSwgZW51bWVyYWJsZVN5bWJvbCB9IGZyb20gJ0BnbGltbWVyL3V0aWwnO1xuaW1wb3J0IHsgVGFnLCB0cmFjayB9IGZyb20gJ0BnbGltbWVyL3ZhbGlkYXRvcic7XG5cbmV4cG9ydCBjb25zdCBDVVNUT01fVEFHX0ZPUiA9IGVudW1lcmFibGVTeW1ib2woJ0NVU1RPTV9UQUdfRk9SJyk7XG5cbmZ1bmN0aW9uIGNvbnZlcnRUb0ludChwcm9wOiBudW1iZXIgfCBzdHJpbmcgfCBzeW1ib2wpOiBudW1iZXIgfCBudWxsIHtcbiAgaWYgKHR5cGVvZiBwcm9wID09PSAnc3ltYm9sJykgcmV0dXJuIG51bGw7XG5cbiAgY29uc3QgbnVtID0gTnVtYmVyKHByb3ApO1xuXG4gIGlmIChpc05hTihudW0pKSByZXR1cm4gbnVsbDtcblxuICByZXR1cm4gbnVtICUgMSA9PT0gMCA/IG51bSA6IG51bGw7XG59XG5cbmZ1bmN0aW9uIHRhZ0Zvck5hbWVkQXJnKG5hbWVkQXJnczogQ2FwdHVyZWROYW1lZEFyZ3VtZW50cywga2V5OiBzdHJpbmcpOiBUYWcge1xuICByZXR1cm4gdHJhY2soKCkgPT4ge1xuICAgIGlmIChrZXkgaW4gbmFtZWRBcmdzKSB7XG4gICAgICB2YWx1ZUZvclJlZihuYW1lZEFyZ3Nba2V5XSk7XG4gICAgfVxuICB9KTtcbn1cblxuZnVuY3Rpb24gdGFnRm9yUG9zaXRpb25hbEFyZyhwb3NpdGlvbmFsQXJnczogQ2FwdHVyZWRQb3NpdGlvbmFsQXJndW1lbnRzLCBrZXk6IHN0cmluZyk6IFRhZyB7XG4gIHJldHVybiB0cmFjaygoKSA9PiB7XG4gICAgaWYgKGtleSA9PT0gJ1tdJykge1xuICAgICAgLy8gY29uc3VtZSBhbGwgb2YgdGhlIHRhZ3MgaW4gdGhlIHBvc2l0aW9uYWwgYXJyYXlcbiAgICAgIHBvc2l0aW9uYWxBcmdzLmZvckVhY2godmFsdWVGb3JSZWYpO1xuICAgIH1cblxuICAgIGNvbnN0IHBhcnNlZCA9IGNvbnZlcnRUb0ludChrZXkpO1xuXG4gICAgaWYgKHBhcnNlZCAhPT0gbnVsbCAmJiBwYXJzZWQgPCBwb3NpdGlvbmFsQXJncy5sZW5ndGgpIHtcbiAgICAgIC8vIGNvbnN1bWUgdGhlIHRhZyBvZiB0aGUgcmVmZXJlbmNlZCBpbmRleFxuICAgICAgdmFsdWVGb3JSZWYocG9zaXRpb25hbEFyZ3NbcGFyc2VkXSk7XG4gICAgfVxuICB9KTtcbn1cblxuZXhwb3J0IGxldCBhcmdzUHJveHlGb3I6IChcbiAgY2FwdHVyZWRBcmdzOiBDYXB0dXJlZEFyZ3VtZW50cyxcbiAgdHlwZTogJ2NvbXBvbmVudCcgfCAnaGVscGVyJyB8ICdtb2RpZmllcidcbikgPT4gQXJndW1lbnRzO1xuXG5pZiAoSEFTX05BVElWRV9QUk9YWSkge1xuICBhcmdzUHJveHlGb3IgPSAoY2FwdHVyZWRBcmdzLCB0eXBlKSA9PiB7XG4gICAgY29uc3QgeyBuYW1lZCwgcG9zaXRpb25hbCB9ID0gY2FwdHVyZWRBcmdzO1xuXG4gICAgbGV0IGdldE5hbWVkVGFnID0gKGtleTogc3RyaW5nKSA9PiB0YWdGb3JOYW1lZEFyZyhuYW1lZCwga2V5KTtcbiAgICBsZXQgZ2V0UG9zaXRpb25hbFRhZyA9IChrZXk6IHN0cmluZykgPT4gdGFnRm9yUG9zaXRpb25hbEFyZyhwb3NpdGlvbmFsLCBrZXkpO1xuXG4gICAgY29uc3QgbmFtZWRIYW5kbGVyOiBQcm94eUhhbmRsZXI8e30+ID0ge1xuICAgICAgZ2V0KF90YXJnZXQsIHByb3ApIHtcbiAgICAgICAgY29uc3QgcmVmID0gbmFtZWRbcHJvcCBhcyBzdHJpbmddO1xuXG4gICAgICAgIGlmIChyZWYgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIHJldHVybiB2YWx1ZUZvclJlZihyZWYpO1xuICAgICAgICB9IGVsc2UgaWYgKHByb3AgPT09IENVU1RPTV9UQUdfRk9SKSB7XG4gICAgICAgICAgcmV0dXJuIGdldE5hbWVkVGFnO1xuICAgICAgICB9XG4gICAgICB9LFxuXG4gICAgICBoYXMoX3RhcmdldCwgcHJvcCkge1xuICAgICAgICByZXR1cm4gcHJvcCBpbiBuYW1lZDtcbiAgICAgIH0sXG5cbiAgICAgIG93bktleXMoX3RhcmdldCkge1xuICAgICAgICByZXR1cm4gT2JqZWN0LmtleXMobmFtZWQpO1xuICAgICAgfSxcblxuICAgICAgaXNFeHRlbnNpYmxlKCkge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9LFxuXG4gICAgICBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoX3RhcmdldCwgcHJvcCkge1xuICAgICAgICBpZiAoREVCVUcgJiYgIShwcm9wIGluIG5hbWVkKSkge1xuICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICAgIGBhcmdzIHByb3hpZXMgZG8gbm90IGhhdmUgcmVhbCBwcm9wZXJ0eSBkZXNjcmlwdG9ycywgc28geW91IHNob3VsZCBuZXZlciBuZWVkIHRvIGNhbGwgZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIHlvdXJzZWxmLiBUaGlzIGNvZGUgZXhpc3RzIGZvciBlbnVtZXJhYmlsaXR5LCBzdWNoIGFzIGluIGZvci1pbiBsb29wcyBhbmQgT2JqZWN0LmtleXMoKS4gQXR0ZW1wdGVkIHRvIGdldCB0aGUgZGVzY3JpcHRvciBmb3IgXFxgJHtTdHJpbmcoXG4gICAgICAgICAgICAgIHByb3BcbiAgICAgICAgICAgICl9XFxgYFxuICAgICAgICAgICk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIGVudW1lcmFibGU6IHRydWUsXG4gICAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlLFxuICAgICAgICB9O1xuICAgICAgfSxcbiAgICB9O1xuXG4gICAgY29uc3QgcG9zaXRpb25hbEhhbmRsZXI6IFByb3h5SGFuZGxlcjxbXT4gPSB7XG4gICAgICBnZXQodGFyZ2V0LCBwcm9wKSB7XG4gICAgICAgIGlmIChwcm9wID09PSAnbGVuZ3RoJykge1xuICAgICAgICAgIHJldHVybiBwb3NpdGlvbmFsLmxlbmd0aDtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHBhcnNlZCA9IGNvbnZlcnRUb0ludChwcm9wKTtcblxuICAgICAgICBpZiAocGFyc2VkICE9PSBudWxsICYmIHBhcnNlZCA8IHBvc2l0aW9uYWwubGVuZ3RoKSB7XG4gICAgICAgICAgcmV0dXJuIHZhbHVlRm9yUmVmKHBvc2l0aW9uYWxbcGFyc2VkXSk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAocHJvcCA9PT0gQ1VTVE9NX1RBR19GT1IpIHtcbiAgICAgICAgICByZXR1cm4gZ2V0UG9zaXRpb25hbFRhZztcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiAodGFyZ2V0IGFzIGFueSlbcHJvcF07XG4gICAgICB9LFxuXG4gICAgICBpc0V4dGVuc2libGUoKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH0sXG5cbiAgICAgIGhhcyhfdGFyZ2V0LCBwcm9wKSB7XG4gICAgICAgIGNvbnN0IHBhcnNlZCA9IGNvbnZlcnRUb0ludChwcm9wKTtcblxuICAgICAgICByZXR1cm4gcGFyc2VkICE9PSBudWxsICYmIHBhcnNlZCA8IHBvc2l0aW9uYWwubGVuZ3RoO1xuICAgICAgfSxcbiAgICB9O1xuXG4gICAgY29uc3QgbmFtZWRUYXJnZXQgPSBPYmplY3QuY3JlYXRlKG51bGwpO1xuICAgIGNvbnN0IHBvc2l0aW9uYWxUYXJnZXQ6IHVua25vd25bXSA9IFtdO1xuXG4gICAgaWYgKERFQlVHKSB7XG4gICAgICBjb25zdCBzZXRIYW5kbGVyID0gZnVuY3Rpb24gKF90YXJnZXQ6IHVua25vd24sIHByb3A6IHN5bWJvbCB8IHN0cmluZyB8IG51bWJlcik6IG5ldmVyIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAgIGBZb3UgYXR0ZW1wdGVkIHRvIHNldCAke1N0cmluZyhcbiAgICAgICAgICAgIHByb3BcbiAgICAgICAgICApfSBvbiB0aGUgYXJndW1lbnRzIG9mIGEgY29tcG9uZW50LCBoZWxwZXIsIG9yIG1vZGlmaWVyLiBBcmd1bWVudHMgYXJlIGltbXV0YWJsZSBhbmQgY2Fubm90IGJlIHVwZGF0ZWQgZGlyZWN0bHksIHRoZXkgYWx3YXlzIHJlcHJlc2VudCB0aGUgdmFsdWVzIHRoYXQgaXMgcGFzc2VkIGRvd24uIElmIHlvdSB3YW50IHRvIHNldCBkZWZhdWx0IHZhbHVlcywgeW91IHNob3VsZCB1c2UgYSBnZXR0ZXIgYW5kIGxvY2FsIHRyYWNrZWQgc3RhdGUgaW5zdGVhZC5gXG4gICAgICAgICk7XG4gICAgICB9O1xuXG4gICAgICBjb25zdCBmb3JJbkRlYnVnSGFuZGxlciA9ICgpOiBuZXZlciA9PiB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICBgT2JqZWN0LmtleXMoKSB3YXMgY2FsbGVkIG9uIHRoZSBwb3NpdGlvbmFsIGFyZ3VtZW50cyBhcnJheSBmb3IgYSAke3R5cGV9LCB3aGljaCBpcyBub3Qgc3VwcG9ydGVkLiBUaGlzIGZ1bmN0aW9uIGlzIGEgbG93LWxldmVsIGZ1bmN0aW9uIHRoYXQgc2hvdWxkIG5vdCBuZWVkIHRvIGJlIGNhbGxlZCBmb3IgcG9zaXRpb25hbCBhcmd1bWVudCBhcnJheXMuIFlvdSBtYXkgYmUgYXR0ZW1wdGluZyB0byBpdGVyYXRlIG92ZXIgdGhlIGFycmF5IHVzaW5nIGZvci4uLmluIGluc3RlYWQgb2YgZm9yLi4ub2YuYFxuICAgICAgICApO1xuICAgICAgfTtcblxuICAgICAgbmFtZWRIYW5kbGVyLnNldCA9IHNldEhhbmRsZXI7XG4gICAgICBwb3NpdGlvbmFsSGFuZGxlci5zZXQgPSBzZXRIYW5kbGVyO1xuICAgICAgcG9zaXRpb25hbEhhbmRsZXIub3duS2V5cyA9IGZvckluRGVidWdIYW5kbGVyO1xuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICBuYW1lZDogbmV3IFByb3h5KG5hbWVkVGFyZ2V0LCBuYW1lZEhhbmRsZXIpLFxuICAgICAgcG9zaXRpb25hbDogbmV3IFByb3h5KHBvc2l0aW9uYWxUYXJnZXQsIHBvc2l0aW9uYWxIYW5kbGVyKSxcbiAgICB9O1xuICB9O1xufSBlbHNlIHtcbiAgYXJnc1Byb3h5Rm9yID0gKGNhcHR1cmVkQXJncywgX3R5cGUpID0+IHtcbiAgICBjb25zdCB7IG5hbWVkLCBwb3NpdGlvbmFsIH0gPSBjYXB0dXJlZEFyZ3M7XG5cbiAgICBsZXQgZ2V0TmFtZWRUYWcgPSAoa2V5OiBzdHJpbmcpID0+IHRhZ0Zvck5hbWVkQXJnKG5hbWVkLCBrZXkpO1xuICAgIGxldCBnZXRQb3NpdGlvbmFsVGFnID0gKGtleTogc3RyaW5nKSA9PiB0YWdGb3JQb3NpdGlvbmFsQXJnKHBvc2l0aW9uYWwsIGtleSk7XG5cbiAgICBsZXQgbmFtZWRQcm94eSA9IHt9O1xuXG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KG5hbWVkUHJveHksIENVU1RPTV9UQUdfRk9SLCB7XG4gICAgICBjb25maWd1cmFibGU6IGZhbHNlLFxuICAgICAgZW51bWVyYWJsZTogZmFsc2UsXG4gICAgICB2YWx1ZTogZ2V0TmFtZWRUYWcsXG4gICAgfSk7XG5cbiAgICBPYmplY3Qua2V5cyhuYW1lZCkuZm9yRWFjaCgobmFtZSkgPT4ge1xuICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KG5hbWVkUHJveHksIG5hbWUsIHtcbiAgICAgICAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlLFxuICAgICAgICBnZXQoKSB7XG4gICAgICAgICAgcmV0dXJuIHZhbHVlRm9yUmVmKG5hbWVkW25hbWVdKTtcbiAgICAgICAgfSxcbiAgICAgIH0pO1xuICAgIH0pO1xuXG4gICAgbGV0IHBvc2l0aW9uYWxQcm94eTogdW5rbm93bltdID0gW107XG5cbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkocG9zaXRpb25hbFByb3h5LCBDVVNUT01fVEFHX0ZPUiwge1xuICAgICAgY29uZmlndXJhYmxlOiBmYWxzZSxcbiAgICAgIGVudW1lcmFibGU6IGZhbHNlLFxuICAgICAgdmFsdWU6IGdldFBvc2l0aW9uYWxUYWcsXG4gICAgfSk7XG5cbiAgICBwb3NpdGlvbmFsLmZvckVhY2goKHJlZjogUmVmZXJlbmNlLCBpbmRleDogbnVtYmVyKSA9PiB7XG4gICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkocG9zaXRpb25hbFByb3h5LCBpbmRleCwge1xuICAgICAgICBlbnVtZXJhYmxlOiB0cnVlLFxuICAgICAgICBjb25maWd1cmFibGU6IHRydWUsXG4gICAgICAgIGdldCgpIHtcbiAgICAgICAgICByZXR1cm4gdmFsdWVGb3JSZWYocmVmKTtcbiAgICAgICAgfSxcbiAgICAgIH0pO1xuICAgIH0pO1xuXG4gICAgaWYgKERFQlVHKSB7XG4gICAgICAvLyBQcmV2ZW50IG11dGF0aW9ucyBpbiBkZXZlbG9wbWVudCBtb2RlLiBUaGlzIHdpbGwgbm90IHByZXZlbnQgdGhlXG4gICAgICAvLyBwcm94eSBmcm9tIHVwZGF0aW5nLCBidXQgd2lsbCBwcmV2ZW50IGFzc2lnbmluZyBuZXcgdmFsdWVzIG9yIHB1c2hpbmdcbiAgICAgIC8vIGZvciBpbnN0YW5jZS5cbiAgICAgIE9iamVjdC5mcmVlemUobmFtZWRQcm94eSk7XG4gICAgICBPYmplY3QuZnJlZXplKHBvc2l0aW9uYWxQcm94eSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHtcbiAgICAgIG5hbWVkOiBuYW1lZFByb3h5LFxuICAgICAgcG9zaXRpb25hbDogcG9zaXRpb25hbFByb3h5LFxuICAgIH07XG4gIH07XG59XG4iXSwic291cmNlUm9vdCI6IiJ9
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL0BnbGltbWVyL21hbmFnZXIvbGliL3V0aWwvYXJncy1wcm94eS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxTQUFTLEtBQVQsUUFBc0IsY0FBdEI7QUFPQSxTQUFvQixXQUFwQixRQUF1QyxvQkFBdkM7QUFDQSxTQUFTLGdCQUFULFFBQWlDLGVBQWpDO0FBQ0EsU0FBYyxLQUFkLFFBQTJCLG9CQUEzQjtBQUVBLE1BQU0sY0FBYyxHQUFHLElBQUksT0FBSixFQUF2QjtBQUVBLE9BQU0sU0FBVSxlQUFWLENBQTBCLEdBQTFCLEVBQXFDO0FBQ3pDLFNBQU8sY0FBYyxDQUFDLEdBQWYsQ0FBbUIsR0FBbkIsQ0FBUDtBQUNEO0FBRUQsT0FBTSxTQUFVLGVBQVYsQ0FBMEIsR0FBMUIsRUFBdUMsV0FBdkMsRUFBcUY7QUFDekYsRUFBQSxjQUFjLENBQUMsR0FBZixDQUFtQixHQUFuQixFQUF3QixXQUF4QjtBQUNEOztBQUVELFNBQVMsWUFBVCxDQUFzQixJQUF0QixFQUFvRDtBQUNsRCxNQUFJLE9BQU8sSUFBUCxLQUFnQixRQUFwQixFQUE4QixPQUFPLElBQVA7QUFFOUIsUUFBTSxHQUFHLEdBQUcsTUFBTSxDQUFDLElBQUQsQ0FBbEI7QUFFQSxNQUFJLEtBQUssQ0FBQyxHQUFELENBQVQsRUFBZ0IsT0FBTyxJQUFQO0FBRWhCLFNBQU8sR0FBRyxHQUFHLENBQU4sS0FBWSxDQUFaLEdBQWdCLEdBQWhCLEdBQXNCLElBQTdCO0FBQ0Q7O0FBRUQsU0FBUyxjQUFULENBQXdCLFNBQXhCLEVBQTJELEdBQTNELEVBQXNFO0FBQ3BFLFNBQU8sS0FBSyxDQUFDLE1BQUs7QUFDaEIsUUFBSSxHQUFHLElBQUksU0FBWCxFQUFzQjtBQUNwQixNQUFBLFdBQVcsQ0FBQyxTQUFTLENBQUMsR0FBRCxDQUFWLENBQVg7QUFDRDtBQUNGLEdBSlcsQ0FBWjtBQUtEOztBQUVELFNBQVMsbUJBQVQsQ0FBNkIsY0FBN0IsRUFBMEUs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QUFHNUMsUUFBQSxHQUFHLEdBQUE7QUFDRCxpQkFBTyxXQUFXLENBQUMsR0FBRCxDQUFsQjtBQUNEOztBQUwyQyxPQUE5QztBQU9ELEtBUkQ7O0FBVUEsUUFBSSxLQUFKLEVBQVc7QUFDVDtBQUNBO0FBQ0E7QUFDQSxNQUFBLE1BQU0sQ0FBQyxNQUFQLENBQWMsVUFBZDtBQUNBLE1BQUEsTUFBTSxDQUFDLE1BQVAsQ0FBYyxlQUFkO0FBQ0Q7O0FBRUQsV0FBTztBQUNMLE1BQUEsS0FBSyxFQUFFLFVBREY7QUFFTCxNQUFBLFVBQVUsRUFBRTtBQUZQLEtBQVA7QUFJRCxHQTVDRDtBQTZDRCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERFQlVHIH0gZnJvbSAnQGdsaW1tZXIvZW52JztcbmltcG9ydCB7XG4gIEFyZ3VtZW50cyxcbiAgQ2FwdHVyZWRBcmd1bWVudHMsXG4gIENhcHR1cmVkTmFtZWRBcmd1bWVudHMsXG4gIENhcHR1cmVkUG9zaXRpb25hbEFyZ3VtZW50cyxcbn0gZnJvbSAnQGdsaW1tZXIvaW50ZXJmYWNlcyc7XG5pbXBvcnQgeyBSZWZlcmVuY2UsIHZhbHVlRm9yUmVmIH0gZnJvbSAnQGdsaW1tZXIvcmVmZXJlbmNlJztcbmltcG9ydCB7IEhBU19OQVRJVkVfUFJPWFkgfSBmcm9tICdAZ2xpbW1lci91dGlsJztcbmltcG9ydCB7IFRhZywgdHJhY2sgfSBmcm9tICdAZ2xpbW1lci92YWxpZGF0b3InO1xuXG5jb25zdCBDVVNUT01fVEFHX0ZPUiA9IG5ldyBXZWFrTWFwPG9iamVjdCwgKG9iajogb2JqZWN0LCBrZXk6IHN0cmluZykgPT4gVGFnPigpO1xuXG5leHBvcnQgZnVuY3Rpb24gZ2V0Q3VzdG9tVGFnRm9yKG9iajogb2JqZWN0KTogKChvYmo6IG9iamVjdCwga2V5OiBzdHJpbmcpID0+IFRhZykgfCB1bmRlZmluZWQge1xuICByZXR1cm4gQ1VTVE9NX1RBR19GT1IuZ2V0KG9iaik7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzZXRDdXN0b21UYWdGb3Iob2JqOiBvYmplY3QsIGN1c3RvbVRhZ0ZuOiAob2JqOiBvYmplY3QsIGtleTogc3RyaW5nKSA9PiBUYWcpIHtcbiAgQ1VTVE9NX1RBR19GT1Iuc2V0KG9iaiwgY3VzdG9tVGFnRm4pO1xufVxuXG5mdW5jdGlvbiBjb252ZXJ0VG9JbnQocHJvcDogbnVtYmVyIHwgc3RyaW5nIHwgc3ltYm9sKTogbnVtYmVyIHwgbnVsbCB7XG4gIGlmICh0eXBlb2YgcHJvcCA9PT0gJ3N5bWJvbCcpIHJldHVybiBudWxsO1xuXG4gIGNvbnN0IG51bSA9IE51bWJlcihwcm9wKTtcblxuICBpZiAoaXNOYU4obnVtKSkgcmV0dXJuIG51bGw7XG5cbiAgcmV0dXJuIG51bSAlIDEgPT09IDAgPyBudW0gOiBudWxsO1xufVxuXG5mdW5jdGlvbiB0YWdGb3JOYW1lZEFyZyhuYW1lZEFyZ3M6IENhcHR1cmVkTmFtZWRBcmd1bWVudHMsIGtleTogc3RyaW5nKTogVGFnIHtcbiAgcmV0dXJuIHRyYWNrKCgpID0+IHtcbiAgICBpZiAoa2V5IGluIG5hbWVkQXJncykge1xuICAgICAgdmFsdWVGb3JSZWYobmFtZWRBcmdzW2tleV0pO1xuICAgIH1cbiAgfSk7XG59XG5cbmZ1bmN0aW9uIHRhZ0ZvclBvc2l0aW9uYWxBcmcocG9zaXRpb25hbEFyZ3M6IENhcHR1cmVkUG9zaXRpb25hbEFyZ3VtZW50cywga2V5OiBzdHJpbmcpOiBUYWcge1xuICByZXR1cm4gdHJhY2soKCkgPT4ge1xuICAgIGlmIChrZXkgPT09ICdbXScpIHtcbiAgICAgIC8vIGNvbnN1bWUgYWxsIG9mIHRoZSB0YWdzIGluIHRoZSBwb3NpdGlvbmFsIGFycmF5XG4gICAgICBwb3NpdGlvbmFsQXJncy5mb3JFYWNoKHZhbHVlRm9yUmVmKTtcbiAgICB9XG5cbiAgICBjb25zdCBwYXJzZWQgPSBjb252ZXJ0VG9JbnQoa2V5KTtcblxuICAgIGlmIChwYXJzZWQgIT09IG51bGwgJiYgcGFyc2VkIDwgcG9zaXRpb25hbEFyZ3MubGVuZ3RoKSB7XG4gICAgICAvLyBjb25zdW1lIHRoZSB0YWcgb2YgdGhlIHJlZmVyZW5jZWQgaW5kZXhcbiAgICAgIHZhbHVlRm9yUmVmKHBvc2l0aW9uYWxBcmdzW3BhcnNlZF0pO1xuICAgIH1cbiAgfSk7XG59XG5cbmV4cG9ydCBsZXQgYXJnc1Byb3h5Rm9yOiAoXG4gIGNhcHR1cmVkQXJnczogQ2FwdHVyZWRBcmd1bWVudHMsXG4gIHR5cGU6ICdjb21wb25lbnQnIHwgJ2hlbHBlcicgfCAnbW9kaWZpZXInXG4pID0+IEFyZ3VtZW50cztcblxuY2xhc3MgTmFtZWRBcmdzUHJveHkgaW1wbGVtZW50cyBQcm94eUhhbmRsZXI8e30+IHtcbiAgZGVjbGFyZSBzZXQ/OiAodGFyZ2V0OiB7fSwgcHJvcDogc3RyaW5nIHwgbnVtYmVyIHwgc3ltYm9sKSA9PiBib29sZWFuO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgbmFtZWQ6IENhcHR1cmVkTmFtZWRBcmd1bWVudHMpIHt9XG5cbiAgZ2V0KF90YXJnZXQ6IHt9LCBwcm9wOiBzdHJpbmcgfCBudW1iZXIgfCBzeW1ib2wpIHtcbiAgICBjb25zdCByZWYgPSB0aGlzLm5hbWVkW3Byb3AgYXMgc3RyaW5nXTtcblxuICAgIGlmIChyZWYgIT09IHVuZGVmaW5lZCkge1xuICAgICAgcmV0dXJuIHZhbHVlRm9yUmVmKHJlZik7XG4gICAgfVxuICB9XG5cbiAgaGFzKF90YXJnZXQ6IHt9LCBwcm9wOiBzdHJpbmcgfCBudW1iZXIgfCBzeW1ib2wpIHtcbiAgICByZXR1cm4gcHJvcCBpbiB0aGlzLm5hbWVkO1xuICB9XG5cbiAgb3duS2V5cygpIHtcbiAgICByZXR1cm4gT2JqZWN0LmtleXModGhpcy5uYW1lZCk7XG4gIH1cblxuICBpc0V4dGVuc2libGUoKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKF90YXJnZXQ6IHt9LCBwcm9wOiBzdHJpbmcgfCBudW1iZXIgfCBzeW1ib2wpIHtcbiAgICBpZiAoREVCVUcgJiYgIShwcm9wIGluIHRoaXMubmFtZWQpKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgIGBhcmdzIHByb3hpZXMgZG8gbm90IGhhdmUgcmVhbCBwcm9wZXJ0eSBkZXNjcmlwdG9ycywgc28geW91IHNob3VsZCBuZXZlciBuZWVkIHRvIGNhbGwgZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIHlvdXJzZWxmLiBUaGlzIGNvZGUgZXhpc3RzIGZvciBlbnVtZXJhYmlsaXR5LCBzdWNoIGFzIGluIGZvci1pbiBsb29wcyBhbmQgT2JqZWN0LmtleXMoKS4gQXR0ZW1wdGVkIHRvIGdldCB0aGUgZGVzY3JpcHRvciBmb3IgXFxgJHtTdHJpbmcoXG4gICAgICAgICAgcHJvcFxuICAgICAgICApfVxcYGBcbiAgICAgICk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHtcbiAgICAgIGVudW1lcmFibGU6IHRydWUsXG4gICAgICBjb25maWd1cmFibGU6IHRydWUsXG4gICAgfTtcbiAgfVxufVxuXG5jbGFzcyBQb3NpdGlvbmFsQXJnc1Byb3h5IGltcGxlbWVudHMgUHJveHlIYW5kbGVyPFtdPiB7XG4gIGRlY2xhcmUgc2V0PzogKHRhcmdldDogW10sIHByb3A6IHN0cmluZyB8IG51bWJlciB8IHN5bWJvbCkgPT4gYm9vbGVhbjtcbiAgZGVjbGFyZSBvd25LZXlzPzogKHRhcmdldDogW10pID0+IHN0cmluZ1tdO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcG9zaXRpb25hbDogQ2FwdHVyZWRQb3NpdGlvbmFsQXJndW1lbnRzKSB7fVxuXG4gIGdldCh0YXJnZXQ6IFtdLCBwcm9wOiBzdHJpbmcgfCBudW1iZXIgfCBzeW1ib2wpIHtcbiAgICBsZXQgeyBwb3NpdGlvbmFsIH0gPSB0aGlzO1xuXG4gICAgaWYgKHByb3AgPT09ICdsZW5ndGgnKSB7XG4gICAgICByZXR1cm4gcG9zaXRpb25hbC5sZW5ndGg7XG4gICAgfVxuXG4gICAgY29uc3QgcGFyc2VkID0gY29udmVydFRvSW50KHByb3ApO1xuXG4gICAgaWYgKHBhcnNlZCAhPT0gbnVsbCAmJiBwYXJzZWQgPCBwb3NpdGlvbmFsLmxlbmd0aCkge1xuICAgICAgcmV0dXJuIHZhbHVlRm9yUmVmKHBvc2l0aW9uYWxbcGFyc2VkXSk7XG4gICAgfVxuXG4gICAgcmV0dXJuICh0YXJnZXQgYXMgYW55KVtwcm9wXTtcbiAgfVxuXG4gIGlzRXh0ZW5zaWJsZSgpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBoYXMoX3RhcmdldDogW10sIHByb3A6IHN0cmluZyB8IG51bWJlciB8IHN5bWJvbCkge1xuICAgIGNvbnN0IHBhcnNlZCA9IGNvbnZlcnRUb0ludChwcm9wKTtcblxuICAgIHJldHVybiBwYXJzZWQgIT09IG51bGwgJiYgcGFyc2VkIDwgdGhpcy5wb3NpdGlvbmFsLmxlbmd0aDtcbiAgfVxufVxuXG5pZiAoSEFTX05BVElWRV9QUk9YWSkge1xuICBhcmdzUHJveHlGb3IgPSAoY2FwdHVyZWRBcmdzLCB0eXBlKSA9PiB7XG4gICAgY29uc3QgeyBuYW1lZCwgcG9zaXRpb25hbCB9ID0gY2FwdHVyZWRBcmdzO1xuXG4gICAgbGV0IGdldE5hbWVkVGFnID0gKF9vYmo6IG9iamVjdCwga2V5OiBzdHJpbmcpID0+IHRhZ0Zvck5hbWVkQXJnKG5hbWVkLCBrZXkpO1xuICAgIGxldCBnZXRQb3NpdGlvbmFsVGFnID0gKF9vYmo6IG9iamVjdCwga2V5OiBzdHJpbmcpID0+IHRhZ0ZvclBvc2l0aW9uYWxBcmcocG9zaXRpb25hbCwga2V5KTtcblxuICAgIGNvbnN0IG5hbWVkSGFuZGxlciA9IG5ldyBOYW1lZEFyZ3NQcm94eShuYW1lZCk7XG4gICAgY29uc3QgcG9zaXRpb25hbEhhbmRsZXIgPSBuZXcgUG9zaXRpb25hbEFyZ3NQcm94eShwb3NpdGlvbmFsKTtcblxuICAgIGNvbnN0IG5hbWVkVGFyZ2V0ID0gT2JqZWN0LmNyZWF0ZShudWxsKTtcbiAgICBjb25zdCBwb3NpdGlvbmFsVGFyZ2V0OiB1bmtub3duW10gPSBbXTtcblxuICAgIGlmIChERUJVRykge1xuICAgICAgY29uc3Qgc2V0SGFuZGxlciA9IGZ1bmN0aW9uIChfdGFyZ2V0OiB1bmtub3duLCBwcm9wOiBzeW1ib2wgfCBzdHJpbmcgfCBudW1iZXIpOiBuZXZlciB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICBgWW91IGF0dGVtcHRlZCB0byBzZXQgJHtTdHJpbmcoXG4gICAgICAgICAgICBwcm9wXG4gICAgICAgICAgKX0gb24gdGhlIGFyZ3VtZW50cyBvZiBhIGNvbXBvbmVudCwgaGVscGVyLCBvciBtb2RpZmllci4gQXJndW1lbnRzIGFyZSBpbW11dGFibGUgYW5kIGNhbm5vdCBiZSB1cGRhdGVkIGRpcmVjdGx5LCB0aGV5IGFsd2F5cyByZXByZXNlbnQgdGhlIHZhbHVlcyB0aGF0IGlzIHBhc3NlZCBkb3duLiBJZiB5b3Ugd2FudCB0byBzZXQgZGVmYXVsdCB2YWx1ZXMsIHlvdSBzaG91bGQgdXNlIGEgZ2V0dGVyIGFuZCBsb2NhbCB0cmFja2VkIHN0YXRlIGluc3RlYWQuYFxuICAgICAgICApO1xuICAgICAgfTtcblxuICAgICAgY29uc3QgZm9ySW5EZWJ1Z0hhbmRsZXIgPSAoKTogbmV2ZXIgPT4ge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICAgYE9iamVjdC5rZXlzKCkgd2FzIGNhbGxlZCBvbiB0aGUgcG9zaXRpb25hbCBhcmd1bWVudHMgYXJyYXkgZm9yIGEgJHt0eXBlfSwgd2hpY2ggaXMgbm90IHN1cHBvcnRlZC4gVGhpcyBmdW5jdGlvbiBpcyBhIGxvdy1sZXZlbCBmdW5jdGlvbiB0aGF0IHNob3VsZCBub3QgbmVlZCB0byBiZSBjYWxsZWQgZm9yIHBvc2l0aW9uYWwgYXJndW1lbnQgYXJyYXlzLiBZb3UgbWF5IGJlIGF0dGVtcHRpbmcgdG8gaXRlcmF0ZSBvdmVyIHRoZSBhcnJheSB1c2luZyBmb3IuLi5pbiBpbnN0ZWFkIG9mIGZvci4uLm9mLmBcbiAgICAgICAgKTtcbiAgICAgIH07XG5cbiAgICAgIG5hbWVkSGFuZGxlci5zZXQgPSBzZXRIYW5kbGVyO1xuICAgICAgcG9zaXRpb25hbEhhbmRsZXIuc2V0ID0gc2V0SGFuZGxlcjtcbiAgICAgIHBvc2l0aW9uYWxIYW5kbGVyLm93bktleXMgPSBmb3JJbkRlYnVnSGFuZGxlcjtcbiAgICB9XG5cbiAgICBjb25zdCBuYW1lZFByb3h5ID0gbmV3IFByb3h5KG5hbWVkVGFyZ2V0LCBuYW1lZEhhbmRsZXIpO1xuICAgIGNvbnN0IHBvc2l0aW9uYWxQcm94eSA9IG5ldyBQcm94eShwb3NpdGlvbmFsVGFyZ2V0LCBwb3NpdGlvbmFsSGFuZGxlcik7XG5cbiAgICBzZXRDdXN0b21UYWdGb3IobmFtZWRQcm94eSwgZ2V0TmFtZWRUYWcpO1xuICAgIHNldEN1c3RvbVRhZ0Zvcihwb3NpdGlvbmFsUHJveHksIGdldFBvc2l0aW9uYWxUYWcpO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIG5hbWVkOiBuYW1lZFByb3h5LFxuICAgICAgcG9zaXRpb25hbDogcG9zaXRpb25hbFByb3h5LFxuICAgIH07XG4gIH07XG59IGVsc2Uge1xuICBhcmdzUHJveHlGb3IgPSAoY2FwdHVyZWRBcmdzLCBfdHlwZSkgPT4ge1xuICAgIGNvbnN0IHsgbmFtZWQsIHBvc2l0aW9uYWwgfSA9IGNhcHR1cmVkQXJncztcblxuICAgIGxldCBnZXROYW1lZFRhZyA9IChfb2JqOiBvYmplY3QsIGtleTogc3RyaW5nKSA9PiB0YWdGb3JOYW1lZEFyZyhuYW1lZCwga2V5KTtcbiAgICBsZXQgZ2V0UG9zaXRpb25hbFRhZyA9IChfb2JqOiBvYmplY3QsIGtleTogc3RyaW5nKSA9PiB0YWdGb3JQb3NpdGlvbmFsQXJnKHBvc2l0aW9uYWwsIGtleSk7XG5cbiAgICBsZXQgbmFtZWRQcm94eSA9IHt9O1xuICAgIGxldCBwb3NpdGlvbmFsUHJveHk6IHVua25vd25bXSA9IFtdO1xuXG4gICAgc2V0Q3VzdG9tVGFnRm9yKG5hbWVkUHJveHksIGdldE5hbWVkVGFnKTtcbiAgICBzZXRDdXN0b21UYWdGb3IocG9zaXRpb25hbFByb3h5LCBnZXRQb3NpdGlvbmFsVGFnKTtcblxuICAgIE9iamVjdC5rZXlzKG5hbWVkKS5mb3JFYWNoKChuYW1lKSA9PiB7XG4gICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkobmFtZWRQcm94eSwgbmFtZSwge1xuICAgICAgICBlbnVtZXJhYmxlOiB0cnVlLFxuICAgICAgICBjb25maWd1cmFibGU6IHRydWUsXG4gICAgICAgIGdldCgpIHtcbiAgICAgICAgICByZXR1cm4gdmFsdWVGb3JSZWYobmFtZWRbbmFtZV0pO1xuICAgICAgICB9LFxuICAgICAgfSk7XG4gICAgfSk7XG5cbiAgICBwb3NpdGlvbmFsLmZvckVhY2goKHJlZjogUmVmZXJlbmNlLCBpbmRleDogbnVtYmVyKSA9PiB7XG4gICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkocG9zaXRpb25hbFByb3h5LCBpbmRleCwge1xuICAgICAgICBlbnVtZXJhYmxlOiB0cnVlLFxuICAgICAgICBjb25maWd1cmFibGU6IHRydWUsXG4gICAgICAgIGdldCgpIHtcbiAgICAgICAgICByZXR1cm4gdmFsdWVGb3JSZWYocmVmKTtcbiAgICAgICAgfSxcbiAgICAgIH0pO1xuICAgIH0pO1xuXG4gICAgaWYgKERFQlVHKSB7XG4gICAgICAvLyBQcmV2ZW50IG11dGF0aW9ucyBpbiBkZXZlbG9wbWVudCBtb2RlLiBUaGlzIHdpbGwgbm90IHByZXZlbnQgdGhlXG4gICAgICAvLyBwcm94eSBmcm9tIHVwZGF0aW5nLCBidXQgd2lsbCBwcmV2ZW50IGFzc2lnbmluZyBuZXcgdmFsdWVzIG9yIHB1c2hpbmdcbiAgICAgIC8vIGZvciBpbnN0YW5jZS5cbiAgICAgIE9iamVjdC5mcmVlemUobmFtZWRQcm94eSk7XG4gICAgICBPYmplY3QuZnJlZXplKHBvc2l0aW9uYWxQcm94eSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHtcbiAgICAgIG5hbWVkOiBuYW1lZFByb3h5LFxuICAgICAgcG9zaXRpb25hbDogcG9zaXRpb25hbFByb3h5LFxuICAgIH07XG4gIH07XG59XG4iXSwic291cmNlUm9vdCI6IiJ9

@@ -8,3 +8,3 @@ export { setInternalHelperManager, setInternalModifierManager, setInternalComponentManager, getInternalHelperManager, getInternalModifierManager, getInternalComponentManager } from './lib/internal/index';

export { capabilityFlagsFrom, hasCapability, managerHasCapability } from './lib/util/capabilities';
export { CUSTOM_TAG_FOR } from './lib/util/args-proxy';
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3BhY2thZ2VzL0BnbGltbWVyL21hbmFnZXIvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsU0FBQSx3QkFBQSxFQUFBLDBCQUFBLEVBQUEsMkJBQUEsRUFBQSx3QkFBQSxFQUFBLDBCQUFBLEVBQUEsMkJBQUEsUUFBQSxzQkFBQTtBQVFBLFNBQUEsZ0JBQUEsRUFBQSxrQkFBQSxFQUFBLG1CQUFBLFFBQUEsb0JBQUE7QUFDQSxTQUFBLHFCQUFBLEVBQUEsc0JBQUEsUUFBQSx3QkFBQTtBQUNBLFNBQUEsb0JBQUEsRUFBQSxxQkFBQSxRQUFBLHVCQUFBO0FBQ0EsU0FBQSxrQkFBQSxFQUFBLGNBQUEsRUFBQSxRQUFBLEVBQUEsWUFBQSxRQUFBLHFCQUFBO0FBQ0EsU0FBQSxvQkFBQSxFQUFBLG9CQUFBLFFBQUEsdUJBQUE7QUFDQSxTQUFBLG1CQUFBLEVBQUEsYUFBQSxFQUFBLG9CQUFBLFFBQUEseUJBQUE7QUFDQSxTQUFBLGNBQUEsUUFBQSx1QkFBQSIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB7XG4gIHNldEludGVybmFsSGVscGVyTWFuYWdlcixcbiAgc2V0SW50ZXJuYWxNb2RpZmllck1hbmFnZXIsXG4gIHNldEludGVybmFsQ29tcG9uZW50TWFuYWdlcixcbiAgZ2V0SW50ZXJuYWxIZWxwZXJNYW5hZ2VyLFxuICBnZXRJbnRlcm5hbE1vZGlmaWVyTWFuYWdlcixcbiAgZ2V0SW50ZXJuYWxDb21wb25lbnRNYW5hZ2VyLFxufSBmcm9tICcuL2xpYi9pbnRlcm5hbC9pbmRleCc7XG5leHBvcnQgeyBzZXRIZWxwZXJNYW5hZ2VyLCBzZXRNb2RpZmllck1hbmFnZXIsIHNldENvbXBvbmVudE1hbmFnZXIgfSBmcm9tICcuL2xpYi9wdWJsaWMvaW5kZXgnO1xuZXhwb3J0IHsgY29tcG9uZW50Q2FwYWJpbGl0aWVzLCBDdXN0b21Db21wb25lbnRNYW5hZ2VyIH0gZnJvbSAnLi9saWIvcHVibGljL2NvbXBvbmVudCc7XG5leHBvcnQgeyBtb2RpZmllckNhcGFiaWxpdGllcywgQ3VzdG9tTW9kaWZpZXJNYW5hZ2VyIH0gZnJvbSAnLi9saWIvcHVibGljL21vZGlmaWVyJztcbmV4cG9ydCB7IGhlbHBlckNhcGFiaWxpdGllcywgaGFzRGVzdHJveWFibGUsIGhhc1ZhbHVlLCBjdXN0b21IZWxwZXIgfSBmcm9tICcuL2xpYi9wdWJsaWMvaGVscGVyJztcbmV4cG9ydCB7IGdldENvbXBvbmVudFRlbXBsYXRlLCBzZXRDb21wb25lbnRUZW1wbGF0ZSB9IGZyb20gJy4vbGliL3B1YmxpYy90ZW1wbGF0ZSc7XG5leHBvcnQgeyBjYXBhYmlsaXR5RmxhZ3NGcm9tLCBoYXNDYXBhYmlsaXR5LCBtYW5hZ2VySGFzQ2FwYWJpbGl0eSB9IGZyb20gJy4vbGliL3V0aWwvY2FwYWJpbGl0aWVzJztcbmV4cG9ydCB7IENVU1RPTV9UQUdfRk9SIH0gZnJvbSAnLi9saWIvdXRpbC9hcmdzLXByb3h5JztcbiJdLCJzb3VyY2VSb290IjoiIn0=
export { getCustomTagFor, setCustomTagFor } from './lib/util/args-proxy';
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3BhY2thZ2VzL0BnbGltbWVyL21hbmFnZXIvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsU0FBQSx3QkFBQSxFQUFBLDBCQUFBLEVBQUEsMkJBQUEsRUFBQSx3QkFBQSxFQUFBLDBCQUFBLEVBQUEsMkJBQUEsUUFBQSxzQkFBQTtBQVFBLFNBQUEsZ0JBQUEsRUFBQSxrQkFBQSxFQUFBLG1CQUFBLFFBQUEsb0JBQUE7QUFDQSxTQUFBLHFCQUFBLEVBQUEsc0JBQUEsUUFBQSx3QkFBQTtBQUNBLFNBQUEsb0JBQUEsRUFBQSxxQkFBQSxRQUFBLHVCQUFBO0FBQ0EsU0FBQSxrQkFBQSxFQUFBLGNBQUEsRUFBQSxRQUFBLEVBQUEsWUFBQSxRQUFBLHFCQUFBO0FBQ0EsU0FBQSxvQkFBQSxFQUFBLG9CQUFBLFFBQUEsdUJBQUE7QUFDQSxTQUFBLG1CQUFBLEVBQUEsYUFBQSxFQUFBLG9CQUFBLFFBQUEseUJBQUE7QUFDQSxTQUFBLGVBQUEsRUFBQSxlQUFBLFFBQUEsdUJBQUEiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQge1xuICBzZXRJbnRlcm5hbEhlbHBlck1hbmFnZXIsXG4gIHNldEludGVybmFsTW9kaWZpZXJNYW5hZ2VyLFxuICBzZXRJbnRlcm5hbENvbXBvbmVudE1hbmFnZXIsXG4gIGdldEludGVybmFsSGVscGVyTWFuYWdlcixcbiAgZ2V0SW50ZXJuYWxNb2RpZmllck1hbmFnZXIsXG4gIGdldEludGVybmFsQ29tcG9uZW50TWFuYWdlcixcbn0gZnJvbSAnLi9saWIvaW50ZXJuYWwvaW5kZXgnO1xuZXhwb3J0IHsgc2V0SGVscGVyTWFuYWdlciwgc2V0TW9kaWZpZXJNYW5hZ2VyLCBzZXRDb21wb25lbnRNYW5hZ2VyIH0gZnJvbSAnLi9saWIvcHVibGljL2luZGV4JztcbmV4cG9ydCB7IGNvbXBvbmVudENhcGFiaWxpdGllcywgQ3VzdG9tQ29tcG9uZW50TWFuYWdlciB9IGZyb20gJy4vbGliL3B1YmxpYy9jb21wb25lbnQnO1xuZXhwb3J0IHsgbW9kaWZpZXJDYXBhYmlsaXRpZXMsIEN1c3RvbU1vZGlmaWVyTWFuYWdlciB9IGZyb20gJy4vbGliL3B1YmxpYy9tb2RpZmllcic7XG5leHBvcnQgeyBoZWxwZXJDYXBhYmlsaXRpZXMsIGhhc0Rlc3Ryb3lhYmxlLCBoYXNWYWx1ZSwgY3VzdG9tSGVscGVyIH0gZnJvbSAnLi9saWIvcHVibGljL2hlbHBlcic7XG5leHBvcnQgeyBnZXRDb21wb25lbnRUZW1wbGF0ZSwgc2V0Q29tcG9uZW50VGVtcGxhdGUgfSBmcm9tICcuL2xpYi9wdWJsaWMvdGVtcGxhdGUnO1xuZXhwb3J0IHsgY2FwYWJpbGl0eUZsYWdzRnJvbSwgaGFzQ2FwYWJpbGl0eSwgbWFuYWdlckhhc0NhcGFiaWxpdHkgfSBmcm9tICcuL2xpYi91dGlsL2NhcGFiaWxpdGllcyc7XG5leHBvcnQgeyBnZXRDdXN0b21UYWdGb3IsIHNldEN1c3RvbVRhZ0ZvciB9IGZyb20gJy4vbGliL3V0aWwvYXJncy1wcm94eSc7XG4iXSwic291cmNlUm9vdCI6IiJ9
import { DEBUG } from '@glimmer/env';
import { valueForRef } from '@glimmer/reference';
import { HAS_NATIVE_PROXY, enumerableSymbol } from '@glimmer/util';
import { HAS_NATIVE_PROXY } from '@glimmer/util';
import { track } from '@glimmer/validator';
export var CUSTOM_TAG_FOR = enumerableSymbol('CUSTOM_TAG_FOR');
var CUSTOM_TAG_FOR = new WeakMap();
export function getCustomTagFor(obj) {
return CUSTOM_TAG_FOR.get(obj);
}
export function setCustomTagFor(obj, customTagFn) {
CUSTOM_TAG_FOR.set(obj, customTagFn);
}

@@ -40,2 +46,78 @@ function convertToInt(prop) {

var NamedArgsProxy = /*#__PURE__*/function () {
function NamedArgsProxy(named) {
this.named = named;
}
var _proto = NamedArgsProxy.prototype;
_proto.get = function get(_target, prop) {
var ref = this.named[prop];
if (ref !== undefined) {
return valueForRef(ref);
}
};
_proto.has = function has(_target, prop) {
return prop in this.named;
};
_proto.ownKeys = function ownKeys() {
return Object.keys(this.named);
};
_proto.isExtensible = function isExtensible() {
return false;
};
_proto.getOwnPropertyDescriptor = function getOwnPropertyDescriptor(_target, prop) {
if (DEBUG && !(prop in this.named)) {
throw new Error("args proxies do not have real property descriptors, so you should never need to call getOwnPropertyDescriptor yourself. This code exists for enumerability, such as in for-in loops and Object.keys(). Attempted to get the descriptor for `" + String(prop) + "`");
}
return {
enumerable: true,
configurable: true
};
};
return NamedArgsProxy;
}();
var PositionalArgsProxy = /*#__PURE__*/function () {
function PositionalArgsProxy(positional) {
this.positional = positional;
}
var _proto2 = PositionalArgsProxy.prototype;
_proto2.get = function get(target, prop) {
var positional = this.positional;
if (prop === 'length') {
return positional.length;
}
var parsed = convertToInt(prop);
if (parsed !== null && parsed < positional.length) {
return valueForRef(positional[parsed]);
}
return target[prop];
};
_proto2.isExtensible = function isExtensible() {
return false;
};
_proto2.has = function has(_target, prop) {
var parsed = convertToInt(prop);
return parsed !== null && parsed < this.positional.length;
};
return PositionalArgsProxy;
}();
if (HAS_NATIVE_PROXY) {

@@ -46,66 +128,12 @@ argsProxyFor = function argsProxyFor(capturedArgs, type) {

var getNamedTag = function getNamedTag(key) {
var getNamedTag = function getNamedTag(_obj, key) {
return tagForNamedArg(named, key);
};
var getPositionalTag = function getPositionalTag(key) {
var getPositionalTag = function getPositionalTag(_obj, key) {
return tagForPositionalArg(positional, key);
};
var namedHandler = {
get: function get(_target, prop) {
var ref = named[prop];
if (ref !== undefined) {
return valueForRef(ref);
} else if (prop === CUSTOM_TAG_FOR) {
return getNamedTag;
}
},
has: function has(_target, prop) {
return prop in named;
},
ownKeys: function ownKeys(_target) {
return Object.keys(named);
},
isExtensible: function isExtensible() {
return false;
},
getOwnPropertyDescriptor: function getOwnPropertyDescriptor(_target, prop) {
if (DEBUG && !(prop in named)) {
throw new Error("args proxies do not have real property descriptors, so you should never need to call getOwnPropertyDescriptor yourself. This code exists for enumerability, such as in for-in loops and Object.keys(). Attempted to get the descriptor for `" + String(prop) + "`");
}
return {
enumerable: true,
configurable: true
};
}
};
var positionalHandler = {
get: function get(target, prop) {
if (prop === 'length') {
return positional.length;
}
var parsed = convertToInt(prop);
if (parsed !== null && parsed < positional.length) {
return valueForRef(positional[parsed]);
}
if (prop === CUSTOM_TAG_FOR) {
return getPositionalTag;
}
return target[prop];
},
isExtensible: function isExtensible() {
return false;
},
has: function has(_target, prop) {
var parsed = convertToInt(prop);
return parsed !== null && parsed < positional.length;
}
};
var namedHandler = new NamedArgsProxy(named);
var positionalHandler = new PositionalArgsProxy(positional);
var namedTarget = Object.create(null);

@@ -128,5 +156,9 @@ var positionalTarget = [];

var namedProxy = new Proxy(namedTarget, namedHandler);
var positionalProxy = new Proxy(positionalTarget, positionalHandler);
setCustomTagFor(namedProxy, getNamedTag);
setCustomTagFor(positionalProxy, getPositionalTag);
return {
named: new Proxy(namedTarget, namedHandler),
positional: new Proxy(positionalTarget, positionalHandler)
named: namedProxy,
positional: positionalProxy
};

@@ -139,7 +171,7 @@ };

var getNamedTag = function getNamedTag(key) {
var getNamedTag = function getNamedTag(_obj, key) {
return tagForNamedArg(named, key);
};
var getPositionalTag = function getPositionalTag(key) {
var getPositionalTag = function getPositionalTag(_obj, key) {
return tagForPositionalArg(positional, key);

@@ -149,7 +181,5 @@ };

var namedProxy = {};
Object.defineProperty(namedProxy, CUSTOM_TAG_FOR, {
configurable: false,
enumerable: false,
value: getNamedTag
});
var positionalProxy = [];
setCustomTagFor(namedProxy, getNamedTag);
setCustomTagFor(positionalProxy, getPositionalTag);
Object.keys(named).forEach(function (name) {

@@ -164,8 +194,2 @@ Object.defineProperty(namedProxy, name, {

});
var positionalProxy = [];
Object.defineProperty(positionalProxy, CUSTOM_TAG_FOR, {
configurable: false,
enumerable: false,
value: getPositionalTag
});
positional.forEach(function (ref, index) {

@@ -195,2 +219,2 @@ Object.defineProperty(positionalProxy, index, {

}
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL0BnbGltbWVyL21hbmFnZXIvbGliL3V0aWwvYXJncy1wcm94eS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxTQUFBLEtBQUEsUUFBQSxjQUFBO0FBT0EsU0FBQSxXQUFBLFFBQUEsb0JBQUE7QUFDQSxTQUFBLGdCQUFBLEVBQUEsZ0JBQUEsUUFBQSxlQUFBO0FBQ0EsU0FBQSxLQUFBLFFBQUEsb0JBQUE7QUFFQSxPQUFPLElBQU0sY0FBYyxHQUFHLGdCQUFnQixDQUF2QyxnQkFBdUMsQ0FBdkM7O0FBRVAsU0FBQSxZQUFBLENBQUEsSUFBQSxFQUFvRDtBQUNsRCxNQUFJLE9BQUEsSUFBQSxLQUFKLFFBQUEsRUFBOEIsT0FBQSxJQUFBO0FBRTlCLE1BQU0sR0FBRyxHQUFHLE1BQU0sQ0FBbEIsSUFBa0IsQ0FBbEI7QUFFQSxNQUFJLEtBQUssQ0FBVCxHQUFTLENBQVQsRUFBZ0IsT0FBQSxJQUFBO0FBRWhCLFNBQU8sR0FBRyxHQUFILENBQUEsS0FBQSxDQUFBLEdBQUEsR0FBQSxHQUFQLElBQUE7QUFDRDs7QUFFRCxTQUFBLGNBQUEsQ0FBQSxTQUFBLEVBQUEsR0FBQSxFQUFzRTtBQUNwRSxTQUFPLEtBQUssQ0FBQyxZQUFLO0FBQ2hCLFFBQUksR0FBRyxJQUFQLFNBQUEsRUFBc0I7QUFDcEIsTUFBQSxXQUFXLENBQUMsU0FBUyxDQUFyQixHQUFxQixDQUFWLENBQVg7QUFDRDtBQUhILEdBQVksQ0FBWjtBQUtEOztBQUVELFNBQUEsbUJBQUEsQ0FBQSxjQUFBLEVBQUEsR0FBQSxFQUFxRjtBQUNuRixTQUFPLEtBQUssQ0FBQyxZQUFLO0FBQ2hCLFFBQUksR0FBRyxLQUFQLElBQUEsRUFBa0I7QUFDaEI7QUFDQSxNQUFBLGNBQWMsQ0FBZCxPQUFBLENBQUEsV0FBQTtBQUNEOztBQUVELFFBQU0sTUFBTSxHQUFHLFlBQVksQ0FBM0IsR0FBMkIsQ0FBM0I7O0FBRUEsUUFBSSxNQUFNLEtBQU4sSUFBQSxJ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RixLQUFBOztBQVVBLFFBQUEsS0FBQSxFQUFXO0FBQ1Q7QUFDQTtBQUNBO0FBQ0EsTUFBQSxNQUFNLENBQU4sTUFBQSxDQUFBLFVBQUE7QUFDQSxNQUFBLE1BQU0sQ0FBTixNQUFBLENBQUEsZUFBQTtBQUNEOztBQUVELFdBQU87QUFDTCxNQUFBLEtBQUssRUFEQSxVQUFBO0FBRUwsTUFBQSxVQUFVLEVBQUU7QUFGUCxLQUFQO0FBbERGLEdBQUE7QUF1REQiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBERUJVRyB9IGZyb20gJ0BnbGltbWVyL2Vudic7XG5pbXBvcnQge1xuICBBcmd1bWVudHMsXG4gIENhcHR1cmVkQXJndW1lbnRzLFxuICBDYXB0dXJlZE5hbWVkQXJndW1lbnRzLFxuICBDYXB0dXJlZFBvc2l0aW9uYWxBcmd1bWVudHMsXG59IGZyb20gJ0BnbGltbWVyL2ludGVyZmFjZXMnO1xuaW1wb3J0IHsgUmVmZXJlbmNlLCB2YWx1ZUZvclJlZiB9IGZyb20gJ0BnbGltbWVyL3JlZmVyZW5jZSc7XG5pbXBvcnQgeyBIQVNfTkFUSVZFX1BST1hZLCBlbnVtZXJhYmxlU3ltYm9sIH0gZnJvbSAnQGdsaW1tZXIvdXRpbCc7XG5pbXBvcnQgeyBUYWcsIHRyYWNrIH0gZnJvbSAnQGdsaW1tZXIvdmFsaWRhdG9yJztcblxuZXhwb3J0IGNvbnN0IENVU1RPTV9UQUdfRk9SID0gZW51bWVyYWJsZVN5bWJvbCgnQ1VTVE9NX1RBR19GT1InKTtcblxuZnVuY3Rpb24gY29udmVydFRvSW50KHByb3A6IG51bWJlciB8IHN0cmluZyB8IHN5bWJvbCk6IG51bWJlciB8IG51bGwge1xuICBpZiAodHlwZW9mIHByb3AgPT09ICdzeW1ib2wnKSByZXR1cm4gbnVsbDtcblxuICBjb25zdCBudW0gPSBOdW1iZXIocHJvcCk7XG5cbiAgaWYgKGlzTmFOKG51bSkpIHJldHVybiBudWxsO1xuXG4gIHJldHVybiBudW0gJSAxID09PSAwID8gbnVtIDogbnVsbDtcbn1cblxuZnVuY3Rpb24gdGFnRm9yTmFtZWRBcmcobmFtZWRBcmdzOiBDYXB0dXJlZE5hbWVkQXJndW1lbnRzLCBrZXk6IHN0cmluZyk6IFRhZyB7XG4gIHJldHVybiB0cmFjaygoKSA9PiB7XG4gICAgaWYgKGtleSBpbiBuYW1lZEFyZ3MpIHtcbiAgICAgIHZhbHVlRm9yUmVmKG5hbWVkQXJnc1trZXldKTtcbiAgICB9XG4gIH0pO1xufVxuXG5mdW5jdGlvbiB0YWdGb3JQb3NpdGlvbmFsQXJnKHBvc2l0aW9uYWxBcmdzOiBDYXB0dXJlZFBvc2l0aW9uYWxBcmd1bWVudHMsIGtleTogc3RyaW5nKTogVGFnIHtcbiAgcmV0dXJuIHRyYWNrKCgpID0+IHtcbiAgICBpZiAoa2V5ID09PSAnW10nKSB7XG4gICAgICAvLyBjb25zdW1lIGFsbCBvZiB0aGUgdGFncyBpbiB0aGUgcG9zaXRpb25hbCBhcnJheVxuICAgICAgcG9zaXRpb25hbEFyZ3MuZm9yRWFjaCh2YWx1ZUZvclJlZik7XG4gICAgfVxuXG4gICAgY29uc3QgcGFyc2VkID0gY29udmVydFRvSW50KGtleSk7XG5cbiAgICBpZiAocGFyc2VkICE9PSBudWxsICYmIHBhcnNlZCA8IHBvc2l0aW9uYWxBcmdzLmxlbmd0aCkge1xuICAgICAgLy8gY29uc3VtZSB0aGUgdGFnIG9mIHRoZSByZWZlcmVuY2VkIGluZGV4XG4gICAgICB2YWx1ZUZvclJlZihwb3NpdGlvbmFsQXJnc1twYXJzZWRdKTtcbiAgICB9XG4gIH0pO1xufVxuXG5leHBvcnQgbGV0IGFyZ3NQcm94eUZvcjogKFxuICBjYXB0dXJlZEFyZ3M6IENhcHR1cmVkQXJndW1lbnRzLFxuICB0eXBlOiAnY29tcG9uZW50JyB8ICdoZWxwZXInIHwgJ21vZGlmaWVyJ1xuKSA9PiBBcmd1bWVudHM7XG5cbmlmIChIQVNfTkFUSVZFX1BST1hZKSB7XG4gIGFyZ3NQcm94eUZvciA9IChjYXB0dXJlZEFyZ3MsIHR5cGUpID0+IHtcbiAgICBjb25zdCB7IG5hbWVkLCBwb3NpdGlvbmFsIH0gPSBjYXB0dXJlZEFyZ3M7XG5cbiAgICBsZXQgZ2V0TmFtZWRUYWcgPSAoa2V5OiBzdHJpbmcpID0+IHRhZ0Zvck5hbWVkQXJnKG5hbWVkLCBrZXkpO1xuICAgIGxldCBnZXRQb3NpdGlvbmFsVGFnID0gKGtleTogc3RyaW5nKSA9PiB0YWdGb3JQb3NpdGlvbmFsQXJnKHBvc2l0aW9uYWwsIGtleSk7XG5cbiAgICBjb25zdCBuYW1lZEhhbmRsZXI6IFByb3h5SGFuZGxlcjx7fT4gPSB7XG4gICAgICBnZXQoX3RhcmdldCwgcHJvcCkge1xuICAgICAgICBjb25zdCByZWYgPSBuYW1lZFtwcm9wIGFzIHN0cmluZ107XG5cbiAgICAgICAgaWYgKHJlZiAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgcmV0dXJuIHZhbHVlRm9yUmVmKHJlZik7XG4gICAgICAgIH0gZWxzZSBpZiAocHJvcCA9PT0gQ1VTVE9NX1RBR19GT1IpIHtcbiAgICAgICAgICByZXR1cm4gZ2V0TmFtZWRUYWc7XG4gICAgICAgIH1cbiAgICAgIH0sXG5cbiAgICAgIGhhcyhfdGFyZ2V0LCBwcm9wKSB7XG4gICAgICAgIHJldHVybiBwcm9wIGluIG5hbWVkO1xuICAgICAgfSxcblxuICAgICAgb3duS2V5cyhfdGFyZ2V0KSB7XG4gICAgICAgIHJldHVybiBPYmplY3Qua2V5cyhuYW1lZCk7XG4gICAgICB9LFxuXG4gICAgICBpc0V4dGVuc2libGUoKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH0sXG5cbiAgICAgIGdldE93blByb3BlcnR5RGVzY3JpcHRvcihfdGFyZ2V0LCBwcm9wKSB7XG4gICAgICAgIGlmIChERUJVRyAmJiAhKHByb3AgaW4gbmFtZWQpKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAgICAgYGFyZ3MgcHJveGllcyBkbyBub3QgaGF2ZSByZWFsIHByb3BlcnR5IGRlc2NyaXB0b3JzLCBzbyB5b3Ugc2hvdWxkIG5ldmVyIG5lZWQgdG8gY2FsbCBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IgeW91cnNlbGYuIFRoaXMgY29kZSBleGlzdHMgZm9yIGVudW1lcmFiaWxpdHksIHN1Y2ggYXMgaW4gZm9yLWluIGxvb3BzIGFuZCBPYmplY3Qua2V5cygpLiBBdHRlbXB0ZWQgdG8gZ2V0IHRoZSBkZXNjcmlwdG9yIGZvciBcXGAke1N0cmluZyhcbiAgICAgICAgICAgICAgcHJvcFxuICAgICAgICAgICAgKX1cXGBgXG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgICAgICAgICBjb25maWd1cmFibGU6IHRydWUsXG4gICAgICAgIH07XG4gICAgICB9LFxuICAgIH07XG5cbiAgICBjb25zdCBwb3NpdGlvbmFsSGFuZGxlcjogUHJveHlIYW5kbGVyPFtdPiA9IHtcbiAgICAgIGdldCh0YXJnZXQsIHByb3ApIHtcbiAgICAgICAgaWYgKHByb3AgPT09ICdsZW5ndGgnKSB7XG4gICAgICAgICAgcmV0dXJuIHBvc2l0aW9uYWwubGVuZ3RoO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgcGFyc2VkID0gY29udmVydFRvSW50KHByb3ApO1xuXG4gICAgICAgIGlmIChwYXJzZWQgIT09IG51bGwgJiYgcGFyc2VkIDwgcG9zaXRpb25hbC5sZW5ndGgpIHtcbiAgICAgICAgICByZXR1cm4gdmFsdWVGb3JSZWYocG9zaXRpb25hbFtwYXJzZWRdKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChwcm9wID09PSBDVVNUT01fVEFHX0ZPUikge1xuICAgICAgICAgIHJldHVybiBnZXRQb3NpdGlvbmFsVGFnO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuICh0YXJnZXQgYXMgYW55KVtwcm9wXTtcbiAgICAgIH0sXG5cbiAgICAgIGlzRXh0ZW5zaWJsZSgpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfSxcblxuICAgICAgaGFzKF90YXJnZXQsIHByb3ApIHtcbiAgICAgICAgY29uc3QgcGFyc2VkID0gY29udmVydFRvSW50KHByb3ApO1xuXG4gICAgICAgIHJldHVybiBwYXJzZWQgIT09IG51bGwgJiYgcGFyc2VkIDwgcG9zaXRpb25hbC5sZW5ndGg7XG4gICAgICB9LFxuICAgIH07XG5cbiAgICBjb25zdCBuYW1lZFRhcmdldCA9IE9iamVjdC5jcmVhdGUobnVsbCk7XG4gICAgY29uc3QgcG9zaXRpb25hbFRhcmdldDogdW5rbm93bltdID0gW107XG5cbiAgICBpZiAoREVCVUcpIHtcbiAgICAgIGNvbnN0IHNldEhhbmRsZXIgPSBmdW5jdGlvbiAoX3RhcmdldDogdW5rbm93biwgcHJvcDogc3ltYm9sIHwgc3RyaW5nIHwgbnVtYmVyKTogbmV2ZXIge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICAgYFlvdSBhdHRlbXB0ZWQgdG8gc2V0ICR7U3RyaW5nKFxuICAgICAgICAgICAgcHJvcFxuICAgICAgICAgICl9IG9uIHRoZSBhcmd1bWVudHMgb2YgYSBjb21wb25lbnQsIGhlbHBlciwgb3IgbW9kaWZpZXIuIEFyZ3VtZW50cyBhcmUgaW1tdXRhYmxlIGFuZCBjYW5ub3QgYmUgdXBkYXRlZCBkaXJlY3RseSwgdGhleSBhbHdheXMgcmVwcmVzZW50IHRoZSB2YWx1ZXMgdGhhdCBpcyBwYXNzZWQgZG93bi4gSWYgeW91IHdhbnQgdG8gc2V0IGRlZmF1bHQgdmFsdWVzLCB5b3Ugc2hvdWxkIHVzZSBhIGdldHRlciBhbmQgbG9jYWwgdHJhY2tlZCBzdGF0ZSBpbnN0ZWFkLmBcbiAgICAgICAgKTtcbiAgICAgIH07XG5cbiAgICAgIGNvbnN0IGZvckluRGVidWdIYW5kbGVyID0gKCk6IG5ldmVyID0+IHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAgIGBPYmplY3Qua2V5cygpIHdhcyBjYWxsZWQgb24gdGhlIHBvc2l0aW9uYWwgYXJndW1lbnRzIGFycmF5IGZvciBhICR7dHlwZX0sIHdoaWNoIGlzIG5vdCBzdXBwb3J0ZWQuIFRoaXMgZnVuY3Rpb24gaXMgYSBsb3ctbGV2ZWwgZnVuY3Rpb24gdGhhdCBzaG91bGQgbm90IG5lZWQgdG8gYmUgY2FsbGVkIGZvciBwb3NpdGlvbmFsIGFyZ3VtZW50IGFycmF5cy4gWW91IG1heSBiZSBhdHRlbXB0aW5nIHRvIGl0ZXJhdGUgb3ZlciB0aGUgYXJyYXkgdXNpbmcgZm9yLi4uaW4gaW5zdGVhZCBvZiBmb3IuLi5vZi5gXG4gICAgICAgICk7XG4gICAgICB9O1xuXG4gICAgICBuYW1lZEhhbmRsZXIuc2V0ID0gc2V0SGFuZGxlcjtcbiAgICAgIHBvc2l0aW9uYWxIYW5kbGVyLnNldCA9IHNldEhhbmRsZXI7XG4gICAgICBwb3NpdGlvbmFsSGFuZGxlci5vd25LZXlzID0gZm9ySW5EZWJ1Z0hhbmRsZXI7XG4gICAgfVxuXG4gICAgcmV0dXJuIHtcbiAgICAgIG5hbWVkOiBuZXcgUHJveHkobmFtZWRUYXJnZXQsIG5hbWVkSGFuZGxlciksXG4gICAgICBwb3NpdGlvbmFsOiBuZXcgUHJveHkocG9zaXRpb25hbFRhcmdldCwgcG9zaXRpb25hbEhhbmRsZXIpLFxuICAgIH07XG4gIH07XG59IGVsc2Uge1xuICBhcmdzUHJveHlGb3IgPSAoY2FwdHVyZWRBcmdzLCBfdHlwZSkgPT4ge1xuICAgIGNvbnN0IHsgbmFtZWQsIHBvc2l0aW9uYWwgfSA9IGNhcHR1cmVkQXJncztcblxuICAgIGxldCBnZXROYW1lZFRhZyA9IChrZXk6IHN0cmluZykgPT4gdGFnRm9yTmFtZWRBcmcobmFtZWQsIGtleSk7XG4gICAgbGV0IGdldFBvc2l0aW9uYWxUYWcgPSAoa2V5OiBzdHJpbmcpID0+IHRhZ0ZvclBvc2l0aW9uYWxBcmcocG9zaXRpb25hbCwga2V5KTtcblxuICAgIGxldCBuYW1lZFByb3h5ID0ge307XG5cbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkobmFtZWRQcm94eSwgQ1VTVE9NX1RBR19GT1IsIHtcbiAgICAgIGNvbmZpZ3VyYWJsZTogZmFsc2UsXG4gICAgICBlbnVtZXJhYmxlOiBmYWxzZSxcbiAgICAgIHZhbHVlOiBnZXROYW1lZFRhZyxcbiAgICB9KTtcblxuICAgIE9iamVjdC5rZXlzKG5hbWVkKS5mb3JFYWNoKChuYW1lKSA9PiB7XG4gICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkobmFtZWRQcm94eSwgbmFtZSwge1xuICAgICAgICBlbnVtZXJhYmxlOiB0cnVlLFxuICAgICAgICBjb25maWd1cmFibGU6IHRydWUsXG4gICAgICAgIGdldCgpIHtcbiAgICAgICAgICByZXR1cm4gdmFsdWVGb3JSZWYobmFtZWRbbmFtZV0pO1xuICAgICAgICB9LFxuICAgICAgfSk7XG4gICAgfSk7XG5cbiAgICBsZXQgcG9zaXRpb25hbFByb3h5OiB1bmtub3duW10gPSBbXTtcblxuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShwb3NpdGlvbmFsUHJveHksIENVU1RPTV9UQUdfRk9SLCB7XG4gICAgICBjb25maWd1cmFibGU6IGZhbHNlLFxuICAgICAgZW51bWVyYWJsZTogZmFsc2UsXG4gICAgICB2YWx1ZTogZ2V0UG9zaXRpb25hbFRhZyxcbiAgICB9KTtcblxuICAgIHBvc2l0aW9uYWwuZm9yRWFjaCgocmVmOiBSZWZlcmVuY2UsIGluZGV4OiBudW1iZXIpID0+IHtcbiAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShwb3NpdGlvbmFsUHJveHksIGluZGV4LCB7XG4gICAgICAgIGVudW1lcmFibGU6IHRydWUsXG4gICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZSxcbiAgICAgICAgZ2V0KCkge1xuICAgICAgICAgIHJldHVybiB2YWx1ZUZvclJlZihyZWYpO1xuICAgICAgICB9LFxuICAgICAgfSk7XG4gICAgfSk7XG5cbiAgICBpZiAoREVCVUcpIHtcbiAgICAgIC8vIFByZXZlbnQgbXV0YXRpb25zIGluIGRldmVsb3BtZW50IG1vZGUuIFRoaXMgd2lsbCBub3QgcHJldmVudCB0aGVcbiAgICAgIC8vIHByb3h5IGZyb20gdXBkYXRpbmcsIGJ1dCB3aWxsIHByZXZlbnQgYXNzaWduaW5nIG5ldyB2YWx1ZXMgb3IgcHVzaGluZ1xuICAgICAgLy8gZm9yIGluc3RhbmNlLlxuICAgICAgT2JqZWN0LmZyZWV6ZShuYW1lZFByb3h5KTtcbiAgICAgIE9iamVjdC5mcmVlemUocG9zaXRpb25hbFByb3h5KTtcbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgbmFtZWQ6IG5hbWVkUHJveHksXG4gICAgICBwb3NpdGlvbmFsOiBwb3NpdGlvbmFsUHJveHksXG4gICAgfTtcbiAgfTtcbn1cbiJdLCJzb3VyY2VSb290IjoiIn0=
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL0BnbGltbWVyL21hbmFnZXIvbGliL3V0aWwvYXJncy1wcm94eS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxTQUFBLEtBQUEsUUFBQSxjQUFBO0FBT0EsU0FBQSxXQUFBLFFBQUEsb0JBQUE7QUFDQSxTQUFBLGdCQUFBLFFBQUEsZUFBQTtBQUNBLFNBQUEsS0FBQSxRQUFBLG9CQUFBO0FBRUEsSUFBTSxjQUFjLEdBQUcsSUFBdkIsT0FBdUIsRUFBdkI7QUFFQSxPQUFNLFNBQUEsZUFBQSxDQUFBLEdBQUEsRUFBcUM7QUFDekMsU0FBTyxjQUFjLENBQWQsR0FBQSxDQUFQLEdBQU8sQ0FBUDtBQUNEO0FBRUQsT0FBTSxTQUFBLGVBQUEsQ0FBQSxHQUFBLEVBQUEsV0FBQSxFQUFxRjtBQUN6RixFQUFBLGNBQWMsQ0FBZCxHQUFBLENBQUEsR0FBQSxFQUFBLFdBQUE7QUFDRDs7QUFFRCxTQUFBLFlBQUEsQ0FBQSxJQUFBLEVBQW9EO0FBQ2xELE1BQUksT0FBQSxJQUFBLEtBQUosUUFBQSxFQUE4QixPQUFBLElBQUE7QUFFOUIsTUFBTSxHQUFHLEdBQUcsTUFBTSxDQUFsQixJQUFrQixDQUFsQjtBQUVBLE1BQUksS0FBSyxDQUFULEdBQVMsQ0FBVCxFQUFnQixPQUFBLElBQUE7QUFFaEIsU0FBTyxHQUFHLEdBQUgsQ0FBQSxLQUFBLENBQUEsR0FBQSxHQUFBLEdBQVAsSUFBQTtBQUNEOztBQUVELFNBQUEsY0FBQSxDQUFBLFNBQUEsRUFBQSxHQUFBLEVBQXNFO0FBQ3BFLFNBQU8sS0FBSyxDQUFDLFlBQUs7QUFDaEIsUUFBSSxHQUFHLElBQVAsU0FBQSxFQUFzQjtBQUNwQixNQUFBLFdBQVcsQ0FBQyxTQUFTLENBQXJCLEdBQXFCLENBQVYsQ0FBWDtBQUNEO0FBSEgsR0FBWSxDQUFaO0FBS0Q7O0FBRUQsU0FBQSxtQkFBQSxDQUFBLGNBQUEsRUFBQSxHQUFBLEVBQXFGO0FBQ25GLFNBQU8sS0FBSyxDQUFD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QUEsRUFBQSxLQUFBLEVBQThDO0FBQzVDLFFBQUEsVUFBVSxFQURrQyxJQUFBO0FBRTVDLFFBQUEsWUFBWSxFQUZnQyxJQUFBO0FBRzVDLFFBQUEsR0FINEMsaUJBR3pDO0FBQ0QsaUJBQU8sV0FBVyxDQUFsQixHQUFrQixDQUFsQjtBQUNEO0FBTDJDLE9BQTlDO0FBREYsS0FBQTs7QUFVQSxRQUFBLEtBQUEsRUFBVztBQUNUO0FBQ0E7QUFDQTtBQUNBLE1BQUEsTUFBTSxDQUFOLE1BQUEsQ0FBQSxVQUFBO0FBQ0EsTUFBQSxNQUFNLENBQU4sTUFBQSxDQUFBLGVBQUE7QUFDRDs7QUFFRCxXQUFPO0FBQ0wsTUFBQSxLQUFLLEVBREEsVUFBQTtBQUVMLE1BQUEsVUFBVSxFQUFFO0FBRlAsS0FBUDtBQXhDRixHQUFBO0FBNkNEIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgREVCVUcgfSBmcm9tICdAZ2xpbW1lci9lbnYnO1xuaW1wb3J0IHtcbiAgQXJndW1lbnRzLFxuICBDYXB0dXJlZEFyZ3VtZW50cyxcbiAgQ2FwdHVyZWROYW1lZEFyZ3VtZW50cyxcbiAgQ2FwdHVyZWRQb3NpdGlvbmFsQXJndW1lbnRzLFxufSBmcm9tICdAZ2xpbW1lci9pbnRlcmZhY2VzJztcbmltcG9ydCB7IFJlZmVyZW5jZSwgdmFsdWVGb3JSZWYgfSBmcm9tICdAZ2xpbW1lci9yZWZlcmVuY2UnO1xuaW1wb3J0IHsgSEFTX05BVElWRV9QUk9YWSB9IGZyb20gJ0BnbGltbWVyL3V0aWwnO1xuaW1wb3J0IHsgVGFnLCB0cmFjayB9IGZyb20gJ0BnbGltbWVyL3ZhbGlkYXRvcic7XG5cbmNvbnN0IENVU1RPTV9UQUdfRk9SID0gbmV3IFdlYWtNYXA8b2JqZWN0LCAob2JqOiBvYmplY3QsIGtleTogc3RyaW5nKSA9PiBUYWc+KCk7XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRDdXN0b21UYWdGb3Iob2JqOiBvYmplY3QpOiAoKG9iajogb2JqZWN0LCBrZXk6IHN0cmluZykgPT4gVGFnKSB8IHVuZGVmaW5lZCB7XG4gIHJldHVybiBDVVNUT01fVEFHX0ZPUi5nZXQob2JqKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHNldEN1c3RvbVRhZ0ZvcihvYmo6IG9iamVjdCwgY3VzdG9tVGFnRm46IChvYmo6IG9iamVjdCwga2V5OiBzdHJpbmcpID0+IFRhZykge1xuICBDVVNUT01fVEFHX0ZPUi5zZXQob2JqLCBjdXN0b21UYWdGbik7XG59XG5cbmZ1bmN0aW9uIGNvbnZlcnRUb0ludChwcm9wOiBudW1iZXIgfCBzdHJpbmcgfCBzeW1ib2wpOiBudW1iZXIgfCBudWxsIHtcbiAgaWYgKHR5cGVvZiBwcm9wID09PSAnc3ltYm9sJykgcmV0dXJuIG51bGw7XG5cbiAgY29uc3QgbnVtID0gTnVtYmVyKHByb3ApO1xuXG4gIGlmIChpc05hTihudW0pKSByZXR1cm4gbnVsbDtcblxuICByZXR1cm4gbnVtICUgMSA9PT0gMCA/IG51bSA6IG51bGw7XG59XG5cbmZ1bmN0aW9uIHRhZ0Zvck5hbWVkQXJnKG5hbWVkQXJnczogQ2FwdHVyZWROYW1lZEFyZ3VtZW50cywga2V5OiBzdHJpbmcpOiBUYWcge1xuICByZXR1cm4gdHJhY2soKCkgPT4ge1xuICAgIGlmIChrZXkgaW4gbmFtZWRBcmdzKSB7XG4gICAgICB2YWx1ZUZvclJlZihuYW1lZEFyZ3Nba2V5XSk7XG4gICAgfVxuICB9KTtcbn1cblxuZnVuY3Rpb24gdGFnRm9yUG9zaXRpb25hbEFyZyhwb3NpdGlvbmFsQXJnczogQ2FwdHVyZWRQb3NpdGlvbmFsQXJndW1lbnRzLCBrZXk6IHN0cmluZyk6IFRhZyB7XG4gIHJldHVybiB0cmFjaygoKSA9PiB7XG4gICAgaWYgKGtleSA9PT0gJ1tdJykge1xuICAgICAgLy8gY29uc3VtZSBhbGwgb2YgdGhlIHRhZ3MgaW4gdGhlIHBvc2l0aW9uYWwgYXJyYXlcbiAgICAgIHBvc2l0aW9uYWxBcmdzLmZvckVhY2godmFsdWVGb3JSZWYpO1xuICAgIH1cblxuICAgIGNvbnN0IHBhcnNlZCA9IGNvbnZlcnRUb0ludChrZXkpO1xuXG4gICAgaWYgKHBhcnNlZCAhPT0gbnVsbCAmJiBwYXJzZWQgPCBwb3NpdGlvbmFsQXJncy5sZW5ndGgpIHtcbiAgICAgIC8vIGNvbnN1bWUgdGhlIHRhZyBvZiB0aGUgcmVmZXJlbmNlZCBpbmRleFxuICAgICAgdmFsdWVGb3JSZWYocG9zaXRpb25hbEFyZ3NbcGFyc2VkXSk7XG4gICAgfVxuICB9KTtcbn1cblxuZXhwb3J0IGxldCBhcmdzUHJveHlGb3I6IChcbiAgY2FwdHVyZWRBcmdzOiBDYXB0dXJlZEFyZ3VtZW50cyxcbiAgdHlwZTogJ2NvbXBvbmVudCcgfCAnaGVscGVyJyB8ICdtb2RpZmllcidcbikgPT4gQXJndW1lbnRzO1xuXG5jbGFzcyBOYW1lZEFyZ3NQcm94eSBpbXBsZW1lbnRzIFByb3h5SGFuZGxlcjx7fT4ge1xuICBkZWNsYXJlIHNldD86ICh0YXJnZXQ6IHt9LCBwcm9wOiBzdHJpbmcgfCBudW1iZXIgfCBzeW1ib2wpID0+IGJvb2xlYW47XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBuYW1lZDogQ2FwdHVyZWROYW1lZEFyZ3VtZW50cykge31cblxuICBnZXQoX3RhcmdldDoge30sIHByb3A6IHN0cmluZyB8IG51bWJlciB8IHN5bWJvbCkge1xuICAgIGNvbnN0IHJlZiA9IHRoaXMubmFtZWRbcHJvcCBhcyBzdHJpbmddO1xuXG4gICAgaWYgKHJlZiAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICByZXR1cm4gdmFsdWVGb3JSZWYocmVmKTtcbiAgICB9XG4gIH1cblxuICBoYXMoX3RhcmdldDoge30sIHByb3A6IHN0cmluZyB8IG51bWJlciB8IHN5bWJvbCkge1xuICAgIHJldHVybiBwcm9wIGluIHRoaXMubmFtZWQ7XG4gIH1cblxuICBvd25LZXlzKCkge1xuICAgIHJldHVybiBPYmplY3Qua2V5cyh0aGlzLm5hbWVkKTtcbiAgfVxuXG4gIGlzRXh0ZW5zaWJsZSgpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoX3RhcmdldDoge30sIHByb3A6IHN0cmluZyB8IG51bWJlciB8IHN5bWJvbCkge1xuICAgIGlmIChERUJVRyAmJiAhKHByb3AgaW4gdGhpcy5uYW1lZCkpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgYGFyZ3MgcHJveGllcyBkbyBub3QgaGF2ZSByZWFsIHByb3BlcnR5IGRlc2NyaXB0b3JzLCBzbyB5b3Ugc2hvdWxkIG5ldmVyIG5lZWQgdG8gY2FsbCBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IgeW91cnNlbGYuIFRoaXMgY29kZSBleGlzdHMgZm9yIGVudW1lcmFiaWxpdHksIHN1Y2ggYXMgaW4gZm9yLWluIGxvb3BzIGFuZCBPYmplY3Qua2V5cygpLiBBdHRlbXB0ZWQgdG8gZ2V0IHRoZSBkZXNjcmlwdG9yIGZvciBcXGAke1N0cmluZyhcbiAgICAgICAgICBwcm9wXG4gICAgICAgICl9XFxgYFxuICAgICAgKTtcbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZSxcbiAgICB9O1xuICB9XG59XG5cbmNsYXNzIFBvc2l0aW9uYWxBcmdzUHJveHkgaW1wbGVtZW50cyBQcm94eUhhbmRsZXI8W10+IHtcbiAgZGVjbGFyZSBzZXQ/OiAodGFyZ2V0OiBbXSwgcHJvcDogc3RyaW5nIHwgbnVtYmVyIHwgc3ltYm9sKSA9PiBib29sZWFuO1xuICBkZWNsYXJlIG93bktleXM/OiAodGFyZ2V0OiBbXSkgPT4gc3RyaW5nW107XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBwb3NpdGlvbmFsOiBDYXB0dXJlZFBvc2l0aW9uYWxBcmd1bWVudHMpIHt9XG5cbiAgZ2V0KHRhcmdldDogW10sIHByb3A6IHN0cmluZyB8IG51bWJlciB8IHN5bWJvbCkge1xuICAgIGxldCB7IHBvc2l0aW9uYWwgfSA9IHRoaXM7XG5cbiAgICBpZiAocHJvcCA9PT0gJ2xlbmd0aCcpIHtcbiAgICAgIHJldHVybiBwb3NpdGlvbmFsLmxlbmd0aDtcbiAgICB9XG5cbiAgICBjb25zdCBwYXJzZWQgPSBjb252ZXJ0VG9JbnQocHJvcCk7XG5cbiAgICBpZiAocGFyc2VkICE9PSBudWxsICYmIHBhcnNlZCA8IHBvc2l0aW9uYWwubGVuZ3RoKSB7XG4gICAgICByZXR1cm4gdmFsdWVGb3JSZWYocG9zaXRpb25hbFtwYXJzZWRdKTtcbiAgICB9XG5cbiAgICByZXR1cm4gKHRhcmdldCBhcyBhbnkpW3Byb3BdO1xuICB9XG5cbiAgaXNFeHRlbnNpYmxlKCkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIGhhcyhfdGFyZ2V0OiBbXSwgcHJvcDogc3RyaW5nIHwgbnVtYmVyIHwgc3ltYm9sKSB7XG4gICAgY29uc3QgcGFyc2VkID0gY29udmVydFRvSW50KHByb3ApO1xuXG4gICAgcmV0dXJuIHBhcnNlZCAhPT0gbnVsbCAmJiBwYXJzZWQgPCB0aGlzLnBvc2l0aW9uYWwubGVuZ3RoO1xuICB9XG59XG5cbmlmIChIQVNfTkFUSVZFX1BST1hZKSB7XG4gIGFyZ3NQcm94eUZvciA9IChjYXB0dXJlZEFyZ3MsIHR5cGUpID0+IHtcbiAgICBjb25zdCB7IG5hbWVkLCBwb3NpdGlvbmFsIH0gPSBjYXB0dXJlZEFyZ3M7XG5cbiAgICBsZXQgZ2V0TmFtZWRUYWcgPSAoX29iajogb2JqZWN0LCBrZXk6IHN0cmluZykgPT4gdGFnRm9yTmFtZWRBcmcobmFtZWQsIGtleSk7XG4gICAgbGV0IGdldFBvc2l0aW9uYWxUYWcgPSAoX29iajogb2JqZWN0LCBrZXk6IHN0cmluZykgPT4gdGFnRm9yUG9zaXRpb25hbEFyZyhwb3NpdGlvbmFsLCBrZXkpO1xuXG4gICAgY29uc3QgbmFtZWRIYW5kbGVyID0gbmV3IE5hbWVkQXJnc1Byb3h5KG5hbWVkKTtcbiAgICBjb25zdCBwb3NpdGlvbmFsSGFuZGxlciA9IG5ldyBQb3NpdGlvbmFsQXJnc1Byb3h5KHBvc2l0aW9uYWwpO1xuXG4gICAgY29uc3QgbmFtZWRUYXJnZXQgPSBPYmplY3QuY3JlYXRlKG51bGwpO1xuICAgIGNvbnN0IHBvc2l0aW9uYWxUYXJnZXQ6IHVua25vd25bXSA9IFtdO1xuXG4gICAgaWYgKERFQlVHKSB7XG4gICAgICBjb25zdCBzZXRIYW5kbGVyID0gZnVuY3Rpb24gKF90YXJnZXQ6IHVua25vd24sIHByb3A6IHN5bWJvbCB8IHN0cmluZyB8IG51bWJlcik6IG5ldmVyIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAgIGBZb3UgYXR0ZW1wdGVkIHRvIHNldCAke1N0cmluZyhcbiAgICAgICAgICAgIHByb3BcbiAgICAgICAgICApfSBvbiB0aGUgYXJndW1lbnRzIG9mIGEgY29tcG9uZW50LCBoZWxwZXIsIG9yIG1vZGlmaWVyLiBBcmd1bWVudHMgYXJlIGltbXV0YWJsZSBhbmQgY2Fubm90IGJlIHVwZGF0ZWQgZGlyZWN0bHksIHRoZXkgYWx3YXlzIHJlcHJlc2VudCB0aGUgdmFsdWVzIHRoYXQgaXMgcGFzc2VkIGRvd24uIElmIHlvdSB3YW50IHRvIHNldCBkZWZhdWx0IHZhbHVlcywgeW91IHNob3VsZCB1c2UgYSBnZXR0ZXIgYW5kIGxvY2FsIHRyYWNrZWQgc3RhdGUgaW5zdGVhZC5gXG4gICAgICAgICk7XG4gICAgICB9O1xuXG4gICAgICBjb25zdCBmb3JJbkRlYnVnSGFuZGxlciA9ICgpOiBuZXZlciA9PiB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICBgT2JqZWN0LmtleXMoKSB3YXMgY2FsbGVkIG9uIHRoZSBwb3NpdGlvbmFsIGFyZ3VtZW50cyBhcnJheSBmb3IgYSAke3R5cGV9LCB3aGljaCBpcyBub3Qgc3VwcG9ydGVkLiBUaGlzIGZ1bmN0aW9uIGlzIGEgbG93LWxldmVsIGZ1bmN0aW9uIHRoYXQgc2hvdWxkIG5vdCBuZWVkIHRvIGJlIGNhbGxlZCBmb3IgcG9zaXRpb25hbCBhcmd1bWVudCBhcnJheXMuIFlvdSBtYXkgYmUgYXR0ZW1wdGluZyB0byBpdGVyYXRlIG92ZXIgdGhlIGFycmF5IHVzaW5nIGZvci4uLmluIGluc3RlYWQgb2YgZm9yLi4ub2YuYFxuICAgICAgICApO1xuICAgICAgfTtcblxuICAgICAgbmFtZWRIYW5kbGVyLnNldCA9IHNldEhhbmRsZXI7XG4gICAgICBwb3NpdGlvbmFsSGFuZGxlci5zZXQgPSBzZXRIYW5kbGVyO1xuICAgICAgcG9zaXRpb25hbEhhbmRsZXIub3duS2V5cyA9IGZvckluRGVidWdIYW5kbGVyO1xuICAgIH1cblxuICAgIGNvbnN0IG5hbWVkUHJveHkgPSBuZXcgUHJveHkobmFtZWRUYXJnZXQsIG5hbWVkSGFuZGxlcik7XG4gICAgY29uc3QgcG9zaXRpb25hbFByb3h5ID0gbmV3IFByb3h5KHBvc2l0aW9uYWxUYXJnZXQsIHBvc2l0aW9uYWxIYW5kbGVyKTtcblxuICAgIHNldEN1c3RvbVRhZ0ZvcihuYW1lZFByb3h5LCBnZXROYW1lZFRhZyk7XG4gICAgc2V0Q3VzdG9tVGFnRm9yKHBvc2l0aW9uYWxQcm94eSwgZ2V0UG9zaXRpb25hbFRhZyk7XG5cbiAgICByZXR1cm4ge1xuICAgICAgbmFtZWQ6IG5hbWVkUHJveHksXG4gICAgICBwb3NpdGlvbmFsOiBwb3NpdGlvbmFsUHJveHksXG4gICAgfTtcbiAgfTtcbn0gZWxzZSB7XG4gIGFyZ3NQcm94eUZvciA9IChjYXB0dXJlZEFyZ3MsIF90eXBlKSA9PiB7XG4gICAgY29uc3QgeyBuYW1lZCwgcG9zaXRpb25hbCB9ID0gY2FwdHVyZWRBcmdzO1xuXG4gICAgbGV0IGdldE5hbWVkVGFnID0gKF9vYmo6IG9iamVjdCwga2V5OiBzdHJpbmcpID0+IHRhZ0Zvck5hbWVkQXJnKG5hbWVkLCBrZXkpO1xuICAgIGxldCBnZXRQb3NpdGlvbmFsVGFnID0gKF9vYmo6IG9iamVjdCwga2V5OiBzdHJpbmcpID0+IHRhZ0ZvclBvc2l0aW9uYWxBcmcocG9zaXRpb25hbCwga2V5KTtcblxuICAgIGxldCBuYW1lZFByb3h5ID0ge307XG4gICAgbGV0IHBvc2l0aW9uYWxQcm94eTogdW5rbm93bltdID0gW107XG5cbiAgICBzZXRDdXN0b21UYWdGb3IobmFtZWRQcm94eSwgZ2V0TmFtZWRUYWcpO1xuICAgIHNldEN1c3RvbVRhZ0Zvcihwb3NpdGlvbmFsUHJveHksIGdldFBvc2l0aW9uYWxUYWcpO1xuXG4gICAgT2JqZWN0LmtleXMobmFtZWQpLmZvckVhY2goKG5hbWUpID0+IHtcbiAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShuYW1lZFByb3h5LCBuYW1lLCB7XG4gICAgICAgIGVudW1lcmFibGU6IHRydWUsXG4gICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZSxcbiAgICAgICAgZ2V0KCkge1xuICAgICAgICAgIHJldHVybiB2YWx1ZUZvclJlZihuYW1lZFtuYW1lXSk7XG4gICAgICAgIH0sXG4gICAgICB9KTtcbiAgICB9KTtcblxuICAgIHBvc2l0aW9uYWwuZm9yRWFjaCgocmVmOiBSZWZlcmVuY2UsIGluZGV4OiBudW1iZXIpID0+IHtcbiAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShwb3NpdGlvbmFsUHJveHksIGluZGV4LCB7XG4gICAgICAgIGVudW1lcmFibGU6IHRydWUsXG4gICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZSxcbiAgICAgICAgZ2V0KCkge1xuICAgICAgICAgIHJldHVybiB2YWx1ZUZvclJlZihyZWYpO1xuICAgICAgICB9LFxuICAgICAgfSk7XG4gICAgfSk7XG5cbiAgICBpZiAoREVCVUcpIHtcbiAgICAgIC8vIFByZXZlbnQgbXV0YXRpb25zIGluIGRldmVsb3BtZW50IG1vZGUuIFRoaXMgd2lsbCBub3QgcHJldmVudCB0aGVcbiAgICAgIC8vIHByb3h5IGZyb20gdXBkYXRpbmcsIGJ1dCB3aWxsIHByZXZlbnQgYXNzaWduaW5nIG5ldyB2YWx1ZXMgb3IgcHVzaGluZ1xuICAgICAgLy8gZm9yIGluc3RhbmNlLlxuICAgICAgT2JqZWN0LmZyZWV6ZShuYW1lZFByb3h5KTtcbiAgICAgIE9iamVjdC5mcmVlemUocG9zaXRpb25hbFByb3h5KTtcbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgbmFtZWQ6IG5hbWVkUHJveHksXG4gICAgICBwb3NpdGlvbmFsOiBwb3NpdGlvbmFsUHJveHksXG4gICAgfTtcbiAgfTtcbn1cbiJdLCJzb3VyY2VSb290IjoiIn0=

@@ -8,3 +8,3 @@ export { setInternalHelperManager, setInternalModifierManager, setInternalComponentManager, getInternalHelperManager, getInternalModifierManager, getInternalComponentManager, } from './lib/internal/index';

export { capabilityFlagsFrom, hasCapability, managerHasCapability } from './lib/util/capabilities';
export { CUSTOM_TAG_FOR } from './lib/util/args-proxy';
export { getCustomTagFor, setCustomTagFor } from './lib/util/args-proxy';
//# sourceMappingURL=index.d.ts.map
import { Arguments, CapturedArguments } from '@glimmer/interfaces';
export declare const CUSTOM_TAG_FOR: any;
import { Tag } from '@glimmer/validator';
export declare function getCustomTagFor(obj: object): ((obj: object, key: string) => Tag) | undefined;
export declare function setCustomTagFor(obj: object, customTagFn: (obj: object, key: string) => Tag): void;
export declare let argsProxyFor: (capturedArgs: CapturedArguments, type: 'component' | 'helper' | 'modifier') => Arguments;
//# sourceMappingURL=args-proxy.d.ts.map
{
"name": "@glimmer/manager",
"version": "0.68.0",
"version": "0.68.1",
"repository": "https://github.com/glimmerjs/glimmer-vm/tree/master/packages/@glimmer/program",
"dependencies": {
"@glimmer/env": "0.1.7",
"@glimmer/interfaces": "0.68.0",
"@glimmer/destroyable": "0.68.0",
"@glimmer/reference": "0.68.0",
"@glimmer/validator": "0.68.0",
"@glimmer/util": "0.68.0"
"@glimmer/interfaces": "0.68.1",
"@glimmer/destroyable": "0.68.1",
"@glimmer/reference": "0.68.1",
"@glimmer/validator": "0.68.1",
"@glimmer/util": "0.68.1"
},

@@ -13,0 +13,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